{"version":3,"file":"static/js/main.69640e93.js","mappings":"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EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,GAAI,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,EAAG,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,GAAIA,EAAa,EAAG,GAAI,IAAK,EAAG,EAAG,GAAI,GAAI,EAAG,EAAG,EAAG,GAAI,ICN5xCnG,EAAY,CAAC,WAAY,SAAU,SAG5BoG,EAAS,CAEpBC,UAAW,+BAGXC,QAAS,+BAETC,OAAQ,6BAERC,MAAO,gCAKIC,EAAW,CACtBC,SAAU,IACVC,QAAS,IACTC,MAAO,IAEPC,SAAU,IAEVC,QAAS,IAETC,eAAgB,IAEhBC,cAAe,KAEjB,SAASC,EAASC,GAChB,MAAO,GAAP,OAAU/iB,KAAKoZ,MAAM2J,GAArB,KACD,CACD,SAASC,EAAsBC,GAC7B,IAAKA,EACH,OAAO,EAET,IAAMC,EAAWD,EAAS,GAG1B,OAAOjjB,KAAKoZ,MAAmD,IAA5C,EAAI,GAAK,KAAL,IAAK8J,EAAY,KAAOA,EAAW,GAC3D,CACc,SAASC,EAAkBC,GACxC,IAAMC,GAAe7T,EAAAA,EAAAA,GAAS,CAAC,EAAGyS,EAAQmB,EAAiBnB,QACrDqB,GAAiB9T,EAAAA,EAAAA,GAAS,CAAC,EAAG8S,EAAUc,EAAiBd,UA+B/D,OAAO9S,EAAAA,EAAAA,GAAS,CACdwT,sBAAAA,EACA/b,OAhCa,WAAmC,IAAlC1F,EAAkC,uDAA1B,CAAC,OAAQ1N,EAAiB,uDAAP,CAAC,EAC1C,EAIMA,EAHFyuB,SAAUiB,OADd,MAC+BD,EAAeZ,SAD9C,IAIM7uB,EAFFouB,OAAQuB,OAFZ,MAE2BH,EAAanB,UAFxC,IAIMruB,EADF4vB,MAAAA,OAHJ,MAGY,EAHZ,GAKUvF,EAAAA,EAAAA,GAA8BrqB,EAASgoB,GAsBjD,OAAQvgB,MAAMC,QAAQgG,GAASA,EAAQ,CAACA,IAAQ/G,KAAI,SAAAkpB,GAAY,gBAAOA,EAAP,YAAiD,kBAAnBH,EAA8BA,EAAiBT,EAASS,GAAtF,YAAyGC,EAAzG,YAA0I,kBAAVC,EAAqBA,EAAQX,EAASW,GAAtK,IAAgLvgB,KAAK,IACtP,GAIEkgB,EAAkB,CACnBnB,OAAQoB,EACRf,SAAUgB,GAEb,CClFD,IAUA,EAVe,CACbK,cAAe,IACfC,IAAK,KACLC,UAAW,KACXC,OAAQ,KACRC,OAAQ,KACRC,MAAO,KACPC,SAAU,KACVC,QAAS,MCPLrI,EAAY,CAAC,cAAe,SAAU,UAAW,UAAW,cAAe,aAAc,SAU/F,SAASsI,IAAmC,IAAvBtwB,EAAuB,uDAAb,CAAC,EAC9B,EAKMA,EAJFsnB,OAAQiJ,OADZ,MAC0B,CAAC,EAD3B,IAKMvwB,EAHFiqB,QAASuG,OAFb,MAE4B,CAAC,EAF7B,IAKMxwB,EAFFywB,YAAaC,OAHjB,MAGoC,CAAC,EAHrC,IAKM1wB,EADFosB,WAAYuE,OAJhB,MAIkC,CAAC,EAJnC,EAMEvG,GAAQC,EAAAA,EAAAA,GAA8BrqB,EAASgoB,GACjD,GAAIhoB,EAAQ4wB,KACV,MAAM,IAAIzzB,OACcwuB,EAAAA,EAAAA,GAAuB,KAEjD,IAAM1B,EAAUD,EAAcwG,GACxBK,GAAcC,EAAAA,EAAAA,GAAkB9wB,GAClC+wB,GAAWjF,EAAAA,EAAAA,GAAU+E,EAAa,CACpCvJ,OAAQF,EAAayJ,EAAYxJ,YAAakJ,GAC9CtG,QAAAA,EAEA+G,QAASA,EAAAA,QACT5E,WAAYD,EAAiBlC,EAAS0G,GACtCF,YAAanB,EAAkBoB,GAC/Bva,QAAQwF,EAAAA,EAAAA,GAAS,CAAC,EAAGxF,KAEvB4a,GAAWjF,EAAAA,EAAAA,GAAUiF,EAAU3G,GAvBW,2BAAN5pB,EAAM,iCAANA,EAAM,kBA8D1C,OAtCAuwB,EAAWvwB,EAAKuG,QAAO,SAACC,EAAKiqB,GAAN,OAAmBnF,EAAAA,EAAAA,GAAU9kB,EAAKiqB,EAAlC,GAA6CF,IA+B3DG,mBAAoBvV,EAAAA,EAAAA,GAAS,CAAC,EAAGwV,EAAAA,EAA0B,MAAT/G,OAAgB,EAASA,EAAM8G,mBAC1FH,EAASK,YAAc,SAAY1jB,GACjC,OAAO2jB,EAAAA,EAAAA,GAAgB,CACrBC,GAAI5jB,EACJuN,MAAOrY,MAEV,EACMmuB,CACR,CAWD,+CCtFMQ,GAAejB,UAAAA,KACrB,0HCAakB,EAAwB,SAAA/xB,GAAI,OAAI8Z,EAAAA,EAAAA,IAAkB9Z,IAAkB,YAATA,CAA/B,EAC5BgyB,EAAwBlY,EAAAA,GAC/BmY,GAASzX,EAAAA,EAAAA,IAAa,CAC1BsX,aAAAA,EAAAA,EACAC,sBAAAA,IAEF,kGCNe,SAASG,EAAT,GAGZ,IAFDjkB,EAEC,EAFDA,MACA1R,EACC,EADDA,KAEA,OAAO41B,EAAAA,EAAAA,GAAoB,CACzBlkB,MAAAA,EACA1R,KAAAA,EACAu1B,aAAAA,EAAAA,GAEH,mDCVD,IAAeM,EAAf,6KCCO,SAASC,EAAuBC,GACrC,OAAOC,EAAAA,EAAAA,GAAqB,aAAcD,EAC3C,EACsBE,EAAAA,EAAAA,GAAuB,aAAc,CAAC,OAAQ,eAAgB,iBAAkB,cAAe,aAAc,gBAAiB,kBAAmB,gBAAiB,iBAAkB,kBAA3M,aCHMjK,EAAY,CAAC,WAAY,YAAa,QAAS,YAAa,WAAY,YAAa,iBAAkB,cAAe,WAsBtHkK,GAAcR,EAAAA,EAAAA,IAAO,MAAO,CAChC11B,KAAM,aACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAA2B,YAArB4kB,EAAW7G,OAAuBtY,EAAO,QAAD,QAAS4e,EAAAA,EAAAA,GAAWO,EAAW7G,SAAWtY,EAAO,WAAD,QAAY4e,EAAAA,EAAAA,GAAWO,EAAW9F,YAChJ,GARiBoF,EASjB,YAGG,IACAW,EAAoBC,EAAuBC,EAAqBC,EAAuBC,EAAmBC,EAAuBC,EAAoBC,EAAuBC,EAAoBC,EAAuBC,EAAuBC,EAAUC,EAAwBC,EAAWC,EAAkBC,EAAWC,EAH5TpY,EAEI,EAFJA,MACAmX,EACI,EADJA,WAGA,MAAO,CACLkB,WAAY,OACZC,MAAO,MACPnE,OAAQ,MACRoE,QAAS,eACTC,KAAM,eACN5e,WAAY,EACZ6e,WAAwD,OAA3CrB,EAAqBpX,EAAMwV,cAAuF,OAAtD6B,EAAwBD,EAAmBjf,aAArD,EAAgFkf,EAAsBjxB,KAAKgxB,EAAoB,OAAQ,CACpM5D,SAAuD,OAA5C8D,EAAsBtX,EAAMwV,cAA0F,OAAzD+B,EAAwBD,EAAoB9D,eAAtD,EAAmF+D,EAAsB7D,UAEzKrC,SAAU,CACR2B,QAAS,UACT0F,OAAkD,OAAzClB,EAAoBxX,EAAMmR,aAAsF,OAAtDsG,EAAwBD,EAAkB3F,cAApD,EAAgF4F,EAAsBrxB,KAAKoxB,EAAmB,MAAQ,UAC/LmB,QAAoD,OAA1CjB,EAAqB1X,EAAMmR,aAAuF,OAAvDwG,EAAwBD,EAAmB7F,cAArD,EAAiF8F,EAAsBvxB,KAAKsxB,EAAoB,MAAQ,SACnMkB,OAAmD,OAA1ChB,EAAqB5X,EAAMmR,aAAuF,OAAvD0G,EAAwBD,EAAmB/F,cAArD,EAAiFgG,EAAsBzxB,KAAKwxB,EAAoB,MAAQ,aAClMT,EAAW9F,UAEbf,MAAuM,OAA/LwH,EAAsE,OAA7CC,GAAY/X,EAAM2V,MAAQ3V,GAAOgP,UAAqF,OAAxDgJ,EAAyBD,EAASZ,EAAW7G,aAAvD,EAAkF0H,EAAuBnJ,MAAgBiJ,EAAwB,CACpOtK,OAAuD,OAA9CyK,GAAajY,EAAM2V,MAAQ3V,GAAOgP,UAAqE,OAAxCkJ,EAAmBD,EAAUzK,aAAvC,EAAkE0K,EAAiBzK,OACjJN,SAAyD,OAA9CgL,GAAanY,EAAM2V,MAAQ3V,GAAOgP,UAAqE,OAAxCoJ,EAAmBD,EAAU3K,aAAvC,EAAkE4K,EAAiBjL,SACnJ6F,aAAS1jB,GACT6nB,EAAW7G,OAEhB,IACKuI,EAAuB/X,EAAAA,YAAiB,SAAiBgY,EAASlgB,GACtE,IAAMnG,GAAQikB,EAAAA,EAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,eAGJ2R,EASED,EATFC,SACAoN,EAQErN,EARFqN,UAFJ,EAUMrN,EAPF6d,MAAAA,OAHJ,MAGY,UAHZ,IAUM7d,EANFsmB,UAAAA,OAJJ,MAIgB,MAJhB,IAUMtmB,EALF4e,SAAAA,OALJ,MAKe,SALf,EAMI2H,EAIEvmB,EAJFumB,UANJ,EAUMvmB,EAHFwmB,eAAAA,OAPJ,SAQIC,EAEEzmB,EAFFymB,YARJ,EAUMzmB,EADF0mB,QAAAA,OATJ,MASc,YATd,EAWEhK,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,GACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAyI,UAAAA,EACA1H,SAAAA,EACA+H,iBAAkBN,EAAQzH,SAC1B4H,eAAAA,EACAE,QAAAA,IAEIE,EAAO,CAAC,EACTJ,IACHI,EAAKF,QAAUA,GAEjB,IAAMG,EA9EkB,SAAAnC,GACxB,IACE7G,EAGE6G,EAHF7G,MACAe,EAEE8F,EAFF9F,SACAiI,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAkB,YAAV+d,GAAA,gBAA+BsG,EAAAA,EAAAA,GAAWtG,IAAnD,mBAAwEsG,EAAAA,EAAAA,GAAWvF,MAE3F,OAAOmI,EAAAA,EAAAA,GAAeD,EAAO1C,EAAwByC,EACtD,CAoEiBG,CAAkBtC,GAClC,OAAoBuC,EAAAA,EAAAA,MAAMzC,GAAavW,EAAAA,EAAAA,GAAS,CAC9Cb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,EAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9B8Z,UAAW,QACXtJ,MAAO0I,EACP,eAAeE,QAAc5pB,EAC7BuqB,KAAMX,EAAc,WAAQ5pB,EAC5BsJ,IAAKA,GACJygB,EAAMlK,EAAO,CACdgI,WAAYA,EACZzkB,SAAU,CAACA,EAAUwmB,GAA2BY,EAAAA,EAAAA,KAAK,QAAS,CAC5DpnB,SAAUwmB,IACP,QAER,IAyEDL,EAAQkB,QAAU,UAClB,QC5Ke,SAASzO,EAAchhB,EAAM+V,GAC1C,SAAS2Z,EAAUvnB,EAAOmG,GACxB,OAAoBkhB,EAAAA,EAAAA,KAAKjB,GAASnY,EAAAA,EAAAA,GAAS,CACzC,cAAe,GAAf,OAAkBL,EAAlB,QACAzH,IAAKA,GACJnG,EAAO,CACRC,SAAUpI,IAEb,CAOD,OADA0vB,EAAUD,QAAUlB,EAAAA,QACA/X,EAAAA,KAAyBA,EAAAA,WAAiBkZ,GAC/D,mDCvBD,IAAeC,EAAf,6vBCAA,gCCAA,MCDe,SAA4BC,EAAWC,GAElD,OAAO,kBAAM,IAAN,CAUV,wCCXD,MCAe,SAA4BC,EAAsBJ,GAE7D,OAAO,kBAAM,IAAN,CAoBV,ECtBD,+BCAA,MCDe,SAAyBvnB,EAAOgM,EAAU4b,EAAeC,EAAUC,GAE9E,OAAO,IAOV,0CCWYC,EAA8B,CACzCC,UAAW,SAAAC,GAITC,EAAAA,EAAAA,UAA6BD,EAC9B,oFCzBH,MCAe,SAAsBvmB,EAASymB,GAC5C,OAAoB9Z,EAAAA,eAAqB3M,KAAwD,IAA5CymB,EAAS7xB,QAAQoL,EAAQnH,KAAK+sB,QACpF,mDCFD,IAAec,EAAf,mDCAA,IAAeC,EAAf,mDCAA,IAAeC,EAAf,kDCAA,IAAeC,EAAf,mDCAA,IAAeC,EAAf,mDCAA,IAAeC,EAAf,mDCAA,IAAeC,EAAf,yECGIC,YAFAC,GAAmB,EACnBC,GAA0B,EAExBC,EAAsB,CAC1BjtB,MAAM,EACNmD,QAAQ,EACRjH,KAAK,EACLgxB,KAAK,EACLC,OAAO,EACPC,UAAU,EACVC,QAAQ,EACRC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,MAAM,EACNC,UAAU,EACV,kBAAkB,GAkCpB,SAASC,EAAcvzB,GACjBA,EAAMwzB,SAAWxzB,EAAMyzB,QAAUzzB,EAAM0zB,UAG3Cf,GAAmB,EACpB,CASD,SAASgB,IACPhB,GAAmB,CACpB,CACD,SAASiB,IACsB,WAAzB30B,KAAK40B,iBAKHjB,IACFD,GAAmB,EAGxB,CAeD,SAASmB,EAAe9zB,GACtB,IACE4W,EACE5W,EADF4W,OAEF,IACE,OAAOA,EAAOmd,QAAQ,iBAMvB,CALC,MAAOz1B,GAKR,CAID,OAAOq0B,GAjFT,SAAuC/oB,GACrC,IACEtF,EAEEsF,EAFFtF,KACA4T,EACEtO,EADFsO,QAEF,QAAgB,UAAZA,IAAuB2a,EAAoBvuB,IAAUsF,EAAKoqB,WAG9C,aAAZ9b,IAA2BtO,EAAKoqB,YAGhCpqB,EAAKqqB,iBAIV,CAkE4BC,CAA8Btd,EAC1D,CC7GD,MD8Ge,WACb,IAAM1G,EAAMkI,EAAAA,aAAkB,SAAAxO,GAhChC,IAAiBuqB,EAiCD,MAARvqB,KAjCSuqB,EAkCHvqB,EAAKuoB,eAjCb3xB,iBAAiB,UAAW+yB,GAAe,GAC/CY,EAAI3zB,iBAAiB,YAAamzB,GAAmB,GACrDQ,EAAI3zB,iBAAiB,cAAemzB,GAAmB,GACvDQ,EAAI3zB,iBAAiB,aAAcmzB,GAAmB,GACtDQ,EAAI3zB,iBAAiB,mBAAoBozB,GAAwB,GA+BhE,GAAE,IACGQ,EAAoBhc,EAAAA,QAAa,GAqCvC,MAAO,CACLgc,kBAAAA,EACAC,QATF,SAA4Br0B,GAC1B,QAAI8zB,EAAe9zB,KACjBo0B,EAAkB1b,SAAU,GACrB,EAGV,EAIC4b,OAnCF,WAME,QAAIF,EAAkB1b,UAKpBka,GAA0B,EAC1B15B,OAAOq7B,aAAa7B,GACpBA,EAAiCx5B,OAAOs7B,YAAW,WACjD5B,GAA0B,CAC3B,GAAE,KACHwB,EAAkB1b,SAAU,GACrB,EAGV,EAgBCxI,IAAAA,EAEH,2GEvJc,SAAS6d,EAAO7nB,EAAK7J,GAalC,OAZsBo4B,EAAAA,EAAAA,GAASvuB,EAAK7J,EAarC,CAGM,IAAMq4B,EAAyB,SAACxuB,EAAKyuB,GAGtC7wB,MAAMC,QAAQmC,EAAIgO,oBACpBhO,EAAIgO,iBAAmBygB,EAAUzuB,EAAIgO,kBAExC,4MCzBY0gB,EAAS,CACpBC,GAAI,EAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,KAEJC,GAAI,MAGAC,EAAqB,CAGzBj3B,KAAM,CAAC,KAAM,KAAM,KAAM,KAAM,MAC/B6lB,GAAI,SAAAviB,GAAG,kCAAyBqzB,EAAOrzB,GAAhC,SAEF,SAAS4zB,EAAkBprB,EAAOqrB,EAAWC,GAClD,IAAM/d,EAAQvN,EAAMuN,OAAS,CAAC,EAC9B,GAAIxT,MAAMC,QAAQqxB,GAAY,CAC5B,IAAME,EAAmBhe,EAAMoM,aAAewR,EAC9C,OAAOE,EAAUhyB,QAAO,SAACC,EAAKQ,EAAMzD,GAElC,OADAiD,EAAIiyB,EAAiBxR,GAAGwR,EAAiBr3B,KAAKmC,KAAWi1B,EAAmBD,EAAUh1B,IAC/EiD,CACR,GAAE,CAAC,EACL,CACD,GAAyB,kBAAd+xB,EAAwB,CACjC,IAAME,EAAmBhe,EAAMoM,aAAewR,EAC9C,OAAOj4B,OAAOgB,KAAKm3B,GAAWhyB,QAAO,SAACC,EAAKkyB,GAEzC,IAA4E,IAAxEt4B,OAAOgB,KAAKq3B,EAAiBV,QAAUA,GAAQv0B,QAAQk1B,GAAoB,CAE7ElyB,EADiBiyB,EAAiBxR,GAAGyR,IACrBF,EAAmBD,EAAUG,GAAaA,EAC3D,KAAM,CACL,IAAMC,EAASD,EACflyB,EAAImyB,GAAUJ,EAAUI,EACzB,CACD,OAAOnyB,CACR,GAAE,CAAC,EACL,CAED,OADegyB,EAAmBD,EAEnC,CA6BM,SAASK,IAAmD,IAC7DC,EADsCC,EAAuB,uDAAJ,CAAC,EAExDC,EAAwE,OAAlDF,EAAwBC,EAAiB13B,WAAgB,EAASy3B,EAAsBtyB,QAAO,SAACC,EAAK9B,GAG/H,OADA8B,EAD2BsyB,EAAiB7R,GAAGviB,IACrB,CAAC,EACpB8B,CACR,GAAE,CAAC,GACJ,OAAOuyB,GAAsB,CAAC,CAC/B,CACM,SAASC,EAAwBC,EAAgBC,GACtD,OAAOD,EAAe1yB,QAAO,SAACC,EAAK9B,GACjC,IAAMy0B,EAAmB3yB,EAAI9B,GAK7B,QAJ4By0B,GAA6D,IAAzC/4B,OAAOgB,KAAK+3B,GAAkBp2B,gBAErEyD,EAAI9B,GAEN8B,CACR,GAAE0yB,EACJ,CACM,SAASE,EAAwBN,GAA6B,IACnE,IAAMO,EAAmBT,EAA4BE,GADc,mBAARrmB,EAAQ,iCAARA,EAAQ,kBAEnE,IAAM6mB,EAAe,CAACD,GAAD,OAAsB5mB,GAAQlM,QAAO,SAAC+G,EAAMC,GAAP,OAAgB+d,EAAAA,EAAAA,GAAUhe,EAAMC,EAAhC,GAAuC,CAAC,GAClG,OAAOyrB,EAAwB54B,OAAOgB,KAAKi4B,GAAmBC,EAC/D,CA2BM,SAASC,EAAT,GAIJ,IAMG/pB,EATIgqB,EAGP,EAHDzB,OACaU,EAEZ,EAFD5R,YAGM4S,EADL,EADDA,MAzBK,SAAgCD,EAAkBf,GAEvD,GAAgC,kBAArBe,EACT,MAAO,CAAC,EAEV,IAAMC,EAAO,CAAC,EACRC,EAAkBt5B,OAAOgB,KAAKq3B,GAcpC,OAbIxxB,MAAMC,QAAQsyB,GAChBE,EAAgB52B,SAAQ,SAAC41B,EAAY3tB,GAC/BA,EAAIyuB,EAAiBz2B,SACvB02B,EAAKf,IAAc,EAEtB,IAEDgB,EAAgB52B,SAAQ,SAAA41B,GACc,MAAhCc,EAAiBd,KACnBe,EAAKf,IAAc,EAEtB,IAEIe,CACR,CAM4BE,CAAuBH,EAAkBf,GAC9Dr3B,EAAOhB,OAAOgB,KAAKq4B,GACzB,OAAoB,IAAhBr4B,EAAK2B,OACAy2B,EAGFp4B,EAAKmF,QAAO,SAACC,EAAKkyB,EAAY3tB,GAUnC,OATI9D,MAAMC,QAAQsyB,IAChBhzB,EAAIkyB,GAAqC,MAAvBc,EAAiBzuB,GAAayuB,EAAiBzuB,GAAKyuB,EAAiBhqB,GACvFA,EAAWzE,GAC0B,kBAArByuB,GAChBhzB,EAAIkyB,GAA8C,MAAhCc,EAAiBd,GAAsBc,EAAiBd,GAAcc,EAAiBhqB,GACzGA,EAAWkpB,GAEXlyB,EAAIkyB,GAAcc,EAEbhzB,CACR,GAAE,CAAC,EACL,4JC/ID,SAASozB,EAAMt5B,GAAyB,IAAlB2kB,EAAkB,uDAAZ,EAAG4U,EAAS,uDAAH,EAMnC,OAAOluB,KAAKsZ,IAAItZ,KAAKkuB,IAAI5U,EAAK3kB,GAAQu5B,EACvC,CA8BM,SAASC,EAAe/O,GAE7B,GAAIA,EAAMtjB,KACR,OAAOsjB,EAET,GAAwB,MAApBA,EAAM1M,OAAO,GACf,OAAOyb,EA7BJ,SAAkB/O,GACvBA,EAAQA,EAAM5jB,MAAM,GACpB,IAAM4yB,EAAK,IAAIC,OAAJ,cAAkBjP,EAAMhoB,QAAU,EAAI,EAAI,EAA1C,KAAgD,KACvDk3B,EAASlP,EAAM1Z,MAAM0oB,GAIzB,OAHIE,GAA+B,IAArBA,EAAO,GAAGl3B,SACtBk3B,EAASA,EAAO9zB,KAAI,SAAAkgB,GAAC,OAAIA,EAAIA,CAAR,KAEhB4T,EAAS,MAAH,OAA2B,IAAlBA,EAAOl3B,OAAe,IAAM,GAArC,YAA2Ck3B,EAAO9zB,KAAI,SAACkgB,EAAG9iB,GACrE,OAAOA,EAAQ,EAAI22B,SAAS7T,EAAG,IAAM1a,KAAKoZ,MAAMmV,SAAS7T,EAAG,IAAM,IAAM,KAAQ,GACjF,IAAExX,KAAK,MAFK,KAEM,EACpB,CAmByBsrB,CAASpP,IAEjC,IAAMqP,EAASrP,EAAMvnB,QAAQ,KACvBiE,EAAOsjB,EAAM7H,UAAU,EAAGkX,GAChC,IAA+D,IAA3D,CAAC,MAAO,OAAQ,MAAO,OAAQ,SAAS52B,QAAQiE,GAClD,MAAM,IAAI9K,OACgFwuB,EAAAA,EAAAA,GAAuB,EAAGJ,IAEtH,IACIsP,EADAtC,EAAShN,EAAM7H,UAAUkX,EAAS,EAAGrP,EAAMhoB,OAAS,GAExD,GAAa,UAAT0E,GAMF,GAJA4yB,GADAtC,EAASA,EAAOtzB,MAAM,MACF61B,QACE,IAAlBvC,EAAOh1B,QAAwC,MAAxBg1B,EAAO,GAAG1Z,OAAO,KAC1C0Z,EAAO,GAAKA,EAAO,GAAG5wB,MAAM,KAE6D,IAAvF,CAAC,OAAQ,aAAc,UAAW,eAAgB,YAAY3D,QAAQ62B,GACxE,MAAM,IAAI19B,OACgFwuB,EAAAA,EAAAA,GAAuB,GAAIkP,SAGvHtC,EAASA,EAAOtzB,MAAM,KAGxB,MAAO,CACLgD,KAAAA,EACAswB,OAHFA,EAASA,EAAO5xB,KAAI,SAAA7F,GAAK,OAAIi6B,WAAWj6B,EAAf,IAIvB+5B,WAAAA,EAEH,CA8BM,SAASG,EAAezP,GAC7B,IACEtjB,EAEEsjB,EAFFtjB,KACA4yB,EACEtP,EADFsP,WAGAtC,EACEhN,EADFgN,OAcF,OAZ6B,IAAzBtwB,EAAKjE,QAAQ,OAEfu0B,EAASA,EAAO5xB,KAAI,SAACkgB,EAAGtb,GAAJ,OAAUA,EAAI,EAAImvB,SAAS7T,EAAG,IAAMA,CAApC,KACc,IAAzB5e,EAAKjE,QAAQ,SACtBu0B,EAAO,GAAP,UAAeA,EAAO,GAAtB,KACAA,EAAO,GAAP,UAAeA,EAAO,GAAtB,MAGAA,GAD6B,IAA3BtwB,EAAKjE,QAAQ,SACN,GAAH,OAAM62B,EAAN,YAAoBtC,EAAOlpB,KAAK,MAE7B,GAAH,OAAMkpB,EAAOlpB,KAAK,OAEnB,GAAP,OAAUpH,EAAV,YAAkBswB,EAAlB,IACD,CAoDM,SAAS0C,EAAa1P,GAE3B,IAAI2P,EAAqB,SADzB3P,EAAQ+O,EAAe/O,IACPtjB,MAAiC,SAAfsjB,EAAMtjB,KAAkBqyB,EA/BrD,SAAkB/O,GAEvB,IACEgN,GAFFhN,EAAQ+O,EAAe/O,IAErBgN,OAEI15B,EAAI05B,EAAO,GACX4C,EAAI5C,EAAO,GAAK,IAChB3R,EAAI2R,EAAO,GAAK,IAChB5V,EAAIwY,EAAIhvB,KAAKsZ,IAAImB,EAAG,EAAIA,GACxBF,EAAI,SAACG,GAAD,IAAIjgB,EAAJ,wDAASigB,EAAIhoB,EAAI,IAAM,GAAvB,OAA8B+nB,EAAIjE,EAAIxW,KAAKkuB,IAAIluB,KAAKsZ,IAAI7e,EAAI,EAAG,EAAIA,EAAG,IAAK,EAA3E,EACNqB,EAAO,MACLizB,EAAM,CAAC/uB,KAAKoZ,MAAa,IAAPmB,EAAE,IAAWva,KAAKoZ,MAAa,IAAPmB,EAAE,IAAWva,KAAKoZ,MAAa,IAAPmB,EAAE,KAK1E,MAJmB,SAAf6E,EAAMtjB,OACRA,GAAQ,IACRizB,EAAIl4B,KAAKu1B,EAAO,KAEXyC,EAAe,CACpB/yB,KAAAA,EACAswB,OAAQ2C,GAEX,CAW0EE,CAAS7P,IAAQgN,OAAShN,EAAMgN,OAUzG,OATA2C,EAAMA,EAAIv0B,KAAI,SAAA00B,GAKZ,MAJmB,UAAf9P,EAAMtjB,OACRozB,GAAO,KAGFA,GAAO,OAAUA,EAAM,MAAvB,UAAiCA,EAAM,MAAS,MAAU,IAClE,IAGMC,QAAQ,MAASJ,EAAI,GAAK,MAASA,EAAI,GAAK,MAASA,EAAI,IAAIK,QAAQ,GAC7E,CAUM,SAASlQ,EAAiBmQ,EAAYlT,GAC3C,IAAMmT,EAAOR,EAAaO,GACpBE,EAAOT,EAAa3S,GAC1B,OAAQnc,KAAKkuB,IAAIoB,EAAMC,GAAQ,MAASvvB,KAAKsZ,IAAIgW,EAAMC,GAAQ,IAChE,CASM,SAASC,EAAMpQ,EAAOzqB,GAW3B,OAVAyqB,EAAQ+O,EAAe/O,GACvBzqB,EAAQs5B,EAAMt5B,GACK,QAAfyqB,EAAMtjB,MAAiC,QAAfsjB,EAAMtjB,OAChCsjB,EAAMtjB,MAAQ,KAEG,UAAfsjB,EAAMtjB,KACRsjB,EAAMgN,OAAO,GAAb,WAAsBz3B,GAEtByqB,EAAMgN,OAAO,GAAKz3B,EAEbk6B,EAAezP,EACvB,CAkBM,SAASxB,EAAOwB,EAAOqQ,GAG5B,GAFArQ,EAAQ+O,EAAe/O,GACvBqQ,EAAcxB,EAAMwB,IACe,IAA/BrQ,EAAMtjB,KAAKjE,QAAQ,OACrBunB,EAAMgN,OAAO,IAAM,EAAIqD,OAClB,IAAmC,IAA/BrQ,EAAMtjB,KAAKjE,QAAQ,SAAkD,IAAjCunB,EAAMtjB,KAAKjE,QAAQ,SAChE,IAAK,IAAIuH,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1BggB,EAAMgN,OAAOhtB,IAAM,EAAIqwB,EAG3B,OAAOZ,EAAezP,EACvB,CAkBM,SAAS1B,EAAQ0B,EAAOqQ,GAG7B,GAFArQ,EAAQ+O,EAAe/O,GACvBqQ,EAAcxB,EAAMwB,IACe,IAA/BrQ,EAAMtjB,KAAKjE,QAAQ,OACrBunB,EAAMgN,OAAO,KAAO,IAAMhN,EAAMgN,OAAO,IAAMqD,OACxC,IAAmC,IAA/BrQ,EAAMtjB,KAAKjE,QAAQ,OAC5B,IAAK,IAAIuH,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1BggB,EAAMgN,OAAOhtB,KAAO,IAAMggB,EAAMgN,OAAOhtB,IAAMqwB,OAE1C,IAAqC,IAAjCrQ,EAAMtjB,KAAKjE,QAAQ,SAC5B,IAAK,IAAIuH,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAC1BggB,EAAMgN,OAAOhtB,KAAO,EAAIggB,EAAMgN,OAAOhtB,IAAMqwB,EAG/C,OAAOZ,EAAezP,EACvB,uKCrSKvD,EAAY,CAAC,WAEnB,SAASxF,EAAQxK,GACf,OAAyB,IAAlBA,EAAOzU,MACf,CAOc,SAASs4B,EAAgBnuB,GAChC,IACFouB,EACEpuB,EADFouB,QAEF1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,GAC3C+T,EAAWD,GAAW,GAQ1B,OAPAl7B,OAAOgB,KAAKwoB,GAAO4R,OAAO14B,SAAQ,SAAA4B,GAE9B62B,GADU,UAAR72B,EACUsd,EAAQuZ,GAAYruB,EAAMxI,IAAO2sB,EAAAA,EAAAA,GAAWnkB,EAAMxI,IAElD,GAAJ,OAAOsd,EAAQuZ,GAAY72B,GAAM2sB,EAAAA,EAAAA,GAAW3sB,IAA5C,QAAmD2sB,EAAAA,EAAAA,GAAWnkB,EAAMxI,GAAKhF,YAEpF,IACM67B,CACR,cCxBK/T,EAAY,CAAC,OAAQ,OAAQ,uBAAwB,SAAU,qBAYrE,SAASnO,EAAYhQ,GACnB,MAAsB,kBAARA,GAIdA,EAAI+C,WAAW,GAAK,EACrB,CACD,IAAMqvB,EAAoB,SAACjgC,EAAMif,GAC/B,OAAIA,EAAMihB,YAAcjhB,EAAMihB,WAAWlgC,IAASif,EAAMihB,WAAWlgC,GAAMmgC,eAChElhB,EAAMihB,WAAWlgC,GAAMmgC,eAEzB,IACR,EACKC,EAAmB,SAACpgC,EAAMif,GAC9B,IAAIkS,EAAW,GACXlS,GAASA,EAAMihB,YAAcjhB,EAAMihB,WAAWlgC,IAASif,EAAMihB,WAAWlgC,GAAMmxB,WAChFA,EAAWlS,EAAMihB,WAAWlgC,GAAMmxB,UAEpC,IAAMkP,EAAiB,CAAC,EAKxB,OAJAlP,EAAS7pB,SAAQ,SAAAg5B,GACf,IAAMp3B,EAAM22B,EAAgBS,EAAW5uB,OACvC2uB,EAAen3B,GAAOo3B,EAAW5C,KAClC,IACM2C,CACR,EACKE,EAAmB,SAAC7uB,EAAOuF,EAAQgI,EAAOjf,GAC9C,IAAIwgC,EAAmBC,EACvB,EAEI/uB,EADF0kB,WAAAA,OADF,MACe,CAAC,EADhB,EAGMiK,EAAiB,GACjBK,EAAyB,MAATzhB,GAAmE,OAAzCuhB,EAAoBvhB,EAAMihB,aAAoF,OAApDO,EAAwBD,EAAkBxgC,SAA9G,EAAwIygC,EAAsBtP,SAcpM,OAbIuP,GACFA,EAAcp5B,SAAQ,SAAAq5B,GACpB,IAAIC,GAAU,EACdh8B,OAAOgB,KAAK+6B,EAAajvB,OAAOpK,SAAQ,SAAA4B,GAClCktB,EAAWltB,KAASy3B,EAAajvB,MAAMxI,IAAQwI,EAAMxI,KAASy3B,EAAajvB,MAAMxI,KACnF03B,GAAU,EAEb,IACGA,GACFP,EAAer5B,KAAKiQ,EAAO4oB,EAAgBc,EAAajvB,QAE3D,IAEI2uB,CACR,EAGM,SAAS9iB,EAAkB9Z,GAChC,MAAgB,eAATA,GAAkC,UAATA,GAA6B,OAATA,GAA0B,OAATA,CACtE,CACM,IAAMo9B,GAAqBvM,EAAAA,EAAAA,KAIlC,SAASwM,EAAT,GAIG,IAjEc/kB,EA8DfwZ,EAGC,EAHDA,aACAtW,EAEC,EAFDA,MACA8hB,EACC,EADDA,QAEA,OAlEehlB,EAkEAkD,EAjEoB,IAA5Bra,OAAOgB,KAAKmW,GAAKxU,OAiEAguB,EAAetW,EAAM8hB,IAAY9hB,CAC1D,CACc,SAAShB,IAAyB,IAAZmD,EAAY,uDAAJ,CAAC,EAE1C2f,EAIE3f,EAJF2f,QADF,EAKI3f,EAHFmU,aAAAA,OAFF,MAEiBsL,EAFjB,IAKIzf,EAFFoU,sBAAAA,OAHF,MAG0BjY,EAH1B,IAKI6D,EADFqU,sBAAAA,OAJF,MAI0BlY,EAJ1B,EAMMyjB,EAAW,SAAAtvB,GACf,OAAO2jB,EAAAA,EAAAA,IAAgB1V,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACzCuN,MAAO6hB,GAAanhB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACtC6jB,aAAAA,EACAwL,QAAAA,OAGL,EAED,OADAC,EAASC,gBAAiB,EACnB,SAACpzB,GAA2B,IAAtBqzB,EAAsB,uDAAP,CAAC,GAE3BC,EAAAA,EAAAA,IAActzB,GAAK,SAAAoJ,GAAM,OAAIA,EAAOmqB,QAAO,SAAA1D,GAAK,QAAe,MAATA,GAAiBA,EAAMuD,eAA7B,GAAvB,IACzB,IAYI3iB,EAXMgb,EAKJ4H,EALFlhC,KACMqhC,EAIJH,EAJFnL,KACsBuL,EAGpBJ,EAHFK,qBACQC,EAENN,EAFFO,OACAtL,EACE+K,EADF/K,kBAEFnyB,GAAUqqB,EAAAA,EAAAA,GAA8B6S,EAAclV,GAGlDuV,OAAqDhzB,IAA9B+yB,EAA0CA,EAA4BD,GAAmC,SAAlBA,IAA4B,EAC1II,EAASD,IAAe,EAO9B,IAAIE,EAA0BnkB,EACR,SAAlB8jB,EACFK,EAA0BlM,EACjB6L,EAETK,EAA0BjM,EACjB5X,EAAYhQ,KAErB6zB,OAA0BnzB,GAE5B,IAAMozB,GAAwBC,EAAAA,EAAAA,IAAmB/zB,GAAK8R,EAAAA,EAAAA,GAAS,CAC7DpC,kBAAmBmkB,EACnBpjB,MAAAA,GACCta,IACG69B,EAAoB,SAACC,GAA6B,2BAAhBC,EAAgB,iCAAhBA,EAAgB,kBACtD,IAAMC,EAA8BD,EAAcA,EAAYp3B,KAAI,SAAAs3B,GAIhE,MAA4B,oBAAdA,GAA4BA,EAAU9jB,iBAAmB8jB,EAAY,SAAAvwB,GACjF,OAAOuwB,GAAUtiB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACnCuN,MAAO6hB,GAAanhB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACtC6jB,aAAAA,EACAwL,QAAAA,OAGL,EAAGkB,CACL,IAAI,GACDC,EAAsBJ,EACtBxI,GAAiBnD,GACnB6L,EAA4Bh7B,MAAK,SAAA0K,GAC/B,IAAMuN,EAAQ6hB,GAAanhB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CAC7C6jB,aAAAA,EACAwL,QAAAA,KAEIZ,EAAiBF,EAAkB3G,EAAera,GACxD,GAAIkhB,EAAgB,CAClB,IAAMgC,EAAyB,CAAC,EAMhC,OALAv9B,OAAOyG,QAAQ80B,GAAgB74B,SAAQ,YAA0B,mBAAxB86B,EAAwB,KAAfC,EAAe,KAC/DF,EAAuBC,GAAgC,oBAAdC,EAA2BA,GAAU1iB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CAChGuN,MAAAA,KACIojB,CACP,IACMlM,EAAkBzkB,EAAOywB,EACjC,CACD,OAAO,IACR,IAEC7I,IAAkBiI,GACpBS,EAA4Bh7B,MAAK,SAAA0K,GAC/B,IAAMuN,EAAQ6hB,GAAanhB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CAC7C6jB,aAAAA,EACAwL,QAAAA,KAEF,OAAOR,EAAiB7uB,EAAO0uB,EAAiB9G,EAAera,GAAQA,EAAOqa,EAC/E,IAEEmI,GACHO,EAA4Bh7B,KAAKg6B,GAEnC,IAAMsB,EAAwBN,EAA4Bz6B,OAASw6B,EAAYx6B,OAC/E,GAAIkE,MAAMC,QAAQo2B,IAAaQ,EAAwB,EAAG,CACxD,IAAMC,EAAe,IAAI92B,MAAM62B,GAAuB7K,KAAK,KAE3DyK,EAAsB,GAAH,eAAOJ,IAAP,OAAoBS,KACnB5lB,IAApB,kBAA8BmlB,EAASnlB,MAAvC,OAA+C4lB,GAChD,KAA8B,oBAAbT,GAIlBA,EAAS3jB,iBAAmB2jB,IAE1BI,EAAsB,SAAAxwB,GAAK,OAAIowB,GAASniB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CAC1DuN,MAAO6hB,GAAanhB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACtC6jB,aAAAA,EACAwL,QAAAA,OAHuB,GAO7B,IAAM9H,EAAY0I,EAAqB,WAArB,GAAsBO,GAAtB,eAA8CF,KAchE,OAHIn0B,EAAImrB,UACNC,EAAUD,QAAUnrB,EAAImrB,SAEnBC,CACR,EAID,OAHI0I,EAAsBa,aACxBX,EAAkBW,WAAab,EAAsBa,YAEhDX,CACR,CACF,iHCpNK7V,EAAY,CAAC,SAAU,OAAQ,QAmBtB,SAASyW,EAAkBpX,GACxC,MAiBMA,EAdFkR,OAAAA,OAHJ,MAGa,CACPC,GAAI,EAEJC,GAAI,IAEJC,GAAI,IAEJC,GAAI,KAEJC,GAAI,MAZV,IAiBMvR,EAFFqX,KAAAA,OAfJ,MAeW,KAfX,IAiBMrX,EADFsX,KAAAA,OAhBJ,MAgBW,EAhBX,EAkBEvU,GAAQC,EAAAA,EAAAA,GAA8BhD,EAAaW,GAC/C4W,EAnCsB,SAAArG,GAC5B,IAAMsG,EAAqBj+B,OAAOgB,KAAK22B,GAAQ5xB,KAAI,SAAAzB,GAAG,MAAK,CACzDA,IAAAA,EACAm2B,IAAK9C,EAAOrzB,GAFwC,KAG/C,GAGP,OADA25B,EAAmB7C,MAAK,SAAC8C,EAAaC,GAAd,OAA8BD,EAAYzD,IAAM0D,EAAY1D,GAA5D,IACjBwD,EAAmB93B,QAAO,SAACC,EAAK+Q,GACrC,OAAO4D,EAAAA,EAAAA,GAAS,CAAC,EAAG3U,GAAL,UACZ+Q,EAAI7S,IAAM6S,EAAIsjB,KAElB,GAAE,CAAC,EACL,CAuBsB2D,CAAsBzG,GACrC32B,EAAOhB,OAAOgB,KAAKg9B,GACzB,SAASnX,EAAGviB,GACV,IAAMpE,EAA+B,kBAAhBy3B,EAAOrzB,GAAoBqzB,EAAOrzB,GAAOA,EAC9D,MAAO,qBAAP,OAA4BpE,GAA5B,OAAoC49B,EAApC,IACD,CACD,SAASO,EAAK/5B,GACZ,IAAMpE,EAA+B,kBAAhBy3B,EAAOrzB,GAAoBqzB,EAAOrzB,GAAOA,EAC9D,MAAO,qBAAP,OAA4BpE,EAAQ69B,EAAO,KAA3C,OAAiDD,EAAjD,IACD,CACD,SAASQ,EAAQC,EAAOryB,GACtB,IAAMsyB,EAAWx9B,EAAKoC,QAAQ8I,GAC9B,MAAO,4BAA8C,kBAAlByrB,EAAO4G,GAAsB5G,EAAO4G,GAASA,GAAzE,OAAiFT,EAAjF,iCAA6H,IAAdU,GAAqD,kBAA3B7G,EAAO32B,EAAKw9B,IAA0B7G,EAAO32B,EAAKw9B,IAAatyB,GAAO6xB,EAAO,KAAtN,OAA4ND,EAA5N,IACR,CAkBD,OAAO/iB,EAAAA,EAAAA,GAAS,CACd/Z,KAAAA,EACA22B,OAAQqG,EACRnX,GAAAA,EACAwX,KAAAA,EACAC,QAAAA,EACAG,KAvBF,SAAcn6B,GACZ,OAAItD,EAAKoC,QAAQkB,GAAO,EAAItD,EAAK2B,OACxB27B,EAAQh6B,EAAKtD,EAAKA,EAAKoC,QAAQkB,GAAO,IAExCuiB,EAAGviB,EACX,EAmBCo6B,IAlBF,SAAap6B,GAEX,IAAMq6B,EAAW39B,EAAKoC,QAAQkB,GAC9B,OAAiB,IAAbq6B,EACK9X,EAAG7lB,EAAK,IAEb29B,IAAa39B,EAAK2B,OAAS,EACtB07B,EAAKr9B,EAAK29B,IAEZL,EAAQh6B,EAAKtD,EAAKA,EAAKoC,QAAQkB,GAAO,IAAIV,QAAQ,SAAU,qBACpE,EASCk6B,KAAAA,GACCtU,EACJ,CClFD,IAGA,EAHc,CACZoV,aAAc,aCMD,SAASC,IAAgC,IAAlBC,EAAkB,uDAAH,EAEnD,GAAIA,EAAaC,IACf,OAAOD,EAMT,IAAME,GAAYC,EAAAA,EAAAA,IAAmB,CACnCC,QAASJ,IAELI,EAAU,WAAkB,2BAAdC,EAAc,yBAAdA,EAAc,gBAMhC,IAAMv/B,EAA4B,IAArBu/B,EAAUx8B,OAAe,CAAC,GAAKw8B,EAC5C,OAAOv/B,EAAKmG,KAAI,SAAAsqB,GACd,IAAM7pB,EAASw4B,EAAU3O,GACzB,MAAyB,kBAAX7pB,EAAP,UAAgCA,EAAhC,MAA6CA,CACrD,IAAEiI,KAAK,IACT,EAED,OADAywB,EAAQH,KAAM,EACPG,CACR,wBC/BK9X,EAAY,CAAC,cAAe,UAAW,UAAW,SAsCxD,MA/BA,WAA4C,QAAvBhoB,EAAuB,uDAAb,CAAC,EAC9B,EAKMA,EAJFqnB,YAAaiS,OADjB,MACoC,CAAC,EADrC,IAKMt5B,EAHFiqB,QAASuG,OAFb,MAE4B,CAAC,EAF7B,EAGakP,EAEP1/B,EAFF8/B,QAHJ,EAKM9/B,EADFggC,MAAOC,OAJX,MAIwB,CAAC,EAJzB,EAME7V,GAAQC,EAAAA,EAAAA,GAA8BrqB,EAASgoB,GAC3CX,EAAcoX,EAAkBnF,GAChCwG,EAAUL,EAAcC,GAC1B3O,GAAWjF,EAAAA,EAAAA,GAAU,CACvBzE,YAAAA,EACAmC,UAAW,MACX0S,WAAY,CAAC,EAEbjS,SAAStO,EAAAA,EAAAA,GAAS,CAChBuO,KAAM,SACLsG,GACHsP,QAAAA,EACAE,OAAOrkB,EAAAA,EAAAA,GAAS,CAAC,EAAGqkB,EAAOC,IAC1B7V,GApBuC,mBAAN5pB,EAAM,iCAANA,EAAM,kBA6B1C,OARAuwB,EAAWvwB,EAAKuG,QAAO,SAACC,EAAKiqB,GAAN,OAAmBnF,EAAAA,EAAAA,GAAU9kB,EAAKiqB,EAAlC,GAA6CF,IAC3DG,mBAAoBvV,EAAAA,EAAAA,GAAS,CAAC,EAAGwV,EAAAA,EAA0B,MAAT/G,OAAgB,EAASA,EAAM8G,mBAC1FH,EAASK,YAAc,SAAY1jB,GACjC,OAAO2jB,EAAAA,EAAAA,GAAgB,CACrBC,GAAI5jB,EACJuN,MAAOrY,MAEV,EACMmuB,CACR,mDC7BD,IATA,SAAe/pB,EAAKQ,GAClB,OAAKA,GAGEskB,EAAAA,EAAAA,GAAU9kB,EAAKQ,EAAM,CAC1B0mB,OAAO,IAHAlnB,CAKV,iNCHD,IAAMk5B,EAAa,CACjBpgC,EAAG,SACHW,EAAG,WAEC0/B,EAAa,CACjBpZ,EAAG,MACHE,EAAG,QACHrE,EAAG,SACHgE,EAAG,OACHjW,EAAG,CAAC,OAAQ,SACZC,EAAG,CAAC,MAAO,WAEPwvB,EAAU,CACdC,QAAS,KACTC,QAAS,KACTC,SAAU,KACVC,SAAU,MAMNC,EC3BS,SAAiB9/B,GAC9B,IAAMuS,EAAQ,CAAC,EACf,OAAO,SAAAG,GAIL,YAHmB9I,IAAf2I,EAAMG,KACRH,EAAMG,GAAO1S,EAAG0S,IAEXH,EAAMG,EACd,CACF,CDmBwBF,EAAQ,SAAA1T,GAE/B,GAAIA,EAAK8D,OAAS,EAAG,CACnB,IAAI68B,EAAQ3gC,GAGV,MAAO,CAACA,GAFRA,EAAO2gC,EAAQ3gC,EAIlB,CACD,MAAeA,EAAKwF,MAAM,IAA1B,eAAO0d,EAAP,KAAUC,EAAV,KACM7S,EAAWmwB,EAAWvd,GACtB6G,EAAY2W,EAAWvd,IAAM,GACnC,OAAOnb,MAAMC,QAAQ8hB,GAAaA,EAAU7iB,KAAI,SAAA+5B,GAAG,OAAI3wB,EAAW2wB,CAAf,IAAsB,CAAC3wB,EAAWyZ,EACtF,IACYmX,EAAa,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,YAAa,cAAe,eAAgB,aAAc,UAAW,UAAW,eAAgB,oBAAqB,kBAAmB,cAAe,mBAAoB,kBAC5OC,EAAc,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,UAAW,aAAc,eAAgB,gBAAiB,cAAe,WAAY,WAAY,gBAAiB,qBAAsB,mBAAoB,eAAgB,oBAAqB,mBAChQC,EAAc,GAAH,OAAOF,EAAeC,GAChC,SAASE,EAAgB7lB,EAAO8lB,EAAUC,EAActnB,GAC7D,IAAIunB,EACEC,EAA+D,OAA/CD,GAAWE,EAAAA,EAAAA,IAAQlmB,EAAO8lB,GAAU,IAAkBE,EAAWD,EACvF,MAA4B,kBAAjBE,EACF,SAAAh1B,GACL,MAAmB,kBAARA,EACFA,EAOFg1B,EAAeh1B,CACvB,EAECzE,MAAMC,QAAQw5B,GACT,SAAAh1B,GACL,MAAmB,kBAARA,EACFA,EASFg1B,EAAah1B,EACrB,EAEyB,oBAAjBg1B,EACFA,EAKF,YACR,CACM,SAASrB,EAAmB5kB,GACjC,OAAO6lB,EAAgB7lB,EAAO,UAAW,EAC1C,CACM,SAASmmB,EAASC,EAAatI,GACpC,GAAyB,kBAAdA,GAAuC,MAAbA,EACnC,OAAOA,EAET,IACMuI,EAAcD,EADRl1B,KAAKD,IAAI6sB,IAErB,OAAIA,GAAa,EACRuI,EAEkB,kBAAhBA,GACDA,EAEH,IAAP,OAAWA,EACZ,CAOD,SAASC,EAAmB7zB,EAAO9L,EAAMnC,EAAM4hC,GAG7C,IAA4B,IAAxBz/B,EAAKoC,QAAQvE,GACf,OAAO,KAET,IACMu5B,EAbD,SAA+BwI,EAAeH,GACnD,OAAO,SAAAtI,GAAS,OAAIyI,EAAcz6B,QAAO,SAACC,EAAKy6B,GAE7C,OADAz6B,EAAIy6B,GAAeL,EAASC,EAAatI,GAClC/xB,CACR,GAAE,CAAC,EAHY,CAIjB,CAQ4B06B,CADLjB,EAAiBhhC,GACyB4hC,GAC1DtI,EAAYrrB,EAAMjO,GACxB,OAAOq5B,EAAAA,EAAAA,IAAkBprB,EAAOqrB,EAAWC,EAC5C,CACD,SAASU,EAAMhsB,EAAO9L,GACpB,IAAMy/B,EAAcxB,EAAmBnyB,EAAMuN,OAC7C,OAAOra,OAAOgB,KAAK8L,GAAO/G,KAAI,SAAAlH,GAAI,OAAI8hC,EAAmB7zB,EAAO9L,EAAMnC,EAAM4hC,EAA1C,IAAwDt6B,OAAO46B,EAAAA,EAAO,CAAC,EAC1G,CACM,SAASC,EAAOl0B,GACrB,OAAOgsB,EAAMhsB,EAAOizB,EACrB,CAMM,SAASkB,EAAQn0B,GACtB,OAAOgsB,EAAMhsB,EAAOkzB,EACrB,CAMD,SAASd,EAAQpyB,GACf,OAAOgsB,EAAMhsB,EAAOmzB,EACrB,CAfDe,EAAOE,UAGE,CAAC,EACVF,EAAOG,YAAcpB,EAIrBkB,EAAQC,UAGC,CAAC,EACVD,EAAQE,YAAcnB,EAItBd,EAAQgC,UAGC,CAAC,EACVhC,EAAQiC,YAAclB,gIE7If,SAASM,EAAQppB,EAAKxS,GAAwB,IAAlBy8B,IAAkB,yDACnD,IAAKz8B,GAAwB,kBAATA,EAClB,OAAO,KAIT,GAAIwS,GAAOA,EAAI6Y,MAAQoR,EAAW,CAChC,IAAM3G,EAAM,eAAQ91B,GAAON,MAAM,KAAK8B,QAAO,SAACC,EAAKQ,GAAN,OAAeR,GAAOA,EAAIQ,GAAQR,EAAIQ,GAAQ,IAA9C,GAAoDuQ,GACjG,GAAW,MAAPsjB,EACF,OAAOA,CAEV,CACD,OAAO91B,EAAKN,MAAM,KAAK8B,QAAO,SAACC,EAAKQ,GAClC,OAAIR,GAAoB,MAAbA,EAAIQ,GACNR,EAAIQ,GAEN,IACR,GAAEuQ,EACJ,CACM,SAASkqB,EAAcC,EAActC,EAAWuC,GAA4C,IAC7FrhC,EADiEshC,EAA4B,uDAAhBD,EAYjF,OATErhC,EAD0B,oBAAjBohC,EACDA,EAAaC,GACZ16B,MAAMC,QAAQw6B,GACfA,EAAaC,IAAmBC,EAEhCjB,EAAQe,EAAcC,IAAmBC,EAE/CxC,IACF9+B,EAAQ8+B,EAAU9+B,EAAOshC,EAAWF,IAE/BphC,CACR,CAuCD,KAtCA,SAAed,GACb,IACEP,EAIEO,EAJFP,KADF,EAKIO,EAHFyhC,YAAAA,OAFF,MAEgBzhC,EAAQP,KAFxB,EAGEshC,EAEE/gC,EAFF+gC,SACAnB,EACE5/B,EADF4/B,UAKIj/B,EAAK,SAAA+M,GACT,GAAmB,MAAfA,EAAMjO,GACR,OAAO,KAET,IAAMs5B,EAAYrrB,EAAMjO,GAElByiC,EAAef,EADPzzB,EAAMuN,MACgB8lB,IAAa,CAAC,EAclD,OAAOjI,EAAAA,EAAAA,IAAkBprB,EAAOqrB,GAbL,SAAAoJ,GACzB,IAAIrhC,EAAQmhC,EAAcC,EAActC,EAAWuC,GAKnD,OAJIA,IAAmBrhC,GAAmC,kBAAnBqhC,IAErCrhC,EAAQmhC,EAAcC,EAActC,EAAf,UAA6BngC,GAA7B,OAAuD,YAAnB0iC,EAA+B,IAAKtQ,EAAAA,EAAAA,GAAWsQ,IAAmBA,KAEzG,IAAhBV,EACK3gC,GAEF,UACJ2gC,EAAc3gC,EAElB,GAEF,EAKD,OAJAH,EAAGmhC,UAEC,CAAC,EACLnhC,EAAGohC,YAAc,CAACtiC,GACXkB,CACR,uGClDD,MAtBA,WAA4B,2BAARsS,EAAQ,yBAARA,EAAQ,gBAC1B,IAAMovB,EAAWpvB,EAAOlM,QAAO,SAACC,EAAK0yB,GAInC,OAHAA,EAAMqI,YAAYz+B,SAAQ,SAAA7D,GACxBuH,EAAIvH,GAAQi6B,CACb,IACM1yB,CACR,GAAE,CAAC,GAIErG,EAAK,SAAA+M,GACT,OAAO9M,OAAOgB,KAAK8L,GAAO3G,QAAO,SAACC,EAAKvH,GACrC,OAAI4iC,EAAS5iC,IACJkiC,EAAAA,EAAAA,GAAM36B,EAAKq7B,EAAS5iC,GAAMiO,IAE5B1G,CACR,GAAE,CAAC,EACL,EAGD,OAFArG,EAAGmhC,UAA6H,CAAC,EACjInhC,EAAGohC,YAAc9uB,EAAOlM,QAAO,SAACC,EAAK0yB,GAAN,OAAgB1yB,EAAI6L,OAAO6mB,EAAMqI,YAAjC,GAA+C,IACvEphC,CACR,YCjBM,SAAS2hC,EAAgBxhC,GAC9B,MAAqB,kBAAVA,EACFA,EAEF,GAAP,OAAUA,EAAV,WACD,CACM,IAAMyhC,GAAS7I,EAAAA,EAAAA,IAAM,CAC1Bj6B,KAAM,SACNshC,SAAU,UACVnB,UAAW0C,IAEAE,GAAY9I,EAAAA,EAAAA,IAAM,CAC7Bj6B,KAAM,YACNshC,SAAU,UACVnB,UAAW0C,IAEAG,GAAc/I,EAAAA,EAAAA,IAAM,CAC/Bj6B,KAAM,cACNshC,SAAU,UACVnB,UAAW0C,IAEAI,GAAehJ,EAAAA,EAAAA,IAAM,CAChCj6B,KAAM,eACNshC,SAAU,UACVnB,UAAW0C,IAEAK,GAAajJ,EAAAA,EAAAA,IAAM,CAC9Bj6B,KAAM,aACNshC,SAAU,UACVnB,UAAW0C,IAEAM,GAAclJ,EAAAA,EAAAA,IAAM,CAC/Bj6B,KAAM,cACNshC,SAAU,YAEC8B,GAAiBnJ,EAAAA,EAAAA,IAAM,CAClCj6B,KAAM,iBACNshC,SAAU,YAEC+B,GAAmBpJ,EAAAA,EAAAA,IAAM,CACpCj6B,KAAM,mBACNshC,SAAU,YAECgC,GAAoBrJ,EAAAA,EAAAA,IAAM,CACrCj6B,KAAM,oBACNshC,SAAU,YAECiC,GAAkBtJ,EAAAA,EAAAA,IAAM,CACnCj6B,KAAM,kBACNshC,SAAU,YAKCvB,EAAe,SAAA9xB,GAC1B,QAA2BnD,IAAvBmD,EAAM8xB,cAAqD,OAAvB9xB,EAAM8xB,aAAuB,CACnE,IAAM6B,GAAcP,EAAAA,EAAAA,IAAgBpzB,EAAMuN,MAAO,qBAAsB,EAAG,gBAI1E,OAAO6d,EAAAA,EAAAA,IAAkBprB,EAAOA,EAAM8xB,cAHX,SAAAzG,GAAS,MAAK,CACvCyG,cAAc4B,EAAAA,EAAAA,IAASC,EAAatI,GADF,GAIrC,CACD,OAAO,IACR,EACDyG,EAAasC,UAET,CAAC,EACLtC,EAAauC,YAAc,CAAC,gBACZkB,EAAQV,EAAQC,EAAWC,EAAaC,EAAcC,EAAYC,EAAaC,EAAgBC,EAAkBC,EAAmBC,EAAiBxD,GAArK,ICjEa0D,EAAM,SAAAx1B,GACjB,QAAkBnD,IAAdmD,EAAMw1B,KAAmC,OAAdx1B,EAAMw1B,IAAc,CACjD,IAAM7B,GAAcP,EAAAA,EAAAA,IAAgBpzB,EAAMuN,MAAO,UAAW,EAAG,OAI/D,OAAO6d,EAAAA,EAAAA,IAAkBprB,EAAOA,EAAMw1B,KAHX,SAAAnK,GAAS,MAAK,CACvCmK,KAAK9B,EAAAA,EAAAA,IAASC,EAAatI,GADO,GAIrC,CACD,OAAO,IACR,EACDmK,EAAIpB,UAEA,CAAC,EACLoB,EAAInB,YAAc,CAAC,OAIZ,IAAMoB,EAAY,SAAAz1B,GACvB,QAAwBnD,IAApBmD,EAAMy1B,WAA+C,OAApBz1B,EAAMy1B,UAAoB,CAC7D,IAAM9B,GAAcP,EAAAA,EAAAA,IAAgBpzB,EAAMuN,MAAO,UAAW,EAAG,aAI/D,OAAO6d,EAAAA,EAAAA,IAAkBprB,EAAOA,EAAMy1B,WAHX,SAAApK,GAAS,MAAK,CACvCoK,WAAW/B,EAAAA,EAAAA,IAASC,EAAatI,GADC,GAIrC,CACD,OAAO,IACR,EACDoK,EAAUrB,UAEN,CAAC,EACLqB,EAAUpB,YAAc,CAAC,aAIlB,IAAMqB,EAAS,SAAA11B,GACpB,QAAqBnD,IAAjBmD,EAAM01B,QAAyC,OAAjB11B,EAAM01B,OAAiB,CACvD,IAAM/B,GAAcP,EAAAA,EAAAA,IAAgBpzB,EAAMuN,MAAO,UAAW,EAAG,UAI/D,OAAO6d,EAAAA,EAAAA,IAAkBprB,EAAOA,EAAM01B,QAHX,SAAArK,GAAS,MAAK,CACvCqK,QAAQhC,EAAAA,EAAAA,IAASC,EAAatI,GADI,GAIrC,CACD,OAAO,IACR,EACDqK,EAAOtB,UAEH,CAAC,EACLsB,EAAOrB,YAAc,CAAC,UA4BTkB,EAAQC,EAAKC,EAAWC,GA3BX1J,EAAAA,EAAAA,IAAM,CAC9Bj6B,KAAM,gBAEei6B,EAAAA,EAAAA,IAAM,CAC3Bj6B,KAAM,aAEoBi6B,EAAAA,EAAAA,IAAM,CAChCj6B,KAAM,kBAEuBi6B,EAAAA,EAAAA,IAAM,CACnCj6B,KAAM,qBAEoBi6B,EAAAA,EAAAA,IAAM,CAChCj6B,KAAM,kBAE2Bi6B,EAAAA,EAAAA,IAAM,CACvCj6B,KAAM,yBAEwBi6B,EAAAA,EAAAA,IAAM,CACpCj6B,KAAM,sBAEyBi6B,EAAAA,EAAAA,IAAM,CACrCj6B,KAAM,uBAEgBi6B,EAAAA,EAAAA,IAAM,CAC5Bj6B,KAAM,cC/ED,SAAS4jC,EAAiBviC,EAAOshC,GACtC,MAAkB,SAAdA,EACKA,EAEFthC,CACR,CAiBemiC,GAhBKvJ,EAAAA,EAAAA,IAAM,CACzBj6B,KAAM,QACNshC,SAAU,UACVnB,UAAWyD,KAEU3J,EAAAA,EAAAA,IAAM,CAC3Bj6B,KAAM,UACNgiC,YAAa,kBACbV,SAAU,UACVnB,UAAWyD,KAEkB3J,EAAAA,EAAAA,IAAM,CACnCj6B,KAAM,kBACNshC,SAAU,UACVnB,UAAWyD,KCnBN,SAASC,EAAgBxiC,GAC9B,OAAOA,GAAS,GAAe,IAAVA,EAAd,UAAuC,IAARA,EAA/B,KAAgDA,CACxD,CACM,IAAMyyB,GAAQmG,EAAAA,EAAAA,IAAM,CACzBj6B,KAAM,QACNmgC,UAAW0D,IAEAC,EAAW,SAAA71B,GACtB,QAAuBnD,IAAnBmD,EAAM61B,UAA6C,OAAnB71B,EAAM61B,SAAmB,CAQ3D,OAAOzK,EAAAA,EAAAA,IAAkBprB,EAAOA,EAAM61B,UAPX,SAAAxK,GACzB,IAAIyK,EAAcC,EAAuBC,EAEzC,MAAO,CACLH,UAFkD,OAA/BC,EAAe91B,EAAMuN,QAAgF,OAArDwoB,EAAwBD,EAAanc,cAA2F,OAA1Dqc,EAAyBD,EAAsBlL,aAA/H,EAA0JmL,EAAuB3K,KAAe4K,EAAAA,GAAkB5K,IAEnPuK,EAAgBvK,GAE3C,GAEF,CACD,OAAO,IACR,EACDwK,EAASxB,YAAc,CAAC,YACjB,IAAM6B,GAAWlK,EAAAA,EAAAA,IAAM,CAC5Bj6B,KAAM,WACNmgC,UAAW0D,IAEAlU,GAASsK,EAAAA,EAAAA,IAAM,CAC1Bj6B,KAAM,SACNmgC,UAAW0D,IAEAO,GAAYnK,EAAAA,EAAAA,IAAM,CAC7Bj6B,KAAM,YACNmgC,UAAW0D,IAEA9b,GAAYkS,EAAAA,EAAAA,IAAM,CAC7Bj6B,KAAM,YACNmgC,UAAW0D,ICqPb,IDnPyB5J,EAAAA,EAAAA,IAAM,CAC7Bj6B,KAAM,OACNgiC,YAAa,QACb7B,UAAW0D,KAEa5J,EAAAA,EAAAA,IAAM,CAC9Bj6B,KAAM,OACNgiC,YAAa,SACb7B,UAAW0D,IAKEL,EAAQ1P,EAAOgQ,EAAUK,EAAUxU,EAAQyU,EAAWrc,GAH5CkS,EAAAA,EAAAA,IAAM,CAC7Bj6B,KAAM,eC9CgB,CAEtB8iC,OAAQ,CACNxB,SAAU,UACVnB,UAAW0C,GAEbE,UAAW,CACTzB,SAAU,UACVnB,UAAW0C,GAEbG,YAAa,CACX1B,SAAU,UACVnB,UAAW0C,GAEbI,aAAc,CACZ3B,SAAU,UACVnB,UAAW0C,GAEbK,WAAY,CACV5B,SAAU,UACVnB,UAAW0C,GAEbM,YAAa,CACX7B,SAAU,WAEZ8B,eAAgB,CACd9B,SAAU,WAEZ+B,iBAAkB,CAChB/B,SAAU,WAEZgC,kBAAmB,CACjBhC,SAAU,WAEZiC,gBAAiB,CACfjC,SAAU,WAEZvB,aAAc,CACZuB,SAAU,qBACVrH,MAAO8F,GAGTjU,MAAO,CACLwV,SAAU,UACVnB,UAAWyD,GAEbS,QAAS,CACP/C,SAAU,UACVU,YAAa,kBACb7B,UAAWyD,GAEbU,gBAAiB,CACfhD,SAAU,UACVnB,UAAWyD,GAGb5iC,EAAG,CACDi5B,MAAOmI,EAAAA,IAETmC,GAAI,CACFtK,MAAOmI,EAAAA,IAEToC,GAAI,CACFvK,MAAOmI,EAAAA,IAETqC,GAAI,CACFxK,MAAOmI,EAAAA,IAETsC,GAAI,CACFzK,MAAOmI,EAAAA,IAETuC,GAAI,CACF1K,MAAOmI,EAAAA,IAETwC,GAAI,CACF3K,MAAOmI,EAAAA,IAETA,QAAS,CACPnI,MAAOmI,EAAAA,IAETyC,WAAY,CACV5K,MAAOmI,EAAAA,IAET0C,aAAc,CACZ7K,MAAOmI,EAAAA,IAET2C,cAAe,CACb9K,MAAOmI,EAAAA,IAET4C,YAAa,CACX/K,MAAOmI,EAAAA,IAETtB,SAAU,CACR7G,MAAOmI,EAAAA,IAETrB,SAAU,CACR9G,MAAOmI,EAAAA,IAET6C,cAAe,CACbhL,MAAOmI,EAAAA,IAET8C,mBAAoB,CAClBjL,MAAOmI,EAAAA,IAET+C,iBAAkB,CAChBlL,MAAOmI,EAAAA,IAETgD,aAAc,CACZnL,MAAOmI,EAAAA,IAETiD,kBAAmB,CACjBpL,MAAOmI,EAAAA,IAETkD,gBAAiB,CACfrL,MAAOmI,EAAAA,IAET/hC,EAAG,CACD45B,MAAOkI,EAAAA,IAEToD,GAAI,CACFtL,MAAOkI,EAAAA,IAETqD,GAAI,CACFvL,MAAOkI,EAAAA,IAETsD,GAAI,CACFxL,MAAOkI,EAAAA,IAETuD,GAAI,CACFzL,MAAOkI,EAAAA,IAETwD,GAAI,CACF1L,MAAOkI,EAAAA,IAETyD,GAAI,CACF3L,MAAOkI,EAAAA,IAETA,OAAQ,CACNlI,MAAOkI,EAAAA,IAET0D,UAAW,CACT5L,MAAOkI,EAAAA,IAET2D,YAAa,CACX7L,MAAOkI,EAAAA,IAET4D,aAAc,CACZ9L,MAAOkI,EAAAA,IAET6D,WAAY,CACV/L,MAAOkI,EAAAA,IAETvB,QAAS,CACP3G,MAAOkI,EAAAA,IAETtB,QAAS,CACP5G,MAAOkI,EAAAA,IAET8D,aAAc,CACZhM,MAAOkI,EAAAA,IAET+D,kBAAmB,CACjBjM,MAAOkI,EAAAA,IAETgE,gBAAiB,CACflM,MAAOkI,EAAAA,IAETiE,YAAa,CACXnM,MAAOkI,EAAAA,IAETkE,iBAAkB,CAChBpM,MAAOkI,EAAAA,IAETmE,eAAgB,CACdrM,MAAOkI,EAAAA,IAGToE,aAAc,CACZvE,aAAa,EACb7B,UAAW,SAAA9+B,GAAK,MAAK,CACnB,eAAgB,CACd0yB,QAAS1yB,GAFG,GAMlB0yB,QAAS,CAAC,EACVyS,SAAU,CAAC,EACXC,aAAc,CAAC,EACfC,WAAY,CAAC,EACbC,WAAY,CAAC,EAEbC,UAAW,CAAC,EACZC,cAAe,CAAC,EAChBC,SAAU,CAAC,EACXC,eAAgB,CAAC,EACjBC,WAAY,CAAC,EACbC,aAAc,CAAC,EACf3wB,MAAO,CAAC,EACRrB,KAAM,CAAC,EACPC,SAAU,CAAC,EACXE,WAAY,CAAC,EACb8xB,UAAW,CAAC,EACZC,aAAc,CAAC,EACfC,YAAa,CAAC,EAEd3D,IAAK,CACHxJ,MAAOwJ,GAETE,OAAQ,CACN1J,MAAO0J,GAETD,UAAW,CACTzJ,MAAOyJ,GAET/tB,WAAY,CAAC,EACbJ,QAAS,CAAC,EACV8xB,aAAc,CAAC,EACfC,gBAAiB,CAAC,EAClBC,aAAc,CAAC,EACfC,oBAAqB,CAAC,EACtBC,iBAAkB,CAAC,EACnBC,kBAAmB,CAAC,EACpBC,SAAU,CAAC,EAEXh6B,SAAU,CAAC,EACX+I,OAAQ,CACN4qB,SAAU,UAEZsG,IAAK,CAAC,EACNC,MAAO,CAAC,EACRC,OAAQ,CAAC,EACTC,KAAM,CAAC,EAEPC,UAAW,CACT1G,SAAU,WAGZxN,MAAO,CACLqM,UAAW0D,GAEbC,SAAU,CACR7J,MAAO6J,GAETK,SAAU,CACRhE,UAAW0D,GAEblU,OAAQ,CACNwQ,UAAW0D,GAEbO,UAAW,CACTjE,UAAW0D,GAEb9b,UAAW,CACToY,UAAW0D,GAEboE,UAAW,CAAC,EAEZrb,WAAY,CACV0U,SAAU,cAEZzU,SAAU,CACRyU,SAAU,cAEZ4G,UAAW,CACT5G,SAAU,cAEZnrB,WAAY,CACVmrB,SAAU,cAEZ9T,cAAe,CAAC,EAChBhB,cAAe,CAAC,EAChBpW,WAAY,CAAC,EACb+xB,UAAW,CAAC,EACZxb,WAAY,CACVqV,aAAa,EACbV,SAAU,kHC7Jd,IAAM1P,EA5GC,WACL,SAASwW,EAAcpoC,EAAM47B,EAAKpgB,EAAOtY,GAAQ,MACzC+K,GAAK,eACRjO,EAAO47B,IADC,iBAETpgB,GAFS,GAILjb,EAAU2C,EAAOlD,GACvB,IAAKO,EACH,OAAO,UACJP,EAAO47B,GAGZ,MAKIr7B,EAJFyhC,YAAAA,OADF,MACgBhiC,EADhB,EAEEshC,EAGE/gC,EAHF+gC,SACAnB,EAEE5/B,EAFF4/B,UACAlG,EACE15B,EADF05B,MAEF,GAAW,MAAP2B,EACF,OAAO,KAET,GAAiB,eAAb0F,GAAqC,YAAR1F,EAC/B,OAAO,UACJ57B,EAAO47B,GAGZ,IAAM6G,GAAef,EAAAA,EAAAA,IAAQlmB,EAAO8lB,IAAa,CAAC,EAClD,GAAIrH,EACF,OAAOA,EAAMhsB,GAef,OAAOorB,EAAAA,EAAAA,IAAkBprB,EAAO2tB,GAbL,SAAA8G,GACzB,IAAIrhC,GAAQsgC,EAAAA,EAAAA,IAASc,EAActC,EAAWuC,GAK9C,OAJIA,IAAmBrhC,GAAmC,kBAAnBqhC,IAErCrhC,GAAQsgC,EAAAA,EAAAA,IAASc,EAActC,EAAf,UAA6BngC,GAA7B,OAAuD,YAAnB0iC,EAA+B,IAAKtQ,EAAAA,EAAAA,GAAWsQ,IAAmBA,KAEpG,IAAhBV,EACK3gC,GAEF,UACJ2gC,EAAc3gC,EAElB,GAEF,CA8DD,OA7DA,SAASuwB,EAAgB3jB,GACvB,IAAIo6B,EACJ,EAGIp6B,GAAS,CAAC,EAFZ4jB,EADF,EACEA,GADF,IAEErW,MAAAA,OAFF,MAEU,CAAC,EAFX,EAIA,IAAKqW,EACH,OAAO,KAGT,IAAM3uB,EAA8D,OAApDmlC,EAAwB7sB,EAAMiW,mBAA6B4W,EAAwB3W,EAAAA,EAOnG,SAAS4W,EAASC,GAChB,IAAIC,EAAWD,EACf,GAAuB,oBAAZA,EACTC,EAAWD,EAAQ/sB,QACd,GAAuB,kBAAZ+sB,EAEhB,OAAOA,EAET,IAAKC,EACH,OAAO,KAET,IAAMpO,GAAmBT,EAAAA,EAAAA,IAA4Bne,EAAMoM,aACrD6S,EAAkBt5B,OAAOgB,KAAKi4B,GAChCqO,EAAMrO,EA2BV,OA1BAj5B,OAAOgB,KAAKqmC,GAAU3kC,SAAQ,SAAA6kC,GAC5B,IAlFUC,EAAS/0B,EAkFbvS,GAlFIsnC,EAkFaH,EAASE,GAlFb90B,EAkFwB4H,EAjFvB,oBAAZmtB,EAAyBA,EAAQ/0B,GAAO+0B,GAkFhD,GAAc,OAAVtnC,QAA4ByJ,IAAVzJ,EACpB,GAAqB,kBAAVA,EACT,GAAI6B,EAAOwlC,GACTD,GAAMvG,EAAAA,EAAAA,GAAMuG,EAAKL,EAAcM,EAAUrnC,EAAOma,EAAOtY,QAClD,CACL,IAAMghC,GAAoB7K,EAAAA,EAAAA,IAAkB,CAC1C7d,MAAAA,GACCna,GAAO,SAAA6P,GAAC,iBACRw3B,EAAWx3B,EADH,KA/FzB,WAAyC,2BAAT03B,EAAS,yBAATA,EAAS,gBACvC,IAAMC,EAAUD,EAAQthC,QAAO,SAACnF,EAAM2mC,GAAP,OAAkB3mC,EAAKiR,OAAOjS,OAAOgB,KAAK2mC,GAA1C,GAAoD,IAC7EC,EAAQ,IAAI7mC,IAAI2mC,GACtB,OAAOD,EAAQI,OAAM,SAAAF,GAAM,OAAIC,EAAM/3B,OAAS7P,OAAOgB,KAAK2mC,GAAQhlC,MAAvC,GAC5B,CA8FiBmlC,CAAoB/E,EAAmB7iC,GAMzConC,GAAMvG,EAAAA,EAAAA,GAAMuG,EAAKvE,GALjBuE,EAAIC,GAAY9W,EAAgB,CAC9BC,GAAIxwB,EACJma,MAAAA,GAKL,MAEDitB,GAAMvG,EAAAA,EAAAA,GAAMuG,EAAKL,EAAcM,EAAUrnC,EAAOma,EAAOtY,GAG5D,KACM62B,EAAAA,EAAAA,IAAwBU,EAAiBgO,EACjD,CACD,OAAOzgC,MAAMC,QAAQ4pB,GAAMA,EAAG3qB,IAAIohC,GAAYA,EAASzW,EACxD,CAEF,CACuBqX,GACxBtX,EAAgB0Q,YAAc,CAAC,MAC/B,gEC3HalF,GAAqBvM,EAAAA,EAAAA,KAIlC,IAHA,WAAqD,IAAnCiB,EAAmC,uDAApBsL,EAC/B,OAAO+L,EAAAA,EAAAA,GAAuBrX,EAC/B,gGCHc,SAASI,EAAT,GAKZ,IAJDjkB,EAIC,EAJDA,MACA1R,EAGC,EAHDA,KACAu1B,EAEC,EAFDA,aACAwL,EACC,EADDA,QAEI9hB,GAAQ4tB,EAAAA,EAAAA,GAAStX,GACjBwL,IACF9hB,EAAQA,EAAM8hB,IAAY9hB,GAE5B,IAAMtD,ECXO,SAAuBzQ,GACpC,IACE+T,EAGE/T,EAHF+T,MACAjf,EAEEkL,EAFFlL,KACA0R,EACExG,EADFwG,MAEF,OAAKuN,GAAUA,EAAMihB,YAAejhB,EAAMihB,WAAWlgC,IAAUif,EAAMihB,WAAWlgC,GAAMuf,cAG/EutB,EAAAA,EAAAA,GAAa7tB,EAAMihB,WAAWlgC,GAAMuf,aAAc7N,GAFhDA,CAGV,CDCqBq7B,CAAc,CAChC9tB,MAAAA,EACAjf,KAAAA,EACA0R,MAAAA,IAEF,OAAOiK,CACR,6DEhBD,SAASqxB,EAAcjxB,GACrB,OAAmC,IAA5BnX,OAAOgB,KAAKmW,GAAKxU,MACzB,CAKD,IAJA,WAAuC,IAArBguB,EAAqB,uDAAN,KACzB0X,EAAeltB,EAAAA,WAAiBhI,EAAAA,GACtC,OAAQk1B,GAAgBD,EAAcC,GAAgB1X,EAAe0X,CACtE,mCCRD,IAAMC,EAAmB,SAAA5T,GAAa,OAAIA,CAAJ,EAehCM,EAd2B,WAC/B,IAAIuT,EAAWD,EACf,MAAO,CACLxT,UADK,SACKC,GACRwT,EAAWxT,CACZ,EACDwT,SAJK,SAII7T,GACP,OAAO6T,EAAS7T,EACjB,EACD8T,MAPK,WAQHD,EAAWD,CACZ,EAEJ,CAC0BG,GAC3B,uFCXe,SAASxX,EAAW7Z,GACjC,GAAsB,kBAAXA,EACT,MAAM,IAAI7a,OAAyGwuB,EAAAA,EAAAA,GAAuB,IAE5I,OAAO3T,EAAO6G,OAAO,GAAGyqB,cAAgBtxB,EAAOrQ,MAAM,EACtD,qCCVc,SAAS8sB,EAAeD,EAAO+U,GAAsC,IAArBhV,EAAqB,4DAAXhqB,EACjEnD,EAAS,CAAC,EAkBhB,OAjBAxG,OAAOgB,KAAK4yB,GAAOlxB,SAGnB,SAAAyuB,GACE3qB,EAAO2qB,GAAQyC,EAAMzC,GAAMhrB,QAAO,SAACC,EAAK9B,GACtC,GAAIA,EAAK,CACP,IAAMskC,EAAeD,EAAgBrkC,GAChB,KAAjBskC,GACFxiC,EAAIhE,KAAKwmC,GAEPjV,GAAWA,EAAQrvB,IACrB8B,EAAIhE,KAAKuxB,EAAQrvB,GAEpB,CACD,OAAO8B,CACR,GAAE,IAAIqI,KAAK,IACb,IACMjI,CACR,oECdc,SAASqiC,IAAgC,2BAAPC,EAAO,yBAAPA,EAAO,gBACtD,OAAOA,EAAM3iC,QAAO,SAACC,EAAK2M,GACxB,OAAY,MAARA,EACK3M,EAEF,WAAkC,2BAANxG,EAAM,yBAANA,EAAM,gBACvCwG,EAAI2T,MAAM/X,KAAMpC,GAChBmT,EAAKgH,MAAM/X,KAAMpC,EAClB,CACF,IAAE,WAAQ,GACZ,oECdc,SAAS00B,EAASvhB,GAAkB,IAC7Cg2B,EADiCC,EAAY,uDAAL,IAE5C,SAASC,IAAmB,kCAANrpC,EAAM,yBAANA,EAAM,gBAC1B,IAAMspC,EAAQ,WACZn2B,EAAKgH,MAAM,EAAMna,EAClB,EACD03B,aAAayR,GACbA,EAAUxR,WAAW2R,EAAOF,EAC7B,CAID,OAHAC,EAAUE,MAAQ,WAChB7R,aAAayR,EACd,EACME,CACR,yICdM,SAASG,EAAcxiC,GAC5B,OAAgB,OAATA,GAAiC,kBAATA,GAAqBA,EAAKyiC,cAAgBrpC,MAC1E,CACD,SAASspC,EAAUC,GACjB,IAAKH,EAAcG,GACjB,OAAOA,EAET,IAAM/iC,EAAS,CAAC,EAIhB,OAHAxG,OAAOgB,KAAKuoC,GAAQ7mC,SAAQ,SAAA4B,GAC1BkC,EAAOlC,GAAOglC,EAAUC,EAAOjlC,GAChC,IACMkC,CACR,CACc,SAAS0kB,EAAUvR,EAAQ4vB,GAEvC,IAF+CnqC,EAE/C,uDAFyD,CAC1DkuB,OAAO,GAED9mB,EAASpH,EAAQkuB,OAAQvS,EAAAA,EAAAA,GAAS,CAAC,EAAGpB,GAAUA,EAiBtD,OAhBIyvB,EAAczvB,IAAWyvB,EAAcG,IACzCvpC,OAAOgB,KAAKuoC,GAAQ7mC,SAAQ,SAAA4B,GAEd,cAARA,IAGA8kC,EAAcG,EAAOjlC,KAASA,KAAOqV,GAAUyvB,EAAczvB,EAAOrV,IAEtEkC,EAAOlC,GAAO4mB,EAAUvR,EAAOrV,GAAMilC,EAAOjlC,GAAMlF,GACzCA,EAAQkuB,MACjB9mB,EAAOlC,GAAO8kC,EAAcG,EAAOjlC,IAAQglC,EAAUC,EAAOjlC,IAAQilC,EAAOjlC,GAE3EkC,EAAOlC,GAAOilC,EAAOjlC,GAExB,IAEIkC,CACR,qCC9Bc,SAASgjC,EAAsBntC,GAM5C,IADA,IAAIwI,EAAM,0CAA4CxI,EAC7CsO,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,GAAK,EAGzC9F,GAAO,WAAalB,mBAAmBmW,UAAUnP,IAEnD,MAAO,uBAAyBtO,EAAO,WAAawI,EAAM,wBAE3D,kHCjBK4kC,EAA4B,CAChC3hB,OAAQ,SACR4hB,QAAS,UACTC,UAAW,YACXniB,SAAU,WACVuP,SAAU,WACV11B,MAAO,QACPuoC,SAAU,WACVC,QAAS,UACTC,aAAc,eACdC,SAAU,WACV9hB,SAAU,YAEG,SAASmJ,EAAqBsD,EAAevD,GAAiC,IAA3B6Y,EAA2B,uDAAP,MAC9EC,EAAmBR,EAA0BtY,GACnD,OAAO8Y,EAAmB,GAAH,OAAMD,EAAN,YAA2BC,GAA3B,UAAmDjV,EAAAA,EAAAA,SAA4BN,GAA/E,YAAiGvD,EACzH,mFChBc,SAASE,EAAuBqD,EAAed,GAAkC,IAA3BoW,EAA2B,uDAAP,MACjFxkC,EAAS,CAAC,EAIhB,OAHAouB,EAAMlxB,SAAQ,SAAAyuB,GACZ3rB,EAAO2rB,IAAQC,EAAAA,EAAAA,GAAqBsD,EAAevD,EAAM6Y,EAC1D,IACMxkC,CACR,qCCPc,SAAS0vB,EAAcvoB,GACpC,OAAOA,GAAQA,EAAKuoB,eAAiBhxB,QACtC,kHCDc,SAASixB,EAAYxoB,GAElC,OADYuoB,EAAAA,EAAAA,GAAcvoB,GACfu9B,aAAejuC,MAC3B,mFCGc,SAASisC,EAAavtB,EAAc7N,GACjD,IAAMtG,GAASuU,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GAwB5B,OAvBA9M,OAAOgB,KAAK2Z,GAAcjY,SAAQ,SAAAoW,GAChC,GAAIA,EAASxZ,WAAW2R,MAAM,wBAC5BzK,EAAOsS,IAAYiC,EAAAA,EAAAA,GAAS,CAAC,EAAGJ,EAAa7B,GAAWtS,EAAOsS,SAC1D,GAAIA,EAASxZ,WAAW2R,MAAM,iCAAkC,CACrE,IAAMk5B,EAAmBxvB,EAAa7B,IAAa,CAAC,EAC9CsxB,EAAYt9B,EAAMgM,GACxBtS,EAAOsS,GAAY,CAAC,EACfsxB,GAAcpqC,OAAOgB,KAAKopC,GAGnBD,GAAqBnqC,OAAOgB,KAAKmpC,IAI3C3jC,EAAOsS,IAAYiC,EAAAA,EAAAA,GAAS,CAAC,EAAGqvB,GAChCpqC,OAAOgB,KAAKmpC,GAAkBznC,SAAQ,SAAA2nC,GACpC7jC,EAAOsS,GAAUuxB,GAAgBnC,EAAaiC,EAAiBE,GAAeD,EAAUC,GACzF,KALD7jC,EAAOsS,GAAYsxB,EAHnB5jC,EAAOsS,GAAYqxB,CAUtB,WAA+BxgC,IAArBnD,EAAOsS,KAChBtS,EAAOsS,GAAY6B,EAAa7B,GAEnC,IACMtS,CACR,qCCpBc,SAAS8jC,EAAOr3B,EAAK/S,GACf,oBAAR+S,EACTA,EAAI/S,GACK+S,IACTA,EAAIwI,QAAUvb,EAEjB,2HCjBc,SAASk1B,EAAT,GAKZ,IAJDmV,EAIC,EAJDA,WACSC,EAGR,EAHDllB,QAMWmlB,GAHV,EAFDrvC,KAEC,EADDsvC,MAKIvvB,EAAAA,YAA4BxR,IAAf4gC,GADf9uB,SAEF,EAA+BN,EAAAA,SAAeqvB,GAA9C,eAAOG,EAAP,KAAmBC,EAAnB,KAsBA,MAAO,CArBOH,EAAeF,EAAaI,EAgBXxvB,EAAAA,aAAkB,SAAA0vB,GAC1CJ,GACHG,EAASC,EAEZ,GAAE,IAEJ,mDClCKxV,EAAsC,qBAAXp5B,OAAyBkf,EAAAA,gBAAwBA,EAAAA,UAClF,iGCIe,SAASma,EAAiBv1B,GACvC,IAAMkT,EAAMkI,EAAAA,OAAapb,GAIzB,OAHAs1B,EAAAA,EAAAA,IAAkB,WAChBpiB,EAAIwI,QAAU1b,CACf,IACMob,EAAAA,aAAkB,kBAGrBlI,EAAIwI,QAAR,uBAHyB,GAGE,GAC5B,6FCbc,SAAS8Z,IAAoB,2BAANuV,EAAM,yBAANA,EAAM,gBAM1C,OAAO3vB,EAAAA,SAAc,WACnB,OAAI2vB,EAAKjD,OAAM,SAAA50B,GAAG,OAAW,MAAPA,CAAJ,IACT,KAEF,SAAA83B,GACLD,EAAKpoC,SAAQ,SAAAuQ,IACXq3B,EAAAA,EAAAA,GAAOr3B,EAAK83B,EACb,GACF,CAEF,GAAED,EACJ,kGClBGE,EAAW,EAkBf,IAAMC,GAAkB9vB,IAAAA,EAAAA,EAAAA,EAAAA,EAAAA,KAAK,MAOd,SAASqa,EAAM0V,GAC5B,QAAwBvhC,IAApBshC,EAA+B,CACjC,IAAME,EAAUF,IAChB,OAAqB,MAAdC,EAAqBA,EAAaC,CAC1C,CAED,OA9BF,SAAqBD,GACnB,MAAkC/vB,EAAAA,SAAe+vB,GAAjD,eAAOE,EAAP,KAAkBC,EAAlB,KACMtrB,EAAKmrB,GAAcE,EAWzB,OAVAjwB,EAAAA,WAAgB,WACG,MAAbiwB,GAMFC,EAAa,OAAD,OADZL,GAAY,GAGf,GAAE,CAACI,IACGrrB,CACR,CAgBQurB,CAAYJ,EACpB,qCCjCD,SAAS7kB,EAAEpb,GAAG,IAAIkb,EAAEL,EAAEG,EAAE,GAAG,GAAG,iBAAiBhb,GAAG,iBAAiBA,EAAEgb,GAAGhb,OAAO,GAAG,iBAAiBA,EAAE,GAAGpE,MAAMC,QAAQmE,GAAG,IAAIkb,EAAE,EAAEA,EAAElb,EAAEtI,OAAOwjB,IAAIlb,EAAEkb,KAAKL,EAAEO,EAAEpb,EAAEkb,OAAOF,IAAIA,GAAG,KAAKA,GAAGH,QAAQ,IAAIK,KAAKlb,EAAEA,EAAEkb,KAAKF,IAAIA,GAAG,KAAKA,GAAGE,GAAG,OAAOF,CAAE,CAA0H,IAAnH,WAAgB,IAAI,IAAIhb,EAAEkb,EAAEL,EAAE,EAAEG,EAAE,GAAGH,EAAEhM,UAAUnX,SAASsI,EAAE6O,UAAUgM,QAAQK,EAAEE,EAAEpb,MAAMgb,IAAIA,GAAG,KAAKA,GAAGE,GAAG,OAAOF,CAAE,qCCclW,IAAIslB,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAezCC,EAAY5pC,MAAQA,KAAK4pC,UAAa,WAStC,OARAA,EAAW5rC,OAAOmH,QAAU,SAASgf,GACjC,IAAK,IAAIoU,EAAG5vB,EAAI,EAAGsb,EAAInM,UAAUnX,OAAQgI,EAAIsb,EAAGtb,IAE5C,IAAK,IAAI9K,KADT06B,EAAIzgB,UAAUnP,GACO3K,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,KACzDsmB,EAAEtmB,GAAK06B,EAAE16B,IAEjB,OAAOsmB,CACV,EACMylB,EAAS7xB,MAAM/X,KAAM8X,UAC/B,EACD9Z,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ2mB,gBAAkB3mB,EAAQ4mB,mBAAgB,EAClD,IAAIC,EAAS9mB,EAAQ,MACjB9J,EAAQ8J,EAAQ,MAChB+mB,EAAc/mB,EAAQ,MACtBgnB,EAAsBhnB,EAAQ,MAC9BinB,EAAuBjnB,EAAQ,MAC/BknB,EAAoBlnB,EAAQ,MAC5BmnB,EAAoBnnB,EAAQ,MAC5BonB,EAAkBpnB,EAAQ,MAC1BqnB,EAASrnB,EAAQ,MACjBsnB,EAAUtnB,EAAQ,MAClB4mB,EAAkB,WACtB3mB,EAAQ2mB,gBAAkBA,EAC1B,IAAIC,EAA+B,SAAUU,GAEzC,SAASV,EAAch/B,GACnB,IAAI/D,EAAQyjC,EAAO/rC,KAAKuB,KAAM8K,IAAU9K,KAexC,OAdA+G,EAAM0jC,mBAAoB,EAC1B1jC,EAAM2jC,eAAiB,GACvB3jC,EAAM4jC,YAAc,GACpB5jC,EAAM6jC,8BAA+B,EACrC7jC,EAAM8jC,4BAA6B,EACnC9jC,EAAM+jC,yBAA2B/jC,EAAM+jC,yBAAyBhuC,KAAKiK,GACrEA,EAAMgkC,cAAgBhkC,EAAMgkC,cAAcjuC,KAAKiK,GAC/CA,EAAMikC,gBAAkB,IAAIb,EAAkBc,gBAAe,WACrDlkC,EAAMmkC,uBACNnkC,EAAMmkC,sBAAsBC,eAAepkC,EAAM8jC,2BAExD,IACD9jC,EAAMqkC,kBAAoB,IAAInB,EAAoB3mB,QAAQvc,EAAMikC,iBAChEjkC,EAAMskC,gBAAkB,IAAIjB,EAAkBkB,eAAevkC,EAAMqkC,mBAC5DrkC,CACV,CAqID,OAvJAwiC,EAAUO,EAAeU,GAmBzBV,EAAcyB,qBAAuB,WACjC,OAAOhB,EAAQtsB,OACT,CACE0S,MAAO,OACPnE,OAAQ,OACRyS,QAAS,EACTD,OAAQ,GAEV,CAAEpO,QAAS,WACpB,EACDkZ,EAAc9hC,UAAUwjC,kBAAoB,WACxC,IAAI9wC,EACAC,EACAm8B,EAAQ92B,KAAK8K,MAAMgsB,OACS,QAA3Bn8B,EAAKqF,KAAK2qC,mBAAgC,IAAPhwC,OAAgB,EAASA,EAAGgG,SAC/DjG,EAAKsF,KAAKyrC,UAAU9lC,OAAOoS,MAAMrd,EAAIsF,KAAK2qC,aAEtC3qC,KAAKyrC,SAASC,WAAW/qC,SAC9BX,KAAK2qC,YAAc9lC,MAAM2E,KAAKxJ,KAAKyrC,SAASC,aAEhD1rC,KAAK2rC,kBAAkB,KAAM3rC,KAAK8K,OAC9BgsB,GACA92B,KAAK4rC,iBAAiB9U,EAE7B,EACDgT,EAAc9hC,UAAU6jC,mBAAqB,SAAUC,GACnD9rC,KAAK2rC,kBAAkBG,EAAW9rC,KAAK8K,OACvC,IAAI/K,EAASC,KAAK+rC,aAClB/rC,KAAKqrC,gBAAgBW,OAAOjsC,GACxBC,KAAKkrC,uBACLlrC,KAAKkrC,sBAAsBC,eAAenrC,KAAK6qC,2BAA4BT,EAAkB6B,gBAEjG7B,EAAkB8B,kBACrB,EACDpC,EAAc9hC,UAAUmkC,qBAAuB,WAC3C,IAAIzxC,EACAsF,KAAKosC,YACuB,QAA3B1xC,EAAKsF,KAAK2qC,mBAAgC,IAAPjwC,GAAyBA,EAAGgG,SAAQ,SAAU2rC,GAAS,IAAI3xC,EAAI,OAAmC,QAA3BA,EAAK2xC,EAAMjjC,kBAA+B,IAAP1O,OAAgB,EAASA,EAAG2O,YAAYgjC,EAAS,IAC/LtC,EAAOuC,eAAetsC,KAAKyrC,SAAU5B,GACrC7pC,KAAKosC,UAAUG,WAEnBvsC,KAAKqrC,gBAAgBkB,SACxB,EACDzC,EAAc9hC,UAAU+iC,cAAgB,SAAUv+B,GAC9CA,EAAUA,GAAWxM,KAAKyrC,SAC1B,IAAI1rC,EAASC,KAAK+rC,aAClB/rC,KAAKosC,UAAY,IAAIpsC,KAAKwsC,aAAahgC,EAASo9B,EAAS,CAAE6C,+BAA+B,GAAQzsC,KAAKqrC,gBAAgBqB,kBAAkB3sC,KACpIC,KAAK4qC,+BACN5qC,KAAK6qC,2BAA6B7qC,KAAKosC,UAAUO,OAAO,kDAE5D3sC,KAAKqrC,gBAAgBuB,YAAY5sC,KAAKosC,UAAWrsC,EAAQC,KAAK6sC,oBAAqB7sC,KAAK8sC,mBACxF9sC,KAAKosC,UAAUW,GAAG,gBAAiB/sC,KAAKqrC,gBAAgB2B,gBAC3D,EACDlD,EAAc9hC,UAAU+jC,WAAa,WACjC,OAAOzB,EAAO2C,gBAAgB,CAC1BC,UAAWltC,KAAK0qC,eAChByC,mBAAoBntC,KAAKotC,UACzBC,sBAAuB,CAAC,EACxBC,iBAAkBttC,KAAKutC,mBACxBvtC,KAAK8K,MACX,EACDg/B,EAAc9hC,UAAU8iC,yBAA2B,SAAU/B,GACzD/oC,KAAKkrC,sBAAwBnC,CAChC,EACDe,EAAc9hC,UAAUwlC,iBAAmB,WACvC,IAAIzmC,EAAQ/G,KACRytC,EAAe,CACfx8B,IAAK,SAAUzE,GAAWzF,EAAM0kC,SAAWj/B,CAAU,GAQzD,OANA69B,EAAgBqD,iBAAiBhtC,SAAQ,SAAUtH,GAC/C,IAAI0R,EAAQ/D,EAAM+D,MACd1R,KAAQ0R,IACR2iC,EAAar0C,GAAQ0R,EAAM1R,GAElC,IACMq0C,CACV,EACD3D,EAAc9hC,UAAU4jC,iBAAmB,SAAUv7B,GACjD,IAAItJ,EAAQ/G,KACZhC,OAAOyG,QAAQ4L,GAAQ3P,SAAQ,SAAUhG,GACrC,IAAItB,EAAOsB,EAAG,GAAIwD,EAAQxD,EAAG,GAC7BqM,EAAM0kC,SAAS3U,MAAM19B,GAAQ8E,CAChC,GACJ,EACD4rC,EAAc9hC,UAAU2jC,kBAAoB,SAAUG,EAAWtzB,GAC7D,IAAI9d,EAAIC,EACJgzC,EAAgB7B,EAAYzB,EAAgBuD,aAAa9B,QAAankC,EACtEkmC,EAAexD,EAAgBuD,aAAap1B,GAChD,GAAIm1B,IAAkBE,EAAtB,CAII,IAMIt0B,EAPR,GAAIo0B,GACIp0B,EAAao0B,EAActrC,MAAM,KAAKm4B,QAAO,SAAU5gB,GAAK,OAAOA,CAAI,KAC5DjZ,SACVjG,EAAKsF,KAAKyrC,SAASqC,WAAWpwC,OAAOqa,MAAMrd,EAAI6e,GAGxD,GAAIs0B,GACIt0B,EAAas0B,EAAaxrC,MAAM,KAAKm4B,QAAO,SAAU5gB,GAAK,OAAOA,CAAI,KAC3DjZ,SACVhG,EAAKqF,KAAKyrC,SAASqC,WAAWC,IAAIh2B,MAAMpd,EAAI4e,EAVpD,CAaJ,EACDuwB,EAAc9hC,UAAUgmC,eAAiB,WAErC,OADehuC,KAAK8K,MAAMC,QAE7B,EACD++B,EAAc9hC,UAAUimC,cAAgB,WACpC,IAAIlnC,EAAQ/G,KACR+K,EAAW/K,KAAK8K,MAAMC,SAC1B,OAAO/K,KAAKyqC,mBAAqB1/B,EAC3BoO,EAAM9Q,cAAc,MAAO,CACzB4I,IAAK,SAAUtG,GACPA,GAAQ5D,EAAMmnC,kBAAoBvjC,IAClC5D,EAAMmnC,gBAAkBvjC,EACxB5D,EAAMonC,cAEb,EACDrX,MAAOgT,EAAcyB,yBAEvBvrC,KAAKguC,gBACd,EACDlE,EAAc9hC,UAAUomC,aAAe,WACnC,OAAOpuC,KAAKkuC,iBAAmBlE,EAAYqE,aAAaruC,KAAKguC,iBAAkBhuC,KAAKkuC,gBACvF,EACDpE,EAAc9hC,UAAUsmC,OAAS,WAC7B,OAAOn1B,EAAM9Q,cAAc8Q,EAAMV,SAAU,CAAC,EAAGU,EAAM9Q,cAAc,MAAOrI,KAAKwtC,mBAAoBxtC,KAAKiuC,gBAAiB90B,EAAM9Q,cAAc6hC,EAAqBqE,kBAAmB,CACjLC,eAAgBxuC,KAAKgrC,gBACrB/5B,IAAKjR,KAAK8qC,4BACT9qC,KAAKyqC,mBAAqBzqC,KAAKouC,eACvC,EACMtE,CACV,CAzJkC,CAyJjC3wB,EAAMs1B,eACRvrB,EAAQ4mB,cAAgBA,qCClMxB,IAAIP,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQmP,eAAY,EACpB,IAAIlZ,EAAQ8J,EAAQ,MAChByrB,EAAmBzrB,EAAQ,MAC3B0rB,EAAwB1rB,EAAQ,MAChCoP,EAA2B,SAAUmY,GAErC,SAASnY,EAAUvnB,GACf,IAAI/D,EAAQyjC,EAAO/rC,KAAKuB,KAAM8K,IAAU9K,KAGxC,OAFA+G,EAAM6nC,mBAAqB,GAC3B7nC,EAAM8nC,mBAAqB9nC,EAAM8nC,mBAAmB/xC,KAAKiK,GAClDA,CACV,CA6BD,OAnCAwiC,EAAUlX,EAAWmY,GAOrBnY,EAAUrqB,UAAUwjC,kBAAoB,WACpChB,EAAOxiC,UAAUwjC,kBAAkB/sC,KAAKuB,MACxCA,KAAK+qC,gBACL/qC,KAAK8uC,mBACR,EACDzc,EAAUrqB,UAAUmkC,qBAAuB,WACvC3B,EAAOxiC,UAAUmkC,qBAAqB1tC,KAAKuB,MAC3CA,KAAK+uC,iBACR,EACD1c,EAAUrqB,UAAU+mC,gBAAkB,WAClC/uC,KAAK4uC,mBAAqB,EAC7B,EACDvc,EAAUrqB,UAAUgmC,eAAiB,WACjC,IAAIjnC,EAAQ/G,KACZ,OAAOmZ,EAAM61B,SAASjrC,IAAI/D,KAAK8K,MAAMC,UAAU,SAAUshC,GACrD,OAAIA,GAASruC,OAAOgK,UAAUinC,cAAcxwC,KAAKkwC,EAAsBO,mBAAoB7C,EAAMhnC,MACtF8T,EAAMg2B,aAAa9C,EAAO,CAAE+C,UAAWroC,EAAM8nC,qBAEjDxC,CACV,GACJ,EACDha,EAAUrqB,UAAU6mC,mBAAqB,SAAUQ,GAC/CrvC,KAAK4uC,mBAAmBxuC,KAAKivC,EAChC,EACDhd,EAAUrqB,UAAU8mC,kBAAoB,WACpC,IAAI/nC,EAAQ/G,KACZA,KAAK4uC,mBAAmBluC,SAAQ,SAAU2uC,GAAW,OAAOA,EAAQtoC,EAAM0kC,SAAY,GACzF,EACMpZ,CACV,CArC8B,CAqC7Bqc,EAAiB5E,eACnB5mB,EAAQmP,UAAYA,mCC1DpB,IAAIuX,EAAY5pC,MAAQA,KAAK4pC,UAAa,WAStC,OARAA,EAAW5rC,OAAOmH,QAAU,SAASgf,GACjC,IAAK,IAAIoU,EAAG5vB,EAAI,EAAGsb,EAAInM,UAAUnX,OAAQgI,EAAIsb,EAAGtb,IAE5C,IAAK,IAAI9K,KADT06B,EAAIzgB,UAAUnP,GACO3K,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,KACzDsmB,EAAEtmB,GAAK06B,EAAE16B,IAEjB,OAAOsmB,CACV,EACMylB,EAAS7xB,MAAM/X,KAAM8X,UAC/B,EACD9Z,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQosB,eAAY,EACpB,IAAIvvC,EAAS,CACTwvC,yBAAyB,GAQ7BrsB,EAAQosB,UAHR,SAAmBE,GACf,OAAOzvC,EAAOyvC,EACjB,EAEDtsB,EAAAA,QAPA,SAAoB9lB,GAChB2C,EAAS6pC,EAASA,EAAS,CAAC,EAAG7pC,GAAS3C,EAC3C,qCClBDY,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQusB,gBAAa,EACrB,IAAInF,EAASrnB,EAAQ,MACjBsnB,EAAUtnB,EAAQ,MA0BtB,SAASysB,EAAQj2B,EAASvO,EAAMykC,GACvBzkC,GAILykC,EAAaC,iBAAiBn2B,EAAQrc,QAAS8N,EAAK9N,QAASqc,EAAQo2B,UACrEF,EAAaC,iBAAiBn2B,EAAQq2B,kBAAmB5kC,EAAK4kC,kBAAmBr2B,EAAQo2B,UACzFF,EAAaC,iBAAiBn2B,EAAQs2B,QAAS7kC,EAAK6kC,QAASt2B,EAAQo2B,UAiCzE,SAA4Bp2B,EAASvO,EAAMykC,GACvC3xC,OAAOgB,KAAKya,EAAQq2B,mBAAmBpvC,SAAQ,SAAU4B,GACrD,IAAI0tC,EAAoBv2B,EAAQq2B,kBAAkBxtC,GAC9C2tC,EAAiB/kC,EAAK4kC,kBAAkBxtC,IAAQ,GACpD,IAAK0tC,GAAqBA,EAAkBrvC,SAAWsvC,EAAetvC,OAAQ,CAC1E,IAAIuvC,EAAsB,GAM1B,OALAF,EAAkBtvC,SAAQ,SAAUkE,GAChC,IAAI7E,EAASuqC,EAAO6F,UAAUvrC,EAAM+qC,EAAazC,WAAW,GAC5DgD,EAAoB9vC,KAAKL,EAC5B,SACD4vC,EAAavyC,QAAQmtC,EAAQ6F,eAAe32B,EAAQo2B,SAAUvtC,IAAQ4tC,EAEzE,CACD,IAAK,IAAIvnC,EAAI,EAAGA,EAAIqnC,EAAkBrvC,OAAQgI,GAAK,EAC/C+mC,EAAQM,EAAkBrnC,GAAIsnC,EAAetnC,GAAIgnC,EAExD,GACJ,CAhDGU,CAAmB52B,EAASvO,EAAMykC,GAClC3xC,OAAOgB,KAAKya,EAAQs2B,SAASrvC,SAAQ,SAAU4B,GAC3CotC,EAAQj2B,EAAQs2B,QAAQztC,GAAM4I,EAAK6kC,QAAQztC,GAAMqtC,EACpD,IACD3xC,OAAOgB,KAAKya,EAAQrc,SAASsD,SAAQ,SAAU4B,GACvCmX,EAAQrc,QAAQkF,KAAS4I,EAAK9N,QAAQkF,KAG1CqtC,EAAavyC,QAAQmtC,EAAQ6F,eAAe32B,EAAQo2B,SAAUvtC,IAAQmX,EAAQrc,QAAQkF,GACzF,IA3CL,SAA0BmX,EAASvO,EAAMykC,GACrC,IAAIW,EAA0B,CAAC,EAC3BC,EAAmB,CAAC,EACpBC,EAAuB,CAAC,EACxBC,EAAgB,CAAC,EACrBnG,EAAOoG,eAAej3B,EAAS62B,EAAyBC,GACxDjG,EAAOoG,eAAexlC,EAAMslC,EAAsBC,GAClDd,EAAaC,iBAAiBU,EAAyBE,EAAsB/2B,EAAQo2B,UAGrF7xC,OAAOgB,KAAKsxC,GAAyB5vC,SAAQ,SAAU4B,GAC/CguC,EAAwBhuC,KAASkuC,EAAqBluC,KAG1DqtC,EAAavyC,QAAQmtC,EAAQ6F,eAAe32B,EAAQo2B,SAAUvtC,IAAQguC,EAAwBhuC,GACjG,IACDtE,OAAOgB,KAAKuxC,GAAkB7vC,SAAQ,SAAU4B,GAC5C,IAAIquC,EAAkBJ,EAAiBjuC,GACnCsuC,EAAeH,EAAcnuC,GAC7BsuC,GAAgBD,EAAgBE,UAAYD,EAAaC,UAG7DlB,EAAazC,UAAU5qC,GAAOquC,EACjC,GACJ,CAoBGG,CAAiBr3B,EAASvO,EAAMykC,IAjB5BA,EAAavyC,QAAQqc,EAAQo2B,UAAYvF,EAAO6F,UAAU12B,EAASk2B,EAAazC,WAAW,EAkBlG,CAmBDhqB,EAAQusB,WAZR,SAAoBh2B,EAASvO,GACzB,IAAIykC,EAAe,CACfvyC,QAAS,CAAC,EACV2zC,eAAgB,GAChB7D,UAAW,CAAC,EACZ0C,iBAAkB,SAAUoB,EAAgBC,EAAatuC,IAXjE,SAA6B8W,EAASvO,EAAMvI,EAAMgtC,GAC5B3xC,OAAOgB,KAAKkM,GAAMsvB,QAAO,SAAUl4B,GAAO,OAAOtE,OAAOgB,KAAKya,GAASrY,QAAQkB,GAAO,CAAI,IAC/F5B,SAAQ,SAAU4B,GAC1BqtC,EAAavvC,KAAKmqC,EAAQ6F,eAAeztC,EAAML,GAClD,GACJ,CAOW4uC,CAAoBF,EAAgBC,EAAatuC,EAAM3C,KAAK+wC,eAC/D,GAGL,OADArB,EAAQj2B,EAASvO,EAAMykC,GAChBA,CACV,qCCnED3xC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQiuB,YAAcjuB,EAAQkuB,oBAAiB,EAC/C,IACID,EADAE,EAAapuB,EAAQ,OAEzB,SAAWkuB,GACPA,EAAYA,EAAW,OAAa,GAAK,SACzCA,EAAYA,EAAW,SAAe,GAAK,WAC3CA,EAAYA,EAAW,QAAc,GAAK,SAH9C,EAIGA,IAAgBA,EAAc,CAAC,IAClCjuB,EAAQiuB,YAAcA,EA0CtBjuB,EAAQkuB,eAzCR,SAAwB5kC,EAAS8kC,GAC7B,IAAIC,EAAe/kC,EACnB,IAAK+kC,IAAiBA,EAAalsC,KAC/B,MAAO,CACHA,KAAM8rC,EAAYK,SAG1B,GAAID,EAAalsC,OAASgsC,EAAWI,SACjC,MAAO,CACHpsC,KAAM8rC,EAAYM,SAClB3mC,MAAOymC,EAAazmC,OAG5B,IAAI4mC,EAAoBH,EAAalsC,KACrC,GAAIqsC,EAAkBC,WAAY,CAC9B,IAAIC,EAASF,EAAkBC,WAC3BE,EAAmBH,EAAkBI,iBACrCC,EAAcT,GAA0BA,EAAuBM,GAOnE,OANIG,IACAF,EAAmBE,EAAYF,iBAC3BE,EAAYvC,aACZoC,EAASG,EAAYvC,aAGtB,CACHnqC,KAAM8rC,EAAYa,OAClBC,WAAY,CACR74C,KAAMw4C,EACNM,aAAcL,EACd3E,UAAWwE,EAAkBS,eAAiB,GAC9ChF,mBAAoBuE,EAAkBU,eAAiB,CAAC,EACxD/E,sBAAuBqE,EAAkBW,iBAAmB,CAAC,EAC7D/E,iBAAkBoE,EAAkBY,kBAAoB,CAAC,GAE7DxnC,MAAOymC,EAAazmC,MAE3B,CACD,MAAO,CACHzF,KAAM8rC,EAAYK,QAEzB,mCClDDxzC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQqvB,iBAAmBrvB,EAAQsvB,0BAAuB,EA+B1DtvB,EAAQsvB,qBA9BR,SAA8B1nC,EAAO2nC,EAAcC,GAC/C,MAAgC,aAA5BD,EAAaE,YAA6BD,EACnC,CACHlD,WAAYiD,EAAaE,WACzBC,aAAa,EACbvtC,KAAM,WACNwrC,QAAS/lC,EAAMC,SACf8nC,MAAO/nC,EAAM2nC,EAAaI,QAG9B/nC,EAAM2nC,EAAanE,QACZ,CACHkB,WAAYiD,EAAaE,WACzBC,aAAa,EACbvtC,KAAM,SACNwrC,QAAS/lC,EAAM2nC,EAAanE,QAC5BuE,MAAO/nC,EAAM2nC,EAAaI,QAG9B/nC,EAAM2nC,EAAarhB,WACZ,CACHoe,WAAYiD,EAAaE,WACzBC,aAAa,EACbvtC,KAAM,YACNwrC,QAAS/lC,EAAM2nC,EAAarhB,WAC5ByhB,MAAO/nC,EAAM2nC,EAAaI,QAG3B,IACV,EAgCD3vB,EAAQqvB,iBA9BR,SAA0BznC,GACtB,OAAKA,EAAM1R,KAGP0R,EAAMsmB,UACC,CACHoe,WAAY1kC,EAAM1R,KAClBw5C,aAAa,EACbvtC,KAAM,YACNwrC,QAAS/lC,EAAMsmB,UACfyhB,MAAO/nC,EAAM+nC,OAGjB/nC,EAAMwjC,OACC,CACHkB,WAAY1kC,EAAM1R,KAClBw5C,aAAa,EACbvtC,KAAM,SACNwrC,QAAS/lC,EAAMwjC,OACfuE,MAAO/nC,EAAM+nC,OAGd,CACHrD,WAAY1kC,EAAM1R,KAClBw5C,aAAa,EACbvtC,KAAM,WACNwrC,QAAS/lC,EAAMC,SACf8nC,MAAO/nC,EAAM+nC,OAzBN,IA2Bd,qCC9DD,IAAIjJ,EAAY5pC,MAAQA,KAAK4pC,UAAa,WAStC,OARAA,EAAW5rC,OAAOmH,QAAU,SAASgf,GACjC,IAAK,IAAIoU,EAAG5vB,EAAI,EAAGsb,EAAInM,UAAUnX,OAAQgI,EAAIsb,EAAGtb,IAE5C,IAAK,IAAI9K,KADT06B,EAAIzgB,UAAUnP,GACO3K,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,KACzDsmB,EAAEtmB,GAAK06B,EAAE16B,IAEjB,OAAOsmB,CACV,EACMylB,EAAS7xB,MAAM/X,KAAM8X,UAC/B,EACD9Z,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ+pB,gBAAkB/pB,EAAQ4vB,qBAAkB,EACpD,IAAI35B,EAAQ8J,EAAQ,MAChBonB,EAAkBpnB,EAAQ,MAC1B8vB,EAAY9vB,EAAQ,MACpBsnB,EAAUtnB,EAAQ,MAClB+vB,EAAc/vB,EAAQ,MAC1B,SAAS6vB,EAAgBG,EAAeC,GACpC,IAAIhG,EAAY,GACZ4C,EAAoB,CAAC,EACrBC,EAAU,CAAC,EACX2C,GAAwB,EA+B5B,OA9BAv5B,EAAM61B,SAASjrC,IAAIkvC,EAAcnoC,MAAMC,UAAU,SAAUshC,GACvD,IAAI7/B,EAAUumC,EAAU3B,eAAe/E,EAAO4G,EAAchB,WAAW3E,kBACvE,GAAI9gC,EAAQnH,OAAS0tC,EAAU5B,YAAYK,QAM3C,GAAIhlC,EAAQnH,OAAS0tC,EAAU5B,YAAYM,SAO3C,GAAIjlC,EAAQylC,WAAWC,aAAvB,CACI,IAAIniC,EAAa+/B,EAAkBtjC,EAAQylC,WAAW74C,MACjD2W,IACDA,EAAa,GACb+/B,EAAkBtjC,EAAQylC,WAAW74C,MAAQ2W,GAGjD,IAAIojC,EAAiBC,EAAiB5mC,EAAS+9B,EAAQ6F,eAAe8C,EAAgB1mC,EAAQylC,WAAW74C,MAAQ,IAAM2W,EAAWpP,OAAS,KAC3IoP,EAAW3P,KAAK+yC,EAEnB,KAVD,CAYA,IAAIE,EAAaD,EAAiB5mC,EAAS0mC,GAC3CnD,EAAQvjC,EAAQylC,WAAW74C,MAAQi6C,CAHlC,KAjBD,CACI,IAAI7zB,EAAWwzB,EAAYT,iBAAiB/lC,EAAQ1B,OAChD0U,GACA0tB,EAAU9sC,KAAKof,EAGtB,MAXiB,OAAV6sB,QAA4B1kC,IAAV0kC,IAAiC,IAAVA,IACzCqG,GAAwB,EAyBnC,IACM,CACH3C,QAASA,EACTD,kBAAmBA,EACnB5C,UAAWA,EACXwF,sBAAuBA,EAE9B,CAED,SAASU,EAAiB5mC,EAAS7J,GAC/B,IAAIktC,EAAWrjC,EAAQylC,WAAWC,aAC5BvvC,EACA4nC,EAAQ6F,eAAeztC,EAAM6J,EAAQylC,WAAW74C,MAClDk6C,EAAkBjJ,EAAgBkJ,cAAc/mC,EAAQ1B,MAAO0B,EAAQylC,WAAW9E,mBAAoB3gC,EAAQylC,WAAW/E,WACzHsG,EAAeV,EAAgBtmC,EAASqjC,GAO5C,OANArjC,EAAQylC,WAAW/E,UAAUxsC,SAAQ,SAAU+xC,GAC3C,IAAIjzB,EAAWwzB,EAAYR,qBAAqBhmC,EAAQ1B,MAAO2nC,EAAc9vC,EAAKhC,OAAS,GAAI6yC,EAAad,uBACxGlzB,GACAg0B,EAAatG,UAAU9sC,KAAKof,EAEnC,IACM,CACHqwB,SAAUA,EACV4D,kBAAmBjnC,EAAQylC,WAAW5E,sBACtCqG,eAAgBJ,EAAgBK,SAChCv2C,QAASk2C,EAAgBl2C,QACzB8vC,UAAWsG,EAAatG,UACxB4C,kBAAmB0D,EAAa1D,kBAChCC,QAASyD,EAAazD,QAE7B,CAtBD7sB,EAAQ4vB,gBAAkBA,EA8B1B5vB,EAAQ+pB,gBAPR,SAAyB2G,EAAkB9oC,GACvC,OAAOsoC,EAAiB,CACpB/tC,KAAM0tC,EAAU5B,YAAYa,OAC5BC,WAAYrI,EAAS,CAAExwC,KAAM,GAAI84C,cAAc,GAAS0B,GACxD9oC,MAAOA,GACR,GACN,qCCzFD9M,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ2wB,kBAAoB3wB,EAAQ4wB,UAAY5wB,EAAQwtB,eAAiBxtB,EAAQitB,UAAYjtB,EAAQ6wB,YAAc7wB,EAAQ8wB,eAAY,EACvI,IA8CIA,EA9CAzJ,EAAUtnB,EAAQ,MACtB,SAASytB,EAAe/lC,EAAMspC,EAAcC,GACxCvpC,EAAKuiC,UAAUxsC,SAAQ,SAAU8e,GAC7B,GAAIA,EAASozB,YAAa,CACtB,IAAIuB,EAAe5J,EAAQ6F,eAAezlC,EAAKklC,SAAUrwB,EAASgwB,YAClEyE,EAAaz0B,EAASgwB,YAAc2E,EACpCD,EAAeC,GAAgB30B,CAClC,MAEG00B,EAAe10B,EAASgwB,YAAchwB,CAE7C,GACJ,CAED,SAAS2wB,EAAUxlC,EAAMupC,EAAgBE,GACrC,IAAI5wC,EAAS,CAAC,EAmBd,OAlBAxF,OAAOgB,KAAK2L,EAAK8oC,mBAAmB/yC,SAAQ,SAAU4B,GAClDkB,EAAOlB,GAAOqI,EAAK8oC,kBAAkBnxC,EACxC,IACDtE,OAAOgB,KAAK2L,EAAKolC,SAASrvC,SAAQ,SAAU4B,GACxCkB,EAAOlB,GAAO6tC,EAAUxlC,EAAKolC,QAAQztC,GAAM4xC,EAAgBE,EAC9D,IACDp2C,OAAOgB,KAAK2L,EAAKmlC,mBAAmBpvC,SAAQ,SAAU4B,GAClDkB,EAAOlB,GAAOqI,EAAKmlC,kBAAkBxtC,GAAKyB,KAAI,SAAUa,GAAQ,OAAOurC,EAAUvrC,EAAMsvC,EAAgBE,EAAuB,GACjI,IACIA,GACDp2C,OAAOgB,KAAK2L,EAAK+oC,gBAAgBhzC,SAAQ,SAAU4B,GAC/CkB,EAAOlB,GAAOqI,EAAK+oC,eAAepxC,EACrC,IAELtE,OAAOgB,KAAK2L,EAAKvN,SAASsD,SAAQ,SAAU4B,GACxCkB,EAAOlB,GAAOqI,EAAKvN,QAAQkF,EAC9B,IACDouC,EAAe/lC,EAAMnH,EAAQ0wC,GACtB1wC,CACV,CAED,SAASuwC,EAAYnpC,EAAMwpC,GACvB,IAAIF,EAAiB,CAAC,EAEtB,MAAO,CACHhH,UAAWgH,EACX92C,QAHU+yC,EAAUvlC,EAAMspC,EAAgBE,GAKjD,CASD,SAASP,EAAkB1+B,EAAKxS,GAC5B,IAAIL,EAAMK,EAAKu1B,QACf,OAAK51B,EAMD6S,aAAenX,QAAUA,OAAOgB,KAAKmW,GAAK5P,SAASjD,GAC5CuxC,EAAkB1+B,EAAI7S,GAAMK,QADvC,EALW,CACHzE,MAAOiX,EACP9P,KAAM2uC,EAAUK,OAO3B,CApDDnxB,EAAQwtB,eAAiBA,EAuBzBxtB,EAAQitB,UAAYA,EASpBjtB,EAAQ6wB,YAAcA,EAEtB,SAAWC,GACPA,EAAUA,EAAS,OAAa,GAAK,SACrCA,EAAUA,EAAS,QAAc,GAAK,UACtCA,EAAUA,EAAS,MAAY,GAAK,OAHxC,EAIGA,IAAcA,EAAY,CAAC,IAC9B9wB,EAAQ8wB,UAAYA,EAcpB9wB,EAAQ2wB,kBAAoBA,EA2C5B3wB,EAAQ4wB,UA1CR,SAASA,EAAUnpC,EAAMhI,GACrB,IAAIvJ,EAAOuJ,EAAKu1B,QAChB,IAAK9+B,EACD,MAAO,CACH8E,MAAO61C,EAAYppC,GAAM,GAAMvN,QAC/BiI,KAAM2uC,EAAUM,SAGxB,IAAIC,EAAahK,EAAQiK,gBAAgBp7C,GACzC,GAAIm7C,EAAWn7C,QAAQuR,EAAKvN,QAIxB,OAAOy2C,EAHOU,EAAW1C,iBACnBlnC,EAAKvN,QAAQm3C,EAAWn7C,MAAMm7C,EAAWpzC,OACzCwJ,EAAKvN,QAAQm3C,EAAWn7C,MACIuJ,GAEtC,GAAI4xC,EAAW1C,iBAAkB,CAC7B,IAAI9hC,EAAapF,EAAKmlC,kBAAkByE,EAAWn7C,MACnD,IAAK2W,EACD,OAEJ,IAAInL,EAAOmL,EAAWwkC,EAAWpzC,OACjC,IAAKyD,EACD,OAEJ,OAAOkvC,EAAUlvC,EAAMjC,EAC1B,CACD,IAAI0pC,EAAQ1hC,EAAKolC,QAAQwE,EAAWn7C,MACpC,GAAIizC,EACA,OAAOyH,EAAUzH,EAAO1pC,GAE5B,IAAI8xC,EAAkB9pC,EAAKmlC,kBAAkByE,EAAWn7C,MACxD,GAAIq7C,EAAiB,CACjB,GAAoB,IAAhB9xC,EAAKhC,OACL,OAEJ,MAAO,CACHzC,MAAOu2C,EAAgB1wC,KAAI,SAAUa,GAAQ,OAAOurC,EAAUvrC,EAAM,CAAC,GAAG,EAAQ,IAChFS,KAAM2uC,EAAUnvC,MAEvB,CAEJ,mCC9GD7G,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQwxB,cAAgBxxB,EAAQjF,KAAOiF,EAAQsxB,gBAAkBtxB,EAAQktB,oBAAiB,EAQ1FltB,EAAQktB,eAPR,WAEI,IADA,IAAIxyC,EAAO,GACF2X,EAAK,EAAGA,EAAKuC,UAAUnX,OAAQ4U,IACpC3X,EAAK2X,GAAMuC,UAAUvC,GAEzB,OAAO3X,EAAK48B,QAAO,SAAUt8B,GAAS,OAAOA,CAAQ,IAAEuO,KAAK,IAC/D,EAgBDyW,EAAQsxB,gBAdR,SAAyBp7C,GACrB,IAAIu7C,EAAQv7C,EAAKiJ,MAAM,KACvB,OAAqB,IAAjBsyC,EAAMh0C,OACC,CACHkxC,kBAAkB,EAClBz4C,KAAMA,GAGP,CACHy4C,kBAAkB,EAClBz4C,KAAMu7C,EAAM,GACZxzC,MAAOu3B,OAAOic,EAAM,GAAG5vC,MAAM,GAAI,IAExC,EASDme,EAAQjF,KAPG,WACP,IAAIvjB,EAAIC,EACJujB,EAA0I,QAApIvjB,EAAiF,QAA3ED,EAAgB,OAAXT,aAA8B,IAAXA,YAAoB,EAASA,OAAOwjB,iBAA8B,IAAP/iB,OAAgB,EAASA,EAAGk6C,iBAA8B,IAAPj6C,EAAgBA,EAAK,GACvKk6C,EAAO32B,EAAG9c,QAAQ,QAClB0zC,EAAU52B,EAAG9c,QAAQ,YACzB,OAAQyzC,EAAO,GAAKC,EAAU,CACjC,EAQD5xB,EAAQwxB,cANY,SAAUK,EAAOC,GACjC,OAAIh3C,OAAOgB,KAAK+1C,GAAOp0C,SAAW3C,OAAOgB,KAAKg2C,GAAQr0C,QAG/C3C,OAAOgB,KAAK+1C,GAAOlP,OAAM,SAAUvjC,GAAO,OAAOyyC,EAAMzyC,KAAS0yC,EAAO1yC,EAAO,GACxF,qCCtCDtE,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ+xB,sBAAmB,EAC3B,IAAI97B,EAAQ8J,EAAQ,MAChB8mB,EAAS9mB,EAAQ,MACjBiyB,EAAYjyB,EAAQ,MACpBkyB,EAAqBlyB,EAAQ,MAC7ByrB,EAAmBzrB,EAAQ,MA2D/BC,EAAQ+xB,iBAvDR,SAA0BG,EAAuB5G,EAAgBqE,GAC7D,IAAIwC,EAAoB,IAAIH,EAAUI,aACtC,MAAO,CACHhH,OAAQ,SAAUh0C,GACd,IAPWkS,EAUP+oC,EAHAhuC,GAPOiF,EAOmBlS,EAAKiN,WAN5B3N,IAAM4S,EAAQ5S,IAAI,GAAK4S,EAO1BlK,EAAM,CAAEkzC,KAAMl7C,EAAKm7C,MAAOC,KAAMnuC,GAChCouC,EAAiBN,EAAkBz7C,IAAI0I,GAEvCszC,EAAY,WACZpH,EAAeqH,kBAAkBN,GAAY,GAC7CF,EAAkBxvC,OAAOvD,EAC5B,EAwCD,OA7BIqzC,EACAJ,EAAaI,GAGbJ,EAAa1C,EAAQA,EAAMv4C,EAAKm7C,OAAS,cAAgBP,EAAUY,kBAChDnuC,IAAfrN,EAAKm7C,OACLJ,EAAkBl8C,IAAImJ,EAAKizC,IAf3BhuC,EAAUwuC,WAAaC,KAAKC,cAC5BlM,EAAOmM,IAAI3uC,EAAWmnC,EAAiB7E,gBAAiB+L,GAkBhEpH,EAAeT,IAAIwH,GAAY,WAC3B,IAAIzqC,EAAQ,CACRxQ,KAAMA,EAAKm7C,MACXt0C,MAAO7G,EAAK6G,OAEZg1C,EAAkBf,IACtB,OAAOj8B,EAAM9Q,cAAc8sC,EAAmBiB,gBAAiB,CAC3DvF,QAASsF,EAAgBrrC,GACzBvD,UAAWA,EACXquC,UAAWA,EACXS,WAAY,WACR,IAAI37C,EAzBR6M,EAAUwuC,WAAaC,KAAKC,cAC5BlM,EAAOuM,IAAI/uC,EAAWmnC,EAAiB7E,gBAAiB+L,GA0BpDpH,EAAeqH,kBAAkBN,GAAY,GAClB,QAA1B76C,EAAKJ,EAAKi8C,kBAA+B,IAAP77C,GAAyBA,EAAG+D,KAAKnE,EACvE,EACDgI,IAAKizC,GAEZ,IACMhuC,CACV,EAER,qCChED,IAAIgiC,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQgsB,wBAAqB,EAC7B,IACIA,EAAoC,SAAU1E,GAE9C,SAAS0E,IACL,OAAkB,OAAX1E,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CAUD,OAbAupC,EAAU2F,EAAoB1E,GAI9B0E,EAAmBlnC,UAAUwjC,kBAAoB,WAC7C,IAAI4D,EAAYpvC,KAAK8K,MAAMskC,UACvBA,EACAA,EAAUpvC,KAAK+qC,eAGf/qC,KAAK+qC,eAEZ,EACMmE,CACV,CAfuC,CADjBjsB,EAAQ,MAgBZ6mB,eACnB5mB,EAAQgsB,mBAAqBA,mCClC7BlxC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQszB,sBAAwBtzB,EAAQoyB,aAAepyB,EAAQ4yB,gBAAa,EAI5E5yB,EAAQ4yB,WAHR,WACI,OAAOvsC,KAAKqZ,SAAStlB,SAAS,IAAI0H,OAAO,EAC5C,EAED,IAAIswC,EAA8B,WAC9B,SAASA,IACLt1C,KAAKy2C,KAAO,IAAIv9C,GACnB,CA0BD,OAzBAo8C,EAAattC,UAAU7O,IAAM,SAAUuB,EAAIwD,GACvC,IAAIs3C,EAAO96C,EAAG86C,KAAME,EAAOh7C,EAAGg7C,KAC1BgB,EAAW12C,KAAKy2C,KAAK78C,IAAI47C,GACxBkB,IACDA,EAAW,IAAIx9C,IACf8G,KAAKy2C,KAAKt9C,IAAIq8C,EAAMkB,IAExBA,EAASv9C,IAAIu8C,EAAMx3C,EACtB,EACDo3C,EAAattC,UAAUpO,IAAM,SAAUc,GACnC,IAAI86C,EAAO96C,EAAG86C,KAAME,EAAOh7C,EAAGg7C,KAC1BgB,EAAW12C,KAAKy2C,KAAK78C,IAAI47C,GAC7B,OAAOkB,EAAWA,EAAS98C,IAAI87C,QAAQ/tC,CAC1C,EACD2tC,EAAattC,UAAUnC,OAAS,SAAUnL,GACtC,IAAI86C,EAAO96C,EAAG86C,KAAME,EAAOh7C,EAAGg7C,KAC1BgB,EAAW12C,KAAKy2C,KAAK78C,IAAI47C,GACxBkB,IAGLA,EAAS7wC,OAAO6vC,GACM,IAAlBgB,EAAS7oC,MACT7N,KAAKy2C,KAAK5wC,OAAO2vC,GAExB,EACMF,CACV,CA9BiC,GA+BlCpyB,EAAQoyB,aAAeA,EAOvBpyB,EAAQszB,sBANR,SAA+B7vC,GAC3B,OAAIA,EAAKhG,OACE,GAAKgG,EAAK,GAAG+/B,cAAgB//B,EAAK3B,OAAO,GAE7C,EACV,qCC3CD,IAAIukC,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtD,IAAIib,EAAQ8J,EAAQ,MAChB8vB,EAAY9vB,EAAQ,MACpB0zB,EAA8B,SAAUnM,GAExC,SAASmM,IACL,OAAkB,OAAXnM,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CASD,OAZAupC,EAAUoN,EAAcnM,GAIxBmM,EAAa3uC,UAAUsmC,OAAS,WAC5B,IAAIsI,EAAgB52C,KAAK8K,MAAMC,SAC3BA,EAAWoO,EAAM61B,SAASjrC,IAAI6yC,GAAe,SAAUvK,GAEvD,OADuB0G,EAAU3B,eAAe/E,GACxBhnC,OAAS0tC,EAAU5B,YAAYa,OAAS3F,EAAQ,IAC3E,IACD,OAAOlzB,EAAM9Q,cAAc8Q,EAAMV,SAAU,CAAC,EAAG1N,EAClD,EACM4rC,CACV,CAdiC,CAchCx9B,EAAMs1B,eACRvrB,EAAAA,QAAkByzB,qCCjClB34C,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQooB,eAAiBpoB,EAAQ+oB,eAAiB/oB,EAAQgpB,sBAAmB,EAE7E,IAAI2K,EAAa5zB,EAAQ,MACrBqnB,EAASrnB,EAAQ,MACjBsnB,EAAUtnB,EAAQ,MAClBiyB,EAAYjyB,EAAQ,MACpB6zB,EAAkB,IAAI/3C,IACtBg4C,GAAuB,EAC3B,SAAS7K,IACL5W,aAAayhB,EAChB,CAED,SAAS9K,IACLC,IACA6K,EAAsB98C,OAAOs7B,YAAW,WACpCuhB,EAAgBp2C,SAAQ,SAAUs2C,GAAiB,OAAOA,EAAcC,YAAe,GAC1F,GACJ,CAND/zB,EAAQgpB,iBAAmBA,EAO3BhpB,EAAQ+oB,eAAiBA,EACzB,IAAIX,EAAgC,WAChC,SAASA,EAAe4L,GACpBl3C,KAAKm3C,OAAS,CAAC,EACfn3C,KAAKo3C,YAAa,EAClBp3C,KAAKk3C,iBAAmBA,EACxBJ,EAAgB/I,IAAI/tC,MACpBA,KAAKgtC,gBAAkBhtC,KAAKgtC,gBAAgBlwC,KAAKkD,MACjDA,KAAKq3C,gBAAkBr3C,KAAKq3C,gBAAgBv6C,KAAKkD,KACpD,CAsLD,OArLAsrC,EAAetjC,UAAU4kC,YAAc,SAAU7D,EAAUhpC,EAAQ8sC,EAAqBC,GACpF9sC,KAAK+oC,SAAWA,EAChB/oC,KAAKs3C,cAAgBv3C,EACrBC,KAAK6sC,oBAAsB,IAAI9tC,IAAI8tC,GACnC7sC,KAAK8sC,kBAAoB,IAAI/tC,IAAI+tC,EACpC,EACDxB,EAAetjC,UAAU0kC,kBAAoB,SAAU6K,GACnD,IAAIxwC,EAAQ/G,KACRD,EAASuqC,EAAOyJ,YAAYwD,GAAU,GAC1Cv5C,OAAOgB,KAAKe,EAAOmtC,WAAWxsC,SAAQ,SAAU4B,GAC5CyE,EAAMmwC,iBAAiBnJ,IAAIzrC,EAAKvC,EAAOmtC,UAAU5qC,GACpD,IACD,IAAIlF,EAAU,CAAC,EASf,OARAY,OAAOgB,KAAKe,EAAO3C,SAASsD,SAAQ,SAAU4B,GAC1ClF,EAAQkF,GAAOyE,EAAMswC,gBAAgB/0C,EAAKvC,EAAO3C,QAAQkF,GAC5D,IACGtC,KAAKk3C,iBAAiBM,eAAiB,IACvCp6C,EAAQq6C,mBAAqB,CACzBvK,UAAWltC,KAAKk3C,iBAAiBhK,YAGlC9vC,CACV,EACDkuC,EAAetjC,UAAUgkC,OAAS,SAAUjsC,GACxC,IAAIgH,EAAQ/G,KACR03C,EAAiB,GACjBC,EAAuB,SAAUj9C,GACjC,IAAIwD,EAAQxD,EAAGwD,MAAO2xC,EAAWn1C,EAAGm1C,SACpC6H,EAAet3C,KAAK,CAACyvC,EAAU3xC,GAClC,EACD8B,KAAK+oC,SAASgE,GAAG,gBAAiB4K,GAClC,IAAIC,EAAUf,EAAWpH,WAAW1vC,EAAQC,KAAKs3C,gBAC5CM,EAAQx6C,SAAYw6C,EAAQ1K,WAAc0K,EAAQ7G,eAAepwC,UAGtEX,KAAK+oC,SAAS8O,cACd73C,KAAKo3C,YAAa,EAClBQ,EAAQ7G,eAAerwC,SAAQ,SAAU8uC,GACrCzoC,EAAM+wC,YAAYtI,EACrB,IACDxxC,OAAOgB,KAAK44C,EAAQ1K,WAAWxsC,SAAQ,SAAU4B,GAC7CyE,EAAMmwC,iBAAiBnJ,IAAIzrC,EAAKs1C,EAAQ1K,UAAU5qC,GACrD,IACGtC,KAAKk3C,iBAAiBM,eAAiB,GACvCx3C,KAAK4oC,SAAS,qBAAsB,CAChCsE,UAAWltC,KAAKk3C,iBAAiBhK,YAGzClvC,OAAOgB,KAAK44C,EAAQx6C,SAASsD,SAAQ,SAAU4B,GAC3CyE,EAAM6hC,SAAStmC,EAAKs1C,EAAQx6C,QAAQkF,GACvC,IACDtC,KAAKo3C,YAAa,EAClBp3C,KAAK+oC,SAASuN,IAAI,gBAAiBqB,GACnC33C,KAAKs3C,cAAgBv3C,EACrB23C,EAAeh3C,SAAQ,SAAUhG,GAC7B,IAAItB,EAAOsB,EAAG,GAAIwD,EAAQxD,EAAG,GACzBq9C,EAAmBh4C,EAAO3C,QAAQhE,GAClC4E,OAAOgK,UAAU6X,eAAephB,KAAKsB,EAAO3C,QAAShE,IAClD2+C,IAAqB75C,GACxB6I,EAAM6hC,SAASxvC,EAAM2+C,EAE5B,IACD/3C,KAAK+oC,SAASiP,YACjB,EACD1M,EAAetjC,UAAUglC,gBAAkB,SAAU/jC,GACjD,IACIvO,EADAqM,EAAQ/G,KAEZ,IAAIA,KAAKo3C,WAAT,CAGA,IAAIa,EAAkB3N,EAAOwJ,UAAU9zC,KAAKs3C,cAAeruC,EAAE4mC,SAASxtC,MAAM,MAK5E,GAJK41C,GAAmBA,EAAgB/5C,QAAU+K,EAAE/K,OAChD8B,KAAKk4C,wBAAwBjvC,EAAE4mC,SAAU5mC,EAAE/K,OAE/C+5C,EAAkB3N,EAAOwJ,UAAU9zC,KAAKs3C,cAAeruC,EAAE4mC,SAASxtC,MAAM,MACxE,CAGA,IAAInE,EAAQ+5C,EAAgB/5C,MAAOmH,EAAO4yC,EAAgB5yC,KAC1D,GAAInH,aAAiB2G,OAASQ,IAASilC,EAAO0J,UAAUnvC,OACpD,IAAK,IAAI8D,EAAI,EAAGA,EAAIzK,EAAMyC,OAAQgI,GAAK,EACnC,GAAIzK,EAAMyK,MAA2B,QAAlBjO,EAAKuO,EAAE/K,aAA0B,IAAPxD,OAAgB,EAASA,EAAGiO,IAErE,YADA3I,KAAKm4C,SAASlvC,EAAE4mC,SAAU3xC,QAKjC,GAAImH,IAASilC,EAAO0J,UAAUM,SAAWp2C,aAAiBF,OAC3DA,OAAOgB,KAAKd,GAAOwC,SAAQ,SAAU4B,GACjC,IAAI5H,EACAwD,EAAMoE,MAA6B,QAAlB5H,EAAKuO,EAAE/K,aAA0B,IAAPxD,OAAgB,EAASA,EAAG4H,KAG3EyE,EAAMoxC,SAAS5N,EAAQ6F,eAAennC,EAAE4mC,SAAUvtC,GAAMpE,EAAMoE,GACjE,QAEA,CACD,IAAI81C,EAAiBl6C,IAAU+K,EAAE/K,MAC7Bm6C,GAAyBD,GACtBl6C,aAAiBF,QACjBiL,EAAE/K,iBAAiBF,QACnBusC,EAAQmK,cAAcx2C,EAAO+K,EAAE/K,OACtC,GAAIk6C,GAAkBC,GAAyBr4C,KAAK+oC,SAASuP,oBACzD,OAEJt4C,KAAKm4C,SAASlvC,EAAE4mC,SAAU3xC,EAC7B,CA7BA,CARA,CAsCJ,EACDotC,EAAetjC,UAAUukC,QAAU,WAC/B,IAAIxlC,EAAQ/G,KACZ82C,EAAgBjxC,OAAO7F,MACvBhC,OAAOgB,KAAKgB,KAAKm3C,QAAQz2C,SAAQ,SAAU8uC,UAChCzoC,EAAMowC,OAAO3H,EACvB,GACJ,EACDlE,EAAetjC,UAAUuwC,qBAAuB,SAAU/I,GACtD,OAAOxvC,KAAK6sC,oBAAoBlzC,IAAI61C,EACvC,EACDlE,EAAetjC,UAAUwwC,mBAAqB,SAAUhJ,GACpD,OAAOxvC,KAAK8sC,kBAAkBnzC,IAAI61C,EACrC,EACDlE,EAAetjC,UAAUkwC,wBAA0B,SAAU1I,EAAYiJ,GACrE,GAAKz4C,KAAKu4C,qBAAqB/I,GAA/B,CAGA,IAAImF,EAAQnF,EAAWntC,MAAM,KACzByU,EAAW69B,EAAMA,EAAMh0C,OAAS,GACpC,IAAImW,EAAS4hC,WAAW,MAAxB,CAGA,IAAIl6C,EAAY,KAAO02C,EAAUsB,sBAAsB1/B,GAAY,SACnE69B,EAAMA,EAAMh0C,OAAS,GAAKnC,EAC1B,IAAIm6C,EAAcrO,EAAOwJ,UAAU9zC,KAAKs3C,cAAe3C,GACvD,GAAKgE,EAAL,CAGA,GAAiC,oBAAtBA,EAAYz6C,MACnB,MAAM,IAAI3D,MAAM,yBAA2BiE,EAAY,+BAAiCA,EAAY,wBAExGm6C,EAAYz6C,MAAMu6C,EAJjB,CANA,CALA,CAgBJ,EACDnN,EAAetjC,UAAUqvC,gBAAkB,SAAUj+C,EAAM8E,GACvD,IAAI6I,EAAQ/G,KACZ,MAA0B,OAAtB5G,EAAK4L,OAAO,EAAG,IAAgC,oBAAV9G,EAC9B,WAEH,IADA,IAAIN,EAAO,GACF2X,EAAK,EAAGA,EAAKuC,UAAUnX,OAAQ4U,IACpC3X,EAAK2X,GAAMuC,UAAUvC,GAEpBxO,EAAMqwC,aAAcrwC,EAAMyxC,mBAAmBp/C,IAC9C8E,EAAM6Z,WAAM,EAAQna,EAE3B,EAEEM,CACV,EACDotC,EAAetjC,UAAUmwC,SAAW,SAAU3I,EAAYiJ,GACtD,IAAI1xC,EAAQ/G,KACZ,QAAgC2H,IAA5B3H,KAAKm3C,OAAO3H,GAAhB,CAOAxvC,KAAKm3C,OAAO3H,GAJE,WACVzoC,EAAM6hC,SAAS4G,EAAYiJ,UACpB1xC,EAAMowC,OAAO3H,EACvB,EAEDvD,GANC,CAOJ,EACDX,EAAetjC,UAAUivC,WAAa,WAClCj5C,OAAO23B,OAAO31B,KAAKm3C,QACdz2C,SAAQ,SAAUI,GAAW,OAAOA,GAAY,GACxD,EACDwqC,EAAetjC,UAAU8vC,YAAc,SAAU1+C,GAC7C4G,KAAK+oC,SAAS+O,YAAY1+C,EAC7B,EACDkyC,EAAetjC,UAAU4gC,SAAW,SAAUxvC,EAAM8E,GAC5C8B,KAAKm3C,OAAO/9C,WACL4G,KAAKm3C,OAAO/9C,GAEvB4G,KAAK+oC,SAAS4D,OAAOvzC,EAAM4G,KAAKq3C,gBAAgBj+C,EAAM8E,GACzD,EACMotC,CACV,CA/LmC,GAgMpCpoB,EAAQooB,eAAiBA,qCCpNzB,IAAI/B,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQkzB,qBAAkB,EAC1B,IAKIwC,EALA7O,EAAS9mB,EAAQ,MACjB9J,EAAQ8J,EAAQ,MAChB41B,EAAW51B,EAAQ,MACnByrB,EAAmBzrB,EAAQ,MAC3B61B,EAAuB,CAAEloB,QAAS,SAEtC,SAAWgoB,GACPA,EAAc,MAAY,QAC1BA,EAAc,MAAY,IAF9B,EAGGA,IAAmBA,EAAiB,CAAC,IACxC,IAAIxC,EAAiC,SAAU5L,GAE3C,SAAS4L,EAAgBtrC,GACrB,IAAI/D,EAAQyjC,EAAO/rC,KAAKuB,KAAM8K,IAAU9K,KAKxC,OAJA+G,EAAMgyC,oBAAsB5/B,EAAM6/B,YAClCjyC,EAAM2hC,MAAQ,CAAEuQ,yBAAyB,GACzClyC,EAAMmyC,YAAcnyC,EAAMmyC,YAAYp8C,KAAKiK,GAC3CA,EAAMoyC,uBAAyBpyC,EAAMoyC,uBAAuBr8C,KAAKiK,GAC1DA,CACV,CAmED,OA3EAwiC,EAAU6M,EAAiB5L,GAS3B4L,EAAgBpuC,UAAUwjC,kBAAoB,WAC1C,IAAI9wC,EAAIC,EACRqF,KAAKo5C,qBACmC,QAAvCz+C,GAAMD,EAAKsF,KAAK8K,OAAOurC,kBAA+B,IAAP17C,GAAyBA,EAAG8D,KAAK/D,EACpF,EACD07C,EAAgBpuC,UAAU6jC,mBAAqB,WAC3C7rC,KAAKo5C,oBACR,EACDhD,EAAgBpuC,UAAUmkC,qBAAuB,WAE7C,IAAIxhC,EAAO3K,KAAKwM,QACZ6sC,EAAar5C,KAAKs5C,cAClB/xC,EAAYvH,KAAK8K,MAAMvD,UACvBoD,GACApD,EAAUgB,YAAYoC,GAEtB0uC,GACA9xC,EAAUgB,YAAY8wC,GAEtBr5C,KAAKu5C,kBACLhyC,EAAUgB,YAAYvI,KAAKu5C,iBAElC,EACDv7C,OAAOC,eAAem4C,EAAgBpuC,UAAW,mBAAoB,CACjEpO,IAAK,WACD,OAAOoG,KAAK+4C,oBAAoBt/B,OACnC,EACDgK,YAAY,EACZrlB,cAAc,IAElBg4C,EAAgBpuC,UAAUmxC,uBAAyB,SAAUxuC,GACzD3K,KAAKs5C,cAAgB3uC,EACrB3K,KAAKwM,QAAmB,OAAT7B,QAA0B,IAATA,OAAkB,EAASA,EAAK6uC,eACnE,EACDpD,EAAgBpuC,UAAUoxC,mBAAqB,WAC3C,IAAIzuC,EAAO3K,KAAKwM,QACZysC,EAA0Bj5C,KAAK0oC,MAAMuQ,wBACrCtuC,GAAQA,EAAKorC,WAAaC,KAAKC,aAC/Bj2C,KAAKy5C,2BAA2B9uC,GAG/BsuC,EAIDj5C,KAAKu5C,kBACLv5C,KAAKy5C,2BAA2Bz5C,KAAKu5C,kBAJrCv5C,KAAK05C,SAAS,CAAET,yBAAyB,GAMhD,EACD7C,EAAgBpuC,UAAUyxC,2BAA6B,SAAUjtC,GAC7Du9B,EAAOuM,IAAI9pC,EAASkiC,EAAiB7E,gBAAiB7pC,KAAKk5C,aAC3DnP,EAAOmM,IAAI1pC,EAASkiC,EAAiB7E,gBAAiB7pC,KAAKk5C,YAC9D,EACD9C,EAAgBpuC,UAAUkxC,YAAc,YAEpCtD,EADgB51C,KAAK8K,MAAM8qC,YAE9B,EACDQ,EAAgBpuC,UAAUsmC,OAAS,WAC/B,IAAI2K,EAA0Bj5C,KAAK0oC,MAAMuQ,wBACrCv+C,EAAKsF,KAAK8K,MAAO+lC,EAAUn2C,EAAGm2C,QAAStpC,EAAY7M,EAAG6M,UACtDoyC,EAAkBV,EAChB9/B,EAAM9Q,cAAc,OAAQ,CAAEyuB,MAAOgiB,EAAsB7nC,IAAKjR,KAAK+4C,2BACrEpxC,EACFiyC,EAAWhB,EAAerxC,EAAUqyC,WAAa,MACrD,OAAOf,EAASxK,aAAal1B,EAAM9Q,cAAc8Q,EAAMV,SAAU,KAAMo4B,EAASA,GAAW13B,EAAM9Q,cAAcuxC,EAAU,CAAE9iB,MAAO,CAAElG,QAAS,QAAU3f,IAAKjR,KAAKm5C,yBAA2BQ,GAAkBpyC,EACjN,EACM6uC,CACV,CA7EoC,CA6EnCj9B,EAAMs1B,eACRvrB,EAAQkzB,gBAAkBA,qCCzG1B,IAAI7M,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ22B,UAAY32B,EAAQuuB,cAAW,EACvC,IAAIqI,EAAY72B,EAAQ,MAEpBwuB,EAA0B,SAAUjH,GAEpC,SAASiH,IACL,OAAkB,OAAXjH,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CAID,OAPAupC,EAAUkI,EAAUjH,GAIpBiH,EAASzpC,UAAUsmC,OAAS,WACxB,OAAO,IACV,EACMmD,CACV,CAT6B,CADlBxuB,EAAQ,MAUZwrB,eACRvrB,EAAQuuB,SAAWA,EACnB,IAAIsI,EAAqB,SAAUjvC,GAC/B,OAAKA,EAAMsmB,WAActmB,EAAMwjC,QAAWxjC,EAAMC,SAGzC,KAFI,IAAIxQ,MAAM,mEAGxB,EACDk3C,EAASvS,UAAY,CACjB9lC,KAAM0gD,EAAU1kC,OAAO4kC,WACvB5oB,UAAW2oB,EACXzL,OAAQyL,EACRhvC,SAAUgvC,GAcd72B,EAAQ22B,UAZR,SAAmBxN,GACf,GAAIA,EAAMhnC,OAASosC,EAGnB,MAAO,CACHr4C,KAAMizC,EAAMvhC,MAAM1R,KAClBk1C,OAAQjC,EAAMvhC,MAAMwjC,OACpBld,UAAWib,EAAMvhC,MAAMsmB,UACvBrmB,SAAUshC,EAAMvhC,MAAMC,SACtB8nC,MAAOxG,EAAMvhC,MAAM+nC,MAE1B,qCCrDD70C,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtD,IAAIib,EAAQ8J,EAAQ,MAChBg3B,EAAWh3B,EAAQ,MACnBi3B,EAAgBj3B,EAAQ,MAC5B,SAASk3B,EAAervC,GACpB,GAAImvC,EAAS3K,UAAU,2BAA4B,CAC/C,IAAImG,EAAQ3qC,EAAMxQ,KAIlB,OAHIm7C,GAASz3C,OAAOgK,UAAU6X,eAAephB,KAAKg3C,EAAO,SACrDA,EAAM2E,MAAQ3E,EAAMnzC,KAEjBmzC,CACV,CACD,OAAO3qC,CACV,CACD,IAAIuvC,EAAkB,CAClBjpB,UAAW,SAAUkpB,GAAiB,OAAO,SAAUxvC,GAEnD,OADAA,EAAQqvC,EAAervC,GAChBqO,EAAM9Q,cAAcvL,KAAK,KAAMw9C,IAA/BnhC,CAAgDrO,EAC1D,CAAG,EACJwjC,OAAQ,SAAUgM,GAAiB,OAAO,SAAUxvC,GAEhD,OADAqvC,EAAervC,GACRwvC,IAAgBxvC,EAAMxQ,KAAMwQ,EAAM3J,MAC5C,CAAG,EACJ4J,SAAU,SAAUuvC,GAAiB,OAAO,WAAc,OAAOA,GAAkB,CAAG,GAEtFC,EAAkC,WAClC,SAASA,EAAiB/L,GACtBxuC,KAAKw6C,WAAa,CAAC,EACnBx6C,KAAKy6C,kBAAoB,CAAC,EAC1Bz6C,KAAKgrC,gBAAkBwD,CAC1B,CAsBD,OArBA+L,EAAiBvyC,UAAU+lC,IAAM,SAAU30C,EAAMomB,GAC7C,IAAIzY,EAAQ/G,KACZA,KAAKy6C,kBAAkBrhD,GAAQomB,EAASqxB,QACxC,IAAI6J,EAAiBL,EAAgB76B,EAASna,MACzCvI,KAAKkD,MAAM,WAAc,OAAO+G,EAAM0zC,kBAAkBrhD,EAAQ,IACrE4G,KAAKw6C,WAAWphD,GAAQ8gD,EAAcjF,iBAAiByF,EAAgB16C,KAAKgrC,gBAAiBxrB,EAASqzB,MACzG,EACD70C,OAAOC,eAAes8C,EAAiBvyC,UAAW,iBAAkB,CAChEpO,IAAK,WACD,OAAOoE,OAAOgB,KAAKgB,KAAKw6C,YAAY75C,MACvC,EACD8iB,YAAY,EACZrlB,cAAc,IAElBJ,OAAOC,eAAes8C,EAAiBvyC,UAAW,YAAa,CAC3DpO,IAAK,WACD,OAAOoG,KAAKw6C,UACf,EACD/2B,YAAY,EACZrlB,cAAc,IAEXm8C,CACV,CA5BqC,GA6BtCr3B,EAAAA,QAAkBq3B,qCCtDlB,IAAIhR,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQqrB,uBAAoB,EAC5B,IAAIoM,EAAU13B,EAAQ,MAClB23B,EAAW33B,EAAQ,KACnB9J,EAAQ8J,EAAQ,MAChBsrB,EAAmC,SAAU/D,GAE7C,SAAS+D,IACL,IAAIxnC,EAAmB,OAAXyjC,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,KAKhE,OAJA+G,EAAM8zC,iBAAkB,EACxB9zC,EAAM+zC,SAAU,EAChB/zC,EAAMg0C,yBAA0B,EAChCh0C,EAAMi0C,sBAAuB,EACtBj0C,CACV,CAmCD,OA3CAwiC,EAAUgF,EAAmB/D,GAS7B+D,EAAkBvmC,UAAUwjC,kBAAoB,WAC5CxrC,KAAK86C,SAAU,CAClB,EACDvM,EAAkBvmC,UAAUmkC,qBAAuB,WAC/CnsC,KAAK86C,SAAU,CAClB,EACDvM,EAAkBvmC,UAAUmjC,eAAiB,SAAU8P,EAAgB1E,GACnE,IAAIxvC,EAAQ/G,KACRA,KAAK66C,gBACL76C,KAAK+6C,wBAA0B/6C,KAAKg7C,sBAGxCh7C,KAAK66C,iBAAkB,GACNI,EAAiBL,EAASM,YAAcP,EAAQQ,wBACtD,WACHp0C,EAAM+zC,UACN/zC,EAAMi0C,sBAAuB,EAC7Bj0C,EAAMonC,aAAY,WACdpnC,EAAM8zC,iBAAkB,EACT,OAAftE,QAAsC,IAAfA,GAAiCA,IACpDxvC,EAAMg0C,0BACNh0C,EAAMg0C,yBAA0B,EAChCh0C,EAAMonC,cAEb,KAELpnC,EAAMi0C,sBAAuB,EAC7Bj0C,EAAM8zC,iBAAkB,CAC3B,IACJ,EACDtM,EAAkBvmC,UAAUsmC,OAAS,WACjC,IAAIE,EAAiBxuC,KAAK8K,MAAM0jC,eAChC,OAAOr1B,EAAM9Q,cAAc8Q,EAAMV,SAAU,CAAC,EAAG+1B,EAAe4M,iBACjE,EACM7M,CACV,CA7CsC,CA6CrCp1B,EAAMs1B,eACRvrB,EAAQqrB,kBAAoBA,mCClE5BvwC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ+nB,oBAAiB,EACzB,IAAIA,EAAgC,WAChC,SAASA,EAAeoQ,GACpBr7C,KAAKw6C,WAAa,CAAC,EACnBx6C,KAAKs7C,iBAAmBD,CAC3B,CA2BD,OA1BApQ,EAAejjC,UAAU+lC,IAAM,SAAUwH,EAAYgG,GACjDv7C,KAAKw6C,WAAWjF,GAAc,CAAE/1B,SAAU+7B,EAAcC,kBAAkB,GAC1Ex7C,KAAKs7C,kBACR,EACDrQ,EAAejjC,UAAU6tC,kBAAoB,SAAUN,EAAYiG,GAC3Dx7C,KAAKw6C,WAAWjF,KAChBv1C,KAAKw6C,WAAWjF,GAAYiG,iBAAmBA,EAEtD,EACDvQ,EAAejjC,UAAUyzC,uBAAyB,WAC9C,IAAI10C,EAAQ/G,KACZhC,OAAOyG,QAAQzE,KAAKw6C,YACfhgB,QAAO,SAAU9/B,GAElB,OADmBA,EAAG,GACD8gD,gBACxB,IACI96C,SAAQ,SAAUhG,GACnB,IAAI66C,EAAa76C,EAAG,UACbqM,EAAMyzC,WAAWjF,EAC3B,GACJ,EACDtK,EAAejjC,UAAUozC,eAAiB,WACtC,IAAIr0C,EAAQ/G,KAEZ,OADAA,KAAKy7C,yBACEz9C,OAAO09C,oBAAoB17C,KAAKw6C,YAAYz2C,KAAI,SAAUwxC,GAAc,OAAOxuC,EAAMyzC,WAAWjF,GAAY/1B,UAAa,GACnI,EACMyrB,CACV,CAhCmC,GAiCpC/nB,EAAQ+nB,eAAiBA,mCCnCzBjtC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQqwB,cAAgBrwB,EAAQ0qB,aAAe1qB,EAAQwqB,sBAAmB,EAC1E,IAAIA,EAAmB,CAAC,QAAS,MACjCxqB,EAAQwqB,iBAAmBA,EAC3B,IAAIiO,EAAoB,YACpBC,EAAc,CAAC,WAAY,iBAoC/B14B,EAAQqwB,cAhCR,SAAuBzoC,EAAO+wC,EAAeC,GAEzC,IAAInI,EAAW,CAAC,EACZv2C,EAAU,CAAC,EACX8vC,EAAY,CAAC,EACb6O,EAAiB,CAAC,EAyBtB,OA7BAD,EAAgBA,GAAiB,IAKnBp7C,SAAQ,SAAUxC,GAC5B69C,EAAe79C,EAAMkzB,YAAa,EAClC2qB,EAAe79C,EAAMowC,SAAU,CAClC,IACDtwC,OAAOgB,KAAK8L,GAAOpK,SAAQ,SAAU4B,GACjC,IAdelJ,EAcX4iD,EAAoBH,EAAgBA,EAAcv5C,GAAO,KACzDpE,EAAQ4M,EAAMxI,GAdN,cADGlJ,EAgBGkJ,IAfQlJ,IAASuiD,GAAqBjO,EAAiBtsC,QAAQhI,IAAS,IAkBtF4iD,EACArI,EAASqI,GAAqB99C,EAG9B69C,EAAez5C,GACf4qC,EAAU5qC,GAAOpE,EAGjB09C,EAAYr2C,SAASjD,GACrBlF,EAAQkF,GAAOpE,GAASA,EAAMub,QAAUvb,EAAMub,QAAUvb,EAG5Dd,EAAQkF,GAAOpE,EAClB,IACM,CAAEd,QAASA,EAASu2C,SAAUA,EAAUzG,UAAWA,EAC7D,EAKDhqB,EAAQ0qB,aAHR,SAAsB9iC,GAClB,OAAOA,EAAK,SACf,oCC5CD,IAAIy+B,EAAavpC,MAAQA,KAAKupC,WAAe,WACzC,IAAIC,EAAgB,SAAUhmB,EAAGxD,GAI7B,OAHAwpB,EAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,EAAchmB,EAAGxD,EAC3B,EACD,OAAO,SAAUwD,EAAGxD,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,EAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CACJ,CAd4C,GAe7C3rC,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,IACtDglB,EAAQ+4B,KAAO/4B,EAAQg5B,UAAYh5B,EAAQi5B,SAAWj5B,EAAQk5B,QAAUl5B,EAAQm5B,oBAAsBn5B,EAAQo5B,eAAY,EAC1H,IAAIC,EAAct5B,EAAQ,KACtB62B,EAAY72B,EAAQ,MACpBu5B,EAAcv5B,EAAQ,MACtBw5B,EAAkBx5B,EAAQ,MAC1Bq5B,EAA2B,SAAU9R,GAErC,SAAS8R,IACL,IAAIv1C,EAAmB,OAAXyjC,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,KAwDhE,OAvDA+G,EAAMylC,aAAe+P,EAAYj5B,QACjCvc,EAAM8lC,oBAAsB,CAAC,cAAe,eAC5C9lC,EAAM+lC,kBAAoB,CAAC,qBAAsB,sBAAuB,qBAAsB,2BAA4B,wBAAyB,uBAAwB,wBAAyB,2BAA4B,wBAAyB,8BAA+B,uBAAwB,wBAAyB,cAAe,oBAAqB,iBAAkB,cAAe,iBAC9Y/lC,EAAMqmC,UAAY,CACdsP,mBAAoB,cACpBC,mBAAoB,eAExB51C,EAAMwmC,kBAAoB,CACtBqP,oBAAqB,CAAEpN,WAAY,sBAAuBqC,kBAAkB,GAC5EgL,QAAS,CAAErN,WAAY,UAAWqC,kBAAkB,GACpDiL,SAAU,CAAEtN,WAAY,YAAaqC,kBAAkB,GACvDkL,UAAW,CAAEvN,WAAY,YAAaqC,kBAAkB,GACxDmL,KAAM,CAAExN,WAAY,QAASqC,kBAAkB,IAEnD9qC,EAAM2jC,eAAiB,CAAC,CAChBiI,WAAY,+BACZrE,OAAQ,6BACRld,UAAW,gCACXyhB,MAAO,6BACR,CACCF,WAAY,sBACZrE,OAAQ,oBACRld,UAAW,uBACXyhB,MAAO,oBACR,CACCF,WAAY,6BACZrE,OAAQ,2BACRld,UAAW,8BACXyhB,MAAO,2BACR,CACCF,WAAY,mBACZrE,OAAQ,iBACRld,UAAW,oBACXyhB,MAAO,iBACR,CACCF,WAAY,mBACZrE,OAAQ,iBACRld,UAAW,oBACXyhB,MAAO,iBACR,CACCF,WAAY,8BACZrE,OAAQ,4BACRld,UAAW,+BACXyhB,MAAO,4BACR,CACCF,WAAY,uBACZrE,OAAQ,qBACRld,UAAW,wBACXyhB,MAAO,qBACR,CACCF,WAAY,mBACZrE,OAAQ,iBACRld,UAAW,oBACXyhB,MAAO,kBAER9rC,CACV,CAQD,OAnEAwiC,EAAU+S,EAAW9R,GA4DrBxsC,OAAOC,eAAeq+C,EAAUt0C,UAAW,WAAY,CACnDpO,IAAK,WACD,OAAOoG,KAAKosC,SACf,EACD3oB,YAAY,EACZrlB,cAAc,IAEXk+C,CACV,CArE8B,CAqE7BE,EAAYnqB,WACdnP,EAAQo5B,UAAYA,EACpBA,EAAUpd,UAAY,CAClB+d,UAAWnD,EAAU1kC,OACrB8nC,kBAAmBpD,EAAUqD,KAC7BC,WAAYtD,EAAU1kC,OACtBioC,gBAAiBvD,EAAUwD,UAAU,CACjCxD,EAAU1kC,OACV0kC,EAAUyD,MAAM,CACZ,MACA,SACA,aAGRX,oBAAqB9C,EAAUnU,OAC/B6X,aAAc1D,EAAU9lB,OACxBypB,sBAAuB3D,EAAUqD,KACjCO,YAAa5D,EAAUwD,UAAU,CAC7BxD,EAAU1kC,OACV0kC,EAAUyD,MAAM,CACZ,SACA,MACA,QACA,cACA,gBACA,eACA,mBACA,OACA,eAGRI,2BAA4B7D,EAAU/oC,KACtC6sC,wBAAyB9D,EAAU1kC,OACnCyoC,gBAAiB/D,EAAU1kC,OAC3BoQ,SAAUs0B,EAAUqD,KACpBN,QAAS/C,EAAUwD,UAAU,CACzBxD,EAAUqD,KACVrD,EAAUnU,SAEdmY,YAAahE,EAAUnU,OACvBoY,YAAajE,EAAU1kC,OACvB4oC,oBAAqBlE,EAAU1kC,OAC/B6oC,WAAYnE,EAAU9lB,OACtBkqB,eAAgBpE,EAAUwD,UAAU,CAChCxD,EAAU9lB,OACV8lB,EAAUyD,MAAM,CACZ,EACA,EACA,EACA,EACA,EACA,EACA,MAGRY,kBAAmBrE,EAAUqD,KAC7BiB,YAAatE,EAAUqD,KACvBkB,OAAQvE,EAAUzvC,MAClBmiB,OAAQstB,EAAUwD,UAAU,CACxBxD,EAAU/oC,KACV+oC,EAAU9lB,OACV8lB,EAAU1kC,SAEdkpC,KAAMxE,EAAU1kC,OAChBmpC,wBAAyBzE,EAAU9lB,OACnCwqB,uBAAwB1E,EAAUwD,UAAU,CACxCxD,EAAU9lB,OACV8lB,EAAUwD,UAAU,CAChBxD,EAAU1kC,OACV0kC,EAAUyD,MAAM,CACZ,OACA,kBAIZkB,WAAY3E,EAAU1kC,OACtBspC,mBAAoB5E,EAAU/oC,KAC9B4tC,oBAAqB7E,EAAU/oC,KAC/B6tC,mBAAoB9E,EAAU/oC,KAC9B8tC,yBAA0B/E,EAAU/oC,KACpC+tC,sBAAuBhF,EAAU/oC,KACjCguC,qBAAsBjF,EAAU/oC,KAChCiuC,sBAAuBlF,EAAU/oC,KACjCkuC,yBAA0BnF,EAAU/oC,KACpCmuC,sBAAuBpF,EAAU/oC,KACjCouC,4BAA6BrF,EAAU/oC,KACvCquC,qBAAsBtF,EAAU/oC,KAChCsuC,sBAAuBvF,EAAU/oC,KACjCuuC,YAAaxF,EAAU/oC,KACvBwuC,kBAAmBzF,EAAU/oC,KAC7ByuC,eAAgB1F,EAAU/oC,KAC1B0uC,YAAa3F,EAAU/oC,KACvB2uC,cAAe5F,EAAU/oC,KACzBi8B,gBAAiB8M,EAAU/oC,KAC3B4uC,mBAAoB7F,EAAUwD,UAAU,CACpCxD,EAAU1kC,OACV0kC,EAAUyD,MAAM,CACZ,SACA,aACA,aAGRqC,wBAAyB9F,EAAU1kC,OACnCyqC,mBAAoB/F,EAAU1kC,OAC9B0qC,gBAAiBhG,EAAUqD,KAC3B4C,UAAWjG,EAAUzvC,MACrB21C,WAAYlG,EAAUqD,KACtBJ,UAAWjD,EAAUnU,OACrBsa,iBAAkBnG,EAAUzvC,MAC5B61C,sBAAuBpG,EAAUqD,KACjCgD,gBAAiBrG,EAAUqD,KAC3BiD,yBAA0BtG,EAAUqD,KACpCkD,cAAevG,EAAU1kC,OACzBkrC,sBAAuBxG,EAAU1kC,OACjCmrC,aAAczG,EAAU9lB,OACxBwsB,SAAU1G,EAAU9lB,OACpBysB,SAAU3G,EAAU1kC,OACpBsrC,SAAU5G,EAAU1kC,OACpBurC,wBAAyB7G,EAAUqD,KACnCyD,MAAO9G,EAAUzvC,MACjBw2C,QAAS/G,EAAUqD,KACnBxsB,MAAOmpB,EAAUwD,UAAU,CACvBxD,EAAU/oC,KACV+oC,EAAU9lB,OACV8lB,EAAU1kC,UAGlB,IAAIinC,EAAqC,SAAU7R,GAE/C,SAAS6R,IACL,OAAkB,OAAX7R,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CAED,OALAupC,EAAU8S,EAAqB7R,GAI/B6R,EAAoB1K,WAAa,sBAC1B0K,CACV,CAPwC,CAOvCI,EAAgBn5B,SAClBJ,EAAQm5B,oBAAsBA,EAC9B,IAAID,EAAyB,SAAU5R,GAEnC,SAAS4R,IACL,OAAkB,OAAX5R,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CAED,OALAupC,EAAU6S,EAAS5R,GAInB4R,EAAQzK,WAAa,UACdyK,CACV,CAP4B,CAO3BK,EAAgBn5B,SAClBJ,EAAQk5B,QAAUA,EAClB,IAAID,EAA0B,SAAU3R,GAEpC,SAAS2R,IACL,OAAkB,OAAX3R,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CAGD,OANAupC,EAAU4S,EAAU3R,GAIpB2R,EAASxK,WAAa,YACtBwK,EAASrK,kBAAmB,EACrBqK,CACV,CAR6B,CAQ5BM,EAAgBn5B,SAClBJ,EAAQi5B,SAAWA,EACnB,IAAID,EAA2B,SAAU1R,GAErC,SAAS0R,IACL,OAAkB,OAAX1R,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CAED,OALAupC,EAAU2S,EAAW1R,GAIrB0R,EAAUvK,WAAa,YAChBuK,CACV,CAP8B,CAO7BO,EAAgBn5B,SAClBJ,EAAQg5B,UAAYA,EACpB,IAAID,EAAsB,SAAUzR,GAEhC,SAASyR,IACL,OAAkB,OAAXzR,GAAmBA,EAAOzyB,MAAM/X,KAAM8X,YAAc9X,IAC9D,CA+CD,OAlDAupC,EAAU0S,EAAMzR,GAIhByR,EAAKtK,WAAa,QAClBsK,EAAKnK,kBAAmB,EACxBmK,EAAK3J,iBAAmB,CACpByK,UAAW,CAAEvN,WAAY,YAAaqC,kBAAkB,IAE5DoK,EAAK9J,cAAgB,CAAC,CACdQ,WAAY,+BACZrE,OAAQ,6BACRld,UAAW,gCACXyhB,MAAO,6BACR,CACCF,WAAY,sBACZrE,OAAQ,oBACRld,UAAW,uBACXyhB,MAAO,oBACR,CACCF,WAAY,6BACZrE,OAAQ,2BACRld,UAAW,8BACXyhB,MAAO,2BACR,CACCF,WAAY,mBACZrE,OAAQ,iBACRld,UAAW,oBACXyhB,MAAO,iBACR,CACCF,WAAY,mBACZrE,OAAQ,iBACRld,UAAW,oBACXyhB,MAAO,iBACR,CACCF,WAAY,8BACZrE,OAAQ,4BACRld,UAAW,+BACXyhB,MAAO,4BACR,CACCF,WAAY,uBACZrE,OAAQ,qBACRld,UAAW,wBACXyhB,MAAO,qBACR,CACCF,WAAY,mBACZrE,OAAQ,iBACRld,UAAW,oBACXyhB,MAAO,kBAERoJ,CACV,CApDyB,CAoDxBQ,EAAgBn5B,SAClBJ,EAAQ+4B,KAAOA,EACf/4B,EAAAA,QAAkBo5B,kKCtTdriD,GAAS6mD,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,MAAc,CAAC,EAGtCl6C,EAAU,SAAStJ,GACnB,OAAOg4B,WAAWh4B,EAFU,mBAG/B,EACGyjD,EAAS,SAASC,GAClB3rB,aAAa2rB,EAChB,EACGC,GAA2BC,EAAAA,EAAAA,IAAU,WACrC,IAAIC,EAAgBnnD,EAAOkhD,uBAAyBlhD,EAAOonD,6BAA+BpnD,EAAOqnD,0BAA4BrnD,EAAOsnD,wBAA0BtnD,EAAOunD,wBACjKC,EAAexnD,EAAOynD,sBAAwBznD,EAAO0nD,4BAA8B1nD,EAAO2nD,yBAA2B3nD,EAAO4nD,uBAAyB5nD,EAAO6nD,uBAC5JV,GAAiBK,IACjB56C,EAAUu6C,EACVJ,EAASS,EAEhB,IACM,SAAStG,IAEZ,OADA+F,IACOr6C,EAAQkR,MAAM9d,EAAQ6d,UAChC,CACM,SAAS4pC,IACZR,IACAF,EAAOjpC,MAAM9d,EAAQ6d,UACxB,6DCxBGiqC,EAAiB,SAASC,EAAWC,EAAY78C,GACjD,OAAO,WACH,IAAI88C,EAAeliD,KAAKmiD,SACxBniD,KAAKmiD,SAAWH,EAAUC,GAC1B,IACI,OAAO78C,EAAO2S,MAAM/X,KAAM8X,UAG7B,CAJD,QAGI9X,KAAKmiD,SAAWD,CACnB,CACJ,CACJ,EAMGE,EAAW,SAASC,GACpB,IAAIC,EACAC,EACAC,EACJ,IAAKH,EACD,OAAOriD,KAEX,IAAKuiD,KAAcF,EACfG,EAASH,EAAQE,GACjBD,EAAa,oBAAsBtiD,KAAKgI,UAAUu6C,IAAe,oBAAsBC,EACvFxiD,KAAKgI,UAAUu6C,GAAcD,EAAaP,EAAe/hD,KAAK6K,OAAO7C,UAAWu6C,EAAYC,GAAUA,EAE1G,OAAOxiD,IACV,EACGyiD,EAAU,WACV,IACIp0B,EACAj1B,EACAuP,EAHA+5C,EAAW1iD,KAIX2iD,EAAyB3kD,OAAOgK,UAAU6X,eAAe/iB,KAAK4lD,GAC9DE,GAAcD,EAAuB,oBAAsBA,EAAuB,sBAKtF,IAJIC,IACAF,EAASG,eAAiBH,EAASG,eAAe99C,MAAM,GACxD29C,EAASI,mBAAqBJ,EAASI,mBAAmB/9C,MAAM,IAE/D4D,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAQ9B,IAAKvP,KAPLi1B,EAAWvW,UAAUnP,IACRo6C,MACTL,EAASG,eAAeziD,KAAKiuB,EAAS00B,MAEtC10B,EAAS20B,UACTN,EAASI,mBAAmB1iD,KAAKiuB,EAAS20B,UAEjC30B,EACL,SAAWj1B,GAAQ,aAAeA,GAAQ,YAAcA,IAG5DspD,EAAS16C,UAAU5O,GAAQi1B,EAASj1B,IAG5C,OAAOspD,CACV,EACGO,EAAa,SAASC,GAGtB,IAFwBllD,OAAOgK,UAAU6X,eAAe/iB,KAAKkD,KAArChC,CAA2C,WAC5BgC,KAAK6K,OAC5B,CACZ,IAAIs4C,EAAYnlD,OAAOolD,eAAepjD,MACtC,OAAOmjD,IAAcD,GAAeC,EAAUF,WAAWC,EAC5D,CACG,OAAIljD,KAAK6K,SAAWq4C,MAGfljD,KAAK6K,SAAW7K,KAAK6K,OAAOo4C,aAG1BjjD,KAAK6K,OAAOo4C,WAAWC,EAErC,EACGG,EAAW,WACX,MAAM/jC,EAAAA,EAAAA,MAAa,QACtB,EACGgkC,EAAa,WACb,IAAIC,EAASvlD,OAAOgK,UAAU6X,eAC9B,OAAO,SAAS0nB,EAAQic,GACpB,IAAK,IAAIlhD,KAAOilC,EAAQ,CACpB,IAAKgc,EAAO9kD,KAAK8oC,EAAQjlC,GACrB,OAEJkhD,EAAYlhD,GAAOilC,EAAOjlC,EAC7B,CACJ,CACJ,CAVgB,GAWbmhD,EAAY,WAAa,EAC7BA,EAAUp4B,QAAU,SAASg3B,GACzB,IAAIqB,EAAY,WACZ,IAAK1jD,OAAQ2jD,EAAAA,EAAAA,IAAS3jD,OAAS,oBAAsBA,KAAKqnC,YACtD,MAAM/nB,EAAAA,EAAAA,MAAa,SAEvB,IAII3W,EAJAogC,EAAW/oC,KACX+iD,EAAOha,EAASga,KAChBa,EAAgB7a,EAAS1B,YAAYwb,eACrCgB,EAAoB9a,EAAS1B,YAAYyb,mBAE7C,IAAKn6C,EAAI,EAAGA,EAAIi7C,EAAcjjD,OAAQgI,IAClCi7C,EAAcj7C,GAAGlK,KAAKsqC,GAK1B,IAHIga,GACAA,EAAKhrC,MAAMgxB,EAAUjxB,WAEpBnP,EAAI,EAAGA,EAAIk7C,EAAkBljD,OAAQgI,IACtCk7C,EAAkBl7C,GAAGlK,KAAKsqC,EAEjC,EAaD,OAZA2a,EAAU17C,UAlGO,SAASmN,GAC1B,IAAIpE,EAAO,WAAa,EAExB,OADAA,EAAK/I,UAAYmN,EAAInN,UACd,IAAI+I,CACd,CA8FyB+yC,CAAe9jD,MACrCsjD,EAAWtjD,KAAM0jD,GACjBA,EAAUr4B,QAAUrrB,KAAKqrB,QACzBq4B,EAAUL,SAAWA,EACrBK,EAAUtB,SAAWA,EACrBsB,EAAUjB,QAAUA,EACpBiB,EAAUT,WAAaA,EACvBS,EAAU74C,OAAS7K,KACnB0jD,EAAUb,eAAiB7iD,KAAK6iD,eAAiB7iD,KAAK6iD,eAAe99C,MAAM,GAAK,GAChF2+C,EAAUZ,mBAAqB9iD,KAAK8iD,mBAAqB9iD,KAAK8iD,mBAAmB/9C,MAAM,GAAK,GAC5F2+C,EAAU17C,UAAUq/B,YAAcqc,EAClCA,EAAUtB,SAASC,GACZqB,CACV,EACDD,EAAUJ,SAAWA,EACrB,iEC5HItjD,EAAS,CACTigD,YAAY,EACZ+D,gBAAiB,MACjBC,mCAAmC,EACnCC,oBAAoB,EACpBC,uBAAwB,IACxBC,iBAAkB,IAClBC,mBAAoB,IACpBC,qBAAqB,EACrBC,0BAA0B,EAC1BC,sBAAsB,EACtBC,eAAW,EACXC,uBAAmB,EACnBC,uBAAuB,EACvBC,2BAA4B,CACxBl+B,KAAM,MACNm+B,UAAW,QACXltC,MAAO,GACPlN,SAAU,CACNq6C,GAAI,eACJpiB,GAAI,eACJx1B,OAAQ,CACJc,GAAI,GACJC,GAAI,KAGZ82C,wBAAyB,EACzBC,SAAS,EACTn+B,UAAW,QAEfo+B,cAAe,SAAAC,GACP,MAAQA,EAAc1iD,OAAO0Z,OAAO,KACpCgpC,EAAgB,IAAMA,EAAgB,KAE1C,IACI,OAAOn/C,KAAK6G,MAAMs4C,EAOrB,CANC,MAAOC,GACL,IACI,OAAOp/C,KAAK6G,MAAMw4C,EAAsBF,GAG3C,CAFC,MAAOG,GACL,MAAM9lC,EAAAA,EAAAA,MAAa,QAAS4lC,EAAID,EACnC,CACJ,CACJ,GAEDE,EAAwB,SAAAF,GAAa,OAAIA,EAAcrjD,QAAQ,KAAM,KAAKA,QAAQ,eAAgB,MAAMA,QAAQ,2BAA4B,UAAvG,EACrCyjD,EAAmB,CAAC,mBAAoB,sBACxCC,EAAe,WACf,IAAKxtC,UAAUnX,OACX,OAAOZ,EAEX,IAAIwlD,EAAYztC,UAAUnX,QAAU,OAAI,EAASmX,UAAU,GAC3DutC,EAAiB3kD,SAAQ,SAAA8kD,GACrB,GAAID,EAAUC,GAAkB,CAC5B,IAAIprD,EAAU,YAAY6V,OAAOu1C,EAAiB,+CAClDlmC,EAAAA,EAAAA,IAAW,QAAS,SAAUkmC,EAAiB,OAAQprD,EAC1D,CACJ,KACDqrD,EAAAA,EAAAA,GAAO1lD,EAAQwlD,EAClB,EACG,qBAAuBG,YAAcA,WAAW3lD,QAChDulD,EAAaI,WAAW3lD,QAE5B,0ECxDI4lD,EAA2B,CAC3Bv2C,iBAAkB,SAAC5C,EAAS0D,GAAV,OAAuB1D,EAAQ4C,iBAAiBc,EAAhD,EAClB01C,eAF2B,SAEZp5C,EAAS0D,GAAU,WAC1B4kB,EAAUtoB,EAAQsoB,SAAWtoB,EAAQq5C,iBAAmBr5C,EAAQs5C,oBAAsBt5C,EAAQu5C,mBAAqBv5C,EAAQw5C,kBAAoBx5C,EAAQy5C,uBAA0B,SAAA/1C,GACjL,IAAIglB,EAAM1oB,EAAQtK,UAAYsK,EAAQ0mB,cACtC,IAAKgC,EACD,OAAO,EAGX,IADA,IAAIgxB,EAAQ,EAAK92C,iBAAiB8lB,EAAKhlB,GAC9BvH,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAC9B,GAAIu9C,EAAMv9C,KAAO6D,EACb,OAAO,CAGlB,EACD,OAAOsoB,EAAQr2B,KAAK+N,EAAS0D,EAChC,EACD7H,cAjB2B,SAiBb4Q,EAASktC,GAEnB,OADAA,EAAUA,GAAWnmD,KAAKomD,WACX/9C,cAAc4Q,EAChC,EACDotC,gBArB2B,SAqBXC,EAAIrtC,EAASktC,GAEzB,OADAA,EAAUA,GAAWnmD,KAAKomD,WACXC,gBAAgBC,EAAIrtC,EACtC,EACDzQ,eAzB2B,SAyBZ7B,EAAMw/C,GAEjB,OADAA,EAAUA,GAAWnmD,KAAKomD,WACX59C,eAAe7B,EACjC,EACD4/C,gBA7B2B,SA6BX5/C,EAAMw/C,GAElB,OADAA,EAAUA,GAAWnmD,KAAKomD,WACXG,gBAAgB5/C,EAClC,EACD6/C,OAAQ,SAAAh6C,GAAO,OAAIA,GAAW,kBAAoBA,GAAW,aAAcA,GAAW,aAAcA,CAArF,EACfi6C,cAAe,SAAAj6C,GAAO,OAAIA,GAtCX,IAsCsBA,EAAQupC,QAAvB,EACtB2Q,WAAY,SAAAl6C,GAAO,OAAIA,GAtCX,IAsCsBA,EAAQupC,QAAvB,EACnB4Q,WAAY,SAAAn6C,GAAO,OAAIA,GAtCP,IAsCkBA,EAAQupC,QAAvB,EACnB6Q,mBAAoB,SAAAp6C,GAAO,OAAIA,GAtCN,KAsCiBA,EAAQupC,QAAvB,EAC3B8Q,cAtC2B,SAsCbr6C,GACV,IAAIpD,EAAaoD,GAAWA,EAAQpD,WAChCA,GACAA,EAAWC,YAAYmD,EAE9B,EACDs6C,cA5C2B,SA4Cb7T,EAAe8T,EAAYC,GACjC/T,GAAiB8T,GAAc9T,IAAkB8T,IAC7CC,EACA/T,EAAcxrC,aAAas/C,EAAYC,GAEvC/T,EAAc1qC,YAAYw+C,GAGrC,EACD13C,aAAc,SAAC7C,EAASpT,GAAV,OAAmBoT,EAAQ6C,aAAajW,EAAxC,EACdkP,aAtD2B,SAsDdkE,EAASpT,EAAM8E,GACpB,UAAY9E,EACZoT,EAAQsqB,MAAMmwB,QAAU/oD,EAExBsO,EAAQlE,aAAalP,EAAM8E,EAElC,EACDgpD,gBA7D2B,SA6DX16C,EAASpT,GACrBoT,EAAQ06C,gBAAgB9tD,EAC3B,EACD+tD,YAhE2B,SAgEf36C,EAASpT,EAAM8E,GACvBsO,EAAQpT,GAAQ8E,CACnB,EACDkpD,QAnE2B,SAmEnB56C,EAAS7F,GACT6F,IACAA,EAAQ66C,YAAc1gD,EAE7B,EACD2gD,SAxE2B,SAwElB96C,EAAS2L,EAAWovC,GACrB,IAAM/6C,EAAQupC,UAAY59B,IAC1BovC,EAAQ/6C,EAAQshC,UAAUC,IAAI51B,GAAa3L,EAAQshC,UAAUpwC,OAAOya,GAE3E,EACDqvC,SA7E2B,SA6ElBh7C,EAASpT,EAAM8E,GACpBsO,EAAQsqB,MAAM19B,GAAQ8E,GAAS,EAClC,EACDkoD,UAAW,qBAAuBlkD,cAAW,EAASA,SACtDulD,YAjF2B,WAkFvB,OAAOznD,KAAKomD,SACf,EACDsB,iBApF2B,SAoFVl7C,GAEb,OAD0BxM,KAAK2nD,YAAYn7C,GAChBo7C,aAC9B,EACDD,YAxF2B,SAwFfn7C,GACR,IAAIq7C,EAAsBC,EAC1B,OAAO,QAAUD,EAAuB,OAASr7C,QAAW,IAAWA,GAAmB,QAAUs7C,EAAwBt7C,EAAQm7C,mBAAgB,IAAWG,OAA9E,EAA+GA,EAAsBrpD,KAAK+N,UAAa,IAAWq7C,EAAuBA,EAAuB7nD,KAAKomD,SACzS,EACD2B,QA5F2B,WA6FvB,OAAO/nD,KAAKomD,UAAU9gD,IACzB,EACD0iD,uBA/F2B,WAgGvB,OAAOhoD,KAAKomD,UAAU4B,wBACzB,EACDC,mBAlG2B,WAmGvB,OAAOjoD,KAAKomD,UAAU8B,eACzB,EACDC,YArG2B,WAsGvB,OAAOnoD,KAAKomD,UAAUzzB,QACzB,EACDy1B,aAxG2B,WAyGvB,OAAOpoD,KAAKomD,UAAUiC,SACzB,EACDC,cA3G2B,WA4GvB,OAAOtoD,KAAKomD,UAAUmC,UACzB,EACDC,QA9G2B,WA+GvB,OAAOxoD,KAAKomD,UAAU92C,IACzB,EACDm5C,oBAjH2B,SAiHPt7C,GAChB,OAAOA,KAAYnN,KAAKomD,SAC3B,EACDsC,OApH2B,SAoHpBl8C,EAASzL,EAAOxD,EAAUH,GAC7B,OAAKoP,GAAa,qBAAsBA,GAGxCA,EAAQjL,iBAAiBR,EAAOxD,EAAUH,GACnC,WACHoP,EAAQhL,oBAAoBT,EAAOxD,EACtC,GALUukB,EAAAA,IAMd,EACD6mC,kBA7H2B,SA6HT56C,EAAGC,EAAGxB,GACpB,IAAIo8C,EAAsB5oD,KAAK2nD,YAAYn7C,GAC3C,OAAIo8C,EAAoBC,MACbC,EAAAA,EAAAA,GAA2B/6C,EAAGC,EAAG46C,GAErCA,EAAoBD,kBAAkB56C,EAAGC,EACnD,GAEL,KAAe+6C,EAAAA,EAAAA,GAASpD,oDC/IxB,KAAeqD,EAAAA,EAAAA,GAAW,CACtBC,MAAO,4BACPC,MAAO,6BACPC,MAAO,uDACPC,MAAO,sDACPC,MAAO,iBACPC,MAAO,oCACPC,MAAO,+DACPC,MAAO,iEACPC,MAAO,0DACPC,MAAO,kFACPC,MAAO,+BACPC,MAAO,sEACPC,MAAO,6EACPC,MAAO,uEACPC,MAAO,4CACPC,MAAO,iCACPC,MAAO,mDACPC,MAAO,yCACPC,MAAO,4BACPC,MAAO,6EACPC,MAAO,iCACPC,MAAO,qCACPC,MAAO,2BACPC,MAAO,sCACPC,MAAO,kDACPC,MAAO,uDACPC,MAAO,wFACPC,MAAO,uCACPC,MAAO,mEACPC,MAAO,uLACPC,MAAO,kCACPC,MAAO,+CACPC,MAAO,+CACPC,MAAO,iDACPC,MAAO,yCACPC,MAAO,wCACPC,MAAO,iCACPC,MAAO,yCACPC,MAAO,2BACPC,MAAO,gCACPC,MAAO,gCACPC,MAAO,4DACPC,MAAO,0DACPC,MAAO,uCACPC,MAAO,6CACPC,MAAO,mHACPC,MAAO,oEACPC,MAAO,uEACPC,MAAO,qHCjDPC,UAAOC,EAAAA,QAAc,CACrBpJ,KAAM,SAAS7kD,GACPA,IACAA,EAAQuL,OAAOvL,IAEnB8B,KAAKosD,OAASpsD,KAAKqsD,WAAWnuD,GAAS8B,KAAKssD,YAC/C,EACDD,WAAY,SAASnuD,GAEjB,IADAA,EAAQA,EAAM0D,QAAQ,cAAe,IAAI4S,cAClCtW,EAAMyC,OAAS,IAClBzC,GAAS,IAEb,MAAO,CAACA,EAAM8G,OAAO,EAAG,GAAI9G,EAAM8G,OAAO,EAAG,GAAI9G,EAAM8G,OAAO,GAAI,GAAI9G,EAAM8G,OAAO,GAAI,GAAI9G,EAAM8G,OAAO,GAAI,KAAKyH,KAAK,IACxH,EACD6/C,UAAW,WAEP,IADA,IAAIpuD,EAAQ,GACHyK,EAAI,EAAGA,EAAI,GAAIA,IACpBzK,GAASqL,KAAKoZ,MAAM,GAAKpZ,KAAKqZ,UAAUtlB,SAAS,IAErD,OAAOY,CACV,EACDZ,SAAU,WACN,OAAO0C,KAAKosD,MACf,EACDG,QAAS,WACL,OAAOvsD,KAAKosD,MACf,EACDI,OAAQ,WACJ,OAAOxsD,KAAKosD,MACf,IAEL,qHC5BqBK,EAAAA,WACjB,cAAc,eACVzsD,KAAK0sD,OAAS,GACd1sD,KAAK2sD,WAAYC,EAAAA,EAAAA,IACpB,mCACD,SAAI7uD,IACA8uD,EAAAA,EAAAA,IAAK7sD,KAAK0sD,QAAQ,SAAC5tD,EAAG8F,GAAJ,OAAa7G,EAAGga,MAAMha,EAAI6G,EAA1B,IAClB5E,KAAK2sD,UAAU5e,IAAIhwC,EACtB,uBACD,SAAOA,GACHiC,KAAK2sD,UAAUjvD,OAAOK,EACzB,qBACD,WACI,IAAK,IAAI+uD,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,GAE3BrV,KAAK0sD,OAAOtsD,KAAKxC,GACjBoC,KAAK2sD,UAAUI,KAAKh1C,MAAM/X,KAAK2sD,UAAW/uD,EAC7C,OAlBgB6uD,oCCSrB,IAbe,SAAS3rD,GACpB,IAAI0C,EACAwpD,EAAkB,WAKlB,OAJAxpD,EAAS1C,EAAQiX,MAAM/X,KAAM8X,WAC7Bk1C,EAAkB,WACd,OAAOxpD,CACV,EACMA,CACV,EACD,OAAO,WACH,OAAOwpD,EAAgBj1C,MAAM/X,KAAM8X,UACtC,CACJ,mCCZD,IAAIm1C,EAAW,SAAS7vD,GACpB4C,KAAKktD,SAAW9vD,GAAW,CAAC,EAC5B4C,KAAKmtD,MAAQ,GACbntD,KAAKotD,OAAS,GACdptD,KAAKqtD,SAAU,EACfrtD,KAAKstD,QAAS,EACdttD,KAAKutD,eAAiB,EACzB,EACDN,EAASjlD,UAAUwlD,UAAY,SAASrH,EAASvoD,GAC7C,IAAI6vD,EAAgBztD,KAAKutD,eACrBG,EAAO1tD,KAAKmtD,MACZQ,EAAc3tD,KAAKktD,SAASS,YAC5B5xB,EAAO0xB,EAAc9sD,OACzB,IAAK8sD,EAAc1xB,GAAQ,EAAG0xB,EAAc1xB,GAAQ2xB,EAAK/sD,OAAQ8sD,EAAc1xB,KAAS,CAEpF,IAAI,IADS2xB,EAAKD,EAAc1xB,IAAOhkB,MAAMouC,EAASvoD,IAC9B+vD,EACpB,KAEP,CACDF,EAAcG,KACjB,EACDX,EAASjlD,UAAU+lC,IAAM,SAAShwC,GAI9B,MAHI,oBAAsBA,GAAQiC,KAAKktD,SAASW,QAAW7tD,KAAKrG,IAAIoE,IAChEiC,KAAKmtD,MAAM/sD,KAAKrC,GAEbiC,IACV,EACDitD,EAASjlD,UAAUtK,OAAS,SAASK,GACjC,IAAI2vD,EAAO1tD,KAAKmtD,MACZM,EAAgBztD,KAAKutD,eACrBpsD,EAAQusD,EAAKtsD,QAAQrD,GACzB,GAAIoD,GAAS,IACTusD,EAAKrsD,OAAOF,EAAO,GACfnB,KAAKqtD,SAAWI,EAAc9sD,QAC9B,IAAK,IAAIo7B,EAAO,EAAGA,EAAO0xB,EAAc9sD,OAAQo7B,IACxC56B,GAASssD,EAAc1xB,IACvB0xB,EAAc1xB,KAK9B,OAAO/7B,IACV,EACDitD,EAASjlD,UAAUrO,IAAM,SAASoE,GAC9B,IAAI2vD,EAAO1tD,KAAKmtD,MAChB,OAAOpvD,EAAK2vD,EAAKtsD,QAAQrD,IAAO,IAAM2vD,EAAK/sD,MAC9C,EACDssD,EAASjlD,UAAU8lD,MAAQ,SAAS/vD,GAEhC,OADAiC,KAAKmtD,MAAQ,GACNntD,IACV,EACDitD,EAASjlD,UAAU+lD,SAAW,SAAS5H,EAASvoD,GAC5C,IAAIowD,EAAQhuD,KAAKotD,OAGjB,GADAxvD,GADAA,EAAOA,GAAQ,IACHmH,MAAQnH,EAAKmH,QAAUnH,EAC/BoC,KAAKktD,SAASe,aACdjuD,KAAKqtD,SAAU,EACfrtD,KAAKwtD,UAAUrH,EAASvoD,OACrB,CAEH,GADAowD,EAAM5tD,KAAK,CAAC+lD,EAASvoD,IACjBoC,KAAKqtD,QACL,OAGJ,IADArtD,KAAKqtD,SAAU,EACRW,EAAMrtD,QAAQ,CACjB,IAAI+rD,EAASsB,EAAM91B,QACnBl4B,KAAKwtD,UAAUd,EAAO,GAAIA,EAAO,GACpC,CACJ,CAGD,OAFA1sD,KAAKqtD,SAAU,EACfrtD,KAAKstD,QAAS,EACPttD,IACV,EACDitD,EAASjlD,UAAU+kD,KAAO,WACtB/sD,KAAK+tD,SAAS/tD,KAAM8X,UACvB,EACDm1C,EAASjlD,UAAUkmD,MAAQ,WACvB,OAAOluD,KAAKstD,MACf,EAID,IAHgB,SAASlwD,GACrB,OAAO,IAAI6vD,EAAS7vD,EACvB,wpBChCG+wD,uEA7BOC,EAAgB,SAASlwD,EAAOkgC,GACvC,OAAOiwB,EAAAA,EAAAA,IAAUnwD,GAASA,EAAQkgC,CACrC,EACUkwB,EAAe,SAASzoC,EAAQsgC,GACvC,IAAIoI,EAAW,IAAIlxC,EAAAA,GACfmxC,EAAoBrI,GAAWnmD,KAC/BuhB,EAAO,CACPjE,QAASixC,EAASjxC,UAClBmxC,MAAO,WACHn5B,aAAao5B,GACbH,EAASI,WAAWH,EACvB,GAEDjxD,EAAW,WACX,IAAIiG,EAASqiB,EAAOpnB,KAAK+vD,GACrBhrD,GAAUA,EAAOorD,OAAQC,EAAAA,EAAAA,IAAWrrD,EAAOorD,MAC3CprD,EAAOorD,MAAM,WACTL,EAASO,YAAYN,EACxB,IAEDD,EAASO,YAAYN,EAE5B,EACGE,GAAW52C,UAAU,IAAMyd,YAAYh4B,EAAU,kBAAoB4oD,EAAUA,EAAU,GAC7F,OAAO5kC,CACV,EACGwtC,EAAe,GACfC,EAAe,GACfC,EAAmB,GAEnBC,EAAe,SAAS91D,EAAM2X,EAAMw9C,GACpC,GAAIJ,GAAiBA,IAAkB/0D,EAKnC,OAJA21D,EAAa3uD,KAAK2Q,GAClBi+C,EAAa5uD,KAAKhH,GAClBm1D,EAAWA,GAAY,IAAIlxC,EAAAA,GAC3B4xC,EAAiB7uD,KAAKmuD,GACfA,EAEP,IAAIY,EAAmBhB,EACnBiB,EAAsBH,EAAiBtuD,OAC3CwtD,EAAgB/0D,EAChB,IAAIoK,EAASuN,IAeb,OAdKvN,IACGyrD,EAAiBtuD,OAASyuD,EAC1B5rD,EAAS6rD,EAAAA,GAAAA,MAAWrvD,KAAMivD,EAAiBlqD,MAAMqqD,IAC1Cb,GACPA,EAAS3vD,WAGjBuvD,EAAgBgB,EACZZ,GAAY/qD,GAAUA,EAAOorD,MAC7BprD,EAAOorD,KAAKL,EAAS3vD,SAAS0wD,KAAKf,EAAS/uD,SAE3C2uD,GAAiBY,EAAapuD,SAC9B,WAAaquD,EAAa92B,QAAUq3B,EAAcrU,GAAa6T,EAAa72B,QAAS+2B,EAAiB/2B,SAEpG10B,IAAU6rD,EAAAA,EAAAA,KAExB,EACUE,EAAc,SAASx+C,EAAMw9C,GACpC,OAAOW,EAAa,SAAUn+C,EAAMw9C,EACvC,EACUrT,EAAc,SAASnqC,EAAMw9C,GACpC,OAAOW,EAAa,SAAUn+C,EAAMw9C,EACvC,EACUiB,EAAgB,SAASz+C,GAChC,OAAO,WACH,IAAI0+C,EAAOzvD,KACX,OAAOkvD,EAAa,UAAW,WAC3B,OAAOn+C,EAAKtS,KAAKgxD,EACpB,GACJ,CACJ,EACUC,EAAe,SAAS3+C,GAC/B,OAAO,WACH,IAAI0+C,EAAOzvD,KACX,OAAOkvD,EAAa,UAAW,WAC3B,OAAOn+C,EAAKtS,KAAKgxD,EACpB,GACJ,CACJ,EACUE,EAAkB,SAASC,EAAc1J,EAAO2J,GACvD,IAAIC,EAAc,GACdC,EAAgB,EAyBpB,OAxBAlD,EAAAA,EAAAA,IAAK3G,GAAO,SAAC/kD,EAAO6uD,GAChB,IAAIC,EAAa,EACbrrD,EAAOirD,EAAQA,EAAMG,GAAWA,GACpCnD,EAAAA,EAAAA,IAAK+C,GAAc,SAACM,EAAWC,GAC3B,IAAIjyD,EAAQ0G,EAAKsrD,GACjB,QAAI,IAAWhyD,EAAf,CAGA,IAAI+Q,EAAM/Q,EAAOiyD,GAKjB,OADAF,GAAc,GACP,EAJHA,GAFH,CAOJ,IACGA,EAAaF,IAGbE,EAAaF,IACbD,EAAYnvD,OAAS,EACrBovD,EAAgBE,GAEpBH,EAAY1vD,KAAK4vD,GACpB,IACMF,CACV,EACG7gD,EAAQ,SAAS/Q,EAAOiyD,GACxB,GAAItrD,MAAMC,QAAQ5G,IAAU2G,MAAMC,QAAQqrD,GAAc,CACpD,IAAIC,GAAW,EAOf,OANAvD,EAAAA,EAAAA,IAAK3uD,GAAO,SAACiD,EAAOkvD,GAChB,GAAIA,IAAcF,EAAYhvD,GAE1B,OADAivD,GAAW,GACJ,CAEd,KACGA,CAIP,CACD,OAAIlyD,IAAUiyD,CAIjB,EACUG,EAAY,SAASv6C,GAC5B,IAAIw6C,EAAQC,EACZ,QAAQnrD,EAAAA,EAAAA,IAAK0Q,IACT,IAAK,SACD,OAAOA,EAAI1T,MAAM,MAAO,GAC5B,IAAK,SACD,MAAO,CAAC,QAAUkuD,EAASx6C,EAAIhI,SAAM,IAAWwiD,EAASA,EAASx6C,EAAI9Z,EAAG,QAAUu0D,EAASz6C,EAAI/H,SAAM,IAAWwiD,EAASA,EAASz6C,EAAIqO,GAC3I,IAAK,SACD,MAAO,CAACrO,GACZ,IAAK,QACD,OAAOA,EACX,QACI,OAAO,KAElB,EACU06C,EAAe,SAAS1yC,GAC/B,IAAIzb,GAAMouD,EAAAA,EAAAA,IAAS3yC,GAAMA,EAAKA,EAAGzgB,WAC7BqzD,EAAMruD,EAAI2M,MAAM,kBAIpB,OAHA0hD,IAAO9D,EAAAA,EAAAA,IAAK8D,GAAK,SAAC7xD,EAAG8xD,GACjBtuD,EAAMA,EAAIV,QAAQgvD,EAAM,KAAOA,EAAK5mD,aAAe,KACtD,IACM1H,CACV,EACUuuD,EAAiB,SAASvuD,GACjC,IAAIquD,EAAMruD,EAAI2M,MAAM,YAKpB,OAJA0hD,GAAOA,EAAIjwD,SAAQ,SAAAowD,GACf,IAAIC,EAAWj5B,SAASg5B,EAAKlvD,QAAQ,KAAM,KAC3CU,EAAMA,EAAIV,QAAQkvD,EAAMrnD,OAAOC,aAAaqnD,GAC/C,IACMzuD,CACV,EACU0uD,EAAe,SAASj7C,EAAKk7C,GACpC,IAAIC,EAAOZ,EAAUv6C,GACjB9Z,EAAIg1D,EAAe94B,WAAW+4B,GAAQA,EAAK,IAAMp5B,SAASo5B,GAAQA,EAAK,GAAI,IAC3E9sC,EAAI6sC,EAAe94B,WAAW+4B,GAAQA,EAAK,IAAMp5B,SAASo5B,GAAQA,EAAK,GAAI,IAO/E,OANKC,SAASl1D,KACVA,EAAI,GAEHk1D,SAAS/sC,KACVA,EAAInoB,GAED,CACHA,EAAGA,EACHmoB,EAAGA,EAEV,EACUgtC,EAAa,SAAS9uD,GAC7B,GAAIA,aAAe4pD,EAAAA,EACf,OAAO5pD,EAAIhF,WACR,IAAI+iB,EAAAA,EAAAA,IAAS/d,IAAQuC,MAAMC,QAAQxC,GACtC,IACI,IAAI+uD,EAAUvrD,KAAKC,UAAUzD,GAC7B,MAAO,OAAS+uD,EAAU/uD,EAAM+uD,CAGnC,CAFC,MAAOpoD,GACL,OAAO3G,CACV,CAEL,OAAOA,CACV,EACUgvD,EAAe,SAASl8C,GAC/B,OAAOA,EAAOxT,QAAQ,0BAA2B,OACpD,EACU2vD,EAA8B,SAASrzD,GAC9C,IAAIszD,GAAYzxD,EAAAA,EAAAA,KAASmkD,uBAIzB,OAHImK,EAAAA,EAAAA,IAAUnwD,KACVA,EAAQA,EAAMZ,WAAWsE,QAAQ,IAAK4vD,IAEnCtzD,CACV,EACU4jB,EAAO,WAAa,EACpB2vC,EAAY,WACnB,OAAQ,IAAIp0C,EAAAA,IAAUze,UAAU0e,SACnC,EACUo0C,EAAO,SAASC,EAAUC,EAAeC,GAIhD,IAHA,IAAIruD,EAAS,GAETsuD,GAAiBD,EACZlpD,EAAI,EAAGA,EAAIgpD,EAAShxD,OAAQgI,MACvBipD,EAAcD,EAAShpD,GAAIA,KACvBmpD,GACVtuD,EAAOpD,KAAKuxD,EAAShpD,IAG7B,OAAOnF,CACV,EACGuuD,EAAgB,SAACC,EAAQC,EAAQC,EAAO90D,GACxC,OAAI40D,EAAOrxD,SAAWsxD,EAAOtxD,SAGrBqxD,EAAOG,MAAK,SAACvtD,EAAMwtD,GAAP,OAAgBC,EAAeztD,EAAMqtD,EAAOG,GAAMF,EAAQ,GAAGn5C,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS,CACnGk1D,QAAQ,IADQ,GAGvB,EACGC,EAAiB,SAACC,EAASC,EAASP,EAAO90D,GAC3C,IAAIs1D,EAAQ10D,OAAOgB,KAAKwzD,GACpBG,EAAQ30D,OAAOgB,KAAKyzD,GACxB,GAAIC,EAAM/xD,SAAWgyD,EAAMhyD,OACvB,OAAO,EAEX,IAAIiyD,EAAW,IAAI7zD,IAAI4zD,GACvB,OAAQD,EAAMP,MAAK,SAAA7vD,GAAG,OAAKswD,EAASj5D,IAAI2I,KAAS+vD,EAAeG,EAAQlwD,GAAMmwD,EAAQnwD,GAAM4vD,EAAQ,EAAG90D,EAAjF,GACzB,EACGy1D,EAA8B,CAC9BC,SAAU,EACVR,QAAQ,GAERD,EAAiB,SAACU,EAAQC,EAAQd,EAAO90D,GACzC,IACYk1D,EAERl1D,EAFAk1D,OACUQ,EACV11D,EADA01D,SAEAG,GAAcC,EAAAA,EAAAA,IAAaH,GAAQ,GACnCI,GAAcD,EAAAA,EAAAA,IAAaF,GAAQ,GAEvC,QAAQ,GACJ,KAFmBV,EAASW,IAAgBE,EAAcF,GAAeE,EAGzE,KAAKjB,GAASY,EACV,OAAO,EACX,KAAKzyC,EAAAA,EAAAA,IAAS4yC,KAAgB5yC,EAAAA,EAAAA,IAAS8yC,GACnC,OAAOZ,EAAeU,EAAaE,EAAajB,EAAO90D,GAC3D,KAAKyH,MAAMC,QAAQmuD,IAAgBpuD,MAAMC,QAAQquD,GAC7C,OAAOpB,EAAckB,EAAaE,EAAajB,EAAO90D,GAC1D,QACI,OAAO,EAElB,EACUg2D,EAAe,SAASL,EAAQC,GACvC,IAAI51D,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK+6C,EAC3EQ,GAAiBt6C,EAAAA,EAAAA,GAAS,CAAC,EAAG85C,EAA6Bz1D,GAC/D,OAAOi1D,EAAeU,EAAQC,EAAQ,EAAGK,EAC5C,mFCpRGvxC,EAAO,WAAa,EACpBwxC,EAAmB,SAASluD,GAC5B,MAAI,qBAAuB/I,UAAYwyD,EAAAA,EAAAA,IAAWxyD,QAAQ+I,IAGnD/I,QAAQ+I,GAAQtI,KAAKT,SAFjBylB,CAGd,EACUyxC,EAAS,CAChBC,IAAKF,EAAiB,OACtBt2C,KAAMs2C,EAAiB,QACvBh3D,KAAMg3D,EAAiB,QACvBj0D,MAAOi0D,EAAiB,WAET,WACf,SAASG,EAAOC,EAAWt5D,GACvB,IAAKs5D,EACD,MAAM,IAAIn5D,MAAMH,EAEvB,CAOJ,CAZkB,8MCDfu5D,EAAiBC,EAAAA,EAAAA,OACjBC,EAAYD,EAAAA,EAAAA,UACZzuD,EAASyuD,EAAAA,EAAAA,OAIFE,EAAe,SAAS16D,GAC/B,OAJ0B26D,EAIJ36D,EAHf26D,EAAKnyD,QAAQ,MAAO,KAAKA,QAAQ,MAAO,KAGnBS,MAAM,KAJjB,IAAS0xD,CAK7B,EAQGC,EAAkB,SAAS7+C,EAAK2B,EAAU5Y,EAAOd,GACjD,GAAI,SAAW0Z,EACX,MAAM,IAAIwI,EAAAA,EAAAA,MAAa,SAE3B,IAAI6W,EAAYhhB,EAAI2B,GAChB1Z,EAAQ62D,mBAAqBJ,EAAU19B,GACvChxB,EAAOgxB,EAAWj4B,GAElBiX,EAAI2B,GAAY5Y,CAEvB,EACGg2D,EAAiB,SAAS92D,GAG1B,OAFAA,EAAUA,GAAW,CAAC,GACd62D,uBAAoB,IAAW72D,EAAQ62D,mBAAoB72D,EAAQ62D,kBACpE72D,CACV,EAED,SAAS+2D,EAAOj2D,EAAOd,GACnB,OAAOA,EAAQ62D,kBAAoBN,EAAez1D,GAASA,CAC9D,CACM,IAAIk2D,EAAgB,SAASL,GAIhC,GAHIj8C,UAAUnX,OAAS,IACnBozD,EAAO,GAAGhvD,MAAMtG,KAAKqZ,aAEpBi8C,GAAQ,SAAWA,EACpB,OAAO,SAAS5+C,GACZ,OAAOA,CACV,EAEL,GAAI,kBAAoB4+C,EAAM,CAC1B,IAAIpxD,EAAOmxD,EAAaC,GACxB,OAAO,SAAS5+C,EAAK/X,GAKjB,IAHA,IAAIi3D,GADJj3D,EAAU82D,EAAe92D,IACEk3D,cACvBC,GAAkB,iBAAkBn3D,GACpCqc,EAAU06C,EAAOh/C,EAAK/X,GACjBuL,EAAI,EAAGA,EAAIhG,EAAKhC,OAAQgI,IAAK,CAClC,IAAK8Q,EAAS,CACV,GAAI,MAAQA,GAAW86C,EACnB,OAAOn3D,EAAQghC,aAEnB,KACH,CACD,IAAIo2B,EAAW7xD,EAAKgG,GACpB,GAAI4rD,IAAmBl0C,EAAAA,EAAAA,IAAS5G,MAAc+6C,KAAY/6C,GACtD,OAAOrc,EAAQghC,aAEnB,IAAIjzB,EAAOgpD,EAAO16C,EAAQ+6C,GAAWp3D,IAChCi3D,IAAgBxF,EAAAA,EAAAA,IAAW1jD,KAC5BA,EAAOA,EAAK1M,KAAKgb,IAErBA,EAAUtO,CACb,CACD,OAAOsO,CACV,CACJ,CACD,OAAI5U,MAAMC,QAAQivD,GACPU,EAAeV,IAEtBlF,EAAAA,EAAAA,IAAWkF,GACJA,OADX,CAGH,EAED,SAASU,EAAeC,GAEpB,IADA,IAAIC,EAAkB,CAAC,EACdhsD,EAAI,EAAGqb,EAAI0wC,EAAQ/zD,OAAQgI,EAAIqb,EAAGrb,IAAK,CAC5C,IAAIisD,EAASF,EAAQ/rD,GACrBgsD,EAAgBC,GAAUR,EAAcQ,EAC3C,CACD,OAAO,SAASz/C,EAAK/X,GACjB,IAAIoG,EAkBJ,OAjBAqpD,EAAAA,EAAAA,IAAK8H,GAAkB,SAASv7D,GAC5B,IAAI8E,EAAQ8B,KAAKmV,EAAK/X,GACtB,QAAI,IAAWc,EAAf,CAMA,IAHA,IAAIub,EAAUjW,IAAWA,EAAS,CAAC,GAC/Bb,EAAOvJ,EAAKiJ,MAAM,KAClBwyD,EAAOlyD,EAAKhC,OAAS,EAChB4U,EAAK,EAAGA,EAAKs/C,EAAMt/C,IAAM,CAC9B,IAAIu/C,EAAWnyD,EAAK4S,GACdu/C,KAAYr7C,IACdA,EAAQq7C,GAAY,CAAC,GAEzBr7C,EAAUA,EAAQq7C,EACrB,CACDr7C,EAAQ9W,EAAKkyD,IAAS32D,CAXrB,CAYJ,IACMsF,CACV,CACJ,CACD,IAAIuxD,EAAyB,SAAS5/C,EAAK2B,EAAU5Y,EAAOd,GACxD,IAAIixD,EAAAA,EAAAA,IAAUnwD,GACV,OAAOA,EAEX,IAAI2qC,EAAW,CAAC,EAEhB,OADAmrB,EAAgB7+C,EAAK2B,EAAU+xB,EAAUzrC,GAClCyrC,CACV,EACUmsB,EAAgB,SAASjB,GAEhC,IAAIkB,GADJlB,EAAOD,EAAaC,GAAQ,SACFpzD,OAAS,EACnC,OAAO,SAASwU,EAAKjX,EAAOd,GAExB,IAAI83D,EAAef,EAAOh/C,EAD1B/X,EAAU82D,EAAe92D,IAEzB22D,EAAKrzD,SAAS,SAASy0D,EAAcC,GACjC,IAAIC,EAlHI,SAASlgD,EAAK2B,EAAU1Z,GAExC,OADAA,EAAUA,GAAW,CAAC,EAEX+2D,EADP,SAAWr9C,EACG3B,EAEJA,EAAI2B,GAFK1Z,EAG1B,CA4G+Bk4D,CAAcJ,EAAcC,EAAc/3D,GAC1Dm4D,GAAkBn4D,EAAQk3D,gBAAiBzF,EAAAA,EAAAA,IAAWwG,KAAmBxB,EAAUwB,GACnFD,IAAeH,EACX73D,EAAQ2hC,QAASqI,EAAAA,EAAAA,IAAclpC,OAAYmwD,EAAAA,EAAAA,IAAUgH,KAAkBjuB,EAAAA,EAAAA,IAAciuB,KACrFA,EAAgBN,EAAuBG,EAAcC,EAAcE,EAAej4D,IAClFo4D,EAAAA,EAAAA,IAAoBH,EAAen3D,GAAO,GAAO,IAC1Cq3D,EACPL,EAAaC,GAAcj3D,GAE3B81D,EAAgBkB,EAAcC,EAAcj3D,EAAOd,IAGvDi4D,EAAgBN,EAAuBG,EAAcC,EAAcE,EAAej4D,GAC9Em4D,IACAF,EAAgBA,EAAc52D,KAAKy2D,IAEvCA,EAAeG,EAEtB,GACJ,CACJ,EACUnC,EAAe,SAASh1D,EAAOu3D,GACtC,IAAIr4D,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAChF,GAAI5Z,aAAiB4E,KACjB,OAAO5E,EAAMw3D,UAEjB,GAAIx3D,GAASA,aAAiBiuD,EAAAA,GAASjuD,EAAMquD,QACzC,OAAOruD,EAAMquD,UAEjB,IAAKkJ,GAAiB,kBAAoBv3D,EAAO,CAC7C,IAAIy3D,EACJ,GAAI,UAAY,OAASv4D,QAAW,IAAWA,GAAmB,QAAUu4D,EAAwBv4D,EAAQw4D,uBAAoB,IAAWD,OAAlF,EAAmHA,EAAsBE,aAAc,CAC5M,IAAIC,EAAkC,mBACtC53D,EAAQA,EAAM63D,UAAU,OAAOn0D,QAAQk0D,EAAiC,GAC3E,CACD,OAAO,OAAS14D,QAAW,IAAWA,GAAWA,EAAQ44D,OAAS93D,EAAM+F,kBAAkB7G,EAAQ44D,QAAU93D,EAAMsW,aACrH,CACD,OAAOtW,CACV,wJCvKG+3D,EAAiB,CAAC,CAClB7wD,OAAQ,UACRtE,QAAS,OACT4nC,MAAO,YACR,CACCtjC,OAAQ,SACRtE,QAAS,OACT4nC,MAAO,YACR,CACCtjC,OAAQ,SACRtE,QAAS,aAETo1D,EAAe,WACf,IAAIzG,EAAOzvD,KACXA,KAAKm2D,OAAS,UACdn2D,KAAKo2D,SAAW,CAAC,EACjBH,EAAev1D,QAAQ,SAASX,GAC5B,IAAIkiD,EAAaliD,EAAOqF,OACxBpF,KAAKiiD,EAAa,cAAe2K,EAAAA,EAAAA,KACjC5sD,KAAKiiD,GAAc,WACf,OAAOjiD,KAAKiiD,EAAa,QAAQjiD,KAAKo2D,SAAUt+C,UACnD,EAAChb,KAAKkD,MACPA,KAAKo2D,SAASr2D,EAAOe,SAAW,SAASA,GACrC,IAAKA,EACD,OAAOd,KAEX,IAAI2sD,EAAY8C,EAAKxN,EAAa,aAQlC,OAPI0K,EAAUuB,QACVptD,EAAQiX,MAAM03C,EAAKxN,EAAa,WAAYwN,EAAKxN,EAAa,SAE9D0K,EAAU5e,IAAI,SAASoY,EAASvoD,GAC5BkD,EAAQiX,MAAMouC,EAASvoD,EAC1B,EAACd,KAAKkD,OAEJA,IACV,CACJ,EAAClD,KAAKkD,OACPA,KAAKo2D,SAASC,OAAS,SAASv1D,GAC5B,OAAOd,KAAK4uD,KAAK9tD,GAASwuD,KAAKxuD,EAClC,EACDd,KAAKo2D,SAAS74C,MAAQ,SAASzc,GAC3B,OAAOd,KAAKlC,KAAK,KAAMgD,EAC1B,EACDd,KAAKo2D,SAASt4D,KAAO,SAASc,EAASY,GACnC,IAAIgE,EAAS,IAAI0yD,EAkBjB,MAjBA,CAAC,OAAQ,QAAQx1D,QAAQ,SAAS0E,GAC9B,IAAI7H,EAAW,SAAW6H,EAASxG,EAAUY,EAC7CQ,KAAKoF,IAAS,WACV,GAAK7H,EAAL,CAIA,IAAI+4D,EAAiB/4D,GAAYA,EAASwa,MAAM/X,KAAM8X,YAClDy+C,EAAAA,EAAAA,IAAWD,GACXA,EAAe1H,KAAKprD,EAAO5E,SAAS0wD,KAAK9rD,EAAOhE,SACzCg3D,EAAAA,EAAAA,IAAUF,GACjBA,EAAex4D,KAAK0F,EAAO5E,QAAS4E,EAAOhE,QAE3CgE,EAAO5E,QAAQmZ,MAAM/X,MAAMquD,EAAAA,EAAAA,IAAUiI,GAAkB,CAACA,GAAkBx+C,UAP7E,MAFGtU,EAAO,SAAW4B,EAAS,UAAY,UAAU2S,MAAM/X,KAAM8X,UAWpE,GACJ,EAAChb,KAAKkD,OACAwD,EAAO8Z,SACjB,EACDtd,KAAKo2D,SAAS1tB,MAAQ,WAClB,OAAO+mB,EAAK0G,MACf,EACDn2D,KAAKo2D,SAAS94C,QAAU,SAAS1f,GAC7B,OAAOA,GAAO6nD,EAAAA,EAAAA,GAAO7nD,EAAM6xD,EAAK2G,UAAY3G,EAAK2G,QACpD,EACDp2D,KAAKo2D,SAAS94C,QAAQtd,KACzB,EAiBM,SAASy2D,EAAYn5C,EAAS6oC,GACjC,IAAIoQ,EAAAA,EAAAA,IAAWj5C,GACX,OAAOA,EACJ,IAAIk5C,EAAAA,EAAAA,IAAUl5C,GAAU,CAC3B,IAAIkG,EAAI,IAAI0yC,EAUZ,OATA54C,EAAQxf,MAAM,WACV0lB,EAAEsrC,YAAY/2C,MAAMyL,EAAG,CAAC2iC,GAASl2C,OAAO,CACpC,GAAGlL,MAAMtG,KAAKqZ,aAErB,IAAI,WACD0L,EAAEmrC,WAAW52C,MAAMyL,EAAG,CAAC2iC,GAASl2C,OAAO,CACnC,GAAGlL,MAAMtG,KAAKqZ,aAErB,IACM0L,CACV,CACD,OAAQ,IAAI0yC,GAAcpH,YAAY3I,EAAS,CAAC7oC,GACnD,CAjCD24C,EAAev1D,SAAS,SAASX,GAC7B,IAAIkiD,EAAaliD,EAAOqF,OACpBsjC,EAAQ3oC,EAAO2oC,MACnBwtB,EAAaluD,UAAUi6C,EAAa,QAAU,SAASkE,EAASvoD,GAC5D,IAAI+uD,EAAY3sD,KAAKiiD,EAAa,aASlC,MARI,YAAcjiD,KAAK0oC,UACnB1oC,KAAKiiD,EAAa,QAAUrkD,EAC5BoC,KAAKiiD,EAAa,WAAakE,EAC3Bzd,IACA1oC,KAAKm2D,OAASztB,GAElBikB,EAAUI,KAAK5G,EAASvoD,IAErBoC,IACV,CACJ,IAmBD,IAAI02D,EAAW,WACX,GAAI,IAAM5+C,UAAUnX,OAChB,OAAO81D,EAAY3+C,UAAU,IAgBjC,IAdA,IAAI6d,EAAS,GAAG5wB,MAAMtG,KAAKqZ,WACvB6+C,EAAW,GACXC,EAAgB,EAChBrI,EAAW,IAAI2H,EACfW,EAAc,SAASluD,GACvB,OAAO,SAASzK,GACZy4D,EAAShuD,GAAK3I,KACd21B,EAAOhtB,GAAKmP,UAAUnX,OAAS,EAAI,GAAGoE,MAAMtG,KAAKqZ,WAAa5Z,IAC9D04D,IACsBjhC,EAAOh1B,QACzB4tD,EAASO,YAAY6H,EAAUhhC,EAEtC,CACJ,EACQhtB,EAAI,EAAGA,EAAIgtB,EAAOh1B,OAAQgI,KAC3B4tD,EAAAA,EAAAA,IAAW5gC,EAAOhtB,IAClBgtB,EAAOhtB,GAAG2U,UAAUsxC,KAAKiI,EAAYluD,IAAI2mD,KAAKf,EAAS/uD,QAEvDo3D,IAMR,OAHIA,IAAkBjhC,EAAOh1B,QACzB4tD,EAASO,YAAY6H,EAAUhhC,GAE5B44B,EAASjxC,SACnB,EAKM,SAASD,IACZ,OAAO,IAAI64C,CACd,CACM,SAAS7G,IACZ,OAAOqH,EAAS3+C,MAAM/X,KAAM8X,UAC/B,iHChJc,WAAS6tB,GACpB,IAAImxB,EAAY3K,EAAAA,EAAAA,QAAcxmB,GAC1BoxB,EAAgBD,EAChB/tB,EAAW,IAAIguB,EAAcpxB,GAC7BqxB,EAAgB,CAAC,EACjBC,EAAe,SAASC,EAAiBC,IACzCtK,EAAAA,EAAAA,IAAKqK,GAAkB,SAAS50D,IACxBusD,EAAAA,EAAAA,IAAW9lB,EAASzmC,KAChB60D,GAAYxxB,EAAOrjC,KACnBqjC,EAAOrjC,GAAO,WACV,OAAOymC,EAASzmC,GAAKyV,MAAM4tB,EAAQ7tB,UACtC,IAGDq/C,IACAH,EAAc10D,GAAOqjC,EAAOrjC,IAEhCqjC,EAAOrjC,GAAOymC,EAASzmC,GAE9B,GACJ,EAYD,OAXA20D,EAAatxB,GAAQ,GACrBA,EAAOyxB,OAAS,SAASF,GACrBH,EAAgBA,EAAc1rC,QAAQ6rC,GACtCnuB,EAAW,IAAIguB,EACfE,EAAaC,EAChB,EACDvxB,EAAO0xB,eAAiB,YACpB5R,EAAAA,EAAAA,GAAO9f,EAAQqxB,GACfD,EAAgBD,EAChB/tB,EAAW,IAAI+tB,CAClB,EACMnxB,CACV,uGC/BG2xB,EAAY,kCCZK,SDYuCj1D,MAAM,KAAK0C,MAAM,EAAG,GAAG0H,KAAK,KAAO,IAChF,WAAS8qD,EAAYj4C,GAChC,IAAI4D,EAAU,CACVs0C,gBAAgB/R,EAAAA,EAAAA,GAAOnmC,EAAQi4C,GAC/Bh9D,MAAO,WACH,OAAOk9D,EAAU,GAAG1yD,MAAMtG,KAAKqZ,WAClC,EACD07C,IAAK,SAASz1C,GACV,IAAI3Y,EAAS,MACT,SAASgR,KAAK2H,GACd3Y,EAAS,QACF,SAASgR,KAAK2H,KACrB3Y,EAAS,QAEbmuD,EAAAA,EAAOnuD,GAAQ,QAAUA,EAAS2Y,EAAK25C,EAAe,GAAG3yD,MAAMtG,KAAKqZ,YACvE,GAGL,SAAS4/C,EAAe95D,GACpB,IAAImgB,EAAKngB,EAAK,GAEd,OAAO+5D,EAAc55C,EAAI65C,EAAc75C,EADvCngB,EAAOA,EAAKmH,MAAM,IAErB,CAED,SAAS6yD,EAAc75C,EAAIngB,GAEvB,OADAA,EAAO,CAACslB,EAAQs0C,eAAez5C,IAAK9N,OAAOrS,GACpCi6D,EAAAA,GAAAA,MAAa73D,KAAMpC,GAAMgE,QAAQ,WAAY,GACvD,CAED,SAAS+1D,EAAc55C,EAAI+5C,GACvB,OAAOD,EAAAA,GAAAA,MAAa73D,KAAM,CAAC,uBAAwB+d,EAAI+5C,EAASC,EAAYh6C,IAC/E,CAED,SAAS05C,EAAU75D,GACf,IAAImgB,EAAKngB,EAAK,GAEVk6D,EAAUF,EAAc75C,EAD5BngB,EAAOA,EAAKmH,MAAM,IAEdlC,EAAMk1D,EAAYh6C,GAClB3jB,EAAUu9D,EAAc55C,EAAI+5C,GAChC,OAAOrS,EAAAA,EAAAA,GAAO,IAAIlrD,MAAMH,GAAU,CAC9B49D,KAAMj6C,EACNk6C,UAAWH,EACXj1D,IAAKA,GAEZ,CAED,SAASk1D,EAAYh6C,GACjB,OAAOu5C,EAAYv5C,CACtB,CACD,OAAOmF,CACV,0GE3DUg1C,EAAmB,SAASvgD,EAAQ4vB,EAAQ4wB,GAEnD,IAAK,IAAIt7D,KADT8a,EAASA,GAAU,CAAC,EACH4vB,EACb,GAAIvpC,OAAOgK,UAAU6X,eAAephB,KAAK8oC,EAAQ1qC,GAAO,CACpD,IAAIqB,EAAQqpC,EAAO1qC,GACbA,KAAQ8a,IAAWwgD,IACrBxgD,EAAO9a,GAAQqB,EAEtB,CAEL,OAAOyZ,CACV,EACU8tC,EAAS,SAASA,EAAO9tC,GAEhC,IAAIhP,EAAI,EACJyvD,GAAO,EAMX,IALI,mBAHJzgD,EAASA,GAAU,CAAC,KAIhBygD,EAAOzgD,EACPA,EAASG,UAAU,IAAM,CAAC,EAC1BnP,KAEGA,EAAImP,UAAUnX,OAAQgI,IAAK,CAC9B,IAAI4+B,EAASzvB,UAAUnP,GACvB,GAAI,MAAQ4+B,EAGZ,IAAK,IAAIjlC,KAAOilC,EAAQ,CACpB,IAAI4oB,EAAcx4C,EAAOrV,GACrB+1D,EAAc9wB,EAAOjlC,GACrBg2D,GAAqB,EACrBhtC,OAAQ,EACR,cAAgBhpB,GAAO,gBAAkBA,GAAOqV,IAAW0gD,IAG3DD,GAAQC,KAAgBjxB,EAAAA,EAAAA,IAAcixB,KAAiBC,EAAqBzzD,MAAMC,QAAQuzD,MAEtF/sC,EADAgtC,EACQnI,GAAetrD,MAAMC,QAAQqrD,GAAeA,EAAc,GAE1DA,IAAe/oB,EAAAA,EAAAA,IAAc+oB,GAAeA,EAAc,CAAC,EAEvEx4C,EAAOrV,GAAOmjD,EAAO2S,EAAM9sC,EAAO+sC,SAC3B,IAAWA,IAClB1gD,EAAOrV,GAAO+1D,GAErB,CACJ,CACD,OAAO1gD,CACV,8FClDD,IAAI5T,EAAM,SAAC4xB,EAAQp4B,GACf,GAAIsH,MAAMC,QAAQ6wB,GACd,OAAOA,EAAO5xB,IAAIxG,GAEtB,IAAIiG,EAAS,GACb,IAAK,IAAIlB,KAAOqzB,EACZnyB,EAAOpD,KAAK7C,EAASo4B,EAAOrzB,GAAMA,IAEtC,OAAOkB,CACV,EACGqpD,EAAO,SAACl3B,EAAQp4B,GAChB,GAAKo4B,EAAL,CAGA,GAAI,WAAYA,EACZ,IAAK,IAAIhtB,EAAI,EAAGA,EAAIgtB,EAAOh1B,SACnB,IAAUpD,EAASkB,KAAKk3B,EAAOhtB,GAAIA,EAAGgtB,EAAOhtB,IADlBA,UAMnC,IAAK,IAAIrG,KAAOqzB,EACZ,IAAI,IAAUp4B,EAASkB,KAAKk3B,EAAOrzB,GAAMA,EAAKqzB,EAAOrzB,IACjD,MAIZ,OAAOqzB,CAdN,CAeJ,sHCfG4iC,GAPQ,WACR,SAASC,IAAU,CAKtB,CANW,GAOI,SAASz0D,EAAKgN,GAC1B,IACIzO,EACAqG,EAFA3J,EAAO,GAGX,IAAKsD,KAAOyB,EACJ/F,OAAOgK,UAAU6X,eAAephB,KAAKsF,EAAKzB,IAC1CtD,EAAKoB,KAAKkC,GAuBlB,IApBAtD,EAAKo6B,MAAM,SAASrrB,EAAGC,GACnB,IAAIyqD,GAAYC,EAAAA,EAAAA,IAAU3qD,GACtB4qD,GAAYD,EAAAA,EAAAA,IAAU1qD,GAC1B,OAAIyqD,GAAaE,EACN5qD,EAAIC,EAEXyqD,IAAcE,GACN,GAEPF,GAAaE,EACP,EAEP5qD,EAAIC,GACI,EAERD,EAAIC,EACG,EAEJ,CACV,IACIrF,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IAEzBoI,EADAzO,EAAMtD,EAAK2J,GACD5E,EAAIzB,GAErB,GACGs2D,EAAwB,SAASjhD,EAAQxK,EAAUjP,EAAO26D,IACrDA,GAAqBjF,EAAAA,EAAAA,UAA0Bj8C,EAAOxK,IACvDymD,EAAAA,EAAAA,OAAuBj8C,EAAOxK,GAAWjP,GAEzCyZ,EAAOxK,GAAYjP,CAE1B,EACGs3D,EAAsB,SAASA,EAAoB79C,EAAQigC,EAASkhB,EAAqBD,GACzF,IAAIE,EACAlwB,EACJ,IAAK,IAAIzvC,KAAQw+C,EAGb,GAFAmhB,EAAYphD,EAAOve,GACnByvC,EAAW+O,EAAQx+C,GACf,cAAgBA,GAAQ,gBAAkBA,GAAQue,IAAWkxB,EAAjE,CAGA,IAAIzB,EAAAA,EAAAA,IAAcyB,GAEdA,EAAW2sB,GADIsD,GAAsBz4C,EAAAA,EAAAA,IAAS04C,IAAa3xB,EAAAA,EAAAA,IAAc2xB,IAC/BA,EAAY,CAAC,EAAGlwB,EAAUiwB,EAAqBD,QAEzF,IAAWhwB,GAAYkwB,IAAclwB,GACrC+vB,EAAsBjhD,EAAQve,EAAMyvC,EAAUgwB,EANjD,CASL,OAAOlhD,CACV,4FCxED,IAAIqhD,EAAiB,MACjBC,EAA0B,KAE9B,SAASC,EAA4B3hB,GACjC,IACI,OAAO,IAAI4hB,aAKd,CAJC,MAAO/5D,GACL,IAAIg6D,EAAe7hB,EAASrkB,cAAc7qB,cAAc,SAExD,OADAkvC,EAAShvC,YAAY6wD,GACdA,EAAa1wD,KACvB,CACJ,CAED,SAAS2wD,EAAaC,EAAkB1wD,EAAa2wD,GACjD,IAAK,IAAI5wD,EAAI,EAAGA,EAAIC,EAAYjI,OAAQgI,IAAK,CACzC,IAAID,EAAQE,EAAYD,GACxB,IACI,IAAK,IAAImF,EAAI,EAAGA,EAAIpF,EAAMM,SAASrI,OAAQmN,IACvC/E,EAAWuwD,EAAkB5wD,EAAMM,SAAS8E,GAAIyrD,EAExC,CAAd,MAAOn6D,GAAO,CACnB,CACJ,CAED,SAAS2J,EAAWuwD,EAAkBlxD,EAAMmxD,GACxC,IAAIC,EAAoBC,EAAgBC,EAAiBC,EAAuBC,EAAYC,GAC7EN,IAAuB,QAAUC,EAAqBpxD,EAAK0xD,oBAAiB,IAAWN,OAAqB,EAASA,EAAmBj0D,SAASyzD,MAAqB,QAAUS,EAAiBrxD,EAAKY,gBAAa,IAAWywD,GAA0B,QAAUC,EAAkBD,EAAe,UAAO,IAAWC,GAA2B,QAAUC,EAAwBD,EAAgBI,oBAAiB,IAAWH,OAA/K,EAAgNA,EAAsBp0D,SAASyzD,MAAqB,QAAUY,EAAaxxD,EAAKhP,YAAS,IAAWwgE,OAAa,EAASA,EAAWlhB,WAAWsgB,KAAoB,aAAe,QAAUa,EAAczxD,EAAK0uB,aAAU,IAAW+iC,OAAc,EAASA,EAAYpwC,cAEltB6vC,EAAiBvwD,WAAWX,EAAK6+C,QAASqS,EAAiBtwD,SAASrI,OAE3E,CACM,SAASo5D,EAAmBC,GAC/B,IAAIC,EACAC,EAAKF,EAASpgE,IAAI,GAClBgR,EAAO,QAAUqvD,EAAkBC,EAAGvS,mBAAgB,IAAWsS,OAAkB,EAASA,EAAgBx7D,KAAKy7D,GACrH,GAAM,OAAStvD,QAAQ,IAAWA,GAAQA,EAAKi+C,KAA/C,CAGKoQ,GAEDI,EADAJ,EAA0BC,EAA4BtuD,GAChBsvD,EAAGhnC,cAActqB,aAAa,GAExE,IAAIuxD,EAA6BjB,EAA4BtuD,GAC7DyuD,EAAac,EAA4BvvD,EAAKhC,aAAa,GAC3DgC,EAAKwvD,mBAAqB,CAACnB,EAAyBkB,EAPnD,CAQJ,CAED,SAASE,EAA6B7tD,EAASuB,EAAGC,GAC9C,IAAIssD,EAAO9tD,EAAQ+tD,wBACnB,OAAOD,GAAQvsD,GAAKusD,EAAK11B,MAAQ72B,EAAIusD,EAAK51B,OAAS12B,GAAKssD,EAAK71B,KAAOz2B,EAAIssD,EAAK31B,MAChF,CAsBM,SAASmkB,EAA2B/6C,EAAGC,EAAGpD,GAE7C,IADA,IAAI4vD,EArBR,WACI,IAAIC,EAAa,EACbvU,EAAQ,GACZ,MAAO,CACH9lD,KADG,SACEwE,GAED,OADAshD,EAAM9lD,KAAKwE,GACJ5E,IACV,EACDk4B,MALG,WAOC,OADAuiC,IACOvU,EAAMuU,EAAa,EAC7B,EACG95D,aACA,OAAOulD,EAAMvlD,OAAS85D,CACzB,EACGvU,YACA,OAAOA,CACV,EAER,CAEsBwU,GAAct6D,KAAKwK,GAC/B4vD,EAAa75D,QAEhB,IADA,IAAIu5D,EAAKM,EAAatiC,QACbvvB,EAAI,EAAGA,EAAIuxD,EAAGxuB,WAAW/qC,OAAQgI,IAAK,CAC3C,IAAIgyD,EAAYT,EAAGxuB,WAAW/iC,GAC1BgyD,EAAU5kB,WAAaC,KAAKC,cAAgBokB,EAA6BM,EAAW5sD,EAAGC,IAAM,SAAW4sD,iBAAiBD,GAAWE,eACpIL,EAAap6D,KAAKu6D,EAEzB,CAEL,IAAIn3D,EAASg3D,EAAatU,MAAM4U,UAEhC,OADAt3D,EAAOoqD,MACApqD,CACV,4JClFUu3D,EAAa,WACpB,IAAIC,EAAe,CAAC,IAAIpjC,OAAO,IAAK,KAAM,IAAIA,OAAO,IAAK,KAAM,IAAIA,OAAO,IAAK,KAAM,IAAIA,OAAO,IAAK,KAAM,IAAIA,OAAO,IAAK,MAC5H,OAAO,SAASl2B,GACZ,OAAO+H,OAAO/H,GAAKE,QAAQo5D,EAAa,GAAI,SAASp5D,QAAQo5D,EAAa,GAAI,UAAUp5D,QAAQo5D,EAAa,GAAI,SAASp5D,QAAQo5D,EAAa,GAAI,QAAQp5D,QAAQo5D,EAAa,GAAI,OACvL,CACJ,CALuB,GAkBbC,EAAe,SAASllD,GAC/B,IAAImlD,EAbQ,SAASnlD,GACrB,cAAeA,GACX,IAAK,SACD,OAAOA,EAAI1T,MAAM,MAAO,GAC5B,IAAK,SACD,MAAO,CAAC0T,EAAIhI,GAAKgI,EAAI9Z,GAAK8Z,EAAI6uB,KAAM7uB,EAAI/H,GAAK+H,EAAIqO,GAAKrO,EAAI0uB,IAAK1uB,EAAIhI,GAAKgI,EAAI9Z,GAAK8Z,EAAI2uB,MAAO3uB,EAAI/H,GAAK+H,EAAIqO,GAAKrO,EAAI4uB,QACtH,IAAK,SACD,MAAO,CAAC5uB,GACZ,QACI,OAAOA,EAElB,CAEcolD,CAAUplD,GACjB6uB,EAAO9M,SAASojC,GAAQA,EAAK,GAAI,IACjCz2B,EAAM3M,SAASojC,GAAQA,EAAK,GAAI,IAChCx2B,EAAQ5M,SAASojC,GAAQA,EAAK,GAAI,IAClCv2B,EAAS7M,SAASojC,GAAQA,EAAK,GAAI,IAavC,OAZK/J,SAASvsB,KACVA,EAAO,GAENusB,SAAS1sB,KACVA,EAAMG,GAELusB,SAASzsB,KACVA,EAAQE,GAEPusB,SAASxsB,KACVA,EAASF,GAEN,CACHA,IAAKA,EACLC,MAAOA,EACPC,OAAQA,EACRC,KAAMA,EAEb,EACM,SAASizB,EAAOr4C,GACnB,IAAK,IAAIstC,EAAOh1C,UAAUnX,OAAQg1B,EAAS,IAAI9wB,MAAMioD,EAAO,EAAIA,EAAO,EAAI,GAAIz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAClGsgB,EAAOtgB,EAAO,GAAKyC,UAAUzC,GAEjC,OAAIw5C,EAAAA,EAAAA,IAAWrvC,GACJA,EAAQ,WAAR,EAAYmW,IAEvBA,EAAOj1B,SAAQ,SAACxC,EAAOiD,IACfuvD,EAAAA,EAAAA,IAASxyD,KACTA,EAAQA,EAAM0D,QAAQ,MAAO,SAEjC,IAAIw5D,EAAiB,IAAIxjC,OAAO,MAAQz2B,EAAQ,MAAO,MACvDqe,EAAWA,EAAS5d,QAAQw5D,EAAgBl9D,EAC/C,IACMshB,EACV,CACM,IAIII,EAAU,WACjB,IAAIy7C,EAAe,MACnB,OAAO,SAAS10D,GACZ,OAAQA,IAASA,EAAK/E,QAAQy5D,EAAc,GAC/C,CACJ,CALoB,ucCnErB,IAAIC,EAAQ,CACR,iBAAkB,QAClB,gBAAiB,OACjB,kBAAmB,SACnB,kBAAmB,UAEnBj2D,EAAO,SAASsgC,GAChB,GAAI,OAASA,EACT,MAAO,OAEX,IAAI41B,EAAev9D,OAAOgK,UAAU1K,SAASmB,KAAKknC,GAClD,MAAO,kBAAoBA,EAAS21B,EAAMC,IAAiB,gBAAkB51B,CAChF,EACG61B,EAAY,SAAS71B,GACrB,MAAO,mBAAqBA,CAC/B,EACG81B,EAAgB,SAASv9D,GACzB,OAAOw6D,EAAUx6D,KAAW,IAAMA,EAAMZ,WAAW8D,QAAQ,IAC9D,EACGs6D,EAAS,SAAS/1B,GAClB,MAAO,SAAWtgC,EAAKsgC,EAC1B,EACG0oB,EAAY,SAAS1oB,GACrB,OAAO,OAASA,QAAU,IAAWA,CACxC,EACGkpB,EAAa,SAASlpB,GACtB,MAAO,oBAAsBA,CAChC,EACG+qB,EAAW,SAAS/qB,GACpB,MAAO,kBAAoBA,CAC9B,EACG+yB,EAAY,SAAS/yB,GACrB,MAAO,kBAAoBA,GAAUwrB,SAASxrB,KAAYg2B,MAAMh2B,EAASxN,WAAWwN,GACvF,EACGtlB,EAAW,SAASslB,GACpB,MAAO,WAAatgC,EAAKsgC,EAC5B,EACGi2B,EAAgB,SAASj2B,GACzB,IAAIx4B,EACJ,IAAKA,KAAYw4B,EACb,OAAO,EAEX,OAAO,CACV,EACGyB,EAAgB,SAASzB,GACzB,IAAKA,GAAU,WAAatgC,EAAKsgC,GAC7B,OAAO,EAEX,IAAIk2B,EAAQ79D,OAAOolD,eAAezd,GAClC,IAAKk2B,EACD,OAAO,EAEX,IAAI9Y,EAAO/kD,OAAO6hB,eAAephB,KAAKo9D,EAAO,gBAAkBA,EAAMx0B,YACrE,MAAO,oBAAsB0b,GAAQ/kD,OAAOV,SAASmB,KAAKskD,KAAU/kD,OAAOV,SAASmB,KAAKT,OAC5F,EACG89D,EAAc,SAAS59D,GACvB,OAAQ,IAAM,CAAC,SAAU,QAAS,YAAYkD,QAAQiE,EAAKnH,GAC9D,EACGylD,EAAW,SAAShe,GACpB,OAAO,MAAQA,GAAUA,IAAWA,EAAO1rC,MAC9C,EACG8hE,EAAa,SAASp2B,GACtB,QAASA,MAAaA,EAAOq2B,SAAUr2B,EAAOs2B,WACjD,EACGzF,EAAY,SAAS7wB,GACrB,QAASA,GAAUkpB,EAAWlpB,EAAO7nC,KACxC,EACGy4D,EAAa,SAAS5wB,GACtB,QAASA,GAAUkpB,EAAWlpB,EAAOipB,OAASC,EAAWlpB,EAAO2pB,KACnE,EACG4M,EAAU,SAASv2B,GACnB,SAAUA,IAAUA,EAAOw2B,eAC9B,6DCpED,KAAeC,EAAAA,EAAAA,GAAmB,CAC9BvI,UAAW,WACP,OAAO,CACV,EACDwI,kBAAmB,WACf,OAAO,CACV,EACDC,KAAM,SAASp+D,GACX,OAAOA,CACV,EACDi2D,OAAQ,SAASj2D,GACb,OAAOA,CACV,EACDiH,OAAQ,WACJouD,EAAAA,EAAAA,MAAa,qGAChB,8MClBDgJ,EAAiB,qBAAuBtiE,OACxC6mD,EAAY,kBAAMyb,CAAN,EACZC,EAAe1b,IAAc7mD,YAAS,EACrCuiE,KACDA,EAAe,CAAC,GACHviE,OAASuiE,GAE1B,IAAIzb,EAAY,kBAAMyb,CAAN,EASZC,EAAc,SAAA5/D,GAAI,OAAIikD,KAAejkD,KAAQ2/D,CAA3B,EAClBE,EAA0B,SAAA/rC,GAC1B,OAAIA,EAAQ,IACD,KACAA,EAAQ,IACR,KACAA,EAAQ,KACR,KAEA,IAEd,EACGgsC,EAAyB,SAAAC,GAGzB,OAFuBA,GAAwBF,GAC7BG,EAAAA,EAAAA,qBAAgCC,YAErD,EACGC,EAAe,kBAAMjc,IAAc0b,EAAa/+C,UAAY,CAC5Dm3B,UAAW,GADI,mDCjCnB,QAAmB6X,EAAAA,gKCDfuQ,EAAmB,CAAC,QAAS,QAAS,UAAW,UAAW,UAAW,yBCUvE/iE,GAAS8mD,EAAAA,EAAAA,MAYTkc,EAAmB,mBACnBC,EAA6B,CAC7BC,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cAEdC,EAA2B,CAC3BC,QAAS,QACTC,SAAU,QAEVC,EAAmB,CAAC,OAAQ,QAAS,QACrCC,EAA8B,CAAC,YAAa,QAAS,aAAc,cAGvE,SAASC,EAAYjmD,EAAQzH,GACzB,QAAQyzC,EAAAA,EAAAA,IAAShsC,IAAW,cAAgBA,EAAOiiC,UAAYijB,EAAAA,EAAAA,eAA0BllD,EAAQzH,EACpG,CACD,IAEI2tD,EAqS2BtgE,EAvS3BugE,EAAiB,IAAIvvD,QACrBwvD,EAAO,EAEPC,EAAU,WACV,IAAIC,EAAc,CAAC,EAInB,OAHAC,EAAAA,EAAAA,KAA4B,SAAS1/D,EAAW2/D,GAC5CF,EAAYz/D,GAAa2/D,CAC5B,IACM,CACHC,SAAU,SAAS5/D,EAAW6/D,GAC1B,OAAOJ,EAAYz/D,IAAcy/D,EAAYz/D,GAAW6/D,EAC3D,EACDC,WAAY,SAAS9/D,EAAWyjD,EAAYkE,EAASvoD,GACjD,OAAOqgE,EAAYz/D,IAAcy/D,EAAYz/D,GAAWyjD,IAAegc,EAAYz/D,GAAWyjD,GAAYlqC,MAAMouC,EAASvoD,EAC5H,EAER,CAba,GAcV2gE,GAAexV,EAAAA,EAAAA,GAAS,CACxBhc,GAAIyxB,EAAWC,EAAqBC,GAAS,SAASlyD,EAAShO,EAAW0R,EAAU5V,EAAMwG,GAC7D69D,EAAsBnyD,EAAShO,GACrCogE,WAAW99D,EAASoP,EAAU5V,EACpD,MACD47C,IAAKsoB,EAAWC,GAAsB,SAASjyD,EAAShO,EAAW0R,EAAU5V,EAAMwG,GAC/Ey9D,EAAaxxB,GAAGvgC,EAAShO,EAAW0R,EAAU5V,GAAO,SAASukE,IAC1DN,EAAajoB,IAAI9pC,EAAShO,EAAW0R,EAAU2uD,GAC/C/9D,EAAQiX,MAAM/X,KAAM8X,UACvB,GACJ,KACDw+B,IAAKkoB,GA2QsBjhE,EA3QWmhE,GAAS,SAASlyD,EAAShO,EAAW0R,EAAUpP,GACzD69D,EAAsBnyD,EAAShO,GACrCsgE,cAAch+D,EAASoP,EAC7C,IAyQM,SAAS1D,EAAShO,EAAW0R,EAAUpP,GACtC,oBAAsBoP,IACtBpP,EAAUoP,EACVA,OAAW,GAEf3S,EAASiP,EAAShO,EAAW0R,EAAUpP,EAC1C,IA9QDi+D,QAASP,EAAWQ,GAA2B,SAASxyD,EAASzL,EAAOk+D,GACpE,IAAIzgE,EAAYuC,EAAMsE,KAClB65D,EAAqBP,EAAsBnyD,EAASzL,EAAMsE,MAI9D,GAHA24D,EAAQM,WAAW9/D,EAAW,UAAWgO,EAAS,CAACzL,EAAOk+D,IAC1DC,EAAmBC,aAAap+D,EAAOk+D,KACxBjB,EAAQI,SAAS5/D,EAAW,aAAeuC,EAAMq+D,yBAA2B,IAAM1B,EAAiBt8D,QAAQ5C,IAC3G,CACX,IAAI6gE,EAAU,IACZ,SAASC,EAAW9yD,GAClB,IAAI+yD,EACA10D,EAAS,QAAU00D,EAAsB/yD,EAAQpD,kBAAe,IAAWm2D,EAAsBA,GAAsBl/C,EAAAA,EAAAA,IAAS7T,EAAQq8C,MAAQr8C,EAAQq8C,KAAO,KAC/Jh+C,IACAw0D,EAAQj/D,KAAKyK,GACby0D,EAAWz0D,GAElB,CAPC,CAOA2B,GACF6yD,EAAQj/D,KAAKnG,GAEb,IADA,IAAI0O,EAAI,EACD02D,EAAQ12D,KAAO5H,EAAMq+D,wBAAwB,CACxBT,EAAsBU,EAAQ12D,GAAI5H,EAAMsE,MAC9C85D,cAAa1Z,EAAAA,EAAAA,GAAO1kD,EAAO,CACzCy+D,cAAeH,EAAQ12D,KACvBs2D,GACJt2D,GACH,CACJ,EACG6D,EAAQupC,WAAY4N,EAAAA,EAAAA,IAASn3C,MAC7BwxD,EAAQM,WAAW9/D,EAAW,WAAYgO,EAAS,CAACzL,EAAOk+D,IAqVvE,SAA0BzgE,EAAWgO,GACjC,IAAIizD,EAAmBlC,EAAyB/+D,IAAcA,EAC9D,GAAI,SAASA,EAAWgO,GAChB,MAAO,UAAYhO,GAAa,MAAQgO,EAAQkzD,SACnD,CAFD,CAEElhE,EAAWgO,GACb,QAEAqiD,EAAAA,EAAAA,IAAWriD,EAAQizD,MACnB5B,EAAYr/D,EACZgO,EAAQizD,KACR5B,OAAY,EAEnB,CAhWW8B,CAAiBnhE,EAAWgO,GAEnC,KACD8/B,eAAgBkyB,EAAWQ,GAA2B,SAASxyD,EAASzL,EAAOk+D,GAClDN,EAAsBnyD,EAASzL,EAAMsE,MAC3C85D,aAAap+D,EAAOk+D,EAC1C,OAGL,SAASW,EAAahiE,EAAMwH,GACxB,IAAIoH,EAAU5O,EAAK,GACnB,GAAK4O,EAGL,GAAIqwD,EAAAA,EAAAA,OAAkBrwD,KAAYm3C,EAAAA,EAAAA,IAASn3C,GACvCpH,EAAO2S,MAAMwmD,EAAc3gE,OACxB,KAAK8yD,EAAAA,EAAAA,IAASlkD,MAAY,WAAYA,GAOzC,MAAM8S,EAAAA,EAAAA,MAAa,SANnB,IAAIugD,EAAWh7D,MAAMmD,UAAUjD,MAAMtG,KAAKb,EAAM,GAChDiH,MAAMmD,UAAUtH,QAAQjC,KAAK+N,GAAU,SAASszD,GAC5CD,EAAS,GAAKC,EACdF,EAAaC,EAAUz6D,EAC1B,GAGJ,CACJ,CAED,SAASo5D,EAAWp5D,GAChB,OAAO,WACHw6D,EAAa9nD,UAAW1S,EAC3B,CACJ,CAeD,IAAI26D,GAAgC5e,EAAAA,EAAAA,IAbpC,WACI,IAAI6e,GAAc,EAClB,IACI,IAAI5iE,EAAUY,OAAOC,eAAe,CAAC,EAAG,UAAW,CAC/CrE,IAAK,WAED,OADAomE,GAAc,GACP,CACV,IAEL/lE,EAAOsH,iBAAiB,OAAQ,KAAMnE,EAC5B,CAAZ,MAAO6L,GAAK,CACd,OAAO+2D,CACV,IAEGC,EAAW,SAAXA,EAAY14D,EAAWiF,GACvB,OAAIm3C,EAAAA,EAAAA,IAASp8C,GACF04D,EAAS14D,EAAUrF,SAAUsK,GAEjCjF,EAAU04D,SAAW14D,EAAU04D,SAASzzD,MAAcA,EAAQ0zD,wBAAwB34D,GAAaiF,EAAQ2zD,2BACrH,EAED,SAASxB,EAAsBnyD,EAAShO,GACpC,IAAI4hE,EAActC,EAAelkE,IAAI4S,GAEjC6zD,GADJ7hE,EAAYA,GAAa,IACM6D,MAAM,KACjCi+D,EAAaD,EAAet7D,MAAM,GAClCw7D,IAAuBF,EAAe,GAC1C7hE,EAAY6hE,EAAe,IAAMpD,EAC5BmD,IACDA,EAAc,CAAC,EACftC,EAAe3kE,IAAIqT,EAAS4zD,IAE3BA,EAAY5hE,KACb4hE,EAAY5hE,GAAa,CACrBgiE,cAAe,GACfC,cAAe,OAGvB,IAAIC,EAAYN,EAAY5hE,GAC5B,MAAO,CACHogE,WAAY,SAAS99D,EAASoP,EAAU5V,GACpC,IAAIqmE,EAAc,SAAS13D,EAAGg2D,GAC1B,IAGI2B,EACAp9D,EAJAq9D,EAAc,CAAC53D,GACf0O,EAAS1O,EAAEu2D,cACXsB,EAAgB73D,EAAE63D,cAGlBtiE,KAAa0+D,IACb0D,EAA0BE,GAAiBnpD,IAAWmpD,IAAkBnpD,GAAUsoD,EAAStoD,EAAQmpD,UAEnG,IAAW7B,GACX4B,EAAYzgE,KAAK6+D,GAErBjB,EAAQM,WAAW9/D,EAAW,SAAUgO,EAAS,CAACvD,EAAG3O,IAChDsmE,IACDp9D,EAAS1C,EAAQiX,MAAMJ,EAAQkpD,KAE/B,IAAUr9D,IACVyF,EAAEkzD,iBACFlzD,EAAE83D,kBAET,EACGC,EAAe,CACflgE,QAASA,EACTmgE,eAAgB,SAASh4D,EAAGg2D,GACxB,IAAIpB,GAAa50D,EAAE5D,OAASw4D,EAK5B,GAFA50D,EAAE3O,KAAOA,EACT2O,EAAEi4D,eAAiB10D,EACf0D,EAEA,IADA,IAAIsvD,EAAgBv2D,EAAE0O,OACf6nD,GAAiBA,IAAkBhzD,GAClCoxD,EAAY4B,EAAetvD,KAC3BjH,EAAEu2D,cAAgBA,EAClBmB,EAAY13D,EAAGg2D,IAEnBO,EAAgBA,EAAcp2D,gBAGlCH,EAAEu2D,cAAgBv2D,EAAEi4D,gBAAkBj4D,EAAE0O,OACxCgpD,EAAY13D,EAAGg2D,EAEtB,EACD/uD,SAAUA,EACV7K,KAAM7G,EACNlE,KAAMA,EACN6mE,UAAWb,EAAW7zD,KAAK,KAC3B6zD,WAAYA,EACZvC,OAAQA,GAEZ2C,EAAUF,cAAcpgE,KAAK4gE,GAC7B,IAEII,EAwEUC,EAzEVC,EADyB,IAAMZ,EAAUF,cAAc7/D,QACH4/D,EAEpDe,IACAA,GAA2BtD,EAAQM,WAAW9/D,EAAW,QAASgO,EAAS,CAAClS,EAAMgmE,EAAYx/D,KAE9FwgE,IACAZ,EAAUD,eAmEAY,EAnEiC7iE,EAoEhD,SAASuC,EAAOk+D,GACnB,IAAIC,EAAqBP,EAAsB3+D,KAAMqhE,GACrDtgE,EAAQw9D,EAAagD,MAAMxgE,GAC3Bm+D,EAAmBC,aAAap+D,EAAOk+D,EAC1C,GAvEec,KAAmCpC,EAA4Bv8D,QAAQ5C,IAAc,IACrF4iE,EAAwB,CACpBI,SAAS,IAGjBd,EAAUpiE,eAAiBu+D,EAAAA,EAAAA,OAAkBrwD,EAAS0wD,EAA2B1+D,IAAcA,EAAWkiE,EAAUD,cAAeW,IAEvIpD,EAAQM,WAAW9/D,EAAW,MAAOgO,EAAS,CAACw0D,GAClD,EACDlC,cAAe,SAASh+D,EAASoP,GAC7B,IAAIuxD,EAAoB,SAASjjE,GAC7B,IAKIkjE,EALAhB,EAAYN,EAAY5hE,GACvBkiE,EAAUF,cAAc7/D,QAK7B+/D,EAAUF,cAAgBE,EAAUF,cAAchmC,QAAQ,SAASwmC,GAC/D,IAAIW,EAAOrB,EAAW3/D,SAAWihE,EAASZ,EAAaV,WAAYA,IAAex/D,GAAWkgE,EAAalgE,UAAYA,GAAWoP,GAAY8wD,EAAa9wD,WAAaA,EAKvK,OAJKyxD,IACDD,EAAiBV,EAAalgE,QAC9Bk9D,EAAQM,WAAW9/D,EAAW,SAAUgO,EAAS,CAACw0D,KAE/CW,CACV,KAC4BjB,EAAUF,cAAc7/D,QACKnC,IAAcy+D,IAEpEe,EAAQM,WAAW9/D,EAAW,WAAYgO,EAAS,CAAC8zD,EAAYoB,IAC5DhB,EAAUD,eACVC,EAAUpiE,wBAEP8hE,EAAY5hE,YAnBZ4hE,EAAY5hE,EAqB1B,EACD,GAAI+hE,EACAkB,EAAkBjjE,QAElB,IAAK,IAAIpF,KAAQgnE,EACbqB,EAAkBroE,GAGD,IAAM4E,OAAOgB,KAAKohE,GAAaz/D,QAEpDm9D,EAAej4D,OAAO2G,EAE7B,EACD2yD,aAAc,SAASp+D,EAAOk+D,GAC1B,IAAI4C,GAAY,EACZC,EAAiB,SAASd,GACtBa,GAGCvB,EAAW3/D,SAAUihE,EAASZ,EAAaV,WAAYA,KACxDU,EAAaC,eAAelgE,EAAOk+D,GACnC4C,EAAY9gE,EAAMghE,gCAEzB,EACDrB,EAAUF,cAAc9/D,QAAQohE,GAC5BxB,EAAW3/D,QAAUy/D,EAAW,kBAChCA,EAAW,iBAAmBI,cAAc9/D,QAAQohE,EAE3D,EAER,CAUD,SAASF,EAASI,EAAUt6B,GACxB,IAAK,IAAI/+B,EAAI,EAAGA,EAAI++B,EAAQ/mC,OAAQgI,IAChC,GAAIq5D,EAAS5gE,QAAQsmC,EAAQ/+B,IAAM,EAC/B,OAAO,EAGf,OAAO,CACV,CAED,SAAS81D,EAAqBlhE,GAC1B,OAAO,SAASiP,EAAShO,EAAW0R,EAAU5V,EAAMwG,GAC3CA,IACDA,EAAUxG,EACVA,OAAO,GAEP,kBAAoB4V,IACpB5V,EAAO4V,EACPA,OAAW,GAEVpP,GAAW,kBAAoBtC,IAChCsC,EAAUxG,GAAQ4V,EAClBA,OAAW,EACX5V,OAAO,GAEXiD,EAASiP,EAAShO,EAAW0R,EAAU5V,EAAMwG,EAChD,CACJ,CAYD,SAASk+D,EAA0BzhE,GAC/B,OAAO,SAASiP,EAASy1D,EAAKhD,GACtB,kBAAoBgD,IACpBA,EAAM,CACF58D,KAAM48D,IAGTA,EAAItqD,SACLsqD,EAAItqD,OAASnL,GAEjBy1D,EAAIzC,cAAgBhzD,EACfy1D,EAAIf,iBACLe,EAAIf,eAAiB10D,IAEpBy1D,EAAI58D,MAAQ48D,EAAIC,gBACjBD,EAAI58D,KAAO48D,EAAIC,cAAc78D,MAEjC9H,EAASiP,EAASy1D,aAAe1D,EAAagD,MAAQU,EAAM1D,EAAagD,MAAMU,GAAMhD,EACxF,CACJ,CAkDD,SAASP,EAAQnhE,GACb,IAAI4kE,EAAoB,SAAS31D,EAAShO,GACtC,GAAIA,GAAaA,EAAU4C,QAAQ,MAAQ,EAAG,CAC1C,IAAIxD,EAAOiH,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,UAAW,GACjDtZ,EAAU6D,MAAM,KAAK3B,SAAS,SAASlC,GACnCZ,EAAK,GAAKY,EACVjB,EAASwa,MAAM/X,KAAMpC,EACxB,GACJ,MACGL,EAASwa,MAAM/X,KAAM8X,UAE5B,EACD,OAAO,SAAStL,EAAShO,GACrB,GAAI,kBAAoBA,EAAW,CAC/B,IAAIZ,EAAOiH,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,UAAW,GACjD,IAAK,IAAI1e,KAAQoF,EACbZ,EAAK,GAAKxE,EACVwE,EAAKA,EAAK+C,OAAS,GAAKnC,EAAUpF,GAClC+oE,EAAkBpqD,MAAM/X,KAAMpC,EAErC,MACGukE,EAAkBpqD,MAAM/X,KAAM8X,UAErC,CACJ,CAgBD,SAASsqD,EAAerhE,GACpB,OAAI,SAASA,GACL,OAAO,MAAQA,EAAMshE,OAAS,IAAMthE,EAAMsE,KAAKjE,QAAQ,MAC1D,CAFD,CAEEL,GACK,MAAQA,EAAMgwD,SAAWhwD,EAAMgwD,SAAWhwD,EAAMuhE,QAEvD,SAASvhE,GACL,OAAQA,EAAMshE,YAAS,IAAWthE,EAAMmqB,QAAU,iDAAiD9U,KAAKrV,EAAMsE,KACjH,CAFD,CAEEtE,GACK,CACH,EAAG,EACH,EAAG,EACH,EAAG,EACH,EAAG,GACJA,EAAMmqB,QAENnqB,EAAMshE,KAChB,CAED,SAASE,EAAUC,GACXA,IACAjE,EAAagD,MAAQiB,EACrBjE,EAAagD,MAAMv5D,UAAYw6D,EAAWx6D,UAEjD,CAwBD,SAASy6D,EAAY3rD,EAAU4rD,EAAMC,GACjC3kE,OAAOC,eAAe0kE,GAAiBpE,EAAagD,MAAMv5D,UAAW8O,EAAU,CAC3E2M,YAAY,EACZrlB,cAAc,EACdxE,IAAK,WACD,OAAOoG,KAAKkiE,eAAiBQ,EAAK1iE,KAAKkiE,cAC1C,EACD/oE,IAAK,SAAS+E,GACVF,OAAOC,eAAe+B,KAAM8W,EAAU,CAClC2M,YAAY,EACZrlB,cAAc,EACdD,UAAU,EACVD,MAAOA,GAEd,GAER,CAvCDqkE,EAjHA,SAAiChlE,GA6C7B,OA5CAghE,EAAagD,MAAQ,SAASU,EAAKliE,GAC/B,KAAMC,gBAAgBu+D,EAAagD,OAC/B,OAAO,IAAIhD,EAAagD,MAAMU,EAAKliE,GAElCkiE,IACDA,EAAM,CAAC,GAEP,kBAAoBA,IACpBA,EAAM,CACF58D,KAAM48D,IAGTliE,IACDA,EAAS,CAAC,GAEdxC,EAASkB,KAAKuB,KAAMiiE,EAAKliE,EAC5B,GACDgZ,EAAAA,EAAAA,GAASwlD,EAAagD,MAAMv5D,UAAW,CACnC46D,qBAAqB,EACrBC,8BAA8B,EAC9BC,mBAAmB,EACnB1D,qBAAsB,WAClB,SAAUp/D,KAAK4iE,qBAAuB5iE,KAAKkiE,eAAiBliE,KAAKkiE,cAAca,mBAClF,EACDhC,gBAAiB,WACb/gE,KAAK4iE,qBAAsB,EAC3B5iE,KAAKkiE,eAAiBliE,KAAKkiE,cAAcnB,iBAC5C,EACDgB,8BAA+B,WAC3B,OAAO/hE,KAAK6iE,4BACf,EACDG,yBAA0B,WACtBhjE,KAAK+gE,kBACL/gE,KAAK6iE,8BAA+B,EACpC7iE,KAAKkiE,eAAiBliE,KAAKkiE,cAAcc,0BAC5C,EACDC,mBAAoB,WAChB,SAAUjjE,KAAK8iE,mBAAqB9iE,KAAKkiE,eAAiBliE,KAAKkiE,cAAcgB,iBAChF,EACD/G,eAAgB,WACZn8D,KAAK8iE,mBAAoB,EACzB9iE,KAAKkiE,eAAiBliE,KAAKkiE,cAAc/F,gBAC5C,IAEEoC,EAAagD,KACvB,CAmES4B,EAAyB,SAASlB,EAAKliE,GAC7C,IAAIqjE,EACanB,aAAe1D,EAAagD,QAASzgB,EAAAA,EAAAA,OAAemhB,aAAehoE,EAAOsnE,QAAU,QAAU6B,EAAYnB,EAAIjlB,YAAS,IAAWomB,OAAY,EAASA,EAAU7B,QAAUU,aAAeA,EAAIjlB,KAAKukB,OAEhNvhE,KAAKkiE,cAAgBD,EACrBjiE,KAAKqF,KAAO48D,EAAI58D,KAChBrF,KAAKw/D,mBAAgB,EACjBxhE,OAAOgK,UAAU6X,eAAephB,KAAKwjE,EAAK,eAC1CjiE,KAAKqjE,UAAYpB,EAAIoB,WAEzBrjE,KAAKsjE,UAAYrB,EAAIqB,WAAaxgE,KAAKygE,QAEvCxqD,EAAAA,EAAAA,GAAS/Y,KAAMiiE,GAEnBQ,EAAY,QAASL,EAAgBpiE,MACjC,IAAMiiE,EAAI58D,KAAKjE,QAAQ,kBAChBrB,EAAOyjE,aACPzjE,EAAO0jE,QAElB1qD,EAAAA,EAAAA,GAAS/Y,KAAMD,GACfC,KAAK+9D,OAASA,CACjB,KAjdsB,CAAC,SAAU,gBAAiB,iBAAkB,SAAU,UAAW,aAAc,iBAAkB,UAAW,SAAU,aAAc,UAAW,WAAY,OAAQ,OAAQ,OAAQ,WAAY,MAAO,UAAW,SAAU,UAAW,UAAW,UAAW,YAAa,cAAe,gBAAiB,YAAa,WAoe9Tr9D,SAAQ,SAAA7D,GAAI,OAAI4lE,EAAY5lE,GAAM,SAAAkE,GAAK,OAAIA,EAAMlE,EAAV,GAA3B,ID5fd,SAASU,GACpBy/D,EAAiBt8D,SAAS,SAAStH,GAC/BmE,EAASnE,GAAO,SAAS2H,GACrB,OAbQ,SAAS3H,EAAM2H,GAC/B,GAAIA,EAAM3H,KAAU2H,EAAM2iE,UAAY3iE,EAAM2iE,QACxC,OAAO3iE,EAAM3H,GAEjB,IAAIsqE,EAAU3iE,EAAM2iE,QAAQ/iE,OAASI,EAAM2iE,QAAU3iE,EAAM4iE,eAC3D,OAAKD,EAAQ/iE,OAGN+iE,EAAQ,GAAGtqE,QAHlB,CAIH,CAIkBwqE,CAAcxqE,EAAM2H,EAC9B,GACJ,GAAGf,KACP,CCufD6jE,CAAepB,GACf,IAAIqB,GAAoBlX,EAAAA,EAAAA,KACpBmX,GAAmBnX,EAAAA,EAAAA,KACvB2R,EAAaplE,IAAM,SAAS6qE,GACxBF,EAAkB/W,OAClBwR,EAAanH,OAAO4M,GACpBzB,EAAUyB,EAAOzC,OACjBwC,EAAiBhX,MACpB,EACDwR,EAAa0F,gBAAkB,WAC3BrE,EAAa9nD,UAAW2mD,GAAsB,WAC1C,IAAI7gE,EAAOka,UACXymD,EAAaxxB,GAAGh1B,MAAM/X,KAAMpC,GAC5BkmE,EAAkB/1B,KAAK,WACnB,IAAIm2B,EAAUr/D,MAAMmD,UAAUjD,MAAMtG,KAAKb,EAAM,GAC/CsmE,EAAQ7iE,OAAO,EAAG,GAClBk9D,EAAajoB,IAAIv+B,MAAM/X,KAAMkkE,EAChC,IACDH,EAAiBh2B,KAAK,WAClBwwB,EAAaxxB,GAAGh1B,MAAM/X,KAAMpC,EAC/B,GACJ,IACJ,EACD2gE,EAAaZ,4BAA8BA,EAC3CY,EAAawB,8BAAgCA,EAC7C,4OChiBWhzB,EAAKwxB,EAAAA,EAAAA,GACLroB,EAAMqoB,EAAAA,EAAAA,IACNjoB,EAAMioB,EAAAA,EAAAA,IACNQ,EAAUR,EAAAA,EAAAA,QACVjyB,EAAiBiyB,EAAAA,EAAAA,eACjBgD,EAAQhD,EAAAA,EAAAA,+eCFf4F,kGADAC,EAAU,IAAI71D,QAEP81D,EAAmB,IAAI5X,EAAAA,EAC9B6X,EAAsB,WAAa,EACnCC,EAAqB,WAAa,EAyD/B,SAASjqE,IACZ,OAAO6pE,EAAS7pE,KAAKyd,MAAM/X,KAAM8X,UACpC,CAUM,SAAS0sD,EAAWh4D,EAASlK,GAChC,OAAO6hE,EAASK,WAAW/lE,KAAKuB,KAAMwM,EAASlK,EAClD,CACM,SAASmiE,EAAmBj4D,EAASk4D,GACxC,GAAK7H,EAAAA,EAAAA,cAAyBrwD,GAA9B,CAGA,IAAIm4D,EAAgBn4D,EAAQo4D,qBAAqB,KACjDT,EAASU,UAAUF,GACfD,GACAP,EAASU,UAAU,CAACr4D,GAJvB,CAMJ,EAhF4B,SAAStO,GAClCmmE,EAAiBtX,KAAK7uD,GAEtB,IAAI2mE,GADJV,EAAWjmE,GACc2mE,UACzBV,EAASU,UAAY,SAAS38D,GAC1Bo8D,EAAoBp8D,GACpB,IAAI1E,EAASqhE,EAAUpmE,KAAKuB,KAAMkI,GAElC,OADAq8D,EAAmBr8D,GACZ1E,CACV,CACJ,CACDshE,CAAgB,CACZxqE,KAAM,WACF,IAAIkS,EAAUsL,UAAU,GACpBxV,EAAMwV,UAAU,GAChB5Z,EAAQ4Z,UAAU,GACtB,GAAKtL,EAAL,CAGA,IAAI4zD,EAAcgE,EAAQxqE,IAAI4S,GAK9B,OAJK4zD,IACDA,EAAc,CAAC,EACfgE,EAAQjrE,IAAIqT,EAAS4zD,SAErB,IAAW99D,EACJ89D,EAEP,IAAMtoD,UAAUnX,OACTy/D,EAAY99D,IAEvB89D,EAAY99D,GAAOpE,EACZA,EAbN,CAcJ,EACDsmE,WAAY,SAASh4D,EAASlK,GAC1B,GAAKkK,EAGL,QAAI,IAAWlK,EACX8hE,EAAQv+D,OAAO2G,OACZ,CACH,IAAI4zD,EAAcgE,EAAQxqE,IAAI4S,GAC1B4zD,UACOA,EAAY99D,EAE1B,CACJ,EACDuiE,UAAW,SAASlT,GAChB,IAAK,IAAIhpD,EAAI,EAAGA,EAAIgpD,EAAShxD,OAAQgI,IACjC41D,EAAAA,EAAAA,IAAiB5M,EAAShpD,IAC1By7D,EAAQv+D,OAAO8rD,EAAShpD,GAE/B,+CCxDD0jD,EAAa,SAAS1lD,GACtB,YAAI,IAAWA,GAAQ,OAASA,EACrB,GAEJ8C,OAAO9C,EACjB,EACGo+D,EAAkB,SAASp+D,GAC3B,OAAO0lD,EAAW1lD,GAAMsV,OAAO,GAAGyqB,cAAgB//B,EAAK3B,OAAO,EACjE,EACGggE,EAAQ,SAASr+D,GACjB,OAAO0lD,EAAW1lD,GAAM/E,QAAQ,oBAAqB,SAASS,MAAM,UACvE,EACU4iE,EAAY,SAASt+D,GAC5B,OAAO5C,EAAAA,EAAAA,IAAIihE,EAAMr+D,IAAQ,SAAS9I,GAC9B,OAAOA,EAAE2W,aACZ,IAAG/H,KAAK,IACZ,EAIUy4D,EAAW,SAASv+D,EAAMw+D,GACjC,OAAOphE,EAAAA,EAAAA,IAAIihE,EAAMr+D,IAAQ,SAAS9I,EAAG8K,GAKjC,OAJA9K,EAAIA,EAAE2W,eACF2wD,GAAcx8D,EAAI,KAClB9K,EAAIknE,EAAgBlnE,IAEjBA,CACV,IAAG4O,KAAK,GACZ,EAIU24D,EAAW,SAASz+D,GAC3B,OAAO5C,EAAAA,EAAAA,IAAIihE,EAAMr+D,IAAQ,SAAS9I,GAC9B,OAAOknE,EAAgBlnE,EAAE2W,cAC5B,IAAG/H,KAAK,IACZ,EACG44D,EAAc,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACrDC,EAAa,SAASlsE,GAC7B,IACIuP,EACAmoD,EAFAyU,EAAc,GAGdC,GAAoB,EACpBC,GAAY,EAChB,IAAK98D,EAAI,EAAGA,EAAIvP,EAAKuH,OAAQgI,IAEzB88D,GADA3U,EAAO13D,EAAK6iB,OAAOtT,MACEmoD,EAAKpqB,eAAiB,MAAQoqB,GAAQ,MAAQA,GAAQ,MAAQA,GAAQA,KAAQuU,EAC/F,MAAQvU,GAAQ,MAAQA,GACxBA,EAAO,IACP2U,GAAY,GACL,IAAM98D,GACbmoD,EAAOA,EAAKpqB,cACZ++B,GAAY,IACJD,GAAqBC,GACzBF,EAAY5kE,OAAS,GACrB4kE,EAAYnlE,KAAK,KAGzBmlE,EAAYnlE,KAAK0wD,GACjB0U,EAAoBC,EAExB,OAAOF,EAAY94D,KAAK,GAC3B,YCxDGi5D,EAAa,CAAC,GAAI,SAAU,MAAO,IAAK,MACxCC,EAAc,CACd,GAAI,GACJC,OAAQ,WACRC,IAAK,QACLC,EAAG,MACHC,GAAI,QAEJC,GAAY7kB,EAAAA,EAAAA,IAAU,WACtB,OAAO0b,EAAAA,EAAAA,cAAyB,MAAM/lC,KACzC,IAkBGmvC,EAAY,SAAS7sE,GACrB,GAAIA,KAAQ4sE,IACR,OAAO5sE,EAEX,IAAI8sE,EAAe9sE,EACnBA,EAAOA,EAAK6iB,OAAO,GAAGyqB,cAAgBttC,EAAK4L,OAAO,GAClD,IAAK,IAAI2D,EAAI,EAAGA,EAAI+8D,EAAW/kE,OAAQgI,IAAK,CACxC,IAAIw9D,EAAeT,EAAW/8D,GAAG6L,cAAgBpb,EACjD,GAAI+sE,KAAgBH,IAChB,OAAOG,CAEd,CACD,OAAOD,CACV,EACGE,EAAkB,SAASvpE,GAC3B,OAhCkB,SAASA,EAAMwpE,GAEjC,IAAI7iE,EADJ3G,EAAOqoE,EAASroE,GAAM,GAEtB,IAAK,IAAI8L,EAAI,EAAG29D,EAAmBZ,EAAW/kE,OAAQgI,EAAI29D,EAAkB39D,IAAK,CAC7E,IAAI49D,EAAWb,EAAW/8D,GACtBw9D,EAAeI,EAAW1pE,EAM9B,QAHI,KADJ2G,EAAS6iE,EADenB,EAASiB,GACII,MAEjC/iE,EAAS6iE,EAASF,EAAcI,SAEhC,IAAW/iE,EACX,KAEP,CACD,OAAOA,GAAU,EACpB,CAgBUgjE,CAAgB3pE,GAAO,SAAS4pE,EAAUF,GAC7C,GAAIE,KAAYT,IACZ,OAAOL,EAAYY,EAE1B,GACJ,EACGG,EAAe,CAAC,cAAe,cAAe,WAAY,aAAc,aAAc,aAAc,UAAW,SAAU,QASzHC,EAAqB,SAAS9pE,EAAMqB,GAIpC,OAHIw6D,EAAAA,EAAAA,IAAUx6D,KAAW,IAAMwoE,EAAatlE,QAAQvE,KAChDqB,GAAS,MAENA,CACV,EAeGspD,EAAW,SAASh7C,EAASo6D,GAC7B,IAAIC,IAAa/uD,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,KAAKA,UAAU,GAC7E,GAAI+uD,EAAY,CACZ,IAAIC,EAAY,GAAG/hE,MAAMtG,KAAK+N,EAAQsqB,OACtCgwC,EAAUpmE,SAAQ,SAAAy0D,GACd3oD,EAAQsqB,MAAMiwC,eAAe5R,EAChC,GACJ,CACDyR,EAAYvkE,MAAM,KAAK3B,SAAQ,SAAAo2B,GAC3B,IAAI6d,EAAQ7d,EAAMz0B,MAAM,KAAK0B,KAAI,SAAAijE,GAAS,OAAIA,EAAUzkE,MAAd,IAC1C,GAAI,IAAMoyC,EAAMh0C,OAAQ,CACpB,IAAI,GAAJ,OAAwBg0C,EAAxB,GAAKxnC,EAAL,KAAejP,EAAf,KACAsO,EAAQsqB,MAAM3pB,GAAYjP,CAC7B,CACJ,GACJ,EC5FGjE,GAAS8mD,EAAAA,EAAAA,MACTkmB,EAAwB,CAAC,OAAQ,OAAQ,UAAW,WACpDC,EAAkB,SAASC,EAAe92D,GAC1C,IAAI7M,EAAS,EAIb,OAHA6M,EAAO3P,SAAS,SAASo2B,GACrBtzB,GAAU20B,WAAWgvC,EAAcrwC,KAAW,CACjD,IACMtzB,CACV,EACU4jE,EAAsB,SAAShuE,EAAM+tE,GAC5C,IAAIE,EAAa,UAAYjuE,EAAO,OAAS,MACzCkuE,EAAY,UAAYluE,EAAO,QAAU,SAC7C,MAAO,CACH6lC,QAASioC,EAAgBC,EAAe,CAAC,UAAYE,EAAY,UAAYC,IAC7E3nC,OAAQunC,EAAgBC,EAAe,CAAC,SAAWE,EAAa,QAAS,SAAWC,EAAY,UAChGtoC,OAAQkoC,EAAgBC,EAAe,CAAC,SAAWE,EAAY,SAAWC,IAEjF,EACGC,EAA0B,SAAS/6D,GACnC,IAAIg7D,EACAxqB,GAAQ,OAASxwC,QAAW,IAAWA,GAAmB,QAAUg7D,EAAwBh7D,EAAQ0mB,qBAAkB,IAAWs0C,OAAhF,EAAiHA,EAAsBt/B,cAAgBjuC,EAC5M,OAAO+iD,EAAK4d,kBAAoB5d,EAAK4d,iBAAiBpuD,EACzD,EACGi7D,EAAiB,SAASj7D,EAAS6D,EAAQjX,EAAMglC,GACjD,IAAIspC,EACJ,OAAQ,OAASr3D,QAAU,IAAWA,OAAS,EAASA,EAAOjX,MAAW,QAAUsuE,EAAiBl7D,EAAQsqB,aAAU,IAAW4wC,OAAiB,EAASA,EAAetuE,KAAUglC,CACxL,EACGupC,EAAa,CACb92B,QAAS,EACT5R,QAAS,EACTU,OAAQ,EACRX,OAAQ,EACR,cAAe,EACf,aAAc,GAEd4oC,EAAsB,CACtBj3C,MAAO,CAAC,OAAQ,SAChBnE,OAAQ,CAAC,MAAO,WAGpB,SAASq7C,EAAsBC,EAAMC,EAAW32C,EAAW/gB,GACvD,IAAIzW,EAAM,SAACkuE,EAAMz3D,EAAQguD,GAAf,OAAyBlmC,WAAWsvC,EAAeK,EAAMz3D,EAAQguD,EAAO,OAAS,CAAjF,EACN2J,EAAS,WAAa52C,EAAY,SAAW,GACjD,OAAOx3B,EAAIkuE,EAAMz3D,EAAQ,GAAGJ,OAAOmhB,EAAW,KAAKnhB,OAAO23D,EAAoBG,GAAW,IAAI93D,OAAO+3D,IAAWpuE,EAAIkuE,EAAMz3D,EAAQ,GAAGJ,OAAOmhB,EAAW,KAAKnhB,OAAO23D,EAAoBG,GAAW,IAAI93D,OAAO+3D,GAC/M,CACM,IAAIC,EAAU,SAASz7D,EAASu7D,EAAWG,GAC9C,IAAIC,EAAkB,UAAYJ,EAAY,cAAgB,eAC1D13D,EAASk3D,EAAwB/6D,GACjChJ,EAASikE,EAAej7D,EAAS6D,EAAQ03D,GACzC,KAAOvkE,GAAU,SAAWA,IAC5BA,EAASgJ,EAAQ27D,IAErB3kE,EAAS20B,WAAW30B,IAAW,EAC/B,IAAI4kE,EAAaX,EAAej7D,EAAS6D,EAAQ,YAAa,eAE1Dg4D,EAAiBV,EADLO,GAAOE,GAEnBE,EAAkBX,EAAWS,GACjC,QAAI,IAAWC,QAAkB,IAAWC,EACxC,MAAM,IAAI/tE,MAEd,GAAI+tE,IAAoBD,EACpB,OAAO7kE,EAEX,IAAI+kE,EAAQh/D,KAAKqnD,KAAKyX,EAAiBC,GACnCrpC,GAAU,EACVU,GAAS,EACTX,GAAS,EACTwpC,GAAkB,EAClB,IAAMD,IACNF,GAAkB,EAClBC,GAAmB,GAEvB,IAAK,IAAIG,EAAUH,EAAiBG,IAAYJ,EAAgBI,GAAWF,EACvE,OAAQE,GACJ,KAAKd,EAAW92B,QACZ,MACJ,KAAK82B,EAAW1oC,QACZA,EAAUspC,EAAQV,EAAsBr7D,EAASu7D,EAAW,UAAW13D,GACvE,MACJ,KAAKs3D,EAAWhoC,OACZA,EAAS4oC,EAAQV,EAAsBr7D,EAASu7D,EAAW,SAAU13D,GACrE,MACJ,KAAKs3D,EAAW3oC,OACZA,EAASupC,EAAQV,EAAsBr7D,EAASu7D,EAAW,SAAU13D,GAGjF,GAAI4uB,GAAWU,EAAQ,CACnB,IAAI+oC,IAAoB,IAAUzpC,EAAUspC,EAAQV,EAAsBr7D,EAASu7D,EAAW,UAAW13D,GAAU4uB,KAAY,IAAUU,EAAS4oC,EAAQV,EAAsBr7D,EAASu7D,EAAW,SAAU13D,GAAUsvB,GACxN6oC,EAAkBD,EAAQh/D,KAAKkuB,IAAI,EAAGluB,KAAKo/D,MAAMn8D,EAAQ27D,GAAmB3kE,EAAS+kE,EAAQG,KAAsB,CACtH,CACD,OAAOllE,EAASw7B,EAASC,EAAUU,EAAS6oC,CAC/C,EAIUI,EAAc,SAAS1qE,EAAOqJ,EAAWiF,GAYhD,OAXItO,EAAMkD,QAAQ,MAAQ,EACtBlD,EAAQ45B,SAAS55B,EAAM0D,QAAQ,KAAM,KAC9B1D,EAAMkD,QAAQ,KAAO,EAC5BlD,EAAQ45B,SAAS55B,EAAM0D,QAAQ,IAAK,KAPnB,SAAS2F,GAC9B,OAAOo8C,EAAAA,EAAAA,IAASp8C,GAAaA,EAAUshE,YAActhE,EAAUuhE,YAClE,CAKkDC,CAAmBxhE,GAAa,IACnEo0D,MAAMz9D,GAEPA,EAAMkD,QAAQ,MAAQ,EAC7BlD,EAAQjE,EAAO4uE,YAAc,IAAM/wC,SAAS55B,EAAM0D,QAAQ,KAAM,KACzD4K,GAAWtO,EAAMkD,QAAQ,MAAQ,IACxClD,EAAQi6B,WAAWj6B,EAAM0D,QAAQ,KAAM,KAAOu2B,WAAWl+B,EAAO2gE,iBAAiBpuD,GAASkd,WAJ1FxrB,EAAQ45B,SAAS55B,GAMdA,CACV,EACG8qE,GAAsB,SAAS9qE,EAAO+O,EAAQ1F,GAC9C,OAAKrJ,EAGD+oE,EAAsB7lE,QAAQlD,IAAU,EACjC+O,EAAS,KAAO/O,IAEvBwyD,EAAAA,EAAAA,IAASxyD,KACTA,EAAQ0qE,EAAY1qE,EAAOqJ,KAE3BmxD,EAAAA,EAAAA,IAAUx6D,GACHqL,KAAKkuB,IAAI,EAAGv5B,EAAQ+O,GAGxB,QAAU/O,GADK+O,EAAS,EAAI,MAAQ,KACA1D,KAAKD,IAAI2D,GAAU,OAZnD,IAad,EASUg8D,GAAqB,SAASz8D,EAAS08D,GAC9C,IAAK18D,EACD,OAAO,EAEX,IAAI28D,EAAY/B,EAAoB,SAAUntE,EAAO2gE,iBAAiBpuD,IACtE,OAAO28D,EAAUlqC,QAAUkqC,EAAUxpC,QAAUupC,EAAcC,EAAUnqC,OAAS,EACnF,EACUoqC,GAAmB,SAAS58D,GACnC,GAAIA,EAAS,CACT,IAAI68D,EAAqB78D,EAAQ+tD,wBACjC,GAAI8O,EAAmB78C,OACnB,OAAO68C,EAAmB78C,MAEjC,CACD,OAAO,CACV,EACU88C,GACG,WACN,IAAK,IAAIxc,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,GAE3B,OAAOk0D,GAAiB,WAAjB,GAAkB,SAAlB,OAA8B3rE,GACxC,EANM0rE,GAOG,WACN,IAAK,IAAIE,EAAQ1xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM2kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF7rE,EAAK6rE,GAAS3xD,UAAU2xD,GAE5B,OAAOF,GAAiB,WAAjB,GAAkB,SAAlB,OAA8B3rE,GACxC,EAZM0rE,GAaI,WACP,IAAK,IAAII,EAAQ5xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM6kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF/rE,EAAK+rE,GAAS7xD,UAAU6xD,GAE5B,OAAOJ,GAAiB,WAAjB,GAAkB,UAAlB,OAA+B3rE,GACzC,EAlBM0rE,GAmBI,WACP,IAAK,IAAIM,EAAQ9xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM+kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFjsE,EAAKisE,GAAS/xD,UAAU+xD,GAE5B,OAAON,GAAiB,WAAjB,GAAkB,UAAlB,OAA+B3rE,GACzC,EAxBM0rE,GAyBQ,WACX,IAAK,IAAIQ,EAAQhyD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMilE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFnsE,EAAKmsE,GAASjyD,UAAUiyD,GAE5B,OAAOR,GAAiB,WAAjB,GAAkB,cAAlB,OAAmC3rE,GAC7C,EA9BM0rE,GA+BQ,WACX,IAAK,IAAIU,EAAQlyD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMmlE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFrsE,EAAKqsE,GAASnyD,UAAUmyD,GAE5B,OAAOV,GAAiB,WAAjB,GAAkB,cAAlB,OAAmC3rE,GAC7C,EApCM0rE,GAqCS,WACZ,IAAK,IAAIY,EAAQpyD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMqlE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFvsE,EAAKusE,GAASryD,UAAUqyD,GAE5B,OAAOZ,GAAiB,WAAjB,GAAkB,eAAlB,OAAoC3rE,GAC9C,EA1CM0rE,GA2CS,WACZ,IAAK,IAAIc,EAAQtyD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMulE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFzsE,EAAKysE,GAASvyD,UAAUuyD,GAE5B,OAAOd,GAAiB,WAAjB,GAAkB,eAAlB,OAAoC3rE,GAC9C,EAhDM0rE,GAiDQ,WACX,IAAK,IAAIgB,EAAQxyD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMylE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF3sE,EAAK2sE,GAASzyD,UAAUyyD,GAE5B,OAAOhB,GAAiB,WAAjB,GAAkB,cAAlB,OAAmC3rE,GAC7C,EAtDM0rE,GA6DS,WACZ,IAAK,IAAIkB,EAAS1yD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM2lE,GAASC,EAAS,EAAGA,EAASD,EAAQC,IACvF7sE,EAAK6sE,GAAU3yD,UAAU2yD,GAE7B,OAAOlB,GAAiB,WAAjB,GAAkB,eAAlB,OAAoC3rE,GAC9C,EASL,SAAS2rE,GAAkBmB,EAAcxQ,EAAIh8D,GACzC,OAAO,IAAM4Z,UAAUnX,OAASgqE,GAAYzQ,EAAIwQ,GAAgBC,GAAYzQ,EAAIwQ,EAAcxsE,EACjG,CACM,IAAI0sE,GAAW,SAAA1Q,GAAE,OAAIoP,GAA4BpP,EAAhC,EACb2Q,GAAW,SAAC3Q,EAAIh8D,GAAL,OAAeorE,GAA4BpP,EAAIh8D,EAA/C,EACX4sE,GAAY,SAAA5Q,GAAE,OAAIoP,GAA6BpP,EAAjC,EACd6Q,GAAY,SAAC7Q,EAAIh8D,GAAL,OAAeorE,GAA6BpP,EAAIh8D,EAAhD,EACZ8sE,GAAgB,SAAC9Q,EAAI+Q,GAAL,OAAuB3B,GAAiCpP,EAAI+Q,IAAiB,EAA7E,EAEhBC,GAAiB,SAAChR,EAAI+Q,GAAL,OAAuB3B,GAAkCpP,EAAI+Q,IAAiB,EAA9E,EACjBE,GAAiB,SAACjR,EAAIh8D,GAAL,OAAeorE,GAAkCpP,EAAIh8D,EAArD,EACjBktE,GAAgB,SAAAlR,GAAE,OAAIoP,GAAiCpP,EAArC,EAElBmR,GAAiB,SAAAnR,GAAE,OAAIoP,GAAkCpP,EAAtC,EAE1ByQ,GAAc,SAASA,EAAYzQ,EAAIwQ,EAAcxsE,GACrD,IAAIotE,EAAcZ,EAAal2D,cAAcpT,QAAQ,UAAY,EAAI,QAAU,SAC3E0V,EAAWw0D,EAAY92D,cACvB+2D,EAAU,IAAMb,EAAatpE,QAAQ,SACrCoqE,EAAU,IAAMd,EAAatpE,QAAQ,SACrCqqE,EAAW,IAAM3zD,UAAUnX,QAAU,mBAAqBzC,EAC9D,IAAI69D,EAAAA,EAAAA,IAAW7B,GAAK,CAChB,GAAIA,EAAGv5D,OAAS,IAAM8qE,EAAU,CAC5B,IAAK,IAAI9iE,EAAI,EAAGA,EAAIuxD,EAAGv5D,OAAQgI,IAC3BgiE,EAAYzQ,EAAGvxD,GAAI+hE,EAAcxsE,GAErC,MACH,CACDg8D,EAAKA,EAAG,EACX,CACD,GAAKA,EAAL,CAGA,IAAIvW,EAAAA,EAAAA,IAASuW,GACT,OAAOqR,EAAUrR,EAAG,QAAUoR,GAAezO,EAAAA,EAAAA,qBAAgC,SAAWyO,GAE5F,GAAIzO,EAAAA,EAAAA,WAAsB3C,GAAK,CAC3B,IAAIhS,EAAkB2U,EAAAA,EAAAA,qBAClBv3D,EAAOu3D,EAAAA,EAAAA,UACX,OAAOtzD,KAAKkuB,IAAInyB,EAAK,SAAWgmE,GAAchmE,EAAK,SAAWgmE,GAAcpjB,EAAgB,SAAWojB,GAAcpjB,EAAgB,SAAWojB,GAAcpjB,EAAgB,SAAWojB,GAC5L,CACD,GAAIG,EAAU,CACV,IAAIvD,EAAM,UAOV,OANIqD,IACArD,EAAMhqE,EAAQ,SAAW,UAEzBstE,IACAtD,EAAM,WAEHD,EAAQ/N,EAAIpjD,EAAUoxD,EAChC,CACD,IAAIxP,EAAAA,EAAAA,IAAUx6D,GAAQ,CAClB,IAAIipE,EAAgBI,EAAwBrN,GACxCwR,EAAiBtE,EAAoBtwD,EAAUqwD,GAC/CwE,EAAc,eAAiBxE,EAAcriC,UACjD5mC,EAAQw6B,OAAOx6B,GACXqtE,EACArtE,GAASytE,EAAc,EAAID,EAAe/rC,OAAS+rC,EAAezsC,QAC3DusC,EACPttE,GAASytE,EAAcD,EAAe/rC,QAAU+rC,EAAezsC,QACxD0sC,IACPztE,GAASwtE,EAAe/rC,OAAS+rC,EAAezsC,QAEvD,CAGD,OAFA/gC,IAASw6D,EAAAA,EAAAA,IAAUx6D,GAAS,KAAO,GACnC2+D,EAAAA,EAAAA,SAAoB3C,EAAIpjD,EAAU5Y,GAC3B,IAlCN,CAmCJ,EACU0tE,GAAqB,SAAA1R,GAAE,OAAIvW,EAAAA,EAAAA,IAASuW,GAAMA,EAAKA,EAAGhyB,WAA3B,EACvB2jC,GAAY,SAAA3R,GACnB,IAAKA,EAAG4R,iBAAiBnrE,OACrB,MAAO,CACH8jC,IAAK,EACLG,KAAM,GAGd,IAAI01B,EAAOJ,EAAGK,wBACVvhE,EAAM4yE,GAAmB1R,EAAGhnC,eAC5B64C,EAAU7R,EAAGhnC,cAAcg1B,gBAC/B,MAAO,CACHzjB,IAAK61B,EAAK71B,IAAMzrC,EAAIgzE,YAAcD,EAAQE,UAC1CrnC,KAAM01B,EAAK11B,KAAO5rC,EAAIkzE,YAAcH,EAAQI,WAEnD,aC5TGC,GAAY,gCACZC,GAAc,CACd/oD,QAAS,CACLgpD,UAAW,EACXC,UAAW,GACXC,QAAS,IAEbC,MAAO,CACHH,UAAW,EACXC,UAAW,UACXC,QAAS,YAEbE,GAAI,CACAJ,UAAW,EACXC,UAAW,qBACXC,QAAS,yBAEbG,IAAK,CACDL,UAAW,EACXC,UAAW,oBACXC,QAAS,uBAEbI,GAAI,CACAN,UAAW,EACXC,UAAW,iBACXC,QAAS,qBAGjBH,GAAYQ,MAAQR,GAAYS,SAAWT,GAAYlhD,QAAUkhD,GAAYU,MAAQV,GAAYI,MACjGJ,GAAYW,GAAKX,GAAYK,GACtB,ICCHO,GDDOC,GAAY,SAASC,GAC5B,GAAI,kBAAoBA,EACpB,OAAO,KAEX,IACI5lE,EADWs1D,EAAAA,EAAAA,yBACUt0D,YAAYs0D,EAAAA,EAAAA,cAAyB,QAC1D11D,EAAOilE,GAAUp9D,KAAKm+D,GACtBC,EAAejmE,GAAQA,EAAK,GAAGqN,cAC/B64D,EAAahB,GAAYe,IAAiBf,GAAY/oD,QAC1D/b,EAAU+lE,UAAYD,EAAWd,UAAYY,EAAOE,EAAWb,QAC/D,IAAK,IAAI7jE,EAAI,EAAGA,EAAI0kE,EAAWf,UAAW3jE,IACtCpB,EAAYA,EAAUgmE,UAE1B,OAAO,QAAIhmE,EAAUmkC,WACxB,EACU8hC,GAAc,SAASL,GAC9B,IAAIhmE,EAAOilE,GAAUp9D,KAAKm+D,GAC1B,OAAOhmE,GAAQA,EAAK,KAAMklE,EAC7B,EClBGpyE,IAAS8mD,EAAAA,EAAAA,MAET0sB,GAAa,SAASv9D,EAAUi2C,GAChC,OAAKj2C,EAID,kBAAoBA,EAChB,SAAWA,GACXlQ,KAAK,GAAKmmD,EAAUA,EAAQ7gD,KAAOu3D,EAAAA,EAAAA,UACnC78D,KAAKW,OAAS,EACPX,OAEXmmD,EAAUA,GAAW0W,EAAAA,EAAAA,cACjB,MAAQ3sD,EAAS,IACjBlQ,KAAK,GAAK68D,EAAAA,EAAAA,cAAyB3sD,EAASnL,MAAM,GAAI,GAAIohD,GAC1DnmD,KAAKW,OAAS,EACPX,OACT,GAAGI,KAAK2X,MAAM/X,KAAM68D,EAAAA,EAAAA,iBAA4B1W,EAASj2C,IACpDlQ,OACA68D,EAAAA,EAAAA,OAAkB3sD,KAAayzC,EAAAA,EAAAA,IAASzzC,IAC/ClQ,KAAK,GAAKkQ,EACVlQ,KAAKW,OAAS,EACPX,MACA6E,MAAMC,QAAQoL,IACrB,GAAG9P,KAAK2X,MAAM/X,KAAMkQ,GACblQ,MAEJitE,GAAS/8D,EAASw9D,QAAUx9D,EAASw9D,UAAY,CAACx9D,KAxBrDlQ,KAAKW,OAAS,EACPX,KAwBd,EACDitE,GAAW,SAAS/8D,EAAUi2C,GAC1B,OAAO,IAAIsnB,GAAWv9D,EAAUi2C,EACnC,EACD8mB,GAASlvE,GAAK,CACVk+D,YAAY,GAEhBwR,GAAWzlE,UAAYilE,GAASlvE,GAChC,IAAI4vE,GAAe,SAAS1rB,EAAYrkD,GACpC,IAAK,IAAI+K,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAAK,CAClC,IAAI/D,EAAOqoE,GAASjtE,KAAK2I,IACzB/D,EAAKq9C,GAAYlqC,MAAMnT,EAAMhH,EAChC,CACD,OAAOoC,IACV,EACG4tE,GAAoB,SAASphE,EAASqhE,EAAU3vE,QAC5C,IAAWA,GAAS,OAASA,IAAS,IAAUA,EAChD2+D,EAAAA,EAAAA,aAAwBrwD,EAASqhE,EAAU3vE,GAE3C2+D,EAAAA,EAAAA,gBAA2BrwD,EAASqhE,EAE3C,EACDJ,GAAWzlE,UAAU8lE,KAAO,WACxB,OAAO9tE,KAAK+tE,QAAO,EACtB,EACDN,GAAWzlE,UAAUgmE,KAAO,WACxB,OAAOhuE,KAAK+tE,QAAO,EACtB,EACDN,GAAWzlE,UAAU+lE,OAAS,SAAS7vE,GAInC,OAHI8B,KAAK,IACLA,KAAKiuE,YAAY,sBAAuB/vE,GAErC8B,IACV,EACDytE,GAAWzlE,UAAUkmE,KAAO,SAASL,EAAU3vE,GAC3C,GAAI8B,KAAKW,OAAS,GAAKmX,UAAUnX,OAAS,EACtC,OAAOgtE,GAAalvE,KAAKuB,KAAM,OAAQ8X,WAE3C,IAAK9X,KAAK,GACN,OAAIqgB,EAAAA,EAAAA,IAASwtD,SAAa,IAAW3vE,EAC1B8B,UAEP,EAGR,IAAKA,KAAK,GAAGqP,aACT,OAAOrP,KAAKnD,KAAKgxE,EAAU3vE,GAE/B,GAAI,kBAAoB2vE,GAAY,IAAM/1D,UAAUnX,OAAQ,CACxD,IAAI6C,EAASxD,KAAK,GAAGqP,aAAaw+D,GAClC,OAAO,MAAQrqE,OAAS,EAASA,CACpC,CAAM,IAAI4jC,EAAAA,EAAAA,IAAcymC,GACrB,IAAK,IAAIvrE,KAAOurE,EACZ7tE,KAAKkuE,KAAK5rE,EAAKurE,EAASvrE,SAG5BsrE,GAAkB5tE,KAAK,GAAI6tE,EAAU3vE,GAEzC,OAAO8B,IACV,EACDytE,GAAWzlE,UAAUmmE,WAAa,SAASN,GAEvC,OADA7tE,KAAK,IAAM68D,EAAAA,EAAAA,gBAA2B78D,KAAK,GAAI6tE,GACxC7tE,IACV,EACDytE,GAAWzlE,UAAUnL,KAAO,SAASia,EAAU5Y,GAC3C,IAAK8B,KAAK,GACN,OAAOA,KAEX,GAAI,kBAAoB8W,GAAY,IAAMgB,UAAUnX,OAChD,OAAOX,KAAK,GAAG8W,GACZ,IAAIswB,EAAAA,EAAAA,IAActwB,GACrB,IAAK,IAAIxU,KAAOwU,EACZ9W,KAAKnD,KAAKyF,EAAKwU,EAASxU,SAG5Bu6D,EAAAA,EAAAA,YAAuB78D,KAAK,GAAI8W,EAAU5Y,GAE9C,OAAO8B,IACV,EACDytE,GAAWzlE,UAAUomE,SAAW,SAASj2D,GACrC,OAAOnY,KAAKiuE,YAAY91D,GAAW,EACtC,EACDs1D,GAAWzlE,UAAUqmE,YAAc,SAASl2D,GACxC,OAAOnY,KAAKiuE,YAAY91D,GAAW,EACtC,EACDs1D,GAAWzlE,UAAUsmE,SAAW,SAASn2D,GACrC,IAAKnY,KAAK,SAAM,IAAWA,KAAK,GAAGmY,UAC/B,OAAO,EAGX,IADA,IAAIoB,EAAapB,EAAU9V,MAAM,KACxBsG,EAAI,EAAGA,EAAI4Q,EAAW5Y,OAAQgI,IAAK,CACxC,GAAI3I,KAAK,GAAG8tC,WACR,GAAI9tC,KAAK,GAAG8tC,UAAUmyB,SAAS1mD,EAAW5Q,IACtC,OAAO,OAIX,MADiB+nD,EAAAA,EAAAA,IAAS1wD,KAAK,GAAGmY,WAAanY,KAAK,GAAGmY,UAAY0kD,EAAAA,EAAAA,aAAwB78D,KAAK,GAAI,WACjF,IAAIqC,MAAM,KAAKjB,QAAQmY,EAAW5Q,KAAO,EACxD,OAAO,CAGlB,CACD,OAAO,CACV,EACD8kE,GAAWzlE,UAAUimE,YAAc,SAAS91D,EAAWja,GACnD,GAAI8B,KAAKW,OAAS,EACd,OAAOgtE,GAAalvE,KAAKuB,KAAM,cAAe8X,WAElD,IAAK9X,KAAK,KAAOmY,EACb,OAAOnY,KAEX9B,OAAQ,IAAWA,GAAS8B,KAAKsuE,SAASn2D,GAAaja,EAEvD,IADA,IAAIqb,EAAapB,EAAU9V,MAAM,KACxBsG,EAAI,EAAGA,EAAI4Q,EAAW5Y,OAAQgI,IACnCk0D,EAAAA,EAAAA,SAAoB78D,KAAK,GAAIuZ,EAAW5Q,GAAIzK,GAEhD,OAAO8B,IACV,EACDytE,GAAWzlE,UAAUmlE,KAAO,SAASjvE,GACjC,OAAK4Z,UAAUnX,QAGfX,KAAK8tD,QACD,kBAAoB5vD,IAAUsvE,GAAYtvE,IAAU,kBAAoBA,GACxE8B,KAAK,GAAGstE,UAAYpvE,EACb8B,MAEJA,KAAK2F,OAAOunE,GAAUhvE,KAPlB8B,KAAK,GAAGstE,SAQtB,EACD,IAAIiB,GAAiB,SAAS/hE,EAASnF,GACnC,GAAKrH,KAAK,IAAOwM,EAAjB,CAGI,kBAAoBA,EACpBA,EAAU0gE,GAAU1gE,GACbA,EAAQupC,SACfvpC,EAAU,CAACA,IACJksD,EAAAA,EAAAA,IAAUlsD,KACjBA,EAAU,CAACqwD,EAAAA,EAAAA,eAA0BrwD,KAEzC,IAAK,IAAI7D,EAAI,EAAGA,EAAI6D,EAAQ7L,OAAQgI,IAAK,CACrC,IAAI/D,EAAO4H,EAAQ7D,GACfpB,EAAYvH,KAAK,GACR,UAAYuH,EAAU0R,SAAW,OAASrU,EAAKqU,SAC9C1R,EAAUinE,SAAWjnE,EAAUinE,QAAQ7tE,SACjD4G,EAAYA,EAAUinE,QAAQ,IAElC3R,EAAAA,EAAAA,cAAyBt1D,EAAW3C,EAAKmxC,SAAWnxC,EAAOA,EAAK,GAAIyC,EACvE,CAhBA,CAiBJ,EACGonE,GAAS,SAASr1E,EAAM8E,GACxB,GAAK8B,KAAK,IAAOA,KAAK,GAAG82B,SAGrB,OAAS54B,GAAS,kBAAoBA,GAASy9D,MAAMz9D,IAAzD,CAGA9E,EAAO6sE,EAAU7sE,GACjB,IAAK,IAAIuP,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAC7B3I,KAAK2I,GAAGmuB,MAAM19B,GAAQutE,EAAmBvtE,EAAM8E,EAHlD,CAKJ,EACDuvE,GAAWzlE,UAAUs9B,IAAM,SAASlsC,EAAM8E,GACtC,IAAIwyD,EAAAA,EAAAA,IAASt3D,GAAO,CAChB,GAAI,IAAM0e,UAAUnX,OAEb,CACH,IAAKX,KAAK,GACN,OAEJ5G,EAAO6sE,EAAU7sE,GACjB,IAAIoK,EAASvJ,GAAO2gE,iBAAiB56D,KAAK,IAAI5G,IAAS4G,KAAK,GAAG82B,MAAM19B,GACrE,OAAOs/D,EAAAA,EAAAA,IAAUl1D,GAAUA,EAAOlG,WAAakG,CAClD,CARGirE,GAAOhwE,KAAKuB,KAAM5G,EAAM8E,EAS/B,MAAM,IAAIkpC,EAAAA,EAAAA,IAAchuC,GACrB,IAAK,IAAIkJ,KAAOlJ,EACZq1E,GAAOhwE,KAAKuB,KAAMsC,EAAKlJ,EAAKkJ,IAGpC,OAAOtC,IACV,EACDytE,GAAWzlE,UAAUV,QAAU,SAASkF,GACpC,GAAIsL,UAAUnX,OAAS,EAAG,CACtB,IAAK,IAAIgI,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAClC3I,KAAKsH,QAAQwQ,UAAUnP,IAE3B,OAAO3I,IACV,CAED,OADAuuE,GAAex2D,MAAM/X,KAAM,CAACwM,EAASxM,KAAK,GAAGwH,aACtCxH,IACV,EACDytE,GAAWzlE,UAAUrC,OAAS,SAAS6G,GACnC,GAAIsL,UAAUnX,OAAS,EAAG,CACtB,IAAK,IAAIgI,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAClC3I,KAAK2F,OAAOmS,UAAUnP,IAE1B,OAAO3I,IACV,CAED,OADAuuE,GAAex2D,MAAM/X,KAAM,CAACwM,IACrBxM,IACV,EACDytE,GAAWzlE,UAAU0mE,UAAY,SAASliE,GACtC,GAAIxM,KAAKW,OAAS,EAAG,CACjB,IAAK,IAAIgI,EAAI3I,KAAKW,OAAS,EAAGgI,GAAK,EAAGA,IAClCskE,GAASjtE,KAAK2I,IAAI+lE,UAAUliE,GAEhC,OAAOxM,IACV,CAKD,OAJAwM,EAAUygE,GAASzgE,IACP,IACRqwD,EAAAA,EAAAA,cAAyBrwD,EAAQ,GAAIxM,KAAK,GAAIwM,EAAQ,GAAGhF,YAEtDxH,IACV,EACDytE,GAAWzlE,UAAU2mE,SAAW,SAASniE,GACrC,OAAIxM,KAAKW,OAAS,EACPgtE,GAAalvE,KAAKuB,KAAM,WAAY8X,YAE/C+kD,EAAAA,EAAAA,cAAyBoQ,GAASzgE,GAAS,GAAIxM,KAAK,IAC7CA,KACV,EACDytE,GAAWzlE,UAAUP,aAAe,SAAS+E,GAIzC,OAHIA,GAAWA,EAAQ,IACnBqwD,EAAAA,EAAAA,cAAyBrwD,EAAQ,GAAGpD,WAAYpJ,KAAK,GAAIwM,EAAQ,IAE9DxM,IACV,EACDytE,GAAWzlE,UAAU4mE,YAAc,SAASpiE,GAIxC,OAHIA,GAAWA,EAAQ,IACnBqwD,EAAAA,EAAAA,cAAyBrwD,EAAQ,GAAGpD,WAAYpJ,KAAK,GAAIwM,EAAQ,GAAGnF,aAEjErH,IACV,EACDytE,GAAWzlE,UAAUd,OAAS,SAASsF,GAInC,OAHIxM,KAAK,IACL68D,EAAAA,EAAAA,cAAyB78D,KAAK,GAAGoJ,WAAYoD,EAAQ,GAAIxM,KAAK,IAE3DA,IACV,EACDytE,GAAWzlE,UAAU6mE,MAAQ,SAASriE,GAIlC,OAHIxM,KAAK,IACL68D,EAAAA,EAAAA,cAAyB78D,KAAK,GAAGoJ,WAAYoD,EAAQ,GAAIxM,KAAK,GAAGqH,aAE9DrH,IACV,EACDytE,GAAWzlE,UAAUs0D,KAAO,SAAS3+D,GACjC,GAAIqC,KAAK,GAAI,CACT,IAAIs8D,EAAO2Q,GAAStvE,GACpB2+D,EAAK70D,aAAazH,MAClBs8D,EAAK32D,OAAO3F,KACf,CACD,OAAOA,IACV,EACDytE,GAAWzlE,UAAU8mE,UAAY,SAASnxE,GACtC,IAAIoxE,EAAW/uE,KAAK+uE,WAMpB,OALIA,EAASpuE,OACTouE,EAASzS,KAAK3+D,GAEdqC,KAAK2F,OAAOhI,GAETqC,IACV,EACDytE,GAAWzlE,UAAUgnE,YAAc,SAASxiE,GACxC,GAAMA,GAAWA,EAAQ,GAGzB,OAAIA,EAAQyiE,GAAGjvE,MACJA,MAEXwM,EAAQ/E,aAAazH,MACrBA,KAAKtC,SACE8O,EACV,EACDihE,GAAWzlE,UAAUtK,OAAS,WAC1B,OAAIsC,KAAKW,OAAS,EACPgtE,GAAalvE,KAAKuB,KAAM,SAAU8X,YAE7C2sD,EAAmBzkE,KAAK,IAAI,GAC5B68D,EAAAA,EAAAA,cAAyB78D,KAAK,IACvBA,KACV,EACDytE,GAAWzlE,UAAUknE,OAAS,WAC1B,OAAIlvE,KAAKW,OAAS,EACPgtE,GAAalvE,KAAKuB,KAAM,SAAU8X,YAE7C+kD,EAAAA,EAAAA,cAAyB78D,KAAK,IACvBA,KACV,EACDytE,GAAWzlE,UAAU8lD,MAAQ,WACzB,OAAI9tD,KAAKW,OAAS,EACPgtE,GAAalvE,KAAKuB,KAAM,QAAS8X,YAE5C2sD,EAAmBzkE,KAAK,IACxB68D,EAAAA,EAAAA,QAAmB78D,KAAK,GAAI,IACrBA,KACV,EACDytE,GAAWzlE,UAAUsjB,MAAQ,WAEzB,IADA,IAAI9nB,EAAS,GACJmF,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAC7BnF,EAAOpD,KAAKJ,KAAK2I,GAAGwmE,WAAU,IAElC,OAAOlC,GAASzpE,EACnB,EACDiqE,GAAWzlE,UAAUrB,KAAO,SAASzI,GACjC,IAAK4Z,UAAUnX,OAAQ,CAEnB,IADA,IAAI6C,EAAS,GACJmF,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAC7BnF,GAAUxD,KAAK2I,IAAM3I,KAAK2I,GAAG0+C,aAAe,GAEhD,OAAO7jD,CACV,CACD,IAAImD,GAAOkoD,EAAAA,EAAAA,IAAW3wD,GAASA,IAAUA,EAGzC,OAFAumE,EAAmBzkE,KAAK,IAAI,GAC5B68D,EAAAA,EAAAA,QAAmB78D,KAAK,IAAIquD,EAAAA,EAAAA,IAAU1nD,GAAQA,EAAO,IAC9C3G,IACV,EACDytE,GAAWzlE,UAAUywB,IAAM,SAASv6B,GAChC,OAAI,IAAM4Z,UAAUnX,OACTX,KAAKnD,KAAK,SAASwxD,EAAAA,EAAAA,IAAUnwD,GAASA,EAAQ,IAElD8B,KAAKnD,KAAK,QACpB,EACD4wE,GAAWzlE,UAAU+mE,SAAW,WAC5B,IAAK/uE,KAAK,GACN,OAAOitE,KAEX,IAAIzpE,EAAS,GAEb,OADAA,EAAOpD,KAAK2X,MAAMvU,EAAQxD,KAAK,GAAG0rC,YAC3BuhC,GAASzpE,EACnB,EACDiqE,GAAWzlE,UAAUhM,KAAO,SAASkU,GACjC,IAAI1M,EAASypE,KACb,IAAK/8D,EACD,OAAO1M,EAEX,IACImF,EADAT,EAAQ,GAEZ,GAAI,kBAAoBgI,EAEpB,IADAA,EAAWA,EAAS3N,OACfoG,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAAK,CAC9B,IAAI6D,EAAUxM,KAAK2I,GACnB,GAAIk0D,EAAAA,EAAAA,cAAyBrwD,GAAU,CACnC,IAAI4iE,EAAY5iE,EAAQ6C,aAAa,MACjCggE,EAAUD,GAAa,oBACtBA,GACDxB,GAAkBphE,EAAS,KAAM6iE,GAGrC,IAAIC,GADJD,EAAU,QAAUA,EAAU,OACAn/D,EAAStO,QAAQ,cAAe,OAASytE,GACvEnnE,EAAM9H,KAAK2X,MAAM7P,EAAO20D,EAAAA,EAAAA,iBAA4BrwD,EAAS8iE,IAC7D1B,GAAkBphE,EAAS,KAAM4iE,EACpC,MAAUvS,EAAAA,EAAAA,WAAsBrwD,IAAYqwD,EAAAA,EAAAA,mBAA8BrwD,KACvEtE,EAAM9H,KAAK2X,MAAM7P,EAAO20D,EAAAA,EAAAA,iBAA4BrwD,EAAS0D,GAEpE,MAED,IAAKvH,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IACzBuH,EAAW2sD,EAAAA,EAAAA,OAAkB3sD,GAAYA,EAAWA,EAAS,GACzDlQ,KAAK2I,KAAOuH,GAAYlQ,KAAK2I,GAAGs3D,SAAS/vD,IACzChI,EAAM9H,KAAK8P,GAIvB,OAAO1M,EAAOuqC,IAAI7lC,EACrB,EACD,IAAIqnE,GAAY,SAASzwE,EAAG0N,GACxB,IAAIgjE,EAEJ,QADAhjE,EAAU,QAAUgjE,EAAgBhjE,EAAQq8C,YAAS,IAAW2mB,EAAgBA,EAAgBhjE,GACnFupC,aAGHvpC,EAAQijE,aAAejjE,EAAQs8D,cAAgBt8D,EAAQs/D,iBAAiBnrE,OACrF,EACD8sE,GAAWzlE,UAAUwyB,OAAS,SAAStqB,GACnC,IAAKA,EACD,OAAO+8D,KAEX,GAAI,aAAe/8D,EACf,OAAOlQ,KAAKw6B,OAAO+0C,IAChB,GAAI,YAAcr/D,EACrB,OAAOlQ,KAAKw6B,QAAQ,SAAS17B,EAAG0N,GAC5B,OAAQ+iE,GAAUzwE,EAAG0N,EACxB,IAGL,IADA,IAAIhJ,EAAS,GACJmF,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAAK,CAClC,IAAI/D,EAAO5E,KAAK2I,GAChB,GAAIk0D,EAAAA,EAAAA,cAAyBj4D,IAAS,YAAaS,EAAAA,EAAAA,IAAK6K,GACpD2sD,EAAAA,EAAAA,eAA0Bj4D,EAAMsL,IAAa1M,EAAOpD,KAAKwE,QACtD,GAAIi4D,EAAAA,EAAAA,OAAkB3sD,KAAayzC,EAAAA,EAAAA,IAASzzC,GAC/CA,IAAatL,GAAQpB,EAAOpD,KAAKwE,QAC9B,IAAIiqD,EAAAA,EAAAA,IAAW3+C,GAClBA,EAASzR,KAAKmG,EAAM+D,EAAG/D,IAASpB,EAAOpD,KAAKwE,QAE5C,IAAK,IAAIkJ,EAAI,EAAGA,EAAIoC,EAASvP,OAAQmN,IACjCoC,EAASpC,KAAOlJ,GAAQpB,EAAOpD,KAAKwE,EAG/C,CACD,OAAOqoE,GAASzpE,EACnB,EACDiqE,GAAWzlE,UAAU00B,IAAM,SAASxsB,GAGhC,IAFA,IAAI1M,EAAS,GACT0E,EAAQlI,KAAKw6B,OAAOtqB,GAAUw9D,UACzB/kE,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,KACxB,IAAMT,EAAM9G,QAAQpB,KAAK2I,KAC1BnF,EAAOpD,KAAKJ,KAAK2I,IAGzB,OAAOskE,GAASzpE,EACnB,EACDiqE,GAAWzlE,UAAUinE,GAAK,SAAS/+D,GAC/B,QAASlQ,KAAKw6B,OAAOtqB,GAAUvP,MAClC,EACD8sE,GAAWzlE,UAAU+C,SAAW,SAASmF,GAErC,IADA,IAAI1M,EAAS,GACJmF,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,IAE7B,IADA,IAAIT,EAAQlI,KAAK2I,GAAK3I,KAAK2I,GAAG+iC,WAAa,GAClC59B,EAAI,EAAGA,EAAI5F,EAAMvH,OAAQmN,IAC1B+uD,EAAAA,EAAAA,cAAyB30D,EAAM4F,KAC/BtK,EAAOpD,KAAK8H,EAAM4F,IAK9B,OADAtK,EAASypE,GAASzpE,GACX0M,EAAW1M,EAAOg3B,OAAOtqB,GAAY1M,CAC/C,EACDiqE,GAAWzlE,UAAU0nE,SAAW,WAC5B,IAAIljE,EAAUxM,KAAK,GACnB,IAAKwM,IAAYA,EAAQpD,WACrB,OAAO6jE,KAIX,IAFA,IAAIzpE,EAAS,GACTmsE,EAAmBnjE,EAAQpD,WAAWsiC,YAAc,GAC/C/iC,EAAI,EAAGA,EAAIgnE,EAAiBhvE,OAAQgI,IAAK,CAC9C,IAAIgC,EAAOglE,EAAiBhnE,GACxBk0D,EAAAA,EAAAA,cAAyBlyD,IAASA,IAAS6B,GAC3ChJ,EAAOpD,KAAKuK,EAEnB,CACD,OAAOsiE,GAASzpE,EACnB,EACDiqE,GAAWzlE,UAAU6kD,KAAO,SAAStvD,GACjC,IAAK,IAAIoL,EAAI,EAAGA,EAAI3I,KAAKW,SACjB,IAAUpD,EAASkB,KAAKuB,KAAK2I,GAAIA,EAAG3I,KAAK2I,IADhBA,KAKpC,EACD8kE,GAAWzlE,UAAU7G,MAAQ,SAASqL,GAClC,OAAKA,GAGLA,EAAUygE,GAASzgE,GACZxM,KAAK0tE,UAAUtsE,QAAQoL,EAAQ,KAH3BxM,KAAK6K,SAASE,WAAW5J,MAAMnB,KAI7C,EACDytE,GAAWzlE,UAAUpO,IAAM,SAASuH,GAChC,OAAOnB,KAAKmB,EAAQ,EAAInB,KAAKW,OAASQ,EAAQA,EACjD,EACDssE,GAAWzlE,UAAU4nE,GAAK,SAASzuE,GAE/B,OADAA,EAAQA,EAAQ,EAAInB,KAAKW,OAASQ,EAAQA,EACnC8rE,GAASjtE,KAAKmB,GACxB,EACDssE,GAAWzlE,UAAU+sC,MAAQ,WACzB,OAAO/0C,KAAK4vE,GAAG,EAClB,EACDnC,GAAWzlE,UAAU6sD,KAAO,WACxB,OAAO70D,KAAK4vE,IAAI,EACnB,EACDnC,GAAWzlE,UAAU6nE,OAAS,WAC1B,IAAK,IAAIlnE,EAAI,EAAGA,EAAI3I,KAAKW,OAAQgI,GAAK,EAClC3I,KAAK2I,GAAGknE,QAAU7vE,KAAK2I,GAAGknE,SAE9B,OAAO7vE,IACV,EACDytE,GAAWzlE,UAAU6C,OAAS,SAASqF,GACnC,IAAKlQ,KAAK,GACN,OAAOitE,KAEX,IAAIzpE,EAASypE,GAASjtE,KAAK,GAAGoJ,YAC9B,OAAQ8G,GAAY1M,EAAOyrE,GAAG/+D,GAAY1M,EAASypE,IACtD,EACDQ,GAAWzlE,UAAUq3D,QAAU,SAASnvD,GAGpC,IAFA,IAAI1M,EAAS,GACTqH,EAAS7K,KAAK6K,SACXA,GAAUA,EAAO,KAAOgyD,EAAAA,EAAAA,WAAsBhyD,EAAO,KACpDgyD,EAAAA,EAAAA,cAAyBhyD,EAAO,MAC3BqF,IAAYrF,EAAOokE,GAAG/+D,IACvB1M,EAAOpD,KAAKyK,EAAOjR,IAAI,KAG/BiR,EAASA,EAAOA,SAEpB,OAAOoiE,GAASzpE,EACnB,EACDiqE,GAAWzlE,UAAU8nE,QAAU,SAAS5/D,GACpC,GAAIlQ,KAAKivE,GAAG/+D,GACR,OAAOlQ,KAGX,IADA,IAAI6K,EAAS7K,KAAK6K,SACXA,GAAUA,EAAOlK,QAAQ,CAC5B,GAAIkK,EAAOokE,GAAG/+D,GACV,OAAOrF,EAEXA,EAASA,EAAOA,QACnB,CACD,OAAOoiE,IACV,EACDQ,GAAWzlE,UAAUmD,KAAO,SAAS+E,GACjC,IAAKlQ,KAAK,GACN,OAAOitE,KAEX,IAAI9hE,EAAO8hE,GAASjtE,KAAK,GAAGqH,aAC5B,IAAKyQ,UAAUnX,OACX,OAAOwK,EAEX,KAAOA,GAAQA,EAAKxK,QAAQ,CACxB,GAAIwK,EAAK8jE,GAAG/+D,GACR,OAAO/E,EAEXA,EAAOA,EAAKA,MACf,CACD,OAAO8hE,IACV,EACDQ,GAAWzlE,UAAUkD,KAAO,WACxB,OAAKlL,KAAK,GAGHitE,GAASjtE,KAAK,GAAGw5C,iBAFbyzB,IAGd,EACDQ,GAAWzlE,UAAU+lC,IAAM,SAAS79B,GAGhC,IAFA,IAAI6/D,EAAU9C,GAAS/8D,GACnB1M,EAASxD,KAAK0tE,UACT/kE,EAAI,EAAGA,EAAIonE,EAAQpvE,OAAQgI,IAAK,CACrC,IAAIgP,EAASo4D,EAAQpnE,IAChB,IAAMnF,EAAOpC,QAAQuW,IACtBnU,EAAOpD,KAAKuX,EAEnB,CACD,OAAOs1D,GAASzpE,EACnB,EACD,IAAIwsE,GAAa,GACjBvC,GAAWzlE,UAAU3G,OAAS,WAC1B,OAAO4rE,GAAS+C,GAAW3uE,OAAO0W,MAAM/X,KAAM8X,WACjD,EACD21D,GAAWzlE,UAAUjD,MAAQ,WACzB,OAAOkoE,GAAS+C,GAAWjrE,MAAMgT,MAAM/X,KAAM8X,WAChD,EACD21D,GAAWzlE,UAAU0lE,QAAU,WAC3B,OAAOsC,GAAWjrE,MAAMtG,KAAKuB,KAChC,EACDytE,GAAWzlE,UAAUiF,OAAS,WAC1B,GAAKjN,KAAK,GAGV,OAAO6rE,GAAU7rE,KAAK,GACzB,EACDytE,GAAWzlE,UAAUioE,aAAe,WAChC,IAAKjwE,KAAK,GACN,OAAOitE,KAGX,IADA,IAAIgD,EAAehD,GAASjtE,KAAK,GAAGiwE,cAC7BA,EAAa,IAAM,WAAaA,EAAa3qC,IAAI,aACpD2qC,EAAehD,GAASgD,EAAa,GAAGA,cAG5C,OADAA,EAAeA,EAAa,GAAKA,EAAehD,GAASpQ,EAAAA,EAAAA,qBAE5D,EACD4Q,GAAWzlE,UAAUwC,SAAW,WAC5B,GAAKxK,KAAK,GAAV,CAGA,IAAIiN,EACAy1B,EAAYvK,WAAWn4B,KAAKslC,IAAI,cAChCzC,EAAa1K,WAAWn4B,KAAKslC,IAAI,eACrC,GAAI,UAAYtlC,KAAKslC,IAAI,YAErB,MAAO,CACHb,KAFJx3B,EAASjN,KAAK,GAAGu6D,yBAED91B,IAAM/B,EAClBkC,KAAM33B,EAAO23B,KAAO/B,GAG5B51B,EAASjN,KAAKiN,SACd,IAAIgjE,EAAejwE,KAAKiwE,eACpBC,EAAe,CACfzrC,IAAK,EACLG,KAAM,GASV,MAPI,SAAWqrC,EAAa,GAAGr2B,WAC3Bs2B,EAAeD,EAAahjE,UAEhCijE,EAAe,CACXzrC,IAAKyrC,EAAazrC,IAAMtM,WAAW83C,EAAa3qC,IAAI,mBACpDV,KAAMsrC,EAAatrC,KAAOzM,WAAW83C,EAAa3qC,IAAI,qBAEnD,CACHb,IAAKx3B,EAAOw3B,IAAMyrC,EAAazrC,IAAM/B,EACrCkC,KAAM33B,EAAO23B,KAAOsrC,EAAatrC,KAAO/B,EA1B3C,CA4BJ,EACD,CAAC,CACGzpC,KAAM,aACN+2E,WAAY,cACZC,aAAc,SAASp3E,EAAKkF,GACxBlF,EAAIq3E,SAASnyE,EAAOlF,EAAIgzE,YAC3B,GACF,CACC5yE,KAAM,YACN+2E,WAAY,cACZC,aAAc,SAASp3E,EAAKkF,GACxBlF,EAAIq3E,SAASr3E,EAAIkzE,YAAahuE,EACjC,IACFwC,SAAS,SAAS4vE,GACjB,IAAIx5D,EAAWw5D,EAAkBl3E,KACjCq0E,GAAWzlE,UAAU8O,GAAY,SAAS5Y,GACtC,GAAK8B,KAAK,GAAV,CAGA,IAAI/F,EAAS2xE,GAAmB5rE,KAAK,IACrC,YAAI,IAAW9B,EACJjE,EAASA,EAAOq2E,EAAkBH,YAAcnwE,KAAK,GAAG8W,IAE/D7c,EACAq2E,EAAkBF,aAAan2E,EAAQiE,GAEvC8B,KAAK,GAAG8W,GAAY5Y,EAEjB8B,KAVN,CAWJ,CACJ,IACDytE,GAAWzlE,UAAU1N,KAAO,SAASgI,EAAKpE,GACtC,GAAK8B,KAAK,GAGV,OAAI8X,UAAUnX,OAAS,EACZy/D,EAAAA,KAAiB6M,GAAUjtE,KAAK,GAAIsC,IAE/C89D,EAAAA,KAAiB6M,GAAUjtE,KAAK,GAAIsC,EAAKpE,GAClC8B,KACV,EACDytE,GAAWzlE,UAAUw8D,WAAa,SAASliE,GAEvC,OADAtC,KAAK,IAAMwkE,EAAWxkE,KAAK,GAAIsC,GACxBtC,IACV,EACD,IAAIuwE,GAAkB,WAClB,OAAOtD,GAASl1D,MAAM/X,KAAM8X,UAC/B,EACD9Z,OAAOC,eAAesyE,GAAiB,KAAM,CACzC9sD,YAAY,EACZrlB,cAAc,EACdxE,IAAK,WACD,OAAOqzE,GAASlvE,EACnB,EACD5E,IAAK,SAAS+E,GACV+uE,GAASlvE,GAAKG,CACjB,IAEL,IC5sBA,GDgtBS,WACD,OAAOqyE,EACV,CCltBL,GCAA,OAAmB9jB,EAAAA,wBCGf+jB,GAAgB,SAASp3E,EAAM+kE,GAC/B,IAAIgG,EAAW,CAAC,EACZ,aAAchG,IACdgG,EAASsM,SAAWtS,EAAYsS,UAEhC,aAActS,IACdgG,EAASuM,SAAWvS,EAAYuS,UAEhC,iBAAkBvS,IAClBgG,EAASwM,aAAexS,EAAYwS,eAExC9jB,EAAAA,EAAAA,IAAK,CAAC,QAAS,WAAY,MAAO,SAAU,UAAW,SAAU,WAAY,YAAa,SAAS/tD,EAAGmjD,GAC7Fkc,EAAYlc,KAGjBkiB,EAASliB,GAAc,WACnB,IAAIrkD,EAAO,GAAGmH,MAAMtG,KAAKqZ,WAEzB,OADAla,EAAKgzE,QAAQ5wE,MACNm+D,EAAYlc,GAAYlqC,MAAMomD,EAAavgE,EACrD,EACJ,IACD+uD,GAAAA,EAAAA,KAAevzD,EAAM+qE,EACxB,EACDqM,GAAc7jB,UAAYA,GAAAA,EAC1B,UCtBWkkB,GAAc,WACrBC,GAAgB,gBT6DhBxM,ES5Da,SAAS3S,GACtBA,EAAW,GAAG5sD,MAAMtG,KAAKkzD,GACzB,IAAK,IAAIhpD,EAAI,EAAGA,EAAIgpD,EAAShxD,OAAQgI,IAAK,CACtC,IAAIqxD,EAAW+W,GAAEpf,EAAShpD,IACtBqxD,EAASn9D,KAAKi0E,MACd9W,EAAS,GAAT,cAA6B,KAC7BuE,EAAAA,EAAAA,eAA4BvE,EAAU6W,IAE7C,CACJ,EACDL,GAAcK,GAAa,CACvBJ,UAAU,EACVO,MAAO,SAASxkE,GACZukE,GAAEvkE,GAAS3P,KAAKi0E,IAAe,EAClC,ICZL,IAEIG,GAAiB,IAAI1iE,QACrB2iE,GAAyB,EACzBC,GAAU,SAASC,EAAgBC,GACnC,KAAIhjB,EAAAA,EAAAA,IAAUgjB,GAAd,CAIA,IAAKJ,GAAet3E,IAAIy3E,GAAiB,CACrC,IAAIE,EATuB,qBASwBJ,KAEnD,OADAD,GAAe93E,IAAIi4E,EAAgBE,GAC5BA,CACV,CACD,OAAOL,GAAer3E,IAAIw3E,EANzB,CAFGH,GAAe93E,IAAIi4E,EAAgBC,EAS1C,EACM,SAASE,GAAwBvX,EAAUwX,EAAmBC,GACjE,IAAIn3E,EAAO8lE,EAAYpG,EAASpgE,IAAI,IAChCR,EAAO+3E,GAAQK,EAAkBnqC,aACrC/sC,EAAKlB,GAAQo4E,EACTC,GACAlT,EAAAA,EAAAA,IAAiBvE,EAAU6W,IAAc,WACrCY,EAAUhzE,KAAK+yE,EAClB,IAEAl3E,EAAI,eACLA,EAAI,aAA6B,IAErCA,EAAI,aAA2B8F,KAAKhH,EACvC,CACM,SAASs4E,GAAqB1X,EAAUoX,GAC3C,IAAIh4E,EAAO+3E,GAAQC,GACnB,OAAOhR,EAAYpG,EAASpgE,IAAI,GAAIR,EACvC,CCIDuzD,GAAAA,KAhCgC,SAASvzD,EAAMg4E,GAC3CL,GAAAA,GAAK33E,GAAQ,SAASgE,GAClB,IACIoG,EADAmuE,EAAiB,kBAAoBv0E,EAEzC,GAAIu0E,EAAgB,CAChB,IAAIpvB,EAAanlD,EACbw0E,EAAa,GAAG7sE,MAAMtG,KAAKqZ,WAAW/S,MAAM,GAChD/E,KAAK6sD,MAAM,WACP,IAAI9jB,EAAWqoC,EAAeS,YAAY7xE,MAC1C,IAAK+oC,EACD,MAAMzpB,GAAAA,EAAAA,MAAa,QAASlmB,GAEhC,IACI04E,EADS/oC,EAASwZ,GACGxqC,MAAMgxB,EAAU6oC,QACrC,IAAWpuE,IACXA,EAASsuE,EAEhB,GACJ,MACG9xE,KAAK6sD,MAAM,WACP,IAAI9jB,EAAWqoC,EAAeS,YAAY7xE,MACtC+oC,EACAA,EAAS4D,OAAOvvC,GAEhB,IAAIg0E,EAAepxE,KAAM5C,EAEhC,IACDoG,EAASxD,KAEb,OAAOwD,CACV,CACJ,IAED,OA1CwB,SAASpK,EAAM+nE,EAAWiQ,GACzCA,EAGDjQ,EAAU/nE,GAAQg4E,EAFlBA,EAAiBjQ,EAIrB4Q,GAAoBX,EAAgBh4E,GACpCuzD,GAAAA,KAAevzD,EAAMg4E,EACxB,8CCRGzkB,GAAY,GACZqlB,IAAiB7wB,EAAAA,EAAAA,IAAS,WAC1B,IAAI7iD,EAAiBu+D,EAAAA,EAAAA,OAAkBA,EAAAA,EAAAA,cAA0B,oBAAoB,WACjFoV,GAAellB,OACfzuD,GACH,GACJ,IACG2zE,GAAiB,CACjBlkC,IAAK,SAAAxwC,GACD,IAAI20E,GAAepxB,EAAAA,EAAAA,MACfoxB,GAAgB,YAAcrV,EAAAA,EAAAA,gBAC9Bt/D,KAEAovD,GAAUvsD,KAAK7C,GACf20E,GAAgBF,KAEvB,EACDjlB,KAAM,WACFJ,GAAUjsD,SAAQ,SAAAnD,GAAQ,OAAIA,GAAJ,IAC1BovD,GAAY,EACf,GAEL,IAAe5D,EAAAA,GAAAA,GAASkpB,ICpBpBE,GAAkB,WAClB,IAAIC,EACAzlB,GAAYC,EAAAA,GAAAA,KACZylB,EAAuB1lB,EAAU5e,IACjCukC,EAA0B3lB,EAAUjvD,OACxC,KAAKojD,EAAAA,EAAAA,MACD,OAAO6L,EAEX,IAyBIruD,EAzBAi0E,EAAa,WACb,IAAIt4E,GAAS8mD,EAAAA,EAAAA,MACb,MAAO,CACHpwB,MAAO12B,EAAOu4E,WACdhmD,OAAQvyB,EAAO4uE,YAEtB,EACG4J,EAAe,WACf,IAIIC,EAJAnP,EAAMgP,IACNhP,EAAI5yC,QAAUyhD,EAASzhD,OAAS4yC,EAAI/2C,SAAW4lD,EAAS5lD,SAIxD+2C,EAAI5yC,QAAUyhD,EAASzhD,QACvB+hD,EAAmB,UAEnBnP,EAAI/2C,SAAW4lD,EAAS5lD,SACxBkmD,EAAmB,SAEvBN,EAAW7O,EACX5W,EAAUI,KAAK2lB,GAClB,EACGC,GAAcxxB,EAAAA,EAAAA,IAAU,WACxBixB,EAAWG,GACd,IAoBD,OAlBA5lB,EAAU5e,IAAM,WACZ,IAAIvqC,EAAS6uE,EAAqBt6D,MAAM40C,EAAW70C,WAOnD,OANA66D,IACAV,GAAAA,KAAoB,YACX3zE,GAAkBquD,EAAUhzD,QAC7B2E,EAAiBu+D,EAAAA,EAAAA,QAAkB9b,EAAAA,EAAAA,MAAa,SAAU0xB,GAEjE,IACMjvE,CACV,EACDmpD,EAAUjvD,OAAS,WACf,IAAI8F,EAAS8uE,EAAwBv6D,MAAM40C,EAAW70C,WAKtD,OAJK60C,EAAUhzD,OAAS2E,IACpBA,IACAA,OAAiB,GAEdkF,CACV,EACMmpD,CACV,CArDqB,GAsDtB,MCtDaimB,GAAb,WACI,WAAYC,IAAO,eACf,IAAIz1E,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAChF9X,KAAK8yE,QAAU,CAAC,EAChB9yE,KAAK+yE,OAASF,EACd7yE,KAAKktD,SAAW9vD,CACnB,CANL,uCAcI,SAASoB,GACL,IAAImuD,EAAY3sD,KAAK8yE,QAAQt0E,GAC7B,QAAOmuD,GAAYA,EAAUhzD,KAChC,GAjBL,uBAkBI,SAAU6E,EAAWw0E,GACjB,IAAIrmB,EAAY3sD,KAAK8yE,QAAQt0E,GAI7B,OAHImuD,GACAA,EAAUoB,SAAS/tD,KAAK+yE,OAAQC,GAE7BhzE,KAAK+yE,MACf,GAxBL,gBAyBI,SAAGv0E,EAAWy0E,GAAc,WACxB,IAAI7rC,EAAAA,EAAAA,IAAc5oC,IACdquD,EAAAA,EAAAA,IAAKruD,GAAW,SAACyK,EAAGhN,GAChB,EAAK8wC,GAAG9jC,EAAGhN,EACd,QACE,CACH,IAAI0wD,EAAY3sD,KAAK8yE,QAAQt0E,GACxBmuD,IACDA,GAAYC,EAAAA,GAAAA,GAAU,CAClBqB,aAAcjuD,KAAKktD,SAASe,eAEhCjuD,KAAK8yE,QAAQt0E,GAAamuD,IAElBA,EAAUumB,aAAevmB,EAAU5e,KACzCtvC,KAAKkuD,EAAWsmB,EACzB,CACJ,GAzCL,iBA0CI,SAAIz0E,EAAWy0E,GACX,IAAItmB,EAAY3sD,KAAK8yE,QAAQt0E,GACzBmuD,KACIkC,EAAAA,EAAAA,IAAWokB,GACXtmB,EAAUjvD,OAAOu1E,GAEjBtmB,EAAUmB,QAGrB,GAnDL,qBAoDI,YACIjB,EAAAA,EAAAA,IAAK7sD,KAAK8yE,SAAS,SAACt0E,EAAWuC,GAC3BA,EAAM+sD,OACT,GACJ,IAxDL,qBAOI,SAAc+kB,EAAO1O,GACjB,OAAIA,GACOtV,EAAAA,EAAAA,IAAWsV,GAAYA,EAAS0O,GAAS1O,EAEzC,IAAIyO,EAAeC,EAEjC,KAbL,KCLI54E,IAAS8mD,EAAAA,EAAAA,MCDToyB,GAAQlB,GAAAA,IAERmB,IAAiBzmB,EAAAA,GAAAA,KACjB0mB,GAAoBtC,KACpB7yE,GAAQ,WACR,IAAIo1E,EACJ,OAAO,SAAS9mE,GACZ,IAAKsL,UAAUnX,OACX,OAAO2yE,EAEX,IAAItZ,EAAW+W,GAAEvkE,GACjB6mE,GAAoBrZ,EACpB,IAAIuZ,IAAuBvZ,EAASr5D,OAChC6yE,EAAet1E,KACnBo1E,EAAWC,EAAqBvZ,EAAW+W,GAAE,QAC7CqC,GAAermB,KAAKwmB,EAAqBr1E,KAAU6yE,KAAKyC,EAC3D,CACJ,CAbW,GAqBL,SAASC,KACZ,OAAOJ,EACV,CATDF,IAAO,WACHj1E,GAAM,eACT,ICSD,IAAIjE,IAAS8mD,EAAAA,EAAAA,MACT2yB,GAAiB,CACjBC,OAAQ,SACRC,QAAS,SACTC,QAAS,SACTC,YAAa,SACbC,KAAM,OACNC,SAAU,YACVC,aAAc,iBACdC,cAAe,UACfC,UAAW,wBACXC,QAAS,WAETC,GAAiB,CACjBC,WAAY,UACZ76E,SAAU,UACV86E,QAAS,GACTC,OAAO,EACPC,QAAQ,EACRC,SAAS,EACTC,KAAK,EACLC,SAAS,EACTC,MAAO,IACPC,KAAK,GAELC,GAAa,CACbH,QADa,SACLhgC,GACJ,IAAIogC,EAAU,iBAAiB5+D,KAAKw+B,IAAcA,EAAU3lC,MAAM,aAC9DgmE,GAAYD,GAAW,+BAA+B5+D,KAAKw+B,GAC3DsgC,GAAaF,IAAYC,GAAY,aAAa7+D,KAAKw+B,GACvDugC,EAAQ,yBAAyB/+D,KAAKw+B,EAAUpgC,eACpD,OAAMwgE,GAAWC,GAAYC,GAAaC,EAGnC,CACHb,WAAYU,EAAU,QAAUC,EAAW,SAAW,UACtDx7E,SAAU,UACV86E,QAAS,GACTM,MAAO,IACPC,IAAKK,GAPE,IASd,EACDC,iBAjBa,SAiBIxgC,GACb,IAAIn3B,GAAYs/C,EAAAA,EAAAA,MACZsY,EAAW,aAAaj/D,KAAKw+B,KAAe,OAASn3B,QAAa,IAAWA,OAAY,EAASA,EAAU63D,gBAAkB,EAElI,IADoB,kBAAkBl/D,KAAKw+B,KACpBygC,EACnB,OAAO,KAEX,IAAIL,EAAU,eAAe5+D,KAAKw+B,GAC9B9f,EAAU8f,EAAU3lC,MAAM,mCAI9B,MAAO,CACHqlE,WAAYU,EAAU,QAAU,SAChCv7E,SAAU,MACV86E,QANUz/C,EAAU,CAACgD,SAAShD,EAAQ,GAAI,IAAKgD,SAAShD,EAAQ,GAAI,IAAKgD,SAAShD,EAAQ,IAAM,EAAG,KAAO,GAO1G+/C,MANY,MAAQ56E,GAAOs7E,OAAO/oD,OACd,IAAM,IAOjC,EACDkoD,QApCa,SAoCL9/B,GACJ,IAAI4gC,EAAY,qBAAqBp/D,KAAKw+B,GACtC6gC,EAAa,iBAAiBr/D,KAAKw+B,GACvC,IAAK4gC,GAAaC,EACd,OAAO,KAEX,IAAIT,EAAU,UAAU5+D,KAAKw+B,GACzB9f,EAAU8f,EAAU3lC,MAAM,oCAC1BslE,EAAUz/C,EAAU,CAACgD,SAAShD,EAAQ,GAAI,IAAKgD,SAAShD,EAAQ,IAAM,EAAG,IAAKgD,SAAShD,EAAQ,IAAM,EAAG,KAAO,GAGnH,MAAO,CACHw/C,WAAYU,EAAU,QAAU,SAChCv7E,SAAU,UACV86E,QAASA,EACTM,MANeN,EAAQ5zE,OAAS,IAAM4zE,EAAQ,GAAK,GAAK,IAAMA,EAAQ,IAAMA,EAAQ,GAAK,GAClE,IAAM,IAOpC,GAEDmB,GAAmB,CAACX,GAAWK,iBAAkBL,GAAWL,QAASK,GAAWH,SAC9Ee,GAAAA,WACF,WAAYv4E,IAAS,eACjB4C,KAAK41E,SAAW,OAASx4E,QAAW,IAAWA,OAAU,EAASA,EAAQnD,SAAWA,GACrF+F,KAAK61E,YAAc71E,KAAK81E,aACxB91E,KAAK+1E,oBAAiB,EACtB/1E,KAAKg2E,yBAAsB,EAC3Bh2E,KAAKi2E,gBAAkB,IAAIrD,GAAe5yE,MAC1CA,KAAKk2E,SAAUtpB,EAAAA,GAAAA,MACX9L,EAAAA,EAAAA,QACAmxB,GAAAA,IAAmBjyE,KAAKm2E,wBAAwBr5E,KAAKkD,OACrDmyE,GAAAA,IAAoBnyE,KAAKm2E,wBAAwBr5E,KAAKkD,OAE7D,uCACD,SAAQo2E,GACJ,GAAIA,EAIA,OAHAp2E,KAAK+1E,eAAiB/1E,KAAK81E,WAAWM,GACtCp2E,KAAKq2E,SAAU,OACfr2E,KAAKk2E,QAAQnpB,OAGjB,IAAK/sD,KAAK+1E,eAAgB,CACtBK,OAAe,EACf,IACIA,EAAep2E,KAAKs2E,iCAUvB,CATC,MAAOrtE,GACLmtE,EAAep2E,KAAKu2E,kCACvB,CAJD,QAKSH,IACDA,EAAep2E,KAAKu2E,oCAEpBH,IACAp2E,KAAKq2E,SAAU,EAEtB,CACDr2E,KAAK+1E,eAAiB/1E,KAAK81E,WAAWM,EACzC,CACD,OAAOp2E,KAAK+1E,cACf,qBACD,SAAKS,GACD,OAAO/wB,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAK61E,YAC1B,4BACD,WACI,OAAO71E,KAAKg2E,mBACf,yBACD,WACI,OAAOh2E,KAAKq2E,OACf,iCACD,WACI,QAASr2E,KAAK41E,QAAQa,UACzB,+BACD,SAAeC,GACX,IAAIlzE,EAAS,GACTmzE,EAAa32E,KAAK61E,YAkBtB,OAjBAa,EAASA,GAAU12E,KAAKyZ,WACb66D,aACP9wE,EAAOpD,KAAK,aAAa6P,OAAOymE,EAAOpC,aACnC,YAAcoC,EAAOpC,YACrB9wE,EAAOpD,KAAK,qBAGpBoD,EAAOpD,KAAK,aAAa6P,OAAO0mE,EAAWl9E,WACvCk9E,EAAWpC,SAAWoC,EAAWpC,QAAQ5zE,QACzC6C,EAAOpD,KAAK,aAAa6P,OAAO0mE,EAAWl9E,SAAU,KAAKwW,OAAO0mE,EAAWpC,QAAQ,KAEpFv0E,KAAK42E,eACLpzE,EAAOpD,KAAK,iBAEZy2E,EAAAA,GAAAA,KAAS72B,YACTx8C,EAAOpD,KAAK,UAEToD,CACV,iCACD,SAAiBgJ,EAASkqE,GACtB12E,KAAK82E,eAAiB92E,KAAK+2E,eAAeL,GAAQjqE,KAAK,KACvDskE,GAAEvkE,GAAS4hE,SAASpuE,KAAK82E,eAC5B,iCACD,SAAiBtqE,GACbukE,GAAEvkE,GAAS6hE,YAAYruE,KAAK82E,eAC/B,4BACD,WACI,IACI,OAAO92E,KAAKg3E,eAAgBl2B,EAAAA,EAAAA,OAAe9gD,KAAK41E,QAAQnxC,MAAQzkC,KAAK41E,QAAQ57E,MAAQgG,KAAK41E,QAAQnxC,IAAI,oBAAsBzkC,KAAKi3E,kBAGpI,CAFC,MAAOhuE,GACL,OAAO,CACV,CACJ,+BACD,WACIjJ,KAAKg3E,cAAe,CACvB,2BACD,SAAWE,GAQP,GAPI,iBAAmBA,IACnBA,EAAa,CACT5C,WAAY,QACZ76E,SAAU,UACVm7E,SAAS,KAGbxtC,EAAAA,EAAAA,IAAc8vC,GACd,OAAOl3E,KAAKm3E,YAAYD,GAExB,IAAIh5D,EACJ,GAAIg5D,GAEA,KADAh5D,EAAKw1D,GAAewD,IAEhB,MAAM53D,GAAAA,EAAAA,MAAa,cAIvBpB,GADgB6+C,EAAAA,EAAAA,MACDnoB,UAEnB,OAAO50C,KAAKo3E,QAAQl5D,EAE3B,gDACD,WACI,IAAI1a,EAIJ,OAHIs9C,EAAAA,EAAAA,QAAgB9gD,KAAK41E,QAAQnxC,IAAI,2BAA6BzkC,KAAK41E,QAAQnxC,IAAI,sBAC/EjhC,EAASxD,KAAK41E,QAAQnxC,IAAI,2BAA6BzkC,KAAK41E,QAAQnxC,IAAI,oBAErEjhC,CACV,iDACD,WACI,IAAI6zE,EFrOY,WACpB,IAAIA,EACJ,IACIA,EAAiBp9E,GAAOo9E,cACd,CAAZ,MAAOpuE,GAAK,CACd,OAAOouE,CACV,CE+N4BC,GACrB,GAAKD,EAAL,CAGA,IAAIjB,EAAeiB,EAAeE,QAAQ,mBAC1C,IACI,OAAOzxE,KAAK6G,MAAMypE,EAGrB,CAFC,MAAOlxB,GACL,OAAOkxB,CACV,CANA,CAOJ,4BACD,SAAYr2E,GACR,IAAIyD,GAASiiD,EAAAA,GAAAA,GAAO,CAAC,EAAG4uB,GAAgBr0E,KAAK+1E,eAAgBh2E,GACzDy3E,EAAY,CACZhD,MAAO,UAAYhxE,EAAO8wE,WAC1BG,OAAQ,WAAajxE,EAAO8wE,WAC5BI,QAAS,YAAclxE,EAAO/J,SAC9Bk7E,IAAK,QAAUnxE,EAAO/J,SACtBm7E,QAAS,YAAcpxE,EAAO/J,UAElC,OAAOgsD,EAAAA,GAAAA,GAAOjiD,EAAQg0E,EACzB,wBACD,SAAQt5D,GACJ,IAAK,IAAIk0C,EAAM,EAAGA,EAAMsjB,GAAiB/0E,OAAQyxD,GAAO,EAAG,CACvD,IACIryD,GAAS03E,EADA/B,GAAiBtjB,IACVl0C,GACpB,GAAIne,EACA,OAAOC,KAAKm3E,YAAYp3E,EAE/B,CACD,OAAOs0E,EACV,mCACD,WACI,IAAIqD,EAAU3G,GAAE/wE,KAAK41E,SACjB+B,EAAc7M,GAAU4M,GAAW9M,GAAS8M,GAAW,WAAa,YACpE13E,KAAKg2E,sBAAwB2B,IAGjC33E,KAAKg2E,oBAAsB2B,EAC3B33E,KAAKi2E,gBAAgB2B,UAAU,qBAAsB,CAAC,CAClDD,YAAaA,KAEpB,wCACD,WACI,IAAIE,EAAcjN,GAAS5qE,KAAK41E,SAC5B51E,KAAK83E,gBAAkBD,IAG3B73E,KAAK83E,cAAgBD,EACrB73E,KAAK+3E,qBACR,mBACD,SAAGv5E,EAAWy0E,GAEV,OADAjzE,KAAKi2E,gBAAgBlpC,GAAGvuC,EAAWy0E,GAC5BjzE,IACV,oBACD,SAAIxB,EAAWy0E,GAEX,OADAjzE,KAAKi2E,gBAAgB3/B,IAAI93C,EAAWy0E,GAC7BjzE,IACV,OAnLC21E,GAqLFqC,GAAU,IAAIrC,GACdsC,GAAkBC,KAClBD,IACAD,GAAQG,iBAAiBF,IAE7B7E,GAAerlC,KAAI,SAACmqC,EAAUE,GAC1BJ,GAAQK,iBAAiBD,GACzBJ,GAAQG,iBAAiBD,EAC5B,IACD,UChSIj+E,IAAS8mD,EAAAA,EAAAA,MAWFu3B,GAAqB,WAC5B,IAEQC,EAFJ3wB,EAAgBiV,EAAAA,EAAAA,mBAChBjV,GAAiBA,IAAkBiV,EAAAA,EAAAA,YAEnC,QAAU0b,EAAsB3wB,EAAc4wB,YAAS,IAAWD,GAA+BA,EAAoB95E,KAAKmpD,GAEjI,EAiBU6wB,GAAsB,SAACC,EAAaC,GAC3C,IAAIC,EAAe7H,GAAE2H,GACjBG,EAAa9H,GAAE4H,GACnB,GAAIC,EAAa,KAAOC,EAAW,GAC/B,OAAOD,EAAa,GAKxB,IAHA,IAAIE,EAAgBF,EAAavZ,UAC7B0Z,EAAcF,EAAWxZ,UAEpB12D,GADYY,KAAKsZ,IAAIi2D,EAAcn4E,OAAQo4E,EAAYp4E,QAClCgI,EAAI,EAAGA,IACjC,GAAImwE,EAAcl/E,IAAI+O,KAAOowE,EAAYn/E,IAAI+O,GACzC,OAAOmwE,EAAcl/E,IAAI+O,EAGpC,EAcUqwE,GAA2B,SAA3BA,EAA2BxsE,GAClC,IAAIwtD,GAAW3L,EAAAA,EAAAA,IAAU7hD,KAAaA,EAAQupC,WAAYgmB,EAAAA,EAAAA,IAAWvvD,IAAYukE,GAAEvkE,GAAWukE,GAAE,SAAS5D,KAAK3gE,GAASuiE,WAQvH,OAPI,IAAM/U,EAASr5D,SACXq5D,EAASiV,GAAG,UACZjV,EAAWgf,EAAyBhf,EAASmT,OAAO5qE,QAC7Cy3D,EAASiV,GAAG,WACnBjV,EAAWA,EAASjvD,SAAS,SAASgkE,aAGvC/U,CACV,EACUif,GAAgB,SAACl4E,EAAO4F,GAC/B,IAAIuyE,EAAYn4E,EAAMmhE,eAAiBnhE,EAAMmhE,cAAciX,eAAiBl/E,GAAOk/E,cACnF,IAAKxyE,EACD,OAAOuyE,GAAaA,EAAUE,QAAQ,QAE1CF,GAAaA,EAAUG,QAAQ,OAAQ1yE,EAC1C,EACUs5D,GAAW,SAAXA,EAAY14D,EAAWiF,GAC9B,QAAKA,KAGDm3C,EAAAA,EAAAA,IAASp8C,GACF04D,EAAS14D,EAAUrF,SAAUsK,GAEjCjF,EAAU04D,SAASzzD,IAAYyzD,EAAS14D,EAtF7B,SAAAiF,GAClB,GAAKA,EAAQm7C,YAAb,CAGA,IAAIkB,EAAOr8C,EAAQm7C,cAAckB,KACjC,KAAI6H,EAAAA,EAAAA,IAAS7H,GAGb,OAAOA,CALN,CAMJ,CA6E6DywB,CAAgB9sE,IAC7E,EACU+sE,GAA8B,SAAC/sE,EAAS7F,EAAMvJ,GACrD,IAAI+pE,EAAgBltE,GAAO2gE,iBAAiBmW,GAAEvkE,GAAS5S,IAAI,IACvD4/E,EAAkBp8E,GAAWA,EAAQo8E,gBACzC,OAAOzI,GAAE,SAASpqE,KAAKA,GAAM2+B,IAAI,CAC7BP,UAAWoiC,EAAcpiC,UACzB00C,YAAatS,EAAcsS,YAC3BzmE,WAAYm0D,EAAcn0D,WAC1B0W,SAAUy9C,EAAcz9C,SACxBD,WAAY09C,EAAc19C,WAC1BY,cAAe88C,EAAc98C,cAC7BsV,OAAQwnC,EAAcxnC,OACtB+B,WAAY83C,EAAkBrS,EAAczlC,WAAa,GACzDC,aAAc63C,EAAkBrS,EAAcxlC,aAAe,GAC7DC,cAAe43C,EAAkBrS,EAAcvlC,cAAgB,GAC/DC,YAAa23C,EAAkBrS,EAActlC,YAAc,GAC3D0B,WAAY,SACZC,WAAY,MACZh5B,SAAU,WACVkvE,MAAO,QAEd,EAOU1K,GAAc,SAACxiE,EAASu6C,GAC/B,GAAMA,GAAcA,EAAW,GAG/B,OAAIA,EAAWkoB,GAAGziE,GACPA,IAEXqgD,EAAAA,EAAAA,IAAK9F,GAAY,SAACjoD,EAAG66E,IAbC,SAACntE,EAASu6C,GAC5BA,GACA8V,EAAAA,EAAAA,cAAyBrwD,EAAQpD,WAAY29C,EAAYv6C,EAGhE,CASO/E,CAAa+E,EAAQ,GAAImtE,EAC5B,IACDntE,EAAQ9O,SACDqpD,EACV,EC5IG6yB,GAA+B,SAASp7E,GACxC,OAAO,SAASgO,GAGZ,IAFA,IAAIwtD,EAAW+W,GAAEvkE,GAAW,QACxBqtE,EAAiB7f,EAASx/B,OAAO,iCAAiCuT,IAAIisB,EAASh+D,KAAK,kCAC/E2M,EAAI,EAAGA,EAAIkxE,EAAel5E,OAAQgI,IACvC41D,EAAAA,EAAAA,eAA4Bsb,EAAelxE,GAAInK,EAEtD,CACJ,EACUs7E,GAAoBF,GAA6B,WACjDG,GAAqBH,GAA6B,YAClDI,GAAqBJ,GAA6B,YCHlDK,IAAoBrtB,EAAAA,GAAAA,GAAU,CACrCqB,cAAc,IAELisB,GAAb,6EACI,SAAO98E,GAEH,IAEI+8E,EAFA5jC,GADJn5C,EAAUA,GAAW,CAAC,GACGm5C,WAWzB,cAVOn5C,EAAQm5C,WAGX4jC,EADA/8E,EAAQg9E,WAAah9E,EAAQi9E,YAAcr6E,KAAKyrC,SACtCslC,GAAE,SAASprE,OAAO3F,KAAKyrC,UAAUsjC,WAEjC/uE,KAAKs6E,YAAYl9E,GAE/B4C,KAAKu6E,yBAAyBJ,EAAS/8E,EAAQmK,WAC/C0yE,GAAkBltB,KAAKotB,EAAS/8E,EAAQmK,WACxCgvC,GAAcA,IACP4jC,CACV,GAfL,sCAgBI,SAAyBA,EAAS5yE,GAC9B,GAAKA,EAAL,CAGA,IAAIizE,EAAazJ,GAAExpE,GACfkzE,EAAoBxa,GAASua,EAAW5gF,IAAI,GAAIugF,EAAQvgF,IAAI,IAEhE,GADA4gF,EAAW70E,OAAOw0E,IACdM,EAGe5d,EAAAA,EAAAA,UAAqBoD,SAASua,EAAW5gF,IAAI,KAIhEkgF,GAAkBK,EAXjB,CAYJ,GA/BL,yBAgCI,WACI,MAAM76D,GAAAA,EAAAA,MAAa,QACtB,KAlCL,KCkCao7D,GAAb,0CACI,WAAYpsC,EAAQqsC,EAAQC,EAAaC,GAAW,6BAChD,gBACKC,QAAUxsC,EACf,EAAKysC,QAAUJ,EACf,EAAKK,WAAaH,GAAa,CAAC,EAChC,EAAKI,aAAeL,EAL4B,CAMnD,CAPL,0CAQI,SAAYx9E,GAAS,WACbo9E,EAAazJ,GAAE3zE,EAAQmK,WACvBglC,EA9CO,SAAS2uC,EAASN,EAAaD,EAAQE,EAAWt9E,GACjE,IAAI49E,EACAC,EAAiB,SAAC9gF,EAAMsgF,EAAar9E,GAApB,OAAiCq9E,GAAY,kBAAMtgF,CAAN,GAAYiD,EAAzD,EAAoE29E,EAASN,GAAc,SAASS,GACrHF,GAAiBA,KACbrf,EAAAA,EAAAA,IAAYuf,GACZ99E,EAAS89E,GAGbF,EAAgB,SAAS7gF,EAAMsgF,EAAaD,EAAQE,EAAWt9E,GAC3D,IAAI+9E,EAAe,CAAC,EAChBC,EAAeZ,EAAO51E,QACtBy2E,EAAgBb,EAAO52E,KAAK,SAAS3K,GACrC,IAAIqiF,EAAcZ,EAAUzhF,GAC5B,OAAOwhF,EAAYa,EAAc,kBAAMA,EAAYnhF,EAAlB,EAA0B,kBAAMA,EAAKlB,EAAX,GAAmB,SAAS8E,GAEnF,GADAo9E,EAAaliF,GAAQ8E,EACjBq9E,EAAa56E,OAAQ,CACrB,IAAIQ,EAAQo6E,EAAan6E,QAAQhI,GAC7B+H,GAAS,GACTo6E,EAAal6E,OAAOF,EAAO,EAElC,CACIo6E,EAAa56E,QACdpD,EAAS+9E,EAEhB,GACJ,IACD,OAAO,WACHE,EAAc96E,SAAQ,SAAA6rC,GAAO,OAAIA,GAAJ,GAChC,CACJ,CArBe,CAqBd8uC,EAAmBT,EAAaD,EAAQE,EAAWt9E,EACxD,IACD,OAAO,WACH49E,GAAiBA,IACjBC,GAAiBA,GACpB,CACJ,CAWqBM,CAAat+E,EAAQq4C,MAAOz1C,KAAKi7E,aAAcj7E,KAAK+6E,QAAS/6E,KAAKg7E,YAAY,SAAA1gF,GACxFkgF,EAAW1sB,QACX,EAAKgtB,QAAQN,EAAYlgF,EAAM8C,EAAQq4C,MAC1C,IAED,OADA8oB,EAAAA,EAAAA,GAAgBic,EAAY3J,GAAatkC,GAClCiuC,EAAWzL,UACrB,KAhBL,GAAsCmL,IC3CzByB,GAAb,+IACI,WACI,OAAO5K,IACV,KAHL,GAAmCmJ,mCCD/BtpB,GAAO,SAAS1yD,GAChB,OAAI,IAAMA,EACC,EAEJA,EAAQqL,KAAKD,IAAIpL,EAC3B,EACG09E,GAAe,SAAS19E,EAAO29E,EAAUC,GACzC,IAAIC,GAAuBF,GAAY,IAAMA,EACzCG,GAAuBF,GAAY,IAAMA,EAG7C,OAFAC,IAAwBF,EAAYG,EAAkD99E,EAA5BqL,KAAKsZ,IAAI3kB,EAAO49E,IAC1EE,IAAwBF,EAAYC,EAAkD79E,EAA5BqL,KAAKkuB,IAAIv5B,EAAO29E,IACnEtyE,KAAKsZ,IAAItZ,KAAKkuB,IAAIv5B,EAAO29E,GAAWC,EAC9C,EACGG,GAAU,SAAS/9E,EAAO29E,EAAUC,GACpC,OAAO59E,GAAS29E,GAAY39E,GAAS49E,CACxC,EAED,SAASI,GAAYh+E,GACjB,OAAOqL,KAAKD,IAAIwuB,SAAS55B,EAAMi+E,gBAAgB95E,MAAM,KAAK,IAC7D,CAYD,SAAS+5E,GAA0Bl+E,EAAOm+E,GACtC,IAAIC,EAXR,SAAgCp+E,GAC5B,IAAIy2C,EAAQz2C,EAAMi+E,gBAAgB95E,MAAM,KACpCk6E,EAAWpkD,WAAWwc,EAAM,IAEhC,MAAO,CACH6nC,SAFW1kD,SAAS6c,EAAM,IAG1B4nC,SAAUA,EAEjB,CAG6BE,CAAuBv+E,GACjD,OAAOi6B,WAAW,GAAGloB,OAAOqsE,EAAoBC,SAAU,KAAKtsE,OAAOqsE,EAAoBE,SAAWH,GACxG,CAMD,SAASK,GAAOx+E,EAAOy+E,GACnB,IAIIC,EAJAC,EA2BR,SAAsB3+E,GAClB,IAAIwD,EAAMxD,EAAMZ,WAChB,GAAIoE,EAAIN,QAAQ,KAAO,EACnB,OAAO,EAEX,IAAIm7E,EAAW76E,EAAIW,MAAM,KACrBy6E,EAAsBP,EAAS,GAAGn7E,QAAQ,KAC9C,OAAO07E,GAAuB,EAAIA,EAAsBP,EAAS,GAAG57E,MACvE,CAnCmBo8E,CAAaJ,GAAY,GAAK,EAC1CK,EAAiB9+E,EAAMZ,WAAW+E,MAAM,KACxCg2D,EAAcn6D,EACd++E,EAAW1zE,KAAKD,IAAIpL,GAEpBg/E,GAAkBzhB,EAAAA,EAAAA,IAAcv9D,GAChCi/E,EAAcF,EAAW,EAAI,GAAK,EACtC,OAAI,IAAMD,EAAer8E,OACdzC,GAENg/E,KACGzhB,EAAAA,EAAAA,IAAckhB,KACdE,EAAYG,EAAe,GAAGr8E,OAASu7E,GAAYS,IAGvDz+E,GADAA,EAAQ++E,GACQ1zE,KAAKo/D,MAAMzqE,GAASi/E,GAExCN,EArBO,aAAe,KAAKO,YAAY,IAqBXlB,GAAYh+E,GAAS,GAAK2+E,EAAY,EAAI,GAAK,EACtEK,IACDN,EAAyBzkD,WAAWj6B,EAAMk/E,YAAYP,IAAYv/E,WAAW+E,MAAM,MACxD,KAAO86E,EAAY7/E,WAI3C66B,WAAWkgC,EAAY+kB,YAAYP,IAH3B1kD,WAAW6kD,EAAe,GAAK,IAAMJ,EAAuB,IAI9E,CAuFD,SAASS,GAAen/E,GACpB,IAAIo/E,EAAcxlE,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,EACnF,OAAOqgB,WAAWj6B,EAAMy6B,QAAQ2kD,GACnC,CC/JD,IAAIC,GAAgB,CAChBC,YAAa,EACbxoC,OAAQ,IACRyoC,OAAQ,IACRC,KAAM,KACNC,IAAK,MACLxpD,KAAM,OACND,MAAO,OACP0pD,QAAS,OACTC,KAAM,SAEH,SAASC,GAAe5/E,GAC3B,OAAOq/E,GAAcr/E,EACxB,CCMD,IAII6/E,GAAoB,CAAC,cAAe,SAAU,SAAU,OAAQ,MAAO,OAAQ,QAAS,UAAW,QA8BnGC,GAAiC,SAAS9/E,GAC1C,IAAIyK,EACAs1E,EACAC,EACAH,EAAoB,CAAC,cAAe,SAAU,SAAU,OAAQ,MAAO,QAAS,QAChFv6E,EAAS,CAAC,EACd,IAAKmF,EAAIo1E,EAAkBp9E,OAAS,EAAGgI,GAAK,EAAGA,IAC3Cu1E,EAAmBH,EAAkBp1E,IACrCs1E,EAAgB10E,KAAKo/D,MAAMzqE,EAAQ4/E,GAAeI,KAC9B,IAChB16E,EAAO06E,EAAmB,KAAOD,EACjC//E,GAASigF,GAA8BD,EAAkBD,IAGjE,OAAOz6E,CACV,EAcD,SAAS26E,GAA8BC,EAAUvyE,GAC7C,OAAOiyE,GAAeM,GAAYvyE,CACrC,CAED,SAASwyE,GAAoBC,GACzB,IACI31E,EADA41E,GAAe,EAEnB,OAAI7tB,EAAAA,EAAAA,IAAS4tB,GACFA,GAEPj+D,EAAAA,EAAAA,IAASi+D,KACTzxB,EAAAA,EAAAA,IAAKyxB,GAAe,SAASh8E,EAAKpE,GAC9B,IAAKyK,EAAI,EAAGA,EAAIo1E,GAAkBp9E,OAAQgI,IAClCzK,IAAUoE,IAAQy7E,GAAkBp1E,GAAK,KAAOrG,IAAQy7E,GAAkBp1E,KAAO41E,EAAc51E,IAC/F41E,EAAc51E,EAGzB,IACMo1E,GAAkBQ,IAEtB,EACV,CACD,IAAIC,GAA0B,CAC1BhB,YAAa,cACbxoC,OAAQ,WACRyoC,OAAQ,YACRC,KAAM,YACNC,IAAK,MACLxpD,KAAM,MACND,MAAO,QACP0pD,QAAS,UACTC,KAAM,QAMV,IAAIY,GAAa,SAASvqD,GACtB,OAAO3qB,KAAKo/D,MAAMz0C,EAAQ,EAC7B,EACGwqD,GAAuB,SAASxqD,GAChC,OAAO,EAAIuqD,GAAWvqD,EACzB,EAED,SAASyqD,GAA6B1qD,EAAM2qD,EAAcC,EAAgB3gC,GACtEjqB,EAAO,IAAInxB,KAAKmxB,EAAKyhC,WACrB,IACIopB,EACA5qD,EAFA6qD,EAAU,IAAIj8E,KAAKmxB,EAAKyhC,WAGxBwoB,EAAmBG,GAAoBO,GAC3C,OAAQV,GACJ,IAAK,SACDjqD,EAAO,IAAInxB,KAAK,IAAMyG,KAAKo/D,MAAMoW,EAAQrpB,UAAY,MACrD,MACJ,IAAK,SACDzhC,EAAO,IAAInxB,KAAK,IAAMyG,KAAKo/D,MAAMoW,EAAQrpB,UAAY,MACrD,MACJ,IAAK,OACDzhC,EAAO,IAAInxB,KAAK,KAAOyG,KAAKo/D,MAAMoW,EAAQrpB,UAAY,OACtD,MACJ,IAAK,OACDzhC,EAAK+qD,SAAS,GAClB,IAAK,QACD/qD,EAAKgrD,QAAQ,GACjB,IAAK,MACDhrD,EAAKirD,SAAS,EAAG,EAAG,EAAG,GACvB,MACJ,IAAK,QACDjrD,EAAOkrD,GAAiBlrD,EAAMiqB,GAAkB,IAC3CghC,SAAS,EAAG,EAAG,EAAG,GACvB,MACJ,IAAK,UACDJ,EAAoBJ,GAAqBzqD,EAAKmrD,YAC9ClrD,EAAQD,EAAKmrD,WACbnrD,EAAKgrD,QAAQ,GACbhrD,EAAKirD,SAAS,EAAG,EAAG,EAAG,GACnBhrD,IAAU4qD,GACV7qD,EAAK+qD,SAASF,GAM1B,OAHID,GAAkB,SAAWX,GAAoB,WAAaA,GAAoB,WAAaA,GAC/FmB,GAAeN,EAAS9qD,GAErBA,CACV,CAED,SAASqrD,GAASrrD,GACd,OAAO0qD,GAA6B1qD,EAAM,MAC7C,CA8BD,SAASsrD,GAAgBrhF,EAAOy+E,EAAU7+C,GACtC,IAAIt6B,EAAS,IAAIV,KAAK5E,EAAMw3D,WACxB8pB,GAAiB9uB,EAAAA,EAAAA,IAASisB,GAAY8C,GAAwB9C,EAASnoE,gBAAiBkkD,EAAAA,EAAAA,IAAUikB,GAAYqB,GAA+BrB,GAAYA,EA4B7J,OA3BI6C,EAAeE,OACfl8E,EAAOm8E,YAAYn8E,EAAOo8E,cAAgBJ,EAAeE,MAAQ5hD,GAEjE0hD,EAAeK,UACfr8E,EAAOw7E,SAASx7E,EAAO47E,WAAa,EAAII,EAAeK,SAAW/hD,GAElE0hD,EAAeM,QACft8E,EAAOw7E,SAASx7E,EAAO47E,WAAaI,EAAeM,OAAShiD,GAE5D0hD,EAAeO,OACfv8E,EAAOy7E,QAAQz7E,EAAOw8E,UAAY,EAAIR,EAAeO,MAAQjiD,GAE7D0hD,EAAeS,MACfz8E,EAAOy7E,QAAQz7E,EAAOw8E,UAAYR,EAAeS,KAAOniD,GAExD0hD,EAAeU,OACf18E,EAAO28E,QAAQ38E,EAAOkyD,UAAY,KAAO8pB,EAAeU,MAAQpiD,GAEhE0hD,EAAeY,SACf58E,EAAO28E,QAAQ38E,EAAOkyD,UAAY,IAAM8pB,EAAeY,QAAUtiD,GAEjE0hD,EAAea,SACf78E,EAAO28E,QAAQ38E,EAAOkyD,UAAY,IAAM8pB,EAAea,QAAUviD,GAEjE0hD,EAAelzD,cACf9oB,EAAO28E,QAAQ38E,EAAOkyD,UAAY8pB,EAAelzD,aAAewR,GAE7Dt6B,CACV,CACD,IAAI88E,GAAc,SAASpiF,EAAOy+E,EAAU4D,GACxC,IAAIziD,EAAMyiD,GAAc,EAAI,EAC5B,OAAO7kB,EAAAA,EAAAA,IAAOx9D,GAASqhF,GAAgBrhF,EAAOy+E,EAAU7+C,GAAO4+C,GAAOx+E,EAAQy+E,EAAW7+C,EAAK6+C,EACjG,EA6ED,SAAS6D,GAAgBvsD,GAErB,OADiBwsD,GAAuBxsD,EAAK2rD,cAAe3rD,EAAKmrD,WAAa,EAAG,GAC/DY,SACrB,CA6CD,SAASP,GAAwBiB,GAC7B,IAAIl9E,EAAS,CAAC,EACd,OAAQk9E,GACJ,IAAK,OACDl9E,EAAOk8E,MAAQ,EACf,MACJ,IAAK,QACDl8E,EAAOs8E,OAAS,EAChB,MACJ,IAAK,UACDt8E,EAAOs8E,OAAS,EAChB,MACJ,IAAK,OACDt8E,EAAOu8E,MAAQ,EACf,MACJ,IAAK,MACDv8E,EAAOy8E,KAAO,EACd,MACJ,IAAK,OACDz8E,EAAO08E,MAAQ,EACf,MACJ,IAAK,SACD18E,EAAO48E,QAAU,EACjB,MACJ,IAAK,SACD58E,EAAO68E,QAAU,EACjB,MACJ,IAAK,cACD78E,EAAO8oB,aAAe,EAE9B,OAAO9oB,CACV,CAMD,SAASm9E,GAAiBC,EAAOC,GAC7B,OAAOC,GAASF,EAAOC,IAAUD,EAAMxB,aAAeyB,EAAMzB,UAC/D,CAED,SAAS0B,GAASF,EAAOC,GACrB,OAAOD,GAASC,GAASD,EAAMhB,gBAAkBiB,EAAMjB,aAC1D,CAsBD,SAASmB,GAAwB9sD,GAC7B,OAAOA,GAAQA,EAAK2rD,cAAgB3rD,EAAK2rD,cAAgB,GAC5D,CAED,SAASoB,GAAqB/sD,GAC1B,OAAOA,GAAQA,EAAK2rD,cAAgB3rD,EAAK2rD,cAAgB,EAC5D,CAiBD,SAAST,GAAiBlrD,EAAMiqB,GAC5B,IAAI+iC,GAAShtD,EAAKitD,SAAWhjC,EA9ad,KA+aX16C,EAAS,IAAIV,KAAKmxB,GAEtB,OADAzwB,EAAOy7E,QAAQhrD,EAAK+rD,UAAYiB,GACzBz9E,CACV,CAED,SAAS29E,GAAWltD,GAChB,OAAOnxB,KAAKs+E,IAAIntD,EAAK2rD,cAAe3rD,EAAKmrD,WAAYnrD,EAAK+rD,UAC7D,CAOD,SAASqB,GAAmBxD,GACxB,OAAO,IAAI/6E,KAAK+6E,EAAM,EAAG,EAC5B,CAED,SAASyD,GAAkBzD,GACvB,OAAO,IAAI/6E,KAAK+6E,EAAM,GAAI,GAC7B,CAED,SAAS0D,GAAiBttD,EAAMiqB,GAC5B,IAAIy/B,EAAM1pD,EAAKitD,SAAWhjC,EAAiB,EAI3C,OAHIy/B,GAAO,IACPA,GAxcW,GA0cRA,CACV,CAmFD,SAAS6D,GAAcvtD,EAAMpR,EAAK4U,GAC9B,IAAIgqD,EAAiBxtD,EACrB,OAAKo6B,EAAAA,EAAAA,IAAUp6B,KAGXo6B,EAAAA,EAAAA,IAAUxrC,IAAQoR,EAAOpR,IACzB4+D,EAAiB5+D,IAEjBwrC,EAAAA,EAAAA,IAAU52B,IAAQxD,EAAOwD,IACzBgqD,EAAiBhqD,GAEdgqD,GARIxtD,CASd,CAED,SAASorD,GAAeN,EAAS2C,GAC7B,IAAKrzB,EAAAA,EAAAA,IAAU0wB,GAAf,CAGA,IAAI4C,EAAOD,EAAQE,WAAa7C,EAAQ6C,WACxC,GAAI,IAAMD,EAAV,CAGA,IAAI/wB,EAAO,IAAM+wB,IAAS,KAAOA,GAAQ,EAAI,EACzCE,EAAQ,IAAI/+E,KAAK4+E,EAAQhsB,UAAY,KAAO9E,IAC5CA,EAAO,GAAKixB,EAAM7B,YAAc0B,EAAQ1B,YACxC0B,EAAQvB,QAAQ0B,EAAMnsB,UAJzB,CAJA,CAUJ,CAQD,SAASosB,GAAuBj/D,EAAK4U,GACjC,OAAO,IAAMA,EAAIsqD,oBAAsBl/D,EAAIk/D,qBAAuB,GACrE,CACD,IAYItB,GAAyB,SAAS5C,GAClC,IAAIr6E,GAAS,QAAIV,KAAP,2BAAegV,YAEzB,OADAtU,EAAOm8E,YAAY9B,GACZr6E,CACV,EAKGw+E,GAAY,CACZjE,kBAAmBA,GACnBC,+BAAgCA,GAChCiE,mBA1iBqB,SAAS3D,GAC9B,IAAIhyD,EAAe,EASnB,OARIjM,EAAAA,EAAAA,IAASi+D,KACTzxB,EAAAA,EAAAA,IAAKyxB,GAAe,SAASh8E,EAAKpE,GAC9BouB,GAAgB6xD,GAA8B77E,EAAI0C,OAAO,EAAG1C,EAAI3B,OAAS,GAAIzC,EAChF,KAEDwyD,EAAAA,EAAAA,IAAS4tB,KACThyD,EAAe6xD,GAA8BG,EAAc,IAExDhyD,CACV,EAgiBG41D,gBAnlBkB,SAASpmD,EAAMqmD,GAEjC,OADe9D,GAAoBviD,IAE/B,IAAK,cACD,MAAO,SACX,IAAK,SACD,MAAO,SACX,IAAK,SACD,MAAO,OACX,IAAK,OACD,MAAO,MACX,IAAK,MACD,OAAOqmD,EAAY,OAAS,QAChC,IAAK,OACD,MAAO,QACX,IAAK,QACD,MAAO,UACX,IAAK,UACL,IAAK,OACD,MAAO,OACX,QACI,OAAO,EAElB,EA6jBGhE,8BAA+BA,GAC/BE,oBAAqBA,GACrB+D,4BA/fJ,SAAqC9D,GACjC,OAAOE,GAAwBH,GAAoBC,KAAkB,EACxE,EA8fG+D,oBApcsB,SAASzB,EAAOC,GACtC,IAAIyB,EAAU,EACVC,EAAc,CACd1E,KAAM+C,EAAMhB,gBAAkBiB,EAAMjB,cACpC1rD,MAAO0sD,EAAMxB,aAAeyB,EAAMzB,WAClCzB,IAAKiD,EAAMZ,YAAca,EAAMb,UAC/BtC,KAAMkD,EAAMgB,aAAef,EAAMe,WACjCnE,OAAQmD,EAAM4B,eAAiB3B,EAAM2B,aACrCxtC,OAAQ4rC,EAAM6B,eAAiB5B,EAAM4B,aACrCjF,YAAaoD,EAAM8B,oBAAsB7B,EAAM6B,mBAYnD,OAVA71B,EAAAA,EAAAA,IAAK01B,GAAc,SAASjgF,EAAKpE,GACzBA,GACAokF,GAEP,IACG,IAAMA,GAAW,IAAMR,GAAuBlB,EAAOC,KACrD0B,EAAY7E,MAAO,EACnB4E,KAEJC,EAAY12E,MAAQy2E,EACbC,CACV,EA+aG5D,6BAA8BA,GAC9BW,SAAUA,GACVqD,YA5cc,SAAS1uD,GACvB,IAAIzwB,EAAS87E,GAASrrD,GAEtB,OADAzwB,EAAOy7E,QAAQz7E,EAAOw8E,UAAY,GAC3B,IAAIl9E,KAAKU,EAAOkyD,UAAY,EACtC,EAycGktB,wBAhF0B,SAAS3uD,EAAMssB,GACzC,IAAIsiC,EAAY7iF,KAAK8iF,oBAAoBviC,GACrC/8C,EAAS,IAAIV,KAAKmxB,GAItB,OAHIA,EAAK2tD,aAAeiB,EAAU3C,OAASjsD,EAAKuuD,aAAeK,EAAUzC,SAAWnsD,EAAK2tD,WAAaiB,EAAU3C,QAC5G18E,EAAO07E,SAAS2D,EAAU3C,MAAO2C,EAAUzC,QAAS,EAAG,GAEpD58E,CACV,EA0EGs/E,oBAzFsB,SAAS9uD,GAG/B,MAAO,CACHksD,MAHQ32E,KAAKo/D,MAAM30C,GAInBosD,QAHUpsD,EAAS,EAAI,GAK9B,EAmFGurD,gBAAiBA,GACjBe,YAAaA,GACbyC,sBAhZwB,SAASlgE,EAAK4U,EAAKklD,GAC3C,IACIqG,EADAC,EAAY,GAIhB,IAFAA,EAAU7iF,MAAKs7D,EAAAA,EAAAA,IAAO74C,GAAO,IAAI/f,KAAK+f,EAAI6yC,WAAa7yC,GACvDmgE,EAAMngE,EACCmgE,EAAMvrD,GACTurD,EAAM1C,GAAY0C,EAAKrG,GACvBsG,EAAU7iF,KAAK4iF,GAEnB,OAAOC,CACV,EAuYGxD,wBAAyBA,GACzByD,oBAzOJ,SAA6BtC,EAAOC,GAChC,OAAOD,GAASC,GAASD,EAAMgB,aAAef,EAAMe,YAAchB,EAAM4B,eAAiB3B,EAAM2B,YAClG,EAwOGW,SAtPJ,SAAkBvC,EAAOC,GACrB,OAAOF,GAAiBC,EAAOC,IAAUD,EAAMZ,YAAca,EAAMb,SACtE,EAqPGW,iBAAkBA,GAClByC,UAAWzC,GACXG,SAAUA,GACVuC,WA3Oa,SAASzC,EAAOC,GAC7B,IAAKxyB,EAAAA,EAAAA,IAAUuyB,KAAWvyB,EAAAA,EAAAA,IAAUwyB,GAApC,CAGA,IAAIyC,EAAmB1C,EAAMhB,cAAgBgB,EAAMhB,cAAgB,GAC/D2D,EAAmB1C,EAAMjB,cAAgBiB,EAAMjB,cAAgB,GACnE,OAAOgB,GAASC,GAASyC,IAAqBC,CAH7C,CAIJ,EAqOGC,YApOc,SAAS5C,EAAOC,GAC9B,IAAKxyB,EAAAA,EAAAA,IAAUuyB,KAAWvyB,EAAAA,EAAAA,IAAUwyB,GAApC,CAGA,IAAI4C,EAAoB7C,EAAMhB,cAAgBgB,EAAMhB,cAAgB,IAChE8D,EAAoB7C,EAAMjB,cAAgBiB,EAAMjB,cAAgB,IACpE,OAAOgB,GAASC,GAAS4C,IAAsBC,CAH9C,CAIJ,EA8NGC,qBArTuB,SAASC,GAChC,IAAIC,EAAa,EAUjB,MATI,SAAWD,IACXC,EAAa,IAEb,WAAaD,IACbC,EAAa,KAEb,YAAcD,IACdC,EAAa,MAEVA,CACV,EA0SGC,6BAzS+B,SAASF,GACxC,IAAIC,EAAa,EAOjB,MANI,WAAaD,IACbC,EAAa,IAEb,YAAcD,IACdC,EAAa,KAEVA,CACV,EAiSG7C,qBAAsBA,GACtBD,wBAAyBA,GACzBgD,mBAzNqB,WACrB,MAAO,YACV,EAwNGC,qBAnZuB,SAASC,EAAUhwD,GAC1C,MAAI,UAAYgwD,EACLxD,GAAuBxsD,EAAK2rD,cAAe3rD,EAAKmrD,WAAY,GAEnE,SAAW6E,EACJxD,GAAuBxsD,EAAK2rD,cAAe,EAAG3rD,EAAK+rD,WAE1D,WAAaiE,EACNxD,GAAuBO,GAAqB/sD,GAAOA,EAAKmrD,WAAYnrD,EAAK+rD,WAEhF,YAAciE,EACPxD,GAAuBM,GAAwB9sD,GAAOA,EAAKmrD,WAAYnrD,EAAK+rD,gBADvF,CAGH,EAuYGkE,oBAtYsB,SAASD,EAAUhwD,GACzC,MAAI,UAAYgwD,EACLxD,GAAuBxsD,EAAK2rD,cAAe3rD,EAAKmrD,WAAYoB,GAAgBvsD,IAEnF,SAAWgwD,EACJxD,GAAuBxsD,EAAK2rD,cAAe,GAAI3rD,EAAK+rD,WAE3D,WAAaiE,EACNxD,GAAuBO,GAAqB/sD,GAAQ,EAAGA,EAAKmrD,WAAYnrD,EAAK+rD,WAEpF,YAAciE,EACPxD,GAAuBM,GAAwB9sD,GAAQ,GAAIA,EAAKmrD,WAAYnrD,EAAK+rD,gBAD5F,CAGH,EA0XGmE,YAtUc,SAASP,GACvB,OAAQA,GACJ,IAAK,UACD,MAAO,SACX,IAAK,SACD,MAAO,OACX,IAAK,OACD,MAAO,QAElB,EA8TGQ,UAjVY,SAASR,GACrB,OAAQA,GACJ,IAAK,QACD,MAAO,OACX,IAAK,OACD,MAAO,SACX,IAAK,SACD,MAAO,UAElB,EAyUGpD,gBAAiBA,GACjB6D,iBAtNmB,SAASpwD,GAC5B,IAAKo6B,EAAAA,EAAAA,IAAUp6B,GAGf,OAAOwsD,GAAuBxsD,EAAK2rD,cAAe3rD,EAAKmrD,WAAa,EAAG,EAC1E,EAkNGkF,kBA7NoB,SAASrwD,GAC7B,IAAKo6B,EAAAA,EAAAA,IAAUp6B,GAGf,OAAOwsD,GAAuBxsD,EAAK2rD,cAAe3rD,EAAKmrD,WAAY,EACtE,EAyNGD,iBAAkBA,GAClBoF,cAlLJ,SAASA,EAActwD,EAAMiqB,EAAgB91C,GACzC,IAAIo8E,EAAqBjD,GAAiBF,GAAmBptD,EAAK2rD,eAAgB1hC,GAC9EumC,EAAoBlD,GAAiBD,GAAkBrtD,EAAK2rD,eAAgB1hC,GAC5EwmC,EAhdW,EAgdsBF,EAAqB,EACtDG,EAAap7E,KAAKq7E,MAzB1B,SAAsB3wD,GAClB,IAAI8xC,EAAKob,GAAWltD,GAAQktD,GAAWE,GAAmBptD,EAAK2rD,gBAC/D,OAAO,EAAIr2E,KAAKo/D,MAAM5C,EAAK+X,GAAe,OAC7C,CAsB+B+G,CAAa5wD,GAAQywD,GAAmB,GACpE,OAAQt8E,GACJ,IAAK,WAID,OAvdO,IAodHs8E,GACAC,IAEA,IAAMA,EAECJ,EADsBjD,GAAkBrtD,EAAK2rD,cAAgB,GACvB1hC,EAAgB91C,GAE1Du8E,EACX,IAAK,WAQD,OAPID,EAAkB,GAClBC,KAGAA,EA9de,MADN,IA8dEH,GA9dF,IA8d+CC,IACF,KAAOE,KAC7DA,EAAa,GAEVA,EACX,IAAK,gBAQD,OAPID,EAAkB,GAClBC,IAGAA,EAvee,MAFJ,IAweEH,GAxeF,IAweiDC,KAE5DE,EAAa,GAEb,IAAMA,EAECJ,EADuBjD,GAAkBrtD,EAAK2rD,cAAgB,GACvB1hC,EAAgB91C,GAE3Du8E,EAElB,EA6IGG,oBA5IsB,SAAS7wD,EAAM8wD,GACrC,IAAIC,EAAmBhD,GAAUiD,iBAAiBhxD,EAAM8wD,EAAa,OACjEG,EAAa,IAAIpiF,KAAKmxB,GAI1B,OAHI+wD,GAAoB,IACpBE,EAAa,IAAIpiF,KAAKoiF,EAAWjG,QAAQiG,EAAWlF,UAAY,KAE7DkF,CACV,EAsIGzG,WAAYA,GACZC,qBAAsBA,GACtByG,YAvIc,SAASlxD,EAAMpR,EAAK4U,EAAKogC,GAMvC,MALI,SAAWA,IACXh1C,EAAMA,GAAOm/D,GAAUrD,6BAA6B97D,EAAK,OACzD4U,EAAMA,GAAOuqD,GAAUrD,6BAA6BlnD,EAAK,OACzDxD,EAAOA,GAAQ+tD,GAAUrD,6BAA6B1qD,EAAM,QAEzDutD,GAAcvtD,EAAMpR,EAAK4U,KAASxD,CAC5C,EAiIGmxD,iBAhImB,SAAShoF,GAC5B,IACcioF,EAIVjoF,EAJAioF,SACUC,EAGVloF,EAHAkoF,SACWC,EAEXnoF,EAFAmoF,UACWC,EACXpoF,EADAooF,UAEJ,OAAOH,GAAYE,GAAaA,GAAaD,GAAYD,EAAWE,GAAaF,EAAWG,GAAaH,EAAWG,GAAaF,EAAWE,CAC/I,EAyHGC,YA3Ec,SAASxxD,GACvB,IAAIzwB,EAAS,IAAIV,KAAKmxB,EAAKyhC,WAG3B,OAFAlyD,EAAO07E,SAAS17E,EAAOo+E,WAAa,GACpCp+E,EAAOkiF,WAAW,GACXliF,CACV,EAuEGg+E,cAAeA,GACfmE,uBAvYyB,SAAS1B,EAAUhwD,GAC5C,IAAIixD,EAAazE,GAAuBxsD,EAAK2rD,cAAe3rD,EAAKmrD,WAAY,GAC7E,MAAI,UAAY6E,EACLiB,GAEXA,EAAWlG,SAAS,GAChB,SAAWiF,IAGX,WAAaA,GACbiB,EAAWvF,YAAYqB,GAAqB/sD,IAE5C,YAAcgwD,GACdiB,EAAWvF,YAAYoB,GAAwB9sD,KANxCixD,EASd,EAwXGU,uBAvXyB,SAAS3B,EAAUhwD,GAC5C,IAAIixD,EAAa,IAAIpiF,KAAKmxB,GAE1B,OADAixD,EAAWjG,QAAQuB,GAAgBvsD,IAC/B,UAAYgwD,EACLiB,GAEXA,EAAWlG,SAAS,IACpBkG,EAAWjG,QAAQuB,GAAgB0E,IAC/B,SAAWjB,IAGX,WAAaA,GACbiB,EAAWvF,YAAYqB,GAAqB/sD,GAAQ,GAEpD,YAAcgwD,GACdiB,EAAWvF,YAAYoB,GAAwB9sD,GAAQ,KANhDixD,EASd,EAsWG7F,eAAgBA,GAChByC,uBAAwBA,GACxB+D,SAvEW,SAAS5xD,GACpB,OAAO,IAAInxB,KAAKmxB,EACnB,EAsEGgxD,iBAvoBmB,SAASa,EAAWC,EAASC,GAChD,IAAI/E,EAAQ8E,EAAQrwB,UAAYowB,EAAUpwB,UACtCuwB,EAAmBnI,GAAekI,IAAiB,EACvD,OAAOz8E,KAAKo/D,MAAMsY,EAAQgF,EAC7B,EAooBGC,mBAtEqB,SAASJ,EAAWC,EAAShqD,GAGlD,IAFA,IAAIv4B,EAAS,GACTuhF,EAAc,IAAIjiF,KAAKgjF,EAAUpwB,WAC9BqvB,EAAcgB,GACjBviF,EAAOpD,KAAK,IAAI0C,KAAKiiF,EAAYrvB,YACjCqvB,EAAc/kF,KAAKsgF,YAAYyE,EAAahpD,GAEhD,OAAOv4B,CACV,EA+DGi9E,uBAAwBA,GACxB0F,uBA1DyB,WAEzB,MADc,qBAAuBC,KACpBA,KAAKC,iBAAiBC,kBAAkB5lC,SAAW,IACvE,EAyDDshC,SAAqB,SAAShlC,EAAM4jC,EAAOC,GACvC,OAAOmB,GAAU9c,EAAS,QAAUloB,IAAO4jC,EAAOC,EACrD,GACD,MCvqBA,SAAS0F,GAAQ5/E,EAAMhG,GACnB,KAAOgG,EAAKhG,OAASA,GACjBgG,EAAO,IAAMA,EAEjB,OAAOA,CACV,CACD,IAAI6/E,GAAe,CACf,EAAG,cACH,EAAG,OACH,EAAG,UAEHC,GAAkB,CAClBz4E,EAAG,SAASimB,EAAMpoB,EAAO66E,GACrB,IAAI7I,EAAO5pD,EAAKyyD,EAAS,iBAAmB,iBAI5C,OAHI,IAAM76E,IACNgyE,GAAQ,KAEL0I,GAAQ1I,EAAKvgF,WAAYuO,EACnC,EACD86E,EAAG,SAAS1yD,EAAMpoB,EAAO66E,EAAQE,GAC7B,IAAI1yD,EAAQD,EAAKyyD,EAAS,cAAgB,cACtCG,EAAaL,GAAa36E,GAC9B,OAAIg7E,EACOD,EAAUE,cAAcD,EAAY,UAAU3yD,GAElDqyD,IAASryD,EAAQ,GAAG52B,WAAYiM,KAAKsZ,IAAIhX,EAAO,GAC1D,EACDk7E,EAAG,SAAS9yD,EAAMpoB,EAAO66E,EAAQE,GAC7B,IAAI1yD,EAAQD,EAAKyyD,EAAS,cAAgB,cACtCG,EAAaL,GAAa36E,GAC9B,OAAIg7E,EACOD,EAAUE,cAAcD,EAAY,cAAc3yD,GAEtDqyD,IAASryD,EAAQ,GAAG52B,WAAYiM,KAAKsZ,IAAIhX,EAAO,GAC1D,EACDm7E,EAAG,SAAS/yD,EAAMpoB,EAAO66E,EAAQE,GAC7B,IAAI1yD,EAAQD,EAAKyyD,EAAS,cAAgB,cACtC9I,EAAUr0E,KAAKo/D,MAAMz0C,EAAQ,GAC7B2yD,EAAaL,GAAa36E,GAC9B,OAAIg7E,EACOD,EAAUK,gBAAgBJ,GAAYjJ,GAE1C2I,IAAS3I,EAAU,GAAGtgF,WAAYiM,KAAKsZ,IAAIhX,EAAO,GAC5D,EACDq7E,EAAG,SAASjzD,EAAMpoB,EAAO66E,EAAQE,GAC7B,IAAIjJ,EAAM1pD,EAAKyyD,EAAS,YAAc,YAClCG,EAAaL,GAAa36E,EAAQ,EAAI,EAAIA,GAC9C,OAAO+6E,EAAUO,YAAYN,GAAYlJ,EAC5C,EACD59D,EAAG,SAASkU,EAAMpoB,EAAO66E,EAAQE,GAC7B,IACIQ,EADQnzD,EAAKyyD,EAAS,cAAgB,cACrB,GAAK,EAAI,EAC1BG,EAAaL,GAAa36E,GAC9B,OAAO+6E,EAAUS,eAAeR,GAAYO,EAC/C,EACD5jE,EAAG,SAASyQ,EAAMpoB,EAAO66E,GACrB,OAAOH,GAAQtyD,EAAKyyD,EAAS,aAAe,aAAappF,WAAYiM,KAAKsZ,IAAIhX,EAAO,GACxF,EACDy7E,EAAG,SAASrzD,EAAMpoB,EAAO66E,GACrB,OAAOH,GAAQtyD,EAAKyyD,EAAS,cAAgB,cAAcppF,WAAYiM,KAAKsZ,IAAIhX,EAAO,GAC1F,EACD5P,EAAG,SAASg4B,EAAMpoB,EAAO66E,GAErB,OAAOH,IADKtyD,EAAKyyD,EAAS,cAAgB,cAClB,IAAM,IAAIppF,WAAYiM,KAAKsZ,IAAIhX,EAAO,GACjE,EACD3O,EAAG,SAAS+2B,EAAMpoB,EAAO66E,GACrB,OAAOH,GAAQtyD,EAAKyyD,EAAS,gBAAkB,gBAAgBppF,WAAYiM,KAAKsZ,IAAIhX,EAAO,GAC9F,EACD0sB,EAAG,SAAStE,EAAMpoB,EAAO66E,GACrB,OAAOH,GAAQtyD,EAAKyyD,EAAS,gBAAkB,gBAAgBppF,WAAYiM,KAAKsZ,IAAIhX,EAAO,GAC9F,EACD07E,EAAG,SAAStzD,EAAMpoB,EAAO66E,GACrB,OAAOH,GAAQtyD,EAAKyyD,EAAS,qBAAuB,qBAAqBppF,WAAY,GAAG0H,OAAO,EAAG6G,EACrG,EACDkC,EAAG,SAASkmB,EAAMpoB,EAAO66E,GACrB,IAAIc,EAAiBd,EAAS,EAAIzyD,EAAK8tD,oBACnC0F,EAAWD,EAAiB,EAAI,IAAM,IACtCE,EAAoBn+E,KAAKD,IAAIk+E,GAE7BpH,EAAUsH,EAAoB,GAC9BC,EAAYpB,GAFJh9E,KAAKo/D,MAAM+e,EAAoB,IAEbpqF,WAAY,GACtCsqF,EAAcrB,GAAQnG,EAAQ9iF,WAAY,GAC9C,OAAOmqF,EAAWE,GAAa97E,GAAS,EAAI,IAAM,KAAOA,EAAQ,GAAKu0E,EAAUwH,EAAc,GACjG,EACDC,EAAG,SAAS5zD,EAAMpoB,EAAO66E,GACrB,OAAIA,IAAWzyD,EAAK8tD,oBACT,IAEJ0E,GAAgB14E,EAAEkmB,EAAMpoB,EAAO66E,EACzC,EACDoB,EAAG,SAAS7zD,EAAMpoB,EAAO66E,GACrB,OAAOD,GAAgBoB,EAAE5zD,EAAMpoB,GAAS,EAAI,EAAI,EAAG66E,EACtD,GAEMqB,GAAe,SAASlwB,EAAQ+uB,GACvC,OAAO,SAAS3yD,GACZ,IAAI+zD,EACAC,EACAn3B,EAGAo3B,EAFAC,EAAY,EACZC,GAAa,EAEb5kF,EAAS,GACb,IAAKywB,EACD,OAAO,KAEX,IAAK4jC,EACD,OAAO5jC,EAEX,IAAIyyD,EAAS,MAAQ7uB,EAAOA,EAAOl3D,OAAS,IAAM,QAAUk3D,EAAO9yD,OAAO,GAC1E,IAAKijF,EAAY,EAAGA,EAAYnwB,EAAOl3D,OAAQqnF,IAC3Cl3B,EAAO+G,EAAOmwB,GACdC,EAAYxB,GAAgB31B,GAE5Bq3B,KADAD,EAA0Bp3B,IAAS+G,EAAOmwB,EAAY,MAG9CC,IAAcG,IACd5kF,GAAUykF,EAAUh0D,EAAMk0D,EAAWzB,EAAQE,IAEjDuB,EAAY,GAEZ,MAAQr3B,GAASo3B,GAEVE,GAAeH,IACtBzkF,GAAUstD,GAFVs3B,GAAcA,EAId,MAAQt3B,GAAQo3B,GAChBF,IAGR,OAAOxkF,CACV,CACJ,ECjIG6kF,GAAS,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACxHC,GAAO,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAC1EC,GAAU,CAAC,KAAM,MACjBC,GAAW,CAAC,KAAM,KAAM,KAAM,MAC9BC,GAAc,SAACC,EAAU7wB,GACzB,IAAI8wB,EAAiB,CACjBC,YAAa,EACb58D,MAAO,EACP68D,OAAQ,GAEZ,OAAO9kF,EAAAA,EAAAA,IAAI2kF,GAAU,SAAAv9D,GAAO,OAAIA,EAAQnmB,OAAO,EAAG2jF,EAAe9wB,GAArC,GAC/B,EACD,IACIivB,cAAe,SAASjvB,GACpB,OAAO4wB,GAAYJ,GAAQxwB,EAC9B,EACDsvB,YAAa,SAAStvB,GAClB,OAAO4wB,GAAYH,GAAMzwB,EAC5B,EACDovB,gBAAiB,SAASpvB,GACtB,OAAO2wB,EACV,EACDnB,eAAgB,SAASxvB,GACrB,OAAO0wB,EACV,GCjBDO,GAA8B,SAC9BC,GAA4B,aAE5BC,GAAkB,yHAClBC,GAAuB,+BACvBC,GAAwB,CAAC,GAAI,OAAQ,GAAI,KAAM,GAAI,KAAM,MAAO,GAAI,KAAM,GAAI,KAAM,QACpFC,GAA6B,8BAE7BC,GAAa,SAASziF,EAAM0iF,GAC5B,IAAI7lF,EAIJ,OAHIktD,EAAAA,EAAAA,IAAS/pD,KAAU0iF,IACnB7lF,EAyBR,SAA4BmD,GACxB,IAAIguC,EAAQhuC,EAAKsI,MAAM+5E,IACvB,IAAKr0C,EAED,OADAA,EAAQhuC,EAAKsI,MAAMg6E,KAER,IAAInmF,KAAK,EAAG,EAAG,EAAGwmF,GAAY30C,EAAM,IAAK20C,GAAY30C,EAAM,IAAK20C,GAAY30C,EAAM,UAE7F,EAEJ,IAAIkpC,EAAOyL,GAAY30C,EAAM,IACzBzgB,IAAUygB,EAAM,GAChBgpC,EAAMhpC,EAAM,GACZ40C,EAAe,EACfC,EAAiB,EACjBC,EAAc,SAAAjmE,GAEd,OADAq6D,EAAO,KAAOr6D,EAAEm8D,YAAY9B,GACrBr6D,CACV,EACD+lE,EAAeD,GAAY30C,EAAM,KACjC60C,EAAiBF,GAAY30C,EAAM,KAC/B,MAAQA,EAAM,MACd40C,GAAgBA,EAChBC,GAAkBA,GAEtB,IAAI9L,EAAO4L,GAAY30C,EAAM,IAAM40C,EAC/B9L,EAAS6L,GAAY30C,EAAM,IAAM60C,EACjCx0C,EAASs0C,GAAY30C,EAAM,KAC3B6oC,GAAuBkM,EAGzB/0C,EAAM,IADG20C,GADPI,EAAOA,GAAQ,IACYngF,KAAKkZ,IAAI,GA1DnB,EA0D4CinE,EAAK/oF,SAFpD,IAAS+oF,EAI3B,GAAI/0C,EAAM,IACN,OAAO80C,EAAY,IAAI3mF,KAAKA,KAAKs+E,IAAIvD,EAAM3pD,EAAOypD,EAAKD,EAAMD,EAAQzoC,EAAQwoC,KAEjF,OAAOiM,EAAY,IAAI3mF,KAAK+6E,EAAM3pD,EAAOypD,EAAKD,EAAMD,EAAQzoC,EAAQwoC,GACvE,CA5DgBmM,CAAmBhjF,IAEzBnD,GAOX,SAAmBmD,GACf,IAAIijF,EAA+BC,GAA2BljF,KAAUoiF,GACpEe,IAAepuB,EAAAA,EAAAA,IAAO/0D,IAAS7D,KAAK6J,MAAMhG,GAC9C,IAAKmjF,GAAeF,EAA8B,CAC9C,IAAIj1C,EAAQhuC,EAAKsI,MAAMk6E,IACvB,GAAIx0C,EAAO,CACP,IAAI+sC,EAAU,IAAI5+E,KAAKwmF,GAAY30C,EAAM,IAAK20C,GAAY30C,EAAM,IAAK20C,GAAY30C,EAAM,KAIvF,OAHA+sC,EAAQ/B,YAAY2J,GAAY30C,EAAM,KACtC+sC,EAAQ1C,SAASsK,GAAY30C,EAAM,IAAM,GACzC+sC,EAAQzC,QAAQqK,GAAY30C,EAAM,KAC3B+sC,CACV,CACJ,CACD,OAAOqI,EAAAA,EAAAA,IAASD,GAAe,IAAIhnF,KAAKgnF,GAAenjF,CAC1D,CArBoBqjF,CAAUrjF,EAC9B,EAED,SAAS2iF,GAAYI,GACjB,OAAQA,GAAQ,CACnB,CAsDD,IA+CIG,GAA6B,SAAS3rF,GACtC,MAAI,kBAAoBA,EACb4qF,IACAp4B,EAAAA,EAAAA,IAASxyD,KAEZ6B,EAAAA,GAAAA,KAASskD,sBACTwT,EArDW,SAASlxD,EAAM+/E,GAClC,IAAI/xC,EAAQhuC,EAAKsI,MAAM+5E,IACnBxlF,EAAS,GACb,IAAKmxC,EAED,OADAA,EAAQhuC,EAAKsI,MAAMg6E,KAERt0C,EAAM,GAAK,WAAa,aAEnC,EAEJ,IAAK,IAAIhsC,EAAI,EAAGA,EAAIugF,GAAsBvoF,OAAQgI,IAC1CgsC,EAAMhsC,KACNnF,GAAU0lF,GAAsBvgF,IAAMgsC,EAAMhsC,IAepD,MAZI,MAAQgsC,EAAM,MACdnxC,GAAU,OAEVmxC,EAAM,MACFA,EAAM,IACNnxC,GAAU,MACHmxC,EAAM,IACbnxC,GAAU,KAEVA,GAAU,KAGXA,CACV,CAyBoBymF,CAAiB/rF,IAE1B25D,IAEO35D,EAAMkD,QAAQ,MAAQ,EA/HL,sBAkIjB2nF,KAEJ7qF,EACA,UADJ,EAXH,IAAI25D,CAcX,EACD,IACIuxB,WAAYA,GACZc,gBAvCkB,SAAShsF,GAC3B,MAAI,kBAAoBA,EACb,IAAI4E,KAAK5E,GAEbkrF,GAAWlrF,IAAQ6B,EAAAA,GAAAA,KAASskD,oBACtC,EAmCG8lC,cAlCgB,SAASjsF,EAAOksF,GAChC,OAAKA,GAGA1uB,EAAAA,EAAAA,IAAOx9D,GAGRksF,IAAwBtB,GACjB5qF,GAASA,EAAMquD,QAAUruD,EAAMquD,UAAY,KAE/C89B,GAAiBD,EAAqBE,GAAtCD,CAAwDnsF,GALpD,KAHAA,CASd,EAwBG2rF,2BAA4BA,eCpJ5BU,GAAsB,SAAAC,GAEtB,OADiB,OAASA,QAAgB,IAAWA,EAAeA,GAAezqF,EAAAA,GAAAA,KAASigD,YACxE,QAAU,MACjC,EACGyqC,GAAkB,SAAAj+E,GAClB,OAAIm3C,EAAAA,EAAAA,IAASn3C,GACF,CACHmkB,MAAOnkB,EAAQk+E,WACfl+D,OAAQhgB,EAAQm+E,aAGjBn+E,EAAQ+tD,uBAClB,aCCG4Y,GAAQlB,GAAAA,IACD2Y,GAAmB,8BAInBC,GAAuB,SAAS7tE,GAIvC,OAHKnY,MAAMC,QAAQkY,KACfA,EAAO,CAACA,KAELjZ,EAAAA,EAAAA,IAAIiZ,GAAO,SAASrU,GACvB,IAAInF,EAAS,CACT0M,UAAU2+C,EAAAA,EAAAA,IAAWlmD,IAAM,kBAAoBA,EAAIA,EAAIA,EAAEisD,QAAUjsD,EAAE01D,OAAS11D,EAAEuH,SAChF46E,QAASniF,EAAEmiF,MAAQ,MAAQrhF,OAAOd,EAAEm1B,KAAK7hB,OAAO,GAAGzH,gBAKvD,OAHI7L,EAAE+mC,UACFlsC,EAAOksC,QAAU/mC,EAAE+mC,SAEhBlsC,CACV,GACJ,EACUunF,GAAsB,WAC7B,IAKIC,EALAC,EAAqB,CACrBlkD,QAAS,6BACT1nC,MAAO,4BACP6rF,YAAa,8BASjB,OANA/X,IAAO,WACH,IAAIl5E,GAAS8mD,EAAAA,EAAAA,MACb8b,EAAAA,EAAAA,OAAkB5iE,EAAQ,gBAAiB,WACvC+wF,GAAY,CACf,GACJ,IACM,SAASG,EAAKC,GACjB,OAAIJ,EACOJ,GAEPO,EAAIvkF,OAAS,IACN,SAASwkF,GACZ,IAAI5nF,EAASynF,EAAmBG,GAChC,OAAK5nF,GACM4nF,CAGd,CANM,CAMLA,GAECD,EAAIE,UACd,CACJ,CA5BgC,GA6BtBC,GAAc,CACrBz/E,MAAO,CACH0/E,KAAM,EACNxvD,KAAM,SAASlwB,GACX,OAAO,EAAIA,CACd,GAEL2/E,IAAK,CACDD,KAAM,EACNxvD,KAAM,SAASyvD,EAAK5mF,GAChB,OAAO4mF,EAAM5mF,CAChB,GAELie,IAAK,CACDkZ,KAAM,SAASlZ,EAAKje,GAChB,OAAOA,EAAOie,EAAMje,EAAOie,CAC9B,GAEL4U,IAAK,CACDsE,KAAM,SAAStE,EAAK7yB,GAChB,OAAOA,EAAO6yB,EAAM7yB,EAAO6yB,CAC9B,GAELg0D,IAAK,CACDF,KAAM,CAAC,EAAG,GACVxvD,KAAM,SAASm1B,EAAMhzD,GACjB,MAAO,CAACgzD,EAAK,GAAKhzD,EAAOgzD,EAAK,GAAK,EACtC,EACDw6B,SAAU,SAASx6B,GACf,OAAOA,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKy6B,GACxC,IAGEC,GAA2B,WAClC,IACIC,EADAC,EAAY,EAEhB,MAAO,CACHC,OAAQ,WACA,IAAMD,IACND,EAAe,IAAIxuE,GAAAA,IAEvByuE,GACH,EACDE,QAAS,aACLF,EACgB,GACZD,EAAajtF,SAEpB,EACD0e,QAAS,WAEL,OADe,IAAMwuE,GAAa,IAAIzuE,GAAAA,IAAUze,UAAYitF,GAC5CvuE,SACnB,EACDkpB,MAAO,WACHslD,EAAY,EACRD,GACAA,EAAajtF,SAEpB,EAER,CA3BqC,GAkC/B,IAAIqtF,GAAY,SAASC,EAAS12C,EAAME,GAC3C,GAAI7wC,MAAMC,QAAQonF,GAAU,CAKxB,IAJA,IAGI9yF,EAHA+yF,GAAQpoF,EAAAA,EAAAA,IAAIyxC,GAAO,SAASpxB,EAAGpgB,GAC/B,OAAOA,CACV,IAEQ2E,EAAI,EAAGA,EAAIwjF,EAAMxrF,OAAQgI,IAE9B,GADAvP,EAAO+yF,EAAMxjF,KACRyqD,EAAAA,GAAAA,cAAa5d,EAAKp8C,GAAOs8C,EAAKt8C,GAAO,CAClCk5D,QAAQ,IAEZ,OAAO,EAGf,OAAO,CACV,CACD,OAAOc,EAAAA,GAAAA,cAAa5d,EAAME,EAAM,CAC5B4c,QAAQ,GAEf,EAsCM,IAmBI85B,GAAiB,WACxB,IAAI5oE,EAAI,IAAInG,GAAAA,GACZ,OAAOmG,EAAE5kB,QAAQmZ,MAAMyL,EAAG1L,WAAWwF,SACxC,EACU+uE,GAAkB,WACzB,IAAI7oE,EAAI,IAAInG,GAAAA,GACZ,OAAOmG,EAAEhkB,OAAOuY,MAAMyL,EAAG1L,WAAWwF,SACvC,EAcM,SAASgvE,GAAgBv7E,EAAMg2B,GAClC,IAAIz2B,EAAQ,GACRi8E,EAdR,SAAkBx7E,EAAMg2B,GACpB,IAAIylD,EACJ,OAAO,WAAW,WAOd,OANKA,IACDA,EAAYj3D,YAAW,WACnBi3D,OAAY,EACZz7E,EAAKtS,KAAK,EACb,IAAEowD,EAAAA,EAAAA,IAAW9nB,GAAWA,IAAYA,IAElCylD,CACV,CACJ,CAGmBC,EAAU,WACtB17E,EAAKtS,KAAKuB,KAAMsQ,GAChBA,EAAQ,EACX,GAAGy2B,GACJ,OAAO,SAAS6Q,GACgB,MAAxB/yC,MAAMC,QAAQ8yC,KACd,EAAAtnC,GAAMlQ,KAAN,iBAAcw3C,IAElB,OAAO20C,EAAU9tF,KAAKuB,KAAMsQ,EAC/B,CACJ,2BChPUgP,IAAS0pC,EAAAA,GAAAA,GAAW0jC,GAAAA,EAAAA,eAA2B,CACtDC,MAAO,yBACPC,MAAO,kDACPC,MAAO,6CACPC,MAAO,wCACPC,MAAO,2DACPC,MAAO,qDACPC,MAAO,4CACPC,MAAO,yCACPC,MAAO,kDACPC,MAAO,4BACPC,MAAO,gDACPC,MAAO,mEACPC,MAAO,oDACPC,MAAO,oEACPC,MAAO,qDACPC,MAAO,4CACPC,MAAO,6EACPC,MAAO,0BACPC,MAAO,qFACPC,MAAO,sFACPC,MAAO,sCACPC,MAAO,4DACPC,MAAO,4DACPC,MAAO,yCACPC,MAAO,0EACPC,MAAO,2DACPC,MAAO,iGACPC,MAAO,2EAEAC,GAAe,KACfpvF,GAAc,SAASE,GAC9B,IAAImvF,EACJ,QAAUA,EAAgBD,UAAiB,IAAWC,GAAyBA,EAAcnvF,EAChG,aCGD,SAASovF,GAAUC,EAASxoC,EAAO5jD,EAAKqsF,GACpC,IACInrF,EACJ,GAAImrF,GACA,IAAK,IAAIhmF,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAG9B,GADAnF,EAASirF,GAAUC,EADNxoC,EAAMv9C,GAAGu9C,OAASA,EAAMv9C,GAAGimF,gBAAkB,IAChB,GAAItsF,EAAKqsF,EAAa,GAE5D,OAAOnrF,OAGZ,GAAIqrF,GAAWH,EAASxoC,EAAO5jD,IAAQ,EAC1C,OAAO4jD,CAEd,CAED,SAAS4oC,GAASJ,EAASxoC,EAAO5jD,EAAKqsF,GACnC,OAAIA,EACOF,GAAUC,EAASxoC,EAAO5jD,EAAKqsF,IAAe,GAElDzoC,CACV,CA2BD,SAAS6oC,GAAqB1kF,EAAO/H,EAAKhI,GAClC+P,EAAM2kF,gBACN3kF,EAAM2kF,cAAclpF,KAAKC,UAAUzD,IAAQhI,EAC3C+P,EAAM4kF,qBAAuB30F,EAAO,GAAK,EAEhD,CAED,SAAS40F,GAA8BnmD,EAAU6O,EAASu3C,GACtDA,EAAkBA,GAAmB,IAAI5gF,QACzC,IAAI/K,EAASulC,EAAW/qC,OAAOwS,OAAOxS,OAAOolD,eAAera,IAAa,CAAC,EACtEA,GACAomD,EAAgBh2F,IAAI4vC,EAAUvlC,GAElC,IAAI4rF,GAA2Br2E,EAAAA,EAAAA,GAAS,CAAC,EAAGgwB,GAE5C,IAAK,IAAI3vC,KADTo8D,EAAAA,GAAAA,IAAoBhyD,EAAQ4rF,GAA0B,GAAM,GAC3CA,EAA0B,CACvC,IAAIlxF,EAAQkxF,EAAyBh2F,GACjCi2F,EAAS,OAASz3C,QAAW,IAAWA,OAAU,EAASA,EAAQx+C,IACnEinB,EAAAA,EAAAA,IAASniB,MAAWkpC,EAAAA,EAAAA,IAAclpC,KAAUmiB,EAAAA,EAAAA,IAASgvE,KAAYF,EAAgBx1F,IAAIuE,KACrFsF,EAAOpK,GAAQ81F,GAA8BhxF,EAAOmxF,EAAQF,GAEnE,CACD,IAAK,IAAIG,KAAS9rF,EAAQ,CACtB,IAAI3G,EAAO2G,EAAO8rF,IACdjvE,EAAAA,EAAAA,IAASxjB,IAASsyF,EAAgBx1F,IAAIkD,KACtC2G,EAAO8rF,GAASH,EAAgBv1F,IAAIiD,GAE3C,CACD,OAAO2G,CACV,CAED,SAAS+rF,GAAwB53E,EAAQigC,GACrC,IAAIp0C,EAAS0rF,GAA8Bv3E,EAAQigC,GACnD,OAAO4d,EAAAA,GAAAA,IAAoBhyD,EAAQo0C,GAAS,GAAM,EACrD,CAED,SAAS43C,GAAWx4E,GAChB,IACa03E,EAST13E,EATA03E,QACMp0F,EAQN0c,EARA1c,KACSs9C,EAOT5gC,EAPA4gC,QACY+2C,EAMZ33E,EANA23E,WACgBc,EAKhBz4E,EALAy4E,eACWC,EAIX14E,EAJA04E,UACcC,EAGd34E,EAHA24E,aACUC,EAEV54E,EAFA44E,SACaC,EACb74E,EADA64E,YAEAC,GAAc,IAASJ,GAAT,QAAyBp1F,GAAQA,EAenD,OAdAs9C,EAAQl3C,SAAQ,SAAAkE,GACZ,IAAIshD,EAAQ,WAAathD,EAAKS,KAAOyqF,EAAchB,GAASJ,EAASoB,EAAalrF,EAAKtC,IAAKqsF,GAE5F,QADCgB,GA5ET,SAA8BjB,EAASrkF,GACnC,GAAIqkF,EAAQpsF,SAAW+H,EAAM2kF,eAAiB3kF,EAAM4kF,sBAAwB5kF,EAAM1J,QAAS,CAGvF,IAFA,IAAIovF,EAAe,CAAC,EAChBC,EAAc3lF,EAAM1J,OACfgI,EAAI,EAAGA,EAAIqnF,EAAarnF,IAC7BonF,EAAajqF,KAAKC,UAAU2oF,EAAQuB,MAAM5lF,EAAM1B,MAAQ0B,EAAM1B,GAElE0B,EAAM2kF,cAAgBe,EACtB1lF,EAAM4kF,oBAAsBe,CAC/B,CACJ,CAkEwBE,CAAqBxB,EAASxoC,GACvCthD,EAAKS,MACT,IAAK,SACD2mC,GAAO0iD,EAASxoC,EAAOthD,EAAKtC,IAAKsC,EAAKtK,MAAM,EAAMo1F,EAAWE,GAC7D,MACJ,IAAK,SACDznF,GAAOumF,EAASxoC,EAAOthD,EAAKtK,KAAMm1F,IAAkBphC,EAAAA,EAAAA,IAAUzpD,EAAKzD,OAASyD,EAAKzD,OAAS,GAAG,EAAMyuF,EAAUC,GAC7G,MACJ,IAAK,SACDnyF,GAAOgxF,EAASxoC,EAAOthD,EAAKtC,KAAK,EAAMstF,GAElD,IACME,CACV,CAED,SAASK,GAAeC,EAASR,EAAUS,GACvC,OAAQD,EAAqDR,GAAYtwE,GAAAA,IAAW+wE,GAAlEhE,GAAgB/sE,GAAAA,MAAa+wE,GAClD,CAuBD,SAASrkD,GAAO0iD,EAASrkF,EAAO/H,EAAKhI,EAAM81F,EAASV,EAAWE,GAC3D,IAAIj4E,EACAu0E,EAAUwC,EAAQpsF,MACtB,GAAI4pF,EAAS,CACT,GA3JR,SAAgBv0E,EAAQ24E,GAGpB,IAFA,IACItxF,EAAO,kBAAoBsxF,EAAYA,EAAUjuF,QAAUiuF,EAAUvrF,QAClE/F,EAAK2B,QAER,GADM3B,EAAKk5B,UACAvgB,EACP,OAAO,EAGf,OAAO,CACV,CAiJW44E,CAAOj2F,EAAM4xF,KAAaD,GAAUC,EAAS5pF,EAAKosF,EAAQuB,MAAM31F,IAChE,OAAO61F,GAAeC,EAASR,EAAU,SAG7C,GADAj4E,EA/GR,SAAuBtN,EAAO/H,GAC1B,GAAI+H,EAAM2kF,cACN,OAAO3kF,EAAM2kF,cAAclpF,KAAKC,UAAUzD,GAEjD,CA2GgBkuF,CAAcnmF,EAAO/H,IACzBqV,EAAQ,CACT,IAAIxW,EAAQ0tF,GAAWH,EAASrkF,EAAO/H,GACvC,GAAInB,EAAQ,EACR,OAAOgvF,GAAeC,EAASR,EAAU,SAG7C,GADAj4E,EAAStN,EAAMlJ,IACX,IAASuuF,IAAarhC,EAAAA,EAAAA,IAAU12C,GAAS,CACzC,IAAI84E,EAAYlB,GAAwB53E,EAAQrd,GAEhD,OADA+P,EAAMlJ,GAASsvF,GACPL,GAAWhE,GAAeqE,EAAWnuF,EAChD,CACJ,CACJ,MACGqV,EAASrV,EAGb,IADAkzD,EAAAA,GAAAA,IAAoB79C,EAAQrd,GAAM,IAC7B81F,EACD,OAAIrwF,EAAAA,GAAAA,KAASwkD,qBACF6nC,GAAe9pF,EAAKhI,GAEpB8xF,GAAez0E,EAAQrV,EAGzC,CAED,SAAS6F,GAAOumF,EAASrkF,EAAO/P,EAAM6G,EAAOivF,EAASR,EAAUC,GAC5D,IAAIa,EACAxE,EAAUwC,EAAQpsF,MAClB6S,GAAMiyB,EAAAA,EAAAA,IAAc9sC,KAAUu1F,GAAcpqC,EAAAA,GAAAA,GAAO,CAAC,EAAGnrD,GAAQA,EACnE,GAAI4xF,GAEA,QAAI,KADJwE,EAAWhC,EAAQuB,MAAM96E,KACE,kBAAoBu7E,IAAY90B,EAAAA,EAAAA,IAAc80B,GAAW,CAChF,GAAI7rF,MAAMC,QAAQonF,GACd,MAAM5sE,GAAAA,MAAa,SAEvBoxE,EAAWv7E,EAAI+2E,GAAWziF,OAAO,IAAIyiD,GAAAA,EACxC,MAAM,QAAI,IAAW7hD,EAAMwkF,GAAWH,EAASrkF,EAAOqmF,IACnD,OAAOP,GAAeC,EAASR,EAAU,cAG7Cc,EAAWv7E,EAQf,GANIhU,GAAS,EACTkJ,EAAMhJ,OAAOF,EAAO,EAAGgU,GAEvB9K,EAAMjK,KAAK+U,GAEf45E,GAAqB1kF,EAAOqmF,EAAUv7E,IACjCi7E,EACD,OAAOhE,IAAersF,EAAAA,GAAAA,KAASwkD,qBAAuBjqD,EAAO6a,EAAKu7E,EAEzE,CAED,SAAShzF,GAAOgxF,EAASrkF,EAAO/H,EAAK8tF,EAASR,GAC1C,IAAIzuF,EAAQ0tF,GAAWH,EAASrkF,EAAO/H,GAKvC,OAJInB,GAAS,IACTkJ,EAAMhJ,OAAOF,EAAO,GACpB4tF,GAAqB1kF,EAAO/H,EAAK,OAEhC8tF,EAEMjvF,EAAQ,EACRgvF,GAAeC,EAASR,EAAU,cADtC,EADIxD,GAAe9pF,EAI7B,CAED,SAASusF,GAAWH,EAASrkF,EAAO/H,GAChC,IAAI4pF,EAAUwC,EAAQpsF,MACtB,IA9KJ,SAA6B+H,EAAO/H,GAChC,OAAI+H,EAAM2kF,eACC3kF,EAAM2kF,cAAclpF,KAAKC,UAAUzD,GAGjD,CAyKQquF,CAAoBtmF,EAAO/H,GAC5B,OAAQ,EAEZ,IAAK,IAAIqG,EAAI,EAAGqnF,EAAc3lF,EAAM1J,OAAQgI,EAAIqnF,EAAarnF,IACzD,GAAIsjF,GAAUC,EAASwC,EAAQuB,MAAM5lF,EAAM1B,IAAKrG,GAC5C,OAAOqG,EAGf,OAAQ,CACX,CC3OD,IAAIioF,GAAWzkC,GAAAA,EAAAA,QAAc,CACzBuhB,QAAS,WACL,IAAIlqE,EAAS,GAEb,IADAxD,KAAKwmC,QACExmC,KAAKmL,QACR3H,EAAOpD,KAAKJ,KAAKyZ,WAErB,OAAOjW,CACV,EACDqtF,UAAW,WACP,OAAO,CACV,IAEDC,GAAgBF,GAASvlE,QAAQ,CACjC03B,KAAM,SAAS14C,GACXrK,KAAKqK,MAAQA,EACbrK,KAAKmB,OAAS,CACjB,EACDgK,KAAM,WACF,OAAInL,KAAKmB,MAAQ,EAAInB,KAAKqK,MAAM1J,SAC5BX,KAAKmB,SACE,EAGd,EACDsY,QAAS,WACL,OAAOzZ,KAAKqK,MAAMrK,KAAKmB,MAC1B,EACDqlC,MAAO,WACHxmC,KAAKmB,OAAS,CACjB,EACDusE,QAAS,WACL,OAAO1tE,KAAKqK,MAAMtF,MAAM,EAC3B,EACD8rF,UAAW,WACP,OAAO,CACV,EACDhlF,MAAO,WACH,OAAO7L,KAAKqK,MAAM1J,MACrB,IAEDowF,GAAkBH,GAASvlE,QAAQ,CACnC03B,KAAM,SAASiuC,GACXhxF,KAAKgxF,KAAOA,CACf,EACD7lF,KAAM,WACF,OAAOnL,KAAKgxF,KAAK7lF,MACpB,EACDsO,QAAS,WACL,OAAOzZ,KAAKgxF,KAAKv3E,SACpB,EACD+sB,MAAO,WACH,OAAOxmC,KAAKgxF,KAAKxqD,OACpB,IAEDyqD,GAAcF,GAAgB1lE,QAAQ,CACtC03B,KAAM,SAASiuC,EAAME,GACjBlxF,KAAKmiD,SAAS6uC,GACdhxF,KAAKmB,OAAS,EACdnB,KAAKkxF,OAASA,CACjB,EACDz3E,QAAS,WACL,OAAOzZ,KAAKkxF,OAAOlxF,KAAKmiD,WAAYniD,KAAKmB,MAC5C,EACDgK,KAAM,WACF,IAAIgmF,EAAUnxF,KAAKmiD,WAInB,OAHIgvC,GACAnxF,KAAKmB,QAEFgwF,CACV,IA4BDC,GAAeR,GAASvlE,QAAQ,CAChC03B,KAAM,SAASiuC,EAAMp8B,EAAQk2B,EAAMp7C,GAC/B1vC,KAAKqxF,WAAaL,EAAKK,WACjBL,aAAgBC,MAClBD,EAAO,IAAIC,GAAYD,EAAMhxF,KAAKsxF,QAC7BD,WAAarxF,KAAKqxF,YAE3BrxF,KAAKgxF,KAAOA,EACZhxF,KAAK4M,MAAQ,CAAC,CACVgoD,OAAQA,EACRk2B,KAAMA,EACNp7C,QAASA,EACT2hD,WAAYrxF,KAAKqxF,YAExB,EACDE,OAAQ,SAAS38B,EAAQk2B,EAAMp7C,GAC3B,IAAIlsC,EAAS,IAAI4tF,GAAapxF,KAAKwxF,YAAcxxF,KAAKgxF,KAAMp8B,EAAQk2B,EAAMp7C,GAI1E,OAHK1vC,KAAKwxF,aACNhuF,EAAOoJ,MAAQ5M,KAAK4M,MAAMqD,OAAOzM,EAAOoJ,QAErCpJ,CACV,EACD2H,KAAM,WAEF,OADAnL,KAAKyxF,gBACEzxF,KAAKwxF,WAAWrmF,MAC1B,EACDsO,QAAS,WAEL,OADAzZ,KAAKyxF,gBACEzxF,KAAKwxF,WAAW/3E,SAC1B,EACD+sB,MAAO,kBACIxmC,KAAKwxF,UACf,EACDX,UAAW,WACP,OAAO7wF,KAAKwxF,YAAcxxF,KAAKgxF,KAAKH,WACvC,EACDhlF,MAAO,WACH,OAAI7L,KAAKwxF,WACExxF,KAAKwxF,WAAW3lF,QAEpB7L,KAAKgxF,KAAKnlF,OACpB,EACD4lF,cAAe,WACX,IAAIhiC,EAAOzvD,KACPyvD,EAAK+hC,cAGT3kC,EAAAA,EAAAA,IAAK4C,EAAK7iD,OAAQ,WACd5M,KAAK40D,QAASR,EAAAA,GAAAA,IAAcp0D,KAAK40D,OACpC,IACDnF,EAAK+hC,WAAa,IAAIP,GAAY,IAAIH,GAAc9wF,KAAKgxF,KAAKtjB,UAAUt0C,MAAM,SAASrrB,EAAGC,GACtF,OAAOyhD,EAAKiiC,SAAS3jF,EAAGC,EAC3B,KAAKyhD,EAAKkiC,SACd,EACDL,MAAO,SAASM,EAAQzwF,GACpB,MAAO,CACHA,MAAOA,EACPjD,MAAO0zF,EAEd,EACDD,QAAS,SAASE,GACd,OAAOA,EAAY3zF,KACtB,EACD4zF,mBAAoB,SAAAT,GAAU,OAAI,SAACU,EAAQC,GAAT,OAzFjB,SAASD,EAAQC,EAAQ50F,GAC1C,OAAIszD,EAAAA,EAAAA,IAASqhC,KAAWrhC,EAAAA,EAAAA,IAASshC,KAAY,OAAS50F,QAAW,IAAWA,GAAWA,EAAQ44D,QAAU,OAAS54D,QAAW,IAAWA,GAAWA,EAAQw4D,iBAChJ,IAAIwwB,KAAK6L,UAAU,OAAS70F,QAAW,IAAWA,OAAU,EAASA,EAAQ44D,cAAW,GAAS,OAAS54D,QAAW,IAAWA,OAAU,EAASA,EAAQw4D,uBAAoB,GAAQlmB,QAAQqiD,EAAQC,IAElND,GAAS7+B,EAAAA,GAAAA,IAAa6+B,GAAQ,EAAO30F,GACrC40F,GAAS9+B,EAAAA,GAAAA,IAAa8+B,GAAQ,EAAO50F,GACjC,OAAS20F,GAAU,OAASC,GACpB,EAER,OAASD,GAAU,OAASC,QAG5B,IAAWD,QAAU,IAAWC,EAFzB,OAKP,IAAWD,QAAU,IAAWC,GAGhCD,EAASC,GAFD,EAKRD,EAASC,EACF,EAEJ,EACV,CAgEyDE,CAAeH,EAAQC,EAAQX,EAAnD,CAAJ,EAC9BK,SAAU,SAAS3jF,EAAGC,GAClB,IAAImkF,EAASpkF,EAAE5M,MACXixF,EAASpkF,EAAE7M,MAGf,IAFA4M,EAAIA,EAAE7P,UACN8P,EAAIA,EAAE9P,OAEF,OAAOi0F,EAASC,EAEpB,IAAK,IAAIzpF,EAAI,EAAG0pF,EAAaryF,KAAK4M,MAAMjM,OAAQgI,EAAI0pF,EAAY1pF,IAAK,CACjE,IAAIP,EAAOpI,KAAK4M,MAAMjE,GAClBopF,EAAS3pF,EAAKwsD,OAAO7mD,GACrBikF,EAAS5pF,EAAKwsD,OAAO5mD,GAErBskF,GADUlqF,EAAKsnC,SAAW1vC,KAAK8xF,mBAAmB1pF,EAAKipF,aAC/BU,EAAQC,GACpC,GAAIM,EACA,OAAOlqF,EAAK0iF,MAAQwH,EAAgBA,CAE3C,CACD,OAAOH,EAASC,CACnB,IAEDG,GAAkB,WAClB,IAAIlB,EAAa,CAAC,EACdmB,EAAgB,SAAAt0F,GAAK,OAAIg1D,EAAAA,GAAAA,IAAah1D,GAAO,EAAOmzF,EAA/B,EACrB/zF,EAAW,SAASY,GACpB,IAAIu0F,EACJ,OAAOpkC,EAAAA,EAAAA,IAAUnwD,GAAS,QAAUu0F,EAAcpB,SAAe,IAAWoB,GAAeA,EAAYz8B,OAAS93D,EAAMw0F,eAAerB,EAAWr7B,QAAU93D,EAAMZ,WAAa,EAChL,EAED,SAASq1F,EAAc/9B,EAAQ12D,EAAO00F,GAClC,OAAO,SAASz9E,GACZA,EAAMq9E,EAAc59B,EAAOz/C,IAC3B,IAAI3R,EAAS,SAAStF,GAClB,MAAO,KAAOA,GAAS,IAAMA,IAAS,IAAUA,CACnD,CAFY,CAEXA,GAASiX,IAAQjX,EAAQiX,GAAOjX,EAIlC,OAHI00F,IACApvF,GAAUA,GAEPA,CACV,CACJ,CACD,OAAO,SAASqvF,EAAMz1F,GAElB,OADAi0F,EAAaj0F,GAAW,CAAC,GACrByxD,EAAAA,EAAAA,IAAWgkC,GACJA,EHtCW,SAASA,GACnC,IAAI99C,EAAQ89C,EAAK,GACb79C,EAAS69C,EAAK,GAClB,QAAIhuF,MAAMC,QAAQiwC,QAGd8Z,EAAAA,EAAAA,IAAW9Z,MACPlwC,MAAMC,QAAQkwC,KAAW6Z,EAAAA,EAAAA,IAAW7Z,IAV1B,SAAS92C,GAC3B,MAAO,QAAUA,GAAS,OAASA,CACtC,CAQ0D40F,CAAgB99C,IAK1E,CG4BW+9C,CAAiBF,GACV,SAASA,GACZ,IAAIG,EAAM,GACNC,GAAwB,EACxBC,GAA4B,EAahC,OAZArmC,EAAAA,EAAAA,IAAKgmC,GAAO,WACR,GAAIhuF,MAAMC,QAAQ9E,QAAS6uD,EAAAA,EAAAA,IAAW7uD,MAAO,CACzC,GAAIgzF,EAAIryF,OAAS,GAAKsyF,IAA0BC,EAC5C,MAAM,IAAI5zE,GAAAA,MAAa,SAE3B0zE,EAAI5yF,KAAKmyF,GAAgBvyF,KAAMqxF,IAC/B4B,EAAwBC,EACxBA,GAA4B,CAC/B,MACGA,EHvHb,gBAAgB98E,KGuHsDpW,KAEhE,IACM,SAASwjB,GAEZ,IADA,IAAIhgB,EAASyvF,EACJtqF,EAAI,EAAGA,EAAIqqF,EAAIryF,OAAQgI,IAC5B,GAAIqqF,EAAIrqF,GAAG6a,KAAOyvE,EAAuB,CACrCzvF,GAAUyvF,EACV,KACH,CAEL,OAAOzvF,CACV,CACJ,CA1BM,CA0BLqvF,GHzEgB,SAASA,GACnC,MAAO,MAAQA,EAAK,IAAMhuF,MAAMC,QAAQ+tF,EAAK,GAChD,CGyEWM,CAAiBN,GACV,SAASA,GACZ,IAAIO,EAAKP,EAAK,GACVQ,EAAWd,GAAgBM,EAAK,GAAIxB,GACxC,GAAI,MAAQ+B,EACR,OAAO,SAASj+E,GACZ,OAAQk+E,EAASl+E,EACpB,EAEL,MAAMmK,GAAAA,MAAa,QAAS8zE,EAC/B,CATM,CASLP,GAEC,SAASA,GACZA,EHnQ0B,SAASA,GAC3C,MAAO,CAACA,EAAK,GAAIA,EAAKlyF,OAAS,EAAI,IAAM8I,OAAOopF,EAAK,IAAIr+E,cAAeq+E,EAAKlyF,OAAS,GAAWkyF,EAAKA,EAAKlyF,OAAS,GACvH,CGiQkB2yF,CAAyBT,GAChC,IAAIj+B,GAASR,EAAAA,GAAAA,IAAcy+B,EAAK,IAC5BO,EAAKP,EAAK,GACV30F,EAAQ20F,EAAK,GACjB30F,EAAQs0F,EAAct0F,GACtB,IAAIwxC,EAAU,SAACv6B,EAAKo+E,GAEhB,OADAp+E,EAAMq9E,EAAc59B,EAAOz/C,KACnB,MAAQjX,GAAS,MAAQiX,GAAQjX,IAAUiX,IAAco+E,EAAWp+E,EAAKjX,EACpF,EACD,OAAQk1F,EAAG5+E,eACP,IAAK,IACD,OAAOm+E,EAAc/9B,EAAQ12D,GACjC,IAAK,KACD,OAAOy0F,EAAc/9B,EAAQ12D,GAAO,GACxC,IAAK,IACD,OAAO,SAAAiX,GAAG,OAAIu6B,EAAQv6B,GAAK,SAAC4K,EAAGC,GAAJ,OAAUD,EAAIC,CAAd,GAAjB,EACd,IAAK,IACD,OAAO,SAAA7K,GAAG,OAAIu6B,EAAQv6B,GAAK,SAAC4K,EAAGC,GAAJ,OAAUD,EAAIC,CAAd,GAAjB,EACd,IAAK,KACD,OAAO,SAAA7K,GAAG,OAAIu6B,EAAQv6B,GAAK,SAAC4K,EAAGC,GAAJ,OAAUD,GAAKC,CAAf,GAAjB,EACd,IAAK,KACD,OAAO,SAAA7K,GAAG,OAAIu6B,EAAQv6B,GAAK,SAAC4K,EAAGC,GAAJ,OAAUD,GAAKC,CAAf,GAAjB,EACd,IAAK,aACD,OAAO,SAAS7K,GACZ,OAAO,IAAMq9E,EAAcl1F,EAASs3D,EAAOz/C,KAAO/T,QAAQlD,EAC7D,EACL,IAAK,WACD,OAAO,SAASiX,GACZ,IAAIq+E,EAAchB,EAAcl1F,EAASs3D,EAAOz/C,KAC5Cs+E,EAAcn2F,EAASY,GAC3B,GAAIs1F,EAAY7yF,OAAS8yF,EAAY9yF,OACjC,OAAO,EAEX,IAAIQ,EAAQqyF,EAAYE,YAAYx1F,GACpC,OAAQ,IAAMiD,GAASA,IAAUqyF,EAAY7yF,OAASzC,EAAMyC,MAC/D,EACL,IAAK,WACD,OAAO,SAASwU,GACZ,OAAOq9E,EAAcl1F,EAASs3D,EAAOz/C,KAAO/T,QAAQlD,IAAU,CACjE,EACL,IAAK,cACD,OAAO,SAASiX,GACZ,OAAQ,IAAMq9E,EAAcl1F,EAASs3D,EAAOz/C,KAAO/T,QAAQlD,EAC9D,EAET,MAAMohB,GAAAA,MAAa,QAAS8zE,EAC/B,CA/CM,CA+CLP,EACL,CACJ,CAnHqB,GAoHlBc,GAAiB5C,GAAgB1lE,QAAQ,CACzC03B,KAAM,SAASiuC,EAAMqC,GACjBrzF,KAAKmiD,SAAS6uC,GACdhxF,KAAKqxF,WAAaL,EAAKK,WACvBrxF,KAAKqzF,SAAWd,GAAgBc,EAAUrzF,KAAKqxF,WAClD,EACDlmF,KAAM,WACF,KAAOnL,KAAKgxF,KAAK7lF,QACb,GAAInL,KAAKqzF,SAASrzF,KAAKyZ,WACnB,OAAO,EAGf,OAAO,CACV,IAEDm6E,GAAgBhD,GAASvlE,QAAQ,CACjC03B,KAAM,SAASiuC,EAAMp8B,GACjB50D,KAAKgxF,KAAOA,EACZhxF,KAAK40D,OAASA,CACjB,EACDzpD,KAAM,WAEF,OADAnL,KAAK6zF,iBACE7zF,KAAK8zF,YAAY3oF,MAC3B,EACDsO,QAAS,WAEL,OADAzZ,KAAK6zF,iBACE7zF,KAAK8zF,YAAYr6E,SAC3B,EACD+sB,MAAO,kBACIxmC,KAAK8zF,WACf,EACDjD,UAAW,WACP,QAAS7wF,KAAK8zF,WACjB,EACDjoF,MAAO,WACH,OAAO7L,KAAK8zF,YAAYjoF,OAC3B,EACDgoF,eAAgB,WACZ,IAAI7zF,KAAK8zF,YAAT,CAGA,IAAIjlF,EAAO,CAAC,EACR7P,EAAO,GACPgyF,EAAOhxF,KAAKgxF,KACZp8B,GAASR,EAAAA,GAAAA,IAAcp0D,KAAK40D,QAEhC,IADAo8B,EAAKxqD,QACEwqD,EAAK7lF,QAAQ,CAChB,IAAIsO,EAAUu3E,EAAKv3E,UACfnX,EAAMsyD,EAAOn7C,GACbnX,KAAOuM,EACPA,EAAKvM,GAAKlC,KAAKqZ,IAEf5K,EAAKvM,GAAO,CAACmX,GACbza,EAAKoB,KAAKkC,GAEjB,CACDtC,KAAK8zF,YAAc,IAAIhD,IAAc/sF,EAAAA,EAAAA,IAAI/E,GAAO,SAASsD,GACrD,MAAO,CACHA,IAAKA,EACL4jD,MAAOr3C,EAAKvM,GAEnB,IArBA,CAsBJ,IAEDyxF,GAAiBhD,GAAgB1lE,QAAQ,CACzC03B,KAAM,SAASiuC,EAAMp8B,GACjB50D,KAAKmiD,SAAS6uC,GACdhxF,KAAK40D,QAASR,EAAAA,GAAAA,IAAcQ,EAC/B,EACDn7C,QAAS,WACL,OAAOzZ,KAAK40D,OAAO50D,KAAKmiD,WAC3B,EACD0uC,UAAW,WACP,OAAO7wF,KAAKgxF,KAAKH,WACpB,EACDhlF,MAAO,WACH,OAAO7L,KAAKgxF,KAAKnlF,OACpB,IAEDmoF,GAAgBjD,GAAgB1lE,QAAQ,CACxC03B,KAAM,SAASiuC,EAAMrvB,EAAMsyB,GACvBj0F,KAAKmiD,SAAS6uC,GACdhxF,KAAK2hE,KAAOp4D,KAAKkuB,IAAI,EAAGkqC,GACxB3hE,KAAKi0F,KAAO1qF,KAAKkuB,IAAI,EAAGw8D,GACxBj0F,KAAKyb,IAAM,CACd,EACDtQ,KAAM,WACF,GAAInL,KAAKyb,KAAOzb,KAAK2hE,KAAO3hE,KAAKi0F,KAC7B,OAAO,EAEX,KAAOj0F,KAAKyb,IAAMzb,KAAK2hE,MAAQ3hE,KAAKgxF,KAAK7lF,QACrCnL,KAAKyb,MAGT,OADAzb,KAAKyb,MACEzb,KAAKgxF,KAAK7lF,MACpB,EACDq7B,MAAO,WACHxmC,KAAKmiD,WACLniD,KAAKyb,IAAM,CACd,EACDo1E,UAAW,WACP,OAAO7wF,KAAKgxF,KAAKH,WACpB,EACDhlF,MAAO,WACH,OAAOtC,KAAKsZ,IAAI7iB,KAAKgxF,KAAKnlF,QAAU7L,KAAK2hE,KAAM3hE,KAAKi0F,KACvD,IAkJL,GAhJqB,SAASC,EAAelD,EAAMmD,GAC/CA,EAAeA,GAAgB,CAAC,EAC1BnD,aAAgBJ,KAClBI,EAAO,IAAIF,GAAcE,IAEzBmD,EAAa9C,aACbL,EAAKK,WAAa8C,EAAa9C,YAEnC,IAAIlyF,EAAc,SAASE,GACvB,IAAIyB,EAAUqzF,EAAa5F,aACvBztF,GACAA,EAAQzB,GAEZ+0F,GAAgB/0F,EACnB,EACGg1F,EAAgB,SAASC,GACzB,IAAI9wE,GAAK,IAAInG,GAAAA,IAAUiyC,KAAKnwD,GAExB48B,EAAOu4D,EAAWv4D,KAClB2vD,EAAW4I,EAAW5I,SAC1B,IACIsF,EAAKxqD,QAOL,IADA,IAAI9hC,GALA,SAAU4vF,EACHA,EAAW/I,KAEXyF,EAAK7lF,OAAS6lF,EAAKv3E,UAAYkyE,KAGnCqF,EAAK7lF,QACRzG,EAAcq3B,EAAKr3B,EAAassF,EAAKv3E,WAEzC+J,EAAE5kB,QAAQ8sF,EAAWA,EAAShnF,GAAeA,EAGhD,CAFC,MAAOqJ,GACLyV,EAAEhkB,OAAOuO,EACZ,CACD,OAAOyV,EAAElG,SACZ,EACGi3E,EAAoB,SAASn7F,GAC7B,OAAOi7F,EAAc/I,GAAYlyF,GACpC,EACGy2E,EAAS,SAASjb,GAIlB,OAHK/F,EAAAA,EAAAA,IAAW+F,IAAY/vD,MAAMC,QAAQ8vD,KACtCA,EAAS,GAAG7vD,MAAMtG,KAAKqZ,YAEpB08E,EAAW,IAAIT,GAAe/C,EAAMp8B,GAC9C,EACG6/B,EAAa,SAASr7F,GACtB,OAAOy2E,GAAOzb,EAAAA,GAAAA,IAAch7D,GAC/B,EAED,SAASo7F,EAAWxD,GAChB,OAAOkD,EAAelD,EAAMmD,EAC/B,CACD,MAAO,CACHzmB,QAAS,WACL,OAAOsjB,EAAKtjB,SACf,EACDgnB,UAAW,WACP,IAAIlxE,GAAK,IAAInG,GAAAA,IAAUiyC,KAAKnwD,GAC5B,IACIqkB,EAAE5kB,QAAQoyF,EAAKtjB,UAGlB,CAFC,MAAO3/D,GACLyV,EAAEhkB,OAAOuO,EACZ,CACD,OAAOyV,EAAElG,SACZ,EACDq3E,cAbG,SAaWv3F,GACV4zF,EAAKK,WAAaj0F,CACrB,EACDw3F,OAAQ,SAAShgC,EAAQk2B,EAAMp7C,GAC3B,OAAO8kD,EAAW,IAAIpD,GAAaJ,EAAMp8B,EAAQk2B,EAAMp7C,GAC1D,EACD6hD,OAAQ,SAAS38B,EAAQk2B,EAAMp7C,GAC3B,GAAIshD,aAAgBI,GAChB,OAAOoD,EAAWxD,EAAKO,OAAO38B,EAAQk2B,EAAMp7C,IAEhD,MAAMpwB,GAAAA,MAAa,QACtB,EACDkb,OAAQ,SAAS64D,GAIb,OAHKxuF,MAAMC,QAAQuuF,KACfA,EAAW,GAAGtuF,MAAMtG,KAAKqZ,YAEtB08E,EAAW,IAAIb,GAAe3C,EAAMqC,GAC9C,EACDtuF,MAAO,SAAS48D,EAAMsyB,GAIlB,YAHI,IAAWA,IACXA,EAAOv7D,OAAOm8D,WAEXL,EAAW,IAAIR,GAAchD,EAAMrvB,EAAMsyB,GACnD,EACDpkB,OAAQA,EACRilB,QAAS,SAASlgC,GACd,OAAO4/B,EAAW,IAAIZ,GAAc5C,EAAMp8B,GAC7C,EACDmgC,UAAW,SAASxJ,EAAMxvD,EAAM2vD,GAC5B,OACW2I,EADPv8E,UAAUnX,OAAS,EACE,CACjBo7B,KAAMjkB,UAAU,IAGH,CACjByzE,KAAMA,EACNxvD,KAAMA,EACN2vD,SAAUA,GAEjB,EACD7/E,MAAO,WACH,GAAImlF,EAAKH,YAAa,CAClB,IAAIrtE,GAAK,IAAInG,GAAAA,IAAUiyC,KAAKnwD,GAC5B,IACIqkB,EAAE5kB,QAAQoyF,EAAKnlF,QAGlB,CAFC,MAAOkC,GACLyV,EAAEhkB,OAAOuO,EACZ,CACD,OAAOyV,EAAElG,SACZ,CACD,OAAOi3E,EAAkB,QAC5B,EACD/I,IAAK,SAAS52B,GACV,OAAIA,EACO6/B,EAAW7/B,GAAQ42B,MAEvB+I,EAAkB,MAC5B,EACD1xE,IAAK,SAAS+xC,GACV,OAAIA,EACO6/B,EAAW7/B,GAAQ/xC,MAEvB0xE,EAAkB,MAC5B,EACD98D,IAAK,SAASm9B,GACV,OAAIA,EACO6/B,EAAW7/B,GAAQn9B,MAEvB88D,EAAkB,MAC5B,EACD9I,IAAK,SAAS72B,GACV,OAAIA,EACO6/B,EAAW7/B,GAAQ62B,MAEvB8I,EAAkB,MAC5B,EAER,ECnjBD,SAASS,GAAgBC,EAAOC,GAS5B,OARAD,EAAQA,EAAMH,QAAQI,EAAU,GAAGhlF,UAC/BglF,EAAUv0F,OAAS,IACnBs0F,EAAQA,EAAMplB,QAAQ,SAAS9rD,GAC3B,OAAO0hC,EAAAA,GAAAA,GAAO,CAAC,EAAG1hC,EAAG,CACjBmiC,MAAO8uC,GAAgBG,GAAWpxE,EAAEmiC,OAAQgvC,EAAUnwF,MAAM,IAAI2oE,WAEvE,KAEEunB,CACV,CAED,SAASG,GAAmBF,EAAWG,GACnC,IAAIC,EAAgB,GASpB,OARAzoC,EAAAA,EAAAA,IAAKqoC,GAAY,SAASp2F,EAAGy2F,IACT7jC,EAAAA,GAAAA,MAAK2jC,GAAW,SAASj8D,GACrC,OAAOm8D,EAAMrlF,WAAakpB,EAAKlpB,QAClC,IACavP,OAAS,GACnB20F,EAAcl1F,KAAKm1F,EAE1B,IACMD,EAAcrlF,OAAOolF,EAC/B,CA6CD,IC2FyB3xC,GD3FzB,IACIsxC,gBAAiBA,GACjBI,mBAAoBA,GACpBI,eA9CJ,SAAwBP,EAAO73F,EAASq4F,GACpC,IAAIvoC,EAIIwoC,EAAsBC,EAF1Bn7D,GADJp9B,EAAUA,GAAW,CAAC,GACDo9B,OAQrB,GAPI,QAAU0yB,EAAW9vD,SAAY,IAAW8vD,GAAYA,EAASmkC,aAEjE,QAAUqE,GAAwBC,EAASV,GAAON,qBAAkB,IAAWe,GAAgCA,EAAqBj3F,KAAKk3F,EAAQv4F,EAAQi0F,aAEzJ72D,IACAy6D,EAAQA,EAAMz6D,OAAOA,IAErBi7D,EACA,OAAOR,EAEX,IAAI77D,EAAOh8B,EAAQg8B,KACfy2C,EAASzyE,EAAQyyE,OACjB0lB,EAAQn4F,EAAQm4F,MAChB5zB,EAAOvkE,EAAQukE,KACfsyB,EAAO72F,EAAQ62F,KAuBnB,OAtBIsB,KACAA,EAAQ1K,GAAqB0K,IACvBK,sBAAwBx4F,EAAQm4F,MAAMK,sBAE5Cx8D,GAAQm8D,KACRn8D,EAAOyxD,GAAqBzxD,GAAQ,IAChCm8D,IAAUA,EAAMK,sBAChBx8D,EAAOg8D,GAAmBG,EAAOn8D,KAErCyzB,EAAAA,EAAAA,IAAKzzB,GAAO,SAASj4B,GACjB8zF,EAAQA,EAAM9zF,EAAQ,SAAW,UAAUnB,KAAKkQ,SAAUlQ,KAAK8qF,KAAM9qF,KAAK0vC,QAC7E,KAEDmgC,IACAolB,EAAQA,EAAMplB,OAAOA,IAErB0lB,IACAN,EAAQD,GAAgBC,EAAOM,KAE/BtB,GAAQtyB,KACRszB,EAAQA,EAAMlwF,MAAM48D,GAAQ,EAAGsyB,IAE5BgB,CACV,GC/EG5xC,GAAW8I,GAAAA,EAAAA,SAkBXqpC,GAAiBK,GAAAA,eAWjBC,GAAY,CAAC,EACbC,GAAQ5pC,GAAAA,EAAAA,QAAc,CACtBsmC,YAAa,CAAC,EACd1vC,KAAM,SAAS3lD,GACX,IAAIqyD,EAAOzvD,KACX5C,EAAUA,GAAW,CAAC,EACtB4C,KAAKi2E,gBAAkB,IAAIrD,GAAe5yE,OAC1C6sD,EAAAA,EAAAA,IAAK,CAAC,WAAY,YAAa,aAAc,cAAe,YAAa,aAAc,SAAU,YAAa,aAAc,aAAc,gBAAiB,SAAS/tD,EAAG0wC,GAC/JA,KAAcpyC,GACdqyD,EAAK1iB,GAAGyC,EAAWzqC,MAAM,GAAGyP,cAAepX,EAAQoyC,GAE1D,IACDxvC,KAAKqV,KAAOjY,EAAQkF,IACpBtC,KAAKwuF,cAAgBpxF,EAAQmxF,aAC7BvuF,KAAKg2F,mBAAoB,CAC5B,EACDC,YAAan0E,GAAAA,KACbo0E,mBAAoB,WAChB,OAAO,IACV,EACD5zF,IAAK,WACD,OAAOtC,KAAKqV,IACf,EACD46E,MAAO,SAAS96E,GAIZ,OAHKnV,KAAKm2F,aACNn2F,KAAKm2F,YAAa/hC,EAAAA,GAAAA,IAAcp0D,KAAKsC,QAElCtC,KAAKm2F,WAAWhhF,EAC1B,EACDihF,YAAa,WACT,IAAKp2F,KAAKsC,MACN,MAAMgd,GAAAA,MAAa,QAE1B,EACD+2E,KAAM,SAASj5F,GACX,IAAIqyD,EAAOzvD,KAGX,OAFA5C,EAAUA,GAAW,CAAC,EACtB4C,KAAKi2E,gBAAgB2B,UAAU,UAAW,CAACx6E,IACpC4C,KAAKs2F,UAAUt2F,KAAKu2F,UAAUn5F,IAAUwxD,MAAM,SAASprD,GAC1DisD,EAAKwmB,gBAAgB2B,UAAU,SAAU,CAACp0E,EAAQpG,GACrD,GACJ,EACDm5F,UAAW,SAASn5F,GAKhB,OAJKw+D,EAAAA,EAAAA,IAAc57D,KAAKyyF,gBACpBr1F,EAAUA,GAAW,CAAC,GACdq1F,aAAc15E,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKyyF,YAAar1F,EAAQq1F,cAE1D+C,GAAex1F,KAAKw2F,YAAYp5F,GAAUA,GAASs3F,WAC7D,EACD4B,UAAW,SAAS/0E,GAChB,IAAI/d,EAAS,IAAI6Z,GAAAA,GAUjB,OATAkE,EAAKqtC,MAAM,WACP,IAAIa,EAAOzvD,KACPpC,EAAOka,UACX8zE,GAAyBtuE,UAAUsxC,MAAM,WACrCprD,EAAOsrD,YAAYW,EAAM7xD,EAC5B,GACJ,IAAG0xD,MAAM,WACN9rD,EAAOmrD,WAAW3uD,KAAM8X,UAC3B,IACMtU,CACV,EACDgzF,YAAanzC,GACbozC,WAAY,SAASr5F,GACjB,OAAO4C,KAAK02F,gBAAgBt5F,EAC/B,EACDs5F,gBAAiB,SAASt5F,GACtB,OAAOo4F,GAAex1F,KAAKw2F,YAAYp5F,GAAUA,GAAS,GAAMyO,OACnE,EACD8qF,MAAO,SAASr0F,EAAKs0F,GACjB,OAAO52F,KAAK62F,iBAAiB72F,KAAKs2F,UAAUt2F,KAAK82F,WAAWx0F,EAAKs0F,IACpE,EACDE,WAAYzzC,GACZl7C,OAAQ,SAASwtB,GACb,IAAI85B,EAAOzvD,KAGX,OAFAyvD,EAAKwmB,gBAAgB2B,UAAU,aAC/BnoB,EAAKwmB,gBAAgB2B,UAAU,YAAa,CAACjiD,IACtC85B,EAAKonC,iBAAiBpnC,EAAKsnC,YAAYphE,GAAQi5B,MAAM,SAASooC,EAAgBC,GACjFxnC,EAAKwmB,gBAAgB2B,UAAU,WAAY,CAACof,EAAgBC,IAC5DxnC,EAAKwmB,gBAAgB2B,UAAU,WAClC,IACJ,EACDmf,YAAa1zC,GACbrX,OAAQ,SAAS1pC,EAAKqzB,GAClB,IAAI85B,EAAOzvD,KAGX,OAFAyvD,EAAKwmB,gBAAgB2B,UAAU,aAC/BnoB,EAAKwmB,gBAAgB2B,UAAU,WAAY,CAACt1E,EAAKqzB,IAC1C85B,EAAKonC,iBAAiBpnC,EAAKynC,YAAY50F,EAAKqzB,GAAQi5B,MAAM,WAC7Da,EAAKwmB,gBAAgB2B,UAAU,UAAW,CAACt1E,EAAKqzB,IAChD85B,EAAKwmB,gBAAgB2B,UAAU,WAClC,IACJ,EACDsf,YAAa7zC,GACbjjD,KAAM,SAASw3C,GAAS,WAChBu/C,EAAiB,CACjBv/C,QAASA,EACTw/C,QAAS,IAEbp3F,KAAKi2E,gBAAgB2B,UAAU,wBAAyB,CAACuf,IACzD9nC,GAAAA,GAAAA,WAAA,WAAQ8nC,EAAeC,UAASxoC,MAAK,WACjC,EAAKyoC,UAAUz/C,GACf,EAAKq+B,gBAAgB2B,UAAU,aAAc,CAAC,CAC1ChgC,QAASA,KAEb,EAAKq+B,gBAAgB2B,UAAU,OAAQ,CAAChgC,GAC3C,GACJ,EACDy/C,UAAWv1E,GAAAA,KACXpkB,OAAQ,SAAS4E,GACb,IAAImtD,EAAOzvD,KAGX,OAFAyvD,EAAKwmB,gBAAgB2B,UAAU,aAC/BnoB,EAAKwmB,gBAAgB2B,UAAU,WAAY,CAACt1E,IACrCmtD,EAAKonC,iBAAiBpnC,EAAK6nC,YAAYh1F,GAAKssD,MAAM,SAASqoC,GAC9DxnC,EAAKwmB,gBAAgB2B,UAAU,UAAW,CAACqf,IAC3CxnC,EAAKwmB,gBAAgB2B,UAAU,WAClC,IACJ,EACD0f,YAAaj0C,GACbwzC,iBAAkB,SAAStoC,GACvB,OAAOA,EAASe,KAAKtvD,KAAKwuF,eAAel/B,KAAKnwD,GACjD,EACD4tC,GAxHsB,SAwHnBvuC,EAAWy0E,GAEV,OADAjzE,KAAKi2E,gBAAgBlpC,GAAGvuC,EAAWy0E,GAC5BjzE,IACV,EACDs2C,IA5HsB,SA4HlB93C,EAAWy0E,GAEX,OADAjzE,KAAKi2E,gBAAgB3/B,IAAI93C,EAAWy0E,GAC7BjzE,IACV,IAEL+1F,GAAMvlF,OAAS,SAAS+mF,EAAOn6F,GAC3B,KAAMm6F,KAASzB,IACX,MAAMx2E,GAAAA,MAAa,QAASi4E,GAEhC,OAAO,IAAIzB,GAAUyB,GAAOn6F,EAC/B,EACD24F,GAAMyB,cAAgB,SAASnyF,EAAMkyF,GAIjC,OAHIA,IACAzB,GAAUyB,GAASlyF,GAEhBA,CACV,EACD0wF,GAAM1qE,SAAmBq4B,GAMvBqyC,GAAM1qE,QALG,SAASg3B,EAASk1C,GACrB,IAAIlyF,EAAOq+C,GAAU3rC,MAAM/X,KAAM,CAACqiD,IAElC,OADA0zC,GAAMyB,cAAcnyF,EAAMkyF,GACnBlyF,CACV,GAEL,UC5JIoyF,GAAc,aACdC,GAAO,OACPC,GAAS,QACTC,GAAS,SACTC,GAAS,SACTC,GAAS,SAEb,SAASthC,GAAUrhD,GACf,OAAOA,IAAO05C,EAAAA,EAAAA,IAAW15C,EAAIrX,KAChC,CAED,SAASsuF,GAAeluF,GACpB,OAAQ,IAAImf,GAAAA,IAAUze,QAAQV,GAAOof,SACxC,CAED,SAASy6E,GAAyB3+F,EAAM+b,GACpC,KAAK05C,EAAAA,EAAAA,IAAW15C,GACZ,MAAMmK,GAAAA,MAAa,QAASlmB,EAEnC,CAED,SAAS4+F,GAA2B5+F,GAChC,MAAMkmB,GAAAA,MAAa,QAASlmB,EAC/B,CAED,SAAS6+F,GAA6BC,GAClC,SAASnN,EAAoBoN,GACzB,IAAIhN,EAAMgN,EAAiB,GACvB/M,EAAa+M,EAAiB,GAClC,OAAKhN,GAAQA,EAAIiN,kBAGVC,GAA2BlN,EAAKC,GAF5B,IAGd,CACD,OAAO,SAAS36E,GACZ,IAAIpR,GAEAA,EADAoR,aAAelW,MACPkW,EAEA,IAAIlW,MAAMwwF,EAAoBjzE,YAAcrH,GAAOhH,OAAOgH,IAAQ,kBAEpErW,UAAYwwF,IAClBsN,EAAgB14F,OAAOH,EAE9B,CACJ,CAED,SAASi5F,GAAeC,EAAOn7F,GAC3B,IACIo7F,EADAC,EAAWF,EAAMG,UAWrB,OATAX,GAAyBL,GAAMe,GAC/BD,EAAaC,EAAS1gF,MAAMwgF,EAAO,CAACn7F,IAChCyH,MAAMC,QAAQ0zF,GACdA,EAAapM,GAAeoM,GACrB,OAASA,QAAc,IAAWA,EACzCA,EAAapM,GAAe,IACpB51B,GAAUgiC,IAClBR,GAA2BN,KAExBjhC,EAAAA,GAAAA,IAAY+hC,EACtB,CA8BD,SAASG,GAAWT,EAAiBK,EAAOK,EAAiBC,GACzD,GAAIN,EAAMO,UACND,EAAaN,EAAMO,eAChB,CACH,IAAIC,EAAcR,EAAMS,kBAAoBV,GAAeC,EAAOK,GAC9DL,EAAMU,gBACNV,EAAMS,iBAAmBD,GAE7BA,EAAY1iC,QAAQ,kBACTkiC,EAAMS,gBAChB,IAAGpqC,MAAM,SAASssB,GACXqd,EAAMU,gBACNV,EAAMO,UAAY5d,GAEtB2d,EAAa3d,EAChB,IAAG5rB,KAAK2oC,GAA6BC,GACzC,CACJ,CAED,SAASgB,GAAoBhB,EAAiBK,EAAOn7F,EAAS+7F,GAE1D,IAAIP,EAAkB,CAAC,EACnB,aAFJx7F,EAAUA,GAAW,CAAC,KAGlBw7F,EAAgBQ,SAAWh8F,EAAQg8F,UAEvCT,GAAWT,EAAiBK,EAAOK,GAAkB,SAAS1d,GAC1D,IAGIme,EACAC,EAEApzC,EACAuwC,EAPA8C,EAAepE,GAAWja,EAAS,CACnCqT,aAAcgK,EAAM/J,gBAIpBgL,EAAW,GAGVL,KACDE,EAAaxD,GAAAA,eAA2B0D,EAAcn8F,MACnCm8F,EACfrzC,EAAQg1B,EAAQn2E,MAAM,GAEtBy0F,EAASp5F,KAAKi5F,EAAW3E,YAAY9lC,MAAM,SAAS6qC,GAChDvzC,EAAQuzC,CACX,OAGLr8F,EAAQs8F,mBAAqBP,MAC7BG,EAAkBzD,GAAAA,eAA2B0D,EAAcn8F,GAAS,MAC5Cm8F,EACpB9C,EAAavb,EAAQv6E,OAErB64F,EAASp5F,KAAKk5F,EAAgBztF,QAAQ+iD,MAAM,SAAS6qC,GACjDhD,EAAagD,CAChB,MAGTpqC,GAAAA,GAAAA,MAAW0hB,GAAGyoB,GAAU5qC,MAAM,WACtBuqC,EACAjB,EAAgBt5F,QAAQ63F,GACjBr5F,EAAQs8F,kBACfxB,EAAgBt5F,QAAQsnD,EAAO,CAC3BuwC,WAAYA,IAGhByB,EAAgBt5F,QAAQsnD,EAE/B,IAAGoJ,MAAM,SAASvhD,GACfmqF,EAAgB14F,OAAOuO,EAC1B,GACJ,GACJ,CAgBD,IAAI4rF,GAAc5D,GAAAA,QAAc,CAC5BhzC,KAAM,SAAS3lD,GACXA,EAAUA,GAAW,CAAC,EACtB4C,KAAKmiD,SAAS/kD,GACd4C,KAAKg2F,oBAAsB54F,EAAQw8F,kBAAoB,QAAUx8F,EAAQy8F,SACzE75F,KAAK85F,UAAY18F,EAAQy8F,SACzB75F,KAAKi5F,eAAgB,IAAU77F,EAAQ28F,aACvC/5F,KAAK04F,UAAYt7F,EAAO,KACxB4C,KAAKg6F,gBAAkB58F,EAAO,WAC9B4C,KAAKi6F,WAAa78F,EAAO,MACzB4C,KAAKk6F,YAAc98F,EAAO,OAC1B4C,KAAKm6F,YAAc/8F,EAAO,OAC1B4C,KAAKo6F,YAAch9F,EAAO,MAC7B,EACD64F,YAd4B,kBAejBj2F,KAAK84F,SACf,EACDtC,YAAa,WACT,MAAMl3E,GAAAA,MAAa,QACtB,EACD+6E,kBAAmB,WACfr6F,KAAKi2F,aACR,EACDS,gBAAiB,SAASt5F,GACtB,IAAIomB,EAAI,IAAInG,GAAAA,GASZ,MARI,QAAUrd,KAAK85F,WAAc95F,KAAKg6F,iBAzI9C,SAAkCzB,EAAOn7F,GACrC,IACIo7F,EADAC,EAAWF,EAAMyB,gBAErB,KAAKnrC,EAAAA,EAAAA,IAAW4pC,GACZ,MAAMn5E,GAAAA,MAAa,SAUvB,OAPKk3C,GADLgiC,EAAaC,EAAS1gF,MAAMwgF,EAAO,CAACn7F,OAEhCo7F,EAAa9/D,OAAO8/D,GACfrnC,SAASqnC,IACVR,GAA2BP,IAE/Be,EAAapM,GAAeoM,KAEzB/hC,EAAAA,GAAAA,IAAY+hC,EACtB,CA6HW8B,CAAyBt6F,KAAM5C,GAASwxD,MAAM,SAAS/iD,GACnD2X,EAAE5kB,QAAQ85B,OAAO7sB,GACpB,IAAGyjD,KAAK2oC,GAA6Bz0E,IACtCA,EAAIxjB,KAAK62F,iBAAiBrzE,IAL1B01E,GAAoB11E,EAAGxjB,KAAM5C,GAAS,GAOnComB,EAAElG,SACZ,EACD+5E,UAAW,SAASz/C,GACZ53C,KAAK84F,WACLtJ,GAAW,CACPd,QAAS1uF,KACT1F,KAAM0F,KAAK84F,UACXlhD,QAASA,GAGpB,EACD2+C,UAAW,SAASn5F,GAChB,IAAIomB,EAAI,IAAInG,GAAAA,GASZ,MARI,QAAUrd,KAAK85F,UACfZ,GAAoB11E,EAAGxjB,KAAM5C,GAAS,IAEtCk7F,GAAet4F,KAAM5C,GAASwxD,MAAM,SAASt0D,EAAM4K,GAC/Cse,EAAE5kB,QAAQtE,EAAM4K,EACnB,IAAGoqD,KAAK2oC,GAA6Bz0E,IACtCA,EAAIxjB,KAAK62F,iBAAiBrzE,IAEvBA,EAAElG,SACZ,EACDw5E,WAAY,SAASx0F,EAAKs0F,GACtB,IAAIpzE,EAAI,IAAInG,GAAAA,GASZ,OARIrd,KAAKu6F,iBACLv6F,KAAKo2F,cAzEjB,SAA2B8B,EAAiBK,EAAOj2F,GAC/Cq2F,GAAWT,EAAiBK,EAAO,CAAC,GAAI,SAASrd,GAG7C,IAFA,IACIt2E,EADAsnF,EAAUqM,EAAMj2F,MAEXqG,EAAI,EAAGyI,EAAM8pE,EAAQv6E,OAAQgI,EAAIyI,EAAKzI,IAE3C,GADA/D,EAAOs2E,EAAQvyE,GACXsjF,GAAUC,EAASqM,EAAMtI,MAAM/U,EAAQvyE,IAAKrG,GAE5C,YADA41F,EAAgBt5F,QAAQgG,GAIhCszF,EAAgB14F,OAAO8f,GAAAA,MAAa,SACvC,GACJ,CA6DWk7E,CAAkBh3E,EAAGxjB,KAAMsC,IA3JvC,SAA6Bi2F,EAAOj2F,EAAKs0F,GACrC,IACI4B,EADAC,EAAWF,EAAM0B,WAOrB,OALAlC,GAAyBJ,GAAQc,GAE5BjiC,GADLgiC,EAAaC,EAAS1gF,MAAMwgF,EAAO,CAACj2F,EAAKs0F,OAErC4B,EAAapM,GAAeoM,KAEzB/hC,EAAAA,GAAAA,IAAY+hC,EACtB,CAoJWiC,CAAoBz6F,KAAMsC,EAAKs0F,GAAchoC,MAAM,SAASz5C,GACxDqO,EAAE5kB,QAAQuW,EACb,IAAGm6C,KAAK2oC,GAA6Bz0E,IAEnCA,EAAElG,SACZ,EACDi9E,cAAe,WACX,MAAO,QAAUv6F,KAAK85F,YAAc95F,KAAKi6F,UAC5C,EACDlD,YAAa,SAASphE,GAClB,IAEI6iE,EAFA/oC,EAAOzvD,KACPy4F,EAAWhpC,EAAKyqC,YAEhB12E,EAAI,IAAInG,GAAAA,GAaZ,OAZA06E,GAAyBH,GAAQa,GAE5BjiC,GADLgiC,EAAaC,EAAS1gF,MAAM03C,EAAM,CAAC95B,OAE/B6iE,EAAapM,GAAeoM,KAEhC/hC,EAAAA,GAAAA,IAAY+hC,GAAY5pC,MAAM,SAAS8rC,IAC/B36F,EAAAA,GAAAA,KAASwkD,qBACT/gC,EAAE5kB,QAAQ+2B,EAAQ+kE,GAElBl3E,EAAE5kB,QAAQ87F,GAAkB/kE,EAAQ85B,EAAKwgC,MAAMyK,GAEtD,IAAGprC,KAAK2oC,GAA6Bz0E,IAC/BA,EAAElG,SACZ,EACD45E,YAAa,SAAS50F,EAAKqzB,GACvB,IACI6iE,EADAC,EAAWz4F,KAAKm6F,YAEhB32E,EAAI,IAAInG,GAAAA,GAaZ,OAZA06E,GAAyBF,GAAQY,GAE5BjiC,GADLgiC,EAAaC,EAAS1gF,MAAM/X,KAAM,CAACsC,EAAKqzB,OAEpC6iE,EAAapM,GAAeoM,KAEhC/hC,EAAAA,GAAAA,IAAY+hC,GAAY5pC,MAAM,SAAS8rC,IAC/B36F,EAAAA,GAAAA,KAASwkD,qBACT/gC,EAAE5kB,QAAQ0D,EAAKqzB,GAEfnS,EAAE5kB,QAAQ87F,GAAkB/kE,EAAQrzB,EAE3C,IAAGgtD,KAAK2oC,GAA6Bz0E,IAC/BA,EAAElG,SACZ,EACDg6E,YAAa,SAASh1F,GAClB,IACIk2F,EADAC,EAAWz4F,KAAKo6F,YAEhB52E,EAAI,IAAInG,GAAAA,GASZ,OARA06E,GAAyBD,GAAQW,GAE5BjiC,GADLgiC,EAAaC,EAAS1gF,MAAM/X,KAAM,CAACsC,OAE/Bk2F,EAAapM,OAEjB31B,EAAAA,GAAAA,IAAY+hC,GAAY5pC,MAAM,WAC1BprC,EAAE5kB,QAAQ0D,EACb,IAAGgtD,KAAK2oC,GAA6Bz0E,IAC/BA,EAAElG,SACZ,IAEL,MC5TA,SAASo9C,GAAYigC,GACjB,IAAIC,EAAS,GACTC,GAAQ,EAEZ,SAAS7rF,IACL,KAAO4rF,EAAOj6F,QAAQ,CAClBk6F,GAAQ,EACR,IACIr3F,EADOo3F,EAAO1iE,OACL3W,GACb,QAAI,IAAW/d,EAAf,CAGA,GAAIA,EAAO1F,KAEP,YADAuxD,EAAAA,GAAAA,IAAK7rD,GAAQ6yD,OAAOrnD,GAGxB,MAAMsQ,GAAAA,EAAAA,MAAa,QALlB,CAMJ,CACDu7E,GAAQ,CACX,CACD,MAAO,CACH9sD,IAAK,SAASxsB,EAAMu5E,GACXH,GAGGC,EAAO,IAAME,GACbA,EAAmBF,EAAO,IAE9BA,EAAS,CAACr5E,IALVq5E,EAAOx6F,KAAKmhB,GAOXs5E,GACD7rF,GAEP,EACD+rF,KAAM,WACF,OAAOF,CACV,EAER,CAIoBngC,KAAc3sB,IAA5B,eC5CH9zC,IAAS8mD,EAAAA,EAAAA,MAETi6C,GAAuB,CACvBC,OAAQ,WACJ,OAAO,IAAIhhG,GAAOihG,cACrB,GAEL,IAAenyC,EAAAA,GAAAA,GAASiyC,ICDpB/gG,IAAS8mD,EAAAA,EAAAA,MAQTo6C,GAAU,UACVC,GAAQ,QA2BRC,GAAe,SAASj+F,GACxB,IAAIk+F,EAASz+B,EAAAA,EAAAA,cAAyB,UACtC,IAAK,IAAIzjE,KAAQgE,EACbk+F,EAAOliG,GAAQgE,EAAQhE,GAE3B,OAAOkiG,CACV,EACGC,GAAe,SAASC,GACxBA,EAAWpyF,WAAWC,YAAYmyF,EACrC,EACGC,GAAe,SAASjvF,GACxB,OAAOqwD,EAAAA,EAAAA,UAAqBt0D,YAAYiE,EAC3C,EACGkvF,GAAa,SAASrhG,GACtB,IAAIihG,EAASD,GAAa,CACtB10F,KAAMtM,IAEVohG,GAAaH,GACbC,GAAaD,EAChB,EAmGGK,GAAoB,SAASv+F,EAASwG,GACtC,IAAIU,EAASlH,EAAQ9C,KACjBshG,EAAsB,kBAAoBt3F,EAC1CzB,EAAMzF,EAAQyF,KAAO5I,GAAO04B,SAASkpE,KAkBzC,OAjBKD,GAAwBx+F,EAAQkT,SACjChM,EAASA,GAAU,CAAC,GACbxF,EAAIgE,KAAKygE,OAEhBj/D,IAAWlH,EAAQ0+F,SACdF,IACDt3F,EAjJQ,SAASA,GACzB,IAAId,EAAS,GACb,IAAK,IAAIpK,KAAQkL,EAAQ,CACrB,IAAIpG,EAAQoG,EAAOlL,QACf,IAAW8E,IAGX,OAASA,IACTA,EAAQ,IAER,oBAAsBA,IACtBA,EAAQA,KAEZsF,EAAOpD,KAAKuB,mBAAmBvI,GAAQ,IAAMuI,mBAAmBzD,IACnE,CACD,OAAOsF,EAAOiJ,KAAK,IACtB,CAiIoBsvF,CAAcz3F,IAEvB,QAAU03F,GAAU5+F,IAChB,KAAOkH,IACPzB,IAAQA,EAAIzB,QAAQ,MAAQ,EAAI,IAAM,KAAOkD,GAEjDA,EAAS,MACFV,EAAQ,iBAAmBA,EAAQ,gBAAgBxC,QAAQ,sCAAwC,IAC1GkD,EAASA,EAAO1C,QAAQ,OAAQ,OAGjC,CACHiB,IAAKA,EACLo5F,WAAY33F,EAEnB,EAED,SAAS03F,GAAU5+F,GACf,OAAQA,EAAQgI,QAAU,OAAOshC,aACpC,CACD,IAAIw1D,GAAoB,SAAS9+F,GAC7B,IAAIwG,EAAUxG,EAAQwG,SAAW,CAAC,EAMlC,OALAA,EAAQ,gBAAkBA,EAAQ,iBAhGX,SAASxG,GAChC,IAAI++F,EAIJ,OAHI/+F,EAAQ9C,OAAS8C,EAAQ0+F,QAAU,QAAUE,GAAU5+F,KACvD++F,EAAqB,mDAElB/+F,EAAQmJ,aAAe41F,CACjC,CA0FwDC,CAAqBh/F,GAC1EwG,EAAQy4F,OAASz4F,EAAQy4F,QAhHP,SAASj/F,GAC3B,IAAIk/F,EAAWl/F,EAAQk/F,UAAY,IAC/BC,EAAe,4FACfC,EAAU,CACV,IAAK,MACL71F,KAAM,aACNwmE,KAAM,YACNsvB,IAAK,4BACL/1F,KAAM,oCACNg2F,MAAOH,EACPjB,OAAQiB,GAGZ,OADArkC,EAAAA,GAAAA,GAAiBskC,EAASp/F,EAAQo/F,SAAS,GACpCA,EAAQF,GAAYE,EAAQF,IAAa,MAAQA,EAAW,gBAAkB,IAAME,EAAQ,IACtG,CAkGsCG,CAAgBv/F,GAC9CA,EAAQw/F,aAAgBh5F,EAAQ,sBACjCA,EAAQ,oBAAsB,kBAE3BA,CACV,EAqFD,IAAemlD,EAAAA,GAAAA,GAAS,CACpB8zC,YArFc,SAASz/F,GACvB,IAMIovF,EANArB,EAAM2R,GAAAA,SACNt5E,EAAI,IAAInG,GAAAA,GACR7Z,EAASggB,EAAElG,UACXy/E,IAAQ1uC,EAAAA,EAAAA,IAAUjxD,EAAQ2/F,QAAS3/F,EAAQ2/F,MAC3CT,EAAWl/F,EAAQk/F,SACnBv1D,EAAU3pC,EAAQ2pC,SAAW,EAEjC3pC,EAAQw/F,YAhFQ,SAAS/5F,GACzB,KAAKi+C,EAAAA,EAAAA,MACD,OAAO,EAEX,IAAI87C,GAAc,EACdI,EAAengC,EAAAA,EAAAA,cAAyB,KACxCogC,EAAYpgC,EAAAA,EAAAA,cAAyB,KACzCmgC,EAAanB,KAAO5hG,GAAO04B,SAASkpE,KACpC,IACIoB,EAAUpB,KAAOh5F,EACjBo6F,EAAUpB,KAAOoB,EAAUpB,KAC3Be,EAAcI,EAAaE,SAAW,KAAOF,EAAan0C,OAASo0C,EAAUC,SAAW,KAAOD,EAAUp0C,IAG5G,CAFC,MAAO5/C,GACL2zF,GAAc,CACjB,CACD,OAAOA,CACV,CAgEyBO,CAAc//F,EAAQyF,KAC5C,IAAIu6F,EAAuB,UAAYd,GAAY,WAAaA,OAC5D,IAAWl/F,EAAQkT,QACnBlT,EAAQkT,OAAS8sF,GAErB,IAAIC,EA9Dc,SAASjgG,GAC3B,GAAI,UAAYA,EAAQk/F,SAAU,CAC9B,IAAI15E,EAASrZ,KAAKqZ,SAAStlB,WAAWsE,QAAQ,MAAO,IACjDy7F,EAAejgG,EAAQkgG,eAAiB,aAAex6F,KAAKygE,MAAQ,IAAM3gD,EAC1E26E,EAAoBngG,EAAQs/F,OAAS,WAGzC,OAFAt/F,EAAQ9C,KAAO8C,EAAQ9C,MAAQ,CAAC,EAChC8C,EAAQ9C,KAAKijG,GAAqBF,EAC3BA,CACV,CACJ,CAqDsBG,CAAgBpgG,GAC/BwG,EAAUs4F,GAAkB9+F,GAC5BqgG,EAAiB9B,GAAkBv+F,EAASwG,GAC5Cf,EAAM46F,EAAe56F,IACrBo5F,EAAawB,EAAexB,WAMhC,GALIoB,IACApjG,GAAOojG,GAAgB,SAAS/iG,GAC5BkpB,EAAE5kB,QAAQtE,EAAM6gG,GAAShQ,EAC5B,GAED/tF,EAAQw/F,aAAeQ,EASvB,OAzKoB,SAASv6F,GACjC,IAAIy4F,EAASD,GAAa,CACtBp5B,IAAKp/D,IAET,OAAO,IAAIlE,SAAS,SAASC,EAASY,GAClC,IAAIuqC,EAAS,CACTssD,KAAMz3F,EACNS,MAAOG,GAEPk+F,EAAc,SAASz0F,GACvB8gC,EAAO9gC,EAAE5D,QACTk2F,GAAaD,EAChB,EACD,IAAK,IAAIv6F,KAASgpC,EACd8yB,EAAAA,EAAAA,OAAkBy+B,EAAQv6F,EAAO28F,GAErCjC,GAAaH,EAChB,GACJ,CA+IOqC,CAAsB96F,GAAK/E,MAAM,WACzB,UAAYw+F,GAGhB94E,EAAE5kB,QAAQ,KAAMu8F,GAAShQ,EAC5B,IAAI,WACD3nE,EAAEhkB,OAAO2rF,EAAKiQ,GACjB,IACM53F,EAEX,GAAIpG,EAAQw/F,eAAiB,oBAAqBzR,GAE9C,OADA3nE,EAAEhkB,OAAO2rF,EAAKiQ,IACP53F,EA0BX,GAxBA2nF,EAAI3sE,KAAKw9E,GAAU5+F,GAAUyF,EAAKk6F,EAAO3/F,EAAQwgG,SAAUxgG,EAAQ22B,UAC/DgpE,IACA5R,EAAIpkD,QAAUA,EACdylD,EAhGa,SAASzlD,EAASokD,GACnC,OAAOpkD,GAAWxR,YAAY,WAC1B41D,EAAI0S,aAlIE,UAmIN1S,EAAI18B,OACP,GAAG1nB,EACP,CA2FmB+2D,CAAe/2D,EAASokD,IAExCA,EAAI4S,mBAAqB,SAAS90F,GA/NhB,IAASrC,EAgOnB,IAAMukF,EAAI5iC,aACVjzB,aAAak3D,GAhOd,MADoB5lF,EAkOCukF,EAAIvkF,SAjORA,EAAS,IAEpB,SAASA,GACtB,OAAO,MAAQA,CAClB,CA8NmBo3F,CAAW7S,EAAIvkF,QA5IjB,SAAS2nD,EAAU48B,EAAKmR,GACtC,IAAIhiG,EAJkB,SAAS6wF,GAC/B,OAAOA,EAAI1kF,cAAgB,SAAW0kF,EAAI1kF,cAAgB,kBAAoB0kF,EAAI8S,aAAe9S,EAAI7kF,SAAW6kF,EAAI8S,YACvH,CAEcC,CAAoB/S,GAC/B,OAAQmR,GACJ,IAAK,QACDZ,GAAWphG,GACX,MACJ,IAAK,SACDohG,GAAWphG,GACXi0D,EAAS3vD,QAAQtE,EAAM6gG,GAAShQ,GAChC,MACJ,IAAK,OACD,IACI58B,EAAS3vD,QAAQkH,KAAK6G,MAAMrS,GAAO6gG,GAAShQ,EAG/C,CAFC,MAAOliF,GACLslD,EAAS/uD,OAAO2rF,EAtGb,cAsGgCliF,EACtC,CACD,MACJ,QACIslD,EAAS3vD,QAAQtE,EAAM6gG,GAAShQ,GAE3C,CAyHmBgT,CAAY36E,EAAG2nE,EAAKmR,GAEpB94E,EAAE5kB,QAAQ,KAxOb,YAwO+BusF,GAGhC3nE,EAAEhkB,OAAO2rF,EAAKA,EAAI0S,cAAgBzC,IAG7C,EACGh+F,EAAQ0+F,SACR3Q,EAAI2Q,OAAOsC,WAAahhG,EAAQ0+F,OAAOsC,WACvCjT,EAAI2Q,OAAOuC,YAAcjhG,EAAQ0+F,OAAOuC,YACxClT,EAAI2Q,OAAOwC,QAAUlhG,EAAQ0+F,OAAOwC,SAEpClhG,EAAQmhG,UACR,IAAK,IAAIlgC,KAASjhE,EAAQmhG,UACtBpT,EAAI9sB,GAASjhE,EAAQmhG,UAAUlgC,GAMvC,IAAK,IAAIjlE,IAHL,gBAAkBgE,EAAQqJ,eAC1B0kF,EAAI1kF,aAAerJ,EAAQqJ,cAEd7C,EACT5F,OAAOgK,UAAU6X,eAAephB,KAAKmF,EAASxK,KAASi1D,EAAAA,EAAAA,IAAUzqD,EAAQxK,KACzE+xF,EAAIqT,iBAAiBplG,EAAMwK,EAAQxK,IAU3C,OAPIgE,EAAQqhG,YACRrhG,EAAQqhG,WAAWtT,GAEvBA,EAAIuT,KAAKzC,GACTz4F,EAAOirD,MAAQ,WACX08B,EAAI18B,OACP,EACMjrD,CACV,IC7RD,MC4HA,GA7GsB,SAASm7F,EAAgB97F,EAAKsxF,EAAcyK,GAC9DA,EAAQA,GAAS,GACjBzK,EAAeA,GAAgB,CAAC,EAChC,IAAI0K,EAAa,SAASzlG,EAAMwE,GAC5B,MAAO,CACHxE,KAAMA,EACNwE,KAAMA,EAEb,EACGoR,EAAO,SAAS8vF,GAChB,IACIC,EACAC,EACAC,EACAC,EACAC,EALA37E,EAAI,IAAInG,GAAAA,GAMR+hF,EAAmB,SAAS//F,GAC5B,IAAIyB,EAAUqzF,EAAa5F,aACvBztF,GACAA,EAAQzB,GAEZF,GAAYE,GACZmkB,EAAEhkB,OAAOH,EACZ,EAED,SAASggG,EAAc99E,GACnB,OAAQA,EAAKnoB,MACT,IAAK,SAED,OADA+lG,EAAkB,CAAC59E,EAAK3jB,OACjB,EACX,IAAK,SACD,IAAKuhG,EACD,MAAM7/E,GAAAA,MAAa,SAGvB,OADA6/E,EAAgB/+F,KAAKmhB,EAAK3jB,OACnB,EAEf,OAAO,CACV,CACD,IACImhG,EAAkB5K,EAAamL,SAC1BzwC,EAAAA,EAAAA,IAAWkwC,KACZA,EAAkBQ,GAAcR,IAEpCC,EAAWD,EAAgB5K,GAC3B8K,EAAa,GAAGhvF,OAAO2uF,GAAO3uF,OAAO6uF,GACrC,IAAIU,EAAWR,EAASQ,SAIxB,IAHIA,GACAA,EAASP,GAENA,EAAWt+F,QAAQ,CAEtB,IAAK0+F,EADLH,EAAeD,EAAW,IACQ,CAC9B,GAAIE,EAAiB,CACjBF,EAAWruB,QAAQiuB,EAAW,YAAa,CAACM,KAC5CA,EAAkB,KAClB,QACH,CACD,GAAI,cAAgB11F,OAAOy1F,EAAa9lG,SAC/B4lG,EAASE,EAAa9lG,QAAS,IAAU4lG,EAASE,EAAa9lG,MAAM2e,MAAMinF,EAAUE,EAAathG,OACnG,KAGX,CACDqhG,EAAW/mE,OACd,EAAE,WACC,IAAI5oB,EAAO2vF,EAAW,GAClBQ,EAAgB,GAChBnwF,GAAQ,cAAgBA,EAAKlW,OAC7B6lG,EAAW/mE,SACX20B,EAAAA,EAAAA,IAAKv9C,EAAK1R,KAAK,IAAK,WAChB6hG,EAAcr/F,KAAKy+F,EAAWY,EAAc9+F,OAAS,SAAW,SAAUX,MAC7E,KAELi/F,EAAaQ,EAAcxvF,OAAOgvF,EACrC,CAVE,GAWHD,EAAShwF,KAAKnM,GAAK+rD,MAAM,SAASprD,EAAQ0B,GACtC,GAAK+5F,EAAWt+F,OAET,CACH,IAAI++F,EAAcxL,GAAe1wF,EAAQ,CACrC+qF,aAAc4F,EAAa5F,gBAE/B1hC,EAAAA,EAAAA,IAAKoyC,GAAa,WACdS,EAAcA,EAAY1/F,KAAK5G,MAAM2e,MAAM2nF,EAAa1/F,KAAKpC,KAChE,IACD8hG,EAAY9wC,KAAKprC,EAAE5kB,SAAS0wD,KAAK9rC,EAAEhkB,OACtC,MATGgkB,EAAE5kB,QAAQ4E,EAAQ0B,EAUzB,IAAGoqD,KAAK8vC,EAGZ,CAFC,MAAOrxF,GACLqxF,EAAiBrxF,EACpB,CACD,OAAOyV,EAAElG,SACZ,EACG23E,EAAQ,CAAC,EAab,OAZApoC,EAAAA,EAAAA,IAAK,CAAC,SAAU,SAAU,SAAU,QAAS,SAAU,YAAa,WAChE,IAAIzzD,EAAOqQ,OAAOzJ,MAClBi1F,EAAM77F,GAAQ,WACV,OAAOulG,EAAgB97F,EAAKsxF,EAAcyK,EAAM3uF,OAAO4uF,EAAWzlG,EAAM0e,YAC3E,CACJ,KACD+0C,EAAAA,EAAAA,IAAK,CAAC,QAAS,MAAO,MAAO,MAAO,MAAO,YAAa,cAAe,WACnE,IAAIzzD,EAAOqQ,OAAOzJ,MAClBi1F,EAAM77F,GAAQ,WACV,OAAO4V,EAAKvQ,KAAKuB,KAAM6+F,EAAWzlG,EAAM0e,WAC3C,CACJ,IACMm9E,CACV,ECzHU0K,GAAY,CACnBt1F,MAAO6pF,GACP0L,OAAQjB,ICGZ,GAJY,WACR,IAAI/hG,EAAOiI,MAAMC,QAAQgT,UAAU,IAAM,QAAU,SACnD,OAAO6nF,GAAU/iG,GAAMmb,MAAM/X,KAAM8X,UACtC,ECUG+nF,GAAa9J,GAAAA,QAAc,CAC3BhzC,KAAM,SAAS3lD,GAEPA,EADAyH,MAAMC,QAAQ1H,GACJ,CACN9C,KAAM8C,GAGAA,GAAW,CAAC,EAE1B4C,KAAKmiD,SAAS/kD,GACd,IAAI0iG,EAAe1iG,EAAQ9C,KAC3B,GAAIwlG,IAAiBj7F,MAAMC,QAAQg7F,GAC/B,MAAMxgF,GAAAA,MAAa,SAEvBtf,KAAK+/F,OAASD,GAAgB,EACjC,EACDtJ,YAAa,WACT,OAAOwJ,GAAMhgG,KAAK+/F,OAAQ,CACtBxR,aAAcvuF,KAAKwuF,eAE1B,EACDsI,WAAY,SAASx0F,GACjB,IAAInB,EAAQ0tF,GAAW7uF,KAAMA,KAAK+/F,OAAQz9F,GAC1C,OAAK,IAAMnB,EACAkrF,GAAgB/sE,GAAAA,MAAa,UAEjC8sE,GAAepsF,KAAK+/F,OAAO5+F,GACrC,EACD41F,YAAa,SAASphE,GAClB,OAAOxtB,GAAOnI,KAAMA,KAAK+/F,OAAQpqE,EACpC,EACD0hE,UAAW,SAASz/C,GAChB43C,GAAW,CACPd,QAAS1uF,KACT1F,KAAM0F,KAAK+/F,OACXnoD,QAASA,GAEhB,EACDs/C,YAAa,SAAS50F,EAAKqzB,GACvB,OAAOqW,GAAOhsC,KAAMA,KAAK+/F,OAAQz9F,EAAKqzB,EACzC,EACD2hE,YAAa,SAASh1F,GAClB,OAAO5E,GAAOsC,KAAMA,KAAK+/F,OAAQz9F,EACpC,EACD6kC,MAAO,WACHnnC,KAAKi2E,gBAAgB2B,UAAU,aAC/B53E,KAAK+/F,OAAS,GACd//F,KAAKi2E,gBAAgB2B,UAAU,WAClC,GACF,SACH,MChEIxyD,GAAY,CAAC,SAkBN66E,GAAiB,WACjBC,GAAY,SAAA3xC,GAAQ,MAAI,YAAcA,EAAS7lB,OAA3B,EACpBy3D,GAA4C,SAAAC,GACnD,OAAQA,EAAkBz/F,QACtB,KAAK,EACD,OACJ,KAAK,EACD,OAAOy/F,EAAkB,GAEjC,MAAO,GAAGr7F,MAAMtG,KAAK2hG,EACxB,EACGC,GAAW,SAAC9K,EAAO+K,EAAOpP,GAAf,OAA0BntF,EAAAA,EAAAA,IAAIwxF,GAAO,SAAA3wF,GAChD,IAAI27F,GAAW94E,EAAAA,GAAAA,GAA8B7iB,EAAMwgB,IACnD,OAAOrM,EAAAA,EAAAA,GAAS,CAAC,EAAGwnF,EAAU,CAC1Br6C,MAAOs6C,GAAa57F,EAAKshD,MAAOo6C,EAAQ,EAAGpP,IAElD,GALc,EAMXsP,GAAe,SAACt6C,EAAOo6C,EAAOpP,GAC9B,OAAKrsF,MAAMC,QAAQohD,GAGZo6C,EAAQD,GAASn6C,EAAOo6C,EAAOpP,IAAUntF,EAAAA,EAAAA,IAAImiD,EAAOgrC,GAFhDhrC,CAGd,EAKUu6C,GAAsB,SAACnmG,EAAM4K,GACpC,IAAIw7F,EAQJ,OAPI,QAAUA,EAAQpmG,SAAS,IAAWomG,GAASA,EAAMpmG,OACrD4K,EAAQ5K,EACRA,EAAOA,EAAKA,MAEXuK,MAAMC,QAAQxK,KACfA,EAAO,CAACA,IAEL,CACHA,KAAMA,EACN4K,MAAOA,EAEd,EAcGy7F,GAA2B,SAAC99F,EAAK+9F,GAAN,OAA+B,IAAIjH,GAAY,CAC1EtD,KAAM,kBAAMwK,GAAAA,YAAsB,CAC9Bh+F,IAAKA,EACLy5F,SAAU,QAFR,EAINzC,SAAU,OAAS+G,QAAwB,IAAWA,OAAuB,EAASA,EAAqBE,iBALhF,EAOpBC,GAA6B,SAAC3jG,EAASwjG,GAC9C,IAAIrI,EA6BJ,MA5BI,kBAAoBn7F,IACpBA,EAAU,CACN4jG,UAAU,EACVzI,MAAOoI,GAAyBvjG,EAASwjG,UAG7C,IAAWxjG,IACXA,EAAU,SASV,KANAA,EADAyH,MAAMC,QAAQ1H,IAAYA,aAAmB24F,GACnC,CACNwC,MAAOn7F,IAGDqoD,EAAAA,GAAAA,GAAO,CAAC,EAAGroD,IAEFm7F,QACnBn7F,EAAQm7F,MAAQ,IAEpBA,EAAQn7F,EAAQm7F,MACZ,SAAUn7F,EACVm7F,EA3C4B,SAAAn7F,GAChC,IAAI6jG,EAAc,CAAC,EAKnB,OAJAp0C,EAAAA,EAAAA,IAAK,CAAC,mBAAoB,MAAO,OAAQ,WAAY,eAAgB,QAAS,SAAU,aAAc,SAAU,SAAU,WAAY,WAClIo0C,EAAYjhG,MAAQ5C,EAAQ4C,aACrB5C,EAAQ4C,KAClB,IACM,IAAI25F,GAAYsH,EAC1B,CAoCeC,CAA8B9jG,GAC/ByH,MAAMC,QAAQyzF,GACrBA,EAAQ,IAAIsH,GAAWtH,IAChBnxD,EAAAA,EAAAA,IAAcmxD,KACrBA,EAvCoB,SAAA0I,GACxB,IAAI1J,EAAQ0J,EAAY57F,KAExB,cADO47F,EAAY57F,KACZ0wF,GAAAA,OAAawB,EAAO0J,EAC9B,CAmCeE,EAAsB17C,EAAAA,GAAAA,GAAO,CAAC,EAAG8yC,KAE7Cn7F,EAAQm7F,MAAQA,EACTn7F,CACV,EC7GoBgkG,GAAAA,WACjB,cAAc,eACVphG,KAAKqhG,UAAY,EACjBrhG,KAAKshG,WAAa,CAAC,CACtB,mCACD,SAAI/yC,GAGA,OAFAvuD,KAAKqhG,WACLrhG,KAAKshG,WAAWthG,KAAKqhG,UAAY9yC,EAC1BvuD,KAAKqhG,QACf,uBACD,SAAOE,GACH,cAAcvhG,KAAKshG,WAAWC,EACjC,uBACD,SAAOA,GACH,OAAIA,KAAevhG,KAAKshG,aACpBthG,KAAKshG,WAAWC,GAAa/hG,OAAOygG,KAC7B,EAGd,0BACD,WACI,KAAOjgG,KAAKqhG,UAAY,GACpBrhG,KAAKghD,OAAOhhD,KAAKqhG,UACjBrhG,KAAKqhG,UAEZ,OAzBgBD,GC6CVI,GAAar1C,GAAAA,EAAAA,QAAc,CAClCpJ,KADkC,SAC7B3lD,GAAS,IACNqkG,EADM,OASV,GAPArkG,EAAU2jG,GAA2B3jG,GACrC4C,KAAKi2E,gBAAkB,IAAIrD,GAAe5yE,KAAM,CAC5CiuD,cAAc,IAElBjuD,KAAK0hG,OAAStkG,EAAQm7F,MACtBv4F,KAAK2hG,aAAe,EACC,IAAMvkG,EAAQwkG,uBACf,CAChB,IACIC,EACAC,EACAC,EAAwBzV,IAAgB,SAAA10C,GACxCiqD,EAAajjG,UACUywD,GAAAA,GAAAA,WAAA,WAAQyyC,IACdlzC,MAAK,kBAAM,EAAKozC,QAAQpqD,EAAnB,IACtBkqD,OAAkB,EAClBD,OAAe,CAClB,QATuB,IAAWzkG,EAAQwkG,uBAAyB,kBAAM,EAAI,EAAKD,YAAf,EAA8BvkG,EAAQwkG,wBAU1G5hG,KAAKiiG,eAAiB,SAAArkG,GAClB,EAAKskG,sBAAwBH,EAAsBnkG,EAAKg6C,SACnDiqD,IACDA,EAAe,IAAIxkF,GAAAA,IAEvBykF,EAAkBlkG,EAAKw5F,QACvBx5F,EAAKw5F,QAAQh3F,KAAKyhG,EAAavkF,UAClC,EACDtd,KAAK0hG,OAAO30D,GAAG,wBAAyB/sC,KAAKiiG,eAChD,MACGjiG,KAAKiiG,eAAiB,SAAArqD,GAAO,OAAI,EAAKoqD,QAAQpqD,EAAjB,EAC7B53C,KAAK0hG,OAAO30D,GAAG,OAAQ/sC,KAAKiiG,gBAEhCjiG,KAAKmiG,kBAAoBniG,KAAKoiG,oBAAoBhlG,GAClD4C,KAAKqiG,SAAWjlG,EAAQ2G,IACxB/D,KAAKsiG,iBAAmBllG,EAAQ+gG,YAChCn+F,KAAKuiG,gBAAa,IAAWnlG,EAAQolG,UAAYplG,EAAQolG,UAAY,EACrExiG,KAAKyiG,eAAY,IAAWrlG,EAAQslG,SAAWtlG,EAAQslG,SAAW,GAClE1iG,KAAK2iG,cAAgB,EACrB3iG,KAAK4iG,WAAa5iG,KAAK6iG,mBACvB7iG,KAAK8iG,aAAe,gBAAiB1lG,EAAUA,EAAQq2F,YAAc,KACrEzzF,KAAK+iG,iBAAmB3lG,EAAQ4lG,iBAAmB,WACnDhjG,KAAKijG,YAAc7lG,EAAQ8lG,WAC3BljG,KAAKmjG,UAAY/lG,EAAQ4jG,SACzBhhG,KAAKojG,eAAiB,QAAU3B,EAAwBrkG,EAAQimG,qBAAkB,IAAW5B,GAAwBA,GACrH50C,EAAAA,EAAAA,IAAK,CAAC,YAAa,cAAe,mBAAoB,wBAAyB,gCAAgC,SAAC/tD,EAAG0wC,GAC3GA,KAAcpyC,GACd,EAAK2vC,GAAGyC,EAAWxqC,OAAO,EAAG,GAAGwP,cAAgBg7B,EAAWxqC,OAAO,GAAI5H,EAAQoyC,GAErF,IACDxvC,KAAKsjG,kBAAoB,IAAIlC,GAC7BphG,KAAKujG,OACR,EACDA,MAtDkC,WAuD9BvjG,KAAKwjG,OAAS,GACdxjG,KAAKyjG,UAAY,CAAC,EAClBzjG,KAAK0jG,aAAe,EACpB1jG,KAAK2jG,WAAY,GACZt1C,EAAAA,EAAAA,IAAUruD,KAAKmjG,aAChBnjG,KAAKmjG,WAAanjG,KAAKu1F,SAE3Bv1F,KAAK4jG,aAAe5jG,KAAKmjG,SAC5B,EACD52D,QAhEkC,WAiE9B,IAAIs3D,EACJ7jG,KAAK0hG,OAAOprD,IAAI,wBAAyBt2C,KAAKiiG,gBAC9CjiG,KAAK0hG,OAAOprD,IAAI,OAAQt2C,KAAKiiG,gBAC7BjiG,KAAKi2E,gBAAgB1pC,UACrBjX,aAAat1B,KAAKkiG,uBAClB,QAAU2B,EAAwB7jG,KAAK8jG,wBAAqB,IAAWD,GAAiCA,EAAsBp1C,QAC9HzuD,KAAKsjG,kBAAkBS,mBAChB/jG,KAAK0hG,cACL1hG,KAAKwjG,cACLxjG,KAAK8jG,iBACZ9jG,KAAKgkG,WAAY,CACpB,EACD5B,oBA7EkC,SA6EdhlG,GAChB,IAAIoG,EAAS,CAAC,EACV2oF,EAAQ,CAAC,OAAQ,SAAU,aAAc,SAAU,QAAS,qBAC5D8X,EAAcjkG,KAAK0hG,OAAOxL,qBAO9B,OANI+N,IACA9X,EAAQA,EAAMl8E,OAAOg0F,KAEzBp3C,EAAAA,EAAAA,IAAKs/B,GAAQ,WACT3oF,EAAOxD,MAAQ5C,EAAQ4C,KAC1B,IACMwD,CACV,EACD0gG,YAzFkC,WA0F9B,OAAOlkG,KAAKmiG,iBACf,EACDj8C,MA5FkC,WA6F9B,OAAOlmD,KAAKwjG,MACf,EACDhB,UA/FkC,SA+FxB2B,GACN,KAAKzrC,EAAAA,EAAAA,IAAUyrC,GACX,OAAOnkG,KAAKuiG,WAEhBviG,KAAKuiG,WAAa4B,EAClBnkG,KAAK4jG,aAAe5jG,KAAKmjG,SAC5B,EACDnC,SAtGkC,SAsGzB9iG,GACL,KAAKs9D,EAAAA,EAAAA,IAAUt9D,GACX,OAAO8B,KAAKmjG,UAEZnjG,KAAKmjG,YAAcjlG,IACnB8B,KAAKmjG,UAAYjlG,EACjB8B,KAAKwiG,UAAU,GAEtB,EACDE,SA/GkC,SA+GzBxkG,GACL,KAAKw6D,EAAAA,EAAAA,IAAUx6D,GACX,OAAO8B,KAAKyiG,UAEhBziG,KAAKyiG,UAAYvkG,CACpB,EACDkmG,WArHkC,WAsH9B,OAAOpkG,KAAK4jG,WACf,EACDS,gCAxHkC,SAwHF70D,GAAY,WACxC,OAAO,SAAA5xC,GACH,IAAI0mG,EAAiBnE,GAA0CviG,GAC/D,QAAI,IAAW0mG,EACX,OAAO,EAAKnC,kBAAkB3yD,GAElC,EAAK2yD,kBAAkB3yD,GAAc80D,CACxC,CACJ,EACDlrE,KAjIkC,WAkI9B,IAAK,IAAI0zB,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,GAE3B,OAAOrV,KAAKqkG,gCAAgC,OAArCrkG,CAA6CpC,EACvD,EACD48B,OAvIkC,WAwI9B,IAAI+pE,EAAYpE,GAA0CroF,WAC1D,QAAI,IAAWysF,EACX,OAAOvkG,KAAKmiG,kBAAkB3nE,OAElCx6B,KAAKmiG,kBAAkB3nE,OAAS+pE,EAChCvkG,KAAKwiG,UAAU,EAClB,EACDjN,MA/IkC,WAgJ9B,IAAK,IAAI/rB,EAAQ1xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM2kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF7rE,EAAK6rE,GAAS3xD,UAAU2xD,GAE5B,OAAOzpE,KAAKqkG,gCAAgC,QAArCrkG,CAA8CpC,EACxD,EACDiyE,OArJkC,WAsJ9B,IAAK,IAAInG,EAAQ5xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM6kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF/rE,EAAK+rE,GAAS7xD,UAAU6xD,GAE5B,OAAO3pE,KAAKqkG,gCAAgC,SAArCrkG,CAA+CpC,EACzD,EACD87F,kBA3JkC,SA2JhBx7F,GACd,KAAKs9D,EAAAA,EAAAA,IAAUt9D,GACX,OAAO8B,KAAKmiG,kBAAkBzI,kBAElC15F,KAAKmiG,kBAAkBzI,kBAAoBx7F,CAC9C,EACDu1F,YAjKkC,SAiKtBv1F,GACR,GAAI4Z,UAAUnX,OAAS,EACnB,OAAOX,KAAK8iG,aAEhB9iG,KAAK8iG,aAAe5kG,EACpB8B,KAAKwiG,UAAU,EAClB,EACDQ,gBAxKkC,SAwKlB5P,GACZ,KAAK1iC,EAAAA,EAAAA,IAAS0iC,GACV,OAAOpzF,KAAK+iG,iBAEhB/iG,KAAK+iG,iBAAmB3P,EACxBpzF,KAAKwiG,UAAU,EAClB,EACDU,WA/KkC,SA+KvBnvC,GACP,IAAIywC,EAAO1sF,UAAUnX,OACrB,GAAI,IAAM6jG,EACN,OAAOxkG,KAAKijG,YAEZuB,EAAO,IACPzwC,EAAO,GAAGhvD,MAAMtG,KAAKqZ,YAEzB9X,KAAKijG,YAAclvC,EACnB/zD,KAAKwiG,UAAU,EAClB,EACDjK,MA1LkC,WA2L9B,OAAOv4F,KAAK0hG,MACf,EACDp/F,IA7LkC,WA8L9B,IAAImiG,EACJ,OAAO,QAAUA,EAAezkG,KAAK0hG,cAAW,IAAW+C,OAAe,EAASA,EAAaniG,KACnG,EACDm0F,WAjMkC,WAkM9B,OAAOz2F,KAAK0jG,WACf,EACDgB,SApMkC,WAqM9B,OAAO1kG,KAAK2jG,SACf,EACDgB,UAvMkC,WAwM9B,OAAO3kG,KAAK2iG,cAAgB,CAC/B,EACDiC,aA1MkC,WA2M9B5kG,KAAK6kG,oBAAoB,EAC5B,EACDC,WA7MkC,WA8M9B9kG,KAAK6kG,qBAAqB,EAC7B,EACDhC,iBAAkB,kBAAMryF,IAAN,EAClBq0F,oBAjNkC,SAiNdE,GAChB,IAAIC,EAAahlG,KAAK2kG,YACtB3kG,KAAK2iG,eAAiBoC,EACtB,IAAIE,EAAajlG,KAAK2kG,YAClBK,EAAaC,GACbjlG,KAAKi2E,gBAAgB2B,UAAU,iBAAkB,CAACqtB,GAEzD,EACDC,uBAzNkC,SAyNX32C,GAAU,WAC7BvuD,KAAK4kG,eACLr2C,EAAS8H,QAAO,WACZ,EAAKyuC,YACR,GACJ,EACDK,uBA/NkC,SA+NX52C,GACnB,IAAIxnD,EAAQ/G,KACZuuD,EAASe,MAAM,WACX,IAAK,IAAIsa,EAAQ9xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM+kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFjsE,EAAKisE,GAAS/xD,UAAU+xD,GAExBjsE,EAAK,KAAOqiG,IAGhBl5F,EAAMkvE,gBAAgB2B,UAAU,YAAah6E,EAChD,GACJ,EACDwnG,aA3OkC,SA2OrBxnG,GACT,IAAIq2B,EAAO,IAAInxB,KACf9C,KAAKi2E,gBAAgB2B,UAAU,UAAWh6E,GAC1CoC,KAAK2hG,aAAe,IAAI7+F,KAAOmxB,CAClC,EACDoxE,0BAhPkC,SAgPR92C,GAAU,WAChCA,EAASK,MAAK,kBAAM,EAAKw2C,cAAX,GACjB,EACDE,WAnPkC,SAmPvBxuF,EAAUqf,GAAW,WACxB3S,EAAI,IAAInG,GAAAA,GACR/a,EAAMtC,KAAKsC,MACXi2F,EAAQv4F,KAAK0hG,OACbtkG,EAAU4C,KAAKulG,0BA6BnB,OA5BAvlG,KAAKmlG,uBAAuB3hF,GACxB1L,UAAUnX,OAAS,IACnBw1B,EAAYrf,EACZA,EAAWxU,UAERlF,EAAQukE,YACRvkE,EAAQm4F,aACRn4F,EAAQooG,eACRpoG,EAAQolG,iBACRplG,EAAQqoG,cAEP3uF,IAAaxU,GAAOi2F,aAAiBoB,KAAgBpB,EAAMgC,gBACpDhC,EAAM5B,MAAMxgE,EAAW/4B,IAElCA,EAAQ62F,KAAO,EACf72F,EAAQo9B,OAASp9B,EAAQo9B,OAAS,CAACp9B,EAAQo9B,OAAQ,CAAC1jB,EAAUqf,IAAc,CAACrf,EAAUqf,GAChFoiE,EAAMlC,KAAKj5F,KACjBkyD,KAAK9rC,EAAEhkB,QAAQovD,MAAK,SAAAt0D,GACrB,IAAIorG,EAAe7gG,MAAMC,QAAQxK,KAAUA,EAAKqG,SAC3C0tD,EAAAA,EAAAA,IAAU/zD,IAASorG,EACpBliF,EAAEhkB,OAAO,IAAI8f,GAAAA,MAAa,WAErBza,MAAMC,QAAQxK,KACfA,EAAO,CAACA,IAEZkpB,EAAE5kB,QAAQ,EAAK+mG,kBAAkBrrG,GAAM,IAE9C,IACMkpB,EAAElG,SACZ,EACD+4E,KAtRkC,WAsR3B,WACC7yE,EAAI,IAAInG,GAAAA,GACRuoF,EAAW,WACX,IAAI,EAAK5B,WAGJ9D,GAAU18E,GAGf,OAAO,EAAKqiF,eAAeC,EAAetiF,EAC7C,EACDxjB,KAAKklG,uBAAuB1hF,GAC5BxjB,KAAKmlG,uBAAuB3hF,GAC5BxjB,KAAKqlG,0BAA0B7hF,GAC/B,IAAIsiF,EAAgB9lG,KAAK+lG,qBAAqBviF,GAU9C,OATAxjB,KAAKi2E,gBAAgB2B,UAAU,4BAA6B,CAACkuB,IAC7D9lG,KAAK4iG,WAAW70D,KAAI,WAMhB,MALI,kBAAoB+3D,EAAc94E,MAClC,EAAK82E,kBAAmBx1C,EAAAA,GAAAA,cAAas3C,EAAUE,EAAc94E,OAE7D44E,IAEGpiF,EAAElG,SACZ,IACMkG,EAAElG,QAAQ,CACbikF,YAAauE,EAAcvE,aAElC,EACDS,QAlTkC,SAkT1BpqD,GAAS,WACb,GAAI53C,KAAKojG,eACLpjG,KAAKq2F,WACF,CACH,IAAI2P,EAAe,CACfpuD,QAASA,GAEb53C,KAAKi2E,gBAAgB2B,UAAU,WAAY,CAACouB,IAC5C,IAAIzQ,EAAQv1F,KAAKu1F,QACbrvC,EAAQlmD,KAAKkmD,QACb+/C,EAAa,EACbC,EAAoBlmG,KAAKghG,YAAczL,EAAQ39C,EAAQpd,QAAO,SAAA51B,GAAI,MAAI,WAAaA,EAAKS,IAAtB,IAA8BuyC,EAChG29C,IACA0Q,EAAaphG,MAAMC,QAAQywF,GAASA,EAAM50F,OAAS,GAEnDX,KAAKqiG,UACL6D,EAAkBxlG,SAAQ,SAAAkE,GAClB,WAAaA,EAAKS,OAClBT,EAAKtK,KAAO,EAAK+nG,SAASz9F,EAAKtK,MAEtC,IAED0rG,EAAaG,qBACbD,EAAoBF,EAAaG,mBAAmBD,IAExD1W,GAAW,CACPd,QAAS1uF,KAAKu4F,QACdj+F,KAAM4rD,EACNtO,QAASsuD,EACTvX,WAAYsX,EACZxW,gBAAgB,IAEpBzvF,KAAKolG,aAAa,CAAC,CACfxtD,QAASA,IAEhB,CACJ,EACDmuD,qBAvVkC,SAuVbx3C,GAAU,WACvBgzC,EAAcvhG,KAAKsjG,kBAAkBv1D,IAAIwgB,GACzC63C,EAAmBpmG,KAAKulG,0BAK5B,OAJIvlG,KAAK0hG,UAAW9lC,EAAAA,EAAAA,IAAc,OAASwqC,QAAoB,IAAWA,OAAmB,EAASA,EAAiB/U,cACnHrxF,KAAK0hG,OAAOjP,aAAc15E,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK0hG,OAAOjP,YAAa2T,EAAiB/U,aAErF9iC,EAAS8H,QAAO,kBAAM,EAAKitC,kBAAkB5lG,OAAO6jG,EAApC,IACT,CACHA,YAAaA,EACb6E,iBAAkBA,EAEzB,EACDC,OAnWkC,WAuW9B,OAHYrmG,KAAKu4F,QACXtC,cACNj2F,KAAKujG,QACEvjG,KAAKq2F,MACf,EACDr1C,OAzWkC,SAyW3BugD,GACH,OAAOvhG,KAAKsjG,kBAAkBtiD,OAAOugD,EACxC,EACDwC,UA5WkC,WA6W9B,OAAO/jG,KAAKsjG,kBAAkBS,WACjC,EACDuC,kBA/WkC,SA+WhBF,GACVpmG,KAAKgkG,YAGLhkG,KAAKu4F,QAAQvC,kBACbh2F,KAAKumG,iBAAiBH,IAEtBA,EAAiBpD,gBAAkBhjG,KAAK+iG,iBACxCqD,EAAiB3S,YAAczzF,KAAK8iG,aACpCsD,EAAiBlD,WAAaljG,KAAKijG,aAE1C,EACDsC,wBA3XkC,WA4X9B,IAAI/hG,GAASiiD,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKmiG,mBAS7B,OARAniG,KAAKsmG,kBAAkB9iG,GACnBxD,KAAKmjG,WACDnjG,KAAKyiG,YACLj/F,EAAOm+D,KAAO3hE,KAAKuiG,WAAaviG,KAAKyiG,UACrCj/F,EAAOywF,KAAOj0F,KAAKyiG,WAG3Bj/F,EAAO41F,SAAWp5F,KAAKyjG,UAChBjgG,CACV,EACD+iG,iBAvYkC,SAuYjBH,GACb,IAAIloG,EAAQ8B,KAAK8iG,aACb1P,EAAKpzF,KAAK+iG,iBACV7yF,EAAWlQ,KAAKijG,YAChBuD,EAAe,GACdtoG,IAGAgS,IACDA,EAAW,QAEVrL,MAAMC,QAAQoL,KACfA,EAAW,CAACA,KAEhB28C,EAAAA,EAAAA,IAAK38C,GAAW,SAASvH,EAAG/D,GACpB4hG,EAAa7lG,QACb6lG,EAAapmG,KAAK,MAEtBomG,EAAapmG,KAAK,CAACwE,EAAMwuF,EAAIl1F,GAChC,IACGkoG,EAAiB5rE,OACjB4rE,EAAiB5rE,OAAS,CAACgsE,EAAcJ,EAAiB5rE,QAE1D4rE,EAAiB5rE,OAASgsE,EAEjC,EACDX,eAjakC,SAianB3B,EAAahM,GAAiB,WACrCuO,EAAgB,SAACnsG,EAAM4K,GACvB,IAAI,EAAK8+F,WAGJ9D,GAAUhI,GAAf,CAGA,IAAIwO,GAAajhD,EAAAA,GAAAA,GAAOg7C,GAAoBnmG,EAAM4K,GAAQg/F,GAC1D,EAAKjuB,gBAAgB2B,UAAU,sBAAuB,CAAC8uB,KACvDr3C,EAAAA,GAAAA,IAAKq3C,EAAWpsG,MAAMs0D,MAAK,SAAAt0D,GACvBosG,EAAWpsG,KAAOA,EAClB,EAAKqsG,wBAAwBD,EAAYxO,EAC5C,IAAE5oC,KAAK4oC,EAAgB14F,OANvB,CAOJ,EACD,OAAI0kG,EAAY5pG,MACJ,IAAI+iB,GAAAA,IAAUze,QAAQslG,EAAY5pG,MAAMs0D,KAAK63C,GAElDzmG,KAAKu4F,QAAQlC,KAAK6N,EAAYkC,kBAAkBx3C,KAAK63C,GAAen3C,KAAK4oC,EAAgB14F,OACnG,EACDmnG,wBArbkC,SAqbVD,EAAYxO,GAAiB,WAC7C59F,EAAOosG,EAAWpsG,KAClB4K,EAAQwhG,EAAWxhG,MACnBkhG,EAAmBM,EAAWN,iBAC9BQ,EAAyB,WAGzB,OAFA,EAAKjD,WAAY,EACjB,EAAKD,YAAcvyC,SAASjsD,EAAMuxF,YAAcvxF,EAAMuxF,YAAc,EAC7DyB,EAAgBt5F,QAAQtE,EAAM4K,EACxC,EACGlF,KAAKgkG,YAGT1pG,EAAO0F,KAAK6mG,0BAA0B7mG,KAAK2lG,kBAAkBrrG,KACxD+lB,EAAAA,EAAAA,IAASnb,KACVA,EAAQ,CAAC,GAEblF,KAAKwjG,OAASlpG,IACTA,EAAKqG,SAAWX,KAAKmjG,WAAanjG,KAAKyiG,WAAanoG,EAAKqG,OAASX,KAAKyiG,aACxEziG,KAAK4jG,aAAc,GAEnBwC,EAAiB1M,oBAAsBvoC,SAASjsD,EAAMuxF,YAElD,EAAK8B,QAAQ9B,WAAW2P,GAAkBx3C,MAAM,SAAS/iD,GACrD3G,EAAMuxF,WAAa5qF,EACnB+6F,GACH,IAAGt3C,KAAK4oC,EAAgB14F,QAG7BonG,IAEP,EACDjB,kBApdkC,SAodhBrrG,GACd,OAAI0F,KAAKqiG,SF1dsB,SAACn8C,EAAOgrC,EAAQgE,GACnD,IAAIoL,EAAQpL,EAAYrK,GAAqBqK,GAAWv0F,OAAS,EACjE,OAAO6/F,GAAat6C,EAAOo6C,EAAOpP,EACrC,CEwdkB4V,CAA0BxsG,EAAM0F,KAAKqiG,SAAUriG,KAAKu1F,SAExDj7F,CACV,EACDusG,0BA1dkC,SA0dRvsG,GACtB,OAAI0F,KAAKsiG,iBACEtiG,KAAKsiG,iBAAiBhoG,GAE1BA,CACV,EACDyyC,GAhekC,SAge/BvuC,EAAWy0E,GAEV,OADAjzE,KAAKi2E,gBAAgBlpC,GAAGvuC,EAAWy0E,GAC5BjzE,IACV,EACDs2C,IApekC,SAoe9B93C,EAAWy0E,GAEX,OADAjzE,KAAKi2E,gBAAgB3/B,IAAI93C,EAAWy0E,GAC7BjzE,IACV,ICjhBD+mG,GAAqB,CACrB1Q,KAAM,kBAAMh5E,EAAAA,GAAAA,MAAW7d,QAAjB,EACN8lG,WAAY,kBAAMjoF,EAAAA,GAAAA,MAAW7d,QAAjB,EACZwnG,cAAe,kBAAM3pF,EAAAA,GAAAA,MAAW7d,QAAjB,EACfynG,aAAc,kBAAM5pF,EAAAA,GAAAA,MAAW7d,QAAjB,EACd0kG,YAAapiF,GAAAA,KACbs3E,SAAUt3E,GAAAA,KACVk/B,OAAQl/B,GAAAA,KACRiiF,UAAWjiF,GAAAA,KACX0Y,OAAQ1Y,GAAAA,KACRolF,gBAAiBplF,GAAAA,KACjByzE,MAAOzzE,GAAAA,KACPk/E,SAAUl/E,GAAAA,KACV4gF,SAAU5gF,GAAAA,KACV0gF,UAAW1gF,GAAAA,KACXqlF,yBAA0BrlF,GAAAA,KAC1B20E,WAAY30E,GAAAA,KACZsiF,WAAYtiF,GAAAA,KACZ6iF,UAAW7iF,GAAAA,KACX4iF,SAAU5iF,GAAAA,KACV2xE,YAAa3xE,GAAAA,KACbkhF,gBAAiBlhF,GAAAA,KACjBohF,WAAYphF,GAAAA,KACZ+tD,OAAQ/tD,GAAAA,KACRxf,IAAKwf,GAAAA,KACLmuE,MAAOnuE,GAAAA,KACPy2E,MAAOz2E,GAAAA,KACPokC,MAAOpkC,GAAAA,KACPslF,iBAAkBtlF,GAAAA,KAClBulF,cAAevlF,GAAAA,KACfukF,OAAQvkF,GAAAA,KACRirB,GAAIjrB,GAAAA,KACJw0B,IAAKx0B,GAAAA,MAEHwlF,GAAAA,WACF,WAAYC,GACR,IADoB,gBACfA,EACD,OAAOR,GAEX/mG,KAAKwnG,YAAcD,CACtB,oCACD,WACI,OAAOvnG,KAAKwnG,YAAYnR,MAC3B,2BACD,SAAWv/E,EAAUqf,GAKjB,OAJIre,UAAUnX,OAAS,IACnBw1B,EAAYrf,EACZA,EAAW9W,KAAKsC,OAEbtC,KAAKwnG,YAAYlC,WAAWxuF,EAAUqf,EAChD,8BACD,SAAc+tE,GACV,OAAOlkG,KAAKu4F,QAAQlC,KAAK6N,EAC5B,6BACD,WAEI,OADAlkG,KAAKwiG,UAAU,EAAIxiG,KAAKwiG,aACjBxiG,KAAKq2F,MACf,4BACD,WACI,OAAOr2F,KAAKwnG,YAAYtD,aAC3B,yBACD,WACI,OAAOlkG,KAAKwnG,YAAY/D,SAC3B,uBACD,SAAOlC,GACHvhG,KAAKwnG,YAAYxmD,OAAOugD,EAC3B,0BACD,WACIvhG,KAAKwnG,YAAYzD,WACpB,uBACD,SAAOvpE,GACH,OAAOx6B,KAAKwnG,YAAYhtE,OAAOA,EAClC,gCACD,SAAgB4rE,GACZpmG,KAAKwnG,YAAYjB,iBAAiBH,EACrC,sBACD,SAAM7Q,GACF,OAAOv1F,KAAKwnG,YAAYjS,MAAMA,EACjC,yBACD,WACI,OAAOv1F,KAAKwnG,YAAYxG,UAC3B,yBACD,WACI,OAAOhhG,KAAKwnG,YAAY/E,SAC3B,0BACD,SAAUD,GACN,OAAOxiG,KAAKwnG,YAAYhF,UAAUA,EACrC,yCACD,WACQxiG,KAAKwiG,cACLxiG,KAAKwiG,UAAU,GACfxiG,KAAKq2F,OAEZ,2BACD,WACI,OAAOr2F,KAAKwnG,YAAY/Q,YAC3B,2BACD,WACI,OAAOz2F,KAAKwnG,YAAYpD,eAAiBpkG,KAAKwnG,YAAY/E,SAC7D,0BACD,WACI,OAAOziG,KAAKwnG,YAAY7C,WAC3B,yBACD,WACI,OAAO3kG,KAAKwnG,YAAY9C,UAC3B,4BACD,SAAYxmG,GACR,OAAK4Z,UAAUnX,OAGRX,KAAKwnG,YAAY/T,YAAYv1F,GAFzB8B,KAAKwnG,YAAY/T,aAG/B,gCACD,SAAgBgU,GACZ,OAAOznG,KAAKwnG,YAAYxE,gBAAgByE,EAC3C,2BACD,SAAW1zC,GACP,OAAKj8C,UAAUnX,OAGRX,KAAKwnG,YAAYtE,WAAWnvC,GAFxB/zD,KAAKwnG,YAAYtE,YAG/B,uBACD,WAAS,MACL,OAAO,EAAAljG,KAAKwnG,aAAY33B,OAAjB,QAA2B/3D,UACrC,oBACD,WACI,OAAO9X,KAAKwnG,YAAYllG,KAC3B,sBACD,SAAMsC,GACF,OAAO5E,KAAKu4F,QAAQtI,MAAMrrF,EAC7B,sBACD,WACI,OAAO5E,KAAKwnG,YAAYjP,OAC3B,sBACD,WACI,OAAOv4F,KAAKwnG,YAAYthD,OAC3B,iCACD,SAAiB5rD,GACb,OAAO0F,KAAKwnG,YAAY7B,kBAAkBrrG,EAC7C,8BACD,WACI,OAAO0F,KAAKwnG,aAAe,IAC9B,uBACD,WACI,OAAOxnG,KAAKwnG,YAAYnB,QAC3B,mBACD,SAAGtlG,EAAOD,GACNd,KAAKwnG,YAAYz6D,GAAGhsC,EAAOD,EAC9B,oBACD,SAAIC,EAAOD,GACPd,KAAKwnG,YAAYlxD,IAAIv1C,EAAOD,EAC/B,OApHCwmG,GAsHN,MCpJII,GAA6B,qBAC7BC,GAA6B,4BAC7BC,GAAgC,8BAChCC,GAAqC,mCACrCC,GAAwC,6BACxCC,GAA8B,+BAC9BC,GAAwB,uBACxBC,GAAkB,CAClBjlD,SAAU,WACNhjD,KAAK+sC,GAAG,YAAa,WACjB/sC,KAAKkoG,oBACR,EAACprG,KAAKkD,MACV,EACDmoG,mBAAoB,WAChBnoG,KAAKooG,kBACLpoG,KAAKqoG,iBACR,EACDD,gBAAiB,WACb,IACIE,EACAC,EAFAC,EAAoBT,MAA+B/nG,KAAOA,KAAA,+BAAsCA,KAAK2sC,OAAO,cAGhH3sC,KAAKkoG,qBACDM,IACIA,aAA6BhH,IAC7BxhG,KAAKyoG,qBAAsB,EAC3BzoG,KAAKwnG,YAAcgB,IAEnBF,EAA0BZ,MAA8B1nG,KAAOA,KAAA,qBAAqC,CAAC,EACrGuoG,EAAiBvoG,KAAK0oG,gBAAkB1oG,KAAK0oG,kBAAoBlH,GACjEgH,EAAoBzH,GAA2ByH,EAAmB,CAC9D1H,gBAAiBgH,MAAyC9nG,MAAQA,KAAA,+BAEtEA,KAAKwnG,YAAc,IAAIe,GAAe9iD,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAG6iD,EAAyBE,KAEhFR,MAAyBhoG,OACzBA,KAAKwnG,YAAcxnG,KAAA,qBAA4BA,KAAKwnG,cAExDxnG,KAAK2oG,yBACL3oG,KAAK4oG,sBAEZ,EACDA,oBAAqB,WACjB,IAAIC,EACAC,EAAiB,QAAUD,EAAe7oG,KAAK2sC,cAAW,IAAWk8D,OAAe,EAASA,EAAapqG,KAAKuB,KAAM,mBACrHunG,EAAavnG,KAAKwnG,YAElBxnG,KAAK+oG,gBADLD,GAGuB,IAAIxB,GAAeC,EAEjD,EACDoB,uBAAwB,WAChBhB,MAA8B3nG,MAC9BA,KAAKgpG,8BAELpB,MAAiC5nG,MACjCA,KAAKipG,iCAELpB,MAAsC7nG,MACtCA,KAAKkpG,sCAETlpG,KAAKmpG,kBACR,EACDA,iBAAkB,WACdnpG,KAAKwnG,YAAYz6D,GAAG,iBAAkB,SAAS43D,GAC3C3kG,KAAKopG,QAAUppG,KAAKopG,QAAQzE,EAC/B,EAAC7nG,KAAKkD,MACV,EACDgpG,4BAA6B,WACzB,IAAIzB,EAAavnG,KAAKwnG,YACtBxnG,KAAKqpG,iCAAmC,SAASpgG,GAC7CjJ,KAAA,0BAAiCunG,EAAWrhD,QAASj9C,EACxD,EAACnM,KAAKkD,MACPunG,EAAWx6D,GAAG,UAAW/sC,KAAKqpG,iCACjC,EACDJ,+BAAgC,WAC5BjpG,KAAKspG,mCAAqCtpG,KAAA,4BAAoClD,KAAKkD,MACnFA,KAAKwnG,YAAYz6D,GAAG,YAAa/sC,KAAKspG,mCACzC,EACDJ,oCAAqC,WACjClpG,KAAKupG,wCAA0CvpG,KAAA,iCAAyClD,KAAKkD,MAC7FA,KAAKwnG,YAAYz6D,GAAG,iBAAkB/sC,KAAKupG,wCAC9C,EACDlB,gBAAiB,WACb,IAAId,EAAavnG,KAAKwnG,YAClBD,IACIA,EAAW7C,WACX1kG,KAAKqpG,kCAAoCrpG,KAAKqpG,mCAE9C9B,EAAWlR,OAGtB,EACDmT,YAAa,SAASlnG,EAAKpE,GAEvB,OADAoE,EAAM,SAAWA,EAAMtC,KAAKwnG,YAAYllG,OAAS,OAASA,EACnDtC,KAAKwnG,YAAYlC,WAAWhjG,EAAKpE,EAC3C,EACD0lG,YAAa,WACT,OAAQ5jG,KAAKwnG,aAAexnG,KAAKwnG,YAAYpD,eAAiBpkG,KAAKwnG,YAAY/E,SAClF,EACDgH,qBAAsB,WAClB,OAAOzpG,KAAKwnG,aAAexnG,KAAKwnG,YAAY7C,WAC/C,EACDuD,mBAAoB,WACZloG,KAAKwnG,cACDxnG,KAAKyoG,4BACEzoG,KAAKyoG,oBACZzoG,KAAKqpG,kCAAoCrpG,KAAKwnG,YAAYlxD,IAAI,UAAWt2C,KAAKqpG,kCAC9ErpG,KAAKspG,oCAAsCtpG,KAAKwnG,YAAYlxD,IAAI,YAAat2C,KAAKspG,oCAClFtpG,KAAKupG,yCAA2CvpG,KAAKwnG,YAAYlxD,IAAI,iBAAkBt2C,KAAKupG,0CAE5FvpG,KAAKwnG,YAAYj7D,iBAEdvsC,KAAKwnG,mBACLxnG,KAAKqpG,wCACLrpG,KAAKspG,0CACLtpG,KAAKupG,wCAEnB,EACDlC,cAAe,WACX,OAAOrnG,KAAKwnG,aAAe,IAC9B,GAEL,MC1HA,SAASkC,GAAYxrG,EAAO2+E,GACxB,IAAI8sB,EAAsBpgG,KAAKkZ,IARhB,GAQkCo6D,GAEjD,OARJ,SAAoB3+E,GAEhB,OADgB0yD,GAAK1yD,GACFqL,KAAKoZ,MAAMpZ,KAAKD,IAAIpL,GAC1C,CAKU0rG,CADiBxtB,GAA0Bl+E,EAAO2+E,IAClB8sB,CAC1C,CACM,SAAShxE,GAAQz6B,EAAO2+E,GAC3B,IAAIgtB,EAAiBhtB,GAAa,EAC9BitB,EAAgBD,EAAiB,EAAIH,GAAW,WAAX,EAAe5xF,WAAa5Z,EACrE,OAAO4rG,EAAcnxE,QAAQkxE,EAChC,CCbD,IAAIE,GAAiB,CACjB3lD,mBAAoB,IACpBD,iBAAkB,KA0BtB,SAAS6lD,GAActoG,GACnB,OAAOA,EAAIpE,WAAW+E,MAAM,IAAIy4D,UAAUruD,KAAK,GAClD,CAMD,SAASw9F,GAAYvoG,GACjB,OAAOA,EAAIE,QAAQ,QAAS,GAC/B,CAED,SAASsoG,GAAyBC,GAC9B,IAAKA,EACD,OAAO,EAEX,IAAItyC,EAASoyC,GAAYE,GACzB,OAAOtyC,EAAOl3D,OAASk3D,EAAOj2D,QAAQ,OAAQ,IAAIjB,MACrD,CAED,SAASypG,GAAsBD,GAC3B,IAAKA,EACD,OAAO,EAEX,IAAItyC,EAASoyC,GAAYE,GACzB,OAAOtyC,EAAOl3D,OAASk3D,EAAOj2D,QAAQ,OAAQ,IAAIjB,MACrD,CAED,SAAS0pG,GAAqBC,EAAWC,EAAeC,GACpD,IAAKF,EACD,MAAO,GAKX,IAHIA,EAAU3pG,OAAS6pG,IACnBF,EAAYA,EAAUtlG,OAAO,EAAGwlG,IAE7BF,EAAU3pG,OAAS4pG,GAAiB,MAAQD,EAAUvlG,OAAO,IAChEulG,EAAYA,EAAUtlG,OAAO,EAAGslG,EAAU3pG,OAAS,GAEvD,KAAO2pG,EAAU3pG,OAAS4pG,GACtBD,GAAa,IAEjB,OAAOA,CACV,CAsBD,SAASG,GAAiB5yC,EAAQ6yC,GAC9B,OAAO7yC,EAAOx1D,MAzFE,KAyFmB0B,KAAK,SAAS4mG,EAAYC,GACzD,IAAIC,EAAWD,EAAc,EAC7B,OAAKD,GAAcE,EA3FP,IA8FLA,EAAWF,EAAaA,EAAW/oG,QAAQ,SAAU8oG,EAC/D,IAAGj+F,KAAK,GACZ,CAkDD,SAASq+F,GAAWnkG,EAAMokG,EAAWxqB,GACjC,IAAIriF,GAAS6sG,EAAY,IAAM,GAAK5yE,WAAWxxB,IAAS,EACxD,OAAO45E,GAAcriF,EAAQA,CAChC,CAED,SAAS8sG,GAAiBC,EAAWhjB,EAAW8iB,EAAWG,GACvD,IACIp6C,EACAnqD,EACAwkG,EAHAC,EAAgBH,EAIpB,GACQE,IACAr6C,EAAOnqD,EAAKhG,SAAWwqG,EAASxqG,OAAS,IAAM,IAC/CsqG,EAAYC,EAAgBp6C,EAAOm6C,EAAYA,EAAYn6C,GAE/DnqD,EAAOwkG,GAAYljB,EAAU6iB,GAAWM,EAAeL,IAEvDI,EAAWljB,EAAU6iB,GADrBM,EAAgBF,EAAgB,IAAME,EAAgBA,EAAgB,IACvBL,UAC1CpkG,IAASwkG,IAAaD,EAAgBvkG,EAAKhG,SAAWwqG,EAASxqG,OAASgG,EAAKhG,QAAUwqG,EAASxqG,SACzG,GAAIuqG,GAAiBC,EAASxqG,OAASgG,EAAKhG,OAAQ,CAChD,IAAI0qG,GAAa,IAAMpjB,EAAU,OAAO7mF,QAAQ,SAChD,GACI6pG,EAAY,IAAMA,QACbI,GAAaP,GAAWG,EAAWF,GAAa,IAC5D,CACD,OAAOE,CACV,CAED,SAASK,GAAqBL,EAAWhjB,EAAW8iB,EAAWxqB,GAC3D,IAAI1oB,EAASowB,EAAU6iB,GAAWG,EAAWF,EAAWxqB,IACpDgrB,EAAiBN,EAAU5oG,MAAM,KAGjCmpG,EAAwBvjB,EADC6iB,GADIS,EAAe,GAAK,KAAOA,EAAe,GAAGxmG,MAAM,GAChBgmG,EAAWxqB,IACjBn/E,QAAQ,KAAO,EAS7E,OARAy2D,EAASA,EAAOj2D,QAAQ,cAAe,SACnC4pG,GAAyB,IACzB3zC,EAASA,EAAO9yD,MAAM,EAAGymG,GAAyB,IAAM3zC,EAAO9yD,MAAMymG,EAAwB,IAEjG3zC,EAASA,EAAOj2D,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAC5CmpG,IACDlzC,EAASA,EAAOj2D,QAAQ,IAAK,QAE1Bi2D,CACV,CCrMD,QACI4zC,kBAAmB,SAASvtG,EAAO25D,EAAQ6zC,GACvC,GAAI,aAAe7zC,EAAQ,CACvB6zC,EAAa7uB,UAAY6uB,EAAa7uB,WAAa,EACnD,IAAIr5E,EAASxD,KAAK63D,OAAO35D,GAAOunD,EAAAA,GAAAA,GAAO,CAAC,EAAGimD,EAAc,CACrDrmG,KAAM,gBAENsmG,EAAe3rG,KAAK4rG,oBAAoBC,OAAOjqG,QAAQ,MAAO,QAElE,OADA4B,EAASA,EAAO5B,QAAQ,eAAgB,KAAO+pG,EAAe,KAEjE,CACD,OAAO3rG,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UACpC,EACD8zF,kBAAmB,WACf,MAAO,CACHC,OAAQ,IAEf,EACDC,yBAA0B,WACtB,MAAO,6BACV,GCtBL,IACI,SAAU,SACV,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,UAAW,QACX,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACT,QAAS,SACTC,GAAI,KACJC,GAAI,KACJ,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,QAAS,QACT,UAAW,MACX,UAAW,MACX,WAAY,MACZ,WAAY,MACZ,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,MACX,WAAY,MACZ,WAAY,MACZ,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,MACX,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,MACX,UAAW,MACX,WAAY,MACZ,UAAW,MACX,aAAc,cC7KlB,YAAgBC,EAAej2C,GAC3B,IAAIk2C,EAAeD,EAAcj2C,GACjC,OAAIk2C,EACO,SAAWA,GAAgBA,EAE/Bl2C,EAAOhxD,OAAO,EAAGgxD,EAAO09B,YANL,KAC9B,ECEIyY,GAAiB,KACrB,IAAe/vC,EAAAA,GAAAA,GAAmB,CAC9BpG,OAAS,WACL,IAAIo2C,EAAgBD,GACpB,OAAO,SAAAn2C,GACH,IAAKA,EACD,OAAOo2C,EAEXA,EAAgBp2C,CACnB,CACJ,CARQ,GASTq2C,wBAAyB,SAASz3C,GAI9B,IAHA,IAEI03C,EAFAt2C,EAASh2D,KAAKg2D,SACd93D,EAAQ02D,EAAOoB,IAEX93D,IAAUouG,IACdt2C,EAASu2C,GAAgBN,GAAej2C,IAEpC93D,EAAQ02D,EAAOoB,GAEfs2C,GAAe,EAGvB,YAAI,IAAWpuG,GAAS83D,IAAWm2C,GACxBv3C,EAAOu3C,IAEXjuG,CACV,IC7BL,IACIsuG,GAAI,8BACJ,QAAS,8BACTC,IAAK,eACLC,GAAI,eACJC,GAAI,8BACJC,GAAI,8BACJ,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT10F,GAAI,sBACJ20F,IAAK,mBACLC,IAAK,mBACLC,GAAI,mBACJ,UAAW,mBACX,UAAW,mBACXC,IAAK,mBACLC,GAAI,mBACJ,YAAa,mBACbC,IAAK,8BACLC,IAAK,eACLC,GAAI,8BACJC,GAAI,8BACJC,GAAI,oCACJ,QAAS,oCACTC,GAAI,mBACJ,QAAS,mBACTC,GAAI,mBACJC,IAAK,sBACLC,GAAI,mBACJ,UAAW,mBACX,UAAW,mBACXC,GAAI,sCACJ,QAAS,sCACT,iBAAkB,sCAClB,QAAS,sCACT,QAAS,sCACTC,IAAK,oCACL,SAAU,oCACVC,GAAI,mBACJC,IAAK,8BACLC,IAAK,eACLC,IAAK,8BACLC,IAAK,mBACL,SAAU,mBACVC,GAAI,mBACJC,GAAI,8BACJC,GAAI,mBACJ,QAAS,mBACTC,IAAK,8BACLC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACT,QAAS,mBACT,QAAS,mBACT,QAAS,mBACT,QAAS,mBACTC,IAAK,eACLC,IAAK,eACLC,IAAK,mBACLC,IAAK,mBACLC,IAAK,mBACLC,GAAI,kBACJC,IAAK,8BACLC,GAAI,8BACJ,QAAS,8BACT50C,GAAI,mBACJ,QAAS,mBACT60C,GAAI,8BACJ,SAAU,8BACV,SAAU,mBACV,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,iCACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,sCACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,mBACT,QAAS,8BACT,QAAS,8BACT,QAAS,sCACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACT,QAAS,8BACTC,GAAI,mBACJC,GAAI,mBACJ,SAAU,eACV,QAAS,sCACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,8BACT,QAAS,mBACT,QAAS,eACT,QAAS,mBACT,QAAS,eACT,QAAS,eACT,QAAS,mBACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,mBACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,eACT,QAAS,sCACT,QAAS,eACTC,GAAI,sCACJC,GAAI,sCACJC,IAAK,mBACLC,GAAI,kDACJ,QAAS,4CACTC,GAAI,mBACJ,UAAW,mBACX,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,UAAW,mBACX,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACd,aAAc,mBACdC,GAAI,mBACJC,IAAK,8BACLC,GAAI,sCACJ,QAAS,sCACTC,GAAI,sCACJ,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACTC,IAAK,mBACLC,GAAI,sCACJC,GAAI,8BACJ,QAAS,8BACTC,GAAI,8BACJC,GAAI,mBACJC,IAAK,mBACL,SAAU,mBACV,SAAU,mBACVC,GAAI,oCACJC,IAAK,8BACLC,GAAI,eACJC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACTC,IAAK,8BACLC,GAAI,mBACJC,GAAI,kBACJ,UAAW,kBACXC,GAAI,mBACJ,QAAS,mBACTC,IAAK,mBACLC,GAAI,mBACJC,GAAI,mBACJC,GAAI,sCACJ7yF,GAAI,eACJ8yF,GAAI,8BACJC,GAAI,mBACJ7hC,GAAI,mBACJ8hC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACT,QAAS,mBACTC,GAAI,8BACJC,IAAK,mBACLC,IAAK,eACLC,GAAI,mBACJC,GAAI,mBACJC,IAAK,eACLC,IAAK,8BACLC,IAAK,8BACLC,IAAK,sCACLC,IAAK,mBACLC,IAAK,eACLC,GAAI,8BACJC,GAAI,mBACJC,IAAK,mBACLC,GAAI,6BACJC,IAAK,8BACLC,GAAI,8BACJC,GAAI,8BACJC,GAAI,8BACJ,QAAS,8BACTC,IAAK,8BACLC,GAAI,eACJ,UAAW,eACX,UAAW,mBACXC,IAAK,eACLC,IAAK,mBACLC,IAAK,mBACLC,GAAI,sCACJC,GAAI,eACJC,GAAI,mBACJC,IAAK,mBACLC,GAAI,mBACJ78E,GAAI,eACJ88E,IAAK,mBACLC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACT,QAAS,mBACTC,GAAI,6BACJC,IAAK,mBACL,SAAU,mBACVC,GAAI,mBACJC,GAAI,eACJC,IAAK,eACLC,IAAK,iCACLC,GAAI,mBACJC,IAAK,mBACLC,IAAK,8BACL,SAAU,8BACVC,IAAK,8BACLC,IAAK,mBACLC,GAAI,eACJC,IAAK,mBACLC,IAAK,mBACLC,GAAI,mBACJC,GAAI,mBACJvxE,GAAI,8BACJwxE,GAAI,mBACJC,IAAK,mBACL,WAAY,mBACZ3xE,GAAI,8BACJ0jC,GAAI,8BACJ,QAAS,8BACT,QAAS,eACT,QAAS,8BACT3jC,GAAI,eACJ6xE,IAAK,8BACLxxE,GAAI,mBACJyxE,IAAK,mBACLC,IAAK,eACLpI,GAAI,sCACJ,QAAS,sCACTqI,GAAI,8BACJC,IAAK,mBACL,SAAU,mBACVC,GAAI,sBACJ,QAAS,sBACTC,GAAI,sCACJ,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACTC,IAAK,mBACLxI,GAAI,mBACJyI,IAAK,mBACLC,GAAI,sCACJC,IAAK,8BACLC,IAAK,eACLC,GAAI,eACJ,QAAS,eACTC,GAAI,8BACJC,GAAI,mBACJ,QAAS,mBACTC,GAAI,mBACJ,UAAW,mBACX,UAAW,mBACXC,IAAK,eACL1zE,GAAI,sCACJ2zE,GAAI,8BACJ,QAAS,8BACT9zE,GAAI,mBACJ,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT,QAAS,sCACT+zE,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACTC,GAAI,mBACJC,GAAI,eACJC,GAAI,sCACJ,QAAS,sCACTC,IAAK,eACLC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACT,QAAS,mBACT,QAAS,mBACT,QAAS,mBACTC,GAAI,mBACJC,IAAK,eACLC,GAAI,mBACJC,IAAK,mBACLC,IAAK,8BACLC,IAAK,mBACL,WAAY,mBACZC,IAAK,eACLC,GAAI,mBACJC,GAAI,mBACJ,UAAW,mBACX,UAAW,mBACXC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACTC,IAAK,eACLC,IAAK,eACLC,GAAI,6BACJC,IAAK,eACL,WAAY,eACZ,WAAY,eACZC,GAAI,8BACJC,GAAI,sCACJC,GAAI,sCACJC,IAAK,mBACLC,GAAI,8BACJC,GAAI,8BACJ,QAAS,8BACT,QAAS,8BACT,QAAS,8BACTC,GAAI,sCACJ,QAAS,sCACT,QAAS,sCACTC,GAAI,sCACJ,UAAW,sCACX,aAAc,sCACd,aAAc,sCACd,aAAc,sCACd,UAAW,sCACX,aAAc,sCACd,aAAc,sCACd,aAAc,sCACdC,GAAI,eACJ,UAAW,eACXC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACTC,GAAI,mBACJ,QAAS,mBACT,QAAS,mBACT,QAAS,mBACTC,GAAI,8BACJ,QAAS,8BACT,QAAS,8BACT,QAAS,8BACTC,GAAI,8BACJC,IAAK,8BACL,SAAU,8BACVC,GAAI,mBACJrqC,GAAI,8BACJsqC,GAAI,eACJ,QAAS,eACTC,GAAI,mBACJC,GAAI,mBACJ5qC,GAAI,8BACJ,QAAS,8BACT6qC,GAAI,mBACJC,IAAK,eACLC,IAAK,mBACLC,GAAI,8BACJC,GAAI,mBACJC,IAAK,mBACLC,GAAI,8BACJ,QAAS,8BACTC,GAAI,mBACJ,UAAW,mBACX,UAAW,mBACX,UAAW,mBACXC,IAAK,8BACL,WAAY,8BACZ,WAAY,8BACZC,GAAI,mBACJC,IAAK,eACLC,IAAK,mBACLC,GAAI,mBACJC,GAAI,eACJC,IAAK,mBACLC,IAAK,sCACLC,GAAI,mBACJC,GAAI,8BACJ,QAAS,8BACTC,IAAK,mBACL,SAAU,mBACV,SAAU,mBACVC,IAAK,8BACL,WAAY,8BACZ,WAAY,8BACZC,IAAK,eACLC,GAAI,8BACJ,UAAW,8BACX,aAAc,8BACd,aAAc,8BACd,aAAc,8BACd,UAAW,8BACX,aAAc,8BACd,aAAc,8BACdC,GAAI,+BC3jBJC,GAAkB,CAAC,WAAY,cAE/BC,GAA4B,0CAC5BC,GAAkB,CAAC,EACnBnxB,GAAe,SAAAlwB,GACf,IAAIv1D,EAAM62G,GAAAA,SAAiC,IAAMrzG,KAAKC,UAAU8xD,GAIhE,OAHKqhD,GAAgB52G,KACjB42G,GAAgB52G,GAAO,IAAI8jF,KAAKgzB,aAAaD,GAAAA,SAAgCthD,GAAQA,QAElFqhD,GAAgB52G,EAC1B,EAKD,IACI0hE,OAAQ,WACJ,MAAO,MACV,EACDynC,kBAAmB,SAASvtG,EAAO25D,EAAQ6zC,GACvC,MAAI,gBAAkB7zC,EACX73D,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAE9BiwE,GAAa/nF,KAAKq5G,uBAAuBxhD,EAAQ6zC,EAAcxtG,GAA/D6pF,CAAuE7pF,EACjF,EACDm7G,uBAAwB,SAASxhD,EAAQ6zC,EAAcxtG,GACnD,IAAI6B,EACJ,GAAI,YAAc83D,EAAQ,CACtB,IAAIyhD,EAAiB7vG,OAAOvL,GAAOmE,MAAM,KAAK,GAC9CtC,EAAS,CACLw5G,qBAAsB7N,EAAa7uB,gBAAa,EAChD28B,aAAa,EACbC,sBAAuBH,GAAkBA,EAAe34G,OACxDgiB,MAAOzkB,EAAQ,EAAI,OAAS,QAEnC,MACG6B,EAASC,KAAK05G,oBAAoBhO,EAAa7uB,WAEnD,GAAI,YAAchlB,EACd93D,EAAO+2B,MAAQ,eACZ,GAAI,aAAe+gC,EAAQ,CAC9B,IAAI8hD,EACAC,EAAqB,QAAUD,EAAwBjO,EAAamO,kCAA+B,IAAWF,EAAwBA,GAAwBG,EAAAA,GAAAA,KAAW91D,kCAC7KjkD,EAAO+2B,MAAQ,WACf/2B,EAAOg6G,SAAWrO,EAAaqO,WAAYD,EAAAA,GAAAA,KAAW/1D,gBACtDhkD,EAAOi6G,aAAehB,IAAiBY,EAC1C,CACD,OAAO75G,CACV,EACD25G,oBAAqB,SAAS78B,GAa1B,OAXI,OAASA,EACA,CACLo9B,sBAAuB,EACvBR,sBArDU,IAwDL,CACLQ,sBAAuBp9B,GAAa,EACpC48B,sBAAuB58B,GAAa,EAI/C,EACDhlB,OAAQ,SAAS35D,EAAOg8G,GACpB,MAAI,kBAAoBh8G,EACbA,GAGP,aADJg8G,EAAUl6G,KAAKm6G,iBAAiBD,IACNH,WACtBG,EAAQH,UAAWD,EAAAA,GAAAA,KAAW/1D,iBAE7Bm2D,IAAW,oBAAsBA,GAAYA,EAAQ70G,MAAS60G,EAAQjyB,WAGpEjoF,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAFtBiwE,GAAamyB,EAAbnyB,CAAsB7pF,GAGpC,EACDk8G,uBAAwB,SAASL,GAC7B,IAAI9xB,EAnEe,SAAA8xB,GAAQ,OAAI,IAAI3zB,KAAKgzB,aAAaD,GAAAA,SAAgC,CACzFriF,MAAO,WACPijF,SAAUA,GAFqB,CAmEXM,CAAqBN,GACrC,OAAO/5G,KAAKs6G,2BAA2BryB,EAAUpwB,OAAO,GAC3D,EACDyiD,2BAA4B,SAASC,GACjC,IAAItrG,EAAQgqG,GAA0BjqG,KAAKurG,IAAwB,GAInE,MAAO,CACH/vG,SAJWyE,EAAM,GAAK,SAAW,QAKjC48F,OAJS58F,EAAM,IAAMA,EAAM,IAAM,GAKjCvD,UAJYuD,EAAM,IAAMA,EAAM,IAAM,GAM3C,EACD28F,kBAAmB,SAASmO,GAKxB,OAJKA,IACDA,GAAWD,EAAAA,GAAAA,KAAW/1D,iBAGnB,CACH8nD,OAFa7rG,KAAKo6G,uBAAuBL,GAEtBlO,OAE1B,EACDC,yBAA0B,SAASiO,GAC/B,IAAIS,EAAiBT,IAAYD,EAAAA,GAAAA,KAAW/1D,gBAG5C,OC7GR,SAAgB02D,EAAgBC,GAC5B,GAAKA,EAAL,CAGA,IAAIC,EAAwBF,EAC5B,GAAI,kBAAoBA,EAAgB,CACpCE,EAAwB,GACxB,IAAK,IAAIhyG,EAAI,EAAGA,EAAI8xG,EAAe95G,OAAQgI,IACnC,MAAQ8xG,EAAe9xG,KACvBgyG,GAAyB,MAE7BA,GAAyBF,EAAe9xG,EAE/C,CAWD,IAVA,IAAIiyG,EAAgB,CAChB,MAAO,MACP,IAAK,MACL,MAAO,MACP,MAAO,MACP,IAAK,MACL,IAAK,SACL,SAAUD,GAEVn3G,EAASk3G,EAAiBr4G,MAAM,KAC3BkT,EAAK,EAAGA,EAAK/R,EAAO7C,OAAQ4U,IACjC,IAAK,IAAIs2F,KAAU+O,EACX58G,OAAOgK,UAAU6X,eAAephB,KAAKm8G,EAAe/O,KACpDroG,EAAO+R,GAAM/R,EAAO+R,GAAI3T,QAAQ,IAAIg2B,OAAOi0E,EAAQ,KAAM+O,EAAc/O,KAInF,OAAO,IAAMroG,EAAO7C,OAAS6C,EAAO,GAAK,MAAQA,EAAO,GAAKA,EAAO,EA5BnE,CAHL,CD6Geq3G,CAFc76G,KAAKo6G,uBAAuBI,GAAgB3O,OACnCsN,GAAAA,yBAA8C,SAAAnjD,GAAM,OAAI8kD,GAAkB9kD,EAAtB,IAErF,GE1FD+kD,GAAU,qBAAuB30B,KAGjC40B,GAAkB,CAAC,WAAY,aAAc,cAAe,UAAW,WACvEC,GAA6B,CAC7B,EAAG,IACH,EAAG,IACH,EAAG,IACH,EAAG,KAEHC,GAA0B,CAC1BC,YAAa,OACbC,UAAW,EACXC,SAAU,EACVC,SAAU,EACVC,UAAW,GAEXC,IAAqBp/C,EAAAA,GAAAA,GAAmB,CACxC4H,OAAQ,WACJ,MAAO,MACV,EACDy3C,eAAgBT,GAChBU,kCAAmCT,GACnCU,yBAA0B,SAAS90B,GAC/B,IAAI+0B,EAAe,CAAC,EACpB,GAAK/0B,GAAc,kBAAoBA,EAAvC,CAGA,IAAIg1B,EAAah1B,EAAWryE,cAAcnS,MAAM,KAWhD,OAVAwqD,EAAAA,EAAAA,IAAKgvD,GAAY,SAAC16G,EAAOjD,GACjB88G,GAAgBz1G,SAASrH,GACzB09G,EAAa/0B,WAAa3oF,EACnBA,KAASg9G,KAChBU,EAAaE,MAAQZ,GAAwBh9G,GAEpD,IACG09G,EAAaE,QAAUF,EAAa/0B,aACpC+0B,EAAa/0B,WAAa,cAE1B+0B,EAAa/0B,WACN+0B,OADX,CAZC,CAeJ,EACDG,sBAAuB,SAAS79G,EAAOm5B,EAAM2kF,EAAUC,GACnD,IAAIjoF,EAASzqB,KAAKD,IAAIpL,GAClB49G,EAAQ,EACZ,GAAI9nF,EAAS,EACT,KAAOA,GAAUA,GAAUqD,SAAS,IAAW4kF,GAAYH,EAAQG,IAC/DH,IACA9nF,GAAUqD,OAEX,GAAIrD,EAAS,GAAKA,EAAS,EAC9B,KAAOA,EAAS,SAAM,IAAWgoF,GAAYF,EAAQE,IACjDF,IACA9nF,GAAUqD,EAGlB,OAAOykF,CACV,EACDI,kBAAmB,SAASloF,EAAQ8nF,EAAOzkF,GAEvC,IADA,IAAI7zB,EAASwwB,EACN8nF,EAAQ,GACXt4G,GAAU6zB,EACVykF,IAEJ,KAAOA,EAAQ,GACXt4G,GAAU6zB,EACVykF,IAEJ,OAAOt4G,CACV,EACD24G,cAAe,SAASj+G,EAAO09G,EAAclQ,GACrC,SAAWkQ,EAAaE,QACxBF,EAAaE,MAAQ97G,KAAK+7G,sBAAsB79G,EAAO,IAAK,EAxE3C,IA0EjB09G,EAAaE,QACb59G,EAAQ8B,KAAKk8G,kBAAkBh+G,EAAO09G,EAAaE,MAAO,MAE9D,IAAIM,EAAep8G,KAAK07G,kCAAkCE,EAAaE,QAAU,GAC7Et4G,EAASxD,KAAKyrG,kBAAkBvtG,EAAO09G,EAAa/0B,WAAY6kB,GAEpE,OADAloG,EAASA,EAAO5B,QAAQ,gBAAiB,KAAOw6G,EAAe,KAElE,EACDC,yBAA0B,SAASn+G,EAAOwtG,GACtC,IAAIoQ,EAAQ97G,KAAK+7G,sBAAsB79G,EAlF5B,IAmFP81B,EAASh0B,KAAKk8G,kBAAkBh+G,EAAO49G,EAnFhC,SAoFP,IAAWpQ,EAAa7uB,YACxB6uB,EAAa7uB,UAAY,GAEzB7oD,EAAO2E,QAAQ+yE,EAAa7uB,WAAa,IAvFlC,KAwFPi/B,IACA9nF,GAzFO,IA2FX,IAAIsoF,GAAaR,GAAS,EAAI,IAAM,IAAMA,EAAMx+G,WAChD,OAAO0C,KAAKyrG,kBAAkBz3E,EAAQ,aAAc03E,GAAgB,IAAM4Q,CAC7E,EACDC,WAAY,SAASr+G,EAAO2+E,GAKxB,IAJA,IAAI2/B,EAAajzG,KAAKkZ,IAAI,GAAIo6D,GAC1BjsB,EAAO1yD,EAAQ,EAAI,IAAM,GAEzBsF,GADJtF,GAASqL,KAAKD,IAAIpL,GAASs+G,IAAe,GAAKA,GAC5Bl/G,WACZkG,EAAO7C,OAASk8E,GACnBr5E,EAAS,IAAMA,EAEnB,OAAOotD,EAAOptD,CACjB,EACDi5G,oBAAqB,SAASv+G,GAC1B,IAAIy2C,EAAQz2C,EAAMZ,WAAW+E,MAAM,KACnC,OAAOsyC,EAAM,GAAG/yC,QAAQ,yBAAyB7B,EAAAA,GAAAA,KAASqkD,qBAAuBzP,EAAM,IAAK50C,EAAAA,GAAAA,KAASokD,iBAAmBxP,EAAM,GAAK,GACtI,EACD82D,kBAAmB,SAASvtG,EAAO25D,EAAQ6zC,GACvC,MAAI,gBAAkB7zC,EACX73D,KAAKq8G,yBAAyBn+G,EAAOwtG,IAE5C,YAAc7zC,GAAU,OAAS6zC,EAAa7uB,YAC9C6uB,EAAa7uB,UAAY6uB,EAAa7uB,WAAa,GAEnD,YAAchlB,IACd35D,GAAS,UAET,IAAWwtG,EAAa7uB,YAEpB3+E,EADA,YAAc25D,EACN73D,KAAKu8G,WAAWr+G,EAAOwtG,EAAa7uB,WAEpC,OAAS6uB,EAAa7uB,UAAY3+E,EAAMk/E,cAAgBzkD,GAAQz6B,EAAOwtG,EAAa7uB,YAIhG3+E,EADA,YAAc25D,EACN73D,KAAKy8G,oBAAoBv+G,GAEzBA,EAAMZ,WAAWsE,QAAQ,KAAK7B,EAAAA,GAAAA,KAASokD,kBAE/C,YAAc0T,IACd35D,GAAS,KAENA,EACV,EACDi8G,iBAAkB,SAAStiD,GACvB,OAAKA,GAGD,oBAAsBA,IAGrBzwB,EAAAA,EAAAA,IAAcywB,KACfA,EAAS,CACLxyD,KAAMwyD,IAJHA,GAHA,CAAC,CAWf,EACD6kD,eAAgB,WACZ,MAAO,CACHv4D,iBAAkBnkD,KAAK28G,sBACvBv4D,mBAAoBpkD,KAAK48G,wBAEhC,EACDA,sBAAuB,WACnB,OAAO58G,KAAK63D,OAAO,IAAK,cAAc,EACzC,EACD8kD,oBAAqB,WACjB,OAAO38G,KAAK63D,OAAO,IAAK,CACpBxyD,KAAM,aACNw3E,UAAW,IACZ,EACN,EACDggC,cAAe,SAAS3+G,EAAO4+G,GAC3B,IAAIC,EAAS/8G,KAAK63D,OAAO,GAAI,WAC7B,GAAI,kBAAoB35D,GAAS,MAAQ6+G,EAAO,GAC5C,OAAO7+G,EAEX,IAAI8+G,EAAiBF,EAAaC,EAAO,GAAK,IAC1CE,EAAeH,EAAa,IAAMC,EAAO,GACzCG,EAAgBJ,EAAaC,EAAO,GAAK,IACzCI,EAAS,IAAIvlF,OAAO,IAAMolF,EAAiB,IAAME,EAAgB,IAAK,KAC1E,OAAOh/G,EAAM0D,QAAQu7G,GAAQ,SAAArsD,GAAI,OAAIrnD,OAAOC,aAAaonD,EAAK9mD,WAAW,IAAMizG,EAAajzG,WAAW,GAAKgzG,EAAehzG,WAAW,IAArG,GACpC,EACDozG,wBAAyB,SAASvlD,GAC9B,IAAIwlD,EAAar9G,KAAK08G,iBAClBY,EAAgB,IAAI1lF,OAAO,QAAS05B,EAAAA,GAAAA,cAAa+rD,EAAWl5D,iBAAmBk5D,EAAWj5D,oBAAsB,KAAM,KACtHm5D,EAAiBv9G,KAAK63D,QAAQ,EAAGA,GAAQj2D,QAAQ07G,EAAe,KAMpE,MALA,CAAC,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAK58G,SAAQ,SAAAowD,GACvEysD,EAAiBA,EAAe37G,QAAQ,IAAIg2B,OAAO,KAAK3nB,OAAO6gD,GAAO,KAAM,KAAK7gD,OAAO6gD,GAC3F,IAEDysD,GADAA,EAAiBA,EAAe37G,QAAQ,KAAM,QACdA,QAAQ,KAAM,MACvC,IAAIg2B,OAAO2lF,EAAgB,IACrC,EACDC,QAAS,SAAS72G,EAAMkxD,GACpB,IAAKA,EACD,MAAI,MAAQlxD,EAAK/E,QAAQ,WAAY,IAAIqa,OAAO,IACpC,EAEL,EAEX,IAAIshG,EAAiBv9G,KAAKo9G,wBAAwBvlD,GAClD,OAAOlxD,EAAKsI,MAAMsuG,IAAmB,EAAI,CAC5C,EACD1lD,OAAQ,SAAS35D,EAAOg8G,GACpB,GAAI,kBAAoBh8G,EACpB,OAAOA,EAEX,GAAI,kBAAoBg8G,EACpB,OAAOh8G,EAGX,GAAI,oBADJg8G,EAAUA,GAAWA,EAAQjyB,WAAaiyB,GAEtC,OAAOA,EAAQh8G,IAEnBg8G,EAAUl6G,KAAKm6G,iBAAiBD,IACnB70G,OACT60G,EAAQ70G,KAAO,WAEnB,IAAIo4G,EAAez9G,KAAK27G,yBAAyBzB,EAAQ70G,MACzD,IAAKo4G,EAAc,CACf,IAAIC,EAAkB19G,KAAK08G,iBAE3B,OADAgB,EAAgBC,uBAAyBzD,EAAQyD,uBAC1C39G,KAAK68G,cRpHjB,SAAsBhlD,EAAQ93D,GAEjC,OADAA,EAASA,GAAUgqG,GACZ,SAAS7rG,GACZ,GAAI,kBAAoBA,GAASy9D,MAAMz9D,GACnC,MAAO,GAEX,IAAI0/G,EApGZ,SAAsB/lD,GAClB,IAAIgmD,EAAYhmD,EAAOx1D,MAAM,KAI7B,OAHI,IAAMw7G,EAAUl9G,QAChBk9G,EAAUz9G,KAAK,IAAMy9G,EAAU,IAE5BA,CACV,CA8F6BC,CAAajmD,GAE/BkmD,EAAa7/G,EAAQ,GADJ,EAAIA,IAAU,IAE/B8/G,EAAeJ,EAAgBG,EAAa,EAAI,GAChDE,EAtBZ,SAA4BpmD,GAExB,IADA,IAAIgzC,GAAW,EACN1pG,EAAQ,EAAGA,EAAQ02D,EAAOl3D,OAAQQ,IAIvC,GAHI,MAAQ02D,EAAO12D,KACf0pG,GAAYA,GAEZ,MAAQhzC,EAAO12D,KAAW0pG,EAC1B,OAAO1pG,EAGf,OAAO02D,EAAOl3D,MACjB,CAW6Bu9G,CAAmBF,GACrCG,EAAmB,CAACH,EAAah5G,OAAO,EAAGi5G,GAAkBD,EAAah5G,OAAOi5G,EAAkB,IACnGG,EAAoBhU,GAAsB+T,EAAiB,IAC3DE,EAAoBD,EAAoBlU,GAAyBiU,EAAiB,KA/F9F,SAAyBtmD,GACrB,OAAQ,IAAMA,EAAOz2D,QAAQ,OAASy2D,EAAO5oD,MAAM,iBACtD,EA8FWqvG,CAAgBN,KAChB9/G,EAAQk+E,GAA0Bl+E,EA3HjB,IA6HhB6/G,IACD7/G,GAASA,GAEb,IA9HeqgH,EA8HXC,EAAsBpU,GAAsB+T,EAAiB,IAC7DM,EAAsBvU,GAAyBiU,EAAiB,KAAOp+G,EAAO49G,4BAAyB,EAASa,EAChHE,EAAgBn1G,KAAKo/D,MAAMzqE,GAAOZ,WAAWqD,OAC7Cg+G,EAAiB/iC,GAAayiC,EAAmB,EApIjC,GAoI4DK,GAC5EE,GAlIWL,EAkIgBJ,EAAiB,GAjI7CI,EAAal8G,MAAM,KAAK0C,MAAM,GAAGhB,KAAK,SAASrC,GAClD,IAAIm9G,EAAmB,EACvB,OAAOn9G,EAAIW,MAAM,IAAIm4B,QAAQ,SAASs2B,EAAM3vD,GAIxC,OAHA09G,GAAoB,MAAQ/tD,GACd,MAAQA,GAAQ,MAAQA,MACvB+tD,EAAmB,EAErC,IAAGl+G,MACP,KAyHuDm6D,UAChDgkD,EAAanmF,GAAQz6B,EAAOygH,EAAiB,EAAI,EAAIA,GAAgBt8G,MAAM,KAC3E08G,EAAmB1U,GAAqBL,GAAc8U,EAAW,IAAKN,EAAqBC,GAC3FO,EAAiB3U,GAAqByU,EAAW,GAAIV,EAAmBC,GAC5EU,EAtER,SAAqBrU,EAAakU,EAAYx6D,GAC1C,IAAKw6D,EAAWj+G,OACZ,OAAO+pG,EAIX,IAFA,IAAIrsD,EAAS,GACTl9C,EAAQ,EACLupG,GAAa,CAChB,IAAIuU,EAAYL,EAAWz9G,GAC3B,IAAK89G,EACD,MAEJ5gE,EAAOj+C,KAAKsqG,EAAY3lG,MAAM,EAAGk6G,IACjCvU,EAAcA,EAAY3lG,MAAMk6G,GAC5B99G,EAAQy9G,EAAWj+G,OAAS,GAC5BQ,GAEP,CACD,OAAOk9C,EAAO5xC,KAAK23C,EACtB,CAoD0B86D,CAAYH,EAAkBH,EAAY7+G,EAAOqkD,oBACpE,IAAI+6D,EAAgBnV,GAAcS,GAAiBT,GAAcmU,EAAiB,IAAKY,IACnFK,EAAcf,EAAoB5T,GAAiB0T,EAAiB,GAAIa,GAAkB,GAE9F,OADaG,GAAiBC,EAAYnwG,MAAM,MAAQlP,EAAOokD,iBAAmB,IAAMi7D,CAE3F,CACJ,CQkFqCr3B,CAAamyB,EAAQ70G,KAAMq4G,EAA3B31B,CAA4C7pF,GACzE,CACD,OAAO8B,KAAKm8G,cAAcj+G,EAAOu/G,EAAcvD,EAClD,EACDvtG,MAAO,SAAShG,EAAMkxD,GAClB,GAAKlxD,EAAL,CAGA,GAAIkxD,GAAUA,EAAO4f,OACjB,OAAO5f,EAAO4f,OAAO9wE,GAEzBA,EAAO3G,KAAK68G,cAAcl2G,GAAM,GAC5BkxD,GAAU,kBAAoBA,GAC9Bv4C,GAAAA,EAAAA,IAAW,SAEf,IAAI6kC,EAAmBnkD,KAAK28G,sBACxBQ,EAAS,IAAIvlF,OAAO,SAAU05B,EAAAA,GAAAA,cAAanN,GAAoB,IAAK,KACpEk7D,EAAc14G,EAAK/E,QAAQu7G,EAAQ,IAAIv7G,QAAQuiD,EAAkB,KAAKviD,QAAQ,OAAQ,IAC1F,GAAI,MAAQy9G,GAAe,KAAOA,EAC9B,OAAO,KAEX,GAAIr/G,KAAKs/G,uBAAuBD,GAAe,GAC3C,OAAO1zB,IAEX,IAAIv9E,GAAUixG,EAAcr/G,KAAKw9G,QAAQ72G,EAAMkxD,GAC/CA,EAAS73D,KAAKm6G,iBAAiBtiD,GAC/B,IAAI6zC,EAAe1rG,KAAK27G,yBAAyB9jD,EAAOxyD,MACpDy2G,EAAQ,OAASpQ,QAAgB,IAAWA,OAAe,EAASA,EAAaoQ,MACrF,GAAIA,EAAO,CACP,GAAI,SAAWA,EAAO,CAClB,IAAI7sG,EAAQtI,EAAKsI,MAAM,eACnBA,IACA6sG,EAAQ99G,OAAOgB,KAAKi8G,IAA4Bj/G,MAAK,SAAA8/G,GAAK,OAAIb,GAA2Ba,KAAW7sG,EAAM,EAAhD,IAEjE,CACDb,GAAU7E,KAAKkZ,IAAI,GAAI,EAAIq5F,EAC9B,CAID,MAHI,aAAe,OAASpQ,QAAgB,IAAWA,OAAe,EAASA,EAAa7kB,cACxFz4E,GAAU,KAEPA,CAjCN,CAkCJ,EACDkxG,uBAAwB,SAAS34G,GAC7B,IAAI,EAAwBA,EAAKtE,MAAM,KAAvC,eAAKk9G,EAAL,KAAcC,EAAd,KACIC,EAA8B,SAAA1C,GAE9B,IADA,IAAI57G,GAAS,EACJwH,EAAI,EAAGA,EAAIo0G,EAAOp8G,OAAQgI,IAC/B,GAAI,MAAQo0G,EAAOp0G,GAAI,CACnBxH,EAAQwH,EACR,KACH,CAEL,OAAOxH,GAAS,EAAI47G,EAAOp8G,OAASQ,EAAQ,CAC/C,EACGqC,EAAS,EAOb,OANI+7G,IACA/7G,GAAUi8G,EAA4BF,EAAQl9G,MAAM,MAEpDm9G,IACAh8G,GAAUi8G,EAA4BD,EAAWn9G,MAAM,IAAIy4D,YAExDt3D,CACV,IAELg4G,GAAmBpkD,OAAOsoD,IACtB3E,IACAS,GAAmBpkD,OAAOuoD,IAE9B,UC/SIC,GAAoB,wBAEpBC,GAAa,SAAS/uD,GACtB,IAAIz2D,EAAOy2D,GAAQ0qD,GAAAA,cAAiC1qD,GAAM,GAAO9mD,WAAW,GACxE81G,EAAWtE,GAAAA,cAAiC,KAAK,GAAOxxG,WAAW,GACvE,OAAO81G,GAAYzlH,GAAQA,EAAOylH,EAAW,EAChD,EACGC,GAAuB,SAASp5G,EAAMq5G,EAAU7+G,EAAO8+G,GACvD,IAAInvD,EAAOnqD,EAAKxF,GACZ++G,EAAWv5G,EAAKxF,EAAQ,GAC5B,IAAK8+G,EAAS,CACV,GAAI,MAAQnvD,GAAQ,MAAQA,GAVhB,SAUwBnqD,EAAK5B,MAAM5D,EAAQ,EAAGA,EAAQ,GAC9D,OAAO,EAEX,GAAI,MAAQ2vD,IAAS+uD,GAAWK,GAC5B,OAAO,CAEd,CACD,IAAIC,EAAiBF,GAAWD,EAAS7tD,MAAK,SAAAxoD,GAAO,OAAIhD,EAAKxF,KAAWwI,EAAQxI,EAA5B,IACrD,OAAOy+G,GAAkBx+G,QAAQ0vD,GAAQ,GAAKmvD,IAAYJ,GAAW/uD,MAAWmvD,GAAWE,EAC9F,EACGC,GAAuB,SAASC,EAAgBl/G,GAChD,IAAK0+G,GAAWQ,EAAel/G,IAC3B,KAAOA,EAAQ,IAAM0+G,GAAWQ,EAAel/G,EAAQ,MAAQ,MAAQk/G,EAAel/G,EAAQ,IAAMy+G,GAAkBx+G,QAAQi/G,EAAel/G,EAAQ,IAAM,IACvJA,IAGR,OAAOA,CACV,EAqEGm/G,GAAc,SAASpiH,EAAO+pF,GAC9B,OAAIpjF,MAAMC,QAAQ5G,GACPA,EAAM6F,KAAK,SAAS7F,GACvB,OAAQ+pF,EAAU/pF,IAAU,IAAIZ,UACnC,KAEG2qF,EAAU/pF,IAAU,IAAIZ,UACnC,EACGijH,GAAsB,YAyBfC,GAAY,SAASv4B,GAC5B,IAAIw4B,EAAmB,GACnBJ,EAAiBC,GAAY,IAAIx9G,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAAImlF,GAC5Dy4B,EAAmBL,EAAeh+G,MAAM,IAAI0B,KAAK,SAASjF,EAAGqC,GAC7D,OAAOA,CACV,IACGqC,EAAS68G,EACTM,EAAmB,CAAC,EACpBC,EAAe,CAAC,CAChB3sF,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,EAAG,KACpC6G,QAAS,KACV,CACCsqB,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACjC6G,QAAS,KACV,CACCsqB,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACjC6G,QAAS,KACV,CACCsqB,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,GAAI,EAAG,GAClC6G,QAAS,IACTs2G,SAAS,GACV,CACChsF,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACjC6G,QAAS,IACTs2G,SAAS,GACV,CACChsF,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,GAAI,EAAG,GAClC6G,QAAS,IACTs2G,SAAS,GACV,CACChsF,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACjC6G,QAAS,KACV,CACCsqB,KAAM,CAAC,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAAI,IAAIA,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,IAChG6G,QAAS,KACV,CACCsqB,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACjC6G,QAAS,KACV,CACCsqB,KAAM,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GACjC6G,QAAS,MAEb,GAAKnG,EAUL,OAPAo9G,EAAalgH,SAAS,SAAS0V,GAC3B,IAAIurE,EAnJQ,SAAS0+B,EAAgBL,EAAUS,EAAkBR,GACrE,IAAIt3G,EAAI,EACJnF,EAAS,GACTq9G,EAAiB,SAASl3G,GAC1B,OAAO02G,EAAe13G,KAAOgB,EAAQhB,UAAO,IAAWs3G,GAAWJ,GAAWQ,EAAe13G,MAAQs3G,EACvG,EAID,IAHKp7G,MAAMC,QAAQk7G,KACfA,EAAW,CAACA,IAEXr3G,EAAI,EAAGA,EAAI03G,EAAe1/G,OAAQgI,IACnC,GAAI83G,EAAiBr/G,QAAQuH,GAAK,GAAKq3G,EAASxlF,OAAOqmF,GAAgBlgH,OAAQ,CAC3EgI,EAAIy3G,GAAqBC,EAAgB13G,GACzC,EAAG,CAEC,GADAs3G,EAAUJ,GAAWQ,EAAe13G,KAC/BnF,EAAO7C,SAAWs/G,GAAWJ,GAAWG,EAAS,GAAGr3G,IACrD,MAEJnF,EAAOpD,KAAKuI,GACZ83G,EAAiB7vC,QAAQjoE,GACzBA,GACH,OAAQ03G,EAAe13G,IAAMo3G,GAAqBM,EAAgBL,EAAUr3G,EAAGs3G,IAChF,KACH,CAKL,OAHI,IAAMz8G,EAAO7C,QAAW,MAAQ0/G,EAAeI,EAAiB,GAAK,IAAM,WAAaJ,EAAeI,EAAiB,GAAK,IAC7HA,EAAiB7vC,QAAQ6vC,EAAiB,GAAK,GAE5Cj9G,CACV,CAuHkBs9G,CAAcT,EAAgBC,GAAYlqG,EAAK6d,KAAMg0D,GAAYw4B,EAAkBrqG,EAAK6pG,SAC/Ft2G,EAAU,MAAQyM,EAAKzM,SAAYg3G,EAAiBn9F,EAAUpN,EAAKzM,QAAX,IAC5DnG,EA5GW,SAASmG,EAASo3G,EAASjwD,EAAM4vD,GAChD,IAAI/3G,EACAxH,EACA6/G,EACJ,IAAKnB,GAAWl2G,EAAQo3G,EAAQ,KAAO,KAAM,CAEzC,IADA,IAAIE,EAAc13G,KAAKkuB,IAAIspF,EAAQpgH,QAAU,EAAI,EAAI,EAAGmwD,EAAKnwD,QACtDogH,EAAQpgH,OAASsgH,GAAa,CAIjC,IAFAD,EAAeN,EADfv/G,EAAQ4/G,EAAQnzD,OAEhB8yD,EAAiBv/G,IAAU,EACtBwH,EAAIxH,EAAQ,EAAGwH,EAAI+3G,EAAiB//G,OAAQgI,IAC7C+3G,EAAiB/3G,KAErBgB,EAAUA,EAAQ3E,OAAO,EAAGg8G,GAAgBr3G,EAAQ3E,OAAOg8G,EAAe,EAC7E,CAED,IADyCA,GAAzC7/G,EAAQ4/G,EAAQA,EAAQpgH,OAAS,GAAK,GAA0B+/G,EAAiB//G,OAAS+/G,EAAiBv/G,GAASA,EAC7G4/G,EAAQpgH,OAASsgH,GAAa,CAEjC,IADAF,EAAQ3gH,KAAK2gH,EAAQA,EAAQpgH,OAAS,GAAK,GACtCgI,EAAIxH,EAAOwH,EAAI+3G,EAAiB//G,OAAQgI,IACzC+3G,EAAiB/3G,KAErBgB,EAAUA,EAAQ3E,OAAO,EAAGg8G,GAAgB,IAAMr3G,EAAQ3E,OAAOg8G,EACpE,CACJ,CAED,OADAr3G,EApCmB,SAASA,EAASo3G,EAASjwD,EAAM4vD,GACpD,IAAIQ,EAAgBH,EAAQ,GACxBC,EAAeE,EAAgBR,EAAiB//G,OAAS+/G,EAAiBQ,GAAiBA,EAQ/F,OAPAH,EAAQrgH,SAAS,SAAS5B,EAAGqC,GACzBwI,EAAUA,EAAQ3E,OAAO,EAAGg8G,EAAe7/G,IAAU2vD,EAAKnwD,OAAS,EAAImwD,EAAK3vD,GAAS2vD,GAAQnnD,EAAQ3E,OAAOg8G,EAAe7/G,EAAQ,EACtI,IACG,IAAM4/G,EAAQpgH,SAEdgJ,GADAA,EAAUA,EAAQ/H,QAAQ,IAAMkvD,EAAMA,EAAOA,IAC3BlvD,QAAQ,SAAWkvD,EAAMA,EAAOA,IAE/CnnD,CACV,CAyBaw3G,CAAiBx3G,EAASo3G,EAASjwD,EAAM4vD,GAC5C/2G,CACV,CAkFgBy3G,CAAa59G,EAAQm+E,EAAMh4E,EAAS+2G,GAC7CC,EAAiBh3G,GAAWg4E,EAAKhhF,MACpC,IACD6C,EA3Ec,SAASmG,EAAS02G,EAAgBI,EAAkBC,GAClE,IAAIW,EAAgBhB,EAAeh+G,MAAM,IAAI0B,KAAK,SAAS+sD,EAAM3vD,GAC7D,OAAIs/G,EAAiBr/G,QAAQD,GAAS,IAAM2vD,EAAK7hD,MAAMsxG,KAAwB,MAAQzvD,GAC5E4vD,EAAiBv/G,IAEpB,CACX,IAgBD,OAfAwI,EAAUA,EAAQtH,MAAM,IAAI0B,KAAK,SAAS+sD,EAAM3vD,GAC5C,IAAIqC,EAASstD,EACTwwD,EAAuBD,EAAcjgH,QAAQD,IAAU,EACvDogH,EAAoBpgH,EAAQ,GAAKkgH,EAAcjgH,QAAQD,EAAQ,IAAM,EACrEqgH,EAAoBH,EAAcjgH,QAAQD,EAAQ,IAAM,EAS5D,OARImgH,IACKC,IACD/9G,EAAS,IAAMA,GAEdg+G,IACDh+G,GAAU,MAGXA,CACV,IAAGiJ,KAAK,IACF9C,CACV,CAoDY83G,CAAYj+G,EAAQ68G,EAAgBI,EAAkBC,GAC3DD,EAAiB9/G,OACV6C,OADX,CAGH,aCrLGgjF,GAAe,CACf,EAAG,cACH,EAAG,OACH,EAAG,UAEHk7B,GAAuB,SAAS71G,EAAO+6E,GACvC,OAAI/6E,EAAQ,EACD7N,OAAOgB,KAAKwnF,IAAcziF,KAAK,SAAS8H,GAC3C,MAAO,CAAC,SAAU,cAAc9H,KAAK,SAASsB,GAC1C,OAAOuhF,EAAUE,cAAcN,GAAa36E,GAAQxG,GAAMoH,KAAK,IAClE,IAAGA,KAAK,IACZ,IAAGA,KAAK,KAEN,IAAMZ,EAAQ,iBAAmB,iBAC3C,EACG81G,GAAkB,CAClB,IAAK,SAAS91G,EAAO+6E,GACjB,IAAIg7B,EAAc/1G,EAAQ,EAAI,IAAIoE,OAAOpE,EAAO,KAAO,GACnDg2G,GAAgBvwD,EAAAA,GAAAA,cAAas1B,EAAUk7B,oBAE3C,MADA,MAAQD,IAAkBA,EAAgB,GAAG5xG,OAAO4xG,EAAe,OAC5D,GAAG5xG,OAAO4xG,GAAe5xG,OAAO2xG,EAC1C,EACD5zG,EAAG,SAASnC,GACR,OAAO,IAAMA,EAAQ,SAASoE,OAAOpE,EAAO,KAAO,SACtD,EACD86E,EAAG+6B,GACH36B,EAAG26B,GACH16B,EAAG,SAASn7E,EAAO+6E,GACf,OAAI/6E,EAAQ,EACD+6E,EAAUK,gBAAgBT,GAAa36E,GAAQ,UAAUY,KAAK,KAElE,SACV,EACDy6E,EAAG,SAASr7E,EAAO+6E,GACf,MAAO,MACV,EACD7mE,EAAG,SAASlU,EAAO+6E,GACf,OAAOA,EAAUS,eAAeb,GAAa36E,EAAQ,EAAI,EAAIA,GAAQ,UAAUY,KAAK,IACvF,EACD+W,EAAG,SAAS3X,GACR,OAAO,IAAMA,EAAQ,0BAA4B,0BACpD,EACDy7E,EAAG,SAASz7E,GACR,OAAO,IAAMA,EAAQ,wBAA0B,wBAClD,EACD5P,EAAG,SAAS4P,GACR,OAAO,IAAMA,EAAQ,iBAAmB,iBAC3C,EACD3O,EAAG,SAAS2O,GACR,OAAO,IAAMA,EAAQ,qBAAuB,qBAC/C,EACD0sB,EAAG,SAAS1sB,GACR,OAAO,IAAMA,EAAQ,qBAAuB,qBAC/C,EACD07E,EAAG,SAAS17E,GACR,MAAO,WAAWoE,OAAOpE,EAAO,IACnC,EACDk2G,EAAG,SAASl2G,GACR,OAAO,IAAMA,EAAQ,qBAAuB,qBAC/C,GAEDm2G,GAActpF,OACdupF,GAAyB,SAAS53G,EAAOnM,GACzC,OAAOmM,EAAMtG,KAAI,SAAAa,GAAI,OAAIA,EAAK4P,aAAT,IAAwBpT,QAAQlD,EAAMsW,cAC9D,EACG0tG,GAAqB,SAASv7G,EAAMkF,EAAO+6E,GAC3C,OAAI/6E,EAAQ,EACD,CAAC,SAAU,cAAc9H,KAAK,SAASsB,GAC1C,OAAOrH,OAAOgB,KAAKwnF,IAAcziF,KAAK,SAAS8H,GAC3C,IAAIs2G,EAAav7B,EAAUE,cAAcN,GAAa36E,GAAQxG,GAC9D,OAAO48G,GAAuBE,EAAYx7G,EAC7C,GACJ,IAAGxC,QAAQ,SAAS4b,EAAGC,GACpB,OAAOD,EAAE9P,OAAO+P,EACnB,IAAGwa,QAAQ,SAASr5B,GACjB,OAAOA,GAAS,CACnB,IAAG,GAED6gH,GAAYr7G,GAAQ,CAC9B,EACGy7G,GAAkB,CAClBp0G,EAAG,SAASrH,EAAMkF,GACd,IAAIgyE,EAAOmkC,GAAYr7G,GACvB,OAAI,IAAMkF,EACCgyE,EAAO,GAAK,IAAMA,EAAO,KAAOA,EAEpCA,CACV,EACD8I,EAAGu7B,GACHn7B,EAAGm7B,GACHl7B,EAAG,SAASrgF,EAAMkF,EAAO+6E,GACrB,OAAI/6E,EAAQ,EACD+6E,EAAUK,gBAAgBT,GAAa36E,GAAQ,UAAUzK,QAAQuF,GAErEq7G,GAAYr7G,GAAQ,CAC9B,EACDugF,EAAG,SAASvgF,EAAMkF,EAAO+6E,GACrB,IAAIy7B,EAAWz7B,EAAUO,YAAYX,GAAa36E,EAAQ,EAAI,EAAIA,GAAQ,UAC1E,OAAOo2G,GAAuBI,EAAU17G,EAC3C,EACDoZ,EAAG,SAASpZ,EAAMkF,EAAO+6E,GACrB,IAAI07B,EAAc17B,EAAUS,eAAeb,GAAa36E,EAAQ,EAAI,EAAIA,GAAQ,UAChF,OAAOo2G,GAAuBK,EAAa37G,EAC9C,EACD6c,EAAGw+F,GACH16B,EAAG06B,GACH/lH,EAAG+lH,GACH9kH,EAAG8kH,GACHzpF,EAAGypF,GACHz6B,EAAG,SAAS5gF,EAAMkF,GAGd,IAFAA,EAAQtC,KAAKkuB,IAAI5rB,EAAO,GACxBlF,EAAOA,EAAK5B,MAAM,EAAG,GACd8G,EAAQ,GACXlF,GAAQ,IACRkF,IAEJ,OAAOm2G,GAAYr7G,EACtB,GAED47G,GAAmB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAClDC,GAAkB,CAClBx0G,EAAG,cACH24E,EAAG,WACHI,EAAG,WACHhnE,EAAG,SAASkU,EAAM/1B,EAAOukH,GACrB,IAAIviC,EAAQjsD,EAAK2tD,WACb8gC,EAAgBD,EAAexmH,OAC/B,IAAWymH,GAAiBA,IAAkBxiC,GAC9CA,IAEChiF,GAAS,KAAOgiF,EAEVhiF,GAAS,KAAOgiF,IACvBA,GAAS,IAFTA,EAAQ,EAIZjsD,EAAKirD,SAASgB,EACjB,EACD18D,EAAG,UACH8jE,EAAG,WACHrrF,EAAG,WACHiB,EAAG,aACHq7B,EAAG,aACHgvD,EAAG,mBAEHo7B,GAAmB,SAASh8G,EAAMxF,GAClC,IAAI2vD,EAAOnqD,EAAKxF,GAChB,IAAK2vD,EACD,OAAO,EAEX,IAAIjlD,EAAQ,EACZ,GACI1K,IACA0K,UACKlF,EAAKxF,KAAW2vD,GACzB,OAAOjlD,CACV,EACG+2G,GAAgB,SAAS9xD,EAAMjlD,GAE/B,IADA,IAAIrI,EAAS,GACJmF,EAAI,EAAGA,EAAIkD,EAAOlD,IACvBnF,GAAUstD,EAEd,OAAOttD,CACV,EACUq/G,GAAgB,SAAShrD,EAAQ+uB,GAYxC,IAXA,IAEIwB,EAFA06B,EAAa,GACbC,EAAW,GAEX/C,EAAW,GACXgD,EAAkB,WACdD,IACA/C,EAAS5/G,KAAK,IAAI6P,OAAO8yG,EAAU,MACnCD,GAAc,GAAG7yG,QAAOqhD,EAAAA,GAAAA,cAAayxD,GAAW,KAChDA,EAAW,GAElB,EACQp6G,EAAI,EAAGA,EAAIkvD,EAAOl3D,OAAQgI,IAAK,CACpC,IAAImoD,EAAO+G,EAAOlvD,GAEds6G,EAAatB,GAAgB7wD,GACjC,KAFmB,MAAQA,KAGvBs3B,GAAcA,EACV,MAAQvwB,EAAOlvD,EAAI,IAI3B,GAAIs6G,IAAe76B,EAAY,CAC3B,IAAIv8E,EAAQ82G,GAAiB9qD,EAAQlvD,GACjCgB,EAAUi5G,GAAc9xD,EAAMjlD,GAClCm3G,IACAhD,EAAS5/G,KAAKuJ,GACdm5G,GAAc,IAAI7yG,OAAOgzG,EAAWp3G,EAAO+6E,GAAY,KACvDj+E,GAAKkD,EAAQ,CAChB,MACQk3G,IACDD,GAAc,KAElBC,GAAYjyD,CAEnB,CAKD,OAJAkyD,IACKE,GAA2BlD,IAC5BzsD,GAAAA,EAAAA,KAAY,mDAAmDtjD,OAAO4nD,EAAQ,MAE3E,CACHmoD,SAAUA,EACVmD,OAAQ,IAAIvrF,OAAO,IAAI3nB,OAAO6yG,EAAY,KAAM,KAEvD,EACGM,GAAoB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACtDF,GAA6B,SAASlD,GAC7C,IAAIqD,EAAiB,SAAA15G,GACjB,IAAKA,EACD,OAAO,EAEX,IAAImnD,EAAOnnD,EAAQ,GACnB,MAAO,CAAC,IAAK,KAAKpE,SAASurD,IAASsyD,GAAkB79G,SAASurD,IAASnnD,EAAQhJ,OAAS,CAC5F,EACG2iH,GAAqB,EACrBC,EAA8B,EAClC,OAAOvD,EAASn6E,OAAM,SAACl8B,EAASxI,EAAO6+G,GASnC,OARIqD,EAAe15G,KACV,SAAAA,GAAO,MAAI,MAAQA,EAAQ,IAAM,IAAMA,EAAQhJ,MAAxC,CAAP,CAAuDgJ,KACxD25G,IAAuBC,EAA8B,GAEpDF,EAAerD,EAAS7+G,EAAQ,MACjCoiH,EAA8B,IAG/BD,CACV,GACJ,EA6CUE,GAAY,SAAS3rD,EAAQ+uB,GACpC,IAAI68B,EAAaZ,GAAchrD,EAAQ+uB,GACvC,OAAO,SAASjgF,GACZ,IAAI+8G,EAAeD,EAAWN,OAAOn0G,KAAKrI,GAC1C,GAAI+8G,EAAc,CACd,IAAIngD,EAAM,IAAIzgE,KACVmxB,EAAO,IAAInxB,KAAKygE,EAAIqc,cAAe,EAAG,GACtC+jC,EAAkCF,EAAWzD,SA3BrCj8G,KAAK,SAAS4F,GAC9B,MAAI,MAAQA,EAAQ,GACT,GAEA,MAAQA,EAAQ,GAAK,IAAMA,EAAQ,EAEjD,IAsBWi6G,EApBgB,SAAS5D,GACrC,IAAIe,EAAUf,EAASj8G,KAAK,SAAS4F,GACjC,OAAO44G,GAAiBnhH,QAAQuI,EACnC,IACD,OAAOJ,KAAKkuB,IAAI1f,MAAMxO,KAAMw3G,EAC/B,CAeiC8C,CAA0BF,GAC5CG,EAfe,SAASH,GACpC,IAAII,EAAgBJ,EAAenpF,QAAQ,SAAS7wB,GAChD,OAAO44G,GAAiBnhH,QAAQuI,GAAW,CAC9C,IACD,OAAO44G,GAAiBtyG,OAAO8zG,EAClC,CAUuCC,CAAyBL,GACjDlB,EAAiB,CAAC,EActB,OAbAqB,EAAsBpjH,SAAS,SAASiJ,EAASxI,GAC7C,GAAKwI,KAAWxI,EAAQohH,GAAiB5hH,QAAUQ,EAAQyiH,GAA3D,CAGA,IAAI5C,EAAe2C,EAAeviH,QAAQuI,GAC1C,GAAIq3G,GAAgB,EAAG,CACnB,IAAIiD,EAAgBR,EAAWzD,SAASgB,GACpCkD,EAAaR,EAAa1C,EAAe,IA3D5C,SAAS/sF,EAAMtqB,EAAShD,EAAMigF,EAAW67B,GAC1D,IAAI0B,EAAcx6G,EAAQ,GACtBy6G,EAAa5B,GAAgB2B,GAC7BE,EAAajC,GAAgB+B,GACjC,GAAIC,GAAcC,EAAY,CAC1B,IAAInmH,EAAQmmH,EAAW19G,EAAMgD,EAAQhJ,OAAQimF,GAC7C67B,EAAe94G,GAAWzL,EACtB+1B,EAAKmwF,GACLnwF,EAAKmwF,GAAYlmH,GAEjBkmH,EAAWnwF,EAAM/1B,EAAOukH,EAE/B,CACJ,CA+CmB6B,CAAerwF,EAAMgwF,EAAeC,EAAYt9B,EAAW67B,EAC9D,MA/CW,SAASxuF,EAAMtqB,EAAS45D,GAChD,IAAIghD,EAAa/B,GAAgB74G,GAE7BzL,EAAQqlE,EADK,IAAMghD,EAAWv/G,OAAO,MAEzCivB,EAAKswF,GAAYrmH,EACpB,CA2CmBsmH,CAAsBvwF,EAAMtqB,EAAS45D,EAPxC,CASJ,IACMtvC,CACV,CACD,OAAO,IACV,CACJ,ECpTD,IACI,QAAS,EACTw4E,IAAK,EACLC,GAAI,EACJE,GAAI,EACJ,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACTC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJ,UAAW,EACXC,IAAK,EACLC,GAAI,EACJC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJG,GAAI,EACJE,GAAI,EACJ,UAAW,EACXC,GAAI,EACJE,GAAI,EACJE,IAAK,EACLE,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJE,GAAI,EACJC,IAAK,EACLE,IAAK,EACLC,IAAK,EACLC,IAAK,EACLG,GAAI,EACJ50C,GAAI,EACJ,SAAU,EACV,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT80C,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJ,UAAW,EACXC,GAAI,EACJE,GAAI,EACJC,GAAI,EACJ,QAAS,EACT,QAAS,EACT,QAAS,EACTC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,IAAK,EACLG,GAAI,EACJC,GAAI,EACJI,GAAI,EACJC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJ5hC,GAAI,EACJ8hC,GAAI,EACJE,IAAK,EACLC,IAAK,EACLE,GAAI,EACJC,IAAK,EACLE,IAAK,EACLC,IAAK,EACLE,IAAK,EACLE,GAAI,EACJC,IAAK,EACLC,GAAI,EACJ,QAAS,EACTO,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,IAAK,EACLC,GAAI,EACJ78E,GAAI,EACJ+8E,GAAI,EACJE,IAAK,EACLC,GAAI,EACJC,GAAI,EACJG,GAAI,EACJ,SAAU,EACVI,IAAK,EACLC,GAAI,EACJE,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJhuC,GAAI,EACJkuC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLE,IAAK,EACLE,GAAI,EACJC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJC,IAAK,EACLC,IAAK,EACLG,GAAI,EACJE,IAAK,EACL1zE,GAAI,EACJ2zE,GAAI,EACJ,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACT,QAAS,EACTE,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJC,IAAK,EACLE,IAAK,EACLG,IAAK,EACLC,GAAI,EACJE,GAAI,EACJE,IAAK,EACLC,GAAI,EACJC,IAAK,EACL,WAAY,EACZC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,IAAK,EACLE,GAAI,EACJ,QAAS,EACTC,GAAI,EACJC,GAAI,EACJ,UAAW,EACXE,GAAI,EACJC,GAAI,EACJ,QAAS,EACT,QAAS,EACTG,IAAK,EACLC,GAAI,EACJ,QAAS,EACTE,GAAI,EACJC,GAAI,EACJ5qC,GAAI,EACJ6qC,GAAI,EACJC,IAAK,EACLC,IAAK,EACLE,GAAI,EACJG,GAAI,EACJ,UAAW,EACX,UAAW,EACXC,IAAK,EACL,WAAY,EACZC,GAAI,EACJC,IAAK,EACLC,IAAK,EACLC,GAAI,EACJE,IAAK,EACLC,IAAK,EACLC,GAAI,EACJC,GAAI,EACJG,IAAK,GCxLL4L,GAA0B,kBAC1BC,GAA8B,YAC9BC,GAAmB,SAAA9sD,GAAM,OAAI,SAAA5jC,GAC7B,IAAK4jC,EAAO+sD,aAAc,CACtB,IAAI/mC,EAAO5pD,EAAK2rD,cACZilC,EAA8Bp7G,OAAOo0E,GAAMl9E,OAAS,EACpDmkH,EAAqBD,EAA8BhnC,EAAO,IAAMA,EAChEknC,EAAU,IAAIjiH,KAAKA,KAAKs+E,IAAI0jC,EAAoB7wF,EAAKmrD,WAAYnrD,EAAK+rD,UAAW/rD,EAAK2tD,WAAY3tD,EAAKuuD,aAAcvuD,EAAKwuD,aAAcxuD,EAAKyuD,oBAOjJ,OANImiC,GACAE,EAAQplC,YAAY9B,GAKjBmnC,GAAeD,GAHNt/D,EAAAA,GAAAA,GAAO,CACnB/E,SAAU,OACXmX,GAEN,CACD,OAAOmtD,GAAe/wF,EAAM4jC,EAC/B,CAf4B,EAgBzBqhD,GAAkB,CAAC,EASvB,SAAS8L,GAAe/wF,EAAM4jC,GAC1B,OATe,SAAAA,GACf,IAAIv1D,EAAM62G,GAAAA,SAAiC,IAAMrzG,KAAKC,UAAU8xD,GAIhE,OAHKqhD,GAAgB52G,KACjB42G,GAAgB52G,GAAO,IAAI8jF,KAAKC,eAAe8yB,GAAAA,SAAgCthD,GAAQA,QAEpFqhD,GAAgB52G,EAC1B,CAGUylF,CAAalwB,EAAbkwB,CAAqB9zD,GAAMryB,QAAQ6iH,GAAyB,IAAI7iH,QAAQ8iH,GAA6B,IAC/G,CACD,IAAIO,GAAe,SAAAjxF,GAAM,OAAI,IAAIoyD,KAAKgzB,aAAaD,GAAAA,UAAgCthD,OAAO7jC,EAAjE,EACrBkxF,GAA6B,WAC7B,IAAIC,EAAmB,CAAC,EACxB,OAAO,SAAAnvD,GACH,KAAMA,KAAUmvD,GAAmB,CAC/B,GAAI,MAAQF,GAAa,GAErB,OADAE,EAAiBnvD,IAAU,GACpB,EAEXmvD,EAAiBnvD,GAAU,CAAC,EAC5B,IAAK,IAAIrtD,EAAI,EAAGA,EAAI,KAAMA,EACtBw8G,EAAiBnvD,GAAQivD,GAAat8G,IAAMA,CAEnD,CACD,OAAOw8G,EAAiBnvD,EAC3B,CACJ,CAfgC,GAgB7BovD,GAAoB,SAAAC,GACpB,IAAIC,EAAyBJ,GAA0B/L,GAAAA,UACvD,OAAKmM,EAGED,EAAWhjH,MAAM,IAAI0B,KAAI,SAAA6sD,GAAI,OAAIA,KAAQ00D,EAAyB77G,OAAO67G,EAAuB10D,IAASA,CAA5E,IAAkFnkD,KAAK,IAFhH44G,CAGd,EACGE,GAAsB,SAAA7jH,GAAG,OAAIA,EAAIE,QAAQ,cAAe,OAA/B,EAEzB4jH,GAAiB,SAAA7+G,GAAI,OAAIA,EAAK/E,QAAQ,UAAW,MAA5B,EACrB6jH,GAAc,CACd9nC,IAAK,CACDA,IAAK,WAET+nC,UAAW,CACPC,QAAS,QAEbC,SAAU,CACND,QAAS,OACT9nC,KAAM,UACN3pD,MAAO,OACPypD,IAAK,WAETkoC,iBAAkB,CACdF,QAAS,OACT9nC,KAAM,UACN3pD,MAAO,OACPypD,IAAK,UACLD,KAAM,UACND,OAAQ,UACRzoC,OAAQ,WAEZ8wE,SAAU,CACNpoC,KAAM,UACND,OAAQ,UACRzoC,OAAQ,WAEZ9gB,MAAO,CACHA,MAAO,QAEX6xF,YAAa,CACT7xF,MAAO,OACPypD,IAAK,WAETqoC,aAAc,CACVnoC,KAAM,UACN3pD,MAAO,QAEX+xF,UAAW,CAAC,EACZC,UAAW,CACPxoC,KAAM,UACND,OAAQ,WAEZ0oC,UAAW,CACPtoC,KAAM,WAEVA,KAAM,CACFA,KAAM,YAGd7/E,OAAOC,eAAewnH,GAAa,qBAAsB,CACrD7rH,IAAK,WACD,IAAIwsH,EAAiBhgC,KAAKC,eAAe8yB,GAAAA,UAAgC7yB,kBACzE,MAAO,CACHzI,KAAMuoC,EAAevoC,KACrB3pD,MAAOkyF,EAAelyF,MACtBypD,IAAKyoC,EAAezoC,IACpBD,KAAM,UACND,OAAQ,UAEf,IAEL,IAAI4oC,GAAgB,SAAAxuD,GAAM,MAAI,kBAAoBA,GAAU4tD,GAAY5tD,EAAOrjD,cAArD,EACtB8xG,GAAsB,CACtBC,WAAY,SAASC,EAAYC,GAC7B,IAAIxyF,EAAO,IAAInxB,KAAK,KAAM0jH,EAAY,GAAI,GAI1C,OAHiB7B,GAAiB,CAC9BzwF,MAAOuyF,GADM9B,CAEd1wF,EAEN,EACD4jC,OAAQ,SAAS2uD,EAAYC,GACzB,IAAIxyF,EAAO,IAAInxB,KAAK,EAAG0jH,EAAY,GAAI,GAKnC7xE,EAJa6wE,GAAeb,GAAiB,CAC7ChnC,IAAK,UACLzpD,MAAOuyF,GAFqB9B,CAG7B1wF,IACoB5xB,MAAM,KAAKm4B,QAAO,SAAAkvD,GAAI,OAAIA,EAAKtoF,QAAQ,MAAQ,CAAzB,IAC7C,OAAI,IAAMuzC,EAAMh0C,OACLg0C,EAAM,GACN,IAAMA,EAAMh0C,OACZg0C,EAAM,GAAGh0C,OAASg0C,EAAM,GAAGh0C,OAASg0C,EAAM,GAAKA,EAAM,GAEzD2xE,GAAoBC,WAAWC,EAAYC,EACrD,GAEL,IACIziD,OAAQ,WACJ,MAAO,MACV,EACD8iB,cAAe,SAASjvB,EAAQxyD,GAC5B,IAAIohH,EAAc,CACdC,KAAM,OACN99B,YAAa,QACbC,OAAQ,UACThxB,GAAU,QAEb,OADAxyD,EAAO,WAAaA,EAAOA,EAAO,aAC3BR,MAAMkT,MAAM,KAAM,IAAIlT,MAAM,KAAKd,KAAI,SAACjF,EAAG0nH,GAAJ,OAAmBF,GAAoBjhH,GAAMmhH,EAAYC,EAAzD,GAC/C,EACDt/B,YAAa,SAAStvB,GAClB,IAAIr0D,EAAU,SAAAq0D,GAAM,OAAIhzD,MAAMkT,MAAM,KAAM,IAAIlT,MAAM,IAAId,KAAI,SAACjF,EAAG6nH,GAAJ,OAAiBhC,GAAiB,CAC1FgB,QAAS9tD,GADgE8sD,CAE1E,IAAI7hH,KAAK,EAAG,EAAG6jH,GAF0C,GAAxC,CAAN,CAEiB,CAC3BD,KAAM,OACN99B,YAAa,QACb58D,MAAO,SACP68D,OAAQ,UACThxB,GAAU,SACb,OAAOr0D,CACV,EACD6jF,eAAgB,WACZ,IAAIu/B,EAAkBjC,GAAiB,CACnCjnC,KAAM,UACNmpC,QAAQ,IAEZ,MAAO,CAAC,EAAG,IAAI9iH,KAAI,SAAAm8E,GACf,IAAI4mC,EAAiB7B,GAAa,GAC9B8B,EAAYH,EAAgB,IAAI9jH,KAAK,EAAG,EAAG,EAAGo9E,IAAQ79E,MAAMykH,GAChE,OAAI,IAAMC,EAAUpmH,OACT,IAEMomH,EAAU,GAAGpmH,OAASomH,EAAU,GAAGpmH,OAASomH,EAAU,GAAKA,EAAU,IACpExkH,MACrB,GACJ,EACDs1D,OAAQ,SAAS5jC,EAAMimF,GACnB,GAAKjmF,EAAL,CAGA,IAAKimF,EACD,OAAOjmF,EAEP,oBAAsBimF,GAAYA,EAAQjyB,YAC1CiyB,EAAUA,EAAQ70G,MAAQ60G,GAE9B,IAAI8M,EAAaX,GAAcnM,GAC/B,GAAI8M,EACA,OAAOrC,GAAiBqC,EAAjBrC,CAA6B1wF,GAExC,IAAI4yD,SAAoBqzB,EACxB,OAAIA,EAAQjyB,WAAa,aAAepB,GAAc,WAAaA,EACxD7mF,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAE9B6sG,GAAiBzK,EAAjByK,CAA0B1wF,EAfhC,CAgBJ,EACDtnB,MAAO,SAAS04G,EAAYxtD,GAAQ,IAC5BowB,EAD4B,OAMhC,OAJIpwB,IAAWA,EAAO4f,QAAU,kBAAoB4tC,IAChDA,EAAaG,GAAeH,GAC5Bp9B,EAAY,SAAAh0D,GAAI,OAAIuxF,GAAe,EAAK3tD,OAAO5jC,EAAM4jC,GAArC,GAEb73D,KAAKmiD,SAASkjE,EAAYp9B,GAAapwB,EACjD,EACDovD,yBAA0B,SAAS5B,EAAYxtD,GAAQ,WACnDwtD,EAAaD,GAAkBC,GAC/B,IAAI6B,EAAclnH,KAAKmnH,eAAetvD,GAClC+uB,EAAYy+B,EAAWhjH,MAAM,OAAOm4B,QAAO,SAAAkvD,GAAI,OAAIA,EAAK/oF,OAAS,CAAlB,IACnD,GAAIumH,EAAYvmH,SAAWimF,EAAUjmF,OAArC,CAGA,IAAIymH,EAAWpnH,KAAKqnH,kBAAkBH,EAAatgC,GAC/C0gC,EAAqB,SAAAC,GACrB,IApKYC,EAAQC,EAoKhBC,EAAc,SAACN,EAAUG,GACzB,IAAII,EAAaJ,EAAY,GAAK,EAClC,OAAO,IAAIzkH,KAAKskH,EAASvpC,KAAMupC,EAASlzF,MAAOkzF,EAASzpC,KAAMypC,EAASlnC,MAAQynC,GAAc,GAAIP,EAAShnC,QAASgnC,EAAS/mC,QAC/H,CAHiB,CAGf+mC,EAAUG,GACb,GAxKYC,EAwKSpC,GAAkB,EAAKvtD,OAAO6vD,EAAY7vD,IAxK3C4vD,EAwKqDpC,EAxKxCE,GAAoBiC,KAAYjC,GAAoBkC,GAyKjF,OAAOC,CAEd,EACD,OAAOJ,GAAmB,IAAUA,GAAmB,EAXtD,CAYJ,EACDD,kBAAmB,SAASH,EAAatgC,GACrC,IAAI7B,EAAc,IAAIjiF,KAClBskH,EAAW,CACXvpC,KAAMkH,EAAYnF,cAClB1rD,MAAO6wD,EAAY3F,WACnBzB,IAAKoH,EAAY/E,UACjBE,MAAO,EACPE,QAAS,EACTC,QAAS,GAUb,OARA6mC,EAAYxmH,SAAQ,SAACiqG,EAAYxpG,GAC7B,IAAIymH,EAAWhhC,EAAUzlF,GACrBiN,EAAS0pB,SAAS8vF,EAAU,IAC5B,UAAYjd,IACZv8F,GAAU,GAEdg5G,EAASzc,GAAcv8F,CAC1B,IACMg5G,CACV,EACDS,oBAAqB,SAAShwD,GAC1B,MAAI,kBAAoBA,GAAYA,EAAOxyD,MAAQwyD,EAAOA,OAGnD73D,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAFtB,SAAW+/C,EAAO3jC,KAGhC,EACD4zF,kBAAmB,SAASjwD,GACxB,MAAI,kBAAoBA,GAAYA,EAAOxyD,MAAQwyD,EAAOA,OAGnD73D,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAFtB,SAAW+/C,EAAO8tD,OAGhC,EACD7D,iBAAkB,WACd,OAAOsD,GAAkBJ,GAAe,IAAIliH,KAAK,KAAM,EAAG,EAAG,GAAI,IAAK,CAClE46E,KAAM,UACND,OAAQ,UACRopC,QAAQ,KACRjlH,QAAQ,MAAO,GACtB,EACDulH,eAAgB,SAAStvD,GACrB,GAAI,kBAAoBA,EACpB,OAAO73D,KAAKmiD,SAAS0V,GAEzB,IAAImvD,GAAavhE,EAAAA,GAAAA,GAAO,CAAC,EAAGggE,GAAY5tD,EAAOrjD,gBAC3Cyf,EAAO,IAAInxB,KAAK,KAAM,EAAG,EAAG,EAAG,EAAG,GAClCilH,EAAgBpD,GAAiBqC,EAAjBrC,CAA6B1wF,GAEjD,OADA8zF,EAAgB3C,GAAkB2C,GAC3B,CAAC,CACJ3uH,KAAM,OACN8E,MAAO,GACR,CACC9E,KAAM,QACN8E,MAAO,GACR,CACC9E,KAAM,MACN8E,MAAO,GACR,CACC9E,KAAM,QACN8E,MAAO,GACR,CACC9E,KAAM,UACN8E,MAAO,GACR,CACC9E,KAAM,UACN8E,MAAO,IACR6F,KAAI,SAAA2lF,GAAI,MAAK,CACZtwF,KAAMswF,EAAKtwF,KACX+H,MAAO4mH,EAAc3mH,QAAQsoF,EAAKxrF,OAF3B,IAGPs8B,QAAO,SAAAkvD,GAAI,OAAIA,EAAKvoF,OAAS,CAAlB,IAAqBi4B,MAAK,SAACrZ,EAAGC,GAAJ,OAAUD,EAAE5e,MAAQ6e,EAAE7e,KAAtB,IAA6B4C,KAAI,SAAA2lF,GAAI,OAAIA,EAAKtwF,IAAT,GACjF,GCvRD2hH,GAAU,qBAAuB30B,KACjC4hC,GAAyB,CACzB/B,UAAW,QACXC,UAAW,SACXN,SAAU,kBACVE,SAAU,YACVC,YAAa,SACbC,aAAc,SACdiC,eAAgB,QAChBtqC,IAAK,IACLE,KAAM,IACNqqC,mBAAoB,gBACpBrC,iBAAkB,6BAClB3xF,MAAO,OACPiyF,UAAW,KACXT,UAAW,OACX9nC,QAAS,MACTF,KAAM,KACND,OAAQ,KACRzoC,OAAQ,KACRwoC,YAAa,MACb,iBAAkB,2BAElB2qC,GAAuB,CACvBtqC,KAAM,CAAC,IAAK,KAAM,QAClBF,IAAK,CAAC,IAAK,MACXzpD,MAAO,CAAC,IAAK,KAAM,MAAO,QAC1BgsD,MAAO,CAAC,IAAK,KAAM,IAAK,KAAM,MAC9BE,QAAS,CAAC,IAAK,MACfC,QAAS,CAAC,IAAK,MACf/zD,aAAc,CAAC,IAAK,KAAM,QAE1B87F,IAAmBhsD,EAAAA,GAAAA,GAAmB,CACtC4H,OAAQ,WACJ,MAAO,MACV,EACDqkD,oBAAqB,SAASxwD,GAC1B,OAAOmwD,GAAuBnwD,EAAOrjD,cACxC,EACD8zG,eAAgB,SAAS3+G,GACrB,OAAO3J,KAAKqoH,oBAAoB1+G,IAAYA,CAC/C,EACDk+G,oBAAqB,SAAShwD,GAC1B,OAAQ,IAAM73D,KAAKsoH,eAAezwD,GAAQz2D,QAAQ,OACrD,EACD0mH,kBAAmB,SAASjwD,GACxB,OAAQ,IAAM73D,KAAKsoH,eAAezwD,GAAQz2D,QAAQ,OACrD,EACD+lH,eAAgB,SAAStvD,GACrB,IAAIluD,EAAU3J,KAAKqoH,oBAAoBxwD,IAAWA,EAC9Cr0D,EAAS,GAQb,OAPAqpD,EAAAA,EAAAA,IAAKljD,EAAQtH,MAAM,QAAQ,SAACvD,EAAG6rG,IAC3B99C,EAAAA,EAAAA,IAAKs7D,IAAsB,SAACI,EAAUC,GAC9BA,EAAiBjjH,SAASolG,IAC1BnnG,EAAOpD,KAAKmoH,EAEnB,GACJ,IACM/kH,CACV,EACDsjF,cAAe,SAASjvB,GACpB,OAAOyyB,GAAAA,cAA+BzyB,EACzC,EACDsvB,YAAa,SAAStvB,GAClB,OAAOyyB,GAAAA,YAA6BzyB,EACvC,EACDovB,gBAAiB,SAASpvB,GACtB,OAAOyyB,GAAAA,gBAAiCzyB,EAC3C,EACDwvB,eAAgB,SAASxvB,GACrB,OAAOyyB,GAAAA,eAAgCzyB,EAC1C,EACDiqD,iBAAkB,WACd,MAAO,GACV,EACD2G,eAAgB,SAAS5wD,GAKrB,IAJA,IAAI6wD,EAAS,IAAI5lH,KAAK,KAAM,EAAG,GAAI,GAAI,EAAG,EAAG,GACzC6lH,EAAS,IAAI7lH,KAAK,KAAM,EAAG,GAAI,GAAI,EAAG,EAAG,GACzC8lH,EAAkB5oH,KAAK63D,OAAO6wD,EAAQ7wD,GACtCgxD,EAAkB7oH,KAAK63D,OAAO8wD,EAAQ9wD,GACjClvD,EAAI,EAAGA,EAAIigH,EAAgBjoH,OAAQgI,IACxC,GAAIigH,EAAgBjgH,KAAOkgH,EAAgBlgH,GACvC,OAAQgzD,MAAM7jC,SAAS8wF,EAAgBjgH,IAGlD,EACDkvD,OAAQ,SAAS5jC,EAAMimF,GACnB,GAAKjmF,EAAL,CAGA,IAAKimF,EACD,OAAOjmF,EAEX,IAAIg0D,EACJ,GAAI,oBAAsBiyB,EACtBjyB,EAAYiyB,OACT,GAAIA,EAAQjyB,UACfA,EAAYiyB,EAAQjyB,eAGpB,GADAiyB,EAAUA,EAAQ70G,MAAQ60G,GACtBxpD,EAAAA,EAAAA,IAASwpD,GAET,OADAA,EAAU8N,GAAuB9N,EAAQ1lG,gBAAkB0lG,EACpDsB,GAAAA,cAAiCsN,GAAqB5O,EAASl6G,KAA9B8oH,CAAoC70F,IAGpF,GAAKg0D,EAGL,OAAOA,EAAUh0D,EAnBhB,CAoBJ,EACDtnB,MAAO,SAAShG,EAAMkxD,GAClB,IACIkxD,EACA9gC,EAFAx4B,EAAOzvD,KAGX,GAAK2G,EAAL,CAGA,IAAKkxD,EACD,OAAO73D,KAAK2M,MAAMhG,EAAM,aAE5B,GAAIkxD,EAAO4f,OACP,OAAO5f,EAAO4f,OAAO9wE,GAEzB,GAAI,kBAAoBkxD,GAAWmwD,GAAuBnwD,EAAOrjD,eAE1D,CACHyzE,EAAY,SAAA/pF,GACR,IAAIyI,EAAO8oD,EAAKoI,OAAO35D,EAAO25D,GAC9B,OAAO2jD,GAAAA,cAAiC70G,GAAM,EACjD,EACD,IACIoiH,EAAaC,GAAkB/gC,EACrB,CAAZ,MAAOh/E,GAAK,CACjB,MATG8/G,EAAalxD,EAUjB,GAAIkxD,EAEA,OADApiH,EAAO60G,GAAAA,cAAiC70G,GAAM,GACvCsiH,GAAkBF,EAAY/oH,KAA9BipH,CAAoCtiH,GAE/C2Y,GAAAA,EAAAA,IAAW,SACX,IAAI9b,EAAS,IAAIV,KAAK6D,GACtB,GAAKnD,IAAUm4D,MAAMn4D,EAAOkyD,WAG5B,OAAOlyD,CA3BN,CA4BJ,EACD0lH,oBAAqB,WACjB,IAAI/nH,EAAQgoH,GAAAA,yBAAyC,SAAAnzD,GAAM,OAAIozD,GAAmBpzD,EAAvB,IAC3D,YAAO,IAAW70D,EApJM,EAoJ8BA,CACzD,IAED45G,IACAqN,GAAiBhxD,OAAOiyD,IAE5B,IChLWC,GDgLX,iBElKIC,IAAiB9jE,EAAAA,GAAAA,IAAO,EAAM,CAAC,ECbN,CACzBspD,GAAI,CACAya,IAAK,MACLC,GAAI,KACJC,OAAQ,SACRC,MAAO,QACPC,MAAO,QACPC,KAAM,OACNC,QAAS,aACTC,OAAQ,YACRC,OAAQ,SACRC,KAAM,OACNC,GAAI,KACJ,gCAAiC,qBACjC,+BAAgC,SAChC,sBAAuB,WACvB,gCAAiC,kBACjC,qBAAsB,yBACtB,+BAAgC,uBAChC,mBAAoB,wBACpB,6BAA8B,sBAC9B,0BAA2B,yCAC3B,oCAAqC,mCACrC,oBAAqB,mBACrB,8BAA+B,iBAC/B,mBAAoB,mBACpB,6BAA8B,iBAC9B,qBAAsB,sBACtB,+BAAgC,qBAChC,qBAAsB,+BACtB,+BAAgC,6BAChC,mBAAoB,mBACpB,6BAA8B,iBAC9B,kBAAmB,mBACnB,6BAA8B,gCAC9B,yBAA0B,0BAC1B,wBAAyB,wBACzB,wBAAyB,gBACzB,yBAA0B,aAC1B,wBAAyB,OACzB,mBAAoB,aACpB,6BAA8B,SAC9B,2BAA4B,OAC5B,+BAAgC,0BAChC,8BAA+B,wBAC/B,8BAA+B,gBAC/B,+BAAgC,aAChC,yCAA0C,cAC1C,yCAA0C,cAC1C,6CAA8C,uBAC9C,gCAAiC,+BACjC,yCAA0C,6BAC1C,uCAAwC,2BACxC,4CAA6C,6BAC7C,0CAA2C,2BAC3C,gCAAiC,aACjC,8BAA+B,WAC/B,4BAA6B,gBAC7B,0BAA2B,sBAC3B,uBAAwB,QACxB,oBAAqB,KACrB,oBAAqB,KACrB,oBAAqB,KACrB,wBAAyB,SACzB,0BAA2B,WAC3B,+BAAgC,kBAChC,sCAAuC,mBACvC,qCAAsC,gBACtC,sCAAuC,2BACvC,oCAAqC,oBACrC,oCAAqC,oBACrC,yBAA0B,OAC1B,yBAA0B,OAC1B,0BAA2B,KAC3B,2BAA4B,MAC5B,sBAAuB,WACvB,yBAA0B,kBAC1B,kCAAmC,yBACnC,yBAA0B,UAC1B,8CAA+C,6BAC/C,2CAA4C,0CAC5C,2DAA4D,gDAC5D,0CAA2C,iBAC3C,gCAAiC,iBACjC,oCAAqC,gCACrC,mCAAoC,6BACpC,mCAAoC,mCACpC,6BAA8B,uBAC9B,+BAAgC,UAChC,4BAA6B,cAC7B,4BAA6B,OAC7B,mCAAoC,OACpC,qCAAsC,SACtC,8BAA+B,SAC/B,gCAAiC,WACjC,yCAA0C,+CAC1C,qCAAsC,iBACtC,iCAAkC,oDAClC,wBAAyB,UACzB,oCAAqC,YACrC,kCAAmC,QACnC,yCAA0C,QAC1C,sCAAuC,SACvC,yCAA0C,iBAC1C,oCAAqC,YACrC,4CAA6C,wBAC7C,uCAAwC,eACxC,+CAAgD,2BAChD,0CAA2C,cAC3C,wCAAyC,WACzC,2CAA4C,mBAC5C,wCAAyC,YACzC,uCAAwC,UACxC,gDAAiD,QACjD,8CAA+C,MAC/C,2BAA4B,aAC5B,6BAA8B,eAC9B,sBAAuB,OACvB,uBAAwB,QACxB,kCAAmC,iBACnC,mCAAoC,kBACpC,8BAA+B,gBAC/B,mCAAoC,eACpC,qCAAsC,kBACtC,2BAA4B,YAC5B,wBAAyB,WACzB,mCAAoC,oBACpC,wBAAyB,WACzB,mCAAoC,oBACpC,wBAAyB,WACzB,mCAAoC,oBACpC,wBAAyB,WACzB,mCAAoC,oBACpC,0BAA2B,aAC3B,6BAA8B,MAC9B,+BAAgC,QAChC,sCAAuC,cACvC,uCAAwC,eACxC,sBAAuB,SACvB,2BAA4B,uBAC5B,uBAAwB,eACxB,yBAA0B,aAC1B,0BAA2B,gBAC3B,gCAAiC,8BACjC,uBAAwB,yBACxB,+BAAgC,iBAChC,wCAAyC,uCACzC,oCAAqC,WACrC,4BAA6B,KAC7B,gCAAiC,SACjC,kCAAmC,uBACnC,gCAAiC,0BACjC,wBAAyB,SACzB,uBAAwB,QACxB,4BAA6B,cAC7B,0BAA2B,WAC3B,wBAAyB,SACzB,0BAA2B,0CAC3B,8BAA+B,0BAC/B,2BAA4B,aAC5B,2BAA4B,aAC5B,yBAA0B,oBAC1B,0BAA2B,YAC3B,qCAAsC,iBACtC,qCAAsC,gBACtC,oCAAqC,QACrC,0CAA2C,oBAC3C,0BAA2B,0CAC3B,8BAA+B,0BAC/B,yBAA0B,oBAC1B,iCAAkC,MAClC,mBAAoB,8BACpB,yBAA0B,KAC1B,mBAAoB,sBACpB,2BAA4B,MAC5B,eAAgB,WAChB,mBAAoB,gBACpB,mBAAoB,YACpB,oBAAqB,kBACrB,uBAAwB,YACxB,yBAA0B,cAC1B,yBAA0B,cAC1B,oBAAqB,YACrB,gCAAiC,gBACjC,+BAAgC,qBAChC,wBAAyB,aACzB,0BAA2B,eAC3B,kCAAmC,4BACnC,+BAAgC,yBAChC,+BAAgC,qBAChC,+BAAgC,MAChC,wBAAyB,aACzB,2BAA4B,gBAC5B,yBAA0B,cAC1B,2BAA4B,gBAC5B,wBAAyB,aACzB,8BAA+B,0BAC/B,4BAA6B,wBAC7B,2BAA4B,uBAC5B,8BAA+B,0BAC/B,+BAAgC,UAChC,mCAAoC,aACpC,iCAAkC,WAClC,qCAAsC,cACtC,oCAAqC,SACrC,8BAA+B,mBAC/B,8BAA+B,QAC/B,iCAAkC,eAClC,+BAAgC,SAChC,8BAA+B,QAC/B,+BAAgC,SAChC,gCAAiC,UACjC,+BAAgC,SAChC,oCAAqC,eACrC,iCAAkC,YAClC,4BAA6B,aAC7B,8BAA+B,QAC/B,2BAA4B,KAC5B,uCAAwC,YACxC,qCAAsC,UACtC,oCAAqC,SACrC,qCAAsC,UACtC,sCAAuC,WACvC,qCAAsC,UACtC,0BAA2B,MAC3B,2BAA4B,OAC5B,+BAAgC,YAChC,4BAA6B,QAC7B,6BAA8B,SAC9B,kCAAmC,eACnC,mCAAoC,gBACpC,uCAAwC,qBACxC,oCAAqC,iBACrC,qCAAsC,UACtC,oCAAqC,gBACrC,qBAAsB,UACtB,2CAA4C,iEAC5C,6CAA8C,mEAC9C,0CAA2C,cAC3C,4CAA6C,gBAC7C,8CAA+C,mBAC/C,gDAAiD,qBACjD,8BAA+B,cAC/B,+BAAgC,WAChC,6BAA8B,QAC9B,4BAA6B,WAC7B,6BAA8B,yLAC9B,sBAAuB,MACvB,wBAAyB,QACzB,uBAAwB,OACxB,wBAAyB,eACzB,sBAAuB,aACvB,oBAAqB,eACrB,uBAAwB,qBACxB,wBAAyB,WACzB,+BAAgC,QAChC,0BAA2B,qBAC3B,6BAA8B,WAC9B,sBAAuB,MACvB,qBAAsB,KACtB,yBAA0B,UAC1B,wBAAyB,SACzB,+BAAgC,gBAChC,2BAA4B,YAC5B,iCAAkC,kBAClC,wCAAyC,SACzC,2CAA4C,iBAC5C,sCAAuC,eACvC,8CAA+C,2BAC/C,yCAA0C,kBAC1C,iDAAkD,8BAClD,4CAA6C,cAC7C,0CAA2C,WAC3C,6CAA8C,mBAC9C,0CAA2C,YAC3C,yCAA0C,WAC1C,4CAA6C,eAC7C,yCAA0C,aAC1C,uCAAwC,YACxC,wCAAyC,aACzC,kCAAmC,oBACnC,uCAAwC,0BACxC,iCAAkC,WAClC,kCAAmC,MACnC,mCAAoC,OACpC,qCAAsC,0BACtC,kCAAmC,YACnC,mCAAoC,MACpC,mCAAoC,iBACpC,qCAAsC,aACtC,sCAAuC,cACvC,0CAA2C,OAC3C,6CAA8C,UAC9C,wCAAyC,eACzC,wCAAyC,eACzC,uCAAwC,SACxC,oCAAqC,MACrC,qCAAsC,eACtC,qCAAsC,mBACtC,0CAA2C,oBAC3C,yCAA0C,mBAC1C,uBAAwB,UACxB,0BAA2B,cAC3B,0BAA2B,mBAC3B,oBAAqB,OACrB,qBAAsB,aACtB,oBAAqB,OACrB,sBAAuB,SACvB,oBAAqB,WACrB,qBAAsB,YACtB,oBAAqB,OACrB,sBAAuB,gBACvB,yBAA0B,YAC1B,2BAA4B,cAC5B,yBAA0B,YAC1B,0BAA2B,aAC3B,sBAAuB,SACvB,8BAA+B,kBAC/B,8BAA+B,kBAC/B,2BAA4B,eAC5B,0BAA2B,cAC3B,yBAA0B,aAC1B,2BAA4B,eAC5B,0BAA2B,cAC3B,4BAA6B,gBAC7B,yBAA0B,aAC1B,wBAAyB,eACzB,oBAAqB,OACrB,oBAAqB,OACrB,qBAAsB,mBACtB,2BAA4B,eAC5B,+BAAgC,oBAChC,8BAA+B,mBAC/B,8BAA+B,mBAC/B,gCAAiC,qBACjC,iCAAkC,sBAClC,4BAA6B,gBAC7B,yBAA0B,aAC1B,2BAA4B,eAC5B,8BAA+B,kBAC/B,+BAAgC,mBAChC,sBAAuB,SACvB,sBAAuB,SACvB,sBAAuB,SACvB,qBAAsB,QACtB,qBAAsB,QACtB,sBAAuB,SACvB,2BAA4B,QAC5B,+BAAgC,aAChC,0BAA2B,aAC3B,yBAA0B,YAC1B,0BAA2B,aAC3B,wBAAyB,WACzB,+BAAgC,mBAChC,iCAAkC,qBAClC,sBAAuB,SACvB,oBAAqB,OACrB,uBAAwB,UACxB,sBAAuB,SACvB,qBAAsB,QACtB,sBAAuB,SACvB,oBAAqB,OACrB,qBAAsB,QACtB,sBAAuB,SACvB,uBAAwB,UACxB,iCAAkC,qBAClC,kCAAmC,QACnC,8BAA+B,mDAC/B,2CAA4C,kCAC5C,sCAAuC,6BACvC,wCAAyC,wBACzC,6CAA8C,6BAC9C,wCAAyC,iCACzC,yCAA0C,8CAC1C,oCAAqC,yCACrC,6BAA8B,qBAC9B,yCAA0C,iCAC1C,8BAA+B,gBAC/B,8BAA+B,SAC/B,4BAA6B,UAC7B,4BAA6B,UAC7B,8BAA+B,SAC/B,gCAAiC,WACjC,8BAA+B,eAC/B,+BAAgC,UAChC,kCAAmC,kBACnC,+BAAgC,eAChC,sCAAuC,kBACvC,mCAAoC,yBACpC,gDAAiD,UACjD,qDAAsD,OACtD,gDAAiD,UACjD,qDAAsD,OACtD,sCAAuC,SACvC,2CAA4C,OAC5C,2CAA4C,gBAC5C,gDAAiD,SACjD,sCAAuC,SACvC,2CAA4C,SAC5C,uDAAwD,uCACxD,0DAA2D,6CAC3D,mCAAoC,SACpC,yDAA0D,kCAC1D,sDAAuD,iCACvD,oDAAqD,4BACrD,gDAAiD,4BACjD,yDAA0D,8BAC1D,sDAAuD,6BACvD,oDAAqD,uBACrD,gDAAiD,uBACjD,yDAA0D,4BAC1D,4DAA6D,8BAC7D,sDAAuD,2BACvD,yDAA0D,6BAC1D,oDAAqD,uBACrD,uDAAwD,6BACxD,gDAAiD,8BACjD,uDAAwD,wBACxD,0DAA2D,0BAC3D,oDAAqD,uBACrD,uDAAwD,yBACxD,kDAAmD,qBACnD,qDAAsD,2BACtD,8CAA+C,4BAC/C,uDAAwD,yBACxD,0DAA2D,2BAC3D,oDAAqD,wBACrD,uDAAwD,0BACxD,kDAAmD,sBACnD,qDAAsD,4BACtD,8CAA+C,6BAC/C,yDAA0D,2BAC1D,4DAA6D,6BAC7D,sDAAuD,0BACvD,yDAA0D,4BAC1D,oDAAqD,wBACrD,uDAAwD,8BACxD,6CAA8C,WAC9C,sDAAuD,0BACvD,yDAA0D,gCAC1D,6CAA8C,OAC9C,qDAAsD,gBACtD,iDAAkD,YAClD,8CAA+C,OAC/C,sDAAuD,gBACvD,+CAAgD,WAChD,uDAAwD,gBACxD,2DAA4D,WAC5D,4BAA6B,UAC7B,8BAA+B,YAC/B,6BAA8B,YAC9B,+BAAgC,aAChC,2BAA4B,SAC5B,+BAAgC,gBAChC,+BAAgC,gBAChC,+BAAgC,iBAChC,wBAAyB,OACzB,wBAAyB,OACzB,4BAA6B,YAC7B,4BAA6B,YAC7B,wBAAyB,OACzB,0BAA2B,SAC3B,6BAA8B,YAC9B,6BAA8B,aAC9B,6BAA8B,aAC9B,6BAA8B,aAC9B,6BAA8B,aAC9B,kCAAmC,QACnC,mCAAoC,SACpC,mCAAoC,SACpC,6BAA8B,aAC9B,6BAA8B,aAC9B,+BAAgC,eAChC,8BAA+B,cAC/B,qCAAsC,sBACtC,yCAA0C,WAC1C,2CAA4C,aAC5C,sCAAuC,uBACvC,oCAAqC,qBACrC,qCAAsC,OACtC,sCAAuC,QACvC,8BAA+B,cAC/B,yBAA0B,QAC1B,4BAA6B,YAC7B,mCAAoC,mBACpC,4CAA6C,YAC7C,2CAA4C,WAC5C,6BAA8B,aAC9B,4BAA6B,YAC7B,8BAA+B,eAC/B,4BAA6B,YAC7B,6BAA8B,aAC9B,4BAA6B,YAC7B,gCAAiC,iBACjC,8BAA+B,eAC/B,qCAAsC,uBACtC,mCAAoC,qBACpC,8BAA+B,cAC/B,uBAAwB,MACxB,wBAAyB,OACzB,yBAA0B,QAC1B,6BAA8B,aAC9B,0BAA2B,SAC3B,gCAAiC,iBACjC,8BAA+B,eAC/B,wBAAyB,OACzB,0BAA2B,SAC3B,oCAAqC,kBACrC,kCAAmC,kBACnC,oCAAqC,eACrC,qCAAsC,gBACtC,qCAAsC,gBACtC,qCAAsC,gBACtC,qCAAsC,gBACtC,mBAAoB,KACpB,mBAAoB,KACpB,mBAAoB,KACpB,2BAA4B,KAC5B,+BAAgC,SAChC,wCAAyC,eACzC,sCAAuC,eACvC,6CAA8C,eAC9C,0CAA2C,sBAC3C,qBAAsB,SACtB,yBAA0B,aAC1B,uBAAwB,WACxB,0BAA2B,eAC3B,qBAAsB,SACtB,oBAAqB,QACrB,qBAAsB,SACtB,yBAA0B,OAC1B,4BAA6B,UAC7B,sBAAuB,UACvB,mBAAoB,OACpB,qBAAsB,SACtB,wBAAyB,YACzB,mBAAoB,OACpB,sBAAuB,OACvB,2BAA4B,YAC5B,yBAA0B,UAC1B,uBAAwB,QACxB,0BAA2B,WAC3B,yBAA0B,UAC1B,uBAAwB,QACxB,0BAA2B,WAC3B,yBAA0B,UAC1B,yBAA0B,UAC1B,sBAAuB,OACvB,2BAA4B,aAC5B,yBAA0B,WAC1B,4BAA6B,cAC7B,2BAA4B,aAC5B,6BAA8B,gBAC9B,gCAAiC,mBACjC,yBAA0B,UAC1B,0BAA2B,WAC3B,4BAA6B,aAC7B,mCAAoC,qBACpC,0BAA2B,WAC3B,mCAAoC,qBACpC,6BAA8B,eAC9B,6BAA8B,cAC9B,sBAAuB,OACvB,0BAA2B,WAC3B,0BAA2B,YAC3B,iCAAkC,mBAClC,2BAA4B,aAC5B,iCAAkC,mBAClC,uBAAwB,QACxB,4BAA6B,cAC7B,yBAA0B,UAC1B,uBAAwB,QACxB,2BAA4B,YAC5B,oBAAqB,KACrB,iCAAkC,mBAClC,sCAAuC,YACvC,mCAAoC,qBACpC,qCAAsC,uBACtC,iCAAkC,gBAClC,qCAAsC,8BACtC,oCAAqC,6BACrC,sCAAuC,+BACvC,sBAAuB,QACvB,2BAA4B,QAC5B,yBAA0B,MAC1B,8BAA+B,WAC/B,+BAAgC,YAChC,qCAAsC,mBACtC,iCAAkC,eAClC,qCAAsC,qBACtC,gCAAiC,eACjC,0BAA2B,MAC3B,6BAA8B,WAC9B,gCAAiC,cACjC,gCAAiC,cACjC,sCAAuC,oBACvC,uCAAwC,6GACxC,6CAA8C,gEAC9C,4CAA6C,qJAC7C,mDAAoD,4KACpD,2CAA4C,0HAC5C,uCAAwC,uBACxC,wCAAyC,wBACzC,iDAAkD,wCAClD,+DAAgE,2KAChE,uDAAwD,yHACxD,0CAA2C,kCAC3C,mDAAoD,0CACpD,eAAgB,OAChB,eAAgB,OAChB,oBAAqB,aACrB,sBAAuB,eACvB,qBAAsB,eACtB,6BAA8B,uBAC9B,iBAAkB,UAClB,kBAAmB,WACnB,qBAAsB,cACtB,kBAAmB,OACnB,+BAAgC,iBAChC,gCAAiC,kBACjC,2BAA4B,gBAC5B,wBAAyB,iBACzB,2BAA4B,oBAC5B,oCAAqC,+BACrC,kCAAmC,gCD3lBvCC,GAAc,CAAC,EACfC,IAAsBhuD,EAAAA,GAAAA,GAAmB,CACzC4H,OAAQ,WACJ,MAAO,MACV,EACDqmD,YAAad,GACblzB,KAAM,SAASi0B,IACX7kE,EAAAA,GAAAA,IAAO,EAAMzlD,KAAKqqH,YAAaC,EAClC,EACDC,mBAAoB,IACpBv5C,MAAO,SAASw5C,GACZxqH,KAAKuqH,mBAAqBC,CAC7B,EACDC,eAAgB,SAAS9jH,GACrB,IAAI8oD,EAAOzvD,KACP0qH,EAAQ,IAAI9yF,OAAO,kBAAoB63B,EAAK86D,mBAAqB,QAAU96D,EAAK86D,mBAAqB,yBAA0B,KAC/HI,EAAel7D,EAAK86D,mBAAqB96D,EAAK86D,mBAClD,OAAO5jH,EAAK/E,QAAQ8oH,GAAO,SAAChpH,EAAKkN,EAAQ9M,EAAQ8oH,GAC7C,IACIpnH,EADAqnH,EAAgBp7D,EAAK86D,mBAAqBK,EAQ9C,OANI9oH,IAAW6oH,IACXnnH,EAASisD,EAAKoI,OAAO+yD,IAEpBpnH,IACD2mH,GAAYS,GjEdN,SAASjkH,GAC3B,OAAOo+D,EAAgBE,EAAUt+D,GAAM/E,QAAQ,KAAM,KACxD,CiEY8CkpH,CAASF,IAErCh8G,GAAUpL,GAAUqnH,EAC9B,GACJ,EACDE,qBAAsB,WAClB,OAAO/qH,KAAKqqH,WACf,EACDW,cAAe,SAASC,GACpB,OAAIA,EACOd,IAEJ1kE,EAAAA,GAAAA,GAAO,CAAC,EAAG0kE,GAAanqH,KAAK+qH,uBAAuBG,GAAAA,UAC9D,EACDnjC,aAAc,SAASzlF,GACnB,OAAOtC,KAAKmrH,kBAAkB7oH,IAAQtC,KAAKmrH,kBAAkB7oH,EAAK,KACrE,EACD6oH,kBAAmB,SAAS7oH,EAAK0zD,GAAQ,WACjC57D,EAAU8wH,GAAAA,yBAAyC,SAAAl1D,GAAM,OAjD/C,SAACo1D,EAAYp1D,GAC/B,IAAIq1D,EACJ,OAAOD,EAAWp1D,KAAY,OAASA,QAAU,IAAWA,OAAS,EAASA,EAAOxhD,eAAiB,QAAU62G,EAAuBrtH,OAAOyG,QAAQ2mH,GAAYpvH,MAAK,SAAAgb,GAEnK,OADA,OAAYA,EAAZ,MACWxC,gBAAkBwhD,EAAOxhD,aACvC,WAAM,IAAW62G,OAAuB,EAASA,EAAqB,KAAO,CAAC,CAClF,CA2CwEC,CAAgB,EAAKjB,YAAar0D,GAAQ1zD,EAA9C,IAC7D,GAAIlI,EACA,OAAO,WACH,IAAIwD,EAAO,IAAMka,UAAUnX,QAAUkE,MAAMC,QAAQgT,UAAU,IAAMA,UAAU,GAAG/S,MAAM,GAAKF,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,UAAW,GAEjI,OADAla,EAAKgzE,QAAQx2E,GACNmxH,GAAAA,GAAAA,MAAmBvrH,KAAMpC,EACnC,CAER,EACDi6D,OAAQ,SAASv1D,GACb,IAAI2lF,EAAYjoF,KAAK+nF,aAAazlF,GAC9BqzB,EAAS9wB,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,UAAW,GACnD,OAAOmwE,GAAaA,EAAUlwE,MAAM/X,KAAM21B,IAAW,EACxD,IAEL,ME3EI61F,GAAgC,SAAC1lC,EAAWC,GAAZ,OAAyBA,EAAQrwB,UAAYowB,EAAUpwB,WAAassB,GAAAA,mBAA6B,OAAjG,EAQzBypC,GAA4B,SAACC,EAAoBC,EAAkBC,EAAgBvuE,GAC1F,IAAIwuE,EAAY,kBAAMH,EAAmBI,MAAzB,EAChB,OAAQzuE,GACJ,IAAK,SACD,OAAO,EACX,IAAK,SACD,OAAOwuE,IAEX,QACI,GAAIA,IACA,OAAO,EAEX,IACa9lC,EACT2lC,EADA3lC,QAA6BD,EAC7B4lC,EADkB5lC,UAEtB,SAAKz3B,EAAAA,EAAAA,IAAU03B,KAGkBylC,GAA8B1lC,EAAWC,IACrC,IA1BZ,SAACD,EAAWC,EAAS4lC,EAAkBC,GACxE,IAAIG,EAA6BP,GAA8B1lC,EAAWC,GACtEimC,EAAsBJ,EAAiBD,EACvCM,EAAiBnmC,EAAUlE,WAC3BsqC,EAAenmC,EAAQnE,WAC3B,OAAOmqC,GAA8BC,GAAuBC,IAAmBN,GAAoBO,IAAiBN,CACvH,CAoBsDO,CAA+BrmC,EAAWC,EAAS4lC,EAAkBC,IAE3H,EC9BGQ,GAAa,CAAC,MAAO,OAAQ,WAAY,QAAS,cAAe,eAAgB,mBAAoB,gBAAiB,UAC/GC,GAA2B,SAAC3uE,EAAakD,GAChD,IAAI0rE,EAAmB1rE,EAAM5kD,MAAK,SAAAghD,GAE9B,UADY38B,EAAAA,EAAAA,IAAS28B,GAAQ,CAACA,EAAK5jD,KAAM4jD,EAAK33C,MAAQ,CAAC23C,IAC7Cz3C,SAASm4C,EAItB,SACG,IAAW4uE,IAEPA,EADAF,GAAW7mH,SAASm4C,GACDA,GAChB,OACkBkD,EADlB,OAIX,OAAO0rE,CACV,GJnBC,SAAShD,GACPA,EAAuBiD,wBAA0B,gBACjDjD,EAAuBkD,wBAA0B,kBACjDlD,EAAuBmD,iBAAmB,SAC1CnD,EAAuBoD,iBAAmB,UAC7C,CALC,CAKApD,KAA2BA,GAAyB,CAAC,IKCvD,IAEaqD,GAAb,WACI,WAAYvvH,IAAS,eACjB4C,KAAK5C,QAAUA,CAClB,CAHL,yCAII,SAAWwvH,EAAY5vG,GACnB,IAAIiX,EAAO,IAAInxB,KAAK8pH,GACpB,OAAQ5vG,EAAKra,MACT,KAAK2mH,GAAuBiD,wBACxB,OAAOvsH,KAAK6sH,iBAAiB54F,EAAMjX,EAAK8vG,qBAAqB,GAAM,GACvE,KAAKxD,GAAuBkD,wBACxB,OAAOxsH,KAAK6sH,iBAAiB54F,EAAMjX,EAAK8vG,qBAAqB,GAAM,GACvE,KAAKxD,GAAuBmD,iBACxB,OAAOzsH,KAAK6sH,iBAAiB54F,EAAMjX,EAAK8vG,qBAAqB,GAAO,GACxE,KAAKxD,GAAuBoD,iBACxB,OAAO1sH,KAAK6sH,iBAAiB54F,EAAMjX,EAAK8vG,qBAAqB,GAAO,GACxE,QACI,MAAM,IAAIvyH,MAAM,wCAE3B,GAlBL,wBAmBI,SAAW05B,EAAM84F,GACb,IAAIC,GAAgBhtH,KAAKitH,gBAAgBh5F,GAAQ+tD,GAAAA,mBAA6B,QAC1EkrC,EAAeltH,KAAKmtH,gBAAgBl5F,GACpCm5F,EAAoBptH,KAAKqtH,qBAAqBp5F,EAAM84F,GACxD,MAAO,CACHO,OAAQN,EACRpnG,QAASyoC,EAAAA,EAAAA,IAAU6+D,GAA+BA,EAAfF,EACnCO,YAAa,kBAAoBH,EAAoBJ,EAAeI,EAE3E,GA5BL,uCA6BI,SAA0Bn5F,EAAM+4F,EAAcQ,EAAcC,GACxD,IAAI7mG,EAAY6mG,GAAU,EAAI,EAC1BvoC,EAAa,IAAIpiF,KAAKmxB,GAG1B,OAFAixD,EAAWQ,WAAWR,EAAW1C,aAAe57D,GAAa,GAAKomG,IAClE9nC,EAAWQ,WAAWR,EAAW1C,aAAe57D,GAAa,GAAK4mG,IAC3D,IAAI1qH,KAAKoiF,EACnB,GAnCL,0CAoCI,SAA6BjxD,EAAMy5F,EAAUC,GAEzC,OAvCS,KAsCW3tH,KAAK4tH,iBAAiB35F,EAAMy5F,EAAUC,EAE7D,GAvCL,8BAwCI,SAAiB15F,EAAMy5F,EAAUC,GAC7B,IAAI,EAIA3tH,KAAK6tH,WAAW55F,EAAMy5F,GAHTH,EADjB,EACIA,YACQD,EAFZ,EAEIA,OACQ1nG,EAHZ,EAGIA,OAEJ,OAAM8nG,GAAYC,EACPJ,EAAcD,EAEnBI,IAAaC,EACRJ,EAAc3nG,GAEpB8nG,GAAYC,EACN/nG,EAAS0nG,EAEb,CACV,GAxDL,6BAyDI,SAAgBr5F,GACZ,OAAOj0B,KAAK5C,QAAQ6vH,gBAAgBh5F,EACvC,GA3DL,6BA4DI,SAAgBA,GACZ,OAAOj0B,KAAK5C,QAAQ0wH,mBAAmB75F,EAC1C,GA9DL,kCA+DI,SAAqBA,EAAM84F,GACvB,OAAO/sH,KAAK5C,QAAQ2wH,wBAAwB95F,EAAM84F,EACrD,GAjEL,8BAkEI,SAAiB94F,EAAM84F,EAAqBiB,EAAwBP,GAChE,IAAI/rC,EAAU,IAAI5+E,KAAKmxB,EAAKyhC,WACxBu4D,EAAUjuH,KAAK6tH,WAAWnsC,EAASqrC,GACvC,OAAIiB,GAA4BjB,EACrB/sH,KAAKkuH,0BAA0Bj6F,EAAMg6F,EAAQX,OAAQW,EAAQV,YAAaE,GAE9EztH,KAAKkuH,0BAA0Bj6F,EAAMg6F,EAAQX,OAAQW,EAAQroG,OAAQ6nG,EAC/E,KAzEL,KCRIU,GAAOnsC,GAAAA,mBACLosC,GAAAA,WACF,WAAY7mF,IAAQ,eAChBvnC,KAAKquH,QAAU,IAAIvrH,KAAKykC,EAAOmuB,QAAUnuB,EAAOmuB,UAAYnuB,EAC/D,oCACD,WACI,OAAOvnC,KAAKquH,OACf,uBACD,WACI,OAAOruH,KAAKquH,OACf,kCACD,WACI,IAAIx2D,EAAS//C,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,QAAK,EAC1E5Z,EAAQ8B,KAAKquH,QAAQtsC,oBACzB,MAAI,WAAalqB,EACN35D,EAAQiwH,GAAK,UAEjBjwH,CACV,wBACD,WACI,OAAO8B,KAAKquH,QAAQ34D,SACvB,wBACD,SAAQx3D,GAEJ,OADA8B,KAAKquH,QAAQluC,QAAQjiF,GACd8B,IACV,wBACD,SAAQ9B,GAEJ,OADA8B,KAAKquH,QAAQluC,QAAQngF,KAAKquH,QAAQ34D,UAAYx3D,GACvC8B,IACV,2BACD,SAAW9B,GAEP,OADA8B,KAAKquH,QAAQ3oC,WAAWxnF,GACjB8B,IACV,2BACD,SAAW9B,GAEP,OADA8B,KAAKquH,QAAQ3oC,WAAW1lF,KAAKquH,QAAQ7rC,aAAetkF,GAC7C8B,IACV,gCACD,SAAgB9B,GAEZ,OADA8B,KAAKquH,QAAQ3oC,WAAW1lF,KAAKquH,QAAQ7rC,aAAetkF,GAC7C8B,IACV,OAxCCouH,GA2CN,GADkB,SAAAn6F,GAAI,OAAI,IAAIm6F,GAAgBn6F,EAAxB,EChClBq6F,GAAgB,SAAAC,GAChB,IAYI7pH,EAXSupH,EACTM,EADAN,QAGeO,EACfD,EADAC,cAGQC,EACRF,EADAE,OAEAC,EAAaT,EAAQ5rH,MAAM,KAAK0B,KAAI,SAAA7F,GAAK,OAAI45B,SAAS55B,EAAb,IACzCywH,EAAkBH,EAAcnsH,MAAM,IAAI0B,KAAI,SAAA7F,GAAK,OAAI45B,SAAS55B,EAAb,IACnD0wH,EAlBiB,SAAA1wH,GAAK,OAAIA,EAAMmE,MAAM,KAAK0B,KAAI,SAAA8qH,GACnD,MAAI,aAAeA,EACR,KAEJ,IAAM/2F,SAAS+2F,EAAO,GAChC,GAL6B,CAkBXC,CAAmBL,GAAQ1qH,KAAKW,EAAc,EAAG,SAAAxG,GAAK,OAAIwG,GAAexG,CAAnB,IAErE,MAAO,CACHwwH,WAAYA,EACZC,gBAAiBA,EACjBC,SAAUA,EAEjB,EAiBGG,GAAU,IAhBRC,WACF,cAAc,eACVhvH,KAAK+D,IAAM,IAAI7K,GAClB,sCACD,SAAO6kB,GACH,IAAK/d,KAAK+D,IAAInK,IAAImkB,GAAK,CACnB,IAAIhe,EAASkvH,GAAkBC,gBAAgBnxG,GAC/C,IAAKhe,EACD,OAAO,EAEX,IAAIovH,EAAeb,GAAcvuH,GACjCC,KAAK+D,IAAI5K,IAAI4kB,EAAIoxG,EACpB,CACD,OAAOnvH,KAAK+D,IAAInK,IAAImkB,EACvB,OAdCixG,IAiBFC,GAAoB,CACpBG,SAAUL,GACVM,WClDO,CAAC,CACJtxG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,wSACRR,QAAS,eACTO,cAAe,oDAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,0NACRR,QAAS,mBACTO,cAAe,sCAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,0BACRR,QAAS,eACTO,cAAe,OAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,mwBACRR,QAAS,YACTO,cAAe,mIAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,wkBACRR,QAAS,gBACTO,cAAe,mGAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,gwBACRR,QAAS,aACTO,cAAe,kIAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ggBACRR,QAAS,gBACTO,cAAe,wFAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,4CACRR,QAAS,gBACTO,cAAe,UAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,2NACRR,QAAS,sBACTO,cAAe,uCAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,kOACRR,QAAS,sBACTO,cAAe,wCAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,4CACRR,QAAS,gBACTO,cAAe,UAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,4CACRR,QAAS,gBACTO,cAAe,UAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,0BACRR,QAAS,iBACTO,cAAe,OAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,gCACRR,QAAS,iBACTO,cAAe,QAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,iCACRR,QAAS,cACTO,cAAe,QAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,kNACRR,QAAS,oBACTO,cAAe,qCAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,qNACRR,QAAS,iBACTO,cAAe,sCAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,wUACRR,QAAS,oBACTO,cAAe,yDAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,02BACRR,QAAS,cACTO,cAAe,oJAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,02BACRR,QAAS,cACTO,cAAe,oJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,qUACRR,QAAS,gBACTO,cAAe,wDAChB,CACCzwG,GAAI,iCACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,8BACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,mCACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,0BACJ0wG,OAAQ,mWACRR,QAAS,oBACTO,cAAe,6DAChB,CACCzwG,GAAI,6BACJ0wG,OAAQ,qXACRR,QAAS,oBACTO,cAAe,gEAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,gXACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,iCACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,0BACJ0wG,OAAQ,mWACRR,QAAS,oBACTO,cAAe,6DAChB,CACCzwG,GAAI,6BACJ0wG,OAAQ,sXACRR,QAAS,oBACTO,cAAe,gEAChB,CACCzwG,GAAI,6BACJ0wG,OAAQ,sXACRR,QAAS,oBACTO,cAAe,gEAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,2XACRR,QAAS,oBACTO,cAAe,iEAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,gXACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,8wBACRR,QAAS,mBACTO,cAAe,qIAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mDACRR,QAAS,UACTO,cAAe,WAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,02BACRR,QAAS,cACTO,cAAe,oJAChB,CACCzwG,GAAI,yBACJ0wG,OAAQ,ikBACRR,QAAS,sBACTO,cAAe,kGAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,gYACRR,QAAS,mBACTO,cAAe,kEAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,2EACRR,QAAS,mBACTO,cAAe,eAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,+LACRR,QAAS,mBACTO,cAAe,kCAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,0VACRR,QAAS,oBACTO,cAAe,4DAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,6CACRR,QAAS,UACTO,cAAe,UAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,uNACRR,QAAS,mBACTO,cAAe,sCAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,iCACRR,QAAS,mBACTO,cAAe,QAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,q5BACRR,QAAS,cACTO,cAAe,2JAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,kvBACRR,QAAS,gBACTO,cAAe,gIAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,mjBACRR,QAAS,mBACTO,cAAe,gGAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,2QACRR,QAAS,uBACTO,cAAe,+CAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,wCACRR,QAAS,mBACTO,cAAe,SAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,g5CACRR,QAAS,UACTO,cAAe,gPAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,4iBACRR,QAAS,uBACTO,cAAe,+FAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,mDACRR,QAAS,UACTO,cAAe,WAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,qEACRR,QAAS,mBACTO,cAAe,cAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,yBACRR,QAAS,UACTO,cAAe,OAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,uiBACRR,QAAS,mBACTO,cAAe,8FAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,0NACRR,QAAS,oBACTO,cAAe,uCAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,qWACRR,QAAS,UACTO,cAAe,8DAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,ojBACRR,QAAS,cACTO,cAAe,gGAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,87BACRR,QAAS,UACTO,cAAe,kKAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,i2BACRR,QAAS,uBACTO,cAAe,kJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,q5BACRR,QAAS,mBACTO,cAAe,2JAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,0NACRR,QAAS,mBACTO,cAAe,sCAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,4CACRR,QAAS,gBACTO,cAAe,UAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,m5BACRR,QAAS,mBACTO,cAAe,0JAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,m2BACRR,QAAS,UACTO,cAAe,mJAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,8lBACRR,QAAS,cACTO,cAAe,uGAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,2PACRR,QAAS,cACTO,cAAe,4CAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,01BACRR,QAAS,gBACTO,cAAe,iJAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,4sBACRR,QAAS,mBACTO,cAAe,0HAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,itCACRR,QAAS,wCACTO,cAAe,gNAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,isBACRR,QAAS,mBACTO,cAAe,wHAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,uEACRR,QAAS,mBACTO,cAAe,cAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,gCACRR,QAAS,cACTO,cAAe,QAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,iCACRR,QAAS,uBACTO,cAAe,QAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,w2CACRR,QAAS,gBACTO,cAAe,yOAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,o7BACRR,QAAS,gBACTO,cAAe,gKAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,6GACRR,QAAS,uBACTO,cAAe,oBAChB,CACCzwG,GAAI,+BACJ0wG,OAAQ,8lBACRR,QAAS,cACTO,cAAe,uGAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,u6BACRR,QAAS,UACTO,cAAe,8JAChB,CACCzwG,GAAI,0BACJ0wG,OAAQ,unBACRR,QAAS,cACTO,cAAe,2GAChB,CACCzwG,GAAI,6BACJ0wG,OAAQ,msBACRR,QAAS,cACTO,cAAe,wHAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,wlBACRR,QAAS,cACTO,cAAe,sGAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,kfACRR,QAAS,cACTO,cAAe,qFAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,0mBACRR,QAAS,cACTO,cAAe,yGAChB,CACCzwG,GAAI,0BACJ0wG,OAAQ,6oBACRR,QAAS,cACTO,cAAe,+GAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,8lBACRR,QAAS,cACTO,cAAe,uGAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,+tBACRR,QAAS,gBACTO,cAAe,6HAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,suBACRR,QAAS,oBACTO,cAAe,8HAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,4IACRR,QAAS,mBACTO,cAAe,0BAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mWACRR,QAAS,oBACTO,cAAe,6DAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,m2BACRR,QAAS,cACTO,cAAe,mJAChB,CACCzwG,GAAI,8BACJ0wG,OAAQ,ujCACRR,QAAS,cACTO,cAAe,sLAChB,CACCzwG,GAAI,8BACJ0wG,OAAQ,k4BACRR,QAAS,cACTO,cAAe,wJAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,u6BACRR,QAAS,UACTO,cAAe,8JAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,yBACRR,QAAS,kBACTO,cAAe,OAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,2GACRR,QAAS,gBACTO,cAAe,oBAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,smCACRR,QAAS,UACTO,cAAe,8LAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,ujCACRR,QAAS,cACTO,cAAe,sLAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,wQACRR,QAAS,mBACTO,cAAe,8CAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,4GACRR,QAAS,gBACTO,cAAe,oBAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,4MACRR,QAAS,mBACTO,cAAe,oCAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,gCACRR,QAAS,mBACTO,cAAe,QAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,yhBACRR,QAAS,cACTO,cAAe,4FAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,ikBACRR,QAAS,uBACTO,cAAe,kGAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,gXACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,s2BACRR,QAAS,UACTO,cAAe,mJAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,yhBACRR,QAAS,mBACTO,cAAe,4FAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,0eACRR,QAAS,cACTO,cAAe,oFAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,+lBACRR,QAAS,oBACTO,cAAe,uGAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,+nBACRR,QAAS,uBACTO,cAAe,6GAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ouCACRR,QAAS,cACTO,cAAe,mNAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,yhBACRR,QAAS,mBACTO,cAAe,4FAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,yhBACRR,QAAS,gCACTO,cAAe,2FAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,83CACRR,QAAS,UACTO,cAAe,6OAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,44BACRR,QAAS,gBACTO,cAAe,0JAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,g5CACRR,QAAS,UACTO,cAAe,gPAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ozBACRR,QAAS,UACTO,cAAe,2IAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,02BACRR,QAAS,kBACTO,cAAe,oJAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,2PACRR,QAAS,kBACTO,cAAe,4CAChB,CACCzwG,GAAI,8BACJ0wG,OAAQ,84BACRR,QAAS,cACTO,cAAe,0JAChB,CACCzwG,GAAI,8BACJ0wG,OAAQ,84BACRR,QAAS,cACTO,cAAe,0JAChB,CACCzwG,GAAI,iCACJ0wG,OAAQ,84BACRR,QAAS,cACTO,cAAe,0JAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,4sBACRR,QAAS,mBACTO,cAAe,0HAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,4iBACRR,QAAS,uBACTO,cAAe,+FAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,6uBACRR,QAAS,wBACTO,cAAe,+HAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,wCACRR,QAAS,kCACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,2EACRR,QAAS,UACTO,cAAe,eAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,yBACJ0wG,OAAQ,8gBACRR,QAAS,cACTO,cAAe,0FAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,6MACRR,QAAS,gBACTO,cAAe,oCAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,+LACRR,QAAS,gBACTO,cAAe,kCAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,gCACRR,QAAS,UACTO,cAAe,QAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,+rBACRR,QAAS,uBACTO,cAAe,uHAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,ozBACRR,QAAS,UACTO,cAAe,2IAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,ytBACRR,QAAS,gBACTO,cAAe,4HAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,2PACRR,QAAS,gBACTO,cAAe,4CAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,+UACRR,QAAS,gBACTO,cAAe,0DAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,ytBACRR,QAAS,gBACTO,cAAe,4HAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,6MACRR,QAAS,gBACTO,cAAe,oCAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,+WACRR,QAAS,oBACTO,cAAe,+DAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,m5BACRR,QAAS,mBACTO,cAAe,0JAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,sMACRR,QAAS,gBACTO,cAAe,mCAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,u8BACRR,QAAS,uBACTO,cAAe,mKAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,gHACRR,QAAS,kBACTO,cAAe,qBAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mjBACRR,QAAS,mBACTO,cAAe,gGAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,4sBACRR,QAAS,mBACTO,cAAe,0HAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,87BACRR,QAAS,UACTO,cAAe,kKAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,m2BACRR,QAAS,cACTO,cAAe,mJAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,k6CACRR,QAAS,+BACTO,cAAe,mPAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,4JACRR,QAAS,mBACTO,cAAe,4BAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,yDACRR,QAAS,mBACTO,cAAe,YAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,ykBACRR,QAAS,mBACTO,cAAe,oGAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,40BACRR,QAAS,cACTO,cAAe,+IAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,m5BACRR,QAAS,mBACTO,cAAe,0JAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,83CACRR,QAAS,UACTO,cAAe,6OAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,6nCACRR,QAAS,UACTO,cAAe,kMAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mjBACRR,QAAS,cACTO,cAAe,gGAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,wmCACRR,QAAS,UACTO,cAAe,8LAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,m2BACRR,QAAS,UACTO,cAAe,mJAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,6uBACRR,QAAS,gBACTO,cAAe,+HAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,wDACRR,QAAS,cACTO,cAAe,YAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,0DACRR,QAAS,cACTO,cAAe,YAChB,CACCzwG,GAAI,4BACJ0wG,OAAQ,iCACRR,QAAS,SACTO,cAAe,QAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,4iBACRR,QAAS,cACTO,cAAe,+FAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,0BACRR,QAAS,cACTO,cAAe,OAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,06BACRR,QAAS,sBACTO,cAAe,+JAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,qfACRR,QAAS,gBACTO,cAAe,sFAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,kBACRR,QAAS,QACTO,cAAe,MAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,06BACRR,QAAS,sBACTO,cAAe,+JAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,SACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,8ZACRR,QAAS,SACTO,cAAe,wEAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,SACTO,cAAe,MAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,y1BACRR,QAAS,WACTO,cAAe,iJAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,2TACRR,QAAS,wBACTO,cAAe,uDAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,6sBACRR,QAAS,sBACTO,cAAe,0HAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,6XACRR,QAAS,gCACTO,cAAe,kEAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,ySACRR,QAAS,2BACTO,cAAe,oDAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,+SACRR,QAAS,2BACTO,cAAe,qDAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,+JACRR,QAAS,2BACTO,cAAe,6BAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,+JACRR,QAAS,2BACTO,cAAe,6BAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mSACRR,QAAS,gCACTO,cAAe,mDAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,4UACRR,QAAS,mBACTO,cAAe,0DAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,0BACRR,QAAS,sBACTO,cAAe,OAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,gZACRR,QAAS,wBACTO,cAAe,qEAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,4ZACRR,QAAS,sBACTO,cAAe,uEAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,w1BACRR,QAAS,YACTO,cAAe,iJAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,2TACRR,QAAS,wBACTO,cAAe,uDAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,0BACRR,QAAS,sBACTO,cAAe,OAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,6CACRR,QAAS,sBACTO,cAAe,UAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,sZACRR,QAAS,2BACTO,cAAe,sEAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,oUACRR,QAAS,2BACTO,cAAe,wDAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,wLACRR,QAAS,YACTO,cAAe,iCAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,wLACRR,QAAS,YACTO,cAAe,iCAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,2DACRR,QAAS,2BACTO,cAAe,YAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,mDACRR,QAAS,gCACTO,cAAe,WAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,y5BACRR,QAAS,mBACTO,cAAe,4JAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,mDACRR,QAAS,gCACTO,cAAe,WAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,wCACRR,QAAS,sBACTO,cAAe,SAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,mBACRR,QAAS,cACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,yJACRR,QAAS,wBACTO,cAAe,4BAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,kwBACRR,QAAS,mBACTO,cAAe,mIAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,o4BACRR,QAAS,YACTO,cAAe,wJAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,wLACRR,QAAS,YACTO,cAAe,iCAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,g5BACRR,QAAS,YACTO,cAAe,0JAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,yEACRR,QAAS,kCACTO,cAAe,cAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,8aACRR,QAAS,wBACTO,cAAe,0EAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,8TACRR,QAAS,wBACTO,cAAe,uDAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,gZACRR,QAAS,2BACTO,cAAe,qEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,gsBACRR,QAAS,2BACTO,cAAe,uHAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,6DACRR,QAAS,kCACTO,cAAe,YAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,iCACRR,QAAS,mBACTO,cAAe,QAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,83BACRR,QAAS,2BACTO,cAAe,uJAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mYACRR,QAAS,wBACTO,cAAe,mEAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,qFACRR,QAAS,6BACTO,cAAe,gBAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,0BACRR,QAAS,sBACTO,cAAe,OAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,0BACRR,QAAS,sBACTO,cAAe,OAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,4ZACRR,QAAS,gCACTO,cAAe,uEAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,6CACRR,QAAS,sBACTO,cAAe,UAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,gZACRR,QAAS,2BACTO,cAAe,qEAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,qDACRR,QAAS,qCACTO,cAAe,WAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,4HACRR,QAAS,gCACTO,cAAe,uBAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,0bACRR,QAAS,2BACTO,cAAe,4EAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,0bACRR,QAAS,2BACTO,cAAe,4EAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,sZACRR,QAAS,wBACTO,cAAe,sEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,wCACRR,QAAS,mBACTO,cAAe,SAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,iEACRR,QAAS,YACTO,cAAe,aAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mBACRR,QAAS,cACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,wwBACRR,QAAS,sBACTO,cAAe,oIAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mYACRR,QAAS,wBACTO,cAAe,mEAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,4ZACRR,QAAS,2BACTO,cAAe,uEAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,gZACRR,QAAS,wBACTO,cAAe,qEAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,mSACRR,QAAS,6BACTO,cAAe,mDAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,oEACRR,QAAS,gCACTO,cAAe,aAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,gDACRR,QAAS,iBACTO,cAAe,UAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,0BACRR,QAAS,sBACTO,cAAe,OAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,ySACRR,QAAS,2BACTO,cAAe,oDAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,oSACRR,QAAS,2BACTO,cAAe,mDAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,iCACRR,QAAS,sBACTO,cAAe,QAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,yEACRR,QAAS,kCACTO,cAAe,cAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,gZACRR,QAAS,6BACTO,cAAe,qEAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mJACRR,QAAS,2BACTO,cAAe,2BAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,gMACRR,QAAS,gCACTO,cAAe,kCAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,wLACRR,QAAS,YACTO,cAAe,iCAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,qDACRR,QAAS,qCACTO,cAAe,WAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,gZACRR,QAAS,2BACTO,cAAe,qEAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,gQACRR,QAAS,YACTO,cAAe,6CAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,yJACRR,QAAS,2BACTO,cAAe,4BAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,+SACRR,QAAS,2BACTO,cAAe,qDAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,ymBACRR,QAAS,gCACTO,cAAe,yGAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,83BACRR,QAAS,2BACTO,cAAe,uJAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,0BACRR,QAAS,mBACTO,cAAe,OAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,6DACRR,QAAS,YACTO,cAAe,aAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,4ZACRR,QAAS,yBACTO,cAAe,uEAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,wCACRR,QAAS,mBACTO,cAAe,SAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,8TACRR,QAAS,2BACTO,cAAe,uDAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,8TACRR,QAAS,2BACTO,cAAe,uDAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,sZACRR,QAAS,kCACTO,cAAe,sEAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,gZACRR,QAAS,2BACTO,cAAe,qEAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,gZACRR,QAAS,2BACTO,cAAe,qEAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,iCACRR,QAAS,sBACTO,cAAe,QAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,uZACRR,QAAS,mCACTO,cAAe,sEAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,wXACRR,QAAS,sBACTO,cAAe,iEAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,wzCACRR,QAAS,oBACTO,cAAe,iOAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,oxBACRR,QAAS,gBACTO,cAAe,sIAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mtBACRR,QAAS,gBACTO,cAAe,2HAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,wCACRR,QAAS,iBACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,isBACRR,QAAS,gBACTO,cAAe,wHAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,isBACRR,QAAS,gBACTO,cAAe,wHAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,y1BACRR,QAAS,WACTO,cAAe,iJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,wzCACRR,QAAS,gBACTO,cAAe,iOAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,uaACRR,QAAS,UACTO,cAAe,yEAChB,CACCzwG,GAAI,yBACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,uaACRR,QAAS,oBACTO,cAAe,yEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,gHACRR,QAAS,YACTO,cAAe,qBAChB,CACCzwG,GAAI,wBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,8DACRR,QAAS,YACTO,cAAe,aAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,8HACRR,QAAS,YACTO,cAAe,uBAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,64BACRR,QAAS,YACTO,cAAe,0JAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,wrBACRR,QAAS,sBACTO,cAAe,uHAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,wIACRR,QAAS,YACTO,cAAe,yBAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,wrBACRR,QAAS,sBACTO,cAAe,uHAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,8DACRR,QAAS,YACTO,cAAe,aAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,8HACRR,QAAS,YACTO,cAAe,uBAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,gHACRR,QAAS,YACTO,cAAe,qBAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,64BACRR,QAAS,YACTO,cAAe,0JAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,8HACRR,QAAS,YACTO,cAAe,uBAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,61BACRR,QAAS,YACTO,cAAe,kJAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,6MACRR,QAAS,gBACTO,cAAe,oCAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,2PACRR,QAAS,kBACTO,cAAe,4CAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mjBACRR,QAAS,mBACTO,cAAe,gGAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,4MACRR,QAAS,mBACTO,cAAe,oCAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,w2CACRR,QAAS,gBACTO,cAAe,yOAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,wmCACRR,QAAS,UACTO,cAAe,8LAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,83CACRR,QAAS,UACTO,cAAe,6OAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,q5BACRR,QAAS,mBACTO,cAAe,2JAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,k6CACRR,QAAS,+BACTO,cAAe,mPAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,6nCACRR,QAAS,UACTO,cAAe,kMAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,+UACRR,QAAS,gBACTO,cAAe,0DAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,mjBACRR,QAAS,cACTO,cAAe,gGAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,g0BACRR,QAAS,WACTO,cAAe,6IAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,u8BACRR,QAAS,uBACTO,cAAe,mKAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,o0BACRR,QAAS,uBACTO,cAAe,8IAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,84BACRR,QAAS,UACTO,cAAe,0JAChB,CACCzwG,GAAI,OACJ0wG,OAAQ,o7BACRR,QAAS,gBACTO,cAAe,gKAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,wuBACRR,QAAS,YACTO,cAAe,+HAChB,CACCzwG,GAAI,QACJ0wG,OAAQ,mwBACRR,QAAS,YACTO,cAAe,mIAChB,CACCzwG,GAAI,OACJ0wG,OAAQ,21CACRR,QAAS,qBACTO,cAAe,uOAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,84BACRR,QAAS,UACTO,cAAe,0JAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,KACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,WACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,WACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,ikCACRR,QAAS,qCACTO,cAAe,wLAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,gpBACRR,QAAS,aACTO,cAAe,gHAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,oYACRR,QAAS,wBACTO,cAAe,mEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,u0BACRR,QAAS,yBACTO,cAAe,8IAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,o2BACRR,QAAS,gBACTO,cAAe,mJAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,o2BACRR,QAAS,aACTO,cAAe,mJAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ylCACRR,QAAS,aACTO,cAAe,4LAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,wzBACRR,QAAS,mBACTO,cAAe,4IAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,o5BACRR,QAAS,WACTO,cAAe,2JAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,u1BACRR,QAAS,iCACTO,cAAe,iJAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,wyBACRR,QAAS,WACTO,cAAe,yIAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,21CACRR,QAAS,qBACTO,cAAe,uOAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,4qCACRR,QAAS,aACTO,cAAe,0MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,6sBACRR,QAAS,qBACTO,cAAe,0HAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,gsBACRR,QAAS,2BACTO,cAAe,uHAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,yeACRR,QAAS,qBACTO,cAAe,oFAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,guBACRR,QAAS,+BACTO,cAAe,6HAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,8XACRR,QAAS,wBACTO,cAAe,kEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,8zCACRR,QAAS,mBACTO,cAAe,kOAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,0lCACRR,QAAS,mBACTO,cAAe,4LAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,w9BACRR,QAAS,aACTO,cAAe,sKAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,ggCACRR,QAAS,WACTO,cAAe,6KAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,6sBACRR,QAAS,qBACTO,cAAe,0HAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,kaACRR,QAAS,0BACTO,cAAe,wEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,+lCACRR,QAAS,mBACTO,cAAe,6LAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,8dACRR,QAAS,8DACTO,cAAe,kFAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,wwBACRR,QAAS,sBACTO,cAAe,oIAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,y1BACRR,QAAS,WACTO,cAAe,iJAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,0lCACRR,QAAS,mBACTO,cAAe,4LAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,o2BACRR,QAAS,aACTO,cAAe,mJAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,6vBACRR,QAAS,wCACTO,cAAe,kIAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,ggCACRR,QAAS,WACTO,cAAe,6KAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,uXACRR,QAAS,2BACTO,cAAe,iEAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,ggCACRR,QAAS,WACTO,cAAe,6KAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,qYACRR,QAAS,wBACTO,cAAe,mEAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,2cACRR,QAAS,0BACTO,cAAe,+EAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,svBACRR,QAAS,gBACTO,cAAe,iIAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,4uBACRR,QAAS,yBACTO,cAAe,+HAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,6yBACRR,QAAS,oBACTO,cAAe,0IAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,u1BACRR,QAAS,iCACTO,cAAe,iJAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,gZACRR,QAAS,6BACTO,cAAe,qEAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,ytBACRR,QAAS,qBACTO,cAAe,4HAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,ggCACRR,QAAS,WACTO,cAAe,6KAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,20BACRR,QAAS,WACTO,cAAe,+IAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,2tBACRR,QAAS,+BACTO,cAAe,4HAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,qYACRR,QAAS,2BACTO,cAAe,mEAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,0+BACRR,QAAS,oBACTO,cAAe,yKAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,suBACRR,QAAS,0BACTO,cAAe,8HAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,ktBACRR,QAAS,WACTO,cAAe,2HAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,KACJ0wG,OAAQ,86CACRR,QAAS,aACTO,cAAe,qPAChB,CACCzwG,GAAI,QACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,QACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,OACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,WACJ0wG,OAAQ,8aACRR,QAAS,wBACTO,cAAe,0EAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,uaACRR,QAAS,UACTO,cAAe,yEAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,2BACRR,QAAS,sBACTO,cAAe,OAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mBACRR,QAAS,SACTO,cAAe,MAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,mBACRR,QAAS,cACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,8CACRR,QAAS,iBACTO,cAAe,UAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,uCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,iBACTO,cAAe,MAChB,CACCzwG,GAAI,OACJ0wG,OAAQ,ymBACRR,QAAS,gCACTO,cAAe,yGAChB,CACCzwG,GAAI,SACJ0wG,OAAQ,83BACRR,QAAS,2BACTO,cAAe,uJAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,4IACRR,QAAS,mBACTO,cAAe,0BAChB,CACCzwG,GAAI,QACJ0wG,OAAQ,6DACRR,QAAS,YACTO,cAAe,aAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,+CACRR,QAAS,0BACTO,cAAe,UAChB,CACCzwG,GAAI,QACJ0wG,OAAQ,kNACRR,QAAS,oBACTO,cAAe,qCAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,g0BACRR,QAAS,WACTO,cAAe,6IAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,m5BACRR,QAAS,mBACTO,cAAe,0JAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,ikBACRR,QAAS,uBACTO,cAAe,kGAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,+lBACRR,QAAS,oBACTO,cAAe,uGAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,WACRR,QAAS,MACTO,cAAe,KAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,84BACRR,QAAS,UACTO,cAAe,0JAChB,CACCzwG,GAAI,SACJ0wG,OAAQ,87BACRR,QAAS,UACTO,cAAe,kKAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,8wBACRR,QAAS,iBACTO,cAAe,qIAChB,CACCzwG,GAAI,KACJ0wG,OAAQ,06BACRR,QAAS,sBACTO,cAAe,+JAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,2WACRR,QAAS,iCACTO,cAAe,+DAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,06BACRR,QAAS,sBACTO,cAAe,+JAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,kCACRR,QAAS,iBACTO,cAAe,QAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,8wBACRR,QAAS,iBACTO,cAAe,qIAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,wCACRR,QAAS,YACTO,cAAe,SAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,o0BACRR,QAAS,uBACTO,cAAe,8IAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,6IACRR,QAAS,sBACTO,cAAe,0BAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,yBACRR,QAAS,eACTO,cAAe,OAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,kBACRR,QAAS,WACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,0YACRR,QAAS,sBACTO,cAAe,oEAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,uCACRR,QAAS,gBACTO,cAAe,SAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,sBACJ0wG,OAAQ,mBACRR,QAAS,cACTO,cAAe,MAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,qIACRR,QAAS,iBACTO,cAAe,wBAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mDACRR,QAAS,cACTO,cAAe,WAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,mDACRR,QAAS,cACTO,cAAe,WAChB,CACCzwG,GAAI,qBACJ0wG,OAAQ,yBACRR,QAAS,eACTO,cAAe,OAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,6DACRR,QAAS,sBACTO,cAAe,YAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,+CACRR,QAAS,0BACTO,cAAe,UAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,sDACRR,QAAS,sBACTO,cAAe,WAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,UACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,wCACRR,QAAS,2BACTO,cAAe,SAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,0BACRR,QAAS,cACTO,cAAe,OAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,sQACRR,QAAS,2BACTO,cAAe,8CAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,yDACRR,QAAS,mBACTO,cAAe,YAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,mBACJ0wG,OAAQ,kBACRR,QAAS,UACTO,cAAe,MAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,+CACRR,QAAS,iBACTO,cAAe,UAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,+CACRR,QAAS,iBACTO,cAAe,UAChB,CACCzwG,GAAI,uBACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,wKACRR,QAAS,cACTO,cAAe,+BAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,qIACRR,QAAS,iBACTO,cAAe,wBAChB,CACCzwG,GAAI,gBACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,mBACRR,QAAS,eACTO,cAAe,MAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,qEACRR,QAAS,iBACTO,cAAe,cAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,wCACRR,QAAS,YACTO,cAAe,SAChB,CACCzwG,GAAI,eACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,WACRR,QAAS,OACTO,cAAe,KAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,wCACRR,QAAS,YACTO,cAAe,SAChB,CACCzwG,GAAI,SACJ0wG,OAAQ,0+BACRR,QAAS,oBACTO,cAAe,yKAChB,CACCzwG,GAAI,WACJ0wG,OAAQ,8zCACRR,QAAS,mBACTO,cAAe,kOAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,wLACRR,QAAS,YACTO,cAAe,iCAChB,CACCzwG,GAAI,UACJ0wG,OAAQ,84BACRR,QAAS,UACTO,cAAe,0JAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,gQACRR,QAAS,YACTO,cAAe,6CAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,gMACRR,QAAS,gCACTO,cAAe,kCAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,qDACRR,QAAS,qCACTO,cAAe,WAChB,CACCzwG,GAAI,SACJ0wG,OAAQ,gsBACRR,QAAS,2BACTO,cAAe,uHAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,02BACRR,QAAS,cACTO,cAAe,oJAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,02BACRR,QAAS,cACTO,cAAe,oJAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,2EACRR,QAAS,UACTO,cAAe,eAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,g5CACRR,QAAS,UACTO,cAAe,gPAChB,CACCzwG,GAAI,kBACJ0wG,OAAQ,8lBACRR,QAAS,cACTO,cAAe,uGAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,g5CACRR,QAAS,UACTO,cAAe,gPAChB,CACCzwG,GAAI,YACJ0wG,OAAQ,mDACRR,QAAS,cACTO,cAAe,WAChB,CACCzwG,GAAI,oBACJ0wG,OAAQ,u6BACRR,QAAS,UACTO,cAAe,8JAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,i2BACRR,QAAS,uBACTO,cAAe,kJAChB,CACCzwG,GAAI,cACJ0wG,OAAQ,87BACRR,QAAS,UACTO,cAAe,kKAChB,CACCzwG,GAAI,iBACJ0wG,OAAQ,smCACRR,QAAS,UACTO,cAAe,8LAChB,CACCzwG,GAAI,aACJ0wG,OAAQ,smCACRR,QAAS,UACTO,cAAe,8LAChB,CACCzwG,GAAI,WACJ0wG,OAAQ,mBACRR,QAAS,YACTO,cAAe,MAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,KAChB,CACCzwG,GAAI,OACJ0wG,OAAQ,8dACRR,QAAS,8DACTO,cAAe,kFAChB,CACCzwG,GAAI,MACJ0wG,OAAQ,wuBACRR,QAAS,QACTO,cAAe,+HAChB,CACCzwG,GAAI,OACJ0wG,OAAQ,WACRR,QAAS,IACTO,cAAe,MDt2FnBc,sBAHoB,SAGEC,GAAW,WACzBC,EAAYxvH,KAAKqvH,WAAWtrH,KAAI,SAAA2pH,GAChC,IAAIyB,EAAeb,GAAcZ,GAC7BzgH,EAAS,EAAKwiH,aAAaN,EAAcI,GAE7C,MAAO,CACHtiH,OAAQA,EACRyiH,MAHQ,QAAQz/G,OAAO,EAAK0/G,aAAa1iH,GAAS,MAAMgD,OAAO,EAAK2/G,SAASlC,EAAS3vG,KAItFA,GAAI2vG,EAAS3vG,GAEpB,IACD,OAAOk3E,GAAMu6B,GAAW56B,OAAO,UAAUlnB,SAC5C,EACDiiD,aAhBoB,SAgBP1iH,GACT,IAAIizE,EAAQ32E,KAAKo/D,MAAM17D,GACnB4iH,EAAmB5iH,EAASizE,EAIhC,OAHiBtvB,GAAK3jD,IAAW,EAAI,IAAM,KACzB,IAAIgD,OAAO1G,KAAKD,IAAI42E,IAAQn7E,OAAO,IACjC8qH,EAAmB,EAAI,IAAI5/G,OAAO,GAAK4/G,GAAoB,MAElF,EACDD,SAAU,SAAA7xG,GAAE,OAAIA,EAAG1b,MAAM,KAAKoK,KAAK,OAAOpK,MAAM,KAAKoK,KAAK,IAA9C,EACZyiH,gBAzBoB,SAyBJnxG,GACZ,GAAKA,EAAL,CAIA,IADA,IAAI+xG,EAAS9vH,KAAKqvH,WACT1mH,EAAI,EAAGA,EAAImnH,EAAOnvH,OAAQgI,IAAK,CAEpC,GADgBmnH,EAAOnnH,GAAGoV,KACRA,EACd,OAAO+xG,EAAOnnH,EAErB,CACD2W,GAAAA,EAAAA,IAAW,QAASvB,EARnB,CAUJ,EACDgyG,sBAvCoB,SAuCEhyG,EAAIwxG,GACtB,IAAIJ,EAAeJ,GAAQiB,OAAOjyG,GAClC,OAAOoxG,EAAenvH,KAAKyvH,aAAaN,EAAcI,QAAa,CACtE,EACDU,4BA3CoB,SA2CQlyG,EAAI8/D,GAC5B,IAAIsxC,EAAeJ,GAAQiB,OAAOjyG,GAClC,OAAOoxG,EAAenvH,KAAKkwH,gCAAgCf,EAActxC,GAAQ,EACpF,EACDqyC,gCA/CoB,SA+CYf,EAActxC,GAW1C,IAVA,IACgB6wC,EACZS,EADAT,WAGiBC,EACjBQ,EADAR,gBAGUC,EACVO,EADAP,SAEAuB,EAAc,GACTxnH,EAAI,EAAGA,EAAIimH,EAASjuH,OAAQgI,IAAK,CACtC,IAAIo8E,EAAc6pC,EAASjmH,GACvBynH,EAAc,IAAIttH,KAAKiiF,GAAanF,cACxC,GAAIwwC,IAAgBvyC,EAAM,CACtB,IAAI5wE,EAASyhH,EAAWC,EAAgBhmH,EAAI,IAC5CwnH,EAAY/vH,KAAK,CACb6zB,KAAM8wD,EACN93E,QAASA,EAAS,IAEzB,CACD,GAAImjH,EAAcvyC,EACd,KAEP,CACD,OAAOsyC,CACV,EACDV,aA1EoB,SA0EPN,EAAckB,GAYvB,IAXA,IACgB3B,EACZS,EADAT,WAGiBC,EACjBQ,EADAR,gBAGUC,EACVO,EADAP,SAGAztH,EADyBytH,EAASjuH,OAAS,EAAI,EAE5CQ,GAAS,GAAKkvH,EAAgBzB,EAASztH,IAC1CA,IAEJ,IAAI8L,EAASyhH,EAAWC,EAAgBxtH,EAAQ,IAChD,OAAQ8L,EAAS,IAAMA,CAC1B,GAEL,ME3IIkhH,GAAOnsC,GAAAA,mBAqBPsuC,GAAgB,SAAAr8F,GAAI,OAAI,IAAInxB,KAAKA,KAAKs+E,IAAIntD,EAAKs8F,iBAAkBt8F,EAAKu8F,cAAev8F,EAAKw8F,aAAcx8F,EAAKy8F,cAAez8F,EAAK08F,iBAA7G,EACpBC,GAAmC,SAAC9qC,EAAWC,EAAS8qC,EAAkBC,GAAvC,OAA0DC,GAAkBF,EAAkBC,GAAkBC,GAAkBjrC,EAAWC,EAA7I,EAEnCgrC,GAAoB,SAACjrC,EAAWC,GAAZ,OAAwB,IAAIjjF,KAAKgjF,GAAW/D,oBAAsB,IAAIj/E,KAAKijF,GAAShE,mBAApF,EAEpBivC,GAA2B,SAAStD,GACpC,IAAIz5F,EAAOnc,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAAIhV,KAChF,GAAI,kBAAoB4qH,EAAU,CAC9B,IAAIuD,EAAUX,GAAcr8F,GAC5B,OAAOg7F,GAAAA,sBAAwCvB,EAAUuD,EAAQv7D,UACpE,CACD,OAAOg4D,CACV,EACGwD,GAA+B,SAACprC,EAAWC,EAASrlC,GAArB,OAAkCswE,GAAyBtwE,EAAUolC,GAAakrC,GAAyBtwE,EAAUqlC,EAArH,EAiB/BorC,GAAyB,SAAAl9F,GACzB,IAAIm9F,EAAe,IAAItuH,KAAK,IAAIA,KAAKmxB,GAAMirD,SAAS,EAAG,EAAG,EAAG,IACzDmyC,EAAa,IAAIvuH,KAAK,IAAIA,KAAKmxB,GAAMirD,SAAS,GAAI,GAAI,GAAI,IAC9D,OAAOkyC,EAAarvC,oBAAsBsvC,EAAWtvC,sBAAwB,CAChF,EAaGuvC,GAA0B,WAC1B,IAAIr9F,EAAOnc,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAAIhV,KAChF,OApEe,IAoERmxB,EAAK8tD,mBACf,EAgBGwvC,GAAwB,WACxB,IAAI,EAAuBC,KAA3B,eAAK1rC,EAAL,KAAgBC,EAAhB,KACA,OAAOD,EAAU/D,sBAAwBgE,EAAQhE,mBACpD,EACG0vC,GAAoC,SAAC7M,EAAc3wF,GACnD,IAAI4pD,EAAO5pD,EAAK2rD,cACZ/T,EAAY,SAAA53C,GAAI,OAAKA,EAAK8tD,oBAAsB,EAAhC,EAChB2vC,EAAyB,SAAAC,GAAS,OAAI,IAAI7uH,KAAK6uH,EAAY,KAAzB,EAClCC,EAAc3C,GAAAA,4BAA8CrK,EAAc/mC,GAC1E,GAAJ,OAA+B+zC,EAA/B,GAAKC,EAAL,KAAiBC,EAAjB,KAEA,GAD4BF,EAAYjxH,OAAS,EAI7C,OAF2BsuH,GAAAA,sBAAwCrK,EAAc3wF,KACvD43C,EAAU53C,KAI5Bs9F,KAEZ,IAAIQ,EAAoBlmD,EAAU,IAAI/oE,KAAK+uH,EAAW59F,OAClD+9F,EAAoBnmD,EAAU,IAAI/oE,KAAKgvH,EAAW79F,OACtD,OAAI89F,IAAsBF,EAAW5kH,SAGjC8kH,IAAsBlmD,EAAU6lD,EAAuBG,EAAW59F,SAGlE+9F,IAAsBF,EAAW7kH,QAGjC+kH,IAAsBnmD,EAAU6lD,EAAuBI,EAAW79F,QAIzE,EACGu9F,GAAkB,WAClB,IAAIS,EAAU,IAAInvH,KAAKA,KAAKygE,OACxBuiB,EAAY,IAAIhjF,KAChBijF,EAAU,IAAIjjF,KAGlB,OAFAgjF,EAAUnG,YAAYsyC,EAAQryC,cAAe,EAAG,GAChDmG,EAAQpG,YAAYsyC,EAAQryC,cAAe,EAAG,GACvC,CAACkG,EAAWC,EACtB,EAKGmsC,GAAQ,CACRnB,kBAAmBA,GACnBoB,sBA/GwB,SAACrsC,EAAWC,GAAZ,OAAwBgrC,GAAkBjrC,EAAWC,GAAWooC,GAAK,SAArE,EAgHxByC,iCAAkCA,GAClCwB,4BAnH8B,SAACtsC,EAAWC,EAAS8qC,EAAkBC,GAAvC,OAA0DF,GAAiC9qC,EAAWC,EAAS8qC,EAAkBC,GAAkB3C,GAAK,SAAxJ,EAoH9B6C,yBAA0BA,GAC1BqB,kCAzGoC,SAACC,EAA4BC,EAAet+F,EAAMysB,EAAU8xE,GAChG,IAEI7wC,EAFiCuvC,GAA6BoB,EAA4BC,EAAe7xE,GACnEwwE,GAA6BoB,EAA4BC,EAAeC,GAElH,OAAO,IAAI1vH,KAAKmxB,EAAKyhC,UAAYisB,EAAOwsC,GAAK,QAChD,EAqGGsE,uBA7EyB,SAAC3sC,EAAWC,GAErC,OADAA,EAAU,IAAIjjF,KAAKijF,EAAQrwB,UAAY,GAChCssB,GAAAA,SAAmB8D,EAAWC,EACxC,EA2EG2sC,qCArGuC,SAASC,EAAWC,EAAsBlyE,EAAUmyE,GAC3F,IAAIC,EAAmBh7G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAC/E0vE,GAAkBmrC,EAAU5wC,oBAAsB6wC,EAAqB7wC,qBA1CzD,GAgDlB,OALI8wC,EACArrC,EAAiB0pC,GAA6B0B,EAAsBD,EAAWE,GACxEnyE,IACP8mC,EAAiB0pC,GAA6B0B,EAAsBD,EAAWjyE,IAE5E,IAAI59C,KAAK6vH,EAAUj9D,WAAao9D,GAAoB,EAAI,GAAKtrC,EAAiB2mC,GAAK,QAC7F,EA6FGmD,wBAAyBA,GACzByB,oCAxEsC,WACtC,IAAIC,EAAYl7G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAAIhV,KACjFmwH,EAAan7G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAAIhV,KACtF,OAAOwuH,GAAwB0B,GAAa1B,GAAwB2B,EACvE,EAqEGC,6BA9I+B,SAAAj/F,GAC/B,OAAKA,EAGE,IAAInxB,KAAKA,KAAKs+E,IAAIntD,EAAK2rD,cAAe3rD,EAAKmrD,WAAYnrD,EAAK+rD,UAAW/rD,EAAK2tD,WAAY3tD,EAAKuuD,aAAcvuD,EAAKwuD,eAF5G,IAGd,EA0IG0wC,iCAzImC,SAAAl/F,GACnC,IAAIzwB,EAAS4vH,GAAYn/F,GACrBo/F,EAA4B7vH,EAAOu+E,oBAGvC,OAFAv+E,EAAO8vH,QAAQ9vH,EAAOu+E,kBAAkB,WACxCv+E,EAAO+vH,gBAAgBF,EAA4B7vH,EAAOu+E,qBACnDv+E,EAAO+jC,MACjB,EAoIG+oF,cAAeA,GACfa,uBAAwBA,GACxBqC,6BA7F+B,SAAAv/F,GAC/B,IAAIw/F,EAAa,IAAI3wH,KAAKmxB,GAC1B,GAAIk9F,GAAuBsC,GAAa,CACpC,IAAIjwH,EAAS,IAAIV,KAAK2wH,GACtB,OAAO,IAAI3wH,KAAKU,EAAOy7E,QAAQz7E,EAAOw8E,UAAY,GACrD,CACD,OAAOyzC,CACV,EAuFGlC,sBAAuBA,GACvBmC,qBA1EuB,SAAS9O,GAChC,IAAI3wF,EAAOnc,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAAIhV,KAChF,GAAIsjF,KAAM,CACN,IAAIutC,EAAoBvtC,KAAKC,iBAAiBC,kBAAkB5lC,SAChE,GAAIizE,IAAsB/O,EACtB,OAAO,CAEd,CACD,OAAO6M,GAAkC7M,EAAc3wF,EAC1D,EAkEGw9F,kCAAmCA,GACnCmC,aAzIe,WACf,IAAI3/F,EAAOnc,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAAIhV,KAC5E+wH,EAAYvD,GAAcr8F,GAC9B,OAAOg7F,GAAAA,sBAAwC4E,EAAUn+D,UAC5D,EAsIGo+D,iBAxBmB,SAACC,EAAYC,GAChC,IAAIC,EAAYD,EAAa7vH,QAAO,SAACX,EAAQyJ,GAAT,OAAoBzJ,EAASyJ,CAA7B,GAAqC8mH,EAAWr+D,WACpF,OAAO,IAAI5yD,KAAKmxH,EACnB,GAuBD,MC9JA,MCEWC,GACG,SAACC,EAAe91D,EAAOlpD,GAC7B,IAAKk5C,EAAAA,EAAAA,IAAU8lE,EAAcv/D,OAAOyJ,IAGpC,OAAO81D,EAAcv/D,OAAOyJ,GAAOlpD,EACtC,EANM++G,GAOG,SAACC,EAAe91D,EAAOlpD,EAAKjX,GAClC,IAAKmwD,EAAAA,EAAAA,IAAU8lE,EAAcC,OAAO/1D,IAIpC,OADA81D,EAAcC,OAAO/1D,GAAOlpD,EAAKjX,GAC1BiX,CACV,ECVDg5G,GAAOnsC,GAAAA,mBAsCAqyC,GAAiC,SAAA/0B,GAAO,OAAKtd,GAAAA,SAAmBsd,EAAQxZ,UAAWwZ,EAAQvZ,QAAnD,EAoBxCuuC,GAA8B,SAACC,EAAiBzuC,EAAW0uC,EAAoB9zE,GACtF6zE,EAAkBA,EAAgB3yH,QAAQ,MAAO,IACjD,IAAI6yH,EAAyB,SAAAxgG,GAAI,OAAIugG,EAAmBE,WAAWzgG,EAAM,CACrEtxB,KAAM,UADuB,EAG7BgyH,EAAgBC,GAAAA,gBAAkCL,GAClDM,EAAqBJ,EAAuB3uC,GAC5CgvC,EAAyBL,EAAuBE,GAGpD,OAFAG,EAAyBC,GAAAA,qCAAmDD,EAAwBD,EAAoBn0E,GACxH6zE,EAAkBK,GAAAA,cAAgCE,EAlE/B,kBAoEtB,EACUE,GAAsB,SAACC,EAAgBnvC,EAAWC,EAASmvC,EAAqBf,GACvF,GAhCyB,SAACruC,EAAWC,GAAZ,OAAyBA,GAAWpqB,MAAMoqB,EAAQrwB,YAAcowB,EAAUpwB,UAAYqwB,EAAQrwB,SAA9F,CAgCrBy/D,CAAgBrvC,EAAWC,GAAU,CACrC,IACIqvC,EAAqB,SAACC,EAAUvvC,GAChC,OAAIuvC,EACOrzC,GAAAA,YAAsB,IAAIl/E,KAAKgjF,IAEnC,IAAIhjF,KAAKgjF,EAAUpwB,UAAYw/D,EAAsB/G,GAAK,UACpE,CALwB,CADV+F,GAAyBC,EAAe,SAAUc,GAMpDnvC,GACbquC,EAAcC,OAAOruC,QAAQkvC,EAAgBG,EAChD,CACJ,EACUE,GAA8B,SAACC,EAAcpB,GACpDoB,EAAan8F,MAAK,SAACrZ,EAAGC,GAClB,IAAIgzG,EAAY,IAAIlwH,KAAKoxH,GAAyBC,EAAe,YAAap0G,EAAEy1G,UAAYz1G,IACxFkzG,EAAa,IAAInwH,KAAKoxH,GAAyBC,EAAe,YAAan0G,EAAEw1G,UAAYx1G,IAC7F,OAAOzW,KAAKqnD,KAAKoiE,EAAUt9D,UAAYu9D,EAAWv9D,UACrD,GACJ,EC5FD,IAAe1M,EAAAA,GAAAA,GAAW1pC,GAAAA,EAAAA,eAAuB,CAC7Cm2G,MAAO,uDACPC,MAAO,2FACPC,MAAO,iDACPC,MAAO,+EACPC,MAAO,4CACPC,MAAO,yCACPC,MAAO,0EACPC,MAAO,mDACPC,MAAO,2FACPC,MAAO,wDACPC,MAAO,iEACPC,MAAO,4EACPC,MAAO,mCACPC,MAAO,kDACPC,MAAO,oDACPC,MAAO,0EACPC,MAAO,yEACPC,MAAO,uCACPC,MAAO,8GACPC,MAAO,sDACPC,MAAO,8CACPC,MAAO,4CACPC,MAAO,yDACPC,MAAO,oCACPC,MAAO,oCACPC,MAAO,kEACPC,MAAO,yCACPC,MAAO,0DACPC,MAAO,uFACPC,MAAO,6CACPC,MAAO,6DACPC,MAAO,yGACPC,MAAO,mEACPC,MAAO,mDACPC,MAAO,mDACPC,MAAO,iEACPC,MAAO,2FACPC,MAAO,mGACPC,MAAO,4EACPC,MAAO,oDACPC,MAAO,oFACPC,MAAO,0CACPC,MAAO,8EACPC,MAAO,4DACPC,MAAO,2DACPC,MAAO,iDACPC,MAAO,uCACPC,MAAO,2DACPC,MAAO,4CACPC,MAAO,oFACPC,MAAO,4EACPC,MAAO,oLACPC,MAAO,sDACPC,MAAO,0GACPC,MAAO,gFACPC,MAAO,wEACPC,MAAO,oFACPC,MAAO,sEACPC,MAAO,mDACPC,MAAO,6LACPC,MAAO,sMACPC,MAAO,6GACPC,MAAO,uIACPC,MAAO,qJACPC,MAAO,iLACPC,MAAO,sEACPC,MAAO,yDACPC,MAAO,4GACPC,MAAO,gCACPC,MAAO,uFACPC,MAAO,2EACPC,MAAO,6FC7EEC,GAA6B,CACxC,KACA,KACA,KACA,KACA,KACA,KACA,MAGF,cAIE,WAAYtU,EAAiB1hG,GAC3B,GAAU,IAANA,EAAS,MAAM,IAAI1pB,MAAM,oCAC7B,KAAKorH,QAAUA,EACf,KAAK1hG,EAAIA,CACV,CA2BH,OAzBSi2G,EAAAA,QAAP,SAAex4H,GACb,OAAO,IAAIw4H,EAAQD,GAAa74H,QAAQM,GACzC,EAIDw4H,EAAAA,UAAAA,IAAAA,SAAIj2G,GACF,OAAO,KAAKA,IAAMA,EAAI,KAAO,IAAIi2G,EAAQ,KAAKvU,QAAS1hG,EACxD,EAGDi2G,EAAAA,UAAAA,OAAAA,SAAO1yG,GACL,OAAO,KAAKm+F,UAAYn+F,EAAMm+F,SAAW,KAAK1hG,IAAMuD,EAAMvD,CAC3D,EAGDi2G,EAAAA,UAAAA,SAAAA,WACE,IAAI3hG,EAAY0hG,GAAa,KAAKtU,SAElC,OADI,KAAK1hG,IAAGsU,GAAK,KAAKtU,EAAI,EAAI,IAAM,IAAMxa,OAAO,KAAKwa,GAAKsU,GACpDA,CACR,EAED2hG,EAAAA,UAAAA,aAAAA,WACE,OAAwB,IAAjB,KAAKvU,QAAgB,EAAI,KAAKA,QAAU,CAChD,EACH,CAAC,CAnCD,GCTawU,GAAY,SACvBj8H,GAEA,OAAiB,OAAVA,QAA4ByJ,IAAVzJ,CAC1B,EAEY6rF,GAAW,SAAU7rF,GAChC,MAAwB,kBAAVA,CACf,EAEYk8H,GAAe,SAAUl8H,GACpC,MAAwB,kBAAVA,GAAsB+7H,GAAAA,SAAsB/7H,EAC3D,EAEY4G,GAAUD,MAAMC,QAKhBu1H,GAAQ,SAAU99F,EAAeryB,QAAA,QAAAA,EAAAA,GACnB,IAArB4N,UAAUnX,SACZuJ,EAAMqyB,EACNA,EAAQ,GAGV,IADA,IAAM+9F,EAAO,GACJ3xH,EAAI4zB,EAAO5zB,EAAIuB,EAAKvB,IAAK2xH,EAAKl6H,KAAKuI,GAC5C,OAAO2xH,CACR,EAMYC,GAAS,SAAar8H,EAAgBs8H,GACjD,IAAI7xH,EAAI,EACF0B,EAAqB,GAE3B,GAAIvF,GAAQ5G,GACV,KAAOyK,EAAI6xH,EAAO7xH,IAAK0B,EAAM1B,GAAM,GAAWsH,OAAO/R,QAErD,KAAOyK,EAAI6xH,EAAO7xH,IAAK0B,EAAM1B,GAAKzK,EAEpC,OAAOmM,CACR,EAEYqjE,GAAU,SAAa9oE,GAClC,OAAIE,GAAQF,GACHA,EAGF,CAACA,EACT,EAEK,SAAU61H,GACd71H,EACA81H,EACAC,QAAA,QAAAA,EAAAA,KAEA,IAAMj5H,EAAM+H,OAAO7E,GAEnB,OADA81H,IAA+B,EAC3Bh5H,EAAIf,OAAS+5H,EACRjxH,OAAO/H,KAGhBg5H,GAA8Bh5H,EAAIf,QACfg6H,EAAUh6H,SAC3Bg6H,GAAaJ,GAAOI,EAAWD,EAAeC,EAAUh6H,SAGnDg6H,EAAU51H,MAAM,EAAG21H,GAAgBjxH,OAAO/H,GAClD,CAKM,ICtEUk5H,GD4FJC,GAAQ,SAAU96G,EAAWC,GACxC,IAAMqE,EAAItE,EAAIC,EAEd,OAAOqE,EAAIrE,EAAI,EAAIqE,EAAIrE,EAAIqE,CAC5B,EAKYy2G,GAAS,SAAU/6G,EAAWC,GACzC,MAAO,CAAE+6G,IAAKxxH,KAAKo/D,MAAM5oD,EAAIC,GAAIg7G,IAAKH,GAAM96G,EAAGC,GAChD,EAEY8tC,GAAQ,SAAa34C,GAChC,OAAQglH,GAAUhlH,IAAuB,IAAfA,EAAIxU,MAC/B,EASYs6H,GAAW,SAAa9lH,GACnC,OAAQ24C,GAAM34C,EACf,EAKY5P,GAAW,SAAaorD,EAA6Bl4B,GAChE,OAAOwiG,GAAStqE,KAA8B,IAAtBA,EAAIvvD,QAAQq3B,EACrC,GC7HD,SAAiBmiG,GACFA,EAAAA,WAAa,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAK1DA,EAAAA,QAAU,MAKVA,EAAAA,QAAU,KAOVA,EAAAA,aAAe,IAAI93H,KAAKA,KAAKs+E,IAAI,KAAM,EAAG,IAM1Cw5C,EAAAA,YAAc,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAKjCA,EAAAA,WAAa,SAAU3mG,GAClC,IAAMinG,EAAa,IAAIp4H,KACrBmxB,EAAKs8F,iBACLt8F,EAAKu8F,cACLv8F,EAAKw8F,cAEP,OACElnH,KAAKq7E,MACFs2C,EAAW3uE,UACV,IAAIzpD,KAAKmxB,EAAKs8F,iBAAkB,EAAG,GAAGhkE,WACtCquE,EAAAA,SACA,CAEP,EAEYA,EAAAA,WAAa,SAAU/8C,GAClC,OAAQA,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,CAC/D,EAEY+8C,EAAAA,OAAS,SAAU18H,GAC9B,OAAOA,aAAiB4E,IACzB,EAEY83H,EAAAA,YAAc,SAAU18H,GACnC,OAAO08H,EAAAA,OAAO18H,KAAWy9D,MAAMz9D,EAAMw3D,UACtC,EAKYklE,EAAAA,SAAW,SAAU3mG,GAChC,OAAkC,GAA3BA,EAAK8tD,oBAA2B,GACxC,EAKY64C,EAAAA,YAAc,SAAUh6C,EAAaC,GAGhD,IAGMs6C,EAHUv6C,EAAMlrB,UAAYklE,EAAAA,SAASh6C,IAC3BC,EAAMnrB,UAAYklE,EAAAA,SAAS/5C,IAI3C,OAAOt3E,KAAKoZ,MAAMw4G,EAAeP,EAAAA,QAClC,EAKYA,EAAAA,UAAY,SAAU3mG,GACjC,OAAO2mG,EAAAA,YAAY3mG,EAAM2mG,EAAAA,aAC1B,EAKYA,EAAAA,YAAc,SAAUQ,GACnC,OAAO,IAAIt4H,KAAK83H,EAAAA,aAAallE,UAAY0lE,EAAUR,EAAAA,QACpD,EAEYA,EAAAA,aAAe,SAAU3mG,GACpC,IAAMC,EAAQD,EAAKu8F,cACnB,OAAiB,IAAVt8F,GAAe0mG,EAAAA,WAAW3mG,EAAKs8F,kBAClC,GACAqK,EAAAA,WAAW1mG,EAChB,EAKY0mG,EAAAA,WAAa,SAAU3mG,GAClC,OAAO2mG,EAAAA,YAAY3mG,EAAKonG,YACzB,EAKYT,EAAAA,WAAa,SAAU/8C,EAAc3pD,GAChD,IAAMD,EAAO,IAAInxB,KAAKA,KAAKs+E,IAAIvD,EAAM3pD,EAAO,IAC5C,MAAO,CAAC0mG,EAAAA,WAAW3mG,GAAO2mG,EAAAA,aAAa3mG,GACxC,EAKY2mG,EAAAA,QAAU,SAAU3mG,EAAYG,GAE3C,OADAA,EAAOA,GAAQH,EACR,IAAInxB,KACTA,KAAKs+E,IACHntD,EAAKs8F,iBACLt8F,EAAKu8F,cACLv8F,EAAKw8F,aACLr8F,EAAKwtD,WACLxtD,EAAKouD,aACLpuD,EAAKquD,aACLruD,EAAKsuD,mBAGV,EAEYk4C,EAAAA,MAAQ,SAAU3mG,GAE7B,OADc,IAAInxB,KAAKmxB,EAAKyhC,UAE7B,EAEYklE,EAAAA,WAAa,SAAUU,GAElC,IADA,IAAMC,EAAS,GACN5yH,EAAI,EAAGA,EAAI2yH,EAAM36H,OAAQgI,IAChC4yH,EAAOn7H,KAAKw6H,EAAAA,MAAMU,EAAM3yH,KAE1B,OAAO4yH,CACR,EAKYX,EAAAA,KAAO,SAA8BU,GAChDA,EAAMliG,MAAK,SAAUrZ,EAAGC,GACtB,OAAOD,EAAE21C,UAAY11C,EAAE01C,SACxB,GACF,EAEYklE,EAAAA,kBAAoB,SAAUxmG,EAAconG,QAAA,QAAAA,GAAAA,GACvD,IAAMvnG,EAAO,IAAInxB,KAAKsxB,GACtB,MAAO,CACLqmG,GAASxmG,EAAKs8F,iBAAiBjzH,WAAY,EAAG,KAC9Cm9H,GAASxmG,EAAKu8F,cAAgB,EAAG,EAAG,KACpCiK,GAASxmG,EAAKw8F,aAAc,EAAG,KAC/B,IACAgK,GAASxmG,EAAKy8F,cAAe,EAAG,KAChC+J,GAASxmG,EAAK08F,gBAAiB,EAAG,KAClC8J,GAASxmG,EAAKwnG,gBAAiB,EAAG,KAClCD,EAAM,IAAM,IACZ/uH,KAAK,GACR,EAEYmuH,EAAAA,kBAAoB,SAAU/L,GACzC,IACM6M,EADK,qDACK1sH,KAAK6/G,GAErB,IAAK6M,EAAM,MAAM,IAAInhI,MAAM,+BAAwBs0H,IAEnD,OAAO,IAAI/rH,KACTA,KAAKs+E,IACHtpD,SAAS4jG,EAAK,GAAI,IAClB5jG,SAAS4jG,EAAK,GAAI,IAAM,EACxB5jG,SAAS4jG,EAAK,GAAI,IAClB5jG,SAAS4jG,EAAK,GAAI,KAAO,EACzB5jG,SAAS4jG,EAAK,GAAI,KAAO,EACzB5jG,SAAS4jG,EAAK,GAAI,KAAO,GAG9B,CAvLH,EAAiBd,KAAAA,GAAQ,KA0LzB,UCpLA,cAQE,WAAYx1H,EAAWxH,GALP,aAAuB,KACvB,aAAuB,KAChC,aAAkB,GAClB,WAAQ,EAGb,KAAKwH,OAASA,EACd,KAAKxH,KAAOA,EAEG,YAAXwH,GACF,KAAKu2H,QAAU/9H,EAAKg+H,IAChBh+H,EAAKsJ,OACL,IAAIpE,KAAKlF,EAAKsJ,OAAOwuD,UAAY,GACrC,KAAKmmE,QAAUj+H,EAAKg+H,IAAMh+H,EAAKixE,MAAQ,IAAI/rE,KAAKlF,EAAKixE,MAAMnZ,UAAY,IACnD,WAAXtwD,EACT,KAAKu2H,QAAU/9H,EAAKg+H,IAAMh+H,EAAKk+H,GAAK,IAAIh5H,KAAKlF,EAAKk+H,GAAGpmE,UAAY,GAC7C,UAAXtwD,IACT,KAAKy2H,QAAUj+H,EAAKg+H,IAAMh+H,EAAKk+H,GAAK,IAAIh5H,KAAKlF,EAAKk+H,GAAGpmE,UAAY,GAEpE,CA6DH,OAnDEqmE,EAAAA,UAAAA,OAAAA,SAAO9nG,KACH,KAAK+nG,MACP,IAAMC,EAAW,KAAKJ,SAAW5nG,EAAO,KAAK4nG,QACvCK,EAAU,KAAKP,SAAW1nG,EAAO,KAAK0nG,QAE5C,GAAoB,YAAhB,KAAKv2H,OAAsB,CAC7B,GAAI62H,EAAU,OAAO,EACrB,GAAIC,EAAS,OAAO,CACrB,MAAM,GAAoB,WAAhB,KAAK92H,QACd,GAAI82H,EAAS,OAAO,OACf,GAAoB,UAAhB,KAAK92H,OACd,QAAI62H,IACJ,KAAKluF,IAAI9Z,IACF,GAGT,OAAO,KAAK8Z,IAAI9Z,EACjB,EAOD8nG,EAAAA,UAAAA,IAAAA,SAAI9nG,GAEF,OADA,KAAKkoG,QAAQ/7H,KAAK6zB,IACX,CACR,EAQD8nG,EAAAA,UAAAA,SAAAA,WACE,IAAMK,EAAM,KAAKD,QACjB,OAAQ,KAAK/2H,QACX,IAAK,MACL,IAAK,UACH,OAAOg3H,EAGT,QACE,OAAQA,EAAIz7H,OAASy7H,EAAIA,EAAIz7H,OAAS,GAAK,KAEhD,EAEDo7H,EAAAA,UAAAA,MAAAA,WACE,OAAO,IAAIA,EAAW,KAAK32H,OAAQ,KAAKxH,KACzC,EACH,CAAC,CAnFD,SCDI4rC,GAAgB,SAAShmB,EAAGxD,GAI5B,OAHAwpB,GAAgBxrC,OAAOihB,gBAClB,CAAEwqB,UAAW,cAAgB5kC,OAAS,SAAU2e,EAAGxD,GAAKwD,EAAEimB,UAAYzpB,CAAI,GAC3E,SAAUwD,EAAGxD,GAAK,IAAK,IAAIniB,KAAKmiB,EAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKuhB,EAAGniB,KAAI2lB,EAAE3lB,GAAKmiB,EAAEniB,GAAK,EAC9F2rC,GAAchmB,EAAGxD,EAC3B,EAEM,SAASupB,GAAU/lB,EAAGxD,GACzB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAI0pB,UAAU,uBAAyBjgC,OAAOuW,GAAK,iCAE7D,SAAS2pB,IAAO3pC,KAAKqnC,YAAc7jB,CAAI,CADvCgmB,GAAchmB,EAAGxD,GAEjBwD,EAAExb,UAAkB,OAANgY,EAAahiB,OAAOwS,OAAOwP,IAAM2pB,EAAG3hC,UAAYgY,EAAEhY,UAAW,IAAI2hC,EAClF,CAEM,IAAIC,GAAW,WAQlB,OAPAA,GAAW5rC,OAAOmH,QAAU,SAAkBgf,GAC1C,IAAK,IAAIoU,EAAG5vB,EAAI,EAAGsb,EAAInM,UAAUnX,OAAQgI,EAAIsb,EAAGtb,IAE5C,IAAK,IAAI9K,KADT06B,EAAIzgB,UAAUnP,GACO3K,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,KAAIsmB,EAAEtmB,GAAK06B,EAAE16B,IAE9E,OAAOsmB,CACV,EACMylB,GAAS7xB,MAAM/X,KAAM8X,UAC/B,EAgH4B9Z,OAAOwS,OA6D7B,SAAS6rH,GAAc7kB,EAAIhuG,EAAM8yH,GACpC,GAAIA,GAA6B,IAArBxkH,UAAUnX,OAAc,IAAK,IAA4BisG,EAAxBjkG,EAAI,EAAGqb,EAAIxa,EAAK7I,OAAYgI,EAAIqb,EAAGrb,KACxEikG,GAAQjkG,KAAKa,IACRojG,IAAIA,EAAK/nG,MAAMmD,UAAUjD,MAAMtG,KAAK+K,EAAM,EAAGb,IAClDikG,EAAGjkG,GAAKa,EAAKb,IAGrB,OAAO6uG,EAAGvnG,OAAO28F,GAAM/nG,MAAMmD,UAAUjD,MAAMtG,KAAK+K,GACrD,CAqCwBxL,OAAOwS,OC1PhC,ICQY+rH,GDRZ,eAGE,WACEn3H,EACAxH,EACA4+H,GAHF,MAKEhyF,EAAAA,KAAAA,KAAMplC,EAAQxH,IAAK,YAEnBmJ,EAAKy1H,SAAWA,GACjB,CASH,OApBgDjzF,GAAAA,EAAAA,GAa9CkzF,EAAAA,UAAAA,IAAAA,SAAIxoG,GACF,QAAI,KAAKuoG,SAASvoG,EAAM,KAAKkoG,QAAQx7H,UACnC,KAAKw7H,QAAQ/7H,KAAK6zB,IACX,EAGV,EACH,CAAC,CApBD,CAAgD8nG,UE0EhD,GAtE0B,CACxB1Z,SAAU,CACR,SACA,SACA,UACA,YACA,WACA,SACA,YAEFF,WAAY,CACV,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,YAEFua,OAAQ,CACNC,KAAM,mBACN3oG,OAAQ,eACR4oG,aAAc,oBACd/2F,MAAO,UACP,SAAU,UACV,aAAc,cACd,UAAW,WACX,UAAW,WACX,YAAa,aACb,WAAY,YACZ,UAAW,WACXkH,GAAI,YACJ8X,GAAI,SACJg4E,IAAK,QACL9nF,MAAO,UACPC,OAAQ,WACR8nF,MAAO,UACPC,IAAK,kCACLloE,KAAM,SACNhxC,IAAK,QACL,UAAW,WACXgrG,MAAO,aACPmO,OAAQ,iBACRC,QAAS,qBACTC,UAAW,uBACXC,SAAU,sBACVC,OAAQ,iBACRC,SAAU,mBACVC,OAAQ,iBACRC,QAAS,eACTC,SAAU,gBACVC,MAAO,aACPC,MAAO,aACPC,IAAK,QACLC,KAAM,UACNC,KAAM,UACNC,OAAQ,cACRC,UAAW,oBACXC,QAAS,eACTC,SAAU,gBACVC,SAAU,gBACVC,MAAO,0BCjELl+D,GAAW,SAAUtP,EAAel4B,GACxC,OAA6B,IAAtBk4B,EAAIvvD,QAAQq3B,EACpB,EAQK2lG,GAA0B,SAACrgH,GAAO,SAAGzgB,UAAU,EAI/C+gI,GAAsC,SAC1CxgD,EACA3pD,EACAypD,GACG,gBAAGzpD,EAAK,KAAAjkB,OAAI0tE,EAAG,MAAA1tE,OAAK4tE,EAAM,EAU/B,cAiBE,WACEygD,EACAC,EACAC,EACAC,GAUA,QAZA,QAAAF,EAAAA,SACA,QAAAC,EAAAA,SACA,QAAAC,EAAAA,IAEA,KAAK93H,KAAO,GACZ,KAAK63H,SAAWA,GAAYE,GAC5B,KAAKH,QAAUA,EACf,KAAKE,cAAgBA,EACrB,KAAKH,MAAQA,EACb,KAAKlhI,QAAUkhI,EAAMlhI,QACrB,KAAKuhI,YAAcL,EAAMK,YAErB,KAAKA,YAAYC,WAAY,CAC/B,IAAMA,EAAc,GAAgB3uH,OAAO,KAAK7S,QAAQwhI,YAClDC,EAAe,GAAgB5uH,OAAO,KAAK7S,QAAQyhI,aAEzDD,EAAWxlG,MAAK,SAACrZ,EAAGC,GAAM,SAAIA,CAAC,IAC/B6+G,EAAYzlG,MAAK,SAACrZ,EAAGC,GAAM,SAAID,CAAC,IAEhC,KAAK6+G,WAAaA,EAAW3uH,OAAO4uH,GAC/B,KAAKD,WAAWj+H,SAAQ,KAAKi+H,WAAa,KAChD,CAED,GAAIzE,GAAU,KAAKwE,YAAYG,WAAY,CACzC,IAAMA,EAAah6H,GAAQ,KAAK65H,YAAYG,WAExC,KAAKH,YAAYG,UADjB,CAAC,KAAKH,YAAYG,WAEhB7+C,EAAOx2E,OAAOq1H,GAEpB,KAAKA,UAAY,CACfC,SAAUD,EAAUtkG,QAAO,SAAUmrF,GACnC,OAAQA,EAAQ1hG,CACjB,IACD+6G,UAAWF,EAAUtkG,QAAO,SAAUmrF,GACpC,OAAOsZ,QAAQtZ,EAAQ1hG,EACxB,IACDi7G,YAC0B,IAAxBj/C,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,MACf+9H,YAC0B,IAAxBl/C,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,QACW,IAAxB6+E,EAAK7+E,QAAQ,OAGjB,IAAMg+H,EAAe,SAAUr/G,EAAYC,GACzC,OAAOD,EAAE4lG,QAAU3lG,EAAE2lG,OACtB,EAED,KAAKmZ,UAAUC,SAAS3lG,KAAKgmG,GAC7B,KAAKN,UAAUE,UAAU5lG,KAAKgmG,GAEzB,KAAKN,UAAUC,SAASp+H,SAAQ,KAAKm+H,UAAUC,SAAW,MAC1D,KAAKD,UAAUE,UAAUr+H,SAAQ,KAAKm+H,UAAUE,UAAY,KAClE,MACC,KAAKF,UAAY,IAEpB,CAyXH,OAjXSO,EAAAA,mBAAP,SAA0Bf,GAGxB,KAAMA,EAAMlhI,QAAQkiI,QAAQD,EAAOE,aAAc,OAAO,EACxD,GAAIjB,EAAMK,YAAY9P,OAASyP,EAAMK,YAAY9yH,MAAO,OAAO,EAE/D,IAAK,IAAMvJ,KAAOg8H,EAAMK,YAAa,CACnC,GAAI1+D,GAAS,CAAC,UAAW,OAAQ,QAAS39D,GAAM,OAAO,EACvD,IAAK29D,GAASo/D,EAAOE,YAAYjB,EAAMlhI,QAAQkiI,MAAOh9H,GAAM,OAAO,CACpE,CAED,OAVmB,CAWpB,EAED+8H,EAAAA,UAAAA,mBAAAA,WACE,OAAOA,EAAOG,mBAAmB,KAAKlB,MACvC,EASDe,EAAAA,UAAAA,SAAAA,WACE,IAAMd,EAAU,KAAKA,QAErB,KAAM,KAAKnhI,QAAQkiI,QAAQD,EAAOE,aAChC,OAAOhB,EAAQ,2DAQjB,GALA,KAAK53H,KAAO,CAAC43H,EAAQ,UAGrB,KAAKkB,GAAAA,YAAkB,KAAKriI,QAAQkiI,SAEhC,KAAKliI,QAAQyxH,MAAO,CACtB,KAAK9gF,IAAIwwF,EAAQ,UACjB,IAAM1P,EAAQ,KAAKzxH,QAAQyxH,MAC3B,KAAK9gF,IACH,KAAK0wF,cACH5P,EAAM0B,iBACN,KAAKiO,SAASrc,WAAW0M,EAAM2B,eAC/B3B,EAAM4B,cAGX,MAAU,KAAKrzH,QAAQyO,OACtB,KAAKkiC,IAAIwwF,EAAQ,QACdxwF,IAAI,KAAK3wC,QAAQyO,MAAMvO,YACvBywC,IACC,KAAK2xF,OAAO,KAAKtiI,QAAQyO,OAAS0yH,EAAQ,SAAWA,EAAQ,SAMnE,OAFK,KAAKiB,sBAAsB,KAAKzxF,IAAIwwF,EAAQ,oBAE1C,KAAK53H,KAAK8F,KAAK,GACvB,EAED4yH,EAAAA,UAAAA,OAAAA,WACE,IAAMd,EAAU,KAAKA,QAES,IAA1B,KAAKnhI,QAAQu/E,UAAgB,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAEhE,KAAKywC,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UAAY4hD,EAAQ,SAAWA,EAAQ,QAEnE,EAEDc,EAAAA,UAAAA,SAAAA,WACE,IAAMd,EAAU,KAAKA,QAES,IAA1B,KAAKnhI,QAAQu/E,UAAgB,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAEhE,KAAKywC,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UACrB4hD,EAAQ,WACRA,EAAQ,UAEf,EAEDc,EAAAA,UAAAA,MAAAA,WACE,IAAMd,EAAU,KAAKA,QAES,IAA1B,KAAKnhI,QAAQu/E,UAAgB,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAE5D,KAAKwhI,WAAa,KAAKA,UAAUI,WACnC,KAAKnxF,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UACrB4hD,EAAQ,YACRA,EAAQ,YAGd,KAAKxwF,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UAAY4hD,EAAQ,QAAUA,EAAQ,QAI/D,KAAKI,YAAYgB,UACnB,KAAK5xF,IAAIwwF,EAAQ,OACjB,KAAKqB,YAGH,KAAKhB,WACP,KAAKiB,cACI,KAAKf,UACd,KAAKgB,aACI,KAAKnB,YAAYoB,QAC1B,KAAKC,SAER,EAEDX,EAAAA,UAAAA,OAAAA,WACE,IAAMd,EAAU,KAAKA,QAES,IAA1B,KAAKnhI,QAAQu/E,UACf,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAAYywC,IACzC,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UAAY4hD,EAAQ,SAAWA,EAAQ,SAIhE,KAAKO,WAAa,KAAKA,UAAUI,WACL,IAA1B,KAAK9hI,QAAQu/E,SACf,KAAK5uC,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UACrB4hD,EAAQ,YACRA,EAAQ,YAGd,KAAKxwF,IAAIwwF,EAAQ,OAAOxwF,IAAIwwF,EAAQ,aAE7B,KAAKO,WAAa,KAAKA,UAAUK,WAC1C,KAAKpxF,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UAAY4hD,EAAQ,QAAUA,EAAQ,SAGnC,IAA1B,KAAKnhI,QAAQu/E,UAAgB,KAAK5uC,IAAIwwF,EAAQ,SAE9C,KAAKI,YAAYgB,UACnB,KAAK5xF,IAAIwwF,EAAQ,OACjB,KAAKqB,YAGH,KAAKhB,WACP,KAAKiB,cACI,KAAKf,WACd,KAAKgB,aAGV,EAEDT,EAAAA,UAAAA,QAAAA,WACE,IAAMd,EAAU,KAAKA,QAEjB,KAAKI,YAAYgB,SACW,IAA1B,KAAKviI,QAAQu/E,WACf,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAAYywC,IAAIwwF,EAAQ,WACnD,KAAKmB,OAAO,KAAKtiI,QAAQu/E,WAAW,KAAK5uC,IAAIwwF,EAAQ,QAI3D,KAAKqB,aAEyB,IAA1B,KAAKxiI,QAAQu/E,UACf,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAEjC,KAAKywC,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UACrB4hD,EAAQ,UACRA,EAAQ,WAGZ,KAAKK,WACP,KAAKiB,cACI,KAAKf,WAAa,KAAKA,UAAUI,WAC1C,KAAKnxF,IAAIwwF,EAAQ,OAAOxwF,IAAIwwF,EAAQ,aAC3B,KAAKO,WACd,KAAKgB,YAER,EAEDT,EAAAA,UAAAA,OAAAA,WACE,IAAMd,EAAU,KAAKA,QAEjB,KAAKI,YAAYgB,SACW,IAA1B,KAAKviI,QAAQu/E,WACf,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAC/B,KAAKywC,IAAIwwF,EAAQ,WAInB,KAAKqB,aAEyB,IAA1B,KAAKxiI,QAAQu/E,UACf,KAAK5uC,IAAI,KAAK3wC,QAAQu/E,SAASr/E,YAEjC,KAAKywC,IACH,KAAK2xF,OAAO,KAAKtiI,QAAQu/E,UAAY4hD,EAAQ,SAAWA,EAAQ,UAIhE,KAAKK,WACP,KAAKiB,cACI,KAAKf,WACd,KAAKgB,aAGH,KAAK1iI,QAAQ6iI,WACf,KAAKlyF,IAAIwwF,EAAQ,WACdxwF,IAAI,KAAK2f,KAAK,KAAKtwD,QAAQ6iI,UAAW,KAAKlD,IAAKwB,EAAQ,SACxDxwF,IAAIwwF,EAAQ,QAGb,KAAKnhI,QAAQ8iI,UACf,KAAKnyF,IAAIwwF,EAAQ,OACdxwF,IACC,KAAK2xF,OAAQ,KAAKtiI,QAAQ8iI,SAAsBv/H,QAC5C49H,EAAQ,SACRA,EAAQ,SAEbxwF,IAAI,KAAK2f,KAAK,KAAKtwD,QAAQ8iI,cAAUv4H,EAAW42H,EAAQ,QAE9D,EAEOc,EAAAA,UAAAA,YAAR,WACE,IAAMd,EAAU,KAAKA,QACjB,KAAKO,WAAa,KAAKA,UAAUC,SACnC,KAAKhxF,IAAIwwF,EAAQ,OACdxwF,IACC,KAAK2f,KAAK,KAAKoxE,UAAUC,SAAU,KAAKoB,YAAa5B,EAAQ,QAE9DxwF,IAAIwwF,EAAQ,QACZxwF,IAAI,KAAK2f,KAAK,KAAKkxE,WAAY,KAAK7B,IAAKwB,EAAQ,QAEpD,KAAKxwF,IAAIwwF,EAAQ,WAAWxwF,IAC1B,KAAK2f,KAAK,KAAKkxE,WAAY,KAAK7B,IAAKwB,EAAQ,QAIlD,EAEOc,EAAAA,UAAAA,WAAR,WACE,IAAMd,EAAU,KAAKA,QACjB,KAAKO,UAAUC,WAAa,KAAKD,UAAUI,YAC7C,KAAKnxF,IAAIwwF,EAAQ,OAAOxwF,IACtB,KAAK2f,KAAK,KAAKoxE,UAAUC,SAAU,KAAKoB,cAIxC,KAAKrB,UAAUE,YACb,KAAKF,UAAUC,UAAU,KAAKhxF,IAAIwwF,EAAQ,QAE9C,KAAKxwF,IAAIwwF,EAAQ,WAAWxwF,IAC1B,KAAK2f,KAAK,KAAKoxE,UAAUE,UAAW,KAAKmB,YAAa5B,EAAQ,SAGnE,EAEOc,EAAAA,UAAAA,QAAR,WACE,IAAMd,EAAU,KAAKA,QAErB,KAAKxwF,IAAIwwF,EAAQ,OAAOxwF,IACtB,KAAK2f,KAAK,KAAKixE,YAAYoB,YAAQp4H,EAAW42H,EAAQ,QAEzD,EAEOc,EAAAA,UAAAA,SAAR,WACE,KAAKtxF,IACH,KAAK2f,KAAK,KAAKtwD,QAAQuiI,QAAS,KAAKS,UAAW,KAAK7B,QAAQ,QAEhE,EAEDc,EAAAA,UAAAA,IAAAA,SAAIp7G,GAEF,IAAI84G,EADJ94G,EAAI6T,SAAS7T,EAAE3mB,WAAY,IAE3B,IAAMihI,EAAU,KAAKA,QAErB,IAAW,IAAPt6G,EAAU,OAAOs6G,EAAQ,QAE7B,IAAM8B,EAAO92H,KAAKD,IAAI2a,GACtB,OAAQo8G,GACN,KAAK,EACL,KAAK,GACL,KAAK,GACHtD,EAAMsD,EAAO9B,EAAQ,MACrB,MACF,KAAK,EACL,KAAK,GACHxB,EAAMsD,EAAO9B,EAAQ,MACrB,MACF,KAAK,EACL,KAAK,GACHxB,EAAMsD,EAAO9B,EAAQ,MACrB,MACF,QACExB,EAAMsD,EAAO9B,EAAQ,MAGzB,OAAOt6G,EAAI,EAAI84G,EAAM,IAAMwB,EAAQ,QAAUxB,CAC9C,EAEDsC,EAAAA,UAAAA,UAAAA,SAAUniI,GACR,OAAO,KAAKshI,SAASrc,WAAWjlH,EAAI,EACrC,EAEDmiI,EAAAA,UAAAA,YAAAA,SAAYiB,GACV,IAAM3a,EAAU57B,GAASu2C,IAASA,EAAO,GAAK,EAAIA,EAAKC,eACvD,OACID,EAAiBr8G,EAAI,KAAK84G,IAAKuD,EAAiBr8G,GAAK,IAAM,IAC7D,KAAKu6G,SAASnc,SAASsD,EAE1B,EAED0Z,EAAAA,UAAAA,OAAAA,SAAOp7G,GACL,OAAOA,EAAI,MAAQ,CACpB,EAEDo7G,EAAAA,UAAAA,IAAAA,SAAI9mG,GAGF,OAFA,KAAK5xB,KAAKvG,KAAK,KACf,KAAKuG,KAAKvG,KAAKm4B,GACR,IACR,EAED8mG,EAAAA,UAAAA,KAAAA,SACE1uE,EACApzD,EACAijI,EACAC,GAJF,gBAIE,QAAAA,EAAAA,KAEK37H,GAAQ6rD,KACXA,EAAM,CAACA,IAsBTpzD,EACEA,GACA,SAAUmjI,GACR,OAAOA,EAAEpjI,UACV,EAEH,IAAMqjI,EAAe,SAAClwH,GACpB,OAAOlT,GAAYA,EAASkB,KAAKsI,EAAM0J,EACxC,EAED,OAAI+vH,EA9Bc,SAChBn2H,EACAqB,EACAk1H,GAIA,IAFA,IAAIlzE,EAAO,GAEF/kD,EAAI,EAAGA,EAAI0B,EAAM1J,OAAQgI,IACtB,IAANA,IACEA,IAAM0B,EAAM1J,OAAS,EACvB+sD,GAAQ,IAAMkzE,EAAiB,IAE/BlzE,GAAQhiD,EAAY,KAGxBgiD,GAAQrjD,EAAM1B,GAEhB,OAAO+kD,CACR,CAaQmzE,CAAUlwE,EAAI5sD,IAAI48H,GAAeF,EAAOD,GAExC7vE,EAAI5sD,IAAI48H,GAAcl0H,KAAKg0H,EAAQ,IAE7C,EACH,CAAC,CA9cD,SChCA,cAOE,WAAY7zH,GAFJ,WAAO,EAGb,KAAKA,MAAQA,CACd,CA6EH,OA3EEk0H,EAAAA,UAAAA,MAAAA,SAAMn6H,GAGJ,OAFA,KAAKA,KAAOA,EACZ,KAAKioD,MAAO,EACL,KAAKmyE,YACb,EAEDD,EAAAA,UAAAA,OAAAA,WACE,OAAO,KAAKlyE,MAAwB,OAAhB,KAAKi9C,MAC1B,EAEDi1B,EAAAA,UAAAA,WAAAA,WACE,IAAIE,EACAC,EAEJ,KAAKp1B,OAAS,KACd,KAAK3tG,MAAQ,KACb,EAAG,CACD,GAAI,KAAK0wD,KAAM,OAAO,EAItB,IAAK,IAAMhd,KADXovF,EAAO,KACY,KAAKp0H,MAAO,CAE7B,IAAMqC,EADC,KAAKrC,MAAMglC,GACC5iC,KAAK,KAAKrI,MACzBsI,IACW,OAAT+xH,GAAiB/xH,EAAM,GAAGtO,OAASqgI,EAAK,GAAGrgI,UAC7CqgI,EAAO/xH,EACPgyH,EAAarvF,EAGlB,CAQD,GANY,MAARovF,IACF,KAAKr6H,KAAO,KAAKA,KAAK3B,OAAOg8H,EAAK,GAAGrgI,QAEnB,KAAd,KAAKgG,OAAa,KAAKioD,MAAO,IAGxB,MAARoyE,EAIF,OAHA,KAAKpyE,MAAO,EACZ,KAAKi9C,OAAS,UACd,KAAK3tG,MAAQ,KAGhB,OAAuB,SAAf+iI,GAIT,OAFA,KAAKp1B,OAASo1B,EACd,KAAK/iI,MAAQ8iI,GACN,CACR,EAEDF,EAAAA,UAAAA,OAAAA,SAAO1nI,GACL,GAAI,KAAKyyG,SAAWzyG,EAAM,CACxB,GAAI,KAAK8E,MAAO,CACd,IAAMkmB,EAAI,KAAKlmB,MAEf,OADA,KAAK6iI,aACE38G,CACR,CAGD,OADA,KAAK28G,cACE,CACR,CAED,OAAO,CACR,EAEDD,EAAAA,UAAAA,aAAAA,WACE,OAAO,KAAKI,OAAO,SACpB,EAEDJ,EAAAA,UAAAA,OAAAA,SAAO1nI,GACL,GAAI,KAAK8nI,OAAO9nI,GAAO,OAAO,EAE9B,MAAM,IAAImB,MAAM,YAAcnB,EAAO,cAAgB,KAAKyyG,OAC3D,EACH,CAAC,CAtFD,GAwFc,SAAUs1B,GAAUx6H,EAAc63H,QAAA,QAAAA,EAAAA,IAC9C,IAAMphI,EAA4B,GAC5BgkI,EAAM,IAAIN,GAAOtC,EAAS9B,QAEhC,OAAK0E,EAAI7kG,MAAM51B,IAKf,WAEEy6H,EAAIC,OAAO,SACX,IAAMp9G,EAAIm9G,EAAIE,eACVr9G,IAAG7mB,EAAQu/E,SAAW7kD,SAAS7T,EAAE,GAAI,KACzC,GAAIm9G,EAAIG,SAAU,MAAM,IAAIhnI,MAAM,kBAElC,OAAQ6mI,EAAIv1B,QACV,IAAK,SACHzuG,EAAQkiI,KAAOG,GAAAA,MACX2B,EAAIL,gBAgMd,WAEE,IADWK,EAAIF,OAAO,MACb,OAET,EAAG,CACD,IAAIj9G,EAAIm9G,EAAIE,eACZ,IAAKr9G,EACH,MAAM,IAAI1pB,MAAM,qBAAuB6mI,EAAIv1B,OAAS,mBAGtD,IADAzuG,EAAQ2iI,OAAS,CAACjoG,SAAS7T,EAAE,GAAI,KAC1Bm9G,EAAIF,OAAO,UAAU,CAE1B,KADAj9G,EAAIm9G,EAAIE,gBAEN,MAAM,IAAI/mI,MAAM,qBAAuB6mI,EAAIv1B,OAAS,mBAEtDzuG,EAAQ2iI,OAAO3/H,KAAK03B,SAAS7T,EAAE,GAAI,IACpC,CACF,OAAQm9G,EAAIF,OAAO,UAAYE,EAAIF,OAAO,MAC5C,CAjNOM,GACAC,KAEF,MAIF,IAAK,aACHrkI,EAAQkiI,KAAOG,GAAAA,OACfriI,EAAQ0hI,UAAY,CAACW,GAAAA,GAAUA,GAAAA,GAAUA,GAAAA,GAAUA,GAAAA,GAAUA,GAAAA,IAC7D2B,EAAIL,aACJU,IACA,MAEF,IAAK,UACHrkI,EAAQkiI,KAAOG,GAAAA,OACX2B,EAAIL,eACNW,IACAD,KAEF,MAEF,IAAK,UACHrkI,EAAQkiI,KAAOG,GAAAA,OACX2B,EAAIL,eACNW,IACAD,KAEF,MAEF,IAAK,YACHrkI,EAAQkiI,KAAOG,GAAAA,SACX2B,EAAIL,eACNW,IACAD,KAEF,MAEF,IAAK,WACHrkI,EAAQkiI,KAAOG,GAAAA,QACX2B,EAAIL,eACNW,IACAD,KAEF,MAEF,IAAK,UACHrkI,EAAQkiI,KAAOG,GAAAA,OACX2B,EAAIL,eACNW,IACAD,KAEF,MAEF,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,SACHrkI,EAAQkiI,KAAOG,GAAAA,OACf,IAAMn9H,EAAkB8+H,EAAIv1B,OACzB7mG,OAAO,EAAG,GACV0hC,cAGH,GAFAtpC,EAAQ0hI,UAAY,CAACW,GAAMn9H,KAEtB8+H,EAAIL,aAAc,OAGvB,KAAOK,EAAIF,OAAO,UAAU,CAC1B,GAAIE,EAAIG,SAAU,MAAM,IAAIhnI,MAAM,kBAElC,IAAMonI,EAAMC,IACZ,IAAKD,EACH,MAAM,IAAIpnI,MACR,qBAAuB6mI,EAAIv1B,OAAS,sBAIxCzuG,EAAQ0hI,UAAU1+H,KAAKq/H,GAAMkC,IAC7BP,EAAIL,YACL,EAyMP,WACEK,EAAIF,OAAO,MACXE,EAAIF,OAAO,OAEX,IAAInE,EAAM8E,IACV,IAAK9E,EAAK,OAEV3/H,EAAQwhI,WAAa,CAAC7B,GACtBqE,EAAIL,aAEJ,KAAOK,EAAIF,OAAO,UAAU,CAE1B,KADAnE,EAAM8E,KAEJ,MAAM,IAAItnI,MACR,qBAAuB6mI,EAAIv1B,OAAS,uBAIxCzuG,EAAQwhI,WAAWx+H,KAAK28H,GACxBqE,EAAIL,YACL,CACF,CA7NKe,GACAL,IACA,MAEF,IAAK,UACL,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,MACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,YACL,IAAK,UACL,IAAK,WACL,IAAK,WAIH,GAHArkI,EAAQkiI,KAAOG,GAAAA,OACfriI,EAAQuiI,QAAU,CAACoC,MAEdX,EAAIL,aAAc,OAGvB,KAAOK,EAAIF,OAAO,UAAU,CAC1B,GAAIE,EAAIG,SAAU,MAAM,IAAIhnI,MAAM,kBAElC,IAAM2C,EAAI6kI,IACV,IAAK7kI,EACH,MAAM,IAAI3C,MACR,qBAAuB6mI,EAAIv1B,OAAS,oBAIxCzuG,EAAQuiI,QAAQv/H,KAAKlD,GACrBkkI,EAAIL,YACL,CAEDW,IACAD,IACA,MAEF,QACE,MAAM,IAAIlnI,MAAM,kBAErB,CA5IDgtF,GACOnqF,GAHsB,KAgJ7B,SAASskI,IACP,IAAM30F,EAAKq0F,EAAIF,OAAO,MAChBrE,EAAMuE,EAAIF,OAAO,OACvB,GAAMn0F,GAAM8vF,EAEZ,EAAG,CACD,IAAME,EAAM8E,IACNF,EAAMC,IACN1kI,EAAI6kI,IAGV,GAAIhF,EAGE4E,GACFP,EAAIL,aACC3jI,EAAQ0hI,YAAW1hI,EAAQ0hI,UAAY,IAC1C1hI,EAAQ0hI,UAA0B1+H,KAClCq/H,GAAMkC,GAAmB5E,IAAIA,MAG1B3/H,EAAQwhI,aAAYxhI,EAAQwhI,WAAa,IAC5CxhI,EAAQwhI,WAAwBx+H,KAAK28H,GACvCqE,EAAIF,OAAO,gBAGR,GAAIS,EACTP,EAAIL,aACC3jI,EAAQ0hI,YAAW1hI,EAAQ0hI,UAAY,IAC1C1hI,EAAQ0hI,UAA0B1+H,KAAKq/H,GAAMkC,SAC1C,GAAmB,eAAfP,EAAIv1B,OACbu1B,EAAIL,aACC3jI,EAAQ0hI,YACX1hI,EAAQ0hI,UAAY,CAACW,GAAAA,GAAUA,GAAAA,GAAUA,GAAAA,GAAUA,GAAAA,GAAUA,GAAAA,UAE1D,GAAmB,YAAf2B,EAAIv1B,OAAsB,CACnCu1B,EAAIL,aACJ,IAAI98G,EAAIm9G,EAAIE,eACZ,IAAKr9G,EACH,MAAM,IAAI1pB,MACR,qBAAuB6mI,EAAIv1B,OAAS,0BAIxC,IADAzuG,EAAQ8iI,SAAW,CAACpoG,SAAS7T,EAAE,GAAI,KAC5Bm9G,EAAIF,OAAO,UAAU,CAE1B,KADAj9G,EAAIm9G,EAAIE,gBAEN,MAAM,IAAI/mI,MACR,qBAAuB6mI,EAAIv1B,OAAS,uBAGxCzuG,EAAQ8iI,SAAS9/H,KAAK03B,SAAS7T,EAAE,GAAI,IACtC,CACF,KAAM,KAAI/mB,EAKT,OAJAkkI,EAAIL,aACC3jI,EAAQuiI,UAASviI,EAAQuiI,QAAU,IACtCviI,EAAQuiI,QAAqBv/H,KAAKlD,EAGrC,CACF,OAAQkkI,EAAIF,OAAO,UAAYE,EAAIF,OAAO,QAAUE,EAAIF,OAAO,MACjE,CAsBD,SAASa,IACP,OAAQX,EAAIv1B,QACV,IAAK,UACH,OAAO,EACT,IAAK,WACH,OAAO,EACT,IAAK,QACH,OAAO,EACT,IAAK,QACH,OAAO,EACT,IAAK,MACH,OAAO,EACT,IAAK,OACH,OAAO,EACT,IAAK,OACH,OAAO,EACT,IAAK,SACH,OAAO,EACT,IAAK,YACH,OAAO,EACT,IAAK,UACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,IAAK,WACH,OAAO,GACT,QACE,OAAO,EAEZ,CAED,SAAS+1B,IACP,OAAQR,EAAIv1B,QACV,IAAK,SACL,IAAK,UACL,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,SACH,OAAOu1B,EAAIv1B,OAAO7mG,OAAO,EAAG,GAAG0hC,cACjC,QACE,OAAO,EAEZ,CAED,SAASm7F,IACP,OAAQT,EAAIv1B,QACV,IAAK,OAEH,OADAu1B,EAAIL,cACI,EACV,IAAK,QAEH,OADAK,EAAIL,aACG,EACT,IAAK,SAEH,OADAK,EAAIL,aACGK,EAAIF,OAAO,SAAW,EAAI,EACnC,IAAK,QAEH,OADAE,EAAIL,aACGK,EAAIF,OAAO,SAAW,EAAI,EACnC,IAAK,MACH,IAAM98G,EAAI0T,SAASspG,EAAIljI,MAAM,GAAI,IACjC,GAAIkmB,GAAK,KAAOA,EAAI,IAAK,MAAM,IAAI7pB,MAAM,qBAAuB6pB,GAGhE,OADAg9G,EAAIL,aACGK,EAAIF,OAAO,SAAW98G,EAAIA,EAEnC,QACE,OAAO,EAEZ,CAyBD,SAASq9G,IACP,GAAmB,UAAfL,EAAIv1B,OAAoB,CAC1B,IAAM53E,EAAOnxB,KAAK6J,MAAMy0H,EAAIz6H,MAE5B,IAAKstB,EAAM,MAAM,IAAI15B,MAAM,2BAA6B6mI,EAAIz6H,MAC5DvJ,EAAQyxH,MAAQ,IAAI/rH,KAAKmxB,EAC1B,MAAUmtG,EAAIF,OAAO,SACpB9jI,EAAQyO,MAAQisB,SAASspG,EAAIljI,MAAM,GAAI,IACvCkjI,EAAIC,OAAO,UAGd,CACF,CHzZK,SAAUW,GACd1C,GAMA,OAAOA,EAAO/C,GAAU0F,MACzB,EAlBD,SAAY1F,GACVA,EAAAA,EAAAA,OAAAA,GAAAA,SACAA,EAAAA,EAAAA,QAAAA,GAAAA,UACAA,EAAAA,EAAAA,OAAAA,GAAAA,SACAA,EAAAA,EAAAA,MAAAA,GAAAA,QACAA,EAAAA,EAAAA,OAAAA,GAAAA,SACAA,EAAAA,EAAAA,SAAAA,GAAAA,WACAA,EAAAA,EAAAA,SAAAA,GAAAA,UAPF,EAAYA,KAAAA,GAAS,KIiFrB,IAAM2F,GAAW,SAAUv7H,EAAc63H,GACvC,YADuC,QAAAA,EAAAA,IAChC,IAAIiB,GAAM0B,GAAUx6H,EAAM63H,SAAa72H,EAC/C,EAEKie,GAAS,CACb,QACA,QACA,WACA,YACA,aACA,WAGFy5G,GAAAA,YAAqB,GACrBA,GAAAA,YAAmB9C,GAAAA,QAAoB32G,GACvCy5G,GAAAA,YAAmB9C,GAAAA,UAAsB32G,GACzCy5G,GAAAA,YAAmB9C,GAAAA,OAAmB,CAAC,UAAUtsH,OAAO2V,IACxDy5G,GAAAA,YAAmB9C,GAAAA,QAAoB32G,GACvCy5G,GAAAA,YAAmB9C,GAAAA,SAAqB32G,GACxCy5G,GAAAA,YAAmB9C,GAAAA,QAAoB,CAAC,WAAY,aAAatsH,OAAO2V,IAMxE,IASQ,GAAuBy5G,GAAAA,mBC/H/B,cAME,WACE3hD,EACAD,EACAzoC,EACAwoC,GAEA,KAAKE,KAAOA,EACZ,KAAKD,OAASA,EACd,KAAKzoC,OAASA,EACd,KAAKwoC,YAAcA,GAAe,CACnC,CAwBH,OAtBE2kD,EAAAA,UAAAA,SAAAA,WACE,OAAO,KAAKzkD,IACb,EAEDykD,EAAAA,UAAAA,WAAAA,WACE,OAAO,KAAK1kD,MACb,EAED0kD,EAAAA,UAAAA,WAAAA,WACE,OAAO,KAAKntF,MACb,EAEDmtF,EAAAA,UAAAA,gBAAAA,WACE,OAAO,KAAK3kD,WACb,EAED2kD,EAAAA,UAAAA,QAAAA,WACE,OAC2D,KAA5C,GAAZ,KAAKzkD,KAAY,GAAmB,GAAd,KAAKD,OAAc,KAAKzoC,QAC/C,KAAKwoC,WAER,EACH,CAAC,CAxCD,GA0CA,eAiBE,WACEK,EACA3pD,EACAypD,EACAD,EACAD,EACAzoC,EACAwoC,GAPF,MASEhzC,EAAAA,KAAAA,KAAMkzC,EAAMD,EAAQzoC,EAAQwoC,IAAY,YACxCz2E,EAAK82E,KAAOA,EACZ92E,EAAKmtB,MAAQA,EACbntB,EAAK42E,IAAMA,GACZ,CA+LH,OA7N8Bp0C,GAAAA,EAAAA,GAKrB64F,EAAAA,SAAP,SAAgBnuG,GACd,OAAO,IAAI,KACTA,EAAKs8F,iBACLt8F,EAAKu8F,cAAgB,EACrBv8F,EAAKw8F,aACLx8F,EAAKy8F,cACLz8F,EAAK08F,gBACL18F,EAAKwnG,gBACLxnG,EAAKs4B,UAAY,IAEpB,EAiBD61E,EAAAA,UAAAA,WAAAA,WACE,OAAOxH,GAAAA,WAAoB,IAAI93H,KAAK,KAAK4yD,WAC1C,EAED0sE,EAAAA,UAAAA,QAAAA,WACE,OAAO,IAAIt/H,KACTA,KAAKs+E,IACH,KAAKvD,KACL,KAAK3pD,MAAQ,EACb,KAAKypD,IACL,KAAKD,KACL,KAAKD,OACL,KAAKzoC,OACL,KAAKwoC,cAEP9nB,SACH,EAED0sE,EAAAA,UAAAA,OAAAA,WACE,OAAO,KAAKzkD,GACb,EAEDykD,EAAAA,UAAAA,SAAAA,WACE,OAAO,KAAKluG,KACb,EAEDkuG,EAAAA,UAAAA,QAAAA,WACE,OAAO,KAAKvkD,IACb,EAEMukD,EAAAA,UAAAA,SAAP,SAAgB1iD,GACd,KAAK7B,MAAQ6B,CACd,EAEM0iD,EAAAA,UAAAA,UAAP,SAAiBtiD,GAEf,GADA,KAAK5rD,OAAS4rD,EACV,KAAK5rD,MAAQ,GAAI,CACnB,IAAMmuG,EAAU94H,KAAKo/D,MAAM,KAAKz0C,MAAQ,IAClCouG,EAAWzH,GAAM,KAAK3mG,MAAO,IACnC,KAAKA,MAAQouG,EACb,KAAKzkD,MAAQwkD,EACM,IAAf,KAAKnuG,QACP,KAAKA,MAAQ,KACX,KAAK2pD,KAEV,CACF,EAEMukD,EAAAA,UAAAA,UAAP,SAAiBniD,EAAcsiD,GACzBA,EAAO,KAAKC,aACd,KAAK7kD,OAAS,KAAK6kD,aAAe,GAAK,EAAID,IAAgB,EAAPtiD,EAEpD,KAAKtC,OAAS,KAAK6kD,aAAeD,GAAe,EAAPtiD,EAG5C,KAAKwiD,QACN,EAEML,EAAAA,UAAAA,SAAP,SAAgBniD,GACd,KAAKtC,KAAOsC,EACZ,KAAKwiD,QACN,EAEML,EAAAA,UAAAA,SAAP,SAAgBliD,EAAewiD,EAAmB3C,GAMhD,IALI2C,IAEF,KAAKhlD,MAAQn0E,KAAKo/D,OAAO,GAAK,KAAK+U,MAAQwC,GAASA,KAG7C,CACP,KAAKxC,MAAQwC,EACP,MAAgC46C,GAAO,KAAKp9C,KAAM,IAA3CilD,EAAM,MAAOC,EAAO,MAMjC,GALID,IACF,KAAKjlD,KAAOklD,EACZ,KAAKC,SAASF,IAGZ70E,GAAMiyE,IAAWx6H,GAASw6H,EAAQ,KAAKriD,MAAO,KACnD,CACF,EAEM0kD,EAAAA,UAAAA,WAAP,SACEhiD,EACAsiD,EACA3C,EACA+C,GAQA,IANIJ,IAEF,KAAKjlD,QACHl0E,KAAKo/D,OAAO,MAAoB,GAAZ,KAAK+U,KAAY,KAAKD,SAAW2C,GAAWA,KAG3D,CACP,KAAK3C,QAAU2C,EACT,MAAmC06C,GAAO,KAAKr9C,OAAQ,IAAhDslD,EAAO,MAAOC,EAAS,MAMpC,GALID,IACF,KAAKtlD,OAASulD,EACd,KAAKC,SAASF,GAAS,EAAOhD,KAI7BjyE,GAAMiyE,IAAWx6H,GAASw6H,EAAQ,KAAKriD,SACvC5vB,GAAMg1E,IAAav9H,GAASu9H,EAAU,KAAKrlD,SAE5C,KAEH,CACF,EAEM2kD,EAAAA,UAAAA,WAAP,SACE/hD,EACAqiD,EACA3C,EACA+C,EACAI,GAWA,IATIR,IAEF,KAAK1tF,QACHzrC,KAAKo/D,OACF,OAAqB,KAAZ,KAAK+U,KAA4B,GAAd,KAAKD,OAAc,KAAKzoC,SACnDqrC,GACAA,KAGC,CACP,KAAKrrC,QAAUqrC,EACT,MAAqCy6C,GAAO,KAAK9lF,OAAQ,IAAlDmuF,EAAS,MAAOC,EAAS,MAMtC,GALID,IACF,KAAKnuF,OAASouF,EACd,KAAKC,WAAWF,GAAW,EAAOpD,EAAQ+C,KAIzCh1E,GAAMiyE,IAAWx6H,GAASw6H,EAAQ,KAAKriD,SACvC5vB,GAAMg1E,IAAav9H,GAASu9H,EAAU,KAAKrlD,WAC3C3vB,GAAMo1E,IAAa39H,GAAS29H,EAAU,KAAKluF,SAE5C,KAEH,CACF,EAEMotF,EAAAA,UAAAA,OAAP,WACE,KAAI,KAAKzkD,KAAO,IAAhB,CAIA,IAAI2lD,EAAc1I,GAAAA,WAAoB,KAAK/8C,KAAM,KAAK3pD,MAAQ,GAAG,GACjE,KAAI,KAAKypD,KAAO2lD,GAIhB,KAAO,KAAK3lD,IAAM2lD,GAAa,CAG7B,GAFA,KAAK3lD,KAAO2lD,IACV,KAAKpvG,MACY,KAAf,KAAKA,QACP,KAAKA,MAAQ,IACX,KAAK2pD,KACH,KAAKA,KAAO+8C,GAAAA,SACd,OAIJ0I,EAAc1I,GAAAA,WAAoB,KAAK/8C,KAAM,KAAK3pD,MAAQ,GAAG,EAC9D,CAnBA,CAoBF,EAEMkuG,EAAAA,UAAAA,IAAP,SAAWhlI,EAAwBslI,GACzB,MAAqDtlI,EAAO,KAAtDu/E,EAA+Cv/E,EAAO,SAA5CmlI,EAAqCnlI,EAAO,KAAtC2iI,EAA+B3iI,EAAO,OAA9B0lI,EAAuB1lI,EAAO,SAApB8lI,EAAa9lI,EAAO,SAEpE,OAAQkiI,GACN,KAAK/C,GAAAA,OACH,OAAO,KAAKgH,SAAS5mD,GACvB,KAAK4/C,GAAAA,QACH,OAAO,KAAKiH,UAAU7mD,GACxB,KAAK4/C,GAAAA,OACH,OAAO,KAAKkH,UAAU9mD,EAAU4lD,GAClC,KAAKhG,GAAAA,MACH,OAAO,KAAKsG,SAASlmD,GACvB,KAAK4/C,GAAAA,OACH,OAAO,KAAK0G,SAAStmD,EAAU+lD,EAAU3C,GAC3C,KAAKxD,GAAAA,SACH,OAAO,KAAK8G,WAAW1mD,EAAU+lD,EAAU3C,EAAQ+C,GACrD,KAAKvG,GAAAA,SACH,OAAO,KAAKmH,WAAW/mD,EAAU+lD,EAAU3C,EAAQ+C,EAAUI,GAElE,EACH,CAAC,CA7ND,CAA8Bf,IChCxB,SAAUwB,GAAkBvmI,GAKhC,IAJA,IAAMwmI,EAAoB,GAIR,MAHL5lI,OAAOgB,KAAK5B,GAGPmY,EAAAA,EAAAA,OAAAA,IAAM,CAAnB,IAAMjT,EAAG,KACPiD,GAASs+H,GAAavhI,IAAMshI,EAAQxjI,KAAKkC,GAC1Cs4H,GAAAA,OAAgBx9H,EAAQkF,MAAUs4H,GAAAA,YAAqBx9H,EAAQkF,KACjEshI,EAAQxjI,KAAKkC,EAEhB,CAED,GAAIshI,EAAQjjI,OACV,MAAM,IAAIpG,MAAM,oBAAsBqpI,EAAQn3H,KAAK,OAGrD,aAAYrP,EACb,CAEK,SAAU0mI,GAAa1mI,GAC3B,IAAM2mI,EAAI,SAAQC,IAAoBL,GAAkBvmI,IAIxD,GAFI+8H,GAAU4J,EAAKE,YAAWF,EAAKzE,KAAOG,GAAAA,SAEpCtF,GAAU4J,EAAKzE,QAASG,GAAAA,YAAkBsE,EAAKzE,MACnD,MAAM,IAAI/kI,MAAM,6BAAsBwpI,EAAKzE,KAAI,KAAArvH,OAAI7S,EAAQkiI,OAa7D,GAVKyE,EAAKG,UAASH,EAAKG,QAAU,IAAIphI,MAAK,IAAIA,MAAOqhI,gBAAgB,KAEjEhK,GAAU4J,EAAKxB,MAETx4C,GAASg6C,EAAKxB,QAGvBwB,EAAKxB,KAAOwB,EAAKxB,KAAK5c,SAJtBoe,EAAKxB,KAAO9C,GAAAA,GAAAA,QAOVtF,GAAU4J,EAAKK,UAAW,CACxBr6C,GAASg6C,EAAKK,YAAWL,EAAKK,SAAW,CAACL,EAAKK,WAEnD,IAAK,IAAIz7H,EAAI,EAAGA,EAAIo7H,EAAKK,SAASzjI,OAAQgI,IAAK,CAE7C,GAAU,KADJyb,EAAI2/G,EAAKK,SAASz7H,OACPyb,IAAM,KAAOA,GAAK,KACjC,MAAM,IAAI7pB,MACR,6DAGL,CACF,CAED,KAEI0kI,QAAQ8E,EAAK7D,WACbjF,GAAS8I,EAAK7D,WACdjF,GAAS8I,EAAK9D,YACdhB,QAAQ8E,EAAKnF,aACb3D,GAAS8I,EAAKnF,aACdzE,GAAU4J,EAAKjF,YACf3E,GAAU4J,EAAKE,WAGjB,OAAQF,EAAKzE,MACX,KAAKG,GAAAA,OACEsE,EAAKpE,UAASoE,EAAKpE,QAAUoE,EAAKG,QAAQ1T,cAAgB,GAC/DuT,EAAKnF,WAAamF,EAAKG,QAAQzT,aAC/B,MACF,KAAKgP,GAAAA,QACHsE,EAAKnF,WAAamF,EAAKG,QAAQzT,aAC/B,MACF,KAAKgP,GAAAA,OACHsE,EAAKjF,UAAY,CAAClE,GAAAA,WAAoBmJ,EAAKG,UAoBjD,GAdI/J,GAAU4J,EAAKpE,WAAa76H,GAAQi/H,EAAKpE,WAC3CoE,EAAKpE,QAAU,CAACoE,EAAKpE,UAKrBxF,GAAU4J,EAAK9D,aACdn7H,GAAQi/H,EAAK9D,YACdl2C,GAASg6C,EAAK9D,aAEd8D,EAAK9D,UAAY,CAAC8D,EAAK9D,YAIpB9F,GAAU4J,EAAKnF,YAGb,GAAI95H,GAAQi/H,EAAKnF,YAAa,CACnC,IAAMA,EAAa,GACbC,EAAc,GAEpB,IAASl2H,EAAI,EAAGA,EAAIo7H,EAAKnF,WAAWj+H,OAAQgI,IAAK,CAC/C,IAAMyb,KAAI2/G,EAAKnF,WAAWj2H,IAClB,EACNi2H,EAAWx+H,KAAKgkB,GACPA,EAAI,GACby6G,EAAYz+H,KAAKgkB,EAEpB,CACD2/G,EAAKnF,WAAaA,EAClBmF,EAAKlF,YAAcA,CACpB,MAAUkF,EAAKnF,WAAa,GAC3BmF,EAAKlF,YAAc,CAACkF,EAAKnF,YACzBmF,EAAKnF,WAAa,KAElBmF,EAAKlF,YAAc,GACnBkF,EAAKnF,WAAa,CAACmF,EAAKnF,kBArBxBmF,EAAKnF,WAAa,GAClBmF,EAAKlF,YAAc,GA6BrB,GALI1E,GAAU4J,EAAK7D,YAAcp7H,GAAQi/H,EAAK7D,YAC5C6D,EAAK7D,SAAW,CAAC6D,EAAK7D,WAInB/F,GAAU4J,EAAKjF,WAEb,GAAI/0C,GAASg6C,EAAKjF,WACvBiF,EAAKjF,UAAY,CAACiF,EAAKjF,WACvBiF,EAAKM,WAAa,UACb,GAAIjK,GAAa2J,EAAKjF,WAC3BiF,EAAKjF,UAAY,CAAC5E,GAAAA,QAAgB6J,EAAKjF,WAAWnZ,SAClDoe,EAAKM,WAAa,UACb,GAAIN,EAAKjF,qBAAqB5E,IAC9B6J,EAAKjF,UAAU76G,GAAK8/G,EAAKzE,KAAOG,GAAAA,SACnCsE,EAAKjF,UAAY,CAACiF,EAAKjF,UAAUnZ,SACjCoe,EAAKM,WAAa,OAElBN,EAAKM,WAAa,CAAC,CAACN,EAAKjF,UAAUnZ,QAASoe,EAAKjF,UAAU76G,IAC3D8/G,EAAKjF,UAAY,UAEd,CACL,IAAMA,EAAsB,GACtBuF,EAAa,GAEnB,IAAS17H,EAAI,EAAGA,EAAIo7H,EAAKjF,UAAUn+H,OAAQgI,IAAK,CAC9C,IAAM23H,EAAOyD,EAAKjF,UAAUn2H,GAExBohF,GAASu2C,GACXxB,EAAU1+H,KAAKkgI,GAENlG,GAAakG,GACtBxB,EAAU1+H,KAAK85H,GAAAA,QAAgBoG,GAAM3a,UAIlC2a,EAAKr8G,GAAK8/G,EAAKzE,KAAOG,GAAAA,QACzBX,EAAU1+H,KAAKkgI,EAAK3a,SAEpB0e,EAAWjkI,KAAK,CAACkgI,EAAK3a,QAAS2a,EAAKr8G,GAEvC,CACD8/G,EAAKjF,UAAY7D,GAAS6D,GAAaA,EAAY,KACnDiF,EAAKM,WAAapJ,GAASoJ,GAAcA,EAAa,IACvD,MAtCCN,EAAKM,WAAa,KA+DpB,OAtBKlK,GAAU4J,EAAKhE,QAETh2C,GAASg6C,EAAKhE,UACvBgE,EAAKhE,OAAS,CAACgE,EAAKhE,SAFpBgE,EAAKhE,OAASgE,EAAKzE,KAAOG,GAAAA,OAAe,CAACsE,EAAKG,QAAQxT,eAAiB,KAMrEyJ,GAAU4J,EAAKjB,UAGT/4C,GAASg6C,EAAKjB,YACvBiB,EAAKjB,SAAW,CAACiB,EAAKjB,WAHtBiB,EAAKjB,SACHiB,EAAKzE,KAAOG,GAAAA,SAAiB,CAACsE,EAAKG,QAAQvT,iBAAmB,KAM7DwJ,GAAU4J,EAAKb,UAGTn5C,GAASg6C,EAAKb,YACvBa,EAAKb,SAAW,CAACa,EAAKb,WAHtBa,EAAKb,SACHa,EAAKzE,KAAOG,GAAAA,SAAiB,CAACsE,EAAKG,QAAQzI,iBAAmB,KAK3D,CAAE6I,cAAeP,EACzB,CCpMK,SAAUQ,GAAYC,GAC1B,IAAMpnI,EAAUonI,EACbniI,MAAM,MACN0B,IAAI0gI,IACJjqG,QAAO,SAACzsB,GAAM,OAAM,OAAN,CAAU,IAC3B,gBAAY3Q,EAAQ,IAAOA,EAAQ,GACpC,CAEK,SAAUsnI,GAAap6H,GAC3B,IAAMlN,EAA4B,GAE5BunI,EAAkB,+CAA+C31H,KACrE1E,GAGF,IAAKq6H,EACH,OAAOvnI,EAGA,MAAiBunI,EAAe,GAA1BT,EAAWS,EAAe,GAMzC,OAJIC,IACFxnI,EAAQwnI,KAAOA,GAEjBxnI,EAAQ8mI,QAAUtJ,GAAAA,kBAA2BsJ,GACtC9mI,CACR,CAED,SAASqnI,GAAUD,GAEjB,KADAA,EAAYA,EAAU5iI,QAAQ,YAAa,KAC5BjB,OAAQ,OAAO,KAE9B,IAAMkkI,EAAS,iBAAiB71H,KAAKw1H,EAAU99F,eAC/C,IAAKm+F,EACH,OAAOC,GAAWN,GAGX,MAAOK,EAAM,GACtB,OAAQviI,EAAIokC,eACV,IAAK,QACL,IAAK,SACH,OAAOo+F,GAAWN,GACpB,IAAK,UACH,OAAOE,GAAaF,GACtB,QACE,MAAM,IAAIjqI,MAAM,+BAAwB+H,EAAG,QAAA2N,OAAOu0H,IAEvD,CAED,SAASM,GAAWx6H,GAClB,IACMlN,EAAUsnI,GADKp6H,EAAK1I,QAAQ,WAAY,KAoD9C,OAjDc0I,EAAK1I,QAAQ,sBAAuB,IAAIS,MAAM,KAEtD3B,SAAQ,SAACwtE,GACP,MAAeA,EAAK7rE,MAAM,KAAzBC,EAAG,KAAEpE,EAAK,KACjB,OAAQoE,EAAIokC,eACV,IAAK,OACHtpC,EAAQkiI,KAAO/C,GAAUr+H,EAAMwoC,eAC/B,MACF,IAAK,OACHtpC,EAAQmlI,KAAOwC,GAAK7mI,EAAMwoC,eAC1B,MACF,IAAK,QACL,IAAK,WACL,IAAK,WACL,IAAK,UACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,WACH,IAAMs+F,EA+Bd,SAAqB9mI,GACnB,IAA4B,IAAxBA,EAAMkD,QAAQ,KAAa,CAE7B,OADelD,EAAMmE,MAAM,KACb0B,IAAIkhI,GACnB,CAED,OAAOA,GAAsB/mI,EAC9B,CAtCmB8jH,CAAY9jH,GAClBgnI,EAAY5iI,EAAIkS,cAGtBpX,EAAQ8nI,GAAaF,EACrB,MACF,IAAK,YACL,IAAK,QACH5nI,EAAQ0hI,UAwChB,SAAsB5gI,GAGpB,OAFaA,EAAMmE,MAAM,KAEb0B,KAAI,SAAC45E,GACf,GAAmB,IAAfA,EAAIh9E,OAEN,OAAOokI,GAAKpnD,GAId,IAAMhpC,EAAQgpC,EAAI1uE,MAAM,8BACxB,IAAK0lC,GAASA,EAAMh0C,OAAS,EAC3B,MAAM,IAAIwkI,YAAY,kCAA2BxnD,IAEnD,IAAM15D,EAAIyU,OAAOic,EAAM,IACjBywF,EAAWzwF,EAAM,GACjB2rF,EAAOyE,GAAKK,GAAUzf,QAC5B,OAAO,IAAIuU,GAAQoG,EAAMr8G,EAC1B,GACF,CA3D2BohH,CAAannI,GACjC,MACF,IAAK,UACL,IAAK,OAEH,IAAMgmI,EAAUQ,GAAap6H,GAC7BlN,EAAQwnI,KAAOV,EAAQU,KACvBxnI,EAAQ8mI,QAAUA,EAAQA,QAC1B,MACF,IAAK,QACH9mI,EAAQyxH,MAAQ+L,GAAAA,kBAA2B18H,GAC3C,MACF,IAAK,WACHd,EAAQ6mI,SAAWvrG,OAAOx6B,GAC1B,MACF,QACE,MAAM,IAAI3D,MAAM,2BAA6B+H,EAAM,KAExD,IAEMlF,CACR,CAWD,SAAS6nI,GAAsB/mI,GAC7B,MAAI,aAAakY,KAAKlY,GACbw6B,OAAOx6B,GAGTA,CACR,CC3HD,kBAIE,WAAY+1B,EAAY2wG,GACtB,GAAIjpE,MAAM1nC,EAAKyhC,WACb,MAAM,IAAI4vE,WAAW,uCAEvB,KAAKrxG,KAAOA,EACZ,KAAK2wG,KAAOA,CACb,CAmCH,OAjCE5mI,OAAAA,eAAYunI,EAAAA,UAAA,QAAK,KAAjB,WACE,OAAQ,KAAKX,MAAoC,QAA5B,KAAKA,KAAKl+F,aAChC,kCAEM6+F,EAAAA,UAAAA,SAAP,WACE,IAAMC,EAAU5K,GAAAA,kBAA2B,KAAK3mG,KAAKyhC,UAAW,KAAK+vE,OACrE,OAAK,KAAKA,MAIH,WAAID,GAHF,gBAAS,KAAKZ,KAAI,KAAA30H,OAAIu1H,EAIhC,EAEMD,EAAAA,UAAAA,QAAP,WACE,OAAO,KAAKtxG,KAAKyhC,SAClB,EAEM6vE,EAAAA,UAAAA,YAAP,iBACE,GAAI,KAAKE,MACP,OAAO,KAAKxxG,KAGd,IAAMyxG,EAAgBt/C,KAAKC,iBAAiBC,kBAAkB5lC,SACxDilF,EAAgB,IAAI7iI,KACxB,KAAKmxB,KAAKy+D,oBAAe/qF,EAAW,CAAE+4C,SAAUglF,KAK5CE,EAHiB,IAAI9iI,KACzB,KAAKmxB,KAAKy+D,oBAAe/qF,EAAW,CAAE+4C,SAAmB,QAAT,OAAKkkF,YAAIlqI,IAAAA,EAAAA,EAAI,SAE/Bg7D,UAAYiwE,EAAcjwE,UAE1D,OAAO,IAAI5yD,KAAK,KAAKmxB,KAAKyhC,UAAYkwE,EACvC,EACH,CAAC,CA7CD,GCKM,SAAUC,GAAgBzoI,GAM9B,IALA,IAAMkhI,EAAoB,GACtB4F,EAAU,GACRllI,EAA0BhB,OAAOgB,KAAK5B,GACtCymI,EAAc7lI,OAAOgB,KAAKglI,IAEvBr7H,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IAC/B,GAAgB,SAAZ3J,EAAK2J,IACJpD,GAASs+H,EAAa7kI,EAAK2J,IAAhC,CAEA,IAAIrG,EAAMtD,EAAK2J,GAAG+9B,cACZxoC,EAAQd,EAAQ4B,EAAK2J,IACvBm9H,EAAW,GAEf,GAAK3L,GAAUj8H,MAAW4G,GAAQ5G,IAAWA,EAAMyC,QAAnD,CAEA,OAAQ2B,GACN,IAAK,OACHwjI,EAAWrG,GAAAA,YAAkBriI,EAAQkiI,MACrC,MACF,IAAK,OAEDwG,EADE/7C,GAAS7rF,GACA,IAAIg8H,GAAQh8H,GAAOZ,WAEnBY,EAAMZ,WAEnB,MACF,IAAK,YAYHgF,EAAM,QACNwjI,EAAWp4D,GACTxvE,GAEC6F,KAAI,SAACu8H,GACJ,OAAIA,aAAgBpG,GACXoG,EAGLx7H,GAAQw7H,GACH,IAAIpG,GAAQoG,EAAK,GAAIA,EAAK,IAG5B,IAAIpG,GAAQoG,EACpB,IACAhjI,WAEH,MACF,IAAK,UACH4mI,EAAU6B,GAAa7nI,EAAiBd,EAAQwnI,MAChD,MAEF,IAAK,QACHkB,EAAWlL,GAAAA,kBAA2B18H,GAAkBd,EAAQwnI,MAChE,MAEF,QACE,GAAI9/H,GAAQ5G,GAAQ,CAElB,IADA,IAAM8nI,EAAsB,GACnBl4H,EAAI,EAAGA,EAAI5P,EAAMyC,OAAQmN,IAChCk4H,EAAUl4H,GAAKrE,OAAOvL,EAAM4P,IAE9Bg4H,EAAWE,EAAU1oI,UACtB,MACCwoI,EAAWr8H,OAAOvL,GAIpB4nI,GACFxH,EAAMl+H,KAAK,CAACkC,EAAKwjI,GAhEyC,CANvB,CA0EvC,IAAMl5H,EAAQ0xH,EACXv6H,KAAI,SAACrJ,OAAC4H,EAAG,KAAEpE,EAAK,KAAM,gBAAGoE,EAAG,KAAA2N,OAAI/R,EAAMZ,WAAY,IAClDmP,KAAK,KACJw5H,EAAa,GAKjB,MAJc,KAAVr5H,IACFq5H,EAAa,gBAASr5H,IAGjB,CAACs3H,EAAS+B,GAAYzrG,QAAO,SAACzsB,GAAM,QAAEA,CAAC,IAAEtB,KAAK,KACtD,CAED,SAASs5H,GAAa7B,EAAkBU,GACtC,OAAKV,EAIE,UAAY,IAAIqB,GAAa,IAAIziI,KAAKohI,GAAUU,GAAMtnI,WAHpD,EAIV,CCpGD,SAAS4oI,GACPthG,EACAF,GAEA,OAAI7/B,MAAMC,QAAQ8/B,KACX//B,MAAMC,QAAQ4/B,KACfE,EAAKjkC,SAAW+jC,EAAM/jC,QACnBikC,EAAKiB,OAAM,SAAC5R,EAAMtrB,GAAM,SAAK+sD,YAAchxB,EAAM/7B,GAAG+sD,SAAS,KAGlE9wB,aAAgB9hC,KACX4hC,aAAiB5hC,MAAQ8hC,EAAK8wB,YAAchxB,EAAMgxB,UAGpD9wB,IAASF,CACjB,CAED,+BACE,UAA0C,EAC1C,YAAqB,GACrB,WAAoB,GACpB,aAAsB,EAiFvB,CAAD,OA1ESyhG,EAAAA,UAAAA,UAAP,SACEC,EACAloI,EACAN,GAEIM,IACFA,EACEA,aAAiB4E,KACb83H,GAAAA,MAAe18H,GACf08H,GAAAA,WAAoB18H,IAGf,QAATkoI,EACF,KAAKC,IAAMnoI,GAEXN,EAAKwuD,OAASluD,EACd,KAAKkoI,GAAMhmI,KAAKxC,GAEnB,EASMuoI,EAAAA,UAAAA,UAAP,SACEC,EACAxoI,GAEA,IAAI8X,GAAuC,EACrC4wH,EAAW1oI,EAAQI,OAAOgB,KAAKpB,GAA+B,GAC9D2oI,EAAgB,SAAU3hI,GAC9B,IAAK,IAAI+D,EAAI,EAAGA,EAAI29H,EAAS3lI,OAAQgI,IAAK,CACxC,IAAMrG,EAAMgkI,EAAS39H,GACrB,IAAKu9H,GAAUtoI,EAAK0E,GAAMsC,EAAKtC,IAC7B,OAAO,CAEV,CACD,OAAO,CACR,EAEKkkI,EAAe,KAAKJ,GAC1B,GAAa,QAATA,EACF1wH,EAAS,KAAK2wH,SACT,GAAIvhI,GAAQ0hI,GAGjB,IAAK,IAAI79H,EAAI,EAAGA,EAAI69H,EAAa7lI,OAAQgI,IAAK,CAC5C,IAAM/D,EAAO4hI,EAAa79H,GAC1B,IAAI29H,EAAS3lI,SAAU4lI,EAAc3hI,GAArC,CACA8Q,EAAS9Q,EAAKwnD,OACd,KAF4C,CAG7C,CAGH,IAAK12C,GAAU,KAAK2wH,IAAK,CAGvB,IAAMI,EAAa,IAAI1K,GAAWqK,EAAMxoI,GACxC,IAAS+K,EAAI,EAAGA,EAAK,KAAK09H,IAAe1lI,QAClC8lI,EAAWvF,OAAQ,KAAKmF,IAAe19H,IADGA,KAGjD+M,EAAS+wH,EAAWjoG,WACpB,KAAKkoG,UAAUN,EAAM1wH,EAAQ9X,EAC9B,CAED,OAAOkH,GAAQ4Q,GACXklH,GAAAA,WAAoBllH,GACpBA,aAAkB5S,KAClB83H,GAAAA,MAAellH,GACfA,CACL,EACH,CAAC,CArFD,GCfMixH,GAAQ,0CACTpM,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,GAAI,KAAG,GACdA,GAAO,GAAI,KAAG,GACdA,GAAO,GAAI,KAAG,GACdA,GAAO,EAAG,IAAE,GAGXqM,GAAQ,0CACTrM,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,EAAG,KAAG,GACbA,GAAO,GAAI,KAAG,GACdA,GAAO,GAAI,KAAG,GACdA,GAAO,GAAI,KAAG,GACdA,GAAO,EAAG,IAAE,GAGXsM,GAAMxM,GAAM,EAAG,IACfyM,GAAMzM,GAAM,EAAG,IACf0M,GAAM1M,GAAM,EAAG,IACf2M,GAAM3M,GAAM,EAAG,IAEf4M,GAAW,0CACZD,IAAG,GACHF,IAAG,GACHE,IAAG,GACHD,IAAG,GACHC,IAAG,GACHD,IAAG,GACHC,IAAG,GACHA,IAAG,GACHD,IAAG,GACHC,IAAG,GACHD,IAAG,GACHC,IAAG,GACHA,GAAIjiI,MAAM,EAAG,IAAE,GAGdmiI,GAAW,0CACZF,IAAG,GACHH,IAAG,GACHG,IAAG,GACHD,IAAG,GACHC,IAAG,GACHD,IAAG,GACHC,IAAG,GACHA,IAAG,GACHD,IAAG,GACHC,IAAG,GACHD,IAAG,GACHC,IAAG,GACHA,GAAIjiI,MAAM,EAAG,IAAE,GAGdoiI,GAAO9M,IAAO,GAAI,GAClB+M,GAAO/M,IAAO,GAAI,GAClBgN,GAAOhN,IAAO,GAAI,GAClBiN,GAAOjN,IAAO,GAAI,GAElBkN,GAAY,0CACbD,IAAI,GACJF,IAAI,GACJE,IAAI,GACJD,IAAI,GACJC,IAAI,GACJD,IAAI,GACJC,IAAI,GACJA,IAAI,GACJD,IAAI,GACJC,IAAI,GACJD,IAAI,GACJC,IAAI,GACJA,GAAKviI,MAAM,EAAG,IAAE,GAGfyiI,GAAY,0CACbF,IAAI,GACJH,IAAI,GACJG,IAAI,GACJD,IAAI,GACJC,IAAI,GACJD,IAAI,GACJC,IAAI,GACJA,IAAI,GACJD,IAAI,GACJC,IAAI,GACJD,IAAI,GACJC,IAAI,GACJA,GAAKviI,MAAM,EAAG,IAAE,GAGf0iI,GAAY,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACpEC,GAAY,CAAC,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEpEC,GAAY,WAEhB,IADA,IAAIC,EAAqB,GAChBj/H,EAAI,EAAGA,EAAI,GAAIA,IAAKi/H,EAAWA,EAAS33H,OAAOoqH,GAAM,IAC9D,OAAOuN,CACR,CAJiB,GCzFZ,SAAUC,GAAYhqD,EAAczgF,GACxC,IAqBI0qI,EACAC,EAtBEC,EAAY,IAAIllI,KAAKA,KAAKs+E,IAAIvD,EAAM,EAAG,IAEvCoqD,EAAUrN,GAAAA,WAAoB/8C,GAAQ,IAAM,IAC5CqqD,EAActN,GAAAA,WAAoB/8C,EAAO,GAAK,IAAM,IACpDsqD,EAAcvN,GAAAA,UAAmBoN,GACjCI,EAAcxN,GAAAA,WAAoBoN,GAElCxkI,EAAM,OACVykI,QAAO,EACPC,YAAW,EACXC,YAAW,EACXC,YAAW,GA4Gf,SAAuBvqD,GACrB,IAAMoqD,EAAUrN,GAAAA,WAAoB/8C,GAAQ,IAAM,IAC5CmqD,EAAY,IAAIllI,KAAKA,KAAKs+E,IAAIvD,EAAM,EAAG,IACvCyiD,EAAO1F,GAAAA,WAAoBoN,GAEjC,GAAgB,MAAZC,EACF,MAAO,CACLI,MAAO1B,GACP2B,SAAUpB,GACVqB,UAAWf,GACXI,SAAUD,GAAAA,MAAerH,GACzBkI,OAAQd,IAIZ,MAAO,CACLW,MAAOzB,GACP0B,SAAUrB,GACVsB,UAAWhB,GACXK,SAAUD,GAAAA,MAAerH,GACzBkI,OAAQf,GAEX,CAjIMgB,CAAc5qD,IAAK,CACtB6qD,QAAS,OAGX,GAAI56E,GAAM1wD,EAAQ8iI,UAChB,OAAO18H,EAGTA,EAAOklI,QAAUnO,GAAO,EAAG0N,EAAU,GAGrC,IAAIU,EAAWb,EAAYjN,GAAM,EAAIuN,EAAchrI,EAAQmlI,KAAM,GAE7DoG,GAAW,GACbA,EAAU,EAGVZ,EAAWvkI,EAAOykI,QAAUpN,GAAMuN,EAAchrI,EAAQmlI,KAAM,IAI9DwF,EAAWE,EAAUU,EAOvB,IAJA,IAAM5N,EAAMxxH,KAAKo/D,MAAMo/D,EAAW,GAC5B/M,EAAMH,GAAMkN,EAAU,GACtBa,EAAWr/H,KAAKo/D,MAAMoyD,EAAMC,EAAM,GAE/BltH,EAAI,EAAGA,EAAI1Q,EAAQ8iI,SAASv/H,OAAQmN,IAAK,CAChD,IAAImW,EAAI7mB,EAAQ8iI,SAASpyH,GAIzB,GAHImW,EAAI,IACNA,GAAK2kH,EAAW,GAEZ3kH,EAAI,GAAKA,GAAK2kH,EAApB,CAIA,IAAIjgI,OAAC,EACDsb,EAAI,GACNtb,EAAIggI,EAAoB,GAAT1kH,EAAI,GACf0kH,IAAYb,IACdn/H,GAAK,EAAIm/H,IAGXn/H,EAAIggI,EAGN,IAAK,IAAI3kI,EAAI,EAAGA,EAAI,IAClBR,EAAOklI,QAAQ//H,GAAK,EACpBA,IACInF,EAAOokI,SAASj/H,KAAOvL,EAAQmlI,MAHdv+H,KAZtB,CAiBF,CAED,GAAIuB,GAASnI,EAAQ8iI,SAAU,GAAI,CAG7Bv3H,EAAIggI,EAAqB,EAAXC,EAElB,GADID,IAAYb,IAAWn/H,GAAK,EAAIm/H,GAChCn/H,EAAIs/H,EAGN,IAASn6H,EAAI,EAAGA,EAAI,IAClBtK,EAAOklI,QAAQ//H,GAAK,EACpBA,GAAK,EACDnF,EAAOokI,SAASj/H,KAAOvL,EAAQmlI,MAHdz0H,KAM1B,CAED,GAAI66H,EAAS,CAOX,IAAIE,OAAS,EACb,GAAKtjI,GAASnI,EAAQ8iI,UAAW,GAkB/B2I,GAAa,MAlBsB,CACnC,IAAMC,EAAelO,GAAAA,WACnB,IAAI93H,KAAKA,KAAKs+E,IAAIvD,EAAO,EAAG,EAAG,KAG7BkrD,EAAWlO,GAAM,EAAIiO,EAAav8E,UAAYnvD,EAAQmlI,KAAM,GAE1DyG,EAAWpO,GAAAA,WAAoB/8C,EAAO,GAAK,IAAM,IACnDorD,OAAM,EACNF,GAAY,GACdA,EAAW,EACXE,EAASD,EAAWnO,GAAMiO,EAAe1rI,EAAQmlI,KAAM,IAEvD0G,EAAShB,EAAUU,EAGrBE,EAAYt/H,KAAKo/D,MAAM,GAAKkyD,GAAMoO,EAAQ,GAAK,EAChD,CAID,GAAI1jI,GAASnI,EAAQ8iI,SAAU2I,GAC7B,IAASlgI,EAAI,EAAGA,EAAIggI,EAAShgI,IAAKnF,EAAOklI,QAAQ//H,GAAK,CAEzD,CAED,OAAOnF,CACR,CCnID,kBAME,WAAoBpG,GAAA,cAA0B,CAkKhD,OAhKE8rI,EAAAA,UAAAA,QAAAA,SAAQrrD,EAAc3pD,GACpB,IAAM92B,EAAU,KAAKA,QAMrB,GAJIygF,IAAS,KAAKsrD,WAChB,KAAKC,SAAWvB,GAAYhqD,EAAMzgF,IAIlC69H,GAAS79H,EAAQinI,cAChBnwG,IAAU,KAAKm1G,WAAaxrD,IAAS,KAAKsrD,UAC3C,CACM,MAAgC,KAAKC,SAAnCnB,EAAO,UAAEO,EAAM,SAAEZ,EAAQ,WACjC,KAAK0B,UCzBL,SACJzrD,EACA3pD,EACA+zG,EACAO,EACAZ,EACAxqI,GAEA,IAAMoG,EAAoB,CACxB2lI,SAAUtrD,EACVwrD,UAAWn1G,EACXq1G,UAAW,IAGTC,EAAqB,GACzB,GAAIpsI,EAAQkiI,OAASG,GAAAA,OACnB,GAAI3xE,GAAM1wD,EAAQuiI,SAChB6J,EAAS,CAAC,CAAC,EAAGvB,SAEd,IAAK,IAAIn6H,EAAI,EAAGA,EAAI1Q,EAAQuiI,QAAQh/H,OAAQmN,IAC1ComB,EAAQ92B,EAAQuiI,QAAQ7xH,GACxB07H,EAAOppI,KAAKooI,EAAOzjI,MAAMmvB,EAAQ,EAAGA,EAAQ,SAGvC92B,EAAQkiI,OAASG,GAAAA,UAC1B+J,EAAS,CAAChB,EAAOzjI,MAAMmvB,EAAQ,EAAGA,EAAQ,KAG5C,GAAI45B,GAAM07E,GACR,OAAOhmI,EAOT,IAFAA,EAAO+lI,UAAYhP,GAAO,EAAG0N,GAEpBn6H,EAAI,EAAGA,EAAI07H,EAAO7oI,OAAQmN,IAKjC,IAJA,IAAMwsH,EAAOkP,EAAO17H,GACdinC,EAAQulF,EAAK,GACbzlE,EAAOylE,EAAK,GAAK,EAEdt2H,EAAI,EAAGA,EAAI5G,EAAQinI,WAAW1jI,OAAQqD,IAAK,CAClD,IAAI2E,OAAC,EACC,EAAYvL,EAAQinI,WAAWrgI,GAA9Bs8H,EAAI,KAAEr8G,EAAC,KACVA,EAAI,GACNtb,EAAIksD,EAAiB,GAAT5wC,EAAI,GAChBtb,GAAKkyH,GAAM+M,EAASj/H,GAAK23H,EAAM,KAE/B33H,EAAIosC,EAAkB,GAAT9wB,EAAI,GACjBtb,GAAKkyH,GAAM,EAAI+M,EAASj/H,GAAK23H,EAAM,IAEjCvrF,GAASpsC,GAAKA,GAAKksD,IAAMrxD,EAAO+lI,UAAU5gI,GAAK,EACpD,CAGH,OAAOnF,CACR,CD/BsBimI,CACf5rD,EACA3pD,EACA+zG,EACAO,EACAZ,EACAxqI,EAEH,CAEG+8H,GAAU/8H,EAAQ6mI,YACpB,KAAKyF,WE9CL,SAAiB17H,EAAWf,QAAA,QAAAA,EAAAA,GAChC,IAAM8S,EAAI/R,EAAI,GACRgS,EAAIzW,KAAKo/D,MAAM36D,EAAI,KACnB4L,EAAI5L,EAAI,IACRwV,EAAIja,KAAKo/D,MAAM3oD,EAAI,GACnB/W,EAAI+W,EAAI,EACR8D,EAAIva,KAAKo/D,OAAO3oD,EAAI,GAAK,IACzB+D,EAAIxa,KAAKo/D,OAAO3oD,EAAI8D,EAAI,GAAK,GAC7B7nB,EAAIsN,KAAKo/D,MAAM,GAAK5oD,EAAIC,EAAIwD,EAAIO,EAAI,IAAM,GAC1Cpb,EAAIY,KAAKo/D,MAAM/uD,EAAI,GACnB5V,EAAI4V,EAAI,EACRoK,EAAIza,KAAKo/D,MAAM,GAAK,EAAI1/D,EAAI,EAAIN,EAAI1M,EAAI+H,GAAK,EAC7C9G,EAAIqM,KAAKo/D,OAAO5oD,EAAI,GAAK9jB,EAAI,GAAK+nB,GAAK,KACvCkQ,EAAQ3qB,KAAKo/D,OAAO1sE,EAAI+nB,EAAI,EAAI9mB,EAAI,KAAO,IAC3CygF,GAAQ1hF,EAAI+nB,EAAI,EAAI9mB,EAAI,KAAO,GAAM,EACrC+2B,EAAOnxB,KAAKs+E,IAAIpzE,EAAGkmB,EAAQ,EAAGypD,EAAM1wE,GACpC08H,EAAY7mI,KAAKs+E,IAAIpzE,EAAG,EAAG,GAEjC,MAAO,CAACzE,KAAKq7E,MAAM3wD,EAAO01G,GAAR,OACnB,CF2BuBC,CAAO/rD,EAAMzgF,EAAQ6mI,UAE1C,EAEDjmI,OAAAA,eAAIkrI,EAAAA,UAAA,WAAQ,KAAZ,WACE,OAAO,KAAKI,UAAY,KAAKA,UAAUH,SAAW,IACnD,kCAEDnrI,OAAAA,eAAIkrI,EAAAA,UAAA,YAAS,KAAb,WACE,OAAO,KAAKI,UAAY,KAAKA,UAAUD,UAAY,IACpD,kCAEDrrI,OAAAA,eAAIkrI,EAAAA,UAAA,UAAO,KAAX,WACE,OAAO,KAAKE,SAASnB,OACtB,kCAEDjqI,OAAAA,eAAIkrI,EAAAA,UAAA,cAAW,KAAf,WACE,OAAO,KAAKE,SAASjB,WACtB,kCAEDnqI,OAAAA,eAAIkrI,EAAAA,UAAA,SAAM,KAAV,WACE,OAAO,KAAKE,SAASZ,MACtB,kCAEDxqI,OAAAA,eAAIkrI,EAAAA,UAAA,WAAQ,KAAZ,WACE,OAAO,KAAKE,SAASxB,QACtB,kCAED5pI,OAAAA,eAAIkrI,EAAAA,UAAA,QAAK,KAAT,WACE,OAAO,KAAKE,SAASf,KACtB,kCAEDrqI,OAAAA,eAAIkrI,EAAAA,UAAA,UAAO,KAAX,WACE,OAAO,KAAKE,SAASV,OACtB,kCAED1qI,OAAAA,eAAIkrI,EAAAA,UAAA,YAAS,KAAb,WACE,OAAO,KAAKI,UAAY,KAAKA,UAAUC,UAAY,EACpD,kCAEDvrI,OAAAA,eAAIkrI,EAAAA,UAAA,cAAW,KAAf,WACE,OAAO,KAAKE,SAASlB,WACtB,kCAEDlqI,OAAAA,eAAIkrI,EAAAA,UAAA,WAAQ,KAAZ,WACE,OAAO,KAAKE,SAASd,QACtB,kCAEDtqI,OAAAA,eAAIkrI,EAAAA,UAAA,YAAS,KAAb,WACE,OAAO,KAAKE,SAASb,SACtB,kCAEDW,EAAAA,UAAAA,QAAAA,WACE,MAAO,CAAC7O,GAAM,KAAK4N,SAAU,EAAG,KAAKA,QACtC,EAEDiB,EAAAA,UAAAA,QAAAA,SAAQpqI,EAAYo1B,GAIlB,IAHA,IAAMqI,EAAQ,KAAKisG,OAAOt0G,EAAQ,GAC5BhqB,EAAM,KAAKs+H,OAAOt0G,GAClB/6B,EAAMohI,GAAsB,KAAM,KAAK0N,SACpCt/H,EAAI4zB,EAAO5zB,EAAIuB,EAAKvB,IAAKxP,EAAIwP,GAAKA,EAC3C,MAAO,CAACxP,EAAKojC,EAAOryB,EACrB,EAEDg/H,EAAAA,UAAAA,QAAAA,SAAQrrD,EAAc3pD,EAAeypD,GAOnC,IALA,IAAMxkF,EAAMohI,GAAsB,KAAM,KAAK0N,QAAU,GACnDt/H,EACFiyH,GAAAA,UAAmB,IAAI93H,KAAKA,KAAKs+E,IAAIvD,EAAM3pD,EAAQ,EAAGypD,KACtD,KAAKwqD,YACD5rG,EAAQ5zB,EACLmF,EAAI,EAAGA,EAAI,IAClB3U,EAAIwP,GAAKA,IACPA,EACE,KAAKi/H,SAASj/H,KAAO,KAAKvL,QAAQmlI,MAHjBz0H,KAKvB,MAAO,CAAC3U,EAAKojC,EAAO5zB,EACrB,EAEDugI,EAAAA,UAAAA,QAAAA,SAAQrrD,EAAc3pD,EAAeypD,GACnC,IAAMxkF,EAAMohI,GAAO,KAAM,KAAK0N,SACxBt/H,EACJiyH,GAAAA,UAAmB,IAAI93H,KAAKA,KAAKs+E,IAAIvD,EAAM3pD,EAAQ,EAAGypD,KACtD,KAAKwqD,YAEP,OADAhvI,EAAIwP,GAAKA,EACF,CAACxP,EAAKwP,EAAGA,EAAI,EACrB,EAEDugI,EAAAA,UAAAA,SAAAA,SAASxrD,EAAc5+E,EAAWk2C,EAAgBwoC,GAAlD,WACMrkF,EAAc,GAKlB,OAJA,KAAKiE,QAAQ0lI,SAASpiI,SAAQ,SAAC+8E,GAC7BtkF,EAAMA,EAAI8W,OAAOlJ,EAAK8iI,SAASnsD,EAAMD,EAAQzoC,EAAQwoC,GACtD,IACDo9C,GAAAA,KAAczhI,GACPA,CACR,EAED+vI,EAAAA,UAAAA,SAAAA,SAASxrD,EAAcD,EAAgB3+E,EAAW0+E,GAChD,IAAMrkF,EAAM,KAAKiE,QAAQ8lI,SAASn/H,KAChC,SAACixC,GAAW,WAAImtF,GAAKzkD,EAAMD,EAAQzoC,EAAQwoC,EAAY,IAIzD,OADAo9C,GAAAA,KAAczhI,GACPA,CACR,EAED+vI,EAAAA,UAAAA,SAAAA,SAASxrD,EAAcD,EAAgBzoC,EAAgBwoC,GACrD,MAAO,CAAC,IAAI2kD,GAAKzkD,EAAMD,EAAQzoC,EAAQwoC,GACxC,EAED0rD,EAAAA,UAAAA,UAAAA,SAAU5J,GACR,OAAQA,GACN,KAAK/C,GAAAA,OACH,OAAO,KAAKuN,QAAQhtI,KAAK,MAC3B,KAAKy/H,GAAAA,QACH,OAAO,KAAKwN,QAAQjtI,KAAK,MAC3B,KAAKy/H,GAAAA,OACH,OAAO,KAAKyN,QAAQltI,KAAK,MAC3B,KAAKy/H,GAAAA,MAEL,QACE,OAAO,KAAK0N,QAAQntI,KAAK,MAE9B,EAEDosI,EAAAA,UAAAA,WAAAA,SACE5J,GAEA,OAAQA,GACN,KAAK/C,GAAAA,OACH,OAAO,KAAK2N,SAASptI,KAAK,MAC5B,KAAKy/H,GAAAA,SACH,OAAO,KAAKsN,SAAS/sI,KAAK,MAC5B,KAAKy/H,GAAAA,SACH,OAAO,KAAK4N,SAASrtI,KAAK,MAE/B,EACH,CAAC,CAxKD,SGVM,SAAUstI,GACdhG,EACAiG,EACA9tG,EACAryB,EACA4mG,EACAw5B,GAIA,IAFA,IAAMC,EAAkB,GAEfz8H,EAAI,EAAGA,EAAIs2H,EAASzjI,OAAQmN,IAAK,CACxC,IAAI08H,OAAM,EACNC,OAAO,EACLhvH,EAAM2oH,EAASt2H,GAEjB2N,EAAM,GACR+uH,EAASjhI,KAAKo/D,MAAMltD,EAAM4uH,EAAQ1pI,QAClC8pI,EAAU5P,GAAMp/G,EAAK4uH,EAAQ1pI,UAE7B6pI,EAASjhI,KAAKo/D,OAAOltD,EAAM,GAAK4uH,EAAQ1pI,QACxC8pI,EAAU5P,GAAMp/G,EAAM,EAAG4uH,EAAQ1pI,SAInC,IADA,IAAM+pI,EAAM,GACH1mI,EAAIu4B,EAAOv4B,EAAIkG,EAAKlG,IAAK,CAChC,IAAMy0B,EAAM6xG,EAAOtmI,GACdm2H,GAAU1hG,IACfiyG,EAAItqI,KAAKq4B,EACV,CACD,IAAI9vB,OAAC,EAEHA,EADE6hI,EAAS,EACPE,EAAI3lI,MAAMylI,GAAQ,GAElBE,EAAIF,GAGV,IAAMp2G,EAAOi2G,EAAQI,GACfx2G,EAAO2mG,GAAAA,YAAqB9pB,EAAGq3B,YAAcx/H,GAC7CyzH,EAAMxB,GAAAA,QAAiB3mG,EAAMG,GAG9B7uB,GAASglI,EAASnO,IAAMmO,EAAQnqI,KAAKg8H,EAC3C,CAID,OAFAxB,GAAAA,KAAc2P,GAEPA,CACR,CCzCK,SAAUv5C,GACdy1C,EACArpI,GAEQ,MAA6CA,EAAO,QAA3CkiI,EAAoCliI,EAAO,KAArCu/E,EAA8Bv/E,EAAO,SAA3ByxH,EAAoBzxH,EAAO,MAApBgnI,EAAahnI,EAAO,SAExDyO,EAAQzO,EAAQyO,MACpB,GAAc,IAAVA,GAA4B,IAAb8wE,EACjB,OAAOguD,GAAWlE,GAGpB,IAAMmE,EAAcxI,GAAAA,SAAkB8B,GAEhCpzB,EAAK,IAAIo4B,GAAS9rI,GACxB0zG,EAAG+5B,QAAQD,EAAY/sD,KAAM+sD,EAAY12G,OAIzC,IAFA,IAAIm2G,EAsJN,SACEv5B,EACA85B,EACAxtI,GAEQ,MAAqCA,EAAO,KAAtC2iI,EAA+B3iI,EAAO,OAA9B0lI,EAAuB1lI,EAAO,SAApB8lI,EAAa9lI,EAAO,SAEpD,GAAI4kI,GAAqB1C,GACvB,OXkBE,SAAuByE,GAC3B,IAAM+G,EAAoB/G,EAAKG,QAAQxuE,UAAY,IACnD,IAAKssE,GAAqB+B,EAAKzE,MAC7B,MAAO,GAGT,IAAM+K,EAAkB,GASxB,OARAtG,EAAKhE,OAAOr/H,SAAQ,SAACg9E,GACnBqmD,EAAKjB,SAASpiI,SAAQ,SAAC+8E,GACrBsmD,EAAKb,SAASxiI,SAAQ,SAACs0C,GACrBq1F,EAAQjqI,KAAK,IAAI+hI,GAAKzkD,EAAMD,EAAQzoC,EAAQ81F,GAC7C,GACF,GACF,IAEMT,CACR,CWlCUU,CAAa3tI,GAGtB,GACGkiI,GAAQG,GAAAA,QACPxE,GAAS8E,KACRx6H,GAASw6H,EAAQ6K,EAAYltD,OAC/B4hD,GAAQG,GAAAA,UACPxE,GAAS6H,KACRv9H,GAASu9H,EAAU8H,EAAYntD,SACjC6hD,GAAQG,GAAAA,UACPxE,GAASiI,KACR39H,GAAS29H,EAAU0H,EAAY51F,QAElC,MAAO,GAGT,OAAO87D,EAAGk6B,WAAW1L,EAAdxuB,CACL85B,EAAYltD,KACZktD,EAAYntD,OACZmtD,EAAY51F,OACZ41F,EAAYptD,YAEf,CArLeytD,CAAYn6B,EAAI85B,EAAaxtI,KAElC,CACD,MAAuB0zG,EAAGo6B,UAAU5L,EAAbxuB,CAC3B85B,EAAY/sD,KACZ+sD,EAAY12G,MACZ02G,EAAYjtD,KAHP2sD,EAAM,KAAE/tG,EAAK,KAAEryB,EAAG,KAMnBw4H,EAAWyI,GAAmBb,EAAQ/tG,EAAOryB,EAAK4mG,EAAI1zG,GAE5D,GAAI69H,GAASmJ,GAGX,IAFA,IAAMmG,EAAUH,GAAahG,EAAUiG,EAAS9tG,EAAOryB,EAAK4mG,EAAIw5B,GAEvDx8H,EAAI,EAAGA,EAAIy8H,EAAQ5pI,OAAQmN,IAAK,CACvC,IAAMsuH,EAAMmO,EAAQz8H,GACpB,GAAI+gH,GAASuN,EAAMvN,EACjB,OAAO8b,GAAWlE,GAGpB,GAAIrK,GAAO8H,EAAS,CAClB,IAAMkH,EAAcC,GAAejP,EAAKh/H,GACxC,IAAKqpI,EAAWvF,OAAOkK,GACrB,OAAOT,GAAWlE,GAGpB,GAAI56H,MACAA,EAEA,OAAO8+H,GAAWlE,EAGvB,CACF,MAED,IAAS34H,EAAIyuB,EAAOzuB,EAAI5D,EAAK4D,IAAK,CAChC,IAAMw9H,EAAahB,EAAOx8H,GAC1B,GAAKqsH,GAAUmR,GAKf,IADA,IAAMr3G,EAAO2mG,GAAAA,YAAqB9pB,EAAGq3B,YAAcmD,GAC1CtnI,EAAI,EAAGA,EAAIqmI,EAAQ1pI,OAAQqD,IAAK,CACvC,IAAMowB,EAAOi2G,EAAQrmI,GACfo4H,EAAMxB,GAAAA,QAAiB3mG,EAAMG,GACnC,GAAIy6F,GAASuN,EAAMvN,EACjB,OAAO8b,GAAWlE,GAGpB,GAAIrK,GAAO8H,EAAS,CACZkH,EAAcC,GAAejP,EAAKh/H,GACxC,IAAKqpI,EAAWvF,OAAOkK,GACrB,OAAOT,GAAWlE,GAGpB,GAAI56H,MACAA,EAEA,OAAO8+H,GAAWlE,EAGvB,CACF,CACF,CAEH,GAAyB,IAArBrpI,EAAQu/E,SACV,OAAOguD,GAAWlE,GAMpB,GAFAmE,EAAY78F,IAAI3wC,EAASslI,GAErBkI,EAAY/sD,KAAO+8C,GAAAA,QACrB,OAAO+P,GAAWlE,GAGfzE,GAAqB1C,KACxB+K,EAAUv5B,EAAGk6B,WAAW1L,EAAdxuB,CACR85B,EAAYltD,KACZktD,EAAYntD,OACZmtD,EAAY51F,OACZ,IAIJ87D,EAAG+5B,QAAQD,EAAY/sD,KAAM+sD,EAAY12G,MAC1C,CACF,CAED,SAASq3G,GACPz6B,EACAw6B,EACAluI,GAGE,MAOEA,EAAO,QANT8iI,EAME9iI,EAAO,SALT0hI,EAKE1hI,EAAO,UAJT6mI,EAIE7mI,EAAO,SAHTwhI,EAGExhI,EAAO,WAFTyhI,EAEEzhI,EAAO,YADT6iI,EACE7iI,EAAO,UAEX,OACG69H,GAAS0E,KAAap6H,GAASo6H,EAAS7uB,EAAGu3B,MAAMiD,KACjDrQ,GAASiF,KAAcpvB,EAAG43B,QAAQ4C,IAClCrQ,GAAS6D,KAAev5H,GAASu5H,EAAWhuB,EAAG82B,SAAS0D,KACxDrQ,GAASnqB,EAAGy4B,aAAez4B,EAAGy4B,UAAU+B,IAC3B,OAAbrH,IAAsB1+H,GAASurG,EAAG44B,WAAY4B,KAC7CrQ,GAAS2D,IAAe3D,GAAS4D,MAChCt5H,GAASq5H,EAAY9tB,EAAGw3B,SAASgD,MACjC/lI,GAASs5H,EAAa/tB,EAAGy3B,UAAU+C,KACrCrQ,GAASgF,KACNqL,EAAax6B,EAAGm3B,UACf1iI,GAAS06H,EAAWqL,EAAa,KACjC/lI,GAAS06H,GAAYnvB,EAAGm3B,QAAUqD,IAClCA,GAAcx6B,EAAGm3B,UACf1iI,GAAS06H,EAAWqL,EAAa,EAAIx6B,EAAGm3B,WACxC1iI,GAAS06H,GAAYnvB,EAAGo3B,YAAcoD,EAAax6B,EAAGm3B,SAEhE,CAED,SAASoD,GAAep3G,EAAY72B,GAClC,OAAO,IAAImoI,GAAatxG,EAAM72B,EAAQwnI,MAAMwG,aAC7C,CAED,SAAST,GAAuClE,GAC9C,OAAOA,EAAWjoG,UACnB,CAED,SAAS2sG,GACPb,EACA/tG,EACAryB,EACA4mG,EACA1zG,GAGA,IADA,IAAIslI,GAAW,EACN8I,EAAajvG,EAAOivG,EAAathI,EAAKshI,IAAc,CAC3D,IAAMF,EAAahB,EAAOkB,IAE1B9I,EAAW6I,GAAWz6B,EAAIw6B,EAAYluI,MAExBktI,EAAOgB,GAAc,KACpC,CAED,OAAO5I,CACR,CCrJM,IAAMqC,GAAO,CAClB0G,GAAI,IAAIvR,GAAQ,GAChBwR,GAAI,IAAIxR,GAAQ,GAChByR,GAAI,IAAIzR,GAAQ,GAChB0R,GAAI,IAAI1R,GAAQ,GAChB2R,GAAI,IAAI3R,GAAQ,GAChB4R,GAAI,IAAI5R,GAAQ,GAChB6R,GAAI,IAAI7R,GAAQ,IAGL8J,GAA2B,CACtC1E,KAAM/C,GAAAA,OACN2H,QAAS,KACTvnD,SAAU,EACV4lD,KAAMwC,GAAK0G,GACX5/H,MAAO,KACPgjH,MAAO,KACP+V,KAAM,KACNR,SAAU,KACVzE,QAAS,KACTf,WAAY,KACZC,YAAa,KACboB,UAAW,KACXC,SAAU,KACVpB,UAAW,KACXuF,WAAY,KACZtE,OAAQ,KACR+C,SAAU,KACVI,SAAU,KACVe,SAAU,MAGCJ,GAAc7lI,OAAOgB,KAAKglI,IAQvC,cAiCE,WAAY5mI,EAAgC4uI,QAAhC,QAAA5uI,EAAAA,CAAAA,QAAgC,QAAA4uI,GAAAA,GAE1C,KAAKC,OAASD,EAAU,KAAO,IAAI7F,GAGnC,KAAKxH,YAAcgF,GAAkBvmI,GAC7B,MAAkB0mI,GAAa1mI,GAAQknI,cAC/C,KAAKlnI,QAAUknI,CAChB,CA6KH,OA3KS7E,EAAAA,UAAP,SAAiB94H,EAAc63H,GAC7B,OAAO2C,GAAUx6H,EAAM63H,EACxB,EAEMiB,EAAAA,SAAP,SAAgB94H,EAAc63H,GAC5B,OAAO0D,GAASv7H,EAAM63H,EACvB,EAIMiB,EAAAA,WAAP,SAAkB/9H,GAChB,OAAO,IAAI+9H,EAAMA,EAAM8E,YAAY7iI,SAAQiG,EAC5C,EAIS83H,EAAAA,UAAAA,MAAV,SACEgH,GAEA,OAAOz1C,GAAKy1C,EAAY,KAAKrpI,QAC9B,EAEOqiI,EAAAA,UAAAA,UAAR,SAAkB2G,EAAyBxoI,GACzC,QAAK,KAAKquI,QACH,KAAKA,OAAOC,UAAU9F,EAAMxoI,EACpC,EAEM6hI,EAAAA,UAAAA,UAAP,SACE2G,EACAloI,EACAN,GAEA,GAAK,KAAKquI,OACV,OAAO,KAAKA,OAAOvF,UAAUN,EAAMloI,EAAON,EAC3C,EAQD6hI,EAAAA,UAAAA,IAAAA,SAAIjD,GACF,GAAIA,EACF,OAAO,KAAK2P,MAAM,IAAI1P,GAAmB,MAAO,GAAID,IAGtD,IAAIh5H,EAAS,KAAK0oI,UAAU,OAK5B,OAJe,IAAX1oI,IACFA,EAAS,KAAK2oI,MAAM,IAAIpQ,GAAW,MAAO,KAC1C,KAAK2K,UAAU,MAAOljI,IAEjBA,CACR,EAUDi8H,EAAAA,UAAAA,QAAAA,SACE5wD,EACA3nE,EACA00H,EACAY,GAEA,QAHA,QAAAZ,GAAAA,IAGKhB,GAAAA,YAAqB/rD,KAAW+rD,GAAAA,YAAqB1zH,GACxD,MAAM,IAAI3M,MAAM,2CAElB,IAAMqD,EAAO,CACXsJ,OAAM,EACN2nE,MAAK,EACL+sD,IAAG,GAGL,GAAIY,EACF,OAAO,KAAK2P,MAAM,IAAI1P,GAAmB,UAAW7+H,EAAM4+H,IAG5D,IAAIh5H,EAAS,KAAK0oI,UAAU,UAAWtuI,GAKvC,OAJe,IAAX4F,IACFA,EAAS,KAAK2oI,MAAM,IAAIpQ,GAAW,UAAWn+H,IAC9C,KAAK8oI,UAAU,UAAWljI,EAAQ5F,IAE7B4F,CACR,EASDi8H,EAAAA,UAAAA,OAAAA,SAAO3D,EAAUF,GACf,QADe,QAAAA,GAAAA,IACVhB,GAAAA,YAAqBkB,GACxB,MAAM,IAAIvhI,MAAM,0CAElB,IAAMqD,EAAO,CAAEk+H,GAAIA,EAAIF,IAAKA,GACxBp4H,EAAS,KAAK0oI,UAAU,SAAUtuI,GAKtC,OAJe,IAAX4F,IACFA,EAAS,KAAK2oI,MAAM,IAAIpQ,GAAW,SAAUn+H,IAC7C,KAAK8oI,UAAU,SAAUljI,EAAQ5F,IAE5B4F,CACR,EASDi8H,EAAAA,UAAAA,MAAAA,SAAM3D,EAAUF,GACd,QADc,QAAAA,GAAAA,IACThB,GAAAA,YAAqBkB,GACxB,MAAM,IAAIvhI,MAAM,yCAElB,IAAMqD,EAAO,CAAEk+H,GAAIA,EAAIF,IAAKA,GACxBp4H,EAAS,KAAK0oI,UAAU,QAAStuI,GAKrC,OAJe,IAAX4F,IACFA,EAAS,KAAK2oI,MAAM,IAAIpQ,GAAW,QAASn+H,IAC5C,KAAK8oI,UAAU,QAASljI,EAAQ5F,IAE3B4F,CACR,EAMDi8H,EAAAA,UAAAA,MAAAA,WACE,OAAO,KAAK4G,MAAM1lI,MACnB,EAQD8+H,EAAAA,UAAAA,SAAAA,WACE,OAAOoG,GAAgB,KAAKlH,YAC7B,EAMDc,EAAAA,UAAAA,OAAAA,SACElB,EACAC,EACAC,GAEA,OdhJW,SACbH,EACAC,EACAC,EACAC,GAEA,OAAO,IAAIY,GAAOf,EAAOC,EAASC,EAAUC,GAAenhI,UAC5D,CcyIU8uI,CAAO,KAAM7N,EAASC,EAAUC,EACxC,EAEDgB,EAAAA,UAAAA,yBAAAA,WACE,OAAOD,GAAmB,KAC3B,EAMDC,EAAAA,UAAAA,MAAAA,WACE,OAAO,IAAIA,EAAM,KAAKd,YACvB,EA9Mec,EAAAA,YAA0C,CACxD,SACA,UACA,SACA,QACA,SACA,WACA,YAGcA,EAAAA,OAASlD,GAAAA,OACTkD,EAAAA,QAAUlD,GAAAA,QACVkD,EAAAA,OAASlD,GAAAA,OACTkD,EAAAA,MAAQlD,GAAAA,MACRkD,EAAAA,OAASlD,GAAAA,OACTkD,EAAAA,SAAWlD,GAAAA,SACXkD,EAAAA,SAAWlD,GAAAA,SAEXkD,EAAAA,GAAKsF,GAAK0G,GACVhM,EAAAA,GAAKsF,GAAK2G,GACVjM,EAAAA,GAAKsF,GAAK4G,GACVlM,EAAAA,GAAKsF,GAAK6G,GACVnM,EAAAA,GAAKsF,GAAK8G,GACVpM,EAAAA,GAAKsF,GAAK+G,GACVrM,EAAAA,GAAKsF,GAAKgH,GAoBnBtM,EAAAA,YAAc8E,GAMd9E,EAAAA,gBAAkBoG,GA6J3B,CAAC,CAtND,GC9CA,IAAM7B,GAAmC,CACvCE,QAAS,KACT5zH,OAAO,EACP+7H,QAAQ,EACRC,UAAU,EACVC,YAAY,EACZ3H,KAAM,MAGF,SAAU4H,GAAWj0G,EAAWn7B,GACpC,IAAMqvI,EAAgC,GAClCC,EAAoB,GAClBC,EAAiC,GACnCC,EAAqB,GAEnBC,EAAgBnI,GAAansG,GAC3B,EAAYs0G,EAAa,QAC3B,EAASA,EAAa,KAEtBC,EA2KR,SAAwBv0G,EAAW8zG,QAAA,QAAAA,GAAAA,GAEjC,KADA9zG,EAAIA,GAAKA,EAAEh2B,QACH,MAAM,IAAIhI,MAAM,wBAIxB,IAAK8xI,EACH,OAAO9zG,EAAEl2B,MAAM,MAGjB,IAAMyqI,EAAQv0G,EAAEl2B,MAAM,MAClBsG,EAAI,EACR,KAAOA,EAAImkI,EAAMnsI,QAAQ,CAEvB,IAAM2J,EAAQwiI,EAAMnkI,GAAKmkI,EAAMnkI,GAAG/G,QAAQ,QAAS,IAC9C0I,EAEM3B,EAAI,GAAiB,MAAZ2B,EAAK,IACvBwiI,EAAMnkI,EAAI,IAAM2B,EAAKvF,MAAM,GAC3B+nI,EAAMzrI,OAAOsH,EAAG,IAEhBA,GAAK,EALLmkI,EAAMzrI,OAAOsH,EAAG,EAOnB,CAED,OAAOmkI,CACR,CArMeC,CAAex0G,EAAGn7B,EAAQivI,QA2CxC,OAzCAS,EAAMpsI,SAAQ,SAAC4J,SACb,GAAKA,EAAL,CACM,MA2JV,SAAuBA,GACf,MAhBR,SAAqBA,GACnB,IAA2B,IAAvBA,EAAKlJ,QAAQ,KACf,MAAO,CACLhI,KAAM,QACN8E,MAAOoM,GAIL,MxB9Ga,SAAU5I,EAAasrI,EAAahI,GACvD,IAAMiI,EAASvrI,EAAIW,MAAM2qI,GACzB,OAAOhI,EACHiI,EAAOloI,MAAM,EAAGigI,GAAK/0H,OAAO,CAACg9H,EAAOloI,MAAMigI,GAAKv4H,KAAKugI,KACpDC,CACL,CwByGuB5qI,CAAMiI,EAAM,IAAK,GAAhClR,EAAI,KAAE8E,EAAK,KAClB,MAAO,CACL9E,KAAI,EACJ8E,MAAK,EAER,CAGyBgvI,CAAY5iI,GAA5BlR,EAAI,OAAE8E,EAAK,QACbivI,EAAQ/zI,EAAKiJ,MAAM,KACzB,IAAK8qI,EAAO,MAAM,IAAI5yI,MAAM,uBAE5B,MAAO,CACLnB,KAAM+zI,EAAM,GAAGzmG,cACfymG,MAAOA,EAAMpoI,MAAM,GACnB7G,MAAK,EAER,CArKkCkvI,CAAc9iI,GAArClR,EAAI,OAAE+zI,EAAK,QAAEjvI,EAAK,QAE1B,OAAQ9E,EAAKstC,eACX,IAAK,QACH,GAAIymG,EAAMxsI,OACR,MAAM,IAAIpG,MAAM,kCAA2B4yI,EAAM1gI,KAAK,OAGxDggI,EAAUrsI,KAAKmkI,GAAYj6H,IAC3B,MAEF,IAAK,QACG,IAAG+iI,GAAmD,QAAtC,8BAA4Br+H,KAAK1E,UAAK5P,IAAAA,EAAAA,EAAI,IAA9C,GACd2yI,IAAczI,IAChBA,EAAOyI,GAETX,EAAYA,EAAUz8H,OAAOq9H,GAAWpvI,EAAOivI,IAC/C,MAEF,IAAK,SACH,GAAIA,EAAMxsI,OACR,MAAM,IAAIpG,MAAM,mCAA4B4yI,EAAM1gI,KAAK,OAGzDkgI,EAAWvsI,KAAKmkI,GAAYrmI,IAC5B,MAEF,IAAK,SACH0uI,EAAaA,EAAW38H,OAAOq9H,GAAWpvI,EAAOivI,IACjD,MAEF,IAAK,UACH,MAEF,QACE,MAAM,IAAI5yI,MAAM,yBAA2BnB,GApCpC,CAsCZ,IAEM,CACL8qI,QAAO,EACPU,KAAI,EACJ6H,UAAS,EACTC,UAAS,EACTC,WAAU,EACVC,WAAU,EAEb,CAwDK,SAAUW,GACdh1G,EACAn7B,GAEA,YAFA,QAAAA,EAAAA,CAAAA,GAxDF,SAAmBm7B,EAAWn7B,GACtB,MACJovI,GAAWj0G,EAAGn7B,GADRqvI,EAAS,YAAEC,EAAS,YAAEC,EAAU,aAAEC,EAAU,aAAE1I,EAAO,UAAEU,EAAI,OAG7DoH,GAA4B,IAAlB5uI,EAAQkT,MAOxB,GALIlT,EAAQmvI,aACVnvI,EAAQkvI,UAAW,EACnBlvI,EAAQivI,QAAS,GAIjBjvI,EAAQkvI,UACRG,EAAU9rI,OAAS,GACnB+rI,EAAU/rI,QACVgsI,EAAWhsI,QACXisI,EAAWjsI,OACX,CACA,IAAM6sI,EAAO,IAAIC,GAASzB,GAsB1B,OApBAwB,EAAKtJ,QAAQA,GACbsJ,EAAK5I,KAAKA,QAAQj9H,GAElB8kI,EAAU/rI,SAAQ,SAAC+3B,GACjB+0G,EAAKlP,MAAM,IAAImB,GAAMiO,GAAkBj1G,EAAKyrG,EAASU,GAAOoH,GAC7D,IAEDU,EAAUhsI,SAAQ,SAACuzB,GACjBu5G,EAAKG,MAAM15G,EACZ,IAED04G,EAAWjsI,SAAQ,SAAC+3B,GAClB+0G,EAAKI,OAAO,IAAInO,GAAMiO,GAAkBj1G,EAAKyrG,EAASU,GAAOoH,GAC9D,IAEDY,EAAWlsI,SAAQ,SAACuzB,GAClBu5G,EAAKK,OAAO55G,EACb,IAEG72B,EAAQmvI,YAAcnvI,EAAQ8mI,SAASsJ,EAAKG,MAAMzJ,GAC/CsJ,CACR,CAED,IAAM/0G,EAAMg0G,EAAU,IAAM,GAC5B,OAAO,IAAIhN,GACTiO,GACEj1G,EACAA,EAAIyrG,SAAW9mI,EAAQ8mI,SAAWA,EAClCzrG,EAAImsG,MAAQxnI,EAAQwnI,MAAQA,GAE9BoH,EAEH,CAMQ8B,CAAUv1G,EAenB,SAA2Bn7B,GACzB,IAAMwmI,EAAoB,GACpB5kI,EAAOhB,OAAOgB,KAAK5B,GACnBymI,EAAc7lI,OAAOgB,KACzBglI,IAOF,GAJAhlI,EAAK0B,SAAQ,SAAU4B,GAChBiD,GAASs+H,EAAavhI,IAAMshI,EAAQxjI,KAAKkC,EAC/C,IAEGshI,EAAQjjI,OACV,MAAM,IAAIpG,MAAM,oBAAsBqpI,EAAQn3H,KAAK,OAGrD,gBAAYu3H,IAAoB5mI,EACjC,CA/BqBumI,CAAkBvmI,GACvC,CAED,SAASswI,GACPj1G,EACAyrG,EACAU,GAEA,gBACKnsG,GAAG,CACNyrG,QAAO,EACPU,KAAI,GAEP,CAmFD,SAAS0I,GAAWS,EAAkBZ,GAGpC,OAXF,SAA0BA,GACxBA,EAAMzsI,SAAQ,SAACstI,GACb,IAAK,+BAA+B53H,KAAK43H,GACvC,MAAM,IAAIzzI,MAAM,kCAAoCyzI,EAEvD,GACF,CAGCC,CAAiBd,GAEVY,EACJ1rI,MAAM,KACN0B,KAAI,SAACyhI,GAAY,4BAA2BA,EAAQ,GACxD,CCnPD,SAAS0I,GAAsBC,GAA/B,WACE,OAAO,SAAC9vE,GAKN,QAJc12D,IAAV02D,IACFt3D,EAAK,WAAIonI,IAAe9vE,QAGI12D,IAA1BZ,EAAK,WAAIonI,IACX,OAAOpnI,EAAK,WAAIonI,IAGlB,IAAK,IAAIxlI,EAAI,EAAGA,EAAI5B,EAAKqnI,OAAOztI,OAAQgI,IAAK,CAC3C,IAAM0lI,EAAWtnI,EAAKqnI,OAAOzlI,GAAGg2H,YAAYwP,GAC5C,GAAIE,EACF,OAAOA,CAEV,CACF,CACF,CAED,mBAeE,WAAYrC,QAAA,QAAAA,GAAAA,GAAZ,MACExhG,EAAAA,KAAAA,KAAM,GAAIwhG,IAAQ,YAQpBjlI,EAAAA,QAAUmnI,GAAmBn2H,MAAMhR,EAAM,CAAC,YAC1CA,EAAAA,KAAOmnI,GAAmBn2H,MAAMhR,EAAM,CAAC,SAPrCA,EAAKqnI,OAAS,GACdrnI,EAAKunI,OAAS,GACdvnI,EAAKwnI,QAAU,GACfxnI,EAAKynI,QAAU,IAChB,CAiJH,OAvK8BjlG,GAAAA,EAAAA,GA2B5BkkG,EAAAA,UAAAA,MAAAA,SACEhH,GAEA,OCnDE,SACJA,EACA2H,EACAG,EACAD,EACAE,EACA5J,GAEA,IAAM6J,EAAwC,GACxCC,EAAUjI,EAAWvF,OAE3B,SAASyN,EAAW9/D,EAAa3nE,GAC/BqnI,EAAQ7tI,SAAQ,SAAU49H,GACxBA,EAAMhiG,QAAQuyC,EAAO3nE,GAAQ,GAAMxG,SAAQ,SAAUuzB,GACnDw6G,EAAY/1G,OAAOzE,KAAS,CAC7B,GACF,GACF,CAEDu6G,EAAQ9tI,SAAQ,SAAUuzB,GACxB,IAAM26G,EAAY,IAAIrJ,GAAatxG,EAAM2wG,GAAMwG,cAC/CqD,EAAY/1G,OAAOk2G,KAAc,CAClC,IAEDnI,EAAWvF,OAAS,SAAUjtG,GAC5B,IAAM6nG,EAAKpjG,OAAOzE,GAClB,OAAI0nC,MAAMmgE,GAAY4S,EAAQjwI,KAAK,KAAMw1B,MACpCw6G,EAAY3S,KACf6S,EAAW,IAAI7rI,KAAKg5H,EAAK,GAAI,IAAIh5H,KAAKg5H,EAAK,KACtC2S,EAAY3S,OACf2S,EAAY3S,IAAM,EACX4S,EAAQjwI,KAAK,KAAMw1B,GAI/B,EAEyB,YAAtBwyG,EAAWrhI,SACbupI,EAAWlI,EAAW7oI,KAAKixE,MAAO43D,EAAW7oI,KAAKsJ,QAClDu/H,EAAWvF,OAAS,SAAUjtG,GAC5B,IAAM6nG,EAAKpjG,OAAOzE,GAClB,QAAKw6G,EAAY3S,KACf2S,EAAY3S,IAAM,EACX4S,EAAQjwI,KAAK,KAAMw1B,GAG7B,GAGH,IAAK,IAAItrB,EAAI,EAAGA,EAAI2lI,EAAO3tI,OAAQgI,IAAK,CACtC,IAAMimI,EAAY,IAAIrJ,GAAa+I,EAAO3lI,GAAIi8H,GAAMwG,cACpD,IAAK3E,EAAWvF,OAAO,IAAIp+H,KAAK8rI,EAAUl5E,YAAa,KACxD,CAED04E,EAAO1tI,SAAQ,SAAU49H,GACvBttC,GAAKy1C,EAAYnI,EAAMlhI,QACxB,IAED,IAAMg/H,EAAMqK,EAAWtK,QAEvB,OADAvB,GAAAA,KAAcwB,GACNqK,EAAWrhI,QACjB,IAAK,MACL,IAAK,UACH,OAAOg3H,EACT,IAAK,SACH,OAASA,EAAIz7H,QAAUy7H,EAAIA,EAAIz7H,OAAS,IAAO,KAEjD,QACE,OAASy7H,EAAIz7H,QAAUy7H,EAAI,IAAO,KAEvC,CDnBUyS,CACLpI,EACA,KAAK2H,OACL,KAAKG,QACL,KAAKD,OACL,KAAKE,QACL,KAAK5J,OAER,EAOD6I,EAAAA,UAAAA,MAAAA,SAAMnP,GACJwQ,GAASxQ,EAAO,KAAK8P,OACtB,EAODX,EAAAA,UAAAA,OAAAA,SAAOnP,GACLwQ,GAASxQ,EAAO,KAAKiQ,QACtB,EAODd,EAAAA,UAAAA,MAAAA,SAAMx5G,GACJ86G,GAAS96G,EAAM,KAAKq6G,OACrB,EAODb,EAAAA,UAAAA,OAAAA,SAAOx5G,GACL86G,GAAS96G,EAAM,KAAKu6G,QACrB,EAODf,EAAAA,UAAAA,OAAAA,WACE,OAAO,KAAKW,OAAOrqI,KAAI,SAACkF,GAAM,UAASA,EAAE3L,WAAW,GACrD,EAODmwI,EAAAA,UAAAA,QAAAA,WACE,OAAO,KAAKc,QAAQxqI,KAAI,SAACkF,GAAM,UAASA,EAAE3L,WAAW,GACtD,EAODmwI,EAAAA,UAAAA,OAAAA,WACE,OAAO,KAAKa,OAAOvqI,KAAI,SAACkF,GAAM,WAAInG,KAAKmG,EAAEysD,UAAU,GACpD,EAOD+3E,EAAAA,UAAAA,QAAAA,WACE,OAAO,KAAKe,QAAQzqI,KAAI,SAACkF,GAAM,WAAInG,KAAKmG,EAAEysD,UAAU,GACrD,EAED+3E,EAAAA,UAAAA,QAAAA,WACE,IAAIjqI,EAAmB,GA4BvB,OA1BK,KAAK4qI,OAAOztI,QAAU,KAAKquI,WAC9BxrI,EAASA,EAAOyM,OAAO41H,GAAgB,CAAE3B,QAAS,KAAK8K,aAGzD,KAAKZ,OAAO1tI,SAAQ,SAAU49H,GAC5B96H,EAASA,EAAOyM,OAAOquH,EAAMhhI,WAAW+E,MAAM,MAC/C,IAED,KAAKksI,QAAQ7tI,SAAQ,SAAUktI,GAC7BpqI,EAASA,EAAOyM,OACd29H,EACGtwI,WACA+E,MAAM,MACN0B,KAAI,SAACuG,GAAS,SAAK1I,QAAQ,UAAW,UAAU,IAChD44B,QAAO,SAAClwB,GAAS,OAAC,WAAW8L,KAAK9L,EAAK,IAE7C,IAEG,KAAKgkI,OAAO3tI,QACd6C,EAAOpD,KAAK6uI,GAAe,QAAS,KAAKX,OAAQ,KAAK1J,SAGpD,KAAK4J,QAAQ7tI,QACf6C,EAAOpD,KAAK6uI,GAAe,SAAU,KAAKT,QAAS,KAAK5J,SAGnDphI,CACR,EAQDiqI,EAAAA,UAAAA,SAAAA,WACE,OAAO,KAAKlhF,UAAU9/C,KAAK,KAC5B,EAKDghI,EAAAA,UAAAA,MAAAA,WACE,IAAMyB,EAAM,IAAIzB,IAAW,KAAKxB,QAOhC,OALA,KAAKmC,OAAO1tI,SAAQ,SAAC0H,GAAS,SAAIk2H,MAAMl2H,EAAKkjB,QAAQ,IACrD,KAAKijH,QAAQ7tI,SAAQ,SAAC0H,GAAS,SAAIwlI,OAAOxlI,EAAKkjB,QAAQ,IACvD,KAAKgjH,OAAO5tI,SAAQ,SAACuzB,GAAS,SAAI05G,MAAM,IAAI7qI,KAAKmxB,EAAKyhC,WAAW,IACjE,KAAK84E,QAAQ9tI,SAAQ,SAACuzB,GAAS,SAAI45G,OAAO,IAAI/qI,KAAKmxB,EAAKyhC,WAAW,IAE5Dw5E,CACR,EACH,CAAC,CAvKD,CAA8BzP,IAyK9B,SAASqP,GAASxQ,EAAcvuH,GAC9B,KAAMuuH,aAAiBmB,IACrB,MAAM,IAAI/1F,UAAUjgC,OAAO60H,GAAS,0BAGjC/4H,GAASwK,EAAWhM,IAAI0F,QAASA,OAAO60H,KAC3CvuH,EAAW3P,KAAKk+H,EAEnB,CAED,SAASyQ,GAAS96G,EAAYlkB,GAC5B,KAAMkkB,aAAgBnxB,MACpB,MAAM,IAAI4mC,UAAUjgC,OAAOwqB,GAAQ,yBAEhC1uB,GAASwK,EAAWhM,IAAI20B,QAASA,OAAOzE,MAC3ClkB,EAAW3P,KAAK6zB,GAChB2mG,GAAAA,KAAc7qH,GAEjB,CAED,SAASk/H,GACPE,EACAC,EACAxK,GAEA,IAAMa,GAASb,GAA+B,QAAvBA,EAAKl+F,cACtBm+F,EAASY,EAAQ,UAAG0J,EAAK,KAAM,UAAGA,EAAK,UAAAl/H,OAAS20H,EAAI,KAEpDvf,EAAa+pB,EAChBrrI,KAAI,SAAC4pI,GAAU,4BAA2BA,EAAMphF,UAAWk5E,EAAM,IACjEh5H,KAAK,KAER,MAAO,UAAGo4H,GAAM50H,OAAGo1G,EACpB,CEpND,IAAI8I,GAAOnsC,GAAAA,mBACPqtD,GAAY,CAAC,OAAQ,WAAY,QAAS,WAAY,YAAa,UAAW,aAAc,QAAS,QAAS,SAAU,WAAY,WAAY,WAAY,QAC5JC,GAAY,CAAC,QAAS,SAAU,UAAW,SAAU,WAAY,WAAY,UAC7ErvD,GAAO,CACP8rD,GAAI,EACJN,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,EACJC,GAAI,GAEJyD,GAAiB,GACjBC,GAAa,KAEbC,GAAyB,CAAC,aAAc,MAAO,eAAgB,oBAAqB,oBAAqB,aAAc,sBACvHC,GAAa,KACV,SAASC,KAIZ,OAHKD,KACDA,GAAa,IAAIE,IAEdF,EACV,KACKE,GAAAA,WACF,cAAc,eACV5vI,KAAK6vI,MAAQ,KACb7vI,KAAK8vI,SAAW,KAChB9vI,KAAKuyB,UAAY,IAAIw9G,EACxB,6CACD,SAAc3yI,GAAS,WACf4yI,EAAiBhwI,KAAKiwI,mBAAmB7yI,EAAQgL,MAE3CA,EACN4nI,EADA5nI,KAEJ,IAAK4nI,EAAeE,UAAY9nI,EAAKk3H,KACjC,MAAO,GAEX,IAAI6Q,EAAsBnwI,KAAKowI,2BAA2BhzI,GAE1D,OADA4C,KAAKqwI,iBAAiBjzI,EAAS+yI,EAAoBG,kBAAmBloI,EAAKymH,OACpE7uH,KAAK8vI,SAASxzG,QAAQ6zG,EAAoBI,YAAaJ,EAAoBK,aAAa,GAAMh2G,QAAO,SAAAvG,GAAI,OAAIA,EAAKyhC,UAAYy6E,EAAoBjb,qBAAuBib,EAAoBM,WAApF,IAAiG1sI,KAAI,SAAAkwB,GAAI,OAAI,EAAKy8G,oBAAoBP,EAAqB/yI,EAAS62B,EAA3D,GAC5N,2CACD,SAA2B72B,GACvB,IACWm/B,EAIPn/B,EAJAm/B,MACK1Z,EAGLzlB,EAHAylB,IACK4U,EAELr6B,EAFAq6B,IAC2Bk5G,EAC3BvzI,EADAuzI,0BAEAC,EAA0B7b,GAAAA,wBAAsCx4F,GAChEs0G,EAA4B9b,GAAAA,wBAAsClyG,GAClEiuH,EAA4B/b,GAAAA,wBAAsCt9F,GAClE5L,EAAWzuB,EAAQ8M,IAAM9M,EAAQ8M,IAAIwrD,UAAYt4D,EAAQm/B,MAAMm5B,UAAY,EAC3E46E,EAAoBvb,GAAAA,iBAA+B33H,EAAQm/B,MAAO,EAAEq0G,EAAyBD,IAC7FF,EAAcrzI,EAAQylB,IAAI6yC,UAAYm7E,EAA4BF,EAClEJ,EAAc,IAAIztI,KAAK2tI,EAAc5kH,GACrC2kH,EAAczb,GAAAA,iBAA+B33H,EAAQq6B,IAAK,EAAEq5G,EAA2BH,IACvFI,EAA2Bhc,GAAAA,oCAAkD33H,EAAQm/B,MAAO+zG,GAEhG,MAAO,CACHA,kBAAmBA,EACnBG,YAAaA,EACbF,YAAaA,EACbC,YAAaA,EACbQ,0BANqBD,EAA2B,EAMA,EAAIA,EACpD7b,oBAAqBrpG,EAE5B,oCACD,SAAoBskH,EAAqB/yI,EAAS6zI,GAC9C,IAAIC,EAAoBnc,GAAAA,iBAA+Bkc,EAA/B,mBAA8CjxI,KAAKmxI,uBAAuBF,IAA1E,EAAuF7zI,EAAQuzI,0BAA2BR,EAAoBa,6BAClKI,EAAwBrc,GAAAA,oCAAkDmc,EAAmBD,GAC7FI,EAAqBD,EAAwB,EAC7ClsD,EAAa6vC,GAAAA,iBAA+Bmc,EAAmB,CAACE,IAChEE,EAAqBvc,GAAAA,oCAAkD7vC,EAAYgsD,GACvF,OAAII,GAAsBD,EACf,IAAIvuI,KAAKoiF,EAAWxvB,UAAY47E,GAEpCpsD,CACV,uCACD,SAAuB+rD,GACnB,IAAIM,EAAwBxc,GAAAA,wBAAsCkc,GAC9DO,EAAsBxvD,GAAAA,yBACtBx+E,EAAS,CAAC+tI,GACVE,EAAgCF,EAAwB/B,KAAe,GACvEkC,GAA+BF,GAAuB/B,GAAuBt9E,MAAK,SAAAu7D,GAAQ,OAAI8jB,EAAoBjsI,SAASmoH,EAAjC,IAI9F,OAHI+jB,GAAiCC,GACjCluI,EAAOpD,MAvEH,OAyEDoD,CACV,8BACD,SAAcpG,GACV,QAAS4C,KAAK2xI,cAAcv0I,GAASuD,MACxC,mCACD,SAAmByH,GACf,IAAI5E,EAAS,CACT4E,KAAM,CAAC,EACP8nI,SAAS,GAMb,OAJI9nI,IACA5E,EAAO4E,KAAOpI,KAAK4xI,qBAAqBxpI,GACxC5E,EAAO0sI,QAAUlwI,KAAKuyB,UAAUs/G,cAAcruI,EAAO4E,KAAMA,IAExD5E,CACV,sCACD,SAAsB4E,GAClB,OAAOpI,KAAKiwI,mBAAmB7nI,GAAM8nI,OACxC,kCACD,SAAkB9nI,GACd,IAAI5E,EAAS,GAQb,OAPI4E,EAAK0pI,QAEDtuI,EADAqB,MAAMC,QAAQsD,EAAK0pI,OACV1pI,EAAK0pI,MAEL1pI,EAAK0pI,MAAMzvI,MAAM,MAG3BmB,EAAOO,KAAI,SAAAa,GACd,IAAIqK,EAAQrK,EAAKqK,MAAM,aACvB,QAASA,GAASA,EAAM,EAC3B,IAAEurB,QAAO,SAAA51B,GAAI,QAAMA,CAAN,GACjB,qCACD,SAAqBqvB,GACjB,IAAI89G,EAAgB99G,EAAK8tD,oBAAsBosC,GAAK,UAChD6jB,EAAa,IAAIlvI,KAAKmxB,EAAKyhC,UAAYq8E,GAC3C,MAAO,GAAG9hI,OAAO+hI,EAAWpyD,cAAgB,IAAI3vE,OAAO+hI,EAAW5yD,WAAa,GAAGr6E,OAAO,GAAK,IAAIkL,OAAO+hI,EAAWhyD,WAAWj7E,OAAO,GAAI,KAAKkL,OAAO,IAAIA,OAAO+hI,EAAWpwD,YAAY78E,OAAO,IAAIkL,OAAO,IAAIA,OAAO+hI,EAAWxvD,cAAcz9E,OAAO,IAAIkL,OAAO,IAAIA,OAAO+hI,EAAWvvD,cAAc19E,OAAO,GAAI,IAClT,oCACD,SAAoB4gC,GAChB,GAAKA,GAAWA,EAAO25F,KAAvB,CAGA,IAAI97H,EAAS,GACb,IAAK,IAAI66D,KAAS14B,EAAQ,CACtB,IAAIznC,EAAQynC,EAAO04B,GACf,aAAeA,GAASngE,EAAQ,IAGhC,UAAYmgE,IACZngE,EAAQ8B,KAAKiyI,qBAAqB/zI,IAEtCsF,GAAU,GAAGyM,OAAOouD,EAAO,KAAKpuD,OAAO/R,EAAO,KACjD,CAED,OADAsF,EAASA,EAAOsd,UAAU,EAAGtd,EAAO7C,OAAS,IAC/B+lC,aAbb,CAcJ,0CACD,SAA0BxoC,GACtB,OAAOA,EAAM+Q,MAAM,qDACtB,qCACD,SAAqBijI,GACjB,GAAI,kBAAoBA,EACpB,OAAOA,EAEX,IAAI1uI,EAASxD,KAAKmyI,0BAA0BD,GAC5C,IAAK1uI,EACD,OAAO,KAEX,IAAI,EAAsDxD,KAAKoyI,iBAAiB5uI,GAAhF,eAAKq6E,EAAL,KAAW3pD,EAAX,KAAkBD,EAAlB,KAAwBisD,EAAxB,KAA+BE,EAA/B,KAAwCC,EAAxC,KACA,OADA,KAEW,IAAIv9E,KAAKA,KAAKs+E,IAAIvD,EAAM3pD,EAAOD,EAAMisD,EAAOE,EAASC,IAEzD,IAAIv9E,KAAK+6E,EAAM3pD,EAAOD,EAAMisD,EAAOE,EAASC,EACtD,yBACD,WACQrgF,KAAK8vI,kBACE9vI,KAAK8vI,SACZ9vI,KAAK8vI,SAAW,MAEhB9vI,KAAK6vI,eACE7vI,KAAK6vI,MACZ7vI,KAAK6vI,MAAQ,KAEpB,mCACD,WACI,OAAQ,IAAI/sI,MAAMi/E,mBACrB,iCACD,SAAiB3kF,EAASi1I,EAAcxjB,GAAO,WACvCyjB,EAAc7S,GAAM8E,YAAYnnI,EAAQgL,MAExB81C,EAChB9gD,EADA8gD,gBAEJo0F,EAAYpO,QAAUmO,GACjBC,EAAY/P,MAAQrkF,IACrBo0F,EAAY/P,KAAO,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGrkF,IAEzC2wE,IACAyjB,EAAYzjB,MAAQkG,GAAAA,iBAA+BlG,EAAO,EAAEkG,GAAAA,wBAAsClG,GAAQzxH,EAAQuzI,6BAEtH3wI,KAAKuyI,aAAaD,GACdl1I,EAAQu1H,YACev1H,EAAQu1H,UACOtwH,MAAM,KAAK0B,KAAI,SAAAqE,GAAI,OAAI,EAAKoqI,qBAAqBpqI,EAA9B,IAC1C1H,SAAQ,SAAAuzB,GACf72B,EAAQq1I,4BACRx+G,EAAO72B,EAAQq1I,0BAA0Bx+G,IAE7C,IAAI8wF,EAAUgQ,GAAAA,iBAA+B9gG,EAAM,EAAE8gG,GAAAA,wBAAsC9gG,GAAO72B,EAAQuzI,4BAC1G,EAAKb,SAASjC,OAAO9oB,EACxB,GAER,6BACD,SAAautB,GACTtyI,KAAK0yI,WACL1yI,KAAK8vI,SAAW,IAAIrC,GACpBztI,KAAK6vI,MAAQ,IAAIpQ,GAAM6S,GACvBtyI,KAAK8vI,SAASxR,MAAMt+H,KAAK6vI,MAC5B,qCACD,SAAqBH,GAGjB,IAFA,IAAIiD,EAAa,CAAC,EACdC,EAAYlD,EAAWrtI,MAAM,KACxBsG,EAAI,EAAGyI,EAAMwhI,EAAUjyI,OAAQgI,EAAIyI,EAAKzI,IAAK,CAClD,IAAIP,EAAOwqI,EAAUjqI,GAAGtG,MAAM,KAC1BwwI,EAAWzqI,EAAK,GAAGoM,cACnBs+H,EAAY1qI,EAAK,GACrBuqI,EAAWE,GAAYC,CAC1B,CACD,IAAIjnI,EAAQisB,SAAS66G,EAAW9mI,OAIhC,GAHK8vD,MAAM9vD,KACP8mI,EAAW9mI,MAAQA,GAEnB8mI,EAAWh2D,SAAU,CACrB,IAAIA,EAAW7kD,SAAS66G,EAAWh2D,UAC9BhhB,MAAMghB,KACPg2D,EAAWh2D,SAAWA,EAE7B,MACGg2D,EAAWh2D,SAAW,EAK1B,OAHIg2D,EAAWrT,MAAQqT,EAAW9jB,QAC9B8jB,EAAW9jB,MAAQ7uH,KAAKwyI,qBAAqBG,EAAW9jB,QAErD8jB,CACV,iCACD,SAAiBI,GACb,IAAIC,OAAQ,IAAWD,EAAY,GAUnC,OATAA,EAAY76G,aACR,IAAW66G,EAAY,GACvBA,EAAY1xI,OAAO,IAEnB0xI,EAAY1xI,OAAO,EAAG,GACtB0xI,EAAY1xI,OAAO,IAEvB0xI,EAAY,KACZA,EAAYniE,QAAQ,MACb,CAAC94C,SAASi7G,EAAY,IAAKj7G,SAASi7G,EAAY,IAAKj7G,SAASi7G,EAAY,IAAKj7G,SAASi7G,EAAY,KAAO,EAAGj7G,SAASi7G,EAAY,KAAO,EAAGj7G,SAASi7G,EAAY,KAAO,EAAGC,EACtL,OA3NCpD,GA6NAG,GAAAA,oFACF,SAAc3nI,EAAMsnI,GAChB,QAAI1vI,KAAKizI,sBAAsB7qI,KAAUknI,GAAU/pI,SAAS6C,EAAKk3H,OAASt/H,KAAKkzI,gBAAgB9qI,IAASpI,KAAKmzI,mBAAmB/qI,IAASpI,KAAKozI,gBAAgBhrI,IAASpI,KAAKqzI,qBAAqBjrI,IAASpI,KAAKszI,cAAclrI,IAASpI,KAAKuzI,gBAAgBnrI,MACvPpI,KAAKwzI,eAAe9D,IACb,EAGd,gCACD,SAAgBtnI,GACZ,IAAIqrI,GAAa,EAEN5kB,EACPzmH,EADAymH,MAKJ,YAHI,IAAWA,GAAWA,aAAiB/rH,OACvC2wI,GAAa,GAEVA,CACV,gCACD,SAAgBrrI,GACZ,IAAIsrI,GAAa,EAEN7nI,EACPzD,EADAyD,MAKJ,OAHIA,GAAS,kBAAoBA,IAC7B6nI,GAAa,GAEVA,CACV,qCACD,SAAqBtrI,GACjB,IAAIurI,GAAkB,EAClBC,EAAaxrI,EAAKw2H,WAItB,OAHIgV,GAAcj4E,MAAM7jC,SAAS87G,MAC7BD,GAAkB,GAEfA,CACV,8BACD,SAAcvrI,GACV,IAAIyrI,GAAe,EACfC,EAAU1rI,EAAKu3H,QAInB,OAHImU,GAAWn4E,MAAM7jC,SAASg8G,MAC1BD,GAAe,GAEZA,CACV,mCACD,SAAmBzrI,GACf,IAAI2rI,GAAgB,EAENp3D,EACVv0E,EADAu0E,SAKJ,OAHIA,GAAY,kBAAoBA,IAChCo3D,GAAgB,GAEbA,CACV,gCACD,SAAgB3rI,GACZ,IAAI4rI,EAAQ5rI,EAAK0pI,MACbmC,EAAatE,KAAyBuE,kBAAkB9rI,GACxD+rI,GAAkB,EAWtB,MAVI,KAAOH,IACPG,GAAkB,IAEtBtnF,EAAAA,EAAAA,IAAKonF,GAAY,SAACn1I,EAAG6+E,GACjB,IAAK3/E,OAAOgK,UAAU6X,eAAephB,KAAKwhF,GAAMtC,GAE5C,OADAw2D,GAAkB,GACX,CAGd,IACMA,CACV,sCACD,SAAsB/rI,GAClB,IAAIgsI,GAAmB,EAQvB,OAPAvnF,EAAAA,EAAAA,IAAKzkD,GAAM,SAAAyqI,GACP,IAAKxD,GAAU9pI,SAASstI,GAEpB,OADAuB,GAAmB,GACZ,CAGd,IACMA,CACV,+BACD,SAAe1E,GACNH,GAAehqI,SAASmqI,KACzBpwH,GAAAA,EAAAA,IAAW,QAASowH,GACpBH,GAAenvI,KAAKsvI,GAE3B,OAtFCK,GCjPFsE,GACW,YADXA,GAES,UAFTA,GAGQ,SAHRA,GAIM,OAJNA,GAKa,cALbA,GAMmB,oBANnBA,GAOiB,kBAPjBA,GAQgB,iBARhBA,GASqB,sBATrBA,GAUU,WAERC,GAAAA,WACF,WAAYrf,EAAgBd,EAAeK,EAAoBp3H,IAAS,eACpE4C,KAAKi1H,eAAiBA,EACtBj1H,KAAKm0H,cAAgBA,EACrBn0H,KAAKw0H,mBAAqBA,EAC1Bx0H,KAAK5C,QAAUA,CAClB,sCACD,WACI,OAAO4C,KAAK+lF,QAAU/lF,KAAK+lF,QAAU/lF,KAAK8lF,UAAY,CACzD,wBACD,WACI,IAAItiF,EAASxD,KAAKo+D,SAASi2E,IAC3B,YAAO,IAAW7wI,EAASA,EAAS,IAAIV,KAAKU,EAChD,MACD,SAActF,GACV8B,KAAKu0I,SAASF,GAA0Bn2I,EAC3C,sBACD,WACI,IAAIsF,EAASxD,KAAKo+D,SAASi2E,IAC3B,YAAO,IAAW7wI,EAASA,EAAS,IAAIV,KAAKU,EAChD,MACD,SAAYtF,GACR8B,KAAKu0I,SAASF,GAAwBn2I,EACzC,qBACD,WACI,OAAO8B,KAAKo+D,SAASi2E,GACxB,MACD,SAAWn2I,GACP8B,KAAKu0I,SAASF,GAAuBn2I,EACxC,mBACD,WACI,OAAO8B,KAAKo+D,SAASi2E,GACxB,MACD,SAASn2I,GACL8B,KAAKu0I,SAASF,GAAqBn2I,EACtC,0BACD,WACI,OAAO8B,KAAKo+D,SAASi2E,GACxB,MACD,SAAgBn2I,GACZ8B,KAAKu0I,SAASF,GAA4Bn2I,EAC7C,gCACD,WACI,OAAO8B,KAAKo+D,SAASi2E,GACxB,8BACD,WACI,OAAOr0I,KAAKo+D,SAASi2E,GACxB,6BACD,WACI,OAAOr0I,KAAKo+D,SAASi2E,GACxB,MACD,SAAmBn2I,GACf8B,KAAKu0I,SAASF,GAA+Bn2I,EAChD,kCACD,WACI,OAAO8B,KAAKo+D,SAASi2E,GACxB,MACD,SAAwBn2I,GACpB8B,KAAKu0I,SAASF,GAAoCn2I,EACrD,uBACD,WACI,QAAS8B,KAAKo+D,SAASi2E,GAC1B,0BACD,WACI,OAAO1E,KAAyB6E,sBAAsBx0I,KAAKgwI,eAC9D,yBACD,SAAS7iI,GACL,OAAO+mH,GAAyBl0H,KAAKm0H,cAAehnH,EAAUnN,KAAKi1H,eACtE,yBACD,SAAS9nH,EAAUjP,GACf,OAAOg2H,GAAyBl0H,KAAKm0H,cAAehnH,EAAUnN,KAAKi1H,eAAgB/2H,EACtF,mCACD,SAAmBu2I,GACf,IAAKz0I,KAAK8lF,WAAanqB,MAAM37D,KAAK8lF,UAAUpwB,WACxC,MAAMp2C,GAAAA,MAAa,QAAStf,KAAK2G,MAErC,OAAO3G,KAAK00I,cAAc10I,KAAK8lF,UAAW9lF,KAAK6yH,kBAAmB4hB,EACrE,iCACD,SAAiBA,GACb,OAAOz0I,KAAK00I,cAAc10I,KAAK+lF,QAAS/lF,KAAK20I,gBAAiBF,EACjE,8BACD,SAAcxgH,EAAM64F,EAAqB2nB,GACrC,GAAKxgH,EAGL,OAAOj0B,KAAKw0H,mBAAmBE,WAAWzgG,EAAM,CAC5C64F,oBAAqBA,EACrBnqH,KAAM8xI,GAEb,sBACD,WACI,IAAIr3I,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,QAAK,EAC3EtU,EAAS,IAAI8wI,GAAmB9+E,EAAAA,GAAAA,IAAoB,CAAC,EAAGx1D,KAAKi1H,gBAAiBj1H,KAAKm0H,cAAen0H,KAAKw0H,mBAAoBp3H,GAK/H,OAJI,OAASA,QAAW,IAAWA,OAAU,EAASA,EAAQw3I,gBAC1DpxI,EAAOsiF,UAAYtiF,EAAOqxI,mBAAmBz3I,EAAQw3I,cACrDpxI,EAAOuiF,QAAUviF,EAAOsxI,iBAAiB13I,EAAQw3I,eAE9CpxI,CACV,uBACD,WACI,IAAI2mF,EAAgBryE,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAChF,GAAIqyE,EAAe,CACf,IAAI4qD,EAAgB/0I,KAAKsrB,QAGzB,OAFAypH,EAAcjvD,UAAY9lF,KAAK8lF,UAC/BivD,EAAchvD,QAAU/lF,KAAK+lF,QACtBgvD,EAAcxtG,QACxB,CACD,OAAOke,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKi1H,eAC1B,OA5GCqf,GA+GKU,GAA2B,SAAC/f,EAAgBd,EAAeK,EAAoBp3H,GAApD,OAAgE,IAAIk3I,GAAmBrf,EAAgBd,EAAeK,EAAoBp3H,EAA1I,EClIlC63I,GAAuB,GAAGhlI,OADP,kBACgC,KAOnDilI,GAA4B,SAACxpB,EAAoBiJ,GACjD,IAAInxH,EAAS,GAKb,OAJIkoH,EAAmBypB,qBACnB3xI,EAAOpD,KAAKsrH,EAAmBypB,qBAEnC3xI,EAAOpD,KAXa,SAAC6zB,EAAM6xD,EAAWuvC,GAItC,OAHIA,GACAphG,EAAKirD,SAAS4G,EAAUlE,WAAYkE,EAAUtD,aAAcsD,EAAUrD,aAAcqD,EAAUpD,mBAE3FkyC,GAAAA,cAAgC3gG,EAAMghH,GAChD,CAMeG,CAAkBzgB,EAAejJ,EAAmB5lC,UAAW4lC,EAAmBI,SACvFtoH,EAAOiJ,MACjB,ECpBU4oI,GAAwB,kCAMxBC,GAAoC,CAC3ChmI,KAAM,gCACNhK,KAAM,gCACNiwI,KAAM,iCAECC,GAAgC,CACvCC,WAAY,sCACZC,SAAU,qCAEHC,GAAgC,uCAEhCC,GACsB,2CADtBA,GAES,2CAFTA,GAGY,iCAHZA,GAIW,wCAJXA,GAKU,0CALVA,GAOQ,yCAPRA,GAQe,yCARfA,GASoB,yCATpBA,GAU0B,+CAG1BC,GAAiC,8CACjCC,GAAqB,4BACrBC,GAAmB,0BACnBC,GAAmB,0BACnBC,GAAuB,8BACvBC,GAAkB,yBAClBC,GAA6B,oCAC7BC,GAAwB,+BACxBC,GAAyB,gCACzBC,GAA+B,CAAC,sCAAuC,sCAAuC,yCCvC9GC,GAAqB,iBAErBC,GAA2B,wBAC3BC,GAA+B,aAC/BC,GAAQ,CACfC,IAAK,MACLC,KAAM,OACNC,UAAW,WACXC,MAAO,QACPC,aAAc,cACdC,cAAe,eACfC,mBAAoB,mBACpBC,eAAgB,gBAChBC,OAAQ,qBCLZ,SAASC,GAAoB/sI,GACzB,OAAOA,EAAMlG,QAAO,SAACJ,EAAK7F,GACtB,IAAIm5I,EACAxrI,GAAS,QAAUwrI,EAAWtzI,EAAInK,IAAIsE,UAAW,IAAWm5I,EAAWA,EAAW,GAAK,EAE3F,OADAtzI,EAAI5K,IAAI+E,EAAO2N,GACR9H,CACV,GAAE,IAAI7K,IACV,CACM,IAAIo+I,GAAc,SAAS1yI,GAC9B,OAAOC,MAAMC,QAAQF,GAAQA,EAAO,CAACA,EACxC,EAYU2yI,GAAmB,WAC1B,IAAI/tI,EAAOsO,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GACxE0/H,EAAW1/H,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GAC5E2/H,EAAcL,GAAoBI,GACtC,OAAOhuI,EAAKgxB,QAAO,SAAAt8B,GACf,IAAIw5I,EAAmBD,EAAY79I,IAAIsE,GAEvC,OADAw5I,GAAoBD,EAAYt+I,IAAI+E,EAAOw5I,EAAmB,IACtDA,CACX,GACJ,ECjCUC,GAAmB,SAACC,EAAgBC,GAAjB,OAA+BxpF,EAAAA,EAAAA,IAAUupF,EAAe57I,MAAK,SAAAkC,GAAK,OAAIk1D,EAAAA,GAAAA,cAAal1D,EAAO25I,EAAxB,IAAlE,EC8BnBC,GAAe,SAAAh7F,GAAQ,OAAIA,EAASi7F,WAAa,IAA1B,EACvBC,GAAiB,SAAAl7F,GAAQ,OAAIA,EAASm7F,aAAe,MAA5B,EACzBC,GAAe,SAAAp7F,GAAQ,OAAIA,EAASq7F,WAAar7F,EAASuhB,KAAnC,EACvB+5E,GAAuB,SAAA7wC,GAC9B,GAAIA,aAAsB/F,GACtB,OAAO+F,EAEX,IAAI/jG,GAASuV,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGgoF,GAA2BwG,IAAc,CACxE7E,SAAU,IAKd,OAHK79F,MAAMC,QAAQyiG,KACf/jG,EAAOg3B,OAAS+sE,EAAW/sE,QAExB,IAAIgnE,GAAWh+F,EACzB,EACU60I,GAAsB,SAAAh6F,GAC7B,IAAIi6F,EAAY,EA0BhB,OAzBW,SAAPC,EAAQhjD,EAAOijD,EAAYh1I,EAAQqH,GACnC,IAAInQ,EACJ8I,EAASA,GAAU,GACnB,IAAK,IAAIi1I,EAAY,EAAGA,EAAYljD,EAAMrvC,MAAMvlD,OAAQ83I,IAAa,CACjE,IAAIC,EAAmBnjD,EAAMrvC,MAAMuyF,GAC/BE,EAAa,CACbv/I,KAAMm8F,EAAMn8F,KACZ8E,MAAOw6I,EAAiB36H,GACxB2xG,MAAOgpB,EAAiB/xI,KACxBrM,KAAM,QAAUI,EAAK66F,EAAMj7F,YAAS,IAAWI,OAAK,EAASA,EAAG+9I,GAChE1tI,SAAU,GACVF,OAAQA,GAAU,MAElB+tI,EAAiBJ,EAAa,EAC9Bn6F,EAAOu6F,IACPL,EAAKl6F,EAAOu6F,GAAiBA,EAAgBD,EAAW5tI,SAAU4tI,GAEjEA,EAAW5tI,SAASpK,SACrBg4I,EAAWL,UAAYA,EACvBA,KAEJ90I,EAAOpD,KAAKu4I,EACf,CACD,OAAOn1I,CACV,CACM+0I,CAAKl6F,EAAO,GAAI,EAC1B,EACUw6F,GAAgB,SAACP,EAAWj6F,GACnC,IAoBIy6F,EAnBkB,SAAlBC,EAAmBz+I,EAAM6G,GACzB,IAAK,IAAIwH,EAAI,EAAGA,EAAIrO,EAAKqG,OAAQgI,IAAK,CAClC,GAAIrO,EAAKqO,GAAG2vI,YAAcn3I,EACtB,OAAO7G,EAAKqO,GAEhB,IAAIqwI,EAAQD,EAAgBz+I,EAAKqO,GAAGoC,SAAU5J,GAC9C,GAAI63I,EACA,OAAOA,CAEd,CACJ,CASUD,CApBAV,GAAoBh6F,GAoBEi6F,GACjC,OATiB,SAAbW,EAAcH,EAAMt1I,GAMpB,OALAA,EAASA,GAAU,IACZpD,KAAK04I,EAAK56I,OACb46I,EAAKjuI,QACLouI,EAAWH,EAAKjuI,OAAQrH,GAErBA,CACV,CAEMy1I,CAAWH,GAAMh+E,SAC3B,EACUo+E,GAAgB,SAACV,EAAYn6F,GACpC,IAAI76C,EAAS,GACb,GAAI21I,GAAc96F,GAAS,CACvB,GAAIm6F,EAAa,EACb,OAGJ,IADA,IAAI71I,EAAOk2I,GAAcL,EAAYn6F,GAC5B11C,EAAI,EAAGA,EAAI01C,EAAO19C,OAAQgI,IAC/BnF,EAAOpD,KAAK,CACRhH,KAAMilD,EAAO11C,GAAGvP,KAChB2kB,GAAIpb,EAAKgG,IAGpB,CACD,OAAOnF,CACV,EACU21I,GAAgB,SAAA96F,GAEvB,IADA,IAAI76C,EAAS,EACJmF,EAAI,EAAGyI,EAAMitC,EAAO19C,OAAQgI,EAAIyI,EAAKzI,IACrCA,EAGDnF,GAAU66C,EAAO11C,GAAGu9C,MAAMvlD,OAF1B6C,EAAS66C,EAAO11C,GAAGu9C,MAAMvlD,OAKjC,OAAO6C,CACV,EACU41I,GAAiC,SAAAC,GAAW,OAAIA,EAAYl1I,QAAO,SAACm1I,EAAetiI,GAC1F,IACU5d,EAEN4d,EAFA5d,KACI2kB,EACJ/G,EADA+G,GAEJ,OAAOhF,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGugI,IAAd,WACVlgJ,EAAO2kB,GAEf,GAAE,CAAC,EARmD,EAS5Cw7H,GAAe,SAAAl7F,GACtB,IAAIswC,EAAawqD,GAAc96F,GAC/B,OAAO,QAAI,IAAIx5C,MAAM8pF,IAAa5qF,KAAI,SAACjF,EAAG05I,GACtC,IAAIa,EAAcH,GAAcV,EAAYn6F,GAC5C,OAAO+6F,GAA+BC,EACzC,GACJ,EA0BUG,GAAqB,SAACz5F,EAAW05F,GACxC,IAAI38F,EAAWiD,EAAU/jD,MAAK,SAAA8gD,GAE1B,OADYo7F,GAAap7F,KACR28F,CACpB,IACD,SAAU,OAAS38F,QAAY,IAAWA,OAAW,EAASA,EAAS48F,cAC1E,EACUC,GAAkB,SAAC55F,EAAW46B,GAAZ,OAAuB56B,EAAUvlB,QAAO,SAAAsiB,GACjE,IAAIuhB,EAAQ65E,GAAap7F,GACzB,OAAO69B,EAAOv5E,QAAQi9D,IAAU,CACnC,GAH4B,EAgClBu7E,GAAmB,SAACzlB,EAAega,EAAW9oI,GAErD,OADc8uH,EAAc9uH,GACb8oI,EAClB,EA0BU0L,GAAmC,SAAC95I,EAAQw1H,EAAcx1E,GACjE,IAAI+5F,EAAOzB,GAAoBt4F,GAC3Bv8C,EAAS,CAAC,EAUd,OATA+xH,EAAa70H,SAAQ,SAAA6sH,GAEjB,IADA,IAAIwsB,EAAaC,IAAsB,SAAC37E,EAAOx4C,GAAR,OAAmB+zH,GAAiB75I,EAAOo0H,cAAe91D,EAAOx4C,EAAjE,GAA0Ei0H,EAAMvsB,GAC9G5kH,EAAI,EAAGA,EAAIoxI,EAAWp5I,OAAQgI,IAC9BnF,EAAOu2I,EAAWpxI,MACnBnF,EAAOu2I,EAAWpxI,IAAM,IAE5BnF,EAAOu2I,EAAWpxI,IAAIvI,MAAKo1D,EAAAA,GAAAA,IAAoB,CAAC,EAAG+3D,GAAa,GAEvE,IACM/pH,CACV,EACUw2I,GAAwB,SAAxBA,EAAyBJ,EAAkBE,EAAM7kB,EAAgBzxH,GACxEA,EAASA,GAAU,GACnB,IAAK,IAAImF,EAAI,EAAGA,EAAImxI,EAAKn5I,OAAQgI,IACxBsxI,GAAaL,EAAkB3kB,EAAgB6kB,EAAKnxI,GAAGvP,KAAM0gJ,EAAKnxI,GAAGzK,UAGtEmwD,EAAAA,EAAAA,IAAUyrF,EAAKnxI,GAAG2vI,YAClB90I,EAAOpD,KAAK05I,EAAKnxI,GAAG2vI,WAEpBwB,EAAKnxI,GAAGoC,UACRivI,EAAsBJ,EAAkBE,EAAKnxI,GAAGoC,SAAUkqH,EAAgBzxH,IAGlF,OAAOA,CACV,EACGy2I,GAAe,SAACL,EAAkB3kB,EAAgBilB,EAAWrC,GAC7D,IAAIsC,EAAgBP,EAAiBM,EAAW,SAA5BN,CAAsC3kB,GAC1D,OAAO0iB,GAAiBL,GAAY6C,GAAgBtC,EACvD,EAKUuC,GAAsB,SAAtBA,EAAuBR,EAAkBE,EAAMO,EAAsBle,GAuC5E,OAtCAA,EAAUA,EAAUA,EAAQpxH,SAAW,GACvC+uI,EAAKp5I,SAAQ,SAACiK,EAAMxJ,GAChB,IAAIqF,GAAK,EACL8zI,EAAe3vI,EAAKvR,KACpB+gJ,EAAgBxvI,EAAKzM,MACrBq8I,EAAgB5vI,EAAK+kH,MACrB8qB,EAAe7vI,EAAKrQ,KACpBmgJ,EAAiBb,EAAiBU,EAAc,UACpDD,EAAqB35I,SAAQ,SAAA6sH,GACzB,IAAK/mH,EAAI,CACL,IAAIk0I,EAA0BD,EAAeltB,GACzC1oH,MAAMC,QAAQ41I,GACVA,EAAwBn1I,SAAS40I,KACjChe,EAAQ/7H,KAAK,CACThH,KAAMkhJ,EACNp8I,MAAOi8I,EACPzqB,MAAO6qB,EACPjgJ,KAAMkgJ,EACNzvI,SAAU,KAEdvE,GAAK,GAEFk0I,IAA4BP,IACnChe,EAAQ/7H,KAAK,CACThH,KAAMkhJ,EACNp8I,MAAOi8I,EACPzqB,MAAO6qB,EACPjgJ,KAAMkgJ,EACNzvI,SAAU,KAEdvE,GAAK,EAEZ,CACJ,IACGA,GAAMmE,EAAKI,UAAYJ,EAAKI,SAASpK,QACrCy5I,EAAoBR,EAAkBjvI,EAAKI,SAAUsvI,EAAsBle,EAAQh7H,GAE1F,IACMg7H,CACV,EAoDUwe,GAAmB,SAAC56F,EAAW66F,EAAmBv8E,EAAOngE,GAChE,IAAIsF,EAAS,IAAI6Z,GAAAA,GAEbw9H,GADWlB,GAAgB55F,EAAW,CAACse,IAAQ,IAAM,CAAC,GACjCw8E,WAAa,QAClCC,GAAc1mF,EAAAA,GAAAA,IAAcymF,GAEhC,OAvL+B,SAAC96F,EAAW66F,EAAmBv8E,EAAOngE,GACrE,IAAIsF,EAAS,IAAI6Z,GAAAA,GAgBjB,OAfA0iC,EAAUvlB,QAAO,SAAAsiB,GAAQ,OAAIo7F,GAAap7F,KAAcuhB,IAAShQ,EAAAA,EAAAA,IAAUvR,EAASyqD,WAA3D,IAAwE7mG,SAAQ,SAAAo8C,GACrG,IAAIi+F,EAAoB3C,GAAqBt7F,EAASyqD,YAClDwwC,EAAYD,GAAah7F,GACxB89F,EAAkBjhJ,IAAI0kE,IACvBu8E,EAAkBzhJ,IAAIklE,EAAO08E,EAAkB1kD,QAEnDukD,EAAkBhhJ,IAAIykE,GAAOzP,MAAK,SAAAt0D,GAC9B,IAAIs6D,GAASR,EAAAA,GAAAA,IAAc2jF,GACvBiD,EAAe1gJ,EAAKkgC,QAAO,SAAAsiB,GAAQ,OAAIsW,EAAAA,GAAAA,cAAawB,EAAO9X,GAAW5+C,EAAnC,IACvCsF,EAAO5E,QAAQo8I,EAAa,GAC/B,IAAE1rF,MAAK,WACJsrF,EAAkB/0I,OAAOw4D,GACzB76D,EAAOhE,QACV,GACJ,IACMgE,EAAO8Z,SACjB,CAoKG29H,CAAsBl7F,EAAW66F,EAAmBv8E,EAAOngE,GAAO0wD,MAAK,SAAA9R,GAAQ,OAAIt5C,EAAO5E,QAAQk8I,EAAYh+F,GAA/B,IAA2CwS,MAAK,kBAAM9rD,EAAOhE,QAAb,IACxHgE,EAAO8Z,SACjB,EACU49H,GAAsB,SAACC,EAAgBC,GAC9C,IACer7F,EAIXo7F,EAJAp7F,UACeo0E,EAGfgnB,EAHAhnB,cACiBknB,EAEjBF,EAFAE,gBACmBT,EACnBO,EADAP,kBAGYpC,EAGZ4C,EAHA5C,WACQn6F,EAER+8F,EAFA/8F,OACUi9F,EACVF,EADAE,SAEAC,EA9MyB,SAACx7F,EAAW1B,GACzC,IAAIm9F,EAAYn9F,GAAU,GACtB76C,EAASu8C,EAAU/jD,MAAK,SAAA8gD,GAAQ,OAAIA,EAAS2+F,iBAAb,IACpC,GAAIj4I,EACA,OAAOA,EAEX,IAAIk4I,EAAeF,EAAU76I,OAASg5I,GAAgB55F,EAAWy7F,GAAaz7F,EAC9E,OAAO27F,EAAaA,EAAa/6I,OAAS,EAC7C,CAsM0Bg7I,CAAoB57F,GAAa,GAAI1B,GAC5D,GAAIk9F,EAAkB,CAMlB,IALA,IAAIl9E,EAAQ65E,GAAaqD,GACrBK,EAAa1C,GAAcV,EAAY6C,GACvCQ,EAAyBjC,GAAiBzlB,EAAe91D,EAAO,UAEhEy9E,EADiBxE,GAAYuE,EAAuBP,IAC3B,GACpB3yI,EAAI,EAAGA,EAAIizI,EAAWj7I,OAAQgI,IACnC,GAAIizI,EAAWjzI,GAAGvP,OAASilE,EAAO,CAC9By9E,EAAUF,EAAWjzI,GAAGoV,GACxB,KACH,CAEL,OAAO48H,GAAiB56F,EAAW66F,EAAmBv8E,EAAOy9E,EAChE,CACD,OAAQ,IAAIz+H,GAAAA,IAAUze,UAAU0e,SACnC,EACUy+H,GAAoB,WAC3B,IAAIh8F,EAAYjoC,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GAC7EtU,EAAS,CACToxD,OAAQ,CAAC,EACTw/D,OAAQ,CAAC,GAOb,OALAr0E,EAAUr/C,SAAQ,SAAAo8C,GACd,IAAIuhB,EAAQ65E,GAAap7F,GACzBt5C,EAAOoxD,OAAOyJ,IAASjK,EAAAA,GAAAA,IAAciK,GACrC76D,EAAO4wH,OAAO/1D,IAASrJ,EAAAA,GAAAA,IAAcqJ,EACxC,IACM76D,CACV,EAeUw4I,GAAgB,SAAC39F,EAAQ0B,EAAW66F,GAC3C,IAAIp3I,EAAS,IAAI6Z,GAAAA,GACb4+H,EAAY,GAGZZ,EAAkB,GAgBtB,OAfA1B,GAFmB55F,GAAa,GADhB1B,GAAU,IAGe39C,SAAQ,SAAAo8C,GAC7C,IAAIyR,EAAW,IAAIlxC,GAAAA,GACfjkB,EAAO8+I,GAAap7F,GACxBm/F,EAAU77I,KAAKmuD,GACf,IAAI2tF,EAAoB9D,GAAqBt7F,EAASyqD,YAAYlR,OAClEukD,EAAkBzhJ,IAAIC,EAAM8iJ,GAC5BA,EAAkBttF,MAAK,SAAAt0D,GACnB,IAAI4rD,EA3BiB,SAACpJ,EAAUxiD,GACxC,IAAI6hJ,GAAc/nF,EAAAA,GAAAA,IAAc0jF,GAAah7F,IACzCs/F,GAAgBhoF,EAAAA,GAAAA,IAAc4jF,GAAel7F,IACjD,OAAOxiD,EAAKyJ,KAAI,SAAAa,GACZ,IAAIpB,EAAS,CACTua,GAAIo+H,EAAYv3I,GAChB+B,KAAMy1I,EAAcx3I,IAKxB,OAHIA,EAAK+jB,QACLnlB,EAAOmlB,MAAQ/jB,EAAK+jB,OAEjBnlB,CACV,GACJ,CAcuB64I,CAA2Bv/F,EAAUxiD,GACjDi0D,EAAS3vD,QAAQ,CACbxF,KAAMA,EACN8sD,MAAOA,EACP5rD,KAAMA,GAEb,IAAEg1D,MAAK,kBAAMf,EAAS/uD,QAAf,GACX,IACIy8I,EAAUt7I,QAGf0uD,GAAAA,GAAAA,MAAW,KAAM4sF,GAAWrtF,MAAM,WAC9B,IAAK,IAAI9B,EAAOh1C,UAAUnX,OAAQo/C,EAAY,IAAIl7C,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAClF0qC,EAAU1qC,GAAQyC,UAAUzC,GAEhC,IAAIinI,EAAWv8F,EAAUoS,MAAK,SAAA9tC,GAAC,OAAI,IAAMA,EAAE6hC,MAAMvlD,MAAlB,IAC/B06I,EAAkBiB,EAAW,GAAKv8F,EAClCv8C,EAAO5E,QAAQy8I,EAClB,IAAG/rF,MAAK,kBAAM9rD,EAAOhE,QAAb,IACFgE,EAAO8Z,WAVH9Z,EAAO5E,QAAQy8I,EAW7B,EACUkB,GAAyB,SAACtnB,EAAgBd,EAAep0E,GAChE,IAAIv8C,EAAS,CAAC,EASd,OARAqpD,EAAAA,EAAAA,IAAKsnE,EAAcp0E,UAAU6U,QAAQ,SAAAu5E,GACjC,IAAIjwI,EAAQi2H,EAAcp0E,UAAU6U,OAAOu5E,GAAWlZ,GACtD,IAAI5mE,EAAAA,EAAAA,IAAUnwD,GAAQ,CAClB,IACIi8I,EADaX,GAAmBz5F,EAAWouF,GACdmJ,GAAYp5I,GAASA,EACtDsF,EAAO2qI,GAAagM,CACvB,CACJ,IACM32I,CACV,EC9dM,SAASg5I,GAAeC,GAC3B,OAAOz+I,OAAOgB,KAAKy9I,GAAYjiH,QAAO,SAAA38B,GAAC,OAAI4+I,EAAW5+I,EAAf,IAAmB4O,KAAK,IAClE,CCFM,IAAIiwI,GAA6B,WCe7BC,GAAgB,SAACnE,EAAYoE,GACpC,OAAIA,GAAwBpE,EACjBA,EAAWl7I,WAEf,GACV,EACUu/I,GAAc,SAACz/I,EAAS05B,GAC/B,IAAIgmH,EAAY,OAAShmH,QAAS,IAAWA,EAAQA,EAAQ,CAAC,EAC1DtzB,GAASuV,EAAAA,EAAAA,GAAS,CAAC,EAAG+jI,GAQ1B,OAPA1/I,EAAQsD,SAAQ,SAAAsW,GACZ,IACUk3D,EAENl3D,EAFAk3D,KACOhwE,EACP8Y,EADA9Y,MAEJsF,EAAO0qE,GAAQhwE,GAAS4+I,EAAU5uE,EACrC,IACM1qE,CACV,EACUu5I,GAAmB,SAAC7+I,EAAO44B,GAClC,IAAItK,EAAStuB,EAAQ,GAAG+R,OAAO/R,EAAO,MAAQ,GAC9C,OAAO2+I,GAAY,CAAC,CAChB3uE,KAAM,SACNhwE,MAAOsuB,IACPsK,EACP,EACUkmH,GAAkB,SAAC9+I,EAAO44B,GACjC,IAAInG,EAAQzyB,EAAQ,GAAG+R,OAAO/R,EAAO,MAAQ,GAC7C,OAAO2+I,GAAY,CAAC,CAChB3uE,KAAM,QACNhwE,MAAOyyB,IACPmG,EACP,EACUmmH,GAAsB,WAC7B,IAAIC,EAAmBplI,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAC/EqlI,EAAkBrlI,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAC9EK,EAAYL,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GACjF,OAAO0kI,IAAe,SAClB,gCAAiCU,EACjC,+BAAgCC,GAC/BhlI,GAAY,GAEpB,EACUilI,GAA0B,SAACC,EAAcT,GAAf,OAAsCS,GAAgBT,CAAtD,EAC1BU,GAA4B,SAACj/F,EAAQk/F,GAAT,OAA8BA,IAAqBb,MAAgCr+F,EAAO19C,MAA1F,EAC5B68I,GAA8B,SAACn/F,EAAQk/F,GAAT,MD1DC,eC0D6BA,KAAuDl/F,EAAO19C,MAA5F,EAC9B88I,GAAmB,SAACp/F,EAAQk/F,EAAkBn/F,GACrD,IAAIs/F,EAAuBF,GAA4Bn/F,EAAQk/F,GAC/D,OAAOn/F,GAAes/F,CACzB,ECpDUC,GAAiB,CACxBC,aAAa,EACbC,cAAc,EACdC,kBAAkB,EAClBC,eAAe,GCORC,GAAgB,SAAC/pH,EAAM6xD,EAAWC,EAASpE,GAA3B,OAAoCA,EAAO,EAAIK,GAAAA,YAAsB/tD,EAAM6xD,EAAW,IAAIhjF,KAAKijF,EAAQrwB,UAAY,IAAMssB,GAAAA,YAAsB/tD,EAAM8xD,EAASD,EAAW,OAAzK,EAChBm4D,GAAgB,SAAChqH,EAAMiqH,GAC9B,IAAIC,EAAW,IAAIr7I,KAAKmxB,GACxB,OAAKo6B,EAAAA,EAAAA,IAAU6vF,IAGfC,EAASj/D,SAASg/D,EAAYA,EAAa,EAAI,GAAI,EAAG,GAC/CC,GAHIA,CAId,EACUC,GAAwB,SAACt4D,EAAWf,EAAas5D,EAAkBC,GAC1E,IAAKx4D,EACD,OAAO,IAAIhjF,KAAKiiF,GAKpB,IAHA,IAAIw5D,EAAmBv8D,GAAAA,SAAmBs8D,GACtC38D,EAAO48D,EAAiB7oF,WAAaqvB,EAAYrvB,UAAY,GAAK,EAClEqwB,EAAU,IAAIjjF,KAAKy7I,EAAiB7oF,UAAY2oF,EAAmB18D,IAC/Dq8D,GAAcj5D,EAAaw5D,EAAkBx4D,EAASpE,IAC1D48D,EAAmBx4D,EACnBA,EAAU,IAAIjjF,KAAKy7I,EAAiB7oF,UAAY2oF,EAAmB18D,GAEvE,OAAOA,EAAO,EAAI48D,EAAmBx4D,CACxC,EACUy4D,GAA8B,SAAAC,GAAoB,OAAIpwF,EAAAA,EAAAA,IAAUowF,GAAwBA,EAAuBr2B,GAAAA,qBAA7D,EAGlDs2B,GAA6B,SAACJ,EAAe/9F,GACpD,IAAIo+F,EAAmB5pB,GAAAA,6BAA2CupB,GAElE,OADAK,EAAiBz/D,SAAS3+B,GACnBo+F,CACV,EAKUC,GAAmB,SAACr+F,EAActC,GACzC,GAAIsC,GAAgBtC,EAChB,MAAM3+B,GAAAA,MAAa,QAE1B,EACUu/H,GAA6B,SAACP,EAAe/9F,GACpD,IAAIu+F,EAAoBv1I,KAAKo/D,MAAMpoB,GAEnC,OADkBw0E,GAAAA,uBAAqCupB,IACpCQ,IAAsBR,EAAc18D,WAC5CI,GAAAA,mBAA6B,QAEjC,CACV,EACU+8D,GAAgB,SAAA9qH,GAAI,OAAIm0F,GAAAA,YAA6B,eAAen0F,EAAKitD,SAArD,EACpB89D,GAAsB,SAAA/qH,GAAI,MAAI,GAAGhkB,OAAO8uI,GAAc9qH,GAAO,KAAKhkB,OAAOm4G,GAAAA,OAAwBn0F,EAAM,OAA7E,EAC1BgrH,GAAW,SAACC,EAAe1qB,GAClC,IAAI2qB,EAAY,OAASD,QAAiB,IAAWA,EAAgBA,EAAgB,IAAIp8I,KACzF,OAAQ,OAAS0xH,QAAsB,IAAWA,OAAqB,EAASA,EAAmBE,WAAWyqB,EAAW,CACrHx8I,KAAM,aACHw8I,CACV,EACUC,GAA6B,SAAA/gG,GACpC,OAAQ,OAASA,QAAU,IAAWA,OAAS,EAASA,EAAO19C,QAC3D,KAAK,EACD,OAAO21I,GAA6B,GACxC,KAAK,EACD,OAAOA,GAA6B,GACxC,KAAK,EACD,OAAOA,GAA6B,GACxC,QACI,OAEX,EACU+I,GAAoB,SAAAp7D,GAAQ,OAAIA,IAAayyD,GAAMQ,gBAAkBjzD,IAAayyD,GAAMI,KAA5D,EAC5BwI,GAAiB,SAAAr7D,GAAQ,QAAM05D,GAAe15D,EAArB,EACzBs7D,GAA0B,SAAClhG,EAAQk/F,GAC1C,IAAI5uD,EAAawqD,GAAc96F,IAAW,EAE1C,OADyBi/F,GAA0Bj/F,EAAQk/F,GAC/B,EAAI5uD,CACnC,EACU6wD,GAAgC,SAACnhG,EAAQk/F,EAAkBkC,GAA3B,OAAoDnC,GAA0Bj/F,EAAQk/F,IAAqBkC,CAA3G,EAChCC,GAAuB,SAACn/F,EAActC,GAAf,OAA8BA,EAAasC,CAA3C,EACvBo/F,GAAmB,SAAA17D,GAC1B,OAAQA,GACJ,KAAKyyD,GAAMK,aACX,KAAKL,GAAMM,cACX,KAAKN,GAAMO,mBACX,KAAKP,GAAMQ,eACX,KAAKR,GAAMI,MACP,OAAO,EACX,QACI,OAAO,EAElB,EACU8I,GAAkC,SAAAC,GAAY,OAAIA,EAAaA,EAAal/I,OAAS,GAAGA,MAA1C,EAC9Cm/I,GAAiC,SAAAD,GAAY,OAAIA,EAAal/I,MAAjB,EAC7Co/I,GAAwB,SAACC,EAAoBH,GAArB,OAAsC,OAASG,QAAsB,IAAWA,EAAqBA,EAAqBJ,GAAgCC,EAA1J,EACxBI,GAAuB,SAACC,EAAmBL,GAApB,OAAqC,OAASK,QAAqB,IAAWA,EAAoBA,EAAoBJ,GAA+BD,EAArJ,EACvBM,GAAkB,SAACl8D,EAAU1jC,EAActC,EAAYmiG,GAC9D,OAAQn8D,GACJ,IAAK,QACD,OAAO,KAAOy7D,GAAqBn/F,EAActC,GACrD,IAAK,gBACD,OAAO+jC,GAAAA,mBAA6B,OACxC,QACI,OAAO,KAAOo+D,EAEzB,EChHoBC,GAAAA,WACjB,WAAYx6H,EAAQ9lB,IAAQ,eACxBA,EAASA,GAAU,CAAC,EACpBC,KAAKsgJ,QAAUz6H,EACf7lB,KAAKugJ,SAAWxgJ,EAAOomD,UAAWpF,EAAAA,EAAAA,MAClC/gD,KAAKwgJ,eAAiBzgJ,EAAO0gJ,cAC7BzgJ,KAAK0gJ,cAAgB3gJ,EAAO4gJ,aAC5B3gJ,KAAK4gJ,WAAa7gJ,EAAOqxB,UACzBpxB,KAAK6gJ,sBAAwB9gJ,EAAO+gJ,qBACpC,IAAIC,EAAoB/gJ,KAAKghJ,mBAAqB,CAAC,EACnD,GAAIjhJ,EAAOghJ,kBACP,IAAK,IAAIp4I,EAAI,EAAGA,EAAI5I,EAAOghJ,kBAAkBpgJ,OAAQgI,IACjDo4I,EAAkBhhJ,EAAOghJ,kBAAkBp4I,KAAM,CAG5D,uCACD,WACI,IAAIM,EAAI,CACJ4c,OAAQ7lB,KAAKsgJ,QACb1iJ,KAAMiH,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,WACjCquC,QAASnmD,KAAKugJ,SACdnvH,UAAWpxB,KAAK4gJ,WAChBE,qBAAsB9gJ,KAAK6gJ,sBAC3B7/F,QAAQ,EACRigG,SAAS,GAETR,EAAgBzgJ,KAAKwgJ,eACrBG,EAAe3gJ,KAAK0gJ,cACpBQ,EAAUj4I,EAAErL,KAAK,IAAM,CAAC,EAC5B,GAAKoC,KAAKmhJ,gBAAgBl4I,KAG1B,OAASw3I,QAAiB,IAAWA,GAAyBA,EAAchiJ,KAAKuB,KAAKugJ,SAAUt3I,IAC5FA,EAAE+3C,QAAN,CAGA,IAAIx9C,EAASxD,KAAKohJ,eAAen4I,GACjC,IAAIi4I,EAAQlgG,OAIZ,OADA,OAAS2/F,QAAgB,IAAWA,GAAwBA,EAAaliJ,KAAKuB,KAAKugJ,SAAUt3I,GACtFzF,CANN,CAOJ,gCACD,SAAgByF,GACZ,IAAI83I,EAAoB/gJ,KAAKghJ,mBAEdK,EACXhB,EADAgB,UAEJ,IAAK,IAAIjoJ,KAAQioJ,EACb,IAAKN,EAAkB3nJ,GAAO,CAC1B,IAAIkoJ,EACAtgI,EAAWqgI,EAAUjoJ,GAEzB,GADA,QAAUkoJ,EAAqBtgI,EAASugI,gBAAa,IAAWD,GAA8BA,EAAmB7iJ,KAAKuiB,EAAU/X,GAC5HA,EAAE+3C,OACF,OAAO,CAEd,CAEL,OAAO,CACV,+BACD,SAAe/3C,GACX,IAAIzF,EAEW69I,EACXhB,EADAgB,UAEJ,IAAK,IAAIjoJ,KAAQioJ,EAAW,CACxB,IAAIG,EACAxgI,EAAWqgI,EAAUjoJ,GAEzB,GADA,QAAUooJ,EAAoBxgI,EAASygI,eAAY,IAAWD,GAA6BA,EAAkB/iJ,KAAKuiB,EAAU/X,GACxHA,EAAEg4I,QAAS,CACXz9I,EAASyF,EAAEzF,OACX,KACH,CACJ,CACD,OAAOA,CACV,mCACD,SAAwBpK,EAAM4nB,IACtBomB,EAAAA,EAAAA,IAAchuC,IACdyzD,EAAAA,EAAAA,IAAKzzD,EAAMinJ,EAAOqB,kBAGtBrB,EAAOgB,UAAUjoJ,GAAQ4nB,CAC5B,mCACD,WACI,IAAK,IAAI8rC,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,IAE3Bw3C,EAAAA,EAAAA,IAAKjvD,GAAO,kBACDyiJ,EAAOgB,UAAUrhJ,KAC3B,GACJ,OA1FgBqgJ,GA4FrBA,GAAOgB,UAAY,CAAC,EACpB,IAAIM,GAAiC,SAAAjuF,GAAS,OAAI,SAAAzqD,GAC9C,GAAKA,EAAErL,KAAK+C,OAAZ,CAGA,IAAI/C,EAAOqL,EAAErL,KAAK,GACd4O,EAAU5O,EAAKqL,EAAE63I,uBAAyBljJ,EAAK4O,QAC/CA,GAAWknD,EAAUqd,GAAEvkE,MACvBvD,EAAE+3C,QAAS,EAJd,CAMJ,CAT6C,EAU9Cq/F,GAAOqB,iBAAiB,CACpBl8H,SAAU,CACN+7H,SAAUI,IAA+B,SAAAC,GAAO,OAAIA,EAAQ3yE,GAAG,2CAAf,KAEpDl6C,SAAU,CACNwsH,SAAUI,IAA+B,SAAAC,GAAO,OAAIA,EAAQ3yE,GAAG,sEAAf,KAEpDtnE,UAAW,CACP85I,QAAS,SAAAx4I,GACAA,EAAE4c,SACH5c,EAAEzF,YAAS,EACXyF,EAAEg4I,SAAU,EAEnB,GAELlwI,KAAM,CACF0wI,QAAS,SAAAx4I,IACD4lD,EAAAA,EAAAA,IAAW5lD,EAAE4c,UACb5c,EAAEzF,OAASyF,EAAE4c,OAAOpnB,KAAKwK,EAAEk9C,QAASl9C,EAAErL,KAAK,IAC3CqL,EAAEg4I,SAAU,EAEnB,KCvIT,IAAI98E,GAAW,SAAS33D,GACpB,OAAOA,GAAWA,EAAQ5S,IAAI,EACjC,EACM,SAASioJ,GAAiBr1I,GAC7B,OAAO23D,GAAS33D,EACnB,CCCD,IAAIiR,IAAYs/C,EAAAA,EAAAA,MACZ+kF,GAAe,uBACfC,GAAgB,+BAChBC,GAAgB,SAAA9jI,GAChBA,EAAKA,EAAG1J,cACR,IAAIhR,EAAS,CAAC,EACVsxB,EAAUgtH,GAAa9yI,KAAKkP,IAAOA,EAAG9c,QAAQ,cAAgB,GAAK2gJ,GAAc/yI,KAAKkP,IAAO,GAC7F+jI,EAAcntH,EAAQ,GACtBotH,EAAiBptH,EAAQ,GAyB7B,MAxBI,WAAamtH,IACbz+I,EAAOnI,QAAS,EACZ6iB,EAAG9c,QAAQ,WAAa,GAAK8c,EAAG9c,QAAQ,UAAY,GACpD6gJ,EAAc,SAEdC,GADAA,EAAiB,+BAA+BlzI,KAAKkP,KAClBgkI,EAAe,IAC3ChkI,EAAG9c,QAAQ,UAAY,GAC9B6gJ,EAAc,UAEdC,GADAA,EAAiB,oBAAoBlzI,KAAKkP,KACPgkI,EAAe,IAC3ChkI,EAAG9c,QAAQ,WAAa,GAAK,oBAAoBgV,KAAK8H,IAC7D+jI,EAAc,SAEdC,GADAA,EAAiB,mCAAmClzI,KAAKkP,KACtBgkI,EAAe,KAElDD,EAAc,UAEdC,GADAA,EAAiB,yBAAyBlzI,KAAKkP,KACZgkI,EAAe,KAGtDD,IACAz+I,EAAOy+I,IAAe,EACtBz+I,EAAO+wE,QAAU2tE,GAEd1+I,CACV,EACD,IAAeiiD,EAAAA,GAAAA,GAAO,CAClB2xB,QAAS4qE,IACVA,GAAcvkI,GAAUm3B,YC3CpB,SAASlF,GAAQ3hC,EAAGC,EAAGm0I,GAC1B,SAASC,EAAalkJ,GAClB,MAAI,kBAAoBA,EACbA,EAAMmE,MAAM,KAEnB,kBAAoBnE,EACb,CAACA,GAELA,CACV,CACD6P,EAAIq0I,EAAar0I,GACjBC,EAAIo0I,EAAap0I,GACjB,IAAIrN,EAAS4I,KAAKkuB,IAAI1pB,EAAEpN,OAAQqN,EAAErN,QAC9BwwD,SAASgxF,KACTxhJ,EAAS4I,KAAKsZ,IAAIliB,EAAQwhJ,IAE9B,IAAK,IAAIx5I,EAAI,EAAGA,EAAIhI,EAAQgI,IAAK,CAC7B,IAAI05I,EAAQvqH,SAAS/pB,EAAEpF,IAAM,EAAG,IAC5B25I,EAAQxqH,SAAS9pB,EAAErF,IAAM,EAAG,IAChC,GAAI05I,EAAQC,EACR,OAAQ,EAEZ,GAAID,EAAQC,EACR,OAAO,CAEd,CACD,OAAO,CACV,CCnBD,IAAIC,GAAsB,eACtBC,GAAyB,uBACzBC,GAAkB,4BACXC,GAAS,SAAS1oF,GACzBA,EAAW+W,GAAE/W,GACb,IAAI2oF,EAAYC,GAAa5oF,GAC7B,MAAO,CACHp1B,KAAM+9G,EAAU50I,EAChB02B,IAAKk+G,EAAU30I,EAEtB,EAED,SAAS60I,GAAe3kJ,GACpB,MAAO,YAAamH,EAAAA,EAAAA,IAAKnH,IAAU,MAAQA,EAAMA,EAAMyC,OAAS,EACnE,CAED,SAASmiJ,GAAe9oF,EAAU2oF,GAC1B3oF,EAASr5D,QACTy/D,EAAYpG,EAASpgE,IAAI,GAAI2oJ,GAAqBI,EAEzD,CACM,IAAII,GAAa,SAAS/oF,GACzBA,EAASr5D,QACT6jE,EAAWxK,EAASpgE,IAAI,GAAI2oJ,GAEnC,EACUS,GAAkB,SAASL,GAKlC,OAJAA,EAAU50I,EAAI40I,EAAU50I,GAAK,EAC7B40I,EAAU30I,EAAI20I,EAAU30I,GAAK,EAGtB,cAFY60I,GAAeF,EAAU50I,GAAK40I,EAAU50I,EAAI40I,EAAU50I,EAAI,MAExC,MADlB80I,GAAeF,EAAU30I,GAAK20I,EAAU30I,EAAI20I,EAAU30I,EAAI,MAClB,GAC9D,EACU40I,GAAe,SAAS5oF,GAC/B,IAAIx2D,EAASw2D,EAASr5D,OAASy/D,EAAYpG,EAASpgE,IAAI,GAAI2oJ,IAAuB,KACnF,IAAK/+I,EAAQ,CACT,IAIIy/I,GAJiBjpF,EAAS10B,IAAI,cAAgB09G,GAAgB,CAC9Dj1I,EAAG,EACHC,EAAG,KAEqBiB,MAAMuzI,IAC9BU,EAAOD,GAAUA,EAAO,GACxBA,GACAA,EAASA,EAAO,GAAG5gJ,MAAM,KACrB,OAAS6gJ,EACTD,EAASA,EAAOl+I,MAAM,GAAI,KAE1Bk+I,EAAO7iJ,KAAK,GACZ6iJ,EAASA,EAAOl+I,MAAM,EAAG,KAG7Bk+I,EAAS,CAAC,EAAG,EAAG,GAOpBH,GAAe9oF,EALfx2D,EAAS,CACLuK,EAAGoqB,WAAW8qH,EAAO,IACrBj1I,EAAGmqB,WAAW8qH,EAAO,IACrBh1I,EAAGkqB,WAAW8qH,EAAO,KAG5B,CACD,OAAOz/I,CACV,EACU2/I,GAAO,SAASnpF,EAAUxvD,GACjCwvD,EAAW+W,GAAE/W,GACb,IAEI2oF,EAFA/9G,EAAOp6B,EAASo6B,KAChBH,EAAMj6B,EAASi6B,SAEf,IAAWG,GACX+9G,EAAYC,GAAa5oF,IACfhsD,EAAIy2B,GAAO,OACd,IAAWA,GAClBk+G,EAAYC,GAAa5oF,IACfjsD,EAAI62B,GAAQ,EAOtBk+G,GAAe9oF,EALf2oF,EAAY,CACR50I,EAAG62B,GAAQ,EACX52B,EAAGy2B,GAAO,EACVx2B,EAAG,IAIX+rD,EAAS10B,IAAI,CACTtI,UAAWgmH,GAAgBL,MAE3BE,GAAej+G,IAASi+G,GAAep+G,KACvCs+G,GAAW/oF,EAElB,EACUopF,GAAgB,SAASppF,EAAUqpF,GAE1C,IAAIC,EADJtpF,EAAW+W,GAAE/W,GAEb,IAAIupF,EAAe,CACf3+G,KAAM,EACNH,IAAK,EACLzH,UAAW,QAEXqmH,IACAC,EAAqBtpF,EAAS10B,IAAI,cAClCi+G,EAAazyH,WAAa,QAE9BkpC,EAAS10B,IAAIi+G,GACbR,GAAW/oF,GACPqpF,IACArpF,EAASpgE,IAAI,GAAGkvE,aAChB9O,EAAS10B,IAAI,aAAcg+G,GAElC,ECrGD,GAZmB,SAAfE,EAAgBC,EAAYtiF,GAC5B,IAAKA,EACD,MAAM7hD,GAAAA,EAAAA,MAAa,SAEvB,OAAIza,MAAMC,QAAQ2+I,GACPA,EAAW1/I,KAAI,SAAAvF,GAAS,OAAIglJ,EAAahlJ,EAAW2iE,EAA5B,IAAwC10D,KAAK,MAE3E,IAAMg3I,EAAWriJ,QAAQ,KACnBoiJ,EAAaC,EAAWphJ,MAAM,QAAS8+D,GAE3C,GAAGlxD,OAAOwzI,EAAY,KAAKxzI,OAAOkxD,EAC5C,ECVGuiF,GAAc,SAASl3I,EAASg0C,GAChC,IAoBJ,SAAiBh0C,GACb,IAAIwtD,EAAW+W,GAAEvkE,GACjB,OAAOwtD,EAASiV,GAAG,aAAe,WAAajV,EAAS10B,IAAI,eAAiB,WAAa00B,EAASqF,UAAU/5B,IAAI,aACpH,CAvBQub,CAAQr0C,GACT,OAAO,EAEX,IAAIotC,EAAWptC,EAAQotC,SAASplC,cAC5BmvI,GAAoBhoF,MAAMnb,GAC1BojG,EAAap3I,EAAQgZ,SACrBq+H,EAAiB,iDAAiDztI,KAAKwjC,GACvEkqG,EAAc,MAAQlqG,EAEtB5kB,EAAoBxoB,EAAQwoB,kBAQhC,OAPI6uH,GAAkB7uH,GACH4uH,EACRE,GACOt3I,EAAQqvF,MAER8nD,CAGrB,EAMM,IAAI1xH,GAAY,SAAS9wB,EAAOqL,GACnC,OAAOk3I,GAAYl3I,EAASukE,GAAEvkE,GAAS0hE,KAAK,YAC/C,EACU61E,GAAW,SAAS5iJ,EAAOqL,GAClC,IAAIg0C,EAAWuwB,GAAEvkE,GAAS0hE,KAAK,YAC/B,OAAQvS,MAAMnb,IAAaA,GAAY,IAAMkjG,GAAYl3I,EAASg0C,EACrE,EACU3Y,GAAU,SAASmyB,GAC1B,IAAIxtD,EAAUukE,GAAE/W,GAAUpgE,IAAI,GAC9B,OAAOijE,EAAAA,EAAAA,iBAA4BrwD,KAAaA,CACnD,ECzBGw3I,GAAU,CACVC,UAAW,YACXC,IAAK,MACLC,MAAO,QACPriJ,OAAQ,SACRsiJ,OAAQ,SACRC,SAAU,WACVn6I,IAAK,MACLo6I,KAAM,OACNC,UAAW,YACXC,QAAS,UACTC,WAAY,aACZC,UAAW,YACX7+I,OAAQ,MACR,IAAK,QACLie,EAAG,IACH/D,EAAG,IACH,IAAK,WACL,IAAK,QACL4kI,IAAK,MACLC,QAAS,UACT1sH,MAAO,SAEP2sH,GAAmB,CACnB,EAAG,YACH,EAAG,MACH,GAAI,QACJ,GAAI,SACJ,GAAI,SACJ,GAAI,WACJ,GAAI,MACJ,GAAI,OACJ,GAAI,YACJ,GAAI,UACJ,GAAI,aACJ,GAAI,YACJ,GAAI,MACJ,GAAI,QACJ,GAAI,IACJ,GAAI,IACJ,IAAK,WACL,IAAK,QACL,IAAK,QACL,IAAK,QACL,GAAI,QACJ,GAAI,UACJ,GAAI,OAEJC,GAAsB,CACtBC,GAAI,OACJC,MAAO,iBACPC,MAAO,UACPC,SAAU,QACVC,QAAS,kBAETC,GAAY,SAAAn8I,GAAC,OAAIA,CAAJ,EAEbo8I,GAAY,SAAAp8I,GAAC,MAAI,OAASq8I,GAAYr8I,EAAzB,EAEbs8I,GAAqB,SAAAt8I,GAAC,MAAI,UAAYq8I,GAAYr8I,EAA5B,EACfq8I,GAAc,SAAAtuI,GACrB,IACU3R,EACN2R,EADA3R,KAEA7B,EAAS,QAOb,OANAqpD,EAAAA,EAAAA,IAAKi4F,IAAsB,SAASxiJ,GAChC,GAAItC,KAAKoW,KAAK/Q,GAEV,OADA7B,EAASlB,GACF,CAEd,IACMkB,CACV,EACUgiJ,GAAiB,SAAAv8I,GAAC,MAAI,YAAcq8I,GAAYr8I,EAA9B,EAClBw8I,GAAe,SAAAx8I,GAAC,OAhBF,SAAAA,GAAC,MAAI,UAAYq8I,GAAYr8I,EAA5B,CAgBKy8I,CAAmBz8I,KAAOu8I,GAAev8I,IAAMo8I,GAAUp8I,KAAO,UAAYA,EAAE08I,WAAlF,EAChBC,GAAsB,SAAA38I,GAAC,OAAIA,GAAK,iBAAmBA,EAAE5D,IAA9B,EACvBwgJ,GAAe,SAAA58I,GAAC,OAAIs8I,GAAmBt8I,KAAOu8I,GAAev8I,IAAMo8I,GAAUp8I,KAAO,UAAYA,EAAE08I,WAAlF,EAUhBjlF,GAAY,SAAAolF,GAMnB,MAAO,CACH/3I,EAFA+3I,EAHAtiF,MAMAx1D,EAHA83I,EAFAriF,MAMArvC,KAJA0xH,EADAxiF,UAOP,EACUyiF,GAAa,SAACv8I,EAAMguG,GAAP,MAAe,CACnCzpG,EAAGypG,EAAGzpG,EAAIvE,EAAKuE,EACfC,EAAGwpG,EAAGxpG,EAAIxE,EAAKwE,EACfomB,KAAMojF,EAAGpjF,KAAO5qB,EAAK4qB,MAAQ,EAHT,EAkBpB4xH,IAAa,EAGNC,GAAgB,SAAAh9I,GACvB,GAAI+8I,GACA,OAAO,EAEX,IACYruI,EACR1O,EADA0O,OAEAiqI,EAAU7wE,GAAEp5D,GACZqd,GAAqB,OAASrd,QAAU,IAAWA,OAAS,EAASA,EAAOqd,qBAAuB,OAASrd,QAAU,IAAWA,OAAS,EAASA,EAAOuuI,aAAa,oBACvKC,EAAkBvE,EAAQ3yE,GAAG,4BAA8Bj6C,EAC/D,OAAI4wH,GAAoB38I,KACH24I,EAAQ3yE,GAAG,aAAe2yE,EAAQtzE,SAAS,wBAC1Ct5C,KAGG4sH,EAAQ3yE,GAAG,2CAA6C2yE,EAAQ3yE,GAAG,WAGxFw2E,GAAax8I,GACNk9I,GAAmBl9I,EAAEo5D,MAAQ,EAEpCwjF,GAAa58I,GACNk9I,GAAmBt+G,GAAQ+5G,QADtC,CAGH,EAEUwE,GAAc,SAAClkF,EAAetkE,GACrC,IAAImD,EA1FQ,SAAAmhE,GAAa,OAAIkjF,GAAU7mF,EAAAA,EAAAA,MAAmB2D,EAAeA,GAAgBA,EAAhE,CA0FbmkF,CAAUnkF,GAEtB,OADAtkE,IAAQ6nD,EAAAA,GAAAA,GAAO1kD,EAAOnD,GACfmD,CACV,EACU62E,GAAY,SAAA9sE,GACnB,IACmBo3D,EAEfp3D,EAFAo3D,cACgBhB,EAChBp2D,EADAo2D,eAEAngE,EAAQqlJ,GAAYlkF,EAAep3D,GAEvC,OADAyzD,EAAAA,EAAAA,QAAqB2C,GAAkBngE,EAAM4W,OAAQ5W,GAC9CA,CACV,EACUulJ,GAAmB,SAAAC,GAC1B,IACSjkJ,EAELikJ,EAFAjkJ,IACO+/D,EACPkkF,EADAlkF,MAEAmkF,EAAgBxC,GAAQ,OAAS1hJ,QAAO,IAAWA,OAAM,EAASA,EAAIkS,gBAAkBlS,EACxFmkJ,EAAyB5B,GAAiBxiF,GAC9C,OAAIokF,GAA0BD,IAAkBlkJ,EACrCmkJ,GACCD,GAAiBnkF,EAClB54D,OAAOC,aAAa24D,GAExBmkF,CACV,EACUE,GAAU,SAAAC,GACjB,IACSrkJ,EAELqkJ,EAFArkJ,IACO+/D,EACPskF,EADAtkF,MAEJ,OAAO//D,GAAOmH,OAAOC,aAAa24D,EACrC,EACUmhF,GAAeoD,GACfC,GAAsB,SAAAC,GAC7B,IACaryH,EAETqyH,EAFAryH,QACSF,EACTuyH,EADAvyH,QAEJ,OAAOE,GAAWF,CACrB,ECzLGwyH,GAAU56F,GAAAA,EAAAA,QAAc,CACxBpJ,KAAM,SAASv2C,GACXxM,KAAKgnJ,UAAYj2E,GAAEvkE,GACnBxM,KAAKinJ,iBAAkBr6F,EAAAA,GAAAA,KACvB5sD,KAAKknJ,iBAAkBt6F,EAAAA,GAAAA,IAC1B,EACDu6F,WAAY,WACR,OAAOnnJ,KAAKgnJ,SACf,EACDzF,SAAU,SAASt4I,GACf,OAAQ28I,GAAoB38I,EAC/B,EACDm+I,iBAAkB,SAASn+I,GACvB,OAAO,IDwFS,SAAAA,GACpB,IACmBi5D,EAEfj5D,EAFAi5D,cACUmlF,EACVp+I,EADAo+I,SAEJ,OAAI9B,GAAmBt8I,IACXi5D,EAAcwB,SAAW,IAAI/iE,OAErC0kJ,GAAUp8I,IACFo+I,GAAY,IAAI1mJ,OAErB,CACV,CCpGoB2mJ,CAAWr+I,EAC3B,EACDs+I,8BAA+B,WAC3B,OAAO,CACV,EACDz0H,UAAW,SAASx4B,IAChBmrD,EAAAA,GAAAA,GAAOzlD,KAAM1F,EAChB,EACDktJ,kBAAmB,SAASjqJ,GACxByC,KAAKinJ,gBAAgBl5G,IAAIxwC,EAC5B,EACDkqJ,qBAAsB,WAClBznJ,KAAKinJ,gBAAgBn5F,OACxB,EACD45F,QAAS,SAASz+I,GACdjJ,KAAKinJ,gBAAgBl6F,KAAK/sD,KAAMiJ,EACnC,EACD0+I,kBAAmB,SAASpqJ,GACxByC,KAAKknJ,gBAAgBn5G,IAAIxwC,EAC5B,EACDqqJ,qBAAsB,WAClB5nJ,KAAKknJ,gBAAgBp5F,OACxB,EACD4gF,QAAS,SAASzlI,GACdjJ,KAAKknJ,gBAAgBn6F,KAAK/sD,KAAMiJ,EACnC,EACD4+I,eAAgB,SAAS5+I,GACrBjJ,KAAK8nJ,oBAAsB7+I,CAC9B,EACD8+I,cAAe,WACX/nJ,KAAK0uI,QAAQ1uI,KAAK8nJ,qBAClB9nJ,KAAK8nJ,oBAAsB,IAC9B,EACDvrH,MAAOza,GAAAA,KACPqhI,KAAMrhI,GAAAA,KACN5X,IAAK4X,GAAAA,KACLk/B,OAAQl/B,GAAAA,KACR0kB,MAAO,WACCxmC,KAAK8nJ,qBACL9nJ,KAAK0uI,QAAQ1uI,KAAK8nJ,oBAEzB,EACDE,WAAY,SAASxpJ,EAAWyK,EAAG3E,GAC/B,IAAIo8D,GAAYjb,EAAAA,GAAAA,GAAO,CACnBpgD,KAAM7G,EACN0jE,cAAej5D,EACf0O,OAAQ3X,KAAKioJ,kBAAkBh/I,GAC/Bi4D,eAAgBlhE,KAAKmnJ,aAAavtJ,IAAI,IACvC0K,GAKH,OAJA2E,EAAI2uE,GAAUlX,IACR1f,QACFhhD,KAAK0nJ,QAAQz+I,GAEVA,CACV,EACDg/I,kBAAmB,SAASh/I,GACxB,OAAQjJ,KAAKkoJ,iBAAmBn3E,GAAE9nE,EAAE0O,QAAQm4D,QAAQ9vE,KAAKkoJ,kBAAoBloJ,KAAKmnJ,cAAcvtJ,IAAI,EACvG,EACD2yC,QAASzqB,GAAAA,OAEb,MC3EIqxD,GAAQlB,GAAAA,IAmBR3oE,GAAMC,KAAKD,IAIX6+I,GAAiB,GAMjBC,IAAkBjnG,EAAAA,EAAAA,IAAU,WAC5B,IAAI+zB,EAAY,YAAc8C,GAAAA,OAAe1D,WAC7C,IAJOrO,EAAU,oBAIeiP,EAC5B,OAAOpzD,GAAAA,KAEX,IAAIumI,EAASt3E,GAAE,SAAS3C,SAAS,oBAAoB9oC,IAAI,gBAAiB,QAO1E,OANAi5B,EAAAA,EAAAA,gBAA6B8pF,EAAQ,gBAAiB,SAASp/I,GAC3DA,EAAEkzD,gBACL,IACDgX,IAAO,WACHk1E,EAAO15E,SAAS,OACnB,IACM,SAASZ,EAAQn5D,GACpByzI,EAAO/iH,IAAI,gBAAiByoC,EAAS,MAAQ,QAC7CA,GAAUs6E,EAAO/iH,IAAI,SAAU1wB,EAClC,CACJ,IAKG0zI,GAAiBvB,GAAAA,QAAgB,CACjCwB,SAAS,EACTz1H,UAAW,SAASx4B,GAChB0F,KAAKmnJ,aAAa7hH,IAAI,gBAAiBhrC,EAAKkuJ,UAAY,aAAe,IACvExoJ,KAAKmiD,SAAS7nD,EACjB,EACDitJ,8BAA+B,WAC3B,OAnCM,IAmCCvnJ,KAAKyoJ,MACf,EACDC,aAAc,WACV,OAAO1oJ,KAAK4mB,SACf,EACD8gI,QAAS,WACL1nJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK2oJ,qBAAoB,GACzB3oJ,KAAKyoJ,OA7CD,CA8CP,EACDlsH,MAAO,SAAStzB,GACRA,EAAE2/I,gBAAkB3C,GAAch9I,GAClCjJ,KAAK0nJ,QAAQz+I,IAGjBjJ,KAAK6oJ,YAAczC,GAAYn9I,GAC/BjJ,KAAK8oJ,gBAAkBpoF,GAAUz3D,GACjCjJ,KAAKyoJ,OArDA,EAsDLzoJ,KAAKujG,MAAMt6F,GACXjJ,KAAK+oJ,uBACR,EACDA,qBAAsB,WAClB,IAAIC,EACJ1zH,aAAat1B,KAAKipJ,iBAClBjpJ,KAAKkpJ,oBAAqB,EACrBlpJ,KAAKwoJ,YAGN,IAAMxoJ,KAAKmpJ,iBAIfnpJ,KAAKipJ,gBAAkB1zH,WAAW,WAC9Bv1B,KAAKkpJ,oBAAqB,CAC7B,EAACpsJ,KAAKkD,MAAO,QAAUgpJ,EAAwBhpJ,KAAKmpJ,wBAAqB,IAAWH,EAAwBA,EAlE7F,KA6DZhpJ,KAAKkpJ,oBAAqB,EAMjC,EACD/F,KAAM,SAASl6I,GACX,GAzEK,IAyEDjJ,KAAKyoJ,QAAqBzoJ,KAAKopJ,oBAAoBngJ,GAAI,CAOvD,GANAjJ,KAAKyoJ,OAzEH,EA0EFzoJ,KAAKqpJ,sBACLrpJ,KAAK2oJ,qBAAoB,GACzB3oJ,KAAKspJ,gBAAgBrgJ,GACrBjJ,KAAKupJ,kBAAkBtgJ,GACvBjJ,KAAKwpJ,OAAOxpJ,KAAK6oJ,aAhFjB,IAiFI7oJ,KAAKyoJ,OACL,OAEJzoJ,KAAK6nJ,eAAe5+I,GACpBjJ,KAAKypJ,MAAMxgJ,GACXjJ,KAAK+nJ,eACR,MArFK,IAqFK/nJ,KAAKyoJ,SACZzoJ,KAAKspJ,gBAAgBrgJ,GACrBjJ,KAAKypJ,MAAMxgJ,GAElB,EACDmgJ,oBAAqB,SAASngJ,GAC1B,IAAIygJ,EAAgB1pJ,KAAK2pJ,kBAAkB1gJ,GACvCg4E,EAAQ8kE,GAAW/lJ,KAAK8oJ,gBAAiBpoF,GAAUz3D,IACnD2gJ,EAAStgJ,GAAI23E,EAAMlzE,GACnB87I,EAASvgJ,GAAI23E,EAAMjzE,GACnB87I,EAAiB9pJ,KAAK+pJ,cAAcL,EAAeE,EAAQC,GAC3DG,EAAehqJ,KAAK+pJ,cAAcL,EAAeG,EAAQD,GACzDhjI,EAAY5mB,KAAK0oJ,aAAaz/I,GAIlC,MAHmB,SAAW2d,IAAckjI,GAAkBE,IACrC,eAAiBpjI,GAAakjI,GAChC,aAAeljI,GAAaojI,GACchqJ,KAAKkpJ,kBACzE,EACDa,cAAe,SAASL,EAAeO,EAAUC,GAC7C,OAAOD,GAAYA,GAAYP,KAAkB1pJ,KAAKwoJ,WAAYyB,GAAYC,EACjF,EACDP,kBAAmB,SAAS1gJ,GACxB,OAAOjJ,KAAKwoJ,WAAa5C,GAAoB38I,GAzGtB,EAyGsDk/I,EAChF,EACDoB,kBAAmB,SAAStgJ,GACxB,IAAIygJ,EAAgB1pJ,KAAK2pJ,kBAAkB1gJ,GACvCg4E,EAAQ8kE,GAAW/lJ,KAAK8oJ,gBAAiBpoF,GAAUz3D,IACvDjJ,KAAK6oJ,YAAYrlF,OAAS5S,GAAKqwB,EAAMlzE,GAAK27I,EAC1C1pJ,KAAK6oJ,YAAYplF,OAAS7S,GAAKqwB,EAAMjzE,GAAK07I,CAC7C,EACDL,oBAAqB,WACb,QAAUrxE,GAAAA,OAAev+E,UAAYuG,KAAKmnJ,aAAanrJ,KAAK,UAAU2E,QACtE23E,IAEP,EACDqwE,oBAAqB,SAAS56E,GAC1B/tE,KAAKmqJ,wBAAwBp8E,EAChC,EACDo8E,wBAAyB,SAASp8E,GA3HxB,IA4HU/tE,KAAKyoJ,QApGV,SAAS16E,EAAQn5D,GACLwzI,IAC3BgC,CAAqBr8E,EAAQn5D,EAChC,CAmGWy1I,CAAat8E,EAAQ/tE,KAAKmnJ,aAAa7hH,IAAI,UAElD,EACDgkH,gBAAiB,SAASrgJ,GAClB28I,GAAoB38I,IAAM48I,GAAa58I,I/GpIvB,WACxB,IAAIo/C,EAAYpuD,GAAOmuD,eACvB,GAAKC,GAGD,UAAYA,EAAUhjD,KAG1B,GAAIgjD,EAAUyF,MACVzF,EAAUyF,aACP,GAAIzF,EAAUiiG,gBACjB,IACIjiG,EAAUiiG,iBACA,CAAZ,MAAOrhJ,GAAK,CAErB,C+GwHOshJ,EACH,EACDrgJ,IAAK,SAASjB,GACVjJ,KAAK2oJ,qBAAoB,GAxInB,IAyIF3oJ,KAAKyoJ,OACLzoJ,KAAKwqJ,KAAKvhJ,GA3IT,IA4IMjJ,KAAKyoJ,QACZzoJ,KAAKyqJ,MAAMxhJ,GAEfjJ,KAAKyoJ,OAhJD,CAiJP,EACDl8G,QAAS,WACLjX,aAAat1B,KAAKipJ,iBAClBjpJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK2oJ,qBAAoB,EAC5B,EACDplD,MAAOzhF,GAAAA,KACP0nI,OAAQ1nI,GAAAA,KACR2nI,MAAO3nI,GAAAA,KACP2oI,MAAO3oI,GAAAA,KACP0oI,KAAM1oI,GAAAA,OAEVwmI,GAAeoC,qBAAuBvC,GACtCG,GAAeoB,cAAgB,SAASiB,GACpC,KAAIt8F,EAAAA,EAAAA,IAAUs8F,GAId,OAAOxC,GAHHA,GAAiBwC,CAIxB,EACD,UCzLoBr1E,IAChBvY,EAAAA,EAAAA,MADAuY,eAEAs1E,GAA0B,CAC1BC,iBAAkB,sBAClBC,cAAe,gBACfC,YAAa,iBACbj6H,WAAY,iBAEZk6H,GAAc,SAASnuJ,GACvB,QAASopE,EAAUppE,EACtB,EASGouJ,GAAY,SAAS5lJ,GACrB,GAAI,SAAWA,EACX,OAAO,EAEX,IAAImV,EAAQqiD,EAAAA,EAAAA,cAAyB,SACrC,IAGI,OAFAriD,EAAMlS,aAAa,OAAQjD,GAC3BmV,EAAMtc,MAAQ,cACNsc,EAAMtc,KAGjB,CAFC,MAAO+K,GACL,OAAO,CACV,CACJ,EAOGiiJ,GANoB,SAASC,EAAmB71E,GAChD,OAAQ61E,EAAkB,mBAAqB71E,KAAoB61E,EAAkB,cACxF,CAIiBC,CAAkB3uF,EAAAA,GAAa6Y,IAC7Cza,IAAgBwwF,EAAmB5uF,EAAAA,IAHV,gBAalBwoF,GAAQiG,IAAerwF,MATLya,GAUlBxkD,IAAaqwB,EAAAA,EAAAA,IAAU,WAC9B,OAAO6pG,GAAY,aACtB,IACUM,IAAyBnqG,EAAAA,EAAAA,IAAU,WAC1C,OAAOypG,GAAwB3kF,EAAU,cAC5C,IACUslF,IAAYpqG,EAAAA,EAAAA,IAAU,WAC7B,OAAO6pG,GAAY,YACtB,IACUQ,GAhDsB,WAC7B,IAAI,EAGAxzE,GAAAA,OAFUv+E,EADd,EACIA,SACK07E,EAFT,EAEIL,IAGJ,MAD2B,QAAUr7E,GAAY,YAAcA,GAAY07E,CAE9E,CAyC4Bs2E,GC9DzBC,GAA2B,kBAkF/B,GAjFmBv/F,GAAAA,EAAAA,QAAc,CAC7BpJ,KAAM,SAASvkD,EAAWmtJ,GACtB3rJ,KAAK4rJ,WAAaptJ,EAClBwB,KAAK6rJ,gBAAkBrI,GAAamI,EAAgBD,IACpD1rJ,KAAK8rJ,cAAgB,EACrB9rJ,KAAKywE,SAAWzwE,KAAK+rJ,aACxB,EACDA,YAAa,WACT,IAAIvtJ,EAAYwB,KAAK4rJ,WACrB,MAAO,mBAAqBptJ,GAAa,mBAAqBA,CACjE,EACDwtJ,SAAU,SAAS/iJ,GACf,IAAIgjJ,EACA/qF,EAAiBlhE,KAAKksJ,mBAAmBjjJ,GACzClI,EAAQ,CACRsE,KAAMrF,KAAK4rJ,WACXjG,YAAa18I,EAAE08I,aAAeL,GAAYr8I,GAC1Ci5D,cAAej5D,EACfi4D,eAAgBA,EAChBoC,UAAWxlD,GAAQquI,SAAW,IAAIrpJ,MAAM4yD,UAAYzsD,EAAEq6D,WAEtDpB,EAAgBj5D,EAAEi5D,cACtB,GAAI,OAASA,QAAiB,IAAWA,GAAiB,QAAU+pF,EAAwB/pF,EAAcvqD,cAAW,IAAWs0I,GAAyBA,EAAsBG,WAAY,CACvL,IAAIC,EAAqBC,EACrB3pJ,EAAO,QAAU0pJ,EAAsBnqF,EAAcv/D,YAAS,IAAW0pJ,EAAsBA,EAAsB,QAAUC,EAAwBpqF,EAAcqqF,oBAAiB,IAAWD,OAAwB,EAASA,EAAsB7tJ,KAAKyjE,GACjQnhE,EAAM4W,OAAShV,EAAK,EACvB,CACD,OAAO3C,KAAKgoJ,WAAWjnJ,EAC1B,EACDmrJ,mBAAoB,SAASjjJ,GACzB,IAAIi4D,EAIJ,OAHIlhE,KAAKywE,WACLvP,EAAiBj4D,EAAEi4D,gBAEhBA,CACV,EACD8mF,WAAY,SAASpqJ,GACjB,OAAOg6E,GAAUh6E,EACpB,EACD4uJ,aAAc,SAASC,GACnBzsJ,KAAK0sJ,UAAY1sJ,KAAKywE,UAAYg8E,EAAYA,EAAUv8I,SAAW,IACtE,EACDy8I,aAAc,WACV,OAAO3sJ,KAAK0sJ,SACf,EACD17E,MAAO,WACH,OAAO,CACV,EACDjjC,IAAK,SAASvhC,EAASigJ,GACnB,GAAIzsJ,KAAK8rJ,eAAiB,GAAK9rJ,KAAKywE,SAAU,CAC1CjkE,EAAUxM,KAAKywE,SAAWjkE,EAAUqwD,EAAAA,EAAAA,cACpC78D,KAAKwsJ,aAAaC,GAClB,IAAIh9F,EAAOzvD,KACXu+D,EAAAA,EAAAA,GAAgB/xD,EAASxM,KAAK6rJ,gBAAiB7rJ,KAAK2sJ,gBAAiB,SAAS1jJ,GAC1EwmD,EAAKu8F,SAAS/iJ,EACjB,GACJ,CACIjJ,KAAKywE,UACNzwE,KAAK8rJ,eAEZ,EACDpuJ,OAAQ,SAAS+uJ,GACbzsJ,KAAKwsJ,aAAaC,GACbzsJ,KAAKywE,UACNzwE,KAAK8rJ,eAEZ,EACDc,SAAU,SAASpgJ,GACXxM,KAAK8rJ,gBAAkB9rJ,KAAKywE,WAGhCjkE,EAAUxM,KAAKywE,SAAWjkE,EAAUqwD,EAAAA,EAAAA,cACP,qBAAzB78D,KAAK6rJ,iBACLttF,EAAAA,EAAAA,IAAiB/xD,EAASxM,KAAK6rJ,gBAAiB7rJ,KAAK2sJ,gBAE5D,EACDpgH,QAAS,SAAS//B,GACdA,EAAUxM,KAAKywE,SAAWjkE,EAAUqwD,EAAAA,EAAAA,cACpC0B,EAAAA,EAAAA,IAAiB/xD,EAASxM,KAAK6rJ,gBAClC,ICvEDgB,GAAsB,SAAS5jJ,GAC/B,IAAIo+I,EAAW,GAMf,OALAx6F,EAAAA,EAAAA,IAAK5jD,EAAEy6D,SAAU,SAAS5kE,EAAGmmJ,GACzBoC,EAASjnJ,MAAKqlD,EAAAA,GAAAA,GAAO,CACjBqnG,UAAW7H,EAAMl5I,YAClBk5I,GACN,IACM,CACHoC,SAAUA,EACVyF,UAAW7jJ,EAAE06D,eAAe,GAAG53D,WAEtC,EACGghJ,GAA8B,SAASC,GACvC,MAAO,QAAUh1E,GAAAA,OAAev+E,WAAa,kBAAoBuzJ,GAAgB,gBAAkBA,EACtG,EACGC,GAAgBC,GAAAA,QAAqB,CACrCnqG,KAAM,WACF/iD,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKmtJ,WAAa,CACrB,EACDnB,SAAU,SAAS/iJ,GACf,GAAI8jJ,GAA4B/sJ,KAAK4rJ,YAAa,CAC9C,IAAI3G,EAAQh8I,EAAE06D,eAAe,GAC7B,GAAI3jE,KAAKmtJ,aAAelI,EAAMl5I,YAAc,IAAM/L,KAAKmtJ,WACnD,OAEJntJ,KAAKmtJ,WAAalI,EAAMl5I,UAC3B,CACD,OAAO/L,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UACpC,EACDkwI,WAAY,SAASpqJ,GACjB,OAAOoC,KAAKmiD,UAASsD,EAAAA,GAAAA,GAAOonG,GAAoBjvJ,EAAKskE,eAAgBtkE,GACxE,IAELqvJ,GAAclpJ,IA5CC,CACXqpJ,cAAe,aACfC,cAAe,YACfC,YAAa,WACbC,gBAAiB,cACjBC,cAAe,GACfC,aAAc,GACdC,eAAgB,GAChBC,eAAgB,IAqCpBV,GAAcl3F,UAAY82F,GAC1B,IChCInrI,GDgCJ,MEjDIksI,GAAoB,SAAS7jH,EAAQjpC,GACrCmxE,GAAAA,KAAoB,WAChBloC,EAAO1nC,MAAM,KAAK3B,SAAS,SAASK,GAChC87D,EAAAA,EAAAA,OAAkBA,EAAAA,EAAAA,cAA0B97D,EAAOD,GAAS,EAC/D,GACJ,GACJ,EAuCD,GAtCe,SAAS+sJ,EAAUC,EAAeC,GAC7CA,EAAkBA,GAAmB,WAAa,EAClD,IAAI1G,EAAW,GACX2G,EAAkB,SAAS/kJ,GAC3B,IAAI9H,GAAS,EAQb,OAPA0rD,EAAAA,EAAAA,IAAKw6F,GAAW,SAAS1+I,EAAGw8I,GACxB,OAAK2I,EAAc7kJ,EAAGk8I,KAGtBhkJ,EAAQwH,GACD,EACV,IACMxH,CACV,EACG8sJ,EAAgB,SAAShlJ,GACzB,IAAI9H,EAAQ6sJ,EAAgB/kJ,GACxB9H,GAAS,GACTkmJ,EAAShmJ,OAAOF,EAAO,EAE9B,EACDysJ,GAAkBC,EAAST,eAAgB,SAASnkJ,IAC3C,IAAM+kJ,EAAgB/kJ,KACvB8kJ,EAAgB9kJ,GAChBo+I,EAASjnJ,KAAK6I,GAErB,IACD2kJ,GAAkBC,EAASR,eAAgB,SAASpkJ,GAChDo+I,EAAS2G,EAAgB/kJ,IAAMA,CAClC,IACD2kJ,GAAkBC,EAASP,YAAaW,GACxCL,GAAkBC,EAASN,gBAAiBU,GAC5CjuJ,KAAKqnJ,SAAW,WACZ,OAAOA,CACV,EACDrnJ,KAAKwmC,MAAQ,WACT6gH,EAAW,EACd,CACJ,ED5CGwG,GAAW,CACXT,cAAe,YACfC,cAAe,YACfC,YAAa,UACbC,gBAAiB,GACjBC,cAAe,YACfC,aAAc,WACdC,eAAgB,aAChBC,eAAgB,cAEhBO,GAAsB,SAASjlJ,GAE/B,OADAA,EAAE6jJ,UAAY,EACP,CACHzF,SAAU3lI,GAAS2lI,WACnByF,UAAW,EAElB,EAEGqB,IAAY,EACZC,GAAmB,WACfD,KAGJzsI,GAAW,IAAI2sI,GAASR,IAAW,WAC/B,OAAO,CACV,IACDM,IAAY,EACf,EACGG,GAAgBpB,GAAAA,QAAqB,CACrCnqG,KAAM,WACF/iD,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1Bs2I,IACH,EACDpG,WAAY,SAASpqJ,GACjB,OAAOoC,KAAKmiD,UAASsD,EAAAA,GAAAA,GAAOyoG,GAAoBtwJ,EAAKskE,eAAgBtkE,GACxE,IAEL0wJ,GAAcvqJ,IAAM8pJ,GACpBS,GAAcv4F,UAAYm4F,GAC1BI,GAAcC,SAAWH,GACzBE,GAAcE,cAAgB,WAC1B9sI,GAAS8kB,OACZ,EACD,UE7BI2nH,IAAY,EACZC,GAAmB,WACfD,KAGJG,GAAAA,WACAH,IAAY,EACf,EACGM,GAAwBvB,GAAAA,QAAqB,CAC7CwB,mBAAoB,IACpB3rG,KAAM,WACF/iD,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1Bs2I,IACH,EACDpC,SAAU,SAAS/iJ,GACf,IAAI0lJ,EAAUlJ,GAAax8I,GAI3B,GAHK0lJ,IACD3uJ,KAAK4uJ,iBAAkB,IAEvBD,IAAW3uJ,KAAK6uJ,aAApB,CAGA,IAAIF,IAAW3uJ,KAAK4uJ,gBAUpB,OAAO5uJ,KAAKmiD,SAASl5C,GATjBjJ,KAAK4uJ,iBAAkB,EACvB5uJ,KAAK6uJ,cAAe,EACpBv5H,aAAat1B,KAAK8uJ,mBAClB,IAAIr/F,EAAOzvD,KACXA,KAAK8uJ,kBAAoBv5H,YAAY,WACjCk6B,EAAKo/F,cAAe,CACvB,GAAG7uJ,KAAK0uJ,mBARZ,CAYJ,EACD1G,WAAY,SAASpqJ,GACjB,IAAImxJ,EAAatJ,GAAa7nJ,EAAKskE,eAAiBosF,GAAAA,UAA0BrB,GAAAA,UAC9E,OAAOjtJ,KAAKmiD,UAASsD,EAAAA,GAAAA,GAAOspG,EAAWnxJ,EAAKskE,eAAgBtkE,GAC/D,EACD2uC,QAAS,WACLvsC,KAAKmiD,WACLniD,KAAK4uJ,iBAAkB,EACvB5uJ,KAAK6uJ,cAAe,EACpBv5H,aAAat1B,KAAK8uJ,kBACrB,IAELL,GAAsB1qJ,IAvDP,CACXqpJ,cAAe,uBACfC,cAAe,sBACfC,YAAa,mBACbC,gBAAiB,cACjBC,cAAe,YACfC,aAAc,WACdC,eAAgB,aAChBC,eAAgB,cAgDpBc,GAAsBD,cAAgBF,GAAAA,cACtC,UC5CIU,GAbc,SAACC,EAASv4E,GACxB,IACYjC,EAERiC,EAFAjC,OACOD,EACPkC,EADAlC,MAEJ,OAAIy6E,EAAQhK,OAAWxwE,GAAUD,EAG7By6E,EAAQhK,MACDgI,GAEJqB,GALIG,EAMd,CACmBS,CAAYD,EAASj3E,GAAAA,SACzCnrB,EAAAA,EAAAA,IAAKmiG,GAAcjrJ,KAAK,SAACipJ,EAAcrB,GACnCn7E,GAAcw8E,EAAc,IAAIgC,GAAchC,EAAcrB,GAC/D,IACD,IAUA,GAVc,CACVtvH,KAAM,gBACNxX,GAAI,cACJs+H,KAAM,gBACNniG,OAAQ,kBACRmjG,MAAO,iBACPgL,MAAO,iBACPC,KAAM,gBACNz1I,IAAK,gBC3BL01I,GAAa,eACbC,GAAkB,UAIlBC,GAAQ,CACRv+E,MAAO,SAASxkE,GACZ,IAAIwtD,EAAW+W,GAAEvkE,GACjB+xD,EAAAA,EAAAA,GAAgBvE,EAAUwpF,GANV,QAM0C8L,IAAkBC,GAAMC,cAAc1yJ,KAAKyyJ,IACxG,EACD3C,SAAU,SAASpgJ,GACf+xD,EAAAA,EAAAA,IAAiB/xD,EAAS,IAAIyD,OAAOq/I,IACxC,EACDE,cAAe,SAASvmJ,GACpB,IAAI,EAKAA,EAAEi5D,cAJSutF,EADf,EACIA,UACQ5F,EAFZ,EAEIA,OACQD,EAHZ,EAGIA,OACQ8F,EAJZ,EAIIA,OAEJ93E,GAAU,CACNvyE,KAAMgqJ,GACNntF,cAAej5D,EACfg4E,MAAOjhF,KAAK2vJ,gBAAgB9F,EAAQ4F,GACpC7F,OAAQA,EACRC,OAAQA,EACR6F,OAAQA,EACRD,UAAWA,EACX9J,YAAa,UAEjB18I,EAAE83D,iBACL,EACD4uF,gBA3BQ,SA2BQ1uE,GACZ,IAAIwuE,EAAY33I,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GA9BnE,EA+BT,OA/BS,IA+BL23I,GACQxuE,GA/BG,GAiCgBA,CAElC,GAELzQ,GAAc6+E,GAAYE,ICzB1B,IAAIK,GAAgB,iBAChBC,GAAe,YACfC,GAAe3jG,GAAAA,EAAAA,QAAc,CAC7BpJ,KAAM,WACF/iD,KAAK+vJ,kBACL/vJ,KAAKwmC,QACLxmC,KAAKgwJ,sBAAwBhwJ,KAAKiwJ,eAAenzJ,KAAKkD,MACtDA,KAAKkwJ,sBAAwBlwJ,KAAKmwJ,eAAerzJ,KAAKkD,KACzD,EACD+vJ,gBAAiB,WACb99E,GAAAA,IAAmB,WACf,IAAI/vE,EAAW26D,EAAAA,EAAAA,cACf0B,EAAAA,EAAAA,gBAA6Br8D,EAAUshJ,GAAa3oF,GAAAA,KAAoB+0F,IAAgB5vJ,KAAKowJ,oBAAoBtzJ,KAAKkD,OACtHu+D,EAAAA,EAAAA,gBAA6Br8D,EAAUshJ,GAAa3oF,GAAAA,KAAoB+0F,IAAgB5vJ,KAAKqwJ,oBAAoBvzJ,KAAKkD,OACtHu+D,EAAAA,EAAAA,gBAA6Br8D,EAAUshJ,GAAa,CAAC3oF,GAAAA,GAAkBA,GAAAA,QAAsBpuD,KAAK,KAAMmjJ,IAAgB5vJ,KAAKswJ,kBAAkBxzJ,KAAKkD,OACpJu+D,EAAAA,EAAAA,gBAA6Br8D,EAAUshJ,GAAa+M,GAAgBX,IAAgB5vJ,KAAKwwJ,mBAAmB1zJ,KAAKkD,MACpH,EAAClD,KAAKkD,MACV,EACDywJ,aAAc,SAASlzJ,GAGnB,IAFA,IAAImzJ,EAAiB1wJ,KAAK2wJ,iBAAmB,GACzChoJ,EAAI,EACD+nJ,EAAe/vJ,OAASgI,GAAG,CAC9B,IAAIioJ,EAAUF,EAAe/nJ,GAC7B,IAAI,IAAUpL,EAASqzJ,GACnB,MAEAF,EAAe/nJ,KAAOioJ,GACtBjoJ,GAEP,CACJ,EACDkoJ,iBAAkB,SAASzrJ,EAAQqL,GAC/BzQ,KAAKywJ,cAAc,SAASG,GACxBA,EAAQxrJ,GAAQ3G,KAAKmyJ,EAASngJ,EACjC,GACJ,EACD+1B,MAAO,WACHxmC,KAAKywJ,aAAazwJ,KAAKgwJ,uBACvBhwJ,KAAK2wJ,gBAAkB,EAC1B,EACDG,aAAc,SAASF,GACnB5wJ,KAAKgwJ,sBAAsBY,EAC9B,EACDR,oBAAqB,SAASnnJ,GACtBw8I,GAAax8I,IAAMA,EAAEo5D,MAAQ,GAGjCriE,KAAK+wJ,gBAAgB9nJ,EACxB,EACD8nJ,gBAAiB,SAAS9nJ,GACjBjJ,KAAKgxJ,cAAc/nJ,KAGxBjJ,KAAKixJ,eAAehoJ,GACpBjJ,KAAKkxJ,eAAejoJ,GACvB,EACD+nJ,cAAe,SAAS/nJ,GACpB,IAAIkoJ,EAAanxJ,KAAKoxJ,gBAAgBnoJ,GAClCooJ,EAAcrxJ,KAAKsxJ,cAAgB,GACnCC,EAAaJ,EAAWxwJ,SAAW0wJ,EAAY1wJ,OAMnD,OALAksD,EAAAA,EAAAA,IAAKskG,GAAa,SAAShwJ,EAAOyvJ,GAE9B,QADAW,EAAaA,GAAcF,EAAYlwJ,KAAWyvJ,EAErD,IACD5wJ,KAAKsxJ,aAAeH,EACbI,CACV,EACDH,gBAAiB,SAASnoJ,GACtB,IAAIwmD,EAAOzvD,KACPwD,EAAS,GACTw2D,EAAW+W,GAAE9nE,EAAE0O,QAEnB,SAAS65I,EAAc1yJ,EAAG8xJ,GAChBA,GAAWA,EAAQxJ,iBAAiBn+I,IAAM2nJ,EAAQrP,SAASt4I,KAC7D2nJ,EAAQpJ,kBAAkB/3F,EAAKugG,uBAC/BY,EAAQjJ,kBAAkBl4F,EAAKygG,uBAC/B1sJ,EAAOpD,KAAKwwJ,GAEnB,CACD,KAAO52F,EAASr5D,QAAQ,CACpB,IAAI8wJ,EAAWrxF,EAAYpG,EAASpgE,IAAI,GAAIi2J,KAAiB,IAC7DhjG,EAAAA,EAAAA,IAAK4kG,EAAUD,GACfx3F,EAAWA,EAASnvD,QACvB,CACD,OAAOrH,CACV,EACD2sJ,eAAgB,SAASuB,EAAiBzoJ,GACtC,IAAIwmD,EAAOzvD,KACXA,KAAKywJ,cAAc,SAASG,GACpBA,IAAYc,GACZjiG,EAAKkiG,eAAef,EAAS3nJ,EAEpC,GACJ,EACDgnJ,eAAgB,SAAS2B,EAAiB3oJ,GACtCjJ,KAAK2xJ,eAAeC,EAAiB3oJ,EACxC,EACD0oJ,eAAgB,SAASf,EAAS3nJ,GAC9B,IAAIynJ,EAAiB1wJ,KAAK2wJ,gBACtB1nJ,EACA2nJ,EAAQ5vG,OAAO/3C,GAEf2nJ,EAAQpqH,QAEZoqH,EAAQnJ,uBACRmJ,EAAQhJ,uBACR,IAAIiK,EAAenB,EAAetvJ,QAAQwvJ,GACtCiB,GAAgB,GAChBnB,EAAervJ,OAAOwwJ,EAAc,EAE3C,EACDZ,eAAgB,SAAShoJ,GACrBjJ,KAAK6wJ,iBAAiB,MAAO5nJ,GAC7BjJ,KAAKwmC,MAAMv9B,EACd,EACDioJ,eAAgB,SAASjoJ,GACrBjJ,KAAK2wJ,gBAAkB3wJ,KAAKsxJ,aAAavsJ,QACzC/E,KAAK6wJ,iBAAiB,QAAS5nJ,EAClC,EACDonJ,oBAAqB,SAASpnJ,GAC1BjJ,KAAK6wJ,iBAAiB,OAAQ5nJ,EACjC,EACDqnJ,kBAAmB,SAASrnJ,GACxBjJ,KAAK+wJ,gBAAgB9nJ,EACxB,EACDunJ,mBAAoB,SAASvnJ,GACpBjJ,KAAK8xJ,mCAGV7oJ,EAAEo+I,SAAW,CAAC,MACdrnJ,KAAKowJ,oBAAoBnnJ,GACzBjJ,KAAK+xJ,kBAAkB9oJ,GACvBjJ,KAAKqwJ,oBAAoBpnJ,GACzBA,EAAEo+I,SAAW,GACbrnJ,KAAKswJ,kBAAkBrnJ,GAC1B,EACD6oJ,+BAAgC,WAC5B,IAAIE,GAAoB,EAKxB,OAJAhyJ,KAAKywJ,cAAc,SAASG,GAExB,OADAoB,EAAoBpB,EAAQrJ,iCAAmCyK,CAElE,IACMA,CACV,EACDD,kBAAmB,SAAS9oJ,GACxB,IAAIgpJ,EAAwB,KAW5B,GAVAjyJ,KAAKywJ,cAAc,SAASG,GACxB,GAAKA,EAAQrI,QAAb,CAGA,IAAI3hI,EAAYgqI,EAAQlI,aAAaz/I,GACrC,MAAI,eAAiB2d,IAAc3d,EAAEipJ,UAAY,aAAetrI,GAAa3d,EAAEipJ,UAC3ED,EAAwBrB,GACjB,QAFX,CAFC,CAMJ,IACIqB,EAAL,CAGA,IAAIrrI,EAAYqrI,EAAsBvJ,aAAaz/I,GAC/CkpJ,EAA2B,SAAWvrI,IAAc3d,EAAEipJ,UAAY,aAAetrI,EAErF3d,EADWkpJ,EAA2B,QAAU,UACrClpJ,EAAEg4E,KAJZ,CAKJ,EACDmxE,SAAU,SAAS5lJ,GACf,IAAIhJ,GAAS,EAIb,OAHAxD,KAAKywJ,cAAc,SAASG,GACxBptJ,EAASA,GAAUotJ,EAAQzJ,aAAal4E,GAAGziE,EAC9C,IACMhJ,CACV,IAED6uJ,GAAe,IAAIvC,GACnBwC,GAA4B,wBA6ChC,GA5CsB,SAASC,GAC3B,IAAIC,EAAeD,EAAc3B,QAC7B6B,EAAcF,EAAcxoH,OAAO,GACnC2oH,EAAgBH,EAAcxoH,QAClC8iB,EAAAA,EAAAA,IAAK6lG,GAAgB,SAAS5zJ,EAAGN,GAC7BgyE,GAAchyE,EAAW,CACrBiyE,UAAW8hF,EAAcI,OACzB3hF,MAAO,SAASxkE,GACZ,IAAIomJ,EAAgBxyF,EAAY5zD,EAAS8lJ,KAA8B,CAAC,EACpEb,EAAWrxF,EAAY5zD,EAASqjJ,KAAiB,CAAC,EAClDe,EAAUa,EAASgB,IAAgB,IAAID,EAAahmJ,GACxDomJ,EAAcp0J,IAAa,EAC3BizJ,EAASgB,GAAe7B,EACxBxwF,EAAY5zD,EAASqjJ,GAAc4B,GACnCrxF,EAAY5zD,EAAS8lJ,GAA2BM,EACnD,EACD7kH,IAAK,SAASvhC,EAASigJ,GACJrsF,EAAY5zD,EAASqjJ,IACb4C,GACf3/H,WAAU2yB,EAAAA,GAAAA,GAAO,CACrByiG,iBAAkBuE,EAAUv8I,UAC7Bu8I,EAAUnyJ,MAAOmyJ,EAAUpnJ,KACjC,EACDunJ,SAAU,SAASpgJ,GACf,IAAIomJ,EAAgBxyF,EAAY5zD,EAAS8lJ,IACrCb,EAAWrxF,EAAY5zD,EAASqjJ,IAChCe,EAAUa,EAASgB,UAChBG,EAAcp0J,GACrB,IAAIq0J,GAAiB,GACrBhmG,EAAAA,EAAAA,IAAK6lG,GAAgB,SAAS5zJ,EAAGN,GAE7B,OADAq0J,EAAiBA,IAAmBD,EAAcp0J,EAErD,IACGq0J,IACIR,GAAaD,SAAS5lJ,IACtB6lJ,GAAavB,aAAaF,GAE9BA,GAAWA,EAAQrkH,iBACZklH,EAASgB,GAEvB,GAER,GACJ,EC7NGK,GAAmB,cACnBC,GAAa,SACbC,GAAiB,YACjBC,GAAmB,cACnBC,GAAmB,cACnBC,GAAa,SACbC,GAA2B,oBAC3BC,GAAmB,GACnBC,GAA2B,GAC3BC,GAAyB,GACzBC,GAAyB,CACzBxiF,MAAO,SAASxkE,EAASlS,GACC+4J,GAAiB9tJ,SAASiH,KAE5C6mJ,GAAiBjzJ,KAAKoM,GACtB8mJ,GAAyBlzJ,KAAK,IAC9BmzJ,GAAuBnzJ,KAAK9F,GAAQ,CAAC,GAE5C,EACDyzC,IAAK,SAASvhC,EAASigJ,GACnB,IAAItrJ,EAAQkyJ,GAAiBjyJ,QAAQoL,GACrCxM,KAAKyzJ,oBAAoBjnJ,EAASigJ,EAAUpnJ,KAAM,GAClD,IAAI6K,EAAWu8I,EAAUv8I,SACpBojJ,GAAyBnyJ,GAAOoE,SAAS2K,IAC1CojJ,GAAyBnyJ,GAAOf,KAAK8P,EAE5C,EACDujJ,oBAAqB,SAASjnJ,EAASzL,EAAO7C,GAC1C,GAAI,CAAC+0J,GAAkBC,GAAkBC,IAAY/xJ,QAAQL,IAAU,EAAG,CACtE,IAAI2yJ,EAActzF,EAAY5zD,EAAS4mJ,KAA6B,EACpEhzF,EAAY5zD,EAAS4mJ,GAA0B7pJ,KAAKkuB,IAAI,EAAGi8H,EAAcx1J,GAC5E,CACJ,EACDR,OAAQ,SAAS8O,EAASigJ,GACtBzsJ,KAAKyzJ,oBAAoBjnJ,EAASigJ,EAAUpnJ,MAAO,EACtD,EACDunJ,SAAU,SAASpgJ,GAEf,IADoB4zD,EAAY5zD,EAAS4mJ,IACrB,CAChB,IAAIjyJ,EAAQkyJ,GAAiBjyJ,QAAQoL,GACrC6mJ,GAAiBhyJ,OAAOF,EAAO,GAC/BmyJ,GAAyBjyJ,OAAOF,EAAO,GACvCoyJ,GAAuBlyJ,OAAOF,EAAO,GACrCqjE,EAAWh4D,EAAS4mJ,GACvB,CACJ,GAEL5iF,GAAcyiF,GAAkBO,IAChChjF,GAAc0iF,GAAkBM,IAChChjF,GAAc2iF,GAAYK,IAC1B,IA6BIG,GAAcrL,GAAAA,QAAuB,CACrCvlG,KAAM,SAASv2C,GACXxM,KAAKmiD,SAAS31C,GACdxM,KAAK4mB,UAAY,MACpB,EACD28E,MAAO,SAASt6F,GACZjJ,KAAK4zJ,WAAa3qJ,CACrB,EACDugJ,OAAQ,SAASvgJ,GAMb,GALAA,EAAIjJ,KAAKgoJ,WAAW8K,GAAkB9yJ,KAAK4zJ,YAC3C5zJ,KAAK6zJ,eAAiB5qJ,EAAE6qJ,cACxB9zJ,KAAK+zJ,gBAAkB9qJ,EAAE+qJ,eACzBh0J,KAAKi0J,cAAgBhrJ,EAAEirJ,aACvBl0J,KAAKm0J,iBAAmBlrJ,EAAEmrJ,gBACtBnrJ,EAAEorJ,gBAAkB,OAASprJ,EAAEorJ,eAAgB,CAC/C,IAAIC,EAAchd,GAAYruI,EAAEorJ,gBAAkB,IAClDr0J,KAAKu0J,aAAeC,EAAAA,GAAkBF,GAAc,SAAS9nJ,GACzD,OAAOukE,GAAEvkE,GAAS5S,IAAI,EACzB,GACJ,MACGoG,KAAKu0J,aAAelB,EAE3B,EACD5J,MAAO,SAASxgJ,GACZ,IAAIy3D,EAAY+zF,GAAMxrJ,GAClByrJ,EAAa10J,KAAK20J,iBAAiBj0F,GACvCz3D,EAAIjJ,KAAKgoJ,WAAW+K,GAAY9pJ,EAAG,CAC/BgE,OAAQynJ,IAEZ10J,KAAK40J,oBAAoB3rJ,GACpBA,EAAE4rJ,uBACH5rJ,EAAEkzD,gBAET,EACDw4F,iBAAkB,SAASj0F,GACvB,MAAO,CACH3yD,EAAG/N,KAAK80J,kBAAkBp0F,GAC1B1yD,EAAGhO,KAAK+0J,kBAAkBr0F,GAEjC,EACDo0F,kBAAmB,SAASp0F,GACxB,GAAI,aAAe1gE,KAAK4mB,UAAW,CAC/B,IAAI3Z,EAASyzD,EAAU3yD,EAAI/N,KAAK8oJ,gBAAgB/6I,EAChD,OAAO/N,KAAKg1J,WAAW/nJ,EAAQjN,KAAK6zJ,eAAgB7zJ,KAAK+zJ,gBAC5D,CACD,OAAO,CACV,EACDgB,kBAAmB,SAASr0F,GACxB,GAAI,eAAiB1gE,KAAK4mB,UAAW,CACjC,IAAI3Z,EAASyzD,EAAU1yD,EAAIhO,KAAK8oJ,gBAAgB96I,EAChD,OAAOhO,KAAKg1J,WAAW/nJ,EAAQjN,KAAKi0J,cAAej0J,KAAKm0J,iBAC3D,CACD,OAAO,CACV,EACDa,WAAY,SAAS/nJ,EAAQgoJ,EAAWC,GAOpC,OANI,MAAQD,IACRhoJ,EAAS1D,KAAKkuB,IAAIxqB,GAASgoJ,IAE3B,MAAQC,IACRjoJ,EAAS1D,KAAKsZ,IAAI5V,EAAQioJ,IAEvBjoJ,CACV,EACD2nJ,oBAAqB,SAAS3rJ,GAC1B,IAAI0O,EAAS3X,KAAKm1J,gBAAgBlsJ,GACjB0O,IAAW3X,KAAKo1J,qBAE7Bp1J,KAAKq1J,qBAAqBpsJ,EAAGiqJ,IAC7BlzJ,KAAKo1J,mBAAqBz9I,EAC1B3X,KAAKq1J,qBAAqBpsJ,EAAGgqJ,IAEpC,EACDoC,qBAAsB,SAASt0J,EAAOvC,GAClC,GAAKwB,KAAKo1J,mBAAV,CAGA,IAAI10F,EAAY,CACZr7D,KAAM7G,EACN0jE,cAAenhE,EACfu0J,gBAAiBt1J,KAAKgnJ,UAAUptJ,IAAI,GACpC+d,OAAQ3X,KAAKo1J,oBAEjBx9E,GAAUlX,EAPT,CAQJ,EACDy0F,gBAAiB,SAASlsJ,GACtB,IACIzF,EADAisD,EAAOzvD,KAcX,OAZAw0J,EAAAA,GAAmBnB,IAAmB,SAASv0J,EAAG6Y,GAC9C,GAAK83C,EAAK8lG,uBAAuB59I,GAAjC,CAGA,IAAIiqI,EAAU7wE,GAAEp5D,GAChB68I,EAAAA,GAzHkB,SAASx6F,GACnC,IAAIw7F,EAAkBnC,GAAiBjyJ,QAAQ44D,EAASpgE,IAAI,IACxD67J,EAAsBnC,GAAyBkC,GAAiBh7H,QAAO,SAAAtqB,GAAQ,OAAIA,CAAJ,IAC/EwlJ,EAAoB17F,EAASh+D,KAAKy5J,EAAoBhpJ,KAAK,OAI/D,OAHI6mJ,GAAyBkC,GAAiBjwJ,cAAS,KACnDmwJ,EAAoBA,EAAkB3nH,IAAIisB,IAEvC07F,CACV,CAiH8BC,CAAwB/T,IAAW,SAAS9iJ,EAAG82J,GAC9D,IAAIC,EAAmB9kF,GAAE6kF,GACrBnmG,EAAKqmG,iBAlHL,SAAS97F,GACzB,IAAIw7F,EAAkBnC,GAAiBjyJ,QAAQ44D,EAASpgE,IAAI,IAC5D,OAAO25J,GAAuBiC,EACjC,CA+GyCO,CAAcnU,GAAUiU,EAAkB9kF,GAAEvtE,GAASyF,KAC3EzF,EAASoyJ,EAEhB,GAPA,CAQJ,IACMpyJ,CACV,EACD+xJ,uBAAwB,SAAS59I,GAC7B,IAAImO,GAAS,EAKb,OAJA0uI,EAAAA,GAAmBx0J,KAAKu0J,cAAe,SAASz1J,EAAGk3J,GAE/C,QADAlwI,EAASA,GAAUkwI,IAAiBr+I,GAAUsoD,GAAS+1F,EAAcr+I,GAExE,IACMmO,CACV,EACDgwI,iBAAkB,SAAS/1J,EAAQ6hJ,EAASqU,EAAahtJ,GAErD,GADwB24I,EAAQhoJ,IAAI,KAAOm3E,GAAE9nE,EAAE0O,QAAQ/d,IAAI,GAEvD,OAAO,EAEX,IAlIuBs8J,EAAkBl8F,EAkIrCm8F,GAlIqCn8F,EAkII4nF,GAlItBsU,EAkIcn2J,GAjIpBq2J,iBACVF,EAAiBE,iBAAiBp8F,GAElCA,EAAS/sD,UA+HhB,GAAIhE,EAAEu6D,MAAQ2yF,EAAevxH,KACzB,OAAO,EAEX,GAAI37B,EAAEw6D,MAAQ0yF,EAAe1xH,IACzB,OAAO,EAEX,IAAI4xH,EAlIM,SAASH,EAAkBl8F,GACzC,OAAIk8F,EAAiBI,aACVJ,EAAiBI,aAAat8F,GAElC,CACHrpC,MAAOqpC,EAASpgE,IAAI,GAAG2gE,wBAAwB5pC,MAC/CnE,OAAQwtC,EAASpgE,IAAI,GAAG2gE,wBAAwB/tC,OAEvD,CA0HwB+pI,CAAYx2J,EAAQ6hJ,GACrC,QAAI34I,EAAEu6D,MAAQ2yF,EAAevxH,KAAOyxH,EAAW1lI,WAG3C1nB,EAAEw6D,MAAQ0yF,EAAe1xH,IAAM4xH,EAAW7pI,YAG1CypI,EAAYt1J,SAAUs1J,EAAYnmF,QAAQ8xE,GAASjhJ,YAGnDZ,EAAOy2J,kBAAoBz2J,EAAOy2J,gBAAgB5U,EAAS34I,KAGxD24I,IACV,EACD4I,KAAM,SAASvhJ,GACX,IAAIy3D,EAAY+zF,GAAMxrJ,GACtBjJ,KAAKgoJ,WAAWgL,GAAgB/pJ,EAAG,CAC/BgE,OAAQjN,KAAK20J,iBAAiBj0F,KAElC1gE,KAAKq1J,qBAAqBpsJ,EAAGkqJ,WACtBnzJ,KAAKo1J,kBACf,IAELqB,GAAgB,CACZ7F,QAAS+C,GACT5pH,OAAQ,CAAC+oH,GAAkBC,GAAYC,MC5N3C,ICpBI0D,GACyCC,GDoBvCC,GAAAA,WACF,WAAY72J,IAAQ,eAChBC,KAAK62J,KAAK92J,EACb,oCACD,SAAKiX,GACD,IACiB8/I,EAIb9/I,EAJA8/I,YACQx1J,EAGR0V,EAHA1V,OACkBy1J,EAElB//I,EAFA+/I,iBACoBC,EACpBhgJ,EADAggJ,mBAEJh3J,KAAKi3J,oBAAsBD,EAC3Bh3J,KAAKk3J,kBAAoBH,EACzB/2J,KAAKm3J,QAAU71J,EACftB,KAAKo3J,aAAeN,EACpB92J,KAAKq3J,cACAP,GAGL92J,KAAKmhB,WACR,yBACD,SAASlY,GACLjJ,KAAKs3J,QAvBY,EAuBgB,EAAGruJ,EACvC,uBACD,SAAOA,GACHjJ,KAAKs3J,SA1BY,EA0BiB,EAAGruJ,EACxC,yBACD,SAASA,GACLjJ,KAAKs3J,QAAQ,GA7BI,EA6BoBruJ,EACxC,0BACD,SAAUA,GACNjJ,KAAKs3J,QAAQ,EAhCI,EAgCmBruJ,EACvC,0BACD,WAAY,WACJw6I,EAAazjJ,KAAKu3J,iBACtBh5F,EAAAA,EAAAA,GAAgBv+D,KAAKm3J,QAAS1T,EAAW+T,gBAAgB,SAAAvuJ,GACrD,EAAKwuJ,kBAAkBxuJ,EAC1B,IACDs1D,EAAAA,EAAAA,GAAgBv+D,KAAKm3J,QAAS1T,EAAWiU,iBAAiB,SAAAzuJ,GACtD,EAAK0uJ,mBAAmB1uJ,EAC3B,IACDs1D,EAAAA,EAAAA,GAAgBv+D,KAAKm3J,QAAS1T,EAAWmU,cAAc,SAAA3uJ,GACnD,EAAK4uJ,gBAAgB5uJ,EACxB,GACJ,4BACD,WACI,IAAIw6I,EAAazjJ,KAAKu3J,iBACtBh5F,EAAAA,EAAAA,IAAiBv+D,KAAKm3J,QAAS1T,EAAW+T,gBAC1Cj5F,EAAAA,EAAAA,IAAiBv+D,KAAKm3J,QAAS1T,EAAWiU,iBAC1Cn5F,EAAAA,EAAAA,IAAiBv+D,KAAKm3J,QAAS1T,EAAWmU,aAC7C,+BACD,WAII,MAAO,CACHJ,eAJiBhU,GAAasU,GAAgB,eAK9CJ,gBAJkBlU,GAAauU,GAAe,eAK9CH,aAJepU,GAAawU,GAAc,eAMjD,kCACD,SAAkB/uJ,GACd,IAAIgvJ,EAAiBj4J,KAAKk4J,qBAC1Bl4J,KAAKm4J,YAAc,CACfpqJ,EAAG,EACHC,EAAG,GAEP/E,EAAEorJ,eAAiB,GACnBprJ,EAAEirJ,aAAe+D,EAAexzH,IAChCx7B,EAAEmrJ,gBAAkB6D,EAAetzH,OACnC17B,EAAE6qJ,cAAgBmE,EAAerzH,KACjC37B,EAAE+qJ,eAAiBiE,EAAevzH,KACrC,mCACD,SAAmBz7B,GACf,IAAIukH,EAAe,CACf/oF,IAAKx7B,EAAEgE,OAAOe,EAAIhO,KAAKm4J,YAAYnqJ,EACnC42B,KAAM37B,EAAEgE,OAAOc,EAAI/N,KAAKm4J,YAAYpqJ,GAExC/N,KAAKo4J,cAAc5qC,GACnBxtH,KAAKm4J,YAAclvJ,EAAEgE,MACxB,gCACD,SAAgBlM,GACZf,KAAKi3J,oBAAoBoB,cACzBr4J,KAAKi3J,oBAAoBqB,2BAA2Bv3J,EACvD,wBACD,SAAQ0jC,EAAKG,EAAM37B,GACf,GAAKjJ,KAAKo3J,aAAV,CAGAnuJ,EAAEkzD,iBACFlzD,EAAE83D,kBACF,IAAI9zD,EAASjN,KAAKu4J,2BAA2B9zH,EAAKG,GAClD5kC,KAAKo4J,cAAcnrJ,GACnBjN,KAAK63J,gBAAgB5uJ,EALpB,CAMJ,2CACD,SAA2Bw7B,EAAKG,GAC5B,IAAIqzH,EAAiBj4J,KAAKk4J,qBAC1B,MAAO,CACHzzH,IAAKm3C,GAAan3C,GAAMwzH,EAAexzH,IAAKwzH,EAAetzH,QAC3DC,KAAMg3C,GAAah3C,GAAOqzH,EAAerzH,KAAMqzH,EAAevzH,OAErE,wCACD,WACI,IAAIxiC,EAAW26D,EAAAA,EAAAA,cACXt1D,EAAYvH,KAAKi3J,oBAAoBuB,qBAAqB5+J,IAAI,GAC9D6+J,EAAiBztF,GAAczjE,GAC/BmxJ,EAAkBxtF,GAAe3jE,GAKrC,OAJIo8C,EAAAA,EAAAA,IAASp8C,KACTmxJ,EAAkBnvJ,KAAKkuB,IAAIv1B,EAASoD,KAAKqzJ,aAAcD,GACvDD,EAAiBlvJ,KAAKkuB,IAAIv1B,EAASoD,KAAKw3D,YAAa27F,IAElD,CACH9nI,MAAO8nI,EACPjsI,OAAQksI,EAEf,sCACD,WACI,IAAInxJ,EAAYvH,KAAKi3J,oBAAoBuB,qBAAqB5+J,IAAI,GAClE,OAAO+pD,EAAAA,EAAAA,IAASp8C,GAAa,CACzBk9B,IAAK,EACLG,KAAM,GACNinC,GAAUtkE,EACjB,oCACD,WACI,OAAOskE,GAAU7rE,KAAKk3J,kBACzB,+BACD,WACI,IAAI0B,EAAsB54J,KAAK64J,0BAC3BC,EAAoB94J,KAAK+4J,wBAC7B,MAAO,CACHhrJ,EAAG6qJ,EAAoBjoI,MAAQmoI,EAAkBnoI,MACjD3iB,EAAG4qJ,EAAoBpsI,OAASssI,EAAkBtsI,OAEzD,+BACD,WACI,IAAI,EAGAxsB,KAAK+4J,wBAFEpoI,EADX,EACIA,MACQnE,EAFZ,EAEIA,OAEAwsI,EAAoBh5J,KAAKi3J,oBAAoB+B,kBACjD,MAAO,CACHjrJ,EAAG4iB,EAAQqoI,EACXhrJ,EAAGwe,EAASwsI,EAEnB,8BACD,WACI,IAAIC,EAAYj5J,KAAKk5J,iBACjBC,EAAan5J,KAAKo5J,iBACtB,MAAO,CACHrrJ,EAAGkrJ,EAAUlrJ,EAAIorJ,EAAWprJ,EAC5BC,EAAGirJ,EAAUjrJ,EAAImrJ,EAAWnrJ,EAEnC,sCACD,WACI,MAAO,CACH2iB,MAAO3wB,KAAKk3J,kBAAkBznF,YAC9BjjD,OAAQxsB,KAAKk3J,kBAAkBpuF,aAEtC,mCACD,WACI,IAAImwF,EAAYj5J,KAAKq5J,gBAErB,KADoBJ,EAAUjrJ,GAAK,GAAKirJ,EAAUlrJ,GAAK,GAEnD,MAAO,CACH02B,IAAK,EACLE,OAAQ,EACRC,KAAM,EACNF,MAAO,GAGf,IAAI40H,EAAkBt5J,KAAKu5J,sBACvBC,EAAoBx5J,KAAKy5J,wBACzBN,EAAan5J,KAAKo5J,iBACtB,MAAO,CACH30H,IAAK60H,EAAgB70H,IAAM+0H,EAAkB/0H,IAAM00H,EAAWnrJ,EAC9D22B,QAAS20H,EAAgB70H,IAAM+0H,EAAkB/0H,IAAMw0H,EAAUjrJ,EACjE42B,KAAM00H,EAAgB10H,KAAO40H,EAAkB50H,KAAOu0H,EAAWprJ,EACjE22B,OAAQ40H,EAAgB10H,KAAO40H,EAAkB50H,KAAOq0H,EAAUlrJ,EAEzE,8BACD,SAAcd,GACV,IAAIysJ,EAAkBhX,GAAO1iJ,KAAKk3J,mBAC9ByC,EAAc,CACd/0H,KAAM80H,EAAgB90H,KAAO33B,EAAO23B,KACpCH,IAAKi1H,EAAgBj1H,IAAMx3B,EAAOw3B,KAEtC0+G,GAAKnjJ,KAAKk3J,kBAAmByC,EAChC,OA3LC/C,GA6LN,MEzMIgD,GAAgB,CAAC,EACVC,GAAwB,SAAAjtJ,GAC/B,IAAIktJ,EAAgB9hF,GAAAA,UACpB,OAAOprE,EAAMzI,QAAO,SAAC/G,EAAS4Z,GAC1B,IACY0/D,EAER1/D,EAFA0/D,OACS47D,EACTt7H,EADA5Z,QAEA28J,EAAerjF,GAAU,CAAC,EAK9B,QAJY7nB,EAAAA,EAAAA,IAAWkrG,GAAgBA,EAAaD,GAAiBE,GAAYF,EAAeC,MAE5Ft0G,EAAAA,GAAAA,IAAO,EAAMroD,EAASk1I,GAEnBl1I,CACV,GAAE,CAAC,EACP,EAIU48J,GAAc,SAACtjF,EAAQl8C,GAAT,OAAoBohC,EAAAA,EAAAA,IAAcphC,KAAWm1B,EAAAA,GAAAA,iBAAgB+mB,EAAQ,CAACl8C,IAAS75B,OAAS,CAAxF,EACds5J,GAAe,SAAApqH,GAAQ,OAAIA,EAAS7qC,OAAO6qC,EAAS6jD,YAAY,KAAO,EAAhD,EACvBwmE,GAAgB,SAAArqH,GAAQ,OAAIA,EAAS7qC,OAAO,EAAG6qC,EAAS6jD,YAAY,KAA5C,ECd/BkmE,GAAgB,CAAC,EACjBO,GAAgB,CAAC,EACRC,GAAb,WACI,WAAYh9J,EAASi9J,IAAoB,eACrCr6J,KAAKktD,SAAW9vD,EAChB4C,KAAKs6J,oBAAsBD,EAC3Br6J,KAAKu6J,kBACLv6J,KAAKw6J,iBACLx6J,KAAKy6J,sBACR,CAPL,8CAQI,SAAgBr9J,EAASs9J,GAErB,IAAK,IAAIvsB,KADT1oF,EAAAA,GAAAA,IAAO,EAAMroD,EAASs9J,GACA16J,KAAKs6J,oBACnBt8J,OAAOgK,UAAU6X,eAAephB,KAAKi8J,EAAcvsB,KACnD/wI,EAAQ+wI,GAAausB,EAAavsB,GAG7C,GAfL,+BAgBI,SAAkB/0I,EAAM8E,EAAO6gC,EAAO47H,GAClC,IC9BqBC,EAAU/xH,ED8B3BgyH,EAAgB76J,KAAKpG,IAAIoG,KAAKktD,SAAU9zD,GAAM,GAClD,GC/BqBwhK,ED+BTC,EC/BmBhyH,ED+BJ3qC,EC9B/B08J,GAAW1nG,EAAAA,GAAAA,IAAa0nG,GAAU,GAClC/xH,GAAWqqB,EAAAA,GAAAA,IAAarqB,GAAU,KAC9B+xH,GAAY/xH,IAAYkzB,EAAAA,EAAAA,IAAW6+F,KAAa7+F,EAAAA,EAAAA,IAAWlzB,GACpDA,EAASomC,GAAG2rF,GAEHA,IAAaA,GACb/xH,IAAaA,IAI7B,IAAM+xH,GAAY,IAAM/xH,EAdd,SAAS+xH,EAAU/xH,GACjC,OAAO,EAAI+xH,IAAa,EAAI/xH,CAC/B,CAaciyH,CAAYF,EAAU/xH,IAE7B,OAAS+xH,GAAY,kBAAoBA,GAAY/9F,EAAAA,EAAAA,cAAyB+9F,KACvEA,IAAa/xH,IDgBe,CAC/B,IAAIlmC,GAAOmxD,EAAAA,GAAAA,IAAa16D,IACvBuhK,GAAU36J,KAAKu6J,kBAAkBnhK,EAAMyhK,EAAe38J,GACvDi8J,GAAc/gK,GAAQ+gK,GAAc/gK,KAAS47D,EAAAA,GAAAA,IAAc57D,GAC3D+gK,GAAc/gK,GAAM4G,KAAKktD,SAAUhvD,EAAO,CACtCo2D,eAAe,EACfv1B,OAAOsvB,EAAAA,EAAAA,IAAUtvB,GAASA,GAAS/+B,KAAKs6J,oBAAoBlhK,GAC5D66D,kBAAmBtxD,EAAKhC,OAAS,KAAOX,KAAKs6J,oBAAoB33J,EAAK,OAEzEg4J,GAAU36J,KAAKw6J,iBAAiBphK,EAAM8E,EAAO28J,EACjD,CACJ,GA7BL,mCA8BI,SAAsBz9J,EAAShE,EAAM8E,EAAOy8J,GACxC,IAAIvzH,EAAAA,EAAAA,IAAclpC,GACd,IAAK,IAAI68J,KAAa78J,EAClB8B,KAAKg7J,sBAAsB59J,EAAS,GAAG6S,OAAO7W,EAAM,KAAK6W,OAAO8qJ,GAAY78J,EAAM68J,IAG1F/6J,KAAKy6J,uBAAuBr9J,EAAShE,EAAM8E,EAAOy8J,EACrD,GArCL,iBAsCI,WACI,IAAIv9J,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKktD,SAChF9zD,EAAO0e,UAAUnX,OAAS,EAAImX,UAAU,QAAK,EAC7Cm8C,EAAoBn8C,UAAUnX,OAAS,EAAImX,UAAU,QAAK,EAE9D,OADA8hJ,GAAcxgK,GAAQwgK,GAAcxgK,KAASg7D,EAAAA,GAAAA,IAAch7D,GACpDwgK,GAAcxgK,GAAMgE,EAAS,CAChCk3D,eAAe,EACfL,kBAAmBA,GAE1B,GA/CL,iBAgDI,SAAI72D,EAASc,EAAO6gC,EAAO47H,GAEvB,IAAK,IAAIvhK,KADTgE,ED1CsB,SAACA,EAASc,GAAV,MAAoB,kBAAoBd,EAAUA,GAA9B,WAC7CA,EAAUc,EADe,CC0CZ+8J,CAAiB79J,EAASc,GACnBd,EACb4C,KAAKg7J,sBAAsB59J,EAAShE,EAAMgE,EAAQhE,GAAOuhK,GAE7D,IAAK,IAAIrrE,KAASlyF,EACd4C,KAAKk7J,kBAAkB5rE,EAAOlyF,EAAQkyF,GAAQvwD,EAAO47H,EAE5D,GAxDL,qCAyDI,SAAwBt0F,GACpBrmE,KAAKy6J,uBAAyBp0F,CACjC,GA3DL,wBA4DI,SAAWA,GACPrmE,KAAKu6J,kBAAoBl0F,CAC5B,GA9DL,uBA+DI,SAAUA,GACNrmE,KAAKw6J,iBAAmBn0F,CAC3B,GAjEL,qBAkEI,WACIrmE,KAAKu6J,kBAAoBz4I,GAAAA,KACzB9hB,KAAKw6J,iBAAmB14I,GAAAA,IAC3B,KArEL,KEEaq5I,GAAb,WACI,WAAY/9J,EAASgpH,EAAgBi0C,EAAoBe,GAAmB,2BACxEp7J,KAAKq7J,oBACLr7J,KAAKs7J,qBACLt7J,KAAKu7J,mBACLv7J,KAAKqjB,SAAW+iG,EAChBpmH,KAAKw7J,YAAcJ,EACnBp7J,KAAKy7J,iBAAmB,GACxBz7J,KAAK07J,uBACL17J,KAAK27J,eAAiB,IAAIvB,GAAch9J,EAASi9J,GACjDr6J,KAAK27J,eAAeC,yBAAwB,SAACx+J,EAAShE,EAAM8E,EAAOy8J,GAAvB,OAAkC,EAAKkB,kBAAkBz+J,EAAShE,EAAM8E,EAAOy8J,EAA/E,IAC5C36J,KAAK87J,eAAiB,CAAC,EACvB97J,KAAK+7J,OAAS,EACjB,CAbL,qCAiBI,WACI,IAAK/7J,KAAKg8J,gBAAiB,CACvB,IAAItB,EAAe16J,KAAKi8J,YAAYj8J,KAAK26J,OAAO,wBAChD36J,KAAKg8J,gBAAkBh8J,KAAKqjB,SAC5BrjB,KAAK27J,eAAeO,gBAAgBl8J,KAAKg8J,gBAAiBtB,EAC7D,CACD,OAAO16J,KAAKg8J,eACf,EAxBL,IAcI,SAAa99J,GACT8B,KAAKg8J,gBAAkB99J,CAC1B,GAhBL,kCAyBI,WACI,IAAK,IAAIsxC,KAAcxvC,KAAKw7J,YACxBx7J,KAAKy7J,iBAAiBr7J,KAAKovC,EAElC,GA7BL,yBA8BI,SAAY5iC,GAER,OADAA,EAAQ/H,MAAMC,QAAQ8H,GAAS5M,KAAK+7J,OAAO9rJ,OAAOrD,GAAS5M,KAAK+7J,OACzDlC,GAAsBjtJ,EAChC,GAjCL,+BAkCI,SAAkB+/B,GACd,IAAI3vB,EAAOhd,KAAKw7J,YAAY7uH,GACxB3vB,GACAhd,KAAKq7J,oBAAoB1uH,EAAQ3vB,EAExC,GAvCL,+BAwCI,SAAkB5f,EAAShE,EAAM8E,EAAOy8J,GACpC,GAAIvhK,EAAM,CACN,IAAI+iK,EAAiBn8J,KAAKo8J,eAAehjK,EAAMuhK,GAC3CwB,GAAkBA,IAAmB/iK,IACrC4G,KAAKq8J,UAAUj/J,EAAS++J,EAAgBj+J,GACxC8B,KAAKs8J,YAAYl/J,EAAShE,GAEjC,CACJ,GAhDL,uBAiDI,SAAUgE,EAASyyC,EAAU3xC,GACzB,IAAIiwI,EAAY,GACZouB,EAAc,KAClB,GACIpuB,EAAYA,EAAY,IAAIl+H,OAAOk+H,GAAa,GAChDA,EAAY8rB,GAAapqH,GAAYs+F,EAErCouB,GADA1sH,EAAWqqH,GAAcrqH,IACA7vC,KAAK27J,eAAe/hK,IAAIwD,EAASyyC,GAAU,GAASzyC,SACvEm/J,GACVA,EAAYpuB,GAAajwI,CAC5B,GA3DL,yBA4DI,SAAYd,EAAShE,UACVgE,EAAQhE,GACf,IAAIojK,EAAoBtC,GAAc9gK,GAClCmjK,EAAcC,EAAoBx8J,KAAK27J,eAAe/hK,IAAIwD,EAASo/J,GAAmB,GAASp/J,EAC/Fm/J,UACOA,EAAYtC,GAAa7gK,GAEvC,GAnEL,4BAoEI,SAAeA,EAAMuhK,GACjB,GAAI36J,KAAKy7J,iBAAiB96J,QAAUvH,EAChC,IAAK,IAAIuP,EAAI,EAAGA,EAAI3I,KAAKy7J,iBAAiB96J,OAAQgI,IAC9C,GAAI3I,KAAKy7J,iBAAiB9yJ,KAAOvP,EAAM,CACnC,IAAIqjK,EAAYz8J,KAAKw7J,YAAYpiK,GACjC,GAAIqjK,EAEA,OADC9B,GAAU36J,KAAK08J,kBAAkBtjK,GAC3BqjK,EAAUllE,OAASn+F,CAEjC,CAGT,OAAOA,CACV,GAjFL,sBAkFI,SAASwT,GACL5M,KAAK+7J,OAASnvJ,EAAMqD,OAAOjQ,KAAK+7J,OACnC,GApFL,wBAqFI,SAAWnvJ,GACP,IAAIxP,EAAU4C,KAAKi8J,YAAYrvJ,GAC/B5M,KAAK26J,OAAOv9J,EACf,GAxFL,qBAyFI,WACI4C,KAAKq7J,oBAAsBv5I,GAAAA,KAC3B9hB,KAAKs7J,qBAAuBx5I,GAAAA,KAC5B9hB,KAAKu7J,mBAAqBz5I,GAAAA,KAC1B9hB,KAAK27J,eAAepvH,SACvB,GA9FL,wBA+FI,SAAW85B,GACPrmE,KAAK27J,eAAegB,WAAWt2F,EAClC,GAjGL,uBAkGI,SAAUA,GACNrmE,KAAK27J,eAAeiB,UAAUv2F,EACjC,GApGL,0BAqGI,SAAaA,GACTrmE,KAAKq7J,oBAAsBh1F,CAC9B,GAvGL,2BAwGI,SAAcA,GACVrmE,KAAKs7J,qBAAuBj1F,CAC/B,GA1GL,yBA2GI,SAAYA,GACRrmE,KAAKu7J,mBAAqBl1F,CAC7B,GA7GL,uBA8GI,SAAUjtE,GACN,IAAI8E,EAAQ8B,KAAK26J,OAAOvhK,GACpByjK,EAAe78J,KAAKm3D,QAAQ/9D,GAEhC,OADmBy1D,EAAAA,EAAAA,IAAW3wD,KAAU2wD,EAAAA,EAAAA,IAAWguG,GAC7B3+J,EAAMZ,aAAeu/J,EAAav/J,YAAa81D,EAAAA,GAAAA,cAAal1D,EAAO2+J,EAC5F,GAnHL,qBAoHI,SAAQzjK,GACJ,OH1G0B,SAAS0jK,EAAe1jK,GAEtD,OADAwgK,GAAcxgK,GAAQwgK,GAAcxgK,KAASg7D,EAAAA,GAAAA,IAAch7D,GACpDwgK,GAAcxgK,GAAM0jK,EAAe,CACtCxoG,eAAe,GAEtB,CGqGcyoG,CAAqB/8J,KAAKg9J,SAAU5jK,EAC9C,GAtHL,oBAuHI,SAAOgE,EAASc,GACZ,IAAIutE,EAAW3zD,UAAUnX,OAAS,GAAK,YAAa0E,EAAAA,EAAAA,IAAKjI,GACzD,GAAIquE,EACA,OAAOzrE,KAAK27J,eAAe/hK,SAAI,EAAQoG,KAAKo8J,eAAeh/J,IAE3D4C,KAAKs7J,uBACL,IACIt7J,KAAK27J,eAAexiK,IAAIiE,EAASc,EAGpC,CAJD,QAGI8B,KAAKu7J,oBACR,CAER,GAnIL,oBAoII,SAAOn+J,EAASc,GACZ,IAAIutE,EAAW3zD,UAAUnX,OAAS,GAAK,YAAa0E,EAAAA,EAAAA,IAAKjI,GACzD,GAAIquE,EACA,OAAOzrE,KAAK27J,eAAe/hK,SAAI,EAAQwD,OAAS,GAAQ,GAExD4C,KAAK27J,eAAexiK,IAAIiE,EAASc,OAAO,GAAQ,EAEvD,GA3IL,mBA4II,SAAM9E,GAAM,WACR,GAAIA,EAAM,CACN,IACI8E,GADW41D,EAAAA,GAAAA,IAAa16D,GACP+K,QAAO,SAACjG,EAAOmgE,GAAR,OAAkBngE,EAAQA,EAAMmgE,GAAS,EAAKlH,QAAQkH,EAAtD,GAA8D,MACtFjgC,GAAe/d,EAAAA,EAAAA,IAASniB,IAAS6a,EAAAA,EAAAA,GAAS,CAAC,EAAG7a,GAASA,EAC3D8B,KAAK27J,eAAexiK,IAAIC,EAAMglC,GAAc,EAC/C,CACJ,GAnJL,8BAoJI,SAAiBhlC,GAAM,WACnB,OAAO4E,OAAOgB,KAAKgB,KAAKw7J,aAAahhI,QAAO,SAAAyiI,GAAS,OAAI7jK,IAAS,EAAKoiK,YAAYyB,GAAW1lE,KAAzC,GACxD,GAtJL,0BAuJI,SAAan+F,GACT,OAAO4E,OAAOgK,UAAU6X,eAAephB,KAAKuB,KAAKw7J,YAAapiK,EACjE,GAzJL,mBA0JI,SAAMA,EAAMgE,GACR,IAAIquE,EAAW3zD,UAAUnX,OAAS,EAClC,GAAI8qE,EACA,OAAOzrE,KAAK87J,eAAe1iK,GAE3B4G,KAAK87J,eAAe1iK,IAAQqsD,EAAAA,GAAAA,GAAOzlD,KAAK87J,eAAe1iK,GAAOgE,EAErE,KAjKL,KClBa8/J,GAAb,WACI,cAAc,eACVl9J,KAAKm9J,qBAAuB,CAAC,CAChC,CAHL,kCAII,SAAI76J,EAAKvE,EAAIq/J,GACT,GAAI96J,KAAOtC,KAAKm9J,qBACZC,GAAoBp9J,KAAKm9J,qBAAqB76J,GAAK+6J,SAASj9J,KAAKg9J,OAC9D,CACH,IAAIE,EAAkB,IAAIjgJ,GAAAA,GAC1Brd,KAAKm9J,qBAAqB76J,GAAO,CAC7BvE,GAAIA,EACJu/J,gBAAiBA,EACjBD,SAAUD,EAAmB,CAACA,GAAoB,GAEzD,CACD,OAAOp9J,KAAKm9J,qBAAqB76J,GAAKg7J,gBAAgBhgJ,SACzD,GAhBL,qCAiBI,WACI,IAAK,IAAIhb,KAAOtC,KAAKm9J,qBAAsB,CACvC,IAAI11D,EAAYznG,KAAKm9J,qBAAqB76J,IACtC+rD,EAAAA,EAAAA,IAAUo5C,KACNA,EAAU41D,UAAY51D,EAAU41D,SAAS18J,OACzC0uD,GAAAA,GAAAA,WAAA,WAAQo4C,EAAU41D,WAAUzuG,KAAK64C,EAAU1pG,IAAID,KAAK2pG,EAAU61D,gBAAgB1+J,SAE9E6oG,EAAU1pG,KAAK6wD,KAAK64C,EAAU61D,gBAAgB1+J,SAGzD,CACDoB,KAAKm9J,qBAAuB,CAAC,CAChC,KA7BL,KC2BII,GAAe,SAAAC,GAAU,OAAIA,EAAWvhJ,OAAO,GAAGzH,cAAgBgpJ,EAAWx4J,OAAO,EAA3D,EAElBqtB,GAAY85B,GAAAA,EAAAA,QAAc,CACjCsxG,sBADiC,WAE7Bz9J,KAAK09J,mBAAqB,CAAC,CAC9B,EACDC,sBAJiC,WAK7B,OAAO39J,KAAK09J,kBACf,EACDE,mBAAoB,iBAAO,CACvBl+G,cAAe,KACf1S,gBAAiB,KACjByS,YAAa,KACbo+G,oBAAqB,KAJL,EAMpBC,qBAAsB,iBAAM,EAAN,EACtBC,oBAdiC,SAcbnxJ,GAChB5M,KAAKktD,SAAS8wG,WAAWpxJ,EAC5B,EACDqxJ,uBAAwB,SAAArxJ,GAAK,OAAIitJ,GAAsBjtJ,EAA1B,EAC7BsxJ,sBAlBiC,SAkBX9kK,GAClB,OAAO4G,KAAKktD,SAASixG,UAAU/kK,EAClC,EACDglK,uBArBiC,WAsB7Bp+J,KAAKs6J,oBAAsB,CAAC,CAC/B,EACD+D,uBAxBiC,WAyB7B,OAAOr+J,KAAKs6J,mBACf,EACDv3G,KA3BiC,WA4B7B,IAAI3lD,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAEnDwmJ,EAEzBlhK,EAFAkhK,wBACqBC,EACrBnhK,EADAmhK,oBAEJv+J,KAAKw+J,KAAOzsF,GAAoB/xE,KAAKqnC,aACrCrnC,KAAKi2E,gBAAkBrD,GAAepiE,OAAOxQ,KAAM5C,EAAQqhK,gBAC3Dz+J,KAAK0+J,iBAAmB,EACxB1+J,KAAKs+J,wBAA0BA,IAA2B1xG,EAAAA,GAAAA,KAC1D5sD,KAAKu+J,oBAAsBA,IAAuB3xG,EAAAA,GAAAA,KAClD5sD,KAAK2+J,oBAAsB,IAAIzB,GAC/Bl9J,KAAK4+J,eAAexhK,EACvB,EACDwhK,eAzCiC,SAyClBxhK,GAAS,WACpB4C,KAAK63C,cACL,IACI73C,KAAKo+J,yBACLp+J,KAAKy9J,wBACLz9J,KAAKktD,SAAW,IAAIiuG,GAAQn7J,KAAK49J,qBAAsB59J,KAAK49J,qBAAsB59J,KAAKq+J,yBAA0Br+J,KAAK29J,yBACtH39J,KAAKktD,SAASyvG,YAAW,SAACvjK,EAAMyhK,EAAe38J,GAAtB,OAAgC,EAAK2gK,cAAgB,EAAKC,gBAAgB1lK,EAAMyhK,EAAe38J,EAA/F,IACzB8B,KAAKktD,SAAS6xG,cAAa,SAACpyH,EAAQ3vB,GAAT,OAAkB,EAAKgiJ,4BAA4BryH,EAAQ3vB,EAA3D,IAC3Bhd,KAAKktD,SAAS0vG,WAAU,SAACxjK,EAAM8E,EAAO28J,GAAd,OAAgC,EAAKoE,qBAAqB7lK,EAAM8E,EAAO28J,EAAvE,IACxB76J,KAAKktD,SAASgyG,eAAc,kBAAM,EAAKrnH,aAAX,IAC5B73C,KAAKktD,SAASiyG,aAAY,kBAAM,EAAKnnH,WAAX,IAC1Bh4C,KAAKktD,SAASkyG,SAASp/J,KAAK89J,wBACxB1gK,GAAWA,EAAQiiK,gBACnBjiK,EAAQiiK,eAAetnJ,MAAM/X,KAAM,CAAC5C,IAExC4C,KAAK+9J,oBAAoB3gK,EAAQygK,qBACjC79J,KAAKs/J,aAAaliK,EAGrB,CAjBD,QAgBI4C,KAAKg4C,WACR,CACJ,EACDsnH,aA9DiC,SA8DpBliK,GACT4C,KAAK2sC,OAAOvvC,EACf,EACDmmG,MAjEiC,WAiEzB,WACJvjG,KAAKu/J,6BACLv/J,KAAK+sC,GAAG,aAAa,SAAAnvC,GACjB,EAAK2gK,oBAAoBxwG,SAAS,EAAM,CAACnwD,GAC5C,GACJ,EACDohK,4BAvEiC,SAuELryH,EAAQ3vB,GAChC,IAAI5iB,EAAU4iB,EAAK5iB,SAAW,YAAY6V,OAAO+M,EAAKu6E,MAAO,oBAC7Dj4E,GAAAA,EAAAA,IAAW,QAAStf,KAAKw+J,KAAM7xH,EAAQ3vB,EAAKwiJ,MAAOplK,EACtD,EACDqlK,+BA3EiC,SA2EFD,EAAOjoE,GAClCj4E,GAAAA,EAAAA,IAAW,QAAStf,KAAKw+J,KAAMgB,EAAO,YAAYvvJ,OAAOsnF,EAAO,oBACnE,EACDgoE,2BA9EiC,WA+E7Bv/J,KAAK0/J,qBAAuB1/J,KAAK2/J,sBAAsB,kBAAmB,CACtE5e,kBAAmB,CAAC,WAAY,aAEvC,EACD6e,uBAnFiC,WAoF7B5/J,KAAK6/J,iBAAmB7/J,KAAK2/J,sBAAsB,cAAe,CAC9D5e,kBAAmB,CAAC,WAAY,aAEvC,EACD+e,eAxFiC,SAwFlBliK,GACX,OAAQA,EAAKxE,MACT,IAAK,cACL,IAAK,gBACD,MACJ,IAAK,kBACD4G,KAAKu/J,6BAEhB,EACD7sB,SAjGiC,WAkG7B1yI,KAAKs+J,wBAAwBxwG,QAC7B9tD,KAAK4/J,yBACL5/J,KAAK6/J,mBACL7/J,KAAKi2E,gBAAgB1pC,UACrBvsC,KAAKktD,SAAS3gB,UACdvsC,KAAKgkG,WAAY,CACpB,EACD+7D,YAzGiC,WA0G7B//J,KAAK0+J,kBACR,EACDsB,cA5GiC,WA6G7BhgK,KAAK0+J,iBAAmBn1J,KAAKkuB,IAAIz3B,KAAK0+J,iBAAmB,EAAG,EAC/D,EACDuB,iBA/GiC,WAgH7B,OAAO,IAAMjgK,KAAK0+J,gBACrB,EACDwB,wBAlHiC,WAmH7B,OAAQlgK,KAAKmgK,gBAAkBngK,KAAK6+J,YACvC,EACDuB,cArHiC,WAsH7B,OAAOpgK,KAAK6+J,YACf,EACDwB,cAxHiC,WAyH7BrgK,KAAK2+J,oBAAoB2B,0BACzBtgK,KAAKkgK,2BAA6BlgK,KAAKugK,sBAC1C,EACDA,qBA5HiC,WA6H7BvgK,KAAKmgK,eAAgB,EACrB,IACIngK,KAAKujG,OASR,CAVD,QAGIvjG,KAAKmgK,eAAgB,EACrBngK,KAAK+/J,cACL//J,KAAK2/J,sBAAsB,gBAAiB,CACxC5e,kBAAmB,CAAC,WAAY,aADpC/gJ,GAGAA,KAAKggK,gBACLhgK,KAAK6+J,cAAe,CACvB,CACJ,EACD91H,SA1IiC,WA2I7B,OAAO/oC,IACV,EACD63C,YAAa,WACT73C,KAAK+/J,aACR,EACD/nH,UAAW,WACPh4C,KAAKggK,gBACLhgK,KAAKigK,oBAAsBjgK,KAAKqgK,eACnC,EACDvB,gBAAiBh9I,GAAAA,KACjBm9I,qBArJiC,SAqJZtyH,EAAQzuC,EAAO28J,GAChC,GAAI76J,KAAK6+J,aAEL,IADA,IAAI2B,EAAc,CAAC7zH,GAAQ18B,OAAOjQ,KAAKktD,SAASuzG,iBAAiB9zH,IACxDhkC,EAAI,EAAGA,EAAI63J,EAAY7/J,OAAQgI,IAAK,CACzC,IAAIvP,EAAOonK,EAAY73J,GACnB/K,EAAO,CACPxE,MAAM06D,EAAAA,GAAAA,IAAa16D,GAAM,GACzBy2C,SAAUz2C,EACV8E,MAAOA,EACP28J,cAAeA,GA/JD,IAiKCzhK,EAjKgBgI,QAAQ,IAAK,KAkK5CpB,KAAKs+J,wBAAwBvwG,SAAS/tD,KAAM,EAACylD,EAAAA,GAAAA,GAAOzlD,KAAK0gK,qBAAsB9iK,KAC/EoC,KAAK0/J,sBAAqBj6G,EAAAA,GAAAA,GAAO,CAAC,EAAG7nD,KAEpCoC,KAAKgkG,WAAahkG,KAAK2gK,sBAAwBvnK,GAChD4G,KAAK8/J,eAAeliK,EAE3B,CAER,EACDgjK,cA1KiC,SA0KnBxnK,GACV,OAAO4G,KAAKktD,SAASiK,QAAQ/9D,EAChC,EACDynK,qBA7KiC,WA8K7B,MAAO,CACH16G,QAASnmD,KACToxB,UAAWpxB,KAElB,EACD0gK,mBAnLiC,WAoL7B,MAAO,CACHtvI,UAAWpxB,KAElB,EACD8gK,cAxLiC,SAwLnBC,EAAchhK,GAAQ,IAC5B8lB,EAD4B,OAEhC,OAAO,SAAA5c,GAUH,OATKolD,EAAAA,EAAAA,IAAUplD,KACXA,EAAI,CAAC,IAEJm+B,EAAAA,EAAAA,IAAcn+B,KACfA,EAAI,CACA+3J,YAAa/3J,KAGrB4c,EAASA,GAAU,IAAIw6H,GAAO0gB,GAAct7G,EAAAA,GAAAA,GAAO,CAAC,EAAG1lD,EAAQ,EAAK8gK,0BACtDpf,QAAQhjJ,KAAKonB,GAAQ4/B,EAAAA,GAAAA,GAAOx8C,EAAG,EAAKy3J,sBACrD,CACJ,EACDf,sBAvMiC,SAuMXnwH,EAAYzvC,GAC9B,IACI8lB,EACArnB,EACAyiK,EAHAl6J,EAAQ/G,KAIZD,GAAS0lD,EAAAA,GAAAA,GAAO,CAAC,EAAG1lD,GACpB,IAAIyD,EAAS,WACT,IAAKhF,EAAW,CAEZ,GADAuB,EAASA,GAAU,CAAC,EAChB,kBAAoByvC,EACpB,MAAMlwB,GAAAA,EAAAA,MAAa,SAEnB,IAAMkwB,EAAWpuC,QAAQ,QACzB5C,EAAY++J,GAAa/tH,IAE7ByxH,EAAal6J,EAAM4lC,OAAO6C,EAC7B,CACD,GAAK3pB,GAAWo7I,GAAelhK,EAAO0gJ,eAAkB1gJ,EAAO4gJ,cAAiB55I,EAAMkvE,gBAAgBirF,SAAS1iK,GAA/G,CAGA,IAAKqnB,EAAQ,CACT,IAAI46H,EAAgB1gJ,EAAO0gJ,cAC3B1gJ,EAAO0gJ,cAAgB,WACnB,IAAK,IAAIj3E,EAAQ1xD,UAAUnX,OAAQmK,EAAQ,IAAIjG,MAAM2kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACnF3+D,EAAM2+D,GAAS3xD,UAAU2xD,GAE7Bg3E,GAAiBA,EAAc1oI,MAAMhR,EAAO+D,GAC5C/D,EAAMkvE,gBAAgB2B,UAAUp5E,EAAWsM,EAAM,GAAGlN,KACvD,EACDioB,EAAS9e,EAAM+5J,cAAcG,EAAYlhK,EAC5C,CACD,IAAK,IAAI+sD,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,GAE3B,IAAIwhE,EAAAA,GAAAA,KAASvyB,yBAA0B,CACnC,IAAI68G,EAAsBp6J,EAAM4lC,OAAO,wBAA0B7qB,GAAAA,KAC7Ds/I,EAAgBD,EAAoBp6J,EAAO8e,EAAQ9lB,IAAW8lB,EAClE,OAAOu7I,EAAcrpJ,MAAMhR,EAAOnJ,EACrC,CACD,OAAOioB,EAAO9N,MAAMhR,EAAOnJ,EApB1B,CAqBJ,EACD,OAAIi5E,EAAAA,GAAAA,KAASvyB,yBACF9gD,GAEWxD,KAAK2sC,OAAO,oBAAsB7qB,GAAAA,MACjC9hB,KAAMwD,EAAQzD,IAAWyD,CACnD,EACDupC,GAtPiC,SAsP9BvuC,EAAWy0E,GAEV,OADAjzE,KAAKi2E,gBAAgBlpC,GAAGvuC,EAAWy0E,GAC5BjzE,IACV,EACDs2C,IA1PiC,SA0P7B93C,EAAWy0E,GAEX,OADAjzE,KAAKi2E,gBAAgB3/B,IAAI93C,EAAWy0E,GAC7BjzE,IACV,EACDqhK,sBAAuB,SAAS7D,GAC5B,QAASx9J,KAAKktD,SAASytG,OAAO6C,IAAex9J,KAAKi2E,gBAAgBirF,SAAS3D,GAAaC,GAC3F,EACD8D,mBAjQiC,SAiQdloK,GACf,OAAO4G,KAAKktD,SAASq0G,aAAanoK,EACrC,EACDooK,8BApQiC,SAoQHpoK,EAAM8E,GAChC8B,KAAK2gK,oBAAsBvnK,EAC3B4G,KAAK2sC,OAAOvzC,EAAM8E,GAClB8B,KAAK2gK,qBAAsB,CAC9B,EACDc,gBAzQiC,SAyQjBroK,EAAM+sD,GAClB,IAAIjoD,EAAQ8B,KAAK2sC,OAAOvzC,GACxB,OAAIy1D,EAAAA,EAAAA,IAAW3wD,GACJA,EAAMpB,KAAKqpD,EAAXjoD,GAEJA,CACV,EACDyuC,OAhRiC,WAgRxB,MACL,OAAO,EAAA3sC,KAAKktD,UAASvgB,OAAd,QAAwB70B,UAClC,EACDggC,YAnRiC,SAmRrB1+C,GACR4G,KAAK63C,cACL73C,KAAKktD,SAAS1mB,MAAMptC,GACpB4G,KAAKg4C,WACR,ICrTQ0pH,GAAb,0CACI,WAAYpzH,GAAQ,6BAChB,gBACKwsC,QAAUxsC,EAFC,CAGnB,CAJL,0CAKI,SAAYlxC,GACR,OAAO47E,GAAyBh5E,KAAK86E,QAAQ19E,GAChD,KAPL,GAAsC88E,ICHzBynF,GAAb,0CACI,WAAYvoK,GAAM,6BACd,gBACKA,KAAOA,EAFE,CAGjB,CAJL,kBAA0C8gF,IRCtC0nF,GAAkB,CAAC,EAehB,SAASC,KACZ,OAAOnL,EACV,CAf4CC,GSMX,CAC9BjqJ,QAAS,SAAAF,GAAO,OAAIwsE,GAAyBxsE,EAA7B,EAChB8hC,OAAQ,SAAC9uB,EAAUi2B,EAAOt0C,GAAlB,OAA4Bqe,EAAS8L,OAArC,GTPRs2I,GSKmB,WTLKjL,GAErB,SAA2BA,GAC9B,IAAIjmG,EAAAA,EAAAA,IAASimG,IAET,KADAD,GAAwBkL,GAAgBjL,IAEpC,MAAMr3I,GAAAA,EAAAA,MAAa,QAASq3I,QAGhCD,GAAwBC,CAE/B,CSFDmL,CAAkB,WACX,IAAMrwH,GAAb,0CACI,WAAYjlC,GAAS,6BACjB,gBACKi/B,SAAWj/B,EAFC,CAGpB,CAJL,0CAKI,SAAYpP,GACR,IAAIi9E,EAAaj9E,EAAQi9E,WAIzB,OAHKA,GAAer6E,KAAK+hK,oBACrB/hK,KAAK+hK,kBAAoBF,KAA2Bn1J,QAAQ1M,KAAKyrC,WAE9DslC,GAAE,SAASprE,OAAO00E,EAAar6E,KAAKyrC,SAAWo2H,KAA2BvzH,OAAOtuC,KAAK+hK,kBAAmB3kK,EAAQq4C,MAAOr4C,EAAQ+D,QAAQ4tE,UAClJ,GAXL,oBAYI,WACI,OAAOgC,GAAE/wE,KAAKyrC,UAAUngB,OAC3B,KAdL,GAA8B4uD,ICmBnB8nF,GAAgB,SAACx1J,EAASpT,GACjC,IAAI8zC,EAAY6jC,GAAEvkE,GAASuiE,WAAWv0C,OAAO,IAAIvqB,OAAO,eAAgB,OAAOA,OAAO7W,EAAM,OAC5F,MAAO,GAAG2L,MAAMtG,KAAKyuC,GAAWnpC,KAAI,SAAAyI,GAChC,IAAIy4C,EAAgB8rB,GAAEvkE,GAAS0hE,KAAK,iBAAmB,GACvD,MAAO,CACH1hE,QAASA,EACTpP,SAAS2C,EAAAA,GAAAA,KAASilD,cAAcC,GAAe7rD,GAEtD,IAAEohC,QAAO,SAAAhb,GAAQ,QAAMA,EAASpiB,OAAf,GACrB,EAgBU6kK,GAAqB,SAAAziJ,GAC5B,IAAI8uB,EAAS9uB,EAAS8uB,OAAOxxC,KAAK0iB,GAClC,OAAOimC,EAAAA,GAAAA,GAAO,CAAC,EAAGjmC,EAAU,CACxB8uB,OADwB,SACjBlxC,GACH,IAAI8kK,EAAiB5zH,EAAOlxC,GAE5B,OADAA,GAAWA,EAAQm5C,YAAcn5C,EAAQm5C,aAClC2rH,CACV,GAER,EAwBUC,GAAc,SAAAC,GAAc,OAAIrmG,EAAAA,EAAAA,IAAWqmG,IAAmBA,EAAe,IAAMA,CAAvD,EAC5BC,GAAuB,SAAA71J,GAAO,OAAI,IAAIilC,GAASjlC,EAAjB,EAC9B81J,GAA6B,SAACF,EAAgBl1H,EAAWq1H,EAAiBC,GACjF,IAAIC,EAAsB,KAY1B,OAXKD,IAAkB,IAAMA,EAAcphK,QAAQghK,MAC/CK,EAAsBv1H,EAAUk1H,KACHK,aAA+BvoF,MACpDrrB,EAAAA,EAAAA,IAAW4zG,EAAoBn0H,UAC/Bm0H,EA/B2B,SAAAjjJ,GACvC,IAAI8uB,EAAS9uB,EAAS8uB,OAAOxxC,KAAK0iB,GAClC,OAAOimC,EAAAA,GAAAA,GAAO,CAAC,EAAGjmC,EAAU,CACxB8uB,OADwB,SACjBlxC,GACH,IAAIo9E,EAAazJ,GAAE3zE,EAAQmK,WAC3B,OAAO+mC,GAAOv1B,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS,CAChCmK,UAAWs6I,GAAiBrnE,KAEnC,GAER,CAqBqCkoF,CAA8BD,IAEnDF,IACDE,EAAsBR,GAAmBQ,KAI9CA,CACV,EACUE,GAAkB,SAACP,EAAgBQ,EAAgB11H,EAAWq1H,EAAiBC,EAAeK,GACrG,OAAI,MAAQT,EACD,IAAIzmF,GAEXymF,aAA0BT,GACnBkB,EAAiBT,EAAehpK,MAEvCgpK,aAA0BloF,GACnBkoF,GAEPvzG,EAAAA,EAAAA,IAAWuzG,EAAe9zH,WAAYytB,EAAAA,EAAAA,IAAWqmG,GAC1CG,EAAkBH,EAAiBH,GAAmBG,GAE7DA,EAAersH,WAAYgmB,EAAAA,EAAAA,IAAWqmG,GAC/BQ,EAAe7xF,GAAEqxF,IAErBE,GAA2BF,EAAgBl1H,EAAWq1H,EAAiBC,IAAkBK,EAAiBT,IAAmBQ,EAAeR,EACtJ,ECjGGU,GAA+B,IAAIpB,IAAiB,SAAA1qJ,GACpD,IACWy+B,EAEPz+B,EAFAy+B,MACQ5qC,EACRmM,EADAnM,OAEAk4J,EAAattH,EAAMutH,OACvB,IAAKD,EACD,OAAOhyF,KAEX,IAAIkyF,EAAgBlyF,GAAE,SAClBmyF,EAAgBztH,EAAMr4C,SAAW,CAAC,EAMtC,OALIyN,EACAA,EAAOs4J,iBAAiBF,EAAeF,EAAYG,GAEnDD,EAAcF,GAAYG,GAEvBD,CACV,IACYG,GAAb,WACI,WAAY/6J,EAAeg7J,IAAuB,eAC9CrjK,KAAKsjK,eAAiB,GACtBtjK,KAAKujK,kBAAoB,CAAC,EAC1BvjK,KAAKwjK,uBAAyBH,GAzBR,WA0BtBrjK,KAAKyjK,eAAiBp7J,GAAiBg6J,GACvCriK,KAAK0jK,wBAA0B1jK,KAAK0jK,wBAAwB5mK,KAAKkD,KACpE,CAPL,kDAyBI,WACI,OAAOA,KAAKwjK,sBACf,GA3BL,iCA4BI,SAAoBt2H,GAChBltC,KAAKujK,mBAAoB99G,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKujK,kBAAmBr2H,EAC/D,GA9BL,qBA+BI,WACIltC,KAAKsjK,eAAe5iK,SAAQ,SAAAijK,GACxBA,EAAankJ,SAAS+sB,SAAWo3H,EAAankJ,SAAS+sB,SAC1D,IACDvsC,KAAKsjK,eAAiB,EACzB,GApCL,8BAqCI,SAAiBM,GAGb,MAAO,CACH12H,UAHYltC,KAAK6jK,kBAAkBD,GAInCE,sBAHwB9jK,KAAK+jK,0BAA0BH,GAK9D,GA5CL,+BA6CI,SAAkBA,GAAK,WACf12H,EAAY80H,GAAc4B,EAlEV,cAmEhBI,EDlDyB,SAAAC,GACjC,IvCwCyBC,EuCxCrBC,GvCwCqBD,EuCxCgB,SAAA1kJ,GAAQ,OAAIA,EAASpiB,QAAQhE,IAArB,EAAtB6qK,EvCwCqB9/J,QAAO,SAACigK,EAAex/J,GACvE,IAAIy/J,EACAnqB,EAAYgqB,EAAat/J,GAG7B,OAFAw/J,EAAclqB,GAAa,QAAUmqB,EAAwBD,EAAclqB,UAAe,IAAWmqB,EAAwBA,EAAwB,GACrJD,EAAclqB,GAAW95I,KAAKwE,GACvBw/J,CACV,GAAE,CAAC,IuC7CA,GAAID,OAAa,GACb,MAAMG,GAAAA,EAAAA,MAAa,SAEvB,IAAI9gK,EAAS,CAAC,EAQd,OAPAxF,OAAOgB,KAAKmlK,GAAczjK,SAAQ,SAAAtH,GAC9B,IAAImrK,EACAC,EAAmB,QAAUD,GAAoB50G,EAAAA,GAAAA,iBAAgBqoB,GAAAA,UAAmBmsF,EAAa/qK,IAAO,SAAAomB,GAAQ,OAAIA,EAASpiB,OAAb,IAAsB,UAAO,IAAWmnK,OAAoB,EAASA,EAAkB/3J,QACvMg4J,IACAhhK,EAAOpK,GAAQorK,EAEtB,IACMhhK,CACV,CCoC+BihK,CAAwBv3H,GAchD,OAbAA,EAAUxsC,SAAQ,SAAAgkK,GACd,IACal4J,EAITk4J,EAJAl4J,QAEUpT,EAEVsrK,EAHAtnK,QACIhE,KAGJoT,IAAYw3J,EAAkB5qK,GAC9B23E,GAAEvkE,GAAS4hE,SA3EE,uBA2E+Bc,SAE5C6B,GAAEvkE,GAAS9O,QAElB,IACMM,OAAOgB,KAAKglK,GAAmBjgK,KAAI,SAAA3K,GAAI,MAAK,CAC/CA,KAAMA,EACNomB,SAAU,EAAKmlJ,gBAAgBX,EAAkB5qK,IAFP,GAIjD,GAjEL,uCAkEI,SAA0BwqK,GACtB,IAAIgB,EAAqBhB,EAAI70F,WAAWG,SAMxC,OAL8B01F,EAAmBpqI,QAAO,SAAC17B,EAAG0N,GACxD,IAAIk6C,EA3FA,IA2Fal6C,EAAQupC,SACrB8uH,EAAc9zF,GAAEvkE,GAAS7F,OAAOpE,OAAO5B,OAAS,EACpD,QAAS+lD,GAAcm+G,EAC1B,IAC8BlkK,OAAS,EAAI,CACxC6e,SAAUxf,KAAK2kK,gBAAgBC,GAC/BxrK,KAAM4G,KAAKwjK,wBACX,CAAC,CACR,GA7EL,qCA8EI,SAAwBpB,GACpB,IAAI0C,EAAiB9kK,KAAKsjK,eAAe9oI,QAAO,SAAAmpI,GAAY,OAAIA,EAAap8H,SAAW46H,GAAYC,EAAxC,IAAyD,GACrH,GAAI0C,EACA,OAAOA,EAAetlJ,SAE1B,IAAIA,EAAWxf,KAAK2kK,gBAAgBvC,GAKpC,OAJApiK,KAAKsjK,eAAeljK,KAAK,CACrBof,SAAUA,EACV+nB,OAAQ46H,GAAYC,KAEjB5iJ,CACV,GAzFL,6BA0FI,SAAgB4iJ,GACZ,OAAOpiK,KAAKyjK,eD/CgB,SAAArB,GAAc,MAAI,kBAAoBA,EAAiBppF,GAAyBopF,GAAkBA,CAApF,CC+Cf2C,CAAuB3C,GACrD,GA5FL,yBA6FI,SAAYA,EAAgBl1H,EAAW44G,EAAO3/F,GAAS,WAE9Bo8G,EAEjBzc,EAFAyc,gBACeC,EACf1c,EADA0c,cAEJ,OAAK3zG,EAAAA,EAAAA,IAAWuzG,GAGT,IAAIV,IAAiB,SAAAtkK,GACxB,IAAI4nK,EAAuB5C,EAAerqJ,MAAMouC,EDrErB,SAAA/oD,GACnC,IAAIQ,EAAO,GAQX,MAPI,UAAWR,GACXQ,EAAKwC,KAAKhD,EAAQq4C,OAElB,UAAWr4C,GACXQ,EAAKwC,KAAKhD,EAAQ+D,OAEtBvD,EAAKwC,KAAKhD,EAAQmK,WACX3J,CACV,CC2DoEqnK,CAA0B7nK,IACnF,KAAKixD,EAAAA,EAAAA,IAAU22G,GACX,OAAO,IAAIrpF,GAEf,IAAIpvC,GAAU,EACV/sB,EAAWmjJ,GAAgBqC,GAAsB,SAAA5C,GACjD,OAAIA,EAAersH,WAAYgmB,EAAAA,EAAAA,IAAWqmG,KAAoBrxF,GAAEqxF,GAAgBnzF,GAAG,UACxE,IAAIyyF,IAAiB,kBAAMU,CAAN,KAEhC71H,GAAU,EACH,EAAKo4H,gBAAgBvC,GAC/B,GAAEl1H,EAAWq1H,EAAiBC,EAAe,EAAKe,mBAC/C//J,EAASgc,EAAS8uB,OAAOlxC,GAE7B,OADAmvC,GAAW/sB,EAAS+sB,SAAW/sB,EAAS+sB,UACjC/oC,CACV,IAlBUm/J,GAAgBP,EAAgBpiK,KAAK0jK,wBAAyBx2H,EAAWq1H,EAAiBC,EAAexiK,KAAKujK,kBAmB5H,IAtHL,mCAQI,WACI,MAAO,CACH9rH,mBAAoB,CAChBmjC,YAAa,SAAS78E,EAAIR,GACtB,IAAIH,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAIhF,OAHK1a,EAAQ8nK,eACT3nK,EAASQ,KAEN+jB,GAAAA,IACV,EACDorB,UAAW,CACP,sBAAuB41H,IAE3Bj4H,4BAA4B,GAGvC,KAxBL,gBC1CIs6H,GAA0B,mBAG1BC,GAAY,oBACZC,GAAuB,SAAAp8J,GAAC,MAAK,CAC7Bq8J,QAAShf,GAAiBr9I,GAC1B3G,IAAK2G,EAAE3G,IACPjI,KAAM4O,EAAE5O,KACRkrK,KAAMt8J,EAAEwrB,QACR9B,SAAU1pB,EAAE0pB,SACZ4B,QAAStrB,EAAEsrB,QACX2D,MAAOjvB,EAAEipJ,SACTvN,IAAK17I,EAAEurB,OACP6tC,MAAOp5D,EAAEo5D,MACTH,cAAej5D,EAVS,EAYxBu8J,GAAoBr5G,GAAAA,EAAAA,QAAc,CAClCs5G,SAAUjiB,GAfM,UAesB4hB,IACtCM,kBAAmBliB,GAAa2hB,GAAyBC,IACzDO,gBAAiBniB,GAlBO,iBAkB6B4hB,IACrDriH,KAAM,SAAS3lD,GAAS,YACpBA,EAAUA,GAAW,CAAC,GACVoP,UACRxM,KAAKyrC,SAAWslC,GAAE3zE,EAAQoP,UAE1BpP,EAAQwoK,cACR5lK,KAAK6lK,aAAezoK,EAAQwoK,aAEhC5lK,KAAKgsJ,SAAW5uJ,EAAQ0D,QACpBd,KAAKyrC,WACLzrC,KAAK8lK,iBAAmB,SAAA78J,GACpB,IAAI88J,EAAeh1F,GAAE,EAAK80F,cAAcn4F,UACpCs4F,EAAmB,EAAKH,cAAgB,EAAKA,eAAiB58J,EAAE0O,SAAWouJ,EAAaxgK,SAAS0D,EAAE0O,QACnGsuJ,EAAuB,EAAKC,0BAA4B,MAAQj9J,EAAEo5D,OAAS,EAAK8jG,cAAgBH,EACpG,EAAKE,0BAA2B,EAC3BD,GACD,EAAK/8J,QAAQD,EAEpB,EACDjJ,KAAKomK,6BAA+BpmK,KAAKqmK,iBAAiBvpK,KAAKkD,MAC/Du+D,EAAAA,EAAAA,GAAgBv+D,KAAKyrC,SAAUzrC,KAAKylK,SAAUzlK,KAAK8lK,kBACnDvnG,EAAAA,EAAAA,GAAgBv+D,KAAKyrC,SAAUzrC,KAAK0lK,kBAAmB1lK,KAAKomK,8BAC5D7nG,EAAAA,EAAAA,GAAgBv+D,KAAKyrC,SAAUzrC,KAAK2lK,gBAAiB3lK,KAAKomK,8BAEjE,EACD75H,QAAS,WACDvsC,KAAKyrC,WACL8yB,EAAAA,EAAAA,IAAiBv+D,KAAKyrC,SAAUzrC,KAAKylK,SAAUzlK,KAAK8lK,kBACpDvnG,EAAAA,EAAAA,IAAiBv+D,KAAKyrC,SAAUzrC,KAAK0lK,kBAAmB1lK,KAAKomK,8BAC7D7nG,EAAAA,EAAAA,IAAiBv+D,KAAKyrC,SAAUzrC,KAAK2lK,gBAAiB3lK,KAAKomK,+BAE/DpmK,KAAKyrC,cAAW,EAChBzrC,KAAKgsJ,cAAW,CACnB,EACD9iJ,QAAS,SAASD,GACdjJ,KAAKgsJ,SAASqZ,GAAqBp8J,GACtC,EACDo9J,iBAAkB,SAASrvJ,GACvB,IACU3R,EACN2R,EADA3R,KAEJrF,KAAKmmK,aAAe9gK,IAAS8/J,GAC7BnlK,KAAKkmK,0BAA4BlmK,KAAKmmK,YACzC,IAELX,GAAkBH,qBAAuBA,GACzC,UCnEA,SAAS7hB,GAAaziJ,EAAOogE,GACzB,OAAOA,EAAYmlG,GAAiBvlK,EAAOogE,GAAapgE,CAC3D,CAED,SAASwlK,GAAc1gJ,EAAQjoB,GAC3B,MAAO,oBAAsBioB,EAASA,EAAOjoB,GAAQioB,EAAO47H,QAAQ7jJ,EACvE,CACM,IAAIkoB,GACH,SAAC89I,EAAK99I,EAAQ0gJ,EAAUziC,GACxB,IACc7zH,EAIV6zH,EAJA7zH,SACau2J,EAGb1iC,EAHA0iC,YACaC,EAEb3iC,EAFA2iC,YACWvlG,EACX4iE,EADA5iE,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,WAAYriF,GAAYjxD,EAAU,CAChE62B,QAAS0/H,IACV,SAAA1lK,GAAK,OAAIwlK,GAAczgJ,EAAQ,CAC9B/kB,MAAOA,EACPyL,QAASzL,EAAMy+D,eAFX,IAIRjB,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,aAAcriF,GAAYjxD,EAAU,CAClE62B,QAAS2/H,IACV,SAAA3lK,GAAK,OAAIwlK,GAAcC,EAAU,CAChCzlK,MAAOA,EACPyL,QAASzL,EAAMy+D,eAFX,GAIX,EApBM15C,GAqBF,SAAC89I,EAAK5sJ,GACP,IACemqD,EAEXnqD,EAFAmqD,UACUjxD,EACV8G,EADA9G,SAEJquD,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,WAAYriF,GAAYjxD,GAC3DquD,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,aAAcriF,GAAYjxD,EAChE,EAEMy2J,GACH,SAAS/C,EAAK+C,GACd,IAAI,EAEA7uJ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EADvDqpD,EADf,EACIA,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,WAAYriF,GAAYwlG,EAC7D,EANMA,GAOF,SAAS/C,GACV,IAAI,EAEA9rJ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EADvDqpD,EADf,EACIA,UAEJ5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,WAAYriF,GAClD,EAEMp7C,GACH,SAAC69I,EAAKrnI,EAAOryB,EAAKw6J,GAClB,IACcx0J,EAEVw0J,EAFAx0J,SACWixD,EACXujG,EADAvjG,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,aAAcriF,GAAYjxD,GAAU,SAAAnP,GAAK,OAAImJ,EAAInJ,EAAR,IAC3Ew9D,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,eAAgBriF,GAAYjxD,GAAU,SAAAnP,GAAK,OAAIwlK,GAAchqI,EAAO,CAClG/vB,QAASzL,EAAM4W,OACf5W,MAAOA,GAFkE,GAIhF,EAXMglB,GAYF,SAAC69I,EAAK9d,GACP,IACc51I,EAEV41I,EAFA51I,SACWixD,EACX2kF,EADA3kF,UAEJ5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,eAAgBriF,GAAYjxD,GAC/DquD,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,aAAcriF,GAAYjxD,EAChE,EAEMqzB,GACH,SAACqgI,EAAKgD,EAAOC,EAAQtgB,GACrB,IACeplF,EACXolF,EADAplF,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,WAAYriF,GAAY0lG,GAC1DtoG,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,UAAWriF,GAAYylG,EAC5D,EAPMrjI,GAQF,SAACqgI,EAAKjd,GACP,IACexlF,EACXwlF,EADAxlF,UAEJ5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,WAAYriF,IAC/C5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,UAAWriF,GACjD,EAEM96C,GACH,SAACu9I,EAAKkD,EAASC,EAAUjgB,GACzB,IACe3lF,EACX2lF,EADA3lF,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,UAAWriF,GAAY2lG,GACzDvoG,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,WAAYriF,GAAY4lG,EAC7D,EAPM1gJ,GAQF,SAACu9I,EAAKoD,GACP,IACe7lG,EACX6lG,EADA7lG,UAEJ5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,UAAWriF,IAC9C5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,WAAYriF,GAClD,EAdM96C,GAeE,SAAAu9I,GAAG,OAAIrlG,EAAAA,EAAAA,QAAqBqlG,EAAK,QAA9B,EAELqD,GACH,SAASrD,EAAKsD,GACd,IAAI,EAEApvJ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EADvDqpD,EADf,EACIA,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,UAAWriF,GAAY+lG,EAC5D,EANMD,GAOF,SAASrD,GACV,IAAI,EAEA9rJ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EADvDqpD,EADf,EACIA,UAEJ5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,UAAWriF,GACjD,EAEM+lG,GACH,SAAStD,EAAKsD,GACd,IAAI,EAEApvJ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EADvDqpD,EADf,EACIA,UAEJ5C,EAAAA,EAAAA,GAAgBqlG,EAAKpgB,GAAa,QAASriF,GAAY+lG,EAC1D,EANMA,GAOF,SAAStD,GACV,IAAI,EAEA9rJ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EADvDqpD,EADf,EACIA,UAEJ5C,EAAAA,EAAAA,IAAiBqlG,EAAKpgB,GAAa,QAASriF,GAC/C,EAEDhgE,GAAQ,EACRgmK,GAAqB,CAAC,EAEfjiB,GACH,SAAC14I,EAASo5J,EAAa9kK,GACvB,IAAIsmK,EAHmB,sBAAsBn3J,OAAO9O,MASpD,OALAgmK,GAAmBC,GAAc,IAAI5B,GAAkB,CACnDh5J,QAASA,EACTo5J,YAAaA,EACb9kK,QAASA,IAENsmK,CACV,EATMliB,GAUF,SAAAkiB,GACGA,GAAcD,GAAmBC,KACjCD,GAAmBC,GAAY76H,iBACxB46H,GAAmBC,GAEjC,EC/GS/jH,GACVhxB,GAAAA,SACAg1I,GAAeh1I,GAAUhH,QAAQ,CACjCuyI,mBADiC,WAE7B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BxxB,WAAO,EACPnE,YAAQ,EACRwzB,YAAYjgD,EAAAA,GAAAA,KAASigD,WACrBlC,YAAa,CAAC,EACdt4B,UAAU,EACViyB,mBAAoB,CAAC,GACtBz3C,KAAKsnK,gBAAkBlE,GAAgBmE,uBAAyB,CAAC,EACvE,EACDxkH,KAXiC,SAW5Bv2C,EAASpP,GACV4C,KAAKwnK,aAAe,KACpBxnK,KAAKyjK,eAAej3J,GACpB+kE,GAAwBvxE,KAAKgnJ,UAAWhnJ,KAAMA,KAAK0yI,UACnD1yI,KAAKmiD,SAAS/kD,EACjB,EACDqmK,eAjBiC,SAiBlBj3J,GACXxM,KAAKgnJ,UAAYj2E,GAAEvkE,EACtB,EACDi7J,4CAA6C,iBAAM,CAAC,aAAc,WAAY,gCAAjC,EAC7CC,+BAAgC,SAASlH,GAAa,WAC7CxgK,KAAK2sC,OAAO,oCACb6zH,EAAY9/J,SAAQ,SAAA8uC,IACZqf,EAAAA,EAAAA,IAAW,EAAKliB,OAAO6C,KACvBlwB,GAAAA,EAAAA,IAAW,QAASkwB,EAE3B,GAER,EACDm4H,mBAAoBtkH,GACpBukH,kBAAmBvkH,GACnBkgD,MAhCiC,WAiC7BvjG,KAAKmiD,WACLniD,KAAK0nK,+BAA+B,CAAC,QAAS,SAAU,YAAa,WAAY,YAAa,WAAY,cAAe,eACzH1nK,KAAK6nK,8BACL7nK,KAAK8nK,sBACR,EACD/J,oBAtCiC,SAsCbgK,GAChB/nK,KAAKmiD,SAAS,GAAGlyC,OAAOjQ,KAAKqnC,YAAY2gI,mBAAqB,GAAID,GAAuB,IAC5F,EACD7J,sBAzCiC,SAyCX9kK,GAElB,QADqB4G,KAAKqnC,YAAY2gI,mBAAqBhqK,OAAOgK,UAAU6X,eAAephB,KAAKuB,KAAKi+J,uBAAuBj+J,KAAKqnC,YAAY2gI,mBAAoB5uK,KACvI4G,KAAKmiD,SAAS/oD,EAC3C,EACDyuK,4BA7CiC,WA8C7B,GAAI7nK,KAAKioK,8BAA+B,CACpC,IAAIC,EAAuBloK,KAAKmoK,sBAAwBnoK,KAAK4nK,kBAAkB9qK,KAAKkD,MACpFooK,GAAAA,IAA0BF,EAC7B,CACJ,EACDD,4BAnDiC,WAoD7B,OAAOjoK,KAAK4nK,oBAAsBvkH,EACrC,EACDglH,iBAtDiC,WAuD7BroK,KAAKsoK,eACLxnH,EAAAA,EAAAA,OAAe9gD,KAAK86E,SACvB,EACDwtF,YA1DiC,WA2D7B,IACgBtoH,GACZhgD,KAAK2sC,UAAY,CAAC,GADlBqT,WAEJhgD,KAAKuoK,2BACLvoK,KAAKwoK,oBAAoBxoH,GACzBhgD,KAAKyoK,0BACLzoK,KAAK0oK,mBACR,EACD5tF,QAnEiC,WAoE7B96E,KAAK2oK,mCACL5uG,EAAAA,GAAAA,GAAmB/5D,KAAKg6D,WAC3B,EACDuuG,yBAvEiC,WAwE7B,IACiBzqH,GACb99C,KAAK2sC,UAAY,CAAC,GADlBmR,YAEA8qH,GAAanjH,EAAAA,GAAAA,GAAO,CAAC,EAAG3H,GACxBvkC,EAAaqvJ,EAAWC,aACrBD,EAAWC,MAClB7oK,KAAKg6D,WAAWkU,KAAK06F,GAAYv6F,YAAYruE,KAAKwnK,cAAcp5F,SAAS70D,GACzEvZ,KAAKwnK,aAAejuJ,CACvB,EACDkvJ,wBAjFiC,YAkFzBzoK,KAAKioK,+BACLjoK,KAAK8oK,iCAEL9oK,KAAK+oK,iCACU/oK,KAAKg6D,WACXoU,SAAS,+BAEzB,EACDs6F,kBA1FiC,WA2F7B,IAAI1uG,EAAWh6D,KAAKg6D,WAChBxtD,EAAUwtD,EAASpgE,IAAI,GACvB+2B,EAAQ3wB,KAAKyhK,gBAAgB,QAASj1J,GACtCggB,EAASxsB,KAAKyhK,gBAAgB,SAAUj1J,GACxCxM,KAAKgpK,qBAAqBx8J,EAASggB,EAAQmE,IAC3CqpC,EAAS10B,IAAI,CACT3U,MAAO,OAASA,EAAQ,GAAKA,EAC7BnE,OAAQ,OAASA,EAAS,GAAKA,GAG1C,EACDw8I,qBAAsB,SAACx8J,EAASggB,EAAQmE,GAAlB,UAA+B09B,EAAAA,EAAAA,IAAU19B,KAAU09B,EAAAA,EAAAA,IAAU7hC,IAAWhgB,EAAQsqB,MAAMnG,OAASnkB,EAAQsqB,MAAMtK,OAA7G,EACtBs8I,+BAvGiC,WAuGA,WACzBlF,EAAM5jK,KAAKg6D,WACXmH,EAAY,GAAGlxD,OAAOjQ,KAAKw+J,KAAM,oBACrCyK,GAAgBrF,EAAK,CACjBziG,UAAWA,IAEf8nG,GAAerF,GAAK,kBAAM,EAAKgE,mBAAX,GAAgC,CAChDzmG,UAAWA,GAElB,EACDwnG,gCAjHiC,WAiHC,WAC9B,GAAI3oK,KAAK+oK,+BAAgC,CACrC,IAAInF,EAAM5jK,KAAKg6D,WACXmH,EAAY,GAAGlxD,OAAOjQ,KAAKw+J,KAAM,oBACrCx+J,KAAKkpK,WAAalpK,KAAKmpK,aACvBC,GAAqBxF,EAAK,CACtBziG,UAAWA,IAEfioG,GAAoBxF,GAAK,kBAAM,EAAKyF,wBAAwB,QAAnC,IAA6C,kBAAM,EAAKA,wBAAwB,SAAnC,GAA8C,CAChHloG,UAAWA,GAElB,CACJ,EACDgoG,WA9HiC,WAgI7B,OADenpK,KAAKg6D,WACJiV,GAAG,WACtB,EACDo6F,wBAlIiC,SAkITxjJ,GACJ7lB,KAAKmpK,eAEb,WAAatjJ,GAAW7lB,KAAKkpK,UAGtB,UAAYrjJ,GAAU7lB,KAAKkpK,YAClClpK,KAAKkpK,WAAY,EACjBlpK,KAAK2nK,oBAAmB,KAJxB3nK,KAAK2nK,oBAAmB,GACxB3nK,KAAKkpK,WAAY,GAM5B,EACDH,6BA9IiC,WA+I7B,OAAO/oK,KAAK2nK,qBAAuBtkH,KAAYvC,EAAAA,EAAAA,KAClD,EACDwoH,OAAQxnJ,GAAAA,KACRynJ,gBAlJiC,WAmJ7B,IACoBC,EAChBxpK,KAAK2sC,SADL68H,eAEAxvG,EAAWh6D,KAAKg6D,WACpB,OAAOwvG,EAAiBA,EAAexvG,QAAY,CACtD,EACDyvG,YAzJiC,WA0J7B,GAAIzpK,KAAKigK,mBACL,MAAM3gJ,GAAAA,EAAAA,MAAa,SAEvBtf,KAAK0pK,iBAAkB,CAC1B,EACDC,SA/JiC,WAgK7B3pK,KAAKspK,SACLtpK,KAAKqoK,kBACR,EACD31B,SAnKiC,WAoK7B1yI,KAAK4pK,kBAAoB5pK,KAAK4pK,iBAAiBr9H,UAC/CvsC,KAAKmiD,WACLniD,KAAKspK,SACLtpK,KAAK6pK,6BACR,EACDA,4BAzKiC,WA0KzB7pK,KAAKioK,+BACLG,GAAAA,OAA6BpoK,KAAKmoK,sBAEzC,EACDK,oBA9KiC,SA8KbsB,GACD9pK,KAAKg6D,WACXiU,YAAY,SAAU67F,EAClC,EACD3G,iBAlLiC,SAkLhB32J,EAAS4kB,GAAW,WAC7BrxB,EAAS+X,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAC3EiyJ,GAAwBr4G,EAAAA,GAAAA,MAAK1xD,KAAKynK,+CAA+C,SAAAvpK,GAAK,QAAMA,KAAS6B,EAAf,IACtF,EAEAC,KAAK2sC,SADe8K,EADxB,EACIA,mBAEA,EAEAz3C,KAAK2sC,SADmBq9H,EAD5B,EACIA,uBAEJA,EAAyBA,GAA0BloJ,GAAAA,KACnD,IAAImoJ,GAAwBxkH,EAAAA,GAAAA,GAAO,CAC/BhO,mBAAoBA,GACrBuyH,EAAuBhqK,OAC1B+pK,EAAsBrpK,SAAQ,SAAA8uC,GAAU,OAAIy6H,EAAsBz6H,GAAc,EAAK7C,OAAO6C,EAApD,IACxCxvC,KAAKkqK,cAAcnqK,EAAQkqK,GAC3B,IAAIlhI,OAAW,EACf,IAAI2nB,EAAAA,EAAAA,IAASt/B,GAAY,CACrB,IAAI4oC,EAAW+W,GAAEvkE,GAAS4kB,GAAWrxB,GACrCgpC,EAAWixB,EAAS5oC,GAAW,WAClC,MAAU5kB,KACPu8B,EAAW3X,EAAUygD,YAAYrlE,IAE7Bu8B,EAAS4D,OAAO5sC,GAEhBgpC,EAAW,IAAI3X,EAAU5kB,EAASzM,IAG1C,GAAIgpC,EAAU,CACV,IAAI4O,EAAuB,SAAA3gC,GACvB,IACU5d,EAEN4d,EAFA5d,KACO8E,EACP8Y,EADA9Y,MAEA6rK,EAAsBxkK,SAASnM,IAC/B2vC,EAAS4D,OAAOvzC,EAAM8E,EAE7B,EACD8B,KAAK+sC,GAAG,gBAAiB4K,GACzB5O,EAASgE,GAAG,aAAa,kBAAM,EAAKuJ,IAAI,gBAAiBqB,EAAhC,GAC5B,CACD,OAAO5O,CACV,EACDmhI,cA5NiC,SA4NnBnqK,EAAQoqK,IAClBt9G,EAAAA,EAAAA,IAAKs9G,GAAc,SAAC7nK,EAAKpE,IACpBF,OAAOgK,UAAU6X,eAAephB,KAAKsB,EAAQuC,KAASvC,EAAOuC,GAAOpE,EACxE,GACJ,EACD2iK,qBAjOiC,WAkO7B,IAAI7mG,EAAWh6D,KAAKg6D,WAChB7T,EAAUnmD,KAAKupK,gBAAgBvvG,GACnC,OAAOvU,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BgE,QAASA,GAEhB,EACDu6G,mBAxOiC,WAyO7B,IAAI1mG,EAAWh6D,KAAKg6D,WAChBvkB,EAAQz1C,KAAKupK,gBAAgBvvG,GAC7BxtD,EAAUxM,KAAKwM,UACnB,OAAOi5C,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B31C,QAASA,EACTipC,MAAOA,GAEd,EACDqqH,eAjPiC,SAiPlBliK,GACX,OAAQA,EAAKxE,MACT,IAAK,QACL,IAAK,SACD4G,KAAK0oK,oBACL,MACJ,IAAK,aACD1oK,KAAKypK,cACL,MACJ,IAAK,cACDzpK,KAAKuoK,2BACL,MACJ,IAAK,WACL,IAAK,qBACD,MACJ,QACIvoK,KAAKmiD,SAASvkD,GAEzB,EACDwsK,kBApQiC,SAoQf59J,GAEd,IADA,IAAI69J,EAAQ79J,EAAQo8J,WACXjgK,EAAI0hK,EAAM1pK,OAAS,EAAGgI,GAAK,EAAGA,IAAK,CACxC,IAAIulE,EAAOm8F,EAAM1hK,GACjB,GAAIulE,EAAM,CACN,IACU90E,EACN80E,EADA90E,KAECA,EAAKgI,QAAQ,WAAa,IAAMhI,EAAKgI,QAAQ,QAAU,SAAWhI,GAAQ,UAAYA,GAAQ,aAAeA,GAC9GoT,EAAQ06C,gBAAgB9tD,EAE/B,CACJ,CACJ,EACDkxK,eAlRiC,SAkRlB99J,GACXA,EAAQ2L,UAAY3L,EAAQ2L,UAAU9V,MAAM,KAAKm4B,QAAO,SAAA+vI,GAAQ,OAAI,IAAMA,EAAS72E,YAAY,MAAO,EAAtC,IAA0CjnF,KAAK,IAClH,EACD+9J,oBArRiC,SAqRbC,GACZA,EACAzqK,KAAKqoK,mBACEroK,KAAK0pK,kBACZ1pK,KAAK0pK,iBAAkB,EACvB1pK,KAAK2pK,WAEZ,EACD3xH,UA7RiC,WA8R7B,IAAIyyH,EAAiBzqK,KAAKkgK,0BAC1BlgK,KAAKmiD,WACLniD,KAAKigK,oBAAsBjgK,KAAKwqK,oBAAoBC,EACvD,EACDzwG,SAlSiC,WAmS7B,OAAOh6D,KAAKgnJ,SACf,EACDx6I,QArSiC,WAuS7B,OAAOq1I,GADQ7hJ,KAAKg6D,WAEvB,EACDztB,QAzSiC,WA0S7B,IAAI//B,EAAUxM,KAAKg6D,WAAWpgE,IAAI,GAClC6qE,EAAmBj4D,GAAS,GAC5BA,EAAQ66C,YAAc,GACtBrnD,KAAKoqK,kBAAkB59J,GACvBxM,KAAKsqK,eAAe99J,EACvB,EACDsrC,YAhTiC,SAgTrBtI,GAER,GADAxvC,KAAKmiD,SAAS3S,GACV,UAAYA,GAAc,WAAaA,EAAY,CACnD,IAAIoxH,EAAgB5gK,KAAK4gK,cAAcpxH,KACtC6e,EAAAA,EAAAA,IAAUuyG,IAAkB5gK,KAAKg6D,WAAW10B,IAAIkK,EAAY,GAChE,CACJ,EACDk7H,0BAvTiC,WAyThC,EACD5C,qBA1TiC,WA2T7B,IAAI9nK,KAAK4pK,kBAAqB5pK,KAAKsnK,gBAAnC,CAGA,MAEItnK,KAAK2sC,SADL8K,mBAGgBmrH,QAJpB,MAC6C,CAAC,EAD9C,GAIIA,eAEJ5iK,KAAK4pK,iBAAmB,IAAIxG,GAAgBR,EAAgB5iK,KAAK0qK,6BACjE1qK,KAAK2qK,gBARJ,CASJ,EACDA,eAvUiC,WAuUhB,WACT,EAGA3qK,KAAK4pK,iBAAiBgB,iBAAiB5qK,KAAKg6D,YAFjC9sB,EADf,EACIA,UACuB42H,EAF3B,EAEIA,sBAEA+G,EAAoB7qK,KAAK2sC,OAAO,gCAAgC18B,OAAO6zJ,EAAsB1qK,OACjG8zC,EAAUxsC,SAAQ,SAAAgkK,GACd,IACUtrK,EAENsrK,EAFAtrK,KACUomB,EACVklJ,EADAllJ,SAEJ,EAAK0tC,SAASytG,OAAO,gCAAgC1qJ,OAAO7W,GAAOomB,EACtE,IACGskJ,EAAsB1qK,OAASyxK,IAC/B7qK,KAAKktD,SAASytG,OAAO,gCAAgC1qJ,OAAO6zJ,EAAsB1qK,MAAO0qK,EAAsBtkJ,UAC/Gxf,KAAKktD,SAASytG,OAAO,gCAAgC,GAE5D,EACDmQ,qBAzViC,SAyVZt7H,GACjB,OAAOxvC,KAAK+qK,aAAa/qK,KAAK2sC,OAAO6C,GACxC,EACDu7H,aA5ViC,SA4VpB3I,GACT,IAAIl1H,EAAYltC,KAAK2sC,OAAO,gCACxB41H,EAAkBviK,KAAK2sC,OAAO,iCAC9B61H,EAAgBxiK,KAAK2sC,OAAO,oCAChC,OAAO3sC,KAAK4pK,iBAAiBoB,YAAY5I,EAAgBl1H,EAAW,CAChEq1H,gBAAiBA,EACjBC,cAAeA,GAChBxiK,KACN,EACDirK,cArWiC,SAqWnB7xK,EAAMomB,GAChBxf,KAAKwhK,8BAA8B,gCAAkCpoK,EAAM4G,KAAK4pK,iBAAiBjF,gBAAgBnlJ,GACpH,EACD8nJ,cAAe,kBAAM,CAAN,IAEnBD,GAAax1F,YAAc,SAASrlE,GAChC,OAAOklE,GAAqBX,GAAEvkE,GAAUxM,KAC3C,EACDqnK,GAAajhD,eAAiB,SAASh+G,GACnCpI,KAAKgoK,kBAAoBhoK,KAAKgoK,mBAAqB,GACnDhoK,KAAKgoK,kBAAkB5nK,KAAKgI,EAC/B,EACD,UChXI8iK,GAAY,cAGZC,GAAyB,sBAMzBC,GAA6B5nB,GAAa6nB,GAAgBH,IAC1DI,GAAuB9nB,GAAa+nB,GAAeL,IACnDM,GAA2BhoB,GAAaioB,GAAcP,IACtDQ,GAA2B,CAC3B9mI,KAAM,kBACNH,IAAK,iBACLC,MAAO,mBACPC,OAAQ,qBAERgnI,GAAYtE,GAAAA,QAAqB,CACjCzJ,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BypH,QAAS,MACT7vI,KAAM,IACN8vI,cAAe,SACfC,UAAM,EACN9qI,SAAU,GACVL,SAAU,IACV/b,UAAW,GACXqc,UAAW,IACX8qI,cAAe,KACfC,SAAU,KACVC,YAAa,KACbC,gBAAgB,EAChBC,iBAAiB,GAExB,EACD5oE,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SArCF,eAsCjB,EACDk6F,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAKosK,gBACR,EACDtxF,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKqsK,gBACR,EACDA,eAAgB,WACZrsK,KAAKssK,mBAAqBtsK,KAAK2/J,sBAAsB,iBACrD3/J,KAAKusK,iBAAmBvsK,KAAK2/J,sBAAsB,eACnD3/J,KAAKwsK,cAAgBxsK,KAAK2/J,sBAAsB,WACnD,EACDyM,eAAgB,WAAW,WACvBpsK,KAAKysK,SAAW,GAChB,IAAIb,EAAU5rK,KAAK2sC,OAAO,WAC1B,GAAI,SAAWi/H,GAAYA,EAA3B,CAGA,IAAIruI,EAAa,QAAUquI,EAAU,CAAC,MAAO,SAAU,OAAQ,SAAWA,EAAQvpK,MAAM,KACpFqqK,EAAmB,CAAC,GACxB7/G,EAAAA,EAAAA,IAAKtvB,GAAY,SAACp8B,EAAOwrK,GACrBD,EAAiBC,IAAc,EAC/B,EAAKC,cAAcD,EACtB,IACDD,EAAiB/nI,QAAU+nI,EAAiBhoI,OAAS1kC,KAAK4sK,cAAc,uBACxEF,EAAiB/nI,QAAU+nI,EAAiB9nI,MAAQ5kC,KAAK4sK,cAAc,sBACvEF,EAAiBjoI,KAAOioI,EAAiBhoI,OAAS1kC,KAAK4sK,cAAc,oBACrEF,EAAiBjoI,KAAOioI,EAAiB9nI,MAAQ5kC,KAAK4sK,cAAc,mBACpE5sK,KAAK6sK,sBAXJ,CAYJ,EACDD,cAAe,SAASD,GACpB,IAAIG,EAAU/7F,GAAE,SAAS3C,SAAS+8F,IAAwB/8F,SAAS+8F,uBAA+BwB,GAAYh+F,SAAS3uE,KAAKg6D,YAC5Hh6D,KAAKysK,SAASrsK,KAAK0sK,EACtB,EACDD,qBAAsB,WAClB,IAAI7sK,KAAK2sC,OAAO,YAAhB,CAGA,IAAIlN,EAAW,CAAC,EAChBA,EAAS2rI,IAA8BprK,KAAKy3J,kBAAkB36J,KAAKkD,MACnEy/B,EAAS6rI,IAAwBtrK,KAAK+sK,aAAajwK,KAAKkD,MACxDy/B,EAAS+rI,IAA4BxrK,KAAK63J,gBAAgB/6J,KAAKkD,MAC/DA,KAAKysK,SAAS/rK,SAAQ,SAAAssK,GAClBzuG,EAAAA,EAAAA,GAAgByuG,EAAevtI,EAAU,CACrC7Y,UAAW,OACX4hI,WAAW,GAElB,GAVA,CAWJ,EACDykB,qBAAsB,WAClBjtK,KAAKysK,SAAS/rK,SAAQ,SAAAssK,GAClBzuG,EAAAA,EAAAA,IAAiByuG,EACpB,GACJ,EACDE,qBAAsB,SAASC,GAC3BA,EAAqBntK,KAAK6sK,uBAAyB7sK,KAAKitK,sBAC3D,EACDG,gBAAiB,WACb,IAAIpzG,EAAWh6D,KAAKg6D,WACpB,MAAO,eAAiBA,EAAS10B,IAAI,aAAe,CAChD3U,MAAOq6C,GAAchR,GACrBxtC,OAAQ0+C,GAAelR,IACvB,CACArpC,MAAOi6C,GAAS5Q,GAChBxtC,OAAQs+C,GAAU9Q,GAEzB,EACDy9F,kBAAmB,SAASxuJ,GACxB,IAAI+wD,EAAWh6D,KAAKg6D,WAChBA,EAASiV,GAAG,4CACZhmE,EAAE+3C,QAAS,GAGfhhD,KAAKqtK,sBAAqB,GAC1BrtK,KAAKstK,aAAettK,KAAKutK,gBAAgBtkK,GACzCjJ,KAAKwtK,iBAAmB9qB,GAAO1oF,GAC/Bh6D,KAAKytK,aAAeztK,KAAKotK,kBACzBptK,KAAK0tK,mBAAmBzkK,GACxBjJ,KAAKssK,mBAAmB,CACpBvrK,MAAOkI,EACP0nB,MAAO3wB,KAAKytK,aAAa98I,MACzBnE,OAAQxsB,KAAKytK,aAAajhJ,OAC1Bo/I,QAAS5rK,KAAKstK,eAElBrkK,EAAEorJ,eAAiB,KACtB,EACDgZ,qBAAsB,SAASnvK,GAC3B8B,KAAKg6D,WAAWiU,YA9HO,wBA8H+B/vE,EACzD,EACDwvK,mBAAoB,SAASzkK,GACzB,IAAI6iK,EAAO9rK,KAAK2tK,WAChB,GAAK7B,EAAL,CAGA,IAAIgB,EAAU/7F,GAAE9nE,EAAE0O,QAAQm4D,QAAQ,wBAC9B89F,EAAc5iG,GAAc8hG,GAC5Be,EAAe3iG,GAAe4hG,GAC9BgB,EAAehB,EAAQ7/J,SACvB8gK,EAAajC,EAAK7+J,OAClB+gK,EAAehuK,KAAKiuK,uBACxBhlK,EAAE6qJ,cAAgB9zJ,KAAKkuK,eAAiBJ,EAAalpI,KAAOmpI,EAAWnpI,KAAOopI,EAAaG,QAC3FllK,EAAE+qJ,eAAiBh0J,KAAKouK,gBAAkBL,EAAWnpI,KAAOknI,EAAKn7I,MAAQm9I,EAAalpI,KAAOgpI,EAAcI,EAAaG,QACxHllK,EAAEirJ,aAAel0J,KAAKquK,cAAgBP,EAAarpI,IAAMspI,EAAWtpI,IAAMupI,EAAaM,QACvFrlK,EAAEmrJ,gBAAkBp0J,KAAKuuK,iBAAmBR,EAAWtpI,IAAMqnI,EAAKt/I,OAASshJ,EAAarpI,IAAMopI,EAAeG,EAAaM,OAVzH,CAWJ,EACDE,gBAAiB,SAASx0G,EAAUpzC,GAChC,IAAI+8B,EAAAA,EAAAA,IAASqW,EAASpgE,IAAI,IACtB,OAAO,EAEX,IAAI60K,EAAcz0G,EAAS10B,IAAIomI,GAAyB9kJ,IACxD,OAAOkR,SAAS22I,IAAgB,CACnC,EACDC,eAAgB,SAAS9nJ,EAAW1oB,GAChC,IAAI2P,EAAO7N,KAAKytK,aAEhB,OAAOvvK,GADM,MAAQ0oB,EAAY/Y,EAAK8iB,MAAQ9iB,EAAK2e,OAAS3e,EAAK2e,OAAS3e,EAAK8iB,MAElF,EACDg+I,sBAAuB,SAAS33J,GAC5B,IACOjJ,EAEHiJ,EAFAjJ,EACGC,EACHgJ,EADAhJ,EAEA4gK,EAAgB5uK,KAAK0uK,eAAe,IAAK3gK,GAC7C,GAAI6gK,GAAiB5gK,EACjB,MAAO,CACHD,EAAGA,EACHC,EAAG4gK,GAGX,IAAIC,EAAgB7uK,KAAK0uK,eAAe,IAAK1gK,GAC7C,OAAI6gK,GAAiB9gK,EACV,CACHA,EAAG8gK,EACH7gK,EAAGA,GAGJ,CACHD,EAAG,EACHC,EAAG,EAEV,EACD8gK,kBAAmB,SAASC,GACxB,IAAIC,EAAQhvK,KAAKstK,aACjB,MAAI,MAAQyB,EACDC,EAAMpqI,KAAO,OAAS,QAEtBoqI,EAAMvqI,IAAM,MAAQ,QAElC,EACDwqI,aAAc,SAASF,EAAM7wK,GACzB,IAAI6I,EACAmoK,EAAgBlvK,KAAK8uK,kBAAkBC,GAC3C,OAAOxlK,KAAKsZ,IAAI3kB,EAAO,QAAU6I,EAAQ/G,KAAK,IAAIiQ,OAAOi/J,EAAe,qBAAkB,IAAWnoK,EAAQA,EAAQ,IACxH,EACDooK,wBAAyB,SAASluF,GAAO,WACjCmuF,GAAcr2J,EAAAA,EAAAA,GAAS,CAAC,EAAGkoE,GAC3BpzE,EAAO7N,KAAKytK,aACZ,EAKAztK,KAAK2sC,SAJK3L,EADd,EACIA,SACWpc,EAFf,EAEIA,UACU+b,EAHd,EAGIA,SACWM,EAJf,EAIIA,UAEA2pC,EAAW,kBAAM/8D,EAAK8iB,MAAQy+I,EAAYrhK,CAA/B,EACX+8D,EAAY,kBAAMj9D,EAAK2e,OAAS4iJ,EAAYphK,CAAhC,EACZqhK,EAAW,SAAAN,GAAI,OAAIK,EAAYL,KAAU,EAAKE,aAAaF,EAAMK,EAAYL,GAA9D,EACfO,EAAY,kBAAMrzF,GAAQrR,IAAY5pC,EAAUL,IAAa0uI,EAAS,IAA1D,EACZE,EAAY,kBAAMtzF,GAAQnR,IAAalmD,EAAWqc,IAAcouI,EAAS,IAA7D,EAChB,IAAKC,IAAa,CACd,IAAIvhK,EAAI/N,KAAKivK,aAAa,IAAKrzF,GAAahR,IAAY5pC,EAAUL,GAAY9yB,EAAK8iB,OACnFy+I,EAAc,CACVrhK,EAAGA,EACHC,EAAGhO,KAAK0uK,eAAe,IAAK3gK,GAEnC,CACD,IAAKwhK,IAAa,CACd,IAAIvhK,EAAIhO,KAAKivK,aAAa,IAAKrzF,GAAa9Q,IAAalmD,EAAWqc,GAAapzB,EAAK2e,QACtF4iJ,EAAc,CACVrhK,EAAG/N,KAAK0uK,eAAe,IAAK1gK,GAC5BA,EAAGA,EAEV,CACD,OAAOshK,KAAeC,IAAcH,EAAc,CAC9CrhK,EAAG,EACHC,EAAG,EAEV,EACDwhK,UAAW,SAAS9K,GAChB,IACO32J,EAEH22J,EAFA32J,EACGC,EACH02J,EADA12J,EAEAH,EAAO7N,KAAKytK,aACZ,EAKAztK,KAAK2sC,SAJK3L,EADd,EACIA,SACWpc,EAFf,EAEIA,UACU+b,EAHd,EAGIA,SACWM,EAJf,EAIIA,UAEJ,MAAO,CACHlzB,EAAG6tE,GAAa/tE,EAAK8iB,MAAQ5iB,EAAGizB,EAAUL,GAAY9yB,EAAK8iB,MAC3D3iB,EAAG4tE,GAAa/tE,EAAK2e,OAASxe,EAAG4W,EAAWqc,GAAapzB,EAAK2e,OAErE,EACDijJ,kBAAmB,SAASxiK,GACxB,IAAI+hK,EAAQhvK,KAAKstK,aACboC,EAAwB1vK,KAAK2vK,iBAAiBX,IAAUhvK,KAAK2sC,OAAO,mBACpEs0C,EAAQ,CACRlzE,EAAGd,EAAOc,GAAKihK,EAAMpqI,MAAQ,EAAI,GACjC52B,EAAGf,EAAOe,GAAKghK,EAAMvqI,KAAO,EAAI,IAEpC,GAAIirI,EAAuB,CACvB,IAAIE,EAAoB5vK,KAAK2uK,sBAAsB1tF,GAEnDA,EAD8BjhF,KAAKmvK,wBAAwBS,EAE9D,KAAM,CACH,IAAIR,EAAcpvK,KAAKwvK,UAAUvuF,GAEjCA,EADyBjhF,KAAK6vK,aAAaT,EAE9C,CACD,OAAOnuF,CACV,EACD6uF,gBAAiB,SAAS7uF,EAAO6kE,GAC7B,IACWn1H,EAEPm1H,EAFAn1H,MACQnE,EACRs5H,EADAt5H,OAEAmG,EAAW3yB,KAAKwtK,iBAChBwB,EAAQhvK,KAAKstK,aACbtzG,EAAWh6D,KAAKg6D,WAChB+1G,EAAc/vK,KAAKotK,kBACnB4C,EAAY/uF,EAAMjzE,GAAKghK,EAAMvqI,KAAO,EAAI,KAAOsrI,EAAYvjJ,QAAUA,GAAUA,GAC/EyjJ,EAAahvF,EAAMlzE,GAAKihK,EAAMpqI,MAAQ,EAAI,KAAOmrI,EAAYp/I,OAASA,GAASA,GACnFwyH,GAAKnpF,EAAU,CACXv1B,IAAK9R,EAAS8R,KAAOuqI,EAAMvqI,IAAMurI,EAAY,GAC7CprI,KAAMjS,EAASiS,MAAQoqI,EAAMpqI,KAAOqrI,EAAa,IAExD,EACDlD,aAAc,SAAS9jK,GACnB,IAAIgE,EAASjN,KAAKkwK,WAAWjnK,GACzBg4E,EAAQjhF,KAAKyvK,kBAAkBxiK,GAC/BkjK,EAAanwK,KAAKowK,kBAAkBnvF,GACxCjhF,KAAK8vK,gBAAgB7uF,EAAOkvF,GAC5BnwK,KAAKqwK,qBAAqBpnK,EAAGknK,EAChC,EACDC,kBAAmB,SAASnvF,GACxB,IAAIqvF,EAAiB,SAAAziK,GAAI,MAAI,OAASA,EAAKiT,UAAUjT,EAAKlN,OAAS,EAA1C,EACrB4vK,EAAwB,WAAavwK,KAAK2sC,OAAO,iBACjD9+B,EAAO7N,KAAKytK,aACZ98I,EAAQ9iB,EAAK8iB,MAAQswD,EAAMlzE,EAC3Bye,EAAS3e,EAAK2e,OAASy0D,EAAMjzE,EAC7BwiK,EAAexwK,KAAKg6D,WAAWpgE,IAAI,GAAGk9B,MACtC25I,EAAoBxvF,EAAMlzE,GAAKwiK,GAAyBD,EAAeE,EAAa7/I,OACpF+/I,EAAqBzvF,EAAMjzE,GAAKuiK,GAAyBD,EAAeE,EAAahkJ,QAWzF,OAVIikJ,GACAzwK,KAAK2sC,OAAO,CACRhc,MAAOA,IAGX+/I,GACA1wK,KAAK2sC,OAAO,CACRngB,OAAQA,IAGT,CACHmE,MAAO8/I,EAAoB9/I,EAAQ9iB,EAAK8iB,MACxCnE,OAAQkkJ,EAAqBlkJ,EAAS3e,EAAK2e,OAElD,EACD6jJ,qBAAsB,SAASpnK,EAAGs9I,GAC9B,IACW51H,EAEP41H,EAFA51H,MACQnE,EACR+5H,EADA/5H,OAEJxsB,KAAKwsK,cAAc,CACfzrK,MAAOkI,EACP0nB,MAAO3wB,KAAK2sC,OAAO,UAAYhc,EAC/BnE,OAAQxsB,KAAK2sC,OAAO,WAAangB,EACjCo/I,QAAS5rK,KAAKstK,eAElBtzF,GAAmBh6E,KAAKg6D,WAC3B,EACD21G,iBAAkB,SAAAX,GAAK,OAAI,IAAMhxK,OAAO23B,OAAOq5I,GAAO7qK,QAAO,SAACwsK,EAAKzyK,GAAN,OAAgByyK,EAAMzyK,CAAtB,GAA6B,EAAnE,EACvBgyK,WAAY,SAASjnK,GACjB,IAAIgE,EAAShE,EAAEgE,OACX+hK,EAAQhvK,KAAKstK,aAOjB,OANK0B,EAAMpqI,MAASoqI,EAAMtqI,QACtBz3B,EAAOc,EAAI,GAEVihK,EAAMvqI,KAAQuqI,EAAMrqI,SACrB13B,EAAOe,EAAI,GAERf,CACV,EACD4iK,aAAc,SAAS5uF,GACnB,MAAO,WAAajhF,KAAK2sC,OAAO,iBAAmB3sC,KAAK4wK,aAAa3vF,GAASjhF,KAAK6wK,gBAAgB5vF,EACtG,EACD6vF,UAAW,WACP,OAAO9/G,EAAAA,GAAAA,cAAahxD,KAAK2sC,OAAO,SAAU3sC,KAAK2sC,OAAO,kBACzD,EACDkkI,gBAAiB,SAAS5vF,GACtB,IAAI8vF,EAAQ/wK,KAAK8wK,YACjB,MAAO,CACH/iK,EAAGkzE,EAAMlzE,EAAIkzE,EAAMlzE,EAAIgjK,EAAM90K,EAC7B+R,EAAGizE,EAAMjzE,EAAIizE,EAAMjzE,EAAI+iK,EAAM3sJ,EAEpC,EACDwsJ,aAAc,SAAS3vF,GACnB,IAAI+tF,EAAQhvK,KAAKstK,aACbrgK,EAAS,CACTc,EAAGkzE,EAAMlzE,GAAKihK,EAAMpqI,MAAQ,EAAI,GAChC52B,EAAGizE,EAAMjzE,GAAKghK,EAAMvqI,KAAO,EAAI,IAE/BssI,EAAQ/wK,KAAK8wK,YACbn+I,EAAW3yB,KAAKwtK,iBAChB3/J,EAAO7N,KAAKytK,aACZuD,EAAOhC,EAAMpqI,KAAOjS,EAASiS,KAAOjS,EAASiS,KAAO/2B,EAAK8iB,MACzDsgJ,EAAOjC,EAAMvqI,IAAM9R,EAAS8R,IAAM9R,EAAS8R,IAAM52B,EAAK2e,OACtD0kJ,GAAaF,EAAO/jK,EAAOc,GAAKgjK,EAAM90K,EACtCk1K,GAAaF,EAAOhkK,EAAOe,GAAK+iK,EAAM3sJ,EACtCwsC,EAAOrnD,KAAKqnD,MAAS,SAAA7iD,GAErB,OAAI,KADJA,GAAKA,IACU4tD,MAAM5tD,GACVA,EAEJA,EAAI,EAAI,GAAK,CACvB,EACGqjK,EAAkB,SAACL,EAAO9jK,GAAR,OAAoB,EAAI,GAAK2jD,EAAK3jD,IAAW,EAAI8jK,CAAjD,EAClBM,EAAgB,SAACpkK,EAAQ8jK,GAAT,OAAmBxnK,KAAKD,IAAI2D,GAAU,GAAK8jK,CAA3C,EAChBO,EAAarkK,EAAOc,EAAImjK,EACxBK,EAAatkK,EAAOe,EAAImjK,EACxBD,EAAYE,EAAgBL,EAAM90K,EAAGgR,EAAOc,KAC5CujK,GAAcP,EAAM90K,GAEpBk1K,EAAYC,EAAgBL,EAAM3sJ,EAAGnX,EAAOe,KAC5CujK,GAAcR,EAAM3sJ,GAExB,IAAIotJ,GAAmBxC,EAAMpqI,OAAQoqI,EAAMtqI,OAAW2sI,EAAcpkK,EAAOc,EAAGgjK,EAAM90K,GAAkB,EAAbq1K,EACrFG,GAAmBzC,EAAMvqI,MAAOuqI,EAAMrqI,QAAY0sI,EAAcpkK,EAAOe,EAAG+iK,EAAM3sJ,GAAkB,EAAbmtJ,EACzF,MAAO,CACHxjK,EAAGyjK,GAAmBxC,EAAMpqI,MAAQ,EAAI,GACxC52B,EAAGyjK,GAAmBzC,EAAMvqI,KAAO,EAAI,GAE9C,EACD8oI,gBAAiB,SAAStkK,GACtB,IAAI24I,EAAU7wE,GAAE9nE,EAAE0O,QACd+5J,EAAwB9vB,EAAQtzE,SAASqjG,uCACzCC,EAAyBhwB,EAAQtzE,SAASqjG,wCAC1CE,EAA2BjwB,EAAQtzE,SAASqjG,0CAC5CG,EAA4BlwB,EAAQtzE,SAASqjG,2CACjD,MAAO,CACHltI,IAAKm9G,EAAQtzE,SApYQ,4BAoYgCojG,GAAyBE,EAC9EhtI,KAAMg9G,EAAQtzE,SAnYQ,6BAmYiCojG,GAAyBG,EAChFltI,OAAQi9G,EAAQtzE,SArYQ,+BAqYmCujG,GAA4BC,EACvFptI,MAAOk9G,EAAQtzE,SApYQ,8BAoYkCsjG,GAA0BE,EAE1F,EACDnE,SAAU,WACN,IAAI7B,EAAO9rK,KAAK2sC,OAAO,QAIvB,OAHIkiB,EAAAA,EAAAA,IAAWi9G,KACXA,EAAOA,EAAKrtK,KAAKuB,QAEjBonC,EAAAA,EAAAA,IAAc0kI,GACP9rK,KAAK+xK,mBAAmBjG,GAE5B9rK,KAAKgyK,oBAAoBlG,EACnC,EACDmC,qBAAsB,WAClB,IAAInC,EAAO9rK,KAAK2sC,OAAO,QAEnBqhI,EAAe,CACfM,QAAS,EACTH,QAAS,GAEb,KALiBt/G,EAAAA,EAAAA,IAAWi9G,MAAU1kI,EAAAA,EAAAA,IAAc0kI,GAKrC,CACX,IAAImG,EAAclhG,GAAE+6F,GAAM,IACtBnoH,EAAAA,EAAAA,IAASsuH,KACTjE,EAAaG,QAAU8D,EAAY/lG,YACnC8hG,EAAaM,QAAU2D,EAAYjmG,YAE1C,CACD,OAAOgiG,CACV,EACD+D,mBAAoB,SAASjG,GACzB,IAAItoK,EAAS,CACTmtB,MAAOm7I,EAAKpnI,MAAQonI,EAAKlnI,KACzBpY,OAAQs/I,EAAKnnI,OAASmnI,EAAKrnI,IAC3Bx3B,OAAQ,CACJ23B,KAAMknI,EAAKlnI,KACXH,IAAKqnI,EAAKrnI,MAIlB,OADAzkC,KAAKkyK,qBAAqB1uK,GACnBA,CACV,EACDwuK,oBAAqB,SAASlG,GAC1B,IACItoK,EADA2uK,EAAQphG,GAAE+6F,GAad,OAXIqG,EAAMxxK,SACN6C,EAAS,CACLmtB,MAAOy6C,GAAc+mG,GACrB3lJ,OAAQ6+C,GAAe8mG,GACvBllK,QAAQw4C,EAAAA,GAAAA,GAAO,CACXhhB,IAAK,EACLG,KAAM,IACP+e,EAAAA,EAAAA,IAASwuH,EAAM,IAAM,CAAC,EAAIA,EAAMllK,WAEvCjN,KAAKkyK,qBAAqB1uK,EAAQ2uK,IAE/B3uK,CACV,EACD0uK,qBAAsB,SAAS1uK,EAAQ2uK,GACnC,IAAIC,EAAiBD,EAAQnyK,KAAKwuK,gBAAgB2D,EAAO,QAAU,EAC/DE,EAAgBF,EAAQnyK,KAAKwuK,gBAAgB2D,EAAO,OAAS,EACjE3uK,EAAOyJ,OAAO23B,MAAQwtI,EAAiBpyK,KAAKwuK,gBAAgBxuK,KAAKg6D,WAAY,QAC7Ex2D,EAAOyJ,OAAOw3B,KAAO4tI,EAAgBryK,KAAKwuK,gBAAgBxuK,KAAKg6D,WAAY,OAC3Ex2D,EAAOmtB,OAASq6C,GAAchrE,KAAKg6D,YAAcoR,GAAcprE,KAAKg6D,YACpEx2D,EAAOgpB,QAAU0+C,GAAelrE,KAAKg6D,YAAcqR,GAAerrE,KAAKg6D,WAC1E,EACD69F,gBAAiB,SAAS5uJ,GACtB,IAAI+wD,EAAWh6D,KAAKg6D,WACpBh6D,KAAKusK,iBAAiB,CAClBxrK,MAAOkI,EACP0nB,MAAOq6C,GAAchR,GACrBxtC,OAAQ0+C,GAAelR,GACvB4xG,QAAS5rK,KAAKstK,eAElBttK,KAAKqtK,sBAAqB,EAC7B,EACDiF,aAAc,SAAS3hJ,GACnB3wB,KAAK2sC,OAAO,QAASivC,GAAajrD,EAAO3wB,KAAK2sC,OAAO,YAAa3sC,KAAK2sC,OAAO,aACjF,EACD4lI,cAAe,SAAS/lJ,GACpBxsB,KAAK2sC,OAAO,SAAUivC,GAAapvD,EAAQxsB,KAAK2sC,OAAO,aAAc3sC,KAAK2sC,OAAO,cACpF,EACDmzH,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,WACD4G,KAAKktK,sBAAsBtvK,EAAKM,OAChC8B,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,UACDoC,KAAKypK,cACL,MACJ,IAAK,WACL,IAAK,YACD3oH,EAAAA,EAAAA,OAAe9gD,KAAKsyK,aAAatnG,GAAchrE,KAAKg6D,aACpD,MACJ,IAAK,YACL,IAAK,aACDlZ,EAAAA,EAAAA,OAAe9gD,KAAKuyK,cAAcrnG,GAAelrE,KAAKg6D,aACtD,MACJ,IAAK,WACL,IAAK,gBACL,IAAK,cACDh6D,KAAKqsK,iBACL,MACJ,IAAK,OACL,IAAK,gBACL,IAAK,OACL,IAAK,iBACL,IAAK,kBACD,MACJ,QACIrsK,KAAKmiD,SAASvkD,GAEzB,EACD0rK,OAAQ,WACJtpK,KAAKg6D,WAAWh+D,KAAK,wBAA8B0B,QACtD,EACD4pK,cAAe,WACX,OAAO,CACV,IAELkL,GAAkBtH,GAAWS,IAC7B,UCvhBI8G,GACO,QADPA,GAES,UAFTA,GAGS,UAEPC,GAAAA,WACF,cAAc,eACV1yK,KAAKw+J,KAAO,MACf,8CACD,SAAetgK,GACX,OAAOksH,GAAAA,aAAiC,cAAcn6G,OAAOjQ,KAAKw+J,MAA3Dp0C,CAAkElsH,EAC5E,wCACD,SAAwBA,GACpB,OAAOksH,GAAAA,aAAiC,cAAcn6G,OAAOjQ,KAAKw+J,KAAM,cAAjEp0C,CAAgFlsH,EAC1F,8BACD,SAAcA,GACV,OAAQy0K,GAAgB5qI,SAASw5G,SAASrjJ,EAAO,CAAC,EACrD,yBACD,SAASA,EAAOkK,GAAM,WACdwqK,EAAa/tK,MAAMC,QAAQ5G,GAASA,EAAQ,CAACA,GAC7CsF,GAAS,EASb,OARIovK,EAAWjyK,OACXiyK,EAAW/sI,OAAM,SAAAgyG,GAEb,OADAr0I,EAAS,EAAKqvK,UAAUh7B,EAAWzvI,EAEtC,IAED5E,EAASxD,KAAK6yK,UAAU,KAAMzqK,GAE3B5E,CACV,OAzBCkvK,GA2BAI,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACKtU,KAAO,WAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,SAAKimD,EAAAA,EAAAA,IAAUnwD,MAGX,IAAUA,IAGdA,EAAQuL,OAAOvL,IACXkK,EAAK7F,OAAS8rD,EAAAA,EAAAA,IAAUjmD,EAAK7F,QAC7BrE,EAAQA,EAAMqE,QAEX,KAAOrE,GACjB,OAjBC40K,CAA8BJ,IAmB9BK,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACKvU,KAAO,UAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,SAAI,IAAUA,EAAK4qK,mBAAoBhzK,KAAKizK,cAAc/0K,MAGtDkK,EAAK8qK,qBAAsBxiH,EAAAA,EAAAA,IAASxyD,IAC5By9D,MAAM6/C,GAAAA,MAAyBt9G,KAEhCw6D,EAAAA,EAAAA,IAAUx6D,GAExB,OAdC60K,CAA6BL,IAgB7BS,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACK3U,KAAO,QAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,IAAI,IAAUA,EAAK4qK,kBAAoBhzK,KAAKizK,cAAc/0K,GACtD,OAAO,EAEX,IAAIk1K,EAAcT,GAAgBU,QAAQ9xB,SAASrjJ,EAAOkK,GACtDkrK,GAAajlH,EAAAA,EAAAA,IAAUnwD,IAAU,KAAOA,EACxC81B,EAASo/I,EAAcj7I,WAAWj6B,GAASo1K,GAAcp1K,EAAMquD,UAC/D1pC,EAAMza,EAAKya,IACX4U,EAAMrvB,EAAKqvB,IACf,IAAM27I,KAAe13G,EAAAA,EAAAA,IAAOx9D,KAAYo1K,EACpC,OAAO,EAEX,IAAIjlH,EAAAA,EAAAA,IAAUxrC,GACV,OAAIwrC,EAAAA,EAAAA,IAAU52B,GACHzD,GAAUnR,GAAOmR,GAAUyD,EAE/BzD,GAAUnR,EACd,IAAIwrC,EAAAA,EAAAA,IAAU52B,GACjB,OAAOzD,GAAUyD,EAEjB,MAAMnY,GAAAA,EAAAA,MAAa,QAE1B,OA3BC6zJ,CAA2BT,IA6B3Ba,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACK/U,KAAO,eAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,IAAIgkD,EAKJ,OAJAluD,EAAQuL,OAAO,QAAU2iD,EAASluD,SAAU,IAAWkuD,EAASA,EAAS,KACrEhkD,EAAK7F,OAAS8rD,EAAAA,EAAAA,IAAUjmD,EAAK7F,QAC7BrE,EAAQA,EAAMqE,WAEd6F,EAAK4qK,mBAAoBhzK,KAAKizK,cAAc/0K,KAGzCy0K,GAAgBt4C,MAAMknB,SAASrjJ,EAAMyC,QAAQ8kD,EAAAA,GAAAA,GAAO,CAAC,EAAGr9C,GAClE,OAfCmrK,CAAkCb,IAiBlCc,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACKhV,KAAO,SAFF,CAGb,wCACD,SAAStgK,EAAOkK,GACZ,GAAIA,EAAK4qK,kBAAoBhzK,KAAKizK,cAAc/0K,GAC5C,OAAO,EAEX,IAAIq0B,EAAYnqB,EAAKmqB,UACjBkhJ,EAAalhJ,IAAas8B,EAAAA,EAAAA,IAAWt8B,EAAUoa,SAAWpa,EAAUoa,OAAO,cAC3E+mI,GAAc7kH,EAAAA,EAAAA,IAAW4kH,IAAeA,IACxCnvK,EAAS,CACTpG,MAAOA,EACPq0B,UAAWA,EACXnqB,KAAMA,GAKV,OAHIsrK,IACAjuH,EAAAA,GAAAA,GAAOnhD,EAAQovK,GAEZtrK,EAAKurK,mBAAmBrvK,EAClC,OArBCkvK,CAA4Bd,IAuB5BkB,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACKpV,KAAO,QAFF,CAGb,wCACD,SAAStgK,EAAOkK,GAMZ,IALKimD,EAAAA,EAAAA,IAAUjmD,EAAKyrK,cAChBpuH,EAAAA,GAAAA,GAAOr9C,EAAM,CACTyrK,YAAY,IAGhBzrK,EAAK4qK,kBAAoBhzK,KAAKizK,cAAc/0K,GAC5C,OAAO,EAEX,IAAIq0B,EAAYnqB,EAAKmqB,UACjBkhJ,EAAalhJ,IAAas8B,EAAAA,EAAAA,IAAWt8B,EAAUoa,SAAWpa,EAAUoa,OAAO,cAC3E+mI,GAAc7kH,EAAAA,EAAAA,IAAW4kH,IAAeA,IACxCnvK,EAAS,CACTpG,MAAOA,EACPq0B,UAAWA,EACXnqB,KAAMA,GAENsrK,IACAjuH,EAAAA,GAAAA,GAAOnhD,EAAQovK,GAEnB,IAAIp9G,EAAiBluD,EAAKurK,mBAAmBrvK,GAC7C,KAAKkyD,EAAAA,EAAAA,IAAUF,GACX,MAAMh3C,GAAAA,EAAAA,MAAa,SAEvB,OAAOtf,KAAK8zK,oBAAmBr9G,EAAAA,GAAAA,IAAYH,GAAgBh5C,UAC9D,mCACD,SAAmBA,GACf,IAAIixC,EAAW,IAAIlxC,GAAAA,GAgBnB,OAfAC,EAAQxf,MAAM,SAASs+H,GACnB7tE,EAAS3vD,QAAQw9H,EACpB,IAAI,SAASh9H,GACV,IAAIg9H,EAAM,CACN8T,SAAS,IAET7hF,EAAAA,EAAAA,IAAUjvD,MACNsxD,EAAAA,EAAAA,IAAStxD,GACTg9H,EAAIhiI,QAAUgF,GACPihB,EAAAA,EAAAA,IAASjhB,KAAQivD,EAAAA,EAAAA,IAAUjvD,EAAIhF,WAAYs2D,EAAAA,EAAAA,IAAStxD,EAAIhF,WAC/DgiI,EAAIhiI,QAAUgF,EAAIhF,UAG1Bm0D,EAAS3vD,QAAQw9H,EACpB,IACM7tE,EAASjxC,SACnB,OAjDCs2J,CAA2BJ,IAmD3BO,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACKvV,KAAO,UAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,IAAKA,EAAK4rK,iBACN,MAAM10J,GAAAA,EAAAA,MAAa,SAEvB,GAAIlX,EAAK4qK,kBAAoBhzK,KAAKizK,cAAc/0K,GAC5C,OAAO,GAEXunD,EAAAA,GAAAA,GAAOr9C,EAAM,CACTyrK,YAAY,IAEhB,IAAII,EAAa7rK,EAAK4rK,mBAEtB,OADW5rK,EAAK8rK,gBAAkB,MAE9B,IAAK,KACD,OAAOh2K,GAAS+1K,EACpB,IAAK,KACD,OAAO/1K,GAAS+1K,EACpB,IAAK,MACD,OAAO/1K,IAAU+1K,EACrB,IAAK,MACD,OAAO/1K,IAAU+1K,EACrB,IAAK,IACD,OAAO/1K,EAAQ+1K,EACnB,IAAK,KACD,OAAO/1K,GAAS+1K,EACpB,IAAK,IACD,OAAO/1K,EAAQ+1K,EACnB,IAAK,KACD,OAAO/1K,GAAS+1K,EAE3B,OAnCCF,CAA6BrB,IAqC7ByB,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACK3V,KAAO,UAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,IAAI,IAAUA,EAAK4qK,kBAAoBhzK,KAAKizK,cAAc/0K,GACtD,OAAO,EAEX,IAAIyL,EAAUvB,EAAKuB,QAInB,OAHI+mD,EAAAA,EAAAA,IAAS/mD,KACTA,EAAU,IAAIiuB,OAAOjuB,IAElBA,EAAQyM,KAAKlY,EACvB,OAdCi2K,CAA6BzB,IAgB7B0B,GAAAA,SAAAA,iCACF,aAAc,6BACV,gBACK5V,KAAO,QAFF,CAGb,yCACD,SAAUtgK,EAAOkK,GACb,SAAI,IAAUA,EAAK4qK,mBAAoBhzK,KAAKizK,cAAc/0K,KAGnDy0K,GAAgBhpK,QAAQ43I,SAASrjJ,GAAOunD,EAAAA,GAAAA,GAAO,CAAC,EAAGr9C,EAAM,CAC5DuB,QAAS,oCAEhB,OAZCyqK,CAA2B1B,IAc7BC,GAAkB,CAClB5qI,SAAU,IAAI+qI,GACdO,QAAS,IAAIN,GACb14C,MAAO,IAAI84C,GACXkB,aAAc,IAAId,GAClBe,OAAQ,IAAId,GACZz2E,MAAO,IAAI62E,GACXlkI,QAAS,IAAIqkI,GACbpqK,QAAS,IAAIwqK,GACbrgJ,MAAO,IAAIsgJ,IAEXG,GAAcpoH,GAAAA,EAAAA,QAAc,CAC5BpJ,KAD4B,SACvBwyC,GACDv1F,KAAKu1F,MAAQA,EACbv1F,KAAKw0K,WAAa,GAClBx0K,KAAKy0K,mBAAqB,GAC1Bz0K,KAAK00K,0BAA4B10K,KAAK00K,0BAA0B53K,KAAKkD,MACrEA,KAAK20K,uBACL30K,KAAKi2E,gBAAkB,IAAIrD,GAAe5yE,KAC7C,EACDuhJ,SAT4B,WASjB,WACH/9I,EAAS,CACT0sI,SAAS,EACT0kC,YAAa,GACbJ,WAAY,GACZ5tK,OAAQ6rK,GACR9wJ,SAAU,MAyBd,OAvBA3hB,KAAK60K,kCACL70K,KAAKy0K,mBAAqB,GAC1Bz0K,KAAK20K,wBACL9nH,EAAAA,EAAAA,IAAK7sD,KAAKw0K,YAAY,SAAC11K,EAAGyzB,GACtB,IAAIuiJ,EAAkBviJ,EAAUgvH,WAChC/9I,EAAO0sI,QAAU1sI,EAAO0sI,SAAW4kC,EAAgB5kC,QAC/C4kC,EAAgBF,cAChBpxK,EAAOoxK,YAAcpxK,EAAOoxK,YAAY3kK,OAAO6kK,EAAgBF,cAEnEpxK,EAAOgxK,WAAWp0K,KAAKmyB,GACnBuiJ,EAAgBluK,SAAW6rK,IAC3B,EAAKsC,qBAAqBxiJ,GAE9B,EAAKyiJ,yBAAyBziJ,EACjC,IACGvyB,KAAKy0K,mBAAmB9zK,OACxB6C,EAAOoD,OAAS6rK,IAEhBjvK,EAAOoD,OAASpD,EAAO0sI,QAAUuiC,GAAeA,GAChDzyK,KAAK60K,kCACL70K,KAAKi1K,qBAAqBzxK,IAE9BxD,KAAKk1K,sBAAsB1xK,IACpBiiD,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKm1K,gBAAgB3xK,OAC1C,EACDwxK,yBA1C4B,SA0CHziJ,GACrBA,EAAUwa,GAAG,aAAc/sC,KAAK00K,2BAChCniJ,EAAUwa,GAAG,YAAa/sC,KAAK00K,0BAClC,EACDU,6BA9C4B,SA8CC7iJ,GACzBA,EAAU+jB,IAAI,aAAct2C,KAAK00K,2BACjCniJ,EAAU+jB,IAAI,YAAat2C,KAAK00K,0BACnC,EACDG,gCAlD4B,WAkDM,YAC9BhoH,EAAAA,EAAAA,IAAK7sD,KAAKw0K,YAAY,SAAC11K,EAAGyzB,GACtB,EAAK6iJ,6BAA6B7iJ,EACrC,GACJ,EACD2iJ,sBAvD4B,SAuDN1xK,GAClBxD,KAAKm1K,gBAAgB3xK,OAASA,EAC1BA,EAAOoD,SAAW6rK,KAGjBzyK,KAAKm1K,gBAAgB5mH,WACtBvuD,KAAKm1K,gBAAgB5mH,SAAW,IAAIlxC,GAAAA,GACpCrd,KAAKm1K,gBAAgB3xK,OAAOme,SAAW3hB,KAAKm1K,gBAAgB5mH,SAASjxC,WAE5E,EACDy3J,qBAjE4B,SAiEPxiJ,IACIm/B,EAAAA,GAAAA,MAAK1xD,KAAKy0K,oBAAqB,SAASh8I,GACzD,OAAOA,IAAQlG,CAClB,IAAG,IAEAvyB,KAAKy0K,mBAAmBr0K,KAAKmyB,EAEpC,EACD8iJ,wBAzE4B,SAyEJ9iJ,GACpB,IAAIpxB,EAAQnB,KAAKy0K,mBAAmBrzK,QAAQmxB,GACxCpxB,GAAS,GACTnB,KAAKy0K,mBAAmBpzK,OAAOF,EAAO,EAE7C,EACDm0K,kBA/E4B,SA+EVV,GACd,IAAIW,EAAe,GASnB,OARA1oH,EAAAA,EAAAA,IAAK7sD,KAAKw0K,YAAa,SAAS11K,EAAGyzB,GAC/B,IAAIijJ,GAAa9jH,EAAAA,GAAAA,MAAKkjH,GAAc,SAASxsK,GACzC,OAAOA,EAAKmqB,YAAcA,CAC7B,IACGijJ,EAAW70K,SACX40K,EAAeA,EAAatlK,OAAOulK,GAE1C,IACMD,CACV,EACDE,mBA3F4B,SA2FTjyK,GACf,GAAKxD,KAAKm1K,gBAAgB3xK,OAA1B,CAGA,IAAIoxK,EAAc50K,KAAKm1K,gBAAgB3xK,OAAOoxK,YAC1ChoK,GAAQ8kD,EAAAA,GAAAA,MAAKkjH,GAAc,SAASxsK,GACpC,OAAOA,EAAKmqB,YAAc/uB,EAAO+uB,SACpC,IACG/uB,EAAOoxK,cACPA,EAAchoK,EAAMqD,OAAOzM,EAAOoxK,cAEtC50K,KAAKm1K,gBAAgB3xK,OAAOoxK,YAAc50K,KAAKs1K,kBAAkBV,EARhE,CASJ,EACDF,0BAxG4B,SAwGFlxK,GAClBA,EAAOoD,SAAW6rK,GAItBzyK,KAAK01K,mBAAmBlyK,GAHpBxD,KAAK+0K,qBAAqBvxK,EAAO+uB,UAIxC,EACDmjJ,mBA/G4B,SA+GTlyK,GAGf,GAFAxD,KAAKq1K,wBAAwB7xK,EAAO+uB,WACpCvyB,KAAKy1K,mBAAmBjyK,IACnBxD,KAAKy0K,mBAAmB9zK,OAAQ,CAEjC,GADAX,KAAK60K,mCACA70K,KAAKm1K,gBAAgB3xK,OACtB,OAEJxD,KAAKm1K,gBAAgB3xK,OAAOoD,OAAS,IAAM5G,KAAKm1K,gBAAgB3xK,OAAOoxK,YAAYj0K,OAAS8xK,GAAeA,GAC3GzyK,KAAKm1K,gBAAgB3xK,OAAO0sI,QAAUlwI,KAAKm1K,gBAAgB3xK,OAAOoD,SAAW6rK,GAC7E,IAAIr2C,GAAM32E,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKm1K,gBAAgB3xK,OAAQ,CAC9Cme,SAAU,OAEV4sC,EAAWvuD,KAAKm1K,gBAAgB5mH,SACpCvuD,KAAKm1K,gBAAgB5mH,SAAW,KAChCvuD,KAAKi1K,qBAAqB74C,GAC1B7tE,GAAYh5B,YAAW,WACnBg5B,EAAS3vD,QAAQw9H,EACpB,GACJ,CACJ,EACD64C,qBApI4B,SAoIPzxK,GACjBxD,KAAKi2E,gBAAgB2B,UAAU,YAAa,CAACp0E,GAChD,EACDmxK,qBAvI4B,WAwIxB30K,KAAKm1K,gBAAkB,CACnB3xK,OAAQ,KACR+qD,SAAU,KAEjB,EACDonH,2BA7I4B,WA8IpB31K,KAAKm1K,gBAAgB3xK,SACrBxD,KAAKm1K,gBAAgB3xK,OAAOgxK,WAAax0K,KAAKw0K,WAErD,EACDoB,0BAlJ4B,SAkJFrjJ,GACtB,IAAIpxB,EAAQnB,KAAKw0K,WAAWpzK,QAAQmxB,GAChCpxB,GAAS,IACTnB,KAAKw0K,WAAWnzK,OAAOF,EAAO,GAC9BnB,KAAK21K,6BACL31K,KAAK01K,mBAAmB,CACpBnjJ,UAAWA,IAGtB,EACDsjJ,kBA5J4B,SA4JVtjJ,GACTvyB,KAAKw0K,WAAWjvK,SAASgtB,KAC1BvyB,KAAKw0K,WAAWp0K,KAAKmyB,GACrBvyB,KAAK21K,6BAEZ,EACDnvI,MAlK4B,YAmKxBqmB,EAAAA,EAAAA,IAAK7sD,KAAKw0K,YAAa,SAAS11K,EAAGyzB,GAC/BA,EAAUiU,OACb,IACDxmC,KAAKy0K,mBAAqB,GAC1Bz0K,KAAK20K,sBACR,EACD5nI,GAzK4B,SAyKzBvuC,EAAWy0E,GAEV,OADAjzE,KAAKi2E,gBAAgBlpC,GAAGvuC,EAAWy0E,GAC5BjzE,IACV,EACDs2C,IA7K4B,SA6KxB93C,EAAWy0E,GAEX,OADAjzE,KAAKi2E,gBAAgB3/B,IAAI93C,EAAWy0E,GAC7BjzE,IACV,IAED81K,GAAmB,CACnBz3H,OAAQ,GACR03H,eAFmB,SAEJxgF,GACX,IAAI/xF,GAASkuD,EAAAA,GAAAA,MAAK1xD,KAAKq+C,QAAS,SAASt+C,GACrC,OAAOA,EAAOw1F,QAAUA,CAC3B,IACD,GAAI/xF,EAAO7C,OACP,OAAO6C,EAAO,EAErB,EACDwyK,UAVmB,SAUTh8G,EAAUvkB,GAChB,IAAIwgI,EAAgBC,EAEhBC,GADqB,QAAUF,EAAiBj8G,EAAS1/D,cAAW,IAAW27K,GAA0B,QAAUC,EAAwBD,EAAeG,oBAAiB,IAAWF,OAAtF,EAAuHA,EAAsB3wK,SAAS,uBAC9My0D,EAASq8G,kBAAkB,YACvE,GAAIF,EACA,OAAOA,EAEX,IAAIG,EAAWt8G,EAASqF,QAAQ,uBAAuBtqB,QACvD,OAAIuhI,EAAS31K,OACF21K,EAASD,kBAAkB,YAE/B5gI,CACV,EACD8gI,WAvBmB,WAwBfv2K,KAAKq+C,OAAS,GACdr+C,KAAKw2K,UACR,EACDA,SA3BmB,SA2BVjhF,GACL,IAAIx1F,EAASC,KAAK+1K,eAAexgF,GAKjC,OAJKx1F,IACDA,EAAS,IAAIw0K,GAAYh/E,GACzBv1F,KAAKq+C,OAAOj+C,KAAKL,IAEdA,CACV,EACD02K,YAnCmB,SAmCPlhF,GACR,IAAIx1F,EAASC,KAAK+1K,eAAexgF,GAC7Bp0F,EAAQnB,KAAKq+C,OAAOj9C,QAAQrB,GAIhC,OAHIoB,GAAS,GACTnB,KAAKq+C,OAAOh9C,OAAOF,EAAO,GAEvBpB,CACV,EACD22K,mBA3CmB,SA2CA15J,GACf,IACU5U,EAGN4U,EAHA5U,KACWmqB,EAEXvV,EAFAuV,UACMn5B,EACN4jB,EADA5jB,MAECi1D,EAAAA,EAAAA,IAAUjmD,EAAKhO,WACZm4B,EAAUokJ,0BAA2BtoH,EAAAA,EAAAA,IAAUj1D,GAC/CgP,EAAKhO,QAAUm4B,EAAUokJ,wBAAwBv9K,GAEjDgP,EAAKhO,QAAUm4B,EAAUqkJ,iBAGpC,EACDC,eAzDmB,SAyDJ75J,GACX,IACYxZ,EAERwZ,EAFAxZ,OACM4E,EACN4U,EADA5U,KAEC5E,EAAOszK,aACRtzK,EAAOszK,WAAa1uK,GAEnB5E,EAAOoxK,cACRpxK,EAAOoxK,YAAc,IAEzBpxK,EAAOoxK,YAAYx0K,KAAKgI,EAC3B,EACDm5I,SAtEmB,SAsEVrjJ,EAAO0O,EAAOxT,GAAM,IACrB29K,EADqB,OAErBvzK,EAAS,CACTpK,KAAMA,EACN8E,MAAOA,EACP44K,WAAY,KACZlC,YAAa,KACb1kC,SAAS,EACT8mC,gBAAiBpqK,EACjBqqK,aAAc,KACdrwK,OAAQ6rK,GACR9wJ,SAAU,MAEV4Q,EAAY,OAAS3lB,QAAS,IAAWA,GAAiB,QAAUmqK,EAAUnqK,EAAM,UAAO,IAAWmqK,OAArD,EAAwEA,EAAQxkJ,UACjI2kJ,EAAiB,GAuDrB,OAtDArqH,EAAAA,EAAAA,IAAKjgD,GAAS,IAAI,SAAC9N,EAAGsJ,GAClB,IACI+uK,EADAC,EAAgBzE,GAAgBvqK,EAAK/C,MAEzC,IAAI+xK,EAsCA,MAAM93J,GAAAA,EAAAA,MAAa,SArCnB,OAAI+uC,EAAAA,EAAAA,IAAUjmD,EAAK8nI,UAAY9nI,EAAKlK,QAAUA,IAAUkK,EAAKyrK,aACpDzrK,EAAK8nI,UACN1sI,EAAO0sI,SAAU,EACjB,EAAK2mC,eAAe,CAChBrzK,OAAQA,EACR4E,KAAMA,KAEH,IAIfA,EAAKlK,MAAQA,EACT,UAAYkK,EAAK/C,MACjB6xK,EAAe92K,KAAK,CAChBgI,KAAMA,EACNgvK,cAAeA,KAEZ,IAEXD,EAAuBC,EAAc71B,SAASrjJ,EAAOkK,GACrDA,EAAK8nI,QAAUinC,EACVA,IACD3zK,EAAO0sI,SAAU,EACjB,EAAKwmC,mBAAmB,CACpBtuK,KAAMA,EACNmqB,UAAW6kJ,EACXh+K,KAAMA,IAEV,EAAKy9K,eAAe,CAChBrzK,OAAQA,EACR4E,KAAMA,OAGTA,EAAK8nI,cAAV,GAMP,IACG1sI,EAAO0sI,UAAY1sI,EAAOoxK,aAAesC,EAAev2K,SACxD6C,EAASxD,KAAKq3K,oBAAoB,CAC9Bn5K,MAAOA,EACPgoD,MAAOgxH,EACP1zK,OAAQA,EACRpK,KAAMA,KAGd4G,KAAKs3K,gCAAgC/kJ,EAAW/uB,GAChDA,EAAOoD,OAASpD,EAAOyzK,aAAexE,GAAiBjvK,EAAO0sI,QAAUuiC,GAAeA,GAChFjvK,CACV,EACD8zK,gCA7ImB,SA6Ia/kJ,EAAW/uB,GACvC,IAAI+zK,EACJ,GAAKhlJ,EAAL,CAGA,IAAIilJ,EAAc1B,GAAiBC,eAAexjJ,EAAUklJ,kBAC5DD,EAAY/B,mBAAmBh3K,KAAK+4K,EAAa,CAC7CjlJ,UAAWA,EACXqiJ,YAAa,QAAU2C,EAAsB/zK,EAAOoxK,mBAAgB,IAAW2C,EAAsBA,EAAsB,IAJ9H,CAMJ,EACDF,oBAxJmB,SAwJCrgK,GAAM,WAEVxT,EAIRwT,EAJAxT,OACOtF,EAGP8Y,EAHA9Y,MACOgoD,EAEPlvC,EAFAkvC,MACM9sD,EACN4d,EADA5d,KAEAs+K,EAAe,GAkCnB,OAjCA7qH,EAAAA,EAAAA,IAAK3G,GAAO,SAACpnD,EAAG8F,GACZ,IAAI+yK,EAAiB/yK,EAAKwyK,cAAc71B,SAASrjJ,EAAO0G,EAAKwD,MAC7D,IAAKouD,EAAAA,EAAAA,IAAUmhH,GAOR,CACEn0K,EAAOyzK,eACRzzK,EAAOyzK,aAAe,IAE1BzzK,EAAOyzK,aAAa72K,KAAKwE,EAAKwD,MAC9B,IAAIqxF,EAAck+E,EAAe75K,MAAK,SAAAs+H,GAClC,IAAIw7C,EAAa,EAAKC,sBAAsBz7C,GAO5C,OANA,EAAK07C,kBAAkB,CACnB1vK,KAAMxD,EAAKwD,KACXwvK,WAAYA,EACZrlJ,UAAW3tB,EAAKwyK,cAChBh+K,KAAMA,IAEHw+K,CACV,IACDF,EAAat3K,KAAKq5F,EACrB,MAtBG,EAAKq+E,kBAAkB,CACnB1vK,KAAMxD,EAAKwD,KACXwvK,WAAY,EAAKC,sBAAsBF,GACvCplJ,UAAW3tB,EAAKwyK,cAChBh+K,KAAMA,GAmBjB,IACGs+K,EAAa/2K,SACb6C,EAAOme,SAAWhjB,QAAQ0nI,IAAIqxC,GAAc55K,MAAK,SAAA63B,GAAM,OAAI,EAAKoiJ,qBAAqB,CACjFv0K,OAAQA,EACRmyB,OAAQA,GAF2C,KAKpDnyB,CACV,EACDs0K,kBAnMmB,SAmMDpT,GACd,IACUt8J,EAINs8J,EAJAt8J,KACYwvK,EAGZlT,EAHAkT,WACWrlJ,EAEXmyI,EAFAnyI,UACMn5B,EACNsrK,EADAtrK,KAEJgP,EAAK8nI,QAAU0nC,EAAW1nC,QACrB0nC,EAAW1nC,WACR7hF,EAAAA,EAAAA,IAAUupH,EAAWx9K,WAAYs2D,EAAAA,EAAAA,IAASknH,EAAWx9K,UAAYw9K,EAAWx9K,QAAQuG,OACpFyH,EAAKhO,QAAUw9K,EAAWx9K,QAE1B4F,KAAK02K,mBAAmB,CACpBtuK,KAAMA,EACNmqB,UAAWA,EACXn5B,KAAMA,IAIrB,EACDy+K,sBAvNmB,SAuNGD,GAClB,IAAIp0K,EAWJ,OAVI6c,EAAAA,EAAAA,IAASu3J,IACTp0K,GAASiiD,EAAAA,GAAAA,GAAO,CAAC,EAAGmyH,IACfvpH,EAAAA,EAAAA,IAAU7qD,EAAO0sI,WAClB1sI,EAAO0sI,SAAU,IAGrB1sI,EAAS,CACL0sI,UAAS10E,EAAAA,EAAAA,IAAUo8G,IAAcA,GAGlCp0K,CACV,EACDu0K,qBArOmB,SAqOEjyB,GAAO,WAEZnwH,EAERmwH,EAFAnwH,OACQnyB,EACRsiJ,EADAtiJ,OAeJ,OAbAqpD,EAAAA,EAAAA,IAAKl3B,GAAQ,SAACx0B,EAAOs3B,GACjB,IAAI,IAAUA,EAAIy3G,QAAS,CACvB1sI,EAAO0sI,QAAUz3G,EAAIy3G,QACrB,IAAI9nI,EAAO5E,EAAOyzK,aAAa91K,GAC/B,EAAK01K,eAAe,CAChBrzK,OAAQA,EACR4E,KAAMA,GAEb,CACJ,IACD5E,EAAOyzK,aAAe,KACtBzzK,EAAOme,SAAW,KAClBne,EAAOoD,OAASpD,EAAO0sI,QAAUuiC,GAAeA,GACzCjvK,CACV,EACDw0K,yBAzPmB,SAyPMziF,EAAOhjE,GAC5B,IAAIilJ,EAAc1B,GAAiBU,SAASjhF,GAC5CiiF,EAAY3B,kBAAkBp3K,KAAK+4K,EAAajlJ,EACnD,EACD0lJ,mBA7PmB,SA6PA1iF,EAAO2iF,GACtB,IAAIC,OAAiB,IAAW5iF,EAC5B6iF,EAA4B7iF,GAAS,sBAAwBA,EAAMipE,KACvE,OAAQ2Z,IAAmBC,IAA8BF,EAAkBv3K,MAC9E,EACDi1K,0BAlQmB,SAkQOrgF,EAAOhjE,GAC7B,IAAIxyB,EAAS+1K,GAAiBC,eAAexgF,GAC7C,GAAIx1F,EAAQ,CACRA,EAAO61K,0BAA0Bn3K,KAAKsB,EAAQwyB,GAC9C,IAAI2lJ,EAAoBn4K,EAAOy0K,WAC3Bx0K,KAAKi4K,mBAAmB1iF,EAAO2iF,IAC/Bl4K,KAAKy2K,YAAYlhF,EAExB,CACJ,EACD8iF,sBA5QmB,SA4QGj7K,GAAS,WACvBk7K,EAAgB,CAAC,EAWrB,OAVIl7K,GACA,CAAC,UAAW,mBAAoB,kBAAmB,oBAAoBsD,SAAQ,SAAA7D,GACvEA,KAAQO,IACRqoD,EAAAA,GAAAA,GAAO6yH,EAAe,EAAKC,6BAA6B,CACpDn/K,KAAMyD,EACNqB,MAAOd,EAAQP,IAChBO,GAEV,IAEEk7K,CACV,EACDC,6BA1RmB,SA0RUhyB,EAAOnpJ,GAChC,IACUhE,EAENmtJ,EAFAntJ,KACO8E,EACPqoJ,EADAroJ,MAEJ,OAAQ9E,GACJ,IAAK,mBACD,IAAI82I,EAAUhyI,IAAUu0K,IAAgBv0K,IAAUu0K,GAClD,OAAOr1K,EAAQ8yI,UAAYA,EAAU,CACjCA,QAASA,GACT,CAAC,EACT,IAAK,UACD,IACsBsoC,EAClBp7K,EADAo7K,iBAEAC,EAAYD,EAMhB,OALIt6K,GAASs6K,IAAqB/F,GAC9BgG,EAAYhG,GACJv0K,GAASs6K,IAAqB/F,KACtCgG,EAAYhG,IAETgG,IAAcD,EAAmB,CACpCA,iBAAkBC,GAClB,CAAC,EACT,IAAK,mBACD,IAAIC,EAAmBx6K,GAAUA,EAAMyC,OAAgBzC,EAAM,GAAb,KAChD,OAAOd,EAAQs7K,kBAAoBA,EAAkB,CACjDA,gBAAiBA,GACjB,CAAC,EACT,IAAK,kBACD,IACsBC,EAClBv7K,EADAu7K,iBAEJ,IAAKz6K,GAASy6K,EACV,MAAO,CACHA,iBAAkB,MAEnB,GAAIz6K,IAAUy6K,EACjB,MAAO,CACHA,iBAAkB,CAACz6K,IAEpB,GAAIA,GAASy6K,GAAoBz6K,IAAUy6K,EAAiB,GAE/D,OADAA,EAAiB,GAAKz6K,EACf,CACHy6K,iBAAkBA,EAAiB5zK,SAInD,MAAO,CAAC,CACX,EACD6zK,cA5UmB,SA4ULrjF,GACV,IAAIiiF,EAAc1B,GAAiBC,eAAexgF,GAClD,IAAKiiF,EACD,MAAMl4J,GAAAA,EAAAA,MAAa,SAEvB,OAAOk4J,EAAYj2B,UACtB,EACDs3B,WAnVmB,SAmVRtjF,GACP,IAAIiiF,EAAc1B,GAAiBC,eAAexgF,GAClD,IAAKiiF,EACD,MAAMl4J,GAAAA,EAAAA,MAAa,SAEvB,OAAOk4J,EAAYhxI,OACtB,GAELsvI,GAAiBS,aACjB,UC7zBIzxK,GAAUD,MAAMC,QACpB,SAASg0K,GAAiBp4C,GACtB,IAAIr7H,SAAcq7H,EAClB,MAAgB,WAATr7H,GAA8B,WAATA,CAC/B,CACD,SAAS0zK,GAAcr4C,GACnB,YAAa,IAANA,GAAsB,OAANA,CAC1B,CACD,SAASs4C,GAAUt4C,GACf,OAAa,OAANA,IAAoB,IAANA,IAAqB,IAANA,QAAoB,IAANA,CACrD,CACD,SAAS7xE,GAAW6xE,GAChB,MAAoB,oBAANA,CACjB,CACD,SAAShwE,GAASgwE,GACd,MAAoB,kBAANA,CACjB,CAID,SAASu4C,GAAOv4C,GACZ,OAAa,OAANA,CACV,CAID,SAASw4C,GAAYnkI,EAAOC,GACxB,IAAIr7B,EAAM,CAAC,EACX,GAAIo7B,EACA,IAAK,IAAIzyC,KAAOyyC,EACZp7B,EAAIrX,GAAOyyC,EAAMzyC,GAGzB,GAAI0yC,EACA,IAAK,IAAImkI,KAASnkI,EACdr7B,EAAIw/J,GAASnkI,EAAOmkI,GAG5B,OAAOx/J,CACV,CAeD,SAASy/J,GAAkB14C,GACvB,OAAQu4C,GAAOv4C,IAAmB,kBAANA,CAC/B,CAID,IAAI24C,GAAY,CAAC,EAEjB,SAASC,GAAmBlgL,GACxB,OAAOA,EAAK4L,OAAO,GAAGwP,aACzB,CACD,SAASjM,GAAYgxK,EAAWC,GAC5BD,EAAUhxK,YAAYixK,EACzB,CACD,SAASC,GAAeF,EAAWG,EAASC,GACpCV,GAAOU,GACPpxK,GAAYgxK,EAAWG,GAGvBH,EAAU9xK,aAAaiyK,EAASC,EAEvC,CAUD,SAAStwK,GAAYkwK,EAAW5+G,GAC5B4+G,EAAUlwK,YAAYsxD,EACzB,CACD,SAASi/G,GAAQC,GACb,IAAK,IAAIlxK,EAAI,EAAGA,EAAIkxK,EAAQl5K,OAAQgI,IAChCkxK,EAAQlxK,IAEf,CACD,SAASmxK,GAAeC,EAAOC,EAAWC,GACtC,IAAIlvK,EAAWgvK,EAAMhvK,SACrB,OAAY,EAARkvK,EACOlvK,EAASmvK,IAER,KAARD,EAC4B,IAArBF,EAAMI,WAA0CpvK,EAAWA,EAASivK,EAAY,EAAIjvK,EAASpK,OAAS,GAE1GoK,CACV,CACD,SAASqvK,GAAiBL,EAAOC,GAE7B,IADA,IAAIC,EACGF,GAAO,CAEV,GAAY,MADZE,EAAQF,EAAME,OAEV,OAAOF,EAAMP,IAEjBO,EAAQD,GAAeC,EAAOC,EAAWC,EAC5C,CACD,OAAO,IACV,CACD,SAASI,GAAeN,EAAOR,GAC3B,EAAG,CACC,IAAIU,EAAQF,EAAME,MAClB,GAAY,KAARA,EAEA,YADA5wK,GAAYkwK,EAAWQ,EAAMP,KAGjC,IAAIzuK,EAAWgvK,EAAMhvK,SAOrB,GANY,EAARkvK,IACAF,EAAQhvK,EAASmvK,KAET,EAARD,IACAF,EAAQhvK,GAEA,KAARkvK,EAA6B,CAC7B,GAAyB,IAArBF,EAAMI,WAGL,CACD,IAAK,IAAIxxK,EAAI,EAAGyI,EAAMrG,EAASpK,OAAQgI,EAAIyI,IAAOzI,EAC9C0xK,GAAetvK,EAASpC,GAAI4wK,GAEhC,MACH,CAPGQ,EAAQhvK,CAQf,CACJ,OAAQgvK,EACZ,CACD,SAASO,GAAaP,EAAOR,EAAWI,GACpC,EAAG,CACC,IAAIM,EAAQF,EAAME,MAClB,GAAY,KAARA,EAEA,YADAR,GAAeF,EAAWQ,EAAMP,IAAKG,GAGzC,IAAI5uK,EAAWgvK,EAAMhvK,SAOrB,GANY,EAARkvK,IACAF,EAAQhvK,EAASmvK,KAET,EAARD,IACAF,EAAQhvK,GAEA,KAARkvK,EAA6B,CAC7B,GAAyB,IAArBF,EAAMI,WAGL,CACD,IAAK,IAAIxxK,EAAI,EAAGyI,EAAMrG,EAASpK,OAAQgI,EAAIyI,IAAOzI,EAC9C2xK,GAAavvK,EAASpC,GAAI4wK,EAAWI,GAEzC,MACH,CAPGI,EAAQhvK,CAQf,CACJ,OAAQgvK,EACZ,CACD,SAASQ,GAAmBxxI,EAAUyxI,EAAW9xI,GAC7C,OAAIK,EAAS1B,YAAYozI,yBACdvB,GAAYxwI,EAAOK,EAAS1B,YAAYozI,yBAAyBD,EAAW9xI,IAEhFA,CACV,CACD,IAAIgyI,GAAc,CACdt2J,GAAG,GAEHhnB,GAAU,CACVu9K,oBAAqB,KACrBC,YAAa,KACbC,eAAgB,MAEpB,SAASC,GAAetB,EAAKzuK,GACzByuK,EAAInyH,YAAct8C,CACrB,CAED,SAASgwK,GAAyBC,EAAWC,GACzC,OAAQ7B,GAAkB4B,IACtBA,EAAUj6K,QAAUk6K,EAAUl6K,OAC9Bi6K,EAAU1gL,OAAS2gL,EAAU3gL,IACpC,CACD,SAAS4gL,GAAqB1jE,EAAIhuG,GAC9B,IAAK,IAAIsN,KAAYtN,OAxKR,IAyKOguG,EAAG1gG,KACf0gG,EAAG1gG,GAAYtN,EAAKsN,IAG5B,OAAO0gG,CACV,CACD,SAAS2jE,GAAU/1K,EAAQg2K,GACvB,QAASvsH,GAAWzpD,KAAYA,EAAOg2K,IAAO,EACjD,CAED,IAAIC,GAAY,IAChB,SAASC,GAAEnB,EAAYpvK,EAAUoN,EAAW8hK,EAAO33K,EAAKwI,EAAOmG,EAAK5L,GAChErF,KAAKm6K,WAAaA,EAClBn6K,KAAK+K,SAAWA,EAChB/K,KAAKmY,UAAYA,EACjBnY,KAAKw5K,IAAM,KACXx5K,KAAKi6K,MAAQA,EACbj6K,KAAKsC,SAAc,IAARA,EAAiB,KAAOA,EACnCtC,KAAK8K,WAAkB,IAAVA,EAAmB,KAAOA,EACvC9K,KAAKiR,SAAc,IAARA,EAAiB,KAAOA,EACnCjR,KAAKqF,KAAOA,CACf,CACD,SAASu1K,GAAYX,EAAO50K,EAAM8S,EAAWpN,EAAUovK,EAAYrvK,EAAOxI,EAAK2O,GAC3E,IAAIsqK,OAA2B,IAAfpB,EAAwB,EAA6BA,EACjEJ,EAAQ,IAAIuB,GAAEC,EAAWxwK,EAAUoN,EAAW8hK,EAAO33K,EAAKwI,EAAOmG,EAAK5L,GAO1E,OANIjI,GAAQw9K,aACRx9K,GAAQw9K,YAAYb,GAEN,IAAdwB,GACAC,GAAkBzB,EAAOA,EAAMhvK,UAE5BgvK,CACV,CAqCD,SAAS0B,GAAqBxB,EAAO50K,EAAMyF,EAAOxI,EAAK2O,GACnDgpK,EAbJ,SAA+BA,EAAO50K,GAClC,OAAY,GAAR40K,EACOA,EAEP50K,EAAK2C,WAAa3C,EAAK2C,UAAUsmC,OAC1B,EAEPjpC,EAAKipC,OACE,MAEJ,CACV,CAEWotI,CAAsBzB,EAAO50K,GACrC,IAAI00K,EAAQ,IAAIuB,GAAE,EAA4B,KAAM,KAAMrB,EAAO33K,EAzBrE,SAA2B23K,EAAO50K,EAAMyF,GAEpC,IAAI6N,GAAwB,MAARshK,EAAiC50K,EAAKipC,OAASjpC,GAAMsT,aACzE,OAAIogK,GAAcpgK,GACP7N,EAEPiuK,GAAcjuK,GACPouK,GAAYvgK,EAAc,MAE9BuiK,GAAqBpwK,EAAO6N,EACtC,CAeyEgjK,CAAkB1B,EAAO50K,EAAMyF,GAtCzG,SAA2BmvK,EAAO50K,EAAM4L,GACpC,GAAY,EAARgpK,EACA,OAAOhpK,EAEX,IAAI2qK,GAAwB,MAAR3B,EAAiC50K,EAAKipC,OAASjpC,GAAMu2K,aACzE,OAAI7C,GAAc6C,GACP3qK,EAEP8nK,GAAc9nK,GACP2qK,EAEJV,GAAqBjqK,EAAK2qK,EACpC,CA0BgHC,CAAkB5B,EAAO50K,EAAM4L,GAAM5L,GAIlJ,OAHIjI,GAAQw9K,aACRx9K,GAAQw9K,YAAYb,GAEjBA,CACV,CACD,SAAS+B,GAAgBn1K,EAAMrE,GAC3B,OAAO,IAAIg5K,GAAE,EAA4BvC,GAAcpyK,KAAkB,IAATA,IAA0B,IAATA,EAAiB,GAAKA,EAAM,KAAM,GAAerE,EAAK,KAAM,KAAM,KACtJ,CACD,SAASy5K,GAAehxK,EAAUovK,EAAY73K,GAC1C,IAAI05K,EAAWpB,GAAY,KAAqB,KAAqB,KAAM7vK,EAAUovK,EAAY,KAAM73K,EAAK,MAC5G,OAAQ05K,EAAS7B,YACb,KAAK,EACD6B,EAASjxK,SAAWkxK,KACpBD,EAAS7B,WAAa,EACtB,MACJ,KAAK,GACD6B,EAASjxK,SAAW,CAAC+wK,GAAgB/wK,IACrCixK,EAAS7B,WAAa,EAG9B,OAAO6B,CACV,CACD,SAAS7hI,GAAe4/H,GACpB,IAAIjvK,EAAQivK,EAAMjvK,MAClB,GAAIA,EAAO,CACP,IAAImvK,EAAQF,EAAME,MACN,IAARA,SACuB,IAAnBnvK,EAAMC,UAAuBguK,GAAcgB,EAAMhvK,WACjDywK,GAAkBzB,EAAOjvK,EAAMC,eAEX,IAApBD,EAAMqN,YACF4gK,GAAcgB,EAAM5hK,aACpB4hK,EAAM5hK,UAAYrN,EAAMqN,WAAa,MAEzCrN,EAAMqN,eAAYxQ,SAGR,IAAdmD,EAAMxI,MACNy3K,EAAMz3K,IAAMwI,EAAMxI,IAClBwI,EAAMxI,SAAMqF,QAEE,IAAdmD,EAAMmG,MAEF8oK,EAAM9oK,IADE,EAARgpK,EACYf,GAAYa,EAAM9oK,IAAKnG,EAAMmG,KAG7BnG,EAAMmG,IAEtBnG,EAAMmG,SAAMtJ,EAEnB,CACD,OAAOoyK,CACV,CAWD,SAASmC,GAAYC,GACjB,IAAIlC,GAA8B,MAAtBkC,EAAalC,MACrBnvK,EAAQqxK,EAAarxK,MACzB,GAAY,GAARmvK,IACKhB,GAAOnuK,GAAQ,CAChB,IAAIsxK,EAAetxK,EAEnB,IAAK,IAAIxI,KADTwI,EAAQ,CAAC,EACOsxK,EACZtxK,EAAMxI,GAAO85K,EAAa95K,EAEjC,CAEL,OAAsC,KAAzB,KAAR23K,GACM,IAAIqB,GAAEa,EAAahC,WAAYgC,EAAapxK,SAAUoxK,EAAahkK,UAAW8hK,EAAOkC,EAAa75K,IAAKwI,EAAOqxK,EAAalrK,IAAKkrK,EAAa92K,MAlB5J,SAAuB82K,GACnB,IAAIE,EAAcF,EAAapxK,SAC3BovK,EAAagC,EAAahC,WAC9B,OAAO4B,GAA8B,IAAf5B,EAA0C+B,GAAYG,GAAeA,EAAYt4K,IAAIm4K,IAAc/B,EAAYgC,EAAa75K,IACrJ,CAgBUg6K,CAAcH,EACxB,CACD,SAASF,KACL,OAAOH,GAAgB,GAAI,KAC9B,CAKD,SAASS,GAAiBr0K,EAAO1E,EAAQrC,EAAOq7K,GAC5C,IAAK,IAAIprK,EAAMlJ,EAAMvH,OAAQQ,EAAQiQ,EAAKjQ,IAAS,CAC/C,IAAI8iB,EAAI/b,EAAM/G,GACd,IAAK63K,GAAU/0J,GAAI,CACf,IAAIw4J,EAASD,EAAanB,GAAYl6K,EACtC,GAAI2D,GAAQmf,GACRs4J,GAAiBt4J,EAAGzgB,EAAQ,EAAGi5K,OAE9B,CACD,GAAI3D,GAAiB70J,GACjBA,EAAI63J,GAAgB73J,EAAGw4J,OAEtB,CACD,IAAIC,EAASz4J,EAAE3hB,IACXq6K,EAAgBjsH,GAASgsH,IAAWA,EAAO,KAAOrB,IACxC,MAAVp3J,EAAEg2J,OAAyC0C,KAC3C14J,EAAIi4J,GAAYj4J,IAEpBA,EAAEg2J,OAAS,MACN0C,EAQID,EAAO57J,UAAU,EAAG07J,EAAW77K,UAAY67K,IAChDv4J,EAAE3hB,IAAMk6K,EAAaE,GARjBzD,GAAOyD,GACPz4J,EAAE3hB,IAAMm6K,EAGRx4J,EAAE3hB,IAAMk6K,EAAaE,CAMhC,CACDl5K,EAAOpD,KAAK6jB,EACf,CACJ,CACJ,CACJ,CACD,SAAS24J,GAAwBv3K,GAC7B,OAAQA,GACJ,IAAK,MACD,OAAO,GACX,IAAK,QACD,OAAO,GACX,IAAK,SACD,OAAO,IACX,IAAK,WACD,OAAO,IACX,IAjVO,KAkVH,OAAO,KACX,QACI,OAAO,EAElB,CACD,SAASm2K,GAAkBzB,EAAOhvK,GAC9B,IAAI8xK,EACAC,EAAgB,EAEpB,GAAI9D,GAAUjuK,GACV8xK,EAAc9xK,OAEb,GAAI+tK,GAAiB/tK,GACtB+xK,EAAgB,GAChBD,EAAc9xK,OAEb,GAAIjG,GAAQiG,GAAW,CAExB,IADA,IAAIqG,EAAMrG,EAASpK,OACVgI,EAAI,EAAGA,EAAIyI,IAAOzI,EAAG,CAC1B,IAAIsb,EAAIlZ,EAASpC,GACjB,GAAIqwK,GAAU/0J,IAAMnf,GAAQmf,GAAI,CAC5B44J,EAAcA,GAAe9xK,EAAShG,MAAM,EAAG4D,GAC/C4zK,GAAiBxxK,EAAU8xK,EAAal0K,EAAG,IAC3C,KACH,CACI,GAAImwK,GAAiB70J,IACtB44J,EAAcA,GAAe9xK,EAAShG,MAAM,EAAG4D,IACnCvI,KAAK07K,GAAgB73J,EAAGo3J,GAAY1yK,QAE/C,CACD,IAAIrG,EAAM2hB,EAAE3hB,IACRy6K,GAA0B,MAAV94J,EAAEg2J,OAAyC,EAC3D+C,EAAY/D,GAAO32K,GACnB26K,EAAavsH,GAASpuD,IAAQA,EAAI,KAAO+4K,GACzC0B,GAAgBC,GAAaC,GAC7BJ,EAAcA,GAAe9xK,EAAShG,MAAM,EAAG4D,IAC3Co0K,GAAgBE,KAChBh5J,EAAIi4J,GAAYj4J,KAEhB+4J,GAAaC,KACbh5J,EAAE3hB,IAAM+4K,GAAY1yK,GAExBk0K,EAAYz8K,KAAK6jB,IAEZ44J,GACLA,EAAYz8K,KAAK6jB,GAErBA,EAAEg2J,OAAS,KACd,CACJ,CAGG6C,EADuB,KAD3BD,EAAcA,GAAe9xK,GACbpK,OACI,EAGA,CAEvB,MAEGk8K,EAAc9xK,GACFkvK,OAAS,MACA,MAAjBlvK,EAASkvK,QACT4C,EAAcX,GAAYnxK,IAE9B+xK,EAAgB,EAIpB,OAFA/C,EAAMhvK,SAAW8xK,EACjB9C,EAAMI,WAAa2C,EACZ/C,CACV,CACD,SAASmD,GAAc1iK,GACnB,OAAIw+J,GAAUx+J,IAAUs+J,GAAiBt+J,GAC9BshK,GAAgBthK,EAAO,MAE9B1V,GAAQ0V,GACDuhK,GAAevhK,EAAO,EAAyB,MAErC,MAAdA,EAAMy/J,MAA4BiC,GAAY1hK,GAASA,CACjE,CAED,IAAI2iK,GAAU,+BACVC,GAAQ,uCACR98G,GAAa,CACb,gBAAiB68G,GACjB,gBAAiBA,GACjB,aAAcA,GACd,aAAcA,GACd,aAAcA,GACd,cAAeA,GACf,aAAcA,GACd,WAAYC,GACZ,WAAYA,GACZ,YAAaA,IAGjB,SAASC,GAAwBj5J,GAC7B,MAAO,CACHk5J,QAASl5J,EACTm5J,WAAYn5J,EACZo5J,UAAWp5J,EACXq5J,WAAYr5J,EACZs5J,UAAWt5J,EACXu5J,WAAYv5J,EACZw5J,QAASx5J,EACTy5J,YAAaz5J,EACb05J,YAAa15J,EACb25J,UAAW35J,EACX45J,WAAY55J,EACZ65J,YAAa75J,EACb85J,aAAc95J,EAErB,CACD,IAAI+5J,GAAsBd,GAAwB,GAC9Ce,GAAiBf,GAAwB,MACzCgB,GAAkBhB,IAAwB,GAC9C,SAASiB,GAA0BllL,EAAMogL,GACrC,IAAI+E,EAAe/E,EAAIgF,IASvB,OARKD,IACDA,EAAe/E,EAAIgF,IAAMnB,GAAwB,OAEhDkB,EAAanlL,IACsB,MAA9B+kL,GAAoB/kL,KACtBglL,GAAehlL,GAsG3B,SAA+BA,GAC3B,IAAIqlL,EAAyB,YAATrlL,GAA+B,eAATA,EAlB9C,SAAwBA,GACpB,OAAO,SAAU2H,GACQ,IAAjBA,EAAMmqB,OAOVwzJ,GAAe39K,GAAO,EAAM3H,EAAMulL,GAAsB59K,IAHpDA,EAAMggE,iBAIb,CACJ,CAOqE69G,CAAexlL,GANrF,SAAmBA,GACf,OAAO,SAAU2H,GACb29K,GAAe39K,GAAO,EAAO3H,EAAMulL,GAAsB59K,GAC5D,CACJ,CAE4F89K,CAAUzlL,GAEnG,OADA8I,SAASX,iBAAiB+3K,GAAmBlgL,GAAOqlL,GAC7CA,CACV,CA1GkCK,CAAsB1lL,IAG9CmlL,CACV,CACD,SAASQ,GAAsB3lL,EAAMogL,GACjC,IAAI+E,EAAe/E,EAAIgF,IACnBD,GAAgBA,EAAanlL,KACO,MAA9B+kL,GAAoB/kL,KACtB8I,SAASV,oBAAoB83K,GAAmBlgL,GAAOglL,GAAehlL,IACtEglL,GAAehlL,GAAQ,MAE3BmlL,EAAanlL,GAAQ,KAE5B,CAmBD,SAASslL,GAAe39K,EAAOi+K,EAAS5lL,EAAMsnE,GAC1C,IAAI84G,EAJR,SAAuBz4K,GACnB,OAAO8tD,GAAW9tD,EAAMwrJ,cAAgBxrJ,EAAMwrJ,eAAe,GAAKxrJ,EAAM4W,MAC3E,CAEasnK,CAAcl+K,GACxB,EAAG,CAIC,GAAIi+K,GAAWxF,EAAIh0J,SACf,OAEJ,IAAI+4J,EAAe/E,EAAIgF,IACvB,GAAID,EAAc,CACd,IAAIW,EAAeX,EAAanlL,GAChC,GAAI8lL,IAEAx+G,EAAU84G,IAAMA,EAChB0F,EAAan+K,MAAQm+K,EAAan+K,MAAMm+K,EAAa5kL,KAAMyG,GAASm+K,EAAan+K,GAC7EA,EAAMo+K,cACN,MAGX,CACD3F,EAAMA,EAAIpwK,UACb,QAAS6vK,GAAOO,GACpB,CACD,SAASz4G,KACL/gE,KAAKm/K,cAAe,EACfn/K,KAAKo/K,6BACNp/K,KAAKgjE,0BAEZ,CACD,SAASC,KACL,OAAOjjE,KAAKkjE,gBACf,CACD,SAAS9D,KACL,OAAOp/D,KAAKm/K,YACf,CACD,SAASR,GAAsB59K,GAE3B,IAAI2/D,EAAY,CACZ84G,IAAKt3K,UAWT,OATAnB,EAAMkiE,mBAAqBA,GAC3BliE,EAAMq+D,qBAAuBA,GAC7Br+D,EAAMggE,gBAAkBA,GACxB/iE,OAAOC,eAAe8C,EAAO,gBAAiB,CAC1C3C,cAAc,EACdxE,IAAK,WACD,OAAO8mE,EAAU84G,GACpB,IAEE94G,CACV,CA8BD,SAAS2+G,GAAqBv0K,EAAOm3C,EAAYh5C,GAC7C,GAAI6B,EAAMm3C,GAAa,CACnB,IAAIzhD,EAAWsK,EAAMm3C,GACjBzhD,EAASO,MACTP,EAASO,MAAMP,EAASlG,KAAM2O,GAG9BzI,EAASyI,EAEhB,KACI,CACD,IAAIq2K,EAAqBr9H,EAAWztC,cAChC1J,EAAMw0K,IACNx0K,EAAMw0K,GAAoBr2K,EAEjC,CACJ,CACD,SAASs2K,GAAsBt9H,EAAYu9H,GACvC,IAAIC,EAAW,SAAUx2K,GACrB,IAAI8wK,EAAQ/5K,KAAK0/K,GAEjB,GAAK3F,EAAL,CAGA,IAAIjvK,EAAQivK,EAAMjvK,OAASuuK,GACvBG,EAAMO,EAAMP,IAChB,GAAI9oH,GAASzO,GACTo9H,GAAqBv0K,EAAOm3C,EAAYh5C,QAGxC,IAAK,IAAIN,EAAI,EAAGA,EAAIs5C,EAAWthD,SAAUgI,EACrC02K,GAAqBv0K,EAAOm3C,EAAWt5C,GAAIM,GAGnD,GAAI4lD,GAAW2wH,GAAa,CACxB,IAAIG,EAAW3/K,KAAK0/K,GAChBlnK,EAAWmnK,EAAS70K,OAASuuK,GACjCmG,EAAWhnK,EAAUghK,GAAK,EAAOmG,EACpC,CAfA,CAgBJ,EAOD,OANA3hL,OAAOC,eAAewhL,EAAU,UAAW,CACvCrhL,cAAc,EACdqlB,YAAY,EACZvlB,OAAO,EACPC,UAAU,IAEPshL,CACV,CAED,SAASG,GAAYpG,EAAKh7K,EAAWsC,GACjC,IAAI++K,EAAc,IAAMrhL,EACpBshL,EAAetG,EAAIqG,GACvB,GAAIC,EAAc,CACd,GAAIA,EAAa,GAAGC,QAChB,OAEJvG,EAAIh4K,oBAAoBs+K,EAAa,GAAIA,EAAa,IACtDtG,EAAIqG,GAAe,IACtB,CACGhxH,GAAW/tD,KACX04K,EAAIj4K,iBAAiB/C,EAAWsC,GAChC04K,EAAIqG,GAAe,CAACrhL,EAAWsC,GAEtC,CAED,SAASk/K,GAAc36K,GACnB,MAAgB,aAATA,GAAgC,UAATA,CACjC,CACD,IAAI46K,GAAoBV,GAAsB,UAAWW,IACrDC,GAAkBZ,GAAsB,CAAC,UAAW,YAAaW,IAErE,SAASE,GAAar/K,GAClBA,EAAMggE,iBACT,CAWD,SAASm/G,GAAgBG,EAAkB7G,GACvC,IAAIn0K,EAAOg7K,EAAiBh7K,KACxBnH,EAAQmiL,EAAiBniL,MACzBwpC,EAAU24I,EAAiB34I,QAC3B44I,EAAWD,EAAiBC,SAC5BliJ,EAAeiiJ,EAAiBjiJ,aAChCmiJ,GAAYxH,GAAc76K,GAC1BmH,GAAQA,IAASm0K,EAAIn0K,MACrBm0K,EAAIlxK,aAAa,OAAQjD,GAExB0zK,GAAcuH,IAAaA,IAAa9G,EAAI8G,WAC7C9G,EAAI8G,SAAWA,GAEdvH,GAAc36I,IAAkBmiJ,IACjC/G,EAAIp7I,aAAeA,EAAe,IAElC4hJ,GAAc36K,IACVk7K,IACA/G,EAAIt7K,MAAQA,GAEX66K,GAAcrxI,KACf8xI,EAAI9xI,QAAUA,IAId64I,GAAY/G,EAAIt7K,QAAUA,GAC1Bs7K,EAAIp7I,aAAelgC,EACnBs7K,EAAIt7K,MAAQA,GAEN66K,GAAcrxI,KACpB8xI,EAAI9xI,QAAUA,EAGzB,CAED,SAAS84I,GAAmBzG,EAAO77K,GAC/B,GAAmB,WAAf67K,EAAM10K,MAsBd,SAA2B00K,EAAO77K,GAC9B,IAAI4M,EAAQivK,EAAMjvK,OAASuuK,GACvBG,EAAMO,EAAMP,IAEhBA,EAAIt7K,MAAQ4M,EAAM5M,MACd4M,EAAM5M,QAAUA,GAAU4G,GAAQ5G,KAA0C,IAAhCA,EAAMkD,QAAQ0J,EAAM5M,OAChEs7K,EAAIvzJ,UAAW,EAET8yJ,GAAc76K,IAAW66K,GAAcjuK,EAAMmb,YACnDuzJ,EAAIvzJ,SAAWnb,EAAMmb,WAAY,EAExC,CAhCOw6J,CAAkB1G,EAAO77K,OAExB,CACD,IAAI6M,EAAWgvK,EAAMhvK,SACjBkvK,EAAQF,EAAME,MAClB,GAAY,EAARA,EACAuG,GAAmBz1K,EAASmvK,IAAKh8K,QAEhC,GAAY,EAAR+7K,EACLuG,GAAmBz1K,EAAU7M,QAE5B,GAAyB,IAArB67K,EAAMI,WACXqG,GAAmBz1K,EAAU7M,QAE5B,GAAuB,GAAnB67K,EAAMI,WACX,IAAK,IAAIxxK,EAAI,EAAGyI,EAAMrG,EAASpK,OAAQgI,EAAIyI,IAAOzI,EAC9C63K,GAAmBz1K,EAASpC,GAAIzK,EAG3C,CACJ,CAnEDkiL,GAAaL,SAAU,EAgFvB,IAAIW,GAAiBnB,GAAsB,WAAYoB,IAIvD,SAASA,GAAiBN,EAAkB7G,EAAKoH,EAAU7G,GACvD,IAAI8G,EAAwB5hD,QAAQohD,EAAiBC,UAChDvH,GAAcsH,EAAiBC,WAAaO,IAA0BrH,EAAI8G,WAC3E9G,EAAI8G,SAAWO,GAEnB,IAAI1/K,EAAQk/K,EAAiBS,cAK7B,IAJe,IAAX3/K,IACAq4K,EAAIsH,eAAiB,GAGN,IADF/G,EAAMI,WACwB,CAC3C,IAAIj8K,EAAQmiL,EAAiBniL,MAlxBb,kBAmxBHiD,GAAUA,GAAS,GAAKq4K,EAAIp8K,QAAQ+D,KAC7CjD,EAAQs7K,EAAIp8K,QAAQ+D,GAAOjD,OAE3B0iL,GAAY7H,GAAc76K,KAC1BA,EAAQmiL,EAAiBjiJ,cAE7BoiJ,GAAmBzG,EAAO77K,EAC7B,CACJ,CAED,IAukCIsF,GACA3F,GAxkCAkjL,GAAwBxB,GAAsB,UAAWyB,IACzDC,GAAoB1B,GAAsB,YAO9C,SAASyB,GAAmBX,EAAkB7G,EAAKoH,GAC/C,IAAI1iL,EAAQmiL,EAAiBniL,MACzBgjL,EAAW1H,EAAIt7K,MACnB,GAAI66K,GAAc76K,IACd,GAAI0iL,EAAU,CACV,IAAIxiJ,EAAeiiJ,EAAiBjiJ,aAC/B26I,GAAc36I,IAAiBA,IAAiB8iJ,IACjD1H,EAAIp7I,aAAeA,EACnBo7I,EAAIt7K,MAAQkgC,EAEnB,OAEI8iJ,IAAahjL,IAElBs7K,EAAIp7I,aAAelgC,EACnBs7K,EAAIt7K,MAAQA,EAEnB,CAED,SAASijL,GAAelH,EAAOF,EAAOP,EAAK6G,EAAkBO,EAAUn4I,GACvD,GAARwxI,EACAiG,GAAgBG,EAAkB7G,GAErB,IAARS,EACL0G,GAAiBN,EAAkB7G,EAAKoH,EAAU7G,GAErC,IAARE,GACL+G,GAAmBX,EAAkB7G,EAAKoH,GAE1Cn4I,IACA+wI,EAAIkG,GAAK3F,EAEhB,CACD,SAASqH,GAA4BnH,EAAOT,EAAK6G,GACjC,GAARpG,EAnJR,SAAqBT,EAAK6G,GAClBL,GAAcK,EAAiBh7K,OAC/Bu6K,GAAYpG,EAAK,SAAU2G,IAC3BP,GAAYpG,EAAK,QAAS4G,KAG1BR,GAAYpG,EAAK,QAASyG,GAEjC,CA4IOoB,CAAY7H,EAAK6G,GAEJ,IAARpG,EAtEb,SAAsBT,GAClBoG,GAAYpG,EAAK,SAAUkH,GAC9B,CAqEOY,CAAa9H,GAEA,IAARS,GA9Cb,SAAwBT,EAAK6G,GACzBT,GAAYpG,EAAK,QAASuH,IACtBV,EAAiBkB,UACjB3B,GAAYpG,EAAK,SAAUyH,GAElC,CA0COO,CAAehI,EAAK6G,EAE3B,CACD,SAASoB,GAAwBpB,GAC7B,OAAOA,EAAiBh7K,MAAQ26K,GAAcK,EAAiBh7K,OAAS0zK,GAAcsH,EAAiB34I,UAAYqxI,GAAcsH,EAAiBniL,MACrJ,CAaD,SAASwjL,GAAWzwK,GACZA,IACKkqK,GAAUlqK,EAAK,OAASA,EAAIwI,UAC7BxI,EAAIwI,QAAU,KAGzB,CACD,SAASkoK,GAAS1wK,EAAK/S,EAAO0jL,GACtB3wK,IAAQ49C,GAAW59C,SAAwB,IAAhBA,EAAIwI,UAC/BmoK,EAAUxhL,MAAK,WACN+6K,GAAUlqK,EAAK/S,SAA0B,IAAhB+S,EAAIwI,UAC9BxI,EAAIwI,QAAUvb,EAErB,GAER,CAED,SAASR,GAAOq8K,EAAOR,GACnBsI,GAAQ9H,GACRM,GAAeN,EAAOR,EACzB,CACD,SAASsI,GAAQ9H,GACb,IAEI9oK,EAFAgpK,EAAQF,EAAME,MACdlvK,EAAWgvK,EAAMhvK,SAErB,GAAY,IAARkvK,EAA2B,CAC3BhpK,EAAM8oK,EAAM9oK,IACZ,IAAInG,EAAQivK,EAAMjvK,MAClB42K,GAAWzwK,GACX,IAAIkpK,EAAaJ,EAAMI,WACvB,IAAKlB,GAAOnuK,GAER,IADA,IAAI9L,EAAOhB,OAAOgB,KAAK8L,GACdnC,EAAI,EAAGyI,EAAMpS,EAAK2B,OAAQgI,EAAIyI,EAAKzI,IAAK,CAC7C,IAAIrG,EAAMtD,EAAK2J,GACX01K,GAAgB/7K,IAChBy8K,GAAsBz8K,EAAKy3K,EAAMP,IAExC,CAEY,GAAbW,EACA2H,GAAmB/2K,GAEC,IAAfovK,GACL0H,GAAQ92K,EAEf,MACQA,IACO,EAARkvK,GACIprH,GAAW9jD,EAASohC,uBACpBphC,EAASohC,uBAEbu1I,GAAW3H,EAAM9oK,KACjBlG,EAASg3K,KAAM,EACfF,GAAQ92K,EAASmvK,MAEJ,EAARD,IAEAlB,GADL9nK,EAAM8oK,EAAM9oK,MACe49C,GAAW59C,EAAI+wK,yBACtC/wK,EAAI+wK,uBAAuB5H,GAAiBL,GAAO,GAAOA,EAAMjvK,OAASuuK,IAE7EwI,GAAQ92K,IAEK,KAARkvK,EACLv8K,GAAOqN,EAAUgvK,EAAM9oK,KAEV,KAARgpK,GACkB,GAAnBF,EAAMI,YACN2H,GAAmB/2K,GAIlC,CACD,SAAS+2K,GAAmB/2K,GACxB,IAAK,IAAIpC,EAAI,EAAGyI,EAAMrG,EAASpK,OAAQgI,EAAIyI,IAAOzI,EAC9Ck5K,GAAQ92K,EAASpC,GAExB,CACD,SAASs5K,GAASzI,GAEdA,EAAInyH,YAAc,EACrB,CACD,SAAS66H,GAAkB1I,EAAKO,EAAOhvK,GACnC+2K,GAAmB/2K,GACD,KAAdgvK,EAAME,MACNI,GAAeN,EAAOP,GAGtByI,GAASzI,EAEhB,CAqDD,SAAS2I,GAAqBnH,EAAWC,EAAWmH,EAAW5I,GAC3D,IAAI6I,EAAYrH,GAAaA,EAAUsH,QAAW,GAC9CC,EAAYtH,GAAaA,EAAUqH,QAAW,GAC9CD,IAAaE,IACRxJ,GAAcwJ,IA/Y3B,SAAyB/I,EAAKlsG,GAC1B,IAAIk1G,EAAUtgL,SAASmG,cAAc,KAErC,OADAm6K,EAAQl1G,UAAYA,EACbk1G,EAAQl1G,YAAcksG,EAAIlsG,SACpC,CA2YwCm1G,CAAgBjJ,EAAK+I,KAC7CtJ,GAAOmJ,KACmB,GAAvBA,EAAUjI,WACV2H,GAAmBM,EAAUr3K,UAEC,IAAzBq3K,EAAUjI,YACf0H,GAAQO,EAAUr3K,UAEtBq3K,EAAUr3K,SAAW,KACrBq3K,EAAUjI,WAAa,GAE3BX,EAAIlsG,UAAYi1G,GAG3B,CACD,SAASG,GAAU7lL,EAAMm+K,EAAWC,EAAWzB,EAAKmJ,EAAOC,EAAoBR,GAC3E,OAAQvlL,GACJ,IAAK,WACL,IAAK,eACL,IAAK,YACL,IAAK,eACL,IAAK,MACL,IAAK,WACL,IAAK,MACL,IAAK,gBACD,MACJ,IAAK,YACD28K,EAAIqJ,YAAc5H,EAClB,MACJ,IAAK,kBACL,IAAK,WACL,IAAK,UACL,IAAK,UACL,IAAK,WACL,IAAK,UACL,IAAK,WACL,IAAK,SACL,IAAK,gBACL,IAAK,OACL,IAAK,QACL,IAAK,aACL,IAAK,OACL,IAAK,WACL,IAAK,WACL,IAAK,WACL,IAAK,SACL,IAAK,WACL,IAAK,WACDzB,EAAI38K,KAAUo+K,EACd,MACJ,IAAK,iBACL,IAAK,QACL,IAAK,SACD,GAAI2H,GAA+B,UAAT/lL,EACtB,MAEJ,IAAIqB,EAAQ66K,GAAckC,GAAa,GAAKA,EACxCzB,EAAI38K,KAAUqB,IACds7K,EAAI38K,GAAQqB,GAEhB,MACJ,IAAK,SAlGb,SAAoB4kL,EAAeC,EAAevJ,GAC9C,GAAIT,GAAcgK,GACdvJ,EAAItyH,gBAAgB,aADxB,CAIA,IACIpwB,EACA54B,EAFA8kL,EAAWxJ,EAAI1iJ,MAGnB,GAAI45B,GAASqyH,GACTC,EAAS/7H,QAAU87H,OAGvB,GAAKhK,GAAc+J,IAAmBpyH,GAASoyH,GAe3C,IAAKhsJ,KAASisJ,EACV7kL,EAAQ6kL,EAAcjsJ,GACtBksJ,EAAS77H,YAAYrwB,EAAO54B,OAjB2B,CAC3D,IAAK44B,KAASisJ,GAEV7kL,EAAQ6kL,EAAcjsJ,MACRgsJ,EAAchsJ,IACxBksJ,EAAS77H,YAAYrwB,EAAO54B,GAGpC,IAAK44B,KAASgsJ,EACN/J,GAAcgK,EAAcjsJ,KAC5BksJ,EAASj8G,eAAejwC,EAGnC,CArBA,CA4BJ,CAmEWmsJ,CAAWjI,EAAWC,EAAWzB,GACjC,MACJ,IAAK,0BACD2I,GAAqBnH,EAAWC,EAAWmH,EAAW5I,GACtD,MACJ,QACQ6E,GAAgBxhL,GAhjBhC,SAA8BzD,EAAM8pL,EAAWC,EAAW3J,GACtD,GAAI3qH,GAAWs0H,GACX7E,GAA0BllL,EAAMogL,GAAKpgL,GAAQ+pL,OAE5C,GAAI/J,GAAkB+J,GAAY,CACnC,GAAIpI,GAAyBmI,EAAWC,GACpC,OAEJ7E,GAA0BllL,EAAMogL,GAAKpgL,GAAQ+pL,CAChD,MAEGpE,GAAsB3lL,EAAMogL,EAEnC,CAoiBe4J,CAAqBvmL,EAAMm+K,EAAWC,EAAWzB,GAErB,MAAvB38K,EAAKmN,WAAW,IAAqC,MAAvBnN,EAAKmN,WAAW,GAvHnE,SAAoB5Q,EAAM4hL,EAAWC,EAAWzB,GAC5C,GAAIJ,GAAkB6B,GAAY,CAC9B,GAAIF,GAAyBC,EAAWC,GACpC,OAEJA,EAZR,SAAuBA,GAEnB,IAAIoI,EAAKpI,EAAUl6K,MACnB,OAAO,SAAUkI,GACbo6K,EAAGpI,EAAU3gL,KAAM2O,EACtB,CACJ,CAMmBq6K,CAAcrI,EAC7B,CACD2E,GAAYpG,EAAKF,GAAmBlgL,GAAO6hL,EAC9C,CAgHesI,CAAW1mL,EAAMm+K,EAAWC,EAAWzB,GAElCT,GAAckC,GACnBzB,EAAItyH,gBAAgBrqD,GAEf8lL,GAASriH,GAAWzjE,GAGzB28K,EAAIgK,eAAeljH,GAAWzjE,GAAOA,EAAMo+K,GAG3CzB,EAAIlxK,aAAazL,EAAMo+K,GAItC,CACD,SAASwI,GAAW1J,EAAOE,EAAOnvK,EAAO0uK,EAAKmJ,GAC1C,IAAIC,GAAqB,EACrBc,GAAyB,IAARzJ,GAAiC,EAOtD,IAAK,IAAIp9K,KANL6mL,IACAd,EAAqBnB,GAAwB32K,KAEzCs2K,GAA4BnH,EAAOT,EAAK1uK,GAG/BA,EAEb43K,GAAU7lL,EAAM,KAAMiO,EAAMjO,GAAO28K,EAAKmJ,EAAOC,EAAoB,MAEnEc,GACAvC,GAAelH,EAAOF,EAAOP,EAAK1uK,GAAO,EAAM83K,EAEtD,CAED,SAASe,GAAe56I,EAAUj+B,EAAOq7C,GACrC,IAAIy9H,EAAY1G,GAAcn0I,EAASuF,OAAOxjC,EAAOi+B,EAASL,MAAOyd,IACjE09H,EAAe19H,EAKnB,OAJI0I,GAAW9lB,EAAS+6I,mBACpBD,EAAe3K,GAAY/yH,EAASpd,EAAS+6I,oBAEjD/6I,EAASg7I,IAAMF,EACRD,CACV,CACD,SAASI,GAA6BjK,EAAO1nJ,EAAWvnB,EAAOq7C,EAASw8H,EAAOf,GAC3E,IAAI74I,EAAW,IAAI1W,EAAUvnB,EAAOq7C,GAChC89H,EAAcl7I,EAASm7I,GAAKjlD,QAAQ5sG,EAAUooJ,0BAA4B1xI,EAASo7I,yBASvF,GARAp7I,EAASq7I,KAAOzB,EAChB55I,EAASs7I,GAAKzC,EACd7H,EAAMhvK,SAAWg+B,EACjBA,EAASu7I,KAAM,EACfv7I,EAASod,QAAUA,EACfpd,EAASj+B,QAAUuuK,KACnBtwI,EAASj+B,MAAQA,GAEhBm5K,EAqBDl7I,EAASL,MAAQ6xI,GAAmBxxI,EAAUj+B,EAAOi+B,EAASL,YApB9D,GAAImmB,GAAW9lB,EAASw7I,oBAAqB,CACzCx7I,EAASy7I,KAAM,EACfz7I,EAASw7I,qBACT,IAAIE,EAAU17I,EAAS27I,IACvB,IAAKzL,GAAOwL,GAAU,CAClB,IAAI/7I,EAAQK,EAASL,MACrB,GAAIuwI,GAAOvwI,GACPK,EAASL,MAAQ+7I,OAGjB,IAAK,IAAIniL,KAAOmiL,EACZ/7I,EAAMpmC,GAAOmiL,EAAQniL,GAG7BymC,EAAS27I,IAAM,IAClB,CACD37I,EAASy7I,KAAM,CAClB,CAML,OADAz7I,EAASmxI,IAAMyJ,GAAe56I,EAAUj+B,EAAOq7C,GACxCpd,CACV,CACD,SAAS47I,GAA0B5K,EAAO5zH,GACtC,IAAIr7C,EAAQivK,EAAMjvK,OAASuuK,GAC3B,OAAqB,MAAdU,EAAME,MAAiCF,EAAM10K,KAAKipC,OAAOxjC,EAAOivK,EAAM9oK,IAAKk1C,GAAW4zH,EAAM10K,KAAKyF,EAAOq7C,EAClH,CAED,SAASy+H,GAAM7K,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACvD,IAAI3H,EAASF,EAAME,OAAS,MAChB,IAARA,EACA4K,GAAa9K,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAE5C,EAAR3H,EA6Fb,SAA6BF,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACrE,IAAI74I,EAAWi7I,GAA6BjK,EAAOA,EAAM10K,KAAM00K,EAAMjvK,OAASuuK,GAAWlzH,EAASw8H,EAAOf,GACzGgD,GAAM77I,EAASmxI,IAAKX,EAAWxwI,EAASg7I,IAAKpB,EAAOhJ,EAAUiI,GAC9DkD,GAA6B/K,EAAM9oK,IAAK83B,EAAU64I,EACrD,CAhGOmD,CAAoBhL,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAEnD,EAAR3H,IA+Fb,SAAkCF,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAC1EgD,GAAO7K,EAAMhvK,SAAWmyK,GAAcyH,GAA0B5K,EAAO5zH,IAAYozH,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,EAC3H,CAhGOoD,CAAyBjL,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACrEqD,GAAkClL,EAAO6H,IAE5B,IAAR3H,GAAkC,GAARA,EAC/BiL,GAAUnL,EAAOR,EAAWI,GAEf,KAARM,EAcb,SAAuBF,EAAO5zH,EAASozH,EAAWoJ,EAAOhJ,EAAUiI,GAC/D,IAAI72K,EAAWgvK,EAAMhvK,SACjBovK,EAAaJ,EAAMI,WAGN,GAAbA,GAA8D,IAApBpvK,EAASpK,SACnDw5K,EAAaJ,EAAMI,WAAa,EAChCpvK,EAAWgvK,EAAMhvK,SAAWkxK,MAEb,IAAf9B,EACAyK,GAAM75K,EAAUwuK,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAGrDuD,GAAmBp6K,EAAUwuK,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,EAEzE,CA5BOwD,CAAcrL,EAAO5zH,EAASozH,EAAWoJ,EAAOhJ,EAAUiI,GAE7C,KAAR3H,GAKb,SAAqBF,EAAO5zH,EAASozH,EAAWI,EAAUiI,GACtDgD,GAAM7K,EAAMhvK,SAAUgvK,EAAM9oK,IAAKk1C,GAAS,EAAO,KAAMy7H,GACvD,IAAIyD,EAAmBpJ,KACvBiJ,GAAUG,EAAkB9L,EAAWI,GACvCI,EAAMP,IAAM6L,EAAiB7L,GAChC,CATO8L,CAAYvL,EAAO5zH,EAASozH,EAAWI,EAAUiI,EAGxD,CAuBD,SAASsD,GAAUnL,EAAOR,EAAWI,GACjC,IAAIH,EAAOO,EAAMP,IAAMt3K,SAASsG,eAAeuxK,EAAMhvK,UAChDkuK,GAAOM,IACRE,GAAeF,EAAWC,EAAKG,EAEtC,CACD,SAASkL,GAAa9K,EAAOR,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAC9D,IAAI3H,EAAQF,EAAME,MACdnvK,EAAQivK,EAAMjvK,MACdqN,EAAY4hK,EAAM5hK,UAClBgiK,EAAaJ,EAAMI,WACnBX,EAAOO,EAAMP,IA7oCrB,SAA+BvyK,EAAK07K,GAChC,OAAIA,EACOzgL,SAASmkD,gBAAgB,6BAA8Bp/C,GAE3D/E,SAASmG,cAAcpB,EACjC,CAwoC0Bs+K,CAAsBxL,EAAM10K,KAAOs9K,EAAQA,IAAkB,GAAR1I,GAA+B,GACvGlvK,EAAWgvK,EAAMhvK,SASrB,GARKguK,GAAc5gK,IAA4B,KAAdA,IACzBwqK,EACAnJ,EAAIlxK,aAAa,QAAS6P,GAG1BqhK,EAAIrhK,UAAYA,GAGL,KAAfgiK,EACAW,GAAetB,EAAKzuK,QAEnB,GAAmB,IAAfovK,EAA2C,CAChD,IAAIqL,EAAgB7C,GAAwB,kBAAf5I,EAAM10K,KAChB,IAAf80K,GACqB,MAAjBpvK,EAASkvK,QACTF,EAAMhvK,SAAWA,EAAWmxK,GAAYnxK,IAE5C65K,GAAM75K,EAAUyuK,EAAKrzH,EAASq/H,EAAe,KAAM5D,IAE/B,IAAfzH,GAA0D,IAAfA,GAChDgL,GAAmBp6K,EAAUyuK,EAAKrzH,EAASq/H,EAAe,KAAM5D,EAEvE,CACI3I,GAAOM,IACRE,GAAeF,EAAWC,EAAKG,GAE9BV,GAAOnuK,IACR24K,GAAW1J,EAAOE,EAAOnvK,EAAO0uK,EAAKmJ,GAEzChB,GAAS5H,EAAM9oK,IAAKuoK,EAAKoI,EAC5B,CACD,SAASuD,GAAmBp6K,EAAUyuK,EAAKrzH,EAASw8H,EAAOhJ,EAAUiI,GACjE,IAAK,IAAIj5K,EAAI,EAAGA,EAAIoC,EAASpK,SAAUgI,EAAG,CACtC,IAAI0jC,EAAQthC,EAASpC,GACH,MAAd0jC,EAAM4tI,QACNlvK,EAASpC,GAAK0jC,EAAQ6vI,GAAY7vI,IAEtCu4I,GAAMv4I,EAAOmtI,EAAKrzH,EAASw8H,EAAOhJ,EAAUiI,EAC/C,CACJ,CAcD,SAASkD,GAA6B7zK,EAAK83B,EAAU64I,GACjDD,GAAS1wK,EAAK83B,EAAU64I,GACpB/yH,GAAW9lB,EAASyC,oBACpBo2I,EAAUxhL,KARlB,SAAkC2oC,GAC9B,OAAO,WACHA,EAASyC,mBACZ,CACJ,CAIsBi6I,CAAyB18I,GAE/C,CAMD,SAASk8I,GAAkClL,EAAO6H,GAC9C,IAAI3wK,EAAM8oK,EAAM9oK,IACX8nK,GAAc9nK,KACfkqK,GAAUlqK,EAAIy0K,qBAAsB3L,EAAMjvK,OAASuuK,IAC/CxqH,GAAW59C,EAAI00K,sBACf/D,EAAUxhL,KAVtB,SAA+B6Q,EAAK8oK,GAChC,OAAO,WACH9oK,EAAI00K,oBAAoBvL,GAAiBL,GAAO,GAAOA,EAAMjvK,OAASuuK,GACzE,CACJ,CAM0BuM,CAAsB30K,EAAK8oK,IAGrD,CAcD,SAAS8L,GAAMzD,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACtE,IAAImE,EAAaD,EAAU7L,OAAS,MAChCmI,EAAUnI,QAAU8L,GAAa3D,EAAU/8K,OAASygL,EAAUzgL,MAAQ+8K,EAAU9/K,MAAQwjL,EAAUxjL,KAAmB,KAAZyjL,EACnF,MAAlB3D,EAAUnI,MAftB,SAA4BmI,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOf,GACzEC,GAAQO,GACwD,KAA3D0D,EAAU7L,MAAQmI,EAAUnI,MAAQ,OACrC2K,GAAMkB,EAAW,KAAM3/H,EAASw8H,EAAO,KAAMf,GAttCrD,SAAsBrI,EAAWyM,EAAQC,GACrC1M,EAAU2M,aAAaF,EAAQC,EAClC,CAstCOC,CAAa3M,EAAWuM,EAAUtM,IAAK4I,EAAU5I,OAGjDoL,GAAMkB,EAAWvM,EAAWpzH,EAASw8H,EAAOvI,GAAiBgI,GAAW,GAAOR,GAC/EvH,GAAe+H,EAAW7I,GAEjC,CAKW4M,CAAmB/D,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOf,GAIpEgD,GAAMkB,EAAWvM,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAGzC,IAAZmE,EA8Eb,SAAsB3D,EAAW0D,EAAW3/H,EAASw8H,EAAOoD,EAAWnE,GACnE,IAKIvB,EALA7G,EAAOsM,EAAUtM,IAAM4I,EAAU5I,IACjC4M,EAAYhE,EAAUt3K,MACtB0vK,EAAYsL,EAAUh7K,MACtB44K,GAAgB,EAChBd,GAAqB,EAIzB,GAFAD,EAAQA,IAAsB,GAAZoD,GAAmC,EAEjDK,IAAc5L,EAAW,CACzB,IAAI6L,EAAmBD,GAAa/M,GAEpC,IADAgH,EAAmB7F,GAAanB,MACPA,GAKrB,IAAK,IAAIx8K,KAJT6mL,GAA6B,IAAZqC,GAAqC,KAElDnD,EAAqBnB,GAAwBpB,IAEhCA,EAAkB,CAC/B,IAAIrF,EAAYqL,EAAiBxpL,GAC7Bo+K,EAAYoF,EAAiBxjL,GAC7Bm+K,IAAcC,GACdyH,GAAU7lL,EAAMm+K,EAAWC,EAAWzB,EAAKmJ,EAAOC,EAAoBR,EAE7E,CAEL,GAAIiE,IAAqBhN,GACrB,IAAK,IAAIiN,KAAUD,EACXtN,GAAcsH,EAAiBiG,MAAavN,GAAcsN,EAAiBC,KAC3E5D,GAAU4D,EAAQD,EAAiBC,GAAS,KAAM9M,EAAKmJ,EAAOC,EAAoBR,EAIjG,CACD,IAAImE,EAAeT,EAAU/6K,SACzBy7K,EAAgBV,EAAU3tK,UAE1BiqK,EAAUjqK,YAAcquK,IACpBzN,GAAcyN,GACdhN,EAAItyH,gBAAgB,SAEfy7H,EACLnJ,EAAIlxK,aAAa,QAASk+K,GAG1BhN,EAAIrhK,UAAYquK,GAGR,KAAZT,EA7FR,SAAsCvM,EAAK+M,GACnC/M,EAAInyH,cAAgBk/H,IACpB/M,EAAInyH,YAAck/H,EAEzB,CA0FOE,CAA6BjN,EAAK+M,GAGlCG,GAActE,EAAUjI,WAAY2L,EAAU3L,WAAYiI,EAAUr3K,SAAUw7K,EAAc/M,EAAKrzH,EAASw8H,GAA4B,kBAAnBmD,EAAUzgL,KAA0B,KAAM+8K,EAAWR,GAExK8B,GACAvC,GAAe4E,EAAWD,EAAWtM,EAAK6G,GAAkB,EAAOuC,GAEvE,IAAI+D,EAAUb,EAAU70K,IACpB21K,EAAUxE,EAAUnxK,IACpB21K,IAAYD,IACZjF,GAAWkF,GACXjF,GAASgF,EAASnN,EAAKoI,GAE9B,CA3IOiF,CAAazE,EAAW0D,EAAW3/H,EAASw8H,EAAOoD,EAAWnE,GAE7C,EAAZmE,EA6Qb,SAA6B3D,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACpF,IAAI74I,EAAY+8I,EAAU/6K,SAAWq3K,EAAUr3K,SAE/C,GAAIkuK,GAAOlwI,GACP,OAEJA,EAASs7I,GAAKzC,EACd,IAAIpH,EAAYsL,EAAUh7K,OAASuuK,GAC/BsN,EAAUb,EAAU70K,IACpB21K,EAAUxE,EAAUnxK,IACpB61K,EAAY/9I,EAASL,MACzB,IAAKK,EAASm7I,GAAI,CACd,GAAIr1H,GAAW9lB,EAASg+I,2BAA4B,CAIhD,GAHAh+I,EAASy7I,KAAM,EACfz7I,EAASg+I,0BAA0BvM,EAAWr0H,GAE1Cpd,EAASg5I,IACT,OAEJh5I,EAASy7I,KAAM,CAClB,CACIvL,GAAOlwI,EAAS27I,OACjBoC,EAAY5N,GAAY4N,EAAW/9I,EAAS27I,KAC5C37I,EAAS27I,IAAM,KAEtB,CACDsC,GAAqBj+I,EAAU+9I,EAAWtM,EAAWjB,EAAWpzH,EAASw8H,GAAO,EAAOhJ,EAAUiI,GAC7FgF,IAAYD,IACZjF,GAAWkF,GACXjF,GAASgF,EAAS59I,EAAU64I,GAEnC,CA3SOqF,CAAoB7E,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAE9D,EAAZmE,EA0Sb,SAAkC3D,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACzF,IAAIsF,GAAe,EACf1M,EAAYsL,EAAUh7K,OAASuuK,GAC/BsN,EAAUb,EAAU70K,IACpBm1K,EAAYhE,EAAUt3K,MACtBq8K,GAAoBpO,GAAc4N,GAClCS,EAAYhF,EAAUr3K,SACtBo8K,GAAoBt4H,GAAW83H,EAAQU,2BACvCH,EAAeP,EAAQU,wBAAwBjB,EAAW5L,IAE9D,IAAqB,IAAjB0M,EAAwB,CACpBC,GAAoBt4H,GAAW83H,EAAQW,wBACvCX,EAAQW,sBAAsBlB,EAAW5L,GAE7C,IAAIoJ,EAAY1G,GAAcyH,GAA0BmB,EAAW3/H,IACnE0/H,GAAMuB,EAAWxD,EAAWrK,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACjEkE,EAAU/6K,SAAW64K,EACjBuD,GAAoBt4H,GAAW83H,EAAQY,uBACvCZ,EAAQY,qBAAqBnB,EAAW5L,EAE/C,MAEGsL,EAAU/6K,SAAWq8K,CAE5B,CAjUOI,CAAyBpF,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAEnE,GAAZmE,EAgUb,SAAmB3D,EAAW0D,GAC1B,IAAI36E,EAAW26E,EAAU/6K,SACrByuK,EAAOsM,EAAUtM,IAAM4I,EAAU5I,IACjCruE,IAAai3E,EAAUr3K,WACvByuK,EAAIiO,UAAYt8E,EAEvB,CArUOu8E,CAAUtF,EAAW0D,GAEJ,IAAZC,EACLD,EAAUtM,IAAM4I,EAAU5I,IAET,KAAZuM,EAsBb,SAAuB3D,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOf,GACpE,IAAI+F,EAAevF,EAAUr3K,SACzBw7K,EAAeT,EAAU/6K,SACzB68K,EAAiBxF,EAAUjI,WAC3B0N,EAAiB/B,EAAU3L,WAC3BR,EAAW,KAGM,GAAjBkO,GAAsE,IAAxBtB,EAAa5lL,SAC3DknL,EAAiB/B,EAAU3L,WAAa,EACxCoM,EAAeT,EAAU/6K,SAAWkxK,MAExC,IAAI6L,EAA+D,KAA9B,EAAjBD,GACpB,GAAqB,GAAjBD,EAA4C,CAC5C,IAAIG,EAAUJ,EAAahnL,QAIT,EAAjBinL,GAA8D,EAAjBC,GAE1CC,IAEEA,GAAgBvB,EAAa5lL,OAASonL,KAExCpO,EAAWS,GAAiBuN,EAAaI,EAAU,IAAI,GAAO1gL,YAErE,CACDq/K,GAAckB,EAAgBC,EAAgBF,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUyI,EAAWR,EAC7H,CAjDOoG,CAAc5F,EAAW0D,EAAWvM,EAAWpzH,EAASw8H,EAAOf,GAkDvE,SAAqBQ,EAAW0D,EAAW3/H,EAASy7H,GAChD,IAAIqG,EAAgB7F,EAAUnxK,IAC1Bi3K,EAAgBpC,EAAU70K,IAC1Bs1K,EAAeT,EAAU/6K,SAG7B,GAFA27K,GAActE,EAAUjI,WAAY2L,EAAU3L,WAAYiI,EAAUr3K,SAAUw7K,EAAc0B,EAAe9hI,GAAS,EAAO,KAAMi8H,EAAWR,GAC5IkE,EAAUtM,IAAM4I,EAAU5I,IACtByO,IAAkBC,IAAkBlP,GAAUuN,GAAe,CAC7D,IAAI57K,EAAO47K,EAAa/M,IACxBnwK,GAAY4+K,EAAet9K,GAC3BpC,GAAY2/K,EAAev9K,EAC9B,CACJ,CA1DOw9K,CAAY/F,EAAW0D,EAAW3/H,EAASy7H,EAElD,CA6HD,SAAS8E,GAAckB,EAAgBC,EAAgBF,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUyO,EAAaxG,GACjI,OAAQgG,GACJ,KAAK,EACD,OAAQC,GACJ,KAAK,EACDhC,GAAM8B,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACvE,MACJ,KAAK,EACDlkL,GAAOiqL,EAAcpO,GACrB,MACJ,KAAK,GACDsI,GAAQ8F,GACR7M,GAAevB,EAAWgN,GAC1B,MACJ,SAnBhB,SAA2CoB,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAOf,GAC9FC,GAAQ8F,GACRxC,GAAmBoB,EAAchN,EAAWpzH,EAASw8H,EAAOvI,GAAiBuN,GAAc,GAAO/F,GAClGvH,GAAesN,EAAcpO,EAChC,CAgBmB8O,CAAkCV,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAOf,GAGjG,MACJ,KAAK,EACD,OAAQiG,GACJ,KAAK,EACDjD,GAAM2B,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACzD,MACJ,KAAK,EACD,MACJ,KAAK,GACD9G,GAAevB,EAAWgN,GAC1B,MACJ,QACIpB,GAAmBoB,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAG9E,MACJ,KAAK,GACD,OAAQiG,GACJ,KAAK,IAhKrB,SAA8BF,EAAcpB,EAAchN,GAClDoO,IAAiBpB,IACI,KAAjBoB,EACApO,EAAU/xK,WAAWigL,UAAYlB,EAGjCzL,GAAevB,EAAWgN,GAGrC,CAwJmB+B,CAAqBX,EAAcpB,EAAchN,GACjD,MACJ,KAAK,EACD0I,GAAS1I,GACTqL,GAAM2B,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACzD,MACJ,KAAK,EACDK,GAAS1I,GACT,MACJ,QACI0I,GAAS1I,GACT4L,GAAmBoB,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAG9E,MACJ,QACI,OAAQiG,GACJ,KAAK,GACD/F,GAAmB6F,GACnB7M,GAAevB,EAAWgN,GAC1B,MACJ,KAAK,EACDrE,GAAkB3I,EAAW6O,EAAaT,GAC1C/C,GAAM2B,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GACzD,MACJ,KAAK,EACDM,GAAkB3I,EAAW6O,EAAaT,GAC1C,MACJ,QACI,IAAIY,EAAmC,EAAtBZ,EAAahnL,OAC1B6nL,EAAmC,EAAtBjC,EAAa5lL,OAEX,IAAf4nL,EACIC,EAAa,GACbrD,GAAmBoB,EAAchN,EAAWpzH,EAASw8H,EAAOhJ,EAAUiI,GAGtD,IAAf4G,EACLtG,GAAkB3I,EAAW6O,EAAaT,GAElB,IAAnBE,GAAkE,IAAnBD,EA8I5E,SAA4B7nK,EAAGC,EAAGw5J,EAAKrzH,EAASw8H,EAAO8F,EAASC,EAASC,EAAWP,EAAaxG,GAC7F,IAKIgH,EACAjP,EANAkP,EAAOJ,EAAU,EACjBK,EAAOJ,EAAU,EACjB56K,EAAI,EACJi7K,EAAQhpK,EAAEjS,GACVk7K,EAAQhpK,EAAElS,GAKdm7K,EAAO,CAEH,KAAOF,EAAMzmL,MAAQ0mL,EAAM1mL,KAAK,CAO5B,GANkB,MAAd0mL,EAAM/O,QACNj6J,EAAElS,GAAKk7K,EAAQ9M,GAAY8M,IAE/BnD,GAAMkD,EAAOC,EAAOxP,EAAKrzH,EAASw8H,EAAOgG,EAAW/G,GACpD7hK,EAAEjS,GAAKk7K,IACLl7K,EACM+6K,GAAQ/6K,EAAIg7K,EAChB,MAAMG,EAEVF,EAAQhpK,EAAEjS,GACVk7K,EAAQhpK,EAAElS,EACb,CAID,IAHAi7K,EAAQhpK,EAAE8oK,GACVG,EAAQhpK,EAAE8oK,GAEHC,EAAMzmL,MAAQ0mL,EAAM1mL,KAAK,CAQ5B,GAPkB,MAAd0mL,EAAM/O,QACNj6J,EAAE8oK,GAAQE,EAAQ9M,GAAY8M,IAElCnD,GAAMkD,EAAOC,EAAOxP,EAAKrzH,EAASw8H,EAAOgG,EAAW/G,GACpD7hK,EAAE8oK,GAAQG,EAEVF,IACIh7K,IAFJ+6K,GAEgB/6K,EAAIg7K,EAChB,MAAMG,EAEVF,EAAQhpK,EAAE8oK,GACVG,EAAQhpK,EAAE8oK,EACb,CACJ,CACD,GAAIh7K,EAAI+6K,GACJ,GAAI/6K,GAAKg7K,EAGL,IADAnP,GADAiP,EAAUE,EAAO,GACIJ,EAAUtO,GAAiBp6J,EAAE4oK,IAAU,GAAQD,EAC7D76K,GAAKg7K,GAEU,OADlBE,EAAQhpK,EAAElS,IACAmsK,QACNj6J,EAAElS,GAAKk7K,EAAQ9M,GAAY8M,MAE7Bl7K,EACF82K,GAAMoE,EAAOxP,EAAKrzH,EAASw8H,EAAOhJ,EAAUiI,QAInD,GAAI9zK,EAAIg7K,EACT,KAAOh7K,GAAK+6K,GACRnrL,GAAOqiB,EAAEjS,KAAM0rK,QAO3B,SAAmCz5J,EAAGC,EAAGmmC,EAASsiI,EAASC,EAASG,EAAMC,EAAMh7K,EAAG0rK,EAAKmJ,EAAOgG,EAAWP,EAAaxG,GACnH,IAAImH,EACAC,EACAJ,EACAjgL,EAAI,EACJugL,EAASp7K,EACTq7K,EAASr7K,EACTs7K,EAAQP,EAAO/6K,EAAI,EACnBu7K,EAAQP,EAAOh7K,EAAI,EACnBw7K,EAAU,IAAIC,WAAWF,EAAQ,GAEjCG,EAAwBJ,IAAUX,EAClCgB,GAAQ,EACRhuK,EAAM,EACNiuK,EAAU,EAEd,GAAIhB,EAAU,IAAMU,EAAQC,GAAS,GACjC,IAAK1gL,EAAIugL,EAAQvgL,GAAKkgL,IAAQlgL,EAE1B,GADAogL,EAAQhpK,EAAEpX,GACN+gL,EAAUL,EAAO,CACjB,IAAKv7K,EAAIq7K,EAAQr7K,GAAKg7K,EAAMh7K,IAExB,GADAk7K,EAAQhpK,EAAElS,GACNi7K,EAAMzmL,MAAQ0mL,EAAM1mL,IAAK,CAEzB,GADAgnL,EAAQx7K,EAAIq7K,GAAUxgL,EAAI,EACtB6gL,EAEA,IADAA,GAAwB,EACjBN,EAASvgL,GACZjL,GAAOqiB,EAAEmpK,KAAW1P,GAGxB/9J,EAAM3N,EACN27K,GAAQ,EAGRhuK,EAAM3N,EAEQ,MAAdk7K,EAAM/O,QACNj6J,EAAElS,GAAKk7K,EAAQ9M,GAAY8M,IAE/BnD,GAAMkD,EAAOC,EAAOxP,EAAKrzH,EAASw8H,EAAOgG,EAAW/G,KAClD8H,EACF,KACH,EAEAF,GAAyB17K,EAAIg7K,GAC9BprL,GAAOqrL,EAAOvP,EAErB,MACSgQ,GACN9rL,GAAOqrL,EAAOvP,OAIrB,CACD,IAAI78I,EAAW,CAAC,EAEhB,IAAKh0B,EAAIwgL,EAAQxgL,GAAKmgL,IAAQngL,EAC1Bg0B,EAAS3c,EAAErX,GAAGrG,KAAOqG,EAGzB,IAAKA,EAAIugL,EAAQvgL,GAAKkgL,IAAQlgL,EAE1B,GADAogL,EAAQhpK,EAAEpX,GACN+gL,EAAUL,EAEV,QAAU,KADVv7K,EAAI6uB,EAASosJ,EAAMzmL,MACD,CACd,GAAIknL,EAEA,IADAA,GAAwB,EACjB7gL,EAAIugL,GACPxrL,GAAOqiB,EAAEmpK,KAAW1P,GAG5B8P,EAAQx7K,EAAIq7K,GAAUxgL,EAAI,EACtB8S,EAAM3N,EACN27K,GAAQ,EAGRhuK,EAAM3N,EAGQ,OADlBk7K,EAAQhpK,EAAElS,IACAmsK,QACNj6J,EAAElS,GAAKk7K,EAAQ9M,GAAY8M,IAE/BnD,GAAMkD,EAAOC,EAAOxP,EAAKrzH,EAASw8H,EAAOgG,EAAW/G,KAClD8H,CACL,MACSF,GACN9rL,GAAOqrL,EAAOvP,QAGZgQ,GACN9rL,GAAOqrL,EAAOvP,EAGzB,CAED,GAAIgQ,EACAtH,GAAkB1I,EAAK4O,EAAaroK,GACpColK,GAAmBnlK,EAAGw5J,EAAKrzH,EAASw8H,EAAOgG,EAAW/G,QAErD,GAAI6H,EAAO,CACZ,IAAIE,EA2CZ,SAAuBh5H,GACnB,IAAIi5H,EAAO,EACPjhL,EAAI,EACJmF,EAAI,EACJ9J,EAAI,EACJ4X,EAAI,EACJwI,EAAI,EACJxK,EAAI,EACJxI,EAAMu/C,EAAIhwD,OACVyQ,EAAMy4K,KACNA,GAASz4K,EACT5N,GAAS,IAAI+lL,WAAWn4K,GACxBvT,GAAI,IAAI0rL,WAAWn4K,IAEvB,KAAOzI,EAAIyI,IAAOzI,EAEd,GAAa,KADbihL,EAAOj5H,EAAIhoD,IACK,CAEZ,GAAIgoD,EADJ7iD,EAAItK,GAAOQ,IACE4lL,EAAM,CACf/rL,GAAE8K,GAAKmF,EACPtK,KAASQ,GAAK2E,EACd,QACH,CAGD,IAFAiT,EAAI,EACJwI,EAAIpgB,EACG4X,EAAIwI,GAEHusC,EAAIntD,GADRoW,EAAKgC,EAAIwI,GAAM,IACMwlK,EACjBhuK,EAAIhC,EAAI,EAGRwK,EAAIxK,EAGRgwK,EAAOj5H,EAAIntD,GAAOoY,MACdA,EAAI,IACJ/d,GAAE8K,GAAKnF,GAAOoY,EAAI,IAEtBpY,GAAOoY,GAAKjT,EAEnB,CAELiT,EAAI5X,EAAI,EACR,IAAI2lL,EAAM,IAAIJ,WAAW3tK,GACzBwI,EAAI5gB,GAAOoY,EAAI,GACf,KAAOA,KAAM,GACT+tK,EAAI/tK,GAAKwI,EACTA,EAAIvmB,GAAEumB,GACN5gB,GAAOoY,GAAK,EAEhB,OAAO+tK,CACV,CA9FiBG,CAAcR,GAExB,IADAx7K,EAAI67K,EAAIhpL,OAAS,EACZgI,EAAI0gL,EAAQ,EAAG1gL,GAAK,EAAGA,IACL,IAAf2gL,EAAQ3gL,IAGU,OADlBqgL,EAAQhpK,EADRvE,EAAM9S,EAAIwgL,IAEAlP,QACNj6J,EAAEvE,GAAOutK,EAAQ9M,GAAY8M,IAGjCpE,GAAMoE,EAAOxP,EAAKrzH,EAASw8H,GAD3BiG,EAAUntK,EAAM,GAC4BitK,EAAUtO,GAAiBp6J,EAAE4oK,IAAU,GAAQD,EAAW/G,IAEjG9zK,EAAI,GAAKnF,IAAMghL,EAAI77K,GAIxBwsK,GAFA0O,EAAQhpK,EADRvE,EAAM9S,EAAIwgL,GAGU3P,GADpBoP,EAAUntK,EAAM,GACmBitK,EAAUtO,GAAiBp6J,EAAE4oK,IAAU,GAAQD,GAGlF76K,GAGX,MACI,GAAI47K,IAAYL,EAGjB,IAAK1gL,EAAI0gL,EAAQ,EAAG1gL,GAAK,EAAGA,IACL,IAAf2gL,EAAQ3gL,KAGU,OADlBqgL,EAAQhpK,EADRvE,EAAM9S,EAAIwgL,IAEAlP,QACNj6J,EAAEvE,GAAOutK,EAAQ9M,GAAY8M,IAGjCpE,GAAMoE,EAAOxP,EAAKrzH,EAASw8H,GAD3BiG,EAAUntK,EAAM,GAC4BitK,EAAUtO,GAAiBp6J,EAAE4oK,IAAU,GAAQD,EAAW/G,GAIrH,CA7IOmI,CAA0BhqK,EAAGC,EAAGmmC,EAASsiI,EAASC,EAASG,EAAMC,EAAMh7K,EAAG0rK,EAAKmJ,EAAOgG,EAAWP,EAAaxG,EAErH,CA9MuBoI,CAAmBrC,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAO4F,EAAYC,EAAY7O,EAAUyO,EAAaxG,GAgHjJ,SAA+B+F,EAAcpB,EAAc/M,EAAKrzH,EAASw8H,EAAOsH,EAAoBC,EAAoBvQ,EAAUiI,GAK9H,IAJA,IAEIuI,EACA58G,EAHA68G,EAAeH,EAAqBC,EAAqBA,EAAqBD,EAC9EthL,EAAI,EAGDA,EAAIyhL,IAAgBzhL,EACvBwhL,EAAY5D,EAAa59K,GACzB4kE,EAAYo6G,EAAah/K,GACH,MAAlBwhL,EAAUlQ,QACVkQ,EAAY5D,EAAa59K,GAAKuzK,GAAYiO,IAE9CtE,GAAMt4G,EAAW48G,EAAW3Q,EAAKrzH,EAASw8H,EAAOhJ,EAAUiI,GAC3D+F,EAAah/K,GAAKwhL,EAEtB,GAAIF,EAAqBC,EACrB,IAAKvhL,EAAIyhL,EAAczhL,EAAIuhL,IAAsBvhL,EAEvB,OADtBwhL,EAAY5D,EAAa59K,IACXsxK,QACVkQ,EAAY5D,EAAa59K,GAAKuzK,GAAYiO,IAE9CvF,GAAMuF,EAAW3Q,EAAKrzH,EAASw8H,EAAOhJ,EAAUiI,QAGnD,GAAIqI,EAAqBC,EAC1B,IAAKvhL,EAAIyhL,EAAczhL,EAAIshL,IAAsBthL,EAC7CjL,GAAOiqL,EAAah/K,GAAI6wK,EAGnC,CAzIuB6Q,CAAsB1C,EAAcpB,EAAchN,EAAWpzH,EAASw8H,EAAO4F,EAAYC,EAAY7O,EAAUiI,IAMtI,CAMD,SAASoF,GAAqBj+I,EAAU+9I,EAAWtM,EAAWjB,EAAWpzH,EAASw8H,EAAO2H,EAAO3Q,EAAUiI,GACtG,IAAI2I,EAAYxhJ,EAASL,MACrB09I,EAAYr9I,EAASj+B,MACrBm5K,EAAahlD,QAAQl2F,EAASm7I,IAC9BsG,EAAS37H,GAAW9lB,EAAS0hJ,uBAIjC,GAHIxG,IACA6C,EAAYvM,GAAmBxxI,EAAUyxI,EAAWsM,IAAcyD,EAAYrR,GAAYqR,EAAWzD,GAAaA,IAElHwD,IAAUE,GAAWA,GAAUzhJ,EAAS0hJ,sBAAsBjQ,EAAWsM,EAAW3gI,GAAW,EAC1F89H,GAAcp1H,GAAW9lB,EAAS2hJ,sBACnC3hJ,EAAS2hJ,oBAAoBlQ,EAAWsM,EAAW3gI,GAEvDpd,EAASj+B,MAAQ0vK,EACjBzxI,EAASL,MAAQo+I,EACjB/9I,EAASod,QAAUA,EACnB,IAAIwkI,EAAW,KACX/G,EAAYD,GAAe56I,EAAUyxI,EAAWr0H,GAChD89H,GAAcp1H,GAAW9lB,EAASo7I,2BAClCwG,EAAW5hJ,EAASo7I,wBAAwBiC,EAAWmE,IAE3D1E,GAAM98I,EAASmxI,IAAK0J,EAAWrK,EAAWxwI,EAASg7I,IAAKpB,EAAOhJ,EAAUiI,GAEzE74I,EAASmxI,IAAM0J,EACX/0H,GAAW9lB,EAAS8C,qBA5BhC,SAAyB9C,EAAUq9I,EAAWmE,EAAWI,EAAU/I,GAC/DA,EAAUxhL,MAAK,WACX2oC,EAAS8C,mBAAmBu6I,EAAWmE,EAAWI,EACrD,GACJ,CAyBWC,CAAgB7hJ,EAAUq9I,EAAWmE,EAAWI,EAAU/I,EAEjE,MAEG74I,EAASj+B,MAAQ0vK,EACjBzxI,EAASL,MAAQo+I,EACjB/9I,EAASod,QAAUA,CAE1B,CA6SD,IAAI0jI,GAAS,EAsGb,SAASv7I,GAAO9zB,EAAO++J,EAAWh8K,EAAU4oD,QACtB,IAAb5oD,IAAsBA,EAAW,WACrB,IAAZ4oD,IAAqBA,EAAUkzH,IAtCxC,SAAkB7+J,EAAO++J,EAAWh8K,EAAU4oD,GAC1C,IAAIy7H,EAAY,GACZiJ,EAAYtR,EAAUmG,GAC1BhF,GAAYt2J,GAAI,EACZ20J,GAAc8R,GACT9R,GAAcv+J,KACG,MAAdA,EAAMy/J,QACNz/J,EAAQ0hK,GAAY1hK,IAExBoqK,GAAMpqK,EAAO++J,EAAWpzH,GAAS,EAAO,KAAMy7H,GAC9CrI,EAAUmG,GAAKllK,EACfqwK,EAAYrwK,GAIZu+J,GAAcv+J,IACd9c,GAAOmtL,EAAWtR,GAClBA,EAAUmG,GAAK,OAGG,MAAdllK,EAAMy/J,QACNz/J,EAAQ0hK,GAAY1hK,IAExBqrK,GAAMgF,EAAWrwK,EAAO++J,EAAWpzH,GAAS,EAAO,KAAMy7H,GACzDiJ,EAAYtR,EAAUmG,GAAKllK,GAGnCo/J,GAAQgI,GACRlH,GAAYt2J,GAAI,EACZyqC,GAAWtxD,IACXA,IAEAsxD,GAAWzxD,GAAQy9K,iBACnBz9K,GAAQy9K,eAAegQ,EAAWtR,EAEzC,CAKGuR,CAAStwK,EAAO++J,EAAWh8K,EAAU4oD,EACxC,CApD8C,qBAAbjkD,UAM1BjI,OAAO+7C,OACPA,KAAKhuC,UAAUw2K,IAAM,KACrBxoI,KAAKhuC,UAAU03K,GAAK,MAsD5B,IAAIqL,GAAQ,GACRC,GAA8B,qBAAZrsL,QAChBA,QAAQC,UAAUd,KAAKhB,KAAK6B,QAAQC,WACpC,SAAUmhB,GACR9lB,OAAOs7B,WAAWxV,EAAG,EACxB,EACDkrK,IAAmB,EACvB,SAASC,GAAkB95J,EAAW+5J,EAAU5tL,EAAU+sL,GACtD,IAAI7F,EAAUrzJ,EAAUszJ,IAIxB,GAHI71H,GAAWs8H,KACXA,EAAWA,EAAS1G,EAAUvL,GAAY9nJ,EAAUsX,MAAO+7I,GAAWrzJ,EAAUsX,MAAOtX,EAAUtmB,MAAOsmB,EAAU+0B,UAElH4yH,GAAc0L,GACdrzJ,EAAUszJ,IAAMyG,OAGhB,IAAK,IAAIC,KAAYD,EACjB1G,EAAQ2G,GAAYD,EAASC,GAGrC,GAAKh6J,EAAUozJ,IA4BN31H,GAAWtxD,IAChB6zB,EAAUizJ,GAAGjkL,KAAK7C,EAAST,KAAKs0B,QA7BhB,CAChB,IAAKspJ,GAAYt2J,GACQ,IAAjB2mK,GAAMpqL,OAKN,OAJA0qL,GAAWj6J,EAAWk5J,QAClBz7H,GAAWtxD,IACXA,EAASkB,KAAK2yB,IAe1B,IAVkC,IAA9B25J,GAAM3pL,QAAQgwB,IACd25J,GAAM3qL,KAAKgxB,GAEXk5J,IACAl5J,EAAUk6J,IAAK,GAEdL,KACDA,IAAmB,EACnBD,GAASO,KAET18H,GAAWtxD,GAAW,CACtB,IAAIiuL,EAAKp6J,EAAUq6J,IACdD,IACDA,EAAKp6J,EAAUq6J,IAAM,IAEzBD,EAAGprL,KAAK7C,EACX,CACJ,CAIJ,CACD,SAASmuL,GAAsBt6J,GAE3B,IADA,IAAI48B,EAAQ58B,EAAUq6J,IACb9iL,EAAI,EAAGA,EAAIqlD,EAAMrtD,SAAUgI,EAChCqlD,EAAMrlD,GAAGlK,KAAK2yB,GAElBA,EAAUq6J,IAAM,IACnB,CACD,SAASF,KACL,IAAIn6J,EAEJ,IADA65J,IAAmB,EACX75J,EAAY25J,GAAM7yJ,SACtB,IAAK9G,EAAU2wJ,IAAK,CAChB,IAAIuI,EAAQl5J,EAAUk6J,GACtBl6J,EAAUk6J,IAAK,EACfD,GAAWj6J,EAAWk5J,GAClBl5J,EAAUq6J,KACVC,GAAsBt6J,EAE7B,CAER,CACD,SAASi6J,GAAWj6J,EAAWk5J,GAC3B,GAAIA,IAAUl5J,EAAUozJ,IAAK,CACzB,IAAImH,EAAev6J,EAAUszJ,IAC7BtzJ,EAAUszJ,IAAM,KAChB,IAAI9C,EAAY,GAChBlH,GAAYt2J,GAAI,EAChB4iK,GAAqB51J,EAAW8nJ,GAAY9nJ,EAAUsX,MAAOijJ,GAAev6J,EAAUtmB,MAAOsvK,GAAiBhpJ,EAAU8oJ,KAAK,GAAM9wK,WAAYgoB,EAAU+0B,QAAS/0B,EAAUgzJ,KAAMkG,EAAO,KAAM1I,GAC/LhI,GAAQgI,GACRlH,GAAYt2J,GAAI,CACnB,MAEGgN,EAAUsX,MAAQtX,EAAUszJ,IAC5BtzJ,EAAUszJ,IAAM,IAEvB,CACD,IAAIryJ,GAAY,SAAmBvnB,EAAOq7C,GAEtCnmD,KAAK0oC,MAAQ,KAEb1oC,KAAKwkL,KAAM,EACXxkL,KAAKskL,KAAM,EACXtkL,KAAK0kL,IAAM,KACX1kL,KAAKk6K,IAAM,KACXl6K,KAAK+hL,KAAM,EACX/hL,KAAK+jL,IAAM,KACX/jL,KAAKyrL,IAAM,KACXzrL,KAAKkkL,IAAK,EACVlkL,KAAKqkL,GAAK,KACVrkL,KAAKokL,MAAO,EACZpkL,KAAKsrL,IAAK,EACVtrL,KAAK8K,MAAQA,GAASuuK,GACtBr5K,KAAKmmD,QAAUA,GAAWkzH,EAC7B,EACDhnJ,GAAUrqB,UAAUmmC,YAAc,SAAsB5wC,GAChDyC,KAAK+hL,KAITmJ,GAAkBlrL,KAAM,CAAC,EAAGzC,GAAU,EACzC,EACD80B,GAAUrqB,UAAU0xC,SAAW,SAAmByxI,EAAU5tL,GACpDyC,KAAK+hL,KAGJ/hL,KAAKskL,KACN4G,GAAkBlrL,KAAMmrL,EAAU5tL,GAAU,EAEnD,EACD80B,GAAUrqB,UAAUsmC,OAAS,SAAiBs9I,EAAYC,EAAYC,GAClE,OAAO,IACV,ECxmEM,IAAMC,GAAoB,CAC7BjgG,UAAW,EACXkgG,KAF6B,WAGzBhsL,KAAK8rF,WACR,EACDn/B,UAAW,GACXs/H,YAN6B,WAQzB,GADAjsL,KAAK8rF,YACD9rF,KAAK8rF,UAAY,EACjB,MAAM,IAAIvxF,MAAM,0BAEpB,GAAuB,IAAnByF,KAAK8rF,UAAiB,CACtB,IAAMogG,EAAUlsL,KAAK2sD,UACrB3sD,KAAK2sD,UAAY,GACjBu/H,EAAQxrL,SAAQ,SAACnD,GAAD,OAAcA,GAAd,GACnB,CACJ,GCdC4uL,GAAkB,SAACC,EAAaC,GAElC,KADuBD,aAAuBpuL,QAAUquL,aAAwBruL,QAE5E,OAAOouL,IAAgBC,EAE3B,IAAMC,EAAkBtuL,OAAOgB,KAAKotL,GAC9BG,EAAmBvuL,OAAOgB,KAAKqtL,GACrC,OAAIC,EAAgB3rL,SAAW4rL,EAAiB5rL,SAGpB2rL,EAAgBn6H,MAAK,SAAC7vD,GAAD,OAAS8pL,EAAY9pL,KAAS+pL,EAAa/pL,EAA3C,GAEpD,EACYkqL,GAAb,0CACI,aAAc,6BACV,eAAS10K,YACJ20K,gBAAkB,EAAKtmI,QAFlB,CAGb,CAJL,wDAKI,SAA0BrnD,EAAGqnD,GACzBnmD,KAAKysL,gBAA8B,OAAZtmI,QAAgC,IAAZA,EAAqBA,EAAU,CAAC,CAC9E,GAPL,mCAQI,SAAsBq0H,EAAWsM,GAC7B,OAASqF,GAAgBnsL,KAAK8K,MAAO0vK,KAC7B2R,GAAgBnsL,KAAK0oC,MAAOo+I,KAC5BqF,GAAgBnsL,KAAKmmD,QAASnmD,KAAKysL,gBAC9C,KAZL,GAA0Cp6J,IAc7Bq6J,GAAb,0CACI,aAAc,6BACV,eAAS50K,YACJ60K,SAAW,GAFN,CAGb,CAJL,4CAKI,WACI,MAAO,EACV,GAPL,2BAQI,WAAmB,GARvB,gCASI,WACIZ,GAAkBC,MACrB,GAXL,iCAaI,SAAoBJ,EAAYC,EAAYtrC,GACxCwrC,GAAkBC,MACrB,GAfL,+BAgBI,WAAoB,WAChBD,GAAkBp/H,UAAUvsD,MAAK,WAAQ,EAAKusL,SAAW,EAAKC,eAAkB,IAChFb,GAAkBE,aACrB,GAnBL,gCAoBI,WAAqB,WACjBF,GAAkBp/H,UAAUvsD,MAAK,kBAAM,EAAKysL,eAAX,IACjCd,GAAkBE,aACrB,GAvBL,4BAwBI,WACIjsL,KAAK2sL,SAASjsL,SAAQ,SAACuI,GAAD,OAAOA,EAAEsjC,SAAT,GACzB,GA1BL,kCA2BI,WACIvsC,KAAK8sL,gBACR,KA7BL,GAAsCN,IA+BzBO,GAAb,0CACI,aAAc,6BACV,eAASj1K,YACJk1K,YAAc,KAFT,CAGb,CAJL,gDAKI,WACI,IAAM9yH,EAAKl6D,KAAKgtL,YACVC,EAAiB/yH,EAAG/hD,UAAUxX,OAC9Bu5D,EAAG/hD,UAAU9V,MAAM,KACnB,GACA6qL,EAAeD,EAAezyJ,QAAO,SAACriB,GAAD,OAAe+hD,EAAGizH,UAAU//K,SAAShM,QAAQ+W,GAAa,CAA1D,IACrCi1K,EAAiBlzH,EAAGizH,UAAU//K,SAASotB,QAAO,SAACriB,GAAD,OAAe80K,EAAe7rL,QAAQ+W,GAAa,CAAnD,IACpD+0K,EAAaxsL,SAAQ,SAACxC,GAClB,IAAMmvL,EAAiBnzH,EAAGizH,UAAUG,QAAQlsL,QAAQlD,GAChDmvL,GAAkB,EAClBnzH,EAAGizH,UAAUG,QAAQjsL,OAAOgsL,EAAgB,GAG5CnzH,EAAGizH,UAAUI,MAAMntL,KAAKlC,EAE/B,IACDkvL,EAAe1sL,SAAQ,SAACxC,GACpB,IAAMsvL,EAAetzH,EAAGizH,UAAUI,MAAMnsL,QAAQlD,GAC5CsvL,GAAgB,EAChBtzH,EAAGizH,UAAUI,MAAMlsL,OAAOmsL,EAAc,GAGxCtzH,EAAGizH,UAAUG,QAAQltL,KAAKlC,EAEjC,GACJ,GA9BL,+BA+BI,WACI,IAAMg8D,EAAKkgH,GAAiBp6K,KAAKk6K,KAAK,GACtCl6K,KAAKgtL,YAAc9yH,GACnB,iEACAA,EAAGizH,UAAYjzH,EAAGizH,WAAa,CAC3BG,QAAS,GAAIC,MAAO,GAAIngL,SAAU,IAEtC8sD,EAAGizH,UAAU//K,UAAmB,OAAP8sD,QAAsB,IAAPA,OAAgB,EAASA,EAAG/hD,UAAUxX,QACxEu5D,EAAG/hD,UAAU9V,MAAM,KACnB,EACT,GAzCL,gCA0CI,YACI,kEACA,IAAM63D,EAAKl6D,KAAKgtL,YACL,OAAP9yH,IACAA,EAAGizH,UAAUI,MAAM7sL,SAAQ,SAACyX,GAAD,OAAe+hD,EAAGpsB,UAAUC,IAAI51B,EAAhC,IAC3B+hD,EAAGizH,UAAUG,QAAQ5sL,SAAQ,SAACyX,GAAD,OAAe+hD,EAAGpsB,UAAUpwC,OAAOya,EAAnC,IAC7B+hD,EAAGizH,UAAU//K,SAAW8sD,EAAG/hD,UAAUxX,OAC/Bu5D,EAAG/hD,UAAU9V,MAAM,KACnB,GAEb,GApDL,mCAqDI,SAAsBm4K,EAAWsM,GAC7B,IAAMI,GAAe,oEAA4B1M,EAAWsM,GAI5D,OAHII,GACAlnL,KAAKytL,oBAEFvG,CACV,KA3DL,GAA6CwF,IC3DzCgB,GAAY,EACH/8K,GAAgB,SAAUytB,GACnC,IAAMrgB,EAAK2vK,KACX,MAAO,CACH3vK,GAAAA,EACAqgB,aAAAA,EACAvtB,SAAQ,mJACJ,WACI,OAAO7S,OAAOmH,OAAOnH,OAAOmH,OAAO,CAAC,EAAGnF,KAAKmmD,UAArC,WAAkDpoC,EAAK/d,KAAK8K,MAAM5M,OAASkgC,GACrF,GAHG,oBAIJ,WACI,OAAOp+B,KAAK8K,MAAMC,QACrB,KANG,GAAgBsnB,IAS/B,EChBYs7J,GAAb,WACI,WAAYC,EAAQC,IAAY,eAC5B7tL,KAAK6tL,WAAaA,EAClB7tL,KAAK4tL,OAASA,EACd5tL,KAAK8tL,QAAUF,GAClB,CALL,qCAMI,SAAOC,GACH,IAAME,EAAoB/tL,KAAK6tL,WAC3BA,IACA7tL,KAAK6tL,WAAaA,GAEjBA,IAAcA,EAAW17H,MAAK,SAAC3uC,EAAG7a,GAAJ,OAAUolL,EAAkBplL,KAAO6a,CAAnC,MAC/BxjB,KAAKusC,UACLvsC,KAAK8tL,QAAU9tL,KAAK4tL,SAE3B,GAfL,qBAgBI,WACQ5tL,KAAK8tL,SACL9tL,KAAK8tL,SAEZ,KApBL,KCEaE,GAAuB,kBAAM,IAAIL,IAAc,WACxDM,IACH,GAAE,GAFiC,ECQ7B,SAAShV,GAAOv4C,GACnB,OAAa,OAANA,CACV,CCgBD,SAASwtD,GAAqB1U,EAAK1uK,GAC/B,OAAOm0H,QAAQn0H,GAASA,EAAMqjL,yBAA2BrjL,EAAMqjL,wBAAwB7L,QA3B3F,SAAyB9I,EAAKlsG,GAC1B,IAAMk1G,EAAUtgL,SAASmG,cAAc,KAEvC,OADAm6K,EAAQl1G,UAAYA,EACbk1G,EAAQl1G,YAAcksG,EAAIlsG,SACpC,CAuBoGm1G,CAAgBjJ,EAAK1uK,EAAMqjL,wBAAwB7L,QACvJ,CAoBD,SAAS8L,GAAgBhG,EAAah/K,EAAYilL,EAAaloI,EAASw8H,EAAOf,GAC3E,IAAMzH,EAAaiO,EAAYjO,WACzBpvK,EAAWq9K,EAAYr9K,SACvBD,EAAQs9K,EAAYt9K,MACpBmvK,EAAQmO,EAAYnO,MAC1B,GAAmB,IAAfE,EAA2C,CAC3C,GAAmB,IAAfA,EACIlB,GAAOoV,GACPC,GAAGvjL,EAAU3B,EAAY+8C,EAASw8H,EAAO,KAAMf,GAI/CyM,GADAA,EAAcE,GAAaxjL,EAAU3B,EAAYilL,EAAaloI,EAASw8H,EAAOf,IAClDyM,EAAYhnL,YAAc,UAGzD,GAAmB,KAAf8yK,EACDlB,GAAOoV,GACPjlL,EAAWb,YAAYrG,SAASsG,eAAeuC,IAET,IAAjC3B,EAAWsiC,WAAW/qC,QAAyC,IAAzB0tL,EAAYt4I,SACvD3sC,EAAWi+C,YAAct8C,EAEpBsjL,EAAY5G,YAAc18K,IAC/BsjL,EAAY5G,UAAY18K,GAE5BsjL,EAAc,UAEb,GAAiB,GAAblU,EAEL,IADA,IAAIqU,GAAsB,EACjB7lL,EAAI,EAAGyI,EAAMrG,EAASpK,OAAQgI,EAAIyI,IAAOzI,EAAG,CACjD,IAAM0jC,EAAQthC,EAASpC,GACnBswK,GAAOoV,IAAiBG,IAAsC,GAAdniJ,EAAM4tI,OAAyB,EAC/EqU,GAAGjiJ,EAAOjjC,EAAY+8C,EAASw8H,EAAO0L,EAAazM,GAInDyM,GADAA,EAAcE,GAAaliJ,EAAOjjC,EAAYilL,EAAaloI,EAASw8H,EAAOf,IAC/CyM,EAAYhnL,YAAc,KAE1DmnL,GAAqC,GAAdniJ,EAAM4tI,OAAyB,CACzD,CAGL,GAAsC,KAAzB,KAARA,GAED,IADA,IAAI5yK,EAAc,KACXgnL,GACHhnL,EAAcgnL,EAAYhnL,YAC1B+B,EAAWC,YAAYglL,GACvBA,EAAchnL,CAGzB,MACS4xK,GAAO7vK,EAAW5B,aAAgB0mL,GAAqB9kL,EAAY0B,KACzE1B,EAAWi+C,YAAc,GACb,IAAR4yH,IAEA7wK,EAAWg1B,aAAe,IAGrC,CAgCD,SAASqwJ,GAAY1U,EAAOR,EAAWC,GACnC,GAAqB,IAAjBA,EAAIzjI,SACJwjI,EAAU2M,aAAcnM,EAAMP,IAAMt3K,SAASsG,eAAeuxK,EAAMhvK,UAAYyuK,OAE7E,CACD,IAAM7yK,EAAOozK,EAAMhvK,SACfyuK,EAAIiO,YAAc9gL,IAClB6yK,EAAIiO,UAAY9gL,GAEpBozK,EAAMP,IAAMA,CACf,CACD,OAAOO,EAAMP,GAChB,CAUD,SAAS+U,GAAaxU,EAAOR,EAAWmV,EAAYvoI,EAASw8H,EAAOf,GAChE,IAAM3H,EAASF,EAAME,OAAS,MAC9B,OAAY,GAARA,EArIR,SAA0BF,EAAOR,EAAWC,EAAKrzH,EAASw8H,EAAOgM,EAAS/M,GACtE,IAGIyM,EAHEhpL,EAAO00K,EAAM10K,KACb4L,EAAM8oK,EAAM9oK,IACZnG,EAAQivK,EAAMjvK,OAASuuK,GAE7B,GAAIsV,EAAS,CACT,IAAM5lJ,EAAW6lJ,GAAI7U,EAAO10K,EAAMyF,EAAOq7C,EAASw8H,EAAOf,GAEzDyM,EAAcE,GADAxlJ,EAASmxI,IACWX,EAAWC,EAAKzwI,EAASg7I,IAAKpB,EAAOf,GACvEiN,GAAM59K,EAAK83B,EAAU64I,EACxB,KACI,CACD,IAAMpnK,EAAQs0K,GAAInK,GAA0B5K,EAAO5zH,IACnDkoI,EAAcE,GAAa/zK,EAAO++J,EAAWC,EAAKrzH,EAASw8H,EAAOf,GAClE7H,EAAMhvK,SAAWyP,EACjBu0K,GAAMhV,EAAO6H,EAChB,CACD,OAAOyM,CACV,CAoHcW,CAAiBjV,EAAOR,EAAWmV,EAAYvoI,EAASw8H,GAAgB,EAAR1I,GAAkC,EAAG2H,GAEpG,IAAR3H,EA1DR,SAAwBF,EAAOR,EAAWC,EAAKrzH,EAASw8H,EAAOf,GAC3D,ID7G0BlhD,EC6GpB51H,EAAQivK,EAAMjvK,MACdqN,EAAY4hK,EAAM5hK,UAClB8hK,EAAQF,EAAME,MACdhpK,EAAM8oK,EAAM9oK,IAyBlB,OAxBA0xK,EAAQA,IAAkB,GAAR1I,GAA+B,EAC5B,IAAjBT,EAAIzjI,UACJk5I,GAAIlV,EAAO,KAAM5zH,EAASw8H,EAAO,KAAMf,GACvCrI,EAAU2M,aAAanM,EAAMP,IAAKA,KAGlCO,EAAMP,IAAMA,EACZ4U,GAAgBrU,EAAOP,EAAKA,EAAIhyK,WAAY2+C,EAASw8H,EAAOf,GACvD3I,GAAOnuK,IACRokL,GAAInV,EAAOE,EAAOnvK,EAAO0uK,EAAKmJ,QDzHzB,KADajiD,EC4HJvoH,ID3HO,OAANuoH,EC4HO,KAAlB84C,EAAIrhK,WACJqhK,EAAItyH,gBAAgB,SAGnBy7H,EACLnJ,EAAIlxK,aAAa,QAAS6P,GAG1BqhK,EAAIrhK,UAAYA,EAEpBg3K,GAAIl+K,EAAKuoK,EAAKoI,IAEX7H,EAAMP,GAChB,CA6Bc4V,CAAerV,EAAOR,EAAWmV,EAAYvoI,EAASw8H,EAAOf,GAE5D,GAAR3H,EACOwU,GAAY1U,EAAOR,EAAWmV,GAE7B,IAARzU,EACQF,EAAMP,IAAMkV,EAEZ,KAARzU,EAvBR,SAAyBF,EAAOR,EAAWC,EAAKrzH,EAASw8H,EAAOf,GAC5D,IAAM72K,EAAWgvK,EAAMhvK,SACvB,OAAyB,IAArBgvK,EAAMI,YACNsU,GAAY1jL,EAAUwuK,EAAWC,GAC1BzuK,EAASyuK,MAEpB4U,GAAgBrU,EAAOR,EAAWC,EAAKrzH,EAASw8H,EAAOf,GAxJ3D,SAA8B7H,GAG1B,IAFA,IAAIE,EACAlvK,EACGgvK,GAAO,CAEV,GAAY,MADZE,EAAQF,EAAME,OAEV,OAAOF,EAAMP,IAEjBzuK,EAAWgvK,EAAMhvK,SAEbgvK,EADQ,KAARE,EAC6B,IAArBF,EAAMI,WAA0CpvK,EAAWA,EAASA,EAASpK,OAAS,GAEjF,EAARs5K,EACGlvK,EAASmvK,IAGTnvK,CAEf,CACD,OAAO,IACV,CAqIUskL,CAAqBtkL,EAASA,EAASpK,OAAS,IAC1D,CAgBc2uL,CAAgBvV,EAAOR,EAAWmV,EAAYvoI,EAASw8H,EAAOf,IDpKtE,SAAoBxnL,GAIvB,MAHKA,IACDA,EAfiB,sFAiBf,IAAIG,MAAJ,yBAA4BH,GACrC,CCiKGm1L,GACO,KACV,CCnLD,SAASxW,GAAcr4C,GACnB,YAAa,IAANA,GAAsB,OAANA,CAC1B,CACD,SAAShwE,GAASgwE,GACd,MAAoB,kBAANA,CACjB,CACD,SAAS8uD,GAAY9uD,GACjB,YAAa,IAANA,CACV,CAED,IAAI+uD,GAAiB,CACjB9J,oBAAqB,EACrB4B,qBAAsB,EACtBF,wBAAyB,EACzB3B,qBAAsB,EACtB1D,uBAAwB,EACxBsF,sBAAuB,GAE3B,SAASj/K,GAAchD,EAAMyF,EAAO4kL,GAChC,IACI3kL,EAKAyN,EANAm3K,EAAc73K,UAEd7G,EAAM,KACN3O,EAAM,KACN6V,EAAY,KACZ8hK,EAAQ,EAER2V,EAAW93K,UAAUnX,OAAS,EAClC,GAAiB,IAAbivL,EACA7kL,EAAW2kL,OAEV,GAAIE,EAAW,EAEhB,IADA7kL,EAAW,GACJ6kL,KAAa,GAChB7kL,EAAS6kL,GAAYD,EAAYC,EAAW,GAGpD,IAAIl/H,GAASrrD,GA0BR,CAQD,GAPA40K,EAAQ,EACHuV,GAAYzkL,KACRD,IACDA,EAAQ,CAAC,GAEbA,EAAMC,SAAWA,IAEhBguK,GAAcjuK,GAEf,IAAK,IAAIw7K,KADT9tK,EAAW,CAAC,EACO1N,EACA,QAAXw7K,EACAhkL,EAAMwI,EAAMxI,IAEI,QAAXgkL,EACLr1K,EAAMnG,EAAMmG,IAEoB,IAA3Bw+K,GAAenJ,IACfr1K,IACDA,EAAM,CAAC,GAEXA,EAAIq1K,GAAUx7K,EAAMw7K,IAGpB9tK,EAAS8tK,GAAUx7K,EAAMw7K,GAIrC,OAAO7K,GAAqBxB,EAAO50K,EAAMmT,EAAUlW,EAAK2O,EAC3D,CArDG,GADAgpK,EAAQ2C,GAAwBv3K,IAC3B0zK,GAAcjuK,GAEf,IAAK,IAAIjO,KADT2b,EAAW,CAAC,EACK1N,EACA,cAATjO,GAAiC,UAATA,EACxBsb,EAAYrN,EAAMjO,GAEJ,QAATA,EACLyF,EAAMwI,EAAMxI,IAEE,aAATzF,GAAuB2yL,GAAYzkL,GACxCA,EAAWD,EAAMC,SAEH,QAATlO,EACLoU,EAAMnG,EAAMmG,KAGC,oBAATpU,IACAo9K,GAAS,MAEbzhK,EAAS3b,GAAQiO,EAAMjO,IAmCvC,OAAY,KAARo9K,EACO8B,GAA4B,IAAb6T,EAAiB,CAAC7kL,GAAYA,EAAU,EAAyBzI,GAEpFs4K,GAAYX,EAAO50K,EAAM8S,EAAWpN,EAAU,EAAyByN,EAAUlW,EAAK2O,EAChG,CC1FM,ICRD4+K,GAAgB,IAAI9wL,IAAI,CAC1B,0BACA,oBACA,mBACA,oBACA,UACA,eACA,kBACA,cACA,cACA,OACA,WACA,eACA,YACA,eACA,aACA,eACA,aACA,aACA,UACA,YACA,aACA,UACA,QACA,UACA,cACA,kBACA,mBACA,mBACA,gBACA,cACA,UACA,SACA,SACA,SAQE+wL,GAAmB,SAElB,SAASC,GAAgB1/K,GAC5B,GAAMA,aAAkBrS,OAGxB,OAAOA,OACFyG,QAAQ4L,GACRlM,QAAO,SAACC,EAAD,GAAuB,IAPpB1C,EAOoB,eAAhBY,EAAgB,KAAXpE,EAAW,KAI/B,OAHAkG,GARW1C,EAQGY,EARKZ,EAAIE,QAAQkuL,GAAkB,OAAOt7K,gBAP9C,SAACtW,GACf,MAAqB,kBAAVA,IAEHw6B,OAAOijC,MAAMjjC,OAAOx6B,GAC/B,CAW6Bw6D,CAAUx6D,GAVZ,SAAC44B,EAAO54B,GAAR,OAAmB2xL,GAAcl2L,IAAIm9B,GAAS54B,EAA3B,UAAsCA,EAAtC,KAAnB,CAWd8xL,CAAoB1tL,EAAKpE,GACzBA,EACCkG,CACV,GAAE,CAAC,EACP,CCjCD,IAAI1G,GAAS,SAAA8O,GACT,IACgBpD,EACZoD,EADApD,WAEJ,GAAIA,EAAY,CACZ,IAAI/B,EAAcmF,EAAQnF,YAC1Bo9D,EAAmBj4D,GACnBpD,EAAWs2K,GAAKlzK,EAAQkzK,GACxB5kG,GAAQ,KAAM1xE,GACdA,EAAW3B,aAAa+E,EAASnF,GACjCmF,EAAQ8gE,UAAY,UACblkE,EAAWs2K,EACrB,QACMlzK,EAAQkzK,EAClB,EACD,IAAe32H,EAAAA,GAAAA,GAAS,CACpB1gD,cAAe,SAAC+oB,EAAWtmB,GAAZ,OAAsB24J,GAAeryI,EAAWtmB,EAAhD,EACfpN,OAAQA,GACRuyL,cAAe,WACXlE,GAAkBE,aACrB,EACDiE,YAAa,WACTnE,GAAkBC,MACrB,EACD19I,OAAQ,SAACld,EAAWtmB,EAAOvD,EAAW3F,GAClC,GAAKA,EAgBDk5E,GAAQ2oF,GAAeryI,EAAWtmB,GAAQvD,OAhBhC,CACV,IACgB6B,EACZ7B,EADA6B,WAEAuwK,EAAW,OAASpyK,QAAa,IAAWA,OAAY,EAASA,EAAUF,YAC3EkwC,EAAWslB,EAAAA,EAAAA,cAAyB,OACxCtlB,EAAShvC,YAAYhB,GACrB,IAAI4oL,EAAYtzH,EAAAA,EAAAA,yBAAoCt0D,YAAYgvC,KACrChwC,EAAUm4K,IACfhiL,GAAO6J,GJ6HlC,SAAiBiT,EAAO++J,EAAWh8K,GACtC,IDnLsBmjI,ECmLlB84C,EAAMD,EAAU/xK,WACpB,GAAIyxK,GAAOO,GACPlrI,GAAO9zB,EAAO++J,EAAWh8K,OAExB,CACD,IAAMqkL,EAAY,GAKlB,ID5LS,QADSlhD,ECyLHlmH,KDxLQ,IAANkmH,IAAqB,IAANA,QAAoB,IAANA,ICyL1C84C,EAAM+U,GAAa/zK,EAAO++J,EAAWC,EAAK,CAAC,GAAG,EAAOoI,IAGlDpI,IAAQA,EAAMA,EAAInyK,cACrBkyK,EAAUlwK,YAAYmwK,GAE1B,GAAIoI,EAAUjhL,OAAS,EAEnB,IADA,IAAIH,OACsCmH,KAAlCnH,EAAWohL,EAAU1pJ,UACzB13B,GAGX,CACD+4K,EAAUmG,GAAKllK,EDpMZ,SAAoBkmH,GACvB,MAAoB,oBAANA,CACjB,CCmMO7xE,CAAWtxD,IACXA,GAEP,CIrJW0K,CAAQw7J,GAAeryI,EAAWtmB,GAAQqlL,GAC1C5oL,EAAUm4K,GAAKyQ,EAAUzQ,GACrBt2K,GACAA,EAAW3B,aAAaF,EAAWoyK,EAE1C,CAGJ,eC1DMjlI,GAAgB,SAAC03I,EAAaC,GACrC,OAAIruL,OAAOgB,KAAKotL,GAAazrL,SAAW3C,OAAOgB,KAAKqtL,GAAc1rL,QAG3D3C,OAAOgB,KAAKotL,GAAavmJ,OAAM,SAAAvjC,GAAG,OAAI8pL,EAAY9pL,KAAS+pL,EAAa/pL,EAAtC,GAC5C,ECHG8iB,GAAY,CAAC,WAmFV,IAAMgxB,GAAb,0CACI,WAAYtrC,GAAO,6BACf,cAAMA,IACDslL,eAAiB,EAAKA,eAAetzL,MAApB,YAFP,CAGlB,CAJL,6CAKI,WACI,IAAI6N,EAAOyvK,GAAiBp6K,KAAKk6K,KAAK,GACtC,GAAM,OAASvvK,QAAQ,IAAWA,IAAQA,EAAKvB,WAC3C,OAAO,WAAQ,EAEnB,IAAI7B,EAAYoD,EAAKvB,WACjBoxE,EAAazJ,GAAExpE,GACf8oL,EAAuB71G,EAAWzL,WAAWrB,UAC7C78B,EApDZ,SAA+B/lC,EAAOvD,GAClC,IAAI+oL,EACA,EAGA,QAAUA,EAAexlL,EAAM2qC,aAAU,IAAW66I,EAAeA,EAAe,CAClFh2L,KAAM,CAAC,GAHDA,EADV,EACIA,KACO6G,EAFX,EAEIA,MAIA7G,GACA0D,OAAOgB,KAAK1E,GAAMoG,SAAQ,SAAAtH,GAClBkB,EAAKlB,IAASyjE,EAAAA,EAAAA,OAAkBviE,EAAKlB,MACrCkB,EAAKlB,GAAQyoJ,GAAiB9wE,GAAEz2E,EAAKlB,KAE5C,IAEL,IAAIm3L,EAAWzlL,EAAM0U,SAAS8uB,QAAOv1B,EAAAA,EAAAA,GAAS,CAC1CxR,UAAWA,EACX8yE,WAAYvvE,EAAMuvE,YACnB,CACCD,UAAWtvE,EAAMsvE,WACjBtvE,EAAMuvE,WAEN,CAAC,EAFkB,CACnB5kC,MAAOn7C,IACFwQ,EAAMuvE,YAAc3hD,OAAOy4B,SAAShwD,GAAS,CAClDA,MAAOA,GACP,CAAC,IACL,YAAI,IAAWovL,EACJ,GAEeA,EAhDT7iH,QAgDqB6iH,EAAS7iH,UAAY,CAACqD,GAAEw/G,GAAU32L,IAAI,GAC/E,CAuBqB42L,CAAsBxwL,KAAK8K,MAAO+2I,GAAiBrnE,IAEjE,OADAxL,GAAY+B,GAAEpmE,GAAOomE,GAAElgC,IAChB,WACH,IAxBqBwrI,EAwBjBoU,EAA0B1/G,GAAExpE,GAAWwnE,WAAWrB,UAxBjC2uG,EAyBGgU,EAAsBI,EAxB1C/vL,SAAQ,SAAAqmD,IACIs1H,EAAYrgL,MAAK,SAAA00L,GAAU,OAAI3pI,IAAe2pI,CAAnB,KAC3B3pI,EAAW39C,YAC3B29C,EAAW39C,WAAWC,YAAY09C,EAEzC,IAoBOx/C,EAAUgB,YAAYoC,EACzB,CACJ,GApBL,mCAqBI,SAAsB6vK,GAClB,IAAI,EAGAx6K,KAAK8K,MAFE2qC,EADX,EACIA,MACUj2B,EAFd,EAEIA,SAGSmxK,EAGTnW,EAHAmW,QACOC,EAEPpW,EAFA/kI,MACUo7I,EACVrW,EADAh7J,SAEAsxK,EAAmB,OAASH,QAAW,IAAWA,EAAUA,EAAUj8I,GAC1E,GAAIl1B,IAAaqxK,EACb,OAAO,EAEX,KAAKxiI,EAAAA,EAAAA,IAAU5Y,MAAW4Y,EAAAA,EAAAA,IAAUuiI,GAChC,OAAOn7I,IAAUm7I,EAErB,IACUt2L,EAENm7C,EAFAn7C,KACO6G,EACPs0C,EADAt0C,MAGM4vL,EAENH,EAFAt2L,KAGJ,OAAI6G,IADAyvL,EADAzvL,QAKI2vL,EAAiBx2L,EAAMy2L,EAClC,GAlDL,2BAmDI,WACI,MAAO,CAAC,IAAIpD,GAAc3tL,KAAKowL,eAAgB,CAACpwL,KAAK8K,MAAM0U,SAAUxf,KAAK8K,MAAM2qC,QACnF,GArDL,2BAsDI,WACIz1C,KAAK2sL,SAAS,GAAG3gJ,OAAO,CAAChsC,KAAK8K,MAAM0U,SAAUxf,KAAK8K,MAAM2qC,OAC5D,GAxDL,kCAyDI,WAAyB,GAzD7B,oBA0DI,WACI,OAAO,IACV,KA5DL,GAAqCi3I,IC7ErC,SAASsE,GAAiB9yL,GACtB,OAAO2G,MAAMC,QAAQ5G,IAAd,QAA2BA,IAAS6a,EAAAA,EAAAA,GAAS,CAAC,EAAG7a,EAC3D,CAED,SAAS+yL,GAAgB/yL,EAAO66D,EAAWm4H,GACvC,IAAI1tL,EAAS0tL,EAAcvwL,OAAS,GAAKo4D,GAAa76D,IAAU66D,EAAYi4H,GAAiBj4H,GAAai4H,GAAiB9yL,GACvH9E,EAAO83L,EAAc,GAUzB,OATIA,EAAcvwL,OAAS,EACvB6C,EAAOpK,GAAQ63L,GAAgB/yL,EAAM9E,GAAO,OAAS2/D,QAAa,IAAWA,OAAY,EAASA,EAAU3/D,GAAO83L,EAAcnsL,MAAM,IAChI3L,KACHguC,EAAAA,EAAAA,IAAclpC,EAAM9E,IACpBoK,EAAOpK,GAAQ43L,GAAiB9yL,EAAM9E,IAEtCoK,EAAOpK,GAAQ8E,EAAM9E,IAGtBoK,CACV,CACM,SAAS2tL,GAAqBrmL,EAAO6hC,EAAQvzC,EAAMy2C,GACtD,IAAIuhJ,EAAoBzkJ,EAAOvzC,GAC3Bi4L,EAAiBvmL,EAAM1R,GACvBoK,EAASsH,GACTs8B,EAAAA,EAAAA,IAAcgqJ,IAAsBh4L,IAASy2C,GAAYhrC,MAAMC,QAAQssL,GACvE5tL,EAAOpK,GAAQ63L,GAAgBG,EAAmBC,GAAgBv9H,EAAAA,GAAAA,IAAajkB,GAAU9qC,MAAM,IAE/FvB,EAAOpK,GAAQg4L,CAEtB,gBC9BD,SAASE,GAAavwL,GAClB,OAAOA,GAAS,CAACA,EAAM4W,OAAQ5W,EAAMmgE,eAAgBngE,EAAM+/D,cAAe//D,EAAMy+D,eAAehlC,QAAO,SAAA7vB,GAAI,QAAMA,CAAN,GAC7G,CACM,ICcH4mL,GAAmB,UAKnBC,IAHuBr2I,GAAAA,sBACDuG,GAAAA,qBAEV,MACZ+vI,GAAiB,KACjBC,GAAe,WACfD,GAAiB,IACpB,EACGE,GAAe,SAAS1oL,GACxB,IAAIi5D,EAAgBj5D,EAAEi5D,cAClB0vH,EAAoBH,KAAmBvvH,GAAiBA,GAAiBA,EAAc2vH,iBACzE5oL,EAAEo5D,OAAS,IAAMp5D,EAAEo5D,QAClBmvH,IAAcI,IACzB1vH,IACAA,EAAc2vH,eAAgB,GD3BH,SAAC9wL,EAAOxD,GAC3CghE,EAAAA,EAAAA,IAAiB+yH,GAAavwL,GAAQ8vE,GAAatzE,EACtD,CC2BOu0L,CAA0BL,GAAgBC,IDhCb,SAAC3wL,EAAOxD,GACzCghE,EAAAA,EAAAA,IAAiB+yH,GAAavwL,GAAQ8vE,GAAatzE,EACtD,CCgCOw0L,CADAN,GAAiBvvH,EACuBwvH,IACxC95G,GAAU,CACNvyE,KAAMksL,GACNrvH,cAAej5D,IAG1B,EACG+oL,GAAejrC,GAAAA,QAAgB,CAC/BhkG,KAAM,SAASv2C,GACXxM,KAAKmiD,SAAS31C,GACd+xD,EAAAA,EAAAA,GAAgBv+D,KAAKmnJ,aAAc,QAASwqC,GAC/C,EACDp1J,MAAO,SAAStzB,GACZuoL,GAAY,IACf,EACDxwI,OAAQ,WACJwwI,IAAY,CACf,EACDjlJ,QAAS,WACLgyB,EAAAA,EAAAA,IAAiBv+D,KAAKmnJ,aAAc,QAASwqC,GAChD,KAEH,WAEE,IADoB35G,GAAAA,OAAepD,QACf,CAChB,IAAI8D,EAAc,KACdu5G,GAAgB,EAChB/vL,EAAW26D,EAAAA,EAAAA,cACf0B,EAAAA,EAAAA,gBAA6Br8D,EAAUshJ,GAAa3oF,GAAAA,KAAoB,uBAAwB,SAAS5xD,GACrGyvE,EAAczvE,EAAE0O,OAChBs6K,EAAgBhpL,EAAEg6D,oBACrB,IACD1E,EAAAA,EAAAA,gBAA6Br8D,EAAUshJ,GAAa,QAAS,uBAAwB,SAASv6I,GAC1F,IAAI24I,EAAU7wE,GAAE9nE,EAAE0O,QACbs6K,IAAiBv5G,GAAgBkpE,EAAQ3yE,GAAGyJ,IAAiB3H,GAAE2H,GAAazJ,GAAG,WAAgC8B,GAAT6wE,GAAoB3yE,GAAG,sDAC9HqJ,KAGJI,EAAc,KACdu5G,GAAgB,CACnB,GACJ,CACJ,CApBC,GAqBFx7B,GAAgB,CACZ7F,QAASohC,GACTr/B,QAAQ,EACR5oH,OAAQ,CAACwnJ,MCzEb,IAkCIW,GAlCAC,GAAoB,WACpBC,GAAsB,aAGtBC,GAAgBlmI,GAAAA,EAAAA,QAAc,CAC9BpJ,KAAM,SAAShc,EAASgmB,GACpB/sD,KAAKsyL,SAAWvrJ,EAChB/mC,KAAKuyL,MAAQxlI,CAChB,EACDxwB,MAAO,WACH,IAAIkzB,EAAOzvD,KACXA,KAAKwyL,WAAW,WACZ/iI,EAAK66H,OACR,GACJ,EACDkI,UAAW,SAASz0L,GAChBiC,KAAKyyL,OACLzyL,KAAK0yL,OAASn9J,WAAWx3B,EAAIiC,KAAKsyL,SACrC,EACDG,KAAM,WACFn9J,aAAat1B,KAAK0yL,OACrB,EACDpI,MAAO,WACCtqL,KAAKstD,SAGTttD,KAAKyyL,OACLzyL,KAAKuyL,QACLvyL,KAAKstD,QAAS,EACjB,EACDY,MAAO,WACH,OAAOluD,KAAKstD,MACf,IAGDqlI,GAAkB5rC,GAAAA,QAAgB,CAClChkG,KAAM,WACF/iD,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK4yL,QAAU,IAAIP,GAAc,EAAGvwK,GAAAA,MACpC9hB,KAAK6yL,UAAY,IAAIR,GAAc,EAAGvwK,GAAAA,KACzC,EACDgR,UAAW,SAASx4B,EAAMkE,GACtB,OAAQA,GACJ,KAAK2zL,GACD73L,EAAKw4L,cAAgBx4L,EAAKysC,QAC1B,MACJ,KAAKqrJ,GACD93L,EAAKy4L,gBAAkBz4L,EAAKysC,QAEpC/mC,KAAKmiD,SAAS7nD,EACjB,EACDiiC,MAAO,SAAStzB,GACZ,GAAIipL,GAAgB,CAChB,IAAIc,EAAoB/yH,GAASjgE,KAAKmnJ,aAAavtJ,IAAI,GAAIs4L,GAAe/qC,aAAavtJ,IAAI,IACvFq5L,GAAsBf,GAAeU,QAAQ1kI,QACjD,GAAI8kI,GAAqBC,EAErB,YADAjzL,KAAK0nJ,UAGTwqC,GAAeW,UAAUvI,OAC5B,CACD4H,GAAiBlyL,KACjBA,KAAKkzL,YAAYjqL,GACjBjJ,KAAK4yL,QAAQr2J,OAChB,EACD22J,YAAa,SAASjqL,GAClB,IAAIwmD,EAAOzvD,KACPmzL,EAAcnzL,KAAKioJ,kBAAkBh/I,GACrCmqL,EAAa3tC,GAAax8I,GAE1BoqL,EADcr7G,GAAAA,gBACkBo7G,EAChCN,GAAgB1kI,EAAAA,GAAAA,eAAcpuD,KAAK8yL,cArE1B,IAsETC,GAAkB3kI,EAAAA,GAAAA,eAAcpuD,KAAK+yL,gBArE1B,KAsEf/yL,KAAK4yL,QAAU,IAAIP,GAAcgB,EAAgBP,EAAgB,GAAI,WACjErjI,EAAKu4F,WAAWmqC,GAAmBlpL,EAAG,CAClC0O,OAAQw7K,GAEf,IACDnzL,KAAK6yL,UAAY,IAAIR,GAAcgB,EAAgBN,EAAkB,GAAI,WACrEtjI,EAAKu4F,WAAWoqC,GAAqBnpL,EAAG,CACpC0O,OAAQw7K,IAEZjB,GAAiB,IACpB,GACJ,EACDlxI,OAAQ,SAAS/3C,GACbjJ,KAAKkK,IAAIjB,EACZ,EACDiB,IAAK,SAASjB,GACV,IAAIqqL,EAAarqL,EAAE5D,OAASw1D,GAAAA,GACxBy4H,EACAtzL,KAAK4yL,QAAQH,OAEbzyL,KAAK4yL,QAAQtI,QAEjBtqL,KAAK6yL,UAAUt2J,QACX+2J,GACAtzL,KAAK6yL,UAAUvI,OAEtB,EACD/9I,QAAS,WACLvsC,KAAK4yL,QAAQH,OACbzyL,KAAK6yL,UAAUJ,OACXP,KAAmBlyL,OACnBkyL,GAAiB,MAErBlyL,KAAKmiD,UACR,EACDoxI,aAAc,WAKV,OAJAvzL,KAAK4yL,QAAQtI,QACbtqL,KAAK6yL,UAAUJ,OACfP,GAAiB,KACjBlyL,KAAK0nJ,UACE1nJ,KAAK6yL,UAAUvI,MAAMxtL,KAAKkD,KAAK6yL,UACzC,IAELF,GAAgB3G,KAAO,SAASz9H,GAC5B,IAAIglI,EAAerB,GAAiBA,GAAeqB,eAAiBzxK,GAAAA,KACpEysC,EAASK,KAAK2kI,EACjB,EACD98B,GAAgB,CACZ7F,QAAS+hC,GACT5oJ,OAAQ,CAACooJ,GAAmBC,MAEzB,IAAIpG,GAAO2G,GAAgB3G,KC7H9BwH,GAAuB,eACvBC,GAAa,eACbC,GAAqClwC,GAAa3oF,GAAAA,MAAqB24H,IACvEG,GAAqB,aACrBC,GAAW,aACXC,GAAqCrwC,GAAa3oF,GAAAA,MAAqB84H,IACvEG,GAAQ3nI,GAAAA,EAAAA,QAAc,CACtBskB,UAAU,EACV1tB,KAAM,WACF/iD,KAAK+zL,qBAAuB/zL,KAAKg0L,gBAAkB,eACtD,EACDhjH,MAAO,SAASxkE,GACZ4zD,EAAY5zD,EAASxM,KAAK+zL,qBAAsB,CAAC,EACpD,EACDhmJ,IAAK,SAASvhC,EAASigJ,GACnB,IAAIh9F,EAAOzvD,KACPc,EAAU,SAASmI,GACnBwmD,EAAKu8F,SAAS/iJ,EACjB,EACDs1D,EAAAA,EAAAA,GAAgB/xD,EAASxM,KAAKi0L,mBAAoBxnC,EAAUv8I,SAAUpP,GACtEs/D,EAAY5zD,EAASxM,KAAK+zL,sBAAsBtnC,EAAU1uF,MAAQj9D,CACrE,EACDkrJ,SAAU,SAAS/iJ,GACX48I,GAAa58I,IAAM+uE,GAAAA,eAGvBJ,GAAU,CACNvyE,KAAMrF,KAAK4rJ,WACX1pF,cAAej5D,EACfi4D,eAAgBj4D,EAAEi4D,gBAEzB,EACDxjE,OAAQ,SAAS8O,EAASigJ,GACtB,IAAI3rJ,EAAUs/D,EAAY5zD,EAASxM,KAAK+zL,sBAAsBtnC,EAAU1uF,MACxEQ,EAAAA,EAAAA,IAAiB/xD,EAASxM,KAAKi0L,mBAAoBxnC,EAAUv8I,SAAUpP,EAC1E,EACD8rJ,SAAU,SAASpgJ,GACfg4D,EAAWh4D,EAASxM,KAAK+zL,qBAC5B,IAEDG,GAAaJ,GAAMzoK,QAAQ,CAC3B03B,KAAM,WACF/iD,KAAKg0L,gBAAkBR,GACvBxzL,KAAK4rJ,WAAa6nC,GAClBzzL,KAAKi0L,mBAAqBP,GAC1B1zL,KAAKmiD,UACR,EACD6pG,SAAU,SAAS/iJ,IACAA,EAAEo+I,UAAY,IACf1mJ,QACVX,KAAKmiD,SAASl5C,EAErB,IAEDkrL,GAAWL,GAAMzoK,QAAQ,CACzB03B,KAAM,WACF/iD,KAAKg0L,gBAAkBL,GACvB3zL,KAAK4rJ,WAAagoC,GAClB5zL,KAAKi0L,mBAAqBJ,GAC1B7zL,KAAKmiD,UACR,IAELquB,GAAcijH,GAAY,IAAIS,IAC9B1jH,GAAcojH,GAAU,IAAIO,IC/C5B,IAAIC,GAAwB,SAACh3L,EAASi3L,GAAV,OAAiC,SAAAj7L,GACrD4E,OAAOgK,UAAU6X,eAAephB,KAAKrB,EAAShE,SAAS,IAAWgE,EAAQhE,KAC1EgE,EAAQhE,GAAQi7L,EAAmBj7L,GAE1C,CAJ2B,EAKPk7L,GAAAA,SAAAA,iCACjB,WAAY9nL,EAASpP,GAAS,6BAC1B,cAAMoP,EAASpP,IACVm3L,0BAA2B,EAChC,EAAKC,yBAHqB,CAI7B,wCACD,WACI,MAAO,CACHC,UAAW,GACXC,OAAQ,GACR/iI,SAAU,GACVzkB,UAAW,GACXpiC,MAAO,GAEd,uCACD,WACI,IACI6pL,EADoB30L,KAAK40L,uBAC0Bj0L,OAAS,EAC5Dk0L,EAA4B,oBAAsB70L,KAAK80L,eAAe9sL,UAAU+sL,QACpF,GAAIJ,IAAmCE,EACnC,MAAMt6L,MAAM,sDAEnB,sBACD,WACI,IAAIy6L,EACJ,OAAO,QAAUA,EAAiBh1L,KAAKi1L,gBAAa,IAAWD,OAAiB,EAASA,EAAev7K,OAC3G,yCACD,SAAyBo2B,GACrB,IAAIqlJ,EAAsBl1L,KAAKm1L,0BAA0BhxL,QAAO,SAAC/G,EAAShE,GAEtE,OADAgE,EAAQhE,IAAQ,EACTgE,CACV,GAAE,CAAC,GAEJ,OADA4C,KAAKo1L,yBAA2B,SAAA5lJ,GAAU,QAAM0lJ,EAAoB1lJ,EAA1B,EACnCxvC,KAAKo1L,yBAAyBvlJ,EACxC,wCACD,WACI,MAAO,CAAC,aACX,kCACD,WACI7vC,KAAKq1L,YAAY71I,eAAe,CAAC,EACpC,mCACD,WAAqB,WACb81I,EAAmBt1L,KAAKu1L,gCAC5B,OAAO9vI,EAAAA,GAAAA,IAAO,GAAD,QAAC,0DAAkC6vI,EAAkBt1L,KAAKw1L,WAAWd,OAAOvwL,QAAO,SAAC/G,EAAS4Z,GAAS,MAC3G,GAAJ,OAAqCA,EAArC,GAAK5d,EAAL,KAAWq8L,EAAX,KAAwBj3L,EAAxB,KACA,OAAOua,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAL,gBACVhE,EAAOk8L,EAAiBG,KADd,UAEVj3L,GAAY,SAAAN,GAAK,OAAI,EAAKyuC,OAAOvzC,EAAM8E,EAAtB,IAFP,GAIlB,GAAE,CAAC,GAAI8B,KAAKw1L,WAAWtoJ,UAAU/oC,QAAO,SAAC/G,EAAShE,GAAV,OAAmB2f,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAL,WAC/DhE,EAAO,MAD6B,GAErC,CAAC,GACR,oCACD,WAAsB,WACds8L,EAAiB,CAAC,EAItB,OAHA13L,OAAOgB,KAAKgB,KAAK2sC,UAAUjsC,SAAQ,SAAA4B,GAC/BozL,EAAepzL,GAAO,EAAKqqC,OAAOrqC,EACrC,IACMozL,CACV,qCACD,WAAuB,IACfC,EADe,QAEnB,oEACA,QAAUA,EAAwB31L,KAAK4pK,wBAAqB,IAAW+rB,GAAiCA,EAAsBC,oBAAoB51L,KAAK61L,uBACvJ,IAAIC,EAAc91L,KAAK+1L,sBACvB/1L,KAAKg2L,OAASh2L,KAAKi2L,6BAA6BH,GAChD91L,KAAKw1L,WAAWtoJ,UAAUxsC,SAAQ,SAAA8e,GAC9B,EAAK02K,oBAAoB12K,GAAY,EAAK22K,yBAAyB,EAAKH,OAAOx2K,GAClF,IACDxhB,OAAOgB,KAAKgB,KAAKo2L,yBAAyB11L,SAAQ,SAAAtH,GAAI,OAAI,EAAKi9L,WAAWj9L,EAApB,IACtD4G,KAAKi1L,SnBuvBF,CACHx7K,QAAS,MmBvvBTzZ,KAAKs2L,mBAAqBt2L,KAAKu2L,2BAClC,4BACD,WACI,IAAIzrL,EAAQ9K,KAAKw2L,WACjBx2L,KAAKy2L,eAAe3rL,EACvB,+BACD,SAAeA,GACX,IAAI4rL,EAAgB12L,KAAKg6D,WAAW,GAC/Bh6D,KAAK22L,iBACN1pH,GAAAA,cAEJA,GAAAA,OAAgBjtE,KAAK80L,eAAgBhqL,EAAO4rL,EAAe12L,KAAK22L,iBAC3D32L,KAAK22L,kBACN32L,KAAK22L,iBAAkB,EACvB1pH,GAAAA,gBACAjtE,KAAKu0L,0BAA2B,GAEhCv0L,KAAKu0L,2BACLv0L,KAAK42L,oBACL52L,KAAKu0L,0BAA2B,EAEvC,wBACD,SAAQn7L,EAAM8E,GACV8B,KAAKktD,SAASytG,OAAOvhK,EAAM8E,EAC9B,wBACD,WAAY,8BACZ,WACI+uE,GAAAA,OAAgBjtE,KAAKg6D,WAAW,GACnC,yBACD,WACIh6D,KAAK62L,iBACL,uDACH,0BACD,WAAkB,WACVrqL,EAAUxM,KAAKg6D,WAAW,GAC9B,IAAKh6D,KAAK82L,aAAc,CACpB,IACgBluB,EACZp8J,EADAo8J,WAEAyB,EAAQxlK,MAAM2E,KAAKo/J,GAAYpuI,QAAO,SAAA0zC,GACtC,IAAI6oH,EACJ,OAAQ,EAAKvB,WAAWtoJ,UAAU3nC,SAAS2oE,EAAK90E,QAAU,QAAU29L,EAAwBnuB,EAAW16F,EAAK90E,aAAU,IAAW29L,OAAwB,EAASA,EAAsBC,UAC3L,IAAE7yL,QAAO,SAACX,EAAQkhK,GACf,IACUtrK,EAENsrK,EAFAtrK,KACO8E,EACPwmK,EADAxmK,MAEA+4L,EAAoBzzL,EACpB0zL,EAAY99L,KAAQoT,EAExB,OADAyqL,EAAkB79L,GAAQ,KAAO8E,GAASg5L,EAAY1qL,EAAQpT,GAAQ8E,EAC/D+4L,CACV,GAAE,CAAC,GACJj3L,KAAK82L,aAAezsB,EACpBrqK,KAAKm3L,eAAiB3qL,EAAQ6C,aAAa,UAAY,EAC1D,CAGD,IAFA,IAAI+nL,EAAY5qL,EAAQsqB,MACpBA,EAAQ,CAAC,EACJnuB,EAAI,EAAGA,EAAIyuL,EAAUz2L,OAAQgI,GAAK,EACvCmuB,EAAMsgK,EAAUzuL,IAAMyuL,EAAUC,iBAAiBD,EAAUzuL,IAI/D,OAFA3I,KAAK82L,aAAahgK,MAAQA,EAC1B92B,KAAK82L,aAAajuB,MAAQ7oK,KAAKm3L,eACxBn3L,KAAK82L,YACf,4CACD,WACI,MAAO,CACHt3I,eAAgB,CACZuhG,kBAAmB,CAAC,WAAY,aAG3C,oCACD,WACI,MAAO,EACV,mCACD,SAAmB3jJ,GAAS,WACpB,EAKA4C,KAAKw1L,WAJMf,EADf,EACIA,UACU9iI,EAFd,EAEIA,SACO7mD,EAHX,EAGIA,MACQ4pL,EAJZ,EAIIA,OAEAY,EAAmBt1L,KAAKu1L,gCACxB+B,EAAyBt5L,OAAOgB,KAAKs2L,GACrClvE,EAAiBpmH,KAAK49J,qBAEZ7yJ,EAGV3N,EAHA2N,SACmBwsL,EAEnBn6L,EAFAm6L,kBAMAC,EAAc,CACdvmL,IALA7T,EADA6T,IAOAlG,SAAUA,EACV2yK,UANY6Z,EAAoB,SAACz4L,EAAG24L,GACpCF,EAAkBE,EACrB,OAAG,GAyBJ,MAnBA,mBAAI3sL,IAAJ,QAAc9K,KAAK03L,wBAAuBh3L,SAAQ,SAAAoW,GAC1C9Y,OAAOgK,UAAU6X,eAAephB,KAAKrB,EAAS0Z,KAC9C0gL,EAAY1gL,GAAY1Z,EAAQ0Z,GAEvC,IACD29K,EAAU/zL,QAAQ0zL,GAAsBoD,GAAa,kBAAM,IAAN,KACrDF,EAAuB52L,QAAQ0zL,GAAsBoD,GAAa,SAAAp+L,GAAI,OAAIgtH,EAAehtH,EAAnB,KACtEs7L,EAAOh0L,SAAQ,SAAAolJ,GACX,IAAI,GAAJ,OAA0BA,EAA1B,GAAK1sJ,EAAL,KAAWq8L,EAAX,KACArB,GAAsBoD,GAAa,kBAAMpxE,EAAeqvE,EAArB,GAAnCrB,CAAsEh7L,EACzE,IACDu4D,EAASjxD,SAAQ,SAAAtH,GACb,GAAIA,KAAQo+L,EAAa,CACrB,IAAIt5L,EAAQs5L,EAAYp+L,IACpB2iE,EAAAA,EAAAA,IAAW79D,KACXs5L,EAAYp+L,GAAQ,EAAKu+L,mBAAmBz5L,GAEnD,CACJ,IACMs5L,CACV,qCACD,WACI,MAAO,EACV,iCACD,SAAiB1sL,GACb,MAAI,kBAAoBA,EAAMgsB,OACnB/d,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBgsB,MAAO,CAAC,EACRmwB,QAASn8C,EAAMgsB,QAGhBhsB,CACV,yBACD,WAAW,IACH8sL,EAAuBC,EADpB,OAGU/5I,EACb99C,KAAK2sC,SADLmR,YAEA1gD,EAAU4C,KAAK83L,oBAAmB/+K,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKg2L,OAAQ,CAC5D/kL,IAAKjR,KAAKi1L,SACVlqL,SAAU/K,KAAK+3L,sBACfC,KAAMh4L,KAAKi4L,SAKf,OAHAj4L,KAAKw1L,WAAWtoJ,UAAUxsC,SAAQ,SAAA8e,GAC9BpiB,EAAQoiB,GAAY,EAAK02K,oBAAoB12K,EAChD,IACMxf,KAAKk4L,kBAAiBn/K,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS4C,KAAK89C,YAAaA,EAAa,CAC9E3lC,UAAW,oBAAK,QAAUy/K,EAAwB53L,KAAK89C,YAAY+qH,aAAU,IAAW+uB,EAAwBA,EAAwB,IAAIv1L,MAAM,OAAvI,SAAiJ,QAAUw1L,EAAqB,OAAS/5I,QAAe,IAAWA,OAAc,EAASA,EAAY+qH,aAAU,IAAWgvB,EAAqBA,EAAqB,IAAIx1L,MAAM,OAAMm4B,QAAO,SAAC5gB,EAAGjR,EAAGoX,GAAP,OAAanG,GAAKmG,EAAE3e,QAAQwY,KAAOjR,CAAnC,IAAsC8D,KAAK,KAAKlK,OACvYsmK,MAAO,IACR7oK,KAAKq1L,aACX,kCACD,WACI,MAAO,CAAC,CACX,sCACD,WACI,OAAOt8K,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKm4L,oBAAqBn4L,KAAKo4L,8BACtD,oCACD,WACI,IAAIv1B,EAAmB7kK,OAAO23B,OAAO31B,KAAKq4L,gBACtC70L,EAAS,CAAC,EAId,OAHAq/J,EAAiBniK,SAAQ,SAAA8e,GACrBhc,EAAOgc,GAAY,6BACtB,IACMhc,CACV,6BACD,WACI,MAAO,CAAC,CACX,6CACD,SAA6BpG,GACzB,IAAIk7L,EAAkBt6L,OAAOyG,QAAQzE,KAAKq4L,gBAAgBl0L,QAAO,SAACX,EAAQ+iJ,GACtE,IAAIgyC,EACA,GAAJ,OAAoChyC,EAApC,GAAKpyG,EAAL,KAAmBqkJ,EAAnB,KACA,OAAOz/K,EAAAA,EAAAA,GAAS,CAAC,EAAGvV,GAAL,WACV2wC,EAAe,QAAUokJ,EAAwBn7L,EAAQ+2C,UAAkB,IAAWokJ,EAAwBA,EAAwBC,GAE9I,GAAE,CAAC,GACJ,OAAOz/K,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAASk7L,EAChC,sBACD,YACI,qDACAt4L,KAAKy4L,kBAAoB,CAAC,EAC1Bz4L,KAAKq1L,YAAc,CAAC,EACpBr1L,KAAKi4L,MAAQ,CAAC,EACdj4L,KAAKk2L,oBAAsB,CAAC,CAC/B,0CACD,WAA4B,WACpB1yL,EAAS,CAAC,EAKd,OAJWxD,KAAK40L,uBACXl0L,SAAQ,SAAA4B,GACTkB,EAAOlB,GAAO,SAAA2G,GAAC,OAAI,EAAKyvL,QAAQ3D,QAAQvvB,GAAAA,qBAAuCv8J,GAAhE,CAClB,IACMzF,CACV,2BACD,SAAWzC,EAAO43L,GACd,IAAI9yK,EAAS8yK,EACb,IAAK9yK,EAAQ,CACT,IAAI+yK,EAAiB54L,KAAK2/J,sBAAsB5+J,EAAOf,KAAKo2L,wBAAwBr1L,IACpF8kB,EAAS,SAAAgzK,GAML,OALA76L,OAAOgB,KAAK65L,GAASn4L,SAAQ,SAAAtH,IACrBi1D,EAAAA,EAAAA,IAAUwqI,EAAQz/L,KAAUyjE,EAAAA,EAAAA,OAAkBg8H,EAAQz/L,MACtDy/L,EAAQz/L,GAAQyoJ,GAAiB9wE,GAAE8nH,EAAQz/L,KAElD,IACMw/L,EAAeC,EACzB,CACJ,CACD74L,KAAKq1L,YAAYt0L,GAAS8kB,CAC7B,+BACD,SAAe8mB,GACX,IACckD,EAIVlD,EAJAkD,SACMz2C,EAGNuzC,EAHAvzC,KACeyhK,EAEfluH,EAFAkuH,cACO38J,EACPyuC,EADAzuC,MAEJizL,GAAqBnxL,KAAKg2L,OAAQh2L,KAAK2sC,SAAUvzC,EAAMy2C,GACnD7vC,KAAKw1L,WAAWtoJ,UAAU3nC,SAASnM,IAAS8E,IAAU28J,IACtD76J,KAAKk2L,oBAAoB98L,GAAQ4G,KAAKm2L,yBAAyBj4L,IAE/D9E,GAAQ4G,KAAKo2L,wBAAwBh9L,IACrC4G,KAAKq2L,WAAWj9L,GAEpB4G,KAAKu0L,yBAA2Bv0L,KAAKu0L,0BAA4Bv0L,KAAKo1L,yBAAyBvlJ,IAC/F,6DAAqBlD,GACrB3sC,KAAKypK,aACR,oCACD,WACI,OAAIzpK,KAAK2sC,OAAO,gCACLsgC,GAAAA,cAAuB72B,GAAiB,CAC3C52B,SAAUxf,KAAK+qK,aAAa/qK,KAAK4pK,iBAAiBvG,uBAClDhpF,YAAY,EACZD,WAAW,IAGZ,IACV,yCACD,SAAyB0+G,GACrB,GAAKA,EAAL,CAGA,IAAIt5K,EAAWxf,KAAK+qK,aAAa+tB,GACjC,KAAIpoI,EAAAA,EAAAA,IAASlxC,IAAa,gCAAkCA,EAG5D,OAAO,SAAAi2B,GAAK,OAAIw3B,GAAAA,cAAuB72B,GN/TxC,SAA2BX,EAAOj2B,GACrC,IAAIu5K,EACAn7L,EAAO,CACP4hB,SAAUA,EACVi2B,OAAO18B,EAAAA,EAAAA,GAAS,CAAC,EAAG08B,IAEpBz+B,EAAO,QAAU+hL,EAActjJ,EAAMn7C,YAAS,IAAWy+L,EAAcA,EAAc,CAAC,EAEzEpI,EACT35K,EADA25K,QAEJr2L,GAAOmtB,EAAAA,GAAAA,GAA8BzQ,EAAMoO,IAK/C,OAJIurK,IACA/yL,EAAK63C,MAAMn7C,KAAOA,EAClBsD,EAAK+yL,QAAUA,GAEZ/yL,CACV,CM+S+Do7L,CAAkBvjJ,EAAOj2B,GAArE,CALX,CAMJ,oCACD,SAAoBy5K,GAAgB,WAChC,OAAO,SAAA77L,GACH,IACakoK,EAGTloK,EAHAkoK,QACepjG,EAEf9kE,EAFA8kE,cACOG,EACPjlE,EADAilE,MAEArjE,EAAO,EAAKy5L,kBACZ1nL,EAAO/R,EAAKsmK,IAAYtmK,EAAKqjE,GACjC,QAAI,IAAWtxD,IACGA,EAAKjU,KAAK,EACXgE,CAAQohE,EAAe9kE,GAGhC,OADA8kE,EAAclhB,QAAS,EAChBkhB,EAGf,OAAO,OAAS+2H,QAAkB,IAAWA,OAAiB,EAASA,EAAe/2H,EAAe9kE,EACxG,CACJ,iCACD,SAAiBoP,GACb,OAAOq1I,GAAiB9wE,GAAEvkE,GAC7B,mCACD,SAAmBtO,GACf,IACI,IAAIsF,EAASutE,GAAE7yE,GACXsO,EAAU,OAAShJ,QAAU,IAAWA,OAAS,EAASA,EAAO5J,IAAI,GACzE,OAAO,OAAS4S,QAAW,IAAWA,GAAWA,EAAQupC,SAAWvpC,EAAUtO,CAGjF,CAFC,MAAOmB,IACL,OAAOnB,CACV,CACJ,wBACD,WACI8B,KAAK22L,iBAAkB,EACvB32L,KAAKu0L,0BAA2B,EAChCv0L,KAAK62L,gBACL72L,KAAK2pK,UACR,+BACD,WACI,OAAO5wJ,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKs2L,mBAAoBt2L,KAAKy4L,kBACrD,mCACD,SAAmBn2L,EAAKxB,GACpBd,KAAKy4L,kBAAkBn2L,GAAOxB,CACjC,wBACD,SAAQ1H,EAAM8E,GACV8B,KAAKi4L,MAAM7+L,GAAQ8E,EACnB8B,KAAKsoK,aACR,8CACD,WACI,OAAOtoK,KAAK80L,eAAen8K,cAAgB,CAAC,CAC/C,OA5WgB27K,CAAyBjtB,IA8W9CitB,GAAiB4E,qBAAsB,EACvC5E,GAAiB4E,qBAAsB,ECjZvC,ICsCI/yI,GACAgzI,GACAC,GACAC,GACAC,GAqMAC,GD/OAC,GAAa,UAENC,GAAqB,SAAAlyJ,GAC5B,SAAKA,GAAU,kBAAoBA,KAG/B,wCAAwCnxB,KAAKmxB,GACtC,MAEP,iCAAiCnxB,KAAKmxB,GAC/B,QAEP,YAAYnxB,KAAKmxB,GACV,WAEP,oBAAoBnxB,KAAKmxB,IAClB,WAGd,EACUmyJ,GAAoB,SAAAnyJ,GAC3B,OAAQkyJ,GAAmBlyJ,IACvB,IAAK,QACD,OAAOwpC,GAAE,SAAS7C,KAAK,MAAO3mC,GAAQ6mC,SAASorH,IACnD,IAAK,WACD,OAAOzoH,GAAE,OAAO3C,SAAS,GAAGn+D,OAAOupL,GAAY,KAAKvpL,OAAOs3B,IAC/D,IAAK,SACD,OAAOwpC,GAAE,OAAO3C,SAAS,GAAGn+D,OAAOupL,GAAY,KAAKvpL,OAAOupL,GAAY,KAAKvpL,OAAOs3B,IACvF,IAAK,MACD,OAAOwpC,GAAE,OAAO3C,SAAS,GAAGn+D,OAAOupL,GAAY,KAAKvpL,OA5B3C,gBA4BmEtK,OAAO4hC,GACvF,QACI,OAAO,KAElB,EE5BoBoyJ,GAAAA,SAAAA,+IACjB,WACI,OAAO7jB,GAAAA,eAAgC91K,KAAK45L,aAC/C,wCACD,WACI,MAAO,CAAC,UACX,qCACD,WACI,MAAO,CAAC,QAAS,QACpB,yBACD,WAAW,WACH9uL,GAAQ,wDAcZ,OAbAA,EAAMwyK,QAAU,SAAAtmK,GACZ,IACWjW,EACPiW,EADAjW,MAEJ,EAAK84L,aAAa,CACd94L,MAAOA,EACPo1K,gBAAiB,EAAK2jB,wBAE7B,EAEG,QADWL,GAAmB3uL,EAAM2b,QAEpC3b,EAAMivL,aAAe/5L,KAAKm2L,0BAAyB,kBAAMrrL,EAAM2b,IAAZ,KAEhD3b,CACV,6BACD,WACI,MAAO,CACH0U,SAAU,UAEjB,mCACD,SAAmB1gB,EAAGZ,GAClB,IAAIgtB,EAASlrB,KAAK04L,QAClBx6L,EAAQgtB,EAAOqjI,WAAarjI,EAAO8uK,YACtC,iCACD,WAAmB,WACXC,GAAe,EACfzhB,EAAmB,QACvB,OAAOx4K,KAAK8gK,eAAc,SAAA4D,GACtB,IACW3jK,EAEP2jK,EAFA3jK,MACam5L,EACbx1B,EADAw1B,YAEJ,GAAID,EAAc,CACd,IAAI9jB,EAAkB,EAAK2jB,uBAC3B,QAAI,IAAW3jB,GAAmB,KAAOA,EAAiB,CACtD,IAAIgkB,EAAmBhkB,EAAgB50B,WACvCi3B,EAAmB2hB,EAAiBvzL,OAChC,YAAcuzL,EAAiBvzL,SAC/BqzL,GAAe,EACf,EAAKttJ,OAAO,YAAY,GACxBwtJ,EAAiBx4K,SAAS7jB,MAAK,SAAAgoJ,GAC3B,IACYl/I,EACRk/I,EADAl/I,OAEJ,EAAK+lC,OAAO,YAAY,GAExB,WADA6rI,EAAmB5xK,IACaszL,EAAYhzB,QAC5C+yB,GAAe,CAClB,IAER,CACJ,CACD,UAAYzhB,GAAoBz3K,EAAMo7D,iBACtCp7D,EAAMggE,iBACT,GACJ,qCACD,YACI,oEACA/gE,KAAKq2L,WAAW,WAAYr2L,KAAKo6L,oBACjCp6L,KAAK65L,aAAe75L,KAAKq6L,oBAC5B,4BACD,YACI,2DACA,IAAIC,EAAWt6L,KAAKg6D,WAAWh+D,KAAK,sBAChCu+L,EAAYD,EAASvvL,WAAWyvB,OAAO,wBACvCggK,EAASF,EAASvvL,WAAWyvB,OAAO,2BACpC+/J,EAAU55L,SACV45L,EAAUnsH,SAAS,qBACnBmsH,EAAU50L,OAAO60L,GACjBF,EAAStrH,YAAYurH,GAE5B,mCACD,SAAmBn9L,GACf,OAAO,kEAAyB2b,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS,CAClDq9L,aAAcr9L,EAAQs9L,gBAE7B,2BACD,WACI,IAAI1gI,EAAWh6D,KAAKg6D,WAChBm8G,EAAkBn2K,KAAK2sC,OAAO,mBAClC,YAAO,IAAWwpI,GAAmB,KAAOA,EAAkBA,EAAkBL,GAAAA,UAA2B97G,EAAUh6D,KAAKupK,gBAAgBvvG,GAC7I,mCACD,WACI,OAAOh6D,KAAK2/J,sBAAsB,UAAW,CACzC5e,kBAAmB,CAAC,aAE3B,+BACD,SAAep0G,GACX,GACS,YADDA,EAAOvzC,KAEP4G,KAAK65L,aAAe75L,KAAKq6L,sBAEjC,6DAAqB1tJ,EACxB,OAzGgBgtJ,CAAsBtnK,ICLhCsoK,IAAqB/tI,EAAAA,GAAAA,KF4B5B3yD,IAAS8mD,EAAAA,EAAAA,MACToyB,GAAQlB,GAAAA,IACRiG,GAAW0iH,GACXC,GAAkBznH,GAClB0nH,GAAe,IAAIz9K,GAAAA,GACnB09K,GAAmB,qBAGnBC,GAAqB,eACrBC,GAAY,MAMZC,GAAiB,KACjBC,GAAsB,MAE1B,SAASC,KACL,KAAKt6I,EAAAA,EAAAA,MACD,OAAO,KAEX,IACIt9C,EADAgJ,EAAUukE,GAAE,QAAS5qB,IAASioB,SAAS,mBAAmBO,SAASxoB,GAAQ+B,iBAE/E,IAEI,OADA1kD,EAASvJ,GAAO2gE,iBAAiBpuD,EAAQ5S,IAAI,IAAI6vB,aAIjDjmB,EAASA,EAAO5B,QAAQ,QAAS,KACtBoD,OAAO,EAAGm2L,GAAoBx6L,UAAYw6L,GAC1C,KAEJ33L,EAAOwB,OAAOm2L,GAAoBx6L,QAN9B,IASd,CAZD,QAWI6L,EAAQ9O,QACX,CACJ,CACM,SAAS29L,GAAiBC,GAC7B,IAAIC,EACA7sI,EACA8sI,GAAkB,EAGtB,SAASC,IACLnC,GAAmB,KACnBoC,cAAchtI,GACd8sI,GAAkB,EAClBb,GAAmB5tI,OACnB4tI,GAAmB7sI,QACnBgtI,GAAal8L,SAChB,CACD,GAVA06L,GAAmBgC,EAUfK,OAA2BT,GAC3BO,QACG,CACH,IAAKD,EAID,YAHIlC,KACAA,GAAmBgC,IAI3BC,EAAgBz4L,KAAKygE,MACrBi4H,GAAkB,EAClB9sI,EAAUktI,aAAa,WACnB,IAAIl3F,EAAWi3F,KACXE,GAAan3F,GAAY5hG,KAAKygE,MAAQg4H,EAAgBL,GACtDW,GACAv8K,GAAAA,IAAW,QAASg6K,KAEpB50F,GAAYm3F,IACZJ,GAEP,GAAG,GACP,CACJ,CACM,SAASE,KACZ,IAAKrC,GACD,OAAO,EAEX,IAAIwC,EAAkBxC,KAAqB2B,GAC3C,GAAI,aAAeH,GAAapyJ,SAAWozJ,EACvC,OAAO,EAEX,IAAIC,EAAcX,KAClB,SAAIW,IAAeD,IAGZC,IAAgBzC,EAC1B,CAuBD,SAAS0C,GAAqBC,GAC1B,IAAIC,EAAoBD,EAAmBA,EAAiB55L,MAAM,KAAO,GACrEmB,EAAS,KACb,GAAI41L,GAAa,CACb,GAAI6C,KAAoB7C,GACpB,OAAO6C,GAEXpvI,EAAAA,EAAAA,IAAKusI,IAAc,SAAS+C,EAAgBC,GACxC,IAAIC,EAAkBF,EAAe95L,MAAM,KAC3C,KAAI65L,EAAkB,IAAMG,EAAgB,KAAOH,EAAkB,OAGjEA,EAAkB,IAAMA,EAAkB,KAAOG,EAAgB,OAGjEH,EAAkB,IAAMA,EAAkB,KAAOG,EAAgB,IAMrE,OAHK74L,IAAU44L,EAAUhqC,WACrB5uJ,EAAS24L,IAETC,EAAUhqC,eAAd,CAGH,GACJ,CACD,OAAO5uJ,CACV,CAYM,SAASqzJ,GAAKz5J,IAVrB,SAAqBk/L,GACjB,IACQA,IAAen2I,KACfizI,GAAc,KAIrB,CAFC,MAAOrrL,GACLqrL,GAAc,IACjB,CACDjzI,GAAUm2I,CACb,EAGGC,EADAn/L,EAAUA,GAAW,CAAC,GACF+oD,SAAW0W,EAAAA,EAAAA,eAC1B1W,MA/DT,WACI,IAAIq2I,EAAiBzrH,GAAEgqH,GAAkB50I,IACpCq2I,EAAe77L,SAGpBy4L,GAAc,CAAC,EACfD,GAAmBpoH,GAAE7D,GAAU,yBAA0B/mB,IACzDq2I,EAAe3vI,MAAM,WACjB,IAAI4vI,EAAO1rH,GAAE/wE,KAAMmmD,IACfu2I,EAAgBD,EAAKvuH,KA7FhB,cA8FLrrE,EAAM45L,EAAKvuH,KAAK,QAChBkkF,EAAW,SAAWqqC,EAAKvuH,KA9FrB,eA+FVkrH,GAAYsD,GAAiB,CACzB75L,IAAKA,EACLuvJ,SAAUA,EAEjB,IACDoqC,EAAe3nI,OAAOga,MAAMsqH,IAC5BqD,EAAe9+L,SAClB,CA+CGi/L,GACAtD,QAAmB,EACnB5/K,GAAQrc,GACX,CACM,SAASqc,GAAQrc,GACpB,IAAK0a,UAAUnX,OAEX,OADA04L,GAAmBA,IAAoB+B,KAG3C/iH,GAAiBH,MAEb,kBADJ96E,EAAUA,GAAW,CAAC,KAElBA,EAAU,CACNib,MAAOjb,IAGf,IAEIw/L,EAFAC,EAAaz/L,EAAQ0/L,UACrBC,EAAe3/L,EAAQ2/L,aAS3B,IAPA1D,GAAmB2C,GAAqB5+L,EAAQib,OAASghL,OAErDuD,EAAmBxD,GAAYC,KAE/B0D,GACApC,GAAmB5sJ,IAAIgvJ,GAEvBH,EACAzD,GAAiBjrH,KAAK,OAAQkrH,GAAYC,IAAkBx2L,MACxD83L,GAAmBhhM,OAAS,aAAemhM,GAAapyJ,SAAWtrC,EAAQ4/L,gBAC3E3B,GAAiBhC,QAElB,KAAIwD,EAOP,MAAMv9K,GAAAA,MAAa,QAAS+5K,KANxBv4I,EAAAA,EAAAA,OACAu6I,GAAiBJ,IAErBN,GAAmB5tI,OACnB4tI,GAAmB7sI,OAGtB,CACDgtI,GAAalsI,MAAK,kBAAMupB,GAAiB1E,KAAoB4lH,GAA3C,GACrB,CAeM,SAASlhH,GAAiB3rE,EAAS8uL,GACtC/B,GAdJ,SAAuB+B,GAEnB,IAAI93L,EAAS,GACTy5L,GAFJ3B,EAAYA,GAAa7hL,OAES6hL,EAAUj5L,MAAM,KAOlD,OANI46L,IACAz5L,EAAOpD,KAAK,YAAc68L,EAAe,GAAI,YAAcA,EAAe,GAAK,eAC3EA,EAAet8L,OAAS,GACxB6C,EAAOpD,KAAK,mBAAqB68L,EAAe,IAAMC,GAAW5B,GAAa,IAAM2B,EAAe,GAAK,MAGzGz5L,CACV,CAGkB25L,CAAc7B,GAAW7uL,KAAK,KAC7CskE,GAAEvkE,GAAS4hE,SAASmrH,IAClB,WACE,IAAI6D,GAAat8I,EAAAA,EAAAA,OAAe7mD,GAAOojM,iBACvC,GAAKD,KAAcA,EAAa,GAAhC,CAGA,IAAIE,EAAUvsH,GAAE,SAChBusH,EAAQh4J,IAAI,SAAU,0BACtByrC,GAAE,QAAQprE,OAAO23L,GACb,IAAMpyH,GAAeoyH,KACrBvsH,GAAEvkE,GAAS4hE,SAAS4sH,IACpBzB,IAAgB,iBAEpB+D,EAAQ5/L,QARP,CASJ,CAbC,EAcL,CACM,SAAS26E,GAAiB7rE,GAC7BukE,GAAEvkE,GAAS6hE,YAAYkrH,GAC1B,CAMD,SAASgE,GAAQC,EAAalC,GAI1B,OAHKA,IACDA,EAAYjC,IAAoB+B,MAE7B,IAAIxjK,OAAO4lK,GAAapnL,KAAKklL,EACvC,CACM,SAAS4B,GAAW5B,GACvB,OAAOiC,GAAQ,WAAYjC,EAC9B,CACM,SAASmC,GAAUnC,GACtB,OAAOiC,GAAQ,UAAWjC,EAC7B,CAIM,SAASoC,GAAUpC,GACtB,OAAOiC,GAAQ,UAAWjC,EAC7B,CACM,SAASqC,GAAgBh3L,EAAMqM,GAClC,IAAI9Q,EAAW26D,EAAAA,EAAAA,cACX+gI,EAAc17L,EAASmG,cAAc,QACzCu1L,EAAY9mK,MAAMtsB,SAAW,WAC7BozL,EAAY9mK,MAAM2N,IAAM,UACxBm5J,EAAY9mK,MAAM8N,KAAO,UACzBg5J,EAAY9mK,MAAMyM,WAAa,SAC/Bq6J,EAAY9mK,MAAMrN,WAAa,QAC/Bm0K,EAAY9mK,MAAMpN,SAAW,QAC7Bk0K,EAAY9mK,MAAM9jB,WAAaA,EAC/B4qL,EAAYtwH,UAAY3mE,EACxBzE,EAASoD,KAAKiD,YAAYq1L,GAC1B,IAAIC,EAAkBD,EAAYnuH,YAClCmuH,EAAY9mK,MAAMrN,WAAa,gCAC/B,IAAIq0K,EAAkBF,EAAYnuH,YAElC,OADAmuH,EAAYx0L,WAAWC,YAAYu0L,GAC5BC,IAAoBC,CAC9B,CACM,SAASC,GAAYp3L,EAAMqM,GAC9B,OAAO,IAAIrU,SAAQ,SAAAC,GACf,IAAIuoC,EAAQ,WACRu0J,cAAcsC,GACd1oK,aAAak3D,GACb5tF,GACH,EACGo/L,EAAapC,aAAY,WACrB+B,GAAgBh3L,EAAMqM,IACtBm0B,GAEP,GAAE,IACCqlD,EAAYj3D,WAAW4R,EAAO,IACrC,GACJ,CAED,SAAS82J,KAKL,GAJApnC,GAAK,CACDimC,WAAW,EACXE,eAAe,IAEfjsH,GAAEgqH,GAAkB50I,IAASxlD,OAC7B,MAAM2e,GAAAA,MAAa,QAE1B,EACGwhC,EAAAA,EAAAA,MACAm9I,KAEA9qH,GAAM8qH,IAEVpD,GAAgB9sJ,KAAK,SAASmqC,EAAU1E,GACpCsnH,GAAalsI,MAAM,WACfypB,GAAiB7E,GACjB2E,GAAiBD,EACpB,GACJ,IACDF,GAAAA,QAAAA,KAAqB,WACjB6+E,GAAK,CACDimC,WAAW,GAElB,IAgBD,IGrWI13K,GAAY,CAAC,eAAgB,WAAY,UAsChC84K,GAAb,0CACI,WAAYpzL,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,uCAKI,WACI,OAAO+wJ,GAAmBz5L,KAAK8K,MAAMy8B,OACxC,GAPL,oBAQI,WACI,MAAO,SAAWvnC,KAAK8K,MAAMN,SAAW,gBAAkB,EAC7D,GAVL,yBAWI,WACI,IAAI2zL,GAAiB,SACjB,WAAW,GACVn+L,KAAKuqK,WAAavqK,KAAKuqK,UAGhBhjI,EACRvnC,KAAK8K,MADLy8B,OAEJ,MAAI,WAAavnC,KAAKo+L,WACX5hD,IAAezjI,EAAAA,EAAAA,GAAS,CAAC,EAAGolL,GAAL,WACzB,WAAWluL,OAAOs3B,IAAU,KAGjC,aAAevnC,KAAKo+L,WACb5hD,IAAezjI,EAAAA,EAAAA,GAAS,CAAC,EAAGolL,GAAL,WACzB10L,OAAO89B,KAAYA,KAGxB,UAAYvnC,KAAKo+L,WACV5hD,GAAe2hD,GAEtB,QAAUn+L,KAAKo+L,WACR5hD,IAAezjI,EAAAA,EAAAA,GAAS,CAAC,EAAGolL,EAAgB,CAC/C,eAAe,KAGhB,EACV,GAtCL,0BAuCI,WACI,IAAIE,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GA3CL,oBA4CI,WACI,IA9CUk5K,EA8CNxzL,EAAQ9K,KAAK8K,MACjB,OAjEkB,SAAAkM,GACtB,IACmBunL,EAMfvnL,EANAunL,cADJ,EAOIvnL,EALAlM,MACkB0zL,EAHtB,EAGQzE,aACQxyJ,EAJhB,EAIQA,OAEQ62J,EACZpnL,EADAonL,WAEJ,OAAOriB,GAAe,CAAC,WAAaqiB,GAAcxjB,GAAY,EAAG,IAAK2jB,GAAgB,aAAeH,GAAcxjB,GAAY,EAAG,IAAK2jB,GAAgB,UAAYH,GAAcxjB,GAAY,EAAG,MAAO2jB,EAAe,KAAM,EAAG,CAC3N55C,IAAK,GACL1iF,IAAK16B,IACLi3J,GAAgB5jB,GAAY,EAAG,IAAK2jB,EAAeC,EAAa,CAAC,GAAI,IAAK,EACjF,CAoDcC,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBivL,cAjDEuE,EAiDwBxzL,EAAMivL,aAjDduE,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAmDzJF,WAAYp+L,KAAKo+L,WACjB7zB,SAAUvqK,KAAKuqK,SACfg0B,cAAev+L,KAAKu+L,cACpBG,eAAgB1+L,KAAK0+L,gBAE5B,KAvDL,GAA0BlS,IAyD1B0R,GAAKvlL,aA9DkB,CACnBnO,SAAU,OACV+8B,OAAQ,IChCZ,IAAIo3J,GAAkB,eAClBC,GAAuB,oBACvBC,GAA0B,uBAC1BC,GAAyB,sBAMlBC,GAAa,WACpB,IAAIh/L,EAAS+X,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAEzDknL,EAIlBj/L,EAJAi/L,iBACqBC,EAGrBl/L,EAHAk/L,oBACYC,EAEZn/L,EAFAm/L,WACaC,EACbp/L,EADAo/L,YAEJ,MAAO,CACHF,oBAAqBA,GAdO,EAe5BC,WAAYA,IAAc,EAC1BC,YAAaA,GAAe,EAC5BC,UAAWC,GAAa,OAASL,QAAoB,IAAWA,GAAmBA,GAE1F,EACU1wJ,GAAS,SAAS1wC,GACzB,IAAImC,EAASg/L,GAAWnhM,GACxB,MAAO,CACH0hM,SAAUA,GAASxiM,KAAKkD,KAAMD,GAC9Bw/L,SAAUA,GAASziM,KAAKkD,KAAMD,GAErC,EAQGy/L,GAAW,SAAShzL,EAAS2yL,GAG7B,IAFA,IAAIM,EARW,SAASjzL,GACxB,IAAIhJ,EAASgJ,EAAQzB,SAAS,iBAI9B,OAHI,IAAMvH,EAAO7C,SACb6C,EAASutE,GAAE,SAAS3C,SAASuwH,IAAiBhwH,SAASniE,IAEpDhJ,CACV,CAEmBk8L,CAAa3uH,GAAEvkE,IAC3BhJ,EAASi8L,EAAU10L,SAAS,sBAA4B2iE,UACnD/kE,EAAInF,EAAO7C,OAAQgI,EAAIw2L,EAAax2L,IAAK,CAC9C,IAAIg3L,EAAe5uH,GAAE,SAASpC,SAAS8wH,GAAWrxH,SAASwwH,IAC3Dp7L,EAAOpD,KAAKu/L,EAAa,GAC5B,CACD,OAAO5uH,GAAEvtE,EACZ,EA2BM,SAAS87L,GAAS1hM,EAAMmC,GAC3B,IAAI6/L,EAAQJ,GAASz/L,EAAOyM,QAAS5O,EAAKuhM,aAAavvH,GAAG7vE,EAAO8/L,MAlE5C,GAmErBjiM,EAAKkiM,eAAiBxqK,aAAa13B,EAAKkiM,eACxCC,GAAiBH,GACjBA,EAAMt6J,IA9Be,SAAS1nC,EAAMmC,GACpC,IAKI6kC,EACAH,EANAj4B,EAAUukE,GAAEhxE,EAAOyM,SACnBwzL,EAAeh1H,GAAcx+D,GAC7ByzL,EAAgB/0H,GAAe1+D,GAC/B0zL,EAAkBpoK,SAASvuB,KAAK42L,KAAKH,EAAeA,EAAeC,EAAgBA,IACnFG,EAAW72L,KAAKsZ,IA/CJ,IA+CuBiV,SAASooK,EAAkBtiM,EAAKqhM,sBAGvE,GAAIrhM,EAAKshM,WACLt6J,GAAQo7J,EAAeI,GAAY,EACnC37J,GAAOw7J,EAAgBG,GAAY,MAChC,CACH,IAAIr/L,EAAQhB,EAAOgB,MACfyJ,EAAWgC,EAAQS,SAGvB23B,EAFQ7jC,EAAMyiE,MAAQh5D,EAASo6B,KAEpBw7J,EAAW,EACtB37J,EAFQ1jC,EAAM0iE,MAAQj5D,EAASi6B,IAErB27J,EAAW,CACxB,CACD,MAAO,CACHx7J,KAAMA,EACNH,IAAKA,EACLjY,OAAQ4zK,EACRzvK,MAAOyvK,EAEd,CAKaC,CAAmBziM,EAAMmC,IACnCnC,EAAK0iM,eAAiB/qK,WAAWgrK,GAAmBzjM,KAAKkD,KAAMpC,EAAMgiM,GAAQ,EAChF,CAED,SAASW,GAAmB3iM,EAAMgiM,GAC9B,IAAIY,EAAc5iM,EAAKwhM,UAAUqB,aAAe,KAChDb,EAAMxxH,SAASywH,IAAyBv5J,IAAI,qBAAsBk7J,EACrE,CAED,SAASnB,GAAaL,GAClB,MAAO,CACHyB,aAAczB,EAjFQ,IADL,IAmFjB0B,YAnFiB,IAoFjBC,cApFiB,IAsFxB,CAED,SAASZ,GAAiBH,GACtBA,EAAMvxH,YAAYywH,IAAwBx5J,IAAI,qBAAsB,GACvE,CACM,SAASi6J,GAAS3hM,EAAMmC,GAC3BnC,EAAK0iM,gBAAkBhrK,aAAa13B,EAAK0iM,gBACzC,IAAIV,EAAQJ,GAASz/L,EAAOyM,QAASzM,EAAOo/L,aAAavvH,GAAG7vE,EAAO8/L,MA3F9C,GA4FjBT,EAAYxhM,EAAKwhM,UACjBoB,EAAcpB,EAAUsB,YAAc,OAAStB,EAAUuB,cAAgB,KAC7Ef,EAAMxxH,SAAS0wH,IAAwBzwH,YAAYwwH,IAAyBv5J,IAAI,qBAAsBk7J,GACtG,IAAII,EAAoBr3L,KAAKkuB,IAAI2nK,EAAUsB,YAAatB,EAAUuB,eAClE/iM,EAAKkiM,cAAgBvqK,WAAWwqK,GAAiBjjM,KAAKkD,KAAM4/L,GAAQgB,EACvE,CC5GD,IAAIx7K,GAAY,CAAC,UAcNy7K,GAAiB,CACxB9gM,OAAQ/B,OAAO8iM,OAAO,CAAC,IAEdC,GAAb,0CACI,WAAYj2L,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EACtB,EAAKzB,SAAW,EAAKA,SAASziM,MAAd,YAChB,EAAKwiM,SAAW,EAAKA,SAASxiM,MAAd,YALD,CAMlB,CAPL,sCAQI,WAAgB,WACZ,YAAI,IAAWkD,KAAKghM,cAAcC,UACvBjhM,KAAKghM,cAAcC,UAEvBjhM,KAAKghM,cAAcC,UAAa,WACnC,IACYlhM,EACR,EAAK+K,MADL/K,OAEJ,OAAOg/L,GAAWh/L,EACrB,CALsC,EAM1C,GAlBL,0BAmBI,WACI,IAAIs+L,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAvBL,sBAwBI,SAAS2+G,GACLw7D,GAASv/L,KAAKihM,UAAWl9D,EAC5B,GA1BL,sBA2BI,SAASA,GACLu7D,GAASt/L,KAAKihM,UAAWl9D,EAC5B,GA7BL,iCA8BI,SAAoBy2C,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAM/K,SAAWy6K,EAAUz6K,SAChCC,KAAKghM,cAAcC,eAAY,EAEtC,GAlCL,oBAmCI,WACI,IAxCkBxrJ,EAwCd3qC,EAAQ9K,KAAK8K,MACjB,OAzCkB2qC,EAyCE,CAChB3qC,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBm2L,UAAWjhM,KAAKihM,UAChBvC,eAAgB1+L,KAAK0+L,gBA5CEvkJ,GAAeygI,GAAY,EAAG,MAAO,eAAgB,KAAM,GAAG7hK,EAAAA,EAAAA,GAAS,CAAC,EAAG08B,EAAMipJ,iBA8C/G,KA1CL,GAA+BlS,IA4C/BuU,GAAUpoL,aAAekoL,GC7DzB,IAAIx9I,GAAW8I,GAAAA,EAAAA,SAeXwqB,GAAaqB,GAAAA,OACbkpH,GAAe,SACfC,GAAoB,eACpBC,GAAqB,gBACrBC,GAAoB,WACpBC,GAAmB,cACnBC,GAAoB,eACpBC,GAAsB,iBACtBC,GAASt1I,GAAAA,EAAAA,QAAc,WACvB,IAAIu1I,EAA0Bl+C,GAAa09C,GAAc,mBACzD,MAAO,CACHn+I,KAAM,SAASv2C,GAAS,WACpBxM,KAAKyrC,SAAWj/B,EAChBxM,KAAK2hM,SAAU,EACf3hM,KAAK4hM,eAAiB,SAAA34L,GACb,EAAK+6F,WACN,EAAK69F,QAAQ54L,EAEpB,EACDs1D,EAAAA,EAAAA,GAAgBv+D,KAAKyrC,SAAUi2J,EAAyB1hM,KAAK4hM,eAChE,EACDC,QAASx+I,GACTy+I,MAAO,SAAS74L,EAAG1L,GACXyC,KAAK2hM,SACLpkM,GAEP,EACDgvC,QAAS,WACLvsC,KAAKgkG,WAAY,EACjBzlC,EAAAA,EAAAA,IAAiBv+D,KAAKyrC,SAAUi2J,EAAyB1hM,KAAK4hM,eACjE,EAER,CAxB0B,IAyBvBG,GAAgBN,GAAOp2K,QAAQ,CAC/B03B,KAAM,SAASv2C,EAASu6B,GACpB/mC,KAAKmiD,SAAS31C,GACdxM,KAAKsyL,SAAWvrJ,CACnB,EACD86J,QAAS,WACL7hM,KAAKgiM,WACLhiM,KAAKiiM,SACR,EACDD,SAAU,WACFhiM,KAAK0yL,QACL1yL,KAAKkiM,cAETliM,KAAK2hM,SAAU,CAClB,EACDO,YAAa,WACT5sK,aAAat1B,KAAK0yL,QAClB1yL,KAAK2hM,SAAU,EACf3hM,KAAK0yL,OAAS,IACjB,EACDuP,QAAS,WACL,IAAIxyI,EAAOzvD,KACXA,KAAK0yL,OAASn9J,YAAY,WACtBk6B,EAAKyyI,aACR,GAAGliM,KAAKsyL,SACZ,EACD/lJ,QAAS,WACLvsC,KAAKmiD,WACLniD,KAAKkiM,aACR,IAEDC,GAAcJ,GAAc12K,QAAQ,CACpC03B,KAAM,SAASv2C,GACXxM,KAAKmiD,SAAS31C,EAAS,KACvBxM,KAAKoiM,oBAAsB,IAC9B,EACDN,MAAO,SAAS74L,EAAG1L,GACfyC,KAAKqiM,uBAAuBp5L,GAC5BjJ,KAAKmiD,SAASl5C,EAAG1L,EACpB,EACD8kM,uBAAwB,SAASp5L,GAC7B,GAAK28I,GAAoB38I,GAAzB,CAIA,IAAI2d,EAAY3d,EAAEipJ,WAAY,EAC1BowC,EAAkB,OAAStiM,KAAKoiM,qBAAuBx7K,IAAc5mB,KAAKoiM,oBAC9EpiM,KAAKoiM,oBAAsBx7K,EAC3B5mB,KAAK2hM,QAAU3hM,KAAK2hM,UAAYW,CAJ/B,MAFGtiM,KAAKoiM,oBAAsB,IAOlC,IAEDG,GAAgBR,GAAc12K,QAAQ,CACtC03B,KAAM,SAASv2C,GACXxM,KAAKmiD,SAAS31C,EAAS,IAC1B,KAEH,WACE,IACSg2L,EAEL7rH,GAFAhC,IACSa,EACTmB,GADAjC,SAEE8tH,GAAShtH,KAGf+sH,GAAgBd,GAAOp2K,QAAQ,CAC3Bw2K,QAAS,WACL7hM,KAAK2hM,SAAU,EACf,IAAIlyI,EAAOzvD,MACX0hD,EAAAA,GAAAA,sBAAqB1hD,KAAKyiM,cAC1BziM,KAAKyiM,cAAetnJ,EAAAA,GAAAA,wBAAuB,WACvCsU,EAAKkyI,SAAU,CAClB,GACJ,EACDG,MAAO,SAAS74L,EAAG1L,IACfmkD,EAAAA,GAAAA,sBAAqB1hD,KAAKyiM,eAC1B/gJ,EAAAA,GAAAA,sBAAqB1hD,KAAK0iM,aAC1B,IAAIjzI,EAAOzvD,KACPmiD,EAAWniD,KAAKmiD,SACpBniD,KAAK0iM,aAAcvnJ,EAAAA,GAAAA,wBAAuB,WACtCgH,EAAS1jD,KAAKgxD,EAAMxmD,EAAG1L,GACvBkyD,EAAKkyI,SAAU,CAClB,GACJ,EACDp1J,QAAS,WACLvsC,KAAKmiD,YACLT,EAAAA,GAAAA,sBAAqB1hD,KAAKyiM,eAC1B/gJ,EAAAA,GAAAA,sBAAqB1hD,KAAK0iM,YAC7B,IAER,CAjCC,GAkCF,IAAIC,GAAgBr6C,GAAAA,QAAuB,WACvC,IAAIs6C,EAAiBr5L,KAAKoZ,MAAM,IAAM,IACtC,MAAO,CACHogC,KAAM,SAASv2C,GACXxM,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK4mB,UAAY,OACjB5mB,KAAK6iM,eAAiB,IAAIN,GAAc/1L,GACxCxM,KAAK8iM,aAAe,IAAIX,GAAY31L,EACvC,EACD+0I,SAAU,WACN,OAAO,CACV,EACDzuH,UAAW,SAASx4B,GACZA,EAAKyoM,eACL/iM,KAAK6iM,eAAet2J,UACpBvsC,KAAK8iM,aAAav2J,UAClBvsC,KAAK6iM,eAAiB,IAAIN,GAAcjoM,EAAKyoM,cAC7C/iM,KAAK8iM,aAAe,IAAIX,GAAY7nM,EAAKyoM,eAE7C/iM,KAAKmiD,SAAS7nD,EACjB,EACDipG,MAAO,SAASt6F,GACZjJ,KAAK8iM,aAAahB,MAAM74L,EAAG,WACnB28I,GAAoB38I,IACpBjJ,KAAK0uI,QAAQzlI,EAEpB,EAACnM,KAAKkD,OACPA,KAAK6iM,eAAef,MAAM74L,EAAG,WACzB,IAAI+5L,EAAYhjM,KAAKJ,UAAY6lJ,GAAax8I,GACzC28I,GAAoB38I,IAAO+5L,GAC5BhjM,KAAK0uI,QAAQzlI,EAEpB,EAACnM,KAAKkD,OACPA,KAAKgoJ,WAAWm5C,GAAmBl4L,GACnCjJ,KAAKijM,eAAiBviI,GAAUz3D,EACnC,EACDk6I,KAAM,SAASl6I,GACXjJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B7O,EAAEi6L,iBAAmBljM,KAAKJ,UAAYqJ,EAAEi6L,gBAC3C,EACD15C,OAAQ,SAASvgJ,GACbjJ,KAAKmjM,gBAAkBziI,GAAUz3D,GACjCjJ,KAAKgoJ,WAAWo5C,GAAoBn4L,GACpCjJ,KAAKijM,eAAiBviI,GAAUz3D,EACnC,EACDwgJ,MAAO,SAASxgJ,GACZ,IAAIm6L,EAAmB1iI,GAAUz3D,GACjCjJ,KAAKgoJ,WAAWq5C,GAAmBp4L,EAAG,CAClCg4E,MAAO8kE,GAAW/lJ,KAAKijM,eAAgBG,KAE/Br9C,GAAW/lJ,KAAKmjM,gBAAiBC,GACnChvK,KAAO,MACbp0B,KAAKmjM,gBAAkBnjM,KAAKijM,gBAEhCjjM,KAAKijM,eAAiBviI,GAAUz3D,EACnC,EACDuhJ,KAAM,SAASvhJ,GACX,IAAIo6L,EAAgBt9C,GAAW/lJ,KAAKijM,eAAgBviI,GAAUz3D,IAC1Dq6L,EAAW,CACXv1L,EAAG,EACHC,EAAG,GAEP,IAAK43I,GAAoB38I,IAAMo6L,EAAcjvK,KAAO,IAAK,CACrD,IAAI6sD,EAAQ8kE,GAAW/lJ,KAAKmjM,gBAAiBnjM,KAAKijM,gBAC9CM,EAAqBX,EAAiB3hH,EAAM7sD,KAChDkvK,EAAW,CACPv1L,EAAGkzE,EAAMlzE,EAAIw1L,EACbv1L,EAAGizE,EAAMjzE,EAAIu1L,EAEpB,CACDvjM,KAAKgoJ,WAAWs5C,GAAkBr4L,EAAG,CACjCq6L,SAAUA,GAEjB,EACD74C,MAAO,SAASxhJ,GACZjJ,KAAKgoJ,WAAWu5C,GAAmBt4L,EACtC,EACD+3C,OAAQ,SAAS/3C,GACbjJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKgoJ,WAAWw5C,GAAqBv4L,EACxC,EACDsjC,QAAS,WACLvsC,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK6iM,eAAet2J,UACpBvsC,KAAK8iM,aAAav2J,SACrB,EACD+8G,gBAAiB,WACb,IAAItpJ,KAAKJ,SAGT,OAAOI,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UACpC,EACD6wI,oBAAqB,WACjB,IAAI3oJ,KAAKJ,SAGT,OAAOI,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UACpC,EAER,CAnG0C,IAoG3C2+I,GAAgB,CACZ7F,QAAS+xC,GACT54J,OAAQ,CAACo3J,GAAmBC,GAAoBC,GAAmBC,GAAkBC,GAAmBC,MAE5G,OACUL,GADV,GAEWC,GAFX,GAGUC,GAHV,GAISC,GAJT,GAKUC,GALV,GAMYC,GANZ,GAOYN,GCpPL,SAASsC,GAAiBhlM,GAC7B,OAAO,SAACgO,EAAS1L,EAAS4/D,EAAWS,GACjC,IAAIpgE,EAAQogE,EAAYqiF,GAAahlJ,EAAW2iE,GAAa3iE,EAC7D,GAAIsC,EAEA,OADAy9D,EAAAA,EAAAA,GAAgB/xD,EAASzL,EAAO2/D,EAAW5/D,GACpC,WACHy9D,EAAAA,EAAAA,IAAiB/xD,EAASzL,EAAOD,EACpC,CAGR,CACJ,CACkC0iM,GAAiBC,IAChBD,GAAiBE,IACbF,GAAiBE,IACdF,GAAiBE,IAClBF,GAAiBE,IAClBF,GAAiBE,IAChBF,GAAiBE,IACfF,GAAiBE,IAPtD,IAQIC,GAAgCH,GAAiB3oI,GAAAA,MAMjD+oI,IAL8BJ,GAAiB3oI,GAAAA,IACf2oI,GAAiB3oI,GAAAA,MACpB2oI,GAAiB,cACjBA,GAAiB,cACpBA,GAAiB,WAChBA,GAAiB,aAC5CK,GAA6BL,GAAiB,cAC9CM,GAA+BN,GAAiB,gBAChDO,GAA6BP,GAAiB,cAC9CQ,GAA4BR,GAAiB,WAC7CS,GAA6BT,GAAiB,YCtC9CU,GAAkB,CACzB/rL,UAAW,GACXgsL,oBAAoB,EACpB3+K,UAAU,EACV24B,mBAAmB,EACnBimJ,mBAAmB,EACnB5jJ,SAAU,EACVK,SAAS,GCJFwjJ,GAAgB1zL,QAAc,GCDrCyU,GAAY,CAAC,WAAY,cAShBk/K,GAAb,0CACI,WAAYx5L,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,8CAMI,WACI,OAAOjoL,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKmmD,SAAV,WACVk+I,GAActmL,GAAK/d,KAAKD,QAAUskM,GAAcjmK,cAExD,GAVL,kBAWI,WAAa,WACT,YAAI,IAAWp+B,KAAKghM,cAAcjhM,OACvBC,KAAKghM,cAAcjhM,OAEvBC,KAAKghM,cAAcjhM,OAAiB,CACvCigD,WAAY,EAAKl1C,MAAMk1C,WAE9B,GAlBL,0BAmBI,WACI,IAAIq+I,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAvBL,iCAwBI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAMk1C,aAAew6H,EAAUx6H,aACpChgD,KAAKghM,cAAcjhM,YAAS,EAEnC,GA5BL,oBA6BI,WACI,IAAI+K,EAAQ9K,KAAK8K,MACjB,MAAoB,CAChBA,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB/K,OAAQC,KAAKD,OACb2+L,eAAgB1+L,KAAK0+L,gBApCgB5zL,MAAMC,QAsClD,KApCL,GAAoCyhL,IAsCpC8X,GAAe3rL,aAvCkB,CAAC,ECRlC,IAAIyM,GAAY,CAAC,uBAAwB,uBAAwB,YAAa,qBAAsB,kBAAmB,iBAAkB,OAAQ,WAAY,YAAa,UAAW,UAAW,WAAY,oBAAqB,SAAU,OAAQ,oBAAqB,OAAQ,WAAY,UAAW,qBAAsB,YAAa,aAAc,aAAc,eAAgB,aAAc,YAAa,wBAAyB,qBAAsB,iBAAkB,aAAc,WAAY,UAAW,SA+E5em/K,GAAcvmM,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BN,IAAkBlmM,OAAOwmM,0BAA0B,CAClJC,qBAtBgC,IAuBhCC,qBAtBgC,GAuBhCz9I,QAAS,GACT+wI,KAAMh6L,OAAO8iM,OAAO,CAAC,GACrBnvK,QAAS,GACTv4B,KAAM,GACNurM,gBAAgB,MAQPC,GAAb,0CACI,WAAY95L,GAAO,6BACf,cAAMA,IACD+5L,iBhC6vBF,CACHprL,QAAS,MgC7vBT,EAAKivB,MAAQ,CACT5iB,QAAQ,EACR+hB,SAAS,EACTi9J,SAAS,GAEb,EAAKC,kBAAoB,EAAKA,kBAAkBjoM,MAAvB,YACzB,EAAKkoM,aAAe,EAAKA,aAAaloM,MAAlB,YACpB,EAAKmoM,eAAiB,EAAKA,eAAenoM,MAApB,YACtB,EAAKooM,YAAc,EAAKA,YAAYpoM,MAAjB,YACnB,EAAKupB,MAAQ,EAAKA,MAAMvpB,MAAX,YACb,EAAK07E,KAAO,EAAKA,KAAK17E,MAAV,YACZ,EAAKyxJ,SAAW,EAAKA,SAASzxJ,MAAd,YAChB,EAAKk9L,WAAa,EAAKA,WAAWl9L,MAAhB,YAClB,EAAKqoM,cAAgB,EAAKA,cAAcroM,MAAnB,YACrB,EAAKsoM,eAAiB,EAAKA,eAAetoM,MAApB,YACtB,EAAKuoM,iBAAmB,EAAKA,iBAAiBvoM,MAAtB,YACxB,EAAKwoM,eAAiB,EAAKA,eAAexoM,MAApB,YACtB,EAAKyoM,eAAiB,EAAKA,eAAezoM,MAApB,YACtB,EAAK0oM,aAAe,EAAKA,aAAa1oM,MAAlB,YACpB,EAAK2oM,mBAAqB,EAAKA,mBAAmB3oM,MAAxB,YAC1B,EAAK4oM,iBAAmB,EAAKA,iBAAiB5oM,MAAtB,YACxB,EAAK6oM,iBAAmB,EAAKA,iBAAiB7oM,MAAtB,YACxB,EAAK8oM,mBAAqB,EAAKA,mBAAmB9oM,MAAxB,YAzBX,CA0BlB,CA3BL,mCA4BI,WACI,OAAIkD,KAAKmmD,QAAQk+I,GAActmL,IACpB/d,KAAKmmD,QAAQk+I,GAActmL,IAE/BsmL,GAAcjmK,YACxB,GAjCL,2BAkCI,WACI,MAAO,CAAC,IAAIuvJ,GAAc3tL,KAAK+kM,kBAAmB,IAAK,IAAIpX,GAAc3tL,KAAKglM,aAAc,CAAChlM,KAAK8K,MAAM45L,qBAAsB1kM,KAAK8K,MAAMq5L,mBAAoBnkM,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAMg7L,WAAY,IAAInY,GAAc3tL,KAAKilM,eAAgB,CAACjlM,KAAK8K,MAAM25L,qBAAsBzkM,KAAK8K,MAAMq5L,mBAAoBnkM,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAMi7L,WAAY/lM,KAAK0oC,MAAM5iB,SAAU,IAAI6nK,GAAc3tL,KAAKklM,YAAa,CAACllM,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAMwyK,UAAW,IAAIqQ,GAAc3tL,KAAKmlM,cAAe,CAACnlM,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAMqzC,kBAAmBn+C,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAM0yK,YAAa,IAAImQ,GAAc3tL,KAAKolM,eAAgB,CAACplM,KAAK8K,MAAMqzC,kBAAmBn+C,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAM2yK,WAAYz9K,KAAK0oC,MAAMb,UAAW,IAAI8lJ,GAAc3tL,KAAKqlM,iBAAkB,CAACrlM,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAMs5L,kBAAmBpkM,KAAK8K,MAAMk7L,aAAchmM,KAAK0oC,MAAM5iB,SAAU,IAAI6nK,GAAc3tL,KAAKslM,eAAgB,CAACtlM,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAMs5L,kBAAmBpkM,KAAK8K,MAAMm7L,WAAYjmM,KAAK0oC,MAAMo8J,UAAW,IAAInX,GAAc3tL,KAAKulM,eAAgB,CAACvlM,KAAK8K,MAAMqzC,kBAAmBn+C,KAAK8K,MAAM4yK,YAAa,IAAIiQ,GAAc3tL,KAAKwlM,aAAc,CAACxlM,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAMo7L,qBAAsB,IAAIvY,GAAc3tL,KAAKylM,mBAAoB,CAACzlM,KAAK8K,MAAMo7L,qBAAsB,IAAIvY,GAAc3tL,KAAK0lM,iBAAkB,CAAC1lM,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAMq7L,qBAAsB,IAAIxY,GAAc3tL,KAAK2lM,iBAAkB,CAAC3lM,KAAK8K,MAAM0hB,OAAQxsB,KAAK8K,MAAM6lB,QAAS,IAAIg9J,GAAc3tL,KAAK4lM,mBAAoB,CAAC5lM,KAAK8K,MAAMm8C,UAAW+mI,KACxiD,GApCL,2BAqCI,WACI,IAAIoY,EAAiBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAkBC,EAAmBC,EAAmBC,EAAmBC,EAC9N,QAAUZ,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAM45L,qBAAsB1kM,KAAK8K,MAAMq5L,mBAAoBnkM,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAMg7L,WAC3O,QAAUO,EAAmBrmM,KAAK2sL,SAAS,UAAO,IAAW0Z,GAA4BA,EAAiBr6J,OAAO,CAAChsC,KAAK8K,MAAM25L,qBAAsBzkM,KAAK8K,MAAMq5L,mBAAoBnkM,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAMi7L,WAAY/lM,KAAK0oC,MAAM5iB,SAChP,QAAUwgL,EAAmBtmM,KAAK2sL,SAAS,UAAO,IAAW2Z,GAA4BA,EAAiBt6J,OAAO,CAAChsC,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAMwyK,UACnK,QAAUipB,EAAmBvmM,KAAK2sL,SAAS,UAAO,IAAW4Z,GAA4BA,EAAiBv6J,OAAO,CAAChsC,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAMqzC,kBAAmBn+C,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAM0yK,YACjM,QAAUgpB,EAAmBxmM,KAAK2sL,SAAS,UAAO,IAAW6Z,GAA4BA,EAAiBx6J,OAAO,CAAChsC,KAAK8K,MAAMqzC,kBAAmBn+C,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAM2yK,WAAYz9K,KAAK0oC,MAAMb,UACnM,QAAU4+J,EAAmBzmM,KAAK2sL,SAAS,UAAO,IAAW8Z,GAA4BA,EAAiBz6J,OAAO,CAAChsC,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAM0a,SAAUxlB,KAAK8K,MAAMs5L,kBAAmBpkM,KAAK8K,MAAMk7L,aAAchmM,KAAK0oC,MAAM5iB,SACrO,QAAU4gL,EAAmB1mM,KAAK2sL,SAAS,UAAO,IAAW+Z,GAA4BA,EAAiB16J,OAAO,CAAChsC,KAAK8K,MAAM+6L,gBAAiB7lM,KAAK8K,MAAMs5L,kBAAmBpkM,KAAK8K,MAAMm7L,WAAYjmM,KAAK0oC,MAAMo8J,UAC9M,QAAU6B,EAAmB3mM,KAAK2sL,SAAS,UAAO,IAAWga,GAA4BA,EAAiB36J,OAAO,CAAChsC,KAAK8K,MAAMqzC,kBAAmBn+C,KAAK8K,MAAM4yK,YAC3J,QAAUkpB,EAAmB5mM,KAAK2sL,SAAS,UAAO,IAAWia,GAA4BA,EAAiB56J,OAAO,CAAChsC,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAMo7L,qBAC9I,QAAUW,EAAoB7mM,KAAK2sL,SAAS,WAAQ,IAAWka,GAA6BA,EAAkB76J,OAAO,CAAChsC,KAAK8K,MAAMo7L,qBACjI,QAAUY,EAAoB9mM,KAAK2sL,SAAS,WAAQ,IAAWma,GAA6BA,EAAkB96J,OAAO,CAAChsC,KAAK8K,MAAM1R,KAAM4G,KAAK8K,MAAMq7L,qBAClJ,QAAUY,EAAoB/mM,KAAK2sL,SAAS,WAAQ,IAAWoa,GAA6BA,EAAkB/6J,OAAO,CAAChsC,KAAK8K,MAAM0hB,OAAQxsB,KAAK8K,MAAM6lB,QACpJ,QAAUq2K,EAAoBhnM,KAAK2sL,SAAS,WAAQ,IAAWqa,GAA6BA,EAAkBh7J,OAAO,CAAChsC,KAAK8K,MAAMm8C,SACpI,GApDL,+BAqDI,WACI,IAAI,EAGAjnD,KAAK8K,MAFkBm8L,EAD3B,EACIA,sBACgBC,EAFpB,EAEIA,eAEAA,IACAA,EAAeztL,QAAUzZ,KAAK6kM,iBAAiBprL,SAEnD,OAASwtL,QAAyB,IAAWA,GAAiCA,EAAsBjnM,KAAK6kM,iBAAiBprL,QAC7H,GA9DL,0BA+DI,WAAe,WACP,EAMAzZ,KAAK8K,MALiB45L,EAD1B,EACIA,qBACoBP,EAFxB,EAEIA,mBACiB0B,EAHrB,EAGIA,gBACUrgL,EAJd,EAIIA,SACUsgL,EALd,EAKIA,SAEA51L,EAAW21L,EACf,GAAI1B,IACK3+K,EACD,OAAOo+K,GAAyB5jM,KAAK6kM,iBAAiBprL,SAAS,SAAA1Y,GAC3D,EAAK24C,UAAS,SAAAytJ,GAAgB,MAAK,CAC/BrhL,QAAQ,EADkB,IAG9B,OAASggL,QAAY,IAAWA,GAAoBA,EAAS/kM,EAChE,GAAE,CACCgmC,QAAS29J,EACTx0L,SAAUA,GACX,aAId,GAtFL,4BAuFI,WAAiB,WACT,EAKAlQ,KAAK8K,MAJiB25L,EAD1B,EACIA,qBACoBN,EAFxB,EAEIA,mBACiB0B,EAHrB,EAGIA,gBACYE,EAJhB,EAIIA,WAEA71L,EAAW21L,EACf,GAAI1B,EACA,OAAON,GAA2B7jM,KAAK6kM,iBAAiBprL,SAAS,SAAA1Y,GACzD,EAAK2nC,MAAM5iB,SACX,EAAK4zB,UAAS,SAAAytJ,GAAgB,MAAK,CAC/BrhL,QAAQ,EADkB,IAG9B,OAASigL,QAAc,IAAWA,GAAsBA,EAAWhlM,GAE1E,GAAE,CACCgmC,QAAS09J,EACTv0L,SAAUA,GACX,aAGV,GA7GL,yBA8GI,WAAc,WACN,EAIAlQ,KAAK8K,MAHK0a,EADd,EACIA,SACMpsB,EAFV,EAEIA,KACSkkL,EAHb,EAGIA,QAEAn8G,EAAY/nE,EAChB,GAAIkkL,IAAY93J,EAIZ,OAHAyhJ,GAAWjnK,KAAK6kM,iBAAiBprL,QAAS6jK,EAAS,CAC/Cn8G,UAAWA,IAER,kBAAM8lG,GAAY,EAAK49B,iBAAiBprL,QAAS,CACpD0nD,UAAWA,GADR,CAKd,GA9HL,2BA+HI,WAAgB,WACR,EAKAnhE,KAAK8K,MAJK0a,EADd,EACIA,SACmB24B,EAFvB,EAEIA,kBACM/kD,EAHV,EAGIA,KACWokL,EAJf,EAIIA,UAEAr8G,EAAY,GAAGlxD,OAAO7W,EAAM,SAChC,GAAI+kD,IACK34B,EACD,OAAOw+K,GAA0BhkM,KAAK6kM,iBAAiBprL,SAAS,SAAA1Y,GACvDA,EAAMkiE,uBACP,EAAKvpB,UAAS,SAAAytJ,GAAgB,MAAK,CAC/Bt/J,SAAS,EADiB,IAG9B,OAAS21I,QAAa,IAAWA,GAAqBA,EAAUz8K,GAEvE,GAAE,KAAMogE,EAIpB,GApJL,4BAqJI,WAAiB,WACT,EAIAnhE,KAAK8K,MAHcqzC,EADvB,EACIA,kBACM/kD,EAFV,EAEIA,KACYqkL,EAHhB,EAGIA,WAEAt8G,EAAY,GAAGlxD,OAAO7W,EAAM,SAChC,GAAI+kD,EACA,OAAO8lJ,GAA2BjkM,KAAK6kM,iBAAiBprL,SAAS,SAAA1Y,IACxDA,EAAMkiE,sBAAwB,EAAKv6B,MAAMb,UAC1C,EAAK6R,UAAS,SAAAytJ,GAAgB,MAAK,CAC/Bt/J,SAAS,EADiB,IAG9B,OAAS41I,QAAc,IAAWA,GAAsBA,EAAW18K,GAE1E,GAAE,KAAMogE,EAGhB,GAvKL,8BAwKI,WAAmB,WACX,EAKAnhE,KAAK8K,MAJY+6L,EADrB,EACIA,gBACUrgL,EAFd,EAEIA,SACmB4+K,EAHvB,EAGIA,kBACc4B,EAJlB,EAIIA,aAEA91L,EAAW21L,EACf,GAAIzB,IACK5+K,EACD,OAAOs+K,GAA6B9jM,KAAK6kM,iBAAiBprL,SAAS,SAAA1Y,IAC9D,EAAK2nC,MAAM5iB,QAAU,EAAK4zB,UAAS,SAAAytJ,GAAgB,MAAK,CACrDrC,SAAS,EADuC,IAGpD,OAASkB,QAAgB,IAAWA,GAAwBA,EAAajlM,EAC5E,GAAE,CACCmP,SAAUA,GACX,aAId,GA7LL,4BA8LI,WAAiB,WACT,EAIAlQ,KAAK8K,MAHY+6L,EADrB,EACIA,gBACmBzB,EAFvB,EAEIA,kBACY6B,EAHhB,EAGIA,WAEA/1L,EAAW21L,EACf,GAAIzB,EACA,OAAOL,GAA2B/jM,KAAK6kM,iBAAiBprL,SAAS,SAAA1Y,GACzD,EAAK2nC,MAAMo8J,UACX,EAAKprJ,UAAS,SAAAytJ,GAAgB,MAAK,CAC/BrC,SAAS,EADiB,IAG9B,OAASmB,QAAc,IAAWA,GAAsBA,EAAWllM,GAE1E,GAAE,CACCmP,SAAUA,GACX,aAGV,GAlNL,4BAmNI,WACI,IAAI,EAGAlQ,KAAK8K,MAFcqzC,EADvB,EACIA,kBACWu/H,EAFf,EAEIA,UAEJ,GAAIv/H,GAAqBu/H,EAAW,CAChC,IAAI3/J,EAAKmnI,GAAYllJ,KAAK6kM,iBAAiBprL,QAASzZ,KAAK6kM,iBAAiBprL,SAAS,SAAAxQ,GAAC,OAAIy0K,EAAUz0K,EAAd,IACpF,OAAO,kBAAMi8I,GAAannI,EAAnB,CACV,CAEJ,GA7NL,0BA8NI,WAAe,WACPojD,EAAY,GAAGlxD,OAAOjQ,KAAK8K,MAAM1R,KAAM,oBAEnB8sM,EACpBlmM,KAAK8K,MADLo7L,mBAEJ,GAAIA,EAIA,OAHAv/B,GAAU3mK,KAAK6kM,iBAAiBprL,QAASysL,EAAoB,CACzD/kI,UAAWA,IAER,kBAAMwlG,GAAW,EAAKk+B,iBAAiBprL,QAAS,CACnD0nD,UAAWA,GADR,CAKd,GA5OL,gCA6OI,WACI,IACwB+kI,EACpBlmM,KAAK8K,MADLo7L,mBAEJ,GAAIA,EAEA,OADA/zH,GAAAA,IAAoB+zH,GACb,WACH/zH,GAAAA,OAAuB+zH,EAC1B,CAGR,GAxPL,8BAyPI,WAAmB,WACX,EAGAlmM,KAAK8K,MAFC1R,EADV,EACIA,KACoB+sM,EAFxB,EAEIA,mBAEAhlI,EAAY,GAAGlxD,OAAO7W,EAAM,oBAChC,GAAI+sM,EAIA,OAHA5iK,GAAcvjC,KAAK6kM,iBAAiBprL,SAAS,kBAAM0sL,GAAmB,EAAzB,IAAgC,kBAAMA,GAAmB,EAAzB,GAAiC,CAC1GhlI,UAAWA,IAER,kBAAM59B,GAAe,EAAKshK,iBAAiBprL,QAAS,CACvD0nD,UAAWA,GADR,CAKd,GAxQL,8BAyQI,WACI,IAAI,EAGAnhE,KAAK8K,MAFG0hB,EADZ,EACIA,OACOmE,EAFX,EAEIA,OAEAk+B,EAAAA,EAAAA,IAAWl+B,IACXrR,GAAAA,EAAAA,IAAW,QAAS,UAEpBuvC,EAAAA,EAAAA,IAAWriC,IACXlN,GAAAA,EAAAA,IAAW,QAAS,SAE3B,GApRL,gCAqRI,WACI,IACa2nC,EACTjnD,KAAK8K,MADLm8C,QAEA,KAAOA,IACPjnD,KAAK6kM,iBAAiBprL,QAAQqd,MAAMmwB,QAAUA,EAErD,GA5RL,sCA6RI,WAII,OCpXD,SAAqCmgJ,EAASrnM,GACjD,IAAIsnM,GAAgBh5I,EAAAA,EAAAA,IAAU+4I,GAC1BE,GAAoBj5I,EAAAA,EAAAA,KAAUk5I,EAAAA,GAAAA,KAAevnJ,cAAgBqnJ,KAAkBh5I,EAAAA,EAAAA,IAAU,OAAStuD,QAAU,IAAWA,OAAS,EAASA,EAAOigD,YACpJ,OAAOqnJ,GAAiBD,KAAa,OAASrnM,QAAU,IAAWA,OAAS,EAASA,EAAOigD,aAAesnJ,CAC9G,CDgXcE,CADHxnM,KAAK8K,MADLk1C,WAE2ChgD,KAAKD,OACvD,GAlSL,sBAmSI,WAII,OCnYD,SAA2BqnM,EAASrnM,GACvC,YAAI,IAAWqnM,EACJA,OAEP,KAAY,OAASrnM,QAAU,IAAWA,OAAS,EAASA,EAAOigD,YAC5DjgD,EAAOigD,YAEXunJ,EAAAA,GAAAA,KAAevnJ,UACzB,CD2XcynJ,CADHznM,KAAK8K,MADLk1C,WAEiChgD,KAAKD,OAC7C,GAxSL,sBAySI,WACI,IA5UMnC,EA4UF,EAKAoC,KAAK8K,MAJCktL,EADV,EACIA,KACUxyK,EAFd,EAEIA,SACmB24B,EAHvB,EAGIA,kBACS0C,EAJb,EAIIA,QAEA5D,EAAYkB,IAAsB34B,GAAYxlB,KAAK8K,MAAMmyC,UAC7D,OAAOlkC,EAAAA,EAAAA,GAAS,CAAC,GAAG0sC,EAAAA,GAAAA,GAAO,CAAC,EAAGxI,GAAa,CACxCA,UAAWA,KApVTr/C,GAqVMmb,EAAAA,EAAAA,GAAS,CAAC,EAAGi/K,EAAM,CAC3BxyK,SAAUA,EACVkiL,QAAS7mJ,IAvVC7iD,OAAOgB,KAAKpB,GAAMuG,QAAO,SAACkgB,EAAG/hB,GAC/C,OAAI1E,EAAK0E,IACEyW,EAAAA,EAAAA,GAAS,CAAC,EAAGsL,GAAL,WACV,SAAW/hB,GAAO,OAASA,EAAMA,EAAM,QAAQ2N,OAAO3N,GAAOmH,OAAO7L,EAAK0E,MAG3E+hB,CACV,GAAE,CAAC,KAiVSohC,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAK0+L,gBACxB,GAvTL,kBAwTI,WACI,IAAI,EAGA1+L,KAAK8K,MAFG0hB,EADZ,EACIA,OACOmE,EAFX,EAEIA,MAEAmG,EAAQ92B,KAAK0+L,eAAe5nK,OAAS,CAAC,EACtC6wK,EAAgBhhI,EAAmB,SAAS9X,EAAAA,EAAAA,IAAWl+B,GAASA,IAAUA,GAC1Ei3K,EAAiBjhI,EAAmB,UAAU9X,EAAAA,EAAAA,IAAWriC,GAAUA,IAAWA,GAClF,OAAOzT,EAAAA,EAAAA,GAAS,CAAC,EAAG+d,EAAO,CACvBtK,OAAQ,OAASo7K,QAAkB,IAAWA,EAAiBA,EAAiB9wK,EAAMtK,OACtFmE,MAAO,OAASg3K,QAAiB,IAAWA,EAAgBA,EAAgB7wK,EAAMnG,OAEzF,GApUL,sBAqUI,WAAiB,MACT,EAUA3wB,KAAK8K,MATeq5L,EADxB,EACIA,mBACgBQ,EAFpB,EAEIA,eACWxsL,EAHf,EAGIA,UACSwZ,EAJb,EAIIA,QACUnM,EALd,EAKIA,SACmB24B,EANvB,EAMIA,kBACmBimJ,EAPvB,EAOIA,kBACoB+B,EARxB,EAQIA,mBACStlJ,EATb,EASIA,QAEAgnJ,IAAgB1pJ,IAAsB34B,EACtCsiL,IAAgB1D,IAAsB5+K,EACtCuiL,IAAgB5D,IAAuB3+K,EAa3C,OAAOg3H,IAZO,GACV,cAAemoD,IADL,UAETl7L,OAAOkoB,KAAaA,IAFX,UAGTloB,OAAO0O,KAAeA,IAHb,UAIV,sBAAuBqN,IAJb,UAKV,sBAAuBq7B,IALb,UAMV,qBAAsB7gD,KAAK0oC,MAAMb,SAAWggK,IANlC,UAOV,oBAAqB7nM,KAAK0oC,MAAM5iB,QAAUiiL,IAPhC,UAQV,mBAAoB/nM,KAAK0oC,MAAMo8J,SAAWgD,IAAgB9nM,KAAK0oC,MAAM5iB,SAR3D,UASV,WAAY9lB,KAAKggD,aATP,UAUV,iCAAkCmmJ,GAVxB,GAajB,GAjWL,oBAkWI,WACI,IAAI,EAIAnmM,KAAK8K,MAHK0a,EADd,EACIA,SACmB24B,EAFvB,EAEIA,kBACUqC,EAHd,EAGIA,SAGJ,OADkBrC,IAAsB34B,EACnBg7B,OAAW,CACnC,GA1WL,0BA2WI,WACI,IAAI69I,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GA/WL,mBAgXI,WACIiB,GAAcrmB,KAAK6kM,iBAAiBprL,QACvC,GAlXL,kBAmXI,WACI,IAAImuC,EAAgBiV,EAAAA,EAAAA,iBAA4B78D,KAAK6kM,iBAAiBprL,SAClEzZ,KAAK6kM,iBAAiBprL,UAAYmuC,GAClCA,EAAc4wB,MAErB,GAxXL,sBAyXI,WACIx4E,KAAK05C,UAAS,SAAAytJ,GAAgB,MAAK,CAC/BrhL,QAAQ,EADkB,GAGjC,GA7XL,wBA8XI,WACI9lB,KAAK05C,UAAS,SAAAytJ,GAAgB,MAAK,CAC/BrhL,QAAQ,EADkB,GAGjC,GAlYL,oBAmYI,WACI,IAAIhb,EAAQ9K,KAAK8K,MACjB,OA/ZkB,SAAAk9L,GACtB,IAAIhlC,EAAS7oH,GAAeygI,GAAY,EAAG,MAAOotB,EAAUC,WAAYD,EAAUl9L,MAAMC,SAAU,GAAGgO,EAAAA,EAAAA,GAAS,CAAC,EAAGivL,EAAUp/B,WAAY,CACpIpoH,SAAUwnJ,EAAUxnJ,SACpBkvE,MAAOs4E,EAAUl9L,MAAMwzC,KACvBxnB,MAAOi5J,GAAgBiY,EAAU33L,UACjC,KAAM23L,EAAUnD,mBACpB,OAAOmD,EAAUE,2BAA6BzsB,GAAqB,EAAG6oB,GAAgB,CAClFtkJ,WAAYgoJ,EAAUhoJ,WACtBj1C,SAAUi4J,IACTA,CACR,CAqZcy7B,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBgb,OAAQ9lB,KAAK0oC,MAAM5iB,OACnB+hB,QAAS7nC,KAAK0oC,MAAMb,QACpBi9J,QAAS9kM,KAAK0oC,MAAMo8J,QACpBD,iBAAkB7kM,KAAK6kM,iBACvB9kM,OAAQC,KAAKD,OACbmoM,2BAA4BloM,KAAKkoM,2BACjCloJ,WAAYhgD,KAAKggD,WACjB4oH,WAAY5oK,KAAK4oK,WACjBv4J,OAAQrQ,KAAKqQ,OACb43L,WAAYjoM,KAAKioM,WACjBznJ,SAAUxgD,KAAKwgD,SACfk+I,eAAgB1+L,KAAK0+L,gBAE5B,KApZL,GAA4B3R,IAsZ5B6X,GAAOjsL,aAAe4rL,GEpftB,IAAIn/K,GAAY,CAAC,YAAa,qBAAsB,WAAY,YAAa,WAAY,oBAAqB,SAAU,OAAQ,oBAAqB,OAAQ,eAAgB,eAAgB,UAAW,YAAa,WAAY,UAAW,aAAc,cAAe,WAAY,WAAY,eAAgB,OAAQ,OAAQ,eAAgB,oBAAqB,UAAW,SA6C7W+iL,GAAe,CAAC,WAAY,OAAQ,aAiE7BC,GAAcpqM,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BN,IAAkBlmM,OAAOwmM,0BAA0B,CAClJL,oBAAoB,EACpBC,mBAAmB,EACnB39K,KAAM,GACN4hL,aAAc,OACdC,YAAa,YACb3hM,KAAM,GACNtB,KAAM,SACNkjM,cAAc,EACdC,mBAAmB,EACnB/N,aAAcz8L,OAAO8iM,OAAO,CAAC,OAEtB2H,GlDlF2B,WAClC,IAAIrrM,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GAC/E,OAAO1a,CACV,CkD+E+BsrM,CAAyB,CAAC,CACtDhyH,OAAQ,iBAAM,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aAAlD,EACR56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,kBAAMwmH,GAAWzjL,KAAjB,EACRrc,QAAS,CACLmrM,cAAc,MASlBv9B,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjBqK,GAAb,0CACI,WAAY79L,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKkgK,WlC8sBF,CACHnvL,QAAS,MkC9sBT,EAAKovL,alC6sBF,CACHpvL,QAAS,MkC7sBT,EAAKqvL,elC4sBF,CACHrvL,QAAS,MkC5sBT,EAAKsvL,UlC2sBF,CACHtvL,QAAS,MkC3sBT,EAAKunL,cAAgB,CAAC,EACtB,EAAK36K,MAAQ,EAAKA,MAAMvpB,MAAX,YACb,EAAKyxJ,SAAW,EAAKA,SAASzxJ,MAAd,YAChB,EAAKk9L,WAAa,EAAKA,WAAWl9L,MAAhB,YAClB,EAAKksM,aAAe,EAAKA,aAAalsM,MAAlB,YACpB,EAAK6oM,iBAAmB,EAAKA,iBAAiB7oM,MAAtB,YACxB,EAAKgpM,SAAW,EAAKA,SAAShpM,MAAd,YAChB,EAAKipM,WAAa,EAAKA,WAAWjpM,MAAhB,YAClB,EAAKmsM,cAAgB,EAAKA,cAAcnsM,MAAnB,YACrB,EAAKi4L,QAAU,EAAKA,QAAQj4L,MAAb,YAhBA,CAiBlB,CAlBL,4CAmBI,WACI,MAAO,CAAC,IAAI6wL,GAAc3tL,KAAKgpM,aAAc,CAAChpM,KAAK8K,MAAMo+L,SAAUlpM,KAAK8K,MAAM09L,oBAAqB,IAAI7a,GAAc3tL,KAAK2lM,iBAAkB,CAAC3lM,KAAK8K,MAAMzF,OAAQ2oL,KACnK,GArBL,2BAsBI,WACI,IAAIoY,EAAiBC,EACrB,QAAUD,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMo+L,SAAUlpM,KAAK8K,MAAM09L,oBAC/I,QAAUnC,EAAmBrmM,KAAK2sL,SAAS,UAAO,IAAW0Z,GAA4BA,EAAiBr6J,OAAO,CAAChsC,KAAK8K,MAAMzF,MAChI,GA1BL,0BA2BI,WAAe,WACP,EAGArF,KAAK8K,MAFKo+L,EADd,EACIA,SAGJ,GAJA,EAEIV,mBAEqBU,EAOrB,OANAhiC,GAASlnK,KAAK8oM,eAAervL,SAAS,SAAA1Y,GAAK,OAAImoM,EAAS,CACpDnoM,MAAOA,EACPm5L,YAAa,EAAK4O,eAAervL,SAFM,GAGvC,CACA0nD,UAAW,eAER,kBAAM+lG,GAAU,EAAK4hC,eAAervL,QAAS,CAChD0nD,UAAW,cADR,CAKd,GA5CL,8BA6CI,WAIQ,SADAnhE,KAAK8K,MADLzF,MAGAia,GAAAA,EAAAA,IAAW,QAAS,OAAQ,OAAQ,OAAQ,8BAEnD,GApDL,sBAqDI,SAASve,GAGDf,KAAK8K,MADLy9L,cAEYvoM,KAAK6oM,aAAapvL,QAAQ6lL,SAAS,CAC/C9yL,QAASxM,KAAK4oM,WAAWnvL,QACzB1Y,MAAOA,GAEd,GA7DL,wBA8DI,SAAWA,GAGHf,KAAK8K,MADLy9L,cAEYvoM,KAAK6oM,aAAapvL,QAAQ8lL,SAAS,CAC/C/yL,QAASxM,KAAK4oM,WAAWnvL,QACzB1Y,MAAOA,GAEd,GAtEL,2BAuEI,SAAcA,GACV,IAAI,EAGAf,KAAK8K,MAFIwyK,EADb,EACIA,QACmBkrB,EAFvB,EAEIA,kBAEJ,OAASlrB,QAAW,IAAWA,GAAmBA,EAAQ,CACtDv8K,MAAOA,IAEXynM,GAAqBxoM,KAAK8oM,eAAervL,QAAQytJ,OACpD,GAhFL,qBAiFI,SAAQj+J,GACJ,IACey0K,EACX19K,KAAK8K,MADL4yK,UAGSpY,EAGTr8J,EAHAq8J,QACepjG,EAEfj5D,EAFAi5D,cACOG,EACPp5D,EADAo5D,MAEA7+D,EAAS,OAASk6K,QAAa,IAAWA,OAAY,EAASA,EAAUz0K,GAC7E,GAAI,OAASzF,QAAU,IAAWA,GAAUA,EAAOw9C,OAC/C,OAAOx9C,EAEP,UAAY8hK,GAAW,UAAYjjG,GAAS,UAAYijG,GAAW,UAAYjjG,IAC/EH,EAAc/F,iBACdn8D,KAAKipM,cAAc/mI,GAG1B,GAnGL,gBAoGI,WACI,IAAI,EAGAliE,KAAK8K,MAFC2b,EADV,EACIA,KACM9f,EAFV,EAEIA,KAEA+Q,EAAQ,OAAS/Q,QAAQ,IAAWA,EAAOA,EAAO,GACtD,IAAKA,GAAQ8f,EAET,OADiBgzK,GAAmBhzK,IAEhC,IAAK,QAED/O,GADqB+O,EAAKlhB,SAAS,WAAa,qDAAqD6Q,KAAKqQ,GAClFA,EAAK7kB,QAAQ,mBAAoB,MAAQ,GACjE,MACJ,IAAK,SACD8V,EAAQ0yG,GAAAA,OAA2BllD,EAASz+C,GAAM,KAAUA,EAC5D,MACJ,IAAK,WACD/O,EAAQ+O,EACR,MACJ,IAAK,MACD,IAAI0iL,EAAoBC,EAExB1xL,EADY,QAAUyxL,EAAqB,QAAUC,EAAoB,wBAAwBp6L,KAAKyX,UAAU,IAAW2iL,OAAoB,EAASA,EAAkB,UAAO,IAAWD,EAAqBA,EAAqB,GAIlP,OAAOpwL,EAAAA,EAAAA,GAAS,CACZmZ,KAAM,UACPxa,EAAQ,CACPA,MAAOA,GACP,CAAC,EACR,GAlIL,sBAmII,WACI,OAlOY,SAAA+9B,GAAS,MAEfhvB,EAKNgvB,EALAhvB,KACc4hL,EAId5yJ,EAJA4yJ,aACaC,EAGb7yJ,EAHA6yJ,YACM3hM,EAEN8uC,EAFA9uC,KACMtB,EACNowC,EADApwC,KAEAgkM,EAAqBf,GAAeH,GAAa5iM,SAAS+iM,GAS9D,OAAO9rD,IARO,GACV,aAAa,IADH,UAET,kBAAkBvsI,OAAOo5L,EAAqBf,EAAc,cAAe,IAFlE,UAGT,aAAar4L,OAAO,OAAS5K,QAAQ,IAAWA,EAAOA,EAAO,WAAY,IAHjE,UAIV,uBAAwBsB,IAJd,UAKV,uBAAwB8f,IALd,UAMV,uBAAwB,SAAW4hL,GANzB,GASjB,CAgNclL,CAAcn9L,KAAK8K,MAC7B,GArIL,sBAsII,WACI,IAAI,EAGA9K,KAAK8K,MAFC2b,EADV,EACIA,KACMphB,EAFV,EAEIA,KAEJ,OAAIohB,GAAQ,SAAWphB,GACX,OAASohB,QAAQ,IAAWA,EAAOA,EAAO,KAAO,OAEtD,EACV,GA/IL,2BAgJI,WAAsB,WAClB,YAAI,IAAWzmB,KAAKghM,cAAcsI,gBACvBtpM,KAAKghM,cAAcsI,gBAEvBtpM,KAAKghM,cAAcsI,gBAAmB,WACzC,IAAI,EAIA,EAAKx+L,MAHC2b,EADV,EACIA,KACM9f,EAFV,EAEIA,KACMtB,EAHV,EAGIA,KAEJ,OAAQsB,GAAQ8f,GAAQ,SAAWphB,EAAO,CACtC65L,YAAY,EACZF,kBAAkB,EAClBC,oBAAqB,GACrB,CAAC,CACR,CAX4C,EAYhD,GAhKL,8BAiKI,WACI,IAAI,EAIAj/L,KAAK8K,MAHC2b,EADV,EACIA,KACcg0K,EAFlB,EAEIA,aACM9zL,EAHV,EAGIA,KAEJ,OAAOoS,EAAAA,EAAAA,GAAS,CACZ0N,KAAMA,EACN9f,KAAMA,GACP8zL,EACN,GA3KL,0BA4KI,WACI,IAAI4D,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAhLL,mBAiLI,WACIplB,KAAK+oM,UAAUtvL,QAAQ4M,OAC1B,GAnLL,sBAoLI,WACIrmB,KAAK+oM,UAAUtvL,QAAQ80I,UAC1B,GAtLL,wBAuLI,WACIvuJ,KAAK+oM,UAAUtvL,QAAQugL,YAC1B,GAzLL,iCA0LI,SAAoBxf,EAAWsM,EAAW3gI,IACtC,mEACInmD,KAAK8K,MAAM2b,OAAS+zJ,EAAU/zJ,MAAQzmB,KAAK8K,MAAMnE,OAAS6zK,EAAU7zK,MAAQ3G,KAAK8K,MAAMzF,OAASm1K,EAAUn1K,OAC1GrF,KAAKghM,cAAcsI,qBAAkB,EAE5C,GA/LL,oBAgMI,WACI,IAAIx+L,EAAQ9K,KAAK8K,MACjB,OA7QkB,SAAAk9L,GACtB,IAAI,EAMAA,EAAUl9L,MALAC,EADd,EACIA,SACcs9L,EAFlB,EAEIA,aACc7J,EAHlB,EAGIzE,aACUwP,EAJd,EAII/pL,SACM7Y,EALV,EAKIA,KAEA6iM,GAAcxB,EAAUl9L,MAAM0U,WAAazU,GAAY,KAAOpE,EAC9D8iM,EAAa,SAAWpB,EACxBqB,GAAiB1B,EAAUl9L,MAAM0U,WAAazU,IAAai9L,EAAU2B,YAAc3B,EAAUl9L,MAAMivL,eAAiBte,GAAqB,EAAGyiB,GAAM,CAClJ32J,OAAQygK,EAAU2B,WAClBn/L,SAAU69L,EACVtO,aAAcyE,IAElB,OAAOrkJ,GAAeshI,GAAqB,EAAGmpB,IAAQ7rL,EAAAA,EAAAA,GAAS,CAC3DkkC,UAAW+qJ,EAAUl9L,MAAMmyC,UAC3BknJ,mBAAoB6D,EAAUl9L,MAAMq5L,mBACpCnM,KAAMgQ,EAAUhQ,KAChB7/K,UAAW6vL,EAAUl9L,MAAMqN,UAC3BwZ,QAASq2K,EAAUC,WACnBziL,SAAUwiL,EAAUl9L,MAAM0a,SAC1B24B,kBAAmB6pJ,EAAUl9L,MAAMqzC,kBACnC3xB,OAAQw7K,EAAUl9L,MAAM0hB,OACxB8xB,KAAM0pJ,EAAUl9L,MAAMwzC,KACtB8lJ,kBAAmB4D,EAAUl9L,MAAMs5L,kBACnC0B,SAAUkC,EAAUlC,SACpBxoB,QAAS0qB,EAAUiB,cACnBlD,WAAYiC,EAAUjC,WACtBroB,UAAWsqB,EAAUjT,QACrB/0I,WAAYgoJ,EAAUl9L,MAAMk1C,WAC5BQ,SAAUwnJ,EAAUl9L,MAAM01C,SAC1BK,QAASmnJ,EAAUl9L,MAAM+1C,QACzBlwB,MAAOq3K,EAAUl9L,MAAM6lB,OACxBq3K,EAAUtJ,eAAgB,CACzB3zL,SAAU6vK,GAAY,EAAG,MAAO,oBAAqB,CAACotB,EAAUl9L,MAAM0U,UAAY+pL,EAAe,CAC7FjvM,KAAM0tM,EAAU4B,sBACf5B,EAAUl9L,MAAM0U,UAAYzU,EAAU0+L,GAAcC,EAAeF,GAAc5uB,GAAY,EAAG,OAAQ,iBAAkBj0K,EAAM,IAAK8iM,GAAcC,EAAe1B,EAAUl9L,MAAM09L,mBAAqB5tB,GAAY,GAAI,QAAS,yBAA0B,KAAM,EAAG,CACpQv1K,KAAM,SACNm7C,UAAW,GACZ,KAAMwnJ,EAAUc,gBAAiBd,EAAUl9L,MAAMy9L,cAAgB9sB,GAAqB,EAAGslB,GAAW,CACnGhhM,OAAQioM,EAAUsB,iBACnB,KAAMtB,EAAUa,eAAgB,EAAG,KAAM,KAAMb,EAAUY,cAC5D,KAAMZ,EAAUe,WACvB,CAiOctK,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB0U,SAAUwrJ,GAAYlgK,EAAM0U,UAC5Bu6K,aAAc/uB,GAAYlgK,EAAMivL,gBAEpC6O,WAAY5oM,KAAK4oM,WACjBE,eAAgB9oM,KAAK8oM,eACrBD,aAAc7oM,KAAK6oM,aACnBE,UAAW/oM,KAAK+oM,UAChBjD,SAAU9lM,KAAK8lM,SACfC,WAAY/lM,KAAK+lM,WACjBkD,cAAejpM,KAAKipM,cACpBlU,QAAS/0L,KAAK+0L,QACdiD,KAAMh4L,KAAKg4L,KACXiQ,WAAYjoM,KAAKioM,WACjB0B,WAAY3pM,KAAK2pM,WACjBL,gBAAiBtpM,KAAKspM,gBACtBM,mBAAoB5pM,KAAK4pM,mBACzBlL,eAAgB1+L,KAAK0+L,gBAE5B,KAtNL,GAA4B3R,IAwN5B4b,GAAOhwL,aAAe3a,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0B4D,IAAcpqM,OAAOwmM,2BAA0BzrL,EAAAA,EAAAA,GAAS,CAAC,EAAG8gJ,GAAsB4uC,QAClL,IAAIoB,GAAuB,OCjWNlB,GAAAA,SAAAA,mIACjB,WACI,IAAI79L,GAAQ,wDAEZ,OADAA,EAAM4yK,UAAY19K,KAAK8pM,oBAAoBh/L,EAAM4yK,WAC1C5yK,CACV,sBACD,WAAQ,MACAi/L,EACJ,OAAO,QAAUA,EAAgB/pM,KAAK04L,eAAY,IAAWqR,OAAgB,GAAS,EAAAA,GAAc1jL,MAAd,QAAuBvO,UAChH,yBACD,WAAW,MACHkyL,EACJ,OAAO,QAAUA,EAAiBhqM,KAAK04L,eAAY,IAAWsR,OAAiB,GAAS,EAAAA,GAAez7C,SAAf,QAA2Bz2I,UACtH,2BACD,WAAa,MACLmyL,EACJ,OAAO,QAAUA,EAAiBjqM,KAAK04L,eAAY,IAAWuR,OAAiB,GAAS,EAAAA,GAAejQ,WAAf,QAA6BliL,UACxH,kCACD,WACI,MAAO,CACHwlK,QAAS,CACLv8B,kBAAmB,CAAC,aAExBmoD,SAAU,CAAC,EAElB,yBACD,WACI,MAAO,CACHxU,OAAQ,GACRD,UAAW,GACX9iI,SAAU,CAAC,YACXzkB,UAAW,CAAC,WAAY,gBACxBpiC,MAAO,CAAC,qBAAsB,oBAAqB,OAAQ,eAAgB,UAAW,WAAY,UAAW,cAAe,WAAY,eAAgB,OAAQ,OAAQ,eAAgB,oBAAqB,eAAgB,YAAa,YAAa,WAAY,oBAAqB,SAAU,OAAQ,YAAa,aAAc,WAAY,UAAW,SAEnW,6BACD,WACI,OAAOo/L,EACV,OArCgBvB,CAAewB,IAuCpC33B,GAAkB,WAAYm2B,IAC9BA,GAAOviF,eD0TA,SAAwBh+G,GAC3ByhM,GAAqBzpM,KAAKgI,GAC1BugM,GAAOhwL,aAAe3a,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BmE,GAAOhwL,cAAe3a,OAAOwmM,0BAA0B3qC,GAAsB4uC,KAAsBzqM,OAAOwmM,0BAA0B3qC,GAAsBgwC,MAC7P,EE1WD,UCEIO,GAA8B,oGAC9BC,GAA0B,CAC1BC,OAAQ,2BACRC,MAAO,wCACPC,KAAM,mCACN,UAAW,8BACX,WAAY,8BACZ,cAAe,kCAkCfh/K,GAAS,CAAC,EACHi/K,GAAsC,SAASC,GAEtD,IACIC,EADAC,GADJF,EAAsBL,GAAwBK,IAAwBA,GACrCz7L,MAAMm7L,IAElCQ,IAEDA,EAASP,GADTM,EAAY,UACgC17L,MAAMm7L,KAEtDQ,EAASA,EAAO7lM,MAAM,EAAG,GACzB,IAAK,IAAI4D,EAAI,EAAGA,EAAIiiM,EAAOjqM,OAAQgI,IAC/BiiM,EAAOjiM,GAAKwvB,WAAWyyK,EAAOjiM,IAElC,IAAIkiM,EAAaF,GAAa,eAAiBC,EAAOn+L,KAAK,KAAK7K,QAAQ,MAAO,KAM/E,OALKitD,EAAAA,EAAAA,IAAWrjC,GAAOq/K,MACnBr/K,GAAOq/K,GAAc,SAAS98L,EAAGoW,EAAGnE,EAAGpG,EAAG4J,GACtC,OAAO5J,EAhDC,SAASkxL,EAAIC,EAAIC,EAAIC,GACrC,IAAIC,EAAK,EAAIJ,EACTK,EAAK,GAAKH,EAAKF,GAAMI,EACrBE,EAAK,EAAIF,EAAKC,EACdE,EAAK,EAAIN,EACTO,EAAK,GAAKL,EAAKF,GAAMM,EACrBE,EAAK,EAAIF,EAAKC,EACdE,EAAU,SAASrnL,GACnB,OAAOA,GAAK+mL,EAAK/mL,GAAKgnL,EAAKhnL,EAAIinL,GAClC,EACGK,EAAc,SAAStnL,GACvB,OAAO+mL,EAAK/mL,GAAK,EAAIgnL,EAAK,EAAIhnL,EAAIinL,EACrC,EACD,OAAO,SAASjnL,GACZ,OAAO,SAASA,GACZ,OAAOA,GAAKknL,EAAKlnL,GAAKmnL,EAAKnnL,EAAIonL,GAClC,CAFM,CAEL,SAASpnL,GAIP,IAHA,IAEIlW,EAFAF,EAAIoW,EACJxb,EAAI,EAEDA,EAAI,KACPsF,EAAIu9L,EAAQz9L,GAAKoW,IACb5a,KAAKD,IAAI2E,GAAK,QAGlBF,GAAKE,EAAIw9L,EAAY19L,GACrBpF,IAEJ,OAAOoF,CACV,CAbC,CAaAoW,GACL,CACJ,CAiBsBunL,CAAcd,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAtDc,CAA0DvnL,EAAIX,GAAKxD,CACjF,GAEE6qL,CACV,EC/CD,IAyJIc,GAzJA1xM,IAAS8mD,EAAAA,EAAAA,MAwBT6qJ,GAAS,aACTC,GAAS,aACTC,GAAc,gBACdC,GAAU,eACVC,GAAYluL,GAAQmuL,OACpBC,GAAiB,SAASn2L,GAC1B,IAAIvS,EAAS,CACTvH,EAAG,SACHmoB,EAAG,UAEH8sC,GAAOZ,EAAAA,GAAAA,WAAUv6C,GAWrB,OAVIm7C,IACArE,EAAAA,EAAAA,IAAKqE,GAAO,WACR,IAAI6wD,EAAIt4G,OAAOzJ,MAAMwU,cACjBo3L,GAAOx1L,KAAK2rG,GACZv+G,EAAOvH,EAAI8lH,EACJ8pF,GAAOz1L,KAAK2rG,KACnBv+G,EAAO4gB,EAAI29F,EAElB,IAEEv+G,CACV,EACG2oM,GAAkB,SAASp2L,EAAKk7C,GAChC,OAAOD,EAAAA,GAAAA,cAAaj7C,EAAKk7C,EAC5B,EAgBGm7I,GAAiB,SAASC,GAC1B,OAAQA,GACJ,IAAK,SACD,MAAO,GACX,IAAK,QACL,IAAK,SACD,OAAO,EACX,QACI,OAAO,EAElB,EACGC,GAAe,SAASD,GACxB,OAAQA,GACJ,IAAK,OACD,MAAO,QACX,IAAK,QACD,MAAO,OACX,IAAK,MACD,MAAO,SACX,IAAK,SACD,MAAO,MACX,QACI,OAAOA,EAElB,EACGE,GAAoB,SAASjyM,EAAMkyM,GACnC,IAAIC,EAAW,EAOf,OANInyM,EAAKoyM,WAAaF,EAAO3pL,MACzB4pL,GAAYD,EAAO3pL,IAAMvoB,EAAKoyM,YAE9BpyM,EAAKoyM,WAAaF,EAAO/0K,MACzBg1K,GAAYnyM,EAAKoyM,WAAaF,EAAO/0K,KAElCg1K,CACV,EACGE,GAAgB,SAAS/lL,EAAWtsB,EAAMkyM,GAC1C,OAAIlyM,EAAKoyM,WAAaF,EAAO3pL,IAClB,MAAQ+D,EAAY,OAAS,MAEpCtsB,EAAKoyM,WAAaF,EAAO/0K,IAClB,MAAQ7Q,EAAY,QAAU,SAElC,MACV,EACGgmL,GAAiB,SAAStyM,GAC1BA,EAAKoyM,WAAapyM,EAAKuyM,WAAaT,GAAe9xM,EAAKwyM,SAAWxyM,EAAKyyM,OAASX,GAAe9xM,EAAK0yM,SAAW1yM,EAAK2yM,OAAS3yM,EAAK2S,MACtI,EACGigM,GAAqB,CACrBC,IAAK,SAAS7yM,EAAMkyM,GAChB,IAAIhpM,GAAS,EACTlJ,EAAKoyM,WAAaF,EAAO/0K,MACzBn9B,EAAKoyM,WAAaF,EAAO/0K,IACzBj0B,GAAS,GAETlJ,EAAKoyM,WAAaF,EAAO3pL,MACzBvoB,EAAKoyM,WAAaF,EAAO3pL,IACzBrf,GAAS,GAEblJ,EAAK6yM,IAAM3pM,CACd,EACD4pM,KAAM,SAAS9yM,EAAMkyM,GAEjB,GADAlyM,EAAK8yM,MAAO,GACR,WAAa9yM,EAAK0yM,SAAW,WAAa1yM,EAAKwyM,WAG/CxyM,EAAKoyM,WAAaF,EAAO3pL,KAAOvoB,EAAKoyM,WAAaF,EAAO/0K,KAAK,CAC9D,IAAI41K,GAAc5nJ,EAAAA,GAAAA,GAAO,CAAC,EAAGnrD,EAAM,CAC/B0yM,QAASV,GAAahyM,EAAK0yM,SAC3BF,QAASR,GAAahyM,EAAKwyM,SAC3B7/L,QAAS3S,EAAK2S,SAElB2/L,GAAeS,GACfA,EAAYZ,SAAWF,GAAkBc,EAAab,IAClDa,EAAYX,YAAcF,EAAO3pL,KAAOwqL,EAAYX,YAAcF,EAAO/0K,KAAOn9B,EAAKmyM,SAAWY,EAAYZ,YAC5GnyM,EAAKoyM,WAAaW,EAAYX,WAC9BpyM,EAAKmyM,SAAWY,EAAYZ,SAC5BnyM,EAAK8yM,MAAO,EAEnB,CACJ,EACDE,QAAS,SAAShzM,EAAMkyM,GACpBxsM,KAAKotM,KAAK9yM,EAAMkyM,GAChBxsM,KAAKmtM,IAAI7yM,EAAMkyM,EAClB,EACDe,KAAM,SAASjzM,GACXA,EAAKmyM,SAAW,CACnB,GAGDe,GAA0B,WAC1B,IAAIC,EAAa18H,GAAE,SAASzrC,IAAI,CAC5B3U,MAAO,IACPnE,OAAQ,IACR6W,SAAU,SACV74B,SAAU,WACVi6B,KAAM,OACPkqC,SAASoC,GAAE,SACVvtE,EAASiqM,EAAW7zM,IAAI,GAAG61E,YAAcg+H,EAAW7zM,IAAI,GAAGkjE,YAC/D2wI,EAAW/vM,SACXiuM,GAAiBnoM,CACpB,EACGkqM,GAAwB,CACxBzxM,EAAG,CACC02B,SAAU,EACVy6K,MAAM,EACND,KAAK,EACLV,SAAU,GAEdroL,EAAG,CACCuO,SAAU,EACVy6K,MAAM,EACND,KAAK,EACLV,SAAU,IAGdkB,GAAoB,SAASvnE,EAAMhpI,GACnC,IAAIwwM,EAAQ78H,GAAEq1D,GACV2L,EAAgB67D,EAAM3gM,SACtBzJ,GAASiiD,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAGioJ,GAAuB,CACjDzxM,EAAG,CACC02B,SAAUo/G,EAAcntG,MAE5BxgB,EAAG,CACCuO,SAAUo/G,EAActtG,OAGhC,IAAKrnC,EACD,OAAOoG,EAEX,IAAIi/B,EAAKypK,GAAe9uM,EAAQqlC,IAC5BoiB,EAAKqnJ,GAAe9uM,EAAQynD,IAC5BgpJ,EAAK98H,GAAE3zE,EAAQywM,IAAIltM,QAAUvD,EAAQywM,IAAM5zM,GAC3CgT,EAASk/L,GAAgB/uM,EAAQ6P,OAAQ7P,EAAQ0wM,SACjDC,EApJiB,SAASh4L,GAC9B,IAAIm7C,GAAOZ,EAAAA,GAAAA,WAAUv6C,GACjB9Z,EAAIwN,OAAOynD,GAAQA,EAAK,IAAI18C,cAC5B4P,EAAI3a,OAAOynD,GAAQA,EAAK,IAAI18C,cAOhC,OANKs3L,GAAY11L,KAAKna,KAClBA,EAAI,QAEH6vM,GAAY11L,KAAKgO,KAClBA,EAAInoB,GAED,CACHA,EAAGA,EACHmoB,EAAGA,EAEV,CAsImB4pL,CAAmB5wM,EAAQ2wM,WACvCE,EAAW7wM,EAAQ6wM,SACnBC,EAAiB/B,GAAgB/uM,EAAQ8wM,eAAgB9wM,EAAQ0wM,SACjE7xM,EAAI,CACJgxM,OAAQjiI,GAAc4iI,GACtBZ,QAASvqK,EAAGxmC,EACZ6wM,QAASjoJ,EAAG5oD,EACZgR,OAAQA,EAAOhR,EACf8xM,UAAWA,EAAU9xM,EACrBiyM,eAAgBA,EAAejyM,GAE/BmoB,EAAI,CACJ6oL,OAAQ/hI,GAAe0iI,GACvBZ,QAASvqK,EAAGre,EACZ0oL,QAASjoJ,EAAGzgC,EACZnX,OAAQA,EAAOmX,EACf2pL,UAAWA,EAAU3pL,EACrB8pL,eAAgBA,EAAe9pL,GAEnC,GAAIypL,EAAG1xI,eACHlgE,EAAE4wM,WAAagB,EAAGrqI,MAClBp/C,EAAEyoL,WAAagB,EAAGpqI,MAClBxnE,EAAE8wM,OAAS,EACX3oL,EAAE2oL,OAAS,OAGX,GADAc,EAAK98H,GAAE88H,IACHlqJ,EAAAA,EAAAA,IAASkqJ,EAAI,IACb5xM,EAAE4wM,WAAagB,EAAGM,aAClB/pL,EAAEyoL,WAAagB,EAAGO,YACd,UAAYp2H,GAAAA,OAAe1D,YAAcu5H,EAAI,GAAGQ,gBAChDpyM,EAAE4wM,WAAatjM,KAAKkuB,IAAIx7B,EAAE4wM,WAAYgB,EAAI,GAAGQ,eAAep+B,YAC5D7rJ,EAAEyoL,WAAatjM,KAAKkuB,IAAIrT,EAAEyoL,WAAYgB,EAAI,GAAGQ,eAAer+B,WAC5D/zK,EAAE8wM,OAASc,EAAI,GAAGQ,eAAe19K,MACjCvM,EAAE2oL,OAASc,EAAI,GAAGQ,eAAe7hL,SAEjCvwB,EAAE8wM,OAASc,EAAI,GAAGr7H,WAAaq7H,EAAI,GAAGnjH,WAAamjH,EAAI,GAAGr7H,WAAa5H,GAASijI,GAChFzpL,EAAE2oL,OAASc,EAAI,GAAGhlI,YAAcglI,EAAI,GAAGljH,aAAeqhH,GAAY6B,EAAI,GAAGhlI,YAAciC,GAAU+iI,SAElG,GAAI,IAAMA,EAAI,GAAG93J,SACpB95C,EAAE4wM,WAAa,EACfzoL,EAAEyoL,WAAa,EACf5wM,EAAE8wM,OAASniI,GAASijI,GACpBzpL,EAAE2oL,OAASjiI,GAAU+iI,OAClB,CACH,IAAIS,EAAS7jH,GAAgBojH,EAAGj0M,IAAI,IAChC8mI,EAAI6tE,GAAsBV,GAC9B5xM,EAAE4wM,WAAansE,EAAE97F,KACjBxgB,EAAEyoL,WAAansE,EAAEj8F,IACjBxoC,EAAE8wM,OAASxjM,KAAKkuB,IAAI62K,EAAO39K,MAAOq6C,GAAc6iI,IAChDzpL,EAAE2oL,OAASxjM,KAAKkuB,IAAI62K,EAAO9hL,OAAQ0+C,GAAe2iI,GACrD,CAELjB,GAAe3wM,GACf2wM,GAAexoL,GACf,IAAIooL,EAAS,WACT,IAAIxzM,EAAM+3E,GAAE92E,IACR49E,EAAcjN,GAAS5xE,GACvBw1M,EAAe1jI,GAAU9xE,GACzB4rC,EAAO5rC,EAAIm1M,aACX1pK,EAAMzrC,EAAIo1M,YACVlmJ,EAAkB2U,EAAAA,EAAAA,qBAClB4xI,EAAaxpD,GAAQ/8F,EAAgB4U,YAAc+a,EAAc,EACjE62H,EAAazpD,GAAQ/8F,EAAgBywG,aAAe61C,EAAe,OACnE,IAAW7C,IACX6B,KAEJ,IAAImB,EAAgB92H,EAChB+2H,EAAiBJ,EACrB,GAAIP,KAAatqJ,EAAAA,EAAAA,IAASsqJ,GAAW,CACjC,IAAIY,EAAY99H,GAAEk9H,GACda,EAAmBD,EAAU5hM,SACjC23B,EAAOkqK,EAAiBlqK,KACxBH,EAAMqqK,EAAiBrqK,IACvBkqK,EAAgB/jI,GAASikI,GACzBD,EAAiB9jI,GAAU+jI,EAC9B,CACD,MAAO,CACH5yM,EAAG,CACC4mB,IAAK+hB,EAAO3oC,EAAEiyM,eACdz2K,IAAKmN,EAAO+pK,EAAgBF,EAAaxyM,EAAEgxM,OAAShxM,EAAEiyM,gBAE1D9pL,EAAG,CACCvB,IAAK4hB,EAAMrgB,EAAE8pL,eACbz2K,IAAKgN,EAAMmqK,EAAiBF,EAAatqL,EAAE6oL,OAAS7oL,EAAE8pL,gBAGjE,CAhCY,GAiCbjyM,EAAEwwM,SAAWF,GAAkBtwM,EAAGuwM,EAAOvwM,GACzCmoB,EAAEqoL,SAAWF,GAAkBnoL,EAAGooL,EAAOpoL,GACzCnoB,EAAE0wM,cAAgBA,GAAc,IAAK1wM,EAAGuwM,EAAOvwM,GAC/CmoB,EAAEuoL,cAAgBA,GAAc,IAAKvoL,EAAGooL,EAAOpoL,GAC3C8oL,GAAmBjxM,EAAE8xM,YACrBb,GAAmBjxM,EAAE8xM,WAAW9xM,EAAGuwM,EAAOvwM,GAE1CixM,GAAmB9oL,EAAE2pL,YACrBb,GAAmB9oL,EAAE2pL,WAAW3pL,EAAGooL,EAAOpoL,GAE9C,IAAI2qL,EAAW,SAAS/6K,GACpB,OAAO52B,EAAQ0wM,QAAU95K,EAASzqB,KAAKoZ,MAAMqR,EAChD,EAkBD,OAjBAyxB,EAAAA,GAAAA,IAAO,EAAMjiD,EAAQ,CACjBvH,EAAG,CACC02B,SAAUo8K,EAAS9yM,EAAEywM,YACrBD,SAAUsC,EAAS9yM,EAAEwwM,UACrBU,IAAKlxM,EAAEkxM,IACPC,KAAMnxM,EAAEmxM,KACRT,cAAe1wM,EAAE0wM,eAErBvoL,EAAG,CACCuO,SAAUo8K,EAAS3qL,EAAEsoL,YACrBD,SAAUsC,EAAS3qL,EAAEqoL,UACrBU,IAAK/oL,EAAE+oL,IACPC,KAAMhpL,EAAEgpL,KACRT,cAAevoL,EAAEuoL,eAErBmB,QAAS1wM,EAAQ0wM,UAEdtqM,CACV,EACGwrM,GAAmB,SAASxiM,EAASyiM,EAAOC,EAAWtvL,GACvD,IAAIuvL,GAAmB9gJ,EAAAA,EAAAA,IAAU7hD,EAAQsqB,SAAW+lC,EAAAA,EAAAA,OAAkBrwD,EAAQsqB,OAC1Es4K,EAAgBxvL,EAAUsvL,EAAUttM,QAAQqtM,EAAO,IAAMC,EAC7D,GAAIC,EACA3nJ,EAASh7C,EAAS4iM,GAAe,OAC9B,CACH,IAAIC,EAAqBxyI,EAAAA,EAAAA,gBAA2B,SACpDwyI,EAAmBnxM,MAAQkxM,EAC3B5iM,EAAQ8iM,iBAAiBD,EAC5B,CACJ,EACGd,GAAwB,SAASA,EAAsBgB,GACvD,IAAIC,EAAuBC,EACvBC,EAAkB53L,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAKy3L,EACnF51H,EAAiB+1H,EAAgB91M,IAAI,GACzC,IAAK+/E,EACD,OAAO41H,EAActiM,SAEzB,IAEIA,EAFA6pB,GAAS,QAAU04K,EAAwB71H,EAAetqE,oBAAiB,IAAWmgM,OAAwB,EAASA,EAAsB/wM,KAAKk7E,EAAgB,WAAa,GAC/Ks1H,EAAQ,QAAUQ,EAAe34K,EAAM7nB,MAAM88L,WAAa,IAAW0D,OAAe,EAASA,EAAa,GAS9G,OAPIR,GACAD,GAAiBr1H,EAAgBs1H,EAAOn4K,GAAO,GAC/C7pB,EAASshM,EAAsBgB,EAAeG,EAAgB7kM,UAC9DmkM,GAAiBr1H,EAAgBs1H,EAAOn4K,GAAO,IAE/C7pB,EAASshM,EAAsBgB,EAAeG,EAAgB7kM,UAE3DoC,CACV,EACGzC,GAAW,SAAS47H,EAAMhpI,GAC1B,IAAIwwM,EAAQ78H,GAAEq1D,GACd,IAAKhpI,EACD,OAAOwwM,EAAM3gM,SAEjBm2I,GAAcwqD,GAAO,GACrB,IAAI3gM,EAASshM,GAAsBX,GAC/Bz3C,EAAiB/4J,EAAQnB,GAAKmB,EAAQgnB,EAAIhnB,EAAUuwM,GAAkBC,EAAOxwM,GAC7E2xM,EAAW,SAAS/6K,GACpB,OAAO52B,EAAQ0wM,QAAU95K,EAASzqB,KAAKoZ,MAAMqR,EAChD,EAKD,OAJAmvH,GAAKyqD,EAAO,CACRhpK,KAAMuxH,EAAel6J,EAAE02B,SAAWo8K,EAAS9hM,EAAO23B,MAClDH,IAAK0xH,EAAe/xI,EAAEuO,SAAWo8K,EAAS9hM,EAAOw3B,OAE9C0xH,CACV,EAaI3rJ,GAAS8hM,eACV9hM,GAAS8hM,aAAeA,IAEvB9hM,GAAS0hM,iBACV1hM,GAAS0hM,eAAiBA,IAE9B,QACIsB,wBAAyBA,GACzBmC,UAAWhC,GACX38H,MAAOxmE,GACPyC,OAtBS,SAAST,GAElB,OADAA,EAAUukE,GAAEvkE,GAAS5S,IAAI,IACrB+pD,EAAAA,EAAAA,IAASn3C,GACF,KACAA,GAAW,UAAWA,GAAW,UAAWA,EAC5C,CACHi4B,IAAKj4B,EAAQi3D,MACb7+B,KAAMp4B,EAAQg3D,OAGfuN,GAAEvkE,GAASS,QACrB,GCpYGhT,IAAS8mD,EAAAA,EAAAA,MA+CT6uJ,GAAkBpsD,GAAa3yE,GAAa,QAI5Cg/H,GAAuB,gBACvBC,GAAgB,aAChBC,GAAiB,cAEjBC,GAA8B,CAC9BC,cAAe,SAASj2I,EAAUj6D,GAC9Bi6D,EAAS10B,IAAI,CACT4qK,mBAAoB,SAEpB,kBAAoBnwM,EAAOyJ,KAC3BwwD,EAASoU,SAASruE,EAAOyJ,MAEzB2mM,GAASn2I,EAAUj6D,EAAOyJ,MAE9B,IAAIimD,EAAOzvD,KACPuuD,EAAW,IAAIlxC,GAAAA,GACf+yL,EAAcrwM,EAAOqwM,YACzBrwM,EAAOswM,oBAAsB,CACzB9hJ,SAAUA,EACV+hJ,OAAQ,WACJ7gJ,EAAK8gJ,kBAAkBv2I,GACnBo2I,GACA/gJ,EAAAA,GAAAA,IAAKd,EAAU6hJ,GAAa/5I,QAAQ,WAChC5G,EAAK+gJ,SAASx2I,EAAUj6D,EAC3B,IAED0vD,EAAK+gJ,SAASx2I,EAAUj6D,GAE5BwuD,EAASO,YAAYkL,EAAU,CAACj6D,EAAQi6D,GAC3C,GAELh6D,KAAKywM,2BAA2Bz2I,EAAUj6D,GAAQ6uD,MAAM,WACpD7uD,EAAOswM,oBAAoBC,QAC9B,IAAGhhJ,MAAM,WACNf,EAASI,WAAWqL,EAAU,CAACj6D,EAAQi6D,GAC1C,IACIj6D,EAAO8rB,UACR9rB,EAAOswM,oBAAoBC,SAE/Bt2I,EAAS10B,IAAI,YAChB,EACDorK,QAAS,SAAS12I,EAAUj6D,GAExB,OADAC,KAAK2wM,gBAAgB32I,EAAUj6D,GACxBA,EAAOswM,oBAAoB9hJ,SAASjxC,SAC9C,EACDmzL,2BAA4B,SAASz2I,EAAUj6D,GAC3C,IAKI6wM,EALAnhJ,EAAOzvD,KACP6iF,EAAY//E,KAAKygE,MAAQxjE,EAAOitB,MAChCuhC,EAAW,IAAIlxC,GAAAA,GACfwzL,EAAqB,IAAIxzL,GAAAA,GACzByzL,EAA8B,IAAIzzL,GAAAA,GAElC0zL,EAA6BzlD,KAA2B,QAC5DvrJ,EAAOswM,oBAAoBW,QAAU,WACjC17K,aAAas7K,GACbt7K,aAAa27K,GACb1yI,EAAAA,EAAAA,IAAiBvE,EAAU+2I,GAC3BxyI,EAAAA,EAAAA,IAAiBvE,EAAU41I,GAC9B,EACDrxI,EAAAA,EAAAA,IAAiBvE,EAAU+2I,GAA6B,WAChDjuM,KAAKygE,MAAQsf,GAAa9iF,EAAO8rB,UACjCglL,EAAmBrxM,QAE1B,IACD++D,EAAAA,EAAAA,IAAiBvE,EAAU41I,IAC3BrxI,EAAAA,EAAAA,GAAgBvE,EAAU41I,IAAkB,WACxCngJ,EAAKgjI,KAAKz4H,EAAUj6D,GACpBwuD,EAAS/uD,QACZ,IACD,IAAIyxM,EAAyB17K,YAAY,WACrCq7K,EAAyBr7K,YAAY,WACjCu7K,EAA4BtxM,QAC/B,GAAGO,EAAO8rB,SAAW9rB,EAAOitB,MAAQkkL,GAAGC,+BACxC9hJ,EAAAA,GAAAA,IAAKwhJ,EAAoBC,GAA6BxhJ,KAAK,WACvDf,EAAS3vD,SACZ,EAAC9B,KAAKkD,MACV,IACD,OAAOuuD,EAASjxC,SACnB,EACDqzL,gBAAiB,SAAS32I,EAAUj6D,GAChCi6D,EAAS10B,IAAI,CACT4qK,mBAAoB,MACpBkB,gBAAiBrxM,EAAOitB,MAAQ,KAChCqkL,mBAAoBtxM,EAAO8rB,SAAW,KACtCylL,yBAA0BvxM,EAAOyrB,SAEjC,kBAAoBzrB,EAAOy3G,GAC3Bx9C,EAAS,GAAG7hD,WAAa,IAAMpY,EAAOy3G,GAC/Bz3G,EAAOy3G,IACd24F,GAASn2I,EAAUj6D,EAAOy3G,GAEjC,EACD+4F,kBAAmB,SAASv2I,GACxBA,EAAS10B,IAAI,aAAc,OAC9B,EACDkrK,SAAU,SAASx2I,EAAUj6D,GACzBA,EAAOswM,oBAAoBW,UACvB,kBAAoBjxM,EAAOyJ,OAC3BwwD,EAASqU,YAAYtuE,EAAOyJ,MAC5BwwD,EAASqU,YAAYtuE,EAAOy3G,IAEnC,EACDi7E,KAAM,SAASz4H,EAAUj6D,EAAQwxM,GACxBxxM,IAGDwxM,EACAxxM,EAAOswM,oBAAoBC,WAEvBlpK,EAAAA,EAAAA,IAAcrnC,EAAOy3G,MACrB3qD,EAAAA,EAAAA,IAAK9sD,EAAOy3G,IAAK,SAASl1G,GACtB03D,EAAS10B,IAAIhjC,EAAK03D,EAAS10B,IAAIhjC,GAClC,IAELtC,KAAKuwM,kBAAkBv2I,GACvBh6D,KAAKwwM,SAASx2I,EAAUj6D,IAE/B,GAEDyxM,GAAyB,CACzBvB,cAAe,SAASj2I,EAAUj6D,GAC9BowM,GAASn2I,EAAUj6D,EAAOyJ,KAC7B,EACDknM,QAAS,SAAS12I,EAAUj6D,GACxB,IAAIwuD,EAAW,IAAIlxC,GAAAA,GACfoyC,EAAOzvD,KACX,OAAKD,IAGL8sD,EAAAA,EAAAA,IAAK9sD,EAAOy3G,IAAK,SAAS36G,QAClB,IAAWkD,EAAOyJ,KAAK3M,KACvBkD,EAAOyJ,KAAK3M,GAAQ4yD,EAAKgiJ,gBAAgBz3I,EAAS10B,IAAIzoC,IAE7D,IACGkD,EAAOy3G,GAAP,YACAz3G,EAAOyJ,KAAP,UAA8BimD,EAAKiiJ,gBAAgB3xM,EAAOyJ,KAAP,WACnDzJ,EAAOy3G,GAAP,UAA4B/nD,EAAKiiJ,gBAAgB3xM,EAAOy3G,GAAP,YAErDz3G,EAAO4xM,eAAiB,CACpBn6F,GAAIz3G,EAAOy3G,GACXhuG,KAAMzJ,EAAOyJ,KACb0rD,aAAcn1D,EAAOyJ,KACrBgiB,OAAQi/K,GAAoC1qM,EAAOyrB,QACnDK,SAAU9rB,EAAO8rB,SACjBg3D,WAAY,IAAI//E,MAAMypD,UACtB+jJ,OAAQ,WACJtwM,KAAKk1D,aAAel1D,KAAKw3G,GACzBx3G,KAAK4xM,QACLlwJ,EAAAA,GAAAA,sBAAqB3hD,EAAO4xM,eAAeE,kBAC3CtjJ,EAAS3vD,SACZ,EACDgzM,KAAM,WACF,GAAI7xM,EAAO6xM,KACP7xM,EAAO6xM,KAAK5xM,KAAKk1D,kBADrB,CAIA,IAAIA,GAAezP,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKk1D,cAC/BA,EAAY,YACZA,EAAY,WAAmBnxD,EAAAA,EAAAA,IAAImxD,EAAY,WAAmB,SAASh3D,EAAOrB,GAC9E,MAAI,cAAgBA,EACTmmJ,GAAgB9kJ,GAChB,UAAYrB,EACZ,SAAWqB,EAAQ,IACnB,WAAarB,EAAKmI,OAAO,EAAGnI,EAAK8D,OAAS,GAC1C9D,EAAO,IAAMqB,EAAQ,YADzB,CAGV,IAAGuO,KAAK,MAEbutD,EAAS10B,IAAI4vB,EAbZ,CAcJ,GAEDn1D,EAAOitB,OACPjtB,EAAO4xM,eAAe9uH,WAAa9iF,EAAOitB,MAC1CjtB,EAAO4xM,eAAeG,aAAev8K,YAAY,WAC7Ck6B,EAAKkhJ,gBAAgB32I,EAAUj6D,EAClC,GAAGA,EAAOitB,QAEXyiC,EAAKkhJ,gBAAgB32I,EAAUj6D,GAE5BwuD,EAASjxC,WApDLixC,EAAS/uD,SAAS8d,SAqDhC,EACDqzL,gBAAiB,SAAS32I,EAAUj6D,GAChCw+D,EAAAA,EAAAA,IAAiBvE,EAAU41I,IAC3BrxI,EAAAA,EAAAA,GAAgBvE,EAAU41I,IAAkB,WACpC7vM,EAAO4xM,iBACPjwJ,EAAAA,GAAAA,sBAAqB3hD,EAAO4xM,eAAeE,iBAElD,IACD7xM,KAAK+xM,eAAe/3I,EAAUj6D,EACjC,EACD2xM,gBAAiB,SAASM,GACtB,IAAIxuM,EAAS,CAAC,EAed,OAdAqpD,EAAAA,EAAAA,IAAKmlJ,EAAgB/iM,MAAM,2BAA4B,SAAStG,EAAG+gF,GAC/D,IAAIuoH,EzErIY,SAASC,GACjC,IAAI1uM,EAAS0uM,EAAgBjjM,MAAMwzI,IACnC,GAAKj/I,GAAWA,EAAO,GASvB,OANAA,EAASA,EAAO,GAAGnB,MAAM,KAChB,CACL0L,EAAGoqB,WAAW30B,EAAO,IACrBwK,EAAGmqB,WAAW30B,EAAO,IACrByK,EAAGkqB,WAAW30B,EAAO,IAG5B,CyEyH+B2uM,CAAezoH,GAC/B0oH,EAAY1oH,EAAKz6E,MAAM,kBACvBojM,EAAa3oH,EAAKz6E,MAAM,wBACxBgjM,IACAzuM,EAAOm/I,UAAYsvD,GAEnBG,GAAaA,EAAU,KACvB5uM,EAAOyrM,MAAQ92K,WAAWi6K,EAAU,KAEpCC,GAAcA,EAAW,KACzB7uM,EAAO6uM,EAAW,IAAMl6K,WAAWk6K,EAAW,IAErD,IACM7uM,CACV,EACDivL,KAAM,SAASz4H,EAAUj6D,EAAQwxM,GAC7B,IAAII,EAAiB5xM,GAAUA,EAAO4xM,eACjCA,KAGLjwJ,EAAAA,GAAAA,sBAAqBiwJ,EAAeE,kBACpCv8K,aAAaq8K,EAAeG,cACxBP,GACAI,EAAerB,gBAEZvwM,EAAO4xM,eACjB,EACDI,eAAgB,SAAS/3I,EAAUj6D,GAC/B,IAAI4xM,EAAiB5xM,GAAUA,EAAO4xM,eACtC,GAAKA,EAAL,CAGA,IAAIpuI,GAAO,IAAIzgE,MAAMypD,UACrB,GAAIgX,GAAOouI,EAAe9uH,UAAY8uH,EAAe9lL,SACjD8lL,EAAerB,aADnB,CAIAqB,EAAez8I,aAAel1D,KAAKsyM,eAAeX,EAAgBpuI,EAAMouI,EAAe9uH,WACvF8uH,EAAeC,OACf,IAAIniJ,EAAOzvD,KACX2xM,EAAeE,kBAAmB12J,EAAAA,GAAAA,wBAAuB,WACrDsU,EAAKsiJ,eAAe/3I,EAAUj6D,EACjC,GANA,CALA,CAYJ,EACDuyM,eAAgB,SAASX,EAAgBY,GACrC,OAAO,SAASC,EAAqBhpM,EAAMguG,GACvC,IAAIh0G,EAASqB,MAAMC,QAAQ0yG,GAAM,GAAK,CAAC,EAcvC,OAbA3qD,EAAAA,EAAAA,IAAK2qD,GAAK,SAAS1gG,EAAU27L,GACzB,GAAI,kBAAoBA,IAAgB,IAAUt6K,WAAWs6K,GACzD,OAAO,EAEXjvM,EAAOsT,GAAY,kBAAoB27L,EAAeD,EAAqBhpM,EAAKsN,GAAW27L,GAAgB,SAAS37L,GAChH,IAAI/I,EAAIwkM,EAAkBZ,EAAe9lL,SACrC1H,EAAIouL,EACJvyL,EAAI,EAAIxW,EAAKsN,GACb8C,EAAI49F,EAAG1gG,GAAYtN,EAAKsN,GACxB0M,EAAImuL,EAAe9lL,SACvB,OF7Ob,SAAmBzyB,GACtB,OAAOoyB,GAAOpyB,EACjB,CE2O0Bs5M,CAAUf,EAAenmL,OAAzBknL,CAAiC3kM,EAAGoW,EAAGnE,EAAGpG,EAAG4J,EACvD,CAP0G,CAOzG1M,EACL,IACMtT,CACV,CAhBM,CAgBLmuM,EAAenoM,KAAMmoM,EAAen6F,GACzC,EACDi6F,gBAAiB,SAASvzM,GACtB,IAAIy0M,EAAex6K,WAAWj6B,GAC9B,OAAI,IAAUy0M,EACHz0M,EAEJy0M,CACV,GAEDC,GAAgC,CAChC3C,cAAe,WAAa,EAC5BS,QAAS,WACL,OAAQ,IAAIrzL,GAAAA,IAAUze,UAAU0e,SACnC,EACDm1K,KAAM3wK,GAAAA,KACN+wL,eAAe,GAefC,GAAsB,SAAS/yM,EAAQgzM,EAAexxD,EAAUyxD,IAChEnmJ,EAAAA,EAAAA,IAAK,CAAC,OAAQ,OAAQ,WAClB,IAAK00F,EAASxhJ,EAAOC,OACjB,MAAMsf,GAAAA,EAAAA,MAAa,QAASyzL,EAAe/yM,KAAMgzM,EAExD,GACJ,EACGC,GAA0B,SAASlzM,EAAQgzM,GAC3C,OAAOD,GAAoB/yM,EAAQgzM,GAAgB,SAASp7L,GACxD,OAAOyvB,EAAAA,EAAAA,IAAczvB,EACxB,GAAG,iBACP,EAeGu7L,GAAkB,CAClBzuK,IAAK,CACDhC,GAAI,gBACJoiB,GAAI,cAERlgB,OAAQ,CACJlC,GAAI,aACJoiB,GAAI,iBAERngB,MAAO,CACHjC,GAAI,cACJoiB,GAAI,gBAERjgB,KAAM,CACFnC,GAAI,eACJoiB,GAAI,gBAGRsuJ,GAA6B,CAC7BC,eAAgB,SAASrzM,GACrBkzM,GAAwBlzM,EAAQ,QACnC,EACDixE,MAAO,SAAShX,EAAUj6D,GACtB,IAAI4yB,EAAW+vH,GAAO1oF,GACtB,GAAI,UAAYj6D,EAAOsF,KAAM,CACzB,IAAIguM,EAAoB,YAActzM,EAAOsF,KAAOtF,EAAOyJ,KAAOzJ,EAAOy3G,GACzE67F,EAAkB7oM,UAAWi7C,EAAAA,GAAAA,GAAO,CAChCooJ,GAAI5zM,IACLi5M,GAAgBnzM,EAAO6mB,YAC1B0sL,GAAct5I,EAAUq5I,EAC3B,CACDrzM,KAAKuzM,aAAa5gL,EAAU5yB,EAAOyJ,MACnCxJ,KAAKuzM,aAAa5gL,EAAU5yB,EAAOy3G,IACnCurC,GAAW/oF,EACd,EACDu5I,aAAc,SAAS5gL,EAAU5yB,GAC7BA,EAAO6kC,KAAO,SAAU7kC,EAASA,EAAO6kC,KAAO,MAC/C7kC,EAAO0kC,IAAM,QAAS1kC,EAASA,EAAO0kC,IAAM,MAC5CzkC,KAAKwzM,iBAAiB7gL,EAAU5yB,EACnC,EACDyzM,iBAAkB,SAAS7gL,EAAU5yB,GACjC,IAAIyK,EAAW,CACXo6B,KAAM7kC,EAAO6kC,KACbH,IAAK1kC,EAAO0kC,YAET1kC,EAAO6kC,YACP7kC,EAAO0kC,IACd,IAAIgvK,EAAgBzzM,KAAK0zM,kBAAkBlpM,EAASo6B,WAChD,IAAW6uK,EACXjpM,EAASo6B,KAAO6uK,EAAgB9gL,EAASiS,KAEzC7kC,EAAO6kC,KAAO,OAGd,KADJ6uK,EAAgBzzM,KAAK0zM,kBAAkBlpM,EAASi6B,MAE5Cj6B,EAASi6B,IAAMgvK,EAAgB9gL,EAAS8R,IAExC1kC,EAAO0kC,IAAM,EAEjB1kC,EAAM,UAAmBijJ,GAAgB,CACrCj1I,EAAGvD,EAASo6B,KACZ52B,EAAGxD,EAASi6B,KAEnB,EACDivK,kBAAmB,SAASx1M,GACxB,IAAIu1M,EACJ,GAAI,kBAAoBv1M,IAAUu1M,EAAgB5D,GAAqB7gM,KAAK9Q,IACxE,OAAO45B,SAAS27K,EAAc,GAAK,KAAOA,EAAc,EAE/D,GAEDE,GAA4B,CAC5B3iI,MAAO,SAAShX,EAAUj6D,GACtB,IAAI6zM,EAAeC,EACfrqM,EAAOzJ,EAAOyJ,KACdguG,EAAKz3G,EAAOy3G,GACZs8F,EAAqB,YAAc/zM,EAAOsF,KAAO,EAAI,EACrD0uM,EAAmB,YAAch0M,EAAOsF,KAAO,EAAI,EACnD2uM,GAAc5sK,EAAAA,EAAAA,IAAc59B,GAAQC,OAAO,QAAUmqM,EAAgBpqM,EAAK0J,eAAY,IAAW0gM,EAAgBA,EAAgBE,GAAsBrqM,OAAOD,GAC9JyqM,GAAY7sK,EAAAA,EAAAA,IAAcowE,GAAM/tG,OAAO,QAAUoqM,EAAcr8F,EAAGtkG,eAAY,IAAW2gM,EAAcA,EAAcE,GAAoBtqM,OAAO+tG,GAIpJ,OAHKz3G,EAAOm0M,2BACRF,EAAch6I,EAAS10B,IAAI,YAEvBvlC,EAAOsF,MACX,IAAK,SACD4uM,EAAY,EACZ,MACJ,IAAK,UACDA,EAAY,EAEpBl0M,EAAOyJ,KAAO,CACV+5B,WAAY,UACZrwB,QAAS8gM,GAEbj0M,EAAOy3G,GAAK,CACRtkG,QAAS+gM,EAEhB,GA2BDE,GAAyB,CACzB7/B,OAtI8B,CAC9BtjG,MAAO,WAAa,GAsIpBojI,MAAOjB,GACPkB,QAASlB,GACTmB,SAAUnB,GACVoB,KAAMZ,GACNa,OAAQb,GACRc,QAASd,GACT/lJ,IAjC2B,CAC3BwlJ,eAAgB,SAASrzM,GACrBkzM,GAAwBlzM,EAAQ,MACnC,EACDixE,MAAO,SAAShX,EAAUj6D,GACtB,IAAIyJ,EAAOzJ,EAAOyJ,KACdguG,EAAKz3G,EAAOy3G,GACZw8F,EAAc,YAAaxqM,EAAOA,EAAK0J,QAAU8mD,EAAS10B,IAAI,WAC9D2uK,EAAY,YAAaz8F,EAAKA,EAAGtkG,QAAU,EAC3CwhM,EAAY,UAAWlrM,EAAOA,EAAKylM,MAAQ,EAC3C0F,EAAU,UAAWn9F,EAAKA,EAAGy3F,MAAQ,EACzClvM,EAAOyJ,KAAO,CACV0J,QAAS8gM,GAEb,IAAIrxD,EAAYC,GAAa5oF,GAC7Bj6D,EAAOyJ,KAAP,UAA8BxJ,KAAK40M,iBAAiBjyD,EAAW+xD,GAC/D30M,EAAOy3G,GAAK,CACRtkG,QAAS+gM,GAEbl0M,EAAOy3G,GAAP,UAA4Bx3G,KAAK40M,iBAAiBjyD,EAAWgyD,EAChE,EACDC,iBAAkB,SAASjyD,EAAWssD,GAClC,OAAOjsD,GAAgBL,GAAa,SAAWssD,EAAQ,GAC1D,GAWD3pK,IA3I2B,CAC3B8tK,eAAgB,SAASrzM,IATC,SAASA,EAAQgzM,GACpCD,GAAoB/yM,EAAQgzM,GAAgB,SAASp7L,GACxD,MAAO,kBAAoBA,CAC9B,GAAG,WACP,CAMOk9L,CAAwB90M,EAAQ,MACnC,EACDixE,MAAO,WAAa,IAgJpB8jI,GAAkB,CAClBzvM,KAAM,SACNmE,KAAM,CAAC,EACPguG,GAAI,CAAC,EACL3rF,SAAU,IACV0Q,MAAOza,GAAAA,KACPH,SAAUG,GAAAA,KACV0J,OAAQ,OACRwB,MAAO,GAEP+nL,GAAmB,CACnBlpL,SAAU,IACVL,OAAQ,OACRwB,MAAO,GAGX,SAASgoL,KACL,IAAIh7I,EAAWh6D,KAAKwM,QAChBzM,EAASC,KAAKD,OAUlB,GATAuzM,GAAct5I,EAAUj6D,EAAOyJ,MAC/B8pM,GAAct5I,EAAUj6D,EAAOy3G,IAC/Bx3G,KAAKi1M,aAAajkI,MAAMhX,EAAUj6D,GAClCi6D,EAAS1/D,KAAKw1M,GAAe9vM,MACzBkxM,GAAG56J,MACHv2C,EAAO8rB,SAAW,EAClB9rB,EAAOitB,MAAQ,GAEnBhtB,KAAKmkE,SAAS8rI,cAAcj2I,EAAUj6D,GAClCA,EAAOw8B,MAAO,CACd,IAAI/vB,EAAUq1I,GAAiB7nF,GAC/Bj6D,EAAOw8B,MAAMxkB,MAAM/X,KAAM,CAACwM,EAASzM,GACtC,CACJ,CACD,IAUIm1M,GAA0B,WAC1B,IAAI3pD,EAAYvrJ,KACZg6D,EAAWuxF,EAAU/+I,QACrBzM,EAASwrJ,EAAUxrJ,OAEvB,OADAwrJ,EAAU4pD,WAAY,EACf5pD,EAAUpnF,SAASusI,QAAQ12I,EAAUj6D,GAAQ6uD,MAAM,YAf7B,SAAS28F,GACtC,IAAIvxF,EAAWuxF,EAAU/+I,QACrBzM,EAASwrJ,EAAUxrJ,OAEvB,GADAi6D,EAASwK,WAAWsrI,IAChB/vM,EAAO4hB,SAAU,CACjB,IAAInV,EAAUq1I,GAAiB7nF,GAC/Bj6D,EAAO4hB,SAAS5J,MAAM/X,KAAM,CAACwM,EAASzM,GACzC,CACDwrJ,EAAUh9F,SAASO,YAAY9uD,KAAM,CAACg6D,EAAUj6D,GACnD,CAOOq1M,CAA2B7pD,EAC9B,IAAGj8F,MAAM,WACNi8F,EAAUh9F,SAASI,WAAW3uD,KAAM,CAACg6D,EAAUj6D,GAClD,GACJ,EACGs1M,GAAyB,SAAS9D,GAClC,IAAIv3I,EAAWh6D,KAAKwM,QAChBzM,EAASC,KAAKD,OAClBu1B,aAAat1B,KAAKs1M,cACbt1M,KAAKm1M,WACNn1M,KAAKu8B,QAETv8B,KAAKmkE,SAASsuH,KAAKz4H,EAAUj6D,EAAQwxM,EACxC,EACGgE,GAAoB/xD,GAAa3yE,GAAa,sBAU9C2kI,GAAkB,SAAShpM,EAASipM,GACpC,IAAIC,EAAgB,QAAUD,EAAcpwM,KAAO0vM,GAAmBD,GAClE/0M,GAAS0lD,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAGiwJ,EAAeD,GACzCR,EAnFuB,SAASl1M,GACpC,IAAIyD,EAAS2wM,GAAuBp0M,EAAOsF,MAC3C,IAAK7B,EACD,MAAM8b,GAAAA,EAAAA,MAAa,QAASvf,EAAOsF,MAEvC,OAAO7B,CACV,CA6EsBmyM,CAAyB51M,GACxCokE,EAlQmB,SAASpkE,GAChCA,EAASA,GAAU,CAAC,EACpB,IAAI61M,EAAsB,CACtB9kL,WAAYA,KAAek/K,GAA8BwB,GACzDqE,MAAOrE,GACPsE,YAAalD,IAEbzuI,EAAWpkE,EAAOokE,UAAY,aAIlC,MAHI,QAAUpkE,EAAOsF,MAASyrB,OAC1BqzC,EAAW,eAERyxI,EAAoBzxI,EAC9B,CAsPkB4xI,CAAqBh2M,GAChCwrJ,EAAY,CACZ/+I,QAASukE,GAAEvkE,GACXzM,OAAQA,EACRk1M,aAAcA,EACd9wI,SAAUA,EACV0uI,cAAe1uI,EAAS0uI,cACxB7hI,MAAOgkI,GACPz4K,MAAO24K,GACPziB,KAAM4iB,GACN9mJ,SAAU,IAAIlxC,GAAAA,IAMlB,OAJIwxC,EAAAA,EAAAA,IAAWomJ,EAAa7B,iBACxB6B,EAAa7B,eAAerzM,GA1BP,SAASwrJ,GAClChtF,EAAAA,EAAAA,IAAiBgtF,EAAU/+I,QAAS+oM,IACpCh3I,EAAAA,EAAAA,GAAgBgtF,EAAU/+I,QAAS+oM,IAAoB,WACnDrE,GAAGze,KAAKlnC,EAAU/+I,QACrB,IACD++I,EAAUh9F,SAAS8H,QAAQ,WACvBkI,EAAAA,EAAAA,IAAiBgtF,EAAU/+I,QAAS+oM,GACvC,GACJ,CAoBGS,CAAuBzqD,GAChBA,CACV,EAoBD,SAAS0qD,GAAiBj8I,GACtB,OAAOA,EAAS1/D,KAAKy1M,KAAmB,EAC3C,CAKD,IAAImG,GAAuB,SAASl8I,GAChCA,EAASwK,WAAWurI,GACvB,EAED,SAASoG,GAAYn8I,GACjB,QAASA,EAAS1/D,KAAKw1M,GAC1B,CAED,SAASsG,GAAwBp8I,EAAUq8I,GAEvC,IADAA,EAAYJ,GAAiBj8I,IACdr5D,OAAf,CAGA,IAAI4qJ,EAAY8qD,EAAUn+K,QACtB,IAAMm+K,EAAU11M,QAChBu1M,GAAqBl8I,GAS7B,SAA0BuxF,GACtBA,EAAUv6E,QACNkgI,GAAG56J,KAAOi1G,EAAUsnD,cACpBtnD,EAAUhvH,QAEVgvH,EAAU+pD,aAAe//K,YAAY,WACjCg2H,EAAUhvH,OACb,IAEL,OAAOgvH,EAAUh9F,SAASjxC,SAC7B,CAjBGg5L,CAAiB/qD,GAAW38F,MAAM,WACzBunJ,GAAYn8I,IACbo8I,GAAwBp8I,EAE/B,GATA,CAUJ,CAcD,SAASs5I,GAAct5I,EAAUj6D,GAC7B,GAAKA,GAAWA,EAAOyK,SAAvB,CAGA,IAAIxR,EAAM+3E,GAAE92E,IACR2qC,EAAO,EACPH,EAAM,EACNj6B,EAAW+rM,GAAAA,UAAwBv8I,EAAUj6D,EAAOyK,UACpDyC,EAAS+sD,EAAS/sD,SAClBysJ,EAAkB1/F,EAASxvD,WAC3BkvJ,EAAgBj1H,IAAMx3B,EAAOw3B,MAC7BA,EAAMzrC,EAAIo1M,aAEV10C,EAAgB90H,KAAO33B,EAAO23B,OAC9BA,EAAO5rC,EAAIm1M,eAEf1oJ,EAAAA,GAAAA,GAAO1lD,EAAQ,CACX6kC,KAAMp6B,EAASvO,EAAE02B,SAAW1lB,EAAO23B,KAAO80H,EAAgB90H,KAAOA,EACjEH,IAAKj6B,EAAS4Z,EAAEuO,SAAW1lB,EAAOw3B,IAAMi1H,EAAgBj1H,IAAMA,WAE3D1kC,EAAOyK,QAjBb,CAkBJ,CAED,SAAS2lM,GAASn2I,EAAUlvD,IACxB+hD,EAAAA,EAAAA,IAAK/hD,GAAQ,SAASxI,EAAKpE,GACvB,IACI87D,EAAS10B,IAAIhjC,GAAKusD,EAAAA,EAAAA,IAAW3wD,GAASA,IAAUA,EACtC,CAAZ,MAAO+K,GAAK,CACjB,GACJ,CACD,IAkBIioM,GAAK,CACL56J,KAAK,EACLkgK,eAAgBrC,GAChBzD,QAjHU,SAASlkM,EAASzM,GAC5B,IAAIi6D,EAAW+W,GAAEvkE,GACjB,IAAKwtD,EAASr5D,OACV,OAAQ,IAAI0c,GAAAA,IAAUze,UAAU0e,UAEpC,IAAIiuI,EAAYiqD,GAAgBx7I,EAAUj6D,GAE1C,OAGJ,SAA8Bi6D,EAAUuxF,GACpC,IAAI8qD,EAAYJ,GAAiBj8I,IAYrC,SAA4BA,EAAUq8I,GAClCr8I,EAAS1/D,KAAKy1M,GAAgBsG,EACjC,EAbGI,CAAmBz8I,EAAUq8I,GAC7BA,EAAUj2M,KAAKmrJ,GACV4qD,GAAYn8I,IACbo8I,GAAwBp8I,EAAUq8I,EAEzC,CAXGK,CAAqB18I,EAAUuxF,GACxBA,EAAUh9F,SAASjxC,SAC7B,EA0GGk4L,gBAAiBA,GACjBW,YAAaA,GACb1jB,KAxBO,SAASjmL,EAAS+kM,GACzB,IAAIv3I,EAAW+W,GAAEvkE,GACb6pM,EAAYJ,GAAiBj8I,IACjCnN,EAAAA,EAAAA,IAAKwpJ,GAAY,SAASv3M,EAAGysJ,GACzBA,EAAUxrJ,OAAOitB,MAAQ,EACzBu+H,EAAUxrJ,OAAO8rB,SAAW,EAC5B0/H,EAAUsnD,eAAgB,CAC7B,IACIsD,GAAYn8I,IACbo8I,GAAwBp8I,EAAUq8I,GAEtC,IAAI9qD,EAAYvxF,EAAS1/D,KAAKw1M,IAC1BvkD,GACAA,EAAUknC,KAAK8e,GAEnBv3I,EAASwK,WAAWsrI,IACpBoG,GAAqBl8I,EACxB,EAQGm3I,6BAA8B,KAElC,MCltBWwF,GAAe,WACtB,IAAIhqJ,EAAY,GAChB,MAAO,CACH5e,IAAK,SAASxwC,GACLovD,EAAUpnD,SAAShI,IACpBovD,EAAUvsD,KAAK7C,EAEtB,EACDG,OAAQ,SAASH,GACb,IAAIq5M,EAAkBjqJ,EAAUvrD,QAAQ7D,IACnC,IAAMq5M,GACPjqJ,EAAUtrD,OAAOu1M,EAAiB,EAEzC,EACD7pJ,KAAM,WACF,IAAIxvD,EAAWovD,EAAUiB,MACrBpqD,IAAWjG,EAIf,OAHIiG,GACAjG,IAEGiG,CACV,EACDqzM,YAAa,WACT,OAAOlqJ,EAAUhsD,OAAS,CAC7B,EAER,CA1ByB,GCmC1B,SAAS2H,GAAalP,EAAM8E,EAAOyZ,GAC/Bve,EAAO,SAAWA,GAAQ,OAASA,EAAOA,EAAO,QAAQ6W,OAAO7W,GAChE8E,GAAQmwD,EAAAA,EAAAA,IAAUnwD,GAASA,EAAMZ,WAAa,KAC9Cqa,EAAOu2D,KAAK90E,EAAM8E,EACrB,CACD,IAAI0mM,GAASv9B,GAAAA,QAAqB,CAC9Bo9B,qBAAsB,IACtBC,qBAAsB,GACtBoS,eAAgB,iBAAO,CAAC,CAAR,EAChBl5C,mBAJ8B,WAK1B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B40J,eAAgB,KAChB3kD,UAAU,EACV5sI,UAAU,EACVq7B,SAAS,EACTvC,UAAM,EACN6lJ,oBAAoB,EACpB3kJ,eAAgB,KAChB4kJ,mBAAmB,EACnBjmJ,mBAAmB,EACnBqC,SAAU,EACVvD,eAAW,EACXugI,UAAW,KACXC,WAAY,KACZ8Z,kBAAmB,KACnByf,sBAAsB,EACtBC,mBAAmB,GAE1B,EACDn5C,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,IAAIA,EAASsB,GAAAA,OACTv+E,EAAWi9E,EAAOj9E,SAClB86E,EAAUmC,EAAOnC,QACrB,MAAO,QAAU96E,GAAYy9M,GAAgB3iI,EAAS,SAAW,CACpE,EACDn3E,QAAS,CACL65M,mBAAmB,KAG9B,EACD1zG,MArC8B,WAsC1BvjG,KAAKmiD,WACLniD,KAAKm3M,yBACR,EACDC,0BAA2B,SAASC,EAAaz5M,GAC7C,IAAIR,EAAUwnM,GAAO0S,wBAAwB15M,GAC7Cy5M,GAAeA,EAAY1qK,OAAOvvC,GAClC4C,KAAKktD,SAAS58C,MAAM1S,EAAKxE,KAAMgE,EAClC,EACDm6M,wBA9C8B,SA8CNF,EAAaG,GAAkB,WAC/CC,EAAc,kBAAM,EAAKvqJ,SAASytG,OAAO68C,GAAkB/xJ,EAAAA,GAAAA,GAAO,CAAC,EAAG4xJ,EAAY1qK,UAApE,EAClB8qK,IACAJ,EAAYtqK,GAAG,gBAAiB0qK,EACnC,EACDC,eAnD8B,WAoD1B,OAAO13M,KAAK6lK,cACf,EACDsxC,wBAtD8B,WAuD1Bn3M,KAAK23M,oBAAsB33M,KAAK2/J,sBAAsB,iBAAkB,CACpE5e,kBAAmB,CAAC,WAAY,aAEvC,EACDunB,YA3D8B,WA4D1B,IAAI,EAGAtoK,KAAK2sC,SAFKnnB,EADd,EACIA,SACSq7B,EAFb,EAEIA,QAEJ7gD,KAAKg6D,WAAWoU,SAAS,aACzBpuE,KAAK43M,qBAAqBpyL,GAC1BxlB,KAAK63M,kBAAkBh3J,GACvB7gD,KAAK83M,cACL93M,KAAK+3M,gBAAkB/3M,KAAKg4M,qBAC5Bh4M,KAAKmiD,UACR,EACD24B,QAvE8B,WAwE1B96E,KAAKmiD,WACLniD,KAAKi4M,iBACLj4M,KAAKk4M,oBACLl4M,KAAKm4M,wBACLn4M,KAAKo4M,qBACLp4M,KAAKq4M,yBACR,EACDP,YA/E8B,WAgF1B,IACUx5J,EACNt+C,KAAK2sC,SADL2R,KAEJt+C,KAAKg6D,WAAWkU,KAAK,QAAS5vB,GAAQ,KACzC,EACD25J,eArF8B,WAqFb,YACb1oJ,EAAAA,GAAAA,cAAY,kBAAO,EAAKy0C,eAAwC,EAA5B,EAAKs0G,oBAA7B,IAA4D1pJ,MAAK,kBAAO,EAAKo1C,eAA6C,EAAjC,EAAKu0G,yBAA7B,GAChF,EACDD,mBAAoBx2L,GAAAA,KACpBy2L,yBAAyB/oJ,EAAAA,GAAAA,gBAAe,WACpC,OAAOxvD,KAAK23M,qBACf,IACDjlE,SA5F8B,WA6F1B1yI,KAAK23M,oBAAsB,KAC3B33M,KAAKw4M,wBACLx4M,KAAKmiD,UACR,EACDs2J,kBAjG8B,WAkG1Bz4M,KAAK04M,mBAAmB14M,KAAK24M,uBAAuB,EACvD,EACDrvC,OApG8B,WAqG1BtpK,KAAK44M,mBACL54M,KAAKy4M,oBACLz4M,KAAKmiD,WACLniD,KAAKg6D,WAAWlM,OACnB,EACD+pJ,kBA1G8B,SA0GZh3J,GACd7gD,KAAKg6D,WAAWiU,YAAY,sBAAuBptB,EACtD,EACDq3J,kBA7G8B,WA8G1Bl4M,KAAK64M,wBACD74M,KAAK+3M,iBACL/3M,KAAKg4M,qBACLh4M,KAAK84M,qBACL94M,KAAK+4M,mBAEZ,EACDA,iBArH8B,WAsH1B,IAAIn1C,EAAM5jK,KAAK6lK,eAEA5oH,EACXj9C,KAAK2sC,SADLsQ,UAEJ2mH,EAAI11F,KAAK,YAAajxB,EACzB,EACD86J,aA5H8B,WA6H1B,IAAI,EAGA/3M,KAAK2sC,SAFcwR,EADvB,EACIA,kBACU34B,EAFd,EAEIA,SAEJ,OAAO24B,IAAsB34B,CAChC,EACDmzL,oBAnI8B,WAoI1B,OAAO34M,KAAKg6D,UACf,EACD6rG,aAtI8B,WAuI1B,OAAO7lK,KAAKg5M,mBACf,EACDC,eAAgB,SAASzsM,GAErB,OADmBukE,GAAE/wE,KAAK6lK,gBAAgBn4F,UACtBnoE,SAASiH,EAChC,EACD0sM,kBA7I8B,SA6IZl/I,GACd,OAAOA,EAASh+D,KAAKgE,KAAKm5M,kBAAkBz8K,IAAI,qBACnD,EACDs8K,kBAhJ8B,WAiJ1B,IAAIpxJ,EAAgB5nD,KAAK24M,sBACzB,OAAI34M,KAAKm5M,iBACEn5M,KAAKk5M,kBAAkBtxJ,GAE3BA,CACV,EACDowJ,mBAvJ8B,WAwJ1B,IACcx3J,EACVxgD,KAAK2sC,SADL6T,SAEJxgD,KAAK6lK,eAAe33F,KAAK,WAAY1tB,EACxC,EACD44J,4BA7J8B,WA8J1B,OAAOp5M,KAAK24M,qBACf,EACDU,mBAhK8B,WAiK1Br5M,KAAKs5M,qBACLt5M,KAAK84M,oBACR,EACDS,kBApK8B,WAqK1B,OAAOv5M,KAAK6lK,cACf,EACD2zC,gBAvK8B,SAuKdz4M,GAAO,WACdA,EAAMkiE,sBACPjjE,KAAK2/J,sBAAsB,YAAa,CACpClf,cAAe,kBAAM,EAAKg5D,kBAAkB14M,GAAO,EAApC,EACfggJ,kBAAmB,CAAC,aAFxB/gJ,CAGG,CACCe,MAAOA,GAGlB,EACD24M,iBAjL8B,SAiLb34M,GAAO,WACfA,EAAMkiE,sBACPjjE,KAAK2/J,sBAAsB,aAAc,CACrClf,cAAe,kBAAM,EAAKg5D,kBAAkB14M,GAAO,EAApC,EACfggJ,kBAAmB,CAAC,WAAY,aAFpC/gJ,CAGG,CACCe,MAAOA,GAGlB,EACD04M,kBA3L8B,SA2LZziM,EAAM2iM,GACpB,IACYhiM,EACRX,EADAW,OAEA3X,KAAKi5M,eAAethM,IACpB3X,KAAK45M,kBAAkBD,EAAW5oI,GAAEp5D,GAE3C,EACDiiM,kBAnM8B,SAmMZD,EAAW3/I,IACNA,GAAYA,EAASr5D,OAASq5D,EAAWh6D,KAAK6lK,gBACpD53F,YAAY,mBAAoB0rI,EAChD,EACDE,eAvM8B,SAuMfrtM,GAEX,OADmBukE,GAAEvkE,GAAWxM,KAAK6lK,gBACjBv3F,SAAS,mBAChC,EACDwrI,WA3M8B,WA4M1B,OAAO95M,KAAK65M,gBACf,EACDE,sBAAuB,iBAAM,EAAN,EACvBlB,sBA/M8B,WA+MN,WACpB74M,KAAKw4M,wBACL,IAAI,EAGAx4M,KAAK2sC,SAFcwR,EADvB,EACIA,kBACmBo5I,EAFvB,EAEIA,kBAEAyiB,EAAoBh6M,KAAK+5M,wBAAwBp5M,QAElCw9C,GAAqB67J,KADRziB,KAG5Bv3L,KAAKi6M,oBAAsB/0D,GAAYllJ,KAAKo5M,8BAA+Bp5M,KAAK6lK,gBAAgB,SAAA9hC,GAAI,OAAI,EAAKm2E,iBAAiBn2E,EAA1B,IAE3G,EACDm2E,iBA5N8B,SA4Nb98M,EAAS+8M,GACtB,IAAKA,EAAqB,CACtB,IACmBj4I,EAGf9kE,EAHA8kE,cACSojG,EAETloK,EAFAkoK,QACOjjG,EACPjlE,EADAilE,MAEArjE,EAAOgB,KAAK82M,eAAe50I,GAC3BnxD,EAAO/R,EAAKsmK,IAAYtmK,EAAKqjE,GACjC,QAAI,IAAWtxD,EAGX,IAFcA,EAAKjU,KAAKkD,KACXc,CAAQohE,EAAe9kE,GAEhC,OAAO,CAGlB,CACD,IAAIg9M,EAAoBp6M,KAAK+5M,wBAENxiB,EACnBv3L,KAAK2sC,SADL4qJ,kBAIJ,OAFA6iB,EAAkB15M,SAAQ,SAAAF,GAAQ,OAAIA,GAAYA,EAAS05M,iBAAiB98M,EAA1C,IAClCm6L,GAAqBA,EAAkBn6L,IAChC,CACV,EACDi9M,mBArP8B,WAsP1Br6M,KAAK44M,mBACL54M,KAAKk4M,mBACR,EACDU,iBAzP8B,WA0PX54M,KAAK6lK,eACX13F,WAAW,YACpBnuE,KAAK45M,mBAAkB,GACvB55M,KAAKs5M,qBACLt5M,KAAKw4M,uBACR,EACDA,sBAhQ8B,WAiQ1BtzD,GAAallJ,KAAKi6M,qBAClBj6M,KAAKi6M,oBAAsB,IAC9B,EACD7B,mBApQ8B,WAoQT,WAEMhU,EACnBpkM,KAAK2sC,SADLy3J,kBAEAl0L,EAAWlQ,KAAKm5M,iBAChBv1C,EAAM5jK,KAAK24M,sBACf5yL,GAAU69I,EAAK,CACX1zJ,SAAUA,EACVixD,UAAW,eAEXijI,GACAr+K,GAAS69I,EAAK,IAAIvjB,IAAO,SAAAqkB,GACrB,IACW3jK,EAEP2jK,EAFA3jK,MACSyL,EACTk4J,EADAl4J,QAEJ,EAAK8tM,mBAAmBv5M,GACxB,EAAK4rC,OAAO,iBAAkBokC,GAAEvkE,GACnC,GAAE,CACCu0I,kBAAmB,CAAC,eACpB,SAAAhgJ,GACA,EAAK4rC,OAAO,iBAAkB,MAC9B,EAAK4tK,iBAAiBx5M,EACzB,GAAE,CACCmP,SAAUA,EACVixD,UAAW,cAGtB,EACDg3I,sBAjS8B,WAiSN,WAEIhU,EACpBnkM,KAAK2sC,SADLw3J,mBAEAj0L,EAAWlQ,KAAKm5M,iBAChBv1C,EAAM5jK,KAAK24M,sBACf7yL,GAAW89I,EAAK,CACZziG,UAAW,aACXjxD,SAAUA,IAEVi0L,GACAr+K,GAAU89I,EAAK,IAAIvjB,IAAO,SAAAyF,GACtB,IACW/kJ,EAEP+kJ,EAFA/kJ,MACSyL,EACTs5I,EADAt5I,QAEJ,OAAO,EAAKksM,mBAAmB3nI,GAAEvkE,IAAU,EAAMzL,EACpD,IAAG,IAAIs/I,IAAO,SAAAkG,GACX,IACWxlJ,EAEPwlJ,EAFAxlJ,MACSyL,EACT+5I,EADA/5I,QAEJ,OAAO,EAAKksM,mBAAmB3nI,GAAEvkE,IAAU,EAAOzL,EACrD,GAAE,CACCggJ,kBAAmB,CAAC,WAAY,cAChC,CACA0lB,YAAazmK,KAAK0kM,qBAClBh+B,YAAa1mK,KAAKykM,qBAClBv0L,SAAUA,EACVixD,UAAW,cAGtB,EACDm4I,mBAlU8B,WAmU1B,IAAI11C,EAAM5jK,KAAKu5M,oBACflzL,GAAUu9I,EAAK,CACXziG,UAAW,GAAGlxD,OAAOjQ,KAAKw+J,KAAM,UAEvC,EACDs6C,mBAxU8B,WAwUT,WACbl1C,EAAM5jK,KAAKu5M,oBACflzL,GAASu9I,GAAK,SAAA36J,GAAC,OAAI,EAAKuwM,gBAAgBvwM,EAAzB,IAA6B,SAAAA,GAAC,OAAI,EAAKywM,iBAAiBzwM,EAA1B,GAA8B,CACvEk4D,UAAW,GAAGlxD,OAAOjQ,KAAKw+J,KAAM,SAChCqpC,YAAa,SAAC1mM,EAAO+4D,GAAR,OAAe6W,GAAE7W,GAAI+U,GAAGurI,GAAxB,GAEpB,EACDF,mBAAoBx4L,GAAAA,KACpBy4L,iBAAkBz4L,GAAAA,KAClB42L,mBAjV8B,SAiVX1+I,EAAU97D,GACzB8B,KAAK2sC,OAAO,WAAYzuC,GACxB87D,EAASiU,YAAY,kBAAmB/vE,EAC3C,EACDu8M,cArV8B,WAsV1B,IAAI1D,EAAiB/2M,KAAKktD,SAASytG,OAAO,kBAC1C36J,KAAK06M,OAAO3D,EAAgBA,EAC/B,EACD4D,iBAzV8B,SAyVb/2C,GACb,OAAOA,GAAOA,EAAI9zF,QAAQ9vE,KAAKm5M,kBAAoBn5M,KAAK24M,sBAC3D,EACD+B,OA5V8B,SA4VvB92C,EAAKg3C,GACR,IAAI,EAIA56M,KAAK2sC,SAHcy3J,EADvB,EACIA,kBACU5+K,EAFd,EAEIA,SACU4sI,EAHd,EAGIA,SAIJ,IAFAwoD,EAAY56M,KAAK26M,iBAAiBC,KACrBA,EAAU3sI,YAAY,kBAAkB,GACjD21F,GAAOwgC,IAAsB5+K,IAAa4sI,EAAU,CACpD,IAAIyoD,EAAoB76M,KAAK26M,iBAAiB/2C,GAC9Ci3C,GAAqBA,EAAkB5sI,YAAY,kBAAkB,EACxE,CACJ,EACD2pI,qBAzW8B,SAyWT15M,GACjB8B,KAAKg6D,WAAWiU,YAAY,oBAAqBgxD,QAAQ/gI,IACzD8B,KAAK86M,QAAQ,WAAY58M,QAAS,EACrC,EACDm6M,wBA7W8B,WA8W1Br4M,KAAKg6D,WAAWiU,YAAY,uBAAwBjuE,KAAK2sC,OAAO,wBACnE,EACDouK,iBAhX8B,SAgXbh4C,EAAYnlK,GAAM,WAC/B,GAAKoC,KAAK+iK,GAGV,IAAI37H,EAAAA,EAAAA,IAAcxpC,EAAK,KACnBivD,EAAAA,EAAAA,IAAKjvD,EAAK,IAAI,SAAC+uC,EAAQzuC,GAAT,OAAmB,EAAK68M,iBAAiBh4C,EAAY,CAACp2H,EAAQzuC,GAA9D,QADlB,CAIA,IAAIsxC,EAAa5xC,EAAK,GAClBM,EAAQN,EAAK,GACb,IAAMA,EAAK+C,SACXzC,EAAQ8B,KAAK2sC,OAAO6C,IAExB,IAAIwrK,EAAkBh7M,KAAK,GAAGiQ,OAAO8yJ,EAAY,cACjD/iK,KAAK+iK,GAAYp2H,OAAOquK,EAAkBA,EAAgBxrK,GAAcA,EAAYtxC,EAPnF,CAQJ,EACD4hK,eAhY8B,SAgYfliK,GACX,IACUxE,EAGNwE,EAHAxE,KACO8E,EAEPN,EAFAM,MACe28J,EACfj9J,EADAi9J,cAEJ,OAAQzhK,GACJ,IAAK,WACD4G,KAAK43M,qBAAqB15M,GAC1B8B,KAAKy6M,gBACLz6M,KAAKq6M,qBACL,MACJ,IAAK,OACDr6M,KAAK83M,cACL,MACJ,IAAK,uBACD93M,KAAKq4M,0BACL,MACJ,IAAK,qBACDr4M,KAAKm4M,wBACL,MACJ,IAAK,oBACDn4M,KAAKo4M,qBACLp4M,KAAKy6M,gBACL,MACJ,IAAK,WACL,IAAK,oBACDz6M,KAAKq6M,qBACL,MACJ,IAAK,YACL,IAAK,aACL,IAAK,oBACD,MACJ,IAAK,YACDr6M,KAAK+4M,mBACL,MACJ,IAAK,iBACD/4M,KAAK06M,OAAOx8M,EAAO28J,GACnB,MACJ,IAAK,WACD76J,KAAKy6M,gBACL,MACJ,IAAK,UACDz6M,KAAK63M,kBAAkB35M,GACnB8B,KAAK+oK,gCACL/oK,KAAKqpK,wBAAwBnrK,EAAQ,QAAU,UAEnD,MACJ,IAAK,oBACD8B,KAAK64M,wBACL,MACJ,IAAK,iBACD74M,KAAKm3M,0BACL,MACJ,QACIn3M,KAAKmiD,SAASvkD,GAEzB,EACDurK,WA1b8B,WA2b1B,IACatoH,EACT7gD,KAAK2sC,SADLkU,QAEJ,OAAO7gD,KAAKmiD,YAActB,CAC7B,EACDhJ,YAhc8B,WAic1B73C,KAAKopG,QAAO,GACZppG,KAAKmiD,UACR,EACDnK,UApc8B,WAqc1Bh4C,KAAKmiD,WACDniD,KAAK6+J,cACL7+J,KAAKopG,QAAO,EAEnB,EACDA,OA1c8B,SA0cvBlrG,GACH,GAAI,IAAM4Z,UAAUnX,OAChB,OAAOX,KAAKi7M,SAEhBj7M,KAAKi7M,SAAW/8M,CACnB,EACD48M,QAhd8B,WAid1B,IAAK1zK,EAAAA,EAAAA,IAActvB,UAAUnX,QAAU,OAAI,EAASmX,UAAU,IAEvD,CACH,IAAIH,GAAUG,UAAUnX,QAAU,OAAI,EAASmX,UAAU,KAAO9X,KAAK03M,kBACrE7qJ,EAAAA,EAAAA,IAAK/0C,UAAUnX,QAAU,OAAI,EAASmX,UAAU,IAAI,SAAC1e,EAAM8E,GAAP,OAAiBoK,GAAalP,EAAM8E,EAAOyZ,EAA3C,GACvD,MAJGrP,GAAawP,UAAUnX,QAAU,OAAI,EAASmX,UAAU,GAAIA,UAAUnX,QAAU,OAAI,EAASmX,UAAU,IAAKA,UAAUnX,QAAU,OAAI,EAASmX,UAAU,KAAO9X,KAAK03M,iBAK1K,EACDwD,QAxd8B,WAyd1B,OAAOl7M,KAAKopG,QACf,EACD+xG,QA3d8B,WA4d1Bn7M,KAAK2pK,UACR,EACDtjJ,MA9d8B,WA+d1BA,GAAcrmB,KAAK6lK,eACtB,EACDu1C,mBAje8B,SAieX94M,EAAKxB,GACpB,IAAIu6M,EAAcr7M,KAAK82M,iBACvB92M,KAAK82M,eAAiB,kBAAMrxJ,EAAAA,GAAAA,GAAO41J,GAAD,WAC7B/4M,EAAMxB,GADW,CAGzB,IAEL8jM,GAAO0S,wBAA0B,SAAA3wD,GAC7B,IACUvtJ,EAGNutJ,EAHAvtJ,KACUy2C,EAEV82G,EAFA92G,SACO3xC,EACPyoJ,EADAzoJ,MAEAd,EAAU,CAAC,EACXhE,IAASy2C,EACTzyC,EAAUc,EAGVd,EADayyC,EAASxtC,MAAM,KAAKurD,OACf1vD,EAEtB,OAAOd,CACV,EACD,UC5hBIk+M,GAAa,KACbC,GAAc,GAKP/qM,GAAS,WAChB,IAAIgrM,EAAY1jM,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAKwjM,GAC7E36M,EAAS46M,GAAY56M,OACrBQ,GAASR,EAAS46M,GAAY56M,EAAS,GAAK66M,GAAa,EAE7D,OADAD,GAAYn7M,KAAKe,GACVA,CACV,EACUzD,GAAS,SAAA6V,GAChB,IAAI/I,EAAW+wM,GAAYn6M,QAAQmS,GAC/B/I,GAAY,GACZ+wM,GAAYl6M,OAAOmJ,EAAU,EAEpC,ECjBGixM,GAAgC,aAgBpC,GAfyB,SAAAjvM,GACrB,IACIkvM,EADW3qI,GAAEvkE,GACcsjE,QAAQ,YAAY7/D,OAAOwrM,GAA+B,kBAAkBxrM,OAAOwrM,GAA+B,OAC7IE,EAAWz9M,KACf,IAAKw9M,EAAgB/6M,OACjB,OAAOg7M,EAEX,IAAIC,EAAmB,IAAIhkL,OAAO,WAAW3nB,OAAOwrM,GAA+B,gBAC/EI,EAAcH,EAAgB,GAAGvjM,UAAUlJ,MAAM2sM,GAAkB,GACnEE,EAA0BH,EAAS5wM,SAAS,IAAM8wM,GAItD,OAHKC,EAAwBn7M,SACzBm7M,EAA0B/qI,GAAE,SAAS3C,SAASytI,GAAaltI,SAASgtI,IAEjEG,CACV,ECCG7hN,IAAS8mD,EAAAA,EAAAA,MACTg7J,GAA2B,CAC3Bt3K,IAAK,CACDhC,GAAI,aACJoiB,GAAI,cAERlgB,OAAQ,CACJlC,GAAI,gBACJoiB,GAAI,iBAERngB,MAAO,CACHjC,GAAI,eACJoiB,GAAI,gBAERjgB,KAAM,CACFnC,GAAI,cACJoiB,GAAI,eAERm3J,OAAQ,CACJv5K,GAAI,SACJoiB,GAAI,UAER,eAAgB,CACZpiB,GAAI,eACJoiB,GAAI,gBAER,YAAa,CACTpiB,GAAI,YACJoiB,GAAI,aAER,cAAe,CACXpiB,GAAI,cACJoiB,GAAI,eAER,WAAY,CACRpiB,GAAI,WACJoiB,GAAI,aAGRo3J,GAAkC,CAClChgN,EAAG,EACHmoB,EAAG,GAED83L,GAAAA,WACF,WAAYllM,IAAM,eACd,IACcxM,EAUVwM,EAVAxM,SACWjD,EASXyP,EATAzP,UACiB40M,EAQjBnlM,EARAmlM,gBACOC,EAOPplM,EAPAolM,MACU9hB,EAMVtjL,EANAsjL,SACU+hB,EAKVrlM,EALAqlM,SACcC,EAIdtlM,EAJAslM,aACyBC,EAGzBvlM,EAHAulM,wBACiBC,EAEjBxlM,EAFAwlM,gBACqBC,EACrBzlM,EADAylM,oBAEJz8M,KAAKg2L,OAAS,CACVxrL,SAAUA,EACVjD,UAAWA,EACX40M,gBAAiBA,EACjBK,gBAAiBA,EACjBF,aAAcA,EACdC,wBAAyBA,EACzBE,oBAAqBA,GAEzBz8M,KAAK08M,OAASN,EACdp8M,KAAK28M,UAAYriB,EACjBt6L,KAAK48M,UAAYP,EACjBr8M,KAAK68M,uBAAoB,EACzB78M,KAAK88M,uBAAoB,EACzB98M,KAAK+8M,qCAAsC,EAC3C/8M,KAAKg9M,qBAAkB,EACvBh9M,KAAKi9M,sBAAmB,EACxBj9M,KAAKk9M,6BAA0B,EAC/Bl9M,KAAKm9M,gBAAgB51M,GACrBvH,KAAKo9M,eAAe5yM,GACpBxK,KAAKq9M,sBAAsBlB,EAC9B,wCACD,WAEI,OADAn8M,KAAKm9M,kBACEn9M,KAAK68M,iBACf,+BACD,WACI,OAAO78M,KAAK88M,iBACf,uBACD,WACI,OAAO98M,KAAKs9M,SACf,iCACD,SAAuBC,GACnBv9M,KAAKg2L,OAAOymB,oBAAsBc,EAClCv9M,KAAKw9M,sBACR,8BACD,SAAoBhB,GAChBx8M,KAAKg2L,OAAOwmB,gBAAkBA,CACjC,4CACD,SAA4Bt+M,GACxB8B,KAAK+8M,oCAAsC7+M,IAAU8B,KAAKg9M,eAC7D,+BACD,WACI,IAAIS,EAAwBz9M,KAAKg2L,OAAOwmB,gBACxCx8M,KAAK09M,4BAA4BD,EACpC,+BACD,SAAeE,GACX39M,KAAKg2L,OAAOxrL,SAAWmzM,EACvB39M,KAAKs9M,UAAYt9M,KAAK49M,mBAAmBD,GACzC39M,KAAKq9M,uBACR,gCACD,WACI,IAAIQ,EAAgB/lM,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKg2L,OAAOzuL,UACjGvH,KAAKg2L,OAAOzuL,UAAYs2M,EACxB79M,KAAK68M,kBAAoBgB,EAAgB9sI,GAAE8sI,GAAiBC,GAA0B99M,KAAK08M,QAC3F18M,KAAKq9M,sBAAsBr9M,KAAKg2L,OAAOmmB,gBAC1C,sCACD,WACI,IAAIA,EAAkBrkM,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKg2L,OAAOmmB,gBACnGn8M,KAAKg2L,OAAOmmB,gBAAkBA,EAC9Bn8M,KAAK88M,kBAAoB98M,KAAK+9M,qBACjC,2CACD,SAA2Bh9M,GACvBf,KAAKg+M,6BACLh+M,KAAKi+M,uBAAuBl9M,EAC/B,gCACD,WACQf,KAAK+8M,oCACL/8M,KAAKk+M,iCAEL/6D,GAAKnjJ,KAAK28M,UAAW38M,KAAKg9M,iBAC1Bh9M,KAAKs4J,6BAEZ,gCACD,WACQt4J,KAAK88M,mBACLvG,GAAAA,MAAoBv2M,KAAK48M,UAAW,CAChCn6K,GAAI,WACJoiB,GAAI,WACJgpJ,GAAI7tM,KAAK88M,mBAGpB,qCACD,WACI,IACIqB,GADWx6J,EAAAA,EAAAA,IAAS3jD,KAAKo+M,iBAAiBxkN,IAAI,KAAOoG,KAAKg2L,OAAOymB,oBACtC,QAAU,WACzCz8M,KAAK48M,UAAUt3K,IAAI,WAAY64K,EAClC,2CACD,WACIn+M,KAAKk9M,wBAA0Bl9M,KAAKg9M,gBACpCh9M,KAAKg9M,gBAAkBt6D,GAAO1iJ,KAAK28M,UACtC,8CACD,WACI38M,KAAKq+M,wBACLj7D,GAAcpjJ,KAAK28M,WACnB,IAAI2B,EAAkBt+M,KAAK48M,UAAUt3K,IAAI,YACzCtlC,KAAK48M,UAAUt3K,IAAI,WAAY,UAC/B,IAAIi5K,EAAiBhI,GAAAA,MAAoBv2M,KAAK28M,UAAW38M,KAAKs9M,WAC9Dt9M,KAAK48M,UAAUt3K,IAAI,WAAYg5K,GAC/Bt+M,KAAKi9M,iBAAmBsB,EACxBv+M,KAAKs4J,4BACR,uCACD,SAAuBv3J,GACnB,IAAIy9M,EAAmBx+M,KAAKk9M,wBACxBvjD,EAAc35J,KAAKg9M,kBACQ,OAASwB,QAAoB,IAAWA,OAAmB,EAASA,EAAiB/5K,OAASk1H,EAAYl1H,MAAQ,OAAS+5K,QAAoB,IAAWA,OAAmB,EAASA,EAAiB55K,QAAU+0H,EAAY/0H,OAExP5kC,KAAKg2L,OAAOumB,wBAAwB,CAChCiC,iBAAkBA,EAClBh0M,SAAUmvJ,EACV54J,MAAOA,IAGff,KAAKg2L,OAAOsmB,aAAa,CACrB9xM,SAAUxK,KAAKi9M,kBAEtB,sCACD,WACI,IAAIwB,EACAvQ,EAAiB,QAAUuQ,EAAkBz+M,KAAKs9M,iBAAc,IAAWmB,EAAkBA,EAAkB,CAC/GvQ,eAAgB+N,IAEpBj8M,KAAK28M,UAAUr3K,IAAI,SAAU,GAAGr1B,OAAOi+L,EAAe9pL,EAAG,OAAOnU,OAAOi+L,EAAejyM,EAAG,MAC5F,oCACD,WACI,IAAIyiN,EAAuBC,EACvBd,EAAgB79M,KAAKg2L,OAAOzuL,UAC5Bq3M,EAAsB5+M,KAAKg2L,OAAOmmB,gBAClC0C,GAAa3iJ,EAAAA,EAAAA,IAAQ,QAAUwiJ,EAAwB1+M,KAAKg2L,OAAOxrL,gBAAa,IAAWk0M,OAAwB,EAASA,EAAsB7Q,IAAM7tM,KAAKg2L,OAAOxrL,SAASqjM,GAAGl2L,OAAS,QAAUgnM,EAAyB3+M,KAAKg2L,OAAOxrL,gBAAa,IAAWm0M,OAAyB,EAASA,EAAuB9Q,GAC7T,OACW98H,GADP6tI,IAGAf,IAGAgB,GAGK5kN,KACZ,mCACD,SAAmB0jN,GACf,IAAImB,EAAwB,CACxB5Q,eAAgB+N,IAEpB,OAAI5tJ,EAAAA,EAAAA,IAAUsvJ,IACHl4J,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAGq5J,EAAuB9+M,KAAK++M,kBAAkBpB,IAE/DmB,CAEd,kCACD,SAAkBt0M,GACd,OAAIkmD,EAAAA,EAAAA,IAASlmD,IACFi7C,EAAAA,GAAAA,GAAO,CAAC,EAAGs2J,GAAyBvxM,IAExCA,CACV,OAzKC0xM,GCeF/oI,GAAQlB,GAAAA,IACRh4E,IAAS8mD,EAAAA,EAAAA,MACT85I,GAAkBznH,GAKlB4rI,GAAsB,mBACtBC,GAAwB,qBAGxBC,GAAgB,GAChBC,GAAiC,8BAErChsI,IAAM,WACF5U,EAAAA,EAAAA,gBAA6B1B,EAAAA,EAAAA,cAA0BhC,GAAAA,MAAoB,SAAA5xD,GACvE,IAAK,IAAIN,EAAIu2M,GAAcv+M,OAAS,EAAGgI,GAAK,EAAGA,IAC3C,IAAKu2M,GAAcv2M,GAAGy2M,4BAA4Bn2M,GAC9C,MAGX,GACJ,IACD,IAAIo2M,GAAUza,GAAAA,QAAe,CACzBkS,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BrgD,OAAQ,WACJ9B,KAAKguE,MACR,GAER,EACD4vF,mBAAoB,WAAW,WAC3B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BgiJ,oBAAoB,EACpBtjJ,SAAS,EACTy+J,gBAAgB,EAChBv6J,SAAS,EACTw6J,aAAc,GACdC,YAAa,CAAC,EACdh1M,UAAUi7C,EAAAA,GAAAA,GAAO,CAAC,EAAGs2J,GAAyBC,QAC9CrrL,MAAO,OACPqQ,SAAU,KACVL,SAAU,KACVnU,OAAQ,OACR5H,UAAW,KACXqc,UAAW,KACXsqH,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,MACNwmB,SAAU,IACVriB,KAAM,CACFylM,MAAO,MAGfjhI,KAAM,CACF3oE,KAAM,MACNwmB,SAAU,IACVriB,KAAM,CACF0J,QAAS,EACT+7L,MAAO,GAEXz3F,GAAI,CACAtkG,QAAS,EACT+7L,MAAO,OAInBwQ,qBAAqB,EACrBC,oBAAoB,EACpBC,0BAA0B,EAC1BC,4CAA4C,EAC5CC,+BAA+B,EAC/BC,uCAAuC,EACvCC,UAAW,KACXC,QAAS,KACTC,SAAU,KACVC,SAAU,KACVC,gBAAiB,UACjBC,cAAc,EACd5D,iBAAiB,EACjBj1M,eAAW,EACX40M,qBAAiB,EACjBkE,sBAAuB,WACnB,EAAKryI,MACR,EACDsyI,oBAAoB,EACpBC,qBAAqB,EACrBjE,aAAc,KACdkE,uBAAuB,EACvBC,mBAAmB,EACnBC,wBAAwB,EACxBjE,qBAAqB,GAE5B,EACD3+C,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,QAAQ51B,EAAAA,EAAAA,KACX,EACD1jD,QAAS,CACLuzB,MAAO,KACPnE,OAAQ,KACR++H,UAAW,KACXm1D,wBAAwB,KAGnC,EACDtiD,uBAAwB,WACpBp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7B/O,WAAW,GAElB,EACD8wD,SAAU,WACN,OAAOr8M,KAAK48M,SACf,EACDjE,oBAAqB,WACjB,OAAO34M,KAAK28M,SACf,EACDl/C,sBAhGyB,WAiGrBz9J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAK09J,mBAAoB,CAC5B+hD,oBAAqB,CACjBjgD,MAAO,OACPjoE,MAAO,uBAGlB,EACDx0C,KAAM,SAASv2C,EAASpP,GACpB4C,KAAKmiD,SAAS31C,EAASpP,GACnBA,IACIA,EAAQuiN,2BAA6BviN,EAAQwiN,4CAC7C5/M,KAAKg/J,4BAA4B,2BAA4B,CACzDQ,MAAO,OACPplK,QAAS,yCAGbgD,EAAQ0gD,cAAgB1gD,EAAQyiN,+BAChC7/M,KAAKg/J,4BAA4B,cAAe,CAC5CQ,MAAO,OACPplK,QAAS,yCAGb,wBAAyBgD,IAAYA,EAAQ0iN,uCAC7C9/M,KAAK2gN,wCAGhB,EACDA,sCA7HyB,WA8HrB3gN,KAAKg/J,4BAA4B,sBAAuB,CACpDQ,MAAO,OACPplK,QAAS,yEAEhB,EACDmpG,MAAO,WAAW,WACdvjG,KAAKmiD,WACLniD,KAAK4gN,eACL5gN,KAAK6gN,iCACL7gN,KAAK8gN,4BACL9gN,KAAK+gN,oBAAsB,KAC3B/gN,KAAK48M,UAAY7rI,GAAE,SAAS3C,SA5JR,sBA6JpBpuE,KAAK28M,UAAY5rI,GAAE,SAAS3C,SA5JR,sBA6JpBpuE,KAAKghN,yBACL,IAAIhnJ,EAAWh6D,KAAKg6D,WAChBh6D,KAAK2sC,OAAO,6BACZ3sC,KAAK48M,UAAUxuI,SAASpU,EAASkU,KAAK,UAE1ClU,EAASoU,SApKG,cAqKZpuE,KAAK48M,UAAU1uI,KAAK,YAAa,sCACjCluE,KAAKihN,6BAA4B,GACjCjhN,KAAKkhN,2BAA2BlhN,KAAK2sC,OAAO,0BAC5C3sC,KAAKmhN,+BAAiC,CAClCrgN,QAAS,SAAAmI,GACL,EAAKm4M,4BAA4Bn4M,EACpC,GAELjJ,KAAKqhN,wBACR,EACDA,uBA3JyB,YA4JjBxyJ,EAAAA,EAAAA,IAAW7uD,KAAK2sC,OAAO,cACvBrtB,GAAAA,EAAAA,IAAW,QAElB,EACD0hM,uBAAwB,WACpBhhN,KAAK28M,UAAU1uI,YAAY+wI,GAAqBh/M,KAAK2sC,OAAO,gBAC/D,EACDu0K,2BAA4B,SAASpgN,GACjCd,KAAKshN,uBAAyBxgN,CACjC,EACDygN,gBAAiB,WACb,MAAO,CAAC,YAAa,UAAW,WAAY,WAAY,eAAgB,0BAC3E,EACDX,aAAc,WAAW,WACrB5gN,KAAKwhN,SAAW,CAAC,EACjB,IAAIC,EAAUzhN,KAAKuhN,mBACnB10J,EAAAA,EAAAA,IAAK40J,GAAS,SAAC3iN,EAAG+mB,GACd,EAAK27L,SAAS37L,GAAU,EAAK85I,sBAAsB95I,EAAQ,CACvDk7H,kBAAmB,CAAC,WAAY,eAC9Bj/H,GAAAA,IACT,GACJ,EACD++L,+BAAgC,WAC5B,IAAI95M,EAAQ/G,KACZA,KAAKo/M,4BAA8B,WAC/B,OAAOr4M,EAAM26M,qBAAN,MAAA36M,EAA8B+Q,UACxC,CACJ,EACDwwJ,YAxLyB,WAyLrBtoK,KAAKmiD,WACLniD,KAAK2hN,2BACL3hN,KAAK4hN,yBACR,EACDF,qBAAsB,SAASz4M,GACvBjJ,KAAK6hN,0BACL7hN,KAAK8hN,iBAET,IAAIC,EAAmBhxI,GAAE92E,GAAOiI,UAAU+sE,GAAGhmE,EAAE0O,SAAWsoD,GAAShmE,GAAOiI,SAAU+G,EAAE0O,QAClFqqM,EAAiBjxI,GAAE9nE,EAAE0O,QAAQm4D,QAAQ,IAAI7/D,OAAO+uM,KAAsBr+M,OAK1E,OAJmBohN,IAAqBC,KAAoBhiN,KAAK28M,UAAU1tI,GAAGhmE,EAAE0O,SAAWsoD,GAASjgE,KAAK28M,UAAU/iN,IAAI,GAAIqP,EAAE0O,UACzG3X,KAAKiiN,0BAA0Bh5M,IAC/CjJ,KAAKkiN,qBAAqBj5M,GAEvBjJ,KAAK2sC,OAAO,wBACtB,EACDs1K,0BAA2B,SAASh5M,GAChC,IACwBy2M,EACpB1/M,KAAK2sC,SADL+yK,mBAEJ,OAAI7wJ,EAAAA,EAAAA,IAAW6wJ,GACJA,EAAmBz2M,GAEvBy2M,CACV,EACDwC,qBAlNyB,SAkNJj5M,GACbjJ,KAAK2sC,OAAO,YACZ1jC,EAAEkzD,iBAENn8D,KAAKguE,MACR,EACD08F,0BAA2B,WACvB,MAvOsB,SAwOzB,EACDC,eAAgB,WACZ3qK,KAAK4pK,iBAAiBgsB,oBAAoB,CACtC/kJ,QAAS,IAAI8qC,KAEjB37E,KAAKmiD,UACR,EACDggK,cAAe,WAEX,IADA,IAAIC,EAAepiN,KAAKqiN,gBACf15M,EAAIy5M,EAAazhN,OAAS,EAAGgI,GAAK,EAAGA,IAAK,CAC/C,IAAI25M,EAAmBF,EAAaz5M,GAAG45M,sBACvC,GAAID,EAAiBvtK,OAASutK,EAAiBztJ,KAC3C,OAAOutJ,EAAaz5M,KAAO3I,IAElC,CACD,OAAO,CACV,EACDqiN,cAAe,WACX,OAAOnD,EACV,EACDsD,iBAAkB,WACd,OAAOnD,GAAQ/D,YAClB,EACD2F,4BAA6B,SAASlzI,GAClC,IAAI00I,EAASziN,KACb66L,GAAgBn9L,OAAOsC,KAAK0iN,uBACxB30I,IACA/tE,KAAK0iN,sBAAwB,WACzBD,EAAOE,uBAAP,MAAAF,EAAiC3qM,UACpC,EACD+iL,GAAgB9sJ,IAAI/tC,KAAK0iN,uBAEhC,EACDC,uBAAwB,WACpB3iN,KAAKi3J,oBAAoBkmD,gBAAgBn9M,KAAK2sC,OAAO,cACrD3sC,KAAK2pK,UACR,EACDg4C,yBA/PyB,WAgQrB,IACiBnC,EACbx/M,KAAK2sC,SADL6yK,YAEA52C,GAAanjH,EAAAA,GAAAA,GAAO,CAAC,EAAG+5J,GACxBjmM,EAAaqvJ,EAAWC,aACrBD,EAAWC,MAClB7oK,KAAKq8M,WAAWnuI,KAAK06F,GAAYv6F,YAAYruE,KAAK+gN,qBAAqB3yI,SAAS70D,GAChFvZ,KAAK+gN,oBAAsBxnM,CAC9B,EACDqpM,yBAA0B,SAAS/hK,GAE/B,OADA7gD,KAAK8hN,iBACEjhK,EAAU7gD,KAAK6iN,QAAU7iN,KAAK8iN,OACxC,EACDC,oBAAqB,WACjB,OAAO/iN,KAAKyhK,gBAAgB,YAAazhK,KAC5C,EACDgjN,kBAAmBlhM,GAAAA,KACnBmhM,gBAAiB,WACb,IAAIC,EAAuBC,EAAsBC,EAAuBC,EAASrjN,KAC7EurJ,EAAY,QAAU23D,EAAwBljN,KAAK+iN,6BAA0B,IAAWG,EAAwBA,EAAwB,CAAC,EACzII,EAAgBtjN,KAAKujN,oBAAoBh4D,EAAUz9E,KAAM,MACzD01I,EAAqB,QAAUL,EAAuB,OAASG,QAAiB,IAAWA,OAAgB,EAASA,EAAc/mL,aAAU,IAAW4mL,EAAuBA,EAAuBrhM,GAAAA,KACrM2hM,EAAwB,QAAUL,EAAwB,OAASE,QAAiB,IAAWA,OAAgB,EAASA,EAAc3hM,gBAAa,IAAWyhM,EAAwBA,EAAwBthM,GAAAA,KAClN9hB,KAAK0jN,SAASJ,GAAgB,WAC1B,IAAID,EAAOM,mBAAX,CAGIN,EAAO12K,OAAO,sBACd4xB,EAAAA,EAAAA,QAAqB8kJ,EAAOx9C,eAAgB,SAEhD,IAAK,IAAI/4G,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,GAE3BouM,EAAsBhlN,KAAtB,MAAAglN,EAAqB,CAAMJ,GAAN,OAAiBzlN,IACtCylN,EAAOxB,0BAA2B,EAClCwB,EAAOn6C,WAAY,EACnBm6C,EAAO7B,SAASxB,UAChBqD,EAAOO,yBACPP,EAAOQ,iBAAiBjlN,SAZvB,CAaJ,IAAI,WACD,IAAIykN,EAAOM,mBAAX,CAGA,IAAK,IAAIn6I,EAAQ1xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM2kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF7rE,EAAK6rE,GAAS3xD,UAAU2xD,GAE5B+5I,EAAmB/kN,KAAnB,MAAA+kN,EAAkB,CAAMH,GAAN,OAAiBzlN,IACnCylN,EAAOxB,0BAA2B,CALjC,CAMJ,GACJ,EACDiC,4BAA6B,SAASC,EAAWC,EAAeC,IACxDztJ,EAAAA,EAAAA,IAAUutJ,GACVA,EAAUjmN,MAAK,SAAAomN,GACPA,EACAD,IAEAD,GAEP,IAAEzmM,OAAM,kBAAMymM,GAAN,IAETD,EAAYE,IAAmBD,GAEtC,EACDnB,MAAO,WAAW,WAMd,GALA7iN,KAAK6jN,iBAAmB,IAAIxmM,GAAAA,GAC5Brd,KAAKmkN,cAAgBnkN,KAAKokN,kBAC1BpkN,KAAK6jN,iBAAiBj1J,MAAK,kBAChB,EAAKu1J,aACf,IACGnkN,KAAKmkN,cAEL,OADAnkN,KAAKkpK,WAAY,EACVlpK,KAAK6jN,iBAAiBjlN,UAEjC,GAAIoB,KAAKqkN,gBACL,OAAQ,IAAIhnM,GAAAA,IAAUze,UAAU0e,UAGpC,GADAtd,KAAKqkN,iBAAkB,EACnBrkN,KAAKskN,+BACEtkN,KAAKskN,wBACZtkN,KAAK6jN,iBAAiBrkN,aACnB,CACH,IAAIsuE,EAAO,WACP,EAAKk1I,kBAAkB,EAAKr2K,OAAO,qBACnC,EAAKm1K,iBACL,EAAKjK,mBAAkB,GACvB,EAAK8E,UAAUr3K,IAAI,aAAc,UACjC,EAAKq3K,UAAU1uI,YAAYgxI,IAAuB,GAClD,EAAKsF,4BAA2B,GAChC,EAAKttD,oBAAoButD,iBACzB,EAAKvM,iBACL,IAAIwM,EAAc,CACdzjK,QAAQ,GAEZ,EAAKwgK,SAASzB,UAAU0E,GACxB,EAAKX,4BAA4BW,EAAYzjK,QAAQ,WACjD,EAAK27J,UAAUr3K,IAAI,aAAc,IACjC,EAAKo/K,mBAAkB,GACvB,EAAKzB,iBACR,IAAE,WACC,EAAKpL,mBAAkB,GACvB,EAAK8E,UAAUr3K,IAAI,aAAc,IACjC,EAAKq3K,UAAU1uI,YAAYgxI,IAAuB,GAClD,EAAK0F,0BAA2B,EAChC,EAAKC,qBACL,EAAKj4K,OAAO,WAAW,GACvB,EAAKk3K,iBAAiBjlN,SACzB,GACJ,EACGoB,KAAK2sC,OAAO,kCACZ3sC,KAAK6kN,iBACL7kN,KAAK8kN,kBAAoBvvL,WAAWu4C,IAEpCA,GAEP,CACD,OAAO9tE,KAAK6jN,iBAAiBvmM,SAChC,EACDimM,oBAAqB,SAASwB,EAAgBn+L,GAY1C,OAXIm+L,IACAA,GAAiBt/J,EAAAA,GAAAA,GAAO,CACpBpgD,KAAM,QACN6uM,0BAA0B,GAC3B6Q,IACC1kM,EAAAA,EAAAA,IAAS0kM,EAAen+L,MACxB6+B,EAAAA,GAAAA,GAAOs/J,EAAen+L,GAAY,CAC9Bpc,SAAUxK,KAAKi3J,oBAAoBzsJ,YAIxCu6M,CACV,EACDC,eAAgB,WACZ,IAAIC,EAAwBC,EAAsBC,EAAuBC,EAASplN,KAC9EurJ,EAAY,QAAU05D,EAAyBjlN,KAAK+iN,6BAA0B,IAAWkC,EAAyBA,EAAyB,CAAC,EAC5II,EAAgBrlN,KAAKujN,oBAAoBh4D,EAAUv9E,KAAM,QACzDs3I,EAAqB,QAAUJ,EAAuB,OAASG,QAAiB,IAAWA,OAAgB,EAASA,EAAc9oL,aAAU,IAAW2oL,EAAuBA,EAAuBpjM,GAAAA,KACrMyjM,EAAwB,QAAUJ,EAAwB,OAASE,QAAiB,IAAWA,OAAgB,EAASA,EAAc1jM,gBAAa,IAAWwjM,EAAwBA,EAAwBrjM,GAAAA,KAClN9hB,KAAK0jN,SAAS2B,GAAgB,WAC1B,IAAIG,EACJJ,EAAOzI,UAAUr3K,IAAI,gBAAiB,IACtC8/K,EAAOV,mBAAkB,GACzB,IAAK,IAAIh7I,EAAQ5xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM6kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClF/rE,EAAK+rE,GAAS7xD,UAAU6xD,GAE5B47I,EAAsB9mN,KAAtB,MAAA8mN,EAAqB,CAAMH,GAAN,OAAiBxnN,IACtCwnN,EAAOK,0BAA2B,EAClC,QAAUD,EAAkBJ,EAAO5D,gBAAa,IAAWgE,GAA2BA,EAAgBtF,WACtGkF,EAAOM,gBAAgB9mN,SAC1B,IAAI,WACDwmN,EAAOzI,UAAUr3K,IAAI,gBAAiB,QACtC,IAAK,IAAIskC,EAAQ9xD,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAM+kE,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAClFjsE,EAAKisE,GAAS/xD,UAAU+xD,GAE5By7I,EAAmB7mN,KAAnB,MAAA6mN,EAAkB,CAAMF,GAAN,OAAiBxnN,IACnCwnN,EAAOK,0BAA2B,CACrC,GACJ,EACD3C,MAAO,WAAW,WACd,IAAK9iN,KAAKqkN,gBACN,OAAQ,IAAIhnM,GAAAA,IAAUze,UAAU0e,UAEpCtd,KAAKqkN,iBAAkB,EACvBrkN,KAAK0lN,gBAAkB,IAAIroM,GAAAA,GAC3B,IAAIsoM,EAAa,CACb3kK,QAAQ,GAqBZ,OAnBIhhD,KAAK2kN,iCACE3kN,KAAK2kN,yBACZ3kN,KAAK0lN,gBAAgBlmN,WAErBQ,KAAKwhN,SAASvB,SAAS0F,GACvB3lN,KAAK4jN,yBACL5jN,KAAKgjN,mBAAkB,GACvBhjN,KAAK8jN,4BAA4B6B,EAAW3kK,QAAQ,WAChD,EAAK4kK,kBACL,EAAKC,gBAAe,GACpB,EAAKC,sBAAqB,GAC1B,EAAKjB,iBACL,EAAKG,gBACR,IAAE,WACC,EAAKV,yBAA0B,EAC/B,EAAK33K,OAAO,WAAW,GACvB,EAAK+4K,gBAAgB9mN,SACxB,KAEEoB,KAAK0lN,gBAAgBpoM,SAC/B,EACDsoM,gBAAiB,WACb,IAAIh+J,EAAgBiV,EAAAA,EAAAA,qBACa78D,KAAK28M,UAAU3gN,KAAK4rD,GAAejnD,QAEhE23E,IAEP,EACDorI,SAAU,SAASn4D,EAAWw6D,EAAkBC,GACxCz6D,GACAy6D,EAAgBA,GAAiBz6D,EAAUhvH,OAASza,GAAAA,KACpDovL,GAAAA,QAAWlxM,KAAK28M,WAAWl3J,EAAAA,GAAAA,GAAO,CAAC,EAAG8lG,EAAW,CAC7ChvH,MAAOypL,EACPrkM,SAAUokM,MAGdA,GAEP,EACDjE,eAAgB,WACZ5Q,GAAAA,KAAQlxM,KAAK28M,WAAW,EAC3B,EACD+H,kBAAmB,SAAS7jK,GACpBA,GAAW7gD,KAAKokN,oBAGpBpkN,KAAKqkN,gBAAkBxjK,EACvB7gD,KAAK8hN,iBACAjhK,GACDk5B,GAAmB/5E,KAAK28M,WAExB97J,GACA7gD,KAAKimN,wBACLjmN,KAAKkmN,mBACLlmN,KAAKmmN,kBACLrsI,GAAkB95E,KAAK28M,WACvB3iI,GAAmBh6E,KAAK28M,aAExB38M,KAAK63M,kBAAkBh3J,GACvB7gD,KAAK28M,UAAU1uI,YAAYgxI,IAAwBp+J,GACnD7gD,KAAKukN,2BAA2B1jK,GAChC7gD,KAAK4kN,sBAET5kN,KAAK6lN,eAAehlK,GACpB7gD,KAAK8lN,qBAAqBjlK,GAC7B,EACD0jK,2BAA4B,SAAS6B,GACjC,IAAIhE,EAAepiN,KAAKqiN,gBACpBlhN,EAAQihN,EAAahhN,QAAQpB,MAC7BomN,IACK,IAAMjlN,IACPnB,KAAKqmN,QAAUC,GAAkBtmN,KAAKwiN,oBACtCJ,EAAahiN,KAAKJ,OAEtBA,KAAK48M,UAAUt3K,IAAI,SAAUtlC,KAAKqmN,SAClCrmN,KAAK28M,UAAUr3K,IAAI,SAAUtlC,KAAKqmN,WAC1B,IAAMllN,IACdihN,EAAa/gN,OAAOF,EAAO,GAC3BmlN,GAAkBtmN,KAAKqmN,SAE9B,EACDR,eAAgB,SAAShlK,GACrB7gD,KAAK48M,UAAU3uI,YAzgBI,oBAygB8BptB,GAAW7gD,KAAK2sC,OAAO,YACxE3sC,KAAK48M,UAAUt3K,IAAI,kBAAmBtlC,KAAK2sC,OAAO,WAAa3sC,KAAK2sC,OAAO,gBAAkB,IAC7F3sC,KAAKumN,qBAAqB1lK,GAAW7gD,KAAK2sC,OAAO,WACpD,EACDm0K,0BAA2B,WACvB,IAAI0F,EAASxmN,KACbA,KAAKymN,6BAA+B,WAChCD,EAAOE,eAAP,MAAAF,EAAyB1uM,UAC5B,CACJ,EACDyuM,qBAAsB,SAASI,GAC3B,IAAInoN,EAAYglJ,GAAa,UAAWxjJ,KAAKw+J,MACzCmoD,EACApoJ,EAAAA,EAAAA,GAAgB1B,EAAAA,EAAAA,cAA0Br+D,EAAWwB,KAAKymN,8BAE1DloJ,EAAAA,EAAAA,IAAiB1B,EAAAA,EAAAA,cAA0Br+D,EAAWwB,KAAKymN,6BAElE,EACDlE,oBAAqB,WAOjB,IANA,IAAIqE,EAAY5mN,KAAK48M,UAAU5gN,KAAK,KAChC6qN,EAAgBD,EAAUjmN,OAAS,EACnC6C,EAAS,CACTuxC,MAAO,KACP8f,KAAM,MAEDlsD,EAAI,EAAGA,GAAKk+M,KACZrjN,EAAOuxC,OAAS6xK,EAAUh3I,GAAGjnE,GAAGsmE,GAAG80E,MACpCvgJ,EAAOuxC,MAAQ6xK,EAAUh3I,GAAGjnE,KAE3BnF,EAAOqxD,MAAQ+xJ,EAAUh3I,GAAGi3I,EAAgBl+M,GAAGsmE,GAAG80E,MACnDvgJ,EAAOqxD,KAAO+xJ,EAAUh3I,GAAGi3I,EAAgBl+M,KAE3CnF,EAAOuxC,QAASvxC,EAAOqxD,MAPKlsD,KAWpC,OAAOnF,CACV,EACDkjN,eAAgB,SAASz9M,GACrB,GAziBM,QAyiBFq9I,GAAiBr9I,IAAmBjJ,KAAKmiN,gBAA7C,CAGA,IAAIG,EAAmBtiN,KAAKuiN,sBACxBuE,EAAiBxE,EAAiBvtK,MAClCgyK,EAAgBzE,EAAiBztJ,KACjCmyJ,GAAe/9M,EAAEipJ,UAAYjpJ,EAAE0O,SAAWovM,EAAcntN,IAAI,GAC5DqtN,EAAoBh+M,EAAEipJ,UAAYjpJ,EAAE0O,SAAWmvM,EAAeltN,IAAI,GAClEstN,EAAiB,IAAM5E,EAAiB3hN,OACxCwmN,GAAmBlnJ,GAASjgE,KAAK48M,UAAUhjN,IAAI,GAAIqP,EAAE0O,QACzD,GAAIqvM,GAAeC,GAAqBC,GAAkBC,EAAiB,CACvEl+M,EAAEkzD,iBACF,IAAIirJ,EAAgBn+M,EAAEipJ,SAAW60D,EAAgBD,EACjDvoJ,EAAAA,EAAAA,QAAqB6oJ,EAAe,WACpC7oJ,EAAAA,EAAAA,QAAqB6oJ,EAAe,QACvC,CAbA,CAcJ,EACDtB,qBAAsB,SAASa,IACvB7lK,EAAAA,EAAAA,QACA9gD,KAAKqnN,8BAA8BV,GACnC3mN,KAAKsnN,uCAAuCX,GAEnD,EACDU,8BAA+B,SAASlmM,GAC/BnhB,KAAKshN,yBAGNngM,EACAomM,GAAAA,IAA2BvnN,KAAKshN,wBAEhCiG,GAAAA,OAA8BvnN,KAAKshN,wBAE1C,EACDgG,uCAAwC,SAASE,GAC7C,IAAIC,EACAC,EAAclkE,GAAa,SAAUxjJ,KAAKw+J,MAC1C,EAGA,QAAUipD,EAAwBznN,KAAKmhN,sCAAmC,IAAWsG,EAAwBA,EAAwB,CAAC,EAFzHE,EADjB,EACIA,YACS7mN,EAFb,EAEIA,QAEJy9D,EAAAA,EAAAA,IAAiBopJ,EAAaD,EAAa5mN,GAC3C,IAAI8mN,EAAgB5nN,KAAK2sC,OAAO,sBAChC,GAAI66K,GAAiBI,EAAe,CAChC,IAAIC,EAAW7nN,KAAK8nN,4BAA4BzoJ,UAC5C,YAAc2Y,GAAAA,OAAe1D,aAC7BuzI,EAAWA,EAAS95K,IAAI9zC,KAE5BskE,EAAAA,EAAAA,GAAgBspJ,EAAUH,EAAa5mN,GACvCd,KAAKmhN,+BAA+BwG,YAAcE,CACrD,CACJ,EACDzG,4BAA6B,SAASn4M,GAClC,IAAI8+M,GAAe,EACfH,EAAgB5nN,KAAK2sC,OAAO,uBAC5BkiB,EAAAA,EAAAA,IAAW+4J,KACXG,EAAeH,EAAc3+M,IAE5B8+M,GAAiB/nN,KAAK6hN,0BACvB7hN,KAAKguE,MAEZ,EACD85I,0BAA2B,WACvB,OAAO9nN,KAAK48M,SACf,EACD9hI,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKgoN,0BACLhoN,KAAK4iN,yBAAyB5iN,KAAK2sC,OAAO,WAC7C,EACDq7K,wBAAyB,WAChBhoN,KAAK28M,UAAU9xM,SAASokE,GAAGjvE,KAAKg6D,aACjCh6D,KAAK28M,UAAUhuI,SAAS3uE,KAAKg6D,WAEpC,EACDi+I,eAAgB,WACZ,IAAIgQ,GAAwBjoN,KAAKqkN,iBAAmBrkN,KAAK2sC,OAAO,kBAC3C3sC,KAAK2sC,OAAO,YAAc3sC,KAAKokN,kBAEhDpkN,KAAKkpK,WAAY,EAGjBlpK,KAAKkoN,yBAA2BD,IAGpCjoN,KAAKkoN,yBAA0B,EAC/BloN,KAAKgoN,0BACLhoN,KAAKmiD,WACR,EACDiiK,gBAAiB,WACb,IAAKpkN,KAAK2sC,OAAO,0BACb,OAAO,EAEX,QAAI,IAAW3sC,KAAKmkN,cAChB,OAAOnkN,KAAKmkN,cAEhB,IAAIgE,EAAUnoN,KAAKg6D,WAAWnvD,SAC9B,GAAIs9M,EAAQl5I,GAAG,YACX,OAAO,EAEX,IAAIm5I,GAAW,EAQf,OAPAD,EAAQp6K,IAAIo6K,EAAQ9oJ,WAAWxS,MAAM,WAEjC,GAAI,SADWkkB,GAAE/wE,MACOslC,IAAI,WAExB,OADA8iL,GAAW,GACJ,CAEd,IACMA,IAAavrJ,EAAAA,EAAAA,UAAqBoD,SAASkoJ,EAAQvuN,IAAI,GACjE,EACD0+M,mBAAoB,WAAW,WACvB+P,EAAsB,IAAIhrM,GAAAA,GAC1BirM,EAAwBtoN,KAAK2sC,OAAO,mBACpCwzK,EAAkBngN,KAAK+qK,aAAau9C,GACpCjuI,EAAar6E,KAAK4pK,iBAAiBvG,wBAA0BilD,EAkBjE,OAjBAnI,GAAmBA,EAAgB7xK,OAAO,CACtC/mC,UAAWs6I,GAAiB7hJ,KAAKs6L,YACjCiuB,SAAS,EACTluI,WAAYA,EACZ9jC,WAAY,WACR8xK,EAAoBzpN,UAChB,EAAK+tC,OAAO,kCACZ,EAAKi7H,mBAEZ,IAEL5nK,KAAKwoN,uCAAuCxoN,KAAK2sC,OAAO,wBACxD07K,EAAoBz5J,MAAK,WACjB,EAAKjiB,OAAO,YACZ,EAAKu5K,kBAEZ,IACMmC,EAAoB/qM,SAC9B,EACDmrM,6BApqByB,WAqqBrB,IAAI,EAKAzoN,KAAK2sC,SAJMplC,EADf,EACIA,UACiB40M,EAFrB,EAEIA,gBACqBM,EAHzB,EAGIA,oBACiBD,EAJrB,EAIIA,gBAEJ,MAAO,CACHj1M,UAAWA,EACX40M,gBAAiBA,EACjBC,MAAOp8M,KAAKg6D,WACZsgI,SAAUt6L,KAAK28M,UACfN,SAAUr8M,KAAK48M,UACfN,aAAct8M,KAAKwhN,SAASlF,aAC5BC,wBAAyBv8M,KAAKwhN,SAASjF,wBACvCC,gBAAiBA,EACjBC,oBAAqBA,EAE5B,EACDmF,wBAvrByB,WAwrBrB5hN,KAAKi3J,oBAAsB,IAAIilD,GAA0Bl8M,KAAKyoN,+BACjE,EACDD,uCAAwC,SAAS7B,GAC7C,IAAInoN,EAAYglJ,GAAa+nB,GAAevrK,KAAKw+J,MACjDjgG,EAAAA,EAAAA,IAAiBv+D,KAAK48M,UAAWp+M,GAC7BmoN,GACApoJ,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp+M,EAAW,CACvC+iJ,SAAU,WACN,OAAO,CACV,EACDmH,aAAc,WACV,MAAO,MACV,EACDC,oBAAqB,SAAS56E,GACrBA,GACD/tE,KAAKmqJ,wBAAwBp8E,EAEpC,EACDu7E,gBAAiBxnI,GAAAA,KACjBliB,UAAU,IACX,SAAAqJ,GACC,IAAIi5D,EAAgBj5D,EAAEi5D,cAAcA,cAE1B78D,GACN68D,GAAiB,CAAC,GADlB78D,KAEAqjN,EAAU,UAAYrjN,EACtBsjN,EAAc,cAAgBtjN,EAC9BujN,EAAkBF,IAAY7hE,GAAoB59I,GACtDA,EAAE4rJ,uBAAwB,EACtB3yF,IAAiB,IAAUj5D,EAAE4/M,cAAgBF,IAAgBD,GAAWE,IACxE3/M,EAAEkzD,gBAET,GAER,EACDyoJ,mBAAoB,WAChB5kN,KAAK28M,UAAUhuI,SAAS3uE,KAAKg6D,YAC7Bh6D,KAAK48M,UAAU1tI,QAClB,EACD+2I,sBA/tByB,WAguBrB,IAAI6C,EAAoB9oN,KAAKi3J,oBAAoBz8E,gBAC7C,IAAWsuI,IAGOA,EAAkBnoN,OAAS,GAE7CooN,GAAAA,IAAa,QAAS/oN,KAAKw+J,MAElC,EACD0nD,iBAAkB,WACd,IAAI4C,EAAoB9oN,KAAKi3J,oBAAoBz8E,WACjDx6E,KAAK48M,UAAUjuI,SAASm6I,GACxB9oN,KAAK28M,UAAUhuI,SAAS3uE,KAAK48M,UAChC,EACDuJ,gBAAiB,SAAS/oN,GAGlB4C,KAAK2sC,SADLkU,UAEWC,EAAAA,EAAAA,QACX9gD,KAAK8hN,iBACL9hN,KAAKgpN,sBAEZ,EACDA,oBAAqB,WACjBhpN,KAAKi3J,oBAAoBmmD,eAAep9M,KAAKyhK,gBAAgB,aAC7DzhK,KAAKy2L,iBACLz2L,KAAK0oK,oBACL1oK,KAAKipN,iBACR,EACDA,gBA7vByB,WA8vBrBjpN,KAAKi3J,oBAAoBiyD,iBAC5B,EACDC,oBAAqB,WACjB,OAAOxlK,EAAAA,EAAAA,IAAS3jD,KAAKi3J,oBAAoBmnD,iBAAiBxkN,IAAI,KAAOoG,KAAK2sC,OAAO,UACpF,EACDi3K,uBAAwB,WACpB,IAAI/iK,EAAU7gD,KAAK2sC,OAAO,WACtBy8K,EAAQr4I,GAAElU,EAAAA,EAAAA,WACVwsJ,EAAc,QAAUrxI,GAAAA,OAAev+E,UAAYqkB,GAAQmuL,OAC3Dqd,EAAqBtpN,KAAKmpN,sBAC1BI,EAAuBH,EAAM96I,SAAS6wI,IACtCqK,GAA0BD,GAAwB1oK,GAAWyoK,EAC7DG,EAAwBF,KAA0B1oK,IAAYyoK,GAAsBtpN,KAAKgkG,WACzFqlH,IACII,GACAL,EAAM/6I,YAAY8wI,IAClBllN,GAAOo2E,SAAS,EAAGrwE,KAAK0pN,sBACxB1pN,KAAK0pN,0BAAuB,GACrBF,IACPxpN,KAAK0pN,qBAAuBzvN,GAAO+xE,YACnCo9I,EAAMh7I,SAAS+wI,KAG1B,EACD1oB,eAAgB,WACZz2L,KAAKi3J,oBAAoBumD,uBACzBx9M,KAAK2pN,2BACL3pN,KAAKi3J,oBAAoB2yD,iBAC5B,EACDD,yBAA0B,WACtB,IAAIvL,EAAmBp+M,KAAKi3J,oBAAoBmnD,iBAC5Cl2J,EAAkB2U,EAAAA,EAAAA,qBAClBgtJ,GAA0BlmK,EAAAA,EAAAA,IAASy6J,EAAiBxkN,IAAI,IACxDkwN,EAAeD,EAA0B3hK,EAAgB4U,YAAckO,GAAcozI,GACrF2L,EAAgBF,EAA0B5vN,GAAO4uE,YAAcqC,GAAekzI,GAClFp+M,KAAK48M,UAAUt3K,IAAI,CACf3U,MAAOm5L,EACPt9L,OAAQu9L,GAEf,EACDrhD,kBAAmB,WACf,IAAI73H,EAAU7wC,KAAK28M,UAAU/iN,IAAI,GACjCoG,KAAK28M,UAAUr3K,IAAI,CACftE,SAAUhhC,KAAKyhK,gBAAgB,WAAY5wH,GAC3ClQ,SAAU3gC,KAAKyhK,gBAAgB,WAAY5wH,GAC3CjsB,UAAW5kB,KAAKyhK,gBAAgB,YAAa5wH,GAC7C5P,UAAWjhC,KAAKyhK,gBAAgB,YAAa5wH,GAC7ClgB,MAAO3wB,KAAKyhK,gBAAgB,QAAS5wH,GACrCrkB,OAAQxsB,KAAKyhK,gBAAgB,SAAU5wH,IAE9C,EACDg1H,aAAc,WACV,OAAO7lK,KAAK28M,SACf,EACD9D,sBAAuB,WAAW,WAC9B74M,KAAKi6M,oBAAsB/0D,GAAYllJ,KAAK28M,UAAW,MAAM,SAAA54E,GAAI,OAAI,EAAKm2E,iBAAiBn2E,EAA1B,GACpE,EACDm2E,iBAAkB,SAAS98M,GACvB,IAAI6L,EAAI7L,EAAQ8kE,cACZ0/E,EAAU7wE,GAAE9nE,EAAE0O,SACdiqI,EAAQ3yE,GAAGjvE,KAAK28M,YAAe38M,KAAK2sC,OAAO,sBAC3C3sC,KAAKmiD,SAAL,MAAAniD,KAAiB8X,UAExB,EACDqxJ,WAAY,WACR,OAAOnpK,KAAK2sC,OAAO,UACtB,EACDg7H,mBAAoB,SAAS9mH,GACrBA,EACI7gD,KAAK2sC,OAAO,YACZ3sC,KAAK4iN,yBAAyB/hK,GAGlC7gD,KAAK4iN,yBAAyB/hK,EAErC,EACD+mH,kBAAmB,WACf5nK,KAAKmmN,iBACR,EACD78C,OAAQ,WACJ,IAAIlsK,EAAU4C,KAAK2sC,SACd3sC,KAAKkoN,yBAA4B9qN,EAAQ4sN,aAC1ChqN,KAAKs6L,WAAWxsI,QAEpB9tD,KAAK0kN,mBAAkB,GACvB1kN,KAAK6kN,iBACL7kN,KAAK44M,kBACR,EACDiM,eAt1ByB,WAu1BjB7kN,KAAK8kN,mBACLxvL,aAAat1B,KAAK8kN,mBAEtB9kN,KAAK8kN,kBAAoB,IAC5B,EACDpyE,SAAU,WACNw+D,GAAAA,KAAQlxM,KAAK28M,WAAW,GACxBrnL,aAAat1B,KAAKiqN,iBAClBjqN,KAAKihN,6BAA4B,GACjCjhN,KAAK8lN,sBAAqB,GAC1B9lN,KAAKukN,4BAA2B,GAChCvkN,KAAKumN,sBAAqB,GAC1BvmN,KAAKwhN,SAAW,KAChBxhN,KAAKmhN,+BAAiC,KACtCnhN,KAAKmiD,WACLniD,KAAK4jN,yBACL5jN,KAAK2sC,OAAO,YAAc25K,GAAkBtmN,KAAKqmN,SACjDrmN,KAAK48M,UAAUl/M,SACfsC,KAAK28M,UAAUj/M,QAClB,EACD8qK,oBAAqB,SAASsB,GAC1B9pK,KAAK28M,UAAU1uI,YAz3BG,SAy3B8B67F,EACnD,EACDhK,eAAgB,SAASliK,GAAM,WAEhBM,EAEPN,EAFAM,MACM9E,EACNwE,EADAxE,KAEJ,GAAI4G,KAAKuhN,kBAAkBh8M,SAASnM,GAChC4G,KAAK4gN,oBAGT,OAAQxnN,GACJ,IAAK,YA6DL,IAAK,sBACL,IAAK,qBACL,IAAK,wBACD,MA9DJ,IAAK,UACD4G,KAAK6lN,eAAe7lN,KAAK2sC,OAAO,YAChC3sC,KAAK4jN,yBACL,MACJ,IAAK,eACD5jN,KAAK6lN,eAAe7lN,KAAK2sC,OAAO,YAChC,MACJ,IAAK,QACL,IAAK,SAGL,IAAK,WACL,IAAK,WACL,IAAK,YACL,IAAK,YACD3sC,KAAKmmN,kBACL,MACJ,IAAK,WACDnmN,KAAKi3J,oBAAoBmmD,eAAep9M,KAAK2sC,OAAO,aACpD3sC,KAAKi3J,oBAAoBymD,6BAA4B,GACrD19M,KAAKmmN,kBACLnmN,KAAK4jN,yBACL,MACJ,IAAK,UACD5jN,KAAK4iN,yBAAyB1kN,GAAO0wD,MAAK,WACtC,IAAIs7J,EACJ,OAAO,QAAUA,EAAwB,EAAKC,wBAAqB,IAAWD,OAAwB,EAASA,EAAsBp7J,YAAY,EACpJ,IAAEQ,MAAK,WACJ,IAAI86J,EACJ,OAAO,QAAUA,EAAyB,EAAKD,wBAAqB,IAAWC,OAAyB,EAASA,EAAuB5qN,QAC3I,IACD,MACJ,IAAK,YACDQ,KAAKi3J,oBAAoBkmD,gBAAgBj/M,GACzC8B,KAAKypK,cACLzpK,KAAK4jN,yBACL,MACJ,IAAK,kBACD5jN,KAAKi3J,oBAAoBomD,sBAAsBn/M,GAC/C8B,KAAKy2L,iBACLz2L,KAAK4jN,yBACL,MACJ,IAAK,eACD5jN,KAAKghN,yBACL,MACJ,IAAK,iBACL,IAAK,kBACDhhN,KAAKkoN,yBAA0B,EAC/BloN,KAAKspK,SACLtpK,KAAKypK,cACL,MACJ,IAAK,wBACDzpK,KAAKqnN,+BAA8B,GACnCrnN,KAAKkhN,2BAA2BhjN,GAChC8B,KAAKqnN,8BAA8BrnN,KAAK2sC,OAAO,YAC/C,MACJ,IAAK,qBACD3sC,KAAKsnN,uCAAuCtnN,KAAK2sC,OAAO,YACxD,MAKJ,IAAK,aACD3sC,KAAKkoN,yBAA0B,EAC/BloN,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,sBACDoC,KAAKi3J,oBAAoBsmD,mBAAqBr/M,EAC9C,MACJ,IAAK,cACD8B,KAAK2hN,2BACL,MACJ,IAAK,kBACD3hN,KAAKi3J,oBAAoBulD,gBAAkBt+M,EAC3C,MACJ,IAAK,sBACD8B,KAAK2gN,wCACL3gN,KAAKwoN,uCAAuCtqN,GAC5C,MACJ,QACI8B,KAAKmiD,SAASvkD,GAEzB,EACDmwE,OAAQ,SAASs8I,GAAS,WACtBA,OAAU,IAAWA,GAAWrqN,KAAK2sC,OAAO,WAAa09K,EACzD,IAAI7mN,EAAS,IAAI6Z,GAAAA,GACjB,GAAIgtM,IAAYrqN,KAAK2sC,OAAO,WACxB,OAAOnpC,EAAOsrD,YAAY9uD,KAAM,CAACqqN,IAAU/sM,UAE/C,IAAIgtM,EAAkB,IAAIjtM,GAAAA,GAU1B,OATArd,KAAKmqN,iBAAmBG,EACxBtqN,KAAK2sC,OAAO,UAAW09K,GACvBC,EAAgBhtM,UAAUsxC,MAAK,kBACpB,EAAKu7J,iBACZ3mN,EAAOsrD,YAAY,EAAM,CAAC,EAAKniB,OAAO,YACzC,IAAE2iB,MAAK,kBACG,EAAK66J,iBACZ3mN,EAAOhE,QACV,IACMgE,EAAO8Z,SACjB,EACDg9K,SAAU,WACN,OAAOt6L,KAAK28M,SACf,EACD7uI,KAAM,WACF,OAAO9tE,KAAK+tE,QAAO,EACtB,EACDC,KAAM,WACF,OAAOhuE,KAAK+tE,QAAO,EACtB,EACDl9B,QAAS,WACL,OAAOgxG,GAAiB7hJ,KAAK28M,UAChC,EACDxB,QAAS,WACDn7M,KAAKkoN,yBACLloN,KAAKi3J,oBAAoBymD,6BAA4B,GACrD19M,KAAKmmN,gBAAgB,CACjBoE,oBAAoB,IAExBvwI,GAAmBh6E,KAAK28M,YAExB38M,KAAKmiD,UAEZ,IAELk9J,GAAQ/D,WAAa,SAAA/nM,GAAM,OHxlCTi3M,EGwlC6Bj3M,EHvlC3C+nM,IAAaltJ,EAAAA,GAAAA,eAAco8J,EAAQlP,IADrB,IAAAkP,CGwlCS,EAC3Bh4C,GAAkB,YAAa6sC,IAC/B,UCpkCIoL,GAAiBt+J,GAAAA,EAAAA,QAAc,CAC/BpJ,KAAM,SAASiX,EAAU58D,EAAS89E,GAC9Bl7E,KAAKgnJ,UAAYhtF,EACjBh6D,KAAKktD,SAAW9vD,EAChB4C,KAAK0qN,SAAWxvI,EAChB3J,GAAwBvX,EAAUh6D,KAAMA,KAAK0yI,UAC7C1yI,KAAK86E,SACR,EACDA,QAAS,WACL,IAAI6vI,EAAe55I,GAAE,SAAS3C,SAzBD,+BA0B7BpuE,KAAKgnJ,UAAUrhJ,OAAOglN,GACtB3qN,KAAK4qN,UAAY,GACjB5qN,KAAK6qN,iBACR,EACDA,gBAAiB,WACb7qN,KAAK8qN,cAAc,WAAY9qN,KAAK+qN,gBAAgBjuN,KAAKkD,OACzDA,KAAK8qN,cAAc,UAAW9qN,KAAKgrN,eAAeluN,KAAKkD,MAC1D,EACD8qN,cAAe,SAASzsJ,EAAO/vB,GAC3B,IAAI4sC,EAAUl7E,KAAK0qN,SACfO,EAAajrN,KAAKktD,SAASuuB,YAAYpd,GACvC6sJ,EApCU,SAAStwI,EAAa78E,EAAIR,GAC5C,IAMIq9J,EANAuwD,EAAmB,SAASjtN,GACxB08J,IAAa18J,IACbX,EAASW,EAAO08J,GAChBA,EAAW18J,EAElB,EAED,MAAO,CACHquC,QAASquC,EAAY78E,EAAIotN,GACzB7gC,MAAO,WACH6gC,EAAiBptN,IACpB,EAER,CAsBqBqtN,CAAgBprN,KAAKktD,SAAS0tB,eAAgB,WACxD,OAAOqwI,EAAW/vI,EACrB,GAAG,SAASh9E,EAAO08J,GAChB56J,KAAKqrN,QAAS,EACd/8K,EAAOpwC,EAAO08J,EACjB,EAAC99J,KAAKkD,OACPA,KAAK4qN,UAAUxqN,KAAK8qN,EACvB,EACDI,aAAc,WAKV,GAJAtrN,KAAKqrN,QAAS,GACdx+J,EAAAA,EAAAA,IAAK7sD,KAAK4qN,WAAY,SAAS9rN,EAAGosN,GAC9BA,EAAQ5gC,OACX,IACGtqL,KAAKqrN,OACL,OAAO,CAEd,EACDN,gBAAiB,SAAS7sN,EAAO08J,GAC7B56J,KAAKgnJ,UAAU/4E,YAxDI,sBAwDgC/vE,GACnD8B,KAAKgnJ,UAAU94E,KAAK,kBAAmBhwE,GACvC8B,KAAKurN,kBAAkBrtN,EAC1B,EACDqtN,kBAAmB,SAAS3nE,GACxB,IAAI4nE,EAAiBxrN,KAAKktD,SAAS2lB,MAC/B24I,GAAkB5nE,GAClB4nE,EAAeC,gBAAgBzrN,KAAKgnJ,UAE3C,EACDgkE,eAAgB,SAAS9sN,EAAO08J,GAC5B56J,KAAKgnJ,UAAU/4E,YApEK,0BAoE8B,IAAW/vE,IAAUA,EAC1E,EACDw0I,SAAU,YACN7lF,EAAAA,EAAAA,IAAK7sD,KAAK4qN,WAAY,SAAS9rN,EAAGosN,GAC9BA,EAAQ3+K,SACX,GACJ,IAELk+K,GAAe54I,YAAc,SAAS7X,GAClC,OAAO0X,GAAqB1X,EAAUh6D,KACzC,EACD,UClFIsJ,GAAMC,KAAKD,IACXoiN,GAAkB,SAwCtBj1D,GAAgB,CACZ7F,QAtCc7J,GAAAA,QAAgB,CAC9BxqH,MAAO,SAAStzB,GACZjJ,KAAK8oJ,gBAAkBpoF,GAAUz3D,GACjCjJ,KAAK2rN,YAAY1iN,EACpB,EACD0iN,YAAa,SAAS1iN,GAClB,IAAI2iN,EAAc,YAAa5rN,KAAOA,KAAK+mC,QARhC,IASX/mC,KAAK6rN,WAAat2L,WAAW,WACzBv1B,KAAK6nJ,eAAe5+I,GACpBjJ,KAAKgoJ,WAAW0jE,GAAiBziN,EAAG,CAChC0O,OAAQ1O,EAAE0O,SAEd3X,KAAK+nJ,eACR,EAACjrJ,KAAKkD,MAAO4rN,EACjB,EACDzoE,KAAM,SAASl6I,GACPjJ,KAAK8rN,eAAe7iN,IACpBjJ,KAAK0nJ,QAAQz+I,EAEpB,EACD6iN,eAAgB,SAAS7iN,GACrB,IAAIg4E,EAAQ8kE,GAAW/lJ,KAAK8oJ,gBAAiBpoF,GAAUz3D,IACvD,OAAOK,GAAI23E,EAAMlzE,GAvBJ,GAuB2BzE,GAAI23E,EAAMjzE,GAvBrC,CAwBhB,EACD9D,IAAK,WACDlK,KAAK+rN,YACR,EACDA,WAAY,WACRz2L,aAAat1B,KAAK6rN,WACrB,EACD7qK,OAAQ,WACJhhD,KAAK+rN,YACR,EACDx/K,QAAS,WACLvsC,KAAK+rN,YACR,IAIDp5D,QAAQ,EACR5oH,OAAQ,CAAC2hL,MAEb,OACUA,GCvCNM,GAAwB,eACxBC,GAAoCzoE,GAAa,cAAewoE,IAChEE,GAA6B1oE,GAAa2oE,GAAgBH,IAC1DI,GAAyB,gBACzBC,GAAclgK,GAAAA,EAAAA,QAAc,CAC5B6kB,MAAO,SAASxkE,GACZ,IAAIwtD,EAAW+W,GAAEvkE,GACjB+xD,EAAAA,EAAAA,GAAgBvE,EAAUiyJ,GAAmCjsN,KAAKssN,oBAAoBxvN,KAAKkD,QACvFilJ,IAASjtE,GAAAA,gBACTzZ,EAAAA,EAAAA,GAAgBvE,EAAUkyJ,GAA4BlsN,KAAKusN,aAAazvN,KAAKkD,MAEpF,EACDusN,aAAc,SAAStjN,GACfw8I,GAAax8I,KAAO+uE,GAAAA,eAGxBh4E,KAAKwsN,iBAAiBvjN,EACzB,EACDqjN,oBAAqB,SAASrjN,GAC1BjJ,KAAKwsN,iBAAiBvjN,EACzB,EACDujN,iBAAkB,SAASvjN,GACvB,OAAO2uE,GAAU,CACbvyE,KAAM+mN,GACNlqJ,cAAej5D,GAEtB,EACD2jJ,SAAU,SAASpgJ,GACf+xD,EAAAA,EAAAA,IAAiB/xD,EAAS,gBAC7B,IAELgkE,GAAc47I,GAAwB,IAAIC,IACnC,IAAIjzN,GAAOgzN,GCadK,GAAa,UACbC,GAAwB,WACxBC,GAAiC,8BAQjCC,GAAyB,sBACzBC,GAAkB,8BAElBC,GAAW,KACXC,GAAa,OACbC,GAAa,OACbC,GAAc,QAGdC,GAAa,OACbC,GAAc,QACdC,GAAmBxoB,GAAAA,QAAe,CAClCuU,iBAAkB,IAAMsT,GACxB3V,eAAgB,WACZ,IAAI3zD,EAAO,SAASxwH,EAAU1pB,GACrB49I,GAAoB59I,KACrBA,EAAEkzD,iBACFlzD,EAAE83D,kBACF/gE,KAAKqtN,WAAW16L,EAAU1pB,GAEjC,EACD,OAAOw8C,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BmrK,MAAO,SAASrkN,GACZA,EAAEkzD,iBACFn8D,KAAKutN,iBAAiBtkN,EACzB,EACDk7I,MAAOnkJ,KAAKutN,iBACZC,UAAWrqE,EAAKrmJ,KAAKkD,KAAMgtN,IAC3BS,WAAYtqE,EAAKrmJ,KAAKkD,KAAMitN,IAC5BS,QAASvqE,EAAKrmJ,KAAKkD,KAAM8sN,IACzBa,UAAWxqE,EAAKrmJ,KAAKkD,KAAM+sN,IAC3Ba,OAAQzqE,EAAKrmJ,KAAKkD,KAAM8sN,IACxBe,SAAU1qE,EAAKrmJ,KAAKkD,KAAM+sN,IAC1BzoE,KAAMnB,EAAKrmJ,KAAKkD,KAAMmtN,IACtBjjN,IAAKi5I,EAAKrmJ,KAAKkD,KAAMktN,KAE5B,EACDK,iBAAkB,SAAStkN,GACvB,IAAI6kN,EAAe/8I,GAAE/wE,KAAK2sC,OAAO,mBACjC,GAAKmhL,EAAantN,OAAlB,CAGA,IAAI26I,EAAWt7I,KAAK+tN,aAAaD,GAC7B,OAASxyE,QAAY,IAAWA,GAAYA,EAASgiC,SACrDt9K,KAAKguN,2BAA2BF,EAAcxyE,EAASgiC,QAAS,CAC5Dv8K,MAAOkI,IAGfjJ,KAAKiuN,mBAAkBxoK,EAAAA,GAAAA,GAAO,CAAC,EAAGx8C,EAAG,CACjC0O,OAAQm2M,EAAal0N,IAAI,GACzB4lE,cAAesuJ,EAAal0N,IAAI,KATnC,CAWJ,EACDgkK,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B+rK,eAAe,EACfC,eAAe,EACfjoK,MAAO,GACPkoK,aAAc,OACdC,eAAgB,KAChBC,YAAa,KACbC,WAAY,KACZC,gBAAiB,IACjBC,kBAAmB,KACnBC,qBAAsB,KACtBjwK,WAAY2rE,GAAAA,OAA2B,iCACvCukG,kBAAkB,EAClBpnH,WAAY,KACZwB,gBAAiB,KACjB6lH,gBAAiB,CAAC,EAClBC,qBAAsB,WACtBC,qBAAqB,EACrBC,eAAgB,KAChB92E,iBAAa,EACb+2E,aAAc,SAAS10N,GACnB,OAAOA,EAAOA,EAAKkrB,cAAW,CACjC,EACDypM,YAAa,SAAS30N,GAClB,OAAOA,EAAOA,EAAKumD,aAAU,CAChC,GAER,EACD0iD,MAAO,WACHvjG,KAAKkvN,wBACLlvN,KAAK4oG,sBACL5oG,KAAKmiD,WACLniD,KAAKmvN,sBACLnvN,KAAKmoG,oBACR,EACD+mH,sBAAuB,WACnB,IAAIj3E,EAAcj4I,KAAK2sC,OAAO,eAC9B3sC,KAAKovN,eAAiBn3E,GAAc7jF,EAAAA,GAAAA,IAAcp0D,KAAK2sC,OAAO,qBAAkB,CACnF,EACDg+H,eAAgB,WACZ3qK,KAAKqvN,uBACLrvN,KAAKsvN,2BACLtvN,KAAKmiD,UACR,EACDuoH,0BAA2B,WACvB,MAjGsB,MAkGzB,EACD4kD,yBAA0B,WACtB,IAAIz0I,EAAY76E,KAAKuvN,gBACrBvvN,KAAK4pK,iBAAiBgsB,oBAAoB,CACtChxL,KAAM,IAAI81E,GAAiB,SAASF,EAAYlgF,IACxC8sC,EAAAA,EAAAA,IAAc9sC,GACd0F,KAAKwvN,4BAA4Bl1N,EAAMkgF,IAEnCK,IAAahsB,EAAAA,EAAAA,IAAWgsB,EAAUl0E,QAClCrM,EAAOugF,EAAUl0E,KAAKrM,IAE1BkgF,EAAW7zE,KAAK8C,QAAO2kD,EAAAA,GAAAA,eAAc9zD,EAAM,MAElD,EAACwC,KAAKkD,MAAOA,KAAKyvN,qBAAsBzvN,KAAK2sC,OAAO,kCAAmCkuC,IAE/F,EACD40I,mBAAoB,WAChB,MAAO,CAAC,OAAQ,OACnB,EACDF,cAAe,WACX,GAAIvvN,KAAKovN,eACL,MAAO,CACHzoN,KAAM3G,KAAKovN,eAGtB,EACDI,4BAA6B,SAASl1N,EAAMkgF,IACpCnsB,EAAAA,EAAAA,IAAU/zD,EAAKqM,OACf6zE,EAAW7zE,KAAKrM,EAAKqM,OAErB0nD,EAAAA,EAAAA,IAAU/zD,EAAK6yE,OACfqN,EAAWrN,KAAK7yE,EAAK6yE,KAE5B,EACDkiJ,qBAAsB,WAAW,WACzBK,EAAW1tD,GAAchiK,KAAKg6D,WA3IjB,UA4IjB,GAAK01J,EAAS/uN,SAAUX,KAAK2sC,OAAO,SAAShsC,OAA7C,CAGA,IAAIulD,EAAQwpK,EAAS3rN,KAAI,SAAAiT,GACrB,IACaxK,EAETwK,EAFAxK,QACSpP,EACT4Z,EADA5Z,QAQJ,MANyB,KAAKgZ,KAAK5J,EAAQ8gE,aAAelwE,EAAQoiB,SAE9DpiB,EAAQoiB,SAAW,EAAKmwM,qBAAqBnjN,GAE7CukE,GAAEvkE,GAAS9O,SAERN,CACV,IACD4C,KAAK2sC,OAAO,QAASuZ,EAdpB,CAeJ,EACDypK,qBAAsB,SAAS/qN,GAC3B,IAAI2wC,EAhKkB,QAgKqB,IAAI2W,GAAAA,EAC3CquI,EAAYxpH,GAAEnsE,GAAMsqE,SAAS5jD,QAAQ6iD,WAAW,gBAAgBC,SAASw+I,IAE7E,OADA5sN,KAAKirK,cAAc11H,EAAYglJ,GACxBhlJ,CACV,EACDq6K,mBAAoB,WAChB,MAAO,CACH5uH,UAAU,EAEjB,EACDmuH,oBAAqB,WACjBnvN,KAAK6vN,oBAAsB,CAC9B,EACDhqD,aAAc,WACV,OAAO7lK,KAAKg6D,UACf,EACDw/I,gBAAiB,SAASvwM,GAEtB,GADAjJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WACrB9X,KAAKi5M,eAAehwM,EAAE0O,QAA3B,CAGA,IAAIm4M,EAAkB/+I,GAAE/wE,KAAK2sC,OAAO,mBACpC,GAAImjL,EAAgBnvN,OAChBX,KAAK+vN,gBAAgBD,OAClB,CACH,IAAIE,EAAchwN,KAAKiwN,iBACnBD,EAAYrvN,QACZX,KAAK2sC,OAAO,iBAAkBk1G,GAAiBmuE,GAEtD,CATA,CAUJ,EACDtW,iBAAkB,WACd15M,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAI8pI,EAAU7wE,GAAE/wE,KAAK2sC,OAAO,mBAC5B3sC,KAAKkwN,wBAAwBtuE,GAAS,EACzC,EACDs3D,kBApLkC,SAoLhBl/I,GACd,OAAOA,EAASh+D,KAAKgE,KAAKm5M,iBAC7B,EACD8W,eAAgB,SAASp7J,GACrB,IAAIi7J,EAAkB/+I,GAAE/wE,KAAK2sC,OAAO,mBACpC,GAAImjL,EAAgBnvN,OAChB,OAAOmvN,EAEX,IAAI3uN,EAAQnB,KAAK2sC,OAAO,uBAAyB3sC,KAAK2sC,OAAO,iBAAmB,EAC5EwjL,EAAiBnwN,KAAKg5M,oBACtBhjM,EAAYm6M,EAAexvN,OAAS,EAIxC,OAHIQ,EAAQ,IACRA,EAAQ0zD,EAAO7+C,EAAY,GAExBm6M,EAAevgJ,GAAGzuE,EAC5B,EACDksN,WAAY,SAAS16L,GACjB,IACIy9L,EADAC,EAASrwN,KAAKswN,qBAElB,OAAQ39L,GACJ,IA5MQ,SA6MR,KAAKm6L,GACDsD,EAAapwN,KAAKuwN,UAAUF,GAC5B,MACJ,IA/MU,WAgNV,KAAKtD,GACDqD,EAAapwN,KAAKwwN,UAAUH,GAC5B,MACJ,KAAKpD,GACDmD,EAAapwN,KAAK2sC,OAAO,cAAgB3sC,KAAKuwN,UAAUF,GAAUrwN,KAAKwwN,UAAUH,GACjF,MACJ,KAAKrD,GACDoD,EAAapwN,KAAK2sC,OAAO,cAAgB3sC,KAAKwwN,UAAUH,GAAUrwN,KAAKuwN,UAAUF,GACjF,MACJ,KAAKlD,GACDiD,EAAaC,EAAOt7K,QACpB,MACJ,KAAKm4K,GACDkD,EAAaC,EAAOx7J,OACpB,MACJ,QACI,OAAO,EAEX,IAAMu7J,EAAWzvN,QACjBX,KAAK2sC,OAAO,iBAAkBk1G,GAAiBuuE,GAEtD,EACDK,iBAAkB,SAASC,GAEvB,OADAA,EAAgBA,GAAiB1wN,KAAK2wN,iBACjBn2L,OAAO,WAC/B,EACD81L,mBAAoB,SAASI,GACzB,OAAO1wN,KAAKywN,iBAAiBC,EAChC,EACDH,UAAW,SAASF,GAChB,IAAIzuE,EAAU5hJ,KAAKiwN,iBACfW,EAAcP,EAAOlvN,MAAMygJ,GAC3BivE,EAAQR,EAAOx7J,OACfi8J,EAAQ//I,GAAEs/I,EAAOO,EAAc,IAC/BG,EAAO/wN,KAAK2sC,OAAO,iBAIvB,OAHI,IAAMmkL,EAAMnwN,QAAUowN,IACtBD,EAAQD,GAELC,CACV,EACDN,UAAW,SAASH,GAChB,IAAIzuE,EAAU5hJ,KAAKiwN,gBAAe,GAC9BW,EAAcP,EAAOlvN,MAAMygJ,GAC3BovE,EAASX,EAAOt7K,QAChB+7K,EAAQ//I,GAAEs/I,EAAOO,EAAc,IAC/BG,EAAO/wN,KAAK2sC,OAAO,iBAIvB,OAHI,IAAMmkL,EAAMnwN,QAAUowN,IACtBD,EAAQE,GAELF,CACV,EACDG,mBAAoB,SAASrvE,GACzB5hJ,KAAKkxN,WAAWtvE,EACnB,EACDsuE,wBAAyB,SAASv4M,EAAQgiM,EAAWwX,GACjD,IAAIvvE,EAAU7wE,GAAEp5D,GACZiqI,EAAQjhJ,SACRX,KAAKoxN,2BACLpxN,KAAKqxN,eAAezvE,EAASuvE,GAC7BnxN,KAAK45M,kBAAkBD,EAAW/3D,IAEtC5hJ,KAAKsxN,+BACR,EACDF,yBAA0B,SAASxvE,GAC/B5hJ,KAAK86M,QAAQ,oBAAoBzsJ,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,mBAAqB3sC,KAAKuxN,mBAAqB,KAAM3vE,EAC/G,EACDyvE,eAAgB,SAASzvE,EAASuvE,IACzBA,GAAmBnxN,KAAK2sC,OAAO,kBAChC3sC,KAAK86M,QAAQ,KAAM96M,KAAKuxN,mBAAoB3vE,GAE5C5hJ,KAAK86M,QAAQ,KAAM,KAAMl5D,EAEhC,EACD4vE,YAAa,SAAAx3J,GAAQ,OAAIA,GAAY,SAAW+W,GAAE/W,GAAUkU,KAAK,gBAA5C,EACrB6hJ,gBAAiB,SAASnuE,GACtB,GAAKA,GAAYA,EAAQjhJ,OAAzB,CAGAX,KAAKkwN,wBAAwBtuE,GAAS,GACtC5hJ,KAAK0uN,qBAAqB1uN,KAAKuxN,oBAC/B,IACmBrD,EACfluN,KAAK2sC,SADLuhL,cAEAuD,EAAmBzxN,KAAKwxN,YAAY5vE,GACpCssE,IAAkBuD,GAClBzxN,KAAKixN,mBAAmBrvE,EAR3B,CAUJ,EACD8vE,uBAAwB,SAAS9sN,GAC7B,IAAIpB,EAASutE,KACTthB,EAAOzvD,KAQX,OAPAA,KAAK2xN,eAAe9kK,MAAM,WACtB,IAAIikK,EAAQ//I,GAAE/wE,MACd,GAAI8wN,EAAMx2N,KAAKm1D,EAAKmiK,kBAAoBhtN,EAEpC,OADApB,EAASstN,GACF,CAEd,IACMttN,CACV,EACDquN,gBAAiB,SAASjtN,GACtB,OAAO5E,KAAK2sC,OAAO,SAASvrC,QAAQwD,EACvC,EACDktN,mBAAoB,SAASltN,EAAMuI,EAAUjP,EAAO08J,GAChD,IAAIk2D,EAAQ9wN,KAAK0xN,uBAAuB9sN,GACnCksN,EAAMnwN,SAGNX,KAAKqnC,YAAY0qL,UAAUlgJ,YAAYi/I,GAAOxF,aAAan+M,EAAUjP,IACtE8B,KAAKgyN,aAAalB,EAAOlsN,GAEX,aAAeuI,GAAYjP,GAEzC8B,KAAKyrN,gBAAgBqF,GAE5B,EACDrF,gBAjUkC,SAiUlBqF,GACRA,EAAM7hJ,GAAGjvE,KAAK2sC,OAAO,oBACrB3sC,KAAK2sC,OAAO,iBAAkB,KAErC,EACDqlL,aAAc,SAASlB,GACnB,IAAIx1E,EAAWt7I,KAAK+tN,aAAa+C,GAC7B3vN,EAAQ2vN,EAAMx2N,KAAK0F,KAAKiyN,iBAC5BjyN,KAAKkyN,YAAYlyN,KAAK6vN,oBAAsB1uN,EAAOm6I,EAAU,KAAMw1E,EACtE,EACDQ,8BAA+BxvM,GAAAA,KAC/Bg+I,eAAgB,SAASliK,GACrB,GAAI,UAAYA,EAAKxE,KAAM,CACvB,IAAI07B,EAAUl3B,EAAKiyC,SAAS5gC,MAAM49M,IAClC,GAAI/3L,GAAWA,EAAQn0B,OAAQ,CAC3B,IAAIwM,EAAW2nB,EAAQA,EAAQn0B,OAAS,GACpCwxN,EAAWv0N,EAAKiyC,SAASjuC,QAAQ,IAAMuL,EAAU,IACjDvI,EAAO5E,KAAK2sC,OAAOwlL,GAEvB,YADAnyN,KAAK8xN,mBAAmBltN,EAAMuI,EAAUvP,EAAKM,MAAON,EAAKi9J,cAE5D,CACJ,CACD,OAAQj9J,EAAKxE,MACT,IAAK,QACL,IAAK,kBACL,IAAK,uBACL,IAAK,qBACD4G,KAAKmvN,sBACLnvN,KAAKypK,cACL,MACJ,IAAK,aACDzpK,KAAKmoG,qBACLnoG,KAAKoyN,sBACL,MACJ,IAAK,aACL,IAAK,mBACDpyN,KAAKoyN,sBACL,MACJ,IAAK,eA+BL,IAAK,cACL,IAAK,eACDpyN,KAAKypK,cACL,MA/BJ,IAAK,iBACDzpK,KAAKqyN,0BACL,MACJ,IAAK,cAYL,IAAK,gBACL,IAAK,gBACL,IAAK,sBACD,MAbJ,IAAK,aACL,IAAK,kBACDryN,KAAKsyN,mBACL,MACJ,IAAK,oBACDtyN,KAAKuyN,0BACL,MACJ,IAAK,uBACDvyN,KAAK0uN,qBAAuB1uN,KAAK2/J,sBAAsB,wBACvD,MAKJ,IAAK,iBACD3/J,KAAKkwN,wBAAwBtyN,EAAKi9J,eAAe,GAAO,GACxD76J,KAAK+vN,gBAAgBh/I,GAAEnzE,EAAKM,QAC5B,MACJ,IAAK,cACD8B,KAAKkvN,wBACLlvN,KAAKsvN,2BACLtvN,KAAKypK,cACL,MAKJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,EACD6rK,YAAa,WAET,OADAzpK,KAAK2sC,OAAO,iBAAkB,MACvB3sC,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UACpC,EACD06M,cAAe,WAEX,OADAxyN,KAAKyyN,yBACEzyN,KAAK+oG,gBAAgB9B,cAC/B,EACDwrH,uBAAwB,WACpBzyN,KAAK0yN,4BAA8B,CACtC,EACDC,uBAAwB,WACpB3yN,KAAK0yN,6BAA+B,CACvC,EACDE,uBAAwB,WACpB5yN,KAAK0yN,4BAA8B,IACtC,EACDG,0BAA2B,SAASC,GAChC,IAAI5sK,EAAQlmD,KAAK2sC,OAAO,SACpB3sC,KAAK6+J,cAAgB34G,GAASlmD,KAAK+yN,sBACnC/yN,KAAK6vN,oBAAsB3pK,EAAMvlD,OAC5BX,KAAK4jG,gBAAkB,IAAM5jG,KAAK0yN,8BACnC1yN,KAAK2sC,SAASuZ,MAAQA,EAAMj2C,OAAO6iN,EAAS/tN,MAAM/E,KAAK0yN,+BAE3D1yN,KAAK4yN,yBACL5yN,KAAKgzN,mBAELhzN,KAAK2sC,OAAO,QAASmmL,EAAS/tN,QAErC,EACDiuN,gBAAiB,WACbhzN,KAAKizN,kBACLjzN,KAAKi4M,gBACR,EACDib,4BAA6B,WACzBlzN,KAAK4yN,yBACL5yN,KAAK2sC,OAAO,QAAS3sC,KAAK2sC,OAAO,SACpC,EACDomL,mBAAoB,WAChB,OAAO,MAAQ/yN,KAAK0yN,6BAA+B1yN,KAAKmzN,0BAC3D,EACDA,yBAA0B,WACtB,OAAO,CACV,EACD7pD,OAAQ,WACJtpK,KAAK44M,mBACL54M,KAAKozN,sBACLpzN,KAAKqzN,mBAAqBrzN,KAAKqzN,WAC/BrzN,KAAKy4M,mBACR,EACD2a,oBAAqB,WACjBriJ,GAAE/wE,KAAKszN,kBAAkBxlK,OAC5B,EACD4kF,SAAU,WACN1yI,KAAKmiD,WACL7sB,aAAat1B,KAAKuzN,kBACrB,EACD5pD,SAAU,WACN3pK,KAAKmvN,sBACLnvN,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACDw7M,eAAgB,WACZ,OAAOtzN,KAAKg6D,UACf,EACDw5J,WAAY,WACR,OAAO/G,EACV,EACDgH,kBAAmB,WACf,OAAOzzN,KAAKwzN,aAAe9G,EAC9B,EACDgH,mBAAoB,WAChB,MAnekB,kBAoerB,EACDC,uBAAwB,WACpB,MAreuB,uBAse1B,EACDC,cAAe,WACX,MAAO,IAAM5zN,KAAKwzN,YACrB,EACD5B,aAAc,WACV,MAhfY,YAiff,EACDK,cAAe,WACX,MAlfa,aAmfhB,EACDtB,cAAe,WACX,OAAO3wN,KAAKszN,iBAAiBt3N,KAAKgE,KAAK4zN,gBAC1C,EACDtrD,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAK0uN,qBAAuB1uN,KAAK2/J,sBAAsB,wBACvD3/J,KAAKg6D,WAAWoU,SA/fD,iBAggBfpuE,KAAKizN,iBACR,EACDA,iBAAiBzjK,EAAAA,GAAAA,gBAAe,WAC5BxvD,KAAKs4M,oBACR,IACDL,eAAgB,WACZj4M,KAAKu4M,yBACR,EACDz9H,QAAS,WACL96E,KAAKmiD,WACLniD,KAAK6zN,oBACL7zN,KAAKsyN,mBACLtyN,KAAKuyN,yBACR,EACDuB,iBAAkB,kBAAMj5J,GAAAA,IAAN,EAClBg5J,kBAzfkC,WAyfd,WACZE,EAAe/zN,KAAK4zN,gBACpB5mE,EAAehtJ,KAAK8zN,mBACpBE,EAAsBxwE,GAAaywE,GAAgBj0N,KAAKw+J,MACxD01D,EAAwB1wE,GAAawJ,EAAchtJ,KAAKw+J,MACxD21D,EAAgB,IAAI9zE,IAAO,SAAAziJ,GAC3B,IACWmD,EACPnD,EADAmD,MAEJ,EAAKqzN,wBAAwBrzN,EAChC,IACDw9D,EAAAA,EAAAA,IAAiBv+D,KAAKszN,iBAAkBU,EAAqBD,GAC7Dx1J,EAAAA,EAAAA,IAAiBv+D,KAAKszN,iBAAkBY,EAAuBH,GAC/Dx1J,EAAAA,EAAAA,GAAgBv+D,KAAKszN,iBAAkBU,EAAqBD,GAAc,SAAA9qN,GAAC,OAAI,EAAKglN,kBAAkBhlN,EAA3B,IAC3Es1D,EAAAA,EAAAA,GAAgBv+D,KAAKszN,iBAAkBY,EAAuBH,GAAc,SAAA9qN,GACxEkrN,EAAc1yE,QAAQ,CAClBj1I,QAASukE,GAAE9nE,EAAE0O,QACb5W,MAAOkI,GAEd,GACJ,EACDglN,kBAAmB,SAAShlN,EAAGrL,EAAMmC,GACjCC,KAAKq0N,oBAAoBprN,EAAG,cAAerL,EAAMmC,EACpD,EACDq0N,wBAAyB,SAASnrN,GACzBjJ,KAAK2sC,OAAO,uBAGjB3sC,KAAKs0N,kBAAoB,WAGrB,GAFAh/L,aAAat1B,KAAKuzN,mBAClBvzN,KAAKs0N,kBAAoB,MACrBrrN,EAAEg6D,qBAAN,CAGA,IAAI2+E,EAAU7wE,GAAE9nE,EAAE0O,QACd48M,EAAe3yE,EAAQ9xE,QAAQ9vE,KAAK2wN,iBACpC6D,EAAoBx0N,KAAKy0N,kBAAkB7yE,GAC3C2yE,EAAa5zN,QAAUX,KAAKi5M,eAAe,OAASub,QAAqB,IAAWA,OAAoB,EAASA,EAAkB56N,IAAI,KACvIoG,KAAK2sC,OAAO,iBAAkBk1G,GAAiB0yE,GALlD,CAOJ,EAACz3N,KAAKkD,MACPA,KAAKuzN,kBAAoBh+L,WAAWv1B,KAAK00N,uBAAuB53N,KAAKkD,OACxE,EACDy0N,kBAAmB,SAAS7yE,GACxB,GAAIA,EAAQ3yE,GAAGh9C,IACX,OAAO2vH,EAGP,IADAA,EAAUA,EAAQ/2I,SACX+2I,EAAQjhJ,SAAWk8D,EAAAA,EAAAA,WAAsB+kF,EAAQhoJ,IAAI,MAAQijE,EAAAA,EAAAA,mBAA8B+kF,EAAQhoJ,IAAI,KAAK,CAC/G,GAAIgoJ,EAAQ3yE,GAAGh9C,IACX,OAAO2vH,EAEXA,EAAUA,EAAQ/2I,QACrB,CAER,EACD6pN,uBAAwB,WACpB10N,KAAKs0N,mBAAqBt0N,KAAKs0N,mBAClC,EACD7a,kBAAmB,WACfz5M,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK00N,wBACR,EACDpC,iBAAkB,WACd,IAAIqC,EAAiB30N,KAAKszN,iBACtBS,EAAe/zN,KAAK4zN,gBACpBp1N,EAAYglJ,GAAa2oE,GAAgBnsN,KAAKw+J,MAClDjgG,EAAAA,EAAAA,IAAiBo2J,EAAgBn2N,EAAWu1N,GAC5Cx1J,EAAAA,EAAAA,GAAgBo2J,EAAgBn2N,EAAWu1N,EAAc,CACrDhtL,QAAS/mC,KAAK40N,mBACf50N,KAAK60N,iBAAiB/3N,KAAKkD,MACjC,EACD40N,gBAAiB,WACb,OAAO50N,KAAK2sC,OAAO,kBACtB,EACDmoL,qBAAsB,WAClB,OAAO90N,KAAKqhK,sBAAsB,aACrC,EACDwzD,iBAAkB,SAAS5rN,GACnBjJ,KAAK80N,uBACL90N,KAAKq0N,oBAAoBprN,EAAG,cAE5BA,EAAE+3C,QAAS,CAElB,EACDuxK,wBAAyB,WACrB,IAAIoC,EAAiB30N,KAAKszN,iBACtBS,EAAe/zN,KAAK4zN,gBACpBp1N,EAAYglJ,GAAauxE,GAAsB/0N,KAAKw+J,MACxDjgG,EAAAA,EAAAA,IAAiBo2J,EAAgBn2N,EAAWu1N,GAC5Cx1J,EAAAA,EAAAA,GAAgBo2J,EAAgBn2N,EAAWu1N,EAAc/zN,KAAKg1N,wBAAwBl4N,KAAKkD,MAC9F,EACDi1N,4BAA6B,WACzB,OAAOj1N,KAAKqhK,sBAAsB,oBACrC,EACD2zD,wBAAyB,SAAS/rN,GAC1BjJ,KAAKi1N,8BACLj1N,KAAKq0N,oBAAoBprN,EAAG,qBAE5BA,EAAE+3C,QAAS,CAElB,EACDs3J,mBAAoB,WAChB,IAAIpyJ,EAAQlmD,KAAK2sC,OAAO,UAAY,GAChC3sC,KAAK6vN,oBACL7vN,KAAKk1N,aAAahvK,EAAMnhD,MAAM/E,KAAK6vN,sBAEnC7vN,KAAKk1N,aAAahvK,EAEzB,EACDgvK,aAAc,SAAShvK,GACfA,EAAMvlD,SACNksD,EAAAA,EAAAA,IAAK3G,EAAO,SAAS/kD,EAAOm6I,GACxBt7I,KAAKkyN,YAAYlyN,KAAK6vN,oBAAsB1uN,EAAOm6I,EACtD,EAACx+I,KAAKkD,OAEXA,KAAKoyN,qBACR,EACDF,YAAa,SAAS/wN,EAAOm6I,EAAU9gE,EAAY26I,GAC/C,IAAIC,EACA38E,EAAY,QAAU28E,EAAc,OAASj0N,QAAS,IAAWA,OAAQ,EAASA,EAAMyD,YAAS,IAAWwwN,EAAcA,EAAcj0N,EAC5Iq5E,EAAaA,GAAcx6E,KAAKszN,iBAChC,IAAI+B,EAAar1N,KAAKs1N,iBAAiB78E,EAAW6C,EAAU9gE,EAAY26I,GACxEn1N,KAAKu1N,gBAAgBF,EAAY/5E,EAAU7C,GAC3C48E,EAAWnnJ,KAAKluE,KAAK2sC,OAAO,oBAC5B3sC,KAAKw1N,sBAAsBl6E,EAAU+5E,GACrC,IAAII,EAAez1N,KAAK01N,gBAAgBL,GACpCM,EAAuB31N,KAAK41N,mBAAmB,CAC/Cz0N,MAAOs3I,EACP6C,SAAUA,EACV/zI,UAAWs6I,GAAiB4zE,GAC5BI,aAAc71N,KAAKyzN,oBACnBqC,oBAAqB91N,KAAK2sC,OAAO,kBAEjC8iB,EAAOzvD,KAUX,OATAqvD,EAAAA,GAAAA,IAAKsmK,GAAsB/mK,MAAM,SAAS6mK,GACtChmK,EAAKsmK,uBAAuB,CACxBj2J,YAAau1J,EACbW,YAAaP,EACbn6E,SAAUA,EACV7C,UAAWA,IAEfhpF,EAAKwmK,yBAAyB90N,EAAOm6I,EAAUuG,GAAiBwzE,GACnE,IACMA,CACV,EACDK,gBAAiB,SAASL,GACtB,IAAII,EAAeJ,EAAWr5N,KAAK,gCAEnC,OADAy5N,EAAapnJ,YAAYs+I,IAClB8I,CACV,EACDD,sBAAuB,SAASl6E,EAAUwyE,GACjCxyE,GAAaA,EAASgiC,SAG3B/+G,EAAAA,EAAAA,GAAgBuvJ,EAAcmG,GAAgB,SAAShrN,GACnDjJ,KAAKguN,2BAA2BF,EAAcxyE,EAASgiC,QAAS,CAC5Dv8K,MAAOkI,GAEd,EAACnM,KAAKkD,MACV,EACD41N,mBAAoB,SAASh4N,GACzB,IAAIs4N,EAAmBl2N,KAAKm2N,qBAAqBv4N,GAC7CwwN,EAAepuN,KAAK+qK,aAAamrD,GACrCl2N,KAAKo2N,uBAAuBx4N,GAC5B,IAAIy4N,EAAkBtlJ,GAAE/wE,KAAKs2N,sBAAsBlI,EAAcxwN,IACjE,OAAKy4N,EAAgB/nJ,SAASs+I,IAGvB5sN,KAAKu2N,yBAAyB34N,EAAMy4N,GAFhCz4N,EAAK2J,SAGnB,EACDgvN,yBAA0B,SAAS34N,EAAM44N,GAIrC,OAHAzlJ,GAAEnzE,EAAK2J,WAAWynE,YAAYwnJ,GAC9B54N,EAAK2J,UAAYs6I,GAAiB20E,GAClCx2N,KAAKo2N,uBAAuBx4N,GACrB44N,CACV,EACDJ,uBAAwB,SAASx4N,GAC7B,IAAI+zB,EAAU,CAAC86L,GAAaC,GAAuB9uN,EAAKi4N,cACxD9kJ,GAAEnzE,EAAK2J,WAAW6mE,SAASz8C,EAAQllB,KAAK,KAC3C,EACDgqN,uBAAwB,SAASj8I,EAAY66I,EAAYl0N,GACrDk0N,EAAW1mJ,SAAS6L,EACvB,EACD86I,iBAAkB,SAASn0N,EAAOm6I,EAAU9gE,EAAY26I,GACpD,IAAIE,EAAatkJ,GAAE,SAOnB,GANA,IAAI/wE,KAAKqnC,YAAY0qL,UAAUsD,EAAYr1N,KAAK02N,eAAgBp7E,GAAY,CAAC,GACzE65E,GAAkBA,EAAex0N,OACjCw0N,EAAenmJ,YAAYqmJ,GAE3Br1N,KAAKy2N,uBAAuBh4N,KAAKuB,KAAMw6E,EAAY66I,EAAYl0N,GAE/DnB,KAAK2sC,OAAO,sBAAuB,CACnC,IAAIgqL,EAAe32N,KAAKovN,eAAiBpvN,KAAKovN,eAAe9zE,GAAYA,EACzE+5E,EAAWnnJ,KAAK,QAASyoJ,EAC5B,CACD,OAAOtB,CACV,EACDqB,aAAc,WACV,IAAIjnK,EAAOzvD,KACX,MAAO,CACH46E,YAAa,WACT,OAAOnrB,EAAK9iB,OAAO,iCACtB,EACDkmC,MAAOpjB,EACPgsB,YAAa,SAASpd,GAClB,IAAItK,EAAOtE,EAAK9iB,OAAO0xB,EAAQ,QAE/B,OADajK,EAAAA,GAAAA,IAAcL,EAE9B,EAER,EACDgiK,uBAAwBj0M,GAAAA,KACxBm0M,yBAA0B,SAAS90N,EAAOm6I,EAAUx7E,GAChD9/D,KAAK42N,sBAAL52N,CAA4B,CACxB8/D,YAAaA,EACb24E,UAAWt3I,EACXm6I,SAAUA,GAEjB,EACDi6E,gBAAiB,SAAS/oN,EAASlS,EAAM6G,GACrCqL,EAAQ4hE,SAAS,CAACq+I,GAAYzsN,KAAKwzN,cAAc/mN,KAAK,MAAMnS,KAAK0F,KAAK4xN,eAAgBt3N,GAAMA,KAAK0F,KAAKiyN,gBAAiB9wN,EAC1H,EACDkxN,wBAAyB,WACrB,OAAOryN,KAAK62N,kBAAoB72N,KAAK2/J,sBAAsB,iBAAkB,CACzEnzJ,QAASxM,KAAKwM,UACdu0I,kBAAmB,CAAC,WAAY,YAChC+1E,SAAU,aAEjB,EACDF,qBAAsB,WAClB,OAAO52N,KAAK62N,mBAAqB72N,KAAKqyN,yBACzC,EACD8D,qBAAsB,SAASv4N,GAC3B,IAAItD,EAAOsD,EAAK09I,SACZy7E,EAAmBn5N,EAAKm5N,kBAAoB/2N,KAAK2sC,OAAO,wBAE5D,OADeryC,GAAQA,EAAKy8N,IACTn5N,EAAKk4N,mBAC3B,EACDQ,sBAAuB,SAASlI,EAAc4I,GAC1C,OAAO5I,EAAa9/K,OAAO,CACvBmH,MAAOuhL,EAAW17E,SAClB/zI,UAAWyvN,EAAWzvN,UACtBpG,MAAO61N,EAAW71N,MAClBo1C,WAAYv2C,KAAKi3N,wBAAwB7I,EAAc4I,IAE9D,EACDC,wBAAyB,WACrB,OAAOn1M,GAAAA,IACV,EACDo1M,uBAAwB,WACpB,OAAOl3N,KAAKszN,gBACf,EACDlB,oBAAqB,SAASlsK,GAC1BA,EAAQA,GAASlmD,KAAK2sC,OAAO,SAC7B,IAAI8R,EAAaz+C,KAAK2sC,OAAO,cACzBwqL,GAAc14K,GAAcyH,GAASA,EAAMvlD,QAAUX,KAAK+oG,gBAAgBpE,YAC1EwyH,GAAcn3N,KAAKo3N,WACnBp3N,KAAKo3N,SAAS15N,SACdsC,KAAKo3N,SAAW,KAChBp3N,KAAK86M,QAAQ,aAAS,IAErBqc,IACDn3N,KAAKo3N,SAAWp3N,KAAKo3N,UAAYrmJ,GAAE,SAAS3C,SAAS,oBACrDpuE,KAAKo3N,SAASzoJ,SAAS3uE,KAAKk3N,0BACxBl3N,KAAK2sC,OAAO,oBACZ3sC,KAAKo3N,SAASzwN,KAAK83C,GAEnBz+C,KAAKo3N,SAASjqJ,KAAK1uB,IAG3Bz+C,KAAKg6D,WAAWiU,YApxBD,uBAoxBgCkpJ,EAClD,EACD9C,oBAAqB,SAASgD,EAASC,EAAmBC,EAAYC,GAClEx3N,KAAKy3N,kBAAkBJ,EAAQ1/M,OAAQ2/M,GAAmB7xK,EAAAA,GAAAA,GAAO8xK,EAAY,CACzEx2N,MAAOs2N,IACPG,EACP,EACDC,kBAAmB,SAASC,EAAWJ,EAAmBC,EAAYC,GAClE,IAAI3xM,EAAS7lB,KAAK2/J,sBAAsB23D,GAAmB7xK,EAAAA,GAAAA,GAAO,CAC9Dq7F,qBAAsB,eACvB02E,IACH,OAAOx3N,KAAK23N,sBAAsBD,EAAW7xM,EAAQ0xM,EACxD,EACDvJ,2BAA4B,SAAS0J,EAAW52N,EAASy2N,EAAYC,GACjE,IAAI3xM,EAAS7lB,KAAK8gK,cAAchgK,GAAS2kD,EAAAA,GAAAA,GAAO,CAC5Cq7F,qBAAsB,eACvB02E,IACH,OAAOx3N,KAAK23N,sBAAsBD,EAAW7xM,EAAQ0xM,EACxD,EACDI,sBAAuB,SAASD,EAAW7xM,EAAQ0xM,GAC/C,IAAIzJ,EAAe9tN,KAAK43N,oBAAoB7mJ,GAAE2mJ,IAC1C95N,GAAO6nD,EAAAA,GAAAA,GAAO,CAAC,EAAG8xK,GACtB,OAAO1xM,GAAO4/B,EAAAA,GAAAA,GAAO8xK,EAAYv3N,KAAK63N,kBAAkB/J,GAAelwN,GAC1E,EACDi6N,kBAAmB,SAAS/J,GACxB,MAAO,CACHhuJ,YAAa+hF,GAAiBisE,GAC9Br1E,UAAWz4I,KAAK2wN,gBAAgBxvN,MAAM2sN,GACtCxyE,SAAUt7I,KAAK+tN,aAAaD,GAEnC,EACD8J,oBAAqB,SAAS59J,GAC1B,OAAO+W,GAAE/W,GAAU8V,QAAQ9vE,KAAK4zN,gBACnC,EACD7F,aAAc,SAASjuJ,GACnB,OAAOiR,GAAEjR,GAAaxlE,KAAK0F,KAAK4xN,eACnC,EACDkG,sBAAuB,SAAS5xK,EAAO+kB,GACnC,IAAIznE,EAAS,EAMb,OALI0iD,IACA2G,EAAAA,EAAAA,IAAK3G,GAAQ,SAASpnD,EAAG8F,GACrBpB,GAAUwnE,GAAcpmE,EAAMqmE,IAAiB,EAClD,IAEEznE,CACV,EACD+tN,iBAAkB,WAId,OAHKvxN,KAAK+3N,iBACN/3N,KAAK+3N,eAAiB,MAAQ,IAAI7rK,GAAAA,GAE/BlsD,KAAK+3N,cACf,EACDpG,aAAc,WACV,OAAO3xN,KAAK2wN,eACf,EACDqH,eAAgB,WACZ,OAAOh4N,KAAKszN,gBACf,IACF7wK,QAAQwlD,IACXmlH,GAAiB2E,UAAYkG,GAC7B,UC34BI50K,GAAW8I,GAAAA,EAAAA,SACX+rK,GAAe/rK,GAAAA,EAAAA,QAAc,CAC7BpJ,KAAM,SAASo1K,GACXn4N,KAAKo4N,kBAAoBD,CAC5B,EACDE,mBAAoBh1K,GACpBi1K,mBAAoBj1K,GACpBk1K,eAAgBl1K,GAChBm1K,eAAgBn1K,GAChBo1K,YAAap1K,GACbq1K,cAAe,SAASv3N,GACpB,IAAIw3N,EAAc34N,KAAK44N,sBAAsBz3N,GAC7C,OAAOnB,KAAKu4N,eAAe,CAACv4N,KAAKs4N,mBAAmBK,KAAe,EACtE,EACDE,WAAY,SAASrjL,EAAME,GACvB,OAAI11C,KAAKo4N,kBAAkBU,mBAChB1lK,EAAAA,GAAAA,cAAa5d,EAAME,GAEnBF,IAASE,CAEvB,EACDqjL,WAAY,WACR/4N,KAAKisI,OAAS,CAAC,CAClB,EACD+sF,SAAU,WACNh5N,KAAKisI,OAAS,IACjB,EACDgtF,cAAe51K,GACf61K,mBAAoB,SAASh7N,GACzB,OAAI8B,KAAKm5N,uBAAuBj7N,GACrBA,EAEP8B,KAAKo5N,aAAal7N,GACX8B,KAAKq5N,oBAAoBn7N,GAEhC8B,KAAKs5N,QAAQp7N,GACN8B,KAAKu5N,wBAAwBr7N,GAEjC8B,KAAKq5N,oBAAoBr5N,KAAKq4N,mBAAmBn6N,GAC3D,EACDs7N,SAAU,SAASt7N,GACf,OAAI8B,KAAKm5N,uBAAuBj7N,GACrB8B,KAAK44N,sBAAsB16N,GAElC8B,KAAKo5N,aAAal7N,GACXA,EAEP8B,KAAKs5N,QAAQp7N,GACN8B,KAAK44N,sBAAsB54N,KAAKu5N,wBAAwBr7N,IAE5D8B,KAAKq4N,mBAAmBn6N,EAClC,EACDu7N,eAAgB,SAASv7N,GACrB,GAAI8B,KAAKm5N,uBAAuBj7N,GAC5B,OAAO8B,KAAK05N,0BAA0Bx7N,GAE1C,GAAI8B,KAAKo5N,aAAal7N,GAClB,OAAO8B,KAAK05N,0BAA0B15N,KAAKq5N,oBAAoBn7N,IAEnE,GAAI8B,KAAKs5N,QAAQp7N,GACb,OAAO6yE,GAAE7yE,GAEb,IAAIy7N,EAAsB35N,KAAKq5N,oBAAoBr5N,KAAKq4N,mBAAmBn6N,IAC3E,OAAO8B,KAAK05N,0BAA0BC,EACzC,EACDL,QAAS,SAAAp/J,GAAE,OAAI2C,EAAAA,EAAAA,OAAkB3C,IAAM6B,EAAAA,EAAAA,IAAW7B,GAAMA,EAAGtgE,IAAI,GAAKsgE,EAAzD,EACX0/J,kBAAmBv2K,GACnBw2K,kBAAmB,SAASC,EAAaC,GACrC,OAAO/5N,KAAKg6N,qBAAqBF,EAAaC,IAAqBD,EAAcC,EAAmB,QAAU,QACjH,EACDE,uBAAwB52K,GACxB81K,uBAAwB,SAASh4N,GAC7B,MAAO,kBAAoBA,GAASoI,KAAKoZ,MAAMxhB,KAAWA,CAC7D,EACDi4N,aAAc/1K,GACdk2K,wBAAyBl2K,GACzBg2K,oBAAqBh2K,GACrBu1K,sBAAuBv1K,GACvBq2K,0BAA2Br2K,GAC3B22K,qBAAsB32K,KCvFtB62K,GDyFJ,GCzFwBhC,QAAqB,CACzCiC,eAAgB,WACZ,OAAOn6N,KAAKo4N,kBAAkBzrL,OAAO,UAAY,EACpD,EACD0rL,mBAAoB,SAAS/8E,GACzB,IAAIrrD,EAAQjwF,KAAKo4N,kBAAkBnoI,MAAMnzF,KAAKkD,KAAKo4N,mBACnD,OAAInoI,EACOjwF,KAAKi5N,cAAchpI,EAAMqrD,IAEzBt7I,KAAKm6N,iBAAiB/4N,QAAQk6I,EAE5C,EACDg9E,mBAAoB,SAASn3N,GACzB,OAAOnB,KAAKm6N,iBAAiBh5N,EAChC,EACDy4N,kBAAmB,SAASz4N,GACxBnB,KAAKm6N,iBAAiB94N,OAAOF,EAAO,EACvC,EACDs3N,YAAa,WACT,OAAOz4N,KAAKm6N,gBACf,EACD5B,eAAgB,SAASryK,GACrB,IAAI+pC,EAAQjwF,KAAKo4N,kBAAkBnoI,MAAMnzF,KAAKkD,KAAKo4N,mBAC/C50N,EAAS0iD,EACb,GAAI+pC,EAAO,CACPzsF,EAAS,GACT,IAAK,IAAImF,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAC9BnF,EAAOpD,KAAK6vF,EAAM/pC,EAAMv9C,IAE/B,CACD,OAAOnF,CACV,EACDy1N,cAAe,SAAS32N,GACpB,IAAIgO,EAAQtQ,KAAKisI,OACbjtI,EAAOsR,GAASA,EAAMtR,MAAQgB,KAAKu4N,eAAev4N,KAAKm6N,kBAI3D,GAHI7pN,IAAUA,EAAMtR,OAChBsR,EAAMtR,KAAOA,GAEb,kBAAoBsD,EAOpB,OAAOtD,EAAKoC,QAAQkB,GANpB,IAAK,IAAIqG,EAAI,EAAGhI,EAAS3B,EAAK2B,OAAQgI,EAAIhI,EAAQgI,IAC9C,GAAI3I,KAAK64N,WAAWv2N,EAAKtD,EAAK2J,IAC1B,OAAOA,EAMnB,OAAQ,CACX,EACD6vN,eAAgB,SAASx5N,EAAMknD,GAC3B,OAAQA,GAASlnD,GAAM+F,OAC1B,EACDk1N,uBAAwB,SAASH,EAAaC,GAC1C,IAAI7zK,EAAQlmD,KAAKm6N,iBACbC,EAAgBl0K,EAAM4zK,GAC1B5zK,EAAM7kD,OAAOy4N,EAAa,GAC1B5zK,EAAM7kD,OAAO04N,EAAkB,EAAGK,EACrC,EACDhB,aAAc,SAASj4N,GACnB,MAAO,kBAAoBA,GAASoI,KAAKoZ,MAAMxhB,KAAWA,CAC7D,EACDo4N,wBAAyB,SAASz5J,GAC9B,OAAO9/D,KAAKo4N,kBAAkBzH,gBAAgBxvN,MAAM2+D,EACvD,EACDu5J,oBAAqB,SAASl4N,GAC1B,OAAOA,CACV,EACDy3N,sBAAuB,SAASz3N,GAC5B,OAAOA,CACV,EACDu4N,0BAA2B,SAASv4N,GAChC,OAAOA,GAAS,EAAInB,KAAKo4N,kBAAkBzH,gBAAgB/gJ,GAAGzuE,GAAS,IAC1E,EACD64N,qBAAsB,WAClB,OAAO,CACV,IAEL,MCjEqBK,GAAAA,WACjB,WAAYj9N,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAKs6N,WAAW,mBAAoB,IACpCt6N,KAAKu6N,gBACR,8CACD,WACIv6N,KAAKs6N,WAAW,gBAAiB,IACjCt6N,KAAKs6N,WAAW,kBAAmB,IACnCt6N,KAAKs6N,WAAW,eAAgB,IAChCt6N,KAAKs6N,WAAW,aAAc,GACjC,yBACD,WAAa,2BACb,SAAWlhO,EAAM8E,GACb8B,KAAK5C,QAAQhE,GAAQ8E,CACxB,mCACD,WACI,IAAIs8N,EAAgBx6N,KAAK5C,QAAQo9N,cAC7BC,EAAkBz6N,KAAK5C,QAAQq9N,gBAC/BC,EAAa16N,KAAK5C,QAAQs9N,WAC1BC,EAAe36N,KAAK5C,QAAQu9N,aAC5BC,EAAgB56N,KAAK5C,QAAQw9N,cAC7BC,EAAmB76N,KAAK5C,QAAQy9N,iBAChCC,EAAqB96N,KAAK5C,QAAQ09N,oBAAsBh5M,GAAAA,KAC5D9hB,KAAKu6N,iBACLO,EAAmB,CACfF,cAAeA,EACfC,iBAAkBA,EAClBL,cAAeA,EACfC,gBAAiBA,EACjBC,WAAYA,EACZC,aAAcA,GAErB,0BACD,SAAUnlL,EAAME,GACZ,OAAI11C,KAAK5C,QAAQ29N,mBACT16M,EAAAA,EAAAA,IAASm1B,KAASn1B,EAAAA,EAAAA,IAASq1B,GACpBF,IAASE,GAGjB0d,EAAAA,GAAAA,cAAa5d,EAAME,EAC7B,mCACD,SAAmBwQ,GACf,OAAOA,EAAM1rB,QAAQ,SAAS51B,GAC1B,QAAS,OAASA,QAAQ,IAAWA,GAAQA,EAAK4gB,SACrD,GACJ,gCACD,SAAgBxmB,EAAMg8N,EAAUC,EAAYC,GAIxC,OAHAl8N,EAAOA,GAAQ,GACfA,EAAO6F,MAAMC,QAAQ9F,GAAQA,EAAO,CAACA,GACrCgB,KAAKuhJ,WACEvhJ,KAAK66N,iBAAiB77N,EAAMg8N,EAAUC,EAAYC,EAC5D,wCACD,SAAwBC,GAAc,WAClC,OAAIt2N,MAAMC,QAAQq2N,GACPA,EAAap3N,KAAI,SAAA+f,GAAC,OAAI,EAAKs3M,wBAAwBt3M,EAAjC,MAEzBzD,EAAAA,EAAAA,IAAS86M,WACFA,EAAa37M,SAEjB27M,EACV,kCACD,SAAkBA,EAAcE,EAAaxrJ,EAAQqrJ,GACjD,IAAII,EAAeC,UAAUz1N,KAAKC,UAAU/F,KAAKo7N,wBAAwBD,KAAgBx6N,OACrF66N,EAAkBx7N,KAAK5C,QAAQq+N,0BAA4BH,EAAet7N,KAAK5C,QAAQq+N,yBACvFltK,EAAW,IAAIlxC,GAAAA,GACf6mF,EAAc,CACd1pE,OAAQghM,OAAkB,EAASL,EACnCtrJ,OAAQ2rJ,EAAkBx7N,KAAK5C,QAAQs+N,aAAe7rJ,GAAU7vE,KAAK5C,QAAQs+N,cAejF,OAbIP,GAAgB,IAAMA,EAAax6N,OACnC4tD,EAAS3vD,QAAQ,IAEjBoB,KAAK5C,QAAQi5F,KAAK6N,GAAat1C,MAAM,SAAS1I,GAC1C,IAAIy1K,GAAgBv0L,EAAAA,EAAAA,IAAc8e,GAASA,EAAM5rD,KAAO4rD,EACpDm1K,IAAgBH,EAChBS,EAAgBA,EAAcnhM,OAAO6gM,GAC9BG,IACPG,EAAgBC,GAAUD,GAAenhM,OAAO2gM,GAAcztJ,WAElEnf,EAAS3vD,QAAQ+8N,EACpB,IAAGrsK,KAAKf,EAAS/uD,OAAO1C,KAAKyxD,IAE3BA,CACV,0CACD,SAA0BvvD,GACtB,IAAK,IAAI2J,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IAAK,CAClC,IAAI0oD,GAAUD,EAAAA,GAAAA,YAAWpyD,EAAK2J,IAC9B,KAAK0X,EAAAA,EAAAA,IAASgxC,GACVrxD,KAAK5C,QAAQy+N,eAAexqK,GAAWrxD,KAAK5C,QAAQy+N,eAAexqK,IAAY,GAC9DrxD,KAAK5C,QAAQy+N,eAAexqK,GAClCjxD,KAAKuI,EAEvB,CACJ,mCACD,SAAmBu9C,GACf,IAAK,IAAIv9C,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAC9B,GAAI3I,KAAK5C,QAAQ0+N,eAAe51K,EAAMv9C,IAClC,OAGR,OAAO,CACV,uCACD,WACI,IAAIu9C,EAAQlmD,KAAK5C,QAAQ2+N,aACrBC,EAAah8N,KAAK5C,QAAQo9B,SAC1BogM,EAAgB56N,KAAK5C,QAAQ6+N,oBAAsBj8N,KAAK5C,QAAQw9N,cAAgB56N,KAAK5C,QAAQw9N,cAAcpgM,QAAO,SAAA51B,GAAI,QAAM,OAASA,QAAQ,IAAWA,GAAQA,EAAK4gB,SAA/C,IACtHw2M,IACApB,EAAgBgB,GAAUhB,GAAepgM,OAAOwhM,GAAYtuJ,WAEhE,IAAIwuJ,EAAsBtB,EAAcj6N,OACpCw7N,EAAsBj2K,EAAMvlD,OAASX,KAAKo8N,mBAAmBl2K,GAAOvlD,OACxE,OAAKu7N,EAGDA,GAAuBl8N,KAAK5C,QAAQq5F,aAAe0lI,QAAvD,EAFWn8N,KAAKq8N,mBAAmBn2K,EAMtC,0CACD,WAII,IAHA,IAAIA,EAAQlmD,KAAKo8N,mBAAmBp8N,KAAK5C,QAAQ2+N,cAC7CO,GAAmB,EACnBC,GAAqB,EAChB5zN,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CACnC,IAAI/D,EAAOshD,EAAMv9C,GACb2yI,EAAWt7I,KAAK5C,QAAQo/N,YAAY53N,GACpCtC,EAAMtC,KAAK5C,QAAQ6yF,MAAMqrD,GACzBt7I,KAAK5C,QAAQq/N,iBAAiB73N,KAC1B5E,KAAK08N,kBAAkBp6N,GACvBg6N,GAAmB,EAEnBC,GAAqB,EAGhC,CACD,QAAID,KACQC,QAA4B,EAI3C,OA7IgBlC,GCJAsC,GAAAA,SAAAA,2IACjB,WACI,OAAO38N,KAAK48N,kBAAkB58N,KAAK5C,QAAQy/N,gBAC9C,oCACD,WACI,IAAIr5M,EAAI,IAAInG,GAAAA,GACRoyC,EAAOzvD,KACPsC,EAAMtC,KAAK5C,QAAQkF,MACnButE,GAASnf,EAAAA,EAAAA,IAASpuD,GAAO,CAACA,GAAOA,EAOrC,OANAtC,KAAK48N,kBAAkB58N,KAAK5C,QAAQy/N,gBAAiB,KAAMhtJ,GAAQjhB,MAAM,SAAS1I,GAC9E,IAAIlnD,EAAOknD,EAAMniD,KAAK,SAASa,GAC3B,OAAO6qD,EAAKryD,QAAQ6yF,MAAMrrF,EAC7B,IACD4e,EAAE5kB,QAAQI,EACb,IAAGswD,KAAK9rC,EAAEhkB,QACJgkB,EAAElG,SACZ,iCACD,SAAiBte,EAAMg8N,EAAUC,EAAYC,GACzC,GAAIA,EAAa,CACb,IAAI1gM,EAASx6B,KAAK5C,QAAQo9B,UACMA,GAAU10B,KAAKC,UAAUy0B,KAAY10B,KAAKC,UAAU/F,KAAK5C,QAAQy/N,kBAAoB5B,EAEjHj7N,KAAKs6N,WAAW,kBAAmBW,EAAa,GAAK,MAErDj7N,KAAK88N,oBAAoB7B,EAAYzgM,EAAQ0gM,EAEpD,KAAM,CACEF,GACDh7N,KAAKs6N,WAAW,kBAAmB,IAEvC,IAAK,IAAI3xN,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IACzBsyN,EACAj7N,KAAK+8N,mBAAmB/9N,EAAK2J,IAE7B3I,KAAKg9N,gBAAgBh+N,EAAK2J,GAAIuyN,GAAcF,EAGvD,CAED,OADAh7N,KAAK86N,sBACG,IAAIz9M,GAAAA,IAAUze,SACzB,iCACD,SAAiBI,GACbgB,KAAKs6N,WAAW,kBAAmB,MACnC,IAAK,IAAI3xN,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IAC7B3I,KAAKg9N,gBAAgBh+N,EAAK2J,GAEjC,mCACD,SAAmB2yI,GACf,OAAOt7I,KAAK08N,kBAAkBphF,EACjC,kCACD,SAAkBA,GACd,IAAIuhF,EAAkB78N,KAAK5C,QAAQy/N,gBACnC,OAAKA,KAGIjB,GAAU,CAACtgF,IAAW9gH,OAAOqiM,GAAiBnvJ,UAAU/sE,MACpE,4BACD,WACI,IAAIs8N,EAAWj9N,KAAK5C,QAAQkF,MAC5B,OAAIuC,MAAMC,QAAQm4N,IAAa,IAAMA,EAASt8N,OACnCs8N,EAAS,GAEbA,CACV,8BACD,SAAc36N,GACV,IAAI4pF,EAAUlsF,KAAK5C,QAAQkF,MAC3B,OAAIuC,MAAMC,QAAQonF,IAAY,IAAMA,EAAQvrF,OACjC2B,EAAI4pF,EAAQ,IAEhB5pF,CACV,gCACD,SAAgBA,GACZ,IAAI26N,EAAWj9N,KAAKk9N,cAChB1iM,EAAS,CAACyiM,EAAU,IAAKj9N,KAAKm9N,cAAc76N,IAChD,GAAIuC,MAAMC,QAAQm4N,GAAW,CACzBziM,EAAS,GACT,IAAK,IAAI7xB,EAAI,EAAGA,EAAIs0N,EAASt8N,OAAQgI,IACjC6xB,EAAOp6B,KAAK,CAAC68N,EAASt0N,GAAI,IAAKrG,EAAI26N,EAASt0N,MACxCA,IAAMs0N,EAASt8N,OAAS,GACxB65B,EAAOp6B,KAAK,MAGvB,CACD,OAAOo6B,CACV,gCACD,SAAgBl4B,EAAK44N,EAAakC,GAC9B,IAAI5iM,EAASx6B,KAAKq9N,gBAAgB/6N,GAClCtC,KAAK88N,qBAAoB,EAAOtiM,EAAQ0gM,EAAakC,EACxD,mCACD,SAAmB96N,GACf,IAAIk4B,EAASx6B,KAAKq9N,gBAAgB/6N,GAClCtC,KAAK88N,qBAAoB,EAAMtiM,EAClC,yBACD,WACI,IAAIl4B,EAAMtC,KAAK5C,QAAQkF,IACvB,GAAIA,QAAO,IAAWA,IAClB,MAAMgd,GAAAA,MAAa,QAAS,qBAEnC,+BACD,SAAeu9M,EAAiBriM,GAC5B,IAAKqiM,EACD,OAAQ,EAGZ,IADA,IAAIS,EAAex3N,KAAKC,UAAUy0B,GACzBr5B,EAAQ,EAAGA,EAAQ07N,EAAgBl8N,OAAQQ,IAAS,CACzD,IAAIo8N,EAAYV,EAAgB17N,GAChC,GAAIo8N,GAAaz3N,KAAKC,UAAUw3N,KAAeD,EAC3C,OAAOn8N,CAEd,CACD,OAAQ,CACX,iCACD,SAAiB07N,EAAiBriM,GAC9B,SAAIqiM,IAAmBriM,KACZx6B,KAAKw9N,eAAeX,EAAiBriM,KAAYqiM,EAAgBl8N,OAAS,GAAK,IAAMX,KAAKw9N,eAAe,CAACX,GAAkBriM,GAG1I,mCACD,SAAmBqiM,EAAiBY,GAOhC,OANIZ,EAAgBl8N,OAAS,IAAK+vD,EAAAA,EAAAA,IAASmsK,EAAgB,KAAOA,EAAgB,KAAOY,IACrFZ,EAAkB,CAACA,IAEnBA,EAAgBl8N,QAChBk8N,EAAgBz8N,KAAKq9N,GAElBZ,CACV,mCACD,SAAmBriM,GAIf,OAHIA,IAAUk2B,EAAAA,EAAAA,IAASl2B,EAAO,MAC1BA,EAAS,CAACA,IAEPA,CACV,2CACD,SAA2BkjM,GACvB,OAAOA,EAAQ73L,OAAM,SAAC83L,EAAYh1N,GAC9B,OAAIA,EAAI,IAAM,EACH9D,MAAMC,QAAQ64N,IAAe,MAAQA,EAAW,GAEhD,QAAUA,CAExB,GACJ,oCACD,SAAoB1C,EAAYzgM,EAAQ0gM,EAAakC,GACjD,IAAIQ,EACAC,EAAgB5C,EAAa,CAAC,IAAKzgM,GAAUA,EAC7CsjM,EAAmB7C,EAAa,MAAQ,KACxC8C,GAAgB,EAChBlB,EAAkB78N,KAAK5C,QAAQy/N,iBAAmB,GAEtD,GAAI,QAAUe,EADdf,EAAkB78N,KAAKg+N,mBAAmBnB,UACW,IAAWe,GAAoBA,EAAiBj9N,SAAWy8N,EAAY,CACxH,IAAIa,EAAej+N,KAAKk+N,kBAAkBrB,EAAiBriM,EAAQygM,EAAYC,GAC3EiD,EAAcn+N,KAAKk+N,kBAAkBrB,EAAiBriM,GAASygM,GAC3CA,KAAgB,IAAMgD,IAAiB,IAAME,IAAgBn+N,KAAKo+N,2BAA2BvB,KAEjHA,EAAkB,IAEtB,IAAIwB,EAA6Br+N,KAAKs+N,aAAa9jM,IAAWx6B,KAAKu+N,oCAAoC1B,EAAiBsB,GACxHJ,EAAgBvjM,EAAO75B,SAAW09N,CACrC,CACGN,IACAlB,EAAkB78N,KAAKw+N,mBAAmB3B,EAAiBiB,IAC3C19N,KAAKy9N,GAEzBhB,EAAkB78N,KAAKy+N,iBAAiB5B,GACxC78N,KAAKs6N,WAAW,kBAAoBW,GAAe4B,EAAgBl8N,OAAgBk8N,EAAP,KAC/E,iCACD,SAAiBriM,GAIb,OAHIA,GAAU,IAAMA,EAAO75B,SACvB65B,EAASA,EAAO,IAEbA,CACV,qCACD,SAAqBA,EAAQ2jM,EAAajD,GACtC,IAAIzzH,EAAYjtE,EAAO,GACnB2jM,EAAc,EACd3jM,EAAOn5B,OAAO88N,EAAc,EAAG,GAE/B3jM,EAAOn5B,OAAO88N,EAAa,GAE3BjD,GAAe,QAAUzzH,GACzBjtE,EAAOn5B,OAAO,EAAGm5B,EAAO75B,OAE/B,mCACD,SAAmB65B,EAAQl4B,GACvB,OAAO,IAAMk4B,EAAO75B,QAAU65B,EAAO,KAAOl4B,GAAO,MAAQk4B,EAAO,EACrE,6BACD,SAAaA,GACT,GAAI,IAAMA,EAAO75B,QAAU,MAAQ65B,EAAO,GACtC,OAAOx6B,KAAKs+N,aAAa9jM,EAAO,IAEpC,IAAIyiM,EAAWj9N,KAAKk9N,cACpB,GAAIr4N,MAAMC,QAAQm4N,GAAW,CACzB,GAAIziM,EAAO75B,SAAW,EAAIs8N,EAASt8N,OAAS,EACxC,OAAO,EAEX,IAAK,IAAIgI,EAAI,EAAGA,EAAIs0N,EAASt8N,OAAQgI,IAAK,CACtC,GAAIA,EAAI,GAAK,QAAU6xB,EAAO,EAAI7xB,EAAI,GAClC,OAAO,EAEX,IAAK3I,KAAK0+N,mBAAmBlkM,EAAO,EAAI7xB,GAAIs0N,EAASt0N,IACjD,OAAO,CAEd,CACD,OAAO,CACV,CACD,OAAO3I,KAAK0+N,mBAAmBlkM,EAAQyiM,EAC1C,oDACD,SAAoCJ,EAAiBsB,GACjD,GAAIA,GAAe,EAAG,CAClB,IAAK,IAAIx1N,EAAIw1N,EAAax1N,EAAIk0N,EAAgBl8N,OAAQgI,IAClD,GAAI,kBAAoBk0N,EAAgBl0N,KAAO3I,KAAKs+N,aAAazB,EAAgBl0N,IAC7E,OAAO,EAGf,OAAO,CACV,CACD,OAAO,CACV,kCACD,SAAkBk0N,EAAiBriM,EAAQmkM,EAAUzD,GAEjD,GADA1gM,EAASmkM,EAAW,CAAC,IAAKnkM,GAAUA,EAChC10B,KAAKC,UAAUy0B,KAAY10B,KAAKC,UAAU82N,GAE1C,OADAA,EAAgBx7N,OAAO,EAAGw7N,EAAgBl8N,QACnC,EAEX,IAAIw9N,EAAcn+N,KAAKw9N,eAAeX,EAAiBriM,GACvD,GAAI2jM,GAAe,EAEf,OADAn+N,KAAK4+N,qBAAqB/B,EAAiBsB,EAAajD,GACjDiD,EAEP,IAAK,IAAIx1N,EAAI,EAAGA,EAAIk0N,EAAgBl8N,OAAQgI,IACxC,GAAI9D,MAAMC,QAAQ+3N,EAAgBl0N,KAAOk0N,EAAgBl0N,GAAGhI,OAAS,EAAG,CACpE,IAAIk+N,EAAe7+N,KAAKk+N,kBAAkBrB,EAAgBl0N,GAAI6xB,GAAQ,EAAO0gM,GAC7E,GAAI2D,GAAgB,EAMhB,OALKhC,EAAgBl0N,GAAGhI,OAEb,IAAMk8N,EAAgBl0N,GAAGhI,SAChCk8N,EAAgBl0N,GAAKk0N,EAAgBl0N,GAAG,IAFxC3I,KAAK4+N,qBAAqB/B,EAAiBl0N,EAAGuyN,GAI3C2D,CAEd,CAEL,OAAQ,CAEf,kCACD,WACI,IAAIrkM,EAASx6B,KAAK5C,QAAQo9B,SACtBqiM,EAAkB78N,KAAK5C,QAAQy/N,gBACnC,OAAKA,KAGAA,EAAgBl8N,SAGhB65B,GAAWA,EAAO75B,QAGvBk8N,EAAkB78N,KAAKg+N,mBAAmBnB,KACtC78N,KAAK8+N,iBAAiBjC,EAAiBriM,KAGvCx6B,KAAK8+N,iBAAiBjC,EAAiB,CAAC,IAAKriM,UAAjD,QAPA,EAWH,4CACD,WACI,IAAIukM,EAAkB/+N,KAAK5C,QAAQo9B,SAC/BqiM,EAAkB78N,KAAK5C,QAAQy/N,gBAC/BriM,EAASukM,EAAkB,CAACA,EAAiB,MAAOlC,GAAmBA,EAC3E,OAAO78N,KAAK48N,kBAAkBpiM,EACjC,OA/QgBmiM,CAAyBtC,ICN1C2E,GAAgB,SAASp6N,EAAMq6N,GAC/B,IAAI38N,EAAM28N,EAAOr6N,GACjB,IAAIyb,EAAAA,EAAAA,IAAS/d,GACT,IACI,OAAOwD,KAAKC,UAAUzD,EAGzB,CAFC,MAAO2G,GACL,OAAO3G,CACV,CAEL,OAAOA,CACV,EACG48N,GAAkB,SAASC,EAASrM,EAAUsM,EAAeH,GAE7D,OAAOnM,EAASsM,EADNJ,GAAcG,EAASF,IAEpC,ECTUI,GAAyB,SAASxE,EAAkBK,GA0D3D,IAAIoE,EAzDJt/N,KAAKu/N,eAAiB,SAASC,EAAWC,EAAW1E,EAAkB7uI,GAEnE,OADAuzI,OAAY,IAAWA,EAAYrsK,GAAAA,aAAeqsK,EAC3CC,EAAe5iO,KAAKkD,KAAMy/N,EAAWD,EAAWzE,EAAkB7uI,EAC5E,EACDlsF,KAAK2/N,QAAU,SAASzzI,GAIpB,IAAI0zI,EAHJ,GAAK1zI,EAmCL,OA/BA2uI,EAAiBn6N,SAAS,SAAS4B,EAAKnB,GAEpC,IAAI0+N,EADJD,EAAaA,GAAc,GAEvBz+N,EAAQ,GACRy+N,EAAWx/N,KAAK86N,EAAc,MAAQ,MAGtC2E,GADAnvK,EAAAA,EAAAA,IAASw7B,GACQ4zI,EAAqB5zI,EAAS5pF,GAE9B,SAAS4pF,EAAS6zI,GAE/B,IADA,IAAIH,EAAa,GACRj3N,EAAI,EAAGhI,EAASurF,EAAQvrF,OAAQgI,EAAIhI,EAAQgI,IAAK,CACtD,IAAIq3N,EAAiB9zI,EAAQvjF,GAEzBk3N,EAAiBC,EAAqBE,EADpBD,GAAgBA,EAAaC,IAEnD,IAAKH,EACD,MAEAl3N,EAAI,GACJi3N,EAAWx/N,KAAK86N,EAAc,KAAO,OAEzC0E,EAAWx/N,KAAKy/N,EACnB,CACD,OAAOD,CACV,CAfgB,CAef1zI,EAAS5pF,GAEfs9N,EAAWx/N,KAAKy/N,EACnB,IACGD,GAAc,IAAMA,EAAWj/N,SAC/Bi/N,EAAaA,EAAW,IAErBA,CACV,EACD5/N,KAAKigO,kBAAoB,SAAS/zI,EAASg0I,GACvC,IAAIC,EAAsBroN,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAClF8nN,EAAa5/N,KAAK2/N,QAAQzzI,GAC1Bk0I,EAAiBR,EAUrB,OATKO,GAAuBjF,IAAgBgF,IACpCN,IACAQ,EAAiB,IACFhgO,KAAKw/N,GACpBQ,EAAehgO,KAAK8/N,IAEpBE,EAAiBF,GAGlBE,CACV,EAMD,SAASV,EAAeD,EAAWxvI,EAAO8qI,EAAkB7uI,EAAStnF,GACjE,IACIysD,EACA1oD,EAFArG,EAAM2tF,EAAMrrF,GAGhB,IAAKm2N,IACD1pK,GAAUD,EAAAA,GAAAA,YAAW9uD,KAChB+d,EAAAA,EAAAA,IAASgxC,IAAU,CACpB,IAAIgvK,EAAuB,SAASpwI,EAAO/D,GACvC,IAAKozI,EAA0B,CAC3BA,EAA2B,CAAC,EAE5B,IADA,IAAIgB,EAdJ,SAASthO,EAAMixF,EAAO/D,GACtC,OAAOrnF,MAAMC,QAAQonF,GAAWltF,EAAK+E,KAAI,SAAAzB,GAAG,OAAI2tF,EAAM3tF,EAAV,IAAkBtD,CACjE,CAYwCuhO,CAAc1F,EAAkB5qI,EAAO/D,GACnDvjF,EAAI,EAAGA,EAAI23N,EAAe3/N,OAAQgI,IACvC22N,GAAyBluK,EAAAA,GAAAA,YAAWkvK,EAAe33N,MAAO,CAEjE,CACD,OAAO22N,CACV,CAT0B,CASzBrvI,EAAO/D,GACT,OAAIm0I,EAAqBhvK,IACb6pK,IAEHA,CACZ,CAEL,IAAKvyN,EAAI,EAAGA,EAAIkyN,EAAiBl6N,OAAQgI,IACrC,GAAI82N,EAAU5E,EAAiBlyN,GAAIrG,GAC/B,OAAQ44N,EAGhB,QAASA,CACZ,CAED,SAAS4E,EAAqB5zI,EAASwE,GACnC,QAAI,IAAWA,EAGf,MAAO,CAACxE,EAASgvI,EAAc,KAAO,IAAKxqI,EAC9C,CACJ,ECpFoB8vI,GAAAA,SAAAA,iCACjB,WAAYpjO,GAAS,6BACjB,cAAMA,IACDqjO,2BAFY,CAGpB,wDACD,WACIzgO,KAAKs6N,WAAW,iBAAkBt6N,KAAK5C,QAAQ29N,iBAAmB,KAAO,CAAC,EAC7E,oCACD,WACI,OAAO/6N,KAAK5C,QAAQy9N,iBAAiB91N,MAAM,EAC9C,iCACD,WACI,OAAO/E,KAAK5C,QAAQw9N,cAAc71N,MAAM,EAC3C,yCACD,SAAyBmhD,EAAO+0K,GAC5B,IACIyF,EACA/jM,EACAh0B,EAHAsnF,EAAQjwF,KAAK5C,QAAQ6yF,MAIzB,GAAKA,EAAL,CAGA,IAAI0wI,EAAkB1F,GAAc/0K,EAAMvlD,OAAS,IAAMX,KAAK5C,QAAQ29N,iBAItE,IAHI4F,IACAD,EAAwB,CAAC,GAExB/3N,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CAC/B,IAAI/D,EAAOshD,EAAMv9C,GACbrG,EAAM2tF,EAAMrrF,GACZq2N,GACAt+L,EAAW38B,KAAK+8N,mBAAmBz6N,EAAKo+N,EAAuB,OAAS97N,QAAQ,IAAWA,OAAO,EAASA,EAAK4gB,UAC5Gk7M,GAAyB/jM,GAAY,IACrC+jM,EAAsB/jM,IAAY,IAGtC38B,KAAKg9N,gBAAgB16N,EAAKsC,EAEjC,CACG+7N,GACA3gO,KAAK4gO,0BAA0BF,EAlBlC,CAoBJ,0CACD,SAA0BA,GACtB,IAAI7F,EAAmB76N,KAAK5C,QAAQy9N,iBAAiB91N,MAAM,GACvD61N,EAAgB56N,KAAK5C,QAAQw9N,cAAc71N,MAAM,GACrD/E,KAAK5C,QAAQy9N,iBAAiBl6N,OAAS,EACvCX,KAAK5C,QAAQw9N,cAAcj6N,OAAS,EACpC,IAAK,IAAIgI,EAAI,EAAGA,EAAIkyN,EAAiBl6N,OAAQgI,IACpC+3N,EAAsB/3N,KACvB3I,KAAK5C,QAAQy9N,iBAAiBz6N,KAAKy6N,EAAiBlyN,IACpD3I,KAAK5C,QAAQw9N,cAAcx6N,KAAKw6N,EAAcjyN,KAGtD3I,KAAKygO,2BACLzgO,KAAK6gO,0BAA0B7gO,KAAK5C,QAAQy9N,iBAC/C,uCACD,SAAuB77N,EAAMi8N,EAAYC,EAAa1gM,GAClD,IAAI2lM,EAAsBroN,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAClFy2C,EAAW,IAAIlxC,GAAAA,GACf/a,EAAMtC,KAAK5C,QAAQkF,MACvB,IAAKtD,EAAK2B,SAAWu6N,EAEjB,OADA3sK,EAAS3vD,QAAQ,IACV2vD,EAEX,GAAI2sK,GAAeD,IAAezgM,EAE9B,OADA+zB,EAAS3vD,QAAQoB,KAAK8gO,oBACfvyK,EAEX,IAAIwyK,EAAyB,IAAI1B,GAAuBrgO,EAAMk8N,GAC1DkF,EAAiBW,EAAuBd,kBAAkB39N,EAAKk4B,EAAQ2lM,GACvEa,EAAkB,GACtB,GAAI/F,EAAY,CACZ,IAAIL,EAAgB56N,KAAK5C,QAAQw9N,cACjCoG,EAAkBZ,GAAkBphO,EAAK2B,SAAWi6N,EAAcj6N,OAASi7N,GAAUhB,GAAepgM,OAAO4lM,GAAgB1yJ,UAAYktJ,EAAc71N,MAAM,EAC9J,CACD,IAAI42N,EAAgBqF,EAAgBrgO,OAASqgO,EAAkBhhO,KAAK5C,QAAQ2+N,YAAW,GAAMvhM,OAAOx6B,KAAK5C,QAAQq/N,kBAAkB14N,IAAI/D,KAAK5C,QAAQo/N,aAChJnB,EAAc0F,EAAuBxB,eAAev/N,KAAK5C,QAAQ6yF,MAAOjwF,KAAKy/N,UAAU3iO,KAAKkD,MAAOA,KAAK5C,QAAQ29N,iBAAkBz4N,GAOtI,OANAq5N,EAAgBA,EAAcnhM,OAAO6gM,GACjC2F,EAAgBrgO,SAAWu6N,GAAeS,EAAch7N,SAAW3B,EAAK2B,OACxE4tD,EAAS3vD,QAAQ+8N,GAEjBptK,EAAWvuD,KAAK48N,kBAAkBwD,EAAgB/E,EAAa,KAAMH,GAElE3sK,CACV,wCACD,SAAwBrI,GACpB,IAAI+6K,EAAe,GACfhxI,EAAQjwF,KAAK5C,QAAQ6yF,MACzB,GAAKA,EAAL,CAGA,IAAK,IAAItnF,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CACnC,IACIrG,EAAM2tF,EADC/pC,EAAMv9C,IAEjBs4N,EAAa7gO,KAAKkC,EACrB,CACDtC,KAAKkhO,iBAAiBD,EAAc/6K,EANnC,CAOJ,qCACD,SAAqBlnD,GAEjB,IADA,IAAImiO,EAAiBnhO,KAAK5C,QAAQ+jO,eACzBx4N,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IAAK,CAClC,IAAIrG,EAAMtD,EAAK2J,GACTw4N,GAAkB,OAAS7+N,GAAStC,KAAK08N,kBAAkBp6N,IAC7Dgd,GAAAA,IAAW,QAAShd,EAE3B,CACJ,sCACD,WACI,IAAIglB,EAAOtnB,KAAK5C,QAAQkqB,KACxB,MAAO,QAAUA,GAAQ,aAAeA,CAC3C,mCACD,WACI,IAAI85M,EACJ,MAAO,aAAe,QAAUA,EAAwBphO,KAAKqhO,yBAAsB,IAAWD,OAAwB,EAASA,EAAsB14L,QACxJ,qCACD,SAAqB1pC,EAAMi8N,EAAYqG,EAAiBC,GACpD,IAAI3G,EACAoG,EAAkB/F,EAAaj8N,EAAO,GAM1C,OAJI47N,EADA2G,GAGgBhqF,GAAiBv4I,EAAMgB,KAAK5C,QAAQy9N,kBAEjD,CACHH,WAAY4G,EAAgB/zC,MAAMt9K,OAAO2qN,GACzCD,aAAc2G,EAAgBh0C,QAAQr9K,OAAO+wN,GAC7ChiO,KAAMA,EAEb,wCACD,SAAwBA,EAAMi8N,EAAYC,EAAaqG,GACnD,IAAIC,EAAgBvG,GAAcC,EAC9BoG,EAAkB,CAClB/zC,MAAO,GACPD,QAAS,IAETm0C,EAAqBzhO,KAAK0hO,wBAC1BC,EAAkBF,EAAqBzhO,KAAK4hO,iBAAmB,CAAC,EAgBpE,OAfIH,IACIzhO,KAAK6hO,8BACDL,GACAxhO,KAAKqhO,kBAAkB7hO,SACvBmiO,EAAkB,CAAC,GFnJd,SAASG,EAASC,GACvC,GAAID,EAAQnhO,SAAWohO,EAAQphO,OAC3B,OAAO,EAEX,IAAK,IAAIgI,EAAI,EAAGA,EAAIo5N,EAAQphO,OAAQgI,IAChC,GAAIm5N,EAAQn5N,KAAOo5N,EAAQp5N,GACvB,OAAO,EAGf,OAAO,CACV,CE0I2Bq5N,CAAYhjO,EAAMgB,KAAK5C,QAAQy9N,oBACvCyG,EAAgB/zC,MAAQo0C,EAAgBjH,WACxC4G,EAAgBh0C,QAAUq0C,EAAgBhH,aACrCM,GACDj7N,KAAKqhO,kBAAkB7hO,WAInCmiO,EAAkB3hO,KAAKiiO,qBAAqBjjO,EAAMi8N,EAAYqG,EAAiBthO,KAAK6hO,iCAA8B,EAASN,IAExHI,CACV,6CACD,SAA6B3iO,EAAMi8N,EAAYC,GAC3C,IAEQgH,EAAuBC,EtGlKDxsM,EsGgK1B0lL,EAAcr8M,EACdgB,KAAK0hO,yBAA2B1hO,KAAK6hO,8BAAgC5G,IAAeC,IAEpF7f,EAAc9jE,GAAiBv4I,EAAKiR,OAAO,QAAUiyN,EAAwBliO,KAAK4hO,wBAAqB,IAAWM,OAAwB,EAASA,EAAsBxH,YAAa,QAAUyH,EAAyBniO,KAAK4hO,wBAAqB,IAAWO,OAAyB,EAASA,EAAuBxH,ctGnK7RhlM,EsGoKI0lL,EAA9BA,GtGnKD,QAAI,IAAIt8M,IAAI42B,KsGqKf,OAAO0lL,CACV,mCACD,SAAmBr8M,EAAMi8N,EAAYC,EAAaqG,GAC9C,IAAIpB,EAAsBroN,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAClF23C,EAAOzvD,KACPuuD,EAAW,IAAIlxC,GAAAA,GACfmd,EAASi1B,EAAKryD,QAAQo9B,SAS1B,OARAx6B,KAAK6hO,4BAA8B7hO,KAAKoiO,qBACxCpiO,KAAK4hO,iBAAmB5hO,KAAKqiO,wBAAwBrjO,EAAMi8N,EAAYC,EAAaqG,IACpFlyK,EAAAA,GAAAA,IAAKI,EAAK4xK,mBAAmBhrK,QAAQ,WACjC,IAAIglJ,EAAc5rJ,EAAK6yK,6BAA6BtjO,EAAMi8N,EAAYC,GACtEzrK,EAAKoyK,6BAA8B,EACnCpyK,EAAK8yK,uBAAuBlnB,EAAa4f,EAAYC,EAAa1gM,EAAQ2lM,GAAqBvxK,KAAKL,EAAS3vD,SAAS0wD,KAAKf,EAAS/uD,OACvI,IACDiwD,EAAK4xK,kBAAoB9yK,EAClBA,CACV,iCACD,SAAiBvvD,EAAMg8N,EAAUC,EAAYC,EAAaqG,GACtD,IAAIpB,EAAsBroN,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAClF23C,EAAOzvD,KACPuuD,EAAWkB,EAAK+yK,mBAAmBxjO,EAAMi8N,EAAYC,EAAaqG,EAAapB,GASnF,OARA5xK,EAASK,MAAM,SAAS1I,GAChB80K,EACAvrK,EAAKgzK,yBAAyBv8K,EAAO+0K,GAErCxrK,EAAKizK,wBAAwBx8K,GAEjCuJ,EAAKqrK,oBACR,IACMvsK,CACV,gCACD,SAAgBjsD,EAAKg5I,GACjB,IAAIjtF,EAAAA,EAAAA,IAAUitF,KAAct7I,KAAK5C,QAAQ6+N,qBAAuB3gF,EAAS91H,UAChE,IAAMxlB,KAAK5C,QAAQulO,iBAAiBvhO,QAAQkB,IAC7CtC,KAAK5C,QAAQulO,iBAAiBviO,KAAKkC,OAF3C,CAMA,IAAI+uD,EAAUrxD,KAAK4iO,YAAYtgO,IAC1B,IAAMtC,KAAK6iO,wBAAwBxxK,OAC/BhxC,EAAAA,EAAAA,IAASgxC,IAAYrxD,KAAK5C,QAAQy+N,iBACnC77N,KAAK5C,QAAQy+N,eAAexqK,GAAW,CAACrxD,KAAK5C,QAAQy9N,iBAAiBl6N,SAE1EX,KAAK5C,QAAQy9N,iBAAiBz6N,KAAKkC,GACnCtC,KAAK5C,QAAQo9N,cAAcp6N,KAAKkC,GAChCtC,KAAK5C,QAAQs9N,WAAWt6N,KAAKk7I,GAC7Bt7I,KAAK5C,QAAQw9N,cAAcx6N,KAAKk7I,GATnC,CAWJ,uCACD,SAAuBh5I,EAAKwgO,GAExB,IADA,IAAIjI,EAAmB76N,KAAK5C,QAAQy9N,iBAC3B15N,EAAQ,EAAGA,EAAQ05N,EAAiBl6N,OAAQQ,IACjD,KAAM2hO,IAAqBA,EAAiB3hO,KAAWnB,KAAKy/N,UAAU5E,EAAiB15N,GAAQmB,GAC3F,OAAOnB,EAGf,OAAQ,CACX,wCACD,SAAwBmB,EAAKwgO,GACzB,IAAIC,EAAU/iO,KAAK5C,QAAQy+N,eAAev5N,GAM1C,OALIygO,GAAWA,EAAQpiO,OAAS,GAAKmiO,IACjCC,EAAUA,EAAQvoM,QAAQ,SAASr5B,GAC/B,OAAQ2hO,EAAiB3hO,EAC5B,KAEE4hO,GAAWA,EAAQ,IAAM,EAAIA,EAAQ,IAAM,CACrD,wCACD,SAAwBzgO,EAAKwgO,GASzB,OAPI9iO,KAAK5C,QAAQ29N,iBACG/6N,KAAK5C,QAAQy9N,iBAAiBz5N,QAAQkB,IAC/C+d,EAAAA,EAAAA,IAAS/d,GACAtC,KAAKgjO,uBAAuB1gO,EAAKwgO,GAEjC9iO,KAAKijO,wBAAwB3gO,EAAKwgO,EAGzD,yCACD,SAAyBnmM,GACrB,IAAK,IAAIumM,EAAkBvmM,EAAUumM,EAAkBljO,KAAK5C,QAAQy9N,iBAAiBl6N,OAAQuiO,IAAmB,CAC5G,IAAI1mD,EAAax8K,KAAK5C,QAAQy9N,iBAAiBqI,GAC3CC,GAAiB/xK,EAAAA,GAAAA,YAAWorH,GAC5B4mD,EAAoBpjO,KAAK5C,QAAQy+N,eAAesH,GACpD,GAAKC,EAGL,IAAK,IAAIz6N,EAAI,EAAGA,EAAIy6N,EAAkBziO,OAAQgI,IACtCy6N,EAAkBz6N,GAAKg0B,GACvBymM,EAAkBz6N,IAG7B,CACJ,mCACD,SAAmBrG,EAAKo+N,EAAuB98E,GAC3C,GAAK5jJ,KAAK5C,QAAQ6+N,sBAAuBr4E,EAAzC,CAGA,IAAIvyF,EAAUrxD,KAAK4iO,YAAYtgO,GAC3Bq+N,IAAoBD,EACpB/jM,EAAW38B,KAAK6iO,wBAAwBxxK,EAASqvK,GACrD,GAAI/jM,EAAW,EACX,OAAOA,EAIX,GAFA38B,KAAK5C,QAAQq9N,gBAAgBr6N,KAAKkC,GAClCtC,KAAK5C,QAAQu9N,aAAav6N,KAAKJ,KAAK5C,QAAQw9N,cAAcj+L,IACtDgkM,EACA,OAAOhkM,EAIX,GAFA38B,KAAK5C,QAAQy9N,iBAAiBx5N,OAAOs7B,EAAU,GAC/C38B,KAAK5C,QAAQw9N,cAAcv5N,OAAOs7B,EAAU,IACxCtc,EAAAA,EAAAA,IAASgxC,KAAarxD,KAAK5C,QAAQy+N,eACnC,OAAOl/L,EAEX,IAAI0mM,EAAarjO,KAAK5C,QAAQy+N,eAAexqK,GAC7C,OAAKgyK,GAGLA,EAAWnrM,QACNmrM,EAAW1iO,eACLX,KAAK5C,QAAQy+N,eAAexqK,GAEvCrxD,KAAKsjO,yBAAyB3mM,GACvBA,GAPIA,CAnBV,CA2BJ,qCACD,SAAqB39B,EAAMknD,GACvB,IAAK,IAAIv9C,EAAI,EAAGA,EAAI3J,EAAK2B,OAAQgI,IACxB3I,KAAK08N,kBAAkB19N,EAAK2J,MAC7B3I,KAAK5C,QAAQo9N,cAAcp6N,KAAKpB,EAAK2J,IACrC3I,KAAK5C,QAAQs9N,WAAWt6N,KAAK8lD,EAAMv9C,IAG9C,uCACD,SAAuB3J,EAAMukO,EAAiBC,GAC1C,IAAK,IAAI76N,EAAI,EAAGA,EAAI46N,EAAgB5iO,OAAQgI,IACnC3I,KAAK08N,kBAAkB6G,EAAgB56N,MACxC3I,KAAK5C,QAAQq9N,gBAAgBr6N,KAAKmjO,EAAgB56N,IAClD3I,KAAK5C,QAAQu9N,aAAav6N,KAAKojO,EAAiB76N,IAG3D,2CACD,SAA2BrG,EAAKmhO,GAC5B,IAEQC,EADR,SADyBD,GAAgBzjO,KAAK4hO,kBAAoB5hO,KAAKoiO,wBAGlD,QAAUsB,EAAyB1jO,KAAK4hO,iBAAiBlH,kBAAe,IAAWgJ,EAAyBA,EAAyB,IACpIn+N,SAASjD,EAIlC,4BACD,SAAYA,GACR,OAAOtC,KAAK5C,QAAQ29N,iBAAmBz4N,GAAM8uD,EAAAA,GAAAA,YAAW9uD,EAC3D,iCACD,SAAiBtD,EAAMknD,GACnBlmD,KAAK2jO,qBAAqB3kO,EAAMknD,GAChC,IAAIq9K,EAAkBvjO,KAAK5C,QAAQy9N,iBAC/B2I,EAAmBxjO,KAAK5C,QAAQw9N,cAC/B56N,KAAK5C,QAAQ29N,mBACd/6N,KAAKygO,2BACLzgO,KAAK6gO,0BAA0B7hO,IAEnCgB,KAAKs6N,WAAW,mBAAoBt7N,GACpCgB,KAAKs6N,WAAW,gBAAiBp0K,GACjClmD,KAAK4jO,uBAAuB5kO,EAAMukO,EAAiBC,EACtD,mCACD,SAAmBloF,GACf,IAAIl+I,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAC5ExV,EAAMtC,KAAK5C,QAAQ6yF,MAAMqrD,GAC7B,OAAOt7I,KAAK08N,kBAAkBp6N,EAAKlF,EACtC,kCACD,SAAkBkF,GACd,IAAIlF,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAC5EtU,EAASxD,KAAK6jO,2BAA2BvhO,EAAKlF,EAAQqmO,cAC1D,IAAKjgO,EAAQ,CACT,IAAI6tD,EAAUrxD,KAAK4iO,YAAYtgO,GAC3BnB,EAAQnB,KAAK6iO,wBAAwBxxK,GACzC7tD,GAAU,IAAMrC,CACnB,CACD,OAAOqC,CACV,kCACD,SAAkBsgO,GACd,OAAIA,EACO9jO,KAAK+jO,4BAEL/jO,KAAKgkO,wBAEnB,4CACD,WACI,IAAI93I,EAAUlsF,KAAK5C,QAAQkF,MACvBtD,EAAOgB,KAAKikO,sBACZzpM,EAASx6B,KAAK5C,QAAQo9B,SAC1B,IAAKx7B,EAAK2B,OACN,OAAO0c,EAAAA,GAAAA,MAAWze,QAAQ,IAE9B,IACIwhO,EADyB,IAAIf,GAAuBrgO,GACZihO,kBAAkB/zI,EAAS1xD,GAAQ,GAC/E,OAAOx6B,KAAK48N,kBAAkBwD,EACjC,OAtWgBI,CAAyBnG,ICTzB6J,GAAAA,WACjB,WAAY9mO,IAAS,eACjB4C,KAAK5C,SAAUqoD,EAAAA,GAAAA,GAAOzlD,KAAK49J,qBAAsBxgK,EAAS,CACtDy9N,iBAAkBz9N,EAAQ+mO,cAAgB,KAE9CnkO,KAAKokO,mBAAqBpkO,KAAK5C,QAAQmxD,SAAW,IAAI81K,GAAiBrkO,KAAK5C,SAAW,IAAIknO,GAAiBtkO,KAAK5C,SACjH4C,KAAKukO,mBAAqB,EACrBvkO,KAAK5C,QAAQ29N,kBACd/6N,KAAKokO,mBAAmBvD,0BAA0B7gO,KAAK5C,QAAQy9N,iBAEtE,kDACD,WACI,MAAO,CACHsG,gBAAgB,EAChB5yK,UAAU,EACVwsK,kBAAkB,EAClBzzM,KAAM,WACNszM,cAAe,GACfiC,gBAAiB,GACjBpB,yBAA0B,EAC1BX,mBAAoBh5M,GAAAA,KACpBxf,IAAKwf,GAAAA,KACLmuE,MAAO,SAASrrF,GACZ,OAAOA,CACV,EACDyxF,KAAM,WACF,OAAQ,IAAIh5E,GAAAA,IAAUze,QAAQ,GACjC,EACD63F,WAAY,WACR,OAAQ,CACX,EACDgmI,iBAAkB,WACd,OAAO,CACV,EACDX,eAAgB,WACZ,OAAO,CACV,EACDU,YAAa,SAAS53N,GAClB,OAAOA,CACV,EACD82N,WAAY55M,GAAAA,KACZ0Y,OAAQ1Y,GAAAA,KAEf,yBACD,WACI9hB,KAAKokO,mBAAmB7iF,UAC3B,oCACD,WACI,OAAOvhJ,KAAKokO,mBAAmBH,qBAClC,iCACD,WACI,OAAOjkO,KAAKokO,mBAAmBtD,kBAClC,gCACD,SAAgB5iO,GACZ,QAAI,IAAWA,EACX,OAAO8B,KAAK5C,QAAQy/N,gBAExB,IAAI2H,EAAkBxkO,KAAK5C,QAAQy/N,kBAAoB3+N,GAAS4H,KAAKC,UAAU/F,KAAK5C,QAAQy/N,mBAAqB/2N,KAAKC,UAAU7H,GAChI8B,KAAK5C,QAAQy/N,gBAAkB3+N,EAC/BsmO,GAAmBxkO,KAAK86N,oBAC3B,6BACD,SAAa97N,EAAMuiO,GACf,OAAOvhO,KAAK66N,iBAAiB77N,GAAM,GAAO,GAAO,EAAOuiO,EAC3D,uBACD,SAAOviO,GACH,OAAOgB,KAAK66N,iBAAiB77N,GAAM,EACtC,yBACD,SAASA,GACL,OAAOgB,KAAK66N,iBAAiB77N,GAAM,GAAM,EAC5C,iCACD,SAAiBA,EAAMg8N,EAAUC,EAAYC,EAAaqG,GACtD,IAAIkD,EAIJ,OAHAzlO,EAAO,QAAUylO,EAAQzlO,SAAS,IAAWylO,EAAQA,EAAQ,GAC7DzlO,EAAO6F,MAAMC,QAAQ9F,GAAQA,EAAO,CAACA,GACrCgB,KAAKuhJ,WACEvhJ,KAAKokO,mBAAmBvJ,iBAAiB77N,EAAMg8N,EAAUC,EAAYC,EAAaqG,EAC5F,+BACD,WACI,OAAOvhO,KAAK66N,iBAAiB,GAChC,iCACD,SAAiBv/E,EAAUh5I,GACvBtC,KAAKokO,mBAAmBpH,gBAAgB16N,EAAKg5I,EAChD,oCACD,SAAoBh5I,GAChBtC,KAAKokO,mBAAmBrH,mBAAmBz6N,EAC9C,kCACD,SAAkBtD,EAAMknD,GACpBlmD,KAAKokO,mBAAmBlD,iBAAiBliO,EAAMknD,EAClD,mCACD,WACIlmD,KAAKokO,mBAAmBtJ,oBAC3B,oCACD,SAAoBriF,EAAWz5I,EAAM0lO,GAAc,IAC3CC,EAAuBC,EACvBC,EAGAt2K,EAEAu2K,EAP2C,OAG3C5+K,EAAQlmD,KAAK5C,QAAQ2+N,aACrBn3N,EAAOshD,EAAMuyF,GAIbssF,GAA8B,EAC9BC,GAAmC,EACnCC,EAAyB,SAAA9jO,GAAK,OAAIA,GAAS,IAAM+kD,EAAM1rB,QAAO,SAAAu2E,GAAE,OAAIA,EAAGm0H,YAAc/jO,CAArB,IAA4BR,MAA9D,EASlC,IAbuB,QAAUgkO,GAAyBC,EAAgB5kO,KAAK5C,SAAS+nO,wBAAqB,IAAWR,OAAwB,EAASA,EAAsBlmO,KAAKmmO,MAK5Jv2K,EAAAA,EAAAA,IAAUzpD,KAC9BkgO,EAAclgO,EAAKsgO,UAAYzsF,EAC/BA,EAAY7zI,EAAKsgO,UACjBH,EAA8BE,EAAuBjlO,KAAKukO,oBACtDl2K,EAAAA,EAAAA,IAAUruD,KAAKolO,0BACfJ,EAAmCC,EAAuBjlO,KAAKolO,2BAGlEplO,KAAKqlO,iBAAmBrlO,KAAKslO,WAAW1gO,GACzC,OAAO,EAEX,IAAI02I,EAAWt7I,KAAK5C,QAAQo/N,YAAY53N,GACpC2gO,EAAUvlO,KAAK5C,QAAQ6yF,MAAMqrD,GAEjC,IADAt8I,EAAOA,GAAQ,CAAC,GACPk5B,OAAS,aAAel4B,KAAK5C,QAAQkqB,MAAQtnB,KAAKukO,mBAAqB,EACxEQ,GAA+BC,GAC/BH,EAAyBpsF,IAAcz4I,KAAKolO,wBAA0BplO,KAAKukO,oBAAsBvkO,KAAKolO,0BAElG72K,EAAWvuD,KAAKwlO,+CAA+C/sF,IAGnEosF,EAAyB7kO,KAAKylO,uCAAuChtF,EAAWvyF,EAAO4+K,QAExF,GAAI9lO,EAAK4lJ,QAAS,CAErB,GADA5kJ,KAAK0lO,0CACAhB,EAAc,CACf,IAAIiB,EAAa3lO,KAAKokO,mBAAmBwB,mBAAmBtqF,GACxD,WAAat7I,KAAK5C,QAAQkqB,MAC1BtnB,KAAK6lO,qBAELF,EACA3lO,KAAK8lO,oBAAoBP,GAEzBvlO,KAAK+lO,iBAAiBzqF,EAAUiqF,EAEvC,CACDV,GAAyB,CAC5B,KAAM,CACH7kO,KAAK0lO,yCACL,IAAI1D,EAAchiO,KAAKokO,mBAAmB3E,UAAUz/N,KAAK5C,QAAQy9N,iBAAiB,GAAI0K,GAClF,IAAMvlO,KAAK5C,QAAQy9N,iBAAiBl6N,QAAWqhO,IAC/ChiO,KAAKgmO,kBAAkB,CAACT,GAAU,CAACjqF,IACnCupF,GAAyB,EAEhC,CACD,OAAIA,IACAx1K,EAAAA,GAAAA,IAAKd,GAAUK,MAAK,WAChB,EAAK21K,kBAAoB9rF,GACxBisF,GAAgB,EAAK5J,oBACzB,KACM,QALX,CAOH,2BACD,SAAWl2N,GACP,OAAO5E,KAAK5C,QAAQq/N,iBAAiB73N,EACxC,6BACD,WACI,MAAO,WAAa5E,KAAK5C,QAAQkqB,MAAQ,aAAetnB,KAAK5C,QAAQkqB,IACxE,mCACD,SAAmBhtB,GACf,OAAO0F,KAAKokO,mBAAmBwB,mBAAmBtrO,EAAM,CACpDmpO,cAAc,GAErB,+BACD,SAAehzN,EAAKrT,GAChB,OAAO4C,KAAKokO,mBAAmB1H,kBAAkBjsN,EAAKrT,EACzD,uDACD,kBACW4C,KAAKolO,sBACf,uCACD,WACIplO,KAAKukO,mBAAqB,CAC7B,+DACD,SAA+CW,GAAW,WAClDhhI,EAAclkG,KAAK5C,QAAQ6oO,eAAef,EAAWllO,KAAKukO,kBAAmBvkO,KAAKolO,wBAClF72K,EAAW,IAAIlxC,GAAAA,GACfynN,EAAc5gI,EAAYviC,KAK9B,OAJA3hE,KAAK5C,QAAQi5F,KAAK6N,GAAat1C,MAAK,SAAA1I,GAChC,EAAKu/K,uCAAuCP,EAAWh/K,EAAO4+K,GAC9Dv2K,EAAS3vD,SACZ,IACM2vD,EAASjxC,SACnB,uDACD,SAAuCm7H,EAAWvyF,EAAO4+K,GACrD,IACIoB,EAWA5rO,EACAirO,EACAY,EACA3pM,EAfAqoM,GAAyB,EAEzBuB,GAAqB/3K,EAAAA,EAAAA,IAAUy2K,GAC/B3jO,EAAQilO,EAAqBpmO,KAAKukO,kBAAoBO,EAAc9kO,KAAKukO,kBACzEt0I,EAAQjwF,KAAK5C,QAAQ6yF,MACrBo2I,EAAcngL,EAAM/kD,GACpBmlO,EAActmO,KAAK5C,QAAQo/N,YAAY6J,GACvCE,EAAat2I,EAAMq2I,GACnBE,EAAwBH,GAAermO,KAAK4lO,mBAAmBU,GAQnE,IAPKj4K,EAAAA,EAAAA,IAAUruD,KAAKolO,0BAChBplO,KAAKolO,uBAAyBplO,KAAKukO,mBAMnCvkO,KAAKolO,yBAA2BplO,KAAKukO,kBAIrC,IAHA2B,EAAgBlmO,KAAKukO,kBAAoBvkO,KAAKolO,uBAAyB,GAAK,EAC5Ee,EAAaC,EAAqBpmO,KAAKukO,kBAAoBO,EAAc9kO,KAAKukO,kBAC9E/nM,EAAW4pM,EAAqBpmO,KAAKolO,uBAAyBN,EAAc9kO,KAAKolO,uBAC5EjkO,EAAQglO,EAAYhlO,IAAUq7B,EAAUr7B,GAAS+kO,GAC9CE,GAAsBpmO,KAAKslO,WAAWp/K,EAAM/kD,OAC5CokO,EAAUt1I,EAAMjwF,KAAK5C,QAAQo/N,YAAYt2K,EAAM/kD,KAC/CnB,KAAK8lO,oBAAoBP,GACzBV,GAAyB,GAIrC,GAAIpsF,IAAcz4I,KAAKolO,uBAInB,IAHAc,EAAgBztF,EAAYz4I,KAAKolO,uBAAyB,GAAK,EAC/De,EAAaC,EAAqB3tF,EAAYqsF,EAAcrsF,EAC5Dj8G,EAAW4pM,EAAqBpmO,KAAKolO,uBAAyBN,EAAc9kO,KAAKolO,uBAC5EjkO,EAAQglO,EAAYhlO,IAAUq7B,EAAUr7B,GAAS+kO,GAC9CE,GAAsBpmO,KAAKslO,WAAWp/K,EAAM/kD,OAE5CokO,EAAUt1I,EADV31F,EAAO0F,KAAK5C,QAAQo/N,YAAYt2K,EAAM/kD,KAEtCnB,KAAK+lO,iBAAiBzrO,EAAMirO,GAC5BV,GAAyB,GAQrC,OAJKuB,IAAsBpmO,KAAKslO,WAAWe,IAAkBG,IACzDxmO,KAAK+lO,iBAAiBO,EAAaC,GACnC1B,GAAyB,GAEtBA,CACV,mCACD,WACI7kO,KAAKgmO,kBAAkB,GAAI,GAC9B,0BACD,SAAUS,GAEN,OADAzmO,KAAK0mO,yBACDD,EACOzmO,KAAK2mO,mBAAkB,GAEvB3mO,KAAK66N,iBAAiB,IAAI,GAAM,GAAO,EAErD,4BACD,SAAY4L,GAER,OADAzmO,KAAK0mO,yBACDD,EACOzmO,KAAK2mO,mBAAkB,GAEvB3mO,KAAK66N,iBAAiB,IAAI,GAAM,GAAM,EAEpD,kCACD,SAAkBI,GAEd,IADA,IAAI/0K,EAAQlmD,KAAKokO,mBAAmBhI,mBAAmBp8N,KAAK5C,QAAQ2+N,cAC3DpzN,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CACnC,IAAI/D,EAAOshD,EAAMv9C,GACjB,GAAI3I,KAAKslO,WAAW1gO,GAAO,CACvB,IAAI02I,EAAWt7I,KAAK5C,QAAQo/N,YAAY53N,GACpC2gO,EAAUvlO,KAAK5C,QAAQ6yF,MAAMqrD,GAC7BqqF,EAAa3lO,KAAK87N,eAAeyJ,GAChCI,GAAe1K,GAChBj7N,KAAK+lO,iBAAiBzqF,EAAUiqF,GAEhCI,GAAc1K,GACdj7N,KAAK8lO,oBAAoBP,EAEhC,CACJ,CAED,OADAvlO,KAAK86N,sBACG,IAAIz9M,GAAAA,IAAUze,SACzB,kCACD,SAAkBklO,GACd,OAAO9jO,KAAKokO,mBAAmBwC,kBAAkB9C,EACpD,4CACD,WACI,OAAO9jO,KAAKokO,mBAAmByC,6BAClC,OArRgB3C,GCiBjB4C,GAAyB,iBAEzBC,GAAc,SAAS5lO,GACvB,OAFqB,IAEdA,CACV,EACGisN,GAAmB4Z,GAAAA,QAA6B,CAChD5oE,uBAAwB,WACpBp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7B2sE,cAAc,GAErB,EACDrpE,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B+kL,cAAe,OACfC,mBAAmB,EACnBC,eAAe,EACfxM,cAAe,GACfC,iBAAkB,GAClBY,yBAA0B,KAC1BvvI,QAAS,KACT40F,eApBa,EAqBbmmD,aAAc,KACdnM,mBAAoB,KACpBuM,gBAAiB,KACjBC,eAAgB,KAChBC,cAAe,MAEtB,EACDxkL,KAAM,SAASv2C,EAASpP,GACpB4C,KAAKwnO,aAAepqO,GAAW,CAAC,EAChC4C,KAAKmiD,SAAS31C,EAASpP,EAC1B,EACDmmG,MAAO,WACHvjG,KAAKynO,oBACLznO,KAAKmiD,WACLniD,KAAK0nO,iBACL1nO,KAAK2nO,sBACR,EACDD,eAAgB,WACZ1nO,KAAKm2F,YAAa/hC,EAAAA,GAAAA,IAAcp0D,KAAK2sC,OAAO,WAC/C,EACDi7L,gBAAiB,SAAShN,GACtB,OAAO56N,KAAK6nO,cAActP,eAAeqC,EAC5C,EACDkN,gBAAiB,SAASjN,EAAkBD,GACxC,OAAO56N,KAAK6nO,cAAcrP,eAAeqC,EAAkBD,EAC9D,EACDmN,eAAgB,SAAS5mO,GACrB,OAAOnB,KAAK6nO,cAAcnP,cAAcv3N,EAC3C,EACD6mO,eAAgB,SAAS1lO,GACrB,OAAOtC,KAAK6nO,cAAc5O,cAAc32N,EAC3C,EACD2lO,oBAAqB,SAAS3sF,GAC1B,OAAOt7I,KAAK6nO,cAAcxP,mBAAmB/8E,EAChD,EACDw9E,gBAAiB,WACb,QAAS94N,KAAK+oG,gBAAgBzmG,KACjC,EACD4lO,mBAAoB,WAChB,OAAOloO,KAAK+oG,gBAAgBvuE,QAC/B,EACDl4B,IAAK,WACD,OAAItC,KAAK2sC,OAAO,WACL3sC,KAAK2sC,OAAO,WAEhB3sC,KAAK+oG,gBAAgBzmG,KAC/B,EACD2tF,MAAO,SAASrrF,GACZ,IAAItC,EAAMsC,EAMV,OALI5E,KAAK2sC,OAAO,WACZrqC,EAAMtC,KAAKm2F,WAAWvxF,GACf5E,KAAK+oG,gBAAgBxQ,UAC5Bj2F,EAAMtC,KAAK+oG,gBAAgB9Y,MAAMrrF,IAE9BtC,CACV,EACD6lO,6BAA8B,WAC1B,OAAO,CACV,EACDR,qBAAsB,WAClB,IAAIl4K,EAAOzvD,KACPy4N,EAAchpK,EAAKo4K,cAAcpP,YACrCz4N,KAAKooO,WAAa,IAAIlE,GAAU,CAC5B/C,eAAgBnhO,KAAKmoO,+BACrB7gN,KAAMtnB,KAAK2sC,OAAO,iBAClB8uL,yBAA0Bz7N,KAAK2sC,OAAO,4BACtCouL,kBAAmB/6N,KAAK84N,kBACxBgC,mBAAoB,SAASl9N,IACrBA,EAAK48N,cAAc75N,QAAU/C,EAAK68N,gBAAgB95N,UAClD8uD,EAAK9iB,OAAO,gBAAiB8iB,EAAKq4K,gBAAgBlqO,EAAKi9N,iBAAkBj9N,EAAKg9N,gBAC9EnrK,EAAK44K,qBAAqBzqO,GAEjC,EACD48B,OAAQi1B,EAAKy4K,mBAAmBprO,KAAK2yD,GACrCgnC,WAAY,WACR,IAAIvwC,EAAQuJ,EAAK9iB,OAAO,SACpB8pD,EAAahnC,EAAKs5C,gBAAgBtS,aACtC,OAAOA,GAAc,EAAIA,EAAahnC,EAAK64K,eAAepiL,EAC7D,EACD5jD,IAAKmtD,EAAKntD,IAAIxF,KAAK2yD,GACnBwgC,MAAOxgC,EAAKwgC,MAAMnzF,KAAK2yD,GACvB4mC,KAAM,SAASj5F,GACX,IAAImrO,EACAz/H,EAAiBr5C,EAAKs5C,gBAG1B,OAFA3rG,EAAQorO,kBAAoB,QAAUD,EAAwBz/H,EAAe5E,qBAAkB,IAAWqkI,OAAwB,EAASA,EAAsBC,kBACjKprO,EAAQg8F,SAAW0P,EAAe1P,WAC9B0P,EAAevQ,QACRuQ,EAAe9B,cAAc5pG,GAASwxD,MAAM,SAAS83C,GACxD,IAAIj3C,EAAKu0C,UAAT,CAGA,IAAI99C,EAAQu6C,GAAoBiG,GAAYpsG,KAC5CwuG,EAAe1B,iBAAiBlhD,EAF/B,CAGJ,KAEO,IAAI7oC,GAAAA,IAAUze,QAAQoB,KAAK+7N,aAE1C,EACDL,WAAY,WACR,OAAOjsK,EAAKs5C,gBAAgBl5B,QAC/B,EACDksJ,WAAYtD,EAAY37N,KAAK2yD,EAAKo4K,gBAEzC,EACDS,eAAgB,SAASpiL,GAAO,WAC5B,OAAOA,EAAM/hD,QAAO,SAACskO,EAAY7jO,GAAb,OAAsB6jO,GAAc7jO,EAAKshD,MAAQ,EAAKoiL,eAAe1jO,EAAKshD,OAAS,EAAnF,GAAuF,EAC9G,EACDuhL,kBAAmB,WACf,IAAIiB,EAAWxO,GACfl6N,KAAK6nO,cAAgB,IAAIa,EAAS1oO,KACrC,EACD2oO,wBAAyB,SAAS3pO,GAC9B,IAAIywD,EAAOzvD,KACP+iO,EAAU,GAUd,OATA/jO,EAAOA,GAAQgB,KAAKooO,WAAWnE,sBAC/Bx0K,EAAKo4K,cAAc9O,cACnBlsK,EAAAA,EAAAA,IAAK7tD,GAAO,SAASF,EAAGwD,GACpB,IAAIw+K,EAAgBrxH,EAAKu4K,eAAe1lO,GACpCykO,GAAYjmD,IACZiiD,EAAQ3iO,KAAK0gL,EAEpB,IACDrxH,EAAKo4K,cAAc7O,WACZ+J,CACV,EACDz6D,YAAa,WAAW,WACpBtoK,KAAK4oO,YAAa,EACb5oO,KAAK+oG,gBAAgBpE,aACtB3kG,KAAK6oO,wBAAwBj6K,MAAK,kBAAM,EAAKk6K,yBAAX,IAEtC9oO,KAAKmiD,UACR,EACD24B,QAAS,WACL96E,KAAKmiD,WACLniD,KAAK4oO,YAAa,CACrB,EACDrwB,wBAAyB,WACrBv4M,KAAK4oO,YAAa,EAClB5oO,KAAK+oO,WAAY,EACjB/oO,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD+wN,sBAAuB,SAASG,GAE5B,IAAI/B,EACAnmD,EACA+5C,EACAD,EACJ,OALAoO,EAAWA,GAAYhpO,KAAKipO,uBAMxB,IAAK,gBACDhC,EAAejnO,KAAK6nO,cAAcvP,mBAAmBt4N,KAAK2sC,OAAO,mBAC7D0hB,EAAAA,EAAAA,IAAU44K,IACVjnO,KAAKwhK,8BAA8B,gBAAiB,CAACylE,IACrDjnO,KAAKwhK,8BAA8B,eAAgBylE,GACnDjnO,KAAKwhK,8BAA8B,mBAAoBxhK,KAAK6nO,cAActP,eAAe,CAAC0O,OAE1FjnO,KAAKwhK,8BAA8B,gBAAiB,IACpDxhK,KAAKwhK,8BAA8B,mBAAoB,IACvDxhK,KAAKwhK,8BAA8B,eAAgB,OAEvD,MACJ,IAAK,gBAGD,GADAsf,GADA85C,EAAgB56N,KAAK2sC,OAAO,kBAAoB,IAClBhsC,OAASX,KAAK6nO,cAAcxP,mBAAmBuC,EAAc,KAvLlF,EAwLL56N,KAAK2sC,OAAO,uBAAyBo6L,GAAYjmD,GACjD,OAAO9gL,KAAK6oO,sBAAsB,iBAEtC7oO,KAAKwhK,8BAA8B,eAAgBo5D,EAAc,IACjE56N,KAAKwhK,8BAA8B,gBAAiBsf,GACpD9gL,KAAKwhK,8BAA8B,mBAAoBxhK,KAAK6nO,cAActP,eAAeqC,IACzF,MACJ,IAAK,eAGD,GAFAqM,EAAejnO,KAAK2sC,OAAO,gBAC3Bm0I,EAAgB9gL,KAAK6nO,cAAcxP,mBAAmB4O,GAClDjnO,KAAK2sC,OAAO,uBAAyBo6L,GAAYjmD,GACjD,OAAO9gL,KAAK6oO,sBAAsB,kBAElCx6K,EAAAA,EAAAA,IAAU44K,IACVjnO,KAAKwhK,8BAA8B,gBAAiB,CAACylE,IACrDjnO,KAAKwhK,8BAA8B,gBAAiBsf,GACpD9gL,KAAKwhK,8BAA8B,mBAAoBxhK,KAAK6nO,cAActP,eAAe,CAAC0O,OAE1FjnO,KAAKwhK,8BAA8B,gBAAiB,IACpDxhK,KAAKwhK,8BAA8B,mBAAoB,IACvDxhK,KAAKwhK,8BAA8B,iBA5M9B,IA8MT,MACJ,IAAK,mBAED,GADAq5D,EAAmB76N,KAAK2sC,OAAO,oBAC3B3sC,KAAK2sC,OAAO,qBAAsB,CAClC,IAAIu8L,EAAoBlpO,KAAKgoO,eAAenN,EAAiB,IAC7D,IAAKkM,GAAYmC,GACb,OAAOlpO,KAAK6oO,sBAAsB,gBAEzC,CACD,OAAO7oO,KAAKooO,WAAWe,aAAatO,GAE5C,OAAQ,IAAIx9M,GAAAA,IAAUze,UAAU0e,SACnC,EACD2rN,oBAAqB,WACjB,IAAIz5L,EAAa,gBACb45L,EAAkB,SAAS55L,GAC3B,IAAIiJ,EAAcz4C,KAAK2sC,OAAO6C,GAE9B,OADa6e,EAAAA,EAAAA,IAAU5V,IAAgBA,EAAY93C,QAClC6uC,KAAcxvC,KAAKwnO,YACvC,EAAC1qO,KAAKkD,MAQP,OAPIopO,EAAgB,iBAChB55L,EAAa,gBACN45L,EAAgB,gBACvB55L,EAAa,eACN45L,EAAgB,sBACvB55L,EAAa,oBAEVA,CACV,EACD65L,aAAc,SAASvH,EAASC,GAC5B,GAAID,EAAQnhO,SAAWohO,EAAQphO,OAC3B,OAAO,EAEX,IAAK,IAAIgI,EAAI,EAAGA,EAAIo5N,EAAQphO,OAAQgI,IAChC,GAAIm5N,EAAQn5N,KAAOo5N,EAAQp5N,GACvB,OAAO,EAGf,OAAO,CACV,EACDmgO,wBAAyB,WACrB,GAAI,SAAW9oO,KAAK2sC,OAAO,iBACvB3sC,KAAKwhK,8BAA8B,gBAAiB,IACpDxhK,KAAK6oO,sBAAsB,sBACxB,GAAI,WAAa7oO,KAAK2sC,OAAO,iBAAkB,CAClD,IAAI28L,EAAetpO,KAAK2sC,OAAO,iBAC/B,GAAI28L,EAAa3oO,OAAS,IAAM2oO,EAAa3oO,QAAUX,KAAK2sC,OAAO,sBAAwB3sC,KAAK2sC,OAAO,UAAY3sC,KAAK2sC,OAAO,SAAShsC,OAAQ,CAC5I,IAAI4oO,EAAmBvpO,KAAKooO,WAAWtH,mBACnC0I,OAAsB,IAAWF,EAAa,GAAKC,EAAiB,GAAKD,EAAa,GAS1F,YARI,IAAWE,IACXA,EAAsBxpO,KAAK6nO,cAAcpP,cAAc,IAEvDz4N,KAAK2sC,OAAO,YAAc68L,GAAuBA,EAAoBtjL,QACrEsjL,EAAoBtjL,MAAQ,CAACsjL,EAAoBtjL,MAAM,KAE3DlmD,KAAKooO,WAAWe,aAAanpO,KAAK4nO,gBAAgB,CAAC4B,KACnDxpO,KAAKwhK,8BAA8B,gBAAiB,CAACgoE,IAC9CxpO,KAAK6oO,sBAAsB,gBACrC,CACG7oO,KAAKooO,WAAWe,aAAanpO,KAAK4nO,gBAAgB0B,GAEzD,KAAM,CACH,IAAIvH,EAAU/hO,KAAK4nO,gBAAgB5nO,KAAK2sC,OAAO,kBAC3Cm1L,EAAU9hO,KAAKooO,WAAWnE,sBACzBjkO,KAAKqpO,aAAavH,EAASC,IAC5B/hO,KAAKooO,WAAWe,aAAapH,EAEpC,CACD,OAAQ,IAAI1kN,GAAAA,IAAUze,UAAU0e,SACnC,EACD2wM,kBAAmB,SAAShlN,GAAG,uBACvBwgO,GAAqB,IAAIpsN,GAAAA,IAAUze,UACnCujD,EAAWniD,KAAKmiD,SACpBniD,KAAK8gK,cAAc,SAAS73J,GACxB,IAAIygO,EACJD,EAAoB,QAAUC,EAAwB1pO,KAAK2pO,mBAAmB1gO,EAAElI,cAAW,IAAW2oO,EAAwBA,EAAwBD,CACzJ,EAAC3sO,KAAKkD,MAAO,CACV8gJ,qBAAsB,eAJ1B9gJ,CAKG,CACC8/D,YAAaiR,GAAE9nE,EAAEu2D,eACjBz+D,MAAOkI,IAEXwgO,EAAkBpzK,QAAO,WACrBlU,EAASpqC,MAAM,EAAMD,EACxB,GACJ,EACD6xN,mBAAoB,SAAS1gO,GACzB,IAAI2gO,EACAH,EACJ,GAAKzpO,KAAK2sC,OAAO,iBAAjB,CAGA,IAAImhL,EAAe7kN,EAAEu2D,cAMrB,OALIx/D,KAAK87N,eAAehO,GACpB9tN,KAAK6pO,aAAa5gO,EAAEu2D,eAEpBiqK,EAAoBzpO,KAAKkxN,WAAWjoN,EAAEu2D,eAEnC,QAAUoqK,EAAqBH,SAAsB,IAAWG,OAAqB,EAASA,EAAmBtsN,SAPvH,CAQJ,EACDwsN,qBAAsB,SAAS3oO,GAC3B,OAAOnB,KAAK2wN,gBAAgB/gJ,GAAGzuE,EAClC,EACD40N,uBAAwB,SAASn4N,GAC7B,GAAI,SAAWoC,KAAK2sC,OAAO,iBAAkB,CACzC,IAAImhL,EAAe/8I,GAAEnzE,EAAKkiE,aACtB65J,EAAsB35N,KAAK6nO,cAAc3O,mBAAmBpL,GAC5DgO,EAAiB97N,KAAK+pO,gBAAgBpQ,GAC1C35N,KAAKgqO,uBAAuBlc,EAAcgO,EAC7C,CACJ,EACDkO,uBAAwB,SAASlc,EAAc6X,GAC3C7X,EAAa7/I,YAAYjuE,KAAK0zN,qBAAsBiS,GACpD3lO,KAAKiqO,2BAA2Bnc,EAAcrkN,OAAOk8N,GACxD,EACD0C,qBAAsB,SAASzqO,GAC3B,IAAI6xD,EAAOzvD,KACPw6N,EAAgB58N,EAAK48N,cACrBC,EAAkB78N,EAAK68N,gBAC3B,GAAIhrK,EAAKs5K,YAAcvO,EAAc75N,QAAU85N,EAAgB95N,QAAS,CACpE,IAAIupO,EAAyBz6K,EAAK06K,wBAClC,IAAK16K,EAAKm5K,WAAY,CAClB,IACIwB,EADAC,EAAiB,GAEjBC,EAAmB,GACvB76K,EAAKo4K,cAAc9O,aACnB,IAAK,IAAIpwN,EAAI,EAAGA,EAAI6xN,EAAc75N,OAAQgI,IACtCyhO,EAAkB36K,EAAKu4K,eAAexN,EAAc7xN,IACpD0hO,EAAejqO,KAAKgqO,GACpB36K,EAAK86K,cAAcH,GAEvB,IAAK,IAAI70N,EAAK,EAAGA,EAAKklN,EAAgB95N,OAAQ4U,IAC1C60N,EAAkB36K,EAAKu4K,eAAevN,EAAgBllN,IACtD+0N,EAAiBlqO,KAAKgqO,GACtB36K,EAAK+6K,iBAAiBJ,GAE1B36K,EAAKo4K,cAAc7O,WACnBvpK,EAAKg7K,iBAAiBJ,EAAgBC,EACzC,EACDj7K,EAAAA,GAAAA,IAAK66K,GAAwBt7K,MAAM,WAC/Ba,EAAKi7K,0BAA0B9sO,EAAK88N,WAAY98N,EAAK+8N,aACxD,GACJ,CACJ,EACD+P,0BAA2B,SAAShQ,EAAYC,GAC5C36N,KAAK2/J,sBAAsB,qBAAsB,CAC7C5e,kBAAmB,CAAC,WAAY,aADpC/gJ,CAEG,CACC06N,WAAYA,EACZC,aAAcA,GAErB,EACD8P,iBAAkB3oN,GAAAA,KAClBmoN,2BAA4B,SAASroF,EAAS1jJ,GAC1C8B,KAAK86M,QAAQ,WAAY58M,EAAO0jJ,EACnC,EACD4oF,iBAAkB,SAASJ,GACvB,IAAItc,EAAe9tN,KAAK6nO,cAAcpO,eAAe2Q,GACjDrD,GAAYqD,KACZpqO,KAAKgqO,uBAAuBlc,GAAc,GAC1CvvJ,EAAAA,EAAAA,eAA4BuvJ,EAAc,gBAAgB,GAEjE,EACDyc,cAAe,SAASH,GACpB,IAAItc,EAAe9tN,KAAK6nO,cAAcpO,eAAe2Q,GACjDrD,GAAYqD,KACZpqO,KAAKgqO,uBAAuBlc,GAAc,GAC1CvvJ,EAAAA,EAAAA,eAA4BuvJ,EAAc,gBAAgB,GAEjE,EACDic,gBAAiB,SAAS5oO,GACtB,IAAImB,EAAMtC,KAAK+nO,eAAe5mO,GAC9B,OAAOnB,KAAKooO,WAAWtM,eAAex5N,EAAK,CACvCmhO,cAAc,GAErB,EACD3jE,eAAgB,SAASliK,GAAM,WAC3B,OAAQA,EAAKxE,MACT,IAAK,gBACD4G,KAAKypK,cACL,MACJ,IAAK,eACI7rK,EAAKM,OAAS2G,MAAMC,QAAQlH,EAAKM,SAAWN,EAAKM,MAAMyC,SACxDX,KAAK2sC,OAAO,mBAAoB,IAEpC3sC,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,gBACL,IAAK,eACL,IAAK,gBACL,IAAK,mBACDoC,KAAK6oO,sBAAsBjrO,EAAKxE,MAAMw1D,MAAK,kBAAM,EAAKk6K,yBAAX,IAC3C,MACJ,IAAK,UACD9oO,KAAK0nO,iBACL,MACJ,IAAK,oBACD1nO,KAAK8oO,0BACL,MACJ,IAAK,gBACL,IAAK,qBACL,IAAK,iBACL,IAAK,gBACL,IAAK,kBACL,IAAK,2BACD,MACJ,QACI9oO,KAAKmiD,SAASvkD,GAEzB,EACD+sO,oBAAqB,WACjB3qO,KAAKwhK,8BAA8B,gBAAiB,IACpDxhK,KAAK6oO,sBAAsB,gBAC9B,EACD+B,qBAAsB,SAAS9c,GAC3B,GAAIA,EAAaxzN,KAAKwsO,IAClB,OAAQ,IAAIzpN,GAAAA,IAAUze,UAAU0e,UAEpCwwM,EAAaxzN,KAAKwsO,IAAwB,GAC1C,IAAIv4K,EAAW,IAAIlxC,GAAAA,GACfwtN,EAAqB,CACrB7pL,QAAQ,GAER8pL,EAAgB9qO,KAAKy3N,kBAAkB3J,EAAc,iBAAkB+c,EAAoB,CAC3F9pF,kBAAmB,CAAC,WAAY,cAapC,OAXA1xF,EAAAA,GAAAA,IAAKy7K,GAAez0K,OAAO,SAASn4D,GAChC,IAAI6sO,GAAuBD,EACvBE,GAAyBD,GAAuB,aAAeD,EAAcpiM,QAC7EuiM,IAAuBnzN,UAAUnX,OACjCuqO,EAAeH,GAAuBC,IAA0BC,GAAsBD,GAAyB9sO,GACnHmxD,EAAAA,GAAAA,KAAKoH,EAAAA,GAAAA,IAAYo0K,EAAmB7pL,SAASqV,QAAQ,WACjDy3J,EAAaxzN,KAAKwsO,IAAwB,EAC7C,IAAGl4K,MAAM,SAAS5N,GACfkqL,IAAiBlqL,EAASuN,EAAS3vD,UAAY2vD,EAAS/uD,QAC3D,IAAG8vD,KAAKf,EAAS/uD,OACrB,EAAC1C,KAAKkD,OACAuuD,EAASjxC,SACnB,EACD6tN,kBAAmB,SAASra,GACxB,IAAIhoH,EAAiB9oG,KAAK+oG,gBACtBx6C,EAAW,IAAIlxC,GAAAA,GACf+tN,EAAgBprO,KAAK2sC,OAAO,YAC5B0+L,EAAYviI,EAAevQ,QAC/B,IAAK8yI,EACD,OAAQ,IAAIhuN,GAAAA,IAAUze,UAAU0e,UAEpC,IAAK+tN,EAAU3tO,OACX,MAAM4hB,GAAAA,MAAa,SAevB,OAbAtf,KAAK2sC,OAAO,YAAY,GACxB0+L,EAAU3tO,OAAOorG,EAAe7Y,MAAMjwF,KAAK+tN,aAAa+C,KAASliK,MAAM,SAAStsD,QACxE,IAAWA,EACXisD,EAAS3vD,UAET2vD,EAAS/uD,QAEhB,IAAG8vD,MAAM,WACNf,EAAS/uD,QACZ,IACD+uD,EAAS8H,OAAO,WACZr2D,KAAK2sC,OAAO,WAAYy+L,EAC3B,EAACtuO,KAAKkD,OACAuuD,CACV,EACD+8K,oBAAqB,WACjB,IAAI/8K,EAAW,IAAIlxC,GAAAA,GAQnB,OAPIrd,KAAK4jG,eAAiB5jG,KAAK2sC,OAAO,WAClC4hB,EAAS3vD,UAEToB,KAAKurO,mBAAmB38K,MAAM,WAC1BL,EAAS3vD,SACZ,IAEE2vD,EAASjxC,SACnB,EACDiuN,iBAAkB,WAEd,OADAvrO,KAAK2yN,yBACE3yN,KAAK+oG,gBAAgB1S,MAC/B,EACDm1I,4BAA6B,SAASrqO,GAClC,IAAImB,EAAMtC,KAAK+nO,eAAe5mO,GAC9BnB,KAAKooO,WAAWqD,SAAS,CAACnpO,GAC7B,EACDopO,yBAA0B,SAASvqO,GAE/B,IADA,IAAIwwN,EAAe3xN,KAAK2wN,gBACfhoN,EAAIxH,EAAQ,EAAGwH,EAAIgpN,EAAahxN,OAAQgI,IAC7CooE,GAAE4gJ,EAAahpN,IAAIrO,KAAK0F,KAAKiyN,gBAAiBtpN,EAAI,EAEzD,EACDgjO,sBAAuB,SAASn8L,GAC5B,IAAIiJ,EAAcz4C,KAAK2sC,OAAO6C,GAC1BiJ,aAAuB+oD,IAG3BxhG,KAAK0/J,qBAAqB,CACtBtmK,KAAMo2C,EACNK,SAAUL,EACVtxC,MAAOu6C,GAEd,EACDqjL,eAAgB,SAASh8J,GACrB,OAAO9/D,KAAK+pO,gBAAgB/pO,KAAK6nO,cAAc3O,mBAAmBp5J,GACrE,EACDoxJ,WAAY,SAASpxJ,GACjB,GAAI,SAAW9/D,KAAK2sC,OAAO,iBAA3B,CAGA,IAAI8rG,EAAYz4I,KAAK6nO,cAAc3O,mBAAmBp5J,GACtD,GAAKinK,GAAYtuF,GAAjB,CAGA,IAAIn2I,EAAMtC,KAAK+nO,eAAetvF,GAC9B,IAAIz4I,KAAKooO,WAAWtM,eAAex5N,GAAnC,CAGA,GAAI,WAAatC,KAAK2sC,OAAO,iBACzB,OAAO3sC,KAAKooO,WAAWe,aAAa,CAAC7mO,IAErC,IAAIu4N,EAAmB76N,KAAK2sC,OAAO,qBAAuB,GAC1D,OAAO3sC,KAAKooO,WAAWe,aAAhB,mBAAiCtO,GAAjC,CAAmDv4N,IAAM,CAACA,GALpE,CAJA,CAJA,CAeJ,EACDunO,aAAc,SAAS/pK,GACnB,IAAI24E,EAAYz4I,KAAK6nO,cAAc3O,mBAAmBp5J,GACtD,GAAKinK,GAAYtuF,GAAjB,CAGA,IAAIoiF,EAAmB76N,KAAKooO,WAAWnE,sBACvC,KAAIjkO,KAAK2sC,OAAO,sBAAwBkuL,EAAiBl6N,QAAU,GAAnE,CAGA,IAAI2B,EAAMtC,KAAK+nO,eAAetvF,GACzBz4I,KAAKooO,WAAWtM,eAAex5N,EAAK,CACjCmhO,cAAc,KAItBzjO,KAAKooO,WAAWqD,SAAS,CAACnpO,GAPzB,CAJA,CAYJ,EACDspO,0BAA2B,SAASzqO,GAChCnB,KAAKwrO,4BAA4BrqO,GACjCnB,KAAK0rO,yBAAyBvqO,GAC9BnB,KAAK6nO,cAAcjO,kBAAkBz4N,EACxC,EACD0qO,yBAA0B,SAAS/a,EAAOgb,GACtC,IAAIC,EAAiB/rO,KAAK+oG,gBAAgB1B,gBAAkB,aAAe,QAC3ErnG,KAAK2rO,sBAAsBI,GAC3B/rO,KAAKy3N,kBAAkB3G,EAAO,gBAAiBgb,EAAmB,CAC9DrrF,cAAe,WACXqwE,EAAMpzN,QACT,EACDqjJ,kBAAmB,CAAC,WAAY,cAEpC/gJ,KAAKoyN,qBACR,EACD4Z,WAAY,SAASlsK,GACjB,IAAIrQ,EAAOzvD,KACPuuD,EAAW,IAAIlxC,GAAAA,GACfyzM,EAAQ9wN,KAAK6nO,cAAcpO,eAAe35J,GAC1C3+D,EAAQnB,KAAK6nO,cAAc3O,mBAAmBp5J,GAC9CmsK,EAAwBjsO,KAAK2zN,yBAqBjC,OApBIoT,GAAY5lO,GACZnB,KAAK4qO,qBAAqB9Z,GAAOliK,MAAM,WACnCkiK,EAAM1iJ,SAAS69J,GACf,IAAIH,EAAoBr8K,EAAKooK,kBAAkB/G,GAC/CrhK,EAAK07K,kBAAkBra,GAAOliK,MAAM,WAChCa,EAAKm8K,0BAA0BzqO,GAC/BsuD,EAAKo8K,yBAAyB/a,EAAOgb,GACrCr8K,EAAK67K,sBAAsB18K,MAAM,WAC7BL,EAASO,YAAYW,EACxB,GACJ,IAAGH,MAAM,WACNwhK,EAAMziJ,YAAY49J,GAClB19K,EAASI,WAAWc,EACvB,GACJ,IAAGH,MAAM,WACNf,EAASI,WAAWc,EACvB,IAEDlB,EAASI,WAAWc,GAEjBlB,EAASjxC,SACnB,EACD4uN,YAAa,SAASpsK,EAAaqsK,GAC/B,IAAI59K,EAAW,IAAIlxC,GAAAA,GACfoyC,EAAOzvD,KACPmkE,EAAWnkE,KAAK6nO,cAChBuE,EAAcjoK,EAASs1J,eAAe35J,GACtCusK,EAAmBloK,EAASs1J,eAAe0S,GAC3CrS,EAAc31J,EAAS+0J,mBAAmBp5J,GAC1Ci6J,EAAmB51J,EAAS+0J,mBAAmBiT,GAC/CJ,EAAiB/rO,KAAK+oG,gBAAgB1B,gBAAkB,aAAe,QAO3E,OANmB0/H,GAAYjN,IAAgBiN,GAAYhN,IAAqBD,IAAgBC,EAE5FxrK,EAASO,YAAY9uD,MAErBuuD,EAASI,WAAW3uD,MAEjBuuD,EAASjxC,UAAUsxC,MAAM,WAC5By9K,EAAiBloK,EAAS01J,kBAAkBC,EAAaC,IAAmBqS,GAC5EjoK,EAAS81J,uBAAuBH,EAAaC,GAC7C/5N,KAAK0rO,yBAAyB5R,GAC9BrqK,EAAK9iB,OAAO,gBAAiB8iB,EAAKq4K,gBAAgBr4K,EAAK24K,WAAWnE,sBAAuBx0K,EAAK24K,WAAWtH,qBACrG,UAAYiL,GACZt8K,EAAKk8K,sBAAsBI,GAE/Bt8K,EAAKgoK,kBAAkB2U,EAAa,kBAAmB,CACnDE,UAAWnoK,EAASq1J,SAASM,GAC7ByS,QAASpoK,EAASq1J,SAASO,IAC5B,CACCh5E,kBAAmB,CAAC,WAAY,aAEvC,GACJ,IAEL,MCvoBIyrF,GAAwBC,GAAAA,QAA6B,CACrDnkE,YADqD,WAEjDtoK,KAAK0sO,eAAiB,GACtB1sO,KAAKmiD,UACR,EACDyzK,mBALqD,SAKlCh4N,GACf,IAAI+uO,EAAwB,IAAItvN,GAAAA,GAC5BuvN,EAAe,IAAIvvN,GAAAA,GACvBrd,KAAK0sO,eAAe9uO,EAAKuD,OAASyrO,EAClC,IAAInX,EAAez1N,KAAKmiD,SAAS1jD,KAAKuB,KAAMpC,GAI5C,OAHAgvO,EAAah+K,MAAK,WACd+9K,EAAsB/tO,QAAQ62N,EACjC,IACMkX,EAAsBrvN,SAChC,EACD25M,wBAAyB,SAAS7I,EAAc4I,GAAY,WACxD,OAAO,WACH,EAAK0V,eAAe1V,EAAW71N,OAAOvC,SACzC,CACJ,EACDiuO,wBAAyB/qN,GAAAA,KACzBgrN,kBArBqD,WAqBjC,WACZtpN,EAAI,IAAInG,GAAAA,GAKZ,OAJAgyC,GAAAA,GAAAA,MAAWrvD,KAAMA,KAAK0sO,gBAAgB99K,MAAK,WACvC,EAAKi+K,0BACLrpN,EAAE5kB,SACL,IACM4kB,EAAElG,SACZ,EACDgsJ,OA7BqD,WA8BjDtpK,KAAKmiD,WACLniD,KAAK0sO,eAAiB,EACzB,ICxCMK,GAAgB,aCgCvBC,GAAuB,oBAEvBC,GAAsB,mBAGtBC,GAAsB,mBAItBC,GAAwB,qBACxBC,GAAmB,OAKjBC,GAAAA,SAAAA,sKACF,WACI,OAAO,2FAAoD7yM,QAAO,SAAA51B,GAAI,MAAI,aAAeA,CAAnB,GACzE,+BACD,YACI,8DACA,IAAI4a,EAAW,IAAIk7D,GAAiB,SAASF,EAAYlgF,EAAMgzO,GAC3D,IAAIlmM,EAAAA,EAAAA,IAAc9sC,GAAO,CACrB,IAYQizO,EAXE5mO,EAGNrM,EAHAqM,KACMwmE,EAEN7yE,EAFA6yE,KACQ61F,EACR1oK,EADA0oK,OAQJ,GANIr8J,GACA6zE,EAAW7zE,KAAKA,GAAMmoE,UAAU,SAEhC3B,GACAqN,EAAWrN,KAAKA,GAEhB,qBAAuB61F,EAEvB1oK,EAAK8C,QAAU,QAAUmwO,EAAgBjzO,EAAK8C,eAAY,IAAWmwO,EAAgBA,EAAgB,CAAC,GACjGl/K,EAAAA,EAAAA,IAAU/zD,EAAK8C,QAAQkrM,eACxBhuM,EAAK8C,QAAQkrM,YAActoM,KAAK2sC,OAAO,kBAAoBygM,GA1BzC,aA6B1B,GAAI,aAAepqE,EAAQ,CAEnB,IAAIwqE,EAAgBC,EAKhBC,EAAgBC,EANxB,GAAI3tO,KAAK2sC,OAAO,kBAEZryC,EAAK8C,QAAU,QAAUowO,EAAiBlzO,EAAK8C,eAAY,IAAWowO,EAAiBA,EAAiB,CAAC,EACzGlzO,EAAK8C,QAAQkrM,YAAc,QAAUmlC,EAAwBnzO,EAAK8C,QAAQkrM,mBAAgB,IAAWmlC,EAAwBA,EAAwBL,GAEzJ,GAAIptO,KAAK2sC,OAAO,qBAEZryC,EAAK8C,QAAU,QAAUswO,EAAiBpzO,EAAK8C,eAAY,IAAWswO,EAAiBA,EAAiB,CAAC,EACzGpzO,EAAK8C,QAAQiI,KAAO,QAAUsoO,EAAqBrzO,EAAK8C,QAAQiI,YAAS,IAAWsoO,EAAqBA,EAvCvG,SAyCT,CACJ,MACGnzJ,EAAW7zE,KAAK8C,OAAOnP,IAE3B0F,KAAK+qK,aAAa,uBAAuBz8H,OAAO,CAC5C/mC,UAAWizE,EACX/kC,MAAO63L,EACPziO,OAAQ7K,MAEf,EAAClD,KAAKkD,MAAO,CAAC,OAAQ,OAAQ,SAAU,WAAYA,KAAK2sC,OAAO,mCACjE3sC,KAAK4pK,iBAAiBgsB,oBAAoB,CACtChxL,KAAM4a,EACNouN,SAAUpuN,GAEjB,mCACD,WACI,OAAOimC,EAAAA,GAAAA,IAAO,kEAA4B,CACtCooL,SAAU,aACVC,SAAS,EACTC,gBAAgB,EAChBC,mBAAmB,GAE1B,qCACD,WACI,OAAO,oEAA6B/9N,OAAO,CAAC,CACxCymE,OAAQ,WACJ,OAAOwmH,IACV,EACD9/L,QAAS,CACL2wO,gBAAgB,KAG3B,+BACD,WACI,OAAO/tO,KAAKiuO,wBAAwBjyO,KAAK,CAAC,IAAIiU,OAAO+8N,IAAuB,IAAI/8N,OArF7D,qBAqF2F,IAAIA,OAAOg9N,KAAsBxgO,KAAK,KACvJ,2BACD,WACI,MArFiB,iBAsFpB,6BACD,WACI,MA/EoB,sBAgFvB,kCACD,WACQzM,KAAKgkG,YAGThkG,KAAKkuO,gBACLluO,KAAKmuO,oBACR,4BACD,WACInuO,KAAKouO,iBACLpuO,KAAKquO,mBACL,0DACH,wBACD,YACI,uDACAruO,KAAK8sO,oBACL9sO,KAAKsuO,6BACR,wCACD,WACItuO,KAAKkuO,eACR,+BACD,WACIluO,KAAKg6D,WAAWoU,SAAS2+J,IACzB/sO,KAAKiuO,wBAA0Bl9J,GAAE,SAAS3C,SA7Gd,8BA6GsDO,SAAS3uE,KAAKg6D,YAChGh6D,KAAK86M,QAAQ,OAAQ,UACxB,gCACD,WAAkB,WACVtgI,EAAax6E,KAAKiuO,yBACtBphL,EAAAA,EAAAA,IAAK,CAAC,SAAU,SAAU,UAAU,SAAC/tD,EAAGyvO,GACpC,IAAIC,EAAe,cAAcv+N,OAAOs+N,GACzB/zJ,EAAWx+E,KAAK,IAAIiU,OAAOu+N,IAC5B7tO,SACV,EAAK,KAAKsP,OAAOs+N,EAAS,YAAcx9J,GAAE,SAAS3C,SAASogK,GAAc7/J,SAAS6L,GAE1F,GACJ,8BACD,SAAcwlH,GACV,IAAIyuC,EACJzuC,EAAe,QAAUyuC,EAAgBzuC,SAAiB,IAAWyuC,EAAgBA,EAAgB7jK,GAAS5qE,KAAKg6D,YACnHh6D,KAAK0uO,gBAAgBppM,IAAI,CACrBtG,OAAQ,SACR06C,MAAO,SAEX,IAAIi1J,EAAalkJ,GAAgBzqF,KAAK4uO,gBAAgBh1O,IAAI,IACtDi1O,EAAYpkJ,GAAgBzqF,KAAK8uO,eAAel1O,IAAI,IACxDoG,KAAK+uO,oBAAoBJ,EAAYE,EAAW7uC,GAChD,IAAIgvC,EAAShvO,KAAKiuO,wBAAwBjyO,KAAK,IAAIiU,OAAOi9N,KAAsBt9J,GAAG,GAC/Eq/J,EAAWD,EAAOnkO,SACtB,GAAKmkO,EAAOruO,OAAZ,CAGA,IAAIuuO,EAAcP,EAAWh+M,MAAQg+M,EAAWh+M,MAAQq+M,EAAOxkO,WAAWo6B,KACtEuqM,EAAqBF,EAAS3gK,SAAS0+J,IAAwB,EAAIkC,EACnEE,EAAoBH,EAAS3gK,SAAS2+J,IAAuB,EAAI4B,EAAUl+M,MAC3E0+M,EAAsB,EAC1BJ,EAASlkO,WAAW2xB,IAAI,IAAIzsB,OAAOi9N,KAAsBrgL,MAAM,WAC3DwiL,GAAuBrkK,GAAchrE,KACxC,IACD,IAAIsvO,EAAYtvC,EAAeqvC,EAC3BE,EAAkBhmO,KAAKkuB,IAAI63M,EAAYH,EAAqBC,EAAmB,GACnF,GAAIH,EAAS3gK,SAAS0+J,IAClBhtO,KAAKwvO,cAAcxvO,KAAK4uO,gBAAiBW,OACtC,CACH,IAAIE,EAAgBzkK,GAAcgkK,GAAUpkK,GAASokK,GACrDA,EAAO1pM,IAAI,WAAYiqM,EAAkBE,EAC5C,CAfA,CAgBJ,oCACD,SAAoBd,EAAYE,EAAW7uC,GACvChgM,KAAKwvO,cAAcxvO,KAAK0uO,gBAAiB1uC,EAAe2uC,EAAWh+M,MAAQk+M,EAAUl+M,OACrF,IAAI++M,EAAQ1vO,KAAK2sC,OAAO,cACpBgjM,EAAWD,EAAQb,EAAYF,EAC/BiB,EAAYF,EAAQf,EAAaE,EACjCgB,EAAaplJ,GAAgBzqF,KAAK0uO,gBAAgB90O,IAAI,KACtD+1O,EAASjrM,MAAQmrM,EAAWjrM,MAAQirM,EAAWnrM,MAAQkrM,EAAUhrM,OACjE5kC,KAAK0uO,gBAAgBppM,IAAI,CACrBzC,WAAY8sM,EAASh/M,MACrBgS,YAAaitM,EAAUj/M,MACvB+oD,MAAOi2J,EAASh/M,MAAQi/M,EAAUj/M,MAAQ,OAAS,SAG9D,8BACD,SAAcs+M,EAAUtuM,GACpB,IACImvM,EADUb,EAASjzO,KAAK,IAAIiU,OAAOi9N,KAClBx/J,UACrB/sC,GAAY3gC,KAAK+vO,0BAA0BD,GAC3C,IAAIE,EAAehwO,KAAKiwO,uBAAuBH,GAC3CjsJ,EAAat6E,KAAKD,IAAI0mO,EAAervM,GACrCA,EAAWqvM,GACXF,EAASA,EAAOh1K,UAChB96D,KAAKkwO,oBAAoBJ,EAAQjsJ,GAAY,IAE7C7jF,KAAKkwO,oBAAoBJ,EAAQjsJ,GAAY,EAEpD,oCACD,SAAoBisJ,EAAQjsJ,EAAYssJ,GAIpC,IAHA,IAAIC,EAAoB,SAAS14N,GAC7B,OAAO+yE,GAAgB/yE,GAAOiZ,KACjC,EACQhoB,EAAI,EAAGA,EAAImnO,EAAOnvO,OAAQgI,IAAK,CACpC,IAAIqmO,EAASj+J,GAAE++J,EAAOnnO,IAClB0nO,EAAoB9mO,KAAKq7E,KAAKwrJ,EAAkBN,EAAOnnO,KACvD2nO,OAAgB,EAChBH,GACAnB,EAAO1pM,IAAI,WAAY,WAE3B,IAAIirM,EAAqBhnO,KAAKq7E,KAAKurJ,EAAYC,EAAkBN,EAAOnnO,IAAM0nO,GAC9E,KAAIE,EAAqB1sJ,GAGlB,CACHysJ,EAAgBH,EAAYE,EAAoBxsJ,EAAawsJ,EAAoBxsJ,EACjFmrJ,EAAO1pM,IAAI,WAAYgrM,GACvB,KACH,CANGA,EAAgBH,EAAYI,EAAqB,EACjD1sJ,GAAc0sJ,EAMlBvB,EAAO1pM,IAAI,WAAYgrM,EAC1B,CACJ,kCACD,WACI,IAAIt2K,EAAWh6D,KAAKg6D,WACpBA,EAASqU,YAAY8+J,IACjBntO,KAAK2sC,OAAO,gBAAkB3sC,KAAK83N,sBAAsB93N,KAAK2xN,gBAAgB,GAAQ/mJ,GAAS5Q,IAC/FA,EAASoU,SAAS++J,GAEzB,uCACD,SAAuB2C,GACnB,IAAIn/M,EAAQ,EAIZ,OAHAm/M,EAAOpvO,SAAS,SAASgX,EAAOvW,GAC5BwvB,GAASq6C,GAActzD,EAC1B,IACMiZ,CACV,0CACD,SAA0Bm/M,GACtB,IAAI7wM,EAAU,EAId,OAHA6wM,EAAOpvO,SAAS,SAASgX,EAAOvW,GAC5B89B,GAAW+rC,GAActzD,GAASkzD,GAASlzD,EAC9C,IACMunB,CACV,4BACD,SAAY99B,EAAOyD,EAAM4rO,EAAeC,GACpC,IAAIC,EAAgBC,EAChBh+M,EAAW,QAAU+9M,EAAiB9rO,EAAK+tB,gBAAa,IAAW+9M,EAAiBA,EAAiB,SACrGnpO,EAAY,OAASipO,QAAiB,IAAWA,EAAgBA,EAAgBxwO,KAAK,KAAKiQ,OAAO0iB,EAAU,YAC5Gi+M,KAAiB,QAAUD,EAAa/rO,EAAK+B,YAAS,IAAWgqO,EAAaA,EAAa/rO,EAAKuoE,MAChGrN,GAAc,0DAAkB3+D,EAAOyD,EAAM2C,EAAWkpO,GAE5D,OADA3wK,EAAYmO,YAvOO,qBAuO4B2iK,GAAa3iK,YAAYi/J,GAAqB0D,GAAaxiK,SAASxpE,EAAK2lK,UACjHzqG,CACV,oCACD,WAAsB,YAClBjT,EAAAA,EAAAA,IAAK7sD,KAAK2sC,OAAO,UAAU,SAAC6rG,EAAYjjD,GACpC,IAAIs7I,EACAC,EAAav7I,EAAMrvC,MACnBs0B,EAAazJ,GAAE,SAAS3C,SA5Od,oBA6OVz7C,EAAW,QAAUk+M,EAAkBt7I,EAAM5iE,gBAAa,IAAWk+M,EAAkBA,EAAkB,SACxGC,GAAeA,EAAWnwO,UAG/BksD,EAAAA,EAAAA,IAAKikL,GAAY,SAACr4F,EAAW7zI,GACzB,EAAKstN,YAAYz5E,EAAW7zI,EAAM41E,EAAY,KACjD,IACD,EAAKyzJ,wBAAwBjyO,KAAK,eAAeiU,OAAO0iB,IAAWhtB,OAAO60E,GAC7E,GACJ,6BACD,SAAat0B,GACKlmD,KAAK2sC,OAAO,YAAcuZ,EAAMvlD,QAAUulD,EAAM,GAAGA,MACvDlmD,KAAK+wO,uBAAR,2DAAmD7qL,EAC7D,iCACD,WACI,IAAI2iD,EACJ,OAAO,QAAUA,EAAe7oG,KAAK2sC,OAAO,gBAAa,IAAWk8D,EAAeA,EAAe,EACrG,mCACD,WACI,IAAI3iD,EAAQlmD,KAAKgxO,mBACjBhxO,KAAKg6D,WAAWiU,YAtQC,kBAsQ+B,IAAM/nB,EAAMvlD,QACxDX,KAAK6vN,oBACL7vN,KAAKk1N,aAAahvK,EAAMnhD,MAAM/E,KAAK6vN,sBAEnC7vN,KAAKk1N,aAAahvK,GAEtBlmD,KAAKmuO,mBACR,oCACD,WAAwB,uBACxB,WACInuO,KAAKiuO,wBAAwBljO,WAAW+iD,QACxC9tD,KAAKg6D,WAAWlM,eACT9tD,KAAK4uO,uBACL5uO,KAAK0uO,uBACL1uO,KAAK8uO,cACf,mCACD,SAAmBjuL,GACXA,GACA7gD,KAAKkuO,eAEZ,2BACD,WACI,OAAOtjK,GAAS5qE,KAAKg6D,YAAc,GAAK8Q,GAAU9qE,KAAKg6D,YAAc,CACxE,gCACD,SAAgBp1D,GACZ,OAAO5E,KAAKgxO,mBAAmB5vO,QAAQwD,EAC1C,mCACD,SAAmBA,EAAMuI,EAAUjP,IAC/B,uDAAyB6Z,MAAM/X,KAAM,CAAC4E,EAAMuI,EAAUjP,IACtD8B,KAAKkuO,eACR,+BACD,SAAel3N,GACX,IACU5d,EAEN4d,EAFA5d,KAEA4d,EADA9Y,MAEJ,OAAQ9E,GACJ,IAAK,SACD,mDAAqB2e,MAAM/X,KAAM8X,WACjC9X,KAAK4nK,oBACL,MACJ,IAAK,WACL,IAAK,iBACL,IAAK,oBACD5nK,KAAKypK,cACL,MACJ,IAAK,cACDzpK,KAAKmuO,oBACL,MACJ,IAAK,UACD,MACJ,SACI,mDAAqBp2N,MAAM/X,KAAM8X,WAE5C,yBACD,YACI,wDACAwd,aAAat1B,KAAKixO,4BACrB,4CACD,WAA8B,WACtB/zC,MACAv+L,QAAQ0nI,IAAI,CAAQ,IAAI1nI,SAAQ,SAAAC,IAcb,SAAXsyO,IACA57M,aAAa,EAAK27M,6BAClB,EAAKA,4BAA8B17M,YAAW,kBAftC,WACR,IAAI47M,GAAiB,EAUrB,OATA,EAAKn3K,WAAWqF,UAAUxS,MAAK,SAAC/tD,EAAG+L,GAC/B,GAAIqmM,GAAAA,YAAengI,GAAElmE,IAEjB,OADAsmO,GAAiB,GACV,CAEd,IACGA,GACAvyO,IAEGuyO,CACV,CAGuDrvC,IAAWovC,GAAjB,GAxU1C,GAyUP,CACDA,EACH,IAAO,WACJ,IAAIE,EAAU,EAAKp3K,WAAWh+D,KAAK,IAAIiU,OAAOi9N,KAC1C7vE,EAAW,GAMf,OALA+zE,EAAQvkL,MAAK,SAAC/tD,EAAG4Y,GACb,IAAI/Q,EAAOoqE,GAAEr5D,GAAO/Q,OAChBqM,EAAa+9D,GAAEr5D,GAAO4tB,IAAI,cAC9B+3H,EAASj9J,KAAK29L,GAAYp3L,EAAMqM,GACnC,IACMrU,QAAQ0nI,IAAIg3B,EACtB,CATO,KASDv/J,MAAK,WACR,EAAK8pK,mBACR,GAER,OAvVCylE,CFLN,IE8VA76D,GAAkB,gBAAiB66D,IACnC,UClYIpzO,IAAS8mD,EAAAA,EAAAA,MACTswL,GAAqB,CACrBC,QAASxvN,GAAAA,KACTyvN,UAAWzvN,GAAAA,KACX0vN,WAAY1vN,GAAAA,MAEV2vN,GAAAA,WACF,aAAc,WACV,IADU,iBACL3wL,EAAAA,EAAAA,QAAgB7mD,GAAOy3O,eACxB,OAAOL,GAEXrxO,KAAK2xO,cAAgB,IAAIz4O,IACzB8G,KAAK4xO,UAAY,IAAI33O,GAAOy3O,gBAAe,SAAAjtO,GACvCA,EAAQ/D,SAAQ,SAAAiE,GACZ,IAAIktO,EACJ,QAAUA,EAAwB,EAAKF,cAAc/3O,IAAI+K,EAAMgT,eAAY,IAAWk6N,GAAiCA,EAAsBltO,EAChJ,GACJ,GACJ,uCACD,SAAQ6H,EAASjP,GACbyC,KAAK2xO,cAAcx4O,IAAIqT,EAASjP,GAChCyC,KAAK4xO,UAAUN,QAAQ9kO,EAC1B,0BACD,SAAUA,GACNxM,KAAK2xO,cAAc9rO,OAAO2G,GAC1BxM,KAAK4xO,UAAUL,UAAU/kO,EAC5B,2BACD,WACIxM,KAAK2xO,cAAcxqM,QACnBnnC,KAAK4xO,UAAUJ,YAClB,OAxBCC,GA2BN,GAD8B,IAAIA,GCrC9BrsN,GAAY,CAAC,aAAc,qBAAsB,sBAAuB,oBAAqB,qBAc7FnrB,IAAS8mD,EAAAA,EAAAA,MACP+wL,GAAAA,SAAAA,iCACF,WAAY96N,GAAM,sBACd,IACgB+6N,EAKZ/6N,EALA+6N,WACoBC,EAIpBh7N,EAJAg7N,mBACqBC,EAGrBj7N,EAHAi7N,oBACmBC,EAEnBl7N,EAFAk7N,kBACmBl5E,EACnBhiJ,EADAgiJ,kBACMp7J,GAAO6pB,EAAAA,GAAAA,GAA8BzQ,EAAMoO,IAPvC,OAQd,cAAMxnB,IACDo4L,QAASj9K,EAAAA,EAAAA,GAAS,CAAC,EAAG,EAAKi9K,OAAQ,CACpC+7C,WAAYA,EACZC,mBAAoBA,EACpBC,oBAAqBA,EACrBC,kBAAmBA,EACnBl5E,kBAAmBA,IAEvB,EAAKm5E,2BAAwB,EAC7B,EAAKC,6BAjBS,CAkBjB,wCACD,SAAeL,GACX/xO,KAAKg2L,OAAO+7C,WAAaA,EACrBA,EACA/xO,KAAKqyO,qBAELryO,KAAKsyO,qBAEZ,mCACD,WACI,OAAOtyO,KAAKmyO,qBACf,gCACD,WACI,OAAInyO,KAAKg2L,OAAOi8C,oBACL,EAEJjyO,KAAKg2L,OAAOh9B,iBACtB,MASD,SAAsBA,GAClBh5J,KAAKg2L,OAAOh9B,kBAAoBA,CACnC,gCAVD,SAAsBk5E,GAClBlyO,KAAKg2L,OAAOk8C,kBAAoBA,EAChClyO,KAAKoyO,4BACR,kCACD,SAAwBH,GACpBjyO,KAAKg2L,OAAOi8C,oBAAsBA,EAClCjyO,KAAKoyO,4BACR,gCAID,SAAgBv0B,IACZ,8DAAsBA,GACtB79M,KAAKoyO,4BACR,4BACD,WACIpyO,KAAK09M,6BAA4B,EACpC,8BACD,WACI19M,KAAK09M,6BAA4B,EACpC,gCACD,WAQQ,IAAI60B,EAAuBC,EAP3BxyO,KAAKg2L,OAAO+7C,YACZ5uF,GAAKnjJ,KAAK28M,UAAW,CACjBl4K,IAAK,EACLG,KAAM,IAEV5kC,KAAKs4J,+BAGL,QAAUi6E,GAAyBC,EAAexyO,KAAKg2L,QAAQg8C,0BAAuB,IAAWO,GAAiCA,EAAsB9zO,KAAK+zO,IAC7J,+DAEP,2CACD,WACIxyO,KAAKmyO,sBAAwBnyO,KAAKyyO,yBACrC,wCACD,WACI,OAAIzyO,KAAKg2L,OAAOi8C,oBACLlhK,GAAE92E,IAET+F,KAAKg2L,OAAOk8C,kBACLnhK,GAAE/wE,KAAKg2L,OAAOk8C,mBAEAz+J,KAAmB75E,IAAI,IAAMoG,KAAKg2L,OAAOzuL,UACtCvH,KAAK68M,kBAAoB9rI,GAAE92E,GAC1D,oCACD,WACI,OAAI+F,KAAKg2L,OAAO+7C,WACLhhK,GAAE92E,KAEN,kEACV,mCACD,WACI+F,KAAK09M,6BAA4B,EACpC,oCACD,WACI19M,KAAK09M,6BAA4B,EACpC,OA/FCo0B,CAAgC51B,ICLlCw2B,GAAsB,CACtBC,YAAa7wN,GAAAA,KACb8wN,gBAAiB9wN,GAAAA,MAEV+wN,GAA4B,WACnC,KAAK/xL,EAAAA,EAAAA,MACD,OAAO4xL,GAEX,IAAIz4O,GAAS8mD,EAAAA,EAAAA,MACTmH,EAAkB2U,EAAAA,EAAAA,cAAyB3U,gBAC3C5iD,EAAOu3D,EAAAA,EAAAA,UACPi2K,EAAc,QAAU96J,GAAAA,OAAev+E,SACvCs5O,EAAe,CACf1vM,SAAU,KACV2vM,UAAW,KACXC,UAAW,KACXtxM,aAAc,KACdn3B,SAAU,KACVi6B,IAAK,KACLG,KAAM,MAuBV,MAAO,CACH+tM,YAAaG,EAAc,WACvB,KAAIzkL,EAAAA,EAAAA,IAAU0kL,EAAavoO,WAAa,UAAYlF,EAAKwxB,MAAMtsB,SAA/D,CAGA,IACa8jK,EAETr0K,EAFAq0K,QACSH,EACTl0K,EADAk0K,QAEJ4kE,EAAavoO,SAAWlF,EAAKwxB,MAAMtsB,SACnCuoO,EAAatuM,IAAMn/B,EAAKwxB,MAAM2N,IAC9BsuM,EAAanuM,KAAOt/B,EAAKwxB,MAAM8N,KAC/Bt/B,EAAKwxB,MAAMqwB,YAAY,WAAY,SACnC7hD,EAAKwxB,MAAMqwB,YAAY,MAAO,GAAGl3C,QAAQq+J,EAAS,OAClDhpK,EAAKwxB,MAAMqwB,YAAY,OAAQ,GAAGl3C,QAAQk+J,EAAS,MAVlD,CAWJ,EAAG,YApCkB,WACtB,IAAI+kE,EAAiBj5O,EAAOu4E,WAAatqB,EAAgB4U,YACzD,KAAIi2K,EAAapxM,cAAgBuxM,GAAkB,GAAnD,CAGA,IAAIvxM,EAAe1nC,EAAO2gE,iBAAiBt1D,GAAM+xL,iBAAiB,iBAC9D87C,EAA2Br7M,SAAS6J,EAAc,IACtDoxM,EAAapxM,aAAewxM,EAC5B7tO,EAAKwxB,MAAMqwB,YAAY,gBAAiB,GAAGl3C,OAAOkjO,EAA2BD,EAAgB,MAJ5F,CAKJ,CA4BOE,GACIL,EAAa1vM,UAAY,WAAa/9B,EAAKwxB,MAAMuM,WAGrD0vM,EAAa1vM,SAAW/9B,EAAKwxB,MAAMuM,SACnC0vM,EAAaC,UAAY1tO,EAAKwxB,MAAMk8M,UACpCD,EAAaE,UAAY3tO,EAAKwxB,MAAMm8M,UACpC3tO,EAAKwxB,MAAMqwB,YAAY,WAAY,UACtC,EACDyrL,gBAAiBE,EAAc,WAC3B,IAAKzkL,EAAAA,EAAAA,IAAU0kL,EAAavoO,UAA5B,CAGA,IAAI8jK,GAAWx2I,SAASxyB,EAAKwxB,MAAM2N,IAAK,IACpC0pI,GAAWr2I,SAASxyB,EAAKwxB,MAAM8N,KAAM,IACzC,CAAC,WAAY,MAAO,QAAQlkC,SAAQ,SAAAyM,GAC5B4lO,EAAa5lO,GACb7H,EAAKwxB,MAAMqwB,YAAYh6C,EAAU4lO,EAAa5lO,IAE9C7H,EAAKwxB,MAAMiwC,eAAe55D,EAEjC,IACDlT,EAAOo2E,SAAS89F,EAASG,GACzBykE,EAAavoO,SAAW,IAXvB,CAYJ,EAAG,YAlDC6jD,EAAAA,EAAAA,IAAU0kL,EAAapxM,gBAGxBoxM,EAAapxM,aACbr8B,EAAKwxB,MAAMqwB,YAAY,gBAAiB,GAAGl3C,OAAO8iO,EAAapxM,aAAc,OAE7Er8B,EAAKwxB,MAAMiwC,eAAe,iBAE9BgsK,EAAapxM,aAAe,MA4CxB,CAAC,WAAY,YAAa,aAAajhC,SAAQ,SAAAyM,GAC3C,IAAKkhD,EAAAA,EAAAA,IAAU0kL,EAAa5lO,IAA5B,CAGA,IAAIkmO,EAAsBlmO,EAASvL,QAAQ,WAAW,SAAAiqG,GAAM,MAAI,IAAI57F,OAAO47F,EAAOr3F,cAAtB,IACxDu+N,EAAa5lO,GACb7H,EAAKwxB,MAAMqwB,YAAYksL,EAAqBN,EAAa5lO,IAEzD7H,EAAKwxB,MAAMiwC,eAAessK,GAE9BN,EAAa5lO,GAAY,IAPxB,CAQJ,GACJ,EAER,EC3CGlT,IAAS8mD,EAAAA,EAAAA,MACTuyL,GAAc,WACdC,GAAsB,mBAMtBC,GAAuB,oBAEvBC,GAAoB,iBAEpBC,GAAqB,kBAMrBC,GAA+B,CAAC,SAAU,QAAS,QAKnDC,GAAgB91N,GAAQmuL,QAAUiL,GAAgBp5L,GAAQy2D,QAAS,CAAC,KAAO,EAC3Es/J,GAAoB,CACpBC,OAAQ,GACRzoN,QAVqC,0BAWrCvZ,KAZkC,wBA2ClCiiO,GAAQ10B,GAAAA,QAAgB,CACxBvI,eAAgB,WAAW,WACvB,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BurK,QAAS,SAAAzkN,GACL,IAAI+qO,EACJ,QAAUA,EAAc,EAAKC,aAAU,IAAWD,GAAuBA,EAAYE,OAAOjrO,EAC/F,EACD0kN,UAAW,SAAA1kN,GACP,IAAIkrO,EACJ,QAAUA,EAAe,EAAKF,aAAU,IAAWE,GAAwBA,EAAaC,SAASnrO,EACpG,EACDukN,UAAW,SAAAvkN,GACP,IAAIorO,EACJ,QAAUA,EAAe,EAAKJ,aAAU,IAAWI,GAAwBA,EAAaC,SAASrrO,EACpG,EACDwkN,WAAY,SAAAxkN,GACR,IAAIsrO,EACJ,QAAUA,EAAe,EAAKN,aAAU,IAAWM,GAAwBA,EAAaC,UAAUvrO,EACrG,GAER,EACD20J,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B4vL,YAAY,EACZriH,MAAO,GACP+kH,WAAW,EACXC,cAAe,QACfC,gBAAiB,KACjB1C,qBAAqB,EACrBn7E,aAAa,EACbo7E,uBAAmB,EACnB0C,kBAAkB,EAClB57E,kBAAmB,EACnB+S,cAAe,KACfC,SAAU,KACVC,YAAa,KACb4oE,eAAe,EACfC,aAAc,GACdC,iBAAiB,EACjBC,eAAgB,SAChBC,0BAA0B,EAC1BC,uBAAuB,EACvBC,mBAAmB,GAE1B,EACDr3E,qBAAsB,WAClB,IAAIw9B,EAAY85C,KAChB,OAAOp1O,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,CACJj9E,SAAU,OAEd2D,QAAS,CACLmuJ,UAAWvrJ,KAAKq1O,gBAErB,CACC3+J,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLmuJ,UAAWvrJ,KAAKs1O,oBAErB,CACC5+J,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACL23O,iBAAiB,IAEtB,CACCr+J,OAAQ,SAAS6+J,GACb,MAAO,YAAcv9J,GAAAA,OAAe1D,YAAc,YAAcihK,EAAQ97O,QAC3E,EACD2D,QAAS,CACL05J,aAAa,IAElB,CACCpgF,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,WACJ,OAAOwmH,GAAW5B,EACrB,EACDl+L,QAAS,CACL63O,0BAA0B,EAC1BC,uBAAuB,EACvBH,iBAAiB,KAG5B,EACDM,cAAe,CACXvnK,KAAM,CACFzoE,KAAM,QACNwmB,SAAU,IACVriB,KAAM,CACFgB,SAAU,CACNi4B,GAAI,MACJoiB,GAAI,WAGZ2yD,GAAI,CACAhtG,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,YAIhBmpB,KAAM,CACF3oE,KAAM,QACNwmB,SAAU,IACVriB,KAAM,CACF0J,QAAS,EACT1I,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,WAGZ2yD,GAAI,CACAtkG,QAAS,EACT1I,SAAU,CACNi4B,GAAI,MACJoiB,GAAI,aAKpBywL,kBAAmB,WACf,OAAOt1O,KAAK2sC,OAAO,cAAgB,CAC/BmhC,KAAM,CACFzoE,KAAM,QACNwmB,SAAU,IACVriB,KAAM,CACFi7B,IAAK,MACLvxB,QAAS,GAEbskG,GAAI,CACA/yE,IAAK,EACLvxB,QAAS,IAGjB86D,KAAM,CACF3oE,KAAM,QACNwmB,SAAU,IACVriB,KAAM,CACFi7B,IAAK,EACLvxB,QAAS,GAEbskG,GAAI,CACA/yE,IAAK,MACLvxB,QAAS,KAGjB,CACA46D,KAAM,CACFzoE,KAAM,OACNwmB,SAAU,IACVriB,KAAM,EACNguG,GAAI,GAERxpC,KAAM,CACF3oE,KAAM,OACNwmB,SAAU,IACVriB,KAAM,EACNguG,GAAI,GAGf,EACDjU,MAAO,WACH,IAAIiyI,EAA4Bx1O,KAAK2sC,OAAO,yBACxC8oM,EAAsBD,EAA4B,GAAGvlO,OAAOsjO,GAAqB,KAAKtjO,OAAOulO,GAA6BjC,GAC9HvzO,KAAKmiD,WACLniD,KAAK01O,6BACL11O,KAAK21O,qCACL31O,KAAKg6D,WAAWoU,SAASklK,IACzBtzO,KAAKq8M,WAAWjuI,SAASqnK,GACzBz1O,KAAK41O,eAAiB51O,KAAK28M,UAAU7tI,UAAUiC,GAAE,SAAS3C,SAtOxC,qBAsOuErjE,WAAW6kE,GAAG,GACvG5vE,KAAK61O,4BACL71O,KAAK81O,kBAAkB5nK,KAAK,OAAQ,SACvC,EACD4M,QAAS,WACL,IAAIi7J,EAAe/1O,KAAK2sC,OAAO,cAC/B3sC,KAAKg2O,uBAAuBD,GAC5B/1O,KAAKmiD,UACR,EACDuzL,2BAA4B,WACxB11O,KAAKi2O,qBAAuBpD,IAC/B,EACDmD,uBAAwB,SAAS93O,GAC7B8B,KAAK81O,kBAAkB7nK,YAtPD,sBAsPsC/vE,GAAO+vE,YApPlD,mBAoPmF/vE,EACvG,EACDysK,eAAgB,WACZ3qK,KAAKmiD,WACLniD,KAAK4pK,iBAAiBgsB,oBAAoB,CACtClmE,MAAO,IAAI/zC,GACXh3C,OAAQ,IAAIg3C,IAEnB,EACD4lI,gBAAiB,WACb,OAAOvhN,KAAKmiD,WAAWlyC,OAAO,CAAC,gBAAiB,WAAY,eAC/D,EACDimO,sBAAuB,SAASvxO,GACvB3E,KAAKm2O,yBAAyBxxO,IAC/B3E,KAAKmmN,gBAAgB,CACjBiwB,sBAAsB,GAGjC,EACDC,mCAAoC,WAChC,IAAI9qF,EAAYvrJ,KAAK2sC,OAAO,aAC5B,MAAO,CAAC,KAAM,QAAQwlB,MAAK,SAAAt1D,GACvB,IAAIy5O,EACAv2O,EAAS,OAASwrJ,QAAa,IAAWA,GAAqB,QAAU+qF,EAAkB/qF,EAAUz9E,YAAS,IAAWwoK,OAAnE,EAA8FA,EAAgBz5O,GACxK,OAAOwjB,EAAAA,EAAAA,IAAStgB,KAAY,UAAWA,GAAU,WAAYA,EAChE,GACJ,EACD41O,mCA1NwB,WA0Na,WAC7BY,EAAoCv2O,KAAKq2O,qCAC7Cr2O,KAAKm2O,yBAA2B,SAAAxxO,GAAK,OAAI4xO,GAAqC,EAAK10B,0BAA4B,EAAK20B,8BAA8B7xO,EAA7G,CACxC,EACD8xO,sBAAuB,SAASC,GAAe,WAC3C,GAAK12O,KAAK2sC,OAAO,qBAAjB,CAGA,IAAIgqM,EAAiB32O,KAAK28M,UAAU/iN,IAAI,GACpC88O,EACAE,GAAAA,QAAgCD,GAAgB,SAAAhyO,GAC5C,EAAKuxO,sBAAsBvxO,EAC9B,IAEDiyO,GAAAA,UAAkCD,EAPrC,CASJ,EACDH,8BAA+B,SAAS7xO,GACpC,IAAIkyO,EAAuBC,EAAwBC,EAG3CC,EAAuBC,EAF3BC,EAAa,QAAUL,EAAwBlyO,EAAMwyO,sBAAmB,IAAWN,OAAwB,EAASA,EAAsB,GAC9I,GAAIK,EAEA,OAAOp/M,SAASo/M,EAAWE,WAAY,OAAS,QAAUJ,EAAwBh3O,KAAKq3O,2BAAwB,IAAWL,OAAwB,EAASA,EAAsBrmN,QAAUmH,SAASo/M,EAAWI,UAAW,OAAS,QAAUL,EAAyBj3O,KAAKq3O,2BAAwB,IAAWJ,OAAyB,EAASA,EAAuBzqN,QAE3W,IAAI+qN,EAAc5yO,EAAM4yO,YACxB,OAAOz/M,SAASy/M,EAAY5mN,MAAO,OAAS,QAAUmmN,EAAyB92O,KAAKq3O,2BAAwB,IAAWP,OAAyB,EAASA,EAAuBnmN,QAAUmH,SAASy/M,EAAY/qN,OAAQ,OAAS,QAAUuqN,EAAyB/2O,KAAKq3O,2BAAwB,IAAWN,OAAyB,EAASA,EAAuBvqN,OACvW,EACDyrL,eArPwB,WAsPpBj4M,KAAKmiD,WACLniD,KAAKy2O,uBAAsB,EAC9B,EACDn+B,mBAAoB,WAChBt4M,KAAKw3O,eACLx3O,KAAKmiD,WACLniD,KAAKy3O,gBACLz3O,KAAK03O,eACR,EACDF,aAAc,WACV,IAAItxL,EAAQlmD,KAAKgxO,iBAAiB,OAC9B,EAGAhxO,KAAK2sC,SAFE+iF,EADX,EACIA,MACW+kH,EAFf,EAEIA,UAQJ,GANIA,GAAe/kH,GACfxpE,EAAM0qB,QAAQ,CACVj+C,SAAUqlD,GAAAA,UAAkBrD,IAAM,SAAW,SAC7ChuE,KAAM+oH,IAGV+kH,GAAavuL,EAAMvlD,OAAS,EAAG,CAC/BX,KAAK23O,SAAW33O,KAAK23O,QAAQj6O,SAC7B,IAAIk6O,EAAS7mK,GAAE,SAAS3C,SAASqlK,IAAmBhsO,aAAazH,KAAKs6L,YACtEt6L,KAAK23O,QAAU33O,KAAK63O,sBAAsB,gBAAiB3xL,EAAO0xL,GAAQxpK,SAASqlK,IACnFzzO,KAAK83O,cACL93O,KAAK+3O,0BAA0B/3O,KAAK23O,SACpC33O,KAAK23O,QAAQ1pK,YA9TU,sBA8TgCjuE,KAAKg4O,kBAC/D,MAAUh4O,KAAK23O,SACZ33O,KAAK23O,QAAQzoK,SAEjBlvE,KAAKi4O,kBACR,EACDA,iBAvRwB,WAwRpB,IAAIC,EACA,EAGAl4O,KAAK2sC,SAFE+iF,EADX,EACIA,MAIAyoH,EALJ,EAEI1D,aAEoC/kH,EACL,IAAIxjE,GAAAA,EAAO,KAC9C,QAAUgsL,EAAgBl4O,KAAK23O,eAAY,IAAWO,GAAyBA,EAAcl8O,KAAK,IAAIiU,OAxUpF,qBAwUiH2/D,GAAG,GAAG1B,KAAK,KAAMiqK,GACpJn4O,KAAK81O,kBAAkB5nK,KAAK,kBAAmBiqK,EAClD,EACDN,sBAAuB,SAASroM,EAAYl1C,EAAMkgF,EAAY49J,GAC1D,IAAI,EAKAp4O,KAAK2sC,SAJOqT,EADhB,EACIA,WAC0Bi1L,EAF9B,EAEIA,yBACuBC,EAH3B,EAGIA,sBACU1vN,EAJd,EAIIA,SAEAhG,EAAWxf,KAAK8qK,qBAAqBt7H,GAEzC,GADsBhwB,aAAoBm8D,GACrB,CACjB,IAAIlkC,GAAqBgO,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAK2sC,OAAO,sBAAuB,CACnE61H,cAAe,CAAC,UAAW,WAE3B61E,GAAiB5yL,EAAAA,GAAAA,GAAO2yL,EAA0B,CAClDlyL,MAAO5rD,EACP0lD,WAAYA,EACZguL,kBAAmBiH,EACnBlH,eAAgBmH,EAChB1vN,SAAUA,EACViyB,mBAAoBA,IAExBz3C,KAAK+qK,aAAa,uBAAuBz8H,OAAO,CAC5C/mC,UAAWizE,EACX/kC,MAAO,CACHutH,OAAQhjK,KAAKs4O,kBACbl7O,QAASi7O,KAGjB,IAAIE,EAAW/9J,EAAWzvE,SAAS,OAEnC,OADAyvE,EAAWxL,YAAYupK,GAChBA,CACV,CACG,IAAIp+J,EAAUpJ,GAAEvxD,EAAS8uB,OAAO,CAC5B/mC,UAAWs6I,GAAiBrnE,MAMhC,OAJIL,EAAQ7L,SAjXK,yBAkXbkM,EAAWxL,YAAYmL,GACvBK,EAAaL,GAEVK,CAEd,EACD89J,gBAAiB,WACb,MAAO,eACV,EACD11B,yBAA0B,SAAS/hK,GAC/B,OAAO7gD,KAAKmiD,SAAStB,EACxB,EACDiiK,MAlVwB,WAoVpB,OADA9iN,KAAKy2O,uBAAsB,GACpBz2O,KAAKmiD,UACf,EACD41L,0BAA2B,SAASS,GAChCx4O,KAAKy4O,uBAALz4O,CAA6B,CACzB04O,aAAc72F,GAAiB22F,IAEtC,EACDC,sBAAuB,WACnB,OAAOz4O,KAAK24O,oBAAsB34O,KAAK44O,0BAC1C,EACDA,yBAA0B,WACtB,OAAO54O,KAAK24O,mBAAqB34O,KAAK2/J,sBAAsB,kBAAmB,CAC3EnzJ,QAASxM,KAAKwM,UACdu0I,kBAAmB,CAAC,WAAY,aAEvC,EACD83F,gBAAiB,WACb,MAAO,CACHl0N,QAAS,MACTgO,SAAU,QACVnT,SAAUxf,KAAK84O,0BAEtB,EACDA,wBAAyB,WAAW,WAChC,OAAO,SAACh6O,EAAG6qC,EAAIpiC,GACX,IAAIwxO,EAAUhoK,GAAE,SAAS3C,SA5ZD,kBA6ZxB,EAAK+0F,iBAAiB41E,EAASpwC,GAAQ,CACnCliL,KAAM,QACN62J,QAAS,EAAK07D,8BAAyB,GACvC1wC,YAAa,OACb7wJ,mBAAoB,CAAC,IAEzBs5B,GAAExpE,GAAW5B,OAAOozO,EACvB,CACJ,EACD/H,iBAAkB,SAASrsN,GAAS,WAC5BmwN,EAAe90O,KAAK2sC,OAAO,gBAC3BssM,EAAgB,GACpBj5O,KAAKk5O,oBAAsB,GAC3B,IAAI5/O,EAAkB0+E,GAAAA,UAAkBv+E,SACpC0H,EAAQ,EA0BZ,OAzBA0rD,EAAAA,EAAAA,IAAKioL,GAAc,SAACh2O,EAAGxE,GACnB,IAAI6+O,GAAa9qL,EAAAA,EAAAA,IAAU/zD,EAAK8+O,UAC5Bx0O,EAAOu0O,EA5ZF,SAAA//O,GACjB,IACIK,EADSu+E,GAAAA,UACSv+E,SAClBkrB,EAAU,SACVgO,EAAW,SACf,GAAI,QAAUl5B,EACV,OAAQL,GACJ,IAAK,SACDurB,EAAU,MACV,MACJ,IAAK,QACDA,EAAU,MACVgO,EAAW,QACX,MACJ,IAAK,OACDA,EAAW,aAEhB,GAAI,YAAcl5B,EACrB,OAAQL,GACJ,IAAK,SACL,IAAK,OACDu5B,EAAW,QAGvB,MAAO,CACHhO,QAASA,EACTgO,SAAUA,EAEjB,CAgYmC0mN,CAAe/+O,EAAK8+O,UAAY9+O,EAMxD,GALI6+O,GAAc,QAAU7/O,GAAmB6H,EAAQ,IACnDyD,EAAK+f,QAAU,MACfxjB,KAEJyD,EAAK+f,QAAUrqB,EAAKqqB,SAAW/f,EAAK+f,SAAW,MAC3C/f,GAAQA,EAAK+f,UAAYA,EAAS,CAC9Bw0N,IACA1zL,EAAAA,GAAAA,GAAO7gD,EAAM,CACT+tB,SAAUr4B,EAAKq4B,UAChB,EAAK2mN,uBAAuBh/O,IAEnC,IAAIi/O,EAAa,YAAcjgP,EAC3B,SAAWgB,EAAK8+O,UAAYG,GAAc,WAAaj/O,EAAK8+O,WAAaG,EACzEN,EAAcroK,QAAQhsE,GAEtBq0O,EAAc74O,KAAKwE,EAE1B,CACJ,IACG,QAAU+f,GAAW3kB,KAAKg4O,mBAC1BiB,EAAc74O,KAAKJ,KAAK64O,mBAErBI,CACV,EACDjB,gBAxZwB,WAyZpB,OAAOh4O,KAAK2sC,OAAO,oBAAsB3sC,KAAK2sC,OAAO,YACxD,EACD6sM,oBAAqB,SAAAC,GAAQ,MAAI,SAAWA,EAASjlO,cAAgB,KAAO0wD,EAASu0K,GAAU,EAAlE,EAC7BH,uBAAwB,SAASh/O,GAC7B,IAAIm1D,EAAOzvD,KACPy5O,EAAWn/O,EAAK8+O,SACpB,IAAKzF,GAA6BpuO,SAASk0O,GACvC,OAAO,EAEX,IAAIC,GAAaj0L,EAAAA,GAAAA,GAAO,CACpB9+C,KAAMyjH,GAAAA,OAA2BpqH,KAAKw5O,oBAAoBC,IAC1Dn8D,QAASt9K,KAAKg5O,yBAAyB1+O,EAAKgjL,SAC5C7lI,mBAAoB,CAAC,EACrBpyC,KAAMoqD,EAAK9iB,OAAO,4BA7cJ,UACD,SA6cb27J,YAAa74I,EAAK9iB,OAAO,yBA5cd,OACK,aA4cjBryC,EAAK8C,SAAW,CAAC,GAChBu8O,EAAYrG,YAAoBmG,EAEpC,OADAz5O,KAAKk5O,oBAAoB94O,KAAKu5O,GACvB,CACHn6N,SAAU,SAAS1gB,EAAG6qC,EAAIpiC,GACtB,IAAIqyO,EAAe7oK,GAAE,SAAS3C,SAASurK,GAAWhrK,SAASpnE,GAC3DkoD,EAAK0zG,iBAAiBy2E,EAAcjxC,GAAQ+wC,EAC/C,EAER,EACDV,yBAA0B,SAASa,GAC/B,OAAO75O,KAAK8gK,cAAc+4E,EAAa,CACnCl5F,aAAc,SAAS13I,GACnBA,EAAEmoB,UAAU48C,MACf,GAER,EACD0pK,cAAe,WACX,IAAIxxL,EAAQlmD,KAAKgxO,iBAAiB,UAClC,GAAI9qL,EAAMvlD,OAAQ,CACdX,KAAK85O,UAAY95O,KAAK85O,SAASp8O,SAC/B,IAAIq8O,EAAUhpK,GAAE,SAAS3C,SAASslK,IAAoB9kK,YAAY5uE,KAAKs6L,YACvEt6L,KAAK85O,SAAW95O,KAAK63O,sBAAsB,iBAAkB3xL,EAAO6zL,EAAS,CACzEC,aAAa,IACd5rK,SAASslK,IACZ1zO,KAAKi6O,gBACR,MACGj6O,KAAK85O,UAAY95O,KAAK85O,SAAS5qK,QAEtC,EACD0oI,qBAAsB,SAAS15M,GAC3B8B,KAAKmiD,SAAL,MAAAniD,KAAiB8X,WACjB9X,KAAKs6L,WAAWrsH,YAAYulK,GAAsBv0G,QAAQ/gI,GAC7D,EACD+7O,eAAgB,WAAW,WACnBz8M,EAAUm2M,IACd9mL,EAAAA,EAAAA,IAAKrvB,GAAS,SAAC1+B,EAAGy4F,GACd,IAAIp/E,EAAYm7N,YAAoB/7I,EAChC,EAAK2hJ,oBAAoB3zO,SAAS4S,IAClC,EAAKkkM,WAAWjuI,SAASj2D,EAAY,YACrC,EAAK2hO,SAAS1rK,SAASj2D,KAEvB,EAAKkkM,WAAWhuI,YAAYl2D,EAAY,YACxC,EAAK2hO,SAASzrK,YAAYl2D,GAEjC,GACJ,EACDyhM,kBAvdwB,SAudND,EAAW3/I,GAEzB,GADAh6D,KAAKmiD,SAASw3J,EAAW3/I,GACrB2/I,IvBhkBqB,SAAApmM,GAAM,OAAIgoM,GAAY56M,QAAU46M,GAAYA,GAAY56M,OAAS,KAAO4S,CAAlE,CuBgkBb+yM,CAA+BtmN,KAAKqmN,SAAU,CAC5D,IAAI9yM,EAAS+yM,GAAkBtmN,KAAKwiN,oBACpC8D,GAAkBtmN,KAAKqmN,SACvBrmN,KAAKqmN,QAAU9yM,EACfvT,KAAK48M,UAAUt3K,IAAI,SAAU/xB,GAC7BvT,KAAK28M,UAAUr3K,IAAI,SAAU/xB,EAChC,CACJ,EACDsiO,0BAjewB,WAkepB,IAAIqE,GAA4Bl6O,KAAK2sC,OAAO,uBAC5C3sC,KAAKs6L,WAAWrsH,YAthBa,8BAshB+BisK,EAC/D,EACDzxB,6BArewB,WAsepB,IAAI,EAMAzoN,KAAK2sC,SALOolM,EADhB,EACIA,WACoBC,EAFxB,EAEIA,mBACqBC,EAHzB,EAGIA,oBACmBC,EAJvB,EAIIA,kBACmBl5E,EALvB,EAKIA,kBAEJ,OAAOvzG,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKmiD,WAAY,CAC/B4vL,WAAYA,EACZC,mBAAoBA,EACpBC,oBAAqBA,EACrBC,kBAAmBA,EACnBl5E,kBAAmBA,GAE1B,EACD4oD,wBArfwB,WAsfpB5hN,KAAKi3J,oBAAsB,IAAI66E,GAAwB9xO,KAAKyoN,+BAC/D,EACD0xB,eAAgB,WACZ,OAAOn6O,KAAKo6O,YACf,EACDj0B,gBAAiB,SAAS/oN,GACtB,IAAI,EAGA4C,KAAK2sC,SAFIkU,EADb,EACIA,QACmBo2J,EAFvB,EAEIA,kBAEJ,GAAIp2J,IAAWC,EAAAA,EAAAA,MAAa,CACxB,IACIu5L,EADar6O,KAAK6hN,4BACsB,OAASzkN,QAAW,IAAWA,GAAWA,EAAQmtN,qBAAuBtT,EACrHj3M,KAAK2jN,mBAAqB02B,QAAyB,EACnDr6O,KAAK8hN,iBACD,OAAS1kN,QAAW,IAAWA,GAAWA,EAAQg5O,qBAClDp2O,KAAKipN,iBAAgB,GAErBjpN,KAAKgpN,oBAAoB,OAAS5rN,QAAW,IAAWA,OAAU,EAASA,EAAQk9O,mBAEnFD,IACAr6O,KAAKijN,kBACLjjN,KAAK2jN,wBAAqB,EAEjC,CACJ,EACD42B,iBAAkB,WACTv6O,KAAK2sC,OAAO,uBAGjB3sC,KAAKq3O,oBAAsB,CACvB1mN,MAAOmH,SAAS8yC,GAAS5qE,KAAK28M,WAAY,IAC1CnwL,OAAQsL,SAASgzC,GAAU9qE,KAAK28M,WAAY,KAEnD,EACDqM,oBAAqB,WACjB,IAAIsxB,EAAoBxiO,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAC/EwiO,GACDt6O,KAAKw6O,sBAETx6O,KAAKmiD,WACLniD,KAAKu6O,mBACLv6O,KAAKy6O,mBACR,EACDD,oBAAqB,WAEb,SADSx6O,KAAKyhK,gBAAgB,WAE9BzhK,KAAKs6L,WAAWh1J,IAAI,CAChB9Y,OAAQ,OACRyU,UAAW,QAGtB,EACD62M,YAAa,WACT,IAAI4C,EAAc16O,KAAKm6O,iBACnBrjF,EAAc92J,KAAK2sC,OAAO,eAC9B,GAAK+tM,EAAL,CAGA,IAAI36O,EAAS,CACT+2J,YAAaA,EACbx1J,OAAQo5O,EAAY9gP,IAAI,GACxBm9J,iBAAkB/2J,KAAK28M,UAAU/iN,IAAI,GACrCo9J,mBAAoBh3J,KAAKi3J,qBAEzBj3J,KAAKi0O,MACLj0O,KAAKi0O,MAAMp9E,KAAK92J,GAEhBC,KAAKi0O,MAAQ,IAAIr9E,GAAU72J,GAE/BC,KAAK81O,kBAAkB7nK,YA7mBH,qBA6mBsC6oF,EAZzD,CAaJ,EACD2gF,cAAe,WAAW,WACtBz3O,KAAK26O,WAAa36O,KAAKmjK,iBAAiBnjK,KAAK28M,UAAWhxC,GAAW,CAC/DC,QAAS5rK,KAAK2sC,OAAO,iBAAmB,MAAQ,OAChDs/H,YAAa,SAAAhjK,GACT,EAAK2xO,kBAAkB3xO,GACvB,EAAKwtO,uBAAsB,EAC9B,EACDzqE,SAAU,SAAA/iK,GACN,EAAKwxO,oBACL,EAAKj5B,SAASx1C,SAAS/iK,EAC1B,EACD8iK,cAAe,SAAA9iK,GACX,EAAKwtO,uBAAsB,GAC3B,EAAKj1B,SAASz1C,cAAc9iK,EAC/B,EACD2b,UAAW,IACXoc,SAAU,IACV8qI,KAAM9rK,KAAKi3J,oBAAoBuB,qBAC/B2T,iBAAiB,GAExB,EACDyuE,kBAAmB,SAAS3xO,GACxB,IAAI0nB,EAAQ3wB,KAAK26O,WAAWhuM,OAAO,SAC/BngB,EAASxsB,KAAK26O,WAAWhuM,OAAO,UACpChc,GAAS3wB,KAAKwhK,8BAA8B,QAAS7wI,GACrDnE,GAAUxsB,KAAKwhK,8BAA8B,SAAUh1I,GACvDxsB,KAAKu6O,mBACLv6O,KAAKi3J,oBAAoB4jF,gBACzB76O,KAAKi3J,oBAAoBqB,2BAA2BrvJ,EAAElI,OACtDf,KAAKwhN,SAASv1C,YAAYhjK,EAC7B,EACDwxO,kBAAmB,YACdz6O,KAAK2sC,OAAO,uBAAyB7qB,GAAAA,QACtC,IAAIg5N,EAAiB96O,KAAK81O,kBAAkBl8O,IAAI,GAC5CmhP,EAA6B/6O,KAAKg7O,sBAAsBF,GAC5D96O,KAAKs6L,WAAWh1J,IAAItlC,KAAKi7O,oBAAoBF,EAA4BD,IACzE96O,KAAKk7O,kBAAkBl7O,KAAK81O,kBAAmBiF,EAClD,EACDI,4BAA6B,SAASJ,EAA4BK,GAC9D,OAAOL,IAA+BlH,GAAkB/hO,MAAQspO,EAAwB,CAC3F,EACDJ,sBAAuB,SAASF,GAC5B,IAAIO,EAAc,SAAWP,EAAehkN,MAAMnG,OAAS,KAAOmqN,EAAehkN,MAAMnG,MACnFoqN,EAA6BlH,GAAkBC,OAQnD,OAPI9zO,KAAKs7O,iBAAmBt7O,KAAK2sC,OAAO,uBAEhCouM,EADAM,GAAezH,GACcC,GAAkBxoN,QAElBwoN,GAAkB/hO,MAGhDipO,CACV,EACDE,oBAAqB,SAASF,EAA4BD,GACtD,IAAIS,EAAY,CAAC,EACbC,EAAmBx7O,KAAKyhK,gBAAgB,YAAaq5E,GACrDW,EAAmBz7O,KAAKyhK,gBAAgB,YAAaq5E,GACrDY,EAAmB17O,KAAK27O,oBACxBC,EAAmCF,EAAiB72G,OAAS62G,EAAiBG,OAASH,EAAiBI,uBAAyBJ,EAAiBK,qBAAuB/7O,KAAKm7O,4BAA4BJ,EAA4BW,EAAiBN,uBAC3P,GAAIL,IAA+BlH,GAAkBC,QACjD,IAAK9zO,KAAKs7O,iBAAmBE,GAAoBC,EAAkB,CAC/D,IACIO,GADgBh8O,KAAK2sC,OAAO,cAAgBpjC,KAAKsZ,IAAI4nE,GAAgBqwJ,GAAgBtuN,QAAQu0B,EAAAA,EAAAA,MAAY8nB,aAAe4hB,GAAgBqwJ,GAAgBtuN,QACxHovN,EACpCL,EAAY,CACR/uN,OAAQjjB,KAAKkuB,IAAI,EAAGukN,GACpBp3N,UAAW,OACXqc,UAAW,OAElB,MACE,CACH,IAAI15B,EAAYwpE,GAAE/wE,KAAKi3J,oBAAoBmnD,kBAAkBxkN,IAAI,GAC7DqiP,E5N3nBkB,SAAS/9O,EAAO+O,EAAQ1F,GACtD,IAAI05B,EAAY+nC,GAAoB9qE,EAAO+O,EAAQ1F,GACnD,OAAO,OAAS05B,EAAYA,EAAY,MAC3C,C4NwnBgCi7M,CAAqBV,GAAmBI,EAAkCr0O,GAC3F40O,E5NxnBkB,SAASj+O,EAAO+O,EAAQ1F,GACtD,IAAIqd,EAAYokD,GAAoB9qE,EAAO+O,EAAQ1F,GACnD,OAAO,OAASqd,EAAYA,EAAY,CAC3C,C4NqnBgCw3N,CAAqBX,GAAmBG,EAAkCr0O,GAC/Fg0O,EAAY,CACR/uN,OAAQ,OACR5H,UAAWu3N,EACXl7M,UAAWg7M,EAElB,CACD,OAAOV,CACV,EACDL,kBAAmB,SAAS1gK,EAAY6hK,GACpC,IAAIC,EAAgB,GACpB,IAAK,IAAIljP,KAAQy6O,GACTA,GAAkBz6O,KAAUijP,IAC5BC,GAAiB,IAAMzI,GAAkBz6O,IAGjDohF,EAAWnM,YAAYiuK,GAAeluK,SAASiuK,EAClD,EACDf,cAAe,WACX,MAAO,SAAWt7O,KAAK81O,kBAAkBl8O,IAAI,GAAGk9B,MAAMtK,MACzD,EACDmvN,kBAAmB,WACf,IAAIvB,EAAap6O,KAAKo6O,aAClBmC,EAAgBv8O,KAAKu8O,gBACzB,MAAO,CACH13G,OAAQz7D,GAAiBgxK,GAAcA,EAAWxgP,IAAI,IACtDiiP,OAAQzyK,GAAiBmzK,GAAiBA,EAAc3iP,IAAI,IAC5DkiP,uBAAwB7yK,GAAmBjpE,KAAK81O,kBAAkBl8O,IAAI,IAAI,GAC1EmiP,qBAAsB9yK,GAAmBjpE,KAAKs6L,WAAW1gM,IAAI,IAAI,GACjEwhP,sBAAuBnyK,GAAmBjpE,KAAKs6L,WAAW1gM,IAAI,IAAI,GAEzE,EACDuvN,oBAAqB,WACjB,OAAOnpN,KAAKmiD,YAAcniD,KAAK2sC,OAAO,aACzC,EACD+7H,kBAAmB,WACX1oK,KAAK2sC,OAAO,cACZ3sC,KAAK81O,kBAAkBxwM,IAAI,CACvB3U,MAAO,OACPnE,OAAQ,OACRwU,SAAU,GACVL,SAAU,GACV/b,UAAW,GACXqc,UAAW,KAGfjhC,KAAKmiD,YAELrB,EAAAA,EAAAA,OACA9gD,KAAKw8O,6BAEZ,EACD50E,kBAAmB,WACf5nK,KAAKmmN,gBAAgB,CACjBm0B,mBAAmB,GAE1B,EACDhxE,OAAQ,WACJtpK,KAAKmiD,WACLniD,KAAKy2O,uBAAsB,EAC9B,EACD/jG,SAAU,WACN1yI,KAAKmiD,WACLniD,KAAKgjN,mBAAkB,EAC1B,EACDw5B,4BAA6B,WACzBx8O,KAAK81O,kBAAkB7nK,YA9vBK,4BA8vBsCjD,GAAchrE,KAAK81O,qBAAuBlrK,GAAS3wE,IACxH,EACD2pN,uBA1sBwB,WA2sBf5jN,KAAK2sC,OAAO,qBAGjB3sC,KAAKmiD,UACR,EACD6gK,kBAAmB,SAAS2D,GACxB,GAAK3mN,KAAKi2O,qBAAV,CAGA,IAAI,EAGAj2O,KAAKi2O,qBAFQtD,EADjB,EACIA,YACiBC,EAFrB,EAEIA,gBAEAjsB,EACAisB,IAEAD,GARH,CAUJ,EACD8J,gBAAiB,WACbz8O,KAAKipN,iBACR,EACDnpD,eAAgB,SAASliK,GACrB,IAAI8+O,EAEOx+O,EAEPN,EAFAM,MACM9E,EACNwE,EADAxE,KAEJ,OAAQA,GACJ,IAAK,WACD4G,KAAKmiD,SAASvkD,GACdoC,KAAKw3O,eACLx3O,KAAK03O,gBACL,MACJ,IAAK,YACD13O,KAAK21O,qCACL,MACJ,IAAK,mBACD31O,KAAKgjN,kBAAkB9kN,GACvB,MACJ,IAAK,YACL,IAAK,QACL,IAAK,gBACD8B,KAAKw3O,eACLx3O,KAAKmmN,kBACLnsI,GAAmBh6E,KAAK81O,mBACxB,MACJ,IAAK,iBACD91O,KAAK03O,gBACL13O,KAAKmmN,kBACLnsI,GAAmBh6E,KAAK81O,mBACxB,MACJ,IAAK,YAGG,IAAI6G,EADR,GADA38O,KAAKmiD,SAASvkD,GACVoC,KAAK2sC,OAAO,iBAEZ,QAAUgwM,EAAmB38O,KAAK26O,kBAAe,IAAWgC,GAA4BA,EAAiBhwM,OAAO,OAAQ3sC,KAAKi3J,oBAAoBuB,sBAErJ,MACJ,IAAK,QACL,IAAK,SACDx4J,KAAKmiD,SAASvkD,GACd,QAAU8+O,EAAoB18O,KAAK26O,kBAAe,IAAW+B,GAA6BA,EAAkB/vM,OAAOvzC,EAAM8E,GACzH,MACJ,IAAK,kBACD8B,KAAK44O,yBAAyB16O,GAC9B,MACJ,IAAK,eACL,IAAK,2BACL,IAAK,wBACD,IAAI0+O,GAAwBh/O,EAAKiyC,SAAS5gC,MAAM,sDAChDjP,KAAKw3O,eACLx3O,KAAK03O,gBACDkF,IACA58O,KAAKmmN,kBACLnsI,GAAmBh6E,KAAK81O,oBAE5B,MACJ,IAAK,cACD91O,KAAK83O,cACL,MACJ,IAAK,oBACD93O,KAAKi3J,oBAAoBi7E,kBAAoBh0O,EACzC8B,KAAK2sC,OAAO,kBACZ3sC,KAAK26O,WAAWhuM,OAAO,OAAQ3sC,KAAKi3J,oBAAoBuB,sBAE5Dx4J,KAAKi3J,oBAAoBiyD,kBACzB,MACJ,IAAK,sBACDlpN,KAAKi3J,oBAAoBg7E,oBAAsB/zO,EAC3C8B,KAAK2sC,OAAO,kBACZ3sC,KAAK26O,WAAWhuM,OAAO,OAAQ3sC,KAAKi3J,oBAAoBuB,sBAE5D,MACJ,IAAK,oBACDx4J,KAAKi3J,oBAAoB+B,kBAAoB96J,EAC7C,MACJ,IAAK,gBACD8B,KAAKy3O,gBACLz3O,KAAKmmN,kBACL,MACJ,IAAK,oBACDnmN,KAAKmmN,kBACLnsI,GAAmBh6E,KAAK81O,mBACxB,MACJ,IAAK,aACD91O,KAAKi3J,oBAAoB86E,WAAa7zO,EACtC8B,KAAKg2O,uBAAuB93O,GAC5B8B,KAAK4jN,yBACL5jN,KAAKmmN,kBACLnsI,GAAmBh6E,KAAK81O,mBACxB,MACJ,IAAK,kBACD91O,KAAKw3O,eACL,MACJ,IAAK,sBACDx3O,KAAKmiD,SAASvkD,GACdoC,KAAK61O,4BACL,MACJ,QACI71O,KAAKmiD,SAASvkD,GAEzB,EACD2+O,cAAe,WACX,OAAOv8O,KAAK85O,QACf,EACDM,WAAY,WACR,OAAOp6O,KAAK23O,OACf,EACDr9C,SAAU,WACN,OAAOt6L,KAAK41O,cACf,EACD/kM,QAAS,WACL,OAAOgxG,GAAiB7hJ,KAAKs6L,WAChC,EACDw7C,gBAAiB,WACb,OAAO91O,KAAK28M,SACf,IAELnqC,GAAkB,UAAWuhE,IAC7B,UC/6BI95O,IAAS8mD,EAAAA,EAAAA,MACT87L,GAAiB,CACjBl2O,KAAM,KACN22K,QAAS,WACL,OAAO,CACV,GAEDw/D,GAAsB,YACtBC,GAA8B,GAAG9sO,OAAO6sO,GAAqB,YAC7DE,GAA2B,GAAG/sO,OAAO6sO,GAAqB,SAC1DG,GAA8B,GAAGhtO,OAAO6sO,GAAqB,YAC7DI,GAA8B,GAAGjtO,OAAO6sO,GAAqB,YAC7DK,GAA8B,GAAGltO,OAAO6sO,GAAqB,YAC7DM,GAA6B,GAAGntO,OAAO6sO,GAAqB,WAC5DO,GAAsB,YACf/oE,GAAS,SAASl3K,GACzB,IAAIkgP,EACA/uL,EAAW,IAAIlxC,GAAAA,GACnBjgB,EAAUA,GAAW,CAAC,EACtB,IAAI48D,EAAW+W,GAAE,SAAS3C,SAAS0uK,IAAqBnuK,SAAS4uK,MAE7DC,EAAuB,gBAAiBpgP,EADrB,YAAaA,GAGhCkiB,GAAAA,IAAW,SAEf,IAAIm+N,EAAch0O,OAAO+zO,EAAuBpgP,EAAQqgP,YAAcrgP,EAAQhD,SAC1EsjP,EAAYtgP,EAAQsyH,MAAQ,KAAO,IAAIxjE,GAAAA,EACvCyxL,EAAW5sK,GAAE,SAAS3C,SAAS8uK,IAA6B/vK,KAAKswK,GAAavvK,KAAK,KAAMwvK,GACzFE,EAAoB,IACxB/wL,EAAAA,EAAAA,IAAKzvD,EAAQygP,SAAW,CAAChB,KAAkB,WACvC,IAAIh3N,EAAS,IAAIw6H,GAAOrgJ,KAAKs9K,QAAS,CAClCn3H,QAAS23L,IAEbF,EAAkBx9O,KAAK,CACnBukB,QAAS,SACTgO,SAAUqlD,GAAAA,UAAkBtD,QAAU,QAAU,SAChDsuF,OAAQ,WACR5lK,SAASqoD,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAM,CACtBs9K,QAAS,WACL,IAAI95K,EAASqiB,EAAO47H,QAAP,MAAA57H,EAAkB/N,WAC/Bk2D,EAAKxqE,EACR,KAGZ,IACD,IAAIs6O,EAAgB,IAAI/J,GAAM/5K,GAAUvU,EAAAA,GAAAA,GAAO,CAC3CiqE,MAAO,QAAU4tH,EAAiBlgP,EAAQsyH,aAAU,IAAW4tH,EAAiBA,EAAiB,GACjG7I,WAAWrmL,EAAAA,GAAAA,eAAchxD,EAAQq3O,WAAW,GAC5C39E,aAAa1oG,EAAAA,GAAAA,eAAchxD,EAAQ05J,aAAa,GAChDtqI,OAAQ,OACRmE,MAAOvzB,EAAQuzB,MACfokN,gBAAiB33O,EAAQ23O,kBAAmB,EAC5Ct0B,mBAAmB,EACnBl5M,UAAWyyD,EACXmiJ,gBAAiBliN,GACjBi4O,kBAAmBj4O,GACnBulD,eAAgB,SAAS5hD,GACrBA,EAAKwzB,UAAUkpK,WAAWlsH,SAAS6uK,IAA6Bt3O,OAAOg4O,GACnED,GACA9/O,EAAKwzB,UAAU0kN,kBAAkB5nK,KAAK,kBAAmBwvK,EAEhE,EACD39B,UAAW,SAAS92M,GAChBA,EAAEmoB,UAAUmrN,gBAAgBnuK,SAAS+uK,IAA6BnhP,KAAK,IAAIiU,OAAOotO,KAAsBjvK,SAASgvK,IACjH9kK,IACH,EACD0nI,QAAS,SAAS/2M,GACd,IAAI80O,EAAe90O,EAAEmoB,UAAUmrN,gBAAgBvgP,KAAK,IAAIiU,OAAOotO,KAAsBtoM,QACrFwpB,EAAAA,EAAAA,QAAqBw/K,EAAc,QACtC,EACD99B,SAAU,WACN1xJ,EAAS/uD,QACZ,EACD0gN,SAAU,SAASlpM,GACf,IACaxK,EACTwK,EADAxK,QAEJukE,GAAEvkE,GAAS9O,QACd,EACDo3O,aAAc8I,EACdryF,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,MACNwmB,SAAU,KAEdmiD,KAAM,CACF3oE,KAAM,MACNwmB,SAAU,IACV2rF,GAAI,CACAtkG,QAAS,EACT+7L,MAAO,GAEXzlM,KAAM,CACF0J,QAAS,EACT+7L,MAAO,KAInBjvJ,YAAYjgD,EAAAA,GAAAA,KAASigD,WACrBx1C,SAAU,CACN0jM,eAAgB,CACZjyM,EAAG,GACHmoB,EAAG,KAGZhnB,EAAQ4gP,eAOX,SAAShwK,EAAK9vE,GACVqwD,EAAS3vD,QAAQV,GACjB4/O,EAAc9vK,MACjB,CACD,OAVA8vK,EAAczhC,WAAWjuI,SAAS2uK,IAC9B3/O,EAAQoN,UACRszO,EAAcnxM,OAAO,WAAYvvC,EAAQoN,UAE7CszO,EAAczhC,WAAWjuI,SAAS4uK,IAM3B,CACHlvK,KAAM,WACF,GAAI,UAAYkK,GAAAA,OAAe1D,WAAY,CACvC,IACI3jD,EADam6C,GAAU7wE,IAAU2wE,GAAS3wE,IACrB,MAAQ,MACjC6jP,EAAcnxM,OAAO,CACjBhc,MAAOA,GAEd,CAED,OADAmtN,EAAchwK,OACPvf,EAASjxC,SACnB,EACD0wD,KAAMA,EAEb,aC7IGiwK,IAAsBx4L,EAAAA,GAAAA,GAAO,CAAC,EAAGwiD,GAAiB,CAClDi2I,8BAA+B,WAC3B,MAAO,CACHh4L,MAAO,GACPqhD,WAAY,KACZ6mH,aAAc,OACdlwN,MAAO,KACP65I,UAAW,OACXE,iBAAa,EAEpB,EACDkmG,qBAAsB,WAClBn+O,KAAKo+O,sBACLp+O,KAAKkvN,wBACLlvN,KAAKq+O,wBACLr+O,KAAKooG,kBACLpoG,KAAKs+O,oBACR,EACDA,mBAAoB,WACXt+O,KAAK2sC,OAAO,gBACb3sC,KAAKwnG,YAAc,IAAIhG,GAAW,CAC9BjJ,MAAO,IAAIsH,GAAW7/F,KAAK2sC,OAAO,UAClC+1D,SAAU,IAEd1iG,KAAK4oG,sBAEZ,EACDsmH,sBAAuB,WACnBlvN,KAAKovN,gBAAiBh7J,EAAAA,GAAAA,IAAcp0D,KAAKu+O,qBAC5C,EACDA,mBAAoB,WAChB,OAAOv+O,KAAK2sC,OAAO,cACtB,EACDyxM,oBAAqB,WACjBp+O,KAAKw+O,cAAepqL,EAAAA,GAAAA,IAAcp0D,KAAKy+O,mBAC1C,EACDA,iBAAkB,WACd,OAAOz+O,KAAK2sC,OAAO,cAAgB,MACtC,EACD+xM,WAAY,SAASxgP,GACjB,IAAIqwD,EAAW,IAAIlxC,GAAAA,GAEnB,OADAnf,EAAQ8B,KAAK2+O,gBAAgBzgP,IACxBmwD,EAAAA,EAAAA,IAAUnwD,IAGf8B,KAAKwpG,YAAYxpG,KAAKy+O,mBAAoBvgP,GAAO0wD,KAAK,SAAShqD,GAC3D5E,KAAK4+O,eAAe5+O,KAAKw+O,aAAa55O,GAAO1G,GAASqwD,EAAS3vD,QAAQgG,GAAQ2pD,EAAS/uD,QAC3F,EAAC1C,KAAKkD,OAAOsvD,MAAM,WAChBf,EAAS/uD,QACZ,IACDQ,KAAK6+O,mBAAqBtwL,EACnBA,EAASjxC,WARLixC,EAAS/uD,SAAS8d,SAShC,EACDwhO,oBAAqB,WACjB,IAAIC,EACJ,QAAUA,EAAwB/+O,KAAK6+O,0BAAuB,IAAWE,GAAiCA,EAAsBv/O,OAAO,CACnIw/O,oBAAoB,GAE3B,EACDC,iBAAkB,WACd,OAAOj/O,KAAK2sC,OAAO,QACtB,EACDgyM,gBAAiB,SAASzgP,GACtB,IAAIkuD,EAKJ,OAJAluD,EAAQ,QAAUkuD,EAASluD,SAAU,IAAWkuD,EAASA,EAASpsD,KAAKi/O,qBAC1Dj/O,KAAKwnG,aAAe,SAAWxnG,KAAKy+O,qBAC7CvgP,EAAQ8B,KAAKk/O,YAAYhhP,IAEtB01D,GAAAA,EAAAA,OAAuB11D,EACjC,EACDghP,YAAa,SAAShhP,GAClB,IAAIoE,EAAMtC,KAAKwnG,YAAYllG,MAC3B,GAAIuC,MAAMC,QAAQxC,GAAM,CAEpB,IADA,IAAIkB,EAAS,CAAC,EACLmF,EAAI,EAAGsb,EAAI3hB,EAAI3B,OAAQgI,EAAIsb,EAAGtb,IACnCnF,EAAOlB,EAAIqG,IAAMzK,EAAMoE,EAAIqG,IAE/B,OAAOnF,CACV,CAID,OAHIlB,GAAO,kBAAoBpE,IAC3BA,EAAQA,EAAMoE,IAEXpE,CACV,EACD0gP,eAAgB,SAAS7rL,EAAQC,GAC7B,IAAImsL,EAAgBn/O,KAAKwnG,aAAexnG,KAAKwnG,YAAYllG,MACrDkB,EAASxD,KAAKo/O,eAAersL,EAAQC,GAQzC,OAPKxvD,GAAU27O,IAAiB9wL,EAAAA,EAAAA,IAAU0E,KAAW1E,EAAAA,EAAAA,IAAU2E,KAEvDxvD,EADAqB,MAAMC,QAAQq6O,GACLn/O,KAAKq/O,uBAAuBtsL,EAAQC,EAAQmsL,GAE5Cn/O,KAAKs/O,cAAcvsL,EAAQC,EAAQmsL,IAG7C37O,CACV,EACD67O,uBAAwB,SAAStsL,EAAQC,EAAQ1wD,GAC7C,IAAI+d,EAAWk/N,EAAAA,GACf,IAAKl/N,EAAS0yC,KAAY1yC,EAAS2yC,GAC/B,OAAO,EAEX,IAAK,IAAIrqD,EAAI,EAAGsb,EAAI3hB,EAAI3B,OAAQgI,EAAIsb,EAAGtb,IACnC,GAAIoqD,EAAOzwD,EAAIqG,MAAQqqD,EAAO1wD,EAAIqG,IAC9B,OAAO,EAGf,OAAO,CACV,EACD22O,cAAe,SAASvsL,EAAQC,EAAQ1wD,GACpC,IAAIk9O,EAAmB5rL,GAAAA,EAAAA,OACnB6rL,GAAYrxL,EAAAA,GAAAA,eAAcoxL,EAAiBzsL,EAAOzwD,IAAOywD,GACzD2sL,GAAYtxL,EAAAA,GAAAA,eAAcoxL,EAAiBxsL,EAAO1wD,IAAO0wD,GAC7D,OAAOhzD,KAAKo/O,eAAeK,EAAWC,EACzC,EACDN,eAAgB,SAASrsL,EAAQC,GAC7B,OAAOE,EAAAA,GAAAA,IAAaH,GAAQ,MAAUG,EAAAA,GAAAA,IAAaF,GAAQ,EAC9D,EACDqrL,sBAAuBv8N,GAAAA,KACvB69N,iCAAkC,WAC9B3/O,KAAKq+O,wBACLr+O,KAAK4/O,2BAA2B,eAAgB5/O,KAAK2sC,OAAO,gBAC/D,EACDkzM,sBAAuB,WACnB,IAAI9nG,EAAY/3I,KAAK2sC,OAAO,aAE5B,OADuB+jB,EAAAA,EAAAA,IAASqnF,IAAc,SAAWA,IAAalpF,EAAAA,EAAAA,IAAWkpF,GACvDA,EAAY,IACzC,EACD+nG,6BAA8B,SAASliP,GACnC,OAAQA,EAAKxE,MACT,IAAK,QACD4G,KAAKs+O,qBACLt+O,KAAK4/O,2BAA2B,SAChC,MACJ,IAAK,aACD5/O,KAAKooG,kBACL,MACJ,IAAK,eACDpoG,KAAK2/O,mCACL,MACJ,IAAK,YACD3/O,KAAKo+O,sBACL,MACJ,IAAK,cACDp+O,KAAKkvN,wBACLlvN,KAAKq+O,wBACLr+O,KAAK4/O,2BAA2B,eAE3C,IAEL,MC/JIG,GAAkB,qBAKlBC,GAAoB3gC,GAAAA,QAAgB,CACpCzhD,mBADoC,WAEhC,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B1K,mBAAoB,CAAC,EACrBhL,+BAA+B,EAC/BsY,SAAS,EACTp0B,MAAO,OACPnE,OAAQ,OACRkzL,oBAAoB,EACpBn0D,UAAW,KACX1qG,SAAS,EACT2/J,uBAAuB,EACvBE,wBAAwB,EACxB1gK,YAAY,EACZmgK,gBAAiBngN,KAAKigP,iBACtBt/M,SAAU,OACVp5B,UAAWvH,KAAKg6D,WAChBriD,YAAQ,EACR2P,KAAM,OACNqxJ,sBAAkB,EAClB4nC,qBAAqB,EACrB2/B,aAAc,MACdjyC,cAAU,EACVhhM,OAAQ,CACJhR,EAAG,EACHmoB,EAAG,GAEP+7N,eAAW,GAElB,EACD58I,MA9BoC,WA+BhCvjG,KAAKmiD,WACLniD,KAAKogP,iBACLpgP,KAAK8vK,iBACR,EACDxH,YAnCoC,WAoChCtoK,KAAKmiD,WACLniD,KAAKqgP,yBACLrgP,KAAKsgP,0BACLtgP,KAAKugP,mBACLvgP,KAAKwgP,kBACR,EACDF,wBAAyB,WACrB,IACY3oO,EACR3X,KAAK2sC,SADLh1B,OAEJ3X,KAAK2sC,OAAO,cAAeh1B,EAC9B,EACD0oO,uBAAwB,WACpBrgP,KAAKygP,YAAczgP,KAAK0gP,iBACxB,IAAIC,EAAoB3gP,KAAK2sC,OAAO,YAAc3sC,KAAKygP,YACvDzgP,KAAK4gP,yBAAyBD,EACjC,EACDC,yBAA0B,SAAS//L,GAC3BA,GACA7gD,KAAKg6D,WAAWoU,SAAS2xK,IACzB//O,KAAKq8M,WAAWjuI,SAAS2xK,MAEzB//O,KAAKg6D,WAAWqU,YAAY0xK,IAC5B//O,KAAKq8M,WAAWhuI,YAAY0xK,IAEnC,EACDS,iBA9DoC,WA+DhC,IAAI,EAGAxgP,KAAK2sC,SAFMplC,EADf,EACIA,UACW44O,EAFf,EAEIA,UAEApiO,EAAK,OAASoiO,QAAa,IAAWA,EAAYA,EAAYpvK,GAAExpE,GAAW2mE,KAAK,oBACpFluE,KAAKs6L,WAAWlsH,SAtEM,8BAsE4BF,KAAK,KAAMnwD,EAChE,EACDkiO,iBAtEoC,SAsEnBzzO,GACb,IAAIwtD,EAAWxtD,GAAWukE,GAAEvkE,GAC5B,OAASwtD,QAAY,IAAWA,GAAoBA,EAASmT,KAAKntE,KAAKygP,YAC1E,EACDC,eA1EoC,WA2EhC,IAAI73I,EACA8vE,EAAmB,QAAU9vE,EAAe7oG,KAAK2sC,OAAO,2BAAwB,IAAWk8D,EAAeA,EAAe,GACzHg4I,EAAyB,GAM7B,OALAloE,EAAiBj4K,SAAQ,SAAAtB,GACrB,IAAI0hP,EAEJD,IADgBA,EAAyB,SAAW,KACd9lL,EAAAA,GAAAA,IAAW,QAAU+lL,EAAe,OAAS1hP,QAAO,IAAWA,OAAM,EAASA,EAAIhF,eAAY,IAAW0mP,EAAeA,EAAe,GAChL,IACMD,CACV,EACDN,iBArFoC,WAsFhC,IAAIj5N,EAAOtnB,KAAK2sC,OAAO,QACvB3sC,KAAKq8M,WAAWpuI,YA3FG,0BA2F+B,SAAW3mD,GAAM2mD,YA1F9C,4BA0FkF,WAAa3mD,EACvH,EACD84N,eAzFoC,WA0FhC,IAAIzoO,EAAS3X,KAAK2sC,OAAO,UACrBo0M,EAAc/1K,GAAcrzD,GAC5BgpB,EAAW,OACXogN,IACApgN,EAAWp3B,KAAKkuB,IAAIspN,EA/FG,MAiG3B/gP,KAAK2sC,OAAO,CACRhM,SAAUA,GAEjB,EACDqgN,mBAAoB,SAASd,EAAce,GACvC,OAAQf,GACJ,IAAK,MACD,MAAO,CAAC,GAAGjwO,OAAOgxO,EAAS,WAAY,GAAGhxO,OAAOgxO,EAAS,SAC9D,IAAK,OACD,MAAO,CAAC,QAAS,QACrB,IAAK,QACD,MAAO,CAAC,OAAQ,SACpB,QACI,MAAO,CAAC,GAAGhxO,OAAOgxO,EAAS,QAAS,GAAGhxO,OAAOgxO,EAAS,YAElE,EACDnxE,gBAAiB,WACb,IAAI,EAKA9vK,KAAK2sC,SAJSuzM,EADlB,EACIA,aACYlgM,EAFhB,EAEIA,WACQkhM,EAHZ,EAGIj0O,OACUghM,EAJd,EAIIA,SAEAgzC,EAAU12J,GAAoBvqC,GAC9BmhM,EAAYnhP,KAAKghP,mBAAmBd,EAAce,GAClDh0O,GAAS8L,EAAAA,EAAAA,GAAS,CAAC,EAAGmoO,GAC1BlhP,KAAKg6D,WAAWoU,SAAS,sBAAsBn+D,OAAOiwO,IAClDlgM,GAAc,SAAWkgM,GAAgB,UAAYA,IACrDjzO,EAAOhR,GAAKgR,EAAOhR,GAEnB,QAAUikP,IACVjzO,EAAOmX,GAAKnX,EAAOmX,GAEnB,SAAW87N,IACXjzO,EAAOhR,GAAKgR,EAAOhR,GAEvB+D,KAAK2sC,OAAO,WAAY,CACpB1/B,OAAQA,EACRghM,SAAUA,EACVxrK,GAAI0+M,EAAU,GACdt8L,GAAIs8L,EAAU,GACdpzC,UAAW,aAElB,EACDjuC,eA5IoC,SA4IrBliK,GACX,IACUxE,EAGNwE,EAHAxE,KACO8E,EAEPN,EAFAM,MACe28J,EACfj9J,EADAi9J,cAEJ,OAAQzhK,GACJ,IAAK,SACD4G,KAAKsgP,0BACLtgP,KAAKogP,iBACLpgP,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,WACDoC,KAAK2sC,OAAO,oBAAqBzuC,GACjC,MACJ,IAAK,OACD8B,KAAKugP,iBAAiBriP,GACtB,MACJ,IAAK,aACL,IAAK,SACL,IAAK,eACD8B,KAAKg6D,WAAWqU,YAAY,sBAAsBp+D,OAAO4qJ,IACzD76J,KAAK8vK,kBACL,MACJ,IAAK,YACD9vK,KAAKwgP,mBACLxgP,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,YACDoC,KAAKwgP,mBACL,MACJ,IAAK,mBACDxgP,KAAKqgP,yBACLrgP,KAAKigP,iBAAiBjgP,KAAKs6L,YAC3B,MACJ,QACIt6L,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,sBAAuBwtE,IACzC,UChLIoB,GAAuB,0BAIvBC,GAAoB,uBAEpBC,GAA4B,UAE5BC,GAAwB,CAAC,WAAY,SAAU,cAC/CC,GAA8B,CAC9BC,sBAAuB,OACvBC,0BAA2B,eAC3BC,wBAAyB,SACzBC,mBAAoB,YAEpBC,GAASj9C,GAAAA,QAAe,CACxB7hJ,KAAM,WACF/iD,KAAK8hP,6BAA+B,KACpC9hP,KAAK+hP,mBAAoBn1L,EAAAA,GAAAA,KACzB5sD,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD2rJ,eAAgB,SAASj3J,GACrBxM,KAAKmiD,SAAS31C,GACd,IAAIwtD,EAAWh6D,KAAKg6D,WAChBA,GACA1/D,EAAK0/D,EAAS,GAAIqnL,GAAmBrhP,KAE5C,EACDs/J,aAAc,SAASliK,GACnB4C,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK2sC,OAAOmpI,GAAAA,sBAAuC14K,GACtD,EACDmmG,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKktD,SAAS58C,MAAM,2BAA4BtQ,KAAK2sC,OAAO,6BAC7C3sC,KAAKg6D,WACXoU,SAjCY,wBAkCxB,EACDwvF,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjkD,MAAO,KACP9E,KAAM,GACN4oP,eAAgB,KAChBjtN,UAAU,EACVm7G,SAAS,EACTwoC,gBAAiB,KACjBC,iBAAkB,KAClBH,iBA1CkB,QA2ClBipE,sBAAuB,OACvBC,0BAA2B,SAC3BE,wBAAoB,EACpBD,wBAAyB,CACrB1lP,EAAG,EACHmoB,EAAG,GAEP69N,yBAA0B,CAAC,EAC3BC,wBAAwB,GAE/B,EACDrpC,sBAAuB,WACd74M,KAAK2sC,OAAO,aACb3sC,KAAKmiD,UAEZ,EACDi8G,uBAAwB,WACpBp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7Boe,iBAAiB,GAExB,EACDypE,yBAA0B,WACtBniP,KAAKoiP,mBAAqBpiP,KAAK2/J,sBAAsB,iBAAkB,CACnE5e,kBAAmB,CAAC,WAAY,aAEvC,EACDshG,2BAA4B,WACxBriP,KAAKsiP,8BAA+B,CACvC,EACDC,yBAA0B,WACtBviP,KAAKsiP,8BAA+B,CACvC,EACDh6E,YAAa,WACT,IAAIz/D,EACJ7oG,KAAKwiP,uBACLxiP,KAAKyiP,sBAAsBziP,KAAK2sC,OAAO,SACvC3sC,KAAKmiD,WACLniD,KAAK0iP,yBACL,QAAU75I,EAAe7oG,KAAK2sC,OAAO,4BAAyB,IAAWk8D,GAAwBA,GACpG,EACD85I,wBAAyB,SAASzkP,EAAO28J,GAChC76J,KAAKoiP,oBACNpiP,KAAKmiP,2BAETniP,KAAKoiP,mBAAmBpiP,KAAK4iP,iBAAiB1kP,EAAO28J,GACxD,EACD+nF,iBAAkB,SAAS1kP,EAAO28J,GAC9B,MAAO,CACH38J,MAAOA,EACP28J,cAAeA,EACf95J,MAAOf,KAAK6iP,0BAEnB,EACDC,sBAAuB,SAAS75O,GAC5BjJ,KAAK6iP,0BAA4B55O,CACpC,EACDuwM,gBAAiB,SAASvwM,GACtB,IAAI85O,EAAkC,SAAW/iP,KAAK2sC,OAAO,yBAC7D,GAAI3sC,KAAKgjP,6BAA+BD,EAAiC,CACrE,IAAIE,EACAC,EAA4B,QAAUD,EAAwBjjP,KAAKmjP,0BAAuB,IAAWF,OAAwB,EAASA,EAAsB5mC,WAChK,OAAS6mC,QAA6B,IAAWA,GAAqCA,EAA0B70K,YAAY+yK,IAC5H9rN,aAAat1B,KAAK8hP,8BAClB9hP,KAAK8hP,6BAA+BvsN,YAAW,kBAAM,OAAS2tN,QAA6B,IAAWA,OAA4B,EAASA,EAA0B90K,SAASgzK,GAA/H,GAAsJ,IACxM,CACD,OAAOphP,KAAKmiD,SAASl5C,EACxB,EACD+5O,0BAA2B,WACvB,OAAO,CACV,EACDI,sBAAuB,WACnB,MAAO,YACV,EACDC,mBAAoB,WAAW,WACvB5qM,EAAcz4C,KAAK2sC,OAAO,eAC1B/9B,EAAS5O,KAAKojP,wBACdE,EAAwB/B,GAAsBx9O,KAAI,SAAAujB,GAAI,OAAI1Y,EAAS0Y,CAAb,IAC1Dg8N,EAAsB5iP,SAAQ,SAAAyX,GAAS,OAAI,EAAK6hD,WAAWqU,YAAYl2D,EAAhC,IACvC,IAAIorO,EAAmB30O,EAAS6pC,EAChC,IAAK,IAAM6qM,EAAsBliP,QAAQmiP,GAAmB,CACxD,IAAIC,EAAqBxjP,KAAK49J,qBAAqB0qC,YAC/Cm7C,EAAsBzjP,KAAKi+J,uBAAuBj+J,KAAK89J,wBAAwBwqC,YACnFi7C,EAAmB30O,GAAU60O,GAAuBD,EACvD,CACDxjP,KAAKg6D,WAAWoU,SAASm1K,EAC5B,EACDG,qBAAsB,WAClB,IAAI/qE,EAAmB34K,KAAK2sC,OAAO,oBAInC,OAHKgsI,GAAoB34K,KAAK2sC,OAAO,qBACjCgsI,EAAmB,CAAC34K,KAAK2sC,OAAO,qBAE7BgsI,CACV,EACDgrE,0BAA2B,WACnB3jP,KAAK4jP,sBACL5jP,KAAK4jP,oBAAoBlmP,SACzBsC,KAAK86M,QAAQ,cAAe,MAC5B96M,KAAK4jP,yBAAsB,EAC3B5jP,KAAKmjP,wBAAqB,EAEjC,EACDU,yBAA0B,SAAS7qE,GAC/Bh5K,KAAKg6D,WAAWiU,YArJJ,aAqJ+B+qG,GAC3Ch5K,KAAK86M,QAAQwmC,GAA2BtoE,QAAa,EACxD,EACD0pE,uBAAwB,WACpB,IAAIxyG,EAAUlwI,KAAK2sC,OAAO,YAAc3sC,KAAK2sC,OAAO,sBAAwB20M,GACxE3oE,EAAmB34K,KAAK0jP,uBACxB1pL,EAAWh6D,KAAKg6D,WAEpB,GADAh6D,KAAK6jP,0BAA0B3zG,IAC1BpvF,EAAAA,EAAAA,QAAe,IAAU9gD,KAAK2sC,OAAO,4BAG1C3sC,KAAK2jP,6BACAzzG,GAAWyoC,GAAkB,CAC9B,IAAI,EAKA34K,KAAK2sC,SAJkB80M,EAD3B,EACIA,sBACyBE,EAF7B,EAEIA,wBACoBC,EAHxB,EAGIA,mBACY5hM,EAJhB,EAIIA,WAEJhgD,KAAK4jP,oBAAsB7yK,GAAE,SAASpC,SAAS3U,GAC/C,IAAI8pL,EAA6B,MAAM7zO,OAAO,IAAIi8C,GAAAA,GAClDlsD,KAAK86M,QAAQ,cAAegpC,GAC5B9jP,KAAKmjP,mBAAqB,IAAInD,GAAkBhgP,KAAK4jP,qBAAqBn+L,EAAAA,GAAAA,GAAO,CAC7EkzH,iBAAkBA,EAClB34H,WAAYA,EACZroC,OAAQ3X,KAAK+jP,8BACb5nC,gBAAiBniJ,EACjB1yC,KAAMm6N,EACNvB,aAAclgP,KAAKgkP,gCACnB/2O,OAAQ00O,EACR1zC,SAAU2zC,EACVzB,UAAW2D,GACZ9jP,KAAKktD,SAAS58C,MAAM,8BACvBtQ,KAAKu3M,wBAAwBv3M,KAAKmjP,mBAAoB,2BACzD,CACJ,EACDa,8BAA+B,WAC3B,OAAOhkP,KAAK2sC,OAAO,4BACtB,EACDo3M,4BAA6B,WACzB,OAAO/jP,KAAKg6D,UACf,EACDwoL,qBAAsB,WAClB,IAAIztN,EAAW/0B,KAAK2sC,OAAO,YAC3B3sC,KAAKikP,wBAAwBlvN,GAC7B/0B,KAAKg6D,WAAWiU,YAnMG,sBAmMiCl5C,GACpD/0B,KAAK86M,QAAQ,WAAY/lL,QAAY,EACxC,EACDkvN,wBAAyB,SAASC,GAC9B,IAAIC,EAAenkP,KAAKo5M,8BACpB56M,EAAYglJ,GAAa,UAlMZ,kBAmMjB4gG,EAAAA,EAAAA,IAAiBD,EAAc3lP,GAC3B0lP,GACAE,EAAAA,EAAAA,GAAgBD,EAAc3lP,GAAW,SAAAyK,GACjC,cAAgBq9I,GAAiBr9I,IACjCA,EAAEkzD,gBAET,GAER,EACDu2E,SAAU,WAENp4I,EADc0F,KAAKg6D,WAAW,GAChBqnL,GAAmB,MACjC/rN,aAAat1B,KAAK8hP,8BAClB9hP,KAAK2jP,4BACL3jP,KAAKmiD,UACR,EACDsgM,sBAAuB,SAASrpP,GAC5B,IAAIirP,EAAiBrkP,KAAKskP,oBACrBD,IAGDjrP,EAAKuH,OAAS,EACd0jP,EAAen2K,KAAK,OAAQ90E,GAE5BirP,EAAel2K,WAAW,QAEjC,EACDm2K,kBAAmB,WACf,OAAO,IACV,EACDC,4BAA6B,SAASvtO,GAClC,IAAIwtO,EAEMprP,EAEN4d,EAFA5d,KACO8E,EACP8Y,EADA9Y,MAEAgnI,EAAYs8G,GAA4BpoP,GAAQooP,GAA4BpoP,GAAQA,EACxF,QAAUorP,EAAyBxkP,KAAKmjP,0BAAuB,IAAWqB,GAAkCA,EAAuB73M,OAAOu4F,EAAWhnI,EACxJ,EACDumP,kBAAmB3iO,GAAAA,KACnBg+I,eAAgB,SAASliK,GACrB,IAAI8mP,EACJ,OAAQ9mP,EAAKxE,MACT,IAAK,iBACD4G,KAAKmiP,2BACL,MACJ,IAAK,WACDniP,KAAKwiP,uBACLxiP,KAAKq6M,qBACL,MACJ,IAAK,QACGz8M,EAAKM,OAASN,EAAKi9J,eACnB76J,KAAK+hP,kBAAkBh1L,KAAK,CACxB7uD,MAAON,EAAKM,MACZymP,OAAQ3kP,OAGXA,KAAKsiP,+BACNtiP,KAAK2iP,wBAAwB/kP,EAAKM,MAAON,EAAKi9J,eAC9C76J,KAAK8iP,2BAAsB,IAE/B,MACJ,IAAK,QACD9iP,KAAKmiD,SAASvkD,GACd,QAAU8mP,EAAyB1kP,KAAKmjP,0BAAuB,IAAWuB,GAAkCA,EAAuBtE,iBACnI,MACJ,IAAK,OACDpgP,KAAKyiP,sBAAsB7kP,EAAKM,OAChC,MACJ,IAAK,UACL,IAAK,kBACL,IAAK,mBACL,IAAK,mBACD8B,KAAK2sC,OAAOmpI,GAAAA,6BAA8Cl4K,EAAMoC,KAAK2sC,WACrE3sC,KAAK0iP,yBACL,MACJ,IAAK,qBACL,IAAK,wBACL,IAAK,4BACL,IAAK,0BACD1iP,KAAKukP,4BAA4B3mP,GACjC,MACJ,IAAK,aACDoC,KAAKukP,4BAA4B3mP,GACjCoC,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,2BACDoC,KAAKo3M,0BAA0Bp3M,KAAKmjP,mBAAoBvlP,GACxD,MACJ,IAAK,yBACD,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,EACD46E,KAAM,WACEx4E,KAAKykP,qBACLnsK,IAEP,EACD9xC,MAAO,WACH,IAAI4/E,EAAiBpmH,KAAK49J,qBAC1B59J,KAAK2sC,OAAO,QAASy5E,EAAeloH,MACvC,IAEL2jP,GAAO+C,SAAW,SAAA77M,GAAQ,OAAIA,aAAoB84M,EAAxB,EAC1B,UC3TIgD,GAAqB,iBAErBC,GAA0B,sBAOxBC,GAAAA,SAAAA,uIACF,WACI,OAAO/kP,KAAKg6D,WAAWnvD,QAC1B,6CACD,WACI,OAAO,CACV,mCACD,WACI,IAAIu7G,GAAiB,kEACrB,OAAO3gE,EAAAA,GAAAA,GAAO2gE,EAAgB63H,GAAAA,gCAAqD,CAC/ErvB,gBAAiB,CACb18L,KAAM,UAGjB,4BACD,WAAc,YACV,4DACAq9B,EAAAA,GAAAA,cAAY,WACR,EAAKoiK,eAAevjJ,SAASy2K,GAChC,GACJ,4CACD,WACI,OAAO7kP,KAAK6lK,cACf,uCACD,SAAuBjoK,GACnB,IAEcuvE,EAGVvvE,EAJA09I,SACInuE,KAESrN,EACbliE,EADAkiE,YAEJ,IAAKqN,EAAM,CACP,IAAI63K,EAASj0K,GAAE,SAAS3C,SAAS02K,IACjC/zK,GAAE,SAAS3C,SAvCW,2BAuC2BO,SAASq2K,GAC1D,IAAIC,EAAkBl0K,GAAE,SAASprE,OAAOq/O,GAAQ52K,SArC1B,4BAsCtB2C,GAAEjR,GAAax4D,QAAQ29O,EAC1B,EACD,qEAA6BrnP,EAChC,uCACD,SAAuBkwN,EAAc6X,IACjC,qEAA6B7X,EAAc6X,GAC3C7X,EAAa7/I,YAnDY,yBAmD4B03J,GAAY3pO,KAAK,IAAIiU,OAAO60O,KAA0B/vM,QAAQk5B,YAjDrF,8BAiDkI03J,GAChK3lO,KAAK86M,QAAQ,UAAW6qB,EAAY7X,EACvC,gCACD,WACI9tN,KAAKizN,kBACLjzN,KAAKi4M,gBACR,+BACD,WACI,IAAIptM,GAAS,8DACb,OAAO46C,EAAAA,GAAAA,GAAO,CAAC,EAAG56C,EAAQ,CACtBs5I,MAAO,SAASl7I,GAEZ,OADAA,EAAEkzD,iBACKtxD,EAAOs5I,MAAMpsI,MAAM/X,KAAM8X,UACnC,EACDw1M,MAAO,SAASrkN,GAEZ,OADAA,EAAEkzD,iBACKtxD,EAAOyiN,MAAMv1M,MAAM/X,KAAM8X,UACnC,GAER,8BACD,WACI,OAAO9X,KAAKszN,iBAAiBvoN,SAAS/K,KAAK4zN,gBAC9C,2CACD,WAA+B,OAhE7BmxB,CAAwB33B,IAkExB83B,GAAAA,SAAAA,6IACF,WACI,MAAO,CACHlkJ,UAAU,EAEjB,qCACD,WAEI,OAD0B,oEACC/wF,OAAO,CAAC,CAC/BymE,OAAQ,CACJjC,QAAQ,GAEZr3E,QAAS,CACL+nP,OAAQ,eAEb,CACCzuK,OAAQ,iBAAM,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aAAlD,EACR56E,QAAS,CACL+gD,mBAAmB,KAG9B,wCACD,SAAwBmsI,GACpBA,IAAS,sEACZ,6BACD,WACI,OAAOtqL,KAAKg6D,UACf,+BACD,WACI,OAAOh6D,KAAKg6D,UACf,mCACD,WACI,IAAIosD,GAAiB,kEACrB,OAAO3gE,EAAAA,GAAAA,GAAO2gE,GAAgB3gE,EAAAA,GAAAA,GAAOw4L,GAAAA,gCAAqD,CACtF75C,mBAAmB,EACnBD,oBAAoB,EACpBghD,OAAQ,aAEf,8BACD,SAAcvgP,GACV,OAAO5E,KAAKw+O,aAAex+O,KAAKw+O,aAAa55O,GAAQA,EAAK+B,IAC7D,kCACD,WACI,OAAO3G,KAAKolP,eACf,sBACD,YACI,qDACAplP,KAAKm5M,iBAAmB,IAAIlpM,OAAO40O,IACnC7kP,KAAKykM,qBAnHqB,IAoH1BzkM,KAAKm+O,sBACR,4BACD,WACIn+O,KAAKg6D,WAAWoU,SAxHA,iBAyHhBpuE,KAAKqlP,uBACLrlP,KAAK86M,QAAQ,OAAQ,cACrB96M,KAAKslP,gBACLtlP,KAAKulP,iBACL,0DACH,kCACD,SAAkBvuO,GACd,IACiB8oD,EAGb9oD,EAHA8oD,YACO/+D,EAEPiW,EAFAjW,MACUu6I,EACVtkI,EADAskI,SAEJ,GAAIt7I,KAAK2xN,eAAe1iJ,GAAGnP,GAAc,CACrC,IAAIj3B,EAAW7oC,KAAKwlP,cAAclqG,GAC9BzyG,IAAa7oC,KAAK2sC,OAAO,WACzB3sC,KAAK8iP,sBAAsB/hP,GAC3Bf,KAAK2sC,OAAO,QAAS9D,GAE5B,CACJ,qCACD,WACI,IAAI3qC,EAAQ4Z,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAK2sC,OAAO,SACrF84M,EAAmB,SAAWzlP,KAAK2sC,OAAO,aAC1C+4M,EAAoBD,GAAoB,OAASvnP,IAASmwD,EAAAA,EAAAA,IAAUnwD,GACxE,OAAOwnP,EAAoB,CAACxnP,GAAS,EACxC,8BACD,SAAcg3D,GACV,IAAIh3D,EAAQ8B,KAAK2+O,gBAAgBzpL,GACjCl1D,KAAK4/O,2BAA2B,mBAAoB5/O,KAAK2lP,qBAAqBznP,GACjF,+BACD,SAAeN,GACX,IACUxE,EAENwE,EAFAxE,KACO8E,EACPN,EADAM,MAGJ,OADA8B,KAAK8/O,6BAA6BliP,GAC1BxE,GACJ,IAAK,aACD4G,KAAKypK,cACL,MACJ,IAAK,oBACL,IAAK,YACL,IAAK,WACDzpK,KAAK4/O,2BAA2BxmP,EAAM8E,GACtC,MACJ,IAAK,YACD,6DAAqBN,GACrBoC,KAAK4/O,2BAA2BxmP,EAAM8E,GACtC,MACJ,IAAK,YACD8B,KAAK4/O,2BAA2B,UAAW5/O,KAAK6/O,yBAChD,MACJ,IAAK,QACD7/O,KAAK4lP,cAAc1nP,GACnB8B,KAAK6lP,gBAAgB3nP,IACrB,6DAAqBN,GACrB,MACJ,IAAK,QACDoC,KAAK4lP,cAAc5lP,KAAK2sC,OAAO,UAC/B,MACJ,IAAK,eACL,IAAK,cACD,MACJ,IAAK,SACD3sC,KAAKulP,gBACLvlP,KAAK8lP,mBACL,MACJ,SACI,6DAAqBloP,GAEhC,wBACD,YACI,uDACAoC,KAAK8lP,kBACR,8BACD,WACI,IAAIX,EAASnlP,KAAK2sC,OAAO,UACrBqtB,EAAWh6D,KAAKg6D,WACpBA,EAASiU,YAzMgB,yBAyMwB,aAAek3K,GAChEnrL,EAASiU,YA3MkB,2BA2MwB,eAAiBk3K,EACvE,8BACD,WAAgB,WACZnlP,KAAK+lP,kBAAoB,IAAI1oO,GAAAA,GAC7B,IAAI2oO,EAAUj1K,GAAE,SAASpC,SAAS3uE,KAAKg6D,YACnC,EAMAh6D,KAAK2sC,SALQsrG,EADjB,EACIA,YACWh7F,EAFf,EAEIA,UACmBkB,EAHvB,EAGIA,kBACciwK,EAJlB,EAIIA,aACU5tK,EALd,EAKIA,SAEJxgD,KAAKmjK,iBAAiB6iF,EAASjB,GAAiB,CAC5CrlM,cAAe,SAAAglH,GACX,IACetzI,EACXszI,EADAtzI,UAEJ,EAAK60N,QAAU70N,CAClB,EACDouB,eAAgB,SAAAv2C,GACZ,EAAKsvM,yBAAwB,EAChC,EACD+V,YAAatuN,KAAKiuN,kBAAkBnxN,KAAKkD,MACzCi4I,YAAaA,EACbh7F,UAAWA,EACXsqD,WAAYvnG,KAAKwnG,YACjBrpD,kBAAmBA,EACnBiwK,aAAcA,EACdliI,QAASlsF,KAAK6/O,wBACdphM,WAAY,GACZynM,kBAAkB,EAClB9e,eAAe,EACfF,cAAe,SACfrM,iBAAkB76N,KAAK2lP,uBACvBnlM,SAAUA,IAEdxgD,KAAK+lP,kBAAkBnnP,SAC1B,qCACD,WACIoB,KAAKolP,gBAAkBr0K,GAAE,WAAW7C,KAAK,OAAQ,UAAUS,SAAS3uE,KAAKg6D,YACzEh6D,KAAK6lP,iBACR,uCACD,YACI,uEACApgM,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7Bp8J,OAAO,GAEd,gCACD,SAAgBA,GACZ,IAAIkuD,EACJluD,EAAQ,QAAUkuD,EAASluD,SAAU,IAAWkuD,EAASA,EAASpsD,KAAK2sC,OAAO,SAC9E,IAAIw5M,EAAc,SAAWnmP,KAAK2sC,OAAO,aAAe3sC,KAAKovN,eAAelxN,GAASA,EACrF8B,KAAKolP,gBAAgB3sN,IAAI0tN,EAC5B,2CACD,WACInmP,KAAK+lP,kBAAkBn3L,KAAK5uD,KAAK+6M,iBAAiBj+M,KAAKkD,KAAM,UAAW8X,WAC3E,iCACD,WACI,GAAI,eAAiB9X,KAAK2sC,OAAO,UAC7B3sC,KAAK2xN,eAAersL,IAAI,SAAU,YAC/B,CACH,IAAImjM,EAAazoO,KAAK2sC,OAAO,SAAShsC,OACtCX,KAAK2xN,eAAersL,IAAI,SAAU,IAAMmjM,EAAa,IACxD,CACJ,sBACD,WACI,IAAI2d,EACJ,QAAUA,EAAgBpmP,KAAKimP,eAAY,IAAWG,GAAyBA,EAAc//N,OAChG,6BACD,WACI,IAAIggO,EACJ,OAAO,QAAUA,EAAiBrmP,KAAKimP,eAAY,IAAWI,OAAiB,EAASA,EAAe10B,cAC1G,OA5MCuzB,CAAmBrD,IA8MzBqD,GAAWziM,QAAQw7L,IACnBzrE,GAAkB,eAAgB0yE,IAClC,IC/RIoB,GAAqB,iBAErBC,GAA0BD,sBAG1BE,GAA8BD,gCAE9BE,GAAmBr5B,GAAAA,QAAyB,CAC5CziD,eAD4C,WAC3B,WACb3qK,KAAKmiD,WACLniD,KAAK4pK,iBAAiBgsB,oBAAoB,CACtChxL,KAAM,IAAI81E,IAAiB,SAACF,EAAYlgF,EAAMm7C,GAC1C,EAAKixM,mBAAmBlsK,GACxB,IAAIh7D,EAAW,EAAKmtB,OAAO,kBAC3B,EAAKw2H,iBAAiB3oF,EAAYmuH,IAAQljJ,EAAAA,GAAAA,GAAO,CAAC,EAAGhQ,EAAOn7C,EAAM,EAAKqsP,yBAA0B,CAC7FjsD,cAAe,EAAKksD,mBAAmBpnO,GAAYi2B,EAAQ,CAAC,EAC5Dj2B,SAAUi2B,EAAMj2B,UAAYA,IAEnC,GAAE,CAAC,OAAQ,OAAQ,OAAQ,WAAY,UAAW,QAASxf,KAAK2sC,OAAO,oCAE/E,EACDg6M,uBAd4C,WAexC,MAAO,CACHxoM,mBAAmB,EACnBm/H,QAAS,KACT8mB,kBAAmBpkM,KAAK2sC,OAAO,qBAC/Bw3J,mBAAoBnkM,KAAK2sC,OAAO,sBAChC27J,YAAatoM,KAAK2sC,OAAO,eAEhC,EACDixH,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B0sK,qBAAsB,MAE7B,EACD+3B,mBA5B4C,SA4BzBpnO,GACf,OAAOqvC,EAAAA,EAAAA,IAAWrvC,IAAaxf,KAAK2sC,OAAO,gCAAgCntB,EAC9E,EACDknO,mBA/B4C,SA+BzB51B,GACf,IAAIr4E,EAAYq4E,EAAMx2N,KAAK,eAC3B,IAAMm+I,GAAaq4E,EAAM1iJ,SArCGk4K,6BAsC5B,IAAIpgM,EAAQlmD,KAAK2sC,OAAO,SACxBuZ,GAASuyF,IAAcvyF,EAAMvlD,OAAS,GAAKmwN,EAAM1iJ,SAtCtBk4K,4BAuC3Bx1B,EAAM1iJ,SArCa,oBAsCtB,EACDwnJ,mBAtC4C,SAsCzBh4N,GAEf,OADAA,EAAK2J,UAAYwpE,GAAEnzE,EAAK2J,WAAWsD,SAC5B7K,KAAKmiD,SAASvkD,EACxB,EACDqsO,2BAA4B,SAASroF,EAAS1jJ,GAC1C8B,KAAK86M,QAAQ,UAAW58M,EAAO0jJ,EAClC,EACD20E,yBAA0B,SAAS34N,EAAM44N,GAErC,OADA54N,EAAK2J,UAAYwpE,GAAEnzE,EAAK2J,UAAUwD,WAAWgqC,SACtC/0C,KAAKmiD,SAASvkD,EAAM44N,EAC9B,EACD3wD,aAjD4C,WAkDxC,OAAO7lK,KAAKg6D,WAAWnvD,QAC1B,EACDuuM,4BApD4C,WAqDxC,OAAOp5M,KAAK6lK,cACf,EACDmtD,gBAvD4C,WAwDxChzN,KAAKizN,kBACLjzN,KAAKi4M,gBACR,EACDub,WAAY,kBAAM+yB,EAAN,EACZ5c,mBAAoB,SAAS1gO,GACrB,WAAajJ,KAAK2sC,OAAO,kBAAoB3sC,KAAK87N,eAAe7yN,EAAEu2D,gBAGvEx/D,KAAKmiD,SAASl5C,EACjB,IAED49O,GAAcjiD,GAAAA,QAAe,CAC7BhnC,mBAD6B,WAEzB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BiiJ,mBAAmB,EACnBjmJ,mBAAmB,EACnB+oL,cAAe,SACftM,cAAe,GACfC,iBAAkB,GAClBvyB,YAAa,YACbp8G,QAAS,OACThmC,MAAO,GACP4gM,eAAgB,UAChBhsB,mBAAoB,KACpBxM,YAAa,MAEpB,EACD/qH,MAhB6B,WAiBzBvjG,KAAKmiD,WACLniD,KAAK+mP,wBACR,EACDA,uBApB6B,WAqBzB/mP,KAAKgnP,iBAAmBhnP,KAAK2/J,sBAAsB,cACtD,EACD2I,YAvB6B,WAwBzBtoK,KAAK86M,QAAQ,OAAQ,SACrB96M,KAAKg6D,WAAWoU,SAASk4K,IACzBtmP,KAAKinP,iBACLjnP,KAAK6oO,wBACL7oO,KAAKmiD,UACR,EACDuoL,0BAA2B,SAAShQ,EAAYC,GAC5C36N,KAAK2/J,sBAAsB,qBAAsB,CAC7C5e,kBAAmB,CAAC,WAAY,aADpC/gJ,CAEG,CACC06N,WAAYA,EACZC,aAAcA,GAErB,EACDssB,eAtC6B,WAsCZ,WACTC,EAAWn2K,GAAE,SAAS3C,SAhHDk4K,0BAgHsC33K,SAAS3uE,KAAKg6D,YACzE4gK,EAAgB56N,KAAK2sC,OAAO,iBAC5BvvC,EAAU,CACV8pO,cAAelnO,KAAK2sC,OAAO,iBAC3BuZ,MAAOlmD,KAAK2sC,OAAO,SACnBu/C,QAASlsF,KAAK2sC,OAAO,WACrBm6M,eAAgB9mP,KAAK2sC,OAAO,kBAC5Bu5M,kBAAkB,EAClBrrB,iBAAkB76N,KAAK2sC,OAAO,oBAC9BwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/By3J,kBAAmBpkM,KAAK2sC,OAAO,qBAC/Bw3J,mBAAoBnkM,KAAK2sC,OAAO,sBAChC27J,YAAatoM,KAAK2sC,OAAO,eACzBsQ,UAAWj9C,KAAK2sC,OAAO,aACvB6T,SAAUxgD,KAAK2sC,OAAO,YACtB8R,WAAY,GACZ0oL,mBAAmB,EACnB9Y,eAAgB,SAAAplN,GACZ,IAAI0nB,EAAQ,EAAKgc,OAAO,UACxB0hB,EAAAA,EAAAA,IAAU19B,IAAUogD,GAAE9nE,EAAE62D,aAAasO,SAASo4K,GACjD,EACD1rB,mBAAoB,SAAA7xN,GAChB,EAAK4/N,wBACL,EAAK6B,0BAA0BzhO,EAAEyxN,WAAYzxN,EAAE0xN,aAClD,EACDrM,YAAa,SAAArlN,GACT,EAAK+9O,iBAAiB/9O,EACzB,IAEDolD,EAAAA,EAAAA,IAAUusK,IAAkBA,EAAcj6N,SAC1CvD,EAAQw9N,cAAgBA,GAE5B56N,KAAKmnP,mBAAqBnnP,KAAKmjK,iBAAiB+jF,EAAUT,GAAkBrpP,EAC/E,EACDyrO,sBAzE6B,WA0EzB7oO,KAAKwhK,8BAA8B,gBAAiBxhK,KAAKmnP,mBAAmBx6M,OAAO,kBACnF3sC,KAAKwhK,8BAA8B,mBAAoBxhK,KAAKmnP,mBAAmBx6M,OAAO,oBACzF,EACDmzH,eA7E6B,SA6EdliK,GACX,OAAQA,EAAKxE,MACT,IAAK,cACL,IAAK,gBACL,IAAK,UACL,IAAK,iBACL,IAAK,QACL,IAAK,qBACL,IAAK,oBACL,IAAK,oBACL,IAAK,WACD4G,KAAKypK,cACL,MACJ,IAAK,mBACL,IAAK,gBACDzpK,KAAKmnP,mBAAmBx6M,OAAO/uC,EAAKxE,KAAMwE,EAAKM,OAC/C,MACJ,IAAK,cACD8B,KAAK+mP,yBACL,MACJ,IAAK,qBACD,MACJ,IAAK,QACD/mP,KAAKmiD,SAASvkD,GACdoC,KAAKmnP,mBAAmBx1B,eAAe1jJ,YAAYu4K,KAA+B5oP,EAAKM,OACvF,MACJ,QACI8B,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,gBAAiBq0E,IACnC,UC1LIO,GAAc,SAAAnzN,GAAI,OAAIA,EAAKmrD,WAAa,CAAtB,EAClBioK,GAAc,SAACpzN,EAAM/1B,GACrB,IAAIy/E,EAAM1pD,EAAK+rD,UACXsnK,EAAcC,GAAU,IAAKtzN,GAC7B4U,EAAW+yC,GAAa9jD,SAAS55B,GAAQopP,EAAYzkO,IAAKykO,EAAY7vN,KAC1ExD,EAAK+qD,SAASn2C,EAAW,EAAG,GAC5B,IAAI,EAGA0+M,GAAU,KAAMtzN,GAFXpR,EADT,EACIA,IACK4U,EAFT,EAEIA,IAEA+vN,EAAS5rK,GAAa+B,EAAK96D,EAAK4U,GACpCxD,EAAKgrD,QAAQuoK,EAChB,EACGC,GAAkB,CAClB1nO,EAAG,SAAAkU,GAAI,OAAIA,EAAK2tD,WAAa,GAAK,EAAI,CAA/B,EACPsF,EAAG,SACHl5E,EAAG,cACH24E,EAAGygK,GACHrgK,EAAGqgK,GACH5jO,EAAG,UACH8jE,EAAG,WACHrrF,EAAG,WACHiB,EAAG,aACHq7B,EAAG,aACHgvD,EAAG,mBAEHi7B,IAAkB/8D,EAAAA,GAAAA,GAAO,CAAC,EzKwMnB+8D,GyKxM2C,CAClDziG,EAAG,SAACkU,EAAM/1B,GACN,IAAIgiF,EAAQjsD,EAAK2tD,WACH1B,GAAS,OACLpoD,SAAS55B,IAG3B+1B,EAAKirD,UAAUgB,EAAQ,IAAM,GAChC,EACD18D,EAAG,SAACyQ,EAAM/1B,GAEFA,EADiBqpP,GAAU,KAAMtzN,GAAMwD,KAEvCxD,EAAK+qD,SAAS/qD,EAAKmrD,WAAa,GAEpCnrD,EAAKgrD,QAAQ/gF,EAChB,EACDjC,EAAG,SAACg4B,EAAM/1B,GACN,IAAIwpP,EAAOzzN,EAAK2tD,YAAc,GAC9B3tD,EAAKirD,UAAUhhF,EAAQ,IAAMwpP,EAAO,GAAK,GAC5C,EACD/gK,EAAG0gK,GACHtgK,EAAGsgK,GACHngK,EAAG,SAACjzD,EAAM/1B,GACFA,EAAQ,GAGZ+1B,EAAKgrD,QAAQhrD,EAAK+rD,UAAY/rD,EAAKitD,SAAWppD,SAAS55B,GAC1D,EACD8P,EAAG,SAACimB,EAAM/1B,GACN,IAAIkyH,EAAcn8F,EAAK2rD,cACnB+nK,EAAcl+O,OAAOvL,GAAOyC,OAC5BinP,EAAiBn+O,OAAO89O,GAAU,IAAKtzN,GAAMwD,KAAK92B,OAClDkoC,EAAW/Q,SAASruB,OAAO2mH,GAAaprH,OAAO,EAAG4iP,EAAiBD,GAAezpP,GACtF+1B,EAAK0rD,YAAY92C,EACpB,IAGMg/M,GAAkB,SAAClhP,EAAM88G,GA6BhC,IA5BA,IAAIjgH,EAASigH,EAAWN,OAAOn0G,KAAKrI,GAChC41B,EAAQ,EACRryB,EAAM,EACN49O,EAAW,GACXC,EAAQ,WAER79O,GADAqyB,EAAQryB,GACM1G,EAAOmF,GAAGhI,OACxB,IATewjH,EASXx6G,EAAU85G,EAAWzD,SAASr3G,EAAI,GAAG/G,QAAQ,SAAU,IACvDgzD,GAVWuvD,EAUex6G,EAAQ,GAVR89O,GAAgBtjI,IAAiB,kBAAMA,CAAN,GAW/D2jI,EAAS1nP,KAAK,CACVe,MAAOwH,EAAI,EACXq/O,OAAQr+O,IAAYnG,EAAOmF,GAC3B0C,MAAO,CACHkxB,MAAOA,EACPryB,IAAKA,GAETP,QAASA,EACThD,KAAMnD,EAAOmF,GACbs/O,OAAQ,WACJ,IAAK,IAAIn7L,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC7EzX,EAAKyX,GAAQyC,UAAUzC,GAE3B,OAAOkyO,GAAS,WAAT,GAAU59O,EAAQ,IAAlB,OAAyB/L,GACnC,EACDw2H,OAAQ5R,GAAgB74G,EAAQ,KAAOmY,GAAAA,KACvC8yC,OAAQA,GAEf,EACQjsD,EAAI,EAAGA,EAAInF,EAAO7C,OAAQgI,IAC/Bo/O,IAEJ,OAAOD,CACV,EACGP,GAAY,SAAC59O,EAASsqB,EAAMi0N,GAC5B,IAAID,EAAS,CACTj6O,EAAG,CACC6U,IAAK,EACL4U,IAAK,MAETkvD,EAAG,CACC9jE,IAAK,EACL4U,IAAK,IAETsvD,EAAG,CACClkE,IAAK,EACL4U,IAAK,IAETjU,EAAG,CACCX,IAAK,EACL4U,IAAK,IAET0wN,GAAI,CACAtlO,IAAK,EACL4U,IAAK,IAAI30B,KAAKmxB,EAAK2rD,cAAe3rD,EAAKmrD,WAAa,EAAG,GAAGY,WAE9DkH,EAAG,CACCrkE,IAAK,EACL4U,IAAK,GAET6vD,EAAG,CACCzkE,IAAK,EACL4U,IAAK,IAETx7B,EAAG,CACC4mB,IAAK,EACL4U,IAAK,IAETv6B,EAAG,CACC2lB,IAAK,EACL4U,IAAK,IAETc,EAAG,CACC1V,IAAK,EACL4U,IAAK,IAET8vD,EAAG,CACC1kE,IAAK,EACL4U,IAAK,KAET1X,EAAG,CACC8C,IAAK,EACL4U,IAAK,IAGb,OAAOwwN,EAAOC,GAAiBv+O,IAAYs+O,EAAOG,OACrD,ECxJGC,GAAkB,CAAC,OAAQ,MAAO,QAAS,OAC3CC,GAAkB,CAAC,QAAS,UAAW,UAAW,gBAElDC,GAAU,MAYVvmK,GAAY,CACZwmK,kBAAmB,CAAC,OAAQ,OAAQ,YACpCC,WAfa,IAgBbF,QAASA,GACTG,SAfW,QAgBXC,0BAA2B,IAAI7lP,KAAK,KAAM,EAAG,GAC7C8lP,0BAA2B,WACvB,IAAIlnK,EAAU,IAAI5+E,KAClB,OAAO,IAAIA,KAAK4+E,EAAQ9B,cAAgB,GAAI8B,EAAQtC,WAAYsC,EAAQ1B,UAAW,GAAI,GAAI,GAC9F,CAH0B,GAI3B6oK,aAAc,CACV50N,KAAM,CACF60N,mBAAoB,WAChB,MAAO,YACV,EACDxvN,WAAY+uN,IAEhBj0N,KAAM,CACF00N,mBAAoB,WAChB,MAAO,OACV,EACDxvN,WAAYgvN,IAEhBj0N,SAAU,CACNy0N,mBAAoB,WAChB,IAAIC,EAcJ,OAbE,WACE,IAAIvuD,EAASzpH,GAAE,WAAW7C,KAAK,OAAQ,YACvCssH,EAAO/hK,IAAI,qBACP+hK,EAAO/hK,QACPswN,EAAkB,oBAEzB,CANC,GAOGA,IACDA,EAAkB,wBAEtB/mK,GAAU6mK,aAAax0N,SAASy0N,mBAAqB,WACjD,OAAOC,CACV,EACMA,CACV,EACDzvN,WAAY,GAAF,OAAM+uN,GAAoBC,KAExC,iBAAkB,CACdQ,mBAAoB,WAChB,MAAO,qBACV,EACDxvN,WAAY,GAAF,OAAM+uN,GAAN,CAAuB,QAAS,UAAW,cAG7DW,YAAa,CACT/0N,KAAM,YACNG,KAAM,YACNC,SAAU,sBAEd40N,mBAAoB,CAChBh1N,KAAM,OACNG,KAAM,OACNC,SAAU,kBAEd60N,qBAAsB,SAASj1N,EAAM5uB,GACjC,IAAIsE,EAAUq4E,GAAU6mK,aAAaxjP,GAAMyjP,qBAC3C,OAAOl0H,GAAAA,cAAgC3gG,EAAMtqB,EAChD,EACDw/O,uBAAwB,SAASxiP,GAC7B,IAAIstB,EAAO2gG,GAAAA,WAA6BjuH,GACxC,OAAO+0D,EAAAA,EAAAA,IAAOznC,GAAQA,OAAO,CAChC,EACDm1N,eAAgB,SAASvrK,EAAM3pD,GAC3B,OAAO,IAAIpxB,KAAK+6E,EAAM3pD,EAAQ,EAAG,GAAG8rD,SACvC,EACDqpK,WAAY,SAASzuF,EAAU/xH,EAAUgvB,GACrC,IAAKhvB,EACD,OAAOA,GAAY,KAEvB,IAAK+xH,GAAYj/F,MAAMi/F,EAASllG,WAAY,CACxC,IAAI6N,EAAM,IAAIzgE,KAAK,MACnB83J,EAAW,IAAI93J,KAAKygE,EAAIqc,cAAerc,EAAI6b,WAAY7b,EAAIyc,UAC9D,CACD,IAAIx8E,EAAS,IAAIV,KAAK83J,EAASruG,WAC3B+8L,EAAatnK,GAAU6mK,aAAahxL,GAKxC,OAJAhL,EAAAA,EAAAA,IAAKy8L,EAAWhwN,YAAa,WACzB,IAAIiwN,EAAgBvnK,GAAUwnK,qBAAqBxpP,MACnDwD,EAAO+lP,EAAcn1H,QAAQvrF,EAAS0gN,EAAc30L,UACvD,IACMpxD,CACV,EACDimP,uBAAwB,SAASC,GAC7B,IAEI/gP,EAFAghP,EAAe,EACfC,EAAuB,EAE3B,IAAKjhP,EAAI,EAAGA,EAAI+gP,EAAa/oP,SAAUgI,EAC/B+gP,EAAa/gP,GAAGhI,OAASipP,IACzBD,EAAehhP,EACfihP,EAAuBF,EAAa/gP,GAAGhI,QAG/C,OAAOgpP,CACV,EACD9hI,oBAAqB,SAAShwD,GAC1B,OAAOuwD,GAAAA,oBAAqCvwD,EAC/C,EACDiwD,kBAAmB,SAASjwD,GACxB,OAAOuwD,GAAAA,kBAAmCvwD,EAC7C,EACDgyL,eAAgB,SAAShyL,EAAQsqD,EAAYE,GACzC,IAAIkJ,EApHU,SAAS1zD,GAC3B,IAAIgvB,SAAoBhvB,EACxB,MAAI,WAAagvB,EACN,SAEP,WAAaA,QAAc,IAAWhvB,EAAOxyD,KACtCwyD,EAAOxyD,KAEX,IACV,CA2G0BykP,CAAgBjyL,GAC/B3jC,EAAQ,EACPq3F,IAAgBvpC,GAAU6lC,oBAAoB0D,KAC/Cr3F,EAAQ8tD,GAAUynK,uBAAuBtnI,IAE7C,IAAI4nI,EAAc,IAAIjnP,KAAK,KAAMoxB,EAAO,GAAI,GAAI,GAAI,GAAI,KACxD,IAAKq3F,GAAgBvpC,GAAU8lC,kBAAkByD,GAAe,CAC5D,IAAIt3F,EAAO81N,EAAY/pK,UAAY+pK,EAAY7oK,SAAWc,GAAUynK,uBAAuBpnI,GAC3F0nI,EAAY9qK,QAAQhrD,EACvB,CACD,OAAO81N,CACV,EACDC,cAAe,SAAS/1N,GACpBA,EAAKg2N,WAAW,GAChBh2N,EAAKkwG,gBAAgB,EACxB,GAELniD,GAAUwnK,qBAAuB,CAC7B3rK,KAAM,CACFjpB,OAAQ,cACRw/D,OAAQ,cACRnsC,UAAW,SAAS/pF,EAAO+1B,GACvB,IAAIi2N,EAAa,IAAIpnP,KAAKmxB,EAAKyhC,WAE/B,OADAw0L,EAAWvqK,YAAYzhF,GAChBkqH,GAAAA,OAAwB8hI,EAAY,OAC9C,EACDC,gBAAY,EACZC,cAAU,GAEdzsK,IAAK,CACD/oB,OAAQ,UACRw/D,OAAQ,UACRnsC,UAAW,SAAS/pF,EAAO+1B,GACvB,IAAIi2N,EAAa,IAAIpnP,KAAKmxB,EAAKyhC,WAE/B,OADAw0L,EAAWjrK,QAAQ/gF,GACZkqH,GAAAA,OAAwB8hI,EAAY,IAC9C,EACDC,WAAY,EACZC,cAAU,GAEdl2N,MAAO,CACH0gC,OAAQ,WACRw/D,OAAQ,WACRnsC,UAAW,SAAS/pF,GAChB,OAAOkqH,GAAAA,gBAAiClqH,EAC3C,EACDisP,WAAY,EACZC,SAAU,IAEdlqK,MAAO,CACHtrB,OAAQ,WACRw/D,OAAQ,WACRnsC,UAAW,SAAS/pF,GAChB,OAAOkqH,GAAAA,OAAwB,IAAItlH,KAAK,EAAG,EAAG,EAAG5E,GAAQ,OAC5D,EACDisP,WAAY,EACZC,SAAU,IAEdhqK,QAAS,CACLxrB,OAAQ,aACRw/D,OAAQ,aACRnsC,UAAW,SAAS/pF,GAChB,OAAOkqH,GAAAA,OAAwB,IAAItlH,KAAK,EAAG,EAAG,EAAG,EAAG5E,GAAQ,SAC/D,EACDisP,WAAY,EACZC,SAAU,IAEd/pK,QAAS,CACLzrB,OAAQ,aACRw/D,OAAQ,aACRnsC,UAAW,SAAS/pF,GAChB,OAAOkqH,GAAAA,OAAwB,IAAItlH,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG5E,GAAQ,SAClE,EACDisP,WAAY,EACZC,SAAU,IAEd99N,aAAc,CACVsoC,OAAQ,kBACRw/D,OAAQ,kBACRnsC,UAAW,SAAS/pF,GAChB,OAAOkqH,GAAAA,OAAwB,IAAItlH,KAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG5E,GAAQ,cACrE,EACDisP,WAAY,EACZC,SAAU,MAGlB,UCvNqBC,GAAAA,WACjB,WAAYjxP,EAAMurP,EAAQvnP,IAAS,eAC/B4C,KAAK+oC,SAAW,KAChB/oC,KAAKw6E,WAAa,KAClBx6E,KAAKsqP,aAAe,KACpBtqP,KAAK2kP,OAASA,EACd3kP,KAAK5G,KAAOA,EACZ4G,KAAK5C,QAAUA,GAAW,CAAC,CAC9B,+CACD,SAAgBo9E,GACZx6E,KAAKsqP,aAAev5K,GAAE,SAASpC,SAAS6L,EAC3C,gCACD,SAAgBxgB,GACZ,IACkBswL,EAEdtqP,KAFAsqP,aACY9vK,EACZx6E,KADAw6E,WAEJ8vK,EAAeA,EAAat7K,YAAYhV,GAAYA,EAAS2U,SAAS6L,EACzE,8BACD,WACI,KAAM,iBACT,wBACD,WACI,KAAM,iBACT,4BACD,WACI,QAASx6E,KAAK+oC,QACjB,2BACD,WACI,IACY47M,EAER3kP,KAFA2kP,OAGJ,OADI3kP,KADA5C,QAEWyjD,UAAY8jM,EAAOh4M,OAAO,WAC5C,4BACD,WACI,KAAM,iBACT,8BACD,WACI,OAAO3sC,KAAKmpK,eAAiBnpK,KAAKuqP,aACrC,wBACD,WACI,IACcxhN,EAEV/oC,KAFA+oC,SACcuhN,EACdtqP,KADAsqP,aAEAvhN,IACAA,EAASwD,QAAUxD,EAASwD,UAAYxD,EAASrrC,SACjDsC,KAAK+oC,SAAW,MAEpBuhN,GAAgBA,EAAa5sP,QAChC,uBACD,WACI,IAAI88E,EAAa1iE,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKw6E,WAEvF,GADAx6E,KAAKw6E,WAAaA,EACdx6E,KAAKmpK,aAAc,CACnB,IAAI,EAGAnpK,KAAKwqP,UAFKzhN,EADd,EACIA,SACUixB,EAFd,EAEIA,SAEJh6D,KAAK+oC,SAAWA,EAChB/oC,KAAKyqP,cAAc1hN,EAAUixB,EAChC,MACGh6D,KAAK0qP,gBAAgBlwK,EAE5B,uBACD,WAII,OAHIx6E,KAAK2qP,iBACL3qP,KAAKsuC,WAEAtuC,KAAK+oC,QACjB,OAvEgBshN,GCUAO,GAAAA,SAAAA,iCACjB,WAAYxxP,EAAMurP,EAAQvnP,GAAS,6BAC/B,cAAMhE,EAAMurP,EAAQvnP,IACfuzC,gBAAkB,KAFQ,CAGlC,6CACD,SAAc5H,GACV,IACY47M,EACR3kP,KADA2kP,OAEJ57M,EAAS4D,OAAO,WAAW,SAAA1jC,GACvB,IAAI4hP,GACA,QAAUA,EAAwBlG,EAAOmG,8BAA2B,IAAWD,GAAyBA,EAAsBpsP,KAAKkmP,KAGrIA,EAAOh4M,OAAO,sBAFZg4M,EAAOoG,aAAa9hP,EAG3B,IACDs1D,EAAAA,EAAAA,GAAgBx1B,EAASixB,WAAY,aAAa,SAAA/wD,GAC1C07O,EAAO3qL,WAAWiV,GAAG,sBACrBhmE,EAAEkzD,gBAET,GACJ,wBACD,WACI,IACYwoL,EACR3kP,KADA2kP,OAEA3qL,EAAW+W,GAAE,SACb3zE,EAAU4C,KAAKgrP,cACnBhrP,KAAKirP,gBAAgBjxL,GACrB,IAAIjxB,EAAW47M,EAAOxhF,iBAAiBnpG,EAAU2uI,IAAQljJ,EAAAA,GAAAA,GAAO,CAAC,EAAGroD,EAAS,CACzE0gD,YAAa,CACT,aAAcssE,GAAAA,OAhCT,oCAoCb,OADApqH,KAAKkrP,cAAcvG,EAAO3qL,WAAYA,EAAU58D,EAAQyjD,SACjD,CACHmZ,SAAUA,EACVjxB,SAAUA,EAEjB,4BACD,WACI,IACY47M,EACR3kP,KADA2kP,OAEA9jM,EAAU7gD,KAAKmpK,aAEf/rK,EAAU,CACV+gD,mBAAmB,EACnBimJ,mBAAmB,EACnBD,oBAAoB,EACpBoE,cAAc,EACd/iL,SANam/N,EAAOh4M,OAAO,YAO3BkU,QAASA,GAGb,OADA7gD,KAAKmrP,aAAa/tP,GACXA,CACV,2BACD,WACI,IACYunP,EACR3kP,KADA2kP,OAEJ,OAAO,2DAAsBA,EAAOh4M,OAAO,qBAC9C,8BACD,SAAcy+M,EAASpxL,EAAUuV,GAC7B67K,EAAQn9K,YAlEsB,mCAkEuBsB,GACjDvV,GACAA,EAASqU,YAAY,aAAaD,SArEV,2BAuE/B,gCACD,WACI,OAAOpuE,KAAK2kP,OAAOh4M,OAAO,4BAA8B3sC,KAAK2wC,eAChE,6BACD,SAAavzC,GACJ4C,KAAKqrP,oBACNjuP,EAAQoiB,SAAWxf,KAAK2kP,OAAO75E,qBAAqB,0BACpD9qK,KAAK2wC,gBAAkB3wC,KAAK2kP,OAAOh4M,OAAO,0BAEjD,uBACD,WAEI,IADmB,sDACD,CACd,IACYg4M,EAER3kP,KAFA2kP,OACU57M,EACV/oC,KADA+oC,SAEAqiN,EAAUzG,EAAO3qL,WACjB58D,EAAU4C,KAAKgrP,cACnB,OAASjiN,QAAY,IAAWA,GAAoBA,EAAS4D,OAAOvvC,GACpE4C,KAAKkrP,cAAcE,EAAS,OAASriN,QAAY,IAAWA,OAAW,EAASA,EAASixB,WAAY58D,EAAQyjD,QAChH,CACJ,OA1FgB+pM,CAAuBP,ICLxC,GAGAryK,GAAAA,OAFKrD,GADT,GACIA,IACKG,GAFT,GAEIA,IAEAw2K,GAA0B32K,IAAOG,GACjCy2K,GAAW,SAAS/wO,GACpB,IAAI6/G,EACJ,IACIA,EAAQ,CACJ99F,MAAO/hB,EAAMgxO,eACbthP,IAAKsQ,EAAMixO,aAOlB,CALC,MAAOxiP,GACLoxH,EAAQ,CACJ99F,MAAO,EACPryB,IAAK,EAEZ,CACD,OAAOmwH,CACV,EACGqxH,GAAW,SAASlxO,EAAOhQ,GAC3B,IAAIlF,EAAOu3D,EAAAA,EAAAA,UACX,GAAKv3D,EAAK26D,SAASzlD,IAAWlV,EAAK26D,SAASzlD,EAAMmtC,cAAckB,MAGhE,IACIruC,EAAMgxO,eAAiBhhP,EAAS+xB,MAChC/hB,EAAMixO,aAAejhP,EAASN,GACpB,CAAZ,MAAOjB,GAAK,CACjB,EAYD,GAXY,SAASuR,EAAOhQ,GACxB,IAAI8/K,EAAQxyK,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAExE,GADA0C,EAAQu2D,GAAEv2D,GAAO5gB,IAAI,KAChBy0D,EAAAA,EAAAA,IAAU7jD,GACX,OAAO+gP,GAAS/wO,IAEf8vK,GAASghE,IAA2BzuL,EAAAA,EAAAA,iBAA4BriD,KAAWA,GAGhFkxO,GAASlxO,EAAOhQ,EACnB,ECpCGmhP,GAAa,IACbC,GAAez/L,GAAAA,EAAAA,QAAc,CAC7BpJ,KAAM,SAAShjD,GACXC,KAAKosD,OAASu/L,IACdlmM,EAAAA,GAAAA,GAAOzlD,KAAMD,EAChB,EACDoL,KAAM,SAAS/C,GACX,IAAK0P,UAAUnX,OACX,OAAOX,KAAK6rP,MAEhB7rP,KAAK6rP,MAAQzjP,CAChB,EACDzB,KAAMmb,GAAAA,KACN5jB,MAAO4jB,GAAAA,KACPgqO,SAAUhqO,GAAAA,KACVxgB,OAAQwgB,GAAAA,KACRiqO,qBAAsB,SAASnuP,EAAMmC,GACjC,IAAIisP,EAAaC,EAAeC,EAChCnsP,EAASA,GAAU,CAAC,EACpB,IAAIosP,EAAmBnuP,OAAOgK,UAAU6X,eAAephB,KAAKb,EAAM,SAAW,QAAU,OAKvF,OAJAA,EAAKuuP,GAAoB,QAAUH,EAAcjsP,EAAO2B,WAAQ,IAAWsqP,EAAcA,EAAcpuP,EAAKuuP,GAC5GvuP,EAAK2+B,MAAQ,QAAU0vN,EAAgBlsP,EAAOw8B,aAAU,IAAW0vN,EAAgBA,EAAgBruP,EAAK2+B,MACxG3+B,EAAK+C,OAAS,QAAUurP,EAAiBnsP,EAAOY,cAAW,IAAWurP,EAAiBA,EAAiBtuP,EAAK+C,OAC7G/C,EAAKuD,MAAQvD,EAAKuD,MAAQ,EACnBvD,CACV,EACD4oC,MAAO1kB,GAAAA,KACPqlB,MAAOrlB,GAAAA,KACPizB,MAAO,SAAS5zC,GAEZ,OADAA,EAAQA,GAAS,EACVnB,KAAKmL,OAAO4pC,MAAM5zC,EAAQ,EACpC,EACDirP,WAAY,WACR,OAAO,CACV,EACDC,cAAe,SAAShhP,EAAOihP,EAAoBx7L,GAC/C,OAAOw7L,EAAqBtsP,KAAKusP,iBAAiBlhP,EAAO,EAAGylD,GAAQ9wD,KAAKwsP,kBAAkBnhP,EAAO,EAAGylD,EACxG,EACDy7L,iBAAkBzqO,GAAAA,KAClB0qO,kBAAmB1qO,GAAAA,KACnBouH,QAASpuH,GAAAA,OAEF2qO,GAAgBb,GAAavgO,QAAQ,CAC5ClgB,KAAM2W,GAAAA,KACNxgB,OAAQ,WACJ,OAAO,CACV,EACDqF,KAAM,WACF,MAAO,EACV,EACDzI,MAAO,WACH,MAAO,EACV,EACD62C,MAAO,WACH,OAAO,CACV,EACD+2M,SAAU,WACN,MAAO,EACV,EACDO,cAAe,WACX,OAAO,CACV,EACDn8G,QAAS,WACL,OAAO,CACV,IAEMw8G,GAAWd,GAAavgO,QAAQ,CACvC1kB,KAAM,WACF,OAAQ3G,KAAKosD,SAAWu/L,GAAa3rP,KAAKosD,OAASpsD,KAAK2sP,UAAY3sP,KAAKmL,OAAOxE,MACnF,EACDzI,MAAO,WACH,OAAO8B,KAAKosD,OAASpsD,KAAKmL,OAAOjN,OACpC,EACD4tP,SAAU,WACN,OAAO9rP,KAAKosD,OAASpsD,KAAKmL,OAAO2gP,UACpC,EACDxqP,OAAQ,SAAS1D,GACb,IAAI8D,EAAM1D,OAAOgK,UAAU6X,eAAephB,KAAKb,EAAM,SAAWA,EAAKM,MAAQN,EAAK+I,KAClF,IAAKjF,IAAQA,EAAIf,SAAW/C,EAAK+C,OAC7B,OAAO,EAEX,GAAI/C,EAAK2+B,MACL,OAAOv8B,KAAKmL,OAAO7J,OAAOtB,KAAK+rP,qBAAqBnuP,EAAM,CACtD2+B,MAAO3+B,EAAK2+B,MAAQ,KAG5B,IAAIu0B,EAAOpvD,EAAI,GACXkrP,EAAOlrP,EAAIof,UAAU,GAEzB,OADA9gB,KAAK6sP,eAAe/7L,EAAMlzD,GACnBoC,KAAK8sP,YAAc9sP,KAAKmL,OAAO7J,OAAOtB,KAAK+rP,qBAAqBnuP,EAAM,CACzE8D,IAAKkrP,EACLjsP,OAAQ/C,EAAK+C,OAAS,KACpB,EAAIX,KAAKsB,OAAOtB,KAAK+rP,qBAAqBnuP,EAAM,CAClD8D,IAAKkrP,EACLjsP,OAAQ/C,EAAK+C,OAAS,IAE7B,EACDwmC,MAAO,SAASvpC,GACZoC,KAAK6sP,eAAelB,GAAY/tP,GAChCoC,KAAKmL,OAAOg8B,MAAMnnC,KAAK+rP,qBAAqBnuP,GAC/C,EACD4oC,MAAO,WACHxmC,KAAK8sP,WAAU,GACf9sP,KAAKmL,OAAOq7B,OACf,EACDqmN,eAAgB,SAAS/7L,EAAMlzD,GAE3B,GADAoC,KAAK8sP,WAAU,GACV9sP,KAAK+sP,WAAWj8L,EAAMlzD,GAA3B,CAGA,IAAIovP,EAAel8L,IAAS66L,GAAa3rP,KAAK2sP,SAAW77L,EACzDlzD,EAAKqvP,SAAWrvP,EAAKqvP,SAASnsO,UAAU,EAAGljB,EAAKuD,OAAS6rP,EAAepvP,EAAKqvP,SAASnsO,UAAUljB,EAAKuD,MAAQ,GAC7GnB,KAAK8sP,WAAU,GACf9sP,KAAKosD,OAAS0E,CAJb,CAKJ,EACDg8L,UAAW,SAAS5uP,GAChB,IAAK4Z,UAAUnX,OACX,QAASX,KAAKktP,YAElBltP,KAAKktP,cAAgBhvP,CACxB,EACD62C,MAAO,SAAS5zC,GACZ,OAAOnB,KAAKosD,SAAWu/L,GAAaxqP,GAAS,EAAInB,KAAKmiD,SAAShhD,EAClE,EACD4rP,WAAY,SAASj8L,EAAMlzD,GACvB,OAAIkzD,IAAS66L,IAGN3rP,KAAKmtP,SAASr8L,EAAMlzD,EAC9B,EACDuvP,SAAU,SAASr8L,EAAMlzD,GACrB,IAAIwvP,EAAeptP,KAAKotP,aACxB,OAAIA,aAAwBx1N,OACjBw1N,EAAah3O,KAAK06C,IAEzBjC,EAAAA,EAAAA,IAAWu+L,GACJA,EAAat8L,EAAMlzD,EAAKuD,MAAOvD,EAAKqvP,UAE3CpoP,MAAMC,QAAQsoP,GACPA,EAAa7nP,SAASurD,GAE1Bs8L,IAAiBt8L,CAC3B,EACDs7L,WAAY,SAAS/gP,GACjB,OAAO,IAAMA,EAAQrL,KAAK8sP,YAAc9sP,KAAKmL,OAAOihP,WAAW/gP,EAAQ,EAC1E,EACDkhP,iBAAkB,SAASlhP,EAAOlK,EAAO2vD,GACrC,OAAI3vD,GAASkK,EACFlK,EAEJnB,KAAKmL,OAAOohP,iBAAiBlhP,EAAOlK,EAAQ,EAAG2vD,IAAS3vD,EAAQ,CAC1E,EACDqrP,kBAAmB,SAASnhP,EAAOlK,GAC/B,OAAIA,GAASkK,EAAQ,EACVA,EAEJrL,KAAKmL,OAAOqhP,kBAAkBnhP,EAAOlK,EAAQ,IAAMA,EAAQ,CACrE,EACD+uI,QAAS,SAAStyI,GACd,OAAOoC,KAAKmtP,SAASntP,KAAKosD,OAAQxuD,IAASoC,KAAKmL,OAAO+kI,QAAQlwI,KAAK+rP,qBAAqBnuP,GAC5F,IAEMyvP,GAAeX,GAASrhO,QAAQ,CACvCntB,MAAO,WACH,OAAO8B,KAAKmL,OAAOjN,OACtB,EACDoD,OAAQ,SAAS1D,GACb,IAAI0vP,EAAmBtvP,OAAOgK,UAAU6X,eAAephB,KAAKb,EAAM,SAC9D8D,EAAM4rP,EAAmB1vP,EAAKM,MAAQN,EAAK+I,KAC/C,IAAKjF,EAAIf,SAAW/C,EAAK+C,OACrB,OAAO,EAEX,GAAI/C,EAAK2+B,OAAS+wN,EACd,OAAOttP,KAAKmL,OAAO7J,OAAOtB,KAAK+rP,qBAAqBnuP,EAAM,CACtD2+B,MAAO3+B,EAAK2+B,OAAS3+B,EAAK2+B,MAAQ,KAG1C,IAAIu0B,EAAOpvD,EAAI,GACXkrP,EAAOlrP,EAAIof,UAAU,GACzB9gB,KAAK6sP,eAAe/7L,GACpB,IAAIy8L,EAAWvtP,KAAK+sP,WAAWj8L,GAAQ9wD,KAAK+rP,qBAAqBnuP,EAAM,CACnE8D,IAAKkrP,EACLjsP,OAAQ/C,EAAK+C,OAAS,IACrB/C,EACL,OAAOoC,KAAKmL,OAAO7J,OAAOisP,GAAY,CACzC,EACDpmN,MAAO,SAASvpC,GACZoC,KAAK8sP,WAAU,GACf9sP,KAAKmL,OAAOg8B,MAAMnnC,KAAK+rP,qBAAqBnuP,GAC/C,EACDivP,eAAgB,SAAS/7L,GACrB9wD,KAAK8sP,UAAU9sP,KAAKmtP,SAASr8L,GAChC,EACDq8L,SAAU,SAASr8L,GACf,OAAOA,IAAS9wD,KAAK2sP,QACxB,EACD53M,MAAO,SAAS5zC,GAEZ,OADAA,EAAQA,GAAS,EACVnB,KAAKmL,OAAO4pC,MAAM5zC,EAAQ,EACpC,EACDorP,iBAAkB,SAASlhP,EAAOlK,EAAO2vD,GACrC,OAAI3vD,GAASkK,GAASylD,IAAS9wD,KAAK2sP,SACzBxrP,EAEPkK,IAAUlK,EAAQ,GAAKnB,KAAK8sP,YACrBzhP,EAEJrL,KAAKmL,OAAOohP,iBAAiBlhP,EAAOlK,EAAQ,EAAG2vD,EACzD,EACD07L,kBAAmB,SAASnhP,EAAOlK,GAC/B,OAAIA,GAASkK,EAAQ,EACV,EAEJrL,KAAKmL,OAAOqhP,kBAAkBnhP,EAAOlK,EAAQ,EACvD,EACD+uI,QAAS,SAAStyI,GACd,OAAOoC,KAAKmL,OAAO+kI,QAAQlwI,KAAK+rP,qBAAqBnuP,GACxD,ICzND4vP,GAAcroG,GAAAA,KACdsoG,GAAwB,qBAKPC,GAAAA,SAAAA,kIACjB,WACI,IAAI1zL,EAAW+W,GAAE,UAAU3C,SANC,wBAMuCzoE,OAAOorE,GAAE,UAAU3C,SAJlE,WAIkGA,SAL5F,kBAQ1B,OAFApuE,KAAKirP,gBAAgBjxL,GACrBh6D,KAAKgsC,QAAO,GACL,CACHjD,SAAUixB,EACVA,SAAUA,EAEjB,2BACD,WAII,OADIh6D,KADA2kP,OAEUgJ,uBACjB,8BACD,SAAc5kN,EAAUgwM,GACpB,IACY4L,EACR3kP,KADA2kP,OAEAiJ,EAAajJ,EAAOnmF,KACxBjgG,EAAAA,EAAAA,GAAgBw6K,EAASv1F,GAAagqG,GAAaI,IAAa,SAAA3kP,GAC5DA,EAAEkzD,iBACE,UAAYlzD,EAAE08I,aACdg/F,EAAOkJ,mBAAmB5kP,EAEjC,IACDs1D,EAAAA,EAAAA,GAAgBw6K,EAASv1F,GAAa0jB,GAAO0mF,IAAa,SAAA3kP,GAAC,OAAI07O,EAAOkJ,mBAAmB5kP,EAA9B,GAC9D,8BACD,SAAcmiP,EAAS77K,GACnB67K,EAAQn9K,YA/ByB,uBA+BuBsB,EAC3D,uBACD,WACI,IAAIghH,EAAWz4K,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,IAC1Ey4K,IAAD,sDACA,IACYo0D,EAER3kP,KAFA2kP,OACU57M,EACV/oC,KADA+oC,SAEAqiN,EAAUzG,EAAO3qL,WACjBuV,EAAYvvE,KAAKmpK,aACrBpgI,GAAYA,EAASklC,YAAYw/K,IAAwBl+K,GACzDvvE,KAAKkrP,cAAcE,EAAS77K,EAC/B,OA3CgBm+K,CAAoBrD,ICFrCyD,GAA8B,2BACbC,GAAAA,SAAAA,wIACjB,SAAchlN,EAAUixB,GACpB,IACY2qL,EACR3kP,KADA2kP,OAEJpmL,EAAAA,EAAAA,GAAgBvE,EAAUz9B,IAAO,WAC7BooN,EAAO3qL,WAAWoU,SAAS0/K,GAC9B,IACDvvL,EAAAA,EAAAA,GAAgBvE,EAAU9vD,IAAK,WAC3By6O,EAAO3qL,WAAWqU,YAAYy/K,GACjC,IACDvvL,EAAAA,EAAAA,GAAgBvE,EAAUi6J,IAAgB,SAAAhrN,GACtCA,EAAE83D,iBACL,GACJ,wBACD,WACI,IACY4jL,EACR3kP,KADA2kP,OAEA3qL,EAAW+W,GAAE,SAOjB,OANA/wE,KAAKirP,gBAAgBjxL,GAMd,CACHA,SAAUA,EACVjxB,SAPW47M,EAAOxhF,iBAAiBnpG,EAAU2uI,IAAQljJ,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAK5C,QAAS,CAC9E45M,sBAAsB,EACtBxxL,SAAUxlB,KAAKwxN,cACf/5K,mBAAoBz3C,KAAKguP,2BAA2BrJ,MAM3D,2CACD,SAA2BA,GACvB,OAAOl/L,EAAAA,GAAAA,GAAO,CAAC,EAAGk/L,EAAOh4M,OAAO,sBAAuB,CACnD61H,cAAe,CAAC,YAEvB,uBACD,WACI,IAAIyrF,GAAY,sDAIhB,OAHIjuP,KAAK+oC,UACL/oC,KAAK+oC,SAAS4D,OAAO,WAAY3sC,KAAKwxN,eAEnCy8B,CACV,2BACD,WAII,OADIjuP,KADA2kP,OAEUh4M,OAAO,UACxB,4BACD,WAEI,YADsB,IAAW3sC,KAAK5C,QAAQooB,SAEnCxlB,KAAK+oC,SAAW/oC,KAAK+oC,SAAS4D,OAAO,YAAc3sC,KAAK5C,QAAQooB,SAEhExlB,KAAK2kP,OAAOh4M,OAAO,WAEjC,OAxDgBohN,CAAqB1D,ICsB1C,SAAS6D,GAAqBC,EAAe98K,GACzC,IAAK,IAAM88K,EAAc/sP,QAAQiwE,GAC7B,MAAM/xD,GAAAA,MAAa,QAAS+xD,GAEhC88K,EAAc/tP,KAAKixE,EACtB,KAKoB+8K,GAAAA,WACjB,WAAYzJ,EAAQ0J,IAAoB,eACpCruP,KAAK69O,QAAU,GACf79O,KAAKquP,mBAAqBA,EAC1BruP,KAAK2kP,OAASA,CACjB,kDACD,SAAmB9G,GAAS,WACpB1xJ,EAAQ,GACZ,OAAO0xJ,EAAQ95O,KAAI,SAAAmnB,GACf,IAhDaojO,EAgDTC,EAAiB,kBAAoBrjO,EACpCqjO,IAjDQD,EAkDOpjO,EAjD5B,WACI,IAAKojO,GAAc,kBAAoBA,GAAczpP,MAAMC,QAAQwpP,GAC/D,MAAMhvO,GAAAA,MAAa,QAF3B,IAKA,WACI,KAAM,SAAUgvO,GACZ,MAAMhvO,GAAAA,MAAa,QAF3B,IAKA,WAII,GAAI,kBADAgvO,EADAl1P,KAGA,MAAMkmB,GAAAA,MAAa,QAL3B,IAQA,WACI,IACcqT,EACV27N,EADA37N,SAEA,aAAc27N,GAAc,UAAY37N,GAAY,WAAaA,IACjE27N,EAAW37N,SAAW,QAL9B,KAiCQ,IAAI67N,EAAkBD,GAhBlC,SAAgCn1P,EAAMq1P,GAClC,QAASA,EAAsBzyP,MAAK,SAAAghB,GAAI,OAAIA,EAAK5jB,OAASA,CAAlB,GAC3C,CAcmDs1P,CAAuBxjO,EAAO9xB,KAAM,EAAKi1P,oBACjF,GAAIG,EAAiB,CACjB,IAAIG,EAAoB,EAAKN,mBAAmBryP,MAAK,SAAAgb,GACjD,IACU5d,EACN4d,EADA5d,KAEJ,OAAOA,IAAS8xB,GAAU9xB,IAAS8xB,EAAO9xB,IAC7C,IACD,IAAKu1P,EACD,MAAMrvO,GAAAA,MAAa,QAAS,EAAKqlO,OAAOnmF,KAAMtzI,GAGlD,OADAgjO,GAAqB/hK,EAAOjhE,GACrByjO,CACV,CACG,IACUv1P,EACN8xB,EADA9xB,KAGJ,OADA80P,GAAqB/hK,EAAO/yF,IACrBqsD,EAAAA,GAAAA,GAAOv6B,EAAQ,CAClB0jO,KAAMb,IAGjB,GACJ,8BACD,SAAcc,GACV,IACUD,EAGNC,EAHAD,KACSxxP,EAETyxP,EAFAzxP,QAGA8tB,EAAS,IAAI0jO,EADbC,EADAz1P,KAEwB4G,KAAK2kP,OAAQvnP,GAEzC,OADA4C,KAAK69O,QAAQz9O,KAAK8qB,GACXA,CACV,+BACD,SAAe2yN,EAASrjK,EAAYs0K,GAAgB,WAC5CC,EAAoB,KAcxB,OAbkBlR,EAAU79O,KAAKgvP,mBAAmBnR,GAAW79O,KAAKquP,oBACxD3tP,SAAQ,SAAAmuP,GAChB,IAAI,EAEAA,EADAl8N,eADJ,MACyB,QADzB,KAGiBm8N,GACb,EAAKG,cAAcJ,GAAavgN,QAC5BygN,EAAoBA,GAAqBh+K,GAAE,SAAS3C,SAjG/B,mCAkGrB,WAAa0gL,EAAiBt0K,EAAWlzE,QAAQynP,GAAqBv0K,EAAW70E,OAAOopP,GACjFA,GAGlB,IACMA,CACV,sBACD,WACI/uP,KAAK69O,QAAQn9O,SAAQ,SAAAwqB,GAAM,OAAIA,EAAOqhB,SAAX,IAC3BvsC,KAAK69O,QAAU,EAClB,0BACD,SAAUqR,GACN,IAAIhkO,EAASlrB,KAAK69O,QAAQ7hP,MAAK,SAAA0oK,GAI3B,OADIA,EADAtrK,OAEY81P,CACnB,IACD,OAAOhkO,GAAUA,EAAO6d,QAC3B,mCACD,SAAmB80M,EAASrjK,GACxB,OAAOx6E,KAAKinP,eAAepJ,EAASrjK,EAAY,QACnD,oCACD,SAAoBqjK,EAASrjK,GACzB,OAAOx6E,KAAKinP,eAAepJ,EAASrjK,EAAY,SACnD,8BACD,SAAc2R,GACVnsF,KAAK69O,QAAQn9O,SAAQ,SAAAwqB,GACZihE,IAAU,IAAMA,EAAM/qF,QAAQ8pB,EAAO9xB,OACtC8xB,EAAO8gB,QAEd,GACJ,OAzFgBoiN,GCvCjB3wO,IAAYs/C,EAAAA,EAAAA,MAmBZoyL,GAA8B,2BAG9BC,GAAgBxqD,GAAAA,QAAe,CAC/BhnC,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BktM,aAAc,GACdlrD,oBAAoB,EACpBC,mBAAmB,EACnBkrD,uBAAwB,EACxBC,wBAAwB,GAE/B,EACDzxF,qBAAsB,WAClB,IAAIw9B,EAAY7hL,KAChB,OAAOzZ,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WAGJ,MADsB,YADLsB,GAAAA,OAC8Bv+E,WAAa,UAAU2c,KAAKqH,GAAUm3B,UAExF,EACDx3C,QAAS,CACLoyP,UAAU,IAEf,CACC94K,OAAQ,WACJ,OAAOwmH,GAAW5B,EACrB,EACDl+L,QAAS,CACLkyP,uBAAwB,EACxBC,wBAAwB,IAE7B,CACC74K,OAAQ,WACJ,OAAO+mH,GAAUnC,EACpB,EACDl+L,QAAS,CACLkyP,uBAAwB,KAGnC,EACDhoF,cAAe,WACX,OAAO,CACV,EACD/jE,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAlDE,mBAmDrB,EACDk6F,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAKy2L,iBACLz2L,KAAKyvP,0BACLzvP,KAAK0vP,eACR,EACDj5D,eAAgB,WACZz2L,KAAK48M,UAAY7rI,GAAE,SAAS3C,SA1DF,4BA2D1BpuE,KAAKg6D,WAAWr0D,OAAO3F,KAAK48M,UAC/B,EACD6yC,wBAAyB,WACrBzvP,KAAK28M,UAAY5rI,GAAE,SAAS3C,SA7DF,4BA8D1BpuE,KAAK48M,UAAUj3M,OAAO3F,KAAK28M,UAC9B,EACD+yC,cAAe,YACPnkG,MAAgBvrJ,KAAK2sC,OAAO,aAAgB3sC,KAAK2sC,OAAO,gBAGxD3sC,KAAK2vP,wBAFL3vP,KAAK4vP,2BAIZ,EACDA,0BAA2B,WACvB,IAAIC,EAAwB7vP,KAAK2sC,OAAO,0BACxC3sC,KAAK8vP,YAAc/+K,GAAE,SAAS3C,SAxEP,yBAyEvBpuE,KAAK28M,UAAUh3M,OAAO3F,KAAK8vP,aAC3B,IAAK,IAAInnP,EAAI3I,KAAK2sC,OAAO,0BAA2BhkC,GAAK,IAAKA,EAAG,CAC7D,IAAIonP,EAAWh/K,GAAE,SAAS3C,SAAS+gL,IAA6B/gL,SAAS+gL,GAA8BxmP,GACnGknP,GACAE,EAASpqP,OAAOorE,GAAE,SAAS3C,SA3EH,mCA6E5BpuE,KAAK8vP,YAAYnqP,OAAOoqP,EAC3B,CACJ,EACDJ,sBAAuB,WACnB,IAAIN,EAAervP,KAAK2sC,OAAO,gBAC/B3sC,KAAK48M,UAAUxuI,SAjFS,0BAkFpBihL,GACArvP,KAAK48M,UAAUt3K,IAAI,kBAAmB,OAAS+pN,EAAe,IAErE,EACD3mF,kBAAmB,WACf1oK,KAAKmiD,WACLniD,KAAKgwP,gCACR,EACDA,+BAAgC,WAC5B,GAAKhwP,KAAK8vP,YAAV,CAGA,IAAIn/N,EAAQ3wB,KAAK2sC,OAAO,SACpBngB,EAASxsB,KAAK2sC,OAAO,UACzB,GAAIhc,GAASnE,EAAQ,CACjBmE,EAAQi6C,GAAS5qE,KAAKg6D,YACtBxtC,EAASs+C,GAAU9qE,KAAKg6D,YACxB,IAAIi2L,EAAe1mP,KAAKsZ,IAAI2J,EAAQmE,GACpC3wB,KAAK48M,UAAUt3K,IAAI,CACf9Y,OAAQyjO,EACRt/N,MAAOs/N,EACPvmO,SAAUumO,GAEjB,CAZA,CAaJ,EACD3mF,OAAQ,WACJtpK,KAAKmiD,WACLniD,KAAKkwP,4BACLlwP,KAAKmwP,uBACR,EACDD,0BAA2B,WAClBlwP,KAAK8vP,cAGV9vP,KAAK8vP,YAAYpyP,gBACVsC,KAAK8vP,YACf,EACDK,sBAAuB,WACnBnwP,KAAK48M,UAAUt3K,IAAI,kBAAmB,OACzC,EACDw6H,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,yBACL,IAAK,yBACL,IAAK,eACD4G,KAAKypK,cACL,MACJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,kBAAmB48E,IACrC,UClKIgB,GAAyB,sBACzBC,GAA8B,2BAC9BC,GAAuC,oCACvCC,GAAuC,oCAIrCC,GAAAA,WACF,WAAYx5O,IAAM,eACd,IACao0O,EAOTp0O,EAPAo0O,QACMzkP,EAMNqQ,EANArQ,KACM2gB,EAKNtQ,EALAsQ,KACMmpO,EAINz5O,EAJAy5O,KACuBC,EAGvB15O,EAHA05O,sBACgBj4F,EAEhBzhJ,EAFAyhJ,eACak4F,EACb35O,EADA25O,YAEJ3wP,KAAKg2L,OAAS,CACVo1D,QAASA,EACTzkP,KAAMA,EACN2gB,KAAMA,EACNmpO,KAAMA,EACNC,sBAAuBA,EACvBj4F,eAAgBA,EAChBk4F,YAAaA,GAEjB3wP,KAAK4wP,IAAM,GAAG3gP,OAAOmgP,GAAwB,KAAKngP,OAAO,IAAIi8C,GAAAA,GAC7DlsD,KAAK86E,UACL96E,KAAK6wP,yBACR,0CACD,WACI,QAAS7wP,KAAKg2L,OAAOrvL,MAAQ,WAAa3G,KAAKg2L,OAAO1uK,IACzD,wBACD,WACItnB,KAAK8wP,SAAW//K,GAAE,SAAS3C,SA/BV,mBAgCjBpuE,KAAK+wP,YAAchgL,GAAE,UACrB/wE,KAAKgxP,QAAUjgL,GAAE,SAAS3C,SAhChB,YAgCsCzoE,OAAO3F,KAAK+wP,aAC5D/wP,KAAKixP,QAAUlgL,GAAE,SAAS3C,SAhCV,kBAiChBpuE,KAAK08M,OAAS3rI,GAAE,SAAS3C,SAASgiL,IAAwBliL,KAAK,KAAMluE,KAAK4wP,KAAKjrP,OAAO3F,KAAK8wP,UAAUnrP,OAAO3F,KAAKgxP,SAASrrP,OAAO3F,KAAKixP,SACtIjxP,KAAKkxP,cACLlxP,KAAKmxP,cACLnxP,KAAKoxP,qBACLpxP,KAAKqxP,iBACR,wCACD,WACI,IAAIxwM,EAAU7gD,KAAKmpK,aACnBnpK,KAAKsxP,gCAAgCzwM,GACrC7gD,KAAKuxP,wBAAwB1wM,GAC7BA,EAAU7gD,KAAK08M,OAAO/tI,SAAS3uE,KAAKg2L,OAAOo1D,SAAWprP,KAAK08M,OAAOxtI,QACrE,wCACD,SAAwBruB,GAEpB,GADA7gD,KAAKg2L,OAAOo1D,QAAQ/8K,YAAYiiL,IAAsCjiL,YAAYgiL,IAC9ExvM,EAAS,CACT,IAAI2wM,EAAa,aAAexxP,KAAKg2L,OAAO1uK,KAAOgpO,GAAuCD,GAC1FrwP,KAAKg2L,OAAOo1D,QAAQh9K,SAASojL,EAChC,CACJ,gDACD,WACI,IAAI3wM,EAAU/oC,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKmpK,aAEpF,GADAnpK,KAAKg2L,OAAOo1D,QAAQ/8K,YAAYkiL,IAC5B1vM,EAAS,CACT,IAAI4wM,EAAqBzxP,KAAKg2L,OAAO06D,sBAAwBH,GAAuC,GACpGvwP,KAAKg2L,OAAOo1D,QAAQh9K,SAASqjL,EAChC,CACJ,4BACD,WACIzxP,KAAK+wP,YAAY7iL,KAAK,YAAaluE,KAAKg2L,OAAOy6D,KAClD,4BACD,WACIzwP,KAAK+wP,YAAYpqP,KAAK3G,KAAKg2L,OAAOrvL,KACrC,mCACD,WACI3G,KAAK8wP,SAASxrN,IAAI,CACd3U,MAAO3wB,KAAKg2L,OAAO26D,aAE1B,gCACD,WACI3wP,KAAKgxP,QAAQ1rN,IAAI,CACb3E,SAAU3gC,KAAKg2L,OAAOv9B,gBAE7B,yBACD,WACI,OAAOz4J,KAAK08M,MACf,0BACD,WACI,OAAO18M,KAAKmpK,YACf,sBACD,WACI,GAAInpK,KAAKmpK,aACL,OAAOnpK,KAAK4wP,GAEnB,2BACD,SAAWtpO,GACPtnB,KAAKg2L,OAAO1uK,KAAOA,EACnBtnB,KAAK6wP,yBACR,2BACD,SAAWlqP,GACP3G,KAAKg2L,OAAOrvL,KAAOA,EACnB3G,KAAKmxP,cACLnxP,KAAK6wP,yBACR,2BACD,SAAWJ,GACPzwP,KAAKg2L,OAAOy6D,KAAOA,EACnBzwP,KAAKkxP,aACR,4CACD,SAA4BR,GACxB1wP,KAAKg2L,OAAO06D,sBAAwBA,EACpC1wP,KAAKsxP,iCACR,kCACD,SAAkBX,GACd3wP,KAAKg2L,OAAO26D,YAAcA,EAC1B3wP,KAAKoxP,oBACR,+BACD,SAAe34F,GACXz4J,KAAKg2L,OAAOv9B,eAAiBA,EAC7Bz4J,KAAKqxP,iBACR,OA9GCb,GCmCFkB,GAAyB,sBAIzBC,GAA+B,iBAI/BC,GAAsC,wBAEtCC,GAAc,CAAC,UAAW,WAAY,QAAS,SAAU,MAAO,OAAQ,QAAS,SACjFC,GAAe,CAAC,MAAO,QAAS,QAAS,UAAW,MAAO,SAAU,SAAU,WAAY,MAAO,OAAQ,YAAa,UAAW,aAAc,aAChJC,GAAyBvB,GAE7B,SAASwB,GAAuBnU,GAC5B,IAAIxvL,EAAAA,EAAAA,IAAUwvL,KAAah5O,MAAMC,QAAQ+4O,GACrC,MAAMv+N,GAAAA,MAAa,QAE1B,CACD,IAAI2yO,GAAiBpQ,GAAAA,QAAe,CAChC9+L,KAAM,SAASjkD,EAAG1B,GACVA,GACA40P,GAAuB50P,EAAQygP,SAEnC79O,KAAKkyP,kBAAoB,IAAI9D,GAA2BpuP,KAAMA,KAAKmyP,sBACnEnyP,KAAKoyP,yBAA2B,KAChCpyP,KAAKqyP,wBAA0B,KAC/BryP,KAAKsyP,uBAAyB,KAC9BtyP,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD8lJ,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B07L,aAAS,EACT3/O,MAAO,GACPq0P,YAAY,EACZC,iBAAiB,EACjBC,iBAAkB,SAClBC,YAAa,GACbC,UAAW,CAAC,EACZn1E,UAAW,KACXC,WAAY,KACZC,UAAW,KACXE,QAAS,KACT2D,SAAU,KACVqxE,QAAS,KACTC,MAAO,KACPC,OAAQ,KACRC,QAAS,KACTC,WAAY,KACZ1rO,KAAM,OACN88K,mBAAmB,EACnBjmJ,mBAAmB,EACnBx3C,UAAM,EACNssP,sBAAuB,SAAS/0P,GAC5B,OAAOmwD,EAAAA,EAAAA,IAAUnwD,KAAU,IAAUA,EAAQA,EAAQ,EACxD,EACDoqM,aAAavoM,EAAAA,GAAAA,KAAS0kD,mBAAqB,WAC3CyuM,oBAAoB,EACpBx7O,MAAO,GACPy7O,UAAW,SACXC,UAAW,IAElB,EACDt1F,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WAEJ,OAAOwmH,GADSzjL,KAEnB,EACDrc,QAAS,CACLkrM,aAAavoM,EAAAA,GAAAA,KAAS0kD,mBAAqB,SAC3C0uM,UAAW,cAGtB,EACDhB,mBAAoB,WAChB,MAAO,CAAC,CACJ/4P,KAAM,QACNw1P,KAAMlB,IAEb,EACDC,sBAAuB,WACnB,OAAO3tP,KAAK2sC,OAAO,qBAAuB3sC,KAAK2sC,OAAO,WACzD,EACD0mN,OAAQ,WACJ,OAAOrzP,KAAKg6D,WAAWh+D,KApFC,wBAoF+B+4C,OAC1D,EACD+kK,WAAY,WACR,OAAOjyK,GAAQ7nC,KAAKqzP,WAAarzP,KAAKmiD,UACzC,EACDmxM,cAAe,WACX,OAAOtzP,KAAKg6D,UACf,EACDu5L,kBAAmB,WACf,OAAOvzP,KAAKszP,gBAAgBt3P,KAAK,oCAA0C4zE,GAAG,EACjF,EACD4jL,cAAe,SAASlxP,GACpB,OAAQ,IAAMwvP,GAAa1wP,QAAQkB,EACtC,EACD+gP,mBAAoB,WAChBrjP,KAAKmiD,WACLniD,KAAKyzP,sBAAsBzzP,KAAK2sC,OAAO,eAC1C,EACD27H,YAAa,WACTtoK,KAAKg6D,WAAWoU,SA1GD,iBA2GfpuE,KAAK0zP,eACL1zP,KAAKqjP,qBACLrjP,KAAK2zP,mBACL3zP,KAAK4zP,qBACL5zP,KAAK6zP,eACL7zP,KAAKmiD,WACLniD,KAAK8zP,eACL9zP,KAAK+zP,cACR,EACDj5K,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKg0P,2BACLh0P,KAAKi0P,gBACLj0P,KAAKk0P,wBACLl0P,KAAKm0P,uBACR,EACDT,aAAc,WACV1zP,KAAKo0P,mBAAqBp0P,KAAKq0P,sBAAwBtjL,GAAE,SAAS3C,SAxHzC,2BAwH8EO,SAAS3uE,KAAKg6D,YACrHh6D,KAAKs0P,2BAA6BvjL,GAAE,SAAS3C,SA5Hd,iCA4HyDO,SAAS3uE,KAAKq0P,uBACtGr0P,KAAKs0P,2BAA2B3uP,OAAO3F,KAAKu0P,gBAC5Cv0P,KAAKw0P,yBACR,EACDC,mBA5GgC,WA6G5B,OAAOz0P,KAAKs0P,0BACf,EACDI,wBAAyB,WACrB10P,KAAKg6D,WAAWoU,SAASwjL,IACzB,IAAI+C,EAAkB30P,KAAKy0P,qBACvBG,EAAoB7jL,GAAE,SAAS3C,SA9HF,wBA8H+CO,SAASgmL,GACzF30P,KAAK60P,kBAAoB70P,KAAKmjK,iBAAiByxF,EAAmBxF,GACrE,EACD0F,yBAA0B,WACjB90P,KAAK60P,oBAGV70P,KAAK60P,kBAAkBtoN,UACvBvsC,KAAK60P,kBAAkB76L,WAAWt8D,SAClCsC,KAAK60P,kBAAoB,KACzB70P,KAAKg6D,WAAWqU,YAAYujL,IAC/B,EACDlP,uBAAwB,WACpB1iP,KAAKmiD,WACL,IAAI+9C,EAAY,YAAclgG,KAAK2sC,OAAO,oBACtCqtB,EAAWh6D,KAAKg6D,WAChBkmC,IACClgG,KAAK60P,mBAAqB70P,KAAK00P,0BAChC10P,KAAK+0P,gBAAiB,IAElB,YAAc/0P,KAAK2sC,OAAO,sBAC1B3sC,KAAK+0P,gBAAiB,GAErB/0P,KAAK+0P,iBAAkB,IAAS/0P,KAAK2sC,OAAO,wBAC7C3sC,KAAK+0P,eAAiB,UAAY/0P,KAAK2sC,OAAO,uBAAyB3sC,KAAK60P,mBAEhF70P,KAAK80P,4BAET96L,EAASiU,YAxJY,aAwJ0BjuE,KAAK+0P,eACvD,EACDP,wBAAyB,WACrB,IAAI3W,EAAU79O,KAAK2sC,OAAO,WAC1B3sC,KAAKoyP,yBAA2BpyP,KAAKkyP,kBAAkB8C,oBAAoBnX,EAAS79O,KAAKo0P,oBACzFp0P,KAAKqyP,wBAA0BryP,KAAKkyP,kBAAkB+C,mBAAmBpX,EAAS79O,KAAKo0P,mBAC1F,EACDc,uBAAwB,WACpB,IAAIC,EAAuBC,EAC3B,QAAUD,EAAwBn1P,KAAKoyP,gCAA6B,IAAW+C,GAAiCA,EAAsBz3P,SACtI,QAAU03P,EAAwBp1P,KAAKqyP,+BAA4B,IAAW+C,GAAiCA,EAAsB13P,SACrIsC,KAAKkyP,kBAAkBmD,OAC1B,EACD/rF,OA3JgC,WA4J5BtpK,KAAKkyP,kBAAkBmD,QACvBr1P,KAAK80P,2BACL90P,KAAKs1P,iCACLt1P,KAAKoyP,yBAA2B,KAChCpyP,KAAKqyP,wBAA0B,KAC/BryP,KAAKq0P,sBAAwB,KAC7Br0P,KAAKo0P,mBAAqB,KAC1Bp0P,KAAKmiD,UACR,EACDoyM,aAAc,WACV,IAAI/5D,EAASzpH,GAAE,WAEf,OADA/wE,KAAKu1P,sBAAsB/6D,EAAQx6L,KAAK2sC,OAAO,cACxC6tJ,CACV,EACDioD,sBAAuB,SAASrpP,GAC5B,IAAIo8P,EAAgBx1P,KAAK2sC,OAAO,kBAChC,OAAO3sC,KAAKmiD,SAAS/oD,GAAQo8P,GAAiB,GACjD,EACDD,sBAAuB,SAAS/6D,EAAQi7D,GACpC,IAAIC,GAAkBjwM,EAAAA,GAAAA,GAAOzlD,KAAK21P,wBAAyBF,GAC3Dj7D,EAAOtsH,KAAKwnL,GAAiBtnL,SAASsjL,IAAwBpsN,IAAI,YAAatlC,KAAK2sC,OAAO,UAAY,IAAM,GAChH,EACDgpN,sBAAuB,WACnB,IAAIC,EAAoB,CACpBC,aAAc,OAEd,EAGA79K,GAAAA,OAFKrD,EADT,EACIA,IACKG,EAFT,EAEIA,IAKJ,OAHIH,GAAOG,KACP8gL,EAAkBlD,YAAc,KAE7BkD,CACV,EACDE,eAAgB,SAAS3pK,GACrBnsF,KAAKkyP,kBAAkB6D,cAAc5pK,EACxC,EACDsnK,sBAAuB,SAAShvM,GAAmB,YAC/CoI,EAAAA,EAAAA,IAAK7sD,KAAK2sC,OAAO,YAAY,SAAC7tC,EAAGkY,GAC7B,IACa5Z,EAET4Z,EAFA5Z,QACM8xP,EACNl4O,EADA5d,KAEJ,GAAIgE,IAAYA,EAAQkrM,aAAe,EAAK37J,OAAO,WAAY,CAC3D,IAAIqpN,EAAiB,EAAKC,UAAU/G,GACpC8G,EAAerpN,QAAUqpN,EAAerpN,OAAO,cAAe,eAAiB8X,EAAoB,OAAS,YAC/G,CACJ,GACJ,EACDqvM,aAAc,WAEV,OADyB9zP,KAAKk2P,oBACJ54O,SAC7B,EACD44O,kBAAmB,SAASh4P,GACxB,IAAIkuD,EACJluD,EAAQ,QAAUkuD,EAASluD,SAAU,IAAWkuD,EAASA,EAASpsD,KAAK2sC,OAAO,SAC9E,IAAIhmC,EAAO3G,KAAK2sC,OAAO,QACnBgqL,EAAe32N,KAAK2sC,OAAO,gBAC3BsmN,EAAwBjzP,KAAK2sC,OAAO,yBAYxC,YAXI,IAAWgqL,GAAgB,OAASz4N,EACpCyI,EAAOssP,EAAsBt8B,IACrBtoK,EAAAA,EAAAA,IAAU1nD,KAClBA,EAAOssP,EAAsB/0P,IAEjC8B,KAAK2sC,OAAO,OAAQhmC,GAChB3G,KAAKqzP,SAAS56N,UAAW41B,EAAAA,EAAAA,IAAU1nD,GAAQA,EAAO,IAClD3G,KAAKm2P,mBAAmBxvP,GAExB3G,KAAKo2P,gCAED,IAAI/4O,GAAAA,IAAUze,SACzB,EACDu3P,mBAAoB,SAASxvP,GACzB3G,KAAKqzP,SAAS56N,IAAI9xB,GAClB3G,KAAKo2P,8BACR,EACDC,cAAe,WACX,GAAIr2P,KAAKqzP,SAAS1yP,OAAQ,CACtB,IAAI21P,EAAWt2P,KAAKqzP,SAASz5P,IAAI,GAAG08P,SACpC,GAAIA,EACA,OAAOA,EAASC,KAEvB,CACD,OAAO,CACV,EACDC,iBAAkB,SAAS52O,GACvB5f,KAAKg6D,WAAWiU,YAjQW,sBAiQ+BruD,GAC1D5f,KAAKy2P,mBAAmB72O,EAC3B,EACD62O,mBAAoB,SAAS72O,GACzB5f,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAO0hP,KAA+B/hL,GAAG,GAAG3B,YApQjD,sBAoQqFruD,EAC5G,EACDi0O,aAAc,WACV7zP,KAAKwiP,uBACLxiP,KAAK02P,yBACL12P,KAAK22P,iBACR,EACD/+C,qBAAsB,SAAS15M,GAC3B8B,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAI0iL,EAASx6L,KAAKqzP,SAClB74D,EAAO39L,KAAK,WAAYqB,EAC3B,EACDy4P,gBAAiB,WACb,IAAIn8D,EAASx6L,KAAKqzP,SACd7tO,EAAWxlB,KAAK2sC,OAAO,YACvBwR,EAAoBn+C,KAAK2sC,OAAO,qBAChCnnB,IAAa24B,EACbq8I,EAAOtsH,KAAK,YAAa,GAEzBssH,EAAOrsH,WAAW,WAEzB,EACDq0K,qBAAsB,WAClBxiP,KAAKqzP,SAASx2P,KAAK,WAAYmD,KAAK42P,sBACpC52P,KAAKmiD,UACR,EACDy0M,mBAAoB,WAChB,OAAO52P,KAAK2sC,OAAO,WACtB,EACD+pN,uBAAwB,WACpB12P,KAAKqzP,SAASx2P,KAAK,aAAcmD,KAAK2sC,OAAO,cAChD,EACD2oN,+BAAgC,WACxBt1P,KAAKsyP,yBACL1b,GAAAA,UAAkC52O,KAAKsyP,wBACvCtyP,KAAKsyP,uBAAyB,KAErC,EACDuE,mBAAoB,WAChB,OAAO72P,KAAKqzP,QACf,EACDyD,wBAAyB,WACrB,OAAOlsL,GAAS5qE,KAAK62P,qBACxB,EACDE,qBAAsB,WAClB,IAAIC,EAAqBh3P,KAAKoyP,0BAA4BxnL,GAAS5qE,KAAKoyP,0BACxE,OAAO,OAAS4E,QAAsB,IAAWA,EAAqBA,EAAqB,CAC9F,EACDC,kBAAmB,WACfj3P,KAAKk3P,OAAOC,kBAAkBn3P,KAAK+2P,wBACnC/2P,KAAKk3P,OAAO9W,eAAepgP,KAAK82P,0BACnC,EACDM,iBA3SgC,WA4S5B,OAAOp3P,KAAK62P,oBACf,EACDQ,cA9SgC,SA8SlB/sE,GACV,IAAIgtE,EAGAp5P,EAAQ,CAFE8B,KAAKk3P,OAAOK,QACN,QAAUD,EAAsBt3P,KAAKw3P,qBAAkB,IAAWF,OAAsB,EAASA,EAAoBppL,KAAK,OACzG1zC,OAAOykG,SAASxyH,KAAK,KAC1D,GAAIvO,GAASosL,EAAO,CAChB,IAAI0N,EAAO,CACPy/D,WAAYv5P,QAAS,GAEzB8B,KAAK86M,QAAQ9iB,EAAMh4L,KAAKo3P,mBAC3B,CACJ,EACDrD,aAAc,WACV/zP,KAAKs1P,iCACLt1P,KAAKsyP,uBAAyBvhL,GAAE/wE,KAAK62P,sBAAsBj9P,IAAI,GAC/D,IAAI,EAIAoG,KAAK2sC,SAHEj1B,EADX,EACIA,MACWy7O,EAFf,EAEIA,UACWC,EAHf,EAGIA,UAEAsE,EAAc,CACdtM,QAASprP,KAAKg6D,WACdrzD,KAAM+Q,EACN+4O,KAAM2C,EACN9rO,KAAM6rO,EACNzC,wBAAyB1wP,KAAKoyP,yBAC9B35F,eAAgBz4J,KAAK82P,0BACrBnG,YAAa3wP,KAAK+2P,wBAEtB/2P,KAAKk3P,OAAS,IAAInF,GAAuB2F,GACzC13P,KAAKq3P,gBACDr3P,KAAKsyP,wBACL1b,GAAAA,QAAgC52O,KAAKsyP,uBAAwBtyP,KAAKi3P,kBAAkBn6P,KAAKkD,MAEhG,EACD4zP,mBAAoB,WAChB5zP,KAAK23P,2BACL33P,KAAK43P,0BACR,EACDD,yBAA0B,WAClB33P,KAAKw3P,gBACLx3P,KAAKw3P,cAAc95P,SACnBsC,KAAKw3P,cAAgB,MAEzB,IAAIh9D,EAASx6L,KAAKqzP,SACdX,EAAc1yP,KAAK2sC,OAAO,eAC1BkrN,EAAwB,CACxB95O,GAAI20O,EAAc,MAAMziP,OAAO,IAAIi8C,GAAAA,QAAQ,EAC3C,sBAAuBwmM,GAEvB/nC,EAAe3qN,KAAKw3P,cAAgBzmL,GAAE,SAAS7C,KAAK2pL,GACxDltC,EAAa/7I,YAAY4rH,GACzBmwB,EAAav8I,SAASujL,GACzB,EACDiG,yBAA0B,WAAW,WAC7BE,EAAat0G,GAAa3oF,GAAAA,GAAkB76D,KAAKw+J,MACrDjgG,EAAAA,EAAAA,GAAgBv+D,KAAKw3P,cAAeM,GAAY,WAC5Cv5L,EAAAA,EAAAA,QAAqB,EAAK80L,SAAU,QACvC,IACDrzP,KAAKo2P,8BACR,EACD2B,aAAc,WACV,OAAO/3P,KAAKw3P,eAAiBzmL,IAChC,EACD88K,mBAAoB,SAAS5kP,GACzB,IAAIuxL,EAASx6L,KAAKqzP,SAClBpqP,EAAE83D,kBACF/gE,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAKg4P,eACJh4P,KAAK85M,cAAgBv7I,EAAAA,EAAAA,QAAqBi8H,EAAQ,SACnDj8H,EAAAA,EAAAA,QAAqBi8H,EAAQ,QAChC,EACDw9D,YAAa,WACTh4P,KAAKwmC,OACR,EACDytN,cAAe,WAAW,WAClBz5D,EAASx6L,KAAKqzP,UAClBxmM,EAAAA,EAAAA,IAAKglM,IAAa,SAAC/yP,EAAGiC,GAClB,GAAI,EAAKsgK,sBAAsB,KAAOtgK,GAAQ,CAC1C,IAAI8kB,EAAS,EAAK85I,sBAAsB,KAAO5+J,EAAO,CAClDggJ,kBAAmB,CAAC,cAExBxiF,EAAAA,EAAAA,GAAgBi8H,EAAQh3C,GAAaziJ,EAAMyT,cAAe,EAAKgqJ,OAAO,SAAAv1J,GAC9D,EAAK+6F,WAGTn+E,EAAO,CACH9kB,MAAOkI,GAEd,GACJ,CACJ,GACJ,EACDgvP,eAAgB,WAAW,WACnBz9D,EAASx6L,KAAKqzP,UAClBxmM,EAAAA,EAAAA,IAAKglM,IAAa,SAAC/yP,EAAGiC,GAClBw9D,EAAAA,EAAAA,IAAiBi8H,EAAQh3C,GAAaziJ,EAAMyT,cAAe,EAAKgqJ,MACnE,IACDx+J,KAAKi0P,eACR,EACDiE,iBAAkB,WACdl4P,KAAK2sC,OAAO,OAAQ3sC,KAAKqzP,SAAS56N,MACrC,EACD0/N,gBAAiB,SAASlvP,GACtB,IAAIuxL,EAASx6L,KAAKqzP,SACd+E,EAAcnvP,EAAEwrB,SAAW,UAAY6xH,GAAiBr9I,GACxDovP,EAAa79D,EAAO/hK,QAAUz4B,KAAK2sC,OAAO,SAC1CyrN,GAAeC,GACf95L,EAAAA,EAAAA,QAAqBi8H,EAAQ,SAEpC,EACD89D,+BAAgC,WAC5B,MAAO,kBACV,EACDC,wBAAyB,WACrB,IAAIC,EAAgBh1G,GAAaxjJ,KAAKy4P,wBAAyB,GAAGxoP,OAAOjQ,KAAKw+J,KAAM,eAChFi0F,EAAmBjvG,GAAaxjJ,KAAK2sC,OAAO3sC,KAAKs4P,kCAAmC,GAAGroP,OAAOjQ,KAAKw+J,KAAM,gBACzGk6F,EAAel1G,GAAa,UAAW,GAAGvzI,OAAOjQ,KAAKw+J,KAAM,eAC5Dg8B,EAASx6L,KAAKqzP,SAClB90L,EAAAA,EAAAA,GAAgBi8H,EAAQg+D,EAAex4P,KAAKk4P,iBAAiBp7P,KAAKkD,OAClEu+D,EAAAA,EAAAA,GAAgBi8H,EAAQi4D,EAAkBzyP,KAAK24P,yBAAyB77P,KAAKkD,OAC7Eu+D,EAAAA,EAAAA,GAAgBi8H,EAAQk+D,EAAc14P,KAAKm4P,gBAAgBr7P,KAAKkD,MACnE,EACD44P,uBAAwB,WACpB,IAAIC,EAAuB,IAAI5oP,OAAOjQ,KAAKw+J,KAAM,eAC7Cs6F,EAAsB,IAAI7oP,OAAOjQ,KAAKw+J,KAAM,cAChDjgG,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAUwF,GAChCt6L,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAUyF,EACnC,EACD9E,yBAA0B,WACtBh0P,KAAK44P,yBACL54P,KAAKu4P,yBACR,EACDE,sBAAuB,WACnB,MAAO,uBACV,EACD5yF,aAAc,WACV,OAAO7lK,KAAKqzP,QACf,EACD95C,kBAAmB,WACf,OAAOv5M,KAAKwM,SACf,EACDusP,SAAU,SAASvsP,GACf,OAAOA,IAAYxM,KAAKqzP,SAASz5P,IAAI,EACxC,EACDo/P,yBAA0B,SAASj4P,GAC/B,GAAIA,EAAMkiE,qBACN,OAAO,EAEX,IAAIg2L,EAAgBj5P,KAAKk5P,gBAAgBn4P,EAAM+/D,eAO/C,MANI,YAAc//D,EAAMsE,KACpB4zP,EAAgBA,GAAiBj5P,KAAKk5P,gBAAgBn4P,EAAM4W,UAAY3X,KAAK+4P,SAASh4P,EAAM4W,QACpFshP,GACRj5P,KAAK45M,mBAAkB,EAAO55M,KAAKg6D,YAEvCi/L,GAAiBl4P,EAAMo7D,iBAChB88L,CACV,EACDC,gBAAiB,SAASvhP,GACtB,QAAS3X,KAAKg6D,WAAWh+D,KAAK2b,GAAQhX,MACzC,EACDw4P,kBAAmB,WACf,OAAOn5P,KAAKg6D,UACf,EACDw/I,gBAAiB,SAASz4M,GACtBf,KAAKg5P,yBAAyBj4P,GAC9Bf,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD4hM,iBAAkB,SAAS34M,GACvBf,KAAKg5P,yBAAyBj4P,GAC9Bf,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD8hM,kBAAmB,SAASD,EAAW3/I,GACnCh6D,KAAKmiD,SAASw3J,EAAW35M,KAAKm5P,kBAAkBn/L,GACnD,EACD6/I,eAAgB,SAASrtM,GACrB,OAAOxM,KAAKmiD,SAAS4uB,GAAEvkE,GAAWxM,KAAKg6D,YAC1C,EACDm6L,sBAAuB,WACnB,IAAI35D,EAASx6L,KAAKqzP,SAClB90L,EAAAA,EAAAA,GAAgBi8H,EAAQ,aAAcx6L,KAAKo2P,6BAA6Bt5P,KAAKkD,MAChF,EACDo2P,6BAA8B,WAC1B,IAAIzvP,EAAO3G,KAAKqzP,SAAS56N,MACrB7Y,GAAW,KAAOjZ,GAAQ,OAASA,IAAS3G,KAAKq2P,gBACrDr2P,KAAKw2P,iBAAiB52O,EACzB,EACD+4O,yBAA0B,SAAS1vP,EAAGmwP,GAC9Bp5P,KAAK2sC,OAAO,cAGhB3sC,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAK2sC,OAAO,QAAS70B,UAAUnX,OAAS,EAAIy4P,EAAiBp5P,KAAKqzP,SAAS56N,OAC3Ez4B,KAAK8iP,2BAAsB,GAC9B,EACDoR,sBAAuB,WACnBl0P,KAAKq5P,gBAAkBr5P,KAAK2/J,sBAAsB,aAAc,CAC5D5e,kBAAmB,CAAC,cAExBxiF,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAU,iCAChC90L,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU,gCAAiCrzP,KAAKs5P,mBAAmBx8P,KAAKkD,MAChG,EACDs5P,mBAAoB,SAASrwP,GACrBjJ,KAAKgkG,WAGL,UAAYsiD,GAAiBr9I,IAC7BjJ,KAAKq5P,gBAAgB,CACjBt4P,MAAOkI,GAGlB,EACDswP,aAAc,WACVv5P,KAAKktD,SAASytG,OAAO,OAAQ,MAC7B36J,KAAK8zP,cACR,EACDphH,SAAU,WACN1yI,KAAKq5P,qBAAkB,EACvBr5P,KAAKmiD,UACR,EACDmiM,kBAAmB,WACf,OAAOtkP,KAAKqzP,QACf,EACD5O,kBAAmB,WACf,OAAOzkP,KAAKqzP,SAASpkL,GAAGpS,EAAAA,EAAAA,iBAA4B78D,KAAKqzP,SAAS,IACrE,EACDvzF,eAAgB,SAASliK,GACrB,IACUxE,EAGNwE,EAHAxE,KACUy2C,EAEVjyC,EAFAiyC,SACO3xC,EACPN,EADAM,MAEAM,EAAYpF,EAAKwI,QAAQ,KAAM,IACnC,GAAIiwP,GAAYtsP,SAAS/G,GACrBwB,KAAKi4P,sBAGT,OAAQ7+P,GACJ,IAAK,mBACD4G,KAAKg0P,2BACLh0P,KAAKq5M,qBACLr5M,KAAKi4P,iBACL,MACJ,IAAK,iBACDj4P,KAAKmiP,2BACL,MACJ,IAAK,oBACDniP,KAAKmiD,SAASvkD,GACdoC,KAAK22P,kBACL,MACJ,IAAK,aACD32P,KAAK02P,yBACL,MACJ,IAAK,OACD12P,KAAK2zP,mBACL,MACJ,IAAK,aACD3zP,KAAKk0P,wBACL,MACJ,IAAK,cACDl0P,KAAK4zP,qBACL5zP,KAAKq3P,eAAc,GACnB,MACJ,IAAK,QACDr3P,KAAKk3P,OAAOsC,WAAWt7P,GACvB8B,KAAKq3P,eAAc,GACnB,MACJ,IAAK,YACDr3P,KAAKk3P,OAAOuC,WAAWv7P,GACvB,MACJ,IAAK,YACD8B,KAAKk3P,OAAOwC,WAAWx7P,GACvB8B,KAAKq3P,gBACL,MACJ,IAAK,QACDr3P,KAAKmiD,SAASvkD,GACdoC,KAAKk3P,OAAO9W,eAAepgP,KAAK82P,2BAChC,MACJ,IAAK,WACL,IAAK,WACD92P,KAAK81P,iBACL91P,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,kBACDoC,KAAK81P,eAAe,CAAC,UACrB,MACJ,IAAK,OAkCL,IAAK,qBACD,MAjCJ,IAAK,QACD91P,KAAKu5P,eACLv5P,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,YACDoC,KAAKu1P,sBAAsBv1P,KAAKqzP,SAAUrzP,KAAK2sC,OAAOvzC,IACtD,MACJ,IAAK,cACD4G,KAAKqjP,qBACLrjP,KAAKi3P,oBACL,MACJ,IAAK,UACGpnN,IAAaz2C,GACb44P,GAAuB9zP,GAE3B8B,KAAKk1P,yBACLl1P,KAAKw0P,0BACLx0P,KAAKyzP,sBAAsBzzP,KAAK2sC,OAAO,gBACvC3sC,KAAKi3P,oBACLj3P,KAAKk3P,OAAOyC,8BAA8B35P,KAAKoyP,0BAC/C,MACJ,IAAK,UACDpyP,KAAKmiD,SAASvkD,GACVM,GAAS8B,KAAK2sC,OAAO,aACrB3sC,KAAKk1P,yBACLl1P,KAAKw0P,0BACLx0P,KAAKyzP,sBAAsBzzP,KAAK2sC,OAAO,iBAE3C,MACJ,IAAK,wBACD3sC,KAAKypK,cACL,MAGJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,EACD+1P,iBAAkB,WACd3zP,KAAK45P,cAAc55P,KAAK2sC,OAAO,QAClC,EACDitN,cAAe,SAASv0P,GACpB,IAAImV,EAAQxa,KAAKqzP,SACb,WAAahuP,IACbA,EAAO,QAEX,IACImV,EAAM3d,KAAK,OAAQwI,EAGtB,CAFC,MAAO4D,GACLuR,EAAM3d,KAAK,OAAQ,OACtB,CACJ,EACDo5P,UAloBgC,SAkoBtB78P,GACN,OAAO4G,KAAKkyP,kBAAkB+D,UAAU78P,EAC3C,EACDitB,MAAO,WACHk4C,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,QACvC,EACD7sN,MAAO,WACCxmC,KAAK+0P,iBACL/0P,KAAK+0P,gBAAiB,EACtB/0P,KAAK0iP,0BAET,IAAIt8H,EAAiBpmH,KAAK49J,qBACtB59J,KAAK2sC,OAAO,WAAay5E,EAAeloH,OACxC8B,KAAKktD,SAASytG,OAAO,OAAQ,IAC7B36J,KAAK8zP,gBAEL9zP,KAAK2sC,OAAO,QAASy5E,EAAeloH,MAE3C,EACD6uC,GAAI,SAASvuC,EAAWy0E,GACpB,IAAIzvE,EAASxD,KAAKmiD,SAAS3jD,EAAWy0E,GAClClyE,EAAQvC,EAAUyd,OAAO,GAAGyqB,cAAgBloC,EAAUwG,OAAO,GAIjE,OAHI6sP,GAAYzwP,QAAQL,IAAU,GAC9Bf,KAAKi4P,iBAEFz0P,CACV,IAEL,MCrtBIq2P,GAAuB,SAGvBC,GAAqB,CAAC,wBAAyB,yBAA0B,gBAAiB,0BAC1FC,GAAsB,CAAC,cAAe,eACtCC,GAAc,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,eAE3E,SAASC,GAAet5P,GACpB,MANa,IAMK45H,OAAO55H,EAC5B,KACoBu5P,GAAAA,WACjB,WAAYvV,IAAQ,eAChB3kP,KAAK2kP,OAASA,CACjB,6CACD,WAAgB,MACZ,OAAO,EAAA3kP,KAAK2kP,QAAOh4M,OAAZ,QAAsB70B,UAChC,6BACD,WACI,OAAO9X,KAAK2kP,OAAO0O,QACtB,6BACD,SAAa8G,GACT,IAAKA,EACD,OAAOn6P,KAAK2kP,OAAOyV,SAEvBp6P,KAAK2kP,OAAOyV,OAAOD,EACtB,0CACD,WAA4B,WACxB,GAAKn6P,KAAKq6P,cAAc,oBAAoBh4P,MAAM,KAAKkD,SAAS,UAAhE,CAGA,IAAIi1L,EAASx6L,KAAKs6P,eACdn5L,EAAYqiF,GA9BP,wBA8BgCq2G,IACzCzV,EAAAA,EAAAA,GAAgB5pD,EAAQr5H,GAAW,SAAAl4D,GAC/B,EAAK07O,OAAO4V,eAAetxP,EAC9B,GALA,CAMJ,oCACD,WACIjJ,KAAKw6P,cAAgBx6P,KAAKq6P,cAAc,QACxCr6P,KAAKy6P,WAAaz6P,KAAK06P,cAC1B,8BACD,SAAc35P,GACV,IACmBmhE,EACfnhE,EADAmhE,cAEJ,GAAKA,EAAL,CAGA,IACe+oF,EACX/oF,EADA+oF,UAEJ,GAAI8uG,GAAoBx0P,SAAS0lJ,GAC7BjrJ,KAAK26P,gCACF,GAAIb,GAAmBv0P,SAAS0lJ,GACnCjrJ,KAAK46P,sCACF,CACH,IAAIC,EAAe76P,KAAK06P,eACxB,IAAKG,EAAa3wP,IACd,OAEJlK,KAAK86P,qBACL96P,KAAK+6P,iBAAiB74L,GACtBliE,KAAK06P,aAAaG,GAClB76P,KAAKg7P,4BAA4B94L,EAAc5nE,KAClD,CACG0F,KAAKq6P,cAAc,UAAYr6P,KAAKw6P,eACpCz5P,EAAMiiE,0BAnBT,CAqBJ,yCACD,WACI,IAAI33D,EAAQrL,KAAK06P,eACjB16P,KAAKi7P,kBAAkB,CACnB1+N,MAAOlxB,EAAMkxB,MACb57B,OAAQ0K,EAAMnB,IAAMmB,EAAMkxB,MAC1B51B,KAAM,KAEV3G,KAAK06P,aAAa16P,KAAKy6P,WAC1B,gDACD,WACIz6P,KAAK86P,qBACL,IAAIzvP,EAAQrL,KAAK06P,eACjB16P,KAAK2kP,OAAOuW,sBACZl7P,KAAK2kP,OAAOwW,eACen7P,KAAK06P,eACPn+N,QAAUlxB,EAAMkxB,QACrCv8B,KAAK2kP,OAAOyW,uBACZp7P,KAAK2kP,OAAOwW,eAEnB,mCACD,WACI,IAAIE,EAAkBC,EAClB36P,GAAU,QAAU06P,EAAmBr7P,KAAKy6P,kBAAe,IAAWY,OAAmB,EAASA,EAAiBnxP,MAAQ,QAAUoxP,EAAoBt7P,KAAKy6P,kBAAe,IAAWa,OAAoB,EAASA,EAAkB/+N,QAAU,EACjPlxB,EAAQrL,KAAK06P,eACZ16P,KAAKu7P,gBACNv7P,KAAK2kP,OAAOyW,uBACZp7P,KAAKi7P,kBAAkB,CACnB1+N,MAAOlxB,EAAMkxB,MACb57B,OAAQA,EACRgG,KAAMszP,GAAet5P,KAGhC,4CACD,SAA4BrG,GACxB,IAAIkhQ,EAAuBC,EACvB90P,EAAO,OAASrM,QAAQ,IAAWA,EAAOA,EAAO,GACrD0F,KAAK2kP,OAAOuW,sBACQl7P,KAAKi7P,kBAAkB,CACvC1+N,MAAO,QAAUi/N,EAAwB,QAAUC,EAAoBz7P,KAAKy6P,kBAAe,IAAWgB,OAAoB,EAASA,EAAkBl/N,aAAU,IAAWi/N,EAAwBA,EAAwB,EAC1N76P,OAAQgG,EAAKhG,QAAU,EACvBgG,KAAMA,KAGN3G,KAAK06P,aAAa16P,KAAKy6P,WAE9B,kCACD,SAAkB78P,GACd,IAAI89P,EAAa99P,EAAK+I,KAAKhG,OACvBg7P,EAAsB37P,KAAK2kP,OAAOiX,aAAah+P,GAEnD,GADAoC,KAAK2kP,OAAOkX,eACR77P,KAAK2kP,OAAO2H,qBAAsB,CAClC,IAAI,EAGAtsP,KAAK06P,eAFEn+N,EADX,EACIA,MACKryB,EAFT,EAEIA,IAEA4xP,EAAaH,EAAsBD,EAClBC,EAAsB,GACrB,IAAMD,GACxB17P,KAAK06P,aAAa,CACdn+N,MAAOA,EAAQu/N,EACf5xP,IAAKA,EAAM4xP,IAGnB97P,KAAK2kP,OAAOwW,cACf,CACD,QAASQ,CACZ,gCACD,WAAkB,WAGd,GAFA37P,KAAK2kP,OAAOoX,uBACZ/7P,KAAK2kP,OAAOuW,uBACPl7P,KAAK2kP,OAAO1xE,iBAAmBjzK,KAAKq6P,cAAc,WACnDr6P,KAAK2kP,OAAOwW,mBACT,CACH,IAAI9vP,EAAQrL,KAAK2kP,OAAOqX,gBAAgBjnN,QACxC/0C,KAAKi8P,cAAgB1mO,YAAW,WAC5B,EAAKmlO,aAAa,CACdn+N,MAAOlxB,EACPnB,IAAKmB,GAEZ,GAAE,EACN,CACJ,iCACD,SAAiBtK,GACbf,KAAK2kP,OAAO4V,eAAex5P,GACvB,YAAcf,KAAKq6P,cAAc,iBAAmBr6P,KAAK2kP,OAAO1xE,kBAChEjzK,KAAKq6P,cAAc,OAAQ,IAC3Br6P,KAAK2kP,OAAOwR,mBAAmB,IAEtC,4BACD,SAAYp1P,GACR,IACY4jP,EACR3kP,KADA2kP,OAEJA,EAAOuX,gBAAgBn7P,GAAO,WACrB4jP,EAAOwX,iBACRxX,EAAOyX,WAjKN,IAmKR,GACJ,4BACD,SAAYr7P,GACR,IAAIsK,EAAQrL,KAAK06P,eACb2B,EAAer8P,KAAKs6P,eAAe7hO,MAAM3X,UAAUzV,EAAMkxB,MAAOlxB,EAAMnB,KAC1ElK,KAAK2kP,OAAOuX,gBAAgBn7P,GAAO,kBAAMu7P,GAAiBv7P,EAAOs7P,EAA9B,GACtC,6BACD,WAAe,WACXr8P,KAAKu8P,kBACLv8P,KAAKw8P,WAAajnO,YAAW,WACzB,IAAIr3B,EAAQ,EAAKymP,OAAO8X,gBAAgB,EAAKnC,eAAe7hO,OAC5D,EAAK4hO,cAAc,QAASn8P,EAC/B,GACJ,8BACD,SAAc6C,GACV,IACY4jP,EACR3kP,KADA2kP,OAEJ,IAAI3kP,KAAKq6P,cAAc,YAAvB,CAGA,IAAIhvP,EAAQrL,KAAK06P,eACjB/V,EAAOuX,gBAAgBn7P,GAAO,WAC1B,IAAI27P,EAAaJ,GAAiBv7P,GAC9B47P,EAAWhY,EAAOqX,gBAAgBr1P,OAAOma,UAAUzV,EAAMnB,KACzD0yP,EAAWjY,EAAOiX,aAAa,CAC/Bj1P,KAAM+1P,EACNngO,MAAOlxB,EAAMkxB,MACb57B,OAAQ+7P,EAAW/7P,SAEnBw5P,EAAW9uP,EAAMkxB,MAAQqgO,EAC7BjY,EAAOiX,aAAa,CAChBj1P,KAAMg2P,EACNpgO,MAAO49N,EACPx5P,OAAQg8P,EAASh8P,SAErBgkP,EAAOyV,OAAO,CACV79N,MAAO49N,EACPjwP,IAAKiwP,GAEZ,GApBA,CAqBJ,iCACD,SAAiBp5P,GAAO,WAER4jP,EACR3kP,KADA2kP,OAEAkY,EAAW78P,KAAKs6P,eAAe7hO,MACnCz4B,KAAK88P,mBAAqBvnO,YAAW,WAC7B,EAAKgmO,gBACL5W,EAAOuX,gBAAgBn7P,GAAO,WAC1B4jP,EAAOiX,aAAa,CAChBj1P,KAAMk2P,EACNtgO,MAAO,EACP57B,OAAQk8P,EAASl8P,QAExB,IACDgkP,EAAOoY,gBAEd,GACJ,4BACD,WACI,IAAIviE,EAASx6L,KAAKs6P,eAClB,GAAIx8O,GAAQziB,OAAQ,CAChB,IAAI2hQ,EACAxiP,EAAQggL,EAAO5gM,IAAI,GACvB,OAAO,QAAUojQ,EAAiB,OAASxiP,QAAS,IAAWA,OAAQ,EAASA,EAAMsa,QAAQ,4BAAyB,IAAWkoO,GAAiBA,CACtJ,CACD,OAAO,CACV,gCACD,WACI1nO,aAAat1B,KAAKw8P,WACrB,2BACD,SAAWS,GAAa,WACpB,OAAO,SAAAr/P,GACH,IAAImJ,EACJ,QAAUA,EAAQ,EAAK,IAAIkJ,OAAOgtP,EAAa,mBAAgB,IAAWl2P,GAAiBA,EAAMtI,KAAK,EAAMb,EAC/G,CACJ,6BACD,WAAe,WACP48L,EAASx6L,KAAKs6P,eAClBN,GAAYt5P,SAAQ,SAAAlC,GAChB,IAAI2iE,EAAYqiF,GAAahlJ,EAAUgW,cAAeqlP,IACtDzV,EAAAA,EAAAA,GAAgB5pD,EAAQr5H,EAAW,EAAK3C,WAAWhgE,GACtD,IACDwB,KAAKk9P,2BACR,6BACD,WACI9Y,EAAAA,EAAAA,IAAiBpkP,KAAKs6P,eAAgB,IAAIrqP,OAAO4pP,IACpD,sBACD,WACI75P,KAAKu8P,kBACLjnO,aAAat1B,KAAKi8P,eAClB3mO,aAAat1B,KAAK88P,mBACrB,OAxPgB5C,GCoBjBiD,GAAY,WACZ,MAAO,CAAC,CACX,EACG9xP,GAAQ+xP,GAGRC,GAA0B,uBAC1BC,GAAoB,UAGpBC,GAAmB,CACnB,EAAG,QACH,EAAG,UACH,IAAK,YACLx2K,EAAG,SAASj2B,GACR,OAAO0sM,GAAc1sM,EACxB,EACD9sC,EAAG,SAAS8sC,GACR,OAAO0sM,GAAc1sM,IAAS2sM,GAAY3sM,EAC7C,EACD4sM,EAAG,KACH9jP,EAAG,IACH+jP,EAAG,SAAS7sM,GACR,OAAO0sM,GAAc1sM,IAAS8sM,GAAc9sM,EAC/C,EACD/wC,EAAG,SAAS+wC,GACR,OAAO0sM,GAAc1sM,IAAS8sM,GAAc9sM,IAAS2sM,GAAY3sM,EACpE,GAGL,SAAS8sM,GAAc9sM,GACnB,MAAO,QAAQ16C,KAAK06C,EACvB,CAED,SAAS0sM,GAAc1sM,GACnB,IAAIz2D,EAAOy2D,EAAK9mD,aAChB,OAAO,GAAK3P,GAAQA,EAAO,IAAM,GAAKA,GAAQA,EAAO,KAAOA,EAAO,GACtE,CAED,SAASojQ,GAAY3sM,GACjB,MAAO,MAAQA,CAClB,CACD,IAAI+sM,GAAiB5L,GAAAA,QAAuB,CACxCr0F,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B27M,KAAM,GACNnR,SAAU,IACVoR,UAAW,CAAC,EACZC,mBAAoB5zI,GAAAA,OAA2B,mBAC/C6zI,gBAAgB,EAChBC,aAAc,UAErB,EACDpnD,eAAgB,WACZ,IAAIrnJ,EAAOzvD,KACPm+P,EAAgB,CAChBC,IAAK3uM,EAAK4uM,cAAc7/L,WAAW,OACnC2lF,MAAO10F,EAAK8qM,gBAEZ/2P,EAASisD,EAAKtN,WAQlB,OAPA0K,EAAAA,EAAAA,IAAKsxM,GAAgB,SAAS77P,EAAK/E,GAC/B,IAAI+gQ,EAAgB96P,EAAOlB,GAC3BkB,EAAOlB,GAAO,SAAS2G,GACnBwmD,EAAK9iB,OAAO,SAAWpvC,EAASkB,KAAKgxD,EAAMxmD,GAC3Cq1P,GAAiBA,EAAcr1P,EAClC,CACJ,IACMzF,CACV,EACD8gP,kBAAmB,WACf,OAAQtkP,KAAK2sC,OAAO,QAA4B3sC,KAAKu+P,gBAAvBv+P,KAAKmiD,UACtC,EACDohD,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKw+P,mBACR,EACDA,kBAAmB,WACfx+P,KAAKq+P,cAAgB,IAAInE,GAAal6P,KACzC,EACDsoK,YAAa,WACTtoK,KAAKy+P,uBACLz+P,KAAKmiD,UACR,EACDu8M,+BAAgC,WAE5B,GAD2B1+P,KAAK2+P,gBAAkB78O,GAAAA,KAClD,CAGA,IAAItH,EAAQxa,KAAKqzP,SACb70P,EAAYglJ,GAAa+M,GAAgBvwJ,KAAKw+J,MAC9CogG,EAAmB5+P,KAAK8gK,cAAc,SAAS73J,GAC/C,IACWlI,EACPkI,EADAlI,MAEA8mC,GAAQrtB,KAAWqsI,GAAoB9lJ,KACvCf,KAAK2+P,cAAc59P,GACnBA,EAAMo7D,iBACNp7D,EAAMggE,kBAEb,EAACjkE,KAAKkD,OACPu+D,EAAAA,EAAAA,IAAiB/jD,EAAOhc,GACxB+/D,EAAAA,EAAAA,GAAgB/jD,EAAOhc,GAAY,SAASyK,GACxC21P,EAAiB,CACb79P,MAAOkI,GAEd,GAlBA,CAmBJ,EACD01P,cAAe78O,GAAAA,KACf+8O,iBAlEwC,WAmEpC,OAAO5/H,QAAQj/H,KAAK2sC,OAAO,QAC9B,EACDmyN,wBArEwC,WAuEpC,GADsB9+P,KAAK6+P,mBAC3B,CAGA,IAAIrgQ,EAAYglJ,GA3GF,OA2GgCxjJ,KAAKw+J,MAC/ChkJ,EAAQxa,KAAKqzP,SACjB90L,EAAAA,EAAAA,IAAiB/jD,EAAOhc,GACxB+/D,EAAAA,EAAAA,GAAgB/jD,EAAOhc,GAAW,SAAAyK,GAAC,OAAIA,EAAEkzD,gBAAN,GAJlC,CAKJ,EACD2e,QAAS,WACL96E,KAAK++P,cACL/+P,KAAKmiD,WACLniD,KAAK8+P,0BACL9+P,KAAK0+P,gCACR,EACDD,qBAAsB,WACdz+P,KAAK2sC,OAAO,UACZ3sC,KAAKu+P,gBAAkBxtL,GAAE,WAAW7C,KAAK,OAAQ,UAAUS,SAAS3uE,KAAKszP,iBAEhF,EACD0L,qBAAsB,WAClBh/P,KAAKu+P,iBAAmBv+P,KAAKu+P,gBAAgB7gQ,QAChD,EACDqhQ,YAAa,WACT/+P,KAAKg6D,WAAWqU,YAAYgvL,IAC5Br9P,KAAKg8P,gBAAkB,KACvBh8P,KAAKq+P,cAAcY,eACdj/P,KAAK2sC,OAAO,UAGjB3sC,KAAKg6D,WAAWoU,SAASivL,IACzBr9P,KAAKq+P,cAAca,eACnBl/P,KAAKm/P,aACLn/P,KAAKo/P,qBACR,EACDC,uBAAwB,SAAS9hQ,EAAUK,GACvCyN,GAAQ8xP,GACR,IACI5/P,EAASwa,MAAM/X,KAAMpC,EAGxB,CAJD,QAGIyN,GAAQ+xP,EACX,CACJ,EACD7C,eAAgB,SAAStxP,GACrB,IAAIuxL,EAASx6L,KAAKqzP,SACdiM,EAAa9kE,EAAO/hK,MACxB,GAAI6mO,IAAet/P,KAAKu/P,cAAxB,CAGAv/P,KAAKu/P,cAAgBD,EACrB,IAAI3mN,EAAcytG,GAAYn9I,EAAG,CAC7B5D,KAAM,WAEVk5D,EAAAA,EAAAA,QAAqBi8H,EAAQ7hJ,EAL5B,CAMJ,EACDwmN,WAAY,WACRn/P,KAAKw/P,YAAa/5M,EAAAA,GAAAA,GAAO,CAAC,EAAG83M,GAAkBv9P,KAAK2sC,OAAO,cAC3D3sC,KAAKg8P,gBAAkBh8P,KAAKy/P,eAAe,EAC9C,EACDA,eAAgB,SAASt+P,GACrB,IAAI28P,EAAO99P,KAAK2sC,OAAO,QACvB,GAAIxrC,GAAS28P,EAAKn9P,OACd,OAAO,IAAI8rP,GAEf,IAAIiT,EAAkB5B,EAAK38P,GACvBw+P,EA5KO,OA4KSD,EAChBl8P,EAASm8P,EAAgB,IAAItS,GAAa,CAC1CV,SAAUmR,EAAK38P,EAAQ,KACtBnB,KAAK4/P,aAAaF,GAEvB,OADAl8P,EAAO2H,KAAKnL,KAAKy/P,eAAet+P,EAAQ,EAAIw+P,IACrCn8P,CACV,EACDo8P,aAAc,SAASj2P,GACnB,IAAIk2P,EAUJ,OATAhzM,EAAAA,EAAAA,IAAK7sD,KAAKw/P,YAAa,SAASM,EAAa1S,GACzC,GAAI0S,IAAgBn2P,EAKhB,OAJAk2P,EAAa,CACTl2P,QAASm2P,EACT1S,aAAcA,IAEX,CAEd,KACM/+L,EAAAA,EAAAA,IAAUwxM,GAAc,IAAInT,IAASjnM,EAAAA,GAAAA,GAAO,CAC/CknM,SAAU3sP,KAAK2sC,OAAO,aACvBkzN,IAAe,IAAIxS,GAAa,CAC/BV,SAAUhjP,GAEjB,EACDy1P,mBAAoB,WAChB,GAAKp/P,KAAKg8P,gBAAV,CAGA,IAAI99P,EAAQ8B,KAAK2sC,OAAO,UAAY,GACpC3sC,KAAKg8P,gBAAgB70N,MAAMnnC,KAAK+/P,4BAChC,IAAIC,EAAY,CACZr/P,OAAQzC,EAAMyC,QAElBq/P,EAAUhgQ,KAAKigQ,qBAAuB,OAAS,SAAW/hQ,EAC1D8B,KAAK47P,aAAaoE,GAClBhgQ,KAAK67P,cARJ,CASJ,EACDqE,qBAAsB,SAASv5P,EAAM0hD,EAAWyI,GAC5C,YAAI,IAAWA,EACJnqD,EAEMA,EAAK5B,MAAM,EAAGsjD,EAAU9rB,OAEfu0B,EADVnqD,EAAK5B,MAAMsjD,EAAUn+C,IAGxC,EACD+1P,mBAAoB,WAChB,OAAOjgQ,KAAK2sC,OAAO,iBACtB,EACDkvN,aAAc,SAASxwP,GACnBA,EAAQA,GAASrL,KAAKo6P,SACtBp6P,KAAK8zP,eACL9zP,KAAKo6P,OAAO/uP,EACf,EACD4nK,cAAe,WACX,OAAOrzJ,EAAAA,GAAAA,IAAQ5f,KAAKosD,OACvB,EACD+zM,gBAAiB,WAEb,MAAI,YADengQ,KAAK2sC,OAAO,kBAEpB9E,GAAQ7nC,KAAKqzP,YAAcrzP,KAAKizK,gBAG9C,EACD8oF,qBAAsB,WAClB,GAAI/7P,KAAKmgQ,kBAAmB,CACxB,IAAIx5P,EAAO3G,KAAKg8P,gBAAgBr1P,OAChC3G,KAAK2sC,OAAO,OAAQhmC,GAChB,YAAc3G,KAAK2sC,OAAO,iBAC1B3sC,KAAKm2P,mBAAmBxvP,EAE/B,CACJ,EACDmtP,aAAc,WACV,GAAI9zP,KAAKg8P,kBACLh8P,KAAK+7P,uBACD/7P,KAAKu+P,iBAAiB,CACtB,IAAIrgQ,EAAQ8B,KAAKg8P,gBAAgB99P,QAC7BkiQ,GAAsBxgP,EAAAA,GAAAA,IAAQ1hB,GAAoC,GAA3B8B,KAAKqgQ,oBAChDrgQ,KAAKu+P,gBAAgB9lO,IAAI2nO,EAC5B,CAEL,OAAOpgQ,KAAKmiD,UACf,EACDk+M,kBAAmB,WACf,OAAOrgQ,KAAKy8P,kBAAkB76P,QAAQ,OAAQ,GACjD,EACD+2P,yBAA0B,SAAS1vP,GAC1BjJ,KAAKg8P,iBAIVh8P,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAK2sC,OAAO,QAAS3sC,KAAKqgQ,sBAJtBrgQ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAKjC,EACDwoP,mBAAoB,SAASr3P,GACzB,OAAOjJ,KAAKwzP,cAAcltG,GAAiBr9I,KAAO49I,GAAoB59I,EACzE,EACD2yP,aAAc,SAASh+P,GACnB,IAAI2iQ,EAAevgQ,KAAKg8P,gBAAgB16P,OAAOtB,KAAK+/P,yBAAyBniQ,IAG7E,OAFAoC,KAAKosD,OAASpsD,KAAKg8P,gBAAgB99P,QACnC8B,KAAKwgQ,WAAaxgQ,KAAKg8P,gBAAgBr1P,OAChC45P,CACV,EACDR,yBAA0B,SAASniQ,GAI/B,OAHAA,EAAOA,GAAQ,CAAC,GACXuD,MAAQ,EACbvD,EAAKqvP,SAAWjtP,KAAKg8P,gBAAgBr1P,OAC9B/I,CACV,EACD6+P,gBAAiB,SAAS91P,GAMtB,OAJIA,EADA3G,KAAKigQ,qBACEjgQ,KAAKygQ,0BAA0B95P,GAAQ3G,KAAKwgQ,YAAc,IAE1D75P,GAAQ3G,KAAKosD,QAAU,EAGrC,EACDq0M,0BAA2B,SAAS95P,GAChC,OAAOA,EAAK/E,QAAQ,IAAIg2B,OAAO53B,KAAK2sC,OAAO,YAAa,KApS/C,IAqSZ,EACDuvN,gBAAiB,SAASjzP,EAAGy3P,GAAY,WACrC,IAAI1gQ,KAAK2sC,OAAO,YAAhB,CAGA3sC,KAAKk7P,sBACLjyP,EAAEkzD,iBACFn8D,KAAK2gQ,mBACL,IAAIC,EAAe5gQ,KAAKqzP,SAAS56N,MAC7BooO,EAAkB,WACdD,IAAiB,EAAKvN,SAAS56N,OAC/B8lC,EAAAA,EAAAA,QAAqB,EAAK80L,SAAU,QAE3C,EACGpyG,EAAUy/G,IACVz/G,EACAA,EAAQnjJ,KAAK+iQ,IAEb7gQ,KAAKk7P,sBACLl7P,KAAKm7P,eACLn7P,KAAK67P,eACL77P,KAAKg8P,gBAAgBx1N,QACrBq6N,IAlBH,CAoBJ,EACDzE,WAAY,SAAS95P,EAAKskB,GACtB5mB,KAAK8gQ,WAAWl6O,GAAa02O,IAC7Bt9P,KAAKm7P,aAAa74P,GAClBtC,KAAK+gQ,gBAAgBz+P,GACrBtC,KAAKghQ,YACR,EACDL,iBAAkB,WACd,GAAK3gQ,KAAKm8P,gBAAV,CAGA,IAAI9wP,EAAQrL,KAAKo6P,SACb6G,EAAa,IAAIp8P,MAAMwG,EAAMnB,IAAMmB,EAAMkxB,MAAQ,GAAG9vB,KAzU/C,KA0UTzM,KAAK+gQ,gBAAgBE,EAHpB,CAIJ,EACDF,gBAAiB,SAASG,GACtB,IAAI71P,EAAQrL,KAAKo6P,SACb79N,EAAQv8B,KAAKssP,qBAAuBjhP,EAAMkxB,MAAQlxB,EAAMkxB,MAAQ,EAChEryB,EAAMlK,KAAKssP,qBAAuBjhP,EAAMnB,IAAMmB,EAAMnB,IAAM,EAC1DvJ,EAAS47B,IAAUryB,EAAM,EAAIA,EAAMqyB,EACvCv8B,KAAK47P,aAAa,CACdj1P,KAAMu6P,EACN3kO,MAAOA,EACP57B,OAAQA,GAEf,EACDwgQ,sBAAuB,WACnBnhQ,KAAKo7P,uBACL,IAAIP,EAAe76P,KAAKo6P,SAAS79N,MAEjC,OADAv8B,KAAKm7P,gBACGN,GAAgBA,IAAiB76P,KAAKo6P,SAAS79N,KAC1D,EACD4+N,aAAc,SAASrqM,GACnB,IAAIswM,EAAaphQ,KAAKo6P,SAAS79N,MAC3B+vN,EAAqBtsP,KAAKssP,qBAC1BjhP,EAAQrL,KAAKg8P,gBAAgB3P,cAAc+U,EAAY9U,EAAoBx7L,GAC/E9wD,KAAKo6P,OAAO,CACR79N,MAAOlxB,EACPnB,IAAKmB,GAEZ,EACD21P,WAAY,WACR,IAAInG,EAAe76P,KAAKo6P,SAAS79N,MAC7B8kO,EAAgBxG,GAAgB76P,KAAKssP,qBAAuB,GAAK,GACjEjhP,EAAQrL,KAAKg8P,gBAAgB5P,WAAWiV,GAAiBxG,GAAgB76P,KAAKssP,qBAAuB,GAAK,GAAKuO,EACnH76P,KAAKo6P,OAAO,CACR79N,MAAOlxB,EACPnB,IAAKmB,GAEZ,EACD+uP,OAAQ,SAAS5vP,EAAU8/K,GACvB,IAAIkQ,EAASx6L,KAAKqzP,SAClB,GAAK74D,EAAO75L,OAGZ,OAAKmX,UAAUnX,YAGf0K,GAAMmvL,EAAQhwL,EAAU8/K,GAFbj/K,GAAMmvL,EAGpB,EACD2hE,cAAe,WACX,IAAI9wP,EAAQrL,KAAKo6P,SACjB,OAAO/uP,EAAMkxB,QAAUlxB,EAAMnB,GAChC,EACD42P,WAAY,SAASl6O,GACjB,IAAK9O,UAAUnX,OACX,OAAOX,KAAKshQ,iBAEhBthQ,KAAKshQ,iBAAmB16O,CAC3B,EACDs0O,oBAAqB,WACjBl7P,KAAK8gQ,WAAWxD,GACnB,EACDlC,qBAAsB,WAClBp7P,KAAK8gQ,WAnYY,WAoYpB,EACDxU,mBAAoB,WAChB,OAAOtsP,KAAK8gQ,eAAiBxD,EAChC,EACDh0F,OAAQ,WACJtpK,KAAKq+P,eAAiBr+P,KAAKq+P,cAAchJ,QACzCr1P,KAAKmiD,UACR,EACD46M,cAAe,WACX,GAAK/8P,KAAKg8P,gBAAV,CAGA,IAAI9rH,GAAUtwH,EAAAA,GAAAA,IAAQ5f,KAAK2sC,OAAO,WAAa3sC,KAAKg8P,gBAAgB9rH,QAAQlwI,KAAK+/P,4BACjF//P,KAAK2sC,OAAO,CACRujG,QAASA,EACTwoC,gBAAiBxoC,EAAU,KAAO,CAC9BqxH,gBAAgB,EAChBnnQ,QAAS4F,KAAK2sC,OAAO,wBAN5B,CASJ,EACD60N,qBAAsB,WAClBxhQ,KAAKg/P,uBACDh/P,KAAK2sC,OAAO,UACZ3sC,KAAKqzP,SAASllL,WAAW,QACzBnuE,KAAKy+P,wBAETz+P,KAAKyiP,sBAAsBziP,KAAK2sC,OAAO,QAC1C,EACD80N,kBAAmB,WACfzhQ,KAAKwhQ,uBACLxhQ,KAAK++P,cACL/+P,KAAK+8P,eACR,EACD2E,kBAAmB,SAAS5D,GACxB,IAAIA,EAAJ,CAGA,IAAI5/P,EAAQ8B,KAAK2sC,OAAO,SACxB3sC,KAAK2sC,OAAO,CACRhmC,KAAMzI,EACNgyI,SAAS,IAEblwI,KAAK+hP,kBAAkBh1L,KAAK,CACxB7uD,MAAOA,EACPymP,OAAQ3kP,OAEZA,KAAK8zP,cAVJ,CAWJ,EACDh0F,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,OACD4G,KAAKyhQ,oBACLzhQ,KAAK0hQ,kBAAkB9jQ,EAAKM,OAC5B,MACJ,IAAK,WACL,IAAK,YACL,IAAK,iBACD8B,KAAKyhQ,oBACL,MACJ,IAAK,QACDzhQ,KAAKo/P,qBACLp/P,KAAK+8P,gBACL/8P,KAAKmiD,SAASvkD,GACdoC,KAAKu/P,cAAgBv/P,KAAKqzP,SAAS56N,MACnC,MACJ,IAAK,qBACD,MACJ,IAAK,eACDz4B,KAAK2sC,OAAO,OAAQ,IACpB3sC,KAAK8zP,eACL,MACJ,QACI9zP,KAAKmiD,SAASvkD,GAEzB,IAEL,MC7fA40K,GAAkB,eAAgBqrF,IAClC,UCCI5jQ,IAAS8mD,EAAAA,EAAAA,MAaT4gN,GAAa,CAAC,YAAa,MAAO,QAAS,SAAU,WAAY,MAAO,OAAQ,YAAa,aAAc,YAAa,UAAW,OAEnIC,GAAkB,eAGlBC,GAAUC,GAAAA,QAAmB,CAC7B/+M,KAAM,SAASv2C,EAASpP,GAChBA,IACA4C,KAAK+hQ,iBAAmB3kQ,EAAQo1P,iBAEpCxyP,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD8lJ,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjkD,MAAO,GACPopB,KAAM,OACN06O,UAAW,MAElB,EACD15F,YAAa,WACTtoK,KAAKg6D,WAAWoU,SAnBJ,cAoBZpuE,KAAKmiD,WACLniD,KAAK86M,QAAQ,OAAQ,UACxB,EACD64C,iBAAkB,WACd3zP,KAAKmiD,WACLniD,KAAKiiQ,mBACR,EACD36F,cAAe,WACX,OAAO,CACV,EACDusF,aAAc,WACV7zP,KAAKmiD,WACLniD,KAAKkiQ,sBACR,EACDA,qBAAsB,WAClB,IAAIF,EAAYhiQ,KAAKmiQ,gBACjBH,GAAaA,EAAY,EACzBhiQ,KAAKqzP,SAASnlL,KAAK,YAAa8zL,GAEhChiQ,KAAKqzP,SAASllL,WAAW,YAEhC,EACD8zL,kBAAmB,WACf,IAAIjoM,EAAWh6D,KAAKgnJ,UAChB,WAAahnJ,KAAK2sC,OAAO,SACzBqtB,EAASoU,SAASwzL,IAClB5hQ,KAAKoiQ,yBACD,IAAWpiQ,KAAK+hQ,mBAChB/hQ,KAAK+hQ,iBAAmB/hQ,KAAK2sC,OAAO,mBACpC3sC,KAAK2sC,OAAO,mBAAmB,MAGnCqtB,EAASqU,YAAYuzL,IACrB5hQ,KAAKqiQ,cAAgBriQ,KAAKqiQ,aAAa3kQ,SACvCsC,KAAK2sC,OAAO,uBAAmB,IAAW3sC,KAAK+hQ,iBAAmB/hQ,KAAK2sC,OAAO,mBAAqB3sC,KAAK+hQ,yBACjG/hQ,KAAK+hQ,iBAEnB,EACDK,kBAAmB,WACf,IAAIE,EAAcvxL,GAAE,SAAS3C,SAzDpB,WAyDyCA,SAxDlC,kBAyDhBk0L,EAAY5zL,UAAU1uE,KAAKqzP,SAASxoP,UACpC7K,KAAKqiQ,aAAeC,CACvB,EACDxL,wBAAyB,WACrB,GAAI92P,KAAKqiQ,aAAc,CACnB,IAAI1N,EAAkB30P,KAAKqzP,SAASxoP,SACpC,OAAO+/D,GAAS+pL,GAAmB30P,KAAK+2P,sBAC3C,CACD,OAAO/2P,KAAKmiD,UACf,EACD40M,qBAAsB,WAClB,IAAIwL,EAAmBviQ,KAAKmiD,WAI5B,OAHIniD,KAAKqiQ,eACLE,GAAoBv3L,GAAchrE,KAAKqiQ,eAEpCE,CACV,EACDziG,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,YACD4G,KAAKkiQ,uBACL,MACJ,IAAK,OACDliQ,KAAKmiD,SAASvkD,GACdoC,KAAKi3P,oBACL,MACJ,IAAK,OACDj3P,KAAKmiD,SAASvkD,GACdoC,KAAKkiQ,uBACL,MACJ,QACIliQ,KAAKmiD,SAASvkD,GAEzB,EACD4kQ,wBAAyB,SAASv5P,GAC9B,IAAIw5P,EAAkBziQ,KAAKmiQ,gBAC3B,IAAIM,GAAoBx5P,EAAEwrB,SAAYz0B,KAAKm8P,gBAMvC,OAAO,EALP,IAAI3hE,EAASzpH,GAAE9nE,EAAE0O,QACbrV,EAAMgkJ,GAAiBr9I,GAE3B,OADAjJ,KAAK0iQ,iBAAiBloE,GACfA,EAAO/hK,MAAM93B,OAAS8hQ,GAAmBd,GAAWp8P,SAASjD,IAAQ,KAAOrI,GAAOmuD,eAAe9qD,UAIhH,EACDqlQ,uBAAwB,SAAS15P,GAC7B,IAAIuxL,EAASzpH,GAAE9nE,EAAE0O,QACb3X,KAAK2sC,OAAO,cACZ3sC,KAAK0iQ,iBAAiBloE,EAE7B,EACDkoE,iBAAkB,SAASloE,GACvB,IAAIioE,EAAkBziQ,KAAKmiQ,gBACvBS,EAAYpoE,EAAO/hK,MACnBgqO,GAAmBG,EAAUjiQ,OAAS8hQ,GACtCjoE,EAAO/hK,IAAImqO,EAAU59P,OAAO,EAAGy9P,GAEtC,EACDN,cAAe,WAEX,QADwBniQ,KAAK2sC,OAAO,QACX,KAAO3sC,KAAK2sC,OAAO,YAC/C,IAEL6lI,GAAkB,YAAaqvF,IAC/B,IC7IA,GD6IA,GExIIgB,GAAkB,SAAS7oM,GAC3B,IAAIlZ,EAAAA,EAAAA,MACA,OAAOkqB,GAAchR,EAE5B,EACG8oM,GAAe,SAASj1P,GAOxB,OANI,OAASA,IACTA,OAAO,GAEP,oBAAsBA,IACtBA,EAAOA,KAEJA,CACV,ECqCGk1P,GAAiC,kCAEjCC,GAA2B,4BAK3BC,GAAQ,QAAUjrL,GAAAA,UAAkBv+E,SACpCypQ,GAAiBrB,GAAAA,QAAgB,CACjC/qD,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKmiD,WAAY,CAC/B+hG,IAAK,SAASj7I,GACV,GAAKjJ,KAAK2sC,OAAO,UAGjB,GAAI,cAAgB3sC,KAAK2sC,OAAO,kBAAhC,CAIA,IAAIw2N,EAAoBl6P,EAAEipJ,SAAWlyJ,KAAKojQ,uBAAyBpjQ,KAAKqjQ,wBACpEF,IACA5kM,EAAAA,EAAAA,QAAqB4kM,EAAmB,SACxCA,EAAkBtzL,UAEtB5mE,EAAEkzD,gBAND,MAFGn8D,KAAK0e,OASZ,EACD5c,OAAQ,SAASmH,GAKb,OAJIjJ,KAAK2sC,OAAO,WACZ1jC,EAAEkzD,iBAENn8D,KAAK0e,SACE,CACV,EACDgvM,QAAS,SAASzkN,GACd,SAAK49I,GAAoB59I,KACrBA,EAAEkzD,iBACFlzD,EAAE83D,kBACE93D,EAAEurB,WACFx0B,KAAK0e,SACE,EAIlB,EACDivM,UAAW,SAAS1kN,GAChB,SAAK49I,GAAoB59I,KACrBA,EAAEkzD,iBACFlzD,EAAE83D,kBACE93D,EAAEurB,WACFx0B,KAAKsjQ,qBACE,EAIlB,EACDn/G,MAAO,SAASl7I,GAKZ,OAJIjJ,KAAK2sC,OAAO,YACZ1jC,EAAEkzD,iBACFn8D,KAAK24P,yBAAyB1vP,KAE3B,CACV,GAER,EACDkpP,mBAAoB,WAChB,OAAOnyP,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3B7W,KAAM,WACNw1P,KAAMhE,KAEb,EACDhtF,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjkD,MAAO,KACPqlQ,SAAU,KACVC,SAAU,KACVC,QAAQ,EACRC,mBAAmB,EACnBC,eAAgB,YAChBrkD,gBAAgB,EAChBnb,oBAAoB,EACpBy/D,uBAAwB,iBACxBC,cAAe,KACfC,kBAAkB,EAClBC,oBAAoB,EACpBlmB,aAAS,EACTmmB,gBAAiB,CACbvvB,WAAW,GAEfwvB,cAAejkQ,KAAKkkQ,2BACpBC,mBAAoB,KACpBC,gBAAiBh6I,GAAAA,OAA2B,MAC5Ci6I,iBAAkBj6I,GAAAA,OAA2B,UAC7Ck6I,gBAAiB,UACjBC,wBAAwB,EACxB7iB,0BAA2B,QAElC,EACDp6E,cAAe,WACX,OAAO,CACV,EACD48F,yBAA0B,SAAS15K,GAC/B,IAAIhgF,EAAW+/E,GAAoBC,GACnC,MAAO,CACHv9E,OAAQ,CACJhR,EAAG,EACHmoB,GAAI,GAERqe,GAAIj4B,EAAW,OACfq6C,GAAIr6C,EAAW,UACfujM,UAAW,YAElB,EACDjwC,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,SAAS6+J,GAEb,MADgB,YAAcA,EAAQ97O,QAEzC,EACD2D,QAAS,CACL6mQ,cAAe,CACXh3P,OAAQ,CACJmX,EAAG,OAKtB,EACDkvO,cAAe,WACX,OAAOtzP,KAAKg6D,WAAWh+D,KAAK,oCAAsC+4C,OACrE,EACDwuD,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKwkQ,yBACLxkQ,KAAKykQ,8BACLzkQ,KAAK0kQ,qBAAqB1kQ,KAAK2sC,OAAO,eACtC3sC,KAAKktD,SAAS58C,MAAM,kBAAmBtQ,KAAK2sC,OAAO,mBACtD,EACD+3N,qBAAsB,SAASl6K,GAC3B,IAAI,EAGAxqF,KAAKkkQ,yBAAyB15K,GAF1B/nD,EADR,EACIA,GACIoiB,EAFR,EAEIA,GAEA60G,EAAkB15J,KAAK2sC,OAAO,iBAClC3sC,KAAK2sC,OAAO,iBAAiB8Y,EAAAA,GAAAA,GAAO,CAAC,EAAGi0G,EAAiB,CACrDj3H,GAAIA,EACJoiB,GAAIA,IAEX,EACD2/M,uBAAwB,WACpBxkQ,KAAK2kQ,YAAc3kQ,KAAK2/J,sBAAsB,WAAY,CACtD5e,kBAAmB,CAAC,WAAY,cAEpC/gJ,KAAK4kQ,aAAe5kQ,KAAK2/J,sBAAsB,WAAY,CACvD5e,kBAAmB,CAAC,WAAY,aAEvC,EACD0jH,4BAA6B,WACzBzkQ,KAAK6kQ,wBAA0B7kQ,KAAK2/J,sBAAsB,qBAAsB,CAC5E5e,kBAAmB,CAAC,WAAY,aAEvC,EACDunB,YAAa,WACTtoK,KAAKqlP,uBACLrlP,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SArKK,qBAsKrBpuE,KAAK86M,QAAQ,OAAQ,WACxB,EACDhgI,QAAS,WACL96E,KAAKmiD,WACLniD,KAAK8kQ,qBACL9kQ,KAAK+kQ,yBACL/kQ,KAAKglQ,oBACR,EACD1sD,mBAAoB,WACXt4M,KAAK2sC,OAAO,mBACb3sC,KAAKilQ,cAEZ,EACDvR,aAAc,WACV1zP,KAAKmiD,WACLniD,KAAKklQ,aACLllQ,KAAKmlQ,iBACR,EACDD,WAAY,WACRllQ,KAAKolQ,YAAcplQ,KAAKg6D,WAAW8U,UAAUiC,GAAE,SAAS3C,SAAS20L,KAAiCh4P,WAAW6kE,GAAG,EACnH,EACDu1L,gBAAiB,WACbnlQ,KAAK86M,QAAQ,CACTuqD,SAAU,OACVxP,aAAc,QAErB,EACDe,mBAAoB,WAChB,OAAQ52P,KAAKslQ,eAAiBtlQ,KAAKmiD,UACtC,EACDy2J,iBAAkB,WACd54M,KAAKmiD,WACDniD,KAAK2sC,OAAO,kBACZ3sC,KAAKs5M,oBAEZ,EACDisD,kBAAmB,WACf,OAAOvlQ,KAAK2sC,OAAO,kBAAoB3sC,KAAK8qK,qBAAqB,gBACpE,EACDi0F,YAAa,WACL/+P,KAAK2sC,OAAO,kBAGhB3sC,KAAKmiD,UACR,EACDqjN,aAAc,WACV,IAAI3B,EAAgB7jQ,KAAKulQ,oBACzB1B,GAAiB7jQ,KAAKylQ,sBAAsB5B,EAAe7jQ,KAAK0lQ,mBACnE,EACD9R,mBAAoB,aACS5zP,KAAKulQ,qBAE1BvlQ,KAAKmiD,UAEZ,EACD2xM,aAAc,WACN9zP,KAAK2sC,OAAO,2BACZ3sC,KAAK6lP,kBAEK7lP,KAAKmiD,WACXkU,OAAOr2D,KAAKwlQ,aAAa1oQ,KAAKkD,MACzC,EACDylQ,sBAAuB,SAAS5B,EAAevpQ,GAAM,WAC7Cq/M,EAAY9xK,GAAQ7nC,KAAKqzP,UACzB74K,EAAax6E,KAAKolQ,YACtBplQ,KAAKw4M,wBACLx4M,KAAK2lQ,2BACL3lQ,KAAK4lQ,wBACL5lQ,KAAKs5M,qBACL9+H,EAAW1sB,QACX,IAAI+3M,EAAmB90L,GAAE,SAAS3C,SArOI,4CAqO8CO,SAAS6L,GAC7FqpL,EAAcv1N,OAAO,CACjBmH,MAAOn7C,EACPiN,UAAWs6I,GAAiBgkH,GAC5BtvN,WAAY,WAER,KADyB,EAAKyjB,WAAWh+D,KAAK6pQ,GAAkBllQ,OAChE,CAGA,IAAI65L,EAAS,EAAK64D,SAClB,IAAK74D,EAAO75L,OACR,MAAM2e,GAAAA,MAAa,SAEvB,EAAKwmP,kBACLnsD,GAAap7I,EAAAA,EAAAA,QAAqBi8H,EAAQ,QANzC,CAOJ,IAELx6L,KAAK+lQ,sBAAsBvrL,EAC9B,EACDorL,sBAtPiC,WAuP7B,IAAII,EAAuB7Q,EAAuBC,EACrBp1P,KAAK2sC,OAAO,4BACd,QAAUq5N,EAAwBhmQ,KAAKolP,uBAAoB,IAAW4gB,GAAiCA,EAAsB92L,UACxJ,IAAI+2L,EAA+B,QAAU9Q,EAAwBn1P,KAAKoyP,gCAA6B,IAAW+C,OAAwB,EAASA,EAAsB,GAAG/rP,WACxK88P,EAA8B,QAAU9Q,EAAwBp1P,KAAKqyP,+BAA4B,IAAW+C,OAAwB,EAASA,EAAsB,GAAGhsP,WAC1K,OAAS68P,QAAgC,IAAWA,GAAwCA,EAA6B58P,YAAYrJ,KAAKoyP,yBAAyB,IACnK,OAAS8T,QAA+B,IAAWA,GAAuCA,EAA4B78P,YAAYrJ,KAAKqyP,wBAAwB,GAClK,EACD0T,sBA/PiC,SA+PXvrL,GAClB,IAAI2rL,EACA5B,EAAyBvkQ,KAAK2sC,OAAO,0BACzC6tC,EAAWlzE,QAAQtH,KAAKoyP,0BACxBmS,IAA2B,QAAU4B,EAAyBnmQ,KAAKolP,uBAAoB,IAAW+gB,GAAkCA,EAAuBx3L,SAAS6L,IACpKA,EAAW70E,OAAO3F,KAAKqyP,wBAC1B,EACDsT,yBAtQiC,WAuQ7B3lQ,KAAKo0P,mBAAqBp0P,KAAKg6D,WAAWjvD,WAAW6kE,GAAG,EAC3D,EACDk2L,gBAAiB,WACb9lQ,KAAKk4M,oBACLl4M,KAAKg0P,2BACLh0P,KAAKi4P,iBACLj4P,KAAKomQ,wBACR,EACDA,uBAAwB,WACpB7nM,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAU,aAAcrzP,KAAKo2P,8BACnDp2P,KAAKm0P,uBACR,EACDuR,iBAAkB,WACd,OAAO1lQ,KAAK2sC,OAAO,QACtB,EACDg+H,eAAgB,WACZ3qK,KAAK4pK,iBAAiBgsB,oBAAoB,CACtCywE,eAAgB,IAAI3kG,IAAkB,SAAStkK,GAC3C,IAAIkpQ,EAAQv1L,GAAE,SAAS3C,SAhSJ,0BAiSnB2C,GAAE3zE,EAAQmK,WAAW5B,OAAO2gQ,EAC/B,MAELtmQ,KAAKmiD,UACR,EACD2iN,mBAAoB,WAChB,IAAIyB,EAAgBvmQ,KAAKszP,gBACrB90P,EAAYglJ,GAAaywE,GAAgBj0N,KAAKw+J,MAC9CslG,EAAmB9jQ,KAAK2sC,OAAO,oBACnC4xB,EAAAA,EAAAA,IAAiBgoM,EAAe/nQ,GAChC+/D,EAAAA,EAAAA,GAAgBgoM,EAAe/nQ,EAAWwB,KAAKwmQ,sBAAsB1C,IACrE9jQ,KAAKg6D,WAAWiU,YAxSe,oCAwS+B61L,GAC1DA,IACA9jQ,KAAKymQ,wBAA0BzmQ,KAAK8gK,cAAc9gK,KAAK+qP,aAAajuP,KAAKkD,OAEhF,EACD+kQ,uBAAwB,WAAW,WAC3B9B,KACAjjQ,KAAK0mQ,wBACLnoM,EAAAA,EAAAA,GAAgBv+D,KAAKszP,gBAAiB9vG,GAAa,WAAYxjJ,KAAKw+J,OAAO,SAAAz9J,GACvE,IAAI0vF,EAAY1vF,EAAM+/D,cAClB2vB,GAAa,EAAK9jD,OAAO,YACA,EAAKg6N,wBAAwBl2K,IAElD,EAAK/xE,QAGhB,IAER,EACDioP,wBAAyB,SAASl2K,GAC9B,IAAIm2K,EAAe5mQ,KAAK6wC,QAAUkgC,GAAE/wE,KAAK6wC,WAAWi/B,QAAQ,IAAI7/D,OAAO+yP,KAA6BhjQ,KAAK6mQ,QAEzG,OAD2B,IAAM91L,GAAE0f,GAAW3gB,QAAQ,IAAI7/D,OAAO+yP,IAA2B4D,GAAcjmQ,MAE7G,EACD+lQ,sBAAuB,WACnBzD,IAAS1kM,EAAAA,EAAAA,IAAiBv+D,KAAKszP,gBAAiB9vG,GAAa,WAAYxjJ,KAAKw+J,MACjF,EACDgoG,sBAAuB,SAAS1C,GAAkB,WAC9C,OAAOA,EAAmB,SAAA76P,GACtB,EAAK69P,mBAAmB79P,EAC3B,EAAG,SAAAA,GACA,EAAK89P,aACR,CACJ,EACDhc,aAAc,WACV/qP,KAAKgnQ,kBACR,EACDF,mBAAoB,SAAS79P,GACzBjJ,KAAKymQ,wBAAwB,CACzB1lQ,MAAOkI,GAEd,EACDmwM,4BAA6B,WACzB,OAAOp5M,KAAKqzP,QACf,EACD0T,YAAa,WACT,OAAI/mQ,KAAK2sC,OAAO,cAGZ3sC,KAAK2sC,OAAO,uBAAyB9E,GAAQ7nC,KAAKqzP,YAClDrzP,KAAKinQ,sBACL1oM,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,WAEjC,EACV,EACD4T,oBAAqB,WACjB,IAAIC,EAAiBpvP,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAC7EqvP,EAAennQ,KAAKqzP,SAASz5P,IAAI,GACrC,GAAIutQ,EAAc,CACd,IACWjpQ,EACPipQ,EADAjpQ,MAEAkpQ,GAAgB/4M,EAAAA,EAAAA,IAAUnwD,KAAWgpQ,GAAkBlnQ,KAAKslQ,eAAiBpnQ,EAAMyC,OAAS,EAChGX,KAAKo6P,OAAO,CACR79N,MAAO6qO,EACPl9P,IAAKk9P,IACN,EACN,CACJ,EACD9B,YAAa,WACT,OAAOtlQ,KAAK2sC,OAAO,oBACtB,EACDq6N,iBAAkB,SAASz3L,GAClBvvE,KAAK+mQ,gBAGL/mQ,KAAK2sC,OAAO,cACb4iC,EAAYz3D,UAAUnX,OAAS4uE,GAAavvE,KAAK2sC,OAAO,UACxD3sC,KAAK2sC,OAAO,SAAU4iC,IAE7B,EACD83L,iBAtXiC,WAuX7B,OAAOrnQ,KAAKsnQ,QAAUtnQ,KAAKunQ,eAC9B,EACDvC,mBAAoB,WAChB,IAAIvB,EAASzjQ,KAAK2sC,OAAO,UACrB82N,GACAzjQ,KAAKilQ,eAETjlQ,KAAKg6D,WAAWiU,YAlYM,2BAkY+Bw1L,GACrDzjQ,KAAKwnQ,gBAAgB,UAAW/D,GAChC,IAAIgE,EAAQ,CACR7/N,SAAU67N,EACViE,SAAU1nQ,KAAKqnQ,oBAEnBrnQ,KAAK86M,QAAQ2sD,GACbznQ,KAAK86M,QAAQ,OAAQ2oD,EAASzjQ,KAAKunQ,qBAAkB,EAAQvnQ,KAAKg6D,WACrE,EACDirM,aAAc,WACNjlQ,KAAK6mQ,UAGT7mQ,KAAK6mQ,QAAU91L,GAAE,SAAS3C,SAAS40L,IAA0Br0L,SAAS3uE,KAAKg6D,YAC3Eh6D,KAAK2nQ,eACL3nQ,KAAK4nQ,sBACR,EACDA,oBAAqB9lP,GAAAA,KACrB6lP,aAAc,WACV,IAAIE,GAAcpiN,EAAAA,GAAAA,GAAOzlD,KAAK8nQ,eAAgB9nQ,KAAKktD,SAAS58C,MAAM,2BAC3Du3P,EAAYpoD,oBACfooD,EAAY/pN,cAAgB9/C,OAAOgB,KAAK6oQ,EAAY/pN,aAAan9C,eAC1DknQ,EAAY/pN,YAEvB99C,KAAKsnQ,OAAStnQ,KAAKmjK,iBAAiBnjK,KAAK6mQ,QAAS9yB,GAAO8zB,GACzD7nQ,KAAKsnQ,OAAOv6N,GAAG,CACXs9K,QAASrqN,KAAK+nQ,qBAAqBjrQ,KAAKkD,MACxC4mK,MAAO5mK,KAAKgoQ,mBAAmBlrQ,KAAKkD,MACpC6mK,OAAQ7mK,KAAKioQ,oBAAoBnrQ,KAAKkD,MACtC0nM,OAAQ1nM,KAAKkoQ,oBAAoBprQ,KAAKkD,MACtCmoQ,aAAcnoQ,KAAKooQ,qBAAqBtrQ,KAAKkD,QAEjDA,KAAKooQ,uBACLpoQ,KAAKqoQ,mBAAmBroQ,KAAKsnQ,OAAOhtE,YACpCt6L,KAAKu3M,wBAAwBv3M,KAAKsnQ,OAAQ,kBAC7C,EACDe,mBAlaiC,SAkadC,GACftoQ,KAAKunQ,gBAAkB,MAAQ,IAAIr7M,GAAAA,EACnClsD,KAAK86M,QAAQ,KAAM96M,KAAKunQ,gBAAiBe,EAC5C,EACDF,qBAAsBtmP,GAAAA,KACtBgmP,aAAc,WAAW,WACrB,MAAO,CACHpoN,cAAe1/C,KAAKuoQ,2BACpB/9P,UAAUi7C,EAAAA,GAAAA,GAAOzlD,KAAK2sC,OAAO,iBAAkB,CAC3CkhK,GAAI7tM,KAAKg6D,aAEby6K,UAAWz0O,KAAK2sC,OAAO,6BACvB67N,iCAAiC,EACjC73O,MAAO,kBAAMkyO,GAAgB,EAAK7oM,WAA3B,EACPxtC,OAAQ,OACRu4B,SAAS,EACTu7J,oBAAoB,EACpBZ,mBAAoB,SAAAz2M,GAAC,OAAI,EAAKw/P,6BAA6Bx/P,EAAtC,EACrBsiJ,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,OACNwmB,SAAU,EACVriB,KAAM,EACNguG,GAAI,GAERxpC,KAAM,CACF3oE,KAAM,OACNwmB,SAAU,IACVriB,KAAM,EACNguG,GAAI,IAGZ8nG,gBAAgB,EAChBnhK,mBAAmB,EACnB42L,iBAAiB,EACjBj+E,aAAa,EACbg+E,aAAc90O,KAAK0oQ,wBACnBpsD,aAAct8M,KAAK2oQ,wBAAwB7rQ,KAAKkD,MAChD+xO,YAAY,EACZ5xB,gBAAiB,KACjByoD,sBAAuB5F,GACvBljD,uCAAuC,EAE9C,EACDyoD,yBAA0B,WAAW,WACjC,OAAKvoQ,KAAK2sC,OAAO,sBAGV,SAAA1jC,GACH,EAAK47P,wBAAwB,CACzBgE,MAAO5/P,EAAEmoB,WAEhB,EANU,IAOd,EACDw2I,kBAAmB,aACX9mH,EAAAA,EAAAA,OAAgB9gD,KAAKg6D,WAAWiV,GAAG,YAIvCjvE,KAAK8oQ,oBAHD9oQ,KAAK0e,OAIZ,EACDoqP,kBAAmB,WAAW,gBAEtB,IADahG,GAAa9iQ,KAAK2sC,OAAO,2BAEtC3sC,KAAKwnQ,gBAAgB,SAAS,kBAAM3E,GAAgB,EAAK7oM,WAA3B,GAErC,EACD2uM,wBAAyB,SAAS1/P,GAC9B,IAAI8/P,EAAaC,EACb,EAGAhpQ,KAAK2sC,SAFMwmN,EADf,EACIA,UACa7qD,EAFjB,EAEIA,YAEJ,GAAKtoM,KAAKsnQ,OAAV,CAGA,IAAI2B,EAAuBjpQ,KAAKsnQ,OAAOxxB,kBACnCozB,EAAmB,QAAUH,EAAc9/P,EAAEuB,gBAAa,IAAWu+P,GAAuB,QAAUC,EAAgBD,EAAY3kP,SAAM,IAAW4kP,OAAhE,EAAyFA,EAAc57D,KAC1L+7D,EAAuB,WAAahW,GAAa,aAAe7qD,EAIpE,GAHIr/L,EAAEuB,UACFy+P,EAAqBh7L,YAvfM,oCAufwCi7L,GAEnEA,GAAoBC,GAAwBnpQ,KAAKk3P,OAAO3nL,YAAa,CACrE,IAAIy/J,EAAShvO,KAAKk3P,OAAOl9L,WACzBmpF,GAAK8lH,EAAsB,CACvBxkO,IAAKi+G,GAAOumH,GAAsBxkO,IAAM3M,SAASk3M,EAAO1pM,IAAI,cAEnE,CAZA,CAaJ,EACDyiO,qBAAsBjmP,GAAAA,KACtBmmP,oBAAqB,WACjBjoQ,KAAK2sC,OAAO,UAAU,EACzB,EACDq7N,mBAAoB,WAChB,IAAI/kB,EACJjjP,KAAK2kQ,cACL,QAAU1hB,EAAwBjjP,KAAKmjP,0BAAuB,IAAWF,GAAiCA,EAAsBt2M,OAAO,eAAgB3sC,KAAKopQ,oCAC/J,EACDlB,oBAAqB,WACjB,IAAI1jB,EACJxkP,KAAK4kQ,eACL,QAAUpgB,EAAyBxkP,KAAKmjP,0BAAuB,IAAWqB,GAAkCA,EAAuB73M,OAAO,eAAgB3sC,KAAKopQ,oCAClK,EACDA,kCAAmC,WAC/B,IAAI1nB,EAA4B1hP,KAAK2sC,OAAO,6BAC5C,GAAI,SAAW+0M,EACX,OAAOA,EAEX,IAAIxB,EAAe,SACnB,GAAIlgP,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAO36N,OAAO,WAAY,CAC9C,IACS08N,EACLC,GAAAA,MAAwBtpQ,KAAKg6D,YAD7Bv1B,IAGK8kO,EACLD,GAAAA,MAAwBtpQ,KAAKsnQ,OAAOhtE,YADpC71J,IAEJy7M,EAAempB,EAAQrpQ,KAAK2sC,OAAO,iBAAiB1/B,OAAOmX,EAAImlP,EAAW,SAAW,KACxF,CACD,OAAOrpB,CACV,EACDuoB,6BAA8B,SAASzxP,GACnC,IACYW,EACRX,EADAW,OAEAiqI,EAAU7wE,GAAEp5D,GACZ0uP,EAAiBrmQ,KAAKi2P,UAAU,YAChCuT,EAAkBnD,GAAkBA,EAAersM,WACnDyvM,IAAmB7nH,EAAQ9xE,QAAQ9vE,KAAKg6D,YAAYr5D,OACpD+oQ,IAA4B9nH,EAAQ9xE,QAAQ05L,GAAiB7oQ,OAEjE,OADsB8oQ,IAAmBC,CAE5C,EACDpgG,OAAQ,kBACGtpK,KAAKymQ,wBACRzmQ,KAAK6mQ,UACL7mQ,KAAK6mQ,QAAQnpQ,gBACNsC,KAAK6mQ,eACL7mQ,KAAKsnQ,QAEhBtnQ,KAAKmiD,UACR,EACDqlN,gBAAiB,SAASh4N,EAAYtxC,GAClC8B,KAAK+6M,iBAAiB,SAAUjjM,UACnC,EACDwrP,kBAAmB,WACVtjQ,KAAK2sC,OAAO,aACb3sC,KAAKgnQ,kBAAiB,EAE7B,EACD0B,sBAAuB,WACnB,MAAO,eAAiB1oQ,KAAK2sC,OAAO,kBAAoB3sC,KAAK2pQ,2BAA6B,EAC7F,EACDtG,sBAAuB,WACnB,OAAOrjQ,KAAKsnQ,OAAOjrD,WAAWrgN,KAAK,2BACtC,EACDonQ,qBAAsB,WAClB,OAAOpjQ,KAAKsnQ,OAAOjrD,WAAWrgN,KAAK,6BACtC,EACD4tQ,wBAAyB,SAAS3gQ,GAC9B,IAAI+wD,EAAW+W,GAAE9nE,EAAEu2D,gBACfv2D,EAAEipJ,UAAYl4F,EAASiV,GAAGjvE,KAAKqjQ,2BAA6Bp6P,EAAEipJ,UAAYl4F,EAASiV,GAAGjvE,KAAKojQ,2BAC3F7kM,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,SACpCpqP,EAAEkzD,iBAET,EACD0tM,wBAAyB,WACrBtrM,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,SACpCrzP,KAAK0e,OACR,EACDorP,+BAAgC,SAAS7gQ,GACrCA,EAAEmoB,UAAUgqL,mBAAmB,MAAOp7M,KAAK4pQ,wBAAwB9sQ,KAAKkD,OACxEiJ,EAAEmoB,UAAUgqL,mBAAmB,SAAUp7M,KAAK6pQ,wBAAwB/sQ,KAAKkD,MAC9E,EACD2pQ,yBAA0B,WACtB,IAAII,EAAgB,CAAC,CACjB3wB,SAAU,OACVh8O,QAAS,CACLkgL,QAASt9K,KAAKgqQ,oBAAoBltQ,KAAKkD,MACvC2G,KAAM3G,KAAK2sC,OAAO,mBAClB+S,cAAe1/C,KAAK8pQ,+BAA+BhtQ,KAAKkD,QAE7D,CACCo5O,SAAU,SACVh8O,QAAS,CACLkgL,QAASt9K,KAAKiqQ,qBAAqBntQ,KAAKkD,MACxC2G,KAAM3G,KAAK2sC,OAAO,oBAClB+S,cAAe1/C,KAAK8pQ,+BAA+BhtQ,KAAKkD,SAGhE,OAAOA,KAAKkqQ,sBAAsBH,EACrC,EACDG,sBAAuB,SAASH,GAC5B,IAAIzF,EAAkBtkQ,KAAK2sC,OAAO,mBAC9Bw9N,EAAeJ,EACnB,GAAI,YAAczF,EAAiB,CAC/B,IAAI95P,GAAW8lD,EAAAA,GAAAA,WAAUg0M,IACzBz3M,EAAAA,EAAAA,IAAKs9M,GAAe,SAASrrQ,EAAG0N,IAC5Bi5C,EAAAA,GAAAA,GAAOj5C,EAAS,CACZmY,QAASna,EAAS,GAClBmoB,SAAUnoB,EAAS,IAE1B,GACJ,CACD,OAAO2/P,CACV,EACDH,oBAAqB,WACjBhqQ,KAAK0e,QACL1e,KAAK2sC,OAAO,sBAAwB3sC,KAAKqmB,OAC5C,EACD4jP,qBAAsB,WAClBjqQ,KAAK0e,QACL1e,KAAK2sC,OAAO,sBAAwB3sC,KAAKqmB,OAC5C,EACD+jP,oBAAqB,SAASxsQ,GAC1B,IAAIR,EAAUwnM,GAAAA,wBAA+BhnM,GAC7CoC,KAAKwnQ,gBAAgBpqQ,GACrB,IAAIitQ,EAAcrsQ,OAAOgB,KAAK5B,IACzB,IAAMitQ,EAAYjpQ,QAAQ,WAAa,IAAMipQ,EAAYjpQ,QAAQ,WAClEpB,KAAK4nK,mBAEZ,EACDy9E,qBAAsB,WACdrlP,KAAK2sC,OAAO,4BACZ3sC,KAAKolP,gBAAkBr0K,GAAE,WAAW7C,KAAK,OAAQ,UAAUS,SAAS3uE,KAAKg6D,YAEhF,EACD6rL,gBAAiB,WACb7lP,KAAKskP,oBAAoB7rN,IAAIz4B,KAAK2sC,OAAO,SAC5C,EACD23M,kBAAmB,WACf,OAAItkP,KAAK2sC,OAAO,0BACL3sC,KAAKolP,gBAELplP,KAAKmiD,UAEnB,EACDuwF,SAAU,WACN1yI,KAAK0mQ,wBACL1mQ,KAAKmiD,UACR,EACD29G,eAAgB,SAASliK,GACrB,IAAI0sQ,EACJ,OAAQ1sQ,EAAKxE,MACT,IAAK,QACL,IAAK,SACD4G,KAAKmiD,SAASvkD,GACd,QAAU0sQ,EAAetqQ,KAAKsnQ,cAAW,IAAWgD,GAAwBA,EAAanvD,UACzF,MACJ,IAAK,SACDn7M,KAAKglQ,qBACL,MACJ,IAAK,WACL,IAAK,WACDhlQ,KAAKwkQ,yBACL,MACJ,IAAK,qBACDxkQ,KAAKykQ,8BACL,MACJ,IAAK,iBACGp2M,EAAAA,EAAAA,IAAUzwD,EAAKM,OACf8B,KAAKwlQ,eAELxlQ,KAAKypK,cAET,MACJ,IAAK,oBACL,IAAK,mBACDzpK,KAAKypK,cACL,MACJ,IAAK,yBACL,IAAK,qBACDzpK,KAAK81P,eAAe,CAAC,aACrB,MACJ,IAAK,kBACD91P,KAAKoqQ,oBAAoBxsQ,GACzBoC,KAAKktD,SAAS58C,MAAM,kBAAmBtQ,KAAK2sC,OAAO,oBACnD,MACJ,IAAK,gBACD,MACJ,IAAK,kBACGmU,EAAAA,EAAAA,OACA9gD,KAAKilQ,eAET,MACJ,IAAK,iBACL,IAAK,kBACL,IAAK,mBACL,IAAK,kBACDjlQ,KAAKwnQ,gBAAgB,eAAgBxnQ,KAAK0oQ,yBAC1C,MACJ,IAAK,yBACG1oQ,KAAKolP,kBACLplP,KAAKolP,gBAAgB1nP,SACrBsC,KAAKolP,qBAAkB,GAE3BplP,KAAKqlP,uBACL,MACJ,IAAK,aACDrlP,KAAK0kQ,qBAAqB9mQ,EAAKM,OAC/B8B,KAAKmiD,SAASvkD,GACd,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,EACD4gB,KAAM,WACFxe,KAAK2sC,OAAO,UAAU,EACzB,EACDjuB,MAAO,WACH1e,KAAK2sC,OAAO,UAAU,EACzB,EACD0xB,MAAO,WACH,OAAOwjF,GAAiB7hJ,KAAKqzP,SAChC,EACDxiN,QAAS,WACL,OAAO7wC,KAAKsnQ,OAAStnQ,KAAKsnQ,OAAOz2N,UAAY,IAChD,IAEL2hI,GAAkB,mBAAoB0wF,IACtC,UCxxBIqH,GAAoB,eACpBC,GAAc,UACdC,GAAkB,aAiClBC,GAAa,CACbj1H,WAjCqB,CACrBk1H,oBAAqB,WACjB,OAAO//L,GAAS5qE,KAAKmnJ,aACxB,EACDyjH,UAAW,WACP,MAAO,CAAC5qQ,KAAK6zJ,eAAgB7zJ,KAAK+zJ,gBACrC,EACD82G,gBAAiB,SAAS5hQ,GAEtB,OADmBy3D,GAAUz3D,GACR8E,GAAK/N,KAAKmjM,iBAAmBnjM,KAAKmjM,gBAAgBp1L,GAAK,IAAM/N,KAAK8qQ,gBAAgBrsQ,KAAKuB,KAAMiJ,EACrH,EACD8hQ,YAAa,SAAS9hQ,GAClB,IAAI+hQ,EAAetqM,GAAUz3D,GAC7B,OAAOjJ,KAAKirQ,uBAAyB1hQ,KAAKD,IAAI0hQ,EAAaj9P,EAAI/N,KAAKkrQ,UAAUn9P,IAAMi9P,EAAa52O,KAAOp0B,KAAKkrQ,UAAU92O,IAC1H,GAoBDshH,SAlBmB,CACnBi1H,oBAAqB,WACjB,OAAO7/L,GAAU9qE,KAAKmnJ,aACzB,EACDyjH,UAAW,WACP,MAAO,CAAC5qQ,KAAKi0J,cAAej0J,KAAKm0J,iBACpC,EACD02G,gBAAiB,SAAS5hQ,GAEtB,OADmBy3D,GAAUz3D,GACR+E,GAAKhO,KAAKmjM,iBAAmBnjM,KAAKmjM,gBAAgBn1L,GAAK,IAAMhO,KAAK8qQ,gBAAgBrsQ,KAAKuB,KAAMiJ,EACrH,EACD8hQ,YAAa,SAAS9hQ,GAClB,IAAI+hQ,EAAetqM,GAAUz3D,GAC7B,OAAOjJ,KAAKirQ,uBAAyB1hQ,KAAKD,IAAI0hQ,EAAah9P,EAAIhO,KAAKkrQ,UAAUl9P,IAAMg9P,EAAa52O,KAAOp0B,KAAKkrQ,UAAU92O,IAC1H,IAMD+2O,GAAe7iH,GAAAA,QAAuB,CACtC8iH,cAAe,IACfH,uBAAwB,GACxBloN,KAAM,SAASv2C,GACXxM,KAAKmiD,SAAS31C,GACdxM,KAAK4mB,UAAY,aACjB5mB,KAAKqrQ,SAAU,CAClB,EACDC,aAAc,WACV,OAAOZ,GAAW1qQ,KAAK4mB,UAC1B,EACD2kP,qBAAsB,WAClB,OAAOvrQ,KAAKsrQ,eAAeX,oBAAoBlsQ,KAAKuB,KACvD,EACD8qQ,cAAe,WACX,OAAO9qQ,KAAKs2J,cAAgBt2J,KAAKurQ,oBACpC,EACDhoK,MAAO,SAASt6F,GACZjJ,KAAKkrQ,UAAYxqM,GAAUz3D,EAC9B,EACDugJ,OAAQ,SAASvgJ,GACbjJ,KAAKmjM,gBAAkBziI,GAAUz3D,IACjCA,EAAIjJ,KAAKgoJ,WAAWuiH,GAAmBthQ,IAChC+3C,SACHhhD,KAAK6zJ,eAAiB5qJ,EAAE6qJ,cACxB9zJ,KAAK+zJ,gBAAkB9qJ,EAAE+qJ,eACzBh0J,KAAKi0J,cAAgBhrJ,EAAEirJ,aACvBl0J,KAAKm0J,iBAAmBlrJ,EAAEmrJ,gBAEjC,EACD3K,MAAO,SAASxgJ,GACZ,IAAIk7D,EAAWnkE,KAAKsrQ,eAChBE,EAAgB9qM,GAAUz3D,GAC1BgE,EAASk3D,EAAS0mM,gBAAgBpsQ,KAAKuB,KAAMiJ,GACjDgE,EAASjN,KAAKg1J,WAAW/nJ,EAAQjN,KAAKqrQ,SAClCG,EAAcp3O,KAAOp0B,KAAKkrQ,UAAU92O,KAAOp0B,KAAKorQ,gBAChDprQ,KAAKkrQ,UAAYM,GAErBxrQ,KAAKgoJ,WAAWwiH,GAAavhQ,EAAG,CAC5BgE,OAAQA,KAER,IAAUhE,EAAE4/M,YACZ5/M,EAAEkzD,gBAET,EACDquF,KAAM,SAASvhJ,GACX,IAAIk7D,EAAWnkE,KAAKsrQ,eAChBG,EAActnM,EAAS0mM,gBAAgBpsQ,KAAKuB,KAAMiJ,GAClDyiQ,EAASvnM,EAAS4mM,YAAYtsQ,KAAKuB,KAAMiJ,GACzC0iQ,EAAcF,EACdj+I,EAAextH,KAAK4rQ,kBAAkBH,EAAaC,GACvDC,EAAc3rQ,KAAKg1J,WAAW22G,EAAa3rQ,KAAKqrQ,SAChD79I,EAAextH,KAAKg1J,WAAWxnC,GAAc,GAC7CxtH,KAAKgoJ,WAAWyiH,GAAiBxhQ,EAAG,CAChCgE,OAAQ0+P,EACRn+I,aAAcA,GAErB,EACDwnC,WAAY,SAAS/nJ,EAAQo+P,GACzB,IACI7+D,EADWxsM,KAAKsrQ,eACEV,UAAUnsQ,KAAKuB,MACrC,OAAIiN,GAAUu/L,EAAO,GACV6+D,IAAY,EAAI7+D,EAAO,GAAKv/L,GAAU,GAAKu/L,EAAO,GAEzDv/L,EAASu/L,EAAO,GACT6+D,GAAW,EAAI7+D,EAAO,GAAKv/L,GAAU,EAAIu/L,EAAO,GAEpDv/L,CACV,EACD2+P,kBAAmB,SAASH,EAAaC,GACrC,IAAIloQ,EASJ,OARIkoQ,GACAloQ,EAAS+F,KAAKq7E,KAAKr7E,KAAKD,IAAImiQ,IACxBA,EAAc,IACdjoQ,GAAUA,IAGdA,EAAS+F,KAAKoZ,MAAM8oP,GAEjBjoQ,CACV,IAELizJ,GAAgB,CACZ7F,QAASu6G,GACTphO,OAAQ,CAACwgO,GAAmBC,GAAaC,MCjH7C,IAAIoB,GAAe,cAEfC,GAAsB,CACtBC,QAASC,GACTC,UAAWC,GACXC,MAAOC,GACPC,SAAU,iBAGVC,GAAYjlG,GAAAA,QAAqB,CACjCzJ,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BkpN,SAAS,EACT7iH,WAAW,EACXW,iBANY,IAOZviI,UAAW,aACX0vI,aAAc,KACdy1G,QAAS,KACTE,UAAW,KACXE,MAAO,KACPE,SAAU,MAEjB,EACDvxL,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAxBF,gBAyBdpuE,KAAK6sK,sBACR,EACDA,qBAAsB,WAElB,GADA7sK,KAAKitK,wBACDjtK,KAAK2sC,OAAO,YAAhB,CAGA,IAAI6xH,EAAOx+J,KAAKw+J,KAChBx+J,KAAKusQ,oBACL1/M,EAAAA,EAAAA,IAAKi/M,GAAqB,SAAStuG,EAAYh/J,GAC3C,IAAIqnB,EAAS7lB,KAAK2/J,sBAAsBnC,EAAY,CAChDr3G,QAASnmD,OAEbxB,EAAYglJ,GAAahlJ,EAAWggK,GACpCjgG,EAAAA,EAAAA,GAAgBv+D,KAAKg6D,WAAYx7D,EAAWwB,KAAKwsQ,YAAa,SAASvjQ,GACnE,OAAO4c,EAAO,CACV9kB,MAAOkI,GAEd,GACJ,EAACnM,KAAKkD,MAbN,CAcJ,EACDusQ,iBAAkB,WACdvsQ,KAAKwsQ,WAAa,CACdnB,QAASrrQ,KAAK2sC,OAAO,WACrB2pH,aAAct2J,KAAK2sC,OAAO,gBAC1B/lB,UAAW5mB,KAAK2sC,OAAO,aACvB67G,UAAWxoJ,KAAK2sC,OAAO,aACvBw8G,iBAAkBnpJ,KAAK2sC,OAAO,oBAErC,EACDsgI,qBAAsB,WAClB1uG,EAAAA,EAAAA,IAAiBv+D,KAAKg6D,WAAY,eACrC,EACD8lG,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,QACL,IAAK,WACL,IAAK,UACL,IAAK,YACL,IAAK,eACL,IAAK,YACD4G,KAAKitK,uBACLjtK,KAAK6sK,uBACL,MACJ,IAAK,aACD,MACJ,QACI7sK,KAAKmiD,SAASvkD,GAEzB,EACD0pK,cAAe,WACX,OAAO,CACV,IAELluK,GAAKkzQ,GAAWT,IAChB,UCtFMY,GAAAA,SAAAA,6IACF,WACI,OAAOhnN,EAAAA,GAAAA,IAAO,kEAA4B,CACtC63H,QAAS,KACTovF,eAAgB,KAChBrnQ,KAAM,SACNijM,YAAa,WACb3hM,KAAM,IAEb,qCACD,WACI,OAAO,oEAA6BsJ,OAAO,CAAC,CACxCymE,OAAQ,WACJ,OAAOwmH,IACV,EACD9/L,QAAS,CACLiI,KAAM,UACNijM,YAAa,UAGxB,sBACD,YACI,qDACAtoM,KAAK4gN,cACR,6BACD,WACI5gN,KAAK65L,aAAe75L,KAAK2/J,sBAAsB,WAC/C3/J,KAAK2sQ,oBAAsB3sQ,KAAK2/J,sBAAsB,iBACzD,4BACD,YACI,2DACA3/J,KAAKg6D,WAAWoU,SAvCO,yBAwCvBpuE,KAAKinP,iBACLjnP,KAAK4sQ,gBACR,+BACD,WAAiB,WACT,EAIA5sQ,KAAK2sC,SAHOqT,EADhB,EACIA,WACM36C,EAFV,EAEIA,KACaijM,EAHjB,EAGIA,YAEJtoM,KAAK6sQ,YAAc7sQ,KAAKmjK,iBAAiBpyF,GAAE,SAAU43H,GAAQ,CACzDxqJ,mBAAmB,EACnB13B,KAAMu5B,EAAa,eAAiB,cACpCs9H,QAAS,SAAAr0K,GACL,EAAK4wL,aAAa,CACdjzK,WAAY,EACZ7lB,MAAOkI,GAEd,EACD5D,KAAMA,EACNijM,YAAaA,EACb7wJ,mBAAoB,CAAC,IAEzB,IAAIq1N,EAAc9sQ,KAAK6sQ,YAAY7yM,WAAWoU,SA3DT,uCA2D0DA,SA7DzD,wCA8DtCpuE,KAAK+sQ,YAAc/sQ,KAAKmjK,iBAAiBpyF,GAAE,SAAU43H,GAAQ,CACzDxqJ,mBAAmB,EACnB13B,KAAMu5B,EAAa,cAAgB,eACnCs9H,QAAS,SAAAr0K,GACL,EAAK4wL,aAAa,CACdjzK,UAAW,EACX7lB,MAAOkI,GAEd,EACD5D,KAAMA,EACNijM,YAAaA,EACb7wJ,mBAAoB,CAAC,IAEzB,IAAIu1N,EAAchtQ,KAAK+sQ,YAAY/yM,WAAWoU,SAxEb,mCAwE0DA,SA1EzD,oCA2ElCpuE,KAAKitQ,SAAWjtQ,KAAKmjK,iBAAiBpyF,GAAE,SAAS3C,SAvEX,8BAuE8Du6H,GAAQ,CACxGxqJ,mBAAmB,EACnBm/H,QAAS,SAAAr0K,GACL,EAAK0jQ,oBAAoB,CACrB5rQ,MAAOkI,GAEd,EACD5D,KAAMA,EACNijM,YAAaA,EACb9oL,SAAU,SAAC1gB,EAAG+xC,GAGN,EAAKlE,SADLhmC,KAEwBtE,MAAM,OACjB3B,SAAQ,SAAAwsQ,GACrBn8L,GAAElgC,GAASlrC,OAAOorE,GAAE,UAAU3C,SArF1B,kBAqFsDznE,KAAKumQ,GAClE,GACJ,EACDz1N,mBAAoB,CAAC,IAEzB,IAAI01N,EAAWntQ,KAAKitQ,SAASjzM,WAC7Bh6D,KAAKg6D,WAAWr0D,OAAOmnQ,EAAaK,EAAUH,EACjD,+BACD,WACIhtQ,KAAKitQ,SAAStgO,OAAO,OAAQ3sC,KAAK2sC,OAAO,QAC5C,6BACD,SAAaygO,EAAclvQ,GACvB,IACIgtB,EAASlrB,KADI,IAAMotQ,EAAe,UAElCliP,IACAA,EAAOyhB,OAAO,WAAYzuC,GAC1BgtB,EAAO8uC,WAAWiU,YAvGe,sCAuGqC/vE,GAE7E,+BACD,SAAeN,GACX,GACS,SADDA,EAAKxE,KAEL4G,KAAK4sQ,sBAGL,6DAAqBhvQ,EAEhC,OA/GC6uQ,CAAkB7nE,IAiHxB,MCrGcvhJ,GACVuhJ,GAAAA,SAQAyoE,GAA4B,yBAE5BC,GAA+B,4BAC/BC,GAA+B,4BAC/BC,GAAkC,+BAClCC,GAAwC,qCACxCC,GAAsC,mCACtCC,GAAkC,+BAClCC,GAAgC,6BAChCC,GAAgC,6BAChCC,GAAyB,WAAW79P,OAXF,+BAW0C,KAC5E89P,GAA8BvqH,GAAaywE,GAAgB,cAC3D+5C,GAAmCxqH,GAAayqH,GAAqB,cACrEC,GAA0B,iBAC1BC,GAAWvpE,GAAAA,QAAe,CAC1BwpE,aAAc,WACV,MAAO,MACV,EACDxwG,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BluB,KAAM,IAAInxB,KACVq7C,mBAAmB,EACnBkwN,aAAc,KACdC,cAAe,KACfhvN,YAAa,KACbivN,YAAa,KACbC,SAAU,EACVC,SAAU,EACVC,qBAAqB,EACrBC,WAAY,kBAAM,IAAI7rQ,IAAV,GAEnB,EACDwlK,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAK4uQ,aACR,EACDA,YAAa,WACT5uQ,KAAKg6D,WAAWr0D,OAAO3F,KAAK6uQ,gBAC5B7uQ,KAAK8uQ,8BACL9uQ,KAAK+uQ,cACL/uQ,KAAKgvQ,uBACLhvQ,KAAK8zP,eACL9zP,KAAKivQ,eACLjvQ,KAAKi0P,eACR,EACD4a,aAAc,WACV7uQ,KAAKkvQ,QAAUn+L,GAAE,WACjB,IAAIo+L,EAAsB/kJ,GAAAA,OAA2B,6BACjDglJ,EAAuBhlJ,GAAAA,OAA2B,8BAKtD,OAJApqH,KAAK86M,QAAQ,CACTpjM,MAAO,GAAGzH,OAAOk/P,EAAqB,MAAMl/P,OAAOm/P,GACnDl9O,KAAM,QACPlyB,KAAKkvQ,SACDlvQ,KAAKkvQ,OACf,EACDH,YAAa,WACT/uQ,KAAKopN,MAAQr4I,GAAE,WAAWpC,SAAS3uE,KAAKkvQ,SAKxC,IAJA,IAAIG,EAAU,CACVC,SAAUtvQ,KAAKuvQ,oBACfC,aAAc,MAETC,EAAW,EAAGjB,EAAWxuQ,KAAK2sC,OAAO,YAAa8iO,EAAWjB,EAAUiB,IAAY,CACxFJ,EAAQK,IAAM1vQ,KAAK2vQ,aACnB,IAAK,IAAIC,EAAW,EAAGnB,EAAWzuQ,KAAK2sC,OAAO,YAAaijO,EAAWnB,EAAUmB,IAC5E5vQ,KAAK6vQ,YAAYR,EAASO,GAE9B5vQ,KAAK8vQ,sBAAsBT,EAC9B,CACJ,EACDM,WAAY,WACR,IAAID,EAAM7yM,EAAAA,EAAAA,cAAyB,MAGnC,OAFA78D,KAAK86M,QAAQ,OAAQ,MAAO/pI,GAAE2+L,IAC9B1vQ,KAAKopN,MAAMxvN,IAAI,GAAG2O,YAAYmnQ,GACvBA,CACV,EACDK,YAAa,SAAST,EAAUU,GAC5B,IAAIC,EAAOpzM,EAAAA,EAAAA,cAAyB,MAChCqzM,EAAQn/L,GAAEk/L,GAQd,OAPAA,EAAK93P,UAAYnY,KAAKmwQ,oBAAoBb,EAAUU,GACpDC,EAAK3nQ,aAAa,aAAcssH,GAAAA,cAAgC06I,EAAUc,GAAAA,uBAC1EhwM,EAAY6vM,EAAM/B,GAAyBoB,GAC3CtvQ,KAAK86M,QAAQ,CACT5oL,KAAM,WACNxa,MAAO1X,KAAKqwQ,iBAAiBf,IAC9BY,GACI,CACHD,KAAMA,EACNC,MAAOA,EAEd,EACDL,YAAa,SAASvrQ,EAAQ0rQ,GAC1B,IACcV,EAGVhrQ,EAHAgrQ,SACcE,EAEdlrQ,EAFAkrQ,aACKE,EACLprQ,EADAorQ,IAEAF,GACAY,GAAAA,eAA6BZ,EAAcF,GAE/ChrQ,EAAOkrQ,aAAeF,EACtB,IAAI,EAGAtvQ,KAAK+vQ,YAAYT,EAAUU,GAFrBC,EADV,EACIA,KACOC,EAFX,EAEIA,MAEA7B,EAAeruQ,KAAK2sC,OAAO,gBAC/BokC,GAAE2+L,GAAK/pQ,OAAOsqQ,GACV5B,EACAA,EAAa//N,OAAOtuC,KAAKswQ,yBAAyBhB,EAAUU,EAAWE,IAEvED,EAAK3iM,UAAYttE,KAAKuwQ,aAAajB,GAEvChrQ,EAAOgrQ,SAAWtvQ,KAAKwwQ,iBAAiBlB,EAC3C,EACDa,oBAAqB,SAASb,EAAUU,GACpC,IAAI73P,EAxHc,mBAgJlB,OAvBInY,KAAKywQ,aAAanB,KAClBn3P,GAAa,IAAIlI,OAnHF,uBAqHfjQ,KAAK0wQ,kBAAkBpB,IAAatvQ,KAAK2wQ,eAAerB,MACxDn3P,GAAa,IAAIlI,OAAOo9P,KAExBrtQ,KAAK4wQ,aAAatB,KAClBn3P,GAAa,IAAIlI,OAjIG,2BAmIpB,UAAYjQ,KAAK2sC,OAAO,mBACpB,IAAMqjO,IACN73P,GAAa,IAAIlI,OAjIM,kCAmIvB+/P,IAAchwQ,KAAK2sC,OAAO,YAAc,IACxCx0B,GAAa,IAAIlI,OAnII,gCAqIrBjQ,KAAK6wQ,mBAAmBvB,KACxBn3P,GAAa,IAAIlI,OAzID,2BA2IhBjQ,KAAK8wQ,iBAAiBxB,KACtBn3P,GAAa,IAAIlI,OA3IH,0BA8IfkI,CACV,EACDm4P,yBAA0B,SAAShB,EAAUU,EAAWE,GACpD,IAAIa,EAAazB,aAAoBxsQ,KAIrC,MAAO,CACH2yC,MAAO,CACH9uC,KALGoqQ,EAAa/wQ,KAAKuwQ,aAAajB,GAAYA,EAM9Cr7O,KALG88O,EAAazB,OAAW,EAM3BtyN,KALGh9C,KAAKouQ,gBAOZ7mQ,UAAWs6I,GAAiBquH,GAC5B/uQ,MAAO6uQ,EAEd,EACD/b,cAAe,WAAW,WACtBj0P,KAAKgxQ,yBACLzyM,EAAAA,EAAAA,IAAiBv+D,KAAKkvQ,QAASnB,IAC/BxvM,EAAAA,EAAAA,GAAgBv+D,KAAKkvQ,QAASnB,GAA6BD,IAAwB,SAAA7kQ,GAC1E8nE,GAAE9nE,EAAEu2D,eAAe8O,SAAS++L,KAC7B,EAAK4D,iBAAiB,CAClBlwQ,MAAOkI,EACP/K,MAAO6yE,GAAE9nE,EAAEu2D,eAAellE,KAAK4zQ,KAG1C,IACD3vM,EAAAA,EAAAA,IAAiBv+D,KAAKkvQ,QAASlB,IAC3B,UAAYhuQ,KAAK2sC,OAAO,mBACxB3sC,KAAKkxQ,yBACL3yM,EAAAA,EAAAA,GAAgBv+D,KAAKkvQ,QAASlB,GAAkCF,IAAwB,SAAA7kQ,GAC/E8nE,GAAE9nE,EAAEu2D,eAAe8O,SAAS++L,KAC7B,EAAK8D,iBAAiB,CAClBpwQ,MAAOkI,EACP/K,MAAO6yE,GAAE9nE,EAAEu2D,eAAellE,KAAK4zQ,KAG1C,IAER,EACD8C,uBAAwB,WACpBhxQ,KAAKixQ,iBAAmBjxQ,KAAK2/J,sBAAsB,cACtD,EACDuxG,uBAAwB,WACpBlxQ,KAAKmxQ,iBAAmBnxQ,KAAK2/J,sBAAsB,cACtD,EACDmvG,4BAA6B,WACzB,IAAIR,EAAgBtuQ,KAAK2sC,OAAO,iBAChC3sC,KAAKoxQ,sBAAwBvsQ,MAAMC,QAAQwpQ,GAAiBtuQ,KAAKqxQ,gCAAgC/C,GAAiBA,GAAiBxsP,GAAAA,IACtI,EACDuvP,gCAAiC,SAAS/C,GACtC,OAAOxsP,GAAAA,IACV,EACD2uP,aAAcptN,GACdqtN,kBAAmBrtN,GACnBstN,eAAgB,SAASrB,GACrB,IAAI1oL,EAAY,CACZ3yD,KAAMq7O,EACNtyN,KAAMh9C,KAAKouQ,gBAEf,OAAOpuQ,KAAKoxQ,sBAAsBxqL,EACrC,EACDgqL,aAAcvtN,GACdwtN,mBAAoBxtN,GACpBytN,iBAAkBztN,GAClBktN,aAAcltN,GACdksN,kBAAmBlsN,GACnBmtN,iBAAkBntN,GAClB2rN,qBAAsB,SAASsC,GAC3B,GAAKtxQ,KAAK2sC,OAAO,qBAAjB,CAGA2kO,EAAgBA,GAAiBtxQ,KAAK2sC,OAAO,iBAC7C,IAAI4kO,EAAoBvxQ,KAAKwxQ,oBACzBC,EAAoBzxQ,KAAK0xQ,eAAeJ,GAC5CC,EAAkBljM,YAAYw/L,IAC1ByD,GACAG,EAAkBrjM,SAASy/L,GAN9B,CAQJ,EACD2D,kBAAmB,WACf,OAAOxxQ,KAAKkvQ,QAAQlzQ,KAAK,IAAIiU,OAAO49P,IACvC,EACD/Z,aAAc,WACV,GAAK9zP,KAAK2sC,OAAO,uBAAjB,CAGA,IAAIzuC,EAAQ8B,KAAK2sC,OAAO,SACnB9nC,MAAMC,QAAQ5G,KACfA,EAAQ,CAACA,IAEb8B,KAAK2xQ,qBAAqBzzQ,EALzB,CAMJ,EACDyzQ,qBAAsB,SAASzzQ,GAAO,IAC9B0zQ,EAD8B,OAE9B5xQ,KAAK6xQ,iBAAmB7xQ,KAAK8xQ,iBAGjC,QAAUF,EAAwB5xQ,KAAK+xQ,uBAAoB,IAAWH,GAAiCA,EAAsBlxQ,SAAQ,SAAAwvQ,GACjIA,EAAM7hM,YAAYi/L,GACrB,IACDttQ,KAAK+xQ,gBAAkB7zQ,EAAM6F,KAAI,SAAA7F,GAAK,OAAI,EAAKwzQ,eAAexzQ,EAAxB,IACtC8B,KAAK+xQ,gBAAgBrxQ,SAAQ,SAAAwvQ,GACzBA,EAAM9hM,SAASk/L,GAClB,IACJ,EACD2B,aAAc,WAAW,IACjB+C,EAAoBC,EAAuBC,EAAuBC,EAAuBC,EAAuBC,EAAuBC,EAAwBC,EAD9I,OAEjB,EAIAvyQ,KAAK2sC,SAHgB+hO,EADzB,EACIA,oBACOxwQ,EAFX,EAEIA,MACOm8H,EAHX,EAGIA,MAECq0I,GAAwB1uQ,KAAK6xQ,gBAAmB7xQ,KAAK8xQ,iBAG1D,QAAUE,EAAqBhyQ,KAAKwyQ,oBAAiB,IAAWR,GAA8BA,EAAmBtxQ,SAAQ,SAAAwvQ,GACrHA,EAAM7hM,YAAYk/L,GACrB,IACD,QAAU0E,EAAwBjyQ,KAAKyyQ,2BAAwB,IAAWR,GAAiCA,EAAsBvxQ,SAAQ,SAAAwvQ,GACrIA,EAAM7hM,YAAYm/L,GACrB,IACD,QAAU0E,EAAwBlyQ,KAAK0yQ,6BAA0B,IAAWR,GAAiCA,EAAsB7jM,YAAYo/L,IAC/I,QAAU0E,EAAwBnyQ,KAAK2yQ,2BAAwB,IAAWR,GAAiCA,EAAsB9jM,YAAYq/L,IAC7I,QAAU0E,EAAwBpyQ,KAAK4yQ,4BAAyB,IAAWR,GAAiCA,EAAsB/jM,YAAYs/L,IAC9I,QAAU0E,EAAwBryQ,KAAK6yQ,0BAAuB,IAAWR,GAAiCA,EAAsBhkM,YAAYu/L,IAC5I5tQ,KAAKwyQ,aAAen4I,EAAMt2H,KAAI,SAAA7F,GAAK,OAAI,EAAKwzQ,eAAexzQ,EAAxB,IACnC8B,KAAK4yQ,qBAAuB5yQ,KAAK0xQ,eAAexzQ,EAAM,IACtD8B,KAAK6yQ,mBAAqB7yQ,KAAK0xQ,eAAexzQ,EAAM,IACpD8B,KAAKwyQ,aAAa9xQ,SAAQ,SAAAwvQ,GACtBA,EAAM9hM,SAASm/L,GAClB,IACD,QAAU+E,EAAyBtyQ,KAAK4yQ,4BAAyB,IAAWN,GAAkCA,EAAuBlkM,SAASu/L,IAC9I,QAAU4E,EAAyBvyQ,KAAK6yQ,0BAAuB,IAAWN,GAAkCA,EAAuBnkM,SAASw/L,IAC/I,EACDkF,oBApQ0B,WAoQJ,IACdC,EAAwBC,EAAwBC,EAAwBC,EAAwBC,EADlF,OAEd,EAGAnzQ,KAAK2sC,SAFgB+hO,EADzB,EACIA,oBACc0E,EAFlB,EAEIA,aAEC1E,GAAwB1uQ,KAAK6xQ,gBAAmB7xQ,KAAK8xQ,iBAG1D,QAAUiB,EAAyB/yQ,KAAKyyQ,2BAAwB,IAAWM,GAAkCA,EAAuBryQ,SAAQ,SAAAwvQ,GACxIA,EAAM7hM,YAAYm/L,GACrB,IACD,QAAUwF,EAAyBhzQ,KAAK0yQ,6BAA0B,IAAWM,GAAkCA,EAAuB3kM,YAAYo/L,IAClJ,QAAUwF,EAAyBjzQ,KAAK2yQ,2BAAwB,IAAWM,GAAkCA,EAAuB5kM,YAAYq/L,IAChJ1tQ,KAAKyyQ,oBAAsBW,EAAarvQ,KAAI,SAAA7F,GAAK,OAAI,EAAKwzQ,eAAexzQ,EAAxB,IACjD8B,KAAK0yQ,sBAAwB1yQ,KAAK0xQ,eAAe0B,EAAa,IAC9DpzQ,KAAK2yQ,oBAAsB3yQ,KAAK0xQ,eAAe0B,EAAaA,EAAazyQ,OAAS,IAClFX,KAAKyyQ,oBAAoB/xQ,SAAQ,SAAAwvQ,GAC7BA,EAAM9hM,SAASo/L,GAClB,IACD,QAAU0F,EAAyBlzQ,KAAK0yQ,6BAA0B,IAAWQ,GAAkCA,EAAuB9kM,SAASq/L,IAC/I,QAAU0F,EAAyBnzQ,KAAK2yQ,2BAAwB,IAAWQ,GAAkCA,EAAuB/kM,SAASs/L,IAChJ,EACDoE,aAAc,WACV,MAAO,UAAY9xQ,KAAK2sC,OAAO,YAClC,EACDklO,aAAc,WACV,MAAO,UAAY7xQ,KAAK2sC,OAAO,gBAClC,EACD0jO,iBAAkB,SAASp8O,GACvB,OAAOj0B,KAAKuwQ,aAAat8O,EAC5B,EACDo/O,uBAAwB,WACpB,IAAIp/O,EAAOj0B,KAAK2sC,OAAO,QACnB9pB,EAAM7iB,KAAK2sC,OAAO,OAEtB,OADA1Y,EAAOm8O,GAAAA,qBAAmCpwQ,KAAKouQ,eAAgBn6O,GACxD,IAAInxB,KAAK+f,GAAOoR,EAAOpR,EAAMA,EAAMoR,EAC7C,EACDy9O,eAAgBruN,GAChBiwN,WAAYjwN,GACZy8G,eAAgB,SAASliK,GACrB,IACUxE,EAENwE,EAFAxE,KACO8E,EACPN,EADAM,MAEJ,OAAQ9E,GACJ,IAAK,QACD4G,KAAK8zP,eACL,MACJ,IAAK,QACD9zP,KAAKivQ,eACL,MACJ,IAAK,eACDjvQ,KAAK8yQ,sBACL,MACJ,IAAK,gBACD9yQ,KAAKgvQ,qBAAqB9wQ,GAC1B,MACJ,IAAK,cACD8B,KAAKgxQ,yBACL,MACJ,IAAK,cACDhxQ,KAAKkxQ,yBACL,MACJ,IAAK,MACL,IAAK,MACL,IAAK,gBACL,IAAK,eACL,IAAK,gBACDlxQ,KAAKypK,cACL,MACJ,IAAK,aACDzpK,KAAK+uQ,cACL,MACJ,QACI/uQ,KAAKmiD,SAASvkD,GAEzB,IAEL,MCxXI21Q,GAAQ,CACRr/O,MAAOi6O,GAAAA,QAAiB,CACpBC,aAAc,WACV,MAAO,OACV,EACDxwG,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjE,eAAgB,EAChBswN,SAAU,EACVC,SAAU,GAEjB,EACDG,YAAa,WACT5uQ,KAAKmiD,WACLniD,KAAKwzQ,eACR,EACDzE,YAAa,WACT/uQ,KAAKmiD,WACLniD,KAAKkvQ,QAAQlzQ,KAAK,IAAIiU,OApBF,2BAoBqCm+D,SArBpC,0BAsBxB,EACD4pI,mBAAoBl2L,GAAAA,KACpBuuP,iBAAkB,SAASp8O,GACvB,OAAOm0F,GAAAA,OAAwBn0F,EAAM,WACxC,EACDu/O,cAAe,WACX,IAAIC,EAAa1iM,GAAE,QACf2iM,EAAU3iM,GAAE,WAAWprE,OAAO8tQ,GAClCzzQ,KAAKkvQ,QAAQ5nQ,QAAQosQ,GACrB,IAAK,IAAI9D,EAAW,EAAGnB,EAAWzuQ,KAAK2sC,OAAO,YAAaijO,EAAWnB,EAAUmB,IAC5E5vQ,KAAK2zQ,kBAAkB/D,EAAU6D,GAEjCzzQ,KAAK2sC,OAAO,oBACZ3sC,KAAK4zQ,sBAAsBH,EAElC,EACDE,kBAAmB,SAAS3D,EAAWyD,GACnC,IACoBv1N,EAChBl+C,KAAK2sC,SADLuR,eAEA,EAGAl+C,KAAK6zQ,eAAe31N,EAAiB8xN,GAF/B8D,EADV,EACIC,KACaC,EAFjB,EAEIprL,YAEAsnL,EAAQn/L,GAAE,QAAQ7C,KAAK,CACvB+lM,MAAO,MACPC,KAAMJ,IACPntQ,KAAKqtQ,GACRP,EAAW9tQ,OAAOuqQ,EACrB,EACD0D,sBAAuB,SAASH,GAC5B,IAAIU,EAAwBpjM,GAAE,QAAQ7C,KAAK,CACvC+lM,MAAO,MACPC,KAAM,aACNrrG,MAAO,0BAEX4qG,EAAWnsQ,QAAQ6sQ,EACtB,EACDrE,sBAAuB,SAAST,GAC5B,IAAI,EAGArvQ,KAAK2sC,SAFYynO,EADrB,EACIA,gBACc/F,EAFlB,EAEIA,aAEJ,GAAK+F,EAAL,CAGA,IAAIzvL,EAAa3kF,KAAKq0Q,eAAehF,EAAQG,cACzCS,EAAOpzM,EAAAA,EAAAA,cAAyB,MAChCqzM,EAAQn/L,GAAEk/L,GACdA,EAAK93P,UArEqB,+BAsEtBk2P,EACAA,EAAa//N,OAAOtuC,KAAKswQ,yBAAyB3rL,GAAa,EAAGurL,IAElED,EAAK3iM,UAAYqX,EAErB0qL,EAAQK,IAAIpoQ,QAAQ2oQ,GACpBjwQ,KAAK86M,QAAQ,CACT5oL,KAAM,WACNxa,MAAO,QAAQzH,OAAO00E,IACvBurL,EAdF,CAeJ,EACDmE,eAAgB,SAASpgP,GACrB,IAAI,EAGAj0B,KAAK2sC,SAFW2nO,EADpB,EACIA,eACgBp2N,EAFpB,EAEIA,eAEJ,MAAI,SAAWo2N,EACJtyL,GAAAA,cAAwB/tD,EAAMiqB,EAAgB,IAAMA,EAAiB,gBAAkB,YAE3F8jC,GAAAA,cAAwB/tD,EAAMiqB,EAAgBo2N,EACxD,EACDC,oBAAqB,WACjB,OAAOnsJ,GAAAA,OAAwBpoH,KAAK2sC,OAAO,QAAS,eACvD,EACD8jO,aAAc,SAASnB,GACnB,IAAIkF,EAAQx0Q,KAAK2sC,OAAO,aAAZ3sC,GACZ,OAAOgiF,GAAAA,SAAmBstL,EAAUkF,EACvC,EACD9D,kBAAmB,SAASpB,GACxB,IAAIzzI,EAAU77H,KAAK2sC,OAAO,OACtBgvF,EAAU37H,KAAK2sC,OAAO,OAC1B,OAAQq1C,GAAAA,YAAsBstL,EAAUzzI,EAASF,EAAS,OAC7D,EACDi1I,aAAc,SAAStB,GACnB,OAAOA,EAASlwL,aAAep/E,KAAK2sC,OAAO,QAAQyyC,UACtD,EACDyxL,mBAAoB,SAASvB,GACzB,OAAOttL,GAAAA,SAAmBstL,EAAUttL,GAAAA,kBAA4BhiF,KAAK2sC,OAAO,SAC/E,EACDmkO,iBAAkB,SAASxB,GACvB,OAAOttL,GAAAA,SAAmBstL,EAAUttL,GAAAA,iBAA2BhiF,KAAK2sC,OAAO,SAC9E,EACD4jO,aAAc,SAASjB,GACnB,OAAOlnJ,GAAAA,OAAwBknJ,EAAU,IAC5C,EACDuE,eAAgB,SAASl2L,GACrB,IACIgpC,EAAWhpC,EADE39E,KAAK2sC,OAAO,YAE7B,MAAO,CACHonO,KAAM3rJ,GAAAA,cAA+BzB,GACrC/9B,YAAaw/B,GAAAA,YAA6B,eAAezB,GAEhE,EACD4oJ,kBAAmB,WACf,IACoBrxN,EAChBl+C,KAAK2sC,SADLuR,eAEAu2N,EAAWzyL,GAAAA,kBAA4BhiF,KAAK2sC,OAAO,SACnD+nO,EAAsBx2N,EAAiBu2N,EAASvzL,SAChDyzL,EAAa30Q,KAAK2sC,OAAO,YAK7B,OAJI+nO,GAAuB,IACvBA,GAAuBC,GAE3BF,EAASx1L,QAAQw1L,EAASz0L,UAAY00L,GAC/BD,CACV,EACDjE,iBAAkB,SAASv8O,GAGvB,OAFAA,EAAO,IAAInxB,KAAKmxB,IACXgrD,QAAQhrD,EAAK+rD,UAAY,GACvB/rD,CACV,EACDy9O,eAAgB,SAASz9O,GACrB,OAAOj0B,KAAKkvQ,QAAQlzQ,KAAK,kBAAkBiU,OAAO2kH,GAAAA,cAAgC3gG,EAAM+tD,GAAAA,sBAAiC,MAC5H,EACDsxL,WAAY,SAASr/O,GACjB,OAAO+tD,GAAAA,iBAA2B/tD,EAAMj0B,KAAK2sC,OAAO,SAAWq1C,GAAAA,iBAA2B/tD,EAAMj0B,KAAK2sC,OAAO,OAC/G,EACD0kO,gCAAiC,SAAS/C,GACtC,OAAO,SAAS1wQ,GACZ,IAAIg3Q,EAAiBtG,EAAcn8M,MAAM,SAASvtD,GAC9C,OAAOo9E,GAAAA,SAAmBp9E,EAAMhH,EAAKq2B,KACxC,IACD,GAAI2gP,EACA,OAAO,CAEd,CACJ,IAEL/2L,KAAMswL,GAAAA,QAAiB,CACnBC,aAAc,WACV,MAAO,MACV,EACDqC,aAAc,SAASnB,GACnB,IAAIkF,EAAQx0Q,KAAK2sC,OAAO,aAAZ3sC,GACZ,OAAOgiF,GAAAA,iBAA2BstL,EAAUkF,EAC/C,EACD9D,kBAAmB,SAASpB,GACxB,OAAQttL,GAAAA,YAAsBstL,EAAUttL,GAAAA,kBAA4BhiF,KAAK2sC,OAAO,QAASq1C,GAAAA,iBAA2BhiF,KAAK2sC,OAAO,QACnI,EACDikO,aAAc,WACV,OAAO,CACV,EACDC,mBAAoB,WAChB,OAAO,CACV,EACDC,iBAAkB,WACd,OAAO,CACV,EACDP,aAAc,SAASjB,GACnB,OAAOlnJ,GAAAA,cAA+B,eAAeknJ,EAASlwL,WACjE,EACDmwL,kBAAmB,WACf,IAAIxqL,EAAc/kF,KAAK2sC,OAAO,QAC1BryC,EAAO,IAAIwI,KAAKiiF,GAGpB,OAFAzqF,EAAK2kF,QAAQ,GACb3kF,EAAK0kF,SAAS,GACP1kF,CACV,EACDk2Q,iBAAkB,SAASv8O,GAGvB,OAFAA,EAAO,IAAInxB,KAAKmxB,IACX+qD,SAAS/qD,EAAKmrD,WAAa,GACzBnrD,CACV,EACDy9O,eAAgB,SAASz9O,GACrB,IAAI4gP,EAAY,IAAI/xQ,KAAKmxB,GAEzB,OADA4gP,EAAU51L,QAAQ,GACXj/E,KAAKkvQ,QAAQlzQ,KAAK,kBAAkBiU,OAAO2kH,GAAAA,cAAgCigJ,EAAW7yL,GAAAA,sBAAiC,MACjI,EACDquL,iBAAkB,SAASp8O,GACvB,OAAOm0F,GAAAA,OAAwBn0F,EAAM,eACxC,EACDsgP,oBAAqB,WACjB,OAAOnsJ,GAAAA,OAAwBpoH,KAAK2sC,OAAO,QAAS,OACvD,EACD2mO,WAAY,SAASr/O,GACjB,OAAO+tD,GAAAA,SAAmB/tD,EAAMj0B,KAAK2sC,OAAO,SAAWq1C,GAAAA,SAAmB/tD,EAAMj0B,KAAK2sC,OAAO,OAC/F,EACDmjO,sBAAuBhuP,GAAAA,OAE3BgzP,OAAQ3G,GAAAA,QAAiB,CACrBC,aAAc,WACV,MAAO,QACV,EACDqC,aAAc,SAASnB,GACnB,IAAIkF,EAAQx0Q,KAAK2sC,OAAO,aAAZ3sC,GACZ,OAAOgiF,GAAAA,SAAmBstL,EAAUkF,EACvC,EACD9D,kBAAmB,SAASpB,GACxB,IAAIzsP,EAAM7iB,KAAK2sC,OAAO,OAClBlV,EAAMz3B,KAAK2sC,OAAO,OACtB,OAAQq1C,GAAAA,YAAsBstL,EAAS1vL,cAAe/8D,GAAOA,EAAI+8D,cAAenoD,GAAOA,EAAImoD,cAC9F,EACDgxL,aAAc,SAAStB,GACnB,IAAIr7O,EAAO,IAAInxB,KAAKwsQ,GAEpB,OADAr7O,EAAK+qD,SAAS,IACNgD,GAAAA,WAAqB/tD,EAAMj0B,KAAK2sC,OAAO,QAClD,EACDkkO,mBAAoB,WAChB,OAAO,CACV,EACDC,iBAAkB,WACd,OAAO,CACV,EACDP,aAAc,SAASjB,GACnB,OAAOlnJ,GAAAA,OAAwBknJ,EAAU,OAC5C,EACDC,kBAAmB,WACf,IAAI1xL,EAAOmE,GAAAA,qBAA+BhiF,KAAK2sC,OAAO,SAAW,EACjE,OAAOq1C,GAAAA,uBAAiCnE,EAAM,EAAG,EACpD,EACD2yL,iBAAkB,SAASv8O,GAGvB,OAFAA,EAAO,IAAInxB,KAAKmxB,IACX0rD,YAAY1rD,EAAK2rD,cAAgB,GAC/B3rD,CACV,EACDsgP,oBAAqB,WACjB,IAAIxvL,EAAc/kF,KAAK2sC,OAAO,QAC1BooO,EAAoB/yL,GAAAA,qBAA+B+C,GACnDe,EAAY,IAAIhjF,KAAKiiF,GACrBgB,EAAU,IAAIjjF,KAAKiiF,GAGvB,OAFAe,EAAUnG,YAAYo1L,GACtBhvL,EAAQpG,YAAYo1L,EAAoB,GACjC3sJ,GAAAA,OAAwBtiC,EAAW,QAAU,IAAMsiC,GAAAA,OAAwBriC,EAAS,OAC9F,EACDivL,sBAAuB,SAASjwL,EAAa7mF,GACzC,OAAO8jF,GAAAA,WAAqB+C,EAAa7mF,EAC5C,EACDwzQ,eAAgB,SAASz9O,GACrB,IAAI4gP,EAAY,IAAI/xQ,KAAKmxB,GAGzB,OAFA4gP,EAAU51L,QAAQ,GAClB41L,EAAU71L,SAAS,GACZh/E,KAAKkvQ,QAAQlzQ,KAAK,kBAAkBiU,OAAO2kH,GAAAA,cAAgCigJ,EAAW7yL,GAAAA,sBAAiC,MACjI,EACDsxL,WAAY,SAASr/O,GACjB,OAAO+tD,GAAAA,WAAqB/tD,EAAMj0B,KAAK2sC,OAAO,SAAWq1C,GAAAA,WAAqB/tD,EAAMj0B,KAAK2sC,OAAO,OACnG,EACDmjO,sBAAuBhuP,GAAAA,OAE3BmzP,QAAS9G,GAAAA,QAAiB,CACtBC,aAAc,WACV,MAAO,SACV,EACDqC,aAAc,SAASnB,GACnB,IAAIkF,EAAQx0Q,KAAK2sC,OAAO,aAAZ3sC,GACZ,OAAOgiF,GAAAA,WAAqBstL,EAAUkF,EACzC,EACD9D,kBAAmB,SAASpB,GACxB,IAAIwF,EAAS9yL,GAAAA,qBAA+BstL,GACxC4F,EAAYlzL,GAAAA,qBAA+BhiF,KAAK2sC,OAAO,QACvDwoO,EAAYnzL,GAAAA,qBAA+BhiF,KAAK2sC,OAAO,QAC3D,OAAQq1C,GAAAA,YAAsB8yL,EAAQI,EAAWC,EACpD,EACDvE,aAAc,SAAStB,GACnB,IAAIr7O,EAAO,IAAInxB,KAAKwsQ,GAEpB,OADAr7O,EAAK+qD,SAAS,IACNgD,GAAAA,YAAsB/tD,EAAMj0B,KAAK2sC,OAAO,QACnD,EACDkkO,mBAAoB,WAChB,OAAO,CACV,EACDC,iBAAkB,WACd,OAAO,CACV,EACDP,aAAc,SAASjB,GACnB,IAAIxpL,EAAYsiC,GAAAA,OAAwBknJ,EAAU,QAC9CvpL,EAAU,IAAIjjF,KAAKwsQ,GAEvB,OADAvpL,EAAQpG,YAAYoG,EAAQnG,cAAgB,GACrCkG,EAAY,MAAQsiC,GAAAA,OAAwBriC,EAAS,OAC/D,EACDwpL,kBAAmB,WACf,IAAIuF,EAAS9yL,GAAAA,wBAAkChiF,KAAK2sC,OAAO,SAAW,GACtE,OAAOq1C,GAAAA,uBAAiC8yL,EAAQ,EAAG,EACtD,EACDtE,iBAAkB,SAASv8O,GAGvB,OAFAA,EAAO,IAAInxB,KAAKmxB,IACX0rD,YAAY1rD,EAAK2rD,cAAgB,IAC/B3rD,CACV,EACDy9O,eAAgB,SAASz9O,GACrB,IAAI4gP,EAAY,IAAI/xQ,KAAKmxB,GAIzB,OAHA4gP,EAAU51L,QAAQ,GAClB41L,EAAU71L,SAAS,GACnB61L,EAAUl1L,YAAYqC,GAAAA,qBAA+B6yL,IAC9C70Q,KAAKkvQ,QAAQlzQ,KAAK,kBAAkBiU,OAAO2kH,GAAAA,cAAgCigJ,EAAW7yL,GAAAA,sBAAiC,MACjI,EACDuyL,oBAAqB,WACjB,IAAIxvL,EAAc/kF,KAAK2sC,OAAO,QAC1ByoO,EAAuBpzL,GAAAA,wBAAkC+C,GACzDe,EAAY,IAAIhjF,KAAKiiF,GACrBgB,EAAU,IAAIjjF,KAAKiiF,GAGvB,OAFAe,EAAUnG,YAAYy1L,GACtBrvL,EAAQpG,YAAYy1L,EAAuB,IACpChtJ,GAAAA,OAAwBtiC,EAAW,QAAU,IAAMsiC,GAAAA,OAAwBriC,EAAS,OAC9F,EACDutL,WAAY,SAASr/O,GACjB,OAAO+tD,GAAAA,YAAsB/tD,EAAMj0B,KAAK2sC,OAAO,SAAWq1C,GAAAA,YAAsB/tD,EAAMj0B,KAAK2sC,OAAO,OACrG,EACDmjO,sBAAuBhuP,GAAAA,QAG/B,MCxVMuzP,GAAAA,WACF,WAAYjkP,IAAW,eACnBpxB,KAAKs1Q,SAAWlkP,CACnB,0CACD,SAAWoe,GACP,OAAOxvC,KAAKs1Q,SAASC,YAAY/lO,EACpC,0BACD,SAAUtxC,EAAO+K,GACbjJ,KAAKs1Q,SAASE,WAAWt3Q,EAAO+K,EACnC,6BACD,WACIjJ,KAAKs1Q,SAASG,eAAgB,CACjC,mCACD,SAAmBv3Q,EAAO28J,GACtB76J,KAAKs1Q,SAASI,oBAAoBx3Q,EAAO28J,GACrC38J,EAAM,IAAM8B,KAAKs1Q,SAAS3oO,OAAO,eAAe+oB,YAAcx3D,EAAM,GAAGw3D,WACvE11D,KAAKs1Q,SAASK,cAAcz3Q,EAAM,GAEzC,oCACD,SAAoBA,EAAO28J,GAAe,IAClCzuG,EAAQwpN,EAD0B,OAEtC13Q,GAAS,QAAUkuD,EAASluD,SAAU,IAAWkuD,OAAS,EAASA,EAAOroD,KAAI,SAAAa,GAAI,OAAI,EAAKixQ,eAAejxQ,EAAxB,MAAmC,GACrHi2J,GAAiB,QAAU+6G,EAAiB/6G,SAAkB,IAAW+6G,OAAiB,EAASA,EAAe7xQ,KAAI,SAAAa,GAAI,OAAI,EAAKixQ,eAAejxQ,EAAxB,MAAmC,GAC7J5E,KAAK81Q,kBAAkB53Q,GACvB8B,KAAK+1Q,mBAAmB73Q,EAAO28J,GAC1B76J,KAAKg2Q,qBACNh2Q,KAAKs1Q,SAASW,mBAElBj2Q,KAAKg2Q,qBAAsB,CAC9B,sCACD,SAAsB16I,GAClB,GAAIA,EAAM36H,OACN,OAAO,IAAImC,KAAKyG,KAAKsZ,IAAL,MAAAtZ,MAAI,QAAQ+xH,IAEnC,+BACD,SAAep9H,GACX,OAAO8B,KAAKs1Q,SAASO,eAAe33Q,EACvC,gCACD,WACI,OAAO8B,KAAKs1Q,SAASY,iBACxB,mCACD,SAAmB1mO,EAAYiJ,GAC3Bz4C,KAAKs1Q,SAASa,mBAAmB3mO,EAAYiJ,EAChD,kCACD,SAAkBv6C,GACd8B,KAAKm2Q,mBAAmB,QAASj4Q,EACpC,mCACD,SAAmBA,GACf8B,KAAKs1Q,SAAS3oO,OAAO,cAAe,OAASzuC,QAAS,IAAWA,EAAQA,EAAQ,IAAI4E,KACxF,OAjDCuyQ,GAmDN,MClDMe,GAAAA,SAAAA,iCACF,WAAYhlP,GAAW,6BACnB,cAAMA,IACDotI,KAAO,kBAFO,CAGtB,8CACD,WACI,MAAO,CACHtgK,MAAO8B,KAAKq2Q,WAAW,SACvBh8I,MAAO,GACP6sG,cAAe,SAEtB,4BACD,SAAYovC,EAAertQ,GACvBjJ,KAAKu2Q,eACLv2Q,KAAKw2Q,UAAUF,EAAertQ,EACjC,mCACD,SAAmB/K,EAAO28J,GACtB,IAAIzuG,EAAQwpN,EACZ,QAAUxpN,EAASluD,SAAU,IAAWkuD,IAAkBluD,EAAQ,CAAC8B,KAAKq2Q,WAAW,WACnF,QAAUT,EAAiB/6G,SAAkB,IAAW+6G,IAAkC/6G,EAAgB,KAC1G,iEAAyB38J,EAAO28J,EACnC,sCACD,WACI,OAAO76J,KAAKq2Q,WAAW,QAC1B,kCACD,SAAkBn4Q,GACd8B,KAAKm2Q,mBAAmB,QAASj4Q,EAAM,GAC1C,OA3BCk4Q,CAAwCf,IA6B9C,MC7BMoB,GAAAA,SAAAA,iCACF,WAAYrlP,GAAW,6BACnB,cAAMA,IACDotI,KAAO,iBAFO,CAGtB,8CACD,WACI,MAAO,CACHtgK,MAAO8B,KAAKq2Q,WAAW,UACvBh8I,MAAO,GACP6sG,cAAe,QAEtB,4BACD,SAAYovC,EAAertQ,GACvB,IAAI0sB,GAAS,QAAI31B,KAAKq2Q,WAAW,WAC7BK,EAAuB/gP,EAAOghP,WAAU,SAAA1iP,GAAI,OAAK,OAASA,QAAQ,IAAWA,OAAO,EAASA,EAAK2iP,kBAAoBN,EAAcM,cAAxF,IAC5CF,GAAwB,EACxB/gP,EAAOt0B,OAAOq1Q,EAAsB,GAEpC/gP,EAAOv1B,KAAKk2Q,GAEhBt2Q,KAAKu2Q,eACLv2Q,KAAK62Q,mBAAmBP,GACxBt2Q,KAAKg2Q,qBAAsB,EAC3Bh2Q,KAAKw2Q,UAAU7gP,EAAQ1sB,EAC1B,mCACD,SAAmB/K,EAAO28J,GACtB,IAAIzuG,EAAQwpN,EACZ,QAAUxpN,EAASluD,SAAU,IAAWkuD,IAAkBluD,EAAQ8B,KAAKq2Q,WAAW,WAClF,QAAUT,EAAiB/6G,SAAkB,IAAW+6G,IAAkC/6G,EAAgB,KAC1G,iEAAyB38J,EAAO28J,EACnC,sCACD,WACI,IAAIv/B,EAAQt7H,KAAKq2Q,WAAW,UAAU77O,QAAO,SAAAt8B,GAAK,OAAIA,CAAJ,IAClD,OAAO8B,KAAK82Q,sBAAsBx7I,EACrC,OAlCCm7I,CAAuCpB,IAoC7C,MCnCI0B,GAAe,MACfC,GAAe,QACbC,GAAAA,SAAAA,iCACF,WAAY7lP,GAAW,6BACnB,cAAMA,IACDotI,KAAO,iBAFO,CAGtB,8CACD,WACI,IAAItgK,EAAQ8B,KAAKk3Q,aAEjB,MAAO,CACHh5Q,MAAOA,EACPm8H,MAHQr6H,KAAKm3Q,gBAAgBj5Q,EAAM,GAAIA,EAAM,IAI7CgpO,cAAe,QACfqnC,YAAavuQ,KAAKo3Q,kBAAkBt6Q,KAAKkD,MAEhD,4BACD,SAAYs2Q,EAAertQ,GACvB,IAAI,EAAuBjJ,KAAKk3Q,aAAhC,eAAKpxL,EAAL,KAAgBC,EAAhB,KACA/lF,KAAKu2Q,eACLv2Q,KAAK62Q,mBAAmBP,GACxBt2Q,KAAKg2Q,qBAAsB,GACvB,IAASh2Q,KAAKs1Q,SAAS3oO,OAAO,+BAC9B3sC,KAAKs1Q,SAAS+B,gBAAiB,EAC3B,cAAgBr3Q,KAAKs1Q,SAAS3oO,OAAO,qBACjC3sC,KAAKs1Q,SAASO,eAAeS,GAAiBt2Q,KAAKs1Q,SAASO,eAAe9vL,GAC3E/lF,KAAKw2Q,UAAU,CAACF,EAAe,MAAOrtQ,GAEtCjJ,KAAKw2Q,UAAU,CAACF,EAAevwL,GAAU98E,GAEtCjJ,KAAKs1Q,SAASO,eAAeS,IAAkBt2Q,KAAKs1Q,SAASO,eAAe/vL,GACnF9lF,KAAKw2Q,UAAU,CAAC1wL,EAAWwwL,GAAgBrtQ,GAE3CjJ,KAAKw2Q,UAAU,CAACF,EAAe,MAAOrtQ,KAElC68E,GAAaC,EACrB/lF,KAAKw2Q,UAAU,CAACF,EAAe,MAAOrtQ,GAEtCjJ,KAAKw2Q,UAAU1wL,EAAYwwL,EAAgB,CAACxwL,EAAWwwL,GAAiB,CAACA,EAAexwL,GAAY78E,EAE3G,mCACD,SAAmB/K,EAAO28J,GACtB,IAAIzuG,EAAQwpN,EACZ,QAAUxpN,EAASluD,SAAU,IAAWkuD,IAAkBluD,EAAQ8B,KAAKk3Q,cACvE,QAAUtB,EAAiB/6G,SAAkB,IAAW+6G,IAAkC/6G,EAAgB,KAC1G,iEAAyB38J,EAAO28J,EACnC,oCACD,SAAoB38J,EAAO28J,IACvB,kEAA0B38J,EAAO28J,GACjC,IAAIxgC,EAAQr6H,KAAKs3Q,YACjBt3Q,KAAKm2Q,mBAAmB,QAAS97I,EACpC,sCACD,WACI,IAAI,EAGAr6H,KAAKs1Q,SAAS3oO,SAFc4qO,EADhC,EACIA,2BACmBC,EAFvB,EAEIA,kBAEA7hP,EAAS31B,KAAKq2Q,WAAW,UAC7B,GAAIkB,EAA4B,CAC5B,GAAI,cAAgBC,GAAqB7hP,EAAO,GAC5C,OAAOA,EAAO,GAElB,GAAI,YAAc6hP,GAAqB7hP,EAAO,GAC1C,OAAOA,EAAO,EAErB,CACD,IAAI2lG,EAAQ3lG,EAAO6E,QAAO,SAAAt8B,GAAK,OAAIA,CAAJ,IAC/B,OAAO8B,KAAK82Q,sBAAsBx7I,EACrC,2BACD,WACI,IAAI3lG,EAAS31B,KAAKq2Q,WAAW,UAC7B,IAAK1gP,EAAOh1B,OACR,OAAOg1B,EAEX,IAAI,GAAJ,OAA2BA,EAA3B,GAAKmwD,EAAL,KAAgBC,EAAhB,KACA,GAAID,GAAaC,GAAWD,EAAYC,EAAS,OACtB,CAACA,EAASD,GAAhCA,EAD4C,KACjCC,EADiC,IAEhD,CACD,MAAO,CAACD,EAAWC,EACtB,0BACD,WACI,IAAI,EAAuB/lF,KAAKk3Q,aAAhC,eAAKpxL,EAAL,KAAgBC,EAAhB,KACA,OAAO/lF,KAAKm3Q,gBAAgBrxL,EAAWC,EAC1C,gCACD,SAAgBD,EAAWC,GACvB,IAAKD,IAAcC,EACf,MAAO,GAEX,IAAIhB,EAAc/kF,KAAKs1Q,SAAS3oO,OAAO,eAAe+oB,UAClD+hN,EAAiB,IAAI30Q,KAAKyG,KAAKkuB,IAAIstD,EAAciyL,GAAclxL,IAC/D4xL,EAAe,IAAI50Q,KAAKyG,KAAKsZ,IAAIkiE,EAAciyL,GAAcjxL,IACjE,MAAO,GAAP,gBAAW/D,GAAAA,mBAA6By1L,EAAgBC,EAAcX,KAAtE,CAAqFW,GACxF,kCACD,SAAkBzuQ,GACd,IAAI0uQ,EAAiB33Q,KAAKk2Q,kBACtB,EAAuBl2Q,KAAKk3Q,aAAhC,eAAKpxL,EAAL,KAAgBC,EAAhB,KACI,EAGA/lF,KAAKs1Q,SAAS3oO,SAFc4qO,EADhC,EACIA,2BACmBC,EAFvB,EAEIA,kBAEJ,GAAIG,EAAgB,CAEhB,IAAI7xL,GAAcC,GADKwxL,GAA8B,cAAgBC,GAM9D,GAAK1xL,IAAaC,GAAawxL,GAA8B,YAAcC,GAK3E,GAAI1xL,GAAaC,EAAS,CAC7B,GAAI,cAAgByxL,GAAqBvuQ,EAAE/K,MAAQ4nF,EAE/C,YADA9lF,KAAKm2Q,mBAAmB,eAAgBn2Q,KAAKm3Q,gBAAgBluQ,EAAE/K,MAAO4nF,IAEnE,GAAI,YAAc0xL,GAAqBvuQ,EAAE/K,MAAQ6nF,EAEpD,YADA/lF,KAAKm2Q,mBAAmB,eAAgBn2Q,KAAKm3Q,gBAAgBpxL,EAAS98E,EAAE/K,OAG/E,OAZG,GAAI+K,EAAE/K,MAAQ6nF,EAEV,YADA/lF,KAAKm2Q,mBAAmB,eAAgBn2Q,KAAKm3Q,gBAAgBluQ,EAAE/K,MAAO6nF,SAN1E,GAAI98E,EAAE/K,MAAQ4nF,EAEV,YADA9lF,KAAKm2Q,mBAAmB,eAAgBn2Q,KAAKm3Q,gBAAgBrxL,EAAW78E,EAAE/K,QAiBlF8B,KAAKm2Q,mBAAmB,eAAgB,GAC3C,CACJ,OAzHCc,CAAuC5B,IA2H7C,MC9DIuC,GAA+B,IAK/BC,GAAiCr0H,GAAas0H,GAAmB,cACjEC,GAAoB,CACpB7jP,MAAO,EACP2pD,KAAM,EACNi3L,OAAQ,EACRG,QAAS,GAET+C,GACO,QADPA,GAEM,OAFNA,GAGQ,SAHRA,GAIS,UAETC,GAAuB,CACvBC,gBAAiB9B,GACjB+B,eAAgB1B,GAChB2B,eAAgBnB,IAMpB,IAAIoB,GAAWx2B,GAAAA,QAAe,CAC1B1oC,iBAAkB,oBAClBv7C,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BiiJ,mBAAmB,EACnBD,oBAAoB,EACpBp/G,YAAa,IAAIjiF,KACjB5E,MAAO,KACPy3B,OAAQ,GACRioB,6BAAyB,EACzB/6B,IAAK,IAAI/f,KAAK,IAAK,GACnB20B,IAAK,IAAI30B,KAAK,IAAK,GACnBo7C,oBAAgB,EAChBo6N,WAAY,EACZC,UAAWP,GACXQ,aAAcR,GACdS,aAAcT,GACd9wC,cAAe,SACfwxC,iBAAiB,EACjBtE,iBAAiB,EACjBE,eAAgB,OAChBjG,aAAc,OACdC,cAAe,KACfhvN,YAAa,KACbq5N,mBAAoB,KACpBC,gBAAgB,EAChBjK,WAAY,kBAAM,IAAI7rQ,IAAV,GAEnB,EACDg7J,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,KAG9B,EACD24J,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BsrK,WAAY,SAASxkN,GACjBA,EAAEkzD,iBACE0qF,GAAoB59I,GACpBjJ,KAAK64Q,gBAAgB,GAErB74Q,KAAK84Q,yBAAyB,EAAI94Q,KAAK+4Q,oBAE9C,EACDvrD,UAAW,SAASvkN,GAChBA,EAAEkzD,iBACE0qF,GAAoB59I,GACpBjJ,KAAK64Q,iBAAiB,GAEtB74Q,KAAK84Q,0BAA0B,EAAI94Q,KAAK+4Q,oBAE/C,EACDrrD,QAAS,SAASzkN,GAEd,GADAA,EAAEkzD,iBACE0qF,GAAoB59I,GACpBjJ,KAAKg5Q,kBACF,CACH,GAAI9nE,GAAAA,YAAelxM,KAAKi5Q,MAAMj/M,YAC1B,OAEJh6D,KAAK84Q,0BAA0B,EAAI94Q,KAAKi5Q,MAAMtsO,OAAO,YACxD,CACJ,EACDghL,UAAW,SAAS1kN,GAEhB,GADAA,EAAEkzD,iBACE0qF,GAAoB59I,GACpBjJ,KAAKk5Q,oBACF,CACH,GAAIhoE,GAAAA,YAAelxM,KAAKi5Q,MAAMj/M,YAC1B,OAEJh6D,KAAK84Q,yBAAyB,EAAI94Q,KAAKi5Q,MAAMtsO,OAAO,YACvD,CACJ,EACD23G,KAAM,SAASr7I,GACXA,EAAEkzD,iBACF,IAAIo8M,EAAYv4Q,KAAK2sC,OAAO,aACxBo4C,EAAc/kF,KAAK2sC,OAAO,eAC1B9pB,EAAM7iB,KAAKu1Q,YAAY,OAC3B,IAAIv1Q,KAAKi5Q,MAAMtI,eAAe5rL,GAA9B,CAGA,IAAI9wD,EAAO+tD,GAAAA,SAAmBu2L,EAAWxzL,EAAaliE,GAAOA,EAAMm/D,GAAAA,qBAA+Bu2L,EAAWxzL,GAC7G/kF,KAAKm5Q,4BAA4BllP,EAFhC,CAGJ,EACD/pB,IAAK,SAASjB,GACVA,EAAEkzD,iBACF,IAAIo8M,EAAYv4Q,KAAK2sC,OAAO,aACxBo4C,EAAc/kF,KAAK2sC,OAAO,eAC1BlV,EAAMz3B,KAAKu1Q,YAAY,OAC3B,IAAIv1Q,KAAKi5Q,MAAMtI,eAAe5rL,GAA9B,CAGA,IAAI9wD,EAAO+tD,GAAAA,SAAmBu2L,EAAWxzL,EAAattD,GAAOA,EAAMuqD,GAAAA,oBAA8Bu2L,EAAWxzL,GAC5G/kF,KAAKm5Q,4BAA4BllP,EAFhC,CAGJ,EACD25L,OAAQ,SAAS3kN,GACbA,EAAEkzD,iBACFn8D,KAAK64Q,iBAAiB,EAAI74Q,KAAK+4Q,oBAClC,EACDlrD,SAAU,SAAS5kN,GACfA,EAAEkzD,iBACFn8D,KAAK64Q,gBAAgB,EAAI74Q,KAAK+4Q,oBACjC,EACD70H,IAAKpiI,GAAAA,KACLqiI,MAAOnkJ,KAAKutN,kBAEnB,EACDA,iBAAkB,SAAStkN,GACvB,GAAKjJ,KAAKk2Q,mBAEH,IAAKl2Q,KAAKi5Q,MAAMtI,eAAe3wQ,KAAK2sC,OAAO,gBAAiB,CAC/D,IAAIzuC,EAAQ8B,KAAKo5Q,qBAAqBp5Q,KAAK2sC,OAAO,gBAClD3sC,KAAKokO,mBAAmBi1C,YAAYn7Q,EAAO+K,EAC9C,OAJGjJ,KAAKk5Q,eAKZ,EACDI,wBAAyB,SAAS9pO,GAC9B,IAAItxC,EAAQ8B,KAAK2sC,OAAO6C,GAAc,SACtC,OAAIxvC,KAAK2sC,OAAO,2BACL3sC,KAAK2sC,OAAO,4BAEnB+rB,EAAAA,EAAAA,IAAUx6D,GACH,UAENwyD,EAAAA,EAAAA,IAASxyD,GAGP02H,GAAAA,2BAA6C12H,QAHpD,CAIH,EACD23Q,eAAgB,SAAS33Q,GACrB,OAAO02H,GAAAA,gBAAkC12H,EAC5C,EACDs3Q,WAAY,SAASt3Q,EAAO6C,GACxB,IAAIyuC,EAAa3qC,MAAMC,QAAQ5G,GAAS,SAAW,QACnD,GAAI6C,EAAO,CACP,GAAI,YAAcA,EAAMsE,KAAM,CAC1B,IAAIk0Q,EAAcv5Q,KAAKi5Q,MAAMzH,oBAAoB53Q,IAAI,GACrDmH,EAAM4W,OAAS4hQ,CAClB,CACDv5Q,KAAK8iP,sBAAsB/hP,EAC9B,CACDf,KAAKu1Q,YAAY/lO,EAAYtxC,EAChC,EACDq3Q,YAAa,SAAS/lO,EAAYiJ,GAAa,WAC3C,GAAI,IAAM3gC,UAAUnX,OAAQ,CACxB,IAAIkoG,EACAlzE,EAAS,QAAUkzE,EAAe7oG,KAAK2sC,OAAO,iBAAc,IAAWk8D,EAAeA,EAAe,GACzG,MAAO,WAAar5D,EAAa7Z,EAAO5xB,KAAI,SAAA7F,GAAK,OAAI,EAAK23Q,eAAe33Q,EAAxB,IAAkC8B,KAAK61Q,eAAe71Q,KAAK2sC,OAAO6C,GACtH,CACD,IAAI46C,EAAsBpqF,KAAKs5Q,wBAAwB9pO,GACnDgqO,EAAkB,WAAahqO,GAAc,OAASiJ,QAAe,IAAWA,OAAc,EAASA,EAAY10C,KAAI,SAAA7F,GAAK,OAAI02H,GAAAA,cAAgC12H,EAAOksF,EAA3C,MAAqE,GAAKwqC,GAAAA,cAAgCn8E,EAAa2xC,GACvPpqF,KAAK2sC,OAAO6C,EAAYgqO,EAC3B,EACDC,WAAY,SAASlB,EAAWtkP,EAAMhnB,EAAQ6tD,GAC1C,OAAQy9M,GACJ,KAAKP,GACD/jP,EAAKgrD,QAAQhrD,EAAK+rD,UAAY/yE,EAAS6tD,GACvC,MACJ,KAAKk9M,GACD/jP,EAAK+qD,SAAS/qD,EAAKmrD,WAAanyE,EAAS6tD,GACzC,MACJ,KAAKk9M,GACD/jP,EAAK0rD,YAAY1rD,EAAK2rD,cAAgB3yE,EAAS6tD,GAC/C,MACJ,KAAKk9M,GACD/jP,EAAK0rD,YAAY1rD,EAAK2rD,cAAgB,GAAK3yE,EAAS6tD,GAE/D,EACDg+M,yBAA0B,SAAS7rQ,GAC/B,IAAIysQ,EAAW15Q,KAAK2sC,OAAO,eACvBo4C,EAAc,IAAIjiF,KAAK42Q,GACvBnB,EAAYv4Q,KAAK2sC,OAAO,aAC5B3sC,KAAKy5Q,WAAWlB,EAAWxzL,EAAa93E,EAAQ,GAMhD,IALA,IAAI0uH,EAAU37H,KAAK25Q,cACf99I,EAAU77H,KAAK45Q,cACfC,EAA8B75Q,KAAK85Q,wBAAwBvB,EAAWxzL,EAAa20L,GACnFK,EAAuB99L,GAAQ8I,EAAa82C,EAASF,IAAYk+I,EACjEG,EAAc,IAAIl3Q,KAAKiiF,GACpBg1L,GAAsB,CACzB,IAAK/5Q,KAAKi5Q,MAAMtI,eAAeqJ,GAAc,CACzCj1L,EAAci1L,EACd,KACH,CACDh6Q,KAAKy5Q,WAAWlB,EAAWyB,EAAa/sQ,EAAQ,GAChD4sQ,EAA8B75Q,KAAK85Q,wBAAwBvB,EAAWyB,EAAaN,GACnFK,EAAuB99L,GAAQ+9L,EAAan+I,EAASF,IAAYk+I,CACpE,CACG75Q,KAAKi5Q,MAAMtI,eAAe+I,IAAa15Q,KAAKi5Q,MAAMtI,eAAe5rL,GACjE/kF,KAAK64Q,gBAAgB5rQ,EAAS,EAAI,GAAK,IAEvCjN,KAAKy1Q,eAAgB,EACrBz1Q,KAAK2sC,OAAO,cAAeo4C,GAElC,EACDk1L,oBAvM0B,SAuMN1B,EAAW33L,EAAOC,GAClC,OAAQ03L,GACJ,KAAKP,GACD,OAAOp3L,EAAMxB,aAAeyB,EAAMzB,WACtC,KAAK44L,GACD,OAAOp3L,EAAMs5L,YAAcr5L,EAAMq5L,UACrC,KAAKlC,GACD,OAAOlgP,SAAS8oD,EAAMs5L,UAAY,MAAQpiP,SAAS+oD,EAAMq5L,UAAY,IACzE,KAAKlC,GACD,OAAOlgP,SAAS8oD,EAAMs5L,UAAY,OAASpiP,SAAS+oD,EAAMq5L,UAAY,KAEjF,EACDJ,wBAnN0B,SAmNFvB,EAAW33L,EAAOC,GACtC,OAAQ03L,GACJ,KAAKP,GACD,OAAQj4P,EAAI6gE,EAAMxB,WAAYp/D,EAAI6gE,EAAMzB,WAAY91E,EAAMC,KAAKD,IAAIyW,EAAIC,GAAIzW,KAAKsZ,IAAIvZ,EAAK,GAAKA,IAAS,EAC3G,KAAK0uQ,GACD,OAAOzuQ,KAAKD,IAAIs3E,EAAMs5L,UAAYr5L,EAAMq5L,YAAc,EAC1D,KAAKlC,GACD,OAAOzuQ,KAAKD,IAAIs3E,EAAMs5L,UAAYr5L,EAAMq5L,YAAc,GAC1D,KAAKlC,GACD,OAAOzuQ,KAAKD,IAAIs3E,EAAMs5L,UAAYr5L,EAAMq5L,YAAc,IAE9D,IAAIn6P,EAAGC,EAAG1W,CACb,EACD6vQ,4BAA6B,WACzB,IAMIgB,EACAC,EAPAV,EAAW5hQ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAK2sC,OAAO,eACxFo4C,EAAc,IAAIjiF,KAAK42Q,GACvBnB,EAAYv4Q,KAAK2sC,OAAO,aACxB0tO,GAA0Br6Q,KAAKs6Q,oBAAoBv1L,GACnDw1L,EAAyBF,EACzBG,EAA0BH,EAG1BL,EAAc,IAAIl3Q,KAAKiiF,GACvB01L,EAAe,IAAI33Q,KAAKiiF,GAC5B,EAAG,CACC,GAAIw1L,EAAwB,CACxBx1L,EAAci1L,EACd,KACH,CACD,GAAIQ,EAAyB,CACzBz1L,EAAc01L,EACd,KACH,CACDz6Q,KAAKy5Q,WAAWlB,EAAWyB,EAAa,EAAG,GAC3Ch6Q,KAAKy5Q,WAAWlB,EAAWkC,EAAc,GAAI,GAC7CN,EAA2Bn6Q,KAAKi6Q,oBAAoB1B,EAAWyB,EAAaN,GAC5EU,EAA4Bp6Q,KAAKi6Q,oBAAoB1B,EAAWkC,EAAcf,GAC9Ea,EAAyBJ,IAA6Bn6Q,KAAKs6Q,oBAAoBN,GAC/EQ,EAA0BJ,IAA8Bp6Q,KAAKs6Q,oBAAoBG,EACpF,OAAQN,GAA4BC,GACrCp6Q,KAAK2sC,OAAO,cAAeo4C,EAC9B,EACDu1L,oBAAqB,SAASrmP,GAC1B,IAAI0nG,EAAU37H,KAAK25Q,cACf99I,EAAU77H,KAAK45Q,cACnB,OAAQ39L,GAAQhoD,EAAM4nG,EAASF,IAAY37H,KAAKi5Q,MAAMtI,eAAe18O,EACxE,EACDsvE,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK06Q,yBACL16Q,KAAK26Q,oBACL36Q,KAAKi2Q,mBACLj2Q,KAAK4gN,cACR,EACD85D,uBAAwB,WACpB,IAAIE,EAAe56Q,KAAK66Q,4BACpB12M,EAAW8zM,GAAqB2C,GAC/B56Q,KAAKokO,oBAAsBpkO,KAAKokO,mBAAmB5lE,OAASo8G,IAC7D56Q,KAAKokO,mBAAqB,IAAIjgK,EAASnkE,MAE9C,EACD86Q,0BAA2B,WACvB96Q,KAAK06Q,yBACL16Q,KAAK2pK,UACR,EACDkxG,0BAA2B,WAEvB,OADoB76Q,KAAK2sC,OAAO,kBAE5B,IAAK,QACD,MAAO,iBACX,IAAK,QACD,MAAO,iBACX,QACI,MAAO,kBAElB,EACDguO,kBAAmB,WACf,IAAIlC,EAAez4Q,KAAK2sC,OAAO,gBAC3B6rO,EAAex4Q,KAAK2sC,OAAO,gBAC3B4rO,EAAYv4Q,KAAK2sC,OAAO,aACxBorO,GAAkBS,GAAgBT,GAAkBU,KAGpDV,GAAkBQ,GAAaR,GAAkBS,GACjDx4Q,KAAK2sC,OAAO,YAAa6rO,GAClBT,GAAkBQ,GAAaR,GAAkBU,IACxDz4Q,KAAK2sC,OAAO,YAAa8rO,GAEhC,EACDxC,iBAAkB,WACd,IAAI8E,EACAh2L,EAAc,QAAUg2L,EAAwB/6Q,KAAKg7Q,mBAAmBh7Q,KAAKokO,mBAAmB62C,gCAA6B,IAAWF,EAAwBA,EAAwB/6Q,KAAKg7Q,mBAAmBh7Q,KAAK2sC,OAAO,gBAChO3sC,KAAK2sC,OAAO,cAAeo4C,EAC9B,EACDi2L,mBAAoB,SAAS/mP,GAEzB,OADAA,EAAO+tD,GAAAA,cAAwB/tD,EAAMj0B,KAAK45Q,cAAe55Q,KAAK25Q,gBACvDtrN,EAAAA,EAAAA,IAAUp6B,GAAQj0B,KAAKk7Q,SAASjnP,GAAQA,CAClD,EACD2sL,aAAc,WACV5gN,KAAKixQ,iBAAmBjxQ,KAAK2/J,sBAAsB,eACnD3/J,KAAKm7Q,oBAAsBn7Q,KAAK2/J,sBAAsB,qBACzD,EACDgL,eAAgB,WACZ3qK,KAAK4pK,iBAAiBgsB,oBAAoB,CACtCq6E,KAAM,IAAIvuG,IAAkB,SAAStkK,GACjC,IAAI9C,EAAO8C,EAAQq4C,MACnBs7B,GAAE3zE,EAAQmK,WAAW5B,OAAOorE,GAAE,UAAUpqE,KAAKrM,GAAQA,EAAKqM,MAAQ8C,OAAOnP,IAC5E,MAEL0F,KAAKmiD,UACR,EACD00N,mBAAoB,SAAS5iP,GAMzB,GALIi9K,GAAAA,YAAelxM,KAAKo7Q,iBACpBlqE,GAAAA,KAAQlxM,KAAKo7Q,gBAAgB,GAEvBp7Q,KAAK45Q,cACL55Q,KAAK25Q,cAEX35Q,KAAK2sC,OAAO,cAAe,IAAI7pC,UADnC,CAIA,IAAI2+E,EAAiBzhF,KAAKg7Q,mBAAmB/mP,GAC7C,GAAIA,EAAKyhC,YAAc+rB,EAAe/rB,UAAtC,CAIA,IAAIzoD,EAASjN,KAAKq7Q,gBAAgBr7Q,KAAKi5Q,MAAMtsO,OAAO,QAAS80C,GACzD,IAAMx0E,IAAWjN,KAAKk2Q,mBAAqBl2Q,KAAKs7Q,0BAChDruQ,EAAS,GAETjN,KAAKi5Q,OAAS,IAAMhsQ,IAAWjN,KAAKu7Q,oBAChCv7Q,KAAKw7Q,gBACDvuQ,EAAS,GAAKA,GAAU,GACxBjN,KAAKy7Q,gBACLz7Q,KAAK07Q,kBAAkBj6L,GACvBzhF,KAAK21Q,cAAcl0L,GACnBzhF,KAAK27Q,oBACE,IAAM1uQ,GAAUjN,KAAKy1Q,eAC5Bz1Q,KAAK07Q,kBAAkBj6L,GACvBzhF,KAAK21Q,cAAcl0L,IAEnBzhF,KAAK47Q,UAAU3uQ,EAAQw0E,GAG3BzhF,KAAK47Q,UAAU3uQ,EAAQw0E,IAG3BzhF,KAAK27Q,mBACL37Q,KAAK07Q,kBAAkBj6L,GACvBzhF,KAAK21Q,cAAcl0L,IAEvBzhF,KAAKy1Q,eAAgB,CA1BpB,MAFGz1Q,KAAK2sC,OAAO,cAAe,IAAI7pC,KAAK2+E,GAHvC,CAgCJ,EACDo6L,sBA5W0B,SA4WJ5nP,GAClB,QAAKj0B,KAAKw7Q,iBAGHvnP,GAAQj0B,KAAKw7Q,gBAAgBnI,wBACvC,EACDyI,eAAgB,SAAS7nP,GACrB,OAAOj0B,KAAK67Q,sBAAsB5nP,GAAQj0B,KAAKw7Q,gBAAkBx7Q,KAAKi5Q,KACzE,EACDyC,kBAAmB,SAASznP,GAEpB,IAAI8nP,GADJ/7Q,KAAK2sC,OAAO,mBAAqC3sC,KAAK6lK,eAxX/Cv3F,SA3BO,uBAqZdtuE,KAAKi5Q,MAAMtsO,OAAO,gBAAiB,MACnC,QAAUovO,EAAwB/7Q,KAAKw7Q,uBAAoB,IAAWO,GAAiCA,EAAsBpvO,OAAO,gBAAiB,OAC1I3sC,KAAK67Q,sBAAsB5nP,GAAQj0B,KAAKw7Q,gBAAkBx7Q,KAAKi5Q,OACrEtsO,OAAO,gBAAiB1Y,GAEpC,EACD2lP,YAAa,WACT,IAAIoC,EAAYh8Q,KAAK2sC,OAAO,aAC5B,OAAIqvO,IAGAh8Q,KAAK6iB,MAGT7iB,KAAK6iB,IAAM7iB,KAAKu1Q,YAAY,QAAU,IAAIzyQ,KAAK,IAAK,IAFzC9C,KAAK6iB,IAInB,EACD82P,YAAa,WACT,IAAIsC,EAAYj8Q,KAAK2sC,OAAO,aAC5B,OAAIsvO,IAGAj8Q,KAAKy3B,MAGTz3B,KAAKy3B,IAAMz3B,KAAKu1Q,YAAY,QAAU,IAAIzyQ,KAAK,IAAK,IAFzC9C,KAAKy3B,IAInB,EACD4jP,gBAAiB,SAASv1L,EAAWC,GACjC,IAIIm2L,EAJA3D,EAAYv4Q,KAAK2sC,OAAO,aAC5B,GAAI4rO,IAAcP,GACd,OAAOh4Q,KAAKm8Q,iBAAiBr2L,EAAWC,GAG5C,OAAQwyL,GACJ,KAAKP,GACDkE,EAAiB,IACjB,MACJ,KAAKlE,GACDkE,EAAiB,GACjB,MACJ,QACIA,EAAiB,EAEzB,OAAOpkP,SAASiuD,EAAQnG,cAAgBs8L,GAAkBpkP,SAASguD,EAAUlG,cAAgBs8L,EAChG,EACDC,iBAAkB,SAASr2L,EAAWC,GAGlC,OAAO,IAFUA,EAAQnG,cAAgBkG,EAAUlG,gBACjCmG,EAAQ3G,WAAa0G,EAAU1G,WAEpD,EACDy5L,gBAAiB,SAAS5rQ,GAAQ,WAC9B,IAAIjN,KAAKo8Q,mBAAT,CAGAp8Q,KAAKo8Q,oBAAqB,EAC1B,IAAInoP,EAAOj0B,KAAKq8Q,iBAAiBpvQ,EAASjN,KAAK+4Q,qBAC/C/4Q,KAAKm5Q,4BAA4BllP,GACjCj0B,KAAKs8Q,uBAAyB/mP,YAAW,WACrC,EAAK6mP,oBAAqB,CAC7B,GANA,CAOJ,EACDrD,kBAAmB,WACf,OAAO/4Q,KAAK2sC,OAAO,eAAiB,EAAI,CAC3C,EACD0vO,iBAAkB,SAASpvQ,EAAQgnB,GAC/B,IAAIsoP,EAEAjxI,GADJr3G,EAAOj0B,KAAKk7Q,SAAS,QAAUqB,EAAQtoP,SAAS,IAAWsoP,EAAQA,EAAQv8Q,KAAK2sC,OAAO,iBACjEqzC,UAClB6D,EAAa7B,GAAAA,qBAA+BhiF,KAAK2sC,OAAO,cAAgB1/B,EAC5EgnB,EAAKgrD,QAAQ,GACbhrD,EAAK+qD,SAAS/qD,EAAKmrD,WAAayE,GAChC,IAAI24L,EAAUx6L,GAAAA,iBAA2B/tD,GAAM+rD,UAE/C,OADA/rD,EAAKgrD,QAAQqsD,EAAakxI,EAAUA,EAAUlxI,GACvCr3G,CACV,EACD4xI,aAAc,WACV,OAAO7lK,KAAKg6D,UACf,EACDsuG,YAAa,WACTtoK,KAAKqlP,uBACLrlP,KAAKmiD,WACL,IAAI6X,EAAWh6D,KAAKg6D,WACpBA,EAASoU,SAlfI,eAmfbpU,EAASiU,YA1eU,oBA0ewB,UAAYjuE,KAAK2sC,OAAO,kBACnE3sC,KAAK+uQ,cACL/0M,EAASr0D,OAAO3F,KAAKopN,OACrBppN,KAAKy8Q,eACLz8Q,KAAKi0P,gBACLj0P,KAAK27Q,mBACL3hN,EAAS1yD,QAAQtH,KAAK08Q,WAAW1iN,YACjCh6D,KAAK28Q,mBACL38Q,KAAK48Q,gBACL58Q,KAAKokO,mBAAmB2xC,qBACxB/1Q,KAAK21Q,gBACL31Q,KAAK86M,QAAQ,OAAQ,eACrB96M,KAAKm5Q,6BACR,EACDr+L,QAAS,WACL96E,KAAKmiD,WACLniD,KAAK07Q,kBAAkB17Q,KAAK2sC,OAAO,eACtC,EACDoiO,YAAa,WACJ/uQ,KAAKo7Q,iBACNp7Q,KAAKopN,MAAQr4I,GAAE,SAAS3C,SAtgBV,oBAugBdpuE,KAAKo7Q,eAAiBrqM,GAAE,SAAS3C,SAlgBV,6BAmgBvBpuE,KAAKopN,MAAMzjN,OAAO3F,KAAKo7Q,gBAE9B,EACDrhE,sBAre0B,WAsetB,OAAO/5M,KAAKmiD,WAAWlyC,OAAO,CAACjQ,KAAKi5Q,OACvC,EACDwD,aAAc,WACVz8Q,KAAKg6D,WAAWoU,SAASyuM,oBAA4B78Q,KAAK2sC,OAAO,cACjE,IAAI,EAGA3sC,KAAK2sC,SAFQo4C,EADjB,EACIA,YACYuzL,EAFhB,EAEIA,WAIJ,GAFAt4Q,KAAKg6D,WAAWiU,YA7gBO,wBA6gB+BqqM,EAAa,GACnEt4Q,KAAKi5Q,MAAQj5Q,KAAK88Q,oBAAoB/3L,IAClCjkC,EAAAA,EAAAA,MAAa,CACb,IAAIi8N,EAAa/8Q,KAAKq8Q,kBAAkB,EAAGt3L,GAC3C/kF,KAAKg9Q,YAAch9Q,KAAKi9Q,iBAAiBF,GAAc/8Q,KAAK88Q,oBAAoBC,GAAc,KAC9F,IAAIG,EAAYl9Q,KAAKq8Q,iBAAiB/D,EAAYvzL,GAClDm4L,EAAUj+L,QAAQ,GAClBj/E,KAAKm9Q,WAAan9Q,KAAKi9Q,iBAAiBC,GAAal9Q,KAAK88Q,oBAAoBI,GAAa,IAC9F,CACG5E,EAAa,IACbt4Q,KAAKw7Q,gBAAkBx7Q,KAAK88Q,oBAAoB98Q,KAAKq8Q,iBAAiB,EAAGt3L,KAE7E/kF,KAAKo9Q,iBACR,EACDN,oBAAqB,SAAS7oP,GAC1B,IACeskP,EACXv4Q,KAAK2sC,SADL4rO,UAEA8E,EAAe9J,GAAMgF,GACrB+E,EAAQvsM,GAAE,SAASpC,SAAS3uE,KAAKo7Q,gBACjCr7Q,EAASC,KAAKu9Q,YAAYtpP,GAE9B,OADWj0B,KAAKmjK,iBAAiBm6G,EAAOD,EAAct9Q,EAEzD,EACDw9Q,YAAa,SAAStpP,GAClB,IAAIupP,EACAlP,EAAgBtuQ,KAAK2sC,OAAO,iBAEhC,OADA2hO,GAAgBz/M,EAAAA,EAAAA,IAAWy/M,GAAiBtuQ,KAAKy9Q,iBAAiBnP,EAAcxxQ,KAAKkD,OAASsuQ,GACvFv1P,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKokO,mBAAmBs5C,iBAAkB,CAC1DzpP,KAAMA,EACNpR,IAAK7iB,KAAK45Q,cACVniP,IAAKz3B,KAAK25Q,cACVz7N,eAAgB,QAAUs/N,EAAgBx9Q,KAAK2sC,OAAO,yBAAsB,IAAW6wO,EAAgBA,EAAgBp1J,GAAAA,sBACvHgsJ,gBAAiBp0Q,KAAK2sC,OAAO,mBAC7B2nO,eAAgBt0Q,KAAK2sC,OAAO,kBAC5B4rO,UAAWv4Q,KAAK2sC,OAAO,aACvB6T,cAAU,EACVrC,kBAAmBn+C,KAAK2sC,OAAO,qBAC/By3J,kBAAmBpkM,KAAK2sC,OAAO,qBAC/B2hO,cAAeA,EACfhvN,YAAat/C,KAAK29Q,kBAAkB7gR,KAAKkD,MACzCquQ,aAAcruQ,KAAK8qK,qBAAqB,gBACxC4jG,oBAAqB1uQ,KAAKk2Q,kBAC1BvH,WAAY3uQ,KAAK2sC,OAAO,eAE/B,EACDsnN,cA5hB0B,WA4hBV,WACZ11L,EAAAA,EAAAA,IAAiBv+D,KAAKo7Q,eAAgBvD,IAClC,UAAY73Q,KAAK2sC,OAAO,kBACxB4xB,EAAAA,EAAAA,GAAgBv+D,KAAKo7Q,eAAgBvD,GAAgC,MAAM,SAAA5uQ,GACvE,EAAKktQ,mBAAmB,eAAgB,GAC3C,GAER,EACDsH,iBAAkB,SAAS1sQ,GACvB,IAAI0+C,EAAOzvD,KACX,OAAO,SAASsE,GAIZ,OAHAmhD,EAAAA,GAAAA,GAAOnhD,EAAQ,CACX8sB,UAAWq+B,IAER1+C,EAAKzM,EACf,CACJ,EACD24Q,iBAAkB,SAAShpP,GACvB,IAAIskP,EAAYv4Q,KAAK2sC,OAAO,aACxB9pB,EAAMm/D,GAAAA,uBAAiCu2L,EAAWv4Q,KAAK45Q,eACvDniP,EAAMuqD,GAAAA,uBAAiCu2L,EAAWv4Q,KAAK25Q,eAC3D,OAAO33L,GAAAA,YAAsB/tD,EAAMpR,EAAK4U,EAC3C,EACD2lP,gBAAiB,WACb,IACgB9E,EACZt4Q,KAAK2sC,SADL2rO,WAEJn1H,GAAKnjJ,KAAKi5Q,MAAMj/M,WAAY,CACxBp1B,KAAM,EACNH,IAAK,IAETzkC,KAAK49Q,iBAAiB59Q,KAAKg9Q,aAAc,GACzCh9Q,KAAK49Q,iBAAiB59Q,KAAKm9Q,WAAY7E,GACvCt4Q,KAAK49Q,iBAAiB59Q,KAAKw7Q,gBAAiB,EAC/C,EACDoC,iBA/jB0B,SA+jBT5gO,EAAMhkB,GACnBgkB,GAAQmmG,GAAKnmG,EAAKgd,WAAY,CAC1Bp1B,KAAM5kC,KAAK69Q,iBAAiB7kP,GAC5ByL,IAAK,GAEZ,EACDo5O,iBAAkB,SAAS7kP,GAEvB,OAAO,IAAMA,GADOh5B,KAAK2sC,OAAO,eAAiB,EAAI,GACV,GAC9C,EACDgxO,kBAAmB,SAAS10Q,GACxB,IAAIsvQ,EAAYv4Q,KAAK2sC,OAAO,aACxBmxO,EAAW97L,GAAAA,YAAsBu2L,GACjCZ,EAAiB33Q,KAAKk2Q,kBAC1B,GAAI4H,IAAanG,EACb33Q,KAAKk5Q,cAAcjwQ,EAAElI,MAAMy+D,mBACxB,CACH,IAAI32B,EAAW7oC,KAAKo5Q,qBAAqBnwQ,EAAE/K,OAC3C8B,KAAKokO,mBAAmBi1C,YAAYxwO,EAAU5/B,EAAElI,OAChDf,KAAKixQ,iBAAiBhoQ,EACzB,CACJ,EACDmwQ,qBAAsB,SAASnlP,GAC3B,IAAIzwB,EAAS,IAAIV,KAAKmxB,GAClBihC,EAAel1D,KAAKu1Q,YAAY,SAOpC,OANIrgN,IACA1xD,EAAO07E,SAAShqB,EAAa0sB,YAC7Bp+E,EAAOkiF,WAAWxwB,EAAastB,cAC/Bh/E,EAAOymP,WAAW/0L,EAAautB,cAC/Bj/E,EAAO2gI,gBAAgBjvE,EAAawtB,oBAEjCl/E,CACV,EACD0yQ,gBAAiB,WACb,OAAOl2Q,KAAK2sC,OAAO,eAAiB3sC,KAAK2sC,OAAO,eACnD,EACDusO,cAAe,SAASjJ,GACpB,IAAIsI,EAAYv4Q,KAAK2sC,OAAO,aAC5B,IAAI3sC,KAAKk2Q,kBAAT,CAGA,IAAI4H,EAAW97L,GAAAA,YAAsBu2L,GACrC,GAAKuF,EAAL,CAGA,IAAIC,EAAiB/9Q,KAAKi5Q,MAAMtsO,OAAO,kBAAoB3sC,KAAKi5Q,MAAMtsO,OAAO,QACzEsjO,IACA8N,EAAiBhtM,GAAEk/L,GAAM31Q,KAroBP,mBAuoBtB0F,KAAKs7Q,yBAA0B,EAC/Bt7Q,KAAK2sC,OAAO,cAAeoxO,GAC3B/9Q,KAAK2sC,OAAO,YAAamxO,GACzB99Q,KAAKs7Q,yBAA0B,EAC/Bt7Q,KAAK27Q,mBACL37Q,KAAKg+Q,mBACLh+Q,KAAKm5Q,8BACLn5Q,KAAK07Q,kBAAkB17Q,KAAKg7Q,mBAAmBh7Q,KAAK2sC,OAAO,gBAZ1D,CAJA,CAiBJ,EACDgvO,iBAAkB,WACT37Q,KAAK08Q,aACN18Q,KAAK08Q,WAAa,IAAIjQ,GAAU17L,GAAE,SAAU/wE,KAAKi+Q,qBAErDj+Q,KAAK08Q,WAAW/vO,OAAO,OAAQ3sC,KAAKk+Q,iBAAiBl+Q,KAAKi5Q,MAAOj5Q,KAAKw7Q,kBACtEx7Q,KAAKm+Q,0BACR,EACDF,iBAAkB,WACd,IACgBj+N,EACZhgD,KAAK2sC,SADLqT,WAEJ,MAAO,CACHr5C,KAAM3G,KAAKk+Q,iBAAiBl+Q,KAAKi5Q,MAAOj5Q,KAAKw7Q,iBAC7Cl+F,QAASt9K,KAAKo+Q,uBAAuBthR,KAAKkD,MAC1C0sQ,eAAgB1sQ,KAAKg5Q,YAAYl8Q,KAAKkD,MACtCggD,WAAYA,EAEnB,EACDo+N,uBAAwB,SAASn1Q,GAC7B,IAAI,EAGAjJ,KAAK2sC,SAFQo4C,EADjB,EACIA,YACYuzL,EAFhB,EAEIA,WAEArrQ,EAAShE,EAAE2d,UACf,GAAI0xP,EAAa,EAAG,CAChB,IAAI+F,EAAuBr+Q,KAAK67Q,sBAAsB92L,IAC7Bs5L,GAAwBpxQ,EAAS,IAAMoxQ,GAAwBpxQ,EAAS,KAE7FA,GAAU,EAEjB,CACD,IAAI8wQ,EAAiB/9Q,KAAKq8Q,iBAAiBpvQ,EAAQ83E,GACnD/kF,KAAKm5Q,4BAA4B4E,EACpC,EACD/E,YAAa,WACT,IAAIT,EAAYv4Q,KAAK2sC,OAAO,aACxBmxO,EAAW97L,GAAAA,UAAoBu2L,GAC9BuF,IAAY99Q,KAAKs+Q,gBAAgB/F,KAGtCv4Q,KAAK2sC,OAAO,YAAamxO,GACzB99Q,KAAK27Q,mBACL37Q,KAAKg+Q,mBACLh+Q,KAAKm5Q,8BACLn5Q,KAAK07Q,kBAAkB17Q,KAAKg7Q,mBAAmBh7Q,KAAK2sC,OAAO,iBAC9D,EACD2xO,gBAAiB,SAAS/F,GACtB,IAAI11P,EAAM7iB,KAAK45Q,cACXniP,EAAMz3B,KAAK25Q,cACf,OAAO33L,GAAAA,SAAmBu2L,EAAW11P,EAAK4U,IAAQz3B,KAAK2sC,OAAO,kBAAoB4rO,CACrF,EACD4F,yBAA0B,WACtBn+Q,KAAK08Q,WAAW6B,aAAa,SAASlwN,EAAAA,EAAAA,IAAUruD,KAAKm9Q,aACrDn9Q,KAAK08Q,WAAW6B,aAAa,SAASlwN,EAAAA,EAAAA,IAAUruD,KAAKg9Q,aACxD,EACDL,iBAAkB,WACT38Q,KAAKw+Q,aACNx+Q,KAAKw+Q,WAAax+Q,KAAKmjK,iBAAiBnjK,KAAKg6D,WAAYsyM,GAAW,CAChEP,QAAS/rQ,KAAKy+Q,mBAAmB3hR,KAAKkD,MACtCisQ,UAAWjsQ,KAAK0+Q,oBAAoB5hR,KAAKkD,MACzCmsQ,MAAOnsQ,KAAK2+Q,iBAAiB7hR,KAAKkD,MAClCs2J,aAAct2J,KAAK4+Q,WAAW9hR,KAAKkD,QAG9C,EACDy+Q,mBAAoB,SAASx1Q,GACzBioM,GAAAA,KAAQlxM,KAAKo7Q,gBAAgB,GAC7B,IACgB9C,EACZt4Q,KAAK2sC,SADL2rO,WAEJt4Q,KAAK6+Q,0BAA0B,YAC/B51Q,EAAElI,MAAM+yJ,cAAgB9zJ,KAAK8+Q,iBAAiB,QAAU,EAAIxG,EAAa,EACzErvQ,EAAElI,MAAMizJ,eAAiBh0J,KAAK8+Q,iBAAiB,QAAU,EAAIxG,EAAa,CAC7E,EACDuG,0BAA2B,SAASjqQ,GAChCm8D,GAAE,IAAI9gE,OAhuBY,qBAguBiBq1B,IAAI,SAAU1wB,EACpD,EACDkqQ,iBAAkB,SAAS1lR,GACvB,IAAI4jD,EACA+hO,EAAQ/+Q,KAAK2sC,OAAO,cAMxB,MALI,SAAWvzC,EACX4jD,EAAO+hO,EAAQ/+Q,KAAKg9Q,YAAch9Q,KAAKm9Q,WAChC,SAAW/jR,IAClB4jD,EAAO+hO,EAAQ/+Q,KAAKm9Q,WAAan9Q,KAAKg9Q,aAEnChgO,CACV,EACD0hO,oBAAqB,SAASz1Q,GAC1B,IAAIgE,EAAShE,EAAElI,MAAMkM,OACrBk2I,GAAKnjJ,KAAKo7Q,eAAgB,CACtBx2O,KAAM33B,EAASjN,KAAK4+Q,aACpBn6O,IAAK,IAETzkC,KAAKg/Q,wBAAwB/xQ,EAChC,EACD0xQ,iBAAkB,SAAS11Q,GACvBjJ,KAAK6+Q,0BAA0B,QAC/B,IAAI,EAGA7+Q,KAAK2sC,SAFQo4C,EADjB,EACIA,YACY/kC,EAFhB,EAEIA,WAEAwtE,EAAevkH,EAAElI,MAAMysH,aACvByxJ,EAAczxJ,EAAmBA,EAAejkH,KAAKD,IAAIkkH,GAA5B,EAE7B0xJ,EADyBl/Q,KAAK67Q,sBAAsB92L,KACJ/kC,GAAc,IAAMi/N,EAAa,IAAMA,GAC3F,GAAI,IAAMA,EAAV,CAIA,IAAIhyQ,GAAUgyQ,EAAaj/Q,KAAK+4Q,qBAAuBmG,EAAqB,EAAI,GAC5EjrP,EAAOj0B,KAAKq8Q,iBAAiBpvQ,GAC7BjN,KAAKm/Q,sBAAsBlrP,KAEvBA,EADAgrP,GAAc,EACP,IAAIn8Q,KAAK9C,KAAK45Q,eAEd,IAAI92Q,KAAK9C,KAAK25Q,gBAG7B35Q,KAAK2sC,OAAO,cAAe1Y,EAV1B,MAFGj0B,KAAKo/Q,gBAAgB,EAAGxH,GAa/B,EACDgH,WAAY,WAIR,OAHK5+Q,KAAKq/Q,kBACNr/Q,KAAKq/Q,gBAAkBz0M,GAAS5qE,KAAKg6D,YAAch6D,KAAK2sC,OAAO,eAE5D3sC,KAAKq/Q,eACf,EACDL,wBAAyB,SAAS/xQ,GAC9BA,GAAUjN,KAAK+4Q,oBACf,IACI/7N,EACAsiO,EAFAC,EAAcv/Q,KAAK2sC,OAAO,cAAgB,EAG1C1/B,EAAS,IAAMjN,KAAKg9Q,aACpBhgO,EAAOh9C,KAAKg9Q,YACZsC,EAAiBC,GAAev/Q,KAAKi5Q,OAC9BhsQ,GAAU,IAAMjN,KAAKm9Q,YAC5BngO,EAAOuiO,EAAcv/Q,KAAKw7Q,gBAAkBx7Q,KAAKm9Q,WACjDmC,EAAiBC,EAAcv/Q,KAAKm9Q,WAAa,OAEjDngO,EAAOh9C,KAAKi5Q,MACZqG,EAAiBC,EAAcv/Q,KAAKw7Q,gBAAkB,MAE1Dx7Q,KAAK08Q,WAAW/vO,OAAO,OAAQ3sC,KAAKk+Q,iBAAiBlhO,EAAMsiO,GAC9D,EACDpB,iBAAkB,SAASlhO,EAAMsiO,GAC7B,IAAIn0P,EAAU6xB,EAAKu3N,sBAInB,GADIv0Q,KAAK2sC,SADL2rO,WAEa,GAAKgH,EAAgB,CAClC,IAAIE,EAAwBF,EAAe/K,sBAC3CppP,EAAU,GAAGlb,OAAOkb,EAAS,OAAOlb,OAAOuvQ,EAC9C,CACD,OAAOr0P,CACV,EACDg0P,sBAAuB,SAASlrP,GAC5B,IAAIj0B,KAAKi5Q,MAAM3F,WAAWr/O,GAA1B,CAGA,IAAIpR,EAAM7iB,KAAK45Q,cACXniP,EAAMz3B,KAAK25Q,cACXl4L,EAAiBO,GAAAA,cAAwB/tD,EAAMpR,EAAK4U,GACxD,OAAOgqD,IAAmB5+D,GAAO4+D,IAAmBhqD,CAJnD,CAKJ,EACDmlP,cAAe,WAAW,WAClBlE,EAAkB14Q,KAAK2sC,OAAO,mBAClC,GAAI+rO,EAAiB,CACjB,IAAI+G,EAAez/Q,KAAKmjK,iBAAiBpyF,GAAE,SAAU43H,GAAQ,CACzDxqJ,kBAAmBn+C,KAAK2sC,OAAO,qBAC/BhmC,KAAMyjH,GAAAA,OAA2B,8BACjCkzD,QAAS,SAAA1/K,GACL,EAAK8hR,aAAa9hR,EACrB,EACDyH,KAAM,UACNijM,YAAa,OACb7wJ,mBAAoB,CAAC,IACtBuiB,WAAWoU,SA30BQ,4BA40BtBpuE,KAAK2/Q,SAAW5uM,GAAE,SAAS3C,SA70BX,sBA60B2CzoE,OAAO85Q,GAClEz/Q,KAAKg6D,WAAWr0D,OAAO3F,KAAK2/Q,SAC/B,CACD3/Q,KAAKg6D,WAAWiU,YA90BQ,0BA80B+ByqM,EAC1D,EACDrzB,qBAAsB,WAClBrlP,KAAKolP,gBAAkBr0K,GAAE,WAAW7C,KAAK,OAAQ,UAAUS,SAAS3uE,KAAKg6D,YACzEh6D,KAAK6lP,gBAAgB7lP,KAAK2sC,OAAO,SACpC,EACDk5M,gBAAiB,SAAS3nP,GACtB,IAAIs4Q,EAAYx2Q,KAAK61Q,eAAe33Q,GACpC8B,KAAKskP,oBAAoB7rN,IAAIm8F,GAAAA,cAAgC4hJ,EA50B/B,cA60BjC,EACDlyB,kBAAmB,WACf,OAAOtkP,KAAKolP,eACf,EACD44B,iBAAkB,WACd9sE,GAAAA,KAAQlxM,KAAKi5Q,MAAMj/M,YAAY,GAC/Bh6D,KAAK4/Q,kBAAkB5/Q,KAAKi5Q,MAr1BX,GACF,EAo1B0DrB,IACrE53Q,KAAK2sC,OAAO,cAAgB,IAC5BukK,GAAAA,KAAQlxM,KAAKw7Q,gBAAgBxhN,YAAY,GACzCh6D,KAAK4/Q,kBAAkB5/Q,KAAKw7Q,gBAx1Bf,GACF,EAu1BwE5D,IAE1F,EACDgI,kBAAmB,SAAS5iO,EAAMxzC,EAAMguG,EAAI3rF,GACxC,OAAOqlL,GAAAA,QAAWl0J,EAAKgd,WAAY,CAC/B30D,KAAM,MACNmE,KAAM,CACFylM,MAAOzlM,EACP0J,QAAS1J,GAEbguG,GAAI,CACAy3F,MAAOz3F,EACPtkG,QAASskG,GAEb3rF,SAAUA,GAEjB,EACD+vP,UAAW,SAAS3uQ,EAAQ/O,GACxB,GAAI,IAAM+O,GAAU,IAAM1D,KAAKD,IAAI2D,IAAWjN,KAAKi9Q,iBAAiB/+Q,GAAQ,CACxE,IAAI2hR,EAAU7/Q,KAAK88Q,oBAAoB5+Q,GACnC+O,EAAS,GACTjN,KAAKm9Q,YAAcn9Q,KAAKm9Q,WAAWnjN,WAAWt8D,SAC9CsC,KAAKm9Q,WAAa0C,IAElB7/Q,KAAKg9Q,aAAeh9Q,KAAKg9Q,YAAYhjN,WAAWt8D,SAChDsC,KAAKg9Q,YAAc6C,GAEvB7/Q,KAAKo9Q,iBACR,CACD,IAEI0C,GAFgB9/Q,KAAK+4Q,qBACR9rQ,EAAS,EAAI,EAAIA,EAAS,GAAK,EAAI,GACJjN,KAAK4+Q,aAC1B5+Q,KAAKo7Q,eAAe5wQ,WAAWo6B,OAC7Bk7O,IACrB9/Q,KAAK+/Q,4BACL//Q,KAAKggR,4BAA4B/yQ,EAAQ/O,GAEzC8B,KAAKo/Q,gBAAgBU,EAAalI,IAA8BhpN,KAAK5uD,KAAKggR,4BAA4BljR,KAAKkD,KAAMiN,EAAQ/O,IAGpI,EACDkhR,gBAAiB,SAAS5nK,EAAI3rF,GAC1B,OAAOqlL,GAAAA,QAAWlxM,KAAKo7Q,eAAgB,CACnC/1Q,KAAM,QACNmE,KAAM,CACFo7B,KAAM5kC,KAAKo7Q,eAAe5wQ,WAAWo6B,MAEzC4yE,GAAI,CACA5yE,KAAM4yE,GAEV3rF,SAAUA,GAEjB,EACDqvP,SAAU,SAAAh9Q,GAAK,OAAI,IAAI4E,KAAK5E,EAAb,EACfwhR,aAAc,SAAS9hR,GACnB,IAAI42Q,EAAQ,IAAI1xQ,KACZ9C,KAAKk2Q,kBACLl2Q,KAAKokO,mBAAmBi1C,YAAY7E,EAAO52Q,EAAKmD,QAGpDf,KAAK+/Q,6BAA8B,EACnC//Q,KAAK2sC,OAAO,YAAa3sC,KAAK2sC,OAAO,iBACrC3sC,KAAKokO,mBAAmBi1C,YAAY7E,EAAO52Q,EAAKmD,OAChDf,KAAKg+Q,mBACLh+Q,KAAK+/Q,6BAA8B,EACtC,EACDC,4BAA6B,SAAS/yQ,EAAQy0E,GAC1C1hF,KAAKigR,gBAAgBhzQ,GACrBjN,KAAKo9Q,kBACLp9Q,KAAKkgR,iBACLlgR,KAAK27Q,mBACL37Q,KAAK07Q,kBAAkBh6L,GACvB1hF,KAAK21Q,cAAcj0L,GACnB1hF,KAAKokO,mBAAmB2xC,oBAC3B,EACDkK,gBAAiB,SAAShzQ,GACtB,IAAIkzQ,EACJ,GAAI,IAAMlzQ,EAAV,CAGA,IAGImzQ,EACAC,EACAC,EACAC,EACAC,EANYlI,EACZt4Q,KAAK2sC,SADL2rO,WAoBJ,GAbIrrQ,EAAS,GACTmzQ,EAAa,EACbC,EAAkB,cAClBC,EAAkB,aAClBC,EAAsB,QACtBC,EAAqB,IAAMlI,EAAa,QAAU,oBAElD8H,GAAc,EACdC,EAAkB,aAClBC,EAAkB,cAClBC,EAAsB,IAAMjI,EAAa,QAAU,kBACnDkI,EAAqB,SAEpBxgR,KAAKqgR,GAAV,CAGA,IAAII,EAAkBzgR,KAAKqgR,GAAiB1zO,OAAO,QACnD,QAAUwzO,EAAwBngR,KAAKsgR,UAAqB,IAAWH,GAAiCA,EAAsBnmN,WAAWt8D,SACzIsC,KAAKsgR,GAAmBtgR,KAAK88Q,oBAAoB98Q,KAAKq8Q,iBAAiB+D,EAAa9H,EAAYmI,IAChGzgR,KAAKwgR,GAAoBxmN,WAAWt8D,SAChC,IAAM46Q,EACNt4Q,KAAKwgR,GAAsBxgR,KAAKqgR,IAEhCrgR,KAAKwgR,GAAsBxgR,KAAKugR,GAChCvgR,KAAKugR,GAAuBvgR,KAAKqgR,IAErC,IAAIK,EAAe1gR,KAAKq8Q,kBAAkB+D,EAAYK,GACtDzgR,KAAKqgR,GAAmBrgR,KAAKi9Q,iBAAiByD,GAAgB1gR,KAAK88Q,oBAAoB4D,GAAgB,IAZtG,CAxBA,CAqCJ,EACDR,eAAgB,WACZ/8H,GAAKnjJ,KAAKo7Q,eAAgB,CACtBx2O,KAAM,EACNH,IAAK,GAEZ,EACD6kI,OAAQ,WACJtpK,KAAKmiD,WACLniD,KAAK2gR,8BACE3gR,KAAKo7Q,sBACLp7Q,KAAK08Q,kBACL18Q,KAAK2/Q,QACf,EACDgB,qBAAsB,kBACX3gR,KAAKq/Q,eACf,EACDuB,cAAe,WACX5gR,KAAKi5Q,MAAMj/M,WAAWt8D,SACtBsC,KAAKg9Q,aAAeh9Q,KAAKg9Q,YAAYhjN,WAAWt8D,SAChDsC,KAAKw7Q,iBAAmBx7Q,KAAKw7Q,gBAAgBxhN,WAAWt8D,SACxDsC,KAAKm9Q,YAAcn9Q,KAAKm9Q,WAAWnjN,WAAWt8D,gBACvCsC,KAAKi5Q,aACLj5Q,KAAKw7Q,uBACLx7Q,KAAKg9Q,mBACLh9Q,KAAKm9Q,kBACLn9Q,KAAKy1Q,aACf,EACD/iI,SAAU,WACNp9G,aAAat1B,KAAKs8Q,wBAClBt8Q,KAAKmiD,UACR,EACDs5N,cAAe,WACXz7Q,KAAKy4M,oBACLz4M,KAAK4gR,gBACL5gR,KAAKy8Q,cACR,EACD90G,mBAAoB,WAChB3nK,KAAKo9Q,iBACR,EACD5jE,gBAAiB,WACbx5M,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK07Q,kBAAkB17Q,KAAK2sC,OAAO,eACtC,EACD+sK,iBAAkB,WACd,IAAImnE,EACJ7gR,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKi5Q,MAAMtsO,OAAO,gBAAiB,MACnC,QAAUk0O,EAAyB7gR,KAAKw7Q,uBAAoB,IAAWqF,GAAkCA,EAAuBl0O,OAAO,gBAAiB,KAC3J,EACDwpO,mBAAoB,SAAS3mO,EAAY3G,GACrC,IAAIi4O,EAAwBC,EAAmBC,EAC/ChhR,KAAKi5Q,MAAMtsO,OAAO6C,EAAY3G,GAC9B,QAAUi4O,EAAyB9gR,KAAKw7Q,uBAAoB,IAAWsF,GAAkCA,EAAuBn0O,OAAO6C,EAAY3G,GACnJ,QAAUk4O,EAAoB/gR,KAAKg9Q,mBAAgB,IAAW+D,GAA6BA,EAAkBp0O,OAAO6C,EAAY3G,GAChI,QAAUm4O,EAAmBhhR,KAAKm9Q,kBAAe,IAAW6D,GAA4BA,EAAiBr0O,OAAO6C,EAAY3G,EAC/H,EACDo4O,mBAAoB,SAASp+P,GACzB7iB,KAAKkhR,6BACLlhR,KAAK2sC,OAAO,YAAa3sC,KAAK61Q,eAAehzP,IAC7C7iB,KAAKm2Q,mBAAmB,MAAOn2Q,KAAK45Q,cACvC,EACDuH,mBAAoB,SAAS1pP,GACzBz3B,KAAKkhR,6BACLlhR,KAAK2sC,OAAO,YAAa3sC,KAAK61Q,eAAep+O,IAC7Cz3B,KAAKm2Q,mBAAmB,MAAOn2Q,KAAK25Q,cACvC,EACDuH,2BAA4B,WACxBlhR,KAAK2sC,OAAO,CACRqvO,UAAW,KACXC,UAAW,OAEfj8Q,KAAKm2Q,mBAAmB,MAAOn2Q,KAAK45Q,eACpC55Q,KAAKm2Q,mBAAmB,MAAOn2Q,KAAK25Q,cACvC,EACDjE,oBAAqB,SAASx3Q,EAAO28J,GAAe,WAChDA,EAAcn6J,SAAQ,SAAAkE,GAClB,EAAKk2M,QAAQ,gBAAY,EAAQ,EAAKm+D,MAAMvH,eAAe9sQ,GAC9D,IACD1G,EAAMwC,SAAQ,SAAAkE,GACV,EAAKk2M,QAAQ,YAAY,EAAM,EAAKm+D,MAAMvH,eAAe9sQ,GAC5D,IACG5E,KAAK2sC,OAAO,cAAgB,IAC5BkuH,EAAcn6J,SAAQ,SAAAkE,GAClB,EAAKk2M,QAAQ,gBAAY,EAAQ,EAAK0gE,gBAAgB9J,eAAe9sQ,GACxE,IACD1G,EAAMwC,SAAQ,SAAAkE,GACV,EAAKk2M,QAAQ,YAAY,EAAM,EAAK0gE,gBAAgB9J,eAAe9sQ,GACtE,IAER,EACD+wQ,cAAe,SAASz3Q,GACpB,IAAIkuD,EACJluD,EAAQ,QAAUkuD,EAASluD,SAAU,IAAWkuD,EAASA,EAASpsD,KAAK2sC,OAAO,eAC9E,IAAIy0O,EAAS,MAAQ,IAAIl1N,GAAAA,EAErBm1N,EADOrhR,KAAK87Q,eAAe59Q,GACXwzQ,eAAexzQ,GACnC8B,KAAK86M,QAAQ,KAAMsmE,EAAQC,GAC3BrhR,KAAK86M,QAAQ,mBAAoBsmE,GACjCphR,KAAKm7Q,oBAAoBiG,EAC5B,EACDE,uBAAwB,SAAS/jR,EAAUK,GACvCoC,KAAKu7Q,qBAAsB,EAC3Bh+Q,EAASwa,MAAM/X,KAAMpC,UACdoC,KAAKu7Q,mBACf,EACDz7G,eAAgB,SAASliK,GACrB,IACWM,EAEPN,EAFAM,MACe28J,EACfj9J,EADAi9J,cAEJ,OAAQj9J,EAAKxE,MACT,IAAK,QACD4G,KAAKmiD,SAASvkD,GACdoC,KAAK2gR,uBACL,MACJ,IAAK,MACL,IAAK,MACD3gR,KAAK6iB,SAAM,EACX7iB,KAAKy3B,SAAM,EACXz3B,KAAKshR,uBAAuBthR,KAAK62Q,mBAAoB,CAAC72Q,KAAK2sC,OAAO,iBAClE3sC,KAAKy7Q,gBACLz7Q,KAAK27Q,mBACL,MACJ,IAAK,gBACD37Q,KAAK86Q,4BACL96Q,KAAKi2Q,mBACL,MACJ,IAAK,iBACDj2Q,KAAKy7Q,gBACLz7Q,KAAKm+Q,2BACL,MACJ,IAAK,cACDn+Q,KAAK86M,QAAQ,UAAM,EAAQ96M,KAAKi5Q,MAAMvH,eAAe72G,IACrD76J,KAAK62Q,mBAAmB34Q,GACxB,MACJ,IAAK,YACD8B,KAAKg6D,WAAWqU,YAAYwuM,oBAA4BhiH,GACxD76J,KAAK26Q,oBACL36Q,KAAKy7Q,gBACLz7Q,KAAK27Q,mBACL37Q,KAAK21Q,gBACL,MACJ,IAAK,eACL,IAAK,eACD31Q,KAAK26Q,oBACL36Q,KAAKm+Q,2BACL,MACJ,IAAK,QACG,WAAan+Q,KAAK2sC,OAAO,kBACzB3sC,KAAKokO,mBAAmBm9C,oBAAoB,CAACrjR,GAAQ,CAAC28J,IAE1D76J,KAAK6lP,gBAAgB3nP,GACrB8B,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,SACG,WAAaoC,KAAK2sC,OAAO,kBACzB3sC,KAAKokO,mBAAmBm9C,oBAAoBrjR,EAAO28J,GAEvD76J,KAAK2iP,wBAAwBzkP,EAAO28J,GACpC76J,KAAK8iP,2BAAsB,GAC3B,MACJ,IAAK,aACD9iP,KAAKy7Q,gBACLz7Q,KAAK27Q,mBACL,MACJ,IAAK,cACD37Q,KAAKi5Q,MAAMtsO,OAAO,cAAezuC,GACjC,MACJ,IAAK,qBACD8B,KAAKm7Q,oBAAsBn7Q,KAAK2/J,sBAAsB,sBACtD,MACJ,IAAK,gBACL,IAAK,0BACL,IAAK,eACL,IAAK,kBACD3/J,KAAKypK,cACL,MACJ,IAAK,iBACD,MACJ,IAAK,aACL,IAAK,kBACL,IAAK,iBACDzpK,KAAKy7Q,gBACL,MACJ,QACIz7Q,KAAKmiD,SAASvkD,GAEzB,EACD4jR,iBAAkB,WACd,OAAOxhR,KAAKi5Q,MAAMtsO,OAAO,gBAC5B,IAEL6lI,GAAkB,aAAc6lG,IAChC,IC/sCA,GD+sCA,GEzsCIh1N,GAAW8I,GAAAA,EAAAA,SACXs1N,GAAkBt1N,GAAAA,EAAAA,QAAc,CAChCpJ,KAAM,SAAS2+N,GACX1hR,KAAK0hR,QAAUA,CAClB,EACDC,aAAc,WACV,OAAO3hR,KAAK4hR,SAAW5hR,KAAK4hR,QAAQj1O,OAAO50B,MAAM/X,KAAK4hR,QAAS9pQ,UAClE,EACD+pQ,cAAe,SAASr1Q,GACpBA,EAAUA,GAAWukE,GAAE,SACvB/wE,KAAK4hR,QAAU5hR,KAAK+qC,cAAcv+B,GAClCxM,KAAK4hR,QAAQ5nN,WAAW2U,SAAS3uE,KAAK8hR,sBACzC,EACD/2O,cAAe,SAASv+B,GACpB,IAAIu2J,EAAa/iK,KAAK+hR,iBAClB7+G,EAAgBljK,KAAKgiR,oBACzB,OAAOhiR,KAAK0hR,QAAQv+G,iBAAiB32J,EAASu2J,EAAYG,EAC7D,EACD8+G,kBAAmB3+N,GACnB0+N,eAAgB1+N,GAChB4+N,kBAAmB,WACf,MAAO,CACH36P,KAAM,OAEb,EACD46P,iBAAkB7+N,GAClB8+N,cAAergQ,GAAAA,KACfsgQ,oBAAqBtgQ,GAAAA,KACrBugQ,iBAAkBvgQ,GAAAA,KAClBwgQ,cAAe,SAAS37Q,EAAMkxD,GAC1B,IAAI35D,EAAQkqH,GAAAA,MAAuBzhH,EAAMkxD,GACzC,OAAO35D,GAAgBkqH,GAAAA,MAAuBzhH,EACjD,EACD47Q,kBAAmBzgQ,GAAAA,KACnB0gQ,kBAAmB,WACfxiR,KAAKu5P,cACR,EACDsO,YAAaxkN,GACbukH,kBAAmB,WACf,IAAI66G,EACJ,QAAUA,EAAkBziR,KAAK0iR,mBAAgB,IAAWD,GAA2BA,EAAgBtnE,SAC1G,EACDwnE,mBAAoB,WAChB,IAAI9Z,EAAQ7oQ,KAAK0iR,YACjB1iR,KAAK6hR,gBACL,IAAIvZ,EAAgBO,EAAMvuE,WAAWzvL,SACrC0zD,EAAAA,EAAAA,IAAiB+pM,EAAe,aAChC/pM,EAAAA,EAAAA,GAAgB+pM,EAAe,YAAatoQ,KAAK4iR,qBAAqB9lR,KAAKkD,MAC9E,EACD6iR,qBAAsB/gQ,GAAAA,KACtBghQ,oBAAqBhhQ,GAAAA,KACrB8gQ,qBAAsB,SAAS35Q,GAC3BA,EAAEkzD,gBACL,EACD2lN,oBAAqB,WACjB,OAAO9hR,KAAK0iR,YAAYpoF,UAC3B,EACDooF,UAAW,WACP,OAAO1iR,KAAK0hR,QAAQpa,MACvB,EACDyb,oBAAqBjhQ,GAAAA,KACrBkhQ,mBAAoBlhQ,GAAAA,KACpBy3O,aAAc,WACVv5P,KAAK4hR,SAAW5hR,KAAK4hR,QAAQj1O,OAAO,QAAS3sC,KAAKijR,eACrD,EACDC,wBAAyBphQ,GAAAA,KACzBqhQ,eAAgB,WACZ,OAAO,IAAIrgR,IACd,EACDsgR,mBAAoBthQ,GAAAA,KACpBuhQ,YAAa,WACLrjR,KAAK0hR,QAAQ/0O,OAAO,WACpB3sC,KAAKu5P,cAEZ,EACD/6N,SAAU,WACN,OAAOx+B,KAAK4hR,QAAQj1O,OAAO,QAC9B,EACD22O,oBAAqB,WACjB,OAAO,CACV,EACD/2O,QAAS,WACL,IAAIs8N,EAAQ7oQ,KAAK0iR,YACb7Z,GACAA,EAAMvuE,WAAWxsI,OAExB,EACDm1N,aAAc,WACV,OAAInrQ,UAAUnX,OACHX,KAAK0hR,QAAQlL,UAAUz+P,MAAM/X,KAAK0hR,QAAS5pQ,WAE3C9X,KAAK0hR,QAAQrL,WAAWt+P,MAAM/X,KAAK0hR,QAAS,CAAC,SAE3D,IAEL,MCxFI6B,GAAmB9B,GAAAA,QAAwB,CAC3CjjH,KAAM,WACNyjH,kBAAmB,WACf,OAAOx8N,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BqhO,gBAAiBp5J,GAAAA,OAA2B,+BAEnD,EACD+3J,cAAe,WACX,IAAIsB,EAAiB,SAASx6Q,GAC1B,QAAIjJ,KAAK2sC,OAAO,YACZ1jC,EAAEkzD,kBACK,EAGd,EACD,MAAO,CACHsxJ,WAAY,WACR,GAAIztN,KAAK2sC,OAAO,UACZ,OAAO,CAEd,EACD6gL,UAAW,WACP,GAAIxtN,KAAK2sC,OAAO,UACZ,OAAO,CAEd,EACDw3G,MAAO,SAASl7I,GACZ,GAAIjJ,KAAK0hR,QAAQ/0O,OAAO,UAAW,CAE/B,GADA1jC,EAAEkzD,iBACEn8D,KAAK4hR,QAAQj1O,OAAO,eAAiB3sC,KAAK4hR,QAAQj1O,OAAO,gBAAiB,CAC1E,IAAI+2O,EAAY1jR,KAAK2jR,qBACjBC,EAAoB5jR,KAAK6jR,mBACzBC,EAAsB9jR,KAAK+jR,wBAM/B,OALID,GAAuBJ,GAAa,aAAeE,GACnD5jR,KAAKijR,aAAaS,EAAWz6Q,GAEjC66Q,GAAuB9jR,KAAK0hR,QAAQhjQ,QACpC1e,KAAK0hR,QAAQ/oB,yBAAyB1vP,IAC9B66Q,CACX,CACG,OAAO,CAEd,CACG9jR,KAAK0hR,QAAQ/oB,yBAAyB1vP,EAE7C,EAACnM,KAAKkD,MACPskJ,KAAMm/H,EACNv5Q,IAAKu5Q,EAEZ,EACDvB,iBAAkB,SAAS8B,GACvB,OAAOA,GAAiB,WAC3B,EACDD,sBAAuB,kBAAM,CAAN,EACvBhC,eAAgB,WACZ,OAAO1J,EACV,EACDsL,mBAAoB,WAChB,OAAO3jR,KAAK4hR,QAAQ3I,MAAMtsO,OAAO,gBACpC,EACDy1O,oBA5D2C,WA6DvC,OAAOpiR,KAAK4hR,OACf,EACDI,kBAAmB,WACf,IAAI1T,EAAgBtuQ,KAAK0hR,QAAQ/0O,OAAO,iBACxC,OAAO8Y,EAAAA,GAAAA,GAAOzlD,KAAK0hR,QAAQ/0O,OAAO,mBAAoB,CAClDzuC,MAAO8B,KAAKijR,gBAAkB,KAC9BrlO,wBAAyB,KACzB/6B,IAAK7iB,KAAK0hR,QAAQrL,WAAW,OAC7B5+O,IAAKz3B,KAAK0hR,QAAQrL,WAAW,OAC7Br0B,eAAgBhiP,KAAKikR,qBAAqBnnR,KAAKkD,MAC/Cs/C,YAAat/C,KAAK29Q,kBAAkB7gR,KAAKkD,MACzCwgD,SAAU,KACV8tN,eAAez/M,EAAAA,EAAAA,IAAWy/M,GAAiBtuQ,KAAKy9Q,iBAAiBnP,EAAcxxQ,KAAKkD,KAAK0hR,UAAYpT,EACrGqK,mBAAoB34Q,KAAKoxN,yBAAyBt0N,KAAKkD,MACvD44Q,gBAAgB,GAEvB,EACD6E,iBAAkB,SAAS1sQ,GACvB,IAAI0+C,EAAOzvD,KACX,OAAO,SAASsE,GAIZ,OAHAmhD,EAAAA,GAAAA,GAAOnhD,EAAQ,CACX8sB,UAAWq+B,EAAKiyN,UAEb3wQ,EAAKzM,EACf,CACJ,EACD8sN,yBAA0B,SAASnoN,GAC/BjJ,KAAK6jR,mBAAqB,WAC1B7jR,KAAK0hR,QAAQ5mE,QAAQ,mBAAoB7xM,EAAE+3J,YAC9C,EACDkjH,sBA3F2C,WA2FnB,WAChB5f,EAAkBtkQ,KAAK0hR,QAAQ/0O,OAAO,mBAEtCniC,EAD2B,YAAc85P,EACH,CAAC,SAAU,WAAYh0M,EAAAA,GAAAA,WAAUg0M,GAC3E,MAAO,CACHthG,OAAQ,WACRr+I,QAASna,EAAS,GAClBmoB,SAAU,UAAYnoB,EAAS,GAAK,SAAWA,EAAS,GACxDpN,QAAS,CACLsiD,cAAe,SAASz2C,GACpBA,EAAEmoB,UAAUgqL,mBAAmB,SAAUp7M,KAAKmkR,eAAernR,KAAKkD,MACrE,EAAClD,KAAKkD,MACPs9K,QAAS,SAAA1/K,GACL,EAAKgkR,QAAQlC,aAAa9hR,EAC7B,EACD+I,KAAM3G,KAAK0hR,QAAQ/0O,OAAO,mBAC1BtnC,KAAM,SAGjB,EACD++Q,mBAAoB,WAChB,IACqBC,EACjBrkR,KAAK0hR,QAAQ/0O,SADb03O,gBAEJ,OAAOzoN,EAAAA,EAAAA,IAAcyoN,KAAoB,IAAUA,EAAgBxjO,OACtE,EACD6nN,sBArH2C,SAqHrB5zB,GAGlB,MAFiB,eAAiB90O,KAAK0hR,QAAQ/0O,OAAO,mBACV3sC,KAAKokR,qBAGtC,CADWpkR,KAAKkkR,yBACvB,gBAAwBpvC,IAErBA,CACV,EACD+yB,YAAa,SAASC,GAClB,OAAOriN,EAAAA,GAAAA,IAAO,EAAMqiN,EAAc,CAC9Bt9P,SAAU,CACNujM,UAAW,gBAEfp9K,MAAO,QAEd,EACDwzP,eAAgB,WACZnkR,KAAK0hR,QAAQhjQ,QACb1e,KAAK0hR,QAAQr7P,OAChB,EACD49P,qBAAsB,SAASh7Q,GAC3B,IAAI/K,EAAQ+K,EAAE/K,MACV66D,EAAY9vD,EAAE4xJ,cACd74E,GAAAA,SAAmB9jF,EAAO66D,IAAcipB,GAAAA,oBAA8B9jF,EAAO66D,IAG7E,cAAgB/4D,KAAK0hR,QAAQ/0O,OAAO,mBACpC3sC,KAAKijR,aAAajjR,KAAKw+B,WAAYv1B,EAAElI,MAE5C,EACDw4P,aAAc,WACLv5P,KAAK4hR,SAGV5hR,KAAK4hR,QAAQj1O,OAAO,QAAS3sC,KAAKijR,eACrC,EACDG,mBAAoB,WAChBpjR,KAAK6jR,mBAAqB,QACtB7jR,KAAK0hR,QAAQ/0O,OAAO,WAAa3sC,KAAK4hR,SACtC5hR,KAAKu5P,cAAa,EAEzB,EACDokB,kBAAmB,SAAS10Q,GACxB,IAAIy4Q,EAAU1hR,KAAK0hR,QACf,cAAgBA,EAAQ/0O,OAAO,oBAC/B+0O,EAAQ/0O,OAAO,UAAU,GACzB3sC,KAAKijR,aAAajjR,KAAKw+B,WAAYv1B,EAAElI,OAE5C,IAEL,MClLIsiD,GAAW8I,GAAAA,EAAAA,SA4Cf,GAvCeA,GAAAA,EAAAA,QAAc,CACzBpJ,KAAM,WACF/iD,KAAKskR,WAAY,EACjBtkR,KAAKukR,UAAW,EAChBvkR,KAAKwkR,iBAAmBxkR,KAAKykR,UAAU3nR,KAAKkD,KAC/C,EACDu8B,MAAO,WACHv8B,KAAKukR,UAAW,EAChBvkR,KAAKskR,WAAY,EACjBtkR,KAAKykR,WACR,EACDhyF,KAAM,WACFzyL,KAAKukR,UAAW,GAChB7iO,EAAAA,GAAAA,sBAAqB1hD,KAAK0kR,oBAC7B,EACDD,UAAW,WACP,GAAIzkR,KAAK2kR,aACL3kR,KAAKyqJ,YADT,CAIA,GAAIzqJ,KAAK4kR,cAGL,OAFA5kR,KAAKskR,WAAY,OACjBtkR,KAAK6kR,YAGT7kR,KAAK8kR,QACL9kR,KAAK0kR,qBAAsBvpO,EAAAA,GAAAA,uBAAsBn7C,KAAKwkR,iBAPrD,CAQJ,EACDM,MAAOzhO,GACPuhO,YAAa9iQ,GAAAA,KACb2oI,MAAO3oI,GAAAA,KACP+iQ,UAAW/iQ,GAAAA,KACX6iQ,WAAY,WACR,OAAO3kR,KAAKukR,QACf,EACDQ,WAAY,WACR,QAAS/kR,KAAKukR,UAAYvkR,KAAKskR,UAClC,ICzBDU,GAAY,cACZC,GAA6B,0BAC7BC,GAAoC,GAAGj1Q,OAAOg1Q,GAA4B,WAI1EE,GAAa,aAEbC,GACU,WADVA,GAES,UAFTA,GAGQ,SAHRA,GAIO,QAEPC,GAAkB,KAClBC,GAAY1gF,GAAAA,QAAe,CAC3BhnC,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3Bv7B,UAAW,KACXi6B,SAAS,EACTsjJ,oBAAoB,EACpBohF,eAAgBH,GAChBI,cAAe,EACfC,YAAa,EACbC,YAAY,EACZC,WAAY,GAEnB,EACDpiL,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK4lR,YAAa,CACrB,EACDt9G,YAAa,WACTtoK,KAAK6lR,eACL7lR,KAAKmiD,UACR,EACD24B,QAAS,WACL96E,KAAKmiD,WACLniD,KAAK8lR,mBACL9lR,KAAK+lR,UACL/lR,KAAKgmR,4BACLhmR,KAAK2sC,OAAO,oBAAqB3sC,KAAKimR,gBACtCjmR,KAAKg6D,WAAWiU,YArCE,yBAqC+BjuE,KAAK2sC,OAAO,qBAChE,EACDk5O,aAAc,WACV7lR,KAAKkmR,QAAUn1M,GAAE,SAAS3C,SA1CJ,wBA2CtB2C,GAAE,SAAS3C,SA1CmB,gCA0CuBO,SAAS3uE,KAAKkmR,SACnElmR,KAAKg6D,WAAWoU,SAAS62M,IAA4Bt/Q,OAAO3F,KAAKkmR,QACpE,EACDC,QAAS,SAASnsN,GACd,QAASh6D,KAAKg6D,WAAWh+D,KAAKg+D,GAAUr5D,MAC3C,EACDslR,aAAc,WACV,IAAIV,EAAiBvlR,KAAK2sC,OAAO,kBACjC,OAAQ44O,IAAmBH,IAA6BG,IAAmBH,KAA6BplR,KAAK2sC,OAAO,aACvH,EACDm5O,iBAAkB,WACd,IAAIl/P,EAAY5mB,KAAK2sC,OAAO,aAC5B3sC,KAAKg6D,WAAWoU,SAAS,gBAAkBxnD,GAC3C5mB,KAAKomR,WAAax/P,IAAcu+P,GAAa,QAAU,SACvDnlR,KAAKqmR,MAAQz/P,IAAcu+P,GAAa,OAAS,KACpD,EACDa,0BAA2B,WACvBznN,EAAAA,EAAAA,GAAgBv+D,KAAKkmR,QAAS1iI,GAAa3oF,GAAAA,KAAoBmqN,IAAYhlR,KAAKsmR,WAAWxpR,KAAKkD,MACnG,EACDsmR,WAAY,WACRtmR,KAAKg6D,WAAWoU,SAAS82M,IACzBG,GAAkBrlR,IACrB,EACDumR,YAAa,WACTvmR,KAAKg6D,WAAWqU,YAAY62M,IAC5BG,GAAkB,IACrB,EACDmB,YAAa,WACTxmR,KAAK4lR,YAAa,EACd5lR,KAAKymR,kBACLzmR,KAAK2sC,OAAO,WAAW,EAE9B,EACD+5O,YAAa,WACT1mR,KAAK4lR,YAAa,EAClB5lR,KAAK2sC,OAAO,WAAW,EAC1B,EACD+7H,kBAAmB,WACf1oK,KAAKkmR,QAAQ5gP,IAAI,CACb3U,MAAO3wB,KAAK2sC,OAAO,SACnBngB,OAAQxsB,KAAK2sC,OAAO,WAE3B,EACDkrK,kBAAmB,SAASh3J,GACpB7gD,KAAK2sC,OAAO,oBAAsBy4O,IAClCplR,KAAKkmR,QAAQ5gP,IAAI,WAErBub,EAAU7gD,KAAK2mR,kBAAkB9lO,GACjC7gD,KAAK2sC,SAASkU,QAAUA,EACxB7gD,KAAKkmR,QAAQj4M,YAAY,sBAAuBptB,EACnD,EACD8lO,kBAAmB,SAAS9lO,GACxB,GAAI7gD,KAAK4mR,+BAAiC5mR,KAAKymR,iBAC3C,OAAO,EAEX,OAAQzmR,KAAK2sC,OAAO,mBAChB,KAAKy4O,GACD,MACJ,KAAKA,GACDvkO,EAAUA,KAAa7gD,KAAK4lR,WAC5B,MACJ,KAAKR,GACDvkO,GAAU,EACV,MACJ,KAAKukO,GACDvkO,GAAU,EAElB,OAAOA,CACV,EACDgmO,OAAQ,SAASl0P,GACb,IAAI3yB,KAAKkpK,YAAT,EAGI9hI,EAAAA,EAAAA,IAAczU,KACdA,EAAWA,EAAS3yB,KAAKqmR,QAAU,GAEvC,IAAIS,EAAoB,CAAC,EACzBA,EAAkB9mR,KAAKqmR,OAASrmR,KAAK+mR,4BAA4Bp0P,GACjEwwH,GAAKnjJ,KAAKkmR,QAASY,EANlB,CAOJ,EACDC,4BAA6B,SAASp0P,GAClC,OAAQA,EAAW3yB,KAAKgnR,WAC3B,EACDjB,QAAS,WACL,IAAIP,EAAgBj8Q,KAAKoZ,MAAM3iB,KAAK2sC,OAAO,kBACvC84O,EAAcl8Q,KAAKoZ,MAAM3iB,KAAK2sC,OAAO,gBACrCs6O,EAAoB19Q,KAAKoZ,MAAM3iB,KAAK2sC,OAAO,sBAC3Cu6O,EAAkB39Q,KAAKoZ,MAAM3iB,KAAK2sC,OAAO,oBACzCgvB,MAAMsrN,KACNA,EAAoBzB,EACpB0B,EAAkBzB,GAEtBzlR,KAAK4mR,6BAA+BM,EAAkBD,EAAoBC,EAAkBD,EAC5FjnR,KAAKmnR,6BAA+B1B,EAAcD,EAAgBC,EAAcD,EAChF,IAAI4B,EAAY79Q,KAAKoZ,MAAMpZ,KAAKkuB,IAAIluB,KAAKoZ,MAAM6iQ,EAAgBxlR,KAAKmnR,8BArIvD,KAsIbnnR,KAAKgnR,aAAexB,EAAgB4B,IAAcpnR,KAAK2sC,OAAO,eAAiB84O,EAAcD,IAC7FxlR,KAAK2sC,OAAO3sC,KAAKomR,WAAYgB,EAAYpnR,KAAK2sC,OAAO,eACrD3sC,KAAKg6D,WAAW10B,IAAI,UAAWtlC,KAAKymR,iBAAmB,GAAK,OAC/D,EACDv9G,UAAW,WACP,OAAOlpK,KAAK2sC,OAAO,oBAAsBy4O,EAC5C,EACDqB,eAAgB,WACZ,OAAQzmR,KAAKkpK,aAAelpK,KAAK4mR,6BAA+B,CACnE,EACDS,wBAAyB,WACrB,OAAOrnR,KAAKmnR,4BACf,EACDG,eAAgB,SAASz5Q,GACrB,OAAOu5B,EAAAA,EAAAA,IAAcv5B,GAAQA,EAAK7N,KAAKomR,aAAe,EAAIv4Q,CAC7D,EACDy7J,OAAQ,WACJtpK,KAAKmiD,WACDniD,OAASqlR,KACTA,GAAkB,MAEtB9mN,EAAAA,EAAAA,IAAiBv+D,KAAKkmR,QAAS,IAAMlB,GACxC,EACDllH,eAAgB,SAASliK,GACrB,IAAIoC,KAAKkpK,YAGT,OAAQtrK,EAAKxE,MACT,IAAK,gBACL,IAAK,cACD4G,KAAK2sC,SAAS/uC,EAAKxE,MAAQ4G,KAAKsnR,eAAe1pR,EAAKM,OACpD8B,KAAK+lR,UACL,MACJ,IAAK,kBACL,IAAK,oBAOL,IAAK,aACD/lR,KAAK+lR,UACL,MANJ,IAAK,iBACL,IAAK,YACD/lR,KAAKypK,cACL,MAIJ,QACIzpK,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAErC,EACDk0B,QAAQwjB,EAAAA,GAAAA,gBAAe,WACnBxvD,KAAK2mR,qBAAuB3mR,KAAK2sC,OAAO,WAAW,EACtD,MAEL46O,GAAAA,KAAmB,WACfhpN,EAAAA,EAAAA,gBAA6B1B,EAAAA,EAAAA,cAA0B2mF,GAAa3oF,GAAAA,GAAkBmqN,KAAa,WAC3FK,IACAA,GAAgBkB,aAEvB,GACJ,IACD,ICoOIiB,GACAC,GDrOJ,MCvKIC,GAA8BC,8BAC9BC,GAAgCD,gCAChCE,GAA6B,0BAG7BC,GAAW,WACX3C,GAAa,aACb4C,GAAe,IAGfnlF,GAAiBr5L,KAAKoZ,MAAM,IAAM,IAKlCqlQ,GADkB,IACgBplF,GAClCqlF,IAA2B,EAAI1+Q,KAAKkZ,IAAIslQ,GAAcC,MAAmB,EAAID,IAC7EG,GACS,SADTA,GAEW,WAFXA,GAGK,MAHLA,GAIM,OAJNA,GAKM,YALNA,GAMI,UANJA,GAOO,aAPPA,GAQM,YARNA,GASK,MAELC,GAAkBC,GAAAA,QAAiB,CACnCrlO,KAAM,SAASslO,GACXroR,KAAKmiD,WACLniD,KAAKqoR,SAAWA,CACnB,EACDC,eAxBqB,EAyBrB1D,YAAa,WACT,OAAOr7Q,KAAKD,IAAItJ,KAAKqoR,SAASE,YAAcvoR,KAAKsoR,cACpD,EACDxD,MAAO,WACH9kR,KAAKqoR,SAASG,YAAYxoR,KAAKqoR,SAASE,WACxCvoR,KAAKqoR,SAASE,WAAavoR,KAAKyoR,eACnC,EACDA,cAAe,WACX,OAAOzoR,KAAKqoR,SAASK,YAAcX,GAlCb,EAmCzB,EACDlD,UAAW,WACP7kR,KAAKqoR,SAASM,iBACjB,IAEDC,GAAiBT,GAAgB98P,QAAQ,CACzCi9P,eApC4BO,GAqC5BjE,YAAa,WACT,OAAO5kR,KAAKqoR,SAASS,yBAA2B9oR,KAAKmiD,UACxD,EACDsmO,cAAe,WACX,OAAOV,EACV,EACDlD,UAAW,WACP7kR,KAAKqoR,SAAS5+H,MAAMzpJ,KAAKqoR,SAASU,iBAClC/oR,KAAKmiD,UACR,IAEM6mO,GAAW78N,GAAAA,EAAAA,QAAc,CAChCpJ,KAAM,SAAS3lD,GACX4C,KAAKs/J,aAAaliK,GAClB4C,KAAKipR,iBACLjpR,KAAKkpR,gBACR,EACD5pH,aAAc,SAASliK,GAAS,WAC5B4C,KAAKmpR,UAAY,EACjBnpR,KAAKopR,aAAc,EACnBppR,KAAKqpR,gBAAiB,EACtBrpR,KAAKspR,MAAQlsR,EAAQwpB,YAAcu+P,GAAa,IAAM,IACtDnlR,KAAKqmR,MAAQjpR,EAAQwpB,YAAcu+P,GAAa,OAAS,MACzDnlR,KAAKomR,WAAahpR,EAAQwpB,YAAcu+P,GAAa,QAAU,SAC/DnlR,KAAKupR,YAAcnsR,EAAQwpB,YAAcu+P,GAAa,aAAe,aACrEt4N,EAAAA,EAAAA,IAAKzvD,GAAS,SAACoyC,EAAYiJ,GACvB,EAAK,IAAMjJ,GAAciJ,CAC5B,GACJ,EACDwwO,eAAgB,WACZjpR,KAAKwpR,iBAAmB,IAAIrB,GAAgBnoR,MAC5CA,KAAKypR,gBAAkB,IAAIb,GAAe5oR,KAC7C,EACDkpR,eAAgB,WACZlpR,KAAK0pR,WAAa,IAAIpE,GAAUv0M,GAAE,SAASpC,SAAS3uE,KAAKolQ,aAAc,CACnEx+O,UAAW5mB,KAAK8gQ,WAChBjgN,QAAS7gD,KAAK2pR,eACdpE,eAAgBvlR,KAAK4pR,yBAAyB5pR,KAAK6pR,mBACnDnE,WAAY1lR,KAAK2pR,iBAErB3pR,KAAK8pR,YAAc9pR,KAAK0pR,WAAW1vN,UACtC,EACD4vN,yBAA0B,SAAStiQ,GAC/B,OAAO,IAASA,EAAO,YAAa,IAAUA,EAAO,QAAUA,CAClE,EACDkhQ,YAAa,SAASvnM,GAClB,IAAI8oM,EAAe/pR,KAAKmpR,UACxBnpR,KAAKmpR,WAAaloM,EAClBjhF,KAAKgqR,kBACLhqR,KAAKypJ,QACDlgJ,KAAKD,IAAIygR,EAAe/pR,KAAKmpR,WAAa,GAG9C5qN,EAAAA,EAAAA,eAA4Bv+D,KAAKolQ,YAAa,CAC1C//P,KAAM,UAEb,EACD2kR,gBAAiB,WACThqR,KAAKiqR,gBAAkBjqR,KAAK0oR,UAAU1oR,KAAKmpR,aAG/CnpR,KAAKuoR,UAAY,EACjBvoR,KAAKmpR,UAAYnpR,KAAKkqR,iBACzB,EACDA,eAAgB,SAASv3P,GAErB,OADAA,OAAW,IAAWA,EAAWA,EAAW3yB,KAAKmpR,UAC1C5/Q,KAAKkuB,IAAIluB,KAAKsZ,IAAI8P,EAAU3yB,KAAKmqR,YAAanqR,KAAKoqR,WAC7D,EACD3gI,MAAO,SAAS92H,GACZ3yB,KAAKmpR,eAAY,IAAWx2P,EAAWA,EAAW3yB,KAAKqqR,iBAAmBrqR,KAAKmpR,UAC/EnpR,KAAKsqR,eACLtqR,KAAKuqR,gBACR,EACDD,aAAc,WACV,IAAI33P,EAAW3yB,KAAKmpR,UACpBnpR,KAAKolQ,YAAYplQ,KAAKupR,cAAc52P,EAAW3yB,KAAKqqR,kBACpDrqR,KAAKwqR,yBAAyB73P,EACjC,EACD03P,eAAgB,WACZ,IAAIvpO,EAAAA,EAAAA,QAAgB9gD,KAAKyqR,YAAa,CAClC,IAAIj+Q,EAAUxM,KAAKgnJ,UAAUptJ,IAAI,GAC7B8wR,EAAgB1qR,KAAK2qR,kBAAkBn+Q,EAASxM,KAAKomR,YACrDwE,EAAgB5qR,KAAK6qR,kBAAkBr+Q,EAASxM,KAAKomR,YACzDpmR,KAAKyqR,YAAclhR,KAAKoZ,MAAM+nQ,EAAgBE,EAAgB,KAAO,GACxE,CACD,OAAO5qR,KAAKyqR,aAAe,CAC9B,EACDE,kBAAmB,SAASn+Q,EAASu7D,GACjC,OAAOx+D,KAAKoZ,MAAM8nE,GAAgBj+E,GAASu7D,GAC9C,EACD8iN,kBAAmB,SAASr+Q,EAASu7D,GAEjC,OAAOv7D,EADa,SAAW44D,EAAS2C,GAE3C,EACDyiN,yBAA0B,SAAS73P,GAC/B,IAAIm4P,EACA71H,GAAaj1J,KAAK+qR,oBAQtB,GANID,EADAn4P,EAAW,EACOA,EACXA,GAAYsiI,EACDtiI,EAAWsiI,EAEXtiI,EAAW,EAE7B3yB,KAAKgrR,mBAAqBF,EAA9B,CAGA,IAAIh8B,EAAiB,CAAC,EACtBA,EAAe9uP,KAAKqmR,OAASyE,EAC7B9qR,KAAKgrR,iBAAmBF,EACpB,IAAMA,EAIV3nI,GAAKnjJ,KAAK28M,UAAWmyC,GAHjB1rG,GAAcpjJ,KAAK28M,UALtB,CASJ,EACD4tE,eAAgB,WACZvqR,KAAK0pR,WAAW7C,OAAO7mR,KAAKmpR,UAC/B,EACDR,gBAAiB,WACT3oR,KAAK0oR,cACL1oR,KAAKirR,iBACDjrR,KAAKkrR,mBACLlrR,KAAKkrR,kBAAkBtsR,WAG/BoB,KAAKmrR,iBACR,EACDA,gBAAiB,WACTnrR,KAAK0oR,cAGT1oR,KAAKorR,gBACLprR,KAAKqrR,eACLrrR,KAAKypR,gBAAgBltP,QACxB,EACD8uP,aAAc,WACV,IACIC,GADgBtrR,KAAK+oR,gBAAkB/oR,KAAKkqR,kBACXlqR,KAAKmpR,UAC1CnpR,KAAKuoR,UAAY+C,EAAiBrD,EACrC,EACDS,UAAW,SAAS/1P,GAEhB,OADAA,OAAW,IAAWA,EAAWA,EAAW3yB,KAAKmpR,UAC1CnpR,KAAKkqR,eAAev3P,KAAcA,CAC5C,EACDm2P,sBAAuB,WACnB,IAAIn2P,EAAW3yB,KAAKmpR,UAChBoC,EAAe54P,EAAW3yB,KAAKuoR,UACnC,OAAO51P,EAAW3yB,KAAKoqR,YAAcmB,GAAgBvrR,KAAKoqR,YAAcz3P,EAAW3yB,KAAKmqR,YAAcoB,GAAgBvrR,KAAKmqR,UAC9H,EACDqB,aAAc,SAASviR,GACnBjJ,KAAKyrR,iBACLzrR,KAAK0rR,uBAAuBziR,EAC/B,EACDwiR,gBAAgBj8N,EAAAA,GAAAA,gBAAe,WAC3BxvD,KAAKirR,iBACLjrR,KAAKwpR,iBAAiB/2F,OACtBzyL,KAAKypR,gBAAgBh3F,MACxB,IACDi5F,uBAAwB,SAASziR,GAC7B,IAAI28I,GAAoB38I,EAAEi5D,eAA1B,CAGA,IAAI0/E,EAAU7wE,GAAE9nE,EAAEi5D,cAAcvqD,QAC5Bg0Q,EAAmB3rR,KAAK4rR,aAAahqI,GACrC+pI,GACA3rR,KAAK6rR,qBAAqB5iR,GAE9BjJ,KAAK8rR,gBAAkBH,GAAoB3rR,KAAK+rR,SAASnqI,GACzD5hJ,KAAKgsR,sBAAwBhsR,KAAK8rR,iBAAmB9rR,KAAKisR,qBAAqBrqI,GAC3E5hJ,KAAK8rR,iBACL9rR,KAAK0pR,WAAWpD,YATnB,CAWJ,EACD4F,yBAA0B,SAAStqI,GAC/B,OAAO5hJ,KAAK+rR,SAASnqI,EACxB,EACDiqI,qBAAsB,SAAS5iR,GAC3B,IAAIkjR,EAAgBljR,EAAE,OAASjJ,KAAKspR,MAAM5iP,eAAiB1mC,KAAKgnJ,UAAU/5I,SAASjN,KAAKqmR,OACpF1zP,EAAW3yB,KAAKmpR,UAAYgD,EAAgBnsR,KAAKosR,2BAA6BthN,GAAU9qE,KAAKolQ,aAAe,EAChHplQ,KAAKwoR,aAAaj/Q,KAAKoZ,MAAMgQ,GAChC,EACD05P,cAAe,WACXrsR,KAAKssR,gBACR,EACDC,aAAc,SAAStrM,GACfjhF,KAAKgsR,uBAGLhsR,KAAK8rR,kBACL7qM,EAAMjhF,KAAKspR,QAAU//Q,KAAKoZ,MAAMs+D,EAAMjhF,KAAKspR,OAAStpR,KAAKosR,6BAE7DpsR,KAAKwsR,UAAUvrM,GAClB,EACDurM,UAAW,SAASvrM,GAChBA,EAAQA,EAAMjhF,KAAKspR,OACdtpR,KAAK0oR,cACNznM,GA/OkB,IAiPtBjhF,KAAKwoR,YAAYvnM,EACpB,EACDwrM,iBAAkB,SAASxrM,GACvBjhF,KAAKwsR,UAAUvrM,GACfjhF,KAAK2oR,iBACR,EACDyD,yBAA0B,WACtB,OAAOpsR,KAAK0pR,WAAWrC,yBAC1B,EACDqF,YAAa,SAASppF,GAKlB,OAJAtjM,KAAKkrR,kBAAoB,IAAI7tQ,GAAAA,GAC7Brd,KAAKuoR,UAAYjlF,EAAStjM,KAAKspR,OAC/BtpR,KAAK2sR,kBACL3sR,KAAK4sR,uBACE5sR,KAAKkrR,kBAAkB5tQ,SACjC,EACDqvQ,gBAAiB,WACb3sR,KAAK6sR,mBACL7sR,KAAKwpR,iBAAiBjtP,OACzB,EACDswP,iBAAkB,WACT7sR,KAAK8sR,kBAAmB9sR,KAAK8rR,kBAC9B9rR,KAAKuoR,UAAY,EAExB,EACDqE,qBAAsB,WAClB5sR,KAAK8rR,iBAAkB,EACvB9rR,KAAKgsR,sBAAuB,CAC/B,EACDe,aAAc,WACN/sR,KAAK8rR,iBACL9rR,KAAK2oR,kBAET3oR,KAAK4sR,uBACL5sR,KAAKmrR,iBACR,EACD6B,gBAAiB,WACbhtR,KAAKyrR,iBACLzrR,KAAK8pR,YAAYpsR,QACpB,EACDuvR,eAAgB,WACZjtR,KAAK+lR,UACL/lR,KAAKktR,eACR,EACDnH,QAAS,WAAW,WAEhB,OADA/lR,KAAKyrR,kBACEvwO,EAAAA,GAAAA,cAAY,WACf,EAAKiyO,mBACL,EAAKC,kBACL,EAAKC,gBACL,EAAKC,oBACL/9N,EAAAA,GAAAA,cAAY,WACR,EAAKg7N,iBACL,EAAKb,WAAW19O,QACnB,GACJ,GACJ,EACDmhP,iBAAkB,WACdntR,KAAKyqR,YAAc,IACtB,EACD2C,gBAAiB,WACbptR,KAAKmpR,WAAazmI,GAAO1iJ,KAAK28M,WAAW38M,KAAKqmR,OAASrmR,KAAKolQ,YAAYplQ,KAAKupR,gBAAkBvpR,KAAKqqR,gBACvG,EACDgD,cAAe,WACXrtR,KAAKmqR,WAAanqR,KAAKutR,gBACvBvtR,KAAKoqR,WAAapqR,KAAKwtR,eAC1B,EACDD,cAAe,WACX,OAAO,CACV,EACDC,cAAe,WAEX,OADAxtR,KAAK+qR,oBAAsBxhR,KAAKkuB,IAAIz3B,KAAKytR,eAAiBztR,KAAK0tR,iBAAkB,IACzE1tR,KAAK+qR,mBAChB,EACDuC,kBAAkB59N,EAAAA,GAAAA,eAAc,WAAW,WACnC81N,EAAgBxlR,KAAK0tR,iBACrBjI,EAAczlR,KAAKytR,eACnBxG,EAAoBjnR,KAAK6qR,kBAAkB7qR,KAAKolQ,YAAYxrQ,IAAI,GAAIoG,KAAKomR,YACzEc,EAAkBlnR,KAAK6qR,kBAAkB7qR,KAAK28M,UAAU/iN,IAAI,GAAIoG,KAAKomR,aACzE72N,EAAAA,GAAAA,cAAY,WACR,EAAKm6N,WAAW/8O,OAAO,CACnB64O,cAAeA,EACfC,YAAaA,EACbwB,kBAAmBA,EACnBC,gBAAiBA,EACjBvB,WAAY,EAAK0E,kBAExB,GACJ,IACD6C,eAAe19N,EAAAA,GAAAA,gBAAcE,EAAAA,GAAAA,eAAaF,EAAAA,GAAAA,gBAAe,WACrD,IAAI78B,EAAW3yB,KAAKkqR,iBAChByD,EAAkBh7P,IAAa3yB,KAAKmpR,UACxCnpR,KAAKmpR,UAAYx2P,EACjB3yB,KAAKypJ,QACDkkI,GACA3tR,KAAK4tR,eAEZ,MACDC,sBAAuB,SAASpsE,GAC5BzhN,KAAK4tR,cAAgBnsE,EAAQqsE,OAC7B9tR,KAAKorR,cAAgB3pE,EAAQssE,MAChC,EACDzB,eAAgB,WACZtsR,KAAK0pR,WAAW/8O,OAAO,WAAW,EACrC,EACDs+O,eAAgB,WACZjrR,KAAK0pR,WAAW/8O,OAAO,WAAW,EACrC,EACD+gP,eAAgB,WACZ,OAAO1tR,KAAK2qR,kBAAkB3qR,KAAKolQ,YAAYxrQ,IAAI,GAAIoG,KAAKomR,WAC/D,EACDqH,aAAc,WACV,IAAIO,EAAmB,WAAahuR,KAAK28M,UAAUr3K,IAAI,WAAatlC,KAAKspR,MAAM5iP,eAC3E++O,EAAczlR,KAAK2qR,kBAAkB3qR,KAAK28M,UAAU/iN,IAAI,GAAIoG,KAAKomR,YACrE,IAAK4H,EAAkB,CACnB,IAAIC,EAAsBjuR,KAAK28M,UAAU,GAAG,SAAWv3I,EAASplE,KAAKomR,aAAepmR,KAAKqqR,iBACzF5E,EAAcl8Q,KAAKkuB,IAAIw2P,EAAqBxI,EAC/C,CACD,OAAOA,CACV,EACDyI,eAAgB,SAASjlR,GACrB,IAAI24I,EAAU7wE,GAAE9nE,EAAEi5D,cAAcvqD,QAChC,OAAO3X,KAAK+rR,SAASnqI,IAAY5hJ,KAAK4rR,aAAahqI,EACtD,EACDmqI,SAAU,SAAS/xN,GACf,OAAOh6D,KAAK2pR,gBAAkB3pR,KAAK0pR,WAAWvD,QAAQnsN,EACzD,EACD4xN,aAAc,SAAS5xN,GACnB,OAAOh6D,KAAK2pR,gBAAkB3vN,GAAYA,EAASiV,GAAGjvE,KAAK8pR,YAC9D,EACDqE,YAAa,WACT,OAAO5kR,KAAKoZ,MAAM3iB,KAAKmpR,UAAYnpR,KAAKoqR,aAAe,CAC1D,EACDgE,YAAa,WACT,OAAO7kR,KAAKoZ,MAAM3iB,KAAKmpR,UAAYnpR,KAAKmqR,aAAe,CAC1D,EACDkE,oBAAqB,WACjBruR,KAAKmtR,mBACLntR,KAAKstR,mBACLttR,KAAK0pR,WAAWlD,aACnB,EACD8H,oBAAqB,WACjBtuR,KAAK0pR,WAAWhD,aACnB,EACDn6O,QAASzqB,GAAAA,OAIFysQ,GAAoBpiO,GAAAA,EAAAA,QAAc,CACzCpJ,KAAM,SAASyrO,GACXxuR,KAAKujG,MAAMirL,EACd,EACDjrL,MAAO,SAASirL,GACZxuR,KAAK4gJ,WAAa4tI,EAClBxuR,KAAKgnJ,UAAYwnI,EAAWx0N,WAC5Bh6D,KAAKolQ,YAAcr0L,GAAEy9M,EAAWjnR,aAChCvH,KAAK48M,UAAY4xE,EAAW5xE,UAC5B58M,KAAK28M,UAAY6xE,EAAWl0F,WAC5Bt6L,KAAK2sC,OAAS6hP,EAAW7hP,OAAO7vC,KAAK0xR,GACrCxuR,KAAK2/J,sBAAwB6uH,EAAW7uH,sBAAsB7iK,KAAK0xR,GACnExuR,KAAKyuR,UAAYD,EAAWC,UAAU3xR,KAAK0xR,GAC3CxuR,KAAK0uR,aAAeF,EAAWE,aAAa5xR,KAAK0xR,GACjDxuR,KAAK2uR,kBAAoBH,EAAWG,kBAAkB7xR,KAAK0xR,GAC3DxuR,KAAKutR,cAAgBiB,EAAWjB,cAAczwR,KAAK0xR,EACtD,EACDlgP,OAAQ,WACJtuC,KAAKgnJ,UAAU54E,SAASy5M,IACxB7nR,KAAK4uR,mBACD5uR,KAAK2sC,OAAO,gBACZ3sC,KAAKolQ,YAAYvoQ,KAAK,WAAY,GAEtCmD,KAAK6uR,yBACL7uR,KAAK8uR,uBACR,EACDF,iBAAkB,WACd5uR,KAAK+uR,WAAa,CAAC,EACf/uR,KAAK0uR,aAAavJ,KAClBnlR,KAAKgvR,gBAAgB7J,IAErBnlR,KAAK0uR,aAAa5G,KAClB9nR,KAAKgvR,gBAAgBlH,IAEzB9nR,KAAKgnJ,UAAU/4E,YA5amB,yCA4a8B,WAAajuE,KAAK2sC,OAAO,iBAC5F,EACDqiP,gBAAiB,SAASpoQ,GACtB5mB,KAAK+uR,WAAWnoQ,GAAa,IAAIoiQ,GAAShpR,KAAKivR,iBAAiBroQ,GACnE,EACDqoQ,iBAAkB,SAASroQ,GACvB,MAAO,CACHA,UAAWA,EACX0zK,SAAUt6L,KAAK28M,UACfniI,WAAYx6E,KAAKolQ,YACjB/oD,SAAUr8M,KAAK48M,UACf5iJ,SAAUh6D,KAAKgnJ,UACfkoI,cAAelvR,KAAK2sC,OAAO,iBAC3BwiP,iBAAkBnvR,KAAK2sC,OAAO,iBAC9ByiP,cAAepvR,KAAK2sC,OAAO,iBAC3B0iP,eAAgBrvR,KAAK2sC,OAAO,kBAC5B2iP,oBAAqBtvR,KAAKisR,qBAAqBnvR,KAAKkD,MAE3D,EACDuvR,iBAAkB,SAASzgC,GACvB,IAAK,IAAIloO,KAAa5mB,KAAK+uR,WAAY,CACnC,IAAIlyR,EAAOmD,KAAKwvR,oBAAoB5oQ,GACpC,IAAIynC,EAAAA,EAAAA,IAAUygM,EAAejyP,IAAQ,CACjC,IAAIwrR,EAAWroR,KAAK+uR,WAAWnoQ,GAC/BkoO,EAAejyP,IAASwrR,EAASgC,gBACpC,CACJ,CACD,OAAOv7B,CACV,EACDm9B,qBAAsB,SAASrqI,GAC3B,IAAIp+I,GAAS,EAIb,OAHAxD,KAAKyvR,cAAc,mBAAoB7tI,GAAShzF,MAAM,SAAS8gO,EAA0BC,GACrFnsR,EAASksR,GAA4BC,CACxC,IACMnsR,CACV,EACDosR,WAAY,SAAS3mR,GACjBjJ,KAAK6vR,oBAAoB5mR,GACzBjJ,KAAK8vR,oBAAsB7mR,EAC3BjJ,KAAKyvR,cAAc,OAAQxmR,EAC9B,EACD4mR,oBAAqB,SAAS5mR,GACtB28I,GAAoB38I,EAAEi5D,eACtBliE,KAAK+vR,oBAAmB,IAG5B/vR,KAAK+vR,qBACL/vR,KAAKgwR,eAAe,SAAS3H,EAAUzhQ,GACnC,IAAIg7H,EAAU7wE,GAAE9nE,EAAEi5D,cAAcvqD,QAC5Bu4H,EAAUm4I,EAAS6F,eAAejlR,IAAMjJ,KAAK2sC,OAAO,oBAAsB3sC,KAAKiwR,WAAWruI,GAC9F5hJ,KAAKkwR,iBAAiBtpQ,GAAaspH,CACtC,IACJ,EACD+/I,WAAY,SAASj2N,GACjB,QAASA,EAAS8V,QAAQ9vE,KAAKgnJ,WAAWrmJ,MAC7C,EACDovR,mBAAoB,SAAS7xR,GACzBA,EAAQA,IAAS,EACjB8B,KAAKkwR,iBAAmB,CAAC,EACzBlwR,KAAKkwR,iBAAL,WAAoChyR,EACpC8B,KAAKkwR,iBAAL,SAAkChyR,CACrC,EACD8xR,cAAe,SAASzyR,GACpBA,EAAWA,EAAST,KAAKkD,OACzB6sD,EAAAA,EAAAA,IAAK7sD,KAAK+uR,YAAa,SAASnoQ,EAAWyhQ,GACvC9qR,EAAS8qR,EAAUzhQ,EACtB,GACJ,EACDupQ,YAAa,SAASlnR,GAClBjJ,KAAK8vR,oBAAsB7mR,EAC3BjJ,KAAKyvR,cAAc,SAAS7gO,KAAK5uD,KAAKowR,aACzC,EACDC,YAAa,WACT5I,GAAmBznR,IACtB,EACDswR,aAAc,WACN7I,KAAqBznR,OACrBynR,GAAmB,KAE1B,EACD8I,WAAY,SAAStnR,GACjB,GAAIjJ,KAAKyuR,YAGL,OAFAxlR,EAAE+3C,QAAS,OACXhhD,KAAKswR,eAGTtwR,KAAKqwR,cACLpnR,EAAEkzD,gBAAkBlzD,EAAEkzD,iBACtBn8D,KAAKwwR,gBAAgBvnR,EAAGA,EAAEg4E,OAC1BjhF,KAAK8vR,oBAAsB7mR,EAC3BjJ,KAAKyvR,cAAc,OAAQxmR,EAAEg4E,MAChC,EACDuvM,gBAAiB,SAASvnR,EAAGwnR,GACzBA,EAAS1iR,GAAK/N,KAAKkwR,iBAAL,WACdO,EAASziR,GAAKhO,KAAKkwR,iBAAL,SACd,IAAI7yF,EAAmBr9L,KAAK0wR,0BACxBrzF,GAAoBz3C,GAAoB38I,EAAEi5D,iBAC1CuuN,EAAS1iR,EAAIxE,KAAKoZ,MAAM8tQ,EAAS1iR,EAAIsvL,EAAmB,KAAO,IAC/DozF,EAASziR,EAAIzE,KAAKoZ,MAAM8tQ,EAASziR,EAAIqvL,EAAmB,KAAO,IAEtE,EACDqzF,wBAAyB,WACrB,IAAI5vO,EAAAA,EAAAA,MACA,OAAOC,EAAAA,EAAAA,MAAYs8I,gBAE1B,EACDszF,UAAW,SAAS1nR,GAKhB,OAJAjJ,KAAKswR,eACLtwR,KAAK4wR,oBAAoB3nR,EAAEi5D,eAAiBj5D,EAAEi5D,cAAcvqD,QAC5D3X,KAAKwwR,gBAAgBvnR,EAAGA,EAAEq6L,UAC1BtjM,KAAK8vR,oBAAsB7mR,EACpBjJ,KAAKyvR,cAAc,MAAOxmR,EAAEq6L,UAAU10I,KAAK5uD,KAAK6wR,WAC1D,EACDC,aAAc,SAAS7nR,GAGnB,OAFAjJ,KAAKswR,eACLtwR,KAAK8vR,oBAAsB7mR,EACpBjJ,KAAKyvR,cAAc,MAAO,CAC7B1hR,EAAG,EACHC,EAAG,GAEV,EACD+iR,WAAY,WACR/wR,KAAKswR,eACLtwR,KAAKyvR,cAAc,OACtB,EACDuB,aAAc,WACVhxR,KAAKixR,mBACLjxR,KAAK4tR,eACR,EACDiB,uBAAwB,WACpBtwN,EAAAA,EAAAA,IAAiBv+D,KAAKgnJ,UAAW,IAAI/2I,OAAO23Q,MACvC5nR,KAAK2sC,OAAO,aAAe3sC,KAAK2sC,OAAO,gBACxC4xB,EAAAA,EAAAA,GAAgBv+D,KAAKgnJ,UAAWkqI,GAAkB,UAAWtJ,IAAgC5nR,KAAKm4P,gBAAgBr7P,KAAKkD,MAE9H,EACDm4P,gBAAiB,SAASlvP,GAAG,WASzB,GARAqsB,aAAat1B,KAAKmxR,uBAClBnxR,KAAKmxR,sBAAwB57P,YAAW,WAChC+wH,GAAiBr9I,KAAOi/Q,IACxB,EAAK8H,eAAc,SAAA3H,GACfA,EAAS4E,gBACZ,GAER,IACIjtR,KAAKolQ,YAAYn2L,GAAGpS,EAAAA,EAAAA,iBAA4B78D,KAAKolQ,YAAYxrQ,IAAI,KAA1E,CAGA,IAAIqnJ,GAAU,EACd,OAAQqF,GAAiBr9I,IACrB,KAAKi/Q,GACDloR,KAAKoxR,cAAc,CACfpjR,EAAG,IAEP,MACJ,KAAKk6Q,GACDloR,KAAKoxR,cAAc,CACfpjR,GAAI,IAER,MACJ,KAAKk6Q,GACDloR,KAAKoxR,cAAc,CACfrjR,EAAG,IAEP,MACJ,KAAKm6Q,GACDloR,KAAKoxR,cAAc,CACfrjR,GAAI,IAER,MACJ,KAAKm6Q,GACDloR,KAAKqxR,cAAc,GACnB,MACJ,KAAKnJ,GACDloR,KAAKqxR,eAAe,GACpB,MACJ,KAAKnJ,GACDloR,KAAKsxR,gBACL,MACJ,KAAKpJ,GACDloR,KAAKuxR,eACL,MACJ,QACItwI,GAAU,EAEdA,IACAh4I,EAAE83D,kBACF93D,EAAEkzD,iBAxCL,CA0CJ,EACDi1N,cAAe,SAAStkJ,GACpB,IAAIuwD,EAAmBr9L,KAAK0wR,0BACxB1iH,EAnmBa,GAomBbqvB,IACArvB,EAAezkK,KAAKD,IAAI0kK,EAAeqvB,EAAmB,KAAO,KAErEr9L,KAAKwxR,SAAS,CACV/sP,KAAMqoG,EAAM9+H,GAAK,IAAMggK,EACvBppI,MAAOkoG,EAAM/+H,GAAK,IAAMigK,GAE/B,EACDqjH,cAAe,SAASI,GACpB,IAAI50R,EAAOmD,KAAK0xR,aAEZjB,EAAW,CAAC,EACZ77N,EAAS,UAFG50D,KAAK2xR,iBAAiB90R,GAED+tE,GAAWE,GAChD2lN,EAAS5zR,GAAQ40R,GAAQ78N,EAAO50D,KAAKolQ,aACrCplQ,KAAKwxR,SAASf,EACjB,EACDkB,iBAAkB,SAAS90R,GACvB,MAAO,SAAWA,EAAO,QAAU,QACtC,EACD2yR,oBAAqB,SAAS5oQ,GAC1B,OAAOA,IAAcu+P,GAAa,OAAS,KAC9C,EACDmM,cAAe,WACX,IACIb,EAAW,CAAC,EAChBA,EAFWzwR,KAAK0xR,cAEC,EACjB1xR,KAAK4gJ,WAAWvwE,SAASogN,EAC5B,EACDc,aAAc,WACV,IAAI10R,EAAOmD,KAAK0xR,aAEZjB,EAAW,CAAC,EACZ77N,EAAS,UAFG50D,KAAK2xR,iBAAiB90R,GAED+tE,GAAWE,GAChD2lN,EAAS5zR,GAAQ+3D,EAAO50D,KAAK28M,WAAa/nJ,EAAO50D,KAAKolQ,aACtDplQ,KAAK4gJ,WAAWvwE,SAASogN,EAC5B,EACDmB,cAAe,WACX5xR,KAAKowR,aAAepwR,KAAK6xR,qBAAqB,WAC9C7xR,KAAK6wR,WAAa7wR,KAAK6xR,qBAAqB,SAC5C7xR,KAAK8xR,cAAgB9xR,KAAK6xR,qBAAqB,aAC/C7xR,KAAK+xR,wBACR,EACDA,uBAAwB,WACpB/xR,KAAK4tR,cAAgB5tR,KAAK6xR,qBAAqB,YAC/C7xR,KAAKorR,cAAgBprR,KAAK6xR,qBAAqB,YAC/C7xR,KAAKyvR,cAAc,gBAAiB,CAChC3B,OAAQ9tR,KAAK4tR,cACbG,OAAQ/tR,KAAKorR,eAEpB,EACDyG,qBAAsB,SAASriP,GAAY,uBACnCwiP,EAAgBhyR,KAAK2/J,sBAAsBnwH,GAC/C,OAAO,WACHwiP,GAAcvsO,EAAAA,GAAAA,GAAO,EAAKwsO,oBAAqBn6Q,GAClD,CACJ,EACDm6Q,kBAAmB,WACf,IAAI,EAGAjyR,KAAK+uR,WAFOmD,EADhB,EACIz8I,WACU08I,EAFd,EAEIz8I,SAEAzoI,EAASjN,KAAKoyR,mBAKlB,OAJApyR,KAAKqyR,cAAgB,CACjB5tP,IAAK0tP,GAAallR,EAAOw3B,IACzBG,KAAMstP,GAAajlR,EAAO23B,MAEvB,CACH7jC,MAAOf,KAAK8vR,oBACZ9hH,aAAchuK,KAAKqyR,cACnBC,YAAaJ,GAAaA,EAAU9D,cACpCmE,aAAcL,GAAaA,EAAU/D,cACrCqE,WAAYL,GAAaA,EAAU/D,cACnCqE,cAAeN,GAAaA,EAAUhE,cAE7C,EACDiE,iBA7SyC,WA8SrC,MAAO,CACH3tP,KAAMzkC,KAAK2yB,WAAW8R,IACtBG,MAAO5kC,KAAK2yB,WAAWiS,KAE9B,EACD6qP,cAAe,SAASjxR,GACpB,IAAIZ,EAAO,GAAGmH,MAAMtG,KAAKqZ,WAAW/S,MAAM,GACtCk3I,GAAYl4I,EAAAA,EAAAA,IAAI/D,KAAK+uR,YAAY,SAAA1G,GAAQ,OAAIA,EAAS,IAAM7pR,EAAY,WAAWuZ,MAAMswQ,EAAUzqR,EAA1D,IAC7C,OAAOyxD,GAAAA,GAAAA,MAAW0hB,GAAGkrE,GAAW3+H,SACnC,EACDqV,SAAU,WACN,IAAIA,EAAW+vH,GAAO1iJ,KAAK28M,WAG3B,OAFAhqL,EAAS8R,KAAOzkC,KAAKolQ,YAAYh3D,YACjCz7K,EAASiS,MAAQ5kC,KAAKolQ,YAAYj3D,aAC3Bx7K,CACV,EACD+/P,gBAAiB,WACb1yR,KAAK8uR,uBACR,EACDA,sBAAuB,WACnBvwN,EAAAA,EAAAA,IAAiBv+D,KAAKgnJ,UAAW,IAAI/2I,OAAOy3Q,MACvC1nR,KAAK2sC,OAAO,aAAe3sC,KAAKimR,iBACjC1nN,EAAAA,EAAAA,GAAgBv+D,KAAKgnJ,UAAWkqI,GAAkB,aAAcxJ,IAA8B1nR,KAAKquR,oBAAoBvxR,KAAKkD,OAC5Hu+D,EAAAA,EAAAA,GAAgBv+D,KAAKgnJ,UAAWkqI,GAAkB,aAAcxJ,IAA8B1nR,KAAKsuR,oBAAoBxxR,KAAKkD,OAEnI,EACDimR,aAAc,WACV,MAAO,YAAcjmR,KAAK2sC,OAAO,gBACpC,EACD0hP,oBAAqB,SAASplR,IAC1BA,EAAIA,GAAK,CAAC,GACRi5D,cAAgBj5D,EAAEi5D,eAAiB,CAAC,EAClCulN,IAAoBx+Q,EAAEi5D,cAAcywN,gBAGpCnL,IACAA,GAAkB8G,sBAEtB9G,GAAoBxnR,KACpBA,KAAKyvR,cAAc,eACnBxmR,EAAEi5D,cAAcywN,eAAgB,EACnC,EACDrE,oBAAqB,SAASrlR,GACtBu+Q,KAAsBxnR,MAAQynR,KAAqBD,KAGvDxnR,KAAKyvR,cAAc,eACnBjI,GAAoB,KACpBxnR,KAAK4wR,oBAAoB3nR,GAAKA,EAAE63D,eACnC,EACD8vN,oBAAqB,SAASj5Q,GAC1B,GAAK3X,KAAKimR,gBAAoBtuQ,IAAU8vQ,GAAxC,CAGA,IACImL,EADU7hN,GAAEp5D,GACUm4D,QAAQ,IAAI7/D,OAAO43Q,GAA4B,6BACrEgL,EAAmBD,EAAYjyR,QAAUiyR,EAAYt4R,KApvBvC,wBAqvBdktR,IAAqBA,KAAsBqL,GAC3CrL,GAAkB8G,sBAElBuE,GACAA,EAAiBxE,qBARpB,CAUJ,EACDriP,OAAQ,WAAW,WACXxoC,EAASxD,KAAKyvR,cAAc,UAAU7gO,KAAK5uD,KAAK8xR,eACpD,OAAOziO,EAAAA,GAAAA,IAAK7rD,GAAQ03C,EAAAA,GAAAA,cAAY,WAC5B,IAAI43O,EAAoB,EAAKC,qBAO7B,OANAxjO,EAAAA,GAAAA,cAAY,WACR,IAAIyjO,EAAiBF,EAAkBp9I,SAAW,QAAU,GAC5Ds9I,EAAiBF,EAAkBr9I,WAAa,QAAUu9I,EAC1DA,EAAiBF,EAAkBp9I,UAAYo9I,EAAkBr9I,WAAa,OAASu9I,EACvF,EAAK5tB,YAAY9/N,IAAI,cAAe0tP,EACvC,KACM3jO,EAAAA,GAAAA,MAAO/xC,SACjB,IACJ,EACDy1Q,mBAAoB,WAChB,IAAI3D,EAAgBpvR,KAAK2sC,OAAO,iBAC5BsmP,EAAmBjzR,KAAK+uR,WAAL,SACnBmE,EAAqBlzR,KAAK+uR,WAAL,WACzB,MAAO,CACHr5I,SAAUu9I,IAAqBA,EAAiB7I,WAAa,GAAKgF,GAClE35I,WAAYy9I,IAAuBA,EAAmB9I,WAAa,GAAKgF,GAE/E,EACD/B,cAAe,WACXrtR,KAAK+uR,WAAL,YAA+B/uR,KAAK+uR,WAAL,WAA4B1B,eAC9D,EACD8F,2BAA4B,WACxB,OAAOnzR,KAAK2sC,OAAO,eAAiB3sC,KAAK2sC,OAAO,eAAiBm7O,EACpE,EACDsL,kBAAmB,SAASC,GASxB,GARIA,IACArzR,KAAKszR,WAAa,CACdC,YAAa,EACbz2N,YAAa98D,KAAKolQ,YAAYxrQ,IAAI,GAAGkjE,YACrC02N,iBAAkBxzR,KAAKyzR,+BAG/BzzR,KAAKqtR,gBACDrtR,KAAKmzR,6BAA8B,CACnC,IAAIhlF,EAAanuM,KAAKutR,gBAAgB3oP,KAAO5kC,KAAKszR,WAAWC,YACzDplF,GAAc,IACdA,EAAa,EACbnuM,KAAKszR,WAAWC,YAAcvzR,KAAKutR,gBAAgB3oP,MAEnD5kC,KAAKoyR,mBAAmBxtP,OAASupK,IACjCnuM,KAAKszR,WAAWI,cAAe,EAC/B1zR,KAAK4gJ,WAAWvwE,SAAS,CACrBzrC,KAAMupK,IAEVnuM,KAAKszR,WAAWI,cAAe,EAEtC,CACJ,EACDzC,iBAAkB,WACd,GAAIjxR,KAAKmzR,+BAAiCnzR,KAAKszR,WAAWI,aAAc,CACpE,IAAI,EAGA1zR,KAAKolQ,YAAYxrQ,IAAI,GAFRkjE,EADjB,EACIA,YACYqxI,EAFhB,EAEIA,WAEAqlF,EAAmBxzR,KAAKyzR,6BACxBzzR,KAAKszR,WAAWE,mBAAqBA,GAAoBxzR,KAAKszR,WAAWx2N,cAAgBA,IACzF98D,KAAKszR,WAAWC,YAAcvzR,KAAKutR,gBAAgB3oP,KAAOupK,GAE9DnuM,KAAKszR,WAAWx2N,YAAcA,EAC9B98D,KAAKszR,WAAWE,iBAAmBA,CACtC,CACJ,EACDC,2BAA4B,WACxB,OAAO3yO,EAAAA,EAAAA,OAAcC,EAAAA,EAAAA,MAAYs8I,iBAAmB,CACvD,EACDm0F,SAAU,SAASf,GACf,IAAIwC,EAAmBjzR,KAAK+uR,WAAL,SACnBmE,EAAqBlzR,KAAK+uR,WAAL,WACrBkE,IACAxC,EAAShsP,IAAMwuP,EAAiB/I,eAAeuG,EAAShsP,IAAMwuP,EAAiB9J,WAAa8J,EAAiB9J,WAE7G+J,IACAzC,EAAS7rP,KAAOsuP,EAAmBhJ,eAAeuG,EAAS7rP,KAAOsuP,EAAmB/J,WAAa+J,EAAmB/J,WAEzHnpR,KAAK+vR,oBAAmB,GACxB/vR,KAAKowR,eACLpwR,KAAKyvR,cAAc,WAAY,CAC3B1hR,EAAG0iR,EAAS7rP,KACZ52B,EAAGyiR,EAAShsP,MAEhBzkC,KAAK6wR,aACL7wR,KAAKixR,kBACR,EACD1vI,SAAU,SAASt4I,GACf,QAAI28I,GAAoB38I,KAAM49I,GAAoB59I,OAG9CjJ,KAAK2sC,OAAO,gBAGZ3sC,KAAK2sC,OAAO,mBAGTi5G,GAAoB38I,GAAKjJ,KAAK2zR,eAAe1qR,GAAKjJ,KAAK+pJ,cAAc9gJ,KAC/E,EACD0qR,eAAgB,SAAS1qR,GAAG,WACpBo/Q,EAAWroR,KAAK+uR,WAAW/uR,KAAK4zR,gBAAgB3qR,IAChD4qR,EAAaxL,EAAS8F,cACtB2F,EAAazL,EAAS+F,cACtB2F,GAA+BF,IAAeC,EAC9CE,GAAqBH,IAAeC,EACpCG,EAAgBJ,GAAc5qR,EAAEg4E,MAAQ,EACxCizM,EAAgBJ,GAAc7qR,EAAEg4E,MAAQ,EACxCkzM,EAAYJ,IAAgCC,GAAqBC,GAAiBC,GAQtF,OAPAC,EAAYA,QAAa,IAAWn0R,KAAKo0R,uBAErC9+P,aAAat1B,KAAKo0R,qBAClBp0R,KAAKo0R,oBAAsB7+P,YAAW,WAClC,EAAK6+P,yBAAsB,CAC9B,GAh2BgB,MAk2BdD,CACV,EACDpqI,cAAe,SAAS9gJ,GACpB,SAAKjJ,KAAK2sC,OAAO,qBAAuBokC,GAAE9nE,EAAE0O,QAAQm4D,QAAQ,IAAI7/D,OA72BvC,4BA62B2EtP,SAG7FX,KAAK2uR,mBACf,EACDjmI,aAAc,SAASz/I,GACnB,OAAO28I,GAAoB38I,GAAKjJ,KAAK4zR,gBAAgB3qR,GAAKjJ,KAAK2uR,mBAClE,EACD+C,WAAY,WACR,OAAO1xR,KAAK4zR,oBAAsBzO,GAAa,OAAS,KAC3D,EACDyO,gBAAiB,SAAS3qR,GACtB,OAAQjJ,KAAK2sC,OAAO,cAChB,KAAKw4O,GACD,OAAOA,GACX,KAAK2C,GACD,OAAOA,GACX,QACI,OAAO7+Q,GAAKA,EAAEipJ,SAAWizH,GAAa2C,GAEjD,EACDv7O,QAAS,WACLvsC,KAAKswR,eACD9I,KAAsBxnR,OACtBwnR,GAAoB,MAExBxnR,KAAKyvR,cAAc,WACnBzvR,KAAKitK,uBACLjtK,KAAKgnJ,UAAU34E,YAAYw5M,IAC3B7nR,KAAK8vR,oBAAsB,KAC3Bx6P,aAAat1B,KAAKo0R,qBAClB9+P,aAAat1B,KAAKmxR,sBACrB,EACDlkH,qBAAsB,WAClB1uG,EAAAA,EAAAA,IAAiBv+D,KAAKgnJ,UAAW,IAAI/2I,OAAOy3Q,KAC5CnpN,EAAAA,EAAAA,IAAiBv+D,KAAKolQ,YAAa,IAAIn1P,OAAO23Q,IACjD,ICx7BDyM,GAA0B,uBAG1BvM,GAAW,WACX3C,GAAa,aAEbmP,GAAiBnoO,GAAAA,EAAAA,QAAc,CAC/BpJ,KAAM,SAASyrO,GACXxuR,KAAKujG,MAAMirL,EACd,EACDjrL,MAAO,SAASirL,GACZxuR,KAAK4gJ,WAAa4tI,EAClBxuR,KAAKgnJ,UAAYwnI,EAAWx0N,WAC5Bh6D,KAAKolQ,YAAcr0L,GAAEy9M,EAAWjnR,aAChCvH,KAAK28M,UAAY6xE,EAAWl0F,WAC5Bt6L,KAAK8gQ,WAAa0tB,EAAW7hP,OAAO,aACpC3sC,KAAKu0R,uBAAyB/F,EAAW7hP,OAAO,yBAChD3sC,KAAK2sC,OAAS6hP,EAAW7hP,OAAO7vC,KAAK0xR,GACrCxuR,KAAK2/J,sBAAwB6uH,EAAW7uH,sBAAsB7iK,KAAK0xR,GACnExuR,KAAKyuR,UAAYD,EAAWC,UAAU3xR,KAAK0xR,GAC3CxuR,KAAK0uR,aAAeF,EAAWE,aAAa5xR,KAAK0xR,GACjDxuR,KAAK2uR,kBAAoBH,EAAWG,kBAAkB7xR,KAAK0xR,GAC3DxuR,KAAKutR,cAAgBiB,EAAWjB,cAAczwR,KAAK0xR,GACnDxuR,KAAKw0R,qBAAuBhG,EAAWgG,qBAAqB13R,KAAK0xR,EACpE,EACDlgP,OAAQ,WACJ,IACIgmC,EADS0D,GAAAA,OACWv+E,SACxBuG,KAAKgnJ,UAAU54E,SAASimN,IAAyBjmN,SAASimN,wBAAgC//M,GAAYrG,YA1B3E,mCA0BsHjuE,KAAKy0R,uBAClJz0R,KAAKy0R,uBAAyBz0R,KAAKu0R,wBACnCv0R,KAAK00R,mBAEZ,EACDtB,kBAAmB,SAASuB,GACpBA,GAAiB30R,KAAK2sC,OAAO,eACzB3sC,KAAKy0R,uBAAyBz0R,KAAKu0R,wBACnCv0R,KAAK40R,iBAGhB,EACDF,kBAAmB,WACf10R,KAAK60R,YAAc,CAAC,EACpB70R,KAAK80R,sBAAwB,EAC7B90R,KAAKgnJ,UAAU54E,SA1Cc,qCA2C7BpuE,KAAK+0R,iBAAiBjN,IACtB9nR,KAAK+0R,iBAAiB5P,GACzB,EACD4P,iBAAkB,SAASnuQ,GAClB5mB,KAAK0uR,aAAa9nQ,KAGvB5mB,KAAK60R,YAAYjuQ,GAAa,IAAI0+P,GAAUv0M,GAAE,SAASpC,SAAS3uE,KAAKgnJ,WAAY,CAC7EpgI,UAAWA,EACX8+P,WAAY1lR,KAAK4gJ,WAAWj0G,OAAO,mBAE1C,EACDijP,WAAY9tQ,GAAAA,KACZquQ,YAAaruQ,GAAAA,KACbyuQ,WAAY,SAAStnR,GACbjJ,KAAKyuR,YACLxlR,EAAE+3C,QAAS,EAGXhhD,KAAK2uR,sBACL1lR,EAAEi5D,cAAcghI,kBAAmB,EAE1C,EACDytF,UAAW7uQ,GAAAA,KACXgvQ,aAAchvQ,GAAAA,KACdivQ,WAAYjvQ,GAAAA,KACZkzQ,eAAgB,SAASz3R,GACrBA,EAAWA,EAAST,KAAKkD,OACzB6sD,EAAAA,EAAAA,IAAK7sD,KAAK60R,aAAe,CAAC,GAAI,SAASjuQ,EAAWquQ,GAC9C13R,EAAS03R,EAAWruQ,EACvB,GACJ,EACDgrQ,cAAe,WACX5xR,KAAK4tR,cAAgB5tR,KAAK2/J,sBAAsB,YAChD3/J,KAAK8xR,cAAgB9xR,KAAK2/J,sBAAsB,YACnD,EACDsyH,kBAAmB,WACf,IAAI,EAGAjyR,KAAK2yB,WAFCiS,EADV,EACIA,KACKH,EAFT,EAEIA,IAEJ,MAAO,CACH1jC,MAAOf,KAAK8vR,oBACZ9hH,aAAchuK,KAAKoyR,mBACnBE,YAAatyR,KAAKw0R,uBAAyBx0R,KAAKk1R,iBAAiBtwP,GAAQ5kC,KAAKm1R,eAAevwP,GAC7F2tP,aAAcvyR,KAAKw0R,uBAAyBx0R,KAAKm1R,gBAAgB5rR,KAAKD,IAAIs7B,IAAS5kC,KAAKk1R,gBAAgBtwP,GACxG4tP,WAAYxyR,KAAK0uR,aAAa5G,IAAYv+Q,KAAKoZ,MAAM8hB,IAAQ,OAAI,EACjEguP,cAAezyR,KAAK0uR,aAAa5G,IAAYv+Q,KAAKoZ,MAAMpZ,KAAKD,IAAIm7B,GAAOzkC,KAAKutR,gBAAgB9oP,MAAQ,OAAI,EAEhH,EACD2tP,iBAAkB,WACd,IAAI,EAGApyR,KAAK2yB,WAFA8R,EADT,EACIA,IACMG,EAFV,EAEIA,KAEJ,MAAO,CACHH,KAAMA,EACNG,KAAM5kC,KAAKo1R,sBAAsBxwP,GAExC,EACDwwP,qBAlG+B,SAkGVjnF,GACjB,OAAInuM,KAAKw0R,uBACEx0R,KAAKutR,gBAAgB3oP,KAAOupK,EAEhCA,CACV,EACDgnF,eAAgB,SAASvwP,GACrB,OAAO5kC,KAAK0uR,aAAavJ,IAAc57Q,KAAKoZ,MAAMiiB,IAAS,OAAI,CAClE,EACDswP,gBAAiB,SAAStwP,GACtB,OAAO5kC,KAAK0uR,aAAavJ,IAAc57Q,KAAKoZ,MAAMpZ,KAAKD,IAAIs7B,GAAQ5kC,KAAKutR,gBAAgB3oP,OAAS,OAAI,CACxG,EACD6vP,oBAAqB,WACjB,IACmBY,EACfr1R,KAAK2sC,SADL0oP,cAEJ,MAAO,UAAYA,IAAiB,IAAUA,CACjD,EACDrE,aAAc,SAAS/nR,GACnBjJ,KAAK8vR,oBAAsB7mR,EAC3BjJ,KAAK40R,kBACL50R,KAAK4tR,cAAc5tR,KAAKiyR,oBAC3B,EACD2C,gBAAiB,WACb,IAAI,EAGA50R,KAAKoyR,mBAFA3tP,EADT,EACIA,IACMG,EAFV,EAEIA,KAEJ5kC,KAAKg1R,gBAAgB,SAASC,GAC1BA,EAAUpO,OAAO,CACbpiP,KAAMA,EACNG,MAAOA,IAEXqwP,EAAUtoP,OAAO,WAAW,EAC/B,IACD3sC,KAAKs1R,iBACR,EACDA,gBAAiB,WACbhgQ,aAAat1B,KAAK80R,uBAClB90R,KAAK80R,sBAAwBv/P,WAAW,WACpCv1B,KAAKg1R,gBAAgB,SAASC,GAC1BA,EAAUtoP,OAAO,WAAW,EAC/B,GACJ,EAAC7vC,KAAKkD,MA9Ic,IA+IxB,EACD2yB,SAAU,WACN,MAAO,CACHiS,MAAO5kC,KAAKolQ,YAAYj3D,aACxB1pK,KAAMzkC,KAAKolQ,YAAYh3D,YAE9B,EACDskF,gBAAiB5wQ,GAAAA,KACjBkqB,OAAQ,WACJhsC,KAAK+lR,UACL/lR,KAAK8xR,cAAc9xR,KAAKiyR,oBAC3B,EACDlM,QAAS,WACL/lR,KAAKowK,oBACLpwK,KAAKu1R,mBACR,EACDnlH,kBAAmB,WACfpwK,KAAK0tR,eAAiB,CAClBlhQ,OAAQs+C,GAAU9qE,KAAKolQ,aACvBz0O,MAAOi6C,GAAS5qE,KAAKolQ,cAEzBplQ,KAAKw1R,sBAAwB,CACzBhpQ,OAAQs+C,GAAU9qE,KAAK4gJ,WAAW05C,YAClC3pK,MAAOi6C,GAAS5qE,KAAK4gJ,WAAW05C,aAEpCt6L,KAAKytR,aAAe,CAChBjhQ,OAAQs+C,GAAU9qE,KAAK28M,WACvBhsL,MAAOi6C,GAAS5qE,KAAK28M,WAE5B,EACD44E,kBAAmB,WACfv1R,KAAKg1R,gBAAgB,SAASC,EAAWruQ,GACrC,IAAImhD,EAAYnhD,IAAckhQ,GAAW,SAAW,QACpDmN,EAAUtoP,OAAO,CACb64O,cAAexlR,KAAK0tR,eAAe3lN,GACnC09M,YAAazlR,KAAKw1R,sBAAsBztN,KAE5CktN,EAAUjpP,QACb,GACJ,EACD+mP,mBAAoB,WAChB,MAAO,CACHr9I,SAAU11I,KAAK0uR,aAAa5G,KAAa9nR,KAAKytR,aAAajhQ,OAASxsB,KAAK0tR,eAAelhQ,OACxFipH,WAAYz1I,KAAK0uR,aAAavJ,KAAenlR,KAAKytR,aAAa98P,MAAQ3wB,KAAK0tR,eAAe/8P,MAElG,EACD4b,QAAS,WACL,IAAIp0B,EAAYnY,KAAKgnJ,UAAUptJ,IAAI,GAAGue,UAClCs9Q,EAAyB,IAAI79P,OAAOy8P,2BAAkC,KACtEoB,EAAuBr/Q,KAAK+B,IAC5BnY,KAAKgnJ,UAAU34E,YAAYl2D,EAAUlJ,MAAMwmR,GAAwBhpR,KAAK,MAE5E8xD,EAAAA,EAAAA,IAAiBv+D,KAAKgnJ,UAAW,uBACjCzoF,EAAAA,EAAAA,IAAiBv+D,KAAKolQ,YAAa,uBACnCplQ,KAAK01R,oBACLpgQ,aAAat1B,KAAK80R,sBACrB,EACDY,kBAAmB,WACf11R,KAAKg1R,gBAAgB,SAASC,GAC1BA,EAAUj7N,WAAWt8D,QACxB,GACJ,EACD8zR,SAAU,SAASf,GACf,IAAI99P,EAAW3yB,KAAK2yB,WACpB3yB,KAAKolQ,YAAYh3D,UAAU7kM,KAAKoZ,OAAOgQ,EAAS8R,IAAMgsP,EAAShsP,MAC/DzkC,KAAKolQ,YAAYj3D,WAAW5kM,KAAKoZ,OAAOgQ,EAASiS,KAAO6rP,EAAS7rP,MACpE,EACD28G,SAAU,SAASt4I,GACf,OAAIjJ,KAAK2sC,OAAO,gBAGZi5G,GAAoB38I,KAAMjJ,KAAK21R,0BAA0B1sR,OAGpDjJ,KAAK2uR,oBACjB,EACDgH,0BA1N+B,SA0NL1sR,GACtB,IAAI1B,EAAYvH,KAAKolQ,YAAYxrQ,IAAI,GASrC,OAPIqP,EAAEg4E,MAAQ,EACDh4E,EAAEipJ,UAAY3qJ,EAAU4mM,YAAc5mM,EAAU6mM,UAClDnlM,EAAEipJ,SACA3qJ,EAAU4mM,YAAcnuM,KAAKutR,gBAAgB3oP,KAE7Cr9B,EAAU6mM,WAAapuM,KAAKutR,gBAAgB9oP,GAG5D,EACDikH,aAAc,WACV,OAAO1oJ,KAAK2uR,mBACf,IAEL,MC9PWiH,GAAyB,WAChC,MAAO,CAAC,CACJl/M,OAAQ,WACJ,OAAQ80E,EACX,EACDpuJ,QAAS,CACLy4R,WAAW,IAEhB,CACCn/M,OAAQ,SAAS6+J,GACb,OAAQv9J,GAAAA,eAAyB,YAAcA,GAAAA,OAAe1D,YAAc,YAAcihK,EAAQ97O,QACrG,EACD2D,QAAS,CACLgyR,eAAe,EACfF,eAAe,EACf4G,gBAAiB7wI,GACjBowI,cAAe,YAG1B,ECxBM,IACIU,GAAqB,WAErBC,GAAiB,OC6C5B,IAAIC,GAAa,eAEbC,GAAmB,gBAInBC,GAA2B,wBAC3BrO,GAAW,WACX3C,GAAa,aACbiR,GAAO,OACPC,GAAahvH,GAAAA,QAAqB,CAClCzJ,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B38B,UAAU,EACV8wQ,SAAU,KACV1vQ,UAAWkhQ,GACXuN,cAAe,WACfQ,WAAW,EACXzG,eAAe,EACf0G,iBAAiB,EACjB5G,eAAe,EACfjjB,UAAW,KACXF,QAAS,KACTI,MAAO,KACPoqB,SAAU,KACVC,uBAAuB,EACvBC,aAAa,EACbpH,gBAAgB,EAChBqH,gBAAgB,GAEvB,EACD54H,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO2lR,KAA0B,CAAC,CACrDl/M,OAAQ,WACJ,OAAO80E,IAAmB,YAAcxzE,GAAAA,OAAev+E,WAAaqkB,GAAQquI,OAC/E,EACD/uJ,QAAS,CACLo5R,uBAAuB,KAGlC,EACDl3H,aAAc,SAASliK,GACnB4C,KAAKmiD,SAAS/kD,GACR,0BAA2BA,GAC7B4C,KAAK22R,2BAEZ,EACDA,0BAA2B,WAClB32R,KAAK4gK,cAAc,0BACpB5gK,KAAK2sC,OAAO,yBAA0B3sC,KAAK2sC,OAAO,aAEzD,EACD42D,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK42R,wBACL52R,KAAK2hM,SAAU,CAClB,EACDh6B,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAKgsC,SACLhsC,KAAK62R,qBACL72R,KAAK82R,oBAAsB92R,KAAKqwE,SAASrwE,KAAK82R,2BACvC92R,KAAK82R,oBAEZ92R,KAAK82R,mBAAqB92R,KAAKguK,cAEtC,EACD4oH,sBAAuB,WACnB,IAAI58N,EAAWh6D,KAAKg6D,WAAWoU,SAAS8nN,IACpC17M,EAAax6E,KAAKolQ,YAAcr0L,GAAE,SAAS3C,SAjEtB,2BAkErBiuI,EAAWr8M,KAAK48M,UAAY7rI,GAAE,SAAS3C,SAjEpB,0BAkERpuE,KAAK28M,UAAY5rI,GAAE,SAAS3C,SAAS+nN,KAC3CxwR,OAAOq0D,EAAS+U,YAAYJ,SAAS6L,GAC9CA,EAAW7L,SAAS0tI,GACpBA,EAAS1tI,SAAS3U,EACrB,EACD4tG,kBAAmB,WACf5nK,KAAKgsC,SACLhsC,KAAK62R,oBACR,EACDvuH,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAK8lR,kBACR,EACDhrM,QAAS,WACL96E,KAAK+2R,kBACL/2R,KAAK6sK,uBACL7sK,KAAKg3R,uBACLh3R,KAAKi3R,iBACLj3R,KAAKgsC,SACLhsC,KAAKmiD,WACLniD,KAAK62R,oBAAmB,EAC3B,EACDA,mBAAoB,SAASxD,GACzBrzR,KAAKk3R,UAAU9D,kBAAkBC,EACpC,EACD9F,cAAe,WACX,IAAI,EAKAx8M,GAAE/wE,KAAKuH,aAAa3N,IAAI,GAC5B,MAAO,CACHgrC,KAPJ,EACIuyP,YADJ,EAEIr6N,YAMAr4B,IARJ,EAGI2yP,aAHJ,EAIIz+H,aAMP,EACDkU,qBAAsB,WAClB,IAAI1oG,EAAWnkE,KAAKk3R,UAChBG,EAAgB,CAChB3uI,aAAcvkF,EAASukF,aAAa5rJ,KAAKqnE,GACzCo9E,SAAUvhJ,KAAK6yK,UAAU/1K,KAAKkD,MAC9BJ,SAAUI,KAAK2sC,OAAO,aACtBo2J,aAAc/iM,KAAKolQ,aAEvB7mM,EAAAA,EAAAA,IAAiBv+D,KAAK48M,UAAW,IAAMq5E,IACvC13N,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp5D,GAAakgD,GAAmBuyF,IAAaoB,EAAer3R,KAAKwrR,aAAa1uR,KAAKkD,OACnHu+D,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp5D,GAAakgD,GAAoBuyF,IAAa9xN,EAASgsN,YAAYrzR,KAAKqnE,IACxG5F,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp5D,GAAakgD,GAAmBuyF,IAAa9xN,EAASosN,WAAWzzR,KAAKqnE,IACtG5F,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp5D,GAAakgD,GAAkBuyF,IAAa9xN,EAASwsN,UAAU7zR,KAAKqnE,IACpG5F,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp5D,GAAakgD,GAAqBuyF,IAAa9xN,EAAS2sN,aAAah0R,KAAKqnE,IAC1G5F,EAAAA,EAAAA,GAAgBv+D,KAAK48M,UAAWp5D,GAAakgD,GAAmBuyF,IAAa9xN,EAAS4sN,WAAWj0R,KAAKqnE,IACtG5F,EAAAA,EAAAA,IAAiBv+D,KAAKolQ,YAAa,IAAM6wB,IACzC13N,EAAAA,EAAAA,GAAgBv+D,KAAKolQ,YAAa5hH,GAAa,SAAUyyI,IAAa9xN,EAAS6sN,aAAal0R,KAAKqnE,GACpG,EACD0uG,UAAW,SAAS5pK,GAChB,OAAIjJ,KAAKyuR,cAGTzuR,KAAKs3R,gBACEt3R,KAAKu3R,eAAetuR,GAC9B,EACDsuR,eA3HkC,SA2HnBtuR,GACX,OAAOjJ,KAAKk3R,UAAU31I,SAASt4I,EAClC,EACDsnR,WA9HkC,SA8HvBtnR,GACPjJ,KAAKk3R,UAAU3G,WAAWtnR,EAC7B,EACD8mR,mBAjIkC,SAiIf7xR,GACf8B,KAAKk3R,UAAUnH,mBAAmB7xR,EACrC,EACDstR,aAAc,WACV,IAAIrnN,EAAWnkE,KAAKk3R,UACpB/yN,EAASyrN,WAAW73Q,MAAMosD,EAAUrsD,UACvC,EACDk/Q,qBAAsB,WAClBh3R,KAAKg6D,WAAWiU,YAhJQ,yBAgJ+BjuE,KAAK2sC,OAAO,aAC/D3sC,KAAK2sC,OAAO,YACZ3sC,KAAKw3R,QAELx3R,KAAKy3R,SAEZ,EACD3R,iBAAkB,WACd9lR,KAAKg6D,WAAWqU,YAAY,4BAA+BA,YAAY,0BAA6BA,YAAY,sBAAyBD,SAAS,iBAAmBpuE,KAAK2sC,OAAO,aACpL,EACDoqP,gBAAiB,WACb/2R,KAAK03R,kBACL13R,KAAKk3R,UAAU5oP,SACftuC,KAAKg6D,WAAW1/D,KA/JE,uBA+JwB0F,KAAKk3R,UAClD,EACDQ,gBAAiB,WACb13R,KAAKk3R,UAAYl3R,KAAK2sC,OAAO,aAAe,IAAI2nP,GAAet0R,MAAQ,IAAIuuR,GAAkBvuR,KAChG,EACDi3R,eAAgB,WACZj3R,KAAKk3R,WAAal3R,KAAKk3R,UAAUtF,eACpC,EACDtoH,OAAQ,WACJtpK,KAAKk3R,WAAal3R,KAAKk3R,UAAU3qP,SACpC,EACDuzH,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,UACL,IAAK,QACL,IAAK,YACL,IAAK,WACL,IAAK,WACD4G,KAAKi3R,iBACL,MACJ,IAAK,YACDj3R,KAAK23R,0BACL33R,KAAKypK,cACL,MACJ,IAAK,YACDzpK,KAAK22R,4BACL32R,KAAKypK,cACL,MACJ,IAAK,iBACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,gBACL,IAAK,wBACDzpK,KAAKypK,cACL,MACJ,IAAK,WACDzpK,KAAKg3R,uBACLh3R,KAAKk3R,WAAal3R,KAAKk3R,UAAUxE,kBACjC,MACJ,IAAK,iBACL,IAAK,kBACD,MACJ,IAAK,QACD1yR,KAAKmiD,SAASvkD,GACdoC,KAAK62R,qBACL,MACJ,QACI72R,KAAKmiD,SAASvkD,GAEzB,EACD+5R,wBAAyB,WACrB,IAAIC,EAAe53R,KAAK63R,mBACxB,GAAKD,IAAiB92O,EAAAA,EAAAA,MAAtB,CAGA,IAAIktH,EAAehuK,KAAKguK,eACxBA,EAAa4pH,GAAgB,EAC7B53R,KAAKqwE,SAAS29F,EAHb,CAIJ,EACD6pH,iBAAkB,WACd,IAAIjxQ,EAAY5mB,KAAK2sC,OAAO,aAC5B,OAAI/lB,IAAckhQ,GACP,OAEPlhQ,IAAcu+P,GACP,WADX,CAGH,EACDgE,UAAW,WACP,OAAOnpR,KAAKk3R,UAAUvkQ,UACzB,EACDmlQ,mBAAoB,SAASnlQ,GACzB,IAAIyU,EAAAA,EAAAA,IAAczU,GAAW,CACzB,IAAIiS,GAAOwpB,EAAAA,GAAAA,eAAcz7B,EAASiS,KAAMjS,EAAS5kB,GAC7C02B,GAAM2pB,EAAAA,GAAAA,eAAcz7B,EAAS8R,IAAK9R,EAAS3kB,GAC/C,MAAO,CACH42B,MAAMypB,EAAAA,EAAAA,IAAUzpB,IAASA,OAAO,EAChCH,KAAK4pB,EAAAA,EAAAA,IAAU5pB,IAAQA,OAAM,EAEpC,CACG,IAAI7d,EAAY5mB,KAAK2sC,OAAO,aAC5B,MAAO,CACH/H,KAAMhe,IAAckhQ,IAAYn1P,OAAW,EAC3C8R,IAAK7d,IAAcu+P,IAAcxyP,OAAW,EAGvD,EACD87P,UAAW,WACP,OAAOzuR,KAAK2hM,OACf,EACD61F,MAAO,WACHx3R,KAAK2hM,SAAU,CAClB,EACD81F,QAAS,WACAz3R,KAAK2sC,OAAO,cACb3sC,KAAK2hM,SAAU,EAEtB,EACD+sF,aAAc,SAAS9nQ,GACnB,IAAInN,EAAUzZ,KAAK2sC,OAAO,aAC1B,OAAI/lB,IAAckhQ,GACPruQ,IAAY0rQ,GAEnBv+P,IAAcu+P,GACP1rQ,IAAYquQ,GAEhBruQ,IAAYmN,CACtB,EACDmxQ,wBAAyB,WACrB,IAAIjF,EAAoB9yR,KAAKk3R,UAAUnE,qBACnC/yR,KAAK0uR,aAAa0H,KAAStD,EAAkBp9I,UAAYo9I,EAAkBr9I,WAC3Ez1I,KAAKg4R,uBAAyB5B,GACvBp2R,KAAK0uR,aAAavJ,KAAe2N,EAAkBr9I,WAC1Dz1I,KAAKg4R,uBAAyB7S,GACvBnlR,KAAK0uR,aAAa5G,KAAagL,EAAkBp9I,SACxD11I,KAAKg4R,uBAAyBlQ,GAE9B9nR,KAAKg4R,uBAAyB,IAErC,EACDrJ,kBAAmB,WACf,OAAO3uR,KAAKg4R,sBACf,EACD19F,SAAU,WACN,OAAOt6L,KAAK28M,SACf,EACD9rK,QAAS,WACL,OAAOgxG,GAAiB7hJ,KAAK28M,UAChC,EACDp1M,UAAW,WACP,OAAOs6I,GAAiB7hJ,KAAKolQ,YAChC,EACDp3F,aAAc,WACV,OAAOhuK,KAAKk3R,UAAU9E,kBACzB,EACDoC,qBAAsB,WAClB,IAAI,EAGAx0R,KAAK2sC,SAFMkpP,EADf,EACIA,UACY71O,EAFhB,EAEIA,WAEJ,OAAO61O,GAAa71O,CACvB,EACDouJ,UAAW,WACP,OAAOpuM,KAAKguK,eAAevpI,GAC9B,EACD0pK,WAAY,WACR,OAAOnuM,KAAKguK,eAAeppI,IAC9B,EACD+zH,aAAc,WACV,OAAO7tF,GAAU9qE,KAAKolQ,YACzB,EACDgyB,aAAc,WACV,OAAOlsN,GAAelrE,KAAKs6L,WAC9B,EACDx9H,YAAa,WACT,OAAO8N,GAAS5qE,KAAKolQ,YACxB,EACD+xB,YAAa,WACT,OAAOnsN,GAAchrE,KAAKs6L,WAC7B,EACDtuJ,OAAQ,WACJ,GAAKhsC,KAAKk3R,UAGV,OAAO7nO,EAAAA,GAAAA,IAAKrvD,KAAKk3R,UAAUlrP,UAAU4iB,KAAK,WACtC5uD,KAAK+3R,yBACR,EAACj7R,KAAKkD,MACV,EACDwxR,SAAU,SAASf,KACfA,EAAWzwR,KAAK83R,mBAAmBrH,IACrBhsP,KAAQgsP,EAAS7rP,QAG/B5kC,KAAKs3R,gBACLt3R,KAAKk3R,UAAU1F,SAASf,GAC3B,EACDpgN,SAAU,SAASy+K,GACfA,EAAiB9uP,KAAK83R,mBAAmBhpC,GACzC9uP,KAAKs3R,gBACL,IAAI3kQ,EAAW3yB,KAAKmpR,YACfnpR,KAAK2sC,OAAO,eACbmiN,EAAiB9uP,KAAKk3R,UAAU3H,iBAAiBzgC,GACjDn8N,EAAW3yB,KAAKk3R,UAAU3H,iBAAiB58P,IAE3C3yB,KAAKw0R,yBACL7hQ,EAASiS,KAAOjS,EAASiS,KAAO5kC,KAAKutR,gBAAgB3oP,MAEzD,IAAI6rP,EAAWzwR,KAAK83R,mBAAmB,CACnClzP,KAAMjS,EAASiS,MAAOwpB,EAAAA,GAAAA,eAAc0gM,EAAelqN,KAAMjS,EAASiS,MAClEH,IAAK9R,EAAS8R,KAAM2pB,EAAAA,GAAAA,eAAc0gM,EAAerqN,IAAK9R,EAAS8R,QAE9DgsP,EAAShsP,KAAQgsP,EAAS7rP,OAG/B5kC,KAAKk3R,UAAU1F,SAASf,EAC3B,EACDwH,gBAAiB,SAASzrR,EAASS,GAC/B,IAAI+sD,EAAW+W,GAAEvkE,GACb0rR,EAAuBl4R,KAAKs6L,WAAWt+L,KAAKwQ,GAAS7L,OACrDw3R,EAAyBn+N,EAASqF,QAAQ,kBAAwB1+D,OAASq5D,EAASqF,QAAQ,0BAAgC1+D,SAAW,EAC3I,GAAKu3R,GAAyBC,EAA9B,CAGA,IAAIC,EAAiB,CACjB3zP,IAAK,EACLG,KAAM,GAENhe,EAAY5mB,KAAK2sC,OAAO,aACxB/lB,IAAckhQ,KACdsQ,EAAexzP,KAAO5kC,KAAKq4R,yBAAyBr+N,EAAUmrN,GAAYl4Q,IAE1E2Z,IAAcu+P,KACdiT,EAAe3zP,IAAMzkC,KAAKq4R,yBAAyBr+N,EAAU8tN,GAAU76Q,IAE3EjN,KAAKqwE,SAAS+nN,EAZb,CAaJ,EACDC,yBAA0B,SAASr+N,EAAUpzC,EAAW3Z,GACpD,IAAI+gK,EAAehuK,KAAKguK,eACxB,OChaD,SAAoCsqH,EAAe1xQ,EAAW2xQ,EAAkBvqH,EAAc/gK,GACjG,IAAIurR,GAAmBz/Q,EAAAA,EAAAA,GAAS,CAC5B0rB,IAAK,EACLG,KAAM,EACNF,MAAO,EACPC,OAAQ,GACT13B,GACCwrR,EAAa7xQ,IAAcmvQ,GAC3Bl5R,EAAO47R,EAAa,MAAQ,OAC5BC,EAAcD,EAAa,SAAW,QACtC1wN,EAAY0wN,EAAa,SAAW,QACpCE,EAAsBJ,EAAiB,SAAStoR,OAAOm1D,EAAS2C,KAChE6wN,EAAsBL,EAAiB,SAAStoR,OAAOm1D,EAAS2C,KAChEy9M,EAAgB+S,EAAiBh+N,wBAAwBwN,GACzD4C,EAAc2tN,EAAc/9N,wBAAwBwN,GACpDknI,EAAQ,EACR1lM,KAAKD,IAAIk8Q,EAAgBmT,GAAuB,IAChD1pF,EAAQu2E,EAAgBmT,GAE5B,IAAIE,EC9BD,SAA2BC,EAAoBC,GAMlD,IALA,IAAI9rR,EAAS,CACT23B,KAAM,EACNH,IAAK,GAELj4B,EAAUusR,EACP,QAAUttP,EAAWj/B,SAAY,IAAWi/B,GAAYA,EAASwkC,eAAiBzjE,EAAQshC,UAAUmyB,SAAS64N,IAAqB,CACrI,IAAIrtP,EACAwH,EAAgBzmC,EAAQyjE,aACxB8/F,EAAcvjK,EAAQ+tD,wBACtBy+N,EAAoB/lP,EAAcsnB,wBACtCttD,EAAO23B,MAAQmrI,EAAYnrI,KAAOo0P,EAAkBp0P,KACpD33B,EAAOw3B,KAAOsrI,EAAYtrI,IAAMu0P,EAAkBv0P,IAClDj4B,EAAUA,EAAQyjE,YACrB,CACD,OAAOhjE,CACV,CDc+BgsR,CFzBM,wBEyBsCX,GAAez7R,GAAQoyM,EAC3FiqF,EAAwBlrH,EAAanxK,GACrCs8R,EAAsBD,EAAwBL,EAAwBL,EAAiB37R,GACvFu8R,EAAoBF,EAAwBL,EAAwBluN,EAAcskI,EAAQ2pF,EAAsBJ,EAAiBE,GACrI,OAAIS,GAAuB,GAAKC,GAAqB,EAC1CF,EAEJA,GAAyB3vR,KAAKD,IAAI6vR,GAAuB5vR,KAAKD,IAAI8vR,GAAqBA,EAAoBD,EACrH,CDqYcE,CAA2Br/N,EAASpgE,IAAI,GAAIgtB,EAAWmqD,GAAE/wE,KAAKuH,aAAa3N,IAAI,GAAIo0K,EAAc/gK,EAC3G,EACDqqR,cAAe,WACNt3R,KAAK2sC,OAAO,mBACb3sC,KAAKgsC,QAEZ,EACDs7H,cAAe,WACX,OAAO,CACV,EACD0iD,YAAa,WACT,QAASqsE,GAAWn9F,mBACvB,IAEL1mB,GAAkByjH,GAAYI,IAC9B,UGrbaiD,GAAb,WACI,WAAY1yQ,IAAW,eACnB5mB,KAAKu5R,qBAAuB,aAC5Bv5R,KAAK+1R,mBAAqB,WAC1B/1R,KAAKg2R,eAAiB,OACtBh2R,KAAK4mB,UAAY,OAASA,QAAa,IAAWA,EAAYA,EAAYmvQ,EAC7E,CANL,yCAOI,WACI,MJX0B,eIWnB/1R,KAAK4mB,WAAsC5mB,KAAK4mB,YAAcovQ,EACxE,GATL,sBAUI,WACI,OAAOh2R,KAAK4mB,YAAcmvQ,IAAsB/1R,KAAK4mB,YAAcovQ,EACtE,GAZL,kBAaI,WACI,OAAOh2R,KAAK4mB,YAAcovQ,EAC7B,KAfL,KCsBA,IAGIwD,GAA6B,mBAI3BC,GAAAA,SAAAA,6IACF,WACI,OAAOh0O,EAAAA,GAAAA,IAAO,kEAA4B,CACtC4vO,cAAe,QACfQ,WAAW,EACX/0G,cAAe,EACfsuG,eAAe,EACflpO,MAAO,GACPwzO,aAAa,EACbp8G,QAAS,KACTq8G,uBAAwB,KACxB7D,iBAAiB,GAExB,sBACD,YACI,qDACA91R,KAAK2sC,OAAO,qBAAsB3sC,KAAK45R,0BAA0B98R,KAAKkD,OACtEA,KAAK2sC,OAAO,QAAS3sC,KAAK65R,kBAAkB/8R,KAAKkD,MACpD,wBACD,YACI,uDACAA,KAAK85R,2BACL95R,KAAKg6D,WAAWoU,SA7BI,qBA8BpBpuE,KAAK+5R,wBACL/5R,KAAKk1N,eACLl1N,KAAKg6R,uBACLh6R,KAAKi6R,oBACLj6R,KAAKk6R,oBACLl6R,KAAKm6R,6BACR,4CACD,WACIn6R,KAAKo6R,sBAAwBp6R,KAAK2/J,sBAAsB,yBAC3D,kCACD,WAAoB,WAChBphG,EAAAA,EAAAA,GAAgBwS,GAAE/wE,KAAKuH,aAAc,gBAAgB,SAAA0B,GACjD,EAAKoxR,kBAAmB,CAC3B,GACJ,sCACD,WACI,GAAKr6R,KAAK2sC,OAAO,eAAjB,CAGA,IAAInuC,EAAYglJ,GAAaywE,GAAgBj0N,KAAKw+J,MAC9Cq7E,EAAc75O,KAAK2/J,sBAAsB,WAC7CphG,EAAAA,EAAAA,IAAiBwS,GAAE/wE,KAAKuH,aAAc/I,GACtC+/D,EAAAA,EAAAA,GAAgBwS,GAAE/wE,KAAKuH,aAAc/I,GAAY,SAASyK,GACtD4wO,EAAY,CACR94O,MAAOkI,GAEd,GARA,CASJ,6BACD,WACI,IAAIi9C,EAAQlmD,KAAK2sC,OAAO,UAAY,GAChC0jL,EAASt/I,KACbA,GAAE/wE,KAAK6wC,WAAWid,QAClB5H,EAAMxlD,SAAS,SAASkE,GACpByrN,EAASA,EAAOtiL,IAAIgjC,GAAE,SAAS3C,SAASorN,IAA4B7zR,OAAOf,GAC9E,IACDmsE,GAAE/wE,KAAK6wC,WAAWlrC,OAAO0qN,GACzBrwN,KAAKs6R,QAAUjqE,EACfrwN,KAAKgsC,QACR,yCACD,WACI+kC,GAAE,SAAS3C,SAjE6B,mCAiEuBzoE,OAAOorE,GAAE,SAAS3C,SAhExC,qCAgE8FO,SAASoC,GAAE/wE,KAAKuH,aAC1J,qCACD,SAAqBu5K,GACjB,IAAI3/K,EAAQnB,KAAKu6R,UAAU,OAASz5G,QAAiB,IAAWA,EAAgBA,EAAgB9gL,KAAK2sC,OAAO,kBAC5G3sC,KAAKs3J,QAAQ,CACT7yH,IAAKzkC,KAAKw6R,iBAAiBr5R,KAE/BnB,KAAKy6R,wBACR,0BACD,SAAUt5R,GACN,IACIu5R,GADQ16R,KAAK2sC,OAAO,UAAY,IACdhsC,OACtB,OAAIQ,GAASu5R,EACFA,EAAY,EAEnBv5R,EAAQ,EACD,EAEJA,CACV,iCACD,SAAiBA,GACb,OAAOoI,KAAKoZ,MAAM3iB,KAAK26R,cAAgBx5R,EAC1C,kCACD,WACI,IAAI4yN,EAAe/zN,KAAK46R,mBACpBp8R,EAAYglJ,GAAaywE,GAAgBj0N,KAAKw+J,MAClDjgG,EAAAA,EAAAA,IAAiBv+D,KAAKg6D,WAAYx7D,EAAWu1N,GAC7Cx1J,EAAAA,EAAAA,GAAgBv+D,KAAKg6D,WAAYx7D,EAAWu1N,EAAc/zN,KAAKiuN,kBAAkBnxN,KAAKkD,MACzF,iCACD,WACI,MAAO,mBACV,kCACD,SAAkBiJ,GACdjJ,KAAK2sC,OAAO,gBAAiB3sC,KAAK66R,kBAAkB5xR,EAAEu2D,eACzD,kCACD,SAAkBM,GACd,OAAO9/D,KAAK2wN,gBAAgBxvN,MAAM2+D,EACrC,8BACD,WACI,OAAO9/D,KAAKg6D,WAAWh+D,KAAKgE,KAAK46R,mBACpC,uCACD,WACI,IAAI95G,EAAgB9gL,KAAK2sC,OAAO,kBAChCkgB,EAAAA,EAAAA,IAAK7sD,KAAKs6R,SAAU,SAASn5R,GACzB4vE,GAAE/wE,MAAMiuE,YA9GsB,4BA8G2B6yG,IAAkB3/K,EAC9E,GACJ,4CACD,WACI,MAAO,YAAc62E,GAAAA,OAAe1D,YAAct0E,KAAKq6R,gBAC1D,wBACD,SAAQvrC,GACJ,IAAI,EC1IL,SAA2Bn8N,EAAU/L,GACxC,IAAIwgB,EAAAA,EAAAA,IAAczU,GAAW,CACzB,IAAIiS,GAAOwpB,EAAAA,GAAAA,eAAcz7B,EAASiS,KAAMjS,EAAS5kB,GAC7C02B,GAAM2pB,EAAAA,GAAAA,eAAcz7B,EAAS8R,IAAK9R,EAAS3kB,GAC/C,MAAO,CACH42B,MAAMypB,EAAAA,EAAAA,IAAUzpB,GAAQA,OAAO,EAC/BH,KAAK4pB,EAAAA,EAAAA,IAAU5pB,GAAOA,OAAM,EAEnC,CACD,IAAI,EAGA,IAAI60P,GAAgB1yQ,GAFNk0Q,EADlB,EACIA,aACYrC,EAFhB,EAEIA,WAEJ,MAAO,CACH7zP,KAAMk2P,IAAgBzsO,EAAAA,EAAAA,IAAU17B,GAAYA,OAAW,EACvD8R,IAAKg0P,IAAcpqO,EAAAA,EAAAA,IAAU17B,GAAYA,OAAW,EAE3D,CD4HWooQ,CAAkBjsC,GAFbrqN,EADT,EACIA,IACMG,EAFV,EAEIA,KAEAjS,EAAW3yB,KAAKguK,eAChB/sF,EAAQ,CACRlzE,EAAG4kB,EAASiS,KAAOA,EACnB52B,EAAG2kB,EAAS8R,IAAMA,GAEtB,GAAIzkC,KAAKmpK,eAAiBloF,EAAMlzE,GAAKkzE,EAAMjzE,GAEvC,GADAhO,KAAK+vR,oBAAmB,GACpB/vR,KAAKg7R,aAAeh7R,KAAKi7R,8BAA+B,CACxD,IAAIxrO,EAAOzvD,KACXkxM,GAAAA,KAAQngI,GAAE/wE,KAAK6wC,YACfqgK,GAAAA,QAAWngI,GAAE/wE,KAAK6wC,WAAY,CAC1BhlB,SAAU,IACVxmB,KAAM,QACNmyG,GAAI,CACA/yE,IAAKl7B,KAAKo/D,MAAMsY,EAAMjzE,IAE1B2T,SAN0B,WAOtByhI,GAAcryE,GAAEthB,EAAK5e,YACrB4e,EAAK8gO,WAAW,CACZtvM,MAAOA,GAEd,WAEEjhF,KAAKg7R,UACf,MACGh7R,KAAKuwR,WAAW,CACZtvM,MAAOA,GAItB,0BACD,SAAUh4E,GACN,OAAOjJ,KAAKu3R,eAAetuR,EAC9B,yCACD,SAAyB9H,GACrB,IAAIsnO,EAAazoO,KAAK2sC,OAAO,SAAShsC,OACtC,OAAO4I,KAAKkuB,IAAIluB,KAAKsZ,IAAI1hB,EAAOsnO,EAAa,GAAI,EACpD,sCACD,SAAsB16N,GAClB,OAAQ,IAAMA,GAAKA,GAAK,EAC3B,6CACD,SAA6BmtR,GACzB,IAEIC,EAFcn7R,KAAKguK,eAAevpI,IACHy2P,EAAuBl7R,KAAK26R,cAE/D,GAAI36R,KAAKo7R,sBAAsBD,GAC3B,OAAOD,EAEX,IAAIt0Q,EAAYu0Q,EAAK,EAAI,GAAK,EAE9B,OADuBn7R,KAAKq7R,yBAAyBH,EAAuBt0Q,EAE/E,qCACD,SAAqBs0Q,GACjB,GAAIl7R,KAAKi7R,8BACL,OAAOj7R,KAAKs7R,6BAA6BJ,GAE7Cl7R,KAAKg7R,YAAa,EAClB,IAAIO,EAAQv7R,KAAKguK,eAAevpI,IAAMzkC,KAAK26R,cAC3C,OAAOpxR,KAAKoZ,MAAM44Q,EACrB,kCACD,WACI,IAAIL,EAAuBl7R,KAAK2sC,OAAO,iBACnC6uP,EAAmBx7R,KAAKy7R,qBAAqBP,GAC7CM,IAAqBN,EACrBl7R,KAAKg6R,qBAAqBwB,GAE1Bx7R,KAAK2sC,OAAO,gBAAiB6uP,GAEjCx7R,KAAKq6R,kBAAmB,CAC3B,4BACD,WACI,IAAIvpE,EAAQ9wN,KAAKs6R,QAAQvlP,QACzB,OAAO+1B,GAAUgmJ,EACpB,8BACD,SAAcpoL,GACV1oC,KAAKg6D,WAAWiU,YAvMW,kBAuM+BvlC,EAC7D,2BACD,WACI,OAAOqoC,GAAE/wE,KAAKuH,aAAa0nE,GAAG,WACjC,0CACD,SAA0B/wE,EAAO28J,GAC7B76J,KAAKo6R,sBAAsB,CACvBl8R,MAAOA,EACP28J,cAAeA,EACf95J,WAAO,GAEd,mCACD,SAAmB8/C,IACf,iEAAyBA,GACzB7gD,KAAK45R,0BAA0B/4O,EAClC,0CACD,SAA0BA,GAAS,WAC3BA,IACA7gD,KAAK07R,iBAAmBnmQ,YAAW,WAC/B,EAAKykQ,qBAAqB,EAAKrtP,OAAO,iBACzC,KAEL3sC,KAAK27R,mBAAkB,EAC1B,kCACD,SAAkBjzP,GACd1oC,KAAKg6D,WAAWiU,YA/NY,4BA+N+BvlC,EAC9D,sCACD,WACI,IAAIo4I,EAAgB9gL,KAAK2sC,OAAO,iBAC5BivP,EAAW57R,KAAKu6R,UAAUz5G,GAC1B86G,IAAa96G,EACb9gL,KAAKy6R,yBAELz6R,KAAK2sC,OAAO,gBAAiBivP,EAEpC,+BACD,SAAeh+R,GACX,OAAQA,EAAKxE,MACT,IAAK,gBACD4G,KAAK67R,0BAA0Bj+R,EAAKM,MAAON,EAAKi9J,eAChD76J,KAAKg6R,qBAAqBp8R,EAAKM,OAC/B,MACJ,IAAK,QACD8B,KAAKk1N,eACLl1N,KAAK87R,wBACL,MACJ,IAAK,UACL,IAAK,cACD97R,KAAK+5R,wBACL,MACJ,IAAK,yBACD/5R,KAAKm6R,8BACL,MACJ,SACI,6DAAqBv8R,GAEhC,yBACD,WACI03B,aAAat1B,KAAK07R,mBAClB,uDACH,OA7PCjC,CAAuBpD,IA+P7B7jH,GAAkB,mBAAoBinH,IACtC,UErRIsC,GAAiB,cAKjBC,GACM,OAINC,GACM,OADNA,GAEO,QAFPA,GAGK,MAHLA,GAIO,QAEPC,GAAWr6C,GAAAA,QAAe,CAC1Bs6C,aAAc,WACV,IAAIj+R,EAAQ8B,KAAK2sC,OAAO,SACpB1Y,EAAO,IAAInxB,KAAK5E,GACpB,OAAQA,GAASy9D,MAAM1nC,GAAQj0B,KAAKo8R,kBAAoBnoQ,CAC3D,EACDmoQ,gBAAiB,WACb,IAAInoQ,EAAO,IAAInxB,KACf,OAAI9C,KAAK2sC,OAAO,UAAYqvP,GACjB,IAAIl5R,KAAKmxB,EAAK2rD,cAAe3rD,EAAKmrD,WAAYnrD,EAAK+rD,WAEvD/rD,CACV,EACD2pI,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B05E,QAASwgK,GAAAA,0BACT1gK,QAAS0gK,GAAAA,0BACTh3R,KAAM22R,GACN99R,MAAO,IAAI4E,KACXw5R,mBAAmB,GAE1B,EACDx+H,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,SAAS6+J,GACb,MAAO,YAAcA,EAAQjhK,UAChC,EACDl3E,QAAS,CACLk/R,mBAAmB,KAG9B,EACDxhN,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAAS2tN,IACzB/7R,KAAKu8R,qBAAqBv8R,KAAK2sC,OAAO,SACtC3sC,KAAKw8R,qBACR,EACDD,qBAAsB,SAASE,EAAeC,GAC1C18R,KAAKg6D,WAAWoU,SAAS2tN,eAAuBU,GAChDC,GAAkB18R,KAAKg6D,WAAWqU,YAAY0tN,eAAuBW,EACxE,EACDF,oBAAqB,WACjBx8R,KAAKg6D,WAAWiU,YA1DK,sBA0D+BjuE,KAAK2sC,OAAO,qBACnE,EACDgwP,SAAU,WACN,OAAO38R,KAAK48M,SACf,EACDtE,mBAAoB,WAChBt4M,KAAK48M,UAAY7rI,GAAE,SAAS3C,SA/DP,uBAgErBpuE,KAAK48R,iBACL58R,KAAK48M,UAAUjuI,SAAS3uE,KAAKg6D,WAChC,EACD4iO,eAAgB,WACP58R,KAAK68R,qBACN78R,KAAK68R,mBAAqB9rN,GAAE,SAAS3C,SApEX,wBAsE9BpuE,KAAK68R,mBAAmB/uO,QACxB9tD,KAAK88R,uBACL98R,KAAK+8R,SAAW,CAAC,EACjB,IAAIttO,EAAOzvD,MACX6sD,EAAAA,EAAAA,IAAK4C,EAAKutO,gBAAiB,SAAS5jS,GAChC,IAAI6jS,EAAUlsN,GAAE,SAASpC,SAASlf,EAAKotO,oBAAoBzuN,SAAS8uN,qBAA8BztO,EAAKutO,eAAe5jS,GAAMiM,MAC5HoqD,EAAKstO,SAASttO,EAAKutO,eAAe5jS,GAAMiM,MAAQoqD,EAAK0zG,iBAAiB85H,EAASxD,GAAgB,CAC3FvzO,MAAOuJ,EAAKutO,eAAe5jS,GAAM+jS,aACjCr8G,cAAerxH,EAAKutO,eAAe5jS,GAAM0nL,cACzCu0G,cAAe,QACfS,iBAAiB,EACjB/pB,QAAS,SAAS9iQ,GACd,IAAIm0R,EAASn0R,EAAEmoB,UACfgsQ,EAAOC,eAAc,GACrB5tO,EAAK6tO,iBAAiB7tO,EAAKutO,eAAe5jS,GAAOgkS,EAAOzwP,OAAO,iBAClE,EACDw/N,MAAO,SAASljQ,GACCA,EAAEmoB,UACRisQ,eAAc,EACxB,EACD//G,QAAS,SAASr0K,GACd,IAAIm0R,EAASn0R,EAAEmoB,UACfgsQ,EAAOC,eAAc,GACrB5tO,EAAK6tO,iBAAiB7tO,EAAKutO,eAAe5jS,GAAOgkS,EAAOzwP,OAAO,kBAC/D8iB,EAAK8tO,gBAAgB9tO,EAAKutO,eAAe5jS,GAAOgkS,EAAOzwP,OAAO,kBAC9DywP,EAAOC,eAAc,EACxB,EACD1D,uBAAwB,SAAS1wR,GAC7B,IAAIm0R,EAASn0R,EAAEmoB,UACfq+B,EAAK8tO,gBAAgB9tO,EAAKutO,eAAe5jS,GAAOgkS,EAAOzwP,OAAO,iBACjE,GAER,IACD8iB,EAAKotO,mBAAmBluN,SAASlf,EAAKktO,WACzC,EACDG,qBAAsB,SAASz3R,GAC3B,IAAIoqD,EAAOzvD,KACXqF,EAAOA,GAAQoqD,EAAK9iB,OAAO,QAC3B8iB,EAAKutO,eAAiB,CAAC,EACvB50K,GAAAA,eAAgCi0K,GAAAA,YAAwBh3R,IAAO3E,SAAS,SAAS6nH,GAC7E94D,EAAK+tO,oBAAoBj1K,EAC5B,GACJ,EACDi1K,oBAAqB,SAAS9qQ,GAgB1B,IAfA,IAAI62N,EAAgB8yC,GAAAA,qBAAiC3pQ,GACjD+qQ,EAAaz9R,KAAK09R,iCAAiChrQ,GACnDy3N,EAAaszC,EAAWtzC,WACxBC,EAAWqzC,EAAWrzC,SACtBniK,EAAYshK,EAActhK,UAC1B01M,EAAU39R,KAAK49R,kBACf79R,EAAS,CACTsF,KAAMqtB,EACNkW,SAAU2gN,EAAcn1H,OACxBypK,WAAY,GACZV,aAAc,GACd3jE,SAAU,SAASt7N,GACf,OAAOA,EAAMqrP,EAAc30L,UAAYu1L,CAC1C,GAEIxhP,EAAIwhP,EAAYxhP,GAAKyhP,EAAUzhP,IACpC5I,EAAO89R,WAAWz9R,KAAKuI,GACvB5I,EAAOo9R,aAAa/8R,KAAK6nF,EAAUt/E,EAAGg1R,IAE1C59R,EAAO+gL,cAAgB/gL,EAAOy5N,SAASmkE,GACvC39R,KAAKg9R,eAAetqQ,GAAiB3yB,CACxC,EACDu9R,iBAAkB,SAASQ,GACvB,IAAIC,EAAeD,GAAiB99R,KAAK+8R,SAASe,EAAcz4R,OAChEwnD,EAAAA,EAAAA,IAAK7sD,KAAK+8R,UAAW,WACjB/8R,KAAK27R,kBAAkB37R,OAAS+9R,EACnC,GACJ,EACDC,uBAAwB,WACpB,IAAIvuO,EAAOzvD,MACX6sD,EAAAA,EAAAA,IAAK7sD,KAAK+8R,UAAW,SAAS13R,GAC1B,IAAI44R,EAAexuO,EAAKutO,eAAe33R,GAAMm0N,SAAS/pK,EAAKmuO,mBAC3D59R,KAAK2sC,OAAO,gBAAiBsxP,EAChC,GACJ,EACDV,gBAAiB,SAASH,EAAQt8G,GAC9B,GAAIA,IAAkBs8G,EAAOt8G,cAAe,CACxC,IAAIo9G,EAAcd,EAAOS,WAAW/8G,GAChCl4I,EAAWw0P,EAAOx0P,SAClBssB,EAAe,IAAIpyD,KAAK9C,KAAK49R,mBAC7B74M,EAAc7vB,EAAa8qB,UAC3B67C,EAAU77H,KAAK2sC,OAAO,WACtBgvF,EAAU37H,KAAK2sC,OAAO,WACtBywP,EAAO/3R,OAAS42R,GAChBl3M,EAAcx7E,KAAKsZ,IAAIkiE,EAAas3M,GAAAA,eAA2BnnO,EAAa0qB,cAAes+M,IACpFd,EAAO/3R,OAAS42R,KACvBl3M,EAAcx7E,KAAKsZ,IAAIkiE,EAAas3M,GAAAA,eAA2B6B,EAAahpO,EAAakqB,cAE7FlqB,EAAa+pB,QAAQ8F,GACrB7vB,EAAatsB,GAAUs1P,GACvB,IAAIz8M,EAAiBO,GAAAA,cAAwB9sB,EAAc2mE,EAASF,GACpEzmE,EAAemnO,GAAAA,WAAuB56M,EAAgBvsB,EAAc,QACpEA,EAAe8sB,GAAAA,cAAwB9sB,EAAc2mE,EAASF,GAC9D37H,KAAK2sC,OAAO,QAASuoB,GACrBkoO,EAAOt8G,cAAgBA,CAC1B,CACGs8G,EAAO/3R,OAAS42R,IAChBj8R,KAAKm+R,kBAELf,EAAO/3R,OAAS42R,KAChBj8R,KAAKo+R,eAAenC,IACpBj8R,KAAKo+R,eAAenC,IAE3B,EACDmC,eAAgB,SAASC,GACrB,IAAIjB,EAASp9R,KAAK+8R,SAASsB,GAC3B,GAAIjB,EAAQ,CACRp9R,KAAKw9R,oBAAoBa,GACzB,IAAIC,EAAet+R,KAAKg9R,eAAeqB,GACnCA,IAAepC,IAAmBqC,EAAanB,aAAa7/R,aAAe8/R,EAAOzwP,OAAO,SAASrvC,YAClG8/R,EAAOzwP,OAAO,CACVuZ,MAAOo4O,EAAanB,aACpBr8G,cAAew9G,EAAax9G,eAGvC,CACJ,EACD88G,gBAAiB,WACb,IAAID,EAAU39R,KAAKm8R,eACftgK,EAAU77H,KAAK2sC,OAAO,WACtBgvF,EAAU37H,KAAK2sC,OAAO,WAC1B,OAAOq1C,GAAAA,cAAwB27M,EAAS9hK,EAASF,EACpD,EACD+hK,iCAAkC,SAAShrQ,GACvC,IAAIirQ,EAAU39R,KAAK49R,kBACf/hK,EAAU77H,KAAK2sC,OAAO,WACtBgvF,EAAU37H,KAAK2sC,OAAO,WACtB4xP,EAAUv8M,GAAAA,SAAmB27M,EAAS9hK,GACtC2iK,EAAWD,GAAWZ,EAAQv+M,aAAey8C,EAAQz8C,WACrDq/M,EAAUz8M,GAAAA,SAAmB27M,EAAShiK,GACtC+iK,EAAWD,GAAWd,EAAQv+M,aAAeu8C,EAAQv8C,WACrDu/M,EAAUH,GAAYb,EAAQ39M,YAAc67C,EAAQ77C,UACpD4+M,EAAUF,GAAYf,EAAQ39M,YAAc27C,EAAQ37C,UACpDupK,EAAgB8yC,GAAAA,qBAAiC3pQ,GACjDy3N,EAAaZ,EAAcY,WAC3BC,EAAWb,EAAca,SA0B7B,OAzBI13N,IAAkBupQ,KAClB9xC,EAAatuH,EAAQj8C,cACrBwqK,EAAWzuH,EAAQ/7C,eAEnBltD,IAAkBupQ,KACdsC,IACAp0C,EAAatuH,EAAQz8C,YAErBq/M,IACAr0C,EAAWzuH,EAAQv8C,aAGvB1sD,IAAkBupQ,KAClB7xC,EAAWiyC,GAAAA,eAA2BsB,EAAQ/9M,cAAe+9M,EAAQv+M,YACjEm/M,GAAWC,IACXr0C,EAAatuH,EAAQ77C,WAErBy+M,GAAWC,IACXt0C,EAAWzuH,EAAQ37C,YAGvBttD,IAAkBupQ,KAClB9xC,EAAaw0C,EAAU9iK,EAAQj6C,WAAauoK,EAC5CC,EAAWw0C,EAAUjjK,EAAQ/5C,WAAawoK,GAEvC,CACHD,WAAYA,EACZC,SAAUA,EAEjB,EACD+zC,gBAAiB,WACbn+R,KAAKo+R,eAAenC,IACpBj8R,KAAKo+R,eAAenC,IACpBj8R,KAAKo+R,eAAenC,GACvB,EACDn8H,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,UACL,IAAK,UACL,IAAK,OACD4G,KAAK48R,iBACL58R,KAAKu8R,qBAAqB3+R,EAAKM,MAAON,EAAKi9J,eAC3C,MACJ,IAAK,UACD76J,KAAKmiD,SAASvkD,GACVA,EAAKM,OACL8B,KAAK48R,iBAET,MACJ,IAAK,QACD58R,KAAK2sC,OAAO,QAAS3sC,KAAKm8R,gBAC1Bn8R,KAAKm+R,kBACLn+R,KAAKg+R,yBACL,MACJ,QACIh+R,KAAKmiD,SAASvkD,GAEzB,EACD0rK,OAAQ,WACJtpK,KAAKmiD,kBACEniD,KAAK68R,kBACf,IAELrqH,GAAkB,aAAc0pH,IAChC,UC9RIjiS,IAAS8mD,EAAAA,EAAAA,MAWT89O,GAAmBpd,GAAAA,QAAwB,CAC3CjjH,KAAM,WACNyjH,kBAAmB,WACf,OAAOx8N,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B2hN,kBAAkB,EAClBM,gBAAiBh6I,GAAAA,OAA2B,MAC5C,6BAA6B,GAEpC,EACD83J,iBAAkB,SAAS8B,GACvB,OAAOA,GAAiBhiM,GAAAA,YAAsBhiF,KAAK0hR,QAAQ/0O,OAAO,QACrE,EACDk7N,YAAa,SAAS9nQ,GAClB,MAAO,CACH+0O,aAAc90O,KAAK0hR,QAAQ/X,2BAC3BjqN,cAAe3/C,EAAO2/C,cACtBm+G,oBAAqB,CAAC,CAClBnnF,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLuzB,MAAO,IACPnE,OAAQ,MAEb,CACCkqD,OAAQ,SAAS6+J,GACb,IAAI97O,EAAW87O,EAAQ97O,SACvB,MAAO,YAAcA,GAAY,QAAUA,CAC9C,EACD2D,QAAS,CACLuzB,MAAO,OACPnE,OAAQ,SAEb,CACCkqD,OAAQ,SAASooN,GACb,IAAIrlS,EAAWqlS,EAASrlS,SACpB+6E,EAAQsqN,EAAStqN,MACrB,MAAO,YAAc/6E,GAAY+6E,CACpC,EACDp3E,QAAS,CACLuzB,MAAO,IACPgQ,SAAU,OACVM,UAAW,OACXzU,OAAQ,OACRhiB,SAAU,CACNujM,UAAW,kBAGpB,CACCr3H,OAAQ,CACJj9E,SAAU,MACV+6E,OAAO,GAEXp3E,QAAS,CACLuzB,MAAO,OACPnmB,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,SACJgpJ,GAAI5zM,OAKvB,EACD4nR,cAAe,WACX,GAAI52H,GAAUjrJ,KAAK0hR,QAAQ/0O,OAAO,UAAY3sC,KAAK0hR,QAAQqd,iBAAmB/+R,KAAK0hR,QAAQ/0O,OAAO,YAC1F3sC,KAAK4hR,UACL5hR,KAAK4hR,QAAQ5nN,WAAWt8D,SACxBsC,KAAK4hR,QAAU,UAHvB,CAOA,IAAI/Y,EAAQ7oQ,KAAK0iR,YACjB,GAAI1iR,KAAK4hR,QACL5hR,KAAK4hR,QAAQj1O,OAAO3sC,KAAKgiR,yBACtB,CACH,IAAIx1Q,EAAUukE,GAAE,SAASpC,SAASk6L,EAAMvuE,YACxCt6L,KAAK4hR,QAAU5hR,KAAK+qC,cAAcv+B,EACrC,CACDxM,KAAK4hR,QAAQ5nN,WAAW2U,SAAS3uE,KAAK8hR,sBARrC,CASJ,EACDC,eAAgB,WACZ,OAAOma,EACV,EACD1Z,kBAAmB,WACfxiR,KAAKmiD,WACDniD,KAAK4hR,SACL5hR,KAAK4hR,QAAQj1O,OAAO,QAAS3sC,KAAK4hR,QAAQgc,kBAEjD,EACD5b,kBAAmB,WACf,MAAO,CACH9jR,MAAO8B,KAAKijR,gBAAkB,IAAIngR,KAClCuC,KAAMrF,KAAK0hR,QAAQ/0O,OAAO,QAC1BkvF,QAAS77H,KAAK0hR,QAAQrL,WAAW,QAAU,IAAIvzQ,KAAK,KAAM,EAAG,GAC7D64H,QAAS37H,KAAK0hR,QAAQrL,WAAW,QAAU,IAAIvzQ,KAAKA,KAAKygE,MAAQ,GAAKye,GAAAA,UACtEviC,YAAa,WACTz/C,KAAK4hR,QAAU,IAClB,EAAC9kR,KAAKkD,MAEd,IAEL,MCxGIs0R,GAAiB7S,GAAAA,QAAwB,CACzCjjH,KAAM,SACNqpG,YAAa,SAASC,GAClB,OAAOriN,EAAAA,GAAAA,GAAO,CAAC,EAAGqiN,EAAc,CAC5Bn3O,MAAO,QAEd,EACD2xP,cAAe,SAAS37Q,GACpB,OAAKA,EAGD,aAAe3G,KAAK0hR,QAAQ/0O,OAAO,QAC5B,IAAI7pC,KAAK6D,EAAK/E,QAAQ,KAAM,KAAKA,QAAQ,IAAK,KAAKS,MAAM,KAAK,IAElE2/E,GAAAA,uBAAiCr7E,GAL7B,IAMd,EACDg8Q,mBAAoB7gQ,GAAAA,KACpBigQ,eAAgBjgQ,GAAAA,KAChBkgQ,kBAAmBlgQ,GAAAA,KACnBk9Q,gBAAiB,WACb,IAAI35R,EAAOrF,KAAK0hR,QAAQ/0O,OAAO,QAM/B,OALKq1C,GAAAA,kBAAAA,SAAqC38E,GAE/B,aAAeA,GAAS4lJ,GAAU5lJ,KACzCA,EAAO,kBAFPA,EAAO,OAIJA,CACV,EACDg9Q,iBAAkB,WACd,IAAIhc,EAAiBrmQ,KAAK0hR,QAAQzrB,UAAU,YACxCj+K,GAAAA,OAAetD,SAAW2xL,GAC1BA,EAAet5N,GAAG,QAAS,WACvB/sC,KAAK0hR,QAAQruB,SAASz5P,IAAI,GAAGstK,OAChC,EAACpqK,KAAKkD,MAEd,EACDiiR,kBAAmB,WACf,MAAO,CACH36P,KAAMtnB,KAAKg/R,kBAElB,EACD9c,iBAAkB,SAAS8B,GACvB,IAAI3+Q,EAAOrF,KAAKg/R,kBAChB,OAAOhb,GAAiBhiM,GAAAA,YAAsB38E,EACjD,EACDk9Q,kBAAmB,SAAS/nF,GACxBA,EAAOtsH,KAAK,CACRrrD,IAAK+xG,GAAAA,cAAgC50H,KAAK0hR,QAAQrL,WAAW,OAAQ,cACrE5+O,IAAKm9F,GAAAA,cAAgC50H,KAAK0hR,QAAQrL,WAAW,OAAQ,eAE5E,IAEL,MC9DI4oB,GAAwB,SAASv9R,GAGjC,IAFA,IAAIw9R,EAAe,EACfC,EAAiB,EACZx2R,EAAI,EAAGA,EAAIjH,EAAIf,SAAUgI,EAI9B,GAHI,MAAQjH,EAAIiH,IACZu2R,IAEA,MAAQx9R,EAAIiH,OACVw2R,EACED,EAAe,IAAM,GACrB,MAAO,CACHE,WAAYD,EACZh+R,MAAOwH,GAKvB,MAAO,CACHy2R,WAAY,EACZj+R,OAAQ,EAEf,EACGk+R,GAAmB,SAAS39R,EAAKkY,EAAGqK,GAEpC,IADA,IAAItb,GAAK,EACFsb,KAAOtb,IAAMjH,EAAIf,QACpBgI,EAAIjH,EAAIN,QAAQwY,EAAGjR,GAEvB,OAAOA,CACV,EACG22R,GAAe,SAAS59R,EAAKP,GAC7B,OAAK,IAAMA,EACA,CAACO,GAEL,CAACA,EAAIqD,MAAM,EAAG5D,GAAQO,EAAIqD,MAAM5D,EAAQ,GAClD,ECzBUo+R,GAAqB,SAAS54R,EAAMkxD,GAC3C,GAAI,kBAAoBA,EAAQ,CAC5B,IAAIgmD,EAAYhmD,EAAOx1D,MAAM,KACzBuuD,EAAO58B,GAAAA,QAAertB,EAAMkxD,GAChCgmD,EAAU,GAAKA,EAAU,IAAM,IAAMA,EAAU,GAE/ChmD,GADAA,EAASgmD,EAAUjtD,EAAO,EAAI,EAAI,IACNhvD,QAAQ,cAAc,SAAAF,GAAG,OAAIA,EAAIW,MAAM,IAAI0B,KAAI,iBAAM,GAAN,IAAW0I,KAAK,IAAIzH,OAAO,EAAjD,IACrD,IAAIw6R,EAAmB,YAAYxwR,KAAK6oD,GAAQ,GAAGl3D,OAC/C8+R,EAAoB,YAAYzwR,KAAK6oD,GAAQ,GAAGl3D,OACpD,MAAO,CACH47B,MAAOijQ,EACPt1R,IAAKvD,EAAKhG,OAAS8+R,EAE1B,CACG,MAAO,CACHljQ,MAAO,EACPryB,IAAKvD,EAAKhG,OAIrB,EACG++R,GAA4B,SAASv+R,EAAOwF,GAC5C,IAAIw9C,EAAmBnwB,GAAAA,sBACnBmpF,EAAS,IAAIvlF,OAAO,SAAU05B,EAAAA,GAAAA,cAAanN,GAAoB,IAAK,KAExE,OADyBx9C,EAAK5B,MAAM,EAAG5D,GACbS,QAAQu7G,EAAQ,IAAIx8G,MACjD,EACGg/R,GAAe,SAASh5R,GACxB,OAAOA,EAAKtE,MAAM,IAAIy4D,UAAUruD,KAAK,GACxC,EACGmzR,GAA2B,SAASC,EAAYl5R,GAChD,IAAKk5R,EACD,OAAQ,EAMZ,IAJA,IAAI1iL,EAAS,SACT76B,EAAU,EACVnhF,EAAQ,KACRqC,EAAS25G,EAAOnuG,KAAKrI,GAClBnD,GAAQ,CAEX,GADArC,EAAQqC,EAAOrC,MACXmhF,GAAWu9M,EACX,OAAO1+R,EAEXmhF,IACA9+E,EAAS25G,EAAOnuG,KAAKrI,EACxB,CACD,OAAO,OAASxF,EAAQwF,EAAKhG,OAASQ,CACzC,EAIU2+R,GAAqB,SAASz0R,EAAO4B,GAO5C,YANI,IAAW5B,EAAMkxB,QACjBlxB,EAAQ,CACJkxB,MAAOlxB,EACPnB,IAAKmB,IAGN,CACHkxB,MAAOlxB,EAAMkxB,MAAQtvB,EACrB/C,IAAKmB,EAAMnB,IAAM+C,EAExB,EAkCM,SAAS8yR,GAAqB10R,EAAO1E,EAAMkxD,GAC9CxsD,EAAQy0R,GAAmBz0R,EAAO,GAClC,IAAI20R,EAAaT,GAAmB54R,EAAMkxD,GAK1C,MAJoB,CAChBt7B,MAAOq/C,GAAavwE,EAAMkxB,MAAOyjQ,EAAWzjQ,MAAOyjQ,EAAW91R,KAC9DA,IAAK0xE,GAAavwE,EAAMnB,IAAK81R,EAAWzjQ,MAAOyjQ,EAAW91R,KAGjE,CACM,IChGH+1R,GAAa,cACbC,GAAuB18I,GAAa3oF,GAAAA,GAAkBolO,IACtDE,GAA2B38I,GAAa3oF,GAAAA,OAAsBolO,IAuElE,GAtEiBr7F,GAAAA,QAAe,CAC5BhnC,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3Bv7B,UAAW,KACX26J,SAAU,KACV4iB,oBAAoB,EACpBC,mBAAmB,GAE1B,EACD97B,YAAa,WACTtoK,KAAKmiD,WACL,IAAIv7B,EAAYw5Q,qBAAmBpgS,KAAK2sC,OAAO,aAC/C3sC,KAAKg6D,WAAWoU,SAjBA,4BAiB4BA,SAASxnD,GACrD5mB,KAAKqgS,UAAYtvN,GAAE,SAAS3C,SAASxnD,EAAY,SAAS+nD,SAAS3uE,KAAKg6D,WAC3E,EACD8gB,QAAS,WACL96E,KAAKmiD,WACL,IAAI3jD,EAAYglJ,GAAa3oF,GAAAA,KAAoB76D,KAAKw+J,MAClDxkG,EAAWh6D,KAAKg6D,WACpBuE,EAAAA,EAAAA,IAAiBvE,EAAUx7D,GAC3B+/D,EAAAA,EAAAA,GAAgBvE,EAAUx7D,EAAWwB,KAAKsgS,iBAAiBxjS,KAAKkD,OAChEA,KAAKugS,mBAAqBvgS,KAAK2/J,sBAAsB,WACxD,EACD2gI,iBAAkB,SAASr3R,GACvBA,EAAEkzD,iBACFn8D,KAAKkiM,cACL3jI,EAAAA,EAAAA,GAAgBv+D,KAAKg6D,WAAYmyJ,GAAgB,WAC7CnsN,KAAKwgS,kBAAoB,IAAInjR,GAAAA,GAC7B2uK,GAAKhsL,KAAKwgS,mBACVxgS,KAAKugS,mBAAmB,CACpBx/R,MAAOkI,IAEXjJ,KAAK6rN,WAAajwB,YAAY57L,KAAKugS,mBApCzB,IAoC8D,CACpEx/R,MAAOkI,GAEd,EAACnM,KAAKkD,OACP,IAAIkC,EAAW26D,EAAAA,EAAAA,cACf0B,EAAAA,EAAAA,GAAgBr8D,EAAUg+R,GAAsBlgS,KAAKkiM,YAAYplM,KAAKkD,OACtEu+D,EAAAA,EAAAA,GAAgBr8D,EAAUi+R,GAA0BngS,KAAKkiM,YAAYplM,KAAKkD,OAC1EA,KAAKugS,mBAAmB,CACpBx/R,MAAOkI,GAEd,EACDypI,SAAU,WACN1yI,KAAKkiM,cACLliM,KAAKmiD,UACR,EACD+/I,YAAa,WACT3jI,EAAAA,EAAAA,IAAiBv+D,KAAKg6D,WAAYmyJ,IAClC,IAAIjqN,EAAW26D,EAAAA,EAAAA,cACf0B,EAAAA,EAAAA,IAAiBr8D,EAAUg+R,IAC3B3hO,EAAAA,EAAAA,IAAiBr8D,EAAUi+R,IACvBngS,KAAKwgS,mBACLxgS,KAAKwgS,kBAAkB5hS,UAEvBoB,KAAK6rN,YACLnwB,cAAc17L,KAAK6rN,WAE1B,EACD/rD,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,WACL,IAAK,YACD4G,KAAKypK,cACL,MACJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,IC9EgB6iS,GAAAA,SAAAA,wIACjB,SAAc13P,EAAU23P,GACpB,IACY/7C,EACR3kP,KADA2kP,OAEAnmP,EAAYglJ,GAAa2B,GAAAA,KAAcw/F,EAAOnmF,MAC9CmiI,EAAyBD,EAAe31R,WACxC61R,EAAoBj8C,EAAO7jF,eAAc,SAAA73J,GAAC,OAAI07O,EAAOk8C,+BAA+B53R,EAA1C,IAC9Cs1D,EAAAA,EAAAA,IAAiBmiO,EAAgBliS,GACjC+/D,EAAAA,EAAAA,GAAgBmiO,EAAgBliS,GAAW,SAAAyK,GAAC,OAAI23R,EAAkB,CAC9D7/R,MAAOkI,GADiC,IAG5C63R,GAAAA,YAAuBH,EAAuB/wN,GAAG,IAAIjjC,OAAO,YAAY,SAAA1jC,GAAC,OAAI07O,EAAOo8C,qBAAqB93R,EAAhC,IACzE63R,GAAAA,YAAuBH,EAAuB/wN,GAAG,IAAIjjC,OAAO,YAAY,SAAA1jC,GAAC,OAAI07O,EAAOq8C,uBAAuB/3R,EAAlC,GAC5E,wBACD,WACI,IACY07O,EACR3kP,KADA2kP,OAEA+7C,EAAiB3vN,GAAE,SAAS3C,SArBb,+BAsBf6yN,EAAUlwN,GAAE,SAASpC,SAAS+xN,GAC9BQ,EAAYnwN,GAAE,SAASpC,SAAS+xN,GAChCtjS,EAAU4C,KAAKgrP,cASnB,OARAhrP,KAAKirP,gBAAgBy1C,GACrB/7C,EAAOxhF,iBAAiB89H,EAASH,IAAYr7O,EAAAA,GAAAA,GAAO,CAChD7+B,UAAW,MACZxpB,IACHunP,EAAOxhF,iBAAiB+9H,EAAWJ,IAAYr7O,EAAAA,GAAAA,GAAO,CAClD7+B,UAAW,QACZxpB,IACH4C,KAAKkrP,cAAcvG,EAAO3qL,WAAYh6D,KAAKmhS,mBAAoB/jS,EAAQyjD,SAChE,CACH9X,SAAU23P,EACV1mO,SAAU0mO,EAEjB,4BACD,WACI,IACY/7C,EACR3kP,KADA2kP,OAIJ,MAAO,CACH9jM,QAHU7gD,KAAKmpK,aAIf3jJ,SAHWm/N,EAAOh4M,OAAO,YAKhC,2BACD,WACI,IACYg4M,EACR3kP,KADA2kP,OAEJ,OAAO,2DAAsBA,EAAOh4M,OAAO,kBAC9C,iCACD,WACI,IACYg4M,EACR3kP,KADA2kP,OAEJ,OAAOA,EAAOh4M,OAAO,oBAAsBg4M,EAAOh4M,OAAO,sBAC5D,8BACD,SAAcy+M,EAASg2C,EAAiB7xN,GACpC67K,EAAQn9K,YA7DgB,mCA6DuBmzN,GAC/Ch2C,EAAQn9K,YAhEC,oBAgEuBsB,EACnC,uBACD,WAEI,IADmB,sDACD,CACd,IACYo1K,EAER3kP,KAFA2kP,OACU57M,EACV/oC,KADA+oC,SAEAqiN,EAAUzG,EAAO3qL,WACjBuV,EAAYvvE,KAAKmpK,aACjBi4H,EAAkBphS,KAAKmhS,mBACvBE,EAAet4P,EAASh+B,WACxBu2R,EAASR,GAAAA,YAAuBO,EAAazxN,GAAG,IAChD2xN,EAAWT,GAAAA,YAAuBO,EAAazxN,GAAG,IAClDxyE,EAAU4C,KAAKgrP,cACnBs2C,EAAO30P,OAAOvvC,GACdmkS,EAAS50P,OAAOvvC,GAChB4C,KAAKkrP,cAAcE,EAASg2C,EAAiB7xN,EAChD,CACJ,OAjFgBkxN,CAAoBp2C,ICiBrCm3C,GAAOj4R,KAEPk4R,GAAuB,CAAC,MAAO,MAAO,YAAa,YAAa,aAAc,OAAQ,MAAO,SAE7FC,GAAgB5/B,GAAAA,QAAmB,CACnChrD,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BurK,QAAS,SAASzkN,GACT49I,GAAoB59I,KACrBA,EAAEkzD,iBACFlzD,EAAE83D,kBACF/gE,KAAK+gS,qBAAqB93R,GAEjC,EACD0kN,UAAW,SAAS1kN,GACX49I,GAAoB59I,KACrBA,EAAEkzD,iBACFlzD,EAAE83D,kBACF/gE,KAAKghS,uBAAuB/3R,GAEnC,EACDk7I,MAAO,WAAa,GAE3B,EACDyZ,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjkD,MAAO,EACP2kB,SAAK,EACL4U,SAAK,EACLsE,KAAM,EACN4lQ,iBAAiB,EACjBC,qBAAqB,EACrBt6Q,KAAM,OACNu6Q,oBAAqBz3K,GAAAA,OAA2B,mCAChDyzH,aAAS,GAEhB,EACDv2E,cAAe,WACX,OAAO,CACV,EACD6qF,mBAAoB,WAChB,OAAOnyP,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3B7W,KAAM,QACNw1P,KAAM6xC,KAEb,EACDqB,oBAAqB,WACjB,IAAIvtN,EAAUp8C,WAAWra,GAAQy2D,SACjC,OAAOz2D,GAAQD,QAAU02D,GAAW,IAAMz2D,GAAQmuL,QAAU13H,GAAW,EAC1E,EACDupF,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,OAAOsB,GAAAA,OAAepD,UAAYoD,GAAAA,aACrC,EACD56E,QAAS,CACLwkS,qBAAqB,IAE1B,CACClrN,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAet0E,KAAK8hS,qBAC3D,EAAChlS,KAAKkD,MACP5C,QAAS,CACLkqB,KAAM,YAGjB,EACDghJ,YAAa,WACTtoK,KAAKqlP,uBACLrlP,KAAKg6D,WAAWoU,SApEL,gBAqEXpuE,KAAKmiD,UACR,EACDwzM,sBAAuB,WACnB,IAAI/sF,EAAa5oK,KAAKmiD,WAEtB,OADAymH,EAAWm5H,UAAY,UAChBn5H,CACV,EACD0vC,mBAAoB,WAChBt4M,KAAK2sC,OAAO,YAAc3sC,KAAKgiS,eAAehiS,KAAK2sC,OAAO,UAC1D3sC,KAAK86M,QAAQ,OAAQ,aACxB,EACDuqC,qBAAsB,WAClBrlP,KAAKolP,gBAAkBr0K,GAAE,WAAW7C,KAAK,OAAQ,UAAUS,SAAS3uE,KAAKg6D,YACzEh6D,KAAK6lP,gBAAgB7lP,KAAK2sC,OAAO,SACpC,EACDk5M,gBAAiB,SAAS3nP,GACtB8B,KAAKskP,oBAAoB7rN,KAAI84B,EAAAA,GAAAA,6BAA4BrzD,GAC5D,EACDomP,kBAAmB,WACf,OAAOtkP,KAAKolP,eACf,EACD8S,iBAAkB,SAASjvP,GACvBjJ,KAAKmiD,SAASl5C,GACd,IAAI6nD,EAAO41F,GAAQz9I,GAEnB,IADuB,cAAcmN,KAAK06C,GACnB,CACnB,IAAIw0G,EAAUhf,GAAiBr9I,GAC/B,GAAI49I,GAAoB59I,IAAMq8J,GAAWm8H,GAAqBl8R,SAAS+/J,GACnE,OAGJ,OADAr8J,EAAEkzD,kBACK,CACV,CACDn8D,KAAKiiS,aAAc,CACtB,EACDtjC,cAAe,SAAStnC,GACpBA,EAAQp2I,MAAQ,EAAIjhF,KAAKkiS,iBAAiB,EAAG7qE,GAAWr3N,KAAKkiS,kBAAkB,EAAG7qE,EACrF,EACDy8B,aAAc,WACV,IAAIwL,EAAat/P,KAAKqzP,SAAS56N,MAC3Bv6B,EAAQ8B,KAAK2sC,OAAO,SACnB2yN,EAAW3+P,QAAU+3B,OAAO4mO,KAAgBphQ,IAC7C8B,KAAKmiS,oBACLniS,KAAKo2P,gCAET,IAAInrJ,GAAY58C,EAAAA,EAAAA,IAAUnwD,GAAS,KAAOksH,GAAAA,OAA2B,0BAOrE,OANApqH,KAAK86M,QAAQ,CACTsnF,UAAUh0O,EAAAA,GAAAA,eAAclwD,EAAO,IAC/BmkS,UAAWp3L,IAEfjrG,KAAK2sC,OAAO,OAAQ3sC,KAAKqzP,SAAS56N,OAClCz4B,KAAK81P,kBACG,IAAIz4O,GAAAA,IAAUze,SACzB,EACDujS,kBAAmB,WACf,IAAIjkS,EAAQ8B,KAAK2sC,OAAO,SACpB3Y,EAAS0E,OAAOx6B,GAChBk7P,EAAiBz9L,MAAM3nC,GAAU,GAAKh0B,KAAKsiS,4BAA4BpkS,GAC3E8B,KAAKm2P,mBAAmBiD,EAC3B,EACDkpC,4BAA6B,SAASpkS,GAClC,OAAO8B,KAAK2sC,OAAO,wBAAZ3sC,CAAqC9B,EAC/C,EACD21P,aAAc,WACV7zP,KAAKqzP,SAASx2P,KAAK,CACfgmB,IAAK7iB,KAAK2sC,OAAO,OACjBlV,IAAKz3B,KAAK2sC,OAAO,OACjB5Q,KAAM/7B,KAAK2sC,OAAO,UAEtB3sC,KAAK86M,QAAQ,CACTynF,UAAUn0O,EAAAA,GAAAA,eAAcpuD,KAAK2sC,OAAO,OAAQ,IAC5C61P,UAAUp0O,EAAAA,GAAAA,eAAcpuD,KAAK2sC,OAAO,OAAQ,KAEnD,EACDk0P,+BAAgC,WAC5B,IAAIrmG,EAASx6L,KAAKqzP,SACbrzP,KAAK2sC,OAAO,wBAA0BkwB,EAAAA,EAAAA,qBAAkC29H,EAAO,IAChFj8H,EAAAA,EAAAA,QAAqBi8H,EAAQ,QAEpC,EACDumG,qBAAsB,SAAS93R,GACtBjJ,KAAK2sC,OAAO,aACb3sC,KAAKkiS,iBAAiB,EAAGj5R,EAAElI,OAASkI,EAE3C,EACD+3R,uBAAwB,SAAS/3R,GACxBjJ,KAAK2sC,OAAO,aACb3sC,KAAKkiS,kBAAkB,EAAGj5R,EAAElI,OAASkI,EAE5C,EACDi5R,iBAAkB,SAAStxO,EAAMymK,GAC7B,IAAIt7L,EAAO5D,WAAWn4B,KAAK2sC,OAAO,SAClC,GAAI,IAAM5Q,EAAV,CAGA,IAAI79B,EAAQi6B,WAAWn4B,KAAKyiS,yBAA2B,EACvDvkS,EAAQ8B,KAAK0iS,iBAAiBxkS,EAAO69B,EAAO60B,GAC5C,IAAI/tC,EAAM7iB,KAAK2sC,OAAO,OAClBlV,EAAMz3B,KAAK2sC,OAAO,QAClB0hB,EAAAA,EAAAA,IAAUxrC,KACV3kB,EAAQqL,KAAKkuB,IAAI5U,EAAK3kB,KAEtBmwD,EAAAA,EAAAA,IAAU52B,KACVv5B,EAAQqL,KAAKsZ,IAAI4U,EAAKv5B,IAE1B8B,KAAK8iP,sBAAsBzrB,GAC3Br3N,KAAK2sC,OAAO,QAASzuC,EAZpB,CAaJ,EACDwkS,iBAAkB,SAASxkS,EAAO69B,GAC9B,IAAI2uF,EAAQ,WACRi4K,EAAej4K,EAAMt0G,KAAKlY,GAC1B0kS,EAAcl4K,EAAMt0G,KAAK2lB,GAC7B,GAAI4mQ,GAAgBC,EAAa,CAC7B,IAAIC,EAAgBF,EAAej4K,EAAM17G,KAAK9Q,GAAO,GAAGyC,OAAS,EAC7DmiS,EAAeF,EAAcl4K,EAAM17G,KAAK+sB,GAAM,GAAGp7B,OAAS,EAC1DoiS,EAAWvB,GAAK/pQ,IAAIorQ,EAAeC,GAEvC,OADA5kS,EAAQ8B,KAAKgjS,OAAO9kS,EAAQ69B,EAAMgnQ,EAErC,CACD,OAAO7kS,EAAQ69B,CAClB,EACDinQ,OAAQ,SAAS9kS,EAAO2+E,GACpBA,EAAYA,GAAa,EACzB,IAAI2/B,EAAajzG,KAAKkZ,IAAI,GAAIo6D,GAG9B,OAFA3+E,GAASs+G,EACTt+G,EAAQqL,KAAKoZ,MAAMzkB,GAASs+G,CAE/B,EACD+7I,wBAAyB,WACrBv4P,KAAKmiD,WACL,IAAI8gP,EAAwBz/I,GAAa,WArMT,6BAsMhCjlF,EAAAA,EAAAA,IAAiBv+D,KAAKwM,UAAWy2R,GACjC1kO,EAAAA,EAAAA,GAAgBv+D,KAAKwM,UAAWy2R,EAAuBjjS,KAAKkjS,wBAAwBpmS,KAAKkD,MAC5F,EACDkjS,wBAAyB,WACrB,GAAI,WAAaljS,KAAK2sC,OAAO,QAA7B,CAGA,IAAI6tJ,EAASx6L,KAAKqzP,SACd+F,EAAiBp5P,KAAKsiS,4BAA4BtiS,KAAK2sC,OAAO,UAClE6tJ,EAAO/hK,IAAI,MACX+hK,EAAO/hK,IAAI2gO,EAJV,CAKJ,EACDT,yBAA0B,SAAS1vP,GAC/B,IAAIuxL,EAASx6L,KAAKqzP,SACdiM,EAAat/P,KAAKmjS,iBAClBjlS,EAAQ8B,KAAKojS,YAAY9jC,GACzB+jC,EAAiB,MAAQ/jC,GAAc,MAAQA,GAC/Ct/P,KAAKq2P,iBAAoBr2P,KAAKgiS,eAAe9jS,IAI7CmlS,GACArjS,KAAKmiD,SAASl5C,EAAG0yD,MAAMz9D,GAAS,KAAOA,GAE3C8B,KAAKsjS,sBAAsBhkC,EAAYphQ,GACvC8B,KAAK+hP,kBAAkBh1L,KAAK,CACxB7uD,MAAOA,EACPymP,OAAQ3kP,QATRw6L,EAAO/hK,IAAIz4B,KAAKsiS,4BAA4BpkS,GAWnD,EACDolS,sBAAuB,SAAShkC,EAAYx1K,GACxC,IAAIy5M,EAAoBvjS,KAAKwjS,mBAAmBlkC,GAC5CmkC,EAAiBzjS,KAAK0jS,gBAAgBpkC,GACrCikC,GAAsBE,GAAkB,OAAS35M,GAC9CpxD,OAAO4mO,KAAgBx1K,GACvB9pF,KAAKqzP,SAAS56N,IAAIz4B,KAAKsiS,4BAA4Bx4M,GAG9D,EACD65M,uBAAwB,SAASzlS,GAC7B,OAAOA,EAAM0D,QAAQ,IAAK,IAC7B,EACDgiS,gBAAiB,WACb,IAAIC,EAAe,WAAa7jS,KAAK2sC,OAAO,QACxCm3P,EAAgB9jS,KAAKqzP,SAASz5P,IAAI,GAAG08P,SACzC,OAAOutC,GAAgBC,GAAiBA,EAAcC,QACzD,EACD5tC,mBAAoB,SAASxvP,GACrB3G,KAAK4jS,mBAGT5jS,KAAKmiD,SAASx7C,EACjB,EACD68R,mBAAoB,SAAStlS,GACzB,MAAO,+BAA+BkY,KAAKlY,EAC9C,EACDwlS,gBAAiB,SAASxlS,GACtB,OAAO+9E,GAAQ/9E,EAAO8B,KAAK2sC,OAAO,OAAQ3sC,KAAK2sC,OAAO,OACzD,EACDq3P,UAAW,SAAS9lS,GAChB,OAAO,OAAS8B,KAAKojS,YAAYllS,EACpC,EACD8jS,eAAgB,SAAS9jS,GACrB,IAAIohQ,EAAat/P,KAAKmjS,iBAClBc,EAAejkS,KAAKq2P,gBACpBnmH,GAAU,EACVnmD,EAAW/pF,KAAKgkS,UAAU1kC,GAgB9B,OAfI3jM,MAAMjjC,OAAOx6B,MACbgyI,GAAU,IAEThyI,GAAS+lS,EACV/zJ,GAAU,EACFnmD,GAAak6M,IACrB/zJ,GAAU,GAEdlwI,KAAK2sC,OAAO,CACRujG,QAASA,EACTwoC,gBAAiBxoC,EAAU,KAAO,CAC9BqxH,gBAAgB,EAChBnnQ,QAAS4F,KAAK2sC,OAAO,0BAGtBujG,CACV,EACDuyJ,qBAAsB,WAClB,OAAOziS,KAAKojS,YAAYpjS,KAAKmjS,iBAChC,EACDA,eAAgB,WACZ,IAAIjlS,EAAQ8B,KAAKqzP,SAAS56N,MAAMl2B,OAChC,OAAOvC,KAAK2jS,uBAAuBzlS,EACtC,EACDklS,YAAa,SAASllS,GAClB,IAAI81B,EAASmE,WAAWj6B,GACxB,OAAIy9D,MAAM3nC,GACC,KAEJ4nD,GAAa5nD,EAAQh0B,KAAK2sC,OAAO,OAAQ3sC,KAAK2sC,OAAO,OAC/D,EACDqrN,YAAa,WACLh4P,KAAK4jS,oBACL5jS,KAAKqzP,SAAS56N,IAAI,IAClBz4B,KAAKgiS,kBAEThiS,KAAKmiD,UACR,EACD3b,MAAO,WACC,OAASxmC,KAAK2sC,OAAO,UACrB3sC,KAAK2sC,OAAO,OAAQ,IAChB3sC,KAAKqzP,SAAS1yP,QACdX,KAAK8zP,gBAGT9zP,KAAK2sC,OAAO,QAAS,KAE5B,EACDmzH,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,QACD4G,KAAKgiS,eAAepkS,EAAKM,OACzB8B,KAAK6lP,gBAAgBjoP,EAAKM,OAC1B8B,KAAKmiD,SAASvkD,GACdoC,KAAKuiP,2BACL,MACJ,IAAK,OACDviP,KAAK6zP,eACL,MACJ,IAAK,MACL,IAAK,MACD7zP,KAAK6zP,eACL7zP,KAAK2sC,OAAO,QAAS3sC,KAAKojS,YAAYpjS,KAAK2sC,OAAO,WAClD,MACJ,IAAK,kBACL,IAAK,sBACD3sC,KAAK81P,eAAe,CAAC,UACrB,MACJ,IAAK,sBACD,MACJ,QACI91P,KAAKmiD,SAASvkD,GAEzB,ICxUDsmS,GAA6B,oBAI7BC,GAAY,QAGZC,GDmUJ,GCnUoB1C,QAAsB,CACtC9jI,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BkiP,iBAAiB,EACjBxsO,OAAQ,MAEf,EACDysO,aAAc,SAAShiS,GACnB,MAAO,QAAUA,CACpB,EACDw0M,eAAgB,WACZ,OAAK92M,KAAK6+P,oBAGHp5M,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BoiP,MAAOvkS,KAAKwkS,YAAY1nS,KAAKkD,MAC7Bo+P,IAAKp+P,KAAKykS,eAAe3nS,KAAKkD,MAC9BikJ,UAAWjkJ,KAAKykS,eAAe3nS,KAAKkD,MACpCwtN,UAAWxtN,KAAK0kS,cAAc5nS,KAAKkD,MAvB3B,GAwBRytN,WAAYztN,KAAK0kS,cAAc5nS,KAAKkD,KAzB7B,GA0BPskJ,KAAMtkJ,KAAK2kS,iCAAiC7nS,KAAKkD,KA1B1C,GA2BPmkJ,MAAOnkJ,KAAK4kS,sBAAsB9nS,KAAKkD,MACvCkK,IAAKlK,KAAK2kS,iCAAiC7nS,KAAKkD,MA3BxC,KAiBDA,KAAKmiD,UAYnB,EACD0iP,uBAAwB,SAASl+R,GAC7B,IAAIw9C,EAAmBnwB,GAAAA,sBACnB8wQ,EAA+B7F,GAAsBj/R,KAAK2sC,OAAO,WAAWyyP,WAChF,OAAOC,GAAiB14R,EAAMw9C,EAAkB2gP,EACnD,EACDtrF,gBAAiB,SAASvwM,GACjBjJ,KAAKg5P,yBAAyB/vP,KAC/BjJ,KAAK+kS,oBACL/kS,KAAKi8P,cAAgB1mO,WAAW,WAC5Bv1B,KAAKi8P,mBAAgB,EACrB,IAAI5wP,EAAQrL,KAAKo6P,SACjB,GAAI/uP,EAAMkxB,QAAUlxB,EAAMnB,KAAOlK,KAAK6+P,mBAAoB,CACtD,IAAIl4P,EAAO3G,KAAKglS,eACZx5L,EAAwBxrG,KAAK6kS,uBAAuBl+R,GACpD6kG,GAAyB,EACzBxrG,KAAKo6P,OAAO,CACR79N,MAAOivE,EACPthG,IAAKshG,IAGTxrG,KAAK2kS,kCAlDT,EAkDyD17R,EAE5D,CACJ,EAACnM,KAAKkD,MAjDU,IAmDrBA,KAAKmiD,SAASl5C,EACjB,EACDywM,iBAAkB,SAASzwM,GACvB,IAAIg8R,GAAqBjlS,KAAKg5P,yBAAyB/vP,GACnDg8R,IACAjlS,KAAKklS,iBAAkB,EACnBllS,KAAK6+P,oBACL7+P,KAAK4kS,yBAGb5kS,KAAKmiD,SAASl5C,GACVg8R,IACAjlS,KAAKklS,iBAAkB,EAE9B,EACDC,qBAjEsC,SAiEjB7lC,GACjB,IAAIznM,EAAS73D,KAAKolS,oBACdlnS,EAAQ8B,KAAK2sC,OAAO,SAExB,OADgB3sC,KAAKk6G,QAAQh8G,EAAO25D,IAAW,MAC1BynM,CACxB,EACDslC,sBAAuB,WACnB,IAAItlC,EAAat/P,KAAKglS,eAClBhlS,KAAKmlS,qBAAqB7lC,KAC1Bt/P,KAAKqlS,qBACLrlS,KAAKslS,qBACLtlS,KAAKulS,wBACDvlS,KAAKwlS,eAAiBxlS,KAAK2sC,OAAO,UAClC4xB,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,UAG/C,EACDqxC,cAAe,SAAS3oQ,EAAM9yB,GAC1B,GAAKjJ,KAAK6+P,mBAAV,CAGA,IAAIl4P,EAAO3G,KAAKglS,eACZntO,EAAS73D,KAAKolS,oBACdK,EAAY3F,GAAmB9/R,KAAKo6P,SAAUr+N,IJpCzB,SAAS1wB,EAAO1E,EAAMkxD,GAEnD,IAAImoO,EAAaD,GADjB10R,EAAQy0R,GAAmBz0R,EAAO,GACW1E,EAAMkxD,GACnD,OAAOxsD,EAAMkxB,OAASyjQ,EAAWzjQ,OAASlxB,EAAMnB,KAAO81R,EAAW91R,GACrE,EIiCYw7R,CAAoBD,EAAW9+R,EAAMkxD,KACtC4tO,EAhGO,IAgGK1pQ,EAAwB0pQ,EAAUv7R,IAAMu7R,EAAUlpQ,MAC9DtzB,EAAEkzD,iBACFn8D,KAAKo6P,OAAO2lC,GAAqB0F,EAAW9+R,EAAMkxD,IAPrD,CASJ,EACD8tO,qBAAsB,SAAS/+Q,GAC3B,IAAIo5Q,EAAaT,GAAmBv/R,KAAKglS,eAAgBhlS,KAAKolS,qBAC1DjrC,EAAW2lC,GAvGJ,IAuGuBl5Q,EAA6Bo5Q,EAAWzjQ,MAAQyjQ,EAAW91R,IAAK,GAClGlK,KAAKo6P,OAAOD,EACf,EACDwqC,iCAAkC,SAAS/9Q,EAAW3d,IAC7CjJ,KAAK6+P,oBAAsB51P,GAAKA,EAAEipJ,WAGvClyJ,KAAK2lS,qBAAqB/+Q,GAC1B3d,GAAKA,EAAEkzD,iBACV,EACDypO,iBAAkB,SAASj/R,EAAM0E,GAC7B,IAAI84C,EAAmBnwB,GAAAA,sBACnB6xQ,EAAyBl/R,EAAKsV,OAAO5Q,EAAMnB,OAASi6C,EAExD,OADmBnkD,KAAK8lS,WAAa3hP,GAAoB,MAAQnkD,KAAK8lS,UAAY,MAAQ9lS,KAAK8lS,WAAaD,CAE/G,EACDb,aAAc,WACV,OAAOhxQ,GAAAA,cAAqBh0B,KAAKqzP,SAAS56N,OAAO,EACpD,EACDyhL,iBAAkB,SAASjxM,GAIvB,GAHAjJ,KAAK+kS,oBACL/kS,KAAK8lS,SAAW9xQ,GAAAA,cAAqB0yH,GAAQz9I,IAAI,GACjDjJ,KAAK+lS,aAAez/I,GAAiBr9I,IAChCjJ,KAAKgmS,iBAAiB/8R,EAAEi5D,eACzB,OAAOliE,KAAKmiD,SAASl5C,GAEzB,IAAIg9R,EAAiBjmS,KAAKglS,eACtB35R,EAAQrL,KAAKo6P,SACb8rC,EAAclmS,KAAK+lS,eAAiB5B,GAAY,GAAKnkS,KAAK8lS,SAC1Dj9P,EAAW7oC,KAAKmmS,UAAUF,EAAgB56R,EAAO66R,GAYrD,OAXIlmS,KAAK4lS,iBAAiBK,EAAgB56R,KACtCrL,KAAKghQ,WAAW,GAChB/3P,EAAEi5D,cAAc/F,uBAEhB,IAAWtzB,EACP7oC,KAAK+lS,eAAiB5B,IACtBl7R,EAAEi5D,cAAc/F,iBAGpBn8D,KAAKwlS,aAAe38P,EAEjB7oC,KAAKmiD,SAASl5C,EACxB,EACDivP,iBAAkB,SAASjvP,GAClBjJ,KAAK6+P,oBACN7+P,KAAKmiD,SAASl5C,EAErB,EACDw7R,eAAgB,SAASx7R,GACrB,IAAIoC,EAAQrL,KAAKo6P,SACbzzP,EAAO3G,KAAKglS,eACZzoQ,EAAQlxB,EAAMkxB,MACdryB,EAAMmB,EAAMnB,IAChBlK,KAAK8lS,SAAWp/I,GAAQz9I,GACxBjJ,KAAK+lS,aAAez/I,GAAiBr9I,GACrC,IAAIm9R,EAAcpmS,KAAKskS,aAAatkS,KAAK+lS,cACrCM,GAAkBD,EACtB,GAAI7pQ,IAAUryB,EAAK,CAGf,KADgBm8R,GADI9pQ,EAC8B,GAAK6pQ,GADnC7pQ,EACkE51B,EAAKhG,QAMvF,YADAsI,EAAEkzD,iBAHFiqO,GAAel8R,IACfm8R,GAAkB9pQ,GAKzB,CACD,IAAIu0B,EAAOnqD,EAAK5B,MAAMw3B,EAAOryB,GAC7B,GAAIlK,KAAKsmS,QAAQx1O,GAAjB,CACI9wD,KAAKghQ,WAAWolC,EAAc,GAAK,IAC/BpmS,KAAKwlS,aAAe,GAAK,EAAIxlS,KAAKwlS,gBAAiB,OACnDxlS,KAAKwkS,YAAYv7R,GACjBjJ,KAAKulS,wBACyBvlS,KAAK2sC,OAAO,oBAAoBtqC,MAAM,KAAKkD,SAAS,UAE9Eg5D,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,UAG5CpqP,EAAEkzD,gBAEL,KAZD,CAaA,IAAIhY,EAAmBnwB,GAAAA,sBACvB,GAAI88B,IAAS3M,EAAb,CAQA,GAAIj6C,EAAMqyB,EAAQ51B,EAAKhG,OAMnB,GALiBX,KAAKkgQ,qBAAqBv5P,EAAM,CAC7C41B,MAAOA,EACPryB,IAAKA,GACN,IACuBJ,OAAO,SAAW,GAC5B9J,KAAK0jS,gBAAgB,GAEjC,YADA1jS,KAAKwlS,aAAexlS,KAAKwlS,aAAe,GAAK,EAAIxlS,KAAKwlS,gBAAiB,KAAU,EAAI,GAI7F,IAAIe,EAAqBvmS,KAAKmmS,UAAUx/R,EAAM,CAC1C41B,MAAOA,EACPryB,IAAKA,GACN,SACC,IAAWq8R,EACXt9R,EAAEkzD,iBAEFn8D,KAAKwlS,aAAee,CAnBvB,KAPD,CACI,IAAI/6L,EAAwB7kG,EAAKvF,QAAQ+iD,GACrCnkD,KAAKwmS,gBAAgBh7L,EAAwB,KAC7CxrG,KAAKghQ,WAAWolC,EAAc,GAAK,GACnCn9R,EAAEkzD,iBAGT,CATA,CA8BJ,EACDsqO,iBAAkB,WAGd,OAAQ,IAFKzmS,KAAKolS,oBACWxjS,QAAQ,WAAY,IACnBR,QAAQ,IACzC,EACDslS,OAAQ,SAAS//R,EAAMkxD,GACnB,IAAI8uO,EAAe3mS,KAAK2sC,OAAO,UAC3Bi6P,GAAiB/3O,EAAAA,EAAAA,IAAW83O,EAAalvN,QACzCA,EAASmvN,EAAiBD,EAAalvN,OAASzjD,GAAAA,MAChD6yQ,EAAwB,EAC5B,IAAKD,EAAgB,CACjB,IAAIE,EAAmB7H,GAAsBpnO,GAAQ12D,MACjD4lS,EAAiB/mS,KAAK6kS,uBAAuBl+R,GAC7CqgS,GAA2B,IAAMF,EAAmBA,EAAmBjvO,EAAOl3D,OAC9EsmS,GAAyB,IAAMF,EAAiBA,EAAiBpgS,EAAKhG,OACtEsmS,EAAwBD,IAA4B,IAAMnvO,EAAOz2D,QAAQ,OACzEylS,EAAwBI,EAAwBD,EAEvD,CAED,OAAOvvN,EADP9wE,EAAOA,EAAK3B,OAAO6hS,GACChvO,EACvB,EACDqiD,QAAS,SAASh8G,EAAO25D,GACrB,IAAI8uO,EAAe3mS,KAAK2sC,OAAO,UAC3Bu6P,GAAmB,OAASP,QAAgB,IAAWA,OAAe,EAASA,EAAa1+M,YAAc0+M,EAC1G1+M,GAAYp5B,EAAAA,EAAAA,IAAWq4O,GAAmBA,EAAkBlzQ,GAAAA,OAEhE,OADqB,OAAS91B,EAAQ,GAAK+pF,EAAU/pF,EAAO25D,EAE/D,EACDutO,kBAAmB,WAIf,OAHKplS,KAAKmnS,gBACNnnS,KAAKonS,gBAEFpnS,KAAKmnS,cACf,EACDC,cAAe,WAAW,WAClBvvO,EAAS73D,KAAK2sC,OAAO,UACrBi6P,GAAiB/3O,EAAAA,EAAAA,IAAW,OAASgJ,QAAU,IAAWA,OAAS,EAASA,EAAO4f,QACnF4vN,GAAgB32O,EAAAA,EAAAA,IAASmH,KAAYA,EAAOz2D,QAAQ,MAAQ,GAAKy2D,EAAOz2D,QAAQ,MAAQ,GACxFkmS,EAAsB,gBAAkBzvO,GAAU,iBAAmB,OAASA,QAAU,IAAWA,OAAS,EAASA,EAAOxyD,MAC5HkiS,EAAsBX,GAAkBS,GAAiBC,EAC7DtnS,KAAKmnS,eAAiBI,EAAsB1vO,EvOpG7C,SAAmBowB,GACtB,IAAIgjB,EAAY,IACZF,EAAY9iB,EAAU,GAAG7mF,QAAQ,QAAU,EAC/C6pG,EAAYD,GAAiBC,EAAWhjB,EAAW8iB,GAAW,GAE9D,IAAIy8L,EAAiBl8L,GADrBL,EAAYD,GAAiBC,EAAWhjB,EAAW8iB,GAAW,GACT9iB,EAAW8iB,GAAW,GACvE08L,EAAiBn8L,GAAqBL,EAAWhjB,EAAW8iB,GAAW,GAC3E,OAAO08L,IAAmB,IAAMD,EAAiBA,EAAiBA,EAAiB,IAAMC,CAC5F,CuO4F4DC,EAAc,SAAAxpS,GAC/D,IAAIyI,EAAO,EAAKuzG,QAAQh8G,EAAO25D,GAC/B,OAAO7jC,GAAAA,cAAqBrtB,GAAM,EACrC,GACJ,EACDghS,kBAAmB,SAAShhS,GACxB,IAAIkxD,EAAS73D,KAAKolS,oBAClB,IAAI10O,EAAAA,EAAAA,IAASmH,GAAS,CAClB,IAAIgmD,EAAYhmD,EAAOx1D,MAAM,KACzBuuD,EAAO58B,GAAAA,QAAertB,EAAMkxD,GAEhC,OADAgmD,EAAU,GAAKA,EAAU,IAAM,IAAMA,EAAU,GACxCjtD,EAAO,EAAIitD,EAAU,GAAKA,EAAU,EAC9C,CAEG,OADY7pF,GAAAA,QAAertB,GACZ,EAAI,IAAM,EAEhC,EACDihS,aAAc,SAASjhS,EAAMkhS,GACzB,IAAIhwO,EAAS73D,KAAK2nS,kBAAkBhhS,GAChCy9C,EAAqBpwB,GAAAA,wBACrB8zQ,EAAQ9nS,KAAK+nS,UAAUlwO,GACvBr0D,EAASmD,EACb,GAAImhS,EAAMnnS,OAAQ,CACd,IAAIqnS,EAAcF,EAAM,GACpBG,EAAe,IAAIrwQ,OAAO,KAAM05B,EAAAA,GAAAA,cAAaw2O,EAAM,IAAM,IAAM,KAAM,KACrEI,EAAkB,IAAItwQ,OAAO,MAAO05B,EAAAA,GAAAA,cAAau2O,EAAe,GAAKzjP,GAAsB,IAAK,KACpG5gD,EAASA,EAAO5B,QAAQomS,EAAa,IAAIpmS,QAAQqmS,EAAc,IAAIrmS,QAAQsmS,EAAiB,GAC/F,CACD,OAAO1kS,CACV,EACDukS,UAAW,SAASlwO,GAChB,IAAI6rD,EAAe,iBAAiB10G,KAAK6oD,GACrCluD,EAAU+5G,GAAgBA,EAAa,GAAGnhH,OAC9C,OAAOs1D,EAAOx1D,MAAMsH,GAAS5F,KAAK,SAASokS,GACvC,OAAOA,EAAKvmS,QAAQ,KAAM,GAC7B,GACJ,EACDwmS,qBAAsB,SAASlqS,EAAOmqS,GAClC,IAAIh6O,EAAAA,EAAAA,IAAUnwD,GAAQ,CAClB,IAAIoqS,EAAWpqS,EAAMZ,WACjBkuG,EAAwB88L,EAASlnS,QAAQ,KAC7C,GAAIknS,GAAY98L,GAAyB,EAAG,CACxC,IAAI1hB,EAAc3xD,WAAWmwQ,EAAStjS,OAAO,EAAGwmG,EAAwB68L,EAAe,IACvF,OAAO1sO,MAAMmuB,GAAe5rF,EAAQ4rF,CACvC,CACJ,CACD,OAAO5rF,CACV,EACDioS,UAAW,SAASx/R,EAAM0hD,EAAWyI,GACjC,IAAIy3O,EAAavoS,KAAKkgQ,qBAAqBv5P,EAAM0hD,EAAWyI,GACxD+G,EAAS73D,KAAKolS,oBACdoD,EAAiBngP,EAAU9rB,QAAU8rB,EAAUn+C,IAC/C4/E,EAAc9pF,KAAKyoS,gBAAgBF,EAAY1wO,GAC/CwwO,GAAgBxwO,EAAO4f,QAAUz3E,KAAK0oS,oBAAoBH,GAAY9wQ,IACtEkxQ,EAAiB7+M,IAAgB9pF,KAAKwlS,aAEtCoD,EAA2B93O,IADR98B,GAAAA,uBACqC,IAAMq0Q,EAC9DQ,GAA2BL,IAAmBG,GAvT9C,MAuTgE73O,IAAmB9wD,KAAKwjS,mBAAmB+E,IAAevoS,KAAKsmS,QAAQx1O,GAC3I,IAAI83O,IAA4BC,IAG5B,KAAO7oS,KAAK4nS,aAAaW,KACzBz+M,EAAcvgF,KAAKD,IAAI,EAAItJ,KAAKwlS,gBAEhC7pO,MAAMmuB,IAAV,CAGA,IL1U0BgiK,EAAUjvK,EK0UhC3+E,EAAQ,OAAS4rF,EAAc9pF,KAAKwlS,aAAe17M,EAEvD,OADAA,EAAcu+M,EAAeroS,KAAKooS,qBAAqBlqS,EAAOmqS,GAAgBv+M,GACtEjyB,EAAO4f,QAAUz3E,KAAKymS,oBL5UM5pN,EK4U+CwrN,GL5UzDv8C,EK4U4ChiK,IL3UvDpN,GAAOovK,EAAW,IAAKjvK,IK2U6DiN,CAHlG,CAIJ,EACD2+M,gBAAiB,SAAS9hS,EAAMkxD,GAC5B,IAAIjH,EAAO58B,GAAAA,QAAertB,GAAO,OAASkxD,QAAU,IAAWA,OAAS,EAASA,EAAOowB,YAAcpwB,GAClGixO,EAAmB9oS,KAAK4nS,aAAajhS,GAAM,GAC3CmjF,EAAc9pF,KAAK0mS,OAAOoC,EAAkBjxO,GAC5CkxO,EAAkBj/M,EAAc,GAAK,EAAI,EAE7C,OAD0BpxB,EAAAA,EAAAA,IAAUoxB,IAAgBl5B,IAASm4O,EAAkBn4O,EAAOk5B,EAAcA,CAEvG,EACD05M,mBAAoB,SAAS78R,GACzB,IAAK3G,KAAK6+P,mBACN,OAAO7+P,KAAKmiD,SAASx7C,GAEzB,IAAI0E,EAAQrL,KAAKo6P,SACb4uC,EAAQh1Q,GAAAA,sBACRi1Q,EAAajpS,KAAK6kS,uBAAuBl+R,GACzCuiS,EAAiBD,GAAc,GAAKA,EAAa59R,EAAMkxB,MACvD4sQ,EAAYnpS,KAAK4nS,aAAajhS,GAAM,GAAMtE,MAAM2mS,GACpD,IAAKE,GAAkB,IAAMC,EAAUxoS,OACnC,OAAO,EAEX,IAAIyoS,EAAcD,EAAU,GAAGxoS,OAE3BimS,IADS5mS,KAAKolS,oBACY3tN,OAC1BoF,GAAa+pN,GAAkB5mS,KAAK0oS,oBAAoB1oS,KAAKolS,oBAAqBz+R,GAClF0iS,IAAqBzC,GAAwB3qN,GAAQmtN,EAAavsN,EAAUh6D,IAAKg6D,EAAUplD,KAC3F6xQ,EAAe,MAAQH,EAAU,GAAGltR,OAAOmtR,EAAc,GAC7D,OAAOC,IAAuBC,IAAiBF,EAClD,EACD1F,gBAAiB,SAASxlS,GACtB,IAAI2kB,GAAMurC,EAAAA,GAAAA,eAAcpuD,KAAK2sC,OAAO,QAAQ,KACxClV,GAAM22B,EAAAA,GAAAA,eAAcpuD,KAAK2sC,OAAO,OAAQ,KAC5C,OAAOsvC,GAAQ/9E,EAAO2kB,EAAK4U,EAC9B,EACD8xQ,cAAe,SAAS5iS,GACpB,IAAIs/R,EAAiBjyQ,GAAAA,cAAqBrtB,GAAM,GAC5CwzP,EJ5UqB,SAASxzP,EAAM6iS,EAAWn+R,EAAOwsD,GAC9DxsD,EAAQy0R,GAAmBz0R,EAAO,GAClC,IAAI29R,EAAQh1Q,GAAAA,sBACRy1Q,EAsBR,SAAgC9iS,GAC5B,OAAO,IAAMA,EAAKhG,UAAYgG,EAAKsI,MAAM,gBAC5C,CAxB8By6R,CAAuB/iS,GAC9Cm+R,EAA+B7F,GAAsBpnO,GAAQunO,WAC7DuK,EAAgBF,EAAuB,EAAIpK,GAAiB14R,EAAMqiS,EAAOlE,GACzE8E,EAAmBvK,GAAiBmK,EAAWR,EAAOlE,GACtDqE,EAAY7J,GAAa34R,EAAMgjS,GAC/BE,EAAiBvK,GAAakK,EAAWI,GAE7C,IADsB,IAAMD,GAAiBt+R,EAAMkxB,MAAQotQ,EACvC,CAChB,IAAIG,EAAgBz+R,EAAMkxB,MAAQotQ,EAAgB,EAC9CI,EAAerK,GAA0BoK,EAAeX,EAAU,IAEtE,OAAOpJ,GADW8J,EAAe,GAAKD,EAAmB,EAAIhK,GAAyBmK,EAAcF,EAAe,IAAM,EAAIL,EAAU7oS,OAC9F6oS,EAAW3xO,EACvD,CACG,IAAImyO,EA/BsB,SAASrjS,GACvC,OAAOA,EAAK/E,QAAQ,YAAa,GACpC,CA6B8BqoS,CAA4BJ,EAAe,IAC9DK,EAAkBf,EAAU,GAAGxoS,OAAS0K,EAAMkxB,MAC9C4tQ,EAAgBzK,GAA0BwK,EAAiBvK,GAAawJ,EAAU,KAClFiB,EAAqBxK,GAAyBuK,EAAexK,GAAaqK,IAE9E,OAAOjK,GADoBiK,EAAiBrpS,QAAUypS,EAAqB,GACzBZ,EAAW3xO,EAEpE,CIqTsBwyO,CAAoBrqS,KAAKglS,eAAgBiB,EAAgBjmS,KAAKo6P,SAAUp6P,KAAKolS,qBAC5FplS,KAAKqzP,SAAS56N,IAAI9xB,GAClB3G,KAAKo2P,+BACLp2P,KAAKsqS,gBAAkB3jS,EAClB3G,KAAKklS,iBACNllS,KAAKo6P,OAAOD,EAEnB,EACD0E,iBAAkB,WACd,QAAS7+P,KAAK2sC,OAAO,WAAa3sC,KAAK2sC,OAAO,kBACjD,EACDgnN,iBAAkB,WACd,IAAI42C,EAAe,WAAavqS,KAAK2sC,OAAO,QACxCuoC,EAAY,YAAc8C,GAAAA,OAAe1D,WACzCt0E,KAAK6+P,oBAAsB0rC,EAC3BvqS,KAAK45P,cAAc1kL,GAAal1E,KAAK8hS,sBAAwB,OAAS,OAEtE9hS,KAAKmiD,UAEZ,EACDqoP,QAAS,SAAS9oS,GACd,OAAOgvD,EAAAA,EAAAA,IAAShvD,IAAQ,IAAMA,EAAIf,MACrC,EACDqgQ,WAAY,SAAS/zP,GACjB,GAAKA,EAAL,CAGA,IACIo/O,EAAgB0zC,GADLD,GAAmB9/R,KAAKo6P,SAAUntP,GACEjN,KAAKglS,eAAgBhlS,KAAKolS,qBAC7EplS,KAAKo6P,OAAO/N,EAHX,CAIJ,EACD25C,iBAAkB,SAAS/8R,GACvB,IAAIq8J,EAAUhf,GAAiBr9I,GAC3BwhS,EAAgB5jJ,GAAoB59I,IAAMA,EAAEurB,QAAUvrB,EAAEipJ,WAAalyJ,KAAKwqS,QAAQllI,GAClFolI,EAAaplI,IAAY6+H,GAE7B,OADsBnkS,KAAK6+P,qBACA4rC,IAAkBC,CAChD,EACDh3C,aAAc,WACV1zP,KAAKmiD,WACLniD,KAAK2qS,kBACR,EACDA,iBAAkB,WACd3qS,KAAKi2F,cACLj2F,KAAK4qS,yBACD5qS,KAAK6+P,oBACL7+P,KAAK6qS,wBAEZ,EACDD,uBAAwB,WACpBrsO,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAU,qBACnC,EACDy3C,kBAAmB,SAAS7hS,GACxB,IAAIgiJ,EAAYhiJ,EAAEi5D,eAAiBj5D,EAAEi5D,cAAc+oF,UACnD,OAAI58F,EAAAA,EAAAA,IAAU48F,GACH,oBAAsBA,EAEtBjrJ,KAAK+qS,cAEnB,EACDF,uBAAwB,WACpB,IAAIrwG,EAASx6L,KAAKqzP,SAClB90L,EAAAA,EAAAA,GAAgBi8H,EAAQh3C,GApad,QAoawC0gJ,IAA6B,SAASj7R,GACpFjJ,KAAKgrS,aAAa/hS,GAClBjJ,KAAK+qS,gBAAiB,CACzB,EAACjuS,KAAKkD,OACPu+D,EAAAA,EAAAA,GAAgBi8H,EAAQh3C,GAAa,UAAW0gJ,IAA6B,WACpElkS,KAAKi8P,gBACNj8P,KAAKi8P,cAAgB1mO,WAAW,WAC5Bv1B,KAAKi8P,mBAAgB,EACrBj8P,KAAKo6P,OAAO2lC,GAAqB//R,KAAKo6P,SAAUp6P,KAAKglS,eAAgBhlS,KAAKolS,qBAC7E,EAACtoS,KAAKkD,MA5aM,GA8apB,EAAClD,KAAKkD,OACPu+D,EAAAA,EAAAA,GAAgBi8H,EAAQ,aAAc,WAClCx6L,KAAK+kS,mBACR,EAACjoS,KAAKkD,MACV,EACD+kS,kBAAmB,WACfzvQ,aAAat1B,KAAKi8P,eAClBj8P,KAAKi8P,mBAAgB,CACxB,EACDinC,wBAAyB,WACrB,IAAKljS,KAAK6+P,mBACN,OAAO7+P,KAAKmiD,UAEnB,EACDqkP,gBAAiB,SAASrlS,GACtB,IAAIwF,EAAO3G,KAAKglS,eAAejgS,MAAM5D,GACrC,OAAOwF,IAAS3G,KAAKsmS,QAAQ3/R,GAAM,EACtC,EACD2/R,QAAS,SAAS5kS,EAAKgvD,GACnB,IAAIu6O,GAA0B35O,EAAAA,GAAAA,cAAat9B,GAAAA,uBAG3C,OADiB,IAAI4D,OADF,SAAWqzQ,EAA0B,MACd,KACxB70R,KAAK1U,KAASgvD,GAAY1wD,KAAKwqS,QAAQ9oS,GAC5D,EACD0hS,YAAa,SAASz8R,GAClB,OAAK3G,KAAK6+P,mBAGH7+P,KAAKwlS,aAFDxlS,KAAKmiD,SAASx7C,EAG5B,EACD+hS,oBAAqB,SAAS/hS,GAC1B,IAAI81R,EAAgBz8R,KAAK2nS,kBAAkBhhS,GACvCukS,EAAqBjM,GAAsBxC,GAAet7R,MAC1DgqS,GAAa7L,GAAa7C,EAAeyO,GAAoB,IAAM,IAAItpS,QAAQ,SAAU,IAG7F,MAAO,CACHihB,IAHesoR,EAAUvpS,QAAQ,UAAW,MAAMjB,OAIlD82B,IAHe0zQ,EAAUxqS,OAKhC,EACD6jS,YAAa,SAASv7R,GAClB,GAAKjJ,KAAK6+P,mBAAV,CAGA,IAAIxzP,EAAQrL,KAAKo6P,SACjB,GAAI/uP,EAAMkxB,QAAUlxB,EAAMnB,IAAK,CAC3B,GAAIo8I,GAAiBr9I,KAAOk7R,GAExB,YADAnkS,KAAKorS,mBAAmBniS,EAAGoC,GAAO,GAGlCrL,KAAKo6P,OAAO2lC,GAAqB,EAAG//R,KAAKglS,eAAgBhlS,KAAKolS,qBAErE,CACDplS,KAAKorS,mBAAmBniS,EAAGoC,EAV1B,CAWJ,EACD+/R,mBAAoB,SAASniS,EAAGoC,EAAOggS,GACnC,IAAIxiQ,GAAY,GAAIulB,EAAAA,GAAAA,eAAcpuD,KAAKwlS,aAAc,MACrD,IAAIxlS,KAAK0jS,gBAAgB76P,IAAa,IAAMA,KACxC7oC,KAAKwlS,aAAe38P,EAChBwiQ,GAAsB,CACtB,IAAIxzO,EAAS73D,KAAKolS,oBACdxkC,EAAe5gQ,KAAKglS,eACxBhlS,KAAKulS,wBACLt8R,EAAEkzD,iBACF,IAAImvO,EAActrS,KAAKglS,eACnB/3R,EJ7aQ,SAAS2zP,EAAc2qC,EAAS1zO,GACxD,IAAI2zO,EAAqBjM,GAAmB3+B,EAAc/oM,GAE1D,OADoB0nO,GAAmBgM,EAAS1zO,GAC3Bt7B,MAAQivQ,EAAmBjvQ,KACnD,CIya4BkvQ,CAAe7qC,EAAc0qC,EAAazzO,GAEnD6zO,EAAoB3L,GADxB10R,EAAQy0R,GAAmBz0R,EAAO4B,GACkBq+R,EAAazzO,GACjE73D,KAAKo6P,OAAOsxC,EACf,CAER,EACDC,qBAAsB,SAAShlS,EAAM0E,GAEjC,OADqBrL,KAAK+lS,eAAiB5B,IA3fvC,MA2foDx9R,EAAKsV,OAAO5Q,EAAMkxB,MAAQ,GAC1Dv8B,KAAKkgQ,qBAAqBv5P,EAAM,CACpD41B,MAAOlxB,EAAMkxB,MAAQ,EACrBryB,IAAKmB,EAAMkxB,OACZ,IAAM51B,CACZ,EACD4+R,sBAAuB,WACnB,IAAI1tO,EAAS73D,KAAKolS,oBACdh3R,EAASpO,KAAKojS,cACdoG,EAAYxpS,KAAKk6G,QAAQ9rG,EAAQypD,IAAW,GAChD73D,KAAKupS,cAAcC,EACtB,EACDwB,aAAc,SAAS/hS,GACnB,IAAIg9R,EAAiBjmS,KAAKglS,eACtB35R,EAAQrL,KAAKo6P,SACbwxC,EAAmB5rS,KAAK2rS,qBAAqB1F,EAAgB56R,GAC7DwgS,EAAkBD,IAAqB3F,EAE3C,GADAA,EAAiB2F,GACZ5rS,KAAK8qS,kBAAkB7hS,IAAMjJ,KAAKwjS,mBAAmBoI,GAKtD,OAJA5rS,KAAKsqS,gBAAkBrE,OACnB4F,GACA7rS,KAAKulS,yBAKb,GADqBvxQ,GAAAA,cAAqBh0B,KAAKsqS,iBAAiB,KAAUrE,EACtD,CAChB,IAAI/nS,EAAQ8B,KAAKmmS,UAAUF,EAAgB56R,EAAO,KAC9CgjD,EAAAA,EAAAA,IAAUnwD,KACV8B,KAAKwlS,aAAetnS,EAE3B,CACD8B,KAAKulS,uBACR,EACDpvC,mBAAoB,WACZn2P,KAAK6+P,mBACL7+P,KAAKo2P,+BAELp2P,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAEjC,EACDg8O,aAAc,WAKV,OAJI9zP,KAAK6+P,qBACL7+P,KAAKwlS,aAAexlS,KAAK2sC,OAAO,SAChC3sC,KAAKulS,yBAEFvlS,KAAKmiD,UACf,EACDkjP,mBAAoB,WAChB,IAAI/lC,EAAat/P,KAAKglS,eACtBhlS,KAAKwlS,aAAexlS,KAAKmmS,UAAU7mC,EAAYt/P,KAAKo6P,SACvD,EACDkrC,mBAAoB,WAChB,GAAKtlS,KAAK6+P,mBAAV,CAGA,IACI/0K,EADc9pF,KAAK4nS,aAAa5nS,KAAKglS,gBACThlS,KAAKojS,cAAgB,MAChD1qO,EAAAA,EAAAA,IAAUoxB,GAIf9pF,KAAKwlS,aAAe5pN,GAAakO,EAAa9pF,KAAK2sC,OAAO,OAAQ3sC,KAAK2sC,OAAO,QAH1E3sC,KAAKwlS,aAAe17M,CAJvB,CAQJ,EACD6uK,yBAA0B,SAAS1vP,GAC/B,IAAKjJ,KAAK6+P,mBACN,OAAO7+P,KAAKmiD,SAASl5C,GAEzB,IAAIoC,EAAQrL,KAAKo6P,SACjBp6P,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAK8lS,SAAW,KAChB9lS,KAAK+lS,aAAe,KACpB/lS,KAAKqlS,qBACLrlS,KAAKslS,qBACLtlS,KAAK2sC,OAAO,QAAS3sC,KAAKwlS,cACtBn6R,GACArL,KAAKo6P,OAAO/uP,EAEnB,EACDy0J,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,SACL,IAAK,kBACD4G,KAAK2zP,mBACL3zP,KAAKonS,gBACLpnS,KAAK2qS,mBACL3qS,KAAK8zP,eACL9zP,KAAKg0P,2BACLh0P,KAAKi4P,iBACL,MACJ,IAAK,MACL,IAAK,MACDj4P,KAAKslS,qBACLtlS,KAAKmiD,SAASvkD,GACd,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,EACDq4F,YAAa,kBACFj2F,KAAKsqS,uBACLtqS,KAAK8lS,gBACL9lS,KAAK+lS,oBACL/lS,KAAKwlS,oBACLxlS,KAAKklS,gBACZ5vQ,aAAat1B,KAAKi8P,sBACXj8P,KAAKi8P,aACf,EACD3yF,OAAQ,WACJtpK,KAAKi2F,cACLj2F,KAAKmiD,UACR,IAEL,MCzpBAqwH,GAAkB,cAAe4xH,IACjC,ICFA,GDEA,GEWI0H,GAAe,SAAS/oE,GACxB,OAAQA,EAAQxtI,OAHE,IAG0BwtI,EAAQn+N,IACvD,EACGmnS,GAAa,SAASC,GACtB,MAAO,CACHz2M,MAAOy2M,GAPO,GAQdpnS,KAPa,QAOPonS,EAEb,EACGC,GAAsB/zE,GAAAA,QAAqB,CAC3Cg0E,eAAgB,WACZ,OAAOlsS,KAAKo4N,kBAAkB9E,iBAAiBt3N,KAAK,iBACvD,EACDmwS,mBAAoB,SAASC,GACzB,OAAOA,EAAOpwS,KAAK,gBACtB,EACDq8N,mBAAoB,SAAS/8E,GACzB,IAAIj9F,EAASr+C,KAAKo4N,kBAAkBzrL,OAAO,SACvCxrC,GAAQ,EACZ,QAAKm6I,IAGDA,EAASp1F,OAASo1F,EAASp1F,MAAMvlD,SACjC26I,EAAWA,EAASp1F,MAAM,KAE9B2G,EAAAA,EAAAA,IAAKxO,GAAS,SAASm6F,EAAYjjD,GAC/B,QAAKA,EAAMrvC,SAGX2G,EAAAA,EAAAA,IAAK0oC,EAAMrvC,OAAQ,SAASuyF,EAAW7zI,GACnC,OAAIA,IAAS02I,IAGbn6I,EAAQ,CACJo0F,MAAOijD,EACP5zI,KAAM6zI,IAEH,EACV,KACGt3I,QAAJ,EAGH,IACMA,EACV,EACDm3N,mBAAoB,SAASn3N,GACzB,IAAI+kD,EAAQlmD,KAAKo4N,kBAAkBzrL,OAAO,SAC1C,OAAI+rB,EAAAA,EAAAA,IAAUv3D,GACHnB,KAAKy4N,cAAct3N,GAEvBA,GAAS+kD,EAAM/kD,EAAMo0F,QAAUrvC,EAAM/kD,EAAMo0F,OAAOrvC,MAAM/kD,EAAMyD,OAAS,IACjF,EACD6zN,YAAa,WAGT,IAFA,IAAI3oI,EAAc,GACd5pC,EAAQlmD,KAAKo4N,kBAAkBzrL,OAAO,SACjChkC,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAC1Bu9C,EAAMv9C,IAAMu9C,EAAMv9C,GAAGu9C,MACrB4pC,EAAcA,EAAY7/E,OAAOi2C,EAAMv9C,GAAGu9C,OAE1C4pC,EAAY1vF,KAAK8lD,EAAMv9C,IAG/B,OAAOmnF,CACV,EACD8pI,kBAAmB,SAASz4N,GACxB,IAAI4hO,EAAUgpE,GAAW5qS,GACTnB,KAAKo4N,kBAAkBzrL,OAAO,SAASo2L,EAAQxtI,OAAOrvC,MAC5D7kD,OAAO0hO,EAAQn+N,KAAM,EAClC,EACD2zN,eAAgB,SAASryK,GACrB,IACIv9C,EADAozN,EAAa,GAEjB,IAAKpzN,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IACtBu9C,EAAMv9C,IAAMu9C,EAAMv9C,GAAGu9C,MACrB61K,EAAaA,EAAW9rN,OAAOi2C,EAAMv9C,GAAGu9C,OAExC61K,EAAW37N,KAAK8lD,EAAMv9C,IAG9B,IAAInF,EAAS,GACb,IAAKmF,EAAI,EAAGA,EAAIozN,EAAWp7N,OAAQgI,IAC/BnF,EAAOpD,KAAKJ,KAAKo4N,kBAAkBnoI,MAAM8rI,EAAWpzN,KAExD,OAAOnF,CACV,EACDy1N,cAAe,SAAS32N,EAAK4jD,GACzB,IAAI7H,EAAS6H,GAASlmD,KAAKo4N,kBAAkBzrL,OAAO,SAChDxrC,GAAS,EACTsuD,EAAOzvD,KAmBX,OAlBA6sD,EAAAA,EAAAA,IAAKxO,GAAS,SAASm6F,EAAYjjD,GAC/B,GAAKA,EAAMrvC,MAaX,OAVA2G,EAAAA,EAAAA,IAAK0oC,EAAMrvC,OAAQ,SAASuyF,EAAW7zI,GACnC,IAAI2gO,EAAU91K,EAAK2oK,kBAAkBnoI,MAAMrrF,GAC3C,GAAI6qD,EAAKopK,WAAW0M,EAASjjO,GAKzB,OAJAnB,EAAQ,CACJo0F,MAAOijD,EACP5zI,KAAM6zI,IAEH,CAEd,KACI,IAAMt3I,QAAX,CAGH,IACMA,CACV,EACDkrS,WAAY,SAASnmP,GACjB,IACIqvC,EADiBv1F,KAAKo4N,kBAAkBrvH,gBACjBxT,QAC3B,OAAIA,EACOM,GAAAA,eAA2BZ,GAAM/uC,GAAQ,CAC5CqvC,MAAOA,IACR7nB,UAEA1tE,KAAKo4N,kBAAkBzrL,OAAO,QACxC,EACD6rL,eAAgB,SAASx5N,EAAMknD,GAAO,WAC9B1iD,EAAS,GACT66C,EAASr+C,KAAKqsS,WAAWnmP,GACzBomP,EAAoB,CAAC,EA8BzB,OAlBAz/O,EAAAA,EAAAA,IAAK7tD,GAAO,SAASF,EAAGwD,GACpB,IAAIiqS,EAZU,SAAAjqS,GACd,IAAInB,EAAQ,EAAK83N,cAAc32N,EAAK+7C,GAChCk3C,EAAQp0F,GAASk9C,EAAOl9C,EAAMo0F,OAClC,GAAKA,EAGL,MAAO,CACHi3M,SAAUj3M,EAAMjzF,IAChBsC,KAAM2wF,EAAMrvC,MAAM/kD,EAAMyD,MAE/B,CAEkB6nS,CAAYnqS,GAC3B,GAAKiqS,EAAL,CAGA,IAAIC,EAAWD,EAASC,SACpB5nS,EAAO2nS,EAAS3nS,KAChB8nS,EAAgBJ,EAAkBE,GACjCE,IACDA,EAAgB,CACZpqS,IAAKkqS,EACLtmP,MAAO,IAEXomP,EAAkBE,GAAYE,EAC9BlpS,EAAOpD,KAAKssS,IAEhBA,EAAcxmP,MAAM9lD,KAAKwE,EAZxB,CAaJ,IACMpB,CACV,EACDy2N,uBAAwB,SAASH,EAAaC,GAC1C,IAAI7zK,EAAQlmD,KAAKo4N,kBAAkBzrL,OAAO,SACtCggQ,EAAgBZ,GAAWjyE,GAC3B8yE,EAAqBb,GAAWhyE,GAChC8yE,EAAkB3mP,EAAMymP,EAAcp3M,OAAOrvC,MAC7C4mP,EAAuB5mP,EAAM0mP,EAAmBr3M,OAAOrvC,MACvDk0K,EAAgByyE,EAAgBF,EAAc/nS,MAClDioS,EAAgBxrS,OAAOsrS,EAAc/nS,KAAM,GAC3CkoS,EAAqBzrS,OAAOurS,EAAmBhoS,KAAM,EAAGw1N,EAC3D,EACDhB,aAAc,SAASj4N,GACnB,OAAOA,IAASu3D,EAAAA,EAAAA,IAAUv3D,EAAMo0F,SAAU78B,EAAAA,EAAAA,IAAUv3D,EAAMyD,KAC7D,EACD20N,wBAAyB,SAASz5J,GAC9B,IAAIgxJ,EAAQ//I,GAAEjR,GACVssO,EAASt7E,EAAMhhJ,QAAQ,kBAC3B,OAAKs8N,EAAOzrS,OAGLmrS,GAAa,CAChBv2M,MAAOv1F,KAAKksS,iBAAiB/qS,MAAMirS,GACnCxnS,KAAM5E,KAAKmsS,mBAAmBC,GAAQjrS,MAAM2vN,MAJpC,CAMf,EACDuI,oBAAqB,SAASl4N,GAC1B,OAAO2qS,GAAa3qS,EACvB,EACDy3N,sBAAuB,SAASz3N,GAC5B,OAAO4qS,GAAW5qS,EACrB,EACDu4N,0BAA2B,SAASv4N,GAChC,IAAI4hO,EAAUgpE,GAAW5qS,GACrBirS,EAASpsS,KAAKksS,iBAAiBt8N,GAAGmzJ,EAAQxtI,OAC9C,OAAOv1F,KAAKmsS,mBAAmBC,GAAQx8N,GAAGmzJ,EAAQn+N,KACrD,EACDo1N,qBAAsB,SAAS+yE,EAAYC,GACvC,OAAOjB,GAAWgB,GAAYx3M,QAAUw2M,GAAWiB,GAAaz3M,KACnE,IAEL,MC5MW03M,GAAW,CAAC,ECYvB,IAAIC,GAAsB,GACtBC,GAAiB,SAASC,EAAaC,EAAmBC,GAC1DJ,GAAoB9sS,KAAK,CACrBumN,QAASymF,EACTG,cAAeF,EACfG,iBAAkBF,GAEzB,EACDH,IAAgB,WACZ,OAAOntS,KAAK2sC,OAAO,aAAahsC,MACnC,IAAI,WACD,MAAO,MACV,IAAI,WACD,OAAOX,KAAK2sC,OAAO,WACtB,IACDwgQ,IAAgB,WACZ,OAAQntS,KAAK2sC,OAAO,aAAahsC,QAAUX,KAAK2sC,OAAO,oBAC1D,IAAI,WACD,IAAIrlB,EAAOtnB,KAAK2sC,OAAO,kBACvB,MAAO,WAAarlB,GAAQ,gBAAkBA,GAAQ,UAAYA,GAAQ,WAAaA,EAAO,SAAW,MAC5G,IAAI,WACD,IAAIA,EAAOtnB,KAAK2sC,OAAO,kBAIvB,MAHI,cAAgBrlB,IAChBA,EAAO,SAEJA,CACV,IACD6lR,IAAgB,WACZ,MAAO,SAAWntS,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,wBACjE,IAAI,WACD,MAAO,WACV,IAAI,WACD,MAAO,SACV,IACDwgQ,IAAgB,WACZ,OAAOntS,KAAK2sC,OAAO,iCAAmC3sC,KAAK2sC,OAAO,qCAAuC3sC,KAAK2sC,OAAO,qBACxH,IAAI,WACD,MAAO,SACV,IAAI,WACD,MAAO,SACV,IACD,IAOI8gQ,GAAethP,GAAAA,EAAAA,QAAc,CAC7BpJ,KAAM,SAAS2K,GACX1tD,KAAKmtD,MAAQO,EACb1tD,KAAK0tS,0BACR,EACDnhQ,QAAS,WACDvsC,KAAK2tS,aAAe3tS,KAAK2tS,YAAYhtS,SACrCksD,EAAAA,EAAAA,IAAK7sD,KAAK2tS,aAAc,SAAS7uS,EAAG8uS,GAChCA,EAAUrhQ,SACb,GAER,EACDmhQ,yBAA0B,WACtB1tS,KAAK2tS,YAAc,IACnB9gP,EAAAA,EAAAA,IAAKqgP,GAAqB,SAASpuS,EAAG6tC,GAElC,GADoBA,EAAOg6K,QAAQloN,KAAKuB,KAAKmtD,OAC1B,CACf,IAAIogP,EAAgB5gQ,EAAO4gQ,cAAc9uS,KAAKuB,KAAKmtD,OAC/CqgP,EAAmB7gQ,EAAO6gQ,iBAAiB/uS,KAAKuB,KAAKmtD,OACrDygP,EAAY5tS,KAAK6tS,iBAAiBN,EAAeC,GACrDxtS,KAAK2tS,YAAYvtS,KAAKwtS,EACzB,CACJ,EAAC9wS,KAAKkD,MACV,EACD6tS,iBAAkB,SAASxoS,EAAMyoS,GAE7B,OAAO,IADc9tS,KAAK+tS,eAAe1oS,EAAMyoS,GACxC,CAAmB9tS,KAAKmtD,MAClC,EACD4gP,eAAgB,SAAS1oS,EAAMyoS,GAC3B,IAAIE,EACAC,EAAiB,QAAUD,EAAiBf,GAAS5nS,UAAU,IAAW2oS,OAAiB,EAASA,EAAeF,GACvH,IAAKG,EACD,MAAM3uR,GAAAA,MAAa,QAASja,EAAMyoS,GAEtC,OAAOG,CACV,EACDC,kBAAmB,SAAStwS,GACxB,IAAIkwN,EAAe/8I,GAAEnzE,EAAKkiE,aACtB//D,EAAS,CACT+tN,aAAcA,GAElB9tN,KAAKmuS,mBAAmBrgF,EAAc/tN,GACtCC,KAAKouS,iBAAiBtgF,EAAc/tN,GACpCC,KAAKquS,iBA9CyB,gBA8CyBtuS,EAC1D,EACDuuS,mBAAoB,WAChBtuS,KAAKquS,iBAhDuB,cAiD/B,EACDF,mBAAoB,SAASrgF,EAAc/tN,GACvC,IAAIwuS,EAAcvuS,KAAKwuS,yBAtDU,YAsDmDzuS,EAxD3D,2BAyDzB+tN,EAAaxmN,QAAQinS,EACxB,EACDH,iBAAkB,SAAStgF,EAAc/tN,GACrC,IAAI0uS,EAAazuS,KAAKwuS,yBAzDU,WAyDkDzuS,EA3D1D,0BA4DxB+tN,EAAanoN,OAAO8oS,EACvB,EACDD,yBAA0B,SAASppS,EAAQrF,EAAQ2uS,GAC/C,IAAIC,EAAa59N,GAAE,SAUnB,OATAlkB,EAAAA,EAAAA,IAAK7sD,KAAK2tS,aAAc,WACpB,IAAInzN,EAAazJ,GAAE,SAAS3C,SAASsgO,GACrC1uS,KAAKoF,IAAQqgD,EAAAA,GAAAA,GAAO,CAChB+0B,WAAYA,GACbz6E,IACCy6E,EAAWzvE,WAAWpK,QACtBguS,EAAWhpS,OAAO60E,EAEzB,IACMm0N,EAAW5jS,UACrB,EACDsjS,iBAAkB,SAASjpS,EAAQrF,IAC/B8sD,EAAAA,EAAAA,IAAK7sD,KAAK2tS,aAAc,WACpB3tS,KAAKoF,GAAQrF,EAChB,GACJ,EACD6uS,eAAgB,SAASx1S,GACrB,IAAK4G,KAAK2tS,YACN,OAAO,EAIX,IAFA,IAAIkB,EAAa7uS,KAAK2tS,YAClBhtS,EAASkuS,EAAWluS,OACfgI,EAAI,EAAGA,EAAIhI,EAAQgI,IACxB,GAAIkmS,EAAWlmS,GAAGvP,KAAU0oB,GAAAA,KACxB,OAAO,EAGf,OAAO,CACV,EACD2tQ,cAAe,SAASr2R,EAAM00N,EAAc7kN,GACxC,IAAKjJ,KAAK2tS,YACN,OAAO,EAKX,IAHA,IAAIrnS,GAAW,EACXuoS,EAAa7uS,KAAK2tS,YAClBhtS,EAASkuS,EAAWluS,OACfgI,EAAI,EAAGA,EAAIhI,KAChB2F,EAAWuoS,EAAWlmS,GAAGvP,GAAM00N,EAAc7kN,IADrBN,KAM5B,OAAOrC,CACV,EACDwoS,YAAa,SAAShhF,EAAc7kN,GAChC,OAAOjJ,KAAKyvR,cAAc,cAAe3hE,EAAc7kN,EAC1D,EACD8lS,qBAAsB,SAASC,EAAqBC,GAChD,OAAOjvS,KAAKyvR,cAAc,uBAAwBuf,EAAqBC,EAC1E,EACDC,oBAAqB,SAASjmS,GAC1B,OAAOjJ,KAAKyvR,cAAc,sBAAuBxmR,EACpD,EACDkmS,yBAA0B,WACtB,OAAOnvS,KAAK4uS,eAAe,oBAC9B,EACDQ,kBAAmB,SAASthF,EAAc7kN,GACtC,OAAOjJ,KAAKyvR,cAAc,oBAAqB3hE,EAAc7kN,EAChE,EACDomS,yBAA0B,WACtB,IAAIC,EAAoB,GAExB,OADAtvS,KAAKquS,iBAxHiC,uBAwHyBiB,GACxDA,EAAkB7iS,KAAK,IACjC,IAEL,MCxLI8iS,GAAkC,+BAGlCC,GAAoC,iCA2BxC,GAzBev3E,GAAAA,QAA6B,CACxCpN,gBAAiB,WACb7qN,KAAKmiD,WACLniD,KAAK8qN,cAAc,QAAS9qN,KAAKyvS,aAAa3yS,KAAKkD,OACnDA,KAAK8qN,cAAc,cAAe9qN,KAAK0vS,mBAAmB5yS,KAAKkD,MAClE,EACDyvS,aAAc,SAASE,GAEnB,GADA3vS,KAAKgnJ,UAAUj8I,SAAS,iCAAuCrN,SAC1DiyS,EAAL,CAGA,IAAIC,EAAS7+N,GAAE,SAAS3C,SAASmhO,IAAiC5pS,OAAOorE,GAAE,SAAS3C,SAfhE,sBAegGA,SAd1G,YAcgIznE,KAAKgpS,IAC3IE,EAAW7vS,KAAKgnJ,UAAUj8I,SAAS,mCAAyCgqC,QAChF86P,EAASlvS,OAAS,EAAIivS,EAAOnoS,aAAaooS,GAAYD,EAAOjhO,SAAS3uE,KAAKgnJ,UAH1E,CAIJ,EACD0oJ,mBAAoB,SAASI,GAEzB,GADA9vS,KAAKgnJ,UAAUj8I,SAAS,mCAAyCrN,SAC5DoyS,EAAL,CAGA,IAAIC,EAAoBh/N,GAAE,SAAS3C,SAASohO,IACxCK,EAAW9+N,GAAE,SAAS3C,SAtBJ,wBAuBtB2hO,EAAkBpqS,OAAOkqS,GAAUlhO,SAAS3uE,KAAKgnJ,UAHhD,CAIJ,ICjBDgpJ,GAAuC,kCACvCC,GAAkC,gCAUlCC,GAAmC5b,GAAAA,QAAuB,CAC1D/wL,MAAO,SAAS4sM,GACZnwS,KAAKmiD,SAASguP,GACdnwS,KAAKowS,YAAcD,EAAWC,YAC9BpwS,KAAKqwS,WAAaF,EAAWE,WAC7BrwS,KAAKswS,iBAAmBH,EAAWG,iBACnCtwS,KAAKuwS,oBAAsBx/N,GAAEo/N,EAAWt/P,WACxC7wC,KAAKolQ,YAAcr0L,GAAEo/N,EAAW5oS,aAChCvH,KAAKwwS,gBACR,EACDA,eAAgB,WACZxwS,KAAKywS,mBAAoB7jP,EAAAA,GAAAA,KACzB5sD,KAAK0wS,kBAAmB9jP,EAAAA,GAAAA,KACxB5sD,KAAK2wS,sBAAuB/jP,EAAAA,GAAAA,IAC/B,EACDte,OAAQ,WACJtuC,KAAKmiD,WACLniD,KAAK4wS,kBACL5wS,KAAK6wS,eACR,EACDD,gBAAiB,WACb,IAAIE,EAAS//N,GAAE,SAAS3C,SA9BM,iCA+B1B2iO,EAAiBhgO,GAAE,SAAS3C,SA9BE,qCA+B9B4iO,EAAiB,IAAI5hD,GAAcr+K,GAAE,UAAU/W,WAC/Ci3O,EAAQjxS,KAAKkxS,eAAiBngO,GAAE,SAAS3C,SA/BhB,gCAgC7BpuE,KAAKmxS,kBAAoBpgO,GAAE,SAASpqE,KAAK3G,KAAK2sC,OAAO,oBAAoBgiC,SAASsiO,GAClFjxS,KAAKoxS,iBAAmBrgO,GAAE,SAASpqE,KAAK3G,KAAK2sC,OAAO,mBAAmBgiC,SAASsiO,GAChFjxS,KAAKswS,iBAAmBv/N,GAAE,SAASpqE,KAAK3G,KAAK2sC,OAAO,mBAAmBgiC,SAASsiO,GAChFjxS,KAAKqwS,WAAWviP,QAAQnoD,OAAOmrS,GAAQnrS,OAAOorS,EAAeprS,OAAOqrS,IAAiBrrS,OAAOsrS,EAC/F,EACDJ,cAAe,WACX7wS,KAAKm2D,OApCQ,EAqCbn2D,KAAKqxS,sBACR,EACDA,qBAAsB,WAClB,IAAI5hP,EAAOzvD,KACPsxS,EAAoB,CAAC,CACrB9kS,QAASxM,KAAKmxS,kBACdI,aA3CS,GA4CV,CACC/kS,QAASxM,KAAKoxS,iBACdG,aA7CM,GA8CP,CACC/kS,QAASxM,KAAKswS,iBACdiB,aA/CW,KAiDf1kP,EAAAA,EAAAA,IAAKykP,GAAoB,SAASxyS,EAAG8F,GACjC,IAAIihB,EAAS4pC,EAAK0G,SAAWvxD,EAAK2sS,aAAe,WAAa,cAC9D3sS,EAAK4H,QAAQqZ,GAtDoB,uCAuDpC,GACJ,EACDmmB,OAAQ,WACJhsC,KAAKmiD,WACLniD,KAAKwxS,qBACR,EACDphI,kBAAmB,WACfpwK,KAAKmiD,WACLniD,KAAKyxS,eAAiBzxS,KAAKowS,YAAYx2S,IAAI,GAAG++J,aAC9C,IAAI+4I,EAAY1xS,KAAKuwS,oBAAoB32S,IAAI,GACzC+3S,EAAc3xS,KAAKolQ,YAAYxrQ,IAAI,GACvCoG,KAAK4xS,gBAAkBroS,KAAKkuB,IAAIi6Q,EAAU/4I,aAAeg5I,EAAYh5I,aAAc,EACtF,EACDo6H,mBAAoB,WAChB,IAAID,EAAoB9yR,KAAKmiD,WAE7B,OADA2wO,EAAkBp9I,SAAWo9I,EAAkBp9I,UAAY11I,KAAK6xS,iBACzD/e,CACV,EACD0e,oBAAqB,WACjBxxS,KAAKowS,YAAY9qQ,IAAI,CACjBb,KAAMzkC,KAAKyxS,gBAElB,EACD9gB,UAAW,WACP3wR,KAAKmiD,WACLniD,KAAK6kR,WACR,EACDkM,WAAY,WACR/wR,KAAKmiD,WACLniD,KAAK6kR,WACR,EACDA,UAAW,WApFG,IAqFN7kR,KAAKm2D,SACLn2D,KAAK8xS,mBAAmB9xS,KAAKyxS,gBAC7Bn8Q,aAAat1B,KAAK+xS,yBAClB/xS,KAAK+xS,wBAA0Bx8Q,WAAW,WACtCv1B,KAAKgyS,qBACR,EAACl1S,KAAKkD,MAAO,KAErB,EACD8xS,mBAAoB,SAAS7kS,GACzBk2I,GAAKnjJ,KAAKowS,YAAa,CACnB3rQ,IAAKx3B,IAETk2I,GAAKnjJ,KAAKuwS,oBAAqB,CAC3B9rQ,IAAKx3B,GAEZ,EACD+jR,aAAc,SAAS/nR,GAEnB,GADAjJ,KAAKmiD,SAASl5C,GArGC,IAsGXjJ,KAAKm2D,OAAT,CAGA,IAAI87O,EAAkBjyS,KAAK2yB,WAAW8R,IAClCytQ,GAAelyS,KAAKmpR,WAAa,GAAK8oB,EAC1CjyS,KAAKmpR,UAAY8oB,EACbjyS,KAAKmyS,cACLnyS,KAAKoyS,iBACEF,EAAc,GAAKlyS,KAAKqyS,iBAC/BryS,KAAKsyS,eAELtyS,KAAKuyS,gBATR,CAWJ,EACDJ,YAAa,WACT,OAAOnyS,KAAK6xS,kBAAoB7xS,KAAKmpR,WAAanpR,KAAKyxS,cAC1D,EACDY,eAAgB,WACZ,OAAOryS,KAAKwyS,qBAAuBjpS,KAAKoZ,MAAM3iB,KAAK4xS,gBAAkBroS,KAAKo/D,MAAM3oE,KAAKmpR,aAAe,CACvG,EACDmpB,aAAc,WAzHE,IA0HRtyS,KAAKm2D,SAGTn2D,KAAKm2D,OA7HO,EA8HZn2D,KAAK2wS,qBAAqB5jP,OAC7B,EACDqlP,eAAgB,WAlIF,IAmINpyS,KAAKm2D,SAGTn2D,KAAKm2D,OAtIK,EAuIVn2D,KAAKqwS,WAAWjiO,SAAS6hO,IACzBjwS,KAAKqxS,uBACR,EACDkB,eAAgB,WA3IC,IA4ITvyS,KAAKm2D,SAGTn2D,KAAKqwS,WAAWhiO,YAAY2hO,IAAsC3hO,YAAY4hO,IAC9EjwS,KAAK6wS,gBACR,EACDmB,oBAAqB,WAhJF,IAiJXhyS,KAAKm2D,SAGTn2D,KAAKm2D,OApJU,EAqJfn2D,KAAKqwS,WAAWjiO,SAAS4hO,IAAsC3hO,YAAY4hO,IAC3EjwS,KAAKqxS,uBACLrxS,KAAKywS,kBAAkB1jP,OAC1B,EACD0lP,eAAgB,SAAS9rF,GACjBA,IACA3mN,KAAKowK,oBACLpwK,KAAKwxS,uBAETxxS,KAAK6xS,iBAAmBlrF,CAC3B,EACD+rF,kBAAmB,SAAS/rF,GACxB3mN,KAAKwyS,oBAAsB7rF,CAC9B,EACDgsF,eAAgB,WACZ3yS,KAAKm2D,OArKK,CAsKb,EACD61B,QAAS,WACL,IAAIz9B,EAAW,IAAIlxC,GAAAA,GAanB,OAZArd,KAAKowK,oBACL96I,aAAat1B,KAAK4yS,iBAxKN,IAyKR5yS,KAAKm2D,SACLn2D,KAAKm2D,OA7KI,GA+Kbn2D,KAAK4yS,gBAAkBr9Q,WAAW,WAC9Bv1B,KAAK8xS,mBAAmB,GACxB9xS,KAAKuyS,iBACLvyS,KAAK0wS,iBAAiB3jP,OACtB/sD,KAAK8xR,gBACLvjO,EAAS3vD,SACZ,EAAC9B,KAAKkD,MAjLa,KAkLbuuD,EAASjxC,SACnB,EACDivB,QAAS,WACLjX,aAAat1B,KAAK+xS,yBAClBz8Q,aAAat1B,KAAK4yS,iBAClB5yS,KAAKmiD,UACR,IAEL,MCjMI0wP,GAAyC,kCAyL7C,GAhLwCve,GAAAA,QAAuB,CAC3D/wL,MAAO,SAAS4sM,GACZnwS,KAAKmiD,SAASguP,GACdnwS,KAAKowS,YAAcD,EAAWC,YAC9BpwS,KAAKqwS,WAAaF,EAAWE,WAC7BrwS,KAAKuwS,oBAAsBx/N,GAAEo/N,EAAWt/P,WACxC7wC,KAAKolQ,YAAcr0L,GAAEo/N,EAAW5oS,aAChCvH,KAAKwwS,iBACLxwS,KAAKmpR,UAAY,CACpB,EACDqnB,eAAgB,WACZxwS,KAAKywS,mBAAoB7jP,EAAAA,GAAAA,KACzB5sD,KAAK0wS,kBAAmB9jP,EAAAA,GAAAA,KACxB5sD,KAAK2wS,sBAAuB/jP,EAAAA,GAAAA,IAC/B,EACDte,OAAQ,WACJtuC,KAAKmiD,WACLniD,KAAK4wS,kBACL5wS,KAAK6wS,eACR,EACDD,gBAAiB,WACb,IAAIG,EAAiBhgO,GAAE,SAAS3C,SA7BE,qCA8B9B4iO,EAAiB,IAAI5hD,GAAcr+K,GAAE,UAAU/W,WACnDh6D,KAAK8yS,OAAS/hO,GAAE,SAAS3C,SA7BP,oBA8BlBpuE,KAAKqwS,WAAWviP,QAAQnoD,OAAO3F,KAAK8yS,QAAQntS,OAAOorS,EAAeprS,OAAOqrS,GAC5E,EACDH,cAAe,WACX7wS,KAAKm2D,OAhCQ,EAiCbn2D,KAAK+yS,mBACL/yS,KAAKowK,mBACR,EACD2iI,iBAAkB,WACd/yS,KAAKqwS,WAAW/qQ,IAAI,CAChBpyB,QAAS,GAEhB,EACDk9J,kBAAmB,WACfpwK,KAAKmiD,WACLniD,KAAKyxS,eAAiBzxS,KAAKowS,YAAYx2S,IAAI,GAAG++J,aAC9C,IAAI+4I,EAAY1xS,KAAKuwS,oBAAoB32S,IAAI,GACzC+3S,EAAc3xS,KAAKolQ,YAAYxrQ,IAAI,GACvCoG,KAAK4xS,gBAAkBroS,KAAKkuB,IAAIi6Q,EAAU/4I,aAAeg5I,EAAYh5I,aAAc,EACtF,EACDo6H,mBAAoB,WAChB,IAAID,EAAoB9yR,KAAKmiD,WAE7B,OADA2wO,EAAkBp9I,SAAWo9I,EAAkBp9I,UAAY11I,KAAK6xS,iBACzD/e,CACV,EACDlD,WAAY,SAAS3mR,GACjBjJ,KAAKmiD,SAASl5C,GAtDD,IAuDTjJ,KAAKm2D,QAA6B,IAAMn2D,KAAKmpR,YAC7CnpR,KAAKgzS,cAAgBtyO,GAAUz3D,EAAEi5D,eAAel0D,EAChDhO,KAAKm2D,OAtDG,EAwDf,EACDo6N,WAAY,SAAStnR,GACjBjJ,KAAKmiD,SAASl5C,GACdjJ,KAAKizS,QAAUvyO,GAAUz3D,EAAEi5D,eAAel0D,EAAIhO,KAAKgzS,cA3DvC,IA4DRhzS,KAAKm2D,SACDn2D,KAAK6xS,kBAAoB7xS,KAAKizS,QAAU,EACxCjzS,KAAKm2D,OA7DF,EA+DHn2D,KAAK6kR,aA/DF,IAkEP7kR,KAAKm2D,SACLltD,EAAEkzD,iBACFn8D,KAAKkzS,gBAEZ,EACDA,cAAe,WACX,IAAIC,EAAiBnzS,KAAKozS,qBACtB3uQ,EAAMl7B,KAAKsZ,IAAI,EAAIswR,EAAgBnzS,KAAKizS,QAAUjzS,KAAKqzS,6BACvDC,EAAQ,IAAM7uQ,EAAM0uQ,EAAiB,EACzCnzS,KAAKqwS,WAAW/qQ,IAAI,CAChBpyB,QAAS,IACV+6D,YAnFgC,qCAmFkBxpC,EAAM0uQ,GAC3DhwJ,GAAKnjJ,KAAKqwS,WAAY,CAClB5rQ,IAAKA,IAETzkC,KAAK8yS,OAAOxtQ,IAAI,CACZtI,UAAW,UAAYs2Q,EAAQ,QAEtC,EACDnB,YAAa,WACT,OAAOnyS,KAAK6xS,kBAtFD,IAsFqB7xS,KAAKm2D,QAA2Bn2D,KAAKizS,SAAWjzS,KAAKozS,qBAAuBpzS,KAAKqzS,2BACpH,EACDD,mBAAoB,WAChB,OAAO7pS,KAAKoZ,MAAM,IAAMuoD,GAAelrE,KAAKgnJ,WAC/C,EACDqsJ,0BAA2B,WACvB,OAAQ9pS,KAAKoZ,MAAM,IAAMuoD,GAAelrE,KAAKqwS,YAChD,EACD1f,UAAW,WACH3wR,KAAKmyS,eACLnyS,KAAKgyS,sBAEThyS,KAAK6kR,WACR,EACDkM,WAAY,WACR/wR,KAAK6kR,WACR,EACDA,UAAW,WAxGK,IAyGR7kR,KAAKm2D,QAxGE,IAwG0Bn2D,KAAKm2D,QACtCn2D,KAAK6wS,eAEZ,EACD7f,aAAc,SAAS/nR,GAEnB,GADAjJ,KAAKmiD,SAASl5C,GA/GC,IAgHXjJ,KAAKm2D,OAAT,CAGA,IAAI87O,EAAkBjyS,KAAK2yB,WAAW8R,IAClCytQ,EAAclyS,KAAKmpR,UAAY8oB,EACnCjyS,KAAKmpR,UAAY8oB,EACbC,EAAc,GAAKlyS,KAAKqyS,iBACxBryS,KAAKsyS,eAELtyS,KAAKuyS,gBAPR,CASJ,EACDF,eAAgB,WACZ,OAAOryS,KAAKwyS,qBAAuBjpS,KAAKoZ,MAAM3iB,KAAK4xS,gBAAkBroS,KAAKo/D,MAAM3oE,KAAKmpR,aAAe,CACvG,EACDmpB,aAAc,WACVtyS,KAAK2wS,qBAAqB5jP,MAC7B,EACDwlP,eAAgB,WApIC,IAqITvyS,KAAKm2D,SAGTn2D,KAAKqwS,WAAWhiO,YAAYwkO,IAC5B7yS,KAAK6wS,gBACR,EACDmB,oBAAqB,WACjBhyS,KAAKm2D,OA1IU,EA2Ifn2D,KAAKuzS,yBACR,EACDA,wBAAyB,WACrBvzS,KAAKwzS,mBACLxzS,KAAKywS,kBAAkB1jP,MAC1B,EACDymP,iBAAkB,WACdxzS,KAAKqwS,WAAWjiO,SAASykO,IACzB1vJ,GAAKnjJ,KAAKqwS,WAAY,CAClB5rQ,IAAKzkC,KAAKozS,sBAEjB,EACDX,eAAgB,SAAS9rF,GACrB3mN,KAAKowS,YAAYriO,OAAO44I,GACxB3mN,KAAK6xS,iBAAmBlrF,CAC3B,EACD+rF,kBAAmB,SAAS/rF,GACxB3mN,KAAKwyS,oBAAsB7rF,CAC9B,EACDgsF,eAAgB,WACZ3yS,KAAKm2D,OAhKK,CAiKb,EACD61B,QAAS,WACL,IAAIz9B,EAAW,IAAIlxC,GAAAA,GASnB,OARArd,KAAKowK,oBACL96I,aAAat1B,KAAK4yS,iBAClB5yS,KAAK4yS,gBAAkBr9Q,WAAW,WAC9Bv1B,KAAKuyS,iBACLvyS,KAAK0wS,iBAAiB3jP,OACtB/sD,KAAK8xR,gBACLvjO,EAAS3vD,SACZ,EAAC9B,KAAKkD,MAAO,KACPuuD,EAASjxC,SACnB,EACDivB,QAAS,WACLjX,aAAat1B,KAAK+xS,yBAClBz8Q,aAAat1B,KAAK4yS,iBAClB5yS,KAAKmiD,UACR,ICzLDq/O,GAAOj4R,KAMPymS,GAAuC,kCACvCC,GAAkC,gCASlCwD,GAAqBzqB,GAAS39P,QAAQ,CACtC03B,KAAM,WACF/iD,KAAKyxS,eAAiB,EACtBzxS,KAAK0zS,kBAAoB,EACzB1zS,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKwwS,iBACLxwS,KAAK6wS,eACR,EACDA,cAAe,WACX7wS,KAAKm2D,OAbQ,EAcbn2D,KAAKqxS,sBACR,EACDA,qBAAsB,WAClB,IAAI5hP,EAAOzvD,KACPsxS,EAAoB,CAAC,CACrB9kS,QAASxM,KAAKmxS,kBACdI,aApBS,GAqBV,CACC/kS,QAASxM,KAAKoxS,iBACdG,aAtBM,GAuBP,CACC/kS,QAASxM,KAAKswS,iBACdiB,aAxBW,KA0Bf1kP,EAAAA,EAAAA,IAAKykP,GAAoB,SAASxyS,EAAG8F,GACjC,IAAIihB,EAAS4pC,EAAK0G,SAAWvxD,EAAK2sS,aAAe,WAAa,cAC9D3sS,EAAK4H,QAAQqZ,GA/BoB,uCAgCpC,GACJ,EACD2qR,eAAgB,WACZxwS,KAAKywS,mBAAoB7jP,EAAAA,GAAAA,KACzB5sD,KAAK0wS,kBAAmB9jP,EAAAA,GAAAA,KACxB5sD,KAAK2wS,sBAAuB/jP,EAAAA,GAAAA,IAC/B,EACDygO,cAAe,WAEX,GADsB,eAAiBrtR,KAAK8gQ,WACvB,CACjB9gQ,KAAKyxS,eAAiBzxS,KAAKowS,YAAYx2S,IAAI,GAAG++J,aAC9C34J,KAAK0zS,kBAAoB1zS,KAAK2zS,eAAe/5S,IAAI,GAAG++J,aACpD,IAAIg5I,EAAc3xS,KAAKolQ,YAAYxrQ,IAAI,GACnC83S,EAAY1xS,KAAK28M,UAAU/iN,IAAI,GACnCoG,KAAK4xS,gBAAkBroS,KAAKkuB,IAAIi6Q,EAAU/4I,aAAe34J,KAAK0zS,kBAAoB/B,EAAYh5I,aAAc,EAC/G,CACD34J,KAAKmiD,UACR,EACDmrO,iBAAkB,WACdttR,KAAK0pR,WAAW/8O,OAAO,CACnB64O,cAAexlR,KAAK0tR,iBACpBjI,YAAazlR,KAAKytR,eAAiBztR,KAAKyxS,eAAiBzxS,KAAK0zS,kBAC9D/tB,WAAY3lR,KAAKqqR,kBAExB,EACDC,aAAc,WACVtqR,KAAKmiD,WACDniD,KAAKmyS,cACLnyS,KAAKoyS,iBACEpyS,KAAKqyS,iBACZryS,KAAK4zS,oBA7DI,IA8DF5zS,KAAKm2D,QACZn2D,KAAKuyS,gBAEZ,EACDhoB,eAAgB,WACZvqR,KAAK0pR,WAAW7C,OAAO7mR,KAAKyxS,eAAiBzxS,KAAKmpR,UACrD,EACDgpB,YAAa,WACT,OAAOnyS,KAAK6xS,kBAAoB7xS,KAAKmpR,WAAa,CACrD,EACDkpB,eAAgB,WACZ,IAAIV,EAAc3xS,KAAKolQ,YAAYxrQ,IAAI,GACvC,OAAOoG,KAAKwyS,qBAAuBjpS,KAAKoZ,MAAM3iB,KAAK4xS,gBAAkBroS,KAAKq7E,KAAK+sN,EAAYvjG,aAAe,CAC7G,EACDu6E,gBAAiB,WACT3oR,KAAK0oR,aA5EC,IA4Ec1oR,KAAKm2D,OACzBn2D,KAAKgyS,sBACEhyS,KAAK0oR,aA5EJ,IA4EmB1oR,KAAKm2D,OAChCn2D,KAAK6zS,sBAEL7zS,KAAKmiD,UAEZ,EACDyxP,kBAAmB,WAlFH,IAmFR5zS,KAAKm2D,SAGTn2D,KAAKm2D,OAtFO,EAuFZn2D,KAAKoqR,WAAapqR,KAAKwtR,gBAC1B,EACDD,cAAe,WACX,OAAQvtR,KAAKyxS,cAChB,EACDjkB,cAAe,WACX,OAAOgU,GAAK3+Q,IAAI7iB,KAAKmiD,YAAaniD,KAAKyxS,eAC1C,EACDoC,oBAAqB,WACjB7zS,KAAK2wS,qBAAqB5jP,MAC7B,EACDqlP,eAAgB,WApGF,IAqGNpyS,KAAKm2D,SAGTn2D,KAAKm2D,OAxGK,EAyGVn2D,KAAKmqR,WAAa,EAClBnqR,KAAKqwS,WAAWjiO,SAAS6hO,IACzBjwS,KAAKqxS,uBACR,EACDkB,eAAgB,WA9GC,IA+GTvyS,KAAKm2D,SAGTn2D,KAAK6wS,gBACL7wS,KAAKqtR,gBACLrtR,KAAKqwS,WAAWhiO,YAAY2hO,IAAsC3hO,YAAY4hO,IAC9EjwS,KAAK0wS,iBAAiB3jP,OACzB,EACDilP,oBAAqB,WArHF,IAsHXhyS,KAAKm2D,SAGTn2D,KAAKm2D,OAzHU,EA0Hfn2D,KAAKqwS,WAAWjiO,SAAS4hO,IAAsC3hO,YAAY4hO,IAC3EjwS,KAAKqxS,uBACLrxS,KAAKywS,kBAAkB1jP,OAC1B,EACD+mP,gBAAiB,WASb,OAzIa,IAiIT9zS,KAAKm2D,QACLn2D,KAAKktR,gBAETltR,KAAK+lR,UACD/lR,KAAK+zS,cACL/zS,KAAK+zS,aAAatlP,QAEtBzuD,KAAK+zS,cAAezlP,EAAAA,GAAAA,cAAatuD,KAAKg0S,SAASl3S,KAAKkD,OAC7CA,KAAK+zS,aAAaz2R,OAC5B,EACD02R,SAAU,WACNh0S,KAAKuyS,iBACLvyS,KAAK2oR,iBACR,EACDsrB,4BAA6B,SAASttF,GAC9B3mN,KAAKwyS,sBAAwB7rF,IAGjC3mN,KAAKwyS,oBAAsB7rF,EAC3B3mN,KAAKqtR,gBACR,EACD6mB,yBAA0B,SAASvtF,GAC3B3mN,KAAK6xS,mBAAqBlrF,IAG9B3mN,KAAK6xS,iBAAmBlrF,EACxB3mN,KAAKm0S,2BACLn0S,KAAKitR,iBACR,EACDknB,yBAA0B,WACtBn0S,KAAKmpR,WAAar+M,GAAU9qE,KAAKowS,eAAiBpwS,KAAKyxS,eACvDzxS,KAAKmqR,WAAa,EAClBnqR,KAAKypJ,OACR,EACD2qJ,uBAAwB,WACpBp0S,KAAKm2D,OAnKK,CAoKb,EACD5pB,QAAS,WACDvsC,KAAK+zS,cACL/zS,KAAK+zS,aAAatlP,QAEtBzuD,KAAKmiD,UACR,IA6EL,GA3EkCosO,GAAkBljQ,QAAQ,CACxDk4E,MAAO,SAAS4sM,GACZnwS,KAAKmiD,SAASguP,GACdnwS,KAAKqwS,WAAaF,EAAWE,WAC7BrwS,KAAKowS,YAAcD,EAAWC,YAC9BpwS,KAAK2zS,eAAiBxD,EAAWwD,eACjC3zS,KAAKwwS,gBACR,EACDA,eAAgB,WACZxwS,KAAKywS,mBAAoB7jP,EAAAA,GAAAA,KACzB5sD,KAAK0wS,kBAAmB9jP,EAAAA,GAAAA,KACxB5sD,KAAK2wS,sBAAuB/jP,EAAAA,GAAAA,IAC/B,EACDte,OAAQ,WACJtuC,KAAK4wS,kBACL5wS,KAAKmiD,UACR,EACDyuP,gBAAiB,WACb,IAAIE,EAAS//N,GAAE,SAAS3C,SAnMM,iCAoM1B2iO,EAAiBhgO,GAAE,SAAS3C,SAnME,qCAoM9B4iO,EAAiB,IAAI5hD,GAAcr+K,GAAE,UAAU/W,WAC/Ci3O,EAAQjxS,KAAKkxS,eAAiBngO,GAAE,SAAS3C,SApMhB,gCAqM7BpuE,KAAKmxS,kBAAoBpgO,GAAE,SAASpqE,KAAK3G,KAAK2sC,OAAO,oBAAoBgiC,SAASsiO,GAClFjxS,KAAKoxS,iBAAmBrgO,GAAE,SAASpqE,KAAK3G,KAAK2sC,OAAO,mBAAmBgiC,SAASsiO,GAChFjxS,KAAKswS,iBAAmBv/N,GAAE,SAASpqE,KAAK3G,KAAK2sC,OAAO,mBAAmBgiC,SAASsiO,GAChFjxS,KAAKqwS,WAAWviP,QAAQnoD,OAAOmrS,GAAQnrS,OAAOorS,EAAeprS,OAAOqrS,IAAiBrrS,OAAOsrS,EAC/F,EACDwB,eAAgB,SAAS9rF,GACrB3mN,KAAKyvR,cAAc,mBAAoB9oE,EAC1C,EACD+rF,kBAAmB,SAAS/rF,GACxB3mN,KAAKyvR,cAAc,sBAAuB9oE,EAC7C,EACDqoE,gBAAiB,SAASpoQ,GACtB,IAAI6oC,EAAOzvD,KACPqoR,EAAW54N,EAAKs/N,WAAWnoQ,GAAa,IAAI6sR,GAAmBhkP,EAAKw/N,iBAAiBroQ,IACzFyhQ,EAASooB,kBAAkB1iQ,KAAK,WAC5B0hB,EAAKghP,kBAAkB1jP,MAC1B,IACDs7N,EAASqoB,iBAAiB3iQ,KAAK,WAC3B0hB,EAAKihP,iBAAiB3jP,MACzB,IACDs7N,EAASsoB,qBAAqB5iQ,KAAK,WAC/B0hB,EAAKkhP,qBAAqB5jP,MAC7B,GACJ,EACDkiO,iBAAkB,SAASroQ,GACvB,OAAO6+B,EAAAA,GAAAA,GAAOzlD,KAAKmiD,SAASv7B,GAAY,CACpCytR,WAAYr0S,KAAKowS,YACjBkE,cAAet0S,KAAK2zS,eACpBY,UAAWv0S,KAAKqwS,WAChBmE,cAAex0S,KAAKkxS,eACpBuD,iBAAkBz0S,KAAKmxS,kBACvBuD,gBAAiB10S,KAAKoxS,iBACtBuD,gBAAiB30S,KAAKswS,kBAE7B,EACDqC,eAAgB,WACZ3yS,KAAKyvR,cAAc,iBACtB,EACDzjM,QAAS,WACL,OAAOhsF,KAAKyvR,cAAc,WAAW7gO,KAAK5uD,KAAK8xR,cAClD,EACDn/P,SAAU,WACN,IAAIA,EAAW3yB,KAAKmiD,WAEpB,OADAxvB,EAAS8R,KAAOqmC,GAAU9qE,KAAKowS,aACxBz9Q,CACV,EACD4Z,QAAS,YACLsgB,EAAAA,EAAAA,IAAK7sD,KAAK+uR,YAAa,WACnB/uR,KAAKusC,SACR,IACDvsC,KAAKmiD,UACR,IC/QL,MCkBIyyP,GAA4B,yBAC5BC,GAA0B,uBAI1BC,GAAYz1F,GAAAA,QAAgB,CAC5BvI,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BrgD,OAAQggB,GAAAA,MAEf,EACD87I,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B/nD,QAASgwH,GAAAA,OAA2B,WACpCz5F,MAAO,IACPnE,OAAQ,GACR++H,UAAW,KACXwpJ,eAAe,EACf1lD,aAAc,GACd2lD,UAAU,EACVhoR,MAAO,EACPyf,+BAA+B,EAC/B4zK,sBAAuB,KACvBliK,mBAAmB,EACnBqiK,uBAAuB,EACvBD,qBAAqB,GAE5B,EACDziD,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLmiN,aAAc,gBAEnB,CACC7oI,OAAQ,WACJ,OAAOwmH,IACV,EACD9/L,QAAS,CACLhD,QAAS,GACTu2B,MAAO,GACPnE,OAAQ,GACRyU,UAAW,GACXN,SAAU,MAGrB,EACD4iE,MAAO,WACHvjG,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACDgjE,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAxDF,gBAyDdpuE,KAAKq8M,WAAWjuI,SAxDM,uBAyDzB,EACDkqI,mBAAoB,WAChBt4M,KAAKmiD,WACLniD,KAAKs6L,WAAWlsH,SAzDM,wBA0DtBpuE,KAAKi1S,0BAA4BlkO,GAAE,SAAS3C,SAzDd,gCA0D9BpuE,KAAKi1S,0BAA0BtmO,SAAS3uE,KAAKs6L,YAC7Ct6L,KAAKk1S,qBACLl1S,KAAKm1S,wBACLn1S,KAAKo1S,uBACLp1S,KAAKq1S,gBACR,EACDxyF,MAAO,WACH,IAAI71L,EAAQhtB,KAAK2sC,OAAO,SACxB,IAAK3f,EACD,OAAOhtB,KAAKmiD,WAEhB,IAAIoM,EAAW,IAAIlxC,GAAAA,GACf8kC,EAAWniD,KAAKmiD,SAASrlD,KAAKkD,MAOlC,OANAA,KAAKs1S,oBACLt1S,KAAKu1S,aAAehgR,YAAY,WAC5B4sB,IAAWyM,MAAM,WACbL,EAAS3vD,SACZ,GACJ,GAAGouB,GACGuhC,EAASjxC,SACnB,EACDwlM,MAAO,WAEH,OADA9iN,KAAKs1S,oBACEt1S,KAAKmiD,UACf,EACDmzP,kBAAmB,WACfhgR,aAAat1B,KAAKu1S,aACrB,EACDF,eAAgB,WACZ,GAAKr1S,KAAKi1S,0BAAV,CAGA,IAAI76S,EAAU4F,KAAK2sC,OAAO,WAC1B,GAAKvyC,EAAL,CAGA,IAAIujP,EAAW5sK,GAAE,SAAS3C,SAASymO,IAAyBluS,KAAKvM,GACjE4F,KAAKi1S,0BAA0BtvS,OAAOg4O,EAFrC,CAJA,CAOJ,EACDy3D,qBAAsB,WACbp1S,KAAKi1S,2BAA8Bj1S,KAAK2sC,OAAO,mBAG/C3sC,KAAK8vP,cACN9vP,KAAK8vP,YAAc/+K,GAAE,SAAS3C,SAASwmO,IAA2BjmO,SAAS3uE,KAAKi1S,4BAEpFj1S,KAAKmjK,iBAAiBnjK,KAAK8vP,YAAaV,GAAe,CACnDC,aAAcrvP,KAAK2sC,OAAO,kBAEjC,EACDwoQ,sBAAuB,WACnBn1S,KAAKs6L,WAAWt+L,KAAK,yBAA+B0B,SACpDsC,KAAKs6L,WAAWt+L,KAAK,2BAAiC0B,gBAC/CsC,KAAK8vP,WACf,EACDolD,mBAAoB,WAChBl1S,KAAKs6L,WAAWrsH,YAjHU,4BAiHgCjuE,KAAK2sC,OAAO,YACzE,EACDmzH,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,QACD,MACJ,IAAK,UACL,IAAK,gBACD4G,KAAKm1S,wBACLn1S,KAAKo1S,uBACLp1S,KAAKq1S,iBACL,MACJ,IAAK,WACDr1S,KAAKk1S,qBACL,MACJ,IAAK,eACDl1S,KAAKo1S,uBACL,MACJ,QACIp1S,KAAKmiD,SAASvkD,GAEzB,EACD80I,SAAU,WACN1yI,KAAKs1S,oBACLt1S,KAAKmiD,UACR,IAELqwH,GAAkB,cAAesiI,IACjC,UC3IIU,GAAmB,gBAKnBC,GAA+BD,6BAI/BE,GAAoB,CACpBC,SAAUC,GACVC,UAAWC,GACXC,UAAWxnB,IAEXynB,KAAgBl1P,EAAAA,EAAAA,MAChBm1P,GAAyB,CACzBC,cAAep0R,GAAAA,KACfkqE,QAASlqE,GAAAA,KACT0jF,QAAS1jF,GAAAA,KACTksJ,aAAc,iBAAO,CACjBvpI,IAAK,EACLG,KAAM,EAFI,EAIdk7H,eAAgB,SAASliK,GACrB,GAAI,cAAgBA,EAAKxE,KACrB,OAAO4G,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAExC,GAEDq+R,GAAa9f,GAAAA,QAAmB2f,GAAeC,GAAyB,CACxEr4I,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3Bi0P,gBAAiBhsL,GAAAA,OAA2B,gCAC5CisL,eAAgBjsL,GAAAA,OAA2B,+BAC3CksL,eAAgBlsL,GAAAA,OAA2B,+BAC3CmsL,gBAAiBnsL,GAAAA,OAA2B,gCAC5CosL,WAAY,KACZC,cAAe,KACfC,gBAAiB,YAExB,EACD54I,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WAEJ,MAAO,YADUsB,GAAAA,OACev+E,QACnC,EACD2D,QAAS,CACLs5S,gBAAiB,cAEtB,CACChgO,OAAQ,WACJ,OAAOwmH,IACV,EACD9/L,QAAS,CACLg5S,gBAAiB,GACjBC,eAAgB,GAChBC,eAAgB,GAChBC,gBAAiB,MAG5B,EACDhzM,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK22S,0BAA2B,CACnC,EACD/f,sBAAuB,WACnB52R,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAASonO,IACzBx1S,KAAK42S,eACL52S,KAAK62S,iBACL72S,KAAK82S,oBACL92S,KAAK+2S,gBACR,EACDH,aAAc,WACV,IAAIt8G,EAAWvpH,GAAE,SAAS3C,SA1EHonO,yBA2EvBx1S,KAAK28M,UAAU7tI,UAAUwrH,EAC5B,EACDu8G,eAAgB,WACZ,IAAIxC,EAAar0S,KAAKowS,YAAcr/N,GAAE,SAAS3C,SA7ErBonO,4BA8EtBjB,EAAYv0S,KAAKqwS,WAAat/N,GAAE,SAAS3C,SA5ErBonO,2BA6ExBnB,EAAW1uS,OAAO4uS,GAClBv0S,KAAK28M,UAAUr1M,QAAQ+sS,EAC1B,EACDyC,kBAAmB,WACf,IAAIxC,EAAgBt0S,KAAK2zS,eAAiB5iO,GAAE,SAAS3C,SAlFxBonO,+BAmFzBwB,EAAeh3S,KAAKi3S,cAAgBlmO,GAAE,SAAS3C,SAASqnO,IACxD1E,EAAiBhgO,GAAE,SAAS3C,SAjFKqnO,wCAkFjCzE,EAAiB,IAAI5hD,GAAcr+K,GAAE,UAAU/W,WAC/Ci3O,EAAQjxS,KAAKk3S,kBAAoBnmO,GAAE,SAAS3C,SAlFhBqnO,mCAmFhCz1S,KAAKm3S,yBACLH,EAAarxS,OAAOorS,EAAeprS,OAAOqrS,IAAiBrrS,OAAOsrS,GAClEqD,EAAc3uS,OAAOqxS,GACrBh3S,KAAK28M,UAAUh3M,OAAO2uS,EACzB,EACDyC,eAAgB,WACZ,IAAIK,EAAoBrmO,GAAE,SAAS3C,SAxFhBonO,2BAwF+C7mO,SAAS3uE,KAAKg6D,YAC5Eq9O,EAAmB,CACnBtyP,SAAS,EACT/3B,MAAO,IACP5yB,QAAS4F,KAAK2sC,OAAO,kBACrBniC,SAAU,CACNqjM,GAAI7tM,KAAKg6D,aAGjBh6D,KAAKs3S,WAAat3S,KAAKmjK,iBAAiBi0I,EAAmBtC,GAAWuC,EACzE,EACDF,uBAAwB,WACpBn3S,KAAKk3S,kBAAkBvwS,KAAK3G,KAAK2sC,OAAO,mBAC3C,EACD+qP,gBAAiB,WACb,IAAI9c,EAAe56Q,KAAK2sC,OAAO,aAAe3sC,KAAK2sC,OAAO,mBAAqB,YAC3E4qQ,EAAgB7B,GAAkB96B,GACtC56Q,KAAKk3R,UAAY,IAAIqgB,EAAcv3S,MACnCA,KAAKk3R,UAAUuZ,kBAAkB1iQ,IAAI/tC,KAAKw3S,iBAAiB16S,KAAKkD,OAChEA,KAAKk3R,UAAUwZ,iBAAiB3iQ,IAAI/tC,KAAK8zS,gBAAgBh3S,KAAKkD,OAC9DA,KAAKk3R,UAAUyZ,qBAAqB5iQ,IAAI/tC,KAAKy3S,oBAAoB36S,KAAKkD,MACzE,EACDi3R,eAAgB,WACZj3R,KAAKmiD,WACLniD,KAAK03S,gBAAkB13S,KAAK2/J,sBAAsB,cAClD3/J,KAAK23S,mBAAqB33S,KAAK2/J,sBAAsB,iBACrD3/J,KAAK43S,wBACR,EACDA,uBAAwB,WACpB53S,KAAK63S,gBAAgB73S,KAAKqhK,sBAAsB,eAChDrhK,KAAK83S,mBAAmB93S,KAAKqhK,sBAAsB,iBACtD,EACDt0H,GAAI,SAASvuC,GACT,IAAIgF,EAASxD,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAIvC,MAHI,aAAetZ,GAAa,gBAAkBA,GAC9CwB,KAAK43S,yBAEFp0S,CACV,EACDq0S,gBAAiB,SAASlxF,GACtB,GAAI,IAAM7uM,UAAUnX,OAChB,OAAOX,KAAK6xS,iBAEZ7xS,KAAKqwS,YAAcrwS,KAAKk3R,YACxBl3R,KAAKqwS,WAAWtiO,OAAO44I,GACvB3mN,KAAKk3R,UAAUub,eAAe9rF,GAC9B3mN,KAAK6xS,iBAAmBlrF,EAE/B,EACDmxF,mBAAoB,SAASnxF,GACzB,GAAI,IAAM7uM,UAAUnX,OAChB,OAAOX,KAAKwyS,oBAEZxyS,KAAKi3S,eAAiBj3S,KAAKk3R,YAC3Bl3R,KAAKi3S,cAAclpO,OAAO44I,GAC1B3mN,KAAKk3R,UAAUwb,kBAAkB/rF,GACjC3mN,KAAKwyS,oBAAsB7rF,EAElC,EACD6wF,iBAAkB,WACdx3S,KAAK+3S,mBAAkB,GACvB/3S,KAAKg4S,kBACR,EACDD,kBAAmB,SAAS75S,GACxB,GAAI4Z,UAAUnX,OAAS,EACnB,OAAOX,KAAK22S,yBAEhB32S,KAAK22S,yBAA2Bz4S,CACnC,EACD85S,iBAAkB,WACdh4S,KAAKi4S,eACLj4S,KAAK03S,iBACR,EACDD,oBAAqB,WACjBz3S,KAAK+3S,mBAAkB,GACvB/3S,KAAK6zS,qBACR,EACDA,oBAAqB,WACjB7zS,KAAKi4S,eACLj4S,KAAK23S,oBACR,EACD7D,gBAAiB,WACb9zS,KAAKk2S,gBACLl2S,KAAK+3S,mBAAkB,EAC1B,EACDj4I,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,aACL,IAAK,gBACD4G,KAAKi3R,iBACL,MACJ,IAAK,kBACL,IAAK,iBACL,IAAK,iBACL,IAAK,kBACDj3R,KAAKypK,cACL,MACJ,IAAK,kBACDzpK,KAAKm3S,yBACL,MACJ,QACIn3S,KAAKmiD,SAASvkD,GAEzB,EACDizC,QAAS,WACL,OAAOgxG,GAAiB7hJ,KAAK28M,UAAU5xM,WAAW6kE,GAAG,GACxD,EACDoc,QAAS,SAASksN,GAId,YAHI,IAAWA,GACXl4S,KAAKm4S,eAAeD,GAEjBl4S,KAAKk3R,UAAUlrM,SACzB,EACDmsN,cAAe,SAASC,GACpBp4S,KAAK83S,mBAAmBM,EAC3B,EACD5yM,QAAS,WACAxlG,KAAKqhK,sBAAsB,gBAGhCrhK,KAAKk3R,UAAUyb,iBACf3yS,KAAKg4S,mBACR,EACDC,aAAc,WACNj4S,KAAK+3S,qBAAuB/3S,KAAKg6D,WAAWiV,GAAG,aAC/CjvE,KAAKs3S,WAAWxpO,OAEpB9tE,KAAKw3R,OACR,EACD0e,cAAe,WACXl2S,KAAKs3S,WAAWtpO,OAChBhuE,KAAKy3R,SACR,EACD/kJ,SAAU,WACN1yI,KAAKk3R,UAAU3qP,UACfvsC,KAAKmiD,WACDniD,KAAKs3S,YACLt3S,KAAKs3S,WAAWt9O,WAAWt8D,QAElC,IAEL80K,GAAkB,eAAgB2jI,IAClC,ICtQA,GDsQA,GE7OIkC,GAAoB,aACxB,GAAejrF,GAAAA,QAAyB,CACpCxvD,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3Bm2P,oBAAoB,GAE3B,EACDv1P,KAAM,WAAW,IACTw1P,EADS,OAEbv4S,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKw4S,2BAA6B,SAAAvvS,GACT,EAAK8/F,gBACP1B,kBAAoB,EAAK0B,gBAAgBrE,aACxD,EAAK+zM,iBAAmB,GAExB,EAAKA,kBAAoBxvS,EAAEm9F,mBAC3Bn9F,EAAEm9F,iBAAiBzkC,MAAQ,EAAK82O,iBAEvC,EAAE,QAAUF,EAAwBv4S,KAAK+oG,uBAAoB,IAAWwvM,GAAiCA,EAAsBxrQ,GAAG,4BAA6B/sC,KAAKw4S,2BACxK,EACDnyM,OAAQ,WACJrmG,KAAKy4S,iBAAmB,CAC3B,EACDl1M,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK04S,qBACL14S,KAAKy4S,iBAAmB,CAC3B,EACDE,sBAAuB,SAASr2S,GAAK,WAC7BkB,EAASutE,KACTmb,EAAUlsF,KAAKsC,MASnB,OARAtC,KAAK2xN,eAAe9kK,MAAK,SAAC/tD,EAAG8F,GACzB,IAAIksN,EAAQ//I,GAAEnsE,GACV02I,EAAW,EAAKyyE,aAAa+C,GACjC,GAAI5kI,EAAUD,GAAUC,EAAS,EAAK+D,MAAMqrD,GAAWh5I,GAAO,EAAKs2S,cAAct9J,EAAUh5I,GAEvF,OADAkB,EAASstN,GACF,CAEd,IACMttN,CACV,EACDqvN,0BAA2B,SAASC,EAAU7pN,GACtC,OAASA,QAAK,IAAWA,GAAKA,EAAE2uC,QAChC53C,KAAK64S,iBAAiB5vS,EAAE2uC,UAExB53C,KAAKmiD,SAAS2wK,EAAU7pN,GACxBjJ,KAAK04S,qBAEZ,EACDE,cAAe,SAASE,EAAOC,GACvBD,GAASA,EAAK,aACdA,EAAQA,EAAMx+S,MAElB,IACI,OAAOwL,KAAKC,UAAU+yS,KAAWhzS,KAAKC,UAAUgzS,EAGnD,CAFC,MAAO9vS,GACL,OAAO6vS,IAAUC,CACpB,CACJ,EACDC,oBAAqB,SAASF,EAAOC,GACjC,OAAO/4S,KAAK44S,cAAcE,EAAOC,EACpC,EACDE,mBAAoB,SAASrhQ,EAASsO,GAClC,IAAI1iD,GAAS,EAiBb,OAhBIxD,KAAK2sC,OAAO,aACPiL,EAAQj3C,SACT6C,GAAS,IAEbqpD,EAAAA,EAAAA,IAAKjV,GAAS,SAACjvC,EAAG0mF,GACV,WAAaA,EAAOhqF,OACpB7B,GAAS,GACTqpD,EAAAA,EAAAA,IAAK3G,GAAO,SAACpnD,EAAG8F,GACZ,QAAI,IAAWyqF,EAAO/0F,KAAKgI,KAAO+sF,EAAO/0F,KAAKgI,MAAQsC,EAAKtC,IAEvD,OADAkB,GAAS,GACF,CAEd,IAER,KAEEA,CACV,EACD01S,gBAAiB,WAAW,WACxB,GAAIl5S,KAAK2sC,OAAO,sBAAuB,CACnC,IAAInpC,EpFjFS,SAAS21S,EAAUrmF,EAAUmM,EAAQm6E,GAC1D,IAAIC,EAAgB,CAAC,EACjBj6E,EAAgB,CAAC,EACjBk6E,EAAa,EACbC,EAAc,EACd/1S,EAAS,GACb21S,EAASz4S,SAAS,SAASkE,EAAMzD,GAC7B,IAAImB,EAAM08N,GAAcp6N,EAAMq6N,GAC9Bo6E,EAAc/2S,GAAOnB,CACxB,IACD2xN,EAASpyN,SAAS,SAASkE,EAAMzD,GAC7B,IAAImB,EAAM08N,GAAcp6N,EAAMq6N,GAC9BG,EAAc98N,GAAOnB,CACxB,IAED,IADA,IAAIu5R,EAAYnxR,KAAKkuB,IAAI0hR,EAASx4S,OAAQmyN,EAASnyN,QAC1CQ,EAAQ,EAAGA,EAAQu5R,EAAY4e,EAAYn4S,IAAS,CACzD,IAAIq4S,EAAU1mF,EAAS3xN,GACnBs4S,EAAet4S,EAAQm4S,EAAaC,EACpCG,EAAcP,EAASM,GAE3B,IADiBD,GAAWE,IAAgBx6E,GAAgBw6E,EAAa5mF,EAAUsM,EAAeH,GAE1Fy6E,IACAl2S,EAAOpD,KAAK,CACRiF,KAAM,SACN/C,IAAK28N,EAAOy6E,GACZv4S,MAAOA,EACPg+N,QAASu6E,IAEbH,IACAp4S,SAED,CACH,IAAImB,EAAM08N,GAAcw6E,EAASv6E,GAC7B06E,EAAWN,EAAc/2S,GACzB68N,EAAUg6E,EAASQ,GACvB,GAAKx6E,EAOE,IAAIw6E,IAAaF,EAWpB,OAVKL,EAAaj6E,EAASq6E,IACvBh2S,EAAOpD,KAAK,CACRiF,KAAM,SACN/K,KAAMk/S,EACNl3S,IAAK28N,EAAOu6E,GACZr4S,MAAOA,EACPg+N,QAASA,GAKpB,MAlBGm6E,IACA91S,EAAOpD,KAAK,CACRiF,KAAM,SACN/K,KAAMk/S,EACNr4S,MAAOA,GAelB,CACJ,CACD,OAAOqC,CACV,CoFuBwBo2S,CAAY55S,KAAK65S,YAAa75S,KAAK6nO,cAAcpP,eAAe,SAAAn+N,GACzE,OAAIA,QAAQ,IAAWA,EAAI,WAChBA,EAAI,WAER,EAAK21F,MAAM31F,EACrB,GAAE0F,KAAKg5S,oBAAoBl8S,KAAKkD,OACjC,GAAIwD,GAAUxD,KAAK65S,YAAYl5S,SAAWX,KAAKi5S,mBAAmBz1S,EAAQxD,KAAK65S,aAG3E,OAFA75S,KAAK64S,iBAAiBr1S,GAAQ,GAC9BxD,KAAKoyN,uBACE,EAEPpyN,KAAK04S,oBAEZ,CACD,OAAO,CACV,EACDA,mBAAoB,WAChB,GAAI14S,KAAK2sC,OAAO,sBAAuB,CACnC,IAAIuZ,EAAQlmD,KAAK6nO,cAAcpP,cAC/B,IACIz4N,KAAK65S,aAAcp0P,EAAAA,GAAAA,IAAO,EAAM,GAAIS,GAC/BlmD,KAAKsC,QACNtC,KAAK65S,YAAc75S,KAAK65S,YAAY91S,KAAI,SAAC+1S,EAAW34S,GAAZ,6BACnCk3S,GAAoBnyP,EAAM/kD,KADS,iBAE9B24S,GAF8B,KAO/C,CAFC,MAAO7wS,GACLjJ,KAAK65S,aAAcp0P,EAAAA,GAAAA,GAAO,GAAIS,EACjC,CACJ,CACJ,EACDwsF,SAAU,WACN1yI,KAAK+oG,gBAAgBzyD,IAAI,4BAA6Bt2C,KAAKw4S,4BAC3Dx4S,KAAKmiD,UACR,EACD43P,gBAAiB,SAASrrN,EAASxoC,EAAOmpC,EAAQ2qN,GAAkB,WAChE,GAAIA,EACAh6S,KAAKkyN,YAAY7iI,EAAOluF,MAAOkuF,EAAO/0F,KAAM,KAAM0F,KAAK24S,sBAAsBtpN,EAAO/sF,UACjF,CACH,IAAI23S,EAAc/zP,EAAM2oC,GAAWH,EAASxoC,EAAOmpC,EAAO/sF,MACtD23S,GACAjuQ,GAAO0iD,EAASxoC,EAAOmpC,EAAO/sF,IAAK+sF,EAAO/0F,MAAMs0D,MAAK,WACjD,EAAKsjK,YAAYhsK,EAAM9kD,QAAQ64S,GAAcA,EAAa,KAAM,EAAKtB,sBAAsBtpN,EAAO/sF,KACrG,GAER,CACJ,EACD43S,gBAAiB,SAASxrN,EAASxoC,EAAOmpC,EAAQ2qN,GAAkB,YAChE3qP,EAAAA,GAAAA,IAAK2qP,GAAoB7xS,GAAOumF,EAASxoC,EAAOmpC,EAAO/0F,KAAM+0F,EAAOluF,QAAQytD,MAAK,WAC7E,IAAIurP,EACJ,EAAKC,2BAA2B/qN,GAChC,IAAIslI,EAAiB,EAAK0lF,kBAAkBhrN,EAAO/0F,MACnD,EAAK43N,YAAY,QAAUioF,EAAgB9qN,EAAOluF,aAAU,IAAWg5S,EAAgBA,EAAgBj0P,EAAMvlD,OAAQ0uF,EAAO/0F,KAAMq6N,GAClI,EAAK2lF,4BACL,EAAK7B,kBACR,GACJ,EACD4B,kBAAmB,SAASE,GACxB,OAAOv6S,KAAKszN,gBACf,EACDknF,oCAAqC,SAASC,GAC1C,IAAI35H,EAAgB9gL,KAAK2sC,OAAO,iBAC5Bm0I,EAAgB25H,EAChBz6S,KAAK2sC,OAAO,gBAAiBm0I,EAAgB,GACtCA,IAAkB25H,GAAe,IAAMz6S,KAAK2sC,OAAO,iBAAiBhsC,OAC3EX,KAAK2sC,OAAO,gBAAiB,IAE7B3sC,KAAK8oO,yBAEZ,EACDsxE,2BAA4B,SAAS/qN,GACjC,IAAIyxF,EAAgB9gL,KAAK2sC,OAAO,iBAC5B0iD,EAAOluF,OAAS2/K,GAChB9gL,KAAK2sC,OAAO,gBAAiBm0I,EAAgB,EAEpD,EACDw5H,0BAA2Bx4R,GAAAA,KAC3B44R,gBAAiB,SAAShsN,EAASxoC,EAAOmpC,EAAQ2qN,GAAkB,WAC5D74S,EAAQ64S,EAAmB3qN,EAAOluF,MAAQ0tF,GAAWH,EAASxoC,EAAOmpC,EAAO/sF,KAEhF,GADkB03S,EAAmB3qN,EAAO8vI,QAAUj5K,EAAM/kD,GAC3C,CACb,IAAIw5S,EAAsB36S,KAAK24S,sBAAsBtpN,EAAO/sF,KACxDwpO,EAAoB9rO,KAAK63N,kBAAkB8iF,GAC/C36S,KAAK4qO,qBAAqB+vE,GAAqB/rP,MAAK,WAC5CorP,GACA,EAAKtuE,yBAAyBvqO,EAAQ,GACtC,EAAK0qO,yBAAyB8uE,EAAqB7uE,GACnD,EAAK0uE,oCAAoCr5S,KAEzC,EAAKyqO,0BAA0BzqO,GAC/B,EAAK0qO,yBAAyB8uE,EAAqB7uE,GAE1D,IACD9rO,KAAKy4S,kBACR,CACJ,EACDI,iBAAkB,SAASjhQ,EAASoiQ,GAAkB,WAC9C9zP,EAAQlmD,KAAK6nO,cAAcpP,cAC3B/pI,EAAU,CACVpsF,IAAKtC,KAAKsC,IAAIxF,KAAKkD,MACnBiwF,MAAOjwF,KAAKiwF,MAAMnzF,KAAKkD,OAEvB8oG,EAAiB9oG,KAAK+oG,gBACtB/H,EAAW8H,EAAe9H,WAC1BzL,EAAQuT,EAAevT,SACvByL,GAAYzL,KACZ39C,EAAUA,EAAQpd,QAAO,SAAA51B,GAAI,MAAI,WAAaA,EAAKS,WAAQ,IAAWT,EAAKzD,KAA9C,KAEjCy2C,EAAQl3C,SAAQ,SAAA2uF,GAAM,OAAI,EAAK,IAAIp/E,OAAOo/E,EAAOhqF,KAAM,aAAaqpF,EAASxoC,EAAOmpC,EAAQ2qN,EAAtE,IACtBh6S,KAAK6vN,oBAAsB3pK,EAAMvlD,OACjCX,KAAK04S,qBACL14S,KAAKu4M,yBACR,EACDke,uBAAwB,SAASj8I,EAAY66I,EAAYl0N,GACrD,IAAI6lD,EAAqBwzB,EAAWzvE,SAAS/K,KAAK4zN,iBAAiBh6N,IAAIuH,GACvE07D,EAAAA,EAAAA,cAAyB2d,EAAW5gF,IAAI,GAAIy7N,EAAWz7N,IAAI,GAAIotD,EAClE,EACD84G,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,QACoB4G,KAAKk5S,gBAAgBt7S,EAAKM,QAE3C8B,KAAKmiD,SAASvkD,GAElB,MACJ,IAAK,aACIoC,KAAK2sC,OAAO,uBAA0B/uC,EAAKM,OAC5C8B,KAAK2sC,OAAO,QAAS,IAEzB3sC,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,qBACD,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,IC/OL,IACIg9S,6BAA8B,WAC1B,IAAIrzM,EAAavnG,KAAK2sC,OAAO,cACzBkuQ,GAAiB,EACjBvgT,EAAO,CAAC,EA+BZ,OA9BI0F,KAAK86S,qBAVQ,SAAAxgT,GAAI,OAAIuK,MAAMC,QAAQxK,IAASA,EAAKurC,OAAM,SAAAjhC,GAG/D,OAFmB,IAAM5G,OAAOgB,KAAK4F,GAAMjE,QACpB,QAASiE,GAAQ,UAAWA,GACRC,MAAMC,QAAQF,EAAKshD,MACjE,GAJ4B,CAUW60P,CAAmBxzM,KAC/CjtG,EAAOitG,EAAWpjG,QAAO,SAACO,EAAaE,GACnC,IAAIshD,EAAQthD,EAAKshD,MAAMniD,KAAI,SAAAi3S,GAUvB,OATK36R,EAAAA,EAAAA,IAAS26R,KACVA,EAAY,CACRr0S,KAAMq0S,GAEVH,GAAiB,GAEf,QAASG,IACXA,EAAU14S,IAAMsC,EAAKtC,KAElB04S,CACV,IACD,OAAOt2S,EAAYuL,OAAOi2C,EAC7B,GAAE,IACHqhD,EAAa,CACThP,MAAO,CACHlzF,KAAM,QACN/K,KAAMA,GAEVi7F,MAAO,CACHrlF,SAAU,MACV0lF,qBAAqB,IAGzBilN,IACAtzM,EAAWrE,WAAa,SAGzBqE,CACV,GClCE,SAAS0zM,GAAgB/gP,GAC5B,IAAIghP,EAAuBC,EAC3B,OAAOjhP,IAAMpZ,EAAAA,EAAAA,MAAc,QAAUo6P,GAAyBC,GAAap6P,EAAAA,EAAAA,OAAa6Z,wBAAqB,IAAWsgP,OAAwB,EAASA,EAAsBz8S,KAAK08S,EAAYjhP,GAAM,IACzM,CACM,SAASkhP,GAAiB5uS,EAAS6uS,GACtC,ICfqBC,EDejBxkR,EAAQmkR,GAAgBzuS,GAC5B,OAAOsqB,GChBcwkR,EDgBGxkR,EAAM,SAAS7mB,OAAOm1D,EAASi2O,MCfpC3iR,OAAO4iR,EAAU15S,QAAQ,KAAM,KAAO,EDeS,CACrE,CEwDD,IAkBI25S,GAjBAC,GAAkB,eAClBC,GAAqB,gBAGrBC,GAAmB,gBACnBC,GAA0B,uBAC1BC,GAAwB,qBAExBC,GAA6B,0BAI7BC,GAAuB,oBAIvBC,IAAmB3nP,EAAAA,GAAAA,IAAc,SAE1B4nP,GAAW5uF,GAAAA,QAAyB,CAC3CjU,iBAAkB,CAACsiG,GANQ,uBAMsChvS,KAAK,KACtEqqM,eAAgB,WACZ,IAAIrnJ,EAAOzvD,KACPi8S,EAAmB,SAASr1R,GAC5B,IAAIkqM,EAAQorF,EAAmBt1R,GACXkqM,EAAM7hJ,GAAGxf,EAAK9iB,OAAO,sBAEnC,SAASmkL,EAAOlqM,GACd,IAAI23L,EAAiBuS,EAAMtmN,WAAWi6B,IAClC,SAAW7d,IACX23L,EAAiBuS,EAAMtmN,WAAWi6B,IAAMqmC,GAAUrb,EAAKuK,YAAckR,GAAe4lJ,IAExFrhK,EAAK4gB,SAASkuI,EACjB,CANC,CAMAuS,EAAOlqM,GACTkqM,EAAQorF,EAAmBt1R,IAE/B6oC,EAAK9iB,OAAO,iBAAkBk1G,GAAiBivE,IAC/CrhK,EAAK0sP,aAAarrF,EACrB,EAED,SAASorF,EAAmBt1R,GACxB,IAAIwnL,EAAY3+I,EAAK2+I,YACjB11C,EAAkB5tF,GAAUrb,EAAKuK,YACjC82J,EAAQ//I,GAAEthB,EAAK9iB,OAAO,mBACtByvQ,GAAgB,EACpB,IAAKtrF,EAAMnwN,OACP,OAAOowE,KAEX,KAAOqrO,GAAe,CAClB,IAAIC,EAAYvrF,EAAMlqM,KACtB,IAAKy1R,EAAU17S,OACX,MAEJ,IAAI27S,EAAmBD,EAAU7xS,WAAWi6B,IAAMymC,GAAemxO,GAAa,GAC9ED,EAAgBE,EAAmB5jJ,EAAkB01C,GAAakuG,EAAmBluG,KAEjF0iB,EAAQurF,EAEf,CACD,OAAOvrF,CACV,CACD,OAAOrrK,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BqrK,UAAW1rM,GAAAA,KACX2rM,WAAY3rM,GAAAA,KACZ8rM,OAAQ,WAEJ,OADAquF,EAAiB,SACV,CACV,EACDpuF,SAAU,WAEN,OADAouF,EAAiB,SACV,CACV,GAER,EACDr+I,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BiiJ,mBAAmB,EACnBm4G,oBAAoB,EACpBr2D,kBAAkB,EAClB9e,eAAe,EACfiuD,cAAe,WACfmnB,oBAAoB,EACpBptB,eAAe,EACf0G,iBAAiB,EACjB5G,eAAe,EACfknB,gBAAiBhsL,GAAAA,OAA2B,0BAC5CisL,eAAgBjsL,GAAAA,OAA2B,yBAC3CksL,eAAgBlsL,GAAAA,OAA2B,yBAC3CqyL,gBAAiBryL,GAAAA,OAA2B,0BAC5CksK,SAAU,KACVomB,cAAe,KACfC,cAAe,KACfC,aAAc,eACdC,eAAgBzyL,GAAAA,OAA2B,yBAC3C0yL,YAAa,KACbhvE,SAAS,EACTivE,gBAAiB,KACjBC,mBAAmB,EACnBC,cAAe,QACfC,iBAAiB,EACjB/4G,oBAAoB,EACpByqB,gBAAiB,CACb18L,KAAM,UAEVq2K,cAAc,EACd40G,cAAc,EACdC,eAAe,EACfC,gBAAiB,SAAS/iT,GACtB,OAAOA,EAAOA,EAAKw1S,iBAAc,CACpC,EACDwN,UAAW,SAAShjT,GAChB,OAAOA,EAAOA,EAAKq1S,WAAQ,CAC9B,GAER,EACD7xI,qBAAsB,WAClB,IAAIw9B,EAAY7hL,KAChB,OAAOzZ,KAAKmiD,WAAWlyC,OAAO2lR,KAA0B,CAAC,CACrDl/M,OAAQ,WACJ,OAAQ80E,EACX,EACDpuJ,QAAS,CACLo/S,oBAAoB,IAEzB,CACC9lO,OAAQ,SAAS6+J,GACb,OAAQ/pF,KAAoBxzE,GAAAA,eAAyB,YAAcA,GAAAA,OAAe1D,YAAc,YAAcihK,EAAQ97O,QACzH,EACD2D,QAAS,CACLi4R,cAAe,UACfunB,aAAc,eAEnB,CACClmO,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,WACJ,OAAOwmH,GAAW5B,EACrB,EACDl+L,QAAS,CACLg5S,gBAAiB,GACjBC,eAAgB,GAChBC,eAAgB,GAChBmG,gBAAiB,GACjBl0G,cAAc,KAGzB,EACD5gC,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAKu9S,qBAAoB,EAEhC,EACD/pF,WAAY,WACR,OAAOgoF,EACV,EACD5pF,aAAc,WACV,MAlJiB,gBAmJpB,EACD0B,eAAgB,WACZ,OAAOtzN,KAAKolQ,WACf,EACDo4C,0BAA2B,SAASv0S,GAChCjJ,KAAKy9S,8BAAgCx0S,CACxC,EACDy0S,yBAA0B,WACtB,OAAO19S,KAAKy9S,6BACf,EACDE,qBAAsB,WACb39S,KAAK2sC,OAAO,WAGb3sC,KAAK49S,mBAAqB59S,KAAKszN,iBAAiBvoN,SAAS,kBAAwBA,SAAS,uBAA6BA,SAAS/K,KAAK4zN,iBAFrI5zN,KAAK49S,mBAAqB59S,KAAKszN,iBAAiBvoN,SAAS/K,KAAK4zN,gBAIrE,EACDilF,iBAAkB,WACd74S,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK29S,uBACL39S,KAAKu9S,qBAAoB,EAC5B,EACDrxE,YAAa,SAASpsK,EAAaqsK,GAE/B,OADcnsO,KAAKmiD,SAAS2d,EAAaqsK,GAC1Bv9K,MAAM,WACjB5uD,KAAK29S,sBACR,GACJ,EACD3xE,WAAY,SAASlsK,GAEjB,OADc9/D,KAAKmiD,SAAS2d,GACblR,MAAM,WACjB5uD,KAAK29S,sBACR,GACJ,EACDhtF,cAAe,WACX,OAAO3wN,KAAK49S,kBACf,EACDj0E,mBAAoB,SAAS1gO,GACzB,GAAI,WAAajJ,KAAK2sC,OAAO,mBAAoB3sC,KAAK87N,eAAe7yN,EAAEu2D,eAGvE,OAAOx/D,KAAKmiD,SAASl5C,EACxB,EACDkqN,yBAA0B,WACtB,OAAO,CACV,EACD5vH,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK+oG,gBAAgB5B,2BACrBnnG,KAAKolQ,YAAcplQ,KAAKg6D,WACxBh6D,KAAK69S,kBACL79S,KAAK0kM,qBArMoB,GAsMzB1kM,KAAK89S,0BACR,EACDC,kBAAmB,WACf,MAAO,iBAAmB/9S,KAAK2sC,OAAO,eACzC,EACDqxQ,gBAAiB,WACb,MAAO,eAAiBh+S,KAAK2sC,OAAO,eACvC,EACDijL,mBAAoB,WAChB,IAAIquF,EAAej+S,KAAK+9S,oBACpBG,EAAal+S,KAAKg+S,kBACtB,OAAOv4P,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B6+C,UAAU5yC,EAAAA,GAAAA,eAAc6vP,GAAgBC,GAAY,IAE3D,EACDpD,kBAAmB,WACf,OAAO96S,KAAK2sC,OAAO,UACtB,EACDwxQ,0BAA2B,SAAS3lK,GAChC,OAAOx4I,KAAKszN,iBAAiBt3N,KAAK,IAAIiU,OAAOyrS,KAAmB9rO,GAAG4oE,GAAYx8I,KAAK,IAAIiU,OAAO2rS,IAClG,EACDwC,2BAA4B,WACxB,MAAO,KACV,EACDP,gBAAiB,WACb,IAAI33D,EAAmBlmP,KAAK2sC,OAAO,oBAC/B4vQ,EAAqBr2D,GAAoBlmP,KAAK2sC,OAAO,sBACrD0xQ,EAAoBn4D,GAAoBlmP,KAAK+9S,uBAAyB/9S,KAAK+oG,gBAAgB1B,gBAC/FrnG,KAAKu7S,YAAcv7S,KAAKmjK,iBAAiBnjK,KAAKg6D,WAykB3CuhP,IAAepF,GAzkByD,CACvE3pR,OAAQxsB,KAAK2sC,OAAO,UACpBhc,MAAO3wB,KAAK2sC,OAAO,SACnBnnB,SAAUxlB,KAAK2sC,OAAO,cAAgBu5M,EACtCowC,SAAUt2R,KAAKs+S,eAAexhT,KAAKkD,MACnCw2S,WAAY+F,EAAqBv8S,KAAKw3S,iBAAiB16S,KAAKkD,MAAQ,KACpEy2S,cAAe4H,EAAoBr+S,KAAKu+S,qBAAqBzhT,KAAKkD,MAAQ,KAC1Eq1R,cAAer1R,KAAK2sC,OAAO,iBAC3BkpP,UAAW71R,KAAK2sC,OAAO,sBACvByiP,cAAepvR,KAAK2sC,OAAO,iBAC3BmpP,gBAAiB91R,KAAK2sC,OAAO,mBAC7BuiP,cAAelvR,KAAK2sC,OAAO,iBAC3BypQ,gBAAiBp2S,KAAK2sC,OAAO,mBAC7B0pQ,eAAgBr2S,KAAK2sC,OAAO,kBAC5B2pQ,eAAgBt2S,KAAK2sC,OAAO,kBAC5B4pQ,gBAAiBv2S,KAAK2sC,OAAO,mBAC7B8pP,aAAa,IAEjBz2R,KAAKolQ,YAAcr0L,GAAE/wE,KAAKu7S,YAAY1qQ,WAClC7wC,KAAK2sC,OAAO,iBACZ3sC,KAAKolQ,YAAYh3L,SAAS0tO,IAE9B97S,KAAKw+S,0BACR,EACDA,yBAA0B,WACtBx+S,KAAK4tR,cAAgB5tR,KAAK2/J,sBAAsB,YAChD3/J,KAAKy+S,mBAAqBz+S,KAAK2/J,sBAAsB,iBACrD3/J,KAAK0+S,mBAAqB1+S,KAAK2/J,sBAAsB,gBACxD,EACD2+I,eAAgB,SAASr1S,GACrBjJ,KAAK4tR,eAAiB5tR,KAAK4tR,cAAc3kR,EAC5C,EACD0hK,eAAgB,WACZ3qK,KAAK4pK,iBAAiBgsB,oBAAoB,CACtCrgG,MAAO,IAAI7a,IAAkB,SAASF,EAAYlgF,IAC1C8sC,EAAAA,EAAAA,IAAc9sC,GACVA,EAAKgI,KACLk4E,EAAW7zE,KAAKrM,EAAKgI,KAGzBk4E,EAAW7zE,KAAK8C,OAAOnP,GAE9B,GAAG,CAAC,OAAQ0F,KAAK2sC,OAAO,qCAE7B3sC,KAAKmiD,UACR,EACDqtK,4BAA6B,SAASl1N,EAAMkgF,GAExC,GADAx6E,KAAKmiD,SAAS7nD,EAAMkgF,GAChBlgF,EAAKmsB,KAAM,CACX,IAAI6/O,EAAQ5sE,GAAkBp/L,EAAKmsB,MAAM2nD,SA/R1B,qBAgSXuwO,EAAiB5tO,GAAE,SAAS3C,SAjSP,+BAkSzBuwO,EAAeh5S,OAAO2gQ,GACtB9rL,EAAWlzE,QAAQq3S,EACtB,CACJ,EACDlvF,mBAAoB,WAChB,MAAO,CAAC,OAAQ,OAAQ,OAC3B,EACD8tF,oBAAqB,SAASqB,GAC1B,IAAI91M,EAAiB9oG,KAAK+oG,gBACtB81M,EAAqB7+S,KAAK+9S,qBAAuBa,IAAgB91M,EAAenE,cAAgB3kG,KAAK4jG,cACrG5jG,KAAK8+S,uBAAuBD,GAC5B7+S,KAAK++S,wBAEL/+S,KAAKu7S,YAAYvvN,SAAS6yN,IAAuB/1M,EAAenE,aAChE3kG,KAAKg/S,kBAAkBh/S,KAAKi/S,4BAA8Bj/S,KAAK4jG,eAC/D5jG,KAAKk/S,2BAA0B,GAEtC,EACDD,wBAAyB,WACrB,OAAOj/S,KAAKg+S,mBAAqBh+S,KAAK+oG,gBAAgBrE,UACzD,EACDy6M,gCAAiC,SAASt2Q,GAItC,OAHIwlB,EAAAA,EAAAA,IAAUxlB,KACV7oC,KAAKo/S,sBAAwBv2Q,GAE1B7oC,KAAKo/S,qBACf,EACDC,iCAAkC,SAAS16M,GACnC3kG,KAAKk/S,8BAGLv6M,GAAa3kG,KAAK2sC,OAAO,mBACzB3sC,KAAKs/S,2BAA6B/pR,WAAW,WACzC,IAGQgqR,GAHOv/S,KAAK2wN,gBAAgBhwN,SACIX,KAAKm/S,oCAGzC,QAAUI,EAAoBv/S,KAAKu7S,mBAAgB,IAAWgE,GAA6BA,EAAkBtH,eAEpH,EAACn7S,KAAKkD,QAEPs1B,aAAat1B,KAAKs/S,4BAClBt/S,KAAKu7S,aAAev7S,KAAKu7S,YAAYrF,iBAEpCvxM,GACD3kG,KAAKm/S,iCAAgC,GAE5C,EACDtsF,0BAA2B,YAClB7yN,KAAK+yN,uBAAwBjyK,EAAAA,EAAAA,OAC9B9gD,KAAKu7S,aAAev7S,KAAKu7S,YAAYlrO,SAAS,GAElDrwE,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKm/S,iCAAgC,EACxC,EACDnsF,gBAAiB,WACbhzN,KAAKizN,kBACLjzN,KAAKu4M,yBACR,EACDinG,gCAAiC,WACxBx/S,KAAK2sC,OAAO,oBACb3sC,KAAKq/S,kCAAiC,EAE7C,EACDH,0BAA2B,SAAShhT,GAChC,IAAK4Z,UAAUnX,OACX,OAAOX,KAAKy/S,4BAEhBz/S,KAAKy/S,4BAA8BvhT,CACtC,EACDwhT,kBAAmB,WACf,IAAIvP,EAAanwS,KAAKu7S,YACtB,OAAQpL,GAAcrlO,GAAUqlO,EAAWt/P,WAAai6B,GAAUqlO,EAAW5oS,YAChF,EACDiwS,iBAAkB,SAASvuS,GACvBjJ,KAAKy+S,mBAAmBx1S,GACxB,IAAI6/F,EAAiB9oG,KAAK+oG,gBACtBD,EAAezB,kBAAoByB,EAAenE,aAClD3kG,KAAK2qO,sBACL7hI,EAAetG,UAAU,GACzBsG,EAAezC,UAEfrmG,KAAKu9S,qBAEZ,EACDuB,uBAAwB,SAASD,GAC7B,IAAIc,EAAuBC,EACvBC,EAAkB/0O,GAAU9qE,KAAKu7S,YAAY1qQ,WAAai6B,GAAU9qE,KAAKu7S,YAAYh0S,cAAgB,QAAUo4S,EAAwB,QAAUC,EAAyB5/S,KAAKu7S,YAAYvtI,sBAAmB,IAAW4xI,OAAyB,EAASA,EAAuBn7Q,WAAQ,IAAWk7Q,EAAwBA,EAAwB,GACzV,OAAOd,KAAwB7+S,KAAK0/S,qBAAuBG,EAC9D,EACDd,qBAAsB,WAAW,WACN/+S,KAAKg6D,WAAWiV,GAAG,cAEtC35C,aAAat1B,KAAK8/S,oBAClB9/S,KAAK8/S,mBAAqBvqR,YAAW,WACjC,EAAKi9L,eACR,IAER,EACD+rF,qBAAsB,SAASt1S,GAC3BjJ,KAAK0+S,mBAAmBz1S,GACHjJ,KAAK+oG,gBACNpE,aAAgB3kG,KAAK4jG,cAGrC5jG,KAAKu9S,sBAFLv9S,KAAKwyN,eAIZ,EACD0C,aAAc,SAAShvK,GACflmD,KAAK2sC,OAAO,aACZkgB,EAAAA,EAAAA,IAAK3G,EAAOlmD,KAAK+/S,aAAajjT,KAAKkD,OACnCA,KAAKggT,4BACLhgT,KAAKoyN,sBACDl1B,MACAl9L,KAAKigT,oCAGTjgT,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAE9B9X,KAAK29S,uBACL39S,KAAKu9S,qBAAoB,EAC5B,EACDyC,0BAA2B,WACvB,IAAIxhT,EAAYglJ,GAAaywE,GAAgBj0N,KAAKw+J,MAC9CtuJ,EAAW,wBACX8pD,EAAWh6D,KAAKg6D,WAChBgjP,EAAoBh9S,KAAK2sC,OAAO,qBACpCqtB,EAASiU,YA5ZmB,6BA4ZwB+uO,GACpDz+O,EAAAA,EAAAA,IAAiBvE,EAAUx7D,EAAW0R,GAClC8sS,GACAz+O,EAAAA,EAAAA,GAAgBvE,EAAUx7D,EAAW0R,EAAU,SAASjH,GACpDjJ,KAAK8gK,cAAc,SAAS73J,GACxB,IAAImjS,EAASr7N,GAAE9nE,EAAElI,MAAMy+D,eAAe30D,SACtC7K,KAAKkgT,sBAAsB9T,GACvBpsS,KAAK2sC,OAAO,sBACZ3sC,KAAK2sC,OAAO,iBAAkBk1G,GAAiBuqJ,EAAOpwS,KAAK,iBAAuB4zE,GAAG,IAE5F,EAAC9yE,KAAKkD,MAAO,CACV8gJ,qBAAsB,WAP1B9gJ,CAQG,CACCe,MAAOkI,GAEd,EAACnM,KAAKkD,MAEd,EACDkgT,sBAAuB,SAAS9T,EAAQr+N,GACpC,IAAIxf,EAAW,IAAIlxC,GAAAA,GACnB,GAAI+uR,EAAO99N,SAASutO,MAAgC9tO,EAChD,OAAOxf,EAAS3vD,UAEpB,IAAIuhT,EAAa/T,EAAOrhS,SAAS,uBAC7Bq1S,EAAcl1O,GAAei1O,GAC7BE,EAAY,EAqBhB,OApBI,IAAMD,IACNr1O,GAAUo1O,EAAY,QACtBE,EAAYn1O,GAAei1O,IAE/B/T,EAAOn+N,YAAY4tO,GAA4B9tO,GAC/CmjI,GAAAA,QAAWivG,EAAY,CACnB96S,KAAM,SACNmE,KAAM,CACFgjB,OAAQ4zR,GAEZ5oM,GAAI,CACAhrF,OAAQ6zR,GAEZx0R,SAAU,IACVlK,SAAU,WACN3hB,KAAKsgT,mBACLtgT,KAAKu9S,qBAAoB,GACzBhvP,EAAS3vD,SACZ,EAAC9B,KAAKkD,QAEJuuD,EAASjxC,SACnB,EACD41M,4BAA6B,WACzBlzN,KAAK4yN,yBACD5yN,KAAK6+J,eACL7+J,KAAKoyN,sBACLpyN,KAAKu9S,sBAEZ,EACDj1I,YAAa,WACTtoK,KAAK49S,mBAAqB7sO,KAC1B/wE,KAAKg6D,WAAWoU,SA7dP,WA8dTpuE,KAAKmiD,WACLniD,KAAK2sC,OAAO,iBAAmB3sC,KAAKugT,mBACpCvgT,KAAK86M,QAAQ,CACT5oL,KAAM,QACNsuR,gBAAiB,QAClBxgT,KAAKg6D,YACRh6D,KAAKygT,cACR,EACDA,aAnd2C,WAodvC,IACWv6P,EACPlmD,KAAK2sC,SADLuZ,MAEAw6P,EAAW,OAASx6P,QAAS,IAAWA,GAASA,EAAMvlD,OAAS,CAChEuxB,KAAM,UACNxa,MAAO,SACP,CACAwa,UAAM,EACNxa,WAAO,GAEX1X,KAAK86M,QAAQ4lG,EAChB,EACD76I,aAAc,WACV,OAAO7lK,KAAKszN,gBACf,EACDitF,iBAAkB,WACdvgT,KAAKqzN,WAAa/kL,IACrB,EACDoqK,mBAAoB,SAAS1+I,EAAU97D,EAAO+K,GAC1CjJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAI23C,EAAOzvD,KACX,GAAKA,KAAKqzN,WAAV,CAGA,IAAItzN,EAAS,CACTyM,QAASwtD,EACTj5D,MAAOkI,GAEP/K,EACIg/L,KACAl9L,KAAK2gT,gBAAkBprR,YAAY,WAC/Bk6B,EAAK4jK,WAAW/zB,SAASv/L,EAC5B,GAAG6gT,IAEJnxP,EAAK4jK,WAAW/zB,SAASv/L,IAG7Bu1B,aAAat1B,KAAK2gT,iBAClB3gT,KAAKqzN,WAAW9zB,SAASx/L,GAf5B,CAiBJ,EACDg2N,uBAAwB,SAASn4N,GAC7BoC,KAAK29S,uBACL39S,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WACtB9X,KAAK2sC,OAAO,kBACZ3sC,KAAK6gT,kBAAkB9vO,GAAEnzE,EAAKkiE,aAErC,EACD+gP,kBAAmB,SAAS/yF,GACxB,IAAIl2D,EAAepU,GAAa4oH,GAAepsQ,KAAKw+J,MACpDjgG,EAAAA,EAAAA,GAAgBuvJ,EAAcl2D,EAAc53J,KAAK8gT,qBAAqBhkT,KAAKkD,MAC9E,EACD8gT,qBAAsB,SAAS73S,GAC3BjJ,KAAKq0N,oBAAoBprN,EAAG,cAAe,CACvC2d,UAAW3d,EAAEgE,OAAS,EAAI,OAAS,SAE1C,EACD8zS,mBAAoB,SAAS93S,GACzBjJ,KAAK0+S,mBAAmBz1S,GACxB,IAAI6/F,EAAiB9oG,KAAK+oG,gBACtBD,EAAezB,kBAAoByB,EAAenE,cAClD3kG,KAAKu7S,YAAYpD,eAAc,GAC/Bn4S,KAAKghT,aAAa9xO,SAClBlvE,KAAKk/S,2BAA0B,GAC/Bl/S,KAAKwyN,gBAEZ,EACDutF,aAAc,SAAS5+S,EAAOo0F,GAC1B,IAAI0rN,EAAgBlwO,GAAE,SAAS3C,SAASstO,IAAkB/sO,SAAS3uE,KAAKszN,kBACpEv1M,EAAK,MAAM9N,QAAQ,IAAIi8C,GAAAA,GAAM5uD,YAC7B4jT,EAAY,CACZhvR,KAAM,QACNulO,WAAY15O,GAEhB/d,KAAK86M,QAAQomG,EAAWD,GACxB,IAAIE,EAAsBpwO,GAAE,SAAS3C,SAASutO,IAAyBztO,KAAK,KAAMnwD,GAAI4wD,SAASsyO,GAC3FG,EAAoBphT,KAAK2sC,OAAO,iBAChCswQ,EAAgBj9S,KAAK+qK,aAAax1E,EAAM/1E,UAAY4hS,EAAmB7rN,EAAOp0F,EAAOggT,GACrFnqF,EAAa,CACb71N,MAAOA,EACPm6I,SAAU/lD,EACVhuF,UAAWs6I,GAAiBs/J,IAEhCnhT,KAAKs2N,sBAAsB2mF,EAAejmF,GACtC95B,MACAnsH,GAAE,SAAS3C,SAljBiB,kCAkjB2BM,UAAUyyO,GAErEnhT,KAAKqhT,qBAAuBlgT,EAC5B,IAAIg/S,EAAapvO,GAAE,SAAS3C,SAASwtO,IAAuBjtO,SAASsyO,IACrEp0P,EAAAA,EAAAA,IAAKkvP,GAAiBxmN,IAAU,GAAI,SAASkjD,EAAW7zI,GACpD5E,KAAKkyN,YAAY,CACb38H,MAAOp0F,EACPyD,KAAM6zI,GACP7zI,EAAMu7S,EACZ,EAACrjT,KAAKkD,OACPA,KAAKshT,mBAAmB,CACpBC,aAAc1/J,GAAiBo/J,GAC/BzoK,WAAYr3I,EACZqgT,UAAWjsN,GAElB,EACDksN,qBAAsB,SAASx4S,GAC3BjJ,KAAK04M,mBAAmB3nI,GAAE9nE,EAAEu2D,gBAAgB,EAAMv2D,EACrD,EACDy4S,mBAAoB,SAASz4S,GACzBjJ,KAAK04M,mBAAmB3nI,GAAE9nE,EAAEu2D,gBAAgB,EAC/C,EACDygP,iCAAkC,WAC9B,IAAI/vS,EAAW,wBACX8pD,EAAWh6D,KAAKg6D,WACpBh6D,KAAK2hT,sBAAwB3hT,KAAK2hT,uBAAyB3hT,KAAKyhT,qBAAqB3kT,KAAKkD,MAC1FA,KAAK4hT,oBAAsB5hT,KAAK4hT,qBAAuB5hT,KAAK0hT,mBAAmB5kT,KAAKkD,MACpF,IAAI6hT,EAAgB,CAAC7nP,EAAU,gBAAiB9pD,EAAUlQ,KAAK2hT,uBAC3DG,EAAc,CAAC9nP,EAAU,2BAA4B9pD,EAAUlQ,KAAK4hT,qBACxErjP,EAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAoBsjP,GACpBtjP,EAAAA,EAAAA,GAAAA,MAAAA,EAAAA,EAAmBsjP,GACnBtjP,EAAAA,EAAAA,IAAAA,MAAAA,EAAAA,EAAoBujP,GACpBvjP,EAAAA,EAAAA,GAAAA,MAAAA,EAAAA,EAAmBujP,EACtB,EACDhE,yBAA0B,WACtB99S,KAAKshT,mBAAqBthT,KAAK2/J,sBAAsB,kBACxD,EACD2J,OAAQ,WACJh0I,aAAat1B,KAAK2gT,iBACd3gT,KAAKghT,eACLhhT,KAAKghT,aAAatjT,SAClBsC,KAAKghT,aAAe,MAExBhhT,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD46H,SAAU,WACN1yI,KAAKm/S,iCAAgC,GACrC7pR,aAAat1B,KAAK6rN,YAClBv2L,aAAat1B,KAAK8/S,oBAClBxqR,aAAat1B,KAAKs/S,4BAClBt/S,KAAKmiD,UACR,EACDy1J,qBAAsB,SAAS15M,GAC3B8B,KAAKmiD,SAASjkD,GACd8B,KAAKu7S,YAAY5uQ,OAAO,WAAYzuC,IAAU8B,KAAK2sC,OAAO,oBAC7D,EACDqyQ,kBAAmB,SAAS9gT,GACxB,IAAI4qG,EAAiB9oG,KAAK+oG,gBACtBikK,EAAchtQ,KAAK+hT,iBACvB/hT,KAAKg6D,WAAWiU,YA5mBE,cA4mB+B/vE,GAC7CA,GAAS4qG,EAAepE,YACxBsoK,EAAYr+L,SAAS3uE,KAAKszN,kBAEzBp1N,GACD8uQ,EAAY99L,QAEnB,EACD6yO,eAAgB,WAIZ,OAHK/hT,KAAKghT,eACNhhT,KAAKghT,aAAehhT,KAAKgiT,qBAEtBhiT,KAAKghT,YACf,EACDgB,kBAAmB,WACf,IAAI7nO,EAAUpJ,GAAE,SAAS3C,SA1nBJ,uBA2nBjB2qK,EAAUhoK,GAAE,SAASpC,SAASwL,GAOlC,OANAn6E,KAAKmjK,iBAAiB41E,EAASpwC,GAAQ,CACnChiM,KAAM3G,KAAK2sC,OAAO,kBAClB2wI,QAASt9K,KAAK+gT,mBAAmBjkT,KAAKkD,MACtCqF,KAAM63L,KAAe,eAAY,EACjCzlJ,mBAAoB,CAAC,IAElB0iC,CACV,EACDkzI,WAAY,WACRrtN,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKm8S,aAAan8S,KAAK2sC,OAAO,kBACjC,EACDg9H,SAAU,WACN,IAAK7oH,EAAAA,EAAAA,MAEE,CACH,IAAIstJ,EAAYpuM,KAAKu7S,YAAYntG,YACjCpuM,KAAKmiD,WACLisJ,GAAapuM,KAAKu7S,YAAYlrO,SAAS+9H,EAC1C,MALGpuM,KAAKmiD,UAMZ,EACD29G,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,eACD4G,KAAKg/S,kBAAkBphT,EAAKM,OAC5B8B,KAAK69S,kBACL,MACJ,IAAK,aACD79S,KAAKmiD,SAASvkD,GACdoC,KAAK69S,kBACL79S,KAAKm/S,iCAAgC,GACrC,MACJ,IAAK,QACDn/S,KAAKmiD,SAASvkD,GACdoC,KAAKm/S,iCAAgC,GACrC,MACJ,IAAK,kBACL,IAAK,iBACL,IAAK,iBACL,IAAK,kBACL,IAAK,gBACL,IAAK,gBACL,IAAK,kBACL,IAAK,gBACL,IAAK,qBACL,IAAK,mBACL,IAAK,qBACDn/S,KAAK69S,kBACL79S,KAAKu9S,qBAAoB,GACzB,MACJ,IAAK,iBACL,IAAK,cACL,IAAK,eAQL,IAAK,UACL,IAAK,oBACL,IAAK,gBA0BL,IAAK,kBACL,IAAK,YACDv9S,KAAKypK,cACL,MApCJ,IAAK,WACL,IAAK,gBACL,IAAK,gBACDzpK,KAAKw+S,2BACL,MAMJ,IAAK,eACDx+S,KAAKolQ,YAAYn3L,YAAY6tO,GAAsBl+S,EAAKM,OACxD,MACJ,IAAK,kBACD8B,KAAK89S,2BACL,MACJ,IAAK,QACL,IAAK,SACD99S,KAAKmiD,SAASvkD,GACdoC,KAAKu7S,YAAY5uQ,OAAO/uC,EAAKxE,KAAMwE,EAAKM,OACxC8B,KAAKu7S,YAAYvvQ,SACjB,MACJ,IAAK,kBACDhsC,KAAKw/S,kCACL,MACJ,IAAK,UACDx/S,KAAKmiD,SAASvkD,GACdoC,KAAKu7S,YAAYvvQ,SACjB,MACJ,IAAK,aACDhsC,KAAK69S,kBACL79S,KAAKmiD,SAASvkD,GACd,MAKJ,IAAK,gBACL,IAAK,gBACD,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,EACDi6N,kBAAmB,SAAS/J,GACxB,IAAK9tN,KAAK2sC,OAAO,WACb,OAAO3sC,KAAKmiD,SAAS2rK,GAEzB,IAAIs+E,EAASt+E,EAAah+I,QAAQ,kBAC9BghJ,EAAQs7E,EAAOpwS,KAAK,iBACxB,OAAOypD,EAAAA,GAAAA,GAAOzlD,KAAKmiD,SAAS2rK,GAAe,CACvCr1E,UAAW,CACPljD,MAAO62M,EAAOjrS,QACdyD,KAAMksN,EAAM3vN,MAAM2sN,KAG7B,EACDm0F,YAAa,SAASzpK,GAClB,IAAIjqF,EAAW,IAAIlxC,GAAAA,GACf+uR,EAASpsS,KAAKszN,iBAAiBt3N,KAAK,kBAAwB4zE,GAAG4oE,GAInE,OAHAx4I,KAAKkgT,sBAAsB9T,GAAQ,GAAOx9O,KAAK,WAC3CL,EAASO,YAAY9uD,KACxB,EAAClD,KAAKkD,OACAuuD,EAASjxC,SACnB,EACD4kS,cAAe,SAAS1pK,GACpB,IAAIjqF,EAAW,IAAIlxC,GAAAA,GACf+uR,EAASpsS,KAAKszN,iBAAiBt3N,KAAK,kBAAwB4zE,GAAG4oE,GAInE,OAHAx4I,KAAKkgT,sBAAsB9T,GAAQ,GAAMx9O,KAAK,WAC1CL,EAASO,YAAY9uD,KACxB,EAAClD,KAAKkD,OACAuuD,CACV,EACD+xP,iBAAkB,WACd,IAAI7wP,EAAOzvD,KACPuuD,EAAW,IAAIlxC,GAAAA,GASnB,OARIoyC,EAAK8rP,YACL9rP,EAAK8rP,YAAYvvQ,SAAS4iB,MAAM,YAC3Ba,EAAKiwP,qBAAuBjwP,EAAK8tP,qBAAoB,GACtDhvP,EAASO,YAAYW,EACxB,IAEDlB,EAASO,YAAYW,GAElBlB,EAASjxC,SACnB,EACD+oF,OAAQ,WACJrmG,KAAKmiD,WACLniD,KAAKqwE,SAAS,GACdrwE,KAAKw3S,kBACR,EACDr8F,QAAS,WACLn7M,KAAKqwE,SAAS,GACdrwE,KAAKmiD,UACR,EACDisJ,UAAW,WACP,OAAOpuM,KAAKu7S,YAAYvtI,eAAevpI,GAC1C,EACDk0H,aAAc,WACV,OAAO34J,KAAKu7S,YAAY5iJ,cAC3B,EACDy+H,aAAc,WACV,OAAOp3R,KAAKu7S,YAAYnkB,cAC3B,EACD5F,SAAU,SAASf,GACfzwR,KAAKu7S,YAAY/pB,SAASf,EAC7B,EACDpgN,SAAU,SAAS19C,GACf3yB,KAAKu7S,YAAYlrO,SAAS19C,EAC7B,EACDwpR,aAAc,SAASr8O,GACnB,IAAIgxJ,EAAQ9wN,KAAK6nO,cAAcpO,eAAe35J,GAC1Cl7D,EAAO,OAASksN,QAAS,IAAWA,OAAQ,EAASA,EAAMl3N,IAAI,GACnEoG,KAAKu7S,YAAYtjB,gBAAgBrzR,EAAM,CACnC+/B,OAAQy2Q,GAAiBx2S,EAAM,WAEtC,EACDgjK,kBAAmB,WACf5nK,KAAKsgT,kBACR,IACF79P,QAAQ0/P,IACXnG,GAASjqF,UAAYqwF,GCp3BrB,IAEIC,GAAWrG,GAAS3wR,QAAQ,CAC5ByrL,eAD4B,WACX,WACTrnJ,EAAOzvD,KACP6K,EAAS7K,KAAKmiD,WACdmgQ,EAAkB,SAACr5S,EAAGirO,GACtB,IAAIquE,EAAe,EAAK16E,cACpB9Y,EAAiB,EAAKpiL,OAAO,kBAC7B61Q,EAAmBD,EAAarpF,mBAAmBnK,GAEvD,KADyByzF,IAAqB,EAAKC,uBACzB,EAAK15M,gBAAgBpE,YAG/C,GAAI17F,EAAEipJ,UAAYziG,EAAK9iB,OAAO,gCAAiC,CAC3D,IAAI+1Q,EAAgBF,GAAoBtuE,GAAU,EAAI,GAClDmoE,EAAYkG,EAAa9oF,eAAeipF,GAC5C,EAAKx2E,YAAYnd,EAAgBstF,GACjC,EAAKF,aAAaptF,GAClB9lN,EAAEkzD,gBACL,KAAM,CACgB,EAAKwmP,cACY5T,qBAAqByT,EAAkBtuE,KAEvEA,EAASrpO,EAAO6iN,QAAQzkN,GAAK4B,EAAO8iN,UAAU1kN,GAErD,CACJ,EACD,OAAOw8C,EAAAA,GAAAA,GAAO,CAAC,EAAG56C,EAAQ,CACtBuzP,IAAK,SAAAn1P,GACGwmD,EAAK9iB,OAAO,uBACZ1jC,EAAEkzD,iBACF1M,EAAKu8K,WAAWv8K,EAAK9iB,OAAO,mBAEnC,EACD+gL,QAAS,SAAAzkN,GAAC,OAAIq5S,EAAgBr5S,GAAG,EAAvB,EACV0kN,UAAW,SAAA1kN,GAAC,OAAIq5S,EAAgBr5S,EAApB,EACZk7I,MAAO,SAASl7I,GACPjJ,KAAK2iT,cAAczT,oBAAoBjmS,IACxC4B,EAAOs5I,MAAMpsI,MAAM/X,KAAM8X,UAEhC,EACDw1M,MAAO,SAASrkN,GACPjJ,KAAK2iT,cAAczT,oBAAoBjmS,IACxC4B,EAAOyiN,MAAMv1M,MAAM/X,KAAM8X,UAEhC,GAER,EACD2yN,iBA/C4B,WAgDxBzqO,KAAK2iT,cAAcrU,qBACnBtuS,KAAKmiD,UACR,EACDsgQ,kBAnD4B,WAoDxB,OAAOziT,KAAK2wN,gBAAgBhwN,OAAS,CACxC,EACDg9S,qBAtD4B,WAuDxB39S,KAAKmiD,WACL,IAAImtP,EAAoBtvS,KAAK2iT,cAActT,2BACvCC,EAAkB3uS,SAClBX,KAAK49S,mBAAqB59S,KAAK49S,mBAAmBlhR,IAAI4yQ,GAE7D,EACD0J,oBAAqB,SAASF,EAAOC,GACjC,IAAI6J,EAAa9J,GAASA,EAAM+J,WAChC,QAAID,IAAe5iT,KAAKsC,OAAStC,KAAKooO,WAAWtM,eAAe8mF,KAGzD5iT,KAAKmiD,SAAS22P,EAAOC,EAC/B,EACDn7I,mBApE4B,WAqExB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B2gQ,uBAAuB,EACvB57E,cAAe,OACf67E,cAAe,OACfC,wBAAyB,KACzBC,cAAeC,GAAAA,OAA2B,oBAC1CC,UAAW,GACXC,SAAU,UACVC,mBAAmB,EACnBC,eAAgB,SAChBC,aAAc,CAAC,GAEtB,EACDzlJ,qBAlF4B,WAmFxB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,SAAA6+J,GAAO,MAAI,QAAUA,EAAQ97O,QAAtB,EACf2D,QAAS,CACLgmT,SAAU,QACVE,eAAgB,cAErB,CACC5sO,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLkmT,eAAgB,WAG3B,EACD//M,MAlG4B,WAmGxBvjG,KAAKmiD,WACLniD,KAAKwjT,mBACR,EACDp7M,gBAtG4B,WAuGxBpoG,KAAKmiD,WACAniD,KAAKyjT,oBACNzjT,KAAKwnG,aAAexnG,KAAKwnG,YAAY9N,mBAAkB,EAE9D,EACD+pN,iBA5G4B,WA6GxB,MAAO,SAAWzjT,KAAK2sC,OAAO,gBACjC,EACD62Q,kBA/G4B,WAgHxBxjT,KAAK2iT,cAAgB,IAAIlV,GAAaztS,KACzC,EACD0jT,qBAlH4B,WAmHpB1jT,KAAK2iT,eACL3iT,KAAK2iT,cAAcp2Q,SAE1B,EACDo3Q,qBAvH4B,WAwHxB3jT,KAAK0jT,uBACL1jT,KAAKwjT,mBACR,EACD/7E,kBA3H4B,WA4HpBznO,KAAK2sC,OAAO,WACZ3sC,KAAK6nO,cAAgB,IAAIokE,GAAoBjsS,MAE7CA,KAAKmiD,UAEZ,EACDmmH,YAlI4B,WAmIxBtoK,KAAK2jT,uBACL3jT,KAAKmiD,UACR,EACD+yK,aAtI4B,WAuIxBl1N,KAAKmiD,SAAL,MAAAniD,KAAiB8X,WACjB9X,KAAK2iT,cAAcrU,oBACtB,EACD56E,mBAAoB,iBA5IO,uBA4IP,EACpBC,uBAAwB,iBA5IQ,4BA4IR,EACxB1F,kBA5I4B,SA4IVhlN,GACd,IAAI6kN,EAAe/8I,GAAE9nE,EAAEu2D,eACvB,IAAIsuJ,EAAa7+I,GAAG,4CAApB,CAGA,IAAI20O,EAAwB5jT,KAAK2iT,cAAc7T,YAAYhhF,EAAc7kN,GACrE26S,IAGJ5jT,KAAKw9S,0BAA0Bv0S,GAC/BjJ,KAAKmiD,SAAL,MAAAniD,KAAiB8X,WANhB,CAOJ,EACDm9M,4BAxJ4B,WAyJxB,OAAOj1N,KAAKmiD,SAAL,MAAAniD,KAAiB8X,YAAc9X,KAAK2iT,cAAcxT,0BAC5D,EACDt6E,iBA3J4B,SA2JX5rN,GACb,IAAI6kN,EAAe/8I,GAAE9nE,EAAEu2D,eACvB,IAAIsuJ,EAAa7+I,GAAG,4CAApB,CAGA,IAAI20O,EAAwB/9J,GAAa58I,IAAMjJ,KAAK2iT,cAAcvT,kBAAkBthF,EAAc7kN,GAC9F26S,EACA36S,EAAE26S,uBAAwB,EAG9B5jT,KAAKmiD,SAAL,MAAAniD,KAAiB8X,UANhB,CAOJ,EACDuiS,kBAAmB,SAASE,GACxB,GAAIv6S,KAAK2sC,OAAO,WAAY,CACxB,IAAIk3Q,EACArrK,EAAa,QAAUqrK,EAAwB7jT,KAAK6nO,cAAcxP,mBAAmBkiF,UAAgB,IAAWsJ,OAAwB,EAASA,EAAsBtuN,MAC3K,OAAOv1F,KAAKm+S,0BAA0B3lK,EACzC,CACG,OAAOx4I,KAAKmiD,SAASo4P,EAE5B,EACDvlF,wBAhL4B,SAgLJ/rN,GACpB,IAAI6kN,EAAe/8I,GAAE9nE,EAAEu2D,eACvB,IAAIsuJ,EAAa7+I,GAAG,4CAApB,CAGA,IAAI20O,GAAyB36S,EAAE26S,uBAAyB5jT,KAAK2iT,cAAcvT,kBAAkBthF,EAAc7kN,GACvG26S,EACA36S,EAAEkzD,iBAGNn8D,KAAKmiD,SAAL,MAAAniD,KAAiB8X,UANhB,CAOJ,EACDi+M,uBA5L4B,SA4LLn4N,GACnBoC,KAAKmiD,SAAL,MAAAniD,KAAiB8X,WACjB9X,KAAK2iT,cAAczU,kBAAkBtwS,EACxC,EACD0rK,OAhM4B,WAiMxBtpK,KAAK0jT,uBACL1jT,KAAKmiD,UACR,EACD2hQ,cApM4B,SAoMd3iT,GACV,IAAI2vN,EAAQ9wN,KAAK6nO,cAAcpO,eAAet4N,GAC9CnB,KAAK2sC,OAAO,iBAAkBmkL,GAC9B9wN,KAAKqmB,QACLrmB,KAAKm8S,aAAan8S,KAAK2sC,OAAO,kBACjC,EACDmzH,eA1M4B,SA0MbliK,GACX,OAAQA,EAAKxE,MACT,IAAK,gBACD4G,KAAKooG,kBACLpoG,KAAK+oG,gBAAgBvG,UAAU,GAC/BxiG,KAAK+oG,gBAAgB1S,OACrB,MACJ,IAAK,UACDr2F,KAAK2qO,6BACE3qO,KAAKqhT,qBACZrhT,KAAKynO,oBACLznO,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,wBACL,IAAK,YACL,IAAK,WACL,IAAK,oBACL,IAAK,iBACL,IAAK,eACL,IAAK,gBACDoC,KAAKypK,cACL,MACJ,IAAK,0BACD,MACJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,EACDmmT,UAtO4B,WAuOxB,OAAO/jT,KAAKooO,WAAW27E,UAAU/jT,KAAKyjT,mBACzC,EACDO,YAzO4B,WA0OxB,OAAOhkT,KAAKooO,WAAW67E,YAAYjkT,KAAKyjT,mBAC3C,EACDvoF,YA5O4B,WA6OxB,OAAOl7N,KAAKooO,WAAWxB,kBAAkB5mO,KAAKyjT,mBACjD,EACDS,0BA/O4B,SA+OFpkP,GACtB,OAAO9/D,KAAK2wN,gBAAgBxvN,MAAM2+D,EACrC,EACDqkP,0BAlP4B,SAkPFC,GACtB,IAAI1zF,EAAgB1wN,KAAK2wN,gBACzB,OAAIyzF,EAAY,GAAKA,GAAa1zF,EAAc/vN,OACrCowE,KAEJ2/I,EAAc9gJ,GAAGw0O,EAC3B,EACDC,eAzP4B,SAyPbljT,GACX,OAAOnB,KAAK6nO,cAAcvP,mBAAmBn3N,EAChD,IAEL,MChQA,ICZ8BuxB,GDY1B4xR,ICZ0B5xR,GDYE,UCX5B,WACI,aACI,MADU,eACJ,IAAIn4B,MAAM,WAAW0V,OAAOyiB,GAAe,eACpD,CAHL,+CAII,WAAuB,KAJpB,CAAP,KDYJ,IACIkrI,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BoiQ,WAAY,GACZrhN,WAAY,KACZzP,YAAa,GACb+wN,eAAe,EACfC,oBAAqB,CAAC,GAE7B,EACDn8I,YAAa,WACTtoK,KAAK0kT,gBACL1kT,KAAKmiD,UACR,EACDuiQ,cAAe,WACX,IAAI1qP,EAAWh6D,KAAKg6D,WAChBwqP,EAAgBxkT,KAAK2sC,OAAO,iBAC5Bg4Q,EAAqB3kT,KAAK4kT,iBAAiB,UAC3CC,EAAuB7kT,KAAK4kT,iBAAiB,eACjD,IAAKJ,EAGD,OAFAxqP,EAASqU,YAAYw2O,QACrB7kT,KAAK8kT,mBAGT,IAAIC,EAAgB/kT,KAAKglT,0BACrBhlT,KAAKilT,cACLjlT,KAAKilT,cAAct4Q,OAAOo4Q,IAE1B/qP,EAASoU,SAASy2O,GAClB7kT,KAAKklT,sBAAwBn0O,GAAE,SAAS3C,SAASu2O,GAAoBj2O,UAAU1U,GAC/Eh6D,KAAKilT,cAAgBjlT,KAAKmjK,iBAAiBnjK,KAAKklT,sBAAuBZ,GAAaS,GAE3F,EACDD,iBAAkB,WACd9kT,KAAKklT,uBAAyBllT,KAAKklT,sBAAsBxnT,gBAClDsC,KAAKklT,6BACLllT,KAAKilT,aACf,EACDD,wBAAyB,WACrB,IAAIv1P,EAAOzvD,KACPmlT,EAAoB11P,EAAK9iB,OAAO,uBAChCy4Q,EAAah7L,GAAAA,OAA2B,UAC5C,OAAO3kE,EAAAA,GAAAA,GAAO,CACVn+B,KAAM,SACNorO,YAAa0yD,EACb5kQ,SAAUiP,EAAK9iB,OAAO,YACtBzuC,MAAOuxD,EAAK9iB,OAAO,eACnB8lN,iBAAkB,QAClBE,UAAW,CACP,aAAcyyD,GAElBpjE,eAAgB,SAAS/4O,GACrB,IAAIo8S,EAAgB51P,EAAK9iB,OAAO,iBAChC8iB,EAAK61P,qBAAuB,IAAIjoS,GAAAA,GAChCiY,aAAam6B,EAAK81P,qBAClB91P,EAAK61P,qBAAqB12P,KAAK,WAC3B5uD,KAAK2sC,OAAO,cAAe1jC,EAAE/K,MAChC,EAACpB,KAAK2yD,IACHxmD,EAAElI,OAAS,UAAYkI,EAAElI,MAAMsE,MAAQggT,EACvC51P,EAAK81P,oBAAsBhwR,YAAY,WACnCk6B,EAAK61P,qBAAqB1mT,SAC7B,GAAGymT,GAEJ51P,EAAK61P,qBAAqB1mT,SAEjC,GACFumT,EACN,EACDztG,eAAgB,WACZ,OAAI13M,KAAK2sC,OAAO,iBACL3sC,KAAKszN,gBAAe,GAExBtzN,KAAKmiD,UACf,EACD0jH,aAAc,WACV,OAAI7lK,KAAK2sC,OAAO,iBACL3sC,KAAKszN,gBAAe,GAExBtzN,KAAKmiD,UACf,EACDs3J,kBAAmB,SAASxwM,EAAG0wM,GACvB35M,KAAK2sC,OAAO,kBACZ3sC,KAAK45M,kBAAkBD,EAAW35M,KAAKg6D,YAE3Ch6D,KAAKmiD,SAASl5C,EAAG0wM,EACpB,EACD6rG,yBAA0B,SAASjB,GAC/B,MAAO,WAAaA,EAAa,IAAMA,CAC1C,EACDzkJ,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,gBACL,IAAK,sBACD4G,KAAKypK,cACL,MACJ,IAAK,aACL,IAAK,aACL,IAAK,cACD,IAAKzpK,KAAKwnG,YAEN,YADAloF,GAAAA,IAAW,SAGX,eAAiB1hB,EAAKxE,KACtB4G,KAAKwnG,YAAYxE,gBAAgBhjG,KAAKwlT,yBAAyB5nT,EAAKM,QAEpE8B,KAAKwnG,YAAY5pG,EAAKxE,MAAMwE,EAAKM,OAErC8B,KAAKwnG,YAAYnR,OACjB,MACJ,IAAK,gBACD,MACJ,QACIr2F,KAAKmiD,SAASvkD,GAEzB,EACDyoB,MAAO,WACErmB,KAAK2sC,OAAO,oBAAqB3sC,KAAK2sC,OAAO,iBAIlD3sC,KAAKmiD,WAHDniD,KAAKilT,eAAiBjlT,KAAKilT,cAAc5+R,OAIhD,EACDo/R,WAAY,WACR,IAAIzrP,EAAWh6D,KAAKg6D,WACpBh6D,KAAK86M,QAAQ,CACT5oL,KAAM,KACNwzR,iBAAkB,MACnB1rP,GACHA,EAASkU,KAAK,WAAY,KAC7B,EACDo7F,OAlIW,WAmIPtpK,KAAKmiD,WACLniD,KAAKylT,YACR,EACD97I,SAAU,WACF3pK,KAAKslT,sBACLtlT,KAAKslT,qBAAqB1mT,UAE9BoB,KAAKmiD,UACR,EACDwjQ,eAAgB,SAASznT,GACrBomT,GAAcpmT,CACjB,GEzJD0nT,GAAavD,GAAAA,QAAiBwD,IAAgBx6R,QAAQ,CACtDu5R,iBAAkB,SAASzsS,GACvB,MAAO,WAAaA,CACvB,EACD+vN,mBAAoB,WAChB,IAAIp/H,EAAiB9oG,KAAK+oG,gBACtB3C,EAAmB,CACnB5rE,OAAQsuE,EAAetuE,UAI3B,OAFAsuE,EAAe5B,gBAAgBd,GAClBA,EAAiB5rE,MAEjC,EACD4tE,gBAAiB,WACb,IAAIlqG,EAAQ8B,KAAK2sC,OAAO,eACpBonB,EAAO/zD,KAAK2sC,OAAO,cACnBrlB,EAAOtnB,KAAK2sC,OAAO,cACvB3sC,KAAKmiD,WACL,IAAI2mD,EAAiB9oG,KAAK+oG,gBAC1B7qG,GAASA,EAAMyC,QAAUmoG,EAAerV,YAAYv1F,GACpDopB,EAAK3mB,QAAUmoG,EAAe9F,gBAAgB6iN,GAAAA,yBAAwCv+R,IACtFysC,GAAQ+0C,EAAe5F,WAAWnvC,EACrC,IAEL,MCxBAy+G,GAAkB,SAAU6vI,IAC5B,UCIIpoT,IAAS8mD,EAAAA,EAAAA,MAyCT+kQ,GAAe,CAAC,aAAc,WAAY,UAAW,eACrDC,GAAuB,YAAc/tO,GAAAA,OAAev+E,SACpDusT,GAAe9iD,GAAAA,QAAuB,CACtCpsD,eAAgB,WACZ,IAAIjsM,EAAS7K,KAAKmiD,WAClB,OAAOsD,EAAAA,GAAAA,GAAO,CAAC,EAAG56C,EAAQ,CACtBq5I,IAAK,SAASj7I,GACV,GAAIjJ,KAAKimT,wBAAyB,CAC9BjmT,KAAK8iP,sBAAsB75O,GAC3B,IAAIi9S,EAAen1O,GAAE/wE,KAAKmtD,MAAMxgB,OAAO,mBACvCu5Q,EAAavlT,QAAUX,KAAKmmT,oBAAoBD,EACnD,CACDr7S,EAAOq5I,IAAInsI,MAAM/X,KAAM8X,UAC1B,EACDw1M,MAAOxrM,GAAAA,KACPwiI,KAAMxiI,GAAAA,KACN5X,IAAK4X,GAAAA,MAEZ,EACDmkS,sBAAuB,WACnB,OAAOjmT,KAAK2sC,OAAO,WAAa,cAAgB3sC,KAAK2sC,OAAO,iBAC/D,EACDw5Q,oBAAqB,SAASnsP,GAC1B,IAAI97D,EAAQ8B,KAAKw+O,aAAax+O,KAAKmtD,MAAM4gK,aAAa/zJ,IACtDh6D,KAAKomT,UAAUloT,EAClB,EACDkoT,UAAW,SAASloT,GAChB8B,KAAK2sC,OAAO,QAASzuC,EACxB,EACD0/J,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,YAAYsD,EAAAA,GAAAA,GAAOw4L,GAAAA,gCAAqD,CACvFtnB,kBAAc,EACd6tF,eAAe,EACfD,WAAY,WACZc,cAAe,IACfgB,gBAAiB,EACjBnjN,WAAY,KACZuvJ,iBAAkB,qBAClBxrB,aAAc,KACdxoL,WAAY2rE,GAAAA,OAA2B,iCACvCukG,kBAAkB,EAClBmM,mBAAoB,KACpBxM,YAAaxsM,GAAAA,KACbwkS,sBAAsB,EACtBx4E,SAAS,EACTmvE,cAAe,QACfh5C,cAAe,CACXxhO,GAAI,WACJoiB,GAAI,cACJ53C,OAAQ,CACJhR,EAAG,EACHmoB,EAAG,GAEP2pL,UAAW,QAEfovG,cAAc,EACdoJ,oBAAoB,IAE3B,EACDzoJ,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,CACJj9E,SAAU,OAEd2D,QAAS,CACL6mQ,cAAe,CACXh3P,OAAQ,CACJmX,GAAI,MAIjB,CACCsyD,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLknQ,gBAAiB,mBAG5B,EACDlmG,uBAAwB,WACpBp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7Bp8J,OAAO,EACP+oO,cAAc,EACdtQ,cAAc,GAErB,EACDpzH,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKm+O,uBACLn+O,KAAK4gN,eACL5gN,KAAKwmT,qBACLxmT,KAAKymT,sBACLzmT,KAAK0mT,qBACL1mT,KAAK2mT,YACR,EACDC,mCAAoC,WAChC5mT,KAAKmtD,MAAMmkK,8BAAgCtxN,KAAK6mT,wBAAwB/pT,KAAKkD,KAChF,EACD2mT,WAAY,WACR,IAAIzgQ,EAAQlmD,KAAK2sC,SAASuZ,MACtBA,IAAUA,EAAMvlD,QAAUX,KAAKwnG,cAC/BxnG,KAAK2sC,SAASuZ,MAAQlmD,KAAKwnG,YAAYthD,QAE9C,EACD06J,aAAc,WACV5gN,KAAKm3M,0BACLn3M,KAAK8mT,8BACL9mT,KAAK+mT,sBACR,EACD5vG,wBAAyB,WACrBn3M,KAAK23M,oBAAsB33M,KAAK2/J,sBAAsB,iBAAkB,CACpE5e,kBAAmB,CAAC,WAAY,aAEvC,EACD+lK,4BAA6B,WACzB9mT,KAAKgnT,wBAA0BhnT,KAAK2/J,sBAAsB,qBAAsB,CAC5E5e,kBAAmB,CAAC,WAAY,aAEvC,EACDgmK,qBAAsB,WAClB/mT,KAAKgnP,iBAAmBhnP,KAAK2/J,sBAAsB,cACtD,EACDgL,eAAgB,WACZ3qK,KAAKmiD,WACLniD,KAAK4pK,iBAAiBgsB,oBAAoB,CACtChxL,KAAM,IAAI+8J,GAAqB,SAEtC,EACD2jG,YAAa,WACT,OAAOtlQ,KAAKmiD,YAAcniD,KAAK2sC,OAAO,gBACzC,EACDs6Q,mBAAoB,SAASh+S,GACrBjJ,KAAKmtD,OAASntD,KAAKmtD,MAAMyzG,cAAc,sBACvC5gK,KAAK+mQ,aAEZ,EACDmgD,cAAe,SAAShpT,EAAOq+B,EAAOryB,GAClC,OAAIhM,EAAQgM,EACDqyB,EAEPr+B,EAAQq+B,EACDryB,EAEJhM,CACV,EACDslG,OAAQ,WACJ,IAAIt9C,EAAQlmD,KAAKm6N,gBAAgBn6N,KAAKmtD,OAASntD,KAAKwnG,YAAYthD,SAEhE,OADqB,IAAI01K,GAAU11K,GAAO1rB,OAAO,WAAY,MAAM,GAAMkzC,SAE5E,EACDy5O,cAAe,SAASprR,GACpB,IAAImqB,EAAQlmD,KAAKwjG,SAEjB,OAAOt9C,EADSlmD,KAAKknT,cAAclnT,KAAKonT,oBAAsBrrR,EAAM,EAAGmqB,EAAMvlD,OAAS,GAEzF,EACDymT,kBAAmB,WACf,IAAIlhQ,EAAQlmD,KAAKwjG,SACbyjI,EAAejnO,KAAK2sC,OAAO,gBAC3BnpC,GAAU,EAOd,OANAqpD,EAAAA,EAAAA,IAAK3G,EAAO,SAAS/kD,EAAOyD,GACxB,GAAI5E,KAAK4+O,eAAeh6O,EAAMqiO,GAE1B,OADAzjO,EAASrC,GACF,CAEd,EAACrE,KAAKkD,OACAwD,CACV,EACDyhQ,aAAc,WACVjlQ,KAAKmiD,WACLniD,KAAKqnT,iCACLrnT,KAAKsnQ,OAAOjrD,WAAWjuI,SAASpuE,KAAKsnT,sBACrC,IAAIh/C,EAAgBtoQ,KAAKsnQ,OAAOhtE,WAChC/7H,EAAAA,EAAAA,IAAiB+pM,EAAe,WAChC/pM,EAAAA,EAAAA,GAAgB+pM,EAAe,UAAWtoQ,KAAKinT,mBAAmBnqT,KAAKkD,MAC1E,EACDqnT,+BAAgC,WAC5B,IAAIE,EAAkBvnT,KAAK2sC,OAAO,6BAC9B6tC,EAAa+sO,GAAmBx2O,GAAEw2O,GACtC,GAAI/sO,GAAcA,EAAW75E,UAAWgjD,EAAAA,EAAAA,IAAS62B,EAAW5gF,IAAI,IAAK,CACjE,IAAI4tT,EAAwB,GAAGziT,MAAMtG,KAAK+7E,EAAWnb,WACrDmoP,EAAsB52O,QAAQ4J,EAAW5gF,IAAI,KAC7CizD,EAAAA,EAAAA,IAAK26P,EAAuB,SAAS7+S,EAAGkC,GACpC,OAAIA,IAAWkmE,GAAE,QAAQn3E,IAAI,KAElB,WAAaK,GAAO2gE,iBAAiB/vD,GAAQooO,WACpDjzO,KAAKynT,0BAA4B12O,GAAElmE,IAC5B,QAFJ,EAIV,EAAC/N,KAAKkD,MACV,CACJ,EACDsnT,mBAAoB,WAChB,MApM+B,+BAqMlC,EACDpxD,kBAAmB,WACf,IAAIh4P,EAAQ8B,KAAKi/O,mBAEjB,OADAj/O,KAAK8+O,sBACE9+O,KAAK0nT,gBAAgBxpT,EAAO8B,KAAK2nT,iBAAiB7qT,KAAKkD,OAAOq2D,OAAOr2D,KAAKmiD,SAASrlD,KAAKkD,KAAM9B,GACxG,EACDwpT,gBAAiB,SAASxpT,EAAOX,GAC7B,OAAOyC,KAAK4nT,UAAU1pT,GAAOm4D,OAAO94D,EACvC,EACDsqT,kBAAmB,SAAS3pT,EAAOoS,GAC/B,IAAIyrN,EACAkL,EAiBJ,OAhBI32N,GAAS,kBAAoBpS,IACxBoS,EAAMw3S,cACPx3S,EAAMw3S,YAAc,CAAC,GACrB/rF,EAAa/7N,KAAKm6N,kBACPz5N,SAAS,SAASkE,GACzB0L,EAAMw3S,YAAY9nT,KAAKw+O,aAAa55O,IAASA,CAChD,GAAG5E,OAERinO,EAAe32N,EAAMw3S,YAAY5pT,IAEhC+oO,IACDlL,EAAa/7N,KAAKm6N,iBAClB8M,GAAev1K,EAAAA,GAAAA,MAAKqqK,EAAY,SAASn3N,GACrC,OAAO5E,KAAK4+O,eAAe5+O,KAAKw+O,aAAa55O,GAAO1G,EACvD,EAACpB,KAAKkD,OAAO,IAEXinO,CACV,EACD2gF,UAAW,SAAS1pT,EAAOoS,GACvB,IAAI22N,EAAejnO,KAAK6nT,kBAAkB3pT,EAAOoS,GACjD,YAAO,IAAW22N,GAAgB,IAAI5pN,GAAAA,IAAUze,QAAQqoO,GAAc3pN,UAAYtd,KAAK0+O,WAAWxgP,EACrG,EACDi8N,eAAgB,SAASj0K,GACrB,IAAI61K,EAAa,GACjB71K,EAAQA,GAASlmD,KAAK2sC,OAAO,UAAY3sC,KAAKwnG,YAAYthD,SAAW,GACrE,IAAK,IAAIv9C,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAC1Bu9C,EAAMv9C,IAAMu9C,EAAMv9C,GAAGu9C,MACrB61K,EAAaA,EAAW9rN,OAAOi2C,EAAMv9C,GAAGu9C,OAExC61K,EAAW37N,KAAK8lD,EAAMv9C,IAG9B,OAAOozN,CACV,EACD8qF,wBA/OsC,WAgPlC,IAAIkB,EACAtkD,EAASzjQ,KAAK2sC,OAAO,UACrBq7Q,EAAoB,QAAUD,EAAc/nT,KAAKmtD,aAAU,IAAW46P,OAAc,EAASA,EAAYx2F,mBACzG02F,EAAiBl3O,GAAE,IAAI9gE,OAAO+3S,IAAoBrnT,OAAS,EAC3D+kT,EAAmBjiD,GAAUwkD,GAAkBD,EACnDhoT,KAAK86M,QAAQ,CACT4qG,iBAAkBA,GAAoB,MAE7C,EACDiC,iBAAkB,SAAS/iT,GACvB,IAAI+xN,EAAe32N,KAAKkoT,cAActjT,GACtC5E,KAAK2sC,OAAO,gBAAgByhB,EAAAA,GAAAA,eAAcxpD,EAAM,OAChD5E,KAAK2sC,OAAO,eAAgBgqL,EAC/B,EACDuxF,cAAe,SAAStjT,GACpB,OAAO5E,KAAKovN,eAAexqN,EAC9B,EACDujT,iBAAkB,WACd,IAAI73S,EAAQ,CAAC,EACbtQ,KAAKooT,oBAAoBv7P,KAAK,SAAS/tD,EAAGghE,GACtC,IAAIguJ,EAAe/8I,GAAEjR,GACjB+3E,EAAY73I,KAAKw+O,aAAa1wB,EAAaxzN,KA1QlC,mBA2QQ0F,KAAKqoT,iBAAiBxwK,EAAWvnI,GAElDtQ,KAAKmtD,MAAM+jK,WAAWpD,GAEtB9tN,KAAKmtD,MAAM08K,aAAa/b,EAE/B,EAAChxN,KAAKkD,MACV,EACDgoQ,mBAAoB,WAChBhoQ,KAAKmiD,WACLniD,KAAKsoT,iBACR,EACDA,gBAAiB,WACRtoT,KAAK2sC,OAAO,sBAAyB3sC,KAAKmtD,OAG/CntD,KAAKmtD,MAAMxgB,OAAO,iBAAkB,KACvC,EACD07Q,iBAAkB,SAASnqT,GACvB,OAAO8B,KAAK4+O,eAAe1gP,EAAO8B,KAAK2sC,OAAO,SACjD,EACD85Q,oBAAqB,WACjB,IAAIlC,EAAavkT,KAAK2sC,OAAO,cACzB47Q,EAAuBhE,EAAW/vS,cACtC,IAAKsxS,GAAavgT,SAASgjT,GACvB,MAAMjpS,GAAAA,MAAa,QAASilS,EAEnC,EACDmC,mBAAoB,WAChB1mT,KAAK2sC,OAAO,eAAgB,KAC/B,EACD67Q,2BAA4B,WACxBxoT,KAAK4oG,sBACL5oG,KAAKyoT,eAAe,kBAAmBzoT,KAAK+oG,iBAC5C/oG,KAAKwmT,qBACLxmT,KAAKk2P,oBAAoB5mM,KAAK,WACtBtvD,KAAK0oT,yBAGT1oT,KAAK0mT,oBACR,EAAC5pT,KAAKkD,MACV,EACD0oT,sBAAuB,WACnB,OAAO1oT,KAAK2sC,OAAO,qBACtB,EACDnG,MAAO,WACHxmC,KAAKmiD,WACLniD,KAAK2oT,eACL3oT,KAAK0mT,oBACR,EACD0B,kBAAmB,WACf,OAAOpoT,KAAK4oT,OAAS5oT,KAAK4oT,OAAO5sT,KA/ThB,iBA+T2C+0E,IAC/D,EACD+2L,aAAc,WACV,OAAOriN,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B1V,+BAA+B,EAC/B0oM,mBAAmB,EACnBl0M,UAAWjhC,KAAK6oT,cAAc/rT,KAAKkD,OAE1C,EACD4nQ,oBAAqB,WACjB5nQ,KAAKmiD,WACLniD,KAAK8oT,aACR,EACD/uG,sBAtUsC,WAuUlC,IAAIgvG,EAAmB/oT,KAAKgpT,oBAC5B,OAAOhpT,KAAKmiD,WAAWlyC,OAAO,EAAE84S,GAAoB/oT,KAAKmtD,OAC5D,EACD27P,YAAa,WACT9oT,KAAKipT,QAAU,OAAS,IAAI/8P,GAAAA,GAAME,OAClC,IAAI88P,EAAQn4O,GAAE,SAAS7C,KAAK,KAAMluE,KAAKipT,SAASt6O,SAAS3uE,KAAKsnQ,OAAOhtE,YACrEt6L,KAAK4oT,OAASM,EACdlpT,KAAKmtD,MAAQntD,KAAKmjK,iBAAiB+lJ,EAAOC,GAAMnpT,KAAKopT,eACrDppT,KAAKqpT,eACLrpT,KAAKspT,gCACLtpT,KAAK4mT,oCACR,EACD0C,8BAA+B,WAC3B,IAAI9qT,EAAYglJ,GAAa,YAAa,kBAC1CjlF,EAAAA,EAAAA,IAAiBv+D,KAAK4oT,OAAQpqT,GAC9B+/D,EAAAA,EAAAA,GAAgBv+D,KAAK4oT,OAAQpqT,GAAW,SAAAyK,GAAC,OAAIA,EAAEkzD,gBAAN,GAC5C,EACDkrM,iBAxVsC,WAyVlC,OAAOrnQ,KAAKmtD,OAASntD,KAAKipT,OAC7B,EACDjkD,mBAAoB,WAChBhlQ,KAAKmiD,WACLniD,KAAKmtD,OAASntD,KAAK6mT,0BACnB7mT,KAAK86M,QAAQ,OAAQ96M,KAAKsnQ,QAAUtnQ,KAAKunQ,gBAC5C,EACDpC,gBAAiB,WACbnlQ,KAAK86M,QAAQ,CACTuqD,SAAU,UACVxP,aAAc,QAErB,EACDwzD,aAAc,WACNrpT,KAAKmtD,OAASntD,KAAKupT,4BACnBvpT,KAAKwmT,oBAEZ,EACD+C,yBAA0B,WAEtB,QAD2BvpT,KAAKmtD,MAAMxgB,OAAO,gBACf3sC,KAAKwpT,2BACtC,EACDC,iBAAkB,WACd,MAAO,YAAczxO,GAAAA,OAAe1D,UACvC,EACD80O,YAAa,WACT,IAAIhsT,EAAU,CACV8pO,cAAe,SACf1sL,WAAYx6C,KAAK2sC,OAAO,cACxB+8Q,iBAAkB1pT,KAAK2sC,OAAO,oBAC9B8R,WAAYz+C,KAAK2sC,OAAO,cACxBgiL,iBAAkB3uN,KAAK2sC,OAAO,oBAC9BmhM,QAAS9tO,KAAK2sC,OAAO,WACrBwwQ,aAAcn9S,KAAK2sC,OAAO,gBAC1B45Q,mBAAoBvmT,KAAK2sC,OAAO,sBAChC6S,eAAgBx/C,KAAK2pT,yBAAyB7sT,KAAKkD,MACnDouN,aAAcpuN,KAAK2sC,OAAO,gBAC1BuwQ,iBAAiB,EACjBhxN,QAASlsF,KAAK6/O,wBACd5nG,YAAaj4I,KAAKu+O,qBAClB0+D,cAAej9S,KAAK2sC,OAAO,iBAC3B2hL,YAAatuN,KAAK4pT,qBAAqB9sT,KAAKkD,MAC5CunG,WAAYvnG,KAAK6pT,iBACjB9gN,gBAAiB/oG,KAAK+oG,gBACtBq7F,oBAAmBpkM,KAAKypT,oBAAqBzpT,KAAK2sC,OAAO,qBACzDwR,oBAAmBn+C,KAAKypT,oBAAqBzpT,KAAK2sC,OAAO,sBAK7D,OAHK3sC,KAAKgpT,sBACN5rT,EAAQojD,SAAW,MAEhBpjD,CACV,EACD4rT,kBAAmB,kBAAM,CAAN,EACnBa,eAAgB,WACZ,OAAO7pT,KAAKwpT,4BAA8BxpT,KAAKwnG,YAAc,IAChE,EACDooH,mBAAoB,WAChB,MAAO,CACH5uH,UAAU,EAEjB,EACD85M,kBAAmB,WACf,OAAO96S,KAAK2sC,OAAO,UACtB,EACDyxQ,2BAA4B,WACxB,MAAO,KACV,EACDuL,yBAA0B,WACtB3pT,KAAKmtD,MAAQntD,KAAKmtD,OAASntD,KAAK4oT,OAAOkB,OAAO,YACzC9pT,KAAK2sC,OAAO,mBACb3sC,KAAKmoT,mBAETnoT,KAAK8oQ,oBACL9oQ,KAAK+pT,wBACL/pT,KAAK23M,qBACR,EACD8wG,eAAgB,SAASj5Q,EAAYtxC,GACjC8B,KAAK+6M,iBAAiB,QAASjjM,UAClC,EACD8xS,qBAAsB,SAAS3gT,GAC3BjJ,KAAKgqT,sBAAsB/gT,GAC3BjJ,KAAKgnP,iBAAiB/9O,EACzB,EACD+gT,sBAAuBloS,GAAAA,KACvB0kS,mBAAoB,WACXxmT,KAAKmtD,QAGVntD,KAAKyoT,eAAe,aAAczoT,KAAK6pT,kBAClC7pT,KAAKwpT,6BACNxpT,KAAKyoT,eAAe,QAAS,IAEpC,EACDe,0BAA2B,WACvB,OAAOxpT,KAAK2sC,OAAO,yBAA2B3sC,KAAKiqT,4BACtD,EACDA,2BAA4B,WACxB,OAAOjqT,KAAK8iG,eAAexlG,WAAWqD,QAAUX,KAAK2sC,OAAO,kBAC/D,EACDu9Q,iBAAkB,WACd,OAAOlqT,KAAKmqT,sBAA+BnqT,KAAKwpT,2BACnD,EACDW,mBAAoB,WAChB,IAAIC,EAA4BpqT,KAAKiqT,6BACrC,OAAOjqT,KAAK+oG,gBAAgBrE,YAAc1kG,KAAK2sC,OAAO,yBAA2B3sC,KAAK2sC,OAAO,qBAAuBy9Q,IAA8BpqT,KAAKqqT,8BAC1J,EACDvnN,aAAc,WACV,OAAO9iG,KAAKqzP,SAAS56N,OAAS,EACjC,EACD6xR,gBAAiB,WACb,OAAO9mK,GA1cI,QA0cuBxjJ,KAAKw+J,KAAO,SACjD,EACD+rJ,0BAA2B,WACvB,OAAO/mK,GAAa,mBAAoBxjJ,KAAKw+J,KAAO,mBACvD,EACDgsJ,wBAAyB,WACrB,OAAOhnK,GAAa,iBAAkBxjJ,KAAKw+J,KAAO,iBACrD,EACDisJ,wBAAyB,WACrB,OAAOjnK,GAAa,QAASxjJ,KAAKw+J,KAAO,cAC5C,EACDy1F,cAAe,WAAW,WACtBj0P,KAAKmiD,WACLoc,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAUrzP,KAAKyqT,2BAA2B,WAC3D,EAAKnC,iBACR,IACGtoT,KAAK0qT,6BACLnsP,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAUrzP,KAAKsqT,mBAAmB,SAAArhT,GACnD,EAAK0hT,eAAe1hT,EACvB,IACG88S,KACAxnP,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAUrzP,KAAKuqT,6BAA6B,WAC7D,EAAKK,8BAA6B,EACrC,IACDrsP,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAUrzP,KAAKwqT,2BAA2B,SAAAvhT,GAC3D,EAAK2hT,kCAA6B,GAClC,EAAKD,eAAe1hT,EAAG,EAAK65F,eAC/B,KAGZ,EACD4nN,yBAA0B,WACtB,OAAO1qT,KAAK2sC,OAAO,gBACtB,EACDsrN,eAAgB,WACZ15L,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAUrzP,KAAKsqT,mBACrC/rP,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAUrzP,KAAKyqT,2BACjC1E,KACAxnP,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAUrzP,KAAKuqT,6BACrChsP,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAUrzP,KAAKwqT,4BAEzCxqT,KAAKmiD,UACR,EACDyoQ,6BAA8B,SAAS1sT,GACnC,IAAI4Z,UAAUnX,OAGV,OAAOX,KAAK6qT,mBAFZ7qT,KAAK6qT,mBAAqB3sT,CAIjC,EACDysT,eAAgB,SAAS1hT,EAAGwqF,GAAa,WACrC,IAAIzzF,KAAK4qT,+BAGT,GAAK5qT,KAAKiqT,6BAAV,CAIA,IAAI5E,EAAgBrlT,KAAK2sC,OAAO,iBAC5B04Q,GACArlT,KAAK8qT,oBACL9qT,KAAK+qT,aAAex1R,YAAW,WAC3B,EAAKy1R,kBAAkBv3N,EAC1B,GAAE4xN,IAEHrlT,KAAKgrT,kBAAkBv3N,EAR1B,MAFGzzF,KAAKirT,iBAYZ,EACDA,gBAAiB,WACbjrT,KAAK8qT,oBACD9qT,KAAKkqT,oBACLlqT,KAAKkrT,kBAAkB,MAE3BlrT,KAAKqpT,cACR,EACD2B,kBAAmB,WACf,IAAIv3N,EAAc37E,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAK8iG,eACxF9iG,KAAKkrT,kBAAkBz3N,EAC1B,EACDy3N,kBAAmB,SAASz3N,GACxBzzF,KAAK8qT,oBACL,IAAIhiN,EAAiB9oG,KAAK+oG,gBAC1BD,EAAe5F,WAAWljG,KAAK2sC,OAAO,eAAiB3sC,KAAKu+O,sBAC5Dz1I,EAAe9F,gBAAgBhjG,KAAK2sC,OAAO,eAC3Cm8D,EAAerV,YAAYA,GAC3BqV,EAAezS,OAAOznC,KAAK5uD,KAAKmrT,oBAAoBruT,KAAKkD,KAAMyzF,GAClE,EACDk1N,aAAc,WACV,IAAI7/M,EAAiB9oG,KAAK+oG,gBAC1BD,EAAerV,eAAiBqV,EAAerV,YAAY,KAC9D,EACD03N,oBAAqB,WACjBnrT,KAAKqqT,+BAAiCrqT,KAAKiqT,6BAC3CjqT,KAAKqpT,eACLrpT,KAAKorT,yBACR,EACDC,iBAAkB,WACd,OAAOrrT,KAAKsrT,iBACf,EACDF,wBAAyB,WACrB,IAAIprT,KAAK2sC,OAAO,aAAgB3sC,KAAK8iG,eAArC,CAGA,IAAIyoN,EAAkBvrT,KAAKqrT,mBACvBE,IAAoBvrT,KAAK85M,eAG7B95M,KAAK2sC,OAAO,SAAU4+Q,GAClBA,IACAvrT,KAAK8oQ,oBACL9oQ,KAAK+pT,yBARR,CAUJ,EACDl3F,0BAA2B,SAASC,GAC5B,IAAM9yN,KAAK+oG,gBAAgBvG,YAC3BxiG,KAAK2sC,SAASuZ,MAAQ4sK,EAEtB9yN,KAAK2sC,SAASuZ,MAAQlmD,KAAK2sC,SAASuZ,MAAMj2C,OAAO6iN,EAExD,EACDw4F,gBAAiB,WACb,IAEIE,GAFiBxrT,KAAK+oG,gBACO7iD,SAAW,IACbvlD,OAE/B,SADgCX,KAAKwpT,8BACEgC,EAC1C,EACDV,kBAAmB,WACfx1R,aAAat1B,KAAK+qT,qBACX/qT,KAAK+qT,YACf,EACDhjD,qBAAsB,WAClB/nQ,KAAK8oQ,oBACL9oQ,KAAK+pT,uBACR,EACDniJ,kBAAmB,WACf5nK,KAAKmiD,WACLniD,KAAK+pT,uBACR,EACD0B,kBAAmB,WACf,IAAI3iN,EAAiB9oG,KAAK+oG,gBACtB2iN,EAAmB5iN,EAAetG,YAClCmpN,GAAct9P,EAAAA,EAAAA,IAAUruD,KAAKuiG,aAAempN,GAAoB1rT,KAAKuiG,YAAcuG,EAAe1E,eAAiBpkG,KAAKmtD,MAAMuyP,oBAElI,OADA1/S,KAAKuiG,WAAampN,EACXC,CACV,EACD5B,sBAAuB,WACd/pT,KAAKsnQ,SAGNtnQ,KAAKyrT,qBACLzrT,KAAKsnQ,OAAOnsD,UAEhBn7M,KAAKmtD,OAASntD,KAAKmtD,MAAMmzP,mBAC5B,EACDuI,cAAe,WACX,IAAI7uP,EAAWh6D,KAAKg6D,WAChB4xP,EAA2B5rT,KAAKynT,0BAChCz3I,EAAYh2G,EAAS/sD,SAASw3B,KAAOmnR,EAA2BA,EAAyB3+S,SAASw3B,IAAM,GACxG+pK,EAAetjI,GAAejxE,IAC9By+J,EAAkBkzJ,EAA2BriT,KAAKsZ,IAAIqoD,GAAe0gP,GAA2Bp9G,GAAgBA,EAChHvtK,EAAY13B,KAAKkuB,IAAIu4I,EAAWtX,EAAkBsX,EAAY9kG,GAAelR,IACjF,OAAOzwD,KAAKsZ,IAAI,GAAK61I,EAAiBz3H,EACzC,EACDqoI,OAAQ,WACAtpK,KAAKmtD,cACEntD,KAAKmtD,aAETntD,KAAKqqT,+BACZrqT,KAAKmiD,UACR,EACDuwF,SAAU,WACN1yI,KAAK8qT,oBACL9qT,KAAKmiD,UACR,EACDy9L,2BAA4B,WACxB5/O,KAAKyoT,eAAe1wS,MAAM/X,KAAM8X,UACnC,EACD+tO,gBAAiB,WACb,IAAI3nP,EAAQ8B,KAAK2sC,OAAO,SACpBw5M,EAAcnmP,KAAK6rT,uBAAuB3tT,GAAS8B,KAAKovN,eAAelxN,GAASA,EACpF8B,KAAKskP,oBAAoB7rN,IAAI0tN,EAChC,EACD0lE,uBAAwB,SAAS3tT,GAC7B,MAAO,SAAW8B,KAAK2sC,OAAO,eAAgBtsB,EAAAA,EAAAA,IAASniB,EAC1D,EACD4hK,eAAgB,SAASliK,GAErB,OADAoC,KAAK8/O,6BAA6BliP,GAC1BA,EAAKxE,MACT,IAAK,oBACL,IAAK,oBACD4G,KAAKypT,oBAAsBzpT,KAAKyoT,eAAe7qT,EAAKxE,KAAMwE,EAAKM,OAC/D8B,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,QACIoC,KAAK2sC,OAAO,eACb3sC,KAAKwoT,6BAET,MACJ,IAAK,aACDxoT,KAAKwoT,6BACL,MACJ,IAAK,YACDxoT,KAAK8zP,eACL9zP,KAAKyoT,eAAe,UAAWzoT,KAAK6/O,yBACpC,MACJ,IAAK,cACD7/O,KAAK8zP,eACL9zP,KAAKyoT,eAAe,cAAezoT,KAAKu+O,sBACxC,MACJ,IAAK,aACDv+O,KAAKymT,sBACL,MACJ,IAAK,kBACDzmT,KAAKqpT,eACL,MACJ,IAAK,gBACL,IAAK,uBACL,IAAK,aACDrpT,KAAKypK,cACL,MACJ,IAAK,iBACDzpK,KAAKm3M,0BACL,MACJ,IAAK,qBACDn3M,KAAK8mT,8BACL,MACJ,IAAK,cACD9mT,KAAK+mT,uBACL,MACJ,IAAK,UACL,IAAK,gBACL,IAAK,eACL,IAAK,aACL,IAAK,mBACL,IAAK,qBACD/mT,KAAKyoT,eAAe7qT,EAAKxE,MACzB,MACJ,IAAK,eACD4G,KAAK2sC,OAAO,OAAQ/uC,EAAKM,OACzB,MACJ,IAAK,eACL,IAAK,gBACD,MACJ,IAAK,eACGN,EAAKi9J,gBAAkBj9J,EAAKM,OAC5B8B,KAAKgnT,wBAAwB,CACzB//E,aAAcrpO,EAAKM,QAG3B,MACJ,QACI8B,KAAKmiD,SAASvkD,GAEzB,IACF6kD,QAAQw7L,GAAqBkkE,IAChC3vI,GAAkB,iBAAkBwzI,IACpC,UCzuBA,IAAI5kE,GAAuB,0BACvBC,GAAoB,uBACHQ,GAAAA,SAAAA,mIACjB,WAAW,WACH/2O,GAAQ,wDAiBZ,OAhBAA,EAAM0yK,UAAY,WAEd,GADsC,SAAW,EAAK7wI,OAAO,yBACxB,CACjC,IAAIu2M,EAA4BnyK,GCzBzC,SAAqC7W,EAAIhqD,GAC5C,IAAI+pD,EAAiB6xP,EAErB,OADW,QAAU7xP,EAAkB,QAAU6xP,EAAmB5xP,EAAGvS,mBAAgB,IAAWmkQ,OAAmB,EAASA,EAAiBrtT,KAAKy7D,UAAQ,IAAWD,EAAkBA,EAAkB/3D,UAC/LotE,cAAcp/D,EAC7B,CDqBiD67S,CAA4B,EAAKv/S,UAAW,2CAC9E,OAAS02O,QAA6B,IAAWA,GAAqCA,EAA0B70K,YAAY+yK,IACxH,EAAKU,8BACLxsN,aAAa,EAAKwsN,8BAEtB,EAAKA,6BAA+BvsN,YAAW,WAC3C,OAAS2tN,QAA6B,IAAWA,GAAqCA,EAA0B90K,SAASgzK,GAC5H,GAAE,IACN,CACJ,EACDt2O,EAAMkhT,qBAAuB,SAAA/iT,GACzB,EAAK45O,0BAA4B55O,CACpC,EACM6B,CACV,+BACD,SAAe0B,IACX,6DAAqBA,GACrBxM,KAAK8hP,kCAA+B,EACpC9hP,KAAK+hP,mBAAoBn1L,EAAAA,GAAAA,KACzBtyD,EAAK0F,KAAKg6D,WAAW,GAAIqnL,GAAmBrhP,KAC/C,wBACD,WACI,IAAI6oG,EACJ,QAAUA,EAAe7oG,KAAK2sC,OAAO,4BAAyB,IAAWk8D,GAAwBA,GACpG,qCACD,YACI,oEACA7oG,KAAKoiP,mBAAqBpiP,KAAK2/J,sBAAsB,iBAAkB,CACnE5e,kBAAmB,CAAC,WAAY,aAEvC,6BACD,SAAa3jJ,IACT,2DAAmBA,GACnB4C,KAAK2sC,OAAOmpI,GAAAA,sBAAuC14K,GACtD,mCACD,WACI,OAAOqoD,EAAAA,GAAAA,IAAO,kEAA4B,CACtCk8L,wBAAyB,CACrB1lP,EAAG,EACHmoB,EAAG,GAEP69N,yBAA0B,CAAC,GAElC,wCACD,SAAwB5qC,EAAaG,GAAkB,WAC/Cy0G,GAAqBxmQ,EAAAA,GAAAA,GAAO,CAAC,EAAG4xJ,EAAY1qK,UAC5C8qK,EAAc,kBAAM,EAAKy0G,QAAQ10G,EAAkBy0G,EAArC,EAClBx0G,IACAJ,EAAYtqK,GAAG,gBAAiB0qK,EACnC,iCACD,SAAiBv5M,EAAO28J,GACpB,IAAIsxJ,IAAkB99P,EAAAA,EAAAA,IAAUnwD,MAAWmwD,EAAAA,EAAAA,IAAUwsG,GACjD38J,IAAU28J,GAAkBsxJ,GAC5BnsT,KAAK+hP,kBAAkBh1L,KAAK,CACxB7uD,MAAOA,EACPymP,OAAQ3kP,MAGnB,wCACD,SAAwB9B,EAAO28J,GAC3B,IAAIuxJ,EACJ,QAAUA,EAAwBpsT,KAAKoiP,0BAAuB,IAAWgqE,GAAiCA,EAAsB3tT,KAAKuB,KAAM,CACvIwM,QAASxM,KAAKg6D,WACd6gG,cAAeA,EACf38J,MAAOA,EACP6C,MAAOf,KAAK6iP,4BAEhB7iP,KAAK6iP,+BAA4B,CACpC,+BACD,SAAel2M,GACX,IACUvzC,EAGNuzC,EAHAvzC,KACeyhK,EAEfluH,EAFAkuH,cACO38J,EACPyuC,EADAzuC,MAKJ,OAHI9E,QAAQ,IAAW4G,KAAKm4L,oBAAoB/+L,IAC5C4G,KAAKq2L,WAAWj9L,GAEZA,GACJ,IAAK,QACD4G,KAAKqsT,iBAAiBnuT,EAAO28J,GAC7B76J,KAAK2iP,wBAAwBzkP,EAAO28J,GACpC,MACJ,IAAK,iBACD76J,KAAKoiP,mBAAqBpiP,KAAK2/J,sBAAsB,iBAAkB,CACnE5e,kBAAmB,CAAC,WAAY,cAEpC,MACJ,IAAK,UACL,IAAK,kBACL,IAAK,mBACL,IAAK,mBACD/gJ,KAAK2sC,OAAOmpI,GAAAA,6BAA8CnpI,EAAQ3sC,KAAK2sC,YAE/E,6DAAqBA,EACxB,sBACD,WACI,IACWzuC,EACP8B,KAAK49J,qBADL1/J,MAEJ8B,KAAK2sC,OAAO,CACRzuC,MAAOA,GAEd,yBACD,YACI,wDACA5D,EAAK0F,KAAKwM,UAAW60O,GAAmB,MACpCrhP,KAAK8hP,8BACLxsN,aAAat1B,KAAK8hP,6BAEzB,OApHgBD,CAAexvN,IAsHhCi6R,GAAeC,GAAAA,SACfC,GAAc,SAAAzjR,GAAQ,OAAIujR,GAAavjR,IAAaA,aAAoB84M,EAAlD,EAC1BA,GAAO+C,SAAW4nE,GAClBD,GAAAA,SAAqBC,OE3IAC,GAAAA,SAAAA,wIACjB,WACI,OAAO,CACV,2BACD,WAEI,OADkBzsT,KAAKg6D,WAAW,GACflsB,UAAUmyB,SAAS,mBACzC,qCACD,WACI,MAAO,CAAC,QACX,yBACD,WACI,IAAIn1D,GAAQ,wDAIZ,OAHI,OAASA,EAAM5M,QACf4M,EAAM5M,MAAQ+gI,QAAQn0H,EAAM5M,QAEzB4M,CACV,OAjBgB2hT,CAAiB5qE,ICIlC6qE,GAA2B,CAAC,aAAc,mBAC1CC,GAAgB,CAChBl1Q,oBAAoB,GAGxB,SAASm1Q,GAAYtqT,EAAKpE,EAAO28J,GAC7B,MAAO,CACHl4J,KAAML,EACNpE,MAAOA,EACP28J,cAAeA,EAEtB,CAED,SAASnrH,GAAQm9Q,EAAa/T,EAAOC,EAAOz2S,EAAKwqT,EAAcC,GAC3D,IAAIJ,GAAcrqT,GAAlB,CAGA,IAAI0qT,GAAQ3nT,EAAAA,EAAAA,IAAKyzS,GACbmU,GAAQ5nT,EAAAA,EAAAA,IAAK0zS,GACjB,GAAID,IAAUC,EAGd,GAAIiU,IAAUC,EACVJ,EAAYzsT,KAAKwsT,GAAYtqT,EAAKy2S,EAAOD,SACtC,GAAI,WAAakU,EACpB,IAAK5lR,EAAAA,EAAAA,IAAc2xQ,GAEZ,CACH,IAAImU,EAAYC,GAAYrU,EAAOC,EAAO+T,EAAcC,GACxDF,EAAYzsT,KAAZ,MAAAysT,GAAW,QAASK,EAAUnpT,KAAI,SAAAa,GAAI,OAAImU,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,EAAM,CACzDjC,KAAM,GAAGsN,OAAO3N,EAAK,KAAK2N,OAAOrL,EAAKjC,OADJ,KAGzC,MANGkqT,EAAYzsT,KAAKwsT,GAAYtqT,EAAKy2S,EAAOD,SAO1C,GAAI,UAAYkU,EAAO,CAE1B,GADkBD,EAAkB56P,MAAK,SAAAt1D,GAAI,OAAIiwT,EAAavnT,SAAS1I,EAA1B,KAC1Bi8S,IAAUC,EACzB8T,EAAYzsT,KAAKwsT,GAAYtqT,EAAKy2S,EAAOD,SACtC,GAAIA,EAAMn4S,SAAWo4S,EAAMp4S,OAC9BksT,EAAYzsT,KAAKwsT,GAAYtqT,EAAKy2S,EAAOD,QACtC,CACH,IAAIsU,EAAaD,GAAYrU,EAAOC,EAAO+T,EAAcC,GACzD,GAAG3sT,KAAK2X,MAAM80S,EAAaO,EAAWrpT,KAAI,SAAAa,GAAI,OAAImU,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,EAAM,CACjEjC,KAAM,GAAGsN,OAAO3N,GAAK2N,OAAOrL,EAAKjC,OADS,IAGjD,CACJ,MACGkqT,EAAYzsT,KAAKwsT,GAAYtqT,EAAKy2S,EAAOD,GA9B5C,CAgCJ,CACD,IAAIuU,GAAsB,SAAAC,GAAe,OAAI,SAACC,EAAUziT,EAAOgiT,EAAcC,GACzE,IAAIF,EAAc,GACdW,EAAe3oT,MAAMC,QAAQyoT,GAE7B,SAAAz2S,GACA44B,GAAQm9Q,EAAaU,EAASz2S,GAAWhM,EAAMgM,GAAW,IAAI7G,OAAO6G,EAAU,KAAM,GAAG7G,OAAO68S,EAAc,KAAK78S,OAAO6G,GAAWi2S,EACvI,EAJ4C,SAAAj2S,GACzC44B,GAAQm9Q,EAAaU,EAASz2S,GAAWhM,EAAMgM,GAAWA,EAAU,GAAG7G,OAAO68S,EAAc,KAAK78S,OAAO6G,GAAWi2S,EACtH,EAWD,OARAO,EAAgBC,GAAU7sT,QAAQ8sT,GAClCxvT,OAAOgB,KAAK8L,GAAO0vB,QAAO,SAAA1jB,GAAQ,OAAK9Y,OAAOgK,UAAU6X,eAAephB,KAAK8uT,EAAUz2S,IAAay2S,EAASz2S,KAAchM,EAAMgM,EAA9F,IAAyGpW,SAAQ,SAAAoW,GAC/I+1S,EAAYzsT,KAAK,CACbuC,KAAMmU,EACN5Y,MAAO4M,EAAMgM,GACb+jJ,cAAe0yJ,EAASz2S,IAE/B,IACM+1S,CACV,CAhBwC,EAiBrCM,GAAcE,IAAoB,SAAAE,GAAQ,OAAIvvT,OAAOgB,KAAKuuT,EAAhB,IAC1CE,GAAa,CACbnrT,KAAK,EACL2O,KAAK,EACLlG,UAAU,EACV+rB,OAAO,GAEP42R,GAA+BL,IAAoB,SAAAxwT,GAAI,OAAImB,OAAOgB,KAAKnC,GAAM29B,QAAO,SAAA38B,GAAC,OAAK4vT,GAAW5vT,EAAhB,GAA9B,IC5E3D,IAAIunB,GAAY,CAAC,eACbuoS,GAAa,CAAC,iBAAkB,gBAAiB,iBAkBjDxzQ,GAAiB,SAAArvC,GAAK,OAAI9M,OAAOgB,KAAK8L,GAAO3G,QAAO,SAACO,EAAapC,GAIlE,YAHI,IAAWwI,EAAMxI,KACjBoC,EAAYpC,GAAOwI,EAAMxI,IAEtBoC,CACV,GAAE,CAAC,EALsB,EAsBbkpT,GAAb,0CACI,WAAY9iT,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKqgK,UzJizBF,CACHtvL,QAAS,MyJjzBT,EAAKo4D,YAAc,EAAKA,YAAY/0E,MAAjB,YACnB,EAAK+wT,YAAc,EAAKA,YAAY/wT,MAAjB,YACnB,EAAKgxT,aAAe,EAAKA,aAAahxT,MAAlB,YANL,CAOlB,CARL,mCASI,WACI,OAAIkD,KAAKmmD,QAAQk+I,GAActmL,IACpB/d,KAAKmmD,QAAQk+I,GAActmL,IAE/BsmL,GAAcjmK,YACxB,GAdL,2BAeI,WACI,MAAO,CAAC,IAAIuvJ,GAAc3tL,KAAK6tT,YAAa,IAAK,IAAIlgI,GAAc3tL,KAAK8tT,aAAc,CAAC9tT,KAAK8K,MAAMijT,eAAgB/tT,KAAKD,OAAQC,KAAK8K,MAAMkjT,gBAC7I,GAjBL,2BAkBI,WACI,IAAI5nH,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMijT,eAAgB/tT,KAAKD,OAAQC,KAAK8K,MAAMkjT,eACrK,GArBL,yBAsBI,WAAc,WACNx8O,EAAoB,IAAIxxE,KAAK8K,MAAMmjT,cAAcjuT,KAAK+oM,UAAUtvL,QAASzZ,KAAKs9B,YAElF,OADAt9B,KAAK+oC,SAAWyoC,EACT,WACHA,EAAkBjlC,UAClB,EAAKxD,SAAW,IACnB,CACJ,GA7BL,0BA8BI,WACI,IAAIA,EAAW/oC,KAAK6xE,cACpB,GAAK9oC,EAAL,CAGA,IAAImlR,EDCL,SAA2BX,EAAUziT,GAExC,OAAO4iT,GAA6BH,EAAUziT,EAAO,GAD7BgN,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK40S,GAE5F,CCJ4ByB,CAAkBnuT,KAAK8rC,WAAa,CAAC,EAAG9rC,KAAKs9B,YAC9D4wR,EAAevtT,SACfooC,EAAS8O,cACTq2Q,EAAextT,SAAQ,SAAAgkK,GACnB,IACU/hK,EAEN+hK,EAFA/hK,KACOzE,EACPwmK,EADAxmK,MAEJ6qC,EAAS4D,OAAOhqC,EAAMzE,EACzB,IACD6qC,EAASiP,aAEbh4C,KAAK8rC,UAAY9rC,KAAKs9B,UAbrB,CAcJ,GAhDL,sBAiDI,WAAiB,IACT8wR,EADS,OAETC,EAAkBl0Q,GAAen6C,KAAK8K,MAAMijT,gBAE/BO,EACbD,EADAC,YACiBC,GAAY9mS,EAAAA,GAAAA,GAA8B4mS,EAAiBjpS,IAC5EkY,GAAavkB,EAAAA,EAAAA,GAAS,CACtBinC,aAAe,QAAUouQ,EAAepuT,KAAKD,cAAW,IAAWquT,IAAgBA,EAAapuQ,YAChGgqK,aAAa,GACdukG,GAqBH,OApBID,IACAhxR,EAAW0kN,eAAiB,SAAAl8F,GACxB,IACW5nJ,EACP4nJ,EADA5nJ,MAEJ,OAAOowT,EAAYpwT,EACtB,GAEW8B,KAAK8K,MAAMkjT,cACjBttT,SAAQ,SAAAtH,IhJ/GC,SAACA,EAAMkkC,EAAYsjH,GAC1C,IAAM1iJ,EAAQo/B,EAAWlkC,GACzB,QAAS8E,GAA0B,kBAAVA,CAC5B,EgJ6GeswT,CAAYp1T,EAAMkkC,KAClBA,EAAWlkC,GAAQ,SAACwL,EAAMzD,EAAOoG,GhJtH1C,IAAwBiY,EAAU1U,EAAV0U,EgJuHI,EAAK1U,MAAMijT,eAAe30T,GhJvHpB0R,EgJuH2B,CAC5ClG,KAAMA,EACNzD,MAAOA,EACPoG,UAAWA,GhJzH/BguB,YAAW,WACP+Y,GAAOjmC,GAAcmX,EAAU1U,GAHlB,SAACA,GAAY,IAAIpQ,EAAIC,EAAI,OAAmC,QAA1BD,EAAKoQ,EAAMvD,iBAA8B,IAAP7M,OAAgB,EAASA,EAAGd,IAAI,MAA8B,QAArBe,EAAKmQ,EAAMlG,YAAyB,IAAPjK,OAAgB,EAASA,EAAGf,IAAI,GAAM,CAGtJ60T,CAAa3jT,GACvD,GAAE,EgJyHU,EAER,IACMwyB,CACV,GAhFL,0BAiFI,WACI,IAAI+gK,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAasvH,GAE9D,GArFL,yBAsFI,WACI,OAAO3tT,KAAK+oC,QACf,GAxFL,oBAyFI,WACI,IAAIj+B,EAAQ9K,KAAK8K,MACjB,OA3GkB,SAAAkM,GACtB,IAGuBmB,EAKnBnB,EAPAlM,MACIijT,eACI51S,UAGQumL,EAEhB1nL,EAFA0nL,eACWqK,EACX/xL,EADA+xL,UAEJ,OAAO5uJ,GAAeygI,GAAY,EAAG,MAAOziK,EAAW,KAAM,GAAGY,EAAAA,EAAAA,GAAS,CAAC,EAAG2lL,GAAiB,KAAMqK,GACvG,CAgGctK,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBi+L,UAAW/oM,KAAK+oM,UAChBhpM,OAAQC,KAAKD,OACbu9B,WAAYt9B,KAAKs9B,WACjBohK,eAAgB1+L,KAAK0+L,gBAE5B,KAlGL,GAAyChS,IAoGzCkhI,GAAoBj1S,aAxGkB,CAAC,ECrCvC,IAAIyM,GAAY,CAAC,YAAa,qBAAsB,WAAY,YAAa,YAAa,WAAY,oBAAqB,SAAU,OAAQ,oBAAqB,OAAQ,SAAU,UAAW,YAAa,eAAgB,aAAc,WAAY,SAAU,mBAAoB,UAAW,kBAAmB,SA0BvSspS,GAAyB1wT,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BN,IAAkBlmM,OAAOwmM,0BAA0B,CAC7Jl9K,KAAM,OACN44N,aAAc,MACdjzO,OAAQjP,OAAO8iM,OAAO,CAClB7kM,EAAG,EACHmoB,EAAG,IAEPuqS,yBAAyB,MAEhB3uE,GAAb,0CACI,WAAYl1O,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,OAAO1oC,KAAK8K,KACf,GAPL,0BAQI,WACI,IAAIuzL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAZL,oBAaI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAnCkB,SAAAkM,GACtB,IACoB+2S,EAEhB/2S,EAFA+2S,eACgBrvH,EAChB1nL,EADA0nL,eAEJ,OAAOvkJ,GAAeshI,GAAqB,EAAGmyI,IAAqB70S,EAAAA,EAAAA,GAAS,CACxEk1S,cAAeW,GACfb,eAAgBA,EAChBC,cAAe,IAChBtvH,IACN,CAyBcD,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBijT,eAAgB/tT,KAAK+tT,eACrBrvH,eAAgB1+L,KAAK0+L,gBAE5B,KApBL,GAAuClS,IAsBvCwzD,GAAkBrnO,aAAe+1S,GCzDjC,IAAItpS,GAAY,CAAC,YAAa,qBAAsB,OAAQ,WAAY,YAAa,UAAW,eAAgB,WAAY,oBAAqB,SAAU,OAAQ,oBAAqB,YAAa,UAAW,OAAQ,UAAW,YAAa,YAAa,WAAY,aAAc,WAAY,kBAAmB,mBAAoB,wBAAyB,4BAA6B,mBAAoB,QAAS,cAAe,UAAW,SAwG5aypS,GAAc7wT,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BN,IAAkBlmM,OAAOwmM,0BAA0B,CAClJzvK,UAAU,EACV37B,KAAM,GACNs/K,gBAAiB,KACjBC,iBAAkB,KAClB8oE,sBAAuB,OACvBC,0BAA2B,SAC3BlpE,iBAAkB,QAClBtoC,SAAS,EACTyiH,UAAW30P,OAAO8iM,OAAO,CAAC,GAC1B1iK,aAAc,KACdkwR,YAAa,WAAQ,MAEdQ,GAAkB,CACrB/5R,eACA,OAAO85R,GAAY95R,QACtB,EACG37B,WACA,OAAOy1T,GAAYz1T,IACtB,EACGs/K,sBACA,OAAOm2I,GAAYn2I,eACtB,EACGC,uBACA,OAAOk2I,GAAYl2I,gBACtB,EACG8oE,4BACA,OAAOotE,GAAYptE,qBACtB,EACGC,gCACA,OAAOmtE,GAAYntE,yBACtB,EACGlpE,uBACA,OAAOq2I,GAAYr2I,gBACtB,EACGtoC,cACA,OAAO2+K,GAAY3+K,OACtB,EACGyiH,gBACA,OAAOk8D,GAAYl8D,SACtB,EACGv0N,mBACA,OAAOywR,GAAYzwR,YACtB,EACGkwR,kBACA,OAAOO,GAAYP,WACtB,EACGn2S,gBACA,OAAO02S,GAAY12S,SACtB,EACGgsL,yBACA,OAAO0qH,GAAY1qH,kBACtB,EACG3+K,eACA,OAAOqpS,GAAYrpS,QACtB,EACG24B,wBACA,OAAO0wQ,GAAY1wQ,iBACtB,EACGimJ,wBACA,OAAOyqH,GAAYzqH,iBACtB,EACG5jJ,eACA,OAAOquQ,GAAYruQ,QACtB,EACGK,cACA,OAAOguQ,GAAYhuQ,OACtB,EACGm3I,WACA,OAAOuM,GAAYvM,IACtB,EACGrmK,cACA,OAAO4yK,GAAY5yK,OACtB,GAWQkwN,GAAb,0CACI,WAAY/2O,GAAO,6BACf,cAAMA,IACDi+L,U3J+pBF,CACHtvL,QAAS,M2J/pBT,EAAKytL,e3J8pBF,CACHztL,QAAS,M2J9pBT,EAAKunL,cAAgB,CAAC,EACtB,EAAKt4J,MAAQ,CACTqmR,sBAAuB,MAAM9+S,OAAO,IAAIi8C,GAAAA,GACxC8iQ,4BAA4B,EAC5B9wT,WAAO,IAAW,EAAK4M,MAAM5M,MAAQ,EAAK4M,MAAM5M,MAAQ,EAAK4M,MAAMszB,cAEvE,EAAK6wR,kCAAoC,EAAKA,kCAAkCnyT,MAAvC,YACzC,EAAKupB,MAAQ,EAAKA,MAAMvpB,MAAX,YACb,EAAK07E,KAAO,EAAKA,KAAK17E,MAAV,YACZ,EAAK0gL,UAAY,EAAKA,UAAU1gL,MAAf,YAbF,CAclB,CAfL,4CAgBI,WACI,MAAO,CAAC,IAAI6wL,GAAc3tL,KAAKivT,kCAAmC,CAACjvT,KAAK8K,MAAMolI,QAASlwI,KAAK8K,MAAM0tK,iBAAkBx4K,KAAK8K,MAAM4tK,gBAAiB14K,KAAK8K,MAAM6tK,mBAAoBqV,KAClL,GAlBL,2BAmBI,WACI,IAAIoY,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMolI,QAASlwI,KAAK8K,MAAM0tK,iBAAkBx4K,KAAK8K,MAAM4tK,gBAAiB14K,KAAK8K,MAAM6tK,kBAC1M,GAtBL,+CAuBI,WAAoC,WAChC34K,KAAK05C,UAAS,SAAAytJ,GAAgB,MAAK,CAC/B6nH,2BAA4B,EAAKE,4BADP,GAGjC,GA3BL,uBA4BI,SAAUnuT,GACN,IACey8K,EACXx9K,KAAK8K,MADL0yK,UAEJ,OAASA,QAAa,IAAWA,GAAqBA,EAAUz8K,EACnE,GAjCL,sBAkCI,WACI,MAAO,GAAGkP,OApME,SAAAwlC,GAChB,IACa9jB,EAGT8jB,EAHA9jB,QACSu+G,EAETz6F,EAFAy6F,QACUn7G,EACV0gB,EADA1gB,SAOJ,OAAOynH,IALU,SACb,sBAAuBznH,EACvB,cAAem7G,GACd,GAAGjgI,OAAO0hB,KAAaA,GAG/B,CAwLwBwrK,EAAcpkL,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK8K,MAAO,CACpD5M,WAAO,IAAW8B,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,SAE1E,GAtCL,uCAuCI,WACI,IAAIixT,EACA,EAGAnvT,KAAK8K,MAFIolI,EADb,EACIA,QACkBsoC,EAFtB,EAEIA,iBAEAG,EAAmB,QAAUw2I,EAAwBnvT,KAAK24K,wBAAqB,IAAWw2I,EAAwBA,EAAwB,GAE9I,QADoBj/K,GAAW,YAAcsoC,IACpBG,EAAiBh4K,OAAS,CACtD,GAhDL,gBAiDI,WACI,IAAI,EAGAX,KAAK8K,MAFIolI,EADb,EACIA,QAGA1sI,EAAS,CACT4rT,SALJ,EAEIr6R,SAGqB,OAAS,QAC9B6uG,QAAUsM,EAAmB,QAAT,QAKxB,OAHIlwI,KAAKkvT,8BACL1rT,EAAO6rT,YAAcrvT,KAAK0oC,MAAMqmR,wBAE7Bh2S,EAAAA,EAAAA,GAAS,CAAC,EAAGvV,EAAQxD,KAAK8K,MAAMktL,KAC1C,GA9DL,4BA+DI,WAAuB,WACnB,YAAI,IAAWh4L,KAAKghM,cAAcroB,iBACvB34K,KAAKghM,cAAcroB,iBAEvB34K,KAAKghM,cAAcroB,iBAAoB,WAC1C,IAAI,EAGA,EAAK7tK,MAFY4tK,EADrB,EACIA,gBACkBC,EAFtB,EAEIA,iBAEA22I,EAAsB32I,IAAoB,QAAIA,GAIlD,OAHK22I,GAAuB52I,IACxB42I,EAAsB,EAACv2S,EAAAA,EAAAA,GAAS,CAAC,EAAG2/J,KAEjC42I,CACV,CAV6C,EAWjD,GA9EL,mCA+EI,WACI,IAAIC,EACJ,OAAO,QAAUA,EAAuBvvT,KAAKknM,sBAAmB,IAAWqoH,OAAuB,EAASA,EAAqB91S,OACnI,GAlFL,0BAmFI,WACI,IAAI+1S,GAAoBz2S,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK8K,MAAO,CACzC5M,WAAO,IAAW8B,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,QAG3E,OADgBupB,EAAAA,GAAAA,GAA8B+nS,EAAmBpqS,GAEpE,GAzFL,mBA0FI,WACIplB,KAAK+oM,UAAUtvL,QAAQ4M,OAC1B,GA5FL,kBA6FI,WACIrmB,KAAK+oM,UAAUtvL,QAAQ++D,MAC1B,GA/FL,iCAgGI,SAAoBgiG,EAAWsM,EAAW3gI,IACtC,mEACInmD,KAAK8K,MAAM4tK,kBAAoB8B,EAAU9B,iBAAmB14K,KAAK8K,MAAM6tK,mBAAqB6B,EAAU7B,mBACtG34K,KAAKghM,cAAcroB,sBAAmB,EAE7C,GArGL,oBAsGI,WACI,IAAI7tK,EAAQ9K,KAAK8K,MACjB,OA5PkB,SAAAk9L,GACtB,IACUhQ,EA6BNgQ,EA7BAhQ,KACYrmK,EA4BZq2K,EA5BAC,WAC4B+mH,EA2B5BhnH,EA3BAgnH,2BACWxxI,EA0BXwqB,EA1BAxqB,UAJJ,EA8BIwqB,EAzBAl9L,MACemyC,EANnB,EAMQA,UACoBknJ,EAP5B,EAOQA,mBACUp5L,EARlB,EAQQA,SACWoN,EATnB,EASQA,UACUqN,EAVlB,EAUQA,SACmB24B,EAX3B,EAWQA,kBACQ3xB,EAZhB,EAYQA,OACM8xB,EAbd,EAaQA,KACmB8lJ,EAd3B,EAcQA,kBACS9mB,EAfjB,EAeQA,QACWI,EAhBnB,EAgBQA,UACY19H,EAjBpB,EAiBQA,WACUQ,EAlBlB,EAkBQA,SACuBihM,EAnB/B,EAmBQA,sBAC2BC,EApBnC,EAoBQA,0BACS7gM,EArBjB,EAqBQA,QACOlwB,EAtBf,EAsBQA,MAEY+tK,EAMhBsJ,EANAtJ,eACgBwI,EAKhBc,EALAd,eACkBvuB,EAIlBqvB,EAJArvB,iBACuBo2I,EAGvB/mH,EAHA+mH,sBACyBU,EAEzBznH,EAFAynH,wBACW1mH,EACXf,EADAe,UAEJ,OAAO5uJ,GAAeshI,GAAqB,EAAGmpB,IAAQ7rL,EAAAA,EAAAA,GAAS,CAC3DmuL,eAAgBA,EAChBlP,KAAMA,EACNrmK,QAASA,EACTwyK,mBAAoBA,EACpBhmJ,kBAAmBA,EACnBimJ,kBAAmBA,EACnBnnJ,UAAWA,EACX9kC,UAAWA,EACX6nC,WAAYA,EACZ1B,KAAMA,EACN94B,SAAUA,EACVgH,OAAQA,EACRmE,MAAOA,EACP6sJ,UAAWA,EACXF,QAASA,EACTI,UAAWA,EACXl9H,SAAUA,EACVK,QAASA,GACV69I,EAAgB,CACf3zL,SAAUgxK,GAAe,CAAChxK,EAAUikT,GAA8BvzI,GAAqB,EAAGukE,GAAmB,CACzGrnE,iBAAkBA,EAClBrxJ,KAAMm6N,EACNvB,aAAcwB,EACd1hM,WAAYA,EACZroC,OAAQ83S,EACRxhH,SAAUwhH,EACVtzG,gBAAiBszG,EACjBtvE,UAAW4uE,KACV,KACL,KAAMhmH,GACb,CA6LctK,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB5M,WAAO,IAAW8B,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,QAEvE6wT,sBAAuB/uT,KAAK0oC,MAAMqmR,sBAClCC,2BAA4BhvT,KAAK0oC,MAAMsmR,2BACvC9nH,eAAgBlnM,KAAKknM,eACrB6B,UAAW/oM,KAAK+oM,UAChBvrB,UAAWx9K,KAAKw9K,UAChByqB,WAAYjoM,KAAKioM,WACjBinH,4BAA6BlvT,KAAKkvT,4BAClCl3H,KAAMh4L,KAAKg4L,KACXrf,iBAAkB34K,KAAK24K,iBACvB82I,wBAAyBzvT,KAAKyvT,wBAC9B/wH,eAAgB1+L,KAAK0+L,gBAE5B,KAxHL,GAA4B3R,IAoI5B80D,GAAOlpO,aAAem2S,GC7TtB,IAAIY,GAAmB,CACnB,CAAC,GAAI,IACL,CAAC,GAAI,KAELC,GAAmB,CACnB,CACI,CAAC,GAAI,GACL,CAAC,GAAI,KAET,CACI,CAAC,GAAI,IACL,CAAC,GAAI,MAIb,SAASC,KACL,IAAIv3S,EAAQoB,KACZ,MAAO,CACHo2S,gBAAiB3yH,GAAW7kL,GAC5By3S,eAAgBpyH,GAAUrlL,GAEjC,CAkBD,SAAS03S,GAAsBC,EAAUC,GACrC,IAAIC,EATR,SAA4BD,GACxB,IAAI,EAGAL,KAFgBE,EADpB,EACIA,eACiBD,EAFrB,EAEIA,gBAEJ,OAAOF,IAAkBM,IAAYJ,IAAkBC,EAC1D,CAGyBK,CAAmBF,GACrCG,EAlBR,WACI,IAAI,EAGAR,KAFgBE,EADpB,EACIA,eACiBD,EAFrB,EAEIA,gBAEJ,OAAOH,IAAkBG,IAAkBC,EAC9C,CAYyBO,GAClBC,EAAsBJ,EAAkBE,EAC5C,OAAO7mT,KAAKq7E,KAAK0rO,EAAsBN,EAC1C,CC/CD,IAAI5qS,GAAY,CAAC,YAAa,QAuCjBmrS,GAAb,0CACI,WAAYzlT,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAK8nR,W7JmzBF,CACH/2S,QAAS,M6JnzBT,EAAKunL,cAAgB,CAAC,EACtB,EAAKyvH,eAAiB,EAAKA,eAAe3zT,MAApB,YACtB,EAAK4zT,gBAAkB,EAAKA,gBAAgB5zT,MAArB,YACvB,EAAK6zT,YAAc,EAAKA,YAAY7zT,MAAjB,YACnB,EAAK8zT,oBAAsB,EAAKA,oBAAoB9zT,MAAzB,YARZ,CASlB,CAVL,4CAWI,WACI,MAAO,CAAC,IAAI6wL,GAAc3tL,KAAKywT,eAAgB,CAACzwT,KAAK8K,MAAMmlT,UAAWjwT,KAAK8K,MAAM+C,OACpF,GAbL,2BAcI,WACI,IAAIu4L,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMmlT,UAAWjwT,KAAK8K,MAAM+C,MACnJ,GAjBL,4BAkBI,WACI,IAAI,EAGA7N,KAAK8K,MAFMmlT,EADf,EACIA,UACMpiT,EAFV,EAEIA,KAEJ,IAAIizC,EAAAA,EAAAA,OAAejzC,EAAM,CACrB,IACIgjT,EAAcd,GADA/vT,KAAK2wT,YAAY9iT,GACkBoiT,GACrDjwT,KAAK0wT,gBAAgBG,EACxB,CACJ,GA5BL,6BA6BI,SAAgBnnS,GACE1pB,KAAKwwT,WAAW/2S,QACtBqd,MAAMpN,SAAW,GAAGzZ,OAAOyZ,EAAU,KAChD,GAhCL,yBAiCI,SAAY7b,GACR,OAAIk8E,EAAAA,EAAAA,IAASl8E,GACFA,EAEPA,EAAKijT,SAAS,MACPh5R,SAASjqB,EAAM,IAEnB7N,KAAK4wT,qBACf,GAzCL,iCA0CI,WACI,IACIG,EClFG,SAAiC72P,GAC5C,IAAI82P,EACA/2T,GAAS8mD,EAAAA,EAAAA,MACb,OAAOmZ,EAAK,QAAU82P,EAAwB/2T,EAAO2gE,wBAAqB,IAAWo2P,OAAwB,EAASA,EAAsBvyT,KAAKxE,EAAQigE,GAAM,IAClK,CD8E+BqN,CADVvnE,KAAKwwT,WAAW/2S,SAG9B,OADuBqe,SAAS,OAASi5R,QAAqB,IAAWA,OAAoB,EAASA,EAAkBpgS,MAAO,GAElI,GA/CL,qBAgDI,WAAgB,WACZ,YAAI,IAAW3wB,KAAKghM,cAAcu6C,UACvBv7O,KAAKghM,cAAcu6C,UAEvBv7O,KAAKghM,cAAcu6C,UAAa,WACnC,IACU1tO,EACN,EAAK/C,MADL+C,KAEA8iB,EAAQg2C,EAAmB,QAAS94D,GAExC,MAAO,CACH2e,OAFSm6C,EAAmB,SAAU94D,GAGtC8iB,MAAOA,EAEd,CAVsC,EAW1C,GA/DL,0BAgEI,WACI,IAAI0tK,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GApEL,iCAqEI,SAAoBo1J,EAAWsM,EAAW3gI,IACtC,mEACInmD,KAAK8K,MAAM+C,OAAS2sK,EAAU3sK,OAC9B7N,KAAKghM,cAAcu6C,eAAY,EAEtC,GA1EL,oBA2EI,WACI,IAAIzwO,EAAQ9K,KAAK8K,MACjB,OA5FkB,SAAAk9L,GACtB,IACeuzC,EAEXvzC,EAFAuzC,UACYi1E,EACZxoH,EADAwoH,WAEJ,OAAO51I,GAAY,EAAG,OAAQ,mBAAoB,KAAM,EAAG,CACvD9jJ,MAAOi5J,GAAgBwrD,IACxB,KAAMi1E,EACZ,CAoFc/xH,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB0lT,WAAYxwT,KAAKwwT,WACjBE,gBAAiB1wT,KAAK0wT,gBACtBC,YAAa3wT,KAAK2wT,YAClBC,oBAAqB5wT,KAAK4wT,oBAC1Br1E,UAAWv7O,KAAKu7O,UAChB78C,eAAgB1+L,KAAK0+L,gBAE5B,KAtFL,GAAkChS,IAwFlC6jI,GAAa53S,aA9FkB,CAC3Bs3S,WAAW,GElCf,IAAI7qS,GAAY,CAAC,YAAa,qBAAsB,OAAQ,YAAa,eAAgB,WAAY,2BAA4B,oBAAqB,SAAU,OAAQ,oBAAqB,WAAY,YAAa,UAAW,OAAQ,UAAW,YAAa,YAAa,WAAY,aAAc,uBAAwB,WAAY,OAAQ,kBAAmB,mBAAoB,wBAAyB,4BAA6B,mBAAoB,QAAS,cAAe,UAAW,SAkH7d6rS,GAAgBjzT,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BqqH,IAAc7wT,OAAOwmM,0BAA0B,CAChJ79L,KAAM,GACNuqT,0BAA0B,EAC1B/sH,oBAAoB,EACpBC,mBAAmB,EACfjmJ,wBACA,MAAO,YAAc65B,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD55C,cAAc,EACdkwR,YAAa,WAAQ,MAEd6C,GAAoB,CACvBxqT,WACA,OAAOsqT,GAActqT,IACxB,EACGuqT,+BACA,OAAOD,GAAcC,wBACxB,EACG/sH,yBACA,OAAO8sH,GAAc9sH,kBACxB,EACGC,wBACA,OAAO6sH,GAAc7sH,iBACxB,EACGjmJ,wBACA,OAAO8yQ,GAAc9yQ,iBACxB,EACG/f,mBACA,OAAO6yR,GAAc7yR,YACxB,EACGkwR,kBACA,OAAO2C,GAAc3C,WACxB,EACGv5R,eACA,OAAOk8R,GAAcl8R,QACxB,EACG37B,WACA,OAAO63T,GAAc73T,IACxB,EACGs/K,sBACA,OAAOu4I,GAAcv4I,eACxB,EACGC,uBACA,OAAOs4I,GAAct4I,gBACxB,EACG8oE,4BACA,OAAOwvE,GAAcxvE,qBACxB,EACGC,gCACA,OAAOuvE,GAAcvvE,yBACxB,EACGlpE,uBACA,OAAOy4I,GAAcz4I,gBACxB,EACGtoC,cACA,OAAO+gL,GAAc/gL,OACxB,EACGyiH,gBACA,OAAOs+D,GAAct+D,SACxB,EACGx6O,gBACA,OAAO84S,GAAc94S,SACxB,EACGqN,eACA,OAAOyrS,GAAczrS,QACxB,EACGg7B,eACA,OAAOywQ,GAAczwQ,QACxB,EACGK,cACA,OAAOowQ,GAAcpwQ,OACxB,EACGm3I,WACA,OAAOuM,GAAYvM,IACtB,GAWQy0H,GAAb,0CACI,WAAY3hT,GAAO,6BACf,cAAMA,IACDsmT,U/JopBF,CACH33S,QAAS,M+JppBT,EAAKivB,MAAQ,CACTxqC,WAAO,IAAW,EAAK4M,MAAM5M,MAAQ,EAAK4M,MAAM5M,MAAQ,EAAK4M,MAAMszB,cAEvE,EAAK/X,MAAQ,EAAKA,MAAMvpB,MAAX,YACb,EAAK07E,KAAO,EAAKA,KAAK17E,MAAV,YACZ,EAAKmsM,cAAgB,EAAKA,cAAcnsM,MAAnB,YACrB,EAAKi4L,QAAU,EAAKA,QAAQj4L,MAAb,YATA,CAUlB,CAXL,4CAYI,WACI,MAAO,CAACkxL,KACX,GAdL,2BAeI,SAAcjtL,GAAO,IASLswT,EASAC,EAlBK,OACb,EAIAtxT,KAAK8K,MAHqBomT,EAD9B,EACIA,yBACUn8R,EAFd,EAEIA,SACsBi3R,EAH1B,EAGIA,qBAECj3R,IACD,OAASi3R,QAAwB,IAAWA,GAAgCA,EAAqBjrT,GAC7FmwT,GAEAlxT,KAAK05C,UAAS,SAAAytJ,GAEV,MAAO,CACHjpM,MAFJmzT,EAAa,aAAU,IAAW,EAAKvmT,MAAM5M,MAAQ,EAAK4M,MAAM5M,MAAQipM,EAAiBjpM,eAAa,IAAW,EAAK4M,MAAM5M,MAAQ,EAAK4M,MAAM5M,MAAQipM,EAAiBjpM,QAAS,KAIpL,IACD8B,KAAK8K,MAAMwjT,YAAY+C,KAGvBrxT,KAAK05C,UAAS,SAAAytJ,GACV,IAAInwL,EAEJ,MAAO,CACH9Y,MAFJozT,IAAc,QAAUt6S,OAAO,IAAW,EAAKlM,MAAM5M,MAAQ,EAAK4M,MAAM5M,MAAQipM,EAAiBjpM,aAAU,IAAW8Y,GAAOA,GAIhI,IACDhX,KAAK8K,MAAMwjT,YAAYgD,IAGlC,GA5CL,qBA6CI,SAAQroT,GACJ,IACey0K,EACX19K,KAAK8K,MADL4yK,UAGSpY,EAGTr8J,EAHAq8J,QACepjG,EAEfj5D,EAFAi5D,cACOG,EACPp5D,EADAo5D,MAEA7+D,EAAS,OAASk6K,QAAa,IAAWA,OAAY,EAASA,EAAUz0K,GAC7E,GAAI,OAASzF,QAAU,IAAWA,GAAUA,EAAOw9C,OAC/C,OAAOx9C,EAEP,UAAY8hK,GAAW,UAAYjjG,IACnCH,EAAc/F,iBACdn8D,KAAKipM,cAAc/mI,GAG1B,GA/DL,sBAgEI,WACI,OA7OY,SAAAzsB,GAChB,IACU9uC,EAEN8uC,EAFA9uC,KACOzI,EACPu3C,EADAv3C,MAUJ,OAAOs+I,GANU,CACb,eAAe,EACf,uBAAuB,IAJbt+I,EAKV,yBAA0ByI,EAC1B,4BALgB,OADNzI,GASjB,CA+Nci/L,EAAcpkL,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK8K,MAAO,CAC1C5M,WAAO,IAAW8B,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,QAE1E,GApEL,gBAqEI,WACI,IAAIwpC,GAAU,UAAU,IAAW1nC,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,OAEhFsF,EAAS,CACT0uB,KAAM,WACNwV,QAHgB,aAAU,IAAW1nC,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,OAG7D,QAAU,GAAG+R,OAAOy3B,IAEjD,OAAO3uB,EAAAA,EAAAA,GAAS,CAAC,EAAGvV,EAAQxD,KAAK8K,MAAMktL,KAC1C,GA7EL,0BA8EI,WACI,IAAIw3H,GAAoBz2S,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK8K,MAAO,CACzC5M,WAAO,IAAW8B,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,QAG3E,OADgBupB,EAAAA,GAAAA,GAA8B+nS,EAAmBpqS,GAEpE,GApFL,mBAqFI,WACIplB,KAAKoxT,UAAU33S,QAAQ4M,OAC1B,GAvFL,kBAwFI,WACIrmB,KAAKoxT,UAAU33S,QAAQ++D,MAC1B,GA1FL,oBA2FI,WACI,IAAI1tE,EAAQ9K,KAAK8K,MACjB,OA1PkB,SAAAk9L,GACtB,IACUhQ,EAgCNgQ,EAhCAhQ,KACYrmK,EA+BZq2K,EA/BAC,WACWmpH,EA8BXppH,EA9BAopH,UACS1zI,EA6BTsqB,EA7BAjT,QACezX,EA4Bf0qB,EA5BAiB,cALJ,EAiCIjB,EA3BAl9L,MACemyC,EAPnB,EAOQA,UACoBknJ,EAR5B,EAQQA,mBACWhsL,EATnB,EASQA,UACUqN,EAVlB,EAUQA,SACmB24B,EAX3B,EAWQA,kBACQ3xB,EAZhB,EAYQA,OACM8xB,EAbd,EAaQA,KACmB8lJ,EAd3B,EAcQA,kBACU4rH,EAflB,EAeQA,SACS9/K,EAhBjB,EAgBQA,QACM92I,EAjBd,EAiBQA,KACWokL,EAlBnB,EAkBQA,UACUzoJ,EAnBlB,EAmBQA,SACYirB,EApBpB,EAoBQA,WACUQ,EArBlB,EAqBQA,SACM75C,EAtBd,EAsBQA,KACiB+xK,EAvBzB,EAuBQA,gBACkBC,EAxB1B,EAwBQA,iBACuB8oE,EAzB/B,EAyBQA,sBAC2BC,EA1BnC,EA0BQA,0BACkBlpE,EA3B1B,EA2BQA,iBACOt6K,EA5Bf,EA4BQA,MACS2iD,EA7BjB,EA6BQA,QACOlwB,EA9Bf,EA8BQA,MAEY+tK,EAChBsJ,EADAtJ,eAEJ,OAAOvkJ,GAAeshI,GAAqB,EAAGomE,IAAQ9oO,EAAAA,EAAAA,GAAS,CAC3Di/K,KAAMA,EACNrmK,QAASA,EACT2rJ,QAASA,EACTI,UAAWA,EACXzgI,UAAWA,EACXknJ,mBAAoBA,EACpBhmJ,kBAAmBA,EACnBimJ,kBAAmBA,EACnBjsL,UAAWA,EACXqN,SAAUA,EACVuP,SAAUA,EACVupB,KAAMA,EACN9xB,OAAQA,EACRmE,MAAOA,EACPqvB,WAAYA,EACZQ,SAAUA,EACVK,QAASA,EACT63H,gBAAiBA,EACjBC,iBAAkBA,EAClB8oE,sBAAuBA,EACvBC,0BAA2BA,EAC3BlpE,iBAAkBA,EAClBtoC,QAASA,EACTstC,UAAWA,GACZkhB,EAAgB,CACf3zL,SAAUgxK,GAAe,CAAC5hI,GAAeygI,GAAY,GAAI,QAAS,KAAM,KAAM,GAAG7hK,EAAAA,EAAAA,GAAS,CACtF1T,KAAM,SACNnH,MAAO,GAAG+R,OAAO/R,IAClB9E,GAAQ,CACPA,KAAMA,MACJwhL,GAAY,EAAG,MAAO,wBAAyB,CAACa,GAAqB,EAAG80I,GAAc,CACxF1iT,KAAMmiT,EACNC,WAAW,IAAS/xT,IACpByI,GAAQi0K,GAAY,EAAG,OAAQ,mBAAoBj0K,EAAM,IAAK,IAAK,KACvE,KAAMyqT,GACb,CAmLc3yH,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB5M,WAAO,IAAW8B,KAAK8K,MAAM5M,MAAQ8B,KAAK8K,MAAM5M,MAAQ8B,KAAK0oC,MAAMxqC,QAEvEkzT,UAAWpxT,KAAKoxT,UAChBnoH,cAAejpM,KAAKipM,cACpBlU,QAAS/0L,KAAK+0L,QACdkT,WAAYjoM,KAAKioM,WACjBjQ,KAAMh4L,KAAKg4L,KACX0G,eAAgB1+L,KAAK0+L,gBAE5B,KAxGL,GAA8B3R,IAoH9B0/H,GAAS9zS,aAAew4S,GACxB,IAAItnH,GAAuB,OCxTN4iH,GAAAA,SAAAA,mIACjB,WACI,IAAI3hT,GAAQ,wDAEZ,OADAA,EAAM4yK,UAAY19K,KAAK8pM,oBAAoBh/L,EAAM4yK,WAC1C5yK,CACV,sBACD,WAAQ,MACAi/L,EACJ,OAAO,QAAUA,EAAgB/pM,KAAK04L,eAAY,IAAWqR,OAAgB,GAAS,EAAAA,GAAc1jL,MAAd,QAAuBvO,UAChH,qBACD,WAAO,MACCkyL,EACJ,OAAO,QAAUA,EAAiBhqM,KAAK04L,eAAY,IAAWsR,OAAiB,GAAS,EAAAA,GAAexxH,KAAf,QAAuB1gE,UAClH,kCACD,WACI,MAAO,CACH0lK,UAAW,CAAC,EACZF,QAAS,CAAC,EAEjB,yBACD,WACI,MAAO,CACHoX,OAAQ,CACJ,CAAC,QAAS,eAAgB,gBAE9BD,UAAW,CAAC,eAAgB,kBAAmB,mBAAoB,SACnE9iI,SAAU,GACVzkB,UAAW,GACXpiC,MAAO,CAAC,OAAQ,WAAY,2BAA4B,qBAAsB,oBAAqB,oBAAqB,uBAAwB,eAAgB,cAAe,WAAY,OAAQ,kBAAmB,mBAAoB,wBAAyB,4BAA6B,mBAAoB,UAAW,YAAa,YAAa,YAAa,YAAa,WAAY,SAAU,OAAQ,UAAW,YAAa,aAAc,WAAY,UAAW,QAAS,OAAQ,SAEte,6BACD,WACI,OAAOymT,EACV,OAjCgB9E,CAAiBtiH,IAmCtC33B,GAAkB,aAAci6I,IAChCA,GAASrmM,eDqRF,SAAwBh+G,GAC3ByhM,GAAqBzpM,KAAKgI,GAC1BqkT,GAAS9zS,aAAe3a,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BioH,GAAS9zS,cAAe3a,OAAOwmM,0BAbrI,SAA8B7rL,GAC1B,IAAI64S,EAAc,CAAC,SACnB,OAAOxzT,OAAOgB,KAAK2Z,GAAcxU,QAAO,SAAC2G,EAAOgM,GAC5C,IAAIqf,EAAYxd,EAAa7B,GACzB26S,EAAkBD,EAAYr/P,MAAK,SAAAt0D,GAAC,OAAIA,IAAMiZ,CAAV,IAAsB,UAAYA,EAASmF,OAAO,GAAGyqB,cAAgB5vB,EAAS/R,MAAM,GAAK+R,EAEjI,OADAhM,EAAM2mT,GAAmBt7R,EAClBrrB,CACV,GAAE,CAAC,EACP,CAK8J4mT,CAAqB73J,GAAsBgwC,OACzM,EEjUD,UCcIi7C,GAA0B,sBAI1B6sE,GAAc9vE,GAAAA,QAAe,CAC7B/qC,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BmrK,MAAO,SAASrkN,GACZA,EAAEkzD,iBACFn8D,KAAK65L,aAAa,CACd94L,MAAOkI,GAEd,GAER,EACD20J,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BiiJ,mBAAmB,EACnBD,oBAAoB,EACpBjmM,OAAO,GAEd,EACD8kP,0BAA2B,WACvB,OAAO,CACV,EACDllF,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,KAG9B,EACDolD,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAtCC,iBAuCpB,EACDk6F,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAK4xT,cACL5xT,KAAK6xT,oBAAoB7xT,KAAK2sC,OAAO,UACrC3sC,KAAK8xT,eACL9xT,KAAK86M,QAAQ,OAAQ,QACxB,EACD82G,YAAa,WACT5xT,KAAK8yS,OAAS/hO,GAAE,SAAS3C,SAAS02K,IAClC/zK,GAAE,SAAS3C,SA/Ce,2BA+CuBO,SAAS3uE,KAAK8yS,QAC/D9yS,KAAKg6D,WAAWr0D,OAAO3F,KAAK8yS,OAC/B,EACD+e,oBAAqB,SAASnqR,GAC1B1nC,KAAKg6D,WAAWiU,YAlDS,yBAkD+BvmC,GAAS1rC,KAAK,wBAA+BiyE,YAjDvE,8BAiDoHvmC,GAClJ1nC,KAAK86M,QAAQ,UAAWpzK,EAC3B,EACDoqR,aAAc,WACV,IAAItzT,EAAYglJ,GAAaywE,GAAgBj0N,KAAKw+J,MAClDx+J,KAAK65L,aAAe75L,KAAK8gK,cAAc,SAASljK,GAC5CoC,KAAK+xT,cAAcn0T,EAAKmD,MAC3B,EAACjE,KAAKkD,OACPu+D,EAAAA,EAAAA,IAAiBv+D,KAAKg6D,WAAYx7D,GAClC+/D,EAAAA,EAAAA,GAAgBv+D,KAAKg6D,WAAYx7D,EAAW,SAASyK,GACjDjJ,KAAK65L,aAAa,CACd94L,MAAOkI,GAEd,EAACnM,KAAKkD,MACV,EACD+xT,cAAe,SAAS9oT,GACpBjJ,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAK2sC,OAAO,SAAS,EACxB,EACDmzH,eAAgB,SAASliK,GACrB,GACS,UADDA,EAAKxE,KAEL4G,KAAK6xT,oBAAoBj0T,EAAKM,OAC9B8B,KAAKmiD,SAASvkD,QAGdoC,KAAKmiD,SAASvkD,EAEzB,IAEL40K,GAAkB,gBAAiBm/I,IACnC,UCjFIK,GAAsB,sBACtBC,GAAyBzuK,GAAawoH,GAAiBgmD,IACvDE,GAA0B1uK,GAAa0oH,GAAiB8lD,IACxDG,GAAuB3uK,GAAa4oH,GAAe4lD,IAmEvD,GAlEoB7lQ,GAAAA,EAAAA,QAAc,CAC9BpJ,KAAM,SAAS2K,GACX1tD,KAAKmtD,MAAQO,EACb1tD,KAAKujG,OACR,EACDA,MAAOzhF,GAAAA,KACPswS,oBAAoB,EACpBvR,kBAAmB,SAAS9gT,GACxB,IAAIsyT,EAAc,CACd/7J,aAAc,WAKV,OAJIt2J,KAAKsyT,mBACLtyT,KAAKuyT,gBAAkB3nP,GAAS5qE,KAAKmtD,MAAM6M,YAC3Ch6D,KAAKsyT,kBAAmB,GAErBtyT,KAAKuyT,eACf,EAACz1T,KAAKkD,OAEXu+D,EAAAA,EAAAA,GAAgBx+D,EAAO+tN,aAAcmkG,GAAwBI,EAAaryT,KAAKwyT,uBAAuB11T,KAAKkD,OAC3Gu+D,EAAAA,EAAAA,GAAgBx+D,EAAO+tN,aAAcokG,GAAyBlyT,KAAKyyT,wBAAwB31T,KAAKkD,OAChGu+D,EAAAA,EAAAA,GAAgBx+D,EAAO+tN,aAAcqkG,GAAsBnyT,KAAK8gT,qBAAqBhkT,KAAKkD,MAC7F,EACDwyT,uBAAwB,SAASvpT,GAC7B,IAAI6kN,EAAe/8I,GAAE9nE,EAAEu2D,eACnBsuJ,EAAa7+I,GAAG,4CAChBhmE,EAAE+3C,QAAS,GAGf1rB,aAAat1B,KAAKmtD,MAAMwzP,iBACxB3gT,KAAKy+Q,mBAAmB3wD,EAAc7kN,GACzC,EACDwpT,wBAAyB,SAASxpT,GAC9B,IAAI6kN,EAAe/8I,GAAE9nE,EAAEu2D,eACvBx/D,KAAK0+Q,oBAAoB5wD,EAAc7kN,EAC1C,EACD63S,qBAAsB,SAAS73S,GAC3B,IAAI6kN,EAAe/8I,GAAE9nE,EAAEu2D,eACvBx/D,KAAK2+Q,iBAAiB7wD,EAAc7kN,GACpCjJ,KAAKsyT,kBAAmB,CAC3B,EACDI,UAAW5wS,GAAAA,KACX6wS,SAAU7wS,GAAAA,KACV8wS,eAAgB,WACZ,MAAO,CACHzuH,mBAAoBnkM,KAAKmtD,MAAMxgB,OAAO,sBACtCy3J,kBAAmBpkM,KAAKmtD,MAAMxgB,OAAO,qBACrCwR,kBAAmBn+C,KAAKmtD,MAAMxgB,OAAO,qBAE5C,EACDkmR,cAAe,SAAS9yT,GAChBC,KAAKoyT,qBACLpyT,KAAK6gT,kBAAkB9gT,GACvBC,KAAKsyT,kBAAmB,EAE/B,EACDQ,YAAahxS,GAAAA,KACbgtR,YAAahtR,GAAAA,KACbitR,qBAAsBjtR,GAAAA,KACtBotR,oBAAqBptR,GAAAA,KACrBstR,kBAAmBttR,GAAAA,KACnB28P,mBAAoB38P,GAAAA,KACpB48P,oBAAqB58P,GAAAA,KACrB68P,iBAAkB78P,GAAAA,KAClBixS,iBAAkBjxS,GAAAA,KAClBkxS,qBAAsBlxS,GAAAA,KACtByqB,QAASzqB,GAAAA,OCnETmxS,GAAiC,mCAIjCC,GAAkC,oCAClCC,GAAwB,0BACxBC,GAAsC,uCACtCC,GAA4B,6BAE5B9hI,GAAmB/tC,GAAaywE,GAAgB,wBpCvB7C,SAAkBtnL,EAAQtnC,EAAMiuT,GACnC,IAAIC,EAAqBtmB,GACrBumB,EAAkB,CAAC,EACvBA,EAAgB7mR,GAAU4mR,EAAmB5mR,GAAU4mR,EAAmB5mR,GAAU,CAAC,EACrF6mR,EAAgB7mR,GAAQtnC,GAAQiuT,GAChC7tQ,EAAAA,GAAAA,GAAO8tQ,EAAoBC,EAC9B,CoCkBDC,CAAkB,YAAa,UAAWC,GAAAA,QAAsB,CAC5DnwN,MAAO,WACHvjG,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAIovN,EAAgBlnO,KAAKmtD,MAAMxgB,OAAO,iBACtC3sC,KAAK2zT,gBAAkB,WAAazsF,EACpClnO,KAAK4zT,gBAAkB5zT,KAAK2zT,gBAAkBP,GAAsCF,GACpFlzT,KAAK6zT,cAAgB7zT,KAAK2zT,gBAAkBN,GAA4BF,GACxEnzT,KAAK8zT,eAAiB9zT,KAAK2zT,gBAAkBhC,GAAclF,GAC3DzsT,KAAKmtD,MAAM6M,WAAWoU,SAAS6kP,GAClC,EACDP,UAAW,SAAS3yT,GAChB,IAAI+tN,EAAe/tN,EAAO+tN,aACtBtzI,EAAaz6E,EAAOy6E,WAAWpM,SAASpuE,KAAK4zT,iBAC7CG,EAAWhjP,GAAE,SAAS3C,SAASpuE,KAAK6zT,eAAellP,SAAS6L,GAChE,IAAIx6E,KAAK8zT,eAAeC,GAAUtuQ,EAAAA,GAAAA,GAAOzlD,KAAK4yT,iBAAkB,CAC5D10T,MAAO8B,KAAKg0T,YAAYlmG,GACxBhwK,YAAa,CACT,aAAc,eAElBK,mBAAmB,EACnBimJ,mBAAmB,EACnB49C,eAAgB,SAAS/4O,GACrBA,EAAElI,OAASf,KAAKmtD,MAAMqwP,0BAA0Bv0S,EAAElI,OAClDf,KAAKi0T,qBAAqBnmG,EAAc7kN,EAAE/K,OAC1C+K,EAAElI,OAASkI,EAAElI,MAAMggE,iBACtB,EAACjkE,KAAKkD,QAEd,EACD6yT,cAAe,SAAS9yT,GACpBC,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAIg2M,EAAe/tN,EAAO+tN,aACtBlpE,EAAU5kJ,KAAK8zT,eAAejiP,YAAYi8I,EAAa9xN,KAAK,IAAMgE,KAAK6zT,gBAC3Et1P,EAAAA,EAAAA,GAAgBuvJ,EAAc,eAAgB,SAAS7kN,EAAGy/B,GACtDk8G,EAAQj4G,OAAO,QAASjE,EAC3B,EAAC5rC,KAAKkD,MACV,EACDk0T,sBAAuB,WACdl0T,KAAKm0T,aAGVn0T,KAAKo0T,mBAAmBznR,OAAO,QAAS3sC,KAAKmtD,MAAM+tK,cACtD,EACD43F,YAAa,WACL,QAAU9yT,KAAKmtD,MAAMxgB,OAAO,mBAG3B3sC,KAAKm0T,YAGNn0T,KAAKk0T,wBAFLl0T,KAAKq0T,mBAIZ,EACDtlB,qBAAsB,SAASC,EAAqBC,GAChD,IAAIqlB,GAAiBrlB,EACjBvhP,EAAO1tD,KAAKmtD,MACZonQ,EAAav0T,KAAKm0T,YAClBK,EAAgB9mQ,EAAK+0P,oBAGzB,SADyB8R,KADFtlB,GAAe,IAAMD,GAAuBslB,GAAiBtlB,IAAwBwlB,MAGxG9mQ,EAAK/gB,OAAO,iBAAkB4nR,GAC9B7mQ,EAAKyuP,aAAazuP,EAAK/gB,OAAO,oBACvB,EAGd,EACDuiQ,oBAAqB,SAASjmS,GAC1B,GAAIjJ,KAAKm0T,aAAen0T,KAAKm0T,YAAY7lP,SArEvB,oBAyEd,OAHArlE,EAAE0O,OAAS3X,KAAKm0T,YAAYv6T,IAAI,GAChCoG,KAAKmtD,MAAMqwP,0BAA0Bv0S,GACrCjJ,KAAKo0T,mBAAmBznR,OAAO,SAAU3sC,KAAKo0T,mBAAmBznR,OAAO,WACjE,CAEd,EACD0nR,iBAAkB,WACd,IAAIE,EAAav0T,KAAKm0T,YAAcpjP,GAAE,SAAS3C,SApFf,sBAqF5B1gB,EAAO1tD,KAAKmtD,MACZsnQ,EAAmB/mQ,EAAKopJ,iBAAiB6W,UAAU7wN,KAAK4wD,GAC5D1tD,KAAKo0T,mBAAqB1mQ,EAAKy1G,iBAAiBpyF,GAAE,SAAS3C,SAtFlB,+BAsFuEO,SAAS4lP,GAAa9H,GAAU,CAC5I3uQ,YAAa,CACT,aAAc,cAElBK,mBAAmB,EACnBimJ,mBAAmB,IAEvBpkM,KAAKo0T,mBAAmBh5G,mBAAmB,YAAaq5G,GACxD1jP,GAAE,SAAS3C,SA7F2B,4BA6FuBznE,KAAK3G,KAAKmtD,MAAMxgB,OAAO,kBAAkBgiC,SAAS4lP,GAC/Gv0T,KAAKmtD,MAAM6qK,iBAAiB1wN,QAAQitT,GACpCv0T,KAAKk0T,wBACLl0T,KAAK00T,yBACR,EACDA,wBAAyB,WACrB10T,KAAKo0T,mBAAmBznR,OAAO,iBAAkB3sC,KAAK20T,kBAAkB73T,KAAKkD,OAC7Eu+D,EAAAA,EAAAA,IAAiBv+D,KAAKm0T,YAAa5iI,IACnChzH,EAAAA,EAAAA,GAAgBv+D,KAAKm0T,YAAa5iI,GAAkBvxL,KAAK40T,uBAAuB93T,KAAKkD,MACxF,EACD20T,kBAAmB,SAAS1rT,GACxBA,EAAElI,OAASkI,EAAElI,MAAMggE,kBACnB,IAAI8zP,EAAgB70T,KAAKo0T,mBAAmBznR,OAAO,SACnD1jC,EAAElI,OAASf,KAAKmtD,MAAMqwP,0BAA0Bv0S,EAAElI,QAC9C,IAAS8zT,EACT70T,KAAK80T,mBACE,IAAUD,GACjB70T,KAAK+0T,oBAET/0T,KAAKmtD,MAAMwyG,sBAAsB,0BAAjC3/J,CAA4D,CACxD9B,MAAO22T,GAEd,EACDG,0BAA2B,WACvB,IAAItnQ,EAAO1tD,KAAKmtD,MACZ27C,EAAiBp7C,EAAKq7C,gBAC1B,QAAI,aAAer7C,EAAK/gB,OAAO,kBAAoB+gB,EAAK/gB,OAAO,aAAem8D,EAAevT,WACzFj2E,GAAAA,IAAW,UACJ,EAGd,EACDw1S,gBAAiB,WACR90T,KAAKg1T,6BAGVh1T,KAAKmtD,MAAMi7K,WAAW27E,UAAU,SAAW/jT,KAAKmtD,MAAMxgB,OAAO,iBAChE,EACDooR,kBAAmB,WACV/0T,KAAKg1T,6BAGVh1T,KAAKmtD,MAAMi7K,WAAW67E,YAAY,SAAWjkT,KAAKmtD,MAAMxgB,OAAO,iBAClE,EACDioR,uBAAwB,SAAS3rT,GAC7BjJ,KAAKmtD,MAAMqwP,0BAA0Bv0S,GACrCjJ,KAAKo0T,mBAAmBznR,OAAO,SAAU3sC,KAAKo0T,mBAAmBznR,OAAO,SAC3E,EACDqnR,YAAa,SAASlmG,GAClB,OAAO9tN,KAAKmtD,MAAM2uK,eAAehO,EACpC,EACDmmG,qBAAsB,SAASnmG,EAAcpmL,GACrCA,EACA1nC,KAAKmtD,MAAM+jK,WAAWpD,GAEtB9tN,KAAKmtD,MAAM08K,aAAa/b,EAE/B,EACDvhL,QAAS,WACLvsC,KAAKi1T,oBACLj1T,KAAKmtD,MAAM6M,WAAWqU,YAAY4kP,IAClCjzT,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACDm9S,kBAAmB,WACXj1T,KAAKm0T,cACLn0T,KAAKm0T,YAAYz2T,SACjBsC,KAAKm0T,YAAc,KAE1B,KCvJL,IAIIe,GAAgC,6BAChCC,GAAYnP,GAAAA,QAAqB,CACjClvG,eAAgB,WACZ,IAAIrnJ,EAAOzvD,KACP6K,EAAS7K,KAAKmiD,WACdizQ,EAAiB,SAASnsT,GACTjJ,KAAKslQ,cAMXtlQ,KAAKq1T,sBACZr1T,KAAKs1T,mBAAoB,GALrBt1T,KAAK2sC,OAAO,qBACZ1jC,EAAEkzD,iBACFn8D,KAAKwmC,SAKbxmC,KAAKu1T,sBAAwBtsT,EAC7BjJ,KAAKw1T,sBAAuB,CAC/B,EACGC,EAAiB,WACbhmQ,EAAK9iB,OAAO,kBAAoB8iB,EAAK4lQ,qBACrC5lQ,EAAKk7P,gBAEZ,EACD,OAAOllQ,EAAAA,GAAAA,GAAO,CAAC,EAAG56C,EAAQ,CACtBq5I,IAAK,WACGlkJ,KAAK2sC,OAAO,WAAa,cAAgB3sC,KAAK2sC,OAAO,mBACrD3sC,KAAKinQ,qBAAoB,GAE7Bp8P,EAAOq5I,KAAOr5I,EAAOq5I,IAAInsI,MAAM/X,KAAM8X,WACrC9X,KAAK01T,qBACR,EACDhoG,QAAS,SAASzkN,GACd,GAAI4B,EAAO6iN,QAAQ31M,MAAM/X,KAAM8X,WAI3B,OAHK9X,KAAK2sC,OAAO,WACb3sC,KAAK21T,cAAc1sT,IAEhB,CAEd,EACD0kN,UAAW,SAAS1kN,GAChB,GAAI4B,EAAO8iN,UAAU51M,MAAM/X,KAAM8X,WAI7B,OAHK9X,KAAK2sC,OAAO,WACb3sC,KAAK21T,cAAc1sT,IAEhB,CAEd,EACDukN,UAAW,WACPioG,IACA5qT,EAAO2iN,WAAa3iN,EAAO2iN,UAAUz1M,MAAM/X,KAAM8X,UACpD,EACD21M,WAAY,WACRgoG,IACA5qT,EAAO4iN,YAAc5iN,EAAO4iN,WAAW11M,MAAM/X,KAAM8X,UACtD,EACDwsI,KAAM,WACFmxK,IACA5qT,EAAOy5I,MAAQz5I,EAAOy5I,KAAKvsI,MAAM/X,KAAM8X,UAC1C,EACD5N,IAAK,WACDurT,IACA5qT,EAAOX,KAAOW,EAAOX,IAAI6N,MAAM/X,KAAM8X,UACxC,EACDhW,OAAQ,WACJ,IAAI0B,EAASqH,EAAO/I,QAAU+I,EAAO/I,OAAOiW,MAAM/X,KAAM8X,WAExD,OADA9X,KAAK41T,iBACE,OAASpyT,QAAU,IAAWA,GAASA,CACjD,EACD2gJ,MAAO,SAASl7I,GACZ,IAAI4sT,EAAW71T,KAAK2sC,OAAO,UACvBmpR,EAAY91T,KAAKqzP,SAAS56N,MAAMl2B,OAChCwzT,EAAeD,GAAa91T,KAAKmtD,QAAUntD,KAAKmtD,MAAMxgB,OAAO,kBACjE,IAAKmpR,IAAaznQ,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,WAAa3sC,KAAK2sC,OAAO,iBAC7D3sC,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAK2sC,OAAO,CACRs6L,aAAc,KACd/oO,MAAO,OAEX8B,KAAK0e,YACF,CACH,GAAI1e,KAAK2sC,OAAO,qBAQZ,OAPA1jC,EAAEkzD,iBACE45P,IACIF,GACA71T,KAAKgnQ,mBAEThnQ,KAAK24P,yBAAyB1vP,IAE3B4sT,EAEX,GAAIhrT,EAAOs5I,OAASt5I,EAAOs5I,MAAMpsI,MAAM/X,KAAM8X,WACzC,OAAO+9S,CAEd,CACJ,EACDvoG,MAAO,SAASrkN,GACZ,IAAI4sT,EAAW71T,KAAK2sC,OAAO,UACvBqpR,EAAkBh2T,KAAK2sC,OAAO,iBAC9B+2N,EAAoB1jQ,KAAK2sC,OAAO,qBACpC,GAAKkpR,IAAYG,IAAmBtyD,EAKpC,OAFAz6P,EAAEkzD,iBACFn8D,KAAK24P,yBAAyB1vP,IACvB,CACV,EACDg7I,UAAWmxK,EACXh3D,IAAKg3D,GAEZ,EACDx3J,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BuwM,YAAatoI,GAAAA,OAA2B,UACxCy5I,cAAe,KACfoyD,sBAAuB,SACvBxjE,iBAAkB,SAClBiR,mBAAmB,EACnBwyD,qBAAsB,SAASjtT,IACtBolD,EAAAA,EAAAA,IAAUplD,EAAEktT,cACbltT,EAAEktT,WAAaltT,EAAEtC,KAExB,EACDm8S,uBAAuB,EACvBsT,eAAe,EACfC,gBAAgB,EAChBvyD,kBAAkB,EAClBC,oBAAoB,EACpBuyD,oBAAoB,EACpB/xD,wBAAwB,GAE/B,EACDhhK,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKu2T,+BACR,EACDjuJ,YAAa,WACTtoK,KAAKg6D,WAAWoU,SA3IF,gBA4IdpuE,KAAKw2T,iBACLx2T,KAAKmiD,WACLniD,KAAKolQ,YAAYh3L,SA5IO,yBA6I3B,EACD62L,aAAc,WACVjlQ,KAAKmiD,WACLniD,KAAKsnQ,OAAOttM,WAAWoU,SAjJH,sBAkJpBpuE,KAAKsnQ,OAAOxxB,kBAAkB5nK,KAAK,YAAa,EACnD,EACDo5O,mBAAoB,WAChB,OAAOtnT,KAAKmiD,WAAa,IAAM+yQ,EAClC,EACDz3J,sBApJiC,WAqJ7Bz9J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAK09J,mBAAoB,CAC5B+0F,iBAAkB,CACdjzF,MAAO,OACPjoE,MAAO,0BAGlB,EACDq+N,eAAgB,YACP51T,KAAK2sC,OAAO,kBAAoB3sC,KAAKmtD,QACtCntD,KAAKy2T,kBAAkB,MACvBz2T,KAAK02T,aAAa12T,KAAK2sC,OAAO,iBAErC,EACDq4N,mBAAoB,WAChBhlQ,KAAKmiD,WACDniD,KAAK2sC,OAAO,YACZ3sC,KAAK22T,wBACL32T,KAAK42T,wBAEZ,EACDA,sBAAuB,WACnB,IAAIC,EAEJ,GADkB72T,KAAK8iG,eACvB,CAIA,IAAI,EAGA9iG,KAAK2sC,SAFEuZ,EADX,EACIA,MACc+gL,EAFlB,EAEIA,aAEA6vF,EAAa92T,KAAKmtD,MAAMwjK,gBACxBxvN,EAAQ,QAAU01T,EAAiB,OAAS3wQ,QAAS,IAAWA,OAAQ,EAASA,EAAM9kD,QAAQ6lO,UAAkB,IAAW4vF,EAAiBA,GAAkB,EAC/J9nG,GAAkB,IAAM5tN,GAAUnB,KAAK+2T,wBAAiD,KAAvBD,EAAWlnP,GAAGzuE,GACnFnB,KAAKy2T,kBAAkB1nG,EARtB,MAFG/uN,KAAKy2T,kBAAkB,KAW9B,EACDO,sBAAuB,WACnB,GAAKh3T,KAAKmtD,MAIV,GADkBntD,KAAK8iG,iBACH9iG,KAAK2sC,OAAO,qBAAhC,CAIA,IACIoiL,EADa/uN,KAAKmtD,MAAMwjK,gBACIj0L,IAzMV,sBAyMuCkzC,GAAG,GAChE5vE,KAAKy2T,kBAAkB1nG,EAHtB,MAFG/uN,KAAKy2T,kBAAkB,KAM9B,EACDA,kBAAmB,SAASjqT,GACxBxM,KAAKi3T,0BAA2B,EAChCj3T,KAAKmtD,MAAMxgB,OAAO,iBAAkBk1G,GAAiBr1I,WAC9CxM,KAAKi3T,wBACf,EACDN,sBAAuB,WACnB32T,KAAKmtD,OAASntD,KAAKmtD,MAAMgvP,aAAan8S,KAAKmtD,MAAMxgB,OAAO,gBAC3D,EACDg9Q,yBAA0B,WACtB3pT,KAAKmiD,WACYniD,KAAK+oG,gBAAgB/H,YACpBhhG,KAAKyrT,qBAGvBzrT,KAAK22T,uBACR,EACD7iE,aAAc,WAGV,OAFA9zP,KAAKk2P,oBACLl2P,KAAK6lP,mBACG,IAAIxoO,GAAAA,IAAUze,SACzB,EACDs3P,kBAAmB,WACf,OAAOl2P,KAAKmiD,WAAWkU,OAAO,WAC1Br2D,KAAKk3T,wBACR,EAACp6T,KAAKkD,MACV,EACDk3T,uBAAwB,WACpBl3T,KAAKw2T,iBACLx2T,KAAKm3T,wBAAwB9gQ,OAAO,WAChCr2D,KAAKmoT,kBACR,EAACrrT,KAAKkD,MACV,EACDm3T,sBAAuB,WAEnB,OADAn3T,KAAKwlQ,gBACG,IAAInoP,GAAAA,IAAUze,SACzB,EACDw4T,aAAc,SAASr7R,GACnB,IAAIn3B,EAAO5E,KAAKmnT,cAAcprR,GAC1B79B,EAAQ8B,KAAKw+O,aAAa55O,GAC9B5E,KAAKomT,UAAUloT,EAClB,EACDy3T,cAAe,SAAS1sT,IACKjJ,KAAK+oG,gBAAgBrE,YAAc,IAAIrnF,GAAAA,IAAUze,UAAYoB,KAAK+oG,gBAAgB1S,QACxFznC,KAAK,WACpB,IAAIkyH,EAAgB9gL,KAAKonT,oBACrBiQ,EAAWr3T,KAAK+oG,gBAAgBrG,WAChC0B,EAAapkG,KAAK+oG,gBAAgB3E,aAClCkzN,EAAax2I,IAAkB9gL,KAAKwjG,SAAS7iG,OAAS,EAC1DX,KAAK8iP,sBAAsB75O,GAC3B,IAAI8yB,EAAO,cAAgBuqH,GAAiBr9I,GAAK,GAAK,EAClDouT,IAAajzN,GAAckzN,GAAcv7R,EAAO,GAC3C/7B,KAAKsnQ,QACNtnQ,KAAKilQ,eAEJjlQ,KAAK+oG,gBAAgBpE,aACtB3kG,KAAKmtD,MAAMqlK,gBAAgB5jK,KAAK5uD,KAAKo3T,aAAat6T,KAAKkD,KAAM+7B,KAGjE/7B,KAAKo3T,aAAar7R,EAEzB,EAACj/B,KAAKkD,MACV,EACD2nT,iBAAkB,SAAS/iT,GACvB,IAAI2yT,GAAiBv3T,KAAK0oT,8BAA2B,IAAW9jT,EAChE5E,KAAKmiD,SAASo1Q,EAAgB,KAAO3yT,GAChC2yT,GAAmBv3T,KAAKslQ,gBAAiBtlQ,KAAK+2T,yBAC/C/2T,KAAKyoT,eAAe,eAAgBzoT,KAAK2sC,OAAO,gBAEvD,EACD+7Q,sBAAuB,WACnB,OAAO1oT,KAAK2sC,OAAO,sBAAwB3sC,KAAKmiD,UACnD,EACD+lQ,cAAe,SAAStjT,GAEpB,OADAA,IAAQypD,EAAAA,EAAAA,IAAUzpD,IAAS5E,KAAK0oT,wBAA0B1oT,KAAK2sC,OAAO,SAAW/nC,EAC1E5E,KAAKmiD,SAASv9C,EACxB,EACDwkT,YAAa,WACT,IAAI5lT,GAASiiD,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CACjCy6P,aAAc,eACd9hF,mBAAoB96N,KAAKw3T,6BACzBvwF,aAAcjnO,KAAK2sC,OAAO,gBAC1B+hL,qBAAsB1uN,KAAKy3T,8BAA8B36T,KAAKkD,QAQlE,OANIA,KAAK2sC,OAAO,2BACZ8Y,EAAAA,GAAAA,GAAOjiD,EAAQ,CACXs/S,uBAAuB,EACvB17E,eAAe,IAGhB5jO,CACV,EACDi0T,8BAA+B,SAASxuT,GACpC,IAAIjJ,KAAKi3T,yBAAT,CAGA,IAAIvpQ,EAAOzkD,EAAEmoB,UACT29L,EAAiBh+I,GAAErjB,EAAK/gB,OAAO,mBAC/B05L,EAAc34K,EAAKqgK,aAAagB,GACpC/uN,KAAK02T,aAAarwF,EAJjB,CAKJ,EACDqwF,aAAc,SAAS9xT,GAEnB,IADoB5E,KAAK8qK,qBAAqB,mBACvB9qK,KAAK2sC,OAAO,iBAAmB,CAClD,IAAIhmC,EAAO3G,KAAKovN,eAAexqN,GAG/B,OAFA5E,KAAK2sC,OAAO,OAAQhmC,QACpB3G,KAAKm2P,mBAAmBxvP,EAE3B,CACD3G,KAAKwlQ,cACR,EACDgyD,2BAA4B,WACxB,OAAOx3T,KAAK2sC,OAAO,yBAA2B3sC,KAAK03T,wBAAwB56T,KAAKkD,MAAQ8hB,GAAAA,IAC3F,EACD41S,wBAAyB,SAASzuT,IAC9B4jD,EAAAA,EAAAA,IAAK5jD,EAAEyxN,YAAc,GAAI,SAAS57N,EAAG64T,GACjC33T,KAAKomT,UAAUpmT,KAAKw+O,aAAam5E,GACpC,EAAC76T,KAAKkD,MACV,EACD43T,sBAAuB,WACnB,OAAO53T,KAAK+oG,gBAAgBtV,aAC/B,EACDuzK,iBAAkB,SAASz3L,GACvB,IAAIvvE,KAAK2sC,OAAO,YAAhB,CAOA,IAJA4iC,EAAYz3D,UAAUnX,OAAS4uE,GAAavvE,KAAK2sC,OAAO,YACrC3sC,KAAK63T,sBACpB73T,KAAK83T,mBAAkB,GAEvB93T,KAAK+3T,cAAgBxoP,EAAW,CAChCvvE,KAAK+3T,YAAW,GAChB,IAAIC,EAAsBh4T,KAAK2sC,OAAO,yBAA2B3sC,KAAKiqT,6BACtE,GAAI+N,GAAuBh4T,KAAK+oG,gBAAgB1B,gBAAiB,CAC7D,GAAIrnG,KAAK+qT,aACL,OAEJ,IAAIt3N,EAAczzF,KAAK43T,wBACvBnkO,GAAezzF,KAAK+3T,YAAW,GAC/B/3T,KAAKkrT,kBAAkBz3N,GAAe,KACzC,MACGzzF,KAAKyoT,eAAe,QAAS,GAEpC,CACGl5O,GACAvvE,KAAK22T,wBAET32T,KAAKmiD,SAASotB,EAtBb,CAuBJ,EACDinP,eAAgB,WACRx2T,KAAK2sC,OAAO,mBACZ3sC,KAAKg6D,WAAWkU,KAAK,QAASluE,KAAK2sC,OAAO,gBAEjD,EACD+7H,kBAAmB,WACf1oK,KAAKmiD,WACLniD,KAAK8oQ,oBACL9oQ,KAAK+pT,uBACR,EACDkO,uBAAwB,WACpB,IAAIC,EAAsBl4T,KAAK2sC,OAAO,gBACtC,GAAI,OAASurR,EACT,OAAO,EAEX,IAAIh6T,EAAQ8B,KAAKovN,eAAe8oG,GAGhC,OAFmBh6T,EAAQuL,OAAOvL,GAAS,MAC3B8B,KAAK8iG,cAExB,EACDmlK,oBAAqB,WACbjoQ,KAAKi4T,0BACLj4T,KAAK41T,iBAET51T,KAAKmiD,UACR,EACD+lN,oBAAqB,WACjBloQ,KAAKmiD,WACDniD,KAAKm4T,wBACLn4T,KAAK+3T,YAAW,GAChB/3T,KAAKirT,kBACLjrT,KAAKm4T,qBAAoB,GAEhC,EACDL,kBAAmB,SAASM,GACpBp4T,KAAK2sC,OAAO,aAGhB3sC,KAAKq4T,mBAAqBr4T,KAAKq4T,kBAAkBhiQ,OAAO,WACpD,IAAI,EAIAr2D,KAAK2sC,SAHc+2N,EADvB,EACIA,kBACM/8P,EAFV,EAEIA,KACcuxT,EAHlB,EAGIjxF,aAEAy8B,EACK00D,GAAqBp4T,KAAKs4T,mBAC3Bt4T,KAAK02T,aAAa,OAASwB,QAAuB,IAAWA,EAAsBA,EAAsBl4T,KAAKu4T,kBAAkB5xT,IAChI3G,KAAK2oT,gBAIT3oT,KAAK2sC,OAAO,mBACP3sC,KAAK8iG,gBAAkB9iG,KAAK2sC,OAAO,iBACpC3sC,KAAKw4T,kBAITx4T,KAAKi4T,0BAGTj4T,KAAKk2P,oBAAoB7/L,OAAO,SAAS4wK,GACrC,IAAIwxF,GAAkBrqQ,EAAAA,GAAAA,eAAc64K,EAAcixF,GAClDl4T,KAAK2nT,iBAAiB8Q,GACtBz4T,KAAK02T,aAAa+B,GAClBz4T,KAAK2oT,cACR,EAAC7rT,KAAKkD,MACV,EAAClD,KAAKkD,MACV,EACD04T,8BAA+B,WAE3B,OADuB14T,KAAK2sC,OAAO3sC,KAAKs4P,kCAChB/yP,SAAS,OACpC,EACDozT,0BAA2B,SAAS1vT,GAChC,OAAOjJ,KAAKg5P,yBAAyB/vP,IAAMjJ,KAAK04T,+BACnD,EACDh/G,iBAAkB,SAASzwM,GAClBjJ,KAAK24T,0BAA0B1vT,KACVjJ,KAAK44T,uBAAuB3vT,EAAE63D,iBAEhD9gE,KAAK83T,oBACL93T,KAAK8qT,qBAET9qT,KAAK01T,oBAAoBzsT,IAE7BA,EAAE0O,OAAS3X,KAAKqzP,SAASz5P,IAAI,GAC7BoG,KAAKmiD,SAASl5C,EACjB,EACDysT,oBAAqB,SAASzsT,GAC1B,IACmBu7S,EACfxkT,KAAK2sC,SADL63Q,cAEAqU,EAAkB74T,KAAK44T,uBAAuB,OAAS3vT,QAAK,IAAWA,OAAI,EAASA,EAAE63D,eAE1F,GADyB9gE,KAAK+3T,cAAgBvT,IAAkBqU,EACxC,CACpB,IAAIvuD,EACAwuD,EAAiB,QAAUxuD,EAAetqQ,KAAKsnQ,cAAW,IAAWgD,OAAe,EAASA,EAAa7kD,yBAC9GzlN,KAAK8qT,oBACDgO,EACA94T,KAAKm4T,qBAAoB,IAEzBn4T,KAAK+3T,YAAW,GAChB/3T,KAAKirT,kBAEZ,CACJ,EACDkN,oBAAqB,SAASj6T,GAC1B,IAAK4Z,UAAUnX,OACX,OAAOX,KAAK+4T,yBAEhB/4T,KAAK+4T,yBAA2B76T,CACnC,EACD06T,uBAAwB,SAASjhT,GAC7B,QAASo5D,GAAEp5D,GAAQm4D,QAAQ,IAAI7/D,OAAOilT,KAAgCv0T,MACzE,EACD63T,gBAAiB,WACb,IAAIvxF,EAAejnO,KAAK2sC,OAAO,gBAC3BqsR,EAAmBh5T,KAAKovN,eAAe6X,GAClBA,GAAgB,KAAO+xF,IAExCh5T,KAAKu1T,uBACLv1T,KAAK8iP,sBAAsB9iP,KAAKu1T,uBAEpCv1T,KAAK2sC,OAAO,QAAS,cAElB3sC,KAAKu1T,qBACf,EACDlK,iBAAkB,WACd,OAAOrrT,KAAKwpT,6BAA+BxpT,KAAK+3T,YACnD,EACDj+G,WAAY,WACR,IAAIlyJ,EAAgBiV,EAAAA,EAAAA,iBAA4B78D,KAAKwM,WACrD,OAAOxM,KAAKmiD,YAAc4uB,GAAEnpB,GAAekoB,QAAQ9vE,KAAKqzP,UAAU1yP,OAAS,CAC9E,EACD23P,+BAAgC,WAC5B,MAAO,uBACV,EACDC,wBAAyB,WACjBv4P,KAAKslQ,eACLtlQ,KAAKmiD,UAEZ,EACDujN,iBAAkB,WACd,IAAIuzD,EAAej5T,KAAKmtD,OAASntD,KAAK2sC,OAAO,WAAaokC,GAAE/wE,KAAKmtD,MAAMxgB,OAAO,mBAC9E,OAAIssR,GAAgBA,EAAat4T,OACtBX,KAAKmtD,MAAM4gK,aAAakrG,GAE5Bj5T,KAAK2sC,OAAO,eACtB,EACD07Q,iBAAkB,SAASnqT,GACvB,OAAO8B,KAAK4+O,eAAe1gP,EAAO8B,KAAK2sC,OAAO,SACjD,EACDusR,wBAAyB,WACrB,QAASl5T,KAAK2sC,OAAO,0BAA4B,WAAa3sC,KAAK2sC,OAAO,iBAC7E,EACDq9Q,sBAAuB,SAAS/gT,GAC5B,IAAI4xJ,EAAgB76J,KAAKi/O,mBACzBj/O,KAAKy2T,kBAAkB1lP,GAAE9nE,EAAE62D,cAC3B9/D,KAAK8iP,sBAAsB75O,EAAElI,OAC7Bf,KAAKm5T,mBAAmBn5T,KAAKw+O,aAAav1O,EAAEqyI,WACxCt7I,KAAKk5T,2BACLl5T,KAAK2sC,OAAO,UAAU,GAEtB3sC,KAAK2sC,OAAO,kBAAoBkuH,IAAkB76J,KAAKw+O,aAAav1O,EAAEqyI,WACtEt7I,KAAK02T,aAAaztT,EAAEqyI,UAEpBt7I,KAAK63T,sBACL73T,KAAK01T,qBAEZ,EACDmC,mBAAoB,WAChB,OAAO73T,KAAK+3T,YACf,EACDoB,mBAAoB,SAASj7T,GACzB8B,KAAKomT,UAAUloT,EAClB,EACD0pT,UAAW,SAAS1pT,EAAOoS,GACvB,IAAIm/C,EAAOzvD,KACPuuD,EAAW,IAAIlxC,GAAAA,GAcnB,OAbArd,KAAKmiD,SAASjkD,EAAOoS,GAAOs+C,KAAK,SAAShqD,GACtC2pD,EAAS3vD,QAAQgG,EACpB,EAAC9H,KAAKkD,OAAOsvD,KAAK,SAAS1xD,GACxB,GAAI,OAASA,QAAQ,IAAWA,IAAQA,EAAKohP,mBAA7C,CAGA,IAAI/X,EAAex3K,EAAK9iB,OAAO,gBAC3B8iB,EAAK9iB,OAAO,sBAAwBzuC,IAAUuxD,EAAK+uL,aAAavX,GAChE14K,EAAS3vD,QAAQqoO,GAEjB14K,EAAS/uD,QALZ,CAOJ,EAAC1C,KAAKkD,OACAuuD,EAASjxC,SACnB,EACDoqS,gBAAiB,SAASxpT,EAAOX,GAE7B,OADAyC,KAAKq4T,kBAAoBr4T,KAAK4nT,UAAU1pT,GAAOm4D,OAAO94D,GAC/CyC,KAAKq4T,iBACf,EACDtB,sBAAuB,WACnB,IAAI9vF,EAAejnO,KAAK2sC,OAAO,gBAC3B8mD,EAAczzF,KAAK8iG,eACnBk2N,EAAmBh5T,KAAKovN,eAAe6X,GAC3C,OAAQ+xF,GAAoBvlO,IAAgBulO,EAAiB17T,UAChE,EACDq7P,yBAA0B,SAAS1vP,GAC3BjJ,KAAK2sC,OAAO,sBAAwB3sC,KAAK+2T,0BAA4B/2T,KAAKs4T,mBAC1Et4T,KAAKs4T,kBAAmB,EACxBt4T,KAAKo5T,wBAAwBnwT,GAEpC,EACDstT,8BAA+B,WAC3Bv2T,KAAKq5T,0BAA4Br5T,KAAK2/J,sBAAsB,uBAC/D,EACD44J,kBAAmB,SAAS5xT,GACxB,IAAIrC,EAAS,CACTqC,KAAMA,GAEN2yT,EAAet5T,KAAKq5T,0BAA0B/0T,GAC9CM,GAAOwpD,EAAAA,GAAAA,eAAckrQ,EAAch1T,EAAO6xT,YAI9C,OAHI9nQ,EAAAA,EAAAA,IAAUirQ,IACVh6S,GAAAA,EAAAA,IAAW,QAAS,uBAAwB,cAEzC1a,CACV,EACDw0T,wBAAyB,SAASnwT,GAC9B,IAAIwqF,EAAczzF,KAAK8iG,eACnBl+F,EAAO5E,KAAKu4T,kBAAkB9kO,GAElC,GADAzzF,KAAK8iP,sBAAsB75O,QACvB,IAAWrE,EAEX,MADA5E,KAAK8zP,eACCx0O,GAAAA,EAAAA,MAAa,UAEnBk3C,EAAAA,EAAAA,IAAU5xD,IACV6xD,EAAAA,GAAAA,IAAY7xD,GAAMgqD,KAAK5uD,KAAKu5T,eAAez8T,KAAKkD,OAAOsvD,KAAKtvD,KAAKu5T,eAAez8T,KAAKkD,KAAM,OAE3FA,KAAKu5T,eAAe30T,EAE3B,EACD20T,eAAgB,SAAS30T,GACjB5E,KAAKgkG,YAGTp/F,EAAOA,GAAQ,KACf5E,KAAK2sC,OAAO,eAAgB/nC,GAC5B5E,KAAK01T,sBACL11T,KAAKomT,UAAUpmT,KAAKw+O,aAAa55O,IACjC5E,KAAKm2P,mBAAmBn2P,KAAKovN,eAAexqN,IAC5C5E,KAAKs4T,kBAAmB,EAC3B,EACDzqE,mBAAoB,SAAS5kP,GAIzB,OAHAjJ,KAAKs1T,mBAAoB,EACzBt1T,KAAKmiD,SAASl5C,GACdjJ,KAAKirT,mBACE,CACV,EACD8M,WAAY,SAAS75T,GACjB,IAAK4Z,UAAUnX,OACX,QAASX,KAAKw5T,gBAElBx5T,KAAKw5T,gBAAkBt7T,CAC1B,EACDysT,eAAgB,WACR3qT,KAAKs1T,yBACEt1T,KAAKs1T,mBAGZt1T,KAAKwpT,6BACLxpT,KAAK+3T,YAAW,GAEpB/3T,KAAKmiD,SAASrqC,WACjB,EACDqzS,oBAAqB,SAAS13N,GAC1BzzF,KAAKmiD,WACD,OAASsxC,IACTzzF,KAAKy5T,2BACLz5T,KAAKg3T,wBAEZ,EACD3B,kBAAmB,WACf,IAAI76S,EAAQxa,KAAKqzP,SAASz5P,IAAI,GAC1B8/T,EAAsB15T,KAAK8iG,eAAeniG,OAC1Cg5T,EAAgB,IAAMn/S,EAAMgxO,gBAAkBhxO,EAAMixO,eAAiBiuE,EACrEE,EAAoBp/S,EAAMgxO,iBAAmBhxO,EAAMixO,aACnDouE,EAAuBH,IAAwBl/S,EAAMixO,aACzD,OAAOzrP,KAAK+3T,cAAgB6B,IAAsBD,GAAiBE,GAAwB75T,KAAK85T,+BACnG,EACDA,8BAA+B,WAC3B,OAAQ95T,KAAKw1T,sBAAwBx1T,KAAK2sC,OAAO,mBAAqB3sC,KAAK2sC,OAAO,sBAAwB,eAAiB3sC,KAAK2sC,OAAO,aAC1I,EACD8sR,yBAA0B,WACtB,GAAKz5T,KAAK85T,gCAAV,CAIA,IAAIl1T,EAAO5E,KAAKmtD,OAASntD,KAAKm6N,eAAen6N,KAAKmtD,MAAMxgB,OAAO,UAAU,GACzE,GAAK/nC,EAAL,CAGA,IAAI41L,EAASx6L,KAAKqzP,SACd1L,EAAcntD,EAAO/hK,MAAM93B,OAC/B,GAAI,IAAMgnP,EAAV,CAGA,IAAIwf,EAAe3sE,EAAO5gM,IAAI,GAC1B+8N,EAAe32N,KAAKovN,eAAexqN,GAAMtH,WAC7C6pQ,EAAajpQ,MAAQy4N,EACrB32N,KAAKo6P,OAAO,CACR79N,MAAOorN,EACPz9O,IAAKysN,EAAah2N,QANrB,CALA,CAJA,aAFUX,KAAKw1T,oBAmBnB,EACD9iL,SAAU,WACN1yI,KAAKk3T,uBAAyBp1S,GAAAA,YACvB9hB,KAAKq4T,kBACZr4T,KAAKmiD,UACR,EACD29G,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,wBACD4G,KAAKg0P,2BACLh0P,KAAKq5M,qBACLr5M,KAAKi4P,iBACL,MACJ,IAAK,uBACDj4P,KAAKu2T,gCACL,MACJ,IAAK,iBACDv2T,KAAKw2T,iBACL,MACJ,IAAK,qBACL,IAAK,oBACL,IAAK,wBACDx2T,KAAKypK,cACL,MACJ,IAAK,gBACD,MACJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,cAAe2iJ,IACjC,UCxrBI4E,GAAoB,gBAEpBC,GAAc,CACdtqD,IAAK,WACL/iM,IAAK,aAELstP,GAAc,CACdvqD,IAAK,WACL/iM,IAAK,aAELutP,GAA2B,CAC3B39R,MAAO,aACPryB,IAAK,WACL8xM,OAAQ,SACR,gBAAiB,gBACjB,eAAgB,gBAEhBm+G,GAAuB,CACvB59R,MAAO,aACPryB,IAAK,WACL8xM,OAAQ,SACRo+G,QAAS,WAETC,GAAqB,CACrB3qD,IAAK,MACL/iM,IAAK,UAEL2tP,GAAc,SAAC9tT,EAAS3P,EAAMqB,GAG9B,GAFAA,EAAQyoE,EAAmB9pE,EAAMqB,GACjCsO,EAAQsqB,MAAMmvC,EAAUppE,IAASqB,IAC5B4iD,EAAAA,EAAAA,MAAa,CACd,GAAI,KAAO5iD,KAAUmwD,EAAAA,EAAAA,IAAUnwD,GAC3B,OAEJ,IAAIq8T,EAAUt1P,EAAUpoE,GAExB2qD,EAASh7C,EADO+tT,EAAU,KAAOr8T,EAAQ,KACZ,EAChC,CACJ,EACKs8T,GAAAA,SAAAA,yIACF,SAAet8T,EAAO08J,IAClB,6DAAqB18J,IACjBmwD,EAAAA,EAAAA,IAAUusG,IACV56J,KAAKktD,SAASutQ,2BAA2B,CACrCrhU,KAAM,UACNsvC,MAAOxqC,EACPw8T,SAAU9/J,GAGrB,OAVC4/J,CAAgBviG,IAYhB0iG,GAAAA,WACF,WAAY3gQ,EAAUrtB,IAAQ,eAC1B3sC,KAAKgnJ,UAAYhtF,EACjBh6D,KAAK46T,QAAUjuR,CAClB,yCACD,WACI3sC,KAAKgnJ,UAAU1hH,IAAI,CACf1U,QAASw1C,EAAgB,iBAAmB,SAEhDk0P,GAAYt6T,KAAKgnJ,UAAUptJ,IAAI,GAAI,gBAAiBygU,GAAmBr6T,KAAK46T,QAAQ,cACvF,4BACD,WACI56T,KAAKgnJ,UAAU1hH,IAAI,CACf1B,eAAgB5jC,KAAK66T,oBAE5B,iCACD,WACI,IAAIxuH,EAAQrsM,KAAK46T,QAAQ,SACzB,OAAOvuH,KAAS6tH,GAA2BA,GAAyB7tH,GAASA,CAChF,iCACD,WACIrsM,KAAKgnJ,UAAU1hH,IAAI,CACfzB,WAAY7jC,KAAK86T,yBAExB,sCACD,WACI,IAAIC,EAAa/6T,KAAK46T,QAAQ,cAC9B,OAAOG,KAAcZ,GAAuBA,GAAqBY,GAAcA,CAClF,4BACD,SAAY1qG,GACR,IAAI2qG,EAAiB50P,EAAgB,iBACjCx/C,EAAY5mB,KAAK46T,QAAQ,cAC7B/tQ,EAAAA,EAAAA,IAAKwjK,GAAS,WACV,IAAIS,EAAQ//I,GAAE/wE,MACV4E,EAAOksN,EAAMx2N,KAAKy/T,IACtBjpG,EAAMxrL,IAAI,CACN1U,QAASoqS,EAAiB,SAC3B11R,IAAI20R,GAAYrzS,GAAYhiB,EAAKq2T,SAAW,QAAQ31R,IAAI00R,GAAYpzS,GAAYhiB,EAAKs2T,SAAW,KACnGZ,GAAYxpG,EAAMl3N,IAAI,GAAI,YAAagL,EAAKu2T,UAAY,GACxDb,GAAYxpG,EAAMl3N,IAAI,GAAI,WAAYgL,EAAK22R,OAC3C++B,GAAYxpG,EAAMl3N,IAAI,GAAI,cAAcy0D,EAAAA,EAAAA,IAAUzpD,EAAKw2T,QAAUx2T,EAAKw2T,OA1FrE,GA2FDtqG,EAAM/lN,WAAW8hD,MAAK,SAAC/tD,EAAGk3N,GACtBjlJ,GAAEilJ,GAAa1wL,IAAI,CACf3U,MAAO,OACPnE,OAAQ,OACRoE,QAASw1C,EAAgB,iBAAmB,OAC5C3iC,UAAW,IAEf62R,GAAYtkG,EAAa,WAAY,GACrCskG,GAAYtkG,EAAa,gBAAiBjlJ,GAAEilJ,GAAa,GAAGl/L,MAAM4M,eAAiB,SACtF,GACJ,GACJ,OApDCi3R,GAsDAU,GAAAA,SAAAA,6IACF,WACI,OAAO51Q,EAAAA,GAAAA,IAAO,kEAA4B,CACtC7+B,UAAW,MACXylL,MAAO,QACP0uH,WAAY,UACZ52H,oBAAoB,EACpBhmJ,mBAAmB,EACnBm9Q,wBAAoB,EACpBluQ,YAAQ,GAEf,2BACD,WACI,MAvHa,aAwHhB,6BACD,WACI,OAAO2sQ,EACV,8BACD,WACI,OAAO/5T,KAAKszN,iBAAiBvoN,SAAS/K,KAAK4zN,gBAC9C,sBACD,YACI,qDACA5zN,KAAKg6D,WAAWoU,SAlIH,eAmIbpuE,KAAKu7T,cACLv7T,KAAKw7T,eACR,4BACD,WACIx7T,KAAKy7T,QAAU,IAAId,GAAe36T,KAAKg6D,WAAYh6D,KAAK2sC,OAAO7vC,KAAKkD,MACvE,8BACD,WACIA,KAAKotD,OAASptD,KAAK2sC,OAAO,WAAa,EAC1C,iCACD,WACI,OAAO3sC,KAAK2sC,OAAO,aAAsB3sC,KAAKotD,OAAOzsD,MACxD,iCACD,SAAiBmwN,EAAO/wN,GACpBC,KAAKotD,OAAOhtD,KAAK,CACb0wN,MAAOA,EACP/wN,OAAQA,GAEf,oCACD,WACI,OAAOC,KAAKotD,OAAOl1B,OACtB,4BACD,WACIl4B,KAAKg6D,WAAWoU,SA1JR,UA2JRpuE,KAAKy7T,QAAQC,aACb,2DACA17T,KAAK27T,eACL37T,KAAKqsK,gBACR,+BACD,WACIrsK,KAAK47T,oBAAsB57T,KAAK2/J,sBAAsB,qBACzD,6BACD,WACI3/J,KAAKy7T,QAAQI,cACb77T,KAAKy7T,QAAQK,kBAChB,6BACD,SAAa51Q,GAET,KADA,2DAAmBA,GACZlmD,KAAK+7T,oBAAoB,CAC5B,IAAIn3T,EAAO5E,KAAKg8T,sBAChBh8T,KAAKmjK,iBAAiBv+J,EAAKksN,MAAOuqG,GAAK51Q,EAAAA,GAAAA,GAAO,CAC1C2oK,aAAcpuN,KAAK2sC,OAAO,gBAC1B6hL,gBAAiBxuN,KAAK2sC,OAAO,mBAC7B4hL,WAAYvuN,KAAK2sC,OAAO,cACxB2hL,YAAatuN,KAAK2sC,OAAO,eACzB8hL,kBAAmBzuN,KAAK2sC,OAAO,qBAC/B0hL,eAAgBruN,KAAK2sC,OAAO,kBAC5BygB,OAAQptD,KAAKotD,QACdxoD,EAAK7E,QACX,CACDC,KAAKy7T,QAAQQ,YAAYj8T,KAAK2wN,gBACjC,mCACD,SAAmB/yN,GACf,IAAIs+T,EAAYt+T,EAAK09I,UAAY19I,EAAK09I,SAAS3wI,KAC/C,OAAIuxT,EACOl8T,KAAKu2N,yBAAyB34N,EAAMs+T,IAExC,iEAAyBt+T,EACnC,uCACD,SAAuBA,GACnB,IAAIu+T,EAAYv+T,EAAK09I,SAASpzE,IACzBi0P,GAGLn8T,KAAKo8T,iBAAiBx+T,EAAKo4N,YAAammG,EAC3C,sCACD,SAAsB/tG,EAAcxwN,GAChC,OAAIA,EAAK09I,SAASpzE,IACPkmJ,EAAa7mL,OAAS6mL,EAAa7mL,SAAWwpC,MAElD,oEAA4Bq9I,EAAcxwN,EACpD,mCACD,SAAmBgH,EAAMuI,EAAUjP,EAAO08J,GAClC,YAAcztJ,GACdnN,KAAK47T,oBAAoB,CACrBxiU,KAAM+T,EACNu7B,MAAOxqC,EACPw8T,UAAU,IAAU9/J,KAG5B,iEAAyBh2J,EAAMuI,EAAUjP,EAC5C,+BACD,SAAeN,GACX,OAAQA,EAAKxE,MACT,IAAK,SACL,IAAK,YACD4G,KAAKypK,cACL,MACJ,IAAK,QACDzpK,KAAKy7T,QAAQI,cACb,MACJ,IAAK,aACD77T,KAAKy7T,QAAQK,mBACb,MACJ,SACI,6DAAqBl+T,GAEhC,6BACD,WAAe,WACPR,GAAU,4DAId,OAHAA,EAAQq9T,2BAA6B,SAAAxxT,GACjC,EAAK2yT,oBAAoB3yT,EAC5B,EACM7L,CACV,OA/HCi+T,CAAYjuG,IAiIlBiuG,GAAItpG,UAAYyoG,GAChBhoJ,GAAkB,QAAS6oJ,IAC3B,UCpPIgB,GAAc,SAASC,EAAQhpB,EAAOrmS,GACtCsvT,GAAUD,EAAQhpB,EAAOrmS,EAC5B,EACGsvT,GAAY,SAASD,EAAQhpB,EAAOrmS,GACpCqvT,EAAOh3R,IAAI,YAAa,UAAYguQ,EAAQ,oBAAsBrmS,EAAS,MAC9E,EACGuvT,GAAW36E,GAAAA,QAAe,CAC1BjkF,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjkD,MAAO,IAAI4E,KAAKA,KAAKygE,OACrBk5P,iBAAiB,EACjBC,YAAY,EACZC,aAAc,EACdr0H,iBAAa,GAEpB,EACDs0H,UAAW,WACP,OAAO58T,KAAK2sC,OAAO,UAAY,IAAI7pC,IACtC,EACDygG,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SA9BH,cA+BhB,EACD0M,QAAS,WACL96E,KAAKmiD,WACLniD,KAAK68T,aACL78T,KAAK88T,aACR,EACDD,WAAY,WACR,IAAIE,EAAOhsP,GAAE,SAASpC,SAAS3uE,KAAKg6D,YAChC9T,EAAQ,GACRlmD,KAAK2sC,OAAO,eACZuZ,EAAM9lD,KAAK,CACPm7R,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV37S,SAAUxf,KAAKg9T,aAAalgU,KAAKkD,QAGzCkmD,EAAM9lD,KAAK,CACPm7R,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV37S,SAAUxf,KAAKwlQ,aAAa1oQ,KAAKkD,QAErCA,KAAKmjK,iBAAiB45J,EAAM1B,GAAK,CAC7B7uS,OAAQ,OACRmE,MAAO,OACP/J,UAAW,MACXs/B,MAAOA,GAEd,EACD82Q,aAAc,SAASl+T,EAAG6qC,EAAIpiC,GAC1BvH,KAAKi9T,YAAclsP,GAAE,SAAS3C,SA3DP,yBA4DvBpuE,KAAKk9T,cAAgBnsP,GAAE,SAAS3C,SAvDP,2BAwDzB,IAAIoM,EAAazJ,GAAExpE,GACnBizE,EAAWpM,SAhEQ,qBAgEuBzoE,OAAO3F,KAAKi9T,aAAat3T,OAAO3F,KAAKk9T,eAC/El9T,KAAK86M,QAAQ,OAAQ,eAAgBtgI,EACxC,EACD2iP,aAAc,WACV,IAAI/oS,EAAOp0B,KAAK48T,YACZQ,EAAiBhpS,EAAKwtD,WAAa,GAAK,IAAMxtD,EAAKouD,aAAe,GAAK,GACvE66O,EAAmBjpS,EAAKouD,aAAe,GAAK,IAChD65O,GAAYr8T,KAAKi9T,YAAaG,EAAgBp9T,KAAK2sC,OAAO,iBAC1D0vR,GAAYr8T,KAAKk9T,cAAeG,EAAkBr9T,KAAK2sC,OAAO,gBACjE,EACD2wR,aAAc,SAASC,GAAgB,WAC/Br3Q,EAAQ,CAAC,CACTq1O,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV37S,SAAU,kBAAM,EAAKg+S,SAASxjQ,UAApB,GACX,CACCuhO,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV37S,SAAUuxD,GAAE,SAAS3C,SAjFG,8BAiFqCznE,KAAKyhH,GAAAA,qBACnE,CACCmzK,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV37S,SAAU,kBAAM,EAAKi+S,WAAWzjQ,UAAtB,IAUd,OARIujQ,GACAr3Q,EAAM9lD,KAAK,CACPm7R,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV37S,SAAU,kBAAM,EAAKk+S,UAAU1jQ,UAArB,IAGX9T,CACV,EACDs/M,aAAc,WACV,IAAI+3D,GAAkBv9T,KAAK2sC,OAAO,mBAMlC,OALA3sC,KAAK29T,eAAeJ,GACpBv9T,KAAK49T,mBACDL,GACAv9T,KAAK69T,qBAEF79T,KAAKmjK,iBAAiBpyF,GAAE,SAAS3C,SA3GrB,qBA2GqDitP,GAAK,CACzEz0S,UAAW,MACXylL,MAAO,SACP0uH,WAAY,SACZ70Q,MAAOlmD,KAAKs9T,aAAaC,KAC1BvjQ,UACN,EACD2jQ,eAAgB,SAASJ,GAAgB,YACxBv9T,KAAKw9T,SAAWx9T,KAAKmjK,iBAAiBpyF,GAAE,SAAU+sP,IAAWr4Q,EAAAA,GAAAA,GAAO,CAC7E5iC,KAAM,EACN4U,IAAK8lS,EAAiB,GAAK,GAC3Br/T,MAAO8B,KAAK48T,YAAYh7O,WACxBogK,eAAgBhiP,KAAK+9T,uBAAuBjhU,KAAKkD,MACjDu3L,kBAAmB,SAAAxzD,GAAI,OAAI,EAAKm2E,iBAAiBn2E,EAA1B,GACxB/jI,KAAKg+T,yBACDljH,QAAQ,QAAS,QAC3B,EACDmjH,MAAO,WACH,OAAQj+T,KAAK2sC,OAAO,oBAAsB,IAAM3sC,KAAK09T,UAAU/wR,OAAO,QACzE,EACDoxR,uBAAwB,SAAS/mT,GAC7B,IACW9Y,EAEP8Y,EAFA9Y,MACWkzB,EACXpa,EADAoa,UAEA8jC,EAAel1D,KAAK48T,YACpB/zR,EAAW,IAAI/lC,KAAKoyD,GACpBgpQ,EAAWl+T,KAAKm+T,qBAAqBjgU,GACzCkzB,EAAUub,OAAO,QAASuxR,GACtBl+T,KAAKi+T,UACLC,GAAY,IAEhBr1R,EAASq2C,SAASg/O,GAClBl8O,GAAAA,cAAwBn5C,GACxB7oC,KAAK2sC,OAAO,QAAS9D,EACxB,EACDs1R,qBAAsB,SAASj+O,GAC3B,IAAIk+O,EAAgBp+T,KAAK2sC,OAAO,mBAAqB,GAAK,GAC1D,OAAQyxR,EAAgBl+O,GAASk+O,CACpC,EACDR,iBAAkB,WAAW,YACZ59T,KAAKy9T,WAAaz9T,KAAKmjK,iBAAiBpyF,GAAE,SAAU+sP,IAAWr4Q,EAAAA,GAAAA,GAAO,CAC/E5iC,KAAM,EACN4U,IAAK,GACLv5B,MAAO8B,KAAK48T,YAAYp6O,aACxB+0G,kBAAmB,SAAAxzD,GAAI,OAAI,EAAKm2E,iBAAiBn2E,EAA1B,EACvBi+G,eAAgB,SAAAt9E,GACZ,IAII25J,GAAc,GADd35J,EAFAxmK,OAG4B,GAD5BwmK,EADAtzI,UAGMub,OAAO,QAAS0xR,GAC1B,IAAIjqS,EAAO,IAAItxB,KAAK,EAAK85T,aACzBxoS,EAAKsxD,WAAW24O,GAChBr8O,GAAAA,cAAwB5tD,GACxB,EAAKuY,OAAO,QAASvY,EACxB,GACFp0B,KAAKg+T,yBACDljH,QAAQ,QAAS,UAC3B,EACD+iH,mBAAoB,WAAW,WACvBv7M,EAAc8F,GAAAA,iBACdu8H,EAAS3kP,KAAK09T,UAAY19T,KAAKmjK,iBAAiBpyF,GAAE,SAAS3C,SAvKzC,wBAuK4E+mP,GAAW,CACzGjvQ,MAAO,CAAC,CACJhoD,OAxKW,EAyKXyI,KAAM27G,EAAY,IACnB,CACCpkH,MA1KW,EA2KXyI,KAAM27G,EAAY,KAEtBy1B,UAAW,QACXE,YAAa,OACbs/C,kBAAmB,SAAAxzD,GAAI,OAAI,EAAKm2E,iBAAiBn2E,EAA1B,EACvBi+G,eAAgB,SAAAl8F,GACZ,IACW5nJ,EACP4nJ,EADA5nJ,MAEAgiF,EAAQ,EAAK08O,YAAYh7O,WACzBxtD,EAAO,IAAItxB,KAAK,EAAK85T,aACrBsB,GAAYh+O,EAAQ,GAAKhiF,GAAS,GACtCk2B,EAAK8qD,SAASg/O,GACd,EAAKvxR,OAAO,QAASvY,EACxB,EACDl2B,MAAO8B,KAAK48T,YAAYh7O,YAAc,GA1LvB,GADA,EA4Lf0mH,YAAatoM,KAAK2sC,OAAO,iBAE7Bg4M,EAAO7pC,QAAQ,QAAS,OAC3B,EACDwjH,iBAAkB,WACd,IAAIt+T,KAAK2sC,OAAO,mBAAhB,CAGA,IAGI9D,EAHQ7oC,KAAK48T,YACCh7O,YACE,GArMD,GADA,EAwMnB5hF,KAAKu+T,yBAAyBv+T,KAAK09T,UAAW70R,EAL7C,CAMJ,EACD01R,yBAA0B,SAAS55E,EAAQzmP,GACnCymP,IACAA,EAAOtC,6BACPsC,EAAOh4M,OAAO,QAASzuC,GACvBymP,EAAOpC,2BAEd,EACDy7E,oBAAqB,WACjB,MAAO,CACHr8B,iBAAiB,EACjB1uC,sBAAuB,SAAS/0P,GAC5B,OAAQA,EAAQ,GAAK,IAAM,IAAMA,CACpC,EACDoqM,YAAatoM,KAAK2sC,OAAO,eAEhC,EACD6xR,gBAAiB,SAASt+O,GACtB,OAAOlgF,KAAK2sC,OAAO,mBAAqBuzC,EAAQA,EAAQ,IAAM,EACjE,EACDw2O,aAAc,WACV,IAAIx2O,EAAQlgF,KAAKw+T,gBAAgBx+T,KAAK48T,YAAYh7O,YAClD5hF,KAAKu+T,yBAAyBv+T,KAAKw9T,SAAUt9O,GAC7ClgF,KAAKu+T,yBAAyBv+T,KAAKy9T,WAAYz9T,KAAK48T,YAAYp6O,cAChExiF,KAAKs+T,kBACR,EACDxB,YAAa,WACL98T,KAAK2sC,OAAO,eACZ3sC,KAAKm9T,eAETn9T,KAAK02T,cACR,EACD/uJ,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAK88T,aAEZ,EACDh9J,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,QACD4G,KAAK88T,cACL98T,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,eACD,MACJ,IAAK,kBACL,IAAK,aACL,IAAK,cACDoC,KAAKypK,cACL,MACJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,aAAcgqJ,IAChC,UC3QIviU,IAAS8mD,EAAAA,EAAAA,MAYT09Q,GAA8B,gCAC9BC,GAA2Bn7C,GAAAA,QAAyB,CACpD/kH,KAAM,mBACNyjH,kBAAmB,WACf,OAAOx8N,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BwhN,eAAgB,aAChBW,gBAAiB,eACjB,6BAA6B,GAEpC,EACDyf,sBAAuB,WACnB,OAAO/hM,GAAAA,SAAmBhiF,KAAK2jR,qBAAsB3jR,KAAK2hR,aAAa,SAC1E,EACDO,iBAAkB,SAAS8B,GACvB,OAAOA,GAAiB,oBAC3B,EACD26C,gBAAiB,WACb,OAAOv2M,GAAAA,eAAgCpoH,KAAKkiR,iBAAiBliR,KAAK0hR,QAAQ/0O,OAAO,kBACpF,EACDg3O,mBAAoB,WAChB,IAAIi7C,EAAW5+T,KAAKmiD,WACpB,OAAOniD,KAAK6+T,gBAAgBD,EAC/B,EACD/8C,cAAe,WACX7hR,KAAKmiD,WACLniD,KAAK8+T,UAAY9+T,KAAK0hR,QAAQv+G,iBAAiBpyF,GAAE,SAAUyrP,GAAU,CACjEt+T,MAAO8B,KAAKijR,eACZy5C,YAAa18T,KAAK++T,gBAClBtC,gBAAiBz8T,KAAK2+T,kBACtB38E,eAAgBhiP,KAAKikR,qBAAqBnnR,KAAKkD,MAC/CsoM,YAAatoM,KAAK0hR,QAAQ/0O,OAAO,iBAErC3sC,KAAK8+T,UAAU1jH,mBAAmB,SAAUp7M,KAAKmkR,eAAernR,KAAKkD,MACxE,EACDwiR,kBAAmB,WACfxiR,KAAKmiD,WACL,IAAI0mN,EAAQ7oQ,KAAK0iR,YACb7Z,GACAA,EAAMxsD,WAAWpuI,YAvCO,6BAuCoCjuE,KAAKg/T,kBAErE1pS,aAAat1B,KAAKi/T,eAClBj/T,KAAKi/T,cAAgB1pS,WAAW,WAC5Bv1B,KAAK0iR,aAAe1iR,KAAK0iR,YAAYvnE,SACxC,EAACr+M,KAAKkD,MAAO,EACjB,EACDsjR,oBAAqB,WACjB,IAAI47C,EAAiBl/T,KAAK++T,gBACtBI,EAAsBn/T,KAAKo/T,qBAC/B,OAAIF,IAAmBC,GACnBn/T,KAAKo/T,qBAAuBF,OACrB,IAAWC,GAEfn/T,KAAKmiD,UACf,EACDo3M,aAAc,SAAS8lE,GACnB,IAAIprS,EAAOj0B,KAAKijR,eACXhvP,GAASorS,IACVprS,EAAO,IAAInxB,KACXu5R,GAAAA,cAA0BpoQ,IAE9Bj0B,KAAKmiD,WACDniD,KAAK8+T,YACL7qS,GAAQj0B,KAAK8+T,UAAUnyR,OAAO,QAAS1Y,GACvCj0B,KAAK8+T,UAAUnyR,OAAO,kBAAmB3sC,KAAK2+T,mBAErD,EACDK,eAAgB,WACZ,OAAOp0P,GAAS3wE,KArEO,GAsE1B,EACD8kU,cAAe,WACX,OAAQ/+T,KAAK0hR,QAAQ/0O,OAAO,oBAAsB3sC,KAAK0hR,QAAQ/0O,OAAO,sBAAwB3sC,KAAKg/T,gBACtG,EACD1B,aAAc,WACV,IAAIp3Q,EAAQ,CAAC,CACTq1O,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV/hU,KAAM,aAUV,OARK4G,KAAK++T,iBACN74Q,EAAM9lD,KAAK,CACPm7R,MAAO,EACP6/B,OAAQ,EACRD,SAAU,OACV/hU,KAAM,SAGP8sD,CACV,EACDy8N,mBAAoB,WAChB3iR,KAAKmiD,WACLniD,KAAKo/T,qBAAuBp/T,KAAK++T,gBACjC,IAAIz2D,EAAgBtoQ,KAAK0iR,YAAYpoF,WACrCt6L,KAAKs/T,KAAOt/T,KAAK0hR,QAAQv+G,iBAAiBpyF,GAAE,SAASpC,SAAS25L,GAAgB+yD,GAAK,CAC/Ez0S,UAAW,MACXm0S,WAAY,UACZ70Q,MAAOlmD,KAAKs9T,eACZlvG,aAAc,SAAS9zN,EAAMqO,EAAG6D,GAC5B,IAAIguE,EAAazJ,GAAE,SACnB,OAAQz2E,EAAKlB,MACT,IAAK,WACDohF,EAAW70E,OAAO3F,KAAK4hR,QAAQ5nN,YAC3Bh6D,KAAK++T,kBACL/+T,KAAK8+T,UAAU9kQ,WAAWoU,SAASqwP,IACnCjkP,EAAW70E,OAAO3F,KAAK8+T,UAAU9kQ,aAErC,MACJ,IAAK,OACDwgB,EAAW70E,OAAO3F,KAAK8+T,UAAU9kQ,YACjC+W,GAAEvkE,GAAS4hE,SAASqwP,IAE5B,OAAOjkP,CACV,EAAC19E,KAAKkD,QAEXA,KAAKu/T,mBACR,EACD13D,YAAa,SAASC,GAClB,IAAI03D,EAAsBx/T,KAAKmiD,SAAS2lN,GACxC,OAAOriN,EAAAA,GAAAA,GAAO+5Q,EAAqB,CAC/B7uS,MAAO,QAEd,EACDkyP,qBAAsB,WAClB,OAAO7iR,KAAK8+T,UAAUtB,SAASxjQ,WAAWh+D,KAAK,QAClD,EACDujU,kBAAmB,WACf,IAAI79C,EAAU1hR,KAAK0hR,QACnB1hR,KAAK8+T,UAAUtB,SAASpiH,mBAAmB,OAAQ,SAASnyM,GACpDA,EAAEipJ,WACFjpJ,EAAEkzD,iBACFulN,EAAQr7P,QAEf,GACJ,EACDu8P,qBAAsB,SAAS35Q,GACtB8nE,GAAE9nE,EAAE0O,QAAQ22D,SAAS,yBACtBtuE,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WACrB9X,KAAK0hR,QAAQ7nE,kBACd75M,KAAK0hR,QAAQr7P,QAGxB,EACDw4S,gBAAiB,SAAS5qS,GACtB,IAAIG,EAAOp0B,KAAK8+T,UAAUnyR,OAAO,SAEjC,OADA1Y,EAAKirD,SAAS9qD,EAAKwtD,WAAYxtD,EAAKouD,aAAcpuD,EAAKquD,aAAcruD,EAAKsuD,mBACnEzuD,CACV,EACDuK,SAAU,WACN,IAAIihS,EACAxrS,EAAO,QAAUwrS,EAAuBz/T,KAAK4hR,QAAQj1O,OAAO,gBAAa,IAAW8yR,EAAuBA,EAAuBz/T,KAAK4hR,QAAQJ,mBAEnJ,OADAvtP,EAAOA,EAAO,IAAInxB,KAAKmxB,GAAQ,IAAInxB,KAC5B9C,KAAK6+T,gBAAgB5qS,EAC/B,EACDsY,QAAS,WACLjX,aAAat1B,KAAK0/T,sBAClBpqS,aAAat1B,KAAKi/T,eAClBj/T,KAAKmiD,UACR,IAEL,MC3KIloD,IAAS8mD,EAAAA,EAAAA,MAqBT4+Q,GAAkB,CAClB98S,IAAK,IAAI/f,KAAK,EAAG,EAAG,EAAG,EAAG,GAC1B20B,IAAK,IAAI30B,KAAK,EAAG,EAAG,EAAG,GAAI,KAE3B88T,GAAen+C,GAAAA,QAAwB,CACvCjjH,KAAM,OACN2jH,cAAe,WACX,MAAO,CACHj+H,IAAK,WACD,IAAI,EAGAlkJ,KAAK2sC,SAFG82N,EADZ,EACIA,OACgBE,EAFpB,EAEIA,eAEAF,GAAU,cAAgBE,GAC1B3jQ,KAAK0e,OAEZ,EACD4uM,MAAOxrM,GAAAA,KACPwiI,KAAMxiI,GAAAA,KACN5X,IAAK4X,GAAAA,KAEZ,EACDmgQ,kBAAmB,WACf,OAAOx8N,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BwhN,eAAgB,aAEvB,EACDue,iBAAkB,SAAS8B,GACvB,OAAOA,GAAiB,WAC3B,EACDnc,YAAa,SAASC,GAClB,OAAOA,CACV,EACDtpO,SAAU,WACN,IAAIsiJ,EAAgB9gL,KAAK4hR,QAAQj1O,OAAO,iBACxC,IAAK,IAAMm0I,EACP,OAAO9gL,KAAK0hR,QAAQ/0O,OAAO,SAE/B,IAAI2uG,EAAWt7I,KAAK6/T,aAAa/+I,GACjC,OAAO9gL,KAAK8/T,mBAAmBxkL,EAClC,EACD4nI,wBAAyB,WACrB,OAAO,CACV,EACDC,eAAgB,WACZ,OAAO,IAAIrgR,KAAK,KACnB,EACDigR,oBAAqB,WACjB/iR,KAAK0hR,QAAQ95G,mBAChB,EACDi6G,cAAe,WACX7hR,KAAKmiD,WACLniD,KAAK+/T,eACR,EACDh+C,eAAgB,WACZ,OAAOonC,EACV,EACDnnC,kBAAmB,WACf,MAAO,CACH5zD,aAAcpuN,KAAKggU,sBAAsBljU,KAAKkD,MAC9CsuN,YAAatuN,KAAKgqT,sBAAsBltT,KAAKkD,MAC7CwgD,UAAW,EACXkuK,qBAAsB1uN,KAAKoxN,yBAAyBt0N,KAAKkD,MACzDknO,cAAe,SAEtB,EACD9V,yBAA0B,SAASnoN,GAC/BjJ,KAAK0hR,QAAQ5mE,QAAQ,mBAAoB,IACzC96M,KAAK0hR,QAAQ5mE,QAAQ,mBAAoB7xM,EAAE+3J,YAC9C,EACD++J,cAAe,WACX//T,KAAK6/T,aAAe7/T,KAAKigU,oBACzBjgU,KAAK4hR,QAAQj1O,OAAO,QAAS3sC,KAAK6/T,aACrC,EACDr9C,kBAAmB,WACVxiR,KAAK4hR,UAGV5hR,KAAK4hR,QAAQj1O,OAAO,iBAAkB,MACtC3sC,KAAKkgU,2BACDlgU,KAAK4hR,QAAQj1O,OAAO,iCACpB3sC,KAAKmgU,oBAAsB5qS,WAAWv1B,KAAK22T,sBAAsB75T,KAAKkD,OAEtEA,KAAK22T,wBAEZ,EACDpqR,QAAS,WACLvsC,KAAKmiD,WACL7sB,aAAat1B,KAAKmgU,oBACrB,EACD5mE,aAAc,WACLv5P,KAAK4hR,UAGV5hR,KAAK+/T,gBACL//T,KAAKkgU,2BACLlgU,KAAK22T,wBACR,EACDuJ,yBAA0B,WACtB,IAAIhiU,EAAQ8B,KAAKijR,eACbm9C,EAAYpgU,KAAKqgU,cAAcniU,IAC9B,IAAMkiU,EACPpgU,KAAK4hR,QAAQj1O,OAAO,gBAAiB,IAErC3sC,KAAK4hR,QAAQj1O,OAAO,gBAAiByzR,EAE5C,EACDzJ,sBAAuB,WACnB32T,KAAK4hR,QAAQu6B,aAAan8S,KAAK4hR,QAAQj1O,OAAO,iBACjD,EACD0zR,cAAe,SAASpsS,GAEpB,IADA,IAAIzwB,GAAU,EACLmF,EAAI,EAAGsb,EAAIjkB,KAAK6/T,aAAal/T,OAAQgI,EAAIsb,EAAGtb,IACjD,GAAI3I,KAAKsgU,eAAersS,EAAMj0B,KAAK6/T,aAAal3T,IAAK,CACjDnF,EAASmF,EACT,KACH,CAEL,OAAOnF,CACV,EACD88T,eAAgB,SAASvrR,EAAOC,GAC5B,OAAO0mB,EAAAA,EAAAA,IAAO3mB,KAAU2mB,EAAAA,EAAAA,IAAO1mB,IAAWD,EAAM6sC,aAAe5sC,EAAO4sC,YAAc7sC,EAAMytC,eAAiBxtC,EAAOwtC,YACrH,EACDy9O,kBAAmB,WACf,IAAIp9S,EAAM7iB,KAAK0hR,QAAQrL,WAAW,QAAUr2Q,KAAKugU,iBAAiB,OAC9D9oS,EAAMz3B,KAAK0hR,QAAQrL,WAAW,QAAUr2Q,KAAKugU,iBAAiB,OAC9DriU,EAAQ8B,KAAK0hR,QAAQrL,WAAW,UAAY,KAC5Cp1L,EAAQxpD,EAAM5U,EACdu9D,EAAUv9D,EAAI2/D,aAAexiF,KAAK0hR,QAAQ/0O,OAAO,YACrD,OAAIs0C,EAAQ,EACD,IAEPA,EAAQe,GAAAA,UACRf,EAAQe,GAAAA,SAER9jF,EAAQ2kB,EAAMm/D,GAAAA,WAGlBn/D,EAAM7iB,KAAKugU,iBAAiB,QACxB76O,WAAWtF,GACXliF,GAASqL,KAAKD,IAAIpL,EAAQu5B,GAAOuqD,GAAAA,UACjCf,GAAS,GAAKxpD,EAAImqD,WAAar4E,KAAKD,IAAImuB,EAAI+qD,aAAepC,IAAY4B,GAAAA,aALhEhiF,KAAKwgU,eAAe39S,EAAK,IAAI/f,KAAK+f,GAAMo+D,GAQtD,EACDu/O,eAAgB,SAASr2E,EAAYj1L,EAAcurQ,GAG/C,IAFA,IAAIC,EAAa,GACb/jP,EAAW38E,KAAK0hR,QAAQ/0O,OAAO,YAC5BuoB,EAAei1L,GAAcs2E,GAChCC,EAAWtgU,KAAK,IAAI0C,KAAKoyD,IACzBA,EAAawwB,WAAWxwB,EAAastB,aAAe7F,GAExD,OAAO+jP,CACV,EACDH,iBAAkB,SAAStyH,GACvB,IAAI0yH,EAAgBhB,GAAgB1xH,GAChC/4I,EAAe,IAAIpyD,MAAKsrD,EAAAA,GAAAA,eAAcpuD,KAAK0hR,QAAQrL,WAAW,SAAU,IAC5E,OAAO,IAAIvzQ,KAAKoyD,EAAa0qB,cAAe1qB,EAAakqB,WAAYlqB,EAAa8qB,UAAW2gP,EAAc/+O,WAAY++O,EAAcn+O,aACxI,EACDw9O,sBAAuB,SAAS1kL,GAC5B,IAAI0oI,EAAgBhkR,KAAK0hR,QAAQ/0O,OAAO,iBACxC,OAAOy7E,GAAAA,OAAwBkzB,EAAUt7I,KAAKkiR,iBAAiB8B,GAClE,EACDgmC,sBAAuB,SAAS/gT,GAC5B,GAAI,eAAiBjJ,KAAK0hR,QAAQ/0O,OAAO,kBAAzC,CAGA,IAAI1Y,EAAOj0B,KAAK8/T,mBAAmB72T,EAAEqyI,UACrCt7I,KAAK0hR,QAAQ/0O,OAAO,UAAU,GAC9B3sC,KAAKijR,aAAahvP,EAAMhrB,EAAElI,MAHzB,CAIJ,EACD++T,mBAAoB,SAASxkL,GACzB,IAAIrnH,EAAOj0B,KAAK0hR,QAAQ/0O,OAAO,SAC3BuzC,EAAQo7D,EAAS15D,WACjBxB,EAAUk7D,EAAS94D,aACnBnC,EAAUi7D,EAAS74D,aACnB5E,EAAOy9D,EAAS17D,cAChB1rD,EAAQonH,EAASl8D,WACjBzB,EAAM29D,EAASt7D,UAgBnB,OAfI/rD,IAEIA,EADAj0B,KAAK0hR,QAAQ/0O,OAAO,2BACbioF,GAAAA,gBAAkC3gG,GAElC,IAAInxB,KAAKmxB,IAEfirD,SAASgB,GACdjsD,EAAKyxD,WAAWtF,GAChBnsD,EAAKg2N,WAAW5pK,GAChBpsD,EAAK0rD,YAAY9B,GACjB5pD,EAAK+qD,SAAS9qD,GACdD,EAAKgrD,QAAQtB,IAEb1pD,EAAO,IAAInxB,KAAK+6E,EAAM3pD,EAAOypD,EAAKuC,EAAOE,EAAS,EAAG,GAElDnsD,CACV,EACDmuP,oBAAqB,WACjB,OAAOpiR,KAAK4hR,OACf,EACDg/C,mBAAoB,WAChB,IAAIC,EAAwB/9D,GAAa9iQ,KAAK0hR,QAAQ/0O,OAAO,2BAC7D,QAAI,IAAWk0R,GAAyB,SAAWA,EAAuB,CACtE7gU,KAAK0hR,QAAQla,gBAAgB,SAAU,QACvC,IAAIs5D,EAAc51P,GAAelrE,KAAK4hR,QAAQ5nN,YAC1C/4B,EAAY,IAAM6pC,GAAU7wE,IAChC+F,KAAK0hR,QAAQla,gBAAgB,SAAUj+P,KAAKsZ,IAAIi+S,EAAa7/R,GAChE,CACDjhC,KAAK0hR,QAAQq/C,WAAa/gU,KAAK0hR,QAAQq/C,UAAUzgB,kBACpD,EACDh+B,cAAe,SAAS37Q,EAAMkxD,GAC1B,IAAI35D,EAAQ8B,KAAKmiD,SAASx7C,EAAMkxD,GAIhC,OAHI35D,IACAA,EAAQ8jF,GAAAA,WAAqB9jF,EAAO,IAAI4E,KAAK,MArNvC,SAuNH5E,CACV,IAEL,MCjPIjE,IAAS8mD,EAAAA,EAAAA,MA+BTigR,GAAgB,aAIhBC,GAAwB,qBAExBC,GAAc,CACd5rD,SAAU,WACV6rD,QAAS,UACTzzQ,KAAM,OACN0zQ,OAAQ,UAERplC,GAAO,CACP/nQ,KAAM,OACNI,SAAU,WACVD,KAAM,QAENitS,GACU,WADVA,GAEU,WAFVA,GAGQ,SAHRA,GAIkB,mBAJlBA,GAKM,OAENC,GAAmB,CACnBjpD,SAAUA,GACV6jB,SAAUA,GACVqlC,OAAQA,GACRC,iBAAkBA,GAClBrY,KAAMA,IAENsY,GAAUv+D,GAAAA,QAAuB,CACjCpsD,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAYniD,KAAKk3R,UAAU/U,gBACjD,EACD3tB,wBAAyB,WACrBx0P,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKk3R,UAAU7U,kBAClB,EACDzkH,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B98C,KAAM,OACNq8T,iBAAiB,EACjBxjU,MAAO,KACP0/C,6BAAyB,EACzB/6B,SAAK,EACL4U,SAAK,EACLusP,cAAe,KACfrnM,SAAU,GACV2xL,cAAe,KACfqzD,WAAYT,GAAY5rD,SACxBssD,mBAAoBx3M,GAAAA,OAA2B,iCAC/Cy3M,sBAAuBz3M,GAAAA,OAA2B,oBAClDg6I,gBAAiBh6I,GAAAA,OAA2B,MAC5CltE,mBAAmB,EACnBmnO,gBAAiB,CAAC,EAClB9f,wBAAwB,EACxBu9D,qBAAqB,GAE5B,EACDhkK,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,CACJj9E,SAAU,OAEd2D,QAAS,CACL,6BAA6B,IAElC,CACCs5E,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLknQ,gBAAiB,iBAEtB,CACC5tL,OAAQ,WACJ,IACIj9E,EADau+E,GAAAA,OACSv+E,SAC1B,MAAO,QAAUA,GAAY,YAAcA,CAC9C,EACD2D,QAAS,CACLukU,WAAYT,GAAYE,SAE7B,CACC1qP,OAAQ,CACJj9E,SAAU,UACV66E,WAAY,WAEhBl3E,QAAS,CACLknQ,gBAAiB,kBAG5B,EACDhlG,aAAc,SAASliK,GACnB4C,KAAKwnO,cAAe/hL,EAAAA,GAAAA,GAAO,CAAC,EAAGroD,GAC/B4C,KAAKmiD,SAAS/kD,GACd4C,KAAK+hU,sBACR,EACDA,qBAAsB,WAClB,IAAIJ,EAAa3hU,KAAK2sC,OAAO,cACzBtnC,EAAOrF,KAAK2sC,OAAO,QACnBg1R,IAAeT,GAAYxzQ,MAASroD,IAAS22R,GAAK3nQ,UAAYhvB,IAAS22R,GAAK/nQ,OAC5E0tS,EAAaT,GAAY5rD,UAEzBjwQ,IAAS22R,GAAK5nQ,MAAQutS,IAAeT,GAAY5rD,WACjDqsD,EAAaT,GAAYxzQ,MAE7B1tD,KAAK2sC,OAAO,qBAAsB,YAAcqrC,GAAAA,OAAev+E,UAAYkoU,IAAeT,GAAYE,QACtGphU,KAAKgiU,YAAcL,CACtB,EACDp+N,MAAO,WACHvjG,KAAKiiU,gBACLjiU,KAAK2sC,QAAO8Y,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKk3R,UAAUjV,oBAAqBjiR,KAAKwnO,sBACzDxnO,KAAKwnO,aACZxnO,KAAKmiD,UACR,EACD+/Q,wBAAyB,SAAS9sT,GAC9B,OAAOA,EAAO6G,OAAO,GAAGzH,cAAgBY,EAAOpQ,OAAO,EACzD,EACDi9T,cAAe,WACX,IAAIrnD,EAAe56Q,KAAKmiU,iBAAiBniU,KAAKoiU,kBAC1Cj+P,EAAWm9P,GAAiB1mD,GAC1B56Q,KAAKk3R,WAAal3R,KAAKk3R,UAAU14H,OAASo8G,IAC5C56Q,KAAKk3R,UAAY,IAAI/yN,EAASnkE,MAErC,EACDoiU,eAAgB,WACZ,IAAIC,EAAcriU,KAAK2sC,OAAO,QAC1B21R,EAAS,SAASlsT,KAAKisT,GAEvBh9T,EAAO,GAOX,MARa,SAAS+Q,KAAKisT,KAGvBh9T,GAAQ22R,GAAK/nQ,MAEbquS,IACAj9T,GAAQ22R,GAAK5nQ,MAEV/uB,CACV,EACD88T,iBAAkB,SAAS98T,GACvB,IAAIs8T,EAAa3hU,KAAKgiU,YACtB,OAAIL,IAAeT,GAAYC,QACpBE,GACAM,IAAeT,GAAYE,OAC3BC,GAEPh8T,IAAS22R,GAAK/nQ,KACPotS,GAEPh8T,IAAS22R,GAAK3nQ,SACPgtS,GAEJA,EACV,EACD/4J,YAAa,WACTtoK,KAAKg6D,WAAWoU,SAAS4yP,IACzBhhU,KAAKmiD,WACLniD,KAAKuiU,sBACLviU,KAAKwiU,0BACLxiU,KAAKk3R,UAAU3U,kBAAkBviR,KAAKqzP,SACzC,EACDv4K,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKyiU,uBACR,EACD/5J,kBAAmB,WACf1oK,KAAKmiD,WACLniD,KAAKg6D,WAAWiU,YAvKE,iBAuKgCjuE,KAAK2sC,OAAO,UAC9D3sC,KAAK8oQ,oBACL9oQ,KAAK4gU,oBACR,EACDh5J,kBAAmB,WACf5nK,KAAKmiD,WACLniD,KAAK4gU,oBACR,EACDA,mBAAoB,WAEZ,IAAI8B,EAAuBC,EAD3B3iU,KAAKsnQ,SAEL,QAAUo7D,GAAyBC,EAAkB3iU,KAAKk3R,WAAW0pC,0BAAuB,IAAW8B,GAAiCA,EAAsBjkU,KAAKkkU,GAE1K,EACDJ,oBAAqB,WACjB,IAAIvoQ,EAAWh6D,KAAKg6D,YACpBnN,EAAAA,EAAAA,IAAKmvO,IAAO,SAASl9R,EAAG8F,GACpBo1D,EAASqU,YAAY2yP,cAAsBp8T,EAC9C,IACDo1D,EAASoU,SAAS4yP,cAAsBhhU,KAAK2sC,OAAO,QACvD,EACD61R,wBAAyB,WACrB,IAAIxoQ,EAAWh6D,KAAKg6D,YACpBnN,EAAAA,EAAAA,IAAKq0Q,IAAc,SAASpiU,EAAG8F,GAC3Bo1D,EAASqU,YAAY2yP,cAAsBp8T,EAC9C,IACDo1D,EAASoU,SAAS4yP,cAAsBhhU,KAAKgiU,YAChD,EACDS,sBAAuB,WACnB,IAAK3hR,EAAAA,EAAAA,MAAL,CAGA,IAAIqmN,EAAennQ,KAAKqzP,SAASz5P,IAAI,GACjC4wF,EAAexqF,KAAK2sC,OAAO,cAC3Bi2R,EAAmB5iU,KAAK6iU,uBACxBC,EAA2B9iU,KAAK+iU,+BAChCC,EAAW7qS,WAAWl+B,GAAO2gE,iBAAiBusM,GAAcx2O,OAASiyS,EACrEK,EAA2BH,EAAyBnyS,MAAQqyS,EAC5DlsS,EAAQqwO,EAAarwO,MACzB92B,KAAKg6D,WAAWiU,YA7MK,yBA6MgCg1P,GAA4BjjU,KAAK2sC,OAAO,wBACzFs2R,QACI,IAAWjjU,KAAKkjU,iBAChBljU,KAAKkjU,eAAiB14O,EAAes4O,EAAyBK,YAAcL,EAAyBM,cAEzG54O,EAAe1zD,EAAM+K,YAAc,EAAI/K,EAAM6K,aAAe,GAE5D6oD,EAAe1zD,EAAM+K,YAAc7hC,KAAKkjU,eAAiB,KAAOpsS,EAAM6K,aAAe3hC,KAAKkjU,eAAiB,IAf9G,CAiBJ,EACDL,qBAAsB,WAClB,IAAID,EAAmB,EACvB,GAAI5iU,KAAK2tP,yBAA2B,KAAO3tP,KAAKqzP,SAAS56N,MAAO,CAC5D,IAAI4qS,EAAqBrjU,KAAKg6D,WAAWh+D,KAAK,yBAA6BpC,IAAI,GAC/EgpU,EAAmBzqS,WAAWl+B,GAAO2gE,iBAAiByoQ,GAAoB1yS,MAC7E,CACD,OAAOiyS,CACV,EACDG,6BAA8B,WAC1B,IAAIlrQ,EAAS73D,KAAKk3R,UAAUhV,iBAAiBliR,KAAK2sC,OAAO,kBACrD22R,EAAel7M,GAAAA,OAAwBi0K,GAAAA,eAA2BxkO,EAAQuwD,GAAAA,gBAAkCA,GAAAA,eAAiCvwD,GAC7I2iI,EAASx6L,KAAKqzP,SACd8T,EAAe3sE,EAAO5gM,IAAI,GAC1B2pU,EAAuBhqP,GAA4BihH,EAAQ8oI,GAE3DE,OADkB,IAAWxjU,KAAKkjU,eACKljU,KAAKkjU,eAAT,EACvCK,EAAqB50P,SAAS3uE,KAAKg6D,YACnC,IAAIgmI,EAAe7nK,WAAWl+B,GAAO2gE,iBAAiB2oQ,EAAqB3pU,IAAI,IAAI+2B,OAC/EyyS,EAAejrS,WAAWl+B,GAAO2gE,iBAAiBusM,GAAcxlO,cAChEwhS,EAAchrS,WAAWl+B,GAAO2gE,iBAAiBusM,GAActlO,aAC/D4hS,EAAiBzjI,EAAemjI,EAAcC,EAAeI,EAEjE,OADAD,EAAqB7lU,SACd,CACHizB,MAAO8yS,EACPN,YAAaA,EACbC,aAAcA,EAErB,EACDrpH,sBAtNiC,WAuN7B,OAAO/5M,KAAKmiD,WAAWlyC,OAAO,CAACjQ,KAAKk3R,WAAal3R,KAAKk3R,UAAU9U,uBACnE,EACDza,aAAc,WACV3nQ,KAAKmiD,WACLniD,KAAKsnQ,OAAOjrD,WAAWjuI,SAAS6yP,IAChCjhU,KAAK0jU,qBACR,EACDh7D,sBA9NiC,WA+N7B,IAAIi7D,EAAuBC,EAAwBC,EAC/CC,EAAe9jU,KAAKmiD,WACxB,OAAO,QAAUwhR,EAAwB,QAAUC,GAA0BC,EAAmB7jU,KAAKk3R,WAAWxuB,6BAA0B,IAAWk7D,OAAyB,EAASA,EAAuBnlU,KAAKolU,EAAkBC,UAAkB,IAAWH,EAAwBA,EAAwBG,CACrT,EACDh8D,aAAc,WACV,IAAID,EAAc7nQ,KAAKmiD,WACvB,OAAOsD,EAAAA,GAAAA,GAAOzlD,KAAKk3R,UAAUrvB,YAAYA,GAAc,CACnDn4I,MAAO1vH,KAAK+jU,iBACZjtK,aAAa,GAEpB,EACD4sK,oBAAqB,WACjB,GAAK1jU,KAAKsnQ,OAAV,CAGA,IAAIttM,EAAWh6D,KAAKg6D,WAChBgqQ,GAAiBv+Q,EAAAA,GAAAA,GAAO,CAAC,EAAGu2O,GAAMklC,KACtCr0Q,EAAAA,EAAAA,IAAKm3Q,EAAgB,SAASllU,EAAG8F,GAC7Bo1D,EAASqU,YAAY4yP,sBAA8Br8T,EACtD,EAAC9H,KAAKkD,OACPA,KAAKsnQ,OAAOjrD,WAAWjuI,SAAS6yP,sBAA8BjhU,KAAK2sC,OAAO,SAASyhC,SAAS6yP,sBAA8BjhU,KAAKgiU,aAAa5zP,SA7QjH,4BAuQ1B,CAOJ,EACDw5L,oBAAqB,WACjB5nQ,KAAKmiD,WACLniD,KAAKk3R,UAAUvU,oBAClB,EACDtf,sBAAuB,WACnB,OAAOrjQ,KAAKk3R,UAAUrU,wBAA0B7iR,KAAKmiD,UACxD,EACDihN,qBAAsB,WAClB,OAAOpjQ,KAAKk3R,UAAUpU,uBAAyB9iR,KAAKmiD,UACvD,EACD4lN,qBAAsB,WAClB/nQ,KAAKmiD,WACLniD,KAAKk3R,UAAUnU,qBAClB,EACD/a,mBAAoB,WAChBhoQ,KAAKmiD,WACLniD,KAAKk3R,UAAU1U,mBAClB,EACDta,oBAAqB,WACjBloQ,KAAKmiD,WACLniD,KAAKk3R,UAAU1U,oBACfxiR,KAAKk3R,UAAUlU,oBAClB,EACDr7G,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAKyiU,uBAEZ,EACD50E,mBAAoB,SAAS5kP,GACzBjJ,KAAK2sC,OAAO,OAAQ,IACpB3sC,KAAKmiD,SAASl5C,EACjB,EACD2tP,mBAAoB,WAChB,GAAI52P,KAAKgiU,cAAgBd,GAAYC,QACjC,OAAO,EAEX,IAAI1nU,EAAWu+E,GAAAA,OAAev+E,SAE9B,OAD4BuG,KAAK++R,kBAAoB,QAAUtlS,GAAY,YAAcA,GAE9EuG,KAAK2sC,OAAO,YAEhB3sC,KAAKmiD,UACf,EACDwrM,sBAAuB,WACnB,OAAO3tP,KAAKmiD,aAAeniD,KAAK++R,eACnC,EACDjrC,aAAc,WACV,IAAI51P,EAAQ8B,KAAKq2Q,WAAW,SAG5B,OAFAr2Q,KAAK2sC,OAAO,OAAQ3sC,KAAKikU,kBAAkB/lU,IAC3C8B,KAAKk3R,UAAU7T,cACRrjR,KAAKmiD,UACf,EACD0jM,gBAAiB,WACb,IAAI3nP,EAAQ8B,KAAKq2Q,WAAW,SACxBz4N,EAA0B59C,KAAK2sC,OAAO,2BACtCu3R,EAAe7nC,GAAAA,mBAA+Br8R,KAAK2sC,OAAO,SAC1Dw5M,EAAcvoM,EAA0Bg3E,GAAAA,cAAgC12H,EAAO0/C,GAA2By+O,GAAAA,qBAAiCn+R,EAAOgmU,GACtJlkU,KAAKskP,oBAAoB7rN,IAAI0tN,EAChC,EACD89E,kBAAmB,SAAS/lU,GACxB,IACIimU,EADA78S,EAAOtnB,KAAK2sC,OAAO,QAEvB,GAAI,SAAWrlB,EAAM,CACjB,IAAI08P,EAAgBhkR,KAAKk3R,UAAUhV,iBAAiBliR,KAAK2sC,OAAO,kBAChEw3R,EAAgB/7M,GAAAA,OAAwBlqH,EAAO8lR,EAClD,KAAM,CACH,IAAInsN,EAAS73D,KAAKokU,iBAAiB98S,GAE/B68S,EADAtsQ,EACgBuwD,GAAAA,OAAwBlqH,EAAO25D,GAE/BwkO,GAAAA,qBAAiCn+R,EAAOopB,EAE/D,CACD,OAAO68S,CACV,EACDC,iBAAkB,SAAS98S,GACvB,OAAO2jI,GAAU3jI,GAAQ,KAAO+0Q,GAAAA,YAAwB/0Q,EAC3D,EACDqxO,yBAA0B,SAAS1vP,GAC/B,IAAI,EAIAjJ,KAAK2sC,SAHChmC,EADV,EACIA,KACMtB,EAFV,EAEIA,KACiBqzK,EAHrB,EAGIA,gBAEAxjH,EAAel1D,KAAKq2Q,WAAW,SACnC,GAAI1vQ,IAAS3G,KAAKikU,kBAAkB/uQ,GAApC,CAIA,IAAIwyD,EAAa1nH,KAAKqkU,eAAe19T,GACjCzI,EAAQ,OAASg3D,QAAgB,IAAWA,EAAeA,EAAel1D,KAAKskU,oBAC/Ez7R,EAAWwzP,GAAAA,WAAuBn+R,EAAOwpH,EAAYriH,GACrD4uB,EAAOyzF,GAAc,SAAWriH,EAAOwjC,EAAW6+E,EACtD,GAAI1nH,KAAKukU,yBAAyBtwS,GAAMi8G,QAAS,CAC7C,IAAIi0L,EAAgBnkU,KAAKikU,kBAAkBp7R,GACvC3qC,GAAS2qC,GAAY3qC,EAAMw3D,YAAc7sB,EAAS6sB,WAAayuQ,IAAkBx9T,EACjF3G,KAAK8zP,eAEL9zP,KAAKw2Q,UAAU3tO,EAAU5/B,EAEhC,CAZA,MAFGjJ,KAAKwkU,0BAA0BtvQ,EAAcwjH,EAepD,EACD8rJ,0BA3ViC,SA2VPtmU,EAAOw6K,GACxBA,IAAmBA,EAAgB6oF,iBACpCvhQ,KAAKukU,yBAAyBrmU,GAC9B8B,KAAKykU,uBAAuBvmU,GAEnC,EACDomU,kBAAmB,WACf,OAAOtkU,KAAKk3R,UAAUhU,2BAA6BljR,KAAKk3R,UAAU/T,gBACrE,EACDkhD,eAAgB,SAAS19T,GACrB,IAAIq9Q,EAAgBhkR,KAAKk3R,UAAUhV,iBAAiBliR,KAAK2sC,OAAO,kBAC5D+3R,EAAa1kU,KAAKk3R,UAAU5U,cAAc37Q,EAAMq9Q,GACpD,OAAO,OAAS0gD,QAAc,IAAWA,EAAaA,OAAa,CACtE,EACDH,yBAzWiC,SAyWRrmU,GACrB,IACIymU,IADO3kU,KAAK2sC,OAAO,SACC,OAASzuC,EAC7Bw9D,IAAWx9D,IAAS0mU,EAAAA,EAAAA,IAAW1mU,KAAWy9D,MAAMz9D,EAAMw3D,WACtDsoF,EAAgBtiF,GAAUsmB,GAAAA,YAAsB9jF,EAAO8B,KAAKq2Q,WAAW,OAAQr2Q,KAAKq2Q,WAAW,OAAQr2Q,KAAK2sC,OAAO,SACnHujG,GAAWy0L,IAAYzmU,GAAS8/I,EAChC6mL,EAAoB,GAOxB,OANKnpQ,EAEOsiF,IACR6mL,EAAoB7kU,KAAK2sC,OAAO,0BAFhCk4R,EAAoB7kU,KAAK2sC,OAAO,sBAIpC3sC,KAAK8kU,+BAA+B50L,EAAS20L,GACtC,CACH30L,QAASA,EACTx0E,OAAQA,EAEf,EACDopQ,+BA3XiC,SA2XF50L,EAAS20L,GACpC7kU,KAAK2sC,OAAO,CACRujG,QAASA,EACTwoC,gBAAiBxoC,EAAU,KAAO,CAC9BqxH,gBAAgB,EAChBnnQ,QAASyqU,IAGpB,EACDJ,uBAAwB,SAASvmU,GAC7B8B,KAAK+hP,kBAAkBh1L,KAAK,CACxB43L,OAAQ3kP,KACR9B,MAAO8B,KAAK+kU,eAAe7mU,IAElC,EACD8mU,gBAAiB,SAASn8R,GACtB,IAAI+xH,EAAW56J,KAAKq2Q,WAAW,SAG/B,OAFcz7G,GAAYA,EAASllG,cACrB7sB,GAAYA,EAAS6sB,UAEtC,EACDuvQ,eAAgB,SAASp8R,GAGrB,OAFc7oC,KAAK2sC,OAAO,WACZ9D,GAAY7oC,KAAKikU,kBAAkBp7R,IAAa,GAEjE,EACDgrN,aAAc,WACV7zP,KAAKmiD,WACLniD,KAAKqzP,SAASnlL,KAAK,eAAgB,MACtC,EACD82L,mBAAoB,WACXhlQ,KAAK++R,iBACN/+R,KAAKmiD,WAELniD,KAAKk3R,UAAU5T,uBACftjR,KAAKklU,kBAEZ,EACDnB,eAAgB,WACZ,IAAIrxE,EAAc1yP,KAAK2sC,OAAO,eAC9B,GAAI+lN,EACA,OAAOA,EAEX,IAAIrtP,EAAOrF,KAAK2sC,OAAO,QACvB,OAAItnC,IAAS22R,GAAK5nQ,KACPg2F,GAAAA,OAA2B,0CAElC/kH,IAAS22R,GAAK/nQ,MAAQ5uB,IAAS22R,GAAK3nQ,SAC7B+1F,GAAAA,OAA2B,0CAE/B,EACV,EACD86M,iBAAkB,WACdllU,KAAKk3R,UAAU3qP,UACfvsC,KAAKiiU,gBACLjiU,KAAK2sC,OAAO3sC,KAAKk3R,UAAUjV,qBAC3BjiR,KAAK2pK,UACR,EACDqgG,oBAAqB,SAAS/gQ,GAC1B,IAAI/K,EAAQ8B,KAAKk3R,UAAU14P,WAC3Bx+B,KAAKw2Q,UAAUt4Q,EAAO+K,EAAElI,OACxBf,KAAKmiD,UACR,EACDuwF,SAAU,WACN,IAAIyyL,EACJnlU,KAAKmiD,WACL,QAAUgjR,EAAmBnlU,KAAKk3R,iBAAc,IAAWiuC,GAA4BA,EAAiB54R,SAC3G,EACDwyP,cAAe,WACX,OAAO/+R,KAAKgiU,cAAgBd,GAAYE,MAC3C,EACDgE,kBAAmB,WACf,IAAI96D,EACJ,QAAUA,EAAetqQ,KAAKsnQ,cAAW,IAAWgD,GAAwBA,EAAa39N,OAAO,QAAS3sC,KAAK+jU,iBACjH,EACDjkK,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,kBACL,IAAK,UAiDL,IAAK,UAQL,IAAK,WACD4G,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKyiU,wBACL,MAxDJ,IAAK,aACDziU,KAAK+hU,qBAAqB,CACtBJ,WAAY/jU,EAAKM,QAErB8B,KAAKklU,mBACLllU,KAAKwiU,0BACLxiU,KAAKypK,cACL,MACJ,IAAK,OACDzpK,KAAK+hU,qBAAqB,CACtBlqQ,OAAQj6D,EAAKM,QAEjB8B,KAAKklU,mBACLllU,KAAKuiU,sBACLviU,KAAK0jU,sBACL1jU,KAAKyiU,wBACLziU,KAAKu5P,eACL,MACJ,IAAK,cACDv5P,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKolU,oBACL,MACJ,IAAK,MACL,IAAK,MACD,IAAIl1L,EAAUlwI,KAAK2sC,OAAO,WAC1B3sC,KAAKukU,yBAAyBvkU,KAAKq2Q,WAAW,UACzCnmI,GACDlwI,KAAKykU,uBAAuBzkU,KAAKq2Q,WAAW,UAEhDr2Q,KAAKypK,cACL,MACJ,IAAK,0BACL,IAAK,WACL,IAAK,gBACL,IAAK,kBACDzpK,KAAKypK,cACL,MACJ,IAAK,gBACDzpK,KAAK2sC,OAAO,OAAQ3sC,KAAKikU,kBAAkBjkU,KAAKq2Q,WAAW,WAC3Dr2Q,KAAKk2P,oBACL,MACJ,IAAK,OACDl2P,KAAKk3R,UAAU9T,mBAAmBxlR,EAAKM,OACvC8B,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,MAKJ,IAAK,qBACD9X,KAAKyiU,wBACLziU,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,MAKJ,IAAK,kBACD9X,KAAKwnQ,gBAAgB,eAAgBxnQ,KAAK0oQ,yBAC1C,MACJ,IAAK,qBACL,IAAK,wBACL,IAAK,oBACL,IAAK,kBACL,IAAK,sBACD,MACJ,QACI1oQ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAErC,EACDwhQ,wBAAyB,WACrB,IAAIp7Q,EAAQ8B,KAAK2sC,OAAO,SACxB,OAAI3sC,KAAK2sC,OAAO,6BAA8B5sC,EAAAA,GAAAA,KAASskD,oBAC5CrkD,KAAK2sC,OAAO,4BAEnB+rB,EAAAA,EAAAA,IAAUx6D,GACH,UAENwyD,EAAAA,EAAAA,IAASxyD,GAGP02H,GAAAA,2BAA6C12H,QAHpD,CAIH,EACDq7P,aAAc,SAASr7P,GACnB8B,KAAKmiD,WACLniD,KAAKukU,yBAAyB,OAASrmU,QAAS,IAAWA,EAAQA,EAAQ8B,KAAKq2Q,WAAW,SAC9F,EACDG,UAAW,SAASt4Q,EAAOm5N,GACvB,IAAIsxE,EAAiB3oS,KAAKglU,gBAAgB9mU,GAW1C,OAVIyqS,GAAkBtxE,GAClBr3N,KAAK8iP,sBAAsBzrB,GAE1BsxE,IACG3oS,KAAKilU,eAAe/mU,GACpB8B,KAAKu5P,aAAar7P,GACX,KAAO8B,KAAK2sC,OAAO,SAC1B3sC,KAAKykU,uBAAuBvmU,IAG7B8B,KAAKq2Q,WAAW,QAASn4Q,EACnC,EACDm4Q,WAAY,SAAS7mO,EAAYtxC,GAC7B,GAAI,IAAM4Z,UAAUnX,OAChB,OAAOi0H,GAAAA,gBAAkC50H,KAAK2sC,OAAO6C,IAEzDxvC,KAAK2sC,OAAO6C,EAAYxvC,KAAK+kU,eAAe7mU,GAC/C,EACD6mU,eAAgB,SAAS9wS,GACrB,IAAIm2D,EAAsBpqF,KAAKs5Q,0BAC/B,OAAO1kJ,GAAAA,cAAgC3gG,EAAMm2D,EAChD,EACD4tK,YAAa,WACT,IAAI95P,EAAQ8B,KAAK2sC,OAAO,SACxB3sC,KAAKmiD,WACD,OAASjkD,GACT8B,KAAKykU,uBAAuB,KAEnC,EACDj+R,MAAO,WACH,IAAItoC,EAAQ8B,KAAK2sC,OAAO,SACxB3sC,KAAKmiD,WACD,OAASjkD,GACT8B,KAAKukU,yBAAyB,KAErC,ICrmBD1qE,GAAuB,cAEvBwrE,IAAY,EACZC,GDomBJ,GCpmBkBC,QAAoB,CAClCzuH,eADkC,SACnB7tM,GAAG,WACVu8T,EAAmBxlU,KAAKmiD,SAASl5C,GACjCw8T,EAAsB,SAAAx8T,GACtB,IAAIy8T,EAAkBF,EAAiBl/K,GAAiBr9I,IACxD,OAAOy8T,GAAmBA,EAAgB3tT,MAAM,EAAM,CAAC9O,GAC1D,EACG08T,EAAe,SAAC18T,EAAG28T,GACnB,OAAI,EAAKC,0BAA0B58T,GACxBw8T,EAAoB1tT,MAAM,EAAM,CAAC9O,IAEjC28T,EAAY7tT,MAAM,EAAM,CAAC9O,GAEvC,EACD,OAAOw8C,EAAAA,GAAAA,GAAO,CAAC,EAAG+/Q,EAAkB,CAChCpnE,IAAK,SAAAn1P,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GACtB,EAAK+kU,YAlBP,GAmBE,EAAKC,kBAAoBhlU,EAAMo7D,gBAClC,GAHK,EAIN8nF,UAAW,SAAAh7I,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GAC5B,EAAK+kU,YAAYT,IACjB,EAAKU,kBAAoBhlU,EAAMo7D,gBAClC,GAHW,EAIZmoF,KAAM,SAAAr7I,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GACvB,EAAKilU,mBACLjlU,EAAMo7D,gBACT,GAHM,EAIPjyD,IAAK,SAAAjB,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GACtB,EAAKklU,kBACLllU,EAAMo7D,gBACT,GAHK,EAINr6D,OAAQ,SAAAmH,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GACzB,EAAKmlU,eAAenlU,EACvB,GAFQ,EAGTojJ,MAAO,SAAAl7I,GAAC,OAAI08T,EAAa18T,GAAG,WACxB,EAAKk9T,eACR,GAFO,EAGR34G,UAAW,SAAAvkN,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GAC5B,EAAKqlU,gBAAgBf,IACrBtkU,EAAMo7D,gBACT,GAHW,EAIZsxJ,WAAY,SAAAxkN,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GAC7B,EAAKqlU,gBA5CP,GA6CErlU,EAAMo7D,gBACT,GAHY,EAIbuxJ,QAAS,SAAAzkN,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GAC1B,EAAKslU,oBAhDP,GAiDEtlU,EAAMo7D,gBACT,GAHS,EAIVwxJ,UAAW,SAAA1kN,GAAC,OAAI08T,EAAa18T,GAAG,SAAAlI,GAC5B,EAAKslU,oBAAoBhB,IACzBtkU,EAAMo7D,gBACT,GAHW,GAKnB,EACD0pQ,0BAvDkC,SAuDR58T,GACtB,IAAIq9T,EAA0BtmU,KAAK2sC,OAAO,WAAa1jC,IAAM,IAAM,CAAC,YAAa,OAAO7H,QAAQklJ,GAAiBr9I,IACjH,OAAQjJ,KAAK6+P,oBAAsBynE,GAA2Br9T,GAAKA,EAAEurB,MACxE,EACD6xS,oBA3DkC,SA2DdtqS,GAChB/7B,KAAKumU,qBACL,IAAIC,EAAgBxmU,KAAKymU,oBAAoBzmU,KAAK0mU,mBAE9CzlP,EADejhF,KAAKymU,sBACGD,EAC3BxmU,KAAK2mU,eAAe3mU,KAAK0mU,mBACzB1mU,KAAK4mU,cAAc3lP,EAAQllD,GAAM,EACpC,EACD6hI,mBAnEkC,WAoE9B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BkiP,iBAAiB,EACjBwiC,eAAgB,IAAI/jU,KAAK,IAAK,EAAG,EAAG,EAAG,EAAG,IAEjD,EACDgkU,iBAzEkC,SAyEjB9vT,GACb,IACmBkrD,EAEflrD,EAFAkrD,cACKyiF,EACL3tI,EADA2tI,IAEAriJ,EAAM4/D,EAAc5nE,MAAQ4nE,EAAc5/D,IAC9C,MAAO,kBAAoBA,GAAO,IAAMA,EAAI3B,SAAWgkJ,IAAQkC,GAAoB3kF,EACtF,EACD6kQ,kBAjFkC,SAiFhB99T,GACd,IAAI+9T,EACA1sU,EAAO,QAAU0sU,EAAmB/9T,EAAEi5D,qBAAkB,IAAW8kQ,OAAmB,EAASA,EAAiB1sU,KACpH,OAAO,KAAO,OAASA,QAAQ,IAAWA,OAAO,EAASA,EAAKqG,SAAWm3B,SAASx9B,EAAM,GAC5F,EACD2sU,qBAAsB,WAClB,OAAOjvP,GAAAA,OAAetD,OACzB,EACDwyP,iBAzFkC,SAyFjBj+T,EAAG3G,GAChB,IAAI6kU,EAAgBnnU,KAAKqzP,SAAS56N,MAClCz4B,KAAKonU,iBAAiB9kU,GACtB2G,EAAEkzD,iBACmBgrQ,IAAkBnnU,KAAKqzP,SAAS56N,OACnC8lC,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,QACzD,EACDn5C,iBAhGkC,SAgGjBjxM,GAAG,WACZ3G,EAAM2G,EAAEi5D,cAAc5/D,IACtBkB,EAASxD,KAAKmiD,SAASl5C,GAC3B,OAAKjJ,KAAK6+P,oBAAsB7+P,KAAKinU,yBAGjCnpT,GAAQD,QAAU,YAAc5U,EAAE3G,KAAO,IAAM2G,EAAE5O,KAAK+G,QAAQ,UAC9DkB,EAAM2G,EAAE5O,KAAKuH,QAAQ,QAAS,IAC9B5B,KAAKonU,iBAAiB9kU,GACtBtC,KAAKqnU,kBAAoB,WACrB,EAAKC,qBACR,GACMtnU,KAAK8mU,iBAAiB79T,IAC7BjJ,KAAKknU,iBAAiBj+T,EAAEi5D,cAAe5/D,IAThCkB,CAYd,EACD+jU,wBAjHkC,SAiHVt+T,GAAG,WACvBjJ,KAAKqnU,kBAAoB,KACzB,IACep8K,EACXhiJ,EAAEi5D,cADF+oF,UAEA,0BAA4BA,IAC5BjrJ,KAAKqnU,kBAAoB,WACrB,EAAKC,qBACR,GAEL,IAAIE,EAAqB,0BAA4Bv8K,EAErD,GAAIu8K,GADoB,yBAA2Bv8K,EACN,CACzC,IAAIrkI,EAAY4gT,EAAqBnC,GAhInC,EAiIFrlU,KAAKqnU,kBAAoB,WACrB,EAAKvB,cACL,EAAKM,gBAAgBx/S,EACxB,CACJ,CACD,GAAK5mB,KAAK6+P,oBAAuB7+P,KAAK8mU,iBAAiB79T,GAAvD,CAGA,IAAI3G,EAAM2G,EAAEi5D,cAAc5nE,KAE1B,OADA0F,KAAKknU,iBAAiBj+T,EAAG3G,IAClB,CAHN,CAIJ,EACD41P,iBA3IkC,SA2IjBjvP,GACb,IACmBlI,EACfkI,EADAi5D,cAEA,2BAA6B,OAASnhE,QAAS,IAAWA,OAAQ,EAASA,EAAMkqJ,YAAcjrJ,KAAK+mU,kBAAkB99T,KACtHjJ,KAAKonU,iBAAiBrmU,EAAMzG,MAC5B0F,KAAKm2P,mBAAmBn2P,KAAKikU,kBAAkBjkU,KAAKynU,aACpDznU,KAAKomU,mBAETpmU,KAAKmiD,SAASl5C,GACVjJ,KAAKqnU,oBACLrnU,KAAKqnU,oBACLrnU,KAAKqnU,kBAAoB,KAEhC,EACDD,iBA1JkC,SA0JjB9kU,GACTtC,KAAK+lU,mBACL/lU,KAAK0nU,iBAAmB,GAE5B1nU,KAAKumU,qBACD5qQ,MAAM7jC,SAASx1B,IACftC,KAAK2nU,cAAcrlU,GAEnBtC,KAAK4nU,cAActlU,EAE1B,EACDyjU,eArKkC,WAsK9B,IAAI16T,EAAQrL,KAAKo6P,SACjB,OAAO/uP,EAAMnB,IAAMmB,EAAMkxB,QAAUv8B,KAAK2sC,OAAO,QAAQhsC,MAC1D,EACDykS,kBAzKkC,WA0K9B,GAAIplS,KAAK6nU,eACL,OAAO7nU,KAAK6nU,eAEhB,IAAIhwQ,EAAS73D,KAAKk3R,UAAUhV,iBAAiBliR,KAAK2sC,OAAO,kBACrD06P,GAAgB32O,EAAAA,EAAAA,IAASmH,KAAYuwD,GAAAA,oBAAqCvwD,GAQ9E,OANI73D,KAAK6nU,eADLxgC,EACsBxvO,EAEA2oD,IAAW,SAAStiH,GACtC,OAAOkqH,GAAAA,OAAwBlqH,EAAO25D,EACzC,IAEE73D,KAAK6nU,cACf,EACDtB,mBAxLkC,WAyL9B,IAAKvmU,KAAKynU,WAAY,CAClB,IAAIvpU,EAAQ,SAAW8B,KAAK2sC,OAAO,QAAU,IAAI7pC,KAAK,MAAQ,IAAIA,KAClE9C,KAAKynU,WAAavpU,EAClB8B,KAAK0mU,kBAAoBxoU,EACzB8B,KAAK8nU,kBACR,CACJ,EACDC,mBAhMkC,SAgMftwS,GACf,IAAImwN,EAAiBn+O,OAAOguB,GAAK92B,OAC7BqnU,EAAehoU,KAAKioU,mBAAmB,WAAWtnU,OAElDunU,EADgB,IAAMF,EACYpgF,EAAiBr+O,KAAKsZ,IAAImlT,EAAcpgF,GAC1EugF,EAAmBnoU,KAAK8iG,aAAaniG,SAAWunU,EAChDE,EAAoBtwS,SAAS93B,KAAK8iG,aAAe,KAAOrrE,EAC5D,OAAO0wS,GAAoBC,CAC9B,EACDR,cAzMkC,SAyMpB92Q,GACV,IACSr5B,EACLz3B,KAAKqoU,uBADL5wS,IAEAmwN,EAAiBn+O,OAAOguB,GAAK92B,OACjCX,KAAK8iG,cAAgB9iG,KAAK8iG,aAAehyC,GAAM9rD,QAAQ4iP,GACnDjsL,MAAM37D,KAAK8iG,gBACX9iG,KAAK8iG,aAAehyC,GAExB9wD,KAAKsoU,oBAAoBtoU,KAAK8iG,cAC1B9iG,KAAK+nU,mBAAmBtwS,IACxBz3B,KAAKomU,gBAtNH,EAwNT,EACDuB,cAvNkC,SAuNpB72Q,GACV,GAAK6K,MAAM7jC,SAAS93B,KAAKioU,mBAAmB,UAA5C,CAMA,IAHA,IAAIhgF,EAASjoP,KAAKioU,mBAAmB,SAAxBjoU,CAAkCA,KAAKynU,YAChDc,EAAcvoU,KAAK8iG,aAAehyC,EAAKt8C,cACvCg0T,EAAWvgF,EAAOxwN,IAAMwwN,EAAOplO,IAC1Bla,EAAI,EAAGA,GAAK6/T,EAAU7/T,IAG3B,GAFA3I,KAAK2mU,eAAe3mU,KAAK0mU,mBACzB1mU,KAAK4mU,cAAcj+T,EAAI,GACnB,IAAM3I,KAAKioU,mBAAmB,QAAQzzT,cAAcpT,QAAQmnU,GAE5D,YADAvoU,KAAK8iG,aAAeylO,GAI5BvoU,KAAKumU,qBACDvmU,KAAK8iG,eACL9iG,KAAKyoU,oBACLzoU,KAAK2nU,cAAc72Q,GAftB,CAiBJ,EACD23Q,kBA5OkC,WA6O9BzoU,KAAK8iG,aAAe,EACvB,EACDgjO,YAAa,SAASl/S,GAClB,IAAK5mB,KAAK+lU,iBAAkB,CACxB,IAAIv+M,EAASxnH,KAAKymU,oBAAoBzmU,KAAK2sC,OAAO,mBAClD3sC,KAAKsoU,oBAAoB9gN,GACzBxnH,KAAKomU,gBAAgBx/S,EACxB,CACD5mB,KAAKyoU,mBACR,EACD5pE,iBAvPkC,WAwP9B,OAAO7+P,KAAK2sC,OAAO,oBAAsB,SAAW3sC,KAAK2sC,OAAO,OACnE,EACD+7R,mBA1PkC,WA2P9B1oU,KAAK2oU,YAAc9lN,GAAc7iH,KAAKolS,oBAAqBh9K,IAC3D,IAAIjF,EAASnjH,KAAK2oU,YAAYxlN,OAC1B57E,EAAS47E,EAAO57E,OAChB0yI,EAAQ92D,EAAO82D,MACf2uJ,EAAmB,IAAIhxS,OAAO,wBAC9BixS,EAAkBthS,EAAOllC,MAAMumU,GAAkB7kU,KAAI,SAAA+kU,GAAU,OAAIF,EAAiBxyT,KAAK0yT,GAAcA,EAAattN,GAAAA,cAAiCstN,GAAY,EAAlG,IAA0Gr8T,KAAK,IAClLzM,KAAK2oU,YAAYxlN,OAAS,IAAIvrF,OAAOixS,EAAiB5uJ,EACzD,EACD8uJ,eAnQkC,WAoQ9B/oU,KAAK0nU,iBAAmB,EACxB1nU,KAAK6nU,eAAiB,KACtB7nU,KAAK0oU,qBACL1oU,KAAK2mU,gBACR,EACD5nE,YAzQkC,WA0Q9B/+P,KAAKmiD,WACLniD,KAAKgpU,oBACLhpU,KAAKipU,kBACDjpU,KAAK6+P,qBACL7+P,KAAKkpU,oBACLlpU,KAAK+oU,iBACL/oU,KAAK8nU,mBAEZ,EACDA,iBAnRkC,WAoR9B,GAAK9nU,KAAK6+P,mBAAV,CAGA,IAAIl4P,EAAO3G,KAAK2sC,OAAO,SAAW3sC,KAAKikU,kBAAkBjkU,KAAKynU,YAC1D9gU,IACA3G,KAAKmpU,WAAathF,GAAgBlhP,EAAM3G,KAAK2oU,aACxC3oU,KAAKqzP,SAASpkL,GAAG,YAClBjvE,KAAKomU,kBALZ,CAQJ,EACD4C,kBA/RkC,WAgS9BzqQ,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAU,eACnC,EACD61E,kBAlSkC,WAkSd,WAChB3qQ,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU7vG,GAAa,UAAWq2G,IAAuB75P,KAAKopU,kBAAkBtsU,KAAKkD,OAC1Gu+D,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU7vG,GAAa,QAASq2G,IAAuB75P,KAAKqpU,kBAAkBvsU,KAAKkD,OACxGu+D,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU7vG,GAAa,OAAQq2G,KAAuB,WACvE,EAAKytE,qBACR,IACD/oQ,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU7vG,GAAa,iBAAkBq2G,IAAuB75P,KAAKspU,2BAA2BxsU,KAAKkD,OACtHA,KAAKinU,wBACL1oQ,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU7vG,GAAa,cAAeq2G,IAAuB75P,KAAKunU,wBAAwBzqU,KAAKkD,MAE3H,EACDsnU,oBA7SkC,WA8S9BtnU,KAAKm2P,mBAAmBn2P,KAAKikU,kBAAkBjkU,KAAKynU,aACpDznU,KAAKomU,iBACR,EACDH,gBAjTkC,WAkT1BjmU,KAAK2sC,OAAO,UACZ3sC,KAAK0nU,iBAAmB1nU,KAAKmpU,WAAWxoU,OACxCX,KAAKomU,gBAAgBf,IAE5B,EACDW,iBAvTkC,WAwT1BhmU,KAAK2sC,OAAO,UACZ3sC,KAAK0nU,kBAAoB,EACzB1nU,KAAKomU,gBA5TH,GA8TT,EACDznE,cA7TkC,SA6TpB11P,GACNjJ,KAAK6+P,oBACL7+P,KAAK4mU,cAAc39T,EAAEg4E,MAAQ,EAjU3B,EAiUyCokP,GAAUp8T,EAE5D,EACDm9T,gBAlUkC,WAmU9B,IAAIrqS,EAAOjkB,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,EAC5E,GAAK9X,KAAK2sC,OAAO,UAAW3sC,KAAKgkG,UAAjC,CAGIjoE,IACA/7B,KAAK0mU,kBAAoB,IAAI5jU,KAAK9C,KAAKynU,aAE3C,IAAItmU,EAAQy6E,GAAa57E,KAAK0nU,iBAAmB3rS,EAAM,EAAG/7B,KAAKmpU,WAAWxoU,OAAS,GACnF,GAAIX,KAAKmpU,WAAWhoU,GAAO6mP,OAAQ,CAC/B,IAAIuhF,EAAkB,IAAMpoU,GAAS46B,EAAO,GAAK56B,IAAUnB,KAAKmpU,WAAWxoU,OAAS,GAAKo7B,EAAO,EAChG,IAAKwtS,EAED,YADAvpU,KAAKomU,gBAAgBrqS,GAAQ,EAAIA,EAAO,EAAIA,EAAO,GAGnD56B,EAAQnB,KAAK0nU,gBAEpB,CACG1nU,KAAK0nU,mBAAqBvmU,GAC1BnB,KAAKyoU,oBAETzoU,KAAK0nU,iBAAmBvmU,EACxBnB,KAAKo6P,OAAOp6P,KAAKioU,mBAAmB,SAlBnC,CAmBJ,EACDuB,sBA1VkC,WA2V9B,GAAI,MAAQxpU,KAAKioU,mBAAmB,WAAW,GAC3C,MAAO,IAEd,EACDI,qBA/VkC,SA+VboB,GAEjB,OADoBzpU,KAAKioU,mBAAmB,SACrCyB,CAAc1pU,KAAKynU,WAAYgC,GAAkBzpU,KAAKwpU,wBAChE,EACD/C,oBAnWkC,SAmWdjwD,GAChBA,EAAYA,GAAax2Q,KAAKynU,WAC9B,IAAI7yQ,EAAS50D,KAAKioU,mBAAmB,UACrC,OAAOp5Q,EAAAA,EAAAA,IAAW+F,GAAUA,EAAO4hN,GAAaA,EAAU5hN,IAC7D,EACD+0Q,kBAxWkC,SAwWhBzrU,GACd,IAAI0rU,EAAS5pU,KAAK8iG,aAAa7zF,MAAM,OACjCg5O,EAASjoP,KAAKqoU,uBACdzgF,EAAiBn+O,OAAOw+O,EAAOxwN,KAAK92B,OACxC,QAASipU,GAAUA,EAAO,IAAM,IAAMngU,OAAOvL,IAAQ8G,QAAQ4iP,EAChE,EACD0gF,oBA9WkC,SA8WdpqU,EAAOs4Q,GACvBA,EAAYA,GAAax2Q,KAAKynU,WAC9B,IAAIrzM,EAASp0H,KAAKioU,mBAAmB,UACjChgF,EAASjoP,KAAKqoU,uBAClBnqU,EAAQ+9E,GAAQ/9E,EAAO+pP,EAAOplO,IAAKolO,EAAOxwN,KAAOv5B,EAAQA,EAAQ,GACjEA,EAAQ8B,KAAK2pU,kBAAkB/tP,GAAa19E,EAAO+pP,EAAOplO,IAAKolO,EAAOxwN,OACtEo3B,EAAAA,EAAAA,IAAWulE,GAAUA,EAAOoiJ,EAAWt4Q,GAASs4Q,EAAUpiJ,GAAQl2H,GAClE8B,KAAKm2P,mBAAmBn2P,KAAKikU,kBAAkBztD,IAC/Cx2Q,KAAK8nU,kBACR,EACDG,mBAxXkC,SAwXf96T,GACf,GAAKnN,KAAKmpU,YAAenpU,KAAKmpU,WAAWnpU,KAAK0nU,kBAG9C,OAAO1nU,KAAKmpU,WAAWnpU,KAAK0nU,kBAAkBv6T,EACjD,EACDw5T,eA9XkC,WA+X9B,IAAIzoU,EAAQ4Z,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKq2Q,WAAW,SAC7Fr2Q,KAAKynU,WAAavpU,GAAS,IAAI4E,KAAK5E,GACpC8B,KAAK0mU,kBAAoBxoU,GAAS,IAAI4E,KAAK5E,EAC9C,EACD2rU,eAnYkC,WAoY9B,IAAI3rU,EAAQ8B,KAAKynU,YAAc,IAAI3kU,KAAK9C,KAAKynU,YACzCvpU,GAAS,SAAW8B,KAAK2sC,OAAO,SAChCzuC,EAAMghF,SAAS,EAAG,EAAG,EAAG,GAE5Bl/E,KAAK0mU,kBAAoB,IAAI5jU,KAAK5E,GAClC8B,KAAKq2Q,WAAW,QAASn4Q,EAC5B,EACDgoU,eA3YkC,WA4Y9BlmU,KAAK2mU,iBACL3mU,KAAKm2P,mBAAmBn2P,KAAKikU,kBAAkBjkU,KAAKynU,aACpDznU,KAAK8nU,kBACR,EACD3xE,mBAhZkC,SAgZfxvP,GACf3G,KAAKmiD,SAASx7C,GACV3G,KAAK6+P,oBACL7+P,KAAK2sC,OAAO,OAAQhmC,EAE3B,EACDigU,cAtZkC,SAsZpB7qS,EAAM0tS,GAChBzpU,KAAKumU,qBACL,IAAI,EAGAvmU,KAAKqoU,qBAAqBoB,GAFrBhyS,EADT,EACIA,IACK5U,EAFT,EAEIA,IAEAinT,EAAaryS,EAAM5U,EACnB,IAAMinT,GACNA,IAEJ,IAAIjhS,EAAW9M,EAAO/7B,KAAKymU,sBACvB59R,EAAWpR,EACXoR,EAAW7oC,KAAK+pU,aAAalhS,EAAU,CACnCmhS,UAAWnnT,EACXonT,aAAcxyS,EACdqyS,WAAYA,IAETjhS,EAAWhmB,IAClBgmB,EAAW7oC,KAAK+pU,aAAalhS,EAAU,CACnCmhS,UAAWvyS,EACXwyS,aAAcpnT,EACdinT,WAAYA,KAGpB9pU,KAAKsoU,oBAAoBz/R,EAC5B,EACDkhS,aAhbkC,SAgbrBlhS,EAAU67H,GACnB,IACeslK,EAGXtlK,EAHAslK,UACcC,EAEdvlK,EAFAulK,aAGAhpP,GAASp4C,EAAWohS,GADpBvlK,EADAolK,WAGJ,OAAO7oP,EAAQ+oP,EAAY/oP,EAAQ,EAAIrwB,GAAKqwB,GAASgpP,CACxD,EACDb,kBAzbkC,WA0b9BppU,KAAK2mU,eAAe3mU,KAAKynU,YACrBznU,KAAK2sC,OAAO,UACZ3sC,KAAK0nU,iBnGnUuB,SAAC9gP,EAAWp8E,GAChD,IAAK,IAAI7B,EAAI,EAAGA,EAAIi+E,EAAUjmF,OAAQgI,IAAK,CACvC,IAAIuhU,EAAetjP,EAAUj+E,GAAG0C,MAAMnB,KAAOM,EAC7C,IAAKo8E,EAAUj+E,GAAGq/O,QAAUkiF,EACxB,OAAOvhU,CAEd,CACD,OAAO,IACV,CmG2TmCwhU,CAA2BnqU,KAAKmpU,WAAYnpU,KAAKo6P,SAAS79N,OAC7Ev8B,KAAK+lU,oBACF13Q,EAAAA,EAAAA,IAAUruD,KAAK0nU,kBACf1nU,KAAKo6P,OAAOp6P,KAAKioU,mBAAmB,UAEpCjoU,KAAKimU,mBAIpB,EACDqD,2BAtckC,SAscPrgU,GAAG,WAC1BjJ,KAAKqzP,SAAS56N,IAAIz4B,KAAKikU,kBAAkBjkU,KAAKynU,aAC9CznU,KAAKomU,kBACLpmU,KAAKqnU,kBAAoB,WACrB,EAAKC,qBACR,CACJ,EACD+B,kBA7ckC,SA6chBpgU,GACd,IAAIsiS,EAAUvrS,KAAKkgQ,qBAAqBlgQ,KAAK2sC,OAAO,QAAS3sC,KAAKo6P,SAAUnhL,GAAchwE,IACtFgrB,EAAOm0F,GAAAA,MAAuBmjL,EAASvrS,KAAKolS,qBAC5CnxQ,GAAQj0B,KAAKoqU,aAAan2S,KAC1Bj0B,KAAKynU,WAAaxzS,EAClBj0B,KAAKm2P,mBAAmBn2P,KAAKikU,kBAAkBjkU,KAAKynU,aACpDznU,KAAK8nU,mBACL9nU,KAAKomU,mBAETn9T,EAAEkzD,gBACL,EACDiuQ,aAAc,SAAAn2S,GAAI,OAAIynC,EAAAA,EAAAA,IAAOznC,KAAU0nC,MAAM1nC,EAA3B,EAClBo2S,cAzdkC,WA0d9B,IAAInsU,EAAQ8B,KAAKq2Q,WAAW,SAC5B,OAAQr2Q,KAAKynU,YAAcznU,KAAKynU,WAAW/xQ,cAAgBx3D,GAASA,EAAMw3D,UAC7E,EACD40Q,iBA7dkC,WA8d9BtqU,KAAKyoU,oBACDzoU,KAAKqqU,iBACL9rQ,EAAAA,EAAAA,QAAqBv+D,KAAKqzP,SAAU,SAE3C,EACD8yE,cAnekC,WAoe9BnmU,KAAKsqU,mBACLtqU,KAAKomU,gBAveC,EAweT,EACD1sH,iBAvekC,SAuejBzwM,GACejJ,KAAK6+P,qBAAuB51P,EAAEg6D,sBAEtDjjE,KAAKsqU,mBACLtqU,KAAKmiD,SAASl5C,GACdjJ,KAAKgmU,iBAAiB/8T,IAEtBjJ,KAAKmiD,SAASl5C,EAErB,EACD0vP,yBAjfkC,SAifT1vP,GACrB,IAAItC,EAAO3G,KAAK2sC,OAAO,QACnB3sC,KAAK6+P,oBACL7+P,KAAK8iP,sBAAsB75O,GACtBtC,EAEM,OAAS3G,KAAKynU,YACrBznU,KAAK2mU,eAAehgU,GAFpB3G,KAAKynU,WAAa,KAItBznU,KAAK6pU,kBAEL7pU,KAAKmiD,SAASl5C,EAErB,EACD62J,eA/fkC,SA+fnBliK,GACX,OAAQA,EAAKxE,MACT,IAAK,kBACD4G,KAAK++P,cACL,MACJ,IAAK,gBACL,IAAK,OACD/+P,KAAKmiD,SAASvkD,GACdoC,KAAK++P,cACL,MACJ,IAAK,QACD/+P,KAAK2mU,iBACL3mU,KAAKmiD,SAASvkD,GACdoC,KAAK8nU,mBACL,MACJ,IAAK,iBACD,MACJ,QACI9nU,KAAKmiD,SAASvkD,GAEzB,EACDqrU,gBAphBkC,WAqhB9BjpU,KAAKyoU,2BACEzoU,KAAKmpU,kBACLnpU,KAAK0nU,wBACL1nU,KAAKynU,UACf,EACDjhS,MA1hBkC,WA2hB9BxmC,KAAKipU,kBACLjpU,KAAK0nU,iBAAmB,EACxB1nU,KAAKmiD,UACR,EACDmnH,OA/hBkC,WAgiB9BtpK,KAAKmiD,WACLniD,KAAKgpU,oBACLhpU,KAAKipU,iBACR,IAEL,MC5kBAz2J,GAAkB,YAAa8yJ,IAC/B,ICFA,GDEA,GEOqBiF,GAAAA,WACjB,cAAc,eACVvqU,KAAKy2C,KAAO,CAAC,CAChB,mDACD,SAAoBid,GAChB,IAAIlwD,EAWJ,OAVAqpD,EAAAA,EAAAA,IAAK7sD,KAAKy2C,MAAO,SAASsnB,EAAM/mD,GAC5B,IACoBwzT,EAEhBxzT,EAFAwzT,eACM5lU,EACNoS,EADApS,KAEJ,GAAI8uD,EAAU9uD,GAEV,OADApB,EAASgnU,GACF,CAEd,IACMhnU,CACV,sCACD,SAAsBjG,EAAUw6I,GAC5B,IAAIv0I,EAOJ,OANAqpD,EAAAA,EAAAA,IAAK7sD,KAAKy2C,MAAO,SAASn0C,EAAKpE,GAC3B,GAAIX,EAASW,GAET,OADAsF,EAAS,SAAWu0I,EAAYz1I,EAAMpE,EAAM65I,IACrC,CAEd,IACMv0I,CACV,sBACD,WACIxD,KAAKy2C,KAAO,CAAC,CAChB,mCACD,SAAmBg0R,GAAkB,YACjC59Q,EAAAA,EAAAA,IAAK49Q,EAAiB37O,YAAY,SAAA/wB,GAAI,OAAI,EAAK2sQ,gBAAgB3sQ,EAAzB,GACzC,gCACD,SAAgBz7D,UACLtC,KAAKy2C,KAAKn0C,EACpB,oBACD,SAAIlF,GACA,IAAIkF,EAAMlF,EAAQ2gE,MAAQ,IAAI7R,GAAAA,EAE9B,OADAlsD,KAAKy2C,KAAKn0C,GAAOlF,EACVkF,CACV,qCACD,SAAqBmoU,GAAkB,WACnCA,EAAiB59Q,MAAK,SAACvqD,EAAKqoU,GACpB,EAAKl0R,KAAKn0C,IACNqoU,EAAgBH,iBAChB,EAAK/zR,KAAKn0C,GAAKkoU,eAAiBG,EAAgBH,gBAEpD,EAAK/zR,KAAKn0C,GAAKqyN,eAAiBg2G,EAAgBh2G,gBAEhD,EAAK5mL,IAAI,CACLnpC,KAAM+lU,EAAgB/lU,KACtB4lU,eAAgBG,EAAgBH,eAChCzsQ,KAAMz7D,EACNqyN,eAAgBg2G,EAAgBh2G,gBAG3C,GACJ,2CACD,SAA2BryN,EAAKlF,GACxB4C,KAAKy2C,KAAKn0C,KACVtC,KAAKy2C,KAAKn0C,IAAOmjD,EAAAA,GAAAA,GAAOzlD,KAAKy2C,KAAKn0C,GAAMlF,GAE/C,yCACD,SAAyBwH,GACrB,OAAO5E,KAAK4qU,qBAAoB,SAAAC,GAAU,OAAIA,IAAejmU,CAAnB,GAC7C,kDACD,SAAkCkmU,GAC9B,OAAO9qU,KAAK+qU,uBAAsB,SAAArmK,GAI9B,OADIA,EADA/hK,OAEYmoU,CACnB,GAAE,gBACN,8BACD,SAAcA,GACV,OAAO9qU,KAAK+qU,uBAAsB,SAAAjlL,GAI9B,OADIA,EADAnjJ,OAEYmoU,CACnB,GAAE,OACN,yCACD,SAAyB1xU,GACrB,OAAO4G,KAAK4qU,qBAAoB,SAAAhmU,GAAI,OAAIxL,IAASwL,EAAKxL,IAAlB,GACvC,8CACD,SAA8B4xU,GAC1B,OAAOhrU,KAAK4qU,qBAAoB,SAAAhmU,GAAI,OAAIomU,MAAet6Q,EAAAA,EAAAA,IAAS9rD,GAAQA,EAAOA,EAAKomU,UAAhD,GACvC,wCACD,SAAwBpmU,GACpB,IAAK,IAAItC,KAAOtC,KAAKy2C,KACjB,GAAIz2C,KAAKy2C,KAAKn0C,GAAKsC,OAASA,EACxB,OAAO5E,KAAKy2C,KAAKn0C,GAAKqyN,eAG9B,OAAO,IACV,oCACD,SAAoBs2G,GAChB,OAAOjrU,KAAK+qU,uBAAsB,SAAAxkL,GAI9B,OADIA,EADA3hJ,OAEYqmU,CACnB,GAAE,YACN,uCACD,SAAuBrmU,GACnB,OAAO5E,KAAK+qU,uBAAsB,SAAApkL,GAI9B,OADIA,EADA/hJ,OAEmBA,CAC1B,GAAE,eACN,yBACD,WACI,OAAO5E,KAAKy2C,IACf,qBACD,SAAK31C,IACD+rD,EAAAA,EAAAA,IAAK7sD,KAAKy2C,MAAO,SAASn0C,EAAKqoU,GAC3B7pU,EAAQwB,EAAKqoU,EAChB,GACJ,2CACD,SAA2BhoU,GAAM,WAClB3E,OAAOgB,KAAKgB,KAAKy2C,MACJjc,QAAO,SAAAl4B,GAC3B,QAAI,EAAKm0C,KAAKn0C,GAAKK,MACR,EAAK8zC,KAAKn0C,GAAKK,KAAKvB,QAAQuB,EAAM,IAAM,CAGtD,IACYjC,SAAQ,SAAA4B,GAAG,OAAI,EAAKooU,gBAAgBpoU,EAAzB,GAC3B,OAlIgBioU,GCNVW,GAAc,SAChBlxQ,EAAUxvD,GACX24I,GAAKnpF,EAAU,CACXp1B,KAAMp6B,GAEb,EAEM+gJ,GAAY,SACZvxF,EAAUxvD,EAAUqhB,EAAUs/S,GACjCj6H,GAAAA,QAAWl3I,EAAU,CACjB30D,KAAM,QACNmyG,GAAI,CACA5yE,KAAMp6B,GAEVqhB,SAAUA,EACVlK,SAAUwpT,GAEjB,EAVM5/K,GAAY,SAWVvxF,GACLk3I,GAAAA,KAAQl3I,GAAU,EACrB,ECaDoxQ,GAAkB,eAClBC,GAA0B,uBAC1BC,GAAiC,8BACjCC,GAAuB,oBAIvBC,GAAW,SAAAttU,GAAK,OAAKA,CAAL,EAEhButU,GAAYr+G,GAAAA,QAAyB,CACrCjU,iBAAkB,qBAClBrC,eAAgB,WACZ,OAAOrxJ,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3ByrK,OAAQ9rM,GAAAA,KACR+rM,SAAU/rM,GAAAA,MAEjB,EACD87I,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B2+H,cAAe,EACf4qJ,cAAc,EACdC,kBAAkB,EAClB56G,MAAM,EACNzR,gBAAgB,EAChBsP,gBAAiB,CACb18L,KAAM,YAEVi8L,eAAe,EACfD,eAAe,EACfgZ,cAAe,SACfC,mBAAmB,EACnBC,eAAe,GAEtB,EACDtpE,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,KAG9B,EACDq1K,WAAY,WACR,OAAO+3G,EACV,EACD35G,aAAc,WACV,MA3CsB,qBA4CzB,EACD0B,eAAgB,WACZ,OAAOtzN,KAAK4rU,eACf,EACDj7G,cAAe,WACX,OAAO3wN,KAAKszN,iBAAiBvoN,SAAS/K,KAAK4zN,gBAC9C,EACDi4G,WAAY,WAIR,OAHK7rU,KAAK8rU,kBACN9rU,KAAK8rU,gBAAkBlhQ,GAAS5qE,KAAK48M,YAElC58M,KAAK8rU,eACf,EACDC,qBAAsB,kBACX/rU,KAAK8rU,eACf,EACDE,YAAa,WACT,OAAOhsU,KAAK2sC,OAAO,SAAShsC,MAC/B,EACDsrU,gBAAiB,SAAS9qU,GACtB,IAAI0K,EAAQ7L,KAAKgsU,cAOjB,OANI7qU,EAAQ,IACRA,GAAS0K,GAET1K,GAAS0K,IACT1K,GAAS0K,GAEN1K,CACV,EACD+qU,sBAAuB,WACnB,OAAOlsU,KAAK2sC,OAAO,eAAiB,EAAI,CAC3C,EACD42D,MAAO,WACHvjG,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAIkiD,EAAWh6D,KAAKg6D,WACpBA,EAASoU,SAASg9P,IAClBprU,KAAK48M,UAAY7rI,GAAE,SAAS3C,SAASi9P,IACrCrrU,KAAK48M,UAAUjuI,SAAS3U,GACxBh6D,KAAK4rU,gBAAkB76P,GAAE,SAAS3C,SAASk9P,IAC3CtrU,KAAK4rU,gBAAgBj9P,SAAS3uE,KAAK48M,WACnC58M,KAAK2sC,OAAO,gBAAiB3sC,KAAK2sC,OAAO,SACzC3sC,KAAKmsU,uBACLnsU,KAAKosU,gBACR,EACD9jK,YAAa,WACTtoK,KAAK0sO,eAAiB,GACtB1sO,KAAKmiD,WACL,IAAIkqR,EAAsBrsU,KAAK2oO,0BAC/B3oO,KAAKssU,uBAAuBD,EAAoB,GACnD,EACDxgG,yBAA0B,SAAS/a,EAAOgb,GACtC9rO,KAAKmiD,SAAS2uK,EAAOgb,GACjB9rO,KAAK0sO,gBACL1sO,KAAK0sO,eAAerrO,OAAOyqO,EAAkBrzF,UAAW,EAE/D,EACD2hK,2BAA4B,SAAS/qN,GACjCrvF,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WACtB9X,KAAK0sO,gBACL1sO,KAAK0sO,eAAerrO,OAAOguF,EAAOluF,MAAO,EAAG,KAEnD,EACD80N,yBAA0B,SAAS90N,EAAOm6I,EAAUx7E,GAChD3+D,GAASnB,KAAK2sC,OAAO,UAAY,IAAIvrC,QAAQk6I,GAC7Ct7I,KAAKmiD,SAAShhD,EAAOm6I,EAAUx7E,EAClC,EACD81J,mBAAoB,SAASh4N,GACzB,IAAI+uO,EAAwB,IAAItvN,GAAAA,GAC5BoyC,EAAOzvD,KACPmiD,EAAWniD,KAAKmiD,SAChBoM,EAAW,IAAIlxC,GAAAA,GAOnB,OANAkxC,EAASK,MAAM,WACX,IAAI6mK,EAAetzK,EAAS1jD,KAAKgxD,EAAM7xD,GACvC+uO,EAAsB/tO,QAAQ62N,EACjC,IACDz1N,KAAK0sO,eAAe9uO,EAAKuD,OAASotD,EAClCvuD,KAAK2sC,OAAO,mBAAqB4hB,EAAS3vD,UACnC+tO,EAAsBrvN,SAChC,EACDw9D,QAAS,WAAW,WAChB96E,KAAKmiD,YACLoN,EAAAA,GAAAA,cAAY,WACR,IAAI88Q,EAAsB,EAAK1jG,0BAC/B,EAAK4jG,aAAaF,EAAoB,GACzC,GACJ,EACDE,aAAc,SAASzrJ,EAAe38E,GAClCnkG,KAAKwsU,qBAAqB1rJ,EAAe38E,GACzCnkG,KAAKssU,uBAAuBxrJ,EAAe38E,EAC9C,EACD00M,iBAAkB,WACd74S,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B,IAAIu0T,EAAsBrsU,KAAK2oO,0BAC/B3oO,KAAKssU,uBAAuBD,EAAoB,GACnD,EACDG,qBAAsB,SAAS1rJ,EAAe38E,GAC1C,IAAIusH,EAAgB1wN,KAAK2wN,gBACrB87G,GAAep+Q,EAAAA,EAAAA,IAAU81C,IAAankG,KAAK0sU,oBAAoBvoO,EAAU28E,QAAiB,EAC1F6rJ,EAAgBj8G,EAAc9gJ,GAAGkxG,GACrCoqJ,GAAiByB,EAAe,IAC5Bt+Q,EAAAA,EAAAA,IAAU81C,IACV+mO,GAAiBx6G,EAAc9gJ,GAAGu0B,GAAW,IAAMsoO,EAAe,IAEzE,EACDH,uBAAwB,SAASxrJ,EAAe38E,GACxBnkG,KAAK2wN,gBACX9jK,KAAK,SAAS4rF,EAAW7zI,GACnC,IAAIksN,EAAQ//I,GAAEnsE,GACVwjN,EAAW3vE,IAAcqoC,GAAiBroC,IAAct0C,EACvDikH,GACDpoN,KAAK4sU,oBAAoBn0L,GAE7Bq4E,EAAM7iJ,YA7JgB,2BA6JyBm6I,GAC/CpoN,KAAK86M,QAAQ,SAAUsN,QAAY,EAAQ0I,EAC9C,EAACh0N,KAAKkD,MACV,EACD4sU,oBAAqB,SAASzrU,GAC1B,IAAI2vN,EAAQ9wN,KAAK2wN,gBAAgB/gJ,GAAGzuE,GAChC0rU,EAAiB/7G,EAAM90N,KAAKgE,KAAKyzN,qBAAqB9yN,OAAS,GAC/D0tD,EAAAA,EAAAA,IAAUltD,KAAW0rU,IACrB7sU,KAAK0sO,eAAevrO,GAAOvC,UAC3Bo7E,GAAmB82I,GAE1B,EACDkB,aAAc,SAASlB,EAAOlsN,GAC1B5E,KAAKmiD,SAAS2uK,EAAOlsN,GACrB5E,KAAKssU,uBAAuBtsU,KAAK2sC,OAAO,iBAC3C,EACDs9L,2BAA4BnoN,GAAAA,KAC5B2oN,iBAAkB,SAASJ,EAAgBC,GACvC,IAAInmI,EAAWkmI,EAAe,GAC1ByiG,EAAYxiG,EAAiB,GACjC/+E,GAAmBvrJ,KAAK4rU,iBACxB5rU,KAAKusU,aAAaO,EAAW3oO,GAC7B,IAAI4oO,EAAqB/sU,KAAK0sU,oBAAoBvoO,EAAU2oO,GAC5D9sU,KAAKgtU,sBAAsBD,EAAqB/sU,KAAK6rU,aAAc,WAC/DX,GAAiBlrU,KAAK4rU,gBAAiB,GACvC5rU,KAAKusU,aAAapoO,GAClBv5B,GAAS5qE,KAAK4rU,gBACjB,EAAC9uU,KAAKkD,MACV,EACDgtU,sBAAuB,SAASxiU,EAAUu7M,GACtC,IAAIl6L,EAAW7rB,KAAK2sC,OAAO,oBAzLA,IAyLqD,EAChF4+G,GAAiBvrJ,KAAK4rU,gBAAiBphU,EAAUqhB,EAAUk6L,EAC9D,EACD2mH,oBAAqB,SAASvoO,EAAU2oO,GACpC,IA3LO9yQ,EA2LHw/F,GA3LGx/F,EA2L0Bh6D,KAAK4rU,gBA3LnBlpL,GAAO1oF,GAAUp1B,MA4LhCqoS,GAAmBH,EAAY3oO,GAAYnkG,KAAKksU,wBAA0BlsU,KAAKktU,kCAGnF,OAAOt8Q,GAFc,IAAM4oG,EACkBA,EAAoByzK,EAEpE,EACDE,uBAhMqC,WAiMjC,OAAQntU,KAAK2sC,OAAO,iBAAmB3sC,KAAKgsU,eAAiB,CAChE,EACDI,eAnMqC,WAmMpB,WACbpsU,KAAKmjK,iBAAiBnjK,KAAKg6D,WAAYsyM,GAAW,CAC9C9mP,SAAUxlB,KAAKmtU,yBACf9hE,SAAS,EACT/0G,aAAct2J,KAAK6rU,WAAW/uU,KAAKkD,MACnC+rQ,QAAS,SAAAnuQ,GAAI,OAAI,EAAK6gR,mBAAmB7gR,EAAKmD,MAAjC,EACbkrQ,UAAW,SAAAruQ,GAAI,OAAI,EAAK8gR,oBAAoB9gR,EAAKmD,MAAlC,EACforQ,MAAO,SAAAvuQ,GAAI,OAAI,EAAK+gR,iBAAiB/gR,EAAKmD,MAA/B,GAElB,EACDorU,qBA7MqC,WA8MjC,IAAIiB,EAAcC,EAEdtgC,EACA/2R,EAFAkwC,EAAQlmD,KAAK2sC,OAAO,SAGxBuZ,EAAMxlD,SAAQ,SAACkE,EAAMzD,GACjB,IAEQmsU,EAFSruM,QAAQ,OAASr6H,QAAQ,IAAWA,OAAO,EAASA,EAAK4gB,YAGtE,QAAU8nT,EAAcvgC,SAAe,IAAWugC,IAA4BvgC,EAAa5rS,GAC3F6U,EAAY7U,EAEnB,IACDnB,KAAKutU,iBAAmB,CACpBC,oBAAqB,QAAUJ,EAAergC,SAAe,IAAWqgC,EAAeA,EAAe,EACtGK,mBAAoB,QAAUJ,EAAar3T,SAAc,IAAWq3T,EAAaA,EAAannR,EAAMvlD,OAAS,EAC7G+sU,eAAgB,EAChBC,cAAeznR,EAAMvlD,OAAS,EAErC,EACD89Q,mBAAoB,SAASx1Q,GACzBsiJ,GAAmBvrJ,KAAK4rU,iBACxB,IAAI9qJ,EAAgB9gL,KAAK2sC,OAAO,iBAC5BokL,EAAO/wN,KAAK2sC,OAAO,QACnB,EAGA3sC,KAAKutU,iBAFgBC,EADzB,EACIA,oBACoBC,EAFxB,EAEIA,mBAEA3jK,EAAM9pK,KAAK2sC,OAAO,cACtB1jC,EAAE6qJ,cAAgB03K,GAASz6G,IAASjnD,EAAMgX,EAAgB0sJ,EAAsB1sJ,EAAgB2sJ,IAChGxkU,EAAE+qJ,eAAiBw3K,GAASz6G,IAASjnD,EAAMgX,EAAgB2sJ,EAAqB3sJ,EAAgB0sJ,IAChGxtU,KAAK4tU,gBAAkB,IAC1B,EACDlvD,oBAAqB,SAASz1Q,GAC1B,IAAIgE,EAAShE,EAAEgE,OACX4gU,EAAiBj9Q,GAAK3jD,GAAUjN,KAAKksU,wBAEzC,GADAhB,GAAiBlrU,KAAK4rU,gBAAiB3+T,EAASjN,KAAK6rU,cACjDgC,IAAmB7tU,KAAK4tU,gBAAiB,CACzC5tU,KAAK4tU,gBAAkBC,EACvB,IAAI/sJ,EAAgB9gL,KAAK2sC,OAAO,iBAC5Bw3D,EAAWnkG,KAAKisU,gBAAgBnrJ,EAAgB+sJ,GACpD7tU,KAAKusU,aAAazrJ,EAAe38E,EACpC,CACJ,EACD2pO,wBAzPqC,SAyPb3sU,EAAO8L,GAC3B,IAAI,EAGAjN,KAAK2sC,SAFEuZ,EADX,EACIA,MACM6qK,EAFV,EAEIA,KAEA,EAKA/wN,KAAKutU,iBAJgBC,EADzB,EACIA,oBACoBC,EAFxB,EAEIA,mBACgBC,EAHpB,EAGIA,eACeC,EAJnB,EAIIA,cAEAI,EAAgB,CAACL,EAAgBF,GAAqBjoU,SAASpE,GAC/D6sU,EAAe,CAACL,EAAeF,GAAoBloU,SAASpE,GAChE,GAAI4vN,EAAM,CACN,GAAIg9G,GAAiB9gU,EAAS,EAC1B,OAAOwgU,EACJ,GAAIO,GAAgB/gU,EAAS,EAChC,OAAOugU,CAEd,CACD,IAAK,IAAI7kU,EAAIxH,EAAQ8L,EAAQtE,GAAK6kU,GAAuB7kU,GAAK8kU,EAAoB9kU,GAAKsE,EAAQ,CAE3F,IADiBgyH,QAAQ/4E,EAAMv9C,GAAG6c,UAE9B,OAAO7c,CAEd,CACD,OAAOxH,CACV,EACDw9Q,iBAAkB,SAAS11Q,GACvB,IAAIukH,EAAevkH,EAAEukH,aAAextH,KAAKksU,wBACzC,GAAI1+M,EAAc,CACd,IAAIguK,EAAmBx7R,KAAK8tU,wBAAwB9tU,KAAK2sC,OAAO,kBAAmB6gF,GACnFxtH,KAAK2sC,OAAO,gBAAiB6uP,GAC7B,IAAIyyC,EAAmBjuU,KAAK2xN,eAAen3L,OAAO,qBAClDx6B,KAAK2sC,OAAO,sBAAwB3sC,KAAK2sC,OAAO,iBAAkBk1G,GAAiBosL,GACtF,MACGjuU,KAAKgtU,sBAAsB,EAAGlrT,GAAAA,KAErC,EACDorT,gCAAiC,WAC7B,OAAOltU,KAAKkuU,kBAAoB,EAAI,CACvC,EACD7gH,WAAY,WACRrtN,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKkuU,kBAAmB,CAC3B,EACD39G,UAAW,SAASF,GAChB,IAAIl2I,EAAUn6E,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAExC,OADA9X,KAAKkuU,iBAAmB/zP,EAAQlL,GAAGohJ,EAAOx7J,QACnCslB,CACV,EACDq2I,UAAW,SAASH,GAChB,IAAIl2I,EAAUn6E,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAExC,OADA9X,KAAKkuU,iBAAmB/zP,EAAQlL,GAAGohJ,EAAOt7K,SACnColC,CACV,EACDytF,kBAAmB,WACf5nK,KAAK+rU,sBACR,EACDpkK,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAK4nK,mBAEZ,EACDumK,0BAzTqC,WA0TjC,IAAI3oT,EAAWxlB,KAAKmtU,yBACpB7gE,GAAAA,YAAsBtsQ,KAAKg6D,YAAYrtB,OAAO,WAAYnnB,EAC7D,EACDktH,SAAU,kBACC1yI,KAAKutU,iBACZvtU,KAAKmiD,UACR,EACD29G,eAAgB,SAASliK,GACrB,IAAIM,EAAQN,EAAKM,MACjB,OAAQN,EAAKxE,MACT,IAAK,OACD4G,KAAK2sC,OAAO,gBAAiBzuC,GAC7B,MACJ,IAAK,mBACD,MACJ,IAAK,eACD8B,KAAKmuU,4BACL,MACJ,IAAK,iBACDnuU,KAAKypK,cACL,MACJ,IAAK,QACDzpK,KAAKmuU,4BACLnuU,KAAKmsU,uBACLnsU,KAAKmiD,SAASvkD,GACd,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,cAAei5J,IACjC,UCrYI2C,GAAc,WAelB,GAden2G,GAAAA,QAA6B,CACxCpN,gBAAiB,WACb7qN,KAAKmiD,WACLniD,KAAK8qN,cAAc,QAAS9qN,KAAKyvS,aAAa3yS,KAAKkD,MACtD,EACDyvS,aAAc,SAASE,GAEnB,GADA3vS,KAAKgnJ,UAAUj8I,SAAS,aAAmBrN,SACtCiyS,EAAL,CAGA,IAAIC,EAAS7+N,GAAE,SAAS3C,SAZJ,sBAYoCA,SAASggQ,IAAaznU,KAAKgpS,GACnF3vS,KAAKgnJ,UAAUrhJ,OAAOiqS,EAFrB,CAGJ,IChBMy+B,GAAsB,mBCA1B,SAASC,GAAiB9hU,GAC7B,OAAOA,EAAQ2qR,YAAc3qR,EAAQswD,WACxC,CCOM,SAASyxQ,GAAcC,EAAkBC,GAC5C,OAAOllU,KAAKoZ,MAAM6rT,IAAqBC,CAC1C,CACM,SAASC,GAAeliU,EAASgiU,EAAkBC,GACtD,OAAOllU,KAAKoZ,MAAM2rT,GAAiB9hU,GAAWgiU,IAAqBC,CACtE,CCyCD,IAEIE,GAAuB,oBAEvBC,GAAyB,sBACzBC,GAAwB,qBACxBC,GAAkB,SAQlBC,GAAmB,cACnBC,GAAmB,cAKnBC,GAAO7hH,GAAAA,QAAyB,CAChCjU,iBAAkB,UAClBv7C,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BiiJ,mBAAmB,EACnB8qI,gBAAgB,EAChBp5C,iBAAiB,EACjB5vC,kBAAkB,EAClBhf,cAAe,SACf/iC,oBAAoB,EACpBgjC,mBAAmB,EACnBjZ,eAAe,EACfC,eAAe,EACf5lB,cAAc,EACd+0G,UAAW,SAAShjT,GAChB,OAAOA,EAAOA,EAAKq1S,WAAQ,CAC9B,EACD/gF,gBAAiB,CACb18L,KAAM,QAGjB,EACD4rI,qBAAsB,WAClB,IAAIw9B,EAAY85C,KAChB,OAAOp1O,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,UACvC,EACDl3E,QAAS,CACL8xU,gBAAgB,IAErB,CACCx4P,OAAQ,CACJpC,WAAY,WAEhBl3E,QAAS,CACL04R,iBAAiB,IAEtB,CACCp/M,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,WACJ,OAAOwmH,GAAW5B,EACrB,EACDl+L,QAAS,CACLmrM,cAAc,EACd2lB,eAAe,KAG1B,EACD3qH,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK86M,QAAQ,OAAQ,WACrB96M,KAAKg6D,WAAWoU,SA9EP,WA+ETpuE,KAAKy2L,iBACLz2L,KAAKmvU,kBACLnvU,KAAKykM,qBAjEe,GAkEvB,EACD95B,eAAgB,WACZ3qK,KAAKmiD,WACLniD,KAAK4pK,iBAAiBgsB,oBAAoB,CACtChxL,KAAM,IAAI81E,GAAiB,SAASF,EAAYlgF,IACxC8sC,EAAAA,EAAAA,IAAc9sC,GACd0F,KAAKwvN,4BAA4Bl1N,EAAMkgF,GAEvCA,EAAW7zE,KAAK8C,OAAOnP,IAE3B,IAAI80U,EAAe11I,GAAkBp/L,EAAKmsB,MAC1C2oT,GAAgBA,EAAa1gQ,UAAU8L,GACvCA,EAAW1L,UAAUiC,GAAE,UAAU3C,SAnFtB,eAoFd,EAACtxE,KAAKkD,MAAO,CAAC,OAAQ,OAAQ,QAASA,KAAK2sC,OAAO,oCAE3D,EACD2pL,sBAAuB,SAASlI,EAAc4I,GAAY,WAExC17E,EAGV07E,EAHA17E,SACW/zI,EAEXyvN,EAFAzvN,UACOpG,EACP61N,EADA71N,MAGJ,OADAnB,KAAKqvU,mBAAmBluU,GAAS,IAAIkc,GAAAA,GAC9B+wM,EAAa9/K,OAAO,CACvBmH,MAAO6lG,EACP/zI,UAAWA,EACXpG,MAAOA,EACPo1C,WAAY,kBAAM,EAAK84R,mBAAmBluU,GAAOvC,SAArC,GAEnB,EACD40N,WAAY,WACR,OAAOs7G,EACV,EACDp7G,mBAAoB,WAChB,MA7GuB,iBA8G1B,EACD9B,aAAc,WACV,MA1GiB,WA2GpB,EACDtpD,YAAa,WACTtoK,KAAKqvU,mBAAqB,GAC1BrvU,KAAKmiD,WACLniD,KAAK2sC,OAAO,iBAAmB3sC,KAAKugT,mBACpCvgT,KAAKg6D,WAAWoU,SAASygQ,GAC5B,EACD/zP,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKsvU,uBACR,EACDA,sBA/GgC,WA+GR,WACpBjgR,GAAAA,GAAAA,MAAWrvD,KAAMA,KAAKqvU,oBAAoBzgR,MAAK,kBAAM,EAAK2gR,kBAAX,GAClD,EACDA,iBAAkB,WACd,IAAIC,EAAgB,CAACb,GAAsBN,GAAqBQ,IAEhE,GADA7uU,KAAKg6D,WAAWqU,YAAYmhQ,EAAc/iU,KAAK,MAC3CzM,KAAK2sC,OAAO,qBAAuB3sC,KAAKyvU,wBAAyB,CAC5DzvU,KAAK0vU,cACN1vU,KAAK2vU,oBACL3vU,KAAK4vU,qBAET,IAAIphD,EAAaxuR,KAAK6vU,gBAEtB,GADArhD,EAAWxiP,SACPhsC,KAAK2sC,OAAO,cAAe,CAC3B,IAAImnH,EAAgBw6K,GAAiBv9P,GAAE/wE,KAAK6vU,gBAAgBtoU,aAAa3N,IAAI,IAC7E40R,EAAWn+M,SAAS,CAChBzrC,KAAMkvH,GAEb,CACD9zJ,KAAK8vU,8BACL9vU,KAAK+vU,cAAc/vU,KAAK2sC,OAAO,gBAClC,CACK3sC,KAAK2sC,OAAO,qBAAuB3sC,KAAKyvU,0BAC1CzvU,KAAKgwU,kBACDhwU,KAAKiwU,sBAAwBjwU,KAAKyvU,yBAClCzvU,KAAKg6D,WAAWoU,SAASugQ,IAE7B3uU,KAAKg6D,WAAWqU,YAAYugQ,IAAwBxgQ,SAASigQ,IAEpE,EACDoB,sBAAuB,WAEnB,OADoBzvU,KAAK83N,sBAAsB93N,KAAKywN,oBAAoB,GACjD,EAAI7lJ,GAAS5qE,KAAKg6D,WAC5C,EACDi2Q,kBAAmB,WACf,IAAIC,EAAgBlwU,KAAKywN,mBACrBzwB,EAAep1H,GAAS5qE,KAAKg6D,YAC7Bm2Q,EAAa,GAKjB,OAJAtjR,EAAAA,EAAAA,IAAKqjR,GAAe,SAACpxU,EAAG8F,GACpBurU,EAAW/vU,KAAK4qE,GAAcpmE,GAAM,GACvC,IACiB2E,KAAKkuB,IAAI1f,MAAM,KAAMo4T,IACjBnwI,EAAekwI,EAAcvvU,MACtD,EACDyvU,iBAAkB,WACTpwU,KAAKqwU,aAAgBrwU,KAAKswU,eAG/BtwU,KAAKqwU,YAAYr2Q,WAAWt8D,SAC5BsC,KAAKswU,aAAat2Q,WAAWt8D,SAC7BsC,KAAKqwU,YAAc,KACnBrwU,KAAKswU,aAAe,KACvB,EACDN,gBAAiB,WACRhwU,KAAK0vU,cAGV1vU,KAAK48M,UAAUjuI,SAAS3uE,KAAKg6D,YAC7Bh6D,KAAK0vU,YAAY11Q,WAAWt8D,SAC5BsC,KAAK0vU,YAAc,KACnB1vU,KAAKowU,mBACR,EACD7vB,iBAAkB,WACdvgT,KAAKqzN,WAAa/kL,IACrB,EACDwlL,iBAAkB,kBAAMj5J,GAAAA,EAAN,EAClB69I,mBAAoB,SAAS1+I,EAAU97D,EAAO+K,GAE1C,GADAjJ,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WACrB9X,KAAKqzN,WAAV,CAGA,IAAItzN,EAAS,CACTyM,QAASwtD,EACTj5D,MAAOkI,GAEP/K,EACA8B,KAAKqzN,WAAW/zB,SAASv/L,GAEzBC,KAAKqzN,WAAW9zB,SAASx/L,EAR5B,CAUJ,EACDovU,gBAAiB,WACT,aAAenvU,KAAK2sC,OAAO,kBAC3B3sC,KAAK2sC,OAAO,iBAAiB,EAEpC,EACD8pJ,eAAgB,WACZz2L,KAAK48M,UAAY7rI,GAAE,SAAS3C,SAzNX,mBA0NjBpuE,KAAKg6D,WAAWr0D,OAAO3F,KAAK48M,UAC/B,EACD0W,eAAgB,WACZ,OAAOtzN,KAAK48M,SACf,EACD+yH,kBAAmB,WAAW,WACtBh7G,EAAiB30N,KAAKg6D,WAAW8U,UAAUiC,GAAE,SAAS3C,SA9NtC,uBA8NuErjE,WAC3F/K,KAAK0vU,YAAc1vU,KAAKmjK,iBAAiBwxD,EAAgB0hE,GAAY,CACjEzvQ,UAAW,aACXyuQ,cAAe,QACfoB,aAAa,EACbZ,WAAW,EACXC,gBAAiB91R,KAAK2sC,OAAO,mBAC7B2pP,SAAU,WACN,EAAKw5C,6BACR,IAEL9vU,KAAKg6D,WAAWr0D,OAAO3F,KAAK0vU,YAAY11Q,WAC3C,EACD+1Q,cAAe,SAASz0L,GACpB,GAAKt7I,KAAK0vU,YAAV,CAGA,IAAI5+G,EAAQ9wN,KAAK6nO,cAAcpO,eAAen+E,GAC9Ct7I,KAAK0vU,YAAYz3C,gBAAgBnnE,EAFhC,CAGJ,EACD8+G,kBAAmB,WAEf,GADA5vU,KAAKg6D,WAAWiU,YAAY2gQ,GAAwB5uU,KAAK2sC,OAAO,mBAC3D3sC,KAAK2sC,OAAO,kBAAjB,CAGA,IAAIqT,EAAahgD,KAAK2sC,OAAO,cAC7B3sC,KAAKqwU,YAAcrwU,KAAKuwU,kBAxOf,GAwO6CvwR,EAAa+uR,GAAmBC,IACtF,IAAIwB,EAAcxwU,KAAKqwU,YAAYr2Q,WACnCw2Q,EAAYpiQ,SApPa,2BAqPzBpuE,KAAKg6D,WAAW1yD,QAAQkpU,GACxBxwU,KAAKswU,aAAetwU,KAAKuwU,iBA5OhB,GA4O6CvwR,EAAagvR,GAAmBD,IACtF,IAAI0B,EAAezwU,KAAKswU,aAAat2Q,WACrCy2Q,EAAariQ,SAvPa,4BAwP1BpuE,KAAKg6D,WAAWr0D,OAAO8qU,EATtB,CAUJ,EACDX,4BAA6B,WACzB,IAAIthD,EAAaxuR,KAAK6vU,gBACtB7vU,KAAKqwU,aAAerwU,KAAKqwU,YAAY1jS,OAAO,WAAY4hS,GAAc//C,EAAWrgF,aAAc,IAC/FnuM,KAAKswU,cAAgBtwU,KAAKswU,aAAa3jS,OAAO,WAAY+hS,GAAe39P,GAAEy9M,EAAWjnR,aAAa3N,IAAI,GAAI40R,EAAWrgF,aAAc,GACvI,EACDuiI,sBAAuB,SAASzjU,EAAQ4e,GACpC7rB,KAAK0vU,YAAY1jS,SACjBhsC,KAAK0vU,YAAYl+C,SAASvkR,EAAS4e,EACtC,EACD0kT,iBAAkB,SAAStjU,EAAQwZ,GAC/B,IAAIgpC,EAAOzvD,KACP2wU,EAAalhR,EAAKqxG,eAAe,WACjCrxG,EAAKmhR,cAAgBh1I,aAAa,WAC9BnsI,EAAKihR,sBAAsBzjU,EAhQV,EAiQpB,GAjQoB,EAkQxB,IACG4jU,EAAgBrtL,GAAa2oE,GAAgB,eAC7C2kH,EAAqBttL,GAAa3oF,GAAAA,GAAkB,eACpDk2Q,EAAsBvtL,GAAa3oF,GAAAA,IAAmB,eACtDm2Q,EAAYhxU,KAAKmjK,iBAAiBpyF,GAAE,SAAS3C,SA/Q7B,sBA+Q8Du6H,GAAQ,CACtFxqJ,mBAAmB,EACnB13B,KAAMA,EACN62J,QAAS,WACL7tH,EAAKihR,sBAAsBzjU,EAAQ,EACtC,EACDwqC,mBAAoB,CAAC,IAErBw5R,EAAaD,EAAUh3Q,WAc3B,OAbAuE,EAAAA,EAAAA,GAAgB0yQ,EAAYJ,EAAe,CACvC9pS,QA/QkB,KAgRnB,SAAS99B,GACR0nU,EAAW,CACP5vU,MAAOkI,GAEd,EAACnM,KAAKkD,OACPu+D,EAAAA,EAAAA,GAAgB0yQ,EAAYH,GAAqB,WAC7CrhR,EAAKyhR,gBACR,IACD3yQ,EAAAA,EAAAA,GAAgB0yQ,EAAYF,GAAsB,WAC9CthR,EAAKyhR,gBACR,IACMF,CACV,EACDE,eAAgB,WACRlxU,KAAK4wU,eACLl1I,cAAc17L,KAAK4wU,cAE1B,EACDnmG,iBAAkB,SAASJ,GACvBrqO,KAAK0vU,aAAe1vU,KAAK0vU,YAAYz3C,gBAAgBj4R,KAAK2xN,eAAe/hJ,GAAGy6J,EAAe,IAAK,CAC5FzlM,KAAM,EACNF,MAAO,GAEd,EACDijI,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAK4nK,mBAEZ,EACDA,kBAAmB,WACf5nK,KAAKuvU,kBACR,EACD5lG,mBAAoB,SAAS1gO,GACrB,WAAajJ,KAAK2sC,OAAO,kBAAoB3sC,KAAK87N,eAAe7yN,EAAEu2D,gBAGvEx/D,KAAKmiD,SAASl5C,EACjB,EACDqgK,OAAQ,WACJtpK,KAAKqvU,mBAAqB,GAC1BrvU,KAAKgwU,kBACLhwU,KAAKmiD,UACR,EACDgvR,wBAzTgC,SAyTRhwU,EAAOiwU,GAC3BpxU,KAAK2wN,gBAAgB/gJ,GAAGzuE,GAAO8sE,YAlUV,sBAkU8CmjQ,EACtE,EACDtxK,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,eACL,IAAK,mBACL,IAAK,iBAcL,IAAK,YACD4G,KAAKypK,cACL,MAbJ,IAAK,kBACDzpK,KAAK0vU,aAAe1vU,KAAK0vU,YAAY/iS,OAAO/uC,EAAKxE,KAAMwE,EAAKM,OAC5D,MACJ,IAAK,QACD8B,KAAKmiD,SAASvkD,GACdoC,KAAK4nK,oBACL,MACJ,IAAK,gBACD5nK,KAAKmvU,kBACLnvU,KAAKmiD,SAASvkD,GACd,MAIJ,IAAK,iBACD,IACmBkjL,EACf9gL,KAAK2sC,SADLm0I,cAEAuwJ,EAAetgQ,GAAEnzE,EAAKM,OAAOiD,QAC7BkwU,IAAiBvwJ,GACjB9gL,KAAKmxU,wBAAwBrwJ,EAAeuwJ,IAAiBvwJ,EAAgB,GAEjF9gL,KAAKmiD,SAASvkD,GACdoC,KAAK+vU,cAAcnyU,EAAKM,OACxB,MACJ,QACI8B,KAAKmiD,SAASvkD,GAEzB,EACD08S,0BAhWgC,WAiW5Bt6S,KAAKmiD,WACLniD,KAAKsvU,uBACR,EACDzjG,yBApWgC,SAoWP/a,EAAOgb,GAC5B9rO,KAAKmiD,SAAS2uK,EAAOgb,GACrB9rO,KAAKuvU,kBACR,EACDM,cAxWgC,WAyW5B,OAAO7vU,KAAK0vU,WACf,IAELT,GAAKl9G,UAAYu/G,GACjB9+J,GAAkB,SAAUy8J,IAC5B,UCrbqBsC,GAAAA,SAAAA,0IACjB,WAEI,OADAvxU,KAAK8qN,cAAc,QAAShpM,GAAAA,OACrB,8DACV,OAJgByvT,CAAqBt5G,ICmCtCu5G,GAAW/F,GAAAA,QAAkB,CAC7B7tK,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BsvR,kBAAmB,QACnBrtI,mBAAmB,EACnB8qI,gBAAgB,EAChBp5C,iBAAiB,EACjB5vC,kBAAkB,EAClBwrF,aAAc,KACdC,YAAa,KACbh9F,gBAAiB,KACjB2oE,UAAW,SAAShjT,GAChB,OAAOA,EAAOA,EAAKq1S,WAAQ,CAC9B,GAER,EACD7xI,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,WACJ,OAAQuuE,EACX,EACD7nJ,QAAS,CACLsuU,cAAc,IAEnB,CACCh1P,OAAQ,CACJj9E,SAAU,WAEd2D,QAAS,CACLuuU,kBAAkB,KAG7B,EACDpoO,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SA/CH,eAgDbpuE,KAAK86M,QAAQ,OAAQ,WACxB,EACDxyC,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAK4xU,sBACL5xU,KAAKulP,eACR,EACD56E,eAAgB,WACZ3qK,KAAKmiD,WACLniD,KAAK4pK,iBAAiBgsB,oBAAoB,CACtClmE,MAAO,IAAIh1C,IAAkB,SAASF,EAAYlgF,GAC9C,IAAI8sC,EAAAA,EAAAA,IAAc9sC,GAAO,CACrB,IAAI80U,EAAe11I,GAAkBp/L,EAAKmsB,MACtC2oT,GACA50P,EAAW70E,OAAOypU,IAElB/gR,EAAAA,EAAAA,IAAU/zD,EAAKo1H,UAAWtoF,EAAAA,EAAAA,IAAc9sC,EAAKo1H,QAC7Cl1C,EAAW70E,OAAOk3D,EAAAA,EAAAA,eAA0BviE,EAAKo1H,OAExD,MAAUrhE,EAAAA,EAAAA,IAAU/zD,IACjBkgF,EAAW7zE,KAAK8C,OAAOnP,IAE3BkgF,EAAW1L,UAAUiC,GAAE,UAAU3C,SAnEtB,eAoEd,GAAG,CAAC,QAAS,QAASpuE,KAAK2sC,OAAO,oCAE1C,EACDilS,oBAAqB,WACjB5xU,KAAK6xU,0BACL7xU,KAAK8xU,yBACL9xU,KAAK+xU,4BACR,EACDF,wBAAyB,WACrB7xU,KAAKgyU,kBAAoBhyU,KAAK2/J,sBAAsB,eACvD,EACDmyK,uBAAwB,WACpB9xU,KAAKiyU,iBAAmBjyU,KAAK2/J,sBAAsB,cACtD,EACDoyK,2BAA4B,WACxB/xU,KAAKkyU,qBAAuBlyU,KAAK2/J,sBAAsB,kBAC1D,EACDs4C,eAAgB,WACZ,IAAIxoJ,EAAOzvD,KACXA,KAAKmiD,WACDniD,KAAK2sC,OAAO,mCACZ3sC,KAAKmyU,kBAAoB58S,YAAY,WACjCk6B,EAAK2iR,eACR,GAAG,GAEX,EACD7sF,cAAe,WACX,GAAIvlP,KAAKqyU,MACLryU,KAAKoyU,oBADT,CAIA,IAAIp4Q,EAAWh6D,KAAKg6D,WACpBh6D,KAAKsyU,eAAiBvhQ,GAAE,SAAS3C,SAtGf,oBAsG6CO,SAAS3U,GACxE,IAAIu4Q,EAAQxhQ,GAAE,SAASpC,SAAS3uE,KAAKsyU,gBACrCtyU,KAAKqyU,MAAQryU,KAAKmjK,iBAAiBovK,EAAOtD,GAAMjvU,KAAKwyU,cACrDxyU,KAAKolQ,YAAcr0L,GAAE,SAAS3C,SAxGP,yBAwG0CO,SAAS3U,GAC1Eh6D,KAAKolQ,YAAYz/P,OAAO3F,KAAK48M,WAC7B58M,KAAKoyU,eAPJ,CAQJ,EACDA,cAAe,WACX,IAAItxR,EAAAA,EAAAA,MAAa,CACb,IAAI2xR,EAAavnQ,GAAelrE,KAAKsyU,gBACrCtyU,KAAKolQ,YAAY9/N,IAAI,CACjB5C,WAAY+vS,EACZ/wS,WAAY+wS,GAEnB,CACJ,EACDrhH,yBAA0B,WACtB,GAAKpxN,KAAKqyU,MAAV,CAGA,IAAIK,EAAO1yU,KAAKqyU,MACZM,EAAWD,EAAK/gH,eAChBihH,EAAa7hQ,GAAE4hQ,EAASD,EAAK/lS,OAAO,mBACpC5uB,EAAK/d,KAAKuxN,mBACdvxN,KAAK86M,QAAQ,gBAAY,EAAQ/pI,GAAE4hQ,IACnC3yU,KAAK86M,QAAQ,WAAY/8L,EAAI60T,EAN5B,CAOJ,EACDJ,WAAY,WACR,MAAO,CACHtkH,eAAe,EACf/vK,kBAAmBn+C,KAAK2sC,OAAO,qBAC/By3J,kBAAmBpkM,KAAK2sC,OAAO,qBAC/B2rQ,mBAAoBt4S,KAAK2sC,OAAO,sBAChC6T,SAAUxgD,KAAK2sC,OAAO,YACtBm0I,cAAe9gL,KAAK2sC,OAAO,iBAC3B2wQ,UAAWt9S,KAAK2sC,OAAO,aACvB2hL,YAAatuN,KAAKgyU,kBAAkBl1U,KAAKkD,MACzCuuN,WAAYvuN,KAAKiyU,iBAAiBn1U,KAAKkD,MACvCwuN,gBAAiBxuN,KAAK2sC,OAAO,mBAC7BmuL,mBAAoB,SAAS7xN,GACzBjJ,KAAK2sC,OAAO,gBAAiB1jC,EAAEmoB,UAAUub,OAAO,kBAChD3sC,KAAKoxN,0BACR,EAACt0N,KAAKkD,MACPquN,eAAgBruN,KAAKkyU,qBAAqBp1U,KAAKkD,MAC/CouN,aAAcpuN,KAAK8qK,qBAAqB,qBACxC5kH,MAAOlmD,KAAK2sC,OAAO,SACnB8R,WAAY,KACZynM,iBAAkBlmP,KAAK2sC,OAAO,oBAC9BmpP,gBAAiB91R,KAAK2sC,OAAO,mBAC7BuiS,eAAgBlvU,KAAK2sC,OAAO,kBAC5BkiL,qBAAsB,cACtBV,cAAenuN,KAAK2sC,OAAO,QAC3Bw6L,mBAAmB,EACnBn6L,gBAAiB,SAASpvC,GACtB,GAAI,mBAAqBA,EAAKxE,KAC1B,GAAIwE,EAAKM,MAAO,CACZ,IAAI20U,EAAS9hQ,GAAEnzE,EAAKM,OAChB40U,EAAW9yU,KAAK2wN,gBAAgB/gJ,GAAGijQ,EAAO1xU,SAC9CnB,KAAK2sC,OAAO,iBAAkBk1G,GAAiBixL,GAClD,MACG9yU,KAAK2sC,OAAO,iBAAkB/uC,EAAKM,MAG9C,EAACpB,KAAKkD,MACPw9K,UAAW,SAAS5/K,GAChBoC,KAAKw5M,gBAAgB57M,EAAKmD,MAC7B,EAACjE,KAAKkD,MACPy9K,WAAY,SAAS7/K,GACZoC,KAAK+yU,6BACN/yU,KAAK05M,iBAAiB97M,EAAKmD,MAElC,EAACjE,KAAKkD,MAEd,EACDg4M,mBAAoB,WAChBh4M,KAAK6lK,eAAe33F,KAAK,YAAa,EACzC,EACD8kQ,2BA/K6B,SA+KFr5H,GACvB35M,KAAK45M,kBAAkBD,EAAW35M,KAAK48M,UAC1C,EACDq2H,4BAlL6B,SAkLDt5H,GACxB35M,KAAK6lK,eAAe53F,YApLK,0BAoLmC0rI,EAC/D,EACDF,kBAAmB,SAASxwM,EAAG0wM,GAC3B35M,KAAKmiD,SAASl5C,EAAG0wM,GACjB,IAAIu5H,EAAejqU,EAAE0O,SAAW3X,KAAKqyU,MAAMxsK,eAAejsK,IAAI,GAC1Du5U,EAAoBlqU,EAAE0O,SAAW3X,KAAK6lK,eAAejsK,IAAI,GAI7D,GAHIs5U,GACAlzU,KAAK45M,kBAAkBD,EAAW35M,KAAK6lK,gBAEvCqtK,GAAgBC,EAAmB,CACnC,IAAIvvL,EAAa5jJ,KAAKwxN,YAAYxxN,KAAK2sC,OAAO,mBAC9C3sC,KAAKgzU,2BAA2Br5H,IAAc/1D,GAC9C5jJ,KAAKizU,4BAA4Bt5H,GAAa/1D,EACjD,CACGuvL,GACAnzU,KAAK45M,kBAAkBD,EAAW35M,KAAKqyU,MAAM1lS,OAAO,kBAE3D,EACD+sK,iBAAkB,SAASzwM,GACvBjJ,KAAK+yU,6BAA8B,EACnC/yU,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKqyU,MAAM34H,iBAAiBzwM,GAC5BjJ,KAAK+yU,6BAA8B,CACtC,EACDK,eAAgB,SAASh6U,EAAM8E,GACvB8B,KAAKqyU,OACLryU,KAAKqyU,MAAM1lS,OAAOvzC,EAAM8E,EAE/B,EACDypK,mBAAoB,SAAS9mH,GACrBA,IACA7gD,KAAKqyU,MAAMzqK,oBACX5nK,KAAKoyU,gBAEZ,EACDh3H,mBAAoB,SAAS94M,EAAKxB,GAC9Bd,KAAKmiD,SAAS7/C,EAAKxB,GACfd,KAAKqyU,OACLryU,KAAKqyU,MAAMj3H,mBAAmB94M,EAAKxB,EAE1C,EACDq6M,QAAS,WACLn7M,KAAKmiD,WACLniD,KAAKqyU,MAAMl3H,SACd,EACDr7C,eAAgB,SAASliK,GACrB,IAAIxE,EAAOwE,EAAKxE,KACZ8E,EAAQN,EAAKM,MACb2xC,EAAWjyC,EAAKiyC,SACpB,OAAQz2C,GACJ,IAAK,aAkEL,QACI4G,KAAKmiD,SAASvkD,SAhElB,IAAK,QACDoC,KAAKozU,eAAeh6U,EAAM4G,KAAK2sC,OAAOvzC,IACtC4G,KAAKoyU,gBACApyU,KAAK2sC,OAAO,uBACb3sC,KAAKqyU,MAAMl3H,UAEfn7M,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,QACDoC,KAAKmiD,SAASvkD,GACdoC,KAAKqyU,MAAMl3H,UACX,MACJ,IAAK,gBACL,IAAK,eAGD,GAFAn7M,KAAKozU,eAAevjS,EAAU3xC,GAC9B8B,KAAKmiD,SAASvkD,IACV,IAASoC,KAAK2sC,OAAO,qBAAsB,CAC3C,IAAIm0I,EAAgB9gL,KAAK2sC,OAAO,iBAC5B0mS,EAAqBrzU,KAAK2wN,gBAAgB/gJ,GAAGkxG,GACjD9gL,KAAK2sC,OAAO,iBAAkBk1G,GAAiBwxL,GAClD,CACD,MACJ,IAAK,kBACL,IAAK,oBACL,IAAK,oBACDrzU,KAAKozU,eAAevjS,EAAU3xC,GAC9B8B,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,mBACL,IAAK,kBACL,IAAK,iBACDoC,KAAKozU,eAAevjS,EAAU3xC,GAC9B,MACJ,IAAK,iBACD,IAAI6f,EAAK7f,EAAQ6yE,GAAE7yE,GAAOiD,QAAUjD,EAChCs7S,EAAUt7S,EAAQ8B,KAAKqyU,MAAM1hH,gBAAgB/gJ,GAAG7xD,GAAM7f,EAC1D8B,KAAKozU,eAAe,iBAAkBvxL,GAAiB23J,IACvD,IAAI51J,EAAa5jJ,KAAKwxN,YAAYtzN,GAClC8B,KAAKgzU,4BAA4BpvL,GACjC5jJ,KAAKizU,4BAA4BrvL,GACjC5jJ,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,oBACDoC,KAAKozU,eAAe,eAAgBpzU,KAAK8qK,qBAAqB,sBAC9D,MACJ,IAAK,eACD9qK,KAAK6xU,0BACL7xU,KAAKozU,eAAe,cAAepzU,KAAKgyU,kBAAkBl1U,KAAKkD,OAC/D,MACJ,IAAK,cACDA,KAAK8xU,yBACL9xU,KAAKozU,eAAe,aAAcpzU,KAAKiyU,iBAAiBn1U,KAAKkD,OAC7D,MACJ,IAAK,kBACDA,KAAK+xU,6BACL/xU,KAAKozU,eAAe,iBAAkBpzU,KAAKkyU,qBAAqBp1U,KAAKkD,OACrE,MACJ,IAAK,OACDA,KAAKozU,eAAe,gBAAiBl1U,GACrC,MACJ,IAAK,YACD8B,KAAKypK,cAKhB,EACDH,OAAQ,WACJh0I,aAAat1B,KAAKmyU,mBAClBnyU,KAAKmiD,UACR,IAELqvR,GAASz/G,UAAYw/G,GACrB/+J,GAAkB,aAAcg/J,IAChC,UCxVqB8B,GAAAA,WACjB,WAAYl2U,IAAS,eACjB4C,KAAKktD,SAAW9vD,EAChB4C,KAAKuzU,kBAAoBvzU,KAAKktD,SAASu9Q,gBAC1C,4CACD,WACI,OAAOzqU,KAAKuzU,kBAAkBC,yBAAyBxzU,KAAKktD,SAAStoD,KACxE,kCACD,WACI,OAAO5E,KAAKuzU,kBAAkBE,wBAAwBzzU,KAAKktD,SAAStoD,KACvE,iCACD,WACI,OAAO5E,KAAKuzU,kBAAkBG,uBAAuB1zU,KAAKktD,SAAStoD,KACtE,2BACD,WACIunD,GAAAA,EAAAA,UACH,OAhBgBmnR,GCKVK,GAAwB,SAACxyU,EAAOyyU,GAAR,MAAmB,GAAG3jU,OAAO2jU,EAAS,OAAS,QAAS,KAAK3jU,OAAO9O,EAAO,IAA3E,EACxB0yU,GAAc,SAACC,EAAOC,GAC7B,OAAI1lR,EAAAA,EAAAA,IAAUylR,KAAUzlR,EAAAA,EAAAA,IAAU0lR,GACvB,GAAG9jU,OAAO6jU,EAAO,KAAK7jU,OAAO8jU,GAEjCD,GAASC,CACnB,EACUC,GAAuB,SAAArtU,GAAI,OAAIA,EAAOA,EAAK/E,QAAQ,MAAO,SAAM,CAArC,EAO3BqyU,GAAoB,SAACtxU,EAAM6sC,GAAP,MAAsB,GAAGv/B,OAAOtN,EAAM,KAAKsN,OAAOu/B,EAAlD,EACpB0kS,GAA4B,SAAArkS,GACnC,IAAI8E,EAAQ9E,EAASxtC,MAAM,KAC3B,OAAOsyC,EAAMA,EAAMh0C,OAAS,GAAGiB,QAAQ,SAAU,GACpD,EAYUuyU,GAAyB,SAAAC,GAAQ,OAAIA,EAAShzU,QAAQ,SAAW,CAAhC,EACjCizU,GAAc,SAAdA,EAAenuR,EAAOthD,EAAMgvU,GACnC,IAAIzyU,EAAQ+kD,EAAM9kD,QAAQwD,GAC1B,GAAIzD,GAAS,EACT,OAAOwyU,GAAsBxyU,EAAOyyU,GAExC,IAAK,IAAIjrU,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CACnC,IAAIsiU,EAAa/kR,EAAMv9C,GACnB2rU,EAAkBrJ,EAAWyH,MAAQzH,EAAW/kR,MACpD,GAAIouR,EAAiB,CACjB,IAAIniH,EAAWkiH,EAAYC,EAAiB1vU,EAAMqmU,EAAWyH,MAC7D,GAAIvgH,EACA,OAAO0hH,GAAYF,GAAsBhrU,EAAGirU,GAASzhH,EAE5D,CACJ,CACJ,MC1CKoiH,GAAAA,SAAAA,qIACF,WACI,IACWr2U,EACP8B,KAAKktD,SADLhvD,MAEA6qC,EAAW/oC,KAAKw0U,eACpB,QAAIzrS,IACAA,EAAS4D,OAAOzuC,IACT,EAGd,OAXCq2U,CAAqCjB,IAarCmB,GAAAA,SAAAA,qIACF,WACI,IAAIC,EAAW10U,KAAKw0U,eACpB,GAAIE,EAAU,CACV,IAAI,EAIA10U,KAAKktD,SAHO1d,EADhB,EACIA,WACM5qC,EAFV,EAEIA,KACO1G,EAHX,EAGIA,MAEAu6I,EAAYz4I,KAAKuzU,kBAAkBoB,oBAAoB/vU,GAC3D,GAAI6zI,GAAa,EAEb,OADAi8L,EAAS/nS,OAAOsnS,GAAkB,SAAShkU,OAAOwoI,EAAW,KAAMjpG,GAAatxC,IACzE,CAEd,CACD,OAAO,CACV,OAhBCu2U,CAAkCnB,IAkBlCsB,GAAAA,SAAAA,qIACF,WACI,OAAO,CACV,OAHCA,CAAwCtB,IAKxCuB,GAAAA,SAAAA,qIACF,WACI,IAAIC,EAAe90U,KAAK+0U,mBACxB,QAAI,MAAQD,IAAgBA,EAAaE,4BAA6BF,EAAaG,+BAC/EH,EAAaE,0BAA0Bh1U,KAAKktD,SAAStoD,KAAK4a,UAC1Ds1T,EAAaG,+BACN,EAGd,OATCJ,CAAuCvB,IAWvC4B,GAAAA,SAAAA,qIACF,WACI,IAAIR,EAAW10U,KAAKw0U,eACpB,GAAIE,EAAU,CACV,IACWx2U,EACP8B,KAAKktD,SADLhvD,MAGJ,OADAw2U,EAAS/nS,OAAO,aAAczuC,IACvB,CACV,CACD,OAAO,CACV,OAXCg3U,CAAmC5B,IAanC6B,GAAAA,SAAAA,qIACF,WACI,IACUvwU,EACN5E,KAAKktD,SADLtoD,KAEAmkC,EAAW/oC,KAAKw0U,eAChBjiT,EAAYwW,GAAYzuC,EAAKyuC,EAASixB,WAAW,GAAI,eACzD,GAAIznC,GAAa3tB,EAAM,CACnB,IAAIwwU,EAAiB,SAAAxwU,GAAI,MAAI,aAAeA,EAAKS,IAAxB,EACrBgwU,GAAuB9iT,EAAUoa,OAAO,oBAAsB,IAAIwlB,KAAKijR,GACvEE,GAAuB1wU,EAAKoyK,iBAAmB,IAAI7kH,KAAKijR,GAC5D,IAAKC,IAAwBC,GAAuBD,GAAuBC,EAEvE,OADA/iT,EAAUoa,OAAO,kBAAmB/nC,EAAKoyK,kBAClC,CAEd,CACD,OAAO,CACV,OAjBCm+J,CAAwC7B,IAmBxCiC,GAAAA,SAAAA,qIACF,WACI,IAAI5gH,EAAiB30N,KAAKw1U,oBACtB,EAGAx1U,KAAKktD,SAFU2tG,EADnB,EACIA,cACO38J,EAFX,EAEIA,MAEJ,QAAIy2N,IACAA,EAAetmJ,YAAYwsF,GAAezsF,SAASlwE,IAC5C,EAGd,OAZCq3U,CAAiCjC,IAgDvC,GAlCgC,SAAC9jS,EAAYimS,GACzC,OAAQjmS,GACJ,IAAK,gBACL,IAAK,gBACD,OAAO,IAAI+kS,GAA6BkB,GAC5C,IAAK,kBACD,OAAO,IAAIN,GAAgCM,GAC/C,IAAK,WACD,OAAO,IAAIF,GAAyBE,GACxC,IAAK,QACL,IAAK,WACL,IAAK,OACL,IAAK,cACL,IAAK,QACD,OAAO,IAAIhB,IAA0BhvR,EAAAA,GAAAA,GAAOgwR,EAAmB,CAC3DjmS,WAAYA,KAEpB,IAAK,OACD,OAAO,IAAI0lS,GAA2BO,GAC1C,IAAK,WACD,IAAIC,EAAuBC,EAAwBC,EAC/Cn8F,EAAW,QAAUi8F,EAAwB,OAASD,QAAqB,IAAWA,GAA6B,QAAUE,EAAyBF,EAAkB7wU,YAAS,IAAW+wU,OAAlF,EAAoHA,EAAuBl8F,gBAAa,IAAWi8F,EAAwBA,EAAwB,QAAUE,EAAyBH,EAAkBhL,iBAAiBiJ,uBAAuB,OAAS+B,QAAqB,IAAWA,OAAoB,EAASA,EAAkB7wU,aAAU,IAAWgxU,OAAyB,EAASA,EAAuBn8F,SACpkB,MAAI,WAAaA,EACN,IAAIm7F,GAAgCa,GACpC,UAAYh8F,EACZ,IAAIo7F,GAA+BY,GAEvC,IAAIhB,IAA0BhvR,EAAAA,GAAAA,GAAOgwR,EAAmB,CAC3DjmS,WAAYA,KAEpB,QACI,OAAO,KAElB,EC3GGqmS,GAAuB,mBACvBC,GAA2BD,2BAE3B9b,GAAoB,gBAEpBgc,GAAgB3oH,GAAAA,QAAyB,CACzCxvD,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B6zR,KAAM,GACNC,KAAM,GACNC,cAAe,KACfC,mBAAoB,GACpB3pT,OAAQ,OACRmE,MAAO,OACPwzK,oBAAoB,EACpBhmJ,mBAAmB,EACnBm9Q,wBAAoB,EACpB8a,gBAAiB,KACjBC,yBAAqB,GAE5B,EACD9yO,MAAO,WACEvjG,KAAK2sC,OAAO,kBACb3sC,KAAKktD,SAASytG,OAAO,gBAAiBj+F,EAAAA,IAE1C18D,KAAKmiD,WACLniD,KAAKs2U,0BACR,EACDA,yBAA0B,WACtBt2U,KAAKu2U,qBAAuBv2U,KAAK2/J,sBAAsB,kBAAmB,CACtE5e,kBAAmB,CAAC,WAAY,aAEvC,EACDyyE,WAAY,WACR,MAhCa,aAiChB,EACD5B,aAAc,WACV,OAAOmoG,EACV,EACDzxJ,YAAa,WACTtoK,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAASynQ,GAC5B,EACD3gH,aAAc,WACVl1N,KAAKw2U,iBACLx2U,KAAKy2U,aAAez2U,KAAK02U,iBACzB12U,KAAK22U,eACL32U,KAAK42U,eACL52U,KAAK62U,eACL72U,KAAK82U,iBACR,EACDhlH,mBAAoB,SAASltN,GACzB,IAAIksN,EAAQ9wN,KAAK0xN,uBAAuB9sN,GACnCksN,EAAMnwN,SAGXX,KAAKgyN,aAAalB,EAAOlsN,GACzB5E,KAAK+2U,0BACL/2U,KAAK+lR,SAAQ,GAChB,EACDywD,eAAgB,WACZ,IAAIQ,EAAgBh3U,KAAKi3U,oBACzBj3U,KAAKk3U,yBACLl3U,KAAKg6D,WAAWoU,SAAS0nQ,GAA2BkB,GACpDh3U,KAAK2sC,OAAO,sBAAuBqqS,EACtC,EACDE,uBAAwB,WACpB,IAAIb,EAAsBr2U,KAAK2sC,OAAO,uBACtC0pS,GAAuBr2U,KAAKg6D,WAAWqU,YAAYynQ,GAA2BO,EACjF,EACDM,aAAc,WACV,IAAIQ,EAAOn3U,KAAKo3U,MAAQ,GACxBp3U,KAAKq3U,uBACLxqR,EAAAA,EAAAA,IAAK7sD,KAAKs3U,MAAO,WACb,IAAI5nE,EAAM,GACVynE,EAAK/2U,KAAKsvQ,IACV7iN,EAAAA,EAAAA,IAAK7sD,KAAKu3U,MAAO,WACb7nE,EAAItvQ,KAAKJ,KAAKw3U,mBACjB,EAAC16U,KAAKkD,MACV,EAAClD,KAAKkD,MACV,EACDy3U,oBAAqB,WACjB,IAAIzB,EAAOh2U,KAAK2sC,OAAO,QACnB+qS,EAAoB13U,KAAKy2U,aAAa91U,OAC1C,GAAIq1U,EAAKr1U,OAAQ,CAGb,IAFA,IAAIg3U,EAAe33U,KAAK43U,gBAAgB5B,GACpCxyU,EAAS,GACJmF,EAAI,EAAGA,EAAI+uU,EAAmB/uU,IAAK,CACxC,IAAIkvU,EAAa73U,KAAK83U,qBAClBnvU,EAAIgvU,EAAah3U,SAAU0tD,EAAAA,EAAAA,IAAUspR,EAAahvU,GAAGyyT,UACrDyc,EAAWzc,OAASuc,EAAahvU,GAAGyyT,QAExC53T,EAAOpD,KAAKy3U,EACf,CACD,OAAOr0U,CACV,CACG,OAAOxD,KAAK83U,mBAAmBJ,EAEtC,EACDL,oBAAqB,WACbr3U,KAAK+3U,yBACL/3U,KAAKg4U,kCACLh4U,KAAKs3U,MAAQt3U,KAAKy3U,sBAClBz3U,KAAKu3U,MAAQv3U,KAAK83U,mBAAmB,KAErC93U,KAAKs3U,MAAQt3U,KAAKi4U,eAAej4U,KAAK2sC,OAAO,SAC7C3sC,KAAKu3U,MAAQv3U,KAAKi4U,eAAej4U,KAAK2sC,OAAO,SAEpD,EACDorS,sBAAuB,WACnB,OAAO/3U,KAAKk4U,gBAAgB9hU,KAAKpW,KAAK2sC,OAAO,yBAA2B3sC,KAAK2sC,OAAO,QAAQhsC,SAAWX,KAAK2sC,OAAO,QAAQhsC,MAC9H,EACDq3U,gCAAiC,WAC7Bh4U,KAAKy2U,aAAar9S,MAAM,SAAS0/Q,EAAOC,GACpC,OAAOD,EAAMnmR,SAAS+8O,IAAMqpC,EAAMpmR,SAAS+8O,KAAOopC,EAAMnmR,SAASg6C,IAAMosO,EAAMpmR,SAASg6C,GACzF,KACD9f,EAAAA,EAAAA,IAAK7sD,KAAKy2U,cAAe,SAASt1U,EAAOyD,IACrC6gD,EAAAA,GAAAA,GAAO7gD,EAAK+tB,SAAU,CAClB+8O,IAAKvuQ,EACLwrE,IAAK,EACLwrQ,QAAS,EACTC,QAAS,GAEhB,GACJ,EACDH,eAAgB,SAASI,GACrB,OAAOt0U,EAAAA,EAAAA,IAAI/D,KAAK43U,gBAAgBS,GAAc,SAASR,GACnD,OAAOpyR,EAAAA,GAAAA,GAAOzlD,KAAK83U,qBAAsBD,EAC5C,EAAC/6U,KAAKkD,MACV,EACDs4U,yBAA0B,WACtB,MAAO,CACH/8C,MAAO,EACP4/B,SAAU,EACVD,QAAS,EACTD,QAAS,EAEhB,EACD6c,mBAAoB,SAASjqU,GACzB,IAAI0qU,EAAoBv4U,KAAKs4U,2BAC7B,IAAKxgU,UAAUnX,OACX,OAAO43U,EAGX,IADA,IAAI/0U,EAAS,GACJmF,EAAI,EAAGA,EAAIkF,EAAMlF,IACtBnF,EAAOpD,KAAKm4U,GAEhB,OAAO/0U,CACV,EACDo0U,gBAAiB,SAAS1xR,GACtB,IAAIsyR,EAAex4U,KAAKk4U,gBACxB,OAAOxmR,EAAAA,GAAAA,MAAKxL,GAAQ,SAASthD,GACzB,OAAQA,EAAK2wE,QAAUijQ,EAAapiU,KAAKxR,EAAK2wE,OACjD,GACJ,EACD2iQ,cAAe,WACX,IAAI3iQ,EAASv1E,KAAKi3U,oBAClB,OAAO,IAAIr/S,OAAO,UAAY29C,EAAS,UAAW,IACrD,EACD0hQ,kBAAmB,WACf,IAAItmT,EAAQ3wB,KAAKy4U,eACjB,OAAOz4U,KAAK2sC,OAAO,gBAAZ3sC,CAA6B2wB,EACvC,EACD8nT,aAAc,WACV,OAAO33R,EAAAA,EAAAA,MAAc8pB,IAAS7pB,EAAAA,EAAAA,OAhKhB,IAiKjB,EACDy2R,iBAAkB,WACd,MAAO,CACH5yU,KAAM,CAAC,EACP+tB,SAAU,CACNylT,QAAS,EACTD,QAAS,GAGpB,EACDvB,aAAc,YACV/pR,EAAAA,EAAAA,IAAK7sD,KAAKy2U,aAAc,SAAS33U,EAAG45U,GAChC,IAAI/lT,EAAW+lT,EAAS/lT,UAAY,CAAC,EACjCgmT,EAAUhmT,EAASg6C,IACnBisQ,EAAUjmT,EAAS+8O,IACnBA,EAAM1vQ,KAAKo3U,MAAMwB,GACjBC,EAAWnpE,GAAOA,EAAIipE,GAC1B34U,KAAK84U,aAAaD,EAAUH,EAC/B,EAAC57U,KAAKkD,MACV,EACD02U,eAAgB,WAAW,WACvB,OAAO12U,KAAK2sC,OAAO,SAASxoC,QAAO,SAACX,EAAQoB,GACxC,IAAIm0U,EAAYn0U,EAAK+tB,UAAY,CAAC,EAWlC,OAVAomT,GAAY3xS,EAAAA,EAAAA,IAAc2xS,GAAa,CAACA,GAAaA,EACrD,EAAKnB,gBAAgBmB,GAAWr4U,SAAQ,SAAAiyB,GACpCnvB,EAAOpD,KAAK,CACRwE,KAAMA,EACN+tB,UAAU8yB,EAAAA,GAAAA,GAAO,CACb0yR,QAAS,EACTC,QAAS,GACVzlT,IAEV,IACMnvB,CACV,GAAE,GACN,EACDs1U,aAAc,SAASD,EAAUH,GACxBG,IAAY74U,KAAKg5U,oBAAoBH,EAAUH,MAGpDjzR,EAAAA,GAAAA,GAAOozR,EAAUH,GACjB14U,KAAKi5U,kBAAkBJ,GAC1B,EACDG,oBAAqB,SAASH,EAAUH,GACpC,KAAK98Q,EAAAA,EAAAA,IAAci9Q,EAASj0U,MACxB,OAAO,EAEX,IAAIpB,GAAS,EAIb,OAHAxD,KAAKk5U,kBAAkBR,EAAS/lT,UAAW,SAASs9O,GAChDzsQ,EAASA,KAAWo4D,EAAAA,EAAAA,IAAcq0M,EAAKrrQ,KAC1C,IACMpB,CACV,EACD01U,kBAAmB,SAASvmT,EAAUp1B,GAClC,IAAI47U,EAASxmT,EAAS+8O,IAAM/8O,EAASwlT,QAAU,EAC3CiB,EAASzmT,EAASg6C,IAAMh6C,EAASylT,QAAU,EAC3CiB,EAAc9vU,KAAKsZ,IAAIs2T,EAAQn5U,KAAKs3U,MAAM32U,OAAS,GACnD24U,EAAc/vU,KAAKsZ,IAAIu2T,EAAQp5U,KAAKu3U,MAAM52U,OAAS,GACvDgyB,EAASwlT,SAAWgB,EAASE,EAC7B1mT,EAASylT,SAAWgB,EAASE,EAC7B,IAAK,IAAI7pE,EAAW98O,EAAS+8O,IAAKD,GAAY4pE,EAAa5pE,IACvD,IAAK,IAAIG,EAAWj9O,EAASg6C,IAAKijM,GAAY0pE,EAAa1pE,IACnDH,IAAa98O,EAAS+8O,KAAOE,IAAaj9O,EAASg6C,KACnDpvE,EAASyC,KAAKo3U,MAAM3nE,GAAUG,GAI7C,EACDqpE,kBAAmB,SAASJ,GACxB74U,KAAKk5U,kBAAkBL,EAASlmT,UAAW,SAASs9O,IAChDxqN,EAAAA,GAAAA,GAAOwqN,EAAM,CACTrrQ,KAAMi0U,EAASj0U,KACf20U,aAAcV,GAErB,GACJ,EACD/B,gBAAiB,YACbjqR,EAAAA,EAAAA,IAAK7sD,KAAK2wN,iBAAkB,SAAS7xN,EAAG06U,GACpC,IAAI1oH,EAAQ//I,GAAEyoQ,GACV50U,EAAOksN,EAAMx2N,KAAKy/T,IACjBn1T,EAAKsjE,MACNtjE,EAAK+F,KAAOmmN,EAAM/lN,WAEzB,GACJ,EACD8rU,aAAc,WACV,IAAI4C,EAAYz5U,KAAKo3U,MAAMz2U,OACvB+4U,EAAYD,GAAaz5U,KAAKo3U,MAAM,GAAGz2U,OAC3C,GAAK84U,GAAcC,EAAnB,CAGA,IAAIl2U,EAASxD,KAAK25U,aAAa,CAC3B/yT,UAAW,MACX8oP,IAAK,CACDnzO,MAAO,EACPryB,IAAKuvU,EAAY,GAErB9sQ,IAAK,CACDpwC,MAAO,EACPryB,IAAKwvU,EAAY,KAGrBE,EAAU55U,KAAK65U,kBAAkBr2U,EAAO0kE,KAAO,CAC/CthD,UAAW,MACXs/B,MAAO,EAACT,EAAAA,GAAAA,GAAOjiD,EAAQ,CACnB+3R,MAAO,QAGf91O,EAAAA,GAAAA,GAAOm0R,EAAS55U,KAAK85U,eAAeF,EAAQ1zR,QAC5ClmD,KAAK08M,OAAS3rI,GAAE,SAASpC,SAAS3uE,KAAKszN,kBACvCtzN,KAAKmjK,iBAAiBnjK,KAAK08M,OAAQ2+G,GAAKue,EApBvC,CAqBJ,EACDE,eAAgB,SAAS5zR,GACrB,IAAI6zR,GAAYltR,EAAAA,EAAAA,IAAK3G,EAAO,SAAS/kD,EAAOyD,GACxC5E,KAAKg6U,uBAAuBp1U,KAAS6gD,EAAAA,GAAAA,GAAO7gD,EAAM,CAC9Cu2T,SAAU,QAEjB,EAACr+T,KAAKkD,OACP,MAAO,CACH2wB,MAAO,OACPnE,OAAQ,OACR05B,MAAO6zR,EACP3rH,aAAcpuN,KAAK8qK,qBAAqB,gBACxC0jD,gBAAiBxuN,KAAK2sC,OAAO,mBAC7B4hL,WAAYvuN,KAAK2/J,sBAAsB,cACvC2uD,YAAatuN,KAAK2/J,sBAAsB,eACxC8uD,kBAAmBzuN,KAAK2/J,sBAAsB,qBAC9C0uD,eAAgBruN,KAAK2/J,sBAAsB,kBAElD,EACDq6K,uBAAwB,SAASp1U,GAC7B,OAAQA,EAAKu2T,YAAcv2T,EAAKs2T,SAAW,SAAWt2T,EAAKs2T,YAAct2T,EAAKq2T,SAAW,SAAWr2T,EAAKq2T,QAC5G,EACD4e,kBAAmB,SAAS95U,GACxB,OAAO0lD,EAAAA,GAAAA,GAAO1lD,GAAU,CAAC,EAAG,CACxBg7T,WAAY,UACZO,mBAAoBt7T,KAAK2sC,OAAO,uBAEvC,EACDgtS,aAAc,SAASv8U,GACnB,OAAI4C,KAAKi6U,cAAc78U,GACZ4C,KAAKk6U,YAAY98U,EAAQsyQ,IAAInzO,MAAOn/B,EAAQuvE,IAAIpwC,OAEpDv8B,KAAKm6U,iBAAiB/8U,EAChC,EACD68U,cAAe,SAAS78U,GACpB,IAAIg9U,EAAoBp6U,KAAKo3U,MAAMh6U,EAAQsyQ,IAAInzO,OAAOn/B,EAAQuvE,IAAIpwC,OAAO5J,SACrE0nT,EAAmBj9U,EAAQsyQ,IAAIxlQ,IAAM9M,EAAQsyQ,IAAInzO,QAAU69S,EAAkBjC,QAAU,EACvFmC,EAAmBl9U,EAAQuvE,IAAIziE,IAAM9M,EAAQuvE,IAAIpwC,QAAU69S,EAAkBhC,QAAU,EAC3F,OAAOiC,GAAoBC,CAC9B,EACDJ,YAAa,SAASzqE,EAAUG,GAC5B,IAAIipE,EAAW74U,KAAKo3U,MAAM3nE,GAAUG,GACpC,OAAOipE,EAASU,aAAe,KAAOV,EAASj0U,IAClD,EACDu1U,iBAAkB,SAAS/8U,GAKvB,IAJA,IAGIm9U,EAHAr0R,EAAQ,GACRt/B,EAAYxpB,EAAQwpB,UACpB4zT,EAAiBx6U,KAAKy6U,gBAAgB7zT,GAEnC2zT,EAAQv6U,KAAK06U,WAAWt9U,IAAU,CACrC,GAAI4C,KAAK26U,oBAAoBv9U,EAAQw9U,iBAAkBL,GACnD,MAAMj7T,GAAAA,MAAa,SAEvB,IAAI1a,EAAO5E,KAAK25U,aAAa,CACzB/yT,UAAW4zT,EACX9qE,IAAK6qE,EAAM7qE,IACX/iM,IAAK4tQ,EAAM5tQ,IACXiuQ,iBAAkBx9U,IAElBwH,KACA6gD,EAAAA,GAAAA,GAAO7gD,EAAM5E,KAAK66U,WAAWN,EAAOC,IACpCt0R,EAAM9lD,KAAKwE,IAEfxH,EAAQo9U,GAAgBj+S,MAAQg+S,EAAMC,GAAgBtwU,IAAM,CAC/D,CACD,MAAO,CACHg+D,IAAKloE,KAAK65U,kBAAkB,CACxBjzT,UAAWA,EACXs/B,MAAOA,IAGlB,EACDy0R,oBAAqB,SAASv9U,EAASm9U,GACnC,OAAOn9U,GAAWA,EAAQuvE,IAAIpwC,QAAUg+S,EAAM5tQ,IAAIpwC,OAASn/B,EAAQuvE,IAAIziE,MAAQqwU,EAAM5tQ,IAAIziE,KAAO9M,EAAQsyQ,IAAInzO,QAAUg+S,EAAM7qE,IAAInzO,OAASn/B,EAAQsyQ,IAAIxlQ,MAAQqwU,EAAM7qE,IAAIxlQ,GAC1K,EACDuwU,gBAAiB,SAAS7zT,GACtB,MAAO,QAAUA,EAAY,MAAQ,KACxC,EACD8zT,WAAY,SAASt9U,GACjB,IAAIwpB,EAAYxpB,EAAQwpB,UACpB4zT,EAAiBx6U,KAAKy6U,gBAAgB7zT,GACtCu/M,EAAa/oO,EAAQwpB,GAAW2V,MAChCC,EAAWp/B,EAAQwpB,GAAW1c,IAC9B4wU,EAAkB19U,EAAQo9U,GAAgBj+S,MAC9C,GAAIu+S,EAAkB19U,EAAQo9U,GAAgBtwU,IAC1C,OAAO,KAGX,IADA,IAAI6wU,EAAY,EACPC,EAAaF,EAAiBE,EAAaF,EAAkBC,EAAWC,IAAc,CAE3F,IADA,IAAIC,EAAgB,EACX95U,EAAQglO,EAAYhlO,GAASq7B,EAAUr7B,IAAS,CACrD,IAAI8uQ,EAAOjwQ,KAAKk7U,iBAAiBt0T,EAAWzlB,EAAO65U,GACnDC,EAAgB1xU,KAAKkuB,IAAIwjT,EAAehrE,EAAKt9O,SAAS6nT,EAAiB,QAC1E,CACD,IAAIW,EAAoBH,EAAaC,EACjCG,EAAgBN,EAAkBC,EAClCI,EAAoBC,IACpBL,GAAaI,EAAoBC,EAExC,CACD,IAAI53U,EAAS,CAAC,EASd,OARAA,EAAOojB,GAAa,CAChB2V,MAAO4pM,EACPj8N,IAAKsyB,GAETh5B,EAAOg3U,GAAkB,CACrBj+S,MAAOu+S,EACP5wU,IAAK4wU,EAAkBC,EAAY,GAEhCv3U,CACV,EACD03U,iBAAkB,SAASt0T,EAAWzlB,EAAO65U,GACzC,MAAO,QAAUp0T,EAAY5mB,KAAKo3U,MAAM4D,GAAY75U,GAASnB,KAAKo3U,MAAMj2U,GAAO65U,EAClF,EACDH,WAAY,SAASN,EAAO3zT,GAMxB,IALA,IAAIy0T,EAAiB,QAAUz0T,EAAY,OAAS,EAChDyxT,EAAc,QAAUzxT,EAAY5mB,KAAKs3U,MAAQt3U,KAAKu3U,MACtD/zU,GAASiiD,EAAAA,GAAAA,GAAOzlD,KAAKs4U,2BAA4B,CACjD/8C,MAAO,IAEFp6R,EAAQo5U,EAAM3zT,GAAW2V,MAAOp7B,GAASo5U,EAAM3zT,GAAW1c,IAAK/I,IAAS,CAC7E,IAAI02U,EAAaQ,EAAYl3U,GAC7BqC,EAAO+3R,OAASs8C,EAAWt8C,MAC3B/3R,EAAO23T,UAAY0c,EAAW1c,SAC9B33T,EAAO03T,SAAW2c,EAAW3c,QAC7B13T,EAAOy3T,SAAW4c,EAAW5c,SACzB5sQ,EAAAA,EAAAA,IAAUwpR,EAAWzc,UACrB53T,EAAO43T,OAASyc,EAAWzc,OAElC,CAID,OAHA53T,EAAO03T,QAAU13T,EAAO03T,QAAU13T,EAAO03T,QAAUmgB,EACnD73U,EAAOy3T,QAAUz3T,EAAOy3T,QAAUz3T,EAAOy3T,QAAU,OACnDj7T,KAAK+3U,0BAA4Bv0U,EAAO23T,SAAW,QAC5C33T,CACV,EACDuiR,QAAS,SAASu1D,GACd,IAAIC,EAAgBv7U,KAAK08M,OACzB18M,KAAKk1N,eACDqmH,IACID,EACAC,EAAc79U,UAEd69U,EAAcrsQ,SACdlvE,KAAKw7U,mBAAmBD,KAGhCv7U,KAAKu2U,sBACR,EACDiF,mBAAoB,SAASp/H,GACzBp8M,KAAKy7U,gBAAkBz7U,KAAKy7U,iBAAmB,GAC/Cz7U,KAAKy7U,gBAAgBr7U,KAAKg8M,EAC7B,EACD1pE,SAAU,WACN1yI,KAAK+2U,0BACL/2U,KAAK07U,oBACL17U,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD4jU,kBAAmB,WACV17U,KAAKy7U,kBAGV5uR,EAAAA,EAAAA,IAAK7sD,KAAKy7U,iBAAkB,SAAS38U,EAAG8F,GACpCmsE,GAAEnsE,GAAMlH,QACX,GACJ,EACDq5U,wBAAyB,YACrBlqR,EAAAA,EAAAA,IAAK7sD,KAAK2sC,OAAO,UAAW,kBACjB3sC,KAAK2K,IACf,GACJ,EACDkpN,kBAAmB/xM,GAAAA,KACnBg+I,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,OACL,IAAK,OACL,IAAK,gBACL,IAAK,qBACD4G,KAAK+2U,0BACL/2U,KAAKypK,cACL,MACJ,IAAK,QACL,IAAK,SACDzpK,KAAKmiD,SAASvkD,GACdoC,KAAK+lR,UACL,MACJ,IAAK,kBACD/lR,KAAKs2U,2BACL,MACJ,IAAK,eACDt2U,KAAK+2U,0BACL/2U,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,sBACD,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,EACDgqK,kBAAmB,WACX5nK,KAAKi3U,sBAAwBj3U,KAAK2sC,OAAO,wBACzC3sC,KAAK+lR,SAEZ,EACD5qE,QAAS,WACLn7M,KAAK+lR,SACR,IAELvzG,GAAkB,kBAAmBujK,IACrC,UC/fW4F,GAAmB,gBAEnBC,GAA4B,UAC5BC,GAAmB,gBACnBC,GAA4B,4BAC5BC,GAAiC,8BAEjCC,GAAyB,sBACzBC,GAA2B,wBAE3BC,GAAyB,sBAKzBC,GAAuB,oBACvBC,GAAwB,qBACxBC,GAAuB,kBAGvBC,GAAmB,SCrB1BC,GAAiBpwR,GAAAA,EAAAA,QAAc,CAC/BpJ,KAD+B,SAC1B4hM,EAAQpyN,GAAW,WACpBvyB,KAAK2kP,OAASA,EACd3kP,KAAKuyB,UAAYA,EACjBvyB,KAAKw8U,4BAA8B,GACnC,IAAI17U,EAAU,SAAAlD,GACV,EAAK4+U,4BAA4B97U,SAAQ,SAAAkE,GAAI,OAAIA,EAAKhH,EAAT,GAChD,EACD+mP,EAAO5C,kBAAkBh0M,IAAIjtC,GAC7B6jP,EAAO53M,GAAG,aAAc,WACpB43M,EAAO5C,kBAAkBrkP,OAAOoD,EACnC,GACJ,EACD09B,SAb+B,WAc3B,OAAOx+B,KAAK2kP,OAAOh4M,OAAO,QAC7B,EACD8vS,0BAhB+B,WAiB3B,OAAOz8U,KAAK2kP,OAAOh4M,OAAO,kBAC7B,EACD+vS,OAnB+B,WAoB3B,OAAO18U,KAAK2kP,OAAOh4M,OAAO,WAC7B,EACDgwS,uBAtB+B,SAsBRr4U,GACnBtE,KAAK2kP,OAAOh4M,OAAO,CACfgsI,iBAAkBr0K,EAAOswK,YACzB4D,iBAAkBl0K,EAAOsC,QAEhC,EACD4/B,MA5B+B,WA6B3BxmC,KAAK2kP,OAAOn+M,OACf,EACDngB,MA/B+B,WAgC3BrmB,KAAK2kP,OAAOt+N,OACf,IAEL,MChBIu2T,GAA0B,QAE1BC,GAA4B,UAC5BC,GAAYz1K,GAAAA,QAAqB,CACjC/H,aAAc,SAASliK,GACnB4C,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAK2sC,OAAOmpI,GAAAA,sBAAuC14K,GACtD,EACDwgK,mBALiC,WAM7B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B60H,gBAAiB,IAExB,EACDzzE,MAViC,WAW7BvjG,KAAKmiD,WACLniD,KAAK+8U,yBACL/8U,KAAK6nC,SAAU+kB,EAAAA,GAAAA,KACf5sD,KAAKg9U,eACLh9U,KAAKm1K,gBAAkB,CACnB3xK,OAAQ,KACR+qD,SAAU,KACV0uR,gBAAgB,EAEvB,EACDF,uBArBiC,WAsB7B,IAAIxnP,EAAQv1F,KAAK45L,aACZ55L,KAAKk9U,eACNl9U,KAAK+sC,GAAG,aAAc,SAASnvC,GAC3Bk4K,GAAAA,0BAA2Cl4K,EAAKwzB,UAAUqmJ,iBAAkB75K,EAAKwzB,UACpF,IAEApxB,KAAKk9U,eAAiBl9U,KAAKy3K,mBAAqBliF,IACjDugF,GAAAA,0BAA2C91K,KAAKy3K,iBAAkBz3K,MAClEA,KAAKk9U,eAAgB,EACrBl9U,KAAKy3K,iBAAmBliF,EACxBugF,GAAAA,yBAA0CvgF,EAAOv1F,MAExD,EACDo+J,uBAnCiC,WAoC7Bp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7B6b,iBAAiB,GAExB,EACDgnK,WAzCiC,WA2C7B,OAAO/8Q,EADOpgE,KAAKg6D,WAAW,GACF,uBAC/B,EACDgjR,aA7CiC,WA6ClB,WACPI,EAAmBp9U,KAAKm9U,aACxB79O,EAAUt/F,KAAK2sC,OAAO,WAC1B,IAAK2yD,EAAS,CACV,GAAI89O,EASA,OARA99O,EAAU,IAAIi9O,GAAea,EAAkBp9U,OACvCw8U,4BAA4Bp8U,MAAK,SAAAxC,GACjC,EAAKu3K,gBAAgB8nK,gBAGzB,EAAK17L,SAAS3jJ,EACjB,SACDoC,KAAK2sC,OAAO,UAAW2yD,GAG3B,MAAMhgF,GAAAA,MAAa,QACtB,CACD,IAAIqtC,EAAY2yC,EAAQk9O,4BACpB7vR,GACAA,EAAUvsD,MAAK,SAAAxC,GACX,EAAK2jJ,SAAS3jJ,EACjB,GAER,EACD4qK,oBArEiC,SAqEbu2G,GAChB,IAAIs+D,EAAuBx0O,EAAcy0O,EACrCt9R,EAAa,QAAUq9R,EAAwB,QAAUx0O,EAAe7oG,KAAK2sC,OAAO,kBAAe,IAAWk8D,GAAwB,QAAUy0O,EAAsBz0O,EAAa87I,cAAW,IAAW24F,OAA5E,EAA2GA,EAAoB3wS,OAAO,qBAAkB,IAAW0wS,EAAwBA,EAAwBt+D,EACpV/+Q,KAAKmiD,SAASnC,EACjB,EACDsoH,YA1EiC,WA2E7BtoK,KAAKg6D,WAAWoU,SA/EF,gBAgFdpuE,KAAKmiD,UACR,EACD24B,QA9EiC,WA+E7B96E,KAAKmiD,WACLniD,KAAKu9U,gCACR,EACDA,+BAlFiC,WAmF7B,IAAIH,EAAmBp9U,KAAKm9U,aAC5B,GAAIC,EAAkB,CAClB,IACIpjS,GADQh6C,KAAK2sC,OAAO,oBAAsB,IACvBwlB,MAAK,SAAAn7C,GAIxB,MAAO,aADHA,EADA3R,IAGP,KAAK,KACF+3U,EAAiBh9K,iBACjBg9K,EAAiBtiI,QAAQ,WAAY9gK,GAEzCojS,EAAiBzwS,OAAO,qBAAqB,WACzCywS,EAAiBtiI,QAAQ,WAAY9gK,EACxC,GACJ,CACJ,EACD2tH,mBApGiC,SAoGd9mH,GACXA,GACA7gD,KAAK+8U,wBAEZ,EACDj9K,eAzGiC,SAyGlBliK,GACX,OAAQA,EAAKxE,MACT,IAAK,kBAED,YADA4G,KAAK+8U,yBAET,IAAK,kBAID,OAHA/8U,KAAKw9U,wBACLx9U,KAAKu9U,2CACL,IAAWv9U,KAAK2sC,OAAO,YAAc3sC,KAAKuhJ,YAE9C,IAAK,UACDvhJ,KAAKg9U,eACL,MACJ,IAAK,UACL,IAAK,mBACDh9U,KAAK2sC,OAAOmpI,GAAAA,6BAA8Cl4K,EAAMoC,KAAK2sC,WACrE,MACJ,QACI3sC,KAAKmiD,SAASvkD,GAEzB,EACD6/U,oBA9HiC,WA8HX,WAOlB,OANKz9U,KAAK09U,mBACN19U,KAAK09U,kBAAmB35U,EAAAA,EAAAA,IAAI/D,KAAK2sC,OAAO,oBAAoB,SAACvkC,EAAMjH,GAAP,OAAiBskD,EAAAA,GAAAA,GAAO,CAAC,EAAGr9C,EAAM,CAC1FmqB,UAAW,EACXpxB,MAAOA,GAFiD,KAKzDnB,KAAK09U,gBACf,EACD9jJ,WAvIiC,WAwI7B,IAAI5/H,EAAWh6D,KAAKg6D,WACpB,OAAOh6D,KAAK2sC,OAAO,oBAAsBmpI,GAAAA,UAA2B97G,EAAUh6D,KAAKupK,gBAAgBvvG,GACtG,EACDwjR,sBA3IiC,kBA4ItBx9U,KAAK09U,gBACf,EACDn8L,SA9IiC,SA8IxB3jJ,GAAM,IAWP4F,EAXO,OACP87F,EAAUt/F,KAAK2sC,OAAO,WACtBvzC,EAAO4G,KAAK2sC,OAAO,QACnB+vS,EAASp9O,EAAQo9O,QAAUp9O,EAAQo9O,SACnCx+U,EAAQN,QAAQ,IAAWA,EAAKM,MAAQN,EAAKM,MAAQohG,EAAQ9gE,WAC7Dm/S,EAAer+O,EAAQm9O,2BAA6Bn9O,EAAQm9O,4BAC5D7vU,EAAQ5M,KAAKy9U,sBACbG,EAAgB59U,KAAKm1K,iBAAmBn1K,KAAKm1K,gBAAgB3xK,OACjE,OAAIo6U,GAAiBA,EAAch3U,SAAWi2U,IAA6Be,EAAc1/U,QAAUA,GACxFunD,EAAAA,GAAAA,GAAO,CAAC,EAAGm4R,IAGlBlB,EACAl5U,EAAS,CACL0sI,SAAS,EACTtpI,OAAQg2U,IAELe,GAAgBA,EAAap8E,gBACpCo8E,EAAaprT,UAAYvyB,KACzBwD,EAAS,CACL0sI,SAAS,EACTtpI,OArKgB,UAsKhBkwK,WAAY6mK,EACZ/oK,YAAa,CAAC+oK,KAGlBn6U,EAASsyK,GAAAA,SAA0B53K,EAAO0O,EAAOxT,GAErDoK,EAAOua,IAAM,IAAImuC,GAAAA,GAAM5uD,WACvB0C,KAAK69U,uBAAuBr6U,EAAQ87F,GACpC97F,EAAOme,UAAYne,EAAOme,SAAS7jB,MAAK,SAAAs+H,GAChCA,EAAIr+G,KAAO,EAAKo3J,gBAAgB3xK,OAAOua,IACvC,EAAK8/T,uBAAuBzhN,EAAK98B,EAExC,KACM75C,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKm1K,gBAAgB3xK,QAC1C,EACDgjC,MAnLiC,WAoL7B,IAAI84D,EAAUt/F,KAAK2sC,OAAO,WACtBnpC,EAAS,CACTua,GAAI,KACJmyH,SAAS,EACT4mC,WAAY,KACZlC,YAAa,KACbqC,aAAc,KACdrwK,OAAQg2U,GACRj7T,SAAU,MAEd3hB,KAAKm1K,gBAAgB8nK,gBAAiB,EACtC39O,EAAQ94D,QACRxmC,KAAKm1K,gBAAgB8nK,gBAAiB,EACtCj9U,KAAKw9U,wBACLx9U,KAAK69U,uBAAuBr6U,EAAQ87F,EACvC,EACDw+O,wBApMiC,SAoMTt6U,GACpB,GAAKxD,KAAKm1K,gBAAgB3xK,QAAUxD,KAAKm1K,gBAAgB3xK,OAAOua,KAAOva,EAAOua,GAM1E,IAAK,IAAIlhB,KAAQ2G,EACT,OAAS3G,GAAQ,aAAeA,IAChCmD,KAAKm1K,gBAAgB3xK,OAAO3G,GAAQ2G,EAAO3G,QAR2B,CAC9E,IAAI8kB,EAAW3hB,KAAKm1K,gBAAgB5mH,UAAYvuD,KAAKm1K,gBAAgB3xK,OAAOme,SAC5E3hB,KAAKm1K,gBAAgB3xK,QAASiiD,EAAAA,GAAAA,GAAO,CAAC,EAAGjiD,EAAQ,CAC7Cme,SAAUA,GAEjB,CAOJ,EACDk8T,uBAlNiC,SAkNVr6U,EAAQ87F,GAC3B,IAAIy+O,EAAkB/9U,KAAK2/J,sBAAsB,cAAe,CAC5D5e,kBAAmB,CAAC,cAQxB,GANAv9I,EAAO+uB,UAAYvyB,KACnBA,KAAK89U,wBAAwBt6U,GAC7B87F,EAAQq9O,wBAA0Br9O,EAAQq9O,uBAAuB38U,KAAKm1K,gBAAgB3xK,QACtFxD,KAAK2sC,OAAO,CACR6rI,iBAAkBx4K,KAAKm1K,gBAAgB3xK,OAAOoD,SAE9C5G,KAAKm1K,gBAAgB3xK,OAAOoD,SAAWi2U,GAMvC,OALK78U,KAAKm1K,gBAAgB5mH,WACtBvuD,KAAKm1K,gBAAgB5mH,SAAW,IAAIlxC,GAAAA,GACpCrd,KAAKm1K,gBAAgB3xK,OAAOme,SAAW3hB,KAAKm1K,gBAAgB5mH,SAASjxC,gBAEzEtd,KAAKi2E,gBAAgB2B,UAAU,aAAc,CAAC53E,KAAKm1K,gBAAgB3xK,SAGnExD,KAAKm1K,gBAAgB3xK,OAAOoD,SAAWi2U,KACvCkB,EAAgBv6U,GACZxD,KAAKm1K,gBAAgB5mH,WACrBvuD,KAAKm1K,gBAAgB5mH,SAAS3vD,QAAQ4E,GACtCxD,KAAKm1K,gBAAgB5mH,SAAW,MAG3C,EACDloC,MA5OiC,WA6O7B,IAAIi5E,EAAUt/F,KAAK2sC,OAAO,WAC1B2yD,GAAWA,EAAQj5E,OAASi5E,EAAQj5E,OACvC,EACDihJ,cAAe,WACX,OAAO,CACV,IAELkL,GAAkB,cAAesqK,IACjC,UC5PIkB,GAA2B,CAAC,WAAY,gBAAiB,kBAClDC,GAAyB,CAAC,aAAc,aAAc,eAAgB,eAAgB,gBAAiB,WAAY,YACvH,SAASC,GAAgClnU,GAC5C,IACamxM,EAqBTnxM,EArBAmxM,QACyBg2H,EAoBzBnnU,EApBAmnU,wBACqBC,EAmBrBpnU,EAnBAonU,oBACyBC,EAkBzBrnU,EAlBAqnU,wBACMz5U,EAiBNoS,EAjBApS,KACU4a,EAgBVxI,EAhBAwI,SACe8+T,EAeftnU,EAfAsnU,cACMllV,EAcN4d,EAdA5d,KACmBmlV,EAanBvnU,EAbAunU,kBACyBC,EAYzBxnU,EAZAwnU,wBACiBroK,EAWjBn/J,EAXAm/J,gBACasoK,EAUbznU,EAVAynU,YACiCC,EASjC1nU,EATA0nU,gCAC0BC,EAQ1B3nU,EARA2nU,yBACmBl6R,EAOnBztC,EAPAytC,kBACqBm6R,EAMrB5nU,EANA4nU,oBACsBC,EAKtB7nU,EALA6nU,qBACQC,EAIR9nU,EAJA8nU,OACoBC,EAGpB/nU,EAHA+nU,mBACW5rF,EAEXn8O,EAFAm8O,UACyB6rF,EACzBhoU,EADAgoU,wBAEAhlS,GAAaqU,EAAAA,EAAAA,IAAUzpD,EAAKo1C,YAAcp1C,EAAKo1C,aAuIvD,SAA+BptC,GAC3B,IAAIqyU,EACAryU,GAASA,EAAMjM,SACfksD,EAAAA,EAAAA,IAAKjgD,GAAQ,SAASzL,EAAOiH,GACzB,GAAI,aAAeA,EAAK/C,KAEpB,OADA45U,GAAkB,GACX,CAEd,IAEL,OAAOA,CACV,CAlJqEC,CAAsBt6U,EAAKoyK,iBACzFmoK,EAAev6U,EAAK60O,WAAa6iG,GACjC8C,EAASx6U,EAAKy6U,SAAW,MAAQ,IAAInzR,GAAAA,EAAO,KAC5CozR,EAiJR,SAAgC34L,GAC5B,IACU/hJ,EASN+hJ,EATA/hJ,KACImZ,EAQJ4oI,EARA5oI,GACYi8B,EAOZ2sG,EAPA3sG,WACoB+kS,EAMpBp4L,EANAo4L,mBACqBH,EAKrBj4L,EALAi4L,oBACeW,EAIf54L,EAJA44L,cACejB,EAGf33L,EAHA23L,cACekB,EAEf74L,EAFA64L,cACyBR,EACzBr4L,EADAq4L,wBAEAS,EAAwBxB,GAAuB14U,SAASX,EAAK86U,YAC7DJ,GAAe75R,EAAAA,GAAAA,GAAO,CACtBk6R,UAAWf,EACXjsT,SAAU4sT,EACVxhU,GAAIA,EACJ8iC,QAAS,YAAc2+R,GAAiBC,GAAyB,WAAaD,EAC9ExlS,WAAYA,GACbp1C,EAAOA,EAAK8S,MAAQ,CAAC,EAAG,CACvBkoU,YAAaC,GAA0Bd,EAAoB/kS,GAC3DskS,cAAeA,EACfU,wBAAyBA,IAEzB,CAAC,eAAgB,aAAc,WAAY,WAAY,gBAAiB,WAAY,eAAgB,kBAAkBz5U,SAASX,EAAK86U,cACpIJ,EAAaQ,QAAU,YAAY7vU,OAAO,IAAIi8C,GAAAA,KAE7CozR,EAAa34U,MAAQ/B,EAAKomU,YAC3BsU,EAAa34U,KAAO2+D,EAAW1gE,EAAKomU,YAEpCsU,EAAa34U,OACb24U,EAAaS,iBAAmBT,EAAa34U,KAC7C24U,EAAa34U,MAAQ24U,EAAaK,UAAY,IAAM,IAExD,OAAOL,CACV,CApLsBU,CAAuB,CACtCp7U,KAAMA,EACNmZ,GAAI+gU,EACJ9kS,WAAYA,EACZ+kS,mBAAoBA,EACpBH,oBAAqBA,EACrBW,cAAeV,EACfW,cAAersF,EACfmrF,cAAeA,EACfU,wBAAyBA,IAEzBiB,EAAkBX,EAAaz+R,UAAYy+R,EAAa34U,MAAQ24U,EAAahB,eAAiBa,GAEpFI,EAEVD,EAFA3sT,SACSmtT,EACTR,EADAQ,QAEAI,EAAyB,QAAUX,GAAiB,CAAC,aAAc,eAAgB,aAAc,gBAAgBh6U,SAASX,EAAK86U,YAC/H36B,EAiER,SAAiCx+J,GAC7B,IACgBm5L,EAWZn5L,EAXAm5L,WACmBS,EAUnB55L,EAVA45L,kBACa1B,EASbl4L,EATAk4L,YACiCC,EAQjCn4L,EARAm4L,gCACuB0B,EAOvB75L,EAPA65L,sBACeC,EAMf95L,EANA85L,cAC0B1B,EAK1Bp4L,EALAo4L,yBACmBl6R,EAInB8hG,EAJA9hG,kBACe+6R,EAGfj5L,EAHAi5L,cACWc,EAEX/5L,EAFA+5L,UACWltF,EACX7sG,EADA6sG,UAEAmtF,EAAyB,CAAC,QAC1B,IAAW9B,GAAeC,KAC1B6B,EAAuBriV,MAAQugV,IAE9B,IAAMT,GAAyB58U,QAAQs+U,KACxCa,EAAuBriV,MAAQqiV,EAAuBriV,OAAS,IAEnE,IAAIi1P,EAAY,OAASitF,QAAyB,IAAWA,OAAwB,EAASA,EAAsBjtF,WAC/G9kM,EAAAA,EAAAA,IAAU8kM,KACXA,EAAY,YAAcqsF,EAAgB,SAAWA,GAEzD,IAAIl3I,GAAe,OAAS83I,QAAyB,IAAWA,OAAwB,EAASA,EAAsB93I,cAAgB7jJ,EACnIjhD,GAASiiD,EAAAA,GAAAA,IAAO,EAAM86R,EAAwBH,EAAuB,CACrEztF,UAAW,CACP50O,GAAIsiU,GAERz+F,mBAAoB+8F,EACpBr2I,YAAaA,EACb5wL,MAAO4oU,EACPntF,UAAWA,EACXC,UAAWA,IAEXgtF,IACI58U,EAAO+jG,aACP/jG,EAAO+jG,WAAa64O,EAAsB74O,YAE1C/jG,EAAO0iD,QACP1iD,EAAO0iD,MAAQk6R,EAAsBl6R,QAGzCi6R,IAAsB38U,EAAOpK,OAC7BoK,EAAOpK,KAAO+mV,GAElB,OAAO38U,CACV,CAjHuBg9U,CAAwB,CACxCd,WAAY96U,EAAK86U,WACjBjB,YAAaA,EACb0B,kBAAmBv7U,EAAKomU,UACxB0T,gCAAiCA,EACjC0B,sBAAuBx7U,EAAKmgT,cAC5Bs7B,cAAevB,EACfH,yBAA0BA,EAC1Bl6R,kBAAmBA,EACnB+6R,cAAersF,EACfmtF,UAAWhB,EAAaS,iBACxB3sF,UAAWksF,EAAaM,YAAYa,iBAAmBh3U,OAAOC,aAAa,KAAO41U,EAAaM,YAAYc,aAAe,KAI9H,MAAO,CACHv4H,QAASA,EACTg2H,wBAAyBA,EACzBC,oBAAqBA,EACrBC,wBAAyBA,EACzBiB,aAAcA,EACdY,uBAAwBA,EACxBX,cAAeA,EACfU,gBAAiBA,EACjBr7U,KAAMA,EACNu6U,aAAcA,EACdnlS,WAAYA,EACZx6B,SAAUA,EACV4/T,OAAQA,EACRU,QAASA,EACT1mV,KAAMA,EACNimV,SAlBmCC,EAAaM,YAAYe,mBAAqBrB,EAAaz+R,SAAW,WAAakkQ,EAAc5xD,aAAc9kM,EAAAA,EAAAA,IAAUzpD,EAAKy6U,UACnHC,EAAaM,YAAYgB,aAAeh8U,EAAKy6U,SAkB3Fd,kBAAmBA,EACnBC,wBAAyBA,EACzBroK,gBAAiBA,EACjB4uI,cAAeA,EAEtB,CAaM,SAAS86B,GAA0B/5L,EAAO9rG,GAO7C,MAAO,CACHymS,iBAFA36L,EAJA26L,kBAMsCzmS,EACtC0mS,aAHA56L,EAHA46L,aAOAC,iBAJA76L,EAFA66L,mBAMuC3mS,EACvC4mS,aALA96L,EADA86L,aAQP,CC/GM,IACIC,GAAiC,8BACjCC,GAAkC,gCAClCC,GAAiC,8BAErC,SAASC,GAAYhqU,GACxB,IACUrQ,EASNqQ,EATArQ,KACIoX,EAQJ/G,EARA+G,GACU4U,EAOV3b,EAPA2b,SACWsuT,EAMXjqU,EANAiqU,UAJJ,EAUIjqU,EALA8oU,QAASA,OALb,MAKuB,KALvB,IAUI9oU,EAJA4oU,YAAaA,OANjB,MAM+B,CAAC,EANhC,EAOmBtB,EAGftnU,EAHAsnU,cACmB4C,EAEnBlqU,EAFAkqU,kBACyBlC,EACzBhoU,EADAgoU,wBAEJ,MAAM3wR,EAAAA,EAAAA,IAAU1nD,IAASA,EAAKhG,QAAU,MAAO0tD,EAAAA,EAAAA,IAAUiwR,GACrD,OAAO,KAEX,IAAItvG,EAASj+J,GAAE,WAAW3C,SAAS4tQ,oDAAiErpT,GAAUu7C,KAAK,MAAOnwD,GAAImwD,KAAK,KAAM4xQ,GAASx6S,IAAI,YAAa27S,GAC/JE,EAAkBpwQ,GAAE,UAAU3C,SAAS2tQ,IACvCqF,EAAgBrwQ,GAAE,UAAU3C,SAlBK,4BAkBiCznE,KAAKA,GAY3E,OAXI23U,IACA8C,EAAgBrwQ,GAAE,SAAS3C,SAAS,sCACpC8yQ,EAAkBv6U,KAAOA,EACzB23U,EAAchwS,OAAO,CACjB/mC,UAAWs6I,GAAiBu/L,GAC5B3rS,MAAOyrS,EACP3qS,WAHiB,WAIb,OAASyoS,QAA2B,IAAWA,GAAmCA,GACrF,KAGFhwG,EAAOrpO,OAAOw7U,EAAgBx7U,OAAOy7U,EAGhD,SAA0BxB,GACtB,IAAIyB,EDgDD,SAA0B38K,GAC7B,IACsB+7K,EAIlB/7K,EAJA+7K,iBACcC,EAGdh8K,EAHAg8K,aACkBC,EAElBj8K,EAFAi8K,iBACcC,EACdl8K,EADAk8K,aAEJ,OAAKH,GAAqBE,EAGnBl3U,OAAOC,aAAa,MAAQ+2U,EAAmBC,EAAeE,GAF1D,EAGd,CC3DkBU,CAAiB1B,GAChC,GAAI,KAAOyB,EACP,OAAO,KAEX,OAAOtwQ,GAAE,UAAU3C,SAASwxQ,EAAYa,iBAAmBI,GAAiCE,IAAgCp6U,KAAK06U,EACpI,CAT8DE,CAAiB3B,IAC/E,CASM,SAAS4B,GAA6BC,EAAkBC,EAAgBC,GAC3E,IAGIC,EACAj5U,EAJAk5U,EAA0C,GAAG5xU,OAAOyxU,EAAgB,QAAQzxU,OAAO+rU,GAAwB,UAAU/rU,OAAO6wU,GAAiC,YAAY7wU,OAAO8rU,IAChL+F,EAAwCL,EAAiBzlV,KAAK6lV,GAC9DE,EAAwCD,EAAsCnhV,OAG9EggC,EAAW,EACf,IAAKh4B,EAAI,EAAGA,EAAIo5U,EAAuCp5U,KACnDi5U,EAAaI,GAAoBF,EAAsCn5U,KACtDg4B,IACbA,EAAWihT,GAGnB,IAAKj5U,EAAI,EAAGA,EAAIo5U,EAAuCp5U,IACnDm5U,EAAsCn5U,GAAGmuB,MAAMnG,MAAQgQ,EAAW,IAEzE,CAED,SAASqhT,GAAoBC,GAGzB,IAFA,IAAIz+U,EAAS,EACTilO,EAAaw5G,EAAal3U,SAASpK,OAC9BgI,EAAI,EAAGA,EAAI8/N,EAAY9/N,IAAK,CAEjCnF,GADYy+U,EAAal3U,SAASpC,GAClB8mE,WACnB,CACD,OAAOjsE,CACV,CC9DM,IAGI0+U,GAAmC,gCAW1CC,GAA0B,uBAEvB,SAASC,GAAgBprU,GAC5B,IACamxM,EAoBTnxM,EApBAmxM,QACyBg2H,EAmBzBnnU,EAnBAmnU,wBACqBC,EAkBrBpnU,EAlBAonU,oBACyBC,EAiBzBrnU,EAjBAqnU,wBACciB,EAgBdtoU,EAhBAsoU,aACwBY,EAexBlpU,EAfAkpU,uBACeX,EAcfvoU,EAdAuoU,cACiBU,EAajBjpU,EAbAipU,gBACmB1B,EAYnBvnU,EAZAunU,kBACM35U,EAWNoS,EAXApS,KACemgT,EAUf/tS,EAVA+tS,cACco6B,EASdnoU,EATAmoU,aACYnlS,EAQZhjC,EARAgjC,WACUx6B,EAOVxI,EAPAwI,SACQ4/T,EAMRpoU,EANAooU,OACSU,EAKT9oU,EALA8oU,QACM1mV,EAIN4d,EAJA5d,KACUimV,EAGVroU,EAHAqoU,SACyBb,EAEzBxnU,EAFAwnU,wBACiBroK,EACjBn/J,EADAm/J,gBAEAksK,EAAetxQ,GAAE,SAAS3C,SAAS+vQ,EAAwB1xU,KAAK,MAAMkiE,SAASw5I,GACnFk6H,EAAaj0Q,SAASp0B,EAtCa,yBADA,0BAwC/BmlS,GACAkD,EAAaj0Q,SA1CU,kBA4CvB+wQ,GAAgBe,GAChBmC,EAAaj0Q,SAxCqB,6BA0CtC,IAAIk0Q,EAAwBvxQ,GAAE,SAC9BuxQ,EAAsBhoV,KAAK,eAAgBsK,GAC3C09U,EAAsBl0Q,SAAS6tQ,IAA0B7tQ,SA7Cd,kCA6C2D,CAClG1pC,MAAO,OACPE,KAAM,QACNH,IAAK,UACN85S,IACH,IAuCI/T,EAvCAx7F,EAAS,KAOb,GANIixG,IACIX,EAAahB,gBACbgB,EAAa4B,kBAAoBqB,GAAgB39U,EAAMmgT,EAAeq5B,IAE1EpvG,EAASgyG,GAAY1B,IAErBtwG,EAAQ,CACR,IACgB0wG,EACZ96U,EADA86U,WAEJ2C,EAAa18U,OAAOqpO,GAChB,QAAUuwG,GAAiB,SAAWA,GACtC8C,EAAa18U,OAAO28U,GAEpB,UAAY/C,GACZ8C,EAAa/6U,QAAQg7U,GAErB,QAAU/C,EACV8C,EAAaj0Q,SAlEmB,oBAoEhCi0Q,EAAaj0Q,SAnEqB,oBAqElC,eAAiBsxQ,GAAc,aAAeA,GAC9CnhR,EAAAA,EAAAA,GAAgBywK,EAAQ/a,IAAiB,WACrC11J,EAAAA,EAAAA,QAAqB+jR,EAAsBv3U,WAAYkpN,GAC1D,IAEL,IAAIuuH,EAAmB,CAAC,aAAc,WAAY,gBAAgBj9U,SAASm6U,GACvE+C,EAAiBnD,EAAa2B,WAEZzhU,GAEAgjU,GADH,QAAUjD,IAFF,SAAWkD,IAAmBA,IAIrDH,EAAsBl0Q,SA/ES,8BAiFtC,MACGi0Q,EAAa18U,OAAO28U,GAGxB,GAAI9iU,EACAA,EAAS8uB,OAAO,CACZ/mC,UAAWs6I,GAAiBygM,GAC5B7sS,MAAO8sS,GAAgB39U,EAAMmgT,EAAeq5B,GAC5C7nS,WAHY,WAIR,IACImsS,EAgEpB,SAAwCC,GACpC,IAAIC,EAAuBC,EAC3B,OAAQ,OAASF,QAAqB,IAAWA,OAAoB,EAASA,EAAkBroV,KAAK6nV,OAA8B,OAASQ,QAAqB,IAAWA,GAA6B,QAAUC,EAAwBD,EAAkB93U,cAAW,IAAW+3U,GAAiC,QAAUC,EAAyBD,EAAsBnkV,KAAKkkV,UAAuB,IAAWE,OAApN,EAAsPA,EAAuBvoV,KAAK6nV,IACrd,CAnE8CW,CADPC,GAAoBT,IAE5CU,GAAmCN,EACtC,QAEF,CACH,IAAIO,EAAOlyQ,GAAE,SAASpC,SAAS2zQ,GAC/B,KACI9X,EAAiB6T,EAAwB4E,EAAMr+U,EAAK86U,WAAY36B,IACjDjqG,QAAQ,cAAeskI,GAClCU,GACAtV,EAAe1vH,QAAQ,aAAcglI,GAEzCtV,EAAe1vH,QAAQ,WAAY9gK,EAGtC,CAFC,MAAO/wC,GACLqW,GAAAA,IAAW,QAASrW,EAAE7O,QACzB,CACJ,CACD,IAAIuoV,EAAoBI,GAAoBT,GACxCI,EAA2BC,GAAqBA,EAAkBroV,KAAK6nV,IAC3E,GAAIO,EAA0B,CAC1B,IAGI1rK,EAHAksK,EAAwBt+U,EAAK8S,OAAS9S,EAAK8S,MAAM/Q,KACjDw8U,EAAWD,EAAwB,KAAO9pV,EAC1C+0I,EAAY+0M,EAAwBt+U,EAAK8S,MAAM/Q,KAAOw8U,GAAY79Q,EAAW69Q,GAEjF,GAAIhE,EACA,GAAIv6U,EAAKoyK,gBACLA,EAAkBpyK,EAAKoyK,oBACpB,CACH,IAAIosK,GAAkBvrR,EAAAA,GAAAA,IAAO2mR,EAAyBrwM,GAAa,IACnE6oC,EAAkBpyK,EAAKo1C,WAAa,CAAC,CACjC30C,KAAM,WACNjL,QAASgpV,IACR,IACR,CAEDv+U,MAAMC,QAAQkyK,IAAoBA,EAAgBr2K,QAClD09U,EAAwBsE,EAAmB7F,GAAW,CAClD9lK,gBAAiBA,EACjBb,gBAAiBA,EACjB1C,WAAY,WACR,MAAO,CACH4vK,SAAUz+U,EAEjB,IAGTo+U,GAAmCN,EACtC,CACGrD,GAAYF,GACQmD,EAAsBz3U,SAC5BlF,OAAOorE,GAAE,SAAS3C,SAAS8zQ,IAAkCv8U,OAAO28U,GAAuB38U,OAAOorE,GAAE,SAAS3C,SAhJ3F,2BAgJgIF,KAAK,KAAMkxQ,GAAQz4U,KAAK04U,KAE5L,MAAO,CACHiD,sBAAuBA,EACvBD,aAAcA,EACd7X,eAAgBA,EAEvB,CAED,SAASuY,GAAoBT,GACzB,IAAIl3F,EAAUk3F,EAAsBv3U,WAAWgqC,QAC/C,OAAOq2M,EAAQ98K,SApJU,uBAoJyB88K,EAAQrgP,WAAWgqC,QAAUq2M,CAClF,CAOD,SAAS43F,GAAmCN,GACxC,GAAIA,GAA4BxlJ,KAAc,CAC1C,IAAIomJ,EAAe,IAAIrzU,OAAOiyU,IAC1BqB,EAAqB,SAAA7+K,GACrB,IACal4J,EAETk4J,EAFAl4J,QACW4kB,EACXszI,EADAtzI,UAEA,EAGAA,EAAUub,SAFDujG,EADb,EACIA,QACuBuxG,EAF3B,EAEIA,sBAEJ1wK,GAAEvkE,GAAS6yD,QAAQikR,GAAcr1Q,YAtKzB,cAsKoD,IAAUiiE,IAAY9+G,EAAU0oL,cAAgB,WAAa2nC,GAC5H,EACDihG,EAAyB31S,GAAG,iBAAiB,SAAA9jC,GACrC,YAAcA,EAAE7P,MAGpBmqV,EAAmBt6U,EACtB,IACDy5U,EAAyB31S,GAAG,UAAWw2S,GAAoBx2S,GAAG,WAAYw2S,GAAoBx2S,GAAG,WAAYw2S,EAChH,CACJ,CAED,SAAShB,GAAgB39U,EAAMmgT,EAAeq5B,GAC1C,MAAO,CACHpT,UAAWpmU,EAAKomU,UAChB0U,WAAY96U,EAAK86U,WACjB36B,cAAeA,EACf3zR,UAAWgtT,EACXhlV,KAAMwL,EAAKxL,KAElB,CCvNM,SAASoqV,GAAiBxsU,GAC7B,IAkBiCysU,EAjBvB7+U,EAKNoS,EALApS,KACSujN,EAITnxM,EAJAmxM,QACyBg2H,EAGzBnnU,EAHAmnU,wBACiBhoK,EAEjBn/J,EAFAm/J,gBACyBkoK,EACzBrnU,EADAqnU,wBAEAgE,EAAetxQ,GAAE,SAASpC,SAASw5I,GAAS/5I,SAAS+vQ,EAAwB1xU,KAAK,MAAM2hE,SATlE,wBASoG9oC,IAAI,aAWjGm+S,EAX0I7+U,EAAK6+U,qBAYzKp1R,EAAAA,EAAAA,IAAUo1R,GAAuBA,EAAsB,UAT9D,OAFAt7H,EAAQ7iL,IAAI,iBAchB,SAA0Co+S,GACtC,OAAQA,GACJ,IAAK,SACD,MAAO,SACX,IAAK,SACD,MAAO,WACX,QACI,MAAO,aAElB,CAvBiCC,CAAiC/+U,EAAK8+U,oBAE7D,CACHrB,aAAcA,EACdrsF,eAAgBqoF,EAHNttQ,GAAE,SAASpC,SAAS0zQ,GAGmB,YAAY58R,EAAAA,GAAAA,GAAO,CAChE0wH,gBAAiBA,GAClBvxK,EAAKg/U,gBAEf,CCvBM,SAASC,GAAgB7sU,GAC5B,IACamxM,EAETnxM,EAFAmxM,QACyBg2H,EACzBnnU,EADAmnU,wBAEJ,OAAOptQ,GAAE,SAAS3C,SANc,uBAMmBjB,KAAK,UAAUiB,SAAS+vQ,EAAwB1xU,KAAK,MAAMkiE,SAASw5I,EAC1H,CCyDD,IAKI27H,GAAgBl/I,GAAAA,QAAe,CAC/BhnC,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B4hS,WAAY,CAAC,EACbhvT,UAAU,EACV05O,SAAU,EACVu1E,sBAAkB,EAClBzE,cAAe,OACf0E,mBAAoB,KACpBC,iBAAkB,KAClBC,cAAe,KACfC,iBAAiB,EACjBC,YAAa,IACb5D,kBAAkB,EAClBvK,cAAe,KACfyK,kBAAkB,EAClBD,aAAc,IACdvtF,UAAW,UACXytF,aAAcx2N,GAAAA,OAA2B,uBACzCg5N,gBAAiBh5N,GAAAA,aAAiC,2BAEzD,EACDg0C,uBAAwB,WACpBp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7BypL,YAAY,EACZ5tK,iBAAiB,GAExB,EACD5yE,MAAO,WACH,IAAIwgP,EAAa/jV,KAAK2sC,OAAO,cAC7B3sC,KAAKmiD,WACLniD,KAAKskV,cAAgB,GACrBtkV,KAAKuzU,kBAAoB,IAAIhJ,GAC7BvqU,KAAKukV,yBAAyBR,GAC9B/jV,KAAKwkV,kBAAkBT,EAC1B,EACDrxM,SAAU,WACN1yI,KAAKmiD,WACLniD,KAAKykV,oBACR,EACDD,kBAAmB,SAASE,GACxB1kV,KAAK2kV,qBACL3kV,KAAKusU,aAAamY,EACrB,EACDC,mBAAoB,WAAW,WACvBZ,EAAa/jV,KAAK2sC,OAAO,cACzBi4S,EAAY5kV,KAAK2sC,OAAO,UACxB0hB,EAAAA,EAAAA,IAAUu2R,IACVA,EAAUlkV,SAAQ,SAAAkE,GAEV,IAAI1G,EADJ0G,EAAKomU,gBAAa,IAAW,EAAK6Z,gBAAgBjgV,EAAKomU,aAEnDpmU,EAAKmgT,gBACL7mT,EAAQ0G,EAAKmgT,cAAc7mT,SAE3BmwD,EAAAA,EAAAA,IAAUnwD,IAAU0G,EAAKomU,aAAa+Y,IACtC,EAAKe,kBAAkBlgV,EAAKomU,UAAW9sU,GAGlD,GAER,EACD2mV,gBAAiB,SAAS7Z,GACtB,OAAOA,EAAYhrU,KAAK2sC,OAAO,cAAgBq+R,GAAa,IAC/D,EACD+Z,iCAAkC,SAAS/tU,GACvC,IAC6BguU,EAGzBhuU,EAHAguU,wBACYtF,EAEZ1oU,EAFA0oU,WACW1U,EACXh0T,EADAg0T,UAEJ,IAAI,IAASga,GAA2B,eAAiBtF,EAAY,CACjE,IAAIuF,EAAY,CAAC,cAAJ,gBAAqBja,EAAU3oU,MAAM,OAC9C8yD,EAAe8vR,EAAUr3R,MACzBm2R,EAAa/jV,KAAK2sC,OAAOs4S,EAAUx4U,KAAK,MAC5C,OAAOs3U,GAAc5uR,KAAgB4uR,CACxC,CACD,OAAO,CACV,EACDe,kBAAmB,SAAS9Z,EAAW9sU,GACnC,IAAI6lV,EAAa/jV,KAAK2sC,OAAO,cACzB9D,EAAW3qC,GACV01D,GAAAA,EAAAA,UAA0BmwR,EAAW/Y,MAAe38Q,EAAAA,EAAAA,IAAU28Q,GAC/DhrU,KAAK2sC,OAAO,cAAgBq+R,EAAWniS,GAChC+qB,GAAAA,EAAAA,kBAAkCmwR,EAAW/Y,MACpDniS,GAAWgmB,EAAAA,EAAAA,IAAWhmB,GAAYA,IAAaA,EAC/Ck7S,EAAW/Y,GAAWniS,IAE1B7oC,KAAKklV,2BAA2B,CAC5Bla,UAAWA,EACX9sU,MAAO2qC,GAEd,EACDq8S,2BAA4B,SAAStnV,GACjCoC,KAAK2/J,sBAAsB,qBAA3B3/J,CAAiDpC,EACpD,EACD2uU,aAAc,SAASwX,GACnB,IAAIt0R,EAAOzvD,KACP4kV,EAAY5kV,KAAK2sC,OAAO,SACxBw4S,GAAmB92R,EAAAA,EAAAA,IAAUu2R,GAC7BT,EAAgB10R,EAAK9iB,OAAO,iBAC5BuZ,EAAQi/R,EAAmBP,EAAY5kV,KAAKolV,qBAAqBrB,GACrE,IAAI11R,EAAAA,EAAAA,IAAUnI,GAAQ,CAClB,IAAIm/R,EAAiB,IACrBx4R,EAAAA,EAAAA,IAAK3G,GAAQ,SAAS/kD,EAAOyD,GACrB6qD,EAAK61R,kBAAkB1gV,KACvBA,EAAO6qD,EAAK81R,aAAa3gV,GACzBu/U,GAAiBA,EAAcv/U,IAC3Byb,EAAAA,EAAAA,IAASzb,KAAS,IAAUgvD,GAAAA,EAAAA,OAAuBhvD,EAAKi8C,UACxDwkS,EAAejlV,KAAKwE,GAG/B,IACI6qD,EAAK60R,cAAc3jV,QAAWwkV,GAC/B11R,EAAK+1R,oBAAoBt/R,GAE7BlmD,KAAKylV,UAAUJ,GACfrlV,KAAK0lV,YACR,CACJ,EACDjB,mBAAoB,WAChBzkV,KAAKskV,cAAc5jV,SAAS,SAAS6rC,GACjCA,GACH,IACDvsC,KAAKskV,cAAgB,EACxB,EACDkB,oBAAqB,SAASt/R,GAC1B,IAAIuJ,EAAOzvD,KACP2lV,EAAQl2R,EAAKm2R,YACjB1/R,EAAMxlD,SAAS,SAASkE,IAChByb,EAAAA,EAAAA,IAASzb,KAASypD,EAAAA,EAAAA,IAAUzpD,EAAKi8C,WAAYgO,EAAAA,EAAAA,IAAW82R,IACxDl2R,EAAK60R,cAAclkV,KAAKulV,GAAO,WAC3B,OAAO/xR,GAAAA,EAAAA,OAAuBhvD,EAAKi8C,QACtC,IAAI,WACD4O,EAAK88Q,aAAa98Q,EAAK9iB,OAAO,eAC9B8iB,EAAK0rJ,SACR,GAAG,CACAj2C,eAAe,IAG1B,GACJ,EACDkgL,qBAAsB,SAASrB,GAC3B,IAAIvgV,EAAS,GAQb,OAPI6qD,EAAAA,EAAAA,IAAU01R,KACVl3R,EAAAA,EAAAA,IAAKk3R,GAAa,SAAS/Y,GACvBxnU,EAAOpD,KAAK,CACR4qU,UAAWA,GAElB,IAEExnU,CACV,EACD8hV,kBAAmB,SAAS1gV,GACxB,IAAIihV,EAAYjhV,EAAKomU,WAAapmU,EAC9B02I,EAAWt7I,KAAK6kV,gBAAgBgB,GACpC,SAASh3R,EAAAA,EAAAA,IAAWysF,KAAc1nF,GAAAA,EAAAA,UAA0B0nF,GAC/D,EACDiqM,aAAc,SAAS3gV,GASnB,GARI,kBAAoBA,IACpBA,EAAO,CACHomU,UAAWpmU,IAGf,kBAAoBA,GAASA,EAAK60O,WAClC70O,EAAK60O,SAAW6iG,MAEfjuR,EAAAA,EAAAA,IAAUzpD,EAAK86U,cAAerxR,EAAAA,EAAAA,IAAUzpD,EAAKomU,WAAY,CAC1D,IAAI9sU,EAAQ8B,KAAK6kV,gBAAgBjgV,EAAKomU,WACtCpmU,EAAK86U,YAAarxR,EAAAA,EAAAA,IAAUnwD,GAAS8B,KAAK8lV,0BAAyBzgV,EAAAA,EAAAA,IAAKnH,IA9KvD,WA+KpB,CAEG,IAAI6nV,EADJ,eAAiBnhV,EAAK86U,aAEtB96U,EAAKogV,wBAA0B,QAAUe,EAAwBnhV,EAAKogV,+BAA4B,IAAWe,GAAwBA,GAEzI,OAAOnhV,CACV,EACDkhV,yBAA0B,SAASxpP,GAC/B,OAAQA,GACJ,IAAK,SACD,MAAO,cACX,IAAK,OACD,MAAO,YACX,IAAK,UACD,MAAO,aACX,QACI,MAAO,YAElB,EACDopP,WAAY,YlP3Nc,SAASx/R,EAAO8/R,EAAeC,EAAaC,GACtE,IAAIC,EAAe,CAAC,EAEOzhS,GACvB3kD,EAAAA,GAAAA,KADA2kD,sBAEA2sR,EAAe,EACf+U,EAAoB,SAAAxhV,GAAI,QAAKypD,EAAAA,EAAAA,IAAUzpD,EAAKohV,OAAqBE,GAAqBA,EAAkBthV,GAAhF,EAC5BshD,EAAMxlD,SAAQ,SAAAkE,GACV,IAAIzD,EAAQyD,EAAKohV,GACb7kV,GAAS,GACTglV,EAAahlV,GAASglV,EAAahlV,IAAU,GACzCyD,IAASqhV,EACTE,EAAahlV,GAAOyvE,QAAQhsE,GAE5BuhV,EAAahlV,GAAOf,KAAKwE,IAG7BA,EAAKohV,QAAiB,CAE7B,IACIthS,GACDwB,EAAMxlD,SAAQ,SAAAkE,GACV,GAAIwhV,EAAkBxhV,GAAO,CACzB,KAAOuhV,EAAa9U,IAChBA,IAEJ8U,EAAa9U,GAAgB,CAACzsU,GAC9BysU,GACH,CACJ,IAELA,EAAe,GACf94Q,EAAAA,GAAAA,IAAU4tR,GAAe,SAAShlV,EAAO+kD,GACrCA,EAAMxlD,SAAQ,SAAAkE,GACNzD,GAAS,IACTyD,EAAKohV,GAAiB3U,IAE7B,GACJ,IACG3sR,GACAwB,EAAMxlD,SAAQ,SAAAkE,GACNwhV,EAAkBxhV,KAClBA,EAAKohV,GAAiB3U,IAE7B,GAER,CkP8KOgV,CAAiBrmV,KAAKwjG,OAAQ,gBAC9BxjG,KAAKsmV,cACR,EACDA,aAAc,WACVtmV,KAAKwjG,OAAOpqE,MAAM,SAASmtT,EAAOC,GAC9B,IAAIC,EAASF,EAAMG,aACfC,EAASH,EAAME,aASnB,OAPID,EAASE,EACA,EACFF,EAASE,GACN,EAED,CAGhB,GACJ,EACDr+K,YAAa,WACTtoK,KAAKuzU,kBAAkBpsS,QACvBnnC,KAAKg6D,WAAWoU,SRhRe,qBQiR/BpuE,KAAKmiD,WACLniD,KAAK4mV,sBACR,EACDA,qBAAsB,WAClB,IAAIC,EAAgB,GACpB,GAAI7mV,KAAKwjG,QAAUxjG,KAAKwjG,OAAO7iG,OAAQ,CACnC,IAAI8tQ,EAAWzuQ,KAAK8mV,eAChBtsQ,EAAazJ,GAAE,SAASpC,SAAS3uE,KAAKg6D,YAC1Ch6D,KAAK+mV,yBAAyBt4E,GAC9B,IAAIu4E,EAAchnV,KAAKinV,uBACvBjnV,KAAKknV,eAAiBlnV,KAAKmjK,iBAAiB3oF,EAAYu7P,GAAe/1U,KAAKmnV,wBAAwBH,EAAav4E,EAAUo4E,KACtH/lS,EAAAA,EAAAA,OACD9gD,KAAKonV,iBAAiBP,EAE7B,CACJ,EACDQ,yBAA0B,SAASp+U,GAC/BjJ,KAAK2pK,UACR,EACDy9K,iBAAkB,SAASP,GACvB,IAAIp3R,EAAOzvD,KACPsnV,EAA8B,EAClCT,EAAcnmV,SAAQ,SAAAgkK,GAClB,IAAI6iL,EAEM3iV,EACN8/J,EADA9/J,KAEA,OAASA,QAAQ,IAAWA,GAAQ,QAAU2iV,EAAc3iV,EAAK8S,aAAU,IAAW6vU,GAAeA,EAAY/nU,UACjH8nU,GAEP,KACDz6R,EAAAA,EAAAA,IAAKg6R,GAAgB,SAAS1lV,EAAO6b,GACjC,OAAQA,EAAKy8N,UACT,IAAK,QACDoqG,GAAgB7mU,GAChB,MACJ,IAAK,SACDyyC,EAAK+3R,kBAAkBxqU,GACvB,MACJ,QACIyyC,EAAKg4R,iBAAiBzqU,EAAMsqU,GAEvC,GACJ,EACDH,wBAAyB,SAASH,EAAav4E,EAAUo4E,GACrD,IAAIp3R,EAAOzvD,KACPgkV,EAAmBv0R,EAAK9iB,OAAO,oBAC/B+6S,EAAa1D,GAAoBA,EAAiBpuT,GACtD,MAAO,CACH0lS,mBAAoBt7T,KAAKqnV,yBAAyBvqV,KAAKkD,MACvDo2U,gBAAiB,WACb,IAAIA,EAAkB3mR,EAAK9iB,OAAO,mBAC9Bg7S,EAAqBl4R,EAAKk4R,qBAC1BvR,IACA3mR,EAAKuK,WAAWiU,YAAY6tQ,GAA2B6L,GACvDvR,EAAgBuR,GAEvB,EACDnoS,eAAgB,SAASv2C,IACjB63C,EAAAA,EAAAA,OACA2O,EAAK23R,iBAAiBP,GAEtBp3R,EAAK9iB,OAAO,oBACZ8iB,EAAKuK,WAAWiU,YAAY6tQ,GAA2BrsR,EAAKk4R,mBAAmB1+U,EAAEmoB,WAExF,EACDg9L,aAAc,SAASnlN,EAAGqyI,EAAUx7E,GAChC,GAAK72D,EAAE0pB,SAAP,CAGA,IAAIm7L,EAAe/8I,GAAEjR,GACjB8nR,EAAkC3+U,EAAE0pB,SAAS+8O,IAAMjB,EACnD7pQ,EAAO6qD,EAAK+zC,OAAOv6F,EAAE0pB,SAASg6C,IAAMi7Q,GACxC,GAAKhjV,EAAL,CAGA,IAAIijV,EAAmB,CAACjjV,EAAK2lK,UAC7BujD,EAAa7/I,YR3VW,gCQ2V6Bxe,EAAKk4R,mBAAmB3nV,OACzE,IAAMiJ,EAAE0pB,SAAS+8O,KACjBm4E,EAAiBznV,KAtSA,gBAwSjB,IAAM6I,EAAE0pB,SAASg6C,KACjBk7Q,EAAiBznV,KAvSA,gBAySjBwE,EAAK60O,WAAa6iG,IAAoB7sR,EAAK9iB,OAAO,WAClDmhL,EAAa1/I,SAAS8tQ,IAE1B,IAAI4L,EAAe7+U,EAAE0pB,SAASg6C,MAAQ8hM,EAAW,GAAKxlQ,EAAE0pB,SAASg6C,IAAM1jE,EAAE0pB,SAASylT,UAAY3pE,EAC1FgrE,EAAYhqR,EAAKs4R,gBACjBC,EAAY/+U,EAAE0pB,SAAS+8O,MAAQ+pE,EAAY,EAC3CqO,GACAD,EAAiBznV,KA/SD,eAiThB4nV,GACAH,EAAiBznV,KApTD,eAsThB,UAAYwE,EAAK60O,WACjBouG,EAAiBznV,KAAKy7U,IACtBgM,EAAiBznV,KAAKqvD,EAAK9iB,OAAO,kBAC9B0hB,EAAAA,EAAAA,IAAUzpD,EAAK+nE,MACfk7Q,EAAiBznV,KAAK,UAAYwE,EAAK+nE,MAG/Ck6Q,EAAczmV,KAAK,CACfq5O,SAAU70O,EAAK60O,SACf70O,KAAMA,EACNujN,QAAS2F,EACTqwH,wBAAyB0J,GAhC5B,CANA,CAwCJ,EACD5R,KAAMxmR,EAAKw4R,eAAex5E,GAC1BunE,KAAMvmR,EAAKw4R,eAAex4R,EAAKs4R,iBAAiB,GAChDxgP,WAAYy/O,EACZ9Q,cAAezmR,EAAK9iB,OAAO,iBAC3BwpS,oBAAoBuR,GAAqB,KAEhD,EACDZ,aAAc,WACV,IAAIr4E,EAAWzuQ,KAAK2sC,OAAO,YACvBq3S,EAAmBhkV,KAAK2sC,OAAO,oBACnC,GAAIq3S,EAAkB,CAClB,IAAIkE,EAAeloV,KAAK2sC,OAAO,QAAQw7S,wBAClCD,IACDA,GAAepnS,EAAAA,EAAAA,OAAc6b,EAAAA,EAAAA,IAAuB38D,KAAK2sC,OAAO,kBAAoB,MAExF8hO,EAAWu1E,EAAiBkE,IAAiBz5E,CAChD,CACD,GAAI,SAAWA,EAAU,CACrB,GAAIzuQ,KAAKooV,gBACL,OAAOpoV,KAAKooV,gBAEhBpoV,KAAKooV,gBAAkB35E,EAAWzuQ,KAAKqoV,iBAC1C,CACD,OAAO55E,EAAW,EAAI,EAAIA,CAC7B,EACD45E,gBAAiB,WACb,KAAKvnS,EAAAA,EAAAA,MACD,OAAO,EAEX,IAAIujS,EAAcrkV,KAAK2sC,OAAO,eAC1Bhc,EAAQi6C,GAAS5qE,KAAKg6D,YACtByuK,EAAazoO,KAAKwjG,OAAO7iG,OACzB2nV,EAAc/+U,KAAKo/D,MAAMh4C,EAAQ0zT,IAAgB,EACrD,OAAO57G,EAAa6/G,EAAc7/G,EAAa6/G,CAClD,EACDC,yBAA0B,WACtB,OAAOvoV,KAAKooV,iBAAmBpoV,KAAKqoV,oBAAsBroV,KAAKooV,eAClE,EACDrB,yBAA0B,SAASt4E,GAC/B,IACI7pQ,EACA4jV,EAEA16U,EACAnF,EALAu9C,EAAQlmD,KAAKwjG,OAAOz+F,MAAM,GAG1BvB,EAAS,GAGb,IAAKmF,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAM1B,GALA/D,EAAOshD,EAAMv9C,GACbnF,EAAOpD,KAAKwE,IACR5E,KAAK2sC,OAAO,oBAAsB/nC,EAAKw/U,iBAAmBx/U,EAAK6jV,WAC/D7jV,EAAK+nE,IAAM3sE,KAAK0oV,eAAellV,EAAO7C,OAAS,EAAG8tQ,IAElD7pQ,EAAK6jV,QAAU,GAAK7jV,EAAK+nE,IAAM/nE,EAAK6jV,SAAWh6E,EAAU,CAEzD,IADA+5E,EAAmB,GACd16U,EAAI,EAAGA,EAAIlJ,EAAK6jV,QAAU,EAAG36U,IAC9B06U,EAAiBpoV,KAAK,CAClBuoV,QAAQ,IAGhBnlV,EAASA,EAAOyM,OAAOu4U,EAC1B,aACU5jV,EAAK6jV,QAGpBzoV,KAAKylV,UAAUjiV,EAClB,EACDklV,eAAgB,SAASvnV,EAAOstQ,GAC5B,OAAOttQ,EAAQstQ,CAClB,EACDg3E,UAAW,SAASv/R,GAChBlmD,KAAKwjG,OAASt9C,EACdlmD,KAAKooV,gBAAkB,IAC1B,EACDnB,qBAAsB,WAClB,IAGIriV,EACA+D,EAJAu9C,EAAQlmD,KAAKwjG,OACbirK,EAAWzuQ,KAAK8mV,eAChBtjV,EAAS,GAGb,IAAKmF,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAE1B,KADA/D,EAAOshD,EAAMv9C,IACHggV,OAAQ,CACd,IAAIC,EAAgB,CAChBj2T,SAAU,CACN+8O,IAAK53O,SAASnvB,EAAI8lQ,GAClB9hM,IAAK3sE,KAAK0oV,eAAe//U,EAAG8lQ,MAGhCpgN,EAAAA,EAAAA,IAAUzpD,EAAK4gB,YACfojU,EAAcpjU,SAAW5gB,EAAK4gB,WAE9B6oC,EAAAA,EAAAA,IAAUzpD,EAAKi8C,WACf+nS,EAAc/nS,QAAUj8C,EAAKi8C,UAE7BwN,EAAAA,EAAAA,IAAUzpD,EAAK6jV,WACfG,EAAcj2T,SAASylT,QAAUxzU,EAAK6jV,UAEtCp6R,EAAAA,EAAAA,IAAUzpD,EAAKikV,WACfD,EAAcj2T,SAASwlT,QAAUvzU,EAAKikV,SAE1CrlV,EAAOpD,KAAKwoV,EACf,CAEL,OAAOplV,CACV,EACDslV,iBAAkB,SAAStuQ,GACvBqpQ,GAAgB,CACZrpQ,WAAYA,GAEnB,EACDgtQ,kBAAmB,SAAS1hM,GACxB,IACUlhJ,EAGNkhJ,EAHAlhJ,KAIA,EAGA4+U,GAAiB,CACjB5+U,KAAMA,EACNujN,QANAriE,EAFAqiE,QASAg2H,wBAPAr4L,EADAq4L,wBASAhoK,gBAAiBn2K,KAAK2sC,OAAO,mBAC7B0xS,wBAAyBr+U,KAAKmjK,iBAAiBrmK,KAAKkD,QAPtCqiV,EADlB,EACIA,aACgBrsF,EAFpB,EAEIA,eAQJh2P,KAAKuzU,kBAAkBxlS,IAAI,CACvBnpC,KAAMA,EACN4lU,eAAgBx0E,EAChBj4L,KAAMn5D,EAAKm5D,KACX42J,eAAgB0tH,GAEvB,EACDoF,iBAAkB,SAASlhM,EAAO+gM,GAA6B,IACvDyB,EAAclgP,EADyC,OAGjDjkG,EAGN2hJ,EAHA3hJ,KACSujN,EAET5hE,EAFA4hE,QACyBg2H,EACzB53L,EADA43L,wBAEAM,EAAcz+U,KAAK6kV,gBAAgBjgV,EAAKomU,WACxC0T,GAAkC,EACtC,QAAI,IAAWD,EAAa,CACxB,IAC6BuG,EAGzBpgV,EAHAogV,wBACYtF,EAEZ96U,EAFA86U,WACW1U,EACXpmU,EADAomU,UAEJ0T,EAAkC1+U,KAAK+kV,iCAAiC,CACpEC,wBAAyBA,EACzBtF,WAAYA,EACZ1U,UAAWA,GAElB,CACD,IAAI5xU,EAAOwL,EAAKomU,WAAapmU,EAAKxL,KAC9BglV,EAAsBp+U,KAAKgpV,iBAC3B,EAIA5G,GAAgBlE,GAAgC,CAChD/1H,QAASA,EACTg2H,wBAAyBA,EACzBv5U,KAAMA,EACNxL,KAAMA,EACNqlV,YAAaA,EACbC,gCAAiCA,EACjCN,oBAAqBp+U,KAAKgpV,iBAC1B3K,wBAAyBr+U,KAAKmjK,iBAAiBrmK,KAAKkD,MACpDu+U,kBAAmBv+U,KAAK2sC,OAAO,iBAC/B6xS,wBAAyBx+U,KAAK2sC,OAAO,mBACrCwpI,gBAAiBn2K,KAAK2sC,OAAO,mBAC7BgyS,yBAA0B3+U,KAAK2sC,OAAO,sBACtC8X,kBAAmBzkD,KAAK2sC,OAAO,SAAW3sC,KAAK2sC,OAAO,QAAQA,OAAO,eACrEiyS,oBAAqB5+U,KAAK2sC,OAAO,uBACjCkyS,qBAAsB7+U,KAAK2sC,OAAO,iBAClCntB,SAAU5a,EAAK4a,SAAWxf,KAAK+qK,aAAanmK,EAAK4a,UAAY,KAC7D8+T,cAAe,QAAUyK,EAAenkV,EAAK8S,aAAU,IAAWqxU,GAAgBA,EAAavpU,SAAWxf,KAAK+qK,aAAanmK,EAAK8S,MAAM8H,UAAY,KACnJs/T,OAAQ9+U,KAAK2sC,OAAO,SAAW3sC,KAAK2sC,OAAO,QAAQs8S,UAAU7vV,GAC7D2lV,mBAAoB/+U,KAAKkpV,kBACzB/1F,UAAWnzP,KAAK2sC,OAAO,aACvBqyS,wBAAyB,WACrB,EAAKmK,gCACD,EAAKC,qCAAqChL,EAAqBkJ,IAC/DlJ,EAAoBiL,aAAa,EAAM,EAAK1B,mBAAmBvJ,GAEtE,KA7BsBkE,EAD3B,EACIA,sBACgB9X,EAFpB,EAEIA,eACc6X,EAHlB,EAGIA,aA6BJ,QAAUx5O,EAAe7oG,KAAK2sC,OAAO,8BAA2B,IAAWk8D,GAAwBA,IAC/F2hO,GAAkB5lU,EAAKomU,WACvBhrU,KAAKspV,eAAe9e,EAAgB5lU,EAAKomU,UAAWpmU,EAAK86U,WAAY4C,GAEzEtiV,KAAKuzU,kBAAkBxlS,IAAI,CACvBnpC,KAAMA,EACN4lU,eAAgBA,EAChBzsQ,KAAMn5D,EAAKm5D,KACX42J,eAAgB0tH,GAEvB,EACD8G,8BAvgB+B,WAwgB3B,IAAII,EACJvpV,KAAKwpV,iCAAmC,QAAUD,EAAwBvpV,KAAKwpV,uCAAoC,IAAWD,EAAwBA,EAAwB,GAAK,CACtL,EACDH,qCA3gB+B,SA2gBMhL,EAAqBqL,GACtD,OAAOrL,EAAoBzxS,OAAO,kCAAoC3sC,KAAKwpV,kCAAoCC,CAClH,EACDP,gBAAiB,WACb,MAAO,CACHzI,iBAAkBzgV,KAAK2sC,OAAO,oBAC9B+zS,aAAc1gV,KAAK2sC,OAAO,gBAC1Bg0S,iBAAkB3gV,KAAK2sC,OAAO,oBAC9Bi0S,aAAc5gV,KAAK2sC,OAAO,gBAEjC,EACDq8S,eAAgB,WACZ,OAAOhpV,KAAK2sC,OAAO,SAAW3sC,IACjC,EACDspV,eAAgB,SAASI,EAAgB1e,EAAW0U,EAAYllQ,GAC5D,IAAImvQ,EAAa3pV,KAAKgpV,iBACtBU,EAAe38S,GAAG,YAAa,SAASnvC,GACpC+rV,EAAWhqL,sBAAsB,mBAAjCgqL,EAAqDlkS,EAAAA,GAAAA,GAAO7nD,EAAM,CAC9DotU,UAAWA,IAElB,IACDhrU,KAAK4pV,eAAeF,EAAgBlvQ,EAAYwwP,GAChDhrU,KAAK6pV,sBAAsBH,EAAgB1e,EAAW0U,EACzD,EACDkK,eAAgB,SAASF,EAAgBlvQ,EAAYwwP,GACjD,IAAIv7Q,EAAOzvD,KACP2lV,EAAQl2R,EAAKm2R,YACjB,IAAK/2R,EAAAA,EAAAA,IAAW82R,GAAhB,CAGA,IAAIp5S,EAAUo5S,GAAO,WACjB,OAAOl2R,EAAKo1R,gBAAgB7Z,EAC/B,IAAI,WACD,IAAI8e,EAAar6R,EAAKo1R,gBAAgB7Z,GACtC,GAAI,aAAe0e,EAAelrL,KAAM,CACpC,IAAIigL,EAAciL,EAAe/8S,OAAO,SACxC,GAAIm9S,IAAerL,GAAe,SAASzsR,EAAQC,GAC3C,IAAKptD,MAAMC,QAAQktD,KAAYntD,MAAMC,QAAQmtD,IAAWD,EAAOrxD,SAAWsxD,EAAOtxD,OAC7E,OAAO,EAEX,IAAK,IAAIgI,EAAI,EAAGA,EAAIqpD,EAAOrxD,OAAQgI,IAC/B,GAAIqpD,EAAOrpD,KAAOspD,EAAOtpD,GACrB,OAAO,EAGf,OAAO,CACV,CAV6B,CAU5BmhV,EAAYrL,GACd,MAEP,CACDiL,EAAe/8S,OAAO,QAASm9S,EAClC,GAAG,CACA1xR,MAAM,EACN8sG,eAAe,IAEnB3mG,EAAAA,EAAAA,GAAgBic,EAAY3J,GAAatkC,EA1BxC,CA2BJ,EACDq5S,UAAW,WACP,KAAKv3R,EAAAA,EAAAA,IAAUruD,KAAK+pV,QAAS,CACzB,IAAIC,EAAehqV,KAAK2sC,OAAO,QAC/B3sC,KAAK+pV,OAASC,GAAgBA,EAAar9S,OAAO,iCACrD,CACD,OAAO3sC,KAAK+pV,MACf,EACD5mL,iBAAkB,SAASioF,EAAS/lP,EAAM0/S,GACtC,IAAIklC,EAAgBjqV,KAAK2sC,OAAO,YAC5Bu9S,EAAoBlsV,OAAOulD,OAAOwhQ,EAAe,YACjDh8Q,EAAW/oC,KAAKmiD,SAASipM,EAAS/lP,GAAM0T,EAAAA,EAAAA,GAAS,CAAC,EAAGgsS,EAAe,CACpEhwR,SAAWm1T,EAAoCnlC,EAAchwR,SAA9Bk1T,KAE/BE,GAAiB,EAarB,OAZAphT,EAASgE,GAAG,iBAAiB,SAAAnvC,GACrB,aAAeA,EAAKxE,MAAS+wV,IAC7BD,GAAoB,EAE3B,IACDlqV,KAAK+sC,GAAG,iBAAkB,SAASnvC,GAC3B,aAAeA,EAAKxE,MAAS8wV,IAC7BC,GAAiB,EACjBphT,EAAS4D,OAAO/uC,EAAKxE,KAAMwE,EAAKM,OAChCisV,GAAiB,EAExB,IACMphT,CACV,EACDk/S,eAAgB,SAASp8U,EAAOu+U,GAC5B,IACI7uD,EACA5yR,EAFAnF,EAAS,GAGb,IAAKmF,EAAI,EAAGA,EAAIkD,EAAOlD,IACnB4yR,EAAQ,CACJA,MAAO,GAEP6uD,IACA7uD,EAAM4/B,SAAW,QAErB33T,EAAOpD,KAAKm7R,GAEhB,OAAO/3R,CACV,EACDukV,cAAe,WACX,OAAOx+U,KAAKq7E,KAAK5kF,KAAKwjG,OAAO7iG,OAASX,KAAK8mV,eAC9C,EACDvC,yBAA0B,SAAS8F,GAAe,WAC1CtG,EAAa/jV,KAAK2sC,OAAO,eACzBtsB,EAAAA,EAAAA,IAAS0jU,IACT/lV,OAAO09C,oBAAoBqoS,GAAYrjV,SAAQ,SAAAyM,GAAQ,cAAW,EAAKmtJ,oBAAoB,cAAgBntJ,EAApD,KAEvDkT,EAAAA,EAAAA,IAASgqU,IACTrsV,OAAO09C,oBAAoB2uS,GAAe3pV,SAAQ,SAAAyM,GAAQ,OAAI,EAAKmtJ,oBAAoB,cAAgBntJ,IAAY,CAAzD,GAEjE,EACDm9U,aA3nB+B,SA2nBlBvhT,GACT/oC,KAAKuqV,mCAAoC,EACzCxhT,EAASvC,QACTxmC,KAAKuqV,mCAAoC,EACzCxhT,EAAS4D,OAAO,WAAW,EAC9B,EACDmzH,eAjoB+B,SAioBhBliK,GAAM,WACjB,GAAI,IAAMA,EAAKiyC,SAAS/lC,OAAO,eAG/B,OAAQlM,EAAKxE,MACT,IAAK,mBACL,IAAK,mBACL,IAAK,eACL,IAAK,eACD4G,KAAKwqV,sBAAwB,KAC7BxqV,KAAKypK,cACL,MACJ,IAAK,aACDzpK,KAAKukV,yBAAyB3mV,EAAKM,OAC/B8B,KAAK2sC,OAAO,UACPivB,EAAAA,EAAAA,IAAch+D,EAAKM,QACpB8B,KAAKuzU,kBAAkB1mR,MAAK,SAAC/tD,EAAG6rU,GAC5B,IAAIt8Q,EAAAA,EAAAA,IAAUs8Q,EAAgB/lU,MAAO,CACjC,IAAIomU,EAAYL,EAAgB/lU,KAAKomU,UACrC,GAAIA,IAAa38Q,EAAAA,EAAAA,IAAUs8Q,EAAgBH,gBAAiB,CACxD,IACIigB,GADcr2R,EAAAA,GAAAA,IAAc42Q,EAChB7uL,CAAYv+I,EAAKM,OAC7B,EAGAysU,EAAgB/lU,KAFSogV,EAD7B,EACIA,wBACYtF,EAFhB,EAEIA,gBAEA,IAAW+K,GAAa,EAAK1F,iCAAiC,CAC1DC,wBAAyBA,EACzBtF,WAAYA,EACZ1U,UAAWA,IAEfL,EAAgBH,eAAe79R,OAAO,QAAS89S,GAE/C,EAAKH,aAAa3f,EAAgBH,eAEzC,CACJ,CACJ,KAGLxqU,KAAKwkV,kBAAkB5mV,EAAKM,OAC5B8B,KAAKypK,eAET,MACJ,IAAK,QACDzpK,KAAKykV,qBACLzkV,KAAKwkV,kBAAkB5mV,EAAKM,OAC5B8B,KAAKypK,cACL,MACJ,IAAK,kBACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACDzpK,KAAKypK,cACL,MACJ,IAAK,gBACDzpK,KAAKusU,aAAavsU,KAAK2sC,OAAO,eAC9B3sC,KAAKypK,cACL,MACJ,IAAK,WACL,IAAK,mBACDzpK,KAAK0qV,iBACL,MACJ,IAAK,cACG,SAAW1qV,KAAK2sC,OAAO,aACvB3sC,KAAK0qV,iBAET,MACJ,IAAK,WAQL,IAAK,qBACD,MAPJ,IAAK,QACD1qV,KAAKmiD,SAASvkD,GACV,SAAWoC,KAAK2sC,OAAO,aACvB3sC,KAAK0qV,iBAET,MAGJ,QACI1qV,KAAKmiD,SAASvkD,GAEzB,EACD8sV,eAAgB,WACZ1qV,KAAKooV,gBAAkB,KACvBpoV,KAAKypK,aACR,EACDogL,sBAvtB+B,SAutBTH,EAAgB1e,GAAW,WAC7ChrU,KAAK+sC,GAAG,iBAAiB,SAAAnvC,GACjBA,EAAKiyC,WAAa,cAAc5/B,OAAO+6T,IACvC0e,EAAeloL,8BAA8B,QAAS5jK,EAAKM,MAElE,IACDwrV,EAAe38S,GAAG,gBAAgB,SAAAnvC,GAC9B,IAAI+sV,GAAuBtqU,EAAAA,EAAAA,IAASziB,EAAKM,QAAU2G,MAAMC,QAAQlH,EAAKM,OACjE,EAAKqsV,mCAAuCI,GAAwB/sV,EAAKM,QAAUN,EAAKi9J,eACzF,EAAKiqL,kBAAkB9Z,EAAWptU,EAAKM,MAE9C,GACJ,EACD0pK,kBAAmB,WACX,SAAW5nK,KAAK2sC,OAAO,aAAe3sC,KAAKuoV,4BAC3CvoV,KAAKi2E,gBAAgB2B,UAAU,sBAEtC,EACDgzQ,WAAY,SAAStwV,EAAM4D,GACvB,IAAIuxD,EAAOzvD,MACPqgB,EAAAA,EAAAA,IAAS/lB,IACTuyD,EAAAA,EAAAA,IAAKvyD,GAAO,SAAS0wU,EAAW8e,GAC5Br6R,EAAKq1R,kBAAkB9Z,EAAW8e,EACrC,IACM,kBAAoBxvV,GAC3Bm1D,EAAKq1R,kBAAkBxqV,EAAM4D,EAEpC,EACD2sV,UAAW,SAASxsR,GAChB,OAAOr+D,KAAKuzU,kBAAkBuX,8BAA8BzsR,IAAUr+D,KAAKuzU,kBAAkBwX,yBAAyB1sR,EACzH,EACDspR,mBAAoB,SAASv2T,GACzB,IAAI45T,EAAgBhrV,KAAKknV,gBAAkB91T,EAC3C,GAAI45T,EACA,OAAOA,EAAcr+S,OAAO,yBAA2Bq+S,EAAcr+S,OAAO,qBAEnF,EACDs+S,oBAAqB,WACjB,OAAOjrV,KAAKuzU,iBACf,IAEL/gK,GAAkB,kBAAmBsxK,IACrC,ICzzBIoH,GAA2B,uBAG3BC,GAAoB/9H,GAAAA,QAAyB,CAC7CxvD,mBAD6C,WAEzC,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BhE,mBAAmB,EACnBM,WAAY,MAEnB,EACD2/G,uBAP6C,WAQzCp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7B6b,iBAAiB,GAExB,EACD5yE,MAb6C,WAczCvjG,KAAKmiD,WACLniD,KAAK+8U,wBACR,EACDA,uBAjB6C,WAkBzC,IAAI/iR,EAAWh6D,KAAKg6D,WAChBu7B,EAAQv1F,KAAK2sC,OAAO,oBAAsBmpI,GAAAA,UAA2B97G,EAAUh6D,KAAKupK,gBAAgBvvG,IACpGw9G,EAAc1B,GAAAA,SAA0BvgF,GAC5Cv1F,KAAKorV,oBACLprV,KAAKk9U,eAAgB,EACrBl9U,KAAKy3K,iBAAmBliF,EACxBv1F,KAAKqrV,kBAAoBrrV,KAAKsrV,wBAAwBxuV,KAAKkD,MAC3Dw3K,EAAYzqI,GAAG,YAAa/sC,KAAKqrV,kBACpC,EACDD,kBA3B6C,WA4BzC,IAAI5zK,EAAc1B,GAAAA,eAAgC91K,KAAKy3K,kBACvDD,GAAeA,EAAYlhI,IAAI,YAAat2C,KAAKqrV,kBACpD,EACDE,iBA/B6C,SA+B5B/2K,EAAYtuH,GACzB,IAAIslS,EAAe,GAWnB,OAVA3+R,EAAAA,EAAAA,IAAK2nH,GAAa,SAAS11K,EAAGyzB,GAC1B,IAAIk5T,GAAa/5R,EAAAA,GAAAA,MAAKxL,GAAQ,SAASthD,GACnC,GAAIA,EAAK2tB,YAAcA,EACnB,OAAO,CAEd,IACGk5T,EAAW9qV,SACX6qV,EAAeA,EAAav7U,OAAOw7U,GAE1C,IACMD,CACV,EACDF,wBA7C6C,SA6CrBhnV,GAAQ,WACxB4hD,EAAQlmD,KAAKurV,iBAAiBjnV,EAAOkwK,YAAYzwK,EAAAA,EAAAA,IAAIO,EAAOswK,aAAc,SAASxsK,GACnF,MAAO,CACHzB,KAAMyB,EAAKhO,QACXm4B,UAAWnqB,EAAKmqB,UAChBpxB,MAAOiH,EAAKjH,MAEnB,KACDnB,KAAKw0K,WAAalwK,EAAOkwK,YACzB3nH,EAAAA,EAAAA,IAAK7sD,KAAKw0K,YAAY,SAAC11K,EAAGyzB,GACtB,GAAIA,EAAUm5T,qBAAuB,EAAM,CACvC,IAAI5qV,EAAU,EAAK6qV,uBAAuB7uV,KAAK,GAC/Cy1B,EAAUwa,GAAG,YAAajsC,GAC1ByxB,EAAUwa,GAAG,aAAc,WACvBxa,EAAU+jB,IAAI,YAAax1C,GAC3ByxB,EAAUm5T,mBAAqB,KAC/B5qV,EAAU,IACb,IACDyxB,EAAUm5T,mBAAqB,CAClC,CACJ,IACD1rV,KAAK2sC,OAAO,QAASuZ,EACxB,EACDylS,uBApE6C,SAoEtB30U,GA2BnB,IA1BA,IACak5H,EAGTl5H,EAHAk5H,QACW39G,EAEXvb,EAFAub,UACaqiJ,EACb59J,EADA49J,YAEA1uH,EAAQlmD,KAAK2sC,OAAO,SACpBi/S,GAAe,EACfnzM,EAAY,EACZsvG,EAAQ,WACR,IAAInjP,EAAOshD,EAAMuyF,GACjB,GAAI7zI,EAAK2tB,YAAcA,EAAW,CAC9B,IAAIs5T,GAAYn6R,EAAAA,GAAAA,MAAKkjH,GAAe,IAAK,SAASxsK,GAC9C,OAAOA,EAAKjH,QAAUyD,EAAKzD,KAC9B,IAAG,GACJ,GAAI+uI,IAAY27M,EAGZ,OAFA3lS,EAAM7kD,OAAOo3I,EAAW,GACxBmzM,GAAe,EACR,WAEPC,EAAUzxV,UAAYwK,EAAK+B,OAC3B/B,EAAK+B,KAAOklV,EAAUzxV,QACtBwxV,GAAe,EAEtB,CACDnzM,GACH,EACMA,EAAYvyF,EAAMvlD,QACVonP,KAKfl7L,EAAAA,EAAAA,IAAK+nH,GAAc,SAAS91K,EAAGsJ,GAC3B,IAAI0jV,GAAYp6R,EAAAA,GAAAA,MAAKxL,GAAQ,SAASthD,GAClC,OAAOA,EAAK2tB,YAAcA,GAAa3tB,EAAKzD,QAAUiH,EAAKjH,KAC9D,IAAG,GACC2qV,IACD5lS,EAAM9lD,KAAK,CACPuG,KAAMyB,EAAKhO,QACXm4B,UAAWA,EACXpxB,MAAOiH,EAAKjH,QAEhByqV,GAAe,EAEtB,IACGA,IACA1lS,EAAQlmD,KAAKurV,iBAAiBvrV,KAAKw0K,WAAYtuH,GAC/ClmD,KAAK2sC,OAAO,QAASuZ,GAE5B,EACDoiH,YAvH6C,WAwHzCtoK,KAAKg6D,WAAWoU,SAAS88Q,IACzBlrV,KAAKmiD,UACR,EACD29G,eA3H6C,SA2H9BliK,GACX,GACS,oBADDA,EAAKxE,KAEL4G,KAAK+8U,8BAGL/8U,KAAKmiD,SAASvkD,EAEzB,EACD41N,WAAY,iBAtIC03H,2BAsID,EACZt5H,aAAc,iBAtIEs5H,gCAsIF,EACdn1H,uBAtI6C,SAsItBzxN,GACnBi6D,EAAAA,EAAAA,GAAgBj6D,EAAOw7D,YAAa,SAAU,WAC1Cx7D,EAAOg3I,SAAS/oH,WAAajuB,EAAOg3I,SAAS/oH,UAAUlM,OAAS/hB,EAAOg3I,SAAS/oH,UAAUlM,OAC7F,GACJ,EACDqsH,SA3I6C,WA4IzC1yI,KAAKmiD,WACLniD,KAAKorV,mBACR,EACDW,uBA/I6C,WAgJzC/rV,KAAK+8U,wBACR,IAELvqK,GAAkB,sBAAuB24K,IACzC,UC/JIa,GAA0B,qBAGxBC,GAAAA,SAAAA,6IACF,WACI,OAAO,iEACV,sBACD,YACI,qDACAn2K,GAAAA,SAA0B91K,KAC7B,4BACD,WACI,IAAIg6D,EAAWh6D,KAAKg6D,WACpBA,EAASoU,SAAS49Q,IAClBhyR,EAASh+D,KAAK,IAAIiU,OAbJ,iBAa6B48C,MAAM,SAAS/tD,EAAGotV,GACzDpP,GAAAA,YAAsB/rQ,GAAEm7Q,IAAqBnP,wBAChD,IACD/iR,EAASh+D,KAAK,IAAIiU,OAfK,yBAe6B48C,MAAM,SAAS/tD,EAAGqtV,GAClEhB,GAAAA,YAA8Bp6Q,GAAEo7Q,IAAmBJ,wBACtD,KACD,0DACH,yBACD,WACI,OAAOj2K,GAAAA,cAA+B91K,KACzC,sBACD,WACI,OAAO81K,GAAAA,WAA4B91K,KACtC,yBACD,WACI81K,GAAAA,YAA6B91K,MAC7BA,KAAKg6D,WAAWqU,YAAY29Q,KAC5B,uDACH,8BACD,WACI,OAAO,CACV,OAhCCC,CAAwB5kL,IAkC9BmL,GAAkB,oBAAqBy5K,IACvC,ICiDIG,GAAuC,CAAC,QAAS,aAAc,kBAAmB,WAClFC,GAAOznJ,GAAAA,QAAe,CACtBrhG,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAKssV,uBAAyB,GAC9BtsV,KAAKuzU,kBAAoB,IAAIhJ,GAC7BvqU,KAAKusV,gBAAkB,GACvBvsV,KAAKwsV,0BACR,EACD5uL,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BsqS,OAAQ,MAAQ,IAAIvgS,GAAAA,EACpBwgS,SAAU,CAAC,EACXj+E,SAAU,EACVynE,cAAex5Q,EAAAA,GACfsnR,sBAAkB,EAClBzE,cAAe,OACfxqT,UAAU,EACVkvT,mBAAoB,KACpBE,cAAe,KACfD,iBAAkB,KAClBG,YAAa,IACbD,iBAAiB,EACjBuI,4BAA4B,EAC5BC,qBAAqB,EACrBhO,qBAAqB,EACrB6B,kBAAkB,EAClBE,kBAAkB,EAClBD,aAAc,IACdE,aAAcx2N,GAAAA,OAA2B,uBACzCg5N,gBAAiBh5N,GAAAA,aAAiC,0BAClDyiO,uBAAuB,EACvB3mS,WAAO,EACPggM,kBAAkB,EAClB/vE,qBAAiB,EACjBmyB,aAAavoM,EAAAA,GAAAA,KAAS0kD,kBACtB0uM,UAAW,WAElB,EACDr1F,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,OAAOwmH,IACV,EACD9/L,QAAS,CACLwhV,qBAAqB,EACrBW,cAAe,SAG1B,EACDnhL,uBAAwB,WACpBp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7BoyL,UAAU,EACVv2K,iBAAiB,GAExB,EACD22K,kBAAmB,SAAS9yR,GACxB,OAAOliC,SAASkiC,EAASkU,KAAKmuQ,IACjC,EACD0Q,uBAAwB,SAASvyQ,EAAYr5E,GACzC,IAAI/D,EAAU0a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAE5Ek1U,EAAiB5vV,EAAQ6vV,YAAcpR,GAAmBD,GAA4Bz6U,EACtF+rV,EAA2B9vV,EAAQ+vV,cAAgB,SAASl9U,OAAOksU,GAAsB,KAAO,GACpGqF,GAA6BhnQ,EAAY,IAAIvqE,OAAO+8U,GAAgB/8U,OAAOi9U,GAE9E,EACDE,kBAAmB,SAAS5yQ,EAAY2yQ,EAAeF,EAAax+E,EAAUkzE,GAC1ElzE,EAAWw+E,EAAc,EAAIx+E,GAAYzuQ,KAAK8sV,kBAAkBtyQ,GAChE,IAII7xE,EAJA0kV,EAAqB,CACrBF,cAAeA,EACfF,YAAaA,GAGjB,IAAKtkV,EAAI,EAAGA,EAAI8lQ,EAAU9lQ,IACtB3I,KAAK+sV,uBAAuBvyQ,EAAY7xE,EAAG0kV,EAAoB1L,EAEtE,EACD2L,0BAA2B,SAAS9yQ,EAAY+yQ,EAAa9+E,GACzD,IAAI++E,GAAsBn/R,EAAAA,EAAAA,IAAUogN,GAAY,sBAA8BA,EAAW,GACrFg/E,EAAgB,WAAkCF,EAAc,OAAhD,4BAA6F5R,GAAmB6R,EACpI,OAAOhzQ,EAAWx+E,KAAKyxV,EAC1B,EACDC,4BAA6B,SAASlzQ,EAAYi0L,EAAU0+E,EAAexL,GACvE,IAAI,IAAS3hV,KAAK2sC,OAAO,uBAErB,IADA,IAAIghT,EAAmBnzQ,EAAWx+E,KAAK,IAAIiU,OAAOisU,KACzCtsE,EAAW,EAAGA,EAAWnB,EAAUmB,IACxC5vQ,KAAK+sV,uBAAuBY,EAAkB/9E,EAAUu9E,EAAexL,GAI/E,GADiC3hV,KAAK2sC,OAAO,8BAEzC3sC,KAAK4tV,kCAAkCpzQ,EAAYi0L,EAAU0+E,EAAexL,OACzE,CACH,IACIh5U,EADAklV,EAAU7tV,KAAKg6D,WAAWh+D,KAAK,kBAEnC,IAAK2M,EAAI,EAAGA,EAAIklV,EAAQltV,OAAQgI,IAC5B3I,KAAKotV,kBAAkBS,EAAQj+Q,GAAGjnE,GAAIwkV,OAAe,OAAQ,EAAQxL,EAE5E,CACJ,EACDiM,kCAAmC,SAASpzQ,EAAYi0L,EAAU0+E,EAAexL,GAC7E,IAGI/xE,EACAk+E,EACAC,EACAC,EANAX,EAAqB,CACrBF,cAAeA,GAMnB,IAAKv9E,EAAW,EAAGA,EAAWnB,EAAUmB,IAGpC,IAFAo+E,EAAehuV,KAAKstV,0BAA0B9yQ,EAAYo1L,GAC1D5vQ,KAAK+sV,uBAAuBiB,EAAc,EAAGX,EAAoB1L,GAC5DmM,EAAiB,EAAGA,EAAiB9tV,KAAKusV,gBAAgB5rV,OAAQmtV,IAAkB,CACrFE,EAAehuV,KAAKstV,0BAA0B9yQ,EAAYo1L,EAAU5vQ,KAAKusV,gBAAgBuB,IACzF,IAAIG,EAAgBjuV,KAAK8sV,kBAAkBkB,GAC3C,IAAKD,EAAgB,EAAGA,EAAgBE,EAAeF,IACnD/tV,KAAK+sV,uBAAuBiB,EAAcD,EAAeV,EAAoB1L,EAEpF,CAER,EACDuM,eAAgB,WACZ,OAAOluV,KAAK2sC,OAAO,gBACtB,EACDwhT,qBAAsB,SAASn3U,GAC3B,IACmBo3U,EAKfp3U,EALAo3U,cACanB,EAIbj2U,EAJAi2U,YACYzyQ,EAGZxjE,EAHAwjE,WACe2yQ,EAEfn2U,EAFAm2U,cACOjnS,EACPlvC,EADAkvC,MAEJ,IAAKpF,EAAAA,EAAAA,OAAe,QAAU9gD,KAAKkuV,iBAAnC,CAGA,IAAIvM,EAAmB9B,GAA0BuO,EAAclF,mBAC3D+D,EACAjtV,KAAKotV,kBAAkB5yQ,EAAY2yQ,GAAe,OAAM,EAAQxL,GACzD3hV,KAAKquV,eAAenoS,GAC3BlmD,KAAK0tV,4BAA4BlzQ,EAAY4zQ,EAActH,eAAgBqG,EAAexL,GAE1F3hV,KAAKotV,kBAAkB5yQ,EAAY2yQ,GAAe,EAAOiB,EAActH,eAAgBnF,EAP1F,CASJ,EACD2M,iBAAkB,YACTjgS,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,cACvB3sC,KAAK2sC,OAAO,WAAY,CAAC,EAEhC,EACD4hT,qBAAsB,WACd,eAAiBvuV,KAAK2sC,OAAO,gBAC7B3sC,KAAKg6D,WAAWoU,SXhOO,kCWkO9B,EACDk6F,YAAa,WACTwN,GAAAA,SAA0B91K,KAAKwuV,uBAC/BxuV,KAAKyuV,wBACLzuV,KAAKsuV,mBACLtuV,KAAKg6D,WAAWoU,SX3PA,WW4PhBpuE,KAAKuuV,uBACLvuV,KAAKmiD,WACLniD,KAAK86M,QAAQ,OAAQ,OAAQ96M,KAAKg6D,YAC9Bh6D,KAAK2sC,OAAO,qBACZ3sC,KAAK2vU,oBAET3vU,KAAKulP,gBACLvlP,KAAK0uV,2BACL1uV,KAAK2uV,wBAA0B3uV,KAAK4uV,qBAAuB5uV,KAAK6uV,0BAChE7uV,KAAK8uV,mCACR,EACDA,kCAAmC,WAAW,WAC1C,IAAIhuS,EAAAA,EAAAA,MAAa,CACb,IAAIiuS,EAAkB/uV,KAAKg6D,WAAWpgE,IAAI,GAC1Cg9O,GAAAA,UAAkCm4G,GAClCn4G,GAAAA,QAAgCm4G,GAAiB,WAC7C,EAAKC,gBACR,GACJ,CACJ,EACDA,eAAgB,WACRhvV,KAAKivV,sBAAsBtuV,SAC3BksD,EAAAA,EAAAA,IAAK7sD,KAAKivV,uBAAuB,SAACnwV,EAAGsvV,GACjC,IAAIc,EACJ,QAAUA,EAAwBd,EAAczhT,OAAO,0BAAuB,IAAWuiT,GAAiCA,EAAsBd,EAAczG,qBACjK,GAER,EACDkH,wBAAyB,WACrB,OAAO/tS,EAAAA,EAAAA,OAAc6b,EAAAA,EAAAA,IAAuB38D,KAAK2sC,OAAO,kBAAoB,IAC/E,EACD8hT,sBAAuB,WACnBzuV,KAAKuzU,kBAAkBpsS,QACvBnnC,KAAKivV,sBAAwB,EAChC,EACD5F,aAAc,SAAS+E,EAAenB,GAClCjtV,KAAKmuV,qBAAqB,CACtB3zQ,WAAYx6E,KAAKg6D,WACjBo0R,cAAeA,EACfjB,eAAe,EACfjnS,MAAOlmD,KAAK2sC,OAAO,SACnBsgT,YAAaA,IAEjBjzQ,GAAmBh6E,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAO88N,KACtD,EACDzjE,OAAQ,WACJtpK,KAAKmvV,0BACLnvV,KAAKmiD,WACLniD,KAAKusV,gBAAkB,GACvBvsV,KAAKssV,uBAAyB,GAC9BtsV,KAAK2uV,6BAA0B,EAC/B/3G,GAAAA,UAAkC52O,KAAKg6D,WAAWpgE,IAAI,GACzD,EACD+1U,kBAAmB,WACf,IAAInzB,EAAqBx8S,KAAK2sC,OAAO,sBACrC3sC,KAAK0vU,YAAc,IAAIr5C,GAAWr2R,KAAKg6D,WAAY,CAC/C67N,YAAa2mB,EACbhmB,uBAAwBgmB,EACxB/lB,aAAa,EACb7vQ,UAAW,OACXwoQ,eAAe,GAEtB,EACDggE,YAAa,WACT,OAAOpvV,KAAK2sC,OAAO,oBAAsBokC,GAAE/wE,KAAK0vU,YAAY7+R,WAAa7wC,KAAKg6D,UACjF,EACDm1R,wBAAyB,WACrB,IAAIE,EACJ,QAAUA,EAAwBrvV,KAAKsvV,2BAAwB,IAAWD,GAAiCA,EAAsB3xV,SACjIsC,KAAKsvV,yBAAsB,EAC3BtvV,KAAK0rV,wBAAqB,CAC7B,EACDgD,yBAA0B,WACtB1uV,KAAKmvV,0BACDnvV,KAAK2sC,OAAO,2BACZ3sC,KAAKsvV,oBAAsBv+Q,GAAE,SAAS3C,SXpTb,8BWoT+CO,SAAS3uE,KAAKovV,eACtFpvV,KAAK0rV,mBAAqB1rV,KAAKsvV,oBAAoBC,oBAAoB,CACnEp5K,gBAAiBn2K,KAAKwuV,wBACvBe,oBAAoB,YAE9B,EACDC,cAhPsB,SAgPRtpS,EAAOupS,EAAoBC,EAAa9b,GAClD,GAAI1tR,EAAO,CAEP,IADA,IAAI1iD,EAAS,GACJmF,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CACnC,IAAI/D,EAAOshD,EAAMv9C,GACbhG,EAAOkxU,GAAY6b,EAAa/b,GAAsBhrU,EAAGirU,IACzDjJ,EAAkB,CAClB/lU,KAAMA,EACN6zI,UAAW9vI,EACXhG,KAAMA,GAENo7D,EAAO/9D,KAAKuzU,kBAAkBxlS,IAAI48R,GAMtC,IALIj6Q,EAAAA,EAAAA,IAAS9rD,KACTA,EAAO,CACHomU,UAAWpmU,KAGfyb,EAAAA,EAAAA,IAASzb,GAAO,CAChB,IAAIkwU,GAAe/7T,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,GAChC+lU,EAAgBmK,aAAeA,EAC/BA,EAAa/2Q,KAAOA,EACpB/9D,KAAK2vV,qBAAqB7a,GAC1B90U,KAAK4vV,sBAAsB9a,EAAcnyU,GACzC3C,KAAK6vV,wBAAwB/a,GACzB2a,IACA3a,EAAagb,aAAe3T,IAE5BrH,EAAa5uR,QACb4uR,EAAa5uR,MAAQlmD,KAAKwvV,cAAc1a,EAAa5uR,MAAOupS,EAAoB9sV,IAEpFa,EAAOpD,KAAK00U,EACf,MACGtxU,EAAOpD,KAAKwE,EAEnB,CACD,OAAOpB,CACV,CACJ,EACDmsV,qBAAsB,SAAS/qV,GAAM,WAC7B,UAAYA,EAAK60O,WACjB70O,EAAKw/U,iBAAkBh2R,EAAAA,GAAAA,eAAcxpD,EAAKw/U,iBAAiB,GAC3Dx/U,EAAKowU,0BAA4B,SAAA5mH,GACzBxpN,EAAK4a,WACL5a,EAAKmrV,qBAAuB,EAAKhlL,aAAaqjD,IAElDxpN,EAAK4a,SAAW,EAAKwwU,mBAAmBlzV,KAAK,EAAM8H,EACtD,EACDA,EAAKowU,0BAA0BpwU,EAAK4a,UAE3C,EACDowU,sBAAuB,SAAShrV,EAAMjC,GAC9B,WAAaiC,EAAK60O,WAClB70O,EAAK4a,SAAWxf,KAAKiwV,oBAAoBnzV,KAAKkD,KAAM4E,GACpDA,EAAK8tU,KAAO1yU,KAAKwvV,cAAc5qV,EAAK8tU,MAAM,EAAM/vU,GAAM,GAE7D,EACDktV,wBAAyB,SAASjrV,GAC1BA,EAAK4a,WACL5a,EAAK4a,SAAWxf,KAAK+qK,aAAanmK,EAAK4a,UAE9C,EACD6uU,eAAgB,SAASnoS,GACrB,GAAIA,EACA,IAAK,IAAIv9C,EAAI,EAAGA,EAAIu9C,EAAMvlD,OAAQgI,IAAK,CAEnC,GAAI,UADOu9C,EAAMv9C,GACI8wO,SACjB,OAAO,CAEd,CAER,EACD8L,cAAe,WACX,IAAI91L,EAAOzvD,KACPkmD,EAAQuJ,EAAK9iB,OAAO,SACpB2tJ,EAAW7qI,EAAK2/R,cACpBlpS,EAAQuJ,EAAK+/R,cAActpS,GAC3BuJ,EAAKygS,mBAAqBzgS,EAAK0gS,qBAAqB71J,EAAUt6L,KAAKowV,4BAA4BlqS,EAAO,CAClGmqS,QAAQ,EACR5hF,SAAUh/M,EAAK9iB,OAAO,YACtBy3S,gBAAiB30R,EAAK9iB,OAAO,mBAC7BupS,cAAel2U,KAAK2sC,OAAO,iBAC3Bq3S,iBAAkBhkV,KAAK2sC,OAAO,oBAC9BypS,gBAAiB,SAAS6W,GACtBx9R,EAAK45R,aAAavsV,KAAK2yD,EAAvBA,CAA6BA,EAAKygS,mBAAoBjD,EACzD,EACDztS,eAAgB,SAASv2C,GACrBwmD,EAAK45R,aAAapgV,EAAEmoB,UAAWnoB,EAAEmoB,UAAUu2T,qBAC9C,IAER,EACD2I,wBAAyB,SAAS1rV,GAC9B,OAAOA,EAAKshD,OAAS,EACxB,EACD+pS,oBAAqB,SAASrrV,EAAMqE,EAAGuxE,GAAY,IAC3C+1Q,EAD2C,OAE3CC,EAAYz/Q,GAAE,SAASpC,SAAS6L,GAChCi2Q,GAAkBhrS,EAAAA,GAAAA,GAAO,CAAC,EAAG7gD,EAAK6rV,gBAAiB,CACnDlpP,WAAY3iG,EAAK8tU,KACjBrkH,eAAgB,SAAAzwN,GACZ,IAAI8yV,EAAuBC,EAC3B,QAAUD,EAAwB9rV,EAAK6rV,uBAAoB,IAAWC,GAAiC,QAAUC,EAAyBD,EAAsBriI,sBAAmB,IAAWsiI,GAAkCA,EAAuBlyV,KAAKiyV,EAAuB9yV,GACnRk8E,GAAkBl8E,EAAKkiE,YAC1B,EACDsuJ,aAAc,SAAC9yE,EAAUryI,EAAG1B,GACxB,IAAIizE,EAAazJ,GAAExpE,GACf68U,GAAkBh2R,EAAAA,GAAAA,eAAcktF,EAAS8oM,iBAAiB,GAC1DgK,EAAgB,EAAK+B,qBAAqB31Q,EAAY,EAAK41Q,4BAA4B,EAAKE,wBAAwBh1M,GAAW,CAC/HmzH,SAAUnzH,EAASmzH,SACnB21E,gBAAiBA,EACjBlO,cAAe,EAAKvpS,OAAO,iBAC3Bq3S,iBAAkB1oM,EAAS0oM,iBAC3B8L,aAAcx0M,EAASw0M,aACvB1Z,gBAAiB,SAAA6W,GACb,EAAKkB,qBAAqB,CACtB3zQ,WAAYA,EACZ4zQ,cAAeA,EACfloS,MAAOo1F,EAASp1F,MAChB+mS,YAAaA,GAEpB,KAED,EAAK1Z,mBACL,EAAKA,kBAAkBqd,2BAA2Bt1M,EAASv9E,KAAM,CAC7DqwR,cAAeA,IAGnBhK,GACA,EAAK+J,qBAAqB,CACtB3zQ,WAAYA,EACZ4zQ,cAAeA,EACfloS,MAAOo1F,EAASp1F,MAChB+mS,YAAamB,EAAczG,sBAGtC,IAEDkJ,EAA4B,SAAC3qS,EAAOnd,GAChClkC,MAAMC,QAAQohD,IACdA,EAAMxlD,SAAQ,SAAAkE,GAAI,OAAI,EAAK2uU,kBAAkBqd,2BAA2BhsV,EAAKm5D,KAAM,CAC/EysQ,eAAgBzhS,GADF,GAIzB,EACG2rS,EAAW10U,KAAKmjK,iBAAiBqtL,EAAWhf,GAAUif,GAC1D1/Q,GAAEyJ,GAAY3vE,SAASujE,SX/cgB,0BWgdvCsmQ,EAAS3nS,GAAG,iBAAiB,SAAA9jC,GACrB,eAAiBA,EAAE4mC,UACnBghT,EAA0B5nV,EAAE/K,MAAO+K,EAAEmoB,UAE5C,IACDy/T,EAA0B,CAAC,CACvB9yR,KAAMn5D,EAAKm5D,OADU,gBAEnB,QAAUwyR,EAAa3rV,EAAK8tU,YAAS,IAAW6d,EAAaA,EAAa,KAAK7b,EACxF,EACDsb,mBAAoB,SAASprV,EAAMxH,EAASo9E,GAAY,WAChDz8D,EAAK3gB,EAAQ2nT,cAAcpyD,UAAU50O,GACrCquR,EAASr7N,GAAE,SAAS9C,YX1dW,8BW0dgC5f,EAAAA,EAAAA,IAAUzpD,EAAKumB,UAAYvmB,EAAKumB,QAAQxqB,QAAQytE,SAASutQ,IAAkBhtQ,SAAS6L,GACnJ0mO,EAAY,CACZhvR,KAAM,QACNulO,WAAY15O,GAEhB/d,KAAK86M,QAAQomG,EAAW9U,GACxBr7N,GAAEyJ,GAAY3vE,SAASujE,SXleiB,2BWmepCxpE,EAAKumB,SACL4lD,GAAE,UAAU3C,SX/ec,yBW+eqBznE,KAAK/B,EAAKumB,SAAS+iD,KAAK,KAAMnwD,GAAI4wD,SAASy9N,GAE9F,IAAI0kD,EAAgB//Q,GAAE,SAAS3C,SXveD,yBWueoCO,SAASy9N,GAC3E,GAAIxnS,EAAKmrV,qBACLnrV,EAAKqwU,4BAA8B,WAC/B6b,EAAchjS,QACd,IAAIxzD,EAAO,CACPoyV,SAAU,EAAK//S,OAAO,YACtBvb,UAAW,GAEfxsB,EAAKmrV,qBAAqBzhT,OAAO,CAC7BmH,MAAOn7C,EACPiN,UAAWs6I,GAAiBivM,IAEnC,EACDlsV,EAAKqwU,kCACF,CACH,IAAImZ,EAAgBpuV,KAAKmwV,qBAAqBW,EAAe9wV,KAAKowV,4BAA4BpwV,KAAKswV,wBAAwB1rV,GAAO,CAC9H6pQ,SAAU7pQ,EAAK6pQ,SACfu1E,iBAAkBp/U,EAAKo/U,iBACvBI,gBAAiBx/U,EAAKw/U,gBACtB0L,aAAclrV,EAAKkrV,gBAEvB9vV,KAAKuzU,mBAAqBvzU,KAAKuzU,kBAAkBqd,2BAA2BhsV,EAAKm5D,KAAM,CACnFqwR,cAAeA,IAEnB,IAAI3/E,EAAW2/E,EAActH,eACxB9mV,KAAKusV,gBAAgBhnV,SAASkpQ,IAC/BzuQ,KAAKusV,gBAAgBnsV,KAAKquQ,GAE9B29B,EAAOh+N,SAASguQ,GAAwB3tE,GACxC29B,EAAOl+N,KAAKmuQ,GAAsB5tE,EACrC,CACJ,EACD2hF,4BAA6B,SAASlqS,EAAO6qS,GAA8B,WACvE,OdheD,SAAuC/5U,GAC1C,IACUvR,EAUNuR,EAVAvR,KACcurV,EASdh6U,EATAg6U,aACaC,EAQbj6U,EARAi6U,YACO/qS,EAOPlvC,EAPAkvC,MACiBiwH,EAMjBn/J,EANAm/J,gBAC8B46K,EAK9B/5U,EALA+5U,6BAMAG,EAAc,CACdzrV,KAAMA,EACNygD,MAAOA,EACP8qS,aAAcA,EACd76K,gBAAiBA,EACjB8tK,mBANAjtU,EAJAitU,mBAWAzkS,eAPAxoC,EAHAwoC,eAWAC,YARAzoC,EAFAyoC,YAWA0xS,oBATAn6U,EADAm6U,oBAWAvvG,mBAAoBqvG,EAAY/qG,iBAAmB8qG,OAAe,EAClE9qG,iBAAkB+qG,EAAY/qG,iBAC9Bu6F,iBAAkBwQ,EAAYxQ,iBAC9BE,iBAAkBsQ,EAAYtQ,iBAC9BD,aAAcuQ,EAAYvQ,aAC1BE,aAAcqQ,EAAYrQ,aAC1BwC,gBAAiB6N,EAAY7N,gBAC7BlN,cAAe+a,EAAY/a,cAC3B6N,WAAYkN,EAAYvE,SACxBnN,cAAe0R,EAAY1R,cAC3B4E,cAAe8M,EAAY9M,cAC3BE,YAAa4M,EAAY5M,YACzBzF,oBAAqBqS,EAAYrS,oBACjCsF,iBAAkB+M,EAAY/M,iBAC9B/wF,UAAW89F,EAAY99F,WAW3B,OATa1tM,EAAAA,GAAAA,GAAOyrS,EAAa,CAC7Bb,OAAQU,EAA6BV,OACrC5hF,SAAUsiF,EAA6BtiF,SACvC21E,gBAAiB2M,EAA6B3M,gBAC9C0L,aAAciB,EAA6BjB,aAC3C9L,iBAAkB+M,EAA6B/M,iBAC/C5N,gBAAiB2a,EAA6B3a,gBAC9CzlT,MAAOogU,EAA6BpgU,OAG3C,CcgbcygU,CAA8B,CACjC3rV,KAAMzF,KACNixV,YAAajxV,KAAK2sC,SAClBqkT,aAAchxV,KAAKg6D,WACnB9T,MAAOA,EACPiwH,gBAAiBn2K,KAAKwuV,sBACtBuC,6BAA8BA,EAC9B9M,mBAAoB,SAAArmV,GACX,EAAKyzV,iBACN,EAAKnM,2BAA2BtnV,EAEvC,EACD4hD,eAAgB,SAAA5hD,GACZ,EAAK21U,kBAAkB+d,qBAAqB1zV,EAAKwzB,UAAUmiT,mBAC3Dwd,EAA6BvxS,gBAAkBuxS,EAA6BvxS,eAAe5hD,EAC9F,EACD6hD,YAAa,SAAAilH,GACT,IAGI6sL,EADA7sL,EADAtzI,UAEmC65T,sBACvC,EAAK1X,kBAAkBie,mBAAmBD,EAC7C,EACDJ,oBAAqB,WACjB,IAAIM,EACJ,QAAUA,EAAwB,EAAK/F,0BAAuB,IAAW+F,GAAiCA,EAAsB1F,wBACnI,GAER,EACDoE,qBAAsB,SAAShoI,EAASupI,GAAsB,WACtDC,EAAuB,CACvB57T,GAAI27T,EAAqBjjF,SACzB34O,GAAI47T,EAAqBjjF,SACzB54O,GAAI67T,EAAqBjjF,SACzB74O,GAAI,GAER51B,KAAKssV,uBAAuBlsV,KAAK,CAC7B4jV,kBAAkBv+R,EAAAA,GAAAA,GAAOksS,EAAsBD,EAAqB1N,oBAExE,IAAIhqR,EAAW+W,GAAE,SACjB/W,EAAS2U,SAASw5I,GAClB,IAAIp/K,EAAW/oC,KAAKmjK,iBAAiBnpG,EAAU,kBAAmB03R,GAMlE,OALA3oT,EAASgE,GAAG,uBAAuB,WAC/B,EAAK6kT,mCACL,EAAKC,6BAA+Bt8T,YAAW,kBAAO,EAAKyuE,WAAa,EAAK2lE,UAA9B,GAA0C,EAC5F,IACD3pK,KAAKivV,sBAAsB7uV,KAAK2oC,GACzBA,CACV,EACDylT,oBAAqB,WACjB,OAAOxuV,KAAK2sC,OAAO,oBAAsB3sC,IAC5C,EACDmjK,iBAAkB,SAASnpG,EAAU30D,EAAMtF,GAKvC,OAJAA,EAASA,GAAU,CAAC,EACpBC,KAAKkqK,cAAcnqK,EAAQ,CACvBg1B,SAAU/0B,KAAK2sC,OAAO,cAEnB3sC,KAAKmiD,SAAS6X,EAAU30D,EAAMtF,EACxC,EACDysV,yBAA0B,WACtB,IAAI/8R,EAAOzvD,KACXyvD,EAAK1iB,GAAG,iBAAkB,SAASnvC,GAC/B,IAAIk0V,EAAiBl0V,EAAKiyC,SACtB,aAAeiiT,KACVzjS,EAAAA,EAAAA,IAAUzwD,EAAKM,QAChBuxD,EAAKvC,SAASytG,OAAO,WAAY/8J,EAAKM,MAAQ,CAAC,GAEnDuxD,EAAKsiS,oCAAoCn0V,EAAKM,QAE9CuxD,EAAKw/R,sBAAsBtuV,SAC3BksD,EAAAA,EAAAA,IAAK4C,EAAKw/R,uBAAwB,SAAS9tV,EAAOitV,GAC1C,aAAe0D,IACfriS,EAAK4hS,iBAAkB,EACvBjD,EAAczhT,OAAO,aAAc/uC,EAAKM,OACxCuxD,EAAK4hS,iBAAkB,GAEvB,aAAezzV,EAAKxE,MAAQ,aAAewE,EAAKxE,MAChDg1V,EAAczhT,OAAOmlT,EAAgBl0V,EAAKM,MAEjD,GAER,GACJ,EACD4hK,eAAgB,SAASliK,GACrB,IAAIo0V,EAAgBp0V,EAAKiyC,SAASxtC,MAAM,KACpC2vV,EAAcrxV,OAAS,IAAM,IAAMqxV,EAAc,GAAGloV,OAAO,UAAY9J,KAAKiyV,2BAA2Br0V,IAGvGo0V,EAAcrxV,OAAS,IAAM,IAAMqxV,EAAc,GAAGloV,OAAO,aAAe9J,KAAKkyV,8BAA8Bt0V,IAGjHoC,KAAKmyV,6BAA6Bv0V,EACrC,EACDu0V,6BAA8B,SAASv0V,GACnC,OAAQA,EAAKxE,MACT,IAAK,WACI4G,KAAK2sC,OAAO,UAENivB,EAAAA,EAAAA,IAAch+D,EAAKM,QAC1B8B,KAAKoyV,eAFLpyV,KAAKypK,cAIT,MACJ,IAAK,qBA+BL,IAAK,sBACL,IAAK,WACD,MA/BJ,IAAK,QACL,IAAK,WACL,IAAK,mBACL,IAAK,gBACL,IAAK,YACL,IAAK,kBACL,IAAK,sBACL,IAAK,gBACL,IAAK,6BACL,IAAK,mBACL,IAAK,mBACL,IAAK,eACL,IAAK,eACL,IAAK,kBACL,IAAK,mBACL,IAAK,SACL,IAAK,mBACL,IAAK,gBACL,IAAK,cACDzpK,KAAKypK,cACL,MACJ,IAAK,wBACDzpK,KAAK0uV,2BACL,MACJ,IAAK,cACG,SAAW1uV,KAAK2sC,OAAO,aACvB3sC,KAAKypK,cAET,MAIJ,IAAK,QACDzpK,KAAKmiD,SAASvkD,GACdoC,KAAKkwV,mBAAmBvjT,OAAO/uC,EAAKxE,KAAMwE,EAAKM,OAC/C8B,KAAKqpV,aAAarpV,KAAKkwV,mBAAoBlwV,KAAKkwV,mBAAmBvI,sBACnE,MACJ,IAAK,kBACD7xK,GAAAA,YAA6Bl4K,EAAKi9J,eAAiB76J,MACnDA,KAAKypK,cACL,MACJ,QACIzpK,KAAKmiD,SAASvkD,GAEzB,EACDq0V,2BAA4B,SAASr0V,GACjC,IAAIqnV,EAAYrnV,EAAKiyC,SAASxtC,MAAM,KAChCnE,EAAQN,EAAKM,MACbi0N,EAAWnyN,KAAKqyV,aAAapN,GAC7BrgV,EAAO5E,KAAK2sC,OAAOwlL,GACnBmgI,EAAwB10V,EAAKiyC,SAASjuC,QAAQuwN,EAAW,IAAK,IAC9DogI,EAAmBD,EAAsBjwV,MAAM,KAAK,GAAGT,QAAQ,SAAU,IACzE4wV,EAAaxyV,KAAKyyV,2BAA2BF,EAAkB3tV,EAAMA,EAAK2tV,GAAmB30V,EAAKi9J,cAAes3D,GACjH3uN,EAASxD,KAAK0yV,4BAA4BF,IAAexyV,KAAK2yV,kCAAkC/0V,EAAKiyC,SAAU3xC,GACnH,IAAKsF,GAAUoB,EAAM,CACjB5E,KAAK4yV,kBAAkBhuV,EAAM0tV,EAAuBp0V,GACpD,IAAIgoD,EAAQlmD,KAAK6yV,uBAAuB7yV,KAAK2sC,OAAO,UACpD3sC,KAAK2sC,OAAO,QAASuZ,GACrB1iD,GAAS,CACZ,CACD,OAAOA,CACV,EACD0uV,8BAA+B,SAASt0V,GACpC,IAAIqnV,EAAYrnV,EAAKiyC,SAASxtC,MAAM,KAChCnE,EAAQN,EAAKM,MACb8sU,EAAYia,EAAUlgV,MAAM,GAAG0H,KAAK,KACpCk4O,EAAS3kP,KAAK6qV,UAAU7f,GAS5B,OARIrmF,EACAA,EAAOh4M,OAAO,QAASzuC,GAEvB8B,KAAKklV,2BAA2B,CAC5Bla,UAAWA,EACX9sU,MAAOA,KAGR,CACV,EACDu0V,2BAA4B,SAASjjT,EAAY5qC,EAAM1G,EAAO28J,EAAes3D,GAKzE,MAJI,SAAW3iL,IACXxvC,KAAKuzU,kBAAkBuf,2BAA2B,GAAG7iV,OAAOkiN,EAAU,UACtEj0N,EAAQ8B,KAAKwvV,cAActxV,GAAO,EAAMi0N,GAAU,IAE/C4gI,GAA0BvjT,EAAY,CACzC5qC,KAAMA,EACN1G,MAAOA,EACP28J,cAAeA,EACf4vK,iBAAkBzqU,KAAKuzU,mBAE9B,EACDmf,4BAA6B,SAAS7sU,GAClC,OAAOA,GAAUA,EAAOmtU,YAC3B,EACDC,yCAA0C,SAASpjT,GAC/C,IAIYqjT,EAJR1jT,EAAa0kS,GAA0BrkS,GACvCu8S,GAAqChrV,QAAQouC,IAAe,IAC5DsmI,GAAAA,SAA0B91K,KAAKwuV,uBAC3BxuV,KAAK2sC,OAAO,2BAEZ,QAAUumT,EAAyBlzV,KAAK0rV,0BAAuB,IAAWwH,GAAkCA,EAAuBnH,0BAG9I,EACDoH,4BAroBsB,SAqoBM/E,EAAe5+S,EAAYtxC,EAAOyE,GAAM,WAChE,GAAI3C,KAAK0+J,iBAAmB,EAAG,EAC1B0vL,EAAc1vL,kBAAoB0vL,EAAcv2S,cACjD,IAAIv1C,EAAMtC,KAAKuzU,kBAAkB6f,cAAczwV,GAC/C3C,KAAK2+J,oBAAoB5wH,IAAIzrC,GAAK,WAE9B,OADC8rV,EAAcpqP,WAAaoqP,EAAcp2S,aAClC,IAAI36B,GAAAA,IAAUze,SACzB,GACJ,CAkBDwvV,EAAcrhT,GAAG,gBAjBS,SAAtBsmT,EAAsBpqV,GAEtB,GADAA,EAAEmoB,UAAUklB,IAAI,eAAgB+8S,GAC5Blf,GAAuBxxU,GAAO,CAC9B,IAAI2wV,EdttBO,SAAAlf,GAGvB,IAFA,IAAImf,EAAYnf,EAAS/xU,MAAM,KAC3BmxV,GAAkB,QAAID,GACjB5qV,EAAI4qV,EAAU5yV,OAAS,EAAGgI,GAAK,EAAGA,IAAK,CAC5C,GAAIwrU,GAAuBof,EAAU5qV,IACjC,OAAO6qV,EAAgB/mV,KAAK,KAEhC+mV,EAAgBnyV,OAAOsH,EAAG,EAC7B,CACD,MAAO,EACV,Cc4sB6B8qV,CAAc9wV,GACxB+wV,EAAmB,EAAKngB,kBAAkBogB,kCAAkCL,GAC5EI,GACA,EAAKvF,qBAAqB,CACtBjoS,MAAOwtS,EAAiB/mT,OAAO,SAC/ByhT,cAAesF,EACfl5Q,WAAYk5Q,EAAiB15R,WAC7BizR,YAAayG,EAAiB/L,sBAGzC,MACG,EAAK0B,aAAa,EAAK6G,mBAAoB,EAAKA,mBAAmBvI,qBAE1E,IAEDyG,EAAczhT,OAAO6C,EAAYtxC,GACjC8B,KAAKizV,yCAAyCzjT,EACjD,EACDmjT,kCAnqBsB,SAmqBY9iT,EAAU3xC,GACxC,IAAI+mV,EAAYp1S,EAASxtC,MAAM,KAC3BmtC,EAAa0kS,GAA0BrkS,GAC3C,GAAI,UAAYL,GAAcy1S,EAAUtkV,OAAS,EAAG,CAChD,IAAIwxN,EAAWnyN,KAAKqyV,aAAapN,GAC7BmJ,EAAgBpuV,KAAKuzU,kBAAkBogB,kCAAkCxhI,GAC7E,GAAIi8H,EAAe,CACfpuV,KAAKuzU,kBAAkBie,mBAAmBpD,EAAcnD,uBACxD,IAAI/kS,EAAQlmD,KAAKwvV,cAActxV,GAAO,EAAOi0N,GAE7C,OADAnyN,KAAKmzV,4BAA4B/E,EAAe5+S,EAAY0W,EAAOisK,IAC5D,CACV,CACJ,MAAM,GAAI8yH,EAAUtkV,OAAS,EAAG,CAC7B,IAAIizV,EAAe3O,EAAUtkV,OAAS,EAClCkzV,EAAY7zV,KAAKqyV,aAAapN,EAAUlgV,MAAM,EAAG6uV,IACjDE,EAAiB9zV,KAAKuzU,kBAAkBogB,kCAAkCE,GAC9E,GAAIC,EAAgB,CAChB,IAAIC,EAAiB9f,GAAkBgR,EAAU2O,GAAepkT,GAChE,GAAI,eAAiBA,GACbskT,EAAennT,OAAOonT,KAAoB71V,EAC1C,OAAO,EAGf,GAAI,YAAcsxC,EAAY,CAC1B,IAAIwkT,EAAYh0V,KAAK2sC,OAAOsnS,GAAkB4f,EAAW,UACzD,GAAIG,GAAaA,EAAUrzV,OAAQ,CAC/B,IAAIszV,EAAqBH,EAAennT,OAAO,SAC/CqnT,EAAUtzV,SAAQ,SAACkE,EAAMzD,GACJ8yV,EAAmB9yV,GACzBulV,aAAe9hV,EAAK8hV,YAClC,GACJ,CACJ,CAED,OADA1mV,KAAKmzV,4BAA4BW,EAAgBC,EAAgB71V,EAAO21V,IACjE,CACV,CACJ,CACD,OAAO,CACV,EACDK,mCA1sBsB,SA0sBa/hI,EAAU/0N,GAAS,IAC9CoG,EAD8C,OAUlD,OARAxD,KAAK63C,eACLgV,EAAAA,EAAAA,IAAKzvD,GAAS,SAACoyC,EAAYiJ,GAEvB,KADAj1C,EAAS,EAAKmvV,kCAAkC1e,GAAkB9hH,EAAU3iL,GAAaiJ,IAErF,OAAO,CAEd,IACDz4C,KAAKg4C,YACEx0C,CACV,EACD6uV,aAAc,SAASpN,GACnB,IACIt8U,EADAwpN,EAAW8yH,EAAU,GAEzB,IAAKt8U,EAAI,EAAGA,EAAIs8U,EAAUtkV,SACjB,IAAMskV,EAAUt8U,GAAGmB,OAAO,0BADDnB,IAE1BwpN,GAAY,IAAM8yH,EAAUt8U,GAKpC,OAAOwpN,CACV,EACD+yH,2BAA4B,SAAStnV,GACjCoC,KAAK2/J,sBAAsB,qBAA3B3/J,CAAiDpC,EACpD,EACDm0V,oCAAqC,SAASz3V,GAC1C,IAAIm1D,EAAOzvD,KACP1F,IAAQ+lB,EAAAA,EAAAA,IAAS/lB,KACjBuyD,EAAAA,EAAAA,IAAKvyD,GAAO,SAAS0wU,EAAW9sU,GAC5BuxD,EAAKy1R,2BAA2B,CAC5Bla,UAAWA,EACX9sU,MAAOA,GAEd,GAER,EACD4mV,kBAAmB,SAAS9Z,EAAW9sU,GACnC,IAAImwD,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,aAAc,CACpC,IAAIg4M,EAAS3kP,KAAK6qV,UAAU7f,GAE5B,GADAhrU,KAAK2sC,OAAO,YAAcq+R,EAAW9sU,GACjCymP,EACkBA,EAAOh4M,OAAO,WACZzuC,GAChBymP,EAAOh4M,OAAO,QAASzuC,EAGlC,CACJ,EACD20V,uBAAwB,SAAS3sS,GAC7B,IAAIwmS,EAAW1sV,KAAK2sC,OAAO,YACvBnpC,EAAS,GAmBb,OAlBK0iD,IAASmI,EAAAA,EAAAA,IAAUq+R,KACpB7/R,EAAAA,EAAAA,IAAK6/R,GAAW,SAAS1hB,GACrBxnU,EAAOpD,KAAK,CACR4qU,UAAWA,GAElB,IAED9kR,IACA2G,EAAAA,EAAAA,IAAK3G,GAAQ,SAAS/kD,EAAOyD,IACrByb,EAAAA,EAAAA,IAASzb,GACTpB,EAAOpD,KAAKwE,GAEZpB,EAAOpD,KAAK,CACR4qU,UAAWpmU,GAGtB,IAEEpB,CACV,EACD2wV,gBAAiB,SAAS91R,EAAOnY,GAC7B,IAIIyyF,EAJAlpF,EAAOzvD,KACPo0V,GAAa/zU,EAAAA,EAAAA,IAASg+C,GAASA,EAAQ5O,EAAK4kS,eAAeh2R,GAC3D8vE,EAAYimN,EAAWjmN,UACvBmmN,EAAYF,EAAWE,UAsB3B,OApBIpuS,EAAMvlD,SACNksD,EAAAA,EAAAA,IAAK3G,GAAQ,SAAS/kD,EAAOyD,GACzB,IAAI60O,EAAW70O,EAAK60O,SACpB,GAAI66G,EAAU3zV,OAAQ,CAClB,IAAIgC,EAAO2xV,EAAUvvV,QACrBH,EAAO6qD,EAAK8kS,oBAAoB5xV,EAAMwrI,EAAWvpI,EACpD,MAAM,GAAI,UAAY60O,IAAc70O,EAAKumB,UAAWvmB,EAAKxL,MAAS,WAAaqgP,IAAa70O,EAAKxL,KAAM,CACpG,IAAIo7V,EAAgB/kS,EAAKglS,iBAAiBh7G,GAC1C70O,EAAKshD,MAAQuJ,EAAKojS,uBAAuBjuV,EAAKshD,OAC9CthD,EAAO6qD,EAAK0kS,gBAAgB,CACxBhmN,UAAWA,EACXmmN,UAAWA,GACZ1vV,EAAK4vV,GACX,CACD,Gdv3BsC,SAAC5vV,EAAMupI,GACzD,QAAIvpI,IACOA,EAAKomU,YAAc78L,GAAavpI,EAAKxL,OAAS+0I,GAAa6lM,GAAqBpvU,EAAK8qH,SAAWye,GAAa,UAAYvpI,EAAK60O,UAAYu6F,GAAqBpvU,EAAKumB,WAAagjH,EAG/L,Cck3BmBumN,CAAyC9vV,EAAMupI,GAE/C,OADAwK,EAAa/zI,GACN,CAEd,IAEE+zI,CACV,EACD07M,eAAgB,SAASh2R,GAIrB,IAHA,IAAI8vE,EAAY9vE,EACZs2R,EAAiBxmN,EAAU/sI,QAAQ,KACnCwzV,EAAa,IACT,IAAMD,GACVC,EAAWx0V,KAAK+tI,EAAUnpI,OAAO,EAAG2vV,IAEpCA,GADAxmN,EAAYA,EAAUnpI,OAAO2vV,EAAiB,IACnBvzV,QAAQ,KAEvC,MAAO,CACH+sI,UAAWA,EACXmmN,UAAWM,EAAW95R,UAE7B,EACDy5R,oBAAqB,SAAS5xV,EAAMwrI,EAAWvpI,GAC3C,IAGIpB,EAHAi2O,EAAW70O,EAAK60O,SAChB+6G,EAAgBx0V,KAAKy0V,iBAAiBh7G,GACtCo7G,EAAqB,UAAYp7G,GAAY,WAAaA,GAAY70O,EAAK8qH,MAE/E,EAAG,CACC,IAAImlO,EAqBA,MApBA,IAAIz7V,EAAOwL,EAAKxL,MAAQwL,EAAKumB,SAAWvmB,EAAK8qH,MACzColO,GAAkBzmS,EAAAA,EAAAA,IAAUj1D,GAC5B27V,EAAoB/gB,GAAqB56U,GACzC47V,OAAW,EAKf,GAJApwV,EAAK4vV,GAAiBx0V,KAAK6yV,uBAAuBjuV,EAAK4vV,IACnDM,IACAE,EAAWryV,EAAKirD,QAEfjrD,EAAKhC,SACN6C,EAASxD,KAAKm0V,gBAAgBhmN,EAAWvpI,EAAK4vV,KAE1C,QAGHM,GAAmBA,GAAmBC,IAAsBC,IACzDryV,EAAKhC,SACL6C,EAASxD,KAAKi1V,0BAA0BtyV,EAAMwrI,EAAWvpI,EAAK4vV,IAM7E,OAAQ7xV,EAAKhC,UAAW0tD,EAAAA,EAAAA,IAAU7qD,IACnC,OAAOA,CACV,EACDixV,iBAAkB,SAASh7G,GACvB,MAAO,WAAaA,EAAW,OAAS,OAC3C,EACDw7G,0BAA2B,SAAStyV,EAAMwrI,EAAWjoF,GACjD,IACI1iD,EADAisD,EAAOzvD,KAWX,OATA6sD,EAAAA,EAAAA,IAAK3G,GAAQ,SAAS/kD,EAAO+zV,GAEzB,GADA1xV,EAASisD,EAAK8kS,oBAAoB5xV,EAAKoC,QAASopI,EAAW+mN,GAEvD,OAAO,CAEd,IACI1xV,IACDA,GAAS,GAENA,CACV,EACDovV,kBAAmB,SAAShuV,EAAM+nC,EAAQzuC,IAClCmiB,EAAAA,EAAAA,IAASzb,KACTA,EAAK+nC,GAAUzuC,EAEtB,EACD0pK,kBAAmB,WACf,IAAIyuK,EAAsBr2U,KAAK6uV,0BAC3B7uV,KAAK2uV,0BAA4BtY,IAC7Br2U,KAAKm1V,mBAAmBn1V,KAAK2uV,wBAAyBtY,KACtDr2U,KAAK4uV,oBAAsBvY,EAC3Br2U,KAAK2pK,WACL3pK,KAAK4uV,yBAAsB,GAE/B5uV,KAAK2uV,wBAA0BtY,EAEtC,EACD8e,mBAAoB,SAASC,EAAeC,GACxC,IAAIC,GAAY,EAOhB,OANAzoS,EAAAA,EAAAA,IAAK7sD,KAAKssV,wBAAyB,SAASnrV,EAAOyD,GAC/C,GAAIA,EAAKo/U,iBAAiBoR,KAAmBxwV,EAAKo/U,iBAAiBqR,GAE/D,OADAC,GAAY,GACL,CAEd,IACMA,CACV,EACD3rL,SAAU,WAENprG,EAAAA,EAAAA,QAAqBv+D,KAAKg6D,WAAWh+D,KADhB,uDACsC,UAC3DgE,KAAKmiD,UACR,EACDiwS,aAAc,WACVpyV,KAAKuzU,kBAAkB1mR,MAAM,SAAS/tD,EAAG6rU,IACjCt8Q,EAAAA,EAAAA,IAAUs8Q,EAAgBH,iBAAmB3oF,GAAAA,SAAgB8oF,EAAgBH,kBAC7EG,EAAgBH,eAAehkS,QAC/BmkS,EAAgBH,eAAe79R,OAAO,WAAW,GAExD,IACDmpI,GAAAA,WAA4B91K,KAAKwuV,sBACpC,EACD+G,YAAa,SAASj7V,EAAM4D,EAAOs3V,GAC/B,IAAI/lS,EAAOzvD,KACP0gG,EAAQ80P,EAAgBt3V,EAAQ5D,GAChC+lB,EAAAA,EAAAA,IAASqgF,IACT7zC,EAAAA,EAAAA,IAAK6zC,GAAQ,SAASsqO,EAAW8e,GAC7Br6R,EAAK8lS,YAAYC,EAAgBl7V,EAAO,IAAM0wU,EAAYA,EAAW8e,GAAYzpU,EAAAA,EAAAA,IAASypU,GAC7F,KACMp5R,EAAAA,EAAAA,IAASp2D,IAChBm1D,EAAKq1R,kBAAkBxqV,EAAM4D,EAEpC,EACDk9M,mBAAoB,SAAS94M,EAAKxB,GAC9Bd,KAAKmiD,SAAS7/C,EAAKxB,GACnBd,KAAKuzU,kBAAkB1mR,MAAM,SAAS/tD,EAAG6rU,IACjCt8Q,EAAAA,EAAAA,IAAUs8Q,EAAgBH,iBAC1BG,EAAgBH,eAAepvH,mBAAmB94M,EAAKxB,EAE9D,GACJ,EACD+kK,aAAc,WACV,OAAO7lK,KAAKg6D,WAAWh+D,KAAK,qCAAgD+4C,OAC/E,EACD4yH,mBAAoB,WAChB3nK,KAAKqpV,aAAarpV,KAAKkwV,mBAAoBlwV,KAAKkwV,mBAAmBvI,qBACtE,EACDiK,iCAAkC,WAC1B5xV,KAAK6xV,+BACLv8T,aAAat1B,KAAK6xV,8BAClB7xV,KAAK6xV,kCAA+B,EAE3C,EACDn/M,SAAU,WACN1yI,KAAK4xV,mCACL97K,GAAAA,YAA6B91K,KAAKwuV,uBAClCxuV,KAAKmiD,UACR,EACDszS,YAAa,WACTz1V,KAAKoyV,cACR,EACDxH,WAAY,SAAStwV,EAAM4D,GACvB8B,KAAKu1V,YAAYj7V,EAAM4D,EAC1B,EACD2sV,UAAW,SAAS7f,GAChB,OAAOhrU,KAAKuzU,kBAAkBuX,8BAA8B9f,IAAchrU,KAAKuzU,kBAAkBwX,yBAAyB/f,EAC7H,EACD/0E,UAAW,SAAS78P,GAChB,OAAO4G,KAAKuzU,kBAAkBwX,yBAAyB3xV,EAC1D,EACDknT,iBAAkB,WACd,IAAI7wP,EAAOzvD,KACPuuD,EAAW,IAAIlxC,GAAAA,GAQnB,OAPIoyC,EAAKigR,YACLjgR,EAAKigR,YAAY1jS,SAAS4iB,MAAM,WAC5BL,EAASO,YAAYW,EACxB,IAEDlB,EAASO,YAAYW,GAElBlB,EAASjxC,SACnB,EACDo4U,WAAY,SAAS33U,EAAI4uB,EAAQzuC,GAAO,WAChCgoD,EAAQlmD,KAAK6yV,uBAAuB7yV,KAAK2sC,OAAO,UAChD/nC,EAAO5E,KAAKm0V,gBAAgBp2U,EAAImoC,GAChCvjD,EAAO0xU,GAAYnuR,EAAOthD,GAC9B,GAAKA,EAGL,OAAQkT,UAAUnX,QACd,KAAK,EACD,OAAOiE,EACX,KAAK,EACD,IAAI4tV,EAAaxyV,KAAKyyV,2BAA2B9lT,EAAQ/nC,EAAM1G,EAAO0G,EAAK+nC,GAAShqC,GACpF3C,KAAK4yV,kBAAkBhuV,EAAM+nC,EAAQzuC,GACrC,IAAI2xC,EAAWokS,GAAkBtxU,EAAMgqC,GAClC3sC,KAAK0yV,4BAA4BF,IAAgBxyV,KAAK2yV,kCAAkC9iT,EAAU3xC,IACnG8B,KAAK2sC,OAAO,QAASuZ,GAEzB,MACJ,QAGY,IAAIyvS,EAFZ,IAAIt1U,EAAAA,EAAAA,IAASssB,GACT,IAAK3sC,KAAKk0V,mCAAmCvxV,EAAMgqC,IAE/CkgB,EAAAA,EAAAA,IAAKlgB,GAAQ,SAAC6C,EAAYiJ,GACtB,IAAI+5S,EAAa,EAAKC,2BAA2BjjT,EAAY5qC,EAAM6zC,EAAa7zC,EAAK4qC,GAAa7sC,GAClG,EAAKiwV,kBAAkBhuV,EAAM4qC,EAAYiJ,GACpCk9S,GAAqB,EAAKjD,4BAA4BF,KACvDmD,GAAmB,EAE1B,IACDA,GAAoB31V,KAAK2sC,OAAO,QAASuZ,GAI5D,EACDq7F,SAAU,WACN,OAAOu0B,GAAAA,cAA+B91K,KAAKwuV,sBAC9C,EACDvF,UAAW,SAAS7vV,GAChB,MAAO,MAAQ4G,KAAK2sC,OAAO,UAAY,KAAOvzC,GAAQ,IAAI8yD,GAAAA,EAC7D,EACDi8R,sBAAuB,WACnB,OAAOnoV,KAAK4uV,mBACf,IAELp8K,GAAkB,SAAU65K,IAC5B,IC5lCA,GD4lCA,GEpkCIuJ,GAAgB,SAChBC,GAAkB,WAElBC,GAAoB,2BAKpBC,GAAmB,+BACnBC,GAAkB,mCAClBC,GAAmB,0BAMnBC,GAAsB,CAAC,CACvBxmN,WAAY,+BACZxxI,MAAO,UACR,CACCwxI,WAAY,8BACZxxI,MAAO,SACR,CACCwxI,WAAY,+BACZxxI,MAAO,UACR,CACCwxI,WAAY,gCACZxxI,MAAO,WACR,CACCwxI,WAAY,+BACZxxI,MAAO,WAEPi4V,GAAcD,GAAoBnyV,KAAI,SAAAa,GAAI,MAAK,CAC/C+B,KAAM,kBAAMyjH,GAAAA,OAA2BxlH,EAAK8qI,WAAtC,EACNxxI,MAAO0G,EAAK1G,MAF8B,IAI1Ck4V,GAAiB,CAAC,CAClB/wV,KAAM,SACP,CACCA,KAAM,SACP,CACCA,KAAM,UAEN46E,GAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAC1Co2Q,GAAAA,WACF,WAAYjuV,IAAM,eACdpI,KAAKs2V,qBAAuB3mN,KAC5B3vI,KAAKs2V,qBAAuB3mN,KAC5B3vI,KAAKu2V,gBAAkBv2V,KAAKs2V,qBAAqBrmN,mBAAmB7nI,GAAMA,IAC7E,yCACD,SAAUgN,GACNpV,KAAKu2V,gBAAkBv2V,KAAKs2V,qBAAqBrmN,mBAAmB76H,GAAQhN,IAC/E,yBACD,SAASi2D,EAAOngE,IACPA,GAAS2G,MAAMC,QAAQ5G,KAAWA,EAAMyC,cAClCX,KAAKu2V,gBAAgBl4R,IAG5BhQ,EAAAA,EAAAA,IAAUgQ,KACN,UAAYA,UACLr+D,KAAKu2V,gBAAgB1qV,MAE5B,UAAYwyD,UACLr+D,KAAKu2V,gBAAgB1nO,MAEhC7uH,KAAKu2V,gBAAgBl4R,GAASngE,EAErC,iCACD,WACI,IAAI0O,EAAQ5M,KAAKu2V,gBACjB,MAAI,UAAW3pV,EACJ,QAEP,UAAWA,EACJ,QAEJ,OACV,oCACD,WACI,OAAO5M,KAAKs2V,qBAAqBE,oBAAoBx2V,KAAKu2V,gBAC7D,yBACD,WACI,OAAOv2V,KAAKu2V,eACf,qCACD,WACI,OAAOv2V,KAAKs2V,qBAAqBpiN,kBAAkBl0I,KAAKu2V,gBAC3D,OA1CCF,GA4CAI,GAAAA,SAAAA,6IACF,WACI,IAAIrwO,GAAiB,kEACrB,OAAO3gE,EAAAA,GAAAA,GAAO2gE,EAAgB,CAC1BloH,MAAO,KACP4nF,UAAW,IAAIhjF,KACfo7C,oBAAgB,GAEvB,mCACD,WACI,IAAIA,EAAiBl+C,KAAK2sC,OAAO,kBACjC,OAAO0hB,EAAAA,EAAAA,IAAUnQ,GAAkBA,EAAiBkqE,GAAAA,qBACvD,iCACD,SAAiB57G,EAASpT,GACtB,IAAI2G,EAAS+X,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,CAAC,EAI/E,OAHA9X,KAAKkqK,cAAcnqK,EAAQ,CACvBg1B,SAAU/0B,KAAK2sC,OAAO,eAEnB,+DAAuBngC,EAASpT,EAAM2G,EAChD,sBACD,YACI,qDACAC,KAAKu2V,gBAAkB,IAAIF,GAAer2V,KAAK2sC,OAAO,SACzD,wBACD,YACI,uDACA3sC,KAAKg6D,WAAWoU,SAnHA,wBAoHhBpuE,KAAKolQ,YAAcr0L,GAAE,SAAS3C,SAjHJ,kCAiH0CO,SAAS3uE,KAAKg6D,YAClFh6D,KAAK02V,kBACL12V,KAAK22V,eAAe32V,KAAKolQ,YAC5B,iCACD,SAAiBj3H,GACb,IAAIw2G,EAAS3kP,KAAK42V,oBAAoB/L,UAAU18M,GAChD,KAAK9/E,EAAAA,EAAAA,IAAUs2L,GACX,OAAQx2G,GACJ,IAAK,QACDw2G,EAAS3kP,KAAK62V,YACd,MACJ,IAAK,QACDlyG,EAAS3kP,KAAK82V,mBACd,MACJ,IAAK,QACDnyG,EAAS3kP,KAAK+2V,iBAG1B,OAAOpyG,CACV,gCACD,WACI,IAAIrlH,GAAQt/H,KAAKu2V,gBAAgBpoV,WAAWmxH,MAAQ42N,GAzH3B,GAyH2Eh4V,OAAOsW,cAa3G,OAZAxU,KAAKg3V,SAAW,CAACh3V,KAAKi3V,kBAAkB33N,GAAOt/H,KAAKk3V,sBAAsB53N,GAAOt/H,KAAKm3V,qBAAqB73N,GAAO,CAC9Gm6G,SAAU,QACVlvE,SAAU0rL,GACVxnF,SAAU,EACVu1E,iBAAkB,CACdpuT,GAAI,GAERswB,MAAOlmD,KAAKo3V,sBAAsB93N,IACnC,CACCm6G,SAAU,QACVvzL,MAAOlmD,KAAKq3V,2BAETr3V,KAAKg3V,QACf,kCACD,SAAkB13N,GAAM,WACpB,MAAO,CACH0rM,UAAW,OACX5xU,KAAM,OACNsmV,WAAY,cACZn1K,SAAUwrL,GACVhxC,cAAe,CACX7+P,MAAOiwS,GACPj4V,MAAOohI,EACPjhE,MAAO,OACP05E,UAAW,QACXE,YAAa,OACbktG,OAAQ,aACRrnM,YAAa,CACT+qH,MAAOktL,IAEX/zG,eAAgB,SAAApkP,GAAI,OAAI,EAAKqmR,qBAAqBrmR,EAA9B,GAExB8Z,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,sCAG5C,sCACD,SAAsBkV,GAAM,WACpB3iD,EAAW38E,KAAKu2V,gBAAgBpoV,WAAWwuE,UAAY,EAC3D,MAAO,CACH88J,SAAU,QACVg1B,SAAU,EACVlkG,SAAU,GAAGt6J,OAAO+lV,IAAiB/lV,OAAO4lV,IAC5C7R,iBAAkB,CACdpuT,GAAI,GAERswB,MAAO,CAAC,CACJ8kR,UAAW,WACX0U,WAAY,cACZ36B,cAAe,CACXltP,OAAQ,IACRlnC,MA/KgB,GAgLhB9N,IAAK,EACLw7C,MAAO,WACPngE,MAAOy+E,EACPglN,iBAAiB,EACjBC,qBAAqB,EACrB9jP,YAAa,CACT+qH,MAAOmtL,IAEXh0G,eAAgB,SAAApkP,GAAI,OAAI,EAAKqmR,qBAAqBrmR,EAA9B,GAExB8Z,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,uCAEtC,CACChxH,KAAM,gBACNmxK,SAAU,GAAGt6J,OAAO+lV,IAAiB/lV,OAAO2lV,IAC5Cp2U,SAAU,kBAAM4qG,GAAAA,OAA2B,+BAA+Bn6G,OAAOqvH,EAAKrjH,OAAO,GAAGyqB,eAAez2B,OAAOqvH,EAAKt6H,OAAO,GAAGwP,eAA3H,IAGrB,qCACD,SAAqB8qH,GACjB,MAAO,CACHm6G,SAAU,QACVlvE,SAAU,GAAGt6J,OAAOgmV,IAAkBhmV,OAAO2lV,IAC7C1vS,MAAO,CAAC,CACJ9sD,KAAM,gBACNqvV,QAAS,EACTjpU,SAAU,kBAAM4qG,GAAAA,OAA2B,iCAAjC,EACVvpE,QAASy+E,GAAQ,UAAYA,GAAQ,WAAaA,IAG7D,sCACD,SAAsBA,GAClB,MAAO,CAACt/H,KAAKs3V,mBAAmBh4N,GAAOt/H,KAAKu3V,qBAAqBj4N,GAAOt/H,KAAKw3V,wBAAwBl4N,GACxG,mCACD,SAAmBA,GAAM,WACrB,MAAO,CACH0rM,UAAW,QACXyd,QAAS,EACTjpU,SAAU,SAAC1gB,EAAGghE,GACV,IAAI5hB,EAAiB,EAAKu5S,qBACtBzjN,EAAQ,EAAK0jN,qBACbC,EAAiBvvO,GAAAA,YAA6B,eAC9C/F,EAAWpiC,GAAKl7E,MAAMm5C,GAAgBjuC,OAAOgwE,GAAKl7E,MAAM,EAAGm5C,IAC3D05S,EAAmBD,EAAe5yV,MAAMm5C,GAAgBjuC,OAAO0nV,EAAe5yV,MAAM,EAAGm5C,IAAiBn6C,KAAI,SAACa,EAAMzD,GAAP,MAAkB,CAC9HwF,KAAM/B,EACNtC,IAAK+/G,EAASlhH,GAF8F,IAIhH,EAAK02V,eAAiB9mR,GAAE,SAAS3C,SAtOnB,8BAsOqDO,SAAS7O,GAC5E,EAAK+2R,YAAc,EAAK1zL,iBAAiB,EAAK00L,eAAgBhxG,GAAa,CACvE3gM,MAAO0xS,EACPv5R,MAAO,QACP6oK,cAAe,WACfrM,iBAAkB7mF,EAClB9nD,QAAS,MACT4uI,mBAAoB,SAAA7xN,GAChB,IAAI4xN,EAAmB5xN,EAAEmoB,UAAUub,OAAO,oBACtCw3L,GAAgB,OAAStJ,QAAoB,IAAWA,OAAmB,EAASA,EAAiBl6N,QAAUk6N,EAAmB,EAAKi9H,wBAC3I,EAAKvB,gBAAgBwB,SAAS,QAAS5zH,GACvC,EAAK6zH,oBACR,GAER,EACDn3S,QAAS,WAAay+E,EACtB5nH,MAAO,CACHmpC,SAAS,GAGpB,qCACD,SAAqBy+E,GAAM,WACnB24N,EAAa7vO,GAAAA,cAA+B,QAKhD,MAAO,CACH4iN,UAAW,UACX0U,WAAY,cACZ36B,cAAe,CACX1mP,MAAO,UACPnY,OATK,QAAIrhD,MAAM,KAAKd,KAAI,SAACjF,EAAG6J,GAAJ,MAAW,CACvCzK,MAAO,GAAG+R,OAAOtH,EAAI,GACrBhC,KAAMsxV,EAAWtvV,GAFW,IAUxBzK,MAAO8B,KAAKk4V,sBACZvnU,MAjQoB,IAkQpBsnH,YAAa,OACbF,UAAW,QACXj6F,YAAa,CACT+qH,MAvQA,yCAyQJm5E,eAAgB,SAAApkP,GAAI,OAAI,EAAKqmR,qBAAqBrmR,EAA9B,GAExBijD,QAAS,WAAay+E,EACtB5nH,MAAO,CACHmpC,SAAS,GAGpB,wCACD,SAAwBy+E,GAAM,WAC1B,MAAO,CACH0rM,UAAW,aACX0U,WAAY,cACZ36B,cAAe,CACXliS,IAAK,EACL4U,IAAK,GACLogC,OAAQ,IACRlnC,MAxRoB,GAyRpB0tC,MAAO,aACPsjO,iBAAiB,EACjBC,qBAAqB,EACrB1jS,MAAO8B,KAAKm4V,qBACZr6S,YAAa,CACT+qH,MAhSD,wCAkSHm5E,eAAgB,SAAApkP,GAAI,OAAI,EAAKqmR,qBAAqBrmR,EAA9B,GAExBijD,QAAS,YAAcy+E,GAAQ,WAAaA,EAC5C5nH,MAAO,CACHmpC,SAAS,GAGpB,uCACD,WAAyB,WACjBu3S,EAAap4V,KAAKu2V,gBAAgB8B,mBACtC,MAAO,CAAC,CACJrtB,UAAW,YACX0U,WAAY,eACZ36B,cAAe,CACX7+P,MAAOkwS,GACPl4V,MAAOk6V,EACPrgN,UAAW,OACX15E,MAAO,YACP+vJ,aAAc,SAAA9yE,GACV,MAAI,UAAYA,EAASj2I,KACd,EAAKizV,2BAEZ,UAAYh9M,EAASj2I,KACd,EAAKkzV,2BAET,EAAKC,yBACf,EACDrzG,OAAQ,WACRrnM,YAAa,CACT+qH,MAtUS,wCAwUbm5E,eAAgB,SAAApkP,GAAI,OAAI,EAAK66V,8BAA8B76V,EAAvC,GAExB8Z,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,+BAG5C,+BACD,SAAe5vC,GACXx6E,KAAK04V,gBAAkB14V,KAAKmjK,iBAAiB3oF,EAAY6xQ,GAAM,CAC3DnmS,MAAOlmD,KAAKg3V,SACZnK,uBAAuB,EACvB3mG,kBAAkB,EAClB04F,qBAAqB,EACrBW,cAAe,QAEnBv/U,KAAK24V,wBACR,oCACD,SAAoBh0G,EAAQ3V,GACxB,IAAI4pH,EAAU,SAAS3oV,OAAO,IAAIi8C,GAAAA,GAClCy4L,EAAO7pC,QAAQ,cAAe89I,GAC9Bj0G,EAAO7pC,QAAQ,KAAM89I,EAAS5pH,EACjC,kCACD,WACI,OAAOhvO,KAAK04V,eACf,wCACD,SAAwBx6V,GAChBA,EACK8B,KAAK2sC,OAAO,UACb3sC,KAAK64V,mBAGT74V,KAAKu2V,gBAAgBuC,UAAU,IAC/B94V,KAAK2sC,OAAO,QAAS,IAE5B,gCACD,WACI3sC,KAAKu2V,gBAAgBwB,SAAS,OAAQ7B,GAjWb,GAiW6Dh4V,OACtF8B,KAAKg4V,oBACR,mCACD,WACIh4V,KAAK2sC,OAAO,QAAS3sC,KAAKu2V,gBAAgBC,uBAAyB,GACtE,mCACD,WACI,IAAIviN,EAAaj0I,KAAKu2V,gBAAgBwC,uBAItC,OAHK9kN,EAAWtzI,SACZszI,EAAaj0I,KAAK83V,yBAEf7jN,CACV,sCACD,WACI,IACI+kN,EADYh5V,KAAK2sC,OAAO,aACHu0C,SACzB,MAAO,CAACjB,GAAK+4Q,GAChB,mCACD,WACI,IAAIC,EAAYj5V,KAAKu2V,gBAAgBpoV,WAAWywH,WAIhD,OAHKq6N,IACDA,EAAYj5V,KAAK2sC,OAAO,aAAaqzC,WAElCi5Q,CACV,oCACD,WACI,IAAIC,EAAcl5V,KAAKu2V,gBAAgBpoV,WAAWwxH,QAIlD,OAHKu5N,IACDA,EAAcl5V,KAAK2sC,OAAO,aAAayyC,WAAa,GAEjD31E,OAAOyvV,EACjB,wCACD,WACI,IAAIC,EAAkBpoR,GAAE,SAAS3C,SAAS0nR,GAAoBD,IAE9D,OADA9kR,GAAE,SAASpqE,KAAKyjH,GAAAA,OAA2B,gCAAgCh8C,SAAS0nR,GAAoBF,IAAejnR,SAASwqR,GACzHA,CACV,8CACD,SAA8Bv7V,GAC1B,IACWM,EACPN,EADAM,MAEJ8B,KAAK24V,uBAAuBz6V,GACxB,UAAYA,GACZ8B,KAAKu2V,gBAAgBwB,SAAS75V,EAAO8B,KAAKo5V,kBAE1C,UAAYl7V,GACZ8B,KAAKu2V,gBAAgBwB,SAAS75V,EAAO8B,KAAK82V,mBAAmBnqT,OAAO,UAEpE,UAAYzuC,IACZ8B,KAAKu2V,gBAAgBwB,SAAS,QAAS,IACvC/3V,KAAKu2V,gBAAgBwB,SAAS,QAAS,KAE3C/3V,KAAKg4V,oBACR,uCACD,WACI,IAAI95V,EAAQ4Z,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKu2V,gBAAgB8B,mBAC9F,UAAYn6V,IACZ8B,KAAK82V,mBAAmBnqT,OAAO,YAAY,GAC3C3sC,KAAK+2V,iBAAiBpqT,OAAO,YAAY,IAEzC,UAAYzuC,IACZ8B,KAAK82V,mBAAmBnqT,OAAO,YAAY,GAC3C3sC,KAAK+2V,iBAAiBpqT,OAAO,YAAY,IAEzC,UAAYzuC,IACZ8B,KAAK82V,mBAAmBnqT,OAAO,YAAY,GAC3C3sC,KAAK+2V,iBAAiBpqT,OAAO,YAAY,GAEhD,yCACD,WACI,IAAI0sT,EAAcr5V,KAAKu2V,gBAAgBpoV,WAAWtC,OAAS,EACvDytV,EAAiBvoR,GAAE,SAAS3C,SAAS0nR,GAAoBD,IAc7D,OAbA9kR,GAAE,SAASpqE,KAAKyjH,GAAAA,OAA2B,gCAAgCh8C,SAAS0nR,GAAoBF,IAAejnR,SAAS2qR,GAChIt5V,KAAKu5V,oBAAsBxoR,GAAE,SAAS3C,SApbpB,wCAobkDO,SAAS2qR,GAC7EvoR,GAAE,SAASpqE,KAAKyjH,GAAAA,OAA2B,sCAAsCh8C,SAAS0nR,GAAoBF,IAAejnR,SAAS2qR,GACtIt5V,KAAK82V,mBAAqB92V,KAAKmjK,iBAAiBnjK,KAAKu5V,oBAAqBz7B,GAAW,CACjFz/P,MAAO,QACPxG,OAAQ,IACRlnC,MAjbwB,GAkbxB9N,IAAK,EACL8+Q,iBAAiB,EACjBC,qBAAqB,EACrB1jS,MAAOm7V,EACPr3G,eAAgBhiP,KAAKw5V,+BAA+B18V,KAAKkD,QAEtDs5V,CACV,+CACD,SAA+B17V,GAC3B,GAAI,UAAYoC,KAAKu2V,gBAAgB8B,mBAAoB,CACrD,IACWn6V,EACPN,EADAM,MAEJ8B,KAAKu2V,gBAAgBwB,SAAS,QAAS75V,GACvC8B,KAAKg4V,oBACR,CACJ,iCACD,SAAiB/jU,GACb,OAAIj0B,KAAKu2V,gBAAgBpoV,WAAW0gH,OAAS7sC,GAAAA,SAAmBhiF,KAAKu2V,gBAAgBpoV,WAAW0gH,MAAO56F,GAC5FA,EAEJ+tD,GAAAA,YAAsB/tD,EAChC,yCACD,WACI,IAAIwlU,EAAcz5V,KAAKo5V,iBACnBE,EAAiBvoR,GAAE,SAAS3C,SAAS0nR,GAAoBD,IAa7D,OAZA9kR,GAAE,SAASpqE,KAAKyjH,GAAAA,OAA2B,6BAA6Bh8C,SAAS0nR,GAAoBF,IAAejnR,SAAS2qR,GAC7Ht5V,KAAK05V,mBAAqB3oR,GAAE,SAAS3C,SApdd,oCAodiDO,SAAS2qR,GACjFt5V,KAAK+2V,iBAAmB/2V,KAAKmjK,iBAAiBnjK,KAAK05V,mBAAoBj4B,GAAS,CAC5EpjQ,MAAO,QACPngE,MAAOu7V,EACPp0V,KAAM,OACN28O,eAAgBhiP,KAAK25V,+BAA+B78V,KAAKkD,MACzDqkR,gBAAiB,CACbnmO,eAAgBl+C,KAAKy3V,sBAEzBpzD,iBAAiB,IAEdi1D,CACV,+CACD,SAA+B17V,GAC3B,GAAI,UAAYoC,KAAKu2V,gBAAgB8B,mBAAoB,CACrD,IAAIuB,EAAiB55V,KAAK65V,iBAAiB,IAAI/2V,KAAKlF,EAAKM,QAErD4uH,EADuB9sH,KAAK2sC,OAAO,uBACbmtT,GACtBn3V,EAAOmqH,EAAsBxD,GAAuBkD,wBAA0BlD,GAAuBoD,iBACrGqtO,EAAuB/5V,KAAK2sC,OAAO,sBAAsB+nF,WAAWklO,EAAgB,CACpFj3V,KAAMA,EACNmqH,oBAAqBA,IAEzB9sH,KAAKu2V,gBAAgBwB,SAAS,QAASgC,GACvC/5V,KAAKg4V,oBACR,CACJ,qCACD,SAAqBp6V,GACjB,IACWM,EAEPN,EAFAM,MACe28J,EACfj9J,EADAi9J,cAEAx8F,EAAQzgE,EAAKwzB,UAAUub,OAAO,SAC7B3sC,KAAK2sC,OAAO,YAGb3sC,KAAKu2V,gBAAgBwB,SAAS15R,EAAOngE,GACjC,SAAWmgE,IACXr+D,KAAKg6V,kBAAkB97V,GACvB8B,KAAKi6V,0BAA0B/7V,EAAO28J,IAE1C76J,KAAKg4V,sBAPLh4V,KAAK2sC,OAAO,QAAS,GAS5B,kCACD,SAAkBzuC,GACV,UAAYA,GAAS,WAAaA,IAClC8B,KAAKu2V,gBAAgBwB,SAAS,QAAS,IACvC/3V,KAAKu2V,gBAAgBwB,SAAS,UAAW,IACzC/3V,KAAKu2V,gBAAgBwB,SAAS,aAAc,KAE5C,WAAa75V,IACb8B,KAAKu2V,gBAAgBwB,SAAS,QAAS/3V,KAAK03V,sBAC5C13V,KAAKu2V,gBAAgBwB,SAAS,UAAW,IACzC/3V,KAAKu2V,gBAAgBwB,SAAS,aAAc,KAE5C,YAAc75V,IACd8B,KAAKu2V,gBAAgBwB,SAAS,aAAc/3V,KAAKm4V,sBACjDn4V,KAAKu2V,gBAAgBwB,SAAS,UAAW,IACzC/3V,KAAKu2V,gBAAgBwB,SAAS,QAAS,KAEvC,WAAa75V,IACb8B,KAAKu2V,gBAAgBwB,SAAS,aAAc/3V,KAAKm4V,sBACjDn4V,KAAKu2V,gBAAgBwB,SAAS,UAAW/3V,KAAKk4V,uBAC9Cl4V,KAAKu2V,gBAAgBwB,SAAS,QAAS,IAE9C,+BACD,SAAen6V,GACX,IAAIlD,EAAIC,EAAIC,EAAIC,EAChB,OAAQ+C,EAAKxE,MACT,IAAK,WACD,QAAUsB,EAAKsF,KAAK04V,uBAAoB,IAAWh+V,GAAcA,EAAGiyC,OAAO,WAAY/uC,EAAKM,OAC5F,QAAUvD,EAAKqF,KAAK82V,0BAAuB,IAAWn8V,GAAcA,EAAGgyC,OAAO,WAAY/uC,EAAKM,OAC/F,QAAUtD,EAAKoF,KAAK62V,mBAAgB,IAAWj8V,GAAcA,EAAG+xC,OAAO,WAAY/uC,EAAKM,OACxF,QAAUrD,EAAKmF,KAAK+2V,wBAAqB,IAAWl8V,GAAcA,EAAG8xC,OAAO,WAAY/uC,EAAKM,QAC7F,6DAAqBN,GACrB,MACJ,IAAK,QACDoC,KAAKu2V,gBAAgBuC,UAAUl7V,EAAKM,OACpC8B,KAAKk6V,6BACLl6V,KAAK24V,yBACL34V,KAAKm6V,oBAAoBn6V,KAAKu2V,gBAAgBpoV,aAC9C,6DAAqBvQ,GACrB,MACJ,IAAK,YACDoC,KAAKg6V,kBAAkBh6V,KAAKu2V,gBAAgBpoV,WAAWmxH,OACnDjxE,EAAAA,EAAAA,IAAUruD,KAAKu2V,gBAAgBC,wBAC/Bx2V,KAAKg4V,qBAET,MACJ,IAAK,iBACD,GAAIh4V,KAAK62V,YAAa,CAClB,IAAIc,EAAiBvvO,GAAAA,YAA6B,eAC9C/F,EAAWpiC,GAAKl7E,MAAMnH,EAAKM,OAAO+R,OAAOgwE,GAAKl7E,MAAM,EAAGnH,EAAKM,QAC5D05V,EAAmBD,EAAe5yV,MAAMnH,EAAKM,OAAO+R,OAAO0nV,EAAe5yV,MAAM,EAAGnH,EAAKM,QAAQ6F,KAAI,SAACa,EAAMzD,GAAP,MAAkB,CACtHwF,KAAM/B,EACNtC,IAAK+/G,EAASlhH,GAFsF,IAIxGnB,KAAK62V,YAAYlqT,OAAO,QAASirT,EACpC,CACG53V,KAAK05V,oBACL15V,KAAK+2V,iBAAiBpqT,OAAO,iCAAkC3sC,KAAKy3V,sBAExE,MACJ,SACI,6DAAqB75V,GAEhC,0CACD,SAA0B0hI,EAAM86N,GACxB96N,IAAS86N,IACTp6V,KAAK04V,gBAAgBhD,WAAW,QAAS,WAAW,GACpD11V,KAAK04V,gBAAgBhD,WAAW,aAAc,WAAW,GACzD11V,KAAK04V,gBAAgBhD,WAAW,UAAW,WAAW,GACtD11V,KAAK04V,gBAAgBhD,WAAW,gBAAiB,UAAWp2N,GAAQ,UAAYA,GAAQ,WAAaA,GACjG,WAAaA,GACbt/H,KAAK04V,gBAAgBhD,WAAW,QAAS,WAAW,GAEpD,YAAcp2N,GACdt/H,KAAK04V,gBAAgBhD,WAAW,aAAc,WAAW,GAEzD,WAAap2N,IACbt/H,KAAK04V,gBAAgBhD,WAAW,aAAc,WAAW,GACzD11V,KAAK04V,gBAAgBhD,WAAW,UAAW,WAAW,IAGjE,2CACD,WACI,IACUp2N,EACNt/H,KAAKu2V,gBAAgBpoV,WADrBmxH,KAEJA,GAAQt/H,KAAK04V,gBAAgBhD,WAAW,gBAAiB,WAAYtrO,GAAAA,OAA2B,+BAA+Bn6G,OAAOqvH,EAAKrjH,OAAO,GAAGyqB,eAAez2B,OAAOqvH,EAAKt6H,OAAO,GAAGwP,gBAC7L,oCACD,SAAoB5H,GAChB5M,KAAK04V,gBAAgB7N,UAAU,QAAQl+S,OAAO,SAAU//B,EAAM0yH,MAAQ42N,GA/kB7C,GA+kB6Fh4V,OAAOsW,eAC7HxU,KAAKq6V,wBACLr6V,KAAKs6V,yBACLt6V,KAAKu6V,0BACLv6V,KAAKw6V,qBAAqB5tV,EAAM+vE,UAChC38E,KAAKy6V,0BACLz6V,KAAK06V,wBACL16V,KAAK26V,yBACR,qCACD,SAAqBz8V,GACjB8B,KAAK04V,gBAAgB7N,UAAU,YAAYl+S,OAAO,QAASzuC,GAAS,EACvE,sCACD,WACI,IAAIk6V,EAAap4V,KAAKu2V,gBAAgB8B,mBACtCr4V,KAAK04V,gBAAgB7N,UAAU,aAAal+S,OAAO,QAASyrT,EAC/D,sCACD,WAEI,GADsBp4V,KAAK04V,gBAAgBhD,WAAW,SAAS70S,QAC1C,CACjB,IAAI+5S,EAAQ56V,KAAK03V,qBACjB13V,KAAK66V,iBAAiB,SAASluT,OAAO,mBAAoBiuT,EAC7D,CACJ,uCACD,WAEI,GADsB56V,KAAK04V,gBAAgBhD,WAAW,cAAc70S,QAC/C,CACjB,IAAI88B,EAAM39E,KAAKm4V,qBACfn4V,KAAK04V,gBAAgB7N,UAAU,cAAcl+S,OAAO,QAASgxC,EAChE,CACJ,wCACD,WAEI,GADsB39E,KAAK04V,gBAAgBhD,WAAW,WAAW70S,QAC5C,CACjB,IAAI3sB,EAAQl0B,KAAKk4V,sBACjBl4V,KAAK04V,gBAAgB7N,UAAU,WAAWl+S,OAAO,QAASzY,EAC7D,CACJ,wCACD,WACI,IAAIroB,EAAQ7L,KAAKu2V,gBAAgBpoV,WAAWtC,OAAS,EACrD7L,KAAK82V,mBAAmBnqT,OAAO,QAAS9gC,EAC3C,wCACD,WACI7L,KAAK+2V,iBAAiBpqT,OAAO,QAAS3sC,KAAKo5V,iBAC9C,+BACD,WACI,IAAI0B,EAAY96V,KAAKu2V,gBAAgBpoV,WAAW0gH,MAChD,IAAKisO,EACD,OAAO96V,KAAK65V,iBAAiB,IAAI/2V,MAErC,IACIgqH,EADuB9sH,KAAK2sC,OAAO,uBACbmtT,GACtBn3V,EAAOmqH,EAAsBxD,GAAuBiD,wBAA0BjD,GAAuBmD,iBACzG,OAAOzsH,KAAK2sC,OAAO,sBAAsB+nF,WAAWomO,EAAW,CAC3Dn4V,KAAMA,EACNmqH,oBAAqBA,GAE5B,uBACD,WACI9sH,KAAK+6V,YAAY10U,OACpB,wBACD,WACQrmB,KAAKg7V,eACLh7V,KAAKg7V,cAAclgJ,QAAQhjM,UAAUnX,QAAU,OAAI,EAASmX,UAAU,GAAIA,UAAUnX,QAAU,OAAI,EAASmX,UAAU,GAE5H,OAtkBC2+U,CAAyB50G,IAwkB/BrvE,GAAkB,qBAAsBikL,IACxC,ICtrBIwE,GAAc,SAAS1zV,EAAW05E,EAAOixE,GACzC,IAAI13E,EAAazJ,GAAExpE,GACf2zV,EAAehpM,EAAW13E,EAAW2zH,aAAe3zH,EAAW4zH,YAC/DvxM,EAAOq1J,EAAW,QAAU,SAG5BipM,EAFa3gR,EAAW39E,KAAK,SAASoT,OAAOpT,IAChC29E,EAAW39E,KAAK,SAASoT,OAAOpT,IACDq+V,EAAe,EAC/D,OAAI,IAAMA,GAAgB,IAAMC,QAGV,IAAMD,GAAgBj6Q,GAAS,GAC5B,IAAMk6Q,GAAmBl6Q,GAAS,GAClCi6Q,EAAe,GAAKC,EAAkB,SAC/D,EAGH,ECiBGC,GAAWv5F,GAAAA,QAAgB,CAC3BjkG,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BowM,YAAY,EACZ3tO,eAAW,EACXqc,eAAW,EACXk0M,mBAAmB,GAE1B,EACD7sE,YAAa,WACTtoK,KAAKg6D,WAAWoU,SAbH,eAcbpuE,KAAKmiD,WACLniD,KAAK86M,QAAQ,YAAa,OAC7B,EACDxC,mBAAoB,WAChBt4M,KAAKq7V,qBACLr7V,KAAKmiD,UACR,EACDuxM,aAAc,WACV1zP,KAAKmiD,WACLniD,KAAKs7V,sBACR,EACD/mG,aAAc,WACV,IAAI/5D,EAASzpH,GAAE,cAGf,OAFA/wE,KAAKu1P,sBAAsB/6D,EAAQx6L,KAAK2sC,OAAO,cAC/C3sC,KAAKu7V,iCAAiC/gK,GAC/BA,CACV,EACD+6D,sBAAuB,SAAS/6D,EAAQi7D,GACpCj7D,EAAOtsH,KAAKunL,GAAkBrnL,SA/BT,sBAgCxB,EACDktR,qBAAsB,WAClBt7V,KAAKw7V,QAAU,EACf,IAAIhhK,EAASx6L,KAAKqzP,SACdooG,EDlDY,SAASl0V,EAAWm0V,GACxC,IAAIlhR,EAAazJ,GAAExpE,GACnB,MAAO,CACHg6I,SAAU,SAASt4I,GACf,GAAI28I,GAAoB38I,KAAOkqL,EAAclqL,EAAE0O,QAAQ+jV,GAAiB3qR,GAAEoiH,GAAalkH,GAAG1nE,IACtF,QAAI0zV,GAAYzgR,GAAavxE,EAAEg4E,MAAOh4E,EAAEipJ,YACpCjpJ,EAAE2/I,gBAAiB,GACZ,GAIf,IAAIuqC,CACP,EAER,CCoC4BwoK,CAAkBnhK,GAAQ,GAC/Cj8H,EAAAA,EAAAA,GAAgBi8H,EAAQh3C,GAAakgD,GAAmB1jM,KAAKw+J,MAAOi9L,EAAgB35U,GAAAA,MACpFy8C,EAAAA,EAAAA,GAAgBi8H,EAAQh3C,GAAa3oF,GAAAA,KAAoB76D,KAAKw+J,MAAOx+J,KAAKowJ,oBAAoBtzJ,KAAKkD,OACnGu+D,EAAAA,EAAAA,GAAgBi8H,EAAQh3C,GAAa3oF,GAAAA,KAAoB76D,KAAKw+J,MAAOx+J,KAAKqwJ,oBAAoBvzJ,KAAKkD,MACtG,EACDowJ,oBAAqB,SAASnnJ,GAC1BjJ,KAAKw7V,QAAU96R,GAAUz3D,GAAG+E,CAC/B,EACDqiJ,oBAAqB,SAASpnJ,GAC1B,IAAI2yV,EAAgBl7R,GAAUz3D,GAAG+E,EAC7BizE,EAAQjhF,KAAKw7V,QAAUI,EACvBX,GAAYj7V,KAAKqzP,SAAUpyK,KAC3Bh4E,EAAEi6L,kBAAmB,EACrBj6L,EAAE83D,mBAEN/gE,KAAKw7V,QAAUI,CAClB,EACDlzL,kBAAmB,WACf,IAAI1uG,EAAWh6D,KAAKg6D,WAChBxtD,EAAUwtD,EAASpgE,IAAI,GACvB+2B,EAAQ3wB,KAAKyhK,gBAAgB,QAASj1J,GACtCggB,EAASxsB,KAAKyhK,gBAAgB,SAAUj1J,GACxCoY,EAAY5kB,KAAK2sC,OAAO,aACxB1L,EAAYjhC,KAAK2sC,OAAO,aAC5BqtB,EAAS10B,IAAI,CACT1gB,eAAW,IAAWA,EAAYA,EAAY,GAC9Cqc,eAAW,IAAWA,EAAYA,EAAY,GAC9CtQ,MAAOA,EACPnE,OAAQA,GAEf,EACDqvU,iBAAkB,WACd77V,KAAKg6D,WAAW10B,IAAI,CAChB9Y,OAAQ,GACR5H,UAAW,GACXqc,UAAW,IAElB,EACDgzN,cAAe,WACPj0P,KAAK2sC,OAAO,sBACZ4xB,EAAAA,EAAAA,GAAgBv+D,KAAKqzP,SAAU7vG,GAAa,cAAexjJ,KAAKw+J,MAAOx+J,KAAKq7V,mBAAmBv+V,KAAKkD,OAExGA,KAAKmiD,UACR,EACD81M,eAAgB,WACZ15L,EAAAA,EAAAA,IAAiBv+D,KAAKqzP,SAAU7vG,GAAa,cAAexjJ,KAAKw+J,OACjEx+J,KAAKmiD,UACR,EACD25S,qBAlF2B,SAkFNthK,GACjB,OAAOvxH,GAAmBjpE,KAAKgnJ,UAAUptJ,IAAI,IAAI,GAASqvE,GAAmBjpE,KAAKq0P,sBAAsBz6P,IAAI,IAAI,GAASqvE,GAAmBjpE,KAAKs0P,2BAA2B16P,IAAI,IAAI,GAASwtE,EAAoB,UAAUrmB,EAAAA,EAAAA,MAAY6Z,iBAAiB4/H,EAAO5gM,IAAI,KAAKolC,MAC3Q,EACDq8T,mBAAoB,WAChB,IAAKv6S,EAAAA,EAAAA,MAAL,CAGA,IAAI05I,EAASx6L,KAAKqzP,SACd7mO,EAASxsB,KAAK2sC,OAAO,UACrBovT,OAAqB,IAAWvvU,GAAUxsB,KAAK2sC,OAAO,qBAE1D,GADiCovT,QAAsB,IAAWvvU,GAAUxsB,KAAK2sC,OAAO,aACxF,CAIA3sC,KAAK67V,mBACL77V,KAAKgnJ,UAAU1hH,IAAI,SAAU4lC,GAAelrE,KAAKgnJ,YACjDwzC,EAAOl1J,IAAI,SAAU,GACrB,IAAI02T,EAAmBh8V,KAAK87V,qBAAqBthK,GACjDx6L,KAAK0oK,oBACL,IAAI9jJ,EAAY5kB,KAAKi8V,mBAAmB,aACpCh7T,EAAYjhC,KAAKi8V,mBAAmB,aACpCC,EAAc1hK,EAAO,GAAG48F,aAI5B,QAHI,IAAWxyQ,IACXs3U,EAAc3yV,KAAKkuB,IAAIykU,EAAat3U,EAAYo3U,SAEhD,IAAW/6T,EAAW,CACtB,IAAIk7T,EAAoBl7T,EAAY+6T,EAChCI,EAAaF,EAAcC,EAC/BD,EAAc3yV,KAAKsZ,IAAIq5U,EAAaC,GACpCn8V,KAAKu7V,iCAAiC/gK,GAAS4hK,EAClD,CACD5hK,EAAOl1J,IAAI,SAAU42T,GACjBH,GACA/7V,KAAKgnJ,UAAU1hH,IAAI,SAAU,OApBhC,MAFGk1J,EAAOl1J,IAAI,SAAU,GANxB,CA8BJ,EACD22T,mBAAoB,SAASzsT,GACzB,IAAImxR,EAAgB3gU,KAAK2sC,OAAO6C,GAChC,IAAI6e,EAAAA,EAAAA,IAAUsyQ,GACV,MAAO,kBAAoBA,EAAgBA,EAAgB/3P,EAAY+3P,EAAe3gU,KAAKg6D,WAAWpgE,IAAI,GAAGq5C,cAAejzC,KAAKgnJ,UAAUptJ,IAAI,GAEtJ,EACD+5P,iBAAkB7xO,GAAAA,KAClB6lJ,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAKq7V,oBAEZ,EACDE,iCAAkC,SAAS/gK,EAAQ6hK,GAC/C,GAAI7hK,EAAQ,CACR,IAAI26C,GAAoB/mL,EAAAA,GAAAA,eAAciuS,EAAqBr8V,KAAK2sC,OAAO,sBACvE6tJ,EAAOvsH,YAvIsB,kCAuI0BknK,EAC1D,CACJ,EACDvtE,kBAAmB,WACX5nK,KAAK2sC,OAAO,YACZ3sC,KAAKq7V,oBAEZ,EACDv7L,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,oBACD4G,KAAKu7V,iCAAiCv7V,KAAKqzP,SAAUz1P,EAAKM,OAC1D8B,KAAKi4P,iBACLj4P,KAAKq7V,qBACL,MACJ,IAAK,QACL,IAAK,SACDr7V,KAAKmiD,SAASvkD,GACdoC,KAAKq7V,qBACL,MACJ,IAAK,YACL,IAAK,YACDr7V,KAAK0oK,oBACL1oK,KAAKq7V,qBACL,MACJ,IAAK,UACDr7V,KAAKmiD,SAASvkD,GACdA,EAAKM,OAAS8B,KAAKq7V,qBACnB,MACJ,QACIr7V,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,aAAc4oL,IAChC,ICzIIkB,GAAsB,YAGtBC,GAAmB,SACnBC,GAAyB,sBACzBC,GAA0B,gBAC1BC,GAAiC,uBAEjCC,GAA2B,wBAO3BC,GAASznC,GAAAA,QAAkB,CAC3Br+G,eAAgB,WAAW,WACnBjsM,EAAS7K,KAAKmiD,WACd06S,EAAa,SAAAz/V,GAAO,OAAI,EAAK+vD,MAAM+sJ,iBAAiB98M,EAAhC,EACpB4iD,EAAahgD,KAAK2sC,OAAO,cAC7B,OAAO8Y,EAAAA,GAAAA,GAAO,CAAC,EAAG56C,EAAQ,CACtBo5I,UAAW,SAASh7I,GAChB,GAAKjJ,KAAK88V,qBAAV,CAGA98V,KAAK+8V,sBAAsB9zV,GAC3BjJ,KAAKg9V,eAAgB,EACrB,IAAIC,EAAej9V,KAAKk9V,cAAgBl9V,KAAKm9V,eAAetoS,OACxD70D,KAAKk9V,cACLl9V,KAAKo9V,cAAc,QAAQ,GAE3B,IAAMH,EAAat8V,SAGvBX,KAAKq9V,qBAAsB,EAC3Br9V,KAAKs9V,kBAAkBL,UAChBj9V,KAAKq9V,oBAZX,CAaJ,EACD3vI,QAAS,SAACzkN,EAAG86H,GAAJ,OAAa96H,EAAEurB,SAAW,EAAK24B,MAAQtiD,EAAO6iN,QAAQjvN,KAAK,EAAMwK,GAAK4zV,EAAW94N,EAAjF,EACT4pF,UAAW,SAAC1kN,EAAG86H,GAAJ,OAAa96H,EAAEurB,SAAW,EAAK24B,MAAQtiD,EAAO8iN,UAAUlvN,KAAK,EAAMwK,GAAK4zV,EAAW94N,EAAnF,EACXq6H,IAAK,SAASn1P,GACV,GAAKjJ,KAAKk9V,cAAiBl9V,KAAK88V,qBAAhC,CAGA98V,KAAK+8V,sBAAsB9zV,GAC3BjJ,KAAKg9V,eAAgB,EACrB,IAAIC,EAAej9V,KAAKk9V,aACxBl9V,KAAKo9V,cAAc,QAAQ,GAC3Bp9V,KAAKq9V,qBAAsB,EAC3Br9V,KAAKs9V,kBAAkBL,UAChBj9V,KAAKq9V,mBAPX,CAQJ,EACDl5M,MAAO,SAASl7I,EAAG7L,GACf,IAAImgW,EAAoBv9V,KAAKmtD,OAAS,OAASntD,KAAKmtD,MAAMxgB,OAAO,kBAEjE,GADmB3sC,KAAK2sC,OAAO,uBAAyB4wT,EAIpD,OAFAt0V,EAAEkzD,sBACF,KAAOn8D,KAAK8iG,gBAAkB9iG,KAAKo5T,wBAAwBnwT,IAG3DjJ,KAAK2sC,OAAO,YACZ3sC,KAAK8iP,sBAAsB75O,GAC3B4zV,EAAWz/V,GACX6L,EAAEkzD,iBAET,EACDmxJ,MAAO,SAASrkN,EAAG7L,GACf,IAAIy4T,EAAW71T,KAAK2sC,OAAO,UACvB6wT,EAAgBx9V,KAAK0qT,2BACrBmL,IAAa2nC,IACbx9V,KAAK8iP,sBAAsB75O,GAC3B4zV,EAAWz/V,GACX6L,EAAEkzD,iBAET,EACDqxJ,UAAW,SAASvkN,GAChB,MAAKjJ,KAAK88V,sBAAwB98V,KAAKy9V,YAAcz9V,KAAKslQ,eAAiBtlN,IAAehgD,KAAKk9V,cAA/F,CAGAj0V,EAAEkzD,iBACF,IAAIv1C,EAAYo5B,EAAa,OAAS,OACtChgD,KAAKo9V,cAAcx2U,IAClB5mB,KAAK2sC,OAAO,cAAgB3sC,KAAK09V,iBAAiB92U,EAJlD,CAKJ,EACD6mM,WAAY,SAASxkN,GACjB,GAAKjJ,KAAK88V,uBAAwB98V,KAAKy9V,cAAcz9V,KAAKslQ,eAAkBtlN,GAAehgD,KAAKk9V,cAAhG,CAGAj0V,EAAEkzD,iBACF,IAAIv1C,EAAYo5B,EAAa,OAAS,OACtChgD,KAAKo9V,cAAcx2U,IAClB5mB,KAAK2sC,OAAO,cAAgB3sC,KAAK09V,iBAAiB92U,EAJlD,CAKJ,GAER,EACDm2U,sBAAuB,SAAS9zV,GAC5BA,EAAEkzD,iBACFlzD,EAAE83D,kBACF/gE,KAAK8iP,sBAAsB75O,EAC9B,EACDw0V,SAAU,WACN,OAAO,IAAMz9V,KAAK48T,YAAYj8T,MACjC,EACDg9V,qBAAsB,SAAS3jS,GAC3Bh6D,KAAK49V,gBAAkB5jS,EAASoU,SAtGP,mBAuG5B,EACD63O,sBAAuB,WACnB,OAAO,CACV,EACD62C,mBAAoB,WAChB,IAAItyV,EAAWa,GAAMrL,KAAKqzP,UAC1B,OAAO,IAAM7oP,EAAS+xB,OAAS,IAAM/xB,EAASN,GACjD,EACD2zV,iCAlG2B,SAkGM9/U,GAC7B/d,KAAK86M,QAAQ,mBAAoB/8L,EAAI/d,KAAKqzP,SAC7C,EACD+pG,cAAe,SAASx2U,EAAWk3U,GAC/B,IAAK99V,KAAKk9V,aAAc,CACpB,IAAIa,EAAc/9V,KAAKm9V,eAIvB,OAHAn9V,KAAKk9V,aAAe,SAAWt2U,EAAYm3U,EAAYhpT,QAAUgpT,EAAYlpS,OAC7E70D,KAAK45M,mBAAkB,EAAM55M,KAAKk9V,mBAClCl9V,KAAK69V,iCAAiC79V,KAAKk9V,aAAahvR,KAAK,MAEhE,CACD,IAAI8vR,EAAkBh+V,KAAKk9V,aAAat2U,GAAW,IAAI3W,OAAOssV,KAC1DyB,EAAgBr9V,OAAS,GACzBX,KAAKi+V,mBAAmBD,GACxBh+V,KAAK69V,iCAAiCG,EAAgB9vR,KAAK,SACpD4vR,GAAmB,SAAWl3U,GAAa5mB,KAAKslQ,iBACvDtlQ,KAAKk+V,iBACLl+V,KAAK69V,mCAEZ,EACDI,mBAAoB,SAASD,GACzBh+V,KAAK45M,mBAAkB,EAAO55M,KAAKk9V,cACnCl9V,KAAKk9V,aAAec,EACpBh+V,KAAK45M,mBAAkB,EAAM55M,KAAKk9V,aACrC,EACDgB,eAAgB,WACPl+V,KAAKk9V,eAGVl9V,KAAK45M,mBAAkB,EAAO55M,KAAKk9V,cACnCl9V,KAAK69V,0CACE79V,KAAKk9V,aACf,EACD/jG,kBAAmB,SAASn/L,GACxB,OAAIA,GAAYA,EAASr5D,QAAUq5D,EAAS,KAAOh6D,KAAK6lK,eAAe,GAC5D7rG,EAEJh6D,KAAKmiD,UACf,EACD00M,mBAAoB,WAChB,OAAO72P,KAAK49V,eACf,EACDxmG,iBA5I2B,WA6IvB,OAAOp3P,KAAKqzP,QACf,EACDqqG,iBAAkB,SAAS92U,GACvB,IAAI5mB,KAAK2sC,OAAO,eAAiBmU,EAAAA,EAAAA,OAG5B9gD,KAAK49V,gBAAV,CAGA,IAAIxlE,EAAiBp4R,KAAKm+V,mBAAmBv3U,GAC7C5mB,KAAK49V,gBAAgBzvJ,WAAWiqF,EAF/B,CAGJ,EACD+lE,mBAAoB,SAASv3U,GACzB,MAAI,UAAYA,GAAa,QAAUA,EAC5B5mB,KAAKo+V,mBAAmBx3U,GAE5B5mB,KAAKk9V,aAAel9V,KAAKq+V,uBAAuBz3U,GAAa5mB,KAAKo+V,mBAAmB,MAC/F,EACDA,mBAAoB,SAASx3U,GACzB,IAAIo5B,EAAahgD,KAAK2sC,OAAO,cAG7B,MAFmB,QAAU/lB,EAAYo5B,GAElBA,EAAa,GADnBA,GAAc,EAAI,IACmBhgD,KAAK49V,gBAAgBhkW,IAAI,GAAGu9R,YAAcnsN,GAAchrE,KAAK49V,iBACtH,EACDS,uBAAwB,SAASz3U,GAC7B,IACI03U,EAAe,SAAW13U,EADb5mB,KAAK2sC,OAAO,cAGnBqhI,EACNhuK,KAAKk9V,aAAa1yV,WADlBo6B,KAEAupK,EAAanuM,KAAK49V,gBAAgBzvJ,aAOtC,OANImwJ,IACAtwL,GAAgBhjG,GAAchrE,KAAKk9V,cAAc,GAAQlyR,GAAchrE,KAAK49V,kBAE5EU,EAAetwL,EAAe,IAC9BmgC,GAAcngC,GAEXmgC,CACV,EACDwnH,cAAe7zS,GAAAA,KACf87I,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BjkD,MAAO,GACP6lQ,oBAAoB,EACpBw6F,qBAAsB,KACtBC,YAAa,MACbv7C,cAAe74L,GAAAA,OAA2B,oBAC1Cq0O,mBAAmB,EACnB7jI,cAAe,GACfmoF,cAAe,OACfC,wBAAyB,KACzB07C,sBAAkB,EAClBC,kBAAkB,EAClBC,oBAAqB,KACrBC,WAAW,EACXr2J,mBAAmB,GAE1B,EACDjlG,MAAO,WACHvjG,KAAKmiD,WACLniD,KAAK8+V,eAAiB,GACtB9+V,KAAK++V,kCACR,EACDn+I,aAAc,WACV5gN,KAAKmiD,WACLniD,KAAKg/V,8BACR,EACDA,6BAA8B,WAC1Bh/V,KAAKi/V,yBAA2Bj/V,KAAK2/J,sBAAsB,sBAAuB,CAC9Elf,cAAe,SAASx3I,GACpBjJ,KAAKk/V,0BAA0Bj2V,EAAErL,KAAK,GACzC,EAACd,KAAKkD,MACP+gJ,kBAAmB,CAAC,WAAY,aAEvC,EACDm+M,0BAA2B,SAASthW,GAChC,IACYuhW,EACRn/V,KAAK48T,YADLj8T,OAECX,KAAK2sC,OAAO,oBAGb/uC,EAAK+I,KAAOyjH,GAAAA,aAAiC,oBAAjCA,CAAsD+0O,GAFlEvhW,EAAK+I,KAAOyjH,GAAAA,aAAiC,wBAAjCA,CAA0D+0O,EAAgBn/V,KAAK2sC,OAAO,oBAAsB,EAI/H,EACD0xM,sBAAuB,WACnBr+O,KAAKmiD,WACLniD,KAAK4pK,iBAAiBgsB,oBAAoB,CACtC3uL,IAAK,IAAIyzE,IAAiB,SAACF,EAAYlgF,GACnC,IAAI8kW,EACAC,EAActuR,GAAE,SAAS3C,SA5Od,kBA6Of2C,GAAE,UAAUpqE,KAAK,QAAUy4V,EAAa9kW,EAAKqM,YAAS,IAAWy4V,EAAaA,EAAa9kW,GAAMq0E,SAAS0wR,GAC1GtuR,GAAE,SAAS3C,SAASsuR,IAAgC/tR,SAAS0wR,GAC7D7kR,EAAW70E,OAAO05V,EACrB,GAAE,CAAC,QAASr/V,KAAK2sC,OAAO,kCAAmC,CACxDhmC,KAAM3G,KAAKovN,kBAGtB,EACDkwI,qBAAsB,SAAS34I,GACvBA,GACA3mN,KAAKqlP,uBACLrlP,KAAK6lP,oBAEL7lP,KAAKolP,iBAAmBplP,KAAKolP,gBAAgB1nP,gBACtCsC,KAAKolP,gBAEnB,EACDC,qBAAsB,WACbrlP,KAAK2sC,OAAO,uBAGjB3sC,KAAKolP,gBAAkBr0K,GAAE,YAAY7C,KAAK,CACtCoyG,SAAU,WACV,aAAc,mBACfh7I,IAAI,UAAW,QAAQqpC,SAAS3uE,KAAKg6D,YAC3C,EACD6rL,gBAAiB,WACb,GAAK7lP,KAAK2sC,OAAO,qBAAjB,CAKA,IAFA,IAAIzuC,EAAQ8B,KAAK48T,YACb2iC,EAAW,GACN52V,EAAI,EAAGsb,EAAI/lB,EAAMyC,OAAQgI,EAAIsb,EAAGtb,IAAK,CAC1C,IAAI62V,EAAiBx/V,KAAK6rT,uBAAuB3tT,EAAMyK,IACvD42V,EAASn/V,KAAK2wE,GAAE,YAAYt4C,IAAI+mU,EAAiBx/V,KAAKovN,eAAelxN,EAAMyK,IAAMzK,EAAMyK,IAAIulE,KAAK,WAAY,YAC/G,CACDluE,KAAKskP,oBAAoBx2L,QAAQnoD,OAAO45V,EAPvC,CAQJ,EACDj3L,YAAa,WACTtoK,KAAKy/V,kBAAoB1uR,KACzB,IAAI2uR,GAAoB1/V,KAAK2sC,OAAO,aACpC3sC,KAAKg6D,WAAWoU,SA/RL,aA+R4BH,YAzRhB,0BAyRwDjuE,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,uBAAuBshC,YAAY0uR,GAA0B+C,GACxL1/V,KAAK86M,QAAQ,CACT5oL,KAAM,QACNsuR,gBAAiB,UAClBxgT,KAAKg6D,YACRh6D,KAAK2/V,mBACL3/V,KAAKmiD,UACR,EACDy9S,eAzR2B,SAyRZC,EAAUC,EAAOC,GAC5B,IAAKF,EACD,OAAOC,EAEX,GAAIC,EAAc,CACd,GAAIF,IAAaC,EACb,OAEJ,OAAOD,EAASx9V,MAAM,KAAKm4B,QAAO,SAAAzc,GAAE,OAAIA,IAAO+hV,CAAX,IAAkBrzV,KAAK,IAC9D,CACD,MAAO,GAAGwD,OAAO4vV,EAAU,KAAK5vV,OAAO6vV,EAC1C,EACDE,mBArS2B,SAqSRjiV,EAAIgiV,GAEnB,IADwBhiV,EAEpB/d,KAAK86M,QAAQ,kBAAc,EAAQ96M,KAAKg6D,gBAD5C,CAIA,IAAI4+R,EAAU54V,KAAKg6D,WAAWkU,KAAK,mBAC/B+xR,EAAajgW,KAAK4/V,eAAehH,EAAS76U,EAAIgiV,GAClD//V,KAAK86M,QAAQ,aAAcmlJ,EAAYjgW,KAAKg6D,WAH3C,CAIJ,EACD8gB,QAAS,WACL96E,KAAKmiD,WACLniD,KAAKkgW,yBACLlgW,KAAKmgW,0BACLngW,KAAK09V,iBAAiB,QACzB,EACDiC,iBAAkB,WACd3/V,KAAKogW,aAAepgW,KAAK8qK,qBAAqB,cACjD,EACD06F,aAAc,WACV,IAAI66F,IAA0BhyS,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,kBACpD3sC,KAAKg6D,WAAWiU,YA9TkB,6BA8T+BoyR,GAAwBpyR,YA7TxD,6BA6TyGoyR,GAC1IrgW,KAAKmiD,UACR,EACD+9S,uBAAwB,WACpB,IAAII,EAAkBtgW,KAAK8gK,cAAc9gK,KAAKugW,kBAAkBzjW,KAAKkD,OACjExB,EAAYglJ,GAAaigD,GAAY,qBACzCllI,EAAAA,EAAAA,IAAiBv+D,KAAK49V,gBAAiBp/V,GACvC+/D,EAAAA,EAAAA,GAAgBv+D,KAAK49V,gBAAiBp/V,EAAW,IAAIyR,OAAOysV,KAAiC,SAAA37V,GACzFu/V,EAAgB,CACZv/V,MAAOA,GAEd,GACJ,EACDo/V,wBAAyB,WACrB,IAAIK,EAAkBh9M,GAAa,eAAgBxjJ,KAAKw+J,MACpDxkG,EAAWh6D,KAAKg6D,WAChBymS,EAAczgW,KAAK2sC,OAAO,aAC9B4xB,EAAAA,EAAAA,IAAiBvE,EAAUwmS,GACvB,YAAcxoR,GAAAA,OAAe1D,WAI7BmsR,GAGJliS,EAAAA,EAAAA,GAAgBvE,EAAUwmS,EAAiBxgW,KAAK0gW,+BAA+B5jW,KAAKkD,OANhFA,KAAK49V,iBAAmB59V,KAAK49V,gBAAgBt4T,IAAI,YAAam7T,EAAc,GAAK,OAOxF,EACDC,+BAAgC,SAASz3V,GACrC,IAAIklM,EAAanuM,KAAK49V,gBAAgBzvJ,aAClCltH,GAxV8B,GAwVtBh4E,EAAEg4E,MACd,IAAK4lE,GAAoB59I,IAAMgyV,GAAYj7V,KAAK49V,gBAAiB38Q,GAAO,GAEpE,OADAjhF,KAAK49V,gBAAgBzvJ,WAAWA,EAAaltH,IACtC,CAEd,EACDgzK,cAAe,WAAW,WACtBj0P,KAAKmiD,WACL,IAAI3nC,EAAQxa,KAAKqzP,SACblyL,EAAYqiF,GAAa,UAAWxjJ,KAAKw+J,MAC7CjgG,EAAAA,EAAAA,GAAgB/jD,EAAO2mD,GAAW,SAAAl4D,GAC9B,IAAIq8J,EAAUhf,GAAiBr9I,IAC1B,EAAKuqP,cAAcluF,IAAY,EAAKggG,eACrC,EAAK44F,gBAEZ,GACJ,EACD52C,mBAAoB,WAChB,OAAOtnT,KAAKmiD,WAALniD,0BACV,EACD0zP,aAAc,WACV1zP,KAAKmiD,WACLniD,KAAK2gW,gCACR,EACDA,+BAAgC,WAAW,WACnCniW,EAAYglJ,GAAa,YAAa,YAC1CjlF,EAAAA,EAAAA,IAAiBv+D,KAAKszP,gBAAiB90P,GACvC+/D,EAAAA,EAAAA,GAAgBv+D,KAAKszP,gBAAiB90P,GAAW,SAAAyK,GACzCA,EAAE0O,SAAW,EAAK07O,SAAS,IAAM,EAAKv5C,cACtC7wM,EAAEkzD,gBAET,GACJ,EACDg7P,sBAAuB,WACnB,OAAOn3T,KAAK4gW,oBACf,EACDl5C,gBAAiB,WACb,OAAOr4P,EAAAA,GAAAA,KACV,EACDmpQ,gBAAiB,WACbx4T,KAAKqzP,SAAS56N,IAAI,IAClBz4B,KAAKo2P,+BACLp2P,KAAK2sC,OAAO,OAAQ,GACvB,EACD6sK,gBAAiB,SAASvwM,GACjBjJ,KAAKg5P,yBAAyB/vP,IAC/BjJ,KAAK09V,iBAAiB,OAE1B19V,KAAKmiD,SAASl5C,EACjB,EACDitP,kBAAmB,WAEf,OADAl2P,KAAK2sC,OAAO,eAAgB3sC,KAAK8iG,gBAC1B9iG,KAAKmiD,UACf,EACD21Q,kBAAmB,SAASM,GACnBA,GACDp4T,KAAKw4T,iBAEZ,EACD9+G,iBAAkB,SAASzwM,GAClBjJ,KAAKg5P,yBAAyB/vP,KAC/BjJ,KAAKk+V,iBACLl+V,KAAK09V,iBAAiB,UAE1B19V,KAAKmiD,SAASl5C,EACjB,EACDo6P,sBAAuB,WACnB,OAAOrjQ,KAAK2sC,OAAO,yBAA2B3sC,KAAKmtD,MAAM04G,eAAiB7lK,KAAKmiD,UAClF,EACD48S,iCAAkC,WAC9B/+V,KAAK6gW,4BAA8B7gW,KAAK2/J,sBAAsB,0BACjE,EACDmpJ,YAAa,WAAW,WACpB9oT,KAAKmiD,WACLniD,KAAK8gW,2BACD9gW,KAAK2sC,OAAO,2BACZ3sC,KAAKmtD,MAAMiuJ,mBAAmB,OAAO,SAAAnyM,GAAC,OAAI,EAAK2gQ,wBAAwB3gQ,EAAjC,IACtCjJ,KAAKmtD,MAAMiuJ,mBAAmB,UAAU,SAAAnyM,GAAC,OAAI,EAAK4gQ,wBAAwB5gQ,EAAjC,IAEhD,EACD+/S,kBAAmB,WACf,MAAO,eAAiBhpT,KAAK2sC,OAAO,iBACvC,EACDy8Q,YAAa,WAAW,WAChBliF,EAAgBlnO,KAAK2sC,OAAO,yBAA2B,MAAQ,WACnE,OAAO8Y,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B+kL,cAAeA,EACf+7E,cAAejjT,KAAK2sC,OAAO,iBAC3Bq2Q,wBAAyB,SAAAhsS,GACrB,IACW9Y,EACP8Y,EADA9Y,MAEJ,EAAK2iW,4BAA4B,CAC7B3iW,MAAOA,GAEd,EACD6kT,cAAe/iT,KAAK2sC,OAAO,iBAC3BiuL,cAAe56N,KAAK8+V,eACpBpwI,qBAAsB,MAE7B,EACDkyI,mBAAoB,WAAW,WACvBp9U,EAAI,IAAInG,GAAAA,GAOZ,OANArd,KAAK29V,qBAAqB39V,KAAKs0P,4BAC/Bt0P,KAAK+gW,mBACL/gW,KAAKghW,cAAcpyS,MAAK,WACpB,EAAK04M,QAAU,EAAKA,OAAO7qB,kBAC3Bj5N,EAAE5kB,SACL,IAAE0wD,KAAK9rC,EAAEhkB,QACHgkB,EAAElG,SACZ,EACD0sS,sBAAuB,SAAS/gT,IAC3BjJ,KAAK2sC,OAAO,0BAA4B3sC,KAAKw4T,kBAC1C,eAAiBx4T,KAAK2sC,OAAO,oBAGjC3sC,KAAKmiD,SAASl5C,GACdjJ,KAAK8iP,2BAAsB,GAC9B,EACD+0E,mBAAoB,WAChB,IAAIopC,EAAoBjhW,KAAKmiD,WAE7B,OAD4BniD,KAAK2sC,OAAO,0BACPs0T,CACpC,EACDF,iBAAkB,WACd,IAAIvmK,EAASx6L,KAAKqzP,SACdn1P,EAAQs8L,EAAO/hK,MACfyoU,GAAexwS,EAAAA,EAAAA,IAASxyD,IAAUA,EAClCyyB,EAAQ,GACR9iB,EAAO,GACPszV,EAAcnhW,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,qBAC9D,GAAIu0T,GAAgBC,EAAa,CAC7B,IAAIC,EAAsB7nR,GAA4BihH,EAAQt8L,EAAO,CACjEs7E,iBAAiB,IAErB4nR,EAAoBxyR,YAAY4rH,GAChC7pK,EAAQq6C,GAAco2R,GAAuB,EAC7CA,EAAoB1jW,QACvB,MAAWQ,IACR2P,EAAO,GAEX2sL,EAAOl1J,IAAI,QAAS3U,GACpB6pK,EAAOtsH,KAAK,OAAQrgE,EACvB,EACD4rT,yBAA0B,WACtBz5T,KAAKmiD,WACLniD,KAAKqhW,qBACR,EACDzkC,UAAW,WACP,OAAO58T,KAAK2sC,OAAO,UAAY,EAClC,EACD20T,kBAAmB,WACf,IAAI3rU,EAAS31B,KAAK48T,YACd8hC,EAAmB1+V,KAAK2sC,OAAO,oBACnC,OAAO0hB,EAAAA,EAAAA,IAAUqwS,IAAqB/oU,EAAOh1B,OAAS+9V,CACzD,EACD6C,gBAAiB,SAAS/mK,GACtB,IAAIgnK,EAAOzwR,GAAE,SAAS3C,SAASmuR,IAAkBnuR,SAASouR,IACtD5+V,EAAO,CACP6jW,gBAAiB5/M,GAAiB2/M,GAClC5mI,cAAe56N,KAAK2sC,OAAO,kBAG/B,OADA3sC,KAAKi/V,yBAAyBrhW,IAC1BA,EAAKojD,SAGTwgT,EAAKlnW,KAAKgiW,GAAqB1+V,EAAK+I,MACpC66V,EAAK/5V,aAAa+yL,GAClBx6L,KAAKogW,aAAa9xT,OAAO,CACrBmH,MAAO73C,EAAK+I,KACZY,UAAWs6I,GAAiB2/M,KAEzBA,EACV,EACDE,WAAY,SAASryT,GACjB,IAAI6wL,EAAmBlgO,KAAK+oG,gBAAgBvuE,SACxColM,EAAavwL,EAAQ4wL,kBAAkBjgO,KAAK2sC,OAAO,aAAcuzL,GACjEyhI,EAAoBpmI,UAAUz1N,KAAKC,UAAU65N,IAAaj/N,OAC1D49V,EAAuBv+V,KAAK2sC,OAAO,wBACvC,GAAIg1T,GAAqBpD,EACrB,OAAO3+H,EAEXtgN,GAAAA,IAAW,QAASi/U,EACvB,EACDqD,kBAAmB,SAASjsU,GAAQ,IAC5BksU,EAAuB95C,EADK,OAEhC,QAAU85C,EAAwB7hW,KAAK8hW,iCAA8B,IAAWD,GAAiCA,EAAsBriW,SACvI,IAAI6vC,EAAU,IAAI0yT,GAAcpsU,GAC5BqsU,EAAoB,QAAUj6C,EAAc/nT,KAAKmtD,aAAU,IAAW46P,OAAc,EAASA,EAAYp7Q,OAAO,iBAChHs1T,IAAsBD,GAAqBhiW,KAAKmtD,MAAM47C,gBAAgBrE,WACtEk2H,EAAgBonI,GAAqBhiW,KAAK2sC,OAAO,iBACjDu1T,EAAuB7yT,EAAQkwL,eAAev/N,KAAKw+O,cACnD7iB,EAAgBf,EAAcpgM,OAAO0nU,GACrCC,EAA6BxmI,EAAch7N,SAAWg1B,EAAOh1B,OAC7D6iB,EAAI,IAAInG,GAAAA,GACRyrF,EAAiB9oG,KAAK+oG,gBAC1B,GAAM/oG,KAAKoiW,uBAAwBH,IAAsBE,EAElD,CACH,IAAI,EAIAr5P,EAAe5E,cAHIskI,EADvB,EACIA,kBACQ65H,EAFZ,EAEIA,OACQxyR,EAHZ,EAGIA,OAEAr1C,EAASx6B,KAAK0hW,WAAWryT,GAmB7B,OAlBAy5D,EAAe9B,cAAc,CACzBxsE,OAAQA,EACRguM,kBAAmBA,EACnB65H,OAAQA,EACRxyR,OAAQA,IACTjhB,MAAK,SAACt0D,EAAM4K,GAEX,GADA,EAAKk9V,sBAAuB,EACxB,EAAKp+P,UACLxgF,EAAEhkB,aADN,CAIA,IACU0mD,EACNu6C,GAAoBnmG,EAAM4K,GAD1B5K,KAEAgoW,EAAcx5P,EAAe1B,iBAAiBlhD,GAClD1iC,EAAE5kB,QAAQ0jW,EAAY9nU,OAAO0nU,GAL5B,CAMJ,IAAE5yS,KAAK9rC,EAAEhkB,QACVQ,KAAK8hW,0BAA4Bt+U,EAC1BA,EAAElG,SACZ,CA3BG,OAAOkG,EAAE5kB,QAAQ+8N,GAAer+M,SA4BvC,EACDilV,gBAAiB,SAAS5sU,EAAQgmM,GAAe,WACzCz1K,EAAQ,GACR51C,EAAQ,CAAC,EACTkyV,EAAuB,SAAWxiW,KAAKy+O,mBACvCgkH,EAAiB,CAAC,EACtB9mI,EAAcj7N,SAAQ,SAAAgiW,GAClB,IAAIC,EAAoBH,EAAuB18V,KAAKC,UAAU28V,GAAgB,EAAKlkH,aAAakkH,GAChGD,EAAeE,GAAqBD,CACvC,IACD,IAAIE,EAAmB,GACvBjtU,EAAOj1B,SAAQ,SAACxC,EAAOiD,GACnB,IAAI8kV,EAAcwc,EAAeD,EAAuB18V,KAAKC,UAAU7H,GAASA,GAChF,GAAIskW,KAAyBn0S,EAAAA,EAAAA,IAAU43R,GACnC2c,EAAiBxiW,KAAK,EAAKwnT,UAAU1pT,EAAOoS,GAAO+lD,QAAO,SAAAzxD,GACtD,IAAI40S,EAAU,EAAKqpD,eAAe38S,EAAOthD,EAAM1G,EAAOiD,GACtD+kD,EAAM7kD,OAAOF,EAAO,EAAGq4S,EAC1B,SACE,CACH,IAAIA,EAAU,EAAKqpD,eAAe38S,EAAO+/R,EAAa/nV,EAAOiD,GAC7D+kD,EAAM7kD,OAAOF,EAAO,EAAGq4S,EAC1B,CACJ,IACD,IAAIh2R,EAAI,IAAInG,GAAAA,GAIZ,OAHAgyC,GAAAA,GAAAA,MAAWrvD,KAAM4iW,GAAkBvsS,QAAQ,WACvC7yC,EAAE5kB,QAAQsnD,EACb,IACM1iC,EAAElG,SACZ,EACDulV,eAAgB,SAAS38S,EAAOthD,EAAM1G,EAAO4kW,GACzC,IAAIz0S,EAAAA,EAAAA,IAAUzpD,GAEV,OADA5E,KAAK8+V,eAAe1+V,KAAKwE,GAClBA,EAEP,IAAIqiO,EAAejnO,KAAK2sC,OAAO,gBAE/B,OADiB3sC,KAAKw+O,aAAavX,KAAkB/oO,EAAQ+oO,EAAe/oO,CAGnF,EACD6kW,eAAgB,WACZ,OAAO/iW,KAAK2sC,OAAO,aAAe3sC,KAAK+oG,gBAAgBxT,OAC1D,EACDytQ,kBAAmB,SAASrtU,GACxB,IAAIm6D,EAAc,GAOlB,OANAn6D,EAAOj1B,QAAQ,SAASxC,GACpB,IAAI0G,EAAO5E,KAAK6nT,kBAAkB3pT,IAC9BmwD,EAAAA,EAAAA,IAAUzpD,IACVkrF,EAAY1vF,KAAKwE,EAExB,EAAC9H,KAAKkD,OACA8vF,CACV,EACDmzQ,yBAA0B,SAASttU,GAAQ,WACnCilM,EAAgB,IAAIv9M,GAAAA,GAexB,OAdIrd,KAAKkjW,kCACLljW,KAAK+oG,gBAAgB/nD,OAAOhhD,KAAKkjW,iCAAiC3hQ,aAEjEvhG,KAAK+oG,gBAAgB7iD,QAAQvlD,OAS9Bi6N,EAAch8N,QAAQoB,KAAKgjW,kBAAkBrtU,IAR7C31B,KAAKkjW,iCAAmCljW,KAAK+oG,gBAAgB1S,OAAOznC,MAAK,WACrEgsK,EAAch8N,QAAQ,EAAKokW,kBAAkBrtU,GAChD,IAAE25B,MAAK,WACJsrK,EAAch8N,QAAQ,GACzB,IAAEy3D,QAAO,WACN,EAAK6sS,sCAAmC,CAC3C,IAIEtoI,EAAct9M,SACxB,EACD6lV,cAAe,WAAW,WAClBxtU,EAAS31B,KAAK48T,YACdwmC,EAAU,IAAI/lV,GAAAA,GASlB,OARArd,KAAK8+V,eAAiB,IACK9+V,KAAK+iW,iBAAmB/iW,KAAKijW,yBAAyBttU,GAAU31B,KAAK4hW,kBAAkBjsU,IAC7Fi5B,MAAK,SAAA+sK,GACV,EAAK4mI,gBAAgB5sU,EAAQgmM,GACnCtlK,QAAQ,SAAS/7D,GACnB8oW,EAAQxkW,QAAQtE,EACnB,GACJ,IAAEg1D,KAAK8zS,EAAQ5jW,OAAO1C,KAAKkD,OACrBojW,EAAQ9lV,SAClB,EACD0jV,YAAa,WAAW,WAChBx9U,EAAI,IAAInG,GAAAA,GACRgmV,GAAkB,EAmBtB,OAlBIrjW,KAAKsjW,yBAAyBtjW,KAAKujW,mBACnCvjW,KAAK8+V,eAAiB9+V,KAAKwjW,mBAAmBxjW,KAAKujW,iBAC/CvjW,KAAK8+V,eAAen+V,SAAWX,KAAKujW,gBAAgB5iW,SACpDX,KAAKyjW,gBAAgBzjW,KAAK8+V,gBAC1BuE,GAAkB,EAClB7/U,EAAE5kB,YAGLykW,GACDrjW,KAAKmjW,gBAAgBv0S,MAAK,SAAA1I,GAClB,EAAK89C,UACLxgF,EAAEhkB,UAGN,EAAKikW,gBAAgBv9S,GACrB1iC,EAAE5kB,UACL,IAAE0wD,KAAK9rC,EAAEhkB,QAEPgkB,EAAElG,SACZ,EACDmmV,gBAAiB,SAASv9S,GACtBlmD,KAAK0jW,gBAAgBx9S,GACrBlmD,KAAK2jW,oBACA3jW,KAAKq9V,qBACNr9V,KAAKk+V,gBAEZ,EACDoF,yBAA0B,SAAS3tU,GAC/B,OAAOA,GAAU31B,KAAK+oG,gBAAgBrE,YAAc/uE,EAAOh1B,QAAUX,KAAKm6N,iBAAiBx5N,MAC9F,EACD6iW,mBAAoB,SAAS7tU,GACzB,IAAIilM,EAAgB56N,KAAK4jW,0BAA0BjuU,GAEnD,GAD2B,IAAMilM,EAAcj6N,QAAUg1B,EAAOh1B,OAAS,GAAKi6N,EAAcj6N,OAASg1B,EAAOh1B,OAClF,CACtB,IAAIo7N,EAAa/7N,KAAKm6N,iBACtBS,EAAgB56N,KAAK6jW,qBAAqB9nI,EAAYpmM,EACzD,CACD,OAAOilM,CACV,EACDgpI,0BAA2B,SAASjuU,GAChC,IAAImuU,EACA9B,EAAoB,QAAU8B,EAAe9jW,KAAKmtD,aAAU,IAAW22S,OAAe,EAASA,EAAan3T,OAAO,iBACnHiuL,EAAgB,GAIpB,OAHIjlM,EAAOh1B,UAAY,OAASqhW,QAAqB,IAAWA,OAAoB,EAASA,EAAkBrhW,UAC3Gi6N,EAAgB56N,KAAK6jW,qBAAqB7B,EAAmBrsU,IAE1DilM,CACV,EACDipI,qBAAsB,SAAS9nI,EAAYpmM,GAAQ,WAe/C,OAdoBomM,EAAWvhM,QAAO,SAAAupU,GAElC,IADA,IAAI7uS,EACKvsD,EAAI,EAAGA,EAAIgtB,EAAOh1B,OAAQgI,IAE/B,GADAusD,EAAev/B,EAAOhtB,IAClB0X,EAAAA,EAAAA,IAAS60C,IACT,GAAI,EAAK0pL,eAAemlH,EAAU7uS,GAC9B,OAAO,OAER,GAAI,EAAK0pL,eAAe,EAAKJ,aAAaulH,GAAW7uS,GACxD,OAAO,EAGf,OAAO,CACV,GAAEl1D,KAEN,EACD8lQ,gBAAiB,WACb9lQ,KAAKgkW,cAAcplW,UACnBoB,KAAKmiD,WACL,IAAI8hT,EAAgBjkW,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAptBd,kCAqtB/BjQ,KAAK29V,qBAAqBsG,GAC1BjkW,KAAKkgW,wBACR,EACDwD,gBAAiB,SAASx9S,GAAO,IACzBg+S,EADyB,OAE7B,QAAUA,EAAsBlkW,KAAKgkW,qBAAkB,IAAWE,GAA+BA,EAAoB1kW,SACrHQ,KAAKgkW,cAAgB,IAAI3mV,GAAAA,GACzBrd,KAAKwlQ,eACLxlQ,KAAK2sC,OAAO,gBAAiB3sC,KAAK8+V,eAAe/5V,SACjD/E,KAAKmkW,aACDnkW,KAAKqzP,SAAS1yP,OAAS,GACvBX,KAAKgkW,cAAcplW,WAEvBywD,EAAAA,GAAAA,IAAKrvD,KAAKgkW,eAAep1S,MAAK,WAC1B,EAAKw1S,oBAAoBl+S,EAC5B,GACJ,EACDk+S,oBApuB2B,SAouBPl+S,GAAO,WACnBm+S,EAAYrkW,KAAKshW,qBAAuBthW,KAAKuhW,gBAAgBvhW,KAAKqzP,UAClEsrG,EAAmB3+V,KAAK2sC,OAAO,oBAC/B+xT,EAAmB1+V,KAAK2sC,OAAO,oBACnCuZ,EAAMxlD,SAAQ,SAACkE,EAAMzD,GACjB,GAAIkjW,GAAa1F,GAAoB0F,IAAc1F,GAAoBx9V,EAAQu9V,IAAqB,EAChG,OAAO,EAEX,EAAK4F,WAAW1/V,EAAMy/V,GAAa,EAAKhxG,SAC3C,IACGrzP,KAAK85M,cACL95M,KAAK09V,iBAAiB,OAE1B19V,KAAKukW,qBACR,EACDJ,WAAY,WACR,GAAInkW,KAAKshW,oBACLthW,KAAKm9V,eAAez/V,aACjB,CACH,IAAI8mW,EAAQxkW,KAAKm9V,eACbxnU,EAAS31B,KAAK48T,aAClB/vQ,EAAAA,EAAAA,IAAK23S,GAAQ,SAAS1lW,EAAGmI,GACrB,IAAIu6V,EAAOzwR,GAAE9pE,GACTm8V,EAAU5B,EAAKlnW,KAAKgiW,IAClB,OAAS3mU,QAAU,IAAWA,GAAUA,EAAOpwB,SAAS69V,IAC1D5B,EAAK9jW,QAEZ,GACJ,CACDsC,KAAKggW,oBACR,EACD2D,kBAAmB,WACf,IAAI/jV,IAAY5f,KAAK48T,YAAYj8T,QAAUX,KAAK8+V,eAAen+V,QAAUX,KAAK8iG,gBAC9E9iG,KAAKw2P,iBAAiB52O,GACtB5f,KAAKm2P,oBACR,EACDA,mBAAoB,WAChBn2P,KAAK+gW,kBACR,EACDwD,oBAAqB,WACjBvkW,KAAKy/V,kBAAoBz/V,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOssV,IAC5D,EACDY,aAAc,WACV,OAAOn9V,KAAKy/V,iBACf,EACDgF,kBAAmB,SAAS7/V,EAAM48V,GAC9BxhW,KAAKogW,aAAa9xT,OAAO,CACrBmH,MAAO7wC,EACP2C,UAAWs6I,GAAiB2/M,IAEnC,EACD8C,WAAY,SAAS1/V,EAAM41L,GACvB,IAAIt8L,EAAQ8B,KAAKw+O,aAAa55O,GAC9B,IAAKypD,EAAAA,EAAAA,IAAUnwD,GAAf,CAGA,IAAIsjW,EAAOxhW,KAAK0kW,QAAQxmW,GACpBy4N,EAAe32N,KAAKovN,eAAexqN,GACnC+/V,EAAY3kW,KAAK4kW,cAAchgW,EAAM+xN,GACzC,GAAI6qI,GACInzS,EAAAA,EAAAA,IAAUsoK,KACV6qI,EAAK1zS,QACL9tD,KAAKykW,kBAAkBE,EAAWnD,IAEtCA,EAAKnzR,YAAYouR,IACjBz8V,KAAKggW,mBAAmBwB,EAAKtzR,KAAK,WAC/B,CACH,IAAI22R,EAAQ,MAAM50V,OAAO,IAAIi8C,GAAAA,GAC7Bs1S,EAAOxhW,KAAK8kW,WAAW5mW,EAAOs8L,EAAQqqK,IAClCx2S,EAAAA,EAAAA,IAAUzpD,GACV5E,KAAKykW,kBAAkBE,EAAWnD,IAElCA,EAAKpzR,SAASquR,IACdz8V,KAAKykW,kBAAkBvmW,EAAOsjW,IAElCxhW,KAAKggW,mBAAmB6E,EAC3B,CArBA,CAsBJ,EACDD,cAAe,SAAShgW,EAAM+xN,GAC1B,OAAIt2M,EAAAA,EAAAA,IAASzb,KAASypD,EAAAA,EAAAA,IAAUsoK,GACrB/xN,GAEAwpD,EAAAA,GAAAA,eAAcuoK,EAAc,GAE1C,EACD+tI,QAAS,SAASxmW,GAId,IAHA,IAAIsmW,EAAQxkW,KAAKm9V,eACb4H,EAAaP,EAAM7jW,OACnB6C,GAAS,EACJmF,EAAI,EAAGA,EAAIo8V,EAAYp8V,IAAK,CACjC,IAAI64V,EAAOgD,EAAM77V,GACby6V,EAAUhjS,EAAYohS,EAAMlF,IAChC,GAAIp+V,IAAUklW,IAAWhwS,EAAAA,GAAAA,cAAal1D,EAAOklW,GAAU,CACnD5/V,EAASutE,GAAEywR,GACX,KACH,CACJ,CACD,OAAOh+V,CACV,EACDshW,WAAY,SAAS5mW,EAAOs8L,EAAQqqK,GAChC,OAAO9zR,GAAE,SAAS7C,KAAK,KAAM22R,GAAOz2R,SAASmuR,IAAkBjiW,KAAKgiW,GAAqBp+V,GAAOuJ,aAAa+yL,EAChH,EACD47D,6BAA8B,WAC1Bp2P,KAAKw2P,kBAAkBx2P,KAAK48T,YAAYj8T,SAAWX,KAAK8iG,eAAeniG,OAC1E,EACDy4T,wBAAyB,SAASnwT,GAC9BjJ,KAAKmiD,SAASl5C,GACdjJ,KAAKw4T,iBACR,EACD+nC,kBAAmB,SAAS3iW,GACxB,IAAIqL,EAAIrL,EAAKmD,MACbkI,EAAE83D,kBACF/gE,KAAK8iP,sBAAsB75O,GAC3B,IAAIu4V,EAAOzwR,GAAE9nE,EAAE0O,QAAQm4D,QAAQ,IAAI7/D,OAAOssV,KAC1Cv8V,KAAKs9V,kBAAkBkE,EAC1B,EACDlE,kBAAmB,SAASkE,GACxB,GAAIA,EAAKlzR,SAASkuR,IACTx8V,KAAK2sC,OAAO,oBAGb3sC,KAAKwmC,QAFLxmC,KAAK2sC,OAAO,QAAS3sC,KAAK48T,YAAY73T,MAAM,EAAG/E,KAAK2sC,OAAO,0BAFnE,CAQA,IAAIkrG,EAAY2pN,EAAKlnW,KAAKgiW,IACtBxd,EAAS0iB,EAAKtzR,KAAK,MACvBluE,KAAKglW,qBAAqBntN,GAC1B73I,KAAKggW,mBAAmBlhB,GAAQ,GAChC9+U,KAAKukW,qBALJ,CAMJ,EACD7tC,aAAc50S,GAAAA,KACdkjV,qBAAsB,SAASntN,GAC3B,IAAI35I,EAAQ8B,KAAK48T,YAAY73T,QAC7B/E,KAAKilW,WAAW/mW,EAAO25I,GACvB73I,KAAK2sC,OAAO,QAASzuC,GACjB,IAAMA,EAAMyC,QACZX,KAAKk+V,gBAEZ,EACDj/G,iBAAkB,WACd,OAAOj/O,KAAKklW,YACf,EACDxtC,wBAAyB,SAASzuT,GAAG,WACjC,GAAI,eAAiBjJ,KAAK2sC,OAAO,kBAAjC,CAGA,IAAIzuC,EAAQ8B,KAAK48T,YAAY73T,QAQ7B,IAPA8nD,EAAAA,EAAAA,IAAK5jD,EAAE0xN,cAAgB,IAAI,SAAC77N,EAAGqmW,GAC3B,EAAKF,WAAW/mW,EAAO,EAAKsgP,aAAa2mH,GAC5C,KACDt4S,EAAAA,EAAAA,IAAK5jD,EAAEyxN,YAAc,IAAI,SAAC57N,EAAG64T,GACzB,EAAKytC,QAAQlnW,EAAO,EAAKsgP,aAAam5E,GACzC,IACD33T,KAAKqhW,wBACAjuS,EAAAA,GAAAA,cAAapzD,KAAKmtD,MAAMxgB,OAAO,oBAAqB3sC,KAAK2sC,OAAO,UAAW,CAC5E,IAAI04T,EAA2BrlW,KAAKmtD,MAAMuwP,2BAC1C2nD,GAA4BrlW,KAAK8iP,sBAAsBuiH,GACvDrlW,KAAK2sC,OAAO,QAASzuC,EACxB,CACD8B,KAAKmtD,MAAMqwP,+BAA0B,EAdpC,CAeJ,EACDynD,WAAY,SAAS/mW,EAAO0G,GACxB,IAAIzD,EAAQnB,KAAKslW,YAAY1gW,EAAM1G,GAC/BiD,GAAS,GACTjD,EAAMmD,OAAOF,EAAO,EAE3B,EACDikW,QAAS,SAASlnW,EAAO0G,GACT5E,KAAKslW,YAAY1gW,GACjB,GACR1G,EAAMkC,KAAKwE,EAElB,EACD8gQ,iBAAkB,WACd,OAAO1lQ,KAAK8+V,eAAe/5V,OAC9B,EACDo0T,mBAAoB,SAASj7T,GACpB8B,KAAK2sC,OAAO,0BACb3sC,KAAKomT,UAAUloT,EAEtB,EACDkoT,UAAW,SAASloT,GAChB,GAAI,OAASA,EAAb,CAGA,IAAIqnW,EAAa,eAAiBvlW,KAAK2sC,OAAO,kBAC1Cm2T,EAAa9iW,KAAKslW,YAAYpnW,GAC9By3B,GAAU4vU,EAAavlW,KAAKmtD,MAAMxgB,OAAO,oBAAsB3sC,KAAK48T,aAAa73T,QACjF+9V,GAAc,EACdntU,EAAOt0B,OAAOyhW,EAAY,GAE1BntU,EAAOv1B,KAAKlC,GAEZ,eAAiB8B,KAAK2sC,OAAO,kBAC7B3sC,KAAKmtD,MAAMxgB,OAAO,mBAAoBhX,GAEtC31B,KAAK2sC,OAAO,QAAShX,EAZxB,CAcJ,EACD0yR,iBAAkB,SAASnqT,EAAOoS,GAC9B,OAAOtQ,KAAKslW,YAAYpnW,EAAO,KAAMoS,IAAU,CAClD,EACDg1V,YAAa,SAASpnW,EAAOy3B,EAAQrlB,GAAO,WACpC9M,GAAU,EACd,OAAI8M,GAAS,kBAAoBpS,IACxBoS,EAAMk1V,gBACPl1V,EAAMk1V,cAAgB,CAAC,GACvB7vU,EAASA,GAAU31B,KAAK48T,aACjBl8T,SAAS,SAASxC,EAAOiD,GAC5BmP,EAAMk1V,cAActnW,GAASiD,CAChC,KAEDjD,KAASoS,EAAMk1V,eACRl1V,EAAMk1V,cAActnW,IAGnCy3B,EAASA,GAAU31B,KAAK48T,aACxB/vQ,EAAAA,EAAAA,IAAKl3B,GAAQ,SAACx0B,EAAOm1Q,GACjB,GAAI,EAAK13B,eAAe1gP,EAAOo4Q,GAE3B,OADA9yQ,EAASrC,GACF,CAEd,IACMqC,EACV,EACD0hW,WAAY,WACR,IAAIvvU,EAAS31B,KAAK48T,YACd5hJ,EAAYrlJ,EAAOA,EAAOh1B,OAAS,GACvC,OAAO,OAASq6K,QAAa,IAAWA,EAAYA,EAAY,IACnE,EACD0vI,yBAA0B,WACtB,OAAO1qT,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,oBACtD,EACDg+Q,eAAgB,SAAS1hT,GACjBjJ,KAAK2sC,OAAO,kBAAsB1jC,IAAMjJ,KAAKg9V,gBAC7Ch9V,KAAKmiD,SAASrqC,WACd9X,KAAK8gW,4BAET9gW,KAAKqhW,6BACErhW,KAAKg9V,aACf,EACDqE,oBAAqB,WACjB,IAAI70V,EAAUxM,KAAKg6D,WACfyrS,EAAiB36R,GAAUt+D,GAC/BxM,KAAK+gW,mBACL,IAAI2E,EAAgB56R,GAAUt+D,GAC1BxM,KAAKsnQ,QAAUtnQ,KAAK2sC,OAAO,WAAa3sC,KAAKslQ,eAAiBogG,IAAkBD,GAChFzlW,KAAKsnQ,OAAOnsD,SAEnB,EACDgtG,iBAAkB,WACd,IAAIw9C,GACH,QAAUA,EAAe3lW,KAAKmtD,aAAU,IAAWw4S,OAAe,EAASA,EAAat+P,kBAAoBrnG,KAAKmtD,MAAMxgB,OAAO,gBAAiB3sC,KAAK8+V,eACxJ,EACD8G,2BAA4B,WACxB,IAAI98P,EAAiB9oG,KAAK+oG,uBACnB/oG,KAAK6lW,YACZ/8P,EAAetuE,OAAO,MACtBsuE,EAAezC,QAClB,EACDy6P,yBAA0B,WACtB,GAAK9gW,KAAK2sC,OAAO,sBAAyB3sC,KAAKmtD,MAA/C,CAGA,IAAI27C,EAAiB9oG,KAAK+oG,gBACtB+8P,EAAkB9lW,KAAKy+O,mBAC3B,IAAI/tL,EAAAA,EAAAA,IAASo1S,IAAoB,SAAWA,EAAiB,CACzD,IAAItrU,EAASx6B,KAAK+lW,6BACd,IAAW/lW,KAAK6lW,cAChB7lW,KAAK6lW,YAAc/8P,EAAetuE,UAAY,MAElDx6B,KAAK6lW,aAAerrU,EAAOp6B,KAAKJ,KAAK6lW,aACrCrrU,EAAO75B,OAASmoG,EAAetuE,OAAOA,GAAUsuE,EAAetuE,OAAO,KACzE,MACGsuE,EAAetuE,OAAOx6B,KAAKgmW,0BAA0BlpW,KAAKkD,OAE9D8oG,EAAezS,MAbd,CAcJ,EACD0vQ,sBAAuB,WAAW,WAC1BvrU,EAAS,GAEb,OADAx6B,KAAK48T,YAAYl8T,SAAQ,SAAAxC,GAAK,OAAIs8B,EAAOp6B,KAAK,CAAC,IAAK,CAAC,EAAKq+O,mBAAoBvgP,IAAhD,IACvBs8B,CACV,EACDwrU,0BAA2B,SAAS1qN,GAAU,WACtCzD,EAAY73I,KAAKw+O,aAAaljG,GAC9B93I,GAAS,EAOb,OANAqpD,EAAAA,EAAAA,IAAK7sD,KAAK48T,aAAa,SAACz7T,EAAOjD,GAC3B,GAAI,EAAK0gP,eAAe1gP,EAAO25I,GAE3B,OADAr0I,GAAS,GACF,CAEd,IACMA,CACV,EACDqvN,0BAA2B,WACvB7yN,KAAKoiW,sBAAuB,EAC5BpiW,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACDkyP,oBAAqB,SAASpsQ,GAC1BoC,KAAK8iP,sBAAsBllP,EAAKmD,OAChCf,KAAK2sC,OAAO,QAAS3sC,KAAKimW,wBAC1BjmW,KAAKw4T,kBACLx4T,KAAKmiD,WACLniD,KAAK01T,qBACR,EACDuwC,qBAAsB,WAClB,IAAIC,EAAalmW,KAAKmmW,iBAClBjxS,EAAel1D,KAAK2sC,OAAO,UAAY,GACvCy5T,EAAeF,EAAWvlW,O1PvlCT,SAAS0lW,EAAYC,GAC9C,IAAI7uN,EAAcL,GAAoBkvN,GACtC,OAAOD,EAAW7rU,QAAO,SAAAt8B,GACrB,IAAIw5I,EAAmBD,EAAY79I,IAAIsE,GAEvC,OADAw5I,GAAoBD,EAAYt+I,IAAI+E,EAAOw5I,EAAmB,GACvDA,CACV,GACJ,C0PglC8C6uN,CAAgBrxS,EAAcgxS,GAAc,GAC/EpzI,EAAWszI,EAAazlW,OAAS42I,GAAiB2uN,EAAYhxS,GAAgBgxS,EAClF,OAAOE,EAAan2V,OAAO6iN,EAC9B,EACDqzI,eAAgB,WAAW,WACvB,OAAKnmW,KAAKmtD,MAGHntD,KAAKm6N,eAAen6N,KAAKmtD,MAAMxgB,OAAO,kBAAkB5oC,KAAI,SAAAa,GAAI,OAAI,EAAK45O,aAAa55O,EAAtB,IAF5D,EAGd,EACD4hT,mBAAoB,WAChB,IAAItxP,EAAel1D,KAAK48T,YACxB58T,KAAKmiD,WACD+S,IAAiBl1D,KAAK2sC,OAAO,UAC7B3sC,KAAK2sC,OAAO,QAASuoB,GAEzBl1D,KAAKmoT,kBACR,EACDnjD,mBAAoB,WAChBhlQ,KAAKmiD,WACD,eAAiBniD,KAAK2sC,OAAO,mBAAsB3sC,KAAK2sC,OAAO,WAC/D3sC,KAAKmoT,kBAEZ,EACD3hR,MAAO,WACHxmC,KAAK83T,oBACL,IAAI15R,EAAep+B,KAAK49J,qBAAqB1/J,MACzCg3D,EAAel1D,KAAK2sC,OAAO,SAC3BvO,GAAgB,IAAMA,EAAaz9B,QAAUu0D,GAAgB92B,EAAaz9B,SAAWu0D,EAAav0D,QAGtGX,KAAKmiD,UACR,EACDmnH,OAAQ,WACJtpK,KAAKmiD,kBACEniD,KAAKwmW,2BACLxmW,KAAKujW,uBACLvjW,KAAKogW,YACf,EACDqG,4BAhkC2B,SAgkCC3zI,EAAU4zI,GAAe,WACjD,IAAK5zI,EAASnyN,OACV,MAAO,CACH+5N,WAAY,GACZC,aAAc+rI,EAAc3hW,SAGpC,IAAK2hW,EAAc/lW,OACf,MAAO,CACH+5N,WAAY5H,EAAS/tN,QACrB41N,aAAc,IAGtB,IAAIgsI,EAAyBD,EAAcviW,QAAO,SAACJ,EAAKa,GAGpD,OADAb,EADY,EAAKy6O,aAAa55O,IACjBA,EACNb,CACV,GAAE,CAAC,GACA22N,EAAa,GAQjB,OAPA5H,EAASpyN,SAAQ,SAAAkE,GACb,IAAI1G,EAAQ,EAAKsgP,aAAa55O,GACzB+hW,EAAuBzoW,IACxBw8N,EAAWt6N,KAAKwE,UAEb+hW,EAAuBzoW,EACjC,IACM,CACHw8N,WAAYA,EACZC,aAAc38N,OAAO23B,OAAOgxU,GAEnC,EACD7mM,eAAgB,SAASliK,GACrB,IACUxE,EAGNwE,EAHAxE,KACO8E,EAEPN,EAFAM,MACe28J,EACfj9J,EADAi9J,cAEJ,OAAQzhK,GACJ,IAAK,0BACD4G,KAAK++V,mCACL,MACJ,IAAK,sBACD/+V,KAAKg/V,+BACLh/V,KAAKghW,cACL,MACJ,IAAK,oBACG9iW,EACA8B,KAAK8gW,2BAEL9gW,KAAK4lW,6BAET,MACJ,IAAK,oBACD5lW,KAAKs/V,qBAAqBphW,GAC1B,MACJ,IAAK,cACD8B,KAAKmiD,SAASvkD,GACdoC,KAAK2qK,iBACL3qK,KAAKypK,cACL,MACJ,IAAK,cACDzpK,KAAK2/V,mBACL3/V,KAAKypK,cACL,MACJ,IAAK,gBACDzpK,KAAKyoT,eAAe,gBAAiBzoT,KAAK2sC,OAAO,kBACjD,MACJ,IAAK,WACL,IAAK,WACD3sC,KAAKmiD,SAASvkD,IACbM,GAAS8B,KAAKi4P,iBACf,MACJ,IAAK,QACDj4P,KAAKujW,gBAAkBrlW,EACvB8B,KAAKmiD,SAASvkD,GACdoC,KAAKujW,qBAAkB,EACvBvjW,KAAK8gW,2BACL,MACJ,IAAK,mBACL,IAAK,mBACD9gW,KAAKghW,cACL,MACJ,IAAK,gBACDhhW,KAAKyoT,eAAervT,EAAM8E,GAC1B,MACJ,IAAK,eASL,IAAK,uBACD,MARJ,IAAK,gBACD8B,KAAKgnT,wBAAwBhnT,KAAKymW,4BAA4BvoW,EAAO28J,IACrE,MACJ,IAAK,YACD76J,KAAKg6D,WAAWiU,YAAY0uR,IAA2Bz+V,GACvD8B,KAAKmgW,0BACL,MAGJ,QACIngW,KAAKmiD,SAASvkD,GAEzB,EACDg6T,sBAAuB,WACnB,OAAO53T,KAAKmiD,YAAcniD,KAAK8iG,cAClC,EACDmlK,oBAAqB,WACjBjoQ,KAAKmiD,WACLniD,KAAK2oT,cACR,IAELn2I,GAAkB,WAAYoqL,IAC9B,ICpuCIgK,GAAe,YAKfC,GAAwBD,qBAGxBE,GAA4B,IAC5BC,GAASllH,GAAAA,QAAe,CACxB/qC,eAAgB,WACZ,IAAI44B,EAAQ1vO,KAAK2sC,OAAO,cACpBu6H,EAAQ,SAASj+J,GACjBA,EAAEkzD,iBACFn8D,KAAK65L,aAAa,CACd94L,MAAOkI,GAEd,EACGk6I,EAAO,SAASjlJ,EAAO+K,GACvBA,EAAEkzD,iBACFlzD,EAAE83D,kBACF/gE,KAAK8iP,sBAAsB75O,GAC3BjJ,KAAKgnW,cAAc9oW,EACtB,EACD,OAAOunD,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BmrK,MAAOpmD,EACP/iB,MAAO+iB,EACPsmD,UAAWrqE,EAAKrmJ,KAAKkD,OAAM0vO,GAC3BjiB,WAAYtqE,EAAKrmJ,KAAKkD,MAAM0vO,IAEnC,EACDpoE,cAAe,WACX,OAAO,CACV,EACD1J,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BiiJ,mBAAmB,EACnBD,oBAAoB,EACpB8iK,eAAgB78O,GAAAA,OAA2B,2BAC3C88O,gBAAiB98O,GAAAA,OAA2B,4BAC5ClsH,OAAO,GAEd,EACD4/J,qBAAsB,WAClB,OAAO99J,KAAKmiD,WAAWlyC,OAAO,CAAC,CAC3BymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,KAG9B,EACDsmJ,qBAAsB,EACtB0iK,YAAY,EACZ7+L,YAAa,WACTtoK,KAAKonW,oBACLpnW,KAAKg6D,WAAWoU,SAASw4R,IAAcjhW,OAAO3F,KAAKqnW,iBACnDrnW,KAAKqlP,uBACLrlP,KAAK8xT,eACL9xT,KAAK86M,QAAQ,OAAQ,UACrB96M,KAAK28Q,mBACL38Q,KAAKmiD,WACLniD,KAAKsnW,qBACLtnW,KAAKunW,gBACLvnW,KAAK8zP,cACR,EACD0zG,gBAAiB,SAAStpW,EAAO+O,GAE7B,OAAO,MADMA,EAASjN,KAAKynW,mBAAqB/uU,QAAQx6B,IAAU,GAC7C,GACxB,EACDwpW,iBAAkB,SAASxpW,EAAO+O,GAI9B,OAHIjN,KAAK2sC,OAAO,gBACZzuC,GAASA,GAETA,EACgB,KAAO+O,EAAS,IACb,IAEZ,KAAOA,EAAS,GAE9B,EACDq6V,mBAAoB,WAChBtnW,KAAK2nW,cAAgB52R,GAAE,SAAS3C,SAhFfw4R,mBAgF4Cj4R,SAAS3uE,KAAK4nW,mBAC3E5nW,KAAK6nW,SAAW92R,GAAE,SAAS3C,SAhFTw4R,oBAgFuCj4R,SAAS3uE,KAAK2nW,cAC1E,EACDJ,cAAe,WACXvnW,KAAK8nW,UAAY/2R,GAAE,SAAS3C,SAjFdw4R,gBAiFwCl4R,UAAU1uE,KAAK2nW,eACrE3nW,KAAK+nW,WAAah3R,GAAE,SAAS3C,SAjFdw4R,iBAiFyCj4R,SAAS3uE,KAAK2nW,eACtE3nW,KAAKgoW,gBACR,EACDZ,kBAAmB,WACfpnW,KAAK4nW,kBAAoB72R,GAAE,SAAS3C,SA1Ffw4R,uBA2FrB5mW,KAAKqnW,gBAAkBt2R,GAAE,SAAS3C,SA5Ffw4R,qBA4F8CjhW,OAAO3F,KAAK4nW,kBAChF,EACDjrF,iBAAkB,WACd38Q,KAAKmjK,iBAAiBnjK,KAAKg6D,WAAYsyM,GAAW,CAC9CjB,SAAS,EACT7iH,WAAW,EACXujH,QAAS/rQ,KAAKy+Q,mBAAmB3hR,KAAKkD,MACtCisQ,UAAWjsQ,KAAK0+Q,oBAAoB5hR,KAAKkD,MACzCmsQ,MAAOnsQ,KAAK2+Q,iBAAiB7hR,KAAKkD,MAClCs2J,aAAct2J,KAAKioW,iBAAiBnrW,KAAKkD,OAEhD,EACDioW,iBAAkB,WACd,OAAOj9R,GAAchrE,KAAK4nW,mBAAmB,GAAQn9Q,GAAgBzqF,KAAK6nW,SAASjuW,IAAI,IAAI+2B,KAC9F,EACD00N,qBAAsB,WAClBrlP,KAAKolP,gBAAkBr0K,GAAE,WAAW7C,KAAK,OAAQ,UAAUS,SAAS3uE,KAAKg6D,WAC5E,EACDsqL,kBAAmB,WACf,OAAOtkP,KAAKolP,eACf,EACDqiH,iBAAkB,WACd,OAAOznW,KAAK2sC,OAAO,eAAiB,EAAI,CAC3C,EACDs8K,gBAAiB,SAASvgL,EAAOw/T,GAC7B,IAAIC,EAAcnoW,KAAKwnW,gBAAgB9+T,EAAOw/T,GAC1Cp6L,EAAe9tK,KAAK0nW,iBAAiBh/T,EAAOw/T,GAChDloW,KAAK2nW,cAAcriU,IAAI,YAAa,eAAiB6iU,EAAc,KACnEnoW,KAAK6nW,SAASviU,IAAI,YAAa,eAAiBwoI,EAAe,IAClE,EACDk0H,eAAgB,WACZ,IAAIlgG,EAAQ9hM,KAAK2sC,OAAO,SACpB,mBAAqBm1J,GACrB9hM,KAAKktD,SAASytG,OAAO,UAAWmnC,EAEvC,EACDgwH,aAAc,WACV,IAAItzT,EAAYglJ,GAAaywE,GAAgBj0N,KAAKw+J,MAC9CxkG,EAAWh6D,KAAKg6D,WACpBh6D,KAAK65L,aAAe75L,KAAK8gK,cAAc9gK,KAAK+xT,cAAcj1T,KAAKkD,OAC/Du+D,EAAAA,EAAAA,IAAiBvE,EAAUx7D,GAC3B+/D,EAAAA,EAAAA,GAAgBvE,EAAUx7D,EAAW,SAASyK,GAC1CjJ,KAAK65L,aAAa,CACd94L,MAAOkI,GAEd,EAACnM,KAAKkD,MACV,EACD+xT,cAAe,SAASn0T,GACpB,IAAIqL,EAAIrL,EAAKmD,MACbf,KAAK8iP,sBAAsB75O,GACvBjJ,KAAKmnW,YAAcnnW,KAAKooW,UAG5BpoW,KAAKgnW,eAAehnW,KAAK2sC,OAAO,SACnC,EACDq6T,cAAe,SAAS9oW,GACpB,IAAIisP,EAAanqP,KAAK2sC,OAAO,SACzBy9M,EAAWlsP,EACf,GAAIisP,IAAeC,EAAnB,CAGApqP,KAAKmnW,YAAa,EAClB,IAAIkB,EAAkBroW,KAAKwnW,gBAAgBr9G,EAAY,GACnDm+G,EAAgBtoW,KAAKwnW,gBAAgBp9G,EAAU,GAC/Cm+G,EAAmBvoW,KAAK0nW,iBAAiBv9G,EAAY,GACrDq+G,EAAiBxoW,KAAK0nW,iBAAiBt9G,EAAU,GACjD36L,EAAOzvD,KACPyoW,EAAkB,CAAC,EACnBC,EAAgB,CAAC,EACjBC,EAAmB,CAAC,EACpBC,EAAkB,CAAC,EACvBH,EAAgBzrU,UAAY,eAAiBqrU,EAAkB,IAC/DK,EAAc1rU,UAAY,eAAiBsrU,EAAgB,IAC3DK,EAAiB3rU,UAAY,eAAiBurU,EAAmB,IACjEK,EAAgB5rU,UAAY,eAAiBwrU,EAAiB,IAC9DxoW,KAAKg6D,WAAWiU,YAAY44R,GAAuBz8G,GACnDl5C,GAAAA,QAAWlxM,KAAK6nW,SAAU,CACtBr+V,KAAMm/V,EACNnxP,GAAIoxP,EACJ/8U,SAAUi7U,KAEd51J,GAAAA,QAAWlxM,KAAK2nW,cAAe,CAC3Bn+V,KAAMi/V,EACNjxP,GAAIkxP,EACJ78U,SAAUi7U,GACVnlV,SAAU,WACN8tC,EAAK03S,YAAa,EAClB13S,EAAK9iB,OAAO,QAASy9M,EACxB,GA5BJ,CA8BJ,EACDq0B,mBAAoB,SAASx1Q,GACzB,IAAIy/B,EAAQ1oC,KAAK2sC,OAAO,SACpBqT,EAAahgD,KAAK2sC,OAAO,cACzBk8T,EAAe7oT,EAAa,EAAI,EAChC8oT,EAAc9oT,EAAa,EAAI,EACnC/2C,EAAElI,MAAM+yJ,cAAgBprH,EAAQmgU,EAAeC,EAC/C7/V,EAAElI,MAAMizJ,eAAiBtrH,EAAQogU,EAAcD,EAC/C7oW,KAAKooW,UAAW,EAChBpoW,KAAK+oW,kBAAoB,IAAI1rV,GAAAA,GAC7B2uK,GAAKhsL,KAAK+oW,mBACV/oW,KAAK04M,mBAAmB14M,KAAKg6D,WAAYh6D,KAAK2sC,OAAO,sBACxD,EACD+xO,oBAAqB,SAASz1Q,GAC1BjJ,KAAKipN,gBAAgBjpN,KAAK2sC,OAAO,SAAU1jC,EAAElI,MAAMkM,OACtD,EACD0xQ,iBAAkB,SAAS11Q,GACvB,IAAIwmD,EAAOzvD,KACPgpW,EAAkBhpW,KAAKynW,mBACvBiB,EAAgB,CAAC,EACjBO,EAAiB,CAAC,EAClBd,EAAcnoW,KAAKwnW,gBAAgB/3S,EAAK9iB,OAAO,SAAU1jC,EAAElI,MAAMysH,cACjEsgD,EAAe9tK,KAAK0nW,iBAAiBj4S,EAAK9iB,OAAO,SAAU1jC,EAAElI,MAAMysH,cACvEk7O,EAAc1rU,UAAY,eAAiBmrU,EAAc,IACzDc,EAAejsU,UAAY,eAAiB8wI,EAAe,IAC3DojC,GAAAA,QAAWlxM,KAAK6nW,SAAU,CACtBrwP,GAAIyxP,EACJp9U,SAAUi7U,KAEd51J,GAAAA,QAAWlxM,KAAK2nW,cAAe,CAC3BnwP,GAAIkxP,EACJ78U,SAAUi7U,GACVnlV,SAAU,WACN8tC,EAAK24S,UAAW,EAChB,IAAI3sV,EAAMg0C,EAAK9iB,OAAO,SAAWq8T,EAAkB//V,EAAElI,MAAMysH,aAC3D/9D,EAAKqzL,sBAAsB75O,EAAElI,OAC7B0uD,EAAK9iB,OAAO,QAASsyF,QAAQxjH,IAC7Bg0C,EAAKs5S,kBAAkBnqW,UACvB6wD,EAAKipJ,mBAAmBjpJ,EAAKuK,YAAY,EAC5C,GAER,EACD85L,aAAc,WACV9zP,KAAKgiS,iBACL,IAAIvpQ,EAAMz4B,KAAK2sC,OAAO,SACtB3sC,KAAKipN,gBAAgBxwL,EAAK,GAC1Bz4B,KAAKg6D,WAAWiU,YAAY44R,GAAuBpuU,GACnDz4B,KAAKskP,oBAAoB7rN,IAAIA,GAC7Bz4B,KAAK86M,QAAQ,CACTouJ,QAASzwU,EACT/gB,MAAO+gB,EAAMz4B,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,oBAEhE,EACDq7T,eAAgB,WACZhoW,KAAK8nW,WAAa9nW,KAAK8nW,UAAUnhW,KAAK3G,KAAK2sC,OAAO,mBAClD3sC,KAAK+nW,YAAc/nW,KAAK+nW,WAAWphW,KAAK3G,KAAK2sC,OAAO,mBACvD,EACDg7H,mBAAoB,SAAS9mH,GACrBA,GACA7gD,KAAKm7M,SAEZ,EACDr7C,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,eACM4G,KAAKmpW,aACZnpW,KAAK2pK,WACL,MACJ,IAAK,iBACL,IAAK,kBACD3pK,KAAKgoW,iBACL,MACJ,IAAK,QACDhoW,KAAK8zP,eACL9zP,KAAKmiD,SAASvkD,GACd,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,IAEL40K,GAAkB,WAAYu0L,IAC9B,ICnSA,MCHaqC,GAAb,WACI,cAAc,eACVppW,KAAKsiF,QAAU,CAClB,CAHL,qCAII,WACI,OAAO,IAAMtiF,KAAKsiF,OACrB,GANL,kBAOI,WACItiF,KAAKsiF,SAAW,CACnB,GATL,qBAUI,WACItiF,KAAKsiF,SAAW,EACZtiF,KAAKsiF,QAAU,IACftiF,KAAKsiF,QAAU,EAEtB,KAfL,KCwBW+mR,GAA+B,CACtCC,KAAM,YACNC,WAAY,mBAEZC,GAAuB,SAACv1U,EAAMssB,GAAP,OAAwB,IAAIz9C,KAAK,IAAIA,KAAKmxB,GAAMirD,SAAS3+B,GAAzD,EAcvBkpT,GAAsB,SAACz+B,EAAWyd,EAASvqS,EAAgBxmC,EAAOsqO,GAA5C,MAAgE,CACtF09F,WAAY,YACZ1U,UAAWA,EACXyd,QAASA,EACT/wU,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B1yG,IAErCs/J,gBAAiB,CAAC,CACd3xK,KAAM,aAEV0/S,cAAe,CACXp0R,MAAO,OACP0zP,gBAAiB,CACbnmO,eAAgBA,GAEpB8jM,eAAgBA,EAChBqiD,iBAAiB,GAhBC,EAmBbqlE,GAAb,WACI,WAAYC,IAAW,eACnB3pW,KAAK2pW,UAAYA,EACjB3pW,KAAKyF,KAAO,KACZzF,KAAK4pW,UAAY,IAAIR,EACxB,CALL,mCAMI,WACI,OAAOppW,KAAKyF,IACf,GARL,oBASI,SAAavH,GACT8B,KAAKyF,KAAKknC,OAAO,WAAYzuC,GAC7B,IACwB2hD,EACpB7/C,KAAK2pW,UAAU/vN,mBAAmB7lF,KADlClU,mBAEAgqT,EAAmB7pW,KAAKyF,KAAKolV,UAAUhrS,GAC3C,OAASgqT,QAAoB,IAAWA,GAA4BA,EAAiBl9T,OAAO,WAAYzuC,EAC3G,GAhBL,oBAiBI,WACI,OAAO8B,KAAKyF,KAAKknC,OAAO,WAC3B,EAnBL,IAoBI,SAAazuC,GACT8B,KAAKyF,KAAKknC,OAAO,WAAYzuC,EAChC,GAtBL,oBAuBI,SAAO4rW,EAAeC,EAAYrd,GAAU,WAEdsd,EACtBhqW,KAAK2pW,UAAUM,mBADfD,qBAGMj2S,EACN/zD,KAAK2pW,UAAU/vN,mBADf7lF,KAEAm2S,IAA+Bxd,EAAS34R,EAAKlU,oBAC7C4oS,EAAUyhB,EAA6B,EAAI,EAC3CC,EAAY,GAAH,gBAAOnqW,KAAKoqW,iBAAiBr2S,EAAM+1S,EAAeC,EAAYC,KAA9D,QAAwFhqW,KAAK2pW,UAAUU,8BACpHN,EAAWG,GACX,IAAIhkT,EAAQ,CAAC,CACTuzL,SAAU,QACVrgP,KAAMiwW,GAA6BC,KACnCtlB,iBAAkB,CACdjuT,GAAI,EACJH,GAAI,GAER6yT,QAASA,EACTviS,MAAOikT,GACR,CACC1wH,SAAU,QACVrgP,KAAMiwW,GAA6BE,WACnC1oT,QAASqpT,EACTzhB,QAASA,EACTviS,MAAOlmD,KAAKsqW,wBAAwBv2S,KAEpCvnD,EAAUukE,GAAE,SAChB/wE,KAAK2pW,UAAUY,gBAAgB/9V,EAAS6/U,GAAM,CAC1CnmS,MAAOA,EACP2mS,uBAAuB,EACvB3mG,kBAAkB,EAClBuoB,SAAU,OACVu1E,iBAAkB,CACdjuT,GAAI,EACJH,GAAI,GAER82T,SAAUA,EACV9N,qBAAqB,EACrBW,cAAe,MACf7/R,cAAe,SAAAz2C,GACX,EAAKxD,KAAOwD,EAAEmoB,SACjB,EACD+yT,cAAe,SAAAl7U,GACX,GAAI,EAAKxD,MAAQ,UAAYwD,EAAEwwO,SAAU,CACrC,IAAI+wH,EAAY,EAAKb,UAAU/vN,mBAAmB7lF,KAC9C+xB,EAAY,IAAIhjF,KAAK,EAAK4pV,SAAS8d,EAAUnqT,gBAC7C0lC,EAAU,IAAIjjF,KAAK,EAAK4pV,SAAS8d,EAAUzsT,cAC3C0sT,EAAsBxhW,EAAEi9C,MAAMlqD,MAAK,SAAA2M,GAAC,OAAIA,EAAEqiU,YAAcw/B,EAAUlqT,qBAA9B,IACpCoqT,EAAoBzhW,EAAEi9C,MAAMlqD,MAAK,SAAA2M,GAAC,OAAIA,EAAEqiU,YAAcw/B,EAAUxsT,mBAA9B,IAClCysT,IACAA,EAAoB1lD,cAAcx9M,WAAa,EAAKojQ,yBAAyB7kR,IAE7E4kR,IACAA,EAAkB3lD,cAAcx9M,WAAa,EAAKojQ,yBAAyB5kR,GAElF,CACJ,EACDmwP,cAAe,SAAAvlT,GAAK,OAAIA,EAvHD,KAuHyC,YAAcqnD,GAAAA,UAAkB1D,WAAa,KAAO,IAAhG,GAE3B,GAnFL,sCAoFI,SAAyBrgD,GACrB,OAAO,IAAIutE,GAAW,CAClBjJ,MAAO02B,GAAAA,sBAAwCh7F,GAC/C+sE,UAAU,EACV0B,SAAU,IAEjB,GA1FL,uCA2FI,SAA0BuyB,GACtB,OAAO+f,GAAyB/f,EAAgBj1H,KAAK2pW,UAAU/vN,mBAClE,GA7FL,kCA8FI,SAAqBh8I,EAAMgtW,EAAUC,IA9HP,SAAClmH,EAAQzmP,EAAO28J,GACnB,OAAS38J,IAAWA,IACnB,OAAS28J,GAAmBA,IAEpD8pF,EAAOh4M,OAAO,QAASkuH,EAE9B,CAyHOiwM,CAA4BltW,EAAKwzB,UAAWxzB,EAAKM,MAAON,EAAKi9J,eAC7D,IAAI38J,EAAQ02H,GAAAA,gBAAkCh3H,EAAKM,OAC/C28J,EAAgBjmC,GAAAA,gBAAkCh3H,EAAKi9J,eACvDkwM,EAAa/qW,KAAKyF,KAAKolV,UAAU+f,GACjCp0F,EAAY5hJ,GAAAA,gBAAkCm2O,EAAWp+T,OAAO,UACpE,GAAI3sC,KAAK4pW,UAAUoB,UAAYx0F,GAAat4Q,GAAS2sW,EAAcr0F,EAAWt4Q,GAAQ,CAClF,IAAI2tB,EAAWgvI,EAAgB27G,EAAU9gN,UAAYmlG,EAAcnlG,UAAY,EAC/Eq1S,EAAWp+T,OAAO,QAAS,IAAI7pC,KAAK5E,EAAMw3D,UAAY7pC,GACzD,CACJ,GAxGL,mCAyGI,SAAsBo/U,EAAcC,EAAoBxkB,EAAc+B,EAAS0iB,GAAgB,WACvFtqT,EAAU/oC,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GACtEszV,EAAYhhP,GAAAA,OAA2B,+BAC3C,MAAO,CACH4gN,UAAWigC,EACXvrB,WAAY,cACZgH,aAAcA,EACd+B,QAASA,EACT/wU,MAAO,CACH/Q,KAAM,KAEVo+S,cAAe,CACX9sK,YAAa,QACbF,UAAW,KACX26G,YAAa04G,EACb5mD,eAAe,EACfxiE,eAAgB,SAAApkP,GACZ,IAGIytW,EADA,EADA5lW,KAE4BolV,UAAUqgB,GACtCC,GACAE,EAAqB1+T,OAAO,QAAS/uC,EAAKM,MAEjD,GAEL2iD,QAASA,EAEhB,GArIL,iCAsII,SAAoB2pT,EAAWR,GAAsB,WAC7CvhB,EAAUuhB,EAAuB,EAAI,EACrC9rT,EAAiBl+C,KAAK2pW,UAAU2B,oBACpC,MAAO,CAAC7B,GAAoBe,EAAUnqT,cAAeooS,EAASvqS,EAAgB,oCAAoC,SAAAtgD,GAC9G,EAAK2tW,qBAAqB3tW,EAAM4sW,EAAUzsT,aAAa,SAACqsM,EAAUD,GAAX,OAA0BC,EAAWD,CAArC,GAC1D,IAAGnqP,KAAKwrW,sBAAsBhB,EAAUlqT,sBAAuBkqT,EAAUxsT,oBAAqB,EAAGyqS,GAAS,EAAMuhB,GAAuBP,GAAoBe,EAAUzsT,YAAa0qS,EAASvqS,EAAgB,kCAAkC,SAAAtgD,GAC1O,EAAK2tW,qBAAqB3tW,EAAM4sW,EAAUnqT,eAAe,SAAC8pM,EAAYC,GAAb,OAA0BA,EAAWD,CAArC,GAC5D,IAAGnqP,KAAKwrW,sBAAsBhB,EAAUxsT,oBAAqBwsT,EAAUlqT,sBAAuB,EAAGmoS,GAAS,EAAOuhB,GACrH,GA9IL,qCA+II,SAAwB73I,EAAU98F,GAC9B,IAAIo2O,EAAoBzrW,KAAKyF,KAAKiwV,WAAWvjI,GAAU4yF,cACnD1/S,EAAOgwH,EAAW,OAAS,WAC3Bq2O,GAAkB3yV,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG0yV,GAAoB,CAC5DpmW,KAAMA,IAEVrF,KAAKyF,KAAKiwV,WAAWvjI,EAAU,gBAAiBu5I,EACnD,GAtJL,8BAuJI,SAAiBlB,EAAWV,EAAeC,EAAYC,GAAsB,WACzE,MAAO,CAAC,CACJh/B,UAAWw/B,EAAU/pT,SACrBi/R,WAAY,YACZ+I,QAAS,EACT/wU,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,kCAEtC,CACCqvH,SAAU,QACVgvG,QAAS,EACTzE,iBAAkB,CACdjuT,GAAI,EACJH,GAAI,GAERswB,MAAOlmD,KAAK2rW,oBAAoBnB,EAAWR,IAC5C,CACCvwH,SAAU,QACVgvG,QAAS,EACTzE,iBAAkB,CACdjuT,GAAI,EACJH,GAAI,GAERswB,MAAO,CAAC,CACJ8kR,UAAWw/B,EAAUptT,WACrBmtH,SAAU,6BACVm1K,WAAY,WACZhoU,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,sBACjCz3F,SAAU,SAEdoyR,cAAe,CACX/iE,eAAgB,SAAApkP,GACZ,IACWM,EACPN,EADAM,MAEA0tW,EAAkB,EAAKnmW,KAAKolV,UAAU2f,EAAUnqT,eAChDwrT,EAAgB,EAAKpmW,KAAKolV,UAAU2f,EAAUzsT,aAC9C+nC,EAAY8uC,GAAAA,gBAAkCg3O,EAAgBj/T,OAAO,UACrEo5C,EAAU6uC,GAAAA,gBAAkCi3O,EAAcl/T,OAAO,UACrE,GAAI,EAAKi9T,UAAUoB,UAAYllR,EAC3B,GAAI5nF,EAAO,CACP,IAAI4tW,EAAkB9pR,GAAAA,SAAmB8D,GACrCimR,EAAgB/pR,GAAAA,SAAmB+D,GACvC6lR,EAAgBj/T,OAAO,QAAS,IAAI7pC,KAAKgpW,IACzCD,EAAcl/T,OAAO,QAAS,IAAI7pC,KAAKipW,GAC1C,KAAM,CACH,IAAIC,EAAyBxC,GAAqB1jR,EAAW,EAAK6jR,UAAUsC,mBACxEC,EAAuB1C,GAAqBzjR,EAAS,EAAK4jR,UAAUsC,mBACpE72O,EAAoB,EAAKu0O,UAAUwC,qBAAqBD,GAC5DN,EAAgBj/T,OAAO,QAASq/T,GAChCH,EAAcl/T,OAAO,QAASyoF,EACjC,CAEL,IAAIg3O,EAAoB,GAAGn8V,OAAOo5V,GAA6BC,KAAM,KAAKr5V,OAAOu6V,EAAUnqT,eACvFgsT,EAAkB,GAAGp8V,OAAOo5V,GAA6BC,KAAM,KAAKr5V,OAAOu6V,EAAUzsT,aACzF,EAAKuuT,wBAAwBF,EAAmBluW,GAChD,EAAKouW,wBAAwBD,EAAiBnuW,EACjD,IAEN,CACCwhV,WAAY,WACZ1U,UAAW,SACXzgK,SAAU,6BACVnxK,KAAM,oBACNse,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,qCACjCz3F,SAAU,SAEdoyR,cAAe,CACX/iE,eAAgB,SAAApkP,GACZ,IACU6H,EACN,EADAA,KAEAgjV,EAAU7qV,EAAKM,MAAQ,EAAI,EAC/BuH,EAAKiwV,WAAW2T,GAA6BC,KAAM,UAAW7gB,GAC9DhjV,EAAKiwV,WAAW2T,GAA6BE,WAAY,UAAW9gB,GA5PvD,SAAC5oS,EAAoB3hD,EAAOuH,GAC7D,IAAI/K,EACJ+K,EAAKiwV,WAAW2T,GAA6BE,WAAY,UAAWrrW,IACnEA,GAASuH,EAAKmlV,WAAW/qS,EAAoB,IAC9C,QAAUnlD,EAAK+K,EAAKolV,UAAUhrS,UAAwB,IAAWnlD,GAAcA,EAAG6xW,wBAAwBruW,EAC7G,CAwPuBsuW,CAA+BhC,EAAU3qT,mBAAoBjiD,EAAKM,MAAOuH,GACzEskW,EAAWnsW,EAAKM,OAChB4rW,GACH,MAGV,CACCrwH,SAAU,QACVgvG,QAAS,GACV,CACCzd,UAAWw/B,EAAU3sT,gBACrB6hS,WAAY,aACZ+I,QAAS,EACT/wU,MAAO,CACH/Q,KAAMyjH,GAAAA,OAA2B,wCAEtC,CACCqvH,SAAU,QACVgvG,QAAS,GAEhB,GAxPL,qCAyPI,SAAwB+hB,GAAW,WAC/B,MAAO,CAAC,CACJx/B,UAAWw/B,EAAU3qT,mBACrB6/R,WAAY,qBACZ36B,cAAe,CACX7mQ,eAAgBl+C,KAAK2pW,UAAU2B,oBAC/B92O,mBAAoBx0H,KAAK2pW,UAAU8C,wBACnC3S,qBAAsB,kBAAM,EAAK4S,0BAA0B,EAAKhgB,UAAU75N,iBAApD,GAE1Bn7G,MAAO,CACH/Q,KAAM,IACNk6C,SAAS,IAGpB,GAvQL,4BAwQI,SAAeirE,GACX,IAAI,EAGA9rH,KAAK2pW,UAAU/vN,mBAAmB7lF,KAFnB1T,EADnB,EACIA,cACatC,EAFjB,EAEIA,YAEAquT,EAAoB,GAAGn8V,OAAOo5V,GAA6BC,KAAM,KAAKr5V,OAAOowC,GAC7EgsT,EAAkB,GAAGp8V,OAAOo5V,GAA6BC,KAAM,KAAKr5V,OAAO8tC,GAC3E4uT,EAAoB3sW,KAAKyF,KAAKiwV,WAAW0W,GACzCQ,EAAkB5sW,KAAKyF,KAAKiwV,WAAW2W,GAC3C,GAAIM,GAAqBC,EAAiB,CACtC,IAAIC,EAAyBF,EAAkB5nD,cAC3C+nD,EAAuBF,EAAgB7nD,cAC3C8nD,EAAuBxnW,KAAOynW,EAAqBznW,KAAOymH,EAAS,OAAS,WAC5E9rH,KAAKyF,KAAKiwV,WAAW0W,EAAmB,gBAAiBS,GACzD7sW,KAAKyF,KAAKiwV,WAAW2W,EAAiB,gBAAiBS,EAC1D,CACJ,GAxRL,6CAyRI,SAAgC74U,EAAM84U,GAClC,IAAI3vW,EAAU,CACV0oF,UAAW7xD,GAEfj0B,KAAKgtW,iBAAiBD,EAAY,aAAc3vW,EACnD,GA9RL,8BA+RI,SAAiBhE,EAAM8gJ,EAAW98I,GAC9B,IAAI6vW,EAAa,GAAGh9V,OAAOo5V,GAA6BnvN,GAAY,KAAKjqI,OAAO7W,GAC5EurP,EAAS3kP,KAAKyF,KAAKiwV,WAAWuX,GAClCtoH,GAAU3kP,KAAKyF,KAAKiwV,WAAWuX,EAAY,iBAAiBxnT,EAAAA,GAAAA,GAAO,CAAC,EAAGk/L,EAAOogE,cAAe3nT,GAChG,GAnSL,yCAoSI,SAA4B62B,EAAMtxB,GAC9B,IAAI4kG,EAAavnG,KAAK2qW,yBAAyB12U,GAC/Cj0B,KAAKgtW,iBAAiBrqW,EAAM,OAAQ,CAChC4kG,WAAYA,GAEnB,GAzSL,4BA0SI,SAAemlP,GACX1sV,KAAK4pW,UAAU31Q,OACfj0F,KAAKyF,KAAKknC,OAAO,WAAY+/S,GAC7B,IAAI8d,EAAYxqW,KAAK2pW,UAAU/vN,mBAAmB7lF,KAC9C+3D,EAAS4gO,EAAS8d,EAAUptT,YAC5B0oC,EAAY,IAAIhjF,KAAK4pV,EAAS8d,EAAUnqT,gBACxC0lC,EAAU,IAAIjjF,KAAK4pV,EAAS8d,EAAUzsT,cAC1C/9C,KAAKktW,4BAA4BpnR,EAAW0kR,EAAUlqT,uBACtDtgD,KAAKktW,4BAA4BnnR,EAASykR,EAAUxsT,qBACpDh+C,KAAKmtW,gCAAgCrnR,EAAW0kR,EAAU3qT,oBAC1D7/C,KAAKotW,eAAethP,GACpB9rH,KAAK4pW,UAAU59Q,SAClB,KAtTL,KCpDWqhR,GACE,IADFA,GAEK,IAFLA,GAGK,IAHLA,GAIC,CACJC,QAAS,IACTC,WAAY,KAwBhBC,GAAW,iBAAM,YAAcx1R,GAAAA,UAAkB1D,UAAtC,EAEXm5R,GACO,QADPA,GAEQ,SAeDC,GAAuB,SAACC,EAAeC,GAC9C,IAAIpqW,EAAS,GACTumQ,EAfsB,CAC1B8jG,WAAY,CACRz0H,SAAU,OACVh8O,QAAS,CACLuJ,KAAMyjH,GAAAA,OAA2B,SAErCz3F,SAAU86U,IAEdK,aAAc,CACV10H,SAAU,SACVzmN,SAfkB,QAAUqlD,GAAAA,UAAkBv+E,SAelBg0W,GAA0BA,KAY1D,OANIE,GACAnqW,EAAOpD,MAAK2Y,EAAAA,EAAAA,GAAS,CAAC,EAAGgxP,EAAc8jG,WAAY,CAC/CvwL,QAASswL,KAGjBpqW,EAAOpD,KAAK2pQ,EAAc+jG,cACnBtqW,CACV,EACUuqW,GAA0B,WACjC,IAAI9zW,GAAS8mD,EAAAA,EAAAA,MACTpwB,EAAQ12B,GAAU2wE,GAAS3wE,GAC/B,QAAI02B,IACO68U,KAAa78U,EAAQ08U,GAAmBE,WAAa58U,EAAQ08U,GAG3E,EACUW,GAAc,SAAAC,GACrB,OAAIT,KACOH,GAAmBC,QAEvBW,EAAeZ,GAAyBA,EAClD,EC1EGa,GAAU,KAIVC,GAAkB,WACbD,KAGLA,GAAQl0S,WAAWt8D,SACnBwwW,GAAU,KACb,EACM,SAASpgS,GAAK1wE,GAGjB,OAFA+wW,KACAD,GAZkB,SAAS9wW,GAC3B,OAAO,IAAI03S,GAAU/jO,GAAE,SAASpC,SAASvxE,GAAWA,EAAQmK,WAAa2wE,MAAa96E,EACzF,CAUagxW,CAAgBhxW,GACnB8wW,GAAQpgS,MAClB,CACM,SAASE,KACZ,OAAKkgS,GAGEA,GAAQlgS,OAAOpf,KAAKu/S,IAAiB7wV,WAFhC,IAAID,GAAAA,IAAUze,SAG7B,CCFD,IAAIuvH,GAAOnsC,GAAAA,mBACPqsR,GAA0B,iCAC1BC,GAAYngP,GAAK,OACjBogP,GAAe,CACf/hV,OAAQ,OACRyU,UAAW,OACX8zM,iBAAiB,EACjBN,WAAW,EACXl0B,qBAAqB,EACrBq0B,kBAAkB,EAClB/2E,oBAAqB,CAAC,CAClBnnF,OAAQ,kBAAMsB,GAAAA,UAAkBtD,OAAxB,EACRt3E,QAAS,CACLq3O,WAAW,MAIZ+5H,GACC,EADDA,GAEC,EAFDA,GAGc,EAEZC,GAAb,WACI,WAAY9E,EAAWlkW,IAAM,eACzBzF,KAAK2pW,UAAYA,EACjB3pW,KAAKyF,KAAOA,EACZzF,KAAK6oQ,MAAQ,KACb7oQ,KAAK0oC,MAAQ,CACT7iB,OAAQ,KACR6oV,aAAc,KACdC,mBAAmB,EACnBphP,YAAa,CACTjzH,KAAM,MAGjB,CAbL,oCAcI,WACI,QAAO0F,KAAK6oQ,OAAQ7oQ,KAAK6oQ,MAAMl8N,OAAO,UACzC,GAhBL,kBAiBI,SAAK4gF,EAAaxtH,GAAQ,WAItB,GAHAC,KAAK0oC,MAAM6kF,YAAYjzH,KAAOizH,EAC9BvtH,KAAK0oC,MAAM7iB,OAAS9lB,EAAO8lB,OAC3B7lB,KAAK0oC,MAAMkmU,YAAc7uW,EAAO6uW,aAC3B5uW,KAAK6oQ,MAAO,CACb,IAAIhB,EAAc7nQ,KAAK6uW,qBACvB7uW,KAAK6oQ,MAAQ7oQ,KAAKilQ,aAAa4C,EAClC,CACD7nQ,KAAK6oQ,MAAMl8N,OAAO,eAAgB+gU,GAAqB3tW,EAAO+uW,kBAAkB,SAAA7lW,GAAC,OAAI,EAAK8lW,wBAAwB9lW,EAAjC,KACjFjJ,KAAK6oQ,MAAM/6L,MACd,GA3BL,kBA4BI,WACI9tE,KAAK6oQ,MAAM76L,MACd,GA9BL,qBA+BI,WACI,IAAItzE,EACJ,QAAUA,EAAKsF,KAAK6oQ,aAAU,IAAWnuQ,GAAcA,EAAGs/D,WAAWt8D,QACxE,GAlCL,0BAmCI,SAAaN,GACT,IAAI4xW,EAAej+R,GAAE,SAAS3C,SAASigS,IAAyB1/R,SAAS3uE,KAAK2pW,UAAUxiN,cACxF,OAAOnnJ,KAAK2pW,UAAUY,gBAAgByE,EAAcj7H,GAAO32O,EAC9D,GAtCL,gCAuCI,WAAqB,WACjB,OAAO2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGw1V,IAAe,CACxCtuJ,SAAU,kBAAM,EAAK0pJ,UAAUtjV,OAArB,EACV85L,gBAAiB,kBAAM,EAAK8uJ,qBAAX,EACjBlvJ,UAAW,SAAA92M,GAAC,OAAI,EAAKimW,WAAWjmW,EAApB,EACZu2M,YAAa,CACT32C,MAAOwlM,KAGlB,GAhDL,wBAiDI,SAAWplW,GAAG,WACVjJ,KAAKmvW,cACL,IAAI1+V,EAAM,CACNhL,KAAMzF,KAAKyF,KAAK2pW,OAChBvmG,MAAO7oQ,KAAK6oQ,MACZwmG,gBAAiBrvW,KAAK0oC,MAAM6kF,YAAYjzH,KACxC0mD,QAAQ,GAEZhhD,KAAK2pW,UAAU2F,2BAAftvW,CAA2CyQ,GAC3CzQ,KAAK2pW,UAAU4F,oBAAoB9+V,GAAK,SAAA++V,GAChCA,EACAvmW,EAAE+3C,QAAS,EAEX,EAAKyuT,2BAEZ,GACJ,GAjEL,iCAkEI,WAEI,OADAzvW,KAAK0vW,cACE1vW,KAAKyF,KAAK2pW,OAAOp1S,UAC3B,GArEL,6BAsEI,SAAgBi7D,GACZ,IAAI1H,EAAcvtH,KAAK0sW,0BAA0Bz3O,GAC7Cd,EAAgBn0H,KAAK2pW,UAAU/vN,mBAC/B75F,EAAY//C,KAAK2pW,UAAUgG,eAC3BC,EAAsBrzN,GAAuBtnB,EAAgBd,EAAep0E,GAChF,OAAOhnC,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGk8G,GAAiB26O,GAAsB,CACzEr1O,SAAUhN,EAAYyiB,gBAE7B,GA9EL,yBA+EI,WACI,IAAI/a,EAAiBj1H,KAAK0oC,MAAM6kF,YAAYjzH,KACxCoyV,EAAW1sV,KAAK6vW,gBAAgB56O,GACpCj1H,KAAKyF,KAAK+K,OAAOxQ,KAAK8pW,cAAchtW,KAAKkD,MAAOA,KAAK+pW,WAAWjtW,KAAKkD,MAAO0sV,EAC/E,GAnFL,yBAoFI,SAAYz3N,GACR,IAAI1H,EAAcvtH,KAAK0sW,0BAA0Bz3O,GACjD,SAAIA,IAAkB1H,EAAY/nG,WAG9BxlB,KAAK0oC,MAAM7iB,SAAW2oV,KAGlBxuW,KAAK2pW,UAAUM,mBAAmB0D,aAC7C,GA7FL,uCA8FI,SAA0B14O,GACtB,OAAO+f,GAAyB/f,EAAgBj1H,KAAK2pW,UAAU/vN,mBAAoB55I,KAAK2pW,UAAU8C,wBACrG,GAhGL,yBAiGI,WACI,IACUnyW,EACN0F,KAAK0oC,MAAM6kF,YADXjzH,KAEAizH,EAAcvtH,KAAK0sW,0BAA0B1sW,KAAK6vW,gBAAgBv1W,IAClEizH,EAAYznC,YACZynC,EAAYznC,UAAYynC,EAAYsnB,mBAAmB,kBAEvDtnB,EAAYxnC,UACZwnC,EAAYxnC,QAAUwnC,EAAYunB,iBAAiB,kBAEvD,IAAI43M,EAAWn/N,EAAYhmF,SAC3BvnC,KAAKyF,KAAKsvB,SAAW/0B,KAAK8vW,YAAYpjB,GACtC1sV,KAAKyF,KAAKsqW,eAAerjB,EAC5B,GA/GL,2BAgHI,WACQ1sV,KAAK6oQ,OACL7uL,GAAmBh6E,KAAK6oQ,MAAM7uM,WAErC,GApHL,wBAqHI,SAAWi0S,GACP,GAAIjuW,KAAK6oQ,MAAO,CACZ,IAAImnG,EAAejC,KACfptU,EAAWqvU,EAAe,OAAShC,GAAYC,GACnDjuW,KAAK6oQ,MAAMl8N,OAAO,aAAcqjU,GAChChwW,KAAK6oQ,MAAMl8N,OAAO,WAAYhM,EACjC,CACJ,GA5HL,uCA6HI,WACI,GAAI3gC,KAAKyF,KAAK2pW,OAAQ,CAClB,IAGInB,EADAjuW,KAAKyF,KADLinV,SAEwB1sV,KAAK2pW,UAAU/vN,mBAAmB7lF,KAAKlU,oBAC/D7/C,KAAK6gD,SACL7gD,KAAK+pW,WAAWkE,EAEvB,CACJ,GAvIL,8BAwII,SAAiBgC,GAAiB,WAC1B1hT,EAAW,IAAIlxC,GAAAA,GACf6yV,EAAalwW,KAAKyF,KAAK2pW,OAAO7tN,WA+BlC,OA9BA0uN,GAAmBjwW,KAAKmwW,kBACxB9gT,EAAAA,GAAAA,IAAK6gT,GAAcA,EAAWvuV,UAAYuuV,GAAYthT,MAAK,SAAAshT,GACvD,GAAIA,IAAeA,EAAWhgO,QAG1B,OAFAkgO,UACA7hT,EAAS3vD,SAAQ,GAGrB,IAAI0gG,EAAU,EAAKotQ,0BAA0B,EAAKjnW,KAAKinV,UACnD33M,EAAgBz1C,EAAQh0E,MAAM,CAC9BspH,aAAc,oBAElB,EAAKy7N,mBAAmB/wQ,EAASy1C,GACjC,IAAIxnB,EAAcwnB,EAAcxtG,SAEhC,cADOgmF,EAAYgN,OACX,EAAK7xF,MAAM7iB,QACf,KAAK2oV,GACD,EAAK7E,UAAU2G,eAAe/iP,GAAa3+D,KAAKL,EAAS3vD,SACzD,MACJ,KAAK4vW,GACD,EAAK7E,UAAU4G,kBAAkB,EAAK7nU,MAAM6kF,YAAYjzH,KAAMizH,GAAa3+D,KAAKL,EAAS3vD,SACzF,MACJ,KAAK4vW,GACD,EAAK7E,UAAU4G,kBAAkB,EAAK7nU,MAAMkmU,YAAY4B,kBAAmB,EAAK9nU,MAAMkmU,YAAY6B,oBAClG,EAAK9G,UAAU2G,eAAe/iP,GAAa3+D,KAAKL,EAAS3vD,SAEjE2vD,EAASK,MAAK,WACVwhT,KACA,EAAK1nU,MAAMgmU,aAAenhP,CAC7B,GACJ,IACMh/D,EAASjxC,SACnB,GA1KL,qCA2KI,SAAwBrU,GACpBA,EAAE+3C,QAAS,EACXhhD,KAAK0wW,mBACR,GA9KL,+BA+KI,WAAoB,WACZniT,EAAW,IAAIlxC,GAAAA,GAuBnB,OAtBIrd,KAAK2wW,wBACLthT,EAAAA,GAAAA,IAAKrvD,KAAK4wW,kBAAiB,IAAOhiT,MAAK,WACnC,GAAI,EAAKlmB,MAAMgmU,aAAc,CACzB,IAAIpvQ,EAAU,EAAKotQ,0BAA0B,EAAKhkU,MAAMgmU,cAEzC5oR,EAGXwZ,EAHAxZ,UACSC,EAETuZ,EAFAvZ,QACQ+lC,EACRxsB,EADAwsB,OAEAjpC,EAAYiD,EAAUpwB,UACtBm7S,EAAU9qR,EAAQrwB,UAClBo7S,EAAchlP,GAAU+kP,EAAUhuR,GAAayrR,GAC/Cn6O,EAAgB,EAAKw1O,UAAU/vN,mBAC/Bm3N,EAAe,EAAKpH,UAAUgG,eAC9BC,EAAsBrzN,GAAuB,EAAK7zG,MAAMgmU,aAAcv6O,EAAe48O,GACzF,EAAKpH,UAAUqH,qBAAqBlrR,EAAW8pR,EAAqBkB,GACpE,EAAKpoU,MAAMgmU,aAAe,IAC7B,CACD,EAAKuC,qBACL1iT,EAAS3vD,SACZ,IAEE2vD,EAASjxC,SACnB,GAxML,4BAyMI,WACI,IAAI/V,EAAYvH,KAAK6oQ,MAAM/yB,kBAC3Bo7H,GAAY,CACR3pW,UAAWA,EACXiD,SAAU,CACNqjM,GAAItmM,IAGf,GAjNL,iCAkNI,WACI,OAAI,IAAUvH,KAAK0oC,MAAMimU,oBACrB3uW,KAAK0oC,MAAMimU,mBAAoB,GACxB,EAGd,GAxNL,gCAyNI,WACI3uW,KAAK0oC,MAAMimU,mBAAoB,CAClC,GA3NL,gCA4NI,SAAmBwC,EAAwBC,GACvC,IAAI58O,EAAqBx0H,KAAK2pW,UAAU8C,wBACxC2E,EAAyBtrR,UAAY9lF,KAAKqxW,0BAA0B78O,EAAoB28O,EAAuBrrR,UAAWsrR,EAAyBtrR,WAC/IsrR,EAAyBrrR,UACzBqrR,EAAyBrrR,QAAU/lF,KAAKqxW,0BAA0B78O,EAAoB28O,EAAuBprR,QAASqrR,EAAyBrrR,SAEtJ,GAlOL,uCAmOI,SAA0ByuC,EAAoB88O,EAAgB79O,GAC1D,IAAI/4H,EAAIC,EAGJ42W,GAFsB,QAAU72W,EAAK85H,EAAmB3G,WAAWyjP,UAAoB,IAAW52W,OAAK,EAASA,EAAGkrB,SAC7F,QAAUjrB,EAAK65H,EAAmB3G,WAAW4F,UAAgB,IAAW94H,OAAK,EAASA,EAAGirB,QAEnH,OAAO2rV,EAAkB,IAAIzuW,KAAK2wH,EAAW/9D,UAAY67S,EAAkBpjP,GAAK,SAAWsF,CAC9F,KAzOL,KC1CA,GAN0B,SAAC5wG,EAAK4U,GAC5B,IAAI+5U,EAASxvR,GAAAA,SAAmBn/D,GAC5B4uV,EAASzvR,GAAAA,SAAmBvqD,GAEhC,OADAg6U,EAAOxyR,QAAQwyR,EAAOzxR,UAAY,GAC3B,CAACwxR,EAAQC,EACnB,ECMGC,GACY,EADZA,GAEY,EAEVC,GAAAA,WACF,WAAYv0W,IAAS,eACjB4C,KAAK5C,QAAUA,CAClB,2CACD,WACI,OAAO4C,KAAK5C,QAAQ+2H,aACvB,+BACD,WACI,OAAOn0H,KAAK5C,QAAQ8iO,gBACvB,sCACD,WACI,OAAOlgO,KAAK5C,QAAQwgD,uBACvB,kCACD,WACI,QAAOyQ,EAAAA,EAAAA,IAAUruD,KAAK5C,QAAQinD,sBAAuBrkD,KAAK5C,QAAQinD,mBACrE,+BACD,SAAexhC,EAAK4U,GAChB,IAAI,EAIAz3B,KAAKm0H,cAAcpgE,KAHNhW,EADjB,EACIA,YACoB8B,EAFxB,EAEIA,mBACeQ,EAHnB,EAGIA,cAEAuxT,EAAa,CACb,CACI,CAAC7zT,EAAa,KAAMl7B,GACpB,CAACw9B,EAAe,IAAK5oB,IACtB,KAAM,CAACooB,EAAoB,aAAc,QAAS,KAAM,CACvD,CAAC9B,EAAal7B,GACd,CAACw9B,EAAex9B,KAMxB,OAHKg9B,GACD+xT,EAAWvwW,OAAO,EAAG,GAElBuwW,CACV,+BACD,SAAeA,EAAYC,GACvB,IAAIzxI,EAAiB,GAGrB,OAFAwxI,GAAcxxI,EAAehgO,KAAKwxW,GAClCC,GAAczxI,EAAehgO,KAAKyxW,GAC3B7xW,KAAK8xW,sBAAsB1xI,EACrC,sCACD,SAAsBA,GAClB,IAAKv7N,MAAMC,QAAQs7N,GACf,OAAOA,EAEX,IAAI,EAGApgO,KAAKm0H,cAAcpgE,KAFNhW,EADjB,EACIA,YACesC,EAFnB,EAEIA,cAEA7lB,GAASirB,EAAAA,GAAAA,GAAO,GAAI26K,GACxB,IAAI1vK,EAAAA,EAAAA,IAASl2B,EAAO,KACZx6B,KAAKqkD,qBAAuB7pB,EAAO75B,OAAS,IACxC65B,EAAO,KAAO6lB,GAAiB7lB,EAAO,KAAOujB,GAAa,CAC1D,IAAIg0T,EAAkBv3U,EAAOA,EAAO75B,OAAS,GAC7C65B,EAAOA,EAAO75B,OAAS,GAAKi0H,GAAAA,cAAgC,IAAI9xH,KAAKivW,GAAkB/xW,KAAK49C,wBAC/F,CAGT,IAAK,IAAIj1C,EAAI,EAAGA,EAAI6xB,EAAO75B,OAAQgI,GAAK,EACpC6xB,EAAO7xB,GAAK3I,KAAK8xW,sBAAsBt3U,EAAO7xB,IAElD,OAAO6xB,CACV,8BACD,SAAco3U,GACV,GAAK5xW,KAAKkgO,oBAAoB9sK,EAAAA,GAAAA,cAAapzD,KAAKkgO,iBAAkB0xI,GAKlE,OAFyB5xW,KAAKkgO,iBAAiBv/N,OAAS,IAAKyyD,EAAAA,GAAAA,cAAapzD,KAAKkgO,iBAAiBwxI,IAA4BE,GACtF5xW,KAAKkgO,iBAAiBwxI,IAA6B1xW,KAAKkgO,gBAEjG,wBACD,SAAQr9M,EAAK4U,GACT,IAAI,EAAqBu6U,GAAoBnvV,EAAK4U,GAAlD,eAAKw6U,EAAL,KAAcC,EAAd,KACIN,EAAa5xW,KAAKmyW,eAAeF,EAASC,GAC1CL,EAAa7xW,KAAKoyW,cAAcR,GAEpC,OADqB5xW,KAAKqyW,eAAeT,EAAYC,EAExD,OA9ECF,GAiFN,GAD0B,SAAAv0W,GAAO,OAAI,IAAIu0W,GAAqBv0W,GAAS2R,QAAQ3R,EAAQylB,IAAKzlB,EAAQq6B,IAAnE,EC7F7B66U,GACU,WADVA,GAEM,OAEGC,GAAb,WACI,WAAYhrQ,IAAY,eACpBvnG,KAAKwyW,cAAcjrQ,GACnBvnG,KAAKyyW,wBAA0B,EAClC,CAJL,oCAKI,WAEI,OADYzyW,KAAKwnG,YAAYjP,QAChBj2F,KAChB,GARL,4BASI,WACI,QAAStC,KAAKwnG,WACjB,GAXL,0BAYI,SAAa7vF,GAET,OADY3X,KAAKwnG,YAAYjP,QAChBtI,MAAMt4E,EACtB,GAfL,2BAgBI,SAAc4vF,GACVvnG,KAAKwnG,YAAcD,EACnBvnG,KAAK0yW,aACL1yW,KAAK2yW,0BACR,GApBL,sCAqBI,WAA2B,WACnBprQ,EAAavnG,KAAKwnG,YAClBjP,EAAQ,OAASgP,QAAc,IAAWA,OAAa,EAASA,EAAWhP,QAC3EA,IACAA,EAAMxrD,GAAGulU,IAAuB,SAAAhwW,GAC5B,IAAIgjK,EAAU/sE,EAAMj2F,MAChBgjK,EACA,EAAKmtM,wBAAwBryW,KAAK,CAC9BkC,IAAKgjK,EACLpnK,MAAOoE,IAGX,EAAKswW,oBAAsBtwW,CAElC,IACDi2F,EAAMxrD,GAAGulU,IAAmB,SAAAO,GACxB,IAAI3sT,EAAQqhD,EAAWrhD,QACnBo/G,EAAU/sE,EAAMj2F,MACpBuwW,EAAUnyW,SAAQ,SAAAoyW,GACd,IAAIC,EAAa,IAAM7sT,EAAM1rB,QAAO,SAAA51B,GAAI,OAAIA,EAAK0gK,KAAawtM,EAASxwW,GAA/B,IAAoC3B,OAC5E,GAAIoyW,EACA,EAAKN,wBAAwBryW,KAAK,CAC9BkC,IAAKgjK,EACLpnK,MAAO40W,EAASxwW,UAEjB,CACH,IACUhI,EACNw4W,EADAx4W,KAEJA,GAAQ4rD,EAAM9lD,KAAK9F,EACtB,CACJ,IACDitG,EAAWlR,MACd,IAER,GAxDL,mCAyDI,WACI,OAAOr2F,KAAK4yW,mBACf,GA3DL,uCA4DI,WACI,OAAO5yW,KAAKyyW,uBACf,GA9DL,wBA+DI,WACIzyW,KAAK4yW,oBAAsB,KAC3B5yW,KAAKyyW,wBAA0B,EAClC,GAlEL,iBAmEI,SAAIx9O,GAAgB,WAChB,OAAOj1H,KAAKwnG,YAAYjP,QAAQpwF,OAAO8sH,GAAgBrmE,MAAK,kBAAM,EAAK44C,YAAYnR,MAAvB,GAC/D,GArEL,oBAsEI,SAAO1+E,EAAQrd,GAAM,WACbgI,EAAMtC,KAAKgzW,aAAar7V,GACxB6L,EAAI,IAAInG,GAAAA,GAEZ,OADArd,KAAKwnG,YAAYjP,QAAQvsD,OAAO1pC,EAAKhI,GAAMs0D,MAAK,SAAAprD,GAAM,OAAI,EAAKgkG,YAAYnR,OAAOznC,MAAK,kBAAMprC,EAAE5kB,QAAQ4E,EAAhB,IAAyB8rD,KAAK9rC,EAAEhkB,OAAjE,IAA0E8vD,KAAK9rC,EAAEhkB,QAChIgkB,EAAElG,SACZ,GA3EL,oBA4EI,SAAO23G,GAAgB,WACf3yH,EAAMtC,KAAKgzW,aAAa/9O,GAC5B,OAAOj1H,KAAKwnG,YAAYjP,QAAQ76F,OAAO4E,GAAKssD,MAAK,kBAAM,EAAK44C,YAAYnR,MAAvB,GACpD,GA/EL,qBAgFI,WACI,IAAI37F,EACA69F,EAAQ,QAAU79F,EAAKsF,KAAKwnG,mBAAgB,IAAW9sG,OAAK,EAASA,EAAG69F,QACxEA,IACAA,EAAMjiD,IAAIg8T,IACV/5Q,EAAMjiD,IAAIg8T,IAEjB,KAvFL,KCkCInkP,GAAOnsC,GAAAA,mBACPixR,GACS,UADTA,GAEU,WAEDC,GAAb,WACI,WAAY91W,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAKm0H,cAAgBn0H,KAAK5C,QAAQ+2H,cAClCn0H,KAAKujG,OACR,CALL,yCAMI,WACI,OAAO0vQ,EACV,GARL,8BASI,WACI,OAAOjzW,KAAK5C,QAAQo3H,kBACvB,GAXL,4BAYI,WACI,OAAOx0H,KAAK5C,QAAQmjD,YACvB,GAdL,0BAeI,WACI,OAAOvgD,KAAK5C,QAAQ6gD,UACvB,GAjBL,oBAkBI,WACI,OAAOj+C,KAAK5C,QAAQswH,QACvB,GApBL,0BAqBI,WACI,OAAO1tH,KAAK5C,QAAQ8gD,cACvB,GAvBL,2BAwBI,WACI,OAAOl+C,KAAK5C,QAAQ+iD,eACvB,GA1BL,2BA2BI,WACI,OAAOngD,KAAKmzW,eAAe,kBAC9B,GA7BL,4BA8BI,WACI,OAAOnzW,KAAKmzW,eAAe,mBAC9B,GAhCL,oBAiCI,WACI,OAAOnzW,KAAKmzW,eAAe,WAC9B,GAnCL,yBAoCI,WACI,OAAOnzW,KAAKmzW,eAAe,gBAC9B,GAtCL,qBAuCI,WACI,OAAOnzW,KAAKmzW,eAAe,YAC9B,GAzCL,sBA0CI,WACI,OAAOnzW,KAAKmzW,eAAe,aAC9B,GA5CL,4BA6CI,WACI,OAAOnzW,KAAKmzW,eAAe,mBAC9B,GA/CL,2BAgDI,WACI,OAAOnzW,KAAKmzW,eAAe,kBAC9B,GAlDL,4BAmDI,SAAe/5W,GACX,IAAIoK,EAASxD,KAAK5C,QAAQhE,GAC1B,MAAO,oBAAsBoK,EAASA,IAAWA,CACpD,GAtDL,mBAuDI,WACIxD,KAAKozW,iBAAiBpzW,KAAKm0H,cAC9B,GAzDL,oBA0DI,SAAOk/O,GACH,IAGIvnP,EAFWwnP,EACXtzW,KADAszW,UAMJ,OAHKtzW,KAAKmgD,iBAAmBngD,KAAKuzW,mBAC9BznP,GAAS,GAEN9rH,KAAKwzW,yBAAyB,CACjCjzT,aAAcvgD,KAAK2rH,iBACnB1tE,WAAYj+C,KAAK4rH,eACjBD,iBAAkB3rH,KAAK2rH,iBACvBC,eAAgB5rH,KAAK4rH,eACrB/oG,IAAKywV,EAAU,GACf77U,IAAK67U,EAAU,GACfvzT,UAAW//C,KAAKq7I,gBAChBvvB,OAAQA,EACR2nP,4BAA6Bn0N,GAAet/I,KAAKikF,UACjD/lC,eAAgBl+C,KAAKk+C,gBACtBm1T,EACN,GA9EL,mCA+EI,SAAsB13I,EAAe03I,GAAe,WAC5CK,EAAW/3I,EAAc53N,KAAI,SAAAa,GAAI,OAAIowI,GAAyBpwI,EAAM,EAAKuvH,cAAe,EAAKK,mBAA5D,IACjChxH,GAAS,EAOb,OANAqpD,EAAAA,EAAAA,IAAK6mT,GAAU,SAAC50W,EAAG8F,GACf,GAAI6mH,GAA0B7mH,EAAM,EAAK+mH,iBAAkB,EAAKC,eAAgB,EAAKvuE,iBAEjF,OADA75C,GAAS,GACF,CAEd,IACMA,CACV,GAzFL,8BA0FI,SAAiB2wH,GACbn0H,KAAKm0H,cAAgBA,CACxB,GA5FL,4CA6FI,SAA+Bw/O,GAAe,WAEpBhoP,EAElBgoP,EAFAhoP,iBACgBC,EAChB+nP,EADA/nP,eAEJ,MAAO,CACH,CAAC,SAAA2B,GAAW,OAAI9B,GAA0B8B,EAAa5B,EAAkBC,EAAgB,EAAKvuE,gBAAlF,GAEnB,GArGL,mCAsGI,SAAsBs2T,GAAe,WAC7B9wV,EAAM,IAAI/f,KAAK6wW,EAAc9wV,KAC7B4U,EAAM,IAAI30B,KAAK6wW,EAAcl8U,KAEf8oB,EAQdozT,EARApzT,aACYtC,EAOZ01T,EAPA11T,WACkB0tE,EAMlBgoP,EANAhoP,iBACgBC,EAKhB+nP,EALA/nP,eACW7rE,EAIX4zT,EAJA5zT,UACgB7B,EAGhBy1T,EAHAz1T,eACwB01T,EAExBD,EAFAC,uBAC6BH,EAC7BE,EADAF,4BAEA,EAAqBzB,GAAoBnvV,EAAK4U,GAAlD,eAAKw6U,EAAL,KAAcC,EAAd,KACI2B,GAAgBxlT,EAAAA,EAAAA,IAAUruD,KAAKm0H,cAAcv/D,OAAOo7E,gBACxD,MAAO,CACH,CAAC,SAAAziB,GACG,IAAI7yH,EAEJ,KADyB,QAAUA,EAAK6yH,EAAY1sE,eAAY,IAAWnmD,GAAKA,GAE5E,OAAO,EAEX,IACeorF,EAGXynC,EAHAznC,UACSC,EAETwnC,EAFAxnC,QACmB+tR,EACnBvmP,EADAumP,kBAEJ,IAAKA,KACK/tR,GAAWksR,GAAWnsR,EAAYosR,GAAWlwR,GAAAA,SAAmB+D,EAASksR,IAAYjwR,GAAAA,SAAmB8D,EAAWmsR,IACrH,OAAO,EAGf,IAAI8B,EAAyBtoP,GAA0B8B,EAAa5B,EAAkBC,EAAgB,EAAKvuE,iBACvG22T,EAA8B3/O,GAA+B9G,GAC7D8H,EAAW9H,EAAYzB,OACvBmoP,EAAoBD,GAA+BD,EACvD,IAAK,OAASh0T,QAAa,IAAWA,OAAY,EAASA,EAAUp/C,UAAY,EAAKuzW,8BAA8B3mP,EAAY0H,eAAgBl1E,GAC5I,OAAO,EAEX,GAAIg0T,IAA0B,IAAUJ,EAAc7nP,OAClD,OAAO,EAEX,GAAIgoP,EAAmB,CACnB,IAAI3+N,ExS5IY,SAACzpB,EAAoB8I,EAAoB9zE,GACzE,IACyBy0F,EACrBzpB,EADAypB,oBAEJ,GAAIA,EAAqB,CAErB,IADA,IAAIg/N,EAAah/N,EAAoB9yI,MAAM,KAClCsG,EAAI,EAAGA,EAAIwrW,EAAWxzW,OAAQgI,IACnCwrW,EAAWxrW,GAAK2rH,GAA4B6/O,EAAWxrW,GAAI+iH,EAAmB5lC,UAAW0uC,EAAoB9zE,GAEjH,OAAOyzT,EAAW1nW,MACrB,CACD,OAAO0oI,CACV,CwSgI6Ci/N,CAAuB7mP,EAAa,EAAKiH,mBAAoB,EAAK9G,UAC5F,IAAK,EAAK2mP,2BAA0Bt7V,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGw0G,GAAc,CAChE4nB,oBAAqBA,EACrBrpB,OAAQioP,IACRlxV,EAAK4U,EAAK8oB,EAActC,EAAYC,GACxC,OAAO,CAEd,CACD,SAAKm3E,GAAYo+O,GAA+BQ,GACxCluR,EAAUljE,KAASgxV,GAAiBA,IAAkBC,WAI1DzlT,EAAAA,EAAAA,IAAU9N,IAAmBszT,GAAkBF,EAAcW,oBxSpMxC,SAACxuR,EAAWC,EAASxlC,EAAcurE,EAAQyoP,GAChF,IAAI1xR,EAAYb,GAAAA,oBAA8BzhC,GAE9C,OADaulC,EAAUlE,YAAciB,EAAU3C,OAAS4F,EAAUtD,cAAgBK,EAAUzC,SAAW2F,EAAQnE,aAAeiB,EAAU3C,OAAS6F,EAAQvD,aAAeK,EAAUzC,SAAW2F,EAAQnE,WAAaiB,EAAU3C,OAASq0R,GAAezoP,CAEvP,CwSiMwB0oP,CAA4B1uR,EAAWC,EAASxlC,EAAcwzT,EAAwBC,SAI3F3lT,EAAAA,EAAAA,IAAUpQ,KxSpMS,SAAA7gD,GACnC,IAkBIoG,EAjBWsiF,EAWX1oF,EAXA0oF,UACSC,EAUT3oF,EAVA2oF,QACcxlC,EASdnjD,EATAmjD,aACYtC,EAQZ7gD,EARA6gD,WACkB0tE,EAOlBvuH,EAPAuuH,iBACgBC,EAMhBxuH,EANAwuH,eACQE,EAKR1uH,EALA0uH,OACayoP,EAIbn3W,EAJAm3W,YACK1xV,EAGLzlB,EAHAylB,IACK4U,EAELr6B,EAFAq6B,IACwBm8U,EACxBx2W,EADAw2W,uBAEAa,GAAkB,GAAK7oP,EAAiBD,GAAoBwC,GAAK,QACjEumP,EAAe3uR,EAAQrwB,UAAYowB,EAAUpwB,UAC7CurB,GAASwzR,EAAiBC,GAAgBvmP,GAAK,QAC/CwmP,EAAgB7uR,EAAUlE,WAC1BgzR,EAAmB9uR,EAAUtD,aAE7BquR,EAAU7uR,GAAAA,oBAA8B/jC,GACxC4kC,EAAYb,GAAAA,oBAA8BzhC,GAC1Cs0T,EAAwB/uR,EAAYruD,GAAOsuD,EAAUljE,EAOzD,OANArf,EAASowW,GAA0BiB,GAAyBF,EAAgB9D,EAAQ3wR,OAASy0R,IAAkB9D,EAAQ3wR,OAAS00R,EAAmB/D,EAAQzwR,SAAW0rC,GAAUhmC,GAAaruD,GAAO88U,GAAeM,IAA0BF,EAAgB9D,EAAQ3wR,OAAS,GAAK6F,EAAQnE,WAAamE,EAAQvD,aAAe,GAAKK,EAAU3C,OAC1Uw0R,EAAeD,GACXE,EAAgB9D,EAAQ3wR,OAAS00R,EAAmB/D,EAAQzwR,SAAWa,GAAS0zR,EAAgB12T,IAChGz6C,GAAS,GAGVA,CACV,CwSuKwBsxW,CAA0B,CACvBhvR,UAAWA,EACXC,QAASA,EACTxlC,aAAcA,EACdtC,WAAYA,EACZ0tE,iBAAkBA,EAClBC,eAAgBA,EAChBE,OAAQioP,EACRQ,YAAaP,EACbnxV,IAAKA,EACL4U,IAAKA,EACLm8U,uBAAwBA,UAK/Bv+O,GAAc4+O,IAAqBR,IAChC1tR,EAAUljE,GAAOgxV,IAAkBC,IAK9C,GAER,GA5LL,sCA6LI,SAAyBH,GACrB,OAAO3zW,KAAK+0W,sBAAsBpB,EACrC,GA/LL,2CAgMI,SAA8BpmP,EAAaxtE,GAsBvC,IAtBkD,WAC9Ci1T,EAAiC,SAAC16N,EAAc26N,GAChD,IACIn4T,EADA29F,EAAiB,EAAKtmB,cAAcp0E,UAAU6U,OAAO0lF,IAErDzrF,EAAAA,EAAAA,IAAW4rF,KACX39F,EAAW29F,EAAeltB,IAS9B,IAPA,IAAI2nP,EAA4B59N,GAAYx6F,GACxC09F,GAAez2I,EAAAA,EAAAA,IAAIg8C,EAAUk1T,GAAe/uT,OAAO,SAAAlvC,GAInD,OADIA,EADA+G,EAGP,IACQpV,EAAI,EAAGA,EAAIusW,EAA0Bv0W,OAAQgI,IAClD,GAAIgvI,GAAiB6C,EAAc06N,EAA0BvsW,IACzD,OAAO,EAGf,OAAO,CACV,EACGnF,GAAS,EACJmF,EAAI,EAAGA,EAAIo3C,EAAUp/C,OAAQgI,IAAK,CAGvC,KADAnF,EAASwxW,EADUj1T,EAAUp3C,GAAGvP,KACsBuP,IAElD,OAAO,CAEd,CACD,OAAOnF,CACV,GA9NL,uCA+NI,SAA0B+pH,EAAa1qG,EAAK4U,EAAK8oB,EAActC,EAAYC,GACvE,IACoB8xF,EAChBziB,EADAyiB,eAGqBmF,EACrB5nB,EADA4nB,oBAGQrpB,EACRyB,EADAzB,OAEAtoH,GAAS,EACT2xW,EAAuB5nP,EAAYznC,UACnCsvR,EAAqB7nP,EAAYxnC,QACjCsvR,EAAsB1lO,KAC1B,GAAI7jB,GxS7O4B,SAAChmC,EAAWC,EAASxlC,EAActC,GACvE,IAAIq3T,EAAmBxvR,EAAUlE,WAC7B2zR,EAAiBxvR,EAAQnE,WAC7B,OAAO0zR,GAAoB/0T,GAAgBg1T,GAAkBt3T,GAAcs3T,GAAkBh1T,GAAgBg1T,GAAkBt3T,GAAcq3T,GAAoBr3T,GAAcq3T,GAAoB/0T,CACtM,CwSyOqBi1T,CAA2BL,EAAsBC,EAAoB70T,EAActC,GAAa,CAC1G,IAAI,EAAqB+zT,GAAoBnvV,EAAK4U,GAAlD,eAAKw6U,EAAL,KAAcC,EAAd,KACArvV,EAAMovV,EACNx6U,EAAM,IAAI30B,KAAKovW,EAAQx8S,UAAYy4D,GAAK,UAC3C,CAgBD,OAfI6hB,IAAmBqlO,EAAoB7gO,sBAAsBxE,KAC7DxsI,EAAS4xW,EAAqBvyV,GAAOsyV,GAAwB19U,GAE7Dj0B,GAAU6xW,EAAoB7gO,sBAAsBxE,KACpDxsI,EAAS6xW,EAAoBI,cAAc,CACvCrtW,KAAM4nI,EACNrd,UAAWwiB,EACX54G,MAAO44U,EACPjrW,IAAKkrW,EACLvyV,IAAKA,EACL4U,IAAKA,EACLymB,eAAgBA,EAChByyF,0BAA2B3wI,KAAKw0H,mBAAmBkhP,6BAA6BP,EAAsB5nP,EAAYsF,mBAAmB,MAGtIrvH,CACV,GAlQL,sCAmQI,SAAyBmwW,EAAeN,GAEpC,OADoBrzW,KAAK21W,oBAAoBhC,EAAeN,GACvCtvW,KAAI,SAAA2gK,GAIrB,OADIA,EADAzvC,cAGP,GACJ,GA3QL,iCA4QI,SAAoB0+O,EAAeN,GAC/B,IAAIjzI,EAAiBpgO,KAAK41W,yBAAyBjC,GACnD,OAAO1+Q,GAAMo+Q,GAAe74U,OAAO4lM,GAAgB1yJ,SACtD,GA/QL,sCAgRI,SAAyBimS,EAAeN,GACpC,IAAIjzI,EAAiBpgO,KAAK61W,+BAA+BlC,GACzD,OAAO1+Q,GAAMo+Q,GAAe74U,OAAO4lM,GAAgB1yJ,UAAU3pE,KAAI,SAAA+hJ,GAI7D,OADIA,EADA7wB,cAGP,GACJ,KAxRL,KA0Ra6gP,GAAb,8IACI,WACI,OAAO7C,EACV,GAHL,qBAII,WACI,OAAOjzW,KAAK5C,QAAQ2iD,SACvB,GANL,oBAOI,SAAOszT,GAAe,WACd0C,EAAS5nP,GAAK,QACd6nP,EAAgCC,GAA2Bj2W,KAAKikF,UAChE2vR,EAAyBoC,GAAiC,eAAiBh2W,KAAKk2W,cAChFC,GAAqBn2W,KAAKuzW,iBAC1B6C,EAAyBp2W,KAAKmgD,iBAAmBg2T,EACjDE,EAAcr2W,KAAKs2W,iBAAiBC,4BAA4Bv2W,KAAK4rH,gBACrE+nP,EAAgB,GA4BpB,OA3BiB3zW,KAAKs2W,iBAAiBE,yBAC5B91W,SAAQ,SAAAkE,GACf,IACgB4zI,EACZ5zI,EADA4zI,WAEAi+N,EAAiB7xW,EAAKkhF,UACtB4wR,EAAe,IAAI5zW,KAAKyG,KAAKsZ,IAAIje,EAAKmhF,QAASswR,IAC/C91T,EAAey1T,EAAgCS,EAAe70R,WAAa,EAAK+pC,iBAChF1tE,EAAa+3T,EAAgCz1T,EAAek2T,EAAej0R,aAAe,IAAMk0R,EAAeD,GAAkBV,EAAS,EAAKnqP,eAC/I7rE,EAAY,EAAK42T,6BAA6Bn+N,GAC9Co+N,EAAiB,EAAKN,iBAAiBO,oBAAoBr+N,GAC3Ds+N,EAA2BX,KAAuBC,GAA0BQ,EAChFjD,EAAcvzW,KAAK,CACfk0W,oBAAoB,EACpB/zT,aAAcA,EACdtC,WAAYA,EACZ0tE,iBAAkB,EAAKA,iBACvBC,eAAgB,EAAKA,eACrB/oG,IAAK4zV,EACLh/U,IAAKi/U,EACLjD,4BAA6Bn0N,GAAe,EAAKr7D,UACjD6nC,OAAQgrP,EACR/2T,UAAWA,EACX7B,eAAgB,EAAKA,eACrB01T,uBAAwBA,GAE/B,IACM5zW,KAAKwzW,yBAAyB,CACjCG,cAAeA,EACfhlR,WAAY3uF,KAAK2uF,YAClB0kR,EACN,GA9CL,iCA+CI,SAAoB9sN,EAAO8sN,GAAe,WAEnBM,EAEfptN,EAFAotN,cACYhlR,EACZ43D,EADA53D,WAEAooR,EAAkB,GAClBC,EAAgB3D,EAsBpB,OArBoB1kR,EAAa,IAE7BqoR,EAAgBA,EAAcx8U,QAAO,SAAAmsH,GAIjC,IAHA,IACoB1xB,EAChB0xB,EADA1xB,eAEKtsH,EAAI,EAAGA,EAAIgrW,EAAchzW,SAAUgI,EAAG,CAC3C,IACeo3C,EACX4zT,EAAchrW,GADdo3C,UAEJ,GAAI,EAAKm0T,8BAA8Bj/O,EAAgBl1E,GACnD,OAAO,CAEd,CACJ,KAEL4zT,EAAcjzW,SAAQ,SAAAisC,GAClBoqU,EAAgBp2W,QAAUo2W,EAAgB32W,KAAK,MAC/C,IAAIo6B,EAAS,EAAKo7U,yBAAyBjpU,GAC3CoqU,EAAgB32W,KAAKo6B,EACxB,IACMy6D,GAAM+hR,GAAex8U,OAAOu8U,GAAiBrpS,SACvD,GA5EL,mCA6EI,SAAsBgmS,EAAUL,GAC5B,OAAOrzW,KAAKi3W,yBAAyB,CACjCtrP,iBAAkB3rH,KAAK2rH,iBACvBC,eAAgB5rH,KAAK4rH,gBACtBynP,GAAe1yW,OAAS,CAC9B,GAlFL,0CAmFI,SAA6B63I,GACzB,IAAI0+N,EAAYl3W,KAAKs2W,iBAAiBa,cAAc3+N,GACpD,OnQ/F8B,SAAC6C,EAAiBt7F,EAAW1B,GAC/D,IAAKA,IAAWA,EAAO19C,OACnB,OAAO06I,EAEX,IAAI+7N,EAAa,CAAC,EACdC,EAAuB,GAoC3B,OAnCAh5T,EAAO39C,SAAQ,SAAA60F,IACX1oC,EAAAA,EAAAA,IAAK0oC,GAAO,SAACn8F,EAAM8E,GACfk5W,EAAWh+W,GAAQ8E,CACtB,GACJ,IACkBm9I,EAAgB7gH,QAAO,SAAAkqI,GACtC,IACUtrK,EACNsrK,EADAtrK,KAEJ,OAAOi1D,EAAAA,EAAAA,IAAU+oT,EAAWh+W,GAC/B,IACYsH,SAAQ,SAAApG,GAAI,OAAI+8W,EAAqBj3W,MAAKqlD,EAAAA,GAAAA,GAAO,CAAC,EAAGnrD,GAAzC,IACzB+8W,EAAqB32W,SAAQ,SAAA42W,GACzB,IACWpxT,EAGPoxT,EAHApxT,MACM5rD,EAENg9W,EAFAh9W,KACMggJ,EACNg9N,EADAl+W,KAEA0jD,EAAW68F,GAAgB55F,EAAW,CAACu6F,IAAe,IAAM,CAAC,EAC7DvC,EAAYD,GAAah7F,GACzB6+K,EAAgB,GAChB3gF,EAAe,GACnB38F,EAAO7jB,QAAO,SAAA+6D,GAAK,OAAIlnC,EAAAA,EAAAA,IAAUknC,EAAM+kD,GAApB,IAAoC55I,SAAQ,SAAA60F,IAC3D1oC,EAAAA,EAAAA,IAAK0oC,GAAO,SAACn8F,EAAM8E,GACf,IAAKy9N,EAAcnhM,QAAO,SAAA51B,GAAI,OAAIA,EAAKmZ,KAAO7f,GAAS0G,EAAKmzI,KAAe3+I,CAA7C,IAAmDuH,OAAQ,CACrF,IAAI42W,EAAerxT,EAAM1rB,QAAO,SAAA51B,GAAI,OAAIA,EAAKmZ,KAAO7f,CAAhB,IAChCs5W,EAAcl9W,EAAKkgC,QAAO,SAAA51B,GAAI,OAAIA,EAAKmzI,KAAe75I,CAAxB,IAClCy9N,EAAcv7N,KAAd,MAAAu7N,GAAa,QAAS47I,IACtBv8N,EAAa56I,KAAb,MAAA46I,GAAY,QAASw8N,GACxB,CACJ,GACJ,IACDF,EAAgBpxT,MAAQy1K,EACxB27I,EAAgBh9W,KAAO0gJ,CAC1B,IACMq8N,CACV,CmQqDcI,CAAyBz3W,KAAKq7I,gBAAiBr7I,KAAK+/C,UAAW,CAACm3T,GAC1E,KAtFL,GAAsDhE,IC/TlDD,GACS,UADTA,GAEU,WAEDyE,GAAb,WACI,WAAYt6W,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAKunG,WAAavnG,KAAK5C,QAAQmqG,WAC/BvnG,KAAKm0H,cAAgBn0H,KAAK5C,QAAQ+2H,cAClCn0H,KAAKw0H,mBAAqBx0H,KAAK5C,QAAQo3H,mBACvCx0H,KAAK23W,sBAAwB,IAAIpF,GAAsBvyW,KAAKunG,YAC5DvnG,KAAK43W,oBACR,CARL,oCASI,WACI,OAAO53W,KAAK23W,sBAAsBryM,OACrC,GAXL,4BAYI,WACI,QAAStlK,KAAKunG,UACjB,GAdL,8BAeI,WACI,OAAOvnG,KAAK5C,QAAQy6W,wBAA0B5E,GAA2BA,EAC5E,GAjBL,+BAkBI,WAII,OAHKjzW,KAAK83W,gBAAkB93W,KAAK83W,eAAel9F,eAAiB56Q,KAAK+3W,oBAClE/3W,KAAK43W,qBAEF53W,KAAK83W,cACf,GAvBL,gCAwBI,WACI,IAAInE,EAAgB,CAChB5zT,UAAW//C,KAAK5C,QAAQ2iD,UACxBo0E,cAAen0H,KAAKm0H,cACpB5zE,aAAcvgD,KAAK5C,QAAQmjD,aAC3BtC,WAAYj+C,KAAK5C,QAAQ6gD,WACzBkC,gBAAiBngD,KAAK5C,QAAQ+iD,gBAC9Bq0E,mBAAoBx0H,KAAK5C,QAAQo3H,mBACjC6mB,gBAAiBr7I,KAAK5C,QAAQ46W,mBAC9BzE,iBAAkBvzW,KAAK5C,QAAQ66W,oBAC/Bh0R,SAAUjkF,KAAK5C,QAAQ86W,YACvBhC,cAAel2W,KAAK5C,QAAQ+6W,iBAC5B7E,UAAWtzW,KAAK5C,QAAQg7W,aACxBzpR,WAAY3uF,KAAK5C,QAAQ+7I,cACzBm9N,iBAAkBt2W,KAAK5C,QAAQi7W,oBAC/Bh7T,gBAAiBr9C,KAAK5C,QAAQigD,iBAElCr9C,KAAK83W,eAAiB93W,KAAK+3W,qBAAuB9E,GAA2B,IAAI6C,GAAiCnC,GAAiB,IAAIT,GAA8BS,EACxK,GA1CL,2BA2CI,SAAcpsQ,GACVvnG,KAAKunG,WAAaA,EAClBvnG,KAAK43W,qBACL53W,KAAK23W,sBAAsBnF,cAAcxyW,KAAKunG,WACjD,GA/CL,iCAgDI,SAAoB4sB,GAChBn0H,KAAKm0H,cAAgBA,EACrBn0H,KAAK43W,oBACR,GAnDL,oBAoDI,SAAOvE,GACH,OAAOrzW,KAAKs4W,oBAAoB99U,OAAO64U,EAC1C,GAtDL,0BAuDI,SAAaxwV,EAAK4U,EAAKqoB,EAAiBlC,GACpC,GAAK59C,KAAKunG,YAAeznD,EAAzB,CAGA,IAAIogL,EAAmBlgO,KAAKunG,WAAW/sE,SACnCA,EAAS+9U,GAAoB,CAC7Br4I,iBAAkBA,EAClB/rG,cAAen0H,KAAKm0H,cACpBtxG,IAAKA,EACL4U,IAAKA,EACLmmB,wBAAyBA,EACzByG,qBAAqBtkD,EAAAA,GAAAA,KAASskD,sBAElCrkD,KAAKunG,WAAW/sE,OAAOA,EAVtB,CAWJ,GArEL,mCAsEI,SAAsBmhM,EAAe03I,GACjC,OAAOrzW,KAAKs4W,oBAAoBE,sBAAsB78I,EAAe03I,EACxE,GAxEL,sCAyEI,SAAyBoF,EAAcpF,GACnC,OAAOrzW,KAAKs4W,oBAAoB9E,yBAAyBiF,EAAcpF,EAC1E,GA3EL,yCA4EI,SAA4Bh+O,EAAUvvC,GAClC,OAAO9lF,KAAKs4W,oBAAoBI,4BAA4BrjP,EAAUvvC,EACzE,GA9EL,wBA+EI,WACI9lF,KAAK23W,sBAAsBjF,YAC9B,GAjFL,mCAkFI,WACI,OAAO1yW,KAAK23W,sBAAsB/E,mBACrC,GApFL,uCAqFI,WACI,OAAO5yW,KAAK23W,sBAAsBlF,uBACrC,GAvFL,iBAwFI,SAAIx9O,GACA,OAAOj1H,KAAK23W,sBAAsB5pU,IAAIknF,EACzC,GA1FL,oBA2FI,SAAOt9G,EAAQs9G,GACX,OAAOj1H,KAAK23W,sBAAsB3rU,OAAOr0B,EAAQs9G,EACpD,GA7FL,oBA8FI,SAAOA,GACH,OAAOj1H,KAAK23W,sBAAsBj6W,OAAOu3H,EAC5C,GAhGL,qBAiGI,WACIj1H,KAAK23W,sBAAsB7pL,SAC9B,KAnGL,KCCI6qL,GAAsB,aAEtBC,GAAyBp1N,GAAaywE,GADjB,cAGrB4kJ,GAAW1sT,GAAAA,EAAAA,QAAc,CACzBpJ,KAAM,WACF/iD,KAAK8rJ,cAAgB,EACrB9rJ,KAAK84W,kBACR,EACDA,iBAAkB,WACd94W,KAAK+4W,kBAAoB,KACzB/4W,KAAKg5W,qBARU,GASlB,EACDjrU,IAAK,WACG/tC,KAAK8rJ,eAAiB,GACtBvtF,EAAAA,EAAAA,GAAgB1B,EAAAA,EAAAA,cAA0B+7S,GAAwB54W,KAAK+xT,cAAcj1T,KAAKkD,OAE9FA,KAAK8rJ,eACR,EACDimK,cAAe,SAAS9oT,GACpB,IAAIq6D,EAAYr6D,EAAEq6D,WAAaxgE,KAAKygE,MAChC01S,EAAoB31S,EAAYtjE,KAAKg5W,sBACvBC,EAAoB,IACPA,EApBhB,KAsBXrhS,GAAU,CACNvyE,KAAMszW,GACNhhW,OAAQ8gE,GAAoBz4E,KAAK+4W,kBAAmB9vW,EAAE0O,QACtDuqD,cAAej5D,IAEnBjJ,KAAK84W,qBAEL94W,KAAK+4W,kBAAoB9vW,EAAE0O,OAC3B3X,KAAKg5W,oBAAsB11S,EAElC,EACD5lE,OAAQ,WACJsC,KAAK8rJ,gBACD9rJ,KAAK8rJ,eAAiB,IACtB9rJ,KAAK84W,mBACLv6S,EAAAA,EAAAA,IAAiB1B,EAAAA,EAAAA,cAA0B+7S,IAElD,IAELpoS,GAAcmoS,GAAqB,IAAIE,IC7ChC,IAAIK,GAAoB,CAC3Bt0U,KAAM,kBACNH,IAAK,iBACLC,MAAO,mBACPC,OAAQ,qBAsFL,ICrGHvf,GAAY,CAAC,UAAW,SAAU,UAsBlC+zV,GAAkB,CAClBv0U,MAAO,EACPH,KAAM,EACNu3K,OAAQ,EACRt3K,MAAO,EACPC,OAAQ,GAERy0U,GAA2B,CAC3B30U,IAAK,CACDhC,GAAI,gBACJoiB,GAAI,aACJkpJ,UAAW,YAEfppK,OAAQ,CACJlC,GAAI,aACJoiB,GAAI,gBACJkpJ,UAAW,YAEfrpK,MAAO,CACHjC,GAAI,cACJoiB,GAAI,eACJkpJ,UAAW,YAEfnpK,KAAM,CACFnC,GAAI,eACJoiB,GAAI,cACJkpJ,UAAW,aAGfsrK,GAAkC,CAClCp9W,EAAG,GACHmoB,EAAG,IAEDk1V,GAAAA,SAAAA,iCACF,WAAYtiW,GAAM,sBACd,IACa+tC,EAGT/tC,EAHA+tC,QACQptC,EAERX,EAFAW,OACQ2kT,EACRtlT,EADAslT,OACM1+T,GAAO6pB,EAAAA,GAAAA,GAA8BzQ,EAAMoO,IALvC,OAMd,cAAMxnB,IACDo4L,QAASj9K,EAAAA,EAAAA,GAAS,CAAC,EAAG,EAAKi9K,OAAQ,CACpCjxI,QAASA,EACTptC,OAAQA,IAEZ,EAAK4hW,QAAUj9C,EACf,EAAKk9C,mBAAgB,EACrB,EAAKp8J,eAAe,EAAKpnB,OAAOxrL,UAblB,CAcjB,+CACD,WACQxK,KAAKg2L,OAAOjxI,SACZ/kD,KAAK48M,UAAUt3K,IAAI,CACfb,IAAK,EACLG,KAAM,GAGjB,6BACD,SAAajtB,GACT3X,KAAKg2L,OAAOr+K,OAASA,EACrB3X,KAAKo9M,eAAep9M,KAAKg2L,OAAOxrL,SACnC,sCACD,WAA0B,sCAC1B,WACI,IAAIyC,GAAS+jD,EAAAA,GAAAA,cAAahxD,KAAKs9M,UAAUrwM,QAAU,IAE5CwsW,EAEHxsW,EAFAhR,EACGy9W,EACHzsW,EADAmX,EAEAu1V,EAAiB35W,KAAK45W,kBACtBC,EAAmB75W,KAAK85W,oBAC5B,GAAIH,GAAkBE,EAAkB,CACpC,IAIIE,GAJkB/5W,KAAKg6W,oBACI,EAAI,GAAKb,GAAgBn5W,KAAKw5W,iBAC7CG,EAAiB7uS,GAAU9qE,KAAKu5W,SAAW3uS,GAAS5qE,KAAKu5W,UAC/Cv5W,KAAKi6W,uBAAuBj6W,KAAKw5W,gBAE3DG,EAAiBD,GAAWK,EAAcN,GAAWM,CACxD,CACD,OAAOt0T,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKs9M,UAAW,CAC9BrwM,OAAQwsW,EAAU,IAAMC,GAE/B,uCACD,SAAuBr+D,GACnB,IAAI5sI,EAAczuK,KAAK28M,UAAUr3K,IAAI4zU,GAAkB79D,IACvD,OAAOvjR,SAAS22I,IAAgB,CACnC,iCACD,WACI,IAAIhsI,EAAK8zK,GAAAA,MAAAA,eAAmCv2M,KAAKs9M,UAAU76K,IACvDoiB,EAAK0xJ,GAAAA,MAAAA,eAAmCv2M,KAAKs9M,UAAUz4J,IAC3D,OAAOpiB,EAAGxmC,IAAM4oD,EAAG5oD,GAAKwmC,EAAGre,IAAMygC,EAAGzgC,CACvC,gCACD,WACI,IAAIi3R,EAAOvjS,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKw5W,cACjF,MAAO,QAAUn+D,GAAQ,WAAaA,CACzC,kCACD,WACI,IAAIA,EAAOvjS,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKw5W,cACjF,MAAO,SAAWn+D,GAAQ,UAAYA,CACzC,gCACD,SAAgB7wS,GACZ,IAAIi4B,EAAK8zK,GAAAA,MAAAA,eAAmC/rM,EAASi4B,IACjDoiB,EAAK0xJ,GAAAA,MAAAA,eAAmC/rM,EAASq6C,IACjDq1T,EAAaf,GAAgB12U,EAAGxmC,KAAOk9W,GAAgBt0T,EAAG5oD,IAAMk9W,GAAgB12U,EAAGre,KAAO+0V,GAAgBt0T,EAAGzgC,IAAM,EAAI,EAG3H,OAFuB7a,KAAKD,IAAI6vW,GAAgB12U,EAAGxmC,GAAKi+W,EAAaf,GAAgBt0T,EAAG5oD,IACnEsN,KAAKD,IAAI6vW,GAAgB12U,EAAGre,GAAK81V,EAAaf,GAAgBt0T,EAAGzgC,IAC3CygC,EAAG5oD,EAAI4oD,EAAGzgC,CACxD,mCACD,SAAmBu5L,GACf,IAIIY,EAJAO,EAAwB,CACxBjR,GAAI7tM,KAAKg2L,OAAOr+K,OAChBu2L,eAAgBmrK,IASpB,OALI96J,GADAlwJ,EAAAA,EAAAA,IAAUsvJ,IACOl4J,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAGq5J,EAAuB9+M,KAAK++M,kBAAkBpB,IAE/DmB,EAErB9+M,KAAKw5W,cAAgBx5W,KAAKm6W,gBAAgB57J,GACnCA,CACV,kCACD,SAAkBZ,GACd,OAAIjtJ,EAAAA,EAAAA,IAASitJ,IACFl4J,EAAAA,GAAAA,GAAO,CAAC,EAAG2zT,GAAyBz7J,IAExCA,CACV,OA7FC27J,CAAkCp9J,ICXpCk+J,GAAoB,CACpBx1U,KAAM,QACNH,IAAK,SACLC,MAAO,OACPC,OAAQ,MACRq3K,OAAQ,UAERq+J,GAAuB,SAAS5hU,GAChC,OAAOp4B,EAAAA,EAAAA,IAASo4B,GAAeA,EAAYr/C,KAAOq/C,CACrD,EACG8kH,GAAe,SAAS9tG,EAAMjgB,GAC9B,IAAIiJ,EAAcgX,EAAK9iB,OAAO6C,GAC9B,OAAO6qU,GAAqB5hU,EAC/B,EAKGmnI,GAAc,SAASnwH,EAAMr2D,GAC7B,IAAI,EAKAq2D,EAAK9iB,SAJGh1B,EADZ,EACIA,OACSotC,EAFb,EAEIA,QACUv/B,EAHd,EAGIA,SACW80V,EAJf,EAIIA,UAEAC,GAAa7pT,EAAAA,EAAAA,IAAS/4C,GACtB6iW,EAAwBz1T,GAAW,SAAW3rD,EAC9C2H,EAAQy5W,EAAwB,KAAOj9M,GAAa9tG,EAAM,GAAGx/C,OAAO7W,EAAM,UAI9E,GAHIohX,GAAyBF,GACzBh7V,GAAAA,IAAW,SAEVve,IAASykB,EAAd,CAGA,IAAIhnB,EAAYglJ,GAAaziJ,EAAO0uD,EAAK+uG,MACrC34I,EAAS4pC,EAAKqxG,cAAc,WAC5B,IAAI9zI,EAtBQ,SAASyiC,EAAMjgB,GAC/B,IAAIiJ,EAAcgX,EAAK9iB,OAAO6C,GAC9B,OAAOnvB,EAAAA,EAAAA,IAASo4B,IAAgBA,EAAYzrB,KAC/C,CAmBmBytV,CAAchrT,EAAMr2D,EAAO,SACvC4G,KAAK06W,uBACD1tV,EACAhtB,KAAK26W,UAAUvhX,GAAQm8B,YAAY,WAC/Bk6B,EAAKr2D,IACR,GAAG4zB,GAEJyiC,EAAKr2D,IAEZ,EAAC0D,KAAK2yD,GAAO,CACVqxF,qBAAsB,WAEtBhgJ,EAAU,SAASmI,GACnB4c,EAAO,CACH9kB,MAAOkI,EACP0O,OAAQo5D,GAAE9nE,EAAEu2D,gBAEnB,EACGo7S,EAAqB,IAAMxhX,EAAO,eACtC,GAAImhX,EACA9qT,EAAKmrT,GAAsB95W,EAC3By9D,EAAAA,EAAAA,GAAgB1B,EAAAA,EAAAA,cAA0Br+D,EAAWmZ,EAAQ7W,OAC1D,CACH,IAAIw3R,EAAgBz2I,GAAiB9wE,GAAEp5D,IACvC83C,EAAKmrT,QAAsB,EAC3Br8S,EAAAA,EAAAA,GAAgB+5N,EAAe95R,EAAWsC,EAC7C,CA7BA,CA8BJ,EACG+5W,GAAc,SAASprT,EAAM93C,EAAQve,EAAM2H,GAC3C,IAAIvC,EAAYuC,GAASw8J,GAAa9tG,EAAMr2D,EAAO,SACnD,GAAKoF,EAAL,CAGAA,EAAYglJ,GAAahlJ,EAAWixD,EAAK+uG,MACzC,IAAIo8M,EAAqB,IAAMxhX,EAAO,eAClCq2D,EAAKmrT,GACLr8S,EAAAA,EAAAA,IAAiB1B,EAAAA,EAAAA,cAA0Br+D,EAAWmZ,EAAQ83C,EAAKmrT,IAEnEr8S,EAAAA,EAAAA,IAAiBsjF,GAAiB9wE,GAAEp5D,IAAUnZ,EANjD,CAQJ,EACGs8W,GAAU/mI,GAAAA,QAAc,CACxBn2E,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BxqC,YAAQ,EACRotC,SAAS,EACTv6C,UAAUi7C,EAAAA,GAAAA,GAAO,CAAC,EAAG2zT,GAAyBz0U,QAC9C+6K,oBAAoB,EACpBn0D,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,OACNmE,KAAM,EACNguG,GAAI,GAERxpC,KAAM,CACF3oE,KAAM,OACNmE,KAAM,EACNguG,GAAI,IAGZi9H,WAAW,EACX9jN,MAAO,OACPnE,OAAQ,OACRsqI,aAAa,EACb+9E,eAAe,EACf9C,YAAY,EACZzxB,oBAAoB,EACpBy6J,cAAe,GACfhB,YAAa,EACbt9J,qBAAqB,GAE5B,EACD3+C,qBAAsB,WAClB,MAAO,CAAC,CACJpnF,OAAQ,CACJj9E,SAAU,OAEd2D,QAAS,CACL29W,cAAe,CACX7sK,eAAgB,CACZjyM,EAAG,GACHmoB,GAAI,IAER2pL,UAAW,SAGpB,CACCr3H,OAAQ,WACJ,QAAQ51B,EAAAA,EAAAA,KACX,EACD1jD,QAAS,CACLmuJ,UAAW,OAGtB,EACDhoD,MAAO,WACH,IAAIsF,EACJ7oG,KAAKmiD,WACLniD,KAAKg7W,eACLh7W,KAAK26W,UAAY,CAAC,EAClB36W,KAAKg6D,WAAWoU,SA5IJ,cA6IZpuE,KAAKq8M,WAAWjuI,SA5II,sBA6IpB,IAAI6sS,EAAgB,QAAUpyQ,EAAe7oG,KAAK2sC,OAAO,uBAAoB,IAAWk8D,OAAe,EAASA,EAAaloG,OAC7HX,KAAK86M,QAAQ,OAAQmgK,EAAgB,SAAW,UACnD,EACDngS,QAAS,WACL96E,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC1B9X,KAAKk7W,cAAcl7W,KAAK2sC,OAAO,WAC/B3sC,KAAKyqP,eACR,EACDywH,cAAe,SAASvjW,GACpBkjW,GAAY76W,KAAM2X,EAAQ,QAC1BkjW,GAAY76W,KAAM2X,EAAQ,OAC7B,EACD8yO,cAAe,WACX7qE,GAAY5/K,KAAM,QAClB4/K,GAAY5/K,KAAM,OACrB,EACDg7W,aAAc,WACVh7W,KAAKu5W,QAAUxoS,GAAE,SAAS3C,SA7JR,oBA6JsCM,UAAU1uE,KAAK81O,kBAC1E,EACDp0B,qBAAsB,SAASz4M,GAC3B,OAAIjJ,KAAKm7W,gBAAgBlyW,IACdjJ,KAAKmiD,SAASl5C,EAG5B,EACDkyW,gBAAiB,SAASlyW,GACtB,OAAQ8nE,GAAE9nE,EAAE0O,QAAQm4D,QAAQ9vE,KAAK2sC,OAAO,WAAWhsC,MACtD,EACD+iN,SAAU,SAASn4D,GACXA,GAAaA,EAAU/zC,IAAM,kBAAoB+zC,EAAU/zC,KAC3D/xD,EAAAA,GAAAA,GAAO8lG,EAAU/zC,GAAI,CACjBhtG,SAAUxK,KAAKy5J,0BAGvBz5J,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACDgqM,eAAgB,WACZ9hN,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACD0/N,aAAc,WACVx3O,KAAKq8M,WAAWpuI,YAnLU,4BAmLgCjuE,KAAK2sC,OAAO,cACtE3sC,KAAKmiD,UACR,EACD8mK,gBAAiB,WACb,IAAImyJ,IAAyBtjW,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,KAAKA,UAAU,GACzF9X,KAAKmiD,WACLniD,KAAKq7W,uBAAuBD,GAC5Bp7W,KAAKwhN,SAASlF,cACjB,EACD++J,uBAAwB,SAASD,GAC7Bp7W,KAAKs7W,sBAAsBF,GAC3Bp7W,KAAKu7W,mBAAmBH,GACxB,IAAII,EAAkBx7W,KAAKy5J,wBACvBgiN,EAAiBllK,GAAAA,MAAoBv2M,KAAK81O,kBAAmB0lI,GAC7Dt7H,EAAelgP,KAAK07W,mBAAmBD,GAC3Cz7W,KAAK27W,qBAAqB,eAAiBz7H,GAC3ClgP,KAAK47W,oBAAoBH,EAAex/W,EAAEmxM,KAAMquK,EAAer3V,EAAEgpL,OAC5CptM,KAAK85W,qBAAuB95W,KAAK45W,oBAElD55W,KAAK67W,qBAAqB37H,EAEjC,EACDo7H,sBAAuB,SAASF,GAC5Bp7W,KAAKy6O,kBAAkB2gI,GACvBp7W,KAAK27W,qBAAqB,eAAiB37W,KAAKi3J,oBAAoBuiN,eACpEr2N,GAAKnjJ,KAAK81O,kBAAmB,CACzBlxM,KAAM,EACNH,IAAK,IAETzkC,KAAKu5W,QAAQj0U,IAAI,CACbb,IAAK,OACLC,MAAO,OACPC,OAAQ,OACRC,KAAM,QAEb,EACD22U,mBAAoB,SAASH,GACzB,GAAKp7W,KAAKs6L,YAAe8gL,EAAzB,CAGA,IAAIU,EAAoBvlK,GAAAA,UAAwBv2M,KAAK81O,kBAAmB91O,KAAKy5J,yBAC7E,GAAIqiN,EAAkB7/W,EAAEwwM,SAAW,GAAKzsM,KAAK85W,sBAAwBgC,EAAkB7/W,EAAEkxM,IAAK,CAC1F,IAAI4uK,EAAoBnxS,GAAS5qE,KAAK81O,mBAAqBgmI,EAAkB7/W,EAAEwwM,SAC/E5hI,GAAS7qE,KAAK81O,kBAAmBimI,EACpC,CACD,GAAID,EAAkB13V,EAAEqoL,SAAW,GAAKzsM,KAAK45W,oBAAsBkC,EAAkB13V,EAAE+oL,IAAK,CACxF,IAAI6uK,EAA0BlxS,GAAU9qE,KAAK81O,mBAAqBgmI,EAAkB13V,EAAEqoL,SAClFwvK,EAAwBnxS,GAAU9qE,KAAKs6L,YAAcwhL,EAAkB13V,EAAEqoL,SAC7E1hI,GAAU/qE,KAAK81O,kBAAmBkmI,GAClCjxS,GAAU/qE,KAAKs6L,WAAY2hL,EAC9B,CAXA,CAYJ,EACDxiN,sBAAuB,WACnB,OAAOz5J,KAAKi3J,oBAAoBwC,uBACnC,EACDquD,0BAA2B,WACvB,OAAO/2I,GAAE/wE,KAAKi3J,oBAAoBqmD,UAAUzP,IAAM7tM,KAAKmiD,WAC1D,EACDu5T,mBAAoB,SAAS/oV,GACzB,IAAIupV,EAAsBvpV,EAASvO,EAAEgpL,KACjC+uK,EAAwBxpV,EAAS12B,EAAEmxM,KACvC,OAAOptM,KAAK45W,mBAAqBsC,GAAuBl8W,KAAK85W,qBAAuBqC,GAAyBn8W,KAAKg6W,mBAAqBI,GAAkBp6W,KAAKi3J,oBAAoBuiN,eAAiBx5W,KAAKi3J,oBAAoBuiN,aAC/N,EACDmC,qBAAsB,SAASS,GAC3Bp8W,KAAKq8M,WAAWhuI,YAAY,yEAAyED,SAASguS,EACjH,EACDR,oBAAqB,SAASS,EAAqBC,GAC/Ct8W,KAAKq8M,WAAWpuI,YAAY,gCAAiCouS,GAAqBpuS,YAAY,8BAA+BquS,EAChI,EACDT,qBAAsB,SAASxgE,GAC3B,IAAIkhE,EAAY9xR,GAAgBzqF,KAAKu5W,QAAQ3/W,IAAI,IAC7C4iX,IAAcx8W,KAAK45W,gBAAgBv+D,GAAQkhE,EAAU/vV,OAAS+vV,EAAU5rV,OAC5E3wB,KAAKu5W,QAAQj0U,IAAI80U,GAAkB/+D,GAAOmhE,GAC1C,IAgBIC,EAhBA1tM,EAAO/uK,KAAK45W,gBAAgBv+D,GAAQ,OAAS,MAC7C3wO,EAAe1qE,KAAK45W,gBAAgBv+D,GAAQ,QAAU,SACtDz5J,EAAU7wE,GAAE/wE,KAAKi3J,oBAAoBqmD,UAAUzP,IAC/CrgF,EAAe+oF,GAAAA,OAAqB30D,IAAY,CAChDn9G,IAAK,EACLG,KAAM,GAEN83U,EAAgBnmK,GAAAA,OAAqBv2M,KAAK81O,mBAC1C6mI,EAAYJ,EAAU7xS,GACtBkyS,EAAkBF,EAAc3tM,GAChC02G,EAAch7L,GAAgBzqF,KAAK81O,kBAAkBl8O,IAAI,IAAI8wE,GAC7DokL,EAAiBthI,EAAauhD,GAC9BupH,EAAgB12I,EAAQhoJ,IAAI,GAC5By8J,EAAaiiI,IAAkBA,EAAcn8N,eAAiBsuB,GAAgB6tM,GAAe5tN,GAAgB,EAC7G7nD,EAAMtZ,KAAKkuB,IAAImlV,EAAiB9tH,GAChCr3N,EAAMluB,KAAKsZ,IAAI+5V,EAAkBn3F,EAAa32B,EAAiBz4F,GAG/DomN,EADA,UAAYz8W,KAAK2sC,OAAO,iBACR9pB,EAAM+5V,EACf,QAAU58W,KAAK2sC,OAAO,iBACblV,EAAMmlV,EAAkBD,GAEvB95V,EAAM4U,GAAO,EAAImlV,EAAkBD,EAAY,EAEpE,IAAIluM,EAAczuK,KAAKi3J,oBAAoBgjN,uBAAuB5+D,GAC9DwhE,EAAqBjhS,GAAa6gS,EAAgBhuM,EAAczuK,KAAK2sC,OAAO,eAAgB8hI,EAAag3G,EAAck3F,EAAY,EAAIluM,GAC3IzuK,KAAKu5W,QAAQj0U,IAAIypI,EAAM8tM,EAC1B,EACD7C,iBAAkB,WACd,OAAOh6W,KAAKi3J,oBAAoB+iN,kBACnC,EACDv/H,kBAAmB,SAASqiI,GACpBA,GACA98W,KAAKmiD,UAEZ,EACDsmK,6BAlNwB,WAmNpB,IAAI,EAGAzoN,KAAK2sC,SAFIoY,EADb,EACIA,QACQptC,EAFZ,EAEIA,OAEJ,OAAO8tC,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAKmiD,WAAY,CAC/BxqC,OAAQA,EACRotC,QAASA,EACTu3Q,OAAQt8T,KAAKu5W,SAEpB,EACD33J,wBA7NwB,WA8NpB5hN,KAAKi3J,oBAAsB,IAAIqiN,GAA0Bt5W,KAAKyoN,+BACjE,EACDkB,yBAA0B,WAClB3pN,KAAK2sC,OAAO,YACZ3sC,KAAKq8M,WAAW/2K,IAAI,CAChB3U,MAAO,OACPnE,OAAQ,QAGnB,EACDotV,gBAAiB,SAASv+D,GACtB,OAAOr7S,KAAKi3J,oBAAoB2iN,gBAAgBv+D,EACnD,EACDy+D,kBAAmB,SAASz+D,GACxB,OAAOr7S,KAAKi3J,oBAAoB6iN,kBAAkBz+D,EACrD,EACD0hE,mBAAoB,SAAS3jX,GACzBk8B,aAAat1B,KAAK26W,UAAUvhX,GAC/B,EACDshX,qBAAsB,WAClB16W,KAAK+8W,mBAAmB,QACxB/8W,KAAK+8W,mBAAmB,OAC3B,EACDzzM,OAAQ,WACJtpK,KAAKk7W,cAAcl7W,KAAK2sC,OAAO,WAC/B3sC,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,UAC7B,EACDgoJ,eAAgB,SAASliK,GACrB,OAAQA,EAAKxE,MACT,IAAK,gBACL,IAAK,cACD4G,KAAKmmN,kBACL,MACJ,IAAK,aACGvoN,EAAKM,OACL8B,KAAK2sC,OAAO,cAAc,GAE9B,MACJ,IAAK,SACD/uC,EAAKi9J,eAAiB76J,KAAKk7W,cAAct9W,EAAKi9J,eAC9C76J,KAAKi3J,oBAAoB+lN,aAAap/W,EAAKM,OAC3C8B,KAAKypK,cACL,MACJ,IAAK,YACL,IAAK,YACD,IAAIrwK,EAAOwE,EAAKxE,KAAK0nB,UAAU,EAAG,GAC9B/f,EAAQs5W,GAAqBz8W,EAAKi9J,eACtC76J,KAAKguE,OACL6sS,GAAY76W,KAAMA,KAAK2sC,OAAO,UAAWvzC,EAAM2H,GAC/C6+K,GAAY5/K,KAAM5G,GAClB,MACJ,IAAK,UACD4G,KAAK+8W,mBAAmBn/W,EAAKM,MAAQ,OAAS,QAC9C8B,KAAKmiD,SAASvkD,GACd,MACJ,QACIoC,KAAKmiD,SAASvkD,GAEzB,EACDkwE,KAAM,SAASn2D,GAIX,OAHIA,GACA3X,KAAK2sC,OAAO,SAAUh1B,GAEnB3X,KAAKmiD,UACf,IAELqwH,GAAkB,YAAasoM,IAC/B,UChZImC,GAAUnC,GAAAA,QAAgB,CAC1Bl9M,mBAAoB,WAChB,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B2yL,aAAc,GACdC,iBAAiB,EACjBH,kBAAkB,EAClBH,WAAW,EACX/kH,MAAO,KACPglH,cAAe,KACfC,gBAAiB,KACjBK,eAAgB,KAChBz0B,qBAAqB,EACrBC,uBAAuB,GAE9B,EACD1lI,QAAS,WACL96E,KAAKg6D,WAAWoU,SArBJ,cAsBZpuE,KAAKq8M,WAAWjuI,SArBI,sBAsBpBpuE,KAAKmiD,UACR,EACD81J,eAAgB,WACZj4M,KAAKmiD,WACLniD,KAAKk9W,WAAa,MAAQ,IAAIhxT,GAAAA,EAC9BlsD,KAAK81O,kBAAkB5nK,KAAK,CACxBnwD,GAAI/d,KAAKk9W,aAEbl9W,KAAKm9W,wBAAuB,EAC/B,EACDA,uBAAwB,SAAS9yJ,GAC7B,IAAIzoE,EAAU7wE,GAAE/wE,KAAK2sC,OAAO,WACxBj1B,EAAQ2yM,EAAUrqN,KAAKk9W,gBAAa,GACnCv5T,EAAAA,EAAAA,IAASi+F,EAAQhoJ,IAAI,KACtBoG,KAAK86M,QAAQ,cAAepjM,EAAOkqI,EAE1C,IAEL4wB,GAAkB,YAAayqM,IAC/B,UCtCIxvV,GAAU,KACV2vV,GAAuB,KAavBC,GAAgB,WACX5vV,KAGL2vV,KACA3vV,GAAU,KACb,EACM,SAASqgD,GAAK1wE,GAGjB,OAFAigX,KApBgB,SAASjgX,GAIzB,IAAIyzC,GAHJzzC,GAAUqoD,EAAAA,GAAAA,GAAO,CACbj7C,SAAU,OACXpN,IACmByzC,eACfzzC,EAAQyzC,QACf,IAAIysU,EAAWvsS,GAAE,SAAS5D,KAAKt8B,GAAS89B,SAASuJ,MACjDklS,GAAuB,WACnBE,EAAS5/W,QACZ,EACD+vB,GAAU,IAAIwvV,GAAQK,EAAUlgX,EACnC,CAUGmgX,CAAcngX,GACPqwB,GAAQqgD,MAClB,CCKD,IAEI0vS,GAA8Ch6N,GAAa3oF,GAAAA,MAAqB,0BAChF4iT,GAA8Cj6N,GAAa3oF,GAAAA,MAAqB,0BACvE6iT,GAAb,gJACI,WACI,OAAO19W,KAAKg6D,UACf,GAHL,0BAII,WACI,OAAOh6D,KAAK2sC,OAAO,OACtB,GANL,gCAOI,WACI,OAAO8Y,EAAAA,GAAAA,IAAO,kEAA4B,CACtCnrD,KAAM,CAAC,EACPk+I,YAAa,EACbn6F,OAAQ,GACRs/T,SAAU,CACNl5U,IAAK,EACLG,KAAM,EACNjU,MAAO,EACPnE,OAAQ,GAEZoxV,WAAW,EACXC,aAAa,EACbC,QAAS,KACTpgL,WAAW,EACX92K,UAAW,WACXm3V,gBAAiB,CACb5xM,iBAAiB,GAErB6xM,WAAY,EACZC,UAAW,EACXC,cAAc,GAErB,GA9BL,4BA+BI,SAAeC,EAASvgX,GACpB,IAAI8jB,EAAW1hB,KAAK2sC,OAAO,YACvBjrB,GACAA,EAASqrC,KAAKoxT,EAASvgX,EAE9B,GApCL,oBAqCI,SAAOwgX,GACH,IAAI18V,EAAW1hB,KAAK2sC,OAAO,YAC3B,GAAIjrB,EACA,OAAOA,EAASqrC,KAAKh1C,MAAM2J,EAAU5J,UAE5C,GA1CL,4BA2CI,SAAela,GACX,OAAQA,EAAKxE,MACT,IAAK,OACL,IAAK,aACL,IAAK,WACL,IAAK,YACL,IAAK,cACL,IAAK,UACL,IAAK,cACL,IAAK,YACL,IAAK,YACL,IAAK,kBACL,IAAK,aACL,IAAK,YACD4G,KAAKypK,cACL,MACJ,IAAK,eACDzpK,KAAKq+W,yBACL,MACJ,SACI,6DAAqBzgX,GAEhC,GAjEL,wCAkEI,WACI,IAAI0gX,EAAiB,CACjBhvW,KAAMtP,KAAK2sC,OAAO,cAAgB,QAAU,OAC5CrnC,KAAM,GACNiwI,KAAMv1I,KAAK2sC,OAAO,cAAgB,OAAS,SAE3C4xU,EAAmBv+W,KAAK2sC,OAAO,oBAC/B5Q,EAAOwiV,EAAmBA,IAAqB,EACnD,MAAO,CACH3yM,QAAS5rK,KAAK2sC,OAAO,WAAa2xU,EAAet+W,KAAK2sC,OAAO,YA/ExC,aAgFrB/nB,UAAW,EACXoc,SAAUhhC,KAAKw+W,OAAO,gBACtBziV,KAAMA,EACNmwI,gBAAgB,EAEvB,GAjFL,sCAkFI,WACI,IAAI1/I,EAASjjB,KAAKoZ,MAAM3iB,KAAKw+W,OAAO,kBACpC,MAAO,CACH5yM,QAxFmB,aAyFnB5qI,SAAU,EACVpc,UAAW4H,EACXuP,KAAMvP,EACN0/I,gBAAgB,EAEvB,GA3FL,qBA4FI,YACI,uDACAlsK,KAAKy+W,6BACLz+W,KAAK0+W,oBACL1+W,KAAK2+W,4BACL3+W,KAAK4+W,qBACL5+W,KAAKq+W,yBACLr+W,KAAK8lR,mBACL9lR,KAAKg6D,WAAW1/D,KAAK,yBAA0B0F,KAAK2sC,OAAO,cAC3D,IAAIhmC,EAAOutH,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,OAAQ3sC,KAAKi1H,gBAC/Ej1H,KAAKg6D,WAAWkU,KAAK,QAASvnE,GAC9B3G,KAAKg6D,WAAWkU,KAAK,OAAQ,UAC7BluE,KAAK6+W,yBACL7+W,KAAK8+W,mBACL9+W,KAAK++W,mBACR,GA3GL,+BA4GI,WAAoB,WACZ3jO,EAAoB,CACpBE,SAAUt7I,KAAKi1H,eACfujB,WAAYx4I,KAAK2sC,OAAO,cACxB0R,OAAQr+C,KAAK2sC,OAAO,WAEJ3sC,KAAK2sC,OAAO,sBAAZ3sC,CAAmCo7I,GACzCxsF,MAAK,SAAAjmC,GAAK,OAAIA,GAAS,EAAKq2V,eAAe15U,IAAI,kBAAmB3c,EAAxD,GAC3B,GApHL,wCAqHI,WACI,IAAIg1V,EAAW39W,KAAK2sC,OAAO,YACvBqtB,EAAWh6D,KAAKg6D,WACpBmpF,GAAKnpF,EAAU,CACXv1B,IAAKk5U,EAASl5U,IACdG,KAAM+4U,EAAS/4U,OAEnBo1B,EAAS10B,IAAI,CACT3U,MAAOgtV,EAAShtV,MAAQ,EAAI,EAAIgtV,EAAShtV,MACzCnE,OAAQmxV,EAASnxV,OAAS,EAAI,EAAImxV,EAASnxV,QAElD,GAhIL,+BAiII,YACmBxsB,KAAK2sC,OAAO,YACdmhB,OAAS9tD,KAAK2sC,OAAO,eAC9B3sC,KAAKg6D,WAAWoU,S/Q7KS,iC+Q+KhC,GAtIL,uCAuII,WACI,IAAI6wS,EAAcj/W,KAAK2sC,OAAO,WACzBsyU,IAGLj/W,KAAKg6D,WAAWiU,Y/QxLe,oC+QwLwB,GAAMA,YAAYqnE,GAAkC2pO,IAAc,GACzHj/W,KAAKk/W,gCACR,GA9IL,2CA+II,WACI,IAAI54G,EAAQv1L,GAAE,SAAS3C,S/Q3LO,yC+Q2L4BO,SAAS3uE,KAAKg6D,YACpE+rB,EAAU/lF,KAAKm/W,cAEfC,EAAc,CADCh1P,GAAAA,OAA2B,kCACb,KAAMhC,GAAAA,OAAwBriC,EAAS,eAAgB,KAAMqiC,GAAAA,OAAwBriC,EAAS,SAASt5E,KAAK,IAC7I8xD,EAAAA,EAAAA,IAAiB+nM,EAAOk3G,IACxBj/S,EAAAA,EAAAA,GAAgB+nM,EAAOk3G,IAA6C,WAChE1vS,GAAK,CACDn2D,OAAQ2uP,EACRz1N,QAASuuU,GAEhB,IACD7gT,EAAAA,EAAAA,IAAiB+nM,EAAOm3G,IACxBl/S,EAAAA,EAAAA,GAAgB+nM,EAAOm3G,IAA6C,WDnKnEhwV,GAGEA,GAAQugD,OAAOpf,KAAKyuT,IAAe//V,WAF9B,IAAID,GAAAA,IAAUze,SCoKrB,GACJ,GA/JL,yBAgKI,WACI,IAAI4E,EAAS0wH,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,UAAW3sC,KAAKi1H,gBACpF,OAAIzxH,EACO,IAAIV,KAAKU,GAEbA,CACV,GAtKL,gCAuKI,WACIxD,KAAKg6D,WAAWiU,Y/QhNe,qC+QgN0BjuE,KAAK2sC,OAAO,UACxE,GAzKL,oCA0KI,WACI3sC,KAAKg6D,WAAWiU,YAAY0nE,KAAiC31I,KAAK2sC,OAAO,gBAC5E,GA5KL,oCA6KI,WACI,IAAIvkC,EAAO8rH,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,iBAAkB3sC,KAAKi1H,gBACrF0a,KAAyB6E,sBAAsBpsI,IAC/CpI,KAAKg6D,WAAWoU,S/Q1Nc,sC+Q4NrC,GAlLL,8BAmLI,WACIpuE,KAAKg6D,WAAWoU,SAASonE,GAA8Bx1I,KAAK2sC,OAAO,cACtE,GArLL,mCAsLI,WACI,IAAI5sC,EAAS,aAAeC,KAAK2sC,OAAO,aAAe3sC,KAAKq/W,2BAA6Br/W,KAAKs/W,6BAI9F,OAHKt/W,KAAKw+W,OAAO,qBACbz+W,EAAO8rK,cAAgB,UAEpB9rK,CACV,GA5LL,8BA6LI,WACQC,KAAK2sC,OAAO,gBACZ3sC,KAAKmjK,iBAAiBnjK,KAAKg6D,WAAY2xG,IAAWlmH,EAAAA,GAAAA,GAAOzlD,KAAKu/W,wBAAyBv/W,KAAK2sC,OAAO,oBAE1G,GAjML,2BAkMI,WACI,OAAO,CACV,KApML,GAAiC06H,IAsMjCmL,GAAkB,yBAA0BkrM,IACrC,IAAM8B,GAAb,gJACI,WACI,OAAOx/W,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAO2lI,IAC1C,GAHL,gCAII,WACI,OAAOnwF,EAAAA,GAAAA,IAAO,kEAA4B,CACtCg6T,6BAA8B,IAAIpiW,GAAAA,IAEzC,GARL,iCASI,SAAoB9V,EAAWmmD,GAC3BA,EAAKhtD,SAAQ,SAAAkE,GACT,IAAI4rO,EAAgBz/J,GAAE,SAAS3C,SAASwnE,IAAuDjnE,SAASpnE,GACxGwpE,GAAE,SAASpqE,KAAK,GAAGsJ,OAAOrL,EAAK8S,MAAO,MAAMi3D,SAAS6hK,GACrDz/J,GAAE,SAAS3C,SAASwnE,IAA6DjvI,KAAK/B,EAAK+wB,OAAOlpB,KAAK,OAAOkiE,SAAS6hK,EAC1H,GACJ,GAfL,qBAgBI,WAAU,YACN,uDACmCxwO,KAAK2sC,OAAO,+BAC/C8yU,CAA6Bz/W,KAAKi1H,gBAAgBrmE,MAAK,SAAAlB,GACnD,IAAI7iD,EAAS,EAAKmvD,WAAWh+D,KAAK,IAAIiU,OAAO2lI,KACzCruI,EAAYwpE,GAAE,SAAS3C,SAASwnE,IAAkDjnE,SAAS9jE,GAC/F,EAAK60W,oBAAoBn4W,EAAWmmD,EACvC,GACJ,KAxBL,GAAuCgwT,IC9OnCiC,GAAa,IAAI1vW,OAAOm6G,GAAAA,OAA2B,sBAAuB,MCN1E5oC,GAAgB,SAACpkF,EAAS62B,EAAM24F,EAAYgzP,GAC5C,IAAKxiX,EAAQyiX,aACT,OAAO5rV,EAEX,IAAIzwB,EAAS,IAAIV,KAAKmxB,GACtBzwB,EAAO07E,SAAS0tC,EAAWhrC,WAAYgrC,EAAWpqC,aAAcoqC,EAAWnqC,cAC3E,IACkBliC,EAKdnjD,EALAmjD,aACYtC,EAIZ7gD,EAJA6gD,WAEY6tE,EAEZ1uH,EAHA0iX,oBACIh0P,OAGJ+P,EAAU,IAAI/4H,KAAKmxB,GACnB0nG,EAAU,IAAI74H,KAAKmxB,GACvB4nG,EAAQ38C,SAAS3+B,EAAc,EAAG,EAAG,GACrCo7E,EAAQz8C,SAASjhC,EAAY,EAAG,EAAG,GACnC,IAAI8hU,EAAav8W,EAAOkyD,UAKxB,OAJwBkqT,EAAcG,EAAalkP,EAAQnmE,WAAaqqT,GAAcpkP,EAAQjmE,UAAYqqT,GAAclkP,EAAQnmE,WAAaqqT,EAAapkP,EAAQjmE,aAE9JlyD,EAAUsoH,EAAmB+P,EAAVF,GAEhBn4H,CACV,EACUw8W,GAAqB,SAAC5iX,EAAS0oF,EAAWm6R,GAArB,OAAyCz+R,GAAcpkF,EAAS0oF,EAAWm6R,GAAiB,EAA5F,EACrBC,GAAmB,SAAC9iX,EAAS2oF,EAASo6R,GAAnB,OAAqC3+R,GAAcpkF,EAAS2oF,EAASo6R,GAAe,EAApF,ECpB1BC,GAAyB,SAAAhjX,GACzB,IACgB4gX,EAMZ5gX,EANA4gX,WACWC,EAKX7gX,EALA6gX,UACkB3H,EAIlBl5W,EAJAk5W,iBACyB+J,EAGzBjjX,EAHAijX,wBACqBP,EAErB1iX,EAFA0iX,oBACY9/T,EACZ5iD,EADA4iD,WAEAsgU,EAAe/2W,KAAKo/D,MAAM03S,EAAwB57U,IAAMu5U,GACxDuC,EAAkBh3W,KAAKoZ,MAAM09V,EAAwBz7U,KAAOq5U,GAEhE,OADe3H,EAAiBkK,YAAYF,EAAcC,EAAiBT,EAAoBh0P,OAAQ9rE,EAE1G,EAoGUygU,GAA0B,SAAArjX,GACjC,IACyB0iX,EACrB1iX,EADA0iX,oBAEAO,EArCyB,SAACK,EAAiBC,GAC/C,IAAI/7U,EAAO87U,EAAgB97U,KAAO+7U,EAAsB/7U,KACpDH,EAAMi8U,EAAgBj8U,IAAMk8U,EAAsBl8U,IAClD9T,EAAQiU,EAAO,EAAI87U,EAAgB/vV,MAAQiU,EAAO87U,EAAgB/vV,MAClEnE,EAASiY,EAAM,EAAIi8U,EAAgBl0V,OAASiY,EAAMi8U,EAAgBl0V,OACtE,MAAO,CACHoY,KAAMr7B,KAAKkuB,IAAI,EAAGmN,GAClBH,IAAKl7B,KAAKkuB,IAAI,EAAGgN,GACjB9T,MAAOA,EACPnE,OAAQA,EAEf,CA0BiCo0V,CAA2BxjX,EAAQsjX,gBAAiBtjX,EAAQujX,uBACtFE,EA1BsB,SAAAzjX,GAC1B,IACyB0iX,EAGrB1iX,EAHA0iX,oBAC4BgB,EAE5B1jX,EAFA0jX,2BACaC,EACb3jX,EADA2jX,YAEAC,EAAelB,EAAoBh0P,SAAWg1P,EAA6B,CAACC,EAAYE,sBAAwBF,EAAYG,mBAE7GC,EACfrB,EADAqB,cAEA,EAGAH,EAAaG,EAAc1xG,UAAU0xG,EAAc5zB,aAF3CywB,EADZ,EACIxxV,OAIJ,MAAO,CACHyxV,UANJ,EAEIttV,MAKAqtV,WAAYA,EACZoD,eAJiBJ,EAAaG,EAAc1xG,UAAU9uQ,OAM7D,CAMkB0gX,CAAwBjkX,GACnCyiX,GAAgBziX,EAAQiiJ,mBAAqBygO,EAAoBh0P,OACjEw1P,GAAkBvoW,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAUyjX,GAAW,CACtEhB,aAAcA,EACdQ,wBAAyBA,IAE7B,OAAQjjX,EAAQ4iD,WA7EY,SAAA5iD,GAC5B,IACsBk5W,EAMlBl5W,EANAk5W,iBACgB8K,EAKhBhkX,EALAgkX,eACqBtB,EAIrB1iX,EAJA0iX,oBACSl0M,EAGTxuK,EAHAwuK,QACWqyM,EAEX7gX,EAFA6gX,UACyBoC,EACzBjjX,EADAijX,wBAEAkB,EAAsBnB,GAAuBhjX,GAC7C,EAGA0iX,EAAoB9iW,KAFZ8uG,EADZ,EACIA,OACmB0kP,EAFvB,EAEIA,kBAEJ,GAAI5kM,EAAQlnI,MAAO,CACf,IAAI88U,EAA2BD,EAAoBpgX,MAE/CsgX,EAA4BD,EADHj4W,KAAKoZ,MAAM09V,EAAwB1vV,MAAQstV,GACY,EAChFyD,EAAsBn4W,KAAKo/D,MAAM64S,EAA2BJ,GAC5DO,EAAuBrL,EAAiBkK,YAAYkB,EAAqBD,EAA2B31P,GAAQ,GAEhH,MAAO,CACHhmC,UAFYk6R,GAAmB5iX,EAASukX,EAAqB77R,UAAW0qR,EAAkBzqR,SAG1FA,QAASyqR,EAAkBzqR,QAElC,CACD,IAAIA,EAAW3oF,EAAQyiX,aAA6C0B,EAAoBz7R,UAAlDy7R,EAAoBx7R,QAE1D,OADAA,EAAUm6R,GAAiB9iX,EAAS2oF,EAASyqR,EAAkBzqR,SACxD,CACHD,UAAW0qR,EAAkB1qR,UAC7BC,QAASA,EAEhB,CA6C0E67R,CAA0BN,GA9GxE,SAAAlkX,GACzB,IACe6gX,EAMX7gX,EANA6gX,UACgBmD,EAKhBhkX,EALAgkX,eACyBf,EAIzBjjX,EAJAijX,wBACkB/J,EAGlBl5W,EAHAk5W,iBACqBwJ,EAErB1iX,EAFA0iX,oBACSl0M,EACTxuK,EADAwuK,QAEA+1M,EAAuBvB,GAAuBhjX,GAC9CykX,EAAyBt4W,KAAKoZ,MAAM09V,EAAwB1vV,MAAQstV,GACpEuD,EAA2BG,EAAqBxgX,OAAS0gX,EAAyB,GAClF,EAGA/B,EAAoB9iW,KAFZ8uG,EADZ,EACIA,OACmB0kP,EAFvB,EAEIA,kBAEJ,GAAI5kM,EAAQhnI,KAER,MAAO,CACHkhD,UAFYk6R,GAAmB5iX,EAASukX,EAAqB77R,UAAW0qR,EAAkB1qR,WAG1FC,QAASyqR,EAAkBzqR,SAGnC,IAAI27R,EAAsBn4W,KAAKo/D,MAAM64S,EAA2BJ,GAC5DU,EAAyBN,EAA2BJ,EACpDG,EAAsBjL,EAAiBkK,YAAYkB,EAAqBI,EAAwBh2P,GAChG/lC,EAAW3oF,EAAQyiX,aAA6C0B,EAAoBz7R,UAAlDy7R,EAAoBx7R,QAE1D,OADAA,EAAUm6R,GAAiB9iX,EAAS2oF,EAASyqR,EAAkBzqR,SACxD,CACHD,UAAW0qR,EAAkB1qR,UAC7BC,QAASA,EAEhB,CA8EgCg8R,CAAuBT,EACvD,EC5CG3I,GAAsBn1N,GAAaw+N,GAAe,0BAClD7zP,GAAOnsC,GAAAA,mBACLigS,GAAAA,SAAAA,iCACF,WAAYz1W,EAASpP,GAAS,6BAC1B,cAAMoP,EAASpP,IACV8kX,qBAAuB,CAAC,EAFH,CAG7B,0CACD,WACI,OAAOliX,KAAKw+W,OAAO,sBACtB,iCACD,WACI,OAAOx+W,KAAKw+W,OAAO,qBACtB,sCACD,WACI,OAAOx+W,KAAK2sC,OAAO,6BAAZ3sC,EACV,uBACD,SAAOwvC,EAAYtxC,GACf,OAAO,sDAAgB4Z,UAC1B,+BACD,SAAeqmW,EAASvgX,GACpB,IAAI8jB,EAAW1hB,KAAK2sC,OAAO,YACvBjrB,GACAA,EAASqrC,KAAKoxT,EAASvgX,EAE9B,uBACD,SAAOwgX,GACH,IAAK,IAAItxT,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,EAAO,EAAIA,EAAO,EAAI,GAAIz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAChGzX,EAAKyX,EAAO,GAAKyC,UAAUzC,GAE/B,IAAIqM,EAAW1hB,KAAK2sC,OAAO,YAC3B,GAAIjrB,EACA,OAAOA,EAASqrC,KAAKh1C,MAAM2J,EAAU5J,UAE5C,yBACD,WACIwd,aAAat1B,KAAKmiX,2BAClB,uDACH,+BACD,WACI,IAAIt3W,GAAS,8DACTu3W,EAAqBpiX,KAAKqiX,qBAC9B,OAAO58T,EAAAA,GAAAA,GAAO56C,EAAQ,CAClB/I,OAAQ,WACJ,IAAIpH,EAAIC,EAAIC,EACRoF,KAAKsiX,cACLtiX,KAAKuiX,sBACLviX,KAAKsiX,aAAc,EACnB,QAAU5nX,EAAK0nX,EAAmBI,YAAY,mBAAgB,IAAW9nX,GAAcA,EAAGuyK,uBAC1F,QAAUtyK,EAAKynX,EAAmBI,YAAY,mBAAgB,IAAW7nX,GAAcA,EAAGkyK,uBAC1F,QAAUjyK,EAAKwnX,EAAmBI,YAAY,mBAAgB,IAAW5nX,GAAcA,EAAGyyK,sBAAqB,GAEtH,EAACvwK,KAAKkD,MACPo+P,IAAK,SAASn1P,GACV,GAAIjJ,KAAK2sC,OAAO,eAAgB,CAC5B1jC,EAAEkzD,iBACF,IAAI7hE,EAAO0F,KAAK+tN,aAAa9kN,EAAE0O,QAC/B3X,KAAKyiX,eAAe,sBAAuB,CACvCnoX,KAAMA,EACNqd,OAAQ1O,EAAE0O,QAEjB,CACJ,EAAC7a,KAAKkD,MACPkkJ,IAAK,SAASj7I,GACV,IAAIssH,EAAev1H,KAAK0iX,yBAEpBvhX,EADqBo0H,EAAa/6F,OAAO,qBACdlgC,KAAKk8I,IAA0BmsO,YAC1D3sW,EAAYu/G,EAAa50H,OAAS,EACtC,GAAIQ,EAAQ,GAAK8H,EAAEipJ,UAAY/wJ,EAAQ6U,IAAc/M,EAAEipJ,SAAU,CAC7DjpJ,EAAEkzD,iBACFlzD,EAAEipJ,SAAW/wJ,IAAUA,IACvB,IAAIyhX,EAAmB5iX,KAAK6iX,uBAAuB1hX,GACnDnB,KAAK8iX,eAAeF,GACpBrkT,EAAAA,EAAAA,QAAqBqkT,EAAkB,QAC1C,CACJ,GAER,uCACD,SAAuBD,GAEnB,OADmB3iX,KAAK0iX,yBACJloV,QAAO,SAAC17B,EAAGgyN,GAAJ,OAAc1wJ,EAAY0wJ,EAAOt6E,IAA0BmsO,cAAgBA,CAA3E,IAAwF/yS,GAAG,EACzH,uCACD,WACI,OAAO5vE,KAAK2wN,gBAAgBn2L,OAAO,YAAYkC,IAAI,qBACtD,+BACD,SAAeqmV,GACX/iX,KAAK6lK,eAAe33F,KAAK,YAAa,GACtC60S,EAAa70S,KAAK,WAAYluE,KAAK2sC,OAAO,YAC7C,2BACD,WAAe,6BACf,WACI,OAAO3sC,KAAK2wN,eACf,mCACD,WACI,IAAIoyJ,EAAe/iX,KAAK6iX,uBAAuB,GAC/C7iX,KAAK8iX,eAAeC,EACvB,gCACD,SAAgB95W,IACZ,8DAAsBA,GACtBjJ,KAAKqiX,qBAAuBtxS,GAAE9nE,EAAE0O,QAChC3X,KAAK2sC,OAAO,iBAAkBk1G,GAAiB9wE,GAAE9nE,EAAE0O,SACtD,iCACD,SAAiB1O,GACb,IAAI85W,EAAe/iX,KAAK6iX,uBAAuB,GAC/C7iX,KAAK2sC,OAAO,iBAAkBk1G,GAAiBkhO,KAC/C,+DAAuB95W,EAC1B,oCACD,WACI,OAAOjJ,KAAKszN,gBACf,mCACD,WACI,OAAO7tK,EAAAA,GAAAA,IAAO,kEAA4B,CACtChH,WAAY,KACZ0lJ,oBAAoB,EACpBC,mBAAmB,EACnB5jJ,SAAU,EACVwiU,eAAgB,KAChBC,gBAAiB,KACjBrF,WAAW,EACXC,aAAa,EACbqF,mBAAmB,EACnBpkU,sBAAuB,KACvBqkU,iBAAkB,EAClB9kU,OAAQ,GACR0B,UAAW,IAElB,+BACD,SAAeniD,GACX,IAAIoC,KAAK2sC,OAAO,2BAGhB,OAAQ/uC,EAAKxE,MACT,IAAK,QACD4G,KAAK44M,mBACL54M,KAAKojX,sBACLpjX,KAAKqjX,8BACLrjX,KAAKsjX,qBAAqB1lX,EAAKM,OAC/B8B,KAAKujX,8BACLvjX,KAAKwjX,4BACL,MACJ,IAAK,iBACL,IAAK,kBACL,IAAK,wBAWL,IAAK,cACD,MAVJ,IAAK,YACL,IAAK,cACL,IAAK,oBACDxjX,KAAKypK,cACL,MACJ,IAAK,iBACDzpK,KAAK8iX,eAAe/xS,GAAEnzE,EAAKM,SAC3B,6DAAqBN,GACrB,MAGJ,IAAK,oBACDoC,KAAKqjX,8BACLrjX,KAAKujX,+BACL,6DAAqB3lX,GACrB,MACJ,SACI,6DAAqBA,GAEhC,qCACD,SAAqB2vH,GACjB,OAAOA,EAAYiI,SAAS70H,QAAU4sH,EAAYiI,SAAS,GAAG1J,SAAU,CAC3E,sCACD,SAAsByB,GAClB,QAAQl/D,EAAAA,EAAAA,IAAUk/D,EAAYo+L,eAAgB,IAASp+L,EAAYo+L,WACtE,8BACD,SAAcp2L,GACV,GAAIv1H,KAAKyjX,aACL,OAAO,EAEX,IAAK,IAAI96W,EAAI,EAAGA,EAAI4sH,EAAa50H,OAAQgI,IACrC,IAAK3I,KAAK0jX,sBAAsBnuP,EAAa5sH,IACzC,OAAO,EAGf,OAAO,CACV,+BACD,SAAeqzK,EAAUlwD,GACjBkwD,EAASjxK,WAAWpK,OAAS,GAC7BX,KAAK2jX,yBAAyB73P,GAAQnmH,OAAOq2K,EAEpD,mCACD,SAAmBzuD,EAAapsH,EAAOoG,EAAWq8W,GAAc,YACxD,KAAU,OAASr2P,QAAe,IAAWA,OAAc,EAASA,EAAYs2P,YAChF7jX,KAAK8jX,WAAWv2P,IACTq2P,GAAgB5jX,KAAK0jX,sBAAsBn2P,MAE9CA,EAAYo+L,aAAc,EAC1B,EAAKm4D,WAAWv2P,GAChB,EAAK2kG,YAAY/wN,EAAOosH,EAAahmH,GAGhD,qCACD,SAAqBguH,GAAc,WAC/Bv1H,KAAK+jX,oBAAmB,SAACC,EAAiBC,GACtC,IAAIL,EAAe,EAAKM,cAAc3uP,GAClCquP,IACA,EAAKD,0BAAyB,GAAMx2S,KAAK,IACzC,EAAKw2S,0BAAyB,GAAOx2S,KAAK,MAC5CooD,EAAa50H,QAAU,EAAKyyN,sBAC9B79F,EAAa70H,SAAQ,SAAC6sH,EAAapsH,GAC/B,IAAIoG,EAAY,EAAK48W,qBAAqB52P,GAAe02P,EAAkBD,EAC3E,EAAKI,mBAAmB72P,EAAapsH,EAAOoG,EAAWq8W,EAC1D,GACJ,GACJ,mCACD,SAAmBS,GACf,GAAIrkX,KAAKs0W,mBAAoB,CACzB,IAAI0P,EAAkBjzS,GAAElU,EAAAA,EAAAA,0BACpBonT,EAAkBlzS,GAAElU,EAAAA,EAAAA,0BACxBwnT,EAAeL,EAAiBC,GAChCjkX,KAAKskX,eAAeN,GAAiB,GACrChkX,KAAKskX,eAAeL,GAAiB,EACxC,MACGI,EAAerkX,KAAK2jX,0BAAyB,GAAQ3jX,KAAK2jX,0BAAyB,GAE1F,0CACD,WACI3jX,KAAK6zN,oBACL7zN,KAAKsyN,mBACLtyN,KAAKuyN,0BACLvyN,KAAKukX,6BACLvkX,KAAKk4M,oBACLl4M,KAAKm4M,wBACLn4M,KAAKo4M,oBACR,2BACD,SAAWxzM,GACP,IAAIyrN,EAASrwN,KAAK0xN,uBAAuB9sN,EAAK02I,UACzC+0E,EAAO1vN,SAGZksD,EAAAA,EAAAA,IAAKwjK,GAAQ,SAACvxN,EAAGgyN,GACbA,EAAM5hJ,SACN4hJ,EAAMpzN,QACT,GACJ,oCACD,WACIsC,KAAKkiX,qBAAuB,CAAC,CAChC,4CACD,WACIliX,KAAKw+W,OAAO,2BACf,uCACD,SAAuB55W,GACnB,IAAIpB,EAAS,GACTisD,EAAOzvD,KAOX,OANAA,KAAK2xN,eAAe9kK,MAAM,WACtB,IAAIikK,EAAQ//I,GAAE/wE,MACV8wN,EAAMx2N,KAAKm1D,EAAKmiK,kBAAoBhtN,GACpCpB,EAAOpD,KAAK0wN,EAEnB,IACMttN,CACV,2BACD,WACI,MnRvU4B,0BmRwU/B,+BACD,WACI,IAAIg3E,GAAa,8DACbL,EAAUK,EACVgqS,EAAmBxkX,KAAK2sC,OAAO,mBAInC,OAHI63U,IACArqS,EAAUK,EAAWzsC,IAAIy2U,IAEtBrqS,CACV,oCACD,YACI,mEACA,IAAIqqS,EAAmBxkX,KAAK2sC,OAAO,mBAC/B63U,GACAA,EAAiB12T,QAErB9tD,KAAKkiX,qBAAuB,CAAC,CAChC,uBACD,YACI,6DACOliX,KAAKqiX,4BACLriX,KAAKykX,oBACLzkX,KAAK0kX,mBACf,sBACD,YACI,qDACA1kX,KAAKg6D,WAAWoU,SA7RF,wCA8RdpuE,KAAK2kX,gCAAiC,CACzC,2CACD,SAA2BnqS,EAAY+yC,EAAa93E,GAChD,IAAI11C,EAAS,CACTs1H,SAAU9H,EAAYzB,OACtBmiP,aAAc1gP,EAAYyiB,eAC1B7iE,MAAM/lC,EAAAA,EAAAA,IAAcmmF,IAAgBA,EAAYpgD,KAAOogD,EAAYpgD,UAAO,GAE1Ey3S,EAAa5kX,KAAKw+W,OAAO,uBAAwB/oU,EAAM45T,gBAAiBrvW,KAAK6kX,4BAA4BC,gBAAkBrvU,EAAMsvU,wBAAyB,QAC9JvqS,EAAW70E,OAAO3F,KAAKyjX,aHzWY,SAACmB,EAAY7kX,GACpD,IAAIyD,EAASutE,GAAElU,EAAAA,EAAAA,0BACXmoT,EAAsBj0S,GAAE,SAAS3C,SAAS,+CAA+CO,SAASnrE,GAClGyhX,EAAuBl0S,GAAE,SAAS3C,SAAS,gDAAgDO,SAASnrE,GACpGw0B,EAAS+4C,GAAE,SAAS3C,SAASwnE,IAA2CjnE,SAASq2S,GACrFjlX,EAAOkuW,cAAgBl9R,GAAE,UAAU3C,SAAS,GAAGn+D,OAAO2lI,GAA4C,oBAAoBjnE,SAAS32C,GAC/H+4C,GAAE,SAAS3C,SAASwnE,IAA+CjvI,KAAKi+W,EAAWj+W,MAAMgoE,SAASs2S,GAClG,IAAIC,EAAsBn0S,GAAE,SAAS3C,SAASwnE,IAAyDjnE,SAASs2S,GAKhH,OAJAl0S,GAAE,SAAS3C,SAASwnE,IAA8CjvI,KAAKi+W,EAAW16H,YAAYv7K,SAASu2S,GACnGnlX,EAAOs1H,UACPtkD,GAAE,SAASpqE,KAAKg5W,IAAYvxS,SAASwnE,IAA6ClnE,UAAUw2S,GAEzF1hX,CACV,CG4V6C2hX,CAA8BP,EAAY7kX,GHrXnD,SAAC6kX,EAAY7kX,GAC9C,IAAIyD,EAASutE,GAAElU,EAAAA,EAAAA,0BACfkU,GAAE,SAASpqE,KAAKi+W,EAAWj+W,MAAMynE,SAASwnE,IAA+CjnE,SAASnrE,GAC9FzD,EAAOotE,MACP3pE,EAAO2pE,KAAKptE,EAAOotE,MAEvB,IAAIi4S,EAAkBr0S,GAAE,SAAS3C,SAASwnE,IAAyDjnE,SAASnrE,GAI5G,OAHAutE,GAAE,SAAS3C,SAASwnE,IAA8CjvI,KAAKi+W,EAAW16H,YAAYv7K,SAASy2S,GACvGrlX,EAAOkuW,cAAgBl9R,GAAE,UAAU3C,SAAS,GAAGn+D,OAAO2lI,GAA4C,oBAAoBjnE,SAASnrE,GAC/HzD,EAAOs1H,UAAYtkD,GAAE,SAASpqE,KAAKg5W,IAAYvxS,SAASwnE,IAA6ClnE,UAAU02S,GACxG5hX,CACV,CG0WiG6hX,CAAwBT,EAAY7kX,GACjI,yCACD,SAAyBoB,EAAOm6I,EAAUx7E,GACtC,IAAIj6C,EAAS7lB,KAAK42N,uBACd/wM,GACAA,EAAO7lB,KAAKw+W,OAAO,uBAAwB,CACvCljO,SAAUA,EACVx7E,YAAaA,YAGd9/D,KAAK6kX,2BACf,kCACD,SAAkB57W,IACd,gEAAwBA,EAAG,CAAC,EAAG,CAC3B03I,aAAc,SAAS13I,GACnBjJ,KAAKslX,kBAAkBr8W,EAAErL,KAAK,GAAGmD,MACpC,EAACjE,KAAKkD,OAEd,kCACD,SAAkBiJ,GAAG,WACb24I,EAAU7wE,GAAE9nE,EAAEu2D,eACdllE,EAAO0F,KAAK+tN,aAAansE,GACzB,YAAc34I,EAAE5D,MlQxTE,SAAAq/J,GAC1B,IACa6gN,EAGT7gN,EAHA6gN,QACSC,EAET9gN,EAFA8gN,QACOhiT,EACPkhG,EADAlhG,MAEJ,OAAO,IAAM+hT,IAAYC,GAAW,IAAMhiT,CAC7C,CkQiTmCiiT,CAAiBx8W,GACzCjJ,KAAKyiX,eAAe,2BAA4B,CAC5CnoX,KAAMA,EACNqd,OAAQiqI,IAIhB5hJ,KAAKmiX,yBAA2B5sV,YAAW,YAClC,EAAKovV,gCAAkC9nT,EAAAA,EAAAA,UAAqBoD,SAAS2hF,EAAQ,KAC9E,EAAK6gO,eAAe,yBAA0B,CAC1CnoX,KAAMA,EACNqd,OAAQiqI,IAGhB,EAAK+iO,gCAAiC,CACzC,GAAE,IACN,kCACD,SAAkB72J,GACd,IAAIlwN,GAAO,gEAAwBkwN,GACnC,OAAO9tN,KAAKw+W,OAAO,uBAAwB5gX,EAC9C,wBACD,YACI,uDACAoC,KAAKukX,4BACR,2CACD,WACI,IAAI90T,EAAOzvD,KACP+zN,EAAetkK,EAAKmkK,gBACpB4c,EAAgBxwO,KAAKszN,iBACzB/0J,EAAAA,EAAAA,IAAiBiyK,EAAemoI,GAAqB5kJ,GACrDx1J,EAAAA,EAAAA,GAAgBiyK,EAAemoI,GAAqB5kJ,GAAc,SAAA9qN,GAC9DwmD,EAAK4kK,oBAAoBprN,EAAG,wBAAyB,CAAC,EAAG,CACrD03I,aADqD,SACxC13I,GACTwmD,EAAKi2T,iBAAiBz8W,EAAErL,KAAK,GAAGmD,MACnC,GAER,GACJ,iCACD,SAAiBkI,GACb,IAAI08W,EAAqB50S,GAAE9nE,EAAEu2D,eACzB6vS,EAAkBrvW,KAAK+tN,aAAa43J,GACxCrwV,aAAat1B,KAAKmiX,0BAClBniX,KAAK2kX,gCAAiC,EACtC3kX,KAAKyiX,eAAe,2BAA4B,CAC5CnoX,KAAM+0W,EACN13V,OAAQguW,GAEf,4BACD,SAAYxkX,EAAOyD,EAAM2C,GAKrB,IAJA,IACc+zI,EACV12I,EADA02I,SAEA+0E,EAAS,GACJ1nN,EAAI,EAAGA,EAAI/D,EAAK4wH,SAAS70H,OAAQgI,IAAK,CAC3C,IAAIi9W,EAAUhhX,EAAK4wH,SAAS7sH,GAC5B3I,KAAK6kX,4BAA8Be,EACnC,IAAI90J,GAAQ,0DAAkB3vN,EAAOm6I,EAAU/zI,GAC/CupN,EAAMx2N,KAAKk8I,GAA0BovO,GACrCv1J,EAAOjwN,KAAK0wN,EACf,CACD,OAAOT,CACV,gCACD,SAAgBgF,GAGZ,OAFAA,EAAW/6N,KAAKk8I,GAA0Bx2I,KAAK6kX,8BAC5B,8DAAsBxvJ,EAE5C,sCACD,SAAsBjH,EAAc4I,GAChC,IACc17E,EAGV07E,EAHA17E,SACW/zI,EAEXyvN,EAFAzvN,UACOpG,EACP61N,EADA71N,MAEJ,OAAOitN,EAAa9/K,OAAO,CACvBmH,MAAO,CACH45T,gBAAiB/zN,EACjBypO,wBAAyB/kX,KAAKw+W,OAAO,6BAA8BljO,EAAUvqE,GAAExpE,GAAWsD,WAE9FtD,UAAWA,EACXpG,MAAOA,GAEd,yCACD,SAAyB2qH,GACrB,IAAI04P,EAAmBxkX,KAAK2sC,OAAO,mBAC/B6tC,EAAax6E,KAAKg4N,iBAAiBt7L,IAAI8nV,GAI3C,OAHI14P,GAAU04P,IACVhqS,EAAagqS,GAEVhqS,CACV,uCACD,SAAuB58E,GACnBoC,KAAK6lX,mBAAmBjoX,EAAKkiE,YAAa9/D,KAAK6kX,4BAClD,mCACD,SAAmBr4W,EAASgpH,GACxB,IAAI96H,EACJ8R,EAAQlS,KAAKk8I,GAA0BhhB,GACvCx1H,KAAK8lX,uBAAuBt5W,GAC5B,IAAIyoH,EAAiBj1H,KAAK+tN,aAAavhN,GACnCmxW,EAAW39W,KAAKw+W,OAAO,yBAA0BhpP,GACjDqoP,EAAc79W,KAAK2sC,OAAO,mBAAoB0hB,EAAAA,EAAAA,IAAUmnE,EAASuwP,gBAAiBr1T,EAAAA,EAAAA,IAAS8kE,EAASuwP,eACpGnI,EAAY59W,KAAK2sC,OAAO,aAEhBm/E,EACR0J,EADA1J,OAGJ,GADA9rH,KAAKw+W,OAAO,wBAAyBx+W,KAAK6kX,4BAA6BlH,GACnEnoP,EAASwwP,QAAS,CAClB,IAAI5qO,EAAoB,CACpBE,SAAUrmB,EACVujB,WAAYhjB,EAASgjB,WACrBn6F,OAAQr+C,KAAK2sC,OAAO,WAEpBs5U,EAAgBjmX,KAAK2sC,OAAO,sBAAZ3sC,CAAmCo7I,GACvDp7I,KAAKkmX,2BAA2B1wP,EAAUhpH,EAASyoH,EAAgBgxP,EACtE,KAAM,CACH,IAAIlmX,EAAS,CACTzF,KAAM26H,EACNujB,WAAYhjB,EAASgjB,WACrB92H,SAAU1hB,KAAK2sC,OAAO,YACtBgxU,SAAUA,EACV/2V,UAAW4uG,EAAS5uG,WAAa,WACjCi3V,YAAaA,EACbD,UAAWA,EACX9xP,OAAQA,EACRgyP,QAAStoP,EAAS2wP,mBAClBzoL,UAAWloE,EAASkoE,UACpB53G,UAAW,IAAIhjF,KAAK,QAAUpI,EAAK86H,EAASx4G,YAAS,IAAWtiB,OAAK,EAASA,EAAG6yH,YAAYznC,WAC7Fm4R,UAAWj+W,KAAKw+W,OAAO,gBACvBR,WAAYh+W,KAAKw+W,OAAO,iBACxBT,gBAAiB/9W,KAAKomX,iBAAiBnxP,EAAgBO,GACvDn3E,OAAQr+C,KAAK2sC,OAAO,UACpBuuG,oBAAqBl7I,KAAK2sC,OAAO,uBACjC05U,yBAA0BrmX,KAAK2sC,OAAO,6BAE1C,GAAI3sC,KAAKyjX,aAAc,CACnB,IAAI6C,EAA0BtmX,KAAK2sC,OAAO,6BAAZ3sC,GAC9BD,EAAO0/W,6BAA+B,SAAAxqP,GAAc,OAAIqxP,EAAwBC,gBAAgBtxP,EAA5C,CACvD,CACDj1H,KAAKmjK,iBAAiB32J,EAASxM,KAAKyjX,aAAejE,GAAoB9B,IAAa3kW,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGhZ,GAAS,CAC/Go0H,cAAen0H,KAAK2sC,OAAO,iBAC3B4xU,iBAAkBv+W,KAAK2sC,OAAO,sBAErC,CACJ,uCACD,SAAuBo2U,GACnB,IAAI5uP,EAAgBn0H,KAAK2sC,OAAO,2BAAZ3sC,GAChBi1H,EAAiBj1H,KAAK+tN,aAAag1J,IACvCl2T,EAAAA,EAAAA,IAAKsnE,EAAcv/D,QAAQ,SAAAtyD,GACvB,IAAIpE,EAAQi2H,EAAcv/D,OAAOtyD,GAAK2yH,GACtC,IAAI5mE,EAAAA,EAAAA,IAAUnwD,GAAQ,CAClB,IAAI0Q,EAAS,QAAQqB,QAAOwgD,EAAAA,GAAAA,cAAanuD,EAAIkS,eAAgB,KAC7D8iI,GAAYp5I,GAAOwC,SAAQ,SAAAxC,GAAK,OAAI6kX,EAAa70S,KAAKt/D,GAAS6hD,EAAAA,GAAAA,cAAavyD,IAAQ,EAApD,GACnC,CACJ,GACJ,iCACD,SAAiBmxW,EAAiBmX,GAC9B,MAAO,CACH16M,KAAM9rK,KAAKymX,wBAAwBD,EAAanX,GAChDtjM,cAAe,SAAS9iK,GAGpB,GAFAjJ,KAAKsiX,aAAc,EACnBtiX,KAAKqiX,qBAAuBtxS,GAAE9nE,EAAEuD,SAC5BxM,KAAKw+W,OAAO,gCAAiC,CAC7C,IAAIkI,EAAc1mX,KAAKymX,wBAAwBzmX,KAAKqiX,qBAAqB/nX,KAAKk8I,IAA2Bx2I,KAAKqiX,qBAAqB/nX,KAAK,eACxI2O,EAAEmoB,UAAUub,OAAO,OAAQ+5U,GAC3Bz9W,EAAEmoB,UAAUs8I,mBAAmBzkK,EAAElI,MACpC,CACDf,KAAKykX,aAAe,CAChB9zV,MAAO1nB,EAAE0nB,MACTnE,OAAQvjB,EAAEujB,QAEdxsB,KAAK0kX,oBAAsBhiO,GAAO1iJ,KAAKqiX,qBAC1C,EAACvlX,KAAKkD,MACPisK,YAAa,SAAShjK,GAClBjJ,KAAKsiX,aAAc,EACnBtiX,KAAK46O,kBAAkB3xO,EAC1B,EAACnM,KAAKkD,MAEd,wCACD,SAAwBwmX,EAAanX,GACjC,IAAIvjM,EAAO9rK,KAAKg6D,WAAW8V,QAAQ,0BACnC,OAAO9vE,KAAKw+W,OAAO,8BAA+B,CAC9CmI,YAAa,CACT/hV,KAAM4hV,EAAY5hV,KAClBH,IAAK,EACL+zG,WAAYguO,EAAYhuO,YAE5B1sB,OAAQ06P,EAAY16P,UAClBggD,CACT,kCACD,SAAkB7iK,GACd,IAAI+wD,EAAW+W,GAAE9nE,EAAEuD,SACf,EAGAwtD,EAAS1/D,KAAK,yBAFNwxH,EADZ,EACIA,OACM9uG,EAFV,EAEIA,KAEAwzV,EAAoBxwW,KAAK+tN,aAAa/zJ,GACtCs5S,EAAY,CAAC,EACjB,GAAIxnP,EACAwnP,EAAYtzW,KAAK4mX,aAAa39W,OAC3B,CACH,IAAI68E,EAAY9lF,KAAK6mX,kCAAkC59W,EAAGunW,EAAmBxzV,EAAKuwG,aAErExnC,EACT/oE,EAAKuwG,YADLxnC,QAEJutR,EAAYtzW,KAAK8mX,cAAc79W,EAAG68E,EAAWC,EAChD,CACD/lF,KAAK+mX,yBAAyB/sT,EAAUs5S,EAAWtzW,KAAK2sC,OAAO,iBAAkB3sC,KAAK2sC,OAAO,sBAChG,6BACD,SAAa1jC,GACT,IAAI+wD,EAAW+W,GAAE9nE,EAAEuD,SACfgoH,EAAqBx0H,KAAK2sC,OAAO,sBACjCwnF,EAAgBn0H,KAAK2sC,OAAO,iBAChC,OAAO8zU,GAAwB,CAC3B70M,QAAS3iK,EAAE2iK,QACXk0M,oBAAqB9lT,EAAS1/D,KAAK,yBACnC0sX,wBAAyBhnX,KAAK2sC,OAAO,0BAAZ3sC,GACzB8gX,2BAA4B9gX,KAAK2sC,OAAO,6BAAZ3sC,GAC5B0gX,gBAAiBj2R,GAAgBzwB,EAAS,IAC1C2mT,sBAAuBl2R,GAAgBzwB,EAASnvD,SAAS,IACzDyrW,iBAAkBt2W,KAAK2sC,OAAO,sBAAZ3sC,GAClBq/I,kBAAmBr/I,KAAK2sC,OAAO,oBAAZ3sC,GACnBugD,aAAcvgD,KAAKw+W,OAAO,mBAC1BvgU,WAAYj+C,KAAKw+W,OAAO,iBACxBhqP,mBAAoBA,EACpBL,cAAeA,EACfn0E,WAAYhgD,KAAK2sC,OAAO,cACxBo0U,YAAa/gX,KAAK2sC,OAAO,yBAAZ3sC,IAEpB,yCACD,SAAyBg6D,EAAUs5S,EAAWn/O,EAAeK,GACzD,IAAIg8O,EAAoBxwW,KAAK+tN,aAAa/zJ,GACtCitT,EAA6BjyO,GAAyBw7N,EAAmBr8O,EAAeK,GAAoBlpG,QAChH27V,EAA2BnhS,UAAY,IAAIhjF,KAAKwwW,EAAUxtR,WAC1DmhS,EAA2BlhS,QAAU,IAAIjjF,KAAKwwW,EAAUvtR,SACxD/lF,KAAKyiX,eAAe,+BAAgC,CAChD9qW,OAAQ64V,EACRl2W,KAAM2sX,EAA2B37V,MAAM,CACnCspH,aAAc,aACfrtG,SACHw7U,aAAc/oT,GAErB,kDACD,SAAkC/wD,EAAGgsH,EAAgBiyP,GACjD,IAAI1yP,EAAqBx0H,KAAK2sC,OAAO,sBACjC++E,EAAqBspB,GAAyB/f,EAAgBj1H,KAAK2sC,OAAO,iBAAkB6nF,GAEjF1uC,EACXohS,EADAphS,UAEAuvR,EAAsB1lO,KAENK,EAEhBtkB,EAFAskB,eACmBnd,EACnBnH,EADAmH,kBAEAwC,EAAWr1H,KAAKw+W,OAAO,WAAYvpP,GACnCkyP,EAAc9R,EAAoB7gO,sBAAsBxE,GAO5D,OANK/mI,EAAE2iK,QAAQnnI,KAAQ0iV,GAAgB9xP,IACnCvvC,EAAY0uC,EAAmBE,WAAWhJ,EAAmB5lC,UAAW,CACpEgnC,oBAAqB+F,EACrBlwH,KAAM,YAGPmjF,CACV,8BACD,SAAc78E,EAAG68E,EAAWC,GACxB,IAMIlD,EACAguR,EAPAv1N,EAAWt7I,KAAK+tN,aAAa9kN,EAAEuD,SAC/B46W,EAAYpnX,KAAKw+W,OAAO,eAAgBv1W,EAAGjJ,KAAKykX,aAAcnpO,GAC9D+rO,EAA6BrnX,KAAKw+W,OAAO,iCAEzCnpP,EAAWr1H,KAAKw+W,OAAO,WAAYljO,GACnCgsO,EAAmBtnX,KAAKw+W,OAAO,iCAAmCnpP,EAiBtE,OAdI,aAAegyP,GAA8BhyP,EACxBr1H,KAAK2sC,OAAO,cAAgB1jC,EAAE2iK,QAAQlnI,MAAQz7B,EAAE2iK,QAAQhnI,KAExD37B,EAAE2iK,QAAQnnI,MAG/Bo+C,EAAYykS,EAAmBtnX,KAAKunX,yBAAyBzhS,EAAWshS,GAAathS,EAAUpwB,UAAY0xT,EAC3GvkS,GAAakyC,GAAAA,4BAA0CjvC,EAAWC,EAASlD,EAAWkD,GACtF8qR,EAAU9qR,EAAQrwB,YAElBmtB,EAAYiD,EAAUpwB,UACtBm7S,EAAUyW,EAAmBtnX,KAAKwnX,uBAAuBzhS,EAASqhS,GAAarhS,EAAQrwB,UAAY0xT,EACnGvW,GAAW97O,GAAAA,4BAA0CjvC,EAAWC,EAASD,EAAW+qR,IAEjF,CACH/qR,UAAW,IAAIhjF,KAAK+/E,GACpBkD,QAAS,IAAIjjF,KAAK+tW,GAEzB,uCACD,SAAuB9qR,EAASqhS,GAC5B,IAAInpU,EAAaj+C,KAAKw+W,OAAO,iBACzBj+T,EAAevgD,KAAKw+W,OAAO,mBAC3Bh7W,EAASuiF,EAAQrwB,UAAY0xT,EAC7BK,GAAsBxpU,EAAasC,GAAgB4tE,GAAK,QACxDu5P,EAAYN,EAAY,EAAI79W,KAAKq7E,KAAKwiS,EAAYK,GAAsBl+W,KAAKo/D,MAAMy+S,EAAYK,GAC/F9rP,EAAU,IAAI74H,KAAKijF,GACnB81C,EAAU,IAAI/4H,KAAKijF,GAGvB,GAFA81C,EAAQ38C,SAAS3+B,EAAc,EAAG,EAAG,GACrCo7E,EAAQz8C,SAASjhC,EAAY,EAAG,EAAG,GAC/Bz6C,EAASm4H,EAAQjmE,WAAalyD,GAAUq4H,EAAQnmE,UAAW,CAC3D,IACIiyT,EAAiBP,GADEzrP,EAAQjmE,UAAYqwB,EAAQrwB,WAE/CkyT,EAAmB,IAAI9kX,KAAKijF,GAAS9G,QAAQ8G,EAAQ/F,UAAY0nS,GACjElrG,EAAU,IAAI15Q,KAAK8kX,GACvBprG,EAAQt9L,SAAS3+B,EAAc,EAAG,EAAG,GACrC/8C,EAASg5Q,EAAQ9mN,UAAYiyT,EAAiBF,GAAsBC,EAAY,EACnF,CACD,OAAOlkX,CACV,yCACD,SAAyBsiF,EAAWshS,GAChC,IAAInpU,EAAaj+C,KAAKw+W,OAAO,iBACzBj+T,EAAevgD,KAAKw+W,OAAO,mBAC3Bh7W,EAASsiF,EAAUpwB,UAAY0xT,EAC/BK,GAAsBxpU,EAAasC,GAAgB4tE,GAAK,QACxDu5P,EAAYN,EAAY,EAAI79W,KAAKq7E,KAAKwiS,EAAYK,GAAsBl+W,KAAKo/D,MAAMy+S,EAAYK,GAC/F9rP,EAAU,IAAI74H,KAAKgjF,GACnB+1C,EAAU,IAAI/4H,KAAKgjF,GAGvB,GAFA+1C,EAAQ38C,SAAS3+B,EAAc,EAAG,EAAG,GACrCo7E,EAAQz8C,SAASjhC,EAAY,EAAG,EAAG,GAC/Bz6C,EAASq4H,EAAQnmE,WAAalyD,GAAUm4H,EAAQjmE,UAAW,CAC3D,IACIiyT,EAAiBP,GADEthS,EAAUpwB,UAAYmmE,EAAQnmE,WAEjD++M,EAAW,IAAI3xQ,KAAKgjF,EAAU7G,QAAQ6G,EAAU9F,UAAY0nS,IAChEjzG,EAASv1L,SAASjhC,EAAY,EAAG,EAAG,GACpCz6C,EAASixQ,EAAS/+M,UAAYiyT,EAAiBF,GAAsBC,EAAY,EACpF,CACD,OAAOlkX,CACV,2CACD,SAA2BqkX,EAAoB9E,EAAc1T,EAAiB1mV,GAC1E,IAAIm/V,EAAqBD,EAAmB7B,QACxC+B,EAAoBD,EAAmB3mX,OACtCktD,EAAAA,EAAAA,IAAUruD,KAAKkiX,qBAAqB6F,MACrC/nX,KAAKkiX,qBAAqB6F,GAAqB,CAC3CpB,YAAa,CACTliV,IAAKqjV,EAAmBrjV,IACxBG,KAAMkjV,EAAmBljV,MAE7BshB,MAAO,CACH5rD,KAAM,GACNu9B,OAAQ,GACR29F,SAAU,IAEdH,WAAYyyP,EAAmBzyP,SAC/B2yP,YAAar/V,IAGrBk/V,EAAmB9C,wBAA0B/kX,KAAKw+W,OAAO,6BAA8BnP,EAAiB0T,GACxG/iX,KAAKkiX,qBAAqB6F,GAAmB7hU,MAAMsvE,SAASp1H,KAAKynX,GACjE7nX,KAAKkiX,qBAAqB6F,GAAmB7hU,MAAM5rD,KAAK8F,KAAKivW,GAC7DrvW,KAAKkiX,qBAAqB6F,GAAmB7hU,MAAMruB,OAAOz3B,KAAKuoB,GAC/Do6V,EAAarlX,QAChB,mCACD,YACI,kEACAsC,KAAKujX,6BACR,4CACD,WAA8B,WAC1BvjX,KAAK+jX,oBAAmB,SAACC,EAAiBC,IACtCp3T,EAAAA,EAAAA,IAAK,EAAKq1T,sBAAsB,SAAA1pO,GAC5B,IAAIyvO,EAAe,EAAK/F,qBAAqB1pO,GACzC0vO,EAAeD,EAAa/hU,MAC5BiiU,EAAqBF,EAAatB,YAClCyB,EAAYH,EAAa5yP,SAAW4uP,EAAkBD,EAEhDp/U,EACNujV,EADAvjV,KAEAyjV,EAAc,EAAK7J,OAAO,8BAA+ByJ,EAAa5yP,UACtEizP,EAAe,EAAK9J,OAAO,gCAC3B+J,EAAY,EAAK57U,OAAO,cAAgB07U,EAAc,EAC1D,EAAK5F,eAAe,4BAA6B,CAC7CjoS,WAAY4tS,EACZzB,YAAa,CACTliV,IAAK0jV,EAAmB1jV,IACxBG,KAAMA,EAAO2jV,GAEjBriU,MAAOgiU,EACPF,YAAaC,EAAaD,YAC1Br3V,MAAO03V,EAAc,EAAK17U,OAAO,oBACjCngB,OAAQ87V,EACR1pU,mBAAoB,EAAKjS,OAAO,eAChCixU,UAAW,EAAKjxU,OAAO,aACvBsxU,UAAW,EAAKO,OAAO,gBACvB9gL,UAAW,EAAK8gL,OAAO,eAAiB,EAAKgK,gBAAgBP,IAEpE,GACJ,GACJ,gCACD,SAAgBA,GACZ,OAAQA,EAAa5yP,UAAYr1H,KAAKw+W,OAAO,qCAChD,6CACD,SAA6BjpP,GACzB,OAAOD,GAA4BC,EAAcv1H,KAAK2sC,OAAO,iBAChE,8CACD,SAA8B4gF,EAAapsH,EAAOsnX,GAC9C,IAAIz4O,EAAiB9b,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,iBAAkB4gF,GAC1F/pH,EAAS,CACTmxC,MAAO,GACPosE,QAAS,IAEb,GAAIivB,EAAgB,CAoBhB,IAnBA,IAAI1U,EAAQ/N,EAAYiI,UAAYjI,EAChCznC,EAAY,IAAIhjF,KAAKoxH,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,YAAa2uF,IACzFzI,EAAoBqB,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,oBAAqB4gF,GAChGxnC,EAAU,IAAIjjF,KAAKoxH,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,UAAW2uF,IACrFpG,EAAsBnvC,EAAQrwB,UAAYowB,EAAUpwB,UACpDy/E,EAAsBjhB,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,sBAAuB4gF,GACpG+wB,EAAgBt+I,KAAKw+W,OAAO,oBAC5BnI,EAAcr2W,KAAKw+W,OAAO,kBAC1BkK,EAAqB1oX,KAAK2sC,OAAO,sBACjCg8U,EAAiBh5O,KAAyBgC,cAAc,CACxDvpI,KAAM4nI,EACNrd,UAAWwiB,EACX54G,MAAOupD,EACP57E,IAAK67E,EACLljE,IAAKy7H,EACL7mH,IAAK4+U,EACL1lO,0BAA2B+3O,EAAmBhT,6BAA6B5vR,EAAW+sC,GAAmB,KAEzG+1P,EAAqBr7P,EAAYiI,SAAW,EAAImzP,EAAehoX,OAC1DgI,EAAI,EAAGA,EAAIigX,EAAoBjgX,IAAK,CACzC,IAAIkgX,GAAkBpjU,EAAAA,GAAAA,GAAO,CAAC,EAAG8nE,GAAa,GAC9C,GAAIo7P,EAAehgX,GAAI,CACnB,IAAIm3W,EAAsB9/W,KAAK8oX,qBAAqBH,EAAehgX,GAAI,CAAC,GACxE3I,KAAK+oX,mBAAmB,IAAIjmX,KAAK6lX,EAAehgX,GAAG+sD,UAAYw/D,GAAsB4qP,GACrF+I,EAAgBrzP,SAAWsqP,CAC9B,MACG+I,EAAgBrzP,SAAW8F,EAE/B93H,EAAOmxC,MAAMv0C,KAAKyoX,GACbJ,GACDzoX,KAAKgpX,wBAAwBH,EAAiBrlX,EAErD,CACDA,EAAOu9G,QAAQ3gH,KAAKe,EACvB,CACD,OAAOqC,CACV,wCACD,SAAwB+pH,EAAa/pH,GACjC,IAAImxC,EAAQ30C,KAAKipX,sBAAsB17P,GACnC27P,EAAYv0U,EAAMh0C,OAClB01W,EAAcr2W,KAAKw+W,OAAO,kBAAkB9oT,UAC5C4oF,EAAgBt+I,KAAKw+W,OAAO,oBAAoB9oT,UAChD8+D,EAAqBx0H,KAAK2sC,OAAO,sBAIrC,GAHAnpC,EAASA,GAAU,CACfmxC,MAAO,IAEPu0U,EAAY,EAAG,EACfzjU,EAAAA,GAAAA,GAAO8nE,EAAa54E,EAAM,IAC1B,IAAK,IAAIhsC,EAAI,EAAGA,EAAIugX,EAAWvgX,IAAK,CAChC,IAAIm9E,EAAYouC,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,YAAagI,EAAMhsC,GAAG6sH,UAAU9/D,WACvGowB,EAAY0uC,EAAmBE,WAAW5uC,EAAW,CACjDnjF,KAAM,YAEM0zW,GAAevwR,EAAYw4D,GACvC96I,EAAOmxC,MAAMv0C,KAAKu0C,EAAMhsC,GAE/B,CACJ,CACD,OAAOnF,CACV,8CACD,SAA8B2lX,EAAmB5zP,IAC7C1oE,EAAAA,EAAAA,IAAKs8T,GAAmB,SAACxgX,EAAGxH,GACxBo0H,EAAal0H,OAAOF,EAAQwH,EAAG,EAClC,GACJ,qCACD,SAAqB4sH,EAAc6zP,GAC3BA,EAAuBzoX,QACvB40H,EAAan1H,KAAb,MAAAm1H,GAAY,QAAS6zP,IAEzBppX,KAAKqpX,6BAA6B9zP,EACrC,qCACD,SAAqBzvC,EAAW3wE,GAE5B,OADA++G,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,YAAax3B,EAAK2wE,GAClE3wE,CACV,mCACD,SAAmB4wE,EAAS5wE,GAExB,OADA++G,GAAyBl0H,KAAK2sC,OAAO,iBAAkB,UAAWx3B,EAAK4wE,GAChE5wE,CACV,oCACD,SAAoBm0W,GAChB,IAAIvG,EAAe/iX,KAAKqiX,qBACpBx0W,EAAO7N,KAAKykX,aACZ8E,EAASvpX,KAAK0kX,oBACd4E,IACAtpX,KAAKwpX,gDACDjzT,EAAAA,EAAAA,IAAW+yT,EAAUtoU,QACrBsoU,EAAUtoU,OAAOpiD,SAAQ,GAEzB0qX,EAAUtoU,QAAS,GAGvB+hU,IAAiBuG,IACbC,IACApmO,GAAK4/N,EAAcwG,UACZvpX,KAAKykX,cAEZ52W,K9XjpBW,SAACqsD,EAAIh8D,GAAUorE,GAAiCpP,EAAIh8D,EAApD,C8XkpBXurX,CAAc1G,EAAcl1W,EAAK8iB,OACjCw6C,GAAe43S,EAAcl1W,EAAK2e,eAC3BxsB,KAAK0kX,qBAGvB,sBACD,WACI,GAAI1kX,KAAKqiX,qBAAsB,CAC3B,IAAItzJ,EAAiBltE,GAAiB7hJ,KAAKqiX,sBAC3CriX,KAAK2sC,OAAO,iBAAkBoiL,GAC9BxwJ,EAAAA,EAAAA,QAAqBwwJ,EAAgB,QACxC,CACJ,sCACD,SAAsBxhG,GAClB,IAAI+N,EAAQ/N,EAAYiI,UAAYjI,EAChC4G,EAAgBn0H,KAAK2sC,OAAO,iBAC5B+8U,EAAoB,IAAI5mX,KAAKoxH,GAAyBC,EAAe,YAAamH,IAClFx1C,EAAY9D,GAAAA,SAAmB0nS,GAC/B3jS,EAAU/D,GAAAA,SAAmBkyC,GAAyBC,EAAe,UAAWmH,IAChFquP,EAAiB3pX,KAAKw+W,OAAO,kBAC7Bj+T,EAAevgD,KAAKw+W,OAAO,mBAC3BvgU,EAAaj+C,KAAKw+W,OAAO,iBACzBhqP,EAAqBx0H,KAAK2sC,OAAO,sBACjC2yD,EAAU01C,GAAyBznB,EAAa4G,EAAeK,GAC/Do1P,EAAoBv1P,GAA+B/0B,GACnD97F,EAAS,GAab,IAZAsiF,EAAY0uC,EAAmBE,WAAW5uC,EAAW,CACjDnjF,KAAM,WAEVojF,EAAUyuC,EAAmBE,WAAW3uC,EAAS,CAC7CpjF,KAAM,WAENmjF,EAAUlE,YAAc3jC,GAAc6nC,EAAUlE,YAAcrhC,IAAiBqpU,IAC/EpmX,EAAOpD,KAAKJ,KAAK8oX,qBAAqB,IAAIhmX,KAAKgjF,GAAY,CACvDupR,gBAAiB9hP,KAErBznC,EAAU7G,QAAQ6G,EAAU9F,UAAY,IAErC4pS,GAAqB9jS,EAAUpwB,UAAYqwB,EAAQrwB,WAAaowB,EAAY6jS,GAAgB,CAC/F,IAAIprO,EAAmB,IAAIz7I,KAAKgjF,GAC5B+jS,EAAiB,IAAI/mX,KAAKgjF,GAC9B9lF,KAAK8pX,gBAAgBvrO,EAAkBmrO,EAAmBnpU,GAC1DvgD,KAAK+pX,cAAcF,EAAgB9jS,EAAS9nC,GAC5C,IAAIoxT,GAAkB75S,EAAAA,GAAAA,IAAoB,CAAC,EAAG+3D,GAAa,GACvDuyP,EAAsB,CAAC,EAC3B9/W,KAAK8oX,qBAAqBvqO,EAAkBuhO,GAC5C9/W,KAAK+oX,mBAAmBc,EAAgB/J,GACxCzQ,EAAgB75O,SAAWsqP,EAC3Bt8W,EAAOpD,KAAKivW,IACZvpR,EAAY9D,GAAAA,SAAmB8D,IACrB7G,QAAQ6G,EAAU9F,UAAY,GACxC8F,EAAU5G,SAAS3+B,EACtB,CACD,OAAO/8C,CACV,gCACD,SAAgBuhF,EAAailS,EAAczpU,IAClCyhC,GAAAA,SAAmB+C,EAAailS,IAAiBjlS,EAAYnD,YAAcrhC,EAC5EwkC,EAAY7F,SAAS3+B,EAAc,EAAG,EAAG,GAEzCwkC,EAAY7F,SAAS8qS,EAAapoS,WAAYooS,EAAaxnS,aAAcwnS,EAAavnS,aAAcunS,EAAatnS,kBAExH,8BACD,SAAcqC,EAAailS,EAAc/rU,IAChC+jC,GAAAA,SAAmB+C,EAAailS,IAAiBjlS,EAAYnD,WAAa3jC,EAC3E8mC,EAAY7F,SAASjhC,EAAY,EAAG,EAAG,GAEvC8mC,EAAY7F,SAAS8qS,EAAapoS,WAAYooS,EAAaxnS,aAAcwnS,EAAavnS,aAAcunS,EAAatnS,kBAExH,6DACD,WACwB1iF,KAAK2wN,gBAAgBn2L,OAAO,IAAIvqB,OAAO0lI,KAC7C9oF,MAAK,SAAC/tD,EAAG0N,GACOukE,GAAEvkE,GAASy9W,uBAAuB,YACxCt9U,OAAO,gBAAgB,EAC9C,GACJ,0CACD,SAA0B4gF,EAAaiI,GACnC,IAAI00P,EAAgBlqX,KAAK0xN,uBAAuBnkG,GAC5C,EAGAiI,EAASx4G,KAAKwzV,kBAFH1qR,EADf,EACIA,UACSC,EAFb,EAEIA,QAGYyyD,EACZhjB,EADAgjB,WAEJ0xO,EAAcxpX,SAAQ,SAAAowN,GAClB,IAAI,EAGAA,EAAMx2N,KAAKk8I,IAFLkiM,EADV,EACI17T,KACYmtW,EAFhB,EAEI3xO,WAEA,EAGAkgM,EAAS83B,kBAFE4Z,EADf,EACItkS,UACSukS,EAFb,EAEItkS,QAEAukS,EAAsBx5J,EAAMm5J,uBAAuB,YACnD/L,EAAep4R,EAAUpwB,YAAc00T,EAAc10T,WAAaqwB,EAAQrwB,YAAc20T,EAAY30T,WAAa8iF,IAAe2xO,EACpIG,EAAoB39U,OAAO,eAAgBuxU,EAC9C,GACJ,oCACD,WAAsB,WACdqM,EAAwBvqX,KAAKg6D,WAAWh+D,KAAK,0CAC7CwuX,GAAuB94T,EAAAA,GAAAA,MAAK64T,GAAuB,SAAArwT,GACnD,IAEI,EAFM6W,GAAE7W,GACYsoT,YAAY,YAIlB71U,SAFRm/H,EADV,EACIA,KACSF,EAFb,EAEIA,QAEJ,OAAQ,eAAiBA,GAAW,eAAiBA,KAAYxkI,EAAAA,EAAAA,IAAc0kI,EAClF,KACDj/G,EAAAA,EAAAA,IAAK29T,GAAsB,SAAC1rX,EAAGo7D,GAC3B,IAAI0pG,EAAM7yF,GAAE7W,GACR1vD,EAAWk4I,GAAOkhB,GAClByrM,EAAkB,EAAKthJ,aAAanqD,GACpCkI,EAAO,EAAK26M,wBAAwB,CACpC7hV,KAAMp6B,EAASo6B,MAChByqU,GACHzrM,EAAI4+M,YAAY,YAAY71U,OAAO,OAAQm/H,EAC9C,GACJ,OAn6BCm2M,CAA8B70J,IAq6BpC56C,GAAkB,0BAA2ByvM,IAC7C,UCj+BWwI,GAAoB,SAAA9M,GAC3B,IACYnxV,EAIRmxV,EAJAnxV,OACMoY,EAGN+4U,EAHA/4U,KACKH,EAELk5U,EAFAl5U,IACO9T,EACPgtV,EADAhtV,MAEJ,MAAO,GAAG1gB,OAAO20B,EAAM,KAAK30B,OAAOw0B,EAAK,KAAKx0B,OAAO0gB,EAAO,KAAK1gB,OAAOuc,EAC1E,EAWUk+V,GAAuB,SAAC/hW,EAAOtY,GAAR,OAAoBsY,EAAiBk0H,GAAY,CAAC,CAChF3uE,KAAM,kBACNhwE,MAAOyqB,IACPtY,GAH0DA,CAA5B,EC9C9B+U,GAAY,CAAC,YAkBJulW,GAAb,0CACI,WAAY7/W,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAjBG8vK,GAAY,EAAG,MAAO,2CAA4CA,GAAY,EAAG,MAAO,wCAiBvE,CAChB9vK,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB4zL,eAAgB1+L,KAAK0+L,gBAvBzB5zL,MACI8/W,SAG0I,GAAI,EAqBrJ,KAhBL,GAAwCp+L,IAkBxCm+L,GAAmBhyW,aArBkB,CACjCiyW,SAAU,IChBd,IAAIxlW,GAAY,CAAC,QAkBJylW,GAAb,0CACI,WAAY//W,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAjBG8vK,GAAY,EAAG,MAAO,iCAiBL,CAChB9vK,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB4zL,eAAgB1+L,KAAK0+L,gBAvBzB5zL,MACInE,KAG6D,EAqBpE,KAhBL,GAAsC6lL,IAkBtCq+L,GAAiBlyW,aArBkB,CAC/BhS,KAAM,IChBV,IAAIye,GAAY,CAAC,sBAAuB,OAAQ,WAAY,yBAA0B,QAAS,cAAe,YAAa,yBAA0B,QAsDxI0lW,GAAb,0CACI,WAAYhgX,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKqiV,evOoyBF,CACHtxW,QAAS,MuOpyBT,EAAKuxW,gBAAkB,EAAKA,gBAAgBluX,MAArB,YACvB,EAAKmuX,wBAA0B,EAAKA,wBAAwBnuX,MAA7B,YAC/B,EAAKouX,wBAA0B,EAAKA,wBAAwBpuX,MAA7B,YANhB,CAOlB,CARL,4CASI,WACI,MAAO,CAAC,IAAI6wL,GAAc3tL,KAAKgrX,gBAAiB,CAAChrX,KAAK8K,MAAMqgX,uBAAwBnrX,KAAK8K,MAAMxQ,KAAM0F,KAAK8K,MAAMsgX,yBACnH,GAXL,2BAYI,WACI,IAAIhlL,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMqgX,uBAAwBnrX,KAAK8K,MAAMxQ,KAAM0F,KAAK8K,MAAMsgX,wBACjL,GAfL,6BAgBI,WAAkB,IACVC,EAAuBC,EADb,OAEVC,EAAe,kBAAM,EAAKN,yBAAX,EACfO,EAAe,kBAAM,EAAKN,yBAAX,EAGnB,OAFA,QAAUG,EAAwBrrX,KAAK+qX,eAAetxW,eAAY,IAAW4xW,GAAiCA,EAAsB9pX,iBAAiB,aAAcgqX,GACnK,QAAUD,EAAyBtrX,KAAK+qX,eAAetxW,eAAY,IAAW6xW,GAAkCA,EAAuB/pX,iBAAiB,aAAciqX,GAC/J,WACH,IAAIC,EAAwBC,EAC5B,QAAUD,EAAyB,EAAKV,eAAetxW,eAAY,IAAWgyW,GAAkCA,EAAuBjqX,oBAAoB,aAAc+pX,GACzK,QAAUG,EAAyB,EAAKX,eAAetxW,eAAY,IAAWiyW,GAAkCA,EAAuBlqX,oBAAoB,aAAcgqX,EAC5K,CACJ,GA3BL,qCA4BI,WACIxrX,KAAK8K,MAAMqgX,uBAAuB,CAC9BxzW,OAAQ3X,KAAK+qX,eAAetxW,QAC5BssE,QAAS/lF,KAAK8K,MAAMxQ,KAAK+0W,gBAAgBtpR,SAEhD,GAjCL,qCAkCI,WACI/lF,KAAK8K,MAAMsgX,wBACd,GApCL,0BAqCI,WACI,IAAI/sL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAzCL,oBA0CI,WACI,IA5CUk5K,EA4CNxzL,EAAQ9K,KAAK8K,MACjB,OA9EkB,SAAAkM,GACtB,IAAI,EAWAA,EAVAlM,MACyB6gX,EAF7B,EAEQA,oBACMrxX,EAHd,EAGQA,KACUswX,EAJlB,EAIQA,SACOzpX,EALf,EAKQA,MACagmX,EANrB,EAMQA,YACWyE,EAPnB,EAOQA,UACMjlX,EARd,EAQQA,KAEYokX,EAChB/zW,EADA+zW,eAGJ,OAAOnwM,GAAY,EAAG,MAAO,mCAAoC+wM,EADvCA,EACiF,CACvGrxX,KAAMA,EACN6G,MAAOA,IACN46K,GAAe,CAACN,GAAqB,EAAGovM,GAAkB,CAC3DlkX,KAAMA,IACN80K,GAAqB,EAAGkvM,GAAoB,CAC5CC,SAAUA,IACVzD,GAAevsM,GAAY,EAAG,MAAO,2DAA4DgxM,GAAahxM,GAAY,EAAG,MAAO,wCAAyC,KAAM,EAAG,KAAM,KAAMmwM,IAAkB,GAAI,EAC/N,CAwDctsL,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB6gX,qBA/CErtL,EA+C+BxzL,EAAM6gX,oBA/CrBrtL,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAiDzJysL,eAAgB/qX,KAAK+qX,eACrBE,wBAAyBjrX,KAAKirX,wBAC9BC,wBAAyBlrX,KAAKkrX,wBAC9BxsL,eAAgB1+L,KAAK0+L,gBAE5B,KArDL,GAAwChS,IAuDxCo+L,GAAmBnyW,aAlEkB,CACjChS,KAAM,GACNikX,SAAU,GACVzD,aAAa,EACbyE,WAAW,EACXzqX,MAAO,GC9CJ,IAAI+5I,GAAsB,SAACC,EAAgBC,GAAjB,OAAuCywO,IAA4B9yW,EAAAA,EAAAA,GAAS,CAAC,EAAGoiI,EAAgB,CAC7HhnB,cAAegnB,EAAeU,yBAC9BT,EAF6B,ECDtB0wO,GAAsBn7W,QAAc,GCD3CyU,GAAY,CAAC,sBAAuB,SAAU,yBAA0B,QAAS,cAAe,oBAAqB,yBAA0B,aAoFtIs4V,GAAb,0CACI,WAAY5yW,GAAO,6BACf,cAAMA,IACDmG,I1OuwBF,CACHwI,QAAS,M0OvwBT,EAAKivB,MAAQ,CACT/f,WAAO,GAEX,EAAKojW,mBAAqB,EAAKA,mBAAmBjvX,MAAxB,YAC1B,EAAKkvX,sBAAwB,EAAKA,sBAAsBlvX,MAA3B,YAC7B,EAAKwxN,YAAc,EAAKA,YAAYxxN,MAAjB,YACnB,EAAKmvX,kBAAoB,EAAKA,kBAAkBnvX,MAAvB,YATV,CAUlB,CAXL,qDAYI,WACI,OAAIkD,KAAKmmD,QAAQ2lU,GAAoB/tW,IAC1B/d,KAAKmmD,QAAQ2lU,GAAoB/tW,IAErC+tW,GAAoB1tV,YAC9B,GAjBL,2BAkBI,WACI,MAAO,CAAC,IAAIuvJ,GAAc3tL,KAAK+rX,mBAAoB,CAAC/rX,KAAK8K,MAAMk9L,UAAWhoM,KAAKksX,yBAA0BlsX,KAAK8K,MAAMuzC,SAAU,IAAIsvI,GAAc3tL,KAAKgsX,sBAAuB,IAC/K,GApBL,2BAqBI,WACI,IAAI5lL,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMk9L,UAAWhoM,KAAKksX,yBAA0BlsX,KAAK8K,MAAMuzC,QAClL,GAxBL,gCAyBI,WAAqB,IACb8tU,EADa,OAGFnkL,EACXhoM,KAAK8K,MADLk9L,UAEAxvD,EAAa,QAAU2zO,EAAwBnkL,EAAUhrL,KAAKw7H,kBAAe,IAAW2zO,EAAwBA,EAAwB,EAE3H5+P,EACby6E,EADAz6E,YAEJ2tB,GAAoB,CAChBn7F,UAAW//C,KAAKksX,yBAAyBnsU,UACzC66F,kBAAmB56I,KAAKksX,yBAAyBtxO,kBACjDiB,uBAAwB77I,KAAKksX,yBAAyB/3P,cAAcp0E,UACpEs7F,gBAAiBr7I,KAAKksX,yBAAyB7wO,iBAChD,CACCC,SAAU/tB,EACVirB,WAAYA,EACZn6F,OAAQr+C,KAAK8K,MAAMuzC,SACpBvgD,MAAK,SAAA6qB,GACJ,EAAK+wB,UAAS,SAAAytJ,GAAgB,MAAK,CAC/Bx+K,MAAOA,EADmB,GAGjC,IAAEpL,OAAM,iBAAM,EAAN,GACZ,GAhDL,mCAiDI,WAAwB,IAChB6uW,EADgB,OAEhBC,EAAgB,kBAAM,EAAKJ,mBAAX,EAEpB,OADA,QAAUG,EAAoBpsX,KAAKiR,IAAIwI,eAAY,IAAW2yW,GAA6BA,EAAkB7qX,iBAAiB,WAAY8qX,GACnI,WACH,IAAIC,EACJ,QAAUA,EAAqB,EAAKr7W,IAAIwI,eAAY,IAAW6yW,GAA8BA,EAAmB9qX,oBAAoB,WAAY6qX,EACnJ,CACJ,GAzDL,6BA0DI,WACI,ON3I0B,SAAArkL,GAC9B,IAAI,EAOAA,EANA21K,SACYnxV,EAFhB,EAEQA,OACMoY,EAHd,EAGQA,KACKH,EAJb,EAIQA,IACO9T,EALf,EAKQA,MAGR,OAAOksH,GAAY,CAAC,CAChB3uE,KAAM,SACNhwE,MAAO,GAAG+R,OAAOuc,GAAU,GAAI,OAChC,CACC0hD,KAAM,QACNhwE,MAAO,GAAG+R,OAAO0gB,GAAS,GAAI,OAC/B,CACCu9C,KAAM,MACNhwE,MAAO,GAAG+R,OAAOw0B,EAAK,OACvB,CACCypC,KAAM,OACNhwE,MAAO,GAAG+R,OAAO20B,EAAM,QAE9B,CMqHc2nV,CAAqBvsX,KAAK8K,MAAMk9L,UAC1C,GA5DL,kBA6DI,WACI,OAAO0iL,GAAqB1qX,KAAK0oC,MAAM/f,MAAO3oB,KAAKwsX,kBACtD,GA/DL,gBAgEI,WACI,OAAOxsX,KAAK8K,MAAMk9L,UAAUz6E,YAAY5mH,IAC3C,GAlEL,qBAmEI,WAII,QADI3G,KAAK8K,MAAMk9L,UAAUhrL,KADrBmpW,kBAGP,GAxEL,mBAyEI,WACI,IAAI,EAQAnmX,KAAK8K,MAAMk9L,UAPFngK,EADb,EACIA,QADJ,IAEI7qB,KACY8uG,EAHhB,EAGQA,OACoBq6P,EAJ5B,EAIQA,mBAKJsG,EAAsB,aAT1B,EAKQ7lW,UAKR,OAAO41H,GAAe,CAClB,qBAAsB30G,EACtB,4BAA4B,EAC5B,uCAAwC4kV,EACxC,oCAAqCA,EACrC,sCAfJ,EAMQtF,YAUJ,mCAAoCr7P,EACpC,mCAAoC9rH,KAAK4rX,UACzC,gCAAiC,SAAWzF,EAC5C,gCAAiC,SAAWA,EAC5C,gCAAiC,SAAWA,GAEnD,GAhGL,oBAiGI,WACI,OAAOnmX,KAAK8K,MAAMk9L,UAAUhrL,KAAK4tW,QACpC,GAnGL,gBAoGI,WACI,MAAO,CACHvb,gBAAiBrvW,KAAK8K,MAAMk9L,UAAUhrL,KAAKuwG,YAC3Cw3P,wBAAyB/kX,KAAK8K,MAAMk9L,UAAUz6E,YAErD,GAzGL,yBA0GI,WACI,IAAItkH,EAAI,CACJ3O,KAAM,CAAC0F,KAAK8K,MAAMk9L,WAClBrwL,OAAQ3X,KAAKiR,IAAIwI,QACjBtY,MAAOnB,KAAK8K,MAAM3J,OAEtBnB,KAAK8K,MAAMwjN,YAAYrlN,EAC1B,GAjHL,+BAkHI,WACI,IAAIA,EAAI,CACJ3O,KAAM,CAAC0F,KAAK8K,MAAMk9L,WAClBrwL,OAAQ3X,KAAKiR,IAAIwI,QACjBtY,MAAOnB,KAAK8K,MAAM3J,OAEtBnB,KAAK8K,MAAMmhX,kBAAkBhjX,EAChC,GAzHL,0BA0HI,WACI,IAAIo1L,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GA9HL,oBA+HI,WACI,IAjIUk5K,EAiINxzL,EAAQ9K,KAAK8K,MACjB,OAtLkB,SAAAkM,GACtB,IACa2a,EAmBT3a,EAnBA2a,QACMr3B,EAkBN0c,EAlBA1c,KACUswX,EAiBV5zW,EAjBA4zW,SACWgB,EAgBX50W,EAhBA40W,UACat9J,EAebt3M,EAfAs3M,YALJ,EAoBIt3M,EAdAlM,MACyB6gX,EAP7B,EAOQA,oBACwBP,EARhC,EAQQA,uBACOjqX,EATf,EASQA,MACwBgqX,EAVhC,EAUQA,uBAGqBhE,EAb7B,EAWQn/K,UACIhrL,KACImqW,YAIPl2W,EAGL+F,EAHA/F,IACQZ,EAER2G,EAFA3G,OACM1J,EACNqQ,EADArQ,KAEJ,OAAOwzC,GAAeshI,GAAqB,EAAGmpB,IAAQ7rL,EAAAA,EAAAA,GAAS,CAC3DolC,mBAAmB,EACnBm/H,QAASgxC,EACTpnB,eAAgBj2L,EAChB6lB,MAAOi5J,GAAgB1/K,GACvBshB,QAASA,EACT2sB,KAAM33C,GACP,CACCurB,KAAM,SACN,aAAc/wB,GACf,CACC4J,SAAU0wK,GAAqB,EAAGqvM,GAAoB,CAClDnkX,KAAMA,EACNilX,UAAWA,EACXhB,SAAUA,EACVzD,YAAaA,EACbhmX,MAAOA,EACP7G,KAAMA,EACN6wX,uBAAwBA,EACxBC,uBAAwBA,EACxBO,oBAAqBA,OAGhC,CAyIcltL,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB6gX,qBApIErtL,EAoI+BxzL,EAAM6gX,oBApIrBrtL,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAsIzJ31K,MAAO3oB,KAAK0oC,MAAM/f,MAClB1X,IAAKjR,KAAKiR,IACVi7W,yBAA0BlsX,KAAKksX,yBAC/BM,kBAAmBxsX,KAAKwsX,kBACxBn8W,OAAQrQ,KAAKqQ,OACb1J,KAAM3G,KAAK2G,KACXilX,UAAW5rX,KAAK4rX,UAChBj6V,QAAS3xB,KAAK2xB,QACdi5V,SAAU5qX,KAAK4qX,SACftwX,KAAM0F,KAAK1F,KACXg0N,YAAatuN,KAAKsuN,YAClB29J,kBAAmBjsX,KAAKisX,kBACxBvtL,eAAgB1+L,KAAK0+L,gBAE5B,KAnJL,GAAiChS,IAqJjCgxL,GAAY/kW,aA5JkB,CAC1BxX,MAAO,GC1EJ,ICJHikB,GAAY,CAAC,SAAU,4BAA6B,aAoD3CsnW,GAAb,0CACI,WAAY5hX,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CACT/f,WAAO,GAEX,EAAKojW,mBAAqB,EAAKA,mBAAmBjvX,MAAxB,YALX,CAMlB,CAPL,qDAQI,WACI,OAAIkD,KAAKmmD,QAAQ2lU,GAAoB/tW,IAC1B/d,KAAKmmD,QAAQ2lU,GAAoB/tW,IAErC+tW,GAAoB1tV,YAC9B,GAbL,2BAcI,WACI,MAAO,CAAC,IAAIuvJ,GAAc3tL,KAAK+rX,mBAAoB,CAAC/rX,KAAK8K,MAAMuzC,OAAQr+C,KAAK8K,MAAMk9L,UAAWhoM,KAAKksX,2BACrG,GAhBL,2BAiBI,WACI,IAAI9lL,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAK8K,MAAMuzC,OAAQr+C,KAAK8K,MAAMk9L,UAAWhoM,KAAKksX,0BAChK,GApBL,gCAqBI,WAAqB,WACb,EAGAlsX,KAAK8K,MAFGuzC,EADZ,EACIA,OACW2pJ,EAFf,EAEIA,WD5CmB,SAAC2kL,EAAoB3kL,EAAW3pJ,GAC3D,IAAIuuU,EACAp0O,EAAa,QAAUo0O,EAAwB5kL,EAAUxvD,kBAAe,IAAWo0O,EAAwBA,EAAwB,EAEtHr/P,EACby6E,EAAU9hJ,MAAMsvE,SAAS,GADzBjI,YAEJ,OAAO2tB,GAAoB,CACvBn7F,UAAW4sU,EAAmB5sU,UAC9B66F,kBAAmB+xO,EAAmB/xO,kBACtCiB,uBAAwB8wO,EAAmBx4P,cAAcp0E,UACzDs7F,gBAAiBsxO,EAAmBtxO,iBACrC,CACCC,SAAU/tB,EACVirB,WAAYA,EACZn6F,OAAQA,GAEf,EC8BOwuU,CAAkB7sX,KAAKksX,yBAA0BlkL,EAAW3pJ,GAAQvgD,MAAK,SAAA6qB,GACrE,EAAK+wB,UAAS,SAAAytJ,GAAgB,MAAK,CAC/Bx+K,MAAOA,EADmB,GAGjC,GACJ,GA/BL,gBAgCI,WACI,MAAO,CACHmkW,iBAAkB9sX,KAAK8K,MAAMk9L,UAAU9hJ,MAAMsvE,SAAS70H,OACtD+8L,UAAW19L,KAAK8K,MAAMk9L,UAAUtK,UAEvC,GArCL,gBAsCI,WACI,IACeA,EACX19L,KAAK8K,MAAMk9L,UADXtK,UAGkBovL,EAClB9sX,KAAK1F,KADLwyX,iBAEJ,OAAIpvL,EACO,GAAGztL,OAAO68W,GAEL1iQ,GAAAA,aAAiC,+BAC1CniC,CAAU6kS,EACpB,GAlDL,6BAmDI,WACI,ODpGgC,SAAA9kL,GACpC,IAAI,EAOAA,EANA21K,SACYnxV,EAFhB,EAEQA,OACMoY,EAHd,EAGQA,KACKH,EAJb,EAIQA,IACO9T,EALf,EAKQA,MAmBR,OAhBaksH,GAAY,CAAC,CACtB3uE,KAAM,OACNhwE,MAAO,GAAG+R,OAAO20B,EAAM,OACxB,CACCspC,KAAM,MACNhwE,MAAO,GAAG+R,OAAOw0B,EAAK,OACvB,CACCypC,KAAM,QACNhwE,MAAO,GAAG+R,OAAO0gB,EAAO,OACzB,CACCu9C,KAAM,SACNhwE,MAAO,GAAG+R,OAAOuc,EAAQ,OAC1B,CACC0hD,KAAM,YACNhwE,MAAO,SAAS+R,OAAO0gB,EAAO,iCAGrC,CC0Eco8V,CAA2B/sX,KAAK8K,MAAMk9L,UAChD,GArDL,kBAsDI,WACI,OAAO0iL,GAAqB1qX,KAAK0oC,MAAM/f,MAAO3oB,KAAKwsX,kBACtD,GAxDL,mBAyDI,WACI,OAAOhwO,GAAe,CAClB,sCAAsC,EACtC,6CAA8Cx8I,KAAK1F,KAAKojM,WAE/D,GA9DL,0BA+DI,WACI,IAAIW,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAnEL,oBAoEI,WACI,IAtEUk5K,EAsENxzL,EAAQ9K,KAAK8K,MACjB,OA5FkB,SAAAkM,GACtB,IACa2a,EAOT3a,EAPA2a,QACMr3B,EAMN0c,EANA1c,KAE+B0yX,EAI/Bh2W,EALAlM,MACImiX,0BAEI58W,EAER2G,EAFA3G,OACM1J,EACNqQ,EADArQ,KAEJ,OAAO80K,GAAqB,EAAGktB,GAAQ,CACnC7xK,MAAOi5J,GAAgB1/K,GACvB8H,UAAWwZ,EACXtsB,KAAM,UACNijM,YAAa,YACbv9L,SAAUiiX,EAA4BA,EAA0B,CAC5D1yX,KAAMA,IACLsgL,GAAY,EAAG,OAAQ,KAAMj0K,EAAM,IAE/C,CAyEc83L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBmiX,2BAzEE3uL,EAyEqCxzL,EAAMmiX,0BAzE3B3uL,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MA2EzJ31K,MAAO3oB,KAAK0oC,MAAM/f,MAClBujW,yBAA0BlsX,KAAKksX,yBAC/B5xX,KAAM0F,KAAK1F,KACXqM,KAAM3G,KAAK2G,KACX6lX,kBAAmBxsX,KAAKwsX,kBACxBn8W,OAAQrQ,KAAKqQ,OACbshB,QAAS3xB,KAAK2xB,QACd+sK,eAAgB1+L,KAAK0+L,gBAE5B,KAnFL,GAAuChS,IAqFvCggM,GAAkB/zW,aAvFkB,CAAC,EClDrC,IAAIyM,GAAY,CAAC,YAwBb8nW,GACa,4BADbA,GAEQ,mCAFRA,GAGW,qCA2CFC,GAAb,0CACI,WAAYriX,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAK0kV,U7OoxBF,CACH3zW,QAAS,M6OpxBT,EAAKunL,cAAgB,CAAC,EACtB,EAAKqsL,oBAAsB,EAAKA,oBAAoBvwX,MAAzB,YAC3B,EAAKwwX,yBAA2B,EAAKA,yBAAyBxwX,MAA9B,YANjB,CAOlB,CARL,qDASI,WACI,OAAIkD,KAAKmmD,QAAQ2lU,GAAoB/tW,IAC1B/d,KAAKmmD,QAAQ2lU,GAAoB/tW,IAErC+tW,GAAoB1tV,YAC9B,GAdL,2BAeI,WACI,MAAO,CAAC,IAAIuvJ,GAAc3tL,KAAKqtX,oBAAqB,CAACrtX,KAAKksX,2BAA4Bl+L,KACzF,GAjBL,2BAkBI,WACI,IAAIoY,EACJ,QAAUA,EAAkBpmM,KAAK2sL,SAAS,UAAO,IAAWyZ,GAA2BA,EAAgBp6J,OAAO,CAAChsC,KAAKksX,0BACvH,GArBL,iCAsBI,WAAsB,WACdqB,EAAqB5pL,GAA8B3jM,KAAKotX,UAAU3zW,SAAS,SAAAxQ,GAAC,OAAI,EAAKqkX,yBAAyBrkX,EAAlC,IAChF,OAAO,WACHskX,GACH,CACJ,GA3BL,mBA4BI,WACI,IACcl4P,EACVr1H,KAAK8K,MADLuqH,SAEJ,OAAOmnB,GAAe,CAClB,wCAAyCnnB,EACzC,oCAAqCA,GAE5C,GApCL,wBAqCI,WAAmB,WACf,YAAI,IAAWr1H,KAAKghM,cAAczrE,aACvBv1H,KAAKghM,cAAczrE,aAEvBv1H,KAAKghM,cAAczrE,aAClB,EAAKzqH,MAAMuqH,SACJ,EAAK62P,yBAAyBlkL,UAAUl8E,OAE5C,EAAKogQ,yBAAyBlkL,UAAUwlL,OAEtD,GA/CL,8BAgDI,WAAyB,WACrB,YAAI,IAAWxtX,KAAKghM,cAAcysL,mBACvBztX,KAAKghM,cAAcysL,mBAEvBztX,KAAKghM,cAAcysL,mBAClB,EAAK3iX,MAAMuqH,SACJ,EAAK62P,yBAAyBlkL,UAAU0lL,cAE5C,EAAKxB,yBAAyBlkL,UAAU2lL,cAEtD,GA1DL,sCA2DI,SAAyB1kX,GACrB,IAAI2kX,EAAqB3kX,EAAE0O,OAAOm4D,QAAQo9S,IAC1C,GAAIU,EAAoB,CACpB,IACWzsX,EACPysX,EAAmBC,QADnB1sX,MAEA2sX,EAA0B3sX,EAAQ22B,SAAS32B,EAAO,KAAO,EACzDk0H,EAAWu4P,EAAmB9/U,UAAUmyB,SAASitT,IACjDxvL,EAAYkwL,EAAmB9/U,UAAUmyB,SAASitT,IAClDa,EAAU,CACVL,cAAer4P,GAAYqoE,EAC3B5xE,OAAQuJ,IAAaqoE,EACrBiwL,gBAAiBt4P,GAAYqoE,EAC7B8vL,SAAUn4P,IAAaqoE,GAEvBswL,EAAkBhwX,OAAOyG,QAAQspX,GAASvzV,QAAO,SAAA51B,GAAI,OAAIA,EAAK,EAAT,IAAa,GAAG,GACzE5E,KAAKksX,yBAAyB+B,yBAAyBD,EAAiBF,EAC3E,CACJ,GA7EL,0BA8EI,WACI,IAAIzvL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAlFL,iCAmFI,SAAoBo1J,EAAWsM,EAAW3gI,IACtC,mEACInmD,KAAK8K,MAAMuqH,WAAamlD,EAAUnlD,UAAYr1H,KAAKmmD,QAAQ2lU,GAAoB/tW,MAAQooC,EAAQ2lU,GAAoB/tW,MACnH/d,KAAKghM,cAAczrE,kBAAe,GAElCv1H,KAAK8K,MAAMuqH,WAAamlD,EAAUnlD,UAAYr1H,KAAKmmD,QAAQ2lU,GAAoB/tW,MAAQooC,EAAQ2lU,GAAoB/tW,MACnH/d,KAAKghM,cAAcysL,wBAAqB,EAE/C,GA3FL,oBA4FI,WACI,IAAI3iX,EAAQ9K,KAAK8K,MACjB,OAvIkB,SAAAkM,GACtB,IACkBu+G,EAadv+G,EAbAu+G,aADJ,EAcIv+G,EAZAk1W,yBACyBP,EAH7B,EAGQA,oBACQttU,EAJhB,EAIQA,OACwB+sU,EALhC,EAKQA,uBACoBxsU,EAN5B,EAMQA,mBAC0BsvU,EAPlC,EAOQA,yBAC2BjB,EARnC,EAQQA,0BACwB9B,EAThC,EASQA,uBAEKx5V,EAGT3a,EAHA2a,QACWy7V,EAEXp2W,EAFAo2W,UACoBK,EACpBz2W,EADAy2W,mBAEJ,OAAO7yM,GAAY,EAAG,MAAOjpJ,EAAS,CAAC4jG,EAAaxxH,KAAI,SAACa,EAAMzD,GAAP,OAAiBs6K,GAAqB,EAAGiiM,GAAa,CAC1G11K,UAAWpjM,EACX+mX,oBAAqBA,EACrBxqX,MAAOA,EACPk9C,OAAQA,EACRiwK,YAAa1vK,EACbqtU,kBAAmBiC,EACnB/C,uBAAwBA,EACxBC,uBAAwBA,GACzBxmX,EAAKtC,IATgD,IASzCmrX,EAAmB1pX,KAAI,SAACa,EAAMzD,GAAP,OAAiBs6K,GAAqB,EAAGixM,GAAmB,CAC9F1kL,UAAWpjM,EACXy5C,OAAQA,EACR4uU,0BAA2BA,EAC3B,aAAc9rX,GACfyD,EAAKtC,IAL8B,KAKtB,EAAG,KAAM,KAAM8qX,EAClC,CAwGc3uL,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBsiX,UAAWptX,KAAKotX,UAChBlB,yBAA0BlsX,KAAKksX,yBAC/Bv6V,QAAS3xB,KAAK2xB,QACd4jG,aAAcv1H,KAAKu1H,aACnBk4P,mBAAoBztX,KAAKytX,mBACzBH,yBAA0BttX,KAAKstX,yBAC/B5uL,eAAgB1+L,KAAK0+L,gBAE5B,KAxGL,GAAuC3R,IA0GvCogM,GAAkBx0W,aAnHkB,CAChC08G,UAAU,OC3DO83P,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACHz4L,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,GACXpiC,MAAO,CAAC,YAEf,6BACD,WACI,OAAOqjX,EACV,OAZgBhB,CAA0BhjL,IAc/C33B,GAAkB,sBAAuB26M,ICElC,IAAIj7P,GAAQ,CACfiC,cAAe,CACXi6P,uBAAwB,SAAA5hX,GAAO,OAAIukE,GAAEvkE,GAASlS,KAAKk8I,GAApB,EAC/B63O,mBAAoB,SAAA7hX,GAChB,IAAIgpH,EAAWtD,GAAMiC,cAAci6P,uBAAuB5hX,GAC1D,OAAO,OAASgpH,QAAY,IAAWA,OAAW,EAASA,EAASx4G,IACvE,EACDxM,OAAQ,SAACmqE,EAAQ2zS,EAAsBjqU,EAAqBzG,GACxD,IAAIu2E,EAAgBm6P,GAAuBv1W,EAAAA,EAAAA,GAAS,CAAC,EAAGu1W,GAAwB,CAC5E15T,OAAQ,CAAC,EACTw/D,OAAQ,CAAC,EACTrgE,KAAM,CAAC,GAsCX,OApCAlH,EAAAA,EAAAA,IAAK8tB,GAAQ,SAACvhF,EAAM26D,GAChB,GAAIA,EAAM,CACN,IAEIw6T,EACAC,EACApkS,EAJAx1B,GAASR,EAAAA,GAAAA,IAAcL,GACvBqgE,GAASp/D,EAAAA,GAAAA,IAAcjB,IAIT,eAAdsK,EAAQjlE,IAA+B,YAAcilE,KACrDkwT,EAAa,SAAA5oV,GACT,IAAIznC,EAAQ02D,EAAOjvB,GAInB,OAHI0e,IACAnmD,EAAQ02H,GAAAA,gBAAkC12H,IAEvCA,CACV,EACDswX,EAAa,SAAC7oV,EAAQznC,GAClB,GAAI0/C,EACAwsC,EAAsBxsC,OACnB,GAAIyG,IAAwB+lC,EAAqB,CACpD,IAAIwwE,EAAWhmG,EAAOjvB,GACtBykD,EAAsBwqC,GAAAA,2BAA6CgmC,EACtE,CACD,IAAI/xH,EAAW+rF,GAAAA,cAAgC12H,EAAOksF,GACtDgqC,EAAOzuF,EAAQkD,EAClB,GAELsrF,EAAcv/D,OAAOx7D,GAAQm1X,GAAc35T,EAC3Cu/D,EAAcC,OAAOh7H,GAAQo1X,GAAcp6P,EAC3CD,EAAcpgE,KAAK,GAAG9jD,OAAO7W,EAAM,SAAW26D,CACjD,aACUogE,EAAcv/D,OAAOx7D,UACrB+6H,EAAcC,OAAOh7H,UACrB+6H,EAAcpgE,KAAK,GAAG9jD,OAAO7W,EAAM,SAE9C,IAAIilE,CACP,IACM81D,CACV,GAELs6P,IAAK,CACDC,gBAAiB,SAAA7pP,GAAM,OAAIA,EAASA,EAAOmiB,WAAalvH,SAASozC,GAAe25D,EAAOmiB,WAAY,IAAM,CAAlF,GAE3B2nO,WAAY,CACRC,gBAAiB,SAAC5rN,EAAQ/vH,EAAem+B,EAAgB1+C,EAAes1K,GACpE,IAAI52K,EAAY4xI,EAAOtwI,GACvB,GAAKtB,EAIE,CACH,IAAI4oC,EAAW5oC,EAAU4oC,WACrBw2G,EAAex2G,EAASpgE,IAAI,GAAGk9B,MAEvBtK,EACRgkJ,EADAhkJ,OAGOmE,EACP6/I,EADA7/I,MAEJS,EAAUub,OAAOq7J,GACbx7K,GACAu+C,GAAU/Q,EAAUxtC,GAEpBmE,GACAk6C,GAAS7Q,EAAUrpC,EAE1B,KApBe,CACZ,IAAIppB,EAAYs6I,GAAiB5uG,GACjC7hB,EAAY4xI,EAAOG,iBAAiB57J,EAAW6pE,EAAgB42H,GAC/DhlC,EAAOtwI,GAAiBtB,CAC3B,CAiBJ,ICtFLy9V,GAA2B,SAAAC,GAC3B,IAAIvnX,EAAYwpE,GAAE,8BAIlB,OAHI,IAAMxpE,EAAU5G,SAChB4G,EAAYwpE,GAAE,SAAS3C,SAAS,6BAA6BO,SAASmgT,IAEnEvnX,CACV,ECwBGwnX,GAAyB,oBAEzBC,GAAgC,2BAChCC,GAAgC,2BAOhCrkI,GAAiBhmD,GAAAA,QAAe,CAChChnC,mBADgC,WAE5B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3BisK,aAAc,OACdliI,QAAS,OACT+rD,iBAAa,EACbgvF,aAAc,KACdioJ,gBAAiB,KACjB5mL,YAAa,WACbgX,gBAAgB,EAChB7gK,WAAY2rE,GAAAA,OAA2B,iCACvC+kQ,eAAe,EACfC,aAAa,EACbC,eAAe,EACf1oX,KAAM,GACN8f,UAAM,EACN6oW,cAAe,KACfx0J,mBAAoB,KACpBxM,YAAa,KACbm1C,QAAQ,EACRv9M,MAAO,KACPqhD,WAAY,KACZppD,mBAAmB,EACnBimJ,mBAAmB,EACnB4/D,gBAAiB,CAAC,EAClBurH,wBAAyB,UACzBpyE,cAAc,EACdoJ,oBAAoB,EACpBz4E,SAAS,EACTmvE,cAAe,QACfuyE,mBAAoB,CAAC,GAE5B,EACDpxN,uBAjCgC,WAkC5Bp+J,KAAKmiD,YACLsD,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7B2sE,cAAc,GAErB,EACD1jI,MAvCgC,WAwC5BvjG,KAAKmiD,WACLniD,KAAK+mP,yBACL/mP,KAAKyvX,2BACLzvX,KAAK0vX,gCACL1vX,KAAKooG,kBACLpoG,KAAK2vX,oBACL3vX,KAAKkvN,wBACLlvN,KAAKs+O,mBAAmBt+O,KAAK2sC,OAAO,UACpC3sC,KAAKktD,SAAS58C,MAAM,qBAAsBtQ,KAAK2sC,OAAO,uBACtD3sC,KAAKktD,SAAS58C,MAAM,kBAAmBtQ,KAAK2sC,OAAO,mBACtD,EACDg+H,eAnDgC,WAmDf,WACb3qK,KAAK4pK,iBAAiBgsB,oBAAoB,CACtC/kJ,QAAS,IAAI6wH,IAAiB,SAAAtkK,GAC1B,IAAIkrQ,EAAgBv3L,GAAE3zE,EAAQmK,WAC1BqoX,EAAiB7+S,GAAE,SAASpC,SAAS25L,GACzC,EAAKn7M,MAAQ,EAAKg2G,iBAAiBysN,EAAgBzmE,GAAM,EAAK0mE,gBAC9D,EAAK1iU,MAAMiuJ,mBAAmB,SAAU,EAAK00K,YAAYhzX,KAAK,IAC9D,EAAKqwD,MAAMiuJ,mBAAmB,MAAO,EAAK00K,YAAYhzX,KAAK,IAC3D,EAAKqwD,MAAMiuJ,mBAAmB,YAAa,EAAK00K,YAAYhzX,KAAK,IACjE,EAAKqwD,MAAMiuJ,mBAAmB,aAAc,EAAK00K,YAAYhzX,KAAK,GACrE,MAELkD,KAAKmiD,UACR,EACDm8L,mBAAoB,SAASpgP,GACpB8B,KAAKwnG,cACNxnG,KAAKwnG,YAAc,IAAIhG,GAAW,CAC9BjJ,MAAO,IAAIsH,GAAW,CAClBv9F,IAAKtC,KAAK+vX,UACVz1X,KAAM4D,IAEVwkG,SAAU,IAGrB,EACDqtR,QAAS,WACL,IAAIC,EACA9jS,EAAUlsF,KAAK2sC,OAAO,WACtBsjV,EAAW,QAAUD,EAAoBhwX,KAAKwnG,mBAAgB,IAAWwoR,OAAoB,EAASA,EAAkB1tX,MAC5H,QAAO+rD,EAAAA,EAAAA,IAAU4hU,KAAe5hU,EAAAA,EAAAA,IAAU69B,IAAY,SAAWA,EAAsBA,EAAX+jS,CAC/E,EACDN,kBAlFgC,WAmF5B3vX,KAAKm2F,YAAa/hC,EAAAA,GAAAA,IAAcp0D,KAAK+vX,UACxC,EACD7gK,sBArFgC,WAsF5BlvN,KAAKovN,gBAAiBh7J,EAAAA,GAAAA,IAAcp0D,KAAK2sC,OAAO,eACnD,EACD27H,YAxFgC,WAyF5BtoK,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAAS2gT,IACzB/uX,KAAKkwX,qBACLlwX,KAAKmwX,qBACD9hU,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,qBACtB3sC,KAAKowX,oBAAoBxhU,KAAK5uD,KAAKqwX,oBAAoBvzX,KAAKkD,MAEnE,EACDg4M,mBAAoBl2L,GAAAA,KACpBg5D,QAlGgC,WAmGvB96E,KAAK2sC,OAAO,oBAAqB3sC,KAAK2sC,OAAO,WAC9C3sC,KAAK2nQ,eAET3nQ,KAAKmiD,UACR,EACDm2J,mBAxGgC,WA4G5B,OAHIt4M,KAAKsnQ,QACLtnQ,KAAK4nQ,sBAEF5nQ,KAAKmiD,UACf,EACDiuU,kBA9GgC,WA+G5B,IAAIE,EACJ,QAAUA,EAAwBtwX,KAAKuwX,2BAAwB,IAAWD,GAAiCA,EAAsB9wX,SACjI,IAAIgkB,EAAI,IAAInG,GAAAA,GACZ,GAAIrd,KAAKmtD,YAAS,IAAWntD,KAAKwwX,sBAAuB,CACrD,IAAIC,EAAezwX,KAAK2sC,OAAO,iBAAmB3sC,KAAKmtD,MAAMxgB,OAAO,gBAAkB3sC,KAAKwwX,sBAC3F,OAAOhtW,EAAE5kB,QAAQ6xX,EACpB,CACDzwX,KAAKwwX,2BAAwB,EAC7B,IAAItB,EAAkBlvX,KAAK2sC,OAAO,mBAKlC,OAJA3sC,KAAKwpG,YAAYxpG,KAAK+vX,UAAWb,GAAiBtgU,KAAKprC,EAAE5kB,SAAS0wD,MAAK,WACnE9rC,EAAE5kB,QAAQ,KACb,IACDoB,KAAKuwX,oBAAsB/sW,EACpBA,EAAElG,SACZ,EACDmyW,yBA9HgC,WA+H5BzvX,KAAK0wX,mBAAqB1wX,KAAK2/J,sBAAsB,gBACxD,EACD+vN,8BAjIgC,WAkI5B1vX,KAAKgnT,wBAA0BhnT,KAAK2/J,sBAAsB,qBAC7D,EACDonF,uBApIgC,WAqI5B/mP,KAAKgnP,iBAAmBhnP,KAAK2/J,sBAAsB,cACtD,EACDgxN,4BAvIgC,SAuIJ35W,GACxB,IACmB6jJ,EAEf7jJ,EAFA6jJ,cACO38J,EACP8Y,EADA9Y,MAEJ8B,KAAKgnT,wBAAwB,CACzBpiT,KAAM1G,EACN0yX,aAAc/1N,GAErB,EACDg2N,qBAjJgC,SAiJXnsN,GACjB,IACW3jK,EAGP2jK,EAHA3jK,MACa++D,EAEb4kG,EAFA5kG,YACUw7E,EACVopB,EADAppB,SAEJ,OAAOt7I,KAAKgnP,iBAAiB,CACzBjmP,MAAOA,EACP++D,YAAaA,EACbw7E,SAAUt7I,KAAK8wX,aAAex1O,GAErC,EACDy1O,oBA7JgC,WA8J5B,MAAO,CACHpqX,KAAM3G,KAAK2sC,OAAO,QAClBlmB,KAAMzmB,KAAK2sC,OAAO,QAClBmR,YAAa,CACT+qH,MAAOmmN,IAGlB,EACDgC,qBAtKgC,WAuK5B,IAAI9qU,EAAQ,GAUZ,OATAA,EAAM9lD,KAAKJ,KAAK+wX,uBACZ/wX,KAAK2sC,OAAO,gBACZuZ,EAAM9lD,KAAK,CACPqmB,KAAM,WACNq3B,YAAa,CACT+qH,MAAOomN,MAIZ/oU,CACV,EACD+qU,sBAnLgC,SAmLVnrO,GAClB,IACW/kJ,EAEP+kJ,EAFA/kJ,MACUu6I,EACVwK,EADAxK,SAEA41O,EAAiB51O,EAASx9F,YAAY+qH,QAAUmmN,GAC/B1zO,EAASx9F,YAAY+qH,QAAUomN,GAEhDjvX,KAAK+tE,SACEmjT,IACPlxX,KAAK0wX,mBAAmB,CACpB3vX,MAAOA,EACPkmO,aAAcjnO,KAAK2sC,OAAO,kBAEzB3sC,KAAK2sC,OAAO,gBACb3sC,KAAK+tE,SAGhB,EACDojT,oBAtMgC,WAsMV,WACd,EAQAnxX,KAAK2sC,SAPQyiV,EADjB,EACIA,YACeC,EAFnB,EAEIA,cACmBlxU,EAHvB,EAGIA,kBACmBimJ,EAJvB,EAIIA,kBACakE,EALjB,EAKIA,YACWrrJ,EANf,EAMIA,UACUuD,EAPd,EAOIA,SAEAsmM,EAAiBsoI,IAAgBC,EAAgB,UAAY,SAAC9oO,EAAO6qO,GACrE,IACUzqX,EAEN4/I,EAFA5/I,KACM8f,EACN8/H,EADA9/H,KAEA4qW,EAAa33L,GAAkBjzK,GAC/B6qW,EAAiB3qX,EAAOoqE,GAAE,UAAUpqE,KAAKA,GAAMynE,SAxNpC,uBAwNqE,EAChFmjT,EAAc73L,GAAkB,YAAYtrH,SAxNlC,iBAyNd2C,GAAEqgT,GAAezrX,OAAO0rX,EAAYC,EAAgBC,EACvD,EACD,OAAO9rU,EAAAA,GAAAA,GAAO,CACVS,MAAOlmD,KAAKgxX,uBACZ1iK,YAAatuN,KAAKixX,sBAAsBn0X,KAAKkD,MAC7C2wB,MAAO,OACPnE,OAAQ,OACR06M,cAAe,OACf3vC,kBAAmB,SAAAtuL,GAAC,OAAI,EAAKixM,iBAAiBjxM,EAA1B,EACpB69O,eAAgBA,EAChB3oM,kBAAmBA,EACnBimJ,kBAAmBA,EACnBkE,YAAaA,EACbrrJ,UAAWA,EACXuD,SAAUA,GACXxgD,KAAKktD,SAAS58C,MAAM,sBAC1B,EACDs3P,oBAzOgC,WA0O5B,IAAIttE,EAAWt6L,KAAKsnQ,OAAOhtE,WACvB96K,EAAWxf,KAAK8qK,qBAAqB,2BAIzC,OAHAwvB,EAASxsI,QACT9tD,KAAKunQ,gBAAkB,MAAQ,IAAIr7M,GAAAA,EACnClsD,KAAK86M,QAAQ,KAAM96M,KAAKunQ,gBAAiBjtE,GAClC96K,EAAS8uB,OAAO,CACnB/mC,UAAWs6I,GAAiBy4C,GAC5B7kJ,MAAOz1C,KAAK2sC,OAAO,UAAY3sC,KAAKwnG,aAE3C,EACDgqR,cApPgC,WAoPhB,WACR/tC,EAAsBzjV,KAAK2sC,OAAO,cAAgB,QAAU,OAChE,OAAO8Y,EAAAA,GAAAA,GAAO,CACVqxG,aAAa,EACb34G,mBAAmB,EACnBmhK,eAAgBt/M,KAAK2sC,OAAO,kBAC5B+yK,mBAAoB,SAAAz2M,GAChB,IAAI+wD,EAAW,EAAKA,WAEpB,OADqB+W,GAAE9nE,EAAE0O,QAAQm4D,QAAQ,IAAI7/D,OAAO8+W,KAC7B9/S,GAAGjV,EAC7B,EACDy6K,WAAW,EACXlpF,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,OACNwmB,SAAU,EACVriB,KAAM,EACNguG,GAAI,GAERxpC,KAAM,CACF3oE,KAAM,OACNwmB,SAAU,IACVriB,KAAM,EACNguG,GAAI,IAGZgxJ,iCAAiC,EACjC73O,MAAO,kBAAMkyO,GAAgB,EAAK7oM,WAA3B,EACPxtC,OAAQ,OACRu4B,SAAS,EACTv6C,SAAU,CACNqjM,GAAI7tM,KAAKg6D,WACT+zI,UAAW,UACXtrK,GAAIghT,EAAsB,OAC1B5+R,GAAI4+R,EAAsB,WAE9B76E,sBA5RyB,6BA6R1B5oQ,KAAKktD,SAAS58C,MAAM,mBAAoB,CACvCuwC,QAAS7gD,KAAK2sC,OAAO,WAE5B,EACDkjV,aA7RgC,WA6RjB,WACPX,EAAkBlvX,KAAK2sC,OAAO,mBAC9BwiV,EAAgBnvX,KAAK2sC,OAAO,iBAChC,MAAO,CACHu6L,cAAeioJ,EAAgB,SAAW,OAC1ChyE,aAAcn9S,KAAK2sC,OAAO,gBAC1BwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/By3J,kBAAmBpkM,KAAK2sC,OAAO,qBAC/B45Q,mBAAoBvmT,KAAK2sC,OAAO,sBAChC6S,eAAgB,kBAAM,EAAK+4J,yBAAX,EAChBsiB,kBAAkBxsK,EAAAA,EAAAA,IAAU6gU,IAAoBC,EAAgB,CAACD,GAAmB,GACpFphJ,QAAS9tO,KAAK2sC,OAAO,WACrBswQ,cAAej9S,KAAK2sC,OAAO,iBAC3Bu/C,QAASlsF,KAAK+vX,UACdtxU,WAAYz+C,KAAK2sC,OAAO,cACxBsrG,YAAaj4I,KAAK2sC,OAAO,eACzByhL,aAAcpuN,KAAK2sC,OAAO,gBAC1BuZ,MAAOlmD,KAAK2sC,OAAO,SACnB46D,WAAYvnG,KAAKwnG,YACjB8mH,YAAa,SAAArlN,GACJ,EAAK0jC,OAAO,mBACb,EAAK6jV,sBAAwBvnX,EAAEqyI,UAEnC,EAAK3uG,OAAO,kBAAmB,EAAKwpD,WAAWltF,EAAEqyI,YAE7C,IADe,EAAKu1O,qBAAqB5nX,KAEzC,EAAK8kE,QAAO,GACZ,EAAK0jT,aAAaprW,QAEzB,EAER,EACDqrW,kBA7TgC,WAmU5B,OALI1xX,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAO36N,OAAO,YAAc3sC,KAAKmtD,MACrDntD,KAAKmtD,MAAM9mC,QAEXrmB,KAAKwe,QAEF,CACV,EACDsxW,YArUgC,WAwU5B,OAFA9vX,KAAK0e,QACL1e,KAAKyxX,aAAaprW,SACX,CACV,EACDsrW,YA1UgC,WA4U5B,OADA3xX,KAAK0e,SACE,CACV,EACDipP,aA9UgC,WA+U5B,IAAIiqH,EAAS7gT,GAAE,SACf/wE,KAAKg6D,WAAWr0D,OAAOisX,GACvB5xX,KAAKsnQ,OAAStnQ,KAAKmjK,iBAAiByuN,EAAQ79I,GAAO/zO,KAAKwxX,iBACxDxxX,KAAKsnQ,OAAOhtE,WAAWlsH,SA3VA,6BA4VvBpuE,KAAKsnQ,OAAOjrD,WAAWjuI,SAxVY,mCAyVnCpuE,KAAKsnQ,OAAOv6N,GAAG,SAAU/sC,KAAKioQ,oBAAoBnrQ,KAAKkD,OACvDA,KAAKsnQ,OAAOv6N,GAAG,UAAW/sC,KAAK+nQ,qBAAqBjrQ,KAAKkD,OACzDA,KAAKu3M,wBAAwBv3M,KAAKsnQ,OAAQ,kBAC7C,EACDW,oBAxVgC,WAyV5BjoQ,KAAK2sC,OAAO,UAAU,GACtB3sC,KAAK6xX,uBAAsB,EAC9B,EACDznH,oBAAqB,SAASxsQ,GAC1B,IAAIR,EAAUwnM,GAAAA,wBAA+BhnM,GAC7CoC,KAAKwnQ,gBAAgBpqQ,GACrB,IAAIitQ,EAAcrsQ,OAAOgB,KAAK5B,IACzB,IAAMitQ,EAAYjpQ,QAAQ,WAAa,IAAMipQ,EAAYjpQ,QAAQ,WAClEpB,KAAK4nK,mBAEZ,EACDA,kBAAmB,WAAW,gBAEtB,IADak7F,GAAa9iQ,KAAK2sC,OAAO,2BAEtC3sC,KAAKwnQ,gBAAgB,SAAS,kBAAM3E,GAAgB,EAAK7oM,WAA3B,GAErC,EACDwtM,gBAAiB,SAASh4N,EAAYtxC,GAClC8B,KAAK+6M,iBAAiB,SAAUjjM,UACnC,EACDiwP,qBA7WgC,WA8W5B/nQ,KAAK2sC,OAAO,UAAU,GACtB3sC,KAAK6xX,uBAAsB,EAC9B,EACDC,gBAjXgC,SAiXhB5zX,GACZ,IAAI6zX,EAAc,CACdC,KAAM9zX,EAAQ8B,KAAKunQ,qBAAkB,GAEzCvnQ,KAAK86M,QAAQi3K,EAAa/xX,KAAKg6D,WAClC,EACDi4T,gBAvXgC,SAuXhB/zX,GAAO,WACfg0X,EAAmB,CACnBtqV,SAAU1pC,EACVmnQ,SAAU,WAEV8sH,EAAkB,CAAC,EAClBnyX,KAAK2sC,OAAO,UACbwlV,EAAgBz6W,MAAQ,kBAE5B1X,KAAKoyX,cAAcvlU,MAAK,SAAC1rD,EAAO43O,GACxB,IAAM53O,EACN,EAAK25M,SAAQ/hM,EAAAA,EAAAA,GAAS,CAAC,EAAGo5W,EAAiBD,GAAmBnhT,GAAEgoK,IAEhE,EAAKj+B,QAAQo3K,EAAkBnhT,GAAEgoK,GAExC,GACJ,EACD84I,sBAxYgC,SAwYV3zX,GAClB8B,KAAK8xX,gBAAgB5zX,GACrB8B,KAAKiyX,gBAAgB/zX,EACxB,EACDk0X,YA5YgC,WA6Y5B,OAAOpyX,KAAKyxX,aAAaz3T,WAAWh+D,KAAK,IAAIiU,OAhZ/B,aAiZjB,EACDigX,mBA/YgC,WAgZ5B,IAAImC,EAAeryX,KAAKyxX,cAAgBzxX,KAAKyxX,aAAaz3T,YAAc+W,GAAE,SACrE/wE,KAAKyxX,cACNzxX,KAAKg6D,WAAWr0D,OAAO0sX,GAE3BryX,KAAKyxX,aAAezxX,KAAKmjK,iBAAiBkvN,EAAcxrI,GAAa7mP,KAAKmxX,uBAC1EnxX,KAAKyxX,aAAar2K,mBAAmB,YAAap7M,KAAK0xX,kBAAkB50X,KAAKkD,OAC9EA,KAAKyxX,aAAar2K,mBAAmB,MAAOp7M,KAAK2xX,YAAY70X,KAAKkD,OAClEA,KAAKyxX,aAAar2K,mBAAmB,UAAWp7M,KAAK0xX,kBAAkB50X,KAAKkD,OAC5EA,KAAKyxX,aAAar2K,mBAAmB,SAAUp7M,KAAK8vX,YAAYhzX,KAAKkD,OACrEA,KAAKu3M,wBAAwBv3M,KAAKyxX,aAAc,sBAChDzxX,KAAK6xX,sBAAsB7xX,KAAK2sC,OAAO,UAC1C,EACDwjV,kBA5ZgC,WA6Z5B,IAAImC,EAAWtyX,KAAK2sC,OAAO,gBAAkB3sC,KAAK2sC,OAAO,iBACzD3sC,KAAKg6D,WAAWiU,YApae,8BAoa+BqkT,EACjE,EACDvkT,OAhagC,SAgazBltB,GAKH,OAJK7gD,KAAKsnQ,SACNtnQ,KAAK2nQ,eACL3nQ,KAAKi4M,kBAEFj4M,KAAKsnQ,OAAOv5L,OAAOltB,EAC7B,EACDriC,KAvagC,WAwa5B,OAAOxe,KAAK+tE,QAAO,EACtB,EACDrvD,MA1agC,WA2a5B,OAAO1e,KAAK+tE,QAAO,EACtB,EACD06O,eA7agC,SA6ajBrvT,EAAM8E,GACjB8B,KAAKmtD,OAASntD,KAAKmtD,MAAMxgB,OAAOvzC,EAAM8E,EACzC,EACDq0X,iBAhbgC,SAgbf3tX,GACb,IACI+xN,IADmBvvL,EAAAA,EAAAA,IAAcxiC,GACAA,EAAO5E,KAAKovN,eAAexqN,GAChE,OAAQwiC,EAAAA,EAAAA,IAAcuvL,GAA0D,GAA1CltN,QAAO2kD,EAAAA,GAAAA,eAAcuoK,EAAc,IAC5E,EACD05J,oBArbgC,SAqbZppJ,GACZjnO,KAAK2sC,OAAO,kBACZ3sC,KAAK2sC,OAAO,CACRhmC,KAAM3G,KAAKuyX,iBAAiBtrJ,GAC5BxgN,MAAM2gB,EAAAA,EAAAA,IAAc6/L,GAAgBA,EAAaxgN,UAAO,IAGhEzmB,KAAKwhK,8BAA8B,eAAgBylE,GACnDjnO,KAAKwhK,8BAA8B,kBAAmBxhK,KAAKm2F,WAAW8wI,GACzE,EACD39D,OA/bgC,WAgc5BtpK,KAAKmtD,OAASntD,KAAKmtD,MAAM6M,WAAWt8D,SACpCsC,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAOttM,WAAWt8D,QACzC,EACD80X,wBAncgC,SAmcRt0X,GAAO,WAC3B8B,KAAKyoT,eAAe,mBAAoBzoT,KAAK2sC,OAAO,mBAAoB0hB,EAAAA,EAAAA,IAAUnwD,GAAS,CAACA,GAAS,IACrG,IAAI0yX,EAAe5wX,KAAK2sC,OAAO,gBAC/B3sC,KAAKowX,oBAAoBxhU,MAAK,SAAAq4K,GAC1B,EAAKopJ,oBAAoBppJ,GACrB,EAAK7X,eAAewhK,KAAkB,EAAKxhK,eAAe6X,IAC1D,EAAK0pJ,4BAA4B,CAC7B91N,cAAe+1N,EACf1yX,MAAO+oO,GAGlB,GACJ,EACDwrJ,mBAhdgC,SAgdbr5X,EAAM8E,GACrB8B,KAAKyxX,aAAa9kV,OAAOvzC,EAAM8E,GAC/B8B,KAAK6xX,sBAAsB7xX,KAAK2sC,OAAO,UAC1C,EACD+lV,2BApdgC,SAodL/rO,GACvB,IACUvtJ,EAENutJ,EAFAvtJ,KACO8E,EACPyoJ,EADAzoJ,MAEAqnD,EAAY,CAAC,EACjBA,EAAUnsD,GAAQ8E,EAClB8B,KAAKyyX,mBAAmB,YAAYhtU,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAK+wX,sBAAuBxrU,IAC3EvlD,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAOnsD,SAC9B,EACDw3K,mBA9dgC,SA8dbz0X,GACf,GAAIA,EAAO,CACP8B,KAAKyoT,eAAe,gBAAiB,UACrC,IAAIymE,EAAkBlvX,KAAK2sC,OAAO,mBAClC3sC,KAAKyoT,eAAe,oBAAoBp6P,EAAAA,EAAAA,IAAU6gU,GAAmB,CAACA,GAAmB,IACzFlvX,KAAKwyX,wBAAwBxyX,KAAK2sC,OAAO,mBAC5C,MACG3sC,KAAKyoT,eAAe,gBAAiB,QACrCzoT,KAAK2sC,OAAO,CACRuiV,qBAAiB,EACjBjoJ,kBAAc,IAElBjnO,KAAK0yX,2BAA2B,CAC5B/rX,KAAM3G,KAAK2sC,OAAO,SAG7B,EACDimV,sBA/egC,SA+eVpjV,GAAY,WAC1B0/U,EAAkBlvX,KAAK2sC,OAAO,mBAClC3sC,KAAKyoT,eAAe,eAAgB,MACpCzoT,KAAK+6M,iBAAiB,QAAS,CAACvrK,KAC5B6e,EAAAA,EAAAA,IAAU6gU,IACVlvX,KAAKowX,oBAAoBxhU,MAAK,SAAAq4K,GAC1B,EAAKwhF,eAAe,mBAAoB,CAACymE,IACzC,EAAKzmE,eAAe,eAAgBxhF,EACvC,IAAE33K,MAAK,SAAAjwD,GACJ,EAAKopT,eAAe,mBAAoB,GAC3C,IAAEpyP,OAAOr2D,KAAKqwX,oBAAoBvzX,KAAKkD,MAE/C,EACD6yX,kBAAmB,WACf,IAAI3sU,EAAQpuC,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK9X,KAAKwnG,YAAYthD,QAC9FlmD,KAAKwnG,iBAAc,EACnBxnG,KAAKs+O,mBAAmBp4L,GACxBlmD,KAAK8yX,gBACR,EACDA,eAAgB,WACZ9yX,KAAK2vX,oBACL3vX,KAAKyoT,eAAe,UAAWzoT,KAAK+vX,UACvC,EACD1pW,MAAO,WACHrmB,KAAKyxX,aAAaprW,OACrB,EACDy5I,eAzgBgC,SAygBjBliK,GACX,IAAI0sQ,EAEMlxQ,EAENwE,EAFAxE,KACO8E,EACPN,EADAM,MAEJ,OAAQ9E,GACJ,IAAK,gBACD4G,KAAK2yX,mBAAmBz0X,GACxB,MACJ,IAAK,cACD8B,KAAKmwX,oBACLnwX,KAAKkwX,qBACL,MACJ,IAAK,cACDlwX,KAAKkvN,wBACLlvN,KAAKyoT,eAAervT,EAAM8E,GAC1B8B,KAAKqwX,oBAAoBrwX,KAAK2sC,OAAO,iBACrC,MACJ,IAAK,UACD3sC,KAAK6yX,oBACL,MACJ,IAAK,qBACD7yX,KAAKo3M,0BAA0Bp3M,KAAKyxX,aAAc7zX,GAClD,MACJ,IAAK,kBACD,GAAI,4BAA8BA,EAAKiyC,SACnC,WAEA,IAAWjyC,EAAKM,MAAM2iD,gBACfjjD,EAAKM,MAAM2iD,QAEtB7gD,KAAKoqQ,oBAAoBxsQ,GACzBoC,KAAKo3M,0BAA0Bp3M,KAAKsnQ,OAAQ1pQ,GAC5C,MACJ,IAAK,SACDoC,KAAK+tE,OAAO7vE,GACZ,MACJ,IAAK,oBACL,IAAK,oBACD8B,KAAKyoT,eAAervT,EAAM8E,GAC1B8B,KAAKyyX,mBAAmBr5X,EAAM8E,GAC9B8B,KAAKmiD,SAASvkD,GACd,MACJ,IAAK,QACDoC,KAAK6yX,kBAAkB7yX,KAAK2sC,OAAO,UACnC3sC,KAAK4yX,sBAAsBx5X,GAC3B,MACJ,IAAK,aACGyL,MAAMC,QAAQ5G,GACd8B,KAAK6yX,kBAAkB7yX,KAAK2sC,OAAO,gBAEnC3sC,KAAKooG,kBACLpoG,KAAK8yX,kBAET9yX,KAAK4yX,sBAAsBx5X,GAC3B,MACJ,IAAK,OACL,IAAK,OACD4G,KAAK0yX,2BAA2B90X,GAChC,MACJ,IAAK,gBACDoC,KAAKmwX,oBACLnwX,KAAKkwX,qBACLlwX,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAOnsD,UAC3B,MACJ,IAAK,QACL,IAAK,SACDn7M,KAAKmiD,SAASvkD,GACd,QAAU0sQ,EAAetqQ,KAAKsnQ,cAAW,IAAWgD,GAAwBA,EAAanvD,UACzF,MACJ,IAAK,cA+BL,IAAK,WACDn7M,KAAKyyX,mBAAmBr5X,EAAM8E,GAC9B,MA9BJ,IAAK,eACL,IAAK,UACL,IAAK,aACL,IAAK,gBACL,IAAK,eACL,IAAK,qBACD8B,KAAKyoT,eAAervT,EAAM8E,GAC1B,MACJ,IAAK,0BACD8B,KAAKi4M,iBACL,MACJ,IAAK,kBACDj4M,KAAKwyX,wBAAwBt0X,GAC7B,MACJ,IAAK,eACD,MACJ,IAAK,cACD8B,KAAK+mP,yBACL,MACJ,IAAK,gBACD/mP,KAAKyvX,2BACL,MACJ,IAAK,qBACDzvX,KAAK0vX,gCACL,MACJ,IAAK,iBACD1vX,KAAK+tE,OAAO/tE,KAAK2sC,OAAO,WACxB,MAIJ,QACI3sC,KAAKmiD,SAASvkD,GAEzB,IACF6kD,QAAQwlD,IACXuqE,GAAkB,mBAAoBo4E,IACtC,IC5qBImoI,GAAgB,CAAC,iBAAkB,WAAY,aAAc,YAAa,SAAU,cAAe,SAAU,YAAa,gBAAiB,oBAOxI,SAASC,GAAmC7sU,EAASvhD,GACxD,IAAIquX,EACJ,GAAK9sU,EAAL,CAGA,IAAI2qK,EAAQ3qK,EAAQurK,uBAAuB9sN,GAC3C,GAAKksN,EAAMnwN,OAAX,CAGA,IAAI26I,EAAWn1F,EAAQ4nK,aAAa+C,GAChCoiK,KAAwB,QAAUD,EAAoB33O,EAASl+I,eAAY,IAAW61X,GAAqBA,EAAkBztW,UAAY81H,EAAS91H,UAAY2gC,EAAQxZ,OAAO,aAErKq2H,EACR1nB,EADA0nB,OAEJ,GAAIA,IAAW,IAAM+vN,GAAc3xX,QAAQ4hK,GAAS,CAChD,IAAImwN,EAAUriK,EAAM90N,KAAKgnK,EAAOxuJ,cAAc5S,QAAQ,KAAM,SAC5D,GAAIuxX,EAAQxyX,OAAQ,CAChB,IAAIyyX,EAAuBC,EACvBC,EAxBM,SAASt5T,GAC3B,IAAIshF,EAAWthF,EAAS1/D,MAAQ0/D,EAAS1/D,OACrC87K,EAAe96B,GAAYA,EAAS86B,aACpCrT,EAAaqT,GAAgBA,EAAa,GAC9C,OAAOrT,GAAcznB,EAASynB,EACjC,CAmB8BwwN,CAAgBJ,GACnC,IAAKG,EACD,OAEJ,IAIQE,EAJJC,EAAe,QAAUL,EAAwBE,EAAaztN,oBAAiB,IAAWutN,OAAwB,EAASA,EAAsB30X,KAAK60X,GAC1J,GAAI,qBAAuBtwN,EACvBywN,EAAeA,GAAgBA,EAAaz3X,KAAK,IAAIiU,OAhC5C,wBAmCTwjX,EAAe,QAAUD,EAAgBC,SAAiB,IAAWD,EAAgBA,EAAgBziT,GAAEuiT,EAAa9mX,WAExH,IAAIg0C,EAAW,QAAU6yU,EAAqB/3O,EAASl+I,eAAY,IAAWi2X,OAAqB,EAASA,EAAmB7yU,SAC3H0yU,EACAO,EAAavlT,KAAK,YAAa,GAE/BulT,EAAavlT,KAAK,WAAY,OAAS1tB,QAAY,IAAWA,EAAWA,EAAW,EAE3F,CACJ,CA5BA,CAJA,CAiCJ,CC1CD,IACakzU,GAAb,WACI,WAAY/uW,IAAS,eACjB3kB,KAAK2zX,SAAWhvW,CACnB,CAHL,0CAII,WAAgB,GAJpB,mCAKI,WAA0B,GAL9B,8BAMI,WAAqB,GANzB,yBAOI,WAAgB,GAPpB,2BAQI,WAAkB,GARtB,8BASI,WACI,IAAIivW,EACJ,OAAO,QAAUA,EAAwB5zX,KAAK2zX,SAAShnV,OAAO,gBAAa,IAAWinV,EAAwBA,EAAwB,EACzI,GAZL,4BAaI,WACI,OAAO5zX,KAAK2zX,SAAS77J,sBAAsB93N,KAAK2zX,SAAShiK,gBAAgB,EAC5E,GAfL,2BAgBI,WACI,IAAIqd,EAAShvO,KAAK2zX,SAAS1lJ,wBAAwBjyO,KAAK,IAAIiU,OAlB1C,qBAkBuE2/D,GAAG,GAC5F,GAAKo/J,EAAOruO,OAAZ,CAGA,IAAIq/L,EAAep1H,GAAS5qE,KAAK2zX,SAAS35T,YACtCy1K,EAAgBzkK,GAAcgkK,GAAUpkK,GAASokK,GACrDA,EAAO1pM,IAAI,WAAY06J,EAAeyvC,EAHrC,CAIJ,GAxBL,gCAyBI,WAAuB,GAzB3B,+BA0BI,WAAsB,GA1B1B,gCA2BI,WAAuB,GA3B3B,4BA4BI,WAAmB,KA5BvB,KCEIokJ,GAA4B,yBAE5BC,GAAoC,iCACpCC,GAA6B,0BAE7BC,GAAkC,+BAEjBC,GAAAA,SAAAA,gIACjB,YACI,qDACAj0X,KAAKm5M,iBAAmB,IAAIlpM,OAAO4jX,GAA2B,UAAU5jX,OAAO6jX,GAAmC,IACrH,4BACD,WACI9zX,KAAKquO,mBACL,2DACAruO,KAAKk0X,cACR,6BACD,WACI,OAAOl0X,KAAKszN,iBAAiBvoN,UAChC,8BACD,WACI,OAAO/K,KAAKm0X,eAAeppX,SAAS/K,KAAK4zN,gBAC5C,gCACD,WAAkB,WACVp5I,EAAax6E,KAAKszN,kBACtBzmK,EAAAA,EAAAA,IAAK,CAAC,SAAU,SAAU,QAAS,SAAS,SAAC/tD,EAAGyvO,GAC5C,IAAI6lJ,EAAc,KAAKnkX,OAAOs+N,EAAS,WAClC,EAAK6lJ,KACN,EAAKA,GAAerjT,GAAE,SAAS3C,SAAS2lT,KAE5C,EAAKK,GAAazlT,SAAS6L,EAC9B,GACJ,6BACD,YACI,iDAAmBziE,MAAM/X,KAAM8X,WAC/B9X,KAAKq0X,iBACR,6BACD,WACyBr0X,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAhCvB,0BAiCRi+D,KAAK,OAAQ,OAC/B,gCACD,WACI,IAAIomT,EAAYt0X,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAO8jX,KAChDO,EAAUjmT,YAAY2lT,IACtBM,EAAU53V,IAAI,UAAUkzC,IAAI,GAAGxB,SAAS4lT,GAC3C,4BACD,SAAY7yX,EAAOyD,EAAM4rO,EAAeC,GACpC,IAAIC,EACA/9M,EAAW,QAAU+9M,EAAiB9rO,EAAK+tB,gBAAa,IAAW+9M,EAAiBA,EAAiB,OACrGl2J,EAAax6E,KAAK,KAAKiQ,OAAO0iB,EAAU,YACxCmtC,GAAc,0DAAkB3+D,EAAOyD,EAAM41E,EAAYi2J,GAgB7D,OAfIzwO,KAAKm2N,qBAAqB,CACtB76E,SAAU12I,KAEdk7D,EAAYsO,SAlDQ,2BAoDpB,SAAWz7C,GAAY,aAAe/tB,EAAKo+J,QAAU,kBAAoBp+J,EAAKo+J,QAAUp+J,EAAK2vX,WAC7Fz0T,EAAYsO,SAASylT,IAErB,aAAejvX,EAAKo+J,QACpBljG,EAAYsO,SA3DU,4BA6DtB,kBAAoBxpE,EAAKo+J,QACzBljG,EAAYsO,SAAS0lT,IAEzBh0T,EAAYsO,SAASxpE,EAAK2lK,UACnBzqG,CACV,qCACD,SAAqBliE,GACjB,IAAI4hB,GAAW,mEAA2B5hB,GACtCtD,EAAOsD,EAAK09I,SAEhB,OADmBhhJ,GAAQA,EAAKk6X,kBACTh1W,CAC1B,mCACD,WACI,MAAO,CACHwhF,UAAU,EAEjB,kCACD,SAAkB/3F,EAAGrL,EAAMmC,GACnBgxE,GAAE9nE,EAAE0O,QAAQm4D,QAAQ,IAAI7/D,OAAO4jX,KAA4BlzX,SAC3D,gEAAwBsI,EAAGrL,EAAMmC,EAExC,uBACD,WACIC,KAAKm0X,eAAermU,SACpB,qDACH,OAhFgBmmU,CAAwBj4E,ICRxBy4E,GAAAA,SAAAA,6IACjB,WACI,OAAOhvU,EAAAA,GAAAA,IAAO,kEAA4B,CACtC86J,qBAAqB,GAE5B,gCACD,WACI,MAAO,WACV,OARgBk0K,CAAkB1gJ,IAUvC0gJ,GAAUruQ,eAAiB,SAASh+G,GAChC2rO,GAAAA,eAAqB3rO,EACxB,EACDoqK,GAAkB,UAAWiiN,IClB7B,IC8BqBC,GAAAA,SAAAA,yIACjB,WACI,IAAIC,EAAY,CAAC,EAIjB,OAHK30X,KAAK2sC,OAAO,WAAc3sC,KAAKmtD,MAAMxgB,OAAO,oBAC7CgoV,EAAY30X,KAAK40X,QAAQ99K,mBAEtBrxJ,EAAAA,GAAAA,IAAO,8DAAwBkvU,EAAW,CAC7CzwO,IAAK,WACDlkJ,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAOt5L,MAC9B,GAER,mCACD,WACI,OAAOvoB,EAAAA,GAAAA,IAAO,kEAA4B,CACtCS,MAAO,GACPooK,YAAa,KACb/mH,WAAY,KACZ6mH,aAAc,OACdkhK,cAAe,KACfnrL,oBAAoB,EACpBC,mBAAmB,EACnBq/D,QAAQ,EACRp1C,eAAgB,KAChBwmK,cAAc,EACdtsL,cAAc,EACdhhM,eAAW,EACXgkJ,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,OACNmE,KAAM,EACNguG,GAAI,GAERxpC,KAAM,CACF3oE,KAAM,OACNmyG,GAAI,KAInB,qCACD,WACI,OAAO,oEAA6BvnG,OAAO,CAAC,CACxCymE,OAAQ,WACJ,MAAO,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aACtD,EACD56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,WACJ,OAAOwmH,IACV,EACD9/L,QAAS,CACLmrM,cAAc,EACdh9C,UAAW,CACPz9E,KAAM,CACFzoE,KAAM,MACNwmB,SAAU,IACVriB,KAAM,CACFylM,MAAO,GAEXz3F,GAAI,CACAy3F,MAAO,IAGfjhI,KAAM,CACF3oE,KAAM,MACNwmB,SAAU,IACVriB,KAAM,CACFylM,MAAO,GAEXz3F,GAAI,CACAy3F,MAAO,QAM9B,sBACD,YACI,qDACAjvM,KAAKg6D,WAAWoU,SAvFG,mBAwFnBpuE,KAAK+mT,uBACL/mT,KAAK80X,wBACR,qCACD,WACI90X,KAAKgnP,iBAAmBhnP,KAAK2/J,sBAAsB,cACtD,uCACD,WACI3/J,KAAK+0X,mBAAqB/0X,KAAK2/J,sBAAsB,gBACxD,+BACD,WACI3/J,KAAK4pK,iBAAiBgsB,oBAAoB,CACtC/kJ,QAAS,IAAI8wH,GAAqB,cAEtC,6DACH,4BACD,WACI3hK,KAAKg1X,iBACL,0DACH,wBACD,YACI,uDACAh1X,KAAK86M,QAAQ,CACTuqD,UAAU,EACVz9N,SAAU5nC,KAAK2sC,OAAO,WAE7B,mCACD,WACQ3sC,KAAK2sC,OAAO,WACZ3sC,KAAK2nQ,cAEZ,uBACD,WACI3nQ,KAAK44M,mBACL54M,KAAKmtD,OAASntD,KAAKmtD,MAAM6M,WAAWt8D,SACpCsC,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAOttM,WAAWt8D,gBAC/BsC,KAAKmtD,aACLntD,KAAKsnQ,MACf,8BACD,WAAgB,WACRvuB,EAAU/4O,KAAKg6D,WAAWoU,SA3HJ,0BA4H1BpuE,KAAK40X,QAAU50X,KAAKmjK,iBAAiB41E,EAASpwC,GAAQ,CAClDliL,KAAM,WACNjH,SAAU,UACV+oL,aAAcvoM,KAAK2sC,OAAO,gBAC1By3J,mBAAmB,EACnBjmJ,mBAAmB,EACnBm/H,QAAS,SAAAr0K,GACL,EAAK0jC,OAAO,UAAW,EAAKA,OAAO,WACnC,EAAKooV,mBAAmB9rX,EAC3B,GAER,mCACD,SAAmB+wD,EAAU97D,EAAO+K,GAChCjJ,KAAK40X,QAAQl8K,mBAAmB1+I,EAAU97D,EAAO+K,EACpD,sCACD,SAAsBw6P,GAClB,IAAI/6N,EAAQ,OAAS+6N,QAAU,IAAWA,EAASA,GAAUzjQ,KAAKsnQ,OAAO36N,OAAO,WAC5E82N,GACAzjQ,KAAK2nQ,eAET3nQ,KAAKsnQ,OAAOv5L,OAAOrlC,GACnB1oC,KAAK86M,QAAQ,WAAYpyK,EAC5B,6BACD,WAAe,WACX,IAAI1oC,KAAK6mQ,QAAT,CAGA7mQ,KAAK6mQ,QAAU91L,GAAE,SAASpC,SAAS3uE,KAAKg6D,YACxC,IAAI,EAIAh6D,KAAK2sC,SAHOqT,EADhB,EACIA,WACWz4C,EAFf,EAEIA,UACWgkJ,EAHf,EAGIA,UAEJvrJ,KAAKsnQ,OAAStnQ,KAAKmjK,iBAAiBnjK,KAAK6mQ,QAAS,UAAW,CACzDnnN,cADyD,SAC3C1oC,GAGNA,EADAoa,UAEMirL,WAAWjuI,SApKI,iCAoKyCA,SArKjD,wBAsKpB,EACDkxI,gBAAgB,EAChBa,gBAAiB,SAAAw2B,GAAc,OAAI,EAAKmyE,YAAYnyE,EAArB,EAC/B6xB,iCAAiC,EACjCvnO,UAAW,kBAAM,EAAK4nR,eAAX,EACXr+S,SAAU,CACNi4B,GAAI,OAAOxyB,OAAO+vC,EAAa,OAAS,SACxC6E,GAAI,UAAU50C,OAAO+vC,EAAa,OAAS,SAC3C+tJ,UAAW,WACX9gM,OAAQ,CACJmX,EA3KQ,GA6KZypL,GAAI7tM,KAAKg6D,YAEbuxF,UAAWA,EACXv+G,gBAAiB,SAAA03H,GACb,IACUtrK,EAENsrK,EAFAtrK,KACO8E,EACPwmK,EADAxmK,MAEA,YAAc9E,GACd,EAAKuzC,OAAO,SAAUzuC,EAE7B,EACDqJ,UAAWA,EACX4tO,mBAAmB,EACnB3oN,OAAQ,OACRmE,MAAO,OACP+uL,mBAAoB,SAAAz2M,GAAC,OAAI,EAAKw/P,6BAA6Bx/P,EAAtC,EACrBq3M,oBAAoB,EACpBv7J,SAAS,EACT+xG,aAAa,EACb29E,WAAW,EACX1C,YAAY,EACZt1B,qBAAqB,GA/CxB,CAiDJ,8BACD,WACI,IAAIziJ,EAAWh6D,KAAKg6D,WAChBg2G,EAAYh2G,EAAS/sD,SAASw3B,IAC9B+pK,EAAetjI,IAAenqB,EAAAA,EAAAA,OAC9B9f,EAAY13B,KAAKkuB,IAAIu4I,EAAWw+B,EAAex+B,EAAY9kG,GAAelR,IAC9E,OAAOzwD,KAAKsZ,IAAI2rL,EAAcvtK,EA3MV,EADS,GA6MhC,6CACD,SAA6Bh4B,GAEzB,OADsB8nE,GAAE9nE,EAAE0O,QAAQm4D,QAAQ9vE,KAAKg6D,YAAYr5D,MAE9D,4BACD,SAAYg2O,GAAgB,WACpBr8C,EAAWvpH,GAAE4lK,GACjBr8C,EAASlsH,SAtNe,wBAuNxBpuE,KAAKmtD,MAAQntD,KAAKmjK,iBAAiBm3B,EAAU25L,GAAiB,CAC1D1sR,WAAYvnG,KAAKi1X,qBACjBr4E,aAAc,eACdM,iBAAiB,EACjBz+P,WAAY,GACZ2vK,aAAcpuN,KAAK2sC,OAAO,gBAC1B2hL,YAAa,SAAArlN,GACL,EAAK0jC,OAAO,iBACZ,EAAKA,OAAO,UAAU,GAE1B,EAAKq6M,iBAAiB/9O,EACzB,EACDu3C,UAAW,EACXrC,mBAAmB,EACnBgmJ,oBAAoB,EACpBkqB,eAAgBruN,KAAK2sC,OAAO,kBAC5BiiL,gBAAiB,CACb18L,KAAM,aAGjB,mCACD,SAAmBttB,EAAMuI,EAAUjP,GAC/B,IAAI6pT,EACJ,QAAUA,EAAc/nT,KAAKmtD,aAAU,IAAW46P,GAAuBA,EAAYj2F,mBAAmBltN,EAAMuI,EAAUjP,GACxH80X,GAAmChzX,KAAKmtD,MAAOvoD,EAClD,mCACD,WACI,IAAIikG,EACJ,OAAO,QAAUA,EAAe7oG,KAAK2sC,OAAO,qBAAkB,IAAWk8D,EAAeA,EAAe7oG,KAAK2sC,OAAO,QACtH,mCACD,WACI,IAAIm3T,EACJ,QAAUA,EAAe9jW,KAAKmtD,aAAU,IAAW22S,GAAwBA,EAAan3T,OAAO,aAAc3sC,KAAKi1X,6BAC3Gj1X,KAAKk1X,eACf,sCACD,WACI,OAAO,qEAA8BjlX,OAAO,CAACjQ,KAAKmtD,OACrD,kCACD,SAAkBtM,IACd,gEAAwBA,GACxB7gD,KAAK40X,QAAQjoV,OAAO,UAAWkU,EAClC,+BACD,SAAejjD,GACX,IAAI+nW,EAAcwvB,EAAcC,EAEtBh8X,EAENwE,EAFAxE,KACO8E,EACPN,EADAM,MAEJ,OAAQ9E,GACJ,IAAK,QACL,IAAK,aACI4G,KAAK2sC,OAAO,UAGb3sC,KAAKwmT,qBAFLxmT,KAAKk1X,iBAAkB,EAI3B,MACJ,IAAK,eACD,QAAUvvB,EAAe3lW,KAAKmtD,aAAU,IAAWw4S,GAAwBA,EAAah5T,OAAOvzC,EAAM4G,KAAK+qK,aAAa7sK,IACvH,MACJ,IAAK,cACD8B,KAAK+mT,uBACL,MACJ,IAAK,gBACD/mT,KAAK+0X,qBACL,MACJ,IAAK,eACD/0X,KAAKypK,cACL,MACJ,IAAK,oBACD,QAAU0rN,EAAen1X,KAAKmtD,aAAU,IAAWgoU,GAAwBA,EAAaxoV,OAAOvzC,EAAM8E,IACrG,6DAAqBN,GACrB,MACJ,IAAK,iBACD,QAAUw3X,EAAep1X,KAAKmtD,aAAU,IAAWioU,GAAwBA,EAAazoV,OAAOvzC,EAAM8E,GACrG,MACJ,IAAK,SACG8B,KAAKk1X,iBACLl1X,KAAKwmT,qBAETxmT,KAAKq1X,sBAAsBn3X,GAC3B8B,KAAKs1X,gCACL,MACJ,IAAK,eACD,MACJ,IAAK,YACDt1X,KAAKsnQ,QAAUtnQ,KAAKsnQ,OAAO36N,OAAOvzC,EAAM8E,GACxC,MACJ,IAAK,WACG8B,KAAKmtD,OACLntD,KAAKs1X,gCAET,MACJ,SACI,6DAAqB13X,GAEhC,8CACD,WAAgC,WAC5BoC,KAAK2sC,OAAO,SAASjsC,SAAQ,SAAAkE,GAAI,OAAIouX,GAAmC,EAAK7lU,MAAOvoD,EAAnD,GACpC,OAtTgB8vX,CAAqB9vL,ICbtCqa,GAAwB,qBAGxBs2K,GAA+B,4BAC/BC,GAAsB,4BACbC,GAAb,WACI,WAAY9wW,IAAS,eACjB3kB,KAAK2zX,SAAWhvW,CACnB,CAHL,0CAII,WAAc,YACV4qC,EAAAA,GAAAA,cAAY,WACR,EAAKmmU,sBACL,EAAKC,kBACR,GACJ,GATL,iCAUI,WAAsB,WAClB,GAAK31X,KAAK41X,uBAAV,CAGA51X,KAAK61X,6BACL,IAAIC,EAAQ/kT,GAAE,SAASpC,SAAS3uE,KAAK+1X,0BACjCC,EAAkBh2X,KAAK2zX,SAASh0N,sBAAsB,eACtD60N,EAAmBx0X,KAAK2zX,SAAS7oN,qBAAqB,oBAC1D9qK,KAAKi2X,MAAQj2X,KAAK2zX,SAASxwN,iBAAiB2yN,EAAOpB,GAAc,CAC7DlvW,SAAUxlB,KAAK2zX,SAAShnV,OAAO,YAC/ByhL,aAAc,kBAAMomK,CAAN,EACdlmK,YAAa,SAAArlN,GACT+sX,EAAgB/sX,EACnB,EACD1B,UAAWvH,KAAK2zX,SAAShnV,OAAO,iBAChCK,gBAAiB,SAAAh2B,GACb,IACU5d,EAEN4d,EAFA5d,KACO8E,EACP8Y,EADA9Y,MAEA,WAAa9E,GACb,EAAKu6X,SAAShnV,OAAO,sBAAuBzuC,GAE5C,UAAY9E,GACZ,EAAK88X,sBAAsBh4X,EAElC,GAvBJ,CAyBJ,GAtCL,6BAuCI,WACS8B,KAAKi2X,OACNj2X,KAAK01X,sBAET11X,KAAKi2X,OAASj2X,KAAKi2X,MAAMtpV,OAAO,QAAS3sC,KAAKm2X,iBAC1Cn2X,KAAKi2X,QAAUj2X,KAAKi2X,MAAMtpV,OAAO,SAAShsC,QAC1CX,KAAKi2X,MAAMtpV,OAAO,UAAU,EAEnC,GA/CL,wCAgDI,WACI3sC,KAAKo2X,wBAA0BrlT,GAAE,SAASpC,SAAS3uE,KAAK2zX,SAAS7kJ,gBAAgB1gK,SApD9D,qBAoD6FA,SArD3E,4BAsDxC,GAlDL,oCAmDI,WACI,OAAOpuE,KAAKo2X,uBACf,GArDL,mCAsDI,SAAsBjzE,GAClB,IAAIj9P,EAAQ,OAASi9P,QAAa,IAAWA,EAAYA,EAAYnjT,KAAKm2X,gBACtEE,EAAgBnwU,EAAMvlD,QAAUX,KAAK41X,qBAAqB1vU,GAC9DlmD,KAAKq1X,sBAAsBgB,EAC9B,GA1DL,mCA2DI,SAAsBn4X,GACb8B,KAAK+1X,0BAGV/1X,KAAK+1X,yBAAyB9nT,YAAYgxI,IAAwB/gN,EACrE,GAhEL,8BAiEI,WAAmB,YACfqxD,EAAAA,GAAAA,cAAY,WACR,EAAK+mU,iBACR,GACJ,GArEL,+BAsEI,WACIt2X,KAAKs2X,iBACR,GAxEL,8BAyEI,WAAmB,IACX1C,EADW,OAEf,OAAOliU,EAAAA,GAAAA,MAAK,QAAUkiU,EAAwB5zX,KAAK2zX,SAAShnV,OAAO,gBAAa,IAAWinV,EAAwBA,EAAwB,IAAI,SAAAhvX,GAAI,OAAK,EAAK+uX,SAAS4C,YAAY3xX,EAA/B,GACtJ,GA5EL,6BA6EI,WACI,OAAO5E,KAAK2zX,SAASrgK,iBAAiBvoN,SAAS,IAAIkF,OAAOslX,GAA8B,KAAKtlX,OAAOulX,KAAsB94V,IAAI,IAAIzsB,OAAOgvM,IAC5I,GA/EL,2BAgFI,WAAgB,IACRu3K,EAAwBC,EADhB,OAERtzE,GAAYzxP,EAAAA,GAAAA,MAAK,QAAU8kU,EAAyBx2X,KAAK2zX,SAAShnV,OAAO,gBAAa,IAAW6pV,EAAyBA,EAAyB,IAAI,SAAA5xX,GAAI,OAAI,EAAK+uX,SAAS4C,YAAY3xX,EAA9B,IAC3J8xX,EAAe12X,KAAK22X,kBACxB32X,KAAK42X,cAAgB,QAAUH,EAAsBz2X,KAAK42X,qBAAkB,IAAWH,EAAsBA,EAAsB,GACnI,IAAII,EAAgB,GAAG9xX,MAAMtG,KAAKi4X,GAAc3yX,KAAI,SAAA+yX,GAChD,IAAIx7O,EAAW,EAAKq4O,SAAS5lK,aAAa+oK,GACtCniK,EAAiB5jJ,GAAE+lT,GACnBC,EAAcpiK,EAAe5pN,WACjC,OAAO06C,EAAAA,GAAAA,GAAO,CACV+uU,iBAAkB,WAMd,OALA,EAAKoC,cAAcx2X,KAAK,CACpBmH,UAAWotN,EACX/vN,KAAMmyX,IAEOhmT,GAAE,SAAS3C,SAASmnT,IACnB5vX,OAAOoxX,EAC5B,GACFz7O,EACN,IACD,MAAO,GAAP,gBAAWu7O,IAAX,QAA6B1zE,GAChC,GArGL,kCAsGI,SAAqBj9P,GACjB,IAAIi9P,EAAY,OAASj9P,QAAS,IAAWA,EAAQA,EAAQlmD,KAAK2zX,SAAShnV,OAAO,SAC9EnpC,GAAS,EACTwzX,GAAe5iU,EAAAA,GAAAA,IAAc,WAC7B6iU,GAAiB7iU,EAAAA,GAAAA,IAAc,gBAYnC,OAXAvH,EAAAA,EAAAA,IAAKs2P,GAAY,SAAShiT,EAAOyD,GAC7B,IAAIsyX,EAAcF,EAAapyX,EAAM,CACjC0vD,eAAe,IAEf6iU,EAAeF,EAAeryX,EAAM,CACpC0vD,eAAe,MAEf,IAAU4iU,GAAgB,SAAWC,GAAgB,WAAaA,IAAiB,SAAWvyX,EAAK+tB,WACnGnvB,GAAS,EAEhB,IACMA,CACV,GAvHL,2BAwHI,WACI,IAAI4zX,EACJp3X,KAAK2zX,SAASjlJ,gBAAgBppM,IAAI,CAC9BtG,OAAQ,SACR06C,MAAO,UAEX7sB,EAAAA,EAAAA,IAAK,QAAUuqU,EAAuBp3X,KAAK42X,qBAAkB,IAAWQ,EAAuBA,EAAuB,IAAK,SAASt4X,EAAGqW,GACnI47D,GAAE57D,EAAI5N,WAAW5B,OAAOwP,EAAIvQ,KAC/B,IACD5E,KAAK42X,cAAgB,GACrB,IAAI52L,EAAep1H,GAAS5qE,KAAK2zX,SAAS35T,YAE1C,OADAh6D,KAAKq3X,mBAAmBr3L,GACjBA,CACV,GArIL,gCAsII,SAAmBA,GACf,IAAIyuC,EACAooJ,EAAgB72X,KAAK2zX,SAAS35T,WAAWh+D,KAAK,IAAIiU,OAAOslX,KAC7D,GAAKsB,EAAcl2X,OAAnB,CAGAq/L,EAAe,QAAUyuC,EAAgBzuC,SAAiB,IAAWyuC,EAAgBA,EAAgB7jK,GAAS5qE,KAAK2zX,SAAS35T,YAC5H+W,GAAE8lT,GAAexoT,YAAYmnT,IAE7B,IADA,IAAIrlD,EAAanwU,KAAKs3X,iBACfT,EAAcl2X,QAAUq/L,EAAemwI,GAAY,CAC1C0mD,EAAcjnT,IAAI,GACxBxB,SAASonT,IACfrlD,EAAanwU,KAAKs3X,iBAClBT,EAAcx1X,QAAQ,EAAG,EAC5B,CATA,CAUJ,GArJL,4BAsJI,WACI,OAAOrB,KAAK2zX,SAAS77J,sBAAsB,CAAC93N,KAAK2zX,SAAS/kJ,gBAAiB5uO,KAAK2zX,SAASjlJ,gBAAiB1uO,KAAK2zX,SAAS7kJ,gBAC3H,GAxJL,gCAyJI,SAAmBlqO,EAAMuI,EAAUjP,GAGvB,IAAIq5X,EAFZ,IAAI,aAAepqX,GAAY,qBAAuBA,IAC9CnN,KAAK2zX,SAAS4C,YAAY3xX,GAG1B,YADA,QAAU2yX,EAAcv3X,KAAKi2X,aAAU,IAAWsB,GAAuBA,EAAYzlK,mBAAmBltN,EAAMuI,EAAUjP,IAIhI8B,KAAKs2X,iBACR,GAlKL,yBAmKI,SAAY1xX,EAAMk7D,GACV,SAAWl7D,EAAK4yX,cAChB13T,EAAYsO,SAASmnT,GAE5B,GAvKL,4BAwKI,SAAen8X,EAAM8E,GACjB,IAAIu5X,EAAcC,EAAcC,EAAcC,EAAcC,EAC5D,OAAQz+X,GACJ,IAAK,WACD,QAAUq+X,EAAez3X,KAAKi2X,aAAU,IAAWwB,GAAwBA,EAAa9qV,OAAOvzC,EAAM8E,GACrG,MACJ,IAAK,sBACD,QAAUw5X,EAAe13X,KAAKi2X,aAAU,IAAWyB,GAAwBA,EAAa/qV,OAAO,SAAUzuC,GACzG,MACJ,IAAK,cACD,QAAUy5X,EAAe33X,KAAKi2X,aAAU,IAAW0B,GAAwBA,EAAahrV,OAAOvzC,EAAM8E,GACrG,MACJ,IAAK,gBACD,QAAU05X,EAAe53X,KAAKi2X,aAAU,IAAW2B,GAAwBA,EAAajrV,OAAO,YAAazuC,GAC5G,MACJ,IAAK,mBACD,QAAU25X,EAAe73X,KAAKi2X,aAAU,IAAW4B,GAAwBA,EAAalrV,OAAO,eAAgBzuC,GAE1H,KA1LL,KCPM45X,GAAAA,SAAAA,6IACF,WACI,OAAOryU,EAAAA,GAAAA,IAAO,kEAA4B,CACtC+uU,iBAAkB,WAClBuD,mBAAe,EACfC,qBAAqB,EACrBn5B,WAAW,GAElB,6BACD,WACI,OAAO7+V,KAAK2sC,OAAO,YACtB,kCACD,SAAkBo7B,GACV,WAAaA,KAGjB,iEACA/nE,KAAKi4X,gBAAgBrwN,oBACxB,4BACD,YACI,2DACA5nK,KAAKs1X,gCACLt1X,KAAKi4X,gBAAgB3vN,aACxB,+BACD,YACI,8DACAtoK,KAAKk4X,uBACR,+BACD,WACI,OAAIl4X,KAAKm4X,eACEn4X,KAAKiuO,yBAET,6DACV,sCACD,WACIjuO,KAAKg6D,WAAWiU,YArCM,uBAqC+BjuE,KAAKm4X,gBAC1Dn4X,KAAKi4X,gBAAkBj4X,KAAKm4X,eAAiB,IAAIzE,GAAkB1zX,MAAQ,IAAIy1X,GAAmBz1X,KACrG,gCACD,WACI,IAAIA,KAAKm4X,eAGT,OAAO,8DACV,wCACD,WACIn4X,KAAKi4X,gBAAgBZ,qBACrBr3X,KAAKi4X,gBAAgB/B,yBACrB,uEACAl2X,KAAKi4X,gBAAgBtC,kBACxB,4BACD,SAAYx0X,EAAOyD,EAAM4rO,EAAeC,GACpC,IAAI3wK,GAAc,0DAAkB3+D,EAAOyD,EAAM4rO,EAAeC,GAChEzwO,KAAKi4X,gBAAgB/lK,YAAYttN,EAAMk7D,GACvC,IACYkjG,EAERp+J,EAFAo+J,OACUo1N,EACVxzX,EADAwzX,SAKJ,MAHI,aAAep1N,GAAU,WAAao1N,GACtCt4T,EAAYmO,YA3DW,6BA6DpBnO,CACV,+BACD,WACI,OAAO9/D,KAAKi4X,gBAAgBX,gBAC/B,8BACD,WACI,OAAOt3X,KAAKi4X,gBAAgB9B,eAC/B,iCACD,WACI,OAAOn2X,KAAKi4X,gBAAgBjnJ,kBAC/B,8BACD,WACI,IAAIhxO,KAAKg6D,WAAWiV,GAAG,WAAvB,CAGA,IAAI+wH,EAAehgM,KAAKi4X,gBAAgB/pJ,gBACnCluO,KAAKm4X,iBACN,4DAAoBn4L,EAHvB,CAKJ,mCACD,SAAmBp7L,EAAMuI,EAAUjP,GAC1B8B,KAAKu2X,YAAY3xX,KAClB,iEAAyBA,EAAMuI,EAAUjP,GAE7C8B,KAAKi4X,gBAAgBnmK,mBAAmBltN,EAAMuI,EAAUjP,GACpD,aAAeiP,GAAY,qBAAuBA,GAClD6lX,GAAmChzX,KAAM4E,GAEzC,aAAeuI,GACfnN,KAAKm7M,SAEZ,8CACD,WAAgC,WAC5Bn7M,KAAKgxO,mBAAmBtwO,SAAQ,SAAAkE,GAAI,OAAIouX,GAAmC,EAAMpuX,EAA7C,GACvC,4BACD,SAAY02I,GACR,MAAO,SAAWA,EAAS3oH,UAAY,WAAa2oH,EAASk8O,YAChE,+BACD,SAAel8O,GACX,YAAO,IAAWA,EAAS3oH,UAAY,UAAY2oH,EAASk8O,YAC/D,+BACD,SAAexgX,GACX,IACU5d,EAEN4d,EAFA5d,KACO8E,EACP8Y,EADA9Y,MAGJ,OADA8B,KAAKi4X,gBAAgBn4N,eAAe1mK,EAAM8E,GAClC9E,GACJ,IAAK,gBACL,IAAK,mBACL,IAAK,sBACD,MACJ,IAAK,YACD4G,KAAKypK,cACL,MACJ,IAAK,YACD,mDAAqB1xJ,MAAM/X,KAAM8X,WACjC9X,KAAKs1X,gCACL,MACJ,SACI,mDAAqBv9W,MAAM/X,KAAM8X,WAE5C,iCACD,WACI9X,KAAK4nK,mBACR,OA7HCkwN,CAAgBzqJ,IA+HtB76D,GAAkB,YAAaslN,IAC/B,IC/IA,GD+IA,GEtIqBO,GAAAA,SAAAA,+HACjB,SAAK1gX,GACI3X,KAAKs4X,mBACNt4X,KAAKu4X,SAAS5rV,OAAO,SAAUh1B,GAEnC3X,KAAKu4X,SAASzqT,MACjB,qBACD,WACI9tE,KAAKu4X,SAASvqT,MACjB,iCACD,SAAiB+1D,GACb,IAAIrpI,EACJ,QAAUA,EAAKsF,KAAKw4X,iBAAc,IAAW99X,GAAcA,EAAGw/M,iBAAiBn2E,EAClF,sBACD,YACI,qDACA/jI,KAAKg6D,UACR,wBACD,YACI,uDACAh6D,KAAKy4X,gBACR,+BACD,WAAiB,WACbz4X,KAAKg6D,WAAWoU,SAxBK,2CAyBrB,IAAIsqT,EAAiB14X,KAAKs4X,kBACtBK,EAAcD,EAAiB3kJ,GAAQ+mI,GAC3C96W,KAAKu4X,SAAWv4X,KAAKmjK,iBAAiBnjK,KAAKg6D,WAAY2+T,EAAa,CAChEx4K,gBAAiB,kBAAM,EAAKy4K,uBAAX,EACjB54K,QAAS,kBAAM,EAAKw4K,UAAUnyW,OAArB,EACTw3I,oBAAqB,CAAC,CAClBnnF,OAAQ,kBAAMgiT,CAAN,EACRt7X,QAAS,CACL20O,YAAY,EACZgD,iBAAiB,EACjBD,aAAc,CAAC,CACXsE,SAAU,eAK7B,sCACD,WACI,IAAI51O,EAASutE,GAAE,SAAS3C,SA5CX,mCA8Cb,OADApuE,KAAKw4X,UAAYx4X,KAAKmjK,iBAAiB3/J,EAAQ60Q,GAAUr4Q,KAAK64X,uBAC1D74X,KAAKs4X,kBACYt4X,KAAK84X,kBAAkBt1X,GACtBw2D,WAEfx2D,CACV,kCACD,SAAkBqtC,GACd,IAAIrtC,EAASxD,KAAKmjK,iBAAiB,QAASkzH,GAAY,CACpDzvQ,UAAW,aAGf,OADApjB,EAAO82L,WAAW30L,OAAOkrC,GAClBrtC,CACV,+BACD,SAAewT,GACX,IAIItc,EAHMtB,EAEN4d,EAFA5d,KACO8E,EACP8Y,EADA9Y,MAGJ,GACS,UADD9E,EAEA,QAAUsB,EAAKsF,KAAKw4X,iBAAc,IAAW99X,GAAcA,EAAGiyC,OAAO,QAASzuC,EAEzF,oCACD,WACI,MAAO,CACHA,MAAO8B,KAAK2sC,OAAO,SACnB9pB,IAAK7iB,KAAK2sC,OAAO,OACjBlV,IAAKz3B,KAAK2sC,OAAO,OACjBuR,eAAgBl+C,KAAK2sC,OAAO,kBAC5BwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/Bq1M,eAAgBhiP,KAAK2sC,OAAO,kBAC5BisO,gBAAgB,EAChBp4N,SAAUxgD,KAAK2sC,OAAO,YAE7B,gCACD,WACI,OAAQqrC,GAAAA,UAAkBpD,OAC7B,OAlFgByjT,CAA0BzzL,IAoF/CpyB,GAAkB,2BAA4B6lN,ICzF9C,IACc/4S,GACV0C,GAAAA,SAuBA+2S,GAA2B,SAAAl0P,GAAM,MAAK,CACtCviI,IAAK,WACLmkB,KAAM,cACNq3B,YAAa,CACT+qH,MAzBoB,mCA2BxB8oB,aAAc,kBAAM9sD,EAAOm0P,wBAxBV,EAwBH,EACdx5U,eAAgB,SAAAv2C,GACZ,IAAIgwX,EAAiBhwX,EAAEmoB,UACvB6nW,EAAetsV,OAAO,WAAYusV,GAAyBr0P,IAC3DA,EAAOs0P,UAAU,OAAO,WACpBF,EAAetsV,OAAO,WAAYusV,GAAyBr0P,GAC9D,IACDA,EAAOs0P,UAAU,eAAe,WAC5BF,EAAetsV,OAAO,WAAYusV,GAAyBr0P,GAC9D,IACDA,EAAOs0P,UAAU,iBAAiB,WAC9BF,EAAetsV,OAAO,WAAYusV,GAAyBr0P,GAC9D,GACJ,EAnBgC,EAqBjCu0P,GAA2B,SAAAv0P,GAAM,MAAK,CACtCviI,IAAK,WACLqE,KAAMk+H,EAAOqoI,YACbpvN,YAAa,CACT+qH,MA7CoB,kCA+CxB8oB,aAAc,SAAA1oL,GAAC,OAAI47H,EAAOw0P,cAAcpwX,EAAzB,EACfu2C,eAAgB,SAAAv2C,GACZ,IAAIqwX,EAAiBrwX,EAAEmoB,UACvByzG,EAAOs0P,UAAU,eAAe,WAC5BG,EAAe3sV,OAAO,OAAQk4F,EAAOqoI,YACxC,IACDroI,EAAOs0P,UAAU,eAAe,WAC5BG,EAAe3sV,OAAO,OAAQk4F,EAAOqoI,YACxC,IACDroI,EAAOs0P,UAAU,iBAAiB,WAC9BG,EAAe3sV,OAAO,OAAQk4F,EAAOqoI,YACxC,IACDroI,EAAOs0P,UAAU,SAAS,WACtBG,EAAe3sV,OAAO,OAAQk4F,EAAOqoI,YACxC,IACDroI,EAAOs0P,UAAU,kBAAkB,WAC/BG,EAAe3sV,OAAO,OAAQk4F,EAAOqoI,YACxC,GACJ,EAxBgC,EA0BjCqsH,GAAuB,SAAA10P,GAAM,MAAK,CAClCviI,IAAK,OACLmkB,KAAM,cACNq3B,YAAa,CACT+qH,MAtEgB,+BAwEpB8oB,aAAc,kBAAM9sD,EAAOm0P,uBAtET,EAsEJ,EACdx5U,eAAgB,SAAAv2C,GACZ,IAAIi1S,EAAaj1S,EAAEmoB,UACnB8sR,EAAWvxQ,OAAO,WAAY6sV,GAAqB30P,IACnDA,EAAOs0P,UAAU,OAAO,WACpBj7E,EAAWvxQ,OAAO,WAAY6sV,GAAqB30P,GACtD,IACDA,EAAOs0P,UAAU,eAAe,WAC5Bj7E,EAAWvxQ,OAAO,WAAY6sV,GAAqB30P,GACtD,IACDA,EAAOs0P,UAAU,iBAAiB,WAC9Bj7E,EAAWvxQ,OAAO,WAAY6sV,GAAqB30P,GACtD,GACJ,EAnB4B,EAqB7Bq0P,GAA2B,SAAAr0P,GAC3B,IAAIhiH,EAAMgiH,EAAOl4F,OAAO,OACxB,IAAK9pB,EACD,OAAO,EAEXA,EAAM,IAAI/f,KAAK+f,GACf,IAAIsI,EAAU05G,EAAO40P,cAGrB,OAFA52W,EAAMy8D,GAASz8D,GACIgiH,EAAO60P,cAAc,EAAGvuW,EAAQ46D,SAC7BljE,CACzB,EACG22W,GAAuB,SAAA30P,GACvB,IAAIptG,EAAMotG,EAAOl4F,OAAO,OACxB,IAAKlV,EACD,OAAO,EAEXA,EAAM,IAAI30B,KAAK20B,GACf,IAAItM,EAAU05G,EAAO40P,cAGrB,OAFAhiW,EAAMA,EAAIynD,SAAS,GAAI,GAAI,IACZ2lD,EAAO60P,aAAa,EAAGvuW,EAAQ26D,WAC5BruD,CACrB,ECtGiCkiW,GAI9B33S,GAAAA,6BAHkB43S,GAGlB53S,GAAAA,iBAFiBxB,GAEjBwB,GAAAA,gBADiBzC,GACjByC,GAAAA,gBAEQkoK,GACR9hI,GAAAA,OACAyxQ,GAAc,CACdvtW,aAAc,GAEdwtW,GAAe,CACf75S,KAAM,GAEN85S,GAAgB,CAChB95S,KAAM,GAMN+5S,GAAU,SAAA/lW,GAAI,OAAIsrD,GAAgBtrD,EAAM6lW,GAAc,EAAxC,EACPG,GAAW,SAAAhmW,GAAI,OAAIsrD,GAAgBtrD,EAAM8lW,GAAe,EAAzC,EAOtBG,GAAY,SAAAjmW,GAAI,OAZC,IAYGA,EAAKitD,UAXV,IAWyCjtD,EAAKitD,QAA7C,EA8BhBi5S,GAAuB,SAAA/8X,GACvB,IACU62B,EAGN72B,EAHA62B,KACM8H,EAEN3+B,EAFA2+B,KACgBmiB,EAChB9gD,EADA8gD,eAEJ,OAAQniB,GACJ,IAAK,MACL,IAAK,OACL,IAAK,QACD,OAAO49V,GAAe1lW,EAAM8H,GAAM,EAAOmiB,GAC7C,IAAK,WAED,OA1CW,SAAAA,GAEnB,IADA,IAAIjqB,EAAO,IAAInxB,KAAKo7C,GACbg8U,GAAUjmW,IACbA,EAAO+lW,GAAQ/lW,GAEnB,OAAOA,CACV,CAoCkBmmW,CADYR,GAAa3lW,EAAMiqB,IAE1C,IAAK,SACD,OAAO,IAAIp7C,KAAKmxB,GAE3B,EACGomW,GAAqB,SAACv0S,EAAW1oF,GASjC,IARA,IAMIk9X,EALeC,EAGfn9X,EAHAm9X,cACMx+V,EAEN3+B,EAFA2+B,KACgBy+V,EAChBp9X,EADAo9X,eAIAC,EAAsB,IAAI33X,KAAKgjF,GAC1Bn9E,EAAI,EAAGA,EAAI4xX,EAAe5xX,IAE/B2xX,EAAgBI,GADED,EACgC1+V,EAAMy+V,GACxDC,EAAsBE,GAAuBL,EAAev+V,GAEhE,OAAOu+V,CACV,EACGI,GAAmB,SAACE,EAAwB7+V,EAAMy+V,GAClD,IAAIvmW,EACJ,OAAQ8H,GACJ,IAAK,MACD9H,EAAO+lW,GAAQY,GACf,MACJ,IAAK,OACD3mW,EAAOgmW,GAASW,GAChB,MACJ,IAAK,QACD3mW,EAhFI,SAAAA,GACZ,IAAIgsD,EAAOO,GAAgBvsD,GAC3B,OAAOsrD,GAAgBtrD,EAAM,CACzBgsD,KAAMA,GACP,EACN,CA2EkB46S,CAAUD,GACjB,MACJ,IAAK,WACD3mW,EArEe,SAAA6mW,GAGvB,IAFA,IAAI7mW,EAAO,IAAInxB,KAAKg4X,GAChBC,EAAgB,EACbA,EA1Ca,GA2CXb,GAAUjmW,IACX8mW,IAEJ9mW,EAAO+lW,GAAQ/lW,GAEnB,OAAOA,CACV,CA2DkB+mW,CAAqBJ,GAC5B,MACJ,IAAK,SACD3mW,EA7DU,SAACA,EAAMumW,GAAP,OAA0Bj7S,GAAgBtrD,EAAM,CAClEgsD,KAAMu6S,GACP,EAFmB,CA6DHS,CAAgBL,EAAwBJ,GAEvD,OA5FQ,SAAAvmW,GAAI,OAAIsrD,GAAgBtrD,EAAM4lW,IAAc,EAAxC,CA4FLqB,CAAMjnW,EAChB,EACG0mW,GAAyB,SAACQ,EAAsBp/V,GAChD,IAAI9H,EA9FI,SAAAA,GAAI,OAAIsrD,GAAgBtrD,EAAM4lW,GAAa,EAAvC,CA8FDuB,CAAMD,GACjB,GAAI,aAAep/V,EACf,KAAOm+V,GAAUjmW,IACbA,EAAO+lW,GAAQ/lW,GAGvB,OAAOA,CACV,EACUonW,GAAsB,SAACj+X,EAASwpB,GACvC,IAMI00W,EALMrnW,EAIN72B,EAJA62B,KACM8H,EAGN3+B,EAHA2+B,KACew+V,EAEfn9X,EAFAm9X,cACgBC,EAChBp9X,EADAo9X,eAGJ,OAAQz+V,GACJ,IAAK,MACDu/V,EAAc,EAAIf,EAClB,MACJ,IAAK,OACL,IAAK,WACDe,EAAc,EAAIf,EAClB,MACJ,IAAK,SACDe,EAAcd,EACd,MACJ,IAAK,QACD,OAAOe,GAAiBtnW,EAAMsmW,EAAe3zW,GAErD,OAAO24D,GAAgBtrD,EAAM,CACzBgsD,KAAMq7S,GACP10W,EACN,EACG20W,GAAmB,SAACtnW,EAAMsmW,EAAe3zW,GACzC,IAAIm+D,EAAc9wD,EAAK+rD,UACnBw7S,EAAwB,IAAI14X,KAAK,IAAIA,KAAKmxB,EAAKyhC,WAAWupB,QAAQ,IAClEw8S,EAAqB,IAAI34X,KAAK04X,EAAsBx8S,SAASw8S,EAAsBp8S,WAAam7S,EAAgB3zW,IAChH80W,EAAoBl7S,GAAgBi7S,GACpC5/P,EAAU92C,EAAc22S,EAAoB32S,EAAc22S,EAC1DC,EAAsB,IAAI74X,KAAK,IAAIA,KAAKmxB,EAAKyhC,WAAWupB,QAAQ48C,IAEpE,OADuB,IAAI/4H,KAAK64X,EAAoB38S,SAAS28S,EAAoBv8S,WAAam7S,EAAgB3zW,GAEjH,EACGg1W,GAAwB,SAAAC,GACxB,IAAIC,EAAYD,EAAU,cAAgB,OACtC/7S,EAASsoC,GAAAA,cAA+B0zQ,GAC5C,OAAO,SAAA7nW,GACH,IAAI0pD,EAAMusK,GAAWj2N,EAAM,OACvBC,EAAQ4rD,EAAO7rD,EAAKmrD,YACxB,MAAO,GAAGnvE,OAAO0tE,EAAK,KAAK1tE,OAAOikB,EACrC,CACJ,EACG6nW,GAAkB,SAAA9nW,GAClB,IACIC,EADSk0F,GAAAA,cAA+B,eACzBn0F,EAAKmrD,YACpBvB,EAAOqsK,GAAWj2N,EAAM,QAC5B,MAAO,GAAGhkB,OAAOikB,EAAO,KAAKjkB,OAAO4tE,EACvC,EACGm+S,GAA4B,SAAAH,GAAO,OAAI,SAAA5nW,GACvC,IACIgoW,EADkBL,GAAsBC,EAC5BK,CAAgBjoW,GAC5B4pD,EAAOqsK,GAAWj2N,EAAM,QAC5B,MAAO,GAAGhkB,OAAOgsX,EAAW,KAAKhsX,OAAO4tE,EAC3C,CALsC,EA0BnCs+S,GAAwB,SAACr2S,EAAWC,EAAS81S,GAE7C,OADuB/1S,EAAUlG,gBAAkBmG,EAAQnG,cArBjC,SAACkG,EAAWC,GACtC,IAAIq2S,EAAgBlyI,GAAWpkK,EAAWk2S,IAA0B,IAChEK,EAAmBnyI,GAAWnkK,EAASi2S,IAA0B,IACrE,MAAO,GAAG/rX,OAAOmsX,EAAe,KAAKnsX,OAAOosX,EAC/C,CAmBcC,CAAwBx2S,EAAWC,GAlBzB,SAACD,EAAWC,EAAS81S,GAC1C,IAAIU,EAAwBz2S,EAAU1G,aAAe2G,EAAQ3G,WACzDo9S,EAAiBD,GAAyBV,EAC1CY,EAAkBF,EAAwBX,GAAsBY,GA9LvD,IA+LTJ,EAAgBlyI,GAAWpkK,EAAW22S,GACtCC,EAAexyI,GAAWnkK,EAASi2S,GAA0BQ,IACjE,MAAO,GAAGvsX,OAAOmsX,EAAe,KAAKnsX,OAAOysX,EAC/C,CAaUC,CAAmB72S,EAAWC,EAAS81S,EACjD,EAUGe,GAAiB,SAAC92S,EAAWC,EAAS81S,EAAS9/V,GAC/C,OAAIimD,GAAAA,SAAmB8D,EAAWC,GAxBb,SAAC9xD,EAAM8H,EAAM8/V,GAClC,IAEII,EADkBL,GADD,WAAa7/V,GAAO8/V,EAEzBK,CAAgBjoW,GAC5B4pD,EAAOqsK,GAAWj2N,EAAM,QAC5B,MAAO,GAAGhkB,OAAOgsX,EAAW,KAAKhsX,OAAO4tE,EAC3C,CAmBcg/S,CAAmB/2S,EAAW/pD,EAAM8/V,GAE3C,UAAY9/V,EAbS,SAAC+pD,EAAWC,GACrC,GAAI/D,GAAAA,UAAoB8D,EAAWC,GAC/B,OAAOmkK,GAAWpkK,EAAW,gBAEjC,IACIs2S,EADap6S,GAAAA,SAAmB8D,EAAWC,GACdqiC,GAAAA,cAA+B,eAAetiC,EAAU1G,YAAc28S,GAAgBj2S,GACnH42S,EAAeX,GAAgBh2S,GACnC,MAAO,GAAG91E,OAAOmsX,EAAe,KAAKnsX,OAAOysX,EAC/C,CAMcI,CAAuBh3S,EAAWC,GAEtCo2S,GAAsBr2S,EAAWC,EAAS81S,EACpD,EACUkB,GAAa,SAAC3/X,EAASy+X,EAASmB,GACvC,IAAI,EA9KU,SAAA5/X,GACd,IAAI0oF,EAAYq0S,GAAqB/8X,GAErC,MAAO,CACH0oF,UAAWA,EACXC,QAHUs0S,GAAmBv0S,EAAW1oF,GAK/C,CA0KO6/X,CAAY7/X,GAFD0oF,EADf,EACIA,UACSC,EAFb,EAEIA,QAEAp/E,EAAOi2X,GAAe92S,EAAWC,EAAS81S,EAASz+X,EAAQ2+B,MAQ/D,OAPI8yB,EAAAA,EAAAA,IAAWmuU,KACXr2X,EAAOq2X,EAAsB,CACzBl3S,UAAWA,EACXC,QAASA,EACTp/E,KAAMA,KAGP,CACHm/E,UAAWA,EACXC,QAASA,EACTp/E,KAAMA,EAEb,EACGu2X,GAAW,CACXv/S,IAAK,MACLxpD,KAAM,OACNgpW,SAAU,WACVjpW,MAAO,QACP0pH,YAAa,MACbC,aAAc,OACdC,iBAAkB,WAClBC,cAAe,QACfq/O,OAAQ,UAGDllB,GAAc,SAAAl7T,GACrB,OAAI38B,EAAAA,EAAAA,IAAS28B,IAASA,EAAK33C,KAChB23C,EAAK33C,KAET23C,CACV,EACUqgV,GAAc,SAAArgV,GACrB,OAAI38B,EAAAA,EAAAA,IAAS28B,GACFA,EAAK5jD,KAAO4jD,EAAK5jD,KAAO4jD,EAAK33C,KAEjC23C,CACV,EASUsgV,GAAgB,SAAA18U,GACvBA,EAAMlgD,SAAQ,SAAAs8C,GACV,IAAIinC,EAAWi0R,GAAYl7T,IAHjB,SAAAA,GAAI,OAAIh/C,OAAO23B,OAAO+gH,IAAOnxI,SAASy3C,EAAlC,EAITugV,CAAYt5S,IACb3kE,GAAAA,EAAAA,IAAW,QAAS2kE,EAE3B,GACJ,EACUu5S,GAAc,SAAA58U,GAErB,OADA08U,GAAc18U,GACPA,EAAM78C,KAAI,SAAAi5C,GACb,IAAIr2C,EAnBa,SAAAq2C,GACrB,GAAIA,EAAK5jD,KACL,OAAO4jD,EAAK5jD,KAEhB,IAAIqkY,EAAWv4T,EAASloB,EAAK33C,MAAQ23C,GAAM,GAC3C,OAAOotE,GAAAA,OAA2B,uBAAuBn6G,OAAOwtX,GACnE,CAakBC,CAAY1gV,GACnB33C,EAAO6yW,GAAYl7T,GACnB5jD,EAAOikY,GAAYrgV,GACvB,MAAO,CACHr2C,KAAMA,EACNvN,KAAMA,EACN4jD,KAAM,CACFr2C,KAAMA,EACNtB,KAAMA,EACNjM,KAAMA,GAGjB,GACJ,EACUukY,GAAY,SAAC/8U,EAAOg9U,GAAR,OAAyB,IAAMh9U,EAAMjgD,QAAUigD,EAAM,GAAGxnD,OAASwkY,CAAjE,ECvTnBC,GAAsB,6BAGtBC,GAA0B,SAAAj5P,GAC1B,IAAIjkF,EAAQ48U,GAAY34P,EAAOjkF,OAC3Bg9U,EAAeP,GAAYx4P,EAAOnnF,aAClCqgV,EAAwBn9U,EAAMuR,MAAK,SAAAnV,GAAI,OAAIA,EAAK5jD,OAASwkY,CAAlB,IAE3C,MAAO,CACHA,aAFJA,EAAeG,EAAwBH,OAAe,EAGlDh9U,MAAOA,EAEd,ECeGo9U,GAAkB,iBAITC,GAAb,uIACI,WACI,OAAOj+X,KAAK2sC,OAAO,QACtB,GAHL,uBAII,WACI,OAAO3sC,KAAKy5X,cAAc9yX,IAC7B,GANL,2BAOI,WACI,IFkOaq2C,EE9Nb,MAAO,CACHjhB,MF6NSihB,EElOMh9C,KAAK09C,YFkOHw/U,GAAShlB,GAAYl7T,KE5NtCu9U,cALgBv6X,KAAK2sC,OAAO,iBAM5BuR,eALiBl+C,KAAK2sC,OAAO,kBAM7B6tV,eALiBx6X,KAAK2sC,OAAO,kBAOpC,GAlBL,gCAmBI,WACI,OAAO8Y,EAAAA,GAAAA,IAAO,kEAA4B,CACtCy4U,qBAAsBlmT,GAAAA,OAAepD,SAAWoD,GAAAA,eAEvD,GAvBL,6BAwBI,WAAkB,WACdh4E,KAAK6tJ,SAAW,IAAI30J,IAAI,CACpB,CAAC,cAAe,CAAC,SAAA8jD,GACb,EAAKU,YAAc2uE,GAAyBgxQ,GAAYrgV,GAAO,EAAKrQ,OAAO,SAC9E,IACD,CAAC,QAAS,CAAC3sC,KAAKm7M,QAAQr+M,KAAKkD,QAC7B,CAAC,QAAS,CAACs9X,KACX,CAAC,cAAe,CAACt9X,KAAKm+X,0BAA0B,UAChD,CAAC,MAAO,CAACn+X,KAAKm+X,0BAA0B,SACxC,CAAC,MAAO,CAACn+X,KAAKm+X,0BAA0B,SACxC,CAAC,WAAY,CAACn+X,KAAKm7M,QAAQr+M,KAAKkD,QAChC,CAAC,oBAAqB,CAACA,KAAKm7M,QAAQr+M,KAAKkD,QACzC,CAAC,0BAA2B,CAACA,KAAKm7M,QAAQr+M,KAAKkD,SAEtD,GAtCL,uBAuCI,SAAU5G,EAAM2H,GACPf,KAAK6tJ,SAASl0J,IAAIP,IACnB4G,KAAK6tJ,SAAS10J,IAAIC,EAAM,IAE5B,IAAI2wC,EAAS/pC,KAAK6tJ,SAASj0J,IAAIR,GAC/B4G,KAAK6tJ,SAAS10J,IAAIC,EAAlB,mBAA4B2wC,GAA5B,CAAoChpC,IACvC,GA7CL,4BA8CI,SAAenD,GACX,IACUxE,EAENwE,EAFAxE,KACO8E,EACPN,EADAM,MAEA8B,KAAK6tJ,SAASl0J,IAAIP,IACL4G,KAAK6tJ,SAASj0J,IAAIR,GACxBsH,SAAQ,SAAAK,GACXA,EAAM7C,EACT,GAER,GAzDL,mBA0DI,YACI,qDACA8B,KAAKo+X,kBACLp+X,KAAKg6D,WAAWoU,SA9DF,uBA+DdpuE,KAAK09C,YAAc2uE,GAAyBgxQ,GAAYr9X,KAAK2sC,OAAO,gBAAiB3sC,KAAK2sC,OAAO,SACpG,GA/DL,qBAgEI,YACI,uDACA3sC,KAAKo+X,kBACLp+X,KAAKouO,gBACR,GApEL,4BAqEI,WACI,IAAIruO,EAASC,KAAKq+X,uBACdC,EAAiBvtT,GAAE,SACvButT,EAAe3vT,SAAS3uE,KAAKg6D,YAC7Bh6D,KAAK2zX,SAAW3zX,KAAKmjK,iBAAiBm7N,EAAgBxG,GAAS/3X,EAClE,GA1EL,kCA2EI,WAAuB,WAGnB,MAAO,CACHmmD,MAHQlmD,KAAK2sC,OAAO,SACA5oC,KAAI,SAAAyI,GAAO,OAAI,EAAK+xX,WAAW/xX,EAApB,IAItC,GAjFL,wBAkFI,SAAW5H,GAEP,GADuB5E,KAAKw+X,eAAe55X,GACrB,CAClB,IAAI65X,EAAqB75X,EAAI,eAC7B,OAAQ65X,GACJ,IA1FI,eA2FA,OAAIz+X,KAAK2sC,OAAO,2BD7EC,SAACk4F,EAAQjgI,GAC1C,IAAI,EAGAk5X,GAAwBj5P,GAFV+4P,EADlB,EACIA,aACOh9U,EAFX,EAEIA,MAEA89U,EAAUf,GAAU/8U,EAAOg9U,GAC/B,OAAO7kX,EAAAA,EAAAA,GAAS,CACZiqJ,OAAQ,mBACRw0N,aAAc,QACdjtN,SAAUszN,GACVzgY,QAAS,CACL8oD,MAAOtF,EACPuuU,eAAe,EACfjjS,QAAS,OACTgjS,gBAAiB0O,EACjB3lP,YAAa,OACbo3O,eAAgBqP,EAChB5gV,YAAa,CACT+qH,MA3D2B,8CA6D/BylD,YAAa,SAAArlN,GACT,IACU+zC,EACN/zC,EAAEqyI,SADFt+F,KAEJ6nF,EAAO85P,mBAAmB3hV,EAC7B,EACDwC,eAAgB,SAAAv2C,GACZ,IAAI21X,EAAe31X,EAAEmoB,UACrByzG,EAAOs0P,UAAU,eAAe,SAAAn8U,GAC5B,IAAI4D,EAAQ48U,GAAY34P,EAAOjkF,OAC3B+8U,GAAU/8U,EAAO5D,IACjB6nF,EAAOs2E,UAEXyjL,EAAajyV,OAAO,kBAAmB0wV,GAAYrgV,GACtD,GACJ,EACDgnN,gBAAiB,CACbjkD,UAAW,SAAA92M,GACHy1X,IACAz1X,EAAE+3C,QAAS,EAElB,EACDrwB,MAAO,cACPi4O,sBAnFmC,wDAsF5ChkQ,EACN,CC+B8Bi6X,CAAwB7+X,KAAM4E,GD3GhC,SAACigI,EAAQjgI,GAClC,IAAI,EAGAk5X,GAAwBj5P,GAFV+4P,EADlB,EACIA,aACOh9U,EAFX,EAEIA,MAEJ,OAAO7nC,EAAAA,EAAAA,GAAS,CACZiqJ,OAAQ,gBACRw0N,aAAc,OACdjtN,SAAUszN,GACVzgY,QAAS,CACL8oD,MAAOtF,EACPsrC,QAAS,OACT2uI,iBAAkB,CAAC+iK,GACnBt1L,YAAa,YACbgmB,YAAa,SAAArlN,GACT,IACU+zC,EACN/zC,EAAEqyI,SADFt+F,KAEJ6nF,EAAO85P,mBAAmB3hV,EAC7B,EACDwC,eAAgB,SAAAv2C,GACZ,IAAI21X,EAAe31X,EAAEmoB,UACrByzG,EAAOs0P,UAAU,eAAe,SAAAn8U,GAC5B4hV,EAAajyV,OAAO,mBAAoB,CAAC0wV,GAAYrgV,IACxD,GACJ,IAENp4C,EACN,CCiF0Bk6X,CAAgB9+X,KAAM4E,GACjC,IA9FK,gBAgGD,OADA5E,KAAK++X,kBHpHK,SAACl6P,EAAQjgI,GACnC,IAAIshD,EAAQ,CAAC6yU,GAAyBl0P,GAASu0P,GAAyBv0P,GAAS00P,GAAqB10P,IAClGyjE,EAAcpL,KAAe,OAAS,YAC1C,OAAOnkL,EAAAA,EAAAA,GAAS,CACZiqJ,OAAQ,gBACRuH,SAXmB,yBAYnBntK,QAAS,CACL8oD,MAAOA,EACPoiJ,YAAaA,EACb4+B,cAAe,OACf5Y,YAAa,SAAArlN,GACTA,EAAEqyI,SAASq2C,aAAa1oL,EAC3B,IAENrE,EACN,CGsG0Bo6X,CAAiBh/X,KAAM4E,GAClC,QACI0a,GAAAA,EAAAA,IAAW,iCAAiCrP,OAAOwuX,IAE9D,CACD,OAAO75X,CACV,GApGL,wBAqGI,SAAW7D,EAAO0P,GACVzQ,KAAK6tJ,SAASl0J,IAAIoH,IACLf,KAAK6tJ,SAASj0J,IAAImH,GACxBL,SAAQ,SAAAK,GAAK,OAAIA,EAAM0P,EAAV,GAE3B,GA1GL,gCA2GI,SAAmBusC,GACWh9C,KAAK2sC,OAAO,sBACtCsyV,CAAoBjiV,EAAK5jD,MACzB4G,KAAKk/X,WAAW,cAAeliV,EAClC,GA/GL,gDAgHI,SAAmC/oB,GAC/Bj0B,KAAK62Q,mBAAmB5iP,GACxBj0B,KAAKw4X,UAAU7rV,OAAO,QAAS1Y,EAClC,GAnHL,gCAoHI,SAAmBA,GACWj0B,KAAK2sC,OAAO,sBACtCwyV,CAAoBlrW,GACpBj0B,KAAKk/X,WAAW,cAAejrW,EAClC,GAxHL,6BAyHI,WAAkB,WACdj0B,KAAKw4X,UAAYx4X,KAAKmjK,iBAAiB,QAASk1N,GAAmB,CAC/Dn6X,MAAO8B,KAAK2sC,OAAO,eACnB9pB,IAAK7iB,KAAK2sC,OAAO,OACjBlV,IAAKz3B,KAAK2sC,OAAO,OACjBuR,eAAgBl+C,KAAK2sC,OAAO,kBAC5BwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/B6T,SAAUxgD,KAAK2sC,OAAO,YACtBq1M,eAAgB,SAAA/4O,GACZ,EAAK4tQ,mBAAmB5tQ,EAAE/K,OAC1B,EAAKs6X,UAAUxqT,MAClB,IAELhuE,KAAKw4X,UAAUx+T,WAAW2U,SAAS3uE,KAAKg6D,WAC3C,GAvIL,uCAwII,SAA0B5gE,GAAM,WAC5B,OAAO,SAAA8E,GACC,EAAKs6X,WACL,EAAKA,UAAU7rV,OAAOvzC,EAAM8E,EAEnC,CACJ,GA9IL,0BA+II,SAAa0oB,GACT,IAAIw4W,EAActnX,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,KAC/Emc,EAAO,OAASmrW,QAAe,IAAWA,EAAcA,EAAcp/X,KAAK2sC,OAAO,eAClFvvC,GAAU2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKq/X,iBAAkB,CACvDprW,KAAMA,IAEV,OAAOonW,GAAoBj+X,EAASwpB,EACvC,GAtJL,sBAuJI,WACI,IACiB82B,EACb19C,KADA09C,YAEJ,MAAO,UAAYw6T,GAAYx6T,EAClC,GA5JL,+BA6JI,WACI,IAAI4gG,EAAgBt+I,KAAK2sC,OAAO,iBAChC,OAAI3sC,KAAKs/X,WACErF,GAAS37O,GAEb,IAAIx7I,KAAKw7I,EACnB,GAnKL,yBAoKI,WACI,IAAIrqH,EAAOj0B,KAAK2sC,OAAO,eACnB3sC,KAAK2sC,OAAO,mBACZ1Y,EAAOj0B,KAAKu/X,qBAEhBtrW,EAAO+tD,GAAAA,SAAmB/tD,GAC1B,IAAI72B,GAAU2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKq/X,iBAAkB,CACvDprW,KAAMA,IAEN+oW,EAAwBh9X,KAAK2sC,OAAO,8BACpC6yV,EAAqBx/X,KAAK2sC,OAAO,uBACrC,OAAOowV,GAAW3/X,EAASoiY,EAAoBxC,EAClD,GAhLL,oCAiLI,SAAuBp2W,GACnB,IAAIqN,EAAOj0B,KAAK05X,aAAa9yW,GAC7B5mB,KAAKy/X,mCAAmCxrW,EAC3C,GApLL,2BAqLI,SAAchrB,GACVjJ,KAAKw4X,UAAU1qT,KAAK7kE,EAAEuD,QACzB,GAvLL,2BAwLI,WACIxM,KAAKw4X,UAAUxqT,MAClB,GA1LL,4BA2LI,SAAeppE,GACX,OAAO5G,OAAOgK,UAAU6X,eAAephB,KAAKmG,EAAMo5X,GACrD,KA7LL,GAAqCp5L,IA+LrCpyB,GAAkB,oBAAqByrN,ICpOhC,ICKD/wO,GAAAA,WACF,WAAY9vJ,IAAS,eACjB4C,KAAKs0W,oBAAqB,EAC1Bt0W,KAAK5C,QAAUA,CAClB,yCACD,WACI,OAAO4C,KAAK5C,QAAQ2jX,WACvB,2BACD,WACI,OAAO/gX,KAAK5C,QAAQsiY,YACvB,+BACD,WACI,OAAO1/X,KAAK5C,QAAQk5W,gBACvB,6BACD,WACI,OAAOt2W,KAAK5C,QAAQuiY,cACvB,4BACD,WACI,OAAO3/X,KAAK5C,QAAQkhJ,aACvB,+BACD,WACI,OAAOt+I,KAAK5C,QAAQuuH,gBACvB,6BACD,WACI,OAAO3rH,KAAK5C,QAAQwuH,cACvB,2BACD,WACI,OAAO5rH,KAAK5C,QAAQogD,YACvB,+BACD,WACI,OAAOx9C,KAAK5C,QAAQwiY,wBACvB,yBACD,WACI,OAAO5/X,KAAK5C,QAAQuxF,UACvB,yBACD,WACI,OAAO3uF,KAAK5C,QAAQ4iD,UACvB,iCACD,WACI,OAAOhgD,KAAK5C,QAAQyiY,0BACvB,8BACD,WACI,OAAO7/X,KAAK5C,QAAQ+iD,eACvB,+BACD,WACI,OAAOngD,KAAK5C,QAAQm2W,gBACvB,mCACD,WACI,OAAOvzW,KAAK5C,QAAQ0iY,oBACvB,uCACD,SAAuBC,EAAcC,EAAwBC,GAAwB,WAC7Ez8X,EAAS,GAYb,OAXAxD,KAAKu1H,aAAa70H,SAAQ,SAACw/X,EAAa/+X,GAClB,EAAKg/X,mBAAmB,CACtC5yQ,YAAa2yQ,EACbH,aAAcA,EACdC,uBAAwBA,EACxBC,uBAAwBA,IAEhBv/X,SAAQ,SAAAkE,GACdA,GAAQpB,EAAOpD,KAAK,EAAKggY,eAAex7X,EAAMzD,GACnD,GACJ,IACMqC,CACV,mCACD,SAAmBpG,GACf,IACiBmwH,EAIbnwH,EAJAmwH,YACwByyQ,EAGxB5iY,EAHA4iY,uBACcD,EAEd3iY,EAFA2iY,aACWM,EACXjjY,EADAijY,UAGWv6S,EACXynC,EADAznC,UAEA0yD,EAAc6nP,OAA4C,EAAhC9yQ,EAAYhmF,OAAOixG,WACjD,OAAOx4I,KAAKsgY,4BAA4Bx6S,EAAWi6S,EAAcC,EAAwBxnP,EAC5F,+BACD,SAAehuI,EAAU+1X,GAErB,OADA/1X,EAAS+1X,iBAAmBA,EACrB,CACH5Z,YAAan8W,EACb+1X,iBAAkBA,EAEzB,qCACD,SAAqBtsW,EAAMukH,EAAYs4N,GACnC,IAAI0vB,EAAkBhoP,GAAc,EAChCqoO,EAAW,CACXroO,WAAYgoP,EACZ16S,UAAW7xD,EACXohG,SAAUy7O,GAEVqQ,EAAgBnhX,KAAKs2W,iBAAiBmqB,sBAAsB5f,GAChE,GAAKM,EAAL,CAGA,IAAI32W,EAAWxK,KAAK0gY,gBAAgBvf,EAAerQ,IAAgB9wW,KAAK48I,oBACpE+jP,EAAY7vB,EAAc,EAAI9wW,KAAK4gY,aAAa3sW,GAChDiE,EAAQl4B,KAAK6gY,iBAAiBF,EAAW7vB,GACzCgwB,EAAiB9gY,KAAK2/X,eAAeoB,iBAAiBP,EAAiBvsW,GACvE+sW,EAAchhY,KAAK2/X,eAAesB,eAAe,CACjDzoP,WAAYgoP,EACZlsB,mBAAoBt0W,KAAKs0W,mBACzBn0T,gBAAiBngD,KAAKmgD,gBACtBozT,iBAAkBvzW,KAAKuzW,iBACvBusB,qBAAsB9/X,KAAK8/X,qBAC3BljP,mBAAoB58I,KAAK48I,qBAE7B,MAAO,CACHukO,cAAeA,EACf+f,aAAc12X,EAASo6B,KAAO1M,EAAMgpW,aACpCz8V,IAAKj6B,EAASi6B,IAAMvM,EAAMuM,IAC1BG,KAAMp6B,EAASo6B,KAAO1M,EAAM0M,KAC5B6qO,SAAUjlQ,EAASilQ,SACnB89E,YAAa/iV,EAAS+iV,YACtB4zC,KAAML,EACNM,KAAMJ,EACNxoP,WAAYgoP,EAtBf,CAwBJ,4CACD,SAA4B16S,EAAWi6S,EAAcjvB,EAAat4N,GAAY,WACtEh1I,EAAS,GACb,GAAIxD,KAAKs2W,iBAAiB+qB,cAAcv7S,GACpC,OAAOtiF,EAEX,IAAI89X,EAAoB,CAAC9oP,GAUzB,OATKnqF,EAAAA,EAAAA,IAAUmqF,KACX8oP,EAAoBthY,KAAK2uF,WAAaoxS,EAAe,CAAC,IAE1DuB,EAAkB5gY,SAAQ,SAAA83I,GACtB,IAAImuO,EAAc,EAAK4a,qBAAqBz7S,EAAW0yD,EAAYs4N,GAC/D6V,GACAnjX,EAAOpD,KAAKumX,EAEnB,IACMnjX,CACV,gCACD,SAAgBg+X,EAAiBC,GAC7B,IAAI,EAGAzhY,KAAK+gX,YAFeG,EADxB,EACIA,mBACsBD,EAF1B,EAEIA,qBAGa1zB,EAEbi0C,EAFAj0C,YACU99E,EACV+xH,EADA/xH,SAEAjlQ,EAAWi3X,EAAgBxgB,EAAqB1zB,GAAe2zB,EAAmBzxG,GAAU89E,GAC5Fm0C,GAAgB3oX,EAAAA,EAAAA,GAAS,CAAC,EAAGvO,GAQjC,OAPIxK,KAAKggD,aACL0hV,EAAc98V,MAAQp6B,EAASmmB,OAE/B+wW,IACAA,EAAcjyH,SAAW+xH,EAAgB/xH,SACzCiyH,EAAcn0C,YAAci0C,EAAgBj0C,aAEzCm0C,CACV,6BACD,SAAaztW,GACT,IAAI0tW,EAAkB,IAAI7+X,KAAKmxB,GAC3B2tW,EAAoB,IAAI9+X,KAAK,IAAIA,KAAKmxB,GAAMirD,SAASl/E,KAAK4rH,eAAgB,EAAG,IAC7E33F,EAAKyhC,WAAaksU,EAAkBlsU,WACpCisU,EAAgBziT,SAASl/E,KAAK2rH,iBAAkB,EAAG,EAAG,GAE1D,IAAIk2Q,EAAqB7/S,GAAAA,uBAAiC/tD,EAAM0tW,GAC5DG,EAAkB7tW,EAAKyhC,UACvBqsU,EAAsBJ,EAAgBjsU,UAE1C,OAAOosU,EADO9hY,KAAKs+I,cAAc5oF,WACGosU,EAAkBC,EAAsBF,GAAsB7hY,KAAKw9C,aAAex9C,KAAKw9C,aAAe,CAC7I,OAxKC0vG,GA0KA80O,GAAAA,SAAAA,iCACF,aAAc,6BACV,eAASlqX,YACJw8V,oBAAqB,EAFhB,CAGb,sDACD,SAAuByrB,EAAcC,EAAwBC,GAAwB,WAC7E1qQ,EAAeyqQ,EAAyBhgY,KAAKu1H,aAAev1H,KAAKu1H,aAAa/6F,QAAO,SAAAxjB,GACrF,IACYuwB,EAGRvwB,EAHAuwB,OACWu+C,EAEX9uE,EAFA8uE,UACSC,EACT/uE,EADA+uE,QAEJ,OAAO,EAAKuwR,iBAAiB2rB,6BAA6B16V,EAAOixG,WAAY1yD,EAAWC,EAC3F,IACD,OAAIk6S,EACOjgY,KAAKkiY,gCAAgC3sQ,EAAcyqQ,IAEvD,qEAA6BD,EAAcC,EAAwBC,EAC7E,gDACD,SAAgCP,EAAcM,GAAwB,WAC9Dx8X,EAAS,GAWb,OAVAk8X,EAAah/X,SAAQ,SAACgkK,EAAOvjK,GACzB,IACYomC,EAERm9H,EAFAn9H,OACWu+C,EACX4+E,EADA5+E,UAEAq8S,EAAa,EAAKZ,qBAAqBz7S,EAAWv+C,EAAOixG,WAAYwnP,GACrEmC,GACA3+X,EAAOpD,KAAK,EAAKggY,eAAe+B,EAAYhhY,GAEnD,IACMqC,CACV,OAhCCw+X,CAAwB90O,IAkCjBk1O,GAAb,WACI,WAAYhlY,IAAS,eACjB4C,KAAK5C,QAAUA,CAClB,CAHL,qDAII,SAAuB2iY,EAAcC,EAAwBC,GAEzD,OADejgY,KAAK5C,QAAQk3W,mBAAqB,IAAI0tB,GAAgBhiY,KAAK5C,SAAW,IAAI8vJ,GAAaltJ,KAAK5C,UAC3FilY,uBAAuBtC,EAAcC,EAAwBC,EAChF,KAPL,KCrMWqC,GAAgB,SAACx8S,EAAWC,EAASsvC,EAAUgqB,GACtD,OAAIhqB,EACO,OAEPgqB,GAAqBr9D,GAAAA,SAAmB8D,EAAWC,GAC5C,OAEJ,UACV,EACUw8S,GAAc,SAACz8S,EAAWC,EAASc,GAC1C,IAAI27S,EAAa18S,EAAU9F,YAAc+F,EAAQ/F,UACjD,OAAQ6G,GACJ,IAAK,WACD,MAAO,CAACuhC,GAAAA,OAAwBtiC,EAAW,eAAgB,IAAKsiC,GAAAA,OAAwBtiC,EAAW,aAAc,MAAO08S,EAAa,GAAK,GAAGvyX,OAAOm4G,GAAAA,OAAwBriC,EAAS,eAAgB,KAAMqiC,GAAAA,OAAwBriC,EAAS,cAAct5E,KAAK,IACnQ,IAAK,OACD,MAAO,GAAGwD,OAAOm4G,GAAAA,OAAwBtiC,EAAW,aAAc,OAAO71E,OAAOm4G,GAAAA,OAAwBriC,EAAS,cACrH,IAAK,OACD,MAAO,GAAG91E,OAAOm4G,GAAAA,OAAwBtiC,EAAW,gBAAgB71E,OAAOuyX,EAAa,GAAK,MAAMvyX,OAAOm4G,GAAAA,OAAwBriC,EAAS,iBAEtJ,ECEGooC,GAAOnsC,GAAAA,mBAEEygT,GAAb,WACI,WAAYrlY,IAAS,eACjB4C,KAAK5C,QAAUA,CAClB,CAHL,2CAII,WACI,OAAO4C,KAAK5C,QAAQ63H,cACvB,GANL,8BAOI,WACI,OAAOj1H,KAAK5C,QAAQo3H,kBACvB,GATL,4BAUI,WACI,OAAOx0H,KAAK5C,QAAQk5W,gBACvB,GAZL,kCAaI,WACI,OAAOt2W,KAAK5C,QAAQ22W,sBACvB,GAfL,4BAgBI,WACI,OAAO/zW,KAAK5C,QAAQm2W,gBACvB,GAlBL,kCAmBI,WACI,OAAOvzW,KAAK5C,QAAQ4iY,sBACvB,GArBL,oBAsBI,WACI,OAAOhgY,KAAK5C,QAAQsjD,QACvB,GAxBL,qBAyBI,WACI,OAAO1gD,KAAK5C,QAAQk2W,SACvB,GA3BL,0BA4BI,WACI,OAAOtzW,KAAK5C,QAAQ8gD,cACvB,GA9BL,4BA+BI,WACI,OAAOl+C,KAAK5C,QAAQuuH,gBACvB,GAjCL,0BAkCI,WACI,OAAO3rH,KAAK5C,QAAQwuH,cACvB,GApCL,uBAqCI,WACI,OAAO5rH,KAAK5C,QAAQi5W,WACvB,GAvCL,oBAwCI,WACI,OAAOr2W,KAAK5C,QAAQ6mF,QACvB,GA1CL,2BA2CI,WACI,OAAOjkF,KAAK5C,QAAQslY,eACvB,GA7CL,iCA8CI,WACI,OAAO1iY,KAAK5C,QAAQyiY,0BACvB,GAhDL,yBAiDI,WACI,OAAO7/X,KAAK5C,QAAQ+2H,aACvB,GAnDL,2BAoDI,WACI,OAAOn0H,KAAK5C,QAAQi+I,eACvB,GAtDL,6BAuDI,WACI,OAAQgE,GAAkBr/I,KAAKikF,WAAajkF,KAAK+zW,sBACpD,GAzDL,iCA0DI,WACI,OAAO/zW,KAAK+zW,uBAAyB/zW,KAAK5C,QAAQulY,uBAAyB3iY,KAAK5C,QAAQihJ,gBAC3F,GA5DL,sBA6DI,SAAS3yB,GACL,IAAIk3Q,EAAmB5iY,KAAK6iY,iBAAiB7iY,KAAKi1H,gBAC9C6tQ,EAAkB9iY,KAAK+iY,oBAAoBr3Q,EAAoBk3Q,GACnEE,EAAkB9iY,KAAKgjY,mCAAmCF,EAAiBp3Q,GACvE1rH,KAAKijY,kCAAkCv3Q,KACvCo3Q,EAAkB9iY,KAAKkjY,oCAAoCJ,EAAiBp3Q,IAEhF,IAAIg0Q,EAAe1/X,KAAKmjY,2BAA2BL,EAAiBp3Q,GAChE03Q,EAAiBpjY,KAAKqjY,8BAA8B3D,GAUxD,OATA1/X,KAAKsjY,yBAAyB5D,EAAc0D,GAC5C1D,EAAe1/X,KAAKujY,gCAAgC7D,EAAc0D,GAClE1D,EAAe1/X,KAAKwjY,uBAAuB9D,EAAc1/X,KAAKi1H,gBAC1Dj1H,KAAKyjY,2BACL/D,EAAe1/X,KAAK0jY,mBAAmBhE,EAAch0Q,IAKlD,CACHg0Q,aAAcA,EACdkD,iBAAkBA,EAClBzb,YAJAz7P,EADAy7P,YAOP,GApFL,gDAqFI,SAAmC2b,EAAiBv1Q,GAAa,WAE7D,KAD8B3xD,EAAAA,EAAAA,IAAc2xD,EAAYsF,sBAAuBj3D,EAAAA,EAAAA,IAAc2xD,EAAYonB,iBAC7E,CACxB,IAAIgvP,EAAqB,CACrB79S,UAAW9lF,KAAKw0H,mBAAmB3G,WAAWN,EAAYznC,UAAWynC,EAAYsF,mBACjF9sC,QAAS/lF,KAAKw0H,mBAAmB3G,WAAWN,EAAYxnC,QAASwnC,EAAYonB,kBAEjFmuP,EAAgBpiY,SAAQ,SAAAqf,GACpB,IAAI6jX,EAA0B,EAAKpvQ,mBAAmB3G,WAAW9tG,EAAE+lE,UAAWynC,EAAYsF,mBACtFgxQ,EAAwB,EAAKrvQ,mBAAmB3G,WAAW9tG,EAAEgmE,QAASwnC,EAAYonB,iBAClFmvP,EAAsBH,EAAmB79S,UAAUynC,YAAcq2Q,EAAwBr2Q,YACzFw2Q,EAAoBJ,EAAmB59S,QAAQwnC,YAAcs2Q,EAAsBt2Q,YACnFq2Q,EAAwBr2Q,cAAgBq2Q,EAAwBh+W,SAChE7F,EAAE+lE,UAAY,IAAIhjF,KAAKid,EAAE+lE,UAAUpwB,UAAYouU,EAAsB31Q,GAAK,UAE1E01Q,EAAsBt2Q,cAAgBs2Q,EAAsBj+W,SAC5D7F,EAAEgmE,QAAU,IAAIjjF,KAAKid,EAAEgmE,QAAQrwB,UAAYquU,EAAoB51Q,GAAK,SAE3E,GACJ,CACD,OAAO20Q,CACV,GA1GL,iCA2GI,SAAoBv1Q,EAAawyQ,GAC7B,IAAIxqQ,EAAev1H,KAAKgkY,8BAA8Bz2Q,EAAawyQ,GAiBnE,OAhBKxyQ,EAAY45P,aAAe,IAAM5xP,EAAa50H,QAC/C40H,EAAan1H,KAAK,CACd0lF,UAAWynC,EAAYznC,UACvBC,QAASwnC,EAAYxnC,UAG7BwvC,EAAeA,EAAaxxH,KAAI,SAAAa,GAC5B,IAAIlK,EACAupY,EAAgB,QAAUvpY,EAAKkK,EAAKmhF,eAAY,IAAWrrF,OAAK,EAASA,EAAGg7D,UAIhF,OAHI9wD,EAAKkhF,UAAUpwB,YAAcuuU,GAC7Br/X,EAAKmhF,QAAQ5F,QAAQ8jT,EAAgB91Q,GAAK,YAEvCp1G,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,GAAO,CAChC+vH,cAAe,IAAI7xH,KAAK8B,EAAKkhF,YAEpC,IACMyvC,CACV,GA9HL,+CA+HI,SAAkChI,GAE9B,QADqB3xD,EAAAA,EAAAA,IAAc57D,KAAK0gD,cAInC6sE,EAAY45P,cAGTpyP,GAAAA,qBAAmC/0H,KAAK0gD,SAAU6sE,EAAYznC,WACzE,GAxIL,kDAyII,SAAqC7xD,EAAMhnB,GACvC,GAAIA,EAAS,EAAG,CACZ,IAAIy0E,EAAU,IAAI5+E,KAAKmxB,GACnBiwW,EAAsB,IAAIphY,KAAK4+E,GAInC,GAHAwiT,EAAoBhlT,SAASglT,EAAoBtiT,WAAa,GAC1C5hF,KAAKw0H,mBAAmB3G,WAAWnsC,GAAS97D,SAChC5lB,KAAKw0H,mBAAmB3G,WAAWq2Q,GAAqBt+W,OAEpF,OAAO,CAEd,CACD,OAAO3Y,CACV,GArJL,8BAsJI,SAAiBgnB,GACb,OAAOj0B,KAAKw0H,mBAAmB3G,WAAW55F,GAAMrO,MACnD,GAxJL,iDAyJI,SAAoCk9W,EAAiBv1Q,GAAa,WAC9D,OAAOu1Q,EAAgB/+X,KAAI,SAAAa,GACvB,IAAIu/X,EAAsB,EAAKC,iBAAiB72Q,EAAYznC,WAAa,EAAKs+S,iBAAiBx/X,EAAKkhF,WAChGu+S,EAAoB,EAAKD,iBAAiB72Q,EAAYxnC,SAAW,EAAKq+S,iBAAiBx/X,EAAKmhF,SAChG,GAAI,IAAMo+S,GAAuB,IAAME,EACnC,OAAOz/X,EAEXu/X,EAAsB,EAAKG,qCAAqC1/X,EAAKkhF,UAAWq+S,GAChFE,EAAoB,EAAKC,qCAAqC1/X,EAAKmhF,QAASs+S,GAC5E,IAAIE,EAAe,IAAIzhY,KAAK8B,EAAKkhF,UAAUpwB,UAAYyuU,EAAsBh2Q,GAAK,SAC9Eq2Q,EAAa,IAAI1hY,KAAK8B,EAAKmhF,QAAQrwB,UAAY2uU,EAAoBl2Q,GAAK,SACxEs2Q,EAAmB,EAAKjwQ,mBAAmBE,WAAW6vQ,EAAc,CACpE5hY,KAAM,WAEN+hY,EAAiB,EAAKlwQ,mBAAmBE,WAAW8vQ,EAAY,CAChE7hY,KAAM,WAKV,OAHI4qH,EAAY1hG,SAAW64W,EAAehvU,UAAY+uU,EAAiB/uU,YACnE8uU,EAAa,IAAI1hY,KAAKyhY,EAAa7uU,UAAY63D,EAAY1hG,YAExD9S,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,GAAO,CAChCkhF,UAAWy+S,EACXx+S,QAASy+S,EACT7vQ,cAAe,IAAI7xH,KAAKyhY,IAE/B,GACJ,GAnLL,oCAoLI,WACI,OAAOvkY,KAAK2kY,sBAAwB3kY,KAAK0iY,gBAAkB1iY,KAAK0iY,iBAAmB1iY,KAAK+zW,sBAC3F,GAtLL,uCAuLI,SAA0B9+O,EAAgBlvC,GACtC,IAAIviF,EAAS,IAAIV,KAAKijF,EAAQrwB,WAE9B,KADe2pF,GAAkBr/I,KAAKikF,WAAajkF,KAAK+zW,wBACzC,CACX,IAAI6wB,EAAqB5iT,GAAAA,YAAsBhiF,KAAKq2W,aAChD7yW,EAASohY,IACTphY,EAASohY,EAEhB,CACD,IAAI3mV,EAAaj+C,KAAK4rH,eAClBE,EAASoI,GAAyBl0H,KAAKm0H,cAAe,SAAUc,GAChE4vQ,EAAqB,IAAI/hY,KAAK,IAAIA,KAAKijF,EAAQrwB,WAAWwpB,SAASjhC,EAAY,EAAG,EAAG,IAIzF,OAHIz6C,EAAOkyD,UAAYmvU,EAAmBnvU,WAAao2D,GAAUtoH,EAAOo+E,WAAa3jC,KACjFz6C,EAASqhY,GAENrhY,CACV,GAvML,oCAwMI,SAAuBk8X,EAAczqQ,GAAgB,WACjD,OAAOyqQ,EAAa37X,KAAI,SAAAa,GACpB,IACamhF,EACTnhF,EADAmhF,QAEA++S,EAAoB,EAAKC,0BAA0B9vQ,EAAgBlvC,GACvE,OAAOhtE,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,GAAO,CAChCkgY,kBAAmBA,GAE1B,GACJ,GAlNL,gCAmNI,SAAmBE,EAAqBt5Q,GAAoB,WACpDloH,EAAS,GAqBb,OApBAwhY,EAAoBtkY,SAAQ,SAAAukY,GACxB,IAAItpQ,EAAU,IAAI74H,KAAK,EAAKwwW,UAAU,IAEf4xB,EACnBD,EADAH,kBAKAp3U,EAHqBs0B,GAAAA,mBAA6BijT,EAAgBn/S,UAAWo/S,EAAe,CAC5F54W,aAAc,EAAK64W,wBAEO3qW,QAAO,SAAA4qW,GAAa,OAAI,IAAItiY,KAAKsiY,GAAiBzpQ,CAA9B,IAAuC53H,KAAI,SAAAkwB,GACzF,IAAI8xD,EAAU,IAAIjjF,KAAK,IAAIA,KAAKmxB,GAAMkwG,gBAAgBzY,EAAmB7/F,WAEzE,MAAO,CACHi6D,UAAW7xD,EACX8xD,QAASA,EACT++S,kBAJoB,EAAKC,0BAA0B,EAAK9vQ,eAAgBlvC,GAKxEx+C,OAAQ09V,EAAgB19V,OAE/B,IACD/jC,EAASA,EAAOyM,OAAOy9C,EAC1B,IACMlqD,CACV,GA1OL,wCA2OI,SAA2Bs/X,EAAiBp3Q,GAAoB,WAC5D,OAAOo3Q,EAAgB/+X,KAAI,SAAAwjC,GACvB,IAAI89V,EAAmB35Q,EAAmB5lC,UAAU/D,oBAAsBx6C,EAAOu+C,UAAU/D,oBAY3F,OAXI,IAAMsjT,GAAoB,EAAKpC,kCAAkCv3Q,KACjEnkF,EAAOu+C,UAAY,IAAIhjF,KAAKykC,EAAOu+C,UAAUpwB,UAAY2vU,EAAmBl3Q,GAAK,WACjF5mF,EAAOw+C,QAAU,IAAIjjF,KAAKykC,EAAOw+C,QAAQrwB,UAAY2vU,EAAmBl3Q,GAAK,WAC7E5mF,EAAOotF,cAAgB,IAAI7xH,KAAKykC,EAAOu+C,YAQpC,CACHA,UAPY,EAAK0uC,mBAAmBE,WAAWntF,EAAOu+C,UAAW,CACjEnjF,KAAM,WAONojF,QALU,EAAKyuC,mBAAmBE,WAAWntF,EAAOw+C,QAAS,CAC7DpjF,KAAM,WAKNmpH,OAAQJ,EAAmBI,SAAU,EACrCvkF,OAAQA,EAEf,GACJ,GAhQL,2CAiQI,SAA8BixG,GAC1B,IAAI8F,EAAgBt+I,KAAK+zW,uBAAyB/xR,GAAAA,SAAmBhiF,KAAKszW,UAAU,IAAMtzW,KAAKszW,UAAU,GACrGgyB,EAA0BtlY,KAAKszW,UAAU,GAC7C,GAAItzW,KAAK0gD,SAAU,CACf49F,EAAgBt+I,KAAKw0H,mBAAmBE,WAAW4pB,EAAe,CAC9D37I,KAAM,aAEV2iY,EAA0BtlY,KAAKw0H,mBAAmBE,WAAW4wQ,EAAyB,CAClF3iY,KAAM,aAEV,IAAI4iY,EAAiBxwQ,GAAAA,sBAAoCupB,EAAegnP,GACpEC,IACAD,EAA0B,IAAIxiY,KAAKwiY,EAAwB5vU,UAAY6vU,GAE9E,CACD,MAAO,CAACjnP,EAAegnP,EAC1B,GAjRL,sCAkRI,SAAyB/3Q,EAAairB,GAAY,WAC1C,EAAyCx4I,KAAKwlY,8BAA8BhtP,GAAhF,eAAKitP,EAAL,KAAwBC,EAAxB,KACA,MAAO,CACHt9X,KAAMmlH,EAAYyiB,eAClBrd,UAAWpF,EAAY4nB,oBACvBtyH,IAAK4iX,EACLhuW,IAAKiuW,EACLxnV,eAAgBl+C,KAAKk+C,eACrB3hB,MAAOgxF,EAAYznC,UACnB57E,IAAKqjH,EAAYxnC,QACjB4qD,0BAA2B3wI,KAAKw0H,mBAAmBkhP,6BAA6BnoP,EAAYznC,UAAWynC,EAAY0H,eAAepC,mBAAmB,GACrJ4f,0BAA2B,SAAAx+G,GACvB,IAAI2nC,EAAAA,EAAAA,IAAc,EAAKlb,WAAaq0E,GAAAA,qBAAmC,EAAKr0E,SAAUzsB,GAClF,OAAOA,EAEX,IAEI0tD,EAFoB,EAAK6yC,mBAAmB3G,WAAWN,EAAYznC,WAAWlgE,OACjD,EAAK4uG,mBAAmB3G,WAAW55F,GAAMrO,OAG1E,OADA+7D,EAAO,EAAK2iT,qCAAqCrwW,EAAM0tD,GAChD,IAAI7+E,KAAKmxB,EAAKyhC,UAAYisB,EAAOK,GAAAA,mBAA6B,QACxE,EAER,GAxSL,2CAySI,SAA8BurC,EAAawyQ,GACvC,IACcl0W,EACV0hG,EADA1hG,SAEA8gB,EAAS3sC,KAAK2lY,yBAAyBp4Q,GAE3C,OAD0BoiB,KAAyBgC,cAAchlG,GACtC5oC,KAAI,SAAAkwB,GAC3B,IAAI8wF,EAAUgQ,GAAAA,6BAA2C9gG,GACzD8wF,EAAQ5kC,QAAQ4kC,EAAQrvD,UAAY7pC,GACpC,IAAIk6D,EAAUgvC,GAAAA,iCAA+ChQ,GAC7D,MAAO,CACHj/B,UAAW,IAAIhjF,KAAKmxB,GACpB8xD,QAASA,EAEhB,GACJ,GAxTL,2CAyTI,SAA8BwvC,GAAc,WACxC,OAAOA,EAAaxxH,KAAI,SAAAwpH,GAAW,OAAI,EAAKq4Q,6BAA6Br4Q,EAAtC,GACtC,GA3TL,sCA4TI,SAAyBgI,EAAc6tQ,EAAgBnuQ,GAAgB,WACnEM,EAAa70H,SAAQ,SAAC6sH,EAAan7D,GAC/Bm7D,EAAYznC,UAAY,EAAK+/S,0BAA0B,CACnDt4Q,YAAaA,EACb0H,eAAgBA,EAChBnvC,UAAW,IAAIhjF,KAAKyqH,EAAYznC,WAChCvlC,aAAc,EAAKorE,iBACnBm6Q,cAAe1C,EAAehxU,IAErC,GACJ,GAtUL,6CAuUI,SAAgCmjE,EAAc6tQ,GAAgB,WAC1D,OAAO7tQ,EAAa/6F,QAAO,SAAC+yF,EAAan7D,GACrC,QAAKgxU,EAAehxU,OAGhB,EAAK2hT,wBAGFxmP,EAAYxnC,QAAUwnC,EAAYznC,UAC5C,GACJ,GAjVL,uCAkVI,SAA0B1oF,GACtB,IAQI8nF,EAPaqoC,EAGbnwH,EAHAmwH,YACchtE,EAEdnjD,EAFAmjD,aACeulV,EACf1oY,EADA0oY,cAGWhgT,EACX1oF,EADA0oF,UAWJ,OARI9lF,KAAK+zW,uBACL7uR,EAAalD,GAAAA,cAAwB8D,EAAWggT,IAE5ChgT,EAAYggT,IACZhgT,EAAYggT,GAEhB5gT,EAAalD,GAAAA,cAAwBurC,EAAYznC,UAAWA,IAExD9lF,KAAK+lY,kBAAkF7gT,EAA9DlD,GAAAA,wBAAkCkD,EAAY3kC,EAClF,GArWL,0CAsWI,SAA6BgtE,GACzB,IAAIirB,EAAajrB,EAAYhmF,OAAOixG,YAAc,EAEnC1yD,EAEXynC,EAFAznC,UACSC,EACTwnC,EADAxnC,QAEJ,OAAI/lF,KAAKggY,wBAA0BzyQ,EAAYzB,OACpC9rH,KAAKs2W,iBAAiB0vB,6BAA6BxtP,EAAY1yD,GAEnE9lF,KAAKs2W,iBAAiB2vB,uBAAuBztP,EAAY1yD,EAAWC,EAAS/lF,KAAK+lY,kBAC5F,GAhXL,8BAiXI,SAAiB9wQ,GAAgB,WACzBzxH,EAAS,GACb,GAAIyxH,GAAkBj1H,KAAKq7I,gBAAgB16I,OAAQ,CAC/C,IAAIm5I,EAAOzB,GAAoBr4I,KAAKq7I,iBACpC73I,EAASw2I,IAAsB,SAAC37E,EAAOx4C,GAAR,OAAmB+zH,GAAiB,EAAKx8I,QAAQ+2H,cAAcp0E,UAAWse,EAAOx4C,EAAjF,GAA0Fi0H,EAAM7kB,EAClI,CACD,OAAOzxH,CACV,KAxXL,KA0Xa0iY,GAAb,4IACI,WACI,OAAO/sP,GAAcn5I,KAAKq7I,gBAC7B,GAHL,2CAII,SAA8B9tB,EAAawyQ,GAAc,WAEvCl0W,EACV0hG,EADA1hG,SAEAroB,EAAS,GAkBb,OAjBwBxD,KAAK2uF,WAAaoxS,EAAe,CAAC,IACxCr/X,SAAQ,SAAA83I,GACtB,IAAI7rG,EAAS,EAAKg5V,yBAAyBp4Q,EAAairB,GAEpD2tP,EADsBx2P,KAAyBgC,cAAchlG,GACzB5oC,KAAI,SAAAkwB,GACxC,IAAI6xD,EAAY,IAAIhjF,KAAKmxB,GACrB8wF,EAAUgQ,GAAAA,6BAA2C9gG,GAGzD,OAFA8wF,EAAQ5kC,QAAQ4kC,EAAQrvD,UAAY7pC,GAE7B,CACHi6D,UAAWA,EACXC,QAHUgvC,GAAAA,iCAA+ChQ,GAIzDyzB,WAAYA,EAEnB,IACDh1I,EAAOpD,KAAP,MAAAoD,GAAM,QAAS2iY,GAClB,IACM3iY,CACV,GA3BL,iCA4BI,SAAoB+xH,EAAcwqQ,GAAc,WACxCv8X,EAAS,GAWb,OAVAu8X,EAAar/X,SAAQ,SAAA83I,GACI,EAAK89N,iBAAiB8vB,kBAAkB5tP,IAEzDjjB,EAAa70H,SAAQ,SAAA6sH,GACjB,IAAI84Q,GAAkB5gV,EAAAA,GAAAA,GAAO,CAAC,EAAG8nE,GACjC84Q,EAAgB7tP,WAAaA,EAC7Bh1I,EAAOpD,KAAKimY,EACf,GAER,IACM7iY,CACV,GAzCL,8BA0CI,SAAiBu8C,GACb,IAAIggV,GAAe,+DAAuBhgV,GACtCumV,EAAuBtmY,KAAKs2W,iBAAiBiwB,kBAIjD,OAHM,OAASxG,QAAgB,IAAWA,OAAe,EAASA,EAAap/X,UAC3Eo/X,EAAe,CAAC,IAEbA,EAAavlW,QAAO,SAAAg+G,GAAU,OAAK,IAAM8tP,EAAqBllY,QAAQo3I,EAAxC,GACxC,GAjDL,iCAkDI,SAAoBjrB,EAAawyQ,GAC7B,IAAIxqQ,GAAe,kEAA0BhI,EAAawyQ,GAC1D,OAAQxyQ,EAAY45P,YAAqE5xP,EAAvDv1H,KAAKwmY,oBAAoBjxQ,EAAcwqQ,EAC5E,KArDL,GAAkD0C,IAuDrCgE,GAAb,WACI,WAAYrpY,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAK0rH,mBAAqBspB,GAAyBh1I,KAAKi1H,eAAgBj1H,KAAKm0H,cAAen0H,KAAKw0H,mBACpG,CAJL,2CAKI,WACI,OAAOx0H,KAAK5C,QAAQ63H,cACvB,GAPL,yBAQI,WACI,OAAOj1H,KAAK5C,QAAQ+2H,aACvB,GAVL,8BAWI,WACI,OAAOn0H,KAAK5C,QAAQo3H,kBACvB,GAbL,kCAcI,WACI,OAAOx0H,KAAK5C,QAAQ22W,wBAA0B/zW,KAAK5C,QAAQm2W,gBAC9D,GAhBL,kBAiBI,WACI,OAAOvzW,KAAK5C,QAAQihD,MACvB,GAnBL,gCAoBI,WACI,IAAIjhD,GAAU2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK5C,SAAU,CAC/C4iY,uBAAwBhgY,KAAKggY,yBAEjC,OAAOhgY,KAAK5C,QAAQk3W,mBAAqB,IAAI4xB,GAA6B9oY,GAAW,IAAIqlY,GAA0BrlY,EACtH,GAzBL,oBA0BI,WACI,IAAI,EAIA4C,KAAK0mY,wBAHShH,EADlB,EACIA,aACkBkD,EAFtB,EAEIA,iBACazb,EAHjB,EAGIA,YAEAwf,EAAgB3mY,KAAK4mY,wBAAwBlH,EAAckD,GAE/D,OADa5iY,KAAK6mY,yBAAyBnH,EAAciH,EAAexf,EAE3E,GAnCL,mCAoCI,WACI,OAAOnnX,KAAK8mY,qBAAqBvgW,SAASvmC,KAAK0rH,mBAClD,GAtCL,qCAuCI,SAAwBg0Q,EAAckD,GAIlC,OAH6B,IAAIR,IAAuBrpX,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK5C,SAAU,CACzFsiY,aAAcA,KAEY2C,uBAAuBO,EAAkB5iY,KAAKggY,uBAAwBhgY,KAAK0rH,mBAAmBy7P,YAC/H,GA5CL,sCA6CI,SAAyBuY,EAAciH,EAAexf,GAAa,WAC3D4f,EAAQ,GAkBZ,OAjBAJ,EAAcjmY,SAAQ,SAAAsW,GAClB,IACiB2vW,EAEb3vW,EAFA2vW,YACkB4Z,EAClBvpX,EADAupX,iBAEAL,EAAcR,EAAaa,GAC3B3V,EAAW,EAAKoc,wBAAwB9G,GACxCljX,EAAO,CACPuwG,YAAa2yQ,EACb1vB,kBAAmB0vB,EAAY34V,OAC/BqjV,SAAUA,EACVzD,YAAaA,GAEjB4f,EAAM3mY,MAAK2Y,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG4tW,GAAc,CAC3C3pW,KAAMA,IAEb,IACM+pX,CACV,GAjEL,qCAkEI,SAAwBv2B,GAMpB,OD1hB6B,SAAApzW,GACjC,IACe0oF,EAIX1oF,EAJA0oF,UACSC,EAGT3oF,EAHA2oF,QACQ+lC,EAER1uH,EAFA0uH,OAGAjlC,EADAzpF,EADAy6D,QAEuByqU,GAAcx8S,EAAWC,EAAS+lC,GAC7D,OAAOy2Q,GAAYz8S,EAAWC,EAASc,EAC1C,CCihBcogT,CAAwB,CAC3BnhT,UAFA0qR,EAHA1qR,UAMAC,QAHAyqR,EAFAzqR,QAMA+lC,OAJA0kP,EADA1kP,OAMAj0D,OA9fuB,QAggB9B,KA9EL,KCzZA,GAjDMqvU,WACF,WAAYC,IAAmB,eAC3BnnY,KAAKonY,mBAAqBD,CAC7B,2DACD,SAA4B5M,EAAellQ,GACvC,OAAIA,KAAahnE,EAAAA,EAAAA,IAAUgnE,GAPD,GAQer1H,KAAKonY,mBAAmBnpB,UAAY,IAbvD,EAgBzB,sCACD,SAAsBnyP,GAClB,OAjBuB,CAkB1B,uCACD,WACI,OApBuB,CAqB1B,4CACD,WACI,OAAI9rH,KAAKonY,mBAAmBC,kBAtBW,GAyBhCrnY,KAAKonY,mBAAmBh6Q,iBAClC,kDACD,WACI,IAAI+5Q,EAAoBnnY,KAAKonY,mBAEbppB,EACZmpB,EADAnpB,WAEAspB,EAAc/9X,KAAKo/D,OAAOq1S,EAAampB,EAAkBI,gCAAkCJ,EAAkBK,iCAAmCxnY,KAAKynY,0BACzJ,OAAIN,EAAkBO,kBACX,CACH57Q,OAAQ,aAAeq7Q,EAAkB5pP,iBAAmB+pP,EAActnY,KAAKonY,mBAAmBO,wBAClGC,OAAQ5nY,KAAK6nY,4CAA8C7nY,KAAKynY,2BAGjEH,CACV,6CACD,WAEC,wCACD,WACI,OA5CoB,CA6CvB,yDACD,WACI,OAAO/9X,KAAKo/D,MAAM3oE,KAAKonY,mBAAmBU,0BA5ChB,GA6C7B,4CACD,WACI,OAjDwB,EAkD3B,OA/CCZ,GCLAa,GAAAA,SAAAA,sJACF,SAA4BxN,EAAellQ,GACvC,OAAOr1H,KAAKgoY,+BACf,8CACD,WACI,OATsB,EAUzB,sCACD,SAAsBl8Q,GAClB,IAAIq7Q,EAAoBnnY,KAAKonY,mBAC7B,OAAID,EAAkBO,mBAAqB57Q,GAC/Bq7Q,EAAkBc,aAAed,EAAkBa,iCAAmC,EAE3FhoY,KAAKonY,mBAAmBppB,WAfA,EAgBlC,uCACD,WACI,IAAIkqB,EAAiBloY,KAAKonY,mBAAmBe,8BAC7C,OAAQnoY,KAAKonY,mBAAmBnpB,UAAYiqB,GAAkB,CACjE,4CACD,WACI,OArBkC,EAsBrC,kDACD,WAEI,OADwBloY,KAAKonY,mBACPM,kBACX,CACH57Q,OAAQ,EACR87Q,OAAQ5nY,KAAK6nY,4CAA8C7nY,KAAKynY,2BAGjE,CACV,6CACD,WACI,OApCsB,EAqCzB,wCACD,WACI,OAAO,CACV,4CACD,WAEI,OADwBznY,KAAKonY,mBACPM,kBAxCW,IA2C1B,0EACV,yDACD,WACI,OAAOn+X,KAAKo/D,MAAM3oE,KAAKonY,mBAAmBU,0BAA4B9nY,KAAKonY,mBAAmBgB,8BACjG,OA9CCL,CAAoCb,IAgD1C,MC7BI/4Q,GAAOnsC,GAAAA,mBAOLqmT,GAAAA,WACF,WAAYjrY,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAKsoY,0BACR,wCACD,WACI,OAAOtoY,KAAK5C,QAAQ8/C,iBACvB,yBACD,WACI,OAAOl9C,KAAK5C,QAAQ4iD,UACvB,2BACD,WACI,OAAOhgD,KAAK5C,QAAQmjD,YACvB,yBACD,WACI,OAAOvgD,KAAK5C,QAAQ6gD,UACvB,qCACD,WACI,OAAOj+C,KAAK5C,QAAQohD,sBACvB,wBACD,WACI,OAAOx+C,KAAK5C,QAAQ6gX,SACvB,yBACD,WACI,OAAOj+W,KAAK5C,QAAQ4gX,UACvB,2BACD,WACI,OAAOh+W,KAAK5C,QAAQ6qY,YACvB,4BACD,WACI,OAAOjoY,KAAK5C,QAAQmrY,aACvB,8BACD,WACI,OAAOvoY,KAAK5C,QAAQslY,eACvB,iCACD,WACI,OAAO1iY,KAAK5C,QAAQqqX,kBACvB,+BACD,WACI,OAAOznX,KAAK5C,QAAQuuH,gBACvB,6BACD,WACI,OAAO3rH,KAAK5C,QAAQwuH,cACvB,2BACD,WACI,OAAO5rH,KAAK5C,QAAQogD,YACvB,oCACD,WACI,OAAOx9C,KAAK5C,QAAQorY,qBACvB,mCACD,WACI,OAAOxoY,KAAK5C,QAAQqrY,oBACvB,kCACD,WACI,OAAOzoY,KAAK5C,QAAQsrY,mBACvB,6BACD,WACI,OAAO1oY,KAAK5C,QAAQuiY,cACvB,8BACD,WACI,OAAO3/X,KAAK5C,QAAQ+iD,eACvB,mCACD,WACI,OAAOngD,KAAK5C,QAAQ0iY,oBACvB,+BACD,WACI,OAAO9/X,KAAK5C,QAAQmgJ,gBACvB,uBACD,WACI,OAAOv9I,KAAK5C,QAAQoxQ,QACvB,yBACD,WACI,OAAOxuQ,KAAK5C,QAAQuxF,UACvB,0BACD,WACI,OAAO3uF,KAAK5C,QAAQ2nF,WACvB,sCACD,WACI,OAAO/kF,KAAK5C,QAAQuqY,uBACvB,gCACD,WACI,OAAO3nY,KAAK5C,QAAQgwH,iBACvB,4BACD,WACI,OAAOptH,KAAK5C,QAAQurY,aACvB,kCACD,WACI,OAAO3oY,KAAK5C,QAAQwrY,mBACvB,+BACD,WACI,OAAO5oY,KAAK5C,QAAQk5W,gBACvB,4BACD,WACI,OAAOt2W,KAAK5C,QAAQ+2H,aACvB,iCACD,WACI,OAAOn0H,KAAK5C,QAAQo3H,kBACvB,4BACD,WACI,OAAOx0H,KAAK5C,QAAQm9X,aACvB,8BACD,WACI,OAAOv6X,KAAK5C,QAAQigD,eACvB,iCACD,WACI,OAAOr9C,KAAK5C,QAAQk3W,kBACvB,uDACD,SAAuCqS,EAAatxP,GAChDsxP,EAAYliV,KAAOzkC,KAAK6oY,sBAAsBxzQ,GAC9CsxP,EAAY/hV,MAAQ5kC,KAAK8oY,wBAC5B,yCACD,WACI9oY,KAAK+oY,qBAAuB/oY,KAAKgpY,WAAa,IAAIjB,GAA4B/nY,MAAQ,IAAIknY,GAA+BlnY,KAC5H,uCACD,WACI,OAAOA,KAAK+oY,oBACf,sCACD,WACI,OA5HmB,CA6HtB,wCACD,WACI,OAAO,CACV,6BACD,SAAanrY,EAAMqrY,EAAa17Q,GAAe,uCAC/C,SAAuBo5P,GACnB,OAAOA,CACV,4CACD,WACI,OAAO,CACV,6BACD,WACI,MAAO,YACV,sCACD,SAAsBzgU,EAAOgjV,GAAa,kBAC/BlpY,KAAKmpY,4BACZ,IAAIxoY,EAAS,OAASulD,QAAS,IAAWA,OAAQ,EAASA,EAAMvlD,OACjE,GAAKA,EAAL,CAIA,IADA,IAAIoD,EAAM,GACD4E,EAAI,EAAGA,EAAIhI,EAAQgI,IAAK,CAC7B,IAAIg+W,EAAc3mX,KAAKw6R,iBAAiBt0O,EAAMv9C,IAC1Cg+W,EAAYhmX,QAAUX,KAAKggD,aAC3B2mU,EAAc3mX,KAAKopY,uBAAuBziB,IAE9CA,EAAYjmX,SAAQ,SAAAkE,GAChBA,EAAK6jY,qBAAuB,EAAKA,qBACjC7jY,EAAK8jY,oBAAsB,EAAKA,oBAChC9jY,EAAKykY,iBAAmB,EAAKZ,qBAAuB,EAAKxqB,UACzDr5W,EAAK0kY,iBAAmB,EAAKZ,oBAAsB,EAAK1qB,UAC3D,IACDj6W,EAAI3D,KAAKumX,EACZ,CACD,IAAI4iB,EAAgBvpY,KAAKwpY,oBAAoBzlY,GACzC0lY,EAAkBzpY,KAAK0pY,oBAAoBH,GAC/C,OAAOvpY,KAAK2pY,wBAAwB5lY,EAAK0lY,EAjBxC,CAkBJ,+BACD,SAAe7rY,EAAMqrY,GACjB,IAAIW,EAAgB5pY,KAAKuoY,eAAiBvoY,KAAK6pY,wBAC3CC,EAAeb,EAAYt4W,MAC/B,OAAOpnB,KAAKoZ,OAAO/kB,EAAK+yB,MAAQm5W,GAAgBF,EACnD,uCACD,SAAuBjjB,GACnB,IAAIh2V,EAAQg2V,EAAY,GAAGh2V,OAAS3wB,KAAK8nY,0BAMzC,OALAnhB,EAAYjmX,SAAQ,SAAAyhY,GACXA,EAAWhc,qBACZgc,EAAWv9V,MAAQjU,EAE1B,IACMg2V,CACV,wCACD,WACI,OAAO3mX,KAAKi+W,SACf,iCACD,SAAiB1wP,GAIb,IAHA,IAAI/iH,EAAWxK,KAAK+pY,4BAA4Bx8Q,GAC5CzB,EAAS9rH,KAAKq1H,SAAS9H,GACvB/pH,EAAS,GACJsK,EAAI,EAAGA,EAAItD,EAAS7J,OAAQmN,IAAK,CACtC,IAAI0e,EAASxsB,KAAKgqY,2BAA2Bz8Q,EAAa/iH,EAASsD,IAC/D6iB,EAAQ3wB,KAAKiqY,0BAA0B18Q,EAAa/iH,EAASsD,IAC7Do8X,EAAcv5W,EACdw1V,EAAqB,KACrBgkB,EAA4B,GAC5BC,EAAkB5/X,EAASsD,GAAG2hQ,SAC9B46H,EAAqB7/X,EAASsD,GAAGy/U,YACrC,GAAIvtV,KAAKsqY,uBAAyBx+Q,EAAQ,CACtC,IAAIy+Q,EAA4B//X,EAASsD,GAAGqzX,KACxCnhY,KAAKwqY,yBAAyBD,EAA2B,CACrD3lW,KAAMp6B,EAASsD,GAAG82B,KAClBjU,MAAOA,MAEXw1V,EAAqB,OACrBikB,EAAkB5/X,EAASsD,GAAG2hQ,SAC9B46H,EAAqB7/X,EAASsD,GAAGy/U,YACjC28C,EAAclqY,KAAKyqY,4BAA4B95W,EAAO,CAClDiU,KAAMp6B,EAASsD,GAAG82B,KAClBF,MAAO6lW,IAEXJ,EAA4BnqY,KAAK0qY,qBAAqB,CAClDC,uBAAwBh6W,EACxBi6W,aAAcV,EACd19W,OAAQA,GACThiB,EAASsD,IACR9N,KAAKggD,aACLx1C,EAASsD,GAAG82B,KAAO2lW,GAG9B,EACD9kV,EAAAA,GAAAA,GAAOj7C,EAASsD,GAAI,CAChB0e,OAAQA,EACRmE,MAAOu5W,EACPp+Q,OAAQA,EACR2jJ,SAAU26H,EACV78C,YAAa88C,EACblkB,mBAAoBA,IAExB3iX,EAASxD,KAAK6qY,6BAA6BV,EAA2B3/X,EAASsD,GAAItK,EACtF,CACD,OAAOA,CACV,6CACD,SAA6BsnY,EAAkBtgY,EAAUhH,GAOrD,OANIsnY,EAAiBnqY,QACjBmqY,EAAiBl6T,QAAQpmE,GACzBhH,EAASA,EAAOyM,OAAO66X,IAEvBtnY,EAAOpD,KAAKoK,GAEThH,CACV,gDACD,SAAgCyxH,GAC5B,OAAO,IAAIwxQ,IAA6B1tX,EAAAA,EAAAA,GAAS,CAC7Ck8G,eAAgBA,EAChB8+O,uBAAwB/zW,KAAK+qY,yBAAyB91Q,GACtD2qQ,yBAA0B5/X,KAAK6gY,iBAAiB/jY,KAAKkD,OACtDA,KAAK5C,SACX,4CACD,SAA4B63H,GACxB,OAAOj1H,KAAKgrY,gCAAgC/1Q,GAAgBzkH,QAC/D,yCACD,SAAyBykH,GACrB,IAAI31B,EAAU01C,GAAyB/f,EAAgBj1H,KAAKm0H,cAAen0H,KAAKw0H,oBAChF,OAAO/I,GAA0BnsB,EAASt/F,KAAK2rH,iBAAkB3rH,KAAK4rH,eAAgB5rH,KAAKq9C,gBAC9F,qCACD,SAAqBsgU,EAAUnoP,GAC3B,MAAO,EACV,4CACD,SAA4By1Q,GACxB,IAAIhtB,EAAYj+W,KAAKi+W,WAAaj+W,KAAK6pY,wBACvC,OAAOtgY,KAAKoZ,MAAMsoX,EAAmBhtB,EACxC,4CACD,SAA4B0sB,EAAwBO,GAMhD,OALIlrY,KAAKggD,WACoBz2C,KAAKo/D,MAAMuiU,EAAMtmW,KAAOsmW,EAAMxmW,OAE9BwmW,EAAMxmW,MAAQn7B,KAAKo/D,MAAMuiU,EAAMtmW,KAG/D,2CACD,SAA2B2oF,EAAa/iH,GACpC,OAAO,CACV,0CACD,SAA0B+iH,EAAa/iH,GACnC,OAAO,CACV,yCACD,SAAyB2gY,EAAQC,GAC7B,IAAI5nY,EAAS4nY,EAAqBxmW,KAAOwmW,EAAqBz6W,MAAQw6W,EAItE,OAHInrY,KAAKggD,aACLx8C,EAAS2nY,EAASC,EAAqBz6W,MAAQy6W,EAAqBxmW,MAEjEphC,EAASxD,KAAKi+W,UAAY,CACpC,yBACD,SAAS1wP,GACL,OAAO,CACV,qCACD,SAAqB58F,EAAOstV,GACxB,OAAOj+W,KAAK0iY,gBAAkBzkB,EAAYttV,CAC7C,oCACD,SAAoB06W,EAAcnC,GAa9B,IAb2C,WACvC1lY,EAAS,GACTmf,EAAQ,SAAAzkB,GAAK,OAAIqL,KAAKoZ,MAAM,IAAMzkB,GAAS,GAA9B,EACbotY,EAAa,SAAC77H,EAAU89E,EAAa9oT,EAAKG,EAAMD,EAAQD,EAAOl6B,EAAUshH,GAA5D,MAAwE,CACrFnjH,EAAG8mQ,EACH3hQ,EAAGy/U,EACH9oT,IAAK9hB,EAAM8hB,GACXG,KAAMjiB,EAAMiiB,GACZD,OAAQhiB,EAAMgiB,GACdD,MAAO/hB,EAAM+hB,GACbw8V,aAAc12X,EACdshH,OAAQA,EARK,EAUR2jJ,EAAW,EAAGjB,EAAW68H,EAAa1qY,OAAQ8uQ,EAAWjB,EAAUiB,IACxE,IAAK,IAAI89E,EAAc,EAAGg+C,EAAYF,EAAa57H,GAAU9uQ,OAAQ4sV,EAAcg+C,EAAWh+C,IAAe,CACzG,IAAI,EAOA89C,EAAa57H,GAAU89E,GANlB9oT,EADT,EACIA,IACMG,EAFV,EAEIA,KACQpY,EAHZ,EAGIA,OACOmE,EAJX,EAIIA,MACcuwW,EALlB,EAKIA,aACQp1Q,EANZ,EAMIA,OAEJtoH,EAAOpD,KAAKkrY,EAAW77H,EAAU89E,EAAa9oT,EAAKG,EAAMH,EAAMjY,EAAQoY,EAAOjU,EAAOuwW,EAAcp1Q,GACtG,CAEL,OAAOtoH,EAAO41B,MAAK,SAACrZ,EAAGC,GAAJ,OAAU,EAAKwrX,eAAezrX,EAAGC,EAAjC,GACtB,+BACD,SAAeD,EAAGC,GAAK,+BACvB,SAAeD,EAAGC,GACd,IAAIyrX,EAAazrY,KAAK0rY,YAAY3rX,EAAGC,GACrC,MAAO,CACH2rX,gBAAiBF,GAAczrY,KAAK4rY,oBAAoB7rX,EAAE6kB,KAAM5kB,EAAE4kB,MAClEinW,aAAcJ,GAAczrY,KAAK4rY,oBAAoB7rX,EAAE0kB,IAAKzkB,EAAEykB,KAC9DqnW,sBAAuBL,GAAczrY,KAAK4rY,oBAAoB7rX,EAAEmhX,aAAclhX,EAAEkhX,cAEvF,8BACD,SAAcnhX,EAAGC,GACb,IAAI+rX,EAAa/rY,KAAKgsY,eAAejsX,EAAGC,GACxC,OAAO+rX,EAAWJ,iBAAmBI,EAAWF,YACnD,iCACD,SAAiB9rX,EAAGC,GAChB,IAAI+rX,EAAa/rY,KAAKgsY,eAAejsX,EAAGC,GACxC,OAAO+rX,EAAWF,cAAgBE,EAAWJ,eAChD,4BACD,SAAY5rX,EAAGC,GACX,OAAOD,EAAEpX,IAAMqX,EAAErX,GAAKoX,EAAEjS,IAAMkS,EAAElS,CACnC,oCACD,SAAoBinC,EAAOC,GACvB,IAAIxxC,EAASuxC,EAAQC,EACrB,OAAOzrC,KAAKD,IAAI9F,GAAU,EAAIA,EAAS,CAC1C,8BACD,SAAcyoY,EAAWC,GACrB,IAAIC,IAA2BF,EAAUngR,WAAaogR,EAAWpgR,OAC7DsgR,EAAiBH,EAAUngR,QAAUogR,EAAWpgR,OACpD,GAAIqgR,EAAwB,CACxB,IAAIx0T,EAAc33E,KAAKqsY,gBAAgBD,GACvC,OAAOpsY,KAAKssY,oBAAoBL,EAAWC,EAAYv0T,EAC1D,CACD,OAAO,CACV,oCACD,SAAoBs0T,EAAWC,EAAYv0T,GACvC,IAAI40T,EAAiBhjY,KAAKo/D,MAAMsjU,EAAUt0T,EAAY,KAClD60T,EAAiBjjY,KAAKo/D,MAAMsjU,EAAUt0T,EAAY,KAClD80T,EAAkBljY,KAAKq7E,KAAKsnT,EAAWv0T,EAAY,KACnD+0T,EAAkBnjY,KAAKq7E,KAAKsnT,EAAWv0T,EAAY,KAEvD,OADkBpuE,KAAKD,IAAI2iY,EAAUt0T,EAAY,IAAMu0T,EAAWv0T,EAAY,MAAQ,IAC/D40T,GAAkBE,GAAmBD,EAAiBC,GAAmBF,EAAiBG,GAAmBF,GAAkBE,GAAmBH,IAAmBE,GAAmBD,IAAmBE,EACrO,gCACD,SAAgBr3Q,GACZ,OAAOA,EAAW,CAAC,OAAQ,QAAS,OAAS,CAAC,MAAO,SAAU,OAClE,oCACD,SAAoBs3Q,GAAa,IAEzBhkY,EAEAs9U,EACAllO,EACA03B,EANyB,OACzBj1I,EAAS,GAETm/W,EAAc,EAIdiqB,EAAkB,EAClBC,EAAQ,CAAC,EACTC,EAAgB,SAAhBA,EAAiB/rR,EAAS5/G,GAC1B,IAAI4rY,EAAShsR,EAAQ5uD,MAAK,SAAAvtD,GAAI,OAAIA,IAASzD,CAAb,IAC9B,OAAI4rY,EACOD,EAAc/rR,IAAW5/G,GAE7BA,CACV,EACGmqY,EAAa,SAACrlD,EAAa9kV,GAC3B,IAAIkwU,EAAelwU,GAAS,EAC5B,MAAO,CACHA,MAAOkwU,EACP1oU,EAAGs9U,EAAYt9U,EACfmF,EAAGm4U,EAAYn4U,EACf82B,KAAMqhT,EAAYrhT,KAClBF,MAAOuhT,EAAYvhT,MACnBD,IAAKwhT,EAAYxhT,IACjBE,OAAQshT,EAAYthT,OACpBmnF,OAAQm6N,EAAYn6N,OACpB62P,YAAa,EAAKqqB,iBAAiB37D,GAAgB,KAAOsxC,IAEjE,EACGsqB,EAAgB,SAAAhnD,GAChB4mD,EAAM3mV,MAAQ,CAAColV,EAAWrlD,IAC1B4mD,EAAMjoW,KAAOqhT,EAAYrhT,KACzBioW,EAAMnoW,MAAQuhT,EAAYvhT,MAC1BmoW,EAAMpoW,IAAMwhT,EAAYxhT,IACxBooW,EAAMloW,OAASshT,EAAYthT,OAC3BkoW,EAAM/gR,OAASm6N,EAAYn6N,MAC9B,EACGohR,EAAoB,SAAAhnV,GACpBA,EAAMxlD,SAAQ,SAAAkE,GACVpB,EAAOpD,KAAK,CACRe,MAAOyD,EAAKzD,MACZ0K,MAAO+gY,EAAkB,EACzBjkY,EAAG/D,EAAK+D,EACRmF,EAAGlJ,EAAKkJ,EACR60W,YAAa/9W,EAAK+9W,aAEzB,GACJ,EACD,IAAKh6W,EAAI,EAAGA,EAAIgkY,EAAYhsY,OAAQgI,IAChCs9U,EAAc0mD,EAAYhkY,GAC1Bo4G,EAAU,GACL8rR,EAAM3mV,MAEAlmD,KAAKmtY,cAAcN,EAAO5mD,IACjC4mD,EAAM3mV,MAAMxlD,SAAQ,SAAAkE,GACZ,EAAKuoY,cAAcvoY,EAAMqhV,IACzBllO,EAAQ3gH,KAAKwE,EAAKzD,MAEzB,IACDs3I,EAAY13B,EAAQpgH,OAASmsY,EAAc/rR,EAAS,GAAK,EACzD8rR,EAAM3mV,MAAM9lD,KAAKkrY,EAAWrlD,EAAaxtM,IACzCm0P,EAAkBrjY,KAAKkuB,IAAIghH,EAAWm0P,GACtCC,EAAMjoW,KAAOr7B,KAAKsZ,IAAIgqX,EAAMjoW,KAAMqhT,EAAYrhT,MAC9CioW,EAAMnoW,MAAQn7B,KAAKkuB,IAAIo1W,EAAMnoW,MAAOuhT,EAAYvhT,OAChDmoW,EAAMpoW,IAAMl7B,KAAKsZ,IAAIgqX,EAAMpoW,IAAKwhT,EAAYxhT,KAC5CooW,EAAMloW,OAASp7B,KAAKkuB,IAAIo1W,EAAMloW,OAAQshT,EAAYthT,QAClDkoW,EAAM/gR,OAASm6N,EAAYn6N,SAE3BohR,EAAkBL,EAAM3mV,OACxB2mV,EAAQ,CAAC,EACTI,EAAchnD,GACd2mD,EAAkB,GAnBlBK,EAAchnD,GAyBtB,OAHI4mD,EAAM3mV,OACNgnV,EAAkBL,EAAM3mV,OAErB1iD,EAAO41B,MAAK,SAACrZ,EAAGC,GACnB,IAAI2rX,EAAkB5rX,EAAEjS,EAAIkS,EAAElS,EAE9B,OADmBiS,EAAEpX,EAAIqX,EAAErX,GACJgjY,CAC1B,GACJ,iCACD,SAAiBxqY,GACb,OAAOA,EAAQnB,KAAKotY,iCAAmC,CAC1D,gCACD,SAAgBz8U,EAAK08U,EAAMC,EAAMC,EAAQC,GAErC,IADA,IAAIhqY,EAAS,EACJmF,EAAI,EAAGyI,EAAMu/C,EAAIhwD,OAAQgI,EAAIyI,EAAKzI,IACvC,GAAIgoD,EAAIhoD,GAAG0kY,KAAUE,GAAU58U,EAAIhoD,GAAG2kY,KAAUE,EAAQ,CACpDhqY,EAASmF,EACT,KACH,CAEL,OAAOnF,CACV,wCACD,SAAwBO,EAAKo9O,GAGzB,IAFA,IAAIssJ,EAAkB,EAClBjqY,EAAS,GACJmF,EAAI,EAAG+kY,EAAY3pY,EAAIpD,OAAQgI,EAAI+kY,EAAW/kY,IAAK,CAExD,IADA,IAAIglY,EAAe,GACV7/X,EAAI,EAAG8/X,EAAa7pY,EAAI4E,GAAGhI,OAAQmN,EAAI8/X,EAAY9/X,IACxD/J,EAAI4E,GAAGmF,GAAG3M,MAAQggP,EAAUssJ,GAAiBtsY,MAC7C4C,EAAI4E,GAAGmF,GAAG60W,YAAcxhI,EAAUssJ,GAAiB9qB,YACnD5+W,EAAI4E,GAAGmF,GAAGjC,MAAQs1O,EAAUssJ,KAAmB5hY,MAC/C8hY,EAAavtY,KAAK2D,EAAI4E,GAAGmF,IACzB9N,KAAK6tY,6BAA6B9pY,EAAI4E,GAAGmF,GAAI6/X,GAEjDnqY,EAAOpD,KAAKutY,EACf,CACD,OAAOnqY,CACV,6CACD,SAA6BoB,EAAMpB,GAE/B,OADAxD,KAAK8tY,6BAA6BlpY,EAAMpB,GACjCA,CACV,6CACD,SAA6BoB,EAAMpB,GAC/B,IAAImkY,EAA0B3nY,KAAK+tY,qCAAqCnpY,EAAKknH,QACzEkiR,EAAe,EACnB,QAAI,IAAWrG,GAA2B/iY,EAAKzD,MAAQwmY,EAA0B,EAAG,CAChF/iY,EAAK84L,WAAY,EACjBswM,EAAehuY,KAAKiuY,4BAA4BrpY,EAAK+rB,OACrD,IAAK,IAAI3sB,EAAI,EAAGA,EAAIgqY,EAAchqY,IAAK,CACnC,IAAIkqY,GAAczoV,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAG7gD,GACnCspY,EAAYtpW,KAAO5kC,KAAKmuY,0BAA0BvpY,EAAKggC,KAAM5gC,GAC7DkqY,EAAY3gD,aAAevpV,EAC3BkqY,EAAYvrB,YAAc,KAC1Bn/W,EAAOpD,KAAK8tY,EACf,CACJ,CACD,OAAO1qY,CACV,8CACD,SAA8BqoB,EAAUi6D,EAAWC,GAC/C,IAAIqoT,EAAer5Q,GAAAA,kBAAgCjvC,EAAWC,GAC9D,OAAO/lF,KAAKquY,oBAAoBD,GAAgBpuY,KAAKsuY,iCAAiCziX,EAAUuiX,GAAgBviX,CACnH,oCACD,SAAoB81D,GAChB,OAAO,IAAMA,CAChB,iDACD,SAAiC91D,EAAU81D,GACvC,OAAO91D,EAAW81D,EAAOwsC,GAAK,SACjC,wCACD,SAAwBkH,GACpB,GAAIA,IAAar1H,KAAKuuY,kCAClB,OAAO,EAEX,IAAIC,EAAsBxuY,KAAKmoY,4BAA4BnoY,KAAKu6X,cAAellQ,GAC3Eo5Q,EAAczuY,KAAKqnY,kBAnfgB,EADd,EAqfzB,OAAOrnY,KAAKi+W,UAAYuwB,EAAsBC,CACjD,0CACD,SAA0B9nB,GACtB,IAAItxP,EAAWv9G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GACvE42X,EAAkC1uY,KAAK+tY,qCAAqC14Q,GAChF,GAAIsxP,EAAY96W,MAAQ6iY,EAAkC,EAAG,CACzD,IACSjqW,EAELkiV,EAFAliV,IACMG,EACN+hV,EADA/hV,KAEA+pW,EAAgB3uY,KAAKgpY,aAAe3zQ,GAAYr1H,KAAK4uY,qCACzDjoB,EAAYX,QAAU,CAClBphV,KAAMA,EAAO5kC,KAAK6uY,wBAAwBx5Q,GAC1C5wF,IAAKA,EACL9T,MAAO3wB,KAAKmoY,4BAA4BnoY,KAAKu6X,cAAellQ,GAC5D7oG,OAAQxsB,KAAK8uY,+BACb3tY,MAAOnB,KAAK+uY,mCAAmCpoB,EAAatxP,GAC5DA,SAAUA,EACVmjB,WAAYmuO,EAAYnuO,WACxBklD,UAAWixM,EAElB,CACJ,gDACD,WACI,OAAO3uY,KAAK4uY,oCACf,mDACD,WACI,OAAO,CACV,mDACD,SAAmC53X,EAAMq+G,GACrC,IACgBmjB,EAGZxhI,EAHAwhI,WACUi3H,EAEVz4P,EAFAy4P,SACa89E,EACbv2U,EADAu2U,YAEJ,MAAO,GAAGt9U,OAAOuoI,EAAY,KAAKvoI,OAAOw/P,EAAU,KAAKx/P,OAAOs9U,EAAa,KAAKt9U,OAAOolH,EAC3F,qDACD,SAAqCA,GACjC,IAAIsyQ,EAA0B3nY,KAAKotY,iCACnC,OAAI/sX,EAAAA,EAAAA,IAASsnX,GACFtyQ,EAAWsyQ,EAAwB77Q,OAAS67Q,EAAwBC,OAExED,CACV,4CACD,SAA4BpN,EAAellQ,GACvC,OAAOr1H,KAAKgvY,yBAAyB7G,4BAA4B5N,EAAellQ,EACnF,6CACD,WACI,OAAOr1H,KAAKgvY,yBAAyBF,8BACxC,8CACD,WACI,OAziB6B,EA0iBhC,sCACD,SAAsBhjR,GAClB,OAAO9rH,KAAKgvY,yBAAyBnG,sBAAsB/8Q,EAC9D,uCACD,WACI,OAAO9rH,KAAKgvY,yBAAyBlG,wBACxC,6CACD,WAAiC,6CACjC,SAA6B9qB,EAAYixB,EAA+BzwV,GACpE,IAAI0wV,EAA+B1wV,EACnC,IAAIka,EAAAA,EAAAA,IAAU14D,KAAKw+C,wBAAyB,CACxC,IAAI2wV,EAAiCnvY,KAAKovY,qCACtCC,EAAqCF,EAA+BrjR,QAAUqjR,EAC9EG,EAAuB/lY,KAAKkuB,IAAIw3W,EAA+BI,GACnEH,EAA+B3lY,KAAKsZ,IAAIysX,EAAsB9wV,EACjE,CACD,OAAOw/T,EAAakxB,CACvB,sCACD,SAAsBvoB,EAAa3I,EAAY2pB,EAAyB4H,EAAWl6Q,GAC/E,IACWl0H,EAEPwlX,EAFAxlX,MACO0K,EACP86W,EADA96W,MAEA2jY,EAAoBxvY,KAAKyvY,6BAA6BzxB,EAAYnyW,EAAO87X,GAEzEljW,EADiBkiV,EAAYliV,IAAMtjC,EAAQquY,EACpBD,EAEhB5+W,EACPg2V,EADAh2V,MAGMiU,EACN+hV,EADA/hV,KAMJ,OAJI+hV,EAAYjpL,YACZ19L,KAAKgpY,YAAchpY,KAAK0vY,uCAAuC/oB,EAAatxP,GAC5Er1H,KAAK2vY,0BAA0BhpB,EAAatxP,IAEzC,CACH7oG,OAAQgjX,EACR7+W,MAAOA,EACP8T,IAAKA,EACLG,KAAMA,EACNkpB,MAAO9tD,KAAK4vY,oBAAoB5xB,EAAYrtV,GAEnD,oCACD,SAAoBnE,EAAQmE,GACxB,OAAOnE,EAASxsB,KAAK6vY,4BAA8Bl/W,EAAQ3wB,KAAK8vY,yBACnE,yCACD,SAAyBnpB,GACrB,IAAIopB,EAAkB/vY,KAAKw+C,uBACvByvE,EAAUjuH,KAAKgwY,cACfC,EAA2BjwY,KAAKunY,+BAChCI,EAA0B3nY,KAAKkwY,qBAAqBH,EAAiBppB,GACrEprF,EAAQv7R,KAAKmwY,iBAAiBxpB,EAAaghB,GAC3C1mW,EAAYjhC,KAAK6oT,iBAChBnwP,EAAAA,EAAAA,IAAUivU,KACXA,EAA0BhhB,EAAY96W,MACtC0vR,GAASt6P,EAAYgtF,EAAQmiR,WAAanvW,GAE9C,IAAIsuW,GAAa,EAAIh0G,GAASt6P,EAM9B,OALI,SAAW8uW,IAAmBr3U,EAAAA,EAAAA,IAAUq3U,MACxCx0G,EAAQ,EACRt6P,GAAagvW,EACbV,EAAYU,GAET,CACHzjX,OAAQ+uQ,EAAQt6P,EAChB0mW,wBAAyBA,EACzB16X,OAAQsiY,EAEf,qCACD,SAAqBQ,EAAiBppB,GAAe,iCACrD,SAAiBA,EAAaghB,GAA2B,4BACzD,WAAgB,8BAChB,WAAkB,oCAClB,WACI,OAAO,CACV,+CACD,WACI,IAAK3nY,KAAKmpY,4BAA6B,CACnC,IACIxB,EADAoI,EAAkB/vY,KAAKw+C,wBAEvBka,EAAAA,EAAAA,IAAUq3U,KACVpI,EAA0BoI,GAE1B,SAAWA,IACXpI,EAA0B3nY,KAAKovY,sCAE/B,cAAgBW,IAChBpI,OAA0B,GAE9B3nY,KAAKmpY,4BAA8BxB,CACtC,CACD,OAAO3nY,KAAKmpY,2BACf,mDACD,WACI,OAAOnpY,KAAKgvY,yBAAyBqB,mCACxC,gCACD,WACI,OAAO,CACV,gCACD,WACI,MAAO,aAAej7J,MAAkB,IAAI/yO,MAAM,KAAKurD,KAC1D,6CACD,WACI,OAAO5tD,KAAKgvY,yBAAyBsB,6BACxC,6CACD,WACI,OAAOtwY,KAAKuwY,8BACf,yCACD,WACI,OAAOvwY,KAAKwnY,8BACf,6CACD,WACI,OAAOxnY,KAAKqnY,kBA5pB2B,GADd,EA8pB5B,4CACD,WACI,OAAOrnY,KAAKgvY,yBAAyB5G,6BACxC,wCACD,WACI,OAAOpoY,KAAKooY,6BACf,yCACD,SAAyBt8Q,GACrB,OAAO,CACV,2CACD,WACI,OAAO,CACV,2CACD,SAA2B0kR,EAAeC,EAAa3kR,GACnD,GAAIA,EAAQ,CACR,IAAIoJ,EAAsBu7Q,EAAY/6U,UAAY86U,EAAc96U,UAEhE,OADyBnsD,KAAKq7E,KAAKswC,EAAsB/G,GAAK,QAClCnuH,KAAKynX,kBACpC,CACD,IAAIipB,EAAWviR,GAAK,QAChBwiR,EAAmB3uT,GAAAA,SAAmBwuT,GACtCI,EAAiB5uT,GAAAA,SAAmByuT,GAEpCI,GADYD,EAAiBD,GACAxiR,GAAK,OAAS,EAC3C2iR,EAAkB9wY,KAAKi+C,WAAaj+C,KAAKugD,aACzCwwV,EAAsBD,EAAkBD,EACxCG,GAAcR,EAAgBG,GAAoBD,EAClDO,EAAiB1nY,KAAKkuB,IAAI,EAAGu5W,EAAahxY,KAAKugD,cAC/C2wV,EAAW3nY,KAAKkuB,IAAI,GAAIg5W,EAAcG,GAAkBF,EAAW1wY,KAAKugD,cAG5E,OADcwwV,GAAuBE,EADlB1nY,KAAKkuB,IAAI,EAAGq5W,EAAkBI,KACsBR,CAE1E,iCACD,SAAiB/P,EAAWtrQ,GACxB,MAAO,CACH5wF,IAAKk8V,EAAY3gY,KAAKg+W,WACtBp5U,KAAM,EACNs8V,aAAc,EAErB,OAhsBCmH,GAksBN,MC/sBM8I,GAAAA,SAAAA,iIACF,WACI,OAAOnxY,KAAK5C,QAAQ2rC,QACvB,6BACD,WACI,OAAO/oC,KAAK5C,QAAQo9X,cACvB,sCACD,WAA0B,6BAC1B,WAAiB,wCACjB,WACI,OAAO,CACV,uCACD,SAAuB7c,GACnB,OAAOA,CACV,4CACD,SAA4BpoP,GACxB,IAAIl3E,EAASr+C,KAAK+oC,SAASqoW,sBAAsB,UAMjD,OnT+KkC,SAASrxY,EAAQw1H,GACvD,IACI/xH,EAAS,CACT,EAAG+xH,IAFMz9G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,IAInEnX,QAAUZ,EAAOs7I,gBAAgB16I,SACxC6C,EAASq2I,GAAiC95I,EAAQw1H,EAAcx1H,EAAOs7I,kBAE3E,IAAIg2P,EAAqB,EACzBtxY,EAAOs7I,gBAAgB36I,SAAQ,SAACo8C,EAAU37C,GACjCA,EAGDkwY,GAAsBv0V,EAASoJ,MAAMvlD,OAFrC0wY,EAAqBv0V,EAASoJ,MAAMvlD,MAI3C,IACD,IAAK,IAAIQ,EAAQ,EAAGA,EAAQkwY,EAAoBlwY,IAAS,CACrD,IAAImB,EAAMnB,EAAM7D,WACZkG,EAAOlB,KAGXkB,EAAOlB,GAAO,GACjB,CACD,OAAOkB,CACV,CmTvMc8tY,CALM,CACTj2P,gBAAiBr7I,KAAK5C,QAAQi+I,gBAC9Bt7F,UAAW//C,KAAK5C,QAAQ2iD,UACxBo0E,cAAen0H,KAAKm0H,cAAcp0E,WAEMw1E,EAAcl3E,EAC7D,sCACD,SAAsBk3E,GAAc,IAC5B/oG,EACA+kX,EAF4B,OAIhC,GADAvxY,KAAKwxY,cAAcj8Q,EAAcv1H,KAAKw6X,eAAgBx6X,KAAK+kF,aACvDwwC,EAAa50H,OAAQ,CACrB6rB,EAASxsB,KAAK+oC,SAASgkB,KAAK,+BAC5BwkV,EAA0BvxY,KAAKyxY,4BAA4Bl8Q,GAC3D,IAAIm8Q,EAAe,IACnB7kV,EAAAA,EAAAA,IAAK0kV,GAAyB,SAAC5oY,EAAGgpY,GAC9B,IAAIvoB,EAAyB,GACzBwoB,EAAmB,IACvB/kV,EAAAA,EAAAA,IAAK8kV,GAAO,SAACxwY,EAAOosH,GAChB,IAAIskR,EAAkB,EAAK9oW,SAAS+oW,0BAA0BC,8BAA8BxkR,EAAapsH,GACrG6wY,EAAmB,KAClBH,EAAgB9wR,QAAQpgH,SACzBqxY,EAAmB,EAAKjpW,SAAS+oW,0BAA0B9oB,wBAAwBz7P,GACnF67P,EAAyBA,EAAuBn5W,OAAO+hY,EAAiBr9V,QAE5Ey0U,EAAyBA,EAAuBn5W,OAAO4hY,EAAgBl9V,OACvEi9V,EAAmBA,EAAiB3hY,OAAO4hY,EAAgB9wR,QAC9D,IACD,EAAKh4E,SAAS+oW,0BAA0BG,8BAA8BL,EAAkBD,GACxF,EAAK5oW,SAAS+oW,0BAA0BI,qBAAqBP,EAAOvoB,GACpEsoB,EAAeA,EAAazhY,OAAO0hY,EACtC,IACD9sY,MAAMmD,UAAU3G,OAAO0W,MAAMw9G,EAAc,CAAC,EAAGA,EAAa50H,QAAQsP,OAAOyhY,GAC9E,CACD,IAAIluY,EAAS,GACTm/W,EAAc,EAWlB,OAVAptP,EAAa70H,SAAQ,SAACyxY,EAAMhxY,GACxBqC,EAAOpD,KAAK,CAAC,CACTosB,OAAQA,EACRmE,MAAO,OACPgyV,YAAaA,IACbnqO,WAAY,EAAK45P,qBAAqBjxY,EAAOowY,GAC7CzsB,eAAgBqtB,EAAK38Q,mBAElB28Q,EAAK38Q,QACf,IACMhyH,CACV,qCACD,SAAqB6uY,EAAWd,GAC5B,IAAIe,EACAhwT,EAAU,EACd,IAAK,IAAI35E,KAAK4oY,EAAyB,CACnC,IAAIgB,EAAmBhB,EAAwB5oY,GAAGhI,OAClD,GAAI0xY,GAAa/vT,GAAW+vT,EAAY/vT,EAAUiwT,EAAkB,CAChED,EAAY55W,OAAO/vB,GACnB,KACH,CACD25E,GAAWiwT,CACd,CACD,OAAOD,CACV,+BACD,SAAe10Y,EAAMqrY,GAAe,wCACpC,WACI,OAAOjpY,KAAKi+W,SACf,oCACD,WACI,OAAO,CACV,qCACD,SAAqBN,EAAUnoP,GAAY,4CAC3C,WAAgC,2CAChC,WACI,OAAO,CACV,0CACD,WACI,OAAO,CACV,yCACD,SAAyB21Q,EAAQC,GAAwB,yBACzD,WACI,OAAO,CACV,+BACD,WAAmB,8BACnB,SAAcrrX,EAAGC,GAAK,iCACtB,SAAiBD,EAAGC,GAAK,gCACzB,SAAgB2wC,EAAK08U,EAAMC,EAAMC,EAAQC,GAAU,0CACnD,WAA8B,4CAC9B,WAAgC,uCAChC,WAA2B,sCAC3B,WAA0B,+CAC1B,SAA+Bv4Q,EAAgBnvC,EAAWC,GACtD,IAAIuZ,EAAU01C,GAAyB/f,EAAgBj1H,KAAKm0H,cAAen0H,KAAKw0H,oBAChFQ,GAAoB11B,EAASxZ,EAAWC,EAAS/lF,KAAKw9C,aAAcx9C,KAAKm0H,cAC5E,8BACD,SAAcoB,EAAcilQ,EAAgBz1S,EAAaytT,GAAmB,WACxExyY,KAAKs3U,MAAQ,GACbvyP,EAAc/C,GAAAA,SAAmB,IAAIl/E,KAAKiiF,IAC1C,IAAI0tT,EAAsBzyY,KAAKyxY,4BAA4Bl8Q,GAyC3D,OAxCA1oE,EAAAA,EAAAA,IAAK4lV,GAAqB,SAAC3zY,EAAG4zY,GAC1B,IAAIC,EAAc,GACdhB,EAAQ,CACR5wR,QAAS,GACTpsE,MAAO,IAEX,IAAK+9V,EAAoB/xY,OAErB,OADA,EAAK22U,MAAMl3U,KAAK,KACT,GAEXysD,EAAAA,EAAAA,IAAK6lV,GAAqB,SAACvxY,EAAOosH,GAC9B,IAAIznC,EAAYouC,GAAyB,EAAKC,cAAe,YAAa5G,GACtExnC,EAAUmuC,GAAyB,EAAKC,cAAe,UAAW5G,GACtE,EAAKqlR,+BAA+BrlR,EAAaznC,EAAWC,GAC5DysT,UAA4BjlR,EAAYiI,SACxC,IAAIhyH,EAAS,EAAKulC,SAAS+oW,0BAA0BC,8BAA8BxkR,EAAapsH,GAAO,GACvGwwY,EAAMh9V,MAAQg9V,EAAMh9V,MAAM1kC,OAAOzM,EAAOmxC,OACxCg9V,EAAM5wR,QAAU4wR,EAAM5wR,QAAQ9wG,OAAOzM,EAAOu9G,QAC/C,IACD,EAAKh4E,SAAS+oW,0BAA0BG,8BAA8BN,EAAM5wR,QAAS2xR,GACrFA,EAAoBtyY,KAApB,MAAAsyY,GAAmB,QAASf,EAAMh9V,QAElC,IADA,IAAIm4U,EAAmB4lB,EAAoB/xY,OAClCgI,EAAI,EAAGA,EAAI6xX,EAAgB7xX,IAAK,CACrC,IAAIg1E,EAAM,IAAI76E,KAAKiiF,GACnBpH,EAAIwmD,gBAAgBxmD,EAAI+E,kBAAoB,MAAQ/5E,QAChD,IAAWgqY,EAAYhqY,KACvBgqY,EAAYhqY,GAAK,GAErB,IAAK,IAAImF,EAAI,EAAGA,EAAIg/W,EAAkBh/W,IAAK,CACvC,IAAIuhW,EAAkBqjC,EAAoB5kY,GAAG0nH,UAAYk9Q,EAAoB5kY,GACzEwxF,EAAU01C,GAAyB09P,EAAoB5kY,GAAI,EAAKqmH,cAAe,EAAKK,oBACpFo1P,EAAoBv1P,GAA+B/0B,GACnDuzS,EAA0B3+Q,GAAyB,EAAKC,cAAe,iBAAkBu+Q,EAAoB5kY,KAC7G,EAAKi7B,SAASgkB,KAAK,oBAAqB4wB,EAAK0xR,GAAiB,KAAUwjC,GAA2BjpB,GAAqB,EAAK7gV,SAASgkB,KAAK,oBAAqB4wB,EAAK+0T,EAAoB5kY,IAAI,MAC7L6kY,EAAYhqY,IAAM,EAEzB,CACJ,CACD,EAAK2uU,MAAMl3U,KAAKuyY,EACnB,IACM3yY,KAAKs3U,KACf,4BACD,SAAY5nE,EAAKv6P,EAAKhU,GAClB,IAAK,IAAIwH,EAAI,EAAGA,EAAI+mQ,EAAI/uQ,OAAQgI,IAE5B,GADAwM,EAAImtE,SAAWotL,EAAI/mQ,GACfwM,EAAImtE,SAAWnhF,EAAO,CACtBgU,EAAI29X,WAAanqY,EACjB,KACH,CAER,+BACD,SAAexH,EAAO60U,EAAM13L,GACxB,IAAInpI,EAAM,CACNmtE,QAAS,EACTwwT,WAAY,GAEhB3xY,IACA,IAAK,IAAIwH,EAAI,EAAGA,EAAIqtU,EAAKr1U,SACrBX,KAAK+yY,YAAY/8D,EAAKrtU,GAAIwM,EAAKhU,IAC3BgU,EAAI29X,YAFqBnqY,KAMjC,OAAO,IAAI7F,KAAK,IAAIA,KAAKw7I,GAAer/D,QAAQq/D,EAAct+D,UAAY7qE,EAAI29X,YACjF,6CACD,WAA+B,WAC3B,OAAO,SAAC/vB,EAAc2G,GAClB,IAAI2oB,EAAYtvB,EAAa5hX,QACzBm9I,EAAgB,EAAKv1G,SAASiqW,mBAC9BC,EAAsB,EAAKC,eAAeb,EAAW,EAAK/6D,MAAOh5L,GACjE60P,EAA2B,IAAIrwY,KAAK4mX,GACxC,MAAO,CACH5jS,UAAW,IAAIhjF,KAAKmwY,EAAoB/zT,SAASi0T,EAAyBvxT,WAAYuxT,EAAyB3wT,aAAc2wT,EAAyB1wT,aAAc0wT,EAAyBzwT,oBAEpM,CACJ,OA5LCyuT,CAAgC9I,IA8LtC,MCjMA,GAd6B,SAACviT,EAAWC,EAASuwR,GAM9C,IALA,IAAIo6B,EAAW1uT,GAAAA,mBAA6B,QACxCa,EAAYb,GAAAA,SAAmB8D,GAAWpwB,UAC1Cm7S,EAAU7uR,GAAAA,YAAsB,IAAIl/E,KAAKijF,EAAQrwB,UAAY,IAAIA,UACjEitU,EAAyB,GAAK+N,EAC9B0C,EAAgB,EACXh/W,EAAOyuD,EAAWzuD,EAAOy8U,EAASz8U,GAAQuuW,EAAwB,CACvE,IAAI0Q,EAAY,IAAIvwY,KAAKsxB,GACrBkiV,EAAiB+qB,cAAcgS,KAC/BD,GAAiB,GAExB,CACD,OAAOA,CACV,ECLGjlR,GAAOnsC,GAAAA,mBACLsxT,GAAAA,SAAAA,8IACF,WACI,OAAO,CACV,0CACD,SAA0B/lR,EAAa/iH,GACnC,IAAIyzW,EAAYj+W,KAAKi+W,WAAaj+W,KAAK6pY,wBACnC/9Q,EAASoI,GAAyBl0H,KAAKm0H,cAAe,SAAU5G,GAErDznC,EACXt7E,EAASwS,KAAKuwG,YADdznC,UAGSC,EACTv7E,EAASwS,KAAKuwG,YADdxnC,QAGmB++S,EACnBt6X,EAASwS,KAAKuwG,YADdu3Q,kBAEAj5W,EAAW7rB,KAAKuzY,2BAA2BztT,EAAWg/S,EAAmBh5Q,GAC7EjgG,EAAW7rB,KAAKwzY,8BAA8B3nX,EAAUi6D,EAAWg/S,GACnE,IAAItnV,EAAex9C,KAAKwoY,sBAAwBr6Q,GAAK,UAEjDslR,GAAmB5nX,EADJ6nX,GAAuB5tT,EAAWC,EAAS/lF,KAAKs2W,kBAClBnoP,GAAK,SAAW3wE,EAEjE,OADYx9C,KAAK2zY,qBAAqBF,EAAkBx1B,EAAWA,EAEtE,oCACD,SAAoBt8R,GAChB,OAAOA,EAAO,CACjB,uCACD,SAAuBglS,GACnB,IAAInjX,EAASxD,KAAK4zY,8BAA8BjtB,GAChD,OAAO,qEAA6BnjX,EACvC,8CACD,SAA8BmjX,GAC1B,IAAI5mX,EAASC,KAAK6zY,yBAAyBltB,GAC3C,OAAO3mX,KAAK8zY,sBAAsBntB,EAAa5mX,EAAOysB,OAAQzsB,EAAO4nY,wBAAyB5nY,EAAOkN,OACxG,4BACD,WACI,MAAO,CACHmjY,UAAW,EACX2D,KAAM,EAEb,0CACD,SAA0BC,EAAU7yY,GAEhC,OAAO6yY,GADSh0Y,KAAKi+W,WAAaj+W,KAAK6pY,yBACT1oY,CACjC,8BACD,WACI,OAAOnB,KAAKg+W,YAAch+W,KAAK6pY,uBAClC,qCACD,SAAqBkG,EAAiBppB,GAClC,OAAO3mX,KAAK+tY,sCAAqC,EACpD,6CACD,WACI,OAxDyB,EAyD5B,yCACD,WACI,OA1DqB,EA2DxB,+BACD,SAAehuX,EAAGC,GACd,OAAOhgB,KAAKi0Y,iBAAiBl0X,EAAGC,EACnC,gCACD,WACI,MAAO,CAAC,OAAQ,QAAS,MAC5B,4CACD,SAA4Bu6W,EAAellQ,GACvC,OAAOr1H,KAAKi+W,UAAY,CAC3B,6BACD,SAAargX,EAAMqrY,GACf,IACIiL,EAAat2Y,EAAK+yB,MAAQs4W,EAAYt4W,MAE1C,OADYw9F,GAAK,UAAY5kH,KAAKoZ,MAAMuxX,EAAal0Y,KAAKi+W,UAAYj+W,KAAKwoY,sBAE9E,yBACD,SAASn5B,GACL,OAAOn7O,GAAyBl0H,KAAKm0H,cAAe,SAAUk7O,EACjE,8BACD,SAAc48B,EAAWC,GACrB,IAAIv0T,EAAc33E,KAAKqsY,kBACvB,OAAOrsY,KAAKssY,oBAAoBL,EAAWC,EAAYv0T,EAC1D,iCACD,SAAiBgpT,GACb,IAAIwT,GAAgB,+DAAuBxT,GACvC/7V,EAAO5kC,KAAKi+W,UAAY0iB,EAK5B,OAJI3gY,KAAKggD,aACLpb,IAAS,GAGN,CACHH,IAAK,EACLG,KAHJA,GAAQuvW,EAAcvvW,KAIlBs8V,aAAct8V,EAErB,mDACD,WACI,OAAO,CACV,OA9FC0uW,CAAoCc,IAgG1C,MCzGIC,GAAc,SAAAtzB,GACd,IACwBG,EACpBH,EADAG,mBAEAvgX,EAAS,OAASugX,QAAsB,IAAWA,OAAqB,EAASA,EAAmBvgX,OACxG,IAAKA,EACD,MAAO,CACHgwB,MAAO,EACPnE,OAAQ,GAGhB,IACI8nX,EAAWpzB,EADCvgX,EAAS,EAAI,EAAI,GACY,GAC7C,MAAO,CACHgwB,MAAO2jX,EAAS3jX,MAChBnE,OAAQ8nX,EAAS9nX,OAExB,EAkBU+nX,GAAgB,SAAAxzB,GAAW,OAAIszB,GAAYtzB,GAAav0V,MAA7B,EAC3BgoX,GAAe,SAAAzzB,GAAW,OAAIszB,GAAYtzB,GAAapwV,KAA7B,EAC1B8jX,GAAkB,SAACt0V,EAAiBy8F,EAAoBmkO,GAC/D,IAAK5gU,EACD,OAAO,EAEX,GAAIy8F,EAAoB,CACpB,IACwBskO,EACpBH,EADAG,mBAGJ,OADa,OAASA,QAAsB,IAAWA,OAAqB,EAASA,EAAmBvgX,QACxFugX,EAAmB,GAAG,GAAG10V,OAAS,CACrD,CACD,IAC0By0V,EACtBF,EADAE,qBAEJ,OAAQ,OAASA,QAAwB,IAAWA,OAAuB,EAASA,EAAqBtgX,QAAUsgX,EAAqB,GAAGz0V,OAAS,CACvJ,EACUkoX,GAAwB,SAACl8P,EAAY89N,EAAkBt2T,EAAY+gU,GAE1E,OArCkC,SAACvoO,EAAY89N,EAAkBt2T,EAAY+gU,GAC7E,IAGI4zB,EADA5zB,EADAG,mBAE8B,GAClC,IAAKyzB,EACD,OAAO,EAEX,IAGIzT,EAAeyT,EADfr+B,EAAiBs+B,yBAAyBp8P,GAD1C+0M,aAGJ,OAAK2zC,EAGGlhV,EAAsDkhV,EAAat8V,KAAtDs8V,EAAat8V,KAAOs8V,EAAavwW,MAF3C,CAGd,CAqBUkkX,CADer8P,GAAc,EACoB89N,EAAkBt2T,EAAY+gU,EACzF,EA2BY+zB,GAAb,WACI,WAAY13Y,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAK+0Y,cAAgB/0Y,KAAK5C,QAAQw/I,mBAAqB,IAAIo4P,GAAkBh1Y,KAAK5C,SAAW,IAAI63Y,GAAwBj1Y,KAAK5C,QACjI,CAJL,6CAKI,WACI,OAAO4C,KAAK5C,QAAQk5W,gBACvB,GAPL,sBAQI,WACI,OAAOt2W,KAAK5C,QAAQ4iD,UACvB,GAVL,2BAWI,WACI,OAAOhgD,KAAK5C,QAAQslY,eACvB,GAbL,sBAcI,WACI,OAAO1iY,KAAK5C,QAAQuxF,UACvB,GAhBL,uBAiBI,WACI,OAAO3uF,KAAK5C,QAAQ83Y,wBACvB,GAnBL,8BAoBI,SAAiB18P,GAAY,WACrB28P,EAAiB,SAAA38P,GAAU,OAAIk8P,GAAsBl8P,EAAY,EAAK89N,iBAAkB,EAAKt2T,WAAY,EAAK+gU,YAAnF,EAC/B,GAAI/gX,KAAK0iY,gBAAiB,CACtB,IAAI0S,EAAqBp1Y,KAAKs2W,iBAAiB++B,wBAC/C,OAAO9rY,KAAKkuB,IAAI09W,EAAe38P,GAAa28P,EAAeC,EAAqB,GACnF,CACD,OAAOD,EAAe38P,EACzB,GA3BL,8BA4BI,WACI,IAAIylO,EAAYu2B,GAAax0Y,KAAK+gX,aAClC,OAAI/gX,KAAK0iY,gBACE1iY,KAAK2uF,WAAasvR,EAEtBA,CACV,GAlCL,4BAmCI,SAAe7gX,GACX,OAAO4C,KAAK+0Y,cAAc9T,eAAe7jY,EAC5C,GArCL,oCAsCI,SAAuBA,GACnB,OAAO4C,KAAK+0Y,cAAcO,uBAAuBl4Y,EACpD,GAxCL,yBAyCI,SAAYA,GACR,OAAO4C,KAAK+0Y,cAAcQ,YAAYn4Y,EACzC,KA3CL,KA6CM43Y,GAAAA,WACF,WAAY53Y,IAAS,eACjB4C,KAAK5C,QAAUA,CAClB,8CACD,WACI,OAAO4C,KAAK5C,QAAQk5W,gBACvB,8BACD,WACI,OAAOt2W,KAAK5C,QAAQslY,eACvB,yBACD,WACI,OAAO1iY,KAAK5C,QAAQ4iD,UACvB,yBACD,WACI,OAAOhgD,KAAK5C,QAAQuxF,UACvB,0BACD,WACI,OAAO3uF,KAAK5C,QAAQ83Y,wBACvB,uCACD,SAAuBl+X,GACnB,IACgBwhI,EAGZxhI,EAHAwhI,WACkB+6N,EAElBv8V,EAFAu8V,iBACiBpzT,EACjBnpC,EADAmpC,gBAEA38C,EAAS,EACT+vW,GAAoBpzT,IAEpB38C,EADwBixY,GAAgBt0V,GAAiB,EAAMngD,KAAK+gX,cACtCvoO,EAAa,IAE/C,OAAOh1I,CACV,+BACD,SAAepG,GACX,IAAIo4Y,EAAqBx1Y,KAAKy1Y,gCAA+B18X,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACzFk5W,iBAAkBt2W,KAAKs2W,iBACvBt2T,WAAYhgD,KAAKggD,WACjB+gU,YAAa/gX,KAAK+gX,eAGtB,OADAy0B,GAAsBx1Y,KAAKs1Y,uBAAuBl4Y,EAErD,4BACD,SAAYsnK,GACR,IACgBlsB,EAGZksB,EAHAlsB,WACiBr4F,EAEjBukH,EAFAvkH,gBACsB2/U,EACtBp7N,EADAo7N,qBAEAtxH,EAAWxuQ,KAAKs2W,iBAAiBo/B,mBAAmBl9P,GASxD,OAR0Bx4I,KAAKy1Y,+BAA+B,CAC1Dj9P,WAAYA,EACZ89N,iBAAkBt2W,KAAKs2W,iBACvBn2T,gBAAiBA,EACjB2/U,qBAAsBA,EACtBljP,oBAAoB,EACpBmkO,YAAa/gX,KAAK+gX,cAEOwzB,GAAcv0Y,KAAK+gX,aAAevyG,CAClE,iCACD,SAAiBruN,GACb,OAAOs0V,GAAgBt0V,GAAiB,EAAMngD,KAAK+gX,YACtD,+CACD,SAA+Bj7N,GAC3B,IACgBtN,EAGZsN,EAHAtN,WACiBr4F,EAEjB2lG,EAFA3lG,gBACsB2/U,EACtBh6O,EADAg6O,qBAGUrwH,EACVzvQ,KAAKs2W,iBAAiBs+B,yBAAyBp8P,GAD/Ci3H,SAKAkmI,EADA31Y,KAAK+gX,YADLG,mBAEkCzxG,GACtC,IAAKkmI,EACD,OAAO,EAEX,IAAInyY,EAASmyY,EAAa,GAAGlxW,IAAMkxW,EAAa,GAAGnpX,OAInD,OAHIszW,IACAt8X,IAAWg1I,EAAa,GAAKx4I,KAAK41Y,iBAAiBz1V,IAEhD38C,CACV,OAlFCwxY,GAoFAC,GAAAA,SAAAA,iJACF,WACI,OAAO,CACV,+BACD,SAAe73Y,GACX,IACwBk3W,EAEpBl3W,EAFAk3W,mBACY97N,EACZp7I,EADAo7I,WAEAq9P,EAAsBvhC,EAAqB97N,EAAa,EAC5D,OAAOx4I,KAAKy1Y,gCAA+B18X,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACvEo7I,WAAYq9P,IAEnB,4BACD,WACI,OAAO,CACV,iCACD,SAAiB11V,GACb,OAAOs0V,GAAgBt0V,GAAiB,EAAOngD,KAAK+gX,YACvD,OAnBCk0B,CAAgCD,IC3MhCc,GAAAA,SAAAA,oJACF,SAA0BvoR,EAAa/iH,GACnC,IAAIs7E,EAAY9D,GAAAA,SAAmBx3E,EAASwS,KAAKuwG,YAAYznC,WAEtCg/S,EACnBt6X,EAASwS,KAAKuwG,YADdu3Q,kBAEA7mB,EAAYj+W,KAAKi+W,WAAaj+W,KAAK6pY,wBACnCh+W,EAAWtiB,KAAKq7E,KAAK5kF,KAAK+1Y,mBAAmBjwT,EAAWg/S,IACxDn0W,EAAQ3wB,KAAK2zY,qBAAqB9nX,EAAWoyV,EAAWA,GACxDj+W,KAAKs0W,qBAEL3jV,GADkB3wB,KAAKs2W,iBAAiB0/B,oBAAoBxrY,EAASguI,WAAY1yD,EAAWg/S,EAAmBj5W,GACxFoyV,GAE3B,OAAOttV,CACV,mCACD,SAAmBm1D,EAAWC,GAE1B,OADuB/lF,KAAKwzY,8BAA8BztT,EAAQrwB,UAAYowB,EAAUpwB,UAAWowB,EAAWC,GACpF/D,GAAAA,mBAA6B,QAlBvB,CAmBnC,6BACD,SAAapkF,EAAMqrY,GACf,OAAOgN,MAA0Dj2Y,KAAKk2Y,eAAet4Y,EAAMqrY,EAC9F,yBACD,WACI,OAAO,CACV,sCACD,SAAsB/iV,EAAOgjV,GAIzB,OAHKA,GACD5zQ,GAA4BpvE,EAAOlmD,KAAKm0H,gBAErC,oEAA4BjuE,EACtC,oCACD,SAAoBniD,EAAKmlY,GACrB,IAAI1lY,GAAS,kEAA0BO,GAIvC,OAHKmlY,IACD1lY,EAASyxF,GAAMzxF,GAAQoxF,OAAO,OAAOrD,OAAO,QAAQA,OAAO,gBAAgBA,OAAO,KAAK7jB,WAEpFlqE,CACV,4CACD,WACI,OAAO,CACV,iCACD,SAAiBm9X,GACb,MAAO,CACHl8V,IAAK,EACLG,KAAM,EACNs8V,aAAc,EAErB,OA/CC4U,CAA6CK,IAiDnD,MChDIhoR,GAAOnsC,GAAAA,mBACLo0T,GAAAA,SAAAA,oIACF,WACI,OAAOp2Y,KAAK5C,QAAQi5W,WACvB,gCACD,WACI,OAAOr2W,KAAK5C,QAAQ8/C,iBACvB,0BACD,WACI,OAAOl9C,KAAK5C,QAAQ2jX,WACvB,iCACD,SAAiBvrP,GACb,IAAI6gR,EAA2Br2Y,KAAKs2Y,cAAc9gR,EAASgjB,YAC3D,OAAOx4I,KAAKu2Y,yCAAyC/gR,EAAS2rQ,KAAMkV,EACvE,+BACD,SAAeG,EAAiBC,EAAiBC,EAAWlhR,GACxD,IACgBgjB,EAMZhjB,EANAgjB,WAGmB1yD,EAGnB0vC,EALAx4G,KACIuwG,YACIznC,UAIR6wT,EAAqBH,EAAkBC,EAAkBC,EACzDE,EAAiBrtY,KAAKq7E,KAAK+xT,EAAqBD,GAChDG,EAAe72Y,KAAK82Y,sBAAsBhxT,GAC9C,QAAI,IAAW+wT,EAAc,CACzB,IACIE,EADkB/2Y,KAAKs2W,iBAAiBo/B,mBAAmBl9P,GACpBq+P,EAC3C,OAAOD,GAAkBG,EAAqBH,EAAiBG,CAClE,CACD,OAAOH,CACV,sCACD,SAAsBI,GAClB,IAAIt8Y,EACAu8Y,EAAej3Y,KAAKs2W,iBAAiB4gC,kBACzC,MAAK,QAAUx8Y,EAAKsF,KAAK5C,QAAQ+5Y,iBAAc,IAAWz8Y,OAAK,EAASA,EAAGiG,QAAU,IAAMs2Y,EAA3F,CAGA,IAAK34P,GAAL,OAAsBt+I,KAAK5C,QAAQk2W,UAAnC,MACI8jC,EAAgBjpR,GAAK,OACrBkpR,EAAgBL,EAAkBthV,UAAY4oF,EAAc5oF,UAChE,OAAOnsD,KAAKo/D,MAAM0uU,EAAgBD,EAAgBH,EAJjD,CAKJ,gCACD,SAAgBt5B,EAAUnoP,EAAUkhR,GAChC,IAAID,EAAkB94B,EAASitB,aAC3B4L,EAAkBjtY,KAAKo/D,MAAMg1S,EAASgtB,wBAE1C,MAAO,CAAC8L,EAAiBD,EADIA,EAAkBC,EAElD,sCACD,SAAsBa,EAAwBZ,EAAWa,GACrD,IAAIC,EAAiBF,EAAyBZ,GAAaA,EACvDe,EAAcF,GAAgBb,EAAYc,GAE9C,MAAO,CAACA,EADoBx3Y,KAAKggD,WAAay3V,EAAcF,EAE/D,qCACD,SAAqB55B,EAAUnoP,GAQ3B,IAPA,IAAIhyH,EAAS,GACTkzY,EAAYntY,KAAKoZ,MAAM3iB,KAAKs2Y,cAAc9gR,EAASgjB,aACnD,EAA6Dx4I,KAAK03Y,gBAAgB/5B,EAAUnoP,EAAUkhR,GAA1G,eAAKD,EAAL,KAAsBD,EAAtB,KAAuCc,EAAvC,KACIC,EAAev3Y,KAAK23Y,iBAAiBniR,GACrCoiR,EAAe53Y,KAAKq2W,YAAc7gP,EAASx4G,KAAKuwG,YAAYxnC,QAC5D8xT,EAAa73Y,KAAK83Y,eAAetB,EAAiBC,EAAiBC,EAAWlhR,GAC9E,EAA0Cx1H,KAAK+3Y,sBAAsBT,EAAwBZ,EAAWa,GAA5G,eAAKC,EAAL,KAAqBQ,EAArB,KACSC,EAAa,EAAGA,EAAaJ,EAAYI,IAAc,CAC5D,IAAIC,EAAc1iR,EAAS/wF,IAAMzkC,KAAKg+W,WAAai6B,EAC/CE,EAAcP,GAAgBK,IAAeJ,EAAa,EAC9Dr0Y,EAAOpD,MAAK2Y,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGy8G,GAAW,CACzC/wF,IAAKyzW,EACLtzW,KAAMuzW,EAAcH,EAAwBT,EAC5C/qX,OAAQmxV,EAASnxV,OACjBmE,MAAOwnX,EAAcX,EAAiBd,EACtCvwB,mBAAoBgyB,EAAc,OAAS,OAC3C1oI,WAAYj6I,EAASi6I,SACrB89E,YAAa,IAEpB,CACD,OAAO/pV,CACV,yDACD,SAAyCi0B,EAAK9G,GAC1C,OAAO3wB,KAAKggD,WAAavoB,EAAMA,EAAM9G,CACxC,8BACD,SAAc6nH,GACV,OFrCmB,SAACA,EAAY89N,EAAkBl5W,GACtD,IACwBk3W,EAGpBl3W,EAHAk3W,mBACYt0T,EAEZ5iD,EAFA4iD,WACa+gU,EACb3jX,EADA2jX,YAEA9C,EAAYu2B,GAAazzB,GACzBv9W,EAAS8yW,EAAiB8hC,aAAah7Y,GAAW6gX,EAClD3J,IAGA9wW,EAFkB8yW,EAAiB+hC,eAAeC,oBACpB9/P,GAAY,GAAG73I,OACtBs9W,GAE3B,IAAIzzW,EAAWkqY,GAAsBl8P,EAAY89N,EAAkBt2T,EAAY+gU,GAC3ErnN,EAAkBlvJ,EAASguI,GAU/B,OATIkhB,IAEIl2J,EADAw8C,EACS05G,EAAkBlvJ,EAASguI,EAAa,GAC1C,IAAMA,EACJkhB,EAEAA,EAAkBlvJ,EAASguI,EAAa,IAGlDh1I,CACV,CEYc8yY,CAAc99P,EAAYx4I,KAAKs2W,iBAAkB,CACpDikB,cAAev6X,KAAK5C,QAAQm9X,cAC5Bx1S,YAAa/kF,KAAK5C,QAAQ2nF,YAC1Bd,SAAUjkF,KAAK5C,QAAQ6mF,SACvBm8D,cAAepgJ,KAAK5C,QAAQgjJ,cAC5B7/F,aAAcvgD,KAAK5C,QAAQmjD,aAC3BtC,WAAYj+C,KAAK5C,QAAQ6gD,WACzBq2T,mBAAoBt0W,KAAKs0W,mBACzBt0T,WAAYhgD,KAAKggD,WACjB+gU,YAAa/gX,KAAK+gX,aAEzB,6CACD,WACI,OAAO/gX,KAAKuwY,8BACf,yCACD,WACI,OAAOvwY,KAAKwnY,8BACf,iCACD,SAAiBznX,EAAGC,GAChB,IAAI+rX,EAAa/rY,KAAKgsY,eAAejsX,EAAGC,GACxC,OAAO+rX,EAAWF,cAAgBE,EAAWJ,iBAAmBI,EAAWD,qBAC9E,sCACD,SAAsB5lV,GAClB,OAAO,oEAA4BA,GAAO,EAC7C,oCACD,SAAoBniD,GAChB,OAAO,kEAA0BA,GAAK,EACzC,iCACD,WACI,MAtH6B,EAuHhC,4BACD,WACI,MAAO,CACHqsY,UAzHuB,GA0HvB2D,KAzHuB,GA2H9B,4CACD,SAA4BxZ,EAAellQ,GACvC,GAAIr1H,KAAKk9C,kBACL,OAAOl9C,KAAKgoY,gCAEhB,IAAI/6X,EAASstX,EAAgB,EA9Ha,GADA,GAgI1C,OAAOv6X,KAAKi+W,UAAYhxW,CAC3B,4CACD,WACI,OAAO,CACV,yCACD,WACI,OAAO,CACV,2CACD,WACI,OAAO,CACV,iCACD,SAAiB0zX,GACb,MAAO,CACHO,aAAcP,EAAY3gY,KAAKi+W,UAC/Bx5U,IAAK,EACLG,KAAM,EAEb,OA9ICwxW,CAAyCN,IAgJ/C,MCnII3nR,GAAOnsC,GAAAA,mBACLu2T,GAAAA,SAAAA,uIACF,SAAa36Y,EAAMqrY,EAAa17Q,GAC5B,IAAI65P,EAAY,EAChB,GAAIpnX,KAAKq1H,SAAS9H,GACd65P,EAAYpnX,KAAKk2Y,eAAet4Y,EAAMqrY,GAAe96Q,GAAK,WACvD,CACH,IAAIqqR,EAAc56Y,EAAK4uB,OAASy8W,EAAYz8W,OAC5C46V,EAAYj5P,GAAK,UAAY5kH,KAAKoZ,MAAM61X,EAAcx4Y,KAAKg+W,WAAah+W,KAAKwoY,sBAChF,CACD,OAAOphB,CACV,uDACD,SAAuCT,EAAatxP,GAChD,GAAIA,GACA,qFAA6CsxP,EAAatxP,QACvD,GAAI,IAAMr1H,KAAK+tY,uCAAwC,CAC1D,IACgB/vB,EACZh+W,KADAg+W,WAGWC,EACXj+W,KADAi+W,UAEJ0I,EAAYliV,MAAQu5U,EAAah+W,KAAKgoY,iCAAmC,EACzErhB,EAAY/hV,OAASq5U,EAAYj+W,KAAKgoY,iCAAmC,CAC5E,CACJ,uCACD,SAAuBrhB,GACnB,IAAIhJ,EAAW,KAMf,OAJIA,EADAgJ,EAAY76P,OACD9rH,KAAKy4Y,8BAA8B9xB,GAEnC3mX,KAAKgpY,YAAcriB,EAAYjpL,UAAY19L,KAAK04Y,qBAAqB/xB,GAAe3mX,KAAK24Y,gCAAgChyB,IAEjI,qEAA6BhJ,EACvC,qCACD,SAAqBgJ,GACjB,IAAI5mX,EAASC,KAAK6zY,yBAAyBltB,GAC3C,OAAO3mX,KAAK8zY,sBAAsBntB,EAAa5mX,EAAOysB,OAAQzsB,EAAO4nY,wBAAyB5nY,EAAOkN,OACxG,iCACD,SAAiBsgH,GACb,IAAIzB,EAAS9rH,KAAKq1H,SAAS9H,GAC3B,GAAIzB,EACA,OAAO,+DAAuByB,GAWlC,IATA,IAAIjuB,EAAU01C,GAAyBznB,EAAavtH,KAAKm0H,cAAen0H,KAAKw0H,oBACzEokR,IAAgBt5S,EAAQ0wC,eACxBmlO,EAAuB71Q,EAAQu1C,mBAAmB,UAClDugO,EAAqB91Q,EAAQw1C,iBAAiB,UAC9C5f,EAAsBkgP,EAAqBD,EAC3C0jC,EAAgC74Y,KAAK5C,QAAQkhJ,cAAgB62N,EAC7D2jC,GAAiC/jR,GAAAA,uBAAqCogP,EAAsBC,GAC5F5/O,EAAWx1H,KAAK+pY,4BAA4Bx8Q,GAC5C/pH,EAAS,GACJsK,EAAI,EAAGA,EAAI0nH,EAAS70H,OAAQmN,IAAK,CACtC,IAAIirY,EAAiBvjR,EAAS1nH,GAC1B0e,EAASxsB,KAAKgqY,2BAA2Bz8Q,EAAawrR,GACtDpoX,EAAQ3wB,KAAKiqY,0BAA0B18Q,EAAawrR,GACpDC,EAAexsX,EACf25V,EAAqB,KACrB8yB,EAA4B,GAC5B1O,EAA4BwO,EAAe3X,KAC/C,GAAIphY,KAAKk5Y,wBAAwBH,EAAgBvsX,IAAWssX,IAAkCF,EAAa,EAChF52T,GAAAA,SAAmBmzR,IACZnzR,GAAAA,SAAmB+2T,EAAe/7X,KAAKuwG,YAAYznC,YACjB8yT,KAE5DI,EAAeh5Y,KAAKm5Y,2BAA2B3sX,EAAQ,CACnDiY,IAAKs0W,EAAet0W,IACpBE,OAAQ4lW,IAEZ0O,EAA4Bj5Y,KAAK0qY,qBAAqB,CAClD0O,wBAAyB5sX,EACzB6sX,cAAeL,EACfroX,MAAOA,GACRooX,IAEP,IAAI,EAGAA,EAAe/7X,KAAKuwG,YAFT+rR,EADf,EACIxzT,UAKJqgS,EANA,EAEI2e,kBAE2DwU,EACnBpkR,EACR2jR,EAAgC,OAAS,OAASA,EAAgC,OAAS,MAClI,EACDpzV,EAAAA,GAAAA,GAAOszV,EAAgB,CACnBvsX,OAAQwsX,EACRroX,MAAOA,EACPm7F,OAAQA,EACRq6P,mBAAoBA,IAExB3iX,EAASxD,KAAK6qY,6BAA6BoO,EAA2BF,EAAgBv1Y,EACzF,CACD,OAAOA,CACV,wCACD,SAAwBwT,EAAMwV,GAC1B,IACU40W,EAENpqX,EAFAoqX,KACK38V,EACLztB,EADAytB,IAIJ,OAF4B44C,GAAe7wD,EAAQ,GAC7B6wD,GAAe+jT,EAAO38V,EAAK,EAEpD,2CACD,SAA2B20W,EAAyBlO,GAChD,OAAO3hY,KAAKsZ,IAAIu2X,EAAyBlO,EAAMvmW,OAASp7B,KAAKo/D,MAAMuiU,EAAMzmW,KAC5E,gCACD,WACI,OAAOzkC,KAAKg+W,WAAah+W,KAAKwuQ,QACjC,mCACD,SAAmBsxG,GACf,IACgBtnO,EACZsnO,EADAtnO,WAEA+gQ,EAAWhwY,KAAKkuB,IAAI,EAAGz3B,KAAK2/X,eAAe4V,YAAY,CACvD/8P,WAAYA,EACZr4F,gBAAiBngD,KAAKmgD,gBACtB2/U,qBAAsB9/X,KAAK8/X,wBAE3B0Z,EAAoBx5Y,KAAK2/X,eAAe2V,uBAAuB,CAC/D98P,WAAYA,EACZ+6N,iBAAkBvzW,KAAK0nY,kBACvBvnV,gBAAiBngD,KAAKmgD,kBAG1B,OADgC2/T,EAAoBr7U,IAAM80W,EAAWC,CAExE,+BACD,SAAeC,EAAqB35B,GAChC,OAAK9/W,KAAKs0W,mBAGsBt0W,KAAK05Y,mBAAmB55B,GAGpD25B,EADAL,wBAEcp5Y,KAAK25Y,kBANZF,EAAoBL,wBAA0BK,EAAoBJ,aAShF,qCACD,SAAqBI,EAAqB35B,GACtC,IACWnvV,EACP8oX,EADA9oX,MAEAntB,EAAS,GACTo2Y,EAAiBrwY,KAAKkuB,IAAI,EAAGz3B,KAAK2/X,eAAe4V,YAAY,CAC7D/8P,WAAYsnO,EAAoBtnO,WAChCr4F,gBAAiBngD,KAAKmgD,gBACtB2/U,qBAAsB9/X,KAAK8/X,wBAE3B+Z,EAAY75Y,KAAK0iY,gBAAkB1iY,KAAK2uF,WAAa,EACrD1hF,EAASjN,KAAKi+W,UAAY47B,EAM9BD,GALwB55Y,KAAK2/X,eAAe2V,uBAAuB,CAC/D98P,WAAYsnO,EAAoBtnO,WAChC+6N,iBAAkBvzW,KAAK0nY,kBACvBvnV,gBAAiBngD,KAAKmgD,kBAW1B,IARA,IAAIv7B,EAAY5kB,KAAK6pY,wBAEXzI,EAENthB,EAFAshB,KACMD,EACNrhB,EADAqhB,KAEA2Y,EAAc95Y,KAAK5C,QAAQi5W,YAAcyJ,EAAoB9iW,KAAKuwG,YAAYxnC,QAC9EnhD,EAAOr7B,KAAKoZ,MAAMm9V,EAAoBl7U,KAAO33B,GAC7C8sY,EAAa/5Y,KAAKg6Y,eAAeP,EAAqB35B,GACnDi6B,EAAa,GAAKn1W,EAAOu8V,GAAM,CAClC4Y,EAAaxwY,KAAKkuB,IAAI7S,EAAWm1X,GACjC,IAAIxsD,EAAcuyB,EAAoBvyB,YAAcssD,EAChDrtX,EAASjjB,KAAKsZ,IAAIk3X,EAAY3Y,GAClC59X,EAAOpD,MAAK2Y,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG+mW,GAAsB,CACpDr7U,IAAKm1W,EACLh1W,KAAMA,EACNpY,OAAQA,EACRmE,MAAOA,EACPw1V,mBAAoB,OACpB12G,SAAU,EACV89E,YAAaA,KAEjB3oT,GAAQ33B,EACR8sY,GAAc3Y,CACjB,CAID,OAHI0Y,GAAet2Y,EAAO7C,OAAS,IAC/B6C,EAAOA,EAAO7C,OAAS,GAAGwlX,mBAAqB,QAE5C3iX,CACV,iCACD,WACI,OAAOxD,KAAKg+W,WAAah+W,KAAKwoY,qBACjC,0CACD,SAA0BwL,EAAU7yY,GAEhC,OAAO6yY,GAAY,GADHh0Y,KAAKi+W,WAAaj+W,KAAK6pY,0BACH1oY,CACvC,gDACD,SAAgCwlX,GAC5B,IAAI5mX,EAASC,KAAKi6Y,iCAAiCtzB,GACnD,OAAO3mX,KAAKk6Y,8BAA8BvzB,EAAa5mX,EAAO4wB,MAAO5wB,EAAO4nY,wBAAyB5nY,EAAOkN,OAC/G,8CACD,SAA8B05W,EAAah2V,EAAOg3W,EAAyB4H,EAAWl6Q,GAClF,IAAI41Q,EAAmB1hY,KAAKkuB,IAAI9G,EAAQg3W,EAAyBh3W,EAAQg2V,EAAY96W,OAEzE2gB,EACRm6V,EADAn6V,OAEA2tX,EAAkBxzB,EAAY/hV,KAAO+hV,EAAYxlX,MAAQ8pY,EAEpDxmW,EACLkiV,EADAliV,IAKJ,OAHIkiV,EAAYjpL,WACZ19L,KAAK2vY,0BAA0BhpB,EAAatxP,GAEzC,CACH7oG,OAAQA,EACRmE,MAAOs6W,EACPxmW,IAAKA,EACLG,KAAMu1W,EACNrsV,MAAO9tD,KAAK4vY,oBAAoBpjX,EAAQmE,GAE/C,iDACD,SAAiCg2V,GAC7B,IAAIopB,EAAkB/vY,KAAKw+C,uBACvByvE,EAAUjuH,KAAKgwY,cACfC,EAA2BjwY,KAAKunY,+BAChCI,EAA0B3nY,KAAKkwY,qBAAqBH,EAAiBppB,GACrEprF,EAAQv7R,KAAKmwY,iBAAiBxpB,EAAaghB,GAC3ChnW,EAAW3gC,KAAKo6Y,eACfzS,IACDA,EAA0BhhB,EAAY96W,MACtC0vR,GAAS56P,EAAWstF,EAAQmiR,WAAazvW,GAE7C,IAAI4uW,GAAa,EAAIh0G,GAAS56P,EAM9B,OALI,SAAWovW,IAAmBr3U,EAAAA,EAAAA,IAAUq3U,MACxCx0G,EAAQ,EACR56P,GAAYsvW,EACZV,EAAY,GAET,CACH5+W,MAAO4qQ,EAAQ56P,EACfgnW,wBAAyBA,EACzB16X,OAAQsiY,EAEf,6BACD,WACI,OAAOvvY,KAAKi+W,SACf,yBACD,SAAS5O,GACL,OAAO5jP,GAA0BupB,GAAyBq6N,EAAiBrvW,KAAKm0H,cAAen0H,KAAKw0H,oBAAqBx0H,KAAKugD,aAAcvgD,KAAKi+C,WAAYj+C,KAAKq9C,gBACrK,wCACD,WACI,OAAOr9C,KAAKi+W,UAAYj+W,KAAKunY,8BAChC,0CACD,SAA0Bh6Q,EAAa/iH,GACnC,IAAKxK,KAAKq1H,SAAS9H,GACf,OAAO,EAEX,IAAIznC,EAAY9D,GAAAA,SAAmBx3E,EAASwS,KAAKuwG,YAAYznC,WAEtCg/S,EACnBt6X,EAASwS,KAAKuwG,YADdu3Q,kBAEA7mB,EAAYj+W,KAAKi+W,WAAaj+W,KAAK6pY,wBACnCwQ,GAAmBvV,EAAkBpvU,UAAYowB,EAAUpwB,WAAay4D,GAAK,QAC7EmsR,EAAe5G,GAAuBlpY,EAASwS,KAAKuwG,YAAYznC,UAAWt7E,EAASwS,KAAKuwG,YAAYxnC,QAAS/lF,KAAKs2W,kBACnH3lV,EAAQpnB,KAAKq7E,MAAMy1T,EAAkBC,GAAgB,IAAMr8B,EAE/D,OADAttV,EAAQ3wB,KAAK2zY,qBAAqBhjX,EAAOstV,EAE5C,2CACD,SAA2B1wP,EAAa/iH,GACpC,GAAIxK,KAAKq1H,SAAS9H,GACd,OAAO,EAEX,IACeznC,EACXt7E,EAASwS,KAAKuwG,YADdznC,UAGmBg/S,EACnBt6X,EAASwS,KAAKuwG,YADdu3Q,kBAEAh5Q,EAASoI,GAAyBl0H,KAAKm0H,cAAe,SAAU5G,GAChE1hG,EAAW7rB,KAAKuzY,2BAA2BztT,EAAWg/S,EAAmBh5Q,GAG7E,OAFwB9rH,KAAKwzY,8BAA8B3nX,EAAUi6D,EAAWg/S,GAAqB32Q,GAAK,UACzEnuH,KAAKu6Y,kBAEzC,6BACD,WACI,MAAO,UACV,+BACD,SAAex6X,EAAGC,GACd,KAAMD,EAAE+rG,WAAa9rG,EAAE8rG,OACnB,OAAO/rG,EAAE+rG,OAAS,GAAK,EAE3B,IAAIuJ,EAAWt1G,EAAE+rG,QAAU9rG,EAAE8rG,OAC7B,MAAO,aAAe9rH,KAAKu9I,kBAAoBloB,EAAWr1H,KAAKi0Y,iBAAiBl0X,EAAGC,GAAKhgB,KAAKw6Y,cAAcz6X,EAAGC,EACjH,gCACD,WACI,OAAO,CACV,8CACD,SAA8B2mW,GAC1B,IAAI5mX,EAASC,KAAK6zY,yBAAyBltB,GAC3C,OAAO3mX,KAAK8zY,sBAAsBntB,EAAa5mX,EAAOysB,OAAQzsB,EAAO4nY,wBAAyB5nY,EAAOkN,QAAQ,EAChH,yCACD,SAAyB05W,GAChB3mX,KAAK2oY,eAAkB3oY,KAAK4oY,sBAC7BjiB,EAAYZ,cAAe,GAE/B,IAAIhmX,GAAS,uEAA+B4mX,GACxC8zB,EAA6BlxY,KAAKsZ,IAAI9iB,EAAO4nY,wBAAyB3nY,KAAKovY,qCAAqCtjR,QAIpH,OAHI66P,EAAY76P,QAAU66P,EAAY96W,OAAS4uY,IAC3C16Y,EAAOkN,OAAS,GAEblN,CACV,qCACD,SAAqBgwY,EAAiBppB,GAClC,MAAO,SAAWopB,GAAmB,IAAMppB,EAAY96W,QAAU6sD,EAAAA,EAAAA,IAAUq3U,GAAuC/vY,KAAK+tY,qCAAqCpnB,EAAY76P,QAA1E66P,EAAY96W,KAC7G,iCACD,SAAiB86W,EAAaghB,GAC1B,OAAOhhB,EAAY96W,MAAQ7L,KAAK2nY,wBAA0B,IAAM,CACnE,4BACD,WACI,MAAO,CACHyI,UA7TiC,EA8TjC2D,KA7TiC,GA+TxC,8BACD,WACI,OAAO/zY,KAAKioY,cAAgBjoY,KAAK6pY,uBACpC,yCACD,SAAyB/9Q,GACrB,OAAQA,CACX,2CACD,WACI,OAAO,CACV,iCACD,SAAiB60Q,EAAWtrQ,GACxB,OAAKA,GAAYr1H,KAAKgpY,YAAc,IAAMhpY,KAAK+tY,qCAAqC14Q,GACzE,CACH5wF,IAAK,EACLG,KAAM,EACNs8V,aAAc,IAGf,+DAAuBP,EAAWtrQ,EAC5C,OAhVCkjR,CAAkCnE,IAkVxC,MC3WMsG,GAAAA,SAAAA,0JACF,WACI,QAAI16Y,KAAKgpY,YAAc,IAAMhpY,KAAK+tY,yCAG3B/tY,KAAK4uY,oCACf,OANC8L,CAAyCnC,ICS3CoC,GAAuB,CACvBllQ,WAAY0gQ,GACZyE,gBAAiBC,GACjBC,oBAAqBC,GACrBrlQ,SAAUslQ,GACV7mX,KDNJ,GCOIipW,OAAQ6d,IAECC,GAAb,4FACI,SAAsB99Y,GAClB,IAAI+9Y,EAAoBR,GAAqBv9Y,EAAQg+Y,kCACrDp7Y,KAAKmnY,kBAAoB,IAAIgU,EAAkB/9Y,EAClD,GAJL,sBAKI,SAASu+N,EAAev+N,GACpB,IAC6Bi+Y,EACzBj+Y,EADAi+Y,wBAEA9lR,EAAeomG,EAAgBA,EAAc52N,QAAU,GAC3D/E,KAAKs7Y,sBAAsBl+Y,GAC3B,IACIm+Y,EADoBv7Y,KAAKw7Y,uBACOC,sBAAsBlmR,GACtDyyE,EAAYhoM,KAAKm+F,YAAYo3B,EAAcgmR,EAAaF,GAC5D,OAAIA,EACOr7Y,KAAK07Y,wBAAwB1zM,EAAW5qM,EAAQm2W,iBAAkBn2W,EAAQyiY,4BAE9E,CACH0b,YAAaA,EACbvzM,UAAWA,EAElB,GArBL,yBAsBI,SAAY2zB,EAAe4/K,EAAaF,GACpC,IAAIlU,EAAoBnnY,KAAKw7Y,uBAC7B,OAAO7/K,EAAc53N,KAAI,SAACzJ,EAAM6G,GACvBgmY,EAAkBwU,kCACZrhZ,EAAKk7H,SAEhB,IAAIsqP,EAAsBy7B,EAAYp6Y,GACtC2+W,EAAoBp/W,SAAQ,SAAAkE,GACxBA,EAAKgiB,UAAY,aAAeugX,EAAkBz+O,gBAAmB9jJ,EAAKknH,OAAsB,aAAb,UACtF,IACD,IAAIlnH,EAAO,CACP02I,SAAUhhJ,EACVk7H,SAAUsqP,GAMd,OAJKu7B,IACDz2Y,EAAK+mT,aAAc,EACnB/mT,EAAKi/W,YAAa,GAEfj/W,CACV,GACJ,GA1CL,qCA2CI,SAAwBojM,EAAWurK,EAAkB32N,GAAoB,WACjEz4E,EAAWnkE,KAAKw7Y,uBAChBI,EAAoB,GACpBC,EAAmB,GACnBC,EAAiB,GACjBra,EAAgBluB,IAAqB32N,EACzCorD,EAAUtnM,SAAQ,SAAAsW,GACd,IACcskI,EAEVtkI,EAFAskI,SAEAtkI,EADAw+G,SAEK90H,SAAQ,SAAAtD,GACb,IAAIwH,EAAO,EAAKm3Y,iBAAiB3+Y,EAAS+mE,EAAUm3E,GAChDl+I,EAAQsgM,UACRo+M,EAAe17Y,KAAK,CAChB47Y,iBAAkB5+Y,EAAQ4oX,QAC1Bi2B,qBAAsBr3Y,IAEnBxH,EAAQ0uH,QAAU21Q,EACzBoa,EAAiBz7Y,KAAKwE,GAEtBg3Y,EAAkBx7Y,KAAKwE,EAE9B,GACJ,IACD,IAAIs3Y,EAAoBl8Y,KAAKm8Y,yBAAyBL,EAAgBvoC,GAKtE,OAJax6V,EAAAA,EAAAA,GAAS,CAClB+yG,OAAQ+vR,EACRruB,QAASouB,GACVM,EAEN,GA1EL,8BA2EI,SAAiB9+Y,EAAS+mE,EAAUm3E,GAChC,IAAIqiO,EAAWx5S,EAASi4U,uBAAuBh/Y,GAe/C,MAdgB,CACZkF,IAAKmoX,GAAkB9M,GACvBpwP,YAAa+tB,EACbqiO,UAAU5kW,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG4kW,GAAW,CACvC0rB,iBAAkBjsY,EAAQisY,iBAC1BC,iBAAkBlsY,EAAQksY,mBAE9BtsX,MAAMjE,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAQ4f,MAAO,CACvC8uG,OAAQ1uH,EAAQ0uH,OAChBllG,UAAWxpB,EAAQwpB,UACnBu/V,mBAAoB/oX,EAAQ+oX,mBAC5B3tO,WAAYp7I,EAAQo7I,aAI/B,GA5FL,sCA6FI,SAAyBwjQ,GACrB,MAAO,CACH3mR,WAAY2mR,EAAiB3mR,SAC7BqoE,UAAWs+M,EAAiBt+M,UAC5BllD,WAAYwjQ,EAAiBxjQ,WAC7BmlO,SAAU,CACN/4U,KAAMo3W,EAAiBp3W,KACvBH,IAAKu3W,EAAiBv3W,IACtB9T,MAAOqrX,EAAiBrrX,MACxBnE,OAAQwvX,EAAiBxvX,QAE7B05B,MAAO,CACHruB,OAAQ,GACRv9B,KAAM,GACNk7H,SAAU,IAGrB,GA9GL,sCA+GI,SAAyBsmR,EAAgBvoC,GAAkB,WACnDoa,EAAiB,CAAC,EAClBD,EAAgB,CAAC,EACrBouB,EAAep7Y,SAAQ,SAAAgkK,GACnB,IACsBs3O,EAElBt3O,EAFAs3O,iBACsBC,EACtBv3O,EADAu3O,qBAGO96Y,EAEP66Y,EAFA76Y,MAGA6mM,EADAg0M,EADA3mR,UAEwBk+O,EAAmBma,EAAgBC,EAC1D3lL,EAAU7mM,KACX6mM,EAAU7mM,GAAS,EAAKk7Y,yBAAyBL,IAErD,IAAI,EAIAh0M,EAAU7mM,GAAO+kD,MAHPsvE,EADd,EACIA,SACMl7H,EAFV,EAEIA,KACQu9B,EAHZ,EAGIA,OAEJ29F,EAASp1H,KAAK67Y,GACd3hZ,EAAK8F,KAAK67Y,EAAqB1uR,aAC/B11F,EAAOz3B,KAAK67Y,EAAqBj/X,KAAKs/X,cACzC,IACD,IAAI5uU,EAAU,SAAAxnB,GAAK,OAAIloD,OAAOgB,KAAKknD,GAAOniD,KAAI,SAAAzB,GAAG,OAAIyW,EAAAA,EAAAA,GAAS,CAC1DzW,IAAKA,GACN4jD,EAAM5jD,GAFwC,GAA9B,EAKnB,MAAO,CACHorX,cAHmBhgT,EAAQggT,GAI3BC,eAHoBjgT,EAAQigT,GAKnC,GAjJL,kCAkJI,WACI,OAAO3tX,KAAKmnY,iBACf,KApJL,KCGMoV,GAAAA,WACF,WAAYxzW,IAAU,eAClB/oC,KAAK+oC,SAAWA,EAChB/oC,KAAKi8Y,qBAAuB,IAAIf,EACnC,8DACD,WACI,MhBxBA,CACAv9T,IAAK,CACDwpT,kBAAmB,YAEvBhzW,KAAM,CACFgzW,kBAAmB,QAEvBhK,SAAU,CACNgK,kBAAmB,QAEvBjzW,MAAO,CACHizW,kBAAmB,mBAEvBvpP,YAAa,CACTupP,kBAAmB,cAEvBtpP,aAAc,CACVspP,kBAAmB,cAEvBrpP,iBAAkB,CACdqpP,kBAAmB,cAEvBppP,cAAe,CACXopP,kBAAmB,uBAEvB/J,OAAQ,CACJ+J,kBAAmB,WgBFoBnnY,KAAK+oC,SAASyzW,iBhBzBzDrV,iBgB0BH,kCACD,SAAkB/pY,GACd,GAAI4C,KAAK+oC,SAAS0zW,WACd,MAAO,CACH9rX,MAAO3wB,KAAK+oC,SAAS0zW,WAAWjI,eAChChoX,OAAQxsB,KAAK+oC,SAAS0zW,WAAWlI,gBACjCtM,aAAcjoY,KAAK+oC,SAAS0zW,WAAWhI,kBAIlD,6CACD,WACI,IAAIiI,EAAY18Y,KAAK+oC,SAAS4zW,eAEEC,EAC5B58Y,KAAK+oC,SAAS4zW,eADdC,2BAGgCC,EAEhCD,EAFAC,+BAC8BC,EAC9BF,EADAE,6BAEAnuT,EAAawqD,GAAcn5I,KAAK+oC,SAAS4D,OAAO,oBAChDo0U,EAAc27B,EAAUK,yBACxB9U,EAAewM,GAAgBiI,EAAU/vW,OAAO,mBAAoB+vW,EAAUM,8BAA+Bj8B,GAC7GvyG,EAAWkuI,EAAUO,eAELtd,EAEhB+c,EAFA/c,eAGAlY,EADAi1B,EADApmC,iBAEsC4mC,sBAAsBR,EAAU/vW,OAAO,gBAAiB+vW,EAAU/vW,OAAO,cAAe+vW,EAAU/vW,OAAO,kBAC/I6Q,EAAe2iG,GAAgBu8P,EAAUr3Y,KAAMq3Y,EAAU/vW,OAAO,gBAAiB+vW,EAAU/vW,OAAO,cAAe+vW,EAAU/vW,OAAO,kBACtI,MAAO,CACHoT,UAAW//C,KAAK+oC,SAAS4D,OAAO,aAChC0uG,gBAAiBr7I,KAAK+oC,SAAS4D,OAAO,mBACtCuuG,oBAAqBl7I,KAAK+oC,SAASo0W,4BACnChpR,cAAen0H,KAAK+oC,SAASq0W,eAC7B/B,wBAAyBr7Y,KAAK+oC,SAAS4D,OAAO,2BAC9CyuW,iCAAkCp7Y,KAAKo7Y,iCACvCl+V,kBAAmBl9C,KAAK+oC,SAAS4D,OAAO,qBACxCqT,WAAYhgD,KAAK+oC,SAAS4D,OAAO,cACjC4T,aAAcvgD,KAAK+oC,SAASqoW,sBAAsB,gBAClDnzV,WAAYj+C,KAAK+oC,SAASqoW,sBAAsB,cAChD5yV,uBAAwBx+C,KAAK+oC,SAASqoW,sBAAsB,0BAC5DrsT,YAAa/kF,KAAK+oC,SAAS4D,OAAO,eAClC2nU,mBAAoBt0W,KAAK+oC,SAASurU,qBAClCm0B,qBAAsBoU,EACtBnU,oBAAqBoU,EACrBviB,cAAemiB,EAAU/vW,OAAO,iBAChCyzG,cAAes8P,EAAU/vW,OAAO,iBAChCwT,gBAAiBu8V,EAAU/vW,OAAO,mBAClCmzV,qBAAsB4c,EAAU5c,uBAChCzhV,OAAQr+C,KAAK+oC,SAASqoW,sBAAsB,UAC5CziT,WAAYA,EACZ6/K,SAAUA,EACVm5H,wBAAyB3nY,KAAK+oC,SAAS4D,OAAO,4BAC9CygF,kBAAmBptH,KAAK+oC,SAAS4D,OAAO,sBACxCg8V,cAAe3oY,KAAK+oC,SAASs0W,iBAC7BzU,oBAAqB5oY,KAAK+oC,SAASu0W,uBACnCh/P,cAAeo+P,EAAU1J,mBACzBz1P,iBAAkBm/P,EAAUa,2BAC5Bt/B,UAAWu2B,GAAazzB,GACxB/C,WAAYu2B,GAAcxzB,GAC1BknB,aAAcA,EACdM,cAAe5I,EAAephB,mBAC9BkJ,mBAAoBA,EACpBpqU,gBAAiBr9C,KAAK+oC,SAASqoW,sBAAsB,mBACrD58Q,mBAAoBx0H,KAAK+oC,SAASyrF,mBAClC9zE,SAAU1gD,KAAK+oC,SAAS4D,OAAO,YAC/BuR,eAAgBl+C,KAAK+oC,SAASuiU,oBAC9B3/O,iBAAkB3rH,KAAK+oC,SAASqoW,sBAAsB,gBACtDxlR,eAAgB5rH,KAAK+oC,SAASqoW,sBAAsB,cACpDntT,SAAUy4T,EAAUr3Y,KACpBgxW,YAAaqmC,EAAUc,iBACvB7d,eAAgBA,EAChB+C,gBAAiBga,EAAUha,kBAC3BllV,aAAcA,EACdgrV,sBAAuBkU,EAAU/vW,OAAO,gBACxC2pU,iBAAkBomC,EAAUpmC,iBAC5B/C,iBAAkBmpC,EAAUnpC,mBAC5BD,UAAWopC,EAAUtkC,eACrB/5N,iBAAkBq+P,EAAUvX,sBAC5BxC,uBAAwB+Z,EAAUvX,qBAAoB,GACtDtF,2BAA4B6c,EAAU/X,wBACtC5jB,YAAaA,EACbh4U,SAAU/oC,KAAK+oC,SACfyxV,eAAgBkiB,EAAU/vW,OAAO,kBAExC,sCACD,SAAsBuZ,GAClB,IAAIu3V,EAA2Bz9Y,KAAK09Y,+BAChC,EAGA19Y,KAAKi8Y,qBAAqB11W,SAAS2f,EAAOu3V,GAF/Bz1M,EADf,EACIA,UACauzM,EAFjB,EAEIA,YAGJ,OADAv7Y,KAAK29Y,aAAepC,EACbvzM,CACV,+BACD,SAAe1tM,GACX,IAC6BsjZ,EACzB59Y,KAAK+oC,SADL60W,wBAGJ,OADkBA,EAAwBC,0BACnBvjZ,GAAQsjZ,EAAwBE,4BAA4B3rV,MAAK,SAAAvtD,GAAI,OAAItK,EAAKsK,EAAKtC,OAASsC,EAAK1G,KAA5B,GAC/F,2CACD,SAA2BkkX,EAAoB5R,GAC3C,OAAO4R,EAAmBz2D,aAAe6kD,EAAkBqT,UAC9D,kCACD,SAAkBruP,EAAUuoR,GACxB,GAAIvoR,EAAS70H,SAAWo9Y,EAAcp9Y,OAClC,OAAO,EAuBX,IArBA,IAAIq9Y,EAA0B,SAACxoR,EAAUr0H,GACrC,IAAI43Y,EAAiBvjR,EAASr0H,GAC1BsnY,EAAuBsQ,EAAetQ,sBAAwB,EAC9DC,EAAsBqQ,EAAerQ,qBAAuB,EAC5Dn7C,EAAcwrD,EAAexrD,YAAck7C,EAC3Ch5H,EAAWspI,EAAetpI,SAAWi5H,EACrCvH,EAAO4X,EAAej7B,QAAUi7B,EAAe5X,UAAO,EACtDC,EAAO2X,EAAej7B,QAAUi7B,EAAe3X,UAAO,EAC1D,OAAOroX,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGggY,GAAiB,CAC1CxrD,YAAaA,EACb99E,SAAUA,EACV0xG,mBAAe,EACfunB,yBAAqB,EACrBD,0BAAsB,EACtBY,sBAAkB,EAClBC,sBAAkB,EAClBnI,KAAMA,EACNC,KAAMA,EACNpkX,KAAM,CAAC,GAEd,EACQrU,EAAI,EAAGA,EAAI6sH,EAAS70H,OAAQgI,IAAK,CACtC,IAAIs1Y,EAAcD,EAAwBxoR,EAAU7sH,GAChDu1Y,EAAcF,EAAwBD,EAAep1Y,GAIzD,GAHIu1Y,IACAA,EAAYv7B,YAAcs7B,EAAYt7B,eAErCvvT,EAAAA,GAAAA,cAAa6qV,EAAaC,GAC3B,OAAO,CAEd,CACD,OAAO,CACV,gDACD,SAAgC97B,EAAoB+7B,GAChD,IAAK,IAAIx1Y,EAAI,EAAGA,EAAIw1Y,EAAmBx9Y,OAAQgI,IAAK,CAChD,IAAI/D,EAAOu5Y,EAAmBx1Y,GAC9B,GAAI/D,EAAK02I,WAAa8mO,EAAmB9mO,SACrC,OAAO12I,CAEd,CACD,OAAO,IACV,wCACD,SAAwB8tY,EAAqByL,GAEzC,IADA,IAAI36Y,EAAS,GACJmF,EAAI,EAAGA,EAAIw1Y,EAAmBx9Y,OAAQgI,IAAK,CAChD,IAAI6nW,EAAoB2tC,EAAmBx1Y,GAClB3I,KAAKo+Y,gCAAgC5tC,EAAmBkiC,KAE7EliC,EAAkBqT,YAAa,EAC/BrgX,EAAOpD,KAAKowW,GAEnB,CACD,OAAOhtW,CACV,yCACD,SAAyBkvY,EAAqByL,GAAoB,WAC9D,OAAI,IAAMA,EAAmBx9Y,QAAU,WAAaX,KAAKo7Y,iCAC9C1I,GAEXA,EAAoBhyY,SAAQ,SAAA6sH,GACxB,IAAIijP,EAAoB,EAAK4tC,gCAAgC7wR,EAAa4wR,GAC1E,GAAI3tC,EAAmB,CACnB,IAAI6tC,EAAgB,EAAKC,eAAe/wR,EAAY+tB,UAChDijQ,EAAmB,EAAKC,kBAAkBjxR,EAAYiI,SAAUg7O,EAAkBh7O,UAClFipR,EAA4B,EAAKC,2BAA2BnxR,EAAaijP,GAC7EjjP,EAAYo+L,YAAc0yF,GAAiBE,GAAoBE,CAClE,CACJ,IACM/L,EAAoBziY,OAAOjQ,KAAK2+Y,wBAAwBjM,EAAqByL,IACvF,6CACD,WAEI,IADwBn+Y,KAAKi8Y,qBAAqBT,uBAC1B,CACpB,IAAIp+Y,EAAU4C,KAAK09Y,+BACnB19Y,KAAKi8Y,qBAAqBX,sBAAsBl+Y,EACnD,CACD,OAAO4C,KAAKi8Y,qBAAqBT,sBACpC,OAjMCe,GAmMN,MCxNaqC,IAAb,QACI,WAAYrxR,IAAa,eACrB,IAAIsxR,EAAsB/mY,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,QAAK,EACvF6Q,EAAQ7Q,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GACzE09G,EAAW19G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GAChF9X,KAAKutH,YAAcA,EACnBvtH,KAAK6+Y,oBAAsBA,EAC3B7+Y,KAAK2oB,MAAQA,EACb3oB,KAAKw1H,SAAWA,CACnB,ICoBDspR,GAA8B,qCAC9BC,GAAsC,GAAG9uY,OAAO6uY,GAA6B,YAC7EE,GAAsC,GAAG/uY,OAAO6uY,GAA6B,YAGpEG,GAAb,WACI,WAAYl2W,IAAU,eAClB/oC,KAAK+oC,SAAWA,EAChB/oC,KAAK2xD,SAAW,EACnB,CAJL,qCAKI,SAAOv0D,GACH,IACesgM,EAGXtgM,EAHAsgM,UACOx3I,EAEP9oD,EAFA8oD,MACa8hU,EACb5qX,EADA4qX,YAEAxoW,EAAWxf,KAAK2kK,gBAAgBz+G,EAAM5rD,KAAKqG,OAAQ+8L,GAEnDq7C,EADS/4O,KAAKk/Y,qBAAqB1/X,EAAUpiB,GAC5B48D,WAKrB,OAJAh6D,KAAKm/Y,qBAAqBpmK,EAAS7yL,EAAMruB,OAAQmwV,GACjDhoX,KAAKo/Y,sBAAsBrmK,GAC3B/4O,KAAK2xD,SAASvxD,KAAK24O,GACnBA,EAAQz+O,KAAK,QAAS0F,KAAKq/Y,oBAAoBn5V,IACxC6yL,CACV,GAnBL,mBAoBI,WACI/4O,KAAK2xD,SAASjxD,SAAQ,SAAAwqB,GAClBA,EAAOgkD,SACPhkD,EAAOxtB,QACV,IACDsC,KAAK2xD,SAAW,EACnB,GA1BL,iCA2BI,SAAoBzL,GAAO,WACvB,OAAOA,EAAM5rD,KAAKyJ,KAAI,SAACwpH,EAAapsH,GAChC,IAAIzG,EACA4kZ,EAAkBtqQ,GAAyBznB,EAAa,EAAKxkF,SAASq0W,eAAgB,EAAKr0W,SAASyrF,oBAAoBlpG,QAC5H,IAAK,QAAU5wB,EAAKwrD,EAAMsvE,gBAAa,IAAW96H,OAAK,EAASA,EAAGiG,QAAU,EAAG,CAC5E,IACUqc,EACNkpC,EAAMsvE,SAASr0H,GADf6b,KAEJsiY,EAAgBx5T,UAAY9oE,EAAKwzV,kBAAkB1qR,UACnDw5T,EAAgBv5T,QAAU/oE,EAAKwzV,kBAAkBzqR,OACpD,CACD,OAAO,IAAI64T,GAAuBrxR,EAAa+xR,EAAgB/3W,SAAU2e,EAAMruB,OAAO12B,GAAQ+kD,EAAMsvE,SAASr0H,GAChH,GACJ,GAxCL,4BAyCI,SAAe8H,EAAG7L,GACd,IAAI27O,EAAUhoK,GAAE9nE,EAAEuD,SAClBxM,KAAK+oC,SAASw2W,2BAA2BxmK,EAASA,EAAQz+O,KAAK,SAAU0F,KAAKw/Y,2BAA2BpiZ,EAAS27O,GACrH,GA5CL,wCA6CI,SAA2B37O,EAASqiZ,GAChC,MAAO,CACHh8M,WAAYzjM,KAAK0/Y,YAAYtiZ,EAAQwhD,oBAAoB9hD,KAAKkD,MAC9D2/Y,aAAcviZ,EAAQwgX,WAAa59W,KAAK4/Y,2BAA2BH,GAAuB3iZ,KAAKkD,MAC/F6/Y,4BAA6B7/Y,KAAK+oC,SAAS4D,SAASkzW,4BACpDC,eAAe,EAEtB,GApDL,yBAqDI,SAAYlhW,GAAoB,WAC5B,OAAO,SAAA31C,GACH,IAAI82Y,EAAiB,EAAKh3W,SAASi3W,iBAAiB/2Y,GACpD21C,EAAmBmhW,EACtB,CACJ,GA1DL,wCA2DI,SAA2BN,GAAuB,WAC9C,OAAO,SAAAx2Y,GACH,IAAI+wD,EAAW+W,GAAE9nE,EAAEuD,SACfyzY,EAAoBlvU,GAAE,EAAKhoC,SAASv8B,WACpC0zY,EAAY,EAAKn3W,SAAS4zW,eAC1BwD,EAAkBz9P,GAAO+8P,GACzBriZ,EAAU,CACVo9B,OAAQ,IAAIvqB,OjUnGC,gBiUoGbmwY,mBAAmB,EACnBD,gBAAiBA,EACjB3jL,YAAa,SAAA18J,GACT,IAAIplE,EACJ,OAAO,QAAUA,EAAKq2E,GAAEjR,GAAaxlE,KAAKi8I,WAAwB,IAAW77I,OAAK,EAASA,EAAG6yH,WACjG,EACD8yR,gBAAiB,SAACvhZ,EAAGiC,GAAJ,OAAcA,EAAMu/Y,YAApB,GAErBJ,EAAUK,wBAAwBvmV,EAAUimV,EAAmB7iZ,EAClE,CACJ,GA7EL,iCA8EI,SAAoBuzB,EAAOstV,GACvB,OAAOA,EAAYttV,EAAQ3wB,KAAKwgZ,0BACnC,GAhFL,sCAiFI,WACI,OAAOxgZ,KAAK+oC,SAAS03W,+BAA+BpZ,kBAnFb,EADd,CAqF5B,GAnFL,mCAoFI,SAAsBn8W,GAClBA,EAAOoa,IAAI,YAAa,SAASr1B,OAAOw6E,GAAgBv/D,EAAOtxB,IAAI,IAAI+2B,MAAO,+BACjF,GAtFL,kCAuFI,SAAqBooN,EAASlhN,EAAQlP,GAClC0mC,GAAAA,GAAAA,MAAW,KAAMx3B,GAAQ+2B,KAAK,WAC1B5uD,KAAK0gZ,yBAAyB3nK,EAASpwN,EAAvC,2BAAkD7Q,WACrD,EAAChb,KAAKkD,MACV,GA3FL,sCA4FI,SAAyB+4O,EAASpwN,EAAOg4X,GACrCh4X,GAASA,EAAMimC,MAAK,SAAAjmC,GAChB,IAAIwY,EvC/FuB,SAACxY,EAAOkP,GAAR,OAAoBA,EAAOl3B,QAAU,IAAMk3B,EAAO2C,QAAO,SAAA51B,GAAI,OAAIA,IAAS+jB,CAAb,IAAoBhoB,YAAiB,EAARgoB,CAA1F,CuC+FLi4X,CAA0Bj4X,EAAOg4X,GACnDx/W,GACA43M,EAAQzzM,IAAI,kBAAmBnE,EAEtC,GACJ,GAnGL,0BAoGI,SAAa30B,EAAShC,GAClB24I,GAAK32I,EAAS,CACVi4B,IAAKj6B,EAASi6B,IACdG,KAAMp6B,EAASo6B,MAEtB,GAzGL,kCA0GI,SAAqBplB,EAAUpiB,GAAS,WAChC27O,EAAU/4O,KAAK6gZ,4BAA4BzjZ,GAC/C,OAAO4C,KAAK+oC,SAASo6H,iBAAiB41E,EAASpwC,GAAQ,CACnDtjM,KAAM,UACNsrB,MAAOvzB,EAAQuzB,MACfnE,OAAQpvB,EAAQovB,OAChB8wJ,QAAS,SAAAr0K,GAAC,OAAI,EAAK63Y,eAAe73Y,EAAG7L,EAA3B,EACVoiB,SAAUxf,KAAK+gZ,gBAAgBvhY,EAAUpiB,EAAQ8oD,MAAO9oD,EAAQsgM,YAEvE,GAnHL,yCAoHI,SAA4B1mL,GACxB,IACe0mL,EAGX1mL,EAHA0mL,UACYljH,EAEZxjE,EAFAwjE,WACamsS,EACb3vW,EADA2vW,YAEAnjX,EAASutE,GAAE,SAAS3C,SAAS0wU,IAA6B7wU,YAAY8wU,GAAqCrhN,GAAW/uH,SAAS6L,GAEnI,OADAx6E,KAAKghZ,aAAax9Y,EAAQmjX,GACnBnjX,CACV,GA7HL,6BA8HI,SAAgBgc,EAAU0mC,EAAOw3I,GAC7B,OAAO,IAAIh8B,IAAiB,SAAAtkK,GAAO,OAAIoiB,EAAS8uB,OAAO,CACnDmH,MAAO,CACHq3U,iBAAkB5mU,EAAM5rD,KAAKqG,OAC7B+8L,UAAWA,GAEfn2L,UAAWnK,EAAQmK,WALY,GAOtC,GAtIL,6BAuII,SAAgBsE,EAAO6xL,GAEnB,OADA19L,KAAKihZ,oBAAoBp1Y,EAAO6xL,GACzB19L,KAAK+oC,SAASm4W,wBAAwB,+BAChD,GA1IL,iCA2II,SAAoBr1Y,EAAO6xL,GAAW,WAClC19L,KAAK+oC,SAAS6gI,iBAAiBgsB,oBAAoB,CAC/CurN,qBAAsB,IAAIz/O,IAAiB,SAAAtkK,GAAO,OAAI,EAAKgkZ,sBAAsBv1Y,EAAOklE,GAAE3zE,EAAQmK,WAAYm2L,EAA5D,KAEzD,GA/IL,mCAgJI,SAAsBovL,EAAkBtgX,EAASkxL,GAC7C,IAAI/2L,EAAO+2L,EAAYovL,EAAmB1iQ,GAAAA,aAAiC,+BAAjCA,CAAiE0iQ,GAC3G,OAAOtgX,EAAQ7G,OAAOorE,GAAE,UAAUpqE,KAAKA,IAAOynE,SAAS4wU,GAC1D,KAnJL,KCVI7wR,GAAOnsC,GAAAA,mBACPq/T,GAAa,CACbC,oBADa,WAET,MAAO,WAAathZ,KAAKw8Y,eAC5B,EACD+E,mBAJa,SAIM7jW,GACf19C,KAAK2sC,OAAO,cAAe+Q,EAC9B,EACD8jW,mBAPa,SAOMvtX,GACfj0B,KAAK2sC,OAAO,cAAe1Y,EAC9B,EACDqb,UAVa,SAUHl2C,GACN,OAAO4G,KAAK2sC,OAAOvzC,EACtB,EACDqoZ,mBAba,SAaMroZ,GACf,OAAO4G,KAAK28Y,eAAehwW,OAAOvzC,EACrC,EACDk7W,mBAhBa,WAiBT,OAAOt0W,KAAKs0W,oBACf,EACDotC,sBAnBa,SAmBSn0R,EAAaowP,GAC/B39W,KAAKy8Y,WAAWiF,sBAAsBn0R,EAAaowP,EACtD,EACD+kB,gBAtBa,WAuBT,OAAO1iY,KAAK28Y,eAAeja,iBAC9B,EACDif,uBAzBa,SAyBUvkZ,GACnB,IAAIyhZ,EAAsB7+Y,KAAK4hZ,uBAAuBxkZ,EAAQ9C,KAAM8C,EAAQua,QAC5E3X,KAAK2hZ,uBAAuBvkZ,EAAQ9C,KAAM8C,EAAQua,OAAQknY,EAC7D,EACDgD,uBA7Ba,WA8BT7hZ,KAAK6hZ,wBACR,EACDC,yBAhCa,SAgCY1kZ,GACrB,IAAI2kZ,EAAe/hZ,KAAK4hZ,uBAAuBxkZ,EAAQ9C,KAAM8C,EAAQua,QACrE3X,KAAKgiZ,qBAAqB5kZ,EAAQ9C,MAAM,EAAOynZ,EAClD,EACDE,6BApCa,SAoCgB7kZ,GAAS,WAGfu3H,EAFRzC,GAAAA,cAAAA,mBAAuC90H,EAAQ2lX,cAGjDvS,kBADL77O,cAEJ30H,KAAKkiZ,2BAA2B9kZ,EAAQua,OAAQva,EAAQ9C,KAAMq6H,GAAe,WACzE,EAAKwtR,mBAAmB/kZ,EAAQua,OAAQva,EAAQ9C,MAAO,WACnD0F,KAAKoiZ,cAAc7/B,qBACtB,GACJ,GACJ,EACD8/B,eA/Ca,SA+CEptR,GACX,OAAOj1H,KAAKsiZ,gBAAgBrtR,EAC/B,EACDstR,2BAlDa,SAkDcvrY,GAAM,WAElBjW,EAKPiW,EALAjW,MACSyL,EAITwK,EAJAxK,QACgByoH,EAGhBj+G,EAHAi+G,eACcutR,EAEdxrY,EAFAwrY,aACcC,EACdzrY,EADAyrY,aAEAzlY,EAAOk1G,GAAAA,cAAAA,mBAAuC1lH,GAC9C+gH,EAAcynB,GAAyB/f,EAAgBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBACjFqqR,EAAsB7pQ,IAAyBvvF,EAAAA,GAAAA,GAAO,CAAC,EAAGwvE,EAAgBj1H,KAAKsiZ,gBAAgBrtR,IAAkBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBAC3IkuR,EAAyB7D,EAAoBt3W,SAC7Co7W,EAAe9D,EAAoB/yR,OACnC82R,EAAYr1R,EAAYzB,OACxB+2R,EAA8B7iZ,KAAKy8Y,WAAWlpC,qBAAuBqvC,IAAcD,IAAiBC,GAAaD,GACjHG,EAAiC/hZ,EAAMgiZ,gBAAkBhiZ,EAAMiiZ,aAC9D,IAAMR,EAMPA,IAAiBC,GAAgBK,GAAkCD,EACnE7iZ,KAAKkiZ,2BAA2BjtR,EAAgBytR,EAAwB1lY,EAAKwzV,kBAAkB77O,eAAe,WAC1G,EAAKwtR,mBAAmBltR,EAAgBytR,GAAyB,WAC7D1iZ,KAAKoiZ,cAAc7/B,oBAAoBxhX,EAC1C,GAAGA,EACP,QAAE,OAAQ,EAAQA,GAEnBf,KAAKoiZ,cAAc7/B,oBAAoBxhX,GAZlC+hZ,GACD9iZ,KAAKoiZ,cAAc7/B,oBAAoBxhX,EAalD,EACDkiZ,oBAlFa,SAkFO7lZ,GAChB,IAAI2kZ,EAAe/hZ,KAAK4hZ,uBAAuBxkZ,EAAQ9C,KAAMy2E,GAAE3zE,EAAQua,SACvE3X,KAAKkjZ,0BAA0B9lZ,EAAQ9C,KAAMynZ,GAC7C/hZ,KAAK6hZ,wBACR,EACDsB,qBAvFa,SAuFQC,EAAgBC,EAAwBxrV,GACzD,IAAI6zD,EAAqBspB,GAAyBouQ,EAAgBpjZ,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBACxF8qR,EAAkBtqQ,GAAyBquQ,GAA0BD,EAAgBpjZ,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBAC/G1uC,EAAY9lF,KAAKw0H,mBAAmBE,WAAW4qR,EAAgBx5T,UAAW,CAC1EnjF,KAAM,WAENojF,EAAU/lF,KAAKw0H,mBAAmBE,WAAW4qR,EAAgBv5T,QAAS,CACtEpjF,KAAM,WAENkkF,EAAahvB,GAAUyqU,GAAcx8S,EAAWC,EAASu5T,EAAgBxzR,OAAQ,UAAY9rH,KAAKw8Y,iBACtG,MAAO,CACH71Y,KAAM24Y,EAAgB34Y,MAAQ+kH,EAAmB/kH,KACjDujP,WAAYq4I,GAAYz8S,EAAWC,EAASc,GAEnD,EACDy8T,wBAtGa,SAsGWhpZ,GACpB,OAAI8sC,EAAAA,EAAAA,IAAc9sC,GACPA,EAAKqM,KAET8C,OAAOnP,EACjB,EACDipZ,4BA5Ga,SA4GenmZ,GACxB,IACY0uH,EACR1uH,EADA0uH,OAEAztE,EAASr+C,KAAKoxY,sBAAsB,UACxC,GAAI/yV,GAAUA,EAAO19C,OAAQ,CACzB,GAAImrH,GAAU9rH,KAAKwjZ,mBAAmB/C,+BAA+BgD,6BAA8B,CAC/F,IAAIC,EAAwB1jZ,KAAKy8Y,WAAWkH,eAAevmZ,EAAQupX,aACnE,MAAO,CACH/hV,KAAM8+W,EAAsB9+W,KAC5BF,MAAOg/W,EAAsBh/W,MAC7BD,IAAK,EACLE,OAAQ,EAEf,CACD,GAAI3kC,KAAKwjZ,mBAAmB/C,+BAA+BmD,yBAAyB93R,IAAW9rH,KAAKy8Y,WAAWO,8BAA+B,CAC1I,IAAI6G,EAAsB7jZ,KAAKy8Y,WAAWkH,eAAevmZ,EAAQupX,aACjE,MAAO,CACH/hV,KAAM,EACNF,MAAO,EACPD,IAAKo/W,EAAoBp/W,IACzBE,OAAQk/W,EAAoBl/W,OAEnC,CACJ,CAEJ,EACDm/W,6BAvIa,WAwIT,OAAO9jZ,KAAK28Y,eAAemH,8BAC9B,EACD1H,uBA1Ia,SA0IU5mR,GACnB,OAAOx1H,KAAKwjZ,mBAAmB/C,+BAA+BrE,uBAAuB5mR,EACxF,EACDH,SA7Ia,SA6IJg6O,GACL,OAAOrvW,KAAKwjZ,mBAAmB/C,+BAA+BprR,SAASg6O,EAC1E,EACD00C,aAhJa,SAgJA96Y,EAAGggY,EAAa3tP,GACzB,OAAOt7I,KAAKwjZ,mBAAmB/C,+BAA+BsD,aAAa96Y,EAAGggY,EAAa3tP,EAC9F,EACD6sP,4BAnJa,SAmJe9yQ,GACxB,OAAOr1H,KAAKwjZ,mBAAmB/C,+BAA+BtY,4BAA4BnoY,KAAKgkZ,sBAAsBzpB,cAAellQ,EACvI,EACDy5Q,6BAtJa,WAuJT,OAAO9uY,KAAKwjZ,mBAAmB/C,+BAA+B3R,8BACjE,EACD0F,aAzJa,WA0JT,OAAOx0Y,KAAK28Y,eAAenI,cAC9B,EACDD,cA5Ja,WA6JT,OAAOv0Y,KAAK28Y,eAAepI,eAC9B,EACD0P,oCA/Ja,SA+JuB5uR,GAChC,OAAOr1H,KAAKygZ,+BAA+B1S,qCAAqC14Q,EACnF,EACD6uR,4BAlKa,WAmKT,OAAOlkZ,KAAKygZ,+BAA+ByD,6BAC9C,EACDC,8BArKa,WAsKT,OAAOnkZ,KAAKygZ,+BAA+B/3P,cAC9C,EACD07P,yBAxKa,SAwKYhnZ,GACrB,IACa2oF,EACT3oF,EADA2oF,QAEA9nC,EAAaj+C,KAAKoxY,sBAAsB,cACxC7wV,EAAevgD,KAAKoxY,sBAAsB,gBAC1CtgR,EAAiB/qC,EAOrB,OANIA,EAAQnE,YAAc3jC,EACtB6yE,EAAe5xC,SAASjhC,EAAY,EAAG,EAAG,IAClC7gD,EAAQolY,YAAcjiV,EAAe,GAAK,GAAKwlC,EAAQnE,WAAamE,EAAQvD,aAAe,GAAKjiC,IACxGuwE,EAAiB,IAAIhuH,KAAKguH,EAAep7D,UAAYy4D,GAAK,SAC3CjvC,SAASjhC,EAAY,EAAG,EAAG,GAEvC6yE,CACV,EACDuzR,0BAvLa,SAuLajnZ,GACtB4C,KAAKskZ,2BAA2Bh2W,OAAOlxC,EAC1C,EACDmnZ,yBA1La,WA2LTvkZ,KAAKskZ,2BAA2Bn9W,OACnC,EACDynW,mCA7La,WA8LT,OAAO5uY,KAAKwjZ,mBAAmB/C,+BAA+B7R,oCACjE,EACDz1P,cAhMa,WAiMT,OAAOn5I,KAAKy8Y,WAAW+H,gBAC1B,EACDC,qBAnMa,SAmMQ1kZ,GACjB,IACcu7I,EAGVv7I,EAHAu7I,SACax7E,EAEb//D,EAFA+/D,YAGAiiV,EADAhiZ,EADA8+Y,qBAEsC7+Y,KAAK4hZ,uBAAuBtmQ,EAAUx7E,GAChF,MAAO,CACHuvS,gBAAiBtvW,EAAOu7I,SACxBsyO,mBAAoB7tX,EAAO+/D,YAC3BilT,wBAAyBg9B,EAEhC,EACD2C,kBAhNa,SAgNK/mU,EAAK4vC,EAAajuC,GAChC,OAAOt/E,KAAK0kZ,kBAAkB/mU,EAAK4vC,EAAajuC,EACnD,EACDkkU,iBAnNa,WAoNT,OAAOxjZ,KAAK8zV,cACf,EACD6wD,4BAtNa,WAuNT,OAAO3kZ,KAAK28Y,eAAegI,6BAC9B,EACDC,kBAzNa,WA0NT,OAAO5kZ,KAAKoxY,sBAAsB,iBACrC,EACD4B,iBA5Na,WA6NT,OAAOhzY,KAAKgzY,kBACf,EACDwK,eA/Na,WAgOT,OAAOx9Y,KAAKw9Y,gBACf,EACDqH,2BAlOa,WAmOT,OAAO7kZ,KAAK6kZ,4BACf,EACDC,cArOa,SAqOC9uE,GAQV,IAPA,IAAI+uE,EAAS/kZ,KAAK8xY,0BAA0BnhL,gBACxC30F,EAAQ,EACRgpR,EAAa,SAASlmZ,EAAG+M,GACzB,IAAI1K,EAAQ0K,EAAQmwH,EAAQ,EAC5B+oR,EAAOn1U,GAAGzuE,GAAOitE,SnUtOsB,gDmUuOvC4tD,GAASnwH,CACZ,EACQlD,EAAI,EAAGA,EAAIqtU,EAAKr1U,OAAQgI,KAC7BkkD,EAAAA,EAAAA,IAAKmpR,EAAKrtU,GAAIq8Y,EAErB,EACDC,YAjPa,WAkPT,OAAOjlZ,KAAKklZ,4BACf,EACDC,2BApPa,SAoPc53R,EAAa/gH,GACpC,OAAOxM,KAAK4hZ,uBAAuBr0R,EAAa/gH,EACnD,EACD44Y,cAvPa,WAwPT,OAAOplZ,KAAKy8Y,WAAW9vW,OAAO,eAAiB3sC,KAAK2sC,OAAO,aAC9D,EACDs/T,gBA1Pa,WA2PT,OAAOjsW,KAAKy8Y,WAAW9vW,OAAO,iBAAmB3sC,KAAK2sC,OAAO,eAChE,EACDq8V,WA7Pa,WA8PT,OAAOhpY,KAAK2sC,OAAO,oBACtB,EACD04W,yBAhQa,WAiQTrlZ,KAAKy8Y,WAAW4I,0BACnB,GAEL,MChRMC,IAAAA,EAAAA,EAAAA,IACF,WAAYrwR,EAAgB33G,IAAS,eACjCtd,KAAKi1H,eAAiBA,EACtBj1H,KAAKsd,QAAUA,CAClB,IAEQioY,GAAb,WACI,cAAc,eACV,IAAIC,EAAuB1tY,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GAC5F9X,KAAKylZ,sBAAwBD,EAC7BxlZ,KAAK0kG,UAAW,EAChB1kG,KAAK2kG,WAAY,EACjB3kG,KAAK0lZ,YAAc,IAAIxsZ,IACvB8G,KAAK2lZ,wBAA0B,EAClC,CARL,iDASI,WACI,OAAO3lZ,KAAKylZ,qBACf,EAXL,IAYI,SAAyBvnZ,GACrB8B,KAAKylZ,sBAAwBvnZ,EAC7B8B,KAAK0kG,UAAW,EAChB1kG,KAAK2kG,WAAY,EACjB3kG,KAAK0lZ,YAAYv+W,QACjBnnC,KAAK2lZ,wBAA0B,EAClC,GAlBL,+BAmBI,WAAoB,WAChB3lZ,KAAK2lZ,wBAAwBjlZ,SAAQ,SAAAsW,GACjC,IACasG,EAETtG,EAFAsG,QACgB23G,EAChBj+G,EADAi+G,eAEAzxH,EAAS,GACb,EAAKkiZ,YAAYhlZ,SAAQ,SAACo8C,EAAUqxF,GAChC,IAAIvpI,EAAO,CACP8S,MAAOolC,EAASplC,MAChBie,OAAQ,IAERw4G,KAAalZ,GACbqiB,GAAYriB,EAAekZ,IAAYztI,SAAQ,SAAAxC,GAAK,OAAI0G,EAAK+wB,OAAOv1B,KAAK08C,EAAS/4C,IAAInK,IAAIsE,GAAtC,IAEpD0G,EAAK+wB,OAAOh1B,QACZ6C,EAAOpD,KAAKwE,EAEnB,IACD0Y,EAAQ1e,QAAQ4E,EACnB,IACDxD,KAAK2lZ,wBAA0B,EAClC,GAzCL,6BA0CI,SAAgBx3Q,EAAW4sB,EAAWriJ,EAAahB,EAAOwuC,GACtD,IAAIniD,EAAM,IAAI7K,IACdgtD,EAAMxlD,SAAQ,SAAAkE,GAAI,OAAIb,EAAI5K,IAAIyL,EAAKm2J,GAAYn2J,EAAK8T,GAAlC,IAClB1Y,KAAK0lZ,YAAYvsZ,IAAIg1I,EAAW,CAC5Bz2H,MAAOA,EACP3T,IAAKA,GAEZ,GAjDL,sCAkDI,SAAyBg8C,GACrB,OAAI,IAAMA,EAAUp/C,SAChBX,KAAK2lZ,wBAAwBjlZ,SAAQ,SAAAgkK,GAIjC,OADIA,EADApnJ,QAEW1e,QAAQ,GAC1B,IACDoB,KAAK2lZ,wBAA0B,IACxB,EAGd,GA9DL,+BA+DI,SAAkB5lW,EAAW6lW,GAAa,WACtC,IAAK5lZ,KAAK2kG,UAAW,CACjB3kG,KAAK2kG,WAAY,EACjB,IAAI04D,EAAW,GACft9G,EAAUr/C,SAAQ,SAAAo8C,GACd,IAAIx/B,GAAW,IAAID,GAAAA,IAAUuxC,MAAK,SAAA1I,GAAK,OAAI,EAAK2/V,gBAAgB3tQ,GAAap7F,GAAWg7F,GAAah7F,GAAWk7F,GAAel7F,GAAWA,EAASplC,MAAOwuC,EAAnH,IACvCm3G,EAASj9J,KAAKkd,GACd,IAAIiqF,EAAa6wC,GAAqBt7F,EAASyqD,YAC3CA,EAAW7C,WACXpnF,EAAQ1e,QAAQ2oG,EAAWrhD,SAE3BqhD,EAAWlR,OAAOznC,MAAK,SAAAlB,GAAI,OAAIpwC,EAAQ1e,QAAQ8uD,EAApB,IAA2B4B,MAAK,kBAAMhyC,EAAQ9d,QAAd,GAElE,IACD6vD,GAAAA,GAAAA,MAAW,KAAMguG,GAAUzuG,MAAK,WAC5B,EAAK81C,UAAW,EAChB,EAAKC,WAAY,EACjB,EAAKmhT,mBACR,IAAEx2V,MAAK,kBAAMs2V,EAAYpmZ,QAAlB,GACX,CACJ,GAnFL,6BAoFI,WACI,IAAIgmZ,EAAuB1tY,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,GAC5F9X,KAAKwlZ,qBAAuBA,CAC/B,GAvFL,6BAwFI,SAAgBvwR,GACZ,IAAI2wR,EAAc,IAAIvoY,GAAAA,GAStB,OARArd,KAAK2lZ,wBAAwBvlZ,KAAK,IAAIklZ,GAAYrwR,EAAgB2wR,IAC9D5lZ,KAAK+lZ,yBAAyB/lZ,KAAKwlZ,wBAC/BxlZ,KAAK0kG,SACL1kG,KAAK8lZ,oBAEL9lZ,KAAKgmZ,kBAAkBhmZ,KAAKwlZ,qBAAsBI,IAGnDA,EAAYtoY,SACtB,KAnGL,KClBA,MCKI2oY,GAA2B,8BAC3BC,GAAmC,GAAGj2Y,OAAOg2Y,GAA0B,YACvEE,GAA2C,GAAGl2Y,OAAOg2Y,GAA0B,oBAC/EG,GAAwC,GAAGn2Y,OAAOg2Y,GAA0B,iBAC5EI,GAAkC,GAAGp2Y,OAAOg2Y,GAA0B,WACtEK,GAAuC,GAAGr2Y,OAAOg2Y,GAA0B,gBAC3EM,GAAmD,GAAGt2Y,OAAOg2Y,GAA0B,4BACvFO,GAAyC,GAAGv2Y,OAAOg2Y,GAA0B,kBACpEQ,GAAb,WACI,WAAYrpZ,IAAS,eACjB4C,KAAK0mZ,SAAW,KAChB1mZ,KAAKktD,SAAW9vD,EAChB4C,KAAK2mZ,cAAgB,IACxB,CALL,mCAMI,SAAKhvY,EAAQivY,EAAUhwT,GACf52F,KAAK6mZ,gBAAgBD,KACrB5mZ,KAAKguE,OACLhuE,KAAK2mZ,cAAgB/vT,EACrB52F,KAAK8mZ,UAAUnvY,EAAQivY,GAE9B,GAZL,uBAaI,SAAUjvY,EAAQivY,GACT5mZ,KAAK0mZ,UAGN1mZ,KAAK+mZ,oBAAsB/mZ,KAAK0mZ,SAAS/5W,OAAO,SAAUh1B,GAC1D3X,KAAKmtD,MAAMxgB,OAAO,aAAci6W,IAHhC5mZ,KAAK0mZ,SAAW1mZ,KAAKgnZ,eAAervY,EAAQivY,GAKhD5mZ,KAAKinZ,6BAA6BL,GAClC5mZ,KAAK0mZ,SAAS/5W,OAAO,WAAW,EACnC,GAtBL,0CAuBI,SAA6Bi6W,GAAY,GAvB7C,iCAwBI,SAAoBA,GAAU,WAC1B,OAAO,SAAAr/Y,GACH,IAAI2/Y,EAAcn2U,GAAE,SACpBA,GAAExpE,GAAW5B,OAAOuhZ,GACpB,EAAK/5V,MAAQ,EAAKg6V,YAAYD,EAAaN,EAC9C,CACJ,GA9BL,4BA+BI,SAAejvY,GACX,GAAI3X,KAAK0mZ,UAAY1mZ,KAAK0mZ,SAAS/5W,OAAO,WACtC,OAAO3sC,KAAK0mZ,SAAS/5W,OAAO,UAAU,KAAOh1B,EAAO,EAG3D,GApCL,sBAqCI,WACI3X,KAAKmtD,MAAMxgB,OAAO,oBAAqB3sC,KAAK2mZ,cAAcxoW,kBAC7D,GAvCL,qBAwCI,WAAY,GAxChB,kBAyCI,WACQn+C,KAAK0mZ,UACL1mZ,KAAK0mZ,SAAS/5W,OAAO,WAAW,EAEvC,GA7CL,8BA8CI,WACI,OAAO,CACV,GAhDL,4BAiDI,SAAeh1B,EAAQivY,GAAY,GAjDvC,6BAkDI,SAAgBA,GACZ,QAAKA,EAASjmZ,MAIjB,GAvDL,+BAwDI,SAAkBimZ,GAAU,WACxB,MAAO,CACHr/S,WAAYq/S,EACZpnW,eAAgBx/C,KAAKonZ,cAActqZ,KAAKkD,MACxCsuN,YAAa,SAAArlN,GAAC,OAAI,EAAKo+Y,iBAAiBp+Y,EAA1B,EACdwlN,kBAAmBzuN,KAAKsnZ,uBAAuBxqZ,KAAKkD,MACpDouN,aAAc,SAACxpN,EAAMzD,GAAP,OAAiB,EAAK4/Y,gBAAgBn8Y,EAAK2oH,YAAa3oH,EAAKi6Y,oBAAqB19Y,EAAOyD,EAAK+jB,MAA9F,EACdy0R,eAAe,EACfR,aAAc,eAErB,GAlEL,2BAmEI,SAAc3zS,GAAK,GAnEvB,mCAoEI,SAAsBq6U,GAClB,OAAOvyQ,GAAE,SAASpC,SAAS3uE,KAAKktD,SAAS3lD,WAAW6mE,SAASk1Q,EAChE,GAtEL,yBAuEI,SAAY4jE,EAAaN,GACrB,OAAO5mZ,KAAKktD,SAASq9S,gBAAgB28C,EAAa/9F,GAAMnpT,KAAKunZ,kBAAkBX,GAClF,GAzEL,6BA0EI,SAAgBr5R,EAAasxR,EAAqB19Y,EAAOwnB,GACrD,IAAI6+X,EAAkBxnZ,KAAKynZ,uBAAuBl6R,EAAasxR,EAAqBl2X,GACpF3oB,KAAKktD,SAAS0oI,qBAAd,WACK51L,KAAK0nZ,2BAA6B,IAAIhmP,IAAiB,SAAAtkK,GACpD,IAAIo9E,EAAazJ,GAAE3zE,EAAQmK,WAE3B,OADAizE,EAAW70E,OAAO6hZ,GACXhtU,CACV,MAEL,IAAIh7D,EAAWxf,KAAKktD,SAASy6V,uBAAuB,GAAG13Y,OAAOjQ,KAAK0nZ,2BAA4B,aAC/F,OAAO1nZ,KAAK4nZ,wBAAwBpoY,EAAU+tG,EAAasxR,EAAqB19Y,EACnF,GArFL,qCAsFI,SAAwBqe,EAAU6vV,EAAiB0V,EAAyB5jX,GACxE,IAAI0mZ,IAAoB7nZ,KAAK2mZ,cAAc7G,cACvCgI,EAAqC9nZ,KAAK+nZ,sCAC9C,OAAO,IAAIrmP,IAAiB,SAAAtkK,GAAO,OAAIoiB,EAAS8uB,OAAO,CACnDmH,MAAOqyW,EAAqC,CACxCz4C,gBAAiBA,EACjB0V,wBAAyBA,EACzB8iC,gBAAiBA,GACjBx4C,EACJ9nW,UAAWnK,EAAQmK,UACnBpG,MAAOA,GAPwB,GAStC,GAlGL,sCAmGI,WACI,OAAOnB,KAAK+nZ,sCAAwC,qBAAuB,qBAC9E,GArGL,iDAsGI,WACI,OAAQ/nZ,KAAK2mZ,cAAc9G,6BAA+B,wBAA0B7/Y,KAAK2mZ,cAAc9G,2BAC1G,GAxGL,8BAyGI,SAAiB52Y,GACbjJ,KAAKguE,OACLhuE,KAAK2mZ,cAAcljN,YAAczjM,KAAK2mZ,cAAcljN,WAAWx6L,GAC/DjJ,KAAKktD,SAAS80V,qBAAqB/4Y,EAAEqyI,SAAS/tB,aAAa,EAAOtkH,EAAEqyI,SAASujQ,oBAChF,GA7GL,oCA8GI,SAAuB51Y,GAAK,GA9GhC,oCA+GI,SAAuBskH,EAAasxR,EAAqBl2X,GACrD,IACak0B,EACT78C,KAAK2mZ,cADL9pW,QAEAixK,EAAe/8I,GAAE,SAAS3C,SAAS63U,IAOvC,OANAn4L,EAAanoN,OAAO3F,KAAKgoZ,sBAAsBr/X,IAC/CmlM,EAAanoN,OAAO3F,KAAKioZ,oBAAoBjoZ,KAAKktD,SAAS+5U,wBAAwB15Q,EAAasxR,MACjF7+Y,KAAKktD,SAASg7V,uBAAuB36R,KAClC1wE,IAAW,IAASA,EAAQsrW,gBAAiB,IAAStrW,IACpEixK,EAAanoN,OAAO3F,KAAKooZ,oBAAoB76R,EAAasxR,IAEvD/wL,CACV,GA3HL,mCA4HI,SAAsBnlM,GAClB,IAAI0/X,EAAUt3U,GAAE,SAAS3C,SAASi4U,IAC9BiC,EAAcv3U,GAAE,SAAS3C,SAASk4U,IAGtC,OAFA+B,EAAQ1iZ,OAAO2iZ,GACf3/X,GAASA,EAAMimC,MAAK,SAAA1wD,GAAK,OAAIoqZ,EAAYhjX,IAAI,aAAcpnC,EAAlC,IAClBmqZ,CACV,GAlIL,iCAmII,SAAoB1iX,GAChB,IAAIniC,EAASutE,GAAE,SAAS3C,SAAS83U,IAC7BtuK,EAAS7mK,GAAE,SAAS3C,SAAS+3U,IAA0Cx/Y,KAAKg/B,EAAOh/B,MACnF4hZ,EAAQx3U,GAAE,SAAS3C,SAASg4U,IAAuCz/Y,KAAKg/B,EAAOukN,YACnF,OAAO1mP,EAAOmC,OAAOiyO,GAAQjyO,OAAO4iZ,EACvC,GAxIL,iCAyII,SAAoBh7R,EAAasxR,GAAqB,WAC9CrkU,EAAazJ,GAAE,SAAS3C,SAASm4U,IACjCiC,EAAgBz3U,GAAE,SAAS3C,SAASo4U,IAWxC,OAVAhsU,EAAW70E,OAAO6iZ,GAClBxoZ,KAAKktD,SAASq9S,gBAAgBi+C,EAAe7/M,GAAQ,CACjDliL,KAAM,QACN6hL,YAAa,OACbhrB,QAAS,SAAAr0K,GACL,EAAK+kE,OACL/kE,EAAElI,MAAMggE,kBACR,EAAK7T,SAASg2V,0BAA0B31R,EAAasxR,EACxD,IAEErkU,CACV,KAvJL,KCPIiuU,GAAoC,2CAE3BC,GAAb,gKACI,SAA6B9B,GACzB5mZ,KAAK0mZ,SAAS/5W,OAAO,WAAY,CAC7BlK,GAAI,SACJoiB,GAAI,MACJopJ,SAAUjuM,KAAK2oZ,aAAa/B,GAC5B35Y,OAAQjN,KAAK2mZ,cAAc15Y,OAC3B8gM,UAAW,eAElB,GATL,0BAUI,SAAa64M,GACT,OAAO5mZ,KAAKktD,SAAS07V,2BAA2BhC,EAAS,GAAGr5R,aAAevtH,KAAKktD,SAAS3lD,UAAYvH,KAAKktD,SAAS27V,wBACtH,GAZL,sBAaI,YACI,wDACI7oZ,KAAK2mZ,cAAc7G,gBACnB9/Y,KAAKmtD,MAAM9mC,QACXrmB,KAAKmtD,MAAMxgB,OAAO,iBAAkB,MAE3C,GAnBL,+BAoBI,SAAkBh1B,EAAQivY,GACtB,IAAIpjZ,GAAS,gEAAwBmU,EAAQivY,GAE7C,OADApjZ,EAAO6xR,cAAgBpwI,GAAQ,SAAW,UACnCzhJ,CACV,GAxBL,4BAyBI,SAAemU,EAAQivY,GACnB,IAAIn5X,EAAUztB,KAAK8oZ,sBAAsBL,IACzC,OAAOzoZ,KAAKktD,SAASq9S,gBAAgB98U,EAASwvV,GAAS,CACnDtlW,OAAQA,EACRspB,UA9Ba,IA+Bb+e,WAAYhgD,KAAK2mZ,cAAc3mW,WAC/BggK,QAAShgN,KAAK+oZ,SAASjsZ,KAAKkD,MAC5BmgN,gBAAiBngN,KAAKgpZ,oBAAoBpC,GAC1CpnM,YAAa,CACT32C,MAAO4/O,KAGlB,GArCL,2BAsCI,SAAcx/Y,GACV,OAAOjJ,KAAK2mZ,cAAchH,cAAgB3/Y,KAAK2mZ,cAAchH,aAAa12Y,EAC7E,GAxCL,oCAyCI,SAAuBA,GACnB,IAAIggZ,EAAuBjpZ,KAAKktD,SAASg8V,gBAAgBjgZ,GACzDjJ,KAAKktD,SAASuhK,kBAAkBw6L,EACnC,KA5CL,GAA4CxC,ICGxC0C,GAAyB,6BAEzBC,GACO,IADPA,GAEQ,MAFRA,GAGS,OAETC,GACO,OADPA,GAEQ,MAERC,GAAkB,CAClBx7U,KAAM,CACFzoE,KAAM,QACNwmB,SAAU,IACVriB,KAAM,CACFgB,SAAU,CACNi4B,GAAI,MACJoiB,GAAI,SACJgpJ,IAAI9sJ,EAAAA,EAAAA,QAGZy2D,GAAI,CACAhtG,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,SACJgpJ,IAAI9sJ,EAAAA,EAAAA,SAIhBitB,KAAM,CACF3oE,KAAM,QACNwmB,SAAU,IACV2rF,GAAI,CACAhtG,SAAU,CACNi4B,GAAI,MACJoiB,GAAI,SACJgpJ,IAAI9sJ,EAAAA,EAAAA,QAGZv3C,KAAM,CACFgB,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,SACJgpJ,IAAI9sJ,EAAAA,EAAAA,UA4BPwoW,GAAb,oJACI,WACI,OAAO,CACV,GAHL,wBAII,WACI,IAAIC,EAAgB5+U,IAAS7pB,EAAAA,EAAAA,OAAe,IAC5C/gD,KAAK0mZ,SAAS/5W,OAAO,SAAUy8W,IAC/B,IAAIK,EAAav+U,GAAelrE,KAAKmtD,MAAM6M,YAC3Ch6D,KAAK0mZ,SAAS/5W,OAAO68W,EArBE,SAAAC,GAC3B,IAAIC,EA3D+B,GA2DZ5+U,IAAU/pB,EAAAA,EAAAA,OACjC,MAAO,CACHgE,SAAS,EACTp0B,MAAO04X,GACP78X,OAAQi9X,EAAaC,EAAmBN,GAAoBA,GAC5D5+Y,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,SACJgpJ,IAAI9sJ,EAAAA,EAAAA,OAGf,CAS4C4oW,CAAyBF,GA/BxC,SAAAA,GAAU,MAAK,CACzC1kW,SAAS,EACTp0B,MAAO04X,GACP78X,OAAQi9X,EAAaL,GAAmBA,GAAmBA,GAC3D5+Y,SAAU,CACNi4B,GAAI,SACJoiB,GAAI,SACJgpJ,IAAI9sJ,EAAAA,EAAAA,OAP4B,CA+B4C6oW,CAAwBH,GACvG,GATL,4BAUI,SAAe9xY,EAAQivY,GAAU,WACzBp6Y,EAAUxM,KAAK8oZ,sBAAsBK,IACzC,OAAOnpZ,KAAKktD,SAASq9S,gBAAgB/9V,EAAS6yM,GAAS,CACnD1nM,QAAQopC,EAAAA,EAAAA,MACR2+J,oBAAoB,EACpBn0D,UAAW+9P,GACXvpM,UAAW,kBAAM,EAAKmvJ,YAAX,EACXlvJ,QAAShgN,KAAK+oZ,SAASjsZ,KAAKkD,MAC5BmgN,gBAAiBngN,KAAKgpZ,oBAAoBpC,GAC1CpnM,YAAa,CACT32C,MAAOsgP,KAGlB,KAvBL,GAA2C1C,ICxEvCoD,GAAe,KACbC,GAAAA,WACF,cAAc,eACV9pZ,KAAK8nR,SAAW,WAChB9nR,KAAKmlR,WAAa,YACrB,+CACD,SAAgB4kI,EAAgBC,EAAW7oZ,GACvC,GAAI4oZ,EAAe5oZ,GAAQ,CACvB,IAAIuuQ,EAAMq6I,EAAe5oZ,GAAOnF,KAAK6tZ,IAChCn6I,EAAI/uQ,SACL+uQ,EAAM3+L,GAAElU,EAAAA,EAAAA,cAAyBgtV,MAC7BlkZ,OAAOokZ,EAAe5oZ,GAAOvH,IAAI,IAEzCowZ,EAAUzhZ,YAAYmnQ,EAAI91Q,IAAM81Q,EAAI91Q,IAAI,GAAK81Q,EAChD,CACJ,0BACD,SAAUtyQ,GACN,IAAI1C,EAGAg1Q,EAFAs6I,EAAYntV,EAAAA,EAAAA,cAAyB,SACrCotV,EAAoB,GAEpBC,EAAkB9sZ,EAAQuxF,WAAavxF,EAAQoxQ,SAAWpxQ,EAAQuxF,WAAavxF,EAAQoxQ,SACvF27I,EAAqB,EAELJ,EAChB3sZ,EADA2sZ,eAGYvxQ,EACZp7I,EADAo7I,WAGUg2H,EACVpxQ,EADAoxQ,SAEJz9L,GAAE3zE,EAAQmK,WAAW5B,OAAOqkZ,GACxBD,IACA/pZ,KAAKoqZ,gBAAgBL,EAAgBC,EAAW,GAChDG,KAEJ,IAAK,IAAI16I,EAAW,EAAGA,EAAWjB,EAAUiB,IAAY,CACpDC,EAAM7yM,EAAAA,EAAAA,cAAyBgtV,IAC/BG,EAAUzhZ,YAAYmnQ,GACtB,IAAI26I,GAAoB56I,EAAW,GAAKy6I,IAAoB,EACxD9sZ,EAAQktZ,WACR56I,EAAIv3P,UAAY/a,EAAQktZ,UAE5B,IAAK,IAAI/8D,EAAc,EAAGA,EAAcnwV,EAAQmuY,UAAWh+C,IAAe,CACtE,IAAI7gR,EAAK7P,EAAAA,EAAAA,cAAyB,MAClC6yM,EAAInnQ,YAAYmkE,GACZtvE,EAAQmtZ,aACJ17V,EAAAA,EAAAA,IAAWzxD,EAAQmtZ,WACnB79U,EAAGv0D,UAAY/a,EAAQmtZ,UAAU96I,EAAU89E,GAE3C7gR,EAAGv0D,UAAY/a,EAAQmtZ,WAG/B,IAAIC,OAAiB,EACjBC,OAAU,EACVhgE,OAAY,EAQhB,GAPIrtV,EAAQojX,cAERiqC,GADAD,EAAiBptZ,EAAQojX,YAAY9zS,EAAI+iM,EAAU89E,EAAa/0M,IACvCl2I,IACzBmoV,EAAY+/D,EAAetsZ,MAC3BusZ,GAAWrqV,EAAYsM,EAAI+9U,EAAShgE,IAExC,QAAU/vV,EAAK0C,EAAQstZ,4BAAyB,IAAWhwZ,GAAcA,EAAG+D,KAAKrB,EAAS2zE,GAAErE,GAAK+9Q,GAC7FrtV,EAAQixQ,cAAgBjxQ,EAAQixQ,aAAa//N,OAAQ,CACrD,IAAIq8W,EAAyBvtZ,EAAQmlV,gBAAkBnlV,EAAQmlV,gBAAgB9yE,GAAY,CAAC,EACxFn3E,EAAkB,CAClB7iJ,OAAO18B,EAAAA,EAAAA,GAAS,CACZpS,KAAMvJ,EAAQwtZ,YAAcxtZ,EAAQwtZ,YAAYn7I,EAAU89E,GAAe,GACzEt5T,KAAM72B,EAAQytZ,YAAcztZ,EAAQytZ,YAAYp7I,QAAY,GAC7Dk7I,GACHpjZ,UAAWs6I,GAAiB9wE,GAAErE,IAC9BvrE,MAAOsuQ,EAAWryQ,EAAQmuY,UAAYh+C,GAEtC9C,IACIA,EAAU3kQ,YACVwyG,EAAgB7iJ,MAAMqwC,UAAY2kQ,EAAU3kQ,WAE5C2kQ,EAAU1kQ,UACVuyG,EAAgB7iJ,MAAMswC,QAAU0kQ,EAAU1kQ,SAE1C0kQ,EAAUpsS,SACVi6I,EAAgB7iJ,MAAM4I,OAASosS,EAAUpsS,QAEzCosS,EAAU3+N,SACVwsE,EAAgB7iJ,MAAMq2E,OAAS2+N,EAAU3+N,SAGjDm+R,EAAkB7pZ,KAAKhD,EAAQixQ,aAAa//N,OAAOxxC,KAAKM,EAAQixQ,aAAc/1E,GACjF,MAAUl7L,EAAQwtZ,aACf75U,GAAE,SAASpqE,KAAKvJ,EAAQwtZ,YAAYn7I,EAAU89E,IAAcn/Q,SAAShxE,EAAQ0tZ,kBAAkBn8U,SAASoC,GAAErE,GAEjH,CACGq9U,GAAkBM,IAClBrqZ,KAAKoqZ,gBAAgBL,EAAgBC,EAAWG,GAChDA,IAEP,CACD,OAAOF,CACV,iCACD,SAAiB5kZ,EAAMg5C,EAAQ4pJ,EAAYsjM,EAAWl9H,EAAcG,EAAUpwN,GAO1E,OALI/4C,IAASrF,KAAK8nR,SACP9nR,KAAK+qZ,yBAAyB1sW,EAAQ4pJ,EAAYomE,EAAcG,GAEhExuQ,KAAKgrZ,2BAA2B3sW,EAAQ4pJ,EAAYsjM,EAAWl9H,EAAcjwN,EAG3F,yCACD,SAAyB/4C,EAAM/K,EAAMyF,GACjC,IAAIkrZ,EACAC,EAAc,GACdz7I,EAAW,EAEX07I,GADJprZ,EAASA,GAAU,CAAC,GACCorZ,SAAW,KAC5BC,EAAgBrrZ,EAAOqrZ,eAAiB,WACxCC,EAAatrZ,EAAOsrZ,YAAc,QAEjBC,EACjBvrZ,EADAurZ,gBAGeC,EACfxrZ,EADAwrZ,cAGgBC,EAChBzrZ,EADAyrZ,eAGwBC,EACxB1rZ,EADA0rZ,uBAGJ,SAASC,EAAc9mZ,GACnB,OAAIA,EAAKwmZ,GACExmZ,EAAKwmZ,GAAezqZ,OAExB,CACV,CAED,SAASgrZ,EAAWhlZ,EAAMilZ,EAAYzqZ,EAAO7G,GACzC,IAAI21Q,EAAO,CACPzjQ,QAASqwD,EAAAA,EAAAA,cAAyBsuV,GAClCS,WAAYA,GAEZJ,IACAv7I,EAAKzjQ,QAAQ2L,UAAYqzY,GAE7B,IAAIK,EAAWhvV,EAAAA,EAAAA,eAA0Bl2D,GAMzC,MALI,oBAAsB8kZ,EACtBA,EAAuBx7I,EAAKzjQ,QAASq/Y,EAAU1qZ,EAAO7G,GAEtD21Q,EAAKzjQ,QAAQjE,YAAYsjZ,GAEtB57I,CACV,CA4CD,OA3CIg7I,EAAQpuV,EAAAA,EAAAA,cAAyB,SAC7ByuV,IACAL,EAAM9yY,UAAYmzY,GAGxB,SAASQ,EAAcxxZ,GACrB,IAAK,IAAIqO,EAAI,EAAGA,EAAIrO,EAAKqG,OAAQgI,IAAK,CAClC,IAAIijZ,EAAaF,EAAcpxZ,EAAKqO,IAChCsnQ,EAAO07I,EAAWrxZ,EAAKqO,GAAG0iZ,GAAaO,EAAYjjZ,EAAGrO,EAAKqO,IAC1DuiZ,EAAYz7I,KACby7I,EAAYz7I,GAAY,IAE5By7I,EAAYz7I,GAAUrvQ,KAAK6vQ,GACvB27I,EACAE,EAAcxxZ,EAAKqO,GAAGyiZ,IAEtB37I,GAEP,CACJ,CAdC,CAcAn1Q,GACG4wZ,EAAYxqZ,SAAQ,SAAAqrZ,GACrB,IAAIr8I,EAAM7yM,EAAAA,EAAAA,cAAyBgtV,IAC/B0B,IACA77I,EAAIv3P,UAAYozY,GAGpB,IADA,IAAIS,EAAW,GACNrjZ,EAAIojZ,EAAMprZ,OAAS,EAAGgI,GAAK,EAAGA,IAAK,CACxC,IAAIuC,EAAO6gZ,EAAMpjZ,EAAI,GACjBwvU,EAAU4zE,EAAMpjZ,GAAGijZ,WACnB1gZ,GAAQA,EAAK0gZ,aACbzzE,GAAWjtU,EAAK0gZ,YAEpBI,EAAS5rZ,KAAK+3U,EACjB,CACD6zE,EAASlxV,UACTixV,EAAMrrZ,SAAQ,SAACuvQ,EAAM9uQ,GACb6qZ,EAAS7qZ,IACT8uQ,EAAKzjQ,QAAQlE,aAAa,UAAW0jZ,EAAS7qZ,IAElDuuQ,EAAInnQ,YAAY0nQ,EAAKzjQ,QACxB,IACDy+Y,EAAM1iZ,YAAYmnQ,EACrB,IACMu7I,CACV,yCACD,SAAyB11T,EAAO8jQ,EAAapxJ,EAAYomE,GAOrD,IANA,IAAI49I,EAAen0Y,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,EAChFi0Y,EAAQ,GAED7lW,EACPqvC,EADArvC,MAEAw0O,EAAYx0O,EAAMvlD,OACbgI,EAAI,EAAGA,EAAI0wV,EAAc4yD,EAActjZ,IAC5C,IAAK,IAAImF,EAAI,EAAGA,EAAI4sR,EAAW5sR,IAAK,CAChC,IAAI0sE,EAAazJ,GAAE,SACfk/L,EAAO,CAAC,EACZ,GAAI5B,GAAgBA,EAAa//N,OAAQ,CACrC,IAAIgqJ,EAAkB,CAClB7iJ,MAAOyQ,EAAMp4C,GACbvG,UAAWs6I,GAAiBrnE,GAC5Br5E,MAAOwH,EAAI+xR,EAAY5sR,GAEvBynF,EAAMj7F,OACNg+L,EAAgB7iJ,MAAMn7C,KAAOi7F,EAAMj7F,KAAKwT,IAE5CmiQ,EAAKzwP,SAAW6uP,EAAa//N,OAAOxxC,KAAKuxQ,EAAc/1E,EAC1D,MACG99G,EAAW7zE,KAAKu/C,EAAMp4C,GAAGnH,MAAMunE,KAAK,QAAShoB,EAAMp4C,GAAGnH,MAAMynE,SAAS,qCACrEoM,EAAazJ,GAAE,SAASprE,OAAO60E,GAEnC,IAAI+vF,GAAW17G,EAAAA,EAAAA,IAAWo5I,EAAWikN,kBAAoBjkN,EAAWikN,iBAAiBp+Y,GAAKm6L,EAAWikN,iBACrGj8I,EAAKzjQ,QAAUguE,EAAWpM,SAASm8F,GACnCwhP,EAAM3rZ,KAAK6vQ,EACd,CAEL,OAAO87I,CACV,yCACD,SAAyB1tW,EAAQ4pJ,EAAYomE,EAAcG,GASvD,IARA,IAAI29I,EAAgB,GAChB9yD,EAAc,EACd+yD,EAAa,GACbC,EAAe,SAASp8I,GACpBA,EAAKzwP,UACL2sY,EAAc/rZ,KAAK6vQ,EAAKzwP,SAE/B,EACQ7W,EAAI,EAAGA,EAAI01C,EAAO19C,OAAQgI,IAAK,CAChCA,EAAI,IACJ0wV,EAAch7S,EAAO11C,EAAI,GAAGu9C,MAAMvlD,OAAS04V,GAE/C,IAAI0yD,EAAQ/rZ,KAAKssZ,yBAAyBjuW,EAAO11C,GAAI0wV,EAAapxJ,EAAYomE,GAC9E09I,EAAMrrZ,QAAQ2rZ,GACdD,EAAWhsZ,KAAK2rZ,EACnB,CAGD,IAFA,IAAI/1E,EAAO,GACPrnP,EAAay9T,EAAWzrZ,OACnB4U,EAAK,EAAGA,EAAKo5E,EAAYp5E,IAC9BygU,EAAK51U,KAAK2wE,GAAE,SAAS3C,SAAS65H,EAAWskN,sBAE7C,IAAK,IAAIC,EAAM79T,EAAa,EAAG69T,GAAO,EAAGA,IAErC,IADA,IAAIC,EAAsBL,EAAWI,GAAK7rZ,OACjCmN,EAAI,EAAGA,EAAI2+Y,EAAqB3+Y,IACrCkoU,EAAKw2E,GAAK7mZ,OAAOymZ,EAAWI,GAAK1+Y,GAAGtB,SAG5C,MAAO,CACHmlD,SAAUof,GAAE,SAAS3C,SAAS,qCAAqCzoE,OAAOqwU,GAC1Em2E,cAAeA,EAEtB,2CACD,SAA2B9tW,EAAQ4pJ,EAAYsjM,EAAWl9H,EAAcjwN,GAYpE,IAXA,IAAIi7S,EAAc,EACd1qQ,EAAatwC,EAAO19C,OACpBq1U,EAAO,GACPm2E,EAAgB,GAChBF,EAAe7tW,EAAcmtV,EAAY,EACzC8gB,EAAe,SAASp8I,GAIxB,OAHIA,EAAKzwP,UACL2sY,EAAc/rZ,KAAK6vQ,EAAKzwP,UAErBywP,EAAKzjQ,OACf,EACQ7D,EAAI,EAAGA,EAAIgmF,EAAYhmF,IAAK,CAC7BA,EAAI,IACJ0wV,EAAch7S,EAAO11C,EAAI,GAAGu9C,MAAMvlD,OAAS04V,GAE/C,IAAI0yD,EAAQ/rZ,KAAK0sZ,qBAAqBruW,EAAO11C,GAAI0wV,EAAapxJ,EAAYomE,EAAc49I,GACxFj2E,EAAK51U,KAAK2wE,GAAE,QAAQ3C,SAAS65H,EAAWsjN,eAAe5lZ,OAAOomZ,EAAMhoZ,IAAIsoZ,IAC3E,CAED,IADA,IAAIM,EAAe32E,EAAKrnP,EAAa,GAAG3yF,KAAK,MAAM2E,OAC1CmN,EAAI,EAAGA,EAAI6gF,EAAY7gF,IAAK,CACjC,IAAIoiQ,EAAQ8lE,EAAKloU,GAAG9R,KAAK,MACrBo8U,EAAUu0E,EAAez8I,EAAMvvQ,OAC9By9C,IACDg6R,GAAWmzD,IAEXnzD,EAAU,GAAK,IAAM6zE,GAAgB7tW,GAAeuwC,EAAa,IACjEuhL,EAAMhiM,KAAK,UAAWkqQ,EAE7B,CACD,MAAO,CACHzmR,SAAUqkR,EACVm2E,cAAeA,EAEtB,qCACD,SAAqB52T,EAAO8jQ,EAAapxJ,EAAYomE,EAAc49I,GAE/D5yD,GADA4yD,EAAeA,GAAgB,EAO/B,IALA,IAAIF,EAAQ,GAED7lW,EACPqvC,EADArvC,MAEAw0O,EAAYx0O,EAAMvlD,OACbgI,EAAI,EAAGA,EAAI0wV,EAAa1wV,IAC7B,IAAK,IAAImF,EAAI,EAAGA,EAAI4sR,EAAW5sR,IAAK,CAChC,IAAI0sE,EAAazJ,GAAE,SACfk/L,EAAO,CAAC,EACZ,GAAI5B,GAAgBA,EAAa//N,OAAQ,CACrC,IAAIgqJ,EAAkB,CAClB7iJ,MAAOyQ,EAAMp4C,GACbvG,UAAWs6I,GAAiBrnE,GAC5Br5E,MAAOwH,EAAI+xR,EAAY5sR,GAEvBynF,EAAMj7F,OACNg+L,EAAgB7iJ,MAAMn7C,KAAOi7F,EAAMj7F,KAAKwT,IAE5CmiQ,EAAKzwP,SAAW6uP,EAAa//N,OAAOxxC,KAAKuxQ,EAAc/1E,EAC1D,MACG99G,EAAW7zE,KAAKu/C,EAAMp4C,GAAGnH,MACzB6zE,EAAazJ,GAAE,SAASprE,OAAO60E,GAEnCA,EAAWpM,SAAS65H,EAAW2kN,yBAC/B,IAAIriP,OAAW,EAEXA,GADA17G,EAAAA,EAAAA,IAAWo5I,EAAWikN,kBACXjkN,EAAWikN,iBAAiBp+Y,GAE5Bm6L,EAAWikN,iBAE1Bj8I,EAAKzjQ,QAAUukE,GAAE,QAAQ3C,SAASm8F,GAAU5kK,OAAO60E,GACnDuxU,EAAM3rZ,KAAK6vQ,EACd,CAEL,OAAO87I,CACV,OA/UCjC,GAiVN,IACI+C,aAAc,IAAI/C,IC/Vf,SAASgD,GAAmBC,GAC/B,IAAIhkX,EAAWgkX,IACXC,EAAa,CAAC,EAClB,OAAO,SAAS1oZ,GACZ,IAAIgmL,EAAQxyK,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GACpEm1Y,EAAmB,CACnBxoX,SAAK,IAAWngC,EAAOmgC,IAAMl7B,KAAKq7E,KAAKtgF,EAAOmgC,UAAO,EACrDG,UAAM,IAAWtgC,EAAOsgC,KAAOr7B,KAAKq7E,KAAKtgF,EAAOsgC,WAAQ,GAExDsoX,EAAeD,EAAiBxoX,MAAQuoX,EAAWvoX,KAAOwoX,EAAiBroX,OAASooX,EAAWpoX,MAC9F0lJ,GAAS4iO,IAGdF,EAAaC,EACblkX,EAASsnC,SAAS/rE,GACrB,CACJ,CCdM,IAAM6oZ,GAAb,0JACI,YACI,sEACAntZ,KAAKs6J,qBAAsBvhJ,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKs6J,oBAAqB,CAC9D8yP,kBAAkB,GAEzB,KANL,GAA+B/6X,ICA3BjN,GAAY,CAAC,WAAY,YAAa,UAAW,UAwB1CioY,GAAY,CAAC,EACXC,GAAb,0CACI,WAAYxiZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OA3BkB,SAAAkM,GACtB,IAAI,EAOAA,EANAlM,MACcC,EAFlB,EAEQA,SACWoN,EAHnB,EAGQA,UACSswU,EAJjB,EAIQA,QAIR,OAAO7tK,GAAY,EAAG,KAAMziK,EAAWpN,EAAU,EAAG,CAChD+rB,MAAOi5J,GATX,EAKQ1/K,QAKJo4U,QAASA,GAEhB,CAcchqJ,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB4zL,eAAgB1+L,KAAK0+L,gBAE5B,KAhBL,GAAkClS,IAkBlC8gO,GAAa30Y,aAAe00Y,GC3C5B,IAAIjoY,GAAY,CAAC,WAAY,YAAa,UAAW,UA2BxCmoY,GAAb,0CACI,WAAYziZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OA1BkB,SAAAkM,GACtB,IAAI,EAOAA,EANAlM,MACcC,EAFlB,EAEQA,SACWoN,EAHnB,EAGQA,UACSswU,EAJjB,EAIQA,QAIR,OAAO7tK,GAAY,EAAG,KAAMziK,EAAWpN,EAAU,EAAG,CAChD+rB,MAAOi5J,GATX,EAKQ1/K,QAKJo4U,QAASA,GAEhB,CAachqJ,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB4zL,eAAgB1+L,KAAK0+L,gBAE5B,KAhBL,GAAgClS,IAkBhC+gO,GAAW50Y,aAAe00Y,GC7C1B,IAAIjoY,GAAY,CAAC,UAAW,eAAgB,SAmC/BooY,GAAb,0CACI,WAAY1iZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,kCAKI,WACI,IACW/X,EACP3wB,KAAK8K,MADL6lB,MAGOmG,EACP92B,KAAK0+L,eADL5nK,MAEJ,OAAOkmH,GAAgBrsH,EAAOmG,EACjC,GAbL,0BAcI,WACI,IAAIunK,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAlBL,oBAmBI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAxCkB,SAAAkM,GACtB,IAAI,EAMAA,EALAlM,MACa29U,EAFjB,EAEQA,QACcglE,EAHtB,EAGQA,aAEG32X,EACP9f,EADA8f,MAGJ,OAAO2kJ,GAAqB,EADjBgyO,EAAeF,GAAaD,GACF,CACjCn1Y,UAAW,4BACX9H,OAAQymB,EACR2xT,QAASA,GAEhB,CA0BchqJ,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBgsB,MAAO92B,KAAK82B,MACZ4nK,eAAgB1+L,KAAK0+L,gBAE5B,KA1BL,GAAiClS,IA4BjCghO,GAAY70Y,aAhCkB,CAC1BgY,MAAO,EACP88X,cAAc,GCjClB,IAAIroY,GAAY,CAAC,WAAY,YAAa,cAAe,uBAAwB,uBAAwB,wBAAyB,wBAAyB,UAyChJsoY,GAAW,CAClBv1Y,UAAW,GACXw1Y,qBAAsB,EACtBC,sBAAuB,EACvBC,aAAa,GAEJC,GAAb,0CACI,WAAYhjZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,+CAKI,WAII,QADI1oC,KAAK8K,MADL29X,oBAGP,GAVL,+BAWI,WAII,QADIzoY,KAAK8K,MADLijZ,qBAGP,GAhBL,0BAiBI,WACI,IAAI1vN,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GArBL,oBAsBI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAzDkB,SAAAkM,GACtB,IACwBg3Y,EAYpBh3Y,EAZAg3Y,mBACqBC,EAWrBj3Y,EAXAi3Y,oBAFJ,EAaIj3Y,EAVAlM,MACcC,EAJlB,EAIQA,SACWoN,EALnB,EAKQA,UACa01Y,EANrB,EAMQA,YACsBplB,EAP9B,EAOQA,qBACsBklB,EAR9B,EAQQA,qBACuBI,EAT/B,EASQA,sBACuBH,EAV/B,EAUQA,sBACQv9Y,EAXhB,EAWQA,OAGR,OAAOuqK,GAAY,EAAG,KAAMziK,EAAW,CAAC61Y,GAAsBvyO,GAAqB,EAAG+xO,GAAa,CAC/F78X,MAAOg9X,EACPllE,QAASggD,EACTglB,aAAcI,IACd9iZ,EAAUkjZ,GAAuBxyO,GAAqB,EAAG+xO,GAAa,CACtE78X,MAAOi9X,EACPnlE,QAASslE,EACTN,aAAcI,KACb,EAAG,CACJ/2X,MAAOi5J,GAAgB1/K,IAE9B,CA+BcouL,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBkjZ,mBAAoBhuZ,KAAKguZ,mBACzBC,oBAAqBjuZ,KAAKiuZ,oBAC1BvvN,eAAgB1+L,KAAK0+L,gBAE5B,KA9BL,GAAyBlS,IAgCzBshO,GAAIn1Y,aAAe+0Y,GC/EnB,IAAItoY,GAAY,CAAC,aAAc,WAAY,YAAa,SAAU,cAAe,uBAAwB,uBAAwB,wBAAyB,wBAAyB,UAuCxK8oY,GAAkBlwZ,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BkpN,IAAW1vZ,OAAOwmM,0BAA0B,CAC/ImpN,qBAAsB,EACtBC,sBAAuB,EACvBO,WAAY,MAEHC,GAAb,0CACI,WAAYtjZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,kCAMI,WACI,IACYx0K,EACRxsB,KAAK8K,MADL0hB,OAGOsK,EACP92B,KAAK0+L,eADL5nK,MAEJ,OAAOimH,GAAiBvwH,EAAQsK,EACnC,GAdL,mBAeI,WACI,IACe3e,EACXnY,KAAK8K,MADLqN,UAEJ,MAAO,4BAA4BlI,OAAOkI,EAC7C,GApBL,wBAqBI,WAAmB,WACf,YAAI,IAAWnY,KAAKghM,cAAcqtN,aACvBruZ,KAAKghM,cAAcqtN,aAEvBruZ,KAAKghM,cAAcqtN,aAAgB,WACtC,IACgBF,EACZ,EAAKrjZ,MADLqjZ,WAEJ,OAAO,QAAItpZ,MAAMspZ,GACpB,CALyC,EAM7C,GA/BL,0BAgCI,WACI,IAAI9vN,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GApCL,iCAqCI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAMqjZ,aAAe3zO,EAAU2zO,aACpCnuZ,KAAKghM,cAAcqtN,kBAAe,EAEzC,GAzCL,oBA0CI,WACI,IAAIvjZ,EAAQ9K,KAAK8K,MACjB,OAvEkB,SAAAkM,GACtB,IACa2a,EAST3a,EATA2a,QADJ,EAUI3a,EARAlM,MAC0B29X,EAH9B,EAGQA,qBACsBklB,EAJ9B,EAIQA,qBACuBI,EAL/B,EAKQA,sBACuBH,EAN/B,EAMQA,sBAEG92X,EAEP9f,EAFA8f,MACcu3X,EACdr3Y,EADAq3Y,aAEJ,OAAO5yO,GAAqB,EAAGqyO,GAAK,CAChCz9Y,OAAQymB,EACR3e,UAAWwZ,EACXg8X,qBAAsBA,EACtBC,sBAAuBA,EACvBnlB,qBAAsBA,EACtBslB,sBAAuBA,EACvBhjZ,SAAUsjZ,EAAatqZ,KAAI,SAACjF,EAAGqC,GAAJ,OAAcs6K,GAAqB,EAAG+xO,GAAa,KAAMrsZ,EAAM7D,WAA/D,KAElC,CAkDcmhM,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBgsB,MAAO92B,KAAK82B,MACZnF,QAAS3xB,KAAK2xB,QACd08X,aAAcruZ,KAAKquZ,aACnB3vN,eAAgB1+L,KAAK0+L,gBAE5B,KAnDL,GAAgClS,IAqDhC4hO,GAAWz1Y,aAAeu1Y,GCjG1B,IAAI9oY,GAAY,CAAC,yBAA0B,WAAY,YAAa,SAAU,uBAAwB,uBAAwB,wBAAyB,wBAAyB,WAAY,sBAAuB,oBAAqB,SAiE3NkpY,GAAb,0CACI,WAAYxjZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAK8nR,WjSyxBF,CACH/2S,QAAS,MiS7xBM,CAIlB,CALL,kCAMI,WACI,IAAI,EAGAzZ,KAAK8K,MAFG0hB,EADZ,EACIA,OACOmE,EAFX,EAEIA,MAGOmG,EACP92B,KAAK0+L,eADL5nK,MAEAy3X,EAAcxxQ,GAAiBvwH,EAAQsK,GAC3C,OAAOkmH,GAAgBrsH,EAAO49X,EACjC,GAhBL,4BAiBI,WAII,QADIvuZ,KAAK8K,MADL0jZ,mBAGP,GAtBL,+BAuBI,WAII,QADIxuZ,KAAK8K,MADL2jZ,sBAGP,GA5BL,0BA6BI,WACI,IAAIpwN,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAjCL,oBAkCI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAnFkB,SAAAkM,GACtB,IACyB03Y,EAerB13Y,EAfA03Y,oBACkBC,EAclB33Y,EAdA23Y,iBAFJ,EAgBI33Y,EAbAlM,MAC4B2jZ,EAJhC,EAIQA,uBACU1jZ,EALlB,EAKQA,SACWoN,EANnB,EAMQA,UACsBswX,EAP9B,EAOQA,qBACsBklB,EAR9B,EAQQA,qBACuBI,EAT/B,EASQA,sBACuBH,EAV/B,EAUQA,sBACUgB,EAXlB,EAWQA,SACqBJ,EAZ7B,EAYQA,oBACmBK,EAb3B,EAaQA,kBAEG/3X,EACP9f,EADA8f,MAEJ,OAAO8jJ,GAAY,EAAG,QAASziK,EAAWyiK,GAAY,EAAG,QAAS,KAAM,CAAC+zO,GAAoBlzO,GAAqB,EAAG2yO,GAAY,CAC7H5hY,OAAQgiY,EACRL,WAAYU,EACZlB,qBAAsBA,EACtBC,sBAAuBA,EACvBnlB,qBAAsBA,EACtBslB,sBAAuBA,IACvBhjZ,EAAU2jZ,GAAuBjzO,GAAqB,EAAG2yO,GAAY,CACrE5hY,OAAQiiY,EACRN,WAAYU,EACZlB,qBAAsBA,EACtBC,sBAAuBA,EACvBnlB,qBAAsBA,EACtBslB,sBAAuBA,KACtB,GAAI,EAAG,CACRj3X,MAAOi5J,GAAgBj5J,IACxB,KAAM83X,EACZ,CAgDcnwN,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB0lT,WAAYxwT,KAAKwwT,WACjB15R,MAAO92B,KAAK82B,MACZ63X,iBAAkB3uZ,KAAK2uZ,iBACvBD,oBAAqB1uZ,KAAK0uZ,oBAC1BhwN,eAAgB1+L,KAAK0+L,gBAE5B,KA5CL,GAA2BlS,IA8C3B8hO,GAAM31Y,aAzDkB,CACpBR,UAAW,GACXq2Y,oBAAqB,EACrBC,uBAAwB,EACxBd,qBAAsB,EACtBC,sBAAuB,EACvBiB,kBAAmB,GC9DhB,IAAIC,GACY,GCCnB1pY,GAAY,CAAC,SAAU,YAAa,WAAY,YAAa,uBAAwB,UAAW,aAAc,SAAU,QAAS,mBAAoB,kBAAmB,YAAa,QAa9K2pY,GAAgB,CACvB52Y,UAAW,GACX+kI,kBAAkB,EAClBC,iBAAiB,EACjBr3D,UAAW9nF,OAAO8iM,OAAO,IAAIh+L,MAC7BijF,QAAS/nF,OAAO8iM,OAAO,IAAIh+L,MAC3BgpH,QAAQ,EACRnlH,KAAM,GACNxF,MAAO,EACP6tZ,qBAAsBhxZ,OAAO8iM,OAAO,CAChCxmM,KAAM,CAAC,EACP6G,MAAO,KAGF8tZ,GAAb,0CACI,WAAYnkZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,oCAKI,WACI,IAAI,EAIA1oC,KAAK8K,MAHMqN,EADf,EACIA,UACkB+kI,EAFtB,EAEIA,iBACiBC,EAHrB,EAGIA,gBAEJ,OAAOF,GAAoBC,EAAkBC,EAAiBhlI,EACjE,GAZL,0BAaI,WACI,IAAIkmL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAjBL,oBAkBI,WACI,IApCkB4iL,EAoCdl9L,EAAQ9K,KAAK8K,MACjB,OArC+B8vK,GAAY,EAAG,MAA5BotB,EAqCE,CAChBl9L,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpB6mB,QAAS3xB,KAAK2xB,QACd+sK,eAAgB1+L,KAAK0+L,iBAxCqC/sK,QAASq2K,EAAUl9L,MAAMC,SAAU,EAAG,CACxG,aAAci9L,EAAUl9L,MAAMokZ,WAyC7B,KAzBL,GAA8B1iO,IA2B9ByiO,GAASt2Y,aAAeo2Y,GCtDxB,IAAI3pY,GAAY,CAAC,SAAU,YAAa,WAAY,YAAa,uBAAwB,mBAAoB,UAAW,kBAAmB,aAAc,SAAU,QAAS,mBAAoB,YAAa,kBAAmB,aAAc,aAAc,YAAa,OAAQ,SA0CtQ+pY,GAAyBnxZ,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BuqN,IAAgB/wZ,OAAOwmM,0BAA0B,CAC3J4qN,YAAY,EACZ56I,OAAO,EACP66I,iBAAiB,EACjB1pL,YAAY,EACZhsB,WAAW,MAGF21M,GAAb,0CACI,WAAYxkZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,oCAMI,WAAc,MACN,EAKAhhM,KAAK8K,MAJGghH,EADZ,EACIA,OACW3zG,EAFf,EAEIA,UACWwhM,EAHf,EAGIA,UACYgsB,EAJhB,EAIIA,WAEJ,OAAOnpF,IAAc,GACjB,sCAAsC,EACtC,oCAAqC1wB,IAFpB,UF9DM,gCEiEGA,IAHT,UAIjB,mBAAoB65G,IAJH,UAKjB,4BAA6BhsB,IALZ,UAMhBxhM,GAAY,GANI,GAQxB,GArBL,iCAsBI,WAA4B,WACxB,YAAI,IAAWnY,KAAKghM,cAAcuuN,sBACvBvvZ,KAAKghM,cAAcuuN,sBAEvBvvZ,KAAKghM,cAAcuuN,sBAAyB,WAC/C,IAAI,EAQA,EAAKzkZ,MAPGghH,EADZ,EACIA,OACsBkjS,EAF1B,EAEIA,qBACSjpU,EAHb,EAGIA,QACYyyD,EAJhB,EAIIA,WACQn6F,EALZ,EAKIA,OACOl9C,EANX,EAMIA,MACW2kF,EAPf,EAOIA,UAEJ,MAAO,CACHxrF,MAAMye,EAAAA,EAAAA,GAAS,CACX+sE,UAAWA,EACXC,QAASA,EACT1nC,OAAQA,EACRm6F,WAAYn6F,EAASm6F,OAAa,EAClC7xI,KAAM,GACNmlH,SAAUA,QAAU,GACrBkjS,EAAqB10Z,MACxB6G,MAAOA,EAEd,CArBkD,EAsBtD,GAhDL,qBAiDI,WACI,OAAOnB,KAAK8K,MAAM66N,WAlFE,uBAkFmC,CAC1D,GAnDL,0BAoDI,WACI,IAAItnC,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAxDL,iCAyDI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAMghH,SAAW0uD,EAAU1uD,QAAU9rH,KAAK8K,MAAMkkZ,uBAAyBx0O,EAAUw0O,sBAAwBhvZ,KAAK8K,MAAMi7E,UAAYy0F,EAAUz0F,SAAW/lF,KAAK8K,MAAM0tI,aAAegiC,EAAUhiC,YAAcx4I,KAAK8K,MAAMuzC,SAAWm8H,EAAUn8H,QAAUr+C,KAAK8K,MAAM3J,QAAUq5K,EAAUr5K,OAASnB,KAAK8K,MAAMg7E,YAAc00F,EAAU10F,YACnU9lF,KAAKghM,cAAcuuN,2BAAwB,EAElD,GA7DL,oBA8DI,WACI,IAhEUjxN,EAgENxzL,EAAQ9K,KAAK8K,MACjB,OA/FkB,SAAAkM,GACtB,IACek4Y,EASXl4Y,EATAk4Y,UACSv9X,EAQT3a,EARA2a,QACuB49X,EAOvBv4Y,EAPAu4Y,sBAHJ,EAUIv4Y,EANAlM,MACcC,EALlB,EAKQA,SACkBykZ,EAN1B,EAMQpC,iBACkBlwQ,EAP1B,EAOQA,iBACiBC,EARzB,EAQQA,gBAGR,OAAOs+B,GAAqB,EAAGg0O,GAAM,CACjCvyQ,iBAAkBA,EAClBC,gBAAiBA,EACjBhlI,UAAWwZ,EACXu9X,UAAWA,EACXnkZ,SAAU,EAAEykZ,GAAoBzkZ,IAAYykZ,GAAoBA,EAAiB,CAC7EruZ,MAAOouZ,EAAsBpuZ,MAC7B7G,KAAMi1Z,EAAsBj1Z,SAGvC,CAyEcmkM,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBsiZ,kBAnEE9uN,EAmE4BxzL,EAAMsiZ,iBAnElB9uN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAqEzJ3sK,QAAS3xB,KAAK2xB,QACd49X,sBAAuBvvZ,KAAKuvZ,sBAC5BL,UAAWlvZ,KAAKkvZ,UAChBxwN,eAAgB1+L,KAAK0+L,gBAE5B,KAzEL,GAAuClS,IA2EvC8iO,GAAkB32Y,aAAew2Y,GC7HjC,IAAI/pY,GAAY,CAAC,SAAU,YAAa,WAAY,YAAa,uBAAwB,mBAAoB,UAAW,kBAAmB,aAAc,SAAU,QAAS,mBAAoB,YAAa,kBAAmB,aAAc,aAAc,YAAa,OAAQ,SA+CpQsqY,GAAb,0CACI,WAAY5kZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAZUk5K,EAYNxzL,EAAQ9K,KAAK8K,MACjB,OA5CkB,SAAAkM,GACtB,IAAI,EAcAA,EAbAlM,MACeqN,EAFnB,EAEQA,UACkBi1Y,EAH1B,EAGQA,iBACSrnU,EAJjB,EAIQA,QACYyyD,EALpB,EAKQA,WACQn6F,EANhB,EAMQA,OACOl9C,EAPf,EAOQA,MACkB+7I,EAR1B,EAQQA,iBACWy8D,EATnB,EASQA,UACiBx8D,EAVzB,EAUQA,gBACYwoF,EAXpB,EAWQA,WACW7/I,EAZnB,EAYQA,UAGR,OAAO21F,GAAqB,EAAG6zO,GAAmB,CAC9Cn3Y,UAAW,GAAGlI,OH9BgB,kCG8BiB,KAAKA,OAAOkI,GAC3D2tE,UAAWA,EACXC,QAASA,EACT1nC,OAAQA,EACRm6F,WAAYA,EACZ1sB,QAAQ,EACRoxB,iBAAkBA,EAClBC,gBAAiBA,EACjBh8I,MAAOA,EACPisZ,iBAAkBA,EAClBznL,WAAYA,EACZhsB,UAAWA,GAElB,CAcclb,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBsiZ,kBAfE9uN,EAe4BxzL,EAAMsiZ,iBAflB9uN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAiBzJI,eAAgB1+L,KAAK0+L,gBAE5B,KAlBL,GAAqClS,IAoBrCkjO,GAAgB/2Y,aAAew2Y,GCnE/B,IAAI/pY,GAAY,CAAC,YAAa,mBAAoB,6BAA8B,uBAAwB,uBAAwB,wBAAyB,wBAAyB,YAkDvKuqY,GAA4B,CACnCC,SAAU5xZ,OAAO8iM,OAAO,IACxB++L,4BAA4B,EAC5B1nX,UAAW,GACXw1Y,qBAAsB,EACtBC,sBAAuB,GAGdiC,GAAb,0CACI,WAAY/kZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,oCAKI,WACI,IACevwB,EACXnY,KAAK8K,MADLqN,UAEJ,OAAOqkI,IAAe,SAClB,kCAAkC,GACjCrkI,IAAcA,GAEtB,GAbL,0BAcI,WACI,IAAIkmL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAlBL,oBAmBI,WACI,IA7DkB4iL,EAwCR1J,EAqBNxzL,EAAQ9K,KAAK8K,MACjB,OA9DkBk9L,EA8DE,CAChBl9L,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBsiZ,kBAxBE9uN,EAwB4BxzL,EAAMsiZ,iBAxBlB9uN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MA0BzJ3sK,QAAS3xB,KAAK2xB,QACd+sK,eAAgB1+L,KAAK0+L,gBAnEMjjB,GAAqB,EAAGqyO,GAAK,CAChEH,qBAAsB3lN,EAAUl9L,MAAM6iZ,qBACtCC,sBAAuB5lN,EAAUl9L,MAAM8iZ,sBACvCnlB,qBAAsBzgM,EAAUl9L,MAAM29X,qBACtCslB,sBAAuB/lN,EAAUl9L,MAAMijZ,sBACvC51Y,UAAW6vL,EAAUr2K,QACrB5mB,SAAUi9L,EAAUl9L,MAAM8kZ,SAAS7rZ,KAAI,SAAAiT,GACnC,IACa+uE,EAUT/uE,EAVA+uE,QACY+pU,EASZ94Y,EATAwhI,WACQn6F,EAQRrnC,EARAqnC,OACO2xN,EAOPh5P,EAPA7V,MACkB+7I,EAMlBlmI,EANAkmI,iBACWy8D,EAKX3iM,EALA2iM,UACiBx8D,EAIjBnmI,EAJAmmI,gBACYwoF,EAGZ3uN,EAHA2uN,WACKrjO,EAEL0U,EAFA1U,IACWwjF,EACX9uE,EADA8uE,UAEJ,OAAO21F,GAAqB,EAAGg0O,GAAM,CACjCvyQ,kBAAmB8qD,EAAUl9L,MAAM+0X,4BAA8B3iP,EACjEC,iBAAkB6qD,EAAUl9L,MAAM+0X,4BAA8B1iP,EAChEr3D,UAAWA,EACXC,QAASA,EACT1nC,OAAQA,EACRm6F,WAAYs3Q,EACZ3uZ,MAAO6uQ,EACPo9I,iBAAkBplN,EAAUl9L,MAAMsiZ,iBAClCznL,WAAYA,EACZhsB,UAAWA,GACZr3M,EACN,KAsCA,KA5BL,GAA0CkqL,IA8B1CqjO,GAAqBl3Y,aAAeg3Y,GC1F7B,IAAII,GAAc,CACrBH,SAAU5xZ,OAAO8iM,OAAO,CACpBkvN,YAAa,GACbvnB,qBAAsB,EACtBslB,sBAAuB,EACvBkC,mBAAoB,EACpBC,sBAAuB,IAE3BvC,qBAAsB,EACtBC,sBAAuB,EACvBY,oBAAqB,EACrBC,uBAAwB,EACxB0B,mBAAmB,EACnBC,6BAA6B,GCX7BhrY,GAAY,CAAC,oBAAqB,8BAA+B,yBAA0B,mBAAoB,mBAAoB,uBAAwB,wBAAyB,WAAY,sBAAuB,WAAY,SA8C5NirY,GAAmBN,GAKjBO,GAAb,0CACI,WAAYxlZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,4CAMI,WACI,MAAO,CAAChT,KACX,GARL,2BASI,WAAsB,WAClB,YAAI,IAAWhuL,KAAKghM,cAAcuvN,gBACvBvwZ,KAAKghM,cAAcuvN,gBAEvBvwZ,KAAKghM,cAAcuvN,gBAAyB,EAAKzlZ,MAAM8kZ,SAASI,YAAY,GAAGQ,WACzF,GAdL,4BAeI,WACI,OAAOxwZ,KAAKuwZ,qBAAkB,EAASzB,EAC1C,GAjBL,0BAkBI,WACI,IAAIzwN,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAtBL,iCAuBI,SAAoBo1J,EAAWsM,EAAW3gI,IACtC,mEACInmD,KAAK8K,MAAM8kZ,WAAap1O,EAAUo1O,WAClC5vZ,KAAKghM,cAAcuvN,qBAAkB,EAE5C,GA5BL,oBA6BI,WACI,IA/BUjyN,EA+BNxzL,EAAQ9K,KAAK8K,MACjB,OA9DkB,SAAAkM,GACtB,IACqBu5Y,EAQjBv5Y,EARAu5Y,gBACkBE,EAOlBz5Y,EAPAy5Y,iBAFJ,EASIz5Y,EANAlM,MACsBsiZ,EAJ1B,EAIQA,iBACUwB,EALlB,EAKQA,SACUgB,EANlB,EAMQA,SACOj/X,EAPf,EAOQA,MAGR,OAAO8qJ,GAAqB,EAAG6yO,GAAO,CAClCn2Y,UAAW,6BACXqU,OAAQikY,EACR9/X,MAAOA,EACPi+X,SAAUA,EACV7jZ,SAAU0wK,GAAqB,EAAGo0O,GAAsB,CACpDD,SAAUW,EACV5C,qBAAsBiC,EAASjC,qBAC/BC,sBAAuBgC,EAAShC,sBAChCnlB,qBAAsBmnB,EAASnnB,qBAC/BslB,sBAAuB6B,EAAS7B,sBAChCX,iBAAkBA,KAG7B,CAqCc3uN,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBsiZ,kBAlCE9uN,EAkC4BxzL,EAAMsiZ,iBAlClB9uN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAoCzJiyN,gBAAiBvwZ,KAAKuwZ,gBACtBE,iBAAkBzwZ,KAAKywZ,iBACvB/xN,eAAgB1+L,KAAK0+L,gBAE5B,KAvCL,GAAiC3R,IAyCjCujO,GAAY33Y,aAAe03Y,OCvFNC,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACH57N,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,oBACZpiC,MAAO,CAAC,WAAY,mBAAoB,uBAAwB,wBAAyB,sBAAuB,yBAA0B,oBAAqB,8BAA+B,QAAS,oBAE9M,6BACD,WACI,OAAO4lZ,EACV,OAZgBJ,CAAoBnD,IAczC36O,GAAkB,gBAAiB89O,ICZ5B,IAKMK,GAAb,0CACI,WAAY7lZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,gBAQI,WACI,OAAO5jE,GAAAA,OAA2B,qBACrC,GAVL,0BAWI,WACI,IAAIi0E,EAAcr+L,KAAK8K,MAEvB,OADgBiO,EAAAA,EAAAA,GAAS,CAAC,GCnCnB,SAAmC5D,GAChD,GAAW,MAAPA,EAAa,MAAM,IAAIu0B,UAAU,sBAAwBv0B,EAC/D,CDiCsCy7Y,CAA0BvyN,GAAcA,GAEzE,GAfL,oBAgBI,WACI,IAAIvzL,EAAQ9K,KAAK8K,MACjB,OAvB+B8vK,GAAY,EAAG,MAAO,6BAuBjC,CAChB9vK,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBnE,KAAM3G,KAAK2G,KACX+3L,eAAgB1+L,KAAK0+L,gBA1BoE/3L,KAAM,EA4BtG,KAvBL,GAAsComL,IAyBtC4jO,GAAiBh4Y,aA7BkB,CAAC,MELfg4Y,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACHj8N,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,GACXpiC,MAAO,GAEd,6BACD,WACI,OAAO+lZ,EACV,OAZgBF,CAAyBxmN,IAc9C33B,GAAkB,qBAAsBm+O,ICjBxC,IAAIvrY,GAAY,CAAC,oBAAqB,8BAA+B,yBAA0B,eAAgB,mBAAoB,mBAAoB,uBAAwB,wBAAyB,sBAAuB,WAAY,SAwGhO0rY,GAAqB9yZ,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BurN,IAAc/xZ,OAAOwmM,0BAA0B,CACrJ6pE,aAAcihJ,OAEdtkP,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjByyN,GAAb,0CACI,WAAYjmZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,uCAKI,WAAiB,MAEoB0nX,EAC7BpwZ,KAAK8K,MADLslZ,4BAEJ,OAAO5zQ,IAAc,gBXlHK,+BWmHE,IADP,UAEjB,mCAAoC4zQ,GAFnB,GAIxB,GAbL,0BAcI,WACI,IAAI/xN,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAlBL,oBAmBI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAnGkB,SAAAkM,GACtB,IAAI,EAOAA,EANAlM,MACkB2kZ,EAFtB,EAEQphJ,aACkB++I,EAH1B,EAGQA,iBACUwC,EAJlB,EAIQA,SAEQoB,EACZh6Y,EADAg6Y,WAEJ,OAAOj1O,GAAe6zO,EAASI,YAAYjsZ,KAAI,SAAA2gK,GAC3C,IACiB8rP,EAIb9rP,EAJA8rP,YACWS,EAGXvsP,EAHAusP,UACsBnxB,EAEtBp7N,EAFAo7N,qBACKoxB,EACLxsP,EADApiK,IAEJ,OAAOy5K,GAAe,CAAC+jN,GAAwBrkN,GAAqB,EAAGo0O,GAAsB,CACzFD,SAAUY,EACVpD,iBAAkBA,EAClBvtB,4BAA4B,EAC5B8tB,qBAAsBiC,EAASjC,qBAC/BC,sBAAuBgC,EAAShC,sBAChCnlB,qBAAsBmnB,EAASnnB,qBAC/BslB,sBAAuB6B,EAAS7B,wBAChCkD,EAAUltZ,KAAI,SAAA+hJ,GACd,IACWimQ,EAEPjmQ,EAFAimQ,MACKoF,EACLrrQ,EADAxjJ,IAEJ,OAAOm5K,GAAqB,EAAGqyO,GAAK,CAChC31Y,UAAW64Y,EACXrD,qBAAsBiC,EAASjC,qBAC/BC,sBAAuBgC,EAAShC,sBAChCnlB,qBAAsBmnB,EAASnnB,qBAC/BslB,sBAAuB6B,EAAS7B,sBAChChjZ,SAAUghZ,EAAMhoZ,KAAI,SAAAwiJ,GAChB,IACaxgE,EAcTwgE,EAdAxgE,QACiBspU,EAajB9oQ,EAbA8oQ,gBACYS,EAYZvpQ,EAZA/N,WACQn6F,EAWRkoG,EAXAloG,OACO2xN,EAUPzpH,EAVAplJ,MACkB+7I,EASlBqJ,EATArJ,iBACWy8D,EAQXpzD,EARAozD,UACiBx8D,EAOjBoJ,EAPApJ,gBACYwoF,EAMZp/E,EANAo/E,WACKrjO,EAKLikJ,EALAjkJ,IACY8sZ,EAIZ7oQ,EAJA6oQ,WACWtpU,EAGXygE,EAHAzgE,UACMn/E,EAEN4/I,EAFA5/I,KACO6tQ,EACPjuH,EADAiuH,MAEJ,OAAOi7I,EAAK,CACRvyQ,iBAAkBA,EAClBC,gBAAiBA,EACjBr3D,UAAWA,EACXC,QAASA,EACT1nC,OAAQA,EACRm6F,WAAYs3Q,EACZ3uZ,MAAO6uQ,EACPo9I,iBAAkBA,EAClB9qZ,IAAKA,EACLqE,KAAMA,EACN6tQ,MAAOA,EACP46I,WAAYA,EACZC,gBAAiBA,EACjB1pL,WAAYA,EACZhsB,UAAWA,GAElB,KACFw3M,EACN,KAAI,EAAGD,EACX,IAAG,EACP,CA0BczyN,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,aAAcrjG,GAAYlgK,EAAMujQ,cAChC++I,iBAAkBpiP,GAAYlgK,EAAMsiZ,oBAExC4D,WAAYhxZ,KAAKgxZ,WACjBtyN,eAAgB1+L,KAAK0+L,gBAE5B,KA7BL,GAAmClS,IA+BnCukO,GAAcp4Y,aAAem4Y,GC3I7B,IAAI1rY,GAAY,CAAC,oBAAqB,8BAA+B,yBAA0B,eAAgB,mBAAoB,mBAAoB,uBAAwB,wBAAyB,WAAY,sBAAuB,WAAY,SA6D5OgsY,GAAuBpzZ,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BurN,IAAc/xZ,OAAOwmM,0BAA0B,CACvJ6pE,aAAcihJ,OAKdtkP,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjB+yN,GAAb,0CACI,WAAYvmZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,mBAQI,WAII,OADIhuL,KAAK8K,MADLqlZ,kBAEuB,+BAA4B,CAC1D,GAbL,+BAcI,WACI,IAAImB,EACJ,OAAO,QAAUA,EAAwBtxZ,KAAK8K,MAAM8kZ,SAASpB,2BAAwB,IAAW8C,EAAwBA,EAAwB,CACnJ,GAjBL,kCAkBI,WACI,IAAIC,EACJ,OAAO,QAAUA,EAAyBvxZ,KAAK8K,MAAM8kZ,SAASnB,8BAA2B,IAAW8C,EAAyBA,EAAyB,CACzJ,GArBL,gCAsBI,WACI,IAAIC,EACJ,OAAO,QAAUA,EAAyBxxZ,KAAK8K,MAAM8kZ,SAASjC,4BAAyB,IAAW6D,EAAyBA,EAAyB,CACvJ,GAzBL,iCA0BI,WACI,IAAIC,EACJ,OAAO,QAAUA,EAAyBzxZ,KAAK8K,MAAM8kZ,SAAShC,6BAA0B,IAAW6D,EAAyBA,EAAyB,CACxJ,GA7BL,6BA8BI,WACI,OAAOzxZ,KAAK8K,MAAM8kZ,SAASI,YAAY,GAAGiB,UAAU,GAAGlF,MAAMprZ,MAChE,GAhCL,0BAiCI,WACI,IAAI09L,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GArCL,oBAsCI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAxFkB,SAAAkM,GACtB,IAC4By3Y,EAgBxBz3Y,EAhBAy3Y,uBACS98X,EAeT3a,EAfA2a,QACsBg8X,EActB32Y,EAdA22Y,qBAHJ,EAiBI32Y,EAbAlM,MACiCslZ,EALrC,EAKQA,4BACc/hJ,EANtB,EAMQA,aACkB++I,EAP1B,EAOQA,iBACkB7vQ,EAR1B,EAQQA,iBACUqxQ,EATlB,EASQA,SACUgB,EAVlB,EAUQA,SACOj/X,EAXf,EAWQA,MAEY+tK,EAIhB1nL,EAJA0nL,eACuBkvN,EAGvB52Y,EAHA42Y,sBACqBY,EAErBx3Y,EAFAw3Y,oBACmBK,EACnB73Y,EADA63Y,kBAEJ,OAAO10W,GAAeshI,GAAqB,EAAG6yO,IAAOv1Y,EAAAA,EAAAA,GAAS,CAAC,EAAG2lL,EAAgB,CAC9EkwN,SAAUA,EACVJ,oBAAqBA,EACrBC,uBAAwBA,EACxBd,qBAAsBA,EACtBC,sBAAuBA,EACvBnlB,qBAAsBmnB,EAASnnB,qBAC/BslB,sBAAuB6B,EAAS7B,sBAChCc,kBAAmBA,EACnB12Y,UAAWwZ,EACXhB,MAAOA,EACP5lB,SAAU0wK,GAAqB,EAAGs1O,GAAe,CAC7C1iJ,aAAcA,EACduhJ,SAAUA,EACVxC,iBAAkBA,EAClBO,qBAAsBA,EACtBC,sBAAuBA,EACvBrwQ,iBAAkBA,EAClB6yQ,4BAA6BA,OAGxC,CAgDc3xN,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,aAAcrjG,GAAYlgK,EAAMujQ,cAChC++I,iBAAkBpiP,GAAYlgK,EAAMsiZ,oBAExCz7X,QAAS3xB,KAAK2xB,QACd68X,oBAAqBxuZ,KAAKwuZ,oBAC1BC,uBAAwBzuZ,KAAKyuZ,uBAC7Bd,qBAAsB3tZ,KAAK2tZ,qBAC3BC,sBAAuB5tZ,KAAK4tZ,sBAC5BiB,kBAAmB7uZ,KAAK6uZ,kBACxBnwN,eAAgB1+L,KAAK0+L,gBAE5B,KArDL,GAAyC3R,IAuDzCskO,GAAoB14Y,aAAey4Y,OCtHdC,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACH38N,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,eAAgB,oBAC5BpiC,MAAO,CAAC,eAAgB,WAAY,mBAAoB,uBAAwB,wBAAyB,sBAAuB,yBAA0B,oBAAqB,8BAA+B,QAAS,oBAE9N,6BACD,WACI,OAAO4mZ,EACV,OAZgBL,CAA4BlE,IAcjD36O,GAAkB,wBAAyB6+O,ICnBpC,IAAMM,GAAb,0JACI,YACI,sEACA3xZ,KAAKs6J,qBAAsBvhJ,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKs6J,oBAAqB,CAC9Ds3P,sBAAsB,GAE7B,KANL,GAAuCv/X,ICF5Bw/X,GAAsB,CAC7BC,eAAgB9zZ,OAAO8iM,OAAO,CAC1BixN,gBAAiB,GACjBC,YAAa,IAEjB5zW,aAAa,GCLN6zW,GAAsB,CAC7Bl0Y,GAAI,EACJpX,KAAM,GACNrM,KAAM0D,OAAO8iM,OAAO,CAChB/iL,GAAI,IAER5F,UAAW,ICJXiN,GAAY,CAAC,eAAgB,YAAa,QAAS,OAAQ,KAAM,QAAS,QAyBjE8sY,GAAb,0CACI,WAAYpnZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAZUk5K,EAYNxzL,EAAQ9K,KAAK8K,MACjB,OAzBkB,SAAAk9L,GACtB,IAAImqN,EAAenqN,EAAUl9L,MAAMujQ,aACnC,OAAOzzF,GAAY,EAAG,MAAO,6BAA6B3qK,OAAO+3L,EAAUl9L,MAAMqN,WAAY,GAAG6vL,EAAUl9L,MAAMujQ,cAAgB8jJ,EAAa,CACzI73Z,KAAM,CACFA,KAAM0tM,EAAUl9L,MAAMxQ,KACtByjB,GAAIiqL,EAAUl9L,MAAMiT,GACpB4K,MAAOq/K,EAAUl9L,MAAM6d,MACvBhiB,KAAMqhM,EAAUl9L,MAAMnE,MAE1BxF,MAAO6mM,EAAUl9L,MAAM3J,SACtB6mM,EAAUl9L,MAAMujQ,cAAgBzzF,GAAY,EAAG,MAAO,oCAAqCotB,EAAUl9L,MAAMnE,KAAM,IAAK,EAC9H,CAcc83L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,cAfE/vE,EAewBxzL,EAAMujQ,aAfd/vE,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAiBzJI,eAAgB1+L,KAAK0+L,gBAE5B,KAlBL,GAA4ClS,IAoB5C0lO,GAAuBv5Y,aAAes5Y,GC/C/B,IAAIG,GAAqB,CAC5BthL,WAAY9yO,OAAO8iM,OAAO,IAC1B3oL,UAAW,ICAXiN,GAAY,CAAC,eAAgB,YAAa,cAiCjC0oY,GAAb,0CACI,WAAYhjZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IA7BkB4iL,EAiBR1J,EAYNxzL,EAAQ9K,KAAK8K,MACjB,OA9BkBk9L,EA8BE,CAChBl9L,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,cAfE/vE,EAewBxzL,EAAMujQ,aAfd/vE,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAiBzJI,eAAgB1+L,KAAK0+L,gBAlCM9jB,GAAY,EAAG,MAAO,0BAA0B3qK,OAAO+3L,EAAUl9L,MAAMqN,WAAY6vL,EAAUl9L,MAAMgmO,WAAW/sO,KAAI,SAACiT,EAAM7V,GAC5J,IACWwnB,EAKP3R,EALA2R,MACMruB,EAIN0c,EAJA1c,KACIyjB,EAGJ/G,EAHA+G,GACKzb,EAEL0U,EAFA1U,IACMqE,EACNqQ,EADArQ,KAEJ,OAAO80K,GAAqB,EAAGy2O,GAAwB,CACnDvrZ,KAAMA,EACNoX,GAAIA,EACJzjB,KAAMA,EACN6G,MAAOA,EACPwnB,MAAOA,EACP0lP,aAAcrmE,EAAUl9L,MAAMujQ,cAC/B/rQ,EACN,IAAG,EAoBC,KAlBL,GAAyBkqL,IAoBzBshO,GAAIn1Y,aAAey5Y,GCpDZ,IAAIC,GAAwBR,GCD/BzsY,GAAY,CAAC,YAAa,aAAc,cAAe,iBAAkB,SAAU,uBAAwB,UAsCpGktY,GAAgCD,GAE9BE,GAAb,0CACI,WAAYznZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,kCAKI,WACI,IAAI,EAGA1oC,KAAK8K,MAFG0hB,EADZ,EACIA,OACQnc,EAFZ,EAEIA,OAEJ,OAAO0sI,GAAiBvwH,EAAQnc,EACnC,GAXL,0BAYI,WACI,IAAIguL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAhBL,oBAiBI,WACI,IAnBUk5K,EAmBNxzL,EAAQ9K,KAAK8K,MACjB,OAtCkB,SAAAkM,GACtB,IAAI,EAQAA,EAPAlM,MACeqN,EAFnB,EAEQA,UACYq4S,EAHpB,EAGQA,WACgBshG,EAJxB,EAIQA,eACsBF,EAL9B,EAKQA,qBAEG96X,EACP9f,EADA8f,MAEJ,OAAO8jJ,GAAY,EAAG,MAAOziK,EAAWyiK,GAAY,EAAG,MAAO,oCAAqCk3O,EAAeC,gBAAgBhuZ,KAAI,SAAAwxF,GAAK,OAAIkmF,GAAqB,EAAGqyO,GAAK,CACxKh9K,WAAYv7I,EACZ84K,aAAcujJ,GACfr8T,EAAM,GAAGjzF,IAH+H,IAGxH,GAAI,EAAG,CACtBw0B,MAAOi5J,GAAgBj5J,IACxB,KAAM05R,EACZ,CAsBc/xH,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB8mZ,sBAtBEtzN,EAsBgCxzL,EAAM8mZ,qBAtBtBtzN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAwBzJxnK,MAAO92B,KAAK82B,MACZ4nK,eAAgB1+L,KAAK0+L,gBAE5B,KA1BL,GAA8ClS,IA4B9C+lO,GAAyB55Y,aAAe25Y,GCpExC,IAAIltY,GAAY,CAAC,eAAgB,YAAa,UAAW,QAAS,OAAQ,KAAM,QAAS,mBAAoB,kBAAmB,QAwCrHotY,GAAgCx0Z,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BytN,IAAsBj0Z,OAAOwmM,0BAA0B,CACxKtnD,kBAAkB,EAClBC,iBAAiB,EACjBsrM,QAAS,MAGAgqE,GAAb,0CACI,WAAY3nZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,oCAKI,WACI,IAAI,EAIA1oC,KAAK8K,MAHMqN,EADf,EACIA,UACkB+kI,EAFtB,EAEIA,iBACiBC,EAHrB,EAGIA,gBAEJ,OAAOX,IAAe,SAClB,6BAA6B,EAC7B,gCAAiCU,EACjC,+BAAgCC,GAC/BhlI,IAAcA,GAEtB,GAjBL,0BAkBI,WACI,IAAIkmL,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAtBL,oBAuBI,WACI,IAzBUk5K,EAyBNxzL,EAAQ9K,KAAK8K,MACjB,OAxDkB,SAAAkM,GACtB,IACa2a,EAUT3a,EAVA2a,QADJ,EAWI3a,EATAlM,MACkBqnZ,EAHtB,EAGQ9jJ,aACSo6E,EAJjB,EAIQA,QACO9/T,EALf,EAKQA,MACMruB,EANd,EAMQA,KACIyjB,EAPZ,EAOQA,GACO5c,EARf,EAQQA,MACMwF,EATd,EASQA,KAGR,OAAOi0K,GAAY,EAAG,KAAMjpJ,EAASipJ,GAAY,EAAG,MAAO,oCAAqC,GAAGu3O,GAAgBA,EAAa,CAC5H73Z,KAAM,CACFA,KAAMA,EACNyjB,GAAIA,EACJ4K,MAAOA,EACPhiB,KAAMA,GAEVxF,MAAOA,KACNgxZ,GAAgBv3O,GAAY,EAAG,MAAO,KAAMj0K,EAAM,IAAK,GAAI,EAAG,CAC/D8hV,QAASA,GAEhB,CAgCchqJ,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,cA5BE/vE,EA4BwBxzL,EAAMujQ,aA5Bd/vE,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MA8BzJ3sK,QAAS3xB,KAAK2xB,QACd+sK,eAAgB1+L,KAAK0+L,gBAE5B,KAhCL,GAA8ClS,IAkC9CimO,GAAyB95Y,aAAe65Y,GChFxC,IAAIptY,GAAY,CAAC,eAAgB,YAAa,cAgDjC0oY,GAAb,0CACI,WAAYhjZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,2CAKI,WACI,IAAI21J,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GATL,oBAUI,WACI,IAZUk5K,EAYNxzL,EAAQ9K,KAAK8K,MACjB,OA7CkB,SAAAkM,GACtB,IAAI,EAMAA,EALAlM,MACkBujQ,EAFtB,EAEQA,aACWl2P,EAHnB,EAGQA,UACY24N,EAJpB,EAIQA,WAGR,OAAOl2D,GAAY,EAAG,KAAM,0BAA0B3qK,OAAOkI,GAAY24N,EAAW/sO,KAAI,SAAC2gK,EAAOvjK,GAC5F,IACasnV,EAQT/jL,EARA+jL,QACO9/T,EAOP+7I,EAPA/7I,MACMruB,EAMNoqK,EANApqK,KACIyjB,EAKJ2mJ,EALA3mJ,GACkBm/H,EAIlBwnB,EAJAxnB,iBACiBC,EAGjBunB,EAHAvnB,gBACK76I,EAELoiK,EAFApiK,IACMqE,EACN+9J,EADA/9J,KAEJ,OAAO80K,GAAqB,EAAGg3O,GAA0B,CACrD9rZ,KAAMA,EACNoX,GAAIA,EACJzjB,KAAMA,EACN6G,MAAOA,EACPwnB,MAAOA,EACP8/T,QAASA,EACTvrM,mBAAoBA,EACpBC,kBAAmBA,EACnBkxH,aAAcA,GACf/rQ,EACN,IAAG,EACP,CAccm8L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,cAfE/vE,EAewBxzL,EAAMujQ,aAfd/vE,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAiBzJI,eAAgB1+L,KAAK0+L,gBAE5B,KAlBL,GAAyBlS,IAoBzBshO,GAAIn1Y,aAAey5Y,GCpEnB,IAAIhtY,GAAY,CAAC,YAAa,aAAc,cAAe,iBAAkB,SAAU,uBAAwB,UA8BpGstY,GAAkCL,GAEhCM,GAAb,0CACI,WAAY7nZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,4CAMI,WAAsB,WAClB,YAAI,IAAWhhM,KAAKghM,cAAc+wN,gBACvB/xZ,KAAKghM,cAAc+wN,gBAEvB/xZ,KAAKghM,cAAc+wN,gBAAmB,WACzC,IACoBD,EAChB,EAAKhnZ,MADLgnZ,eAGaE,EAEbF,EAFAE,YACiBD,EACjBD,EADAC,gBAEAa,EAAWb,EAAgBc,aAAY,SAACC,EAAiBC,EAAW5xZ,GACpE,IAAI6xZ,EAAeF,EACfG,EAAyBF,EAAUpyZ,OACnCuyZ,EAAkB/xZ,IAAU4wZ,EAAgBpxZ,OAAS,EAAIqxZ,EAAcc,EAAgB3xZ,EAAQ,GAE/FgyZ,GAD0BhyZ,IAAU4wZ,EAAgBpxZ,OAAS,EAAIsyZ,EAAyBlB,EAAgB5wZ,EAAQ,GAAGR,QAC1EsyZ,EAE/C,OADAD,EAAa7xZ,GAASgyZ,EAAiBD,EAChCF,CACV,IARc,QAQR,IAAInuZ,MAAMktZ,EAAgBpxZ,UACjC,OAAOoxZ,EAAgBhuZ,KAAI,SAACqvZ,EAAiBjyZ,GACzC,IAAIsnV,EAAUmqE,EAASzxZ,GACvB,OAAOiyZ,EAAgBrvZ,KAAI,SAAAmxV,GAAS,OAAIn8U,EAAAA,EAAAA,GAAS,CAAC,EAAGm8U,EAAW,CAC5DzM,QAASA,GADuB,GAGvC,GACJ,CAvB4C,EAwBhD,GAlCL,0BAmCI,WACI,IAAIpqJ,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAvCL,iCAwCI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAMgnZ,iBAAmBt3O,EAAUs3O,iBACxC9xZ,KAAKghM,cAAc+wN,qBAAkB,EAE5C,GA5CL,oBA6CI,WACI,IA/CUzzN,EA+CNxzL,EAAQ9K,KAAK8K,MACjB,OA7DkB,SAAAkM,GACtB,IACqB+6Y,EAIjB/6Y,EAJA+6Y,gBAE0BH,EAE1B56Y,EAHAlM,MACI8mZ,qBAGR,OAAO71O,GAAeg2O,EAAgBhuZ,KAAI,SAAAwxF,GAAK,OAAIkmF,GAAqB,EAAGqyO,GAAK,CAC5Eh9K,WAAYv7I,EACZ84K,aAAcujJ,GACfr8T,EAAM,GAAGjzF,IAHmC,IAG5B,EACtB,CAkDcm8L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB8mZ,sBAlDEtzN,EAkDgCxzL,EAAM8mZ,qBAlDtBtzN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAoDzJyzN,gBAAiB/xZ,KAAK+xZ,gBACtBrzN,eAAgB1+L,KAAK0+L,gBAE5B,KAtDL,GAAgDlS,IAwDhDmmO,GAA2Bh6Y,aAAe+5Y,GCxF1C,IAAIttY,GAAY,CAAC,YAAa,aAAc,cAAe,mBAAoB,iBAAkB,SAAU,SAAU,wBAmD1GiuY,GAAkBr1Z,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BqtN,IAAsB7zZ,OAAOwmM,0BAA0B,CAC1JnmJ,OAAQrgD,OAAO8iM,OAAO,IACtBvjD,iBAAkBb,OAMT42Q,GAAb,0CACI,WAAYxoZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,4BAQI,WACI,IAAI,EAGAhuL,KAAK8K,MAFayyI,EADtB,EACIA,iBACQl/F,EAFZ,EAEIA,OAEJ,OAAOi/F,GAA0Bj/F,EAAQk/F,EAC5C,GAdL,0BAeI,WACI,IAAI8gD,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAnBL,oBAoBI,WACI,IAtBUk5K,EAsBNxzL,EAAQ9K,KAAK8K,MACjB,OA1DkB,SAAAkM,GACtB,IACsBu8Y,EASlBv8Y,EATAu8Y,iBADJ,EAUIv8Y,EARAlM,MACeqN,EAHnB,EAGQA,UACYq4S,EAJpB,EAIQA,WACgBshG,EALxB,EAKQA,eACQtlY,EANhB,EAMQA,OACsBolY,EAP9B,EAOQA,qBAEYlzN,EAChB1nL,EADA0nL,eAEJ,OAA0BjjB,GAAqB,EAAxC83O,EAA2ChB,GAOrBI,GAP+C,CACxEnmY,OAAQA,EACRolY,qBAAsBA,EACtBz5Y,UAAWA,EACX25Y,eAAgBA,EAChBthG,WAAYA,EACZngT,OAAQquL,EAAe5nK,OAS9B,CA+Bc2nK,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB8mZ,sBAzBEtzN,EAyBgCxzL,EAAM8mZ,qBAzBtBtzN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MA2BzJi1N,iBAAkBvzZ,KAAKuzZ,iBACvB70N,eAAgB1+L,KAAK0+L,gBAE5B,KA7BL,GAAgC3R,IA+BhCumO,GAAW36Y,aAAe06Y,OCrFLC,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACH5+N,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,wBACZpiC,MAAO,CAAC,SAAU,mBAAoB,iBAAkB,cAAe,SAAU,YAAa,wBAErG,6BACD,WACI,OAAO0oZ,EACV,OAZgBF,CAAmB3B,IAcxCn/O,GAAkB,eAAgB8gP,ICnB3B,IAAMG,GAAb,0JACI,YACI,sEACAzzZ,KAAKs6J,qBAAsBvhJ,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKs6J,oBAAqB,CAC9Do5P,gBAAgB,EAChB9B,sBAAsB,EACtB+B,kBAAkB,EAClBC,kBAAkB,GAEzB,KATL,GAAiCvhY,ICA7BjN,GAAY,CAAC,YAAa,QAyBjByuY,GAAb,0CACI,WAAY/oZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,sCAMI,WAAgB,WACZ,YAAI,IAAWhhM,KAAKghM,cAAcmoG,UACvBnpS,KAAKghM,cAAcmoG,UAEvBnpS,KAAKghM,cAAcmoG,UAAa,WACnC,IACUxiS,EACN,EAAKmE,MADLnE,KAEJ,OAAOA,EAAOA,EAAKtE,MAAM,KAAO,CAAC,GACpC,CALsC,EAM1C,GAhBL,0BAiBI,WACI,IAAIg8L,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GArBL,iCAsBI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAMnE,OAAS6zK,EAAU7zK,OAC9B3G,KAAKghM,cAAcmoG,eAAY,EAEtC,GA1BL,oBA2BI,WACI,IAAIr+R,EAAQ9K,KAAK8K,MACjB,OA3CkB,SAAAkM,GACtB,IAAI,EAMAA,EALAlM,MACegpZ,EAFnB,EAEQA,UACMntZ,EAHd,EAGQA,KAEOwiS,EACXnyR,EADAmyR,UAEJ,OAAOptH,GAAe+3O,EAAY3qH,EAAUplS,KAAI,SAAA2lF,GAAI,OAAIkxF,GAAY,EAAG,OAAQ,sCAAuClxF,EAAM,EAAxE,IAA8E/iF,EAAM,EAC3I,CAkCc83L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,GACpBq+R,UAAWnpS,KAAKmpS,UAChBzqG,eAAgB1+L,KAAK0+L,gBAE5B,KAlCL,GAAoClS,IAoCpCqnO,GAAel7Y,aAxCkB,CAC7BhS,KAAM,GACNmtZ,WAAW,GCvBf,IAAI1uY,GAAY,CAAC,SAAU,YAAa,WAAY,YAAa,UAAW,uBAAwB,mBAAoB,UAAW,aAAc,SAAU,QAAS,mBAAoB,kBAAmB,qBAAsB,gBAAiB,YAAa,YAAa,OAAQ,mBAAoB,SAkE7R2uY,GAAsB/1Z,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0BuqN,IAAgB/wZ,OAAOwmM,0BAA0B,CACxJgwE,OAAO,EACPi0E,QAAS,EACTurE,eAAe,EACfF,WAAW,EACXG,oBAAoB,MAEpBjpP,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjB41N,GAAb,0CACI,WAAYppZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,oCAKI,WACI,IAAI,EAMA1oC,KAAK8K,MALMqN,EADf,EACIA,UACkB+kI,EAFtB,EAEIA,iBACiBC,EAHrB,EAGIA,gBACe62Q,EAJnB,EAIIA,cACOx/I,EALX,EAKIA,MAEA2/I,EAAc33Q,IAAe,SAC7B,kCAAkC,EAClC,sCAAsC,EACtC,8CAA+Cg4H,EAC/C,sCAAuCw/I,GACtC77Y,IAAcA,IAEnB,OAAO8kI,GAAoBC,EAAkBC,EAAiBg3Q,EACjE,GArBL,uBAsBI,WACI,IAAI,EAIAn0Z,KAAK8K,MAHa6oZ,EADtB,EACIA,iBACoBM,EAFxB,EAEIA,mBACkBL,EAHtB,EAGIA,iBAEJ,OAAQK,KAAwBN,GAAoBM,KAAwBL,CAC/E,GA7BL,0BA8BI,WACI,IAAIv1N,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAlCL,oBAmCI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAtFkB,SAAAkM,GACtB,IACa2a,EAcT3a,EAdA2a,QADJ,EAeI3a,EAbAlM,MACa29U,EAHjB,EAGQA,QACkB2rE,EAJ1B,EAIQT,iBACYn7Q,EALpB,EAKQA,WACQn6F,EANhB,EAMQA,OACOl9C,EAPf,EAOQA,MACoB8yZ,EAR5B,EAQQA,mBACWH,EATnB,EASQA,UACWhuU,EAVnB,EAUQA,UACMn/E,EAXd,EAWQA,KACkB0tZ,EAZ1B,EAYQT,iBAIR,OAAOh5O,GAAY,EAAG,KAAMjpJ,EADxB3a,EADAs9Y,YAE+Cv4O,GAAe,CAACk4O,GAAsBI,GAAoBA,EAAiB,CAC1H/5Z,KAAM,CACF25B,KAAM6xD,EACNn/E,KAAMA,EACN03C,OAAQA,EACRm6F,WAAYA,GAEhBr3I,MAAOA,KACN8yZ,GAAsBG,GAAoBA,EAAiB,CAC5D95Z,KAAM,CACF25B,KAAM6xD,EACNn/E,KAAMA,EACN03C,OAAQA,EACRm6F,WAAYA,GAEhBr3I,MAAOA,KACN,GAAKs6K,GAAqB,EAAGo4O,GAAgB,CAC9CC,UAAWA,EACXntZ,KAAMA,IACN,EAAG,CACH8hV,QAASA,EACT/4N,MAAO/oH,GAEd,CA8Cc83L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB8oZ,iBAAkB5oP,GAAYlgK,EAAM8oZ,kBACpCD,iBAAkB3oP,GAAYlgK,EAAM6oZ,oBAExChiY,QAAS3xB,KAAK2xB,QACd2iY,YAAat0Z,KAAKs0Z,YAClB51N,eAAgB1+L,KAAK0+L,gBAE5B,KA9CL,GAAoClS,IAgDpC0nO,GAAev7Y,aAAeo7Y,GCvH9B,IAOA,GAPmB,WACf,IAAI17Y,EAAQoB,KACZ,MAAO,CACHikL,UAAWA,GAAUrlL,GACrB6kL,WAAYA,GAAW7kL,GAE9B,ECTG+M,GAAY,CAAC,mBAAoB,iBAAkB,cAAe,mBAAoB,SAAU,oBAuBpF83K,GACZ0yH,KADA1yH,WAuDOq3N,GAAwB,CAC/Bh3Q,iBAAkB,aAClBn/F,aAAa,EACbC,OAAQrgD,OAAO8iM,OAAO,KAEtB91B,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjBk2N,GAAb,0CACI,WAAY1pZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,iDAKI,WACI,IAAI,EAIA1oC,KAAK8K,MAHQszC,EADjB,EACIA,YACkBm/F,EAFtB,EAEIA,iBACQl/F,EAHZ,EAGIA,OAEJ,OAAOm/F,GAA4Bn/F,EAAQk/F,KAAsBn/F,CACpE,GAZL,0BAaI,WACI,IAAIigJ,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAjBL,oBAkBI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OA/EkB,SAAAkM,GACtB,IAC0B0mI,EAKtB1mI,EALA0mI,qBADJ,EAMI1mI,EAJAlM,MACsB6oZ,EAH1B,EAGQA,iBACgBD,EAJxB,EAIQA,eAIKtvV,EAKTsvV,EALAtvV,QACsBqkU,EAItBirB,EAJAjrB,qBACsBklB,EAGtB+F,EAHA/F,qBACuBI,EAEvB2F,EAFA3F,sBACuBH,EACvB8F,EADA9F,sBAEJ,OAAO7xO,GAAe33G,EAAQrgE,KAAI,SAAC0wZ,EAAehlJ,GAAhB,OAA6Bh0F,GAAqB,EAAGqyO,GAAK,CACxF31Y,UAAW,0BACXw1Y,qBAAsBA,EACtBllB,qBAAsBA,EACtBmlB,sBAAuBA,EACvBG,sBAAuBA,EACvBF,aAAa,EACb9iZ,SAAU0pZ,EAAc1wZ,KAAI,SAAA2gK,GACxB,IACa+jL,EAWT/jL,EAXA+jL,QACS1iQ,EAUT2+E,EAVA3+E,QACYyyD,EASZksB,EATAlsB,WACQoD,EAQR8oB,EARArmH,OACOl9C,EAOPujK,EAPAvjK,MACkB+7I,EAMlBwnB,EANAxnB,iBACiBC,EAKjBunB,EALAvnB,gBACK76I,EAILoiK,EAJApiK,IACWwjF,EAGX4+E,EAHA5+E,UACMn/E,EAEN+9J,EAFA/9J,KACO6tQ,EACP9vG,EADA8vG,MAEJ,OAAO/4F,GAAqB,EAAGy4O,GAAgB,CAC3CpuU,UAAWA,EACXC,QAASA,EACT1nC,OAAQq/F,EAAuB9B,OAAa,EAC5CpD,WAAYkF,EAAuBlF,OAAa,EAChDg8H,MAAOA,EACPrzQ,MAAOA,EACPwF,KAAMA,EACNu2I,iBAAkBA,EAClBC,gBAAiBA,EACjBw2Q,iBAAkBA,EAClBlrE,QAASA,EACTqrE,UAAW52N,IACZ56L,EACN,KACFmtQ,EAASnyQ,WApCsB,IAoCR,EAC7B,CA2BcmhM,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB6oZ,iBAAkB3oP,GAAYlgK,EAAM6oZ,kBACpCC,iBAAkB5oP,GAAYlgK,EAAM8oZ,oBAExCl2Q,qBAAsB19I,KAAK09I,qBAC3BghD,eAAgB1+L,KAAK0+L,gBAE5B,KA5BL,GAAsClS,IA8BtCgoO,GAAiB77Y,aAAe47Y,GClHhC,IAAInvY,GAAY,CAAC,YAAa,mBAAoB,iBAAkB,qBAAsB,aAAc,cAAe,mBAAoB,iBAAkB,SAAU,SAAU,qBAAsB,uBAAwB,oBAwDpNsvY,GAAyB12Z,OAAOwS,OAAOxS,OAAOgK,WAAW+Q,EAAAA,EAAAA,GAAS/a,OAAOwmM,0BAA0B6uN,IAAkBr1Z,OAAOwmM,0BAA0B,CAC7JmwN,oBAAoB,EACpBC,mBAAoBJ,OAKpBxpP,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjBu2N,GAAb,0CACI,WAAY/pZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,gCAQI,WACI,IAAI,EAGAhuL,KAAK8K,MAFayyI,EADtB,EACIA,iBACQl/F,EAFZ,EAEIA,OAEJ,OAAOm/F,GAA4Bn/F,EAAQk/F,EAC9C,GAdL,0BAeI,WACI,IAAI8gD,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAnBL,oBAoBI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAnEkB,SAAAkM,GACtB,IAC0B0mI,EAatB1mI,EAbA0mI,qBADJ,EAcI1mI,EAZAlM,MACsB6oZ,EAH1B,EAGQA,iBACgBD,EAJxB,EAIQA,eACoBoB,EAL5B,EAKQF,mBACax2W,EANrB,EAMQA,YACkBm/F,EAP1B,EAOQA,iBACgBu0Q,EARxB,EAQQA,eACQzzW,EAThB,EASQA,OACoBs2W,EAV5B,EAUQA,mBACsB/C,EAX9B,EAWQA,qBACkBgC,EAZ1B,EAYQA,iBAGR,OAAOh5O,GAAY,EAAG,QAAS,KAAM,CAACl9B,IAAyBt/F,GAAeq9H,GAAqB,EAAG63O,GAAY,CAC9GxB,eAAgBA,EAChBzzW,OAAQA,EACRD,YAAaA,EACbm/F,iBAAkBA,EAClBq0Q,qBAAsBA,IACtB+C,GAAsBG,EAAW,CACjC12W,YAAaA,EACbs1W,eAAgBA,EAChBn2Q,iBAAkBA,EAClBl/F,OAAQA,EACRs1W,iBAAkBA,EAClBC,iBAAkBA,IAClBx1W,GAAeq9H,GAAqB,EAAG63O,GAAY,CACnDxB,eAAgBA,EAChBzzW,OAAQA,EACRD,YAAaA,EACbm/F,iBAAkBA,EAClBq0Q,qBAAsBA,KACrB,EACR,CA+BcnzN,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB6oZ,iBAAkB3oP,GAAYlgK,EAAM6oZ,kBACpCC,iBAAkB5oP,GAAYlgK,EAAM8oZ,kBACpCgB,mBAAoB5pP,GAAYlgK,EAAM8pZ,oBACtChD,qBAAsB5mP,GAAYlgK,EAAM8mZ,wBAE5Cl0Q,qBAAsB19I,KAAK09I,qBAC3BghD,eAAgB1+L,KAAK0+L,gBAE5B,KAhCL,GAAuC3R,IAkCvC8nO,GAAkBl8Y,aAAe+7Y,OC7FZG,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACHngO,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,mBAAoB,mBAAoB,qBAAsB,wBAC1EpiC,MAAO,CAAC,iBAAkB,qBAAsB,mBAAoB,mBAAoB,qBAAsB,SAAU,mBAAoB,iBAAkB,cAAe,SAAU,YAAa,wBAE3M,6BACD,WACI,OAAOiqZ,EACV,OAZgBF,CAA0BpB,IAc/CjhP,GAAkB,sBAAuBqiP,ICnBlC,IAAMG,GAAb,0JACI,YACI,sEACAh1Z,KAAKs6J,qBAAsBvhJ,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKs6J,oBAAqB,CAC9Ds5P,kBAAkB,GAEzB,KANL,GAA+BvhY,ICA3BjN,GAAY,CAAC,SAAU,YAAa,WAAY,YAAa,uBAAwB,UAAW,aAAc,SAAU,QAAS,mBAAoB,kBAAmB,YAAa,OAAQ,oBAkCtL6vY,GAAqBlG,GAEnBmG,GAAb,0CACI,WAAYpqZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,kDAMI,WAA4B,WACxB,YAAI,IAAWhhM,KAAKghM,cAAcm0N,sBACvBn1Z,KAAKghM,cAAcm0N,sBAEvBn1Z,KAAKghM,cAAcm0N,sBAAyB,WAC/C,IAAI,EAMA,EAAKrqZ,MALO0tI,EADhB,EACIA,WACQn6F,EAFZ,EAEIA,OACOl9C,EAHX,EAGIA,MAIJ,MAAO,CACH7G,KAAM,CACF25B,KATR,EAII6xD,UAMIznC,OAAQA,EACRm6F,WAAYA,EACZ7xI,KAZR,EAKIA,MASAxF,MAAOA,EAEd,CAjBkD,EAkBtD,GA5BL,0BA6BI,WACI,IAAIk9L,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAjCL,iCAkCI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAM0tI,aAAegiC,EAAUhiC,YAAcx4I,KAAK8K,MAAMuzC,SAAWm8H,EAAUn8H,QAAUr+C,KAAK8K,MAAM3J,QAAUq5K,EAAUr5K,OAASnB,KAAK8K,MAAMg7E,YAAc00F,EAAU10F,WAAa9lF,KAAK8K,MAAMnE,OAAS6zK,EAAU7zK,OAClN3G,KAAKghM,cAAcm0N,2BAAwB,EAElD,GAtCL,oBAuCI,WACI,IAzCU72N,EAyCNxzL,EAAQ9K,KAAK8K,MACjB,OAhEkB,SAAAkM,GACtB,IAAI,EASAA,EARAlM,MACeqN,EAFnB,EAEQA,UACkB+kI,EAH1B,EAGQA,iBACiBC,EAJzB,EAIQA,gBACMx2I,EALd,EAKQA,KACkB0tZ,EAN1B,EAMQT,iBAEmBuB,EACvBn+Y,EADAm+Y,sBAEJ,OAAO15O,GAAqB,EAAGg0O,GAAM,CACjCvyQ,iBAAkBA,EAClBC,gBAAiBA,EACjBhlI,UAAW,iEAAiElI,OAAOkI,GACnFpN,SAAU,EAAEspZ,GAAoBz5O,GAAY,EAAG,MAAO,KAAMj0K,EAAM,KAAM0tZ,GAAoBA,EAAiB,CACzGlzZ,MAAOg0Z,EAAsBh0Z,MAC7B7G,KAAM66Z,EAAsB76Z,SAGvC,CA4CcmkM,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB8oZ,kBA5CEt1N,EA4C4BxzL,EAAM8oZ,iBA5ClBt1N,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MA8CzJ62N,sBAAuBn1Z,KAAKm1Z,sBAC5Bz2N,eAAgB1+L,KAAK0+L,gBAE5B,KAhDL,GAAmClS,IAkDnC0oO,GAAcv8Y,aAAes8Y,GCtF7B,IAAI7vY,GAAY,CAAC,mBAAoB,WAAY,mBAAoB,iBAmF1DgwY,GAAuB,CAC9BC,cAAer3Z,OAAO8iM,OAAO,CACzBkvN,YAAa,GACbvnB,qBAAsB,EACtBslB,sBAAuB,EACvBkC,mBAAoB,EACpBC,sBAAuB,KAOlBoF,GAAb,0CACI,WAAYxqZ,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,+BAQI,WACI,IAAIunO,EACJ,OAAO,QAAUA,EAAwBv1Z,KAAK8K,MAAMuqZ,cAAc7G,2BAAwB,IAAW+G,EAAwBA,EAAwB,CACxJ,GAXL,kCAYI,WACI,IAAIC,EACJ,OAAO,QAAUA,EAAyBx1Z,KAAK8K,MAAMuqZ,cAAc5G,8BAA2B,IAAW+G,EAAyBA,EAAyB,CAC9J,GAfL,0BAgBI,WACI,IAAIn3N,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GApBL,oBAqBI,WACI,IAvBUk5K,EAuBNxzL,EAAQ9K,KAAK8K,MACjB,OA5FkB,SAAAkM,GACtB,IAC4By3Y,EAQxBz3Y,EARAy3Y,uBADJ,EASIz3Y,EAPAlM,MACc8jZ,EAHlB,EAGQA,SACkBgF,EAJ1B,EAIQA,iBACeyB,EALvB,EAKQA,cAEY32N,EAEhB1nL,EAFA0nL,eACqB8vN,EACrBx3Y,EADAw3Y,oBAEJ,OAAOr0W,GAAeshI,GAAqB,EAAG6yO,IAAOv1Y,EAAAA,EAAAA,GAAS,CAAC,EAAG2lL,EAAgB,CAC9E8vN,oBAAqBA,EACrBC,uBAAwBA,EACxBI,kBAAmB,EACnB12Y,UAAW,0BACXy2Y,SAAUA,EACV7jZ,SAAUsqZ,EAAcrF,YAAYjsZ,KAAI,SAAA2gK,GACpC,IACeusP,EAIXvsP,EAJAusP,UACYz4Q,EAGZksB,EAHAlsB,WACsBsnP,EAEtBp7N,EAFAo7N,qBACKoxB,EACLxsP,EADApiK,IAEJ,OAAOy5K,GAAe,CAAC+jN,GAAwBrkN,GAAqB,EAAGqyO,GAAK,CACxE/iZ,SAAU0wK,GAAqB,EAAGwzO,GAAU,CACxC92Y,UAAW,qCACXpN,SAAU0wK,GAAqB,EAAGk1O,QAEtCM,EAAUltZ,KAAI,SAAAksQ,GACd,IACY5xN,EAOR4xN,EAPA5xN,OACO2xN,EAMPC,EANA9uQ,MACkB+7I,EAKlB+yH,EALA/yH,iBACiBC,EAIjB8yH,EAJA9yH,gBACK76I,EAGL2tQ,EAHA3tQ,IACWwjF,EAEXmqL,EAFAnqL,UACMn/E,EACNspQ,EADAtpQ,KAEJ,OAAO80K,GAAqB,EAAGqyO,GAAK,CAChC31Y,UAAW,8BACXpN,SAAU0wK,GAAqB,EAAGg0O,GAAM,CACpC3pU,UAAWA,EACXn/E,KAAMA,EACN03C,OAAQA,EACRm6F,WAAYA,EACZ0E,iBAAkBA,EAClBC,gBAAiBA,EACjBh8I,MAAO6uQ,EACP4jJ,iBAAkBA,KAEvBtxZ,EACN,KAAI,EAAG4uZ,EACX,OAER,CAqCczyN,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB8oZ,kBA1BEt1N,EA0B4BxzL,EAAM8oZ,iBA1BlBt1N,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MA4BzJkwN,oBAAqBxuZ,KAAKwuZ,oBAC1BC,uBAAwBzuZ,KAAKyuZ,uBAC7B/vN,eAAgB1+L,KAAK0+L,gBAE5B,KA/BL,GAA0C3R,IAiC1CuoO,GAAqB38Y,aAAey8Y,OC5HfE,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACH5gO,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,oBACZpiC,MAAO,CAAC,mBAAoB,gBAAiB,oBAEpD,6BACD,WACI,OAAO2qZ,EACV,OAZgBH,CAA6BN,IAclDxiP,GAAkB,yBAA0B8iP,QC0DxCI,GACAC,GC/EEC,GAAAA,SAAAA,yIACF,SAAez3C,EAASvgX,GACpB,IAAI8jB,EAAW1hB,KAAK2sC,OAAO,YACvBjrB,GACAA,EAASqrC,KAAKoxT,EAASvgX,EAE9B,uBACD,WACI,IAAI8jB,EAAW1hB,KAAK2sC,OAAO,YAC3B,GAAIjrB,EACA,OAAOA,EAASqrC,KAAKh1C,MAAM2J,EAAU5J,UAE5C,OAZC89Y,CAAuBhxN,IAc7B,MDqDI3qM,IAAS8mD,EAAAA,EAAAA,MAET80W,GAAY,cACZvqP,GAAuB9nB,GAAa6nB,GAAgBwqP,IACpDC,GAAkBtyQ,GAAa+nB,GAAesqP,IAC9CE,GAAqBvyQ,GAAaioB,GAAcoqP,IAChDG,GAAwBxyQ,GAAayyQ,GAAgBJ,IACrDK,GAA2B1yQ,GAAa2yQ,GAAgBN,IACxDO,GAAyB5yQ,GAAa3oF,GAAAA,KAAoBg7V,IAC1DQ,GAAqB7yQ,GARL,UAQiCqyQ,IACjDS,GAAc,QAIdC,GAAmB,SAAAx1Z,GAAK,MAAK,CAC7BgN,EAAGhN,EAAMyiE,MAAQuN,GAAE92E,IAAQk0M,aAC3BngM,EAAGjN,EAAM0iE,MAAQsN,GAAE92E,IAAQm0M,YAFH,EAOtBooN,GAAAA,WACF,WAAY7+U,EAAavmD,IAAW,eAChCpxB,KAAKy2Z,sBAAwB,KAC7Bz2Z,KAAK02Z,gBAAiB,EACtB12Z,KAAK4gJ,WAAaxvH,EACd,aAAeumD,GACf33E,KAAK22Z,aAAe,YACpB32Z,KAAK42Z,cAAgB,YACrB52Z,KAAK62Z,UAAY,SACjB72Z,KAAK82Z,gBAAkB,eACvB92Z,KAAK+2Z,gBAAkB,eACvB/2Z,KAAKg3Z,YAAc,CACfz6X,MAAO,MACPryB,IAAK,YAGTlK,KAAK22Z,aAAe,aACpB32Z,KAAK42Z,cAAgB,YACrB52Z,KAAK62Z,UAAY,QACjB72Z,KAAK82Z,gBAAkB,cACvB92Z,KAAK+2Z,gBAAkB,cACvB/2Z,KAAKg3Z,YAAc,CACfz6X,MAAO,OACPryB,IAAK,SAGhB,gDACD,SAAiBynD,EAAUslW,GAAe,WAClCC,GAAoB,EACxBvlW,EAASQ,MAAK,SAAA3lD,GACV,IAAIwtD,EAAW+W,GAAEvkE,GACb2qZ,EAA6Bn9V,EAASsU,SAjC1B,sBAkCZ8oV,EAA6Bp9V,EAASsU,SAjC1B,sBAkChB,SAAI6oV,IAA8BC,KAGlCF,EAAoB,EAAKG,kBAAkB7qZ,EAASyqZ,GAEvD,IACIC,IACDl3Z,KAAKy2Z,sBAAwB,KAC7Bz2Z,KAAKs3Z,aAAe,EAE3B,4BACD,WACI,QAASt3Z,KAAKs3Z,YACjB,6BACD,SAAat9V,GACT,OAAQ,SAAWA,EAAS10B,IAAItlC,KAAK42Z,gBAAkB58V,EAASsU,SAAS,6BAA+BtU,EAASn9D,KAAKmD,KAAK82Z,iBAAmBvtZ,KAAKq7E,KAAK,UAAY5kF,KAAK62Z,UAAYjsV,GAAS5Q,GAAY8Q,GAAU9Q,GACvN,kCACD,SAAkBxtD,EAASyqZ,GACvB,IACIM,EADAv9V,EAAW+W,GAAEvkE,GAEbqpD,EAAc71D,KAAK4gJ,WAAWj0G,OAAO,qBACrC6qX,EAAex3Z,KAAKw3Z,aAAax9V,GAkBrC,OAjBIw9V,IAEI3hW,GADJ0hW,EAAoBv3Z,KAAKy3Z,4BAA4Bz9V,EAAUi9V,IAC3Bj3Z,KAAKg3Z,YAAYz6X,OAC5Cv8B,KAAK02Z,iBACN12Z,KAAKs3Z,cAAgBt3Z,KAAK03Z,sBAAsBH,EAAkBv3Z,KAAKg3Z,YAAYz6X,QACnFv8B,KAAKy2Z,sBAAwBz8V,GAE1BnE,EAAc0hW,EAAkBv3Z,KAAKg3Z,YAAY9sZ,KACnDlK,KAAK02Z,iBACN12Z,KAAKs3Z,aAAet3Z,KAAK03Z,sBAAsBH,EAAkBv3Z,KAAKg3Z,YAAY9sZ,MAClFlK,KAAKy2Z,sBAAwBz8V,IAGjCw9V,GAAe,EACfx3Z,KAAK02Z,gBAAiB,IAGvBc,CACV,4CACD,SAA4BrlP,EAAO8kP,GAC/B,IACIU,EADA7rP,EAAOqG,EAAMv4K,IAAI,GAErB,OAAIkyK,GACA6rP,EAAmBltU,GAAgBqhF,GAC5B,CACHlnI,KAAMqyX,EAAclpZ,EAAI4pZ,EAAiB/yX,KACzCH,IAAKwyX,EAAcjpZ,EAAI2pZ,EAAiBlzX,IACxCC,MAAOizX,EAAiBjzX,MAAQuyX,EAAclpZ,EAC9C42B,OAAQgzX,EAAiBhzX,OAASsyX,EAAcjpZ,IAGjD,CAAC,CACX,sCACD,SAAsByiR,GAClB,IAAIr/P,EAAYpxB,KAAK4gJ,WACjB/qF,EAAczkC,EAAUub,OAAO,qBAC/BirX,EAAWxmY,EAAUub,OAAO,eAChC,OAAOpjC,KAAKq7E,KAAKr7E,KAAKkZ,KAAKozC,EAAc46N,GAAY56N,EAAa,GAAK+hW,EAC1E,6BACD,WACI,GAAI53Z,KAAKy2Z,uBAAyBz2Z,KAAKs3Z,aAAc,CACjD,GAAIt3Z,KAAKy2Z,sBAAsBnoV,SAAS,2BAA4B,CAChE,IAAIskN,EAAc5yR,KAAKy2Z,sBAAsB3mV,QAAQ,kBACjD+nV,EAAqBjlI,EAAYt4R,KAAK,iBAAmBs4R,EAAYt4R,KAAK,gBAC9E,GAAIu9Z,EAAoB,CACpB,IAAIC,EAAqBD,EAAmB7pP,eAAehuK,KAAKg3Z,YAAYz6X,OAASv8B,KAAKs3Z,aAC1FO,EAAmBxnV,UAAnB,WACKrwE,KAAKg3Z,YAAYz6X,MAAQu7X,GAEjC,CACJ,KAAM,CACH,IAAIC,EAAsB/3Z,KAAKy2Z,sBAAsBz2Z,KAAK22Z,gBAAkB32Z,KAAKs3Z,aACjFt3Z,KAAKy2Z,sBAAsBz2Z,KAAK22Z,cAAcoB,EACjD,CACD,IAAIC,EAAeh4Z,KAAK4gJ,WAAWq3Q,cAC/BD,GACAh4Z,KAAK4gJ,WAAWs3Q,iBAAiBF,EAExC,CACJ,sBACD,WACIh4Z,KAAKy2Z,sBAAwB,KAC7Bz2Z,KAAKs3Z,aAAe,EACpBt3Z,KAAK02Z,gBAAiB,CACzB,oCACD,SAAoB9jI,EAAa7xR,GAC7B,IAAK6xR,EACD,OAAO,EAEX,IAAIulI,EAAiB1tU,GAAgBmoM,EAAYh5R,IAAI,IACjD2iC,EAAQ47X,EAAen4Z,KAAKg3Z,YAAYz6X,OACxC1uB,EAAOsqZ,EAAen4Z,KAAK62Z,WAC3BI,EAAgBV,GAAiBx1Z,GACjC4xB,EAAW,UAAY3yB,KAAK62Z,UAAYI,EAAclpZ,EAAIkpZ,EAAcjpZ,EAC5E,OAAO2kB,EAAW4J,GAAS5J,EAAW4J,EAAQ1uB,CACjD,OAlIC2oZ,GAoIF4B,GAAiBhwI,GAAAA,QAAiB,CAClCrlO,KADkC,SAC7BohB,GACDnkE,KAAKmiD,WACLniD,KAAKk3R,UAAY/yN,CACpB,EACD2gN,MALkC,WAM9B,IAAIuzI,EAAyBr4Z,KAAKk3R,UAAUohI,wBACxCC,EAAuBv4Z,KAAKk3R,UAAUshI,sBAC1CH,GAA0BA,EAAuBI,eACjDF,GAAwBA,EAAqBE,cAChD,IAEDC,GAAYrxP,GAAAA,QAAqB,CACjC7gI,MAAO1kB,GAAAA,KACP62Y,SAAU72Y,GAAAA,KACV82Y,UAAW92Y,GAAAA,KACX+2Y,UAAW/2Y,GAAAA,KACXg3Y,QALiC,SAKzBC,GAGJ,OAFsB/4Z,KAAKg5Z,sBACXC,iBAAiBF,IAC1B17Y,EAAAA,GAAAA,MAAWze,SACrB,EACDq6Z,iBAAkBn3Y,GAAAA,KAClB87I,mBAXiC,WAY7B,OAAOn4G,EAAAA,GAAAA,GAAOzlD,KAAKmiD,WAAY,CAC3B+2W,YAAa,KACbC,WAAY,KACZC,UAAW,KACXC,YAAa,KACbC,YAAa,KACbC,aAAc,KACdC,eAAe,EACfC,OAAQ,KACRjxQ,WAAW,EACXkxQ,cAAe,OACfzrN,cAAU,EACV0rN,YAAa,EACbC,kBAAkB,EAClBt+Q,SAAU,KACV/zI,eAAW,EACXsyZ,kBAAc,EACd15M,gBAAiB,UACjB7+M,OAAQ,GACRk5B,OAAQ,GACRlP,OAAO,EACPwuY,YAAY,EACZC,YAAa,GACbC,kBAAmB,GACnBzkU,WAAO,EACPj7F,UAAM,GAEb,EACD8jK,uBAxCiC,WAyC7Bp+J,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,YAC1B2tC,EAAAA,GAAAA,GAAOzlD,KAAKs6J,oBAAqB,CAC7BlpI,WAAW,EACXmkE,OAAO,EACP+lD,UAAU,EACVhhJ,MAAM,GAEb,EACDipG,MAjDiC,WAkD7BvjG,KAAKmiD,WACLniD,KAAK6sK,uBACL7sK,KAAKi6Z,gBAAkB,IAAI7B,GAAep4Z,MAC1CA,KAAKs4Z,wBAA0B,IAAI9B,GAAa,aAAcx2Z,MAC9DA,KAAKw4Z,sBAAwB,IAAIhC,GAAa,WAAYx2Z,MAC1DA,KAAKk6Z,eAAiB,EACtBl6Z,KAAKm6Z,gBAAkB,CAC1B,EACDC,uBA1DiC,SA0DVntZ,GAQnB,OAPIoT,EAAAA,EAAAA,IAASpT,KACTA,EAAS,CACLhR,EAAGgR,EAAOc,EACVqW,EAAGnX,EAAOe,IAGlBf,GAASqjD,EAAAA,GAAAA,WAAUrjD,GAAQlJ,KAAI,SAAA7F,GAAK,OAAIi6B,WAAWj6B,EAAf,IAC7B,CACH0mC,KAAM33B,EAAO,GACbw3B,IAAK,IAAMx3B,EAAOtM,OAASsM,EAAO,GAAKA,EAAO,GAErD,EACDotZ,2BAvEiC,SAuENptZ,EAAQ7P,GAI/B,OAHIyxD,EAAAA,EAAAA,IAAW5hD,KACXA,EAASA,EAAOxO,KAAKuB,KAAM5C,IAExB4C,KAAKo6Z,uBAAuBntZ,EACtC,EACDqtZ,wBA7EiC,SA6ETl9Z,GACpB,IAAIm9Z,EACAC,EAEOz5Z,EACP3D,EADA2D,MAEAi5D,EAAW+W,GAAE3zE,EAAQ0iE,aACrB26V,EAAe1pV,GAAE3zE,EAAQs9Z,aACzBC,EAAW36Z,KAAK46Z,uBAChBC,EAAe76Z,KAAK2sC,OAAO,gBAC3BmuX,EAAyB,CACzBl2X,KAAM,EACNH,IAAK,GAELs2X,EAAgB/6Z,KAAKg7Z,eAAiBt4Q,GAAO+3Q,GAgBjD,OAfIE,GAAYv9Z,EAAQ69Z,eAAiBJ,KACrCN,EAAgBn9Z,EAAQ69Z,eAAiBjhW,EAAS/sD,SAC9C4tZ,IACAC,EAAyB96Z,KAAKq6Z,2BAA2BQ,EAAcz9Z,GACnE+zD,SAAS2pW,EAAuBl2X,QAChC21X,EAAc31X,KAAO7jC,EAAMyiE,OAE3BrS,SAAS2pW,EAAuBr2X,OAChC81X,EAAc91X,IAAM1jC,EAAM0iE,QAGlC+2V,EAAoBC,EAAaxtZ,SACjCstZ,EAAc91X,KAAO+1X,EAAkB/1X,KAAOq2X,EAAuBr2X,KAAO,GAAKs2X,EAAct2X,IAC/F81X,EAAc31X,MAAQ41X,EAAkB51X,MAAQk2X,EAAuBl2X,MAAQ,GAAKm2X,EAAcn2X,MAE/F21X,CACV,EACDW,cA7GiC,SA6GnB99Z,GACV,IAAIq9Z,EAAe1pV,GAAE3zE,EAAQs9Z,aACzBH,EAAgBv6Z,KAAKs6Z,wBAAwBl9Z,GAC7Cm9Z,GACAv6Z,KAAKypJ,MAAM8wQ,EAAeE,GAE9Bz6Z,KAAKm7Z,eAAiBz4Q,GAAO+3Q,EAChC,EACDW,eArHiC,WAsHxBp7Z,KAAKi6Z,gBAAgBl1I,cACtB/kR,KAAKi6Z,gBAAgB19X,OAE5B,EACD8+X,cA1HiC,WA2H7Br7Z,KAAKi6Z,gBAAgBxnO,MACxB,EACDmyH,iBA7HiC,SA6HhBzsS,GACb,IAAIua,EAAgB1yB,KAAKw+J,KACzB,OAAOv5F,EAAUvyC,IAAkBva,EAAY,IAAIlI,OAAOkI,GAAa,GAC1E,EACDmjZ,kBAjIiC,WAkI7B,OAAOt7Z,KAAK2sC,OAAO,WAAa,EACnC,EACDgwK,UApIiC,WAqI7B,IAAI3iJ,EAAWh6D,KAAKg6D,WAChBqiJ,EAAWriJ,EAASjvD,SAAS,wBACjC,OAAOsxM,EAAS17M,OAAS07M,EAAWriJ,CACvC,EACD6yG,qBAzIiC,WAyIV,WACnB,IAAI7sK,KAAK2sC,OAAO,YAAhB,CAGA,IAAIqtB,EAAWh6D,KAAK28M,YAChB4+M,EAAgBv7Z,KAAKs7Z,oBACrB1B,EAAmB55Z,KAAK2sC,OAAO,oBAC/BryC,EAAO,CACPssB,UAAW5mB,KAAK2sC,OAAO,iBACvB67G,UAAWxoJ,KAAK2sC,OAAO,aACvB6pH,gBAAiB,SAAC5U,EAAS7gJ,GACvB,IAAIy6Z,EAAc,EAAK7uX,OAAO,SAC1B8uX,EAAc,EAAKzC,sBAAsBrsX,OAAO,SAChDimP,EAAc,EAAK8oI,eAAe95Q,GACtC,OAAI,EAAK42Q,sBAAsBmD,oBAAoB/oI,EAAa7xR,KAAU,EAAKu3Z,wBAAwBqD,oBAAoB/oI,EAAa7xR,KAGjI06Z,GAAeA,IAAgBD,EACzC,GAED5B,IACA5/V,EAAWh6D,KAAK2tK,WAChBpvG,EAAAA,EAAAA,GAAgBvE,EAAUo8V,GAAwB97Z,EAAM0F,KAAKowJ,oBAAoBtzJ,KAAKkD,QAEtF,MAAQu7Z,EAAc,KACtBA,EAAgBA,EAAcx2Z,MAAM,IAExCw5D,EAAAA,EAAAA,GAAgBvE,EAAUsxG,GAAsBiwP,EAAejha,EAAM0F,KAAKy3J,kBAAkB36J,KAAKkD,OACjGu+D,EAAAA,EAAAA,GAAgBvE,EAAU87V,GAAiBx7Z,EAAM0F,KAAKk4Z,iBAAiBp7Z,KAAKkD,OAC5Eu+D,EAAAA,EAAAA,GAAgBvE,EAAU+7V,GAAoBz7Z,EAAM0F,KAAK63J,gBAAgB/6J,KAAKkD,OAC9Eu+D,EAAAA,EAAAA,GAAgBvE,EAAUg8V,GAAuB17Z,EAAM0F,KAAK47Z,kBAAkB9+Z,KAAKkD,OACnFu+D,EAAAA,EAAAA,GAAgBvE,EAAUk8V,GAA0B57Z,EAAM0F,KAAK67Z,kBAAkB/+Z,KAAKkD,OAClFA,KAAK2sC,OAAO,kBACZ4xB,EAAAA,EAAAA,GAAgBvE,EAAUq8V,GAAoBr2Z,KAAK87Z,gBAAgBh/Z,KAAKkD,MA9B3E,CAgCJ,EACD46Z,qBA7KiC,WA8K7B,OAAO56Z,KAAK+7Z,eAAiB/7Z,KAAK+7Z,cAAcztV,SAAStuE,KAAK4kT,iBAAiB0xG,IAClF,EACD0F,qBAhLiC,SAgLZhiW,EAAUwgB,GAC3B,MAAO,CACHjzE,UAAWs6I,GAAiBrnE,GAC5B/kC,MAAO,CACH6lG,SAAUt7I,KAAK2sC,OAAO,YACtBmzB,YAAa+hF,GAAiB7nF,IAGzC,EACDiiW,mBAzLiC,SAyLdjiW,GACf,IAAIx2D,EAASw2D,EACT1uC,EAAQtrB,KAAK2sC,OAAO,SACpB6tC,EAAax6E,KAAKk8Z,gBAClB18Y,EAAWxf,KAAK2sC,OAAO,gBAY3B,OAXIntB,GACAA,EAAWxf,KAAK+qK,aAAavrJ,GAC7Bhc,EAASutE,GAAE,SAASpC,SAAS6L,GAC7Bh7D,EAAS8uB,OAAOtuC,KAAKg8Z,qBAAqBhiW,EAAUx2D,KAC7C8nB,IACP9nB,EAASutE,GAAE,SAASpC,SAAS6L,GAC7BxgB,EAAS1uC,QAAQga,IAAI,CACjB3U,MAAOqpC,EAAS10B,IAAI,SACpB9Y,OAAQwtC,EAAS10B,IAAI,YACtBqpC,SAASnrE,IAETA,EAAOyqE,YAAYjuE,KAAK4kT,iBAAiB0xG,IAAc9yZ,EAAO5J,IAAI,KAAOogE,EAASpgE,IAAI,IAAIq0E,YAAY,SAAUjuE,KAAK2sC,OAAO,cACtI,EACDwvX,kBA3MiC,WA4MzBn8Z,KAAK46Z,uBACL56Z,KAAK+7Z,cAAcr+Z,SAEnBsC,KAAKo8Z,sBAAqB,GAE9Bp8Z,KAAK+7Z,cAAgB,IACxB,EACDM,oBAnNiC,WAoN7Br8Z,KAAKs8Z,wBAAuB,GAC5Bt8Z,KAAKu8Z,gBAAkB,IAC1B,EACDtvP,qBAvNiC,WAwN7B1uG,EAAAA,EAAAA,IAAiBv+D,KAAK28M,YAAa,IAAI1sM,OAAO4lZ,KAC9Ct3V,EAAAA,EAAAA,IAAiBv+D,KAAK2tK,WAAY,IAAI19J,OAAO4lZ,IAChD,EACDpsQ,MA3NiC,SA2N3Bj/I,EAAUwvD,GACZmpF,GAAKnpF,GAAYh6D,KAAK+7Z,cAAevxZ,EACxC,EACDgyZ,qBA9NiC,SA8NZvzZ,GACjB,IAAIwzZ,EAAiBz8Z,KAAK08Z,oBAC1B,GAAID,EACA,OAAOA,EAGX,GADuBz8Z,KAAK2sC,OAAO,oBAE/B,OAAO3sC,KAAKg6D,WAEhB,IAAI4nF,EAAU7wE,GAAE9nE,GAAKA,EAAE0O,QACnB4jZ,EAAgBv7Z,KAAKs7Z,oBACzB,GAAI,MAAQC,EAAc,GAAI,CAC1B,IAAIlrM,EAASrwN,KAAK28M,YAAY3gN,KAAKu/Z,GAC9BlrM,EAAOphJ,GAAG2yE,KACXA,EAAUA,EAAQ9xE,QAAQugJ,GAEjC,CACD,OAAOzuE,CACV,EACD86Q,kBAjPiC,WAmP7B,OADgB18Z,KAAKg5Z,sBACJuD,eACpB,EACDnsQ,oBArPiC,SAqPbnnJ,GAChB,IAAIg9I,GAAch9I,GAAlB,CAGA,IAAIuB,EAAW,CAAC,EACZwvD,EAAWh6D,KAAKg6D,WAChB0/V,EAAgB15Z,KAAK2sC,OAAO,iBAC5B,eAAiB+sX,GAAiB,SAAWA,IAC7ClvZ,EAASo6B,KAAO37B,EAAEu6D,MAAQxJ,EAAS/sD,SAAS23B,KAAO89G,GAAO1oF,GAAUp1B,KAAOgmC,GAAS5Q,GAAY,GAEhG,aAAe0/V,GAAiB,SAAWA,IAC3ClvZ,EAASi6B,IAAMx7B,EAAEw6D,MAAQzJ,EAAS/sD,SAASw3B,IAAMi+G,GAAO1oF,GAAUv1B,IAAMqmC,GAAU9Q,GAAY,GAElGh6D,KAAKypJ,MAAMj/I,EAAUwvD,GACrBh6D,KAAK28Z,WAAW,aAAhB38Z,CAA8BA,KAAK48Z,cAAc3zZ,GAXhD,CAYJ,EACD4zZ,gBArQiC,SAqQjB97Z,EAAOi5D,GACnB,IAAI14D,EAAStB,KAAK2sC,OAAO,UACrBi1G,EAAU7wE,GAAEhwE,EAAMmhE,eAAiBnhE,EAAMmhE,cAAcvqD,QAC3D,QAAIrW,IAAWsgJ,EAAQ9xE,QAAQxuE,GAAQX,YAGlCq5D,EAASr5D,SAGNq5D,EAASiV,GAAG,4CACvB,EACDwoF,kBAhRiC,SAgRfxuJ,GACd,IAAI+wD,EAAWh6D,KAAKw8Z,qBAAqBvzZ,GAEzC,GADAjJ,KAAK88Z,gBAAiB,EACjB98Z,KAAK68Z,gBAAgB5zZ,EAAG+wD,IAI7B,IAAIh6D,KAAKu8Z,gBAAT,CAGA,IAAIQ,EAAgB/8Z,KAAKg9Z,kBAAkB/zZ,EAAG+wD,GAE9C,GADAh6D,KAAK28Z,WAAW,cAAhB38Z,CAA+B+8Z,GAC3BA,EAAc/7W,OACd/3C,EAAE+3C,QAAS,MADf,CAIAhhD,KAAK2sC,OAAO,WAAYowX,EAAczhR,UACtCt7I,KAAKi9Z,sBACLj9Z,KAAKu8Z,gBAAkBviW,EACvB,IAAIihW,EAAgBjhW,EAAS/sD,UACxBjN,KAAKk9Z,uBAAyBl9Z,KAAK2sC,OAAO,gBAC3C3sC,KAAKk6Z,eAAiBl6Z,KAAKm9Z,0BAC3Bn9Z,KAAKm6Z,gBAAkBn6Z,KAAKo9Z,2BAC5BnC,EAAgBj7Z,KAAKq9Z,2BAA2BpC,EAAcr2X,KAAMq2X,EAAcx2X,MAEtF,IAAIg2X,EAAez6Z,KAAK+7Z,cAAgB/7Z,KAAKi8Z,mBAAmBjiW,GAChEh6D,KAAKo8Z,sBAAqB,GAC1Bp8Z,KAAKs8Z,wBAAuB,GAC5Bt8Z,KAAKs9Z,uBAAuB7C,EAAa1vZ,YACzC,IAAIwyZ,EAAkB,UAAY9C,EAAan1X,IAAI,YACnDtlC,KAAKk7Z,eAAcz1W,EAAAA,GAAAA,GAAO,CAAC,EAAGs3W,EAAe,CACzCrC,YAAaD,EAAa7ga,IAAI,GAC9Bqha,cAAesC,GAAmBtC,KAEtCj7Z,KAAK28Z,WAAW,0BAAhB38Z,EAA2C+Y,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGgkZ,GAAgB,CAC7ErC,YAAaD,KAEjB,IAAItoP,EAAQnyK,KAAK2tK,WACbI,EAAa/tK,KAAKw9Z,eAAerrP,GACjCwnP,EAAc35Z,KAAKy9Z,kBACnBC,EAAY1yV,GAAcmnG,GAC1BwrP,EAAazyV,GAAeinG,GAC5B6tB,EAAep1H,GAAS6vV,GACxBx6N,EAAgBn1H,GAAU2vV,GAC1BmD,EAAmBnD,EAAaxtZ,SAAS23B,KAAOmpI,EAAWnpI,KAC3Di5X,EAAkBpD,EAAaxtZ,SAASw3B,IAAMspI,EAAWtpI,IACzD0tI,EAAMxxK,SACNsI,EAAE6qJ,cAAgB8pQ,EAAmBjE,EAAY/0X,KACjD37B,EAAE+qJ,eAAiB0pQ,EAAYE,EAAmB59N,EAAe25N,EAAYj1X,MAC7Ez7B,EAAEirJ,aAAe2pQ,EAAkBlE,EAAYl1X,IAC/Cx7B,EAAEmrJ,gBAAkBupQ,EAAaE,EAAkB59N,EAAgB05N,EAAYh1X,QAE/E3kC,KAAK2sC,OAAO,eACZ3sC,KAAKo7Z,gBAtCR,CANA,OALGnyZ,EAAE+3C,QAAS,CAmDlB,EACDw8W,eAxUiC,SAwUlBrrP,GAEX,OADaA,GAASokC,GAAAA,OAAqBpkC,IAC1B,CACbvtI,KAAM,EACNH,IAAK,EAEZ,EACD23X,qBA/UiC,SA+UZl+Z,GACjB8B,KAAK+7Z,eAAiB/7Z,KAAK+7Z,cAAc9tV,YAAYjuE,KAAK4kT,iBAAiB,YAAa1mT,EAC3F,EACDo+Z,uBAlViC,SAkVVp+Z,EAAO87D,GAC1B,IAAIyiW,EAAiBziW,GAAYh6D,KAAKu8Z,gBACtCE,GAAkBA,EAAexuV,YAAYjuE,KAAK4kT,iBAAiB,UAAW1mT,EACjF,EACDo/Z,uBAtViC,SAsVVtjW,GACnB+W,GAAE,IAAI9gE,OA1eY,qBA0eiBq1B,IAAI,SAAU00B,EAAS10B,IAAI,UACjE,EACDm4X,gBAzViC,WA0V7B,IAAI9D,EAAc35Z,KAAK2sC,OAAO,eAI9B,OAHIkiB,EAAAA,EAAAA,IAAW8qW,KACXA,EAAcA,EAAYl7Z,KAAKuB,QAE5Bi7D,EAAAA,GAAAA,IAAa0+V,EACvB,EACDhsP,SAhWiC,WAiW7B,IAAI7B,EAAO9rK,KAAK2sC,OAAO,YAIvB,OAHIkiB,EAAAA,EAAAA,IAAWi9G,KACXA,EAAOA,EAAKrtK,KAAKuB,OAEd+wE,GAAE+6F,EACZ,EACDowP,cAvWiC,WAwW7B,IAAI30Z,EAAYvH,KAAK2sC,OAAO,aAI5B,YAHI,IAAWplC,IACXA,EAAY2wE,MAETnH,GAAExpE,EACZ,EACD81Z,2BA9WiC,SA8WNS,EAAgBC,GACvC,IAAIrja,EAAIC,EAAIC,EAAIC,EACZmja,EAAgBh+Z,KAAKk6Z,eACrB+D,EAAiBj+Z,KAAKm6Z,gBACtB/rN,EAAYpuM,KAAKm9Z,0BACjBhvN,EAAanuM,KAAKo9Z,2BAElBG,EAAkB,UADAxsV,GAAE/wE,KAAKwM,WAAW84B,IAAI,YAExC9hC,EAAS,CACTohC,MAAO,QAAUjqC,EAAK,QAAUD,EAAKsF,KAAKm7Z,sBAAmB,IAAWzga,OAAK,EAASA,EAAGkqC,YAAS,IAAWjqC,EAAKA,EAAK,GAAKmja,EAC5Hr5X,KAAM,QAAU5pC,EAAK,QAAUD,EAAKoF,KAAKm7Z,sBAAmB,IAAWvga,OAAK,EAASA,EAAG6pC,WAAQ,IAAW5pC,EAAKA,EAAK,GAAKkja,GAE9H,OAAIR,GAAmBv9Z,KAAKk9Z,sBACjB15Z,EAEJ,CACHohC,MAAM8zB,EAAAA,EAAAA,IAAUy1I,GAAc3qM,EAAOohC,KAAOupK,EAAa8vN,EAAiBz6Z,EAAOohC,KACjFH,KAAKi0B,EAAAA,EAAAA,IAAU01I,GAAa5qM,EAAOihC,IAAM2pK,EAAY4vN,EAAgBx6Z,EAAOihC,IAEnF,EACDy4X,oBAlYiC,WAmY7B,OAAOl9Z,KAAK2sC,OAAO,UAAY3sC,KAAK2sC,OAAO,eAC9C,EACDurX,iBArYiC,SAqYhBjvZ,GAEb,GADAjJ,KAAKi4Z,cAAgBhvZ,EAChBjJ,KAAK+7Z,cAAV,CAIA,IAAI9uZ,EAASjN,KAAKq9Z,2BAA2Bp0Z,EAAEgE,OAAOc,EAAG9E,EAAEgE,OAAOe,GAClEhO,KAAKypJ,MAAMx8I,GACXjN,KAAKk+Z,kBAAkBj1Z,GACvB,IAAI+pE,EAAYhzE,KAAK48Z,cAAc3zZ,GAEnC,GADAjJ,KAAK28Z,WAAW,aAAhB38Z,CAA8BgzE,IAC1B,IAASA,EAAUhyB,OAGDhhD,KAAKm+Z,sBACXxF,SAAS1vZ,EAAGuoR,SAV3B,MAFGvoR,EAAE+3C,QAAS,CAalB,EACDk9W,kBAtZiC,SAsZfj1Z,GACd,GAAIjJ,KAAK2sC,OAAO,cAAe,CAC3B,IAAIsqX,EAAgBV,GAAiBttZ,GACjCm1Z,EAAavhW,EAAAA,EAAAA,kBAA6Bo6V,EAAclpZ,EAAGkpZ,EAAcjpZ,EAAGhO,KAAKg6D,WAAWpgE,IAAI,IACpGoG,KAAKw4Z,sBAAsB6F,iBAAiBD,EAAYnH,GACxDj3Z,KAAKs4Z,wBAAwB+F,iBAAiBD,EAAYnH,EAC7D,CACJ,EACDyE,eA9ZiC,SA8ZlB1hW,GAAU,IACjB44N,EADiB,OAUrB,OARA54N,EAASqF,UAAUqO,UAAUvb,MAAK,SAAAtnD,GAC9B,IAAIs9M,EAAUp3I,GAAElmE,GAChB,SAAI,EAAKytZ,wBAAwBd,aAAarvM,KAAY,EAAKqwM,sBAAsBhB,aAAarvM,MAC9FyqE,EAAczqE,GACP,EAGd,IACMyqE,CACV,EACDuqI,wBA1aiC,WA2a7B,IAAIzia,EAAIC,EACR,OAAO,QAAUA,EAAK,QAAUD,EAAKsF,KAAK07Z,eAAe3qV,GAAE/wE,KAAKwM,mBAAgB,IAAW9R,OAAK,EAASA,EAAG0zM,mBAAgB,IAAWzzM,EAAKA,EAAK,CACpJ,EACDyia,yBA9aiC,WA+a7B,IAAI1ia,EAAIC,EACR,OAAO,QAAUA,EAAK,QAAUD,EAAKsF,KAAK07Z,eAAe3qV,GAAE/wE,KAAKwM,mBAAgB,IAAW9R,OAAK,EAASA,EAAGyzM,oBAAiB,IAAWxzM,EAAKA,EAAK,CACrJ,EACD+lK,mBAlbiC,WAmb7B,IAAI9iK,EAAOoC,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WACjCsZ,EAAYpxB,KAAK2sC,OAAO,aAK5B,OAJIvb,IACAxzB,EAAKwzB,UAAYA,EACjBxzB,EAAK4O,QAAU4kB,EAAU5kB,WAEtB5O,CACV,EACDg/Z,cA3biC,SA2bnB3zZ,GACV,IAAI0sZ,EAAkB31Z,KAAKg5Z,sBACvBtD,EAAkB11Z,KAAKm+Z,sBAC3B,MAAO,CACHp9Z,MAAOkI,EACPqyI,SAAUq6Q,EAAgBhpX,OAAO,YACjCmzB,YAAa+hF,GAAiB8zQ,EAAgB4G,iBAC9CxZ,cAAe4S,EAAgBhpX,OAAO,cAAgBgpX,EACtD3S,YAAa0S,EAAgB/oX,OAAO,cAAgB+oX,EACpD4I,SAAU3I,EAAgBhpX,OAAO,QACjC4xX,OAAQ7I,EAAgB/oX,OAAO,QAEtC,EACDqwX,kBAxciC,SAwcf/zZ,EAAG6kN,GACjB,IAAIlwN,EAAOoC,KAAK48Z,cAAc3zZ,GAC9B,MAAO,CACHlI,MAAOnD,EAAKmD,MACZu6I,SAAU19I,EAAK09I,SACfx7E,YAAaguJ,EACbwwM,SAAU1ga,EAAK0ga,SAEtB,EACDE,6BAjdiC,YAkd5Bx+Z,KAAK46Z,wBAA0B56Z,KAAKypJ,MAAMzpJ,KAAKg7Z,eAAgBh7Z,KAAKu8Z,gBACxE,EACD1kQ,gBApdiC,SAodjB5uJ,GAAG,WACXua,GAAInG,EAAAA,GAAAA,MACJohZ,EAAmBz+Z,KAAK48Z,cAAc3zZ,GACtCy1Z,EAAgB1+Z,KAAK48Z,cAAc3zZ,GACnCysZ,EAAkB11Z,KAAKm+Z,sBACvBQ,GAAqB,EACzB3+Z,KAAK88Z,gBAAiB,EACtB,IACI98Z,KAAK28Z,WAAW,YAAhB38Z,CAA6By+Z,EAqBhC,CAtBD,SAGIpvW,EAAAA,GAAAA,KAAKoH,EAAAA,GAAAA,IAAYgoW,EAAiBz9W,SAAS4N,MAAK,SAAA5N,GAC5C,IAAKA,IACG00W,IAAoB,GACpBA,EAAgBiH,WAAW,SAA3BjH,CAAqCgJ,IAEpCA,EAAc19W,QAGf,OAFA29W,GAAqB,OACrBtvW,EAAAA,GAAAA,KAAKoH,EAAAA,GAAAA,IAAYi/V,EAAgBoD,QAAQ2F,KAAoBpoW,OAAO7yC,EAAE5kB,SAI9E4kB,EAAE5kB,SACL,IAAE0wD,KAAK9rC,EAAE5kB,SACV4kB,EAAEorC,MAAK,WACC+vW,GACA,EAAKH,+BAET,EAAKI,kBAAkBlJ,EAC1B,GACJ,CACJ,EACDmJ,8BAnfiC,SAmfH51Z,GAAG,WACzB0sZ,EAAkB31Z,KAAKg5Z,sBAC3B,GAAIh5Z,OAAS21Z,EACT,OAAO,EAEX,IAAI8E,EAAe9E,EAAgBoG,cAC/B+C,EAA0BnJ,EAAgB37V,WAC1C+kW,EAA0B/+Z,KAAKg6D,WAC/Bi9V,EAAgBV,GAAiBttZ,GAEjC+1Z,EADWniW,EAAAA,EAAAA,kBAA6Bo6V,EAAclpZ,EAAGkpZ,EAAcjpZ,EAAGhO,KAAKwM,WACjDguB,QAAO,SAAAhuB,GACrC,IAAIwtD,EAAW+W,GAAEvkE,GACjB,QAAIwtD,EAASsU,SAAS,EAAKs2O,sBACf5qP,EAAS8V,QAAQ2qV,GAAc95Z,MAG9C,IAAE,GACC87Z,EAAiBz8Z,KAAK08Z,oBACtBuC,EAAqBD,IAAuBF,EAAwBlla,IAAI,GACxEsla,EAA8BnuV,GAAEiuV,GAAoBlvV,QAAQ2sV,GAAgB97Z,OAChF,OAAQq+Z,GAAsBA,IAAuBD,EAAwBnla,IAAI,KAAOqla,IAAuBC,CAClH,EACDtD,kBAzgBiC,SAygBf3yZ,GACdjJ,KAAKm/Z,oBAAoBl2Z,GACrBjJ,KAAK6+Z,8BAA8B51Z,IACnCjJ,KAAKo/Z,sBAEap/Z,KAAKg5Z,sBACXJ,UAAU3vZ,EAC7B,EACD4yZ,kBAjhBiC,SAihBf5yZ,GACdjJ,KAAKq/Z,oBAAoBp2Z,GACzBjJ,KAAKs/Z,wBACDt/Z,OAASA,KAAKg5Z,uBACdh5Z,KAAKwmC,QAEaxmC,KAAKg5Z,sBACXH,UAAU5vZ,EAC7B,EACD6yZ,gBA1hBiC,SA0hBjB7yZ,GACRjJ,KAAK88Z,gBAAkB,WAAa7zZ,EAAE3G,KACtCtC,KAAKu/Z,sBAAsBt2Z,EAElC,EACDs2Z,sBA/hBiC,SA+hBXt2Z,GAElB,GADqBjJ,KAAK08Z,oBAC1B,CAGA,IAAI8C,EAAsBx/Z,KAAK48Z,cAAc3zZ,GAE7C,GADAjJ,KAAK28Z,WAAW,eAAhB38Z,CAAgCw/Z,IAC5BA,EAAoBx+W,OAAxB,CAGAhhD,KAAK88Z,gBAAiB,EACtB,OAASnH,SAAmB,IAAWA,IAA2BA,GAAgByG,sBAAqB,GACvGp8Z,KAAKitK,uBACLjtK,KAAKw+Z,+BACL,IAAI9I,EAAkB11Z,KAAKm+Z,sBAC3Bn+Z,KAAK4+Z,kBAAkBlJ,GACvB11Z,KAAK6sK,sBAPJ,CALA,CAaJ,EACD8vP,WAjjBiC,SAijBtBvja,GACP,OAAO4G,KAAK,IAAIiQ,OAAO7W,EAAM,YAAc4G,KAAK2/J,sBAAsBvmK,EACzE,EACDsxK,0BAA2B,iBA5sBD,SA4sBC,EAC3BC,eArjBiC,WAsjBxB3qK,KAAK2sC,OAAO,qBAGjB3sC,KAAK4pK,iBAAiBgsB,oBAAoB,CACtC/kJ,QAAS,IAAI8qC,KAEjB37E,KAAKmiD,SAASpqC,MAAM/X,KAAM8X,WAC7B,EACDgjE,QA9jBiC,WA+jB7B96E,KAAKmiD,WACLniD,KAAKg6D,WAAWoU,SAASpuE,KAAK4kT,oBAC9B,IAAIvqO,EAAar6E,KAAK4pK,iBAAiBvG,wBAA0BrjK,KAAK2sC,OAAO,mBACzEntB,EAAWxf,KAAK8qK,qBAAqB,mBACrCtrJ,GACAuxD,GAAEvxD,EAAS8uB,OAAO,CACd/mC,UAAWvH,KAAKwM,UAChB6tE,WAAYA,IAGvB,EACDylF,eA1kBiC,SA0kBlBliK,GACX,IACUxE,EACNwE,EADAxE,KAEJ,OAAQA,GACJ,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,SACL,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,0BACD4G,KAAK,IAAIiQ,OAAO7W,EAAM,WAAa4G,KAAK2/J,sBAAsBvmK,GAC9D,MACJ,IAAK,eACL,IAAK,kBACL,IAAK,YACL,IAAK,QAmBL,IAAK,oBACL,IAAK,cACL,IAAK,cACL,IAAK,SACL,IAAK,QACL,IAAK,OACL,IAAK,WACD,MAxBJ,IAAK,mBACL,IAAK,gBACL,IAAK,WACL,IAAK,WACL,IAAK,SACL,IAAK,YACD4G,KAAKm8Z,oBACLn8Z,KAAKitK,uBACLjtK,KAAK6sK,uBACL,MACJ,IAAK,gBACD7sK,KAAK87Z,kBACL,MACJ,IAAK,aACD97Z,KAAKw4Z,sBAAsBhyX,QAC3BxmC,KAAKs4Z,wBAAwB9xX,QAC7B,MASJ,QACIxmC,KAAKmiD,SAASvkD,GAEzB,EACDuga,oBA3nBiC,WA4nB7B,OAAOzI,IAAmB11Z,IAC7B,EACDg5Z,oBA9nBiC,WA+nB7B,OAAOrD,IAAmB31Z,IAC7B,EACDo/Z,oBAjoBiC,WAkoB7B,IAAIK,EAAez/Z,KAAK2sC,OAAO,SAC3BgpX,EAAkB31Z,KAAKg5Z,sBACvByG,GAAgBA,IAAiB9J,EAAgBhpX,OAAO,WACxD+oX,GAAkB11Z,KAEzB,EACDi9Z,oBAxoBiC,WAyoB7BtH,GAAkB31Z,IACrB,EACD0/Z,sBA3oBiC,WA4oB7B/J,GAAkB,IACrB,EACD2J,sBA9oBiC,WA+oB7B5J,GAAkB,IACrB,EACDkJ,kBAjpBiC,SAipBflJ,GACd11Z,KAAKwmC,QACLkvX,EAAgBlvX,QAChBxmC,KAAKq7Z,gBACLr7Z,KAAKs4Z,wBAAwB9xX,QAC7BxmC,KAAKw4Z,sBAAsBhyX,QAC3BxmC,KAAKm8Z,oBACLn8Z,KAAKq8Z,sBACLr8Z,KAAKs/Z,wBACLt/Z,KAAK0/Z,uBACR,EACDhtR,SA5pBiC,WA6pB7B1yI,KAAKmiD,WACLniD,KAAKitK,uBACLjtK,KAAKm8Z,oBACLn8Z,KAAKs/Z,wBACLt/Z,KAAK0/Z,wBACL1/Z,KAAKu8Z,gBAAkB,KACvBv8Z,KAAKq7Z,eACR,EACD8D,oBArqBiC,SAqqBbpG,GAChB,IAAIn7Z,EAAOoC,KAAK48Z,cAAc7D,GAC9B/4Z,KAAK28Z,WAAW,cAAhB38Z,CAA+BpC,EAClC,EACDyha,oBAzqBiC,SAyqBbtG,GAChB,IAAIn7Z,EAAOoC,KAAK48Z,cAAc7D,GAC9B/4Z,KAAK28Z,WAAW,cAAhB38Z,CAA+BpC,EAClC,IAEL40K,GAAkBqjP,GAAW6C,IAC7B,IEv5BA,GFu5BA,GG14BA,IACqBiH,GAAAA,WACjB,WAAYh2D,IAAW,eACnB3pW,KAAK2pW,UAAYA,EACjB3pW,KAAK08Y,UAAY18Y,KAAK2pW,UAAU8yC,WAChCz8Y,KAAKu1H,aAAev1H,KAAK2pW,UAAUy4C,cACnCpiZ,KAAKmgZ,gBAAkB,CACnBv7W,KAAM,EACNH,IAAK,GAETzkC,KAAKknX,gBAAkB,KACvBlnX,KAAK4/Z,6BAA+B,IACvC,wCACD,SAASryS,GACL,OAAOA,EAAYjzH,KAAK,yBAAyBwxH,MACpD,4BACD,SAAY7iH,GACR,IACkBq3Y,EAGdr3Y,EAHAq3Y,aACUhlQ,EAEVryI,EAFAqyI,SACiB6kQ,EACjBl3Y,EADAk3Y,gBAEJngZ,KAAKmgZ,gBAAkBA,EACvBngZ,KAAKknX,gBAAkB,CACnB35P,YAAa+tB,EACb9lB,SAAU8qR,GAEdtgZ,KAAKu1H,aAAaktP,eAAe,yBACpC,2BACD,SAAWx5W,GACHA,EAAE85Y,gBAAkB95Y,EAAE+5Y,aACtBhjZ,KAAKu1H,aAAaktP,eAAe,2BAExC,sCACD,SAAsBx5W,GAClB,IAAI62D,EAAc72D,EAAElI,MAAMzG,MAAQ2O,EAAElI,MAAMzG,KAAKwlE,aAAe72D,EAAE62D,YAChE,OAAOiR,GAAEjR,EACZ,0BACD,SAAU/+D,GACN,IAAIyL,EAAUxM,KAAK6/Z,sBAAsB9+Z,GACrCk0H,EAAiBj1H,KAAKu1H,aAAaw4F,aAAavhN,GACpCxM,KAAKu1H,aAAaouP,yBAAyB3jX,KAAKq1H,SAAS7oH,IAC/D7G,OAAO6G,GACjB,IAAIg2Y,EAAexiZ,KAAK08Y,UAAUojB,wBAC9Brd,EAAeziZ,KAAK08Y,UAAUqjB,0BAA0B//Z,KAAKmgZ,iBACjEngZ,KAAKu1H,aAAaktP,eAAe,6BAA8B,CAC3D1hX,MAAOA,EACPyL,QAASA,EACTyoH,eAAgBA,EAChButR,aAAcA,EACdC,aAAcA,GAErB,6BACD,WACIziZ,KAAKgga,wBACR,4BACD,SAAYpyC,GACR,IAAIqyC,EAAkBlvV,GAAE68S,GAAoBtzX,KAAKi8I,IAC7C2pR,EAAsB,OAASD,QAAmB,IAAWA,OAAkB,EAASA,EAAgB1yS,YACxG4yS,EAAmBnga,KAAKu1H,aAAaw4F,aAAa6/J,GACtD,OAAOsyC,GAAuBC,CACjC,gCACD,SAAgB5yS,GACZ,IAAI+tB,EAAWvqE,GAAEw8C,GAAajzH,KAAKi8I,IACnC,OAAO+E,GAAYA,EAAS9lB,UAAY,EAC3C,uCACD,SAAuBp4H,EAASw/C,GAAqB,WACjD,OAAO,SAAA3zC,GACHA,EAAEqyI,SAAW,EAAKkhF,YAAYvzN,EAAE62D,aAChC72D,EAAEq3Y,aAAe,EAAKD,gBAAgBp3Y,EAAE62D,aACxCljB,EAAoBs8W,aAAet8W,EAAoBs8W,YAAYjwZ,GAC9DA,EAAE+3C,QACH5jD,EAAQ87Z,YAAYjwZ,EAE3B,CACJ,sCACD,SAAsB7L,EAASw/C,GAC3B,OAAO,SAAA3zC,GACH2zC,EAAoBu8W,YAAcv8W,EAAoBu8W,WAAWlwZ,GAC5DA,EAAE+3C,QACH5jD,EAAQ+7Z,WAAWlwZ,EAE1B,CACJ,qCACD,SAAqB7L,EAASw/C,GAAqB,WAC/C,OAAO,SAAA3zC,GACH,IAAIm3Z,EAAc,EAAK7qS,aAAaipP,OAAO,iBAAkBv1W,EAAEqyI,WAC/D,EAAK4rO,gBAAkB,KACvBj+W,EAAEo3Z,YAAa56W,EAAAA,GAAAA,GAAO,CAAC,EAAGx8C,EAAEqyI,SAAU8kR,GACtCxjX,EAAoBw8W,WAAax8W,EAAoBw8W,UAAUnwZ,GAC1DA,EAAE+3C,SACH5jD,EAAQg8Z,UAAUnwZ,GACdA,EAAE85Y,gBAAkB95Y,EAAE+5Y,aACtBpmW,EAAoB0jX,UAAY1jX,EAAoB0jX,SAASr3Z,KAGjE,IAASA,EAAE+3C,QACX,EAAKg/W,0BAEL,IAAS/2Z,EAAE+3C,QCjHE,gBDiH6B/3C,EAAE+5Y,YC/GvCxkP,QDgHoBv1J,EAAE+5Y,YAAYud,mBACpBX,6BAA+B,IAAIviZ,GAAAA,GAE7D,CACJ,kCACD,SAAkBu/B,GAAqB,WACnC,OAAO,SAAA3zC,GACH,IAAIm3Z,EAAc,EAAK7qS,aAAaipP,OAAO,iBAAkBv1W,EAAEqyI,UAC/DryI,EAAEqyI,UAAW71F,EAAAA,GAAAA,GAAO,CAAC,EAAGx8C,EAAEqyI,SAAU8kR,GAChCn3Z,EAAE85Y,gBAAkB95Y,EAAE+5Y,aACtBpmW,EAAoB4jX,OAAS5jX,EAAoB4jX,MAAMv3Z,GAEvD,EAAK22Z,8BACL,EAAKA,6BAA6Bhha,SAEzC,CACJ,sBACD,SAAM2I,EAAWxH,GACb,IAAI68C,EAAsB58C,KAAK2pW,UAAUh9T,OAAO,wBAA0B,CAAC,EACvEvvC,GAAUqoD,EAAAA,GAAAA,GAAO,CACjBr0B,UAAWpxB,KAAK2pW,UAChBxpJ,gBAAiB,KACjB3lL,OAAQ,IAAIvqB,OA1HK,4BA2HjBu4I,WAAW,EACX0wQ,YAAal5Z,KAAKk5Z,YAAYp8Z,KAAKkD,MACnCm5Z,WAAYn5Z,KAAKm5Z,WAAWr8Z,KAAKkD,MACjCo5Z,UAAWp5Z,KAAKo5Z,UAAUt8Z,KAAKkD,MAC/Bu5Z,aAAcv5Z,KAAKu5Z,aAAaz8Z,KAAKkD,OACtCD,GACHC,KAAKu1H,aAAa4tC,iBAAiB57J,EAAWmxZ,IAAWjzW,EAAAA,GAAAA,GAAO,CAAC,EAAGroD,EAASw/C,EAAqB,CAC9Fs8W,YAAal5Z,KAAKyga,uBAAuBrja,EAASw/C,GAClDu8W,WAAYn5Z,KAAK0ga,sBAAsBtja,EAASw/C,GAChDw8W,UAAWp5Z,KAAK2ga,qBAAqBvja,EAASw/C,GAC9C68W,OAAQz5Z,KAAK4ga,kBAAkBhkX,GAC/B48W,eAAe,IAEtB,iCACD,SAAiBjsS,EAAaiI,GAC1B,IACqB0xP,EACjBlnX,KADAknX,gBAEJ,GAAIA,GAAmB35P,EAAa,CAChC,IAAI60P,EAAqB70P,GAAe25P,EAAgB35P,YACpDszS,EAAkBrrS,GAAY0xP,EAAgB1xP,SAClDx1H,KAAKu1H,aAAaurS,0BAA0B1+C,EAAoBy+C,EACnE,CACJ,uCACD,WACI7ga,KAAKu1H,aAAai0P,+CAClBxpX,KAAK08Y,UAAU2I,0BAClB,OArJgBsa,GEdjBoB,GAAyB,gCA0B7B,GAzBMC,WACF,WAAYvkB,IAAY,eACpBz8Y,KAAKy8Y,WAAaA,EAClBz8Y,KAAKolQ,YAAcplQ,KAAKy8Y,WAAWwkB,qBAAqB3mO,UAC3D,sCACD,WAAS,WACLt6L,KAAKkha,qBACLlha,KAAKmha,eACLnha,KAAKoha,QAAQ1ga,SAAQ,SAAA2ga,GACjB,EAAKj8J,YAAYz/P,OAAO07Z,EAC3B,GACJ,mCACD,WACIrha,KAAKsha,SAAWtha,KAAKuha,eACrBvha,KAAKoha,QAAU,GACfpha,KAAKoha,QAAQhha,KAAKJ,KAAKsha,SAC1B,6BACD,WAAiB,6BACjB,WACI,OAAOvwV,GAAE,SAAS3C,SAAS2yV,GAC9B,sBACD,WACI/ga,KAAKolQ,aAAeplQ,KAAKolQ,YAAYppQ,KAAK,IAAIiU,OAAO8wZ,KAAyBrja,QACjF,OAvBCsja,GCIFQ,GAAiC,wCAG/BC,GAAAA,SAAAA,uIACF,WACI,IAAIC,EAAe1ha,KAAK2ha,mBACpB1gY,EAAYjhC,KAAK4ha,sBACjBC,EAAgBH,EAAezgY,EAC/BygY,EAAezgY,IACfygY,EAAezgY,GAEnB8pC,GAAU/qE,KAAKsha,SAAUI,GACzB,IAAI/yU,EAAa3uF,KAAKy8Y,WAAW+H,kBAAoB,EACjDxkZ,KAAKy8Y,WAAW/Z,kBAChB1iY,KAAK8ha,gCAAgCnzU,EAAY+yU,EAAczgY,EAAW4gY,GAE1E7ha,KAAK+ha,mBAAmBpzU,EAAY+yU,EAAczgY,EAAW4gY,EAEpE,mCACD,SAAmBlzU,EAAY+yU,EAAczgY,EAAW4gY,GACpD,IAAK,IAAIl5Z,EAAI,EAAGA,EAAIgmF,EAAYhmF,IAAK,CACjC,IAAIq5Z,EAAchia,KAAKiia,gBAAgBt5Z,GACvC3I,KAAKkia,iBAAiBlia,KAAKsha,SAAUI,EAAcM,EAAar5Z,IAC/Dk5Z,GAAiB7ha,KAAKmia,oBAAoBnia,KAAKsha,SAAUrgY,EAAWygY,EAAcM,EAAar5Z,GAChG3I,KAAKoia,oBAAoBJ,EAAar5Z,EACzC,CACJ,gDACD,SAAgCgmF,EAAY+yU,EAAczgY,EAAW4gY,GACjE,IAAIG,EAAchia,KAAKiia,gBAAgB,GACnCI,EAAoBL,EAAchia,KAAKy8Y,WAAWjI,eAClDktB,EAAe,IACfA,EAAe,EACfW,EAAoBL,GAExBhia,KAAKkia,iBAAiBlia,KAAKsha,SAAUI,EAAcM,EAAcrzU,EAAY,IAC5EkzU,GAAiB7ha,KAAKmia,oBAAoBnia,KAAKsha,SAAUrgY,EAAWygY,EAAcW,EAAoB1zU,EAAa3uF,KAAKy8Y,WAAWjI,eAAgB,GACpJx0Y,KAAKoia,oBAAoBJ,EAAcrzU,EAAY,EACtD,iCACD,SAAiB2zU,EAAS91Y,EAAQmE,EAAOhoB,GACrC3I,KAAKuia,YAAcxxV,GAAE,SAAS3C,SAtCL,qCAuCrBz9C,GACAk6C,GAAS7qE,KAAKuia,YAAa5xY,GAE3BnE,GACAu+C,GAAU/qE,KAAKuia,YAAa/1Y,GAEhCxsB,KAAKuia,YAAYj9X,IAAI,YAAatlC,KAAKwia,oBAAoB75Z,IAC3D3I,KAAKuia,YAAYj9X,IAAI,OAAQtlC,KAAKyia,iBAAiB95Z,EAAGgoB,IACtD2xY,EAAQ38Z,OAAO3F,KAAKuia,YACvB,oCACD,SAAoBD,EAASrhY,EAAWzU,EAAQmE,EAAOhoB,GACnD3I,KAAK0ia,eAAiB3xV,GAAE,SAAS3C,SAjDL,wCAkD5B,IAAI4zV,EAAcx1Y,EAAS,EAAImE,EAAQA,EAAQ3wB,KAAKy8Y,WAAWjI,eAC3DktB,EAAel1Y,EAAS,EAAIyU,EAAYA,EAAYzU,EACxDq+C,GAAS7qE,KAAK0ia,eAAgBV,GAC9Bj3V,GAAU/qE,KAAK0ia,eAAgBhB,GAC/B1ha,KAAK0ia,eAAep9X,IAAI,OAAQtlC,KAAKyia,iBAAiB95Z,EAAGgoB,EAAQ3wB,KAAKy8Y,WAAWjI,iBACjF8tB,EAAQ38Z,OAAO3F,KAAK0ia,eACvB,oCACD,SAAoBV,EAAar5Z,GACzB3I,KAAKy8Y,WAAW9vW,OAAO,qBACvB3sC,KAAK2ia,kBAAoB5xV,GAAE,SAAS3C,SAASozV,IAC7Cz2V,GAAU/qE,KAAK2ia,kBAAmB3ia,KAAKy8Y,WAAWhI,mBAClD5pU,GAAS7qE,KAAK2ia,kBAAmBX,GACjChia,KAAK2ia,kBAAkBr9X,IAAI,OAAQtlC,KAAKyia,iBAAiB95Z,EAAGq5Z,IAC5Dhia,KAAKy8Y,WAAWmmB,cAAct7Z,QAAQtH,KAAK2ia,mBAElD,iCACD,SAAiBh6Z,EAAGgoB,GAChB,OAAO3wB,KAAKy8Y,WAAWomB,qBAAqBC,gBAAgBn6Z,EAAGgoB,EAClE,oCACD,SAAoBhoB,GAChB,OAAO3I,KAAKy8Y,WAAWomB,qBAAqBE,mBAAmBp6Z,EAClE,iCACD,WACI,OAAO3I,KAAKy8Y,WAAWomB,qBAAqBG,iBAC/C,oCACD,WACI,OAAOhja,KAAKy8Y,WAAWomB,qBAAqBI,oBAC/C,gCACD,SAAgBt6Z,GACZ,OAAO3I,KAAKy8Y,WAAWomB,qBAAqBK,eAAev6Z,EAC9D,sBACD,YACI,qDACA3I,KAAKy8Y,YAAcz8Y,KAAKy8Y,WAAWmmB,eAAiB5ia,KAAKy8Y,WAAWmmB,cAAc5ma,KAAK,IAAIiU,OAAOuxZ,KAAiC9ja,QACtI,OAnFC+ja,CAAkCT,IAqFxC,MC3Fa76R,GAAb,WACI,cAAc,eACVnmI,KAAKisI,OAAS,IAAI/yI,GACrB,CAHL,iCAII,WACI,OAAO8G,KAAKisI,OAAOp+H,IACtB,GANL,mBAOI,WACI7N,KAAKisI,OAAO9kG,OACf,GATL,iBAUI,SAAI/tC,EAAMmE,GAIN,OAHKyC,KAAKisI,OAAOtyI,IAAIP,IAASmE,GAC1ByC,KAAK7G,IAAIC,EAAMmE,KAEZyC,KAAKisI,OAAOryI,IAAIR,EAC1B,GAfL,iBAgBI,SAAIA,EAAM8E,IACNmwD,EAAAA,EAAAA,IAAUnwD,IAAU8B,KAAKisI,OAAO9yI,IAAIC,EAAM8E,EAC7C,KAlBL,KCCaila,GAAb,uFACI,SAAiB/la,GACb,IAOIgma,EANK9ga,EAKLlF,EALAkF,IACqB+ga,EAIrBjma,EAJAima,oBACaC,EAGblma,EAHAkma,YACuBC,EAEvBnma,EAFAmma,sBACmBC,EACnBpma,EADAoma,kBAGJ,OAAQlha,GACJ,IAAK,OACD8ga,EAAkBpja,KAAKyja,2BAA2BJ,EAAqB,OAAQC,GAC/E,MACJ,IAAK,KACDF,EAAkBpja,KAAKyja,2BAA2BJ,EAAqB,OAAQC,GAC/E,MACJ,IAAK,OACDF,EAAkBpja,KAAK0ja,+BAA8B3qZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACjFwpB,UAAW,UAEf,MACJ,IAAK,QACDw8Y,EAAkBpja,KAAK0ja,+BAA8B3qZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACjFwpB,UAAW,UAGvB,IAAI+8Y,EAAkBJ,EAAsBH,EAAgB3zJ,SAAU2zJ,EAAgB71E,YAAai2E,GACnG,OAAOxja,KAAK4ja,YAAW7qZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACnDuma,gBAAiBA,IAExB,GA/BL,wCAgCI,SAA2BN,EAAqBz8Y,EAAW08Y,GACvD,IACiB/1E,EAEb81E,EAFA91E,YACU99E,EACV4zJ,EADA5zJ,SAGAo0J,EAAep0J,GADC,SAAW7oP,EAAY,GAAK,GAGhD,MAAO,CACH2mU,YAAaA,EACb99E,SAHgBo0J,GAAgB,GAAKA,GAAgBP,EAAYQ,aAAeD,EAAep0J,EAKtG,GA5CL,2CA6CI,SAA8BryQ,GAC1B,IACyBima,EAQrBjma,EARAima,oBACWz8Y,EAOXxpB,EAPAwpB,UACa08Y,EAMblma,EANAkma,YACO5zL,EAKPtyO,EALAsyO,MACiBgzJ,EAIjBtlY,EAJAslY,gBACY/zS,EAGZvxF,EAHAuxF,WACkBo1U,EAElB3ma,EAFA2ma,iBACU9/U,EACV7mF,EADA6mF,SAGaspQ,EAEb81E,EAFA91E,YACU99E,EACV4zJ,EADA5zJ,SAGkBu0J,EAIlBV,EAJAU,iBACiBC,EAGjBX,EAHAW,gBACeC,EAEfZ,EAFAY,cACcJ,EACdR,EADAQ,aAEA/nY,EAAO2mW,GAAmBqhC,EAAmBp1U,EAAa,EAC1D/9B,EAAO8+K,GAAS,EAAI,EAEpBy0L,EAAkB52E,GADC,SAAW3mU,EAAYgqC,EAAO70B,GAAQ,EAAI60B,EAAO70B,GAGxE,OADyBooY,GAAmBH,GAAoBG,GAAmBF,EAExE,CACH12E,YAAa42E,EACb10J,SAAUA,GAGXpwH,GAAkBp7D,GAAYo/U,EAAsBrja,KAAKoka,iBAAiB,CAC7ED,gBAAiBA,EACjB10J,SAAUA,EACV89E,YAAaA,EACby2E,iBAAkBA,EAClBC,gBAAiBA,EACjBC,cAAeA,EACfJ,aAAcA,EACd/nY,KAAMA,GAEb,GAvFL,8BAwFI,SAAiB3+B,GACb,IACqB+ma,EAQjB/ma,EARA+ma,gBACU10J,EAOVryQ,EAPAqyQ,SACa89E,EAMbnwV,EANAmwV,YACkBy2E,EAKlB5ma,EALA4ma,iBACiBC,EAIjB7ma,EAJA6ma,gBACeC,EAGf9ma,EAHA8ma,cACcJ,EAEd1ma,EAFA0ma,aACM/nY,EACN3+B,EADA2+B,KAEAsoY,EAAmBF,EACnBG,EAAgB70J,EAGpB,GAFqB00J,EAAkBH,EAEnB,CAChB,IACIH,EAAep0J,EAAW,EAC1B80J,EAAkBV,GAAgBK,EACtCI,EAAgBC,EAAkBV,EAAep0J,EACjD40J,EAAmBE,EAJQN,GAAmBloY,EAAOwxT,EAAcxxT,EAAO,GAIdwxT,CAC/D,CACD,GARsB42E,EAAkBF,EAQnB,CACjB,IACIO,EAAgB/0J,EAAW,EAC3Bg1J,EAAmBD,GAAiBV,EACxCQ,EAAgBG,EAAmBD,EAAgB/0J,EACnD40J,EAAmBI,EAJST,EAAmBz2E,EAAcxxT,EAICwxT,CACjE,CACD,MAAO,CACHA,YAAa82E,EACb50J,SAAU60J,EAEjB,GAzHL,wBA0HI,SAAWlna,GACP,IACsB2ma,EAIlB3ma,EAJA2ma,iBACyBW,EAGzBtna,EAHAsna,wBACiBC,EAEjBvna,EAFAuna,gBACiBhB,EACjBvma,EADAuma,gBAIJ,OAF4BI,GAAoBW,EACE1ka,KAAKwwQ,iBAAiBmzJ,EAAiBgB,GAAmBhB,CAE/G,GApIL,8BAqII,SAAiBiB,EAAqBD,EAAiBE,GACnD,OAAIA,EACOF,EAEkB3ka,KAAK8ka,wBAAwBF,EAAqBD,GAC/CC,EAAsBD,CACzD,GA3IL,qCA4II,SAAwBC,EAAqBD,GACzC,IAAKA,EACD,OAAO,EAEX,IACgBnsR,EAEZmsR,EAFAnsR,WACQ1sB,EACR64S,EADA74S,OAGY8sB,EAEZgsR,EAFApsR,WACQusR,EACRH,EADA94S,OAEJ,OAAO0sB,IAAeI,GAAkB9sB,IAAWi5S,CACtD,KAzJL,KCyIWC,IA/HEhjV,GAAAA,mBAA6B,OAC5BA,GAAAA,mBAA6B,QA8Hb,SAACs0R,EAAkB2uD,EAAmBC,EAAkBC,GAClF,IAAIC,EAAYH,EACZI,EAAWH,EACf,GAAIE,EAAUt/U,UAAUpwB,UAAY2vW,EAASv/U,UAAUpwB,UAAW,OACtC,CAAC2vW,EAAUD,GAAlCA,EAD6D,KAClDC,EADkD,IAEjE,CACD,IAAI,EAIAD,EAHYE,EADhB,EACI9sR,WACO+sR,EAFX,EAEIpka,MACWqka,EAHf,EAGI1/U,UAEA,EAGAu/U,EAFOI,EADX,EACItka,MACWuka,EAFf,EAEI5/U,UAGA6/U,EADQrvD,EAAiBsvD,8BAA8B,OAASN,QAAmB,IAAWA,EAAkBA,EAAkB,EAAGH,GAC/Ghha,QAAO,SAAC0ha,EAAeC,GAC7C,IAMIC,EAjDoB,SAACD,EAAUE,GACvC,IACehzS,EAIXgzS,EAJAhzS,UACY+5K,EAGZi5H,EAHAj5H,WACUk5H,EAEVD,EAFAC,SACWjwZ,EACXgwZ,EADAhwZ,UAEAy+P,EAAWzyL,GAAAA,SAAmBgxC,GAAWt9D,UACzC8mN,EAAUx6L,GAAAA,SAAmBikV,GAAUvwW,UAC3C,OAAOowW,EAAStrY,QAAO,SAAAy1O,GACnB,IACW9uQ,EAEP8uQ,EAFA9uQ,MACW2kF,EACXmqL,EADAnqL,UAWJ,OA1CgC,SAAAogV,GACpC,IACUjyY,EAMNiyY,EANAjyY,KACW++F,EAKXkzS,EALAlzS,UACY+5K,EAIZm5H,EAJAn5H,WACO5rS,EAGP+ka,EAHA/ka,MACU8ka,EAEVC,EAFAD,SACWjwZ,EACXkwZ,EADAlwZ,UAEJ,GAAIg9G,IAAcizS,EAAU,CACxB,IAAIE,EAAkBp5H,EAClBq5H,EAAiBpwZ,EACrB,GAAImwZ,EAAkBC,EAAgB,OACE,CAACA,EAAgBD,GAApDA,EADiC,KAChBC,EADgB,IAErC,CACD,OAAOpzS,IAAc/+F,GAAQ9yB,GAASgla,GAAmBhla,GAASila,CACrE,CACD,OAAOnyY,IAAS++F,GAAa7xH,GAAS4rS,GAAc94Q,IAASgyY,GAAY9ka,GAAS6U,GAAag9G,EAAY/+F,GAAQA,EAAOgyY,CAC7H,CAwBcI,CARc,CACjBpyY,KAFM+tD,GAAAA,SAAmB8D,GAAWpwB,UAGpCv0D,MAAOA,EACP6xH,UAAWyhJ,EACXs4B,WAAYA,EACZk5H,SAAUzpJ,EACVxmQ,UAAWA,GAGlB,GACJ,CAwByBswZ,CAA0BR,EAN3B,CACb9yS,UAAWwyS,EACXS,SAAUP,EACV34H,WAAYw4H,EACZvvZ,UAAWyvZ,IAIf,OADAI,EAAczla,KAAd,MAAAyla,GAAa,QAASE,IACfF,CACV,GAAE,IAEH,OADoBF,EAAcvsY,MAAK,SAACmtY,EAAUC,GAAX,OAAyBD,EAASzgV,UAAUpwB,UAAY8wW,EAAU1gV,UAAUpwB,SAA5E,GAE1C,GCvKoB+wW,GAAAA,WACjB,WAAYC,IAAmB,eAC3B1ma,KAAK0ma,kBAAoBA,EACzB1ma,KAAK2ma,aAAe,KACpB3ma,KAAK4ma,eAAiB,KACtB5ma,KAAK6ma,mBAAqB,KAC1B7ma,KAAK8ma,iBAAmB,KACxB9ma,KAAK+ma,mBAAqB,IAC7B,8CACD,WACI,OAAO/ma,KAAK0ma,iBACf,0BACD,WACI,IAAIM,EAAchna,KAAK2ma,aACvB,GAAKK,EAAL,CAGA,IAKInmD,EAAW,CACXroO,WAFAwuR,EAHAxuR,WAMA1yD,UAHAkhV,EAFAlhV,UAMAuvC,SAJA2xS,EADAl7S,OAMA3qH,MAAO6la,EAAY7la,OAGvB,MAAO,CACHwlX,YAFe3mX,KAAKs2W,iBAAiBmqB,sBAAsB5f,GAG3DomD,SAAUD,EAfb,CAiBJ,+BACD,SAAev3J,EAAU89E,EAAal4N,GAClC,GAAIo6I,GAAY,EAAG,CACf,IAAIQ,EAAOjwQ,KAAK0ma,kBAAkBlmD,YAAY/wG,EAAU89E,EAAal4N,GACrEr1H,KAAK2ma,aAAe12J,CACvB,CACJ,iCACD,SAAiBi3J,GACb,IAAIC,EAAuBrvZ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,QAAK,EACxFw+V,EAAmBt2W,KAAK0ma,kBAEd5C,EAGVoD,EAHAz3J,SACaw0J,EAEbiD,EAFA35E,YACQ65E,EACRF,EADAp7S,OAEJ,KAAIg4S,EAAe,GAAnB,CAGA,IAAIsB,EAAY+B,EAAuB7wD,EAAiBkK,YAAY2mD,EAAqB13J,SAAU03J,EAAqB55E,YAAa45E,EAAqBr7S,QAAU9rH,KAAK6ma,mBACrKxB,EAAW/uD,EAAiBkK,YAAYsjD,EAAcG,EAAiBmD,GAC3Epna,KAAK6ma,mBAAqBzB,EAC1Bpla,KAAK4ma,eAAiB5B,GAAiBhla,KAAK0ma,kBAAmBtB,EAAWC,EAAU+B,EAJnF,CAKJ,uCACD,SAAuBC,GACnBrna,KAAK4ma,eAAiBS,CACzB,iCACD,WACI,OAAOrna,KAAK4ma,cACf,+CACD,WACI5ma,KAAKsna,uBACLtna,KAAKuna,oBACR,qCACD,WACIvna,KAAK+ma,mBAAqB/ma,KAAK4ma,eAC/B5ma,KAAKwna,uBAAyBxna,KAAK6ma,mBACnC7ma,KAAK4ma,eAAiB,KACtB5ma,KAAK6ma,mBAAqB,IAC7B,mCACD,WACI7ma,KAAK8ma,iBAAmB9ma,KAAK2ma,aAC7B3ma,KAAK2ma,aAAe,IACvB,+CACD,WACI3ma,KAAK4ma,eAAiB5ma,KAAK4ma,gBAAkB5ma,KAAK+ma,mBAClD/ma,KAAK2ma,aAAe3ma,KAAK2ma,cAAgB3ma,KAAK8ma,iBAC9C9ma,KAAK6ma,mBAAqB7ma,KAAK6ma,oBAAsB7ma,KAAKwna,uBAC1Dxna,KAAK+ma,mBAAqB,KAC1B/ma,KAAKwna,uBAAyB,KAC9Bxna,KAAK8ma,iBAAmB,IAC3B,6CACD,WACI9ma,KAAK+ma,mBAAqB,KAC1B/ma,KAAK4ma,eAAiB,KACtB5ma,KAAK8ma,iBAAmB,KACxB9ma,KAAK2ma,aAAe,IACvB,OAzFgBF,GCajBgB,GAAkCjkR,GAAa,SAAU,+BACzDkkR,GACU,WADVA,GAEY,aAFZA,GAGM,OAHNA,GAIM,OAENC,GAA8BD,GACrBE,GAAb,WACI,WAAYxqa,IAAS,eACjB4C,KAAK5C,QAAUA,EACXA,IACA4C,KAAK6na,WAAa7na,KAAKu0Y,gBACvBv0Y,KAAK8na,WAAa9na,KAAKw0Y,eACvBx0Y,KAAK+na,8BAEZ,CARL,kCASI,WACI,OAAO/na,KAAK5C,QAAQsyO,OACvB,GAXL,oCAYI,WACI,OAAO1vO,KAAKgoa,yBACf,EAdL,IAeI,SAA6B9pa,GACzB8B,KAAKgoa,0BAA4B9pa,CACpC,GAjBL,sCAkBI,WACI,OAAO8B,KAAKioa,2BACf,EApBL,IAqBI,SAA+B/pa,GAC3B8B,KAAKioa,4BAA8B/pa,CACtC,GAvBL,oBAwBI,WACI,OAAO2+D,EAAAA,EAAAA,aACV,GA1BL,kBA2BI,WACI,OAAO78D,KAAK5C,QAAQ8qa,oBACvB,GA7BL,iBA8BI,WACI,OAAOloa,KAAK5C,QAAQ+qa,mBACvB,GAhCL,qBAiCI,WACI,OAAOnoa,KAAK6na,UACf,EAnCL,IAoCI,SAAc3pa,GACV8B,KAAK6na,WAAa3pa,CACrB,GAtCL,wBAuCI,WACI,OAAO8B,KAAK5C,QAAQgra,eAAeC,YACtC,GAzCL,qBA0CI,WACI,OAAOroa,KAAK8na,UACf,EA5CL,IA6CI,SAAc5pa,GACV8B,KAAK8na,WAAa5pa,CACrB,GA/CL,yBAgDI,WACI,IAAIyyB,EAAQ3wB,KAAK2wB,OAAS3wB,KAAK5C,QAAQkra,eACvC,OAAO33Y,EAAQ,EAAIA,EAAQ3wB,KAAK5C,QAAQmra,gBAC3C,GAnDL,0BAoDI,WACI,IAAI/7Y,EAASxsB,KAAKwsB,QAAUxsB,KAAK5C,QAAQora,gBACzC,OAAOh8Y,EAAS,EAAIA,EAASxsB,KAAK5C,QAAQqra,iBAC7C,GAvDL,wCAwDI,WACI,IAAI/ta,EACJ,OAAQ,QAAUA,EAAKsF,KAAK0oa,8BAA2B,IAAWhua,OAAK,EAASA,EAAGiua,yBAA2B,CACjH,GA3DL,0CA4DI,WACI,IAAIjua,EACJ,OAAQ,QAAUA,EAAKsF,KAAK4oa,gCAA6B,IAAWlua,OAAK,EAASA,EAAGiua,yBAA2B,CACnH,GA/DL,2CAgEI,WACI,IAAIjua,EACJ,OAAQ,QAAUA,EAAKsF,KAAK4oa,gCAA6B,IAAWlua,OAAK,EAASA,EAAGmua,wBAA0B,CAClH,GAnEL,+BAoEI,WACI,OAAO7oa,KAAK88Y,6BAA+B,EAAI,EAAI,CACtD,GAtEL,iCAuEI,WAEI,OADyB98Y,KAAK0vO,MAA8C1vO,KAAK8oa,gCAA3C9oa,KAAK68Y,gCAChB,EAAI,EAAI,CACtC,GA1EL,4BA2EI,WACI,IAAIniZ,EACJ,OAAQ,QAAUA,EAAKsF,KAAK0oa,8BAA2B,IAAWhua,OAAK,EAASA,EAAGqua,wBAA0B,CAChH,GA9EL,6BA+EI,WACI,IAAIrua,EACJ,OAAQ,QAAUA,EAAKsF,KAAK4oa,gCAA6B,IAAWlua,OAAK,EAASA,EAAGqua,wBAA0B,CAClH,GAlFL,0BAmFI,WACI,IAAIrua,EAAIC,EACR,MAAO,CACH+6I,SAAU,QAAUh7I,EAAKsF,KAAKgpa,gCAA6B,IAAWtua,OAAK,EAASA,EAAGguC,MACvF+sG,WAAY,QAAU96I,EAAKqF,KAAKipa,kCAA+B,IAAWtua,OAAK,EAASA,EAAG+tC,MAElG,GAzFL,kCA0FI,WACI,OAAO1oC,KAAKkpa,eAAexzR,QAC9B,GA5FL,oCA6FI,WACI,OAAO11I,KAAKkpa,eAAezzR,UAC9B,GA/FL,gCAgGI,WACI,IAAI14F,EAAY/8C,KAAK5C,QAAQgra,eAC7B,MAAI,aAAerrX,EAAUz1B,KAClBogZ,GAEJ3qX,EAAU46B,aAAegwV,EACnC,GAtGL,oCAuGI,WACI,OAAO3na,KAAKmpa,uBAAyBzB,IAAkC1na,KAAKmpa,uBAAyBzB,EACxG,GAzGL,sCA0GI,WACI,OAAO1na,KAAKmpa,uBAAyBzB,IAAoC1na,KAAKmpa,uBAAyBzB,EAC1G,GA5GL,4BA6GI,SAAetqa,GACX4C,KAAK5C,QAAUA,EACX4C,KAAKgpa,2BACLhpa,KAAKgpa,yBAAyB5ra,QAAUA,EACxC4C,KAAKgpa,yBAAyBI,SAAWppa,KAAKqpa,UAC9Crpa,KAAKgpa,yBAAyBM,aAAetpa,KAAKupa,gBAElDvpa,KAAKipa,6BACLjpa,KAAKipa,2BAA2B7ra,QAAUA,EAC1C4C,KAAKgpa,yBAAyBI,SAAWppa,KAAKi+W,UAC9Cj+W,KAAKgpa,yBAAyBM,aAAetpa,KAAKwpa,cAEzD,GAzHL,4BA0HI,WACI,IAAI9ua,EAAIC,EACJ8ua,GAAuB,QAAU/ua,EAAKsF,KAAKgpa,gCAA6B,IAAWtua,OAAK,EAASA,EAAGgva,mBAAqB,CAAC,EAC1HC,GAAyB,QAAUhva,EAAKqF,KAAKipa,kCAA+B,IAAWtua,OAAK,EAASA,EAAG+ua,mBAAqB,CAAC,EAClI,OAAO3wZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG0wZ,GAAsBE,EACtD,GA/HL,2BAgII,WACI,IAAI3rD,EAAah+W,KAAK5C,QAAQm3Y,gBAC1B/wY,EAASw6W,EAAa,EAAIA,EA9IZ,GA+IlB,OAAOz0W,KAAKo/D,MAAMnlE,EACrB,GApIL,0BAqII,WACI,IAAIy6W,EAAYj+W,KAAK5C,QAAQo3Y,eACzBo1B,EAAe5pa,KAAK5C,QAAQysa,oBAC3B5rD,GAAaA,EAAY2rD,KAC1B3rD,EAAY2rD,GAEhB,IAAIpma,EAASy6W,EAAY,EAAIA,EAtJhB,EAuJb,OAAO10W,KAAKo/D,MAAMnlE,EACrB,GA7IL,mDA8II,SAAsCyja,EAAUz8Z,EAAUypB,EAAM61Y,EAAiBC,GAC7E,IACct6J,EAEVjlQ,EAFAilQ,SACa89E,EACb/iV,EADA+iV,YAGWznQ,EAGXmhV,EAHAnhV,UACSC,EAETkhV,EAFAlhV,QACQ+lC,EACRm7S,EADAn7S,OAEAk+S,EAAe/1Y,EAAKyhC,UACpBu0W,EAAgBnkV,EAAUpwB,UAC1Bw0W,EAAcnkV,EAAQrwB,UACtBy0W,EAAer+S,IAAWg+S,EAAkB,GAAKE,EAAeC,IAAkBC,EAAcD,GAChGhsD,EAAYj+W,KAAKw0Y,eACjB60B,EAAYrpa,KAAKu0Y,gBACjB9vW,EAAMslY,GAA2Bt6J,EAAW06J,GAAgBd,EAAY55J,EAAW45J,EACnFzkY,EAAOmlY,EAA0Bx8E,EAAc0wB,GAAa1wB,EAAc48E,GAAgBlsD,EAI9F,OAHIj+W,KAAK0vO,QACL9qM,EAAO5kC,KAAK5C,QAAQgta,0BAA4BxlY,GAE7C,CACHH,IAAKA,EACLG,KAAMA,EAEb,GAvKL,qBAwKI,WACQ5kC,KAAKqqa,kBACL9rW,EAAAA,EAAAA,IAAiBv+D,KAAKkC,SAAUula,GAAiCzna,KAAKqqa,iBAE7E,GA5KL,oCA6KI,WACI,IAAIC,IAAsCtqa,KAAKgpa,yBAC3CuB,IAAwCvqa,KAAKipa,2BAC7Cjpa,KAAKwqa,2BAA6BF,GAAqCtqa,KAAKyqa,6BAA+BF,IAC3Gvqa,KAAK6na,WAAa7na,KAAKu0Y,gBACvBv0Y,KAAK8na,WAAa9na,KAAKw0Y,eACvBx0Y,KAAK+na,8BAEZ,GArLL,yCAsLI,WACQ/na,KAAKwqa,2BACLxqa,KAAKgpa,yBAA2B,IAAI0B,IAAyB3xZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK5C,SAAU,CAC9Fmsa,eAAgBvpa,KAAKupa,eACrBF,UAAWrpa,KAAKqpa,UAChBhB,aAAcroa,KAAKqoa,iBAGvBroa,KAAKyqa,6BACLzqa,KAAKipa,2BAA6B,IAAI0B,IAA2B5xZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK5C,SAAU,CAClGosa,cAAexpa,KAAKwpa,cACpBvrD,UAAWj+W,KAAKi+W,UAChBoqD,aAAcroa,KAAKqoa,gBAG9B,GArML,uCAsMI,WACI,OAAQroa,KAAKyqa,4BAA8Bzqa,KAAKwqa,4BAA8Bxqa,KAAKwsB,MACtF,GAxML,oCAyMI,WACQxsB,KAAK4qa,6BACL5qa,KAAK6qa,qBAEZ,GA7ML,iCA8MI,WAAsB,WACd5wa,GAAS8mD,EAAAA,EAAAA,MACb/gD,KAAKqqa,iBAAmBrqa,KAAK5C,QAAQ0ta,cAAa,WAC9C,IACa38P,EAETl0K,EAFAk0K,QACSG,EACTr0K,EADAq0K,SAEAH,GA/NQ,IA+NwBG,GA/NxB,KAgOR,EAAKy8P,oBAAoB,CACrBnmY,KAAMupI,EACN1pI,IAAK6pI,GAGhB,IACD/vG,EAAAA,EAAAA,GAAgBv+D,KAAKkC,SAAUula,GAAiCzna,KAAKqqa,iBACxE,GA7NL,iCA8NI,SAAoBjyI,GAChB,IAAI19R,EAAIC,EAAIC,EAAIC,EAChB,GAAIu9R,EAAgB,CAChB,IACUxzP,EAENwzP,EAFAxzP,KACKH,EACL2zP,EADA3zP,IAEAumY,GAAuB38W,EAAAA,EAAAA,IAAU5pB,KAAS,QAAU/pC,EAAKsF,KAAKgpa,gCAA6B,IAAWtua,OAAK,EAASA,EAAGm8D,YAAYpyB,IACnIwmY,GAAyB58W,EAAAA,EAAAA,IAAUzpB,KAAU,QAAUjqC,EAAKqF,KAAKipa,kCAA+B,IAAWtua,OAAK,EAASA,EAAGk8D,YAAYjyB,KACxIomY,GAAwBC,KACxB,QAAUpwa,GAAMD,EAAKoF,KAAK5C,SAAS8ta,oBAAiB,IAAWrwa,GAAcA,EAAG4D,KAAK7D,GAE5F,CACJ,GA3OL,8BA4OI,SAAiBuwa,GACb,IAAIzwa,EAAIC,EACJqjX,EAAah+W,KAAKu0Y,gBAClB62B,EAAqBpra,KAAKwqa,0BAA4BxsD,IAAeh+W,KAAKqpa,WACzE+B,GAAsBD,IAAYnra,KAAKgpa,2BACxChpa,KAAKqpa,UAAYrrD,EACjBh+W,KAAKgpa,yBAAyBM,aAAetpa,KAAKupa,eAClDvpa,KAAKgpa,yBAAyBqC,YAAYrtD,EAAYmtD,IAE1D,IAAIltD,EAAYj+W,KAAKw0Y,eACjB82B,EAAuBtra,KAAKyqa,4BAA8BxsD,IAAcj+W,KAAKi+W,WAC5EqtD,GAAwBH,IAAYnra,KAAKipa,6BAC1Cjpa,KAAKi+W,UAAYA,EACjBj+W,KAAKipa,2BAA2BK,aAAetpa,KAAKwpa,cACpDxpa,KAAKipa,2BAA2BoC,YAAYptD,EAAWktD,KAEvDC,GAAsBE,KACtB,QAAU3wa,GAAMD,EAAKsF,KAAK5C,SAASmua,kBAAe,IAAW5wa,GAAcA,EAAG8D,KAAK/D,GAE1F,KA/PL,KAiQM8wa,GAAAA,WACF,WAAYpua,IAAS,eACjB4C,KAAK5C,QAAUA,EACf4C,KAAKm2D,OAASn2D,KAAKyra,aACnBzra,KAAKspa,aAAetpa,KAAK5C,QAAQksa,aACjCtpa,KAAK0ra,UAAY1ra,KAAK5C,QAAQgsa,SAC9Bppa,KAAKs9M,WAAa,EAClBt9M,KAAK2ra,kBAAmB,EACxB3ra,KAAK62D,YAAY,EACpB,sCACD,WACI,OAAO72D,KAAK0ra,SACf,MACD,SAAaxta,GACT8B,KAAK2ra,iBAAmB3ra,KAAK0ra,YAAcxta,EAC3C8B,KAAK0ra,UAAYxta,CACpB,oBACD,WACI,OAAO8B,KAAKm2D,MACf,MACD,SAAUj4D,GACN8B,KAAKm2D,OAASj4D,CACjB,yBACD,WACI,OAAO8B,KAAK0oC,MAAMy9L,UACrB,uBACD,WACI,OAAO58N,KAAKq7E,KAAK5kF,KAAKspa,aAAetpa,KAAKopa,SAC7C,2BACD,WACI,OAAO/6W,EAAAA,EAAAA,IAAUruD,KAAK5C,QAAQira,cAAgBroa,KAAK5C,QAAQira,aAAe9+Z,KAAKo/D,MAAM3oE,KAAK0iG,SAAW,EACxG,yBACD,WACI,OAAO1iG,KAAK5C,QAAQ+7I,eACvB,iCACD,WACI,OAAOn5I,KAAK5C,QAAQw/I,oBACvB,2BACD,WACI,MAAO,CACHgvR,aAAc,EACdzlM,YAAa,EACbu0D,UAAW,EACXiuI,uBAAwB,EACxBE,sBAAuB,EACvBgD,mBAAoB,EACpBC,kBAAmB,EACnB/C,sBAAuB,EACvBgD,qBAAsB,EACtBC,kBAAmB,EACnBC,iBAAkB,EAEzB,gCACD,WACI,OAAOjsa,KAAKksa,oBAAsBlsa,KAAKopa,SAAWppa,KAAKspa,YAC1D,uBACD,WACI,OAAOtpa,KAAKs9M,SACf,MACD,SAAap/M,GACT8B,KAAKs9M,UAAYp/M,CACpB,gCACD,SAAgBsM,GACZ,IAAI,EAGAxK,KAAK0oC,MAFSkjY,EADlB,EACIA,aAIJ,GALA,EAEIzlM,WAEqC,EAErC,OAAO,EAEX,IAAIgmM,GAAsB,EAC1B,GAAInsa,KAAKosa,yBAAyB5ha,GAAW,CACzC,GAAI,IAAMA,GAAYA,IAAaxK,KAAKqsa,kBACpC,OAAO,EAEX,IAAI3yQ,EAAkBkyQ,EAClBU,EAAoB/ia,KAAKo/D,MAAM+wF,EAAkB15J,KAAKopa,UACtD3gM,EAAal/N,KAAKo/D,MAAMn+D,EAAWxK,KAAKopa,UAC5C+C,EAAsB5ia,KAAKD,IAAIgja,EAAoB7jM,IAAezoO,KAAKqoa,YAC1E,CACD,OAAO8D,CACV,yCACD,SAAyB3ha,GACrB,KAAK6jD,EAAAA,EAAAA,IAAU7jD,GACX,OAAO,EAEX,IAAIhH,EAASxD,KAAKwK,WAAaA,EAE/B,OADAxK,KAAKwK,SAAWA,EACThH,CACV,iCACD,SAAiBgH,GACb,OAAOA,GAAY,EAAIjB,KAAKsZ,IAAIrY,EAAUxK,KAAKqsa,oBAAsB,CACxE,4BACD,SAAY7ha,EAAU2ga,GAElB,GADA3ga,EAAWxK,KAAKusa,iBAAiB/ha,IAC5BxK,KAAKwsa,gBAAgBhia,KAAc2ga,EACpC,OAAO,EAEX,IAAIsB,EAAkBzsa,KAAK0sa,oBAAoBlia,GAC3Cmia,EAAmB3sa,KAAK4sa,qBAAqBH,GAC7C,EAIAzsa,KAAK6sa,mBAAmBF,GAHLb,EADvB,EACIA,kBACuBjD,EAF3B,EAEIA,sBACoBiE,EAHxB,EAGIA,mBAGwBnE,EAExB8D,EAFA9D,uBACoBkD,EACpBY,EADAZ,mBAEAnxI,EAAYmxI,EAAqBiB,EAAqBhB,EACtDiB,EAAkBxja,KAAKo/D,MAAMn+D,EAAWxK,KAAKopa,UASjD,OARAppa,KAAK0oC,MAAMkjY,aAAemB,EAAkB/sa,KAAKopa,SACjDppa,KAAK0oC,MAAMy9L,WAAa4mM,EAAkBlB,EAC1C7ra,KAAK0oC,MAAMigY,uBAAyBA,EACpC3oa,KAAK0oC,MAAMmjY,mBAAqBA,EAChC7ra,KAAK0oC,MAAMgyP,UAAYA,EACvB16R,KAAK0oC,MAAMojY,kBAAoBA,EAC/B9ra,KAAK0oC,MAAMmgY,sBAAwBA,EACnC7oa,KAAKgta,oBACE,CACV,4BACD,SAAY5D,EAAU6D,GAClB,IACczia,EACVxK,KADAwK,SAEJxK,KAAKopa,SAAWA,EAChBppa,KAAK62D,YAAY,EAAGo2W,GAChBzia,EAAW,GACXxK,KAAK62D,YAAYrsD,EAAUyia,EAElC,oCACD,SAAoBzia,GAChB,IAAIm+Z,EAAyBp/Z,KAAKo/D,MAAMn+D,EAAWxK,KAAKopa,UACpDyC,EAAqBtia,KAAKsZ,IAAI8lZ,EAAwB3oa,KAAKqoa,cAE/D,MAAO,CACHM,uBAFJA,GAA0BkD,EAGtBA,mBAAoBA,EAE3B,qCACD,SAAqBqB,GACjB,IAC4BvE,EAExBuE,EAFAvE,uBACoBkD,EACpBqB,EADArB,mBAGJ,OADqB7ra,KAAKksa,oBACFvD,EAAyBkD,CACpD,kCACD,WACI,KAAM,gDACT,+BACD,WACI,KAAM,6CACT,mCACD,SAAmBc,GACf,IAAIG,EAAqBH,GAAoB3sa,KAAK0iG,SAAW1iG,KAAK0iG,SAAWiqU,EACzE9D,EAAwB8D,EAAmBG,EAC3ChB,EAAoBjD,EAAwB,EAAIt/Z,KAAKsZ,IAAIgmZ,EAAuB7oa,KAAKqoa,cAAgB,EAIzG,OAHIQ,EAAwB,IACxBA,GAAyBiD,GAEtB,CACHjD,sBAAuBA,EACvBiD,kBAAmBA,EACnBgB,mBAAoBA,EAE3B,iCACD,WACI,IACWpkY,EACP1oC,KADA0oC,MAGwBigY,EACxBjgY,EADAigY,uBAGuBE,EACvBngY,EADAmgY,sBAGoBgD,EACpBnjY,EADAmjY,mBAGmBC,EACnBpjY,EADAojY,kBAEAqB,EAA4BzkY,EAAMqgY,sBAClCqE,EAA2B1kY,EAAMqjY,qBACjCsB,EAAwB3kY,EAAMsjY,kBAC9BsB,EAAuB5kY,EAAMujY,iBAC7BlD,EAAwB/oa,KAAKopa,SAAWT,EACxCoD,EAAuB/ra,KAAKopa,SAAWP,EAOvC0E,EAJwBJ,EAA4BE,EAChCtE,EAHA/oa,KAAKopa,SAAWyC,EAOpC2B,EAHuBJ,EAA2BE,EAC/BvB,EAJA/ra,KAAKopa,SAAW0C,GAOpB9ra,KAAK2ra,kBAAoB4B,GAAYC,IAEpDxta,KAAKyta,yBAAyB1E,EAAuBgD,EAE5D,yCACD,SAAyBhD,EAAuBgD,GAC5C,IACWrjY,EACP1oC,KADA0oC,MAEJA,EAAMqgY,sBAAwBA,EAC9BrgY,EAAMqjY,qBAAuBA,CAChC,OAjNCP,GAmNAd,GAAAA,SAAAA,iCACF,WAAYtta,GAAS,mCACX2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CAClCgsa,SAAUhsa,EAAQisa,UAClBC,aAAclsa,EAAQmsa,iBAE7B,6CACD,WACI,OAAOvpa,KAAK0oC,MAAMkjY,YACrB,uBACD,WACI,OAAO5ra,KAAK0oC,MAAMgyP,SACrB,iCACD,WACI,OAAO16R,KAAK0oC,MAAMigY,sBACrB,oCACD,WACI,OAAO3oa,KAAK0oC,MAAMmgY,qBACrB,kCACD,WACI,OAAO7oa,KAAK5C,QAAQswa,iBAAiB1ta,KAAK2uF,WAAY3uF,KAAK48I,mBAC9D,+BACD,WACI,MAAO,CACH4xQ,oBAAqBxuZ,KAAK0oC,MAAMqgY,sBAChCta,uBAAwBzuZ,KAAK0oC,MAAMqjY,qBACnC4B,cAAe3ta,KAAK0oC,MAAMy9L,WAC1BqoC,SAAUxuQ,KAAK0oC,MAAMgyP,UACrBv0D,WAAYnmO,KAAK0oC,MAAMy9L,WAE9B,OA9BCukM,CAAiCc,IAgCjCb,GAAAA,SAAAA,iCACF,WAAYvta,GAAS,mCACX2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CAClCgsa,SAAUhsa,EAAQ6gX,UAClBqrD,aAAclsa,EAAQosa,gBAE7B,mCACD,WACI,OAAOxpa,KAAK5C,QAAQsyO,OACvB,kCACD,WACI,OAAO1vO,KAAK5C,QAAQwwa,kBAAkB5ta,KAAK2uF,WAAY3uF,KAAK48I,mBAC/D,+BACD,WACI,MAAO,CACH+wQ,qBAAsB3tZ,KAAK0oC,MAAMqgY,sBACjCnb,sBAAuB5tZ,KAAK0oC,MAAMqjY,qBAClC8B,eAAgB7ta,KAAK0oC,MAAMy9L,WAC3BolK,UAAWvrY,KAAK0oC,MAAMgyP,UACtBujF,UAAWj+W,KAAKopa,SAEvB,yCACD,SAAyBL,EAAuBgD,GAC5C,GAAK/ra,KAAK0vO,MAEH,CACH,IACWhnM,EACP1oC,KADA0oC,MAEJA,EAAMqjY,qBAAuBhD,EAC7BrgY,EAAMqgY,sBAAwBgD,EAC9BrjY,EAAMy9L,WAAanmO,KAAKksa,oBAAsBlsa,KAAKmmO,WAAanmO,KAAK0oC,MAAMgyP,SAC9E,MARG,uEAA+BquI,EAAuBgD,EAS7D,OAjCCpB,CAAmCa,IAmC5BsC,GAAb,WACI,WAAYC,IAAY,eACpB/ta,KAAK+ta,WAAaA,EAClB/ta,KAAKgua,4BAA8B,IACtC,CAJL,+CAKI,WACI,OAAOhua,KAAK+ta,WAAWphY,OAAO,4BAA8B,EAtiB1B,EAuiBrC,GAPL,qBAQI,WACI,OAAO3sC,KAAK+ta,UACf,GAVL,0BAWI,WACI/ta,KAAKiua,cACLjua,KAAKkua,qBACR,GAdL,yBAeI,WACIlua,KAAK08Y,UAAUyxB,iBAAgB,EAClC,GAjBL,iCAkBI,WAAsB,WACdC,EAAgBpua,KAAKqua,mBACrBD,GAAiB,GACjB94Y,aAAat1B,KAAKgua,6BAClBhua,KAAKgua,4BAA8Bz4Y,YAAW,kBAAM,EAAKmnX,UAAU4xB,oBAArB,GAA2CF,IAEzFpua,KAAK08Y,UAAU4xB,oBAEtB,KA1BL,KCxiBMC,GAAAA,WACF,WAAY9xB,IAAY,eACpBz8Y,KAAKy8Y,WAAaA,CACrB,kDACD,SAAmBjb,EAAiBhpP,EAAYg2R,GAE5C,OADiBxua,KAAKy8Y,WAAW/Z,kBAO1B,CACHjzH,SAAU+xH,EAAgB/xH,SAC1B89E,YAAai0C,EAAgBj0C,YAAcvtV,KAAKy8Y,WAAW+H,iBAAmBhsQ,GAPvE,CACHi3H,SAAU+xH,EAAgB/xH,SAC1B89E,YAAai0C,EAAgBj0C,YAAc/0M,EAAax4I,KAAKy8Y,WAAWgyB,gBAOnF,8BACD,SAAch/J,EAAU89E,GACpB,IAAImhF,EAAa1ua,KAAKy8Y,WAAW/Z,kBAC7B/zS,EAAa3uF,KAAKy8Y,WAAW+H,iBACjC,OAAIkqB,EACOnhF,EAAc5+P,EAElBplF,KAAKo/D,MAAM4kR,EAAcvtV,KAAKy8Y,WAAWgyB,gBACnD,+CACD,WACI,OAAOzua,KAAKy8Y,WAAW+H,kBAAoB,CAC9C,8CACD,WACI,OAAO,CACV,kCACD,SAAkB71T,GAEd,OADAA,EAAaA,GAAc,EACpB3uF,KAAKy8Y,WAAWgyB,gBAAkB9/U,CAC5C,iCACD,WACI,OAAO3uF,KAAKy8Y,WAAWQ,cAC1B,6CACD,WACI,OAAO,CACV,qCACD,WACI,OAAOxyT,GAAgBzqF,KAAKy8Y,WAAWziV,WAAWpgE,IAAI,IAAI+2B,MAAQ3wB,KAAKy8Y,WAAWkyB,mBACrF,gCACD,WACI,OAAO3ua,KAAKy8Y,WAAWhI,iBAC1B,mCACD,SAAmBp2V,GAElB,8BACD,WACI,OAAOr+C,KAAKy8Y,WAAWkyB,mBAC1B,wCACD,SAAwBC,EAAWC,EAAS5wD,GACxC,IAAI6wD,EAAc7wD,EAAY,EAG9B,MAAO,CACHr5U,KAHcgqY,EAAYA,EAAU3ha,SAAS23B,KAAOkqY,EAAc,EAIlEpqY,MAHYmqY,EAAUA,EAAQ5ha,SAAS23B,KAAOq5U,EAAY6wD,EAAc,EAIxErqY,IAAK,EACLE,OAAQ,EAEf,6CACD,SAA6BoqY,EAAQ9wD,GACjC,IAAIwnD,EAAgBsJ,EAAOpua,OAAS,EAChCiua,EAAYG,EAAOn/V,GAAG,GACtBi/V,EAAUE,EAAOn/V,GAAG61V,GACxB,OAAOzla,KAAKgva,wBAAwBJ,EAAWC,EAAS5wD,EAC3D,qCACD,SAAqBstB,EAAWwjC,EAAQ9wD,EAAW0I,EAAa0xB,GAC5D,GAAIr4Y,KAAKy8Y,WAAW/Z,kBAChB,OAAO1iY,KAAKiva,6BAA6BF,EAAQ9wD,GAErD,IAAI2wD,EACAC,EACA7+J,EAAYhwQ,KAAKy8Y,WAAWsjB,0BAA0Bp5C,GACtDnuO,EAAamuO,EAAYnuO,YAAcjvI,KAAKo/D,MAAMqnM,EAAYu7H,GAC9D2jC,EAAmB72B,EAAeC,oBAAoB9/P,GAC1D,GAAI02R,EAAkB,CAClB,IAAIC,EAAiBD,EAAiB,GAAGvua,OACrCyua,EAAqBF,EAAiB,GAAG,GAAG1ka,SAC5C6ka,EAAmBH,EAAiB,GAAGC,EAAiB,GAAG3ka,SAC/Doka,EAAYG,EAAOn/V,GAAGw/V,EAAmB7hF,aACzCshF,EAAUE,EAAOn/V,GAAGy/V,EAAiB9hF,YACxC,CACD,OAAOvtV,KAAKgva,wBAAwBJ,EAAWC,EAAS5wD,EAC3D,+BACD,SAAeqxD,EAAY9iZ,EAAQ+7V,EAAW/vO,GAC1C,IAAIvrI,EAASjN,KAAKuva,oBAAoB/2R,GAClCg3R,EAAmBjnD,EAAYA,EAAYt7W,EAASA,EACxDqia,EAAWhqY,IAAI,OAAQkqY,GACvBF,EAAWhqY,IAAI,MAAO9Y,EACzB,oCACD,SAAoBgsH,GAEhB,OADiBx4I,KAAKy8Y,WAAW/Z,kBACb1iY,KAAKyva,4BAA4Bj3R,GAAcx4I,KAAK20J,iBAAiBnc,EAC5F,iCACD,SAAiBA,GAGb,OAF6Bx4I,KAAKy8Y,WAAWizB,mBAAmBl3R,GACnDx4I,KAAKy8Y,WAAWgyB,gBAAkBzua,KAAKy8Y,WAAWkzB,oBAAoBn3R,EAAa,EAAG,GAAKA,CAE3G,4CACD,SAA4BA,GACxB,OAAOx4I,KAAKy8Y,WAAWizB,mBAAmB,GAAK1va,KAAKy8Y,WAAW+H,iBAAmBxkZ,KAAKy8Y,WAAWkzB,oBAAoBn3R,EAAa,EAAG,GAAKA,CAC9I,gCACD,SAAgB7vI,EAAGgoB,GACf,IAAI1jB,EAASjN,KAAKy8Y,WAAWgyB,gBAAkBzua,KAAKy8Y,WAAWkzB,oBAAoBhna,EAAI,GAAKA,EAC5F,OAAO3I,KAAKy8Y,WAAW9vW,OAAO,cAAgB89C,GAAgBzqF,KAAKy8Y,WAAWwkB,qBAAqB3mO,WAAW1gM,IAAI,IAAI+2B,MAAQ1jB,EAASjN,KAAKy8Y,WAAWkyB,oBAAsBh+Y,EAAQ1jB,CACxL,mCACD,SAAmBtE,GACf,OAAQ3I,KAAKija,sBAAwBt6Z,EAAI,EAAI,EAAI,EACpD,gCACD,WAEI,OADa3I,KAAKy8Y,WAAWmzB,qBAEhC,mCACD,WACI,OAAOnlV,GAAgBzqF,KAAKy8Y,WAAWwkB,qBAAqB3mO,WAAW1gM,IAAI,IAAI4yB,MAClF,+BACD,SAAe7jB,GACX,OAAO3I,KAAKy8Y,WAAWozB,mBAAmBlna,EAC7C,uCACD,SAAuBmjH,GACnB,OAAQA,EAAuD,EAA9C9rH,KAAKy8Y,WAAW5sE,gBAAgBzhI,WACpD,8CACD,SAA8Bm8M,EAAWppZ,EAAOwH,EAAGmF,GAC/C,IAAIgia,EAAuBh4Z,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAEvF,OADAyyY,EAAYvqZ,KAAK+va,uBAAuBxlB,EAAWppZ,EAAO2ua,GACnD9va,KAAKgwa,wBAAwBzlB,EAAWppZ,EAAO2ua,EACzD,uCACD,SAAuBvlB,EAAWppZ,EAAO2ua,GACrC,GAAIA,EACA,MAAO,GAAG7/Z,OAAOs6Y,EAAW,KAAKt6Y,OAAOmmI,IAG5C,GADkBp2I,KAAKy8Y,WAAW/Z,mBAE9B,GAAIvhY,EAAQnB,KAAKy8Y,WAAW+H,mBAAqB,EAC7C,MAAO,GAAGv0Y,OAAOs6Y,EAAW,KAAKt6Y,OAAOmmI,SAEzC,GAAIj1I,EAAQnB,KAAKy8Y,WAAWgyB,kBAAoB,EACnD,MAAO,GAAGx+Z,OAAOs6Y,EAAW,KAAKt6Y,OAAOmmI,IAE5C,OAAOm0Q,CACV,wCACD,SAAwBA,EAAWppZ,EAAO2ua,GACtC,GAAIA,EACA,MAAO,GAAG7/Z,OAAOs6Y,EAAW,KAAKt6Y,OAAOomI,IAG5C,GADkBr2I,KAAKy8Y,WAAW/Z,mBAE9B,IAAKvhY,EAAQ,GAAKnB,KAAKy8Y,WAAW+H,mBAAqB,EACnD,MAAO,GAAGv0Y,OAAOs6Y,EAAW,KAAKt6Y,OAAOomI,SAEzC,IAAKl1I,EAAQ,GAAKnB,KAAKy8Y,WAAWgyB,kBAAoB,EACzD,MAAO,GAAGx+Z,OAAOs6Y,EAAW,KAAKt6Y,OAAOomI,IAE5C,OAAOk0Q,CACV,OA9JCgkB,GAgKN,MCvJM0B,GAAAA,WACF,WAAYxzB,IAAY,eACpBz8Y,KAAKy8Y,WAAaA,EAClBz8Y,KAAKsQ,MAAQ,IAAI61H,EACpB,kDACD,SAAmBq7P,EAAiBhpP,EAAYs4N,GAC5C,IAAIrhG,EAAW+xH,EAAgB/xH,SAAWj3H,EAAax4I,KAAKy8Y,WAAWQ,eAOvE,OANIj9Y,KAAKy8Y,WAAWlpC,oBAAsBvzW,KAAKy8Y,WAAW9vW,OAAO,qBAC7D8iO,GAAYj3H,EACPs4N,IACDrhG,GAAY,IAGb,CACHA,SAAUA,EACV89E,YAAai0C,EAAgBj0C,YAEpC,8BACD,SAAc99E,GACV,OAAOlmQ,KAAKo/D,MAAM8mM,EAAWzvQ,KAAKy8Y,WAAWQ,eAChD,+CACD,WACI,OAAO,CACV,8CACD,WACI,OAAOj9Y,KAAKy8Y,WAAW9vW,OAAO,kBACjC,kCACD,WACI,OAAO3sC,KAAKy8Y,WAAWgyB,eAC1B,iCACD,WACI,OAAOzua,KAAKy8Y,WAAWQ,eAAiBj9Y,KAAKy8Y,WAAW+H,gBAC3D,6CACD,WACI,OAAOxkZ,KAAKy8Y,WAAW+H,kBAAoB,CAC9C,qCACD,WACI,IAAIxjX,EAAWhhC,KAAKy8Y,WAAWyzB,qBAC3BC,EAA0B1lV,GAAgBzqF,KAAKy8Y,WAAWziV,WAAWpgE,IAAI,IAAI+2B,MAAQ3wB,KAAKy8Y,WAAWkyB,oBAAsB3ua,KAAKy8Y,WAAW2zB,qBAAuB,EAItK,OAHIpvY,EAAWmvY,IACXnvY,EAAWmvY,GAERnvY,CACV,gCACD,WACI,OAAO,CACV,mCACD,SAAmBqd,GACf,OAAO+gG,GAA2B/gG,EACrC,8BACD,WACI,OAAOr+C,KAAKy8Y,WAAWkyB,oBAAsB3ua,KAAKy8Y,WAAW2zB,oBAChE,qCACD,SAAqB53R,EAAYxhI,GAAM,WAC/B,GAAJ,OAA8BA,EAA9B,GAAKq5Z,EAAL,KAAiBC,EAAjB,KACA,OAAOtwa,KAAKsQ,MAAM1W,IAAI,oBAAoBqW,OAAOuoI,IAAa,WAC1D,IAAIj4F,EAAe,EAAKk8V,WAAW9vW,OAAO,gBACtCsR,EAAa,EAAKw+V,WAAW9vW,OAAO,cACpCyzG,EAAgB,EAAKq8P,WAAW9vW,OAAO,iBACvC4jY,EAAY7wR,GAAqBn/F,EAActC,GAAcmiG,EAAgB,EAAKq8P,WAAWlI,gBAC7FnmM,EAAY,EAAKoiO,yBACjBjhC,EAAY/2P,EAAa+3R,EAAY9lV,GAAgB,EAAKgyT,WAAWg0B,QAAQ72a,IAAI,IAAI4yB,OAAS,EAAKiwX,WAAW9vW,OAAO,kBAAvB,GA/DrF,GA+DwJyhK,EACjK,EAAKquM,WAAW9vW,OAAO,oBAAsB,EAAK8vW,WAAWlpC,qBAC7Dg8B,GAAa,EAAKkN,WAAWlI,iBAAmB/7P,EAAa,IAEjE,IAAIk4R,EAAenhC,EAAYghC,EAErB3rY,EACNyrY,EAAW91W,wBADX31B,KAGOF,EACP4rY,EAAU/1W,wBADV71B,MAQJ,OANA,EAAKisY,mBAAqB,CACtB/rY,KAAMA,EACNF,MAAOA,EACPD,IAAK8qW,EACL5qW,OAAQ+rY,GAEL,EAAKC,kBACf,GACJ,+BACD,SAAerB,EAAY9iZ,EAAQ+7V,EAAW5/W,GAC1C,IAAIsE,EAASjN,KAAKy8Y,WAAWizB,mBAAmB,GAC5CkB,EAAc5wa,KAAKy8Y,WAAW9vW,OAAO,yBAA2B,EAAI3sC,KAAKy8Y,WAAW2zB,qBACpFZ,EAAmBjnD,EAAYA,EAAYt7W,EAASA,EACpD4ja,EAAiB7wa,KAAKy8Y,WAAWQ,eAAiBj9Y,KAAKy8Y,WAAWlI,gBAAkB5rY,EACpF3I,KAAKy8Y,WAAWlpC,oBAAsBvzW,KAAKy8Y,WAAW9vW,OAAO,qBAC7DkkY,GAAkB7wa,KAAKy8Y,WAAWhI,mBAAqB9rY,EAAI,IAE/D2ma,EAAWhqY,IAAI,OAAQkqY,EAAmBoB,GAC1CtB,EAAWhqY,IAAI,MAAO9Y,EAASqkZ,EAClC,gCACD,SAAgBloa,EAAGgoB,GACf,IAAI1jB,EAASjN,KAAKy8Y,WAAW9vW,OAAO,yBAA2B,EAAI3sC,KAAKy8Y,WAAW2zB,qBACnF,OAAOpwa,KAAKy8Y,WAAW9vW,OAAO,cAAgB89C,GAAgBzqF,KAAKolQ,YAAYxrQ,IAAI,IAAI+2B,MAAQ1jB,EAASjN,KAAKy8Y,WAAWq0B,yBAA2BngZ,EAAQ1jB,CAC9J,mCACD,SAAmBtE,GACf,OAAO,CACV,gCACD,WACI,IAAI6jB,EAASxsB,KAAKy8Y,WAAWmzB,sBAI7B,OAHI5va,KAAKy8Y,WAAWlpC,oBAAsBvzW,KAAKy8Y,WAAW9vW,OAAO,qBAC7DngB,GAAUxsB,KAAKy8Y,WAAWlI,iBAEvB/nX,CACV,mCACD,WACI,IAAIA,EAASxsB,KAAKy8Y,WAAWQ,eAAiBj9Y,KAAKy8Y,WAAWlI,gBAI9D,OAHIv0Y,KAAKy8Y,WAAWlpC,oBAAsBvzW,KAAKy8Y,WAAW9vW,OAAO,qBAC7DngB,GAAUxsB,KAAKy8Y,WAAWlI,iBAEvB/nX,CACV,+BACD,WACI,OAAOxsB,KAAKy8Y,WAAWozB,mBAAmB,EAC7C,uCACD,WACI,OAAO7va,KAAKy8Y,WAAW5sE,gBAAgBzhI,WAC1C,8CACD,SAA8Bm8M,EAAWppZ,EAAOwH,EAAGmF,GAE/C,OADAy8Y,EAAYvqZ,KAAK+va,uBAAuBxlB,EAAW5hZ,EAAI,GAChD3I,KAAKgwa,wBAAwBzlB,EAAW5hZ,EAAI,EACtD,uCACD,SAAuB4hZ,EAAWppZ,GAC9B,OAAIA,EAAQnB,KAAKy8Y,WAAWQ,iBAAmB,EACpC,GAAGhtY,OAAOs6Y,EAAW,KAAKt6Y,OAAOmmI,IAErCm0Q,CACV,wCACD,SAAwBA,EAAWppZ,GAC/B,OAAKA,EAAQ,GAAKnB,KAAKy8Y,WAAWQ,iBAAmB,EAC1C,GAAGhtY,OAAOs6Y,EAAW,KAAKt6Y,OAAOomI,IAErCk0Q,CACV,OAtIC0lB,GAwIN,MC/IWc,GAAoB,SAAC1yX,EAAQ2yX,EAAqB5yX,EAAa4zW,GACtE,IAAI34D,EAAc,EACd04D,EAAkB1zW,EAAOt6C,KAAI,SAAAwxF,GAwB7B,IAvBA,IAAI/xF,EAAS,GAEHlJ,EAGNi7F,EAHAj7F,KACO4rD,EAEPqvC,EAFArvC,MACMo0F,EACN/kD,EADAn8F,KAEA2uP,EAAQ,SAASvrH,GACjBh5H,EAAOpD,KAAP,MAAAoD,GAAM,QAAS0iD,EAAMniD,KAAI,SAACiT,EAAM7V,GAC5B,IACWwnB,EAGP3R,EAHA2R,MACI5K,EAEJ/G,EAFA+G,GAGJ,MAAO,CACHA,GAAIA,EACJpX,KAHAqQ,EADArQ,KAKAgiB,MAAOA,EACPrmB,IAAK,GAAG2N,OAAOusH,EAAU,KAAKvsH,OAAOqqI,EAAc,KAAKrqI,OAAO8N,GAC/Du8H,aAAcA,EACdhgJ,KAAM,OAASA,QAAQ,IAAWA,OAAO,EAASA,EAAK6G,GAE9D,KACJ,EACQq7H,EAAW,EAAGA,EAAW68N,EAAa78N,GAAY,EACvDurH,EAAMvrH,GAGV,OADA68N,GAAenzS,EAAMvlD,OACd6C,CACV,IAID,OAHI46C,IACA2zW,EAzCgC,SAACkf,EAAkBD,GAAnB,OAA2C,QAAI,IAAInsa,MAAMmsa,IAAsB7sa,QAAO,SAAC+sa,EAAmBpya,EAAGqC,GAAvB,OAAiC8va,EAAiBlta,KAAI,SAACgvZ,EAAWtjJ,GAC5L,IAAI0hK,EAAaD,EAAkBzhK,IAAa,GAChD,MAAO,GAAP,gBAAW0hK,IAAX,QAA0Bpe,EAAUhvZ,KAAI,SAACa,EAAM2oV,GAAP,OAAuBx0U,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,EAAM,CAC9EtC,IAAK,GAAG2N,OAAOrL,EAAKtC,IAAK,mBAAmB2N,OAAO9O,GACnD+7I,iBAAkB,IAAMqwM,EACxBpwM,gBAAiBowM,IAAgBwlE,EAAUpyZ,OAAS,GAHhB,KAK3C,GAP6H,GAO1H,GAPoC,CAyCdywa,CAAkCrf,EAAiBif,IAElE,CACHjf,gBAAiBA,EACjBC,YAAaA,EAEpB,EC/CGqf,GAAgC,SAAS94Y,EAAGtvB,GAC5C,IAAIkb,EAAI,CAAC,EACT,IAAK,IAAItmB,KAAK06B,EACNv6B,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,IAAMoL,EAAE7H,QAAQvD,GAAK,IAC7DsmB,EAAEtmB,GAAK06B,EAAE16B,IAGjB,GAAI,MAAQ06B,GAAK,oBAAsBv6B,OAAOsza,sBAAuB,CACjE,IAAI3oa,EAAI,EACR,IAAK9K,EAAIG,OAAOsza,sBAAsB/4Y,GAAI5vB,EAAI9K,EAAE8C,OAAQgI,IAChDM,EAAE7H,QAAQvD,EAAE8K,IAAM,GAAK3K,OAAOgK,UAAUupa,qBAAqB9ya,KAAK85B,EAAG16B,EAAE8K,MACvEwb,EAAEtmB,EAAE8K,IAAM4vB,EAAE16B,EAAE8K,IAGzB,CACD,OAAOwb,CACV,EAYYqtZ,GAAb,WACI,WAAYC,IAAoB,eAC5Bzxa,KAAKyxa,mBAAqBA,CAC7B,CAHL,uDAII,SAAyBr0a,EAASs0a,GAC9B,IAGIlua,EAAS,GACb,GAFIpG,EADAu0a,6BAG8B,CAC9B,IAAIC,EAAc5xa,KAAK6xa,8BAA8Bz0a,EAASs0a,GAC9Dlua,EAAOpD,KAAKwxa,EACf,CACD,IAAIE,EAAU9xa,KAAK+xa,uBAAuB30a,EAASs0a,GAEnD,OADAlua,EAAOpD,KAAK0xa,GACLtua,CACV,GAhBL,2CAiBI,SAA8BpG,EAASs0a,GAoBnC,IAnBA,IACqBhvC,EAQjBtlY,EARAslY,gBACQrkV,EAORjhD,EAPAihD,OACkBk/F,EAMlBngJ,EANAmgJ,iBACch9F,EAKdnjD,EALAmjD,aACYtC,EAIZ7gD,EAJA6gD,WACemiG,EAGfhjJ,EAHAgjJ,cACsB1C,EAEtBtgJ,EAFAsgJ,qBACe68O,EACfn9X,EADAm9X,cAEAy3C,EAAiBhya,KAAKyxa,mBAAmBQ,kBAAkB1xX,EAActC,EAAYmiG,GACrF8xR,EAAuB3yR,GAAwBlhG,EAAQk/F,GACvDp8I,EAAQuwa,EAAoB,GAAG,GAAG5lT,OAAS,EAAI,EAC/C28N,EAAUi6C,EAAkBwvC,EAAuBF,EAAiBA,EACpErjV,EAAawqD,GAAc96F,GAC3B8zX,EAAmBz0R,IAAyBglP,EAAkB/zS,EAAa,EAE3EyjV,EADcpya,KAAKyxa,mBAAmBY,eAAiB93C,EAC5B43C,EAC3BP,EAAc,GACTjrT,EAAW,EAAGA,EAAWyrT,EAAYzrT,GAAY,EAAG,CACzD,IAAIspJ,EAAOyhK,EAAoBvwa,GAAOwlH,EAAW8hO,GACjDmpF,EAAYxxa,MAAK2Y,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGk3P,GAAO,CAC1Cw4E,QAASA,EACT9hV,KAAMq4I,GAAoBixH,EAAKnqL,WAC/Bo3D,kBAAkB,EAClBC,iBAAiB,IAExB,CACD,OAAOy0R,CACV,GA/CL,oCAgDI,SAAuBx0a,EAASs0a,GAC5B,IACWl9J,EAcPp3Q,EAdAo3Q,MACiBkuH,EAajBtlY,EAbAslY,gBACkBnlP,EAYlBngJ,EAZAmgJ,iBACQl/F,EAWRjhD,EAXAihD,OACsBi0X,EAUtBl1a,EAVAk1a,qBACsBC,EAStBn1a,EATAm1a,qBACU51V,EAQVv/E,EARAu/E,SACe2hE,EAOflhJ,EAPAkhJ,cACc/9F,EAMdnjD,EANAmjD,aACYtC,EAKZ7gD,EALA6gD,WACemiG,EAIfhjJ,EAJAgjJ,cACem6O,EAGfn9X,EAHAm9X,cACax1S,EAEb3nF,EAFA2nF,YACUd,EACV7mF,EADA6mF,SAEAiuV,EAAuB3yR,GAAwBlhG,EAAQk/F,GACvDp8I,EAAQuwa,EAAoB,GAAG,GAAG5lT,OAAS,EAAI,EAC/C28N,EAAUi6C,EAAkBwvC,EAAuB,EACnDt1R,EAAqB,aAAeW,EACpCi1R,EAAsBxya,KAAKyxa,mBAAmBr5B,aAAa,CAC3D7d,cAAeA,EACfx1S,YAAaA,EACbd,SAAUA,EACVm8D,cAAeA,EACf7/F,aAAcA,EACdtC,WAAYA,IAEZ+zX,EAAiBhya,KAAKyxa,mBAAmBQ,kBAAkB1xX,EAActC,EAAYmiG,GAEzF,OAD0BsiP,EAAkBgvC,EAAoBvwa,GAAOq5B,QAAO,SAAC17B,EAAGyuV,GAAJ,OAAoBA,EAAc2kF,IAAyB,CAA3D,IAAgER,EAAoBvwa,IACvI4C,KAAI,SAACrJ,EAAIyG,GAChC,IACe2kF,EAIXprF,EAJAorF,UAEkBo3D,GAElBxiJ,EAHAqrF,QAGArrF,EAFAwiJ,kBACiBC,EACjBziJ,EADAyiJ,gBACIoxK,EAAY8iH,GAAO32a,EAAI,CAAC,YAAa,UAAW,mBAAoB,oBACxEiM,E9X/De,SAAC8ra,EAAax+Y,EAAMq+Y,EAAsBC,EAAsBG,GAC3F,IAAIC,EAAYJ,EAAqBE,EAAax+Y,EAAMy+Y,GACxD,OAAOtqT,GAAAA,OAAwBuqT,EAAWL,EAC7C,C8X4DsBM,CAAkBzxa,EAAQqxa,EAAqB1sV,EAAWwsV,EAAsBC,EAAsB,CAC7G51V,SAAUA,EACV2hE,cAAeA,EACf/9F,aAAcA,EACdyxX,eAAgBA,IAEpB,OAAOj5Z,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGw1S,GAAY,CACrCzoO,UAAWA,EACXn/E,KAAMA,EACN6tQ,MAAOxyL,GAAAA,SAAmB8D,EAAW0uL,GACrCi0E,QAASA,EACTvrM,iBAAkBwlP,GAAmBxlP,IAAqBN,EAC1DO,gBAAiBulP,GAAmBvlP,IAAoBP,GAE/D,GACJ,GArGL,oCAsGI,SAAuBi2R,EAAuBnB,EAAqBt0a,GAC/D,IACkCu0a,EAO9Bv0a,EAPAu0a,6BACW1zD,EAMX7gX,EANA6gX,UAC4B60D,EAK5B11a,EALA01a,2BACcvyX,EAIdnjD,EAJAmjD,aACYtC,EAGZ7gD,EAHA6gD,WACemiG,EAEfhjJ,EAFAgjJ,cACmB2yR,EACnB31a,EADA21a,kBAEA3uW,EAAU,GACV4uW,EAAmB,CAAC,EACpBC,EAAiBh1D,GAAa,EAC9B0zD,IACAqB,EAAmBhza,KAAKkza,2BAA2B91a,EAASy1a,EAAuBnB,EAAqB1xa,KAAKyxa,mBAAmBQ,kBAAkB1xX,EAActC,EAAYmiG,GAAgB,EAAG6yR,GAC/L7uW,EAAQhkE,KAAK4ya,EAAiBlB,UAElC,IAAIqB,EAAiBnza,KAAKkza,2BAA2B91a,EAASy1a,EAAuBnB,EAAqB,EAAGC,EAA+B,EAAI,EAAGsB,GAEnJ,OADA7uW,EAAQhkE,KAAK+ya,EAAerB,SACrB,CACH1tW,QAASA,EACTupV,qBAAsBmlB,EAA6BK,EAAexlB,0BAAuB,EACzFC,sBAAuBklB,EAA6BK,EAAevlB,2BAAwB,EAC3FnlB,qBAAsB0qC,EAAe1qC,qBACrCslB,sBAAuBolB,EAAeplB,sBACtCqlB,4BAA6BJ,EAAiBrlB,qBAC9C0lB,6BAA8BL,EAAiBplB,sBAC/C0lB,4BAA6BN,EAAiBvqC,qBAC9C8qC,6BAA8BP,EAAiBjlB,sBAC/CglB,kBAAmBA,EAE1B,GArIL,wCAsII,SAA2B31a,EAASy1a,EAAuBnB,EAAqB1f,EAAaviJ,EAAUwuG,GACnG,IACoB4vD,EAMhBzwa,EANAywa,eACWtiC,EAKXnuY,EALAmuY,UAC4BunC,EAI5B11a,EAJA01a,2BACQz0X,EAGRjhD,EAHAihD,OACkBk/F,EAElBngJ,EAFAmgJ,iBACiBmlP,EACjBtlY,EADAslY,gBAEAwvC,EAAuB3yR,GAAwBlhG,EAAQk/F,GACvDkrM,EAAUi6C,EAAkBwvC,EAAuBlgB,EAAcA,EACjEvpB,EAAuBl/X,KAAKo/D,MAAMklW,EAAiBplF,GACnDzoM,EAAqBD,GAAsBwrP,EAAWmmC,GACtD8B,EAAkBjqa,KAAKq7E,MAAMipV,EAAiB7tR,GAAsByoM,GAGpEgrF,EAA4BhrC,EAAuBhgD,EAEnDirF,EAJiB9zR,GAAgC8xR,GAIH8B,EAAkB/qF,EAEpE,MAAO,CACHqpF,QANUe,EAAsBpjK,GAAU1qQ,MAAM0jY,EAAsB+qC,GAOtE/qC,qBAAsBgrC,EACtB9lB,qBAAsBmlB,EANMW,EAA4Bx1D,OAMuB,EAC/E8vC,sBAAuB2lB,EACvB9lB,sBAAuBklB,EANMY,EAA6Bz1D,OAMuB,EAExF,KAjKL,KCzBa01D,GAAb,WACI,WAAYC,EAAmBC,EAAanC,EAAqBoC,IAAa,eAC1E9za,KAAKq4Y,eAAiBu7B,EAAkBG,uBAAuBF,GAC/D7za,KAAK0xa,oBAAsBA,EAC3B1xa,KAAKg0a,aAAeF,CACvB,CALL,gDAMI,SAAkBt7R,GACd,IAAIm8P,EAAW30Y,KAAKi0a,iBAAiBz7R,GACrC,GAAIm8P,EAIA,OADIA,EAAS,GAAGsyB,SADZnhV,SAIX,GAdL,6BAeI,SAAgB0yD,GACZ,IAAI07R,EAAUl0a,KAAKm0a,gBAAgB37R,GACnC,GAAI07R,EAQA,OAJIA,EAHkBA,EAAQvza,OAAS,GAEnCsma,SAGAlhV,OAIX,GA3BL,oCA4BI,SAAuByyD,EAAY1yD,EAAWC,EAASquV,GACnD,IAAI5yH,EAAYxhT,KAAKq0a,8BAA8B77R,GAC/C87R,EAAqB,SAAC7kK,EAAU89E,GAChC,IACc05E,EACVzlH,EAAU/xC,GAAU89E,GADpB05E,SAGW1hV,EAEX0hV,EAFAnhV,UACSN,EACTyhV,EADAlhV,QAMJ,GAJIquV,IACA7uV,EAAYvD,GAAAA,SAAmBuD,GAC/BC,EAAYxD,GAAAA,YAAsBuD,IAElCvD,GAAAA,iBAA2B,CACvBqD,SAAUS,EACVR,SAAUS,EACVR,UAAWA,EACXC,UAAWA,IAEf,OAAOD,CAEd,EACGgvV,EAA2B,WAE3B,IADA,IAAIhpC,EAAY/pF,EAAU,GAAG7gT,OACpB4sV,EAAc,EAAGA,EAAcg+C,IAAah+C,EACjD,IAAK,IAAI99E,EAAW,EAAGA,EAAW+xC,EAAU7gT,SAAU8uQ,EAAU,CAC5D,IAAIjsQ,EAAS8wa,EAAmB7kK,EAAU89E,GAC1C,GAAI/pV,EACA,OAAOA,CAEd,CAER,CAV8B,GAW3Bgxa,EAA6B,WAC7B,IAAK,IAAI/kK,EAAW,EAAGA,EAAW+xC,EAAU7gT,SAAU8uQ,EAElD,IADA,IAAIC,EAAM8xC,EAAU/xC,GACX89E,EAAc,EAAGA,EAAc79E,EAAI/uQ,SAAU4sV,EAAa,CAC/D,IAAI/pV,EAAS8wa,EAAmB7kK,EAAU89E,GAC1C,GAAI/pV,EACA,OAAOA,CAEd,CAER,CAVgC,GAWjC,OAAO+wa,EAA0BC,EAA4BA,EAA4BD,CAC5F,GA1EL,0CA2EI,SAA6B/7R,EAAY1yD,GACrC,IAAI2wR,EAAiBz2W,KAAKomY,kBAAkB5tP,GAC5C,OAAOi+N,EAAiB3wR,EAAY2wR,EAAiB3wR,CACxD,GA9EL,mCA+EI,SAAsB+6R,GAqBlB,IArB4B,WAEZroO,EAIZqoO,EAJAroO,WACW1yD,EAGX+6R,EAHA/6R,UACUuvC,EAEVwrP,EAFAxrP,SACOl0H,EACP0/W,EADA1/W,MAEA0hF,EAAYwyC,EAAWrzC,GAAAA,SAAmB8D,GAAWpwB,UAAYowB,EAAUpwB,UAC3E++W,EAAoB,SAAAxN,GACpB,IAAK5nR,GAAkB,EAAK20R,aAAa/vV,UACrC,OAAOjC,GAAAA,SAAmB8D,EAAWmhV,EAASnhV,WAElD,IAAImkV,EAAgBhD,EAASnhV,UAAUpwB,UACnCw0W,EAAcjD,EAASlhV,QAAQrwB,UACnC,OAAO2/D,EAAW4xS,EAASn7S,QAAUjpC,GAAaonV,GAAiBpnV,GAAaqnV,EAAcrnV,GAAaonV,GAAiBpnV,EAAYqnV,CAC3I,EACG,EAGAlqa,KAAKq4Y,eAFkBq8B,EAD3B,EACIA,sBACqBp8B,EAFzB,EAEIA,oBAEAtiE,EAAO3gN,IAAar1H,KAAKg0a,aAAap3R,mBAAqB83R,EAAsBl8R,GAAc,CAACk8R,EAAsBl8R,IAAe,GAAK8/P,EAAoB9/P,IAAe,GACxKi3H,EAAW,EAAGA,EAAWumE,EAAKr1U,SAAU8uQ,EAE7C,IADA,IAAIC,EAAMsmE,EAAKvmE,GACN89E,EAAc,EAAGA,EAAc79E,EAAI/uQ,SAAU4sV,EAAa,CAC/D,IAAIt9E,EAAOP,EAAI69E,GAED05E,EACVh3J,EADAg3J,SAEJ,GAAIjna,KAAK20a,0BAA0B1N,EAAUzuR,EAAYr3I,IACjDsza,EAAkBxN,GAClB,OAAOh3J,EAAKzlQ,QAGvB,CAGR,GAnHL,uCAoHI,SAA0By8Z,EAAUzuR,EAAYr3I,GAC5C,OAAO8la,EAASzuR,aAAeA,SAAe,IAAWr3I,GAAS8la,EAAS9la,QAAUA,EACxF,GAtHL,2BAuHI,SAAcq3I,GACV,IAGIgpK,EADAxhT,KAAKq4Y,eADLC,oBAEgC9/P,GACpC,GAAIgpK,EAIA,OADIA,EAAU,GAAG,GADbylH,SAEY5oX,MAEvB,GAlIL,oCAmII,WAAyB,WAIrB,OADIr+C,KAAKq4Y,eADLC,oBAEuBv0Y,KAAI,SAAAy9S,GAC3B,IACI,EADYA,EAAU,GAAG,GAIfylH,SAFFn7S,EADZ,EACIA,OACY0sB,EAFhB,EAEIA,WAEJ,MAAO,CACH1sB,OAAQA,EACR0sB,WAAYA,EACZ1yD,UAAW,EAAKsgT,kBAAkB5tP,GAClCzyD,QAAS,EAAK6uV,gBAAgBp8R,GAErC,IAAEh+G,QAAO,SAAAxjB,GAIN,QADIA,EADA8uE,SAGP,GACJ,GAzJL,6BA0JI,WACI,OAAO9lF,KAAKw2W,yBAAyBzyW,KAAI,SAAA2gK,GAIrC,OADIA,EADAlsB,UAGP,GACJ,GAjKL,2CAkKI,SAA8BA,GAI1B,OADIx4I,KAAKq4Y,eADLC,oBAEuB9/P,EAC9B,GAvKL,8BAwKI,SAAiBA,GACb,IAAIw3Q,EAAchwZ,KAAKq0a,8BAA8B77R,GACrD,GAAIw3Q,EAIA,OADIA,EAAY,GAAG,GADfiX,SAEan7S,OAA0BkkS,EAAY,GAA7BA,EAAY,EAE7C,GAhLL,6BAiLI,SAAgBx3Q,GACZ,IAGIw3Q,EADAhwZ,KAAKq4Y,eADLC,oBAEkC9/P,GACtC,GAAIw3Q,EAEA,OAAOA,EADYA,EAAYrvZ,OAAS,EAG/C,GA1LL,sCA2LI,SAAyB63I,GACrB,IAAIq8R,EAAW70a,KAAKm0a,gBAAgB37R,GACpC,OAAO,OAASq8R,QAAY,IAAWA,OAAW,EAASA,GAAU,OAASA,QAAY,IAAWA,OAAW,EAASA,EAASl0a,QAAU,GAAG6J,QAClJ,GA9LL,gCA+LI,SAAmBguI,GACf,IAAIq8R,EAAW70a,KAAKm0a,gBAAgB37R,GAIpC,OAFmBq8R,EADFA,EAASl0a,OACe,GAAGsma,SACX9la,MACT,GAAK0za,EAASl0a,MACzC,KArML,KCMWm0a,GAAoB,SAAChvV,EAAW5nC,GAAZ,OAA+B4nC,EAAY9D,GAAAA,iBAA2B8D,EAAW5nC,QAAkB,CAAnG,EAsBpB62X,GAAuB,SAACtlK,EAAUx7O,EAAMqqH,EAAe9gG,EAAc+C,GAC5E,GAAIkvN,EAAW,IAAM,EAAG,CACpB,IAAIkjK,EAbU,SAACljK,EAAUx7O,EAAMqqH,EAAe9gG,EAAc+C,GAChE,IAAKw0E,GAAAA,uBAAqC9gG,GACtC,OAAOA,EAEX,IAAI+gZ,EAA0BjgT,GAAAA,6BAA2CupB,GACrE96I,EAAS,IAAIV,KAAKkya,GAClBC,EAAmB1ra,KAAKoZ,MAAM66B,GAC9B03X,EAAsBr2R,GAA2BP,EAAe/9F,GAEpE,OADA/8C,EAAO2gI,gBAAgB3gI,EAAOk/E,kBAAoBuyV,EAAmBxlK,EAAWylK,GACzE1xa,CACV,CAGuB2xa,CAAgB1lK,EAAUx7O,EAAMqqH,EAAe9gG,EAAc+C,GAC7E,OAAO6nE,GAAAA,OAAwBuqT,EAAW,YAC7C,CACD,MAAO,EACV,ECrCGtB,GAAgC,SAAS94Y,EAAGtvB,GAC5C,IAAIkb,EAAI,CAAC,EACT,IAAK,IAAItmB,KAAK06B,EACNv6B,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,IAAMoL,EAAE7H,QAAQvD,GAAK,IAC7DsmB,EAAEtmB,GAAK06B,EAAE16B,IAGjB,GAAI,MAAQ06B,GAAK,oBAAsBv6B,OAAOsza,sBAAuB,CACjE,IAAI3oa,EAAI,EACR,IAAK9K,EAAIG,OAAOsza,sBAAsB/4Y,GAAI5vB,EAAI9K,EAAE8C,OAAQgI,IAChDM,EAAE7H,QAAQvD,EAAE8K,IAAM,GAAK3K,OAAOgK,UAAUupa,qBAAqB9ya,KAAK85B,EAAG16B,EAAE8K,MACvEwb,EAAEtmB,EAAE8K,IAAM4vB,EAAE16B,EAAE8K,IAGzB,CACD,OAAOwb,CACV,EAWYixZ,GAAb,WACI,WAAY3D,IAAoB,eAC5Bzxa,KAAKyxa,mBAAqBA,CAC7B,CAHL,sDAII,SAAwBr0a,EAASs0a,GAC7B,IACmBpzR,EASflhJ,EATAkhJ,cACc9gG,EAQdpgD,EARAogD,aACc+C,EAOdnjD,EAPAmjD,aACoBq8F,EAMpBx/I,EANAw/I,mBACe29O,EAKfn9X,EALAm9X,cACax1S,EAIb3nF,EAJA2nF,YACUd,EAGV7mF,EAHA6mF,SACem8D,EAEfhjJ,EAFAgjJ,cACYniG,EACZ7gD,EADA6gD,WAEAisW,EAAkBlqZ,KAAKyxa,mBAAmB4D,YAAY,CACtD96C,cAAeA,EACfx1S,YAAaA,EACbd,SAAUA,EACVm8D,cAAeA,EACf7/F,aAAcA,EACdtC,WAAYA,IAEZu0X,EAAsBxya,KAAKyxa,mBAAmBr5B,aAAa,CAC3D7d,cAAeA,EACfx1S,YAAaA,EACbd,SAAUA,EACVm8D,cAAeA,EACf7/F,aAAcA,EACdtC,WAAYA,IAEZq3X,EAAkB,EACtB,OAAO5D,EAAoB3ta,KAAI,SAAC2rQ,EAAKvuQ,GAC7B,IAAAzG,EAAKg1Q,EAAI,GAEG5jJ,EAQRpxH,EARAoxH,OACWhmC,EAOXprF,EAPAorF,UAEQznC,GAKR3jD,EANAqrF,QAMArrF,EALA2jD,QACYm6F,EAIZ99I,EAJA89I,WACkB0E,EAGlBxiJ,EAHAwiJ,iBACiBC,EAEjBziJ,EAFAyiJ,gBACO6yH,EACPt1Q,EADAyG,MAEJo0a,EAAgBlE,GAAO32a,EAAI,CAAC,SAAU,YAAa,UAAW,SAAU,aAAc,mBAAoB,kBAAmB,UAC7HoxH,IACAwpT,GAAmB,GAEvB,IAAIE,GAAar0a,EAAQm0a,GAAmBprB,EAC5C,OAAOnxY,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGw8Z,GAAgB,CACzCzvV,UAAWA,EACXgmC,OAAQA,EACRnlH,KAAMoua,GAAqBS,EAAW1vV,EAAWw4D,EAAe9gG,EAAc+C,GAC9ElC,OAAQu+F,EAAqBv+F,OAAS,EACtCm6F,WAAYoE,EAAqBpE,OAAa,EAC9C0E,iBAAkBN,GAAsBM,EACxCC,gBAAiBP,GAAsBO,EACvCh8I,MAAOoI,KAAKo/D,MAAMqnM,EAAYwiK,IAErC,GACJ,GA7DL,mCA8DI,SAAsBiD,EAAsBr4a,GACxC,IACmBuwa,EAOfvwa,EAPAuwa,cACUn/J,EAMVpxQ,EANAoxQ,SACqBggJ,EAKrBpxZ,EALAoxZ,oBACwBC,EAIxBrxZ,EAJAqxZ,uBACsB3uB,EAGtB1iY,EAHA0iY,qBACoBljP,EAEpBx/I,EAFAw/I,mBACsB6C,EACtBriJ,EADAqiJ,qBAGAi2R,EAAyB/H,GADP/wR,IAAuB6C,EAAuB,EAAI,GAEpES,EAAoBD,GAAqBuuH,EAAUinK,GACnDE,EAAeF,EAAqB1wa,MAAM2wa,EAAwBA,EAAyBx1R,GAC3Fm1Q,EAAgB,CAChB7G,oBAAqBA,EACrBC,uBAAwBA,EACxB3uB,qBAAsBA,GAGDkwB,EACrBhwZ,KAAK41a,8BAA8BD,EAAc/4R,GADjDi5R,oBAGJ,OADAxgB,EAAcrF,YAAcA,EACrBqF,CACV,GAtFL,2CAuFI,SAA8BsgB,EAAc/4R,GACxC,OAAO+4R,EAAaxxa,QAAO,SAAC6S,EAAMiwZ,GAC9B,IACwB6O,EAEpB9+Z,EAFA8+Z,mBACqBD,EACrB7+Z,EADA6+Z,oBAEAE,EAAoB9O,EAASzuR,WAcjC,OAbIu9R,IAAsBD,GACtBD,EAAoBz1a,KAAK,CACrB6wZ,UAAW,GACXnxB,qBAAsB1iP,KAA0B6pR,EAASn7S,OAAQ8wB,GACjEpE,WAAYu9R,EACZzza,IAAKq6I,GAAco5R,EAAmBn5R,KAG1CqqR,EAASn7S,OACT+pT,EAAoBA,EAAoBl1a,OAAS,GAAG6vZ,YAAcyW,EAElE4O,EAAoBA,EAAoBl1a,OAAS,GAAGswZ,UAAU7wZ,KAAK6ma,GAEhE,CACH6O,mBAAoBC,EACpBF,oBAAqBA,EAE5B,GAAE,CACCC,oBAAqB,EACrBD,oBAAqB,IAE5B,KAnHL,KCLIG,GAAUh0V,GAAAA,mBAA6B,QACvCi0V,GAASj0V,GAAAA,mBAA6B,OAC7Bk0V,GAAb,WACI,cAAc,eACVl2a,KAAKqya,eAAiB,EACtBrya,KAAKm2a,YAAa,EAClBn2a,KAAKo2a,aAAc,CACtB,CALL,4CAMI,SAAcniZ,GACV,OAAO,CACV,GARL,qCASI,SAAwB72B,GAAW,GATvC,8BAUI,SAAiBA,GACb,OAAO4C,KAAKq2a,wBAAwBj5a,EACvC,GAZL,oCAaI,SAAuBA,GAAS,MAEhBihD,EAURjhD,EAVAihD,OACiBqkV,EASjBtlY,EATAslY,gBACsBhlP,EAQtBtgJ,EARAsgJ,qBACoBd,EAOpBx/I,EAPAw/I,mBACe29O,EAMfn9X,EANAm9X,cACax1S,EAKb3nF,EALA2nF,YACUd,EAIV7mF,EAJA6mF,SACc1jC,EAGdnjD,EAHAmjD,aACYtC,EAEZ7gD,EAFA6gD,WACemiG,EACfhjJ,EADAgjJ,cAEJpgJ,KAAKs2a,oBAAoBl5a,GACzB4C,KAAKu2a,kBAAkBh2X,EAActC,EAAYmiG,GACjD,IAAIo2R,EAAaj9R,GAAal7F,GAC1Bm0X,EAAsBxya,KAAKo4Y,aAAa,CACxC7d,cAAeA,EACfx1S,YAAaA,EACbd,SAAUA,EACV1jC,aAAcA,EACdtC,WAAYA,EACZmiG,cAAeA,IAEf8pQ,EAAkBlqZ,KAAKq1a,YAAY,CACnC96C,cAAeA,EACfx1S,YAAaA,EACbd,SAAUA,EACVm8D,cAAeA,EACf7/F,aAAcA,EACdtC,WAAYA,IAEZ41X,EAAc,GACdtjB,EAAkBvwZ,KAAKy2a,yBAAyBr5a,EAAS8sZ,EAAiBsoB,GAC1EkE,EAAgB12a,KAAK22a,uBAAuBv5a,EAAS8sZ,EAAiBsoB,GAa1E,OAZAjiB,GAAmBsjB,EAAYzza,KAAKmwZ,IACpC,EAAAsjB,GAAYzza,KAAZ,iBAAoBs2a,IAChBh5R,IAAyBglP,IACzBmxC,EAAc7za,KAAK42a,2CAA2C/C,EAAa2C,IAE3E55R,IACAi3R,EAAc7za,KAAK62a,yCAAyChD,EAAa2C,IAEzE9zC,IACAmxC,EAAc7za,KAAK82a,uCAAuCjD,EAAa2C,IAEjDx2a,KAAK+2a,gBAAgBlD,EAElD,GA7DL,wDA8DI,SAA2CA,EAAa2C,GACpD,IAAIhza,EAASqwa,EAAY9va,KAAI,SAAA2rQ,GAAG,OAAIA,EAAI3qQ,OAAR,IAWhC,OAVAyxa,EAAWzxa,MAAM,GAAGrE,SAAQ,SAAC29C,EAAQl9C,GACjC,IAAIq3I,EAAar3I,EAAQ,EACzB0ya,EAAYnza,SAAQ,SAACgvQ,EAAKD,GAAa,MAC/BunK,EAAetnK,EAAI3rQ,KAAI,SAAAkja,GAAQ,OAAIluZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGkuZ,GAAW,CACpE5oX,OAAQA,EACRm6F,WAAYA,GAFmB,KAInC,EAAAh1I,EAAOisQ,IAAUrvQ,KAAjB,iBAAyB42a,GAC5B,GACJ,IACMxza,CACV,GA3EL,sDA4EI,SAAyCqwa,EAAa2C,GAClD,IAAIhza,EAASqwa,EAAY9va,KAAI,SAAA2rQ,GAAG,OAAIA,EAAI3qQ,OAAR,IAYhC,OAXAyxa,EAAWzxa,MAAM,GAAGrE,SAAQ,SAAC29C,EAAQl9C,GACjC,IAAIq3I,EAAar3I,EAAQ,EACrB81a,EAAepD,EAAY9va,KAAI,SAAA+ha,GAK/B,OAJcA,EAAS/ha,KAAI,SAAAkja,GAAQ,OAAIluZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGkuZ,GAAW,CACpEzuR,WAAYA,EACZn6F,OAAQA,GAFuB,GAKtC,IACD76C,EAAOpD,KAAP,MAAAoD,GAAM,QAASyza,GAClB,IACMzza,CACV,GA1FL,oDA2FI,SAAuCqwa,EAAa2C,GAChD,IAAIU,EAAqBV,EAAWzxa,MAAM,GACtCoya,EAAsBD,EAAmBv2a,OACzC6C,EAASqwa,EAAY9va,KAAI,SAAA+ha,GACzB,IAAIsR,EAAwBtR,EAAS3ha,QAAO,SAACgta,EAAYlhK,GACrD,IAAIonK,EAAqB,GAAH,gBAAOlG,GAAP,EAAmBp4Z,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGk3P,GAAO,CAClE/yH,kBAAkB,EAClBC,gBAAiB,IAAMg6R,MAFL,QAGfD,EAAmBnza,KAAI,SAACs6C,EAAQl9C,GAAT,OAAmB4X,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGk3P,GAAO,CAC1E5xN,OAAQA,EACRm6F,WAAYr3I,EAAQ,EACpB+7I,kBAAkB,EAClBC,gBAAiBh8I,IAAUg2a,EAAsB,GAJvB,MAM9B,OAAOE,CACV,GAAE,IACH,OAAOD,CACV,IACD,OAAO5za,CACV,GA9GL,6BA+GI,SAAgBqwa,GACZ,IAAIyD,EAAmBzD,EAAY,GAAGlza,OAsBtC,OAnBIkza,EAAY1va,QAAO,SAAC6S,EAAM04P,EAAKD,GAC/B,IACuB8nK,EAEnBvga,EAFAuga,kBACoBC,EACpBxga,EADAwga,mBAEAniT,EAAWq6I,EAAI,GAAG5jJ,OAClB2rT,GAAWhoK,EAAW8nK,GAAqBD,EAC3CI,EAA2BriT,EAAWkiT,EAAoB,EAAIA,EAIlE,OAHAC,EAAmB/nK,GAAU/uQ,SAAQ,SAACuvQ,EAAMs9E,GACxCt9E,EAAK3tQ,IAAMm1a,EAAUlqF,CACxB,IACM,CACHgqF,kBAAmBG,EACnBF,mBAAoBA,EAE3B,GAAE,CACCD,kBAAmB,EACnBC,mBAAoB3D,IAlBpB2D,kBAqBP,GAvIL,iCAwII,SAAoB9F,EAAqBt0a,GACrC,IACcoxQ,EAMVpxQ,EANAoxQ,SACgBq/J,EAKhBzwa,EALAywa,eACeF,EAIfvwa,EAJAuwa,cACWpiC,EAGXnuY,EAHAmuY,UACoB3uP,EAEpBx/I,EAFAw/I,mBACsB6C,EACtBriJ,EADAqiJ,qBAEAk4R,EAAa,SAACjoK,EAAKD,EAAUtpC,EAAYt6N,GACzC,IAAI+ra,OAAe,IAAW/ra,EAAQs6N,EAAat6N,OAAQ,EAC3D,OAAO6jQ,EAAI3qQ,MAAMohO,EAAYyxM,GAAc7za,KAAI,SAACkja,EAAU15E,GAAX,MAA4B,CACvE05E,SAAUA,EACVz8Z,SAAU,CACNilQ,SAAUA,EACV89E,YAAaA,GAJ0B,GAOlD,EACGmoF,EAAyB/H,EACzBkK,EAAiB,GACjB73a,KAAK83a,yBAAyBl7R,EAAoB6C,KAClDi2R,IACAmC,EAAiBF,EAAWjG,EAAoB,GAAI,EAAG7D,EAAgBtiC,IAE3E,IAAIrrP,EAAoBD,GAAqBuuH,EAAUkjK,GAEvD,MAAO,CACHmG,eAAgBA,EAChBE,aAHerG,EAAoB3sa,MAAM2wa,EAAwBA,EAAyBx1R,GAAmBn8I,KAAI,SAAC2rQ,EAAKD,GAAN,OAAmBkoK,EAAWjoK,EAAKD,EAAUo+J,EAAgBtiC,EAA7D,IAKxH,GAvKL,sCAwKI,SAAyB3uP,EAAoB6C,GACzC,OAAQ7C,GAAsB6C,CACjC,GA1KL,gCA2KI,SAAmBiyR,EAAqBmC,EAAaz2a,GACjD,IACyBoxZ,EAYrBpxZ,EAZAoxZ,oBACwBC,EAWxBrxZ,EAXAqxZ,uBACsBd,EAUtBvwZ,EAVAuwZ,qBACuBC,EASvBxwZ,EATAwwZ,sBACWriB,EAQXnuY,EARAmuY,UACU/8H,EAOVpxQ,EAPAoxQ,SACem/J,EAMfvwa,EANAuwa,cACgBE,EAKhBzwa,EALAywa,eAC4BiF,EAI5B11a,EAJA01a,2BACsBhzC,EAGtB1iY,EAHA0iY,qBACoBljP,EAEpBx/I,EAFAw/I,mBACsB6C,EACtBriJ,EADAqiJ,qBAGgBo4R,EAEhBhE,EAFAgE,eAGA,EADAhE,EADAkE,aAIa5za,QAAO,SAACugK,EAAOohQ,GAC5B,IACwBgQ,EAEpBpxQ,EAFAoxQ,mBACa9lB,EACbtrP,EADAsrP,YAEAgoB,EAAclS,EAAS/ha,KAAI,SAAA+hJ,GAI3B,OADIA,EADAmhR,QAGP,IACG7B,EAAY4S,EAAY,GACxBC,EAAc7S,EAAUt5S,OACxBiqT,EAAoB3Q,EAAU5sR,WAiBlC,OAhBIu9R,IAAsBD,GACtB9lB,EAAY5vZ,KAAK,CACb6wZ,UAAW,GACXnxB,qBAAsB1iP,KAA0B66R,EAAar7R,GAC7DpE,WAAYu9R,EACZzza,IAAKq6I,GAAco5R,EAAmBn5R,KAG1Cq7R,EACAjoB,EAAYA,EAAYrvZ,OAAS,GAAG6vZ,YAAcwnB,EAElDhoB,EAAYA,EAAYrvZ,OAAS,GAAGswZ,UAAU7wZ,KAAK,CAC/C2rZ,MAAOisB,EACP11a,IAAK01a,EAAY,GAAG11a,IAAMura,IAG3B,CACH7d,YAAaA,EACb8lB,mBAAoBC,EAE3B,GAAE,CACCD,oBAAqB,EACrB9lB,YAAa,KArCAA,EADjB,EACIA,YAuCAhwZ,KAAK83a,yBAAyBl7R,EAAoB6C,KAClDuwQ,EAAY,GAAGQ,YAAcqnB,EAAe9za,KAAI,SAAAwiJ,GAI5C,OADIA,EADA0gR,QAGP,KAEL,IAAIiR,EAAiBt4R,GAAgC8xR,GACjDyG,EAAgBr4R,GAA+B4xR,GAC/C1xR,EAAqBD,GAAsBwrP,EAAWmmC,GACtDxxR,EAAoBD,GAAqBuuH,EAAUkjK,GACvD,MAAO,CACH1hB,YAAaA,EACbxB,oBAAqBA,EACrBC,uBAAwBA,EACxBd,qBAAsBmlB,EAA6BnlB,OAAuB,EAC1EC,sBAAuBklB,EAA6BllB,OAAwB,EAC5E9tB,qBAAsBA,EACtB2I,qBAAsBolC,EACtB9f,2BAAuB,IAAWxiB,EAAY,EAAI2sC,EAAiBrK,EAAiB7tR,EACpFiwQ,mBAAoB0d,EACpBzd,sBAAuBioB,EAAgBxK,EAAgBztR,EAE9D,GA9PL,oCA+PI,SAAuB9iJ,EAASoxQ,EAAUgkK,GAEtC,IADA,IAAIkE,EAAgB,GACXjnK,EAAW,EAAGA,EAAWjB,EAAUiB,GAAY,EACpDinK,EAAct2a,KAAKJ,KAAKo4a,kBAAkBh7a,GAAS,EAAOqyQ,EAAUjB,EAAUgkK,IAElF,OAAOkE,CACV,GArQL,sCAsQI,SAAyBt5a,EAASoxQ,EAAU58P,GACxC,OAAKxU,EAAQqiJ,qBAGNz/I,KAAKo4a,kBAAkBh7a,GAAS,EAAM,EAAGoxQ,EAAU58P,GAF/C,IAGd,GA3QL,+BA4QI,SAAkBxU,EAAS0uH,EAAQ2jJ,EAAUjB,EAAU58P,GAEnD,IADA,IAAIk0Z,EAAW,GACNv4E,EAAc,EAAGA,EAAc37U,IAAe27U,EAAa,CAChE,IAAI8qF,EAAgBr4a,KAAKwgX,YAAY/wG,EAAU89E,EAAanwV,EAAS0uH,GACrEusT,EAAcl3a,MAAQsuQ,EAAW79P,EAAc27U,EAC/C8qF,EAAcn7R,iBAAmBl9I,KAAKs4a,kBAAkB7oK,EAAU89E,EAAanwV,EAASoxQ,EAAU58P,GAClGyma,EAAcl7R,gBAAkBn9I,KAAKu4a,iBAAiB9oK,EAAU89E,EAAanwV,EAASoxQ,EAAU58P,GAChGk0Z,EAAS1la,KAAKi4a,EACjB,CACD,OAAOvS,CACV,GAtRL,yBAuRI,SAAYr2J,EAAU89E,EAAanwV,EAAS0uH,GACxC,OAAOA,EAAS9rH,KAAKw4a,sBAAsBp7a,EAASqyQ,EAAU89E,GAAevtV,KAAKy4a,gBAAgBr7a,EAASqyQ,EAAU89E,EACxH,GAzRL,6BA0RI,SAAgBnwV,EAASqyQ,EAAU89E,GAC/B,IACYlvS,EAKRjhD,EALAihD,OACckC,EAIdnjD,EAJAmjD,aACYtC,EAGZ7gD,EAHA6gD,WACU0+B,EAEVv/E,EAFAu/E,SACeyjE,EACfhjJ,EADAgjJ,cAEAo2R,EAAaj9R,GAAal7F,GAC1BynC,EAAY9lF,KAAK04a,qBAAqBt7a,EAASqyQ,EAAU89E,EAAavtV,KAAKiya,kBAAkB1xX,EAActC,EAAYmiG,IAEvH9lJ,EAAO,CACPwrF,UAAWA,EACXC,QAHU/lF,KAAK80I,iBAAiBhvD,EAAWnJ,EAAU1+B,GAIrD6tE,OAAQ9rH,KAAKo2a,YACb59R,WAAY,GAKhB,OAHIg+R,EAAW71a,OAAS,IACpBrG,EAAK+jD,OAASm4X,EAAW,IAEtBl8a,CACV,GA/SL,mCAgTI,SAAsB8C,EAASqyQ,EAAU89E,GACrC,IAAIjzV,EAAO0F,KAAKy4a,gBAAgBr7a,EAASqyQ,EAAU89E,GAC/CznQ,EAAY9D,GAAAA,SAAmB1nF,EAAKwrF,WACxC,OAAO/sE,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGze,GAAO,CAChCwrF,UAAWA,EACXC,QAASD,EACTgmC,QAAQ,GAEf,GAxTL,kCAyTI,SAAqB1uH,EAASqyQ,EAAU89E,EAAaykF,GACjD,IACmB1zR,EACflhJ,EADAkhJ,cAGc/9F,EAIdnjD,EAJAmjD,aACUo8B,EAGVv/E,EAHAu/E,SACgBz+B,EAEhB9gD,EAFA8gD,eACeq8U,EACfn9X,EADAm9X,cAEAo+C,EAA2Br6R,EAAc18D,aAAer4E,KAAKo/D,MAAMpoB,GACvE,GAAIo4X,EAA0B,CAC1B,IAAIC,EAAuBl6R,GAA2BJ,EAAe/9F,GACrE+9F,EAAgB,IAAIx7I,KAAK81a,EAAuB52V,GAAAA,mBAA6B,OAChF,CACD,IAAI62V,EAAkB74a,KAAKo4Y,aAAah7Y,GACpC07a,EAAe94a,KAAKq1a,YAAYj4a,GAChC4yQ,EAAYhwQ,KAAK+4a,oBAAoBtpK,EAAU89E,EAAaurF,EAAcD,GAC1EG,EAAqBh5a,KAAKi5a,sBAAsBjpK,EAAWrzL,EAAUq1V,GACrEkH,EAAgBl5a,KAAKm2a,WAAan2a,KAAKm5a,2BAA2B5rF,EAAavtV,KAAKsrW,kBAAkBptT,GAAiB26X,EAAiBt+C,GAAiB,EACzJ6+C,EAAoB96R,EAAc5oF,UAClCqvB,EAAc,IAAIjiF,KAAKs2a,EAAoBJ,EAAqBE,GAChEr3C,EAAqB82C,EAA2B,EAAI32V,GAAAA,uBAAiCs8D,EAAev5D,GAExG,OADAA,EAAY5E,QAAQ4E,EAAYrvB,UAAYmsU,GACrC98S,CACV,GAlVL,mCAmVI,SAAsBirL,EAAWrzL,EAAUq1V,GAGvC,OAAOr1V,EAAWqzL,EAFHzmQ,KAAKo/D,MAAMqnM,EAAYgiK,GACFhya,KAAKy0W,cAE5C,GAvVL,wCAwVI,SAA2BlnB,EAAarvS,EAAgBtsC,EAAa2oX,GACjE,IAAI8+C,EAAqB9va,KAAKkuB,IAAI,EAAGymB,EAAiB,GAClDo7X,EAAgB1na,EAAc2oX,EAC9Bg/C,EAAehwa,KAAKo/D,OAAO4kR,EAAc8rF,GAAsBC,GACnE,OAAOrD,GAASsD,EAAe,CAClC,GA7VL,8BA8VI,SAAiBzzV,EAAWnJ,EAAU1+B,GAClC,IAAIz6C,EAAS,IAAIV,KAAKgjF,GAEtB,OADAtiF,EAAO2gI,gBAAgB3gI,EAAOk/E,kBAAoBn5E,KAAKoZ,MAAMg6D,IACtDn5E,CACV,GAlWL,iCAmWI,SAAoBisQ,EAAU89E,EAAa/+E,EAAUqqK,GACjD,OlY/UwB,SAACppK,EAAU89E,EAAa/+E,GAAxB,OAAqC++E,EAAc/+E,EAAWiB,CAA9D,CkY+UjB+pK,CAAmB/pK,EAAU89E,EAAa/+E,EACpD,GArWL,oCAsWI,SAAuBqlK,GACnB,IACoBgE,EAEhBhE,EAFAgE,eAIwBv/B,EAFxBu7B,EADAkE,aAIa5za,QAAO,SAACs1a,EAAiB3T,GACtC,IAC4B4T,EAGxBD,EAHAC,uBACkBC,EAElBF,EAFAE,iBACoB7D,EACpB2D,EADA3D,mBAGYC,EACZjQ,EAAS,GAAGmB,SADZzuR,WAEAohS,EAAkB7D,IAAsBD,EAAqB6D,EAAmB,EAAI,EAaxF,OAZA7T,EAASpla,SAAQ,SAAAuvQ,GACb,IACgBz3H,EACZy3H,EAAKg3J,SADLzuR,WAECkhS,EAAuBlhS,KACxBkhS,EAAuBlhS,GAAc,IAEpCkhS,EAAuBlhS,GAAYohS,KACpCF,EAAuBlhS,GAAYohS,GAAmB,IAE1DF,EAAuBlhS,GAAYohS,GAAiBx5a,KAAK6vQ,EAC5D,IACM,CACHypK,uBAAwBA,EACxBC,iBAAkBC,EAClB9D,mBAAoBC,EAE3B,GAAE,CACC2D,uBAAwB,GACxBC,kBAAmB,EACnB7D,oBAAqB,IA/BrB4D,uBAiCAhF,EAAwB,GAU5B,OATA,OAASmD,QAAkB,IAAWA,GAA0BA,EAAen3a,SAAQ,SAAAuvQ,GACnF,IACgBz3H,EACZy3H,EAAKg3J,SADLzuR,WAECk8R,EAAsBl8R,KACvBk8R,EAAsBl8R,GAAc,IAExCk8R,EAAsBl8R,GAAYp4I,KAAK6vQ,EAC1C,IACM,CACHykK,sBAAuBA,EACvBp8B,oBAAqBA,EAE5B,GA3ZL,+BA4ZI,SAAkB7oI,EAAU89E,EAAanwV,EAASoxQ,EAAU58P,GACxD,IACsB2rI,EAGlBngJ,EAHAmgJ,iBACQl/F,EAERjhD,EAFAihD,OACiBqkV,EACjBtlY,EADAslY,gBAEA/zS,EAAawqD,GAAc96F,GAC/B,OAAIqkV,EACOn1C,EAAc5+P,IAAe,EAEpC4uD,IAAqB9G,GACd82M,EAAc37U,IAAgB,EAElC69P,EAAWjB,IAAa,CAClC,GA1aL,8BA2aI,SAAiBiB,EAAU89E,EAAanwV,EAASoxQ,EAAU58P,GACvD,IACsB2rI,EAGlBngJ,EAHAmgJ,iBACQl/F,EAERjhD,EAFAihD,OACiBqkV,EACjBtlY,EADAslY,gBAEA/zS,EAAawqD,GAAc96F,GAC/B,OAAIqkV,GACQn1C,EAAc,GAAK5+P,IAAe,EAE1C4uD,IAAqB9G,IACb82M,EAAc,GAAK37U,IAAgB,GAEvC69P,EAAW,GAAKjB,IAAa,CACxC,GAzbL,yCA0bI,SAA4BqlK,EAAagG,GAAe,WAEjChU,EAEfgU,EAFAhU,cACamB,EACb6S,EADA7S,YAEJ,IAAKnB,IAAkBmB,EACnB,OAAO6M,EAEX,IACoBgE,EAEhBhE,EAFAgE,eAGAiC,EADAjG,EADAkE,aAEgCh0a,KAAI,SAAA2rQ,GAAG,OAAI,EAAKqqK,kCAAkCrqK,EAAKm2J,EAAemB,EAA/D,IAE3C,MAAO,CACH6Q,eAFgB73a,KAAK+5a,kCAAkClC,EAAgBhS,EAAemB,GAGtF+Q,aAAc+B,EAErB,GA5cL,+CA6cI,SAAkCE,EAASnU,EAAemB,GACtD,OAAOgT,EAAQj2a,KAAI,SAAAksQ,GACf,IAAI,EAKAA,EAAKg3J,SAJE9la,EADX,EACIA,MACYq3I,EAFhB,EAEIA,WACQ1sB,EAHZ,EAGIA,OACWhmC,EAJf,EAIIA,UAEAm0V,EAAuBpU,EAAclvJ,WAAU,SAAAhwH,GAC/C,IACWuzR,EAIPvzR,EAJAxlJ,MACYg5a,EAGZxzR,EAHAnO,WACQ4hS,EAERzzR,EAFA76B,OACWuuT,EACX1zR,EADA7gE,UAEJ,OAAO0yD,IAAe2hS,IAA2Bh5a,IAAU+4a,QAAqB,IAAWA,GAAqBp0V,EAAUpwB,YAAc2kX,EAAsB3kX,cAAgBo2D,MAAasuT,CAC9L,IACGzgO,IAAcqtN,GAAe7la,IAAU6la,EAAYC,SAAS9la,OAASq3I,IAAewuR,EAAYC,SAASzuR,YAAc1sB,IAAWk7S,EAAYC,SAASn7S,OAC3J,OAAK6tF,IAAc,IAAMsgO,GAGlBlha,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGk3P,GAAO,CAChCg3J,UAAUluZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGk3P,EAAKg3J,UAAW,CAC5CthM,WAAYs0M,GAAwB,EACpCtgO,UAAWA,MALRs2D,CAQd,GACJ,GAzeL,yBA0eI,SAAY7vH,GACR,OAAOA,EAAgB41R,EAC1B,GA5eL,kCA6eI,SAAqBz7C,GACjB,OAAOv4S,GAAAA,mBAA6B,OAASu4S,CAChD,GA/eL,iCAgfI,SAAoBn9X,GAAW,GAhfnC,+BAifI,SAAkBmjD,EAActC,EAAYmiG,GACxC,IAAI58I,EAASk8I,GAAqBn/F,EAActC,GAAcmiG,EAC9D,OAAO72I,KAAKq7E,KAAKphF,EACpB,GApfL,0BAqfI,SAAapG,GACT,IACmBm9X,EAKfn9X,EALAm9X,cACUt2S,EAIV7mF,EAJA6mF,SACc1jC,EAGdnjD,EAHAmjD,aACYtC,EAEZ7gD,EAFA6gD,WACemiG,EACfhjJ,EADAgjJ,cAEA4xR,EAAiBhya,KAAKiya,kBAAkB1xX,EAActC,EAAYmiG,GAClEk6R,EAAmB36R,GAAiB17D,GAAY+tV,EAAiB,EACrE,OAAOhya,KAAKqya,eAAiB93C,EAAgB+/C,CAChD,GAhgBL,yBAigBI,SAAYl9a,GACR,IACc6mF,EAIV7mF,EAJA6mF,SACc1jC,EAGdnjD,EAHAmjD,aACYtC,EAEZ7gD,EAFA6gD,WACemiG,EACfhjJ,EADAgjJ,cAEA4xR,EAAiBhya,KAAKiya,kBAAkB1xX,EAActC,EAAYmiG,GAEtE,OADqBT,GAAiB17D,GAA6B,EAAjB+tV,CAErD,GA3gBL,+BA4gBI,SAAkBzxX,EAActC,EAAYmiG,GACxCpgJ,KAAKy0W,eAAiBwhE,GAASj2a,KAAKk9Y,sBAAsB38V,EAActC,EAAYmiG,EACvF,GA9gBL,mCA+gBI,SAAsB7/F,EAActC,EAAYmiG,GAE5C,OAAOA,EADcpgJ,KAAKiya,kBAAkB1xX,EAActC,EAAYmiG,GAC9B41R,EAC3C,GAlhBL,+BAmhBI,SAAkBv3R,GACd,OAAOA,CACV,KArhBL,KCnBa87R,GAAb,2JACI,SAAwBn9a,GACpB,OCJ4B,SAAC2nF,EAAaxkC,EAAculC,EAAWu4D,GACvE,IAAIynP,EAAgB1nP,GAAsBt4D,EAAWf,EAAas5D,EAAkBv4D,GACpF,OAAOm4D,GAAc6nP,EAAevlV,EACvC,CDCci6X,CAAuBp9a,EAAQ2nF,YAAa3nF,EAAQmjD,aAAcnjD,EAAQ0oF,UAAW9lF,KAAKy6a,qBAAqBr9a,EAAQm9X,eACjI,KAHL,GAA0C27C,IEC/B93R,GAAwB,SAACt4D,EAAWf,EAAaw1S,EAAej8O,GACvE,IAAKx4D,EACD,OAAO,IAAIhjF,KAAKiiF,GAMpB,IAJA,IAAIw5D,EAAmB,IAAIz7I,KAAKw7I,GAC5Bo8R,EAAqB,IAAI53a,KAAKw7I,GAC9B38D,EAAO48D,EAAiB7oF,WAAaqvB,EAAYrvB,UAAY,GAAK,EAClEqwB,EAAU,IAAIjjF,KAAK,IAAIA,KAAK43a,EAAmB17V,SAAS07V,EAAmBt7V,WAAauC,EAAO44S,MAC3Fv8O,GAAcj5D,EAAaw5D,EAAkBx4D,EAASpE,IAC1D48D,EAAmB,IAAIz7I,KAAKijF,GACxBpE,EAAO,GACP48D,EAAiBt/D,QAAQ,GAE7B8G,EAAU,IAAIjjF,KAAK,IAAIA,KAAKijF,EAAQ/G,SAAS+G,EAAQ3G,WAAauC,EAAO44S,KAE7E,OAAO54S,EAAO,EAAI48D,EAAmBx4D,CACxC,EAQUyzV,GAAqB,SAAC/pK,EAAU89E,EAAazuV,EAAG8S,GAA3B,OAA2C69P,EAAW79P,EAAc27U,CAApE,EACrBotF,GAAsC,SAACrrK,EAAUirH,GAAX,OAA6B,IAAMjrH,EAAStvL,WAAau6S,EAAgB,CAAzE,EACtCqwB,GAAc,SAAC32X,EAAMsmW,GAC5B,OAAIogD,GAAoC1mZ,EAAMsmW,GAEnC,CADSnyQ,GAAAA,cAA+B,eAAen0F,EAAKmrD,YAChDgpC,GAAAA,OAAwBn0F,EAAM,QAAQxnB,KAAK,KAE3D27G,GAAAA,OAAwBn0F,EAAM,KACxC,ECpBG2mZ,GAAsB54V,GAAAA,mBAA6B,OAE1C64V,GAAb,0CACI,aAAc,6BACV,eAAS/ia,YACJs+Z,iBAAc,EAFT,CAGb,CAJL,0CAKI,SAAY3mK,EAAU89E,EAAanwV,EAAS0uH,GACxC,IAAIxxH,GAAO,0DAAkBm1Q,EAAU89E,EAAanwV,GAAS,GAE9C0oF,EACXxrF,EADAwrF,UAGeo5D,EAGf9hJ,EAHA8hJ,cACoB1qB,EAEpBp3H,EAFAo3H,mBACe+lQ,EACfn9X,EADAm9X,cAMJ,OAJAjgY,EAAKk6Q,MAAQx0Q,KAAK86a,cAAch1V,EAAWo5D,EAAe1qB,GAC1Dl6H,EAAK80Z,WAAapvZ,KAAK+6a,aAAaj1V,EAAW9lF,KAAKg7a,gBAAiBh7a,KAAKi7a,iBAC1E3gb,EAAK+0Z,gBAAkBsrB,GAAoC70V,EAAWy0S,GACtEjgY,EAAKqM,KAAOikZ,GAAY9kU,EAAWy0S,GAC5BjgY,CACV,GApBL,2BAqBI,SAAc25B,EAAMirH,EAAe1qB,GAC/B,OAAOxyC,GAAAA,SAAmB/tD,EAAMgrH,GAASC,EAAe1qB,GAC3D,GAvBL,0BAwBI,SAAa86I,EAAUzzI,EAASF,GAC5B,OAAQ35C,GAAAA,YAAsBstL,EAAUzzI,EAASF,EAAS,OAC7D,GA1BL,iCA2BI,SAAoB8zI,EAAU89E,EAAa/+E,EAAU58P,GACjD,OAAO4na,GAAmB/pK,EAAU89E,EAAa/+E,EAAU58P,EAC9D,GA7BL,8BA8BI,SAAiBk0E,EAAWnJ,EAAU1+B,GAClC,OAAOggG,GAAcn4D,EAAW7nC,EACnC,GAhCL,yBAiCI,WACI,OAAO28X,EACV,GAnCL,qCAoCI,SAAwBx9a,GACpB,ODlC4B,SAAC2nF,EAAaxkC,EAAculC,EAAWy0S,EAAe97O,GACtF,IAAIy8R,EAAY98R,GAAsBt4D,EAAWf,EAAaw1S,EAAev4S,GAAAA,kBAA4B8D,IACrGq1V,EAAiBn5V,GAAAA,kBAA4Bk5V,GAC7Ch9X,EAAiBsgG,GAA4BC,GAC7CqnP,EAAgB9jT,GAAAA,iBAA2Bm5V,EAAgBj9X,GAC/D,OAAO+/F,GAAc6nP,EAAevlV,EACvC,CC4Bci6X,CAAuBp9a,EAAQ2nF,YAAa3nF,EAAQmjD,aAAcnjD,EAAQ0oF,UAAW1oF,EAAQm9X,cAAev6X,KAAKsrW,kBAAkBluW,EAAQ8gD,gBACrJ,GAtCL,iCAuCI,SAAoB9gD,GAChB,IACmBm9X,EAGfn9X,EAHAm9X,cACWz0S,EAEX1oF,EAFA0oF,UACaf,EACb3nF,EADA2nF,YAEAo2V,EAAiBn5V,GAAAA,kBAA4B8D,GAC7Co1V,EAAY98R,GAAsBt4D,EAAWf,EAAaw1S,EAAe4gD,GAC7En7a,KAAKg7a,gBAAkB,IAAIl4a,KAAKo4a,EAAUj8V,QAAQ,IAClD,IAAIm8V,EAAgB,IAAIt4a,KAAKo4a,EAAUl8V,SAASk8V,EAAU97V,WAAam7S,IACvEv6X,KAAKi7a,gBAAkB,IAAIn4a,KAAKs4a,EAAcn8V,QAAQ,GACzD,GAlDL,0BAmDI,WACI,OArDW,CAsDd,GArDL,yBAsDI,SAAY7hF,GACR,IAAI1C,EACAorF,EAAY,IAAIhjF,KAAK1F,EAAQ2nF,aACjCe,EAAU7G,QAAQ,GAClB,IAAI8G,EAAU,IAAIjjF,KAAKgjF,GAGvB,OAFAC,EAAQ/G,SAAS+G,EAAQ3G,WAAahiF,EAAQm9X,eAC9Cx0S,EAAQ9G,QAAQ,GCpBjB,SAA2Co8V,EAAUC,EAAQp9X,GAChE,IAAIq9X,EAAkBC,GAAsBH,EAAUn9X,GAClDu9X,EAXD,SAA8BxnZ,EAAMiqB,GACvC,IAAIwjC,EAAU85V,GAAsBvnZ,EAAMiqB,GAE1C,OADAwjC,EAAQzC,QAAQyC,EAAQ1B,UAhCT,EAgCoC,GAC5C0B,CACV,CAOuBg6V,CAAqBJ,EAAQp9X,GAC7Cy9X,EAPD,SAAmCN,EAAUC,GAChD,IAAIM,EAAS55V,GAAAA,SAAmBs5V,GAAQ5lX,UAAYssB,GAAAA,SAAmBq5V,GAAU3lX,UACjF,OAAOnsD,KAAKoZ,MAAMi5Z,EAASC,IAAa,CAC3C,CAImBC,CAA0BP,EAAiBE,GA1C5C,EA2Cf,OAAOlya,KAAKkuB,IAAIkkZ,EAAW,EAC9B,CDgBcI,CAAkCj2V,EAAWC,EAAS,QAAUrrF,EAAK0C,EAAQ8gD,sBAAmB,IAAWxjD,EAAKA,EAAK0tH,GAAAA,sBAC/H,GA9DL,+BA+DI,WACI,OAAO,CACV,GAjEL,+BAkEI,WACIpoH,KAAKy0W,eAAiB,CACzB,KApEL,GAA4CyhE,IERxC0E,GAAsB54V,GAAAA,mBAA6B,OAC1Cg6V,GAAb,uJACI,SAAoBvsK,EAAU89E,EAAa/+E,EAAU58P,GACjD,OAAO4na,GAAmB/pK,EAAU89E,EAAa/+E,EAAU58P,EAC9D,GAHL,8BAII,SAAiBk0E,EAAWnJ,EAAU1+B,GAClC,OAAOggG,GAAcn4D,EAAW7nC,EACnC,GANL,yBAOI,WACI,OAAO28X,EACV,GATL,qCAUI,SAAwBx9a,GACpB,OClB4B,SAAC2nF,EAAaxkC,EAAculC,EAAWy0S,GACvE,IAAIuL,EAAgB9jT,GAAAA,kBAA4Bo8D,GAAsBt4D,EAAWf,EAAaw1S,EAAev4S,GAAAA,kBAA4B8D,KACzI,OAAOm4D,GAAc6nP,EAAevlV,EACvC,CDeci6X,CAAuBp9a,EAAQ2nF,YAAa3nF,EAAQmjD,aAAcnjD,EAAQ0oF,UAAW1oF,EAAQm9X,cACvG,GAZL,0BAaI,SAAan9X,GAMT,IALA,IACmBm9X,EAEfn9X,EAFAm9X,cACax1S,EACb3nF,EADA2nF,YAEAwmT,EAAY,EACP5iY,EAAI,EAAGA,GAAK4xX,EAAe5xX,IAChC4iY,GAAa,IAAIzoY,KAAKiiF,EAAYnF,cAAemF,EAAY3F,WAAaz2E,EAAG,GAAGq3E,UAEpF,OAAOurT,CACV,GAvBL,+BAwBI,WACIvrY,KAAKy0W,eAAiB,CACzB,KA1BL,GAAoDyhE,IEPvC+F,GAAb,0CACI,aAAc,6BACV,eAASnka,YACJu6Z,eAAiB,EAFZ,CAGb,CAJL,mDAKI,SAAqB93C,GACjB,OVJyB,SAAAA,GAAa,OAAI,EAAIv4S,GAAAA,mBAA6B,OAASu4S,CAA9C,CUI/B4K,CAAoB5K,EAC9B,GAPL,qCAQI,SAAwBn9X,GACpB,OVL4B,SAAC2nF,EAAaxkC,EAAculC,EAAWu4D,EAAkBI,GACzF,IAAIvgG,EAAiBsgG,GAA4BC,GAC7Cy8R,EAAY98R,GAAsBt4D,EAAWf,EAAas5D,EAAkBy2R,GAAkBhvV,EAAW5nC,IACzG4nV,EAAgB9jT,GAAAA,iBAA2Bk5V,EAAWh9X,GAC1D,OAAO+/F,GAAc6nP,EAAevlV,EACvC,CUAci6X,CAAuBp9a,EAAQ2nF,YAAa3nF,EAAQmjD,aAAcnjD,EAAQ0oF,UAAW9lF,KAAKy6a,qBAAqBr9a,EAAQm9X,eAAgBv6X,KAAKsrW,kBAAkBluW,EAAQ8gD,gBAChL,KAVL,GAA2Cg4X,ICKhCgG,GAAkB,SAAAjoZ,GACzB,IAAI0pD,EAAM1pD,EAAKitD,SACf,OANiB,IAMVvD,GALQ,IAKkBA,CACpC,EACUw+V,GAAmB,SAAAl8V,GAAI,OAAI,EAAI12E,KAAKo/D,MAAMsX,EAAO,EAA1B,ECTrBm8V,GAAb,0CACI,aAAc,6BACV,eAAStka,YACJu6Z,eAAiB,EACtB,EAAK8D,YAAa,EAHR,CAIb,CALL,4CAMI,SAAcliZ,GACV,OAAOioZ,GAAgBjoZ,EAC1B,GARL,qCASI,SAAwB72B,GACpB,ODA4B,SAAC2nF,EAAaxkC,EAAculC,EAAWu4D,EAAkBngG,GACzF,IAAIg9X,EAAY98R,GAAsBt4D,EAAWf,EAAas5D,EAAkBy2R,GAAkBhvV,EAAW5nC,IACzG4nV,EAAgB9jT,GAAAA,iBAA2Bk5V,EAAWh9X,GAC1D,GAAIg+X,GAAgBp2C,GAAgB,CAChC,IACIr1G,GAAY4rJ,EADCv2C,EAAc5kT,UAC6B,EAC5D4kT,EAAc7mT,QAAQ6mT,EAAc9lT,UAAYywM,EACnD,CACD,OAAOxyI,GAAc6nP,EAAevlV,EACvC,CCTci6X,CAAuBp9a,EAAQ2nF,YAAa3nF,EAAQmjD,aAAcnjD,EAAQ0oF,UAAW9lF,KAAKy6a,qBAAqBr9a,EAAQm9X,eAAgBv6X,KAAKsrW,kBAAkBluW,EAAQ8gD,gBAChL,GAXL,+BAYI,SAAkBugG,GACd,OAAOA,GAAwB,CAClC,KAdL,GAA+Cw9R,ILgB3CJ,GAAY,MACLS,GAAiC,SAAAr4V,GACxC,OAAQA,GACJ,KAAKyyD,GAAMI,MACP,OAAO,IAAI+jS,GACf,KAAKnkS,GAAMQ,eACP,OAAO,IAAI8kS,GACf,KAAKtlS,GAAMC,IACX,KAAKD,GAAMK,aACP,OAAO,IAAIwjS,GACf,KAAK7jS,GAAME,KACX,KAAKF,GAAMM,cACP,OAAO,IAAIilS,GACf,KAAKvlS,GAAMG,UACX,KAAKH,GAAMO,mBACP,OAAO,IAAImlS,GACf,QACI,OAAO,IAAIlG,GAEtB,EACM,SAASsF,GAAsBvnZ,EAAMiqB,GACxC,IAAIwjC,EAAU,IAAI5+E,KAAKmxB,GACnBsoZ,EAAU76V,EAAQR,SAAWhjC,EAKjC,OAJIq+X,EAAU,IACVA,GAzBW,GA2Bf76V,EAAQzC,QAAQyC,EAAQ1B,UAAYu8V,GAC7B76V,CACV,CMlDD,IAAI2vV,GAAgC,SAAS94Y,EAAGtvB,GAC5C,IAAIkb,EAAI,CAAC,EACT,IAAK,IAAItmB,KAAK06B,EACNv6B,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,IAAMoL,EAAE7H,QAAQvD,GAAK,IAC7DsmB,EAAEtmB,GAAK06B,EAAE16B,IAGjB,GAAI,MAAQ06B,GAAK,oBAAsBv6B,OAAOsza,sBAAuB,CACjE,IAAI3oa,EAAI,EACR,IAAK9K,EAAIG,OAAOsza,sBAAsB/4Y,GAAI5vB,EAAI9K,EAAE8C,OAAQgI,IAChDM,EAAE7H,QAAQvD,EAAE8K,IAAM,GAAK3K,OAAOgK,UAAUupa,qBAAqB9ya,KAAK85B,EAAG16B,EAAE8K,MACvEwb,EAAEtmB,EAAE8K,IAAM4vB,EAAE16B,EAAE8K,IAGzB,CACD,OAAOwb,CACV,EA0BoBq4Z,GAAAA,WACjB,WAAYv4V,IAAU,eAClBjkF,KAAK4za,kBAAoB0I,GAA+Br4V,GACxDjkF,KAAK4vZ,SAAW,CAAC,EACjB5vZ,KAAK0xa,oBAAsB,GAC3B1xa,KAAK6ya,sBAAwB,GAC7B7ya,KAAK6za,YAAc,CAAC,EACpB7za,KAAKy8a,wBAA0B,IAClC,4CACD,WACI,OAAOz8a,KAAKy8a,wBAAwBpkC,cACvC,6BACD,WACI,OAAOr4Y,KAAK4za,kBAAkBn/D,cACjC,8BACD,SAAcxgV,GACV,OAAOj0B,KAAK4za,kBAAkBvyC,cAAcptW,EAC/C,uBACD,SAAO72B,EAASs/a,GACZ18a,KAAK4za,kBAAoB0I,GAA+Bl/a,EAAQ6mF,UAChE,IACuB2vV,EACnB5za,KADA4za,kBAEA+I,EAA0B,IAAInL,GAAwBoC,GACtDgJ,EAAyB,IAAIxH,GAAuBxB,GACpDiG,EAAgB75a,KAAK68a,wBAAwBz/a,GACjDy8a,EAAcl9V,SAAW38E,KAAK4za,kBAAkB32C,YAAY48C,EAAcz5R,eAC1EpgJ,KAAKktD,SAAW2sX,EACZ6C,IACA18a,KAAK0xa,oBAAsBkC,EAAkBkJ,uBAAuBjD,GACpE75a,KAAK6ya,sBAAwB8J,EAAwBI,yBAAyBlD,EAAe75a,KAAK0xa,qBAC9FmI,EAAcmD,0BACdh9a,KAAKy1a,qBAAuBmH,EAAuBK,wBAAwBpD,EAAe75a,KAAK0xa,uBAGvG1xa,KAAK6za,YAAcD,EAAkBsJ,oBAAoBl9a,KAAK0xa,oBAAqBmI,GACnF75a,KAAKm9a,eAAetD,GACpB75a,KAAKy8a,wBAA0B,IAAI9I,GAAuB3za,KAAK4za,kBAAmB5za,KAAK6za,YAAa7za,KAAK0xa,oBAAqB,CAC1H90R,mBAAoBi9R,EAAcj9R,mBAClC34D,SAAU41V,EAAc51V,WAE5BjkF,KAAK0zZ,eAAiBipB,EAAwBS,uBAAuBp9a,KAAK6ya,sBAAuB7ya,KAAK0xa,oBAAqBmI,GACvHA,EAAcmD,0BACdh9a,KAAKq1Z,cAAgBunB,EAAuBS,sBAAsBr9a,KAAKy1a,qBAAsBoE,GAEpG,6CACD,WACI75a,KAAKy8a,wBAA0B,IAAI9I,GAAuB3za,KAAK4za,kBAAmB5za,KAAK6za,YAAa7za,KAAK0xa,oBAAqB,CAC1H90R,mBAAoB58I,KAAKktD,SAAS0vF,mBAClC34D,SAAUjkF,KAAKktD,SAAS+2B,UAE/B,+BACD,SAAe7mF,GACX,IAAIy8a,EAAgB75a,KAAK68a,wBAAwBz/a,GACjD4C,KAAKs9a,yBAA2Bt9a,KAAK4za,kBAAkB2J,4BAA4Bv9a,KAAK6za,YAAagG,GACrG75a,KAAK4vZ,SAAW5vZ,KAAK4za,kBAAkB4J,mBAAmBx9a,KAAK0xa,oBAAqB1xa,KAAKs9a,yBAA0BzD,EACtH,wCACD,SAAwBA,GACpB,IACYx7X,EAIRw7X,EAJAx7X,OACkBk/F,EAGlBs8R,EAHAt8R,iBACan/F,EAEby7X,EAFAz7X,YACsBqhG,EACtBo6R,EADAp6R,qBACeg+R,EAAcpM,GAAOwI,EAAe,CAAC,SAAU,mBAAoB,cAAe,yBACrG,OAAO9ga,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG0ka,GAAc,CACvCn/R,cAAet+I,KAAK4za,kBAAkByC,wBAAwBwD,GAC9Dj9R,mBAAoBU,GAA0Bj/F,EAAQk/F,GACtDG,qBAAsBF,GAA4Bn/F,EAAQk/F,GAC1DmlP,gBAAiBjlP,GAAiBp/F,EAAQk/F,EAAkBn/F,GAC5D0hV,qBAAsBtgP,GAA8BnhG,EAAQk/F,EAAkBkC,GAC9EphG,OAAQA,EACRk/F,iBAAkBA,EAClBkC,qBAAsBA,GAE7B,kCACD,SAAkBriJ,GACd,IAAIy8a,EAAgB75a,KAAK68a,wBAAwBz/a,GACjD,GAAIy8a,EAAcx7X,OAAO19C,OAAS,EAAG,CACjC,IAAI4qY,EAAYvrY,KAAKo4Y,aAAayhC,GAClC,OAAO9I,GAAkB8I,EAAcx7X,OAAQktV,EAAWsuC,EAAcn3C,gBAAiBm3C,EAAcn3C,gBAAkB,EAAI6I,EAChI,CAEJ,kCACD,SAAkB/yP,GACd,OAAOx4I,KAAKy8a,wBAAwBr2C,kBAAkB5tP,EACzD,gCACD,SAAgBA,GACZ,OAAOx4I,KAAKy8a,wBAAwB7H,gBAAgBp8R,EACvD,uCACD,SAAuBA,EAAY1yD,EAAWC,GAC1C,IAAIquV,EAAet8Z,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAC/E,OAAO9X,KAAKy8a,wBAAwBx2C,uBAAuBztP,EAAY1yD,EAAWC,EAASquV,EAC9F,6CACD,SAA6B57R,EAAY1yD,GACrC,OAAO9lF,KAAKy8a,wBAAwBz2C,6BAA6BxtP,EAAY1yD,EAChF,sCACD,SAAsB+6R,GAClB,OAAO7gX,KAAKy8a,wBAAwBh8C,sBAAsB5f,EAC7D,+BACD,WACI,IACc+uC,EACV5vZ,KAAK6za,YADLjkB,SAGaY,EACbZ,EAASI,YAAY,GADrBQ,YAEJ,OAAQZ,EAAS9vB,uBAAyB,OAAS0wB,QAAe,IAAWA,OAAc,EAASA,EAAY7vZ,QAAU,CAC7H,8BACD,SAAc63I,GACV,OAAOx4I,KAAKy8a,wBAAwBtlE,cAAc3+N,EACrD,uCACD,WACI,OAAOx4I,KAAKy8a,wBAAwBjmE,wBACvC,gCACD,WACI,OAAOx2W,KAAKy8a,wBAAwBl2C,iBACvC,yCACD,SAAyB/tP,GACrB,OAAOx4I,KAAKy8a,wBAAwB7nC,yBAAyBp8P,EAChE,mCACD,SAAmBA,GACf,OAAOx4I,KAAKy8a,wBAAwB/mC,mBAAmBl9P,EAC1D,4BACD,SAAYi3H,EAAU89E,EAAal4N,EAAUr1E,GACzC,IAAI0vN,EAAMr6I,IAAar1H,KAAKktD,SAAS0vF,mBAAqB58I,KAAK6za,YAAYgE,eAAiB73a,KAAK6za,YAAYkE,aAAatoK,GAK1H,OADIC,EAHqB1vN,EAA2B0vN,EAAI/uQ,OAAS,EAAI4sV,EAA/BA,GAElC05E,QAGP,8CACD,SAA8BzuR,EAAY1sB,GACtC,IAAI4xT,EAAe19a,KAAK29a,6BACpBC,EAAoB59a,KAAKktD,SAASuyF,qBAClCo+R,EAAkB79a,KAAKktD,SAAS0vF,mBAAqBpE,EAAaklS,EAAe,EACjFI,EAAiB99a,KAAKktD,SAAS0vF,oBAAsBpE,EAAa,GAAKklS,EAAe,EAAIA,EAC1FK,EAAoBH,IAAsB9xT,EAAS+xT,EAAkB,EAAIA,EACzEG,EAAmBlyT,EAASiyT,EAAoBD,EACpD,OAAO99a,KAAK0xa,oBAAoB3sa,MAAMg5a,EAAmBC,EAAmB,GAAGj6a,KAAI,SAAA2rQ,GAAG,OAAIA,EAAIl1O,QAAO,SAAAxjB,GACjG,IACgB++Z,EACZ/+Z,EADAwhI,WAEJ,OAAOA,IAAeu9R,CACzB,GALqF,GAMzF,sCACD,SAAsBv9R,GAClB,IAAIi3H,EAAW33P,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,EAEvDwgY,EACrBt4Y,KAAKq4Y,eADLC,oBAEJ,OAAOA,EAAoB99W,QAAO,SAAC17B,EAAGqC,GAAJ,OAAcA,GAASq3I,CAAvB,IAAmCr0I,QAAO,SAACiJ,EAAUsiQ,GAAX,OAAmBtiQ,EAAWsiQ,EAAID,GAAU9uQ,MAA5C,GAAoD,EACnI,oCACD,SAAoB63I,GAChB,IAAI99I,EAAIC,EACR,OAAIqF,KAAKktD,SAAS0vF,sBACJ,QAAUliJ,EAAKsF,KAAKq4Y,eAAeC,oBAAoB9/P,UAAgB,IAAW99I,OAAK,EAASA,EAAG,GAAG,GAAGusa,SAASn7S,SAExH,QAAUnxH,EAAKqF,KAAKq4Y,eAAeq8B,sBAAsBl8R,UAAgB,IAAW79I,OAAK,EAASA,EAAGgG,QAAU,CAC1H,6CACD,SAA6B63I,EAAY1yD,EAAWC,GAChD,IAAI0wR,EAAiBz2W,KAAKomY,kBAAkB5tP,GAE5C,OAAO1yD,EADY9lF,KAAK40a,gBAAgBp8R,IACLzyD,EAAU0wR,CAChD,uCACD,SAAuBxiV,GAOnB,IANA,IAAIukH,EAAa1gI,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,EAC9Eg0G,EAASh0G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GAEhD45Z,EACrB1xa,KADA0xa,oBAEAvxX,EAAkBngD,KAAKktD,SAASuyF,qBAC3BgwH,EAAW,EAAGA,EAAWiiK,EAAoB/wa,OAAQ8uQ,GAAY,EAEtE,IADA,IAAI0hK,EAAaO,EAAoBjiK,GAC5B89E,EAAc,EAAGA,EAAc4jF,EAAWxwa,OAAQ4sV,GAAe,EAAG,CACzE,IAAI05E,EAAWkK,EAAW5jF,GAEXhvM,EAIX0oR,EAJAnhV,UACS+jS,EAGTo9C,EAHAlhV,QACYgwV,EAEZ9O,EAFAzuR,WACQylS,EACRhX,EADAn7S,OAEJ,GAAI0sB,IAAeu9R,GAAqBjqT,MAAamyT,GAAiBj+a,KAAKk+a,uBAAuBjqZ,EAAMsqH,EAAkBsrO,EAAgB/9P,GACtI,MAAO,CACHthH,SAAU,CACN+iV,YAAaA,EACb99E,SAAUtvN,IAAoBngD,KAAKktD,SAAS0vF,mBAAqB6yH,EAAW,EAAIA,GAEpFw3J,SAAUA,EAGrB,CAGR,uCACD,SAAuBhzY,EAAMkqZ,EAAeC,EAAatyT,GACrD,IAAI13F,EAAOH,EAAKyhC,UACZ2oX,EAAcr8V,GAAAA,SAAmB/tD,GAAMyhC,UACvCu0W,EAAgBkU,EAAczoX,UAC9Bw0W,EAAckU,EAAY1oX,UAC9B,OAAQo2D,GAAU13F,GAAQ61Y,GAAiB71Y,EAAO81Y,GAAep+S,GAAUuyT,IAAgBpU,CAC9F,oCACD,SAAoBzxR,EAAY1yD,EAAWC,EAAS2hS,GAMhD,IALA,IAGIsoC,EADAhwZ,KAAKy8a,wBAAwBpkC,eAD7BC,oBAEkC9/P,GAClC8lS,EAAe,EACV7uK,EAAW,EAAGA,EAAWugJ,EAAYrvZ,OAAQ8uQ,GAAY,EAC9D,IAAK,IAAI89E,EAAc,EAAGA,EAAcyiE,EAAYvgJ,GAAU9uQ,OAAQ4sV,GAAe,EAAG,CACpF,IAAIt9E,EAAO+/I,EAAYvgJ,GAAU89E,GAAa05E,SAC1CnhV,EAAUpwB,UAAYu6M,EAAKlqL,QAAQrwB,WAAaqwB,EAAQrwB,UAAYu6M,EAAKnqL,UAAUpwB,YACnF4oX,GAAgB,EAEvB,CAEL,IAAIjZ,EAAWrV,EAAYA,EAAYrvZ,OAAS,GAAGqvZ,EAAY,GAAGrvZ,OAAS,GAAGsma,SAC1EsX,EAAgBv8V,GAAAA,SAAmBqjV,EAASv/U,WAC5C04V,EAAgBj1a,KAAKo/D,OAAOod,EAAQrwB,UAAY6oX,EAAc7oX,WAAassB,GAAAA,mBAA6B,QAE5G,OAAO0lS,EAAY42D,GADHE,EAAgB,EAAIA,EAAgB,EAEvD,gCACD,WACI,IACkBzG,EACd/3a,KAAK6za,YADLkE,aAEJ,OAAOA,EAAeA,EAAa,GAAGp3a,OAAS,CAClD,mCACD,SAAmB8gY,GACf,OAAIA,EACO,CACHuiC,iBAAkB,EAClBC,gBAAiBjka,KAAK6za,YAAYgE,eAAel3a,OAAS,EAC1Duja,cAAe,EACfJ,aAAc,GAGf,CACHE,iBAAkB,EAClBC,gBAAiBjka,KAAK6za,YAAYkE,aAAa,GAAGp3a,OAAS,EAC3Duja,cAAe,EACfJ,aAAc9ja,KAAK6za,YAAYkE,aAAap3a,OAAS,EAE5D,oCACD,SAAoB63I,EAAYnjB,GAC5B,IAAIgjR,EAAiBr4Y,KAAKq4Y,eAAeC,oBAAoB9/P,GACzD21Q,EAAa9V,EAAe,GAAG13Y,OAC/B84U,EAAY4+D,EAAe13Y,OAC3Bqja,EAAmB3rB,EAAe,GAAG,GAAG7tY,SAAS+iV,YACjD02E,EAAkB5rB,EAAe,GAAG8V,EAAa,GAAG3jZ,SAAS+iV,YACjE,OAAIl4N,EACO,CACH2uS,iBAAkBA,EAClBC,gBAAiBA,EACjBC,cAAe,EACfJ,aAAc,GAGf,CACHE,iBAAkBA,EAClBC,gBAAiBA,EACjBC,cAAe7rB,EAAe,GAAG,GAAG7tY,SAASilQ,SAC7Cq0J,aAAczrB,EAAe5+D,EAAY,GAAG,GAAGjvU,SAASilQ,SAE/D,2BACD,SAAWgvK,EAAeC,GACtB,IACelZ,EAIXiZ,EAJA34V,UACYw/U,EAGZmZ,EAHAjmS,WACQmmS,EAERF,EAFA3yT,OACOihL,EACP0xI,EADAt9a,MAGWy9a,EAIXF,EAJA54V,UACY+4V,EAGZH,EAHAlmS,WACQsmS,EAERJ,EAFA5yT,OACOkhL,EACP0xI,EADAv9a,MAEJ,OAAOqka,EAAe9vW,YAAckpX,EAAgBlpX,WAAa4vW,IAAoBuZ,GAAoBF,IAAgBG,GAAgB/xI,IAAeC,CAC3J,gCACD,WACI,IACyB0kI,EACrB1xa,KADA0xa,oBAEAj4F,EAAYi4F,EAAoB/wa,OAAS,EAC7C,OAAO+wa,EAAoBj4F,GAAWi4F,EAAoBj4F,GAAW94U,OAAS,GAAGolF,OACpF,iCACD,WACI,OAAO/lF,KAAKktD,SAASoxF,aACxB,oCACD,SAAoBi8O,GAChB,OAAOv6X,KAAK4za,kBAAkB6G,qBAAqBlgD,EACtD,mCACD,WACI,OAAO,IAAIz3X,KAAK9C,KAAK++a,kBAAkBrpX,UAAYssB,GAAAA,mBAA6B,UACnF,4CACD,SAA4B/jC,GACxB,IAAI+gY,EAAkBh/a,KAAKi/a,qBACvBpuE,EAAU7uR,GAAAA,oBAA8B/jC,GACxCihY,EAAwB,IAAIp8a,KAAKk8a,EAAgB9/V,SAAS2xR,EAAQ3wR,MAAO2wR,EAAQzwR,UACrF,OAAOpgF,KAAKm/a,6BAA6BH,EAAiBE,EAC7D,6CACD,SAA6Bp5V,EAAWC,GACpC,IAAIqoT,EAAer5Q,GAAAA,sBAAoCjvC,EAAWC,GAC9Dm5V,EAAwB,IAAIp8a,KAAKijF,EAAQrwB,UAAY04U,GACzD,OAAO,IAAItrY,KAAKo8a,EAAsBxpX,UAAYssB,GAAAA,mBAA6B,UAClF,kCACD,SAAkBzhC,EAActC,EAAYmiG,GACxC,OAAOpgJ,KAAK4za,kBAAkB3B,kBAAkB1xX,EAActC,EAAYmiG,EAC7E,6BACD,SAAahjJ,GACT,OAAO4C,KAAK4za,kBAAkBx7B,aAAah7Y,EAC9C,4BACD,SAAYA,GACR,OAAO4C,KAAK4za,kBAAkByB,YAAYj4a,EAC7C,sCACD,SAAsBmjD,EAActC,EAAYmiG,GAC5C,OAAOpgJ,KAAK4za,kBAAkB12B,sBAAsB38V,EAActC,EAAYmiG,EACjF,2CACD,WACI,IAAIg/R,EAAiBp/a,KAAKktD,SAASuyF,qBAAuB,EAAI,EAC9D,OAAOz/I,KAAKq1a,YAAYr1a,KAAKktD,UAAYkyX,CAC5C,kCACD,SAAkB3gS,GACd,OAAOz+I,KAAK4za,kBAAkBtoE,kBAAkB7sN,EACnD,+BACD,SAAerhJ,GACX4C,KAAKktD,SAAWltD,KAAK68a,wBAAwBz/a,EAChD,+BACD,WACI,OAAO4C,KAAKktD,QACf,sCACD,WACI,IACyBorV,EACrBt4Y,KAAKq4Y,eADLC,oBAEJ,OAAQ,OAASA,QAAuB,IAAWA,OAAsB,EAASA,EAAoB33Y,SAAW,CACpH,OAhVgB67a,GCiFH3vB,GACdwyB,GAAAA,aAGUh8X,GACVuyW,GAAAA,SACAznS,GAAOnsC,GAAAA,mBAIPs9V,GAAuC,+CAKvCC,GAAwB,+BAExBC,GAAsB,6BACtBC,GAAsB,6BAEtBC,GAAsB,6BACtBC,GAA2B,kCAI3BC,GAAuC,0CACvCC,GAAyB,qCACzBC,GAAuB,mCAIvBC,GAAqB,4BACrBC,GAAwB,+BAGxBC,GAAkC,yCAIlCC,GAA+C18R,GAAa3oF,GAAAA,KAAoB,wBAChFslX,GAAiB,CACjBC,MAAO58R,GAAayyQ,GAAgB,wBACpCoqB,KAAM78R,GAAa88R,GAAe,wBAClCC,MAAO/8R,GAAa2yQ,GAAgB,yBAEpCqqB,GAAoCh9R,GAAaywE,GAAgB,wBACjEwsN,GAA0Cj9R,GAAa3oF,GAAAA,KAAoB,wBAC3E6lX,GAAwCl9R,GAAa3oF,GAAAA,GAAkB,wBACvE8lX,GAA0Cn9R,GAAa3oF,GAAAA,KAAoB,wBAC3E+lX,GAAY,aAEZ3K,GAAS9nT,GAAK,OACd6nT,GAAU7nT,GAAK,QACf0yT,GAAyB,IAAI5wa,OAAO+lI,GAAkB,UAAU/lI,OAAOwva,GAAqB,OAC5FqB,GAAgB,IAAI7wa,OAAO+va,GAAuB,OAAO/va,OAAO0va,IAE9DoB,GAAAA,SAAAA,iCACF,aAAc,6BACV,eAASjpa,YACJo+V,cAAgB,WAFX,CAGb,kCACD,WACI,MAAO,EACV,+BACD,WAII,OAHKl2W,KAAK0ma,oBACN1ma,KAAK0ma,kBAAoB,IAAI8V,GAAiBx8a,KAAKqF,OAEhDrF,KAAK0ma,iBACf,oBACD,WAII,OAHK1ma,KAAKisI,SACNjsI,KAAKisI,OAAS,IAAI9F,IAEfnmI,KAAKisI,MACf,kCACD,WAA0B,WACtB,IAAKjsI,KAAKghb,qBAAsB,CAC5Bhhb,KAAKghb,qBAAuB,IAAIva,GAAoBzma,KAAKs2W,kBACzD,IAAI2qE,EAAsBjhb,KAAK2sC,OAAO,oBACtC,IAAK,OAASs0Y,QAAuB,IAAWA,OAAsB,EAASA,EAAoBtgb,QAAU,EAAG,CAC5G,IAAIugb,EAAqBD,EAAoBl9a,KAAI,SAAAo9a,GAC7C,IACY9iY,EACR8iY,EADA9iY,OAEJ,IAAKA,GAAU,IAAM,EAAKmmW,iBACtB,OAAOzrY,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGooa,GAAe,CACxC3oS,WAAY,IAGpB,IAAIA,EAAa,EAAK4oS,2BAA2B/iY,GACjD,OAAOtlC,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGooa,GAAe,CACxC3oS,WAAYA,GAEnB,IACDx4I,KAAKghb,qBAAqBK,uBAAuBH,EACpD,CACJ,CACD,OAAOlhb,KAAKghb,oBACf,uCACD,WAII,OAHKhhb,KAAKshb,4BACNthb,KAAKshb,0BAA4B,IAAIne,IAElCnja,KAAKshb,yBACf,mCACD,WACI,OAAOthb,KAAKuhb,sBAAwBvhb,KAAKuzW,kBAC5C,sCACD,WACI,OAAO+rE,EACV,4CACD,WACI,OAAOkC,EACV,iCACD,WACI,OAAOxhb,KAAK2sC,OAAO,qBACtB,oCACD,WACI,MAAO,YAAc3sC,KAAK2sC,OAAO,eACpC,+BACD,WAAiB,WACTglJ,EAAe,SAAS1oL,GAAG,WAC3BA,EAAEkzD,iBACFlzD,EAAE83D,kBACF,IAAI8kW,EAAgB7la,KAAKyhb,oBAAoBzc,mBAC7C,GAAI,OAASa,QAAiB,IAAWA,OAAgB,EAASA,EAAclla,OAAQ,CACpF,IAAI+gb,EAAuB7b,EAAc9ha,KAAI,SAAAkja,GAAQ,OAAI,EAAK0a,eAAe1a,EAAxB,IAAmCzsY,QAAO,SAAAy1O,GAAI,QAAMA,CAAN,IACnGhnQ,EAAE0O,OAAS+pa,EACX1hb,KAAK4hb,YAAa,EAClB5hb,KAAKixQ,iBAAiB,CAClBlwQ,MAAOkI,EACPswQ,YAAaxoM,GAAE2wW,GACfza,SAAUpB,EAAc,IAE/B,CACJ,EACGgc,EAAiB,SAAC54a,EAAG3G,GACrB,IAAI5H,EACJuO,EAAEkzD,iBACFlzD,EAAE83D,kBACF,IAAI4jW,EAAkB,QAAUjqa,EAAK,EAAK+mb,oBAAoBza,mBAAgB,IAAWtsa,OAAK,EAASA,EAAGusa,SAC1G,GAAItC,EAAiB,CACjB,IAAInB,EAAoBmB,EAAgB74S,SAAW,EAAKkxR,8BACpD+mB,EAAmB96Z,EAAEipJ,SACrBwyQ,EAA0B,EAAK/3X,OAAO,8BACtC+iM,EAAQ,EAAKoyM,SACbnzV,EAAa,EAAK61T,iBAClB9hB,EAAkB,EAAKA,kBACvBhlP,EAAuB,EAAKqkS,gCAC5B1e,EAAsB,EAAK/sD,iBAAiBmqB,uBAAsB1nX,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG4rZ,GAAkB,CAC1GtvS,SAAUsvS,EAAgB74S,UAE1Bw3S,EAAc5lR,GAAwBqmR,IAAqBrhC,EAAkB,EAAKpsB,iBAAiB0rE,oBAAoBrd,EAAgBnsR,WAAYgrR,GAAqB,EAAKltD,iBAAiB2rE,mBAAmBze,GACjN0e,EAAe,EAAKC,yBAAyBC,iBAAiB,CAC9D/e,oBAAqBA,EACrBC,YAAaA,EACb5zL,MAAOA,EACPgzJ,gBAAiBA,EACjB/zS,WAAYA,EACZo1U,iBAAkBA,EAClBW,wBAAyBA,EACzBzgV,SAAU,EAAK5+E,KACf/C,IAAKA,EACLiha,sBAAuB,EAAKjtD,iBAAiBkK,YAAY1jX,KAAK,EAAKw5W,kBACnEktD,kBAAmBA,EACnBmB,gBAAiBA,IAErB,EAAK0d,yBAAyBH,EAAcvd,EAAiBZ,GAAoBW,EACpF,CACJ,EACD,OAAOj/W,EAAAA,GAAAA,IAAO,8DAAwB,CAClC0+F,MAAOwtC,EACP27B,MAAO37B,EACPg8B,UAAW,SAAA1kN,GACP44a,EAAe54a,EAAG,OACrB,EACDykN,QAAS,SAAAzkN,GACL44a,EAAe54a,EAAG,KACrB,EACDwkN,WAAY,SAAAxkN,GACR44a,EAAe54a,EAAG,QACrB,EACDukN,UAAW,SAAAvkN,GACP44a,EAAe54a,EAAG,OACrB,GAER,uBACD,WACI,OAAOjJ,KAAK2sC,OAAO,aACtB,4BACD,SAAYujO,EAAO6zJ,GACf,IAAK11W,EAAAA,EAAAA,IAAU6hN,IAAWA,EAAMvvQ,OAAhC,CAGA,IAAI+ja,EAA0B1ka,KAAK2sC,OAAO,8BACtCg3X,EAAkB3ja,KAAKsib,iBAAiBpyK,GACxCy0J,EAAkB3ka,KAAKyhb,oBAAoBza,YAAYC,SACvDrC,EAAsB5ka,KAAKmib,yBAAyBve,WAAW,CAC/DG,iBAAkBA,EAClBW,wBAAyBA,EACzBf,gBAAiBA,EACjBgB,gBAAiBA,EACjBE,cAAe30J,EAAM5hM,SAASwnE,MAElC91I,KAAKqib,yBAAyBzd,EAAqBD,EAAiBD,GAA2BX,EAX9F,CAYJ,yCACD,SAAyBme,EAAcvd,EAAiBZ,GACpD,IAAIwe,EAAmBvib,KAAKs2W,iBAAiBmqB,sBAAsB,CAC/D36S,UAAWo8V,EAAap8V,UACxB0yD,WAAY0pS,EAAa1pS,WACzBnjB,SAAU6sT,EAAap2T,OACvB3qH,MAAO+gb,EAAa/gb,QAExB,IAAKnB,KAAKs2W,iBAAiBksE,WAAW7d,EAAiBud,GAAe,CAClE,IAAIhyK,EAAQgyK,EAAap2T,SAAW9rH,KAAKg9Y,8BAAgCh9Y,KAAKyib,wBAAwBF,EAAiBh1F,aAAevtV,KAAK0ib,iBAAiBH,GACxJI,EAAmBT,EAAap2T,OACpC9rH,KAAK4ib,yCAAyCD,EAAkBJ,EAAkBxe,EAAkB7zJ,GACpGlwQ,KAAKiha,qBAAqBhpI,gBAAgB/nB,EAC7C,CACJ,yDACD,SAAyC76I,EAAU6rQ,EAAc6iC,EAAkB8e,GAC/E,IAAIC,EAAsB,CACtBrzK,SAAUyxH,EAAazxH,SACvB89E,YAAa2zC,EAAa3zC,YAC1BzhO,OAAQuJ,GAEZr1H,KAAKyhb,oBAAoBsB,eAAeD,EAAoBrzK,SAAUqzK,EAAoBv1F,YAAal4N,GACnG0uS,EACA/ja,KAAKyhb,oBAAoBuB,iBAAiBF,GAE1C9ib,KAAKyhb,oBAAoBuB,iBAAiBF,EAAqBA,GAEnE9ib,KAAKijb,uBACLjjb,KAAKkjb,8BAA8Bljb,KAAKyhb,oBAAoBzc,mBAAoB6d,EACnF,gCACD,SAAgB3yK,GACZ,OAAOA,EAAM5hM,SAASqxW,GACzB,gCACD,SAAgB12a,GACZ,GAAI8nE,GAAE9nE,EAAE0O,QAAQs3D,GAAGjvE,KAAK6lK,kBAAmB,IAAU7lK,KAAKmjb,aAAc,CAKpE,UAJOnjb,KAAKmjb,oBACLnjb,KAAKojb,qBACZ,oDAAsBrra,MAAM/X,KAAM8X,WAClC9X,KAAKyhb,oBAAoB4B,kCACpBrjb,KAAKyhb,oBAAoBza,YAAa,CACvC,IAAIxlC,EAAkB,CAClBj0C,YAAa,EACb99E,SAAU,EACV3jJ,OAAQ9rH,KAAKg9Y,+BAAiCh9Y,KAAKy/I,sBAEvDz/I,KAAKyhb,oBAAoBsB,eAAevhD,EAAgB/xH,SAAU+xH,EAAgBj0C,YAAai0C,EAAgB11Q,QAC/G9rH,KAAKyhb,oBAAoBuB,iBAAiBxhD,EAAiBA,EAC9D,CACDxhY,KAAKijb,uBACLjjb,KAAKkjb,8BAA8Bljb,KAAKyhb,oBAAoBzc,mBAC/D,CACJ,iCACD,YACI,qDAAuBjtZ,MAAM/X,KAAM8X,WAC9B9X,KAAKojb,qBAAwBpjb,KAAKgkG,YACnChkG,KAAKyhb,oBAAoB6B,iCACzBtjb,KAAKs2W,iBAAiB6mE,eAAen9a,KAAKujb,yBAC1Cvjb,KAAKijb,uBAEZ,6BACD,WACI,OAAOjjb,KAAKg6D,UACf,4CACD,WACI,IAAIt/D,EACJ,SAAU,QAAUA,EAAKsF,KAAK2sC,OAAO,iBAAc,IAAWjyC,OAAK,EAASA,EAAGiG,SAAW,aAAeX,KAAK2sC,OAAO,mBACxH,8CACD,WACI,IAAIjyC,EACJ,SAAU,QAAUA,EAAKsF,KAAK2sC,OAAO,iBAAc,IAAWjyC,OAAK,EAASA,EAAGiG,SAAW,eAAiBX,KAAK2sC,OAAO,mBAC1H,sCACD,WACI,OAAO3sC,KAAK2sC,OAAO,iBAAmB,CACzC,yCACD,WACI,MAAO,KAAO3sC,KAAK2sC,OAAO,mBAAqB3sC,KAAKs0W,oBACvD,yCACD,WACI,OAAOt0W,KAAKg9Y,8BAAgC,WAAa,YAC5D,2CACD,WACIh9Y,KAAK4ia,cAAgB7xV,GAAE,SAAS3C,SAASoxW,IACzCx/a,KAAKwjb,cAAgBzyW,GAAE,SAASpC,SAAS3uE,KAAKyjb,uBACjD,2CACD,WAA6B,WACrB1jb,EAAS,CACT02R,aAAa,EACbrH,eAAe,EACfsH,gBAAgB,EAChBJ,SAAU,WACN,IAAI57R,EACJ,QAAUA,EAAK,EAAKgpb,iBAAiBpza,aAAU,IAAW5V,GAAcA,EAAGysC,OAC9E,GAKL,GAHInnC,KAAK2jb,8BACL5jb,GAAS0lD,EAAAA,GAAAA,GAAO1lD,EAAQC,KAAK4jb,4BAA4B7jb,KAEzDC,KAAKs0W,uBAAyBt0W,KAAK48Y,2BAA2B6tB,4BAA8Bzqa,KAAK48Y,2BAA2BpwX,QAAS,CACrI,IAAIq3Z,EAAkB9jb,EAAOu2R,SAC7Bv2R,GAASgZ,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGhZ,GAAS,CACpCu2R,SAAU,SAAArtR,GACN,OAAS46a,QAAmB,IAAWA,GAA2BA,EAAgB56a,GAClF,EAAK2zY,2BAA2BmuB,oBAAoB,OAAS9ha,QAAK,IAAWA,OAAI,EAASA,EAAE+kK,aAC/F,GAER,CACD,OAAOjuK,CACV,4CACD,SAA4BiX,GAAM,WAEhB8sa,EACV9sa,EADAs/Q,SAEJ,MAAO,CACH1vQ,UAAW,OACX0vQ,SAAU,SAAAv1R,GACN,OAAS+ib,QAAa,IAAWA,GAAqBA,IACtD,EAAKC,YAAYC,QAAQ,CACrBv/Y,IAAK1jC,EAAMitK,aAAavpI,MAE5B,EAAKs/Y,YAAYl/S,OAAO,CACpBjgG,KAAM7jC,EAAMitK,aAAappI,MAEhC,EACDunO,MAAO,WACH,EAAKx/N,OAAO,cAAZ,EACH,EAER,wCACD,WAA0B,WACtB,MAAO,CACH8pP,aAAa,EACbpB,cAAe,QACfzuQ,UAAW,aACXivQ,WAAW,EACXa,gBAAgB,EAChBtH,eAAe,EACfkH,SAAU,SAAAv1R,GACN,EAAKgjb,YAAY9yB,UAAU,CACvBrsX,KAAM7jC,EAAMitK,aAAappI,MAEhC,EAER,mCACD,SAAmBic,GACf7gD,KAAKsQ,MAAM62B,QACP0Z,GACA7gD,KAAKikb,0BAELpjY,GAAW7gD,KAAK2jb,6BAChB3jb,KAAKkkb,gBAEZ,+BACD,WACIlkb,KAAKsQ,MAAM62B,QACXnnC,KAAKmkb,sBACL,IAAIlmE,EAAYj+W,KAAKw0Y,eACjBv2B,EAAYj+W,KAAK6pa,oBACjB5rD,EAAYj+W,KAAK6pa,mBAErB,IAAI7oY,EAAWhhC,KAAKokb,uBAChBz1V,EAAa3uF,KAAKwkZ,iBAElB7zX,EAAQstV,EADSj+W,KAAKqkb,mBAAmB11V,GAEzCh+D,EAAQqQ,IACRrQ,EAAQqQ,GAEZ6pC,GAAS7qE,KAAKskb,cAAe3zZ,GAC7Bk6C,GAAS7qE,KAAKukb,YAAa5zZ,GACvB3wB,KAAKwkb,eACL35W,GAAS7qE,KAAKwkb,cAAe7zZ,GAEjC3wB,KAAKykb,4BACLzkb,KAAKikb,0BACLjkb,KAAKk+Z,mBACR,qCACD,WACI,OAAOl+Z,KAAK0jb,iBAAiBU,sBAChC,kCACD,WACSpkb,KAAKmpK,eAGNnpK,KAAK2sC,OAAO,0BACZ3sC,KAAKkkb,iBAETlkb,KAAK0kb,6BACL1kb,KAAKk+Z,oBACLl+Z,KAAKsQ,MAAM62B,QACd,0CACD,WACI,OAAOnnC,KAAK2sC,OAAO,wBACtB,iCACD,WACI,OAAO7qB,EAAAA,GAAAA,OACV,6BACD,WACI,OAAO9hB,KAAKs2W,iBAAiB++D,YAAY,CACrC96C,cAAev6X,KAAK2sC,OAAO,iBAC3Bo4C,YAAa/kF,KAAK2sC,OAAO,eACzBs3C,SAAUjkF,KAAKqF,KACf+6I,cAAepgJ,KAAK2sC,OAAO,iBAC3B4T,aAAcvgD,KAAK2sC,OAAO,gBAC1BsR,WAAYj+C,KAAK2sC,OAAO,eAE/B,8BACD,WACI,OAAO3sC,KAAKs2W,iBAAiB8hC,aAAa,CACtC7d,cAAev6X,KAAK2sC,OAAO,iBAC3Bo4C,YAAa/kF,KAAK2sC,OAAO,eACzBs3C,SAAUjkF,KAAKqF,KACf+6I,cAAepgJ,KAAK2sC,OAAO,iBAC3B4T,aAAcvgD,KAAK2sC,OAAO,gBAC1BsR,WAAYj+C,KAAK2sC,OAAO,eAE/B,kCACD,WACI,OAAO3sC,KAAK2kb,4BAA8B3kb,KAAK2sC,OAAO,iBACzD,iCACD,WACI,MAAO,YAAc3sC,KAAK2sC,OAAO,iBACpC,mCACD,WACI,OAAO3sC,KAAK4kb,qBAAuB5kb,KAAK6kb,kBAC3C,sCACD,WACQ7kb,KAAK48Y,6BACL58Y,KAAK48Y,2BAA2BrwW,UAChCvsC,KAAK48Y,2BAA6B,MAEtC58Y,KAAK48Y,2BAA6B,IAAIgrB,GAA2B5na,KAAK8kb,yCACtE9kb,KAAK48Y,2BAA2BmoC,yBAChC/kb,KAAKitE,SAAW,IAAI6gW,GAAyB9ta,KAChD,oCACD,SAAoBquB,GAAY,qCAChC,WACI,OAAOmxH,GAA8Bx/I,KAAK2sC,OAAO,UAAW3sC,KAAK2sC,OAAO,oBAAqB3sC,KAAKy/I,qBACrG,sCACD,SAAsBqzR,GAClB,IAAIp4a,EAEA6iJ,EADav9I,KAAKwkZ,iBACc,EAAIxkZ,KAAK2sC,OAAO,oBAAsB3sC,KAAKglb,2BAC3E5nb,GAAU2b,EAAAA,EAAAA,GAAS,CACnBqlC,YAAap+C,KAAK2sC,OAAO,eACzBghY,cAAe,EACfE,eAAgB,EAChBtwR,iBAAkBA,EAClBi3H,MAAO,QAAU95Q,EAAKsF,KAAKilb,iBAAc,IAAWvqb,OAAK,EAASA,EAAG+D,KAAKuB,MAC1Eq+C,OAAQr+C,KAAK2sC,OAAO,UACpBmmY,2BAA4BA,EAC5BrzR,qBAAsBz/I,KAAKy/I,qBAC3BomR,cAAe7la,KAAKyhb,oBAAoBzc,mBACxCgC,YAAahna,KAAKyhb,oBAAoBza,YACtCsL,qBAAsBtya,KAAKklb,aAC3B3S,qBAAsB,SAACzza,EAAGm1B,GAAJ,OAAaA,CAAb,EACtBssB,aAAcvgD,KAAK2sC,OAAO,gBAC1BsR,WAAYj+C,KAAK2sC,OAAO,cACxB6Q,aAAcx9C,KAAKmgJ,kBACnBl8D,SAAUjkF,KAAKqF,KACfk1X,cAAev6X,KAAK2sC,OAAO,iBAC3ByzG,cAAepgJ,KAAK2sC,OAAO,iBAC3Bo4C,YAAa/kF,KAAK2sC,OAAO,eACzBm5C,UAAW9lF,KAAK2sC,OAAO,aACvBuR,eAAgBl+C,KAAK2sC,OAAO,mBAC7B3sC,KAAK48Y,2BAA2B8sB,kBACnC,OAAOtsa,CACV,yCACD,WACI,OAAO,CACV,wCACD,WACQ4C,KAAKg9Y,gCAAiCl8V,EAAAA,EAAAA,OACtC9gD,KAAKmlb,sCAEZ,2CACD,WACI,IAAIrkY,EAAAA,EAAAA,OAAe9gD,KAAKolb,gCAAiC,CACrD,IAAIC,EAAiBrlb,KAAK2ua,oBACtB2W,EAAkBtlb,KAAKowa,qBAC3Bpwa,KAAKyjb,uBAAuBn+Y,IAAI,QAAS+/Y,EAAiBC,EAC7D,CACJ,mCACD,SAAmBvlY,GACf,IAAIrlD,EACJ,OAAQ,QAAUA,EAAKsF,KAAK2sC,OAAO,iBAAc,IAAWjyC,OAAK,EAASA,EAAGiG,SAAWo/C,CAC3F,2CACD,SAA2BhiC,GACvB,IAAIsgC,EAASr+C,KAAK2sC,OAAO,UACrB44Y,EAAeltS,GAAoBh6F,GACvC,OAAKknY,EAAa5kb,OAGXX,KAAKwlb,0BAA0BD,EAAcxna,GAFzC,CAGd,0CACD,SAA0Bwna,EAAcxna,GAAI,WACpCy+J,EAAa+oQ,EAAa,GAAGnsb,KAC7B87D,EAAen3C,EAAGy+J,GACtB,OAAO+oQ,EAAaphb,QAAO,SAAC2oU,EAAWpoK,GACnC,IACepsB,EAGXosB,EAHApsB,UACOp6I,EAEPwmK,EAFAxmK,MACU6M,EACV25J,EADA35J,SAEA06a,EAAiBvwX,IAAiBh3D,EACtC,OAAIunb,QAAkB,IAAWntS,EACtBA,EAEPmtS,EACO,EAAKD,0BAA0Bz6a,EAAUgT,GAE7C+uT,CACV,GAAE,EACN,uCACD,WACI,OAAO1uL,GAAsBp+I,KAAK2sC,OAAO,aAAc3sC,KAAK2sC,OAAO,eAAgB3sC,KAAKy6a,uBAAwBz6a,KAAK2sC,OAAO,aAAe3sC,KAAK0lb,+BAA4B,EAC/K,qCACD,WACI,OAAO1lb,KAAKs2W,iBAAiB6uB,oBAAoBnlY,KAAK2sC,OAAO,iBAChE,+BACD,WACI,OAAO3sC,KAAKgzY,kBACf,wCACD,WACI,OAA8BhzY,KAAK2sC,OAAO,YAC7C,gCACD,WACI,OAAO3sC,KAAKs2W,iBAAiBhL,kBAAkBtrW,KAAK2sC,OAAO,kBAC9D,8BACD,WACI3sC,KAAK0vX,gCACL1vX,KAAK6zN,oBACL7zN,KAAKuyN,yBACR,kCACD,WACI,IAAI9iK,EAAOzvD,KACP4gS,EAAoB5gS,KAAK8gK,eAAc,SAAA73J,GACvCwmD,EAAK2gG,oBAAoBnnJ,EAAElI,MAC9B,IACDf,KAAKgxQ,yBACL,IAAI20K,EAAe,IAAI11a,OAAO+va,GAAuB,MAAM/va,OAAO0va,IAC9D3lX,EAAWh6D,KAAKg6D,WACpBuE,EAAAA,EAAAA,IAAiBvE,EAAUkmX,IAC3B3hX,EAAAA,EAAAA,IAAiBvE,EAAUwmX,IAC3BjiX,EAAAA,EAAAA,GAAgBvE,EAAUkmX,IAA8C,SAAAj3a,GAChEw8I,GAAax8I,IAAMA,EAAEo5D,MAAQ,EAC7Bp5D,EAAEkzD,iBAGNykO,EAAkB,CACd7/R,MAAOkI,GAEd,IACDs1D,EAAAA,EAAAA,GAAgBvE,EAAUwmX,GAAmCmF,GAAc,SAAA18a,GACvE,IAAIinQ,EAAQn/L,GAAE9nE,EAAE0O,QAChB83C,EAAKwhN,iBAAiB,CAClBlwQ,MAAOkI,EACPswQ,YAAa13H,GAAiBquH,GAC9B+2J,SAAUx3W,EAAK+wT,YAAYtwG,IAElC,GACJ,uCACD,WAAyB,WACrBlwQ,KAAKixQ,iBAAmBjxQ,KAAK2/J,sBAAsB,cAAe,CAC9Dhf,aAAc,SAAA13I,GAAC,OAAI,EAAK00Q,kBAAkB10Q,EAAErL,KAAK,GAAGmD,MAArC,GAEtB,8CACD,WACIf,KAAKgnT,wBAA0BhnT,KAAK2/J,sBAAsB,qBAC7D,kCACD,SAAkBtxI,GACVruB,KAAK4hb,oBACE5hb,KAAK4hb,WACZ5hb,KAAK4lb,4BAEZ,oCACD,SAAoB38a,GAChB,IAAI24I,EAAU7wE,GAAE9nE,EAAE0O,QAClB,GAAKiqI,EAAQtzE,SAAS0xW,KAA2Bp+R,EAAQtzE,SAASqxW,IAKlE,GADA3/a,KAAKmjb,cAAe,EAChBvhS,EAAQtzE,SA1iBgB,6BA2iBxBtuE,KAAK4hb,YAAa,MACf,CACH,IAAIpgD,EAAkBxhY,KAAK6lb,sBAAsBjkS,GAC7CkkS,EAAe9lb,KAAK+lb,gBAAgBnkS,GACxC5hJ,KAAK4ib,yCAAyCkD,EAActkD,GAAiB,EAAO5/O,EACvF,MAVG5hJ,KAAKmjb,cAAe,CAW3B,0CACD,WACI,IAAItd,EAAgB7la,KAAKyhb,oBAAoBzc,mBACzCyZ,EAAgB5Y,EAAc,GAC9BmgB,EAAengB,EAAcA,EAAclla,OAAS,GACpD6C,EAAS,CACTsiF,UAAW24V,EAAc34V,UACzBC,QAASigW,EAAajgW,cAEtB,IAAWigW,EAAal6T,SACxBtoH,EAAOsoH,OAASk6T,EAAal6T,QAEjC9rH,KAAK2sC,OAAO,uBAAZ3sC,CAAoCwD,EAAQwib,EAAa3nY,OAC5D,wCACD,WACIr+C,KAAKimb,2BACL,IAAIN,EAAe,IAAI11a,OAAO+va,GAAuB,MAAM/va,OAAO0va,IAC9D3lX,EAAWh6D,KAAKg6D,WAChBx7D,EAAYglJ,GAAauxE,GAAsB/0N,KAAKw+J,MACxDjgG,EAAAA,EAAAA,IAAiBvE,EAAUx7D,EAAWmnb,GACtCpnX,EAAAA,EAAAA,GAAgBvE,EAAUx7D,EAAWmnb,EAAc3lb,KAAKssN,oBAAoBxvN,KAAKkD,MACpF,oCACD,SAAoBiJ,GAChB,IAAIinQ,EAAQn/L,GAAE9nE,EAAE0O,QAChB3X,KAAKkmb,mBAAmB,CACpBnlb,MAAOkI,EACPswQ,YAAa13H,GAAiBquH,GAC9B+2J,SAAUjna,KAAKwgX,YAAYtwG,KAE/BlwQ,KAAKojb,qBAAsB,CAC9B,yCACD,WACIpjb,KAAKkmb,mBAAqBlmb,KAAK2/J,sBAAsB,oBACxD,yCACD,WACI,OAAI3/J,KAAKg9Y,8BACEh9Y,KAAKmmb,aAETnmb,KAAKywa,OACf,wCACD,WACI,OAAOzwa,KAAKywa,OACf,mDACD,WACI,OAAOzwa,KAAK0jb,iBAAiB0C,gCAChC,kCACD,WACI,IAAI1rb,EAAIC,EACRqF,KAAKiha,qBAAqBj1X,SAC1B,QAAUtxC,EAAKsF,KAAKqmb,yBAAsB,IAAW3rb,GAAcA,EAAGsxC,SACtE,QAAUrxC,EAAKqF,KAAKsmb,0BAAuB,IAAW3rb,GAAcA,EAAGqxC,QAC1E,sCACD,WACI,OAAOhsC,KAAKumb,oBACf,mCACD,WACI,IAAInmS,EAAgBpgJ,KAAK2sC,OAAO,iBAC5B4T,EAAevgD,KAAK2sC,OAAO,gBAC3BsR,EAAaj+C,KAAK2sC,OAAO,cAC7B,OAAO3sC,KAAKs2W,iBAAiB27D,kBAAkB1xX,EAActC,EAAYmiG,EAC5E,mCACD,SAAmBzxD,GACf,OAAO3uF,KAAK0jb,iBAAiB9V,kBAAkBj/U,EAClD,kCACD,SAAkBA,EAAY63V,GAC1B,IAAIhjb,EAASxD,KAAK0jb,iBAAiBhW,iBAAiB/+U,GAIpD,OAHI63V,GAA0Bxmb,KAAKy/I,uBAC/Bj8I,GAAUmrF,GAEPnrF,CACV,+BACD,SAAeisQ,EAAU89E,GACrB,OAAOvtV,KAAK0jb,iBAAiB+C,cAAch3K,EAAU89E,EACxD,iCACD,SAAiBznQ,GACb,IACuB8tV,EACnB5za,KAAKs2W,iBADLs9D,kBAEJ,OAAOA,EAAkB9+R,iBAAiBhvD,EAAW8tV,EAAkB32C,YAAYj9X,KAAK2sC,OAAO,kBAAmB3sC,KAAK2sC,OAAO,cACjI,+BACD,WACI,OAAOwsG,GAAcn5I,KAAK2sC,OAAO,UACpC,oCACD,WACI,IAAIngC,EAAUxM,KAAKg6D,WACnBh6D,KAAK0mb,kBAAkBl6a,GACvBxM,KAAK2mb,qBAAqBn6a,EAC7B,kCACD,SAAkBA,GACd+xD,EAAAA,EAAAA,IAAiB/xD,EAAS2za,GAAeC,OACzC7hX,EAAAA,EAAAA,IAAiB/xD,EAAS2za,GAAeI,OACzChiX,EAAAA,EAAAA,IAAiB/xD,EAAS2za,GAAeE,KAC5C,kCACD,SAAkB7za,GAAS,WACvBxM,KAAK4mb,kBAAkBp6a,GACvB+xD,EAAAA,EAAAA,GAAgB/xD,EAAS2za,GAAeC,MAAOS,GAAwB,CACnErqR,gBAAiB,SAAC7+I,EAAQ5W,GAAT,OAAoB,EAAK8lb,qBAAqBlva,EAAQ5W,EAAtD,IAClB,SAAAkI,GACM,EAAK69a,yBACN,EAAKzhC,2BACLt0U,GAAE9nE,EAAE0O,QAAQy2D,SAAS6xW,IAE5B,IACD1hX,EAAAA,EAAAA,GAAgB/xD,EAAS2za,GAAeI,OAAO,WACtC,EAAKuG,wBACN,EAAKzhC,0BAEZ,IACD9mV,EAAAA,EAAAA,GAAgB/xD,EAAS2za,GAAeE,KAAMQ,IAAwB,WAClE,IAAInmb,EAAIC,EACH,EAAKglZ,gBAGJ,QAAUjlZ,EAAK,EAAKilZ,oBAAiB,IAAWjlZ,OAAK,EAASA,EAAGkla,8BAIvE,QAAUjla,EAAK,EAAKglZ,aAAaigB,oCAAiC,IAAWjla,GAAcA,EAAGmD,MAAK,WAC/F,EAAK6hZ,aAAaqgB,wBACrB,IALG,EAAKrgB,aAAaqgB,yBAMzB,GACJ,qCACD,SAAqBxzZ,GAAS,WACtBu6a,GAAgB,EACpBxoX,EAAAA,EAAAA,IAAiB/xD,EAASm0a,IAC1BpiX,EAAAA,EAAAA,IAAiB/xD,EAASi0a,IAC1BliX,EAAAA,EAAAA,GAAgB/xD,EAASi0a,GAAyCI,IAAwB,SAAA53a,GAClFw8I,GAAax8I,IAAM,IAAMA,EAAEo5D,QAC3B0kX,GAAgB,EAChB,EAAK/sX,WAAWoU,SAASwxW,IACzBrhX,EAAAA,EAAAA,IAAiB1B,EAAAA,EAAAA,cAA0B6jX,IAC3CniX,EAAAA,EAAAA,GAAgB1B,EAAAA,EAAAA,cAA0B6jX,IAAuC,WAC7EqG,GAAgB,EAChB,EAAK/sX,WAAWqU,YAAYuxW,GAC/B,IAER,IACDrhX,EAAAA,EAAAA,GAAgB/xD,EAASm0a,GAAyCE,IAAwB,SAAA53a,GAClF89a,GAAiB,EAAK9lB,uBAAyB,EAAKA,qBAAqBt0X,OAAO,qBAChF1jC,EAAEkzD,iBACFlzD,EAAE83D,kBACF,EAAKimX,YAAYj2W,GAAE9nE,EAAE0O,SAAS,GAErC,GACJ,2BACD,WACI,OAAO0rC,IACV,4BACD,WACI,OAAOrjD,KAAKinb,oBACf,8BACD,WACI,OAAOjnb,KAAKiha,oBACf,uCACD,WACI,OAAOjha,KAAKiha,qBAAqB7yN,WACpC,8CACD,SAA8BtiF,GAC1B,OAAO9rH,KAAK0jb,iBAAiBlT,uBAAuB1kT,EACvD,wCACD,WACI,OAAO9rH,KAAKiha,qBAAqB9yN,YACpC,wCACD,WACI,OAAOnuM,KAAKiha,qBAAqB9pI,aACpC,uCACD,WACI,OAAOpmN,GAAE/wE,KAAKiha,qBAAqB15Z,YACtC,qCACD,WACI,OAAOvH,KAAKskb,eAAiBp5W,GAAelrE,KAAKskb,eAAe,EACnE,kCACD,WACI,OAAOtkb,KAAKknb,aAAez8V,GAAgBzqF,KAAKknb,YAAYttb,IAAI,IAAI+2B,KACvE,mCACD,WACI,OAAO3wB,KAAKmmb,aAAen7W,GAAchrE,KAAKmmb,cAAgB,CACjE,uCACD,WACI,OAAOnmb,KAAK0jb,iBAAiByD,eAChC,2CACD,SAA2Bhmb,GACvB,IAAIosV,EAAchkV,KAAKo/D,MAAMxnE,EAAQnB,KAAKi9Y,gBAE1C,MAAO,CACH1vD,YAAaA,EACb99E,SAHWtuQ,EAAQnB,KAAKi9Y,eAAiB1vD,EAKhD,0CACD,WACI,IAAI7yV,EACJ,MAAO,CACH6lD,aAAcvgD,KAAK2sC,OAAO,gBAC1BsR,WAAYj+C,KAAK2sC,OAAO,cACxBwpY,WAAYn2a,KAAKs2W,iBAAiBs9D,kBAAkBuC,WACpDx5V,SAAU,QAAUjiF,EAAKsF,KAAKs2W,iBAAiBs9D,yBAAsB,IAAWl5a,OAAK,EAASA,EAAGuiY,YAAYj9X,KAAK2sC,OAAO,kBACzH2xG,cAAet+I,KAAKgzY,mBACpB90V,eAAgBl+C,KAAKonb,kBAE5B,oCACD,SAAoBriW,EAAa+mC,GAC7B,IAAIg6Q,EAAgB9lY,KAAKgzY,mBACrBq0C,EAAernb,KAAK2sC,OAAO,gBAAkBqpY,GAC7CsR,EAAiBtlW,GAAAA,uBAAiC8jT,EAAe/gT,GACjEwiW,EAAexiW,EAAYrvB,UAAYowU,EAAcpwU,UAAY4xX,EACjErnW,EAAOjgF,KAAKwnb,mBAAmBD,EAAcF,GAC7CI,EAAgBznb,KAAK0nb,kBAAkBznW,GACvCz8E,GAAUy8E,EAAOwnW,GAAiBxR,GACjCnqT,IAKDtoH,EAAS+jb,EAAetnW,EAFpBjgF,KAAKs2W,iBADL7B,eAG4CgzE,EADvBznb,KAAKk9Y,yBAGlC,OAAO15Y,CACV,kCACD,SAAkB6qB,GACd,OAAO,CACV,mCACD,SAAmBk5Z,EAAcF,GAC7B,OAAO99a,KAAKo/D,OAAO4+W,EAAeF,GAAgBpR,GACrD,6BACD,SAAa90a,GACT,OAAOA,EAAQnB,KAAKi9Y,cACvB,kCACD,WACI,OAAOj9Y,KAAK2nb,iBAAiB3rb,KAAK,IAAIiU,OAAOgwa,IAChD,mCACD,WAAqB,WACjB,OAAOjgb,KAAKsQ,MAAM1W,IAAI,kBAAkB,WACpC,OAAI,EAAK+pb,4BACEl5V,GAAgB,EAAK85V,YAAY3qb,IAAI,IAAI+2B,MAEnC85D,GAAgB,EAAKzwB,WAAWpgE,IAAI,IAAI+2B,MACpC,EAAKg+Y,oBACJ,EAAKyB,oBAE9B,GACJ,sCACD,SAAsB5uC,EAAiBhpP,EAAYs4N,GAC/C,IAAI/vP,EAAU/gH,KAAK0jb,iBAAiBkE,mBAAmBpmD,EAAiBhpP,EAAYs4N,GACpF,OAAO9wW,KAAK0ib,iBAAiB3hU,EAChC,iCACD,SAAiBv2G,GACb,OAAOxK,KAAKukb,YAAYvob,KAAK,WAAWiU,OAryBxB,2BAqyBkD,MAAM2/D,GAAGplE,EAASilQ,UAAUzzQ,KAAK,WAAWiU,OAAO6lI,GAAoB,MAAMlmE,GAAGplE,EAAS+iV,YAC9J,wCACD,SAAwBA,GACpB,OAAOvtV,KAAK4ia,cAAc5ma,KAAK,MAAM4zE,GAAG,GAAG5zE,KAAK,MAAM4zE,GAAG29Q,EAC5D,0BACD,SAAUzhO,EAAQllG,GACd,IAAI2jY,EAAYz+R,EAAS6zT,GAA2BK,GACpD,GAAI,aAAep5Z,EAAW,CAE1B,IADA,IAAIpjB,EAAS,GACJmF,EAAI,GAAIA,IAAK,CAClB,IAAIojZ,EAAQ/rZ,KAAKg6D,WAAWh+D,KAAK,OAAOiU,OAAOs6Y,EAAW,eAAet6Y,OAAOtH,EAAG,MACnF,IAAKojZ,EAAMprZ,OACP,MAEJ6C,EAASA,EAAOyM,OAAO87Y,EAAMr+U,UAChC,CACD,OAAOqD,GAAEvtE,EACZ,CACD,OAAOxD,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOs6Y,GAC1C,8CACD,WACI,IAAIr6Y,EAAWlQ,KAAKs0W,qBAAuB,IAAIrkW,OAAO+va,GAAuB,OAAO/va,OAAO6lI,IAAsB,IAAI7lI,OAAO+va,IACxHjR,EAAS/ua,KAAKg6D,WAAWh+D,KAAKkU,GAClC,MAAO,CAAC6+Z,EAAO,GAAIA,EAAOA,EAAOpua,OAAS,GAC7C,6BACD,SAAamrH,GACT,GAAI9rH,KAAKg9Y,8BACL,OAAOh9Y,KAAKukb,YAAYvob,KAAK,WAAWiU,OAAO6lI,GAAoB,MAEvE,IAAIy0Q,EAAYz+R,GAAU9rH,KAAKuzW,mBAAqBosE,GAA2BK,GAC/E,OAAOhgb,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOs6Y,GAC1C,qDACD,WACI,IACY/9X,EACRi+D,GAAgBzqF,KAAKukb,YAAY3qb,IAAI,IADrC4yB,OAEJ2+C,GAAenrE,KAAKmmb,aAAc35Z,EACrC,qCACD,WACI,OAAOxsB,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAO8va,IAC1C,sCACD,SAAsB7/V,EAAOE,EAASnsD,EAAMukH,EAAY1sB,GACpD,IAAI/mC,EAAc9wD,GAAQ,IAAInxB,KAAK9C,KAAK2sC,OAAO,gBAC3C4T,EAAevgD,KAAK2sC,OAAO,gBAC3BsR,EAAaj+C,KAAK2sC,OAAO,cACzBuzC,EAAQ3/B,IACR2/B,EAAQ3/B,GAER2/B,GAASjiC,IACTiiC,EAAQjiC,EAAa,GAEzB8mC,EAAY7F,SAASgB,EAAOE,EAAS,EAAG,GACxC,IAAI6vL,EAAOjwQ,KAAKs2W,iBAAiBuxE,uBAAuB9iW,EAAayzD,EAAY1sB,GAEnEthH,EAEVylQ,EAFAzlQ,SACUy8Z,EACVh3J,EADAg3J,SAEJ,OAAOjna,KAAK48Y,2BAA2BkrC,sCAAsC7gB,EAAUz8Z,EAAUu6E,EAAas6D,GAAkBr/I,KAAKqF,MAAO,aAAerF,KAAKk2W,cACnK,qCACD,SAAqBv+V,EAAQ5W,GACzB,IAAIgnb,EAA8B/nb,KAAKiha,qBAAqBjnW,WACxDm+V,EAAiB1tU,GAAgBs9V,EAA4Bnub,IAAI,IACjEK,GAAS8mD,EAAAA,EAAAA,MACTinY,GAAyBj3W,GAAEp5D,GAAQm4D,QAAQi4W,GAA6Bpnb,OACxEsnb,EAAgClnb,EAAMyiE,MAAQ20V,EAAevzX,MAAQ7jC,EAAMyiE,MAAQ20V,EAAevzX,KAAOuzX,EAAexnY,OAAS12B,EAAOk0K,SAAW,GACnJ+5Q,EAA8Bnnb,EAAM0iE,MAAQ00V,EAAe1zX,KAAO1jC,EAAM0iE,MAAQ00V,EAAe1zX,IAAM0zX,EAAe3rY,QAAUvyB,EAAOq0K,SAAW,GACpJ,QAAI05Q,IAA0BC,KAGvBC,GAA+BD,EACzC,iCACD,SAAiBzmD,EAAiBhpP,EAAY03H,GAC1C,IAAI5tQ,EAAMwD,KAAKC,UAAU,CACrB0pQ,SAAU+xH,EAAgB/xH,SAC1B89E,YAAai0C,EAAgBj0C,YAC7B/0M,WAAYA,IAEhBx4I,KAAKsQ,MAAMnX,IAAImJ,EAAKtC,KAAKwgX,YAAYtwG,GACxC,sCACD,SAAsB3iJ,EAAaowP,GAC/B,IAAIr7W,EAAMwD,KAAKC,UAAU,CACrB0pQ,SAAUliJ,EAAYkiJ,SACtB89E,YAAahgO,EAAYggO,YACzB/0M,WAAYjrB,EAAYirB,aAExB2vS,EAAWrib,KAAKC,UAAU,CAC1B0+B,IAAKk5U,EAASl5U,IACdG,KAAM+4U,EAAS/4U,OAEnB5kC,KAAKsQ,MAAMnX,IAAIgvb,EAAUnob,KAAKsQ,MAAM1W,IAAI0I,GAC3C,iCACD,WACI,OAAO,CACV,kCACD,WACI,OAAO,CACV,sCACD,SAAsB2ka,GAClB,OAAOxhX,EAAAA,GAAAA,IAAO,EAAM,CAAC,EAAG,CACpBqgC,UAAWmhV,EAASnhV,UACpBC,QAASkhV,EAASlhV,QAClB1nC,OAAQ4oX,EAAS5oX,OACjBm6F,WAAYyuR,EAASzuR,WACrB1sB,OAAQm7S,EAASn7S,QAExB,4BACD,SAAYokJ,GACR,IAAI+2J,EAAWjna,KAAKsib,iBAAiBpyK,IAAU,CAAC,EAChD,OAAOlwQ,KAAKoob,sBAAsBnhB,EACrC,iCACD,SAAiB/2J,GAEb,GADkBA,EAAM,GAEpB,OAAOlwQ,KAAKqob,eAAen4K,EAGlC,qCACD,WACI,OAAOlwQ,KAAK48Y,2BAA2B0rC,gBAC1C,sCACD,WACI,OAAOtob,KAAK48Y,2BAA2B2rC,iBAC1C,+BACD,SAAer4K,GACX,IAAIT,EAAWS,EAAMrlQ,SAAS1J,QAAUnB,KAAK48Y,2BAA2B4rC,oBACpEj7F,EAAcr9E,EAAM/uQ,QAAUnB,KAAK48Y,2BAA2B6rC,sBAE5CnyE,EAClBt2W,KADAs2W,iBAEAwvE,EAAe9lb,KAAK+lb,gBAAgB71K,GAExC,OADeomG,EAAiBkK,YAAY/wG,EAAU89E,EAAau4F,SAChD,CACtB,gCACD,WACI,OAAO9lb,KAAK2sC,OAAO,gBAAkB3sC,KAAK+hb,iCAAmC/hb,KAAKwkZ,iBAAmB,CACxG,mCACD,SAAmBvwX,EAAM68U,GACrB,IACuB8iE,EACnB5za,KAAKs2W,iBADLs9D,kBAEA8U,EAAe53E,EAAc,MAAQ8iE,EAAkB32C,YAAYj9X,KAAK2sC,OAAO,kBAC/EuoY,EAAsBr2R,GAA2B7+I,KAAKgzY,mBAAoBhzY,KAAK2sC,OAAO,iBACtF0jF,EAAgBrwH,KAAK2ob,oBAAoB10Z,EAAM68U,GAAeokE,EAC9D/za,EAAQoI,KAAKo/D,MAAM0nD,EAAgBq4T,GAOvC,OANI53E,IACA3vW,EAAQnB,KAAK4ob,aAAaznb,IAE1BA,EAAQ,IACRA,EAAQ,GAELA,CACV,sCACD,WACI,IAAI0nb,EAAiB7ob,KAAK8ob,oBACtBC,EAAOF,EAAeh+a,SAE1B,OADek+a,EAAK5nb,QACF4nb,EAAK/sb,KAAK,MAAM2E,OAASkob,EAAe1nb,OAC7D,uCACD,WACI,IAAI8la,EAAWjna,KAAKwgX,YAAYzvS,GAAE/wE,KAAK8ob,sBAE3Bh9T,EACRm7S,EADAn7S,OAQJ,MAAO,CACHhmC,UALAmhV,EADAnhV,UAOAC,QAHAkhV,EADAlhV,QAKA+lC,OAAQA,EACRztE,OAAQ4oX,EAAS5oX,OAExB,6BACD,WACI,MAAO,CAACr+C,KAAKgzY,mBAAoBhzY,KAAKgpb,6BACzC,gCACD,WACI,OAz8BwB,EA08B3B,oCACD,SAAoBxwS,EAAY2tF,EAAYolK,GACxC,GAAI/yP,EAAa,KAAM13F,EAAAA,EAAAA,MACnB,OAAO,EAEX,IACInwB,EAAQ,EACRo+Y,EAFO/ua,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOgmI,KAAuBrmE,GAAG,GAEnD5zE,KAAK,IAAIiU,OAAO+va,KAC9B9H,EAAiBl4a,KAAKyua,gBAAkBj2R,EAC5C+yP,EAAYA,GAAavrY,KAAKyua,iBACzBpgX,EAAAA,EAAAA,IAAU83K,KACXA,EAAa+xM,GAEjB,IAAK,IAAIvva,EAAIw9N,EAAYx9N,EAAIuva,EAAiB3sC,EAAW5iY,IAAK,CAC1D,IAAI6D,EAAUukE,GAAEg+V,GAAQn/V,GAAGjnE,GAAG/O,IAAI,GAElC+2B,GADmBnkB,EAAUi+E,GAAgBj+E,GAASmkB,MAAQ,CAEjE,CACD,OAAOA,GAASunZ,EAAiB3sC,EAAYplK,EAChD,6BACD,WACI,OAAOquK,GAAax0Y,KAAK+8Y,yBAC5B,8BACD,WACI,OAAOxI,GAAcv0Y,KAAK+8Y,yBAC7B,gCACD,WACI,OAAOtI,GAAgBz0Y,KAAK2sC,OAAO,mBAAoB3sC,KAAKg9Y,8BAA+Bh9Y,KAAK+8Y,yBACnG,sCACD,SAAsBvkQ,GAClB,OAAOk8P,GAAsBl8P,EAAYx4I,KAAKs2W,iBAAkBt2W,KAAK2sC,OAAO,cAAe3sC,KAAK+8Y,yBACnG,gCACD,WACI,OAAO/8Y,KAAK0jb,iBAAiBuF,iBAChC,0CACD,SAA0BtiE,EAAa76P,GACnC,IAAIy/Q,EAAYvrY,KAAKqkb,mBAAmBrkb,KAAKwkZ,kBACzCvmC,EAAYj+W,KAAKw0Y,eACjBx2B,EAAalyP,EAAS9rH,KAAKy0Y,kBAAoBz0Y,KAAKu0Y,gBACpD20C,EAAW3/a,KAAKo/D,MAAMp/D,KAAKo/D,MAAMg+S,EAAYliV,KAAOl7B,KAAKo/D,MAAMq1S,IAC/DmrE,EAAYxiE,EAAY/hV,KAAOq5U,EAKnC,OAJAkrE,EAAY5/a,KAAKo/D,MAAMwgX,EA9+BM,KA++BzBnpb,KAAK8hb,WACLqH,EAAY59C,EAAY49C,EAAY,GAEjC59C,EAAY29C,EAAWC,CACjC,iCACD,WACI,OAAOnpb,KAAKs2W,iBAAiB08B,kBAChC,+BACD,WACI,OAAOhzY,KAAKs2W,iBAAiB2oE,oBAChC,2CACD,WACI,OAAOj/a,KAAKs2W,iBAAiBC,4BAA4Bv2W,KAAK2sC,OAAO,cACxE,gCACD,WACI,OAAOwzG,GAAgBngJ,KAAKqF,KAAMrF,KAAK2sC,OAAO,gBAAiB3sC,KAAK2sC,OAAO,cAAe3sC,KAAK2sC,OAAO,iBACzG,oCACD,SAAoBm/E,GAChB,OAAOA,EAASqC,GAAK,OAASnuH,KAAKmgJ,iBACtC,sCACD,WACI,IAAI5/F,EAAevgD,KAAK2sC,OAAO,gBAC3BsR,EAAaj+C,KAAK2sC,OAAO,cACzByzG,EAAgBpgJ,KAAK2sC,OAAO,iBAChC,OAAO3sC,KAAKs2W,iBAAiB4mC,sBAAsB38V,EAActC,EAAYmiG,EAChF,+BACD,SAAeumO,GACX,IAAIyiE,EAAcppb,KAAK0jb,4BAA4BzT,GAA0Bjwa,KAAKqpb,uBAAuB1iE,EAAYnuO,YAAcx4I,KAAKspb,yBAAyB3iE,GACjK,OAAO3mX,KAAK8hb,SAAW9hb,KAAKupb,4BAA4BH,GAAeA,CAC1E,uCACD,SAAuB5wS,GACnB,IAAIgxS,EAAqBxpb,KAAKypb,gCAC9B,OAAOzpb,KAAK0jb,iBAAiBgG,qBAAqBlxS,EAAYgxS,EACjE,yCACD,SAAyB7iE,GACrB,IAAI4kB,EAAYvrY,KAAKyua,gBACjBM,EAAS/ua,KAAK2pb,YACd1rE,EAAYj+W,KAAKw0Y,eAED6D,EAChBr4Y,KAAKs2W,iBADL+hC,eAEJ,OAAOr4Y,KAAK0jb,iBAAiBgG,qBAAqBn+C,EAAWwjC,EAAQ9wD,EAAW0I,EAAa0xB,EAChG,4CACD,SAA4B+wC,GACxB,IAAInrE,EAAYj+W,KAAKw0Y,eACrB,OAAOz7X,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAGqwa,GAAc,CACvCxkZ,KAAMwkZ,EAAY1kZ,MAAQ,EAAIu5U,EAC9Bv5U,MAAO0kZ,EAAYxkZ,KAAO,EAAIq5U,GAErC,6CACD,WACI,OAAOj+W,KAAKg9Y,+BAAiC,IAAMh9Y,KAAK6vU,gBAAgBzhI,WAC3E,yCACD,SAAyBu4K,EAAa76P,GAAQ,WACtCxpH,EAAMwD,KAAKC,UAAU,CACrB0+B,IAAKkiV,EAAYliV,IACjBG,KAAM+hV,EAAY/hV,OAEtB,OAAO5kC,KAAKsQ,MAAM1W,IAAI0I,GAAK,WACvB,IAAIysa,EAAS,EAAK4a,UAAU79T,GACxBkkJ,EAAY,EAAK+vJ,0BAA0Bp5C,EAAa76P,GACxDokJ,EAAQ6+J,EAAOn/V,GAAGogM,GACtB,OAAO,EAAKwwG,YAAYtwG,EAC3B,GACJ,iCACD,WACI,IAAI1sQ,EAAS,CAAC,EACVovR,EAAc5yR,KAAK6vU,gBAAgB71Q,WACnCgkT,EAAah+W,KAAKu0Y,gBAClBq1C,EAAoB5pb,KAAKwwa,yBAA2BxyD,EACpDk6D,EAAiB0R,EAAoB9+W,GAAU8nN,GAAeorF,EASlE,OARAx6W,EAAOihC,IAAM,CACTy7C,MAAO32E,KAAKo/D,MAAMihX,EAAoB5pb,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,gBAClFyzC,QAASwpW,EAAoB,EAAI,GAAK,GAE1Cpmb,EAAOmhC,OAAS,CACZu7C,MAAO32E,KAAKo/D,MAAMuvW,EAAiBl4a,KAAK2sC,OAAO,kBAAoB3sC,KAAK2sC,OAAO,gBAC/EyzC,QAAS72E,KAAKo/D,MAAMuvW,GAAkB,EAAI,GAAK,GAE5C10a,CACV,qCACD,SAAqBywB,EAAMoqB,GACvB,IAAIytE,EAASh0G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GACrE4pE,EAAU1hF,KAAKw0H,mBAAmBE,WAAWzgG,EAAM,CACnDtxB,KAAM,WAENmuW,EAAchlP,GAAU9rH,KAAKy/I,qBAC7Bz/I,KAAK6pb,yBAAyBnoW,EAASrjC,EAAQyyT,IAC/C9wW,KAAKqwE,SAASqR,EAASrjC,EAAQyyT,GAAa,EAEnD,yCACD,SAAyB78U,EAAMoqB,EAAQyyT,GAAa,WAC5Ci7C,EAAQ/rZ,KAAK8pb,oBAAoBh5E,GACjCt4N,EAAax4I,KAAK+pb,mBAAmB1rY,GAAUr+C,KAAKohb,2BAA2B/iY,GAAU,EACzFjqB,EAAOH,EAAKyhC,UACZ2oX,EAAcr8V,GAAAA,SAAmB/tD,GAAMyhC,UAC3C,OAAOq2V,EAAM5nZ,QAAO,SAACy5U,EAAe3tE,GAChC,IAAI,EAIA,EAAKuwG,YAAYvwG,GAHNkuK,EADf,EACIr4V,UACSs4V,EAFb,EAEIr4V,QACY+pU,EAHhB,EAGIt3Q,WAEAyxR,EAAgBkU,EAAczoX,UAC9Bw0W,EAAckU,EAAY1oX,UAC9B,UAAMo7S,GAAem5D,GAAiB71Y,GAAQA,EAAO81Y,GAAep5D,GAAeutE,IAAgBpU,IAAkBzxR,IAAes3Q,IAG7HlyE,CACV,IAAE,EACN,oCACD,SAAoBkzB,GAChB,IAAIl+E,EAAc5yR,KAAK6vU,gBAAgB71Q,WACnCgkT,EAAah+W,KAAKu0Y,gBAClBt2B,EAAYj+W,KAAKw0Y,eACjB8iC,EAAmBt3a,KAAKqkb,mBAAmBrkb,KAAKwkZ,kBAChDwlC,EAAsBhqb,KAAKwwa,yBAC3ByZ,EAAuBjqb,KAAKkqb,0BAC5BC,EAAuBH,EAAsBhsE,EAAah+W,KAAK48Y,2BAA2B4rC,oBAC1F4B,EAAmB7gb,KAAKo/D,MAAMwhX,GAC9BH,EAAsBhsE,IAAe,IACrCosE,GAAoB,GAExB,IAAIC,EAA0BJ,EAAuBhsE,EACjDqsE,EAAsB/gb,KAAKo/D,MAAM0hX,GACjCJ,EAAuBhsE,IAAc,IACrCqsE,GAAuB,GAE3B,IAAI97K,EAAWjlQ,KAAKo/D,MAAMwhX,EAAuBr/W,GAAU8nN,GAAeorF,GACtEpsW,EAAcrI,KAAKo/D,MAAM0hX,EAA0Bz/W,GAASgoN,GAAeqrF,GAC3E8wD,EAAS/ua,KAAKuqb,aAAaz5E,GAC3BttW,EAAS,GASb,OARAura,EAAOliX,MAAM,SAAS1rD,GAClB,IAAI+uQ,EAAQn/L,GAAE/wE,MACVutV,EAAcpsV,EAAQm2a,EACtB7nK,EAAWtuQ,EAAQm2a,EACnBgT,GAAuB/8F,GAAeA,EAAc37U,GAAew4a,GAAoB36K,GAAYA,EAAWjB,GAC9GhrQ,EAAOpD,KAAK8vQ,EAEnB,IACM1sQ,CACV,6BACD,SAAa08E,EAAOE,EAASnsD,GACzB,GAAKj0B,KAAKwqb,mBAAmBv2Z,GAA7B,CAGA,IAAI0yV,EAAc3mX,KAAKyqb,sBAAsBvqW,EAAOE,EAASnsD,GACzDu6P,EAAaxuR,KAAK6vU,gBACtBrhD,EAAWgD,SAAS,CAChB/sP,IAAKkiV,EAAYliV,IAAM+pP,EAAWpgF,YAClCxpK,KAAM,GALT,CAOJ,yBACD,SAAS3Q,EAAMoqB,GACX,IAAIytE,EAASh0G,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GACrE4ya,IAAe5ya,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,KAAKA,UAAU,GAC/E,GAAK9X,KAAKwqb,mBAAmBv2Z,EAAMy2Z,GAAnC,CAGA,IAAIlyS,EAAax4I,KAAKwkZ,kBAAoBnmW,EAASr+C,KAAKohb,2BAA2B/iY,GAAU,EACzFssY,EAAmB7+T,GAAU9rH,KAAKy/I,qBAClCknO,EAAc3mX,KAAKyqb,sBAAsBx2Z,EAAK2tD,WAAY3tD,EAAKuuD,aAAcvuD,EAAMukH,EAAYmyS,GAC/Fn8J,EAAaxuR,KAAK6vU,gBAClBj9C,EAAcpE,EAAWx0N,WACzBikT,EAAYj+W,KAAKw0Y,eACjBvnY,EAASjN,KAAK2sC,OAAO,cAAgBsxU,EAAY,EACjD2sE,EAAmB9/W,GAAU8nN,GAC7Bi4J,EAAkBjgX,GAASgoN,GAC3BorF,EAAah+W,KAAKu0Y,gBAClBu2C,GAAUD,EAAkB5sE,GAAa,EACzC8sE,GAAUH,EAAmB5sE,GAAc,EAC3Cp5U,EAAO+hV,EAAY/hV,KAAO4pP,EAAWrgF,aAAe28O,EAAS79a,EAC7Dw3B,EAAMkiV,EAAYliV,IAAM+pP,EAAWpgF,YAAc28O,EACjDJ,IAAqB3qb,KAAKg9Y,gCAC1Bv4W,EAAM,GAENzkC,KAAK2sC,OAAO,iCACZpX,YAAW,WACPi5P,EAAWgD,SAAS,CAChB5sP,KAAMA,EACNH,IAAKA,GAEZ,IAED+pP,EAAWgD,SAAS,CAChB5sP,KAAMA,EACNH,IAAKA,GA5BZ,CA+BJ,mCACD,SAAmBxQ,GACf,IAAIy2Z,IAAe5ya,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,KAAKA,UAAU,GAC3E+K,EAAM7iB,KAAKgzY,mBACXv7W,EAAMz3B,KAAKw9Y,iBACf,QAAIvpX,EAAOpR,GAAOoR,EAAOwD,KACrBizZ,GAAgBpra,GAAAA,IAAW,QAAS2U,IAC7B,EAGd,yCACD,WACI,OAAO,CACV,yCACD,SAAyB+2Z,GACrB,IAAI96K,EAAQ86K,GAAgBhrb,KAAK8ob,oBACjC,OAAS54K,QAAS,IAAWA,GAAiBA,EAAM7hM,YAAY4xW,GACnE,sCACD,SAAsB/vK,GAClB,IAAIq9E,EAAcr9E,EAAM/uQ,QAAUnB,KAAK48Y,2BAA2B6rC,sBAC9Dh5K,EAAWS,EAAMrlQ,SAAS1J,QAC1B2kb,EAAe9lb,KAAK+lb,gBAAgB71K,GACpCtzH,EAAqB58I,KAAKg9Y,8BAI9B,OAHM8oC,IAAiBlpS,IACnB6yH,GAAYzvQ,KAAK48Y,2BAA2B4rC,qBAEzC,CACH/4K,SAAUA,EACV89E,YAAaA,EAEpB,mCACD,WACI,OAAOvtV,KAAK2sC,OAAO,kBACtB,mCACD,WACI,OAAO3sC,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOsva,IAC1C,oCACD,WACI,MAAO,CACH3vB,SAAU5vZ,KAAKs2W,iBAAiBs5C,SAChCxC,iBAAkBptZ,KAAK2sC,OAAO,oBAC9BwjX,mBAAoBnwZ,KAAK2sC,OAAO,0BAA4B3sC,KAAKs0W,qBACjE/2N,iBAAkBv9I,KAAK2sC,OAAO,oBAC9ByjX,6BAA6B,EAEpC,8CACD,SAA8BnwW,EAAkB4iY,GAC5C,IAAIoI,EAA4BhrY,EAAiBl8C,KAAI,SAAA+hJ,GAQjD,MAAO,CACHhgE,UAFAggE,EALAhgE,UAQAC,QAHA+/D,EAJA//D,QAQA+lC,OAJAg6B,EAHAh6B,OAQA0sB,WALAsN,EAFAtN,WAQAn6F,OANAynG,EADAznG,OASP,IACDr+C,KAAK2sC,OAAO,mBAAoBs+Y,GAChCjrb,KAAKgnT,wBAAwB,CACzB/mQ,iBAAkBgrY,GAEzB,+BACD,SAAehkB,GACX,IACenhV,EAIXmhV,EAJAnhV,UACY0yD,EAGZyuR,EAHAzuR,WACQ1sB,EAERm7S,EAFAn7S,OACO3qH,EACP8la,EADA9la,MAEAqJ,EAAWxK,KAAKs2W,iBAAiBmqB,sBAAsB,CACvD36S,UAAWA,EACX0yD,WAAYA,EACZnjB,SAAUvJ,EACV3qH,MAAOA,IAEX,GAAKqJ,EAGL,OAAOshH,IAAW9rH,KAAKg9Y,8BAAgCh9Y,KAAKyib,wBAAwBj4a,EAAS+iV,aAAevtV,KAAK0ib,iBAAiBl4a,EACrI,uCACD,WAAyB,WACrB,OAAOxK,KAAKsQ,MAAM1W,IAAI,oBAAoB,iBAAO,CAC7CsnX,mBAAoB,EAAKgqE,+BACzBjqE,qBAAsB,EAAKkqE,iCAFW,GAI7C,6CACD,WAA+B,WACvBC,EAAiBprb,KAAKuqb,cAAa,GACvC,IAAKa,EAAezqb,UAAWmgD,EAAAA,EAAAA,MAC3B,MAAO,CACH,CAAC,CAAC,IAGV,IAAImwW,EAAYjxZ,KAAKqrb,gBACjBC,EAAgB7gW,GAAgBwmU,EAAUr3Z,IAAI,IAC9Cq9Y,EAAej3Y,KAAKs2W,iBAAiB4gC,kBACrC1zY,EAAS,GAQb,OAPA4nb,EAAev+X,MAAK,SAAC1rD,EAAO8uQ,GACxB,IAAIR,EAAWlmQ,KAAKo/D,MAAMxnE,EAAQ81Y,GAC9BzzY,EAAO7C,SAAW8uQ,GAClBjsQ,EAAOpD,KAAK,IAEhB,EAAKmrb,iBAAiB/nb,EAAOisQ,GAAWQ,EAAMq7K,EACjD,IACM9nb,CACV,+CACD,WAAiC,WACzBA,EAAS,GACb,GAAIxD,KAAKy/I,uBAAyBz/I,KAAKg9Y,gCAAiCl8V,EAAAA,EAAAA,MAAa,CACjF,IAAI0qY,EAAcxrb,KAAKuqb,cAAa,GACpC,IAAKiB,EAAY7qb,OACb,MAAO,CAAC,CAAC,GAEb,IAAI8qb,EAA6Bzrb,KAAK4ia,cAClC8oB,EAAkBjhW,GAAgBghW,EAA2B7xb,IAAI,IACrE4xb,EAAY3+X,MAAK,SAAC/tD,EAAGmxQ,GACjB,EAAKs7K,iBAAiB/nb,EAAQysQ,EAAMy7K,EACvC,GACJ,CACD,OAAOlob,CACV,iCACD,SAAiBmob,EAAmB17K,EAAM27K,GACtC,IAAIC,EAAWphW,GAAgBwlL,GAC/B07K,EAAkBvrb,KAAK,CACnBwkC,KAAMinZ,EAASjnZ,KAAOgnZ,EAAWhnZ,KACjCH,IAAKonZ,EAASpnZ,IAAMmnZ,EAAWnnZ,IAC/B9T,MAAOk7Z,EAASl7Z,MAChBnE,OAAQq/Z,EAASr/Z,QAExB,6CACD,SAA6BgsH,GAAY,WACrC,OAAO,SAACy3H,EAAMR,EAAU89E,GACpB,IAAI82E,EAAmB92E,EAAc,EAAKkhF,gBACtCrxa,EAAU,EAAK0ub,2BAA0B,GACzChmW,EAAY,EAAKwwR,iBAAiBs9D,kBAAkB8E,qBAAqBt7a,EAASqyQ,EAAU40J,EAAkB,EAAKkiB,sBACvHzgW,EAAY9D,GAAAA,SAAmB8D,GAC/B,IAAI06S,EAAkBhoP,GAAc,EAChC,EAAKkqP,kBACLlC,EAAkBj3X,KAAKo/D,MAAM4kR,EAAc,EAAKi3D,kBACzC,EAAKu9B,kCACZvhD,EAAkBj3X,KAAKo/D,MAAM4kR,EAAc,EAAKkhF,kBAEpD,IAAIn0a,EAAO,CACPwrF,UAAWA,EACXC,QAASD,EACTgmC,QAAQ,EACR0sB,WAAYgoP,GAEZnnP,EAAcH,GAAcsnP,EAAiB,EAAK7zV,OAAO,WAI7D,OAHI0sG,EAAY14I,SACZrG,EAAK+jD,OAAS+6F,GAA+BC,IAE1C,CACH/2I,IAAKs+a,GACL1ib,MAAO5D,EAEd,CACJ,iCACD,SAAiByxb,GACb,IAAIzyZ,EAAa,OAASyyZ,QAAsB,IAAWA,EAAqBA,EAAqB,CACjGlnT,QAAQ,EACRmnT,WAAW,EACX/6B,WAAW,EACXT,aAAa,GAEjBl3X,EAAWurG,QAAU7kI,KAAKisb,qBAC1B3yZ,EAAW0yZ,WAAahsb,KAAKksb,mBAC7B5yZ,EAAW23X,WAAajxZ,KAAKmsb,mBAC7B7yZ,EAAWk3X,aAAexwZ,KAAKosb,oBAClC,iCACD,WACIl6T,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKukb,YAAa8H,GAAoB,qBAAsBrsb,KAAKssb,sBAC3G,kCACD,WACI,IAAI5xb,EACA0C,EAAU,CACVihD,OAAQr+C,KAAK2sC,OAAO,UACpB4wG,iBAAkBv9I,KAAK2sC,OAAO,oBAC9ByR,YAAap+C,KAAK0iY,kBAClBkvB,qBAAsB5xZ,KAAK2sC,OAAO,wBAClCx0B,UAAWnY,KAAKusb,wBAChBz6B,eAAgB9xZ,KAAKs2W,iBAAiBy6D,kBAAkB/wa,KAAKujb,2BAE7D,QAAU7ob,EAAKsF,KAAK2sC,OAAO,iBAAc,IAAWjyC,OAAK,EAASA,EAAGiG,SACrEX,KAAKwsb,yBACLt6T,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKysb,2BAA4BC,GAAe,sBAAuBtvb,IAE9G4C,KAAK2sb,wBAEZ,mCACD,WACI,IAAIjyb,EAEJ,GADcsF,KAAKy/I,uBAAyBz/I,KAAK8/X,uBACpC,CACT9/X,KAAK4sb,yBAAwB,GAC7B,IAAIxvb,GAAU2b,EAAAA,EAAAA,GAAS,CACnB62Y,SAAU5vZ,KAAKs2W,iBAAiBs5C,SAChCxC,iBAAkBptZ,KAAK2sC,OAAO,oBAC9BkhY,eAAgB,IAChB,QAAUnza,EAAKsF,KAAK48Y,2BAA2BqsB,kCAA+B,IAAWvua,OAAK,EAASA,EAAGgva,mBAAqB,CAAC,GACpIx3S,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKwkb,cAAeqI,GAAqB,uBAAwBzvb,GACxG80H,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKwjb,cAAesJ,GAAqB,4BAA6B,CAAC,EACjH,CACD9sb,KAAK4sb,yBAAwB,EAChC,iCACD,WACI16T,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKknb,YAAa6F,GAAyB,qBAAsB,CACpG13B,cAAer1Z,KAAKs2W,iBAAiB++C,cACrCzB,iBAAkB5zZ,KAAK2sC,OAAO,oBAC9B4wG,iBAAkBv9I,KAAK2sC,OAAO,qBAErC,mCACD,WACI,IACIjyC,EADAi6Z,IAAqB78Y,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,KAAKA,UAAU,IAEjF,QAAUpd,EAAKsF,KAAK2sC,OAAO,iBAAc,IAAWjyC,OAAK,EAASA,EAAGiG,QACrEX,KAAKwsb,yBAELxsb,KAAK2sb,yBAETz6T,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKywa,QAASzwa,KAAKgtb,8BAA+B,uBAAwB,CAC7Gt5B,eAAgB1zZ,KAAKs2W,iBAAiBo9C,eACtC5B,eAAgB9xZ,KAAKs2W,iBAAiBy6D,kBAAkB/wa,KAAKujb,yBAC7D5vB,iBAAkB3zZ,KAAK2sC,OAAO,oBAC9BinX,iBAAkB5zZ,KAAK2sC,OAAO,oBAC9B0R,OAAQr+C,KAAK2sC,OAAO,UACpByR,YAAap+C,KAAK0iY,kBAClBnlP,iBAAkBv9I,KAAK2sC,OAAO,oBAC9BilX,qBAAsB5xZ,KAAK2sC,OAAO,wBAClCgoX,mBAAoBA,GAE3B,iCACD,SAAiBhrD,GACb,IAAK3pW,KAAK2/Y,cAAgBh2C,EAAW,CACjC3pW,KAAK2/Y,aAAe,IAAIggB,GAAwBh2D,GAChD,IAAItnB,EAAetxQ,GAAE44R,EAAUn9V,WAC/BxM,KAAKitb,oBAAoBjtb,KAAKktb,cAAe7qG,GAC7CriV,KAAKitb,oBAAoBjtb,KAAK4ia,cAAevgF,EAChD,CACJ,oCACD,SAAoB8qG,EAAgB9qG,GAChC,IAAIjlV,EAAU,CACVo/N,YAAa,SAAC18J,EAAay1D,GAAd,OAA+BA,EAAaw4F,aAAajuJ,EAAzD,EACbugV,gBAAiB,SAAAvyL,GAAY,OAAIA,EAAaxzN,KAAKk8I,GAAtB,GAEjCx2I,KAAKugZ,wBAAwB4sC,EAAgB9qG,EAAcjlV,EAC9D,wCACD,SAAwBk7R,EAAe80J,EAAahwb,GAAS,WACrDmK,EAAYvH,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOolI,KAChDr1I,KAAK2/Y,aAAa0tC,MAAM/0J,EAAeg1J,GAAyB/lb,EAAW6lb,EAAaptb,KAAKutb,sBAAuBvtb,KAAK2/Y,cAAc,WAC9H,EAAK4tC,wBACN,EAAKzG,wBAAyB,EAErC,IAAE,WACM,EAAKyG,wBACN,EAAKzG,wBAAyB,EAErC,IAAE,kBAAM,EAAKgC,mBAAX,IAAgC,kBAAM,EAAKnB,gBAAX,IAA6B,kBAAM,EAAKtiC,0BAAX,IAAuC,kBAAM,EAAK7Q,cAAX,GAA2Bp3Y,GACrI,8CACD,WACI,OAAO4C,KAAKg9Y,6BACf,yBACD,YACI,wDACAh9Y,KAAK48Y,2BAA2BrwW,SACnC,mCACD,WACI,OAAOkZ,EAAAA,GAAAA,IAAO,kEAA4B,CACtCs/B,YAAa,IAAIjiF,KACjBy3X,cAAe,EACfz0S,UAAW,KACX5nC,oBAAgB,EAChBqC,aAAc,EACdtC,WAAY,GACZmiG,cAAe,GACf+jD,oBAAoB,EACpBC,mBAAmB,EACnB/lJ,OAAQ,GACR8B,iBAAiB,EACjBqtY,gBAAgB,EAChBluY,YAAa,KACb7B,uBAAuB,EACvB2vW,iBAAkB,KAClBwG,iBAAkB,KAClBhC,qBAAsB,KACtB+B,iBAAkB,KAClB85B,4BAA4B,EAC5BvuS,cAAe,IAAIp8I,KACnBy7C,wBAAyB,EAAI4vE,GAAK,UAClCjuE,uBAAuB,EACvBq9F,iBAAkB,aAClBt9F,iBAAkB,GAClB7B,aAAa,EACbrB,UAAW,CACPz1B,KAAM,YAEV+1B,gBAAiB,MACjBqwY,gBAAgB,EAChBlha,YAAQ,EACRmha,aAAc,UACdC,YAAa,WAAQ,EACrBl/D,qBAAiB,EACjBm/D,qBAAsB,WAAQ,EAC9BC,kBAAmB,WAAQ,EAC3BC,qBAAsB,WAAQ,EAC9Bv5T,wBAAoB,EACpBw5T,qBAAiB,EACjBC,oBAAgB,GAEvB,+BACD,SAAerwb,GACX,OAAQA,EAAKxE,MACT,IAAK,eACDwlJ,GAAiBhhJ,EAAKM,MAAO8B,KAAK2sC,OAAO,eACzC3sC,KAAKkub,kBACL,MACJ,IAAK,aACDtvS,GAAiB5+I,KAAK2sC,OAAO,gBAAiB/uC,EAAKM,OACnD8B,KAAKkub,kBACL,MACJ,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,mBACL,IAAK,gBACL,IAAK,iBACL,IAAK,cACL,IAAK,YACDlub,KAAKkub,kBACL,MACJ,IAAK,SACDlub,KAAKmub,aACLnub,KAAKoub,wBACLpub,KAAKqub,gBACLrub,KAAKm7M,UACL,MACJ,IAAK,mBACDn7M,KAAKsub,uBACLtub,KAAKuub,6BACLvub,KAAKoub,wBACLpub,KAAKkub,kBACLlub,KAAKwub,0BACL,MACJ,IAAK,kBACGxub,KAAKg9Y,+BACLh9Y,KAAKmub,aACLnub,KAAKoub,wBACLpub,KAAKqub,gBACLrub,KAAKm7M,WACGn7M,KAAK4kb,oBAGb5kb,KAAKmua,kBAFLnua,KAAK4sb,yBAAwB,GAIjC,MACJ,IAAK,iBACD5sb,KAAKyub,0BACLzub,KAAK0ub,sBACL1ub,KAAKk+Z,oBACL,MACJ,IAAK,qBACDl+Z,KAAK0vX,gCACL,MACJ,IAAK,cACD1vX,KAAKgxQ,yBACL,MACJ,IAAK,oBACDhxQ,KAAKuyN,0BACL,MACJ,IAAK,gBACDvyN,KAAKkub,kBACLlub,KAAK2ub,6BACL,MACJ,IAAK,cACD3ub,KAAKkub,kBACLlub,KAAKwub,0BACL,MACJ,IAAK,wBACDxub,KAAK4ub,+BACL5ub,KAAKiha,qBAAqBt0X,OAAO3sC,KAAK6ub,8BACtC,MACJ,IAAK,kBACD7ub,KAAK8ub,wBACL9ub,KAAKsua,qBACL,MACJ,IAAK,SACD,6DAAqB1wa,GACrBoC,KAAK4nK,oBACL,MACJ,IAAK,qBACL,IAAK,6BACL,IAAK,mBACD,MACJ,IAAK,iBACL,IAAK,YACD5nK,KAAKm7M,UACL,MACJ,IAAK,kBACL,IAAK,iBACDn7M,KAAK48Y,2BAA2Bt8F,kBAAiB,GACjD,MACJ,SACI,6DAAqB1iT,GAEhC,sCACD,WACI,IAAImxb,EAAsB,WAAa/ub,KAAK2sC,OAAO,mBACnD3sC,KAAK2sC,OAAO,oBAAZ3sC,EAAkC+ub,EACrC,sDACD,WAAwC,WACpC,MAAO,CACHx6C,cAAev0Y,KAAKu0Y,cAAcz3Y,KAAKkD,MACvCw0Y,aAAcx0Y,KAAKw0Y,aAAa13Y,KAAKkD,MACrC6pa,gBAAiB7pa,KAAK6pa,gBAAgB/sa,KAAKkD,MAC3C0vO,MAAO1vO,KAAK8hb,OAAOhlb,KAAKkD,MACxBkoa,mBAAoB,kBAAM,EAAKv7X,OAAO,kBAAlB,EACpBw7X,kBAAmB,kBAAM,EAAKx7X,OAAO,iBAAlB,EACnB67X,cAAe,kBAAM,EAAKxuW,WAAWxtC,OAAS,EAAKwtC,WAAWxtC,SAAWs+C,GAAU,EAAK9Q,WAAzE,EACfsuW,aAAc,kBAAM,EAAKtuW,WAAWrpC,MAAQ,EAAKqpC,WAAWrpC,QAAUi6C,GAAS,EAAK5Q,WAAtE,EACdyuW,gBAAiB,kBAAM1nX,EAAAA,EAAAA,MAAY8nB,WAAlB,EACjB0/V,eAAgB,kBAAMxnX,EAAAA,EAAAA,MAAYyxB,UAAlB,EAChB41V,aAAc,kBAAM,EAAKz7X,OAAO,YAAlB,EACdy9X,wBAAyBpqa,KAAKoqa,wBAAwBtta,KAAKkD,MAC3D6vU,cAAe7vU,KAAK6vU,cAAc/yU,KAAKkD,MACvC8qa,aAAc9qa,KAAK8gK,cAAchkK,KAAKkD,MACtCkra,aAAclra,KAAKkra,aAAapua,KAAKkD,MACrCura,WAAYvra,KAAKura,WAAWzua,KAAKkD,MACjCm5I,cAAen5I,KAAKwkZ,eAAe1nZ,KAAKkD,MACxC48I,mBAAoB58I,KAAKg9Y,4BAA4BlgZ,KAAKkD,MAC1D0ta,iBAAkB1ta,KAAKgvb,kBAAkBlyb,KAAKkD,MAC9C4ta,kBAAmB5ta,KAAKqkb,mBAAmBvnb,KAAKkD,MAEvD,gCACD,WACIA,KAAKmub,aACLnub,KAAKivb,sBACLjvb,KAAKkvb,+BACLlvb,KAAK48Y,2BAA2Bt8F,kBAAiB,GACjDtgT,KAAKmvb,cACLnvb,KAAK2sC,OAAO,0BAA4B3sC,KAAKkkb,iBAC7Clkb,KAAKsQ,MAAM62B,OACd,sBACD,WACInnC,KAAK+jb,YAAc,CAAC,EACpB/jb,KAAK0ma,kBAAoB,KACzB1ma,KAAKghb,qBAAuB,KAC5Bhhb,KAAKm5M,iBAAmB2nO,IACxB,qDACA9gb,KAAKqub,gBACLrub,KAAK4ub,+BACL5ub,KAAK2ub,6BACL3ub,KAAKwub,0BACLxub,KAAKkvb,+BACLlvb,KAAKg6D,WAAWoU,SAtqDF,2BAsqD4BA,SAASpuE,KAAKovb,mBAC3D,oCACD,WACIpvb,KAAK2/X,eAAiB,IAAImV,GAAe,CACrCxyY,IAAKtC,KAAK2sC,OAAO,OACjB2pU,iBAAkBt2W,KAAKs2W,iBACvB3qP,iBAAkB3rH,KAAK2sC,OAAO,gBAC9Bi/E,eAAgB5rH,KAAK2sC,OAAO,cAC5B6Q,aAAcx9C,KAAKmgJ,kBACnBkvS,gBAAiBrvb,KAAK0jb,iBACtBhhD,gBAAiB1iY,KAAK0iY,kBACtB1iV,WAAYhgD,KAAK2sC,OAAO,cACxB2xG,cAAet+I,KAAKgzY,mBACpBp2P,mBAAoB58I,KAAKg9Y,8BACzBruT,WAAY3uF,KAAKwkZ,iBACjBlwC,mBAAoBt0W,KAAKs0W,qBACzB4gC,uBAAwBl1Y,KAAK+8Y,uBAAuBjgZ,KAAKkD,OAEhE,8BACD,WACIA,KAAKsub,uBACLtub,KAAKsvb,gCACLtvb,KAAKwub,yBACR,sCACD,WACI,IAAI9zb,EAEJ,MAAO,eADY,QAAUA,EAAKsF,KAAK2sC,OAAO,iBAAc,IAAWjyC,OAAK,EAASA,EAAGiG,QAAUX,KAAK2sC,OAAO,oBAAsB3sC,KAAKglb,2BAE5I,qCACD,WACI,IAAIt8M,EAAW1oO,KAAK2kY,wBAA0BsrC,GAA0B1B,GACxEvua,KAAK0jb,iBAAmB,IAAIh7M,EAAS1oO,KACxC,yCACD,WACI,MAAO,YACV,6CACD,WACIA,KAAKg6D,WAAWiU,YAvsDgB,yCAusD+BjuE,KAAK2sC,OAAO,yBAC9E,wCACD,WACI3sC,KAAKg6D,WAAWiU,YAxsDiB,wCAwsD+BjuE,KAAK0iY,kBACxE,2CACD,WACI1iY,KAAKg6D,WAAWiU,YA5sDS,gCA4sD+BjuE,KAAKuvb,wBAChE,6CACD,WACIvvb,KAAKg6D,WAAWiU,YA7sDa,oCA6sD+BjuE,KAAKwvb,2BACpE,8CACD,WACIxvb,KAAKg6D,WAAWiU,YArtDe,2CAqtD+BjuE,KAAKg9Y,8BACtE,uCACD,SAAuBvtI,EAAU89E,GAC7B,IAAIg9D,EAAY,GAAGt6Y,OAAO+va,GAAuB,KAAK/va,OAAO4va,GAAwB,KAAK5va,OAAO6va,IACjG,OAAO9/a,KAAK0jb,iBAAiB+L,8BAA8BllC,EAAWh9D,EAAc,EAAG99E,EAAU89E,EACpG,qCACD,SAAqB5kV,GAEjB,OAAO3I,KAAK0jb,iBAAiB+L,8BADb1P,4BACsDp3a,EAAI,EAC7E,oCACD,WACI3I,KAAK0vb,uBAAyB3+W,GAAE,SAAS3C,SAAS,uCAClDpuE,KAAK2vb,wBAA0B5+W,GAAE,SAAS3C,SAAS,wCACnDpuE,KAAKskb,cAAgBvzW,GAAE,WACvB/wE,KAAKywa,QAAU1/V,GAAE,WAAWpC,SAAS3uE,KAAKskb,eAC1Ctkb,KAAKyjb,uBAAyB1yW,GAAE,SAAS3C,SAAS,wCAClDpuE,KAAKwkb,cAAgBzzW,GAAE,WACvB/wE,KAAK4vb,iBAAmB7+W,GAAE,SAAS3C,SAASinE,IAC5Cr1I,KAAK6vb,kBAAoB9+W,GAAE,SAAS3C,SA7tDd,qCA8tDtBpuE,KAAK8vb,6BAA+B/+W,GAAE,SAAS3C,SAAS,8CACxDpuE,KAAK+vb,2BAA6Bh/W,GAAE,SAAS3C,SAAS,4CACtDpuE,KAAKgwb,2BACDhwb,KAAK4kb,oBACL5kb,KAAKiwb,6BAELjwb,KAAKuub,6BAETvub,KAAKknb,YAAcn2W,GAAE,WAAW3C,SAAS2nE,IACzC/1I,KAAKukb,YAAcxzW,GAAE,WACrB/wE,KAAKinb,qBAAuBl2W,GAAE,SAAS3C,SAAS,qCAChDpuE,KAAKmmb,aAAep1W,GAAE,SAAS3C,SAASkxW,GAC3C,yCACD,WACIt/a,KAAKkwb,cAAgB,GACrBlwb,KAAKmwb,cAAgB,GACrBnwb,KAAKowb,cAAgB,EACxB,yCACD,WAA2B,WACnBC,EAAuBt/W,GAAE,SAAS3C,SA9tDF,sCA+tDpCpuE,KAAKiha,qBAAuBjha,KAAKmjK,iBAAiBktR,EAAsBh6J,GAAYr2R,KAAK6ub,8BACzF7ub,KAAK+jb,YAAY9yB,UAAYnE,IAAmB,kBAAM,EAAKmU,oBAAX,GACnD,yCACD,WACQjha,KAAK2sC,OAAO,yBACZ3sC,KAAKswb,qCAELtwb,KAAKuwb,gCAEZ,+CACD,WACI,IAAI71b,EACJsF,KAAKinb,qBAAqBthb,OAAO3F,KAAKukb,aAClCvkb,KAAKg9Y,+BACLh9Y,KAAKinb,qBAAqBthb,OAAO3F,KAAK6vb,mBACtC7vb,KAAK8vb,6BAA6Bnqb,OAAO3F,KAAKmmb,aAAcnmb,KAAKknb,YAAalnb,KAAKinb,sBACnFjnb,KAAKiha,qBAAqB3mO,WAAW30L,OAAO3F,KAAK8vb,8BACjD9vb,KAAK2vb,wBAAwBhqb,OAAO3F,KAAKskb,iBAEzCtkb,KAAK8vb,6BAA6Bnqb,OAAO3F,KAAKknb,YAAalnb,KAAKinb,sBAChEjnb,KAAKiha,qBAAqB3mO,WAAW30L,OAAO3F,KAAK8vb,8BACjD9vb,KAAK2vb,wBAAwBhqb,OAAO3F,KAAKskb,cAAetkb,KAAK4ia,eAC7D,QAAUloa,EAAKsF,KAAK4ia,qBAAkB,IAAWloa,GAAcA,EAAGiL,OAAO3F,KAAK6vb,kBAAmB7vb,KAAKwkb,gBAE1Gxkb,KAAKwwb,yCACLxwb,KAAK0vb,uBAAuB/pb,OAAO3F,KAAK2vb,yBACxC3vb,KAAKg6D,WAAWr0D,OAAO3F,KAAK4vb,iBAAkB5vb,KAAK0vb,uBAAwB1vb,KAAKiha,qBAAqBjnW,WACxG,mDACD,WACI,IAAIt/D,EACJsF,KAAKg6D,WAAWr0D,OAAO3F,KAAK4vb,kBAC5B5vb,KAAKywb,gBAAkB1/W,GAAE,SAAS3C,SAAS,0CAC3CpuE,KAAK0wb,0BACL1wb,KAAKqmb,kBAAkB/rP,WAAW30L,OAAO3F,KAAKskb,eAC9Ctkb,KAAKwwb,yCACLxwb,KAAK0vb,uBAAuB/pb,OAAO3F,KAAK2vb,yBACxC3vb,KAAKg6D,WAAWr0D,OAAO3F,KAAK0vb,wBAC5B1vb,KAAKg6D,WAAWr0D,OAAO3F,KAAKywb,iBAC5Bzwb,KAAK2wb,2BACL3wb,KAAKywb,gBAAgB9qb,OAAO3F,KAAKiha,qBAAqBjnW,YACtDh6D,KAAKinb,qBAAqBthb,OAAO3F,KAAKukb,aACtCvkb,KAAK8vb,6BAA6Bnqb,OAAO3F,KAAKinb,sBAC9Cjnb,KAAKiha,qBAAqB3mO,WAAW30L,OAAO3F,KAAK8vb,8BAC7C9vb,KAAKg9Y,+BACLh9Y,KAAKinb,qBAAqBthb,OAAO3F,KAAK6vb,mBACtC7vb,KAAK+vb,2BAA2Bpqb,OAAO3F,KAAKmmb,aAAcnmb,KAAKknb,eAE/Dlnb,KAAKqmb,kBAAkB/rP,WAAW30L,OAAO3F,KAAK4ia,eAC9C,QAAUloa,EAAKsF,KAAK4ia,qBAAkB,IAAWloa,GAAcA,EAAGiL,OAAO3F,KAAK6vb,kBAAmB7vb,KAAKwkb,eACtGxkb,KAAK+vb,2BAA2Bpqb,OAAO3F,KAAKknb,cAEhDlnb,KAAKsmb,mBAAmBhsP,WAAW30L,OAAO3F,KAAK+vb,2BAClD,uDACD,WACI/vb,KAAKolb,iCAAmCplb,KAAK0vb,uBAAuB/pb,OAAO3F,KAAKyjb,uBACnF,wCACD,WAA0B,WAClBmN,EAAoB7/W,GAAE,SAAS3C,SA1xDH,kCA0xD+CO,SAAS3uE,KAAK2vb,yBAC7F3vb,KAAKqmb,kBAAoBrmb,KAAKmjK,iBAAiBytR,EAAmBv6J,GAAYr2R,KAAK6wb,2BACnF7wb,KAAK+jb,YAAYl/S,OAASioR,IAAmB,kBAAM,EAAKu5B,iBAAX,GAChD,yCACD,WAA2B,WACnByK,EAAuB//W,GAAE,SAAS3C,SA9xDL,mCA8xDkDO,SAAS3uE,KAAKywb,iBACjGzwb,KAAKsmb,mBAAqBtmb,KAAKmjK,iBAAiB2tR,EAAsBz6J,GAAY,CAC9EI,aAAa,EACbpB,cAAe,QACfzuQ,UAAW,WACXivQ,WAAW,EACXa,gBAAgB,EAChBtH,eAAe,EACfkH,SAAU,SAAAv1R,GACN,EAAKgjb,YAAY9yB,UAAU,CACvBxsX,IAAK1jC,EAAMitK,aAAavpI,KAE/B,IAELzkC,KAAK+jb,YAAYC,QAAUl3B,IAAmB,kBAAM,EAAKw5B,kBAAX,GACjD,oCACD,WAEI,GADAtmb,KAAK+wb,eAAe/wb,KAAKukb,YAAavuS,IAClCh2I,KAAKg9Y,8BAEL,IADA,IAAIruT,EAAa3uF,KAAKwkZ,iBACb77Y,EAAI,EAAGA,EAAIgmF,EAAYhmF,IAC5B3I,KAAK+wb,eAAe/wb,KAAKmwb,cAAcxnb,GAAI82a,SAEvCz/a,KAAK4kb,qBACb5kb,KAAK+wb,eAAe/wb,KAAKwkb,cAAe/E,GAE/C,0CACD,WACIz/a,KAAK+wb,eAAe/wb,KAAKskb,cAn0DR,4BAo0DpB,+BACD,SAAe1gR,EAAKzrJ,GAChByrJ,IAAQA,EAAIt1F,SAASn2D,IAAcyrJ,EAAIx1F,SAASj2D,EACnD,4BACD,WACInY,KAAKsQ,MAAM62B,QACXnnC,KAAKgxb,sBACLhxb,KAAKixb,wBACLjxb,KAAKkxb,2BACLlxb,KAAKmxb,4BACL,2DACKnxb,KAAK2sC,OAAO,2BACb3sC,KAAKmkb,sBACLnkb,KAAKykb,6BAETzkb,KAAKivb,sBACLjvb,KAAKmvb,cACLnvb,KAAKyqP,eACR,wBACD,YACI,uDACAzqP,KAAKoxb,4BACLpxb,KAAKqxb,8BACR,oCACD,WACIrxb,KAAKg6D,WAAWiU,YAj3DM,kCAi3D+BjuE,KAAKwkZ,iBAAmB,EAChF,4BACD,WACQxkZ,KAAK4kb,oBACD5kb,KAAKg9Y,+BACLh9Y,KAAKsxb,oBAGTtxb,KAAKuxb,oBAAoBvxb,KAAKwxb,sBAElCxxb,KAAKmua,kBACDnua,KAAK4kb,qBACL5kb,KAAK48Y,2BAA2Bt8F,mBAEpCtgT,KAAKikb,0BACLjkb,KAAK0kb,6BACL1kb,KAAKoha,QAAU,IAAIqwB,GAAezxb,KACrC,qCACD,WACI,IAAI65a,EAAgB75a,KAAKujb,wBACzBvjb,KAAKs2W,iBAAiB6mE,eAAetD,GACrC75a,KAAK0xb,iBAAiB,CAClB1F,WAAW,EACX/6B,WAAW,EACXT,aAAa,GAEpB,0CACD,WACI,OAAO1uY,EAAAA,GAAAA,OACV,6CACD,WACI,OAAOA,EAAAA,GAAAA,OACV,2CACD,WACI,OAAOA,EAAAA,GAAAA,OACV,uCACD,WAAyB,YACrB,QAAIw0H,IAA8B51I,SAAQ,SAAAyX,GACtC,EAAK6hD,WAAWqU,YAAYl2D,EAC/B,GACJ,uCACD,WACI,IAAIA,EAAYnY,KAAK0jb,iBAAiBiO,mBAAmB3xb,KAAK2sC,OAAO,WACrE3sC,KAAKg6D,WAAWoU,SAASj2D,EAC5B,uCACD,WACI,OAAOnY,KAAK2sC,OAAO,mBACtB,wCACD,SAAwBilZ,GACpB,IAAIzxY,EAAkBngD,KAAKuhb,qBAC3Bvhb,KAAKg6D,WAAWiU,YAp5DW,kCAo5D+B9tB,GAC1DngD,KAAKyub,0BACLmD,GAAsB5xb,KAAKk+Z,mBAC9B,wCACD,WACIl+Z,KAAKsQ,MAAM62B,QACXnnC,KAAKg6D,WAAWiU,YAz5DqB,6CAy5DgCjuE,KAAK2sC,OAAO,mBAAqB3sC,KAAKuhb,qBAC9G,+BACD,WACI,OAAOvhb,KAAKukb,YAAYx2Y,IAAI/tC,KAAKwkb,cACpC,8BACD,WACI,OAAOxkb,KAAKukb,WACf,sCACD,WACIvkb,KAAKwkb,eAAiBxkb,KAAKwkb,cAAc9mb,SACzCsC,KAAKwjb,eAAiBxjb,KAAKwjb,cAAc9lb,QAC5C,2BACD,WACI,IAAIhD,EAAIC,EAAIC,EACZoF,KAAKsQ,MAAM62B,QACXnnC,KAAK6xb,oBACL7xb,KAAKyhb,oBAAoBqQ,+BACpB9xb,KAAK4kb,sBACN5kb,KAAKywa,QAAQ3iX,QACb9tD,KAAKukb,YAAYz2X,QACjB9tD,KAAKknb,YAAYp5X,QACjB9tD,KAAKmmb,aAAar4X,QAClB,QAAUpzD,EAAKsF,KAAKwkb,qBAAkB,IAAW9pb,GAAcA,EAAGozD,QAClE,QAAUnzD,EAAKqF,KAAK+xb,sBAAmB,IAAWp3b,GAAcA,EAAGmzD,SAEvE,QAAUlzD,EAAKoF,KAAKoha,eAAY,IAAWxma,GAAcA,EAAGy6P,eACrDr1P,KAAKgyb,SACf,uBACD,WACIzzX,EAAAA,EAAAA,IAAiB1B,EAAAA,EAAAA,cAA0B6jX,IAC3C1gb,KAAKiyb,+BACL,qDACH,kCACD,WACIjyb,KAAKskb,cAAch/Y,IAAI,QAAS,IAChCtlC,KAAKukb,YAAYj/Y,IAAI,QAAS,IAC9BtlC,KAAKwkb,eAAiBxkb,KAAKwkb,cAAcl/Y,IAAI,QAAS,GACzD,4CACD,WACI,IAAI5qC,EAAIC,EAAIC,EAAIC,EAAIC,EACpB,QAAUJ,EAAKsF,KAAKkyb,4BAAyB,IAAWx3b,GAAcA,EAAG6xC,UACzEvsC,KAAKkyb,0BAAuB,EAC5B,QAAUv3b,EAAKqF,KAAKmyb,0BAAuB,IAAWx3b,GAAcA,EAAG4xC,UACvEvsC,KAAKmyb,wBAAqB,EAC1B,QAAUv3b,EAAKoF,KAAKoyb,0BAAuB,IAAWx3b,GAAcA,EAAG2xC,UACvEvsC,KAAKoyb,wBAAqB,EAC1B,QAAUv3b,EAAKmF,KAAKqyb,2BAAwB,IAAWx3b,GAAcA,EAAG0xC,UACxEvsC,KAAKqyb,yBAAsB,EAC3B,QAAUv3b,EAAKkF,KAAKsyb,4BAAyB,IAAWx3b,GAAcA,EAAGyxC,UACzEvsC,KAAKsyb,0BAAuB,CAC/B,mCACD,WACI,OAAOtyb,KAAK0jb,gBACf,kCACD,WACI,OAAO1jb,KAAK4vb,gBACf,mCACD,WACI,OAAO5vb,KAAK6vb,iBACf,6BACD,WACI7vb,KAAKitE,SAASi+V,cACjB,2BACD,WACIlra,KAAKitE,SAASghW,aACjB,mCACD,WACI,IAAIvza,EACJsF,KAAK2sC,OAAO,uBAAZ3sC,GACA,QAAUtF,EAAKsF,KAAK2/Y,oBAAiB,IAAWjlZ,GAAcA,EAAG63b,kBACpE,2CACD,WACI,IAAI5jW,EAAa3uF,KAAKwkZ,iBACtB,GAAIxkZ,KAAKg9Y,+BAAiC,IAAMruT,EAC5C,IAAK,IAAIhmF,EAAI,EAAGA,EAAIgmF,EAAYhmF,IAAK,CACjC,IAAI6pb,EAAezhX,GAAE,SAAS3C,SAASsxW,IAAqB/4a,KAAKyjH,GAAAA,OAA2B,uBAC5FpqH,KAAKkwb,cAAc9vb,KAAKoyb,GACxBxyb,KAAKwkb,cAAgBzzW,GAAE,WACvB/wE,KAAKmwb,cAAc/vb,KAAKJ,KAAKwkb,eAC7Bxkb,KAAK4ia,cAAgB7xV,GAAE,SAAS3C,SAASoxW,IAAqB75a,OAAO3F,KAAKwkb,eAC1Exkb,KAAKowb,cAAchwb,KAAKJ,KAAK4ia,cAChC,MAED5ia,KAAKwjb,cAAgBzyW,GAAE,SAAS3C,SAASsxW,IAAqB/4a,KAAKyjH,GAAAA,OAA2B,uBAAuBz7C,SAAS3uE,KAAKg6D,YACnIh6D,KAAKwkb,cAAgBzzW,GAAE,WACvB/wE,KAAK4ia,cAAgB7xV,GAAE,SAAS3C,SAASoxW,IAAqB75a,OAAO3F,KAAKwkb,cAEjF,gCACD,WACI,IAAI9H,IAAwB5ka,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,KAAKA,UAAU,GACxF9X,KAAKsQ,MAAM62B,QACXnnC,KAAKs2W,iBAAiBtqU,OAAOhsC,KAAKujb,wBAAyB7G,GACvD18a,KAAK4kb,oBACL5kb,KAAK0xb,oBAEL1xb,KAAKyyb,oBACLzyb,KAAK0yb,mBACL1yb,KAAK2yb,0BACL3yb,KAAK4yb,mBACL5yb,KAAK6yb,sBAET7yb,KAAK8yb,qBACR,mCACD,WACI,IAAIt4W,EAAax6E,KAAKysb,2BAElBtgC,EAAgB,GACpB,GAFiBnsZ,KAAKwkZ,iBAEN,CACZ,IAAIuuC,EAAY/yb,KAAKgzb,eAAehzb,KAAK2sC,OAAO,UAAW3sC,KAAK2sC,OAAO,gBACvE3sC,KAAKwsb,yBACLhyW,EAAW70E,OAAOotb,EAAUphY,UAC5Bw6V,EAAgB4mC,EAAU5mC,aAC7B,MACGnsZ,KAAK2sb,yBAET,OAAOxgC,CACV,oCACD,SAAoBj/W,GAChB,OAASA,QAAa,IAAWA,GAAqBA,EAAUxsC,SAAQ,SAAA8e,GACpEA,GACH,GACJ,+BACD,SAAe6+B,EAAQD,GACnB,IAAI60Y,EAAuBjzb,KAAKg9Y,8BAAgC6P,GAAa/kI,SAAW+kI,GAAa1nI,WACrG,OAAO0nI,GAAaqmC,iBAAiBD,EAAsB50Y,EAAQ,CAC/DkuW,oBAAqBr2Q,GACrBq1Q,cAAer1Q,GACfg2Q,iBAAkBlsZ,KAAKmzb,qBAAqBr2b,KAAKkD,MACjD4sZ,wBAAyBz2Q,IAC1Bn2I,KAAKyua,iBAAmB,EAAGzua,KAAK2sC,OAAO,wBAAyB3sC,KAAKwkZ,iBAAkBpmW,EAC7F,kCACD,WACI,IAAI72C,EAAYvH,KAAKozb,0BACjB3/K,EAAa1iM,GAAE,QAAQ3C,SAxhEZ,2BAyhEXviE,EAAQ7L,KAAKyua,gBACbpgK,EAAeruQ,KAAKqzb,yBACpBh6F,EAAcr5V,KAAKszb,qCACnBrpC,EAAoB,GACpB7rW,EAAcp+C,KAAK0iY,kBACvB,GAAKtkV,EAQE,CAEH,IADA,IAAIqqS,EAAUrqS,EAAcp+C,KAAKwkZ,iBAAmB,EAC3C+uC,EAAe,EAAGA,EAAe1nb,EAAO0nb,IAAgB,CAC7D,IAAIC,EAAiBD,EAAel6F,EAClBr5V,KAAKyzb,0BAA0BhgL,EAAY8/K,EAAcC,EAAgBnlL,EAAc47I,GAC7F/7U,KAAK,UAAWu6Q,EAC/B,CACDlhV,EAAUD,QAAQmsQ,EACrB,KAhBiB,CACd,IAAK,IAAIhE,EAAW,EAAGA,EAAW4pF,EAAa5pF,IAC3C,IAAK,IAAI89E,EAAc,EAAGA,EAAc1hV,EAAO0hV,IAAe,CAC1D,IAAImmG,EAAgBjkL,EAAW5jQ,EAAQ0hV,EACvCvtV,KAAKyzb,0BAA0BhgL,EAAY85E,EAAammG,EAAerlL,EAAc47I,EACxF,CAEL1iZ,EAAU5B,OAAO8tQ,EACpB,CAUD,OADAzzQ,KAAKuxb,oBAAoBtnC,GAClBx2I,CACV,0CACD,SAA0BlsQ,EAAWosb,EAAgBD,EAAerlL,EAAc47I,GAC9E,IAAI2pC,EAAqB5zb,KAAK0iY,kBAAoBn5X,KAAKo/D,MAAM+qX,EAAgB1zb,KAAKwkZ,kBAAoBkvC,EAE3E7gB,EACvB7ya,KAAKs2W,iBADLu8D,sBAEA,EAGAA,EAAsBA,EAAsBlya,OAAS,GAAGizb,GAFlDjtb,EADV,EACIA,KACWstB,EAFf,EAEI6xD,UAEAoqL,EAAQn/L,GAAE,QAAQ3C,SAASpuE,KAAK6zb,yBAAyBF,IAAiBzlX,KAAK,QAASvnE,GAc5F,OAbI,OAAS0nQ,QAAgB,IAAWA,OAAe,EAASA,EAAa//N,QACzE27W,EAAkB7pZ,KAAKiuQ,EAAa//N,OAAOxxC,KAAKuxQ,EAAc,CAC1D54N,OAAO18B,EAAAA,EAAAA,GAAS,CACZpS,KAAMA,EACNstB,KAAMA,GACPj0B,KAAK8zb,gCAAgCJ,IACxCvyb,MAAOuyb,EACPnsb,UAAWs6I,GAAiBquH,MAGhCA,EAAMvpQ,KAAKA,GAEfY,EAAU5B,OAAOuqQ,GACVA,CACV,gDACD,SAAgCwjL,GAC5B,IACIl7S,EACAn6F,EAFA01Y,EAAkBj8a,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,GAAKA,UAAU,GAAK,EAGvF,GAAI9X,KAAK+hb,kCAAoC/hb,KAAK0iY,kBAAmB,CACjElqP,EAAax4I,KAAKg0b,eAAe,EAAGN,EAAgBK,GACpD,IAAI16S,EAAcH,GAAcV,EAAYx4I,KAAK2sC,OAAO,WACxD0R,EAAS+6F,GAA+BC,EAC3C,CACD,MAAO,CACHh7F,OAAQA,EACRm6F,WAAYA,EAEnB,yCACD,SAAyB7vI,GACrB,IAAI4hZ,EAAY,GAAGt6Y,OA3lEG,iCA2lE6B,KAAKA,OAAO4va,IAC/D,OAAO7/a,KAAK0jb,iBAAiB+L,8BAA8BllC,EAAW5hZ,EAAI,OAAG,OAAQ,EAAQ3I,KAAK0iY,kBACrG,mCACD,SAAmBvhY,GACf,IAAIoqY,EAAYvrY,KAAKyua,gBAChBzua,KAAKg9Y,gCACNzR,GAAavrY,KAAKwkZ,kBAAoB,GAE1C,IAAI2H,EAAgBnsZ,KAAKi0b,iBAAiB,CACtC1sb,UAAWvH,KAAKowb,cAAczvb,OAASkhJ,GAAiB7hJ,KAAKmwb,cAAchvb,IAAU0gJ,GAAiB7hJ,KAAKwkb,eAC3Gh2K,SAAU,EACV+8H,UAAWA,EACXgf,UAAWvqZ,KAAKk0b,yBAAyBp3b,KAAKkD,MAC9CsqZ,SA/mEkB,iCAgnElBj8I,aAAcruQ,KAAK2sC,OAAO,oBAC1B6zU,YAAaxgX,KAAKm0b,6BAA6Bhzb,GAC/Cq3I,WAAYr3I,IACb,GACHnB,KAAK4sb,yBAAwB,GAC7B5sb,KAAKuxb,oBAAoBplC,EAC5B,wCACD,WACI,GAAInsZ,KAAKg9Y,8BAEL,IADA,IAAIruT,EAAa3uF,KAAKwkZ,iBACb77Y,EAAI,EAAGA,EAAIgmF,EAAYhmF,IAC5B3I,KAAK6yb,mBAAmBlqb,EAGnC,yCACD,SAAyBA,EAAGmF,GACxB,IAAIy8Y,EAAY,GAAGt6Y,OAAO0va,GAA0B,KAAK1va,OAAO4va,IAChE,OAAO7/a,KAAK0jb,iBAAiB+L,8BAA8BllC,EAAWz8Y,EAAI,EAC7E,iCACD,WAAmB,WACXurV,EAAcr5V,KAAK0jb,iBAAiB0Q,+BACpCh7W,EAAU,SAACq2L,EAAUpxM,GACrB,IAAIk5W,EAAoB,EACpB,EAAK93R,uBACL83R,EAAoB,GAEpB,EAAKz3C,yBACLy3C,EAAoBhua,KAAKq7E,MAAM6qL,EAAW,GAAK,EAAKwtI,iBAExD,IAAIqnB,EAAgB70J,EAAW8nK,EAC/B,OAAO,EAAKjhE,iBAAiBm/D,qBAAqBnR,GAAejmW,EACpE,EACDr+D,KAAKi0b,iBAAiB,CAClB1sb,UAAWs6I,GAAiB7hJ,KAAKknb,aACjC14K,SAAUxuQ,KAAKq0b,wBAA0Bh7F,EACzCkyC,UAAW,EACXgf,UAAWvqZ,KAAKs0b,kBAAkBx3b,KAAKkD,MACvCsqZ,SA3pEe,8BA4pEfj8I,aAAcruQ,KAAK2sC,OAAO,oBAC1Bi+W,YAAa,SAAAn7I,GAAQ,OAAIr2L,EAAQq2L,EAAU,OAAtB,EACrBo7I,YAAa,SAAAp7I,GAAQ,OAAIr2L,EAAQq2L,EAAU,YAAtB,EACrB9gL,WAAY3uF,KAAKwkZ,iBACjBuF,eAAgB/pZ,KAAKu0b,iCAAmCv0b,KAAKkwb,mBAAgB,EAC7E3tG,gBAAkB,SAAA9yE,GACd,IAAK,EAAKutI,8BACN,MAAO,CAAC,EAEZ,IAAIxkQ,EAAa,EAAKw7S,eAAevkL,EAAU,GAC3Cp2H,EAAcH,GAAcV,EAAY,EAAK7rG,OAAO,WAExD,MAAO,CACH6rG,WAAYA,EACZn6F,OAHS+6F,GAA+BC,GAK/C,EAAEv8I,KAAKkD,OAEf,kCACD,SAAkB2I,GACd,IAAI4hZ,EAAY,GAAGt6Y,OAAOsva,GAAuB,KAAKtva,OAAO6va,IAC7D,OAAO9/a,KAAKg9Y,8BAAgCh9Y,KAAK0jb,iBAAiB+L,8BAA8BllC,EAAW5hZ,EAAGA,GAAK4hZ,CACtH,iCACD,WAAmB,WACX57T,EAAa3uF,KAAKwkZ,iBACtBxkZ,KAAKi0b,iBAAiB,CAClB1sb,UAAWs6I,GAAiB7hJ,KAAKukb,aACjC/1K,SAAUxuQ,KAAKgvb,kBAAkBrgW,GACjC48S,UAAWvrY,KAAKqkb,mBAAmB11V,GACnC47T,UAAWvqZ,KAAKw0b,uBAAuB13b,KAAKkD,MAC5CsqZ,SAAUr0Q,GACVo4H,aAAcruQ,KAAK2sC,OAAO,oBAC1B6zU,YAAa,SAAC1hX,EAAG2wQ,EAAU89E,GACvB,IACI+2E,EAAgB70J,EACpB,GAF2B,EAAKqwH,uBAEN,CACtB,IAAItxH,EAAW,EAAKyuI,eAEpBqnB,GADwB/6Z,KAAKq7E,KAAK6qL,EAAWjB,EAEhD,CACD,IACcy4J,EACV,EAAK3wD,iBAAiBu9D,YAAYkE,aAAazT,GAAe/2E,GAD9D05E,SAEJ,MAAO,CACH/oa,MAAO,EAAKkqb,sBAAsBnhB,GAClCwtB,UAAWxtB,EACX3ka,IAAKs+a,GAEZ,EACD72B,eAAgB/pZ,KAAKu0b,iCAAmCv0b,KAAKowb,mBAAgB,EAC7EzhW,WAAYA,EACZvwC,YAAap+C,KAAK2sC,OAAO,gBAEhC,+CACD,WACI,OAAO3sC,KAAK0jb,iBAAiBgR,+BAChC,iCACD,SAAiBt3b,EAASu3b,GACtB,IAAInxb,EAAS,GAMb,OALKmxb,EAGDnxb,EAASqpZ,GAAa+nC,UAAUx3b,GAFhC4C,KAAKuxb,oBAAoB1kC,GAAa+nC,UAAUx3b,IAI7CoG,CACV,OArrECu9a,CAA2BnrB,IAurE7B03B,GAA2B,SAAC/lb,EAAW6lb,EAAaG,EAAuB5tC,EAAck1C,EAAuBC,EAAwBC,EAAkBC,EAAe3vC,EAA0B7Q,EAAcp3Y,GACjN,IAAIsrC,EAAQ,CACRgyX,iBAAa,EACbp/Q,cAAU,GAEV25S,EAAiB,WACjB,IACc35S,EACV5yG,EADA4yG,SAEJ,OAAIA,IACalnF,EAAAA,GAAAA,IAAc,WACpBQ,CAAO0mF,EAGrB,EAQD,MAAO,CACH/zI,UAAWA,EACXsyZ,aAAc,kBAAMnxX,EAAMgyX,WAAZ,EACdxB,YAAa,SAAAjwZ,GACJskb,GACDuH,IAEJ,IAAItlF,EAAWvmW,EAAE+3C,OAENjgD,EACPkI,EADAlI,MAEA+sN,EAAe/8I,GAAE9nE,EAAE62D,aACnBy1D,EAAetsH,EAAEmoB,UAAUgxX,cAC/B15W,EAAM4yG,SAAWl+I,EAAQo/N,YAAYvzN,EAAE62D,YAAay1D,GACpD,IAAIC,EAAWp4H,EAAQijZ,gBAAgBvyL,EAAc7kN,GAEhCk3Y,EACjB/iZ,EADA+iZ,gBAEC80C,MACDl0b,EAAMzG,KAAOyG,EAAMzG,MAAQ,CAAC,EACvBk1W,IACIh6O,EAASkoE,WACViiN,EAAa4yC,iBAAiB7pZ,EAAM4yG,SAAU9lB,GAElD9sF,EAAMgyX,YAAe,SAACp/Q,EAAU9lB,EAAUD,GACtC,IAAI2/T,EAAmB3/T,EAAa5oF,OAAO,SAAShsC,OAOpD,OANA60H,EAASkoE,WAAY,EACrBloE,EAASwwP,SAAU,EACPzwP,EAAa28F,YAAYgjO,EAAkB,CACnD55S,SAAUA,EACV9lB,SAAU,CAACA,KAEF,EAChB,CAToB,CASlB9sF,EAAM4yG,SAAU9lB,EAAUD,GAC7Bx0H,EAAMzG,KAAKwlE,YAAcp3B,EAAMgyX,YAC/B35Z,EAAMzG,KAAK6lZ,gBAAkB,OAASA,QAAmB,IAAWA,EAAkBA,EAAkBz9P,GAAO3xE,GAAEroC,EAAMgyX,cACvH35Z,EAAMzG,KAAKghJ,SAAW5yG,EAAM4yG,SAC5Bv6I,EAAMzG,KAAKgmZ,aAAe9qR,EAC1BmqR,EAAauZ,YAAYn4Z,EAAMzG,MAC/B8oJ,GAAcryE,GAAEroC,EAAMgyX,eAGjC,EACDvB,WAAY,WACR,IAAIo0B,EAAJ,CAGA,IAAI57X,EAAY,WACZ,IAAIs5U,EAAmBrgU,GAASliC,EAAMgyX,aAElCy6B,EAAoBlqD,EADRuJ,IAEZ4gD,EAAsBnqD,GAtzEf,GAuzEPoqD,EAAuBtkX,GAAEroC,EAAMgyX,aAAa7vZ,SAC5Cyqb,EAAe7qW,GAAgB4qW,EAAqBz7b,IAAI,IACxD27b,EAAOD,EAAa1wZ,KACpB4wZ,EAAOF,EAAa7wZ,IACxB,OAAI0wZ,EACOt4X,EAAAA,EAAAA,kBAA6B04X,EA5zE7B,GA4zE0DC,EA5zE1D,IA8zEPJ,EACOv4X,EAAAA,EAAAA,kBAA6B04X,EAAMC,GAEvC34X,EAAAA,EAAAA,kBAA6B04X,EAAOtqD,EAAmB,EAAGuqD,EAj0EtD,GAk0Ed,CAhBe,GAiBZC,IAAuB9jY,EAAS31D,MAAK,SAAAk+D,GAAE,OAAIA,IAAOkzX,EAAYxzb,IAAI,EAA3B,IACvC87b,EAAaV,IACbW,EAAgBhkY,EAAS31D,MAAK,SAAAk+D,GAC9B,IACepsB,EACXosB,EADApsB,UAGJ,OADgC,IAAM4nZ,EAAW15b,KAAKk+D,GAAIv5D,SACrBmtC,EAAUmyB,SAAS+/W,KAA0BlyY,EAAUmyB,SAAS0/W,IACxG,IACGgW,GACKZ,IAAmB9lX,GAAG0mX,IACvBtwC,IAEJt0U,GAAE4kX,GAAevnX,SAAS6xW,KAClBwV,GACRpwC,GAjCH,CAmCJ,EACD+T,UAAW,SAAAnwZ,GACP,IAAIvO,EACC6yb,GACDsH,IAECI,KACDt1C,EAAayZ,UAAUnwZ,GAE3B,QAAUvO,EAAKguC,EAAMgyX,mBAAgB,IAAWhga,GAAcA,EAAGgD,SACjE2nZ,GACH,EACDwV,aApGez9Z,EAAQgjZ,kBAAoB,WAC3C,IAAIqa,EAAe1pV,GAAEroC,EAAMgyX,aAC3B,MAAO,CACH3sZ,EAAG68D,GAAS6vV,GAAgB,EAC5BzsZ,EAAG88D,GAAU2vV,GAAgB,EAEpC,OAAG,EA+FAjgY,OAAQp9B,EAAQo9B,OAEvB,EACD,MCp7EkBqyX,GACdwyB,GAAAA,aAGAuW,GAAoB,2BAOlBC,GAAAA,SAAAA,6HACF,WACI,OAAOn/S,GAAMS,MAChB,gCACD,WACI,OAAOn3I,KAAKw+W,OAAO,oBAAoBiiC,8BAC1C,sCACD,WACI,OAAOzgZ,KAAK2sC,OAAO,6BAAZ3sC,EACV,iCACD,WACI,OAAOA,KAAK81b,cACf,sBACD,YACI,qDACA91b,KAAKm5M,sBAAmB,CAC3B,mCACD,WACI,OAAO1zJ,EAAAA,GAAAA,IAAO,kEAA4B,CACtC+0U,eAAgB,EAChB6uC,UAAW,GACX5qX,WAAY,IAEnB,+BACD,SAAe7gD,GACX,IACUxE,EACNwE,EADAxE,KAGO8E,EACPN,EADAM,MAEJ,OAAQ9E,GACJ,IAAK,iBACD,MACJ,IAAK,aACL,IAAK,YACD4G,KAAK+1b,mBAAmB/1b,KAAKs3U,OAC7B,MACJ,IAAK,SACIp5U,GAAUA,EAAMyC,OAMTX,KAAKmmb,eACbnmb,KAAKg2b,kBACLh2b,KAAKiha,qBAAqB3mO,WAAWhzL,QAAQtH,KAAKmmb,eAP9Cnmb,KAAKmmb,eACLnmb,KAAKmmb,aAAazob,SAClBsC,KAAKmmb,aAAe,KACpBnmb,KAAK2sb,2BAMb,6DAAqB/ub,GACrB,MACJ,SACI,6DAAqBA,GAEhC,kCACD,WACI,OAAOkkB,EAAAA,GAAAA,OACV,mCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,iCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,iCACD,WACI,OAAO,CACV,4CACD,WACI,OAAO,CACV,iCACD,WACI,MAhFW,qBAiFd,wCACD,WACI,OChI4B,SAACijE,EAAaxkC,GAC9C,IAAI01Y,EAAmB,IAAInzb,KAAKiiF,GAChC,OAAOk5D,GAAcg4S,EAAkB11Y,EAC1C,CD6Hci6X,CAAuBx6a,KAAK2sC,OAAO,eAAgB3sC,KAAK2sC,OAAO,gBACzE,6BACD,WACI,OAAO3sC,KAAK2sC,OAAO,iBACtB,8BACD,WACI,OAAO,CACV,sCACD,WACI,OAAO3sC,KAAK2sC,OAAO,iBACtB,mCACD,WACI,OAAO7qB,EAAAA,GAAAA,OACV,wCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,oCACD,WACI9hB,KAAKg2b,kBACLh2b,KAAKknb,YAAcn2W,GAAE,WAAW3C,SAAS2nE,IACzC/1I,KAAKukb,YAAcxzW,GAAE,WAAW3C,SAAS4nE,IACzCh2I,KAAK8vb,6BAA+B/+W,GAAE,SAAS3C,SAAS,8CACxDpuE,KAAKinb,qBAAuBl2W,GAAE,SAAS3C,SAAS,oCACnD,gCACD,WACI,IAAI/vB,EAASr+C,KAAK2sC,OAAO,UACrB0R,GAAUA,EAAO19C,SACjBX,KAAKmmb,aAAep1W,GAAE,WAAW3C,SAASwnX,IAEjD,4BACD,WACI51b,KAAK81b,eAAiB91b,KAAKq2a,0BAC3Br2a,KAAKs3U,MAAQ,GACbt3U,KAAK8yb,qBACR,mCACD,SAAmB98G,GACf,IAAIm2E,EAAgB,GACpBnsZ,KAAKmub,aACDnub,KAAKk2b,aAAalgH,GAClBh2U,KAAKm2b,iBAGTn2b,KAAKs3U,MAAQtB,EACTh2U,KAAKmmb,eACLh6B,EAAgBnsZ,KAAKwxb,qBACrBxxb,KAAKo2b,8BAETp2b,KAAK0yb,mBACL1yb,KAAK4yb,mBACL5yb,KAAKw+W,OAAO,gBAAiBxoC,GAC7Bh2U,KAAKuxb,oBAAoBplC,GACzBnsZ,KAAKiha,qBAAqBj1X,SAC7B,8BACD,WACIhsC,KAAKq2b,kBAAoBtlX,GAAE,SAAS3C,SApIf,8BAoIgDjB,KAAKntE,KAAK2sC,OAAO,eACtF3sC,KAAKiha,qBAAqB3mO,WAAW30L,OAAO3F,KAAKq2b,kBACpD,+BACD,WACI,OAAOv0a,EAAAA,GAAAA,OACV,6CACD,WACI,OAAOA,EAAAA,GAAAA,OACV,4CACD,SAA4BuM,GACxB,OAAOvM,EAAAA,GAAAA,OACV,2CACD,WACI,IAAIitZ,EAAS/ua,KAAKs2b,uBAAuB97Z,QAAO,SAAC17B,EAAG0N,GAAJ,OAAiBA,EAAQ6C,aAAa,UAAtC,IAC5C2mU,EAAOh2U,KAAKu2b,iBAAiBv2b,KAAKs3U,OACtC,GAAKtB,EAAKr1U,OAGV,IAAK,IAAIgI,EAAI,EAAGA,EAAIoma,EAAOpua,OAAQgI,IAAK,CACpC,IAAI6tb,EAAeznB,EAAOn/V,GAAGjnE,GAAG3M,KAAK,sCACrCmvE,GAAeqrX,EAAcx2b,KAAKy2b,mBAAmBzgH,EAAKrtU,IAC7D,CACJ,6BACD,SAAaqtU,GAET,IADA,IAAIxyU,GAAS,EACJmF,EAAI,EAAGA,EAAIqtU,EAAKr1U,OAAQgI,IAE7B,IADA,IAAIksa,EAAW7+F,EAAKrtU,GACXmF,EAAI,EAAGA,EAAI+ma,EAASl0a,OAAQmN,IACjC,GAAI+ma,EAAS/ma,GAAI,CACbtK,GAAS,EACT,KACH,CAGT,OAAOA,CACV,uCACD,WACI,IAAI2U,EAAYinI,GAA2Bp/I,KAAK2sC,OAAO,WACvD3sC,KAAKg6D,WAAWoU,SAASj2D,EAC5B,iCACD,SAAiB69T,GAEb,IADA,IAAIxyU,EAAS,GACJmF,EAAI,EAAGA,EAAIqtU,EAAKr1U,OAAQgI,IACzBqtU,EAAKrtU,GAAGhI,QAAmBq1U,EAAKrtU,GAAUwpD,MAAK,SAAAj0D,GAAK,OAAIA,EAAQ,CAAZ,KACpDsF,EAAOpD,KAAK41U,EAAKrtU,IAIzB,OAAOnF,CACV,yCACD,WACI,OAAOxD,KAAKmmb,YACf,+BACD,WAAiB,WACTrsS,EpZkC4B,SAACuB,EAAiBzB,EAAkBrkB,GACxE,IAAIukB,EAAOzB,GAAoBgD,GAC/B,OAAOjB,GAAoBR,EAAkBE,EAAMvkB,EACtD,CoZrCkBmhU,CAA2B12b,KAAK2sC,OAAO,oBAAoB,SAAC0xB,EAAOx4C,GAAR,OAAmB+zH,GAAiB,EAAKjtG,OAAO,2BAAZ,GAA2C0xB,EAAOx4C,EAAtF,GAA+F7lB,KAAK2sC,OAAO,mBAAZ3sC,IACjKquQ,EAAeruQ,KAAK2sC,OAAO,wBAE3Bw/W,EAAgB,GAChBlB,EAAQ4B,GAAa8pC,yBAAyB9pC,GAAa/kI,SAAUhuI,EAAM,CAC3EqxQ,QAAS,KACTG,gBAAiBsqC,GACjBrqC,cAAer1Q,GACfs1Q,eAAgBxrZ,KAAKmzb,uBACrB1nC,uBAL2E,SAKpDx7I,EAAM2mL,EAAiBz1b,EAAO7G,GACjD,IAAIiN,EAAYs1D,EAAAA,EAAAA,cAAyB,OAEzC,GADAt1D,EAAU4Q,UATeg+H,oCAUrBk4H,GAAgBA,EAAa//N,OAC7B69W,EAAc/rZ,KAAKiuQ,EAAa//N,OAAOxxC,KAAKuxQ,EAAc,CACtD54N,MAAO,CACHn7C,KAAMA,EAAKA,KACXyjB,GAAIzjB,EAAK4D,MACTyqB,MAAOruB,EAAKquB,MACZhiB,KAAMiwb,EAAgBvvY,aAE1B9/C,UAAWs6I,GAAiB9wE,GAAExpE,IAC9BpG,MAAOA,SAER,CACH,IAAI01b,EAAiBh6X,EAAAA,EAAAA,cAAyB,OAC9Cg6X,EAAetub,YAAYqub,GAC3Brvb,EAAUgB,YAAYsub,EACzB,CACD5mL,EAAK1nQ,YAAYhB,EACpB,EACD8mQ,aAAcA,IAElB,MAAO,CACH18M,SAAUof,GAAEk6U,GAAOjvZ,KAAK,IAAIiU,OAAOimI,KACnCi2Q,cAAeA,EAEtB,2BACD,WACInsZ,KAAKukb,YAAYz2X,QACjB9tD,KAAKknb,YAAYp5X,QACb9tD,KAAKmmb,cACLnmb,KAAKmmb,aAAar4X,QAElB9tD,KAAKq2b,oBACLr2b,KAAKq2b,kBAAkBvoY,QACvB9tD,KAAKq2b,kBAAkB34b,gBAChBsC,KAAKq2b,kBAEnB,yCACD,WACIr2b,KAAKuwb,gCACR,+CACD,WACIvwb,KAAKinb,qBAAqBthb,OAAO3F,KAAKukb,aACtCvkb,KAAKiha,qBAAqB3mO,WAAW30L,OAAO3F,KAAK8vb,8BAC7C9vb,KAAKmmb,cACLnmb,KAAK8vb,6BAA6Bxob,QAAQtH,KAAKmmb,cAEnDnmb,KAAK8vb,6BAA6Bnqb,OAAO3F,KAAKknb,YAAalnb,KAAKinb,sBAChEjnb,KAAKg6D,WAAWr0D,OAAO3F,KAAKiha,qBAAqBjnW,WACpD,iCACD,WACIh6D,KAAKi0b,iBAAiB,CAClB1sb,UAAWs6I,GAAiB7hJ,KAAKukb,aACjCj6B,SAAUr0Q,GACVs0Q,UAAWvqZ,KAAKw0b,0BAEvB,oCACD,WACI,OAAO1ya,EAAAA,GAAAA,OACV,8BACD,WACI,OAAOA,EAAAA,GAAAA,OACV,oCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,sCACD,WACI,OAAO,CACV,4CACD,SAA4Bnb,EAAMstB,EAAMw7O,EAAUS,GAC9C,IAAI4mL,EAAY92b,KAAK2sC,OAAO,UACxB0R,EAAS,CAAC,EACV04Y,IAAkBD,EAAUn2b,QACrBo2b,GAAiBl+S,GAAc42H,EAAUqnL,IAAc,IAC7Dp2b,SAAQ,SAACy5I,EAAe86N,GACzB,IAAI36N,EAAew8S,EAAU7hF,GAAe77W,KAC5CilD,EAAOi8F,GAAgBH,CAC1B,IACD,IAAI3B,EAAau+S,EAAgB/2b,KAAKohb,2BAA2B/iY,QAAU,EAC3E,MAAO,CACH5I,MAAO,CACH9uC,KAAMA,EACNstB,KAAMA,EACNoqB,OAAQA,EACRm6F,WAAYA,GAEhBjxI,UAAWs6I,GAAiBquH,GAC5B/uQ,MAAOsuQ,EAEd,iCACD,SAAiBryQ,EAASu3b,GACtB,IAGIhsb,EAHAwjZ,EAAgB,GAChB6qC,EAAkB55b,EAAQixQ,aAC9BruQ,KAAKi3b,OAAS,GAEd,IAAIC,EAAgB,SAASznL,EAAU0nL,GACnC,GAAIA,EAAS,CACT,IAAIlja,EACAmja,EACAC,EACAtO,EAAOh4W,GAAE,QACTumX,EAAMvmX,GAAE,QAOZ,GANAhG,GAAUusX,EAAKt3b,KAAKu3b,cAAcJ,IAC9B/5b,EAAQo6b,eACRvja,EAAO72B,EAAQo6b,cAAgBp6b,EAAQo6b,aAAa/nL,GACpD2nL,EAAiBhvU,GAAAA,OAAwBn0F,EAAM,KAC/Coja,EAAcjvU,GAAAA,OAAwBn0F,EAAM8qH,KAE5Ci4S,GAAmBA,EAAgB1oZ,OAAQ,CAC3C,IAAIgqJ,EAAkBt4L,KAAKy3b,4BAA4B,GAAGxnb,OAAOmnb,EAAgB,KAAKnnb,OAAOonb,GAAcpja,EAAMtrB,EAAG2ub,GACpHnrC,EAAc/rZ,KAAK42b,EAAgB1oZ,OAAOxxC,KAAKk6b,EAAiB1+P,GACnE,MAAU8+P,GAAkBC,GACzBC,EAAIlpX,SAzTA,4BAyT4BznE,KAAK,GAAGsJ,OAAOmnb,EAAgB,KAAKnnb,OAAOonb,IAE3Ej6b,EAAQktZ,UACRy+B,EAAK36W,SAAShxE,EAAQktZ,UAEtBltZ,EAAQmtZ,WACR+sC,EAAIlpX,SAAShxE,EAAQmtZ,WAEzBw+B,EAAKpjb,OAAO2xb,GACZt3b,KAAKi3b,OAAO72b,KAAK2ob,EACpB,CACJ,EAACjsb,KAAKkD,MACP,IAAK2I,EAAI,EAAGA,EAAI3I,KAAKs3U,MAAM32U,OAAQgI,KAC/BkkD,EAAAA,EAAAA,IAAK7sD,KAAKs3U,MAAM3uU,GAAIuub,GACpBl3b,KAAK03b,mBAET3mX,GAAE3zE,EAAQmK,WAAW5B,OAAOorE,GAAE,WAAWprE,OAAO3F,KAAKi3b,SACrDj3b,KAAKuxb,oBAAoBplC,EAC5B,iCACD,WACQnsZ,KAAKs3U,MAAM32U,OAAS,GAAKX,KAAKi3b,OAAOt2b,QACtBX,KAAKi3b,OAAOj3b,KAAKi3b,OAAOt2b,OAAS,GACvCytE,SA1UA,mCA4UhB,iCACD,WACIpuE,KAAKi0b,iBAAiB,CAClB1sb,UAAWs6I,GAAiB7hJ,KAAKknb,aACjC14K,SAAUxuQ,KAAKq0b,wBACf9oD,UAAW,EACX+e,SArVe,8BAsVfC,UArVgB,+BAsVhBl8I,aAAcruQ,KAAK2sC,OAAO,oBAC1B6qZ,aAAcx3b,KAAK23b,uBAAuB76b,KAAKkD,OAEtD,uCACD,SAAuByvQ,GACnB,IAAIh2P,EAAU,IAAI3W,KAAK9C,KAAK2sC,OAAO,gBAEnC,OADe,IAAI7pC,KAAK2W,EAAQwlE,QAAQxlE,EAAQumE,UAAYyvL,GAE/D,8BACD,SAAc0nL,GACV,IAAIS,EAAa53b,KAAK2sC,OAAO,aAE7B,OAAOwqZ,EAAUS,EAAaT,EA/Vd,GA8VGA,EAAU,GA7Vb,GA8V0D,CAC7E,mCACD,SAAmBpE,GACf,GAAKA,EAAL,CAIA,IADA,IAAIvvb,EAAS,EACJmF,EAAI,EAAGA,EAAIoqb,EAAUpyb,OAAQgI,IAClCnF,GAAUxD,KAAKu3b,cAAcxE,EAAUpqb,IAE3C,OAAOnF,CALN,CAMJ,+BACD,SAAe+xH,GACX,OAAOv1H,KAAKmnY,kBAAkBqK,cAAcj8Q,EAAcv1H,KAAK2sC,OAAO,kBAAmB3sC,KAAK2sC,OAAO,eACxG,oCACD,SAAoB4oF,IAChB,mEACAv1H,KAAKmvb,cACL,IAAIn5G,EAAOh2U,KAAK63b,eAAetiU,GAC/Bv1H,KAAK+1b,mBAAmB//G,EAC3B,4CACD,WACI,OAAOh2U,KAAK2sC,OAAO,YACtB,+BACD,WACI,IAAIo4C,EAAc,IAAIjiF,KAAK9C,KAAK2sC,OAAO,gBACnC6tV,EAAiBx6X,KAAK2sC,OAAO,kBACjCo4C,EAAY7F,SAASl/E,KAAK2sC,OAAO,eACjC,IAAInpC,EAASuhF,EAAY9F,QAAQ8F,EAAY/E,UAAYw6S,EAAiB,GAAK,IAC/E,OAAO,IAAI13X,KAAKU,EACnB,2CACD,WACI,OAAOxD,KAAKw9Y,gBACf,yCACD,WACI,MAAO,CACH13T,UAAW,KACXC,QAAS,KAEhB,qCACD,SAAqB9xD,GACjB,IAAIytD,EAAU1hF,KAAKw0H,mBAAmBE,WAAWzgG,EAAM,CACnDtxB,KAAM,WAEN6pM,EAASxsM,KAAK83b,mBACdC,EAAgBr2W,EAAQE,WACxBo2W,EAAmBt2W,EAAQc,aAC3BxiF,KAAK6pb,yBAAyBkO,EAAeC,EAAkBxrP,EAAQ9qH,IACvE1hF,KAAKi4b,aAAaF,EAAeC,EAAkBt2W,EAE1D,yCACD,SAAyBxB,EAAOE,EAASosH,EAAQ0rP,GAC7C,IAAIC,GAAiB,EAUrB,OATIj4W,EAAQssH,EAAO/nK,IAAIy7C,OAASA,EAAQssH,EAAO7nK,OAAOu7C,SAClDi4W,GAAiB,GAEjBj4W,IAAUssH,EAAO/nK,IAAIy7C,OAASE,EAAUosH,EAAO/nK,IAAI27C,UACnD+3W,GAAiB,GAEjBj4W,IAAUssH,EAAO7nK,OAAOu7C,OAASE,EAAUosH,EAAO/nK,IAAI27C,UACtD+3W,GAAiB,GAEdA,CACV,yCACD,WACI,OAAO,CACV,4CACD,WAAgC,qCAChC,WACI,OAAOn2W,GAAAA,mBAA6B,OAAShiF,KAAK2sC,OAAO,gBAC5D,uCACD,WACI,MAAO,CACHu0U,mBAAoB,CAChB,CAAC,CAAC,IAEND,qBAAsB,CAAC,CAAC,GAE/B,OA3aC40E,CAAwBuC,IA6a9B5lR,GAAkB,oBAAqBqjR,IACvC,UEneWtjB,GAAuB,SAACpxa,EAAO8yB,EAAM72B,GAC5C,IAAK23H,GAAAA,uBAAqC9gG,GACtC,OAAOA,EAEX,IACoB+9Y,EAIhB50a,EAJA40a,eACUr1V,EAGVv/E,EAHAu/E,SACcp8B,EAEdnjD,EAFAmjD,aACe+9F,EACflhJ,EADAkhJ,cAEA96I,EAASk7I,GAA2BJ,EAAe/9F,GACnD83Y,EAAal3b,EAAQ6wa,EAEzB,OADAxua,EAAO28E,QAAQ38E,EAAOkyD,UAAY2iY,EAAa17W,GACxCn5E,CACV,EChBG4hB,GAAY,CAAC,mBAAoB,iBAAkB,cAAe,mBAAoB,SAAU,oBA0BpF83K,GACZ0yH,KADA1yH,WA+EAlyB,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjBg6P,GAAb,0CACI,WAAYxtb,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,iDAKI,WACI,IAAI,EAIA1oC,KAAK8K,MAHQszC,EADjB,EACIA,YACkBm/F,EAFtB,EAEIA,iBACQl/F,EAHZ,EAGIA,OAEJ,OAAOm/F,GAA4Bn/F,EAAQk/F,KAAsBn/F,CACpE,GAZL,0BAaI,WACI,IAAIigJ,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAjBL,oBAkBI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OAlGkB,SAAAkM,GACtB,IAC0B0mI,EAMtB1mI,EANA0mI,qBADJ,EAOI1mI,EALAlM,MACsB6oZ,EAH1B,EAGQA,iBACgBD,EAJxB,EAIQA,eACkBE,EAL1B,EAKQA,iBAIKxvV,EAUTsvV,EAVAtvV,QACmB2uW,EASnBrf,EATAqf,kBACsBtqC,EAQtBirB,EARAjrB,qBACsBklB,EAOtB+F,EAPA/F,qBACuBI,EAMvB2F,EANA3F,sBACuBH,EAKvB8F,EALA9F,sBAC6B0lB,EAI7B5f,EAJA4f,4BAC6BF,EAG7B1f,EAHA0f,4BAC8BG,EAE9B7f,EAFA6f,6BAC8BF,EAC9B3f,EADA2f,6BAEJ,OAAOt3P,GAAe33G,EAAQrgE,KAAI,SAAC0wZ,EAAehlJ,GAC9C,IAAIgqE,EAAYr1Q,EAAQzjE,OACpBszZ,EAAqBx6E,EAAY,IAAMhqE,EACvC8oL,EAAe9+G,EAAY,GAAK,IAAMhqE,EACtCqkJ,EAAY52N,KAAe61O,GAAqBwlB,GAChDC,EAA4B/vD,EAC5BgwD,EAA6B1qC,EAC7B2qC,EAA6B9qC,EAC7B+qC,EAA4BhrC,EAOhC,OANI4qC,IACAC,EAA4BllB,EAC5BmlB,EAA6BllB,EAC7BmlB,EAA6BrlB,EAC7BslB,EAA4BvlB,GAEzB33P,GAAqB,EAAGqyO,GAAK,CAChC31Y,UAAW,0BACXw1Y,qBAAsBgrC,EACtBlwD,qBAAsB+vD,EACtB5qC,sBAAuB8qC,EACvB3qC,sBAAuB0qC,EACvB1tb,SAAU0pZ,EAAc1wZ,KAAI,SAAA2gK,GACxB,IACa+jL,EAWT/jL,EAXA+jL,QACS1iQ,EAUT2+E,EAVA3+E,QACYyyD,EASZksB,EATAlsB,WACQoD,EAQR8oB,EARArmH,OACOl9C,EAOPujK,EAPAvjK,MACkB+7I,EAMlBwnB,EANAxnB,iBACiBC,EAKjBunB,EALAvnB,gBACK76I,EAILoiK,EAJApiK,IACWwjF,EAGX4+E,EAHA5+E,UACMn/E,EAEN+9J,EAFA/9J,KACO6tQ,EACP9vG,EADA8vG,MAEJ,OAAO/4F,GAAqB,EAAGy4O,GAAgB,CAC3CpuU,UAAWA,EACXC,QAASA,EACT1nC,OAAQq/F,EAAuB9B,OAAa,EAC5CpD,WAAYkF,EAAuBlF,OAAa,EAChDg8H,MAAOA,EACPrzQ,MAAOA,EACPwF,KAAMA,EACNu2I,iBAAkBA,EAClBC,gBAAiBA,EACjB62Q,cAAeukC,EACf9vG,QAASA,EACTqrE,UAAWA,EACXH,iBAAkBA,EAClBC,iBAAkBA,EAClBK,mBAAoBA,GACrB3xZ,EACN,KACFmtQ,EAASnyQ,WACf,IAAG,EACP,CAsBcmhM,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB6oZ,iBAAkB3oP,GAAYlgK,EAAM6oZ,kBACpCC,iBAAkB5oP,GAAYlgK,EAAM8oZ,oBAExCl2Q,qBAAsB19I,KAAK09I,qBAC3BghD,eAAgB1+L,KAAK0+L,gBAE5B,KA5BL,GAA8ClS,IA8B9C8rQ,GAAyB3/a,aAAe47Y,GCxIxC,IAAInvY,GAAY,CAAC,YAAa,mBAAoB,iBAAkB,qBAAsB,aAAc,cAAe,mBAAoB,iBAAkB,SAAU,SAAU,qBAAsB,uBAAwB,oBA6C3N4lJ,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjBs6P,GAAb,0CACI,WAAY9tb,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,0BAQI,WACI,IAAIqQ,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAZL,oBAaI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OA9CkB,SAAAkM,GACtB,IAAI,EAYAA,EAXAlM,MACsB6oZ,EAF1B,EAEQA,iBACgBD,EAHxB,EAGQA,eACat1W,EAJrB,EAIQA,YACkBm/F,EAL1B,EAKQA,iBACgBu0Q,EANxB,EAMQA,eACQzzW,EAPhB,EAOQA,OACoBs2W,EAR5B,EAQQA,mBACsB/C,EAT9B,EASQA,qBACkBgC,EAV1B,EAUQA,iBAGR,OAAOn4O,GAAqB,EAAGo5O,GAAmB,CAC9CD,mBAAoB0jC,GACpB5kC,eAAgBA,EAChB5B,eAAgBA,EAChB1zW,YAAaA,EACbC,OAAQA,EACRk/F,iBAAkBA,EAClBo3Q,mBAAoBA,EACpB/C,qBAAsBA,EACtB+B,iBAAkBA,EAClBC,iBAAkBA,GAEzB,CAoBcn1N,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvB6oZ,iBAAkB3oP,GAAYlgK,EAAM6oZ,kBACpCC,iBAAkB5oP,GAAYlgK,EAAM8oZ,kBACpCgB,mBAAoB5pP,GAAYlgK,EAAM8pZ,oBACtChD,qBAAsB5mP,GAAYlgK,EAAM8mZ,wBAE5ClzN,eAAgB1+L,KAAK0+L,gBAE5B,KAxBL,GAA+C3R,IA0B/C6rQ,GAA0Bjgb,aAAe+7Y,OCnEpBkkC,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACHlkQ,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,mBAAoB,mBAAoB,qBAAsB,wBAC1EpiC,MAAO,CAAC,iBAAkB,qBAAsB,mBAAoB,mBAAoB,qBAAsB,SAAU,mBAAoB,iBAAkB,cAAe,SAAU,YAAa,wBAE3M,6BACD,WACI,OAAO+tb,EACV,OAZgBD,CAAkCnlC,IAcvDjhP,GAAkB,8BAA+BomR,QCd3CE,GAAAA,SAAAA,uIACF,WAEI,IADA,IAAInqW,EAAa3uF,KAAKy8Y,WAAWslC,gCAAkC/hb,KAAKy8Y,WAAW+H,iBAAmB,EAC7F77Y,EAAI,EAAGA,EAAIgmF,EAAYhmF,GAAK,EAAG,CACpC,IAAIowb,EAAgB,IAAMpwb,EACtB25Z,EAAUy2B,EAAgB/4b,KAAKsha,SAAWtha,KAAKuha,eAC/Cvha,KAAKy8Y,WAAW/Z,kBAChB1iY,KAAKg5b,8BAA8B12B,EAAS35Z,GAE5C3I,KAAKi5b,iBAAiB32B,EAAS35Z,IACjCowb,GAAiB/4b,KAAKoha,QAAQhha,KAAKkia,EACxC,CACJ,iCACD,SAAiBA,EAAS9pR,GACtB,IAAIwpR,EAAchia,KAAKy8Y,WAAWozB,qBAElC,GADA7va,KAAKk5b,kBAAkB52B,EAASN,GAC5BxpR,GAAc,EAAG,CACjB,IAAI0nQ,EAAYlgZ,KAAKy8Y,WACjB08C,EAAkBj5C,EAAUuuB,gBAAkBvuB,EAAU1L,eAC5D8tB,EAAQh9X,IAAI,OAAQ6zZ,EACvB,MACG72B,EAAQh9X,IAAI,OAAQ,EAE3B,kCACD,SAAkBg9X,EAAS3xY,GACvB,IAAIgQ,EAAW8pD,GAAgBzqF,KAAKolQ,YAAYxrQ,IAAI,IAAI+2B,MACpDA,EAAQgQ,IACRhQ,EAAQgQ,GAERhQ,EAAQ,GACRk6C,GAASy3V,EAAS3xY,EAEzB,8CACD,SAA8B2xY,EAAS9pR,GACnC,IAMI4gT,EANA7tD,EAAYvrY,KAAKy8Y,WAAW48C,yBAC5Bl8W,EAAc5zE,KAAKo/D,MAAM4iU,GACzB+tD,EAAe/tD,EAAYpuT,EAC3Bo8W,EAAoB,IAAM/gT,EAC1B0nQ,EAAYlgZ,KAAKy8Y,WACjBulB,EAAcu3B,EAAoBr5C,EAAU2vB,qBAAuBypB,EAAep5C,EAAU1L,eAEhGx0Y,KAAKk5b,kBAAkB52B,EAASN,GAE5Bo3B,EADAG,EACar5C,EAAUuuB,gBAAkBvuB,EAAU1L,eAAiBh8P,EAEvD0nQ,EAAU1L,eAAiBr3T,EAAc+iU,EAAUsE,iBAAmBhsQ,EAAa0nQ,EAAU1L,eAE9G8tB,EAAQh9X,IAAI,OAAQ8zZ,EACvB,OAhDCN,CAAoC93B,IAkD1C,MClCI7yS,GAAOnsC,GAAAA,mBACPw3W,GAAsC,mCACtCC,GAAqC,4CACnCC,GAAAA,SAAAA,oIACF,WACI,OAAOz6S,GAASj/I,KAAK2sC,OAAO,iBAAkB3sC,KAAKw0H,mBACtD,mCACD,WACI,GAAIx0H,KAAK2sC,OAAO,4BAA6B,CACzC,IAAI6nO,EAAQx0Q,KAAKilb,YACb5uE,EAAcr0R,GAAAA,SAAmBhiF,KAAKw9Y,kBAC1C,OAAOx7T,GAAAA,YAAsBwyL,EAAOx0Q,KAAKgzY,mBAAoB,IAAIlwY,KAAKuzW,EAAY3gT,UAAYy4D,GAAK,QACtG,CACD,OAAO,CACV,sCACD,WACI,SAAKrtE,EAAAA,EAAAA,OAGO9gD,KAAKilb,aACDjjW,GAAAA,SAAmB,IAAIl/E,KAAK9C,KAAKgzY,oBACpD,mCACD,WACI,IAAIx+H,EAAQx0Q,KAAKilb,YACb5uE,EAAc,IAAIvzW,KAAK9C,KAAKw9Y,iBAAiB9nV,UAAYy4D,GAAK,UAAY,GAC1E23Q,EAAgB,IAAIhjY,KAAK9C,KAAKgzY,oBAGlC,OAFAlN,EAAcnmT,YAAY60L,EAAM50L,cAAe40L,EAAMp1L,WAAYo1L,EAAMx0L,WACvEq2R,EAAY12R,YAAY60L,EAAM50L,cAAe40L,EAAMp1L,WAAYo1L,EAAMx0L,WAC9DgC,GAAAA,YAAsBwyL,EAAOsxH,EAAezvB,EACtD,0CACD,WACI,GAAIr2W,KAAK25b,0BACD35b,KAAK2sC,OAAO,0BACZ3sC,KAAKoha,QAAQ9yX,SAEbtuC,KAAK45b,sBAAwB55b,KAAK65b,sBAAsB,CACxD,IAAIlrW,EAAa3uF,KAAKwkZ,kBAAoB,EACtChqU,EAAax6E,KAAKiha,qBAAqB3mO,WACvC9tK,EAASxsB,KAAK4va,sBACdrnD,EAAYvoX,KAAK85b,cAAc95b,KAAKw0Y,gBACxCx0Y,KAAK+5b,iBAAiBvta,EAAQ+7V,EAAW/tS,EAAYmU,GACrD3uF,KAAKg6b,sBACR,CAER,iCACD,SAAiBxta,EAAQ+7V,EAAW/tS,EAAYmU,GAG5C,IAFA,IAAIsrW,EAAgBj6b,KAAK0iY,kBACrBrpC,EAAc4gG,EAAgB,EAAItrW,EAC7BhmF,EAAI,EAAGA,EAAI0wV,EAAa1wV,IAAK,CAClC,IAAI2ma,EAAatva,KAAKk6b,iBAAiB1/W,GACvC3P,GAASykW,EAAY2qB,EAAgBj6b,KAAKw0Y,eAAiB7lT,EAAa3uF,KAAKw0Y,gBAC7Ex0Y,KAAK0jb,iBAAiByW,eAAe7qB,EAAY9iZ,EAAQ+7V,EAAW5/W,EACvE,CACJ,iCACD,SAAiB6xE,GACb,IAAI80V,EAAav+V,GAAE,SAAS3C,SAASorX,IAErC,OADAh/W,EAAW70E,OAAO2pa,GACXA,CACV,8BACD,SAAc3+Y,GACV,OAAO3wB,KAAK2sC,OAAO,cAAgB89C,GAAgBzqF,KAAKiha,qBAAqB3mO,WAAW1gM,IAAI,IAAI+2B,MAAQ3wB,KAAK2ua,oBAAsBh+Y,EAAQ,CAC9I,6CACD,WAA+B,WACtB3wB,KAAK2sC,OAAO,6BAA+B,IAAM3sC,KAAK2sC,OAAO,6BAGlE3sC,KAAKo6b,gCACLp6b,KAAKq6b,mBAAqBz+P,aAAY,WAClC,EAAK0+P,4BACR,GAAEt6b,KAAK2sC,OAAO,4BAClB,8CACD,WACQ3sC,KAAKq6b,qBACL3+P,cAAc17L,KAAKq6b,2BACZr6b,KAAKq6b,mBAEnB,kCACD,WACI,OAAO,CACV,mCACD,SAAmB7hT,GACf,IAAI73G,EAAW3gC,KAAKw0Y,eAAiBx0Y,KAAKyua,gBACtC5qV,EAAa7jF,KAAKu6b,wBAClB12W,EAAa7jF,KAAKyua,kBAClB5qV,EAAa7jF,KAAKyua,iBAEtB,IAAI99Y,EAAQkzD,EAAa7jF,KAAK2va,oBAAoBn3R,EAAYA,EAAax4I,KAAKyua,gBAAiB5qV,GACjG,OAAOljD,EAAWhQ,EAAQgQ,EAAWhQ,CACxC,mCACD,SAAmB6nH,GACf,IAAI30D,EAAa7jF,KAAKu6b,wBAA0B,EAEhD,OADa12W,EAAa7jF,KAAK2va,oBAAoBn3R,EAAYA,EAAax4I,KAAKyua,gBAAiB5qV,EAErG,sCACD,WACI,IAAI2wL,EAAQx0Q,KAAKilb,YACbn/C,EAAgB,IAAIhjY,KAAK9C,KAAKgzY,oBAC9BwnD,EAAWhmL,EAAM9+M,UAAYowU,EAAcpwU,UAI/C,MAHI,aAAe11D,KAAK2sC,OAAO,UAC3B6tZ,GAAYx6b,KAAK0nb,kBAAkBn+a,KAAKoZ,MAAM63a,EAAWrsU,GAAK,SAAWA,GAAK,QAE3E5kH,KAAKq7E,MAAM41W,EAAW,GAAKrsU,GAAK,OAC1C,oCACD,WACI,IAAIqmJ,EAAQimL,GAAAA,6BAA2Cz6b,KAAKilb,aACxDjnE,EAAah+W,KAAKu0Y,gBAClBtgX,EAAO,IAAInxB,KAAK9C,KAAKgzY,oBAMzB,OALIhzY,KAAK45b,sBACL3la,EAAK0rD,YAAY60L,EAAM50L,cAAe40L,EAAMp1L,WAAYo1L,EAAMx0L,YAEnDw0L,EAAM9+M,UAAYzhC,EAAKyhC,WACX11D,KAAKmgJ,kBACb69N,CACtB,yBACD,WACIh+W,KAAKo6b,iCACL,6CAAerib,MAAM/X,KAAM8X,UAC9B,2CACD,WACI,IAAIpd,EACJsF,KAAK06b,0BACL16b,KAAK26b,yBACL,QAAUjgc,EAAKsF,KAAKoha,eAAY,IAAW1ma,GAAcA,EAAG26P,QAC5Dr1P,KAAKoxb,2BACR,qCACD,WACI,IAAIwJ,EAAiB56b,KAAK66b,qBACG76b,KAAK86b,kCACXp6b,SAAQ,SAAAq6b,GAC3BH,EAAehrX,GAAGmrX,GAAoB3sX,SAASqrX,GAClD,GACJ,yCACD,SAAyBhnB,GACrB,GAAIzya,KAAK45b,qBAAsB,CAC3B,IAC2B/mB,EACvB7ya,KAAKs2W,iBADLu8D,sBAEA5+Y,EAAO4+Y,EAAsBA,EAAsBlya,OAAS,GAAG8xa,GAAa3sV,UAChF,OAAO9D,GAAAA,SAAmB/tD,EAAMj0B,KAAKilb,YACxC,CACD,OAAO,CACV,yCACD,SAAyBt8a,GACrB,IAAI4hZ,GAAY,uEAA+B5hZ,GAC/C,OAAI3I,KAAKg7b,yBAAyBryb,GACvB,GAAGsH,OAAOs6Y,EAAW,KAAKt6Y,OAAO4lI,IAErC00Q,CACV,2BACD,YACI,0DACAvqZ,KAAK06b,yBACR,kCACD,YACI,iEACA16b,KAAKs6b,4BACR,wCACD,WACIt6b,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOupb,KAAsC97b,QACzE,uCACD,WACIsC,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOwpb,KAAqCprX,YAAYorX,GACpF,gCACD,YACI,+DACAz5b,KAAKoxb,4BACLpxb,KAAKqxb,8BACR,+BACD,SAAezzb,GACX,OAAQA,EAAKxE,MACT,IAAK,2BACL,IAAK,gBACD4G,KAAKkub,kBACL,MACJ,IAAK,0BACDlub,KAAKqxb,+BACL,MACJ,IAAK,kBACL,IAAK,iBACL,IAAK,yBACD,6DAAqBzzb,GACrBoC,KAAKs6b,6BACL,MACJ,IAAK,wBACDt6b,KAAKs6b,6BACL,MACJ,SACI,6DAAqB18b,GAEhC,mCACD,WACI,OAAO6nD,EAAAA,GAAAA,IAAO,kEAA4B,CACtCrF,0BAA0B,EAC1B8+F,cAAe,IAAIp8I,KACnBy7C,wBAAyB,EAAI4vE,GAAK,UAClCjuE,uBAAuB,GAE9B,gDACD,WACI,IASI+6Y,EATAC,EAAmBl7b,KAAKq0b,wBACxB7/K,EAAQx0Q,KAAKilb,YACb9jb,EAAQnB,KAAKm7b,mBAAmB3mL,GAEtB4mL,EACVp7b,KAAKq7b,2BAA2Bl6b,GADhCsuQ,SAEJ,QAAI,IAAW2rL,EACX,MAAO,GAIPH,EADA,IAAMG,EACQ,CAACA,GAEDA,EAAsB,IAAM,EAAI,CAACA,EAAsB,EAAGA,GAAuB,CAACA,EAAqBA,EAAsB,GAE/I,IAAIE,EAAqBt7b,KAAKg9Y,8BAAgCh9Y,KAAKwkZ,iBAAmB,EACtF,OAAO,QAAI,IAAI3/Y,MAAMy2b,IAAqBn3b,QAAO,SAACo3b,EAAgBz8b,EAAG05I,GAApB,yBAAuC+iT,IAAvC,QAA0DN,EAAYl3b,KAAI,SAAAisQ,GAAS,OAAIkrL,EAAmB1iT,EAAaw3H,CAApC,KAAnF,GAAoI,GACxL,OArNC0pL,CAAoC3Y,IAuN1CvuQ,GAAkB,uBAAwBknR,IAC1C,UC5MkB7sC,GACdwyB,GAAAA,aAEAuW,GAAoB,2BAEpB4F,GAA0B,iCAC1BC,GAA+B,sCAK/BttU,GAAOnsC,GAAAA,mBACL05W,GAAAA,SAAAA,iCACF,aAAc,6BACV,eAAS5jb,YACJo+V,cAAgB,aAFX,CAGb,qDACD,WACI,OAAO0/E,EACV,4CACD,WACI,OAAO+F,EACV,mCACD,WACI,OAAO37b,KAAK+xb,eAAiB/mX,GAAchrE,KAAK+xb,gBAAkB,CACrE,kCACD,SAAkBpjW,GACd,OAAI3uF,KAAK+hb,gCACE/hb,KAAKi9Y,gBAEhBtuT,EAAaA,GAAc,EACpB3uF,KAAKi9Y,eAAiBtuT,EAChC,2BACD,WACI,MAAO,WACV,oCACD,WACI,OAAI3uF,KAAK2sC,OAAO,2BAA4BmU,EAAAA,EAAAA,MACjC2pC,GAAgBzqF,KAAKukb,YAAY3qb,IAAI,IAAI4yB,OAE7Ci+D,GAAgBzqF,KAAKg6D,WAAWpgE,IAAI,IAAI4yB,MAClD,2CACD,WACI,IAAIzsB,GAAS,0EACT67b,EAAiB,CACjBh1a,UArCK,cAuCT,OAAO5mB,KAAK2sC,OAAO,yBAA2B5sC,GAAS0lD,EAAAA,GAAAA,GAAO1lD,EAAQ67b,EACzE,0CACD,WACI,OAAO,CACV,wCACD,WACI,IAAI77b,GAAS,uEACb,OAAO0lD,EAAAA,GAAAA,GAAO1lD,EAAQ,CAClB+1R,iBAAiB,GAExB,iCACD,WACI,OAAO,CACV,yCACD,WACI,OAAI91R,KAAK+hb,gCACE/hb,KAAKywa,QAETzwa,KAAK+xb,cACf,+CACD,WACI,OAAO,CACV,sCACD,WACI,OAAO,CACV,+BACD,SAAe99Z,GACXA,EAAKgrD,QAAQhrD,EAAK+rD,UAAY,EACjC,uCACD,WACI,IAAIw6W,EAAWx6b,KAAK67b,eACpB,OAAO77b,KAAK87b,0BAA0BtB,EACzC,6BACD,WACI,IAAIhmL,EAAQx0Q,KAAKilb,YACbhxZ,EAAOj0B,KAAK+7b,8BACZz9S,EAAgBt+I,KAAKgzY,mBACrBgpD,EAAiBvB,GAAAA,sBAAoCn8S,EAAek2H,GAIxE,OAHIwnL,IACAxnL,EAAQ,IAAI1xQ,KAAK0xQ,EAAM9+M,UAAYsmY,IAEhCxnL,EAAM9+M,UAAYzhC,EAAKyhC,SACjC,0CACD,SAA0B8kY,GACtB,IAAIhmL,EAAQx0Q,KAAKilb,YACbjgW,EAAmBz7E,KAAKo/D,MAAM6xX,EAAWrsU,GAAK,QAC9CtiG,GAAY2ua,EAAWx1W,EAAmBmpC,GAAK,OAASnuH,KAAK2sC,OAAO,gBAAkBwhF,GAAK,SAAWnuH,KAAKmgJ,kBAO/G,OANIq0H,EAAM5yL,WAAa5hF,KAAK2sC,OAAO,gBAC/B9gB,EAAW7rB,KAAKumb,sBAEhB16Z,EAAW,IACXA,EAAW,GAERm5D,EAAmBhlF,KAAKumb,qBAAuB16Z,CACzD,mCACD,WACI,GAAI7rB,KAAK0iY,kBAAmB,CACxB,IAAI6I,EAAYvrY,KAAKq5b,yBACjBl8W,EAAc5zE,KAAKo/D,MAAM4iU,GACzB+tD,EAAe/tD,EAAYpuT,EAC/B,OAAOn9E,KAAKw0Y,gBAAkBr3T,EAAcn9E,KAAKwkZ,iBAAmB80C,EACvE,CACD,OAAOt5b,KAAKq5b,yBAA2Br5b,KAAKw0Y,cAC/C,kCACD,WACI,OAAO,CACV,yCACD,WACI,OAAO,CACV,+BACD,WACI,IAAI5vX,EAAY5kB,KAAKi8b,yBACrBlxX,GAAU/qE,KAAK+xb,eAAgBnta,GAC/BmmD,GAAU/qE,KAAKukb,YAAa3/Z,IAC5B,8DACA5kB,KAAK48Y,2BAA2Bt8F,kBACnC,uCACD,WACI,IAAI17R,EAAY5kB,KAAKk8b,sBACjBC,EAA2BjxX,GAAelrE,KAAKg6D,YAAY,GAAQh6D,KAAKo8b,uBAAyB,EApH9E,GAwHvB,OAHIx3a,EAAYu3a,IACZv3a,EAAYu3a,GAETv3a,CACV,2CACD,SAA2BzjB,GACvB,MAAO,CACHosV,YAAapsV,EAAQnB,KAAKyua,gBAC1Bh/J,SAAU,EAEjB,sCACD,SAAsB+xH,EAAiBhpP,GACnC,IAAIz3B,EAAU/gH,KAAK0jb,iBAAiBkE,mBAAmBpmD,EAAiBhpP,GACxE,OAAOx4I,KAAKukb,YAAYvob,KAAK,MAAM4zE,GAAGmxC,EAAQ0uJ,UAAUzzQ,KAAK,MAAM4zE,GAAGmxC,EAAQwsO,YACjF,mCACD,WACI,OAAOviR,GAAchrE,KAAKukb,aAAa,EAC1C,4CACD,WACI,OAAOviW,GAAAA,SAAmB,IAAIl/E,KAAK9C,KAAKgzY,oBAC3C,oCACD,SAAoBjuT,EAAa+mC,GAC7B,IAAIvrE,EAAevgD,KAAK2sC,OAAO,gBAC3BsR,EAAaj+C,KAAK2sC,OAAO,cACzBm5V,EAAgB9lY,KAAKgzY,mBACrBqpD,EAAoBv2D,EAAcpwU,UAClC++S,GAAkB,GAAKx2T,EAAasC,GAAgB4tE,GAAK,QACzDm5T,EAAiBtlW,GAAAA,uBAAiC8jT,EAAe/gT,GACjEu3W,EAAYv3W,EAAYrvB,UACxB6xX,EAAe+U,EAAYD,EAAoB/U,EAC/CiV,EAAWhzb,KAAKo/D,MAAM4+W,EAAep5T,GAAK,QAC1CquU,EAAejV,EAAegV,EAAWpuU,GAAK,OAC9CsuU,EAAY,EACZlxD,EAAYvrY,KAAKumb,sBAAwBgW,EAAWv8b,KAAK0nb,kBAAkB6U,IAC3EG,EAAgBJ,EAAYt6W,GAAAA,SAAmB,IAAIl/E,KAAKiiF,IAAcrvB,UACtElyD,EAAS+nY,EAAYvrY,KAAK2sC,OAAO,iBAAmBwhF,GAAK,QAa7D,OAZKrC,IACG/mC,EAAYnD,WAAarhC,EACzBk8Y,EAAYD,EAAe/nF,EAAiBioF,EACrC33W,EAAYnD,YAAcrhC,GAAgBwkC,EAAYnD,WAAa3jC,EAC1Ew+Y,EAAYD,EACLz3W,EAAYnD,YAAcrhC,GAAgBwkC,EAAYnD,YAAc3jC,EAC3Ew+Y,EAAYD,GAAgBE,EAAgBz+Y,EAAakwE,GAAK,SACtDouU,IACR/4b,EAAS+jb,GAEb/jb,GAAUi5b,GAEPj5b,CACV,kCACD,SAAkB6qB,GACd,OAAO,CACV,mCACD,WACI,OAAO,IACV,kCACD,WACI,OAAO,CACV,oCACD,SAAoBy9F,GAChB,OAAO9rH,KAAKmgJ,iBACf,gCACD,WACI,OAAO,CACV,uCACD,WACI,OAAO,CACV,6BACD,SAAajgE,EAAOE,EAASnsD,GACzB,IAAI0yV,EAAc3mX,KAAKyqb,sBAAsBvqW,EAAOE,EAASnsD,GACzDu6P,EAAaxuR,KAAK6vU,gBAClB5iU,EAASjN,KAAK2sC,OAAO,cAAgB89C,GAAgBzqF,KAAK6oZ,yBAAyBjvZ,IAAI,IAAI+2B,MAAQ,EACnG3wB,KAAK2sC,OAAO,iCACZpX,YAAW,WACPi5P,EAAWgD,SAAS,CAChB5sP,KAAM+hV,EAAY/hV,KAAO4pP,EAAWrgF,aAAelhM,EACnDw3B,IAAK,GAEZ,IAED+pP,EAAWgD,SAAS,CAChB5sP,KAAM+hV,EAAY/hV,KAAO4pP,EAAWrgF,aAAelhM,EACnDw3B,IAAK,GAGhB,mCACD,WAAuB,iCACvB,WAAqB,wCACrB,WAA4B,sCAC5B,SAAsBpW,GAClB,IAAIjxB,GAAU,qEAA4B,GAC1C,OAAO2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACnCu0a,6BAA8B3xa,KAAK28b,wBACnCpqB,qBAAsBA,IAE7B,sBACD,YACI,qDACAvya,KAAKg6D,WAAWoU,SA/NH,yBAgObpuE,KAAK+xb,eAAiBhhX,GAAE,SAAS3C,SAASwnX,GAC7C,yCACD,WACI,MAAO,UACV,8CACD,WACI51b,KAAKg6D,WAAWiU,YApOiB,6CAoO+BjuE,KAAK+hb,gCACxE,mCACD,WACI,OAAOt8X,EAAAA,GAAAA,IAAO,kEAA4B,CACtC83F,iBAAkB,YAEzB,yCACD,WACIv9I,KAAKswb,oCACR,wCACD,WACI,OAAOxua,EAAAA,GAAAA,OACV,wCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,uCACD,WACI,OAAO9hB,KAAK2sC,OAAO,mBACtB,4BACD,WACI,IAAIiwZ,EACC58b,KAAK4kb,sBACNgY,EAAqB58b,KAAKwxb,sBAE9Bxxb,KAAKmua,kBACDnua,KAAK4kb,qBACL5kb,KAAK48Y,2BAA2Bt8F,mBAEpCtgT,KAAKoha,QAAU,IAAIy7B,GAAiB78b,MACpCA,KAAK+xb,eAAepjX,SAAS3uE,KAAKsmb,mBAAmBhsP,YACjDt6L,KAAK4kb,qBAAuB5kb,KAAKg9Y,+BACjCh9Y,KAAKsxb,oBAETtxb,KAAK0kb,6BACL1kb,KAAKuxb,oBAAoBqL,EAC5B,qDACD,WACI,OAAO96a,EAAAA,GAAAA,OACV,qCACD,WACI,IAAI84a,EAAiB56b,KAAK66b,qBACG76b,KAAK86b,kCACXp6b,SAAQ,SAAAq6b,GAC3BH,EAAehrX,GAAGmrX,GAAoB3sX,SAASynE,GAClD,GACJ,uCACD,WACI71I,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAO4lI,KAAiCxnE,YAAYwnE,GAChF,mCACD,WACI,OAAO71I,KAAKg6D,WAAWh+D,KAAK,IAAIiU,OAAOurb,GAAyB,UAAUvrb,OAAOwrb,GAA8B,KAClH,gDACD,WACI,IAAIzqB,EAAsBhxa,KAAKyua,gBAC3Bj6J,EAAQx0Q,KAAKilb,YACb9jb,EAAQnB,KAAKm7b,mBAAmB3mL,GAEnBsoL,EACb98b,KAAKq7b,2BAA2Bl6b,GADhCosV,YAEJ,QAAI,IAAWuvG,EACX,MAAO,GAEX,IAAI5qB,EAAuBlya,KAAK+hb,kCAAoC/hb,KAAK0iY,kBAAoB1iY,KAAKwkZ,iBAAmB,EACrH,OAAO,QAAI,IAAI3/Y,MAAMqta,IAAuBnua,KAAI,SAACjF,EAAG05I,GAAJ,OAAmBw4R,EAAsBx4R,EAAaskT,CAAtD,GACnD,iCACD,WACI,OAAOh7a,EAAAA,GAAAA,OACV,mCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,2CACD,WACI,OAAOA,EAAAA,GAAAA,OACV,kCACD,WACI,IAAI2xP,GAAa,iEACjB,GAAIzzQ,KAAK28b,wBAAyB,CAW9B,IAVA,IAAI72D,EAAgB,IAAIhjY,KAAK9C,KAAKgzY,oBAC9BjuT,EAAc,IAAIjiF,KAAKgjY,GACvBipC,EAAS,GACTpgV,EAAa3uF,KAAKwkZ,iBAClBwtB,EAAiBhya,KAAKumb,qBACtB99F,EAAUzoV,KAAK0iY,kBAAoBsvC,EAAiBrjV,EAAaqjV,EACjE3jK,EAAeruQ,KAAK2sC,OAAO,oBAC3BulY,EAAuBlya,KAAK+hb,kCAAoC/hb,KAAK0iY,kBAAoB/zS,EAAa,EACtGouW,EAAe/8b,KAAKs2W,iBAAiBs9D,kBAAkBvB,eAAiBrya,KAAK2sC,OAAO,iBACpFwhX,EAAa4uC,EAAe7qB,EACvBwhB,EAAgB,EAAGA,EAAgBvlC,EAAYulC,IAAiB,CACrE,IAAIsJ,EAAMjsX,GAAE,QACRpqE,EAAOq4I,GAAoBj6D,GAC/B,GAAIspL,EAAc,CACd,IAAI/1E,EAAkB,CAClB7iJ,OAAO18B,EAAAA,EAAAA,GAAS,CACZpS,KAAMA,EACNstB,KAAM,IAAInxB,KAAKiiF,IAChB/kF,KAAK8zb,gCAAgCJ,EAAejrG,IACvDlhV,UAAWy1b,EACX77b,MAAOuyb,GAEXrlL,EAAa//N,OAAOgqJ,EACvB,MACG0kQ,EAAIr2b,KAAKA,GAEbq2b,EAAI5uX,SAASotX,IAAyBptX,SAASqtX,IAA8BvtX,KAAK,UAAWu6Q,GAC7FsmF,EAAO3ua,KAAK48b,GACRtJ,EAAgBqJ,IAAiBA,EAAe,EAChDh4W,EAAc,IAAIjiF,KAAKgjY,GAEvB9lY,KAAKi9b,eAAel4W,EAE3B,CACD,IAAIgkW,EAAOh4W,GAAE,QAAQ3C,SAhVV,2BAgVqCzoE,OAAOopa,GACvDt7J,EAAWvsQ,OAAO6hb,EACrB,CACJ,iCACD,SAAiBv8Z,EAAQ+7V,EAAW/tS,EAAYmU,GAC5C,IAAI2gV,EACA3+Y,EAAQ3wB,KAAK6va,qBACjB,GAAI,aAAe7va,KAAK2sC,OAAO,oBAC3B2iY,EAAatva,KAAKk6b,iBAAiB1/W,GACnCzP,GAAUukW,EAAY7kV,GAAgBjQ,EAAW5gF,IAAI,IAAI4yB,QACzD8iZ,EAAWhqY,IAAI,OAAQijV,EAAYA,EAAY53V,EAAQA,QAEvD,IAAK,IAAIhoB,EAAI,EAAGA,EAAIgmF,EAAYhmF,IAAK,CACjC,IAAIsE,EAASjN,KAAK0iY,kBAAoB/5X,EAAI3I,KAAKw0Y,eAAiBx0Y,KAAKyua,gBAAkBzua,KAAKw0Y,eAAiB7rY,EAC7G2ma,EAAatva,KAAKk6b,iBAAiB1/W,GACnCzP,GAAUukW,EAAY7kV,GAAgBjQ,EAAW5gF,IAAI,IAAI4yB,QACzD8iZ,EAAWhqY,IAAI,OAAQijV,EAAYA,EAAY53V,EAAQ1jB,EAAS0jB,EAAQ1jB,EAC3E,CAER,+BACD,SAAeoxC,EAAQD,GACnB,IAAI60Y,EAAuB,aAAejzb,KAAK2sC,OAAO,oBAAsBkgX,GAAa/kI,SAAW+kI,GAAa1nI,WACjH,OAAO0nI,GAAaqmC,iBAAiBD,EAAsB50Y,EAAQ,CAC/DktW,cAAer1Q,GACfq2Q,oBAAqBr2Q,GACrBg2Q,iBAAkBlsZ,KAAKmzb,qBAAqBr2b,KAAKkD,MACjD4sZ,wBAAyBz2Q,IAC1Bn2I,KAAKyua,iBAAmB,EAAGzua,KAAK2sC,OAAO,wBAAyB3sC,KAAKgvb,kBAAkBhvb,KAAKwkZ,kBAAmBpmW,EACrH,OAvWCs9Y,CAA0B3a,IAyWhCvuQ,GAAkB,sBAAuBkpR,IACzC,UCtZMwB,GAAAA,SAAAA,6HACF,WACI,OAAOxmT,GAAMK,YAChB,iCACD,WACI,MANa,2BAOhB,sCACD,WACI,OAAO/2I,KAAKuvb,uBACf,OATC2N,CAA6BxB,IAWnClpR,GAAkB,yBAA0B0qR,IAC5C,UCHMC,GAAAA,SAAAA,iCACF,aAAc,6BACV,eAASrlb,YACJo+V,cAAgB,aAFX,CAGb,kCACD,WACI,OAAOx/N,GAAMQ,cAChB,4CACD,WACI,OAAOsqS,EACV,4BACD,YACI,2DACAxhb,KAAKk+Z,mBACR,iCACD,WACI,MAjBa,6BAkBhB,uCACD,WACI,OAAOl+Z,KAAK2sC,OAAO,mBACtB,0CACD,SAA0B6tZ,GACtB,OAAOA,EAAWx6b,KAAKmgJ,iBAC1B,mCACD,WACI,OAAO,CACV,2BACD,WACI,OAAOnB,EACV,oCACD,SAAoBj6D,GAChB,IAAI+gT,EAAgB9lY,KAAKgzY,mBACrBs0C,EAAiBtlW,GAAAA,uBAAiC8jT,EAAe/gT,GACrE,OAAOA,EAAYrvB,WAAaowU,EAAcpwU,UAAY,KAAO11D,KAAK2sC,OAAO,iBAAmB26Y,CACnG,uCACD,WACI,OAAOlpS,GAAsBp+I,KAAK2sC,OAAO,aAAc3sC,KAAK2sC,OAAO,eAAgB3sC,KAAK2sC,OAAO,iBAAkBq1C,GAAAA,kBAA4BhiF,KAAK2sC,OAAO,cAC5J,sCACD,WACI,IAAIvvC,GAAU,qEAA4B,GAC1C,OAAO2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACnCm1a,qBAAsB,SAACzza,EAAGm1B,GAAJ,OAAaA,CAAb,GAE7B,OA3CCkpa,CAA+BzB,IA6CrClpR,GAAkB,2BAA4B2qR,IAC9C,UCpDqBC,GAAAA,SAAAA,6HACjB,WACI,OAAO1mT,GAAMM,aAChB,iCACD,WACI,MANa,4BAOhB,yCACD,SAAyBy8H,GACrB,OAAOhpL,GAAgBgpL,EAAW1oQ,WAAWgqC,QAAQn7C,IAAI,IAAI+2B,KAChE,sCACD,WACI,OAAO,CACV,+BACD,SAAesD,GACXA,EAAKgrD,QAAQhrD,EAAK+rD,UAAY,EACjC,OAfgBo9W,CAA8B1B,IAiBnDlpR,GAAkB,0BAA2B4qR,IClB7C,IAEMC,GAAAA,SAAAA,iCAIF,aAAc,6BACV,eAASvlb,YACJ4va,kBAAoBvL,GAFf,CAGb,kCAND,WACI,OAAOzlS,GAAMO,kBAChB,iCAKD,WACI,MAXa,iCAYhB,+BACD,SAAehjH,GAZO,IAaRA,EAAKitD,UAEXjtD,EAAKgrD,QAAQhrD,EAAK+rD,UAAY,IAElC,6DAAqB/rD,EACxB,OAjBCopa,CAAkCD,IAmBxC5qR,GAAkB,8BAA+B6qR,IACjD,UCzBMC,GAAAA,SAAAA,qIACF,WACI,OAAOt+S,EACV,sCACD,WACI,IAAI5hJ,GAAU,qEACd,OAAO2b,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,GAAU,CACnC4/a,yBAAyB,GAEhC,8CACD,WACI,OAAO,CACV,OAZCsgB,CAAmC5D,IAczC,MCbM6D,GAAAA,SAAAA,6HACF,WACI,OAAO7mT,GAAMC,GAChB,iCACD,WACI,MANQ,6BAOX,kCACD,WACI,OAAO,IAAM32I,KAAK2sC,OAAO,iBAAmB,MAArC,gEACV,mCACD,WACQ,IAAM3sC,KAAK2sC,OAAO,kBAClB,kEAAyB,IAEzB,kEAAyB,EAEhC,OAhBC4wZ,CAA8BC,IAkBpChrR,GAAkB,0BAA2B+qR,IAC7C,UCvBIn4a,GAAY,CAAC,SAAU,YAAa,WAAY,YAAa,uBAAwB,mBAAoB,UAAW,kBAAmB,aAAc,SAAU,QAAS,mBAAoB,YAAa,kBAAmB,aAAc,aAAc,YAAa,OAAQ,SAoDpQq4a,GAAb,0CACI,WAAY3yb,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EACd,EAAKs4J,cAAgB,CAAC,EAHP,CAIlB,CALL,oCAMI,WACI,IAAI,EAKAhhM,KAAK8K,MAJMqN,EADf,EACIA,UACiBk3Y,EAFrB,EAEIA,gBACYD,EAHhB,EAGIA,WACO56I,EAJX,EAIIA,MAEJ,OAAOh4H,IAAe,SAClB,wCAAyC4yQ,EACzC,yCAA0C56I,EAC1C,2CAA4C66I,GAC3Cl3Y,IAAcA,GAEtB,GAnBL,gCAoBI,WAA2B,WACvB,YAAI,IAAWnY,KAAKghM,cAAcguN,qBACvBhvZ,KAAKghM,cAAcguN,qBAEvBhvZ,KAAKghM,cAAcguN,qBAAwB,WAC9C,IAAI,EAGA,EAAKlkZ,MAFE3J,EADX,EACIA,MAGJ,MAAO,CACH7G,KAAM,CACFqM,KANR,EAEIA,MAMAxF,MAAOA,EAEd,CAXiD,EAYrD,GApCL,0BAqCI,WACI,IAAIk9L,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAzCL,iCA0CI,SAAoBo1J,EAAWsM,EAAW3gI,GAClCnmD,KAAK8K,MAAM3J,QAAUq5K,EAAUr5K,OAASnB,KAAK8K,MAAMnE,OAAS6zK,EAAU7zK,OACtE3G,KAAKghM,cAAcguN,0BAAuB,EAEjD,GA9CL,oBA+CI,WACI,IAjDU1wN,EAiDNxzL,EAAQ9K,KAAK8K,MACjB,OArFkB,SAAAkM,GACtB,IACa2a,EAeT3a,EAfA2a,QACsBq9X,EActBh4Y,EAdAg4Y,qBAFJ,EAgBIh4Y,EAbAlM,MACsBsiZ,EAJ1B,EAIQA,iBACSrnU,EALjB,EAKQA,QACYyyD,EANpB,EAMQA,WACQn6F,EAPhB,EAOQA,OACOl9C,EARf,EAQQA,MACkB+7I,EAT1B,EASQA,iBACWy8D,EAVnB,EAUQA,UACiBx8D,EAXzB,EAWQA,gBACYwoF,EAZpB,EAYQA,WACW7/I,EAbnB,EAaQA,UACMn/E,EAdd,EAcQA,KAGR,OAAO80K,GAAqB,EAAG6zO,GAAmB,CAC9Cn3Y,UAAWwZ,EACXy7X,iBAAkBA,EAClBtnU,UAAWA,EACXC,QAASA,EACTp/E,KAAMA,EACN03C,OAAQA,EACRm6F,WAAYA,EACZr3I,MAAOA,EACP+7I,iBAAkBA,EAClBC,gBAAiBA,EACjBwoF,WAAYA,EACZhsB,UAAWA,EACXq1M,qBAAsBA,EACtBjkZ,SAAU6vK,GAAY,EAAG,MAAO,oCAAqCj0K,EAAM,IAElF,CAmDc83L,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBsiZ,kBApDE9uN,EAoD4BxzL,EAAMsiZ,iBApDlB9uN,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,MAsDzJ3sK,QAAS3xB,KAAK2xB,QACdq9X,qBAAsBhvZ,KAAKgvZ,qBAC3BtwN,eAAgB1+L,KAAK0+L,gBAE5B,KAzDL,GAAwClS,IA2DxCixQ,GAAmB9kb,aAAew2Y,GC/GlC,IAAI/pY,GAAY,CAAC,oBAAqB,8BAA+B,yBAA0B,eAAgB,mBAAoB,mBAAoB,uBAAwB,wBAAyB,WAAY,sBAAuB,WAAY,SA0CnP4lJ,GAAc,SAAAszB,GAAY,OAAIA,IAAiBA,EAAa3lL,aAAe,SAAA7N,GAAK,OAAIqvC,GAAeshI,GAAqB,EAAG6iB,GAAcvlL,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,IAAtE,EAAiFwzL,EAAvI,EACjBo/P,GAAb,0CACI,WAAY5yb,GAAO,6BACf,cAAMA,IACD49B,MAAQ,CAAC,EAFC,CAGlB,CAJL,4CAKI,WACI,MAAO,CAACslJ,KACX,GAPL,0BAQI,WACI,IAAIqQ,EAAcr+L,KAAK8K,MAEvB,OADgB2c,EAAAA,GAAAA,GAA8B42K,EAAaj5K,GAE9D,GAZL,oBAaI,WACI,IAAIta,EAAQ9K,KAAK8K,MACjB,OA3CkB,SAAAkM,GACtB,IAAI,EAWAA,EAVAlM,MACuBqlZ,EAF3B,EAEQA,kBAC6BC,EAHrC,EAGQA,4BACkBhD,EAJ1B,EAIQA,iBACkB7vQ,EAL1B,EAKQA,iBACUqxQ,EANlB,EAMQA,SACUgB,EAPlB,EAOQA,SACOj/X,EARf,EAQQA,MAEY+tK,EAChB1nL,EADA0nL,eAEJ,OAAOvkJ,GAAeshI,GAAqB,EAAG41O,IAAqBt4Y,EAAAA,EAAAA,GAAS,CACxE62Y,SAAUA,EACVryQ,iBAAkBA,EAClB4yQ,kBAAmBA,EACnB/C,iBAAkBA,EAClB/+I,aAAcovL,GACd7uC,SAAUA,EACVwB,4BAA6BA,EAC7Bz/X,MAAOA,GACR+tK,IACN,CAoBcD,CAAa,CAChB3zL,OAAOiO,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACvBujQ,aAAcrjG,GAAYlgK,EAAMujQ,cAChC++I,iBAAkBpiP,GAAYlgK,EAAMsiZ,oBAExC1uN,eAAgB1+L,KAAK0+L,gBAE5B,KAtBL,GAA0C3R,IAwB1C2wQ,GAAqB/kb,aAAey4Y,OC9DfssC,GAAAA,SAAAA,mIACjB,WACI,MAAO,CACHhpQ,OAAQ,GACRD,UAAW,GACX9iI,SAAU,GACVzkB,UAAW,CAAC,eAAgB,oBAC5BpiC,MAAO,CAAC,eAAgB,WAAY,mBAAoB,uBAAwB,wBAAyB,sBAAuB,yBAA0B,oBAAqB,8BAA+B,QAAS,oBAE9N,6BACD,WACI,OAAO6yb,EACV,OAZgBD,CAA6BvwC,IAclD36O,GAAkB,yBAA0BkrR,ICM5C,IAKIvvU,GAAOnsC,GAAAA,mBACL47W,GAAAA,SAAAA,6HACF,WACI,OAAOlnT,GAAMI,KAChB,iCACD,WACI,MAXU,+BAYb,2BACD,WACI,OAAOiI,EACV,oCACD,SAAoBh6D,GAChB,IAAI+gT,EAAgB9lY,KAAKgzY,mBACrBs0C,EAAiBtlW,GAAAA,uBAAiC8jT,EAAe/gT,GACrE,OAAOA,EAAYrvB,WAAaowU,EAAcpwU,UAAY,KAAO11D,KAAK2sC,OAAO,iBAAmB26Y,CACnG,0CACD,WACI,OAAOvua,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,GAAF,QAAC,kEAAwC,CAC7Di5Z,eAAgB,GAEvB,6BACD,WAAe,WACX,OAAOhya,KAAKsQ,MAAM1W,IAAI,aAAa,WAC/B,IAAIikc,EAAe,EACf9xC,EAAQ,EAAK49B,YAAY5kb,MAAM,EAAG,GAItC,OAHAgnZ,EAAMl/V,MAAK,SAAC1rD,EAAOqL,GACfqxb,IAAgB/8Y,EAAAA,EAAAA,MAAc2pC,GAAgBj+E,GAASmkB,MAAQ,CAClE,IACM,IAAMo7X,EAAMprZ,YAAS,EAASk9b,EAAe,CACvD,GACJ,+CACD,WACI,OAAO,CACV,2CACD,SAA2B18b,GACvB,IAAIsuQ,EAAWlmQ,KAAKo/D,MAAMxnE,EAAQnB,KAAKyua,iBAEvC,MAAO,CACHh/J,SAAUA,EACV89E,YAHcpsV,EAAQnB,KAAKyua,gBAAkBh/J,EAKpD,0CACD,WACI,OAAOzvQ,KAAK2sC,OAAO,0BAA4B3sC,KAAKg9Y,6BACvD,uCACD,WACI,OAAO5+P,GAAsBp+I,KAAK2sC,OAAO,aAAc3sC,KAAK2sC,OAAO,eAAgB3sC,KAAK2sC,OAAO,iBAAkBq1C,GAAAA,kBAA4BhiF,KAAK2sC,OAAO,cAC5J,6BACD,SAAaxrC,GACT,OAAOA,CACV,sCACD,WACI,OAAO,CACV,oCACD,WACI,OAAOgtH,GAAK,MACf,kCACD,WACI,OAAO,CACV,iCACD,WACI,OAAO,CACV,kCACD,WACI,OAAO,CACV,uCACD,WACI,OAAO,CACV,yCACD,WACI,OAAO,CACV,+BACD,WACI,OAAOnuH,KAAK89b,wBACf,6BACD,WACI,OAAOh8a,EAAAA,GAAAA,OACV,mCACD,WAAuB,iCACvB,WAAqB,iCACrB,WACIowG,GAAAA,WAAAA,gBAAiClyH,KAAMA,KAAKukb,YAAawZ,GAAyB,qBAAsB/9b,KAAKssb,sBAChH,yCACD,WACQtsb,KAAKg9Y,8BACLh9Y,KAAKswb,sCAEL,uEAEP,wCACD,WACI,OAAOxua,EAAAA,GAAAA,OACV,wCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,iCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,mCACD,WACI,OAAOA,EAAAA,GAAAA,OACV,uCACD,SAAuBouP,EAAO51Q,GAC1B41Q,EAAMjiM,YA3GsB,uCA2GqB3zE,EAAKwgb,eAAe7sW,YAzGvC,yCAyGoF3zE,EAAK+0Z,iBAAiBphV,YAxGxG,sCAwGuJ3zE,EAAK80Z,WAC/L,2CACD,WAA+B,iCAC/B,SAAiBhyZ,GAAS,WACtBA,EAAQwtZ,YAAc,SAACn7I,EAAU89E,GAC7B,IAAIt5T,EAAO,EAAKqiV,iBAAiBo7D,oBAAoBjiK,GAAU89E,GAAaznQ,UAC5E,OAAO8kU,GAAY32X,EAAM,EAAK0Y,OAAO,iBACxC,EACDvvC,EAAQ0tZ,iBAlHiB,oCAmHzB1tZ,EAAQstZ,qBAAuB1qZ,KAAKg+b,uBAAuBlhc,KAAKkD,OAChE,+DAAuB5C,EAC1B,OAjHCwgc,CAAgC7c,IAmHtCvuQ,GAAkB,4BAA6BorR,IAC/C,UC5IMK,GAAAA,SAAAA,6HACF,WACI,OAAOvnT,GAAME,IAChB,iCACD,WACI,MANS,8BAOZ,wCACD,WACI,OlCA4B,SAACsnT,EAAiBhgZ,GAClD,IAAIigZ,EAAsB,OAASjgZ,QAAkB,IAAWA,EAAiBA,EAAiBkqE,GAAAA,sBAClG,OAAOpmC,GAAAA,iBAA2Bk8W,EAAiBC,EACtD,CkCHcC,CAAuBp+b,KAAK2sC,OAAO,aAAc3sC,KAAKonb,kBAChE,OATC6W,CAA+BT,IAWrChrR,GAAkB,2BAA4ByrR,IAC9C,UCZMI,GAAAA,SAAAA,iCAIF,aAAc,6BACV,eAASvmb,YACJ4va,kBAAoBvL,GAFf,CAGb,kCAND,WACI,OAAOzlS,GAAMG,SAChB,iCAKD,WACI,MAVc,mCAWjB,OAVCwnT,CAAmCJ,IAYzCzrR,GAAkB,+BAAgC6rR,IAClD,UCgIIC,GAAe,eACfC,GAAqB,GAAGtub,OAAOqub,GAAc,UAC7CE,GAAwB,GAAGvub,OAAOqub,GAAc,aAChDG,GAAwB,GAAGxub,OAAOqub,GAAc,aAGhDrpT,GAAuB,GAAGhlI,OADP,kBACgC,KACnDyub,GAAoC,OAGpCC,GAAe,CACfhhX,IAAK,CACDuiU,UAAWq9C,GACXp2D,kBAAmB,YAEvBhzW,KAAM,CACF+rX,UAAW+9C,GACX92D,kBAAmB,YAEvBhK,SAAU,CACN+iB,UAAWm+C,GACXl3D,kBAAmB,YAEvBjzW,MAAO,CACHgsX,UAAW09C,GACXz2D,kBAAmB,mBAEvBvpP,YAAa,CACTsiQ,UAAWg9C,GACX/1D,kBAAmB,cAEvBtpP,aAAc,CACVqiQ,UAAWk9C,GACXj2D,kBAAmB,cAEvBrpP,iBAAkB,CACdoiQ,UAAWm9C,GACXl2D,kBAAmB,cAEvBppP,cAAe,CACXmiQ,UAAWi9C,GACXh2D,kBAAmB,uBAEvB/J,OAAQ,CACJ8iB,UAAW21C,GACX1uD,kBAAmB,WAGvBy3D,GACQ,sBADRA,GAEO,qBAFPA,GAGU,wBAHVA,GAIS,uBAJTA,GAKU,wBALVA,GAMS,uBAETC,GACQ,aADRA,GAEW,gBAFXA,GAGQ,SAENviZ,GAAAA,SAAAA,6IACF,WACI,IAAI8pE,GAAiB3gE,EAAAA,GAAAA,IAAO,kEAA4B,CACpD7E,MAAO,CAAC,MAAO,QACflD,YAAa,MACbqnC,YAAa/C,GAAAA,SAAmB,IAAIl/E,MACpC+f,SAAK,EACL4U,SAAK,EACLmmB,6BAAyB,EACzBM,oBAAgB,EAChBG,OAAQ,GACR0B,UAAW,GACXs7F,gBAAiB,GACjBT,kBAAmB,IAAI1hJ,IACvBquG,WAAY,KACZ5pD,gCAA4B,EAC5BguU,oBAAqB+yE,GACrB7+C,4BArEsC,sBAsEtCi/C,6BAvEsC,uBAwEtC1xC,iBAAkB,KAClBwG,iBAAkB,KAClBhC,qBAAsB,KACtB+B,iBAAkB,KAClBpzW,aAAc,EACdtC,WAAY,GACZpB,QAAS,CACLkiZ,aAAa,EACb52C,eAAe,EACf62C,eAAe,EACfr2D,eAAe,EACfh7B,eAAe,EACf3D,sBAAsB,GAE1B7pT,iBAAiB,EACjBC,0BAA0B,EAC1BF,uBAAuB,EACvB3B,wBAAyB,IACzB2gG,mBAAe,EACfv/F,mBAAoB,SACpBnC,aAAc,GACdgB,uBAAwB,OACxByB,iBAAkB,GAClB7B,aAAa,EACbc,sBAAuB,KACvBN,mBAAoB,KACpBE,sBAAuB,KACvBD,yBAA0B,KAC1BS,YAAa,KACbC,kBAAmB,KACnBZ,oBAAqB,KACrBD,mBAAoB,KACpBW,sBAAuB,KACvBD,qBAAsB,KACtBJ,sBAAuB,KACvBD,qBAAsB,KACtBE,yBAA0B,KAC1BE,4BAA6B,KAC7B8/Y,2BAA4B,qBAC5BC,yBAA0B,mBAC1BzhZ,uBAAuB,EACvBkD,yBAAyB,EACzBN,cAAe,YACftC,YAAa,UACb0C,SAAU,OACV5C,gBAAiB,cACjBT,WAAY,SACZyC,mBAAoB,iBACpBD,wBAAyB,sBACzBovK,aAAc,WACdlvK,iBAAiB,EACjBY,SAAU,GACVJ,sBAAuB,oBACvBtC,oBAAqB,kBACrBS,WAAY2rE,GAAAA,OAA2B,iCACvCltE,mBAAmB,EACnBuwY,4BAA4B,EAC5B1wY,UAAW,CACPz1B,KAAM,YAEV+1B,gBAAiB,MACjBqwY,gBAAgB,EAChByR,cAAe,UACfC,0BAA2B,CACvBrxb,EAAG,EACHC,EAAG,GAEPqxb,mCAAoC,SACpCC,kCAAmCl1U,GAAAA,OAA2B,+BAC9Dm1U,yBAA0B,EAC1Bp8E,iBAAkB,EAClBq8E,mBAAoB,GACpB76a,QAAS,CAAC,CACNgO,SAAU,SACV8sa,eAAgB,iBACjB,CACC9sa,SAAU,QACV8sa,eAAgB,mBAGxB,OAAOh6Y,EAAAA,GAAAA,IAAO,EAAM2gE,EAAgB,CAChC3uE,mBAAoB,CAChB5M,4BAA4B,IAGvC,4BACD,WAII,OAHK7qC,KAAK0/b,iBACN1/b,KAAK0/b,eAAiB,IAEnB1/b,KAAK0/b,cACf,MACD,SAAkBxhc,GACd8B,KAAK0/b,eAAiBxhc,CACzB,4BACD,WAII,OAHK8B,KAAK2/b,iBACN3/b,KAAK2/b,eAAiB,IAEnB3/b,KAAK2/b,cACf,MACD,SAAkBzhc,GACd8B,KAAK2/b,eAAiBzhc,CACzB,0BACD,WACI,OAAOmuH,GAAyBrsH,KAAK2sC,OAAO,eAAgB3sC,KAAK2sC,OAAO,SAC3E,8BACD,WACI,OAAOtsB,EAAAA,EAAAA,IAASrgB,KAAK09C,aAAe19C,KAAK09C,YAAYr4C,KAAOrF,KAAK09C,WACpE,iCACD,WChVkC,IAAAkiZ,EDoV9B,OAHK5/b,KAAK6/b,sBACN7/b,KAAK6/b,qBClVqBD,EDkV0B5/b,KAAK2sC,OAAO,YClVnB,IAAIggF,GAAmB,CAC5EM,gBAAiB,SAAAh5F,GAAI,OAAI8gG,GAAAA,wBAAsC9gG,EAA1C,EACrB65F,mBAAoB,SAAA75F,GAAI,OAAI8gG,GAAAA,yBAAuC6qU,EAAiB3ra,EAA5D,EACxB85F,wBAAyB,SAAC95F,EAAM84F,GAAP,OAA+BgI,GAAAA,yBAAuChI,EAAqB94F,EAA3F,MDiVdj0B,KAAK6/b,mBACf,sCACD,YACI,sEACAp6Y,EAAAA,GAAAA,GAAOzlD,KAAK09J,mBAAoB,CAC5BmiP,4BAA6B,CACzBrgP,MAAO,OACPplK,QAAS,+BAGpB,qCACD,WACI,OAAO,oEAA6B6V,OAAO,CAAC,CACxCymE,OAAQ,iBAAM,YAAcsB,GAAAA,OAAe1D,aAAe0D,GAAAA,aAAlD,EACR56E,QAAS,CACL+gD,mBAAmB,IAExB,CACCu4B,OAAQ,kBAAOsB,GAAAA,UAAkBpD,OAAzB,EACRx3E,QAAS,CACLujD,yBAAyB,EACzB9D,QAAS,CACLmiZ,eAAe,EACfr2D,eAAe,KAGxB,CACCjyT,OAAQ,kBAAMwmH,IAAN,EACR9/L,QAAS,CACLujD,yBAAyB,EACzBgzW,iBAFK,SAEYr5Z,EAAM6G,EAAOqL,GAGtBlS,EADAqM,KAECtE,MAAM,KAAK3B,SAAQ,SAACiG,EAAMxF,GAC3B,IAAI2+b,EAAO/uX,GAAE,UAAUpqE,KAAKA,GAAMynE,SAAS,uCAC3C2C,GAAEvkE,GAAS7G,OAAOm6b,GACb3+b,GACD4vE,GAAEvkE,GAAS7G,OAAO,IAEzB,GACJ,EACDy5b,0BAA2B,CACvBrxb,EAAG,EACHC,EAAG,IAEPqxb,mCAAoC,MACpCC,kCAAmC,KACnCC,yBAA0B,EAC1Bp8E,iBAAkB,GAClBq8E,mBAAoB,MAG/B,2CACD,SAA2Blib,GACvBtd,KAAK2+J,oBAAoB5wH,IAAI,oBAAqB/tC,KAAK+/b,kBAAkBjjc,KAAKkD,MAAOsd,EACxF,yCACD,WAA2B,WACnB0ib,EAAahgc,KAAK2+J,oBAAoB5wH,IAAI,iBAAiB,WAC3D,IAAIsQ,EAAS,EAAK+yV,sBAAsB,UACxC,OAAOp1P,GAAc39F,EAAQ,EAAK1R,OAAO,aAAc,EAAKA,OAAO,qBACtE,IACGszZ,EAAmB,IAAI5ib,GAAAA,GAM3B,OALA2ib,EAAWpxY,MAAK,SAAA7O,GACZ,EAAKpT,OAAO,kBAAmBoT,GAC/BkgZ,EAAiBrhc,QAAQmhD,EAC5B,IACD//C,KAAKkgc,2BAA2BF,GACzBC,EAAiB3ib,SAC3B,+BACD,SAAe1f,GAAM,IACblD,EAAIC,EAAIC,EAAIC,EADC,OAGNqD,EACPN,EADAM,MAGM9E,EACNwE,EADAxE,KAEJ,OAAQwE,EAAKxE,MACT,IAAK,6BACD4G,KAAKmgc,cAAc,SAAU/mc,EAAM8E,GACnC,MACJ,IAAK,iBACD8B,KAAKmgc,cAAc,YAAa/mc,EAAM8E,GACtC8B,KAAKmgc,cAAc,SAAU/mc,EAAM8E,GACnC,MACJ,IAAK,cACDA,EAAQ8B,KAAKu1Q,YAAYn8Q,GACzB8E,EAAQ8jF,GAAAA,SAAmB,IAAIl/E,KAAK5E,IACpC8B,KAAK2sC,OAAO,mBAAoB,IAChC3sC,KAAKy8Y,WAAW9vW,OAAOvzC,EAAM,IAAI0J,KAAK5E,IACtC,QAAUxD,EAAKsF,KAAKogc,eAAY,IAAW1lc,GAAcA,EAAGiyC,OAAOvzC,EAAM,IAAI0J,KAAK5E,IAClF,QAAUvD,EAAKqF,KAAKogc,eAAY,IAAWzlc,GAAcA,EAAGgyC,OAAO,gBAAiB3sC,KAAKgzY,oBACzFhzY,KAAKoiZ,cAAcz1W,OAAO,QAAS,IACnC3sC,KAAKqgc,4BACLrgc,KAAKkgc,6BACL,MACJ,IAAK,aACDlgc,KAAKooG,kBACLpoG,KAAK49Y,wBAAwBprC,cAAcxyW,KAAKwnG,aAChDxnG,KAAKsgc,2BAA2B1xY,MAAK,WACjC,EAAKyxY,4BACL,EAAKF,cAAc,YAAa,kBAAmB,EAAKxzZ,OAAO,mBAClE,IACD,MACJ,IAAK,MACL,IAAK,MACDzuC,EAAQ8B,KAAKu1Q,YAAYn8Q,GACzB4G,KAAKmgc,cAAc,SAAU/mc,EAAM,IAAI0J,KAAK5E,IAC5C8B,KAAKmgc,cAAc,YAAa/mc,EAAM,IAAI0J,KAAK5E,IAC/C,MACJ,IAAK,QACG8B,KAAKugc,yBACLvgc,KAAKm7M,UAEL,QAAUvgN,EAAKoF,KAAKogc,eAAY,IAAWxlc,GAAcA,EAAG+xC,OAAOvzC,EAAM8E,GAE7E,MACJ,IAAK,0BACD,QAAUrD,EAAKmF,KAAKogc,eAAY,IAAWvlc,GAAcA,EAAG8xC,OAAOvzC,EAAM8E,GACzE,MACJ,IAAK,cACD8B,KAAKwgc,oBACLxgc,KAAKygc,wBACLzgc,KAAKoiZ,cAAcz1W,OAAO,CACtBuZ,MAAO,GACP03T,UAAW59W,KAAK0gc,iBAChB7iF,YAAa79W,KAAKq9Y,iBAClBjvL,aAAcpuN,KAAKkhZ,wBAAwB,yBAE/ClhZ,KAAKsgc,2BAA2B1xY,MAAK,SAAA7O,GACjC,IAAIrlD,EACJ,EAAKimc,kBAAkB5gZ,GACvB,QAAUrlD,EAAK,EAAK0lc,eAAY,IAAW1lc,GAAcA,EAAGiyC,OAAO,EAAKi0Z,iBACxE,EAAKP,4BACL,EAAKj+C,cAAcz1W,OAAO,oBAAqB,QAAUzuC,EAC5D,IACD8B,KAAK2+J,oBAAoB2B,0BACzB,MACJ,IAAK,sBACDtgK,KAAKoiZ,cAAcz1W,OAAO,eAAgBzuC,GAC1C,MACJ,IAAK,mBACL,IAAK,uBACL,IAAK,mBACL,IAAK,mBACD8B,KAAKm7M,UACL,MACJ,IAAK,SACDn7M,KAAKsgc,2BAA2B1xY,MAAK,SAAA7O,GACjC,EAAK4gZ,kBAAkB5gZ,GACvB,EAAKsgZ,2BACR,IACD,MACJ,IAAK,YACDrgc,KAAKo9Y,eAAer9V,UAAYg8F,GAAkB/7I,KAAK2sC,OAAO,cAC9D3sC,KAAKsmX,wBAAwBu6E,gBAAgB7gc,KAAK2sC,OAAO,cACzD3sC,KAAK8gc,kBACL9gc,KAAKsgc,2BAA2B1xY,MAAK,SAAA7O,GACjC,EAAKqiW,cAAcz1W,OAAO,QAAS,IACnC,EAAKg0Z,kBAAkB5gZ,GACvB,EAAKsgZ,4BACL,EAAKU,6BACR,IACD,MACJ,IAAK,eACL,IAAK,aACD/gc,KAAKwgc,oBACLxgc,KAAK8gc,kBACL9gc,KAAKoiZ,cAAcz1W,OAAO,QAAS,IACnC3sC,KAAKmgc,cAAc,YAAa/mc,EAAM8E,GACtC8B,KAAKoiZ,cAAcjnM,UACnBn7M,KAAKqgc,4BACLrgc,KAAKkgc,6BACL,MACJ,KAAKtB,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,KAAKA,GACL,IAAK,2BACL,IAAK,8BACD5+b,KAAKwhN,SAASpoN,GAAQ4G,KAAK2/J,sBAAsBvmK,GACjD,MACJ,IAAK,wBACD4G,KAAKoiZ,cAAcz1W,OAAO,iBAAkB3sC,KAAKghc,iCACjD,MACJ,IAAK,qBACDhhc,KAAKoiZ,cAAcz1W,OAAO,cAAe3sC,KAAK2/J,sBAAsBvmK,IACpE,MACJ,IAAK,wBACD4G,KAAKoiZ,cAAcz1W,OAAOvzC,EAAM4G,KAAK2/J,sBAAsBvmK,IAC3D,MACJ,IAAK,2BACD4G,KAAKoiZ,cAAcz1W,OAAO,oBAAqB3sC,KAAK2/J,sBAAsBvmK,IAC1E4G,KAAKihc,oBAAoB/zY,SAASuhK,kBAAoBzuN,KAAK2/J,sBAAsBvmK,GACjF,MACJ,IAAK,aACL,IAAK,6BACL,IAAK,mBACL,IAAK,YACL,IAAK,cACL,IAAK,oBACD4G,KAAKy8Y,WAAW9vW,OAAOvzC,EAAM8E,GAC7B,MACJ,IAAK,wBACD8B,KAAKsgc,2BAA2B1xY,MAAK,SAAA7O,GACjC,EAAKqiW,cAAcz1W,OAAO,QAAS,IACnC,EAAKg0Z,kBAAkB5gZ,GACnB,EAAKmhZ,4BACL,EAAK9+C,cAAcz1W,OAAO,QAAS,EAAKw0Z,4BAE/C,IACD,MACJ,IAAK,eACDnhc,KAAKygc,wBACLzgc,KAAKmgc,cAAc,YAAa/mc,EAAM8E,GACtC8B,KAAKoiZ,cAAcz1W,OAAO,QAAS,IAC/B3sC,KAAKkhc,6BACLlhc,KAAKmgc,cAAc,YAAa,gBAAiBjic,EAAQ,IACzD8B,KAAKoiZ,cAAcz1W,OAAO,QAAS3sC,KAAKmhc,8BAE5C,MACJ,IAAK,WACL,IAAK,oBACDnhc,KAAKmgc,cAAc,SAAU/mc,EAAM8E,GACnC8B,KAAKmgc,cAAc,YAAa/mc,EAAM8E,GACtC8B,KAAKoiZ,cAAcz1W,OAAOvzC,EAAM8E,IAChC,6DAAqBN,GACrB,MACJ,IAAK,QACDoC,KAAKmgc,cAAc,SAAU/mc,EAAM8E,GAC/B8B,KAAK2sC,OAAO,0BACZ3sC,KAAKmgc,cAAc,YAAa,QAASjic,GAE7C8B,KAAKmgc,cAAc,YAAa,iBAAkBjic,IAClD,6DAAqBN,GACrBoC,KAAK4nK,kBAAkB,MAAM,GAC7B,MACJ,IAAK,UACD,6DAAqBhqK,GACrBoC,KAAK4nK,kBAAkB,MAAM,GAC7B5nK,KAAKmgc,cAAc,YAAa,kBAAmBjic,GACnD,MACJ,IAAK,UACD8B,KAAKohc,eACL,IAAIvkZ,EAAU78C,KAAKqhc,SACnBrhc,KAAKshc,gCAAgCzkZ,GACrC78C,KAAK6hZ,yBACL7hZ,KAAKuhc,cACL,MACJ,IAAK,kBACDvhc,KAAK8gc,kBACL9gc,KAAKm7M,UACL,MACJ,IAAK,2BACL,IAAK,gBACL,IAAK,0BACL,IAAK,wBACL,IAAK,cACDn7M,KAAKmgc,cAAc,YAAa/mc,EAAM8E,GACtC8B,KAAKm7M,UACL,MACJ,IAAK,sBACL,IAAK,6BACL,IAAK,2BACL,IAAK,qBACL,IAAK,kBACL,IAAK,WACDn7M,KAAK8gc,kBACL9gc,KAAKm7M,UACL,MACJ,IAAK,8BACL,IAAK,+BACL,IAAK,4BACL,IAAK,qCACL,IAAK,oCACL,IAAK,2BACL,IAAK,mBACL,IAAK,qBACDn7M,KAAKm7M,UACL,MACJ,IAAK,0BACL,IAAK,yBACD,MACJ,IAAK,gBACL,IAAK,cACL,IAAK,wBACL,IAAK,sBACL,IAAK,WACL,IAAK,kBACL,IAAK,aACL,IAAK,qBACL,IAAK,0BACL,IAAK,eACDn7M,KAAKwhc,kBAAkBpoc,EAAM8E,GAC7B8B,KAAK49Y,wBAAwB6jD,oBAAoBzhc,KAAKo9Y,gBACtDp9Y,KAAK0hc,2BACL1hc,KAAKm7M,UACL,MACJ,IAAK,oBACDn7M,KAAK2hc,uBACL3hc,KAAKm7M,UACL,MACJ,IAAK,YACDn7M,KAAK2sC,OAAO,wBAAyB3sC,KAAK4hc,iCAAmC5hc,KAAK2sC,OAAO,0BACzF3sC,KAAKmgc,cAAc,YAAavic,EAAKiyC,SAAU3xC,GAC/C,MACJ,IAAK,kBACD8B,KAAKmgc,cAAc,YAAavic,EAAKiyC,SAAU3xC,GAC/C,MACJ,IAAK,iBACD8B,KAAKmgc,cAAc,YAAa/mc,EAAM8E,GACtC,MACJ,IAAK,gBACD8B,KAAKy8Y,WAAW9vW,OAAO,eAAgBzuC,GACvC,MACJ,IAAK,UACD8B,KAAKogc,QAAUpgc,KAAKogc,QAAQzzZ,OAAO,QAASzuC,GAAS8B,KAAKm7M,UAC1D,MACJ,IAAK,kBACL,IAAK,oBACD,MACJ,SACI,6DAAqBv9M,GAEhC,4BACD,SAAY4xC,GACR,IAAIiJ,EAAcz4C,KAAKoxY,sBAAsB5hW,GAC7C,OAAOolF,GAAAA,gBAAkCn8E,EAC5C,wCACD,SAAwBjJ,GACpB,IAAItxC,EAAQ8B,KAAKoxY,sBAAsB5hW,GACvC,MAAI,kBAAoBtxC,EACb,UAENwyD,EAAAA,EAAAA,IAASxyD,GAGP02H,GAAAA,2BAA6C12H,QAHpD,CAIH,gDACD,SAAgC2+C,GAC5B,IAAIglZ,EAAgB,CAChBC,YAAajlZ,EAAQ8wT,eAAiB9wT,EAAQsrW,eAE7CnoZ,KAAK+hc,cACNF,EAAcjkF,UAAY/gU,EAAQmiZ,cAClC6C,EAAchkF,YAAchhU,EAAQ8rV,cACpCk5D,EAAc3+E,kBAAoBrmU,EAAQ8rV,eAAiB3oY,KAAKgic,0BAEpEhic,KAAKoiZ,cAAcz1W,OAAOk1Z,GAC1B7hc,KAAKm7M,SACR,0BACD,WACI,MAAO,WAAan7M,KAAKwjZ,mBAAmBpI,gCAC/C,+BACD,WACI,OAAOp7Y,KAAKqhc,SAASrC,gBAAkBh/b,KAAK+hc,WAC/C,+BACD,WACI,OAAO/hc,KAAKqhc,SAAS14D,gBAAkB3oY,KAAK+hc,WAC/C,qCACD,WACI,OAAO/hc,KAAKqhc,SAAS14D,eAAiB3oY,KAAKgic,wBAC9C,uCACD,WACI,MAAO,QAAUhic,KAAKw8Y,iBAAmBx8Y,KAAK09C,YAAY68U,cAAgB,CAC7E,kCACD,WACI,OAAOv6X,KAAK2sC,OAAO,oBAAsB3sC,KAAK49Y,wBAAwBplC,sBAAsBx4W,KAAK27N,cAAe37N,KAAKqzW,cACxH,2CACD,SAA2Bp/U,GACvB,OAAO8gG,GAAAA,yBAAuC/0H,KAAK2sC,OAAO,YAAa1Y,EAC1E,0CACD,WACI,IAAIq/U,EAAYtzW,KAAKy8Y,WAAWrkC,eAC5BtyR,EAAY9lF,KAAKw0H,mBAAmBE,WAAW4+O,EAAU,GAAI,CAC7D3wW,KAAM,aAENojF,EAAU/lF,KAAKw0H,mBAAmBE,WAAW4+O,EAAU,GAAI,CAC3D3wW,KAAM,aAEV3C,KAAK49Y,wBAAwBqkD,aAAan8W,EAAWC,EAAS/lF,KAAK2sC,OAAO,mBAAoB3sC,KAAK2sC,OAAO,2BAC7G,kCACD,WAAoB,WACZnpC,EAAS,IAAI6Z,GAAAA,GAkBjB,OAjBIrd,KAAKwnG,aACLxnG,KAAKwnG,YAAYnR,OAAOznC,MAAK,WACzBwhT,KACA,EAAK73J,wBAAwB/0M,EAChC,IAAE8rD,MAAK,WACJ8gT,KACA5sW,EAAOhE,QACV,IACDQ,KAAKwnG,YAAY7C,aAAeusQ,GAAY,CACxC3pW,UAAWvH,KAAKg6D,WAChBxvD,SAAU,CACNqjM,GAAI7tM,KAAKg6D,eAIjBh6D,KAAKu4M,wBAAwB/0M,GAE1BA,EAAO8Z,SACjB,wCACD,SAAwB9Z,GACpB,IAAI9I,EACAwnc,GAAmB,4DAA8Bplc,KAAKkD,MACtDmic,EAAmB,WACnBD,IACA,OAAS1+b,QAAU,IAAWA,GAAkBA,EAAO5E,SAC1D,EACGoB,KAAKoic,wBACL,QAAU1nc,EAAKsF,KAAKoic,+BAA4B,IAAW1nc,GAAcA,EAAGk0D,MAAK,WAC7EuzY,GACH,IAEDA,GAEP,kCACD,SAAkBjkc,GACd,IAAIita,EAAUrzZ,UAAUnX,OAAS,QAAK,IAAWmX,UAAU,IAAKA,UAAU,GACtEuqb,EAAgB,kBAAoBric,KAAK2sC,OAAO,UAChD21Z,EAAe,kBAAoBtic,KAAK2sC,OAAO,SACnD,GAAK3sC,KAAKmpK,aAAV,CAGAnpK,KAAKuic,oBACL,IAAI7lD,EAAY18Y,KAAK28Y,eACrB,IAAK38Y,KAAK+hc,aAAe/hc,KAAK27N,eAAiB+gL,IACvCyuB,IAAYk3B,IAAkBC,GAAc,CAC5C5lD,EAAU/vW,OAAO,iBAAkB3sC,KAAKwic,qBACxC9lD,EAAU90O,oBACV,IAAIryC,EAAev1H,KAAKwjZ,mBAAmBi/C,sBAAsBzic,KAAK27N,eACtE37N,KAAKoiZ,cAAcz1W,OAAO,QAAS4oF,EACtC,CAELv1H,KAAK6hZ,yBACL7hZ,KAAK0ic,kBAAkB54F,gBACvB9pW,KAAK0ic,kBAAkBjzF,2BAbtB,CAcJ,uBACD,WACIzvW,KAAKuhc,eACL,qDACH,kCACD,WACI,IACW5wa,EACP85D,GAAgBzqF,KAAKg6D,WAAWpgE,IAAI,IADpC+2B,MAEJ3wB,KAAKg6D,WAAWiU,YAAYswX,GAAoB5ta,EAhoB/B,IAioBpB,qCACD,WACI3wB,KAAKg6D,WAAWiU,YAAYuwX,GAAuBx+b,KAAK2sC,OAAO,qBAClE,mCACD,SAAmBkU,GACfA,GAAW7gD,KAAK4nK,kBAAkB,MAAM,EAC3C,mCACD,WACI,MAAO,CACH5mE,UAAU,EAEjB,iCACD,WACQ,WAAahhG,KAAK2sC,OAAO,oBACzB3sC,KAAK2sC,OAAO,mBAAmB,EAEtC,sBACD,WACI3sC,KAAK2ic,iBAAiB,CAClB78W,UAAW9lF,KAAK2sC,OAAO,iBACvBo5C,QAAS/lF,KAAK2sC,OAAO,eACrBkmF,kBAAmB7yH,KAAK2sC,OAAO,yBAC/BgoG,gBAAiB30I,KAAK2sC,OAAO,uBAC7Bm/E,OAAQ9rH,KAAK2sC,OAAO,cACpBhmC,KAAM3G,KAAK2sC,OAAO,YAClBi2Z,YAAa5ic,KAAK2sC,OAAO,mBACzBqjG,eAAgBhwI,KAAK2sC,OAAO,sBAC5BwoG,oBAAqBn1I,KAAK2sC,OAAO,2BACjCnnB,SAAUxlB,KAAK2sC,OAAO,mBAE1B,qDACA3sC,KAAK6ic,mBACL7ic,KAAKooG,kBACLpoG,KAAK8ic,kCACL9ic,KAAKg6D,WAAWoU,SAASkwX,IACzBt+b,KAAKohc,eACLphc,KAAK8gc,kBACL9gc,KAAK4gN,eACL5gN,KAAKskZ,2BAA6B,IAAIrF,GAA0Bj/Y,MAChEA,KAAK+ic,sBAAwB,GAC7B/ic,KAAKgjc,2BAA4Bp2Y,EAAAA,GAAAA,KACjC5sD,KAAKijc,YAAc5hD,GACnBrhZ,KAAKsmX,wBAA0B,IAAIi/B,GAAwBvlZ,KAAK2sC,OAAO,aAC1E,8CACD,WAAgC,IACxBjyC,EADwB,OAE5B,QAAUA,EAAKsF,KAAK49Y,+BAA4B,IAAWljZ,GAAcA,EAAGozL,UAC5E9tL,KAAK49Y,wBAA0B,IAAIlmC,GAAwB,CACvDnwQ,WAAYvnG,KAAKwnG,YACjB2sB,cAAen0H,KAAKo9Y,eACpB5oR,mBAAoBx0H,KAAKw0H,mBACzB52E,wBAAyB59C,KAAK2sC,OAAO,2BACrCoT,UAAW//C,KAAK2sC,OAAO,aACvB4T,aAAcvgD,KAAKoxY,sBAAsB,gBACzCnzV,WAAYj+C,KAAKoxY,sBAAsB,cACvCl8Q,oBAAqBl1H,KAAKoxY,sBAAsB,gBAChD/zV,gBAAiBr9C,KAAKoxY,sBAAsB,mBAC5CjxV,gBAAiBngD,KAAK2sC,OAAO,mBAC7BqrU,mBAAoB,kBAAM,EAAKrrU,OAAO,kBAAlB,EACpBkrU,sBAAuB,kBAAM,EAAKvD,oBAAX,EACvB2D,oBAAqB,kBAAM,EAAKwkC,WAAWlpC,kBAAtB,EACrB2E,YAAa,kBAAM,EAAKukC,WAAWp3Y,IAAtB,EACb8yW,iBAAkB,kBAAM,EAAKskC,WAAWvmC,aAAtB,EAClBkC,aAAc,kBAAM,EAAKqkC,WAAWrkC,cAAtB,EACdj/N,cAAe,kBAAM,EAAKsjQ,WAAW+H,gBAAtB,EACfnsC,oBAAqB,kBAAM,EAAKokC,WAAWnmC,gBAAtB,GAE5B,gCACD,WACIt2W,KAAK6/b,oBAAsB,KACvB7/b,KAAK28Y,gBACL38Y,KAAKkjc,+BAEZ,gDACD,WAAkC,IAC1Bxoc,EAD0B,OAE9B,QAAUA,EAAKsF,KAAKwnG,mBAAgB,IAAW9sG,GAAcA,EAAGqyC,GAAG,6BAA6B,SAAA/1B,GAC5F,IACsBovF,EAClBpvF,EADAovF,iBAEJA,EAAiBtgB,UAAY,EAAKktT,mBAClC5sS,EAAiBrgB,QAAU,EAAKy3T,gBACnC,GACJ,+BACD,WACIx9Y,KAAK0hc,2BACL1hc,KAAK4pK,iBAAiBgsB,oBAAoB,CACtCutQ,mBAAoB,IAAIxnX,GACxBynX,oBAAqB,IAAIznX,MAE7B,6DACH,yCACD,WAA2B,WAEb5nB,EACN/zD,KAAKo9Y,eADLrpV,KAEAsvY,EAAe,SAAAl2b,GAAQ,OAAIinD,EAAAA,GAAAA,IAAc,mBAAmBnkD,OAAO9C,GAA5C,EACvB6yE,EAAU,SAAAprB,GAAM,OAAI,SAAAt6D,GACpB,IAAI4D,EAAQ02D,EAAOt6D,GACnB,OAAI4D,aAAiB4E,KACV5E,EAAMquD,UAEVruD,CACV,CANmB,EAOpB8B,KAAK4pK,iBAAiBgsB,oBAAoB,CACtChxL,KAAM,IAAI81E,IAAiB,SAACF,EAAYlgF,EAAMm7C,GAAnB,OAA6B,EAAKq8V,0BAA0BwxD,2BAA2B9oX,EAAYlgF,EAAMm7C,EAAzG,GAAiH,CAAC,OAAQ,OAAQ,YAAa,UAAW,SAAU,cAAe,iBAAkB,sBAAuB,oBAAqB,mBAAoBz1C,KAAK2sC,OAAO,kCAAmC,CAC3UhmC,KAAM08b,EAAatvY,EAAKtT,UACxBqlC,UAAW9F,EAAQqjX,EAAatvY,EAAK1T,gBACrC0lC,QAAS/F,EAAQqjX,EAAatvY,EAAKhW,cACnC80E,kBAAmBwwU,EAAatvY,EAAKzT,uBACrCq0F,gBAAiB0uT,EAAatvY,EAAK/V,qBACnC8tE,OAAQu3U,EAAatvY,EAAK3W,YAC1B4yF,eAAgBqzT,EAAatvY,EAAKlU,uBAG7C,+BACD,WACI7/C,KAAKs4M,oBACR,qCACD,SAAqBpyJ,GACjBlmD,KAAKqzW,cEz4BqB,SAACkwF,EAAWpvU,EAAeq0Q,EAAuBh0Q,GAChF,IAAIhxH,EAAS,GA4Bb,OA3BA,OAAS+/b,QAAa,IAAWA,GAAqBA,EAAU7ic,SAAQ,SAAAu0H,GACpE,IAAIuuU,EACA19W,EAAY,IAAIhjF,KAAKqxH,EAAcv/D,OAAOkxB,UAAUmvC,IACpDlvC,EAAU,IAAIjjF,KAAKqxH,EAAcv/D,OAAOmxB,QAAQkvC,IACpDD,GAAoBC,EAAgBnvC,EAAWC,EAASyiT,EAAuBr0Q,GAC/E,IAAI70B,EAAU01C,GAAyB/f,EAAgBd,EAAeK,GAClEivU,EAAsBnkW,EAAQxZ,WAAawZ,EAAQu1C,mBAAmB,UACtE6uT,EAAoBpkW,EAAQvZ,SAAWuZ,EAAQw1C,iBAAiB,UAChEpqB,EAAQ,IAAI9yF,OAXF,OAW0B,MACpCo4G,EAAiB1wC,EAAQ0wC,eACzB8jO,IAAuB,OAAS9jO,QAAkB,IAAWA,GAAkB,QAAUwzT,EAAwBxzT,EAAe/gI,MAAMy7G,UAAW,IAAW84U,IAAyBA,EAAsB7ic,QAC3MkgD,IAAUwN,EAAAA,EAAAA,IAAU4mE,EAAep0E,YAAao0E,EAAep0E,QAC/D4iZ,GAAuBC,GACvBlgc,EAAOpD,KAAK,CACR0rH,SAAUxsB,EAAQwsB,OAClBhmC,UAAW29W,EACX5wU,kBAAmBoC,EAAepC,kBAClC9sC,QAAS29W,EACT/uT,gBAAiB1f,EAAe0f,gBAChC3E,eAAgB1wC,EAAQ0wC,eACxBmF,oBAAqB71C,EAAQ61C,oBAC7B2+N,kBAAmBA,EACnBjzT,QAASA,EACTo0E,eAAgBA,GAG3B,IACMzxH,CACV,CF22B4Bmgc,CAAqBz9Y,EAAOlmD,KAAKo9Y,eAAgBp9Y,KAAKoxY,sBAAsB,gBAAiBpxY,KAAKw0H,mBAC1H,0CACD,SAA0BhxH,GAAQ,WAC1BxD,KAAKkhc,4BACLlhc,KAAKoic,wBAAwBxzY,MAAK,WAC9B,EAAKg1Y,qBAAqBpgc,GAC1B,EAAK0qa,sBACL,EAAKvxB,eAAeknD,oBAAoB,EAAKloO,cAChD,GAER,mCACD,WACI,IAAIjhO,EACAgiZ,EAAY18Y,KAAK28Y,eACrB,GAAID,EACA,OAAOA,EAAUpoC,qBAErB,IAAIwvF,EAAqB9jc,KAAKugc,yBAC1BxjZ,EAAY/8C,KAAK2sC,OAAO,aAC5B,MAAO,aAAe,OAASoQ,QAAa,IAAWA,OAAY,EAASA,EAAUz1B,OAAS,aAAe,QAAU5sB,EAAK,OAASopc,QAAsB,IAAWA,OAAqB,EAASA,EAAmB/mZ,iBAAc,IAAWriD,OAAK,EAASA,EAAG4sB,KACrQ,oCACD,WACItnB,KAAK27N,cAAgB37N,KAAK49Y,wBAAwBpjX,OAAOx6B,KAAKqzW,cACjE,oCACD,WACI,IAAIqpC,EAAY18Y,KAAK28Y,eACrB38Y,KAAK+jc,sBACLrnD,EAAU/vW,OAAO,iBAAkB3sC,KAAKwic,qBACxC,IAAIx6P,EAAY,GACZhoM,KAAKmpK,eACL6+B,EAAYhoM,KAAKmhc,6BAEjBnhc,KAAK2sC,OAAO,2B7I96BQ,SAAAvvC,GAC5B,IACc2rC,EAGV3rC,EAHA2rC,SACY+lV,EAEZ1xX,EAFA0xX,WACW9mL,EACX5qM,EADA4qM,UAEAzgM,EAAYsnX,GAAyBC,GACzC58P,GAAAA,WAAAA,gBAAiCnpF,EAAUxhC,EAAWy8b,GAAsB,wBAAyBh8P,EACxG,C6Iu6BWi8P,CAAmB,CACfl7Z,SAAU/oC,KACV8uX,WAAY9uX,KAAK28Y,eAAe0uC,gBAChCrjP,UAAWA,IAGfhoM,KAAKoiZ,cAAcz1W,OAAO,QAASq7J,GAEvChoM,KAAK49Y,wBAAwBlrC,YAChC,0CACD,WACI,IAAItkB,EAAgBpuV,KAAKwjZ,mBACrB0gD,EAAkB91G,EAAcq0G,sBAAsBzic,KAAK27N,eAC/D,OAAI37N,KAAK2sC,OAAO,2BAEL,CACH4oF,aAAc2uU,EACdv4E,oBAHsB3rX,KAAK2sC,OAAO,yBAA2B+xZ,GAAoC1+b,KAAK2sC,OAAO,4BAAyB,GAMvIyhT,EAAc+1G,yBAAyBD,EAAiBlkc,KAAK8xY,0BAA0BnlW,OAAO,SACxG,iCACD,SAAiBguC,GACb36E,KAAKo9Y,eAAiBlrR,GAAAA,cAAAA,OAA2Bv3C,EAAQ36E,KAAKo9Y,gBAAgBr9Y,EAAAA,GAAAA,KAASskD,oBAAqBrkD,KAAK2sC,OAAO,4BACxH3sC,KAAKo9Y,eAAer9V,UAAYg8F,GAAkB/7I,KAAK2sC,OAAO,aACjE,kCACD,SAAkBvzC,EAAM8E,GACpB,IAAIkmc,EAAU,CAAC,EACfA,EAAQhrc,EAAKwI,QAAQ,OAAQ,KAAO1D,EACpC8B,KAAK2ic,iBAAiByB,EACzB,yCACD,WACI,OAAOpkc,KAAKo9Y,eAAer9V,SAC9B,6BACD,WACI,IAAIlD,EAAU78C,KAAK2sC,OAAO,WAC1B3sC,KAAKqhc,SAAW,CACZtC,cAAeliZ,EACf8wT,gBAAiB9wT,EACjBsrW,gBAAiBtrW,EACjB8rV,gBAAiB9rV,EACjBmiZ,gBAAiBniZ,IAEjBx8B,EAAAA,EAAAA,IAASw8B,KACT78C,KAAKqhc,UAAW57Y,EAAAA,GAAAA,GAAOzlD,KAAKqhc,SAAUxkZ,IAE1C78C,KAAKqhc,SAASrC,cAAgBh/b,KAAKqhc,SAASrC,eAAiBh/b,KAAKqhc,SAAS1zF,cAC3E3tW,KAAKqhc,SAAS14D,cAAgB3oY,KAAKqhc,SAAS14D,eAAiB3oY,KAAKqhc,SAAS1zF,cAC3E3tW,KAAKg6D,WAAWiU,YAAYwwX,GAAuBz+b,KAAK8vW,cAC3D,4BACD,WACI,IAAItsW,GAAS,EACTq5C,EAAU78C,KAAKqhc,SACnB,IAAK,IAAIxkc,KAAQggD,EACT7+C,OAAOgK,UAAU6X,eAAephB,KAAKo+C,EAAShgD,KAC9C2G,EAASA,IAAWq5C,EAAQhgD,IAGpC,OAAO2G,CACV,yBACD,WACI,IAAI9I,EACJsF,KAAKihc,qBAAuBjhc,KAAKihc,oBAAoB10Z,UACrD,QAAU7xC,EAAKsF,KAAKqkc,yBAAsB,IAAW3pc,GAAcA,EAAGszE,KAAK6wX,IAC3E7+b,KAAKskc,uBACLtkc,KAAK6hZ,yBACL7hZ,KAAK+ic,sBAAsBric,QAAQ40B,cACnCt1B,KAAK+ic,sBAAwB,IAC7B,uDACH,6BACD,WACI/ic,KAAKwhN,SAAW,CACZ7iK,oBAAqB3+C,KAAK2/J,sBAAsBi/R,IAChDlgZ,mBAAoB1+C,KAAK2/J,sBAAsBi/R,IAC/Cv/Y,sBAAuBr/C,KAAK2/J,sBAAsBi/R,IAClDx/Y,qBAAsBp/C,KAAK2/J,sBAAsBi/R,IACjD5/Y,sBAAuBh/C,KAAK2/J,sBAAsBi/R,IAClD7/Y,qBAAsB/+C,KAAK2/J,sBAAsBi/R,IACjD3/Y,yBAA0Bj/C,KAAK2/J,sBAAsB,4BACrDxgH,4BAA6Bn/C,KAAK2/J,sBAAsB,+BAE/D,8CACD,WACI,OAAO3/J,KAAK2/J,sBAAsB,wBAAyB,CACvD5e,kBAAmB,CAAC,WAAY,aAEvC,mCACD,WACI,OAAOj/H,EAAAA,GAAAA,OACV,4BACD,WAAc,WAWV,IAVA,2DACA9hB,KAAKwgc,oBACLxgc,KAAKygc,wBACLzgc,KAAKukc,uBACLvkc,KAAKwzQ,gBACLxzQ,KAAK8zV,eAAiB,IAAIyoD,GAAyBv8Y,MACnDA,KAAKoiZ,cAAgBpiZ,KAAKmjK,iBAAiB,QAASqhS,GAAuBxkc,KAAKykc,uBAChFzkc,KAAKoiZ,cAAcz1W,OAAO,eAAgB3sC,KAAKkhZ,wBAAwB,wBACvElhZ,KAAKihc,oBAAsB,IAAIjhc,KAAK2sC,OAAO,qBAAuB48W,GAAwBb,IAAwB1oZ,KAAK0kc,iCACvH1kc,KAAK+gc,8BACD/gc,KAAK2kc,uBAAyB3kc,KAAKypG,uBACnCzpG,KAAK4kc,gBAAgB5kc,KAAK2sC,OAAO,oBACjC3sC,KAAK6yN,0BAA0B7yN,KAAKwnG,YAAYthD,SAChDlmD,KAAKu4M,8BACF,CACH,IAAIl6J,EAASr+C,KAAKoxY,sBAAsB,UACxCp1P,GAAc39F,EAAQr+C,KAAK2sC,OAAO,aAAc3sC,KAAK2sC,OAAO,sBAAsBiiB,MAAK,SAAA7O,GACnF,EAAKpT,OAAO,kBAAmBoT,GAC/B,EAAK6kZ,gBAAgB7kZ,GACrB,EAAKggZ,mBACR,GACJ,CACJ,4CACD,WACI,IAAIrlc,EAAIC,EACJqF,KAAK6kc,mBACL,QAAUnqc,EAAKsF,KAAK6kc,iBAAiBp/b,YAAS,IAAW/K,GAAcA,EAAG6xC,WAE9EvsC,KAAK6kc,iBAAmB7kc,KAAK8kc,wBAC7B,QAAUnqc,EAAKqF,KAAK0ic,yBAAsB,IAAW/nc,GAAcA,EAAG4xC,UACtEvsC,KAAK0ic,kBAAoB1ic,KAAK+kc,uBAAuB/kc,KAAK6kc,iBAC7D,qCACD,WACI7kc,KAAKglc,eAAiBj0X,GAAE,SAAS3C,SAAS,0BAC1CpuE,KAAKg6D,WAAWr0D,OAAO3F,KAAKglc,eAC/B,sCACD,WAAwB,WAChBr7F,EAAY,CACZU,0BAA2B,kBzaz5BCtqT,Eyay5BgC,EAAKpT,OAAO,azaz5BjC0uG,Eyay5B+C,EAAK1uG,OAAO,mBzaz5BvCoT,EAAUh8C,KAAI,SAAA+4C,GACjF,IAAIkuR,EAAY9yL,GAAap7F,GACzByqD,EAXwB,SAAC4mC,EAAWkN,GACxC,IAAK,IAAI1yI,EAAI,EAAGA,EAAI0yI,EAAgB16I,OAAQgI,IAAK,CAC7C,IAAIm0C,EAAWu+F,EAAgB1yI,GAC/B,GAAIm0C,EAAS1jD,OAAS+0I,EAClB,OAAOrxF,EAASxiD,IAEvB,CACD,MAAO,EACV,CAGoB2qc,CAAmBj6H,EAAW3vL,GAC/C,MAAO,CACH0pK,cAAe,CACXx9M,WAAYA,EAAW5mG,OAAS4mG,EAAa6wC,GAAqBt7F,EAASyqD,YAC3E0wC,YAAaD,GAAel7F,GAC5Bi7F,UAAWD,GAAah7F,IAE5BkuR,UAAWA,EACX0U,WAAY5iS,EAAS48F,cAAgB,WAAa,cAClDhiI,MAAO,CACH/Q,KAAMm2C,EAASplC,OAASszT,GAGnC,IAfsC,IAACjrR,EAAWs7F,Cyay5BZ,EAC3BzB,iBAAkB,kBAAM,EAAKwjQ,cAAX,EAClB7yC,gBAAiB,SAAC/9V,EAAS4kB,EAAWh0B,GAArB,OAAiC,EAAK+lK,iBAAiB32J,EAAS4kB,EAAWh0B,EAA3E,EACjB6sW,iBAAkB,kBAAM,EAAKo3F,QAAX,EAClB/1F,kBAAmB,kBAAM,EAAK3+T,OAAO,iBAAlB,EACnBs/T,gBAAiB,kBAAM,EAAKt/T,OAAO,eAAlB,EACjBw/T,qBAAsB,SAAAl4U,GAAI,OAAI,EAAKwoX,WAAW3nQ,iBAAiB7gH,EAArC,EAC1Bw4U,sBAAuB,kBAAM,EAAKj4O,kBAAX,GAE3B,OAAO,IAAIk1O,GAAgBC,EAC9B,uCACD,SAAuBlkW,GAAM,WACrBkkW,EAAY,CACZxiN,WAAY,kBAAM,EAAKntF,UAAX,EACZuwS,gBAAiB,SAAC/9V,EAAS4kB,EAAWh0B,GAArB,OAAiC,EAAK+lK,iBAAiB32J,EAAS4kB,EAAWh0B,EAA3E,EACjBipB,MAAO,kBAAM,EAAKA,OAAX,EACPspV,aAAc,kBAAM,EAAKhjU,OAAO,YAAlB,EACds9T,iBAAkB,kBAAM,EAAKo3F,QAAX,EAClB50F,sBAAuB,kBAAM,EAAKj4O,kBAAX,EACvBolB,iBAAkB,kBAAM,EAAKwjQ,cAAX,EAClB9tC,0BAA2B,kBAAM,EAAK9tJ,SAASviK,wBAApB,EAC3BswT,oBAAqB,SAAC9+V,EAAK++V,GAAN,OAAmB,EAAK01F,qBAAqBz0b,EAAK++V,EAAlD,EACrBc,eAAgB,SAAA/iP,GAAW,OAAI,EAAK+iP,eAAe/iP,EAAxB,EAC3BgjP,kBAAmB,SAACC,EAAmBC,GAApB,OAA2C,EAAKF,kBAAkBC,EAAmBC,EAArF,EACnBO,qBAAsB,SAAClrR,EAAWq/W,EAAcr0F,GAC5C,EAAK2rC,WAAWzrC,qBAAqBlrR,EAAWq/W,EAAcr0F,EACjE,GAEL,OAAO,IAAIrC,GAAiB9E,EAAWlkW,EAC1C,8CACD,WAAgC,WAC5B,MAAO,CACH8kW,gBAAiBvqW,KAAKmjK,iBAAiBrmK,KAAKkD,MAC5CuH,UAAWvH,KAAKg6D,WAChB6uV,uBAAwB7oZ,KAAKolc,gCAAgCtoc,KAAKkD,MAClE41L,oBAAqB51L,KAAK4pK,iBAAiBgsB,oBAAoB94L,KAAKkD,KAAK4pK,kBACzE+9O,uBAAwB3nZ,KAAKkhZ,wBAAwBpkZ,KAAKkD,MAC1DgiZ,qBAAsBhiZ,KAAKgiZ,qBAAqBllZ,KAAKkD,MACrDkjZ,0BAA2BljZ,KAAKkjZ,0BAA0BpmZ,KAAKkD,MAC/D4oZ,2BAA4B5oZ,KAAK4oZ,2BAA2B9rZ,KAAKkD,MACjEinY,wBAAyB,SAAC15Q,EAAasxR,EAAqBhnV,GAAnC,OAA8C,EAAK9K,KAAK,uBAAwBwgE,EAAasxR,EAAqBhnV,EAAlH,EACzBqwV,uBAAwB,SAAA36R,GAAW,OAAIynB,GAAyBznB,EAAa,EAAK6vR,eAAgB,EAAK5oR,oBAAoBhvG,QAAxF,EACnCipM,kBAAmBzuN,KAAK2/J,sBAAsB,4BAC9CupP,gBAAiBlpZ,KAAKggZ,iBAAiBljZ,KAAKkD,MAEnD,iCACD,SAAiBiJ,GACb,IAAIlJ,EAAS,CACTu7I,SAAUryI,EAAEqyI,SAAS/tB,YACrBztD,YAAa72D,EAAE62D,YACf++U,oBAAqB51Y,EAAEqyI,SAASujQ,qBAEpC,OAAOp5V,EAAAA,GAAAA,GAAO,CAAC,EAAGzlD,KAAK+sD,KAAK,uBAAwBhtD,GAAS,CACzDqxB,UAAWnoB,EAAEmoB,UACb5kB,QAASvD,EAAEuD,QACXzL,MAAOkI,EAAElI,MACT00C,MAAOxsC,EAAEwsC,OAEhB,0CACD,SAA0B83E,EAAasxR,GAAqB,WACpDS,EAAkBtqQ,GAAyB6pQ,EAAqB7+Y,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBAC1F6wU,EAAkBrlc,KAAKslc,0BAA0B/3U,EAAa+xR,GAClEt/Y,KAAKkiZ,2BAA2B30R,EAAasxR,EAAqBS,EAAgBx5T,WAAW,WACzF,EAAKy/W,yBAAyBh4U,EAAa83U,EAC9C,IAAE,EACN,mDACD,WACI,MAAO,CACHrlZ,WAAYhgD,KAAK2sC,OAAO,cACxBwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/BkQ,QAAS78C,KAAK2sC,OAAO,WACrB1/B,OAAQjN,KAAK2sC,OAAO,6BAE3B,2CACD,SAA2B0iU,GACvB,IAAI6wC,EAAYlgZ,KAAKy8Y,WAErB,OADoBz8Y,KAAK+zW,uBAAuB1E,IACxB6wC,EAAU3sC,oBAAsB2sC,EAAUvzW,OAAO,kBAC5E,gCACD,SAAgBoT,GAAW,WACvB//C,KAAKkhc,4BAA6BpgZ,EAAAA,EAAAA,MAClC9gD,KAAKy8Y,YAAcz8Y,KAAKwlc,kBACxBxlc,KAAKylc,iBAAiB1lZ,GACtB//C,KAAKoiZ,cAAcz1W,OAAO,CACtBq2U,eAAgBhjX,KAAKy8Y,WAAWipD,oBAChCziF,gBAAiBjjX,KAAKy8Y,WAAWkpD,uBAErC3lc,KAAK4lc,oBAAmB,WACpB,IAAIlrc,EACJ,OAAO,QAAUA,EAAK,EAAK0nc,+BAA4B,IAAW1nc,OAAK,EAASA,EAAGkE,SACtF,IACDoB,KAAKkjc,gCACLljc,KAAKqgc,4BACLrgc,KAAK6lc,gCACR,oCACD,WACI,OAAO7lc,KAAKwnG,aAAexnG,KAAKwnG,YAAY9C,UAC/C,wBACD,WACI,IAAIhqG,EACJsF,KAAKuic,oBACLvic,KAAK2hc,uBACL,QAAUjnc,EAAKsF,KAAK28Y,sBAAmB,IAAWjiZ,GAAcA,EAAGgqb,8BACnE,sDACH,8BACD,WACI,GAAI,IAAM1kb,KAAK2sC,OAAO,WAAWhsC,OAAQ,CACrC,IAAI+yQ,EAAU3iM,GAAE,SAASpC,SAAS3uE,KAAKglc,gBACvChlc,KAAKogc,QAAUpgc,KAAKmjK,iBAAiBuwG,EAASuqH,GAAiBj+X,KAAK4gc,gBACvE,CACJ,8BACD,WAAgB,WACRkD,EAAqB9jc,KAAKugc,yBAC1BuF,EAAc9lc,KAAKgkZ,sBACnBxgZ,GAASiiD,EAAAA,GAAAA,GAAO,CAChBvH,eAAgBl+C,KAAKsrW,oBACrB5tT,YAAa19C,KAAK2sC,OAAO,eACzBq8V,WAAYhpY,KAAK2sC,OAAO,qBACxB6T,SAAUxgD,KAAK2sC,OAAO,YACtBwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/BqT,WAAYhgD,KAAK2sC,OAAO,cACxBgU,wBAAyB3gD,KAAK2sC,OAAO,2BACrCgR,2BAA4B39C,KAAK2sC,OAAO,8BACxC6tV,eAAgBspE,EAAmBtpE,gBA3hCjB,GA4hCnBspE,GAoBH,OAnBAtgc,EAAO+2X,cAAgBurE,EAAYvrE,cACnC/2X,EAAOo9C,MAAQ5gD,KAAK2sC,OAAO,SAC3BnpC,EAAOqf,IAAM,IAAI/f,KAAK9C,KAAKu1Q,YAAY,QACvC/xQ,EAAOi0B,IAAM,IAAI30B,KAAK9C,KAAKu1Q,YAAY,QACvC/xQ,EAAOuhF,YAAc/C,GAAAA,SAAmB,IAAIl/E,KAAK9C,KAAKu1Q,YAAY,iBAClE/xQ,EAAOy7X,oBAAsB,SAAA7lY,GACzB,EAAKuzC,OAAO,cAAevzC,EAC9B,EACDoK,EAAO27X,oBAAsB,SAAAlrW,GACzB,EAAK0Y,OAAO,cAAe1Y,EAC9B,EACDzwB,EAAO0iD,MAAQlmD,KAAK2sC,OAAO,WAC3BnpC,EAAO86I,cAAgBt+I,KAAKgzY,mBAC5BxvY,EAAO27I,UAAY,WAIf,OAHa,EAAK3qB,mBAAmBE,WAAW,IAAI5xH,KAAM,CACtDH,KAAM,UAGb,EACMa,CACV,oCACD,WAAsB,WAyClB,MAxCa,CACTmsW,aAAc,kBAAM,EAAKhjU,OAAO,YAAlB,EACd05U,yBAA0BrmX,KAAKqmX,yBAAyBvpX,KAAKkD,MAC7D+lc,2BAA4B,kBAAM,EAAKz/E,uBAAX,EAC5BprO,oBAAqBl7I,KAAKm9Y,4BAC1B6oD,2BAA4B,kBAAM,EAAKpoD,uBAAX,EAC5BzpR,cAAen0H,KAAKo9Y,eACpB17X,SAAU1hB,KACVquN,eAAgBruN,KAAKghc,gCACrB1yO,YAAatuN,KAAK2/J,sBAAsB,sBACxC8uD,kBAAmBzuN,KAAK2/J,sBAAsB,4BAC9C7gH,sBAAuB9+C,KAAK2/J,sBAAsB,yBAClDn/G,SAAUxgD,KAAK2sC,OAAO,YACtBwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/BixU,UAAW59W,KAAK0gc,iBAChBoB,YAAa9hc,KAAKqhc,SAAS1zF,eAAiB3tW,KAAKqhc,SAASl5C,cAC1DtqC,YAAa79W,KAAKq9Y,iBAClBn6B,kBAAmBljX,KAAKs9Y,uBACxBt9V,WAAYhgD,KAAK2sC,OAAO,cACxB+Q,YAAa19C,KAAK09C,YAClBW,OAAQr+C,KAAKoxY,sBAAsB,UACnCiK,wBAAyBr7Y,KAAK2sC,OAAO,2BACrC6nF,mBAAoBx0H,KAAKw0H,mBACzB+pP,iBAAkB,kBAAM,EAAKk+B,WAAa,EAAKA,WAAW9c,eAAephB,mBAAqB,CAA5E,EAClBw+B,uBAAwB,WACpB,IAAIriZ,EACJ,OAAO,QAAUA,EAAK,EAAK+hZ,kBAAe,IAAW/hZ,OAAK,EAASA,EAAGqiZ,wBACzE,EACD1kC,oBAAqB,WACjB,IAAI39W,EACJ,OAAO,QAAUA,EAAK,EAAK+hZ,kBAAe,IAAW/hZ,OAAK,EAASA,EAAG47W,gBACzE,EACD0Q,wBAAyB,iBAAM,aAAe,EAAKy5B,+BAA+B/3P,cAAzD,EACzBo4N,2BAA4B,kBAAM,EAAK27B,WAAWO,6BAAtB,EAC5B39P,kBAAmB,kBAAM4mT,GAAmB,EAAKxpD,WAAWp3Y,KAAzC,EACnBm6C,eAAgB,WACZ,IAAI9kD,EACJ,QAAUA,EAAK,EAAK+hZ,kBAAe,IAAW/hZ,GAAcA,EAAGiyC,OAAO,iBAAkB,EAAK61Z,oBAChG,EAGR,mCACD,WACI,OAAIxic,KAAKy8Y,WAAWypD,6BAA+Blmc,KAAK2sC,OAAO,qBACpD3sC,KAAK2sC,OAAO,oBAEhB,CACV,gDACD,WACI,OAAO3sC,KAAKoxY,sBAAsB,eACrC,oCACD,WACI,OAAOpxY,KAAKw8Y,eACf,iCACD,SAAiBn+V,GACb,IAAI3jD,EACJsF,KAAKkhc,4BAA8Blhc,KAAKuic,oBACxC,IAAI4D,EAAap1X,GAAE,SAASpC,SAAS3uE,KAAKglc,gBACtCc,EAAc9lc,KAAKgkZ,sBACnBoiD,EAAqBzH,GAAa3+b,KAAKqmc,uBAAuBnmD,UAC9DomD,EAAkBtmc,KAAKumc,iBAAiBloZ,EAAQynZ,GACpD9lc,KAAKy8Y,WAAaz8Y,KAAKmjK,iBAAiBgjS,EAAYC,EAAoBE,GACxEtmc,KAAK0gc,kBAAoB1gc,KAAKy8Y,WAAW+pD,iBAAiBxmc,KAAMA,KAAKymc,MACrEzmc,KAAKy8Y,WAAWiyC,sBAChB1ub,KAAKy8Y,WAAWywC,cAAcvnb,OAAO3F,KAAKoiZ,cAAcpoV,YACxDh6D,KAAK0mc,wBACLZ,EAAYhgX,YAAc,QAAUprF,EAAKsF,KAAKogc,eAAY,IAAW1lc,GAAcA,EAAGiyC,OAAO,cAAe3sC,KAAKy8Y,WAAWkqD,mBAC5H3mc,KAAKoiZ,cAAcz1W,OAAO,mBAAoB3sC,KAAK4mc,qBACtD,oCACD,WACI,IAAIlpZ,EAAc19C,KAAK2sC,OAAO,eAC1BqQ,EAAOh9C,KAAK6mc,eAAenpZ,GAG/B,MAAO,CACH68U,cAHYv9U,GAAQA,EAAKu9U,eAAiB,EAI1Cz0S,UAHY9oC,GAAQA,EAAK8oC,WAAa,KAK7C,+BACD,SAAe1sF,GAEX,IADA,IAAIwnD,EAAQ5gD,KAAK2sC,OAAO,SACfhkC,EAAI,EAAGA,EAAIi4C,EAAMjgD,OAAQgI,IAC9B,GAAIi4C,EAAMj4C,GAAGvP,OAASA,GAAQwnD,EAAMj4C,GAAGtD,OAASjM,GAAQwnD,EAAMj4C,KAAOvP,EACjE,OAAOwnD,EAAMj4C,EAGxB,sCACD,WAAwB,WACpB3I,KAAKoic,wBAA0B,IAAI/kb,GAAAA,GACnCrd,KAAK4lc,oBAAmB,WACpB5rX,GAAmB,EAAKyiU,WAAWziV,YACnC,EAAKyiV,WAAW69C,4BACnB,GACJ,iCACD,SAAiBj8Y,EAAQynZ,GAAa,IAC9Bprc,EAD8B,OAE9Bopc,EAAqB9jc,KAAKugc,yBAC1BxjZ,EAAY/8C,KAAK2sC,OAAO,aACxB2nU,EAAqB,YAAcv3T,EAAUz1B,MAAQ,aAAe,QAAU5sB,EAAKopc,EAAmB/mZ,iBAAc,IAAWriD,OAAK,EAASA,EAAG4sB,MAChJw/a,EAAoCxyF,MAAwBjmT,EAAAA,EAAAA,IAAUtR,EAAU46B,cAAgB,CAAC,aAAc,QAAQn9C,QAAO,SAAA51B,GAC9H,IAAIlK,EACJ,OAAOqiD,EAAU46B,cAAgB/yE,IAAS,QAAUlK,EAAKopc,EAAmB/mZ,iBAAc,IAAWriD,OAAK,EAASA,EAAGi9E,eAAiB/yE,CAC1I,IAAEjE,OAAS,GACR88C,EAAwBz9C,KAAK2sC,OAAO,0BAA4Bm6Z,GAAqCxnT,GAAet/I,KAAKw8Y,iBACzHh5Y,GAASiiD,EAAAA,GAAAA,GAAO,CAChB1F,UAAW//C,KAAK2sC,OAAO,aACvB0uG,gBAAiBr7I,KAAK2sC,OAAO,mBAC7Bo6Z,iBAAkB,kBAAM,EAAKprO,aAAX,EAClB0qJ,yBAA0BrmX,KAAKqmX,yBAAyBvpX,KAAKkD,MAC7Dy+C,WAAYz+C,KAAK2sC,OAAO,cACxBuR,eAAgBl+C,KAAK2sC,OAAO,kBAC5B4T,aAAcvgD,KAAK2sC,OAAO,gBAC1BsR,WAAYj+C,KAAK2sC,OAAO,cACxB6T,SAAUxgD,KAAK2sC,OAAO,YACtBsQ,UAAWj9C,KAAK2sC,OAAO,aACvBwR,kBAAmBn+C,KAAK2sC,OAAO,qBAC/B6Q,aAAcx9C,KAAK2sC,OAAO,gBAC1BwT,gBAAiBngD,KAAK2sC,OAAO,mBAC7ByT,yBAA0BpgD,KAAK2sC,OAAO,4BACtCuyG,cAAel/I,KAAK2sC,OAAO,iBAC3B4R,wBAAyBv+C,KAAK2sC,OAAO,2BACrCuT,sBAAuBlgD,KAAK2sC,OAAO,yBACnC6gZ,eAAgBxtb,KAAKoiZ,cAAcz1W,OAAO,SAC1C8Q,sBAAuBA,EACvB2vW,iBAAkBptZ,KAAK2sC,OAAO,oBAC9BinX,iBAAkB5zZ,KAAK2sC,OAAO,oBAC9BilX,qBAAsB5xZ,KAAK2sC,OAAO,wBAClCgnX,iBAAkB3zZ,KAAK2sC,OAAO,oBAC9B8gZ,2BAA4Bztb,KAAK2sC,OAAO,8BACxCsT,iBAAkBjgD,KAAK2sC,OAAO,oBAC9BmuL,mBAAoB,SAAAl9N,GAChB,EAAK+uC,OAAO,mBAAoB/uC,EAAKqiD,iBACxC,EACD7B,YAAap+C,KAAKoxY,sBAAsB,eACxCr0V,UAAWA,EACX4wY,aAAc3tb,KAAK2sC,OAAO,iBAC1B6nF,mBAAoBx0H,KAAKw0H,mBACzBw5T,gBAAiBhub,KAAK2sC,OAAO,UAC7BshZ,eAAgBjub,KAAK2sC,OAAO,SAC5B0Q,gBAAiBr9C,KAAK2sC,OAAO,mBAC7BohZ,qBAAsB/tb,KAAKgnc,wBAAwBlqc,KAAKkD,MACxD6tb,qBAAsB7tb,KAAKkua,oBAAoBpxa,KAAKkD,MACpD8tb,kBAAmB,SAAA5vb,GAAK,OAAI,EAAKyuC,OAAO,kBAAmBzuC,EAAnC,EACxBwwX,gBAAiB,kBAAMx8P,GAAAA,IAAAA,gBAA0B,EAAKkuU,QAArC,EACjBxS,YAAa,kBAAM,EAAKxrC,cAAc6kD,qBAAzB,EACbvZ,eAAgB1tb,KAAKknc,mBAAmB5yF,GACxC+mC,wBAAyBr7Y,KAAK2sC,OAAO,4BACtCm3Z,GAeH,OAdAtgc,EAAOke,SAAW1hB,KAClBwD,EAAO+2X,cAAgBurE,EAAYvrE,cACnC/2X,EAAOsiF,UAAYggX,EAAYhgX,UAC/BtiF,EAAO66C,OAASA,EAChB76C,EAAO87C,YAAct/C,KAAK2/J,sBAAsB,eAChDn8J,EAAO+7C,kBAAoBv/C,KAAK2/J,sBAAsB,qBACtDn8J,EAAOuhF,YAAc/C,GAAAA,SAAmB,IAAIl/E,KAAK9C,KAAKu1Q,YAAY,iBAClE/xQ,EAAO48I,cAAgB58I,EAAOg6C,aAAe,GAC7Ch6C,EAAOgqb,gBAAiB,EACxBhqb,EAAO4pZ,iBAAmB5pZ,EAAO4pZ,iBAAmBptZ,KAAK+qK,aAAavnK,EAAO4pZ,kBAAoB,KACjG5pZ,EAAOowZ,iBAAmBpwZ,EAAOowZ,iBAAmB5zZ,KAAK+qK,aAAavnK,EAAOowZ,kBAAoB,KACjGpwZ,EAAOouZ,qBAAuBpuZ,EAAOouZ,qBAAuB5xZ,KAAK+qK,aAAavnK,EAAOouZ,sBAAwB,KAC7GpuZ,EAAOmwZ,iBAAmBnwZ,EAAOmwZ,iBAAmB3zZ,KAAK+qK,aAAavnK,EAAOmwZ,kBAAoB,KACjGnwZ,EAAOwic,2BAA6B,kBAAM,EAAKpoD,uBAAX,EAC7Bp6Y,CACV,mCACD,SAAmB8wW,GACf,OAAOt0W,KAAK2sC,OAAO,oBAAqBmU,EAAAA,EAAAA,OAAewzT,CAC1D,mCACD,SAAmB/2W,GACf,GAAIyC,KAAKktD,SAASytG,OAAO,iCAAkC,CACvD,IAAIwsS,EAAQ5xa,YAAW,WACnBh4B,IACA+3B,aAAa6xa,EAChB,IACDnnc,KAAK+ic,sBAAsB3ic,KAAK+mc,EACnC,MACG5pc,GAEP,uCACD,WACI,OAAOyC,KAAK09C,WACf,sCACD,SAAsBlO,GAClB,OAAIxvC,KAAK09C,kBAAe,IAAW19C,KAAK09C,YAAYlO,GACzCxvC,KAAK09C,YAAYlO,GAErBxvC,KAAK2sC,OAAO6C,EACtB,wCACD,SAAwBA,GACpB,IAAIs0Z,EAAqB9jc,KAAKugc,yBAC9B,OAAIuD,GAAsBA,EAAmBt0Z,GAClCxvC,KAAK+qK,aAAa+4R,EAAmBt0Z,IAEzCxvC,KAAK8qK,qBAAqBt7H,EACpC,8BACD,SAAciuV,EAAUjuV,EAAYtxC,GAChC,IAAI4lc,EAAqB9jc,KAAKugc,yBACzBuD,IAAuBz1Y,EAAAA,EAAAA,IAAUy1Y,EAAmBt0Z,KACrDxvC,KAAK,IAAIiQ,OAAOwtX,IAAW9wV,OAAO6C,EAAYtxC,EAErD,kCACD,SAAkBmgD,GAAQ,WACtBr+C,KAAKwlc,yBACExlc,KAAKy8Y,WACZz8Y,KAAKylc,iBAAiBpnZ,GAClBr+C,KAAKkhc,6BACLlhc,KAAKoiZ,cAAcz1W,OAAO,CACtBq2U,eAAgBhjX,KAAKy8Y,WAAWipD,oBAChCziF,gBAAiBjjX,KAAKy8Y,WAAWkpD,uBAErC3lc,KAAK4lc,oBAAmB,kBAAM,EAAKxD,wBAAwBxjc,SAAnC,IAE/B,gCACD,WACIoB,KAAKoiZ,cAAcpoV,WAAWkV,SAC9BlvE,KAAKy8Y,WAAW/pQ,WAChB1yI,KAAKy8Y,WAAWziV,WAAWt8D,SAC3BsC,KAAK2sC,OAAO,mBAAoB,GACnC,uCACD,WACI,OAAO3sC,KAAKy8Y,WAAW5sE,eAC1B,gDACD,WACI,OAAO7vU,KAAKy8Y,WAAWoM,wBAC1B,6BACD,WACI,OAAO7oZ,KAAKy8Y,UACf,0BACD,WACI,OAAOz8Y,KAAKogc,OACf,4BACD,WACI,IAAI1lc,EACJ,QAAUA,EAAKsF,KAAK0ic,yBAAsB,IAAWhoc,GAAcA,EAAG6xC,SACzE,2CACD,SAA2B0oF,EAAgBmyU,EAAmBzyU,EAAep3H,EAAU8pc,EAAWC,EAAgBh+E,EAAW3pU,GAAoB,WACzIqwF,EAAiB9b,GAAyBl0H,KAAKo9Y,eAAgB,iBAAkBnoR,GACrF,GAAK0a,KAAyBM,mBAAmBD,GAAgBE,SAAYlwI,KAAKqhc,SAAS1zF,cAK3F,OADehuT,GAAsB3/C,KAAK2sC,OAAO,uBAE7C,IAAK,SACDpvC,IACA,MACJ,IAAK,aACDyC,KAAKunc,8BAA8BtyU,EAAgBmyU,EAAmBzyU,EAAe0yU,EAAWC,EAAgBh+E,GAChH,MACJ,QACQA,IACAA,EAAUtoU,OAAS,IAAI3jC,GAAAA,IAE3Brd,KAAKwnc,6BAA6BH,GAAWz4Y,MAAK,SAAA64Y,GAC9CA,IAAgB5I,IAAkCthc,IAClDkqc,IAAgB5I,IAAqC,EAAK0I,8BAA8BtyU,EAAgBmyU,EAAmBzyU,EAAe0yU,EAAWC,EAAgBh+E,EACxK,IAAEh6T,MAAK,kBAAM,EAAK8yV,cAAc7/B,oBAAoB+G,EAA7C,SAlBZ/rX,GAoBP,8CACD,SAA8B03H,EAAgByyU,EAAmB/yU,EAAe0yU,EAAWC,EAAgBh+E,GAAW,WAC9G/7P,E9at7CuB,SAACA,EAAaoH,EAAeR,EAAeK,GAC3E,IAAI9I,EAAqBspB,IAAyBj8H,EAAAA,EAAAA,GAAS,CAAC,EAAGw0G,GAAc4G,EAAeK,GAE5F,OADA9I,EAAmBypB,oBAAsBD,GAA0BxpB,EAAoBiJ,GAChFjJ,CACV,C8ak7CyBi8U,CAAsB1yU,EAAgBN,EAAe30H,KAAKo9Y,eAAgBp9Y,KAAK6/b,qBAC7F+H,GAAuB7ub,EAAAA,EAAAA,GAAS,CAAC,EAAG2ub,UACjCE,EAAqB5nc,KAAKo9Y,eAAerpV,KAAKnU,gCAC9CgoZ,EAAqB5nc,KAAKo9Y,eAAerpV,KAAKlU,2BAE9C+nZ,EADe5nc,KAAK49Y,wBAAwBt4O,UAEpB+hS,IAAcC,GAEzCtnc,KAAKswW,eAAes3F,GAEpBN,GACAtnc,KAAK0ic,kBAAkB50X,KAAK85X,EAAsB,CAC9C94F,kBAAkB,EAClBjpV,OAAQ2oV,GACRI,YAAa,CACT4B,kBAAmBv7O,EACnBw7O,mBAAoBljP,EAAYhmF,YAGxCvnC,KAAK6nc,qBAAuB5yU,GAE5Bj1H,KAAKmiZ,mBAAmBltR,EAAgB1H,EAAYhmF,UAAU,WAC1D,EAAK66W,cAAc7/B,oBAAoB+G,EAC1C,GAAEA,EAEV,2CACD,SAA2B/7P,EAAaoH,GACpC,IAAInxH,EAAS,GAKb,OAJI+pH,EAAY4nB,qBACZ3xI,EAAOpD,KAAKmtH,EAAY4nB,qBAE5B3xI,EAAOpD,KAAKJ,KAAK8nc,mBAAmBnzU,EAAepH,EAAYznC,UAAWynC,EAAYzB,SAC/EtoH,EAAOiJ,MACjB,mCACD,SAAmBwnB,EAAM6xD,EAAWuvC,GAEhC,OADAA,GAAYphG,EAAKirD,SAAS4G,EAAUlE,WAAYkE,EAAUtD,aAAcsD,EAAUrD,aAAcqD,EAAUpD,mBACnGkyC,GAAAA,cAAgC3gG,EAAMghH,GAChD,6CACD,SAA6BoyT,GACzB,IAAIjtc,EAAUgwH,GAAAA,OAA2Bi9U,EAAY,6CAA+C,4CAChGU,EAAa39U,GAAAA,OAA2Bi9U,EAAY,4CAA8C,2CAClGW,EAAiB59U,GAAAA,OAA2Bi9U,EAAY,gDAAkD,+CAkB9G,OAjBArnc,KAAKqkc,kBAAoB4D,GAAa,CAClCxqN,YAAarjP,EACb26O,iBAAiB,EACjBN,WAAW,EACXoJ,QAAS,CAAC,CACNl3O,KAAMohc,EACNzqR,QAAS,kBAAMuhR,EAAN,GACV,CACCl4b,KAAMqhc,EACN1qR,QAAS,kBAAMuhR,EAAN,IAEb7gN,aAAc,CACVx+B,YAAa,CACT32C,MAAO,gBAIZ7oK,KAAKqkc,kBAAkBv2X,MACjC,gCACD,SAAgBmnD,GAAgB,WACxBizU,EAAuB,SAAAj0a,GAAI,OAAIA,EAAO,EAAKugG,mBAAmBE,WAAWzgG,EAAM,CAC/EtxB,KAAM,kBACL,CAF0B,EAG3Bwlc,EAAc,SAAAl0a,GAAI,OAAK0nC,MAAM,IAAI74D,KAAKmxB,GAAMyhC,UAA1B,EAClB0yY,EAAapoc,KAAKqoc,oBAClB96U,EAAcynB,GAAyB/f,EAAgBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBACjF2pT,EAAgB+pB,EAAqBE,EAAWtiX,WAChDs4V,EAAc8pB,EAAqBE,EAAWriX,SAC9CovR,EAAuB,IAAIryW,KAAKyqH,EAAYznC,WAC5CsvR,EAAqB,IAAItyW,KAAKyqH,EAAYxnC,SAC1CuiX,EAAoBnqB,GAAiBhpE,EACpCgzF,EAAYhzF,KACbA,EAAuBmzF,GAEtBH,EAAY/yF,KACbA,EAAqBgpE,GAEzB,IAAIvyZ,EAAWupV,EAAmB1/S,UAAYy/S,EAAqBz/S,UAEnE,GAD6B11D,KAAKy8Y,WAAW8rD,qBAAuBJ,EAAY56U,EAAYznC,YAAcqiX,EAAYhqB,GAC1F,CACxB,IACc7+V,EACV0C,GAAAA,SACA8D,EAAY9lF,KAAKw0H,mBAAmBE,WAAWnH,EAAYznC,UAAW,CACtEnjF,KAAM,WAEN6lc,EAAW1iX,EAAUpwB,UAAY4pB,EAASwG,GAAWpwB,UACzD4yY,EAAoB,IAAIxlc,KAAKw8E,EAAS8oX,EAAWtiX,WAAWpwB,UAAY8yY,GACxEF,EAAoBtoc,KAAKw0H,mBAAmBE,WAAW4zU,EAAmB,CACtE3lc,KAAM,YAEb,CACD,IAAIa,EAASwxI,GAAyB,CAAC,EAAGh1I,KAAKo9Y,eAAgBp9Y,KAAKw0H,yBAChE,IAAW4zU,EAAWt8U,SACtBtoH,EAAOsoH,OAASs8U,EAAWt8U,QAE/BtoH,EAAOsiF,UAAYwiX,EACnB,IAAIG,EAAkB,IAAI3lc,KAAKwlc,EAAkB5yY,UAAY7pC,GAI7D,GAHI7rB,KAAK+zW,uBAAuB9+O,KAAoBzxH,EAAOsoH,QAAU9rH,KAAKy8Y,WAAWlpC,qBACjFk1F,EAAkBzoc,KAAKy8Y,WAAW3nQ,iBAAiBwzT,IAEnD/6U,EAAYzB,SAAW9rH,KAAKy8Y,WAAWlpC,qBAAuBvzW,KAAKy8Y,WAAW8rD,oBAAqB,CACnG,IAAIG,EAAW,IAAI5lc,KAAKwlc,GACxBI,EAASxpX,SAAS,GAEd,KADJupX,EAAkB,IAAI3lc,KAAK4lc,EAAShzY,UAAY7pC,IACtB+1D,YACtB6mX,EAAgBvpX,SAASl/E,KAAKoxY,sBAAsB,cAE3D,CACD,IAAIk2C,EAAiBvyT,GAAAA,4BAA0CogP,EAAsBC,EAAoBkzF,EAAmBG,GAC5Hjlc,EAAOuiF,QAAU,IAAIjjF,KAAK2lc,EAAgB/yY,UAAY4xX,GACtD,IAAIqhB,EAAYnlc,EAAO+jC,SAEvB,OzartC8B,SAACwY,EAAWo0E,EAAe5G,EAAalvE,GAC1E,IAAIuqZ,EAAkBz0U,EAAcC,OACpC,IAAK,IAAIh7H,KAAQilD,EAAQ,CACrB,IAAIm8F,EAAen8F,EAAOjlD,GACtB8E,EAAQs7I,GAAmBz5F,EAAW3mD,GAAQk+I,GAAYkD,GAAgBA,EAC9EouT,EAAgBxvc,GAAMm0H,EAAarvH,EACtC,CACJ,Cya6sCO2qc,CAAyB7oc,KAAK2sC,OAAO,aAAc3sC,KAAKqmX,2BAA4BsiF,EAAWP,EAAW/pZ,QACnGsqZ,CACV,uCACD,SAAuBp7U,EAAa/gH,GAChC,IAAIgpH,EAAWtD,GAAAA,cAAAA,uBAA2C1lH,GACtDwQ,EAAOk1G,GAAAA,cAAAA,mBAAuC1lH,GAC9C0ob,EAAmBnkX,GAAEvkE,GAASlS,KAAK0F,KAAKoiZ,cAAcnwL,iBACtD3yH,EAAU01C,GAAyBznB,EAAavtH,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBAC1E8qR,EAAkBhgT,EAAQh0E,QAC9B,GAAItrB,KAAK+hc,aAAeziW,EAAQ6nR,YAAa,CACzC,IACoBrC,EAChBtvP,EADAsvP,eAEJw6B,EAAgBx5T,UAAYouC,GAAyBl0H,KAAKo9Y,eAAgB,YAAat4B,GACvFw6B,EAAgBv5T,QAAUmuC,GAAyBl0H,KAAKo9Y,eAAgB,UAAWt4B,EACtF,MAAUtvP,IACP8pR,EAAgBx5T,UAAY9oE,EAAOA,EAAKwzV,kBAAkB1qR,UAAYwZ,EAAQxZ,UAC9Ew5T,EAAgBv5T,QAAU/oE,EAAOA,EAAKwzV,kBAAkBzqR,QAAUuZ,EAAQvZ,SAE9E,IAAI+iX,EAAyBxpD,EAAgB/3W,SAQ7C,OAPI/6B,GACAxM,KAAK+oc,gCAAgCD,EAAwBt8b,EAAS0ob,GAEtEl4a,IACA8rb,EAAuBE,iBAAmB,IAAIlmc,KAAKka,EAAKuwG,YAAYznC,WACpEgjX,EAAuBG,eAAiB,IAAInmc,KAAKka,EAAKuwG,YAAYxnC,UAE/D+iX,CACV,0BACD,SAAU3qF,EAASt4V,GACf7lB,KAAKijc,YAAY9kF,GAAWkjC,GAAWljC,GAAWt4V,CACrD,qBACD,SAAKs4V,GACD,IAAI5gX,EAAWyC,KAAKijc,YAAY9kF,GAC5BvgX,EAAOiH,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,WACtC,KAAK+2C,EAAAA,EAAAA,IAAWtxD,GACZ,MAAM+hB,GAAAA,MAAa,QAAS6+V,GAEhC,OAAO5gX,EAASwa,MAAM/X,KAAMpC,EAAKmH,MAAM,GAC1C,kCACD,WACI,OAAO/E,KAAKy8Y,WAAWysD,wBAC1B,mCACD,SAAmBvxb,EAAQs9G,EAAgBk0U,EAAmB7/E,GAC1D,IAAI8/E,EAAkB,CAClBlR,QAASjjU,EACTo0U,SAAS5jZ,EAAAA,GAAAA,GAAO,CAAC,EAAG9tC,GACpBqpC,QAAQ,GAERsoZ,EAAoB,SAASlqc,GAI7B,GAHI+pc,GACAA,EAAkB1qc,KAAKuB,MAEvBZ,GAAO,UAAYA,EAAIhG,KACvB,MAAMgG,CAEb,EAACtC,KAAKkD,MAKP,OAJAA,KAAKwhN,SAASo9O,IAA0BwK,GACpC9/E,KAAc/yT,EAAAA,EAAAA,IAAW+yT,EAAUtoU,UACnCsoU,EAAUtoU,OAAS,IAAI3jC,GAAAA,IAEpBrd,KAAKklc,qBAAqBkE,GAAkB,SAAS55F,GAAU,WAC9DjhT,EAAW,IAAIlxC,GAAAA,GACnB,GAAKmyV,EAWD85F,IACA/6Y,EAAS3vD,cAZE,CACXoB,KAAKupc,mBAAmBt0U,GACxB,IACI1mE,EAAWvuD,KAAK49Y,wBAAwB5xW,OAAOr0B,EAAQs9G,GAAgBrmE,MAAK,WACxE06T,GAAaA,EAAUtoU,OAAOpiD,SAAQ,EACzC,IAAEy3D,QAAO,SAAAmzY,GAAgB,OAAI,EAAKC,wBAAwB7K,GAAyB4K,EAA1D,IAA6El6Y,MAAK,kBAAMg6Y,GAAN,GAI/G,CAHC,MAAOlqc,GACLkqc,EAAkBlqc,GAClBmvD,EAAS3vD,SACZ,CACJ,CAID,OAAO2vD,EAASjxC,SACnB,GACJ,qCACD,SAAqBosb,EAAensc,GAAU,WACtCgxD,EAAW,IAAIlxC,GAAAA,GACfssb,EAAkB,SAAArzY,IAClBjH,EAAAA,GAAAA,KAAKoH,EAAAA,GAAAA,IAAYH,IAAiBD,OAAO9H,EAAS3vD,QACrD,EAWD,OAVI43D,EAAAA,EAAAA,IAAUkzY,EAAc1oZ,SACxBqO,EAAAA,GAAAA,KAAKoH,EAAAA,GAAAA,IAAYizY,EAAc1oZ,SAASqV,QAAO,SAAArV,IACtCqN,EAAAA,EAAAA,IAAUrN,KACXA,EAAS,aAAe0oZ,EAAc1oZ,OAAOtY,SAEjDiha,EAAgBpsc,EAASkB,KAAK,EAAMuiD,GACvC,IAED2oZ,EAAgBpsc,EAASkB,KAAKuB,KAAM0pc,EAAc1oZ,SAE/CuN,EAASjxC,SACnB,mCACD,SAAmBiwG,IACVvtH,KAAKwic,qBAAuBxic,KAAK+zW,uBAAuBxmP,IACzDvtH,KAAKy8Y,WAAW9vW,OAAO,kBAAkB,EAEhD,wCACD,SAAwBswN,EAAausM,EAAkBj8U,GACnD,IAAI3vH,EAAO,CACPyxW,gBAAiB9hP,GAAei8U,GAEhCA,aAA4Bjvc,MAC5BqD,EAAKyB,MAAQmqc,EAEbxpc,KAAK0ic,kBAAkB7hZ,SAAW7gD,KAAK0ic,kBAAkB10X,OAE7DhuE,KAAKwhN,SAASy7C,GAAar/P,GAC3BoC,KAAKu4M,yBACR,wCACD,WACI,OAAOv4M,KAAKoiZ,aACf,iCACD,WACI,OAAOpiZ,KAAK8zV,cACf,6CACD,WACI,OAAO9zV,KAAKwjZ,mBAAmB/C,8BAClC,2BACD,WACI,OAAOzgZ,KAAKwhN,QACf,uCACD,SAAuBvsF,GACnB,IAAI1H,EAAcynB,GAAyB/f,EAAgBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBACrF,OAAO/I,GAA0B8B,EAAavtH,KAAKoxY,sBAAsB,gBAAiBpxY,KAAKoxY,sBAAsB,cAAepxY,KAAKoxY,sBAAsB,mBAClK,kCACD,SAAkBzzT,EAAKs3C,EAAgB31C,GAAU,WACzCm1C,EAAyB,SAAAxgG,GAAI,OAAI,EAAKugG,mBAAmBE,WAAWzgG,EAAM,CAC1EtxB,KAAM,UADuB,EAG7B4qH,EAAcynB,GAAyB/f,EAAgBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBACjF1uC,EAAY,IAAIhjF,KAAKyqH,EAAYznC,WACjCC,EAAU,IAAIjjF,KAAKyqH,EAAYxnC,SAGnC,GAFAD,EAAY2uC,EAAuB3uC,GACnCC,EAAU0uC,EAAuB1uC,GAC7BpI,EAAIjoB,YAAcqwB,EAAQrwB,UAC1B,OAAOowB,EAAUpwB,YAAcqwB,EAAQrwB,UAEvC4pB,IACA3B,EAAMqE,GAAAA,SAAmBrE,GACzBmI,EAAY9D,GAAAA,SAAmB8D,GAC/BC,EAAU/D,GAAAA,SAAmB+D,IAEjC,IAAI6jX,EAAejsX,EAAIjoB,UACnBm0Y,EAAqB/jX,EAAUpwB,UAC/Bo0Y,EAAmB/jX,EAAQrwB,UAC/B,OAAOm0Y,GAAsBD,GAAgBA,GAAgBE,CAChE,gDACD,SAAgC70U,EAAgBzoH,EAAS0ob,GACrD,IAAI72Y,EAASr+C,KAAKoxY,sBAAsB,UACxC,GAAI,OAAS/yV,QAAU,IAAWA,OAAS,EAASA,EAAO19C,OAAQ,CAC/D,IAEIopc,EACAC,EAHApB,EAAkB5oc,KAAKqmX,2BAA2BjyP,OAClD8rR,EAAYlgZ,KAAKy8Y,WAGjBz8Y,KAAK+hc,aACLgI,EAAY,WACR,IAAIE,EAAejqc,KAAKwjZ,mBAAmB7F,aAAau3C,GACxD,OAAOh8S,GAAc+wT,EAAa,GAAGzxT,WAAYx4I,KAAK28Y,eAAehwW,OAAO,UAC/E,EACDq9Z,EAAsB,SAASlrc,EAAGy2F,GAC9BqzW,EAAgBrzW,EAAMn8F,MAAM67H,EAAgB1/B,EAAMx3E,GACrD,IAEDgsb,EAAY,WACR,IAAInkF,EAAU1zP,GAAAA,cAAAA,uBAA2C1lH,IAAY,CAAC,EACtE,OAAO0zY,EAAUgqD,yBAAyB,CACtCtla,KAAMghV,EAAQhhV,KACdH,IAAKmhV,EAAQnhV,MACd4Z,MACN,EACD2rZ,EAAsB,SAAS3rY,EAAOngE,GAClC0qc,EAAgBvqY,GAAO42D,EAAgB/2H,EAC1C,IAEL2uD,EAAAA,EAAAA,IAAKk9Y,EAAUtrc,KAAKuB,MAAOgqc,EAC9B,CACJ,iCACD,WACI,IAAItvc,EACJ,OAAO,QAAUA,EAAKsF,KAAKy8Y,kBAAe,IAAW/hZ,OAAK,EAASA,EAAGs4Y,kBACzE,+BACD,WACI,OAAOhzY,KAAKy8Y,WAAWe,gBAC1B,wCACD,SAAwBypB,EAAUrrR,GAC9B,IAAIlwB,EAAqBspB,GAAyB,CAAC,EAAGh1I,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBAChF9I,EAAmBI,OAASm7S,EAASn7S,OACrCJ,EAAmB5lC,UAAY9lF,KAAKw0H,mBAAmBE,WAAWuyS,EAASnhV,UAAW,CAClFnjF,KAAM,aAEV+oH,EAAmB3lC,QAAU/lF,KAAKw0H,mBAAmBE,WAAWuyS,EAASlhV,QAAS,CAC9EpjF,KAAM,aAEV,IAAIwnc,GAAoB1kZ,EAAAA,GAAAA,GAAOimE,EAAmBnkF,SAAUq0G,GAC5D57I,KAAKgiZ,qBAAqBmoD,GAAmB,EAChD,qCACD,SAAqBl1U,EAAgBm1U,EAAsBtB,GAAwB,WAC3EuB,GAA4Btxb,EAAAA,EAAAA,GAAS,CAAC,EAAG+vb,GACzCuB,WACOA,EAA0BrB,wBAC1BqB,EAA0BpB,gBAErC,IAAI17U,EAAcynB,GAAyBq1T,GAA6Bp1U,EAAgBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBAC9G81U,GAAyB7kZ,EAAAA,GAAAA,GAAO,CAAC,EAAGwvE,EAAgBo1U,GACpDE,EAAsB,OAASH,QAAwB,IAAWA,EAAuBA,GAAuBxuY,EAAAA,EAAAA,IAAcq5D,IAC9Hr5D,EAAAA,EAAAA,IAAcq5D,KACdA,EAAiBj1H,KAAKwqc,0BAEtBD,UACOvqc,KAAK6nc,qBACZ7nc,KAAKqhc,SAAStC,aAAe/+b,KAAK0ic,kBAAkB50X,KAAKmnD,EAAgB,CACrE65O,kBAAkB,EAClBjpV,OAAQ2oV,MAGZxuW,KAAKkiZ,2BAA2BjtR,EAAgBq1U,EAAwB/8U,EAAYznC,WAAW,WAC3F,EAAK+hX,qBAAuB5yU,EAC5B,EAAKytU,kBAAkB50X,KAAKmnD,EAAgB,CACxC65O,iBAAkB,EAAKuyF,SAAS1zF,cAChC9nV,OAAQ2oV,IAEf,IAAE,GAAO,EAEjB,uCACD,WACI,IAAIhrW,EAAS,CAAC,EACV2qH,EAAOnsC,GAAAA,mBACP8D,EAAY,IAAIhjF,KAAK9C,KAAK2sC,OAAO,gBACjCo5C,EAAU,IAAIjjF,KAAKgjF,EAAUpwB,UAAY11D,KAAK2sC,OAAO,gBAAkBwhF,EAAK,WAGhF,OAFA+F,GAAyBl0H,KAAKo9Y,eAAgB,YAAa55Y,EAAQsiF,GACnEouC,GAAyBl0H,KAAKo9Y,eAAgB,UAAW55Y,EAAQuiF,GAC1DviF,CACV,qCACD,SAAqBinc,GACjB,IAAI/vc,GACA,QAAUA,EAAKsF,KAAK0ic,yBAAsB,IAAWhoc,OAAK,EAASA,EAAGmmD,WACtE4pZ,GAAezqc,KAAK0ic,kBAAkB9xF,mBACtC5wW,KAAK0ic,kBAAkB10X,OAE9B,uCACD,SAAuBu/C,EAAa/gH,EAASqyY,GACzC,GAAItxR,EAAa,CACb,IAAIiI,EAAWtD,GAAAA,cAAAA,uBAA2C1lH,GACtD4uI,EAAoB,CACpBE,SAAUujQ,GAAuBtxR,EACjCirB,WAAY,OAAShjB,QAAY,IAAWA,OAAW,EAASA,EAASgjB,WACzEn6F,OAAQr+C,KAAK2sC,OAAO,WAGpBs5U,EADuBjmX,KAAKm9Y,2BACZutD,CAAqBtvT,GACrCp+H,EAAO,IAAI4hY,GAAuBrxR,EAAasxR,EAAqB54B,GACxEjmX,KAAKu/Y,2BAA2B/yY,EAAS,CAACwQ,GAC7C,CACJ,0CACD,WAA4B,WACxB,OAAO,SAAAo+H,GACH,IAAID,EAAiB,CACjBp7F,UAAW,EAAKpT,OAAO,aACvBwnF,cAAe,EAAKkyP,2BACpBhrO,gBAAiB,EAAK1uG,OAAO,mBAC7BiuG,kBAAmB,EAAKjuG,OAAO,sBAEnC,OAAOuuG,GAAoBC,EAAgBC,EAC9C,CACJ,2CACD,SAA2BzjI,EAAQrd,EAAM8C,GAAS,WAC1CqT,EAAM,CACNuwC,QAAQ,EACRu0E,aAAcj7H,EAAKyJ,KAAI,SAAAa,GACnB,IAAIpB,EAAS,CACT6rW,gBAAiBzqW,EAAK2oH,YACtBo9U,wBAAwB5xb,EAAAA,EAAAA,GAAS,CAAC,EAAGnU,EAAKi6Y,qBAC1Cl2X,MAAO/jB,EAAK+jB,OAEhB,GAAI/jB,EAAK4wH,SAASx4G,KAAM,CACpB,IAAI,EAGApY,EAAK4wH,SAASx4G,KAAKuwG,YAFRznC,EADf,EACIA,UACSC,EAFb,EAEIA,QAEJviF,EAAOmnc,uBAAuB3B,iBAAmBljX,EACjDtiF,EAAOmnc,uBAAuB1B,eAAiBljX,CAClD,CACD,OAAOviF,CACV,IACD80R,cAAe3gR,GAEnB3X,KAAK2/J,sBAAsB,8BAA3B3/J,CAA0DyQ,GACtDzQ,KAAKihc,oBAAoB2J,eAAejzb,GACxC3X,KAAK6hZ,yBAEL7hZ,KAAKklc,qBAAqBz0b,GAAK,SAAA++V,IAC1BA,GAAY,EAAKyxF,oBAAoBnzX,KAAKn2D,EAAQrd,GAAMye,EAAAA,EAAAA,IAASA,EAAAA,EAAAA,GAAS,CAAC,EAAG,EAAK8xb,sCAAuCztc,GAC9H,GAER,uCACD,WACI4C,KAAKihc,qBAAuBjhc,KAAKihc,oBAAoBjzX,MACxD,6BACD,SAAakS,EAAOE,EAASnsD,GACzB3U,GAAAA,IAAW,QAAS,cAAe,eAAgB,OAAQ,qCAC3Dtf,KAAKy8Y,WAAWw7C,aAAa/3W,EAAOE,EAASnsD,EAChD,yBACD,SAASA,EAAMoqB,EAAQytE,GACnB9rH,KAAKy8Y,WAAWpsU,SAASp8C,EAAMoqB,EAAQytE,EAC1C,8CACD,WACI,IAAI/uE,EAAY/8C,KAAK2sC,OAAO,aAEXgrC,EAEb56B,EAFA46B,YAIJ,MADyB,YADrB56B,EADAz1B,OAG0B,eAAiBqwD,GAAe,SAAWA,EAC5E,+BACD,SAAes9C,GAAgB,WACvB1H,EAAcynB,GAAyB/f,EAAgBj1H,KAAKo9Y,eAAgBp9Y,KAAKw0H,oBACrFjH,EAAY5mH,KAAO4mH,EAAY5mH,MAAQ,GACvC,IAAImkc,EAAwBv9U,EAAYhmF,QAAO,GAC3Cwja,EAAgB,CAChB17F,gBAAiBy7F,EACjB9pZ,QAAQ,GAGZ,OADAhhD,KAAKwhN,SAASo9O,IAAwBmM,GAC/B/qc,KAAKklc,qBAAqB6F,GAAe,SAAAv7F,GAC5C,OAAIA,GACQ,IAAInyV,GAAAA,IAAUze,WAE1B,EAAK2qc,mBAAmBuB,GACjB,EAAKltD,wBAAwB7vW,IAAI+8Z,GAAuBz0Y,QAAO,SAAAmzY,GAAgB,OAAI,EAAKC,wBAAwB7K,GAAuB4K,EAAxD,IACzF,GACJ,kCACD,SAAkB7xb,EAAQ41G,GACtB,OAAOvtH,KAAKmiZ,mBAAmBxqY,EAAQ41G,EAC1C,kCACD,SAAkB0H,GACd,IAAIowU,EAAkBrlc,KAAKslc,0BAA0BrwU,GACrDj1H,KAAKulc,yBAAyBtwU,EAAgBowU,EACjD,0CACD,SAA0BpwU,EAAgB8vP,GACtC,IAAIsgF,EAAkB,CAClBh2F,gBAAiBp6O,EACjB8vP,wBAAyBA,EACzB/jU,QAAQ,GAGZ,OADAhhD,KAAKwhN,SAASo9O,IAA0ByG,GACjCA,CACV,yCACD,SAAyBpwU,EAAgBowU,GACrCrlc,KAAKklc,qBAAqBG,GAAkB,SAAS71F,GAAU,WACtDA,GACDxvW,KAAK49Y,wBAAwBlgZ,OAAOu3H,GAAgB5+D,QAAO,SAAAmzY,GAAgB,OAAI,EAAKC,wBAAwB7K,GAAyB4K,EAAkBv0U,EAA5E,GAElF,GACJ,iCACD,SAAiB1H,EAAat5F,EAAM0rB,GAAoB,WACpD3/C,KAAKkiZ,2BAA2B30R,EAAa,CAAC,EAAGt5F,GAAM,WACnD,EAAKsxa,yBAAyBh4U,EAAa,CACvCvsE,QAAQ,GAEf,IAAE,GAAM,EAAO,KAAMrB,EACzB,sBACD,WACQ3/C,KAAK6nc,qBACL7nc,KAAKoiZ,cAAc/7X,QAEnBrmB,KAAKy8Y,WAAWp2X,OAEvB,kCACD,WACI,OAAOgoC,EAAAA,EAAAA,IAAUruD,KAAK2sC,OAAO,mBAAqB3sC,KAAK2sC,OAAO,kBAAoBy7E,GAAAA,qBACrF,+CACD,WACI,GAAKpoH,KAAK49Y,wBAAwBotD,iBAAlC,CAGA,IAAIC,IAAkBjrc,KAAK6mc,eAAe,UACtCqE,IAAelrc,KAAK49Y,wBAAwBt4O,QAC5C2lS,IAAkBC,GAClB5rb,GAAAA,IAAW,QAJd,CAMJ,sCACD,WA3yDkB,IA4yDGtf,KAAKoxY,sBAAsB,cACzBpxY,KAAKoxY,sBAAsB,iBAC3BpxY,KAAKoxY,sBAAsB,kBACuB,GACjE9xX,GAAAA,IAAW,QAElB,kCACD,WACI,IAAIihC,EAAevgD,KAAKoxY,sBAAsB,gBAC1CnzV,EAAaj+C,KAAKoxY,sBAAsB,cAC5CxyP,GAAiBr+F,EAActC,EAClC,iCACD,WACI,OAAOj+C,KAAKy8Y,WAAWkD,YAC1B,OA3vDCrjW,CAAkBsoJ,IA6vDxBtoJ,GAAUmG,QAAQwlD,IAClBuqE,GAAkB,cAAel2H,IACjC,IGj9DA,GHi9DA,sCIx9DA,IAAI6uZ,EAAUlob,EAAQ,MAMlBmob,EAAgB,CAClBC,mBAAmB,EACnBC,aAAa,EACbC,cAAc,EACd5yb,cAAc,EACdD,aAAa,EACb8yb,iBAAiB,EACjBC,0BAA0B,EAC1BhxR,0BAA0B,EAC1B/1J,QAAQ,EACRwa,WAAW,EACX75B,MAAM,GAEJqmc,EAAgB,CAClBtyc,MAAM,EACNuH,QAAQ,EACRqH,WAAW,EACX2jc,QAAQ,EACRC,QAAQ,EACR9zb,WAAW,EACX+zb,OAAO,GASLC,EAAe,CACjB,UAAY,EACZp8Z,SAAS,EACT/2B,cAAc,EACdD,aAAa,EACbwmB,WAAW,EACX75B,MAAM,GAEJ0mc,EAAe,CAAC,EAIpB,SAASC,EAAW56a,GAElB,OAAI+5a,EAAQc,OAAO76a,GACV06a,EAIFC,EAAa36a,EAAS,WAAiBg6a,CAC/C,CAXDW,EAAaZ,EAAQe,YAhBK,CACxB,UAAY,EACZ59Z,QAAQ,EACR31B,cAAc,EACdD,aAAa,EACbwmB,WAAW,GAYb6sa,EAAaZ,EAAQgB,MAAQL,EAY7B,IAAI7tc,EAAiBD,OAAOC,eACxBy9C,EAAsB19C,OAAO09C,oBAC7B41X,EAAwBtza,OAAOsza,sBAC/B86B,EAA2Bpuc,OAAOouc,yBAClChpZ,EAAiBplD,OAAOolD,eACxBipZ,EAAkBruc,OAAOgK,UAsC7Buc,EAAOrB,QArCP,SAASopb,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,kBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBtpZ,EAAeopZ,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,EAE7D,CAED,IAAIztc,EAAO08C,EAAoB8wZ,GAE3Bl7B,IACFtya,EAAOA,EAAKiR,OAAOqha,EAAsBk7B,KAM3C,IAHA,IAAIG,EAAgBX,EAAWO,GAC3BK,EAAgBZ,EAAWQ,GAEtB7jc,EAAI,EAAGA,EAAI3J,EAAK2B,SAAUgI,EAAG,CACpC,IAAIrG,EAAMtD,EAAK2J,GAEf,IAAK+ic,EAAcppc,MAAUmqc,IAAaA,EAAUnqc,OAAWsqc,IAAiBA,EAActqc,OAAWqqc,IAAiBA,EAAcrqc,IAAO,CAC7I,IAAI2vC,EAAam6Z,EAAyBI,EAAiBlqc,GAE3D,IAEErE,EAAesuc,EAAiBjqc,EAAK2vC,EACzB,CAAZ,MAAOhpC,GAAK,CACf,CACF,CACF,CAED,OAAOsjc,CACR,kCC3FY,IAAIvsb,EAAE,oBAAoB4D,QAAQA,OAAOC,IAAIjK,EAAEoG,EAAE4D,OAAOC,IAAI,iBAAiB,MAAML,EAAExD,EAAE4D,OAAOC,IAAI,gBAAgB,MAAM5a,EAAE+W,EAAE4D,OAAOC,IAAI,kBAAkB,MAAMC,EAAE9D,EAAE4D,OAAOC,IAAI,qBAAqB,MAAME,EAAE/D,EAAE4D,OAAOC,IAAI,kBAAkB,MAAM5nB,EAAE+jB,EAAE4D,OAAOC,IAAI,kBAAkB,MAAM7f,EAAEgc,EAAE4D,OAAOC,IAAI,iBAAiB,MAAMG,EAAEhE,EAAE4D,OAAOC,IAAI,oBAAoB,MAAM3mB,EAAE8iB,EAAE4D,OAAOC,IAAI,yBAAyB,MAAMI,EAAEjE,EAAE4D,OAAOC,IAAI,qBAAqB,MAAMhmB,EAAEmiB,EAAE4D,OAAOC,IAAI,kBAAkB,MAAMK,EAAElE,EACpf4D,OAAOC,IAAI,uBAAuB,MAAMQ,EAAErE,EAAE4D,OAAOC,IAAI,cAAc,MAAMM,EAAEnE,EAAE4D,OAAOC,IAAI,cAAc,MAAMO,EAAEpE,EAAE4D,OAAOC,IAAI,eAAe,MAAMk+F,EAAE/hG,EAAE4D,OAAOC,IAAI,qBAAqB,MAAM9V,EAAEiS,EAAE4D,OAAOC,IAAI,mBAAmB,MAAM7V,EAAEgS,EAAE4D,OAAOC,IAAI,eAAe,MAClQ,SAAS5V,EAAE8R,GAAG,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAInE,EAAEmE,EAAEuE,SAAS,OAAO1I,GAAG,KAAKhC,EAAE,OAAOmG,EAAEA,EAAE1a,MAAQ,KAAK2e,EAAE,KAAK9mB,EAAE,KAAK+L,EAAE,KAAK8a,EAAE,KAAKD,EAAE,KAAKjmB,EAAE,OAAOkiB,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAEuE,UAAY,KAAKtgB,EAAE,KAAKigB,EAAE,KAAKE,EAAE,KAAKE,EAAE,KAAKpoB,EAAE,OAAO8jB,EAAE,QAAQ,OAAOnE,GAAG,KAAK4H,EAAE,OAAO5H,EAAG,CAAC,UAAS+hP,EAAE59O,GAAG,OAAO9R,EAAE8R,KAAK7iB,CAAE,CAAAgmB,EAAQ2pb,UAAU7ob,EAAEd,EAAQ4pb,eAAe5vc,EAAEgmB,EAAQ6pb,gBAAgB/oc,EAAEkf,EAAQ8pb,gBAAgB/wc,EAAEinB,EAAQ+pb,QAAQrzb,EAAEsJ,EAAQgpb,WAAWjob,EAAEf,EAAQzK,SAASxP,EAAEia,EAAQgqb,KAAK/ob,EAAEjB,EAAQipb,KAAK9nb,EAAEnB,EAAQiqb,OAAO3pb,EAChfN,EAAQkqb,SAASrpb,EAAEb,EAAQmqb,WAAWvpb,EAAEZ,EAAQoqb,SAASzvc,EAAEqlB,EAAQqqb,YAAY,SAASxtb,GAAG,OAAO49O,EAAE59O,IAAI9R,EAAE8R,KAAKiE,CAAE,EAACd,EAAQsqb,iBAAiB7vM,EAAEz6O,EAAQuqb,kBAAkB,SAAS1tb,GAAG,OAAO9R,EAAE8R,KAAK/b,CAAE,EAACkf,EAAQwqb,kBAAkB,SAAS3tb,GAAG,OAAO9R,EAAE8R,KAAK9jB,CAAE,EAACinB,EAAQyqb,UAAU,SAAS5tb,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEuE,WAAW1K,CAAE,EAACsJ,EAAQ0qb,aAAa,SAAS7tb,GAAG,OAAO9R,EAAE8R,KAAKkE,CAAE,EAACf,EAAQ2qb,WAAW,SAAS9tb,GAAG,OAAO9R,EAAE8R,KAAK9W,CAAE,EAACia,EAAQ4qb,OAAO,SAAS/tb,GAAG,OAAO9R,EAAE8R,KAAKoE,CAAE,EAC3djB,EAAQ+ob,OAAO,SAASlsb,GAAG,OAAO9R,EAAE8R,KAAKsE,CAAE,EAACnB,EAAQ6qb,SAAS,SAAShub,GAAG,OAAO9R,EAAE8R,KAAKyD,CAAE,EAACN,EAAQ8qb,WAAW,SAASjub,GAAG,OAAO9R,EAAE8R,KAAKgE,CAAE,EAACb,EAAQ+qb,aAAa,SAASlub,GAAG,OAAO9R,EAAE8R,KAAK+D,CAAE,EAACZ,EAAQgrb,WAAW,SAASnub,GAAG,OAAO9R,EAAE8R,KAAKliB,CAAE,EAC3OqlB,EAAQirb,mBAAmB,SAASpub,GAAG,MAAM,kBAAkBA,GAAG,oBAAoBA,GAAGA,IAAI9W,GAAG8W,IAAI7iB,GAAG6iB,IAAIgE,GAAGhE,IAAI+D,GAAG/D,IAAIliB,GAAGkiB,IAAImE,GAAG,kBAAkBnE,GAAG,OAAOA,IAAIA,EAAEuE,WAAWH,GAAGpE,EAAEuE,WAAWD,GAAGtE,EAAEuE,WAAWroB,GAAG8jB,EAAEuE,WAAWtgB,GAAG+b,EAAEuE,WAAWL,GAAGlE,EAAEuE,WAAWy9F,GAAGhiG,EAAEuE,WAAWvW,GAAGgS,EAAEuE,WAAWtW,GAAG+R,EAAEuE,WAAWF,EAAG,EAAClB,EAAQkrb,OAAOngc,qCCXjUsW,EAAOrB,QAAU,EAAjBqB,0BCHF,iBAQE,WAGA,IAAI5c,EAUA0mc,EAAkB,sBAIlBC,EAAiB,4BAMjBC,EAAc,yBAgBdC,EAAwB,GACxBC,EAAoB,GACpBC,EAA0B,GAC1BC,EAAgB,IAChBC,EAAkB,IAiBlBC,EAAW,IACXC,EAAmB,iBAEnBC,EAAM,IAGNC,EAAmB,WAKnBC,EAAY,CACd,CAAC,MAAON,GACR,CAAC,OAtCkB,GAuCnB,CAAC,UAtCsB,GAuCvB,CAAC,QArCmB,GAsCpB,CAAC,aAAcH,GACf,CAAC,OAjCkB,KAkCnB,CAAC,UAAWC,GACZ,CAAC,eAAgBC,GACjB,CAAC,QAASE,IAIRM,EAAU,qBACVC,EAAW,iBAEXC,EAAU,mBACVC,EAAU,gBAEVC,EAAW,iBACXC,EAAU,oBACVC,EAAS,6BACTC,EAAS,eACTC,EAAY,kBAEZC,EAAY,kBACZC,EAAa,mBAEbC,EAAY,kBACZC,EAAS,eACTC,EAAY,kBACZC,EAAY,kBAEZC,EAAa,mBAGbC,EAAiB,uBACjBC,EAAc,oBACdC,EAAa,wBACbC,EAAa,wBACbC,EAAU,qBACVC,EAAW,sBACXC,EAAW,sBACXC,EAAW,sBACXC,EAAkB,6BAClBC,EAAY,uBACZC,EAAY,uBAGZC,EAAuB,iBACvBC,EAAsB,qBACtBC,EAAwB,gCAGxBC,EAAgB,4BAChBC,EAAkB,WAClBC,EAAmBt5a,OAAOo5a,EAAczpa,QACxC4pa,EAAqBv5a,OAAOq5a,EAAgB1pa,QAG5C6pa,EAAW,mBACXC,EAAa,kBACbC,GAAgB,mBAGhBC,GAAe,mDACfC,GAAgB,QAChBC,GAAa,mGAMbC,GAAe,sBACfC,GAAkB/5a,OAAO85a,GAAanqa,QAGtCqqa,GAAc,OAGdC,GAAe,KAGfC,GAAgB,4CAChBC,GAAgB,oCAChBC,GAAiB,QAGjBC,GAAc,4CAYdC,GAA6B,mBAG7BC,GAAe,WAMfC,GAAe,kCAGfC,GAAU,OAGVC,GAAa,qBAGbC,GAAa,aAGbC,GAAe,8BAGfC,GAAY,cAGZC,GAAW,mBAGXC,GAAU,8CAGVC,GAAY,OAGZC,GAAoB,yBAOpBC,GAAeC,gDACfC,GAAiB,kBACjBC,GAAe,4BAKfC,GAAe,4BACfC,GAAa,iBACbC,GAAeC,8OAGfC,GAAS,YACTC,GAAW,oBACXC,GAAU,IAAMJ,GAAe,IAC/BK,GAAU,IAAMX,GAAe,IAC/BY,GAAW,OACXC,GAAY,oBACZC,GAAU,IAAMX,GAAe,IAC/BY,GAAS,oBAAuBT,GAAeM,GAAWV,GAAiBC,GAAeC,GAAe,IACzGY,GAAS,2BAETC,GAAc,qBACdC,GAAa,kCACbC,GAAa,qCACbC,GAAU,IAAMhB,GAAe,IAI/BiB,GAAc,MAAQP,GAAU,IAAMC,GAAS,IAC/CO,GAAc,MAAQF,GAAU,IAAML,GAAS,IAC/CQ,GAAkB,qCAClBC,GAAkB,qCAClBC,GAZa,MAAQd,GAAU,IAAMK,GAAS,IAYtB,IACxBU,GAAW,oBAIXC,GAAQD,GAAWD,IAHP,gBAAwB,CAACR,GAAaC,GAAYC,IAAYxnc,KAAK,KAAO,IAAM+nc,GAAWD,GAAW,MAIlHG,GAAU,MAAQ,CAACf,GAAWK,GAAYC,IAAYxnc,KAAK,KAAO,IAAMgoc,GACxEE,GAAW,MAAQ,CAACZ,GAAcN,GAAU,IAAKA,GAASO,GAAYC,GAAYV,IAAU9mc,KAAK,KAAO,IAGxGmoc,GAASh9a,OAAO07a,GAAQ,KAMxBuB,GAAcj9a,OAAO67a,GAAS,KAG9BqB,GAAYl9a,OAAOk8a,GAAS,MAAQA,GAAS,KAAOa,GAAWF,GAAO,KAGtEM,GAAgBn9a,OAAO,CACzBs8a,GAAU,IAAMN,GAAU,IAAMS,GAAkB,MAAQ,CAACb,GAASU,GAAS,KAAKznc,KAAK,KAAO,IAC9F2nc,GAAc,IAAME,GAAkB,MAAQ,CAACd,GAASU,GAAUC,GAAa,KAAK1nc,KAAK,KAAO,IAChGync,GAAU,IAAMC,GAAc,IAAME,GACpCH,GAAU,IAAMI,GAtBD,mDADA,mDA0BfZ,GACAgB,IACAjoc,KAAK,KAAM,KAGTuoc,GAAep9a,OAAO,0BAA+Bk7a,GAAeK,GAAa,KAGjF8B,GAAmB,qEAGnBC,GAAe,CACjB,QAAS,SAAU,WAAY,OAAQ,QAAS,eAAgB,eAChE,WAAY,YAAa,aAAc,aAAc,MAAO,OAAQ,SACpE,UAAW,SAAU,MAAO,SAAU,SAAU,YAAa,aAC7D,oBAAqB,cAAe,cAAe,UACnD,IAAK,eAAgB,WAAY,WAAY,cAI3CC,IAAmB,EAGnBC,GAAiB,CAAC,EACtBA,GAAehF,GAAcgF,GAAe/E,GAC5C+E,GAAe9E,GAAW8E,GAAe7E,GACzC6E,GAAe5E,GAAY4E,GAAe3E,GAC1C2E,GAAe1E,GAAmB0E,GAAezE,GACjDyE,GAAexE,IAAa,EAC5BwE,GAAelG,GAAWkG,GAAejG,GACzCiG,GAAelF,GAAkBkF,GAAehG,GAChDgG,GAAejF,GAAeiF,GAAe/F,GAC7C+F,GAAe9F,GAAY8F,GAAe7F,GAC1C6F,GAAe3F,GAAU2F,GAAe1F,GACxC0F,GAAezF,GAAayF,GAAevF,GAC3CuF,GAAetF,GAAUsF,GAAerF,GACxCqF,GAAenF,IAAc,EAG7B,IAAIoF,GAAgB,CAAC,EACrBA,GAAcnG,GAAWmG,GAAclG,GACvCkG,GAAcnF,GAAkBmF,GAAclF,GAC9CkF,GAAcjG,GAAWiG,GAAchG,GACvCgG,GAAcjF,GAAciF,GAAchF,GAC1CgF,GAAc/E,GAAW+E,GAAc9E,GACvC8E,GAAc7E,GAAY6E,GAAc5F,GACxC4F,GAAc3F,GAAa2F,GAAc1F,GACzC0F,GAAcxF,GAAawF,GAAcvF,GACzCuF,GAActF,GAAasF,GAAcrF,GACzCqF,GAAc5E,GAAY4E,GAAc3E,GACxC2E,GAAc1E,GAAa0E,GAAczE,IAAa,EACtDyE,GAAc/F,GAAY+F,GAAc9F,GACxC8F,GAAcpF,IAAc,EAG5B,IA4EIqF,GAAgB,CAClB,KAAM,KACN,IAAK,IACL,KAAM,IACN,KAAM,IACN,SAAU,QACV,SAAU,SAIRC,GAAiBp9a,WACjBq9a,GAAe19a,SAGf29a,GAA8B,iBAAVv7c,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAO8D,SAAWA,QAAU9D,EAAAA,EAGhFw7c,GAA0B,iBAAR17c,MAAoBA,MAAQA,KAAKgE,SAAWA,QAAUhE,KAGxE4Q,GAAO6qc,IAAcC,IAAYC,SAAS,cAATA,GAGjCC,GAA4C1yb,IAAYA,EAAQ6yB,UAAY7yB,EAG5E2yb,GAAaD,IAA4Crxb,IAAWA,EAAOwxB,UAAYxxB,EAGvFuxb,GAAgBD,IAAcA,GAAW3yb,UAAY0yb,GAGrDG,GAAcD,IAAiBL,GAAWvsc,QAG1C8sc,GAAY,WACd,IAEE,IAAI16Y,EAAQu6Y,IAAcA,GAAW5yb,SAAW4yb,GAAW5yb,QAAQ,QAAQq4C,MAE3E,OAAIA,GAKGy6Y,IAAeA,GAAYE,SAAWF,GAAYE,QAAQ,OACrD,CAAZ,MAAOhtc,GAAK,CACf,CAZe,GAeZitc,GAAoBF,IAAYA,GAASG,cACzCC,GAAaJ,IAAYA,GAASt6Y,OAClC26Y,GAAYL,IAAYA,GAASM,MACjCC,GAAeP,IAAYA,GAASQ,SACpCC,GAAYT,IAAYA,GAASU,MACjCC,GAAmBX,IAAYA,GAASY,aAc5C,SAAS7+b,GAAMhH,EAAM8lc,EAASj5c,GAC5B,OAAQA,EAAK+C,QACX,KAAK,EAAG,OAAOoQ,EAAKtS,KAAKo4c,GACzB,KAAK,EAAG,OAAO9lc,EAAKtS,KAAKo4c,EAASj5c,EAAK,IACvC,KAAK,EAAG,OAAOmT,EAAKtS,KAAKo4c,EAASj5c,EAAK,GAAIA,EAAK,IAChD,KAAK,EAAG,OAAOmT,EAAKtS,KAAKo4c,EAASj5c,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE3D,OAAOmT,EAAKgH,MAAM8+b,EAASj5c,EAC5B,CAYD,SAASk5c,GAAgBzsc,EAAO+pH,EAAQ2iV,EAAUryc,GAIhD,IAHA,IAAIvD,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,SAE9BQ,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GAClBizH,EAAO1vH,EAAaxG,EAAO64c,EAAS74c,GAAQmM,EAC7C,CACD,OAAO3F,CACR,CAWD,SAASsyc,GAAU3sc,EAAO0sc,GAIxB,IAHA,IAAI51c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,SAE9BQ,EAAQR,IAC8B,IAAzCo2c,EAAS1sc,EAAMlJ,GAAQA,EAAOkJ,KAIpC,OAAOA,CACR,CAWD,SAAS4sc,GAAe5sc,EAAO0sc,GAG7B,IAFA,IAAIp2c,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OAEhCA,MAC0C,IAA3Co2c,EAAS1sc,EAAM1J,GAASA,EAAQ0J,KAItC,OAAOA,CACR,CAYD,SAAS6sc,GAAW7sc,EAAO8sc,GAIzB,IAHA,IAAIh2c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,SAE9BQ,EAAQR,GACf,IAAKw2c,EAAU9sc,EAAMlJ,GAAQA,EAAOkJ,GAClC,OAAO,EAGX,OAAO,CACR,CAWD,SAAS+sc,GAAY/sc,EAAO8sc,GAM1B,IALA,IAAIh2c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACnC02c,EAAW,EACX7zc,EAAS,KAEJrC,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdg2c,EAAUj5c,EAAOiD,EAAOkJ,KAC1B7G,EAAO6zc,KAAcn5c,EAExB,CACD,OAAOsF,CACR,CAWD,SAAS8zc,GAAcjtc,EAAOnM,GAE5B,SADsB,MAATmM,EAAgB,EAAIA,EAAM1J,SACpB42c,GAAYltc,EAAOnM,EAAO,IAAM,CACpD,CAWD,SAASs5c,GAAkBntc,EAAOnM,EAAOu5c,GAIvC,IAHA,IAAIt2c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,SAE9BQ,EAAQR,GACf,GAAI82c,EAAWv5c,EAAOmM,EAAMlJ,IAC1B,OAAO,EAGX,OAAO,CACR,CAWD,SAASu2c,GAASrtc,EAAO0sc,GAKvB,IAJA,IAAI51c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACnC6C,EAASqB,MAAMlE,KAEVQ,EAAQR,GACf6C,EAAOrC,GAAS41c,EAAS1sc,EAAMlJ,GAAQA,EAAOkJ,GAEhD,OAAO7G,CACR,CAUD,SAASm0c,GAAUttc,EAAOsrB,GAKxB,IAJA,IAAIx0B,GAAS,EACTR,EAASg1B,EAAOh1B,OAChBsM,EAAS5C,EAAM1J,SAEVQ,EAAQR,GACf0J,EAAM4C,EAAS9L,GAASw0B,EAAOx0B,GAEjC,OAAOkJ,CACR,CAcD,SAASutc,GAAYvtc,EAAO0sc,EAAUryc,EAAamzc,GACjD,IAAI12c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OAKvC,IAHIk3c,GAAal3c,IACf+D,EAAc2F,IAAQlJ,MAEfA,EAAQR,GACf+D,EAAcqyc,EAASryc,EAAa2F,EAAMlJ,GAAQA,EAAOkJ,GAE3D,OAAO3F,CACR,CAcD,SAASozc,GAAiBztc,EAAO0sc,EAAUryc,EAAamzc,GACtD,IAAIl3c,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OAIvC,IAHIk3c,GAAal3c,IACf+D,EAAc2F,IAAQ1J,IAEjBA,KACL+D,EAAcqyc,EAASryc,EAAa2F,EAAM1J,GAASA,EAAQ0J,GAE7D,OAAO3F,CACR,CAYD,SAASqzc,GAAU1tc,EAAO8sc,GAIxB,IAHA,IAAIh2c,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,SAE9BQ,EAAQR,GACf,GAAIw2c,EAAU9sc,EAAMlJ,GAAQA,EAAOkJ,GACjC,OAAO,EAGX,OAAO,CACR,CASD,IAAI2tc,GAAYC,GAAa,UAmC7B,SAASC,GAAYnoc,EAAYonc,EAAWgB,GAC1C,IAAI30c,EAOJ,OANA20c,EAASpoc,GAAY,SAAS7R,EAAOoE,EAAKyN,GACxC,GAAIonc,EAAUj5c,EAAOoE,EAAKyN,GAExB,OADAvM,EAASlB,GACF,CAEV,IACMkB,CACR,CAaD,SAAS40c,GAAc/tc,EAAO8sc,EAAW7qO,EAAW+rO,GAIlD,IAHA,IAAI13c,EAAS0J,EAAM1J,OACfQ,EAAQmrO,GAAa+rO,EAAY,GAAK,GAElCA,EAAYl3c,MAAYA,EAAQR,GACtC,GAAIw2c,EAAU9sc,EAAMlJ,GAAQA,EAAOkJ,GACjC,OAAOlJ,EAGX,OAAQ,CACT,CAWD,SAASo2c,GAAYltc,EAAOnM,EAAOouO,GACjC,OAAOpuO,IAAUA,EAidnB,SAAuBmM,EAAOnM,EAAOouO,GACnC,IAAInrO,EAAQmrO,EAAY,EACpB3rO,EAAS0J,EAAM1J,OAEnB,OAASQ,EAAQR,GACf,GAAI0J,EAAMlJ,KAAWjD,EACnB,OAAOiD,EAGX,OAAQ,CACT,CA1dKm3c,CAAcjuc,EAAOnM,EAAOouO,GAC5B8rO,GAAc/tc,EAAOkuc,GAAWjsO,EACrC,CAYD,SAASksO,GAAgBnuc,EAAOnM,EAAOouO,EAAWmrO,GAIhD,IAHA,IAAIt2c,EAAQmrO,EAAY,EACpB3rO,EAAS0J,EAAM1J,SAEVQ,EAAQR,GACf,GAAI82c,EAAWptc,EAAMlJ,GAAQjD,GAC3B,OAAOiD,EAGX,OAAQ,CACT,CASD,SAASo3c,GAAUr6c,GACjB,OAAOA,IAAUA,CAClB,CAWD,SAASu6c,GAASpuc,EAAO0sc,GACvB,IAAIp2c,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAOA,EAAU+3c,GAAQruc,EAAO0sc,GAAYp2c,EAAUouc,CACvD,CASD,SAASkJ,GAAa31c,GACpB,OAAO,SAASqjC,GACd,OAAiB,MAAVA,EAAiBh+B,EAAYg+B,EAAOrjC,EAC5C,CACF,CASD,SAASq2c,GAAehza,GACtB,OAAO,SAASrjC,GACd,OAAiB,MAAVqjC,EAAiBh+B,EAAYg+B,EAAOrjC,EAC5C,CACF,CAeD,SAASs2c,GAAW7oc,EAAYgnc,EAAUryc,EAAamzc,EAAWM,GAMhE,OALAA,EAASpoc,GAAY,SAAS7R,EAAOiD,EAAO4O,GAC1CrL,EAAcmzc,GACTA,GAAY,EAAO35c,GACpB64c,EAASryc,EAAaxG,EAAOiD,EAAO4O,EACzC,IACMrL,CACR,CA+BD,SAASg0c,GAAQruc,EAAO0sc,GAKtB,IAJA,IAAIvzc,EACArC,GAAS,EACTR,EAAS0J,EAAM1J,SAEVQ,EAAQR,GAAQ,CACvB,IAAI8Y,EAAUs9b,EAAS1sc,EAAMlJ,IACzBsY,IAAY9R,IACdnE,EAASA,IAAWmE,EAAY8R,EAAWjW,EAASiW,EAEvD,CACD,OAAOjW,CACR,CAWD,SAASq1c,GAAU50b,EAAG8yb,GAIpB,IAHA,IAAI51c,GAAS,EACTqC,EAASqB,MAAMof,KAEV9iB,EAAQ8iB,GACfzgB,EAAOrC,GAAS41c,EAAS51c,GAE3B,OAAOqC,CACR,CAwBD,SAASs1c,GAAS1jc,GAChB,OAAOA,EACHA,EAAOrQ,MAAM,EAAGg0c,GAAgB3jc,GAAU,GAAGxT,QAAQgwc,GAAa,IAClEx8b,CACL,CASD,SAAS4jc,GAAUjoc,GACjB,OAAO,SAAS7S,GACd,OAAO6S,EAAK7S,EACb,CACF,CAYD,SAAS+6c,GAAWtza,EAAQ76B,GAC1B,OAAO4sc,GAAS5sc,GAAO,SAASxI,GAC9B,OAAOqjC,EAAOrjC,EACf,GACF,CAUD,SAAS42c,GAAS5oc,EAAOhO,GACvB,OAAOgO,EAAM3W,IAAI2I,EAClB,CAWD,SAAS62c,GAAgBC,EAAYC,GAInC,IAHA,IAAIl4c,GAAS,EACTR,EAASy4c,EAAWz4c,SAEfQ,EAAQR,GAAU42c,GAAY8B,EAAYD,EAAWj4c,GAAQ,IAAM,IAC5E,OAAOA,CACR,CAWD,SAASm4c,GAAcF,EAAYC,GAGjC,IAFA,IAAIl4c,EAAQi4c,EAAWz4c,OAEhBQ,KAAWo2c,GAAY8B,EAAYD,EAAWj4c,GAAQ,IAAM,IACnE,OAAOA,CACR,CAUD,SAASo4c,GAAalvc,EAAOqoP,GAI3B,IAHA,IAAI/xP,EAAS0J,EAAM1J,OACf6C,EAAS,EAEN7C,KACD0J,EAAM1J,KAAY+xP,KAClBlvP,EAGN,OAAOA,CACR,CAUD,IAAIg2c,GAAeb,GAjxBG,CAEpB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IACtB,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAC1E,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IAAK,OAAQ,IAChD,OAAQ,IAAM,OAAQ,IAAK,OAAQ,IACnC,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAAM,OAAQ,KACtB,OAAQ,KAER,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACvE,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IACxD,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IAAK,SAAU,IACtF,SAAU,IAAM,SAAU,IAC1B,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,IAAM,SAAU,IAAK,SAAU,IACzC,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,KAC1B,SAAU,KAAM,SAAU,MAouBxBc,GAAiBd,GAhuBH,CAChB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAouBP,SAASe,GAAiB1rW,GACxB,MAAO,KAAOsnW,GAActnW,EAC7B,CAqBD,SAAS2rW,GAAWvkc,GAClB,OAAO4/b,GAAa5+b,KAAKhB,EAC1B,CAqCD,SAASwkc,GAAW71c,GAClB,IAAI5C,GAAS,EACTqC,EAASqB,MAAMd,EAAI8J,MAKvB,OAHA9J,EAAIrD,SAAQ,SAASxC,EAAOoE,GAC1BkB,IAASrC,GAAS,CAACmB,EAAKpE,EACzB,IACMsF,CACR,CAUD,SAASq2c,GAAQ9oc,EAAMisB,GACrB,OAAO,SAASvsB,GACd,OAAOM,EAAKisB,EAAUvsB,GACvB,CACF,CAWD,SAASqpc,GAAezvc,EAAOqoP,GAM7B,IALA,IAAIvxP,GAAS,EACTR,EAAS0J,EAAM1J,OACf02c,EAAW,EACX7zc,EAAS,KAEJrC,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdjD,IAAUw0P,GAAex0P,IAAUqwc,IACrClkc,EAAMlJ,GAASotc,EACf/qc,EAAO6zc,KAAcl2c,EAExB,CACD,OAAOqC,CACR,CASD,SAASu2c,GAAW5gd,GAClB,IAAIgI,GAAS,EACTqC,EAASqB,MAAM1L,EAAI0U,MAKvB,OAHA1U,EAAIuH,SAAQ,SAASxC,GACnBsF,IAASrC,GAASjD,CACnB,IACMsF,CACR,CASD,SAASw2c,GAAW7gd,GAClB,IAAIgI,GAAS,EACTqC,EAASqB,MAAM1L,EAAI0U,MAKvB,OAHA1U,EAAIuH,SAAQ,SAASxC,GACnBsF,IAASrC,GAAS,CAACjD,EAAOA,EAC3B,IACMsF,CACR,CAmDD,SAASy2c,GAAW7kc,GAClB,OAAOukc,GAAWvkc,GAiDpB,SAAqBA,GACnB,IAAI5R,EAASsxc,GAAU9+b,UAAY,EACnC,KAAO8+b,GAAU1+b,KAAKhB,MAClB5R,EAEJ,OAAOA,CACR,CAtDK02c,CAAY9kc,GACZ4ic,GAAU5ic,EACf,CASD,SAAS+kc,GAAc/kc,GACrB,OAAOukc,GAAWvkc,GAmDpB,SAAwBA,GACtB,OAAOA,EAAOnG,MAAM6lc,KAAc,EACnC,CApDKsF,CAAehlc,GA7kBrB,SAAsBA,GACpB,OAAOA,EAAO/S,MAAM,GACrB,CA4kBKg4c,CAAajlc,EAClB,CAUD,SAAS2jc,GAAgB3jc,GAGvB,IAFA,IAAIjU,EAAQiU,EAAOzU,OAEZQ,KAAW0wc,GAAaz7b,KAAKhB,EAAO6G,OAAO9a,MAClD,OAAOA,CACR,CASD,IAAIm5c,GAAmB3B,GA38BH,CAClB,QAAS,IACT,OAAQ,IACR,OAAQ,IACR,SAAU,IACV,QAAS,MA4gCX,IAs3eI75c,GAt3egB,SAASy7c,EAAap0Z,GAIxC,IAAIthD,GAHJshD,EAAqB,MAAXA,EAAkBv7C,GAAO9L,GAAE60C,SAAS/oC,GAAK5M,SAAUmoD,EAASrnD,GAAE07c,KAAK5vc,GAAMsqc,MAG/Drwc,MAChB/B,EAAOqjD,EAAQrjD,KACfvI,GAAQ4rD,EAAQ5rD,MAChBo7c,GAAWxvZ,EAAQwvZ,SACnBpsc,GAAO48C,EAAQ58C,KACfvL,GAASmoD,EAAQnoD,OACjB45B,GAASuuB,EAAQvuB,OACjBnuB,GAAS08C,EAAQ18C,OACjBigC,GAAYyc,EAAQzc,UAGpB+wa,GAAa51c,EAAMmD,UACnB0yc,GAAY/E,GAAS3tc,UACrB2yc,GAAc38c,GAAOgK,UAGrB4yc,GAAaz0Z,EAAQ,sBAGrB00Z,GAAeH,GAAUp9c,SAGzBuiB,GAAiB86b,GAAY96b,eAG7Bi7b,GAAY,EAGZC,GAAc,WAChB,IAAIC,EAAM,SAAShsc,KAAK4rc,IAAcA,GAAW57c,MAAQ47c,GAAW57c,KAAKi8c,UAAY,IACrF,OAAOD,EAAO,iBAAmBA,EAAO,EACzC,CAHiB,GAUdE,GAAuBP,GAAYr9c,SAGnC69c,GAAmBN,GAAap8c,KAAKT,IAGrCo9c,GAAUxwc,GAAK9L,EAGfu8c,GAAazjb,GAAO,IACtBijb,GAAap8c,KAAKohB,IAAgBje,QAAQ8vc,GAAc,QACvD9vc,QAAQ,yDAA0D,SAAW,KAI5E05c,GAASxF,GAAgB3vZ,EAAQm1Z,OAAS3zc,EAC1Cic,GAASuiC,EAAQviC,OACjB23b,GAAap1Z,EAAQo1Z,WACrBC,GAAcF,GAASA,GAAOE,YAAc7zc,EAC5C8zc,GAAe5B,GAAQ77c,GAAOolD,eAAgBplD,IAC9C09c,GAAe19c,GAAOwS,OACtB+ga,GAAuBopC,GAAYppC,qBACnClwa,GAASo5c,GAAWp5c,OACpBs6c,GAAmB/3b,GAASA,GAAOg4b,mBAAqBj0c,EACxDk0c,GAAcj4b,GAASA,GAAO44G,SAAW70H,EACzCm0c,GAAiBl4b,GAASA,GAAOm4b,YAAcp0c,EAE/C1J,GAAkB,WACpB,IACE,IAAI8S,EAAOirc,GAAUh+c,GAAQ,kBAE7B,OADA+S,EAAK,CAAC,EAAG,GAAI,CAAC,GACPA,CACK,CAAZ,MAAO9H,GAAK,CACf,CANqB,GASlBgzc,GAAkB91Z,EAAQ7wB,eAAiB1qB,GAAK0qB,cAAgB6wB,EAAQ7wB,aACxE4mb,GAASp5c,GAAQA,EAAKygE,MAAQ34D,GAAK9H,KAAKygE,KAAOzgE,EAAKygE,IACpD44Y,GAAgBh2Z,EAAQ5wB,aAAe3qB,GAAK2qB,YAAc4wB,EAAQ5wB,WAGlE6mb,GAAa7yc,GAAKq7E,KAClBy3X,GAAc9yc,GAAKo/D,MACnB2zY,GAAmBt+c,GAAOsza,sBAC1BirC,GAAiBjB,GAASA,GAAOkB,SAAW70c,EAC5C80c,GAAiBt2Z,EAAQgL,SACzBurZ,GAAajC,GAAWhuc,KACxBkwc,GAAa9C,GAAQ77c,GAAOgB,KAAMhB,IAClC4+c,GAAYrzc,GAAKkuB,IACjBolb,GAAYtzc,GAAKsZ,IACjBi6b,GAAYh6c,EAAKygE,IACjBw5Y,GAAiB52Z,EAAQruB,SACzBklb,GAAezzc,GAAKqZ,OACpBq6b,GAAgBxC,GAAW3/Y,QAG3BoiZ,GAAWlB,GAAU71Z,EAAS,YAC9BjtD,GAAM8id,GAAU71Z,EAAS,OACzBxnD,GAAUq9c,GAAU71Z,EAAS,WAC7BpnD,GAAMi9c,GAAU71Z,EAAS,OACzB53C,GAAUytc,GAAU71Z,EAAS,WAC7Bg3Z,GAAenB,GAAUh+c,GAAQ,UAGjCo/c,GAAU7uc,IAAW,IAAIA,GAGzB8uc,GAAY,CAAC,EAGbC,GAAqBC,GAASL,IAC9BM,GAAgBD,GAASrkd,IACzBukd,GAAoBF,GAAS5+c,IAC7B++c,GAAgBH,GAASx+c,IACzB4+c,GAAoBJ,GAAShvc,IAG7Bqvc,GAAch6b,GAASA,GAAO5b,UAAYL,EAC1Ck2c,GAAgBD,GAAcA,GAAYrxZ,QAAU5kD,EACpDm2c,GAAiBF,GAAcA,GAAYtgd,SAAWqK,EAyH1D,SAASo2c,GAAO7/c,GACd,GAAI8/c,GAAa9/c,KAAW4G,GAAQ5G,MAAYA,aAAiB+/c,IAAc,CAC7E,GAAI//c,aAAiBggd,GACnB,OAAOhgd,EAET,GAAI2hB,GAAephB,KAAKP,EAAO,eAC7B,OAAOigd,GAAajgd,EAEvB,CACD,OAAO,IAAIggd,GAAchgd,EAC1B,CAUD,IAAIkgd,GAAc,WAChB,SAASz4a,IAAW,CACpB,OAAO,SAASk2B,GACd,IAAKx7C,GAASw7C,GACZ,MAAO,CAAC,EAEV,GAAI6/Y,GACF,OAAOA,GAAa7/Y,GAEtBl2B,EAAO39B,UAAY6zD,EACnB,IAAIr4D,EAAS,IAAImiC,EAEjB,OADAA,EAAO39B,UAAYL,EACZnE,CACR,CACF,CAdiB,GAqBlB,SAAS66c,KAER,CASD,SAASH,GAAchgd,EAAOogd,GAC5Bt+c,KAAKu+c,YAAcrgd,EACnB8B,KAAKw+c,YAAc,GACnBx+c,KAAKy+c,YAAcH,EACnBt+c,KAAK0+c,UAAY,EACjB1+c,KAAK2+c,WAAah3c,CACnB,CA+ED,SAASs2c,GAAY//c,GACnB8B,KAAKu+c,YAAcrgd,EACnB8B,KAAKw+c,YAAc,GACnBx+c,KAAK4+c,QAAU,EACf5+c,KAAK6+c,cAAe,EACpB7+c,KAAK8+c,cAAgB,GACrB9+c,KAAK++c,cAAgB/P,EACrBhvc,KAAKg/c,UAAY,EAClB,CA+GD,SAASC,GAAKx6c,GACZ,IAAItD,GAAS,EACTR,EAAoB,MAAX8D,EAAkB,EAAIA,EAAQ9D,OAG3C,IADAX,KAAKmnC,UACIhmC,EAAQR,GAAQ,CACvB,IAAIgE,EAAQF,EAAQtD,GACpBnB,KAAK7G,IAAIwL,EAAM,GAAIA,EAAM,GAC1B,CACF,CA+FD,SAASu6c,GAAUz6c,GACjB,IAAItD,GAAS,EACTR,EAAoB,MAAX8D,EAAkB,EAAIA,EAAQ9D,OAG3C,IADAX,KAAKmnC,UACIhmC,EAAQR,GAAQ,CACvB,IAAIgE,EAAQF,EAAQtD,GACpBnB,KAAK7G,IAAIwL,EAAM,GAAIA,EAAM,GAC1B,CACF,CA4GD,SAASw6c,GAAS16c,GAChB,IAAItD,GAAS,EACTR,EAAoB,MAAX8D,EAAkB,EAAIA,EAAQ9D,OAG3C,IADAX,KAAKmnC,UACIhmC,EAAQR,GAAQ,CACvB,IAAIgE,EAAQF,EAAQtD,GACpBnB,KAAK7G,IAAIwL,EAAM,GAAIA,EAAM,GAC1B,CACF,CA+FD,SAASy6c,GAASzpb,GAChB,IAAIx0B,GAAS,EACTR,EAAmB,MAAVg1B,EAAiB,EAAIA,EAAOh1B,OAGzC,IADAX,KAAKq/c,SAAW,IAAIF,KACXh+c,EAAQR,GACfX,KAAK+tC,IAAIpY,EAAOx0B,GAEnB,CA2CD,SAASm+c,GAAM76c,GACb,IAAInK,EAAO0F,KAAKq/c,SAAW,IAAIH,GAAUz6c,GACzCzE,KAAK6N,KAAOvT,EAAKuT,IAClB,CAoGD,SAAS0xc,GAAcrhd,EAAOshd,GAC5B,IAAIC,EAAQ36c,GAAQ5G,GAChBwhd,GAASD,GAASE,GAAYzhd,GAC9B0hd,GAAUH,IAAUC,GAASlD,GAASt+c,GACtC2hd,GAAUJ,IAAUC,IAAUE,GAAUhJ,GAAa14c,GACrD4hd,EAAcL,GAASC,GAASE,GAAUC,EAC1Cr8c,EAASs8c,EAAcjH,GAAU36c,EAAMyC,OAAQ8I,IAAU,GACzD9I,EAAS6C,EAAO7C,OAEpB,IAAK,IAAI2B,KAAOpE,GACTshd,IAAa3/b,GAAephB,KAAKP,EAAOoE,IACvCw9c,IAEQ,UAAPx9c,GAECs9c,IAAkB,UAAPt9c,GAA0B,UAAPA,IAE9Bu9c,IAAkB,UAAPv9c,GAA0B,cAAPA,GAA8B,cAAPA,IAEtDy9c,GAAQz9c,EAAK3B,KAElB6C,EAAOpD,KAAKkC,GAGhB,OAAOkB,CACR,CASD,SAASw8c,GAAY31c,GACnB,IAAI1J,EAAS0J,EAAM1J,OACnB,OAAOA,EAAS0J,EAAM41c,GAAW,EAAGt/c,EAAS,IAAMgH,CACpD,CAUD,SAASu4c,GAAgB71c,EAAO4Z,GAC9B,OAAOk8b,GAAYC,GAAU/1c,GAAQg2c,GAAUp8b,EAAG,EAAG5Z,EAAM1J,QAC5D,CASD,SAAS2/c,GAAaj2c,GACpB,OAAO81c,GAAYC,GAAU/1c,GAC9B,CAWD,SAASk2c,GAAiB56a,EAAQrjC,EAAKpE,IAChCA,IAAUyJ,IAAcioE,GAAGjqC,EAAOrjC,GAAMpE,IACxCA,IAAUyJ,KAAerF,KAAOqjC,KACnC66a,GAAgB76a,EAAQrjC,EAAKpE,EAEhC,CAYD,SAASuid,GAAY96a,EAAQrjC,EAAKpE,GAChC,IAAIwid,EAAW/6a,EAAOrjC,GAChBud,GAAephB,KAAKknC,EAAQrjC,IAAQstE,GAAG8wY,EAAUxid,KAClDA,IAAUyJ,GAAerF,KAAOqjC,IACnC66a,GAAgB76a,EAAQrjC,EAAKpE,EAEhC,CAUD,SAASyid,GAAat2c,EAAO/H,GAE3B,IADA,IAAI3B,EAAS0J,EAAM1J,OACZA,KACL,GAAIivE,GAAGvlE,EAAM1J,GAAQ,GAAI2B,GACvB,OAAO3B,EAGX,OAAQ,CACT,CAaD,SAASigd,GAAe7wc,EAAYqkH,EAAQ2iV,EAAUryc,GAIpD,OAHAm8c,GAAS9wc,GAAY,SAAS7R,EAAOoE,EAAKyN,GACxCqkH,EAAO1vH,EAAaxG,EAAO64c,EAAS74c,GAAQ6R,EAC7C,IACMrL,CACR,CAWD,SAASo8c,GAAWn7a,EAAQ4B,GAC1B,OAAO5B,GAAUo7a,GAAWx5a,EAAQvoC,GAAKuoC,GAAS5B,EACnD,CAwBD,SAAS66a,GAAgB76a,EAAQrjC,EAAKpE,GACzB,aAAPoE,GAAsBrE,GACxBA,GAAe0nC,EAAQrjC,EAAK,CAC1B,cAAgB,EAChB,YAAc,EACd,MAASpE,EACT,UAAY,IAGdynC,EAAOrjC,GAAOpE,CAEjB,CAUD,SAAS8id,GAAOr7a,EAAQs7a,GAMtB,IALA,IAAI9/c,GAAS,EACTR,EAASsgd,EAAMtgd,OACf6C,EAASqB,EAAMlE,GACfghE,EAAiB,MAAVh8B,IAEFxkC,EAAQR,GACf6C,EAAOrC,GAASwgE,EAAOh6D,EAAY/N,GAAI+rC,EAAQs7a,EAAM9/c,IAEvD,OAAOqC,CACR,CAWD,SAAS68c,GAAUrsb,EAAQktb,EAAOC,GAShC,OARIntb,IAAWA,IACTmtb,IAAUx5c,IACZqsB,EAASA,GAAUmtb,EAAQntb,EAASmtb,GAElCD,IAAUv5c,IACZqsB,EAASA,GAAUktb,EAAQltb,EAASktb,IAGjCltb,CACR,CAkBD,SAASotb,GAAUljd,EAAOmjd,EAASC,EAAYh/c,EAAKqjC,EAAQknW,GAC1D,IAAIrpY,EACA+9c,EArkFc,EAqkFLF,EACTG,EArkFc,EAqkFLH,EACTI,EArkFiB,EAqkFRJ,EAKb,GAHIC,IACF99c,EAASmiC,EAAS27a,EAAWpjd,EAAOoE,EAAKqjC,EAAQknW,GAASy0E,EAAWpjd,IAEnEsF,IAAWmE,EACb,OAAOnE,EAET,IAAK6c,GAASniB,GACZ,OAAOA,EAET,IAAIuhd,EAAQ36c,GAAQ5G,GACpB,GAAIuhd,GAEF,GADAj8c,EA68GJ,SAAwB6G,GACtB,IAAI1J,EAAS0J,EAAM1J,OACf6C,EAAS,IAAI6G,EAAMg9B,YAAY1mC,GAG/BA,GAA6B,iBAAZ0J,EAAM,IAAkBwV,GAAephB,KAAK4L,EAAO,WACtE7G,EAAOrC,MAAQkJ,EAAMlJ,MACrBqC,EAAOgX,MAAQnQ,EAAMmQ,OAEvB,OAAOhX,CACR,CAv9GYk+c,CAAexjd,IACnBqjd,EACH,OAAOnB,GAAUlid,EAAOsF,OAErB,CACL,IAAIyD,EAAM06c,GAAOzjd,GACb0jd,EAAS36c,GAAOsoc,GAAWtoc,GAAOuoc,EAEtC,GAAIgN,GAASt+c,GACX,OAAO2jd,GAAY3jd,EAAOqjd,GAE5B,GAAIt6c,GAAO0oc,GAAa1oc,GAAOioc,GAAY0S,IAAWj8a,GAEpD,GADAniC,EAAUg+c,GAAUI,EAAU,CAAC,EAAIE,GAAgB5jd,IAC9Cqjd,EACH,OAAOC,EA+nEf,SAAuBj6a,EAAQ5B,GAC7B,OAAOo7a,GAAWx5a,EAAQw6a,GAAax6a,GAAS5B,EACjD,CAhoEWq8a,CAAc9jd,EAnH1B,SAAsBynC,EAAQ4B,GAC5B,OAAO5B,GAAUo7a,GAAWx5a,EAAQ06a,GAAO16a,GAAS5B,EACrD,CAiHgCu8a,CAAa1+c,EAAQtF,IAknEtD,SAAqBqpC,EAAQ5B,GAC3B,OAAOo7a,GAAWx5a,EAAQ46a,GAAW56a,GAAS5B,EAC/C,CAnnEWy8a,CAAYlkd,EAAO4id,GAAWt9c,EAAQtF,QAEvC,CACL,IAAKm3c,GAAcpuc,GACjB,OAAO0+B,EAASznC,EAAQ,CAAC,EAE3BsF,EA49GN,SAAwBmiC,EAAQ1+B,EAAKs6c,GACnC,IAAI3yN,EAAOjpN,EAAO0B,YAClB,OAAQpgC,GACN,KAAKipc,EACH,OAAOmS,GAAiB18a,GAE1B,KAAKypa,EACL,KAAKC,EACH,OAAO,IAAIzgN,GAAMjpN,GAEnB,KAAKwqa,EACH,OA5nDN,SAAuBmS,EAAUf,GAC/B,IAAIgB,EAAShB,EAASc,GAAiBC,EAASC,QAAUD,EAASC,OACnE,OAAO,IAAID,EAASj7a,YAAYk7a,EAAQD,EAASE,WAAYF,EAASG,WACvE,CAynDYC,CAAc/8a,EAAQ47a,GAE/B,KAAKnR,EAAY,KAAKC,EACtB,KAAKC,EAAS,KAAKC,EAAU,KAAKC,EAClC,KAAKC,EAAU,KAAKC,EAAiB,KAAKC,EAAW,KAAKC,EACxD,OAAO+R,GAAgBh9a,EAAQ47a,GAEjC,KAAK9R,EACH,OAAO,IAAI7gN,EAEb,KAAK8gN,EACL,KAAKK,EACH,OAAO,IAAInhN,EAAKjpN,GAElB,KAAKkqa,EACH,OA/nDN,SAAqB1sV,GACnB,IAAI3/G,EAAS,IAAI2/G,EAAO97E,YAAY87E,EAAO57E,OAAQ8qa,GAAQrjc,KAAKm0G,IAEhE,OADA3/G,EAAOwS,UAAYmtG,EAAOntG,UACnBxS,CACR,CA2nDYo/c,CAAYj9a,GAErB,KAAKmqa,EACH,OAAO,IAAIlhN,EAEb,KAAKohN,EACH,OAxnDenkW,EAwnDIlmE,EAvnDhBk4a,GAAgB7/c,GAAO6/c,GAAcp/c,KAAKotG,IAAW,CAAC,EAD/D,IAAqBA,CA0nDpB,CA9/Gcg3W,CAAe3kd,EAAO+I,EAAKs6c,EACrC,CACF,CAED10E,IAAUA,EAAQ,IAAIyyE,IACtB,IAAIwD,EAAUj2E,EAAMjzY,IAAIsE,GACxB,GAAI4kd,EACF,OAAOA,EAETj2E,EAAM1zY,IAAI+E,EAAOsF,GAEbkzc,GAAMx4c,GACRA,EAAMwC,SAAQ,SAASqid,GACrBv/c,EAAOuqC,IAAIqza,GAAU2B,EAAU1B,EAASC,EAAYyB,EAAU7kd,EAAO2uY,GACtE,IACQypE,GAAMp4c,IACfA,EAAMwC,SAAQ,SAASqid,EAAUzgd,GAC/BkB,EAAOrK,IAAImJ,EAAK8+c,GAAU2B,EAAU1B,EAASC,EAAYh/c,EAAKpE,EAAO2uY,GACtE,IAGH,IAII/hY,EAAQ20c,EAAQ93c,GAJL85c,EACVD,EAASwB,GAAeC,GACxBzB,EAASS,GAASjjd,IAEkBd,GASzC,OARA84c,GAAUlsc,GAAS5M,GAAO,SAAS6kd,EAAUzgd,GACvCwI,IAEFi4c,EAAW7kd,EADXoE,EAAMygd,IAIRtC,GAAYj9c,EAAQlB,EAAK8+c,GAAU2B,EAAU1B,EAASC,EAAYh/c,EAAKpE,EAAO2uY,GAC/E,IACMrpY,CACR,CAwBD,SAAS0/c,GAAev9a,EAAQ4B,EAAQz8B,GACtC,IAAInK,EAASmK,EAAMnK,OACnB,GAAc,MAAVglC,EACF,OAAQhlC,EAGV,IADAglC,EAAS3nC,GAAO2nC,GACThlC,KAAU,CACf,IAAI2B,EAAMwI,EAAMnK,GACZw2c,EAAY5va,EAAOjlC,GACnBpE,EAAQynC,EAAOrjC,GAEnB,GAAKpE,IAAUyJ,KAAerF,KAAOqjC,KAAawxa,EAAUj5c,GAC1D,OAAO,CAEV,CACD,OAAO,CACR,CAYD,SAASild,GAAUpyc,EAAMi2B,EAAMppC,GAC7B,GAAmB,mBAARmT,EACT,MAAM,IAAI24B,GAAU2ka,GAEtB,OAAO94a,IAAW,WAAaxkB,EAAKgH,MAAMpQ,EAAW/J,EAAQ,GAAEopC,EAChE,CAaD,SAASo8a,GAAe/4c,EAAOsrB,EAAQohb,EAAUU,GAC/C,IAAIt2c,GAAS,EACToE,EAAW+xc,GACX+L,GAAW,EACX1id,EAAS0J,EAAM1J,OACf6C,EAAS,GACT8/c,EAAe3tb,EAAOh1B,OAE1B,IAAKA,EACH,OAAO6C,EAELuzc,IACFphb,EAAS+hb,GAAS/hb,EAAQqjb,GAAUjC,KAElCU,GACFlyc,EAAWiyc,GACX6L,GAAW,GAEJ1tb,EAAOh1B,QAtvFG,MAuvFjB4E,EAAW2zc,GACXmK,GAAW,EACX1tb,EAAS,IAAIypb,GAASzpb,IAExBszJ,EACA,OAAS9nL,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdoid,EAAuB,MAAZxM,EAAmB74c,EAAQ64c,EAAS74c,GAGnD,GADAA,EAASu5c,GAAwB,IAAVv5c,EAAeA,EAAQ,EAC1Cmld,GAAYE,IAAaA,EAAU,CAErC,IADA,IAAIC,EAAcF,EACXE,KACL,GAAI7tb,EAAO6tb,KAAiBD,EAC1B,SAASt6R,EAGbzlL,EAAOpD,KAAKlC,EACb,MACSqH,EAASowB,EAAQ4tb,EAAU9L,IACnCj0c,EAAOpD,KAAKlC,EAEf,CACD,OAAOsF,CACR,CAlkCDu6c,GAAO0F,iBAAmB,CAQxB,OAAUrS,EAQV,SAAYC,EAQZ,YAAeC,GAQf,SAAY,GAQZ,QAAW,CAQT,EAAKyM,KAKTA,GAAO/1c,UAAYq2c,GAAWr2c,UAC9B+1c,GAAO/1c,UAAUq/B,YAAc02a,GAE/BG,GAAcl2c,UAAYo2c,GAAWC,GAAWr2c,WAChDk2c,GAAcl2c,UAAUq/B,YAAc62a,GAsHtCD,GAAYj2c,UAAYo2c,GAAWC,GAAWr2c,WAC9Ci2c,GAAYj2c,UAAUq/B,YAAc42a,GAoGpCgB,GAAKj3c,UAAUm/B,MAvEf,WACEnnC,KAAKq/c,SAAWlC,GAAeA,GAAa,MAAQ,CAAC,EACrDn9c,KAAK6N,KAAO,CACb,EAqEDoxc,GAAKj3c,UAAL,OAzDA,SAAoB1F,GAClB,IAAIkB,EAASxD,KAAKrG,IAAI2I,WAAetC,KAAKq/c,SAAS/8c,GAEnD,OADAtC,KAAK6N,MAAQrK,EAAS,EAAI,EACnBA,CACR,EAsDDy7c,GAAKj3c,UAAUpO,IA3Cf,SAAiB0I,GACf,IAAIhI,EAAO0F,KAAKq/c,SAChB,GAAIlC,GAAc,CAChB,IAAI35c,EAASlJ,EAAKgI,GAClB,OAAOkB,IAAW8qc,EAAiB3mc,EAAYnE,CAChD,CACD,OAAOqc,GAAephB,KAAKnE,EAAMgI,GAAOhI,EAAKgI,GAAOqF,CACrD,EAqCDs3c,GAAKj3c,UAAUrO,IA1Bf,SAAiB2I,GACf,IAAIhI,EAAO0F,KAAKq/c,SAChB,OAAOlC,GAAgB7id,EAAKgI,KAASqF,EAAakY,GAAephB,KAAKnE,EAAMgI,EAC7E,EAwBD28c,GAAKj3c,UAAU7O,IAZf,SAAiBmJ,EAAKpE,GACpB,IAAI5D,EAAO0F,KAAKq/c,SAGhB,OAFAr/c,KAAK6N,MAAQ7N,KAAKrG,IAAI2I,GAAO,EAAI,EACjChI,EAAKgI,GAAQ66c,IAAgBj/c,IAAUyJ,EAAa2mc,EAAiBpwc,EAC9D8B,IACR,EAwHDk/c,GAAUl3c,UAAUm/B,MApFpB,WACEnnC,KAAKq/c,SAAW,GAChBr/c,KAAK6N,KAAO,CACb,EAkFDqxc,GAAUl3c,UAAV,OAvEA,SAAyB1F,GACvB,IAAIhI,EAAO0F,KAAKq/c,SACZl+c,EAAQw/c,GAAarmd,EAAMgI,GAE/B,QAAInB,EAAQ,KAIRA,GADY7G,EAAKqG,OAAS,EAE5BrG,EAAKszD,MAELvsD,GAAO5C,KAAKnE,EAAM6G,EAAO,KAEzBnB,KAAK6N,MACA,EACR,EAyDDqxc,GAAUl3c,UAAUpO,IA9CpB,SAAsB0I,GACpB,IAAIhI,EAAO0F,KAAKq/c,SACZl+c,EAAQw/c,GAAarmd,EAAMgI,GAE/B,OAAOnB,EAAQ,EAAIwG,EAAYrN,EAAK6G,GAAO,EAC5C,EA0CD+9c,GAAUl3c,UAAUrO,IA/BpB,SAAsB2I,GACpB,OAAOq+c,GAAa3gd,KAAKq/c,SAAU/8c,IAAQ,CAC5C,EA8BD48c,GAAUl3c,UAAU7O,IAlBpB,SAAsBmJ,EAAKpE,GACzB,IAAI5D,EAAO0F,KAAKq/c,SACZl+c,EAAQw/c,GAAarmd,EAAMgI,GAQ/B,OANInB,EAAQ,KACRnB,KAAK6N,KACPvT,EAAK8F,KAAK,CAACkC,EAAKpE,KAEhB5D,EAAK6G,GAAO,GAAKjD,EAEZ8B,IACR,EA0GDm/c,GAASn3c,UAAUm/B,MAtEnB,WACEnnC,KAAK6N,KAAO,EACZ7N,KAAKq/c,SAAW,CACd,KAAQ,IAAIJ,GACZ,IAAO,IAAK/ld,IAAOgmd,IACnB,OAAU,IAAID,GAEjB,EAgEDE,GAASn3c,UAAT,OArDA,SAAwB1F,GACtB,IAAIkB,EAASkgd,GAAW1jd,KAAMsC,GAAjB,OAAgCA,GAE7C,OADAtC,KAAK6N,MAAQrK,EAAS,EAAI,EACnBA,CACR,EAkDD27c,GAASn3c,UAAUpO,IAvCnB,SAAqB0I,GACnB,OAAOohd,GAAW1jd,KAAMsC,GAAK1I,IAAI0I,EAClC,EAsCD68c,GAASn3c,UAAUrO,IA3BnB,SAAqB2I,GACnB,OAAOohd,GAAW1jd,KAAMsC,GAAK3I,IAAI2I,EAClC,EA0BD68c,GAASn3c,UAAU7O,IAdnB,SAAqBmJ,EAAKpE,GACxB,IAAI5D,EAAOopd,GAAW1jd,KAAMsC,GACxBuL,EAAOvT,EAAKuT,KAIhB,OAFAvT,EAAKnB,IAAImJ,EAAKpE,GACd8B,KAAK6N,MAAQvT,EAAKuT,MAAQA,EAAO,EAAI,EAC9B7N,IACR,EA0DDo/c,GAASp3c,UAAU+lC,IAAMqxa,GAASp3c,UAAU5H,KAnB5C,SAAqBlC,GAEnB,OADA8B,KAAKq/c,SAASlmd,IAAI+E,EAAOowc,GAClBtuc,IACR,EAiBDo/c,GAASp3c,UAAUrO,IANnB,SAAqBuE,GACnB,OAAO8B,KAAKq/c,SAAS1ld,IAAIuE,EAC1B,EAsGDohd,GAAMt3c,UAAUm/B,MA3EhB,WACEnnC,KAAKq/c,SAAW,IAAIH,GACpBl/c,KAAK6N,KAAO,CACb,EAyEDyxc,GAAMt3c,UAAN,OA9DA,SAAqB1F,GACnB,IAAIhI,EAAO0F,KAAKq/c,SACZ77c,EAASlJ,EAAI,OAAWgI,GAG5B,OADAtC,KAAK6N,KAAOvT,EAAKuT,KACVrK,CACR,EAyDD87c,GAAMt3c,UAAUpO,IA9ChB,SAAkB0I,GAChB,OAAOtC,KAAKq/c,SAASzld,IAAI0I,EAC1B,EA6CDg9c,GAAMt3c,UAAUrO,IAlChB,SAAkB2I,GAChB,OAAOtC,KAAKq/c,SAAS1ld,IAAI2I,EAC1B,EAiCDg9c,GAAMt3c,UAAU7O,IArBhB,SAAkBmJ,EAAKpE,GACrB,IAAI5D,EAAO0F,KAAKq/c,SAChB,GAAI/kd,aAAgB4kd,GAAW,CAC7B,IAAIyE,EAAQrpd,EAAK+kd,SACjB,IAAKnmd,IAAQyqd,EAAMhjd,OAASijd,IAG1B,OAFAD,EAAMvjd,KAAK,CAACkC,EAAKpE,IACjB8B,KAAK6N,OAASvT,EAAKuT,KACZ7N,KAET1F,EAAO0F,KAAKq/c,SAAW,IAAIF,GAASwE,EACrC,CAGD,OAFArpd,EAAKnB,IAAImJ,EAAKpE,GACd8B,KAAK6N,KAAOvT,EAAKuT,KACV7N,IACR,EAqcD,IAAI6gd,GAAWgD,GAAeC,IAU1BC,GAAgBF,GAAeG,IAAiB,GAWpD,SAASC,GAAUl0c,EAAYonc,GAC7B,IAAI3zc,GAAS,EAKb,OAJAq9c,GAAS9wc,GAAY,SAAS7R,EAAOiD,EAAO4O,GAE1C,OADAvM,IAAW2zc,EAAUj5c,EAAOiD,EAAO4O,EAEpC,IACMvM,CACR,CAYD,SAAS0gd,GAAa75c,EAAO0sc,EAAUU,GAIrC,IAHA,IAAIt2c,GAAS,EACTR,EAAS0J,EAAM1J,SAEVQ,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdsY,EAAUs9b,EAAS74c,GAEvB,GAAe,MAAXub,IAAoB8pc,IAAa57c,EAC5B8R,IAAYA,IAAY0qc,GAAS1qc,GAClCg+b,EAAWh+b,EAAS8pc,IAE1B,IAAIA,EAAW9pc,EACXjW,EAAStF,CAEhB,CACD,OAAOsF,CACR,CAsCD,SAAS4gd,GAAWr0c,EAAYonc,GAC9B,IAAI3zc,EAAS,GAMb,OALAq9c,GAAS9wc,GAAY,SAAS7R,EAAOiD,EAAO4O,GACtConc,EAAUj5c,EAAOiD,EAAO4O,IAC1BvM,EAAOpD,KAAKlC,EAEf,IACMsF,CACR,CAaD,SAAS6gd,GAAYh6c,EAAO6nD,EAAOilZ,EAAWmN,EAAU9gd,GACtD,IAAIrC,GAAS,EACTR,EAAS0J,EAAM1J,OAKnB,IAHAw2c,IAAcA,EAAYoN,IAC1B/gd,IAAWA,EAAS,MAEXrC,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACd+wD,EAAQ,GAAKilZ,EAAUj5c,GACrBg0D,EAAQ,EAEVmyZ,GAAYnmd,EAAOg0D,EAAQ,EAAGilZ,EAAWmN,EAAU9gd,GAEnDm0c,GAAUn0c,EAAQtF,GAEVomd,IACV9gd,EAAOA,EAAO7C,QAAUzC,EAE3B,CACD,OAAOsF,CACR,CAaD,IAAIghd,GAAUC,KAYVC,GAAeD,IAAc,GAUjC,SAASX,GAAWn+a,EAAQoxa,GAC1B,OAAOpxa,GAAU6+a,GAAQ7+a,EAAQoxa,EAAU/3c,GAC5C,CAUD,SAASgld,GAAgBr+a,EAAQoxa,GAC/B,OAAOpxa,GAAU++a,GAAa/+a,EAAQoxa,EAAU/3c,GACjD,CAWD,SAAS2ld,GAAch/a,EAAQ76B,GAC7B,OAAOssc,GAAYtsc,GAAO,SAASxI,GACjC,OAAOusD,GAAWlpB,EAAOrjC,GAC1B,GACF,CAUD,SAASsid,GAAQj/a,EAAQhjC,GAMvB,IAHA,IAAIxB,EAAQ,EACRR,GAHJgC,EAAOkid,GAASlid,EAAMgjC,IAGJhlC,OAED,MAAVglC,GAAkBxkC,EAAQR,GAC/BglC,EAASA,EAAOm/a,GAAMnid,EAAKxB,OAE7B,OAAQA,GAASA,GAASR,EAAUglC,EAASh+B,CAC9C,CAaD,SAASo9c,GAAep/a,EAAQq/a,EAAUC,GACxC,IAAIzhd,EAASwhd,EAASr/a,GACtB,OAAO7gC,GAAQ6gC,GAAUniC,EAASm0c,GAAUn0c,EAAQyhd,EAAYt/a,GACjE,CASD,SAASu/a,GAAWhnd,GAClB,OAAa,MAATA,EACKA,IAAUyJ,EAn7FJ,qBARL,gBA67FFm0c,IAAkBA,MAAkB99c,GAAOE,GA23FrD,SAAmBA,GACjB,IAAIind,EAAQtlc,GAAephB,KAAKP,EAAO49c,IACnC70c,EAAM/I,EAAM49c,IAEhB,IACE59c,EAAM49c,IAAkBn0c,EACxB,IAAIy9c,GAAW,CACH,CAAZ,MAAOn8c,GAAK,CAEd,IAAIzF,EAAS03c,GAAqBz8c,KAAKP,GACnCknd,IACED,EACFjnd,EAAM49c,IAAkB70c,SAEjB/I,EAAM49c,KAGjB,OAAOt4c,CACR,CA54FK6hd,CAAUnnd,GA+5GhB,SAAwBA,GACtB,OAAOg9c,GAAqBz8c,KAAKP,EAClC,CAh6GKond,CAAepnd,EACpB,CAWD,SAASqnd,GAAOrnd,EAAOspB,GACrB,OAAOtpB,EAAQspB,CAChB,CAUD,SAASg+b,GAAQ7/a,EAAQrjC,GACvB,OAAiB,MAAVqjC,GAAkB9lB,GAAephB,KAAKknC,EAAQrjC,EACtD,CAUD,SAASmjd,GAAU9/a,EAAQrjC,GACzB,OAAiB,MAAVqjC,GAAkBrjC,KAAOtE,GAAO2nC,EACxC,CAyBD,SAAS+/a,GAAiBC,EAAQ5O,EAAUU,GAS1C,IARA,IAAIlyc,EAAWkyc,EAAaD,GAAoBF,GAC5C32c,EAASgld,EAAO,GAAGhld,OACnBild,EAAYD,EAAOhld,OACnBkld,EAAWD,EACXE,EAASjhd,EAAM+gd,GACf5jN,EAAY+jN,IACZvid,EAAS,GAENqid,KAAY,CACjB,IAAIx7c,EAAQs7c,EAAOE,GACfA,GAAY9O,IACd1sc,EAAQqtc,GAASrtc,EAAO2uc,GAAUjC,KAEpC/0M,EAAY66M,GAAUxyc,EAAM1J,OAAQqhQ,GACpC8jN,EAAOD,IAAapO,IAAeV,GAAap2c,GAAU,KAAO0J,EAAM1J,QAAU,KAC7E,IAAIy+c,GAASyG,GAAYx7c,GACzB1C,CACL,CACD0C,EAAQs7c,EAAO,GAEf,IAAIxkd,GAAS,EACT6kd,EAAOF,EAAO,GAElB78R,EACA,OAAS9nL,EAAQR,GAAU6C,EAAO7C,OAASqhQ,GAAW,CACpD,IAAI9jQ,EAAQmM,EAAMlJ,GACdoid,EAAWxM,EAAWA,EAAS74c,GAASA,EAG5C,GADAA,EAASu5c,GAAwB,IAAVv5c,EAAeA,EAAQ,IACxC8nd,EACE9M,GAAS8M,EAAMzC,GACfh+c,EAAS/B,EAAQ+/c,EAAU9L,IAC5B,CAEL,IADAoO,EAAWD,IACFC,GAAU,CACjB,IAAIv1c,EAAQw1c,EAAOD,GACnB,KAAMv1c,EACE4oc,GAAS5oc,EAAOizc,GAChBh+c,EAASogd,EAAOE,GAAWtC,EAAU9L,IAE3C,SAASxuR,CAEZ,CACG+8R,GACFA,EAAK5ld,KAAKmjd,GAEZ//c,EAAOpD,KAAKlC,EACb,CACF,CACD,OAAOsF,CACR,CA8BD,SAASyid,GAAWtgb,EAAQhjC,EAAM/E,GAGhC,IAAImT,EAAiB,OADrB40B,EAAS96B,GAAO86B,EADhBhjC,EAAOkid,GAASlid,EAAMgjC,KAEMA,EAASA,EAAOm/a,GAAMjwZ,GAAKlyD,KACvD,OAAe,MAARoO,EAAepJ,EAAYoQ,GAAMhH,EAAM40B,EAAQ/nC,EACvD,CASD,SAASsod,GAAgBhod,GACvB,OAAO8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAUgxc,CACpD,CAsCD,SAASiX,GAAYjod,EAAOspB,EAAO65b,EAASC,EAAYz0E,GACtD,OAAI3uY,IAAUspB,IAGD,MAATtpB,GAA0B,MAATspB,IAAmBw2b,GAAa9/c,KAAW8/c,GAAax2b,GACpEtpB,IAAUA,GAASspB,IAAUA,EAmBxC,SAAyBme,EAAQne,EAAO65b,EAASC,EAAY8E,EAAWv5E,GACtE,IAAIw5E,EAAWvhd,GAAQ6gC,GACnB2gb,EAAWxhd,GAAQ0iB,GACnB++b,EAASF,EAAWlX,EAAWwS,GAAOh8a,GACtC6gb,EAASF,EAAWnX,EAAWwS,GAAOn6b,GAKtCi/b,GAHJF,EAASA,GAAUrX,EAAUS,EAAY4W,IAGhB5W,EACrB+W,GAHJF,EAASA,GAAUtX,EAAUS,EAAY6W,IAGhB7W,EACrBgX,EAAYJ,GAAUC,EAE1B,GAAIG,GAAanK,GAAS72a,GAAS,CACjC,IAAK62a,GAASh1b,GACZ,OAAO,EAET6+b,GAAW,EACXI,GAAW,CACZ,CACD,GAAIE,IAAcF,EAEhB,OADA55E,IAAUA,EAAQ,IAAIyyE,IACd+G,GAAYzP,GAAajxa,GAC7Bihb,GAAYjhb,EAAQne,EAAO65b,EAASC,EAAY8E,EAAWv5E,GA81EnE,SAAoBlnW,EAAQne,EAAOvgB,EAAKo6c,EAASC,EAAY8E,EAAWv5E,GACtE,OAAQ5lY,GACN,KAAKkpc,EACH,GAAKxqa,EAAO88a,YAAcj7b,EAAMi7b,YAC3B98a,EAAO68a,YAAch7b,EAAMg7b,WAC9B,OAAO,EAET78a,EAASA,EAAO48a,OAChB/6b,EAAQA,EAAM+6b,OAEhB,KAAKrS,EACH,QAAKvqa,EAAO88a,YAAcj7b,EAAMi7b,aAC3B2D,EAAU,IAAI7K,GAAW51a,GAAS,IAAI41a,GAAW/zb,KAKxD,KAAK4nb,EACL,KAAKC,EACL,KAAKK,EAGH,OAAO9/X,IAAIjqC,GAASne,GAEtB,KAAK8nb,EACH,OAAO3pa,EAAOvsC,MAAQouB,EAAMpuB,MAAQusC,EAAOvrC,SAAWotB,EAAMptB,QAE9D,KAAKy1c,EACL,KAAKE,EAIH,OAAOpqa,GAAWne,EAAQ,GAE5B,KAAKiob,EACH,IAAIoX,EAAUjN,GAEhB,KAAK9J,EACH,IAAIgX,EAxnLe,EAwnLHzF,EAGhB,GAFAwF,IAAYA,EAAU9M,IAElBp0a,EAAO93B,MAAQ2Z,EAAM3Z,OAASi5c,EAChC,OAAO,EAGT,IAAIhE,EAAUj2E,EAAMjzY,IAAI+rC,GACxB,GAAIm9a,EACF,OAAOA,GAAWt7b,EAEpB65b,GAloLqB,EAqoLrBx0E,EAAM1zY,IAAIwsC,EAAQne,GAClB,IAAIhkB,EAASojd,GAAYC,EAAQlhb,GAASkhb,EAAQr/b,GAAQ65b,EAASC,EAAY8E,EAAWv5E,GAE1F,OADAA,EAAK,OAAWlnW,GACTniC,EAET,KAAKwsc,EACH,GAAI6N,GACF,OAAOA,GAAcp/c,KAAKknC,IAAWk4a,GAAcp/c,KAAK+oB,GAG9D,OAAO,CACR,CA55EOu/b,CAAWphb,EAAQne,EAAO++b,EAAQlF,EAASC,EAAY8E,EAAWv5E,GAExE,KAvvGuB,EAuvGjBw0E,GAAiC,CACrC,IAAI2F,EAAeP,GAAY5mc,GAAephB,KAAKknC,EAAQ,eACvDshb,EAAeP,GAAY7mc,GAAephB,KAAK+oB,EAAO,eAE1D,GAAIw/b,GAAgBC,EAAc,CAChC,IAAIC,EAAeF,EAAerhb,EAAOznC,QAAUynC,EAC/Cwhb,EAAeF,EAAez/b,EAAMtpB,QAAUspB,EAGlD,OADAqlX,IAAUA,EAAQ,IAAIyyE,IACf8G,EAAUc,EAAcC,EAAc9F,EAASC,EAAYz0E,EACnE,CACF,CACD,IAAK85E,EACH,OAAO,EAGT,OADA95E,IAAUA,EAAQ,IAAIyyE,IA05ExB,SAAsB35a,EAAQne,EAAO65b,EAASC,EAAY8E,EAAWv5E,GACnE,IAAIi6E,EAjqLmB,EAiqLPzF,EACZ+F,EAAWnE,GAAWt9a,GACtB0hb,EAAYD,EAASzmd,OAErBild,EADW3C,GAAWz7b,GACD7mB,OAEzB,GAAI0md,GAAazB,IAAckB,EAC7B,OAAO,EAET,IAAI3ld,EAAQkmd,EACZ,KAAOlmd,KAAS,CACd,IAAImB,EAAM8kd,EAASjmd,GACnB,KAAM2ld,EAAYxkd,KAAOklB,EAAQ3H,GAAephB,KAAK+oB,EAAOllB,IAC1D,OAAO,CAEV,CAED,IAAIgld,EAAaz6E,EAAMjzY,IAAI+rC,GACvB4hb,EAAa16E,EAAMjzY,IAAI4tB,GAC3B,GAAI8/b,GAAcC,EAChB,OAAOD,GAAc9/b,GAAS+/b,GAAc5hb,EAE9C,IAAIniC,GAAS,EACbqpY,EAAM1zY,IAAIwsC,EAAQne,GAClBqlX,EAAM1zY,IAAIquB,EAAOme,GAEjB,IAAI6hb,EAAWV,EACf,OAAS3ld,EAAQkmd,GAAW,CAE1B,IAAI3G,EAAW/6a,EADfrjC,EAAM8kd,EAASjmd,IAEXsmd,EAAWjgc,EAAMllB,GAErB,GAAIg/c,EACF,IAAIoG,EAAWZ,EACXxF,EAAWmG,EAAU/G,EAAUp+c,EAAKklB,EAAOme,EAAQknW,GACnDy0E,EAAWZ,EAAU+G,EAAUnld,EAAKqjC,EAAQne,EAAOqlX,GAGzD,KAAM66E,IAAa//c,EACV+4c,IAAa+G,GAAYrB,EAAU1F,EAAU+G,EAAUpG,EAASC,EAAYz0E,GAC7E66E,GACD,CACLlkd,GAAS,EACT,KACD,CACDgkd,IAAaA,EAAkB,eAAPlld,EACzB,CACD,GAAIkB,IAAWgkd,EAAU,CACvB,IAAIG,EAAUhib,EAAO0B,YACjBugb,EAAUpgc,EAAM6f,YAGhBsgb,GAAWC,KACV,gBAAiBjib,MAAU,gBAAiBne,IACzB,mBAAXmgc,GAAyBA,aAAmBA,GACjC,mBAAXC,GAAyBA,aAAmBA,IACvDpkd,GAAS,EAEZ,CAGD,OAFAqpY,EAAK,OAAWlnW,GAChBknW,EAAK,OAAWrlX,GACThkB,CACR,CAx9EQqkd,CAAalib,EAAQne,EAAO65b,EAASC,EAAY8E,EAAWv5E,EACpE,CA5DQi7E,CAAgB5pd,EAAOspB,EAAO65b,EAASC,EAAY6E,GAAat5E,GACxE,CAkFD,SAASk7E,GAAYpib,EAAQ4B,EAAQygb,EAAW1G,GAC9C,IAAIngd,EAAQ6md,EAAUrnd,OAClBA,EAASQ,EACT8md,GAAgB3G,EAEpB,GAAc,MAAV37a,EACF,OAAQhlC,EAGV,IADAglC,EAAS3nC,GAAO2nC,GACTxkC,KAAS,CACd,IAAI7G,EAAO0td,EAAU7md,GACrB,GAAK8md,GAAgB3td,EAAK,GAClBA,EAAK,KAAOqrC,EAAOrrC,EAAK,MACtBA,EAAK,KAAMqrC,GAEnB,OAAO,CAEV,CACD,OAASxkC,EAAQR,GAAQ,CAEvB,IAAI2B,GADJhI,EAAO0td,EAAU7md,IACF,GACXu/c,EAAW/6a,EAAOrjC,GAClB4ld,EAAW5td,EAAK,GAEpB,GAAI2td,GAAgB3td,EAAK,IACvB,GAAIomd,IAAa/4c,KAAerF,KAAOqjC,GACrC,OAAO,MAEJ,CACL,IAAIknW,EAAQ,IAAIyyE,GAChB,GAAIgC,EACF,IAAI99c,EAAS89c,EAAWZ,EAAUwH,EAAU5ld,EAAKqjC,EAAQ4B,EAAQslW,GAEnE,KAAMrpY,IAAWmE,EACTw+c,GAAY+B,EAAUxH,EAAUyH,EAA+C7G,EAAYz0E,GAC3FrpY,GAEN,OAAO,CAEV,CACF,CACD,OAAO,CACR,CAUD,SAAS4kd,GAAalqd,GACpB,SAAKmiB,GAASniB,KA05FE6S,EA15FiB7S,EA25FxB68c,IAAeA,MAAchqc,MAx5FxB89C,GAAW3wD,GAASm9c,GAAa7I,IAChCp8b,KAAKmnc,GAASr/c,IAs5F/B,IAAkB6S,CAr5FjB,CA2CD,SAASs3c,GAAanqd,GAGpB,MAAoB,mBAATA,EACFA,EAEI,MAATA,EACKoqd,GAEW,iBAATpqd,EACF4G,GAAQ5G,GACXqqd,GAAoBrqd,EAAM,GAAIA,EAAM,IACpCsqd,GAAYtqd,GAEXiP,GAASjP,EACjB,CASD,SAASuqd,GAAS9ib,GAChB,IAAK+ib,GAAY/ib,GACf,OAAOg3a,GAAWh3a,GAEpB,IAAIniC,EAAS,GACb,IAAK,IAAIlB,KAAOtE,GAAO2nC,GACjB9lB,GAAephB,KAAKknC,EAAQrjC,IAAe,eAAPA,GACtCkB,EAAOpD,KAAKkC,GAGhB,OAAOkB,CACR,CASD,SAASmld,GAAWhjb,GAClB,IAAKtlB,GAASslB,GACZ,OA09FJ,SAAsBA,GACpB,IAAIniC,EAAS,GACb,GAAc,MAAVmiC,EACF,IAAK,IAAIrjC,KAAOtE,GAAO2nC,GACrBniC,EAAOpD,KAAKkC,GAGhB,OAAOkB,CACR,CAl+FUold,CAAajjb,GAEtB,IAAIkjb,EAAUH,GAAY/ib,GACtBniC,EAAS,GAEb,IAAK,IAAIlB,KAAOqjC,GACD,eAAPrjC,IAAyBumd,GAAYhpc,GAAephB,KAAKknC,EAAQrjC,KACrEkB,EAAOpD,KAAKkC,GAGhB,OAAOkB,CACR,CAWD,SAASsld,GAAO5qd,EAAOspB,GACrB,OAAOtpB,EAAQspB,CAChB,CAUD,SAASuhc,GAAQh5c,EAAYgnc,GAC3B,IAAI51c,GAAS,EACTqC,EAASwld,GAAYj5c,GAAclL,EAAMkL,EAAWpP,QAAU,GAKlE,OAHAkgd,GAAS9wc,GAAY,SAAS7R,EAAOoE,EAAKyN,GACxCvM,IAASrC,GAAS41c,EAAS74c,EAAOoE,EAAKyN,EACxC,IACMvM,CACR,CASD,SAASgld,GAAYjhb,GACnB,IAAIygb,EAAYiB,GAAa1hb,GAC7B,OAAwB,GAApBygb,EAAUrnd,QAAeqnd,EAAU,GAAG,GACjCkB,GAAwBlB,EAAU,GAAG,GAAIA,EAAU,GAAG,IAExD,SAASrib,GACd,OAAOA,IAAW4B,GAAUwgb,GAAYpib,EAAQ4B,EAAQygb,EACzD,CACF,CAUD,SAASO,GAAoB5ld,EAAMuld,GACjC,OAAIiB,GAAMxmd,IAASymd,GAAmBlB,GAC7BgB,GAAwBpE,GAAMnid,GAAOuld,GAEvC,SAASvib,GACd,IAAI+6a,EAAW9md,GAAI+rC,EAAQhjC,GAC3B,OAAQ+9c,IAAa/4c,GAAa+4c,IAAawH,EAC3CmB,GAAM1jb,EAAQhjC,GACdwjd,GAAY+B,EAAUxH,EAAUyH,EACrC,CACF,CAaD,SAASmB,GAAU3jb,EAAQ4B,EAAQgib,EAAUjI,EAAYz0E,GACnDlnW,IAAW4B,GAGfi9a,GAAQj9a,GAAQ,SAAS2gb,EAAU5ld,GAEjC,GADAuqY,IAAUA,EAAQ,IAAIyyE,IAClBj/b,GAAS6nc,IA+BjB,SAAuBvib,EAAQ4B,EAAQjlC,EAAKind,EAAUC,EAAWlI,EAAYz0E,GAC3E,IAAI6zE,EAAW+I,GAAQ9jb,EAAQrjC,GAC3B4ld,EAAWuB,GAAQlib,EAAQjlC,GAC3Bwgd,EAAUj2E,EAAMjzY,IAAIsud,GAExB,GAAIpF,EAEF,YADAvC,GAAiB56a,EAAQrjC,EAAKwgd,GAGhC,IAAIj6a,EAAWy4a,EACXA,EAAWZ,EAAUwH,EAAW5ld,EAAM,GAAKqjC,EAAQ4B,EAAQslW,GAC3DllY,EAEA07c,EAAWx6a,IAAalhC,EAE5B,GAAI07c,EAAU,CACZ,IAAI5D,EAAQ36c,GAAQojd,GAChBtI,GAAUH,GAASjD,GAAS0L,GAC5BwB,GAAWjK,IAAUG,GAAUhJ,GAAasR,GAEhDr/a,EAAWq/a,EACPzI,GAASG,GAAU8J,EACjB5kd,GAAQ47c,GACV73a,EAAW63a,EAEJiJ,GAAkBjJ,GACzB73a,EAAWu3a,GAAUM,GAEdd,GACPyD,GAAW,EACXx6a,EAAWg5a,GAAYqG,GAAU,IAE1BwB,GACPrG,GAAW,EACXx6a,EAAW85a,GAAgBuF,GAAU,IAGrCr/a,EAAW,GAGNzB,GAAc8gb,IAAavI,GAAYuI,IAC9Cr/a,EAAW63a,EACPf,GAAYe,GACd73a,EAAW+gb,GAAclJ,GAEjBrgc,GAASqgc,KAAa7xZ,GAAW6xZ,KACzC73a,EAAWi5a,GAAgBoG,KAI7B7E,GAAW,CAEd,CACGA,IAEFx2E,EAAM1zY,IAAI+ud,EAAUr/a,GACpB2gb,EAAU3gb,EAAUq/a,EAAUqB,EAAUjI,EAAYz0E,GACpDA,EAAK,OAAWq7E,IAElB3H,GAAiB56a,EAAQrjC,EAAKumC,EAC/B,CA1FKghb,CAAclkb,EAAQ4B,EAAQjlC,EAAKind,EAAUD,GAAWhI,EAAYz0E,OAEjE,CACH,IAAIhkW,EAAWy4a,EACXA,EAAWmI,GAAQ9jb,EAAQrjC,GAAM4ld,EAAW5ld,EAAM,GAAKqjC,EAAQ4B,EAAQslW,GACvEllY,EAEAkhC,IAAalhC,IACfkhC,EAAWq/a,GAEb3H,GAAiB56a,EAAQrjC,EAAKumC,EAC/B,CACF,GAAEo5a,GACJ,CAuFD,SAAS6H,GAAQz/c,EAAO4Z,GACtB,IAAItjB,EAAS0J,EAAM1J,OACnB,GAAKA,EAIL,OAAOo/c,GADP97b,GAAKA,EAAI,EAAItjB,EAAS,EACJA,GAAU0J,EAAM4Z,GAAKtc,CACxC,CAWD,SAASoid,GAAYh6c,EAAYi6c,EAAWC,GAExCD,EADEA,EAAUrpd,OACA+2c,GAASsS,GAAW,SAASjT,GACvC,OAAIjyc,GAAQiyc,GACH,SAAS74c,GACd,OAAO0md,GAAQ1md,EAA2B,IAApB64c,EAASp2c,OAAeo2c,EAAS,GAAKA,EAC7D,EAEIA,CACR,IAEW,CAACuR,IAGf,IAAInnd,GAAS,EACb6od,EAAYtS,GAASsS,EAAWhR,GAAUkR,OAE1C,IAAI1md,EAASuld,GAAQh5c,GAAY,SAAS7R,EAAOoE,EAAKyN,GACpD,IAAIsjF,EAAWqkX,GAASsS,GAAW,SAASjT,GAC1C,OAAOA,EAAS74c,EACjB,IACD,MAAO,CAAE,SAAYm1F,EAAU,QAAWlyF,EAAO,MAASjD,EAC3D,IAED,OA5xFJ,SAAoBmM,EAAO8/c,GACzB,IAAIxpd,EAAS0J,EAAM1J,OAGnB,IADA0J,EAAM+uB,KAAK+wb,GACJxpd,KACL0J,EAAM1J,GAAU0J,EAAM1J,GAAQzC,MAEhC,OAAOmM,CACR,CAoxFU+/c,CAAW5md,GAAQ,SAASmiC,EAAQne,GACzC,OA04BJ,SAAyBme,EAAQne,EAAOyic,GACtC,IAAI9od,GAAS,EACTkpd,EAAc1kb,EAAO0tD,SACrBi3X,EAAc9ic,EAAM6rE,SACpB1yF,EAAS0pd,EAAY1pd,OACrB4pd,EAAeN,EAAOtpd,OAE1B,OAASQ,EAAQR,GAAQ,CACvB,IAAI6C,EAASgnd,GAAiBH,EAAYlpd,GAAQmpd,EAAYnpd,IAC9D,GAAIqC,EACF,OAAIrC,GAASopd,EACJ/md,EAGFA,GAAmB,QADdymd,EAAO9od,IACiB,EAAI,EAE3C,CAQD,OAAOwkC,EAAOxkC,MAAQqmB,EAAMrmB,KAC7B,CAn6BUspd,CAAgB9kb,EAAQne,EAAOyic,EACvC,GACF,CA0BD,SAASS,GAAW/kb,EAAQs7a,EAAO9J,GAKjC,IAJA,IAAIh2c,GAAS,EACTR,EAASsgd,EAAMtgd,OACf6C,EAAS,CAAC,IAELrC,EAAQR,GAAQ,CACvB,IAAIgC,EAAOs+c,EAAM9/c,GACbjD,EAAQ0md,GAAQj/a,EAAQhjC,GAExBw0c,EAAUj5c,EAAOyE,IACnBgod,GAAQnnd,EAAQqhd,GAASlid,EAAMgjC,GAASznC,EAE3C,CACD,OAAOsF,CACR,CA0BD,SAASond,GAAYvgd,EAAOsrB,EAAQohb,EAAUU,GAC5C,IAAIr2c,EAAUq2c,EAAae,GAAkBjB,GACzCp2c,GAAS,EACTR,EAASg1B,EAAOh1B,OAChBqld,EAAO37c,EAQX,IANIA,IAAUsrB,IACZA,EAASyqb,GAAUzqb,IAEjBohb,IACFiP,EAAOtO,GAASrtc,EAAO2uc,GAAUjC,OAE1B51c,EAAQR,GAKf,IAJA,IAAI2rO,EAAY,EACZpuO,EAAQy3B,EAAOx0B,GACfoid,EAAWxM,EAAWA,EAAS74c,GAASA,GAEpCouO,EAAYlrO,EAAQ4kd,EAAMzC,EAAUj3O,EAAWmrO,KAAgB,GACjEuO,IAAS37c,GACXhJ,GAAO5C,KAAKund,EAAM15O,EAAW,GAE/BjrO,GAAO5C,KAAK4L,EAAOiiO,EAAW,GAGlC,OAAOjiO,CACR,CAWD,SAASwgd,GAAWxgd,EAAO02G,GAIzB,IAHA,IAAIpgH,EAAS0J,EAAQ02G,EAAQpgH,OAAS,EAClCqV,EAAYrV,EAAS,EAElBA,KAAU,CACf,IAAIQ,EAAQ4/G,EAAQpgH,GACpB,GAAIA,GAAUqV,GAAa7U,IAAUiM,EAAU,CAC7C,IAAIA,EAAWjM,EACX4+c,GAAQ5+c,GACVE,GAAO5C,KAAK4L,EAAOlJ,EAAO,GAE1B2pd,GAAUzgd,EAAOlJ,EAEpB,CACF,CACD,OAAOkJ,CACR,CAWD,SAAS41c,GAAWiB,EAAOC,GACzB,OAAOD,EAAQ7E,GAAYW,MAAkBmE,EAAQD,EAAQ,GAC9D,CAiCD,SAAS6J,GAAW31c,EAAQ6O,GAC1B,IAAIzgB,EAAS,GACb,IAAK4R,GAAU6O,EAAI,GAAKA,EAAI6qb,EAC1B,OAAOtrc,EAIT,GACMygB,EAAI,IACNzgB,GAAU4R,IAEZ6O,EAAIo4b,GAAYp4b,EAAI,MAElB7O,GAAUA,SAEL6O,GAET,OAAOzgB,CACR,CAUD,SAASwnd,GAASj6c,EAAMwrB,GACtB,OAAO0ub,GAAYC,GAASn6c,EAAMwrB,EAAO+rb,IAAWv3c,EAAO,GAC5D,CASD,SAASo6c,GAAWp7c,GAClB,OAAOiwc,GAAYrqb,GAAO5lB,GAC3B,CAUD,SAASq7c,GAAer7c,EAAYkU,GAClC,IAAI5Z,EAAQsrB,GAAO5lB,GACnB,OAAOowc,GAAY91c,EAAOg2c,GAAUp8b,EAAG,EAAG5Z,EAAM1J,QACjD,CAYD,SAASgqd,GAAQhlb,EAAQhjC,EAAMzE,EAAOojd,GACpC,IAAKjhc,GAASslB,GACZ,OAAOA,EAST,IALA,IAAIxkC,GAAS,EACTR,GAHJgC,EAAOkid,GAASlid,EAAMgjC,IAGJhlC,OACdqV,EAAYrV,EAAS,EACrB0qd,EAAS1lb,EAEI,MAAV0lb,KAAoBlqd,EAAQR,GAAQ,CACzC,IAAI2B,EAAMwid,GAAMnid,EAAKxB,IACjB0nC,EAAW3qC,EAEf,GAAY,cAARoE,GAA+B,gBAARA,GAAiC,cAARA,EAClD,OAAOqjC,EAGT,GAAIxkC,GAAS6U,EAAW,CACtB,IAAI0qc,EAAW2K,EAAO/od,IACtBumC,EAAWy4a,EAAaA,EAAWZ,EAAUp+c,EAAK+od,GAAU1jd,KAC3CA,IACfkhC,EAAWxoB,GAASqgc,GAChBA,EACCX,GAAQp9c,EAAKxB,EAAQ,IAAM,GAAK,CAAC,EAEzC,CACDs/c,GAAY4K,EAAQ/od,EAAKumC,GACzBwib,EAASA,EAAO/od,EACjB,CACD,OAAOqjC,CACR,CAUD,IAAI2lb,GAAelO,GAAqB,SAASrsc,EAAMzW,GAErD,OADA8id,GAAQjkd,IAAI4X,EAAMzW,GACXyW,CACR,EAH4Bu3c,GAazBiD,GAAmBttd,GAA4B,SAAS8S,EAAMqE,GAChE,OAAOnX,GAAe8S,EAAM,WAAY,CACtC,cAAgB,EAChB,YAAc,EACd,MAAS0b,GAASrX,GAClB,UAAY,GAEf,EAPuCkzc,GAgBxC,SAASkD,GAAYz7c,GACnB,OAAOowc,GAAYxqb,GAAO5lB,GAC3B,CAWD,SAAS07c,GAAUphd,EAAOkyB,EAAOryB,GAC/B,IAAI/I,GAAS,EACTR,EAAS0J,EAAM1J,OAEf47B,EAAQ,IACVA,GAASA,EAAQ57B,EAAS,EAAKA,EAAS47B,IAE1CryB,EAAMA,EAAMvJ,EAASA,EAASuJ,GACpB,IACRA,GAAOvJ,GAETA,EAAS47B,EAAQryB,EAAM,EAAMA,EAAMqyB,IAAW,EAC9CA,KAAW,EAGX,IADA,IAAI/4B,EAASqB,EAAMlE,KACVQ,EAAQR,GACf6C,EAAOrC,GAASkJ,EAAMlJ,EAAQo7B,GAEhC,OAAO/4B,CACR,CAWD,SAASkod,GAAS37c,EAAYonc,GAC5B,IAAI3zc,EAMJ,OAJAq9c,GAAS9wc,GAAY,SAAS7R,EAAOiD,EAAO4O,GAE1C,QADAvM,EAAS2zc,EAAUj5c,EAAOiD,EAAO4O,GAElC,MACQvM,CACV,CAcD,SAASmod,GAAgBthd,EAAOnM,EAAO0td,GACrC,IAAIC,EAAM,EACNC,EAAgB,MAATzhd,EAAgBwhd,EAAMxhd,EAAM1J,OAEvC,GAAoB,iBAATzC,GAAqBA,IAAUA,GAAS4td,GAn/H3B9c,WAm/H0D,CAChF,KAAO6c,EAAMC,GAAM,CACjB,IAAIC,EAAOF,EAAMC,IAAU,EACvBvI,EAAWl5c,EAAM0hd,GAEJ,OAAbxI,IAAsBY,GAASZ,KAC9BqI,EAAcrI,GAAYrld,EAAUqld,EAAWrld,GAClD2td,EAAME,EAAM,EAEZD,EAAOC,CAEV,CACD,OAAOD,CACR,CACD,OAAOE,GAAkB3hd,EAAOnM,EAAOoqd,GAAUsD,EAClD,CAeD,SAASI,GAAkB3hd,EAAOnM,EAAO64c,EAAU6U,GACjD,IAAIC,EAAM,EACNC,EAAgB,MAATzhd,EAAgB,EAAIA,EAAM1J,OACrC,GAAa,IAATmrd,EACF,OAAO,EAST,IALA,IAAIG,GADJ/td,EAAQ64c,EAAS74c,MACQA,EACrBgud,EAAsB,OAAVhud,EACZiud,EAAchI,GAASjmd,GACvBkud,EAAiBlud,IAAUyJ,EAExBkkd,EAAMC,GAAM,CACjB,IAAIC,EAAM1P,IAAawP,EAAMC,GAAQ,GACjCvI,EAAWxM,EAAS1sc,EAAM0hd,IAC1BM,EAAe9I,IAAa57c,EAC5B2kd,EAAyB,OAAb/I,EACZgJ,EAAiBhJ,IAAaA,EAC9BiJ,EAAcrI,GAASZ,GAE3B,GAAI0I,EACF,IAAIQ,EAASb,GAAcW,OAE3BE,EADSL,EACAG,IAAmBX,GAAcS,GACjCH,EACAK,GAAkBF,IAAiBT,IAAeU,GAClDH,EACAI,GAAkBF,IAAiBC,IAAcV,IAAeY,IAChEF,IAAaE,IAGbZ,EAAcrI,GAAYrld,EAAUqld,EAAWrld,GAEtDuud,EACFZ,EAAME,EAAM,EAEZD,EAAOC,CAEV,CACD,OAAOlP,GAAUiP,EA1jIC9c,WA2jInB,CAWD,SAAS0d,GAAerid,EAAO0sc,GAM7B,IALA,IAAI51c,GAAS,EACTR,EAAS0J,EAAM1J,OACf02c,EAAW,EACX7zc,EAAS,KAEJrC,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdoid,EAAWxM,EAAWA,EAAS74c,GAASA,EAE5C,IAAKiD,IAAUyuE,GAAG2zY,EAAUyC,GAAO,CACjC,IAAIA,EAAOzC,EACX//c,EAAO6zc,KAAwB,IAAVn5c,EAAc,EAAIA,CACxC,CACF,CACD,OAAOsF,CACR,CAUD,SAASmpd,GAAazud,GACpB,MAAoB,iBAATA,EACFA,EAELimd,GAASjmd,GACJ6wc,GAED7wc,CACT,CAUD,SAAS0ud,GAAa1ud,GAEpB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAI4G,GAAQ5G,GAEV,OAAOw5c,GAASx5c,EAAO0ud,IAAgB,GAEzC,GAAIzI,GAASjmd,GACX,OAAO4/c,GAAiBA,GAAer/c,KAAKP,GAAS,GAEvD,IAAIsF,EAAUtF,EAAQ,GACtB,MAAkB,KAAVsF,GAAkB,EAAItF,IAAU,IAAa,KAAOsF,CAC7D,CAWD,SAASqpd,GAASxid,EAAO0sc,EAAUU,GACjC,IAAIt2c,GAAS,EACToE,EAAW+xc,GACX32c,EAAS0J,EAAM1J,OACf0id,GAAW,EACX7/c,EAAS,GACTwid,EAAOxid,EAEX,GAAIi0c,EACF4L,GAAW,EACX99c,EAAWiyc,QAER,GAAI72c,GAjtIU,IAitIkB,CACnC,IAAIxH,EAAM49c,EAAW,KAAO+V,GAAUzid,GACtC,GAAIlR,EACF,OAAO4gd,GAAW5gd,GAEpBkqd,GAAW,EACX99c,EAAW2zc,GACX8M,EAAO,IAAI5G,EACZ,MAEC4G,EAAOjP,EAAW,GAAKvzc,EAEzBylL,EACA,OAAS9nL,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdoid,EAAWxM,EAAWA,EAAS74c,GAASA,EAG5C,GADAA,EAASu5c,GAAwB,IAAVv5c,EAAeA,EAAQ,EAC1Cmld,GAAYE,IAAaA,EAAU,CAErC,IADA,IAAIwJ,EAAY/G,EAAKrld,OACdosd,KACL,GAAI/G,EAAK+G,KAAexJ,EACtB,SAASt6R,EAGT8tR,GACFiP,EAAK5ld,KAAKmjd,GAEZ//c,EAAOpD,KAAKlC,EACb,MACSqH,EAASygd,EAAMzC,EAAU9L,KAC7BuO,IAASxid,GACXwid,EAAK5ld,KAAKmjd,GAEZ//c,EAAOpD,KAAKlC,GAEf,CACD,OAAOsF,CACR,CAUD,SAASsnd,GAAUnlb,EAAQhjC,GAGzB,OAAiB,OADjBgjC,EAAS96B,GAAO86B,EADhBhjC,EAAOkid,GAASlid,EAAMgjC,aAEUA,EAAOm/a,GAAMjwZ,GAAKlyD,IACnD,CAYD,SAASqqd,GAAWrnb,EAAQhjC,EAAMsqd,EAAS3L,GACzC,OAAOqJ,GAAQhlb,EAAQhjC,EAAMsqd,EAAQrI,GAAQj/a,EAAQhjC,IAAQ2+c,EAC9D,CAaD,SAAS4L,GAAU7id,EAAO8sc,EAAWgW,EAAQ9U,GAI3C,IAHA,IAAI13c,EAAS0J,EAAM1J,OACfQ,EAAQk3c,EAAY13c,GAAU,GAE1B03c,EAAYl3c,MAAYA,EAAQR,IACtCw2c,EAAU9sc,EAAMlJ,GAAQA,EAAOkJ,KAEjC,OAAO8id,EACH1B,GAAUphd,EAAQguc,EAAY,EAAIl3c,EAASk3c,EAAYl3c,EAAQ,EAAIR,GACnE8qd,GAAUphd,EAAQguc,EAAYl3c,EAAQ,EAAI,EAAKk3c,EAAY13c,EAASQ,EACzE,CAYD,SAASisd,GAAiBlvd,EAAOujN,GAC/B,IAAIj+M,EAAStF,EAIb,OAHIsF,aAAkBy6c,KACpBz6c,EAASA,EAAOtF,SAEX05c,GAAYn2P,GAAS,SAASj+M,EAAQqiB,GAC3C,OAAOA,EAAO9U,KAAKgH,MAAM8N,EAAOgxb,QAASc,GAAU,CAACn0c,GAASqiB,EAAOjoB,MACrE,GAAE4F,EACJ,CAYD,SAAS6pd,GAAQ1H,EAAQ5O,EAAUU,GACjC,IAAI92c,EAASgld,EAAOhld,OACpB,GAAIA,EAAS,EACX,OAAOA,EAASksd,GAASlH,EAAO,IAAM,GAKxC,IAHA,IAAIxkd,GAAS,EACTqC,EAASqB,EAAMlE,KAEVQ,EAAQR,GAIf,IAHA,IAAI0J,EAAQs7c,EAAOxkd,GACf0kd,GAAY,IAEPA,EAAWlld,GACdkld,GAAY1kd,IACdqC,EAAOrC,GAASiid,GAAe5/c,EAAOrC,IAAUkJ,EAAOs7c,EAAOE,GAAW9O,EAAUU,IAIzF,OAAOoV,GAASxI,GAAY7gd,EAAQ,GAAIuzc,EAAUU,EACnD,CAWD,SAAS6V,GAAcxid,EAAO6qB,EAAQ43b,GAMpC,IALA,IAAIpsd,GAAS,EACTR,EAASmK,EAAMnK,OACf6sd,EAAa73b,EAAOh1B,OACpB6C,EAAS,CAAC,IAELrC,EAAQR,GAAQ,CACvB,IAAIzC,EAAQiD,EAAQqsd,EAAa73b,EAAOx0B,GAASwG,EACjD4ld,EAAW/pd,EAAQsH,EAAM3J,GAAQjD,EAClC,CACD,OAAOsF,CACR,CASD,SAASiqd,GAAoBvvd,GAC3B,OAAOyrd,GAAkBzrd,GAASA,EAAQ,EAC3C,CASD,SAASwvd,GAAaxvd,GACpB,MAAuB,mBAATA,EAAsBA,EAAQoqd,EAC7C,CAUD,SAASzD,GAAS3md,EAAOynC,GACvB,OAAI7gC,GAAQ5G,GACHA,EAEFird,GAAMjrd,EAAOynC,GAAU,CAACznC,GAASyvd,GAAarwd,GAASY,GAC/D,CAWD,IAAI0vd,GAAW5C,GAWf,SAAS6C,GAAUxjd,EAAOkyB,EAAOryB,GAC/B,IAAIvJ,EAAS0J,EAAM1J,OAEnB,OADAuJ,EAAMA,IAAQvC,EAAYhH,EAASuJ,GAC1BqyB,GAASryB,GAAOvJ,EAAU0J,EAAQohd,GAAUphd,EAAOkyB,EAAOryB,EACpE,CAQD,IAAIorB,GAAe2mb,IAAmB,SAASl+b,GAC7C,OAAOnT,GAAK0qB,aAAavX,EAC1B,EAUD,SAAS8jc,GAAYU,EAAQhB,GAC3B,GAAIA,EACF,OAAOgB,EAAOx9c,QAEhB,IAAIpE,EAAS4hd,EAAO5hd,OAChB6C,EAASg4c,GAAcA,GAAY76c,GAAU,IAAI4hd,EAAOl7a,YAAY1mC,GAGxE,OADA4hd,EAAOt3c,KAAKzH,GACLA,CACR,CASD,SAAS6+c,GAAiByL,GACxB,IAAItqd,EAAS,IAAIsqd,EAAYzmb,YAAYymb,EAAYrL,YAErD,OADA,IAAIlH,GAAW/3c,GAAQrK,IAAI,IAAIoid,GAAWuS,IACnCtqd,CACR,CA+CD,SAASm/c,GAAgBoL,EAAYxM,GACnC,IAAIgB,EAAShB,EAASc,GAAiB0L,EAAWxL,QAAUwL,EAAWxL,OACvE,OAAO,IAAIwL,EAAW1mb,YAAYk7a,EAAQwL,EAAWvL,WAAYuL,EAAWptd,OAC7E,CAUD,SAAS6pd,GAAiBtsd,EAAOspB,GAC/B,GAAItpB,IAAUspB,EAAO,CACnB,IAAIwmc,EAAe9vd,IAAUyJ,EACzBukd,EAAsB,OAAVhud,EACZ+vd,EAAiB/vd,IAAUA,EAC3Biud,EAAchI,GAASjmd,GAEvBmud,EAAe7kc,IAAU7f,EACzB2kd,EAAsB,OAAV9kc,EACZ+kc,EAAiB/kc,IAAUA,EAC3Bglc,EAAcrI,GAAS38b,GAE3B,IAAM8kc,IAAcE,IAAgBL,GAAejud,EAAQspB,GACtD2kc,GAAeE,GAAgBE,IAAmBD,IAAcE,GAChEN,GAAaG,GAAgBE,IAC5ByB,GAAgBzB,IACjB0B,EACH,OAAO,EAET,IAAM/B,IAAcC,IAAgBK,GAAetud,EAAQspB,GACtDglc,GAAewB,GAAgBC,IAAmB/B,IAAcC,GAChEG,GAAa0B,GAAgBC,IAC5B5B,GAAgB4B,IACjB1B,EACH,OAAQ,CAEX,CACD,OAAO,CACR,CAsDD,SAAS2B,GAAYtwd,EAAMuwd,EAAUC,EAASC,GAU5C,IATA,IAAIC,GAAa,EACbC,EAAa3wd,EAAK+C,OAClB6td,EAAgBJ,EAAQztd,OACxBwob,GAAa,EACbslC,EAAaN,EAASxtd,OACtB+td,EAAc9R,GAAU2R,EAAaC,EAAe,GACpDhrd,EAASqB,EAAM4pd,EAAaC,GAC5BC,GAAeN,IAEVllC,EAAYslC,GACnBjrd,EAAO2lb,GAAaglC,EAAShlC,GAE/B,OAASmlC,EAAYE,IACfG,GAAeL,EAAYC,KAC7B/qd,EAAO4qd,EAAQE,IAAc1wd,EAAK0wd,IAGtC,KAAOI,KACLlrd,EAAO2lb,KAAevrb,EAAK0wd,KAE7B,OAAO9qd,CACR,CAaD,SAASord,GAAiBhxd,EAAMuwd,EAAUC,EAASC,GAWjD,IAVA,IAAIC,GAAa,EACbC,EAAa3wd,EAAK+C,OAClBkud,GAAgB,EAChBL,EAAgBJ,EAAQztd,OACxBmud,GAAc,EACdC,EAAcZ,EAASxtd,OACvB+td,EAAc9R,GAAU2R,EAAaC,EAAe,GACpDhrd,EAASqB,EAAM6pd,EAAcK,GAC7BJ,GAAeN,IAEVC,EAAYI,GACnBlrd,EAAO8qd,GAAa1wd,EAAK0wd,GAG3B,IADA,IAAIrhd,EAASqhd,IACJQ,EAAaC,GACpBvrd,EAAOyJ,EAAS6hd,GAAcX,EAASW,GAEzC,OAASD,EAAeL,IAClBG,GAAeL,EAAYC,KAC7B/qd,EAAOyJ,EAASmhd,EAAQS,IAAiBjxd,EAAK0wd,MAGlD,OAAO9qd,CACR,CAUD,SAAS48c,GAAU74a,EAAQl9B,GACzB,IAAIlJ,GAAS,EACTR,EAAS4mC,EAAO5mC,OAGpB,IADA0J,IAAUA,EAAQxF,EAAMlE,MACfQ,EAAQR,GACf0J,EAAMlJ,GAASomC,EAAOpmC,GAExB,OAAOkJ,CACR,CAYD,SAAS02c,GAAWx5a,EAAQz8B,EAAO66B,EAAQ27a,GACzC,IAAI0N,GAASrpb,EACbA,IAAWA,EAAS,CAAC,GAKrB,IAHA,IAAIxkC,GAAS,EACTR,EAASmK,EAAMnK,SAEVQ,EAAQR,GAAQ,CACvB,IAAI2B,EAAMwI,EAAM3J,GAEZ0nC,EAAWy4a,EACXA,EAAW37a,EAAOrjC,GAAMilC,EAAOjlC,GAAMA,EAAKqjC,EAAQ4B,GAClD5/B,EAEAkhC,IAAalhC,IACfkhC,EAAWtB,EAAOjlC,IAEhB0sd,EACFxO,GAAgB76a,EAAQrjC,EAAKumC,GAE7B43a,GAAY96a,EAAQrjC,EAAKumC,EAE5B,CACD,OAAOlD,CACR,CAkCD,SAASspb,GAAiB76V,EAAQ86V,GAChC,OAAO,SAASn/c,EAAYgnc,GAC1B,IAAIhmc,EAAOjM,GAAQiL,GAAc+mc,GAAkB8J,GAC/Cl8c,EAAcwqd,EAAcA,IAAgB,CAAC,EAEjD,OAAOn+c,EAAKhB,EAAYqkH,EAAQ81V,GAAYnT,EAAU,GAAIryc,EAC3D,CACF,CASD,SAASyqd,GAAeC,GACtB,OAAOpE,IAAS,SAASrlb,EAAQ2jJ,GAC/B,IAAInoL,GAAS,EACTR,EAAS2oL,EAAQ3oL,OACjB2gd,EAAa3gd,EAAS,EAAI2oL,EAAQ3oL,EAAS,GAAKgH,EAChD0nd,EAAQ1ud,EAAS,EAAI2oL,EAAQ,GAAK3hL,EAWtC,IATA25c,EAAc8N,EAASzud,OAAS,GAA0B,mBAAd2gd,GACvC3gd,IAAU2gd,GACX35c,EAEA0nd,GAASC,GAAehmS,EAAQ,GAAIA,EAAQ,GAAI+lS,KAClD/N,EAAa3gd,EAAS,EAAIgH,EAAY25c,EACtC3gd,EAAS,GAEXglC,EAAS3nC,GAAO2nC,KACPxkC,EAAQR,GAAQ,CACvB,IAAI4mC,EAAS+hJ,EAAQnoL,GACjBomC,GACF6nb,EAASzpb,EAAQ4B,EAAQpmC,EAAOmgd,EAEnC,CACD,OAAO37a,CACR,GACF,CAUD,SAASk+a,GAAe1L,EAAUE,GAChC,OAAO,SAAStoc,EAAYgnc,GAC1B,GAAkB,MAAdhnc,EACF,OAAOA,EAET,IAAKi5c,GAAYj5c,GACf,OAAOooc,EAASpoc,EAAYgnc,GAM9B,IAJA,IAAIp2c,EAASoP,EAAWpP,OACpBQ,EAAQk3c,EAAY13c,GAAU,EAC9B4ud,EAAWvxd,GAAO+R,IAEdsoc,EAAYl3c,MAAYA,EAAQR,KACa,IAA/Co2c,EAASwY,EAASpud,GAAQA,EAAOoud,KAIvC,OAAOx/c,CACR,CACF,CASD,SAAS00c,GAAcpM,GACrB,OAAO,SAAS1ya,EAAQoxa,EAAUiO,GAMhC,IALA,IAAI7jd,GAAS,EACToud,EAAWvxd,GAAO2nC,GAClB76B,EAAQk6c,EAASr/a,GACjBhlC,EAASmK,EAAMnK,OAEZA,KAAU,CACf,IAAI2B,EAAMwI,EAAMutc,EAAY13c,IAAWQ,GACvC,IAA+C,IAA3C41c,EAASwY,EAASjtd,GAAMA,EAAKitd,GAC/B,KAEH,CACD,OAAO5pb,CACR,CACF,CA8BD,SAAS6pb,GAAgBvta,GACvB,OAAO,SAAS7sC,GAGd,IAAIgkc,EAAaO,GAFjBvkc,EAAS9X,GAAS8X,IAGd+kc,GAAc/kc,GACdzN,EAEAqmG,EAAMorW,EACNA,EAAW,GACXhkc,EAAO6G,OAAO,GAEdwzc,EAAWrW,EACXyU,GAAUzU,EAAY,GAAG3sc,KAAK,IAC9B2I,EAAOrQ,MAAM,GAEjB,OAAOipG,EAAI/rD,KAAgBwta,CAC5B,CACF,CASD,SAASC,GAAiBnyd,GACxB,OAAO,SAAS6X,GACd,OAAOwic,GAAY+X,GAAMC,GAAOx6c,GAAQxT,QAAQgzc,GAAQ,KAAMr3c,EAAU,GACzE,CACF,CAUD,SAASsyd,GAAWjhO,GAClB,OAAO,WAIL,IAAIhxP,EAAOka,UACX,OAAQla,EAAK+C,QACX,KAAK,EAAG,OAAO,IAAIiuP,EACnB,KAAK,EAAG,OAAO,IAAIA,EAAKhxP,EAAK,IAC7B,KAAK,EAAG,OAAO,IAAIgxP,EAAKhxP,EAAK,GAAIA,EAAK,IACtC,KAAK,EAAG,OAAO,IAAIgxP,EAAKhxP,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC/C,KAAK,EAAG,OAAO,IAAIgxP,EAAKhxP,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACxD,KAAK,EAAG,OAAO,IAAIgxP,EAAKhxP,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACjE,KAAK,EAAG,OAAO,IAAIgxP,EAAKhxP,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1E,KAAK,EAAG,OAAO,IAAIgxP,EAAKhxP,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAErF,IAAIkyd,EAAc1R,GAAWxvN,EAAK5mP,WAC9BxE,EAASorP,EAAK72O,MAAM+3c,EAAalyd,GAIrC,OAAOyiB,GAAS7c,GAAUA,EAASssd,CACpC,CACF,CA8CD,SAASC,GAAWC,GAClB,OAAO,SAASjgd,EAAYonc,EAAW7qO,GACrC,IAAIijP,EAAWvxd,GAAO+R,GACtB,IAAKi5c,GAAYj5c,GAAa,CAC5B,IAAIgnc,EAAWmT,GAAY/S,EAAW,GACtCpnc,EAAa/Q,GAAK+Q,GAClBonc,EAAY,SAAS70c,GAAO,OAAOy0c,EAASwY,EAASjtd,GAAMA,EAAKitd,EAAY,CAC7E,CACD,IAAIpud,EAAQ6ud,EAAcjgd,EAAYonc,EAAW7qO,GACjD,OAAOnrO,GAAS,EAAIoud,EAASxY,EAAWhnc,EAAW5O,GAASA,GAASwG,CACtE,CACF,CASD,SAASsod,GAAW5X,GAClB,OAAO6X,IAAS,SAASppb,GACvB,IAAInmC,EAASmmC,EAAMnmC,OACfQ,EAAQR,EACRwvd,EAASjS,GAAcl2c,UAAUood,KAKrC,IAHI/X,GACFvxa,EAAMg0B,UAED35D,KAAS,CACd,IAAI4P,EAAO+1B,EAAM3lC,GACjB,GAAmB,mBAAR4P,EACT,MAAM,IAAI24B,GAAU2ka,GAEtB,GAAI8hB,IAAWxyd,GAAgC,WAArB0yd,GAAYt/c,GACpC,IAAIpT,EAAU,IAAIugd,GAAc,IAAI,EAEvC,CAED,IADA/8c,EAAQxD,EAAUwD,EAAQR,IACjBQ,EAAQR,GAAQ,CAGvB,IAAIy9W,EAAWiyG,GAFft/c,EAAO+1B,EAAM3lC,IAGT7G,EAAmB,WAAZ8jX,EAAwBhlS,GAAQroE,GAAQpJ,EAMjDhK,EAJErD,GAAQg2d,GAAWh2d,EAAK,KACtB,KAAAA,EAAK,KACJA,EAAK,GAAGqG,QAAqB,GAAXrG,EAAK,GAElBqD,EAAQ0yd,GAAY/1d,EAAK,KAAKyd,MAAMpa,EAASrD,EAAK,IAElC,GAAfyW,EAAKpQ,QAAe2vd,GAAWv/c,GACtCpT,EAAQygX,KACRzgX,EAAQyyd,KAAKr/c,EAEpB,CACD,OAAO,WACL,IAAInT,EAAOka,UACP5Z,EAAQN,EAAK,GAEjB,GAAID,GAA0B,GAAfC,EAAK+C,QAAemE,GAAQ5G,GACzC,OAAOP,EAAQ4yd,MAAMryd,GAAOA,QAK9B,IAHA,IAAIiD,EAAQ,EACRqC,EAAS7C,EAASmmC,EAAM3lC,GAAO4W,MAAM/X,KAAMpC,GAAQM,IAE9CiD,EAAQR,GACf6C,EAASsjC,EAAM3lC,GAAO1C,KAAKuB,KAAMwD,GAEnC,OAAOA,CACR,CACF,GACF,CAqBD,SAASgtd,GAAaz/c,EAAMswc,EAASxK,EAASsX,EAAUC,EAASqC,EAAeC,EAAcC,EAAQC,EAAK/kB,GACzG,IAAIglB,EAAQxP,EAAU1S,EAClBmiB,EA5iKa,EA4iKJzP,EACT0P,EA5iKiB,EA4iKL1P,EACZgN,EAAsB,GAAVhN,EACZ2P,EAtiKa,IAsiKJ3P,EACTzyN,EAAOmiO,EAAYppd,EAAYkod,GAAW9+c,GA6C9C,OA3CA,SAASpT,IAKP,IAJA,IAAIgD,EAASmX,UAAUnX,OACnB/C,EAAOiH,EAAMlE,GACbQ,EAAQR,EAELQ,KACLvD,EAAKuD,GAAS2W,UAAU3W,GAE1B,GAAIktd,EACF,IAAI37N,EAAcu+N,GAAUtzd,GACxBuzd,EAAe3X,GAAa37c,EAAM80P,GASxC,GAPIy7N,IACFvwd,EAAOswd,GAAYtwd,EAAMuwd,EAAUC,EAASC,IAE1CoC,IACF7yd,EAAOgxd,GAAiBhxd,EAAM6yd,EAAeC,EAAcrC,IAE7D1td,GAAUuwd,EACN7C,GAAa1td,EAASkrc,EAAO,CAC/B,IAAIslB,EAAarX,GAAel8c,EAAM80P,GACtC,OAAO0+N,GACLrgd,EAAMswc,EAASmP,GAAc7yd,EAAQ+0P,YAAamkN,EAClDj5c,EAAMuzd,EAAYR,EAAQC,EAAK/kB,EAAQlrc,EAE1C,CACD,IAAImvd,EAAcgB,EAASja,EAAU72c,KACjCjC,EAAKgzd,EAAYjB,EAAY/+c,GAAQA,EAczC,OAZApQ,EAAS/C,EAAK+C,OACVgwd,EACF/yd,EAAOyzd,GAAQzzd,EAAM+yd,GACZK,GAAUrwd,EAAS,GAC5B/C,EAAKk9D,UAEH+1Z,GAASD,EAAMjwd,IACjB/C,EAAK+C,OAASiwd,GAEZ5wd,MAAQA,OAAS4K,IAAQ5K,gBAAgBrC,IAC3CI,EAAK6wP,GAAQihO,GAAW9xd,IAEnBA,EAAGga,MAAM+3c,EAAalyd,EAC9B,CAEF,CAUD,SAAS0zd,GAAel9V,EAAQm9V,GAC9B,OAAO,SAAS5rb,EAAQoxa,GACtB,OAh/DJ,SAAsBpxa,EAAQyuF,EAAQ2iV,EAAUryc,GAI9C,OAHAo/c,GAAWn+a,GAAQ,SAASznC,EAAOoE,EAAKqjC,GACtCyuF,EAAO1vH,EAAaqyc,EAAS74c,GAAQoE,EAAKqjC,EAC3C,IACMjhC,CACR,CA2+DU8sd,CAAa7rb,EAAQyuF,EAAQm9V,EAAWxa,GAAW,CAAC,EAC5D,CACF,CAUD,SAAS0a,GAAoBC,EAAUtzb,GACrC,OAAO,SAASlgC,EAAOspB,GACrB,IAAIhkB,EACJ,GAAItF,IAAUyJ,GAAa6f,IAAU7f,EACnC,OAAOy2B,EAKT,GAHIlgC,IAAUyJ,IACZnE,EAAStF,GAEPspB,IAAU7f,EAAW,CACvB,GAAInE,IAAWmE,EACb,OAAO6f,EAEW,iBAATtpB,GAAqC,iBAATspB,GACrCtpB,EAAQ0ud,GAAa1ud,GACrBspB,EAAQolc,GAAaplc,KAErBtpB,EAAQyud,GAAazud,GACrBspB,EAAQmlc,GAAanlc,IAEvBhkB,EAASkud,EAASxzd,EAAOspB,EAC1B,CACD,OAAOhkB,CACR,CACF,CASD,SAASmud,GAAWC,GAClB,OAAO1B,IAAS,SAASlG,GAEvB,OADAA,EAAYtS,GAASsS,EAAWhR,GAAUkR,OACnCc,IAAS,SAASptd,GACvB,IAAIi5c,EAAU72c,KACd,OAAO4xd,EAAU5H,GAAW,SAASjT,GACnC,OAAOh/b,GAAMg/b,EAAUF,EAASj5c,EACjC,GACF,GACF,GACF,CAWD,SAASi0d,GAAclxd,EAAQugQ,GAG7B,IAAI4wN,GAFJ5wN,EAAQA,IAAUv5P,EAAY,IAAMild,GAAa1rN,IAEzBvgQ,OACxB,GAAImxd,EAAc,EAChB,OAAOA,EAAc/G,GAAW7pN,EAAOvgQ,GAAUugQ,EAEnD,IAAI19P,EAASund,GAAW7pN,EAAOk7M,GAAWz7c,EAASs5c,GAAW/4M,KAC9D,OAAOy4M,GAAWz4M,GACd2sN,GAAU1T,GAAc32c,GAAS,EAAG7C,GAAQ8L,KAAK,IACjDjJ,EAAOuB,MAAM,EAAGpE,EACrB,CA4CD,SAASoxd,GAAY1Z,GACnB,OAAO,SAAS97a,EAAOryB,EAAK6xB,GAa1B,OAZIA,GAAuB,iBAARA,GAAoBuzb,GAAe/yb,EAAOryB,EAAK6xB,KAChE7xB,EAAM6xB,EAAOp0B,GAGf40B,EAAQy1b,GAASz1b,GACbryB,IAAQvC,GACVuC,EAAMqyB,EACNA,EAAQ,GAERryB,EAAM8nd,GAAS9nd,GA57CrB,SAAmBqyB,EAAOryB,EAAK6xB,EAAMs8a,GAKnC,IAJA,IAAIl3c,GAAS,EACTR,EAASi8c,GAAUR,IAAYlyc,EAAMqyB,IAAUR,GAAQ,IAAK,GAC5Dv4B,EAASqB,EAAMlE,GAEZA,KACL6C,EAAO60c,EAAY13c,IAAWQ,GAASo7B,EACvCA,GAASR,EAEX,OAAOv4B,CACR,CAq7CUyud,CAAU11b,EAAOryB,EADxB6xB,EAAOA,IAASp0B,EAAa40B,EAAQryB,EAAM,GAAK,EAAK8nd,GAASj2b,GAC3Bs8a,EACpC,CACF,CASD,SAAS6Z,GAA0BR,GACjC,OAAO,SAASxzd,EAAOspB,GAKrB,MAJsB,iBAATtpB,GAAqC,iBAATspB,IACvCtpB,EAAQstU,GAASttU,GACjBspB,EAAQgkT,GAAShkT,IAEZkqc,EAASxzd,EAAOspB,EACxB,CACF,CAmBD,SAAS4pc,GAAcrgd,EAAMswc,EAAS8Q,EAAUz/N,EAAamkN,EAASsX,EAAUC,EAASuC,EAAQC,EAAK/kB,GACpG,IAAIumB,EArxKc,EAqxKJ/Q,EAMdA,GAAY+Q,EAAU3jB,EAAoBC,EA5xKlB,GA6xKxB2S,KAAa+Q,EAAU1jB,EAA0BD,MAG/C4S,IAAW,GAEb,IAAInpB,EAAU,CACZnnb,EAAMswc,EAASxK,EAVCub,EAAUjE,EAAWxmd,EAFtByqd,EAAUhE,EAAUzmd,EAGdyqd,EAAUzqd,EAAYwmd,EAFvBiE,EAAUzqd,EAAYymd,EAYzBuC,EAAQC,EAAK/kB,GAG5Broc,EAAS2ud,EAASp6c,MAAMpQ,EAAWuwb,GAKvC,OAJIo4B,GAAWv/c,IACbsoE,GAAQ71E,EAAQ00b,GAElB10b,EAAOkvP,YAAcA,EACd2/N,GAAgB7ud,EAAQuN,EAAMswc,EACtC,CASD,SAASiR,GAAYrwa,GACnB,IAAIlxC,EAAOxH,GAAK04C,GAChB,OAAO,SAASjuB,EAAQ6oD,GAGtB,GAFA7oD,EAASw3S,GAASx3S,IAClB6oD,EAAyB,MAAbA,EAAoB,EAAIggY,GAAU0V,GAAU11Y,GAAY,OACnD4/X,GAAezob,GAAS,CAGvC,IAAIk9B,GAAQ5zD,GAAS02B,GAAU,KAAK3xB,MAAM,KAI1C,SADA6uD,GAAQ5zD,GAFIyT,EAAKmgD,EAAK,GAAK,MAAQA,EAAK,GAAK2rB,KAEnB,KAAKx6E,MAAM,MACvB,GAAK,MAAQ6uD,EAAK,GAAK2rB,GACtC,CACD,OAAO9rE,EAAKijB,EACb,CACF,CASD,IAAI84b,GAAc/td,IAAQ,EAAIg7c,GAAW,IAAIh7c,GAAI,CAAC,EAAE,KAAK,IAAO8vc,EAAmB,SAASl5a,GAC1F,OAAO,IAAI52B,GAAI42B,EAChB,EAF2E7T,GAW5E,SAAS0wc,GAAcxN,GACrB,OAAO,SAASr/a,GACd,IAAI1+B,EAAM06c,GAAOh8a,GACjB,OAAI1+B,GAAOwoc,EACFmK,GAAWj0a,GAEhB1+B,GAAO6oc,EACFkK,GAAWr0a,GAn6I1B,SAAqBA,EAAQ76B,GAC3B,OAAO4sc,GAAS5sc,GAAO,SAASxI,GAC9B,MAAO,CAACA,EAAKqjC,EAAOrjC,GACrB,GACF,CAi6IYmwd,CAAY9sb,EAAQq/a,EAASr/a,GACrC,CACF,CA2BD,SAAS+sb,GAAW3hd,EAAMswc,EAASxK,EAASsX,EAAUC,EAASuC,EAAQC,EAAK/kB,GAC1E,IAAIklB,EAl4KiB,EAk4KL1P,EAChB,IAAK0P,GAA4B,mBAARhgd,EACvB,MAAM,IAAI24B,GAAU2ka,GAEtB,IAAI1tc,EAASwtd,EAAWA,EAASxtd,OAAS,EAS1C,GARKA,IACH0gd,IAAW,GACX8M,EAAWC,EAAUzmd,GAEvBipd,EAAMA,IAAQjpd,EAAYipd,EAAMhU,GAAU2V,GAAU3B,GAAM,GAC1D/kB,EAAQA,IAAUlkc,EAAYkkc,EAAQ0mB,GAAU1mB,GAChDlrc,GAAUytd,EAAUA,EAAQztd,OAAS,EAEjC0gd,EAAU3S,EAAyB,CACrC,IAAI+hB,EAAgBtC,EAChBuC,EAAetC,EAEnBD,EAAWC,EAAUzmd,CACtB,CACD,IAAIrN,EAAOy2d,EAAYppd,EAAYyxE,GAAQroE,GAEvCmnb,EAAU,CACZnnb,EAAMswc,EAASxK,EAASsX,EAAUC,EAASqC,EAAeC,EAC1DC,EAAQC,EAAK/kB,GAkBf,GAfIvxc,GA26BN,SAAmBA,EAAMitC,GACvB,IAAI85a,EAAU/md,EAAK,GACfq4d,EAAaprb,EAAO,GACpBqrb,EAAavR,EAAUsR,EACvBtP,EAAWuP,EAAa,IAExBC,EACAF,GAAchkB,GA50MA,GA40MmB0S,GACjCsR,GAAchkB,GAAmB0S,GAAWzS,GAAqBt0c,EAAK,GAAGqG,QAAU4mC,EAAO,IAC5E,KAAdorb,GAAqDprb,EAAO,GAAG5mC,QAAU4mC,EAAO,IA90MlE,GA80M0E85a,EAG5F,IAAMgC,IAAYwP,EAChB,OAAOv4d,EAr1MQ,EAw1Mbq4d,IACFr4d,EAAK,GAAKitC,EAAO,GAEjBqrb,GA31Me,EA21MDvR,EAA2B,EAz1MnB,GA41MxB,IAAInjd,EAAQqpC,EAAO,GACnB,GAAIrpC,EAAO,CACT,IAAIiwd,EAAW7zd,EAAK,GACpBA,EAAK,GAAK6zd,EAAWD,GAAYC,EAAUjwd,EAAOqpC,EAAO,IAAMrpC,EAC/D5D,EAAK,GAAK6zd,EAAWrU,GAAex/c,EAAK,GAAIi0c,GAAehna,EAAO,EACpE,EAEDrpC,EAAQqpC,EAAO,MAEb4mb,EAAW7zd,EAAK,GAChBA,EAAK,GAAK6zd,EAAWS,GAAiBT,EAAUjwd,EAAOqpC,EAAO,IAAMrpC,EACpE5D,EAAK,GAAK6zd,EAAWrU,GAAex/c,EAAK,GAAIi0c,GAAehna,EAAO,KAGrErpC,EAAQqpC,EAAO,MAEbjtC,EAAK,GAAK4D,GAGRy0d,EAAahkB,IACfr0c,EAAK,GAAgB,MAAXA,EAAK,GAAaitC,EAAO,GAAKs1a,GAAUvid,EAAK,GAAIitC,EAAO,KAGrD,MAAXjtC,EAAK,KACPA,EAAK,GAAKitC,EAAO,IAGnBjtC,EAAK,GAAKitC,EAAO,GACjBjtC,EAAK,GAAKs4d,CAGX,CA/9BGE,CAAU56B,EAAS59b,GAErByW,EAAOmnb,EAAQ,GACfmpB,EAAUnpB,EAAQ,GAClB2e,EAAU3e,EAAQ,GAClBi2B,EAAWj2B,EAAQ,GACnBk2B,EAAUl2B,EAAQ,KAClB2T,EAAQ3T,EAAQ,GAAKA,EAAQ,KAAOvwb,EAC/Bopd,EAAY,EAAIhgd,EAAKpQ,OACtBi8c,GAAU1kB,EAAQ,GAAKv3b,EAAQ,KAEX,GAAV0gd,IACZA,IAAW,IAERA,GA56KY,GA46KDA,EAGd79c,EA56KgB,GA26KP69c,GAA8BA,GAAW7S,EApgBtD,SAAqBz9b,EAAMswc,EAASxV,GAClC,IAAIj9M,EAAOihO,GAAW9+c,GAwBtB,OAtBA,SAASpT,IAMP,IALA,IAAIgD,EAASmX,UAAUnX,OACnB/C,EAAOiH,EAAMlE,GACbQ,EAAQR,EACR+xP,EAAcu+N,GAAUtzd,GAErBwD,KACLvD,EAAKuD,GAAS2W,UAAU3W,GAE1B,IAAIitd,EAAWztd,EAAS,GAAK/C,EAAK,KAAO80P,GAAe90P,EAAK+C,EAAS,KAAO+xP,EACzE,GACAonN,GAAel8c,EAAM80P,GAGzB,OADA/xP,GAAUytd,EAAQztd,QACLkrc,EACJulB,GACLrgd,EAAMswc,EAASmP,GAAc7yd,EAAQ+0P,YAAa/qP,EAClD/J,EAAMwwd,EAASzmd,EAAWA,EAAWkkc,EAAQlrc,GAG1CoX,GADG/X,MAAQA,OAAS4K,IAAQ5K,gBAAgBrC,EAAWixP,EAAO79O,EACpD/Q,KAAMpC,EACxB,CAEF,CA2eYm1d,CAAYhid,EAAMswc,EAASxV,GAC1BwV,GAAW5S,GAAgC,IAAX4S,GAAqD+M,EAAQztd,OAG9F6vd,GAAaz4c,MAAMpQ,EAAWuwb,GA9O3C,SAAuBnnb,EAAMswc,EAASxK,EAASsX,GAC7C,IAAI2C,EAtsKa,EAssKJzP,EACTzyN,EAAOihO,GAAW9+c,GAkBtB,OAhBA,SAASpT,IAQP,IAPA,IAAI2wd,GAAa,EACbC,EAAaz2c,UAAUnX,OACvBwob,GAAa,EACbslC,EAAaN,EAASxtd,OACtB/C,EAAOiH,EAAM4pd,EAAaF,GAC1Bxwd,EAAMiC,MAAQA,OAAS4K,IAAQ5K,gBAAgBrC,EAAWixP,EAAO79O,IAE5Do4a,EAAYslC,GACnB7wd,EAAKurb,GAAaglC,EAAShlC,GAE7B,KAAOolC,KACL3wd,EAAKurb,KAAerxa,YAAYw2c,GAElC,OAAOv2c,GAAMha,EAAI+yd,EAASja,EAAU72c,KAAMpC,EAC3C,CAEF,CAuNYo1d,CAAcjid,EAAMswc,EAASxK,EAASsX,QAJ/C,IAAI3qd,EAhmBR,SAAoBuN,EAAMswc,EAASxK,GACjC,IAAIia,EA90Ja,EA80JJzP,EACTzyN,EAAOihO,GAAW9+c,GAMtB,OAJA,SAASpT,IAEP,OADUqC,MAAQA,OAAS4K,IAAQ5K,gBAAgBrC,EAAWixP,EAAO79O,GAC3DgH,MAAM+4c,EAASja,EAAU72c,KAAM8X,UAC1C,CAEF,CAulBgBm7c,CAAWlid,EAAMswc,EAASxK,GASzC,OAAOwb,IADM/3d,EAAOgxd,GAAcjyY,IACJ71E,EAAQ00b,GAAUnnb,EAAMswc,EACvD,CAcD,SAAS6R,GAAuBxS,EAAUwH,EAAU5ld,EAAKqjC,GACvD,OAAI+6a,IAAa/4c,GACZioE,GAAG8wY,EAAU/F,GAAYr4c,MAAUud,GAAephB,KAAKknC,EAAQrjC,GAC3D4ld,EAEFxH,CACR,CAgBD,SAASyS,GAAoBzS,EAAUwH,EAAU5ld,EAAKqjC,EAAQ4B,EAAQslW,GAOpE,OANIxsX,GAASqgc,IAAargc,GAAS6nc,KAEjCr7E,EAAM1zY,IAAI+ud,EAAUxH,GACpB4I,GAAU5I,EAAUwH,EAAUvgd,EAAWwrd,GAAqBtmF,GAC9DA,EAAK,OAAWq7E,IAEXxH,CACR,CAWD,SAAS0S,GAAgBl1d,GACvB,OAAOkpC,GAAclpC,GAASyJ,EAAYzJ,CAC3C,CAeD,SAAS0od,GAAYv8c,EAAOmd,EAAO65b,EAASC,EAAY8E,EAAWv5E,GACjE,IAAIi6E,EApgLmB,EAogLPzF,EACZgS,EAAYhpd,EAAM1J,OAClBild,EAAYp+b,EAAM7mB,OAEtB,GAAI0yd,GAAazN,KAAekB,GAAalB,EAAYyN,GACvD,OAAO,EAGT,IAAIC,EAAazmF,EAAMjzY,IAAIyQ,GACvBk9c,EAAa16E,EAAMjzY,IAAI4tB,GAC3B,GAAI8rc,GAAc/L,EAChB,OAAO+L,GAAc9rc,GAAS+/b,GAAcl9c,EAE9C,IAAIlJ,GAAS,EACTqC,GAAS,EACTwid,EAlhLqB,EAkhLb3E,EAAoC,IAAIjC,GAAWz3c,EAM/D,IAJAklY,EAAM1zY,IAAIkR,EAAOmd,GACjBqlX,EAAM1zY,IAAIquB,EAAOnd,KAGRlJ,EAAQkyd,GAAW,CAC1B,IAAIE,EAAWlpd,EAAMlJ,GACjBsmd,EAAWjgc,EAAMrmB,GAErB,GAAImgd,EACF,IAAIoG,EAAWZ,EACXxF,EAAWmG,EAAU8L,EAAUpyd,EAAOqmB,EAAOnd,EAAOwiY,GACpDy0E,EAAWiS,EAAU9L,EAAUtmd,EAAOkJ,EAAOmd,EAAOqlX,GAE1D,GAAI66E,IAAa//c,EAAW,CAC1B,GAAI+/c,EACF,SAEFlkd,GAAS,EACT,KACD,CAED,GAAIwid,GACF,IAAKjO,GAAUvwb,GAAO,SAASigc,EAAU5B,GACnC,IAAK3M,GAAS8M,EAAMH,KACf0N,IAAa9L,GAAYrB,EAAUmN,EAAU9L,EAAUpG,EAASC,EAAYz0E,IAC/E,OAAOm5E,EAAK5ld,KAAKyld,EAEpB,IAAG,CACNrid,GAAS,EACT,KACD,OACI,GACD+vd,IAAa9L,IACXrB,EAAUmN,EAAU9L,EAAUpG,EAASC,EAAYz0E,GACpD,CACLrpY,GAAS,EACT,KACD,CACF,CAGD,OAFAqpY,EAAK,OAAWxiY,GAChBwiY,EAAK,OAAWrlX,GACThkB,CACR,CAyKD,SAAS0sd,GAASn/c,GAChB,OAAOk6c,GAAYC,GAASn6c,EAAMpJ,EAAW6rd,IAAUzid,EAAO,GAC/D,CASD,SAASkyc,GAAWt9a,GAClB,OAAOo/a,GAAep/a,EAAQ3mC,GAAMmjd,GACrC,CAUD,SAASa,GAAar9a,GACpB,OAAOo/a,GAAep/a,EAAQs8a,GAAQF,GACvC,CASD,IAAI3oY,GAAWgkY,GAAiB,SAASrsc,GACvC,OAAOqsc,GAAQxjd,IAAImX,EACpB,EAFwB+Q,GAWzB,SAASuuc,GAAYt/c,GAKnB,IAJA,IAAIvN,EAAUuN,EAAK3X,KAAO,GACtBiR,EAAQgzc,GAAU75c,GAClB7C,EAASkf,GAAephB,KAAK4+c,GAAW75c,GAAU6G,EAAM1J,OAAS,EAE9DA,KAAU,CACf,IAAIrG,EAAO+P,EAAM1J,GACb8yd,EAAYn5d,EAAKyW,KACrB,GAAiB,MAAb0id,GAAqBA,GAAa1id,EACpC,OAAOzW,EAAKlB,IAEf,CACD,OAAOoK,CACR,CASD,SAASytd,GAAUlgd,GAEjB,OADa8O,GAAephB,KAAKs/c,GAAQ,eAAiBA,GAAShtc,GACrD2hP,WACf,CAaD,SAASw3N,KACP,IAAI1md,EAASu6c,GAAOhH,UAAYA,GAEhC,OADAvzc,EAASA,IAAWuzc,GAAWsR,GAAe7kd,EACvCsU,UAAUnX,OAAS6C,EAAOsU,UAAU,GAAIA,UAAU,IAAMtU,CAChE,CAUD,SAASkgd,GAAW3/c,EAAKzB,GACvB,IAAIhI,EAAOyJ,EAAIs7c,SACf,OA+XF,SAAmBnhd,GACjB,IAAImH,SAAcnH,EAClB,MAAgB,UAARmH,GAA4B,UAARA,GAA4B,UAARA,GAA4B,WAARA,EACrD,cAAVnH,EACU,OAAVA,CACN,CApYQw1d,CAAUpxd,GACbhI,EAAmB,iBAAPgI,EAAkB,SAAW,QACzChI,EAAKyJ,GACV,CASD,SAASkld,GAAatjb,GAIpB,IAHA,IAAIniC,EAASxE,GAAK2mC,GACdhlC,EAAS6C,EAAO7C,OAEbA,KAAU,CACf,IAAI2B,EAAMkB,EAAO7C,GACbzC,EAAQynC,EAAOrjC,GAEnBkB,EAAO7C,GAAU,CAAC2B,EAAKpE,EAAOkrd,GAAmBlrd,GAClD,CACD,OAAOsF,CACR,CAUD,SAASw4c,GAAUr2a,EAAQrjC,GACzB,IAAIpE,EAlxJR,SAAkBynC,EAAQrjC,GACxB,OAAiB,MAAVqjC,EAAiBh+B,EAAYg+B,EAAOrjC,EAC5C,CAgxJek8B,CAASmH,EAAQrjC,GAC7B,OAAO8ld,GAAalqd,GAASA,EAAQyJ,CACtC,CAoCD,IAAIw6c,GAAc7F,GAA+B,SAAS32a,GACxD,OAAc,MAAVA,EACK,IAETA,EAAS3nC,GAAO2nC,GACTyxa,GAAYkF,GAAiB32a,IAAS,SAASkmE,GACpD,OAAO0lU,GAAqB9ya,KAAKknC,EAAQkmE,EAC1C,IACF,EARoC8nX,GAiBjC5R,GAAgBzF,GAA+B,SAAS32a,GAE1D,IADA,IAAIniC,EAAS,GACNmiC,GACLgya,GAAUn0c,EAAQ2+c,GAAWx8a,IAC7BA,EAAS81a,GAAa91a,GAExB,OAAOniC,CACR,EAPsCmwd,GAgBnChS,GAASuD,GA2Eb,SAAS0O,GAAQjub,EAAQhjC,EAAMkxd,GAO7B,IAJA,IAAI1yd,GAAS,EACTR,GAHJgC,EAAOkid,GAASlid,EAAMgjC,IAGJhlC,OACd6C,GAAS,IAEJrC,EAAQR,GAAQ,CACvB,IAAI2B,EAAMwid,GAAMnid,EAAKxB,IACrB,KAAMqC,EAAmB,MAAVmiC,GAAkBkub,EAAQlub,EAAQrjC,IAC/C,MAEFqjC,EAASA,EAAOrjC,EACjB,CACD,OAAIkB,KAAYrC,GAASR,EAChB6C,KAET7C,EAAmB,MAAVglC,EAAiB,EAAIA,EAAOhlC,SAClBmzd,GAASnzd,IAAWo/c,GAAQz9c,EAAK3B,KACjDmE,GAAQ6gC,IAAWg6a,GAAYh6a,GACnC,CA4BD,SAASm8a,GAAgBn8a,GACvB,MAAqC,mBAAtBA,EAAO0B,aAA8Bqhb,GAAY/ib,GAE5D,CAAC,EADDy4a,GAAW3C,GAAa91a,GAE7B,CA4ED,SAAS4+a,GAAcrmd,GACrB,OAAO4G,GAAQ5G,IAAUyhd,GAAYzhd,OAChCy9c,IAAoBz9c,GAASA,EAAMy9c,IACzC,CAUD,SAASoE,GAAQ7hd,EAAOyC,GACtB,IAAI0E,SAAcnH,EAGlB,SAFAyC,EAAmB,MAAVA,EAAiBmuc,EAAmBnuc,KAGlC,UAAR0E,GACU,UAARA,GAAoBqtc,GAASt8b,KAAKlY,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQyC,CAChD,CAYD,SAAS2ud,GAAepxd,EAAOiD,EAAOwkC,GACpC,IAAKtlB,GAASslB,GACZ,OAAO,EAET,IAAItgC,SAAclE,EAClB,SAAY,UAARkE,EACK2jd,GAAYrjb,IAAWo6a,GAAQ5+c,EAAOwkC,EAAOhlC,QACrC,UAAR0E,GAAoBlE,KAASwkC,IAE7BiqC,GAAGjqC,EAAOxkC,GAAQjD,EAG5B,CAUD,SAASird,GAAMjrd,EAAOynC,GACpB,GAAI7gC,GAAQ5G,GACV,OAAO,EAET,IAAImH,SAAcnH,EAClB,QAAY,UAARmH,GAA4B,UAARA,GAA4B,WAARA,GAC/B,MAATnH,IAAiBimd,GAASjmd,MAGvBszc,GAAcp7b,KAAKlY,KAAWqzc,GAAan7b,KAAKlY,IAC1C,MAAVynC,GAAkBznC,KAASF,GAAO2nC,GACtC,CAwBD,SAAS2qb,GAAWv/c,GAClB,IAAIqtW,EAAWiyG,GAAYt/c,GACvByW,EAAQu2b,GAAO3/F,GAEnB,GAAoB,mBAAT52V,KAAyB42V,KAAY6/F,GAAYj2c,WAC1D,OAAO,EAET,GAAI+I,IAASyW,EACX,OAAO,EAET,IAAIltB,EAAO8+E,GAAQ5xD,GACnB,QAASltB,GAAQyW,IAASzW,EAAK,EAChC,EA9SI4id,IAAYyE,GAAO,IAAIzE,GAAS,IAAI6W,YAAY,MAAQ5jB,GACxDj3c,IAAOyod,GAAO,IAAIzod,KAAQu2c,GAC1B9wc,IAAWgjd,GAAOhjd,GAAQC,YAAcgxc,GACxC7wc,IAAO4id,GAAO,IAAI5id,KAAQ+wc,GAC1Bvhc,IAAWozc,GAAO,IAAIpzc,KAAY0hc,KACrC0R,GAAS,SAASzjd,GAChB,IAAIsF,EAAS0hd,GAAWhnd,GACpB0wP,EAAOprP,GAAUmsc,EAAYzxc,EAAMmpC,YAAc1/B,EACjDqsd,EAAaplO,EAAO2uN,GAAS3uN,GAAQ,GAEzC,GAAIolO,EACF,OAAQA,GACN,KAAK1W,GAAoB,OAAOnN,EAChC,KAAKqN,GAAe,OAAO/N,EAC3B,KAAKgO,GAAmB,OAAO7N,EAC/B,KAAK8N,GAAe,OAAO5N,EAC3B,KAAK6N,GAAmB,OAAO1N,EAGnC,OAAOzsc,CACR,GA8SH,IAAIywd,GAAarZ,GAAa/rZ,GAAaqla,GAS3C,SAASxL,GAAYxqd,GACnB,IAAI0wP,EAAO1wP,GAASA,EAAMmpC,YAG1B,OAAOnpC,KAFqB,mBAAR0wP,GAAsBA,EAAK5mP,WAAc2yc,GAG9D,CAUD,SAASyO,GAAmBlrd,GAC1B,OAAOA,IAAUA,IAAUmiB,GAASniB,EACrC,CAWD,SAASgrd,GAAwB5md,EAAK4ld,GACpC,OAAO,SAASvib,GACd,OAAc,MAAVA,IAGGA,EAAOrjC,KAAS4ld,IACpBA,IAAavgd,GAAcrF,KAAOtE,GAAO2nC,IAC7C,CACF,CAoID,SAASulb,GAASn6c,EAAMwrB,EAAOS,GAE7B,OADAT,EAAQqgb,GAAUrgb,IAAU50B,EAAaoJ,EAAKpQ,OAAS,EAAK47B,EAAO,GAC5D,WAML,IALA,IAAI3+B,EAAOka,UACP3W,GAAS,EACTR,EAASi8c,GAAUh/c,EAAK+C,OAAS47B,EAAO,GACxClyB,EAAQxF,EAAMlE,KAETQ,EAAQR,GACf0J,EAAMlJ,GAASvD,EAAK2+B,EAAQp7B,GAE9BA,GAAS,EAET,IADA,IAAIgzd,EAAYtvd,EAAM03B,EAAQ,KACrBp7B,EAAQo7B,GACf43b,EAAUhzd,GAASvD,EAAKuD,GAG1B,OADAgzd,EAAU53b,GAASS,EAAU3yB,GACtB0N,GAAMhH,EAAM/Q,KAAMm0d,EAC1B,CACF,CAUD,SAAStpd,GAAO86B,EAAQhjC,GACtB,OAAOA,EAAKhC,OAAS,EAAIglC,EAASi/a,GAAQj/a,EAAQ8lb,GAAU9od,EAAM,GAAI,GACvE,CAYD,SAAS0ud,GAAQhnd,EAAO02G,GAKtB,IAJA,IAAIsyW,EAAYhpd,EAAM1J,OAClBA,EAASk8c,GAAU97V,EAAQpgH,OAAQ0yd,GACnCe,EAAWhU,GAAU/1c,GAElB1J,KAAU,CACf,IAAIQ,EAAQ4/G,EAAQpgH,GACpB0J,EAAM1J,GAAUo/c,GAAQ5+c,EAAOkyd,GAAae,EAASjzd,GAASwG,CAC/D,CACD,OAAO0C,CACR,CAUD,SAASo/c,GAAQ9jb,EAAQrjC,GACvB,IAAY,gBAARA,GAAgD,oBAAhBqjC,EAAOrjC,KAIhC,aAAPA,EAIJ,OAAOqjC,EAAOrjC,EACf,CAgBD,IAAI+2E,GAAUg7Y,GAAS/I,IAUnB/1b,GAAa4mb,IAAiB,SAASprc,EAAMi2B,GAC/C,OAAOp8B,GAAK2qB,WAAWxkB,EAAMi2B,EAC9B,EAUGikb,GAAcoJ,GAAS9I,IAY3B,SAAS8G,GAAgB10d,EAAS6P,EAAW6zc,GAC3C,IAAI95a,EAAU/5B,EAAY,GAC1B,OAAOy9c,GAAYttd,EA1brB,SAA2B4pC,EAAQuwB,GACjC,IAAIn3D,EAASm3D,EAAQn3D,OACrB,IAAKA,EACH,OAAO4mC,EAET,IAAIvxB,EAAYrV,EAAS,EAGzB,OAFAm3D,EAAQ9hD,IAAcrV,EAAS,EAAI,KAAO,IAAMm3D,EAAQ9hD,GACxD8hD,EAAUA,EAAQrrD,KAAK9L,EAAS,EAAI,KAAO,KACpC4mC,EAAO3lC,QAAQkwc,GAAe,uBAAyBh6Y,EAAU,SACzE,CAib6Bw8Z,CAAkB/sb,EAqHhD,SAA2BuwB,EAASupZ,GAOlC,OANArK,GAAU/H,GAAW,SAAS/9Y,GAC5B,IAAIhzD,EAAQ,KAAOgzD,EAAK,GACnBmwZ,EAAUnwZ,EAAK,KAAQomZ,GAAcx/Y,EAAS55D,IACjD45D,EAAQ13D,KAAKlC,EAEhB,IACM45D,EAAQ1+B,MAChB,CA7HuDm7b,CAtjBxD,SAAwBhtb,GACtB,IAAIt4B,EAAQs4B,EAAOt4B,MAAM8ic,IACzB,OAAO9ic,EAAQA,EAAM,GAAG5M,MAAM2vc,IAAkB,EACjD,CAmjByEwiB,CAAejtb,GAAS85a,IACjG,CAWD,SAASgT,GAAStjd,GAChB,IAAIlF,EAAQ,EACR4od,EAAa,EAEjB,OAAO,WACL,IAAIC,EAAQ5X,KACR6X,EApiNK,IAoiNmBD,EAAQD,GAGpC,GADAA,EAAaC,EACTC,EAAY,GACd,KAAM9od,GAziNE,IA0iNN,OAAOiM,UAAU,QAGnBjM,EAAQ,EAEV,OAAOkF,EAAKgH,MAAMpQ,EAAWmQ,UAC9B,CACF,CAUD,SAASqoc,GAAY91c,EAAOwD,GAC1B,IAAI1M,GAAS,EACTR,EAAS0J,EAAM1J,OACfqV,EAAYrV,EAAS,EAGzB,IADAkN,EAAOA,IAASlG,EAAYhH,EAASkN,IAC5B1M,EAAQ0M,GAAM,CACrB,IAAI+md,EAAO3U,GAAW9+c,EAAO6U,GACzB9X,EAAQmM,EAAMuqd,GAElBvqd,EAAMuqd,GAAQvqd,EAAMlJ,GACpBkJ,EAAMlJ,GAASjD,CAChB,CAED,OADAmM,EAAM1J,OAASkN,EACRxD,CACR,CASD,IAAIsjd,GAvTJ,SAAuB58c,GACrB,IAAIvN,EAAS+M,GAAQQ,GAAM,SAASzO,GAIlC,OAh0MiB,MA6zMbgO,EAAMzC,MACRyC,EAAM62B,QAED7kC,CACR,IAEGgO,EAAQ9M,EAAO8M,MACnB,OAAO9M,CACR,CA6SkBqxd,EAAc,SAASz/c,GACxC,IAAI5R,EAAS,GAOb,OAN6B,KAAzB4R,EAAOpL,WAAW,IACpBxG,EAAOpD,KAAK,IAEdgV,EAAOxT,QAAQ6vc,IAAY,SAASxic,EAAO+kB,EAAQ8gc,EAAOC,GACxDvxd,EAAOpD,KAAK00d,EAAQC,EAAUnzd,QAAQuwc,GAAc,MAASn+a,GAAU/kB,EACxE,IACMzL,CACR,IASD,SAASshd,GAAM5md,GACb,GAAoB,iBAATA,GAAqBimd,GAASjmd,GACvC,OAAOA,EAET,IAAIsF,EAAUtF,EAAQ,GACtB,MAAkB,KAAVsF,GAAkB,EAAItF,IAAU,IAAa,KAAOsF,CAC7D,CASD,SAAS+5c,GAASxsc,GAChB,GAAY,MAARA,EAAc,CAChB,IACE,OAAO8pc,GAAap8c,KAAKsS,EACb,CAAZ,MAAO9H,GAAK,CACd,IACE,OAAQ8H,EAAO,EACH,CAAZ,MAAO9H,GAAK,CACf,CACD,MAAO,EACR,CA2BD,SAASk1c,GAAaxgd,GACpB,GAAIA,aAAmBsgd,GACrB,OAAOtgd,EAAQ2tB,QAEjB,IAAI9nB,EAAS,IAAI06c,GAAcvgd,EAAQ4gd,YAAa5gd,EAAQ8gd,WAI5D,OAHAj7c,EAAOg7c,YAAc4B,GAAUzid,EAAQ6gd,aACvCh7c,EAAOk7c,UAAa/gd,EAAQ+gd,UAC5Bl7c,EAAOm7c,WAAahhd,EAAQghd,WACrBn7c,CACR,CAqID,IAAIqgF,GAAamnY,IAAS,SAAS3gd,EAAOsrB,GACxC,OAAOg0b,GAAkBt/c,GACrB+4c,GAAe/4c,EAAOg6c,GAAY1ub,EAAQ,EAAGg0b,IAAmB,IAChE,EACL,IA4BGqL,GAAehK,IAAS,SAAS3gd,EAAOsrB,GAC1C,IAAIohb,EAAWliZ,GAAKl/B,GAIpB,OAHIg0b,GAAkB5S,KACpBA,EAAWpvc,GAENgid,GAAkBt/c,GACrB+4c,GAAe/4c,EAAOg6c,GAAY1ub,EAAQ,EAAGg0b,IAAmB,GAAOO,GAAYnT,EAAU,IAC7F,EACL,IAyBGke,GAAiBjK,IAAS,SAAS3gd,EAAOsrB,GAC5C,IAAI8hb,EAAa5iZ,GAAKl/B,GAItB,OAHIg0b,GAAkBlS,KACpBA,EAAa9vc,GAERgid,GAAkBt/c,GACrB+4c,GAAe/4c,EAAOg6c,GAAY1ub,EAAQ,EAAGg0b,IAAmB,GAAOhid,EAAW8vc,GAClF,EACL,IAqOD,SAAS9gM,GAAUtsQ,EAAO8sc,EAAW7qO,GACnC,IAAI3rO,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIQ,EAAqB,MAAbmrO,EAAoB,EAAIimP,GAAUjmP,GAI9C,OAHInrO,EAAQ,IACVA,EAAQy7c,GAAUj8c,EAASQ,EAAO,IAE7Bi3c,GAAc/tc,EAAO6/c,GAAY/S,EAAW,GAAIh2c,EACxD,CAqCD,SAAS+zd,GAAc7qd,EAAO8sc,EAAW7qO,GACvC,IAAI3rO,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIQ,EAAQR,EAAS,EAOrB,OANI2rO,IAAc3kO,IAChBxG,EAAQoxd,GAAUjmP,GAClBnrO,EAAQmrO,EAAY,EAChBswO,GAAUj8c,EAASQ,EAAO,GAC1B07c,GAAU17c,EAAOR,EAAS,IAEzBy3c,GAAc/tc,EAAO6/c,GAAY/S,EAAW,GAAIh2c,GAAO,EAC/D,CAgBD,SAASqyd,GAAQnpd,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM1J,QACvB0jd,GAAYh6c,EAAO,GAAK,EACzC,CA+FD,SAASiF,GAAKjF,GACZ,OAAQA,GAASA,EAAM1J,OAAU0J,EAAM,GAAK1C,CAC7C,CAyED,IAAIwtd,GAAenK,IAAS,SAASrF,GACnC,IAAIyP,EAAS1d,GAASiO,EAAQ8H,IAC9B,OAAQ2H,EAAOz0d,QAAUy0d,EAAO,KAAOzP,EAAO,GAC1CD,GAAiB0P,GACjB,EACL,IAyBGC,GAAiBrK,IAAS,SAASrF,GACrC,IAAI5O,EAAWliZ,GAAK8wZ,GAChByP,EAAS1d,GAASiO,EAAQ8H,IAO9B,OALI1W,IAAaliZ,GAAKuga,GACpBre,EAAWpvc,EAEXytd,EAAOxna,MAEDwna,EAAOz0d,QAAUy0d,EAAO,KAAOzP,EAAO,GAC1CD,GAAiB0P,EAAQlL,GAAYnT,EAAU,IAC/C,EACL,IAuBGue,GAAmBtK,IAAS,SAASrF,GACvC,IAAIlO,EAAa5iZ,GAAK8wZ,GAClByP,EAAS1d,GAASiO,EAAQ8H,IAM9B,OAJAhW,EAAkC,mBAAdA,EAA2BA,EAAa9vc,IAE1Dytd,EAAOxna,MAEDwna,EAAOz0d,QAAUy0d,EAAO,KAAOzP,EAAO,GAC1CD,GAAiB0P,EAAQztd,EAAW8vc,GACpC,EACL,IAmCD,SAAS5iZ,GAAKxqD,GACZ,IAAI1J,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAOA,EAAS0J,EAAM1J,EAAS,GAAKgH,CACrC,CAsFD,IAAI4td,GAAOvK,GAASwK,IAsBpB,SAASA,GAAQnrd,EAAOsrB,GACtB,OAAQtrB,GAASA,EAAM1J,QAAUg1B,GAAUA,EAAOh1B,OAC9Ciqd,GAAYvgd,EAAOsrB,GACnBtrB,CACL,CAoFD,IAAIord,GAASvF,IAAS,SAAS7ld,EAAO02G,GACpC,IAAIpgH,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACnC6C,EAASw9c,GAAO32c,EAAO02G,GAM3B,OAJA8pW,GAAWxgd,EAAOqtc,GAAS32V,GAAS,SAAS5/G,GAC3C,OAAO4+c,GAAQ5+c,EAAOR,IAAWQ,EAAQA,CAC1C,IAAEi4B,KAAKoxb,KAEDhnd,CACR,IA0ED,SAASs3D,GAAQzwD,GACf,OAAgB,MAATA,EAAgBA,EAAQ4yc,GAAcx+c,KAAK4L,EACnD,CAiaD,IAAIu7B,GAAQolb,IAAS,SAASrF,GAC5B,OAAOkH,GAASxI,GAAYsB,EAAQ,EAAGgE,IAAmB,GAC3D,IAyBG+L,GAAU1K,IAAS,SAASrF,GAC9B,IAAI5O,EAAWliZ,GAAK8wZ,GAIpB,OAHIgE,GAAkB5S,KACpBA,EAAWpvc,GAENkld,GAASxI,GAAYsB,EAAQ,EAAGgE,IAAmB,GAAOO,GAAYnT,EAAU,GACxF,IAuBG4e,GAAY3K,IAAS,SAASrF,GAChC,IAAIlO,EAAa5iZ,GAAK8wZ,GAEtB,OADAlO,EAAkC,mBAAdA,EAA2BA,EAAa9vc,EACrDkld,GAASxI,GAAYsB,EAAQ,EAAGgE,IAAmB,GAAOhid,EAAW8vc,EAC7E,IA+FD,SAASme,GAAMvrd,GACb,IAAMA,IAASA,EAAM1J,OACnB,MAAO,GAET,IAAIA,EAAS,EAOb,OANA0J,EAAQ+sc,GAAY/sc,GAAO,SAASkrF,GAClC,GAAIo0X,GAAkBp0X,GAEpB,OADA50F,EAASi8c,GAAUrnX,EAAM50F,OAAQA,IAC1B,CAEV,IACMk4c,GAAUl4c,GAAQ,SAASQ,GAChC,OAAOu2c,GAASrtc,EAAO4tc,GAAa92c,GACrC,GACF,CAuBD,SAAS00d,GAAUxrd,EAAO0sc,GACxB,IAAM1sc,IAASA,EAAM1J,OACnB,MAAO,GAET,IAAI6C,EAASoyd,GAAMvrd,GACnB,OAAgB,MAAZ0sc,EACKvzc,EAEFk0c,GAASl0c,GAAQ,SAAS+xF,GAC/B,OAAOx9E,GAAMg/b,EAAUpvc,EAAW4tF,EACnC,GACF,CAsBD,IAAIugY,GAAU9K,IAAS,SAAS3gd,EAAOsrB,GACrC,OAAOg0b,GAAkBt/c,GACrB+4c,GAAe/4c,EAAOsrB,GACtB,EACL,IAoBGg7I,GAAMq6S,IAAS,SAASrF,GAC1B,OAAO0H,GAAQjW,GAAYuO,EAAQgE,IACpC,IAyBGoM,GAAQ/K,IAAS,SAASrF,GAC5B,IAAI5O,EAAWliZ,GAAK8wZ,GAIpB,OAHIgE,GAAkB5S,KACpBA,EAAWpvc,GAEN0ld,GAAQjW,GAAYuO,EAAQgE,IAAoBO,GAAYnT,EAAU,GAC9E,IAuBGif,GAAUhL,IAAS,SAASrF,GAC9B,IAAIlO,EAAa5iZ,GAAK8wZ,GAEtB,OADAlO,EAAkC,mBAAdA,EAA2BA,EAAa9vc,EACrD0ld,GAAQjW,GAAYuO,EAAQgE,IAAoBhid,EAAW8vc,EACnE,IAkBGwe,GAAMjL,GAAS4K,IA6DnB,IAAIM,GAAUlL,IAAS,SAASrF,GAC9B,IAAIhld,EAASgld,EAAOhld,OAChBo2c,EAAWp2c,EAAS,EAAIgld,EAAOhld,EAAS,GAAKgH,EAGjD,OADAovc,EAA8B,mBAAZA,GAA0B4O,EAAO/3Z,MAAOmpZ,GAAYpvc,EAC/Dkud,GAAUlQ,EAAQ5O,EAC1B,IAiCD,SAASof,GAAMj4d,GACb,IAAIsF,EAASu6c,GAAO7/c,GAEpB,OADAsF,EAAOi7c,WAAY,EACZj7c,CACR,CAqDD,SAAS4sd,GAAKlyd,EAAOk4d,GACnB,OAAOA,EAAYl4d,EACpB,CAkBD,IAAIm4d,GAAYnG,IAAS,SAASjP,GAChC,IAAItgd,EAASsgd,EAAMtgd,OACf47B,EAAQ57B,EAASsgd,EAAM,GAAK,EAC5B/id,EAAQ8B,KAAKu+c,YACb6X,EAAc,SAASzwb,GAAU,OAAOq7a,GAAOr7a,EAAQs7a,EAAS,EAEpE,QAAItgd,EAAS,GAAKX,KAAKw+c,YAAY79c,SAC7BzC,aAAiB+/c,IAAiB8B,GAAQxjb,KAGhDr+B,EAAQA,EAAM6G,MAAMw3B,GAAQA,GAAS57B,EAAS,EAAI,KAC5C69c,YAAYp+c,KAAK,CACrB,KAAQgwd,GACR,KAAQ,CAACgG,GACT,QAAWzud,IAEN,IAAIu2c,GAAchgd,EAAO8B,KAAKy+c,WAAW2R,MAAK,SAAS/ld,GAI5D,OAHI1J,IAAW0J,EAAM1J,QACnB0J,EAAMjK,KAAKuH,GAEN0C,CACR,KAbQrK,KAAKowd,KAAKgG,EAcpB,IAiPD,IAAIE,GAAUrH,IAAiB,SAASzrd,EAAQtF,EAAOoE,GACjDud,GAAephB,KAAK+E,EAAQlB,KAC5BkB,EAAOlB,GAETk+c,GAAgBh9c,EAAQlB,EAAK,EAEhC,IAqID,IAAItG,GAAO+zd,GAAWp5M,IAqBlB4/M,GAAWxG,GAAWmF,IA2G1B,SAASx0d,GAAQqP,EAAYgnc,GAE3B,OADWjyc,GAAQiL,GAAcinc,GAAY6J,IACjC9wc,EAAYm6c,GAAYnT,EAAU,GAC/C,CAsBD,SAASyf,GAAazmd,EAAYgnc,GAEhC,OADWjyc,GAAQiL,GAAcknc,GAAiB8M,IACtCh0c,EAAYm6c,GAAYnT,EAAU,GAC/C,CAyBD,IAAIjiX,GAAUm6X,IAAiB,SAASzrd,EAAQtF,EAAOoE,GACjDud,GAAephB,KAAK+E,EAAQlB,GAC9BkB,EAAOlB,GAAKlC,KAAKlC,GAEjBsid,GAAgBh9c,EAAQlB,EAAK,CAACpE,GAEjC,IAoED,IAAIu4d,GAAYzL,IAAS,SAASj7c,EAAYpN,EAAM/E,GAClD,IAAIuD,GAAS,EACTygd,EAAwB,mBAARj/c,EAChBa,EAASwld,GAAYj5c,GAAclL,EAAMkL,EAAWpP,QAAU,GAKlE,OAHAkgd,GAAS9wc,GAAY,SAAS7R,GAC5BsF,IAASrC,GAASygd,EAAS7pc,GAAMpV,EAAMzE,EAAON,GAAQqod,GAAW/nd,EAAOyE,EAAM/E,EAC/E,IACM4F,CACR,IA8BGkzd,GAAQzH,IAAiB,SAASzrd,EAAQtF,EAAOoE,GACnDk+c,GAAgBh9c,EAAQlB,EAAKpE,EAC9B,IA4CD,SAAS6F,GAAIgM,EAAYgnc,GAEvB,OADWjyc,GAAQiL,GAAc2nc,GAAWqR,IAChCh5c,EAAYm6c,GAAYnT,EAAU,GAC/C,CAiFD,IAAI4f,GAAY1H,IAAiB,SAASzrd,EAAQtF,EAAOoE,GACvDkB,EAAOlB,EAAM,EAAI,GAAGlC,KAAKlC,EAC1B,IAAE,WAAa,MAAO,CAAC,GAAI,GAAM,IAmSlC,IAAI02F,GAASo2X,IAAS,SAASj7c,EAAYi6c,GACzC,GAAkB,MAAdj6c,EACF,MAAO,GAET,IAAIpP,EAASqpd,EAAUrpd,OAMvB,OALIA,EAAS,GAAK2ud,GAAev/c,EAAYi6c,EAAU,GAAIA,EAAU,IACnEA,EAAY,GACHrpd,EAAS,GAAK2ud,GAAetF,EAAU,GAAIA,EAAU,GAAIA,EAAU,MAC5EA,EAAY,CAACA,EAAU,KAElBD,GAAYh6c,EAAYs0c,GAAY2F,EAAW,GAAI,GAC3D,IAoBGzmZ,GAAM24Y,IAAU,WAClB,OAAOtxc,GAAK9H,KAAKygE,KAClB,EAyDD,SAASqtZ,GAAI7/c,EAAMkT,EAAGorc,GAGpB,OAFAprc,EAAIorc,EAAQ1nd,EAAYsc,EACxBA,EAAKlT,GAAa,MAALkT,EAAalT,EAAKpQ,OAASsjB,EACjCyuc,GAAW3hd,EAAM49b,EAAehnc,EAAWA,EAAWA,EAAWA,EAAWsc,EACpF,CAmBD,SAAS/c,GAAO+c,EAAGlT,GACjB,IAAIvN,EACJ,GAAmB,mBAARuN,EACT,MAAM,IAAI24B,GAAU2ka,GAGtB,OADApqb,EAAIsuc,GAAUtuc,GACP,WAOL,QANMA,EAAI,IACRzgB,EAASuN,EAAKgH,MAAM/X,KAAM8X,YAExBmM,GAAK,IACPlT,EAAOpJ,GAEFnE,CACR,CACF,CAqCD,IAAI1G,GAAOkud,IAAS,SAASj6c,EAAM8lc,EAASsX,GAC1C,IAAI9M,EAv4Ta,EAw4TjB,GAAI8M,EAASxtd,OAAQ,CACnB,IAAIytd,EAAUtU,GAAeqU,EAAU8C,GAAUn0d,KACjDukd,GAAW5S,CACZ,CACD,OAAOikB,GAAW3hd,EAAMswc,EAASxK,EAASsX,EAAUC,EACrD,IA+CGwI,GAAU5L,IAAS,SAASrlb,EAAQrjC,EAAK6rd,GAC3C,IAAI9M,EAAUwV,EACd,GAAI1I,EAASxtd,OAAQ,CACnB,IAAIytd,EAAUtU,GAAeqU,EAAU8C,GAAU2F,KACjDvV,GAAW5S,CACZ,CACD,OAAOikB,GAAWpwd,EAAK++c,EAAS17a,EAAQwob,EAAUC,EACnD,IAqJD,SAAS97b,GAASvhB,EAAMi2B,EAAM5pC,GAC5B,IAAI05d,EACAC,EACAC,EACAxzd,EACAkrD,EACAuoa,EACAC,EAAiB,EACjBC,GAAU,EACVC,GAAS,EACT3H,GAAW,EAEf,GAAmB,mBAAR1+c,EACT,MAAM,IAAI24B,GAAU2ka,GAUtB,SAASgpB,EAAWjjc,GAClB,IAAIx2B,EAAOk5d,EACPjgB,EAAUkgB,EAKd,OAHAD,EAAWC,EAAWpvd,EACtBuvd,EAAiB9ic,EACjB5wB,EAASuN,EAAKgH,MAAM8+b,EAASj5c,EAE9B,CAED,SAAS05d,EAAYljc,GAMnB,OAJA8ic,EAAiB9ic,EAEjBs6B,EAAUn5B,GAAWgic,EAAcvwb,GAE5Bmwb,EAAUE,EAAWjjc,GAAQ5wB,CACrC,CAYD,SAASg0d,EAAapjc,GACpB,IAAIqjc,EAAoBrjc,EAAO6ic,EAM/B,OAAQA,IAAiBtvd,GAAc8vd,GAAqBzwb,GACzDywb,EAAoB,GAAOL,GANJhjc,EAAO8ic,GAM8BF,CAChE,CAED,SAASO,IACP,IAAInjc,EAAOmvC,KACX,GAAIi0Z,EAAapjc,GACf,OAAOsjc,EAAatjc,GAGtBs6B,EAAUn5B,GAAWgic,EA3BvB,SAAuBnjc,GACrB,IAEIujc,EAAc3wb,GAFM5S,EAAO6ic,GAI/B,OAAOG,EACHva,GAAU8a,EAAaX,GAJD5ic,EAAO8ic,IAK7BS,CACL,CAmBoCC,CAAcxjc,GAClD,CAED,SAASsjc,EAAatjc,GAKpB,OAJAs6B,EAAU/mD,EAIN8nd,GAAYqH,EACPO,EAAWjjc,IAEpB0ic,EAAWC,EAAWpvd,EACfnE,EACR,CAcD,SAASyjC,IACP,IAAI7S,EAAOmvC,KACPs0Z,EAAaL,EAAapjc,GAM9B,GAJA0ic,EAAWh/c,UACXi/c,EAAW/2d,KACXi3d,EAAe7ic,EAEXyjc,EAAY,CACd,GAAInpa,IAAY/mD,EACd,OAAO2vd,EAAYL,GAErB,GAAIG,EAIF,OAFA9hc,GAAao5B,GACbA,EAAUn5B,GAAWgic,EAAcvwb,GAC5Bqwb,EAAWJ,EAErB,CAID,OAHIvoa,IAAY/mD,IACd+mD,EAAUn5B,GAAWgic,EAAcvwb,IAE9BxjC,CACR,CAGD,OA3GAwjC,EAAOwkS,GAASxkS,IAAS,EACrB3mB,GAASjjB,KACX+5d,IAAY/5d,EAAQ+5d,QAEpBH,GADAI,EAAS,YAAah6d,GACHw/c,GAAUpxI,GAASpuU,EAAQ45d,UAAY,EAAGhwb,GAAQgwb,EACrEvH,EAAW,aAAcryd,IAAYA,EAAQqyd,SAAWA,GAoG1Dxob,EAAU+Z,OApCV,WACM0N,IAAY/mD,GACd2tB,GAAao5B,GAEfwoa,EAAiB,EACjBJ,EAAWG,EAAeF,EAAWroa,EAAU/mD,CAChD,EA+BDs/B,EAAU99B,MA7BV,WACE,OAAOulD,IAAY/mD,EAAYnE,EAASk0d,EAAan0Z,KACtD,EA4BMt8B,CACR,CAoBD,IAAI6wb,GAAQ9M,IAAS,SAASj6c,EAAMnT,GAClC,OAAOuld,GAAUpyc,EAAM,EAAGnT,EAC3B,IAqBGovB,GAAQg+b,IAAS,SAASj6c,EAAMi2B,EAAMppC,GACxC,OAAOuld,GAAUpyc,EAAMy6T,GAASxkS,IAAS,EAAGppC,EAC7C,IAoED,SAAS2S,GAAQQ,EAAMgnd,GACrB,GAAmB,mBAARhnd,GAAmC,MAAZgnd,GAAuC,mBAAZA,EAC3D,MAAM,IAAIrub,GAAU2ka,GAEtB,IAAI2pB,EAAW,SAAXA,IACF,IAAIp6d,EAAOka,UACPxV,EAAMy1d,EAAWA,EAAShgd,MAAM/X,KAAMpC,GAAQA,EAAK,GACnD0S,EAAQ0nd,EAAS1nd,MAErB,GAAIA,EAAM3W,IAAI2I,GACZ,OAAOgO,EAAM1W,IAAI0I,GAEnB,IAAIkB,EAASuN,EAAKgH,MAAM/X,KAAMpC,GAE9B,OADAo6d,EAAS1nd,MAAQA,EAAMnX,IAAImJ,EAAKkB,IAAW8M,EACpC9M,CACR,EAED,OADAw0d,EAAS1nd,MAAQ,IAAKC,GAAQ41H,OAASg5U,IAChC6Y,CACR,CAyBD,SAASplY,GAAOukX,GACd,GAAwB,mBAAbA,EACT,MAAM,IAAIzta,GAAU2ka,GAEtB,OAAO,WACL,IAAIzwc,EAAOka,UACX,OAAQla,EAAK+C,QACX,KAAK,EAAG,OAAQw2c,EAAU14c,KAAKuB,MAC/B,KAAK,EAAG,OAAQm3c,EAAU14c,KAAKuB,KAAMpC,EAAK,IAC1C,KAAK,EAAG,OAAQu5c,EAAU14c,KAAKuB,KAAMpC,EAAK,GAAIA,EAAK,IACnD,KAAK,EAAG,OAAQu5c,EAAU14c,KAAKuB,KAAMpC,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAE9D,OAAQu5c,EAAUp/b,MAAM/X,KAAMpC,EAC/B,CACF,CApCD2S,GAAQ41H,MAAQg5U,GA2FhB,IAAI8Y,GAAWrK,IAAS,SAAS78c,EAAMmnd,GAKrC,IAAIC,GAJJD,EAAmC,GAArBA,EAAWv3d,QAAemE,GAAQozd,EAAW,IACvDxgB,GAASwgB,EAAW,GAAIlf,GAAUkR,OAClCxS,GAAS2M,GAAY6T,EAAY,GAAIlf,GAAUkR,QAEtBvpd,OAC7B,OAAOqqd,IAAS,SAASptd,GAIvB,IAHA,IAAIuD,GAAS,EACTR,EAASk8c,GAAUj/c,EAAK+C,OAAQw3d,KAE3Bh3d,EAAQR,GACf/C,EAAKuD,GAAS+2d,EAAW/2d,GAAO1C,KAAKuB,KAAMpC,EAAKuD,IAElD,OAAO4W,GAAMhH,EAAM/Q,KAAMpC,EAC1B,GACF,IAmCGw6d,GAAUpN,IAAS,SAASj6c,EAAMo9c,GACpC,IAAIC,EAAUtU,GAAeqU,EAAU8C,GAAUmH,KACjD,OAAO1F,GAAW3hd,EAAM09b,EAAmB9mc,EAAWwmd,EAAUC,EACjE,IAkCGiK,GAAerN,IAAS,SAASj6c,EAAMo9c,GACzC,IAAIC,EAAUtU,GAAeqU,EAAU8C,GAAUoH,KACjD,OAAO3F,GAAW3hd,EAAM29b,EAAyB/mc,EAAWwmd,EAAUC,EACvE,IAwBGkK,GAAQpI,IAAS,SAASn/c,EAAMgwG,GAClC,OAAO2xW,GAAW3hd,EAAM69b,EAAiBjnc,EAAWA,EAAWA,EAAWo5G,EAC3E,IAgaD,SAASnxC,GAAG1xE,EAAOspB,GACjB,OAAOtpB,IAAUspB,GAAUtpB,IAAUA,GAASspB,IAAUA,CACzD,CAyBD,IAAI+wc,GAAKrG,GAA0B3M,IAyB/BiT,GAAMtG,IAA0B,SAASh0d,EAAOspB,GAClD,OAAOtpB,GAASspB,CACjB,IAoBGm4b,GAAcuG,GAAgB,WAAa,OAAOpuc,SAAY,CAAhC,IAAsCouc,GAAkB,SAAShod,GACjG,OAAO8/c,GAAa9/c,IAAU2hB,GAAephB,KAAKP,EAAO,YACtDqza,GAAqB9ya,KAAKP,EAAO,SACrC,EAyBG4G,GAAUD,EAAMC,QAmBhBqxc,GAAgBD,GAAoB8C,GAAU9C,IA75PlD,SAA2Bh4c,GACzB,OAAO8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAUgyc,CACpD,EAs7PD,SAAS8Y,GAAY9qd,GACnB,OAAgB,MAATA,GAAiB41d,GAAS51d,EAAMyC,UAAYkuD,GAAW3wD,EAC/D,CA2BD,SAASyrd,GAAkBzrd,GACzB,OAAO8/c,GAAa9/c,IAAU8qd,GAAY9qd,EAC3C,CAyCD,IAAIs+c,GAAWD,IAAkB2X,GAmB7Bx4Z,GAAS06Y,GAAa4C,GAAU5C,IAxgQpC,SAAoBl4c,GAClB,OAAO8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAUmxc,CACpD,EA8qQD,SAASopB,GAAQv6d,GACf,IAAK8/c,GAAa9/c,GAChB,OAAO,EAET,IAAI+I,EAAMi+c,GAAWhnd,GACrB,OAAO+I,GAAOqoc,GA9yWF,yBA8yWcroc,GACC,iBAAjB/I,EAAM9D,SAA4C,iBAAd8D,EAAM9E,OAAqBguC,GAAclpC,EACxF,CAiDD,SAAS2wD,GAAW3wD,GAClB,IAAKmiB,GAASniB,GACZ,OAAO,EAIT,IAAI+I,EAAMi+c,GAAWhnd,GACrB,OAAO+I,GAAOsoc,GAAWtoc,GAAOuoc,GA32WrB,0BA22W+Bvoc,GA/1W/B,kBA+1WkDA,CAC9D,CA4BD,SAASyxd,GAAUx6d,GACjB,MAAuB,iBAATA,GAAqBA,GAASq0d,GAAUr0d,EACvD,CA4BD,SAAS41d,GAAS51d,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GAAS4wc,CAC5C,CA2BD,SAASzub,GAASniB,GAChB,IAAImH,SAAcnH,EAClB,OAAgB,MAATA,IAA0B,UAARmH,GAA4B,YAARA,EAC9C,CA0BD,SAAS24c,GAAa9/c,GACpB,OAAgB,MAATA,GAAiC,iBAATA,CAChC,CAmBD,IAAIo4c,GAAQD,GAAY2C,GAAU3C,IA5xQlC,SAAmBn4c,GACjB,OAAO8/c,GAAa9/c,IAAUyjd,GAAOzjd,IAAUuxc,CAChD,EA4+QD,SAAS1lX,GAAS7rF,GAChB,MAAuB,iBAATA,GACX8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAUwxc,CAChD,CA8BD,SAAStoa,GAAclpC,GACrB,IAAK8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAUyxc,EAC/C,OAAO,EAET,IAAI9zY,EAAQ4/Y,GAAav9c,GACzB,GAAc,OAAV29D,EACF,OAAO,EAET,IAAI+yL,EAAO/uO,GAAephB,KAAKo9D,EAAO,gBAAkBA,EAAMx0B,YAC9D,MAAsB,mBAARunN,GAAsBA,aAAgBA,GAClDisN,GAAap8c,KAAKmwP,IAASusN,EAC9B,CAmBD,IAAI3E,GAAWD,GAAeyC,GAAUzC,IA59QxC,SAAsBr4c,GACpB,OAAO8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAU2xc,CACpD,EA4gRD,IAAI6G,GAAQD,GAAYuC,GAAUvC,IAngRlC,SAAmBv4c,GACjB,OAAO8/c,GAAa9/c,IAAUyjd,GAAOzjd,IAAU4xc,CAChD,EAohRD,SAASp/Y,GAASxyD,GAChB,MAAuB,iBAATA,IACV4G,GAAQ5G,IAAU8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAU6xc,CACnE,CAmBD,SAASoU,GAASjmd,GAChB,MAAuB,iBAATA,GACX8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAU8xc,CAChD,CAmBD,IAAI4G,GAAeD,GAAmBqC,GAAUrC,IAvjRhD,SAA0Bz4c,GACxB,OAAO8/c,GAAa9/c,IAClB41d,GAAS51d,EAAMyC,WAAay0c,GAAe8P,GAAWhnd,GACzD,EA4oRD,IAAI+0G,GAAKi/W,GAA0BpJ,IAyB/B6P,GAAMzG,IAA0B,SAASh0d,EAAOspB,GAClD,OAAOtpB,GAASspB,CACjB,IAyBD,SAASkmD,GAAQxvE,GACf,IAAKA,EACH,MAAO,GAET,GAAI8qd,GAAY9qd,GACd,OAAOwyD,GAASxyD,GAASi8c,GAAcj8c,GAASkid,GAAUlid,GAE5D,GAAI29c,IAAe39c,EAAM29c,IACvB,OAv8VN,SAAyBr/U,GAIvB,IAHA,IAAIliI,EACAkJ,EAAS,KAEJlJ,EAAOkiI,EAASrxH,QAAQyjD,MAC/BprD,EAAOpD,KAAK9F,EAAK4D,OAEnB,OAAOsF,CACR,CA+7VYo1d,CAAgB16d,EAAM29c,OAE/B,IAAI50c,EAAM06c,GAAOzjd,GAGjB,OAFW+I,GAAOwoc,EAASmK,GAAc3yc,GAAO6oc,EAASiK,GAAapkb,IAE1Dz3B,EACb,CAyBD,SAAS8zd,GAAS9zd,GAChB,OAAKA,GAGLA,EAAQstU,GAASttU,MACH2wc,GAAY3wc,KAAU,IAxkYtB,uBAykYAA,EAAQ,GAAK,EAAI,GAGxBA,IAAUA,EAAQA,EAAQ,EAPd,IAAVA,EAAcA,EAAQ,CAQhC,CA4BD,SAASq0d,GAAUr0d,GACjB,IAAIsF,EAASwud,GAAS9zd,GAClB26d,EAAYr1d,EAAS,EAEzB,OAAOA,IAAWA,EAAUq1d,EAAYr1d,EAASq1d,EAAYr1d,EAAU,CACxE,CA6BD,SAASs1d,GAAS56d,GAChB,OAAOA,EAAQmid,GAAUkS,GAAUr0d,GAAQ,EAAG8wc,GAAoB,CACnE,CAyBD,SAASxjI,GAASttU,GAChB,GAAoB,iBAATA,EACT,OAAOA,EAET,GAAIimd,GAASjmd,GACX,OAAO6wc,EAET,GAAI1ub,GAASniB,GAAQ,CACnB,IAAIspB,EAAgC,mBAAjBtpB,EAAMquD,QAAwBruD,EAAMquD,UAAYruD,EACnEA,EAAQmiB,GAASmH,GAAUA,EAAQ,GAAMA,CAC1C,CACD,GAAoB,iBAATtpB,EACT,OAAiB,IAAVA,EAAcA,GAASA,EAEhCA,EAAQ46c,GAAS56c,GACjB,IAAI66d,EAAWxmB,GAAWn8b,KAAKlY,GAC/B,OAAQ66d,GAAYtmB,GAAUr8b,KAAKlY,GAC/Bs3c,GAAat3c,EAAM6G,MAAM,GAAIg0d,EAAW,EAAI,GAC3CzmB,GAAWl8b,KAAKlY,GAAS6wc,GAAO7wc,CACtC,CA0BD,SAAS0rd,GAAc1rd,GACrB,OAAO6id,GAAW7id,EAAO+jd,GAAO/jd,GACjC,CAqDD,SAASZ,GAASY,GAChB,OAAgB,MAATA,EAAgB,GAAK0ud,GAAa1ud,EAC1C,CAoCD,IAAIiH,GAASgqd,IAAe,SAASxpb,EAAQ4B,GAC3C,GAAImhb,GAAYnhb,IAAWyhb,GAAYzhb,GACrCw5a,GAAWx5a,EAAQvoC,GAAKuoC,GAAS5B,QAGnC,IAAK,IAAIrjC,KAAOilC,EACV1nB,GAAephB,KAAK8oC,EAAQjlC,IAC9Bm+c,GAAY96a,EAAQrjC,EAAKilC,EAAOjlC,GAGrC,IAiCG02d,GAAW7J,IAAe,SAASxpb,EAAQ4B,GAC7Cw5a,GAAWx5a,EAAQ06a,GAAO16a,GAAS5B,EACpC,IA+BGszb,GAAe9J,IAAe,SAASxpb,EAAQ4B,EAAQgib,EAAUjI,GACnEP,GAAWx5a,EAAQ06a,GAAO16a,GAAS5B,EAAQ27a,EAC5C,IA8BG4X,GAAa/J,IAAe,SAASxpb,EAAQ4B,EAAQgib,EAAUjI,GACjEP,GAAWx5a,EAAQvoC,GAAKuoC,GAAS5B,EAAQ27a,EAC1C,IAmBGz8Z,GAAKqra,GAASlP,IA8DlB,IAAIrta,GAAWq3a,IAAS,SAASrlb,EAAQ2jJ,GACvC3jJ,EAAS3nC,GAAO2nC,GAEhB,IAAIxkC,GAAS,EACTR,EAAS2oL,EAAQ3oL,OACjB0ud,EAAQ1ud,EAAS,EAAI2oL,EAAQ,GAAK3hL,EAMtC,IAJI0nd,GAASC,GAAehmS,EAAQ,GAAIA,EAAQ,GAAI+lS,KAClD1ud,EAAS,KAGFQ,EAAQR,GAMf,IALA,IAAI4mC,EAAS+hJ,EAAQnoL,GACjB2J,EAAQm3c,GAAO16a,GACf4xb,GAAc,EACdC,EAActud,EAAMnK,SAEfw4d,EAAaC,GAAa,CACjC,IAAI92d,EAAMwI,EAAMqud,GACZj7d,EAAQynC,EAAOrjC,IAEfpE,IAAUyJ,GACTioE,GAAG1xE,EAAOy8c,GAAYr4c,MAAUud,GAAephB,KAAKknC,EAAQrjC,MAC/DqjC,EAAOrjC,GAAOilC,EAAOjlC,GAExB,CAGH,OAAOqjC,CACR,IAqBG0zb,GAAerO,IAAS,SAASptd,GAEnC,OADAA,EAAKwC,KAAKuH,EAAWwrd,IACdp7c,GAAMuhd,GAAW3xd,EAAW/J,EACpC,IA+RD,SAAShE,GAAI+rC,EAAQhjC,EAAMy7B,GACzB,IAAI56B,EAAmB,MAAVmiC,EAAiBh+B,EAAYi9c,GAAQj/a,EAAQhjC,GAC1D,OAAOa,IAAWmE,EAAYy2B,EAAe56B,CAC9C,CA2DD,SAAS6ld,GAAM1jb,EAAQhjC,GACrB,OAAiB,MAAVgjC,GAAkBiub,GAAQjub,EAAQhjC,EAAM8id,GAChD,CAoBD,IAAI5zZ,GAASy/Z,IAAe,SAAS9td,EAAQtF,EAAOoE,GACrC,MAATpE,GACyB,mBAAlBA,EAAMZ,WACfY,EAAQg9c,GAAqBz8c,KAAKP,IAGpCsF,EAAOtF,GAASoE,CACjB,GAAEmqB,GAAS67b,KA4BRiR,GAAWjI,IAAe,SAAS9td,EAAQtF,EAAOoE,GACvC,MAATpE,GACyB,mBAAlBA,EAAMZ,WACfY,EAAQg9c,GAAqBz8c,KAAKP,IAGhC2hB,GAAephB,KAAK+E,EAAQtF,GAC9BsF,EAAOtF,GAAOkC,KAAKkC,GAEnBkB,EAAOtF,GAAS,CAACoE,EAEpB,GAAE4nd,IAoBC1rG,GAASwsG,GAAS/E,IA8BtB,SAASjnd,GAAK2mC,GACZ,OAAOqjb,GAAYrjb,GAAU45a,GAAc55a,GAAU8ib,GAAS9ib,EAC/D,CAyBD,SAASs8a,GAAOt8a,GACd,OAAOqjb,GAAYrjb,GAAU45a,GAAc55a,GAAQ,GAAQgjb,GAAWhjb,EACvE,CAsGD,IAAI5G,GAAQowb,IAAe,SAASxpb,EAAQ4B,EAAQgib,GAClDD,GAAU3jb,EAAQ4B,EAAQgib,EAC3B,IAiCG+P,GAAYnK,IAAe,SAASxpb,EAAQ4B,EAAQgib,EAAUjI,GAChEgI,GAAU3jb,EAAQ4B,EAAQgib,EAAUjI,EACrC,IAsBGkY,GAAOtJ,IAAS,SAASvqb,EAAQs7a,GACnC,IAAIz9c,EAAS,CAAC,EACd,GAAc,MAAVmiC,EACF,OAAOniC,EAET,IAAI+9c,GAAS,EACbN,EAAQvJ,GAASuJ,GAAO,SAASt+c,GAG/B,OAFAA,EAAOkid,GAASlid,EAAMgjC,GACtB47a,IAAWA,EAAS5+c,EAAKhC,OAAS,GAC3BgC,CACR,IACDo+c,GAAWp7a,EAAQq9a,GAAar9a,GAASniC,GACrC+9c,IACF/9c,EAAS49c,GAAU59c,EAAQi2d,EAAwDrG,KAGrF,IADA,IAAIzyd,EAASsgd,EAAMtgd,OACZA,KACLmqd,GAAUtnd,EAAQy9c,EAAMtgd,IAE1B,OAAO6C,CACR,IA2CD,IAAIg3c,GAAO0V,IAAS,SAASvqb,EAAQs7a,GACnC,OAAiB,MAAVt7a,EAAiB,CAAC,EAnmT3B,SAAkBA,EAAQs7a,GACxB,OAAOyJ,GAAW/kb,EAAQs7a,GAAO,SAAS/id,EAAOyE,GAC/C,OAAO0md,GAAM1jb,EAAQhjC,EACtB,GACF,CA+lT8B+2d,CAAS/zb,EAAQs7a,EAC/C,IAoBD,SAAS0Y,GAAOh0b,EAAQwxa,GACtB,GAAc,MAAVxxa,EACF,MAAO,CAAC,EAEV,IAAI76B,EAAQ4sc,GAASsL,GAAar9a,IAAS,SAAS9oC,GAClD,MAAO,CAACA,EACT,IAED,OADAs6c,EAAY+S,GAAY/S,GACjBuT,GAAW/kb,EAAQ76B,GAAO,SAAS5M,EAAOyE,GAC/C,OAAOw0c,EAAUj5c,EAAOyE,EAAK,GAC9B,GACF,CA0ID,IAAIi3d,GAAUpH,GAAcxzd,IA0BxB66d,GAAYrH,GAAcvQ,IA4K9B,SAAStsb,GAAOgQ,GACd,OAAiB,MAAVA,EAAiB,GAAKsza,GAAWtza,EAAQ3mC,GAAK2mC,GACtD,CAiND,IAAIm0b,GAAYpK,IAAiB,SAASlsd,EAAQu2d,EAAM54d,GAEtD,OADA44d,EAAOA,EAAKvld,cACLhR,GAAUrC,EAAQ8tB,GAAW8qc,GAAQA,EAC7C,IAiBD,SAAS9qc,GAAW7Z,GAClB,OAAO+vD,GAAW7nE,GAAS8X,GAAQZ,cACpC,CAoBD,SAASo7c,GAAOx6c,GAEd,OADAA,EAAS9X,GAAS8X,KACDA,EAAOxT,QAAQ+wc,GAAS6G,IAAc53c,QAAQizc,GAAa,GAC7E,CAqHD,IAAImlB,GAAYtK,IAAiB,SAASlsd,EAAQu2d,EAAM54d,GACtD,OAAOqC,GAAUrC,EAAQ,IAAM,IAAM44d,EAAKvld,aAC3C,IAsBGyld,GAAYvK,IAAiB,SAASlsd,EAAQu2d,EAAM54d,GACtD,OAAOqC,GAAUrC,EAAQ,IAAM,IAAM44d,EAAKvld,aAC3C,IAmBG0ld,GAAa1K,GAAgB,eA0NjC,IAAI2K,GAAYzK,IAAiB,SAASlsd,EAAQu2d,EAAM54d,GACtD,OAAOqC,GAAUrC,EAAQ,IAAM,IAAM44d,EAAKvld,aAC3C,IA+DD,IAAI4ld,GAAY1K,IAAiB,SAASlsd,EAAQu2d,EAAM54d,GACtD,OAAOqC,GAAUrC,EAAQ,IAAM,IAAMgkE,GAAW40Z,EACjD,IAqiBD,IAAIM,GAAY3K,IAAiB,SAASlsd,EAAQu2d,EAAM54d,GACtD,OAAOqC,GAAUrC,EAAQ,IAAM,IAAM44d,EAAKrzb,aAC3C,IAmBGy+B,GAAaqqZ,GAAgB,eAqBjC,SAASG,GAAMv6c,EAAQzL,EAAS0ld,GAI9B,OAHAj6c,EAAS9X,GAAS8X,IAClBzL,EAAU0ld,EAAQ1nd,EAAYgC,KAEdhC,EArybpB,SAAwByN,GACtB,OAAO6/b,GAAiB7+b,KAAKhB,EAC9B,CAoybYkld,CAAelld,GA1jb5B,SAAsBA,GACpB,OAAOA,EAAOnG,MAAM8lc,KAAkB,EACvC,CAwjbqCwlB,CAAanld,GAzrcnD,SAAoBA,GAClB,OAAOA,EAAOnG,MAAMgjc,KAAgB,EACrC,CAurc4DuoB,CAAWpld,GAE7DA,EAAOnG,MAAMtF,IAAY,EACjC,CA0BD,IAAI8wd,GAAUzP,IAAS,SAASj6c,EAAMnT,GACpC,IACE,OAAOma,GAAMhH,EAAMpJ,EAAW/J,EAG/B,CAFC,MAAOqL,GACP,OAAOwvd,GAAQxvd,GAAKA,EAAI,IAAI1O,GAAM0O,EACnC,CACF,IA4BGyxd,GAAUxK,IAAS,SAASvqb,EAAQg1b,GAKtC,OAJA3jB,GAAU2jB,GAAa,SAASr4d,GAC9BA,EAAMwid,GAAMxid,GACZk+c,GAAgB76a,EAAQrjC,EAAKxF,GAAK6oC,EAAOrjC,GAAMqjC,GAChD,IACMA,CACR,IAoGD,SAASlZ,GAASvuB,GAChB,OAAO,WACL,OAAOA,CACR,CACF,CAgDD,IAAI08d,GAAO3K,KAuBP4K,GAAY5K,IAAW,GAkB3B,SAAS3H,GAASpqd,GAChB,OAAOA,CACR,CA4CD,SAAS64c,GAAShmc,GAChB,OAAOs3c,GAA4B,mBAARt3c,EAAqBA,EAAOqwc,GAAUrwc,EAjte/C,GAktenB,CAsGD,IAAI3L,GAAS4ld,IAAS,SAASrod,EAAM/E,GACnC,OAAO,SAAS+nC,GACd,OAAOsgb,GAAWtgb,EAAQhjC,EAAM/E,EACjC,CACF,IAyBGk9d,GAAW9P,IAAS,SAASrlb,EAAQ/nC,GACvC,OAAO,SAAS+E,GACd,OAAOsjd,GAAWtgb,EAAQhjC,EAAM/E,EACjC,CACF,IAsCD,SAASm9d,GAAMp1b,EAAQ4B,EAAQnqC,GAC7B,IAAI0N,EAAQ9L,GAAKuoC,GACbozb,EAAchW,GAAcp9a,EAAQz8B,GAEzB,MAAX1N,GACEijB,GAASknB,KAAYozb,EAAYh6d,SAAWmK,EAAMnK,UACtDvD,EAAUmqC,EACVA,EAAS5B,EACTA,EAAS3lC,KACT26d,EAAchW,GAAcp9a,EAAQvoC,GAAKuoC,KAE3C,IAAI4ub,IAAU91c,GAASjjB,IAAY,UAAWA,MAAcA,EAAQ+4d,MAChEvU,EAAS/yZ,GAAWlpB,GAqBxB,OAnBAqxa,GAAU2jB,GAAa,SAAS14a,GAC9B,IAAIlxC,EAAOw2B,EAAO0a,GAClBtc,EAAOsc,GAAclxC,EACjB6wc,IACFj8a,EAAO39B,UAAUi6C,GAAc,WAC7B,IAAIq8Z,EAAWt+c,KAAKy+c,UACpB,GAAI0X,GAAS7X,EAAU,CACrB,IAAI96c,EAASmiC,EAAO3lC,KAAKu+c,aACrB98P,EAAUj+M,EAAOg7c,YAAc4B,GAAUpgd,KAAKw+c,aAIlD,OAFA/8P,EAAQrhN,KAAK,CAAE,KAAQ2Q,EAAM,KAAQ+G,UAAW,QAAW6tB,IAC3DniC,EAAOi7c,UAAYH,EACZ96c,CACR,CACD,OAAOuN,EAAKgH,MAAM4tB,EAAQgya,GAAU,CAAC33c,KAAK9B,SAAU4Z,WACrD,EAEJ,IAEM6tB,CACR,CAkCD,SAAS7jB,KAER,CA+CD,IAAIstI,GAAOuiU,GAAWja,IA8BlBsjB,GAAYrJ,GAAWza,IAiCvB+jB,GAAWtJ,GAAW5Z,IAwB1B,SAAS5qc,GAASxK,GAChB,OAAOwmd,GAAMxmd,GAAQs1c,GAAa6M,GAAMnid,IAh3X1C,SAA0BA,GACxB,OAAO,SAASgjC,GACd,OAAOi/a,GAAQj/a,EAAQhjC,EACxB,CACF,CA42XkDu4d,CAAiBv4d,EACnE,CAsED,IAAI03H,GAAQ03V,KAsCRoJ,GAAapJ,IAAY,GAoB7B,SAAS4B,KACP,MAAO,EACR,CAeD,SAASO,KACP,OAAO,CACR,CA8JD,IAAInmb,GAAM0jb,IAAoB,SAAS2J,EAAQC,GAC7C,OAAOD,EAASC,CACjB,GAAE,GAuBCz2Y,GAAO0tY,GAAY,QAiBnBgJ,GAAS7J,IAAoB,SAAS8J,EAAUC,GAClD,OAAOD,EAAWC,CACnB,GAAE,GAuBC7yZ,GAAQ2pZ,GAAY,SAwKxB,IAAImJ,GAAWhK,IAAoB,SAASj1W,EAAYk/W,GACtD,OAAOl/W,EAAak/W,CACrB,GAAE,GAuBC/4c,GAAQ2vc,GAAY,SAiBpBqJ,GAAWlK,IAAoB,SAASmK,EAASC,GACnD,OAAOD,EAAUC,CAClB,GAAE,GAgmBH,OA1iBA9d,GAAOlvY,MAp6MP,SAAe5qD,EAAGlT,GAChB,GAAmB,mBAARA,EACT,MAAM,IAAI24B,GAAU2ka,GAGtB,OADApqb,EAAIsuc,GAAUtuc,GACP,WACL,KAAMA,EAAI,EACR,OAAOlT,EAAKgH,MAAM/X,KAAM8X,UAE3B,CACF,EA25MDimc,GAAO6S,IAAMA,GACb7S,GAAO54c,OAASA,GAChB44c,GAAOib,SAAWA,GAClBjb,GAAOkb,aAAeA,GACtBlb,GAAOmb,WAAaA,GACpBnb,GAAOl5Z,GAAKA,GACZk5Z,GAAO72c,OAASA,GAChB62c,GAAOjhd,KAAOA,GACdihd,GAAO2c,QAAUA,GACjB3c,GAAO6Y,QAAUA,GACjB7Y,GAAO+d,UAl8KP,WACE,IAAKhkd,UAAUnX,OACb,MAAO,GAET,IAAIzC,EAAQ4Z,UAAU,GACtB,OAAOhT,GAAQ5G,GAASA,EAAQ,CAACA,EAClC,EA67KD6/c,GAAOoY,MAAQA,GACfpY,GAAOge,MApgTP,SAAe1xd,EAAOwD,EAAMwhd,GAExBxhd,GADGwhd,EAAQC,GAAejld,EAAOwD,EAAMwhd,GAASxhd,IAASlG,GAClD,EAEAi1c,GAAU2V,GAAU1kd,GAAO,GAEpC,IAAIlN,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,IAAKA,GAAUkN,EAAO,EACpB,MAAO,GAMT,IAJA,IAAI1M,EAAQ,EACRk2c,EAAW,EACX7zc,EAASqB,EAAMu3c,GAAWz7c,EAASkN,IAEhC1M,EAAQR,GACb6C,EAAO6zc,KAAcoU,GAAUphd,EAAOlJ,EAAQA,GAAS0M,GAEzD,OAAOrK,CACR,EAm/SDu6c,GAAOie,QAl+SP,SAAiB3xd,GAMf,IALA,IAAIlJ,GAAS,EACTR,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACnC02c,EAAW,EACX7zc,EAAS,KAEJrC,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdjD,IACFsF,EAAO6zc,KAAcn5c,EAExB,CACD,OAAOsF,CACR,EAs9SDu6c,GAAO9tc,OA97SP,WACE,IAAItP,EAASmX,UAAUnX,OACvB,IAAKA,EACH,MAAO,GAMT,IAJA,IAAI/C,EAAOiH,EAAMlE,EAAS,GACtB0J,EAAQyN,UAAU,GAClB3W,EAAQR,EAELQ,KACLvD,EAAKuD,EAAQ,GAAK2W,UAAU3W,GAE9B,OAAOw2c,GAAU7yc,GAAQuF,GAAS+1c,GAAU/1c,GAAS,CAACA,GAAQg6c,GAAYzmd,EAAM,GACjF,EAk7SDmgd,GAAOke,KA3tCP,SAActY,GACZ,IAAIhjd,EAAkB,MAATgjd,EAAgB,EAAIA,EAAMhjd,OACnC4wd,EAAarH,KASjB,OAPAvG,EAAShjd,EAAc+2c,GAASiM,GAAO,SAASzyZ,GAC9C,GAAsB,mBAAXA,EAAK,GACd,MAAM,IAAIxnB,GAAU2ka,GAEtB,MAAO,CAACkjB,EAAWrga,EAAK,IAAKA,EAAK,GACnC,IALiB,GAOX85Z,IAAS,SAASptd,GAEvB,IADA,IAAIuD,GAAS,IACJA,EAAQR,GAAQ,CACvB,IAAIuwD,EAAOyyZ,EAAMxid,GACjB,GAAI4W,GAAMm5C,EAAK,GAAIlxD,KAAMpC,GACvB,OAAOma,GAAMm5C,EAAK,GAAIlxD,KAAMpC,EAE/B,CACF,GACF,EAwsCDmgd,GAAOme,SA9qCP,SAAkB30b,GAChB,OAz5YF,SAAsBA,GACpB,IAAIz8B,EAAQ9L,GAAKuoC,GACjB,OAAO,SAAS5B,GACd,OAAOu9a,GAAev9a,EAAQ4B,EAAQz8B,EACvC,CACF,CAo5YQqxd,CAAa/a,GAAU75a,EA/ieZ,GAgjenB,EA6qCDw2a,GAAOtxb,SAAWA,GAClBsxb,GAAOuY,QAAUA,GACjBvY,GAAOvtc,OAtuHP,SAAgBxI,EAAWs1B,GACzB,IAAI95B,EAAS46c,GAAWp2c,GACxB,OAAqB,MAAds1B,EAAqB95B,EAASs9c,GAAWt9c,EAAQ85B,EACzD,EAouHDygb,GAAOqe,MAzuMP,SAASA,EAAMrrd,EAAM86b,EAAOwjB,GAE1B,IAAI7rd,EAASkvd,GAAW3hd,EA7+TN,EA6+T6BpJ,EAAWA,EAAWA,EAAWA,EAAWA,EAD3Fkkc,EAAQwjB,EAAQ1nd,EAAYkkc,GAG5B,OADAroc,EAAOkvP,YAAc0pO,EAAM1pO,YACpBlvP,CACR,EAquMDu6c,GAAOse,WA7rMP,SAASA,EAAWtrd,EAAM86b,EAAOwjB,GAE/B,IAAI7rd,EAASkvd,GAAW3hd,EAAMy9b,EAAuB7mc,EAAWA,EAAWA,EAAWA,EAAWA,EADjGkkc,EAAQwjB,EAAQ1nd,EAAYkkc,GAG5B,OADAroc,EAAOkvP,YAAc2pO,EAAW3pO,YACzBlvP,CACR,EAyrMDu6c,GAAOzrb,SAAWA,GAClByrb,GAAOpqa,SAAWA,GAClBoqa,GAAOsb,aAAeA,GACtBtb,GAAO+Z,MAAQA,GACf/Z,GAAO/wb,MAAQA,GACf+wb,GAAOl6X,WAAaA,GACpBk6X,GAAOiX,aAAeA,GACtBjX,GAAOkX,eAAiBA,GACxBlX,GAAOue,KAt0SP,SAAcjyd,EAAO4Z,EAAGorc,GACtB,IAAI1ud,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAKA,EAIE8qd,GAAUphd,GADjB4Z,EAAKorc,GAASprc,IAAMtc,EAAa,EAAI4qd,GAAUtuc,IACnB,EAAI,EAAIA,EAAGtjB,GAH9B,EAIV,EAg0SDo9c,GAAOwe,UArySP,SAAmBlyd,EAAO4Z,EAAGorc,GAC3B,IAAI1ud,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAKA,EAKE8qd,GAAUphd,EAAO,GADxB4Z,EAAItjB,GADJsjB,EAAKorc,GAASprc,IAAMtc,EAAa,EAAI4qd,GAAUtuc,KAEhB,EAAI,EAAIA,GAJ9B,EAKV,EA8xSD85b,GAAOye,eAzvSP,SAAwBnyd,EAAO8sc,GAC7B,OAAQ9sc,GAASA,EAAM1J,OACnBusd,GAAU7id,EAAO6/c,GAAY/S,EAAW,IAAI,GAAM,GAClD,EACL,EAsvSD4G,GAAO0e,UAjtSP,SAAmBpyd,EAAO8sc,GACxB,OAAQ9sc,GAASA,EAAM1J,OACnBusd,GAAU7id,EAAO6/c,GAAY/S,EAAW,IAAI,GAC5C,EACL,EA8sSD4G,GAAOltb,KA/qSP,SAAcxmB,EAAOnM,EAAOq+B,EAAOryB,GACjC,IAAIvJ,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAKA,GAGD47B,GAAyB,iBAATA,GAAqB+yb,GAAejld,EAAOnM,EAAOq+B,KACpEA,EAAQ,EACRryB,EAAMvJ,GAzvIV,SAAkB0J,EAAOnM,EAAOq+B,EAAOryB,GACrC,IAAIvJ,EAAS0J,EAAM1J,OAWnB,KATA47B,EAAQg2b,GAAUh2b,IACN,IACVA,GAASA,EAAQ57B,EAAS,EAAKA,EAAS47B,IAE1CryB,EAAOA,IAAQvC,GAAauC,EAAMvJ,EAAUA,EAAS4xd,GAAUrod,IACrD,IACRA,GAAOvJ,GAETuJ,EAAMqyB,EAAQryB,EAAM,EAAI4ud,GAAS5ud,GAC1BqyB,EAAQryB,GACbG,EAAMkyB,KAAWr+B,EAEnB,OAAOmM,CACR,CA2uIQqyd,CAASryd,EAAOnM,EAAOq+B,EAAOryB,IAN5B,EAOV,EAsqSD6zc,GAAOvjb,OA3vOP,SAAgBzqB,EAAYonc,GAE1B,OADWryc,GAAQiL,GAAcqnc,GAAcgN,IACnCr0c,EAAYm6c,GAAY/S,EAAW,GAChD,EAyvOD4G,GAAO4e,QAvqOP,SAAiB5sd,EAAYgnc,GAC3B,OAAOsN,GAAYtgd,GAAIgM,EAAYgnc,GAAW,EAC/C,EAsqODgH,GAAO6e,YAhpOP,SAAqB7sd,EAAYgnc,GAC/B,OAAOsN,GAAYtgd,GAAIgM,EAAYgnc,GAAWlI,EAC/C,EA+oODkP,GAAO8e,aAxnOP,SAAsB9sd,EAAYgnc,EAAU7kZ,GAE1C,OADAA,EAAQA,IAAUvqD,EAAY,EAAI4qd,GAAUrga,GACrCmyZ,GAAYtgd,GAAIgM,EAAYgnc,GAAW7kZ,EAC/C,EAsnOD6rZ,GAAOyV,QAAUA,GACjBzV,GAAO+e,YAviSP,SAAqBzyd,GAEnB,OADsB,MAATA,EAAgB,EAAIA,EAAM1J,QACvB0jd,GAAYh6c,EAAOwkc,GAAY,EAChD,EAqiSDkP,GAAOgf,aA/gSP,SAAsB1yd,EAAO6nD,GAE3B,OADsB,MAAT7nD,EAAgB,EAAIA,EAAM1J,QAKhC0jd,GAAYh6c,EADnB6nD,EAAQA,IAAUvqD,EAAY,EAAI4qd,GAAUrga,IAFnC,EAIV,EAygSD6rZ,GAAO3wQ,KAz9LP,SAAcr8L,GACZ,OAAO2hd,GAAW3hd,EA5wUD,IA6wUlB,EAw9LDgtc,GAAO6c,KAAOA,GACd7c,GAAO8c,UAAYA,GACnB9c,GAAOif,UA3/RP,SAAmBrZ,GAKjB,IAJA,IAAIxid,GAAS,EACTR,EAAkB,MAATgjd,EAAgB,EAAIA,EAAMhjd,OACnC6C,EAAS,CAAC,IAELrC,EAAQR,GAAQ,CACvB,IAAIuwD,EAAOyyZ,EAAMxid,GACjBqC,EAAO0tD,EAAK,IAAMA,EAAK,EACxB,CACD,OAAO1tD,CACR,EAk/RDu6c,GAAOkf,UA38GP,SAAmBt3b,GACjB,OAAiB,MAAVA,EAAiB,GAAKg/a,GAAch/a,EAAQ3mC,GAAK2mC,GACzD,EA08GDo4a,GAAOmf,YAj7GP,SAAqBv3b,GACnB,OAAiB,MAAVA,EAAiB,GAAKg/a,GAAch/a,EAAQs8a,GAAOt8a,GAC3D,EAg7GDo4a,GAAOjpX,QAAUA,GACjBipX,GAAO5mZ,QA56RP,SAAiB9sD,GAEf,OADsB,MAATA,EAAgB,EAAIA,EAAM1J,QACvB8qd,GAAUphd,EAAO,GAAI,GAAK,EAC3C,EA06RD0zc,GAAOoX,aAAeA,GACtBpX,GAAOsX,eAAiBA,GACxBtX,GAAOuX,iBAAmBA,GAC1BvX,GAAOlsZ,OAASA,GAChBksZ,GAAOwb,SAAWA,GAClBxb,GAAO0Y,UAAYA,GACnB1Y,GAAOhH,SAAWA,GAClBgH,GAAO2Y,MAAQA,GACf3Y,GAAO/+c,KAAOA,GACd++c,GAAOkE,OAASA,GAChBlE,GAAOh6c,IAAMA,GACbg6c,GAAOof,QA1rGP,SAAiBx3b,EAAQoxa,GACvB,IAAIvzc,EAAS,CAAC,EAMd,OALAuzc,EAAWmT,GAAYnT,EAAU,GAEjC+M,GAAWn+a,GAAQ,SAASznC,EAAOoE,EAAKqjC,GACtC66a,GAAgBh9c,EAAQuzc,EAAS74c,EAAOoE,EAAKqjC,GAASznC,EACvD,IACMsF,CACR,EAmrGDu6c,GAAOqf,UArpGP,SAAmBz3b,EAAQoxa,GACzB,IAAIvzc,EAAS,CAAC,EAMd,OALAuzc,EAAWmT,GAAYnT,EAAU,GAEjC+M,GAAWn+a,GAAQ,SAASznC,EAAOoE,EAAKqjC,GACtC66a,GAAgBh9c,EAAQlB,EAAKy0c,EAAS74c,EAAOoE,EAAKqjC,GACnD,IACMniC,CACR,EA8oGDu6c,GAAOjpb,QAphCP,SAAiByS,GACf,OAAOihb,GAAYpH,GAAU75a,EAxveX,GAyvenB,EAmhCDw2a,GAAOsf,gBAh/BP,SAAyB16d,EAAMuld,GAC7B,OAAOK,GAAoB5ld,EAAMy+c,GAAU8G,EA7xezB,GA8xenB,EA++BDnK,GAAOxtc,QAAUA,GACjBwtc,GAAOh/a,MAAQA,GACfg/a,GAAOub,UAAYA,GACnBvb,GAAO34c,OAASA,GAChB24c,GAAO+c,SAAWA,GAClB/c,GAAOgd,MAAQA,GACfhd,GAAOnrX,OAASA,GAChBmrX,GAAOuf,OAzzBP,SAAgBr5c,GAEd,OADAA,EAAIsuc,GAAUtuc,GACP+mc,IAAS,SAASptd,GACvB,OAAOksd,GAAQlsd,EAAMqmB,EACtB,GACF,EAqzBD85b,GAAOyb,KAAOA,GACdzb,GAAOwf,OAnhGP,SAAgB53b,EAAQwxa,GACtB,OAAOwiB,GAAOh0b,EAAQitD,GAAOs3X,GAAY/S,IAC1C,EAkhGD4G,GAAOyf,KA73LP,SAAczsd,GACZ,OAAO7J,GAAO,EAAG6J,EAClB,EA43LDgtc,GAAO0f,QAr4NP,SAAiB1td,EAAYi6c,EAAWC,EAAQoF,GAC9C,OAAkB,MAAdt/c,EACK,IAEJjL,GAAQkld,KACXA,EAAyB,MAAbA,EAAoB,GAAK,CAACA,IAGnClld,GADLmld,EAASoF,EAAQ1nd,EAAYsid,KAE3BA,EAAmB,MAAVA,EAAiB,GAAK,CAACA,IAE3BF,GAAYh6c,EAAYi6c,EAAWC,GAC3C,EA03NDlM,GAAO3uT,KAAOA,GACd2uT,GAAOka,SAAWA,GAClBla,GAAOid,UAAYA,GACnBjd,GAAOkd,SAAWA,GAClBld,GAAOqa,QAAUA,GACjBra,GAAOsa,aAAeA,GACtBta,GAAO4Y,UAAYA,GACnB5Y,GAAOvD,KAAOA,GACduD,GAAO4b,OAASA,GAChB5b,GAAO5wc,SAAWA,GAClB4wc,GAAO2f,WA/rBP,SAAoB/3b,GAClB,OAAO,SAAShjC,GACd,OAAiB,MAAVgjC,EAAiBh+B,EAAYi9c,GAAQj/a,EAAQhjC,EACrD,CACF,EA4rBDo7c,GAAOwX,KAAOA,GACdxX,GAAOyX,QAAUA,GACjBzX,GAAO4f,UApsRP,SAAmBtzd,EAAOsrB,EAAQohb,GAChC,OAAQ1sc,GAASA,EAAM1J,QAAUg1B,GAAUA,EAAOh1B,OAC9Ciqd,GAAYvgd,EAAOsrB,EAAQu0b,GAAYnT,EAAU,IACjD1sc,CACL,EAisRD0zc,GAAO6f,YAxqRP,SAAqBvzd,EAAOsrB,EAAQ8hb,GAClC,OAAQptc,GAASA,EAAM1J,QAAUg1B,GAAUA,EAAOh1B,OAC9Ciqd,GAAYvgd,EAAOsrB,EAAQhuB,EAAW8vc,GACtCptc,CACL,EAqqRD0zc,GAAO0X,OAASA,GAChB1X,GAAO1jV,MAAQA,GACf0jV,GAAOod,WAAaA,GACpBpd,GAAOua,MAAQA,GACfva,GAAOv+c,OAxvNP,SAAgBuQ,EAAYonc,GAE1B,OADWryc,GAAQiL,GAAcqnc,GAAcgN,IACnCr0c,EAAY6iF,GAAOs3X,GAAY/S,EAAW,IACvD,EAsvND4G,GAAOrgd,OAzmRP,SAAgB2M,EAAO8sc,GACrB,IAAI3zc,EAAS,GACb,IAAM6G,IAASA,EAAM1J,OACnB,OAAO6C,EAET,IAAIrC,GAAS,EACT4/G,EAAU,GACVpgH,EAAS0J,EAAM1J,OAGnB,IADAw2c,EAAY+S,GAAY/S,EAAW,KAC1Bh2c,EAAQR,GAAQ,CACvB,IAAIzC,EAAQmM,EAAMlJ,GACdg2c,EAAUj5c,EAAOiD,EAAOkJ,KAC1B7G,EAAOpD,KAAKlC,GACZ6iH,EAAQ3gH,KAAKe,GAEhB,CAED,OADA0pd,GAAWxgd,EAAO02G,GACXv9G,CACR,EAulRDu6c,GAAOnxN,KAluLP,SAAc77O,EAAMwrB,GAClB,GAAmB,mBAARxrB,EACT,MAAM,IAAI24B,GAAU2ka,GAGtB,OAAO2c,GAASj6c,EADhBwrB,EAAQA,IAAU50B,EAAY40B,EAAQg2b,GAAUh2b,GAEjD,EA6tLDwhb,GAAOjjZ,QAAUA,GACjBijZ,GAAO8f,WAhtNP,SAAoB9td,EAAYkU,EAAGorc,GAOjC,OALEprc,GADGorc,EAAQC,GAAev/c,EAAYkU,EAAGorc,GAASprc,IAAMtc,GACpD,EAEA4qd,GAAUtuc,IAELnf,GAAQiL,GAAcmwc,GAAkBkL,IACvCr7c,EAAYkU,EACzB,EAysND85b,GAAO5kd,IAv6FP,SAAawsC,EAAQhjC,EAAMzE,GACzB,OAAiB,MAAVynC,EAAiBA,EAASglb,GAAQhlb,EAAQhjC,EAAMzE,EACxD,EAs6FD6/c,GAAO+f,QA54FP,SAAiBn4b,EAAQhjC,EAAMzE,EAAOojd,GAEpC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa35c,EAC3C,MAAVg+B,EAAiBA,EAASglb,GAAQhlb,EAAQhjC,EAAMzE,EAAOojd,EAC/D,EA04FDvD,GAAOggB,QA1rNP,SAAiBhud,GAEf,OADWjL,GAAQiL,GAAcuwc,GAAekL,IACpCz7c,EACb,EAwrNDguc,GAAOh5c,MAhjRP,SAAesF,EAAOkyB,EAAOryB,GAC3B,IAAIvJ,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAKA,GAGDuJ,GAAqB,iBAAPA,GAAmBold,GAAejld,EAAOkyB,EAAOryB,IAChEqyB,EAAQ,EACRryB,EAAMvJ,IAGN47B,EAAiB,MAATA,EAAgB,EAAIg2b,GAAUh2b,GACtCryB,EAAMA,IAAQvC,EAAYhH,EAAS4xd,GAAUrod,IAExCuhd,GAAUphd,EAAOkyB,EAAOryB,IAVtB,EAWV,EAmiRD6zc,GAAOnpX,OAASA,GAChBmpX,GAAOigB,WAx3QP,SAAoB3zd,GAClB,OAAQA,GAASA,EAAM1J,OACnB+rd,GAAerid,GACf,EACL,EAq3QD0zc,GAAOkgB,aAn2QP,SAAsB5zd,EAAO0sc,GAC3B,OAAQ1sc,GAASA,EAAM1J,OACnB+rd,GAAerid,EAAO6/c,GAAYnT,EAAU,IAC5C,EACL,EAg2QDgH,GAAO17c,MA5hEP,SAAe+S,EAAQo8C,EAAW0sa,GAKhC,OAJIA,GAAyB,iBAATA,GAAqB5O,GAAel6c,EAAQo8C,EAAW0sa,KACzE1sa,EAAY0sa,EAAQv2d,IAEtBu2d,EAAQA,IAAUv2d,EAAYqnc,EAAmBkvB,IAAU,IAI3D9od,EAAS9X,GAAS8X,MAEQ,iBAAbo8C,GACO,MAAbA,IAAsBglZ,GAAShlZ,OAEpCA,EAAYo7Z,GAAap7Z,KACPmoZ,GAAWvkc,GACpBy4c,GAAU1T,GAAc/kc,GAAS,EAAG8od,GAGxC9od,EAAO/S,MAAMmvD,EAAW0sa,GAZtB,EAaV,EA0gEDngB,GAAOogB,OAnsLP,SAAgBptd,EAAMwrB,GACpB,GAAmB,mBAARxrB,EACT,MAAM,IAAI24B,GAAU2ka,GAGtB,OADA9xa,EAAiB,MAATA,EAAgB,EAAIqgb,GAAU2V,GAAUh2b,GAAQ,GACjDyub,IAAS,SAASptd,GACvB,IAAIyM,EAAQzM,EAAK2+B,GACb43b,EAAYtG,GAAUjwd,EAAM,EAAG2+B,GAKnC,OAHIlyB,GACFstc,GAAUwc,EAAW9pd,GAEhB0N,GAAMhH,EAAM/Q,KAAMm0d,EAC1B,GACF,EAsrLDpW,GAAOxoU,KAl1QP,SAAclrI,GACZ,IAAI1J,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAOA,EAAS8qd,GAAUphd,EAAO,EAAG1J,GAAU,EAC/C,EAg1QDo9c,GAAO9pX,KArzQP,SAAc5pF,EAAO4Z,EAAGorc,GACtB,OAAMhld,GAASA,EAAM1J,OAId8qd,GAAUphd,EAAO,GADxB4Z,EAAKorc,GAASprc,IAAMtc,EAAa,EAAI4qd,GAAUtuc,IAChB,EAAI,EAAIA,GAH9B,EAIV,EAgzQD85b,GAAOqgB,UArxQP,SAAmB/zd,EAAO4Z,EAAGorc,GAC3B,IAAI1ud,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,OAAKA,EAKE8qd,GAAUphd,GADjB4Z,EAAItjB,GADJsjB,EAAKorc,GAASprc,IAAMtc,EAAa,EAAI4qd,GAAUtuc,KAEnB,EAAI,EAAIA,EAAGtjB,GAJ9B,EAKV,EA8wQDo9c,GAAOsgB,eAzuQP,SAAwBh0d,EAAO8sc,GAC7B,OAAQ9sc,GAASA,EAAM1J,OACnBusd,GAAU7id,EAAO6/c,GAAY/S,EAAW,IAAI,GAAO,GACnD,EACL,EAsuQD4G,GAAOugB,UAjsQP,SAAmBj0d,EAAO8sc,GACxB,OAAQ9sc,GAASA,EAAM1J,OACnBusd,GAAU7id,EAAO6/c,GAAY/S,EAAW,IACxC,EACL,EA8rQD4G,GAAOwgB,IApuPP,SAAarge,EAAOk4d,GAElB,OADAA,EAAYl4d,GACLA,CACR,EAkuPD6/c,GAAOtxX,SA9oLP,SAAkB17E,EAAMi2B,EAAM5pC,GAC5B,IAAI+5d,GAAU,EACV1H,GAAW,EAEf,GAAmB,mBAAR1+c,EACT,MAAM,IAAI24B,GAAU2ka,GAMtB,OAJIhub,GAASjjB,KACX+5d,EAAU,YAAa/5d,IAAYA,EAAQ+5d,QAAUA,EACrD1H,EAAW,aAAcryd,IAAYA,EAAQqyd,SAAWA,GAEnDn9b,GAASvhB,EAAMi2B,EAAM,CAC1B,QAAWmwb,EACX,QAAWnwb,EACX,SAAYyob,GAEf,EA+nLD1R,GAAOqS,KAAOA,GACdrS,GAAOrwY,QAAUA,GACjBqwY,GAAO6b,QAAUA,GACjB7b,GAAO8b,UAAYA,GACnB9b,GAAOygB,OArfP,SAAgBtge,GACd,OAAI4G,GAAQ5G,GACHw5c,GAASx5c,EAAO4md,IAElBX,GAASjmd,GAAS,CAACA,GAASkid,GAAUuN,GAAarwd,GAASY,IACpE,EAifD6/c,GAAO6L,cAAgBA,GACvB7L,GAAO/gb,UA10FP,SAAmB2I,EAAQoxa,EAAUryc,GACnC,IAAI+6c,EAAQ36c,GAAQ6gC,GAChB84b,EAAYhf,GAASjD,GAAS72a,IAAWixa,GAAajxa,GAG1D,GADAoxa,EAAWmT,GAAYnT,EAAU,GACd,MAAfryc,EAAqB,CACvB,IAAIkqP,EAAOjpN,GAAUA,EAAO0B,YAE1B3iC,EADE+5d,EACYhf,EAAQ,IAAI7wN,EAAO,GAE1BvuO,GAASslB,IACFkpB,GAAW+/L,GAAQwvN,GAAW3C,GAAa91a,IAG3C,CAAC,CAElB,CAID,OAHC84b,EAAYznB,GAAY8M,IAAYn+a,GAAQ,SAASznC,EAAOiD,EAAOwkC,GAClE,OAAOoxa,EAASryc,EAAaxG,EAAOiD,EAAOwkC,EAC5C,IACMjhC,CACR,EAszFDq5c,GAAO2gB,MArnLP,SAAe3td,GACb,OAAO6/c,GAAI7/c,EAAM,EAClB,EAonLDgtc,GAAOn4a,MAAQA,GACfm4a,GAAO2X,QAAUA,GACjB3X,GAAO4X,UAAYA,GACnB5X,GAAO4gB,KAzmQP,SAAct0d,GACZ,OAAQA,GAASA,EAAM1J,OAAUksd,GAASxid,GAAS,EACpD,EAwmQD0zc,GAAO6gB,OA/kQP,SAAgBv0d,EAAO0sc,GACrB,OAAQ1sc,GAASA,EAAM1J,OAAUksd,GAASxid,EAAO6/c,GAAYnT,EAAU,IAAM,EAC9E,EA8kQDgH,GAAO8gB,SAxjQP,SAAkBx0d,EAAOotc,GAEvB,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa9vc,EACpD0C,GAASA,EAAM1J,OAAUksd,GAASxid,EAAO1C,EAAW8vc,GAAc,EAC3E,EAsjQDsG,GAAO+gB,MAhyFP,SAAen5b,EAAQhjC,GACrB,OAAiB,MAAVgjC,GAAwBmlb,GAAUnlb,EAAQhjC,EAClD,EA+xFDo7c,GAAO6X,MAAQA,GACf7X,GAAO8X,UAAYA,GACnB9X,GAAO/xa,OApwFP,SAAgBrG,EAAQhjC,EAAMsqd,GAC5B,OAAiB,MAAVtnb,EAAiBA,EAASqnb,GAAWrnb,EAAQhjC,EAAM+qd,GAAaT,GACxE,EAmwFDlP,GAAOghB,WAzuFP,SAAoBp5b,EAAQhjC,EAAMsqd,EAAS3L,GAEzC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa35c,EAC3C,MAAVg+B,EAAiBA,EAASqnb,GAAWrnb,EAAQhjC,EAAM+qd,GAAaT,GAAU3L,EAClF,EAuuFDvD,GAAOpob,OAASA,GAChBoob,GAAOihB,SAhrFP,SAAkBr5b,GAChB,OAAiB,MAAVA,EAAiB,GAAKsza,GAAWtza,EAAQs8a,GAAOt8a,GACxD,EA+qFDo4a,GAAO+X,QAAUA,GACjB/X,GAAO4R,MAAQA,GACf5R,GAAOzhZ,KA3mLP,SAAcp+D,EAAOP,GACnB,OAAOy6d,GAAQ1K,GAAa/vd,GAAUO,EACvC,EA0mLD6/c,GAAOptS,IAAMA,GACbotS,GAAOgY,MAAQA,GACfhY,GAAOiY,QAAUA,GACjBjY,GAAOkY,IAAMA,GACblY,GAAOkhB,UAj3PP,SAAmBn0d,EAAO6qB,GACxB,OAAO23b,GAAcxid,GAAS,GAAI6qB,GAAU,GAAI8qb,GACjD,EAg3PD1C,GAAOmhB,cA/1PP,SAAuBp0d,EAAO6qB,GAC5B,OAAO23b,GAAcxid,GAAS,GAAI6qB,GAAU,GAAIg1b,GACjD,EA81PD5M,GAAOmY,QAAUA,GAGjBnY,GAAOt5c,QAAUm1d,GACjB7b,GAAOohB,UAAYtF,GACnB9b,GAAOt4Z,OAASuza,GAChBjb,GAAOqhB,WAAanG,GAGpB8B,GAAMhd,GAAQA,IAKdA,GAAOhwa,IAAMA,GACbgwa,GAAO0c,QAAUA,GACjB1c,GAAO+b,UAAYA,GACnB/b,GAAO9ub,WAAaA,GACpB8ub,GAAOn5X,KAAOA,GACdm5X,GAAOvmb,MAprFP,SAAexD,EAAQktb,EAAOC,GAa5B,OAZIA,IAAUx5c,IACZw5c,EAAQD,EACRA,EAAQv5c,GAENw5c,IAAUx5c,IAEZw5c,GADAA,EAAQ31I,GAAS21I,MACCA,EAAQA,EAAQ,GAEhCD,IAAUv5c,IAEZu5c,GADAA,EAAQ11I,GAAS01I,MACCA,EAAQA,EAAQ,GAE7Bb,GAAU70I,GAASx3S,GAASktb,EAAOC,EAC3C,EAuqFDpD,GAAOzyb,MA7jLP,SAAeptB,GACb,OAAOkjd,GAAUljd,EArzVI,EAszVtB,EA4jLD6/c,GAAOshB,UApgLP,SAAmBnhe,GACjB,OAAOkjd,GAAUljd,EAAOu7d,EACzB,EAmgLD1b,GAAOuhB,cAr+KP,SAAuBphe,EAAOojd,GAE5B,OAAOF,GAAUljd,EAAOu7d,EADxBnY,EAAkC,mBAAdA,EAA2BA,EAAa35c,EAE7D,EAm+KDo2c,GAAOwhB,UA7hLP,SAAmBrhe,EAAOojd,GAExB,OAAOF,GAAUljd,EAz1VI,EAw1VrBojd,EAAkC,mBAAdA,EAA2BA,EAAa35c,EAE7D,EA2hLDo2c,GAAOyhB,WA18KP,SAAoB75b,EAAQ4B,GAC1B,OAAiB,MAAVA,GAAkB27a,GAAev9a,EAAQ4B,EAAQvoC,GAAKuoC,GAC9D,EAy8KDw2a,GAAO6R,OAASA,GAChB7R,GAAO0hB,UA1xCP,SAAmBvhe,EAAOkgC,GACxB,OAAiB,MAATlgC,GAAiBA,IAAUA,EAASkgC,EAAelgC,CAC5D,EAyxCD6/c,GAAOud,OAASA,GAChBvd,GAAOjtJ,SAz9EP,SAAkB17S,EAAQuC,EAAQnN,GAChC4K,EAAS9X,GAAS8X,GAClBuC,EAASi1c,GAAaj1c,GAEtB,IAAIhX,EAASyU,EAAOzU,OAKhBuJ,EAJJM,EAAWA,IAAa7C,EACpBhH,EACA0/c,GAAUkS,GAAU/nd,GAAW,EAAG7J,GAItC,OADA6J,GAAYmN,EAAOhX,SACA,GAAKyU,EAAOrQ,MAAMyF,EAAUN,IAAQyN,CACxD,EA88EDomc,GAAOnuY,GAAKA,GACZmuY,GAAOj8c,OAj7EP,SAAgBsT,GAEd,OADAA,EAAS9X,GAAS8X,KACA+7b,EAAmB/6b,KAAKhB,GACtCA,EAAOxT,QAAQqvc,EAAiBwI,IAChCrkc,CACL,EA66ED2oc,GAAOzsZ,aA55EP,SAAsBl8C,GAEpB,OADAA,EAAS9X,GAAS8X,KACAu8b,GAAgBv7b,KAAKhB,GACnCA,EAAOxT,QAAQ8vc,GAAc,QAC7Bt8b,CACL,EAw5ED2oc,GAAOl4a,MA57OP,SAAe91B,EAAYonc,EAAWkY,GACpC,IAAIt+c,EAAOjM,GAAQiL,GAAcmnc,GAAa+M,GAI9C,OAHIoL,GAASC,GAAev/c,EAAYonc,EAAWkY,KACjDlY,EAAYxvc,GAEPoJ,EAAKhB,EAAYm6c,GAAY/S,EAAW,GAChD,EAu7OD4G,GAAO/hd,KAAOA,GACd+hd,GAAOpnM,UAAYA,GACnBonM,GAAO2hB,QArxHP,SAAiB/5b,EAAQwxa,GACvB,OAAOe,GAAYvya,EAAQukb,GAAY/S,EAAW,GAAI2M,GACvD,EAoxHD/F,GAAOwY,SAAWA,GAClBxY,GAAOmX,cAAgBA,GACvBnX,GAAO4hB,YAjvHP,SAAqBh6b,EAAQwxa,GAC3B,OAAOe,GAAYvya,EAAQukb,GAAY/S,EAAW,GAAI6M,GACvD,EAgvHDjG,GAAOp1Y,MAAQA,GACfo1Y,GAAOr9c,QAAUA,GACjBq9c,GAAOyY,aAAeA,GACtBzY,GAAO6hB,MArtHP,SAAej6b,EAAQoxa,GACrB,OAAiB,MAAVpxa,EACHA,EACA6+a,GAAQ7+a,EAAQukb,GAAYnT,EAAU,GAAIkL,GAC/C,EAktHDlE,GAAO8hB,WAtrHP,SAAoBl6b,EAAQoxa,GAC1B,OAAiB,MAAVpxa,EACHA,EACA++a,GAAa/+a,EAAQukb,GAAYnT,EAAU,GAAIkL,GACpD,EAmrHDlE,GAAO+hB,OArpHP,SAAgBn6b,EAAQoxa,GACtB,OAAOpxa,GAAUm+a,GAAWn+a,EAAQukb,GAAYnT,EAAU,GAC3D,EAopHDgH,GAAOgiB,YAxnHP,SAAqBp6b,EAAQoxa,GAC3B,OAAOpxa,GAAUq+a,GAAgBr+a,EAAQukb,GAAYnT,EAAU,GAChE,EAunHDgH,GAAOnkd,IAAMA,GACbmkd,GAAOwa,GAAKA,GACZxa,GAAOya,IAAMA,GACbza,GAAOpkd,IAzgHP,SAAagsC,EAAQhjC,GACnB,OAAiB,MAAVgjC,GAAkBiub,GAAQjub,EAAQhjC,EAAM6id,GAChD,EAwgHDzH,GAAOsL,MAAQA,GACftL,GAAOzuc,KAAOA,GACdyuc,GAAOuK,SAAWA,GAClBvK,GAAOx4c,SA5pOP,SAAkBwK,EAAY7R,EAAOouO,EAAW+iP,GAC9Ct/c,EAAai5c,GAAYj5c,GAAcA,EAAa4lB,GAAO5lB,GAC3Du8N,EAAaA,IAAc+iP,EAASkD,GAAUjmP,GAAa,EAE3D,IAAI3rO,EAASoP,EAAWpP,OAIxB,OAHI2rO,EAAY,IACdA,EAAYswO,GAAUj8c,EAAS2rO,EAAW,IAErC57K,GAAS3gD,GACXu8N,GAAa3rO,GAAUoP,EAAW3O,QAAQlD,EAAOouO,IAAc,IAC7D3rO,GAAU42c,GAAYxnc,EAAY7R,EAAOouO,IAAc,CAC/D,EAkpODyxO,GAAO38c,QA9lSP,SAAiBiJ,EAAOnM,EAAOouO,GAC7B,IAAI3rO,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIQ,EAAqB,MAAbmrO,EAAoB,EAAIimP,GAAUjmP,GAI9C,OAHInrO,EAAQ,IACVA,EAAQy7c,GAAUj8c,EAASQ,EAAO,IAE7Bo2c,GAAYltc,EAAOnM,EAAOiD,EAClC,EAqlSD48c,GAAO9hY,QAlqFP,SAAiBjoD,EAAQuI,EAAOryB,GAS9B,OARAqyB,EAAQy1b,GAASz1b,GACbryB,IAAQvC,GACVuC,EAAMqyB,EACNA,EAAQ,GAERryB,EAAM8nd,GAAS9nd,GArsVnB,SAAqB8pB,EAAQuI,EAAOryB,GAClC,OAAO8pB,GAAU6ob,GAAUtgb,EAAOryB,IAAQ8pB,EAAS4ob,GAAUrgb,EAAOryB,EACrE,CAssVQ81d,CADPhsc,EAASw3S,GAASx3S,GACSuI,EAAOryB,EACnC,EAypFD6zc,GAAOv/F,OAASA,GAChBu/F,GAAO4B,YAAcA,GACrB5B,GAAOj5c,QAAUA,GACjBi5c,GAAO5H,cAAgBA,GACvB4H,GAAOiL,YAAcA,GACrBjL,GAAO4L,kBAAoBA,GAC3B5L,GAAOviZ,UAtwKP,SAAmBt9D,GACjB,OAAiB,IAAVA,IAA4B,IAAVA,GACtB8/c,GAAa9/c,IAAUgnd,GAAWhnd,IAAUkxc,CAChD,EAowKD2O,GAAOvB,SAAWA,GAClBuB,GAAOriZ,OAASA,GAChBqiZ,GAAOpQ,UA7sKP,SAAmBzvc,GACjB,OAAO8/c,GAAa9/c,IAA6B,IAAnBA,EAAM63C,WAAmB3O,GAAclpC,EACtE,EA4sKD6/c,GAAOn+b,QAzqKP,SAAiB1hB,GACf,GAAa,MAATA,EACF,OAAO,EAET,GAAI8qd,GAAY9qd,KACX4G,GAAQ5G,IAA0B,iBAATA,GAA4C,mBAAhBA,EAAMmD,QAC1Dm7c,GAASt+c,IAAU04c,GAAa14c,IAAUyhd,GAAYzhd,IAC1D,OAAQA,EAAMyC,OAEhB,IAAIsG,EAAM06c,GAAOzjd,GACjB,GAAI+I,GAAOwoc,GAAUxoc,GAAO6oc,EAC1B,OAAQ5xc,EAAM2P,KAEhB,GAAI66c,GAAYxqd,GACd,OAAQuqd,GAASvqd,GAAOyC,OAE1B,IAAK,IAAI2B,KAAOpE,EACd,GAAI2hB,GAAephB,KAAKP,EAAOoE,GAC7B,OAAO,EAGX,OAAO,CACR,EAopKDy7c,GAAOptR,QAtnKP,SAAiBzyL,EAAOspB,GACtB,OAAO2+b,GAAYjod,EAAOspB,EAC3B,EAqnKDu2b,GAAOkiB,YAnlKP,SAAqB/he,EAAOspB,EAAO85b,GAEjC,IAAI99c,GADJ89c,EAAkC,mBAAdA,EAA2BA,EAAa35c,GAClC25c,EAAWpjd,EAAOspB,GAAS7f,EACrD,OAAOnE,IAAWmE,EAAYw+c,GAAYjod,EAAOspB,EAAO7f,EAAW25c,KAAgB99c,CACpF,EAglKDu6c,GAAO0a,QAAUA,GACjB1a,GAAO5sZ,SA1hKP,SAAkBjzD,GAChB,MAAuB,iBAATA,GAAqBu+c,GAAev+c,EACnD,EAyhKD6/c,GAAOlvZ,WAAaA,GACpBkvZ,GAAO2a,UAAYA,GACnB3a,GAAO+V,SAAWA,GAClB/V,GAAOzH,MAAQA,GACfyH,GAAO/jb,QA11JP,SAAiB2L,EAAQ4B,GACvB,OAAO5B,IAAW4B,GAAUwgb,GAAYpib,EAAQ4B,EAAQ0hb,GAAa1hb,GACtE,EAy1JDw2a,GAAOmiB,YAvzJP,SAAqBv6b,EAAQ4B,EAAQ+5a,GAEnC,OADAA,EAAkC,mBAAdA,EAA2BA,EAAa35c,EACrDogd,GAAYpib,EAAQ4B,EAAQ0hb,GAAa1hb,GAAS+5a,EAC1D,EAqzJDvD,GAAOpiZ,MAvxJP,SAAez9D,GAIb,OAAO6rF,GAAS7rF,IAAUA,IAAUA,CACrC,EAmxJD6/c,GAAOn+c,SAvvJP,SAAkB1B,GAChB,GAAI+1d,GAAW/1d,GACb,MAAM,IAAI3D,GAtsXM,mEAwsXlB,OAAO6td,GAAalqd,EACrB,EAmvJD6/c,GAAOoiB,MAxsJP,SAAejie,GACb,OAAgB,MAATA,CACR,EAusJD6/c,GAAO9kS,OAjuJP,SAAgB/6K,GACd,OAAiB,OAAVA,CACR,EAguJD6/c,GAAOh0X,SAAWA,GAClBg0X,GAAO19b,SAAWA,GAClB09b,GAAOC,aAAeA,GACtBD,GAAO32a,cAAgBA,GACvB22a,GAAOvH,SAAWA,GAClBuH,GAAOqiB,cArlJP,SAAuBlie,GACrB,OAAOw6d,GAAUx6d,IAAUA,IAAS,kBAAqBA,GAAS4wc,CACnE,EAolJDiP,GAAOrH,MAAQA,GACfqH,GAAOrtZ,SAAWA,GAClBqtZ,GAAOoG,SAAWA,GAClBpG,GAAOnH,aAAeA,GACtBmH,GAAOvuR,YAn/IP,SAAqBtxL,GACnB,OAAOA,IAAUyJ,CAClB,EAk/IDo2c,GAAOsiB,UA/9IP,SAAmBnie,GACjB,OAAO8/c,GAAa9/c,IAAUyjd,GAAOzjd,IAAU+xc,CAChD,EA89ID8N,GAAOuiB,UA38IP,SAAmBpie,GACjB,OAAO8/c,GAAa9/c,IAn6XP,oBAm6XiBgnd,GAAWhnd,EAC1C,EA08ID6/c,GAAOtxc,KAz/RP,SAAcpC,EAAOmnD,GACnB,OAAgB,MAATnnD,EAAgB,GAAKqyc,GAAWj+c,KAAK4L,EAAOmnD,EACpD,EAw/RDusZ,GAAOic,UAAYA,GACnBjc,GAAOlpZ,KAAOA,GACdkpZ,GAAOrqX,YAh9RP,SAAqBrpF,EAAOnM,EAAOouO,GACjC,IAAI3rO,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,IAAKA,EACH,OAAQ,EAEV,IAAIQ,EAAQR,EAKZ,OAJI2rO,IAAc3kO,IAEhBxG,GADAA,EAAQoxd,GAAUjmP,IACF,EAAIswO,GAAUj8c,EAASQ,EAAO,GAAK07c,GAAU17c,EAAOR,EAAS,IAExEzC,IAAUA,EArvMrB,SAA2BmM,EAAOnM,EAAOouO,GAEvC,IADA,IAAInrO,EAAQmrO,EAAY,EACjBnrO,KACL,GAAIkJ,EAAMlJ,KAAWjD,EACnB,OAAOiD,EAGX,OAAOA,CACR,CA8uMOo/d,CAAkBl2d,EAAOnM,EAAOiD,GAChCi3c,GAAc/tc,EAAOkuc,GAAWp3c,GAAO,EAC5C,EAo8RD48c,GAAOkc,UAAYA,GACnBlc,GAAOmc,WAAaA,GACpBnc,GAAO9qW,GAAKA,GACZ8qW,GAAO4a,IAAMA,GACb5a,GAAOtmb,IAhfP,SAAaptB,GACX,OAAQA,GAASA,EAAM1J,OACnBujd,GAAa75c,EAAOi+c,GAAU/C,IAC9B59c,CACL,EA6eDo2c,GAAOyiB,MApdP,SAAen2d,EAAO0sc,GACpB,OAAQ1sc,GAASA,EAAM1J,OACnBujd,GAAa75c,EAAO6/c,GAAYnT,EAAU,GAAIwO,IAC9C59c,CACL,EAidDo2c,GAAO0iB,KAjcP,SAAcp2d,GACZ,OAAOouc,GAASpuc,EAAOi+c,GACxB,EAgcDvK,GAAO2iB,OAvaP,SAAgBr2d,EAAO0sc,GACrB,OAAO0B,GAASpuc,EAAO6/c,GAAYnT,EAAU,GAC9C,EAsaDgH,GAAOl7b,IAlZP,SAAaxY,GACX,OAAQA,GAASA,EAAM1J,OACnBujd,GAAa75c,EAAOi+c,GAAUQ,IAC9Bnhd,CACL,EA+YDo2c,GAAO4iB,MAtXP,SAAet2d,EAAO0sc,GACpB,OAAQ1sc,GAASA,EAAM1J,OACnBujd,GAAa75c,EAAO6/c,GAAYnT,EAAU,GAAI+R,IAC9Cnhd,CACL,EAmXDo2c,GAAO4V,UAAYA,GACnB5V,GAAOmW,UAAYA,GACnBnW,GAAO6iB,WAztBP,WACE,MAAO,CAAC,CACT,EAwtBD7iB,GAAO8iB,WAzsBP,WACE,MAAO,EACR,EAwsBD9iB,GAAO+iB,SAzrBP,WACE,OAAO,CACR,EAwrBD/iB,GAAO0d,SAAWA,GAClB1d,GAAOhhV,IA77RP,SAAa1yH,EAAO4Z,GAClB,OAAQ5Z,GAASA,EAAM1J,OAAUmpd,GAAQz/c,EAAOkod,GAAUtuc,IAAMtc,CACjE,EA47RDo2c,GAAOgjB,WAliCP,WAIE,OAHIn2d,GAAK9L,IAAMkB,OACb4K,GAAK9L,EAAIs8c,IAEJp7c,IACR,EA8hCD+9c,GAAOj8b,KAAOA,GACdi8b,GAAOx6Y,IAAMA,GACbw6Y,GAAOijB,IAj5EP,SAAa5rd,EAAQzU,EAAQugQ,GAC3B9rP,EAAS9X,GAAS8X,GAGlB,IAAI6rd,GAFJtge,EAAS4xd,GAAU5xd,IAEMs5c,GAAW7kc,GAAU,EAC9C,IAAKzU,GAAUsge,GAAatge,EAC1B,OAAOyU,EAET,IAAI22c,GAAOprd,EAASsge,GAAa,EACjC,OACEpP,GAAcxV,GAAY0P,GAAM7qN,GAChC9rP,EACAy8c,GAAczV,GAAW2P,GAAM7qN,EAElC,EAo4ED68M,GAAOmjB,OA32EP,SAAgB9rd,EAAQzU,EAAQugQ,GAC9B9rP,EAAS9X,GAAS8X,GAGlB,IAAI6rd,GAFJtge,EAAS4xd,GAAU5xd,IAEMs5c,GAAW7kc,GAAU,EAC9C,OAAQzU,GAAUsge,EAAYtge,EACzByU,EAASy8c,GAAclxd,EAASsge,EAAW//N,GAC5C9rP,CACL,EAo2ED2oc,GAAOtjV,SA30EP,SAAkBrlH,EAAQzU,EAAQugQ,GAChC9rP,EAAS9X,GAAS8X,GAGlB,IAAI6rd,GAFJtge,EAAS4xd,GAAU5xd,IAEMs5c,GAAW7kc,GAAU,EAC9C,OAAQzU,GAAUsge,EAAYtge,EACzBkxd,GAAclxd,EAASsge,EAAW//N,GAAS9rP,EAC5CA,CACL,EAo0ED2oc,GAAOjmb,SA1yEP,SAAkB1iB,EAAQ+rd,EAAO9R,GAM/B,OALIA,GAAkB,MAAT8R,EACXA,EAAQ,EACCA,IACTA,GAASA,GAEJpkB,GAAez/c,GAAS8X,GAAQxT,QAAQgwc,GAAa,IAAKuvB,GAAS,EAC3E,EAoyEDpjB,GAAOn7b,OA1rFP,SAAgBs+b,EAAOC,EAAOigB,GA2B5B,GA1BIA,GAA+B,kBAAZA,GAAyB9R,GAAepO,EAAOC,EAAOigB,KAC3EjgB,EAAQigB,EAAWz5d,GAEjBy5d,IAAaz5d,IACK,kBAATw5c,GACTigB,EAAWjgB,EACXA,EAAQx5c,GAEe,kBAATu5c,IACdkgB,EAAWlgB,EACXA,EAAQv5c,IAGRu5c,IAAUv5c,GAAaw5c,IAAUx5c,GACnCu5c,EAAQ,EACRC,EAAQ,IAGRD,EAAQ8Q,GAAS9Q,GACbC,IAAUx5c,GACZw5c,EAAQD,EACRA,EAAQ,GAERC,EAAQ6Q,GAAS7Q,IAGjBD,EAAQC,EAAO,CACjB,IAAIkgB,EAAOngB,EACXA,EAAQC,EACRA,EAAQkgB,CACT,CACD,GAAID,GAAYlgB,EAAQ,GAAKC,EAAQ,EAAG,CACtC,IAAIyT,EAAO5X,KACX,OAAOH,GAAUqE,EAAS0T,GAAQzT,EAAQD,EAAQ3L,GAAe,QAAUqf,EAAO,IAAIj0d,OAAS,KAAOwgd,EACvG,CACD,OAAOlB,GAAWiB,EAAOC,EAC1B,EAspFDpD,GAAO55c,OA5+NP,SAAgB4L,EAAYgnc,EAAUryc,GACpC,IAAIqM,EAAOjM,GAAQiL,GAAc6nc,GAAcgB,GAC3Cf,EAAY//b,UAAUnX,OAAS,EAEnC,OAAOoQ,EAAKhB,EAAYm6c,GAAYnT,EAAU,GAAIryc,EAAamzc,EAAWgJ,GAC3E,EAw+ND9C,GAAOlrD,YAh9NP,SAAqB9iZ,EAAYgnc,EAAUryc,GACzC,IAAIqM,EAAOjM,GAAQiL,GAAc+nc,GAAmBc,GAChDf,EAAY//b,UAAUnX,OAAS,EAEnC,OAAOoQ,EAAKhB,EAAYm6c,GAAYnT,EAAU,GAAIryc,EAAamzc,EAAWkM,GAC3E,EA48NDhG,GAAOxjV,OA/wEP,SAAgBnlH,EAAQ6O,EAAGorc,GAMzB,OAJEprc,GADGorc,EAAQC,GAAel6c,EAAQ6O,EAAGorc,GAASprc,IAAMtc,GAChD,EAEA4qd,GAAUtuc,GAET8mc,GAAWztd,GAAS8X,GAAS6O,EACrC,EAywED85b,GAAOn8c,QApvEP,WACE,IAAIhE,EAAOka,UACP1C,EAAS9X,GAASM,EAAK,IAE3B,OAAOA,EAAK+C,OAAS,EAAIyU,EAASA,EAAOxT,QAAQhE,EAAK,GAAIA,EAAK,GAChE,EAgvEDmgd,GAAOv6c,OAtoGP,SAAgBmiC,EAAQhjC,EAAMy7B,GAG5B,IAAIj9B,GAAS,EACTR,GAHJgC,EAAOkid,GAASlid,EAAMgjC,IAGJhlC,OAOlB,IAJKA,IACHA,EAAS,EACTglC,EAASh+B,KAEFxG,EAAQR,GAAQ,CACvB,IAAIzC,EAAkB,MAAVynC,EAAiBh+B,EAAYg+B,EAAOm/a,GAAMnid,EAAKxB,KACvDjD,IAAUyJ,IACZxG,EAAQR,EACRzC,EAAQkgC,GAEVuH,EAASkpB,GAAW3wD,GAASA,EAAMO,KAAKknC,GAAUznC,CACnD,CACD,OAAOynC,CACR,EAmnGDo4a,GAAOp7b,MAAQA,GACfo7b,GAAOxD,aAAeA,EACtBwD,GAAOujB,OA15NP,SAAgBvxd,GAEd,OADWjL,GAAQiL,GAAciwc,GAAcmL,IACnCp7c,EACb,EAw5NDguc,GAAOlwc,KA/0NP,SAAckC,GACZ,GAAkB,MAAdA,EACF,OAAO,EAET,GAAIi5c,GAAYj5c,GACd,OAAO2gD,GAAS3gD,GAAckqc,GAAWlqc,GAAcA,EAAWpP,OAEpE,IAAIsG,EAAM06c,GAAO5xc,GACjB,OAAI9I,GAAOwoc,GAAUxoc,GAAO6oc,EACnB//b,EAAWlC,KAEb46c,GAAS14c,GAAYpP,MAC7B,EAo0NDo9c,GAAOoc,UAAYA,GACnBpc,GAAO5rZ,KA/xNP,SAAcpiD,EAAYonc,EAAWkY,GACnC,IAAIt+c,EAAOjM,GAAQiL,GAAcgoc,GAAY2T,GAI7C,OAHI2D,GAASC,GAAev/c,EAAYonc,EAAWkY,KACjDlY,EAAYxvc,GAEPoJ,EAAKhB,EAAYm6c,GAAY/S,EAAW,GAChD,EA0xND4G,GAAOp7F,YAhsRP,SAAqBt4W,EAAOnM,GAC1B,OAAOytd,GAAgBthd,EAAOnM,EAC/B,EA+rRD6/c,GAAOwjB,cApqRP,SAAuBl3d,EAAOnM,EAAO64c,GACnC,OAAOiV,GAAkB3hd,EAAOnM,EAAOgsd,GAAYnT,EAAU,GAC9D,EAmqRDgH,GAAOyjB,cAjpRP,SAAuBn3d,EAAOnM,GAC5B,IAAIyC,EAAkB,MAAT0J,EAAgB,EAAIA,EAAM1J,OACvC,GAAIA,EAAQ,CACV,IAAIQ,EAAQwqd,GAAgBthd,EAAOnM,GACnC,GAAIiD,EAAQR,GAAUivE,GAAGvlE,EAAMlJ,GAAQjD,GACrC,OAAOiD,CAEV,CACD,OAAQ,CACT,EAyoRD48c,GAAO0jB,gBArnRP,SAAyBp3d,EAAOnM,GAC9B,OAAOytd,GAAgBthd,EAAOnM,GAAO,EACtC,EAonRD6/c,GAAO2jB,kBAzlRP,SAA2Br3d,EAAOnM,EAAO64c,GACvC,OAAOiV,GAAkB3hd,EAAOnM,EAAOgsd,GAAYnT,EAAU,IAAI,EAClE,EAwlRDgH,GAAO4jB,kBAtkRP,SAA2Bt3d,EAAOnM,GAEhC,GADsB,MAATmM,EAAgB,EAAIA,EAAM1J,OAC3B,CACV,IAAIQ,EAAQwqd,GAAgBthd,EAAOnM,GAAO,GAAQ,EAClD,GAAI0xE,GAAGvlE,EAAMlJ,GAAQjD,GACnB,OAAOiD,CAEV,CACD,OAAQ,CACT,EA8jRD48c,GAAOqc,UAAYA,GACnBrc,GAAOrla,WA3oEP,SAAoBtjC,EAAQuC,EAAQnN,GAOlC,OANA4K,EAAS9X,GAAS8X,GAClB5K,EAAuB,MAAZA,EACP,EACA61c,GAAUkS,GAAU/nd,GAAW,EAAG4K,EAAOzU,QAE7CgX,EAASi1c,GAAaj1c,GACfvC,EAAOrQ,MAAMyF,EAAUA,EAAWmN,EAAOhX,SAAWgX,CAC5D,EAooEDomc,GAAO4d,SAAWA,GAClB5d,GAAOvyX,IAzUP,SAAanhF,GACX,OAAQA,GAASA,EAAM1J,OACnB+3c,GAAQruc,EAAOi+c,IACf,CACL,EAsUDvK,GAAO6jB,MA7SP,SAAev3d,EAAO0sc,GACpB,OAAQ1sc,GAASA,EAAM1J,OACnB+3c,GAAQruc,EAAO6/c,GAAYnT,EAAU,IACrC,CACL,EA0SDgH,GAAOv+b,SA7hEP,SAAkBpK,EAAQhY,EAASiyd,GAIjC,IAAI75V,EAAWuoV,GAAO0F,iBAElB4L,GAASC,GAAel6c,EAAQhY,EAASiyd,KAC3Cjyd,EAAUuK,GAEZyN,EAAS9X,GAAS8X,GAClBhY,EAAU67d,GAAa,CAAC,EAAG77d,EAASo4H,EAAU09V,IAE9C,IAII9qY,EACAy5Y,EALAC,EAAU7I,GAAa,CAAC,EAAG77d,EAAQ0ke,QAAStsW,EAASssW,QAAS5O,IAC9D6O,EAAc/ie,GAAK8ie,GACnBE,EAAgB/oB,GAAW6oB,EAASC,GAIpC5ge,EAAQ,EACR8ge,EAAc7ke,EAAQ6ke,aAAervB,GACrCrra,EAAS,WAGT26b,EAAetqc,IAChBx6B,EAAQ0E,QAAU8wc,IAAWrra,OAAS,IACvC06b,EAAY16b,OAAS,KACpB06b,IAAgB3wB,GAAgBc,GAAeQ,IAAWrra,OAAS,KACnEnqC,EAAQ+ke,UAAYvvB,IAAWrra,OAAS,KACzC,KAME66b,EAAY,kBACbvid,GAAephB,KAAKrB,EAAS,cACzBA,EAAQgle,UAAY,IAAIxge,QAAQ,MAAO,KACvC,6BAA+Buzc,GAAmB,KACnD,KAEN//b,EAAOxT,QAAQsge,GAAc,SAASjzd,EAAOozd,EAAaC,EAAkBC,EAAiBC,EAAev1d,GAsB1G,OArBAq1d,IAAqBA,EAAmBC,GAGxCh7b,GAAUnyB,EAAOrQ,MAAM5D,EAAO8L,GAAQrL,QAAQixc,GAAmB6G,IAG7D2oB,IACFj6Y,GAAa,EACb7gD,GAAU,YAAc86b,EAAc,UAEpCG,IACFX,GAAe,EACft6b,GAAU,OAASi7b,EAAgB,eAEjCF,IACF/6b,GAAU,iBAAmB+6b,EAAmB,+BAElDnhe,EAAQ8L,EAASgC,EAAMtO,OAIhBsO,CACR,IAEDs4B,GAAU,OAIV,IAAIl6B,EAAWwS,GAAephB,KAAKrB,EAAS,aAAeA,EAAQiQ,SACnE,GAAKA,GAKA,GAAI6kc,GAA2B97b,KAAK/I,GACvC,MAAM,IAAI9S,GA3idmB,2DAsid7BgtC,EAAS,iBAAmBA,EAAS,QASvCA,GAAUs6b,EAAet6b,EAAO3lC,QAAQivc,EAAsB,IAAMtpa,GACjE3lC,QAAQkvc,EAAqB,MAC7Blvc,QAAQmvc,EAAuB,OAGlCxpa,EAAS,aAAel6B,GAAY,OAAS,SAC1CA,EACG,GACA,wBAEJ,qBACC+6E,EACI,mBACA,KAEJy5Y,EACG,uFAEA,OAEJt6b,EACA,gBAEF,IAAI/jC,EAASi3d,IAAQ,WACnB,OAAO9kB,GAASosB,EAAaK,EAAY,UAAY76b,GAClDxvB,MAAMpQ,EAAWq6d,EACrB,IAKD,GADAx+d,EAAO+jC,OAASA,EACZkxb,GAAQj1d,GACV,MAAMA,EAER,OAAOA,CACR,EA26DDu6c,GAAOvjV,MApsBP,SAAev2G,EAAG8yb,GAEhB,IADA9yb,EAAIsuc,GAAUtuc,IACN,GAAKA,EAAI6qb,EACf,MAAO,GAET,IAAI3tc,EAAQ6tc,EACRruc,EAASk8c,GAAU54b,EAAG+qb,GAE1B+H,EAAWmT,GAAYnT,GACvB9yb,GAAK+qb,EAGL,IADA,IAAIxrc,EAASq1c,GAAUl4c,EAAQo2c,KACtB51c,EAAQ8iB,GACf8yb,EAAS51c,GAEX,OAAOqC,CACR,EAqrBDu6c,GAAOiU,SAAWA,GAClBjU,GAAOwU,UAAYA,GACnBxU,GAAO+a,SAAWA,GAClB/a,GAAO0kB,QAx5DP,SAAiBvke,GACf,OAAOZ,GAASY,GAAOsW,aACxB,EAu5DDupc,GAAOvyI,SAAWA,GAClBuyI,GAAO2kB,cApuIP,SAAuBxke,GACrB,OAAOA,EACHmid,GAAUkS,GAAUr0d,IAAQ,iBAAmB4wc,GACpC,IAAV5wc,EAAcA,EAAQ,CAC5B,EAiuID6/c,GAAOzgd,SAAWA,GAClBygd,GAAO4kB,QAn4DP,SAAiBzke,GACf,OAAOZ,GAASY,GAAOwoC,aACxB,EAk4DDq3a,GAAOx7c,KA12DP,SAAc6S,EAAQ8rP,EAAOmuN,GAE3B,IADAj6c,EAAS9X,GAAS8X,MACHi6c,GAASnuN,IAAUv5P,GAChC,OAAOmxc,GAAS1jc,GAElB,IAAKA,KAAY8rP,EAAQ0rN,GAAa1rN,IACpC,OAAO9rP,EAET,IAAIgkc,EAAae,GAAc/kc,GAC3Bikc,EAAac,GAAcj5M,GAI/B,OAAO2sN,GAAUzU,EAHLD,GAAgBC,EAAYC,GAC9BC,GAAcF,EAAYC,GAAc,GAET5sc,KAAK,GAC/C,EA61DDsxc,GAAO6kB,QAx0DP,SAAiBxtd,EAAQ8rP,EAAOmuN,GAE9B,IADAj6c,EAAS9X,GAAS8X,MACHi6c,GAASnuN,IAAUv5P,GAChC,OAAOyN,EAAOrQ,MAAM,EAAGg0c,GAAgB3jc,GAAU,GAEnD,IAAKA,KAAY8rP,EAAQ0rN,GAAa1rN,IACpC,OAAO9rP,EAET,IAAIgkc,EAAae,GAAc/kc,GAG/B,OAAOy4c,GAAUzU,EAAY,EAFnBE,GAAcF,EAAYe,GAAcj5M,IAAU,GAEvBz0P,KAAK,GAC3C,EA6zDDsxc,GAAO8kB,UAxyDP,SAAmBztd,EAAQ8rP,EAAOmuN,GAEhC,IADAj6c,EAAS9X,GAAS8X,MACHi6c,GAASnuN,IAAUv5P,GAChC,OAAOyN,EAAOxT,QAAQgwc,GAAa,IAErC,IAAKx8b,KAAY8rP,EAAQ0rN,GAAa1rN,IACpC,OAAO9rP,EAET,IAAIgkc,EAAae,GAAc/kc,GAG/B,OAAOy4c,GAAUzU,EAFLD,GAAgBC,EAAYe,GAAcj5M,KAElBz0P,KAAK,GAC1C,EA6xDDsxc,GAAO+kB,SAtvDP,SAAkB1td,EAAQhY,GACxB,IAAIuD,EAnvdmB,GAovdnBoie,EAnvdqB,MAqvdzB,GAAI1id,GAASjjB,GAAU,CACrB,IAAIo0D,EAAY,cAAep0D,EAAUA,EAAQo0D,UAAYA,EAC7D7wD,EAAS,WAAYvD,EAAUm1d,GAAUn1d,EAAQuD,QAAUA,EAC3Doie,EAAW,aAAc3le,EAAUwvd,GAAaxvd,EAAQ2le,UAAYA,CACrE,CAGD,IAAI9B,GAFJ7rd,EAAS9X,GAAS8X,IAEKzU,OACvB,GAAIg5c,GAAWvkc,GAAS,CACtB,IAAIgkc,EAAae,GAAc/kc,GAC/B6rd,EAAY7nB,EAAWz4c,MACxB,CACD,GAAIA,GAAUsge,EACZ,OAAO7rd,EAET,IAAIlL,EAAMvJ,EAASs5c,GAAW8oB,GAC9B,GAAI74d,EAAM,EACR,OAAO64d,EAET,IAAIv/d,EAAS41c,EACTyU,GAAUzU,EAAY,EAAGlvc,GAAKuC,KAAK,IACnC2I,EAAOrQ,MAAM,EAAGmF,GAEpB,GAAIsnD,IAAc7pD,EAChB,OAAOnE,EAASu/d,EAKlB,GAHI3pB,IACFlvc,GAAQ1G,EAAO7C,OAASuJ,GAEtBssc,GAAShlZ,IACX,GAAIp8C,EAAOrQ,MAAMmF,GAAKJ,OAAO0nD,GAAY,CACvC,IAAIviD,EACA6R,EAAYtd,EAMhB,IAJKguD,EAAUt3D,SACbs3D,EAAY55B,GAAO45B,EAAUjqB,OAAQjqC,GAAS+0c,GAAQrjc,KAAKwiD,IAAc,MAE3EA,EAAUx7C,UAAY,EACd/G,EAAQuiD,EAAUxiD,KAAK8R,IAC7B,IAAIkid,EAAS/zd,EAAM9N,MAErBqC,EAASA,EAAOuB,MAAM,EAAGi+d,IAAWr7d,EAAYuC,EAAM84d,EACvD,OACI,GAAI5td,EAAOhU,QAAQwrd,GAAap7Z,GAAYtnD,IAAQA,EAAK,CAC9D,IAAI/I,EAAQqC,EAAOkwF,YAAYliC,GAC3BrwD,GAAS,IACXqC,EAASA,EAAOuB,MAAM,EAAG5D,GAE5B,CACD,OAAOqC,EAASu/d,CACjB,EAisDDhlB,GAAOklB,SA5qDP,SAAkB7td,GAEhB,OADAA,EAAS9X,GAAS8X,KACA87b,EAAiB96b,KAAKhB,GACpCA,EAAOxT,QAAQovc,EAAesJ,IAC9Bllc,CACL,EAwqDD2oc,GAAOmlB,SAvpBP,SAAkBt0d,GAChB,IAAImP,IAAO+8b,GACX,OAAOx9c,GAASsR,GAAUmP,CAC3B,EAqpBDggc,GAAOsc,UAAYA,GACnBtc,GAAO54Y,WAAaA,GAGpB44Y,GAAOlxZ,KAAOnsD,GACdq9c,GAAOolB,UAAY3M,GACnBzY,GAAOhpa,MAAQzlC,GAEfyrd,GAAMhd,GAAS,WACb,IAAIx2a,EAAS,CAAC,EAMd,OALAu8a,GAAW/F,IAAQ,SAAShtc,EAAMkxC,GAC3BpiC,GAAephB,KAAKs/c,GAAO/1c,UAAWi6C,KACzC1a,EAAO0a,GAAclxC,EAExB,IACMw2B,CACR,CARc,GAQT,CAAE,OAAS,IAWjBw2a,GAAOqlB,QA/ihBK,UAkjhBZpsB,GAAU,CAAC,OAAQ,UAAW,QAAS,aAAc,UAAW,iBAAiB,SAAS/0Z,GACxF87Z,GAAO97Z,GAAYywM,YAAcqrN,EAClC,IAGD/G,GAAU,CAAC,OAAQ,SAAS,SAAS/0Z,EAAY9gD,GAC/C88c,GAAYj2c,UAAUi6C,GAAc,SAASh+B,GAC3CA,EAAIA,IAAMtc,EAAY,EAAIi1c,GAAU2V,GAAUtuc,GAAI,GAElD,IAAIzgB,EAAUxD,KAAK6+c,eAAiB19c,EAChC,IAAI88c,GAAYj+c,MAChBA,KAAKsrB,QAUT,OARI9nB,EAAOq7c,aACTr7c,EAAOu7c,cAAgBlC,GAAU54b,EAAGzgB,EAAOu7c,eAE3Cv7c,EAAOw7c,UAAU5+c,KAAK,CACpB,KAAQy8c,GAAU54b,EAAG+qb,GACrB,KAAQ/sZ,GAAcz+C,EAAOo7c,QAAU,EAAI,QAAU,MAGlDp7c,CACR,EAEDy6c,GAAYj2c,UAAUi6C,EAAa,SAAW,SAASh+B,GACrD,OAAOjkB,KAAK86D,UAAU7Y,GAAYh+B,GAAG62C,SACtC,CACF,IAGDk8Y,GAAU,CAAC,SAAU,MAAO,cAAc,SAAS/0Z,EAAY9gD,GAC7D,IAAIkE,EAAOlE,EAAQ,EACfkie,EAjihBe,GAiihBJh+d,GA/hhBG,GA+hhByBA,EAE3C44c,GAAYj2c,UAAUi6C,GAAc,SAAS80Z,GAC3C,IAAIvzc,EAASxD,KAAKsrB,QAMlB,OALA9nB,EAAOs7c,cAAc1+c,KAAK,CACxB,SAAY8pd,GAAYnT,EAAU,GAClC,KAAQ1xc,IAEV7B,EAAOq7c,aAAer7c,EAAOq7c,cAAgBwkB,EACtC7/d,CACR,CACF,IAGDwzc,GAAU,CAAC,OAAQ,SAAS,SAAS/0Z,EAAY9gD,GAC/C,IAAImie,EAAW,QAAUnie,EAAQ,QAAU,IAE3C88c,GAAYj2c,UAAUi6C,GAAc,WAClC,OAAOjiD,KAAKsje,GAAU,GAAGple,QAAQ,EAClC,CACF,IAGD84c,GAAU,CAAC,UAAW,SAAS,SAAS/0Z,EAAY9gD,GAClD,IAAIoie,EAAW,QAAUpie,EAAQ,GAAK,SAEtC88c,GAAYj2c,UAAUi6C,GAAc,WAClC,OAAOjiD,KAAK6+c,aAAe,IAAIZ,GAAYj+c,MAAQA,KAAKuje,GAAU,EACnE,CACF,IAEDtlB,GAAYj2c,UAAUg0d,QAAU,WAC9B,OAAOh8d,KAAKw6B,OAAO8tb,GACpB,EAEDrK,GAAYj2c,UAAUhM,KAAO,SAASm7c,GACpC,OAAOn3c,KAAKw6B,OAAO28a,GAAW7nc,MAC/B,EAED2uc,GAAYj2c,UAAUuud,SAAW,SAASpf,GACxC,OAAOn3c,KAAK86D,UAAU9+D,KAAKm7c,EAC5B,EAED8G,GAAYj2c,UAAUyud,UAAYzL,IAAS,SAASrod,EAAM/E,GACxD,MAAmB,mBAAR+E,EACF,IAAIs7c,GAAYj+c,MAElBA,KAAK+D,KAAI,SAAS7F,GACvB,OAAO+nd,GAAW/nd,EAAOyE,EAAM/E,EAChC,GACF,IAEDqgd,GAAYj2c,UAAUxI,OAAS,SAAS23c,GACtC,OAAOn3c,KAAKw6B,OAAOo4D,GAAOs3X,GAAY/S,IACvC,EAED8G,GAAYj2c,UAAUjD,MAAQ,SAASw3B,EAAOryB,GAC5CqyB,EAAQg2b,GAAUh2b,GAElB,IAAI/4B,EAASxD,KACb,OAAIwD,EAAOq7c,eAAiBtib,EAAQ,GAAKryB,EAAM,GACtC,IAAI+zc,GAAYz6c,IAErB+4B,EAAQ,EACV/4B,EAASA,EAAO46d,WAAW7hc,GAClBA,IACT/4B,EAASA,EAAO84d,KAAK//b,IAEnBryB,IAAQvC,IAEVnE,GADA0G,EAAMqod,GAAUrod,IACD,EAAI1G,EAAO+4d,WAAWryd,GAAO1G,EAAOywF,KAAK/pF,EAAMqyB,IAEzD/4B,EACR,EAEDy6c,GAAYj2c,UAAUq2d,eAAiB,SAASlnB,GAC9C,OAAOn3c,KAAK86D,UAAUwja,UAAUnnB,GAAWr8Y,SAC5C,EAEDmjZ,GAAYj2c,UAAU0lE,QAAU,WAC9B,OAAO1tE,KAAKi0F,KAAK+6W,EAClB,EAGD8U,GAAW7F,GAAYj2c,WAAW,SAAS+I,EAAMkxC,GAC/C,IAAIuhb,EAAgB,qCAAqCptd,KAAK6rC,GAC1Dwhb,EAAU,kBAAkBrtd,KAAK6rC,GACjCyhb,EAAa3lB,GAAO0lB,EAAW,QAAwB,QAAdxhb,EAAuB,QAAU,IAAOA,GACjF0hb,EAAeF,GAAW,QAAQrtd,KAAK6rC,GAEtCyhb,IAGL3lB,GAAO/1c,UAAUi6C,GAAc,WAC7B,IAAI/jD,EAAQ8B,KAAKu+c,YACb3gd,EAAO6le,EAAU,CAAC,GAAK3rd,UACvBg2b,EAAS5vc,aAAiB+/c,GAC1BlH,EAAWn5c,EAAK,GAChBgme,EAAU91B,GAAUhpc,GAAQ5G,GAE5Bk4d,EAAc,SAASl4d,GACzB,IAAIsF,EAASkge,EAAW3rd,MAAMgmc,GAAQpG,GAAU,CAACz5c,GAAQN,IACzD,OAAQ6le,GAAWnlB,EAAY96c,EAAO,GAAKA,CAC5C,EAEGoge,GAAWJ,GAAoC,mBAAZzsB,GAA6C,GAAnBA,EAASp2c,SAExEmtc,EAAS81B,GAAU,GAErB,IAAItlB,EAAWt+c,KAAKy+c,UAChBolB,IAAa7je,KAAKw+c,YAAY79c,OAC9Bmje,EAAcH,IAAiBrlB,EAC/BylB,EAAWj2B,IAAW+1B,EAE1B,IAAKF,GAAgBC,EAAS,CAC5B1le,EAAQ6le,EAAW7le,EAAQ,IAAI+/c,GAAYj+c,MAC3C,IAAIwD,EAASuN,EAAKgH,MAAM7Z,EAAON,GAE/B,OADA4F,EAAOg7c,YAAYp+c,KAAK,CAAE,KAAQgwd,GAAM,KAAQ,CAACgG,GAAc,QAAWzud,IACnE,IAAIu2c,GAAc16c,EAAQ86c,EAClC,CACD,OAAIwlB,GAAeC,EACVhzd,EAAKgH,MAAM/X,KAAMpC,IAE1B4F,EAASxD,KAAKowd,KAAKgG,GACZ0N,EAAeL,EAAUjge,EAAOtF,QAAQ,GAAKsF,EAAOtF,QAAWsF,EACvE,EACF,IAGDwzc,GAAU,CAAC,MAAO,OAAQ,QAAS,OAAQ,SAAU,YAAY,SAAS/0Z,GACxE,IAAIlxC,EAAO0pc,GAAWx4Z,GAClB+hb,EAAY,0BAA0B5td,KAAK6rC,GAAc,MAAQ,OACjE0hb,EAAe,kBAAkBvtd,KAAK6rC,GAE1C87Z,GAAO/1c,UAAUi6C,GAAc,WAC7B,IAAIrkD,EAAOka,UACX,GAAI6rd,IAAiB3je,KAAKy+c,UAAW,CACnC,IAAIvgd,EAAQ8B,KAAK9B,QACjB,OAAO6S,EAAKgH,MAAMjT,GAAQ5G,GAASA,EAAQ,GAAIN,EAChD,CACD,OAAOoC,KAAKgke,IAAW,SAAS9le,GAC9B,OAAO6S,EAAKgH,MAAMjT,GAAQ5G,GAASA,EAAQ,GAAIN,EAChD,GACF,CACF,IAGDkmd,GAAW7F,GAAYj2c,WAAW,SAAS+I,EAAMkxC,GAC/C,IAAIyhb,EAAa3lB,GAAO97Z,GACxB,GAAIyhb,EAAY,CACd,IAAIphe,EAAMohe,EAAWtqe,KAAO,GACvBymB,GAAephB,KAAK4+c,GAAW/6c,KAClC+6c,GAAU/6c,GAAO,IAEnB+6c,GAAU/6c,GAAKlC,KAAK,CAAE,KAAQ6hD,EAAY,KAAQyhb,GACnD,CACF,IAEDrmB,GAAUmT,GAAa7od,EAlthBA,GAkthB+BvO,MAAQ,CAAC,CAC7D,KAAQ,UACR,KAAQuO,IAIVs2c,GAAYj2c,UAAUsjB,MAh9dtB,WACE,IAAI9nB,EAAS,IAAIy6c,GAAYj+c,KAAKu+c,aAOlC,OANA/6c,EAAOg7c,YAAc4B,GAAUpgd,KAAKw+c,aACpCh7c,EAAOo7c,QAAU5+c,KAAK4+c,QACtBp7c,EAAOq7c,aAAe7+c,KAAK6+c,aAC3Br7c,EAAOs7c,cAAgBsB,GAAUpgd,KAAK8+c,eACtCt7c,EAAOu7c,cAAgB/+c,KAAK++c,cAC5Bv7c,EAAOw7c,UAAYoB,GAAUpgd,KAAKg/c,WAC3Bx7c,CACR,EAw8dDy6c,GAAYj2c,UAAU8yD,QA97dtB,WACE,GAAI96D,KAAK6+c,aAAc,CACrB,IAAIr7c,EAAS,IAAIy6c,GAAYj+c,MAC7BwD,EAAOo7c,SAAW,EAClBp7c,EAAOq7c,cAAe,CACvB,MACCr7c,EAASxD,KAAKsrB,SACPszb,UAAY,EAErB,OAAOp7c,CACR,EAq7dDy6c,GAAYj2c,UAAU9J,MA36dtB,WACE,IAAImM,EAAQrK,KAAKu+c,YAAYrgd,QACzB4/B,EAAM99B,KAAK4+c,QACXa,EAAQ36c,GAAQuF,GAChB45d,EAAUnmc,EAAM,EAChBu1b,EAAY5T,EAAQp1c,EAAM1J,OAAS,EACnCq8C,EA8pIN,SAAiBzgB,EAAOryB,EAAKgud,GAC3B,IAAI/2d,GAAS,EACTR,EAASu3d,EAAWv3d,OAExB,OAASQ,EAAQR,GAAQ,CACvB,IAAIrG,EAAO49d,EAAW/2d,GAClB0M,EAAOvT,EAAKuT,KAEhB,OAAQvT,EAAK+K,MACX,IAAK,OAAak3B,GAAS1uB,EAAM,MACjC,IAAK,YAAa3D,GAAO2D,EAAM,MAC/B,IAAK,OAAa3D,EAAM2yc,GAAU3yc,EAAKqyB,EAAQ1uB,GAAO,MACtD,IAAK,YAAa0uB,EAAQqgb,GAAUrgb,EAAOryB,EAAM2D,GAEpD,CACD,MAAO,CAAE,MAAS0uB,EAAO,IAAOryB,EACjC,CA9qIYg6d,CAAQ,EAAG7Q,EAAWrzd,KAAKg/c,WAClCzib,EAAQygB,EAAKzgB,MACbryB,EAAM8yC,EAAK9yC,IACXvJ,EAASuJ,EAAMqyB,EACfp7B,EAAQ8ie,EAAU/5d,EAAOqyB,EAAQ,EACjCytb,EAAYhqd,KAAK8+c,cACjBqlB,EAAana,EAAUrpd,OACvB02c,EAAW,EACX+sB,EAAYvnB,GAAUl8c,EAAQX,KAAK++c,eAEvC,IAAKU,IAAWwkB,GAAW5Q,GAAa1yd,GAAUyje,GAAazje,EAC7D,OAAOysd,GAAiB/id,EAAOrK,KAAKw+c,aAEtC,IAAIh7c,EAAS,GAEbylL,EACA,KAAOtoL,KAAY02c,EAAW+sB,GAAW,CAMvC,IAHA,IAAIC,GAAa,EACbnme,EAAQmM,EAHZlJ,GAAS28B,KAKAumc,EAAYF,GAAY,CAC/B,IAAI7pe,EAAO0vd,EAAUqa,GACjBttB,EAAWz8c,EAAKy8c,SAChB1xc,EAAO/K,EAAK+K,KACZk+c,EAAWxM,EAAS74c,GAExB,GA7zDY,GA6zDRmH,EACFnH,EAAQqld,OACH,IAAKA,EAAU,CACpB,GAj0Da,GAi0DTl+c,EACF,SAAS4jL,EAET,MAAMA,CAET,CACF,CACDzlL,EAAO6zc,KAAcn5c,CACtB,CACD,OAAOsF,CACR,EA+3dDu6c,GAAO/1c,UAAU68C,GAAKwxa,GACtBtY,GAAO/1c,UAAUmud,MA1iQjB,WACE,OAAOA,GAAMn2d,KACd,EAyiQD+9c,GAAO/1c,UAAUs8d,OA7gQjB,WACE,OAAO,IAAIpmB,GAAcl+c,KAAK9B,QAAS8B,KAAKy+c,UAC7C,EA4gQDV,GAAO/1c,UAAUmD,KAp/PjB,WACMnL,KAAK2+c,aAAeh3c,IACtB3H,KAAK2+c,WAAajxY,GAAQ1tE,KAAK9B,UAEjC,IAAI0wD,EAAO5uD,KAAK0+c,WAAa1+c,KAAK2+c,WAAWh+c,OAG7C,MAAO,CAAE,KAAQiuD,EAAM,MAFXA,EAAOjnD,EAAY3H,KAAK2+c,WAAW3+c,KAAK0+c,aAGrD,EA6+PDX,GAAO/1c,UAAUuod,MA77PjB,SAAsBryd,GAIpB,IAHA,IAAIsF,EACAqH,EAAS7K,KAEN6K,aAAkBwzc,IAAY,CACnC,IAAI/yb,EAAQ6yb,GAAatzc,GACzBygB,EAAMozb,UAAY,EAClBpzb,EAAMqzb,WAAah3c,EACfnE,EACF4J,EAASmxc,YAAcjzb,EAEvB9nB,EAAS8nB,EAEX,IAAIle,EAAWke,EACfzgB,EAASA,EAAO0zc,WACjB,CAED,OADAnxc,EAASmxc,YAAcrgd,EAChBsF,CACR,EA46PDu6c,GAAO/1c,UAAU8yD,QAt5PjB,WACE,IAAI58D,EAAQ8B,KAAKu+c,YACjB,GAAIrgd,aAAiB+/c,GAAa,CAChC,IAAIl+R,EAAU7hL,EAUd,OATI8B,KAAKw+c,YAAY79c,SACnBo/K,EAAU,IAAIk+R,GAAYj+c,QAE5B+/K,EAAUA,EAAQjlH,WACV0jZ,YAAYp+c,KAAK,CACvB,KAAQgwd,GACR,KAAQ,CAACt1Z,IACT,QAAWnzD,IAEN,IAAIu2c,GAAcn+R,EAAS//K,KAAKy+c,UACxC,CACD,OAAOz+c,KAAKowd,KAAKt1Z,GAClB,EAu4PDijZ,GAAO/1c,UAAUwkD,OAASuxZ,GAAO/1c,UAAUukD,QAAUwxZ,GAAO/1c,UAAU9J,MAv3PtE,WACE,OAAOkvd,GAAiBptd,KAAKu+c,YAAav+c,KAAKw+c,YAChD,EAw3PDT,GAAO/1c,UAAU+sC,MAAQgpa,GAAO/1c,UAAUsH,KAEtCusc,KACFkC,GAAO/1c,UAAU6zc,IAj+PnB,WACE,OAAO77c,IACR,GAi+PM+9c,EACR,CAKOxD,GAQN3vc,GAAK9L,EAAIA,IAITyle,EAAAA,WACE,OAAOzle,EADH,mCAjyhBR,EAgzhBAL,KAAKuB,yCCjzhBmEkjB,QAGjE,WAAc,aAEnB,IAAIshd,EA6HArya,EA3HJ,SAASsya,IACL,OAAOD,EAAazsd,MAAM,KAAMD,UACnC,CAID,SAAS4sd,EAAgBnne,GACrBine,EAAejne,CAClB,CAED,SAASuH,EAAQ0V,GACb,OACIA,aAAiB3V,OACyB,mBAA1C7G,OAAOgK,UAAU1K,SAASmB,KAAK+b,EAEtC,CAED,SAAS6F,EAAS7F,GAGd,OACa,MAATA,GAC0C,oBAA1Cxc,OAAOgK,UAAU1K,SAASmB,KAAK+b,EAEtC,CAED,SAASmqd,EAAW5kd,EAAGC,GACnB,OAAOhiB,OAAOgK,UAAU6X,eAAephB,KAAKshB,EAAGC,EAClD,CAED,SAASomB,EAAcjxB,GACnB,GAAInX,OAAO09C,oBACP,OAAkD,IAA3C19C,OAAO09C,oBAAoBvmC,GAAKxU,OAEvC,IAAIqD,EACJ,IAAKA,KAAKmR,EACN,GAAIwvd,EAAWxvd,EAAKnR,GAChB,OAAO,EAGf,OAAO,CAEd,CAED,SAASwrL,EAAYh1K,GACjB,YAAiB,IAAVA,CACV,CAED,SAASuvE,EAASvvE,GACd,MACqB,kBAAVA,GACmC,oBAA1Cxc,OAAOgK,UAAU1K,SAASmB,KAAK+b,EAEtC,CAED,SAASkhD,EAAOlhD,GACZ,OACIA,aAAiB1X,MACyB,kBAA1C9E,OAAOgK,UAAU1K,SAASmB,KAAK+b,EAEtC,CAED,SAASzW,EAAI4sD,EAAK5yD,GACd,IACI4K,EADAyzH,EAAM,GAENwoW,EAASj0a,EAAIhwD,OACjB,IAAKgI,EAAI,EAAGA,EAAIi8d,IAAUj8d,EACtByzH,EAAIh8H,KAAKrC,EAAG4yD,EAAIhoD,GAAIA,IAExB,OAAOyzH,CACV,CAED,SAAS32E,EAAO1lC,EAAGC,GACf,IAAK,IAAIrX,KAAKqX,EACN2kd,EAAW3kd,EAAGrX,KACdoX,EAAEpX,GAAKqX,EAAErX,IAYjB,OARIg8d,EAAW3kd,EAAG,cACdD,EAAEziB,SAAW0iB,EAAE1iB,UAGfqne,EAAW3kd,EAAG,aACdD,EAAEwsC,QAAUvsC,EAAEusC,SAGXxsC,CACV,CAED,SAAS8kd,EAAUrqd,EAAOq9C,EAAQ7B,EAAQ1D,GACtC,OAAOwya,GAAiBtqd,EAAOq9C,EAAQ7B,EAAQ1D,GAAQ,GAAMkpE,KAChE,CAED,SAASupW,IAEL,MAAO,CACHj3a,OAAO,EACPk3a,aAAc,GACdC,YAAa,GACb5hc,UAAW,EACX6hc,cAAe,EACfC,WAAW,EACXC,WAAY,KACZC,aAAc,KACdC,eAAe,EACfC,iBAAiB,EACjBC,KAAK,EACLC,gBAAiB,GACjBC,IAAK,KACLC,SAAU,KACVC,SAAS,EACTC,iBAAiB,EAExB,CAED,SAASC,EAAgB5oe,GAIrB,OAHa,MAATA,EAAE6oe,MACF7oe,EAAE6oe,IAAMhB,KAEL7ne,EAAE6oe,GACZ,CAqBD,SAAS71V,EAAQhzI,GACb,GAAkB,MAAdA,EAAEiwP,SAAkB,CACpB,IAAIlzE,EAAQ6rT,EAAgB5oe,GACxB8oe,EAAc7za,EAAK1zD,KAAKw7K,EAAMwrT,iBAAiB,SAAU98d,GACrD,OAAY,MAALA,CACV,IACDs9d,GACKtqa,MAAMz+D,EAAErC,GAAG66D,YACZukH,EAAM52I,SAAW,IAChB42I,EAAMnsH,QACNmsH,EAAMmrT,aACNnrT,EAAMorT,eACNprT,EAAMisT,iBACNjsT,EAAM4rT,kBACN5rT,EAAMkrT,YACNlrT,EAAMqrT,gBACNrrT,EAAMsrT,mBACLtrT,EAAM0rT,UAAa1rT,EAAM0rT,UAAYK,GAU/C,GARI9oe,EAAEipe,UACFF,EACIA,GACwB,IAAxBhsT,EAAMirT,eACwB,IAA9BjrT,EAAM+qT,aAAarke,aACDgH,IAAlBsyK,EAAMmsT,SAGS,MAAnBpoe,OAAOqoe,UAAqBroe,OAAOqoe,SAASnpe,GAG5C,OAAO+oe,EAFP/oe,EAAEiwP,SAAW84O,CAIpB,CACD,OAAO/oe,EAAEiwP,QACZ,CAED,SAASm5O,EAAcrsT,GACnB,IAAI/8K,EAAI2ne,EAAUl5Y,KAOlB,OANa,MAATsuF,EACAx0H,EAAOqgb,EAAgB5oe,GAAI+8K,GAE3B6rT,EAAgB5oe,GAAGqoe,iBAAkB,EAGlCroe,CACV,CA9DGi1D,EADAttD,MAAMmD,UAAUmqD,KACTttD,MAAMmD,UAAUmqD,KAEhB,SAAUo0a,GACb,IAEI59d,EAFAwb,EAAInmB,OAAOgC,MACXoR,EAAM+S,EAAExjB,SAAW,EAGvB,IAAKgI,EAAI,EAAGA,EAAIyI,EAAKzI,IACjB,GAAIA,KAAKwb,GAAKoid,EAAI9ne,KAAKuB,KAAMmkB,EAAExb,GAAIA,EAAGwb,GAClC,OAAO,EAIf,OAAO,CACV,EAoDL,IAAIqid,EAAoB/B,EAAM+B,iBAAmB,GAC7CC,GAAmB,EAEvB,SAASC,EAAWlvX,EAAIhuG,GACpB,IAAIb,EACA9L,EACA47B,EACAkuc,EAAsBH,EAAiB7le,OAiC3C,GA/BK6uL,EAAYhmL,EAAKo9d,oBAClBpvX,EAAGovX,iBAAmBp9d,EAAKo9d,kBAE1Bp3S,EAAYhmL,EAAK+L,MAClBiiG,EAAGjiG,GAAK/L,EAAK+L,IAEZi6K,EAAYhmL,EAAKq9d,MAClBrvX,EAAGqvX,GAAKr9d,EAAKq9d,IAEZr3S,EAAYhmL,EAAKs9d,MAClBtvX,EAAGsvX,GAAKt9d,EAAKs9d,IAEZt3S,EAAYhmL,EAAK28d,WAClB3uX,EAAG2uX,QAAU38d,EAAK28d,SAEjB32S,EAAYhmL,EAAKu9d,QAClBvvX,EAAGuvX,KAAOv9d,EAAKu9d,MAEdv3S,EAAYhmL,EAAKw9d,UAClBxvX,EAAGwvX,OAASx9d,EAAKw9d,QAEhBx3S,EAAYhmL,EAAKy9d,WAClBzvX,EAAGyvX,QAAUz9d,EAAKy9d,SAEjBz3S,EAAYhmL,EAAKu8d,OAClBvuX,EAAGuuX,IAAMD,EAAgBt8d,IAExBgmL,EAAYhmL,EAAK09d,WAClB1vX,EAAG0vX,QAAU19d,EAAK09d,SAGlBP,EAAsB,EACtB,IAAKh+d,EAAI,EAAGA,EAAIg+d,EAAqBh+d,IAG5B6mL,EADL/2J,EAAMjvB,EADN3M,EAAO2pe,EAAiB79d,OAGpB6uG,EAAG36G,GAAQ47B,GAKvB,OAAO++E,CACV,CAGD,SAAS2vX,EAAOpne,GACZ2me,EAAW1me,KAAMD,GACjBC,KAAKnF,GAAK,IAAIiI,KAAkB,MAAb/C,EAAOlF,GAAakF,EAAOlF,GAAG66D,UAAYi2B,KACxD3rF,KAAKkwI,YACNlwI,KAAKnF,GAAK,IAAIiI,KAAK6oF,OAIE,IAArB86Y,IACAA,GAAmB,EACnBhC,EAAM2C,aAAapne,MACnByme,GAAmB,EAE1B,CAED,SAASY,EAASlyd,GACd,OACIA,aAAegyd,GAAkB,MAAPhyd,GAAuC,MAAxBA,EAAIyxd,gBAEpD,CAED,SAAStqe,EAAK2E,IAEgC,IAAtCwje,EAAM6C,6BACa,qBAAZjre,SACPA,QAAQC,MAERD,QAAQC,KAAK,wBAA0B2E,EAE9C,CAED,SAASw7J,EAAUx7J,EAAKlD,GACpB,IAAIwpe,GAAY,EAEhB,OAAO9hb,GAAO,WAIV,GAHgC,MAA5Bg/a,EAAM+C,oBACN/C,EAAM+C,mBAAmB,KAAMvme,GAE/Bsme,EAAW,CACX,IACI92d,EACA9H,EACArG,EAHA1E,EAAO,GAIP6pe,EAAS3vd,UAAUnX,OACvB,IAAKgI,EAAI,EAAGA,EAAI8+d,EAAQ9+d,IAAK,CAEzB,GADA8H,EAAM,GACsB,kBAAjBqH,UAAUnP,GAAiB,CAElC,IAAKrG,KADLmO,GAAO,MAAQ9H,EAAI,KACPmP,UAAU,GACd6sd,EAAW7sd,UAAU,GAAIxV,KACzBmO,GAAOnO,EAAM,KAAOwV,UAAU,GAAGxV,GAAO,MAGhDmO,EAAMA,EAAI1L,MAAM,GAAI,EACvB,MACG0L,EAAMqH,UAAUnP,GAEpB/K,EAAKwC,KAAKqQ,EACb,CACDnU,EACI2E,EACI,gBACA4D,MAAMmD,UAAUjD,MAAMtG,KAAKb,GAAM6O,KAAK,IACtC,MACA,IAAIlS,OAAQsyY,OAEpB06F,GAAY,CACf,CACD,OAAOxpe,EAAGga,MAAM/X,KAAM8X,UACzB,GAAE/Z,EACN,CAED,IAgFIiB,EAhFA0oe,EAAe,CAAC,EAEpB,SAASC,EAAgBvue,EAAM6H,GACK,MAA5Bwje,EAAM+C,oBACN/C,EAAM+C,mBAAmBpue,EAAM6H,GAE9Byme,EAAatue,KACdkD,EAAK2E,GACLyme,EAAatue,IAAQ,EAE5B,CAKD,SAASy1D,EAAWr0C,GAChB,MACyB,qBAAbm7b,UAA4Bn7b,aAAiBm7b,UACX,sBAA1C33c,OAAOgK,UAAU1K,SAASmB,KAAK+b,EAEtC,CAED,SAASrhB,EAAI4G,GACT,IAAIlD,EAAM8L,EACV,IAAKA,KAAK5I,EACF4ke,EAAW5ke,EAAQ4I,KAEfkmD,EADJhyD,EAAOkD,EAAO4I,IAEV3I,KAAK2I,GAAK9L,EAEVmD,KAAK,IAAM2I,GAAK9L,GAI5BmD,KAAK4ne,QAAU7ne,EAIfC,KAAK6ne,+BAAiC,IAAIjwc,QACrC53B,KAAK8ne,wBAAwBvgc,QAAUvnC,KAAK+ne,cAAcxgc,QACvD,IACA,UAAUA,OAErB,CAED,SAASygc,EAAaC,EAAcC,GAChC,IACIrre,EADAu/H,EAAM32E,EAAO,CAAC,EAAGwib,GAErB,IAAKpre,KAAQqre,EACLvD,EAAWuD,EAAarre,KACpBwjB,EAAS4nd,EAAapre,KAAUwjB,EAAS6nd,EAAYrre,KACrDu/H,EAAIv/H,GAAQ,CAAC,EACb4oD,EAAO22E,EAAIv/H,GAAOore,EAAapre,IAC/B4oD,EAAO22E,EAAIv/H,GAAOqre,EAAYrre,KACF,MAArBqre,EAAYrre,GACnBu/H,EAAIv/H,GAAQqre,EAAYrre,UAEjBu/H,EAAIv/H,IAIvB,IAAKA,KAAQore,EAELtD,EAAWsD,EAAcpre,KACxB8ne,EAAWuD,EAAarre,IACzBwjB,EAAS4nd,EAAapre,MAGtBu/H,EAAIv/H,GAAQ4oD,EAAO,CAAC,EAAG22E,EAAIv/H,KAGnC,OAAOu/H,CACV,CAED,SAAS+rW,EAAOpoe,GACE,MAAVA,GACAC,KAAK7G,IAAI4G,EAEhB,CAlED0ke,EAAM6C,6BAA8B,EACpC7C,EAAM+C,mBAAqB,KAsEvBxoe,EADAhB,OAAOgB,KACAhB,OAAOgB,KAEP,SAAUmW,GACb,IAAIxM,EACAyzH,EAAM,GACV,IAAKzzH,KAAKwM,EACFwvd,EAAWxvd,EAAKxM,IAChByzH,EAAIh8H,KAAKuI,GAGjB,OAAOyzH,CACV,EAGL,IAAIgsW,EAAkB,CAClBC,QAAS,gBACTruG,QAAS,mBACTC,SAAU,eACVz9G,QAAS,oBACT8rN,SAAU,sBACVC,SAAU,KAGd,SAASjzN,EAAShzQ,EAAKkme,EAAKjla,GACxB,IAAI/+D,EAASxE,KAAKw4X,UAAUl2X,IAAQtC,KAAKw4X,UAAL,SACpC,OAAO3pU,EAAWrqD,GAAUA,EAAO/F,KAAK+pe,EAAKjla,GAAO/+D,CACvD,CAED,SAASike,EAASz0c,EAAQ0mG,EAAcguW,GACpC,IAAIC,EAAY,GAAKp/d,KAAKD,IAAI0qB,GAC1B40c,EAAcluW,EAAeiuW,EAAUhoe,OAE3C,OADWqzB,GAAU,EAER00c,EAAY,IAAM,GAAM,KACjCn/d,KAAKkZ,IAAI,GAAIlZ,KAAKkuB,IAAI,EAAGmxc,IAActre,WAAW0H,OAAO,GACzD2je,CAEP,CAED,IAAIE,EACI,yMACJC,EAAwB,6CACxBC,EAAkB,CAAC,EACnBC,EAAuB,CAAC,EAM5B,SAASC,EAAe39d,EAAO49d,EAAQ9tW,EAAS79H,GAC5C,IAAIwT,EAAOxT,EACa,kBAAbA,IACPwT,EAAO,WACH,OAAO/Q,KAAKzC,IACf,GAED+N,IACA09d,EAAqB19d,GAASyF,GAE9Bm4d,IACAF,EAAqBE,EAAO,IAAM,WAC9B,OAAOT,EAAS13d,EAAKgH,MAAM/X,KAAM8X,WAAYoxd,EAAO,GAAIA,EAAO,GAClE,GAED9tW,IACA4tW,EAAqB5tW,GAAW,WAC5B,OAAOp7H,KAAKorH,aAAagQ,QACrBrqH,EAAKgH,MAAM/X,KAAM8X,WACjBxM,EAEP,EAER,CAED,SAAS69d,EAAuB3ud,GAC5B,OAAIA,EAAMvL,MAAM,YACLuL,EAAM5Y,QAAQ,WAAY,IAE9B4Y,EAAM5Y,QAAQ,MAAO,GAC/B,CAED,SAASwne,EAAmBvxa,GACxB,IACIlvD,EACAhI,EAFA0J,EAAQwtD,EAAO5oD,MAAM45d,GAIzB,IAAKlge,EAAI,EAAGhI,EAAS0J,EAAM1J,OAAQgI,EAAIhI,EAAQgI,IACvCqge,EAAqB3+d,EAAM1B,IAC3B0B,EAAM1B,GAAKqge,EAAqB3+d,EAAM1B,IAEtC0B,EAAM1B,GAAKwge,EAAuB9+d,EAAM1B,IAIhD,OAAO,SAAU6/d,GACb,IACI7/d,EADAnE,EAAS,GAEb,IAAKmE,EAAI,EAAGA,EAAIhI,EAAQgI,IACpBnE,GAAUqqD,EAAWxkD,EAAM1B,IACrB0B,EAAM1B,GAAGlK,KAAK+pe,EAAK3wa,GACnBxtD,EAAM1B,GAEhB,OAAOnE,CACV,CACJ,CAGD,SAAS6ke,EAAanse,EAAG26D,GACrB,OAAK36D,EAAEgzI,WAIPr4E,EAASyxa,EAAazxa,EAAQ36D,EAAEkuH,cAChC29W,EAAgBlxa,GACZkxa,EAAgBlxa,IAAWuxa,EAAmBvxa,GAE3Ckxa,EAAgBlxa,GAAQ36D,IAPpBA,EAAEkuH,aAAam+W,aAQ7B,CAED,SAASD,EAAazxa,EAAQ7B,GAC1B,IAAIrtD,EAAI,EAER,SAAS6ge,EAA4Bhvd,GACjC,OAAOw7C,EAAOyza,eAAejvd,IAAUA,CAC1C,CAGD,IADAsud,EAAsB9yd,UAAY,EAC3BrN,GAAK,GAAKmge,EAAsB1yd,KAAKyhD,IACxCA,EAASA,EAAOj2D,QACZkne,EACAU,GAEJV,EAAsB9yd,UAAY,EAClCrN,GAAK,EAGT,OAAOkvD,CACV,CAED,IAAI6xa,EAAwB,CACxBC,IAAK,YACLC,GAAI,SACJ7iZ,EAAG,aACH8iZ,GAAI,eACJC,IAAK,sBACLC,KAAM,6BAGV,SAASN,EAAenne,GACpB,IAAIu1D,EAAS73D,KAAKgqe,gBAAgB1ne,GAC9B2ne,EAAcjqe,KAAKgqe,gBAAgB1ne,EAAIokC,eAE3C,OAAImxB,IAAWoya,EACJpya,GAGX73D,KAAKgqe,gBAAgB1ne,GAAO2ne,EACvBh7d,MAAM45d,GACN9ke,KAAI,SAAUmme,GACX,MACY,SAARA,GACQ,OAARA,GACQ,OAARA,GACQ,SAARA,EAEOA,EAAInle,MAAM,GAEdmle,CACV,IACAz9d,KAAK,IAEHzM,KAAKgqe,gBAAgB1ne,GAC/B,CAED,IAAI6ne,EAAqB,eAEzB,SAASZ,IACL,OAAOvpe,KAAKoqe,YACf,CAED,IAAIC,EAAiB,KACjBC,EAAgC,UAEpC,SAASlvW,EAAQpnG,GACb,OAAOh0B,KAAKuqe,SAAS3oe,QAAQ,KAAMoyB,EACtC,CAED,IAAIw2c,EAAsB,CACtBC,OAAQ,QACRC,KAAM,SACNnyc,EAAG,gBACHoyc,GAAI,aACJzte,EAAG,WACH0te,GAAI,aACJ3ue,EAAG,UACH4ue,GAAI,WACJrnd,EAAG,QACHsnd,GAAI,UACJ/oX,EAAG,SACHgpX,GAAI,WACJpkZ,EAAG,UACHqkZ,GAAI,YACJh9d,EAAG,SACHi9d,GAAI,YAGR,SAASC,EAAal3c,EAAQm3c,EAAe/1d,EAAQg2d,GACjD,IAAI5me,EAASxE,KAAKqre,cAAcj2d,GAChC,OAAOy5C,EAAWrqD,GACZA,EAAOwvB,EAAQm3c,EAAe/1d,EAAQg2d,GACtC5me,EAAO5C,QAAQ,MAAOoyB,EAC/B,CAED,SAASs3c,GAAW3pZ,EAAMn9E,GACtB,IAAIqzD,EAAS73D,KAAKqre,cAAc1pZ,EAAO,EAAI,SAAW,QACtD,OAAO9yB,EAAWgJ,GAAUA,EAAOrzD,GAAUqzD,EAAOj2D,QAAQ,MAAO4C,EACtE,CAED,IAAIg5B,GAAU,CAAC,EAEf,SAAS+tc,GAAazvc,EAAM0vc,GACxB,IAAIvR,EAAYn+b,EAAKtnB,cACrBgpB,GAAQy8b,GAAaz8b,GAAQy8b,EAAY,KAAOz8b,GAAQguc,GAAa1vc,CACxE,CAED,SAAS2vc,GAAeC,GACpB,MAAwB,kBAAVA,EACRluc,GAAQkuc,IAAUluc,GAAQkuc,EAAMl3d,oBAChC7M,CACT,CAED,SAASgke,GAAqBC,GAC1B,IACIC,EACAhve,EAFAive,EAAkB,CAAC,EAIvB,IAAKjve,KAAQ+ue,EACLjH,EAAWiH,EAAa/ue,KACxBgve,EAAiBJ,GAAe5ue,MAE5Bive,EAAgBD,GAAkBD,EAAY/ue,IAK1D,OAAOive,CACV,CAED,IAAIC,GAAa,CAAC,EAElB,SAASC,GAAgBlwc,EAAMmwc,GAC3BF,GAAWjwc,GAAQmwc,CACtB,CAED,SAASC,GAAoBC,GACzB,IACIvwd,EADA8vd,EAAQ,GAEZ,IAAK9vd,KAAKuwd,EACFxH,EAAWwH,EAAUvwd,IACrB8vd,EAAMtre,KAAK,CAAE07B,KAAMlgB,EAAGqwd,SAAUF,GAAWnwd,KAMnD,OAHA8vd,EAAMtyc,MAAK,SAAUrZ,EAAGC,GACpB,OAAOD,EAAEksd,SAAWjsd,EAAEisd,QACzB,IACMP,CACV,CAED,SAASU,GAAWvuZ,GAChB,OAAQA,EAAO,IAAM,GAAKA,EAAO,MAAQ,GAAMA,EAAO,MAAQ,CACjE,CAED,SAASwuZ,GAASr4c,GACd,OAAIA,EAAS,EAEFzqB,KAAKq7E,KAAK5wD,IAAW,EAErBzqB,KAAKo/D,MAAM30C,EAEzB,CAED,SAASs4c,GAAMC,GACX,IAAIC,GAAiBD,EACjBrue,EAAQ,EAMZ,OAJsB,IAAlBsue,GAAuBr7a,SAASq7a,KAChCtue,EAAQmue,GAASG,IAGdtue,CACV,CAED,SAASuue,GAAW3wc,EAAM4wc,GACtB,OAAO,SAAUxue,GACb,OAAa,MAATA,GACAyue,GAAM3se,KAAM87B,EAAM59B,GAClBume,EAAM2C,aAAapne,KAAM0se,GAClB1se,MAEApG,GAAIoG,KAAM87B,EAExB,CACJ,CAED,SAASliC,GAAI4ue,EAAK1sc,GACd,OAAO0sc,EAAIt4V,UACLs4V,EAAI3te,GAAG,OAAS2te,EAAIxB,OAAS,MAAQ,IAAMlrc,KAC3C6vD,GACT,CAED,SAASghZ,GAAMnE,EAAK1sc,EAAM59B,GAClBsqe,EAAIt4V,YAAcv0E,MAAMz9D,KAEX,aAAT49B,GACAswc,GAAW5D,EAAI3qZ,SACC,IAAhB2qZ,EAAIt0c,SACW,KAAfs0c,EAAIv0c,QAEJ/1B,EAAQoue,GAAMpue,GACdsqe,EAAI3te,GAAG,OAAS2te,EAAIxB,OAAS,MAAQ,IAAMlrc,GACvC59B,EACAsqe,EAAIt0c,QACJ04c,GAAY1ue,EAAOsqe,EAAIt0c,WAG3Bs0c,EAAI3te,GAAG,OAAS2te,EAAIxB,OAAS,MAAQ,IAAMlrc,GAAM59B,GAG5D,CAID,SAAS2ue,GAAUnB,GAEf,OAAI78a,EAAW7uD,KADf0re,EAAQD,GAAeC,KAEZ1re,KAAK0re,KAET1re,IACV,CAED,SAAS8se,GAAUpB,EAAOxte,GACtB,GAAqB,kBAAVwte,EAAoB,CAE3B,IACI/ie,EADAoke,EAAcb,GADlBR,EAAQC,GAAqBD,IAGzBsB,EAAiBD,EAAYpse,OACjC,IAAKgI,EAAI,EAAGA,EAAIqke,EAAgBrke,IAC5B3I,KAAK+se,EAAYpke,GAAGmzB,MAAM4vc,EAAMqB,EAAYpke,GAAGmzB,MAEtD,MAEG,GAAI+yB,EAAW7uD,KADf0re,EAAQD,GAAeC,KAEnB,OAAO1re,KAAK0re,GAAOxte,GAG3B,OAAO8B,IACV,CAED,IAoBIite,GApBAC,GAAS,KACTC,GAAS,OACTC,GAAS,QACTC,GAAS,QACTC,GAAS,aACTC,GAAY,QACZC,GAAY,YACZC,GAAY,gBACZC,GAAY,UACZC,GAAY,UACZC,GAAY,eACZC,GAAgB,MAChBC,GAAc,WACdC,GAAc,qBACdC,GAAmB,0BACnBC,GAAiB,uBAGjBC,GACI,wJAKR,SAASC,GAAc7ie,EAAOo/G,EAAO0jX,GACjCnB,GAAQ3he,GAASujD,EAAW67D,GACtBA,EACA,SAAU45V,EAAUl5V,GAChB,OAAOk5V,GAAY8pB,EAAcA,EAAc1jX,CAClD,CACV,CAED,SAAS2jX,GAAsB/ie,EAAOvL,GAClC,OAAK4ke,EAAWsI,GAAS3he,GAIlB2he,GAAQ3he,GAAOvL,EAAOome,QAASpme,EAAOmne,SAHlC,IAAItvc,OAAO02c,GAAehje,GAIxC,CAGD,SAASgje,GAAe/1c,GACpB,OAAOg2c,GACHh2c,EACK32B,QAAQ,KAAM,IACdA,QACG,uCACA,SAAU4se,EAAS95d,EAAIC,EAAI85d,EAAIC,GAC3B,OAAOh6d,GAAMC,GAAM85d,GAAMC,CAC5B,IAGhB,CAED,SAASH,GAAYh2c,GACjB,OAAOA,EAAE32B,QAAQ,yBAA0B,OAC9C,CAlCDqre,GAAU,CAAC,EAoCX,IAAIvwW,GAAS,CAAC,EAEd,SAASiyW,GAAcrje,EAAO/N,GAC1B,IAAIoL,EAEAime,EADA79d,EAAOxT,EAWX,IATqB,kBAAV+N,IACPA,EAAQ,CAACA,IAETy+E,EAASxsF,KACTwT,EAAO,SAAUyJ,EAAOnQ,GACpBA,EAAM9M,GAAY+ue,GAAM9xd,EAC3B,GAELo0d,EAAWtje,EAAM3K,OACZgI,EAAI,EAAGA,EAAIime,EAAUjme,IACtB+zH,GAAOpxH,EAAM3C,IAAMoI,CAE1B,CAED,SAAS89d,GAAkBvje,EAAO/N,GAC9Boxe,GAAcrje,GAAO,SAAUkP,EAAOnQ,EAAOtK,EAAQuL,GACjDvL,EAAO+ue,GAAK/ue,EAAO+ue,IAAM,CAAC,EAC1Bvxe,EAASid,EAAOza,EAAO+ue,GAAI/ue,EAAQuL,EACtC,GACJ,CAED,SAASyje,GAAwBzje,EAAOkP,EAAOza,GAC9B,MAATya,GAAiBmqd,EAAWjoW,GAAQpxH,IACpCoxH,GAAOpxH,GAAOkP,EAAOza,EAAOrF,GAAIqF,EAAQuL,EAE/C,CAED,IAcIlK,GAdA4te,GAAO,EACPl4V,GAAQ,EACRm4V,GAAO,EACPC,GAAO,EACPC,GAAS,EACTC,GAAS,EACTC,GAAc,EACdz4V,GAAO,EACP04V,GAAU,EAEd,SAASt0W,GAAI/2G,EAAGlW,GACZ,OAASkW,EAAIlW,EAAKA,GAAKA,CAC1B,CAmBD,SAAS6+d,GAAY/uZ,EAAM3pD,GACvB,GAAIynC,MAAMkiB,IAASliB,MAAMznC,GACrB,OAAOy3D,IAEX,IAAI4jZ,EAAWv0W,GAAI9mG,EAAO,IAE1B,OADA2pD,IAAS3pD,EAAQq7c,GAAY,GACT,IAAbA,EACDnD,GAAWvuZ,GACP,GACA,GACJ,GAAO0xZ,EAAW,EAAK,CAChC,CAzBGnue,GADAyD,MAAMmD,UAAU5G,QACNyD,MAAMmD,UAAU5G,QAEhB,SAAUs/H,GAEhB,IAAI/3H,EACJ,IAAKA,EAAI,EAAGA,EAAI3I,KAAKW,SAAUgI,EAC3B,GAAI3I,KAAK2I,KAAO+3H,EACZ,OAAO/3H,EAGf,OAAQ,CACX,EAkBLsge,EAAe,IAAK,CAAC,KAAM,GAAI,MAAM,WACjC,OAAOjpe,KAAKk0B,QAAU,CACzB,IAED+0c,EAAe,MAAO,EAAG,GAAG,SAAUpxa,GAClC,OAAO73D,KAAKorH,aAAaokX,YAAYxve,KAAM63D,EAC9C,IAEDoxa,EAAe,OAAQ,EAAG,GAAG,SAAUpxa,GACnC,OAAO73D,KAAKorH,aAAatrC,OAAO9/E,KAAM63D,EACzC,IAID0za,GAAa,QAAS,KAItBS,GAAgB,QAAS,GAIzBmC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAO,SAAU7pB,EAAUtuZ,GACrC,OAAOA,EAAOy5a,iBAAiBnrB,EAClC,IACD6pB,GAAc,QAAQ,SAAU7pB,EAAUtuZ,GACtC,OAAOA,EAAO05a,YAAYprB,EAC7B,IAEDqqB,GAAc,CAAC,IAAK,OAAO,SAAUn0d,EAAOnQ,GACxCA,EAAMysI,IAASw1V,GAAM9xd,GAAS,CACjC,IAEDm0d,GAAc,CAAC,MAAO,SAAS,SAAUn0d,EAAOnQ,EAAOtK,EAAQuL,GAC3D,IAAI4oB,EAAQn0B,EAAOmne,QAAQyI,YAAYn1d,EAAOlP,EAAOvL,EAAOome,SAE/C,MAATjyc,EACA7pB,EAAMysI,IAAS5iH,EAEf4xc,EAAgB/le,GAAQsle,aAAe7qd,CAE9C,IAID,IAAIo1d,GACI,wFAAwFvte,MACpF,KAERwte,GACI,kDAAkDxte,MAAM,KAC5Dyte,GAAmB,gCACnBC,GAA0B7B,GAC1B8B,GAAqB9B,GAEzB,SAAS+B,GAAa/ye,EAAG26D,GACrB,OAAK36D,EAKE4H,EAAQ9E,KAAKkwe,SACdlwe,KAAKkwe,QAAQhze,EAAEg3B,SACfl0B,KAAKkwe,SACAlwe,KAAKkwe,QAAQC,UAAYL,IAAkB15d,KAAKyhD,GAC3C,SACA,cACR36D,EAAEg3B,SAVCpvB,EAAQ9E,KAAKkwe,SACdlwe,KAAKkwe,QACLlwe,KAAKkwe,QAAL,UASb,CAED,SAASE,GAAkBlze,EAAG26D,GAC1B,OAAK36D,EAKE4H,EAAQ9E,KAAKqwe,cACdrwe,KAAKqwe,aAAanze,EAAEg3B,SACpBl0B,KAAKqwe,aACDP,GAAiB15d,KAAKyhD,GAAU,SAAW,cAC7C36D,EAAEg3B,SARCpvB,EAAQ9E,KAAKqwe,cACdrwe,KAAKqwe,aACLrwe,KAAKqwe,aAAL,UAOb,CAED,SAASC,GAAkBC,EAAW14a,EAAQvF,GAC1C,IAAI3pD,EACAmoG,EACA03X,EACAgI,EAAMD,EAAUtse,oBACpB,IAAKjE,KAAKywe,aAKN,IAHAzwe,KAAKywe,aAAe,GACpBzwe,KAAK0we,iBAAmB,GACxB1we,KAAK2we,kBAAoB,GACpBhoe,EAAI,EAAGA,EAAI,KAAMA,EAClB6/d,EAAM3D,EAAU,CAAC,IAAMl8d,IACvB3I,KAAK2we,kBAAkBhoe,GAAK3I,KAAKwve,YAC7BhH,EACA,IACFvke,oBACFjE,KAAK0we,iBAAiB/ne,GAAK3I,KAAK8/E,OAAO0oZ,EAAK,IAAIvke,oBAIxD,OAAIquD,EACe,QAAXuF,GAEe,KADfi5C,EAAK1vG,GAAQ3C,KAAKuB,KAAK2we,kBAAmBH,IACvB1/X,EAAK,MAGT,KADfA,EAAK1vG,GAAQ3C,KAAKuB,KAAK0we,iBAAkBF,IACtB1/X,EAAK,KAGb,QAAXj5C,GAEY,KADZi5C,EAAK1vG,GAAQ3C,KAAKuB,KAAK2we,kBAAmBH,MAK3B,KADf1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK0we,iBAAkBF,IAF9B1/X,EAGa,MAGZ,KADZA,EAAK1vG,GAAQ3C,KAAKuB,KAAK0we,iBAAkBF,MAK1B,KADf1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK2we,kBAAmBH,IAF/B1/X,EAGa,IAGnC,CAED,SAAS8/X,GAAkBL,EAAW14a,EAAQvF,GAC1C,IAAI3pD,EAAG6/d,EAAK99W,EAEZ,GAAI1qH,KAAK6we,kBACL,OAAOP,GAAkB7xe,KAAKuB,KAAMuwe,EAAW14a,EAAQvF,GAY3D,IATKtyD,KAAKywe,eACNzwe,KAAKywe,aAAe,GACpBzwe,KAAK0we,iBAAmB,GACxB1we,KAAK2we,kBAAoB,IAMxBhoe,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAmBrB,GAjBA6/d,EAAM3D,EAAU,CAAC,IAAMl8d,IACnB2pD,IAAWtyD,KAAK0we,iBAAiB/ne,KACjC3I,KAAK0we,iBAAiB/ne,GAAK,IAAIivB,OAC3B,IAAM53B,KAAK8/E,OAAO0oZ,EAAK,IAAI5me,QAAQ,IAAK,IAAM,IAC9C,KAEJ5B,KAAK2we,kBAAkBhoe,GAAK,IAAIivB,OAC5B,IAAM53B,KAAKwve,YAAYhH,EAAK,IAAI5me,QAAQ,IAAK,IAAM,IACnD,MAGH0wD,GAAWtyD,KAAKywe,aAAa9ne,KAC9B+hH,EACI,IAAM1qH,KAAK8/E,OAAO0oZ,EAAK,IAAM,KAAOxoe,KAAKwve,YAAYhH,EAAK,IAC9Dxoe,KAAKywe,aAAa9ne,GAAK,IAAIivB,OAAO8yF,EAAM9oH,QAAQ,IAAK,IAAK,MAI1D0wD,GACW,SAAXuF,GACA73D,KAAK0we,iBAAiB/ne,GAAGyN,KAAKm6d,GAE9B,OAAO5ne,EACJ,GACH2pD,GACW,QAAXuF,GACA73D,KAAK2we,kBAAkBhoe,GAAGyN,KAAKm6d,GAE/B,OAAO5ne,EACJ,IAAK2pD,GAAUtyD,KAAKywe,aAAa9ne,GAAGyN,KAAKm6d,GAC5C,OAAO5ne,CAEd,CACJ,CAID,SAASq2E,GAASwpZ,EAAKtqe,GACnB,IAAI4ye,EAEJ,IAAKtI,EAAIt4V,UAEL,OAAOs4V,EAGX,GAAqB,kBAAVtqe,EACP,GAAI,QAAQkY,KAAKlY,GACbA,EAAQoue,GAAMpue,QAId,IAAK6rF,EAFL7rF,EAAQsqe,EAAIp9W,aAAaukX,YAAYzxe,IAGjC,OAAOsqe,EAOnB,OAFAsI,EAAavne,KAAKsZ,IAAI2ld,EAAIv0c,OAAQ24c,GAAYpE,EAAI3qZ,OAAQ3/E,IAC1Dsqe,EAAI3te,GAAG,OAAS2te,EAAIxB,OAAS,MAAQ,IAAM,SAAS9oe,EAAO4ye,GACpDtI,CACV,CAED,SAASuI,GAAY7ye,GACjB,OAAa,MAATA,GACA8gF,GAASh/E,KAAM9B,GACfume,EAAM2C,aAAapne,MAAM,GAClBA,MAEApG,GAAIoG,KAAM,QAExB,CAED,SAASgxe,KACL,OAAOpE,GAAY5se,KAAK69E,OAAQ79E,KAAKk0B,QACxC,CAED,SAASu7c,GAAiBnrB,GACtB,OAAItkd,KAAK6we,mBACAlM,EAAW3ke,KAAM,iBAClBixe,GAAmBxye,KAAKuB,MAExBskd,EACOtkd,KAAKkxe,wBAELlxe,KAAKmxe,oBAGXxM,EAAW3ke,KAAM,uBAClBA,KAAKmxe,kBAAoBpB,IAEtB/ve,KAAKkxe,yBAA2B5sB,EACjCtkd,KAAKkxe,wBACLlxe,KAAKmxe,kBAElB,CAED,SAASzB,GAAYprB,GACjB,OAAItkd,KAAK6we,mBACAlM,EAAW3ke,KAAM,iBAClBixe,GAAmBxye,KAAKuB,MAExBskd,EACOtkd,KAAKoxe,mBAELpxe,KAAKqxe,eAGX1M,EAAW3ke,KAAM,kBAClBA,KAAKqxe,aAAerB,IAEjBhwe,KAAKoxe,oBAAsB9sB,EAC5Btkd,KAAKoxe,mBACLpxe,KAAKqxe,aAElB,CAED,SAASJ,KACL,SAASK,EAAUvxd,EAAGC,GAClB,OAAOA,EAAErf,OAASof,EAAEpf,MACvB,CAED,IAGIgI,EACA6/d,EAJA+I,EAAc,GACdC,EAAa,GACbC,EAAc,GAGlB,IAAK9oe,EAAI,EAAGA,EAAI,GAAIA,IAEhB6/d,EAAM3D,EAAU,CAAC,IAAMl8d,IACvB4oe,EAAYnxe,KAAKJ,KAAKwve,YAAYhH,EAAK,KACvCgJ,EAAWpxe,KAAKJ,KAAK8/E,OAAO0oZ,EAAK,KACjCiJ,EAAYrxe,KAAKJ,KAAK8/E,OAAO0oZ,EAAK,KAClCiJ,EAAYrxe,KAAKJ,KAAKwve,YAAYhH,EAAK,KAO3C,IAHA+I,EAAYn4c,KAAKk4c,GACjBE,EAAWp4c,KAAKk4c,GAChBG,EAAYr4c,KAAKk4c,GACZ3oe,EAAI,EAAGA,EAAI,GAAIA,IAChB4oe,EAAY5oe,GAAK4le,GAAYgD,EAAY5oe,IACzC6oe,EAAW7oe,GAAK4le,GAAYiD,EAAW7oe,IAE3C,IAAKA,EAAI,EAAGA,EAAI,GAAIA,IAChB8oe,EAAY9oe,GAAK4le,GAAYkD,EAAY9oe,IAG7C3I,KAAKqxe,aAAe,IAAIz5c,OAAO,KAAO65c,EAAYhle,KAAK,KAAO,IAAK,KACnEzM,KAAKmxe,kBAAoBnxe,KAAKqxe,aAC9Brxe,KAAKoxe,mBAAqB,IAAIx5c,OAC1B,KAAO45c,EAAW/ke,KAAK,KAAO,IAC9B,KAEJzM,KAAKkxe,wBAA0B,IAAIt5c,OAC/B,KAAO25c,EAAY9ke,KAAK,KAAO,IAC/B,IAEP,CA+CD,SAASile,GAAW7zZ,GAChB,OAAOuuZ,GAAWvuZ,GAAQ,IAAM,GACnC,CA7CDorZ,EAAe,IAAK,EAAG,GAAG,WACtB,IAAIj7d,EAAIhO,KAAK69E,OACb,OAAO7vE,GAAK,KAAOy6d,EAASz6d,EAAG,GAAK,IAAMA,CAC7C,IAEDi7d,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOjpe,KAAK69E,OAAS,GACxB,IAEDorZ,EAAe,EAAG,CAAC,OAAQ,GAAI,EAAG,QAClCA,EAAe,EAAG,CAAC,QAAS,GAAI,EAAG,QACnCA,EAAe,EAAG,CAAC,SAAU,GAAG,GAAO,EAAG,QAI1CsC,GAAa,OAAQ,KAIrBS,GAAgB,OAAQ,GAIxBmC,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,SAAUP,GAAWN,IAEnCqB,GAAc,CAAC,QAAS,UAAWK,IACnCL,GAAc,QAAQ,SAAUn0d,EAAOnQ,GACnCA,EAAM2ke,IACe,IAAjBx0d,EAAM7Z,OAAe8je,EAAMkN,kBAAkBn3d,GAAS8xd,GAAM9xd,EACnE,IACDm0d,GAAc,MAAM,SAAUn0d,EAAOnQ,GACjCA,EAAM2ke,IAAQvK,EAAMkN,kBAAkBn3d,EACzC,IACDm0d,GAAc,KAAK,SAAUn0d,EAAOnQ,GAChCA,EAAM2ke,IAAQl3c,SAAStd,EAAO,GACjC,IAUDiqd,EAAMkN,kBAAoB,SAAUn3d,GAChC,OAAO8xd,GAAM9xd,IAAU8xd,GAAM9xd,GAAS,GAAK,KAAO,IACrD,EAID,IAAIo3d,GAAanF,GAAW,YAAY,GAExC,SAASoF,KACL,OAAOzF,GAAWpse,KAAK69E,OAC1B,CAED,SAAS62C,GAAW1mH,EAAG9Q,EAAGsmB,EAAGvnB,EAAG0qF,EAAGpuD,EAAGwtC,GAGlC,IAAI9xC,EAYJ,OAVIjmB,EAAI,KAAOA,GAAK,GAEhBimB,EAAO,IAAInxB,KAAKkL,EAAI,IAAK9Q,EAAGsmB,EAAGvnB,EAAG0qF,EAAGpuD,EAAGwtC,GACpC5U,SAASl9B,EAAK2rD,gBACd3rD,EAAK0rD,YAAY3xE,IAGrBimB,EAAO,IAAInxB,KAAKkL,EAAG9Q,EAAGsmB,EAAGvnB,EAAG0qF,EAAGpuD,EAAGwtC,GAG/B9xC,CACV,CAED,SAASq8F,GAActiH,GACnB,IAAIimB,EAAMr2B,EAcV,OAZIoQ,EAAI,KAAOA,GAAK,IAChBpQ,EAAOiH,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,YAE7B,GAAK9J,EAAI,IACdimB,EAAO,IAAInxB,KAAKA,KAAKs+E,IAAIrpE,MAAM,KAAMna,IACjCuzD,SAASl9B,EAAKs8F,mBACdt8F,EAAK69c,eAAe9je,IAGxBimB,EAAO,IAAInxB,KAAKA,KAAKs+E,IAAIrpE,MAAM,KAAMD,YAGlCmc,CACV,CAGD,SAAS89c,GAAgBl0Z,EAAMm0Z,EAAKC,GAChC,IACIC,EAAM,EAAIF,EAAMC,EAIpB,QAFa,EAAI3hX,GAAczyC,EAAM,EAAGq0Z,GAAK72W,YAAc22W,GAAO,EAElDE,EAAM,CACzB,CAGD,SAASC,GAAmBt0Z,EAAM1pD,EAAMwxF,EAASqsX,EAAKC,GAClD,IAGIG,EACAC,EAFAC,EAAY,EAAI,GAAKn+c,EAAO,IAFZ,EAAIwxF,EAAUqsX,GAAO,EACxBD,GAAgBl0Z,EAAMm0Z,EAAKC,GAgB5C,OAXIK,GAAa,EAEbD,EAAeX,GADfU,EAAUv0Z,EAAO,GACoBy0Z,EAC9BA,EAAYZ,GAAW7zZ,IAC9Bu0Z,EAAUv0Z,EAAO,EACjBw0Z,EAAeC,EAAYZ,GAAW7zZ,KAEtCu0Z,EAAUv0Z,EACVw0Z,EAAeC,GAGZ,CACHz0Z,KAAMu0Z,EACNE,UAAWD,EAElB,CAED,SAASE,GAAW/J,EAAKwJ,EAAKC,GAC1B,IAEIO,EACAJ,EAHAK,EAAaV,GAAgBvJ,EAAI3qZ,OAAQm0Z,EAAKC,GAC9C99c,EAAO5qB,KAAKo/D,OAAO6/Z,EAAI8J,YAAcG,EAAa,GAAK,GAAK,EAehE,OAXIt+c,EAAO,EAEPq+c,EAAUr+c,EAAOu+c,GADjBN,EAAU5J,EAAI3qZ,OAAS,EACem0Z,EAAKC,GACpC99c,EAAOu+c,GAAYlK,EAAI3qZ,OAAQm0Z,EAAKC,IAC3CO,EAAUr+c,EAAOu+c,GAAYlK,EAAI3qZ,OAAQm0Z,EAAKC,GAC9CG,EAAU5J,EAAI3qZ,OAAS,IAEvBu0Z,EAAU5J,EAAI3qZ,OACd20Z,EAAUr+c,GAGP,CACHA,KAAMq+c,EACN30Z,KAAMu0Z,EAEb,CAED,SAASM,GAAY70Z,EAAMm0Z,EAAKC,GAC5B,IAAIQ,EAAaV,GAAgBl0Z,EAAMm0Z,EAAKC,GACxCU,EAAiBZ,GAAgBl0Z,EAAO,EAAGm0Z,EAAKC,GACpD,OAAQP,GAAW7zZ,GAAQ40Z,EAAaE,GAAkB,CAC7D,CAmCD,SAASC,GAAWpK,GAChB,OAAO+J,GAAW/J,EAAKxoe,KAAK6ye,MAAMb,IAAKhye,KAAK6ye,MAAMZ,KAAK99c,IAC1D,CAjCD80c,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QACrCA,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,WAIrCsC,GAAa,OAAQ,KACrBA,GAAa,UAAW,KAIxBS,GAAgB,OAAQ,GACxBA,GAAgB,UAAW,GAI3BmC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAE/B0B,GACI,CAAC,IAAK,KAAM,IAAK,OACjB,SAAUr0d,EAAO2Z,EAAMp0B,EAAQuL,GAC3B6oB,EAAK7oB,EAAMtG,OAAO,EAAG,IAAMsne,GAAM9xd,EACpC,IAWL,IAAIs4d,GAAoB,CACpBd,IAAK,EACLC,IAAK,GAGT,SAASc,KACL,OAAO/ye,KAAK6ye,MAAMb,GACrB,CAED,SAASgB,KACL,OAAOhze,KAAK6ye,MAAMZ,GACrB,CAID,SAASgB,GAAWz4d,GAChB,IAAI2Z,EAAOn0B,KAAKorH,aAAaj3F,KAAKn0B,MAClC,OAAgB,MAATwa,EAAgB2Z,EAAOn0B,KAAK+tC,IAAqB,GAAhBvzB,EAAQ2Z,GAAW,IAC9D,CAED,SAAS++c,GAAc14d,GACnB,IAAI2Z,EAAOo+c,GAAWvye,KAAM,EAAG,GAAGm0B,KAClC,OAAgB,MAAT3Z,EAAgB2Z,EAAOn0B,KAAK+tC,IAAqB,GAAhBvzB,EAAQ2Z,GAAW,IAC9D,CA+DD,SAASkxG,GAAa7qH,EAAOw7C,GACzB,MAAqB,kBAAVx7C,EACAA,EAGNmhD,MAAMnhD,GAKU,kBADrBA,EAAQw7C,EAAOm9a,cAAc34d,IAElBA,EAGJ,KARIsd,SAAStd,EAAO,GAS9B,CAED,SAAS44d,GAAgB54d,EAAOw7C,GAC5B,MAAqB,kBAAVx7C,EACAw7C,EAAOm9a,cAAc34d,GAAS,GAAK,EAEvCmhD,MAAMnhD,GAAS,KAAOA,CAChC,CAGD,SAAS64d,GAAcC,EAAIrvd,GACvB,OAAOqvd,EAAGvue,MAAMkf,EAAG,GAAGhU,OAAOqje,EAAGvue,MAAM,EAAGkf,GAC5C,CAtFDgld,EAAe,IAAK,EAAG,KAAM,OAE7BA,EAAe,KAAM,EAAG,GAAG,SAAUpxa,GACjC,OAAO73D,KAAKorH,aAAamoX,YAAYvze,KAAM63D,EAC9C,IAEDoxa,EAAe,MAAO,EAAG,GAAG,SAAUpxa,GAClC,OAAO73D,KAAKorH,aAAaooX,cAAcxze,KAAM63D,EAChD,IAEDoxa,EAAe,OAAQ,EAAG,GAAG,SAAUpxa,GACnC,OAAO73D,KAAKorH,aAAaqoX,SAASzze,KAAM63D,EAC3C,IAEDoxa,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,IAAK,EAAG,EAAG,cAI1BsC,GAAa,MAAO,KACpBA,GAAa,UAAW,KACxBA,GAAa,aAAc,KAG3BS,GAAgB,MAAO,IACvBA,GAAgB,UAAW,IAC3BA,GAAgB,aAAc,IAI9BmC,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,MAAM,SAAU7pB,EAAUtuZ,GACpC,OAAOA,EAAO09a,iBAAiBpvB,EAClC,IACD6pB,GAAc,OAAO,SAAU7pB,EAAUtuZ,GACrC,OAAOA,EAAO29a,mBAAmBrvB,EACpC,IACD6pB,GAAc,QAAQ,SAAU7pB,EAAUtuZ,GACtC,OAAOA,EAAO49a,cAActvB,EAC/B,IAEDuqB,GAAkB,CAAC,KAAM,MAAO,SAAS,SAAUr0d,EAAO2Z,EAAMp0B,EAAQuL,GACpE,IAAIq6G,EAAU5lH,EAAOmne,QAAQiM,cAAc34d,EAAOlP,EAAOvL,EAAOome,SAEjD,MAAXxgX,EACAxxF,EAAK3Q,EAAImiG,EAETmgX,EAAgB/le,GAAQmme,eAAiB1rd,CAEhD,IAEDq0d,GAAkB,CAAC,IAAK,IAAK,MAAM,SAAUr0d,EAAO2Z,EAAMp0B,EAAQuL,GAC9D6oB,EAAK7oB,GAASghe,GAAM9xd,EACvB,IAiCD,IAAIq5d,GACI,2DAA2Dxxe,MAAM,KACrEyxe,GAA6B,8BAA8Bzxe,MAAM,KACjE0xe,GAA2B,uBAAuB1xe,MAAM,KACxD2xe,GAAuB9F,GACvB+F,GAA4B/F,GAC5BgG,GAA0BhG,GAE9B,SAASiG,GAAej3e,EAAG26D,GACvB,IAAI47a,EAAW3ue,EAAQ9E,KAAKo0e,WACtBp0e,KAAKo0e,UACLp0e,KAAKo0e,UACDl3e,IAAW,IAANA,GAAc8C,KAAKo0e,UAAUjE,SAAS/5d,KAAKyhD,GAC1C,SACA,cAEhB,OAAa,IAAN36D,EACDm2e,GAAcI,EAAUzze,KAAK6ye,MAAMb,KACnC90e,EACAu2e,EAASv2e,EAAEygF,OACX81Z,CACT,CAED,SAASY,GAAoBn3e,GACzB,OAAa,IAANA,EACDm2e,GAAcrze,KAAKs0e,eAAgBt0e,KAAK6ye,MAAMb,KAC9C90e,EACA8C,KAAKs0e,eAAep3e,EAAEygF,OACtB39E,KAAKs0e,cACd,CAED,SAASC,GAAkBr3e,GACvB,OAAa,IAANA,EACDm2e,GAAcrze,KAAKw0e,aAAcx0e,KAAK6ye,MAAMb,KAC5C90e,EACA8C,KAAKw0e,aAAat3e,EAAEygF,OACpB39E,KAAKw0e,YACd,CAED,SAASC,GAAoBC,EAAa78a,EAAQvF,GAC9C,IAAI3pD,EACAmoG,EACA03X,EACAgI,EAAMkE,EAAYzwe,oBACtB,IAAKjE,KAAK20e,eAKN,IAJA30e,KAAK20e,eAAiB,GACtB30e,KAAK40e,oBAAsB,GAC3B50e,KAAK60e,kBAAoB,GAEpBlse,EAAI,EAAGA,EAAI,IAAKA,EACjB6/d,EAAM3D,EAAU,CAAC,IAAM,IAAIlnZ,IAAIh1E,GAC/B3I,KAAK60e,kBAAkBlse,GAAK3I,KAAKuze,YAC7B/K,EACA,IACFvke,oBACFjE,KAAK40e,oBAAoBjse,GAAK3I,KAAKwze,cAC/BhL,EACA,IACFvke,oBACFjE,KAAK20e,eAAehse,GAAK3I,KAAKyze,SAASjL,EAAK,IAAIvke,oBAIxD,OAAIquD,EACe,SAAXuF,GAEe,KADfi5C,EAAK1vG,GAAQ3C,KAAKuB,KAAK20e,eAAgBnE,IACpB1/X,EAAK,KACN,QAAXj5C,GAEQ,KADfi5C,EAAK1vG,GAAQ3C,KAAKuB,KAAK40e,oBAAqBpE,IACzB1/X,EAAK,MAGT,KADfA,EAAK1vG,GAAQ3C,KAAKuB,KAAK60e,kBAAmBrE,IACvB1/X,EAAK,KAGb,SAAXj5C,GAEY,KADZi5C,EAAK1vG,GAAQ3C,KAAKuB,KAAK20e,eAAgBnE,MAK3B,KADZ1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK40e,oBAAqBpE,MAK7B,KADf1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK60e,kBAAmBrE,IAN/B1/X,EAOa,KACN,QAAXj5C,GAEK,KADZi5C,EAAK1vG,GAAQ3C,KAAKuB,KAAK40e,oBAAqBpE,MAKhC,KADZ1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK20e,eAAgBnE,MAKxB,KADf1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK60e,kBAAmBrE,IAN/B1/X,EAOa,MAGZ,KADZA,EAAK1vG,GAAQ3C,KAAKuB,KAAK60e,kBAAmBrE,MAK9B,KADZ1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK20e,eAAgBnE,MAKxB,KADf1/X,EAAK1vG,GAAQ3C,KAAKuB,KAAK40e,oBAAqBpE,IANjC1/X,EAOa,IAGnC,CAED,SAASgkY,GAAoBJ,EAAa78a,EAAQvF,GAC9C,IAAI3pD,EAAG6/d,EAAK99W,EAEZ,GAAI1qH,KAAK+0e,oBACL,OAAON,GAAoBh2e,KAAKuB,KAAM00e,EAAa78a,EAAQvF,GAU/D,IAPKtyD,KAAK20e,iBACN30e,KAAK20e,eAAiB,GACtB30e,KAAK60e,kBAAoB,GACzB70e,KAAK40e,oBAAsB,GAC3B50e,KAAKg1e,mBAAqB,IAGzBrse,EAAI,EAAGA,EAAI,EAAGA,IAAK,CA6BpB,GA1BA6/d,EAAM3D,EAAU,CAAC,IAAM,IAAIlnZ,IAAIh1E,GAC3B2pD,IAAWtyD,KAAKg1e,mBAAmBrse,KACnC3I,KAAKg1e,mBAAmBrse,GAAK,IAAIivB,OAC7B,IAAM53B,KAAKyze,SAASjL,EAAK,IAAI5me,QAAQ,IAAK,QAAU,IACpD,KAEJ5B,KAAK40e,oBAAoBjse,GAAK,IAAIivB,OAC9B,IAAM53B,KAAKwze,cAAchL,EAAK,IAAI5me,QAAQ,IAAK,QAAU,IACzD,KAEJ5B,KAAK60e,kBAAkBlse,GAAK,IAAIivB,OAC5B,IAAM53B,KAAKuze,YAAY/K,EAAK,IAAI5me,QAAQ,IAAK,QAAU,IACvD,MAGH5B,KAAK20e,eAAehse,KACrB+hH,EACI,IACA1qH,KAAKyze,SAASjL,EAAK,IACnB,KACAxoe,KAAKwze,cAAchL,EAAK,IACxB,KACAxoe,KAAKuze,YAAY/K,EAAK,IAC1Bxoe,KAAK20e,eAAehse,GAAK,IAAIivB,OAAO8yF,EAAM9oH,QAAQ,IAAK,IAAK,MAI5D0wD,GACW,SAAXuF,GACA73D,KAAKg1e,mBAAmBrse,GAAGyN,KAAKs+d,GAEhC,OAAO/re,EACJ,GACH2pD,GACW,QAAXuF,GACA73D,KAAK40e,oBAAoBjse,GAAGyN,KAAKs+d,GAEjC,OAAO/re,EACJ,GACH2pD,GACW,OAAXuF,GACA73D,KAAK60e,kBAAkBlse,GAAGyN,KAAKs+d,GAE/B,OAAO/re,EACJ,IAAK2pD,GAAUtyD,KAAK20e,eAAehse,GAAGyN,KAAKs+d,GAC9C,OAAO/re,CAEd,CACJ,CAID,SAASsse,GAAgBz6d,GACrB,IAAKxa,KAAKkwI,UACN,OAAgB,MAAT11H,EAAgBxa,KAAO2rF,IAElC,IAAIhO,EAAM39E,KAAKgne,OAAShne,KAAKnF,GAAGwgI,YAAcr7H,KAAKnF,GAAGqmF,SACtD,OAAa,MAAT1mE,GACAA,EAAQ6qH,GAAa7qH,EAAOxa,KAAKorH,cAC1BprH,KAAK+tC,IAAIvzB,EAAQmjE,EAAK,MAEtBA,CAEd,CAED,SAASu3Z,GAAsB16d,GAC3B,IAAKxa,KAAKkwI,UACN,OAAgB,MAAT11H,EAAgBxa,KAAO2rF,IAElC,IAAIg6B,GAAW3lH,KAAK29E,MAAQ,EAAI39E,KAAKorH,aAAaynX,MAAMb,KAAO,EAC/D,OAAgB,MAATx3d,EAAgBmrG,EAAU3lH,KAAK+tC,IAAIvzB,EAAQmrG,EAAS,IAC9D,CAED,SAASwvX,GAAmB36d,GACxB,IAAKxa,KAAKkwI,UACN,OAAgB,MAAT11H,EAAgBxa,KAAO2rF,IAOlC,GAAa,MAATnxE,EAAe,CACf,IAAImrG,EAAUytX,GAAgB54d,EAAOxa,KAAKorH,cAC1C,OAAOprH,KAAK29E,IAAI39E,KAAK29E,MAAQ,EAAIgoC,EAAUA,EAAU,EACxD,CACG,OAAO3lH,KAAK29E,OAAS,CAE5B,CAED,SAASi2Z,GAActvB,GACnB,OAAItkd,KAAK+0e,qBACApQ,EAAW3ke,KAAM,mBAClBo1e,GAAqB32e,KAAKuB,MAE1Bskd,EACOtkd,KAAKq1e,qBAELr1e,KAAKs1e,iBAGX3Q,EAAW3ke,KAAM,oBAClBA,KAAKs1e,eAAiBtB,IAEnBh0e,KAAKq1e,sBAAwB/wB,EAC9Btkd,KAAKq1e,qBACLr1e,KAAKs1e,eAElB,CAED,SAAS3B,GAAmBrvB,GACxB,OAAItkd,KAAK+0e,qBACApQ,EAAW3ke,KAAM,mBAClBo1e,GAAqB32e,KAAKuB,MAE1Bskd,EACOtkd,KAAKu1e,0BAELv1e,KAAKw1e,sBAGX7Q,EAAW3ke,KAAM,yBAClBA,KAAKw1e,oBAAsBvB,IAExBj0e,KAAKu1e,2BAA6BjxB,EACnCtkd,KAAKu1e,0BACLv1e,KAAKw1e,oBAElB,CAED,SAAS9B,GAAiBpvB,GACtB,OAAItkd,KAAK+0e,qBACApQ,EAAW3ke,KAAM,mBAClBo1e,GAAqB32e,KAAKuB,MAE1Bskd,EACOtkd,KAAKy1e,wBAELz1e,KAAK01e,oBAGX/Q,EAAW3ke,KAAM,uBAClBA,KAAK01e,kBAAoBxB,IAEtBl0e,KAAKy1e,yBAA2BnxB,EACjCtkd,KAAKy1e,wBACLz1e,KAAK01e,kBAElB,CAED,SAASN,KACL,SAAS9D,EAAUvxd,EAAGC,GAClB,OAAOA,EAAErf,OAASof,EAAEpf,MACvB,CAED,IAIIgI,EACA6/d,EACAmN,EACAC,EACAC,EARAC,EAAY,GACZvE,EAAc,GACdC,EAAa,GACbC,EAAc,GAMlB,IAAK9oe,EAAI,EAAGA,EAAI,EAAGA,IAEf6/d,EAAM3D,EAAU,CAAC,IAAM,IAAIlnZ,IAAIh1E,GAC/Bgte,EAAOpH,GAAYvue,KAAKuze,YAAY/K,EAAK,KACzCoN,EAASrH,GAAYvue,KAAKwze,cAAchL,EAAK,KAC7CqN,EAAQtH,GAAYvue,KAAKyze,SAASjL,EAAK,KACvCsN,EAAU11e,KAAKu1e,GACfpE,EAAYnxe,KAAKw1e,GACjBpE,EAAWpxe,KAAKy1e,GAChBpE,EAAYrxe,KAAKu1e,GACjBlE,EAAYrxe,KAAKw1e,GACjBnE,EAAYrxe,KAAKy1e,GAIrBC,EAAU18c,KAAKk4c,GACfC,EAAYn4c,KAAKk4c,GACjBE,EAAWp4c,KAAKk4c,GAChBG,EAAYr4c,KAAKk4c,GAEjBtxe,KAAKs1e,eAAiB,IAAI19c,OAAO,KAAO65c,EAAYhle,KAAK,KAAO,IAAK,KACrEzM,KAAKw1e,oBAAsBx1e,KAAKs1e,eAChCt1e,KAAK01e,kBAAoB11e,KAAKs1e,eAE9Bt1e,KAAKq1e,qBAAuB,IAAIz9c,OAC5B,KAAO45c,EAAW/ke,KAAK,KAAO,IAC9B,KAEJzM,KAAKu1e,0BAA4B,IAAI39c,OACjC,KAAO25c,EAAY9ke,KAAK,KAAO,IAC/B,KAEJzM,KAAKy1e,wBAA0B,IAAI79c,OAC/B,KAAOk+c,EAAUrpe,KAAK,KAAO,IAC7B,IAEP,CAID,SAASspe,KACL,OAAO/1e,KAAKkgF,QAAU,IAAM,EAC/B,CAED,SAAS81Z,KACL,OAAOh2e,KAAKkgF,SAAW,EAC1B,CAgCD,SAASylZ,GAASr6d,EAAO2qe,GACrBhN,EAAe39d,EAAO,EAAG,GAAG,WACxB,OAAOtL,KAAKorH,aAAau6W,SACrB3le,KAAKkgF,QACLlgF,KAAKogF,UACL61Z,EAEP,GACJ,CAcD,SAASC,GAAc5xB,EAAUtuZ,GAC7B,OAAOA,EAAOmgb,cACjB,CA0DD,SAASC,GAAW57d,GAGhB,MAAgD,OAAxCA,EAAQ,IAAIhG,cAAcyH,OAAO,EAC5C,CApHDgtd,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,QAClCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG8M,IAClC9M,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG+M,IAElC/M,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAK8M,GAAQh+d,MAAM/X,MAAQyoe,EAASzoe,KAAKogF,UAAW,EAC9D,IAED6oZ,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACA8M,GAAQh+d,MAAM/X,MACdyoe,EAASzoe,KAAKogF,UAAW,GACzBqoZ,EAASzoe,KAAKqgF,UAAW,EAEhC,IAED4oZ,EAAe,MAAO,EAAG,GAAG,WACxB,MAAO,GAAKjpe,KAAKkgF,QAAUuoZ,EAASzoe,KAAKogF,UAAW,EACvD,IAED6oZ,EAAe,QAAS,EAAG,GAAG,WAC1B,MACI,GACAjpe,KAAKkgF,QACLuoZ,EAASzoe,KAAKogF,UAAW,GACzBqoZ,EAASzoe,KAAKqgF,UAAW,EAEhC,IAYDslZ,GAAS,KAAK,GACdA,GAAS,KAAK,GAId4F,GAAa,OAAQ,KAGrBS,GAAgB,OAAQ,IAQxBmC,GAAc,IAAK+H,IACnB/H,GAAc,IAAK+H,IACnB/H,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAE/BgB,GAAc,MAAOX,IACrBW,GAAc,QAASV,IACvBU,GAAc,MAAOX,IACrBW,GAAc,QAASV,IAEvBkB,GAAc,CAAC,IAAK,MAAOO,IAC3BP,GAAc,CAAC,IAAK,OAAO,SAAUn0d,EAAOnQ,EAAOtK,GAC/C,IAAIs2e,EAAS/J,GAAM9xd,GACnBnQ,EAAM6ke,IAAmB,KAAXmH,EAAgB,EAAIA,CACrC,IACD1H,GAAc,CAAC,IAAK,MAAM,SAAUn0d,EAAOnQ,EAAOtK,GAC9CA,EAAOu2e,MAAQv2e,EAAOmne,QAAQx/O,KAAKltO,GACnCza,EAAOw2e,UAAY/7d,CACtB,IACDm0d,GAAc,CAAC,IAAK,OAAO,SAAUn0d,EAAOnQ,EAAOtK,GAC/CsK,EAAM6ke,IAAQ5C,GAAM9xd,GACpBsrd,EAAgB/le,GAAQqme,SAAU,CACrC,IACDuI,GAAc,OAAO,SAAUn0d,EAAOnQ,EAAOtK,GACzC,IAAI0b,EAAMjB,EAAM7Z,OAAS,EACzB0J,EAAM6ke,IAAQ5C,GAAM9xd,EAAMxV,OAAO,EAAGyW,IACpCpR,EAAM8ke,IAAU7C,GAAM9xd,EAAMxV,OAAOyW,IACnCqqd,EAAgB/le,GAAQqme,SAAU,CACrC,IACDuI,GAAc,SAAS,SAAUn0d,EAAOnQ,EAAOtK,GAC3C,IAAIy2e,EAAOh8d,EAAM7Z,OAAS,EACtB81e,EAAOj8d,EAAM7Z,OAAS,EAC1B0J,EAAM6ke,IAAQ5C,GAAM9xd,EAAMxV,OAAO,EAAGwxe,IACpCnse,EAAM8ke,IAAU7C,GAAM9xd,EAAMxV,OAAOwxe,EAAM,IACzCnse,EAAM+ke,IAAU9C,GAAM9xd,EAAMxV,OAAOyxe,IACnC3Q,EAAgB/le,GAAQqme,SAAU,CACrC,IACDuI,GAAc,OAAO,SAAUn0d,EAAOnQ,EAAOtK,GACzC,IAAI0b,EAAMjB,EAAM7Z,OAAS,EACzB0J,EAAM6ke,IAAQ5C,GAAM9xd,EAAMxV,OAAO,EAAGyW,IACpCpR,EAAM8ke,IAAU7C,GAAM9xd,EAAMxV,OAAOyW,GACtC,IACDkzd,GAAc,SAAS,SAAUn0d,EAAOnQ,EAAOtK,GAC3C,IAAIy2e,EAAOh8d,EAAM7Z,OAAS,EACtB81e,EAAOj8d,EAAM7Z,OAAS,EAC1B0J,EAAM6ke,IAAQ5C,GAAM9xd,EAAMxV,OAAO,EAAGwxe,IACpCnse,EAAM8ke,IAAU7C,GAAM9xd,EAAMxV,OAAOwxe,EAAM,IACzCnse,EAAM+ke,IAAU9C,GAAM9xd,EAAMxV,OAAOyxe,GACtC,IAUD,IAAIC,GAA6B,gBAK7BC,GAAalK,GAAW,SAAS,GAErC,SAASmK,GAAe12Z,EAAOE,EAASy2Z,GACpC,OAAI32Z,EAAQ,GACD22Z,EAAU,KAAO,KAEjBA,EAAU,KAAO,IAE/B,CAED,IAuBIC,GAvBAC,GAAa,CACbzhO,SAAU8yN,EACVqB,eAAgBC,EAChBH,YAAaY,EACb/uW,QAASivW,EACT2M,uBAAwB1M,EACxBY,aAAcV,EAEd1qZ,OAAQ8vZ,GACRJ,YAAaK,GAEb17c,KAAM2+c,GAENW,SAAUI,GACVN,YAAaQ,GACbP,cAAeM,GAEfmD,cAAeP,IAIfQ,GAAU,CAAC,EACXC,GAAiB,CAAC,EAGtB,SAASC,GAAaC,EAAMC,GACxB,IAAI3ue,EACA4ue,EAAOhue,KAAKsZ,IAAIw0d,EAAK12e,OAAQ22e,EAAK32e,QACtC,IAAKgI,EAAI,EAAGA,EAAI4ue,EAAM5ue,GAAK,EACvB,GAAI0ue,EAAK1ue,KAAO2ue,EAAK3ue,GACjB,OAAOA,EAGf,OAAO4ue,CACV,CAED,SAASC,GAAgBl1e,GACrB,OAAOA,EAAMA,EAAIkS,cAAc5S,QAAQ,IAAK,KAAOU,CACtD,CAKD,SAASm1e,GAAatrZ,GAOlB,IANA,IACIr+E,EACA3C,EACA6qD,EACA3zD,EAJAsG,EAAI,EAMDA,EAAIwjF,EAAMxrF,QAAQ,CAKrB,IAHAmN,GADAzL,EAAQm1e,GAAgBrrZ,EAAMxjF,IAAItG,MAAM,MAC9B1B,OAEVwK,GADAA,EAAOqse,GAAgBrrZ,EAAMxjF,EAAI,KACnBwC,EAAK9I,MAAM,KAAO,KACzByL,EAAI,GAAG,CAEV,GADAkoD,EAAS0hb,GAAWr1e,EAAM0C,MAAM,EAAG+I,GAAGrB,KAAK,MAEvC,OAAOupD,EAEX,GACI7qD,GACAA,EAAKxK,QAAUmN,GACfspe,GAAa/0e,EAAO8I,IAAS2C,EAAI,EAGjC,MAEJA,GACH,CACDnF,GACH,CACD,OAAOmue,EACV,CAED,SAASa,GAAiBv+e,GAEtB,OAAoC,MAA7BA,EAAK6V,MAAM,cACrB,CAED,SAASyoe,GAAWt+e,GAChB,IAAIw+e,EAAY,KAGhB,QACsBjwe,IAAlBuve,GAAQ99e,IAERmrB,GACAA,EAAOrB,SACPy0d,GAAiBv+e,GAEjB,IACIw+e,EAAYd,GAAae,MAEzBC,OAAAA,WAAAA,IAAAA,EAAAA,IAAAA,MAAAA,kCAAAA,MAAAA,EAAAA,KAAAA,mBAAAA,CAAAA,CAAAA,IACAC,GAAmBH,EAKtB,CAJC,MAAO3ue,GAGLiue,GAAQ99e,GAAQ,IACnB,CAEL,OAAO89e,GAAQ99e,EAClB,CAKD,SAAS2+e,GAAmBz1e,EAAKqzB,GAC7B,IAAIr7B,EAqBJ,OApBIgI,KAEIhI,EADAk1L,EAAY75J,GACLqid,GAAU11e,GAEV21e,GAAa31e,EAAKqzB,IAKzBmhd,GAAex8e,EAEQ,qBAAZ+B,SAA2BA,QAAQC,MAE1CD,QAAQC,KACJ,UAAYgG,EAAM,2CAM3Bw0e,GAAae,KACvB,CAED,SAASI,GAAa7+e,EAAM2G,GACxB,GAAe,OAAXA,EAAiB,CACjB,IAAIi2D,EACAiya,EAAe8O,GAEnB,GADAh3e,EAAOm0Q,KAAO96Q,EACO,MAAjB89e,GAAQ99e,GACRuue,EACI,uBACA,2OAKJM,EAAeiP,GAAQ99e,GAAMwue,aAC1B,GAA2B,MAAvB7ne,EAAOmsG,aACd,GAAoC,MAAhCgrY,GAAQn3e,EAAOmsG,cACf+7X,EAAeiP,GAAQn3e,EAAOmsG,cAAc07X,YACzC,CAEH,GAAc,OADd5xa,EAAS0hb,GAAW33e,EAAOmsG,eAWvB,OAPKirY,GAAep3e,EAAOmsG,gBACvBirY,GAAep3e,EAAOmsG,cAAgB,IAE1CirY,GAAep3e,EAAOmsG,cAAc9rG,KAAK,CACrChH,KAAMA,EACN2G,OAAQA,IAEL,KATPkoe,EAAejya,EAAO4xa,OAW7B,CAeL,OAbAsP,GAAQ99e,GAAQ,IAAI+ue,EAAOH,EAAaC,EAAcloe,IAElDo3e,GAAe/9e,IACf+9e,GAAe/9e,GAAMsH,SAAQ,SAAUqN,GACnCkqe,GAAalqe,EAAE3U,KAAM2U,EAAEhO,OAC1B,IAMLg4e,GAAmB3+e,GAEZ89e,GAAQ99e,EAClB,CAGG,cADO89e,GAAQ99e,GACR,IAEd,CAED,SAAS8+e,GAAa9+e,EAAM2G,GACxB,GAAc,MAAVA,EAAgB,CAChB,IAAIi2D,EACAmib,EACAlQ,EAAe8O,GAEE,MAAjBG,GAAQ99e,IAA+C,MAA9B89e,GAAQ99e,GAAM8yG,aAEvCgrY,GAAQ99e,GAAMD,IAAI6ue,EAAakP,GAAQ99e,GAAMwue,QAAS7ne,KAIrC,OADjBo4e,EAAYT,GAAWt+e,MAEnB6ue,EAAekQ,EAAUvQ,SAE7B7ne,EAASioe,EAAaC,EAAcloe,GACnB,MAAbo4e,IAIAp4e,EAAOm0Q,KAAO96Q,IAElB48D,EAAS,IAAImya,EAAOpoe,IACbmsG,aAAegrY,GAAQ99e,GAC9B89e,GAAQ99e,GAAQ48D,GAIpB+hb,GAAmB3+e,EACtB,MAEwB,MAAjB89e,GAAQ99e,KAC0B,MAA9B89e,GAAQ99e,GAAM8yG,cACdgrY,GAAQ99e,GAAQ89e,GAAQ99e,GAAM8yG,aAC1B9yG,IAAS2+e,MACTA,GAAmB3+e,IAEC,MAAjB89e,GAAQ99e,WACR89e,GAAQ99e,IAI3B,OAAO89e,GAAQ99e,EAClB,CAGD,SAAS4+e,GAAU11e,GACf,IAAI0zD,EAMJ,GAJI1zD,GAAOA,EAAI4ke,SAAW5ke,EAAI4ke,QAAQ2Q,QAClCv1e,EAAMA,EAAI4ke,QAAQ2Q,QAGjBv1e,EACD,OAAOw0e,GAGX,IAAKhye,EAAQxC,GAAM,CAGf,GADA0zD,EAAS0hb,GAAWp1e,GAEhB,OAAO0zD,EAEX1zD,EAAM,CAACA,EACV,CAED,OAAOm1e,GAAan1e,EACvB,CAED,SAAS81e,KACL,OAAOp5e,EAAKk4e,GACf,CAED,SAASmB,GAAcn7e,GACnB,IAAImmC,EACAtjB,EAAI7iB,EAAExC,GAuCV,OArCIqlB,IAAsC,IAAjC+ld,EAAgB5oe,GAAGmmC,WACxBA,EACItjB,EAAE+2H,IAAS,GAAK/2H,EAAE+2H,IAAS,GACrBA,GACA/2H,EAAEkvd,IAAQ,GAAKlvd,EAAEkvd,IAAQrC,GAAY7sd,EAAEivd,IAAOjvd,EAAE+2H,KAChDm4V,GACAlvd,EAAEmvd,IAAQ,GACVnvd,EAAEmvd,IAAQ,IACG,KAAZnvd,EAAEmvd,MACgB,IAAdnvd,EAAEovd,KACe,IAAdpvd,EAAEqvd,KACiB,IAAnBrvd,EAAEsvd,KACVH,GACAnvd,EAAEovd,IAAU,GAAKpvd,EAAEovd,IAAU,GAC7BA,GACApvd,EAAEqvd,IAAU,GAAKrvd,EAAEqvd,IAAU,GAC7BA,GACArvd,EAAEsvd,IAAe,GAAKtvd,EAAEsvd,IAAe,IACvCA,IACC,EAGPvJ,EAAgB5oe,GAAGo7e,qBAClBj1c,EAAW2rc,IAAQ3rc,EAAW4rc,MAE/B5rc,EAAW4rc,IAEXnJ,EAAgB5oe,GAAGq7e,iBAAgC,IAAdl1c,IACrCA,EAAWuzG,IAEXkvV,EAAgB5oe,GAAGs7e,mBAAkC,IAAdn1c,IACvCA,EAAWisc,IAGfxJ,EAAgB5oe,GAAGmmC,SAAWA,GAG3BnmC,CACV,CAID,IAAIu7e,GACI,iJACJC,GACI,6IACJC,GAAU,wBACVC,GAAW,CACP,CAAC,eAAgB,uBACjB,CAAC,aAAc,mBACf,CAAC,eAAgB,kBACjB,CAAC,aAAc,eAAe,GAC9B,CAAC,WAAY,eACb,CAAC,UAAW,cAAc,GAC1B,CAAC,aAAc,cACf,CAAC,WAAY,SACb,CAAC,aAAc,eACf,CAAC,YAAa,eAAe,GAC7B,CAAC,UAAW,SACZ,CAAC,SAAU,SAAS,GACpB,CAAC,OAAQ,SAAS,IAGtBC,GAAW,CACP,CAAC,gBAAiB,uBAClB,CAAC,gBAAiB,sBAClB,CAAC,WAAY,kBACb,CAAC,QAAS,aACV,CAAC,cAAe,qBAChB,CAAC,cAAe,oBAChB,CAAC,SAAU,gBACX,CAAC,OAAQ,YACT,CAAC,KAAM,SAEXC,GAAkB,qBAElBlT,GACI,0LACJmT,GAAa,CACTC,GAAI,EACJC,IAAK,EACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,IACLC,KAAK,KAIb,SAASC,GAAc35e,GACnB,IAAI4I,EACAqb,EAGA21d,EACAC,EACAC,EACAC,EALA1ke,EAASrV,EAAOwV,GAChBtG,EAAQwpe,GAAiBzpe,KAAKoG,IAAWsje,GAAc1pe,KAAKoG,GAK5D2ke,EAAcnB,GAASj4e,OACvBq5e,EAAcnB,GAASl4e,OAE3B,GAAIsO,EAAO,CAEP,IADA62d,EAAgB/le,GAAQyle,KAAM,EACzB78d,EAAI,EAAGqb,EAAI+1d,EAAapxe,EAAIqb,EAAGrb,IAChC,GAAIiwe,GAASjwe,GAAG,GAAGqG,KAAKC,EAAM,IAAK,CAC/B2qe,EAAahB,GAASjwe,GAAG,GACzBgxe,GAA+B,IAAnBf,GAASjwe,GAAG,GACxB,KACH,CAEL,GAAkB,MAAdixe,EAEA,YADA75e,EAAOotP,UAAW,GAGtB,GAAIl+O,EAAM,GAAI,CACV,IAAKtG,EAAI,EAAGqb,EAAIg2d,EAAarxe,EAAIqb,EAAGrb,IAChC,GAAIkwe,GAASlwe,GAAG,GAAGqG,KAAKC,EAAM,IAAK,CAE/B4qe,GAAc5qe,EAAM,IAAM,KAAO4pe,GAASlwe,GAAG,GAC7C,KACH,CAEL,GAAkB,MAAdkxe,EAEA,YADA95e,EAAOotP,UAAW,EAGzB,CACD,IAAKwsP,GAA2B,MAAdE,EAEd,YADA95e,EAAOotP,UAAW,GAGtB,GAAIl+O,EAAM,GAAI,CACV,IAAI0pe,GAAQ3pe,KAAKC,EAAM,IAInB,YADAlP,EAAOotP,UAAW,GAFlB2sP,EAAW,GAKlB,CACD/5e,EAAO8me,GAAK+S,GAAcC,GAAc,KAAOC,GAAY,IAC3DG,GAA0Bl6e,EAC7B,MACGA,EAAOotP,UAAW,CAEzB,CAED,SAAS+sP,GACLC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEA,IAAIh3e,EAAS,CACTi3e,GAAeN,GACftK,GAAyBzue,QAAQg5e,GACjCtid,SAASuid,EAAQ,IACjBvid,SAASwid,EAAS,IAClBxid,SAASyid,EAAW,KAOxB,OAJIC,GACAh3e,EAAOpD,KAAK03B,SAAS0id,EAAW,KAG7Bh3e,CACV,CAED,SAASi3e,GAAeN,GACpB,IAAIt8Z,EAAO/lD,SAASqid,EAAS,IAC7B,OAAIt8Z,GAAQ,GACD,IAAOA,EACPA,GAAQ,IACR,KAAOA,EAEXA,CACV,CAED,SAAS68Z,GAAkBnid,GAEvB,OAAOA,EACF32B,QAAQ,qBAAsB,KAC9BA,QAAQ,WAAY,KACpBA,QAAQ,SAAU,IAClBA,QAAQ,SAAU,GAC1B,CAED,SAAS+4e,GAAaC,EAAYC,EAAa96e,GAC3C,OAAI66e,GAEsB9G,GAA2B1ye,QAAQw5e,KACrC,IAAI93e,KAChB+3e,EAAY,GACZA,EAAY,GACZA,EAAY,IACd35Z,WAEF4kZ,EAAgB/le,GAAQ8le,iBAAkB,EAC1C9le,EAAOotP,UAAW,GACX,EAIlB,CAED,SAAS2tP,GAAgBC,EAAWC,EAAgBC,GAChD,GAAIF,EACA,OAAOhC,GAAWgC,GACf,GAAIC,EAEP,OAAO,EAEP,IAAIE,EAAKpjd,SAASmjd,EAAW,IACzB/9e,EAAIg+e,EAAK,IAEb,OADSA,EAAKh+e,GAAK,IACR,GAAKA,CAEvB,CAGD,SAASi+e,GAAkBp7e,GACvB,IACIq7e,EADAnse,EAAQ22d,GAAQ52d,KAAK0re,GAAkB36e,EAAOwV,KAElD,GAAItG,EAAO,CASP,GARAmse,EAAclB,GACVjre,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,GACNA,EAAM,KAEL0re,GAAa1re,EAAM,GAAImse,EAAar7e,GACrC,OAGJA,EAAOrF,GAAK0gf,EACZr7e,EAAOgne,KAAO+T,GAAgB7re,EAAM,GAAIA,EAAM,GAAIA,EAAM,KAExDlP,EAAOlF,GAAKy1H,GAAcv4G,MAAM,KAAMhY,EAAOrF,IAC7CqF,EAAOlF,GAAGwgf,cAAct7e,EAAOlF,GAAG81H,gBAAkB5wH,EAAOgne,MAE3DjB,EAAgB/le,GAAQ6le,SAAU,CACrC,MACG7le,EAAOotP,UAAW,CAEzB,CAGD,SAASmuP,GAAiBv7e,GACtB,IAAIyue,EAAUsK,GAAgB9pe,KAAKjP,EAAOwV,IAC1B,OAAZi5d,GAKJkL,GAAc35e,IACU,IAApBA,EAAOotP,kBACAptP,EAAOotP,SAKlBguP,GAAkBp7e,IACM,IAApBA,EAAOotP,kBACAptP,EAAOotP,SAKdptP,EAAOome,QACPpme,EAAOotP,UAAW,EAGlBs3O,EAAM8W,wBAAwBx7e,MAtB9BA,EAAOlF,GAAK,IAAIiI,MAAM0re,EAAQ,GAwBrC,CAYD,SAAS76b,GAAS5zB,EAAGC,EAAGpG,GACpB,OAAS,MAALmG,EACOA,EAEF,MAALC,EACOA,EAEJpG,CACV,CAED,SAAS4he,GAAiBz7e,GAEtB,IAAI07e,EAAW,IAAI34e,KAAK2he,EAAMlha,OAC9B,OAAIxjE,EAAO27e,QACA,CACHD,EAASlrX,iBACTkrX,EAASjrX,cACTirX,EAAShrX,cAGV,CAACgrX,EAAS77Z,cAAe67Z,EAASr8Z,WAAYq8Z,EAASz7Z,UACjE,CAMD,SAAS27Z,GAAgB57e,GACrB,IAAI4I,EACAsrB,EAEA8wD,EACA62Z,EACAC,EAHArhe,EAAQ,GAKZ,IAAIza,EAAOlF,GAAX,CAgCA,IA5BAkqF,EAAcy2Z,GAAiBz7e,GAG3BA,EAAO+ue,IAAyB,MAAnB/ue,EAAOrF,GAAGu0e,KAAqC,MAApBlve,EAAOrF,GAAGo8I,KAClDglW,GAAsB/7e,GAID,MAArBA,EAAOg8e,aACPF,EAAYloc,GAAS5zC,EAAOrF,GAAGs0e,IAAOjqZ,EAAYiqZ,MAG9Cjve,EAAOg8e,WAAarK,GAAWmK,IACT,IAAtB97e,EAAOg8e,cAEPjW,EAAgB/le,GAAQu4e,oBAAqB,GAGjDrkd,EAAOq8F,GAAcurX,EAAW,EAAG97e,EAAOg8e,YAC1Ch8e,EAAOrF,GAAGo8I,IAAS7iH,EAAKu8F,cACxBzwH,EAAOrF,GAAGu0e,IAAQh7c,EAAKw8F,cAQtB9nH,EAAI,EAAGA,EAAI,GAAqB,MAAhB5I,EAAOrF,GAAGiO,KAAcA,EACzC5I,EAAOrF,GAAGiO,GAAK6R,EAAM7R,GAAKo8E,EAAYp8E,GAI1C,KAAOA,EAAI,EAAGA,IACV5I,EAAOrF,GAAGiO,GAAK6R,EAAM7R,GACD,MAAhB5I,EAAOrF,GAAGiO,GAAoB,IAANA,EAAU,EAAI,EAAK5I,EAAOrF,GAAGiO,GAKrC,KAApB5I,EAAOrF,GAAGw0e,KACY,IAAtBnve,EAAOrF,GAAGy0e,KACY,IAAtBpve,EAAOrF,GAAG00e,KACiB,IAA3Brve,EAAOrF,GAAG20e,MAEVtve,EAAOi8e,UAAW,EAClBj8e,EAAOrF,GAAGw0e,IAAQ,GAGtBnve,EAAOlF,IAAMkF,EAAO27e,QAAUprX,GAAgBoE,IAAY38G,MACtD,KACAyC,GAEJohe,EAAkB77e,EAAO27e,QACnB37e,EAAOlF,GAAGwgI,YACVt7H,EAAOlF,GAAGqmF,SAIG,MAAfnhF,EAAOgne,MACPhne,EAAOlF,GAAGwgf,cAAct7e,EAAOlF,GAAG81H,gBAAkB5wH,EAAOgne,MAG3Dhne,EAAOi8e,WACPj8e,EAAOrF,GAAGw0e,IAAQ,IAKlBnve,EAAO+ue,IACgB,qBAAhB/ue,EAAO+ue,GAAGtrd,GACjBzjB,EAAO+ue,GAAGtrd,IAAMo4d,IAEhB9V,EAAgB/le,GAAQ8le,iBAAkB,EA3E7C,CA6EJ,CAED,SAASiW,GAAsB/7e,GAC3B,IAAIgiH,EAAGk6X,EAAU9nd,EAAMwxF,EAASqsX,EAAKC,EAAK5Q,EAAM6a,EAAiBC,EAGrD,OADZp6X,EAAIhiH,EAAO+ue,IACLsN,IAAqB,MAAPr6X,EAAEs6X,GAAoB,MAAPt6X,EAAE76B,GACjC8qZ,EAAM,EACNC,EAAM,EAMNgK,EAAWtoc,GACPouE,EAAEq6X,GACFr8e,EAAOrF,GAAGs0e,IACVuD,GAAW+J,KAAe,EAAG,GAAGz+Z,MAEpC1pD,EAAOwf,GAASouE,EAAEs6X,EAAG,KACrB12X,EAAUhyE,GAASouE,EAAE76B,EAAG,IACV,GAAKy+B,EAAU,KACzBu2X,GAAkB,KAGtBlK,EAAMjye,EAAOmne,QAAQ2L,MAAMb,IAC3BC,EAAMlye,EAAOmne,QAAQ2L,MAAMZ,IAE3BkK,EAAU5J,GAAW+J,KAAetK,EAAKC,GAEzCgK,EAAWtoc,GAASouE,EAAEw6X,GAAIx8e,EAAOrF,GAAGs0e,IAAOmN,EAAQt+Z,MAGnD1pD,EAAOwf,GAASouE,EAAEA,EAAGo6X,EAAQhod,MAElB,MAAP4tF,EAAEv+F,IAEFmiG,EAAU5D,EAAEv+F,GACE,GAAKmiG,EAAU,KACzBu2X,GAAkB,GAER,MAAPn6X,EAAE94G,GAET08G,EAAU5D,EAAE94G,EAAI+oe,GACZjwX,EAAE94G,EAAI,GAAK84G,EAAE94G,EAAI,KACjBize,GAAkB,IAItBv2X,EAAUqsX,GAGd79c,EAAO,GAAKA,EAAOu+c,GAAYuJ,EAAUjK,EAAKC,GAC9CnM,EAAgB/le,GAAQw4e,gBAAiB,EACf,MAAnB2D,EACPpW,EAAgB/le,GAAQy4e,kBAAmB,GAE3CnX,EAAO8Q,GAAmB8J,EAAU9nd,EAAMwxF,EAASqsX,EAAKC,GACxDlye,EAAOrF,GAAGs0e,IAAQ3N,EAAKxjZ,KACvB99E,EAAOg8e,WAAa1a,EAAKiR,UAEhC,CASD,SAAS2H,GAA0Bl6e,GAE/B,GAAIA,EAAO8me,KAAOpC,EAAM+X,SAIxB,GAAIz8e,EAAO8me,KAAOpC,EAAMgY,SAAxB,CAIA18e,EAAOrF,GAAK,GACZore,EAAgB/le,GAAQ+tD,OAAQ,EAGhC,IACInlD,EACAkye,EACAn+W,EACApxH,EACAoxe,EAGAhX,EACAkJ,EATAx5d,EAAS,GAAKrV,EAAOwV,GAMrB8+J,EAAej/J,EAAOzU,OACtBg8e,EAAyB,EAO7B,IADA/N,GAFAlyW,EACI4sW,EAAavpe,EAAO8me,GAAI9me,EAAOmne,SAASj4d,MAAM45d,IAAqB,IACrDloe,OACbgI,EAAI,EAAGA,EAAIime,EAAUjme,IACtB2C,EAAQoxH,EAAO/zH,IACfkye,GAAezle,EAAOnG,MAAMo/d,GAAsB/ie,EAAOvL,KACrD,IAAI,OAEJ28e,EAAUtne,EAAOpQ,OAAO,EAAGoQ,EAAOhU,QAAQy5e,KAC9Bl6e,OAAS,GACjBmle,EAAgB/le,GAAQkle,YAAY7ke,KAAKs8e,GAE7Ctne,EAASA,EAAOrQ,MACZqQ,EAAOhU,QAAQy5e,GAAeA,EAAYl6e,QAE9Cg8e,GAA0B9B,EAAYl6e,QAGtCqoe,EAAqB19d,IACjBuve,EACA/U,EAAgB/le,GAAQ+tD,OAAQ,EAEhCg4a,EAAgB/le,GAAQile,aAAa5ke,KAAKkL,GAE9Cyje,GAAwBzje,EAAOuve,EAAa96e,IACrCA,EAAOome,UAAY0U,GAC1B/U,EAAgB/le,GAAQile,aAAa5ke,KAAKkL,GAKlDw6d,EAAgB/le,GAAQmle,cACpB7wT,EAAesoU,EACfvne,EAAOzU,OAAS,GAChBmle,EAAgB/le,GAAQkle,YAAY7ke,KAAKgV,GAKzCrV,EAAOrF,GAAGw0e,KAAS,KACiB,IAApCpJ,EAAgB/le,GAAQqme,SACxBrme,EAAOrF,GAAGw0e,IAAQ,IAElBpJ,EAAgB/le,GAAQqme,aAAUz+d,GAGtCm+d,EAAgB/le,GAAQ0le,gBAAkB1le,EAAOrF,GAAGqK,MAAM,GAC1D+ge,EAAgB/le,GAAQ4le,SAAW5le,EAAOw2e,UAE1Cx2e,EAAOrF,GAAGw0e,IAAQ0N,GACd78e,EAAOmne,QACPnne,EAAOrF,GAAGw0e,IACVnve,EAAOw2e,WAKC,QADZ7Q,EAAMI,EAAgB/le,GAAQ2le,OAE1B3le,EAAOrF,GAAGs0e,IAAQjve,EAAOmne,QAAQ2V,gBAAgBnX,EAAK3le,EAAOrF,GAAGs0e,MAGpE2M,GAAgB57e,GAChBs4e,GAAct4e,EA9Eb,MAFGo7e,GAAkBp7e,QAJlB25e,GAAc35e,EAqFrB,CAED,SAAS68e,GAAgB5mb,EAAQ0nB,EAAMioZ,GACnC,IAAImX,EAEJ,OAAgB,MAAZnX,EAEOjoZ,EAEgB,MAAvB1nB,EAAO+mb,aACA/mb,EAAO+mb,aAAar/Z,EAAMioZ,GACX,MAAf3va,EAAO0xL,OAEdo1P,EAAO9mb,EAAO0xL,KAAKi+O,KACPjoZ,EAAO,KACfA,GAAQ,IAEPo/Z,GAAiB,KAATp/Z,IACTA,EAAO,GAEJA,GAGAA,CAEd,CAGD,SAASs/Z,GAAyBj9e,GAC9B,IAAIk9e,EACAC,EACAC,EACAx0e,EACAy0e,EACAC,EACAC,GAAoB,EACpBC,EAAax9e,EAAO8me,GAAGlme,OAE3B,GAAmB,IAAf48e,EAGA,OAFAzX,EAAgB/le,GAAQule,eAAgB,OACxCvle,EAAOlF,GAAK,IAAIiI,KAAK6oF,MAIzB,IAAKhjF,EAAI,EAAGA,EAAI40e,EAAY50e,IACxBy0e,EAAe,EACfC,GAAmB,EACnBJ,EAAavW,EAAW,CAAC,EAAG3me,GACN,MAAlBA,EAAO27e,UACPuB,EAAWvB,QAAU37e,EAAO27e,SAEhCuB,EAAWpW,GAAK9me,EAAO8me,GAAGl+d,GAC1Bsxe,GAA0BgD,GAEtB/sW,EAAQ+sW,KACRI,GAAmB,GAIvBD,GAAgBtX,EAAgBmX,GAAY/X,cAG5CkY,GAAkE,GAAlDtX,EAAgBmX,GAAYjY,aAAarke,OAEzDmle,EAAgBmX,GAAYO,MAAQJ,EAE/BE,EAaGF,EAAeD,IACfA,EAAcC,EACdF,EAAaD,IAbE,MAAfE,GACAC,EAAeD,GACfE,KAEAF,EAAcC,EACdF,EAAaD,EACTI,IACAC,GAAoB,IAWpC73b,EAAO1lD,EAAQm9e,GAAcD,EAChC,CAED,SAASQ,GAAiB19e,GACtB,IAAIA,EAAOlF,GAAX,CAIA,IAAI8N,EAAIgje,GAAqB5re,EAAOwV,IAChCmoe,OAAsB/1e,IAAVgB,EAAEg1E,IAAoBh1E,EAAEsrB,KAAOtrB,EAAEg1E,IACjD59E,EAAOrF,GAAKqJ,EACR,CAAC4E,EAAEk1E,KAAMl1E,EAAEurB,MAAOwpd,EAAW/0e,EAAE+0E,KAAM/0E,EAAE80E,OAAQ90E,EAAEqsC,OAAQrsC,EAAE60E,cAC3D,SAAUroE,GACN,OAAOA,GAAO2iB,SAAS3iB,EAAK,GAC/B,IAGLwme,GAAgB57e,EAXf,CAYJ,CAED,SAAS49e,GAAiB59e,GACtB,IAAIq8H,EAAM,IAAI+qW,EAAOkR,GAAcuF,GAAc79e,KAOjD,OANIq8H,EAAI4/W,WAEJ5/W,EAAIruF,IAAI,EAAG,KACXquF,EAAI4/W,cAAWr0e,GAGZy0H,CACV,CAED,SAASwhX,GAAc79e,GACnB,IAAIya,EAAQza,EAAOwV,GACfsiD,EAAS93D,EAAO8me,GAIpB,OAFA9me,EAAOmne,QAAUnne,EAAOmne,SAAW8Q,GAAUj4e,EAAO+me,IAEtC,OAAVtsd,QAA8B7S,IAAXkwD,GAAkC,KAAVr9C,EACpC8rd,EAAc,CAAEnB,WAAW,KAGjB,kBAAV3qd,IACPza,EAAOwV,GAAKiF,EAAQza,EAAOmne,QAAQ2W,SAASrje,IAG5C6sd,EAAS7sd,GACF,IAAI2sd,EAAOkR,GAAc79d,KACzBkhD,EAAOlhD,GACdza,EAAOlF,GAAK2f,EACL1V,EAAQ+yD,GACfmlb,GAAyBj9e,GAClB83D,EACPoib,GAA0Bl6e,GAE1B+9e,GAAgB/9e,GAGfmwI,EAAQnwI,KACTA,EAAOlF,GAAK,MAGTkF,GACV,CAED,SAAS+9e,GAAgB/9e,GACrB,IAAIya,EAAQza,EAAOwV,GACfi6K,EAAYh1K,GACZza,EAAOlF,GAAK,IAAIiI,KAAK2he,EAAMlha,OACpB7H,EAAOlhD,GACdza,EAAOlF,GAAK,IAAIiI,KAAK0X,EAAM+xC,WACH,kBAAV/xC,EACd8ge,GAAiBv7e,GACV+E,EAAQ0V,IACfza,EAAOrF,GAAKqJ,EAAIyW,EAAMzV,MAAM,IAAI,SAAUoQ,GACtC,OAAO2iB,SAAS3iB,EAAK,GACxB,IACDwme,GAAgB57e,IACTsgB,EAAS7F,GAChBije,GAAiB19e,GACVgqF,EAASvvE,GAEhBza,EAAOlF,GAAK,IAAIiI,KAAK0X,GAErBiqd,EAAM8W,wBAAwBx7e,EAErC,CAED,SAAS+ke,GAAiBtqd,EAAOq9C,EAAQ7B,EAAQ1D,EAAQmzE,GACrD,IAAI7rH,EAAI,CAAC,EA2BT,OAzBe,IAAXi+C,IAA8B,IAAXA,IACnBvF,EAASuF,EACTA,OAASlwD,IAGE,IAAXquD,IAA8B,IAAXA,IACnB1D,EAAS0D,EACTA,OAASruD,IAIR0Y,EAAS7F,IAAU4rB,EAAc5rB,IACjC1V,EAAQ0V,IAA2B,IAAjBA,EAAM7Z,UAEzB6Z,OAAQ7S,GAIZiS,EAAEgtd,kBAAmB,EACrBhtd,EAAE8he,QAAU9he,EAAEotd,OAASvhW,EACvB7rH,EAAEktd,GAAK9wa,EACPp8C,EAAErE,GAAKiF,EACPZ,EAAEitd,GAAKhva,EACPj+C,EAAEusd,QAAU7za,EAELqrb,GAAiB/je,EAC3B,CAED,SAAS0ie,GAAY9he,EAAOq9C,EAAQ7B,EAAQ1D,GACxC,OAAOwya,GAAiBtqd,EAAOq9C,EAAQ7B,EAAQ1D,GAAQ,EAC1D,CAxeDmya,EAAM8W,wBAA0B9+U,EAC5B,iSAGA,SAAU18J,GACNA,EAAOlF,GAAK,IAAIiI,KAAK/C,EAAOwV,IAAMxV,EAAO27e,QAAU,OAAS,IAC/D,IAsLLjX,EAAM+X,SAAW,WAAc,EAG/B/X,EAAMgY,SAAW,WAAc,EA2S/B,IAAIsB,GAAethV,EACX,sGACA,WACI,IAAIj1I,EAAQ80d,GAAYvke,MAAM,KAAMD,WACpC,OAAI9X,KAAKkwI,WAAa1oH,EAAM0oH,UACjB1oH,EAAQxnB,KAAOA,KAAOwnB,EAEtB8+c,GAEd,IAEL0X,GAAevhV,EACX,sGACA,WACI,IAAIj1I,EAAQ80d,GAAYvke,MAAM,KAAMD,WACpC,OAAI9X,KAAKkwI,WAAa1oH,EAAM0oH,UACjB1oH,EAAQxnB,KAAOA,KAAOwnB,EAEtB8+c,GAEd,IAQT,SAAS3M,GAAO57d,EAAIkgf,GAChB,IAAI7hX,EAAKzzH,EAIT,GAHuB,IAAnBs1e,EAAQt9e,QAAgBmE,EAAQm5e,EAAQ,MACxCA,EAAUA,EAAQ,KAEjBA,EAAQt9e,OACT,OAAO27e,KAGX,IADAlgX,EAAM6hX,EAAQ,GACTt1e,EAAI,EAAGA,EAAIs1e,EAAQt9e,SAAUgI,EACzBs1e,EAAQt1e,GAAGunI,YAAa+tW,EAAQt1e,GAAG5K,GAAIq+H,KACxCA,EAAM6hX,EAAQt1e,IAGtB,OAAOyzH,CACV,CAGD,SAASv5G,KAGL,OAAO82c,GAAO,WAFH,GAAG50d,MAAMtG,KAAKqZ,UAAW,GAGvC,CAED,SAAS2f,KAGL,OAAOkic,GAAO,UAFH,GAAG50d,MAAMtG,KAAKqZ,UAAW,GAGvC,CAED,IAAIyrD,GAAM,WACN,OAAOzgE,KAAKygE,IAAMzgE,KAAKygE,OAAS,IAAIzgE,IACvC,EAEGo7e,GAAW,CACX,OACA,UACA,QACA,OACA,MACA,OACA,SACA,SACA,eAGJ,SAASC,GAAgBjhf,GACrB,IAAIoF,EAEAqG,EADAy1e,GAAiB,EAEjBC,EAAWH,GAASv9e,OACxB,IAAK2B,KAAOpF,EACR,GACIyne,EAAWzne,EAAGoF,MAEuB,IAAjClB,GAAQ3C,KAAKy/e,GAAU57e,IACZ,MAAVpF,EAAEoF,IAAiBq5D,MAAMz+D,EAAEoF,KAGhC,OAAO,EAIf,IAAKqG,EAAI,EAAGA,EAAI01e,IAAY11e,EACxB,GAAIzL,EAAEghf,GAASv1e,IAAK,CAChB,GAAIy1e,EACA,OAAO,EAEPjmd,WAAWj7B,EAAEghf,GAASv1e,OAAS2je,GAAMpve,EAAEghf,GAASv1e,OAChDy1e,GAAiB,EAExB,CAGL,OAAO,CACV,CAED,SAASE,KACL,OAAOt+e,KAAKmtP,QACf,CAED,SAASoxP,KACL,OAAOC,GAAe7yZ,IACzB,CAED,SAAS8yZ,GAAS5yd,GACd,IAAIigd,EAAkBH,GAAqB9/c,GACvC6zD,EAAQosZ,EAAgBjuZ,MAAQ,EAChCgC,EAAWisZ,EAAgBluZ,SAAW,EACtCkC,EAASgsZ,EAAgB53c,OAAS,EAClC6rD,EAAQ+rZ,EAAgB33c,MAAQ23c,EAAgB4S,SAAW,EAC3Dz+Z,EAAO6rZ,EAAgBnuZ,KAAO,EAC9BuC,EAAQ4rZ,EAAgBpuZ,MAAQ,EAChC0C,EAAU0rZ,EAAgBruZ,QAAU,EACpC4C,EAAUyrZ,EAAgB92b,QAAU,EACpC1oB,EAAew/c,EAAgBtuZ,aAAe,EAElDx9E,KAAKmtP,SAAWgxP,GAAgBrS,GAGhC9re,KAAK2+e,eACAryd,EACS,IAAV+zD,EACU,IAAVD,EACQ,IAARF,EAAe,GAAK,GAGxBlgF,KAAK46V,OAAS36Q,EAAe,EAARF,EAIrB//E,KAAKkwe,SAAWpwZ,EAAoB,EAAXD,EAAuB,GAARH,EAExC1/E,KAAK0gG,MAAQ,CAAC,EAEd1gG,KAAKkne,QAAU8Q,KAEfh4e,KAAK4+e,SACR,CAED,SAASC,GAAW1pe,GAChB,OAAOA,aAAespe,EACzB,CAED,SAASK,GAAS9qd,GACd,OAAIA,EAAS,GACyB,EAA3BzqB,KAAKoZ,OAAO,EAAIqR,GAEhBzqB,KAAKoZ,MAAMqR,EAEzB,CAGD,SAAS+9B,GAAcC,EAAQC,EAAQ8sb,GACnC,IAGIp2e,EAHAyI,EAAM7H,KAAKsZ,IAAImvC,EAAOrxD,OAAQsxD,EAAOtxD,QACrCq+e,EAAaz1e,KAAKD,IAAI0oD,EAAOrxD,OAASsxD,EAAOtxD,QAC7Cs+e,EAAQ,EAEZ,IAAKt2e,EAAI,EAAGA,EAAIyI,EAAKzI,KAEZo2e,GAAe/sb,EAAOrpD,KAAOspD,EAAOtpD,KACnCo2e,GAAezS,GAAMt6a,EAAOrpD,MAAQ2je,GAAMr6a,EAAOtpD,MAEnDs2e,IAGR,OAAOA,EAAQD,CAClB,CAID,SAAS/xe,GAAO3B,EAAOkmD,GACnBy3a,EAAe39d,EAAO,EAAG,GAAG,WACxB,IAAI2B,EAASjN,KAAKk/e,YACdtub,EAAO,IAKX,OAJI3jD,EAAS,IACTA,GAAUA,EACV2jD,EAAO,KAGPA,EACA63a,KAAYx7d,EAAS,IAAK,GAC1BukD,EACAi3a,IAAWx7d,EAAS,GAAI,EAE/B,GACJ,CAEDA,GAAO,IAAK,KACZA,GAAO,KAAM,IAIbkhe,GAAc,IAAKH,IACnBG,GAAc,KAAMH,IACpBW,GAAc,CAAC,IAAK,OAAO,SAAUn0d,EAAOnQ,EAAOtK,GAC/CA,EAAO27e,SAAU,EACjB37e,EAAOgne,KAAOoY,GAAiBnR,GAAkBxzd,EACpD,IAOD,IAAI4ke,GAAc,kBAElB,SAASD,GAAiBE,EAASjqe,GAC/B,IAEIu/B,EACAyrC,EAHAtrD,GAAW1f,GAAU,IAAInG,MAAMowe,GAKnC,OAAgB,OAAZvqd,EACO,KAOQ,KAFnBsrD,EAAuB,IADvBzrC,IADQ7f,EAAQA,EAAQn0B,OAAS,IAAM,IACtB,IAAIsO,MAAMmwe,KAAgB,CAAC,IAAK,EAAG,IAClC,GAAW9S,GAAM33b,EAAM,KAElB,EAAiB,MAAbA,EAAM,GAAayrC,GAAWA,CAC5D,CAGD,SAASk/Z,GAAgB9ke,EAAOi7B,GAC5B,IAAI2mF,EAAKz6C,EACT,OAAIlsC,EAAMuxb,QACN5qW,EAAM3mF,EAAMnqB,QACZq2D,GACK0lZ,EAAS7sd,IAAUkhD,EAAOlhD,GACrBA,EAAM+xC,UACN+vb,GAAY9he,GAAO+xC,WAAa6vE,EAAI7vE,UAE9C6vE,EAAIvhI,GAAGslF,QAAQi8C,EAAIvhI,GAAG0xD,UAAYo1B,GAClC8iZ,EAAM2C,aAAahrW,GAAK,GACjBA,GAEAkgX,GAAY9he,GAAO+ke,OAEjC,CAED,SAASC,GAActif,GAGnB,OAAQqM,KAAKoZ,MAAMzlB,EAAErC,GAAGknF,oBAC3B,CAoBD,SAAS09Z,GAAajle,EAAOkle,EAAeC,GACxC,IACIC,EADA3ye,EAASjN,KAAKine,SAAW,EAE7B,IAAKjne,KAAKkwI,UACN,OAAgB,MAAT11H,EAAgBxa,KAAO2rF,IAElC,GAAa,MAATnxE,EAAe,CACf,GAAqB,kBAAVA,GAEP,GAAc,QADdA,EAAQ2ke,GAAiBnR,GAAkBxzd,IAEvC,OAAOxa,UAEJuJ,KAAKD,IAAIkR,GAAS,KAAOmle,IAChCnle,GAAgB,IAwBpB,OAtBKxa,KAAKgne,QAAU0Y,IAChBE,EAAcJ,GAAcx/e,OAEhCA,KAAKine,QAAUzsd,EACfxa,KAAKgne,QAAS,EACK,MAAf4Y,GACA5/e,KAAK+tC,IAAI6xc,EAAa,KAEtB3ye,IAAWuN,KACNkle,GAAiB1/e,KAAK6/e,kBACvBC,GACI9/e,KACAw+e,GAAehke,EAAQvN,EAAQ,KAC/B,GACA,GAEIjN,KAAK6/e,oBACb7/e,KAAK6/e,mBAAoB,EACzBpb,EAAM2C,aAAapne,MAAM,GACzBA,KAAK6/e,kBAAoB,OAG1B7/e,IACV,CACG,OAAOA,KAAKgne,OAAS/5d,EAASuye,GAAcx/e,KAEnD,CAED,SAAS+/e,GAAWvle,EAAOkle,GACvB,OAAa,MAATlle,GACqB,kBAAVA,IACPA,GAASA,GAGbxa,KAAKk/e,UAAU1ke,EAAOkle,GAEf1/e,OAECA,KAAKk/e,WAEpB,CAED,SAASc,GAAeN,GACpB,OAAO1/e,KAAKk/e,UAAU,EAAGQ,EAC5B,CAED,SAASO,GAAiBP,GAStB,OARI1/e,KAAKgne,SACLhne,KAAKk/e,UAAU,EAAGQ,GAClB1/e,KAAKgne,QAAS,EAEV0Y,GACA1/e,KAAK27d,SAAS6jB,GAAcx/e,MAAO,MAGpCA,IACV,CAED,SAASkgf,KACL,GAAiB,MAAblgf,KAAK+me,KACL/me,KAAKk/e,UAAUl/e,KAAK+me,MAAM,GAAO,QAC9B,GAAuB,kBAAZ/me,KAAKuV,GAAiB,CACpC,IAAI4qe,EAAQhB,GAAiBpR,GAAa/te,KAAKuV,IAClC,MAAT4qe,EACAngf,KAAKk/e,UAAUiB,GAEfngf,KAAKk/e,UAAU,GAAG,EAEzB,CACD,OAAOl/e,IACV,CAED,SAASogf,GAAqB5le,GAC1B,QAAKxa,KAAKkwI,YAGV11H,EAAQA,EAAQ8he,GAAY9he,GAAO0ke,YAAc,GAEzCl/e,KAAKk/e,YAAc1ke,GAAS,KAAO,EAC9C,CAED,SAAS6le,KACL,OACIrgf,KAAKk/e,YAAcl/e,KAAKsrB,QAAQ4I,MAAM,GAAGgrd,aACzCl/e,KAAKk/e,YAAcl/e,KAAKsrB,QAAQ4I,MAAM,GAAGgrd,WAEhD,CAED,SAASoB,KACL,IAAK9wT,EAAYxvL,KAAKugf,eAClB,OAAOvgf,KAAKugf,cAGhB,IACI/4d,EADA5N,EAAI,CAAC,EAcT,OAXA8sd,EAAW9sd,EAAG5Z,OACd4Z,EAAIgke,GAAchke,IAEZlf,IACF8sB,EAAQ5N,EAAEotd,OAASnC,EAAUjrd,EAAElf,IAAM4hf,GAAY1ie,EAAElf,IACnDsF,KAAKugf,cACDvgf,KAAKkwI,WAAan+E,GAAcn4C,EAAElf,GAAI8sB,EAAMkmD,WAAa,GAE7D1tE,KAAKugf,eAAgB,EAGlBvgf,KAAKugf,aACf,CAED,SAASC,KACL,QAAOxgf,KAAKkwI,YAAalwI,KAAKgne,MACjC,CAED,SAASyZ,KACL,QAAOzgf,KAAKkwI,WAAYlwI,KAAKgne,MAChC,CAED,SAASh0V,KACL,QAAOhzI,KAAKkwI,WAAYlwI,KAAKgne,QAA2B,IAAjBhne,KAAKine,OAC/C,CArJDxC,EAAM2C,aAAe,WAAc,EAwJnC,IAAIsZ,GAAc,wDAIdC,GACI,sKAER,SAASnC,GAAehke,EAAOlY,GAC3B,IAGIsuD,EACAgwb,EACAC,EALAh1d,EAAWrR,EAEXvL,EAAQ,KAkEZ,OA7DI4ve,GAAWrke,GACXqR,EAAW,CACPk6C,GAAIvrD,EAAMmke,cACVn7d,EAAGhJ,EAAMogV,MACTj0Q,EAAGnsE,EAAM01d,SAENnmZ,EAASvvE,KAAWmhD,OAAOnhD,IAClCqR,EAAW,CAAC,EACRvpB,EACAupB,EAASvpB,IAAQkY,EAEjBqR,EAASS,cAAgB9R,IAErBvL,EAAQyxe,GAAY1xe,KAAKwL,KACjCo2C,EAAoB,MAAb3hD,EAAM,IAAc,EAAI,EAC/B4c,EAAW,CACP7d,EAAG,EACHwV,EAAG8od,GAAMr9d,EAAMgge,KAASr+a,EACxB30D,EAAGqwe,GAAMr9d,EAAMige,KAASt+a,EACxB1zD,EAAGove,GAAMr9d,EAAMkge,KAAWv+a,EAC1Br4B,EAAG+zc,GAAMr9d,EAAMmge,KAAWx+a,EAC1BmV,GAAIuma,GAAMwS,GAA8B,IAArB7ve,EAAMoge,MAAwBz+a,KAE7C3hD,EAAQ0xe,GAAS3xe,KAAKwL,KAC9Bo2C,EAAoB,MAAb3hD,EAAM,IAAc,EAAI,EAC/B4c,EAAW,CACP7d,EAAG8ye,GAAS7xe,EAAM,GAAI2hD,GACtB+1B,EAAGm6Z,GAAS7xe,EAAM,GAAI2hD,GACtBmxD,EAAG++X,GAAS7xe,EAAM,GAAI2hD,GACtBptC,EAAGs9d,GAAS7xe,EAAM,GAAI2hD,GACtB30D,EAAG6kf,GAAS7xe,EAAM,GAAI2hD,GACtB1zD,EAAG4jf,GAAS7xe,EAAM,GAAI2hD,GACtBr4B,EAAGuod,GAAS7xe,EAAM,GAAI2hD,KAEP,MAAZ/kC,EAEPA,EAAW,CAAC,EAEQ,kBAAbA,IACN,SAAUA,GAAY,OAAQA,KAE/Bg1d,EAAUE,GACNzE,GAAYzwd,EAASriB,MACrB8ye,GAAYzwd,EAAS2rF,MAGzB3rF,EAAW,CAAC,GACHk6C,GAAK86a,EAAQv0d,aACtBT,EAAS86D,EAAIk6Z,EAAQ/ga,QAGzB8ga,EAAM,IAAInC,GAAS5yd,GAEfgzd,GAAWrke,IAAUmqd,EAAWnqd,EAAO,aACvCome,EAAI1Z,QAAU1sd,EAAM0sd,SAGpB2X,GAAWrke,IAAUmqd,EAAWnqd,EAAO,cACvCome,EAAIzzP,SAAW3yO,EAAM2yO,UAGlByzP,CACV,CAKD,SAASE,GAASE,EAAKpwb,GAInB,IAAIwrE,EAAM4kX,GAAO7od,WAAW6od,EAAIp/e,QAAQ,IAAK,MAE7C,OAAQ+5D,MAAMygE,GAAO,EAAIA,GAAOxrE,CACnC,CAED,SAASqwb,GAA0B5pd,EAAM7P,GACrC,IAAI40G,EAAM,CAAC,EAUX,OARAA,EAAIt8C,OACAt4D,EAAM0M,QAAUmD,EAAKnD,QAAyC,IAA9B1M,EAAMq2D,OAASxmD,EAAKwmD,QACpDxmD,EAAK/L,QAAQyiB,IAAIquF,EAAIt8C,OAAQ,KAAKoha,QAAQ15d,MACxC40G,EAAIt8C,OAGVs8C,EAAI9vG,cAAgB9E,GAAS6P,EAAK/L,QAAQyiB,IAAIquF,EAAIt8C,OAAQ,KAEnDs8C,CACV,CAED,SAAS2kX,GAAkB1pd,EAAM7P,GAC7B,IAAI40G,EACJ,OAAM/kG,EAAK64G,WAAa1oH,EAAM0oH,WAI9B1oH,EAAQ83d,GAAgB93d,EAAO6P,GAC3BA,EAAK8pd,SAAS35d,GACd40G,EAAM6kX,GAA0B5pd,EAAM7P,KAEtC40G,EAAM6kX,GAA0Bz5d,EAAO6P,IACnC/K,cAAgB8vG,EAAI9vG,aACxB8vG,EAAIt8C,QAAUs8C,EAAIt8C,QAGfs8C,GAZI,CAAE9vG,aAAc,EAAGwzD,OAAQ,EAazC,CAGD,SAASsha,GAAYx6d,EAAWxtB,GAC5B,OAAO,SAAUq/B,EAAK2uD,GAClB,IAASsjD,EAmBT,OAjBe,OAAXtjD,GAAoBzrB,OAAOyrB,KAC3BugZ,EACIvue,EACA,YACIA,EACA,uDACAA,EAHJ,kGAOJsxI,EAAMjyG,EACNA,EAAM2uD,EACNA,EAASsjD,GAIbo1W,GAAY9/e,KADNw+e,GAAe/ld,EAAK2uD,GACHxgE,GAChB5mB,IACV,CACJ,CAED,SAAS8/e,GAAYtX,EAAK38c,EAAUw1d,EAAUja,GAC1C,IAAI96c,EAAeT,EAAS8yd,cACxB1+Z,EAAO6+Z,GAASjzd,EAAS+uU,OACzB96Q,EAASg/Z,GAASjzd,EAASqkd,SAE1B1H,EAAIt4V,YAKTk3V,EAA+B,MAAhBA,GAA8BA,EAEzCtnZ,GACAd,GAASwpZ,EAAK5ue,GAAI4ue,EAAK,SAAW1oZ,EAASuha,GAE3Cpha,GACA0sZ,GAAMnE,EAAK,OAAQ5ue,GAAI4ue,EAAK,QAAUvoZ,EAAOoha,GAE7C/0d,GACAk8c,EAAI3te,GAAGslF,QAAQqoZ,EAAI3te,GAAG0xD,UAAYjgC,EAAe+0d,GAEjDja,GACA3C,EAAM2C,aAAaoB,EAAKvoZ,GAAQH,GAEvC,CA9FD0+Z,GAAezgf,GAAK0gf,GAASz2e,UAC7Bw2e,GAAe56W,QAAU26W,GA+FzB,IAAIxwc,GAAMqzc,GAAY,EAAG,OACrBzlB,GAAWylB,IAAa,EAAG,YAE/B,SAAS1wb,GAASl2C,GACd,MAAwB,kBAAVA,GAAsBA,aAAiB/Q,MACxD,CAGD,SAAS63e,GAAc9me,GACnB,OACI6sd,EAAS7sd,IACTkhD,EAAOlhD,IACPk2C,GAASl2C,IACTuvE,EAASvvE,IACT+me,GAAsB/me,IACtBgne,GAAoBhne,IACV,OAAVA,QACU7S,IAAV6S,CAEP,CAED,SAASgne,GAAoBhne,GACzB,IA4BI7R,EACAwE,EA7BAs0e,EAAaphe,EAAS7F,KAAW4rB,EAAc5rB,GAC/Ckne,GAAe,EACfpkd,EAAa,CACT,QACA,OACA,IACA,SACA,QACA,IACA,OACA,MACA,IACA,QACA,OACA,IACA,QACA,OACA,IACA,UACA,SACA,IACA,UACA,SACA,IACA,eACA,cACA,MAIJqkd,EAAcrkd,EAAW38B,OAE7B,IAAKgI,EAAI,EAAGA,EAAIg5e,EAAah5e,GAAK,EAC9BwE,EAAWmwB,EAAW30B,GACtB+4e,EAAeA,GAAgB/c,EAAWnqd,EAAOrN,GAGrD,OAAOs0e,GAAcC,CACxB,CAED,SAASH,GAAsB/me,GAC3B,IAAIone,EAAY98e,EAAQ0V,GACpBqne,GAAe,EAOnB,OANID,IACAC,EAGkB,IAFdrne,EAAMggB,QAAO,SAAU51B,GACnB,OAAQmlF,EAASnlF,IAAS8rD,GAASl2C,EACtC,IAAE7Z,QAEJihf,GAAaC,CACvB,CAED,SAASC,GAAetne,GACpB,IAUI7R,EACAwE,EAXAs0e,EAAaphe,EAAS7F,KAAW4rB,EAAc5rB,GAC/Ckne,GAAe,EACfpkd,EAAa,CACT,UACA,UACA,UACA,WACA,WACA,YAKR,IAAK30B,EAAI,EAAGA,EAAI20B,EAAW38B,OAAQgI,GAAK,EACpCwE,EAAWmwB,EAAW30B,GACtB+4e,EAAeA,GAAgB/c,EAAWnqd,EAAOrN,GAGrD,OAAOs0e,GAAcC,CACxB,CAED,SAASK,GAAkBC,EAAUz+a,GACjC,IAAIoe,EAAOqga,EAASrga,KAAKpe,EAAK,QAAQ,GACtC,OAAOoe,GAAQ,EACT,WACAA,GAAQ,EACR,WACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,UACAA,EAAO,EACP,WACA,UACT,CAED,SAASsga,GAAW7td,EAAM8td,GAEG,IAArBpqe,UAAUnX,SACLmX,UAAU,GAGJwpe,GAAcxpe,UAAU,KAC/Bsc,EAAOtc,UAAU,GACjBoqe,OAAUv6e,GACHm6e,GAAehqe,UAAU,MAChCoqe,EAAUpqe,UAAU,GACpBsc,OAAOzsB,IAPPysB,OAAOzsB,EACPu6e,OAAUv6e,IAWlB,IAAI47D,EAAMnvC,GAAQkod,KACd6F,EAAM7C,GAAgB/7a,EAAKvjE,MAAMoif,QAAQ,OACzCvqb,EAAS4sa,EAAM4d,eAAerif,KAAMmif,IAAQ,WAC5C39e,EACI09e,IACCrzb,EAAWqzb,EAAQrqb,IACdqqb,EAAQrqb,GAAQp5D,KAAKuB,KAAMujE,GAC3B2+a,EAAQrqb,IAEtB,OAAO73D,KAAK63D,OACRrzD,GAAUxE,KAAKorH,aAAakqJ,SAASz9M,EAAQ73D,KAAMs8e,GAAY/4a,IAEtE,CAED,SAASj4C,KACL,OAAO,IAAI67c,EAAOnne,KACrB,CAED,SAASkhf,GAAQ1me,EAAOkxd,GACpB,IAAI4W,EAAajb,EAAS7sd,GAASA,EAAQ8he,GAAY9he,GACvD,SAAMxa,KAAKkwI,YAAaoyW,EAAWpyW,aAIrB,iBADdw7V,EAAQD,GAAeC,IAAU,eAEtB1re,KAAKusD,UAAY+1b,EAAW/1b,UAE5B+1b,EAAW/1b,UAAYvsD,KAAKsrB,QAAQ82d,QAAQ1W,GAAOn/a,UAEjE,CAED,SAAS40b,GAAS3me,EAAOkxd,GACrB,IAAI4W,EAAajb,EAAS7sd,GAASA,EAAQ8he,GAAY9he,GACvD,SAAMxa,KAAKkwI,YAAaoyW,EAAWpyW,aAIrB,iBADdw7V,EAAQD,GAAeC,IAAU,eAEtB1re,KAAKusD,UAAY+1b,EAAW/1b,UAE5BvsD,KAAKsrB,QAAQi3d,MAAM7W,GAAOn/a,UAAY+1b,EAAW/1b,UAE/D,CAED,SAASi2b,GAAUh5e,EAAMguG,EAAIk0X,EAAO+W,GAChC,IAAIC,EAAYrb,EAAS79d,GAAQA,EAAO8ye,GAAY9ye,GAChDm5e,EAAUtb,EAAS7vX,GAAMA,EAAK8kY,GAAY9kY,GAC9C,SAAMx3G,KAAKkwI,WAAawyW,EAAUxyW,WAAayyW,EAAQzyW,aAK/B,OAFxBuyW,EAAcA,GAAe,MAEZ,GACPzif,KAAKkhf,QAAQwB,EAAWhX,IACvB1re,KAAKmhf,SAASuB,EAAWhX,MACZ,MAAnB+W,EAAY,GACPzif,KAAKmhf,SAASwB,EAASjX,IACtB1re,KAAKkhf,QAAQyB,EAASjX,GAEpC,CAED,SAASkX,GAAOpoe,EAAOkxd,GACnB,IACImX,EADAP,EAAajb,EAAS7sd,GAASA,EAAQ8he,GAAY9he,GAEvD,SAAMxa,KAAKkwI,YAAaoyW,EAAWpyW,aAIrB,iBADdw7V,EAAQD,GAAeC,IAAU,eAEtB1re,KAAKusD,YAAc+1b,EAAW/1b,WAErCs2b,EAAUP,EAAW/1b,UAEjBvsD,KAAKsrB,QAAQ82d,QAAQ1W,GAAOn/a,WAAas2b,GACzCA,GAAW7if,KAAKsrB,QAAQi3d,MAAM7W,GAAOn/a,WAGhD,CAED,SAASu2b,GAActoe,EAAOkxd,GAC1B,OAAO1re,KAAK4if,OAAOpoe,EAAOkxd,IAAU1re,KAAKkhf,QAAQ1me,EAAOkxd,EAC3D,CAED,SAASqX,GAAevoe,EAAOkxd,GAC3B,OAAO1re,KAAK4if,OAAOpoe,EAAOkxd,IAAU1re,KAAKmhf,SAAS3me,EAAOkxd,EAC5D,CAED,SAAS/pZ,GAAKnnE,EAAOkxd,EAAOsX,GACxB,IAAIvzb,EAAMwzb,EAAWz+e,EAErB,IAAKxE,KAAKkwI,UACN,OAAOvkD,IAKX,KAFAl8B,EAAO6vb,GAAgB9ke,EAAOxa,OAEpBkwI,UACN,OAAOvkD,IAOX,OAJAs3Z,EAAoD,KAAvCxzb,EAAKyvb,YAAcl/e,KAAKk/e,aAErCxT,EAAQD,GAAeC,IAGnB,IAAK,OACDlne,EAAS0+e,GAAUljf,KAAMyvD,GAAQ,GACjC,MACJ,IAAK,QACDjrD,EAAS0+e,GAAUljf,KAAMyvD,GACzB,MACJ,IAAK,UACDjrD,EAAS0+e,GAAUljf,KAAMyvD,GAAQ,EACjC,MACJ,IAAK,SACDjrD,GAAUxE,KAAOyvD,GAAQ,IACzB,MACJ,IAAK,SACDjrD,GAAUxE,KAAOyvD,GAAQ,IACzB,MACJ,IAAK,OACDjrD,GAAUxE,KAAOyvD,GAAQ,KACzB,MACJ,IAAK,MACDjrD,GAAUxE,KAAOyvD,EAAOwzb,GAAa,MACrC,MACJ,IAAK,OACDz+e,GAAUxE,KAAOyvD,EAAOwzb,GAAa,OACrC,MACJ,QACIz+e,EAASxE,KAAOyvD,EAGxB,OAAOuzb,EAAUx+e,EAAS6ne,GAAS7ne,EACtC,CAED,SAAS0+e,GAAUnje,EAAGC,GAClB,GAAID,EAAEkU,OAASjU,EAAEiU,OAGb,OAAQivd,GAAUlje,EAAGD,GAGzB,IAAIoje,EAAyC,IAAvBnje,EAAE69D,OAAS99D,EAAE89D,SAAgB79D,EAAEkU,QAAUnU,EAAEmU,SAE7Dkvd,EAASrje,EAAEuL,QAAQyiB,IAAIo1c,EAAgB,UAe3C,QAASA,GAXLnje,EAAIoje,EAAS,GAGHpje,EAAIoje,IAAWA,EAFfrje,EAAEuL,QAAQyiB,IAAIo1c,EAAiB,EAAG,YAMlCnje,EAAIoje,IAFJrje,EAAEuL,QAAQyiB,IAAIo1c,EAAiB,EAAG,UAETC,MAIF,CACxC,CAKD,SAAS9lf,KACL,OAAO0C,KAAKsrB,QAAQ0qC,OAAO,MAAM6B,OAAO,mCAC3C,CAED,SAASwrb,GAAYC,GACjB,IAAKtjf,KAAKkwI,UACN,OAAO,KAEX,IAAI1U,GAAqB,IAAf8nX,EACNpmf,EAAIs+H,EAAMx7H,KAAKsrB,QAAQkwG,MAAQx7H,KACnC,OAAI9C,EAAE2gF,OAAS,GAAK3gF,EAAE2gF,OAAS,KACpBwrZ,EACHnse,EACAs+H,EACM,iCACA,gCAGV3sE,EAAW/rD,KAAKkF,UAAUq7e,aAEtB7nX,EACOx7H,KAAKs7a,SAAS+nE,cAEd,IAAIvgf,KAAK9C,KAAKusD,UAA+B,GAAnBvsD,KAAKk/e,YAAmB,KACpDmE,cACAzhf,QAAQ,IAAKyne,EAAanse,EAAG,MAGnCmse,EACHnse,EACAs+H,EAAM,+BAAiC,6BAE9C,CAQD,SAAS+nX,KACL,IAAKvjf,KAAKkwI,UACN,MAAO,qBAAuBlwI,KAAKuV,GAAK,OAE5C,IAEI3G,EACAivE,EACAxpD,EACA2zC,EALAj3D,EAAO,SACPyye,EAAO,GAcX,OATKxjf,KAAKwgf,YACNzve,EAA4B,IAArB/Q,KAAKk/e,YAAoB,aAAe,mBAC/CsE,EAAO,KAEX50e,EAAS,IAAMmC,EAAO,MACtB8sE,EAAO,GAAK79E,KAAK69E,QAAU79E,KAAK69E,QAAU,KAAO,OAAS,SAC1DxpD,EAAW,wBACX2zC,EAASw7a,EAAO,OAETxjf,KAAK63D,OAAOjpD,EAASivE,EAAOxpD,EAAW2zC,EACjD,CAED,SAASnQ,GAAO4rb,GACPA,IACDA,EAAczjf,KAAKgzI,QACbyxV,EAAMif,iBACNjf,EAAMkf,eAEhB,IAAIn/e,EAAS6ke,EAAarpe,KAAMyjf,GAChC,OAAOzjf,KAAKorH,aAAaw4X,WAAWp/e,EACvC,CAED,SAASgF,GAAK4qB,EAAM+2c,GAChB,OACInre,KAAKkwI,YACHm3V,EAASjzc,IAASA,EAAK87G,WAAcosW,GAAYlod,GAAM87G,WAElDsuW,GAAe,CAAEhnY,GAAIx3G,KAAMwJ,KAAM4qB,IACnC4hC,OAAOh2D,KAAKg2D,UACZ80D,UAAUqgX,GAERnre,KAAKorH,aAAam+W,aAEhC,CAED,SAASsa,GAAQ1Y,GACb,OAAOnre,KAAKwJ,KAAK8ye,KAAenR,EACnC,CAED,SAAS3zX,GAAGpjF,EAAM+2c,GACd,OACInre,KAAKkwI,YACHm3V,EAASjzc,IAASA,EAAK87G,WAAcosW,GAAYlod,GAAM87G,WAElDsuW,GAAe,CAAEh1e,KAAMxJ,KAAMw3G,GAAIpjF,IACnC4hC,OAAOh2D,KAAKg2D,UACZ80D,UAAUqgX,GAERnre,KAAKorH,aAAam+W,aAEhC,CAED,SAASua,GAAM3Y,GACX,OAAOnre,KAAKw3G,GAAG8kY,KAAenR,EACjC,CAKD,SAASn1a,GAAO1zD,GACZ,IAAIyhf,EAEJ,YAAYp8e,IAARrF,EACOtC,KAAKkne,QAAQ2Q,OAGC,OADrBkM,EAAgB/L,GAAU11e,MAEtBtC,KAAKkne,QAAU6c,GAEZ/jf,KAEd,CA5HDyke,EAAMkf,cAAgB,uBACtBlf,EAAMif,iBAAmB,yBA6HzB,IAAIM,GAAOvnV,EACP,mJACA,SAAUn6J,GACN,YAAYqF,IAARrF,EACOtC,KAAKorH,aAELprH,KAAKg2D,OAAO1zD,EAE1B,IAGL,SAAS8oH,KACL,OAAOprH,KAAKkne,OACf,CAED,IAAI+c,GAAgB,IAChBC,GAAgB,GAAKD,GACrBE,GAAc,GAAKD,GACnBE,GAAmB,QAAwBD,GAG/C,SAASE,GAAM9oB,EAAUC,GACrB,OAASD,EAAWC,EAAWA,GAAWA,CAC7C,CAED,SAAS8oB,GAAiBt2e,EAAG9Q,EAAGsmB,GAE5B,OAAIxV,EAAI,KAAOA,GAAK,EAET,IAAIlL,KAAKkL,EAAI,IAAK9Q,EAAGsmB,GAAK4ge,GAE1B,IAAIthf,KAAKkL,EAAG9Q,EAAGsmB,GAAG+oC,SAEhC,CAED,SAASg4b,GAAev2e,EAAG9Q,EAAGsmB,GAE1B,OAAIxV,EAAI,KAAOA,GAAK,EAETlL,KAAKs+E,IAAIpzE,EAAI,IAAK9Q,EAAGsmB,GAAK4ge,GAE1Bthf,KAAKs+E,IAAIpzE,EAAG9Q,EAAGsmB,EAE7B,CAED,SAAS4+d,GAAQ1W,GACb,IAAIt3c,EAAMowd,EAEV,QAAc78e,KADd+je,EAAQD,GAAeC,KACc,gBAAVA,IAA4B1re,KAAKkwI,UACxD,OAAOlwI,KAKX,OAFAwkf,EAAcxkf,KAAKgne,OAASud,GAAiBD,GAErC5Y,GACJ,IAAK,OACDt3c,EAAOowd,EAAYxkf,KAAK69E,OAAQ,EAAG,GACnC,MACJ,IAAK,UACDzpD,EAAOowd,EACHxkf,KAAK69E,OACL79E,KAAKk0B,QAAWl0B,KAAKk0B,QAAU,EAC/B,GAEJ,MACJ,IAAK,QACDE,EAAOowd,EAAYxkf,KAAK69E,OAAQ79E,KAAKk0B,QAAS,GAC9C,MACJ,IAAK,OACDE,EAAOowd,EACHxkf,KAAK69E,OACL79E,KAAKk0B,QACLl0B,KAAKi0B,OAASj0B,KAAK2lH,WAEvB,MACJ,IAAK,UACDvxF,EAAOowd,EACHxkf,KAAK69E,OACL79E,KAAKk0B,QACLl0B,KAAKi0B,QAAUj0B,KAAKykf,aAAe,IAEvC,MACJ,IAAK,MACL,IAAK,OACDrwd,EAAOowd,EAAYxkf,KAAK69E,OAAQ79E,KAAKk0B,QAASl0B,KAAKi0B,QACnD,MACJ,IAAK,OACDG,EAAOp0B,KAAKnF,GAAG0xD,UACfn4B,GAAQiwd,GACJjwd,GAAQp0B,KAAKgne,OAAS,EAAIhne,KAAKk/e,YAAcgF,IAC7CC,IAEJ,MACJ,IAAK,SACD/vd,EAAOp0B,KAAKnF,GAAG0xD,UACfn4B,GAAQiwd,GAAMjwd,EAAM8vd,IACpB,MACJ,IAAK,SACD9vd,EAAOp0B,KAAKnF,GAAG0xD,UACfn4B,GAAQiwd,GAAMjwd,EAAM6vd,IAM5B,OAFAjkf,KAAKnF,GAAGslF,QAAQ/rD,GAChBqwc,EAAM2C,aAAapne,MAAM,GAClBA,IACV,CAED,SAASuif,GAAM7W,GACX,IAAIt3c,EAAMowd,EAEV,QAAc78e,KADd+je,EAAQD,GAAeC,KACc,gBAAVA,IAA4B1re,KAAKkwI,UACxD,OAAOlwI,KAKX,OAFAwkf,EAAcxkf,KAAKgne,OAASud,GAAiBD,GAErC5Y,GACJ,IAAK,OACDt3c,EAAOowd,EAAYxkf,KAAK69E,OAAS,EAAG,EAAG,GAAK,EAC5C,MACJ,IAAK,UACDzpD,EACIowd,EACIxkf,KAAK69E,OACL79E,KAAKk0B,QAAWl0B,KAAKk0B,QAAU,EAAK,EACpC,GACA,EACR,MACJ,IAAK,QACDE,EAAOowd,EAAYxkf,KAAK69E,OAAQ79E,KAAKk0B,QAAU,EAAG,GAAK,EACvD,MACJ,IAAK,OACDE,EACIowd,EACIxkf,KAAK69E,OACL79E,KAAKk0B,QACLl0B,KAAKi0B,OAASj0B,KAAK2lH,UAAY,GAC/B,EACR,MACJ,IAAK,UACDvxF,EACIowd,EACIxkf,KAAK69E,OACL79E,KAAKk0B,QACLl0B,KAAKi0B,QAAUj0B,KAAKykf,aAAe,GAAK,GACxC,EACR,MACJ,IAAK,MACL,IAAK,OACDrwd,EAAOowd,EAAYxkf,KAAK69E,OAAQ79E,KAAKk0B,QAASl0B,KAAKi0B,OAAS,GAAK,EACjE,MACJ,IAAK,OACDG,EAAOp0B,KAAKnF,GAAG0xD,UACfn4B,GACI+vd,GACAE,GACIjwd,GAAQp0B,KAAKgne,OAAS,EAAIhne,KAAKk/e,YAAcgF,IAC7CC,IAEJ,EACJ,MACJ,IAAK,SACD/vd,EAAOp0B,KAAKnF,GAAG0xD,UACfn4B,GAAQ8vd,GAAgBG,GAAMjwd,EAAM8vd,IAAiB,EACrD,MACJ,IAAK,SACD9vd,EAAOp0B,KAAKnF,GAAG0xD,UACfn4B,GAAQ6vd,GAAgBI,GAAMjwd,EAAM6vd,IAAiB,EAM7D,OAFAjkf,KAAKnF,GAAGslF,QAAQ/rD,GAChBqwc,EAAM2C,aAAapne,MAAM,GAClBA,IACV,CAED,SAASusD,KACL,OAAOvsD,KAAKnF,GAAG0xD,UAAkC,KAArBvsD,KAAKine,SAAW,EAC/C,CAED,SAASyd,KACL,OAAOn7e,KAAKo/D,MAAM3oE,KAAKusD,UAAY,IACtC,CAED,SAAS+uX,KACL,OAAO,IAAIx4a,KAAK9C,KAAKusD,UACxB,CAED,SAASmhB,KACL,IAAIxwE,EAAI8C,KACR,MAAO,CACH9C,EAAE2gF,OACF3gF,EAAEg3B,QACFh3B,EAAE+2B,OACF/2B,EAAEwgF,OACFxgF,EAAEugF,SACFvgF,EAAE83C,SACF93C,EAAEsgF,cAET,CAED,SAASmna,KACL,IAAIznf,EAAI8C,KACR,MAAO,CACH0/E,MAAOxiF,EAAE2gF,OACTiC,OAAQ5iF,EAAEg3B,QACVD,KAAM/2B,EAAE+2B,OACRisD,MAAOhjF,EAAEgjF,QACTE,QAASljF,EAAEkjF,UACXC,QAASnjF,EAAEmjF,UACX/zD,aAAcpvB,EAAEovB,eAEvB,CAED,SAASkgC,KAEL,OAAOxsD,KAAKkwI,UAAYlwI,KAAKqjf,cAAgB,IAChD,CAED,SAASuB,KACL,OAAO10W,EAAQlwI,KAClB,CAED,SAAS6kf,KACL,OAAOp/b,EAAO,CAAC,EAAGqgb,EAAgB9le,MACrC,CAED,SAAS8kf,KACL,OAAOhf,EAAgB9le,MAAMqjC,QAChC,CAED,SAAS0hd,KACL,MAAO,CACHvqe,MAAOxa,KAAKuV,GACZsiD,OAAQ73D,KAAK6me,GACb7wa,OAAQh2D,KAAKkne,QACbzhW,MAAOzlI,KAAKgne,OACZ10a,OAAQtyD,KAAKmme,QAEpB,CAmDD,SAAS6e,GAAW9nf,EAAG26D,GACnB,IAAIlvD,EACAqb,EACAiQ,EACAgxd,EAAOjlf,KAAKklf,OAASlN,GAAU,MAAMkN,MACzC,IAAKv8e,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EASlC,OAPS,kBADMs8e,EAAKt8e,GAAG62J,QAGfvrI,EAAOwwc,EAAMwgB,EAAKt8e,GAAG62J,OAAO4iV,QAAQ,OACpC6C,EAAKt8e,GAAG62J,MAAQvrI,EAAKs4B,kBAId04b,EAAKt8e,GAAGkmH,OACnB,IAAK,YACDo2X,EAAKt8e,GAAGkmH,MAAQ,IAChB,MACJ,IAAK,SAED56F,EAAOwwc,EAAMwgB,EAAKt8e,GAAGkmH,OAAOuzX,QAAQ,OAAO71b,UAC3C04b,EAAKt8e,GAAGkmH,MAAQ56F,EAAKs4B,UAIjC,OAAO04b,CACV,CAED,SAASE,GAAgBC,EAASvtb,EAAQvF,GACtC,IAAI3pD,EACAqb,EAEA5qB,EACA86Q,EACArrL,EAHAo8Z,EAAOjlf,KAAKilf,OAMhB,IAFAG,EAAUA,EAAQ1+c,cAEb/9B,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EAKlC,GAJAvP,EAAO6rf,EAAKt8e,GAAGvP,KAAKstC,cACpBwtO,EAAO+wO,EAAKt8e,GAAGurQ,KAAKxtO,cACpBmiD,EAASo8Z,EAAKt8e,GAAGkgF,OAAOniD,cAEpB4rB,EACA,OAAQuF,GACJ,IAAK,IACL,IAAK,KACL,IAAK,MACD,GAAIq8M,IAASkxO,EACT,OAAOH,EAAKt8e,GAEhB,MAEJ,IAAK,OACD,GAAIvP,IAASgsf,EACT,OAAOH,EAAKt8e,GAEhB,MAEJ,IAAK,QACD,GAAIkgF,IAAWu8Z,EACX,OAAOH,EAAKt8e,QAIrB,GAAI,CAACvP,EAAM86Q,EAAMrrL,GAAQznF,QAAQgkf,IAAY,EAChD,OAAOH,EAAKt8e,EAGvB,CAED,SAAS08e,GAAsB3f,EAAK7nZ,GAChC,IAAI//C,EAAM4nc,EAAIlmU,OAASkmU,EAAI72W,MAAQ,GAAM,EACzC,YAAalnH,IAATk2E,EACO4mZ,EAAMiB,EAAIlmU,OAAO3hF,OAEjB4mZ,EAAMiB,EAAIlmU,OAAO3hF,QAAUA,EAAO6nZ,EAAIz4d,QAAU6wB,CAE9D,CAED,SAASwnd,KACL,IAAI38e,EACAqb,EACAyU,EACAwsd,EAAOjlf,KAAKorH,aAAa65X,OAC7B,IAAKt8e,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EAAG,CAIrC,GAFA8vB,EAAMz4B,KAAKsrB,QAAQ82d,QAAQ,OAAO71b,UAE9B04b,EAAKt8e,GAAG62J,OAAS/mI,GAAOA,GAAOwsd,EAAKt8e,GAAGkmH,MACvC,OAAOo2X,EAAKt8e,GAAGvP,KAEnB,GAAI6rf,EAAKt8e,GAAGkmH,OAASp2F,GAAOA,GAAOwsd,EAAKt8e,GAAG62J,MACvC,OAAOylV,EAAKt8e,GAAGvP,IAEtB,CAED,MAAO,EACV,CAED,SAASmsf,KACL,IAAI58e,EACAqb,EACAyU,EACAwsd,EAAOjlf,KAAKorH,aAAa65X,OAC7B,IAAKt8e,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EAAG,CAIrC,GAFA8vB,EAAMz4B,KAAKsrB,QAAQ82d,QAAQ,OAAO71b,UAE9B04b,EAAKt8e,GAAG62J,OAAS/mI,GAAOA,GAAOwsd,EAAKt8e,GAAGkmH,MACvC,OAAOo2X,EAAKt8e,GAAGkgF,OAEnB,GAAIo8Z,EAAKt8e,GAAGkmH,OAASp2F,GAAOA,GAAOwsd,EAAKt8e,GAAG62J,MACvC,OAAOylV,EAAKt8e,GAAGkgF,MAEtB,CAED,MAAO,EACV,CAED,SAAS28Z,KACL,IAAI78e,EACAqb,EACAyU,EACAwsd,EAAOjlf,KAAKorH,aAAa65X,OAC7B,IAAKt8e,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EAAG,CAIrC,GAFA8vB,EAAMz4B,KAAKsrB,QAAQ82d,QAAQ,OAAO71b,UAE9B04b,EAAKt8e,GAAG62J,OAAS/mI,GAAOA,GAAOwsd,EAAKt8e,GAAGkmH,MACvC,OAAOo2X,EAAKt8e,GAAGurQ,KAEnB,GAAI+wO,EAAKt8e,GAAGkmH,OAASp2F,GAAOA,GAAOwsd,EAAKt8e,GAAG62J,MACvC,OAAOylV,EAAKt8e,GAAGurQ,IAEtB,CAED,MAAO,EACV,CAED,SAASuxO,KACL,IAAI98e,EACAqb,EACA8Z,EACArF,EACAwsd,EAAOjlf,KAAKorH,aAAa65X,OAC7B,IAAKt8e,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EAMlC,GALAm1B,EAAMmnd,EAAKt8e,GAAG62J,OAASylV,EAAKt8e,GAAGkmH,MAAQ,GAAM,EAG7Cp2F,EAAMz4B,KAAKsrB,QAAQ82d,QAAQ,OAAO71b,UAG7B04b,EAAKt8e,GAAG62J,OAAS/mI,GAAOA,GAAOwsd,EAAKt8e,GAAGkmH,OACvCo2X,EAAKt8e,GAAGkmH,OAASp2F,GAAOA,GAAOwsd,EAAKt8e,GAAG62J,MAExC,OACKx/J,KAAK69E,OAAS4mZ,EAAMwgB,EAAKt8e,GAAG62J,OAAO3hF,QAAU//C,EAC9Cmnd,EAAKt8e,GAAGsE,OAKpB,OAAOjN,KAAK69E,MACf,CAED,SAAS6na,GAAcphC,GAInB,OAHKqgB,EAAW3ke,KAAM,mBAClB2lf,GAAiBlnf,KAAKuB,MAEnBskd,EAAWtkd,KAAK4lf,eAAiB5lf,KAAK6lf,UAChD,CAED,SAASC,GAAcxhC,GAInB,OAHKqgB,EAAW3ke,KAAM,mBAClB2lf,GAAiBlnf,KAAKuB,MAEnBskd,EAAWtkd,KAAK+lf,eAAiB/lf,KAAK6lf,UAChD,CAED,SAASG,GAAgB1hC,GAIrB,OAHKqgB,EAAW3ke,KAAM,qBAClB2lf,GAAiBlnf,KAAKuB,MAEnBskd,EAAWtkd,KAAKimf,iBAAmBjmf,KAAK6lf,UAClD,CAED,SAASK,GAAa5hC,EAAUtuZ,GAC5B,OAAOA,EAAO8vb,cAAcxhC,EAC/B,CAED,SAAS6hC,GAAa7hC,EAAUtuZ,GAC5B,OAAOA,EAAO0vb,cAAcphC,EAC/B,CAED,SAAS8hC,GAAe9hC,EAAUtuZ,GAC9B,OAAOA,EAAOgwb,gBAAgB1hC,EACjC,CAED,SAAS+hC,GAAoB/hC,EAAUtuZ,GACnC,OAAOA,EAAOswb,sBAAwBzY,EACzC,CAED,SAAS8X,KACL,IAIIh9e,EACAqb,EALAuie,EAAa,GACbC,EAAa,GACbC,EAAe,GACfhV,EAAc,GAGdwT,EAAOjlf,KAAKilf,OAEhB,IAAKt8e,EAAI,EAAGqb,EAAIihe,EAAKtkf,OAAQgI,EAAIqb,IAAKrb,EAClC69e,EAAWpmf,KAAKmue,GAAY0W,EAAKt8e,GAAGvP,OACpCmtf,EAAWnmf,KAAKmue,GAAY0W,EAAKt8e,GAAGurQ,OACpCuyO,EAAarmf,KAAKmue,GAAY0W,EAAKt8e,GAAGkgF,SAEtC4oZ,EAAYrxe,KAAKmue,GAAY0W,EAAKt8e,GAAGvP,OACrCq4e,EAAYrxe,KAAKmue,GAAY0W,EAAKt8e,GAAGurQ,OACrCu9N,EAAYrxe,KAAKmue,GAAY0W,EAAKt8e,GAAGkgF,SAGzC7oF,KAAK6lf,WAAa,IAAIjud,OAAO,KAAO65c,EAAYhle,KAAK,KAAO,IAAK,KACjEzM,KAAK4lf,eAAiB,IAAIhud,OAAO,KAAO4ud,EAAW/5e,KAAK,KAAO,IAAK,KACpEzM,KAAK+lf,eAAiB,IAAInud,OAAO,KAAO2ud,EAAW95e,KAAK,KAAO,IAAK,KACpEzM,KAAKimf,iBAAmB,IAAIrud,OACxB,KAAO6ud,EAAah6e,KAAK,KAAO,IAChC,IAEP,CAYD,SAASi6e,GAAuBp7e,EAAOspD,GACnCq0a,EAAe,EAAG,CAAC39d,EAAOA,EAAM3K,QAAS,EAAGi0D,EAC/C,CAyCD,SAAS+xb,GAAense,GACpB,OAAOose,GAAqBnof,KACxBuB,KACAwa,EACAxa,KAAKm0B,OACLn0B,KAAK2lH,UACL3lH,KAAKorH,aAAaynX,MAAMb,IACxBhye,KAAKorH,aAAaynX,MAAMZ,IAE/B,CAED,SAAS4U,GAAkBrse,GACvB,OAAOose,GAAqBnof,KACxBuB,KACAwa,EACAxa,KAAK0+e,UACL1+e,KAAKykf,aACL,EACA,EAEP,CAED,SAASqC,KACL,OAAOpU,GAAY1ye,KAAK69E,OAAQ,EAAG,EACtC,CAED,SAASkpa,KACL,OAAOrU,GAAY1ye,KAAKgnf,cAAe,EAAG,EAC7C,CAED,SAASC,KACL,IAAIC,EAAWlnf,KAAKorH,aAAaynX,MACjC,OAAOH,GAAY1ye,KAAK69E,OAAQqpa,EAASlV,IAAKkV,EAASjV,IAC1D,CAED,SAASkV,KACL,IAAID,EAAWlnf,KAAKorH,aAAaynX,MACjC,OAAOH,GAAY1ye,KAAKi8e,WAAYiL,EAASlV,IAAKkV,EAASjV,IAC9D,CAED,SAAS2U,GAAqBpse,EAAO2Z,EAAMwxF,EAASqsX,EAAKC,GACrD,IAAImV,EACJ,OAAa,MAAT5se,EACO+3d,GAAWvye,KAAMgye,EAAKC,GAAKp0Z,MAG9B1pD,GADJizd,EAAc1U,GAAYl4d,EAAOw3d,EAAKC,MAElC99c,EAAOizd,GAEJC,GAAW5of,KAAKuB,KAAMwa,EAAO2Z,EAAMwxF,EAASqsX,EAAKC,GAE/D,CAED,SAASoV,GAAWpL,EAAU9nd,EAAMwxF,EAASqsX,EAAKC,GAC9C,IAAIqV,EAAgBnV,GAAmB8J,EAAU9nd,EAAMwxF,EAASqsX,EAAKC,GACjEh+c,EAAOq8F,GAAcg3X,EAAczpa,KAAM,EAAGypa,EAAchV,WAK9D,OAHAtye,KAAK69E,KAAK5pD,EAAKs8F,kBACfvwH,KAAKk0B,MAAMD,EAAKu8F,eAChBxwH,KAAKi0B,KAAKA,EAAKw8F,cACRzwH,IACV,CAuBD,SAASunf,GAAc/se,GACnB,OAAgB,MAATA,EACDjR,KAAKq7E,MAAM5kF,KAAKk0B,QAAU,GAAK,GAC/Bl0B,KAAKk0B,MAAoB,GAAb1Z,EAAQ,GAAUxa,KAAKk0B,QAAU,EACtD,CApaD+0c,EAAe,IAAK,EAAG,EAAG,WAC1BA,EAAe,KAAM,EAAG,EAAG,WAC3BA,EAAe,MAAO,EAAG,EAAG,WAC5BA,EAAe,OAAQ,EAAG,EAAG,WAC7BA,EAAe,QAAS,EAAG,EAAG,aAE9BA,EAAe,IAAK,CAAC,IAAK,GAAI,KAAM,WACpCA,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,WAClCA,EAAe,IAAK,CAAC,MAAO,GAAI,EAAG,WACnCA,EAAe,IAAK,CAAC,OAAQ,GAAI,EAAG,WAEpCkF,GAAc,IAAK+X,IACnB/X,GAAc,KAAM+X,IACpB/X,GAAc,MAAO+X,IACrB/X,GAAc,OAAQgY,IACtBhY,GAAc,QAASiY,IAEvBzX,GACI,CAAC,IAAK,KAAM,MAAO,OAAQ,UAC3B,SAAUn0d,EAAOnQ,EAAOtK,EAAQuL,GAC5B,IAAIo6d,EAAM3le,EAAOmne,QAAQsgB,UAAUhte,EAAOlP,EAAOvL,EAAOome,SACpDT,EACAI,EAAgB/le,GAAQ2le,IAAMA,EAE9BI,EAAgB/le,GAAQqle,WAAa5qd,CAE5C,IAGL2zd,GAAc,IAAKN,IACnBM,GAAc,KAAMN,IACpBM,GAAc,MAAON,IACrBM,GAAc,OAAQN,IACtBM,GAAc,KAAMkY,IAEpB1X,GAAc,CAAC,IAAK,KAAM,MAAO,QAASK,IAC1CL,GAAc,CAAC,OAAO,SAAUn0d,EAAOnQ,EAAOtK,EAAQuL,GAClD,IAAI2D,EACAlP,EAAOmne,QAAQof,uBACfr3e,EAAQuL,EAAMvL,MAAMlP,EAAOmne,QAAQof,uBAGnCvmf,EAAOmne,QAAQugB,oBACfp9e,EAAM2ke,IAAQjve,EAAOmne,QAAQugB,oBAAoBjte,EAAOvL,GAExD5E,EAAM2ke,IAAQl3c,SAAStd,EAAO,GAErC,IA0ODyud,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOjpe,KAAKi8e,WAAa,GAC5B,IAEDhT,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,OAAOjpe,KAAKgnf,cAAgB,GAC/B,IAMDN,GAAuB,OAAQ,YAC/BA,GAAuB,QAAS,YAChCA,GAAuB,OAAQ,eAC/BA,GAAuB,QAAS,eAIhCnb,GAAa,WAAY,MACzBA,GAAa,cAAe,MAI5BS,GAAgB,WAAY,GAC5BA,GAAgB,cAAe,GAI/BmC,GAAc,IAAKL,IACnBK,GAAc,IAAKL,IACnBK,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,OAAQR,GAAWN,IACjCc,GAAc,OAAQR,GAAWN,IACjCc,GAAc,QAASP,GAAWN,IAClCa,GAAc,QAASP,GAAWN,IAElCuB,GACI,CAAC,OAAQ,QAAS,OAAQ,UAC1B,SAAUr0d,EAAO2Z,EAAMp0B,EAAQuL,GAC3B6oB,EAAK7oB,EAAMtG,OAAO,EAAG,IAAMsne,GAAM9xd,EACpC,IAGLq0d,GAAkB,CAAC,KAAM,OAAO,SAAUr0d,EAAO2Z,EAAMp0B,EAAQuL,GAC3D6oB,EAAK7oB,GAASm5d,EAAMkN,kBAAkBn3d,EACzC,IAqEDyud,EAAe,IAAK,EAAG,KAAM,WAI7BsC,GAAa,UAAW,KAIxBS,GAAgB,UAAW,GAI3BmC,GAAc,IAAKjB,IACnByB,GAAc,KAAK,SAAUn0d,EAAOnQ,GAChCA,EAAMysI,IAA8B,GAApBw1V,GAAM9xd,GAAS,EAClC,IAYDyud,EAAe,IAAK,CAAC,KAAM,GAAI,KAAM,QAIrCsC,GAAa,OAAQ,KAGrBS,GAAgB,OAAQ,GAIxBmC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BgB,GAAc,MAAM,SAAU7pB,EAAUtuZ,GAEpC,OAAOsuZ,EACDtuZ,EAAO8xa,yBAA2B9xa,EAAO+xa,cACzC/xa,EAAO6xa,8BAChB,IAED8G,GAAc,CAAC,IAAK,MAAOM,IAC3BN,GAAc,MAAM,SAAUn0d,EAAOnQ,GACjCA,EAAM4ke,IAAQ3C,GAAM9xd,EAAMvL,MAAMs+d,IAAW,GAC9C,IAID,IAAIma,GAAmBjb,GAAW,QAAQ,GAyB1C,SAASkb,GAAgBnte,GACrB,IAAI83d,EACA/oe,KAAKoZ,OACA3iB,KAAKsrB,QAAQ82d,QAAQ,OAASpif,KAAKsrB,QAAQ82d,QAAQ,SAAW,OAC/D,EACR,OAAgB,MAAT5ne,EAAgB83d,EAAYtye,KAAK+tC,IAAIvzB,EAAQ83d,EAAW,IAClE,CA3BDrJ,EAAe,MAAO,CAAC,OAAQ,GAAI,OAAQ,aAI3CsC,GAAa,YAAa,OAG1BS,GAAgB,YAAa,GAI7BmC,GAAc,MAAOT,IACrBS,GAAc,OAAQf,IACtBuB,GAAc,CAAC,MAAO,SAAS,SAAUn0d,EAAOnQ,EAAOtK,GACnDA,EAAOg8e,WAAazP,GAAM9xd,EAC7B,IAgBDyud,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCsC,GAAa,SAAU,KAIvBS,GAAgB,SAAU,IAI1BmC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BwB,GAAc,CAAC,IAAK,MAAOQ,IAI3B,IAAIyY,GAAenb,GAAW,WAAW,GAIzCxD,EAAe,IAAK,CAAC,KAAM,GAAI,EAAG,UAIlCsC,GAAa,SAAU,KAIvBS,GAAgB,SAAU,IAI1BmC,GAAc,IAAKZ,IACnBY,GAAc,KAAMZ,GAAWJ,IAC/BwB,GAAc,CAAC,IAAK,MAAOS,IAI3B,IA8CI9je,GAAOu8e,GA9CPC,GAAerb,GAAW,WAAW,GA+CzC,IA3CAxD,EAAe,IAAK,EAAG,GAAG,WACtB,SAAUjpe,KAAKw9E,cAAgB,IAClC,IAEDyrZ,EAAe,EAAG,CAAC,KAAM,GAAI,GAAG,WAC5B,SAAUjpe,KAAKw9E,cAAgB,GAClC,IAEDyrZ,EAAe,EAAG,CAAC,MAAO,GAAI,EAAG,eACjCA,EAAe,EAAG,CAAC,OAAQ,GAAI,GAAG,WAC9B,OAA4B,GAArBjpe,KAAKw9E,aACf,IACDyrZ,EAAe,EAAG,CAAC,QAAS,GAAI,GAAG,WAC/B,OAA4B,IAArBjpe,KAAKw9E,aACf,IACDyrZ,EAAe,EAAG,CAAC,SAAU,GAAI,GAAG,WAChC,OAA4B,IAArBjpe,KAAKw9E,aACf,IACDyrZ,EAAe,EAAG,CAAC,UAAW,GAAI,GAAG,WACjC,OAA4B,IAArBjpe,KAAKw9E,aACf,IACDyrZ,EAAe,EAAG,CAAC,WAAY,GAAI,GAAG,WAClC,OAA4B,IAArBjpe,KAAKw9E,aACf,IACDyrZ,EAAe,EAAG,CAAC,YAAa,GAAI,GAAG,WACnC,OAA4B,IAArBjpe,KAAKw9E,aACf,IAID+tZ,GAAa,cAAe,MAI5BS,GAAgB,cAAe,IAI/BmC,GAAc,IAAKT,GAAWR,IAC9BiB,GAAc,KAAMT,GAAWP,IAC/BgB,GAAc,MAAOT,GAAWN,IAG3B9he,GAAQ,OAAQA,GAAM3K,QAAU,EAAG2K,IAAS,IAC7C6ie,GAAc7ie,GAAOuie,IAGzB,SAASka,GAAQvte,EAAOnQ,GACpBA,EAAMgle,IAAe/C,GAAuB,KAAhB,KAAO9xd,GACtC,CAED,IAAKlP,GAAQ,IAAKA,GAAM3K,QAAU,EAAG2K,IAAS,IAC1Cqje,GAAcrje,GAAOy8e,IAYzB,SAASC,KACL,OAAOhof,KAAKgne,OAAS,MAAQ,EAChC,CAED,SAASihB,KACL,OAAOjof,KAAKgne,OAAS,6BAA+B,EACvD,CAfD6gB,GAAoBpb,GAAW,gBAAgB,GAI/CxD,EAAe,IAAK,EAAG,EAAG,YAC1BA,EAAe,KAAM,EAAG,EAAG,YAY3B,IAAIpta,GAAQsra,EAAOn/d,UAwGnB,SAASkgf,GAAW1te,GAChB,OAAO8he,GAAoB,IAAR9he,EACtB,CAED,SAAS2te,KACL,OAAO7L,GAAYvke,MAAM,KAAMD,WAAWswe,WAC7C,CAED,SAASC,GAAmBjze,GACxB,OAAOA,CACV,CAhHDymD,GAAM9tB,IAAMA,GACZ8tB,GAAMy5M,SAAW2sO,GACjBpmb,GAAMvwC,MAAQA,GACduwC,GAAM8lB,KAAOA,GACb9lB,GAAM0mb,MAAQA,GACd1mb,GAAMhE,OAASA,GACfgE,GAAMryD,KAAOA,GACbqyD,GAAMgob,QAAUA,GAChBhob,GAAM27C,GAAKA,GACX37C,GAAMiob,MAAQA,GACdjob,GAAMjiE,IAAMize,GACZhxa,GAAMipb,UAAYA,GAClBjpb,GAAMqlb,QAAUA,GAChBrlb,GAAMslb,SAAWA,GACjBtlb,GAAM2mb,UAAYA,GAClB3mb,GAAM+mb,OAASA,GACf/mb,GAAMinb,cAAgBA,GACtBjnb,GAAMknb,eAAiBA,GACvBlnb,GAAMq0E,QAAU00W,GAChB/ob,GAAMmob,KAAOA,GACbnob,GAAM7F,OAASA,GACf6F,GAAMuvD,WAAaA,GACnBvvD,GAAMpkC,IAAMumd,GACZnib,GAAMh5C,IAAMk7d,GACZlib,GAAMgpb,aAAeA,GACrBhpb,GAAM1iE,IAAM2ze,GACZjxa,GAAMumb,QAAUA,GAChBvmb,GAAM8/Z,SAAWA,GACjB9/Z,GAAM6R,QAAUA,GAChB7R,GAAM8ob,SAAWA,GACjB9ob,GAAMy/W,OAASA,GACfz/W,GAAMwnb,YAAcA,GACpBxnb,GAAM0nb,QAAUA,GACM,qBAAX3/d,QAAwC,MAAdA,OAAOC,MACxCg4C,GAAMj4C,OAAOC,IAAI,+BAAiC,WAC9C,MAAO,UAAY7jB,KAAK63D,SAAW,GACtC,GAELgE,GAAMrP,OAASA,GACfqP,GAAMv+D,SAAWA,GACjBu+D,GAAM6ob,KAAOA,GACb7ob,GAAMtP,QAAUA,GAChBsP,GAAMkpb,aAAeA,GACrBlpb,GAAMupb,QAAUE,GAChBzpb,GAAMysb,UAAY/C,GAClB1pb,GAAM0sb,QAAU/C,GAChB3pb,GAAM2sb,QAAU/C,GAChB5pb,GAAMgiB,KAAO+zZ,GACb/1a,GAAMuwa,WAAayF,GACnBh2a,GAAMogb,SAAW0K,GACjB9qb,GAAMmrb,YAAcH,GACpBhrb,GAAM+hB,QAAU/hB,GAAMgkB,SAAW0na,GACjC1rb,GAAM3nC,MAAQ68c,GACdl1a,GAAM+wa,YAAcoE,GACpBn1a,GAAM1nC,KAAO0nC,GAAMkkB,MAAQkzZ,GAC3Bp3a,GAAM6ib,QAAU7ib,GAAM4sb,SAAWvV,GACjCr3a,GAAM62a,YAAcuU,GACpBprb,GAAM6sb,gBAAkBvB,GACxBtrb,GAAM8sb,eAAiB7B,GACvBjrb,GAAM+sb,sBAAwB7B,GAC9Blrb,GAAM5nC,KAAOyzd,GACb7rb,GAAM8hB,IAAM9hB,GAAMokB,KAAOg1Z,GACzBp5a,GAAM8pD,QAAUuvX,GAChBr5a,GAAM4ob,WAAatP,GACnBt5a,GAAMy2a,UAAYqV,GAClB9rb,GAAM6hB,KAAO7hB,GAAMqkB,MAAQy2Z,GAC3B96a,GAAM4hB,OAAS5hB,GAAMukB,QAAUwna,GAC/B/rb,GAAM7mB,OAAS6mB,GAAMwkB,QAAUyna,GAC/Bjsb,GAAM2hB,YAAc3hB,GAAMvvC,aAAeu7d,GACzChsb,GAAMqjb,UAAYO,GAClB5jb,GAAM2/D,IAAMwkX,GACZnkb,GAAM0jb,MAAQU,GACdpkb,GAAMusb,UAAYlI,GAClBrkb,GAAMukb,qBAAuBA,GAC7Bvkb,GAAMgtb,MAAQxI,GACdxkb,GAAM2kb,QAAUA,GAChB3kb,GAAM4kb,YAAcA,GACpB5kb,GAAMm3E,MAAQA,GACdn3E,GAAM4pE,MAAQuN,GACdn3E,GAAMitb,SAAWd,GACjBnsb,GAAMktb,SAAWd,GACjBpsb,GAAMy/D,MAAQmhC,EACV,kDACAirV,IAEJ7rb,GAAMikB,OAAS28E,EACX,mDACAs0U,IAEJl1a,GAAM6jB,MAAQ+8E,EACV,iDACAm1U,IAEJ/1a,GAAM2nb,KAAO/mV,EACT,2GACAsjV,IAEJlkb,GAAMmtb,aAAevsV,EACjB,0GACA6jV,IAeJ,IAAI2I,GAAU9gB,EAAOnge,UAuCrB,SAASkhf,GAAMrxb,EAAQ12D,EAAOk9D,EAAO+1D,GACjC,IAAIp+D,EAASgib,KACTx8W,EAAMqpW,IAAY1re,IAAIi7H,EAAQjzH,GAClC,OAAO60D,EAAOqI,GAAOm9D,EAAK3jE,EAC7B,CAED,SAASsxb,GAAetxb,EAAQ12D,EAAOk9D,GAQnC,GAPI0rB,EAASlyB,KACT12D,EAAQ02D,EACRA,OAASlwD,GAGbkwD,EAASA,GAAU,GAEN,MAAT12D,EACA,OAAO+nf,GAAMrxb,EAAQ12D,EAAOk9D,EAAO,SAGvC,IAAI11D,EACAgR,EAAM,GACV,IAAKhR,EAAI,EAAGA,EAAI,GAAIA,IAChBgR,EAAIhR,GAAKugf,GAAMrxb,EAAQlvD,EAAG01D,EAAO,SAErC,OAAO1kD,CACV,CAUD,SAASyve,GAAiBC,EAAcxxb,EAAQ12D,EAAOk9D,GACvB,mBAAjBgrb,GACHt/Z,EAASlyB,KACT12D,EAAQ02D,EACRA,OAASlwD,GAGbkwD,EAASA,GAAU,KAGnB12D,EADA02D,EAASwxb,EAETA,GAAe,EAEXt/Z,EAASlyB,KACT12D,EAAQ02D,EACRA,OAASlwD,GAGbkwD,EAASA,GAAU,IAGvB,IAEIlvD,EAFAqtD,EAASgib,KACT9/c,EAAQmxd,EAAerzb,EAAO68a,MAAMb,IAAM,EAE1Cr4d,EAAM,GAEV,GAAa,MAATxY,EACA,OAAO+nf,GAAMrxb,GAAS12D,EAAQ+2B,GAAS,EAAGmmC,EAAO,OAGrD,IAAK11D,EAAI,EAAGA,EAAI,EAAGA,IACfgR,EAAIhR,GAAKugf,GAAMrxb,GAASlvD,EAAIuvB,GAAS,EAAGmmC,EAAO,OAEnD,OAAO1kD,CACV,CAED,SAAS2ve,GAAWzxb,EAAQ12D,GACxB,OAAOgof,GAAetxb,EAAQ12D,EAAO,SACxC,CAED,SAASoof,GAAgB1xb,EAAQ12D,GAC7B,OAAOgof,GAAetxb,EAAQ12D,EAAO,cACxC,CAED,SAASqof,GAAaH,EAAcxxb,EAAQ12D,GACxC,OAAOiof,GAAiBC,EAAcxxb,EAAQ12D,EAAO,WACxD,CAED,SAASsof,GAAkBJ,EAAcxxb,EAAQ12D,GAC7C,OAAOiof,GAAiBC,EAAcxxb,EAAQ12D,EAAO,gBACxD,CAED,SAASuof,GAAgBL,EAAcxxb,EAAQ12D,GAC3C,OAAOiof,GAAiBC,EAAcxxb,EAAQ12D,EAAO,cACxD,CA7HD8nf,GAAQ3zO,SAAWA,EACnB2zO,GAAQxf,eAAiBA,EACzBwf,GAAQ1f,YAAcA,EACtB0f,GAAQ7tX,QAAUA,EAClB6tX,GAAQpL,SAAWwK,GACnBY,GAAQrF,WAAayE,GACrBY,GAAQ/d,aAAeA,EACvB+d,GAAQ3d,WAAaA,GACrB2d,GAAQ9vf,IAAMA,EACd8vf,GAAQhE,KAAOD,GACfiE,GAAQzB,UAAYrC,GACpB8D,GAAQpM,gBAAkBwI,GAC1B4D,GAAQnD,cAAgBA,GACxBmD,GAAQvD,cAAgBA,GACxBuD,GAAQjD,gBAAkBA,GAE1BiD,GAAQnpa,OAASmwZ,GACjBgZ,GAAQzZ,YAAcY,GACtB6Y,GAAQtZ,YAAciB,GACtBqY,GAAQvZ,YAAcA,GACtBuZ,GAAQxZ,iBAAmBA,GAC3BwZ,GAAQ90d,KAAOy+c,GACfqW,GAAQU,eAAiB3W,GACzBiW,GAAQ/qc,eAAiB60b,GAEzBkW,GAAQxV,SAAWU,GACnB8U,GAAQ1V,YAAcgB,GACtB0U,GAAQzV,cAAgBa,GACxB4U,GAAQ9V,cAAgB2B,GAExBmU,GAAQrV,cAAgBA,GACxBqV,GAAQtV,mBAAqBA,GAC7BsV,GAAQvV,iBAAmBA,GAE3BuV,GAAQvhQ,KAAO0uP,GACf6S,GAAQtjB,SAAWiR,GA4FnBmB,GAAmB,KAAM,CACrBkN,KAAM,CACF,CACIzlV,MAAO,aACP3wC,MAAO,IACP5hH,OAAQ,EACR7T,KAAM,cACNyvF,OAAQ,KACRqrL,KAAM,MAEV,CACI10G,MAAO,aACP3wC,OAAO,IACP5hH,OAAQ,EACR7T,KAAM,gBACNyvF,OAAQ,KACRqrL,KAAM,OAGd8iO,uBAAwB,uBACxB57W,QAAS,SAAUpnG,GACf,IAAIhU,EAAIgU,EAAS,GAWjB,OAAOA,GATgC,IAA/Bs4c,GAAOt4c,EAAS,IAAO,IACjB,KACM,IAANhU,EACA,KACM,IAANA,EACA,KACM,IAANA,EACA,KACA,KAEjB,IAKLykd,EAAMuf,KAAOvnV,EACT,wDACAs7U,IAEJtT,EAAMmlB,SAAWntV,EACb,gEACAu7U,IAGJ,IAAI6R,GAAUtgf,KAAKD,IAEnB,SAASA,KACL,IAAIhP,EAAO0F,KAAK0gG,MAahB,OAXA1gG,KAAK2+e,cAAgBkL,GAAQ7pf,KAAK2+e,eAClC3+e,KAAK46V,MAAQivJ,GAAQ7pf,KAAK46V,OAC1B56V,KAAKkwe,QAAU2Z,GAAQ7pf,KAAKkwe,SAE5B51e,EAAKgyB,aAAeu9d,GAAQvvf,EAAKgyB,cACjChyB,EAAK+lF,QAAUwpa,GAAQvvf,EAAK+lF,SAC5B/lF,EAAK8lF,QAAUypa,GAAQvvf,EAAK8lF,SAC5B9lF,EAAK4lF,MAAQ2pa,GAAQvvf,EAAK4lF,OAC1B5lF,EAAKwlF,OAAS+pa,GAAQvvf,EAAKwlF,QAC3BxlF,EAAKolF,MAAQmqa,GAAQvvf,EAAKolF,OAEnB1/E,IACV,CAED,SAAS8pf,GAAcj+d,EAAUrR,EAAOtc,EAAO0oB,GAC3C,IAAIY,EAAQg3d,GAAehke,EAAOtc,GAMlC,OAJA2tB,EAAS8yd,eAAiB/3d,EAAYY,EAAMm3d,cAC5C9yd,EAAS+uU,OAASh0U,EAAYY,EAAMozU,MACpC/uU,EAASqkd,SAAWtpd,EAAYY,EAAM0od,QAE/Brkd,EAAS+yd,SACnB,CAGD,SAASmL,GAAMvve,EAAOtc,GAClB,OAAO4rf,GAAc9pf,KAAMwa,EAAOtc,EAAO,EAC5C,CAGD,SAAS8rf,GAAWxve,EAAOtc,GACvB,OAAO4rf,GAAc9pf,KAAMwa,EAAOtc,GAAQ,EAC7C,CAED,SAAS+rf,GAAQj2d,GACb,OAAIA,EAAS,EACFzqB,KAAKo/D,MAAM30C,GAEXzqB,KAAKq7E,KAAK5wD,EAExB,CAED,SAAS2+H,KACL,IAIItyE,EACAD,EACAF,EACAR,EACAwqa,EARA59d,EAAetsB,KAAK2+e,cACpB1+Z,EAAOjgF,KAAK46V,MACZ96Q,EAAS9/E,KAAKkwe,QACd51e,EAAO0F,KAAK0gG,MAgDhB,OArCSp0E,GAAgB,GAAK2zD,GAAQ,GAAKH,GAAU,GAC5CxzD,GAAgB,GAAK2zD,GAAQ,GAAKH,GAAU,IAGjDxzD,GAAuD,MAAvC29d,GAAQE,GAAarqa,GAAUG,GAC/CA,EAAO,EACPH,EAAS,GAKbxlF,EAAKgyB,aAAeA,EAAe,IAEnC+zD,EAAUgsZ,GAAS//c,EAAe,KAClChyB,EAAK+lF,QAAUA,EAAU,GAEzBD,EAAUisZ,GAAShsZ,EAAU,IAC7B/lF,EAAK8lF,QAAUA,EAAU,GAEzBF,EAAQmsZ,GAASjsZ,EAAU,IAC3B9lF,EAAK4lF,MAAQA,EAAQ,GAErBD,GAAQosZ,GAASnsZ,EAAQ,IAIzBJ,GADAoqa,EAAiB7d,GAAS+d,GAAanqa,IAEvCA,GAAQgqa,GAAQE,GAAaD,IAG7Bxqa,EAAQ2sZ,GAASvsZ,EAAS,IAC1BA,GAAU,GAEVxlF,EAAK2lF,KAAOA,EACZ3lF,EAAKwlF,OAASA,EACdxlF,EAAKolF,MAAQA,EAEN1/E,IACV,CAED,SAASoqf,GAAanqa,GAGlB,OAAe,KAAPA,EAAe,MAC1B,CAED,SAASkqa,GAAarqa,GAElB,OAAiB,OAATA,EAAmB,IAC9B,CAED,SAAS5nE,GAAGwzd,GACR,IAAK1re,KAAKkwI,UACN,OAAOvkD,IAEX,IAAI1L,EACAH,EACAxzD,EAAetsB,KAAK2+e,cAIxB,GAAc,WAFdjT,EAAQD,GAAeC,KAEY,YAAVA,GAAiC,SAAVA,EAG5C,OAFAzrZ,EAAOjgF,KAAK46V,MAAQtuU,EAAe,MACnCwzD,EAAS9/E,KAAKkwe,QAAUka,GAAanqa,GAC7ByrZ,GACJ,IAAK,QACD,OAAO5rZ,EACX,IAAK,UACD,OAAOA,EAAS,EACpB,IAAK,OACD,OAAOA,EAAS,QAKxB,OADAG,EAAOjgF,KAAK46V,MAAQrxV,KAAKoZ,MAAMwne,GAAanqf,KAAKkwe,UACzCxE,GACJ,IAAK,OACD,OAAOzrZ,EAAO,EAAI3zD,EAAe,OACrC,IAAK,MACD,OAAO2zD,EAAO3zD,EAAe,MACjC,IAAK,OACD,OAAc,GAAP2zD,EAAY3zD,EAAe,KACtC,IAAK,SACD,OAAc,KAAP2zD,EAAc3zD,EAAe,IACxC,IAAK,SACD,OAAc,MAAP2zD,EAAe3zD,EAAe,IAEzC,IAAK,cACD,OAAO/iB,KAAKo/D,MAAa,MAAPsX,GAAgB3zD,EACtC,QACI,MAAM,IAAI/xB,MAAM,gBAAkBmxe,GAGjD,CAGD,SAAS2e,KACL,OAAKrqf,KAAKkwI,UAINlwI,KAAK2+e,cACQ,MAAb3+e,KAAK46V,MACJ56V,KAAKkwe,QAAU,GAAM,OACK,QAA3B5D,GAAMtse,KAAKkwe,QAAU,IANdvkZ,GAQd,CAED,SAAS2+Z,GAAO/yZ,GACZ,OAAO,WACH,OAAOv3F,KAAKkY,GAAGq/E,EAClB,CACJ,CAED,IAAIgzZ,GAAiBD,GAAO,MACxBE,GAAYF,GAAO,KACnBG,GAAYH,GAAO,KACnBI,GAAUJ,GAAO,KACjBK,GAASL,GAAO,KAChBM,GAAUN,GAAO,KACjBO,GAAWP,GAAO,KAClBQ,GAAaR,GAAO,KACpBS,GAAUT,GAAO,KAErB,SAASU,KACL,OAAOxM,GAAex+e,KACzB,CAED,SAASirf,GAAMvf,GAEX,OADAA,EAAQD,GAAeC,GAChB1re,KAAKkwI,UAAYlwI,KAAK0re,EAAQ,OAAS//Y,GACjD,CAED,SAASu/Z,GAAW9xf,GAChB,OAAO,WACH,OAAO4G,KAAKkwI,UAAYlwI,KAAK0gG,MAAMtnG,GAAQuyF,GAC9C,CACJ,CAED,IAAIr/D,GAAe4+d,GAAW,gBAC1B7qa,GAAU6qa,GAAW,WACrB9qa,GAAU8qa,GAAW,WACrBhra,GAAQgra,GAAW,SACnBjra,GAAOira,GAAW,QAClBpra,GAASora,GAAW,UACpBxra,GAAQwra,GAAW,SAEvB,SAASnra,KACL,OAAOssZ,GAASrse,KAAKigF,OAAS,EACjC,CAED,IAAIt9D,GAAQpZ,KAAKoZ,MACbwoe,GAAa,CACTxgB,GAAI,GACJpyc,EAAG,GACHr7B,EAAG,GACHjB,EAAG,GACHunB,EAAG,GACHu+F,EAAG,KACHp7B,EAAG,IAIX,SAASyka,GAAkBh2e,EAAQ4e,EAAQm3c,EAAeC,EAAUp1a,GAChE,OAAOA,EAAOk1a,aAAal3c,GAAU,IAAKm3c,EAAe/1d,EAAQg2d,EACpE,CAED,SAASigB,GAAeC,EAAgBngB,EAAeggB,EAAYn1b,GAC/D,IAAInqC,EAAW2yd,GAAe8M,GAAgBhif,MAC1C+2E,EAAU19D,GAAMkJ,EAAS3T,GAAG,MAC5BkoE,EAAUz9D,GAAMkJ,EAAS3T,GAAG,MAC5BgoE,EAAQv9D,GAAMkJ,EAAS3T,GAAG,MAC1B+nE,EAAOt9D,GAAMkJ,EAAS3T,GAAG,MACzB4nE,EAASn9D,GAAMkJ,EAAS3T,GAAG,MAC3B6nE,EAAQp9D,GAAMkJ,EAAS3T,GAAG,MAC1BwnE,EAAQ/8D,GAAMkJ,EAAS3T,GAAG,MAC1B6H,EACKsgE,GAAW8qa,EAAWxgB,IAAM,CAAC,IAAKtqZ,IAClCA,EAAU8qa,EAAW5yd,GAAK,CAAC,KAAM8nD,IACjCD,GAAW,GAAK,CAAC,MACjBA,EAAU+qa,EAAWjuf,GAAK,CAAC,KAAMkjF,IACjCF,GAAS,GAAK,CAAC,MACfA,EAAQira,EAAWlvf,GAAK,CAAC,KAAMikF,IAC/BD,GAAQ,GAAK,CAAC,MACdA,EAAOkra,EAAW3ne,GAAK,CAAC,KAAMy8D,GAgBvC,OAdoB,MAAhBkra,EAAWppY,IACXhiG,EACIA,GACCggE,GAAS,GAAK,CAAC,MACfA,EAAQora,EAAWppY,GAAK,CAAC,KAAMhiC,KAExChgE,EAAIA,GACC+/D,GAAU,GAAK,CAAC,MAChBA,EAASqra,EAAWxka,GAAK,CAAC,KAAM7G,IAChCJ,GAAS,GAAK,CAAC,MAAS,CAAC,KAAMA,IAElC,GAAKyrZ,EACPprd,EAAE,IAAMure,EAAiB,EACzBvre,EAAE,GAAKi2C,EACAo1b,GAAkBrze,MAAM,KAAMgI,EACxC,CAGD,SAASwre,GAA2BC,GAChC,YAAyB7jf,IAArB6jf,EACO7oe,GAEqB,oBAArB6oe,IACP7oe,GAAQ6oe,GACD,EAGd,CAGD,SAASC,GAA4BC,EAAWxtB,GAC5C,YAA8Bv2d,IAA1Bwjf,GAAWO,UAGD/jf,IAAVu2d,EACOitB,GAAWO,IAEtBP,GAAWO,GAAaxtB,EACN,MAAdwtB,IACAP,GAAWxgB,GAAKzM,EAAQ,IAErB,GACV,CAED,SAASpzW,GAAS6gY,EAAeC,GAC7B,IAAK5rf,KAAKkwI,UACN,OAAOlwI,KAAKorH,aAAam+W,cAG7B,IAEIvza,EACAxxD,EAHAqnf,GAAa,EACb7+a,EAAKm+a,GAyBT,MArB6B,kBAAlBQ,IACPC,EAAgBD,EAChBA,GAAgB,GAES,mBAAlBA,IACPE,EAAaF,GAEY,kBAAlBC,IACP5+a,EAAKhvE,OAAOmH,OAAO,CAAC,EAAGgmf,GAAYS,GACZ,MAAnBA,EAAcrzd,GAAiC,MAApBqzd,EAAcjhB,KACzC39Z,EAAG29Z,GAAKihB,EAAcrzd,EAAI,IAKlC/zB,EAAS6mf,GAAerrf,MAAO6rf,EAAY7+a,EAD3ChX,EAASh2D,KAAKorH,cAGVygY,IACArnf,EAASwxD,EAAOs1a,YAAYtre,KAAMwE,IAG/BwxD,EAAO4tb,WAAWp/e,EAC5B,CAED,IAAIsnf,GAAQvif,KAAKD,IAEjB,SAASsnD,GAAK7iD,GACV,OAAQA,EAAI,IAAMA,EAAI,KAAOA,CAChC,CAED,SAASg+e,KAQL,IAAK/rf,KAAKkwI,UACN,OAAOlwI,KAAKorH,aAAam+W,cAG7B,IAGInpZ,EACAF,EACAR,EACAnnD,EAEAyzd,EACAC,EACAC,EACAC,EAXA9ra,EAAUyra,GAAM9rf,KAAK2+e,eAAiB,IACtC1+Z,EAAO6ra,GAAM9rf,KAAK46V,OAClB96Q,EAASgsa,GAAM9rf,KAAKkwe,SAKpBl0W,EAAQh8H,KAAKwqf,YAMjB,OAAKxuX,GAOL57C,EAAUisZ,GAAShsZ,EAAU,IAC7BH,EAAQmsZ,GAASjsZ,EAAU,IAC3BC,GAAW,GACXD,GAAW,GAGXV,EAAQ2sZ,GAASvsZ,EAAS,IAC1BA,GAAU,GAGVvnD,EAAI8nD,EAAUA,EAAQ1nD,QAAQ,GAAG/2B,QAAQ,SAAU,IAAM,GAEzDoqf,EAAYhwX,EAAQ,EAAI,IAAM,GAC9BiwX,EAASr7b,GAAK5wD,KAAKkwe,WAAat/a,GAAKorE,GAAS,IAAM,GACpDkwX,EAAWt7b,GAAK5wD,KAAK46V,SAAWhqS,GAAKorE,GAAS,IAAM,GACpDmwX,EAAUv7b,GAAK5wD,KAAK2+e,iBAAmB/tb,GAAKorE,GAAS,IAAM,GAGvDgwX,EACA,KACCtsa,EAAQusa,EAASvsa,EAAQ,IAAM,KAC/BI,EAASmsa,EAASnsa,EAAS,IAAM,KACjCG,EAAOisa,EAAWjsa,EAAO,IAAM,KAC/BC,GAASE,GAAWC,EAAU,IAAM,KACpCH,EAAQisa,EAAUjsa,EAAQ,IAAM,KAChCE,EAAU+ra,EAAU/ra,EAAU,IAAM,KACpCC,EAAU8ra,EAAU5zd,EAAI,IAAM,KA9BxB,KAgCd,CAED,IAAI6zd,GAAU3N,GAASz2e,UAwGvB,OAtGAokf,GAAQl8W,QAAUouW,GAClB8N,GAAQ9if,IAAMA,GACd8if,GAAQr+c,IAAMg8c,GACdqC,GAAQzwB,SAAWquB,GACnBoC,GAAQl0e,GAAKA,GACbk0e,GAAQ7B,eAAiBA,GACzB6B,GAAQ5B,UAAYA,GACpB4B,GAAQ3B,UAAYA,GACpB2B,GAAQ1B,QAAUA,GAClB0B,GAAQzB,OAASA,GACjByB,GAAQxB,QAAUA,GAClBwB,GAAQvB,SAAWA,GACnBuB,GAAQtB,WAAaA,GACrBsB,GAAQrB,QAAUA,GAClBqB,GAAQ7/b,QAAU89b,GAClB+B,GAAQxN,QAAUjsV,GAClBy5V,GAAQ9ge,MAAQ0/d,GAChBoB,GAAQxyf,IAAMqxf,GACdmB,GAAQ9/d,aAAeA,GACvB8/d,GAAQ/ra,QAAUA,GAClB+ra,GAAQhsa,QAAUA,GAClBgsa,GAAQlsa,MAAQA,GAChBksa,GAAQnsa,KAAOA,GACfmsa,GAAQrsa,MAAQA,GAChBqsa,GAAQtsa,OAASA,GACjBssa,GAAQ1sa,MAAQA,GAChB0sa,GAAQthY,SAAWA,GACnBshY,GAAQ/I,YAAc0I,GACtBK,GAAQ9uf,SAAWyuf,GACnBK,GAAQ5/b,OAASu/b,GACjBK,GAAQp2b,OAASA,GACjBo2b,GAAQhhY,WAAaA,GAErBghY,GAAQC,YAAc5vV,EAClB,sFACAsvV,IAEJK,GAAQpI,KAAOA,GAIf/a,EAAe,IAAK,EAAG,EAAG,QAC1BA,EAAe,IAAK,EAAG,EAAG,WAI1BkF,GAAc,IAAKL,IACnBK,GAAc,IAAKF,IACnBU,GAAc,KAAK,SAAUn0d,EAAOnQ,EAAOtK,GACvCA,EAAOlF,GAAK,IAAIiI,KAAyB,IAApBq1B,WAAW3d,GACnC,IACDm0d,GAAc,KAAK,SAAUn0d,EAAOnQ,EAAOtK,GACvCA,EAAOlF,GAAK,IAAIiI,KAAKwpe,GAAM9xd,GAC9B,IAIDiqd,EAAMlwZ,QAAU,SAEhBmwZ,EAAgB4X,IAEhB7X,EAAM1me,GAAK89D,GACX4oa,EAAM5hd,IAAMA,GACZ4hd,EAAMhtc,IAAMA,GACZgtc,EAAMlha,IAAMA,GACZkha,EAAMjpW,IAAMqpW,EACZJ,EAAMigB,KAAOwD,GACbzjB,EAAM3kZ,OAASwpa,GACf7kB,EAAM/oa,OAASA,EACf+oa,EAAMzua,OAAS+hb,GACftT,EAAM7gW,QAAU0iW,EAChB7B,EAAM54c,SAAW2yd,GACjB/Z,EAAM4C,SAAWA,EACjB5C,EAAMgP,SAAW+V,GACjB/kB,EAAM2jB,UAAYD,GAClB1jB,EAAMr5W,WAAa4sX,GACnBvT,EAAMoa,WAAaA,GACnBpa,EAAM+K,YAAc+Z,GACpB9kB,EAAM8O,YAAcmW,GACpBjlB,EAAMwT,aAAeA,GACrBxT,EAAMyT,aAAeA,GACrBzT,EAAMyS,QAAUkB,GAChB3T,EAAM+O,cAAgBiW,GACtBhlB,EAAMgH,eAAiBA,GACvBhH,EAAM6nB,qBAAuBf,GAC7B9mB,EAAM8nB,sBAAwBd,GAC9BhnB,EAAM4d,eAAiBN,GACvBtd,EAAMz8d,UAAY6zD,GAGlB4oa,EAAM+nB,UAAY,CACdC,eAAgB,mBAChBC,uBAAwB,sBACxBC,kBAAmB,0BACnB1d,KAAM,aACN2d,KAAM,QACNC,aAAc,WACdC,QAAS,eACTl2W,KAAM,aACNE,MAAO,WAGJ2tV,CAEV,CA7iLmFsoB,qCCEpF,IAAIC,EAAuB/pe,EAAQ,MAEnC,SAASgqe,IAAkB,CAC3B,SAASC,IAA2B,CACpCA,EAAuBC,kBAAoBF,EAE3C1oe,EAAOrB,QAAU,WACf,SAASkqe,EAAKtif,EAAOgM,EAAU4b,EAAeC,EAAUC,EAAcy6d,GACpE,GAAIA,IAAWL,EAAf,CAIA,IAAI5tf,EAAM,IAAI7E,MACZ,mLAKF,MADA6E,EAAIhG,KAAO,sBACLgG,CAPL,CAQF,CAED,SAASkuf,IACP,OAAOF,CACR,CAHDA,EAAKpzc,WAAaozc,EAMlB,IAAIG,EAAiB,CACnBljf,MAAO+if,EACPI,OAAQJ,EACRjwc,KAAMiwc,EACNr8e,KAAMq8e,EACNp5d,OAAQo5d,EACRznd,OAAQynd,EACRh4e,OAAQg4e,EACRvhZ,OAAQuhZ,EAERK,IAAKL,EACLM,QAASJ,EACT9gf,QAAS4gf,EACTO,YAAaP,EACbQ,WAAYN,EACZ3if,KAAMyif,EACNS,SAAUP,EACV/vc,MAAO+vc,EACPhwc,UAAWgwc,EACXlwd,MAAOkwd,EACPQ,MAAOR,EAEPS,eAAgBb,EAChBC,kBAAmBF,GAKrB,OAFAM,EAAezzc,UAAYyzc,EAEpBA,CACR,wBC/CChpe,EAAOrB,QAAUD,EAAQ,IAARA,kCCNnBsB,EAAOrB,QAFoB,iFCH3B,IAF0BgiC,EAEtB/rC,EAAQ8J,EAAQ,MAChB+qe,GAHsB9oc,EAGW/rC,IAHwB,kBAAP+rC,GAAoB,YAAaA,EAAMA,EAAE,QAAcA,EAKzG+oc,EAAWhre,EAAQ,MAEnBire,EAAmB,IAAID,EACvBnwe,EAAUowe,EAAiBC,aAC3BC,EAAMF,EAAiBG,SACvB33a,EAASw3a,EAAiBI,YAC1Btqb,EAASkqb,EAAiBK,YAC1Bx5Y,EAAKm5Y,EAAiBM,QACtBtwe,EAAKgwe,EAAiB1we,QACtBixe,EAAQ,SAAeC,GACzB,OAAOR,EAAiBS,MAAMD,EAC/B,EACGE,EAAiB,SAAwBh6c,GAC3C,GAAKA,EAAL,CAKA,IAAIi6c,EAAoB,IAAIZ,EAASr5c,GACrC,MAAO,CACLk6c,GAAID,EACJ/we,QAAS+we,EAAkBV,aAC3BC,IAAKS,EAAkBR,SACvB33a,OAAQm4a,EAAkBP,YAC1Btqb,OAAQ6qb,EAAkBN,YAC1Bx5Y,GAAI85Y,EAAkBL,QACtBtwe,GAAI2we,EAAkBrxe,QACtBuxe,aAAc,SAAsBL,GAClC,OAAOG,EAAkBF,MAAMD,EAChC,EAbF,CAFCryf,QAAQgD,MAAM,mCAiBjB,EAEG2vf,EAAwBhxf,OAAO8iM,OAAO,CACxCotT,iBAAkBA,EAClBpwe,QAASA,EACTswe,IAAKA,EACL13a,OAAQA,EACR1S,OAAQA,EACR+wC,GAAIA,EACJ72F,GAAIA,EACJuwe,MAAOA,EACPG,eAAgBA,IAGlB,SAASK,EAAQtpd,EAAQupd,GACvB,IAAIlwf,EAAOhB,OAAOgB,KAAK2mC,GAEvB,GAAI3nC,OAAOsza,sBAAuB,CAChC,IAAI69E,EAAUnxf,OAAOsza,sBAAsB3rY,GAEvCupd,IACFC,EAAUA,EAAQ30d,QAAO,SAAU40d,GACjC,OAAOpxf,OAAOouc,yBAAyBzma,EAAQypd,GAAK3re,UACrD,KAGHzkB,EAAKoB,KAAK2X,MAAM/Y,EAAMmwf,EACvB,CAED,OAAOnwf,CACR,CAsBD,SAASqwf,EAAQl6e,GAaf,OATEk6e,EADoB,oBAAXzre,QAAoD,kBAApBA,OAAO44G,SACtC,SAAUrnH,GAClB,cAAcA,CACf,EAES,SAAUA,GAClB,OAAOA,GAAyB,oBAAXyO,QAAyBzO,EAAIkyB,cAAgBzjB,QAAUzO,IAAQyO,OAAO5b,UAAY,gBAAkBmN,CAC1H,EAGIk6e,EAAQl6e,EAChB,CAQD,SAASm6e,EAAkB33e,EAAQ7M,GACjC,IAAK,IAAInC,EAAI,EAAGA,EAAImC,EAAMnK,OAAQgI,IAAK,CACrC,IAAIspC,EAAannC,EAAMnC,GACvBspC,EAAWxuB,WAAawuB,EAAWxuB,aAAc,EACjDwuB,EAAW7zC,cAAe,EACtB,UAAW6zC,IAAYA,EAAW9zC,UAAW,GACjDH,OAAOC,eAAe0Z,EAAQs6B,EAAW3vC,IAAK2vC,EAC/C,CACF,CAQD,SAASs9c,EAAgBp6e,EAAK7S,EAAKpE,GAYjC,OAXIoE,KAAO6S,EACTnX,OAAOC,eAAekX,EAAK7S,EAAK,CAC9BpE,MAAOA,EACPulB,YAAY,EACZrlB,cAAc,EACdD,UAAU,IAGZgX,EAAI7S,GAAOpE,EAGNiX,CACR,CAED,SAAS4D,IAeP,OAdAA,EAAW/a,OAAOmH,QAAU,SAAUwS,GACpC,IAAK,IAAIhP,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAAK,CACzC,IAAI4+B,EAASzvB,UAAUnP,GAEvB,IAAK,IAAIrG,KAAOilC,EACVvpC,OAAOgK,UAAU6X,eAAephB,KAAK8oC,EAAQjlC,KAC/CqV,EAAOrV,GAAOilC,EAAOjlC,GAG1B,CAED,OAAOqV,CACR,EAEMoB,EAAShB,MAAM/X,KAAM8X,UAC7B,CAiBD,SAAS03e,EAAgB9uX,GAIvB,OAHA8uX,EAAkBxxf,OAAOihB,eAAiBjhB,OAAOolD,eAAiB,SAAyBs9E,GACzF,OAAOA,EAAEj3F,WAAazrC,OAAOolD,eAAes9E,EAC7C,EACM8uX,EAAgB9uX,EACxB,CAED,SAAS+uX,EAAgB/uX,EAAG7iI,GAM1B,OALA4xf,EAAkBzxf,OAAOihB,gBAAkB,SAAyByhH,EAAG7iI,GAErE,OADA6iI,EAAEj3F,UAAY5rC,EACP6iI,CACR,EAEM+uX,EAAgB/uX,EAAG7iI,EAC3B,CAiBD,SAAS6xf,EAAyBnod,EAAQood,GACxC,GAAc,MAAVpod,EAAgB,MAAO,CAAC,EAE5B,IAEIjlC,EAAKqG,EAFLgP,EAlBN,SAAuC4vB,EAAQood,GAC7C,GAAc,MAAVpod,EAAgB,MAAO,CAAC,EAC5B,IAEIjlC,EAAKqG,EAFLgP,EAAS,CAAC,EACVi4e,EAAa5xf,OAAOgB,KAAKuoC,GAG7B,IAAK5+B,EAAI,EAAGA,EAAIinf,EAAWjvf,OAAQgI,IACjCrG,EAAMstf,EAAWjnf,GACbgnf,EAASvuf,QAAQkB,IAAQ,IAC7BqV,EAAOrV,GAAOilC,EAAOjlC,IAGvB,OAAOqV,CACR,CAKc8P,CAA8B8f,EAAQood,GAInD,GAAI3xf,OAAOsza,sBAAuB,CAChC,IAAIu+E,EAAmB7xf,OAAOsza,sBAAsB/pY,GAEpD,IAAK5+B,EAAI,EAAGA,EAAIknf,EAAiBlvf,OAAQgI,IACvCrG,EAAMutf,EAAiBlnf,GACnBgnf,EAASvuf,QAAQkB,IAAQ,GACxBtE,OAAOgK,UAAUupa,qBAAqB9ya,KAAK8oC,EAAQjlC,KACxDqV,EAAOrV,GAAOilC,EAAOjlC,GAExB,CAED,OAAOqV,CACR,CAED,SAASm4e,EAAuB91f,GAC9B,QAAa,IAATA,EACF,MAAM,IAAI+1f,eAAe,6DAG3B,OAAO/1f,CACR,CAYD,SAASg2f,EAAer/b,EAAKhoD,GAC3B,OAGF,SAAyBgoD,GACvB,GAAI9rD,MAAMC,QAAQ6rD,GAAM,OAAOA,CAChC,CALQs/b,CAAgBt/b,IAOzB,SAA+BA,EAAKhoD,GAClC,IAAI4M,EAAY,MAAPo7C,EAAc,KAAyB,qBAAX/sC,QAA0B+sC,EAAI/sC,OAAO44G,WAAa7rE,EAAI,cAE3F,GAAU,MAANp7C,EAAY,OAChB,IAII26e,EAAIp1f,EAJJq1f,EAAO,GACPC,GAAK,EACLv1f,GAAK,EAIT,IACE,IAAK0a,EAAKA,EAAG9W,KAAKkyD,KAAQy/b,GAAMF,EAAK36e,EAAGpK,QAAQyjD,QAC9Cuhc,EAAK/vf,KAAK8vf,EAAGhyf,QAETyK,GAAKwnf,EAAKxvf,SAAWgI,GAH4Bynf,GAAK,GAc7D,CATC,MAAOhxf,GACPvE,GAAK,EACLC,EAAKsE,CACN,CATD,QAUE,IACOgxf,GAAsB,MAAhB76e,EAAE,QAAoBA,EAAE,QAGpC,CAJD,QAGE,GAAI1a,EAAI,MAAMC,CACf,CACF,CAED,OAAOq1f,CACR,CAnCgCE,CAAsB1/b,EAAKhoD,IAqC5D,SAAqC+3H,EAAG4vX,GACtC,IAAK5vX,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAO6vX,EAAkB7vX,EAAG4vX,GACvD,IAAIrse,EAAIjmB,OAAOgK,UAAU1K,SAASmB,KAAKiiI,GAAG37H,MAAM,GAAI,GAC1C,WAANkf,GAAkBy8G,EAAEr5F,cAAapjB,EAAIy8G,EAAEr5F,YAAYjuC,MACvD,GAAU,QAAN6qB,GAAqB,QAANA,EAAa,OAAOpf,MAAM2E,KAAKk3H,GAClD,GAAU,cAANz8G,GAAqB,2CAA2C7N,KAAK6N,GAAI,OAAOsse,EAAkB7vX,EAAG4vX,EAC1G,CA5CiEE,CAA4B7/b,EAAKhoD,IAsDnG,WACE,MAAM,IAAI+gC,UAAU,4IACrB,CAxDwG+md,EACxG,CA6CD,SAASF,EAAkB5/b,EAAKv/C,IACnB,MAAPA,GAAeA,EAAMu/C,EAAIhwD,UAAQyQ,EAAMu/C,EAAIhwD,QAE/C,IAAK,IAAIgI,EAAI,EAAG2ue,EAAO,IAAIzye,MAAMuM,GAAMzI,EAAIyI,EAAKzI,IAAK2ue,EAAK3ue,GAAKgoD,EAAIhoD,GAEnE,OAAO2ue,CACR,CAMD,IAAIoZ,EACM,SADNA,EAEM,SAFNA,EAGO,UAHPA,EAIO,UAJPA,EAKQ,WALRA,EAMQ,WANRA,OAOO/of,EAEPgpf,EAAe,CACjBC,OAAQ,SACRC,QAAS,UACTC,MAAO,QACPC,OAAQ,SACRC,OAAQ,SACRC,iBAAkB,oBAClBC,KAAM,OACNC,SAAU,WACVC,GAAI,KACJC,aAAc,gBACdC,aAAc,gBACdC,KAAM,eACNC,eAAgB,mBAEdC,EAAU,CACZC,IAAK,MACLC,QAAS,UACTC,aAAc,gBACdC,QAAS,UACTC,OAAQ,UAENC,EAAqB,CACvBvkJ,UAAU,EACVv4R,UAAU,EACV+8a,WAAW,EACXC,WAAW,EACXC,WAAW,EACXC,YAAY,GA+CVC,EAAc,SAAqBv0f,GACrC,IAAI2lB,EAAI1L,UAAUnX,OAAS,QAAsBgH,IAAjBmQ,UAAU,GAAmBA,UAAU,GAAK,OAC5E,OAAOja,GAAQ2lB,CAChB,EACG6ue,EAAuB,WACzB,QAAsB,qBAAXp4f,SACLA,OAAOwjB,YAAaA,aACfxjB,OAAOwjB,WAAaA,UAKhC,EACG60e,EAAe,SAAsBjtf,GACvC,IAAIktf,EAAMF,IACV,OAAOE,GAAOA,EAAI94f,YAA6C,IAAhC84f,EAAI94f,SAAS2H,QAAQiE,IAAiC,aAAjBktf,EAAI94f,UAA2B84f,EAAIj9a,eAAiB,IAAMr7E,OAAOu4f,SACtI,EAeGC,EAAgB,SAAuBptf,EAAMqxE,EAAQq+B,EAAI72F,GAC3D,OA/VF,SAAwBvG,GACtB,IAAK,IAAIhP,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAAK,CACzC,IAAI4+B,EAAyB,MAAhBzvB,UAAUnP,GAAamP,UAAUnP,GAAK,CAAC,EAEhDA,EAAI,EACNsmf,EAAQjxf,OAAOupC,IAAS,GAAM7mC,SAAQ,SAAU4B,GAC9Citf,EAAgB53e,EAAQrV,EAAKilC,EAAOjlC,GACrC,IACQtE,OAAOwmM,0BAChBxmM,OAAO00f,iBAAiB/6e,EAAQ3Z,OAAOwmM,0BAA0Bj9J,IAEjE0nd,EAAQjxf,OAAOupC,IAAS7mC,SAAQ,SAAU4B,GACxCtE,OAAOC,eAAe0Z,EAAQrV,EAAKtE,OAAOouc,yBAAyB7ka,EAAQjlC,GAC5E,GAEJ,CAED,OAAOqV,CACR,CA6UQg7e,CAAe,CAAC,EAAGttf,EAAM,CAC9Butf,OAAQR,EAAY17a,EAAOk8a,QAC3Bn9c,MAAO28c,EAAY17a,EAAOjhC,OAC1Bs/D,GAAIq9Y,EAAYr9Y,EAAG37G,MACnBy5f,UAAWT,EAAYr9Y,EAAGxgC,SAC1Br2D,GAAIk0e,EAAYl0e,IAEnB,EA0FD,IAAI40e,EAAe,SAAsB97e,GAEvC,OADWA,EAAK3R,OACAqrf,CACjB,EACGqC,EAAe,SAAsBruV,GAEvC,OADWA,EAAMr/J,OACDqrf,CACjB,EACGsC,EAAwB,SAA+BltW,GACzD,IAAIzgJ,EAAOygJ,EAAMzgJ,KACjB,OAAOA,IAASqrf,GAAsBrrf,IAASqrf,CAChD,EACGuC,EAAgB,SAAuB1sW,GAEzC,OADWA,EAAMlhJ,OACDqrf,CACjB,EACGwC,EAAgB,SAAuBvsW,GAEzC,OADWA,EAAMthJ,OACDqrf,CACjB,EACGyC,EAAiB,SAAwBrsW,GAE3C,OADWA,EAAMzhJ,OACDqrf,CACjB,EACG0C,EAAgB,SAAuBpsV,GAEzC,OADWA,EAAM3hK,OACDqrf,CACjB,EACG2C,EAAiB,SAAwBC,GAE3C,OADWA,EAAMjuf,OACDqrf,CACjB,EACG6C,EAAkB,SAAyBC,GAC7C,IAAIZ,EAASY,EAAMZ,OACnB,OAAOR,EAAYQ,EACpB,EACGa,EAAiB,SAAwBC,GAC3C,IAAIj+c,EAAQi+c,EAAOj+c,MACnB,OAAO28c,EAAY38c,EACpB,EACGk+c,EAAgB,SAAuBC,GACzC,IAAIvuf,EAAOuuf,EAAOvuf,KAClB,OAAO+sf,EAAY/sf,EAAM,UAC1B,EAEGwuf,EAAgB,SAAuBC,GAEzC,OADWA,EAAO16f,OACFq4f,EAAQE,OACzB,EACGoC,GAAgB,SAAuBC,GAEzC,OADWA,EAAO56f,OACFq4f,EAAQI,OACzB,EACGoC,GAAc,SAAqBC,GAErC,OADWA,EAAO96f,OACFq4f,EAAQK,MACzB,EACGqC,GAAiB,SAAwBC,GAE3C,OADWA,EAAOh7f,OACFq4f,EAAQG,YACzB,EACGyC,GAAY,SAAmBC,GAEjC,OADWA,EAAOl7f,OACFq4f,EAAQC,GACzB,EACG6C,GAAe,SAAsBC,GACvC,IAAIjgb,EAAUigb,EAAOjgb,QACrB,OAAO69a,EAAY79a,EACpB,EACGkgb,GAAY,SAAmBC,GACjC,IAAIt7f,EAAOs7f,EAAOt7f,KAClB,OAAOg5f,EAAYh5f,EACpB,EAEGu7f,GAAe,SAAsBC,GAEvC,OADWA,EAAOx7f,OACFu3f,EAAaC,MAC9B,EACGiE,GAAgB,SAAuBC,GAEzC,OADWA,EAAO17f,OACFu3f,EAAaE,OAC9B,EACGkE,GAAiB,SAAwBC,GAE3C,OADWA,EAAO57f,OACFu3f,EAAaQ,QAC9B,EACG8D,GAAa,SAAoBC,GAEnC,OADWA,EAAO97f,OACFu3f,EAAaO,IAC9B,EACGiE,GAAe,SAAsBC,GAEvC,OADWA,EAAOh8f,OACFu3f,EAAaI,MAC9B,EACGsE,GAAe,SAAsBC,GACvC,IAAIl8f,EAAOk8f,EAAOl8f,KAClB,OAAOA,IAASu3f,EAAaK,QAAU53f,IAASu3f,EAAaU,YAC9D,EACGkE,GAAqB,SAA4BC,GAEnD,OADWA,EAAOp8f,OACFu3f,EAAaU,YAC9B,EACGoE,GAAc,SAAqBC,GAErC,OADWA,EAAOt8f,OACFu3f,EAAaG,KAC9B,EACG6E,GAAW,SAAkBC,GAC/B,IAAIx8f,EAAOw8f,EAAOx8f,KAClB,OAAOA,IAASu3f,EAAaM,kBAAoB73f,IAASu3f,EAAaS,EACxE,EACGyE,GAAa,SAAoBC,GAEnC,OADWA,EAAO18f,OACFu3f,EAAaY,IAC9B,EACGwE,GAAuB,SAA8BC,GAEvD,OADWA,EAAO58f,OACFu3f,EAAaa,cAC9B,EACGyE,GAAwB,SAA+BC,GACzD,IAAI3hb,EAAU2hb,EAAO3hb,QACrB,OAAO69a,EAAY79a,EACpB,EACG4hb,GAAoB,SAA2BC,GACjD,IAAIC,EAAQD,EAAOC,MACnB,OAAOjE,EAAYiE,EACpB,EACGC,GAAiB,SAAwBC,GAC3C,IAAIn9f,EAAOm9f,EAAOn9f,KAClB,OAAOg5f,EAAYh5f,EACpB,EAEGo9f,GAAgB,SAAuBC,GACzC,IAAIr9f,EAAOq9f,EAAOr9f,KAClB,OAAOg5f,EAAYh5f,EACpB,EACGs9f,GAAmB,SAA0BC,GAC/C,IAAIpib,EAAUoib,EAAOpib,QACrB,OAAO69a,EAAY79a,EACpB,EACGqib,GAAiB,WACnB,IAAIrE,EAAMF,IACNn0e,EAAKq0e,GAAOA,EAAI39c,WAAa29c,EAAI39c,UAAUpgC,cAC/C,MAAqB,kBAAP0J,GAAkB,WAAW9H,KAAK8H,EACjD,EACG24e,GAAqB,SAA4B34e,GACnD,MAAqB,kBAAPA,IAA2C,IAAxBA,EAAG9c,QAAQ,OAC7C,EACG01f,GAAW,WACb,IAAIvE,EAAMF,IACV,OAAOE,IAAQ,mBAAmBn8e,KAAKm8e,EAAI94f,WAA8B,aAAjB84f,EAAI94f,UAA2B84f,EAAIj9a,eAAiB,KAAOr7E,OAAOu4f,QAC3H,EACGuE,GAAY,WACd,OAAOzE,EAAa,OACrB,EACG0E,GAAc,WAChB,OAAO1E,EAAa,SACrB,EACG2E,GAAY,WACd,OAAO3E,EAAa,OACrB,EACG4E,GAAe,SAAsBC,GACvC,OAAO/E,EAAY+E,EACpB,EAED,SAASC,GAAqBh6f,GAC5B,IAAI4Z,EAAO5Z,GAAoB4xf,EAC3Bt4a,EAAS1/D,EAAK0/D,OACd54D,EAAU9G,EAAK8G,QACfi3F,EAAK/9F,EAAK+9F,GACV/wC,EAAShtD,EAAKgtD,OACd9lD,EAAKlH,EAAKkH,GAEd,MAAO,CACL+ze,UAAWgB,EAAcv8a,GACzBw7a,UAAWkB,EAAc18a,GACzBy7a,WAAYgB,EAAez8a,GAC3B2gb,WAAYhE,EAAe38a,GAC3B4gb,eAAgB/B,GAAmBz3e,IAAYi5e,KAC/CQ,WAAYxC,GAAej3e,GAC3B0vV,SAAUwlJ,EAAsBt8a,IAAWqgb,KAC3CS,aAAc1E,EAAap8a,GAC3BzB,SAAU89a,EAAar8a,IAAWqgb,KAClC/E,UAAWkB,EAAcx8a,GACzBxB,UAAWg+a,EAAcx8a,GACzBlB,UAAWq+a,EAAc9+Y,GACzBt/B,WAAY0+a,GAAep/Y,GAC3B0iZ,MAAOpD,GAAUt/Y,IAAOgiZ,KACxBW,SAAU/C,GAAa72e,GACvB65e,UAAW9C,GAAc/2e,GACzB85e,SAAUvC,GAAav3e,GACvB+5e,QAASpC,GAAY33e,GACrBG,KAAM03e,GAAS73e,GACf+0e,UAAW0B,GAAax/Y,GACxB+iZ,OAAQrD,GAAU1/Y,GAClBgjZ,mBAAoB9B,GAAsBn4e,GAC1CokI,eAAgBi0W,GAAkBr4e,GAClCmkI,YAAaq0W,GAAex4e,GAC5Bk6e,aAAczE,EAAgB78a,GAC9Buhb,YAAaxE,EAAe/8a,GAC5Bwhb,WAAY1B,GAAcxyb,GAC1Bm0b,cAAezB,GAAiB1yb,GAChCxmD,MAAO05e,GAAah5e,GACpBk6e,OAAQnD,GAAWn3e,IAAY+4e,GAAmB34e,GAClDm6e,SAAUlD,GAAar3e,GACvBw2D,WAAYq/a,EAAcj9a,GAC1B4hb,QAASxB,KACTyB,SAAUxB,KACVyB,WAAYxB,KACZyB,SAAUxB,KACVyB,WAAY9B,KACZ+B,eAAgB9B,GAAmB34e,GACnC06e,aAAc3D,GAAWn3e,KAAa+4e,GAAmB34e,GACzD26e,UAAW9E,GAAch/Y,GACzB+jZ,QAAS7E,GAAYl/Y,GACrBgkZ,OAAQlD,GAAW/3e,GACnBk7e,iBAAkBjD,GAAqBj4e,GAE1C,CAED,IAAIm0e,GAAYgB,EAAcv8a,GAC1Bw7a,GAAYkB,EAAc18a,GAC1By7a,GAAagB,EAAez8a,GAC5B2gb,GAAahE,EAAe38a,GAC5B4gb,GAAiB/B,GAAmBz3e,IAAYi5e,KAChDQ,GAAaxC,GAAej3e,GAC5B0vV,GAAWwlJ,EAAsBt8a,IAAWqgb,KAC5CS,GAAe1E,EAAap8a,GAC5BzB,GAAW89a,EAAar8a,IAAWqgb,KACnC/E,GAAYkB,EAAcx8a,GAC1BxB,GAAYg+a,EAAcx8a,GAC1BlB,GAAYq+a,EAAc9+Y,GAC1Bt/B,GAAa0+a,GAAep/Y,GAC5B0iZ,GAAQpD,GAAUt/Y,IAAOgiZ,KACzBW,GAAW/C,GAAa72e,GACxB65e,GAAY9C,GAAc/2e,GAC1B85e,GAAWvC,GAAav3e,GACxB+5e,GAAUpC,GAAY33e,GACtBG,GAAO03e,GAAS73e,GAChB+0e,GAAY0B,GAAax/Y,GACzB+iZ,GAASrD,GAAU1/Y,GACnBgjZ,GAAqB9B,GAAsBn4e,GAC3CokI,GAAiBi0W,GAAkBr4e,GACnCmkI,GAAcq0W,GAAex4e,GAC7Bk6e,GAAezE,EAAgB78a,GAC/Buhb,GAAcxE,EAAe/8a,GAC7Bwhb,GAAa1B,GAAcxyb,GAC3Bm0b,GAAgBzB,GAAiB1yb,GACjCxmD,GAAQ05e,GAAah5e,GACrBk6e,GAASnD,GAAWn3e,IAAY+4e,GAAmB34e,GACnDm6e,GAAWlD,GAAar3e,GACxBw2D,GAAaq/a,EAAcj9a,GAC3B4hb,GAAUxB,KACVyB,GAAWxB,KACXyB,GAAaxB,KACbyB,GAAWxB,KACXyB,GAAa9B,KACb+B,GAAiB9B,GAAmB34e,GACpC06e,GAAe3D,GAAWn3e,KAAa+4e,GAAmB34e,GAC1D26e,GAAY9E,GAAch/Y,GAC1B+jZ,GAAU7E,GAAYl/Y,GACtBgkZ,GAASlD,GAAW/3e,GACpBk7e,GAAmBjD,GAAqBj4e,GAmO5C,SAASm7e,GAAcrkd,GACrB,IAAIskd,EAAgBtkd,GAAwB36C,OAAOwjB,UAAUm3B,UAC7D,OAAOg6c,EAAesK,EACvB,CAoDDh2e,EAAQ,GAAWsqV,sCC3hCN,IAAI2rJ,EAAGl2e,EAAQ,MAAS0qF,EAAG1qF,EAAQ,MAAa,SAASplB,EAAEkiB,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEnG,EAAE,EAAEA,EAAE9B,UAAUnX,OAAOiZ,IAAIoG,GAAG,WAAWre,mBAAmBmW,UAAU8B,IAAI,MAAM,yBAAyBmG,EAAE,WAAWC,EAAE,gHAAiH,KAAIouF,EAAG,IAAIrvG,IAAIq6f,EAAG,CAAC,EAAE,SAAS/pZ,EAAGtvF,EAAEC,GAAGowF,EAAGrwF,EAAEC,GAAGowF,EAAGrwF,EAAE,UAAUC,EAAG,CACzb,SAASowF,EAAGrwF,EAAEC,GAAW,IAARo5e,EAAGr5e,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAErf,OAAOof,IAAIquF,EAAGrgE,IAAI/tB,EAAED,GAAI,CAC7D,IAAI6wF,IAAK,qBAAqB32G,QAAQ,qBAAqBA,OAAOiI,UAAU,qBAAqBjI,OAAOiI,SAASmG,eAAe2oG,EAAGhzG,OAAOgK,UAAU6X,eAAeuxF,EAAG,8VAA8VioZ,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAASl1e,EAAErE,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,GAAG/jB,KAAKu5f,gBAAgB,IAAIv5e,GAAG,IAAIA,GAAG,IAAIA,EAAEhgB,KAAKw5f,cAAch2e,EAAExjB,KAAKy5f,mBAAmBxwf,EAAEjJ,KAAK05f,gBAAgB9/e,EAAE5Z,KAAKm1D,aAAap1C,EAAE/f,KAAKqF,KAAK2a,EAAEhgB,KAAK25f,YAAY71e,EAAE9jB,KAAK45f,kBAAkB71e,CAAE,KAAI9V,EAAE,CAAC,EACpb,uIAAuI5L,MAAM,KAAK3B,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAerf,SAAQ,SAASqf,GAAG,IAAIC,EAAED,EAAE,GAAG9R,EAAE+R,GAAG,IAAIoE,EAAEpE,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,EAAI,IAAE,CAAC,kBAAkB,YAAY,aAAa,SAASrf,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAEvL,cAAc,MAAK,GAAG,EAAI,IAC3e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB9T,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,8OAA8O1d,MAAM,KAAK3B,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAEvL,cAAc,MAAK,GAAG,EAAI,IACzb,CAAC,UAAU,WAAW,QAAQ,YAAY9T,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,UAAU,YAAYrf,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,OAAO,OAAO,OAAO,QAAQrf,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAI,IAAE,CAAC,UAAU,SAASrf,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAEvL,cAAc,MAAK,GAAG,EAAI,IAAE,IAAIqlf,EAAG,gBAAgB,SAASlkZ,EAAG51F,GAAG,OAAOA,EAAE,GAAG2mB,aAAc,CAIzZ,SAASwwE,EAAGn3F,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAEgF,EAAE4R,eAAeG,GAAG/R,EAAE+R,GAAG,MAAQ,OAAO/W,EAAE,IAAIA,EAAE5D,KAAKme,KAAK,EAAExD,EAAErf,SAAS,MAAMqf,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYD,EAAEC,EAAEpG,EAAE4J,GAAG,GAAG,OAAOxD,GAAG,qBAAqBA,GADqE,SAAYD,EAAEC,EAAEpG,EAAE4J,GAAG,GAAG,OAAO5J,GAAG,IAAIA,EAAEvU,KAAK,OAAM,EAAG,cAAc2a,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGwD,IAAc,OAAO5J,GAASA,EAAE2/e,gBAAmD,WAAnCx5e,EAAEA,EAAEvL,cAAczP,MAAM,EAAE,KAAsB,UAAUgb,GAAE,QAAQ,OAAM,EAAI,CAChUi1F,CAAGj1F,EAAEC,EAAEpG,EAAE4J,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAO5J,EAAE,OAAOA,EAAEvU,MAAM,KAAK,EAAE,OAAO2a,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO27C,MAAM37C,GAAG,KAAK,EAAE,OAAO27C,MAAM37C,IAAI,EAAEA,EAAE,OAAM,CAAG,CAOvE85e,CAAG95e,EAAEpG,EAAE3Q,EAAEua,KAAK5J,EAAE,MAAM4J,GAAG,OAAOva,EARxK,SAAY8W,GAAG,QAAGixF,EAAGvyG,KAAK66f,EAAGv5e,KAAeixF,EAAGvyG,KAAK46f,EAAGt5e,KAAeqxF,EAAGh7F,KAAK2J,GAAUu5e,EAAGv5e,IAAG,GAAGs5e,EAAGt5e,IAAG,GAAS,GAAG,CAQuDg6e,CAAG/5e,KAAK,OAAOpG,EAAEmG,EAAEmnC,gBAAgBlnC,GAAGD,EAAEzX,aAAa0X,EAAE,GAAGpG,IAAI3Q,EAAEywf,gBAAgB35e,EAAE9W,EAAEksD,cAAc,OAAOv7C,EAAE,IAAI3Q,EAAE5D,MAAQ,GAAGuU,GAAGoG,EAAE/W,EAAEuwf,cAAch2e,EAAEva,EAAEwwf,mBAAmB,OAAO7/e,EAAEmG,EAAEmnC,gBAAgBlnC,IAAapG,EAAE,KAAX3Q,EAAEA,EAAE5D,OAAc,IAAI4D,IAAG,IAAK2Q,EAAE,GAAG,GAAGA,EAAE4J,EAAEzD,EAAEyjK,eAAehgK,EAAExD,EAAEpG,GAAGmG,EAAEzX,aAAa0X,EAAEpG,KAAK,CAHld,0jCAA0jCvX,MAAM,KAAK3B,SAAQ,SAASqf,GAAG,IAAIC,EAAED,EAAEne,QAAQi4f,EACzmClkZ,GAAI1nG,EAAE+R,GAAG,IAAIoE,EAAEpE,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,EAAI,IAAE,2EAA2E1d,MAAM,KAAK3B,SAAQ,SAASqf,GAAG,IAAIC,EAAED,EAAEne,QAAQi4f,EAAGlkZ,GAAI1nG,EAAE+R,GAAG,IAAIoE,EAAEpE,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,EAAI,IAAE,CAAC,WAAW,WAAW,aAAarf,SAAQ,SAASqf,GAAG,IAAIC,EAAED,EAAEne,QAAQi4f,EAAGlkZ,GAAI1nG,EAAE+R,GAAG,IAAIoE,EAAEpE,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,EAAI,IAAE,CAAC,WAAW,eAAerf,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAEvL,cAAc,MAAK,GAAG,EAAI,IACndvG,EAAE+rf,UAAU,IAAI51e,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc1jB,SAAQ,SAASqf,GAAG9R,EAAE8R,GAAG,IAAIqE,EAAErE,EAAE,GAAE,EAAGA,EAAEvL,cAAc,MAAK,GAAG,EAAI,IAE7L,IAAI0J,EAAGi7e,EAAGc,mDAAmDC,EAAGt2e,OAAOC,IAAI,iBAAiBs2e,EAAGv2e,OAAOC,IAAI,gBAAgBu2e,EAAGx2e,OAAOC,IAAI,kBAAkBw2e,EAAGz2e,OAAOC,IAAI,qBAAqBy2e,EAAG12e,OAAOC,IAAI,kBAAkB02e,EAAG32e,OAAOC,IAAI,kBAAkB22e,EAAG52e,OAAOC,IAAI,iBAAiB42e,EAAG72e,OAAOC,IAAI,qBAAqB62e,EAAG92e,OAAOC,IAAI,kBAAkB82e,EAAG/2e,OAAOC,IAAI,uBAAuB+2e,EAAGh3e,OAAOC,IAAI,cAAcg3e,EAAGj3e,OAAOC,IAAI,cAAcD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,0BACje,IAAIi3e,EAAGl3e,OAAOC,IAAI,mBAAmBD,OAAOC,IAAI,uBAAuBD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,wBAAwB,IAAIk3e,EAAGn3e,OAAO44G,SAAS,SAASw+X,EAAGj7e,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAEg7e,GAAIh7e,EAAEg7e,IAAKh7e,EAAE,eAA0CA,EAAE,IAAK,KAAoBk7e,EAAhBt9P,EAAE3/P,OAAOmH,OAAU,SAAS+1f,EAAGn7e,GAAG,QAAG,IAASk7e,EAAG,IAAI,MAAM1ggB,OAA4E,CAAnE,MAAMqf,GAAG,IAAIoG,EAAEpG,EAAEizX,MAAMtqY,OAAO0M,MAAM,gBAAgBgsf,EAAGj7e,GAAGA,EAAE,IAAI,EAAG,OAAM,KAAKi7e,EAAGl7e,CAAE,KAAIo7e,GAAG,EACzb,SAASC,EAAGr7e,EAAEC,GAAG,IAAID,GAAGo7e,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAIvhf,EAAErf,MAAM8ggB,kBAAkB9ggB,MAAM8ggB,uBAAkB,EAAO,IAAI,GAAGr7e,EAAE,GAAGA,EAAE,WAAW,MAAMzlB,OAAS,EAACyD,OAAOC,eAAe+hB,EAAEhY,UAAU,QAAQ,CAAC7O,IAAI,WAAW,MAAMoB,OAAS,IAAG,kBAAkB+ggB,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAUv7e,EAAE,GAAqB,CAAjB,MAAMgE,GAAG,IAAIR,EAAEQ,CAAE,CAAAs3e,QAAQC,UAAUx7e,EAAE,GAAGC,EAAG,KAAI,CAAC,IAAIA,EAAEvhB,MAAoB,CAAb,MAAMulB,GAAGR,EAAEQ,CAAE,CAAAjE,EAAEthB,KAAKuhB,EAAEhY,UAAW,KAAI,CAAC,IAAI,MAAMzN,OAAsB,CAAb,MAAMypB,GAAGR,EAAEQ,CAAE,CAAAjE,GAAI,CAC5D,CAD6D,MAAMiE,GAAG,GAAGA,GAAGR,GAAG,kBAAkBQ,EAAE6oX,MAAM,CAAC,IAAI,IAAI5jY,EAAE+a,EAAE6oX,MAAMxqY,MAAM,MACnfyhB,EAAEN,EAAEqpX,MAAMxqY,MAAM,MAAM0hB,EAAE9a,EAAEtI,OAAO,EAAE1E,EAAE6nB,EAAEnjB,OAAO,EAAE,GAAGojB,GAAG,GAAG9nB,GAAGgN,EAAE8a,KAAKD,EAAE7nB,IAAIA,IAAI,KAAK,GAAG8nB,GAAG,GAAG9nB,EAAE8nB,IAAI9nB,IAAI,GAAGgN,EAAE8a,KAAKD,EAAE7nB,GAAG,CAAC,GAAG,IAAI8nB,GAAG,IAAI9nB,EAAG,GAAG,GAAG8nB,IAAQ,IAAJ9nB,GAASgN,EAAE8a,KAAKD,EAAE7nB,GAAG,CAAC,IAAI+H,EAAE,KAAKiF,EAAE8a,GAAGniB,QAAQ,WAAW,QAA6F,OAArFme,EAAErH,aAAa1U,EAAEuB,SAAS,iBAAiBvB,EAAEA,EAAEpC,QAAQ,cAAcme,EAAErH,cAAqB1U,CAAE,QAAM,GAAG+f,GAAG,GAAG9nB,GAAG,KAAM,CAAC,CAAC,CADlO,QAC0Ok/f,GAAG,EAAG5ggB,MAAM8ggB,kBAAkBzhf,CAAE,QAAOmG,EAAEA,EAAEA,EAAErH,aAAaqH,EAAE3mB,KAAK,IAAI8hgB,EAAGn7e,GAAG,EAAG,CAC/Z,SAASy7e,EAAGz7e,GAAG,OAAOA,EAAE9Y,KAAK,KAAK,EAAE,OAAOi0f,EAAGn7e,EAAE1a,MAAM,KAAK,GAAG,OAAO61f,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOn7e,EAAEq7e,EAAGr7e,EAAE1a,MAAK,GAAM,KAAK,GAAG,OAAO0a,EAAEq7e,EAAGr7e,EAAE1a,KAAKipC,QAAO,GAAM,KAAK,EAAE,OAAOvuB,EAAEq7e,EAAGr7e,EAAE1a,MAAK,GAAM,QAAQ,MAAM,GAAI,CACzR,SAASo2f,EAAG17e,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAErH,aAAaqH,EAAE3mB,MAAM,KAAK,GAAG,kBAAkB2mB,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKq6e,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkB56e,EAAE,OAAOA,EAAEuE,UAAU,KAAKk2e,EAAG,OAAOz6e,EAAErH,aAAa,WAAW,YAAY,KAAK6hf,EAAG,OAAOx6e,EAAEwgI,SAAS7nI,aAAa,WAAW,YAAY,KAAK+hf,EAAG,IAAIz6e,EAAED,EAAEuuB,OAC7Z,OADoavuB,EAAEA,EAAErH,eACndqH,EAAE,MADieA,EAAEC,EAAEtH,aAClfsH,EAAE5mB,MAAM,IAAY,cAAc2mB,EAAE,IAAI,cAAqBA,EAAE,KAAK66e,EAAG,OAA6B,QAAtB56e,EAAED,EAAErH,aAAa,MAAcsH,EAAEy7e,EAAG17e,EAAE1a,OAAO,OAAO,KAAKw1f,EAAG76e,EAAED,EAAE27e,SAAS37e,EAAEA,EAAEwjF,MAAM,IAAI,OAAOk4Z,EAAG17e,EAAEC,GAAc,CAAV,MAAMpG,GAAI,EAAC,OAAO,IAAK,CAC5M,SAAS+hf,EAAG57e,GAAG,IAAIC,EAAED,EAAE1a,KAAK,OAAO0a,EAAE9Y,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAO+Y,EAAEtH,aAAa,WAAW,YAAY,KAAK,GAAG,OAAOsH,EAAEugI,SAAS7nI,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkBqH,GAAXA,EAAEC,EAAEsuB,QAAW51B,aAAaqH,EAAE3mB,MAAM,GAAG4mB,EAAEtH,cAAc,KAAKqH,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOC,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAOy7e,EAAGz7e,GAAG,KAAK,EAAE,OAAOA,IAAIq6e,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoBr6e,EAAE,OAAOA,EAAEtH,aAAasH,EAAE5mB,MAAM,KAAK,GAAG,kBAAkB4mB,EAAE,OAAOA,EAAE,OAAO,IAAK,UAAS47e,EAAG77e,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAI,CACta,SAAS87e,EAAG97e,GAAG,IAAIC,EAAED,EAAE1a,KAAK,OAAO0a,EAAEA,EAAE65B,WAAW,UAAU75B,EAAEvL,gBAAgB,aAAawL,GAAG,UAAUA,EAAG,CAEvF,SAAS87e,EAAG/7e,GAAGA,EAAEg8e,gBAAgBh8e,EAAEg8e,cADvD,SAAYh8e,GAAG,IAAIC,EAAE67e,EAAG97e,GAAG,UAAU,QAAQnG,EAAE5b,OAAOouc,yBAAyBrsb,EAAEsnB,YAAYr/B,UAAUgY,GAAGwD,EAAE,GAAGzD,EAAEC,GAAG,IAAID,EAAEF,eAAeG,IAAI,qBAAqBpG,GAAG,oBAAoBA,EAAEhgB,KAAK,oBAAoBggB,EAAEzgB,IAAI,CAAC,IAAI8P,EAAE2Q,EAAEhgB,IAAIkqB,EAAElK,EAAEzgB,IAAiL,OAA7K6E,OAAOC,eAAe8hB,EAAEC,EAAE,CAAC5hB,cAAa,EAAGxE,IAAI,WAAW,OAAOqP,EAAExK,KAAKuB,KAAM,EAAC7G,IAAI,SAAS4mB,GAAGyD,EAAE,GAAGzD,EAAE+D,EAAErlB,KAAKuB,KAAK+f,EAAG,IAAG/hB,OAAOC,eAAe8hB,EAAEC,EAAE,CAACyD,WAAW7J,EAAE6J,aAAmB,CAAC+a,SAAS,WAAW,OAAOhb,CAAE,EAAColB,SAAS,SAAS7oB,GAAGyD,EAAE,GAAGzD,CAAE,EAACi8e,aAAa,WAAWj8e,EAAEg8e,cACxf,YAAYh8e,EAAEC,EAAG,EAAE,CAAC,CAAiDi8e,CAAGl8e,GAAI,UAASm8e,EAAGn8e,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEg8e,cAAc,IAAI/7e,EAAE,OAAM,EAAG,IAAIpG,EAAEoG,EAAEwe,WAAehb,EAAE,GAAqD,OAAlDzD,IAAIyD,EAAEq4e,EAAG97e,GAAGA,EAAE2nB,QAAQ,OAAO,QAAQ3nB,EAAE7hB,QAAO6hB,EAAEyD,KAAa5J,IAAGoG,EAAE4oB,SAAS7oB,IAAG,EAAO,UAASo8e,EAAGp8e,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB7d,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO6d,EAAE6nC,eAAe7nC,EAAEza,IAA4B,CAAvB,MAAM0a,GAAG,OAAOD,EAAEza,IAAK,CAAC,CACra,SAAS82f,EAAGr8e,EAAEC,GAAG,IAAIpG,EAAEoG,EAAE0nB,QAAQ,OAAOi2N,EAAE,CAAC,EAAE39O,EAAE,CAACq8e,oBAAe,EAAOj+d,kBAAa,EAAOlgC,WAAM,EAAOwpC,QAAQ,MAAM9tB,EAAEA,EAAEmG,EAAEu8e,cAAcC,gBAAiB,UAASC,EAAGz8e,EAAEC,GAAG,IAAIpG,EAAE,MAAMoG,EAAEoe,aAAa,GAAGpe,EAAEoe,aAAa5a,EAAE,MAAMxD,EAAE0nB,QAAQ1nB,EAAE0nB,QAAQ1nB,EAAEq8e,eAAezif,EAAEgif,EAAG,MAAM57e,EAAE9hB,MAAM8hB,EAAE9hB,MAAM0b,GAAGmG,EAAEu8e,cAAc,CAACC,eAAe/4e,EAAEq5I,aAAajjJ,EAAE2uB,WAAW,aAAavoB,EAAE3a,MAAM,UAAU2a,EAAE3a,KAAK,MAAM2a,EAAE0nB,QAAQ,MAAM1nB,EAAE9hB,MAAO,UAASu+f,EAAG18e,EAAEC,GAAe,OAAZA,EAAEA,EAAE0nB,UAAiBwvE,EAAGn3F,EAAE,UAAUC,GAAE,EAAI,CAC/d,SAAS08e,EAAG38e,EAAEC,GAAGy8e,EAAG18e,EAAEC,GAAG,IAAIpG,EAAEgif,EAAG57e,EAAE9hB,OAAOslB,EAAExD,EAAE3a,KAAK,GAAG,MAAMuU,EAAK,WAAW4J,GAAM,IAAI5J,GAAG,KAAKmG,EAAE7hB,OAAO6hB,EAAE7hB,OAAO0b,KAAEmG,EAAE7hB,MAAM,GAAG0b,GAAOmG,EAAE7hB,QAAQ,GAAG0b,IAAImG,EAAE7hB,MAAM,GAAG0b,QAAQ,GAAG,WAAW4J,GAAG,UAAUA,EAA8B,YAA3BzD,EAAEmnC,gBAAgB,SAAgBlnC,EAAEH,eAAe,SAAS88e,GAAG58e,EAAEC,EAAE3a,KAAKuU,GAAGoG,EAAEH,eAAe,iBAAiB88e,GAAG58e,EAAEC,EAAE3a,KAAKu2f,EAAG57e,EAAEoe,eAAe,MAAMpe,EAAE0nB,SAAS,MAAM1nB,EAAEq8e,iBAAiBt8e,EAAEs8e,iBAAiBr8e,EAAEq8e,eAAgB,CACna,SAASO,EAAG78e,EAAEC,EAAEpG,GAAG,GAAGoG,EAAEH,eAAe,UAAUG,EAAEH,eAAe,gBAAgB,CAAC,IAAI2D,EAAExD,EAAE3a,KAAK,KAAK,WAAWme,GAAG,UAAUA,QAAG,IAASxD,EAAE9hB,OAAO,OAAO8hB,EAAE9hB,OAAO,OAAO8hB,EAAE,GAAGD,EAAEu8e,cAAcz/V,aAAajjJ,GAAGoG,IAAID,EAAE7hB,QAAQ6hB,EAAE7hB,MAAM8hB,GAAGD,EAAEqe,aAAape,CAAE,CAAS,MAATpG,EAAEmG,EAAE3mB,QAAc2mB,EAAE3mB,KAAK,IAAI2mB,EAAEs8e,iBAAiBt8e,EAAEu8e,cAAcC,eAAe,KAAK3if,IAAImG,EAAE3mB,KAAKwgB,EAAG,CAC1V,SAAS+if,GAAG58e,EAAEC,EAAEpG,GAAM,WAAWoG,GAAGm8e,EAAGp8e,EAAEmT,iBAAiBnT,IAAE,MAAMnG,EAAEmG,EAAEqe,aAAa,GAAGre,EAAEu8e,cAAcz/V,aAAa98I,EAAEqe,eAAe,GAAGxkB,IAAImG,EAAEqe,aAAa,GAAGxkB,GAAG,KAAIijf,GAAGh4f,MAAMC,QAC7K,SAASg4f,GAAG/8e,EAAEC,EAAEpG,EAAE4J,GAAe,GAAZzD,EAAEA,EAAE3iB,QAAW4iB,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAI/W,EAAE,EAAEA,EAAE2Q,EAAEjZ,OAAOsI,IAAI+W,EAAE,IAAIpG,EAAE3Q,KAAI,EAAG,IAAI2Q,EAAE,EAAEA,EAAEmG,EAAEpf,OAAOiZ,IAAI3Q,EAAE+W,EAAEH,eAAe,IAAIE,EAAEnG,GAAG1b,OAAO6hB,EAAEnG,GAAGqM,WAAWhd,IAAI8W,EAAEnG,GAAGqM,SAAShd,GAAGA,GAAGua,IAAIzD,EAAEnG,GAAGmjf,iBAAgB,EAAI,KAAI,CAAmB,IAAlBnjf,EAAE,GAAGgif,EAAGhif,GAAGoG,EAAE,KAAS/W,EAAE,EAAEA,EAAE8W,EAAEpf,OAAOsI,IAAI,CAAC,GAAG8W,EAAE9W,GAAG/K,QAAQ0b,EAAiD,OAA9CmG,EAAE9W,GAAGgd,UAAS,OAAGzC,IAAIzD,EAAE9W,GAAG8zf,iBAAgB,IAAW,OAAO/8e,GAAGD,EAAE9W,GAAGuc,WAAWxF,EAAED,EAAE9W,GAAI,QAAO+W,IAAIA,EAAEiG,UAAS,EAAI,CAAC,CACzY,SAAS+2e,GAAGj9e,EAAEC,GAAG,GAAG,MAAMA,EAAEmuK,wBAAwB,MAAM5zL,MAAMsD,EAAE,KAAK,OAAO8/P,EAAE,CAAC,EAAE39O,EAAE,CAAC9hB,WAAM,EAAOkgC,kBAAa,EAAOrzB,SAAS,GAAGgV,EAAEu8e,cAAcz/V,cAAe,UAASogW,GAAGl9e,EAAEC,GAAG,IAAIpG,EAAEoG,EAAE9hB,MAAM,GAAG,MAAM0b,EAAE,CAA+B,GAA9BA,EAAEoG,EAAEjV,SAASiV,EAAEA,EAAEoe,aAAgB,MAAMxkB,EAAE,CAAC,GAAG,MAAMoG,EAAE,MAAMzlB,MAAMsD,EAAE,KAAK,GAAGg/f,GAAGjjf,GAAG,CAAC,GAAG,EAAEA,EAAEjZ,OAAO,MAAMpG,MAAMsD,EAAE,KAAK+b,EAAEA,EAAE,EAAG,CAAAoG,EAAEpG,CAAE,OAAMoG,IAAIA,EAAE,IAAIpG,EAAEoG,CAAE,CAAAD,EAAEu8e,cAAc,CAACz/V,aAAa++V,EAAGhif,GAAI,CACpY,SAASsjf,GAAGn9e,EAAEC,GAAG,IAAIpG,EAAEgif,EAAG57e,EAAE9hB,OAAOslB,EAAEo4e,EAAG57e,EAAEoe,cAAc,MAAMxkB,KAAIA,EAAE,GAAGA,KAAMmG,EAAE7hB,QAAQ6hB,EAAE7hB,MAAM0b,GAAG,MAAMoG,EAAEoe,cAAcre,EAAEqe,eAAexkB,IAAImG,EAAEqe,aAAaxkB,IAAI,MAAM4J,IAAIzD,EAAEqe,aAAa,GAAG5a,EAAG,UAAS25e,GAAGp9e,GAAG,IAAIC,EAAED,EAAEsnC,YAAYrnC,IAAID,EAAEu8e,cAAcz/V,cAAc,KAAK78I,GAAG,OAAOA,IAAID,EAAE7hB,MAAM8hB,EAAG,UAASo9e,GAAGr9e,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAAgC,CAC9c,SAAS6yF,GAAG7yF,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAEq9e,GAAGp9e,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,CAAE,CACjK,IAAIuiB,GAAeviB,GAAZgsF,IAAYhsF,GAAsJ,SAASA,EAAEC,GAAG,GAAG,+BAA+BD,EAAEs9e,cAAc,cAAct9e,EAAEA,EAAEutD,UAAUttD,MAAM,CAA2F,KAA1FsiB,GAAGA,IAAIpgC,SAASmG,cAAc,QAAUilE,UAAU,QAAQttD,EAAEusC,UAAUjvD,WAAW,SAAa0iB,EAAEsiB,GAAG96B,WAAWuY,EAAEvY,YAAYuY,EAAE1W,YAAY0W,EAAEvY,YAAY,KAAKwY,EAAExY,YAAYuY,EAAExX,YAAYyX,EAAExY,WAAY,CAAC,EAAxb,qBAAqB81f,OAAOA,MAAMC,wBAAwB,SAASv9e,EAAEpG,EAAE4J,EAAEva,GAAGq0f,MAAMC,yBAAwB,WAAW,OAAOx9e,GAAEC,EAAEpG,EAAO,GAAE,EAACmG,IACtK,SAASy9e,GAAGz9e,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIpG,EAAEmG,EAAEvY,WAAW,GAAGoS,GAAGA,IAAImG,EAAEwtD,WAAW,IAAI3zD,EAAEm8B,SAAwB,YAAdn8B,EAAE6tK,UAAUznK,EAAU,CAAAD,EAAEsnC,YAAYrnC,CAAE,CACvH,IAAIshB,GAAG,CAACjwB,yBAAwB,EAAGosf,aAAY,EAAGnsf,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGqyB,UAAS,EAAGpyB,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGK,YAAW,EAAG0qf,WAAU,EAAGzqf,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAClfC,MAAK,EAAGE,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAI0pf,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAG79e,EAAEC,EAAEpG,GAAG,OAAO,MAAMoG,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGpG,GAAG,kBAAkBoG,GAAG,IAAIA,GAAGshB,GAAGzhB,eAAeE,IAAIuhB,GAAGvhB,IAAI,GAAGC,GAAGzd,OAAOyd,EAAE,IAAK,CAC1b,SAAS69e,GAAG99e,EAAEC,GAAa,IAAI,IAAIpG,KAAlBmG,EAAEA,EAAE+W,MAAmB9W,EAAE,GAAGA,EAAEH,eAAejG,GAAG,CAAC,IAAI4J,EAAE,IAAI5J,EAAExY,QAAQ,MAAM6H,EAAE20f,GAAGhkf,EAAEoG,EAAEpG,GAAG4J,GAAG,UAAU5J,IAAIA,EAAE,YAAY4J,EAAEzD,EAAEonC,YAAYvtC,EAAE3Q,GAAG8W,EAAEnG,GAAG3Q,CAAE,CAAC,CADWjL,OAAOgB,KAAKsiC,IAAI5gC,SAAQ,SAASqf,GAAG49e,GAAGj9f,SAAQ,SAASsf,GAAGA,EAAEA,EAAED,EAAE9D,OAAO,GAAGyqB,cAAc3mB,EAAEe,UAAU,GAAGwgB,GAAGthB,GAAGshB,GAAGvhB,EAAG,GAAE,IACjI,IAAI+9e,GAAGngQ,EAAE,CAACogQ,UAAS,GAAI,CAACjyV,MAAK,EAAGz0I,MAAK,EAAGm2E,IAAG,EAAG7gC,KAAI,EAAGqxb,OAAM,EAAGxtZ,IAAG,EAAGytZ,KAAI,EAAGzjf,OAAM,EAAG0jf,QAAO,EAAGzhU,MAAK,EAAG0hU,MAAK,EAAGhvX,OAAM,EAAG5nG,QAAO,EAAG62d,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGv+e,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG89e,GAAG/9e,KAAK,MAAMC,EAAEjV,UAAU,MAAMiV,EAAEmuK,yBAAyB,MAAM5zL,MAAMsD,EAAE,IAAIkiB,IAAI,GAAG,MAAMC,EAAEmuK,wBAAwB,CAAC,GAAG,MAAMnuK,EAAEjV,SAAS,MAAMxQ,MAAMsD,EAAE,KAAK,GAAG,kBAAkBmiB,EAAEmuK,2BAA2B,WAAWnuK,EAAEmuK,yBAAyB,MAAM5zL,MAAMsD,EAAE,IAAM,IAAG,MAAMmiB,EAAE8W,OAAO,kBAAkB9W,EAAE8W,MAAM,MAAMv8B,MAAMsD,EAAE,IAAM,CAAC,CACnW,SAAS0ggB,GAAGx+e,EAAEC,GAAG,IAAI,IAAID,EAAE3e,QAAQ,KAAK,MAAM,kBAAkB4e,EAAEivD,GAAG,OAAOlvD,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAI,KAAIy+e,GAAG,KAAK,SAASC,GAAG1+e,GAA6F,OAA1FA,EAAEA,EAAEpI,QAAQoI,EAAE2+e,YAAYzkgB,QAAS0kgB,0BAA0B5+e,EAAEA,EAAE4+e,yBAAgC,IAAI5+e,EAAEg2B,SAASh2B,EAAE3W,WAAW2W,CAAE,KAAI6+e,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAGh/e,GAAG,GAAGA,EAAEi/e,GAAGj/e,GAAG,CAAC,GAAG,oBAAoB6+e,GAAG,MAAMrkgB,MAAMsD,EAAE,MAAM,IAAImiB,EAAED,EAAEk/e,UAAUj/e,IAAIA,EAAEk/e,GAAGl/e,GAAG4+e,GAAG7+e,EAAEk/e,UAAUl/e,EAAE1a,KAAK2a,GAAI,CAAC,UAASm/e,GAAGp/e,GAAG8+e,GAAGC,GAAGA,GAAG1+f,KAAK2f,GAAG++e,GAAG,CAAC/+e,GAAG8+e,GAAG9+e,CAAE,UAASq/e,KAAK,GAAGP,GAAG,CAAC,IAAI9+e,EAAE8+e,GAAG7+e,EAAE8+e,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGh/e,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAErf,OAAOof,IAAIg/e,GAAG/+e,EAAED,GAAI,CAAC,UAASs/e,GAAGt/e,EAAEC,GAAG,OAAOD,EAAEC,EAAG,UAASs/e,KAAM,KAAIC,IAAG,EAAG,SAASC,GAAGz/e,EAAEC,EAAEpG,GAAG,GAAG2lf,GAAG,OAAOx/e,EAAEC,EAAEpG,GAAG2lf,IAAG,EAAG,IAAI,OAAOF,GAAGt/e,EAAEC,EAAEpG,EAAmD,CAArE,QAAgC2lf,IAAG,GAAG,OAAOV,IAAI,OAAOC,MAAGQ,KAAKF,KAAK,CAAC,CACjb,SAASK,GAAG1/e,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEk/e,UAAU,GAAG,OAAOrlf,EAAE,OAAO,KAAK,IAAI4J,EAAE07e,GAAGtlf,GAAG,GAAG,OAAO4J,EAAE,OAAO,KAAK5J,EAAE4J,EAAExD,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBwD,GAAGA,EAAEgC,YAAqBhC,IAAI,YAAbzD,EAAEA,EAAE1a,OAAuB,UAAU0a,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGyD,EAAE,MAAMzD,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGnG,GAAG,oBACleA,EAAE,MAAMrf,MAAMsD,EAAE,IAAImiB,SAASpG,IAAI,OAAOA,CAAE,KAAI8lf,IAAG,EAAG,GAAG9uZ,EAAG,IAAI,IAAI+uZ,GAAG,CAAC,EAAE3hgB,OAAOC,eAAe0hgB,GAAG,UAAU,CAAC/lgB,IAAI,WAAW8lgB,IAAG,CAAG,IAAGzlgB,OAAOsH,iBAAiB,OAAOo+f,GAAGA,IAAI1lgB,OAAOuH,oBAAoB,OAAOm+f,GAAGA,GAAmB,CAAf,MAAM5/e,IAAG2/e,IAAG,CAAG,UAASE,GAAG7/e,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,EAAE9nB,EAAE+H,GAAG,IAAIggB,EAAEnf,MAAMmD,UAAUjD,MAAMtG,KAAKqZ,UAAU,GAAG,IAAIkI,EAAEjI,MAAM6B,EAAEoK,EAA4B,CAAzB,MAAM9mB,GAAG8C,KAAK6/f,QAAQ3igB,EAAG,CAAC,KAAI4igB,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAAS9/e,GAAG+/e,IAAG,EAAGC,GAAGhgf,CAAE,GAAE,SAASogf,GAAGpgf,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,EAAE9nB,EAAE+H,GAAG87f,IAAG,EAAGC,GAAG,KAAKH,GAAG7nf,MAAMmof,GAAGpof,UAAW,CAClW,SAASsof,GAAGrgf,GAAG,IAAIC,EAAED,EAAEnG,EAAEmG,EAAE,GAAGA,EAAEsgf,UAAU,KAAKrgf,EAAEhV,QAAQgV,EAAEA,EAAEhV,WAAW,CAAC+U,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAASk6J,SAAcrgK,EAAEoG,EAAEhV,QAAQ+U,EAAEC,EAAEhV,aAAa+U,EAAG,QAAO,IAAIC,EAAE/Y,IAAI2S,EAAE,IAAK,UAAS0mf,GAAGvgf,GAAG,GAAG,KAAKA,EAAE9Y,IAAI,CAAC,IAAI+Y,EAAED,EAAEwgf,cAAsE,GAAxD,OAAOvgf,IAAkB,QAAdD,EAAEA,EAAEsgf,aAAqBrgf,EAAED,EAAEwgf,gBAAmB,OAAOvgf,EAAE,OAAOA,EAAEwgf,UAAW,QAAO,IAAK,UAASC,GAAG1gf,GAAG,GAAGqgf,GAAGrgf,KAAKA,EAAE,MAAMxlB,MAAMsD,EAAE,KAAO,CAE3S,SAAS6igB,GAAG3gf,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAEsgf,UAAU,IAAIrgf,EAAE,CAAS,GAAG,QAAXA,EAAEogf,GAAGrgf,IAAe,MAAMxlB,MAAMsD,EAAE,MAAM,OAAOmiB,IAAID,EAAE,KAAKA,CAAE,KAAI,IAAInG,EAAEmG,EAAEyD,EAAExD,IAAI,CAAC,IAAI/W,EAAE2Q,EAAE5O,OAAO,GAAG,OAAO/B,EAAE,MAAM,IAAI6a,EAAE7a,EAAEo3f,UAAU,GAAG,OAAOv8e,EAAE,CAAY,GAAG,QAAdN,EAAEva,EAAE+B,QAAmB,CAAC4O,EAAE4J,EAAE,QAAS,MAAM,IAAGva,EAAEojC,QAAQvoB,EAAEuoB,MAAM,CAAC,IAAIvoB,EAAE7a,EAAEojC,MAAMvoB,GAAG,CAAC,GAAGA,IAAIlK,EAAE,OAAO6mf,GAAGx3f,GAAG8W,EAAE,GAAG+D,IAAIN,EAAE,OAAOi9e,GAAGx3f,GAAG+W,EAAE8D,EAAEA,EAAE68e,OAAQ,OAAMpmgB,MAAMsD,EAAE,KAAO,IAAG+b,EAAE5O,SAASwY,EAAExY,OAAO4O,EAAE3Q,EAAEua,EAAEM,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAG9nB,EAAEgN,EAAEojC,MAAMpwC,GAAG,CAAC,GAAGA,IAAI2d,EAAE,CAACmK,GAAE,EAAGnK,EAAE3Q,EAAEua,EAAEM,EAAE,KAAM,IAAG7nB,IAAIunB,EAAE,CAACO,GAAE,EAAGP,EAAEva,EAAE2Q,EAAEkK,EAAE,KAAM,CAAA7nB,EAAEA,EAAE0kgB,OAAQ,KAAI58e,EAAE,CAAC,IAAI9nB,EAAE6nB,EAAEuoB,MAAMpwC,GAAG,CAAC,GAAGA,IAC5f2d,EAAE,CAACmK,GAAE,EAAGnK,EAAEkK,EAAEN,EAAEva,EAAE,KAAM,IAAGhN,IAAIunB,EAAE,CAACO,GAAE,EAAGP,EAAEM,EAAElK,EAAE3Q,EAAE,KAAM,CAAAhN,EAAEA,EAAE0kgB,OAAQ,KAAI58e,EAAE,MAAMxpB,MAAMsD,EAAE,KAAO,CAAC,IAAG+b,EAAEymf,YAAY78e,EAAE,MAAMjpB,MAAMsD,EAAE,KAAO,IAAG,IAAI+b,EAAE3S,IAAI,MAAM1M,MAAMsD,EAAE,MAAM,OAAO+b,EAAEqlf,UAAUxlf,UAAUG,EAAEmG,EAAEC,CAAE,CAAiB4gf,CAAG7gf,IAAmB8gf,GAAG9gf,GAAG,IAAK,UAAS8gf,GAAG9gf,GAAG,GAAG,IAAIA,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,IAAI,OAAO8Y,EAAE,IAAIA,EAAEA,EAAEssB,MAAM,OAAOtsB,GAAG,CAAC,IAAIC,EAAE6gf,GAAG9gf,GAAG,GAAG,OAAOC,EAAE,OAAOA,EAAED,EAAEA,EAAE4gf,OAAQ,QAAO,IAAK,CAC3X,IAAIG,GAAGnzZ,EAAGozZ,0BAA0BC,GAAGrzZ,EAAGszZ,wBAAwBC,GAAGvzZ,EAAGwzZ,qBAAqBC,GAAGzzZ,EAAG0zZ,sBAAsBC,GAAE3zZ,EAAG4zZ,aAAaC,GAAG7zZ,EAAG8zZ,iCAAiCC,GAAG/zZ,EAAGg0Z,2BAA2BC,GAAGj0Z,EAAGk0Z,8BAA8BC,GAAGn0Z,EAAGo0Z,wBAAwBC,GAAGr0Z,EAAGs0Z,qBAAqBC,GAAGv0Z,EAAGw0Z,sBAAsBC,GAAG,KAAKC,GAAG,KACvV,IAAIC,GAAG/4f,KAAKg5f,MAAMh5f,KAAKg5f,MAAiC,SAAYxif,GAAU,OAAO,KAAdA,KAAK,GAAe,GAAG,IAAIyif,GAAGzif,GAAG0if,GAAG,GAAG,CAAE,EAAhFD,GAAGj5f,KAAKiqD,IAAIivc,GAAGl5f,KAAKm5f,IAA4D,IAAIC,GAAG,GAAG3sZ,GAAG,QAC7H,SAAS4sZ,GAAG7if,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAG,UAAS8if,GAAG9if,EAAEC,GAAG,IAAIpG,EAAEmG,EAAE+if,aAAa,GAAG,IAAIlpf,EAAE,OAAO,EAAE,IAAI4J,EAAE,EAAEva,EAAE8W,EAAEgjf,eAAej/e,EAAE/D,EAAEijf,YAAYj/e,EAAI,UAAFnK,EAAY,GAAG,IAAImK,EAAE,CAAC,IAAI9nB,EAAE8nB,GAAG9a,EAAE,IAAIhN,EAAEunB,EAAEo/e,GAAG3mgB,GAAS,KAAL6nB,GAAGC,KAAUP,EAAEo/e,GAAG9+e,GAAK,MAAY,KAAPC,EAAEnK,GAAG3Q,GAAQua,EAAEo/e,GAAG7+e,GAAG,IAAID,IAAIN,EAAEo/e,GAAG9+e,IAAI,GAAG,IAAIN,EAAE,OAAO,EAAE,GAAG,IAAIxD,GAAGA,IAAIwD,GAAG,KAAKxD,EAAE/W,MAAKA,EAAEua,GAAGA,KAAEM,EAAE9D,GAAGA,IAAQ,KAAK/W,GAAG,KAAO,QAAF6a,IAAY,OAAO9D,EAA0C,GAAxC,KAAO,EAAFwD,KAAOA,GAAK,GAAF5J,GAA4B,KAAtBoG,EAAED,EAAEkjf,gBAAwB,IAAIljf,EAAEA,EAAEmjf,cAAcljf,GAAGwD,EAAE,EAAExD,GAAc/W,EAAE,IAAb2Q,EAAE,GAAG0of,GAAGtif,IAAUwD,GAAGzD,EAAEnG,GAAGoG,IAAI/W,EAAE,OAAOua,CAAE,CACxc,SAAS2/e,GAAGpjf,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOC,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAG,CACtN,SAASojf,GAAGrjf,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAE+if,cAAsC/if,EAAI,WAAFA,EAAa,WAAW,CAAE,UAASsjf,KAAK,IAAItjf,EAAE4if,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAW5if,CAAE,UAASujf,GAAGvjf,GAAG,IAAI,IAAIC,EAAE,GAAGpG,EAAE,EAAE,GAAGA,EAAEA,IAAIoG,EAAE5f,KAAK2f,GAAG,OAAOC,CAAE,CAC5a,SAASujf,GAAGxjf,EAAEC,EAAEpG,GAAGmG,EAAE+if,cAAc9if,EAAE,YAAYA,IAAID,EAAEgjf,eAAe,EAAEhjf,EAAEijf,YAAY,IAAGjjf,EAAEA,EAAEyjf,YAAWxjf,EAAE,GAAGsif,GAAGtif,IAAQpG,CAAE,CAC1H,SAAS6pf,GAAG1jf,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEkjf,gBAAgBjjf,EAAE,IAAID,EAAEA,EAAEmjf,cAActpf,GAAG,CAAC,IAAI4J,EAAE,GAAG8+e,GAAG1of,GAAG3Q,EAAE,GAAGua,EAAEva,EAAE+W,EAAED,EAAEyD,GAAGxD,IAAID,EAAEyD,IAAIxD,GAAGpG,IAAI3Q,CAAE,CAAC,KAAIy0P,GAAE,EAAE,SAASgmQ,GAAG3jf,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAE,KAAI4jf,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAInrgB,IAAIorgB,GAAG,IAAIprgB,IAAIqrgB,GAAG,GAAGC,GAAG,6PAA6PnigB,MAAM,KAChiB,SAASoigB,GAAG1kf,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAWmkf,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGx+f,OAAOma,EAAE8sI,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBw3W,GAAGz+f,OAAOma,EAAE8sI,WAAY,CACpT,SAAS43W,GAAG3kf,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,GAAG,OAAG,OAAO/D,GAAGA,EAAE4kf,cAAc7gf,GAAS/D,EAAE,CAAC6kf,UAAU5kf,EAAE6kf,aAAajrf,EAAEkrf,iBAAiBthf,EAAEmhf,YAAY7gf,EAAEihf,iBAAiB,CAAC97f,IAAI,OAAO+W,IAAY,QAARA,EAAEg/e,GAAGh/e,KAAa4jf,GAAG5jf,IAAID,IAAEA,EAAE+kf,kBAAkBthf,EAAExD,EAAED,EAAEglf,iBAAiB,OAAO97f,IAAI,IAAI+W,EAAE5e,QAAQ6H,IAAI+W,EAAE5f,KAAK6I,GAAU8W,EAAE,CAErR,SAASilf,GAAGjlf,GAAG,IAAIC,EAAEilf,GAAGllf,EAAEpI,QAAQ,GAAG,OAAOqI,EAAE,CAAC,IAAIpG,EAAEwmf,GAAGpgf,GAAG,GAAG,OAAOpG,EAAE,GAAW,MAARoG,EAAEpG,EAAE3S,MAAY,GAAW,QAAR+Y,EAAEsgf,GAAG1mf,IAA4D,OAA/CmG,EAAE6kf,UAAU5kf,OAAE+jf,GAAGhkf,EAAEksd,UAAS,WAAW43B,GAAGjqf,EAAG,SAAe,GAAG,IAAIoG,GAAGpG,EAAEqlf,UAAUxlf,QAAQ8mf,cAAc2E,aAAmE,YAArDnlf,EAAE6kf,UAAU,IAAIhrf,EAAE3S,IAAI2S,EAAEqlf,UAAUkG,cAAc,KAAa,CAAAplf,EAAE6kf,UAAU,IAAK,CACnT,SAASQ,GAAGrlf,GAAG,GAAG,OAAOA,EAAE6kf,UAAU,OAAM,EAAG,IAAI,IAAI5kf,EAAED,EAAEglf,iBAAiB,EAAE/kf,EAAErf,QAAQ,CAAC,IAAIiZ,EAAEyrf,GAAGtlf,EAAE8kf,aAAa9kf,EAAE+kf,iBAAiB9kf,EAAE,GAAGD,EAAE4kf,aAAa,GAAG,OAAO/qf,EAAiG,OAAe,QAARoG,EAAEg/e,GAAGplf,KAAagqf,GAAG5jf,GAAGD,EAAE6kf,UAAUhrf,GAAE,EAA3H,IAAI4J,EAAE,IAAtB5J,EAAEmG,EAAE4kf,aAAwBt9d,YAAYztB,EAAEvU,KAAKuU,GAAG4kf,GAAGh7e,EAAE5J,EAAEjC,OAAO2tf,cAAc9hf,GAAGg7e,GAAG,KAA0Dx+e,EAAEkY,OAAQ,QAAM,CAAG,UAASqte,GAAGxlf,EAAEC,EAAEpG,GAAGwrf,GAAGrlf,IAAInG,EAAE/T,OAAOma,EAAG,UAASwlf,KAAKxB,IAAG,EAAG,OAAOE,IAAIkB,GAAGlB,MAAMA,GAAG,MAAM,OAAOC,IAAIiB,GAAGjB,MAAMA,GAAG,MAAM,OAAOC,IAAIgB,GAAGhB,MAAMA,GAAG,MAAMC,GAAG3jgB,QAAQ6kgB,IAAIjB,GAAG5jgB,QAAQ6kgB,GAAI,CACpf,SAASE,GAAG1lf,EAAEC,GAAGD,EAAE6kf,YAAY5kf,IAAID,EAAE6kf,UAAU,KAAKZ,KAAKA,IAAG,EAAGr2Z,EAAGozZ,0BAA0BpzZ,EAAGo0Z,wBAAwByD,KAAM,CAC7H,SAASE,GAAG3lf,GAAG,SAASC,EAAEA,GAAG,OAAOylf,GAAGzlf,EAAED,EAAG,IAAG,EAAEkkf,GAAGtjgB,OAAO,CAAC8kgB,GAAGxB,GAAG,GAAGlkf,GAAG,IAAI,IAAInG,EAAE,EAAEA,EAAEqqf,GAAGtjgB,OAAOiZ,IAAI,CAAC,IAAI4J,EAAEygf,GAAGrqf,GAAG4J,EAAEohf,YAAY7kf,IAAIyD,EAAEohf,UAAU,KAAM,CAAC,CAAwF,IAAxF,OAAOV,IAAIuB,GAAGvB,GAAGnkf,GAAG,OAAOokf,IAAIsB,GAAGtB,GAAGpkf,GAAG,OAAOqkf,IAAIqB,GAAGrB,GAAGrkf,GAAGskf,GAAG3jgB,QAAQsf,GAAGskf,GAAG5jgB,QAAQsf,GAAOpG,EAAE,EAAEA,EAAE2qf,GAAG5jgB,OAAOiZ,KAAI4J,EAAE+gf,GAAG3qf,IAAKgrf,YAAY7kf,IAAIyD,EAAEohf,UAAU,MAAM,KAAK,EAAEL,GAAG5jgB,QAAiB,QAARiZ,EAAE2qf,GAAG,IAAYK,WAAYI,GAAGprf,GAAG,OAAOA,EAAEgrf,WAAWL,GAAGrse,OAAQ,KAAIyte,GAAGznf,EAAG0nf,wBAAwB96B,IAAG,EAC5a,SAAS+6B,GAAG9lf,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAEy0P,GAAE55O,EAAE6hf,GAAG70e,WAAW60e,GAAG70e,WAAW,KAAK,IAAI4sO,GAAE,EAAEooQ,GAAG/lf,EAAEC,EAAEpG,EAAE4J,EAA+B,CAAhD,QAA4Bk6O,GAAEz0P,EAAE08f,GAAG70e,WAAWhN,CAAE,CAAC,UAASgsF,GAAG/vF,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAEy0P,GAAE55O,EAAE6hf,GAAG70e,WAAW60e,GAAG70e,WAAW,KAAK,IAAI4sO,GAAE,EAAEooQ,GAAG/lf,EAAEC,EAAEpG,EAAE4J,EAA+B,CAAhD,QAA4Bk6O,GAAEz0P,EAAE08f,GAAG70e,WAAWhN,CAAE,CAAC,CAClO,SAASgif,GAAG/lf,EAAEC,EAAEpG,EAAE4J,GAAG,GAAGsnd,GAAG,CAAC,IAAI7he,EAAEo8f,GAAGtlf,EAAEC,EAAEpG,EAAE4J,GAAG,GAAG,OAAOva,EAAE88f,GAAGhmf,EAAEC,EAAEwD,EAAEzF,GAAGnE,GAAG6qf,GAAG1kf,EAAEyD,QAAQ,GANtF,SAAYzD,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,OAAO+W,GAAG,IAAK,UAAU,OAAOkkf,GAAGQ,GAAGR,GAAGnkf,EAAEC,EAAEpG,EAAE4J,EAAEva,IAAG,EAAG,IAAK,YAAY,OAAOk7f,GAAGO,GAAGP,GAAGpkf,EAAEC,EAAEpG,EAAE4J,EAAEva,IAAG,EAAG,IAAK,YAAY,OAAOm7f,GAAGM,GAAGN,GAAGrkf,EAAEC,EAAEpG,EAAE4J,EAAEva,IAAG,EAAG,IAAK,cAAc,IAAI6a,EAAE7a,EAAE6jJ,UAAkD,OAAxCu3W,GAAGlrgB,IAAI2qB,EAAE4gf,GAAGL,GAAGzqgB,IAAIkqB,IAAI,KAAK/D,EAAEC,EAAEpG,EAAE4J,EAAEva,KAAU,EAAG,IAAK,oBAAoB,OAAO6a,EAAE7a,EAAE6jJ,UAAUw3W,GAAGnrgB,IAAI2qB,EAAE4gf,GAAGJ,GAAG1qgB,IAAIkqB,IAAI,KAAK/D,EAAEC,EAAEpG,EAAE4J,EAAEva,KAAI,EAAG,OAAM,CAAG,CAM3Q+8f,CAAG/8f,EAAE8W,EAAEC,EAAEpG,EAAE4J,GAAGA,EAAEu9C,uBAAuB,GAAG0jc,GAAG1kf,EAAEyD,GAAK,EAAFxD,IAAM,EAAEwkf,GAAGpjgB,QAAQ2e,GAAG,CAAC,KAAK,OAAO9W,GAAG,CAAC,IAAI6a,EAAEk7e,GAAG/1f,GAA0D,GAAvD,OAAO6a,GAAG6/e,GAAG7/e,GAAiB,QAAdA,EAAEuhf,GAAGtlf,EAAEC,EAAEpG,EAAE4J,KAAauif,GAAGhmf,EAAEC,EAAEwD,EAAEzF,GAAGnE,GAAMkK,IAAI7a,EAAE,MAAMA,EAAE6a,CAAE,QAAO7a,GAAGua,EAAEu9C,iBAAkB,MAAKglc,GAAGhmf,EAAEC,EAAEwD,EAAE,KAAK5J,EAAG,CAAC,KAAImE,GAAG,KACpU,SAASsnf,GAAGtlf,EAAEC,EAAEpG,EAAE4J,GAA2B,GAAxBzF,GAAG,KAAwB,QAAXgC,EAAEklf,GAAVllf,EAAE0+e,GAAGj7e,KAAuB,GAAW,QAARxD,EAAEogf,GAAGrgf,IAAYA,EAAE,UAAU,GAAW,MAARnG,EAAEoG,EAAE/Y,KAAW,CAAS,GAAG,QAAX8Y,EAAEugf,GAAGtgf,IAAe,OAAOD,EAAEA,EAAE,IAAK,MAAK,GAAG,IAAInG,EAAE,CAAC,GAAGoG,EAAEi/e,UAAUxlf,QAAQ8mf,cAAc2E,aAAa,OAAO,IAAIllf,EAAE/Y,IAAI+Y,EAAEi/e,UAAUkG,cAAc,KAAKplf,EAAE,IAAK,MAAKC,IAAID,IAAIA,EAAE,MAAW,OAALhC,GAAGgC,EAAS,IAAK,CAC9S,SAASkmf,GAAGlmf,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOyhf,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAI,KAAIgE,GAAG,KAAKC,GAAG,KAAKrwe,GAAG,KAAK,SAASs+E,KAAK,GAAGt+E,GAAG,OAAOA,GAAG,IAAI/V,EAAkByD,EAAhBxD,EAAEmmf,GAAGvsf,EAAEoG,EAAErf,OAASsI,EAAE,UAAUi9f,GAAGA,GAAGhogB,MAAMgogB,GAAG7+c,YAAYvjC,EAAE7a,EAAEtI,OAAO,IAAIof,EAAE,EAAEA,EAAEnG,GAAGoG,EAAED,KAAK9W,EAAE8W,GAAGA,KAAK,IAAIgE,EAAEnK,EAAEmG,EAAE,IAAIyD,EAAE,EAAEA,GAAGO,GAAG/D,EAAEpG,EAAE4J,KAAKva,EAAE6a,EAAEN,GAAGA,KAAK,OAAOsS,GAAG7sB,EAAElE,MAAMgb,EAAE,EAAEyD,EAAE,EAAEA,OAAE,EAAQ,CACzY,SAAS4if,GAAGrmf,GAAG,IAAIC,EAAED,EAAEuiD,QAA+E,MAAvE,aAAaviD,EAAgB,KAAbA,EAAEA,EAAEgxC,WAAgB,KAAK/wC,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAE,UAASsmf,KAAK,OAAM,CAAG,UAASC,KAAK,OAAM,CAAG,CAC7K,SAASC,GAAGxmf,GAAG,SAASC,EAAEA,EAAEwD,EAAEva,EAAE6a,EAAEC,GAA6G,IAAI,IAAInK,KAAlH5Z,KAAKwmgB,WAAWxmf,EAAEhgB,KAAKymgB,YAAYx9f,EAAEjJ,KAAKqF,KAAKme,EAAExjB,KAAK2kgB,YAAY7gf,EAAE9jB,KAAK2X,OAAOoM,EAAE/jB,KAAKw/D,cAAc,KAAkBz/C,EAAEA,EAAEF,eAAejG,KAAKoG,EAAED,EAAEnG,GAAG5Z,KAAK4Z,GAAGoG,EAAEA,EAAE8D,GAAGA,EAAElK,IAAgI,OAA5H5Z,KAAKijE,oBAAoB,MAAMn/C,EAAEo/C,iBAAiBp/C,EAAEo/C,kBAAiB,IAAKp/C,EAAE4if,aAAaL,GAAGC,GAAGtmgB,KAAKo/D,qBAAqBknc,GAAUtmgB,IAAK,CAC/E,OAD+E29P,EAAE39O,EAAEhY,UAAU,CAACm0D,eAAe,WAAWn8D,KAAKkjE,kBAAiB,EAAG,IAAInjD,EAAE/f,KAAK2kgB,YAAY5kf,IAAIA,EAAEo8C,eAAep8C,EAAEo8C,iBAAiB,mBAAmBp8C,EAAE2mf,cAC7e3mf,EAAE2mf,aAAY,GAAI1mgB,KAAKijE,mBAAmBojc,GAAI,EAACtlc,gBAAgB,WAAW,IAAIhhD,EAAE/f,KAAK2kgB,YAAY5kf,IAAIA,EAAEghD,gBAAgBhhD,EAAEghD,kBAAkB,mBAAmBhhD,EAAEo/J,eAAep/J,EAAEo/J,cAAa,GAAIn/K,KAAKo/D,qBAAqBinc,GAAI,EAACM,QAAQ,WAAY,EAACC,aAAaP,KAAYrmf,CAAE,CAClR,IAAoL6mf,GAAGC,GAAGC,GAAtL9wZ,GAAG,CAAC+wZ,WAAW,EAAEC,QAAQ,EAAEp+S,WAAW,EAAEvlJ,UAAU,SAASvjD,GAAG,OAAOA,EAAEujD,WAAWxgE,KAAKygE,KAAM,EAACL,iBAAiB,EAAEG,UAAU,GAAGqJ,GAAG65b,GAAGtwZ,IAAIixZ,GAAGvpQ,EAAE,CAAC,EAAE1nJ,GAAG,CAACj5D,KAAK,EAAEmqd,OAAO,IAAIC,GAAGb,GAAGW,IAAaG,GAAG1pQ,EAAE,CAAC,EAAEupQ,GAAG,CAAC3hJ,QAAQ,EAAE+hJ,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEhkc,MAAM,EAAEC,MAAM,EAAEhvC,QAAQ,EAAEy9H,SAAS,EAAE19H,OAAO,EAAED,QAAQ,EAAEkze,iBAAiBC,GAAGx8e,OAAO,EAAE2yN,QAAQ,EAAE/8K,cAAc,SAAS/gD,GAAG,YAAO,IAASA,EAAE+gD,cAAc/gD,EAAE4nf,cAAc5nf,EAAE2+e,WAAW3+e,EAAE6nf,UAAU7nf,EAAE4nf,YAAY5nf,EAAE+gD,aAAc,EAAC+mc,UAAU,SAAS9nf,GAAG,MAAG,cAC3eA,EAASA,EAAE8nf,WAAU9nf,IAAIgnf,KAAKA,IAAI,cAAchnf,EAAE1a,MAAMwhgB,GAAG9mf,EAAEwlW,QAAQwhJ,GAAGxhJ,QAAQuhJ,GAAG/mf,EAAEunf,QAAQP,GAAGO,SAASR,GAAGD,GAAG,EAAEE,GAAGhnf,GAAU8mf,GAAG,EAACiB,UAAU,SAAS/nf,GAAG,MAAM,cAAcA,EAAEA,EAAE+nf,UAAUhB,EAAG,IAAGiB,GAAGxB,GAAGc,IAAiCW,GAAGzB,GAA7B5oQ,EAAE,CAAC,EAAE0pQ,GAAG,CAACY,aAAa,KAA4CC,GAAG3B,GAA9B5oQ,EAAE,CAAC,EAAEupQ,GAAG,CAACpmc,cAAc,KAA0Eqnc,GAAG5B,GAA5D5oQ,EAAE,CAAC,EAAE1nJ,GAAG,CAACmyZ,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAG5qQ,EAAE,CAAC,EAAE1nJ,GAAG,CAAC98B,cAAc,SAASp5D,GAAG,MAAM,kBAAkBA,EAAEA,EAAEo5D,cAAcl/E,OAAOk/E,aAAc,IAAGqvb,GAAGjC,GAAGgC,IAAyBE,GAAGlC,GAArB5oQ,EAAE,CAAC,EAAE1nJ,GAAG,CAAC37G,KAAK,KAAcougB,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAG9pf,GAAG,IAAIC,EAAEhgB,KAAK2kgB,YAAY,OAAO3kf,EAAEynf,iBAAiBznf,EAAEynf,iBAAiB1nf,MAAIA,EAAEypf,GAAGzpf,OAAMC,EAAED,EAAM,UAAS2nf,KAAK,OAAOmC,EAAG,CACjS,IAAIC,GAAGnsQ,EAAE,CAAC,EAAEupQ,GAAG,CAAC5kgB,IAAI,SAASyd,GAAG,GAAGA,EAAEzd,IAAI,CAAC,IAAI0d,EAAE0of,GAAG3of,EAAEzd,MAAMyd,EAAEzd,IAAI,GAAG,iBAAiB0d,EAAE,OAAOA,CAAE,OAAM,aAAaD,EAAE1a,KAAc,MAAR0a,EAAEqmf,GAAGrmf,IAAU,QAAQtW,OAAOC,aAAaqW,GAAI,YAAYA,EAAE1a,MAAM,UAAU0a,EAAE1a,KAAKkkgB,GAAGxpf,EAAEuiD,UAAU,eAAe,EAAG,EAACjoE,KAAK,EAAEs4B,SAAS,EAAE8B,QAAQ,EAAEy9H,SAAS,EAAE19H,OAAO,EAAED,QAAQ,EAAEgmG,OAAO,EAAEvkE,OAAO,EAAEyxc,iBAAiBC,GAAG32c,SAAS,SAAShxC,GAAG,MAAM,aAAaA,EAAE1a,KAAK+ggB,GAAGrmf,GAAG,CAAE,EAACuiD,QAAQ,SAASviD,GAAG,MAAM,YAAYA,EAAE1a,MAAM,UAAU0a,EAAE1a,KAAK0a,EAAEuiD,QAAQ,CAAE,EAACD,MAAM,SAAStiD,GAAG,MAAM,aAC7eA,EAAE1a,KAAK+ggB,GAAGrmf,GAAG,YAAYA,EAAE1a,MAAM,UAAU0a,EAAE1a,KAAK0a,EAAEuiD,QAAQ,CAAE,IAAGync,GAAGxD,GAAGuD,IAAiIE,GAAGzD,GAA7H5oQ,EAAE,CAAC,EAAE0pQ,GAAG,CAACv6W,UAAU,EAAEn8H,MAAM,EAAEnE,OAAO,EAAEy9e,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAE1kX,YAAY,EAAE2kX,UAAU,KAAmIC,GAAGhE,GAArH5oQ,EAAE,CAAC,EAAEupQ,GAAG,CAACxjc,QAAQ,EAAE8mc,cAAc,EAAE7mc,eAAe,EAAEnvC,OAAO,EAAED,QAAQ,EAAEE,QAAQ,EAAEy9H,SAAS,EAAEu1W,iBAAiBC,MAA0E+C,GAAGlE,GAA3D5oQ,EAAE,CAAC,EAAE1nJ,GAAG,CAAC9gD,aAAa,EAAEkzc,YAAY,EAAEC,cAAc,KAAcoC,GAAG/sQ,EAAE,CAAC,EAAE0pQ,GAAG,CAACz9W,OAAO,SAAS7pI,GAAG,MAAM,WAAWA,EAAEA,EAAE6pI,OAAO,gBAAgB7pI,GAAGA,EAAE4qf,YAAY,CAAE,EACpf9gX,OAAO,SAAS9pI,GAAG,MAAM,WAAWA,EAAEA,EAAE8pI,OAAO,gBAAgB9pI,GAAGA,EAAE6qf,YAAY,eAAe7qf,GAAGA,EAAE8qf,WAAW,CAAE,EAACn7W,OAAO,EAAED,UAAU,IAAIq7W,GAAGvE,GAAGmE,IAAIK,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGp6Z,GAAI,qBAAqB32G,OAAOgzG,GAAG,KAAK2D,GAAI,iBAAiB1uG,WAAW+qG,GAAG/qG,SAAS+ogB,cAAc,IAAIp9Z,GAAG+C,GAAI,cAAc32G,SAASgzG,GAAGqB,GAAGsC,KAAMo6Z,IAAI/9Z,IAAI,EAAEA,IAAI,IAAIA,IAAI6B,GAAGrlG,OAAOC,aAAa,IAAIwhgB,IAAG,EAC1W,SAASC,GAAGprf,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAIgrf,GAAG3pgB,QAAQ4e,EAAEsiD,SAAS,IAAK,UAAU,OAAO,MAAMtiD,EAAEsiD,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAI,UAASguC,GAAGvwF,GAAc,MAAM,kBAAjBA,EAAEA,EAAEonf,SAAkC,SAASpnf,EAAEA,EAAEzlB,KAAK,IAAK,KAAI8wgB,IAAG,EAE9Q,IAAIC,GAAG,CAAC1if,OAAM,EAAGsL,MAAK,EAAGI,UAAS,EAAG,kBAAiB,EAAGP,OAAM,EAAGI,OAAM,EAAGF,QAAO,EAAGD,UAAS,EAAGsmG,OAAM,EAAGvwH,QAAO,EAAG+pB,KAAI,EAAGltB,MAAK,EAAGytB,MAAK,EAAGvxB,KAAI,EAAGsxB,MAAK,GAAI,SAASm3e,GAAGvrf,GAAG,IAAIC,EAAED,GAAGA,EAAE65B,UAAU75B,EAAE65B,SAASplC,cAAc,MAAM,UAAUwL,IAAIqrf,GAAGtrf,EAAE1a,MAAM,aAAa2a,CAAQ,UAASs0F,GAAGv0F,EAAEC,EAAEpG,EAAE4J,GAAG27e,GAAG37e,GAAsB,GAAnBxD,EAAEurf,GAAGvrf,EAAE,aAAgBrf,SAASiZ,EAAE,IAAI8yD,GAAG,WAAW,SAAS,KAAK9yD,EAAE4J,GAAGzD,EAAE3f,KAAK,CAACW,MAAM6Y,EAAE3Z,UAAU+f,IAAK,KAAIwrf,GAAG,KAAKC,GAAG,KAAK,SAAS9ze,GAAG5X,GAAGm2F,GAAGn2F,EAAE,EAAG,UAASo3F,GAAGp3F,GAAe,GAAGm8e,EAATwP,GAAG3rf,IAAY,OAAOA,CAAE,CACre,SAAS4rf,GAAG5rf,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,CAAE,KAAI4rf,IAAG,EAAG,GAAGh7Z,EAAG,CAAC,IAAIi7Z,GAAG,GAAGj7Z,EAAG,CAAC,IAAIk7Z,GAAG,YAAY5pgB,SAAS,IAAI4pgB,GAAG,CAAC,IAAIC,GAAG7pgB,SAASmG,cAAc,OAAO0jgB,GAAGzjgB,aAAa,UAAU,WAAWwjgB,GAAG,oBAAoBC,GAAGC,OAAQ,CAAAH,GAAGC,EAAG,MAAKD,IAAG,EAAGD,GAAGC,MAAM3pgB,SAAS+ogB,cAAc,EAAE/ogB,SAAS+ogB,aAAc,UAASgB,KAAKT,KAAKA,GAAG3wJ,YAAY,mBAAmBqxJ,IAAIT,GAAGD,GAAG,KAAM,UAASU,GAAGnsf,GAAG,GAAG,UAAUA,EAAEo1C,cAAcgiD,GAAGs0Z,IAAI,CAAC,IAAIzrf,EAAE,GAAGs0F,GAAGt0F,EAAEyrf,GAAG1rf,EAAE0+e,GAAG1+e,IAAIy/e,GAAG7ne,GAAG3X,EAAG,CAAC,CAChc,SAASmsf,GAAGpsf,EAAEC,EAAEpG,GAAG,YAAYmG,GAAGksf,KAAUR,GAAG7xf,GAAR4xf,GAAGxrf,GAAU4/J,YAAY,mBAAmBssV,KAAK,aAAansf,GAAGksf,IAAK,UAASG,GAAGrsf,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOo3F,GAAGs0Z,GAAI,UAASY,GAAGtsf,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOo3F,GAAGn3F,EAAG,UAASssf,GAAGvsf,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOo3F,GAAGn3F,EAAG,CAAgE,IAAIusf,GAAG,oBAAoBvugB,OAAOixE,GAAGjxE,OAAOixE,GAA5G,SAAYlvD,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAE,EACvW,SAASoxe,GAAGrxe,EAAEC,GAAG,GAAGusf,GAAGxsf,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIpG,EAAE5b,OAAOgB,KAAK+gB,GAAGyD,EAAExlB,OAAOgB,KAAKghB,GAAG,GAAGpG,EAAEjZ,SAAS6iB,EAAE7iB,OAAO,OAAM,EAAG,IAAI6iB,EAAE,EAAEA,EAAE5J,EAAEjZ,OAAO6iB,IAAI,CAAC,IAAIva,EAAE2Q,EAAE4J,GAAG,IAAIwtF,EAAGvyG,KAAKuhB,EAAE/W,KAAKsjgB,GAAGxsf,EAAE9W,GAAG+W,EAAE/W,IAAI,OAAM,CAAG,QAAM,CAAG,UAASujgB,GAAGzsf,GAAG,KAAKA,GAAGA,EAAEvY,YAAYuY,EAAEA,EAAEvY,WAAW,OAAOuY,CAAE,CACvU,SAAS0sf,GAAG1sf,EAAEC,GAAG,IAAwBwD,EAApB5J,EAAE4yf,GAAGzsf,GAAO,IAAJA,EAAE,EAAYnG,GAAG,CAAC,GAAG,IAAIA,EAAEm8B,SAAS,CAA0B,GAAzBvyB,EAAEzD,EAAEnG,EAAEytC,YAAY1mD,OAAUof,GAAGC,GAAGwD,GAAGxD,EAAE,MAAM,CAACrV,KAAKiP,EAAE3M,OAAO+S,EAAED,GAAGA,EAAEyD,CAAE,CAAAzD,EAAE,CAAC,KAAKnG,GAAG,CAAC,GAAGA,EAAEvS,YAAY,CAACuS,EAAEA,EAAEvS,YAAY,MAAM0Y,CAAE,CAAAnG,EAAEA,EAAExQ,UAAW,CAAAwQ,OAAE,CAAO,CAAAA,EAAE4yf,GAAG5yf,EAAG,CAAC,UAAS8yf,GAAG3sf,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAEg2B,YAAY/1B,GAAG,IAAIA,EAAE+1B,SAAS22d,GAAG3sf,EAAEC,EAAE5W,YAAY,aAAa2W,EAAEA,EAAEkgD,SAASjgD,KAAGD,EAAEmgD,4BAAwD,GAA7BngD,EAAEmgD,wBAAwBlgD,KAAa,CAC/Z,SAAS2sf,KAAK,IAAI,IAAI5sf,EAAE9lB,OAAO+lB,EAAEm8e,IAAKn8e,aAAaD,EAAE6sf,mBAAmB,CAAC,IAAI,IAAIhzf,EAAE,kBAAkBoG,EAAE6sf,cAAcl6e,SAASkpE,IAAmB,CAAd,MAAMr4E,GAAG5J,GAAE,CAAG,KAAGA,EAAyB,MAAMoG,EAAEm8e,GAA/Bp8e,EAAEC,EAAE6sf,eAAgC3qgB,SAAU,QAAO8d,CAAE,UAAS8sf,GAAG/sf,GAAG,IAAIC,EAAED,GAAGA,EAAE65B,UAAU75B,EAAE65B,SAASplC,cAAc,OAAOwL,IAAI,UAAUA,IAAI,SAASD,EAAE1a,MAAM,WAAW0a,EAAE1a,MAAM,QAAQ0a,EAAE1a,MAAM,QAAQ0a,EAAE1a,MAAM,aAAa0a,EAAE1a,OAAO,aAAa2a,GAAG,SAASD,EAAEgtf,gBAAiB,CACza,SAASC,GAAGjtf,GAAG,IAAIC,EAAE2sf,KAAK/yf,EAAEmG,EAAEktf,YAAYzpf,EAAEzD,EAAEmtf,eAAe,GAAGltf,IAAIpG,GAAGA,GAAGA,EAAEsZ,eAAew5e,GAAG9yf,EAAEsZ,cAAcg1B,gBAAgBtuC,GAAG,CAAC,GAAG,OAAO4J,GAAGspf,GAAGlzf,GAAG,GAAGoG,EAAEwD,EAAE+Y,WAAc,KAARxc,EAAEyD,EAAEtZ,OAAiB6V,EAAEC,GAAG,mBAAmBpG,EAAEA,EAAE4xO,eAAexrO,EAAEpG,EAAE6xO,aAAaliP,KAAKsZ,IAAI9C,EAAEnG,EAAE1b,MAAMyC,aAAa,IAAGof,GAAGC,EAAEpG,EAAEsZ,eAAehxB,WAAW8d,EAAEkoB,aAAajuC,QAASmuD,aAAa,CAACroC,EAAEA,EAAEqoC,eAAe,IAAIn/C,EAAE2Q,EAAEytC,YAAY1mD,OAAOmjB,EAAEva,KAAKsZ,IAAIW,EAAE+Y,MAAMtzB,GAAGua,OAAE,IAASA,EAAEtZ,IAAI4Z,EAAEva,KAAKsZ,IAAIW,EAAEtZ,IAAIjB,IAAI8W,EAAE0lC,QAAQ3hC,EAAEN,IAAIva,EAAEua,EAAEA,EAAEM,EAAEA,EAAE7a,GAAGA,EAAEwjgB,GAAG7yf,EAAEkK,GAAG,IAAIC,EAAE0of,GAAG7yf,EACvf4J,GAAGva,GAAG8a,IAAI,IAAIhE,EAAEotf,YAAYptf,EAAEqtf,aAAankgB,EAAE0B,MAAMoV,EAAEstf,eAAepkgB,EAAEgE,QAAQ8S,EAAEutf,YAAYvpf,EAAEpZ,MAAMoV,EAAEwtf,cAAcxpf,EAAE9W,WAAU+S,EAAEA,EAAE+xc,eAAgBy7C,SAASvkgB,EAAE0B,KAAK1B,EAAEgE,QAAQ8S,EAAEuqI,kBAAkBxmI,EAAEN,GAAGzD,EAAE0tf,SAASztf,GAAGD,EAAE0lC,OAAO1hC,EAAEpZ,KAAKoZ,EAAE9W,UAAU+S,EAAE0tf,OAAO3pf,EAAEpZ,KAAKoZ,EAAE9W,QAAQ8S,EAAE0tf,SAASztf,IAAK,CAAK,IAALA,EAAE,GAAOD,EAAEnG,EAAEmG,EAAEA,EAAE3W,YAAY,IAAI2W,EAAEg2B,UAAU/1B,EAAE5f,KAAK,CAACoM,QAAQuT,EAAE6kB,KAAK7kB,EAAEouL,WAAW1pK,IAAI1kB,EAAEquL,YAAmD,IAAvC,oBAAoBx0L,EAAEyM,OAAOzM,EAAEyM,QAAYzM,EAAE,EAAEA,EAAEoG,EAAErf,OAAOiZ,KAAImG,EAAEC,EAAEpG,IAAKpN,QAAQ2hM,WAAWpuL,EAAE6kB,KAAK7kB,EAAEvT,QAAQ4hM,UAAUruL,EAAE0kB,GAAI,CAAC,CAC1f,IAAIkpe,GAAG/8Z,GAAI,iBAAiB1uG,UAAU,IAAIA,SAAS+ogB,aAAa2C,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGjuf,EAAEC,EAAEpG,GAAG,IAAI4J,EAAE5J,EAAE3f,SAAS2f,EAAEA,EAAE1X,SAAS,IAAI0X,EAAEm8B,SAASn8B,EAAEA,EAAEsZ,cAAc66e,IAAI,MAAMH,IAAIA,KAAKzR,EAAG34e,KAAU,mBAALA,EAAEoqf,KAAyBd,GAAGtpf,GAAGA,EAAE,CAAC+Y,MAAM/Y,EAAEgoO,eAAethP,IAAIsZ,EAAEioO,cAAuFjoO,EAAE,CAAC4pf,YAA3E5pf,GAAGA,EAAE0P,eAAe1P,EAAE0P,cAAcgV,aAAajuC,QAAQmuD,gBAA+Bgld,WAAWC,aAAa7pf,EAAE6pf,aAAaC,UAAU9pf,EAAE8pf,UAAUC,YAAY/pf,EAAE+pf,aAAcO,IAAI1c,GAAG0c,GAAGtqf,KAAKsqf,GAAGtqf,EAAsB,GAApBA,EAAE+nf,GAAGsC,GAAG,aAAgBltgB,SAASqf,EAAE,IAAI0sD,GAAG,WAAW,SAAS,KAAK1sD,EAAEpG,GAAGmG,EAAE3f,KAAK,CAACW,MAAMif,EAAE/f,UAAUujB,IAAIxD,EAAErI,OAAOi2f,KAAM,CACvf,SAASK,GAAGluf,EAAEC,GAAG,IAAIpG,EAAE,CAAC,EAAiF,OAA/EA,EAAEmG,EAAEvL,eAAewL,EAAExL,cAAcoF,EAAE,SAASmG,GAAG,SAASC,EAAEpG,EAAE,MAAMmG,GAAG,MAAMC,EAASpG,CAAE,KAAIs0f,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAG1uf,GAAG,GAAGwuf,GAAGxuf,GAAG,OAAOwuf,GAAGxuf,GAAG,IAAImuf,GAAGnuf,GAAG,OAAOA,EAAE,IAAYnG,EAARoG,EAAEkuf,GAAGnuf,GAAK,IAAInG,KAAKoG,EAAE,GAAGA,EAAEH,eAAejG,IAAIA,KAAK40f,GAAG,OAAOD,GAAGxuf,GAAGC,EAAEpG,GAAG,OAAOmG,CAAE,CAAhY6wF,IAAK49Z,GAAGtsgB,SAASmG,cAAc,OAAOyuB,MAAM,mBAAmB78B,gBAAgBi0gB,GAAGC,aAAa5iX,iBAAiB2iX,GAAGE,mBAAmB7iX,iBAAiB2iX,GAAGG,eAAe9iX,WAAW,oBAAoBtxJ,eAAei0gB,GAAGI,cAAcx9e,YAAwJ,IAAI49e,GAAGD,GAAG,gBAAgBjia,GAAGiia,GAAG,sBAAsBE,GAAGF,GAAG,kBAAkBG,GAAGH,GAAG,iBAAiBI,GAAG,IAAI31gB,IAAI41gB,GAAG,smBAAsmBzsgB,MAAM,KAC/lC,SAASitG,GAAGvvF,EAAEC,GAAG6uf,GAAG11gB,IAAI4mB,EAAEC,GAAGqvF,EAAGrvF,EAAE,CAACD,GAAI,KAAI,IAAIgvf,GAAG,EAAEA,GAAGD,GAAGnugB,OAAOougB,KAAK,CAAC,IAAIC,GAAGF,GAAGC,IAA2Dz/Z,GAApD0/Z,GAAGx6f,cAAuD,MAAtCw6f,GAAG,GAAGtoe,cAAcsoe,GAAGjqgB,MAAM,IAAkB,CAAAuqG,GAAGo/Z,GAAG,kBAAkBp/Z,GAAG9C,GAAG,wBAAwB8C,GAAGq/Z,GAAG,oBAAoBr/Z,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGs/Z,GAAG,mBAAmBx+Z,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBf,EAAG,WAAW,oEAAoEhtG,MAAM,MAAMgtG,EAAG,WAAW,uFAAuFhtG,MAAM,MAAMgtG,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DhtG,MAAM,MAAMgtG,EAAG,qBAAqB,6DAA6DhtG,MAAM,MAC/fgtG,EAAG,sBAAsB,8DAA8DhtG,MAAM,MAAM,IAAI4sgB,GAAG,6NAA6N5sgB,MAAM,KAAK6sgB,GAAG,IAAInwgB,IAAI,0CAA0CsD,MAAM,KAAK4N,OAAOg/f,KACzZ,SAASE,GAAGpvf,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAE1a,MAAM,gBAAgB0a,EAAEy/C,cAAc5lD,EAlDjE,SAAYmG,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,EAAE9nB,EAAE+H,GAA4B,GAAzBm8f,GAAGpof,MAAM/X,KAAK8X,WAAcgof,GAAG,CAAC,IAAGA,GAAgC,MAAMvlgB,MAAMsD,EAAE,MAA1C,IAAImmB,EAAE+7e,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGj8e,EAAG,CAAC,CAkDrEorf,CAAG5rf,EAAExD,OAAE,EAAOD,GAAGA,EAAEy/C,cAAc,IAAK,CACzG,SAAS02C,GAAGn2F,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIpG,EAAE,EAAEA,EAAEmG,EAAEpf,OAAOiZ,IAAI,CAAC,IAAI4J,EAAEzD,EAAEnG,GAAG3Q,EAAEua,EAAEziB,MAAMyiB,EAAEA,EAAEvjB,UAAU8f,EAAE,CAAC,IAAI+D,OAAE,EAAO,GAAG9D,EAAE,IAAI,IAAI+D,EAAEP,EAAE7iB,OAAO,EAAE,GAAGojB,EAAEA,IAAI,CAAC,IAAI9nB,EAAEunB,EAAEO,GAAG/f,EAAE/H,EAAE8sC,SAAS/kB,EAAE/nB,EAAEujE,cAA2B,GAAbvjE,EAAEA,EAAEuE,SAAYwD,IAAI8f,GAAG7a,EAAEm2D,uBAAuB,MAAMr/C,EAAEovf,GAAGlmgB,EAAEhN,EAAE+nB,GAAGF,EAAE9f,CAAE,MAAK,IAAI+f,EAAE,EAAEA,EAAEP,EAAE7iB,OAAOojB,IAAI,CAAoD,GAA5C/f,GAAP/H,EAAEunB,EAAEO,IAAOglB,SAAS/kB,EAAE/nB,EAAEujE,cAAcvjE,EAAEA,EAAEuE,SAAYwD,IAAI8f,GAAG7a,EAAEm2D,uBAAuB,MAAMr/C,EAAEovf,GAAGlmgB,EAAEhN,EAAE+nB,GAAGF,EAAE9f,CAAE,CAAC,CAAC,IAAGg8f,GAAG,MAAMjgf,EAAEkgf,GAAGD,IAAG,EAAGC,GAAG,KAAKlgf,CAAG,CAC7a,SAASsvf,GAAEtvf,EAAEC,GAAG,IAAIpG,EAAEoG,EAAE6tL,SAAI,IAASj0L,IAAIA,EAAEoG,EAAE6tL,IAAI,IAAI9uM,KAAK,IAAIykB,EAAEzD,EAAE,WAAWnG,EAAEjgB,IAAI6pB,KAAK8rf,GAAGtvf,EAAED,EAAE,GAAE,GAAInG,EAAEm0B,IAAIvqB,GAAI,UAAS+rf,GAAGxvf,EAAEC,EAAEpG,GAAG,IAAI4J,EAAE,EAAExD,IAAIwD,GAAG,GAAG8rf,GAAG11f,EAAEmG,EAAEyD,EAAExD,EAAG,KAAIwvf,GAAG,kBAAkBjmgB,KAAKqZ,SAAStlB,SAAS,IAAIyH,MAAM,GAAG,SAAS0qgB,GAAG1vf,GAAG,IAAIA,EAAEyvf,IAAI,CAACzvf,EAAEyvf,KAAI,EAAGpha,EAAG1tG,SAAQ,SAASsf,GAAG,oBAAoBA,IAAIkvf,GAAGv1gB,IAAIqmB,IAAIuvf,GAAGvvf,GAAE,EAAGD,GAAGwvf,GAAGvvf,GAAE,EAAGD,GAAI,IAAE,IAAIC,EAAE,IAAID,EAAEg2B,SAASh2B,EAAEA,EAAEmT,cAAc,OAAOlT,GAAGA,EAAEwvf,MAAMxvf,EAAEwvf,KAAI,EAAGD,GAAG,mBAAkB,EAAGvvf,GAAI,CAAC,CAClb,SAASsvf,GAAGvvf,EAAEC,EAAEpG,EAAE4J,GAAG,OAAOyif,GAAGjmf,IAAI,KAAK,EAAE,IAAI/W,EAAE48f,GAAG,MAAM,KAAK,EAAE58f,EAAE6mG,GAAG,MAAM,QAAQ7mG,EAAE68f,GAAGlsf,EAAE3Q,EAAEnM,KAAK,KAAKkjB,EAAEpG,EAAEmG,GAAG9W,OAAE,GAAQy2f,IAAI,eAAe1/e,GAAG,cAAcA,GAAG,UAAUA,IAAI/W,GAAE,GAAIua,OAAE,IAASva,EAAE8W,EAAExe,iBAAiBye,EAAEpG,EAAE,CAAC81f,SAAQ,EAAGluc,QAAQv4D,IAAI8W,EAAExe,iBAAiBye,EAAEpG,GAAE,QAAI,IAAS3Q,EAAE8W,EAAExe,iBAAiBye,EAAEpG,EAAE,CAAC4nD,QAAQv4D,IAAI8W,EAAExe,iBAAiBye,EAAEpG,GAAE,EAAI,CACnV,SAASmsf,GAAGhmf,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,IAAI6a,EAAEN,EAAE,GAAG,KAAO,EAAFxD,IAAM,KAAO,EAAFA,IAAM,OAAOwD,EAAEzD,EAAE,OAAO,CAAC,GAAG,OAAOyD,EAAE,OAAO,IAAIO,EAAEP,EAAEvc,IAAI,GAAG,IAAI8c,GAAG,IAAIA,EAAE,CAAC,IAAI9nB,EAAEunB,EAAEy7e,UAAUkG,cAAc,GAAGlpgB,IAAIgN,GAAG,IAAIhN,EAAE85C,UAAU95C,EAAEmN,aAAaH,EAAE,MAAM,GAAG,IAAI8a,EAAE,IAAIA,EAAEP,EAAExY,OAAO,OAAO+Y,GAAG,CAAC,IAAI/f,EAAE+f,EAAE9c,IAAI,IAAG,IAAIjD,GAAG,IAAIA,MAAKA,EAAE+f,EAAEk7e,UAAUkG,iBAAkBl8f,GAAG,IAAIjF,EAAE+xC,UAAU/xC,EAAEoF,aAAaH,GAAE,OAAO8a,EAAEA,EAAE/Y,MAAO,MAAK,OAAO/O,GAAG,CAAS,GAAG,QAAX8nB,EAAEkhf,GAAGhpgB,IAAe,OAAe,GAAG,KAAX+H,EAAE+f,EAAE9c,MAAc,IAAIjD,EAAE,CAACwf,EAAEM,EAAEC,EAAE,SAAShE,CAAE,CAAA9jB,EAAEA,EAAEmN,UAAW,CAAC,CAAAoa,EAAEA,EAAExY,MAAO,CAAAw0f,IAAG,WAAW,IAAIh8e,EAAEM,EAAE7a,EAAEw1f,GAAG7kf,GAAGmK,EAAE,GACpfhE,EAAE,CAAC,IAAI9jB,EAAE4ygB,GAAGj1gB,IAAImmB,GAAG,QAAG,IAAS9jB,EAAE,CAAC,IAAI+H,EAAE0oE,GAAGzoD,EAAElE,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAIqmf,GAAGxsf,GAAG,MAAMmG,EAAE,IAAK,UAAU,IAAK,QAAQ/b,EAAE+lgB,GAAG,MAAM,IAAK,UAAU9lf,EAAE,QAAQjgB,EAAEkkgB,GAAG,MAAM,IAAK,WAAWjkf,EAAE,OAAOjgB,EAAEkkgB,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYlkgB,EAAEkkgB,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAItuf,EAAEsR,OAAO,MAAMnL,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc/b,EAAE+jgB,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO/jgB,EAC1iBgkgB,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAahkgB,EAAEumgB,GAAG,MAAM,KAAKmE,GAAG,KAAKlia,GAAG,KAAKmia,GAAG3qgB,EAAEmkgB,GAAG,MAAM,KAAKyG,GAAG5qgB,EAAEymgB,GAAG,MAAM,IAAK,SAASzmgB,EAAEojgB,GAAG,MAAM,IAAK,QAAQpjgB,EAAE8mgB,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ9mgB,EAAEwkgB,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYxkgB,EAAEgmgB,GAAG,IAAI7lf,EAAE,KAAO,EAAFnE,GAAK2vf,GAAGxrf,GAAG,WAAWpE,EAAEhS,EAAEoW,EAAE,OAAOloB,EAAEA,EAAE,UAAU,KAAKA,EAAEkoB,EAAE,GAAG,IAAI,IAAQvI,EAAJmmG,EAAEv+F,EAAI,OAC/eu+F,GAAG,CAAK,IAAI0f,GAAR7lH,EAAEmmG,GAAUk9Y,UAAsF,GAA5E,IAAIrjf,EAAE3U,KAAK,OAAOw6H,IAAI7lH,EAAE6lH,EAAE,OAAO1zH,IAAc,OAAV0zH,EAAEg+X,GAAG19Y,EAAEh0G,KAAYoW,EAAE/jB,KAAKwvgB,GAAG7tZ,EAAE0f,EAAE7lH,MAAS+zf,EAAE,MAAM5tZ,EAAEA,EAAE/2G,MAAO,GAAEmZ,EAAExjB,SAAS1E,EAAE,IAAI+H,EAAE/H,EAAEgoB,EAAE,KAAKrK,EAAE3Q,GAAG8a,EAAE3jB,KAAK,CAACW,MAAM9E,EAAEgE,UAAUkkB,IAAK,CAAC,IAAG,KAAO,EAAFnE,GAAK,CAA4E,GAAnChc,EAAE,aAAa+b,GAAG,eAAeA,KAAtE9jB,EAAE,cAAc8jB,GAAG,gBAAgBA,IAA2CnG,IAAI4kf,MAAKv6e,EAAErK,EAAEknD,eAAelnD,EAAE+tf,eAAe1C,GAAGhhf,KAAIA,EAAE4rf,OAAgB7rgB,GAAG/H,KAAGA,EAAEgN,EAAEhP,SAASgP,EAAEA,GAAGhN,EAAEgN,EAAEiqB,eAAej3B,EAAEisC,aAAajsC,EAAE6zgB,aAAa71gB,OAAU+J,GAAqCA,EAAEwf,EAAiB,QAAfS,GAAnCA,EAAErK,EAAEknD,eAAelnD,EAAEguf,WAAkB3C,GAAGhhf,GAAG,QAC9dA,KAAR0rf,EAAEvP,GAAGn8e,KAAU,IAAIA,EAAEhd,KAAK,IAAIgd,EAAEhd,OAAKgd,EAAE,QAAUjgB,EAAE,KAAKigB,EAAET,GAAKxf,IAAIigB,GAAE,CAAgU,GAA/TE,EAAE4jf,GAAGtmY,EAAE,eAAe1zH,EAAE,eAAeg0G,EAAE,QAAW,eAAehiG,GAAG,gBAAgBA,IAAEoE,EAAE6lf,GAAGvoY,EAAE,iBAAiB1zH,EAAE,iBAAiBg0G,EAAE,WAAU4tZ,EAAE,MAAM3rgB,EAAE/H,EAAEyvgB,GAAG1ngB,GAAG4X,EAAE,MAAMqI,EAAEhoB,EAAEyvgB,GAAGznf,IAAGhoB,EAAE,IAAIkoB,EAAEs9G,EAAE1f,EAAE,QAAQ/9G,EAAE4V,EAAE3Q,IAAK0O,OAAOg4f,EAAE1zgB,EAAE6kE,cAAcllD,EAAE6lH,EAAE,KAAKwjY,GAAGh8f,KAAKua,KAAIW,EAAE,IAAIA,EAAEpW,EAAEg0G,EAAE,QAAQ99F,EAAErK,EAAE3Q,IAAK0O,OAAOiE,EAAEuI,EAAE28C,cAAc6uc,EAAEluY,EAAEt9G,GAAGwrf,EAAEluY,EAAKz9H,GAAGigB,EAAEjE,EAAE,CAAa,IAARjS,EAAEkW,EAAE89F,EAAE,EAAMnmG,EAAhBuI,EAAEngB,EAAkB4X,EAAEA,EAAEm0f,GAAGn0f,GAAGmmG,IAAQ,IAAJnmG,EAAE,EAAM6lH,EAAE1zH,EAAE0zH,EAAEA,EAAEsuY,GAAGtuY,GAAG7lH,IAAI,KAAK,EAAEmmG,EAAEnmG,GAAGuI,EAAE4rf,GAAG5rf,GAAG49F,IAAI,KAAK,EAAEnmG,EAAEmmG,GAAGh0G,EACpfgigB,GAAGhigB,GAAG6N,IAAI,KAAKmmG,KAAK,CAAC,GAAG59F,IAAIpW,GAAG,OAAOA,GAAGoW,IAAIpW,EAAEsyf,UAAU,MAAMrgf,EAAEmE,EAAE4rf,GAAG5rf,GAAGpW,EAAEgigB,GAAGhigB,EAAG,CAAAoW,EAAE,IAAK,MAAKA,EAAE,KAAK,OAAOngB,GAAGgsgB,GAAGjsf,EAAE9nB,EAAE+H,EAAEmgB,GAAE,GAAI,OAAOF,GAAG,OAAO0rf,GAAGK,GAAGjsf,EAAE4rf,EAAE1rf,EAAEE,GAAE,EAAI,CAA6D,GAAG,YAA1CngB,GAAjB/H,EAAEunB,EAAEkof,GAAGlof,GAAGvpB,QAAW2/C,UAAU39C,EAAE29C,SAASplC,gBAA+B,UAAUxQ,GAAG,SAAS/H,EAAEoJ,KAAK,IAAI4qgB,EAAGtE,QAAQ,GAAGL,GAAGrvgB,GAAG,GAAG2vgB,GAAGqE,EAAG3D,OAAO,CAAC2D,EAAG7D,GAAG,IAAI8D,EAAG/D,EAAG,MAAKnogB,EAAE/H,EAAE29C,WAAW,UAAU51C,EAAEwQ,gBAAgB,aAAavY,EAAEoJ,MAAM,UAAUpJ,EAAEoJ,QAAQ4qgB,EAAG5D,IACrV,OAD4V4D,IAAKA,EAAGA,EAAGlwf,EAAEyD,IAAK8wF,GAAGvwF,EAAEksf,EAAGr2f,EAAE3Q,IAAWingB,GAAIA,EAAGnwf,EAAE9jB,EAAEunB,GAAG,aAAazD,IAAImwf,EAAGj0gB,EAAEqggB,gBAClf4T,EAAG3ne,YAAY,WAAWtsC,EAAEoJ,MAAMs3f,GAAG1ggB,EAAE,SAASA,EAAEiC,QAAOgygB,EAAG1sf,EAAEkof,GAAGlof,GAAGvpB,OAAc8lB,GAAG,IAAK,WAAaurf,GAAG4E,IAAK,SAASA,EAAGnD,mBAAgBa,GAAGsC,EAAGrC,GAAGrqf,EAAEsqf,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAGjqf,EAAEnK,EAAE3Q,GAAG,MAAM,IAAK,kBAAkB,GAAG0kgB,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAGjqf,EAAEnK,EAAE3Q,GAAG,IAAIkngB,EAAG,GAAGnF,GAAGhrf,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAIqwf,EAAG,qBAAqB,MAAMpwf,EAAE,IAAK,iBAAiBowf,EAAG,mBACpe,MAAMpwf,EAAE,IAAK,oBAAoBowf,EAAG,sBAAsB,MAAMpwf,EAAEowf,OAAG,CAAO,MAAKhF,GAAGD,GAAGprf,EAAEnG,KAAKw2f,EAAG,oBAAoB,YAAYrwf,GAAG,MAAMnG,EAAE0oD,UAAU8tc,EAAG,sBAAsBA,IAAK9ha,IAAI,OAAO10F,EAAEo8C,SAASo1c,IAAI,uBAAuBgF,EAAG,qBAAqBA,GAAIhF,KAAK+E,EAAG/7Z,OAAY+xZ,GAAG,UAARD,GAAGj9f,GAAkBi9f,GAAGhogB,MAAMgogB,GAAG7+c,YAAY+jd,IAAG,IAAiB,GAAZ8E,EAAG3E,GAAG/nf,EAAE4sf,IAASzvgB,SAASyvgB,EAAG,IAAI3H,GAAG2H,EAAGrwf,EAAE,KAAKnG,EAAE3Q,GAAG8a,EAAE3jB,KAAK,CAACW,MAAMqvgB,EAAGnwgB,UAAUiwgB,IAAKC,EAAGC,EAAG91gB,KAAK61gB,EAAa,QAATA,EAAG7/Z,GAAG12F,MAAew2f,EAAG91gB,KAAK61gB,MAAUA,EAAGtia,GA5BhM,SAAY9tF,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAOuwF,GAAGtwF,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEqiD,MAAa,MAAK6oc,IAAG,EAAUp8Z,IAAG,IAAK,YAAY,OAAO/uF,EAAEC,EAAE1lB,QAASw0G,IAAIo8Z,GAAG,KAAKnrf,EAAE,QAAQ,OAAO,KAAM,CA4BCswf,CAAGtwf,EAAEnG,GA3Bzd,SAAYmG,EAAEC,GAAG,GAAGorf,GAAG,MAAM,mBAAmBrrf,IAAIirf,IAAIG,GAAGprf,EAAEC,IAAID,EAAEq0F,KAAKt+E,GAAGqwe,GAAGD,GAAG,KAAKkF,IAAG,EAAGrrf,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAEyU,SAASzU,EAAEwU,QAAQxU,EAAEuU,UAAUvU,EAAEyU,SAASzU,EAAEwU,OAAO,CAAC,GAAGxU,EAAE8wC,MAAM,EAAE9wC,EAAE8wC,KAAKnwD,OAAO,OAAOqf,EAAE8wC,KAAK,GAAG9wC,EAAEqiD,MAAM,OAAO54D,OAAOC,aAAasW,EAAEqiD,MAAO,QAAO,KAAK,IAAK,iBAAiB,OAAOisC,IAAI,OAAOtuF,EAAEg2C,OAAO,KAAKh2C,EAAE1lB,KAA0B,CA2BoFg2gB,CAAGvwf,EAAEnG,MACje,GADoe4J,EAAE+nf,GAAG/nf,EAAE,kBACve7iB,SAASsI,EAAE,IAAIw/f,GAAG,gBAAgB,cAAc,KAAK7uf,EAAE3Q,GAAG8a,EAAE3jB,KAAK,CAACW,MAAMkI,EAAEhJ,UAAUujB,IAAIva,EAAE3O,KAAK61gB,GAAI,CAAAj6Z,GAAGnyF,EAAE/D,EAAG,GAAE,UAAS4vf,GAAG7vf,EAAEC,EAAEpG,GAAG,MAAM,CAACmvB,SAAShpB,EAAEvf,SAASwf,EAAEw/C,cAAc5lD,EAAG,UAAS2xf,GAAGxrf,EAAEC,GAAG,IAAI,IAAIpG,EAAEoG,EAAE,UAAUwD,EAAE,GAAG,OAAOzD,GAAG,CAAC,IAAI9W,EAAE8W,EAAE+D,EAAE7a,EAAEg2f,UAAU,IAAIh2f,EAAEhC,KAAK,OAAO6c,IAAI7a,EAAE6a,EAAY,OAAVA,EAAE27e,GAAG1/e,EAAEnG,KAAY4J,EAAEotD,QAAQg/b,GAAG7vf,EAAE+D,EAAE7a,IAAc,OAAV6a,EAAE27e,GAAG1/e,EAAEC,KAAYwD,EAAEpjB,KAAKwvgB,GAAG7vf,EAAE+D,EAAE7a,KAAK8W,EAAEA,EAAE/U,MAAO,QAAOwY,CAAE,UAASusf,GAAGhwf,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE/U,aAAa+U,GAAG,IAAIA,EAAE9Y,KAAK,OAAO8Y,GAAI,IAAK,CACpd,SAASiwf,GAAGjwf,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,IAAI,IAAI6a,EAAE9D,EAAEwmf,WAAWzif,EAAE,GAAG,OAAOnK,GAAGA,IAAI4J,GAAG,CAAC,IAAIvnB,EAAE2d,EAAE5V,EAAE/H,EAAEokgB,UAAUr8e,EAAE/nB,EAAEgjgB,UAAU,GAAG,OAAOj7f,GAAGA,IAAIwf,EAAE,MAAM,IAAIvnB,EAAEgL,KAAK,OAAO+c,IAAI/nB,EAAE+nB,EAAE/a,EAAa,OAAVjF,EAAEy7f,GAAG7lf,EAAEkK,KAAYC,EAAE6sD,QAAQg/b,GAAGh2f,EAAE5V,EAAE/H,IAAKgN,GAAc,OAAVjF,EAAEy7f,GAAG7lf,EAAEkK,KAAYC,EAAE3jB,KAAKwvgB,GAAGh2f,EAAE5V,EAAE/H,KAAM2d,EAAEA,EAAE5O,MAAO,KAAI+Y,EAAEpjB,QAAQof,EAAE3f,KAAK,CAACW,MAAMif,EAAE/f,UAAU8jB,GAAI,KAAIwsf,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAG1wf,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGne,QAAQ2ugB,GAAG,MAAM3ugB,QAAQ4ugB,GAAG,GAAI,UAASE,GAAG3wf,EAAEC,EAAEpG,GAAW,GAARoG,EAAEywf,GAAGzwf,GAAMywf,GAAG1wf,KAAKC,GAAGpG,EAAE,MAAMrf,MAAMsD,EAAE,KAAO,UAAS8ygB,KAAM,CAC/e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG/wf,EAAEC,GAAG,MAAM,aAAaD,GAAG,aAAaA,GAAG,kBAAkBC,EAAEjV,UAAU,kBAAkBiV,EAAEjV,UAAU,kBAAkBiV,EAAEmuK,yBAAyB,OAAOnuK,EAAEmuK,yBAAyB,MAAMnuK,EAAEmuK,wBAAwB7L,MAAO,CAC7P,IAAIyuV,GAAG,oBAAoBx7e,WAAWA,gBAAW,EAAOy7e,GAAG,oBAAoB17e,aAAaA,kBAAa,EAAO27e,GAAG,oBAAoBtygB,QAAQA,aAAQ,EAAOuygB,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBF,GAAG,SAASlxf,GAAG,OAAOkxf,GAAGrygB,QAAQ,MAAMd,KAAKiiB,GAAGxC,MAAM6zf,GAAI,EAACL,GAAG,SAASK,GAAGrxf,GAAGwV,YAAW,WAAW,MAAMxV,CAAG,GAAE,CACrV,SAASsxf,GAAGtxf,EAAEC,GAAG,IAAIpG,EAAEoG,EAAEwD,EAAE,EAAE,EAAE,CAAC,IAAIva,EAAE2Q,EAAEvS,YAA6B,GAAjB0Y,EAAE1W,YAAYuQ,GAAM3Q,GAAG,IAAIA,EAAE8sC,SAAS,GAAY,QAATn8B,EAAE3Q,EAAE3O,MAAc,CAAC,GAAG,IAAIkpB,EAA0B,OAAvBzD,EAAE1W,YAAYJ,QAAGy8f,GAAG1lf,GAAUwD,GAAI,KAAI,MAAM5J,GAAG,OAAOA,GAAG,OAAOA,GAAG4J,IAAI5J,EAAE3Q,CAAE,OAAM2Q,GAAG8rf,GAAG1lf,EAAG,UAASsxf,GAAGvxf,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE1Y,YAAY,CAAC,IAAI2Y,EAAED,EAAEg2B,SAAS,GAAG,IAAI/1B,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAED,EAAEzlB,OAAiB,OAAO0lB,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAK,CAAC,QAAOD,CAAE,CAClY,SAASwxf,GAAGxxf,GAAGA,EAAEA,EAAEy5B,gBAAgB,IAAI,IAAIx5B,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEg2B,SAAS,CAAC,IAAIn8B,EAAEmG,EAAEzlB,KAAK,GAAG,MAAMsf,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAIoG,EAAE,OAAOD,EAAEC,GAAI,KAAI,OAAOpG,GAAGoG,GAAI,CAAAD,EAAEA,EAAEy5B,eAAgB,QAAO,IAAK,KAAIg4d,GAAGjogB,KAAKqZ,SAAStlB,SAAS,IAAIyH,MAAM,GAAG0sgB,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAG3B,GAAG,oBAAoB2B,GAAG3jU,GAAG,iBAAiB2jU,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAASvM,GAAGllf,GAAG,IAAIC,EAAED,EAAE0xf,IAAI,GAAGzxf,EAAE,OAAOA,EAAE,IAAI,IAAIpG,EAAEmG,EAAE3W,WAAWwQ,GAAG,CAAC,GAAGoG,EAAEpG,EAAEi2f,KAAKj2f,EAAE63f,IAAI,CAAe,GAAd73f,EAAEoG,EAAEqgf,UAAa,OAAOrgf,EAAEqsB,OAAO,OAAOzyB,GAAG,OAAOA,EAAEyyB,MAAM,IAAItsB,EAAEwxf,GAAGxxf,GAAG,OAAOA,GAAG,CAAC,GAAGnG,EAAEmG,EAAE0xf,IAAI,OAAO73f,EAAEmG,EAAEwxf,GAAGxxf,EAAG,QAAOC,CAAE,CAAIpG,GAAJmG,EAAEnG,GAAMxQ,UAAW,QAAO,IAAK,UAAS41f,GAAGj/e,GAAkB,QAAfA,EAAEA,EAAE0xf,KAAK1xf,EAAE8vf,MAAc,IAAI9vf,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,KAAK,KAAK8Y,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,IAAI,KAAK8Y,CAAE,UAAS2rf,GAAG3rf,GAAG,GAAG,IAAIA,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,IAAI,OAAO8Y,EAAEk/e,UAAU,MAAM1kgB,MAAMsD,EAAE,IAAM,UAASqhgB,GAAGn/e,GAAG,OAAOA,EAAE2xf,KAAK,IAAK,KAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGhyf,GAAG,MAAM,CAACtG,QAAQsG,EAAG,CACxe,SAASmnE,GAAEnnE,GAAG,EAAE+xf,KAAK/xf,EAAEtG,QAAQo4f,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAM,UAASE,GAAEjyf,EAAEC,GAAG8xf,KAAKD,GAAGC,IAAI/xf,EAAEtG,QAAQsG,EAAEtG,QAAQuG,CAAE,KAAIiyf,GAAG,CAAC,EAAE3qb,GAAEyqb,GAAGE,IAAIC,GAAGH,IAAG,GAAII,GAAGF,GAAG,SAASG,GAAGryf,EAAEC,GAAG,IAAIpG,EAAEmG,EAAE1a,KAAKkmc,aAAa,IAAI3xb,EAAE,OAAOq4f,GAAG,IAAIzuf,EAAEzD,EAAEk/e,UAAU,GAAGz7e,GAAGA,EAAE6uf,8CAA8Cryf,EAAE,OAAOwD,EAAE8uf,0CAA0C,IAASxuf,EAAL7a,EAAE,CAAC,EAAI,IAAI6a,KAAKlK,EAAE3Q,EAAE6a,GAAG9D,EAAE8D,GAAoH,OAAjHN,KAAIzD,EAAEA,EAAEk/e,WAAYoT,4CAA4Cryf,EAAED,EAAEuyf,0CAA0CrpgB,GAAUA,CAAE,CAC/d,SAASspgB,GAAGxyf,GAAyB,OAAO,QAA7BA,EAAEA,EAAEsrb,yBAAmC,IAAStrb,CAAE,UAASyyf,KAAKtrb,GAAEgrb,IAAIhrb,GAAEI,GAAG,UAASmrb,GAAG1yf,EAAEC,EAAEpG,GAAG,GAAG0tE,GAAE7tE,UAAUw4f,GAAG,MAAM13gB,MAAMsD,EAAE,MAAMm0gB,GAAE1qb,GAAEtnE,GAAGgyf,GAAEE,GAAGt4f,EAAG,UAASwzF,GAAGrtF,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAEk/e,UAAgC,GAAtBj/e,EAAEA,EAAEqrb,kBAAqB,oBAAoB7nb,EAAEsgK,gBAAgB,OAAOlqK,EAAwB,IAAI,IAAI3Q,KAA9Bua,EAAEA,EAAEsgK,kBAAiC,KAAK76K,KAAK+W,GAAG,MAAMzlB,MAAMsD,EAAE,IAAI89f,EAAG57e,IAAI,UAAU9W,IAAI,OAAO00P,EAAE,CAAC,EAAE/jP,EAAE4J,EAAG,CACzX,SAASkvf,GAAG3yf,GAA2G,OAAxGA,GAAGA,EAAEA,EAAEk/e,YAAYl/e,EAAE4yf,2CAA2CV,GAAGE,GAAG7qb,GAAE7tE,QAAQu4f,GAAE1qb,GAAEvnE,GAAGiyf,GAAEE,GAAGA,GAAGz4f,UAAe,CAAG,UAASm5f,GAAG7yf,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAEk/e,UAAU,IAAIz7e,EAAE,MAAMjpB,MAAMsD,EAAE,MAAM+b,GAAGmG,EAAEqtF,GAAGrtF,EAAEC,EAAEmyf,IAAI3uf,EAAEmvf,0CAA0C5yf,EAAEmnE,GAAEgrb,IAAIhrb,GAAEI,IAAG0qb,GAAE1qb,GAAEvnE,IAAImnE,GAAEgrb,IAAIF,GAAEE,GAAGt4f,EAAG,KAAIi5f,GAAG,KAAKC,IAAG,EAAGv2B,IAAG,EAAG,SAASw2B,GAAGhzf,GAAG,OAAO8yf,GAAGA,GAAG,CAAC9yf,GAAG8yf,GAAGzygB,KAAK2f,EAAG,CACjW,SAASizf,KAAK,IAAIz2B,IAAI,OAAOs2B,GAAG,CAACt2B,IAAG,EAAG,IAAIx8d,EAAE,EAAEC,EAAE09O,GAAE,IAAI,IAAI9jP,EAAEi5f,GAAG,IAAIn1Q,GAAE,EAAE39O,EAAEnG,EAAEjZ,OAAOof,IAAI,CAAC,IAAIyD,EAAE5J,EAAEmG,GAAG,GAAGyD,EAAEA,GAAE,SAAU,OAAOA,EAAG,CAAAqvf,GAAG,KAAKC,IAAG,CAA+E,CAA5E,MAAM7pgB,GAAG,MAAM,OAAO4pgB,KAAKA,GAAGA,GAAG9tgB,MAAMgb,EAAE,IAAI+gf,GAAGY,GAAGsR,IAAI/pgB,CAAG,CAAnJ,QAA2Jy0P,GAAE19O,EAAEu8d,IAAG,CAAG,CAAC,QAAO,IAAK,KAAI02B,GAAG,GAAGl9e,GAAG,EAAE29E,GAAG,KAAKw/Z,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEj9Z,GAAG,GAAG,SAASgB,GAAGt3F,EAAEC,GAAGizf,GAAGl9e,MAAMm9e,GAAGD,GAAGl9e,MAAM29E,GAAGA,GAAG3zF,EAAEmzf,GAAGlzf,CAAE,CAClV,SAAS43F,GAAG73F,EAAEC,EAAEpG,GAAGu5f,GAAGC,MAAME,GAAGH,GAAGC,MAAM/8Z,GAAG88Z,GAAGC,MAAMC,GAAGA,GAAGtzf,EAAE,IAAIyD,EAAE8vf,GAAGvzf,EAAEs2F,GAAG,IAAIptG,EAAE,GAAGq5f,GAAG9+e,GAAG,EAAEA,KAAK,GAAGva,GAAG2Q,GAAG,EAAE,IAAIkK,EAAE,GAAGw+e,GAAGtif,GAAG/W,EAAE,GAAG,GAAG6a,EAAE,CAAC,IAAIC,EAAE9a,EAAEA,EAAE,EAAE6a,GAAGN,GAAG,GAAGO,GAAG,GAAGzmB,SAAS,IAAIkmB,IAAIO,EAAE9a,GAAG8a,EAAEuvf,GAAG,GAAG,GAAGhR,GAAGtif,GAAG/W,EAAE2Q,GAAG3Q,EAAEua,EAAE6yF,GAAGvyF,EAAE/D,CAAE,MAAKuzf,GAAG,GAAGxvf,EAAElK,GAAG3Q,EAAEua,EAAE6yF,GAAGt2F,CAAE,UAASwzf,GAAGxzf,GAAG,OAAOA,EAAE/U,SAASqsG,GAAGt3F,EAAE,GAAG63F,GAAG73F,EAAE,EAAE,GAAI,UAASyzf,GAAGzzf,GAAG,KAAKA,IAAI2zF,IAAIA,GAAGu/Z,KAAKl9e,IAAIk9e,GAAGl9e,IAAI,KAAKm9e,GAAGD,KAAKl9e,IAAIk9e,GAAGl9e,IAAI,KAAK,KAAKhW,IAAIszf,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAK/8Z,GAAG88Z,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAK,KAAIK,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAG9zf,EAAEC,GAAG,IAAIpG,EAAEk6f,GAAG,EAAE,KAAK,KAAK,GAAGl6f,EAAE+ze,YAAY,UAAU/ze,EAAEqlf,UAAUj/e,EAAEpG,EAAE5O,OAAO+U,EAAgB,QAAdC,EAAED,EAAEg0f,YAAoBh0f,EAAEg0f,UAAU,CAACn6f,GAAGmG,EAAEk6J,OAAO,IAAIj6J,EAAE5f,KAAKwZ,EAAG,CACzJ,SAASo6f,GAAGj0f,EAAEC,GAAG,OAAOD,EAAE9Y,KAAK,KAAK,EAAE,IAAI2S,EAAEmG,EAAE1a,KAAyE,OAAO,QAA3E2a,EAAE,IAAIA,EAAE+1B,UAAUn8B,EAAEpF,gBAAgBwL,EAAE45B,SAASplC,cAAc,KAAKwL,KAAmBD,EAAEk/e,UAAUj/e,EAAEyzf,GAAG1zf,EAAE2zf,GAAGpC,GAAGtxf,EAAExY,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7CwY,EAAE,KAAKD,EAAEk0f,cAAc,IAAIj0f,EAAE+1B,SAAS,KAAK/1B,KAAYD,EAAEk/e,UAAUj/e,EAAEyzf,GAAG1zf,EAAE2zf,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxB1zf,EAAE,IAAIA,EAAE+1B,SAAS,KAAK/1B,KAAYpG,EAAE,OAAOy5f,GAAG,CAACt1f,GAAGu1f,GAAGjwe,SAASgzE,IAAI,KAAKt2F,EAAEwgf,cAAc,CAACC,WAAWxgf,EAAEk0f,YAAYt6f,EAAEu6f,UAAU,aAAYv6f,EAAEk6f,GAAG,GAAG,KAAK,KAAK,IAAK7U,UAAUj/e,EAAEpG,EAAE5O,OAAO+U,EAAEA,EAAEssB,MAAMzyB,EAAE65f,GAAG1zf,EAAE2zf,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAI,UAASU,GAAGr0f,GAAG,OAAO,KAAY,EAAPA,EAAEuH,OAAS,KAAa,IAARvH,EAAEk6J,MAAW,UAASo6V,GAAGt0f,GAAG,GAAG4zf,GAAE,CAAC,IAAI3zf,EAAE0zf,GAAG,GAAG1zf,EAAE,CAAC,IAAIpG,EAAEoG,EAAE,IAAIg0f,GAAGj0f,EAAEC,GAAG,CAAC,GAAGo0f,GAAGr0f,GAAG,MAAMxlB,MAAMsD,EAAE,MAAMmiB,EAAEsxf,GAAG13f,EAAEvS,aAAa,IAAImc,EAAEiwf,GAAGzzf,GAAGg0f,GAAGj0f,EAAEC,GAAG6zf,GAAGrwf,EAAE5J,IAAImG,EAAEk6J,OAAe,KAATl6J,EAAEk6J,MAAY,EAAE05V,IAAE,EAAGF,GAAG1zf,EAAG,CAAC,KAAI,CAAC,GAAGq0f,GAAGr0f,GAAG,MAAMxlB,MAAMsD,EAAE,MAAMkiB,EAAEk6J,OAAe,KAATl6J,EAAEk6J,MAAY,EAAE05V,IAAE,EAAGF,GAAG1zf,CAAE,CAAC,CAAC,UAASu0f,GAAGv0f,GAAG,IAAIA,EAAEA,EAAE/U,OAAO,OAAO+U,GAAG,IAAIA,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,KAAK,KAAK8Y,EAAE9Y,KAAK8Y,EAAEA,EAAE/U,OAAOyogB,GAAG1zf,CAAE,CACja,SAASw0f,GAAGx0f,GAAG,GAAGA,IAAI0zf,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOW,GAAGv0f,GAAG4zf,IAAE,GAAG,EAAG,IAAI3zf,EAAkG,IAA/FA,EAAE,IAAID,EAAE9Y,QAAQ+Y,EAAE,IAAID,EAAE9Y,OAAgB+Y,EAAE,UAAXA,EAAED,EAAE1a,OAAmB,SAAS2a,IAAI8wf,GAAG/wf,EAAE1a,KAAK0a,EAAEy0f,gBAAmBx0f,IAAIA,EAAE0zf,IAAI,CAAC,GAAGU,GAAGr0f,GAAG,MAAM00f,KAAKl6gB,MAAMsD,EAAE,MAAM,KAAKmiB,GAAG6zf,GAAG9zf,EAAEC,GAAGA,EAAEsxf,GAAGtxf,EAAE3Y,YAAa,CAAM,GAANitgB,GAAGv0f,GAAM,KAAKA,EAAE9Y,IAAI,CAAgD,KAA7B8Y,EAAE,QAApBA,EAAEA,EAAEwgf,eAAyBxgf,EAAEygf,WAAW,MAAW,MAAMjmgB,MAAMsD,EAAE,MAAMkiB,EAAE,CAAiB,IAAhBA,EAAEA,EAAE1Y,YAAgB2Y,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAEg2B,SAAS,CAAC,IAAIn8B,EAAEmG,EAAEzlB,KAAK,GAAG,OAAOsf,EAAE,CAAC,GAAG,IAAIoG,EAAE,CAAC0zf,GAAGpC,GAAGvxf,EAAE1Y,aAAa,MAAM0Y,CAAE,CAAAC,GAAI,KAAI,MAAMpG,GAAG,OAAOA,GAAG,OAAOA,GAAGoG,GAAI,CAAAD,EAAEA,EAAE1Y,WAAY,CAAAqsgB,GACjgB,IAAK,CAAC,MAAKA,GAAGD,GAAGnC,GAAGvxf,EAAEk/e,UAAU53f,aAAa,KAAK,OAAM,CAAG,UAASotgB,KAAK,IAAI,IAAI10f,EAAE2zf,GAAG3zf,GAAGA,EAAEuxf,GAAGvxf,EAAE1Y,YAAa,UAASqtgB,KAAKhB,GAAGD,GAAG,KAAKE,IAAE,CAAG,UAASgB,GAAG50f,GAAG,OAAO6zf,GAAGA,GAAG,CAAC7zf,GAAG6zf,GAAGxzgB,KAAK2f,EAAG,KAAI60f,GAAG12f,EAAG0nf,wBAAwB,SAASiP,GAAG90f,EAAEC,GAAG,GAAGD,GAAGA,EAAEpH,aAAa,CAA4B,IAAI,IAAIiB,KAAnCoG,EAAE29O,EAAE,CAAC,EAAE39O,GAAGD,EAAEA,EAAEpH,kBAA4B,IAASqH,EAAEpG,KAAKoG,EAAEpG,GAAGmG,EAAEnG,IAAI,OAAOoG,CAAE,QAAOA,CAAE,KAAI80f,GAAG/C,GAAG,MAAMgD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAK,UAASI,GAAGp1f,GAAG,IAAIC,EAAE80f,GAAGr7f,QAAQytE,GAAE4tb,IAAI/0f,EAAEq1f,cAAcp1f,CAAE,CACld,SAASq1f,GAAGt1f,EAAEC,EAAEpG,GAAG,KAAK,OAAOmG,GAAG,CAAC,IAAIyD,EAAEzD,EAAEsgf,UAA+H,IAApHtgf,EAAEu1f,WAAWt1f,KAAKA,GAAGD,EAAEu1f,YAAYt1f,EAAE,OAAOwD,IAAIA,EAAE8xf,YAAYt1f,IAAI,OAAOwD,IAAIA,EAAE8xf,WAAWt1f,KAAKA,IAAIwD,EAAE8xf,YAAYt1f,GAAMD,IAAInG,EAAE,MAAMmG,EAAEA,EAAE/U,MAAO,CAAC,UAASuqgB,GAAGx1f,EAAEC,GAAG+0f,GAAGh1f,EAAEk1f,GAAGD,GAAG,KAAsB,QAAjBj1f,EAAEA,EAAEy1f,eAAuB,OAAOz1f,EAAE01f,eAAe,KAAK11f,EAAE21f,MAAM11f,KAAK21f,IAAG,GAAI51f,EAAE01f,aAAa,KAAM,CACvU,SAASG,GAAG71f,GAAG,IAAIC,EAAED,EAAEq1f,cAAc,GAAGH,KAAKl1f,EAAE,GAAGA,EAAE,CAAComC,QAAQpmC,EAAE81f,cAAc71f,EAAE7U,KAAK,MAAM,OAAO6pgB,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMx6gB,MAAMsD,EAAE,MAAMm3gB,GAAGj1f,EAAEg1f,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAa11f,EAAG,MAAKi1f,GAAGA,GAAG7pgB,KAAK4U,EAAE,OAAOC,CAAE,KAAI81f,GAAG,KAAK,SAASC,GAAGh2f,GAAG,OAAO+1f,GAAGA,GAAG,CAAC/1f,GAAG+1f,GAAG11gB,KAAK2f,EAAG,UAASi2f,GAAGj2f,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE+W,EAAEi2f,YAA+E,OAAnE,OAAOhtgB,GAAG2Q,EAAEzO,KAAKyO,EAAEm8f,GAAG/1f,KAAKpG,EAAEzO,KAAKlC,EAAEkC,KAAKlC,EAAEkC,KAAKyO,GAAGoG,EAAEi2f,YAAYr8f,EAASs8f,GAAGn2f,EAAEyD,EAAG,CACjY,SAAS0yf,GAAGn2f,EAAEC,GAAGD,EAAE21f,OAAO11f,EAAE,IAAIpG,EAAEmG,EAAEsgf,UAAqC,IAA3B,OAAOzmf,IAAIA,EAAE87f,OAAO11f,GAAGpG,EAAEmG,EAAMA,EAAEA,EAAE/U,OAAO,OAAO+U,GAAGA,EAAEu1f,YAAYt1f,EAAgB,QAAdpG,EAAEmG,EAAEsgf,aAAqBzmf,EAAE07f,YAAYt1f,GAAGpG,EAAEmG,EAAEA,EAAEA,EAAE/U,OAAO,OAAO,IAAI4O,EAAE3S,IAAI2S,EAAEqlf,UAAU,IAAK,KAAIkX,IAAG,EAAG,SAASC,GAAGr2f,GAAGA,EAAEs2f,YAAY,CAACC,UAAUv2f,EAAEwgf,cAAcgW,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAAChyV,QAAQ,KAAKwxV,YAAY,KAAKP,MAAM,GAAGxpV,QAAQ,KAAM,CACrX,SAASwqV,GAAG32f,EAAEC,GAAGD,EAAEA,EAAEs2f,YAAYr2f,EAAEq2f,cAAct2f,IAAIC,EAAEq2f,YAAY,CAACC,UAAUv2f,EAAEu2f,UAAUC,gBAAgBx2f,EAAEw2f,gBAAgBC,eAAez2f,EAAEy2f,eAAeC,OAAO12f,EAAE02f,OAAOvqV,QAAQnsK,EAAEmsK,SAAU,UAASyqV,GAAG52f,EAAEC,GAAG,MAAM,CAAC42f,UAAU72f,EAAE82f,KAAK72f,EAAE/Y,IAAI,EAAE6vgB,QAAQ,KAAKv5gB,SAAS,KAAK4N,KAAK,KAAM,CACvR,SAAS4rgB,GAAGh3f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAEs2f,YAAY,GAAG,OAAO7yf,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEizf,OAAU,KAAO,EAAFO,IAAK,CAAC,IAAI/tgB,EAAEua,EAAEihK,QAA+D,OAAvD,OAAOx7K,EAAE+W,EAAE7U,KAAK6U,GAAGA,EAAE7U,KAAKlC,EAAEkC,KAAKlC,EAAEkC,KAAK6U,GAAGwD,EAAEihK,QAAQzkK,EAASk2f,GAAGn2f,EAAEnG,EAAG,CAAmF,OAAnE,QAAhB3Q,EAAEua,EAAEyyf,cAAsBj2f,EAAE7U,KAAK6U,EAAE+1f,GAAGvyf,KAAKxD,EAAE7U,KAAKlC,EAAEkC,KAAKlC,EAAEkC,KAAK6U,GAAGwD,EAAEyyf,YAAYj2f,EAASk2f,GAAGn2f,EAAEnG,EAAG,UAASq9f,GAAGl3f,EAAEC,EAAEpG,GAAmB,GAAG,QAAnBoG,EAAEA,EAAEq2f,eAA0Br2f,EAAEA,EAAEy2f,OAAO,KAAO,QAAF78f,IAAY,CAAC,IAAI4J,EAAExD,EAAE01f,MAAwB97f,GAAlB4J,GAAGzD,EAAE+if,aAAkB9if,EAAE01f,MAAM97f,EAAE6pf,GAAG1jf,EAAEnG,EAAG,CAAC,CACtZ,SAASs9f,GAAGn3f,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEs2f,YAAY7yf,EAAEzD,EAAEsgf,UAAU,GAAG,OAAO78e,GAAoB5J,KAAhB4J,EAAEA,EAAE6yf,aAAmB,CAAC,IAAIptgB,EAAE,KAAK6a,EAAE,KAAyB,GAAG,QAAvBlK,EAAEA,EAAE28f,iBAA4B,CAAC,EAAE,CAAC,IAAIxyf,EAAE,CAAC6yf,UAAUh9f,EAAEg9f,UAAUC,KAAKj9f,EAAEi9f,KAAK5vgB,IAAI2S,EAAE3S,IAAI6vgB,QAAQl9f,EAAEk9f,QAAQv5gB,SAASqc,EAAErc,SAAS4N,KAAK,MAAM,OAAO2Y,EAAE7a,EAAE6a,EAAEC,EAAED,EAAEA,EAAE3Y,KAAK4Y,EAAEnK,EAAEA,EAAEzO,IAAK,OAAM,OAAOyO,GAAG,OAAOkK,EAAE7a,EAAE6a,EAAE9D,EAAE8D,EAAEA,EAAE3Y,KAAK6U,CAAE,MAAK/W,EAAE6a,EAAE9D,EAAiH,OAA/GpG,EAAE,CAAC08f,UAAU9yf,EAAE8yf,UAAUC,gBAAgBttgB,EAAEutgB,eAAe1yf,EAAE2yf,OAAOjzf,EAAEizf,OAAOvqV,QAAQ1oK,EAAE0oK,cAASnsK,EAAEs2f,YAAYz8f,EAAS,CAAmB,QAAnBmG,EAAEnG,EAAE48f,gBAAwB58f,EAAE28f,gBAAgBv2f,EAAED,EAAE5U,KACnf6U,EAAEpG,EAAE48f,eAAex2f,CAAE,CACrB,SAASm3f,GAAGp3f,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE8W,EAAEs2f,YAAYF,IAAG,EAAG,IAAIryf,EAAE7a,EAAEstgB,gBAAgBxyf,EAAE9a,EAAEutgB,eAAev6gB,EAAEgN,EAAEwtgB,OAAOhyV,QAAQ,GAAG,OAAOxoL,EAAE,CAACgN,EAAEwtgB,OAAOhyV,QAAQ,KAAK,IAAIzgL,EAAE/H,EAAE+nB,EAAEhgB,EAAEmH,KAAKnH,EAAEmH,KAAK,KAAK,OAAO4Y,EAAED,EAAEE,EAAED,EAAE5Y,KAAK6Y,EAAED,EAAE/f,EAAE,IAAI9G,EAAE6iB,EAAEsgf,UAAU,OAAOnjgB,KAAoBjB,GAAhBiB,EAAEA,EAAEm5gB,aAAgBG,kBAAmBzyf,IAAI,OAAO9nB,EAAEiB,EAAEq5gB,gBAAgBvyf,EAAE/nB,EAAEkP,KAAK6Y,EAAE9mB,EAAEs5gB,eAAexygB,GAAI,IAAG,OAAO8f,EAAE,CAAC,IAAII,EAAEjb,EAAEqtgB,UAA6B,IAAnBvyf,EAAE,EAAE7mB,EAAE8mB,EAAEhgB,EAAE,KAAK/H,EAAE6nB,IAAI,CAAC,IAAIO,EAAEpoB,EAAE46gB,KAAK7ogB,EAAE/R,EAAE26gB,UAAU,IAAIpzf,EAAEa,KAAKA,EAAE,CAAC,OAAOnnB,IAAIA,EAAEA,EAAEiO,KAAK,CAACyrgB,UAAU5ogB,EAAE6ogB,KAAK,EAAE5vgB,IAAIhL,EAAEgL,IAAI6vgB,QAAQ76gB,EAAE66gB,QAAQv5gB,SAAStB,EAAEsB,SACvf4N,KAAK,OAAO4U,EAAE,CAAC,IAAIkE,EAAElE,EAAEoE,EAAEloB,EAAU,OAARooB,EAAErE,EAAEhS,EAAE4L,EAASuK,EAAEld,KAAK,KAAK,EAAc,GAAG,oBAAfgd,EAAEE,EAAE2yf,SAAiC,CAAC5yf,EAAED,EAAExlB,KAAKuP,EAAEkW,EAAEG,GAAG,MAAMtE,CAAE,CAAAmE,EAAED,EAAE,MAAMlE,EAAE,KAAK,EAAEkE,EAAEg2J,OAAe,MAATh2J,EAAEg2J,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3C51J,EAAE,oBAAdJ,EAAEE,EAAE2yf,SAAgC7yf,EAAExlB,KAAKuP,EAAEkW,EAAEG,GAAGJ,SAAe,IAASI,EAAE,MAAMtE,EAAEmE,EAAEy5O,EAAE,CAAC,EAAEz5O,EAAEG,GAAG,MAAMtE,EAAE,KAAK,EAAEo2f,IAAG,EAAI,QAAOl6gB,EAAEsB,UAAU,IAAItB,EAAE46gB,OAAO92f,EAAEk6J,OAAO,GAAe,QAAZ51J,EAAEpb,EAAEijL,SAAiBjjL,EAAEijL,QAAQ,CAACjwL,GAAGooB,EAAEjkB,KAAKnE,GAAI,MAAK+R,EAAE,CAAC4ogB,UAAU5ogB,EAAE6ogB,KAAKxyf,EAAEpd,IAAIhL,EAAEgL,IAAI6vgB,QAAQ76gB,EAAE66gB,QAAQv5gB,SAAStB,EAAEsB,SAAS4N,KAAK,MAAM,OAAOjO,GAAG8mB,EAAE9mB,EAAE8Q,EAAEhK,EAAEkgB,GAAGhnB,EAAEA,EAAEiO,KAAK6C,EAAE+V,GAAGM,EAC3e,GAAG,QAAZpoB,EAAEA,EAAEkP,MAAiB,IAAsB,QAAnBlP,EAAEgN,EAAEwtgB,OAAOhyV,SAAiB,MAAexoL,GAAJooB,EAAEpoB,GAAMkP,KAAKkZ,EAAElZ,KAAK,KAAKlC,EAAEutgB,eAAenyf,EAAEpb,EAAEwtgB,OAAOhyV,QAAQ,IAA7D,CAAkE,CAAqG,GAA5F,OAAOvnL,IAAI8G,EAAEkgB,GAAGjb,EAAEqtgB,UAAUtygB,EAAEiF,EAAEstgB,gBAAgBvyf,EAAE/a,EAAEutgB,eAAet5gB,EAA4B,QAA1B8iB,EAAE/W,EAAEwtgB,OAAOR,aAAwB,CAAChtgB,EAAE+W,EAAE,GAAG+D,GAAG9a,EAAE4tgB,KAAK5tgB,EAAEA,EAAEkC,WAAWlC,IAAI+W,EAAG,MAAK,OAAO8D,IAAI7a,EAAEwtgB,OAAOf,MAAM,GAAG7qC,IAAI9md,EAAEhE,EAAE21f,MAAM3xf,EAAEhE,EAAEwgf,cAAcr8e,CAAE,CAAC,CAC/V,SAASkzf,GAAGr3f,EAAEC,EAAEpG,GAA8B,GAA3BmG,EAAEC,EAAEksK,QAAQlsK,EAAEksK,QAAQ,KAAQ,OAAOnsK,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEpf,OAAOqf,IAAI,CAAC,IAAIwD,EAAEzD,EAAEC,GAAG/W,EAAEua,EAAEjmB,SAAS,GAAG,OAAO0L,EAAE,CAAqB,GAApBua,EAAEjmB,SAAS,KAAKimB,EAAE5J,EAAK,oBAAoB3Q,EAAE,MAAM1O,MAAMsD,EAAE,IAAIoL,IAAIA,EAAExK,KAAK+kB,EAAG,CAAC,CAAC,KAAI6zf,IAAI,IAAIle,EAAG9me,WAAWyW,KAAK,SAASwue,GAAGv3f,EAAEC,EAAEpG,EAAE4J,GAA8B5J,EAAE,QAAXA,EAAEA,EAAE4J,EAAtBxD,EAAED,EAAEwgf,sBAAmC,IAAS3mf,EAAEoG,EAAE29O,EAAE,CAAC,EAAE39O,EAAEpG,GAAGmG,EAAEwgf,cAAc3mf,EAAE,IAAImG,EAAE21f,QAAQ31f,EAAEs2f,YAAYC,UAAU18f,EAAG,CACnX,IAAI29f,GAAG,CAACC,UAAU,SAASz3f,GAAG,SAAOA,EAAEA,EAAE03f,kBAAiBrX,GAAGrgf,KAAKA,CAAK,EAAC23f,gBAAgB,SAAS33f,EAAEC,EAAEpG,GAAGmG,EAAEA,EAAE03f,gBAAgB,IAAIj0f,EAAEujE,KAAI99E,EAAE0ugB,GAAG53f,GAAG+D,EAAE6yf,GAAGnzf,EAAEva,GAAG6a,EAAEgzf,QAAQ92f,OAAE,IAASpG,GAAG,OAAOA,IAAIkK,EAAEvmB,SAASqc,GAAe,QAAZoG,EAAE+2f,GAAGh3f,EAAE+D,EAAE7a,MAAc2ugB,GAAG53f,EAAED,EAAE9W,EAAEua,GAAGyzf,GAAGj3f,EAAED,EAAE9W,GAAI,EAAC4ugB,oBAAoB,SAAS93f,EAAEC,EAAEpG,GAAGmG,EAAEA,EAAE03f,gBAAgB,IAAIj0f,EAAEujE,KAAI99E,EAAE0ugB,GAAG53f,GAAG+D,EAAE6yf,GAAGnzf,EAAEva,GAAG6a,EAAE7c,IAAI,EAAE6c,EAAEgzf,QAAQ92f,OAAE,IAASpG,GAAG,OAAOA,IAAIkK,EAAEvmB,SAASqc,GAAe,QAAZoG,EAAE+2f,GAAGh3f,EAAE+D,EAAE7a,MAAc2ugB,GAAG53f,EAAED,EAAE9W,EAAEua,GAAGyzf,GAAGj3f,EAAED,EAAE9W,GAAI,EAAC6ugB,mBAAmB,SAAS/3f,EAAEC,GAAGD,EAAEA,EAAE03f,gBAAgB,IAAI79f,EAAEmtE,KAAIvjE,EACnfm0f,GAAG53f,GAAG9W,EAAE0tgB,GAAG/8f,EAAE4J,GAAGva,EAAEhC,IAAI,OAAE,IAAS+Y,GAAG,OAAOA,IAAI/W,EAAE1L,SAASyiB,GAAe,QAAZA,EAAE+2f,GAAGh3f,EAAE9W,EAAEua,MAAco0f,GAAG53f,EAAED,EAAEyD,EAAE5J,GAAGq9f,GAAGj3f,EAAED,EAAEyD,GAAI,GAAE,SAASu0f,GAAGh4f,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,GAAiB,MAAM,oBAApBhE,EAAEA,EAAEk/e,WAAsCx0U,sBAAsB1qK,EAAE0qK,sBAAsBjnK,EAAEM,EAAEC,IAAG/D,EAAEhY,YAAWgY,EAAEhY,UAAUgwgB,wBAAsB5mB,GAAGx3e,EAAE4J,KAAK4te,GAAGnof,EAAE6a,GAAM,CAC3S,SAASm0f,GAAGl4f,EAAEC,EAAEpG,GAAG,IAAI4J,GAAE,EAAGva,EAAEgpgB,GAAOnuf,EAAE9D,EAAEsrb,YAA2W,MAA/V,kBAAkBxnb,GAAG,OAAOA,EAAEA,EAAE8xf,GAAG9xf,IAAI7a,EAAEspgB,GAAGvyf,GAAGmyf,GAAG7qb,GAAE7tE,QAAyBqK,GAAGN,EAAE,QAAtBA,EAAExD,EAAEurb,oBAA4B,IAAS/nb,GAAG4uf,GAAGryf,EAAE9W,GAAGgpgB,IAAIjyf,EAAE,IAAIA,EAAEpG,EAAEkK,GAAG/D,EAAEwgf,cAAc,OAAOvgf,EAAE0oB,YAAO,IAAS1oB,EAAE0oB,MAAM1oB,EAAE0oB,MAAM,KAAK1oB,EAAEitc,QAAQsqD,GAAGx3f,EAAEk/e,UAAUj/e,EAAEA,EAAEy3f,gBAAgB13f,EAAEyD,KAAIzD,EAAEA,EAAEk/e,WAAYoT,4CAA4CppgB,EAAE8W,EAAEuyf,0CAA0Cxuf,GAAU9D,CAAE,CAC7Z,SAASk4f,GAAGn4f,EAAEC,EAAEpG,EAAE4J,GAAGzD,EAAEC,EAAE0oB,MAAM,oBAAoB1oB,EAAE+mK,2BAA2B/mK,EAAE+mK,0BAA0BntK,EAAE4J,GAAG,oBAAoBxD,EAAEm4f,kCAAkCn4f,EAAEm4f,iCAAiCv+f,EAAE4J,GAAGxD,EAAE0oB,QAAQ3oB,GAAGw3f,GAAGM,oBAAoB73f,EAAEA,EAAE0oB,MAAM,KAAM,CACrQ,SAAS0ve,GAAGr4f,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE8W,EAAEk/e,UAAUh2f,EAAE6B,MAAM8O,EAAE3Q,EAAEy/B,MAAM3oB,EAAEwgf,cAAct3f,EAAE6/B,KAAKuue,GAAGjB,GAAGr2f,GAAG,IAAI+D,EAAE9D,EAAEsrb,YAAY,kBAAkBxnb,GAAG,OAAOA,EAAE7a,EAAEk9C,QAAQyvd,GAAG9xf,IAAIA,EAAEyuf,GAAGvyf,GAAGmyf,GAAG7qb,GAAE7tE,QAAQxQ,EAAEk9C,QAAQisd,GAAGryf,EAAE+D,IAAI7a,EAAEy/B,MAAM3oB,EAAEwgf,cAA2C,oBAA7Bz8e,EAAE9D,EAAEy6J,4BAAiD68V,GAAGv3f,EAAEC,EAAE8D,EAAElK,GAAG3Q,EAAEy/B,MAAM3oB,EAAEwgf,eAAe,oBAAoBvgf,EAAEy6J,0BAA0B,oBAAoBxxK,EAAEk7K,yBAAyB,oBAAoBl7K,EAAEovgB,2BAA2B,oBAAoBpvgB,EAAEs7K,qBAAqBvkK,EAAE/W,EAAEy/B,MACrf,oBAAoBz/B,EAAEs7K,oBAAoBt7K,EAAEs7K,qBAAqB,oBAAoBt7K,EAAEovgB,2BAA2BpvgB,EAAEovgB,4BAA4Br4f,IAAI/W,EAAEy/B,OAAO6ue,GAAGM,oBAAoB5ugB,EAAEA,EAAEy/B,MAAM,MAAMyue,GAAGp3f,EAAEnG,EAAE3Q,EAAEua,GAAGva,EAAEy/B,MAAM3oB,EAAEwgf,eAAe,oBAAoBt3f,EAAEuiC,oBAAoBzrB,EAAEk6J,OAAO,QAAS,CACrS,SAASq+V,GAAGv4f,EAAEC,EAAEpG,GAAW,GAAG,QAAXmG,EAAEnG,EAAE3I,MAAiB,oBAAoB8O,GAAG,kBAAkBA,EAAE,CAAC,GAAGnG,EAAEm5D,OAAO,CAAY,GAAXn5D,EAAEA,EAAEm5D,OAAY,CAAC,GAAG,IAAIn5D,EAAE3S,IAAI,MAAM1M,MAAMsD,EAAE,MAAM,IAAI2lB,EAAE5J,EAAEqlf,SAAU,KAAIz7e,EAAE,MAAMjpB,MAAMsD,EAAE,IAAIkiB,IAAI,IAAI9W,EAAEua,EAAEM,EAAE,GAAG/D,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE/O,KAAK,oBAAoB+O,EAAE/O,KAAK+O,EAAE/O,IAAIsngB,aAAaz0f,EAAS9D,EAAE/O,KAAI+O,EAAE,SAASD,GAAG,IAAIC,EAAE/W,EAAE6/B,KAAK9oB,IAAIq3f,KAAKr3f,EAAE/W,EAAE6/B,KAAK,CAAC,GAAG,OAAO/oB,SAASC,EAAE8D,GAAG9D,EAAE8D,GAAG/D,CAAE,EAACC,EAAEu4f,WAAWz0f,EAAS9D,EAAE,IAAG,kBAAkBD,EAAE,MAAMxlB,MAAMsD,EAAE,MAAM,IAAI+b,EAAEm5D,OAAO,MAAMx4E,MAAMsD,EAAE,IAAIkiB,GAAK,QAAOA,CAAE,CACte,SAASitD,GAAGjtD,EAAEC,GAAuC,MAApCD,EAAE/hB,OAAOgK,UAAU1K,SAASmB,KAAKuhB,GAASzlB,MAAMsD,EAAE,GAAG,oBAAoBkiB,EAAE,qBAAqB/hB,OAAOgB,KAAKghB,GAAGvT,KAAK,MAAM,IAAIsT,GAAK,UAASy4f,GAAGz4f,GAAiB,OAAOC,EAAfD,EAAEwjF,OAAexjF,EAAE27e,SAAU,CACtM,SAAS+c,GAAG14f,GAAG,SAASC,EAAEA,EAAEpG,GAAG,GAAGmG,EAAE,CAAC,IAAIyD,EAAExD,EAAE+zf,UAAU,OAAOvwf,GAAGxD,EAAE+zf,UAAU,CAACn6f,GAAGoG,EAAEi6J,OAAO,IAAIz2J,EAAEpjB,KAAKwZ,EAAG,CAAC,UAASA,EAAEA,EAAE4J,GAAG,IAAIzD,EAAE,OAAO,KAAK,KAAK,OAAOyD,GAAGxD,EAAEpG,EAAE4J,GAAGA,EAAEA,EAAEm9e,QAAQ,OAAO,IAAK,UAASn9e,EAAEzD,EAAEC,GAAG,IAAID,EAAE,IAAI7mB,IAAI,OAAO8mB,GAAG,OAAOA,EAAE1d,IAAIyd,EAAE5mB,IAAI6mB,EAAE1d,IAAI0d,GAAGD,EAAE5mB,IAAI6mB,EAAE7e,MAAM6e,GAAGA,EAAEA,EAAE2gf,QAAQ,OAAO5gf,CAAE,UAAS9W,EAAE8W,EAAEC,GAAsC,OAAnCD,EAAE24f,GAAG34f,EAAEC,IAAK7e,MAAM,EAAE4e,EAAE4gf,QAAQ,KAAY5gf,CAAE,UAAS+D,EAAE9D,EAAEpG,EAAE4J,GAAa,OAAVxD,EAAE7e,MAAMqiB,EAAMzD,EAA6C,QAAjByD,EAAExD,EAAEqgf,YAA6B78e,EAAEA,EAAEriB,OAAQyY,GAAGoG,EAAEi6J,OAAO,EAAErgK,GAAG4J,GAAExD,EAAEi6J,OAAO,EAASrgK,IAArGoG,EAAEi6J,OAAO,QAAQrgK,EAAsF,UAASmK,EAAE/D,GACzd,OAD4dD,GAC7f,OAAOC,EAAEqgf,YAAYrgf,EAAEi6J,OAAO,GAAUj6J,CAAE,UAAS/jB,EAAE8jB,EAAEC,EAAEpG,EAAE4J,GAAG,OAAG,OAAOxD,GAAG,IAAIA,EAAE/Y,MAAW+Y,EAAEs4F,GAAG1+F,EAAEmG,EAAEuH,KAAK9D,IAAKxY,OAAO+U,EAAEC,KAAEA,EAAE/W,EAAE+W,EAAEpG,IAAK5O,OAAO+U,EAASC,EAAE,UAAShc,EAAE+b,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIM,EAAElK,EAAEvU,KAAK,OAAGye,IAAIs2e,EAAUl9f,EAAE6iB,EAAEC,EAAEpG,EAAE9O,MAAMC,SAASyY,EAAE5J,EAAEtX,KAAQ,OAAO0d,IAAIA,EAAE2te,cAAc7pe,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEQ,WAAWu2e,GAAI2d,GAAG10f,KAAK9D,EAAE3a,QAAame,EAAEva,EAAE+W,EAAEpG,EAAE9O,QAASmG,IAAIqngB,GAAGv4f,EAAEC,EAAEpG,GAAG4J,EAAExY,OAAO+U,EAAEyD,KAAEA,EAAEm1f,GAAG/+f,EAAEvU,KAAKuU,EAAEtX,IAAIsX,EAAE9O,MAAM,KAAKiV,EAAEuH,KAAK9D,IAAKvS,IAAIqngB,GAAGv4f,EAAEC,EAAEpG,GAAG4J,EAAExY,OAAO+U,EAASyD,EAAE,UAASQ,EAAEjE,EAAEC,EAAEpG,EAAE4J,GAAG,OAAG,OAAOxD,GAAG,IAAIA,EAAE/Y,KACjf+Y,EAAEi/e,UAAUkG,gBAAgBvrf,EAAEurf,eAAenlf,EAAEi/e,UAAU2Z,iBAAiBh/f,EAAEg/f,iBAAsB54f,EAAE84F,GAAGl/F,EAAEmG,EAAEuH,KAAK9D,IAAKxY,OAAO+U,EAAEC,KAAEA,EAAE/W,EAAE+W,EAAEpG,EAAE7O,UAAU,KAAMC,OAAO+U,EAASC,EAAE,UAAS9iB,EAAE6iB,EAAEC,EAAEpG,EAAE4J,EAAEM,GAAG,OAAG,OAAO9D,GAAG,IAAIA,EAAE/Y,MAAW+Y,EAAE64f,GAAGj/f,EAAEmG,EAAEuH,KAAK9D,EAAEM,IAAK9Y,OAAO+U,EAAEC,KAAEA,EAAE/W,EAAE+W,EAAEpG,IAAK5O,OAAO+U,EAASC,EAAE,UAASkE,EAAEnE,EAAEC,EAAEpG,GAAG,GAAG,kBAAkBoG,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAEs4F,GAAG,GAAGt4F,EAAED,EAAEuH,KAAK1N,IAAK5O,OAAO+U,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEsE,UAAU,KAAK41e,EAAG,OAAOtgf,EAAE++f,GAAG34f,EAAE3a,KAAK2a,EAAE1d,IAAI0d,EAAElV,MAAM,KAAKiV,EAAEuH,KAAK1N,IACjf3I,IAAIqngB,GAAGv4f,EAAE,KAAKC,GAAGpG,EAAE5O,OAAO+U,EAAEnG,EAAE,KAAKugf,EAAG,OAAOn6e,EAAE84F,GAAG94F,EAAED,EAAEuH,KAAK1N,IAAK5O,OAAO+U,EAAEC,EAAE,KAAK66e,EAAiB,OAAO32e,EAAEnE,GAAEyD,EAAnBxD,EAAEujF,OAAmBvjF,EAAE07e,UAAU9hf,GAAG,GAAGijf,GAAG78e,IAAIg7e,EAAGh7e,GAAG,OAAOA,EAAE64f,GAAG74f,EAAED,EAAEuH,KAAK1N,EAAE,OAAQ5O,OAAO+U,EAAEC,EAAEgtD,GAAGjtD,EAAEC,EAAG,QAAO,IAAK,UAASqE,EAAEtE,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE,OAAO+W,EAAEA,EAAE1d,IAAI,KAAK,GAAG,kBAAkBsX,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAO3Q,EAAE,KAAKhN,EAAE8jB,EAAEC,EAAE,GAAGpG,EAAE4J,GAAG,GAAG,kBAAkB5J,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE0K,UAAU,KAAK41e,EAAG,OAAOtgf,EAAEtX,MAAM2G,EAAEjF,EAAE+b,EAAEC,EAAEpG,EAAE4J,GAAG,KAAK,KAAK22e,EAAG,OAAOvgf,EAAEtX,MAAM2G,EAAE+a,EAAEjE,EAAEC,EAAEpG,EAAE4J,GAAG,KAAK,KAAKq3e,EAAG,OAAiBx2e,EAAEtE,EACpfC,GADwe/W,EAAE2Q,EAAE2pF,OACxe3pF,EAAE8hf,UAAUl4e,GAAG,GAAGq5e,GAAGjjf,IAAIohf,EAAGphf,GAAG,OAAO,OAAO3Q,EAAE,KAAK/L,EAAE6iB,EAAEC,EAAEpG,EAAE4J,EAAE,MAAMwpD,GAAGjtD,EAAEnG,EAAG,QAAO,IAAK,UAAS5L,EAAE+R,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,GAAG,kBAAkBua,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwBvnB,EAAE+jB,EAAnBD,EAAEA,EAAEnmB,IAAIggB,IAAI,KAAW,GAAG4J,EAAEva,GAAG,GAAG,kBAAkBua,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEc,UAAU,KAAK41e,EAAG,OAA2Cl2f,EAAEgc,EAAtCD,EAAEA,EAAEnmB,IAAI,OAAO4pB,EAAElhB,IAAIsX,EAAE4J,EAAElhB,MAAM,KAAWkhB,EAAEva,GAAG,KAAKkxf,EAAG,OAA2Cn2e,EAAEhE,EAAtCD,EAAEA,EAAEnmB,IAAI,OAAO4pB,EAAElhB,IAAIsX,EAAE4J,EAAElhB,MAAM,KAAWkhB,EAAEva,GAAG,KAAK4xf,EAAiB,OAAO7sf,EAAE+R,EAAEC,EAAEpG,GAAEkK,EAAvBN,EAAE+/E,OAAuB//E,EAAEk4e,UAAUzyf,GAAG,GAAG4zf,GAAGr5e,IAAIw3e,EAAGx3e,GAAG,OAAwBtmB,EAAE8iB,EAAnBD,EAAEA,EAAEnmB,IAAIggB,IAAI,KAAW4J,EAAEva,EAAE,MAAM+jE,GAAGhtD,EAAEwD,EAAG,QAAO,IAAK,CAC/f,SAASS,EAAEhb,EAAE8a,EAAE9nB,EAAE+H,GAAG,IAAI,IAAIggB,EAAE,KAAK9mB,EAAE,KAAK0e,EAAEmI,EAAEg+F,EAAEh+F,EAAE,EAAEhW,EAAE,KAAK,OAAO6N,GAAGmmG,EAAE9lH,EAAE0E,OAAOohH,IAAI,CAACnmG,EAAEza,MAAM4gH,GAAGh0G,EAAE6N,EAAEA,EAAE,MAAM7N,EAAE6N,EAAE+kf,QAAQ,IAAI18e,EAAEI,EAAEpb,EAAE2S,EAAE3f,EAAE8lH,GAAG/9G,GAAG,GAAG,OAAOigB,EAAE,CAAC,OAAOrI,IAAIA,EAAE7N,GAAG,KAAM,CAAAgS,GAAGnE,GAAG,OAAOqI,EAAEo8e,WAAWrgf,EAAE/W,EAAE2S,GAAGmI,EAAED,EAAEG,EAAEF,EAAEg+F,GAAG,OAAO7kH,EAAE8mB,EAAEC,EAAE/mB,EAAEyjgB,QAAQ18e,EAAE/mB,EAAE+mB,EAAErI,EAAE7N,CAAE,IAAGg0G,IAAI9lH,EAAE0E,OAAO,OAAOiZ,EAAE3Q,EAAE2S,GAAG+3f,IAAGt8Z,GAAGpuG,EAAE84G,GAAG/9F,EAAE,GAAG,OAAOpI,EAAE,CAAC,KAAKmmG,EAAE9lH,EAAE0E,OAAOohH,IAAkB,QAAdnmG,EAAEsI,EAAEjb,EAAEhN,EAAE8lH,GAAG/9G,MAAc+f,EAAED,EAAElI,EAAEmI,EAAEg+F,GAAG,OAAO7kH,EAAE8mB,EAAEpI,EAAE1e,EAAEyjgB,QAAQ/kf,EAAE1e,EAAE0e,GAAc,OAAX+3f,IAAGt8Z,GAAGpuG,EAAE84G,GAAU/9F,CAAE,KAAIpI,EAAE4H,EAAEva,EAAE2S,GAAGmmG,EAAE9lH,EAAE0E,OAAOohH,IAAsB,QAAlBh0G,EAAEC,EAAE4N,EAAE3S,EAAE84G,EAAE9lH,EAAE8lH,GAAG/9G,MAAc+b,GAAG,OAAOhS,EAAEsyf,WAAWzkf,EAAE/V,OAAO,OACvfkI,EAAEzL,IAAIy/G,EAAEh0G,EAAEzL,KAAKyhB,EAAED,EAAE/V,EAAEgW,EAAEg+F,GAAG,OAAO7kH,EAAE8mB,EAAEjW,EAAE7Q,EAAEyjgB,QAAQ5yf,EAAE7Q,EAAE6Q,GAAuD,OAApDgS,GAAGnE,EAAElb,SAAQ,SAASqf,GAAG,OAAOC,EAAE/W,EAAE8W,EAAG,IAAE4zf,IAAGt8Z,GAAGpuG,EAAE84G,GAAU/9F,CAAE,UAASG,EAAElb,EAAE8a,EAAE9nB,EAAE+H,GAAG,IAAIggB,EAAEg3e,EAAG/+f,GAAG,GAAG,oBAAoB+nB,EAAE,MAAMzpB,MAAMsD,EAAE,MAAkB,GAAG,OAAf5B,EAAE+nB,EAAEvlB,KAAKxC,IAAc,MAAM1B,MAAMsD,EAAE,MAAM,IAAI,IAAI+d,EAAEoI,EAAE,KAAK9mB,EAAE6mB,EAAEg+F,EAAEh+F,EAAE,EAAEhW,EAAE,KAAKkW,EAAEhoB,EAAEkP,OAAO,OAAOjO,IAAI+mB,EAAE2qC,KAAKmzD,IAAI99F,EAAEhoB,EAAEkP,OAAO,CAACjO,EAAEiE,MAAM4gH,GAAGh0G,EAAE7Q,EAAEA,EAAE,MAAM6Q,EAAE7Q,EAAEyjgB,QAAQ,IAAIx8e,EAAEE,EAAEpb,EAAE/L,EAAE+mB,EAAE/lB,MAAM8F,GAAG,GAAG,OAAOmgB,EAAE,CAAC,OAAOjnB,IAAIA,EAAE6Q,GAAG,KAAM,CAAAgS,GAAG7iB,GAAG,OAAOinB,EAAEk8e,WAAWrgf,EAAE/W,EAAE/L,GAAG6mB,EAAED,EAAEK,EAAEJ,EAAEg+F,GAAG,OAAOnmG,EAAEoI,EAAEG,EAAEvI,EAAE+kf,QAAQx8e,EAAEvI,EAAEuI,EAAEjnB,EAAE6Q,CAAE,IAAGkW,EAAE2qC,KAAK,OAAOh1C,EAAE3Q,EACzf/L,GAAGy2gB,IAAGt8Z,GAAGpuG,EAAE84G,GAAG/9F,EAAE,GAAG,OAAO9mB,EAAE,CAAC,MAAM+mB,EAAE2qC,KAAKmzD,IAAI99F,EAAEhoB,EAAEkP,OAAwB,QAAjB8Y,EAAEC,EAAEjb,EAAEgb,EAAE/lB,MAAM8F,MAAc+f,EAAED,EAAEG,EAAEF,EAAEg+F,GAAG,OAAOnmG,EAAEoI,EAAEC,EAAErI,EAAE+kf,QAAQ18e,EAAErI,EAAEqI,GAAc,OAAX0vf,IAAGt8Z,GAAGpuG,EAAE84G,GAAU/9F,CAAE,KAAI9mB,EAAEsmB,EAAEva,EAAE/L,IAAI+mB,EAAE2qC,KAAKmzD,IAAI99F,EAAEhoB,EAAEkP,OAA4B,QAArB8Y,EAAEjW,EAAE9Q,EAAE+L,EAAE84G,EAAE99F,EAAE/lB,MAAM8F,MAAc+b,GAAG,OAAOkE,EAAEo8e,WAAWnjgB,EAAE2I,OAAO,OAAOoe,EAAE3hB,IAAIy/G,EAAE99F,EAAE3hB,KAAKyhB,EAAED,EAAEG,EAAEF,EAAEg+F,GAAG,OAAOnmG,EAAEoI,EAAEC,EAAErI,EAAE+kf,QAAQ18e,EAAErI,EAAEqI,GAAuD,OAApDlE,GAAG7iB,EAAEwD,SAAQ,SAASqf,GAAG,OAAOC,EAAE/W,EAAE8W,EAAG,IAAE4zf,IAAGt8Z,GAAGpuG,EAAE84G,GAAU/9F,CAAE,CAG5T,OAH4T,SAAS2rf,EAAE5vf,EAAEyD,EAAEM,EAAE7nB,GAAkF,GAA/E,kBAAkB6nB,GAAG,OAAOA,GAAGA,EAAEze,OAAO+0f,GAAI,OAAOt2e,EAAExhB,MAAMwhB,EAAEA,EAAEhZ,MAAMC,UAAa,kBAAkB+Y,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEQ,UAAU,KAAK41e,EAAGn6e,EAAE,CAAC,IAAI,IAAI/b,EAC7hB8f,EAAExhB,IAAI0hB,EAAER,EAAE,OAAOQ,GAAG,CAAC,GAAGA,EAAE1hB,MAAM0B,EAAE,CAAU,IAATA,EAAE8f,EAAEze,QAAY+0f,GAAI,GAAG,IAAIp2e,EAAE/c,IAAI,CAAC2S,EAAEmG,EAAEiE,EAAE28e,UAASn9e,EAAEva,EAAE+a,EAAEF,EAAEhZ,MAAMC,WAAYC,OAAO+U,EAAEA,EAAEyD,EAAE,MAAMzD,CAAE,OAAM,GAAGiE,EAAE2pe,cAAc3pf,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEsgB,WAAWu2e,GAAI2d,GAAGx0gB,KAAKggB,EAAE3e,KAAK,CAACuU,EAAEmG,EAAEiE,EAAE28e,UAASn9e,EAAEva,EAAE+a,EAAEF,EAAEhZ,QAASmG,IAAIqngB,GAAGv4f,EAAEiE,EAAEF,GAAGN,EAAExY,OAAO+U,EAAEA,EAAEyD,EAAE,MAAMzD,CAAE,CAAAnG,EAAEmG,EAAEiE,GAAG,KAAM,CAAKhE,EAAED,EAAEiE,GAAGA,EAAEA,EAAE28e,OAAQ,CAAA78e,EAAEze,OAAO+0f,IAAI52e,EAAEq1f,GAAG/0f,EAAEhZ,MAAMC,SAASgV,EAAEuH,KAAKrrB,EAAE6nB,EAAExhB,MAAO0I,OAAO+U,EAAEA,EAAEyD,KAAIvnB,EAAE08gB,GAAG70f,EAAEze,KAAKye,EAAExhB,IAAIwhB,EAAEhZ,MAAM,KAAKiV,EAAEuH,KAAKrrB,IAAKgV,IAAIqngB,GAAGv4f,EAAEyD,EAAEM,GAAG7nB,EAAE+O,OAAO+U,EAAEA,EAAE9jB,EAAG,QAAO8nB,EAAEhE,GAAG,KAAKo6e,EAAGp6e,EAAE,CAAC,IAAIiE,EAAEF,EAAExhB,IAAI,OACzfkhB,GAAG,CAAC,GAAGA,EAAElhB,MAAM0hB,EAAX,CAAa,GAAG,IAAIR,EAAEvc,KAAKuc,EAAEy7e,UAAUkG,gBAAgBrhf,EAAEqhf,eAAe3hf,EAAEy7e,UAAU2Z,iBAAiB90f,EAAE80f,eAAe,CAACh/f,EAAEmG,EAAEyD,EAAEm9e,UAASn9e,EAAEva,EAAEua,EAAEM,EAAE/Y,UAAU,KAAMC,OAAO+U,EAAEA,EAAEyD,EAAE,MAAMzD,CAAE,CAAKnG,EAAEmG,EAAEyD,GAAG,KAA/L,CAA0MxD,EAAED,EAAEyD,GAAGA,EAAEA,EAAEm9e,OAAQ,EAAAn9e,EAAEs1F,GAAGh1F,EAAE/D,EAAEuH,KAAKrrB,IAAK+O,OAAO+U,EAAEA,EAAEyD,CAAE,QAAOO,EAAEhE,GAAG,KAAK86e,EAAG,OAAiB8U,EAAE5vf,EAAEyD,GAAdQ,EAAEF,EAAEy/E,OAAcz/E,EAAE43e,UAAUz/f,GAAG,GAAG4ggB,GAAG/4e,GAAG,OAAOG,EAAElE,EAAEyD,EAAEM,EAAE7nB,GAAG,GAAG++f,EAAGl3e,GAAG,OAAOK,EAAEpE,EAAEyD,EAAEM,EAAE7nB,GAAG+wE,GAAGjtD,EAAE+D,EAAG,OAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAON,GAAG,IAAIA,EAAEvc,KAAK2S,EAAEmG,EAAEyD,EAAEm9e,UAASn9e,EAAEva,EAAEua,EAAEM,IAAK9Y,OAAO+U,EAAEA,EAAEyD,IACnf5J,EAAEmG,EAAEyD,IAAGA,EAAE80F,GAAGx0F,EAAE/D,EAAEuH,KAAKrrB,IAAK+O,OAAO+U,EAAEA,EAAEyD,GAAGO,EAAEhE,IAAInG,EAAEmG,EAAEyD,EAAG,CAAS,KAAIs1f,GAAGL,IAAG,GAAIM,GAAGN,IAAG,GAAIO,GAAG,CAAC,EAAEC,GAAGlH,GAAGiH,IAAIE,GAAGnH,GAAGiH,IAAIG,GAAGpH,GAAGiH,IAAI,SAASI,GAAGr5f,GAAG,GAAGA,IAAIi5f,GAAG,MAAMz+gB,MAAMsD,EAAE,MAAM,OAAOkiB,CAAE,UAASs5f,GAAGt5f,EAAEC,GAAyC,OAAtCgyf,GAAEmH,GAAGn5f,GAAGgyf,GAAEkH,GAAGn5f,GAAGiyf,GAAEiH,GAAGD,IAAIj5f,EAAEC,EAAE+1B,UAAmB,KAAK,EAAE,KAAK,GAAG/1B,GAAGA,EAAEA,EAAEkoC,iBAAiBloC,EAAEq9e,aAAazqZ,GAAG,KAAK,IAAI,MAAM,QAAkE5yF,EAAE4yF,GAArC5yF,GAAvBD,EAAE,IAAIA,EAAEC,EAAE5W,WAAW4W,GAAMq9e,cAAc,KAAKt9e,EAAEA,EAAE9G,SAAkBiuE,GAAE+xb,IAAIjH,GAAEiH,GAAGj5f,EAAG,UAASs5f,KAAKpyb,GAAE+xb,IAAI/xb,GAAEgyb,IAAIhyb,GAAEiyb,GAAI,CACpb,SAASI,GAAGx5f,GAAGq5f,GAAGD,GAAG1/f,SAAS,IAAIuG,EAAEo5f,GAAGH,GAAGx/f,SAAaG,EAAEg5F,GAAG5yF,EAAED,EAAE1a,MAAM2a,IAAIpG,IAAIo4f,GAAEkH,GAAGn5f,GAAGiyf,GAAEiH,GAAGr/f,GAAI,UAAS4/f,GAAGz5f,GAAGm5f,GAAGz/f,UAAUsG,IAAImnE,GAAE+xb,IAAI/xb,GAAEgyb,IAAK,KAAIvyb,GAAEorb,GAAG,GACrJ,SAAS0H,GAAG15f,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAE/Y,IAAI,CAAC,IAAI2S,EAAEoG,EAAEugf,cAAc,GAAG,OAAO3mf,IAAmB,QAAfA,EAAEA,EAAE4mf,aAAqB,OAAO5mf,EAAEtf,MAAM,OAAOsf,EAAEtf,MAAM,OAAO0lB,CAAE,MAAK,GAAG,KAAKA,EAAE/Y,UAAK,IAAS+Y,EAAEw0f,cAAckF,aAAa,GAAG,KAAa,IAAR15f,EAAEi6J,OAAW,OAAOj6J,OAAO,GAAG,OAAOA,EAAEqsB,MAAM,CAACrsB,EAAEqsB,MAAMrhC,OAAOgV,EAAEA,EAAEA,EAAEqsB,MAAM,QAAS,IAAGrsB,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE2gf,SAAS,CAAC,GAAG,OAAO3gf,EAAEhV,QAAQgV,EAAEhV,SAAS+U,EAAE,OAAO,KAAKC,EAAEA,EAAEhV,MAAO,CAAAgV,EAAE2gf,QAAQ31f,OAAOgV,EAAEhV,OAAOgV,EAAEA,EAAE2gf,OAAQ,QAAO,IAAK,KAAIgZ,GAAG,GACrc,SAASC,KAAK,IAAI,IAAI75f,EAAE,EAAEA,EAAE45f,GAAGh5gB,OAAOof,IAAI45f,GAAG55f,GAAG85f,8BAA8B,KAAKF,GAAGh5gB,OAAO,CAAE,KAAIm5gB,GAAG57f,EAAG67f,uBAAuBC,GAAG97f,EAAG0nf,wBAAwBqU,GAAG,EAAEC,GAAE,KAAKp0c,GAAE,KAAKq0c,GAAE,KAAKC,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASvzb,KAAI,MAAMzsF,MAAMsD,EAAE,KAAO,UAAS28gB,GAAGz6f,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIpG,EAAE,EAAEA,EAAEoG,EAAErf,QAAQiZ,EAAEmG,EAAEpf,OAAOiZ,IAAI,IAAI2yf,GAAGxsf,EAAEnG,GAAGoG,EAAEpG,IAAI,OAAM,EAAG,OAAM,CAAG,CACjW,SAAS6ggB,GAAG16f,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,GAAyH,GAAtHm2f,GAAGn2f,EAAEo2f,GAAEl6f,EAAEA,EAAEugf,cAAc,KAAKvgf,EAAEq2f,YAAY,KAAKr2f,EAAE01f,MAAM,EAAEoE,GAAGrggB,QAAQ,OAAOsG,GAAG,OAAOA,EAAEwgf,cAAcma,GAAGC,GAAG56f,EAAEnG,EAAE4J,EAAEva,GAAMoxgB,GAAG,CAACv2f,EAAE,EAAE,EAAE,CAAY,GAAXu2f,IAAG,EAAGC,GAAG,EAAK,IAAIx2f,EAAE,MAAMvpB,MAAMsD,EAAE,MAAMimB,GAAG,EAAEq2f,GAAEr0c,GAAE,KAAK9lD,EAAEq2f,YAAY,KAAKyD,GAAGrggB,QAAQmhgB,GAAG76f,EAAEnG,EAAE4J,EAAEva,EAAG,OAAMoxgB,GAAI,CAA8D,GAA9DP,GAAGrggB,QAAQohgB,GAAG76f,EAAE,OAAO8lD,IAAG,OAAOA,GAAE36D,KAAK8ugB,GAAG,EAAEE,GAAEr0c,GAAEo0c,GAAE,KAAKE,IAAG,EAAMp6f,EAAE,MAAMzlB,MAAMsD,EAAE,MAAM,OAAOkiB,CAAE,UAAS+6f,KAAK,IAAI/6f,EAAE,IAAIu6f,GAAQ,OAALA,GAAG,EAASv6f,CAAE,CAChZ,SAASg7f,KAAK,IAAIh7f,EAAE,CAACwgf,cAAc,KAAK+V,UAAU,KAAK0E,UAAU,KAAKhtd,MAAM,KAAK7iD,KAAK,MAA8C,OAAxC,OAAOgvgB,GAAED,GAAE3Z,cAAc4Z,GAAEp6f,EAAEo6f,GAAEA,GAAEhvgB,KAAK4U,EAASo6f,EAAE,UAASc,KAAK,GAAG,OAAOn1c,GAAE,CAAC,IAAI/lD,EAAEm6f,GAAE7Z,UAAUtgf,EAAE,OAAOA,EAAEA,EAAEwgf,cAAc,IAAK,MAAKxgf,EAAE+lD,GAAE36D,KAAK,IAAI6U,EAAE,OAAOm6f,GAAED,GAAE3Z,cAAc4Z,GAAEhvgB,KAAK,GAAG,OAAO6U,EAAEm6f,GAAEn6f,EAAE8lD,GAAE/lD,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMxlB,MAAMsD,EAAE,MAAUkiB,EAAE,CAACwgf,eAAPz6b,GAAE/lD,GAAqBwgf,cAAc+V,UAAUxwc,GAAEwwc,UAAU0E,UAAUl1c,GAAEk1c,UAAUhtd,MAAM8X,GAAE9X,MAAM7iD,KAAK,MAAM,OAAOgvgB,GAAED,GAAE3Z,cAAc4Z,GAAEp6f,EAAEo6f,GAAEA,GAAEhvgB,KAAK4U,CAAE,QAAOo6f,EAAE,CACle,SAASe,GAAGn7f,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,CAAE,CACpD,SAASuvF,GAAGxvF,GAAG,IAAIC,EAAEi7f,KAAKrhgB,EAAEoG,EAAEguC,MAAM,GAAG,OAAOp0C,EAAE,MAAMrf,MAAMsD,EAAE,MAAM+b,EAAEuhgB,oBAAoBp7f,EAAE,IAAIyD,EAAEsiD,GAAE78D,EAAEua,EAAEw3f,UAAUl3f,EAAElK,EAAE6qK,QAAQ,GAAG,OAAO3gK,EAAE,CAAC,GAAG,OAAO7a,EAAE,CAAC,IAAI8a,EAAE9a,EAAEkC,KAAKlC,EAAEkC,KAAK2Y,EAAE3Y,KAAK2Y,EAAE3Y,KAAK4Y,CAAE,CAAAP,EAAEw3f,UAAU/xgB,EAAE6a,EAAElK,EAAE6qK,QAAQ,IAAK,IAAG,OAAOx7K,EAAE,CAAC6a,EAAE7a,EAAEkC,KAAKqY,EAAEA,EAAE8yf,UAAU,IAAIr6gB,EAAE8nB,EAAE,KAAK/f,EAAE,KAAKggB,EAAEF,EAAE,EAAE,CAAC,IAAI5mB,EAAE8mB,EAAE6yf,KAAK,IAAIoD,GAAG/8gB,KAAKA,EAAE,OAAO8G,IAAIA,EAAEA,EAAEmH,KAAK,CAAC0rgB,KAAK,EAAEhxf,OAAO7B,EAAE6B,OAAOu1f,cAAcp3f,EAAEo3f,cAAcC,WAAWr3f,EAAEq3f,WAAWlwgB,KAAK,OAAOqY,EAAEQ,EAAEo3f,cAAcp3f,EAAEq3f,WAAWt7f,EAAEyD,EAAEQ,EAAE6B,YAAY,CAAC,IAAI3B,EAAE,CAAC2yf,KAAK35gB,EAAE2oB,OAAO7B,EAAE6B,OAAOu1f,cAAcp3f,EAAEo3f,cACngBC,WAAWr3f,EAAEq3f,WAAWlwgB,KAAK,MAAM,OAAOnH,GAAG/H,EAAE+H,EAAEkgB,EAAEH,EAAEP,GAAGxf,EAAEA,EAAEmH,KAAK+Y,EAAEg2f,GAAExE,OAAOx4gB,EAAE2te,IAAI3te,CAAE,CAAA8mB,EAAEA,EAAE7Y,IAAK,OAAM,OAAO6Y,GAAGA,IAAIF,GAAG,OAAO9f,EAAE+f,EAAEP,EAAExf,EAAEmH,KAAKlP,EAAEswgB,GAAG/of,EAAExD,EAAEugf,iBAAiBoV,IAAG,GAAI31f,EAAEugf,cAAc/8e,EAAExD,EAAEs2f,UAAUvyf,EAAE/D,EAAEg7f,UAAUh3gB,EAAE4V,EAAE0hgB,kBAAkB93f,CAAE,CAAgB,GAAG,QAAnBzD,EAAEnG,EAAEq8f,aAAwB,CAAChtgB,EAAE8W,EAAE,GAAG+D,EAAE7a,EAAE4tgB,KAAKqD,GAAExE,OAAO5xf,EAAE+md,IAAI/md,EAAE7a,EAAEA,EAAEkC,WAAWlC,IAAI8W,EAAG,MAAK,OAAO9W,IAAI2Q,EAAE87f,MAAM,GAAG,MAAM,CAAC11f,EAAEugf,cAAc3mf,EAAE2hgB,SAAU,CAC/X,SAASC,GAAGz7f,GAAG,IAAIC,EAAEi7f,KAAKrhgB,EAAEoG,EAAEguC,MAAM,GAAG,OAAOp0C,EAAE,MAAMrf,MAAMsD,EAAE,MAAM+b,EAAEuhgB,oBAAoBp7f,EAAE,IAAIyD,EAAE5J,EAAE2hgB,SAAStygB,EAAE2Q,EAAE6qK,QAAQ3gK,EAAE9D,EAAEugf,cAAc,GAAG,OAAOt3f,EAAE,CAAC2Q,EAAE6qK,QAAQ,KAAK,IAAI1gK,EAAE9a,EAAEA,EAAEkC,KAAK,GAAG2Y,EAAE/D,EAAE+D,EAAEC,EAAE8B,QAAQ9B,EAAEA,EAAE5Y,WAAW4Y,IAAI9a,GAAGsjgB,GAAGzof,EAAE9D,EAAEugf,iBAAiBoV,IAAG,GAAI31f,EAAEugf,cAAcz8e,EAAE,OAAO9D,EAAEg7f,YAAYh7f,EAAEs2f,UAAUxyf,GAAGlK,EAAE0hgB,kBAAkBx3f,CAAE,OAAM,CAACA,EAAEN,EAAG,UAAS+sF,KAAM,CACrW,SAASO,GAAG/wF,EAAEC,GAAG,IAAIpG,EAAEsggB,GAAE12f,EAAEy3f,KAAKhygB,EAAE+W,IAAI8D,GAAGyof,GAAG/of,EAAE+8e,cAAct3f,GAAsE,GAAnE6a,IAAIN,EAAE+8e,cAAct3f,EAAE0sgB,IAAG,GAAInyf,EAAEA,EAAEwqC,MAAMytd,GAAG9pa,GAAG70G,KAAK,KAAK8c,EAAE4J,EAAEzD,GAAG,CAACA,IAAOyD,EAAEk4f,cAAc17f,GAAG8D,GAAG,OAAOq2f,IAAuB,EAApBA,GAAE5Z,cAAct5f,IAAM,CAAuD,GAAtD2S,EAAEqgK,OAAO,KAAK0hW,GAAG,EAAE9na,GAAG/2G,KAAK,KAAK8c,EAAE4J,EAAEva,EAAE+W,QAAG,EAAO,MAAS,OAAO47f,GAAE,MAAMrhhB,MAAMsD,EAAE,MAAM,KAAQ,GAAHo8gB,KAAQ4B,GAAGjigB,EAAEoG,EAAE/W,EAAG,QAAOA,CAAE,UAAS4ygB,GAAG97f,EAAEC,EAAEpG,GAAGmG,EAAEk6J,OAAO,MAAMl6J,EAAE,CAAC27f,YAAY17f,EAAE9hB,MAAM0b,GAAmB,QAAhBoG,EAAEk6f,GAAE7D,cAAsBr2f,EAAE,CAAC87f,WAAW,KAAKC,OAAO,MAAM7B,GAAE7D,YAAYr2f,EAAEA,EAAE+7f,OAAO,CAACh8f,IAAgB,QAAXnG,EAAEoG,EAAE+7f,QAAgB/7f,EAAE+7f,OAAO,CAACh8f,GAAGnG,EAAExZ,KAAK2f,EAAI,CACnf,SAAS8zF,GAAG9zF,EAAEC,EAAEpG,EAAE4J,GAAGxD,EAAE9hB,MAAM0b,EAAEoG,EAAE07f,YAAYl4f,EAAEw4f,GAAGh8f,IAAIi8f,GAAGl8f,EAAG,UAAS4xF,GAAG5xF,EAAEC,EAAEpG,GAAG,OAAOA,GAAE,WAAWoigB,GAAGh8f,IAAIi8f,GAAGl8f,EAAG,GAAE,UAASi8f,GAAGj8f,GAAG,IAAIC,EAAED,EAAE27f,YAAY37f,EAAEA,EAAE7hB,MAAM,IAAI,IAAI0b,EAAEoG,IAAI,OAAOusf,GAAGxsf,EAAEnG,EAAqB,CAAlB,MAAM4J,GAAG,OAAM,CAAG,CAAC,UAASy4f,GAAGl8f,GAAG,IAAIC,EAAEk2f,GAAGn2f,EAAE,GAAG,OAAOC,GAAG43f,GAAG53f,EAAED,EAAE,GAAG,EAAG,CACnQ,SAASm8f,GAAGn8f,GAAG,IAAIC,EAAE+6f,KAA8M,MAAzM,oBAAoBh7f,IAAIA,EAAEA,KAAKC,EAAEugf,cAAcvgf,EAAEs2f,UAAUv2f,EAAEA,EAAE,CAAC0kK,QAAQ,KAAKwxV,YAAY,KAAKP,MAAM,EAAE6F,SAAS,KAAKJ,oBAAoBD,GAAGI,kBAAkBv7f,GAAGC,EAAEguC,MAAMjuC,EAAEA,EAAEA,EAAEw7f,SAASY,GAAGr/gB,KAAK,KAAKo9gB,GAAEn6f,GAAS,CAACC,EAAEugf,cAAcxgf,EAAG,CAC7P,SAAS47f,GAAG57f,EAAEC,EAAEpG,EAAE4J,GAA8O,OAA3OzD,EAAE,CAAC9Y,IAAI8Y,EAAEvP,OAAOwP,EAAE8tK,QAAQl0K,EAAEwigB,KAAK54f,EAAErY,KAAK,MAAsB,QAAhB6U,EAAEk6f,GAAE7D,cAAsBr2f,EAAE,CAAC87f,WAAW,KAAKC,OAAO,MAAM7B,GAAE7D,YAAYr2f,EAAEA,EAAE87f,WAAW/7f,EAAE5U,KAAK4U,GAAmB,QAAfnG,EAAEoG,EAAE87f,YAAoB97f,EAAE87f,WAAW/7f,EAAE5U,KAAK4U,GAAGyD,EAAE5J,EAAEzO,KAAKyO,EAAEzO,KAAK4U,EAAEA,EAAE5U,KAAKqY,EAAExD,EAAE87f,WAAW/7f,GAAWA,CAAE,UAASw2F,KAAK,OAAO0ka,KAAK1a,aAAc,UAASjpZ,GAAGv3F,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE8xgB,KAAKb,GAAEjgW,OAAOl6J,EAAE9W,EAAEs3f,cAAcob,GAAG,EAAE37f,EAAEpG,OAAE,OAAO,IAAS4J,EAAE,KAAKA,EAAG,CAC/Y,SAAS64f,GAAGt8f,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAEgygB,KAAKz3f,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIM,OAAE,EAAO,GAAG,OAAOgiD,GAAE,CAAC,IAAI/hD,EAAE+hD,GAAEy6b,cAA0B,GAAZz8e,EAAEC,EAAE+pK,QAAW,OAAOtqK,GAAGg3f,GAAGh3f,EAAEO,EAAEq4f,MAAmC,YAA5BnzgB,EAAEs3f,cAAcob,GAAG37f,EAAEpG,EAAEkK,EAAEN,GAAW,CAAA02f,GAAEjgW,OAAOl6J,EAAE9W,EAAEs3f,cAAcob,GAAG,EAAE37f,EAAEpG,EAAEkK,EAAEN,EAAG,UAAS00F,GAAGn4F,EAAEC,GAAG,OAAOs3F,GAAG,QAAQ,EAAEv3F,EAAEC,EAAG,UAASy7f,GAAG17f,EAAEC,GAAG,OAAOq8f,GAAG,KAAK,EAAEt8f,EAAEC,EAAG,UAASs8f,GAAGv8f,EAAEC,GAAG,OAAOq8f,GAAG,EAAE,EAAEt8f,EAAEC,EAAG,UAASu8f,GAAGx8f,EAAEC,GAAG,OAAOq8f,GAAG,EAAE,EAAEt8f,EAAEC,EAAG,CACjX,SAASy4F,GAAG14F,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAM,GAAI,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEvG,QAAQsG,EAAE,WAAWC,EAAEvG,QAAQ,IAAK,QAA3E,CAA4E,UAAS+igB,GAAGz8f,EAAEC,EAAEpG,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE3J,OAAO,CAAC8P,IAAI,KAAYs8f,GAAG,EAAE,EAAE5ja,GAAG37G,KAAK,KAAKkjB,EAAED,GAAGnG,EAAG,UAAS6igB,KAAM,UAASC,GAAG38f,EAAEC,GAAG,IAAIpG,EAAEqhgB,KAAKj7f,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIwD,EAAE5J,EAAE2mf,cAAc,OAAG,OAAO/8e,GAAG,OAAOxD,GAAGw6f,GAAGx6f,EAAEwD,EAAE,IAAWA,EAAE,IAAG5J,EAAE2mf,cAAc,CAACxgf,EAAEC,GAAUD,EAAE,CAC9Z,SAAS48f,GAAG58f,EAAEC,GAAG,IAAIpG,EAAEqhgB,KAAKj7f,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIwD,EAAE5J,EAAE2mf,cAAc,OAAG,OAAO/8e,GAAG,OAAOxD,GAAGw6f,GAAGx6f,EAAEwD,EAAE,IAAWA,EAAE,IAAGzD,EAAEA,IAAInG,EAAE2mf,cAAc,CAACxgf,EAAEC,GAAUD,EAAE,UAAS68f,GAAG78f,EAAEC,EAAEpG,GAAG,OAAG,KAAQ,GAAHqggB,KAAcl6f,EAAEu2f,YAAYv2f,EAAEu2f,WAAU,EAAGX,IAAG,GAAI51f,EAAEwgf,cAAc3mf,IAAE2yf,GAAG3yf,EAAEoG,KAAKpG,EAAEypf,KAAK6W,GAAExE,OAAO97f,EAAEixd,IAAIjxd,EAAEmG,EAAEu2f,WAAU,GAAWt2f,EAAE,UAAS68f,GAAG98f,EAAEC,GAAG,IAAIpG,EAAE8jP,GAAEA,GAAE,IAAI9jP,GAAG,EAAEA,EAAEA,EAAE,EAAEmG,GAAE,GAAI,IAAIyD,EAAEw2f,GAAGlpf,WAAWkpf,GAAGlpf,WAAW,CAAC,EAAE,IAAI/Q,GAAE,GAAIC,GAAgC,CAA1C,QAAsB09O,GAAE9jP,EAAEoggB,GAAGlpf,WAAWtN,CAAE,CAAC,UAASs5f,KAAK,OAAO7B,KAAK1a,aAAc,CAC3d,SAASwc,GAAGh9f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEm0f,GAAG53f,GAAkE,GAA/DnG,EAAE,CAACi9f,KAAKrzf,EAAEqC,OAAOjM,EAAEwhgB,eAAc,EAAGC,WAAW,KAAKlwgB,KAAK,MAAS6xgB,GAAGj9f,GAAGk9f,GAAGj9f,EAAEpG,QAAQ,GAAiB,QAAdA,EAAEo8f,GAAGj2f,EAAEC,EAAEpG,EAAE4J,IAAY,CAAWo0f,GAAGh+f,EAAEmG,EAAEyD,EAAXujE,MAAgBm2b,GAAGtjgB,EAAEoG,EAAEwD,EAAG,CAAC,CAChL,SAAS24f,GAAGp8f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEm0f,GAAG53f,GAAG9W,EAAE,CAAC4tgB,KAAKrzf,EAAEqC,OAAOjM,EAAEwhgB,eAAc,EAAGC,WAAW,KAAKlwgB,KAAK,MAAM,GAAG6xgB,GAAGj9f,GAAGk9f,GAAGj9f,EAAE/W,OAAO,CAAC,IAAI6a,EAAE/D,EAAEsgf,UAAU,GAAG,IAAItgf,EAAE21f,QAAQ,OAAO5xf,GAAG,IAAIA,EAAE4xf,QAAiC,QAAxB5xf,EAAE9D,EAAEm7f,qBAA8B,IAAI,IAAIp3f,EAAE/D,EAAEs7f,kBAAkBr/gB,EAAE6nB,EAAEC,EAAEnK,GAAqC,GAAlC3Q,EAAEmygB,eAAc,EAAGnygB,EAAEoygB,WAAWp/gB,EAAKswgB,GAAGtwgB,EAAE8nB,GAAG,CAAC,IAAI/f,EAAEgc,EAAEi2f,YAA+E,OAAnE,OAAOjygB,GAAGiF,EAAEkC,KAAKlC,EAAE8sgB,GAAG/1f,KAAK/W,EAAEkC,KAAKnH,EAAEmH,KAAKnH,EAAEmH,KAAKlC,QAAG+W,EAAEi2f,YAAYhtgB,EAAS,CAAoB,CAAnB,MAAM+a,GAAI,CAAuB,QAAdpK,EAAEo8f,GAAGj2f,EAAEC,EAAE/W,EAAEua,MAAoBo0f,GAAGh+f,EAAEmG,EAAEyD,EAAbva,EAAE89E,MAAgBm2b,GAAGtjgB,EAAEoG,EAAEwD,GAAI,CAAC,CAChd,SAASw5f,GAAGj9f,GAAG,IAAIC,EAAED,EAAEsgf,UAAU,OAAOtgf,IAAIm6f,IAAG,OAAOl6f,GAAGA,IAAIk6f,EAAE,UAAS+C,GAAGl9f,EAAEC,GAAGq6f,GAAGD,IAAG,EAAG,IAAIxggB,EAAEmG,EAAE0kK,QAAQ,OAAO7qK,EAAEoG,EAAE7U,KAAK6U,GAAGA,EAAE7U,KAAKyO,EAAEzO,KAAKyO,EAAEzO,KAAK6U,GAAGD,EAAE0kK,QAAQzkK,CAAE,UAASk9f,GAAGn9f,EAAEC,EAAEpG,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAI4J,EAAExD,EAAE01f,MAAwB97f,GAAlB4J,GAAGzD,EAAE+if,aAAkB9if,EAAE01f,MAAM97f,EAAE6pf,GAAG1jf,EAAEnG,EAAG,CAAC,CAC/P,IAAIihgB,GAAG,CAACsC,YAAYvH,GAAGwH,YAAYp2b,GAAE91E,WAAW81E,GAAEq2b,UAAUr2b,GAAEs2b,oBAAoBt2b,GAAE9tE,mBAAmB8tE,GAAE3tE,gBAAgB2tE,GAAEu2b,QAAQv2b,GAAEw2b,WAAWx2b,GAAEy2b,OAAOz2b,GAAE02b,SAAS12b,GAAE22b,cAAc32b,GAAE42b,iBAAiB52b,GAAE62b,cAAc72b,GAAE82b,iBAAiB92b,GAAE+2b,qBAAqB/2b,GAAExzD,MAAMwzD,GAAEg3b,0BAAyB,GAAItD,GAAG,CAACyC,YAAYvH,GAAGwH,YAAY,SAASr9f,EAAEC,GAA4C,OAAzC+6f,KAAKxa,cAAc,CAACxgf,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAE,EAAC7O,WAAW0kgB,GAAGyH,UAAUnla,GAAGola,oBAAoB,SAASv9f,EAAEC,EAAEpG,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE3J,OAAO,CAAC8P,IAAI,KAAYu3F,GAAG,QAC3f,EAAEmB,GAAG37G,KAAK,KAAKkjB,EAAED,GAAGnG,EAAG,EAACP,gBAAgB,SAAS0G,EAAEC,GAAG,OAAOs3F,GAAG,QAAQ,EAAEv3F,EAAEC,EAAG,EAAC9G,mBAAmB,SAAS6G,EAAEC,GAAG,OAAOs3F,GAAG,EAAE,EAAEv3F,EAAEC,EAAG,EAACu9f,QAAQ,SAASx9f,EAAEC,GAAG,IAAIpG,EAAEmhgB,KAAqD,OAAhD/6f,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAInG,EAAE2mf,cAAc,CAACxgf,EAAEC,GAAUD,CAAE,EAACy9f,WAAW,SAASz9f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEu3f,KAAkM,OAA7L/6f,OAAE,IAASpG,EAAEA,EAAEoG,GAAGA,EAAEwD,EAAE+8e,cAAc/8e,EAAE8yf,UAAUt2f,EAAED,EAAE,CAAC0kK,QAAQ,KAAKwxV,YAAY,KAAKP,MAAM,EAAE6F,SAAS,KAAKJ,oBAAoBp7f,EAAEu7f,kBAAkBt7f,GAAGwD,EAAEwqC,MAAMjuC,EAAEA,EAAEA,EAAEw7f,SAASwB,GAAGjghB,KAAK,KAAKo9gB,GAAEn6f,GAAS,CAACyD,EAAE+8e,cAAcxgf,EAAG,EAAC09f,OAAO,SAAS19f,GAC3d,OAAdA,EAAE,CAACtG,QAAQsG,GAAhBg7f,KAA4Bxa,cAAcxgf,CAAE,EAAC29f,SAASxB,GAAGyB,cAAclB,GAAGmB,iBAAiB,SAAS79f,GAAG,OAAOg7f,KAAKxa,cAAcxgf,CAAE,EAAC89f,cAAc,WAAW,IAAI99f,EAAEm8f,IAAG,GAAIl8f,EAAED,EAAE,GAA6C,OAA1CA,EAAE88f,GAAG//gB,KAAK,KAAKijB,EAAE,IAAIg7f,KAAKxa,cAAcxgf,EAAQ,CAACC,EAAED,EAAG,EAAC+9f,iBAAiB,WAAY,EAACC,qBAAqB,SAASh+f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAE02f,GAAEjxgB,EAAE8xgB,KAAK,GAAGpH,GAAE,CAAC,QAAG,IAAS/5f,EAAE,MAAMrf,MAAMsD,EAAE,MAAM+b,EAAEA,GAAI,KAAI,CAAO,GAANA,EAAEoG,IAAO,OAAO47f,GAAE,MAAMrhhB,MAAMsD,EAAE,MAAM,KAAQ,GAAHo8gB,KAAQ4B,GAAGr4f,EAAExD,EAAEpG,EAAG,CAAA3Q,EAAEs3f,cAAc3mf,EAAE,IAAIkK,EAAE,CAAC5lB,MAAM0b,EAAE8hgB,YAAY17f,GACvZ,OAD0Z/W,EAAE+kD,MAAMlqC,EAAEo0F,GAAGvG,GAAG70G,KAAK,KAAK0mB,EACpfM,EAAE/D,GAAG,CAACA,IAAIyD,EAAEy2J,OAAO,KAAK0hW,GAAG,EAAE9na,GAAG/2G,KAAK,KAAK0mB,EAAEM,EAAElK,EAAEoG,QAAG,EAAO,MAAapG,CAAE,EAAC4Z,MAAM,WAAW,IAAIzT,EAAEg7f,KAAK/6f,EAAE47f,GAAEqC,iBAAiB,GAAGtK,GAAE,CAAC,IAAI/5f,EAAEy8F,GAAkDr2F,EAAE,IAAIA,EAAE,KAA9CpG,GAAH05f,KAAU,GAAG,GAAGhR,GAAhBgR,IAAsB,IAAIh2gB,SAAS,IAAIsc,GAAuB,GAAPA,EAAE0ggB,QAAWt6f,GAAG,IAAIpG,EAAEtc,SAAS,KAAK0iB,GAAG,GAAI,MAAYA,EAAE,IAAIA,EAAE,KAAfpG,EAAE2ggB,MAAmBj9gB,SAAS,IAAI,IAAI,OAAOyiB,EAAEwgf,cAAcvgf,CAAE,EAACg+f,0BAAyB,GAAIrD,GAAG,CAACwC,YAAYvH,GAAGwH,YAAYV,GAAGxrgB,WAAW0kgB,GAAGyH,UAAU5B,GAAG6B,oBAAoBd,GAAGtjgB,mBAAmBojgB,GAAGjjgB,gBAAgBkjgB,GAAGgB,QAAQZ,GAAGa,WAAWjua,GAAGkua,OAAOlna,GAAGmna,SAAS,WAAW,OAAOnua,GAAG2ra,GAAI,EACthByC,cAAclB,GAAGmB,iBAAiB,SAAS79f,GAAc,OAAO68f,GAAZ3B,KAAiBn1c,GAAEy6b,cAAcxgf,EAAG,EAAC89f,cAAc,WAAgD,MAAM,CAArCtua,GAAG2ra,IAAI,GAAKD,KAAK1a,cAA0B,EAACud,iBAAiBvta,GAAGwta,qBAAqBjta,GAAGt9E,MAAMspf,GAAGkB,0BAAyB,GAAIpD,GAAG,CAACuC,YAAYvH,GAAGwH,YAAYV,GAAGxrgB,WAAW0kgB,GAAGyH,UAAU5B,GAAG6B,oBAAoBd,GAAGtjgB,mBAAmBojgB,GAAGjjgB,gBAAgBkjgB,GAAGgB,QAAQZ,GAAGa,WAAWhC,GAAGiC,OAAOlna,GAAGmna,SAAS,WAAW,OAAOlC,GAAGN,GAAI,EAACyC,cAAclB,GAAGmB,iBAAiB,SAAS79f,GAAG,IAAIC,EAAEi7f,KAAK,OAAO,OACzfn1c,GAAE9lD,EAAEugf,cAAcxgf,EAAE68f,GAAG58f,EAAE8lD,GAAEy6b,cAAcxgf,EAAG,EAAC89f,cAAc,WAAgD,MAAM,CAArCrC,GAAGN,IAAI,GAAKD,KAAK1a,cAA0B,EAACud,iBAAiBvta,GAAGwta,qBAAqBjta,GAAGt9E,MAAMspf,GAAGkB,0BAAyB,GAAI,SAASE,GAAGn+f,EAAEC,GAAG,IAAI,IAAIpG,EAAE,GAAG4J,EAAExD,EAAE,GAAGpG,GAAG4hf,EAAGh4e,GAAGA,EAAEA,EAAExY,aAAawY,GAAG,IAAIva,EAAE2Q,CAAiE,CAA/D,MAAMkK,GAAG7a,EAAE,6BAA6B6a,EAAE1pB,QAAQ,KAAK0pB,EAAE+oX,KAAM,OAAM,CAAC3uY,MAAM6hB,EAAEwnB,OAAOvnB,EAAE6sX,MAAM5jY,EAAEk1gB,OAAO,KAAM,UAASC,GAAGr+f,EAAEC,EAAEpG,GAAG,MAAM,CAAC1b,MAAM6hB,EAAEwnB,OAAO,KAAKslW,MAAM,MAAMjzX,EAAEA,EAAE,KAAKukgB,OAAO,MAAMn+f,EAAEA,EAAE,KAAM,CAC1d,SAASq+f,GAAGt+f,EAAEC,GAAG,IAAI3jB,QAAQgD,MAAM2gB,EAAE9hB,MAAiD,CAA1C,MAAM0b,GAAG2b,YAAW,WAAW,MAAM3b,CAAG,GAAE,CAAC,KAAI0kgB,GAAG,oBAAoB/vgB,QAAQA,QAAQrV,IAAI,SAASqlhB,GAAGx+f,EAAEC,EAAEpG,IAAGA,EAAE+8f,IAAI,EAAE/8f,IAAK3S,IAAI,EAAE2S,EAAEk9f,QAAQ,CAACtqgB,QAAQ,MAAM,IAAIgX,EAAExD,EAAE9hB,MAAsD,OAAhD0b,EAAErc,SAAS,WAAWihhB,KAAKA,IAAG,EAAGC,GAAGj7f,GAAG66f,GAAGt+f,EAAEC,EAAG,EAAQpG,CAAE,CAC5Q,SAAS8kgB,GAAG3+f,EAAEC,EAAEpG,IAAGA,EAAE+8f,IAAI,EAAE/8f,IAAK3S,IAAI,EAAE,IAAIuc,EAAEzD,EAAE1a,KAAKomc,yBAAyB,GAAG,oBAAoBjob,EAAE,CAAC,IAAIva,EAAE+W,EAAE9hB,MAAM0b,EAAEk9f,QAAQ,WAAW,OAAOtzf,EAAEva,EAAG,EAAC2Q,EAAErc,SAAS,WAAW8ghB,GAAGt+f,EAAEC,EAAG,CAAC,KAAI8D,EAAE/D,EAAEk/e,UAA8O,OAApO,OAAOn7e,GAAG,oBAAoBA,EAAE66f,oBAAoB/kgB,EAAErc,SAAS,WAAW8ghB,GAAGt+f,EAAEC,GAAG,oBAAoBwD,IAAI,OAAOo7f,GAAGA,GAAG,IAAI7/gB,IAAI,CAACiB,OAAO4+gB,GAAG7we,IAAI/tC,OAAO,IAAI4Z,EAAEoG,EAAE6sX,MAAM7sY,KAAK2+gB,kBAAkB3+f,EAAE9hB,MAAM,CAAC2ghB,eAAe,OAAOjlgB,EAAEA,EAAE,IAAK,GAASA,CAAE,CACpb,SAASklgB,GAAG/+f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAEg/f,UAAU,GAAG,OAAOv7f,EAAE,CAACA,EAAEzD,EAAEg/f,UAAU,IAAIT,GAAG,IAAIr1gB,EAAE,IAAIlK,IAAIykB,EAAErqB,IAAI6mB,EAAE/W,EAAG,WAAgB,KAAXA,EAAEua,EAAE5pB,IAAIomB,MAAgB/W,EAAE,IAAIlK,IAAIykB,EAAErqB,IAAI6mB,EAAE/W,IAAIA,EAAEtP,IAAIigB,KAAK3Q,EAAE8kC,IAAIn0B,GAAGmG,EAAEi/f,GAAGlihB,KAAK,KAAKijB,EAAEC,EAAEpG,GAAGoG,EAAEliB,KAAKiiB,EAAEA,GAAI,UAASk/f,GAAGl/f,GAAG,EAAE,CAAC,IAAIC,EAA4E,IAAvEA,EAAE,KAAKD,EAAE9Y,OAAsB+Y,EAAE,QAApBA,EAAED,EAAEwgf,gBAAyB,OAAOvgf,EAAEwgf,YAAuBxgf,EAAE,OAAOD,EAAEA,EAAEA,EAAE/U,MAAO,OAAM,OAAO+U,GAAG,OAAO,IAAK,CACjW,SAASm/f,GAAGn/f,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,OAAG,KAAY,EAAP8W,EAAEuH,OAAevH,IAAIC,EAAED,EAAEk6J,OAAO,OAAOl6J,EAAEk6J,OAAO,IAAIrgK,EAAEqgK,OAAO,OAAOrgK,EAAEqgK,QAAQ,MAAM,IAAIrgK,EAAE3S,MAAM,OAAO2S,EAAEymf,UAAUzmf,EAAE3S,IAAI,KAAI+Y,EAAE22f,IAAI,EAAE,IAAK1vgB,IAAI,EAAE8vgB,GAAGn9f,EAAEoG,EAAE,KAAKpG,EAAE87f,OAAO,GAAG31f,IAAEA,EAAEk6J,OAAO,MAAMl6J,EAAE21f,MAAMzsgB,EAAS8W,EAAE,KAAIo/f,GAAGjhgB,EAAGkhgB,kBAAkBzJ,IAAG,EAAG,SAAS0J,GAAGt/f,EAAEC,EAAEpG,EAAE4J,GAAGxD,EAAEqsB,MAAM,OAAOtsB,EAAEg5f,GAAG/4f,EAAE,KAAKpG,EAAE4J,GAAGs1f,GAAG94f,EAAED,EAAEssB,MAAMzyB,EAAE4J,EAAG,CACpV,SAAS87f,GAAGv/f,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG2Q,EAAEA,EAAE00B,OAAO,IAAIxqB,EAAE9D,EAAE/O,IAAqC,OAAjCskgB,GAAGv1f,EAAE/W,GAAGua,EAAEi3f,GAAG16f,EAAEC,EAAEpG,EAAE4J,EAAEM,EAAE7a,GAAG2Q,EAAEkhgB,KAAQ,OAAO/6f,GAAI41f,IAA2EhC,IAAG/5f,GAAG25f,GAAGvzf,GAAGA,EAAEi6J,OAAO,EAAEolW,GAAGt/f,EAAEC,EAAEwD,EAAEva,GAAU+W,EAAEqsB,QAA7GrsB,EAAEq2f,YAAYt2f,EAAEs2f,YAAYr2f,EAAEi6J,QAAQ,KAAKl6J,EAAE21f,QAAQzsgB,EAAEs2gB,GAAGx/f,EAAEC,EAAE/W,GAAqD,CAC1N,SAASu2gB,GAAGz/f,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,GAAG,OAAO8W,EAAE,CAAC,IAAI+D,EAAElK,EAAEvU,KAAK,MAAG,oBAAoBye,GAAI27f,GAAG37f,SAAI,IAASA,EAAEnL,cAAc,OAAOiB,EAAE81B,cAAS,IAAS91B,EAAEjB,eAAoDoH,EAAE44f,GAAG/+f,EAAEvU,KAAK,KAAKme,EAAExD,EAAEA,EAAEsH,KAAKre,IAAKgI,IAAI+O,EAAE/O,IAAI8O,EAAE/U,OAAOgV,EAASA,EAAEqsB,MAAMtsB,IAArGC,EAAE/Y,IAAI,GAAG+Y,EAAE3a,KAAKye,EAAE47f,GAAG3/f,EAAEC,EAAE8D,EAAEN,EAAEva,GAA0E,CAAU,GAAV6a,EAAE/D,EAAEssB,MAAS,KAAKtsB,EAAE21f,MAAMzsgB,GAAG,CAAC,IAAI8a,EAAED,EAAE0wf,cAA0C,IAAhB56f,EAAE,QAAdA,EAAEA,EAAE81B,SAAmB91B,EAAEw3e,IAAQrte,EAAEP,IAAIzD,EAAE9O,MAAM+O,EAAE/O,IAAI,OAAOsugB,GAAGx/f,EAAEC,EAAE/W,EAAG,CAA4C,OAA5C+W,EAAEi6J,OAAO,GAAEl6J,EAAE24f,GAAG50f,EAAEN,IAAKvS,IAAI+O,EAAE/O,IAAI8O,EAAE/U,OAAOgV,EAASA,EAAEqsB,MAAMtsB,CAAE,CAC3b,SAAS2/f,GAAG3/f,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,GAAG,OAAO8W,EAAE,CAAC,IAAI+D,EAAE/D,EAAEy0f,cAAc,GAAGpjB,GAAGtte,EAAEN,IAAIzD,EAAE9O,MAAM+O,EAAE/O,IAAI,IAAG0kgB,IAAG,EAAG31f,EAAEi0f,aAAazwf,EAAEM,EAAE,KAAK/D,EAAE21f,MAAMzsgB,GAAsC,OAAO+W,EAAE01f,MAAM31f,EAAE21f,MAAM6J,GAAGx/f,EAAEC,EAAE/W,GAAjE,KAAa,OAAR8W,EAAEk6J,SAAgB07V,IAAG,EAAS,CAAiC,QAAOgK,GAAG5/f,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAG,CACzN,SAAS22gB,GAAG7/f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAExD,EAAEi0f,aAAahrgB,EAAEua,EAAEzY,SAAS+Y,EAAE,OAAO/D,EAAEA,EAAEwgf,cAAc,KAAK,GAAG,WAAW/8e,EAAE8D,KAAK,GAAG,KAAY,EAAPtH,EAAEsH,MAAQtH,EAAEugf,cAAc,CAACsf,UAAU,EAAEC,UAAU,KAAKjyf,YAAY,MAAMmkf,GAAE+N,GAAGC,IAAIA,IAAIpmgB,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOmG,EAAE,OAAO+D,EAAEA,EAAE+7f,UAAUjmgB,EAAEA,EAAEoG,EAAE01f,MAAM11f,EAAEs1f,WAAW,WAAWt1f,EAAEugf,cAAc,CAACsf,UAAU9/f,EAAE+/f,UAAU,KAAKjyf,YAAY,MAAM7N,EAAEq2f,YAAY,KAAKrE,GAAE+N,GAAGC,IAAIA,IAAIjggB,EAAE,KAAKC,EAAEugf,cAAc,CAACsf,UAAU,EAAEC,UAAU,KAAKjyf,YAAY,MAAMrK,EAAE,OAAOM,EAAEA,EAAE+7f,UAAUjmgB,EAAEo4f,GAAE+N,GAAGC,IAAIA,IAAIx8f,CAAE,MAAK,OACtfM,GAAGN,EAAEM,EAAE+7f,UAAUjmgB,EAAEoG,EAAEugf,cAAc,MAAM/8e,EAAE5J,EAAEo4f,GAAE+N,GAAGC,IAAIA,IAAIx8f,EAAc,OAAZ67f,GAAGt/f,EAAEC,EAAE/W,EAAE2Q,GAAUoG,EAAEqsB,KAAM,UAAS4ze,GAAGlggB,EAAEC,GAAG,IAAIpG,EAAEoG,EAAE/O,KAAO,OAAO8O,GAAG,OAAOnG,GAAG,OAAOmG,GAAGA,EAAE9O,MAAM2I,KAAEoG,EAAEi6J,OAAO,IAAIj6J,EAAEi6J,OAAO,QAAQ,UAAS0lW,GAAG5/f,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,IAAI6a,EAAEyuf,GAAG34f,GAAGu4f,GAAG7qb,GAAE7tE,QAAmD,OAA3CqK,EAAEsuf,GAAGpyf,EAAE8D,GAAGyxf,GAAGv1f,EAAE/W,GAAG2Q,EAAE6ggB,GAAG16f,EAAEC,EAAEpG,EAAE4J,EAAEM,EAAE7a,GAAGua,EAAEs3f,KAAQ,OAAO/6f,GAAI41f,IAA2EhC,IAAGnwf,GAAG+vf,GAAGvzf,GAAGA,EAAEi6J,OAAO,EAAEolW,GAAGt/f,EAAEC,EAAEpG,EAAE3Q,GAAU+W,EAAEqsB,QAA7GrsB,EAAEq2f,YAAYt2f,EAAEs2f,YAAYr2f,EAAEi6J,QAAQ,KAAKl6J,EAAE21f,QAAQzsgB,EAAEs2gB,GAAGx/f,EAAEC,EAAE/W,GAAqD,CACna,SAASi3gB,GAAGnggB,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,GAAGspgB,GAAG34f,GAAG,CAAC,IAAIkK,GAAE,EAAG4uf,GAAG1yf,EAAG,MAAK8D,GAAE,EAAW,GAARyxf,GAAGv1f,EAAE/W,GAAM,OAAO+W,EAAEi/e,UAAUkhB,GAAGpggB,EAAEC,GAAGi4f,GAAGj4f,EAAEpG,EAAE4J,GAAG40f,GAAGp4f,EAAEpG,EAAE4J,EAAEva,GAAGua,GAAE,OAAQ,GAAG,OAAOzD,EAAE,CAAC,IAAIgE,EAAE/D,EAAEi/e,UAAUhjgB,EAAE+jB,EAAEw0f,cAAczwf,EAAEjZ,MAAM7O,EAAE,IAAI+H,EAAE+f,EAAEoiC,QAAQniC,EAAEpK,EAAE0xb,YAAY,kBAAkBtnb,GAAG,OAAOA,EAAEA,EAAE4xf,GAAG5xf,GAAyBA,EAAEouf,GAAGpyf,EAA1BgE,EAAEuuf,GAAG34f,GAAGu4f,GAAG7qb,GAAE7tE,SAAmB,IAAIvc,EAAE0c,EAAE6gK,yBAAyBv2J,EAAE,oBAAoBhnB,GAAG,oBAAoB6mB,EAAEogK,wBAAwBjgK,GAAG,oBAAoBH,EAAEo0f,kCAAkC,oBAAoBp0f,EAAEgjK,4BAC1d9qL,IAAIunB,GAAGxf,IAAIggB,IAAIk0f,GAAGl4f,EAAE+D,EAAEP,EAAEQ,GAAGmyf,IAAG,EAAG,IAAI9xf,EAAErE,EAAEugf,cAAcx8e,EAAE2kB,MAAMrkB,EAAE8yf,GAAGn3f,EAAEwD,EAAEO,EAAE9a,GAAGjF,EAAEgc,EAAEugf,cAActkgB,IAAIunB,GAAGa,IAAIrgB,GAAGkugB,GAAGz4f,SAAS08f,IAAI,oBAAoBj5gB,IAAIo6gB,GAAGt3f,EAAEpG,EAAE1c,EAAEsmB,GAAGxf,EAAEgc,EAAEugf,gBAAgBtkgB,EAAEk6gB,IAAI4B,GAAG/3f,EAAEpG,EAAE3d,EAAEunB,EAAEa,EAAErgB,EAAEggB,KAAKE,GAAG,oBAAoBH,EAAEs0f,2BAA2B,oBAAoBt0f,EAAEwgK,qBAAqB,oBAAoBxgK,EAAEwgK,oBAAoBxgK,EAAEwgK,qBAAqB,oBAAoBxgK,EAAEs0f,2BAA2Bt0f,EAAEs0f,6BAA6B,oBAAoBt0f,EAAEynB,oBAAoBxrB,EAAEi6J,OAAO,WAClf,oBAAoBl2J,EAAEynB,oBAAoBxrB,EAAEi6J,OAAO,SAASj6J,EAAEw0f,cAAchxf,EAAExD,EAAEugf,cAAcv8f,GAAG+f,EAAEjZ,MAAM0Y,EAAEO,EAAE2kB,MAAM1kC,EAAE+f,EAAEoiC,QAAQniC,EAAER,EAAEvnB,IAAI,oBAAoB8nB,EAAEynB,oBAAoBxrB,EAAEi6J,OAAO,SAASz2J,GAAE,EAAI,KAAI,CAACO,EAAE/D,EAAEi/e,UAAUyX,GAAG32f,EAAEC,GAAG/jB,EAAE+jB,EAAEw0f,cAAcxwf,EAAEhE,EAAE3a,OAAO2a,EAAE2te,YAAY1xf,EAAE44gB,GAAG70f,EAAE3a,KAAKpJ,GAAG8nB,EAAEjZ,MAAMkZ,EAAEE,EAAElE,EAAEi0f,aAAa5vf,EAAEN,EAAEoiC,QAAwB,kBAAhBniD,EAAE4V,EAAE0xb,cAAiC,OAAOtnc,EAAEA,EAAE4xgB,GAAG5xgB,GAAyBA,EAAEougB,GAAGpyf,EAA1Bhc,EAAEuugB,GAAG34f,GAAGu4f,GAAG7qb,GAAE7tE,SAAmB,IAAIzL,EAAE4L,EAAE6gK,0BAA0Bv9K,EAAE,oBAAoB8Q,GAAG,oBAAoB+V,EAAEogK,0BAC9e,oBAAoBpgK,EAAEo0f,kCAAkC,oBAAoBp0f,EAAEgjK,4BAA4B9qL,IAAIioB,GAAGG,IAAIrgB,IAAIk0gB,GAAGl4f,EAAE+D,EAAEP,EAAExf,GAAGmygB,IAAG,EAAG9xf,EAAErE,EAAEugf,cAAcx8e,EAAE2kB,MAAMrkB,EAAE8yf,GAAGn3f,EAAEwD,EAAEO,EAAE9a,GAAG,IAAIgb,EAAEjE,EAAEugf,cAActkgB,IAAIioB,GAAGG,IAAIJ,GAAGiuf,GAAGz4f,SAAS08f,IAAI,oBAAoBnogB,IAAIspgB,GAAGt3f,EAAEpG,EAAE5L,EAAEwV,GAAGS,EAAEjE,EAAEugf,gBAAgBv8e,EAAEmyf,IAAI4B,GAAG/3f,EAAEpG,EAAEoK,EAAER,EAAEa,EAAEJ,EAAEjgB,KAAI,IAAK9G,GAAG,oBAAoB6mB,EAAEq8f,4BAA4B,oBAAoBr8f,EAAE2mK,sBAAsB,oBAAoB3mK,EAAE2mK,qBAAqB3mK,EAAE2mK,oBAAoBlnK,EAAES,EAAEjgB,GAAG,oBAAoB+f,EAAEq8f,4BAC5fr8f,EAAEq8f,2BAA2B58f,EAAES,EAAEjgB,IAAI,oBAAoB+f,EAAE8nB,qBAAqB7rB,EAAEi6J,OAAO,GAAG,oBAAoBl2J,EAAEogK,0BAA0BnkK,EAAEi6J,OAAO,QAAQ,oBAAoBl2J,EAAE8nB,oBAAoB5vC,IAAI8jB,EAAEy0f,eAAenwf,IAAItE,EAAEwgf,gBAAgBvgf,EAAEi6J,OAAO,GAAG,oBAAoBl2J,EAAEogK,yBAAyBloL,IAAI8jB,EAAEy0f,eAAenwf,IAAItE,EAAEwgf,gBAAgBvgf,EAAEi6J,OAAO,MAAMj6J,EAAEw0f,cAAchxf,EAAExD,EAAEugf,cAAct8e,GAAGF,EAAEjZ,MAAM0Y,EAAEO,EAAE2kB,MAAMzkB,EAAEF,EAAEoiC,QAAQniD,EAAEwf,EAAEQ,IAAI,oBAAoBD,EAAE8nB,oBAAoB5vC,IAAI8jB,EAAEy0f,eAAenwf,IACjftE,EAAEwgf,gBAAgBvgf,EAAEi6J,OAAO,GAAG,oBAAoBl2J,EAAEogK,yBAAyBloL,IAAI8jB,EAAEy0f,eAAenwf,IAAItE,EAAEwgf,gBAAgBvgf,EAAEi6J,OAAO,MAAMz2J,GAAE,EAAI,QAAO68f,GAAGtggB,EAAEC,EAAEpG,EAAE4J,EAAEM,EAAE7a,EAAG,CACpK,SAASo3gB,GAAGtggB,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,GAAGm8f,GAAGlggB,EAAEC,GAAG,IAAI+D,EAAE,KAAa,IAAR/D,EAAEi6J,OAAW,IAAIz2J,IAAIO,EAAE,OAAO9a,GAAG2pgB,GAAG5yf,EAAEpG,GAAE,GAAI2lgB,GAAGx/f,EAAEC,EAAE8D,GAAGN,EAAExD,EAAEi/e,UAAUkgB,GAAG1lgB,QAAQuG,EAAE,IAAI/jB,EAAE8nB,GAAG,oBAAoBnK,EAAE6xb,yBAAyB,KAAKjob,EAAE8qB,SAAwI,OAA/HtuB,EAAEi6J,OAAO,EAAE,OAAOl6J,GAAGgE,GAAG/D,EAAEqsB,MAAMyse,GAAG94f,EAAED,EAAEssB,MAAM,KAAKvoB,GAAG9D,EAAEqsB,MAAMyse,GAAG94f,EAAE,KAAK/jB,EAAE6nB,IAAIu7f,GAAGt/f,EAAEC,EAAE/jB,EAAE6nB,GAAG9D,EAAEugf,cAAc/8e,EAAEklB,MAAMz/B,GAAG2pgB,GAAG5yf,EAAEpG,GAAE,GAAWoG,EAAEqsB,KAAM,UAASi0e,GAAGvggB,GAAG,IAAIC,EAAED,EAAEk/e,UAAUj/e,EAAEuggB,eAAe9N,GAAG1yf,EAAEC,EAAEuggB,eAAevggB,EAAEuggB,iBAAiBvggB,EAAEmmC,SAASnmC,EAAEmmC,SAASssd,GAAG1yf,EAAEC,EAAEmmC,SAAQ,GAAIkzd,GAAGt5f,EAAEC,EAAEmlf,cAAe,CAC7e,SAASqb,GAAGzggB,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAuC,OAApCyrgB,KAAKC,GAAG1rgB,GAAG+W,EAAEi6J,OAAO,IAAIolW,GAAGt/f,EAAEC,EAAEpG,EAAE4J,GAAUxD,EAAEqsB,KAAM,KAaqLo0e,GAAMC,GAAGC,GAb1LC,GAAG,CAACpgB,WAAW,KAAK0T,YAAY,KAAKC,UAAU,GAAG,SAAS0M,GAAG9ggB,GAAG,MAAM,CAAC8/f,UAAU9/f,EAAE+/f,UAAU,KAAKjyf,YAAY,KAAM,CACnM,SAASizf,GAAG/ggB,EAAEC,EAAEpG,GAAG,IAA0D3d,EAAtDunB,EAAExD,EAAEi0f,aAAahrgB,EAAE09E,GAAEltE,QAAQqK,GAAE,EAAGC,EAAE,KAAa,IAAR/D,EAAEi6J,OAAqJ,IAAvIh+K,EAAE8nB,KAAK9nB,GAAE,OAAO8jB,GAAG,OAAOA,EAAEwgf,gBAAiB,KAAO,EAAFt3f,IAAShN,GAAE6nB,GAAE,EAAG9D,EAAEi6J,QAAQ,KAAY,OAAOl6J,GAAG,OAAOA,EAAEwgf,gBAAct3f,GAAG,GAAE+ogB,GAAErrb,GAAI,EAAF19E,GAAQ,OAAO8W,EAA2B,OAAxBs0f,GAAGr0f,GAAwB,QAArBD,EAAEC,EAAEugf,gBAA2C,QAAfxgf,EAAEA,EAAEygf,aAA4B,KAAY,EAAPxgf,EAAEsH,MAAQtH,EAAE01f,MAAM,EAAE,OAAO31f,EAAEzlB,KAAK0lB,EAAE01f,MAAM,EAAE11f,EAAE01f,MAAM,WAAW,OAAK3xf,EAAEP,EAAEzY,SAASgV,EAAEyD,EAAEu9f,SAAgBj9f,GAAGN,EAAExD,EAAEsH,KAAKxD,EAAE9D,EAAEqsB,MAAMtoB,EAAE,CAACuD,KAAK,SAASvc,SAASgZ,GAAG,KAAO,EAAFP,IAAM,OAAOM,GAAGA,EAAEwxf,WAAW,EAAExxf,EAAEmwf,aAC7elwf,GAAGD,EAAEk9f,GAAGj9f,EAAEP,EAAE,EAAE,MAAMzD,EAAE84f,GAAG94f,EAAEyD,EAAE5J,EAAE,MAAMkK,EAAE9Y,OAAOgV,EAAED,EAAE/U,OAAOgV,EAAE8D,EAAE68e,QAAQ5gf,EAAEC,EAAEqsB,MAAMvoB,EAAE9D,EAAEqsB,MAAMk0d,cAAcsgB,GAAGjngB,GAAGoG,EAAEugf,cAAcqgB,GAAG7ggB,GAAGkhgB,GAAGjhgB,EAAE+D,IAAqB,GAAG,QAArB9a,EAAE8W,EAAEwgf,gBAA2C,QAAftkgB,EAAEgN,EAAEu3f,YAAqB,OAGpM,SAAYzgf,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,GAAG,GAAGnK,EAAG,OAAW,IAARoG,EAAEi6J,OAAiBj6J,EAAEi6J,QAAQ,IAAwBinW,GAAGnhgB,EAAEC,EAAE+D,EAA3BP,EAAE46f,GAAG7jhB,MAAMsD,EAAE,SAAsB,OAAOmiB,EAAEugf,eAAqBvgf,EAAEqsB,MAAMtsB,EAAEssB,MAAMrsB,EAAEi6J,OAAO,IAAI,OAAKn2J,EAAEN,EAAEu9f,SAAS93gB,EAAE+W,EAAEsH,KAAK9D,EAAEw9f,GAAG,CAAC15f,KAAK,UAAUvc,SAASyY,EAAEzY,UAAU9B,EAAE,EAAE,OAAM6a,EAAE+0f,GAAG/0f,EAAE7a,EAAE8a,EAAE,OAAQk2J,OAAO,EAAEz2J,EAAExY,OAAOgV,EAAE8D,EAAE9Y,OAAOgV,EAAEwD,EAAEm9e,QAAQ78e,EAAE9D,EAAEqsB,MAAM7oB,EAAE,KAAY,EAAPxD,EAAEsH,OAASwxf,GAAG94f,EAAED,EAAEssB,MAAM,KAAKtoB,GAAG/D,EAAEqsB,MAAMk0d,cAAcsgB,GAAG98f,GAAG/D,EAAEugf,cAAcqgB,GAAU98f,GAAE,GAAG,KAAY,EAAP9D,EAAEsH,MAAQ,OAAO45f,GAAGnhgB,EAAEC,EAAE+D,EAAE,MAAM,GAAG,OAAO9a,EAAE3O,KAAK,CAChd,GADidkpB,EAAEva,EAAE5B,aAAa4B,EAAE5B,YAAYwmX,QAC3e,IAAI5xX,EAAEunB,EAAE29f,KAA0C,OAArC39f,EAAEvnB,EAA0CilhB,GAAGnhgB,EAAEC,EAAE+D,EAA/BP,EAAE46f,GAAlBt6f,EAAEvpB,MAAMsD,EAAE,MAAa2lB,OAAE,GAA2B,CAAuB,GAAvBvnB,EAAE,KAAK8nB,EAAEhE,EAAEu1f,YAAeK,IAAI15gB,EAAE,CAAK,GAAG,QAAPunB,EAAEo4f,IAAc,CAAC,OAAO73f,GAAGA,GAAG,KAAK,EAAE9a,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAGua,EAAEu/e,eAAeh/e,IAAI,EAAE9a,IAC5eA,IAAI6a,EAAEqwf,YAAYrwf,EAAEqwf,UAAUlrgB,EAAEitgB,GAAGn2f,EAAE9W,GAAG2ugB,GAAGp0f,EAAEzD,EAAE9W,GAAG,GAAI,CAAyB,OAAzBm4gB,KAAgCF,GAAGnhgB,EAAEC,EAAE+D,EAAlCP,EAAE46f,GAAG7jhB,MAAMsD,EAAE,OAA0B,OAAG,OAAOoL,EAAE3O,MAAY0lB,EAAEi6J,OAAO,IAAIj6J,EAAEqsB,MAAMtsB,EAAEssB,MAAMrsB,EAAEqhgB,GAAGvkhB,KAAK,KAAKijB,GAAG9W,EAAEq4gB,YAAYthgB,EAAE,OAAKD,EAAE+D,EAAEowf,YAAYR,GAAGpC,GAAGrogB,EAAE5B,aAAaosgB,GAAGzzf,EAAE2zf,IAAE,EAAGC,GAAG,KAAK,OAAO7zf,IAAIozf,GAAGC,MAAME,GAAGH,GAAGC,MAAM/8Z,GAAG88Z,GAAGC,MAAMC,GAAGC,GAAGvzf,EAAEhC,GAAGs4F,GAAGt2F,EAAEsjB,SAASgwe,GAAGrzf,IAAGA,EAAEihgB,GAAGjhgB,EAAEwD,EAAEzY,WAAYkvK,OAAO,KAAYj6J,EAAE,CALtKuhgB,CAAGxhgB,EAAEC,EAAE+D,EAAEP,EAAEvnB,EAAEgN,EAAE2Q,GAAG,GAAGkK,EAAE,CAACA,EAAEN,EAAEu9f,SAASh9f,EAAE/D,EAAEsH,KAAerrB,GAAVgN,EAAE8W,EAAEssB,OAAUs0d,QAAQ,IAAI38f,EAAE,CAACsjB,KAAK,SAASvc,SAASyY,EAAEzY,UAChF,OAD0F,KAAO,EAAFgZ,IAAM/D,EAAEqsB,QAAQpjC,IAAGua,EAAExD,EAAEqsB,OAAQipe,WAAW,EAAE9xf,EAAEywf,aAAajwgB,EAAEgc,EAAE+zf,UAAU,OAAOvwf,EAAEk1f,GAAGzvgB,EAAEjF,IAAKw9gB,aAA4B,SAAfv4gB,EAAEu4gB,aAAuB,OAAOvlhB,EAAE6nB,EAAE40f,GAAGz8gB,EAAE6nB,IAAIA,EAAE+0f,GAAG/0f,EAAEC,EAAEnK,EAAE,OAAQqgK,OAAO,EAAGn2J,EAAE9Y,OACnfgV,EAAEwD,EAAExY,OAAOgV,EAAEwD,EAAEm9e,QAAQ78e,EAAE9D,EAAEqsB,MAAM7oB,EAAEA,EAAEM,EAAEA,EAAE9D,EAAEqsB,MAA8BtoB,EAAE,QAA1BA,EAAEhE,EAAEssB,MAAMk0d,eAAyBsgB,GAAGjngB,GAAG,CAACimgB,UAAU97f,EAAE87f,UAAUjmgB,EAAEkmgB,UAAU,KAAKjyf,YAAY9J,EAAE8J,aAAa/J,EAAEy8e,cAAcx8e,EAAED,EAAEwxf,WAAWv1f,EAAEu1f,YAAY17f,EAAEoG,EAAEugf,cAAcqgB,GAAUp9f,CAAE,CAAmO,OAAzNzD,GAAV+D,EAAE/D,EAAEssB,OAAUs0d,QAAQn9e,EAAEk1f,GAAG50f,EAAE,CAACwD,KAAK,UAAUvc,SAASyY,EAAEzY,WAAW,KAAY,EAAPiV,EAAEsH,QAAU9D,EAAEkyf,MAAM97f,GAAG4J,EAAExY,OAAOgV,EAAEwD,EAAEm9e,QAAQ,KAAK,OAAO5gf,IAAkB,QAAdnG,EAAEoG,EAAE+zf,YAAoB/zf,EAAE+zf,UAAU,CAACh0f,GAAGC,EAAEi6J,OAAO,IAAIrgK,EAAExZ,KAAK2f,IAAIC,EAAEqsB,MAAM7oB,EAAExD,EAAEugf,cAAc,KAAY/8e,CAAE,CACpd,SAASy9f,GAAGlhgB,EAAEC,GAA8D,OAA3DA,EAAEghgB,GAAG,CAAC15f,KAAK,UAAUvc,SAASiV,GAAGD,EAAEuH,KAAK,EAAE,OAAQtc,OAAO+U,EAASA,EAAEssB,MAAMrsB,CAAE,UAASkhgB,GAAGnhgB,EAAEC,EAAEpG,EAAE4J,GAAwG,OAArG,OAAOA,GAAGmxf,GAAGnxf,GAAGs1f,GAAG94f,EAAED,EAAEssB,MAAM,KAAKzyB,IAAGmG,EAAEkhgB,GAAGjhgB,EAAEA,EAAEi0f,aAAalpgB,WAAYkvK,OAAO,EAAEj6J,EAAEugf,cAAc,KAAYxgf,CAAE,CAGiJ,SAAS0hgB,GAAG1hgB,EAAEC,EAAEpG,GAAGmG,EAAE21f,OAAO11f,EAAE,IAAIwD,EAAEzD,EAAEsgf,UAAU,OAAO78e,IAAIA,EAAEkyf,OAAO11f,GAAGq1f,GAAGt1f,EAAE/U,OAAOgV,EAAEpG,EAAG,CACzc,SAAS8ngB,GAAG3hgB,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,IAAI6a,EAAE/D,EAAEwgf,cAAc,OAAOz8e,EAAE/D,EAAEwgf,cAAc,CAACohB,YAAY3hgB,EAAE4hgB,UAAU,KAAKC,mBAAmB,EAAEhtd,KAAKrxC,EAAE+xH,KAAK37H,EAAEkogB,SAAS74gB,IAAI6a,EAAE69f,YAAY3hgB,EAAE8D,EAAE89f,UAAU,KAAK99f,EAAE+9f,mBAAmB,EAAE/9f,EAAE+wC,KAAKrxC,EAAEM,EAAEyxH,KAAK37H,EAAEkK,EAAEg+f,SAAS74gB,EAAG,CAC5O,SAAS84gB,GAAGhigB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAExD,EAAEi0f,aAAahrgB,EAAEua,EAAEk2f,YAAY51f,EAAEN,EAAE+xH,KAAsC,GAAjC8pY,GAAGt/f,EAAEC,EAAEwD,EAAEzY,SAAS6O,GAAkB,KAAO,GAAtB4J,EAAEmjE,GAAEltE,UAAqB+J,EAAI,EAAFA,EAAI,EAAExD,EAAEi6J,OAAO,QAAQ,CAAC,GAAG,OAAOl6J,GAAG,KAAa,IAARA,EAAEk6J,OAAWl6J,EAAE,IAAIA,EAAEC,EAAEqsB,MAAM,OAAOtsB,GAAG,CAAC,GAAG,KAAKA,EAAE9Y,IAAI,OAAO8Y,EAAEwgf,eAAekhB,GAAG1hgB,EAAEnG,EAAEoG,QAAQ,GAAG,KAAKD,EAAE9Y,IAAIw6gB,GAAG1hgB,EAAEnG,EAAEoG,QAAQ,GAAG,OAAOD,EAAEssB,MAAM,CAACtsB,EAAEssB,MAAMrhC,OAAO+U,EAAEA,EAAEA,EAAEssB,MAAM,QAAS,IAAGtsB,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAE4gf,SAAS,CAAC,GAAG,OAAO5gf,EAAE/U,QAAQ+U,EAAE/U,SAASgV,EAAE,MAAMD,EAAEA,EAAEA,EAAE/U,MAAO,CAAA+U,EAAE4gf,QAAQ31f,OAAO+U,EAAE/U,OAAO+U,EAAEA,EAAE4gf,OAAQ,CAAAn9e,GAAG,CAAE,CAAO,GAAPwuf,GAAErrb,GAAEnjE,GAAM,KAAY,EAAPxD,EAAEsH,MAAQtH,EAAEugf,cAC/e,UAAU,OAAOt3f,GAAG,IAAK,WAAqB,IAAV2Q,EAAEoG,EAAEqsB,MAAUpjC,EAAE,KAAK,OAAO2Q,GAAiB,QAAdmG,EAAEnG,EAAEymf,YAAoB,OAAOoZ,GAAG15f,KAAK9W,EAAE2Q,GAAGA,EAAEA,EAAE+mf,QAAY,QAAJ/mf,EAAE3Q,IAAYA,EAAE+W,EAAEqsB,MAAMrsB,EAAEqsB,MAAM,OAAOpjC,EAAE2Q,EAAE+mf,QAAQ/mf,EAAE+mf,QAAQ,MAAM+gB,GAAG1hgB,GAAE,EAAG/W,EAAE2Q,EAAEkK,GAAG,MAAM,IAAK,YAA6B,IAAjBlK,EAAE,KAAK3Q,EAAE+W,EAAEqsB,MAAUrsB,EAAEqsB,MAAM,KAAK,OAAOpjC,GAAG,CAAe,GAAG,QAAjB8W,EAAE9W,EAAEo3f,YAAuB,OAAOoZ,GAAG15f,GAAG,CAACC,EAAEqsB,MAAMpjC,EAAE,KAAM,CAAA8W,EAAE9W,EAAE03f,QAAQ13f,EAAE03f,QAAQ/mf,EAAEA,EAAE3Q,EAAEA,EAAE8W,CAAE,CAAA2hgB,GAAG1hgB,GAAE,EAAGpG,EAAE,KAAKkK,GAAG,MAAM,IAAK,WAAW49f,GAAG1hgB,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAEugf,cAAc,KAAK,OAAOvgf,EAAEqsB,KAAM,CAC9d,SAAS8ze,GAAGpggB,EAAEC,GAAG,KAAY,EAAPA,EAAEsH,OAAS,OAAOvH,IAAIA,EAAEsgf,UAAU,KAAKrgf,EAAEqgf,UAAU,KAAKrgf,EAAEi6J,OAAO,EAAG,UAASslW,GAAGx/f,EAAEC,EAAEpG,GAAyD,GAAtD,OAAOmG,IAAIC,EAAEw1f,aAAaz1f,EAAEy1f,cAAc3qC,IAAI7qd,EAAE01f,MAAS,KAAK97f,EAAEoG,EAAEs1f,YAAY,OAAO,KAAK,GAAG,OAAOv1f,GAAGC,EAAEqsB,QAAQtsB,EAAEssB,MAAM,MAAM9xC,MAAMsD,EAAE,MAAM,GAAG,OAAOmiB,EAAEqsB,MAAM,CAA4C,IAAjCzyB,EAAE8+f,GAAZ34f,EAAEC,EAAEqsB,MAAatsB,EAAEk0f,cAAcj0f,EAAEqsB,MAAMzyB,EAAMA,EAAE5O,OAAOgV,EAAE,OAAOD,EAAE4gf,SAAS5gf,EAAEA,EAAE4gf,SAAQ/mf,EAAEA,EAAE+mf,QAAQ+X,GAAG34f,EAAEA,EAAEk0f,eAAgBjpgB,OAAOgV,EAAEpG,EAAE+mf,QAAQ,IAAK,QAAO3gf,EAAEqsB,KAAM,CAO/a,SAAS21e,GAAGjigB,EAAEC,GAAG,IAAI2zf,GAAE,OAAO5zf,EAAE+hgB,UAAU,IAAK,SAAS9hgB,EAAED,EAAEw1H,KAAK,IAAI,IAAI37H,EAAE,KAAK,OAAOoG,GAAG,OAAOA,EAAEqgf,YAAYzmf,EAAEoG,GAAGA,EAAEA,EAAE2gf,QAAQ,OAAO/mf,EAAEmG,EAAEw1H,KAAK,KAAK37H,EAAE+mf,QAAQ,KAAK,MAAM,IAAK,YAAY/mf,EAAEmG,EAAEw1H,KAAK,IAAI,IAAI/xH,EAAE,KAAK,OAAO5J,GAAG,OAAOA,EAAEymf,YAAY78e,EAAE5J,GAAGA,EAAEA,EAAE+mf,QAAQ,OAAOn9e,EAAExD,GAAG,OAAOD,EAAEw1H,KAAKx1H,EAAEw1H,KAAK,KAAKx1H,EAAEw1H,KAAKorX,QAAQ,KAAKn9e,EAAEm9e,QAAQ,KAAM,CAC7U,SAASp5a,GAAExnE,GAAG,IAAIC,EAAE,OAAOD,EAAEsgf,WAAWtgf,EAAEsgf,UAAUh0d,QAAQtsB,EAAEssB,MAAMzyB,EAAE,EAAE4J,EAAE,EAAE,GAAGxD,EAAE,IAAI,IAAI/W,EAAE8W,EAAEssB,MAAM,OAAOpjC,GAAG2Q,GAAG3Q,EAAEysgB,MAAMzsgB,EAAEqsgB,WAAW9xf,GAAkB,SAAfva,EAAEu4gB,aAAsBh+f,GAAW,SAARva,EAAEgxK,MAAehxK,EAAE+B,OAAO+U,EAAE9W,EAAEA,EAAE03f,aAAa,IAAI13f,EAAE8W,EAAEssB,MAAM,OAAOpjC,GAAG2Q,GAAG3Q,EAAEysgB,MAAMzsgB,EAAEqsgB,WAAW9xf,GAAGva,EAAEu4gB,aAAah+f,GAAGva,EAAEgxK,MAAMhxK,EAAE+B,OAAO+U,EAAE9W,EAAEA,EAAE03f,QAAyC,OAAjC5gf,EAAEyhgB,cAAch+f,EAAEzD,EAAEu1f,WAAW17f,EAASoG,CAAE,CAC9V,SAASiigB,GAAGligB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAExD,EAAEi0f,aAAmB,OAANT,GAAGxzf,GAAUA,EAAE/Y,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOsgF,GAAEvnE,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAOuyf,GAAGvyf,EAAE3a,OAAOmtgB,KAAKjrb,GAAEvnE,GAAG,KAVqD,KAAK,EAA2Q,OAAzQwD,EAAExD,EAAEi/e,UAAUqa,KAAKpyb,GAAEgrb,IAAIhrb,GAAEI,IAAGsyb,KAAKp2f,EAAE+8f,iBAAiB/8f,EAAE2iC,QAAQ3iC,EAAE+8f,eAAe/8f,EAAE+8f,eAAe,MAAS,OAAOxggB,GAAG,OAAOA,EAAEssB,QAAMkoe,GAAGv0f,GAAGA,EAAEi6J,OAAO,EAAE,OAAOl6J,GAAGA,EAAEwgf,cAAc2E,cAAc,KAAa,IAARllf,EAAEi6J,SAAaj6J,EAAEi6J,OAAO,KAAK,OAAO25V,KAAKsO,GAAGtO,IAAIA,GAAG,QAAersb,GAAEvnE,GAAU,KAAK,KAAK,EAAEw5f,GAAGx5f,GAAG,IAAI/W,EAAEmwgB,GAAGD,GAAG1/f,SAC7e,GAATG,EAAEoG,EAAE3a,KAAQ,OAAO0a,GAAG,MAAMC,EAAEi/e,UAAUyhB,GAAG3ggB,EAAEC,EAAEpG,EAAE4J,GAAKzD,EAAE9O,MAAM+O,EAAE/O,MAAM+O,EAAEi6J,OAAO,IAAIj6J,EAAEi6J,OAAO,aAAa,CAAC,IAAIz2J,EAAE,CAAC,GAAG,OAAOxD,EAAEi/e,UAAU,MAAM1kgB,MAAMsD,EAAE,MAAW,OAAL0pF,GAAEvnE,GAAU,IAAK,CAAiB,GAAjBD,EAAEq5f,GAAGH,GAAGx/f,SAAY86f,GAAGv0f,GAAG,CAACwD,EAAExD,EAAEi/e,UAAUrlf,EAAEoG,EAAE3a,KAAK,IAAIye,EAAE9D,EAAEw0f,cAA+C,OAAjChxf,EAAEiuf,IAAIzxf,EAAEwD,EAAEkuf,IAAI5tf,EAAE/D,EAAE,KAAY,EAAPC,EAAEsH,MAAe1N,GAAG,IAAK,SAASy1f,GAAE,SAAS7rf,GAAG6rf,GAAE,QAAQ7rf,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ6rf,GAAE,OAAO7rf,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIva,EAAE,EAAEA,EAAEgmgB,GAAGtugB,OAAOsI,IAAIomgB,GAAEJ,GAAGhmgB,GAAGua,GAAG,MAAM,IAAK,SAAS6rf,GAAE,QAAQ7rf,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO6rf,GAAE,QACnhB7rf,GAAG6rf,GAAE,OAAO7rf,GAAG,MAAM,IAAK,UAAU6rf,GAAE,SAAS7rf,GAAG,MAAM,IAAK,QAAQg5e,EAAGh5e,EAAEM,GAAGurf,GAAE,UAAU7rf,GAAG,MAAM,IAAK,SAASA,EAAE84e,cAAc,CAAC6lB,cAAcr+f,EAAEw8J,UAAU+uV,GAAE,UAAU7rf,GAAG,MAAM,IAAK,WAAWy5e,GAAGz5e,EAAEM,GAAGurf,GAAE,UAAU7rf,GAAkB,IAAI,IAAIO,KAAvBu6e,GAAG1kf,EAAEkK,GAAG7a,EAAE,KAAkB6a,EAAE,GAAGA,EAAEjE,eAAekE,GAAG,CAAC,IAAI9nB,EAAE6nB,EAAEC,GAAG,aAAaA,EAAE,kBAAkB9nB,EAAEunB,EAAE6jC,cAAcprD,KAAI,IAAK6nB,EAAEs+f,0BAA0B1R,GAAGltf,EAAE6jC,YAAYprD,EAAE8jB,GAAG9W,EAAE,CAAC,WAAWhN,IAAI,kBAAkBA,GAAGunB,EAAE6jC,cAAc,GAAGprD,KAAI,IAAK6nB,EAAEs+f,0BAA0B1R,GAAGltf,EAAE6jC,YAC1eprD,EAAE8jB,GAAG9W,EAAE,CAAC,WAAW,GAAGhN,IAAIm9f,EAAGv5e,eAAekE,IAAI,MAAM9nB,GAAG,aAAa8nB,GAAGsrf,GAAE,SAAS7rf,EAAG,QAAO5J,GAAG,IAAK,QAAQkif,EAAGt4e,GAAGo5e,EAAGp5e,EAAEM,GAAE,GAAI,MAAM,IAAK,WAAWg4e,EAAGt4e,GAAG25e,GAAG35e,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBM,EAAEw5J,UAAU95J,EAAE6+f,QAAQ1R,IAAIntf,EAAEva,EAAE+W,EAAEq2f,YAAY7yf,EAAE,OAAOA,IAAIxD,EAAEi6J,OAAO,EAAG,KAAI,CAACl2J,EAAE,IAAI9a,EAAE8sC,SAAS9sC,EAAEA,EAAEiqB,cAAc,iCAAiCnT,IAAIA,EAAEq9e,GAAGxjf,IAAI,iCAAiCmG,EAAE,WAAWnG,IAAGmG,EAAEgE,EAAE1b,cAAc,QAASilE,UAAU,qBAAuBvtD,EAAEA,EAAE1W,YAAY0W,EAAEvY,aAC/f,kBAAkBgc,EAAEyrD,GAAGlvD,EAAEgE,EAAE1b,cAAcuR,EAAE,CAACq1D,GAAGzrD,EAAEyrD,MAAMlvD,EAAEgE,EAAE1b,cAAcuR,GAAG,WAAWA,IAAImK,EAAEhE,EAAEyD,EAAE88J,SAASv8J,EAAEu8J,UAAS,EAAG98J,EAAE3V,OAAOkW,EAAElW,KAAK2V,EAAE3V,QAAQkS,EAAEgE,EAAEsiC,gBAAgBtmC,EAAEnG,GAAGmG,EAAE0xf,IAAIzxf,EAAED,EAAE2xf,IAAIluf,EAAEi9f,GAAG1ggB,EAAEC,GAASA,EAAEi/e,UAAUl/e,EAAEA,EAAE,CAAW,OAAVgE,EAAEw6e,GAAG3kf,EAAE4J,GAAU5J,GAAG,IAAK,SAASy1f,GAAE,SAAStvf,GAAGsvf,GAAE,QAAQtvf,GAAG9W,EAAEua,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ6rf,GAAE,OAAOtvf,GAAG9W,EAAEua,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIva,EAAE,EAAEA,EAAEgmgB,GAAGtugB,OAAOsI,IAAIomgB,GAAEJ,GAAGhmgB,GAAG8W,GAAG9W,EAAEua,EAAE,MAAM,IAAK,SAAS6rf,GAAE,QAAQtvf,GAAG9W,EAAEua,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO6rf,GAAE,QAClftvf,GAAGsvf,GAAE,OAAOtvf,GAAG9W,EAAEua,EAAE,MAAM,IAAK,UAAU6rf,GAAE,SAAStvf,GAAG9W,EAAEua,EAAE,MAAM,IAAK,QAAQg5e,EAAGz8e,EAAEyD,GAAGva,EAAEmzf,EAAGr8e,EAAEyD,GAAG6rf,GAAE,UAAUtvf,GAAG,MAAM,IAAK,SAAiL,QAAQ9W,EAAEua,QAAxK,IAAK,SAASzD,EAAEu8e,cAAc,CAAC6lB,cAAc3+f,EAAE88J,UAAUr3K,EAAE00P,EAAE,CAAC,EAAEn6O,EAAE,CAACtlB,WAAM,IAASmxgB,GAAE,UAAUtvf,GAAG,MAAM,IAAK,WAAWk9e,GAAGl9e,EAAEyD,GAAGva,EAAE+zf,GAAGj9e,EAAEyD,GAAG6rf,GAAE,UAAUtvf,GAAiC,IAAI+D,KAAhBw6e,GAAG1kf,EAAE3Q,GAAGhN,EAAEgN,EAAa,GAAGhN,EAAE4jB,eAAeiE,GAAG,CAAC,IAAI9f,EAAE/H,EAAE6nB,GAAG,UAAUA,EAAE+5e,GAAG99e,EAAE/b,GAAG,4BAA4B8f,EAAuB,OAApB9f,EAAEA,EAAEA,EAAEs+K,YAAO,IAAgBv2E,GAAGhsF,EAAE/b,GAAI,aAAa8f,EAAE,kBAAkB9f,GAAG,aAC7e4V,GAAG,KAAK5V,IAAIw5f,GAAGz9e,EAAE/b,GAAG,kBAAkBA,GAAGw5f,GAAGz9e,EAAE,GAAG/b,GAAG,mCAAmC8f,GAAG,6BAA6BA,GAAG,cAAcA,IAAIs1e,EAAGv5e,eAAeiE,GAAG,MAAM9f,GAAG,aAAa8f,GAAGurf,GAAE,SAAStvf,GAAG,MAAM/b,GAAGkzG,EAAGn3F,EAAE+D,EAAE9f,EAAE+f,GAAI,QAAOnK,GAAG,IAAK,QAAQkif,EAAG/7e,GAAG68e,EAAG78e,EAAEyD,GAAE,GAAI,MAAM,IAAK,WAAWs4e,EAAG/7e,GAAGo9e,GAAGp9e,GAAG,MAAM,IAAK,SAAS,MAAMyD,EAAEtlB,OAAO6hB,EAAEzX,aAAa,QAAQ,GAAGszf,EAAGp4e,EAAEtlB,QAAQ,MAAM,IAAK,SAAS6hB,EAAEugK,WAAW98J,EAAE88J,SAAmB,OAAVx8J,EAAEN,EAAEtlB,OAAc4+f,GAAG/8e,IAAIyD,EAAE88J,SAASx8J,GAAE,GAAI,MAAMN,EAAE4a,cAAc0+d,GAAG/8e,IAAIyD,EAAE88J,SAAS98J,EAAE4a,cAClf,GAAI,MAAM,QAAQ,oBAAoBn1B,EAAEq0K,UAAUv9J,EAAEsigB,QAAQ1R,IAAI,OAAO/2f,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW4J,IAAIA,EAAE8+f,UAAU,MAAMvigB,EAAE,IAAK,MAAMyD,GAAE,EAAG,MAAMzD,EAAE,QAAQyD,GAAE,EAAI,CAAAA,IAAIxD,EAAEi6J,OAAO,EAAG,QAAOj6J,EAAE/O,MAAM+O,EAAEi6J,OAAO,IAAIj6J,EAAEi6J,OAAO,QAAS,CAAK,OAAL1yF,GAAEvnE,GAAU,KAAK,KAAK,EAAE,GAAGD,GAAG,MAAMC,EAAEi/e,UAAU0hB,GAAG5ggB,EAAEC,EAAED,EAAEy0f,cAAchxf,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOxD,EAAEi/e,UAAU,MAAM1kgB,MAAMsD,EAAE,MAAsC,GAAhC+b,EAAEw/f,GAAGD,GAAG1/f,SAAS2/f,GAAGH,GAAGx/f,SAAY86f,GAAGv0f,GAAG,CAAyC,GAAxCwD,EAAExD,EAAEi/e,UAAUrlf,EAAEoG,EAAEw0f,cAAchxf,EAAEiuf,IAAIzxf,GAAK8D,EAAEN,EAAEikK,YAAY7tK,IAC/e,QADofmG,EACvf0zf,IAAY,OAAO1zf,EAAE9Y,KAAK,KAAK,EAAEypgB,GAAGltf,EAAEikK,UAAU7tK,EAAE,KAAY,EAAPmG,EAAEuH,OAAS,MAAM,KAAK,GAAE,IAAKvH,EAAEy0f,cAAc4N,0BAA0B1R,GAAGltf,EAAEikK,UAAU7tK,EAAE,KAAY,EAAPmG,EAAEuH,OAASxD,IAAI9D,EAAEi6J,OAAO,EAAG,MAAKz2J,GAAG,IAAI5J,EAAEm8B,SAASn8B,EAAEA,EAAEsZ,eAAe1qB,eAAegb,IAAKiuf,IAAIzxf,EAAEA,EAAEi/e,UAAUz7e,CAAE,CAAK,OAAL+jE,GAAEvnE,GAAU,KAAK,KAAK,GAA0B,GAAvBknE,GAAEP,IAAGnjE,EAAExD,EAAEugf,cAAiB,OAAOxgf,GAAG,OAAOA,EAAEwgf,eAAe,OAAOxgf,EAAEwgf,cAAcC,WAAW,CAAC,GAAGmT,IAAG,OAAOD,IAAI,KAAY,EAAP1zf,EAAEsH,OAAS,KAAa,IAARtH,EAAEi6J,OAAWw6V,KAAKC,KAAK10f,EAAEi6J,OAAO,MAAMn2J,GAAE,OAAQ,GAAGA,EAAEywf,GAAGv0f,GAAG,OAAOwD,GAAG,OAAOA,EAAEg9e,WAAW,CAAC,GAAG,OAC5fzgf,EAAE,CAAC,IAAI+D,EAAE,MAAMvpB,MAAMsD,EAAE,MAAqD,KAA7BimB,EAAE,QAApBA,EAAE9D,EAAEugf,eAAyBz8e,EAAE08e,WAAW,MAAW,MAAMjmgB,MAAMsD,EAAE,MAAMimB,EAAE2tf,IAAIzxf,CAAE,MAAK00f,KAAK,KAAa,IAAR10f,EAAEi6J,SAAaj6J,EAAEugf,cAAc,MAAMvgf,EAAEi6J,OAAO,EAAE1yF,GAAEvnE,GAAG8D,GAAE,CAAG,MAAK,OAAO8vf,KAAKsO,GAAGtO,IAAIA,GAAG,MAAM9vf,GAAE,EAAG,IAAIA,EAAE,OAAe,MAAR9D,EAAEi6J,MAAYj6J,EAAE,IAAK,QAAG,KAAa,IAARA,EAAEi6J,QAAkBj6J,EAAE01f,MAAM97f,EAAEoG,KAAEwD,EAAE,OAAOA,MAAO,OAAOzD,GAAG,OAAOA,EAAEwgf,gBAAgB/8e,IAAIxD,EAAEqsB,MAAM4tI,OAAO,KAAK,KAAY,EAAPj6J,EAAEsH,QAAU,OAAOvH,GAAG,KAAe,EAAV4mE,GAAEltE,SAAW,IAAI8ogB,KAAIA,GAAE,GAAGnB,OAAO,OAAOphgB,EAAEq2f,cAAcr2f,EAAEi6J,OAAO,GAAG1yF,GAAEvnE,GAAU,MAAK,KAAK,EAAE,OAAOs5f,KAC7e,OAAOv5f,GAAG0vf,GAAGzvf,EAAEi/e,UAAUkG,eAAe59a,GAAEvnE,GAAG,KAAK,KAAK,GAAG,OAAOm1f,GAAGn1f,EAAE3a,KAAKk7I,UAAUh5D,GAAEvnE,GAAG,KAA+C,KAAK,GAA0B,GAAvBknE,GAAEP,IAAwB,QAArB7iE,EAAE9D,EAAEugf,eAA0B,OAAOh5a,GAAEvnE,GAAG,KAAuC,GAAlCwD,EAAE,KAAa,IAARxD,EAAEi6J,OAA4B,QAAjBl2J,EAAED,EAAE89f,WAAsB,GAAGp+f,EAAEw+f,GAAGl+f,GAAE,OAAQ,CAAC,GAAG,IAAIy+f,IAAG,OAAOxigB,GAAG,KAAa,IAARA,EAAEk6J,OAAW,IAAIl6J,EAAEC,EAAEqsB,MAAM,OAAOtsB,GAAG,CAAS,GAAG,QAAXgE,EAAE01f,GAAG15f,IAAe,CAAmG,IAAlGC,EAAEi6J,OAAO,IAAI+nW,GAAGl+f,GAAE,GAAoB,QAAhBN,EAAEO,EAAEsyf,eAAuBr2f,EAAEq2f,YAAY7yf,EAAExD,EAAEi6J,OAAO,GAAGj6J,EAAEwhgB,aAAa,EAAEh+f,EAAE5J,EAAMA,EAAEoG,EAAEqsB,MAAM,OAAOzyB,GAAOmG,EAAEyD,GAANM,EAAElK,GAAQqgK,OAAO,SAC/d,QAAdl2J,EAAED,EAAEu8e,YAAoBv8e,EAAEwxf,WAAW,EAAExxf,EAAE4xf,MAAM31f,EAAE+D,EAAEuoB,MAAM,KAAKvoB,EAAE09f,aAAa,EAAE19f,EAAE0wf,cAAc,KAAK1wf,EAAEy8e,cAAc,KAAKz8e,EAAEuyf,YAAY,KAAKvyf,EAAE0xf,aAAa,KAAK1xf,EAAEm7e,UAAU,OAAOn7e,EAAEwxf,WAAWvxf,EAAEuxf,WAAWxxf,EAAE4xf,MAAM3xf,EAAE2xf,MAAM5xf,EAAEuoB,MAAMtoB,EAAEsoB,MAAMvoB,EAAE09f,aAAa,EAAE19f,EAAEiwf,UAAU,KAAKjwf,EAAE0wf,cAAczwf,EAAEywf,cAAc1wf,EAAEy8e,cAAcx8e,EAAEw8e,cAAcz8e,EAAEuyf,YAAYtyf,EAAEsyf,YAAYvyf,EAAEze,KAAK0e,EAAE1e,KAAK0a,EAAEgE,EAAEyxf,aAAa1xf,EAAE0xf,aAAa,OAAOz1f,EAAE,KAAK,CAAC21f,MAAM31f,EAAE21f,MAAMD,aAAa11f,EAAE01f,eAAe77f,EAAEA,EAAE+mf,QAA2B,OAAnBqR,GAAErrb,GAAY,EAAVA,GAAEltE,QAAU,GAAUuG,EAAEqsB,KAAM,CAAAtsB,EAClgBA,EAAE4gf,OAAQ,QAAO78e,EAAEyxH,MAAM+rX,KAAIkhB,KAAKxigB,EAAEi6J,OAAO,IAAIz2J,GAAE,EAAGw+f,GAAGl+f,GAAE,GAAI9D,EAAE01f,MAAM,QAAS,KAAI,CAAC,IAAIlyf,EAAE,GAAW,QAARzD,EAAE05f,GAAG11f,KAAa,GAAG/D,EAAEi6J,OAAO,IAAIz2J,GAAE,EAAmB,QAAhB5J,EAAEmG,EAAEs2f,eAAuBr2f,EAAEq2f,YAAYz8f,EAAEoG,EAAEi6J,OAAO,GAAG+nW,GAAGl+f,GAAE,GAAI,OAAOA,EAAEyxH,MAAM,WAAWzxH,EAAEg+f,WAAW/9f,EAAEs8e,YAAYsT,GAAE,OAAOpsb,GAAEvnE,GAAG,UAAU,EAAEshf,KAAIx9e,EAAE+9f,mBAAmBW,IAAI,aAAa5ogB,IAAIoG,EAAEi6J,OAAO,IAAIz2J,GAAE,EAAGw+f,GAAGl+f,GAAE,GAAI9D,EAAE01f,MAAM,SAAS5xf,EAAE69f,aAAa59f,EAAE48e,QAAQ3gf,EAAEqsB,MAAMrsB,EAAEqsB,MAAMtoB,IAAa,QAATnK,EAAEkK,EAAE+wC,MAAcj7C,EAAE+mf,QAAQ58e,EAAE/D,EAAEqsB,MAAMtoB,EAAED,EAAE+wC,KAAK9wC,EAAG,QAAG,OAAOD,EAAEyxH,MAAYv1H,EAAE8D,EAAEyxH,KAAKzxH,EAAE89f,UAC9e5hgB,EAAE8D,EAAEyxH,KAAKv1H,EAAE2gf,QAAQ78e,EAAE+9f,mBAAmBvgB,KAAIthf,EAAE2gf,QAAQ,KAAK/mf,EAAE+sE,GAAEltE,QAAQu4f,GAAErrb,GAAEnjE,EAAI,EAAF5J,EAAI,EAAI,EAAFA,GAAKoG,IAAEunE,GAAEvnE,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAOyigB,KAAKj/f,EAAE,OAAOxD,EAAEugf,cAAc,OAAOxgf,GAAG,OAAOA,EAAEwgf,gBAAgB/8e,IAAIxD,EAAEi6J,OAAO,MAAMz2J,GAAG,KAAY,EAAPxD,EAAEsH,MAAQ,KAAQ,WAAH04f,MAAiBz4b,GAAEvnE,GAAkB,EAAfA,EAAEwhgB,eAAiBxhgB,EAAEi6J,OAAO,OAAO1yF,GAAEvnE,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMzlB,MAAMsD,EAAE,IAAImiB,EAAE/Y,KAAO,CACnX,SAASy7gB,GAAG3igB,EAAEC,GAAS,OAANwzf,GAAGxzf,GAAUA,EAAE/Y,KAAK,KAAK,EAAE,OAAOsrgB,GAAGvyf,EAAE3a,OAAOmtgB,KAAiB,OAAZzyf,EAAEC,EAAEi6J,QAAej6J,EAAEi6J,OAAS,MAAHl6J,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOs5f,KAAKpyb,GAAEgrb,IAAIhrb,GAAEI,IAAGsyb,KAAe,KAAO,OAAjB75f,EAAEC,EAAEi6J,SAAqB,KAAO,IAAFl6J,IAAQC,EAAEi6J,OAAS,MAAHl6J,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOw5f,GAAGx5f,GAAG,KAAK,KAAK,GAA0B,GAAvBknE,GAAEP,IAAwB,QAArB5mE,EAAEC,EAAEugf,gBAA2B,OAAOxgf,EAAEygf,WAAW,CAAC,GAAG,OAAOxgf,EAAEqgf,UAAU,MAAM9lgB,MAAMsD,EAAE,MAAM62gB,IAAK,CAAU,OAAS,OAAnB30f,EAAEC,EAAEi6J,QAAsBj6J,EAAEi6J,OAAS,MAAHl6J,EAAS,IAAIC,GAAG,KAAK,KAAK,GAAG,OAAOknE,GAAEP,IAAG,KAAK,KAAK,EAAE,OAAO2yb,KAAK,KAAK,KAAK,GAAG,OAAOnE,GAAGn1f,EAAE3a,KAAKk7I,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOkiY,KAC1gB,KAAyB,QAAQ,OAAO,KAAM,CArB9ChC,GAAG,SAAS1ggB,EAAEC,GAAG,IAAI,IAAIpG,EAAEoG,EAAEqsB,MAAM,OAAOzyB,GAAG,CAAC,GAAG,IAAIA,EAAE3S,KAAK,IAAI2S,EAAE3S,IAAI8Y,EAAExX,YAAYqR,EAAEqlf,gBAAgB,GAAG,IAAIrlf,EAAE3S,KAAK,OAAO2S,EAAEyyB,MAAM,CAACzyB,EAAEyyB,MAAMrhC,OAAO4O,EAAEA,EAAEA,EAAEyyB,MAAM,QAAS,IAAGzyB,IAAIoG,EAAE,MAAM,KAAK,OAAOpG,EAAE+mf,SAAS,CAAC,GAAG,OAAO/mf,EAAE5O,QAAQ4O,EAAE5O,SAASgV,EAAE,OAAOpG,EAAEA,EAAE5O,MAAO,CAAA4O,EAAE+mf,QAAQ31f,OAAO4O,EAAE5O,OAAO4O,EAAEA,EAAE+mf,OAAQ,CAAC,EACzS+f,GAAG,SAAS3ggB,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE8W,EAAEy0f,cAAc,GAAGvrgB,IAAIua,EAAE,CAACzD,EAAEC,EAAEi/e,UAAUma,GAAGH,GAAGx/f,SAAS,IAA4RsK,EAAxRD,EAAE,KAAK,OAAOlK,GAAG,IAAK,QAAQ3Q,EAAEmzf,EAAGr8e,EAAE9W,GAAGua,EAAE44e,EAAGr8e,EAAEyD,GAAGM,EAAE,GAAG,MAAM,IAAK,SAAS7a,EAAE00P,EAAE,CAAC,EAAE10P,EAAE,CAAC/K,WAAM,IAASslB,EAAEm6O,EAAE,CAAC,EAAEn6O,EAAE,CAACtlB,WAAM,IAAS4lB,EAAE,GAAG,MAAM,IAAK,WAAW7a,EAAE+zf,GAAGj9e,EAAE9W,GAAGua,EAAEw5e,GAAGj9e,EAAEyD,GAAGM,EAAE,GAAG,MAAM,QAAQ,oBAAoB7a,EAAEq0K,SAAS,oBAAoB95J,EAAE85J,UAAUv9J,EAAEsigB,QAAQ1R,IAAyB,IAAI3sf,KAAzBs6e,GAAG1kf,EAAE4J,GAAS5J,EAAE,KAAc3Q,EAAE,IAAIua,EAAE3D,eAAemE,IAAI/a,EAAE4W,eAAemE,IAAI,MAAM/a,EAAE+a,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAI/nB,EAAEgN,EAAE+a,GAAG,IAAID,KAAK9nB,EAAEA,EAAE4jB,eAAekE,KACjfnK,IAAIA,EAAE,CAAC,GAAGA,EAAEmK,GAAG,GAAI,KAAI,4BAA4BC,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIo1e,EAAGv5e,eAAemE,GAAGF,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAI1jB,KAAK4jB,EAAE,OAAO,IAAIA,KAAKR,EAAE,CAAC,IAAIxf,EAAEwf,EAAEQ,GAAyB,GAAtB/nB,EAAE,MAAMgN,EAAEA,EAAE+a,QAAG,EAAUR,EAAE3D,eAAemE,IAAIhgB,IAAI/H,IAAI,MAAM+H,GAAG,MAAM/H,GAAG,GAAG,UAAU+nB,EAAE,GAAG/nB,EAAE,CAAC,IAAI8nB,KAAK9nB,GAAGA,EAAE4jB,eAAekE,IAAI/f,GAAGA,EAAE6b,eAAekE,KAAKnK,IAAIA,EAAE,CAAC,GAAGA,EAAEmK,GAAG,IAAI,IAAIA,KAAK/f,EAAEA,EAAE6b,eAAekE,IAAI9nB,EAAE8nB,KAAK/f,EAAE+f,KAAKnK,IAAIA,EAAE,CAAC,GAAGA,EAAEmK,GAAG/f,EAAE+f,GAAI,MAAKnK,IAAIkK,IAAIA,EAAE,IAAIA,EAAE1jB,KAAK4jB,EACpfpK,IAAIA,EAAE5V,MAAM,4BAA4BggB,GAAGhgB,EAAEA,EAAEA,EAAEs+K,YAAO,EAAOrmL,EAAEA,EAAEA,EAAEqmL,YAAO,EAAO,MAAMt+K,GAAG/H,IAAI+H,IAAI8f,EAAEA,GAAG,IAAI1jB,KAAK4jB,EAAEhgB,IAAI,aAAaggB,EAAE,kBAAkBhgB,GAAG,kBAAkBA,IAAI8f,EAAEA,GAAG,IAAI1jB,KAAK4jB,EAAE,GAAGhgB,GAAG,mCAAmCggB,GAAG,6BAA6BA,IAAIo1e,EAAGv5e,eAAemE,IAAI,MAAMhgB,GAAG,aAAaggB,GAAGqrf,GAAE,SAAStvf,GAAG+D,GAAG7nB,IAAI+H,IAAI8f,EAAE,MAAMA,EAAEA,GAAG,IAAI1jB,KAAK4jB,EAAEhgB,GAAI,CAAA4V,IAAIkK,EAAEA,GAAG,IAAI1jB,KAAK,QAAQwZ,GAAG,IAAIoK,EAAEF,GAAK9D,EAAEq2f,YAAYryf,KAAEhE,EAAEi6J,OAAO,EAAE,CAAC,EAAC0mW,GAAG,SAAS5ggB,EAAEC,EAAEpG,EAAE4J,GAAG5J,IAAI4J,IAAIxD,EAAEi6J,OAAO,EAAG,EAkBnb,IAAI0oW,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBC,QAAQA,QAAQ/jhB,IAAIu8K,GAAE,KAAK,SAASynW,GAAGhjgB,EAAEC,GAAG,IAAIpG,EAAEmG,EAAE9O,IAAI,GAAG,OAAO2I,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAwB,CAAlB,MAAM4J,GAAG64d,GAAEt8d,EAAEC,EAAEwD,EAAG,MAAK5J,EAAEH,QAAQ,IAAK,UAASupgB,GAAGjjgB,EAAEC,EAAEpG,GAAG,IAAIA,GAAsB,CAAlB,MAAM4J,GAAG64d,GAAEt8d,EAAEC,EAAEwD,EAAG,CAAC,KAAIy/f,IAAG,EAIxR,SAASC,GAAGnjgB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAExD,EAAEq2f,YAAyC,GAAG,QAAhC7yf,EAAE,OAAOA,EAAEA,EAAEs4f,WAAW,MAAiB,CAAC,IAAI7ygB,EAAEua,EAAEA,EAAErY,KAAK,EAAE,CAAC,IAAIlC,EAAEhC,IAAI8Y,KAAKA,EAAE,CAAC,IAAI+D,EAAE7a,EAAE6kL,QAAQ7kL,EAAE6kL,aAAQ,OAAO,IAAShqK,GAAGk/f,GAAGhjgB,EAAEpG,EAAEkK,EAAG,CAAA7a,EAAEA,EAAEkC,IAAK,OAAMlC,IAAIua,EAAG,CAAC,UAAS2/f,GAAGpjgB,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEq2f,aAAuBr2f,EAAE87f,WAAW,MAAiB,CAAC,IAAIligB,EAAEoG,EAAEA,EAAE7U,KAAK,EAAE,CAAC,IAAIyO,EAAE3S,IAAI8Y,KAAKA,EAAE,CAAC,IAAIyD,EAAE5J,EAAEpJ,OAAOoJ,EAAEk0K,QAAQtqK,GAAI,CAAA5J,EAAEA,EAAEzO,IAAK,OAAMyO,IAAIoG,EAAG,CAAC,UAASojgB,GAAGrjgB,GAAG,IAAIC,EAAED,EAAE9O,IAAI,GAAG,OAAO+O,EAAE,CAAC,IAAIpG,EAAEmG,EAAEk/e,UAAiBl/e,EAAE9Y,IAA8B8Y,EAAEnG,EAAE,oBAAoBoG,EAAEA,EAAED,GAAGC,EAAEvG,QAAQsG,CAAE,CAAC,CACnf,SAASsjgB,GAAGtjgB,GAAG,IAAIC,EAAED,EAAEsgf,UAAU,OAAOrgf,IAAID,EAAEsgf,UAAU,KAAKgjB,GAAGrjgB,IAAID,EAAEssB,MAAM,KAAKtsB,EAAEg0f,UAAU,KAAKh0f,EAAE4gf,QAAQ,KAAK,IAAI5gf,EAAE9Y,MAAoB,QAAd+Y,EAAED,EAAEk/e,oBAA4Bj/e,EAAEyxf,WAAWzxf,EAAE0xf,WAAW1xf,EAAE6tL,WAAW7tL,EAAE2xf,WAAW3xf,EAAE4xf,MAAM7xf,EAAEk/e,UAAU,KAAKl/e,EAAE/U,OAAO,KAAK+U,EAAEy1f,aAAa,KAAKz1f,EAAEy0f,cAAc,KAAKz0f,EAAEwgf,cAAc,KAAKxgf,EAAEk0f,aAAa,KAAKl0f,EAAEk/e,UAAU,KAAKl/e,EAAEs2f,YAAY,IAAK,UAASiN,GAAGvjgB,GAAG,OAAO,IAAIA,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,GAAI,CACpa,SAASs8gB,GAAGxjgB,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAE4gf,SAAS,CAAC,GAAG,OAAO5gf,EAAE/U,QAAQs4gB,GAAGvjgB,EAAE/U,QAAQ,OAAO,KAAK+U,EAAEA,EAAE/U,MAAO,CAA0B,IAA1B+U,EAAE4gf,QAAQ31f,OAAO+U,EAAE/U,OAAW+U,EAAEA,EAAE4gf,QAAQ,IAAI5gf,EAAE9Y,KAAK,IAAI8Y,EAAE9Y,KAAK,KAAK8Y,EAAE9Y,KAAK,CAAC,GAAW,EAAR8Y,EAAEk6J,MAAQ,SAASl6J,EAAE,GAAG,OAAOA,EAAEssB,OAAO,IAAItsB,EAAE9Y,IAAI,SAAS8Y,EAAOA,EAAEssB,MAAMrhC,OAAO+U,EAAEA,EAAEA,EAAEssB,KAAM,MAAa,EAARtsB,EAAEk6J,OAAS,OAAOl6J,EAAEk/e,SAAU,CAAC,CAC1T,SAASukB,GAAGzjgB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAE9Y,IAAI,GAAG,IAAIuc,GAAG,IAAIA,EAAEzD,EAAEA,EAAEk/e,UAAUj/e,EAAE,IAAIpG,EAAEm8B,SAASn8B,EAAExQ,WAAW3B,aAAasY,EAAEC,GAAGpG,EAAEnS,aAAasY,EAAEC,IAAI,IAAIpG,EAAEm8B,UAAU/1B,EAAEpG,EAAExQ,YAAa3B,aAAasY,EAAEnG,IAAKoG,EAAEpG,GAAIrR,YAAYwX,GAA4B,QAAxBnG,EAAEA,EAAE6pgB,2BAA8B,IAAS7pgB,GAAG,OAAOoG,EAAEqigB,UAAUrigB,EAAEqigB,QAAQ1R,UAAU,GAAG,IAAIntf,GAAc,QAAVzD,EAAEA,EAAEssB,OAAgB,IAAIm3e,GAAGzjgB,EAAEC,EAAEpG,GAAGmG,EAAEA,EAAE4gf,QAAQ,OAAO5gf,GAAGyjgB,GAAGzjgB,EAAEC,EAAEpG,GAAGmG,EAAEA,EAAE4gf,OAAQ,CAC3X,SAAS+iB,GAAG3jgB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAE9Y,IAAI,GAAG,IAAIuc,GAAG,IAAIA,EAAEzD,EAAEA,EAAEk/e,UAAUj/e,EAAEpG,EAAEnS,aAAasY,EAAEC,GAAGpG,EAAErR,YAAYwX,QAAQ,GAAG,IAAIyD,GAAc,QAAVzD,EAAEA,EAAEssB,OAAgB,IAAIq3e,GAAG3jgB,EAAEC,EAAEpG,GAAGmG,EAAEA,EAAE4gf,QAAQ,OAAO5gf,GAAG2jgB,GAAG3jgB,EAAEC,EAAEpG,GAAGmG,EAAEA,EAAE4gf,OAAQ,KAAI94a,GAAE,KAAK87b,IAAG,EAAG,SAASC,GAAG7jgB,EAAEC,EAAEpG,GAAG,IAAIA,EAAEA,EAAEyyB,MAAM,OAAOzyB,GAAG8yF,GAAG3sF,EAAEC,EAAEpG,GAAGA,EAAEA,EAAE+mf,OAAQ,CACpR,SAASj0Z,GAAG3sF,EAAEC,EAAEpG,GAAG,GAAGyof,IAAI,oBAAoBA,GAAGwhB,qBAAqB,IAAIxhB,GAAGwhB,qBAAqBzhB,GAAGxof,EAAa,CAAV,MAAM3d,GAAI,QAAO2d,EAAE3S,KAAK,KAAK,EAAE27gB,IAAGG,GAAGnpgB,EAAEoG,GAAG,KAAK,EAAE,IAAIwD,EAAEqkE,GAAE5+E,EAAE06gB,GAAG97b,GAAE,KAAK+7b,GAAG7jgB,EAAEC,EAAEpG,GAAO+pgB,GAAG16gB,EAAE,QAAT4+E,GAAErkE,KAAkBmggB,IAAI5jgB,EAAE8nE,GAAEjuE,EAAEA,EAAEqlf,UAAU,IAAIl/e,EAAEg2B,SAASh2B,EAAE3W,WAAWC,YAAYuQ,GAAGmG,EAAE1W,YAAYuQ,IAAIiuE,GAAEx+E,YAAYuQ,EAAEqlf,YAAY,MAAM,KAAK,GAAG,OAAOp3a,KAAI87b,IAAI5jgB,EAAE8nE,GAAEjuE,EAAEA,EAAEqlf,UAAU,IAAIl/e,EAAEg2B,SAASs7d,GAAGtxf,EAAE3W,WAAWwQ,GAAG,IAAImG,EAAEg2B,UAAUs7d,GAAGtxf,EAAEnG,GAAG8rf,GAAG3lf,IAAIsxf,GAAGxpb,GAAEjuE,EAAEqlf,YAAY,MAAM,KAAK,EAAEz7e,EAAEqkE,GAAE5+E,EAAE06gB,GAAG97b,GAAEjuE,EAAEqlf,UAAUkG,cAAcwe,IAAG,EAClfC,GAAG7jgB,EAAEC,EAAEpG,GAAGiuE,GAAErkE,EAAEmggB,GAAG16gB,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI25gB,KAAoB,QAAhBp/f,EAAE5J,EAAEy8f,cAAsC,QAAf7yf,EAAEA,EAAEs4f,aAAsB,CAAC7ygB,EAAEua,EAAEA,EAAErY,KAAK,EAAE,CAAC,IAAI2Y,EAAE7a,EAAE8a,EAAED,EAAEgqK,QAAQhqK,EAAEA,EAAE7c,SAAI,IAAS8c,IAAI,KAAO,EAAFD,IAAe,KAAO,EAAFA,KAAfk/f,GAAGppgB,EAAEoG,EAAE+D,GAAyB9a,EAAEA,EAAEkC,IAAK,OAAMlC,IAAIua,EAAG,CAAAoggB,GAAG7jgB,EAAEC,EAAEpG,GAAG,MAAM,KAAK,EAAE,IAAIgpgB,KAAIG,GAAGnpgB,EAAEoG,GAAiB,oBAAdwD,EAAE5J,EAAEqlf,WAAgC9yd,sBAAsB,IAAI3oB,EAAE1Y,MAAM8O,EAAE46f,cAAchxf,EAAEklB,MAAM9uB,EAAE2mf,cAAc/8e,EAAE2oB,sBAAyC,CAAlB,MAAMlwC,GAAGogf,GAAEzie,EAAEoG,EAAE/jB,EAAG,CAAA2nhB,GAAG7jgB,EAAEC,EAAEpG,GAAG,MAAM,KAAK,GAAGgqgB,GAAG7jgB,EAAEC,EAAEpG,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAE0N,MAAQs7f,IAAGp/f,EAAEo/f,KAAI,OAChfhpgB,EAAE2mf,cAAcqjB,GAAG7jgB,EAAEC,EAAEpG,GAAGgpgB,GAAEp/f,GAAGoggB,GAAG7jgB,EAAEC,EAAEpG,GAAG,MAAM,QAAQgqgB,GAAG7jgB,EAAEC,EAAEpG,GAAI,UAASkqgB,GAAG/jgB,GAAG,IAAIC,EAAED,EAAEs2f,YAAY,GAAG,OAAOr2f,EAAE,CAACD,EAAEs2f,YAAY,KAAK,IAAIz8f,EAAEmG,EAAEk/e,UAAU,OAAOrlf,IAAIA,EAAEmG,EAAEk/e,UAAU,IAAI4jB,IAAI7igB,EAAEtf,SAAQ,SAASsf,GAAG,IAAIwD,EAAEuggB,GAAGjnhB,KAAK,KAAKijB,EAAEC,GAAGpG,EAAEjgB,IAAIqmB,KAAKpG,EAAEm0B,IAAI/tB,GAAGA,EAAEliB,KAAK0lB,EAAEA,GAAI,GAAE,CAAC,CAC1Q,SAASwggB,GAAGjkgB,EAAEC,GAAG,IAAIpG,EAAEoG,EAAE+zf,UAAU,GAAG,OAAOn6f,EAAE,IAAI,IAAI4J,EAAE,EAAEA,EAAE5J,EAAEjZ,OAAO6iB,IAAI,CAAC,IAAIva,EAAE2Q,EAAE4J,GAAG,IAAI,IAAIM,EAAE/D,EAAEgE,EAAE/D,EAAE/jB,EAAE8nB,EAAEhE,EAAE,KAAK,OAAO9jB,GAAG,CAAC,OAAOA,EAAEgL,KAAK,KAAK,EAAE4gF,GAAE5rF,EAAEgjgB,UAAU0kB,IAAG,EAAG,MAAM5jgB,EAAE,KAAK,EAA4C,KAAK,EAAE8nE,GAAE5rF,EAAEgjgB,UAAUkG,cAAcwe,IAAG,EAAG,MAAM5jgB,EAAE9jB,EAAEA,EAAE+O,MAAO,IAAG,OAAO68E,GAAE,MAAMttF,MAAMsD,EAAE,MAAM6uG,GAAG5oF,EAAEC,EAAE9a,GAAG4+E,GAAE,KAAK87b,IAAG,EAAG,IAAI3/gB,EAAEiF,EAAEo3f,UAAU,OAAOr8f,IAAIA,EAAEgH,OAAO,MAAM/B,EAAE+B,OAAO,IAAuB,CAAlB,MAAMgZ,GAAGq4d,GAAEpze,EAAE+W,EAAEgE,EAAG,CAAC,IAAkB,MAAfhE,EAAEwhgB,aAAmB,IAAIxhgB,EAAEA,EAAEqsB,MAAM,OAAOrsB,GAAGikgB,GAAGjkgB,EAAED,GAAGC,EAAEA,EAAE2gf,OAAQ,CACle,SAASsjB,GAAGlkgB,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEsgf,UAAU78e,EAAEzD,EAAEk6J,MAAM,OAAOl6J,EAAE9Y,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAd+8gB,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAQ,EAAFyD,EAAI,CAAC,IAAI0/f,GAAG,EAAEnjgB,EAAEA,EAAE/U,QAAQm4gB,GAAG,EAAEpjgB,EAA4B,CAAzB,MAAMoE,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,KAAI++f,GAAG,EAAEnjgB,EAAEA,EAAE/U,OAAiC,CAAzB,MAAMmZ,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,CAAC,OAAM,KAAK,EAAE6/f,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAK,IAAFyD,GAAO,OAAO5J,GAAGmpgB,GAAGnpgB,EAAEA,EAAE5O,QAAQ,MAAM,KAAK,EAAgD,GAA9Cg5gB,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAK,IAAFyD,GAAO,OAAO5J,GAAGmpgB,GAAGnpgB,EAAEA,EAAE5O,QAAmB,GAAR+U,EAAEk6J,MAAS,CAAC,IAAIhxK,EAAE8W,EAAEk/e,UAAU,IAAIzB,GAAGv0f,EAAE,GAA6B,CAAzB,MAAMkb,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,CAAC,IAAK,EAAFX,GAAoB,OAAdva,EAAE8W,EAAEk/e,WAAmB,CAAC,IAAIn7e,EAAE/D,EAAEy0f,cAAczwf,EAAE,OAAOnK,EAAEA,EAAE46f,cAAc1wf,EAAE7nB,EAAE8jB,EAAE1a,KAAKrB,EAAE+b,EAAEs2f,YACje,GAAnBt2f,EAAEs2f,YAAY,KAAQ,OAAOrygB,EAAE,IAAI,UAAU/H,GAAG,UAAU6nB,EAAEze,MAAM,MAAMye,EAAE1qB,MAAMqjgB,EAAGxzf,EAAE6a,GAAGy6e,GAAGtigB,EAAE8nB,GAAG,IAAIC,EAAEu6e,GAAGtigB,EAAE6nB,GAAG,IAAIC,EAAE,EAAEA,EAAE/f,EAAErD,OAAOojB,GAAG,EAAE,CAAC,IAAI7mB,EAAE8G,EAAE+f,GAAGG,EAAElgB,EAAE+f,EAAE,GAAG,UAAU7mB,EAAE2ggB,GAAG50f,EAAEib,GAAG,4BAA4BhnB,EAAE6uG,GAAG9iG,EAAEib,GAAG,aAAahnB,EAAEsggB,GAAGv0f,EAAEib,GAAGgzF,EAAGjuG,EAAE/L,EAAEgnB,EAAEF,EAAG,QAAO/nB,GAAG,IAAK,QAAQyggB,EAAGzzf,EAAE6a,GAAG,MAAM,IAAK,WAAWo5e,GAAGj0f,EAAE6a,GAAG,MAAM,IAAK,SAAS,IAAIO,EAAEpb,EAAEqzf,cAAc6lB,YAAYl5gB,EAAEqzf,cAAc6lB,cAAcr+f,EAAEw8J,SAAS,IAAItyK,EAAE8V,EAAE5lB,MAAM,MAAM8P,EAAE8uf,GAAG7zf,IAAI6a,EAAEw8J,SAAStyK,GAAE,GAAIqW,MAAMP,EAAEw8J,WAAW,MAAMx8J,EAAEsa,aAAa0+d,GAAG7zf,IAAI6a,EAAEw8J,SACnfx8J,EAAEsa,cAAa,GAAI0+d,GAAG7zf,IAAI6a,EAAEw8J,SAASx8J,EAAEw8J,SAAS,GAAG,IAAG,IAAKr3K,EAAEyogB,IAAI5tf,CAA2B,CAAzB,MAAMK,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,CAAC,OAAM,KAAK,EAAgB,GAAd6/f,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAQ,EAAFyD,EAAI,CAAC,GAAG,OAAOzD,EAAEk/e,UAAU,MAAM1kgB,MAAMsD,EAAE,MAAMoL,EAAE8W,EAAEk/e,UAAUn7e,EAAE/D,EAAEy0f,cAAc,IAAIvrgB,EAAEw+K,UAAU3jK,CAA2B,CAAzB,MAAMK,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,CAAC,OAAM,KAAK,EAAgB,GAAd6/f,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAQ,EAAFyD,GAAK,OAAO5J,GAAGA,EAAE2mf,cAAc2E,aAAa,IAAIQ,GAAG1lf,EAAEmlf,cAAwC,CAAzB,MAAMhhf,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,OAAM,KAAK,EAG4G,QAAQ6/f,GAAGhkgB,EACnfD,GAAGmkgB,GAAGnkgB,SAJ4Y,KAAK,GAAGikgB,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAqB,MAAlB9W,EAAE8W,EAAEssB,OAAQ4tI,QAAan2J,EAAE,OAAO7a,EAAEs3f,cAAct3f,EAAEg2f,UAAU72S,SAAStkM,GAAGA,GAClf,OAAO7a,EAAEo3f,WAAW,OAAOp3f,EAAEo3f,UAAUE,gBAAgB4jB,GAAG7iB,OAAQ,EAAF99e,GAAKsggB,GAAG/jgB,GAAG,MAAM,KAAK,GAAsF,GAAnF7iB,EAAE,OAAO0c,GAAG,OAAOA,EAAE2mf,cAAqB,EAAPxgf,EAAEuH,MAAQs7f,IAAG5+f,EAAE4+f,KAAI1lhB,EAAE8mhB,GAAGhkgB,EAAED,GAAG6igB,GAAE5+f,GAAGgggB,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAQ,KAAFyD,EAAO,CAA0B,GAAzBQ,EAAE,OAAOjE,EAAEwgf,eAAkBxgf,EAAEk/e,UAAU72S,SAASpkM,KAAK9mB,GAAG,KAAY,EAAP6iB,EAAEuH,MAAQ,IAAIg0J,GAAEv7J,EAAE7iB,EAAE6iB,EAAEssB,MAAM,OAAOnvC,GAAG,CAAC,IAAIgnB,EAAEo3J,GAAEp+K,EAAE,OAAOo+K,IAAG,CAAe,OAAVttK,GAAJqW,EAAEi3J,IAAMjvI,MAAahoB,EAAEpd,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGi8gB,GAAG,EAAE7+f,EAAEA,EAAErZ,QAAQ,MAAM,KAAK,EAAE+3gB,GAAG1+f,EAAEA,EAAErZ,QAAQ,IAAIiZ,EAAEI,EAAE46e,UAAU,GAAG,oBAAoBh7e,EAAEkoB,qBAAqB,CAAC3oB,EAAEa,EAAEzK,EAAEyK,EAAErZ,OAAO,IAAIgV,EAAEwD,EAAES,EAAEnZ,MACpfkV,EAAEw0f,cAAcvwf,EAAEykB,MAAM1oB,EAAEugf,cAAct8e,EAAEkoB,sBAAyC,CAAlB,MAAMhoB,GAAGk4d,GAAE74d,EAAE5J,EAAEuK,EAAG,CAAC,OAAM,KAAK,EAAE4+f,GAAG1+f,EAAEA,EAAErZ,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOqZ,EAAEk8e,cAAc,CAAC6jB,GAAGlggB,GAAG,QAAS,EAAC,OAAOlW,GAAGA,EAAEhD,OAAOqZ,EAAEi3J,GAAEttK,GAAGo2gB,GAAGlggB,EAAG,CAAAhnB,EAAEA,EAAEyjgB,OAAQ,CAAA5gf,EAAE,IAAI7iB,EAAE,KAAKgnB,EAAEnE,IAAI,CAAC,GAAG,IAAImE,EAAEjd,KAAK,GAAG,OAAO/J,EAAE,CAACA,EAAEgnB,EAAE,IAAIjb,EAAEib,EAAE+6e,UAAUj7e,EAAa,oBAAVF,EAAE7a,EAAE6tB,OAA4BqwB,YAAYrjC,EAAEqjC,YAAY,UAAU,OAAO,aAAarjC,EAAE8M,QAAQ,QAAS30B,EAAEioB,EAAE+6e,UAAkCl7e,OAAE,KAA1B/f,EAAEkgB,EAAEswf,cAAc19e,QAAoB,OAAO9yB,GAAGA,EAAE6b,eAAe,WAAW7b,EAAE4sB,QAAQ,KAAK30B,EAAE66B,MAAMlG,QACzfgte,GAAG,UAAU75e,GAA6B,CAAzB,MAAMI,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,CAAC,OAAM,GAAG,IAAID,EAAEjd,KAAK,GAAG,OAAO/J,EAAE,IAAIgnB,EAAE+6e,UAAUx3U,UAAUzjK,EAAE,GAAGE,EAAEswf,aAAuC,CAAzB,MAAMrwf,GAAGk4d,GAAEt8d,EAAEA,EAAE/U,OAAOmZ,EAAG,OAAM,IAAI,KAAKD,EAAEjd,KAAK,KAAKid,EAAEjd,KAAK,OAAOid,EAAEq8e,eAAer8e,IAAInE,IAAI,OAAOmE,EAAEmoB,MAAM,CAACnoB,EAAEmoB,MAAMrhC,OAAOkZ,EAAEA,EAAEA,EAAEmoB,MAAM,QAAS,IAAGnoB,IAAInE,EAAE,MAAMA,EAAE,KAAK,OAAOmE,EAAEy8e,SAAS,CAAC,GAAG,OAAOz8e,EAAElZ,QAAQkZ,EAAElZ,SAAS+U,EAAE,MAAMA,EAAE7iB,IAAIgnB,IAAIhnB,EAAE,MAAMgnB,EAAEA,EAAElZ,MAAO,CAAA9N,IAAIgnB,IAAIhnB,EAAE,MAAMgnB,EAAEy8e,QAAQ31f,OAAOkZ,EAAElZ,OAAOkZ,EAAEA,EAAEy8e,OAAQ,CAAC,OAAM,KAAK,GAAGqjB,GAAGhkgB,EAAED,GAAGmkgB,GAAGnkgB,GAAK,EAAFyD,GAAKsggB,GAAG/jgB,GAAS,KAAK,IACrd,UAASmkgB,GAAGnkgB,GAAG,IAAIC,EAAED,EAAEk6J,MAAM,GAAK,EAAFj6J,EAAI,CAAC,IAAID,EAAE,CAAC,IAAI,IAAInG,EAAEmG,EAAE/U,OAAO,OAAO4O,GAAG,CAAC,GAAG0pgB,GAAG1pgB,GAAG,CAAC,IAAI4J,EAAE5J,EAAE,MAAMmG,CAAE,CAAAnG,EAAEA,EAAE5O,MAAO,OAAMzQ,MAAMsD,EAAE,KAAO,QAAO2lB,EAAEvc,KAAK,KAAK,EAAE,IAAIgC,EAAEua,EAAEy7e,UAAkB,GAARz7e,EAAEy2J,QAAWujV,GAAGv0f,EAAE,IAAIua,EAAEy2J,QAAQ,IAAgBypW,GAAG3jgB,EAATwjgB,GAAGxjgB,GAAU9W,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAI8a,EAAEP,EAAEy7e,UAAUkG,cAAsBqe,GAAGzjgB,EAATwjgB,GAAGxjgB,GAAUgE,GAAG,MAAM,QAAQ,MAAMxpB,MAAMsD,EAAE,MAAiC,CAAzB,MAAMmG,GAAGq4e,GAAEt8d,EAAEA,EAAE/U,OAAOhH,EAAG,CAAA+b,EAAEk6J,QAAQ,CAAE,CAAE,KAAFj6J,IAASD,EAAEk6J,QAAQ,KAAM,UAASoqW,GAAGtkgB,EAAEC,EAAEpG,GAAG0hK,GAAEv7J,EAAEukgB,GAAGvkgB,EAAEC,EAAEpG,EAAG,CACxb,SAAS0qgB,GAAGvkgB,EAAEC,EAAEpG,GAAG,IAAI,IAAI4J,EAAE,KAAY,EAAPzD,EAAEuH,MAAQ,OAAOg0J,IAAG,CAAC,IAAIryK,EAAEqyK,GAAEx3J,EAAE7a,EAAEojC,MAAM,GAAG,KAAKpjC,EAAEhC,KAAKuc,EAAE,CAAC,IAAIO,EAAE,OAAO9a,EAAEs3f,eAAeoiB,GAAG,IAAI5+f,EAAE,CAAC,IAAI9nB,EAAEgN,EAAEo3f,UAAUr8f,EAAE,OAAO/H,GAAG,OAAOA,EAAEskgB,eAAeqiB,GAAE3mhB,EAAE0mhB,GAAG,IAAI3+f,EAAE4+f,GAAO,GAALD,GAAG5+f,GAAM6+f,GAAE5+gB,KAAKggB,EAAE,IAAIs3J,GAAEryK,EAAE,OAAOqyK,IAAOt3K,GAAJ+f,EAAEu3J,IAAMjvI,MAAM,KAAKtoB,EAAE9c,KAAK,OAAO8c,EAAEw8e,cAAc3uZ,GAAG3oG,GAAG,OAAOjF,GAAGA,EAAEgH,OAAO+Y,EAAEu3J,GAAEt3K,GAAG4tG,GAAG3oG,GAAG,KAAK,OAAO6a,GAAGw3J,GAAEx3J,EAAEwggB,GAAGxggB,EAAE9D,EAAEpG,GAAGkK,EAAEA,EAAE68e,QAAQrlV,GAAEryK,EAAE05gB,GAAG1mhB,EAAE2mhB,GAAE5+f,CAAE,CAAAuggB,GAAGxkgB,EAAO,MAAK,KAAoB,KAAf9W,EAAEu4gB,eAAoB,OAAO19f,GAAGA,EAAE9Y,OAAO/B,EAAEqyK,GAAEx3J,GAAGyggB,GAAGxkgB,EAAO,CAAC,CACxc,SAASwkgB,GAAGxkgB,GAAG,KAAK,OAAOu7J,IAAG,CAAC,IAAIt7J,EAAEs7J,GAAE,GAAG,KAAa,KAARt7J,EAAEi6J,OAAY,CAAC,IAAIrgK,EAAEoG,EAAEqgf,UAAU,IAAI,GAAG,KAAa,KAARrgf,EAAEi6J,OAAY,OAAOj6J,EAAE/Y,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG27gB,IAAGO,GAAG,EAAEnjgB,GAAG,MAAM,KAAK,EAAE,IAAIwD,EAAExD,EAAEi/e,UAAU,GAAW,EAARj/e,EAAEi6J,QAAU2oW,GAAE,GAAG,OAAOhpgB,EAAE4J,EAAEgoB,wBAAwB,CAAC,IAAIviC,EAAE+W,EAAE2te,cAAc3te,EAAE3a,KAAKuU,EAAE46f,cAAcK,GAAG70f,EAAE3a,KAAKuU,EAAE46f,eAAehxf,EAAEqoB,mBAAmB5iC,EAAE2Q,EAAE2mf,cAAc/8e,EAAEghgB,oCAAqC,KAAI1ggB,EAAE9D,EAAEq2f,YAAY,OAAOvyf,GAAGszf,GAAGp3f,EAAE8D,EAAEN,GAAG,MAAM,KAAK,EAAE,IAAIO,EAAE/D,EAAEq2f,YAAY,GAAG,OAAOtyf,EAAE,CAAQ,GAAPnK,EAAE,KAAQ,OAAOoG,EAAEqsB,MAAM,OAAOrsB,EAAEqsB,MAAMplC,KAAK,KAAK,EACvf,KAAK,EAAE2S,EAAEoG,EAAEqsB,MAAM4yd,UAAUmY,GAAGp3f,EAAE+D,EAAEnK,EAAG,OAAM,KAAK,EAAE,IAAI3d,EAAE+jB,EAAEi/e,UAAU,GAAG,OAAOrlf,GAAW,EAARoG,EAAEi6J,MAAQ,CAACrgK,EAAE3d,EAAE,IAAI+H,EAAEgc,EAAEw0f,cAAc,OAAOx0f,EAAE3a,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWrB,EAAEs+gB,WAAW1ogB,EAAEyM,QAAQ,MAAM,IAAK,MAAMriB,EAAEi+D,MAAMroD,EAAEqoD,IAAIj+D,EAAEi+D,KAAM,OAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAOjiD,EAAEugf,cAAc,CAAC,IAAIv8e,EAAEhE,EAAEqgf,UAAU,GAAG,OAAOr8e,EAAE,CAAC,IAAI9mB,EAAE8mB,EAAEu8e,cAAc,GAAG,OAAOrjgB,EAAE,CAAC,IAAIgnB,EAAEhnB,EAAEsjgB,WAAW,OAAOt8e,GAAGwhf,GAAGxhf,EAAG,CAAC,CAAC,OAC5c,QAAQ,MAAM3pB,MAAMsD,EAAE,MAAO+khB,IAAW,IAAR5igB,EAAEi6J,OAAWmpW,GAAGpjgB,EAA4B,CAAzB,MAAMqE,GAAGg4d,GAAEr8d,EAAEA,EAAEhV,OAAOqZ,EAAG,CAAC,IAAGrE,IAAID,EAAE,CAACu7J,GAAE,KAAK,KAAM,CAAY,GAAG,QAAf1hK,EAAEoG,EAAE2gf,SAAoB,CAAC/mf,EAAE5O,OAAOgV,EAAEhV,OAAOswK,GAAE1hK,EAAE,KAAM,CAAA0hK,GAAEt7J,EAAEhV,MAAO,CAAC,UAASo5gB,GAAGrkgB,GAAG,KAAK,OAAOu7J,IAAG,CAAC,IAAIt7J,EAAEs7J,GAAE,GAAGt7J,IAAID,EAAE,CAACu7J,GAAE,KAAK,KAAM,KAAI1hK,EAAEoG,EAAE2gf,QAAQ,GAAG,OAAO/mf,EAAE,CAACA,EAAE5O,OAAOgV,EAAEhV,OAAOswK,GAAE1hK,EAAE,KAAM,CAAA0hK,GAAEt7J,EAAEhV,MAAO,CAAC,CACxS,SAAS4mG,GAAG7xF,GAAG,KAAK,OAAOu7J,IAAG,CAAC,IAAIt7J,EAAEs7J,GAAE,IAAI,OAAOt7J,EAAE/Y,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI2S,EAAEoG,EAAEhV,OAAO,IAAIm4gB,GAAG,EAAEnjgB,EAAqB,CAAlB,MAAMhc,GAAGq4e,GAAEr8d,EAAEpG,EAAE5V,EAAG,OAAM,KAAK,EAAE,IAAIwf,EAAExD,EAAEi/e,UAAU,GAAG,oBAAoBz7e,EAAEgoB,kBAAkB,CAAC,IAAIviC,EAAE+W,EAAEhV,OAAO,IAAIwY,EAAEgoB,mBAAsC,CAAlB,MAAMxnC,GAAGq4e,GAAEr8d,EAAE/W,EAAEjF,EAAG,CAAC,KAAI8f,EAAE9D,EAAEhV,OAAO,IAAIo4gB,GAAGpjgB,EAAqB,CAAlB,MAAMhc,GAAGq4e,GAAEr8d,EAAE8D,EAAE9f,EAAG,OAAM,KAAK,EAAE,IAAI+f,EAAE/D,EAAEhV,OAAO,IAAIo4gB,GAAGpjgB,EAAqB,CAAlB,MAAMhc,GAAGq4e,GAAEr8d,EAAE+D,EAAE/f,EAAG,EAA2B,CAAzB,MAAMA,GAAGq4e,GAAEr8d,EAAEA,EAAEhV,OAAOhH,EAAG,IAAGgc,IAAID,EAAE,CAACu7J,GAAE,KAAK,KAAM,KAAIr/K,EAAE+jB,EAAE2gf,QAAQ,GAAG,OAAO1kgB,EAAE,CAACA,EAAE+O,OAAOgV,EAAEhV,OAAOswK,GAAEr/K,EAAE,KAAM,CAAAq/K,GAAEt7J,EAAEhV,MAAO,CAAC,CAC9d,IAwBkNy5gB,GAxB9M3wa,GAAGvqG,KAAKq7E,KAAK8/b,GAAGxmgB,EAAG67f,uBAAuBvzgB,GAAG0X,EAAGkhgB,kBAAkBuF,GAAGzmgB,EAAG0nf,wBAAwBoR,GAAE,EAAE4E,GAAE,KAAKgJ,GAAE,KAAK98b,GAAE,EAAEk4b,GAAG,EAAED,GAAGhO,GAAG,GAAGwQ,GAAE,EAAEsC,GAAG,KAAKh6C,GAAG,EAAEi6C,GAAG,EAAEtua,GAAG,EAAEe,GAAG,KAAKM,GAAG,KAAKssa,GAAG,EAAE3B,GAAGz8D,IAASg/D,GAAG,KAAKvG,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKoG,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAASv+b,KAAI,OAAO,KAAO,EAAFiwb,IAAK1V,MAAK,IAAI+jB,GAAGA,GAAGA,GAAG/jB,IAAI,CACjU,SAASqW,GAAG53f,GAAG,OAAG,KAAY,EAAPA,EAAEuH,MAAe,EAAK,KAAO,EAAF0vf,KAAM,IAAIlvb,GAASA,IAAGA,GAAK,OAAO8sb,GAAG9jf,YAAkB,IAAIw0f,KAAKA,GAAGjiB,MAAMiiB,IAAU,KAAPvlgB,EAAE29O,IAAkB39O,EAAiBA,OAAE,KAAjBA,EAAE9lB,OAAO8G,OAAmB,GAAGklgB,GAAGlmf,EAAE1a,KAAe,UAASuygB,GAAG73f,EAAEC,EAAEpG,EAAE4J,GAAG,GAAG,GAAG2hgB,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK7qhB,MAAMsD,EAAE,MAAM0lgB,GAAGxjf,EAAEnG,EAAE4J,GAAM,KAAO,EAAFwzf,KAAMj3f,IAAI67f,KAAE77f,IAAI67f,KAAI,KAAO,EAAF5E,MAAO8N,IAAIlrgB,GAAG,IAAI2ogB,IAAGgD,GAAGxlgB,EAAE+nE,KAAI09b,GAAGzlgB,EAAEyD,GAAG,IAAI5J,GAAG,IAAIo9f,IAAG,KAAY,EAAPh3f,EAAEsH,QAAUk7f,GAAGlhB,KAAI,IAAIwR,IAAIE,MAAM,CAC3Y,SAASwS,GAAGzlgB,EAAEC,GAAG,IAAIpG,EAAEmG,EAAE0lgB,cA5MzB,SAAY1lgB,EAAEC,GAAG,IAAI,IAAIpG,EAAEmG,EAAEgjf,eAAev/e,EAAEzD,EAAEijf,YAAY/5f,EAAE8W,EAAE2lgB,gBAAgB5hgB,EAAE/D,EAAE+if,aAAa,EAAEh/e,GAAG,CAAC,IAAIC,EAAE,GAAGu+e,GAAGx+e,GAAG7nB,EAAE,GAAG8nB,EAAE/f,EAAEiF,EAAE8a,IAAO,IAAI/f,EAAM,KAAK/H,EAAE2d,IAAI,KAAK3d,EAAEunB,KAAGva,EAAE8a,GAAGo/e,GAAGlngB,EAAE+jB,IAAQhc,GAAGgc,IAAID,EAAE4lgB,cAAc1phB,GAAG6nB,IAAI7nB,CAAE,CAAC,CA4MpL2phB,CAAG7lgB,EAAEC,GAAG,IAAIwD,EAAEq/e,GAAG9if,EAAEA,IAAI67f,GAAE9zb,GAAE,GAAG,GAAG,IAAItkE,EAAE,OAAO5J,GAAGonf,GAAGpnf,GAAGmG,EAAE0lgB,aAAa,KAAK1lgB,EAAE8lgB,iBAAiB,OAAO,GAAG7lgB,EAAEwD,GAAGA,EAAEzD,EAAE8lgB,mBAAmB7lgB,EAAE,CAAgB,GAAf,MAAMpG,GAAGonf,GAAGpnf,GAAM,IAAIoG,EAAE,IAAID,EAAE9Y,IA7IsJ,SAAY8Y,GAAG+yf,IAAG,EAAGC,GAAGhzf,EAAG,CA6I7K8wF,CAAGi1a,GAAGhphB,KAAK,KAAKijB,IAAIgzf,GAAG+S,GAAGhphB,KAAK,KAAKijB,IAAImxf,IAAG,WAAW,KAAO,EAAF8F,KAAMhE,IAAK,IAAEp5f,EAAE,SAAS,CAAC,OAAO8pf,GAAGlgf,IAAI,KAAK,EAAE5J,EAAE8nf,GAAG,MAAM,KAAK,EAAE9nf,EAAEgof,GAAG,MAAM,KAAK,GAAwC,QAAQhof,EAAEkof,SAApC,KAAK,UAAUlof,EAAEsof,GAAsBtof,EAAEmsgB,GAAGnsgB,EAAEosgB,GAAGlphB,KAAK,KAAKijB,GAAI,CAAAA,EAAE8lgB,iBAAiB7lgB,EAAED,EAAE0lgB,aAAa7rgB,CAAE,CAAC,CAC9c,SAASosgB,GAAGjmgB,EAAEC,GAAc,GAAXqlgB,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAFtO,IAAK,MAAMz8gB,MAAMsD,EAAE,MAAM,IAAI+b,EAAEmG,EAAE0lgB,aAAa,GAAGQ,MAAMlmgB,EAAE0lgB,eAAe7rgB,EAAE,OAAO,KAAK,IAAI4J,EAAEq/e,GAAG9if,EAAEA,IAAI67f,GAAE9zb,GAAE,GAAG,GAAG,IAAItkE,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAEzD,EAAE4lgB,eAAe3lgB,EAAEA,EAAEkmgB,GAAGnmgB,EAAEyD,OAAO,CAACxD,EAAEwD,EAAE,IAAIva,EAAE+tgB,GAAEA,IAAG,EAAE,IAAIlzf,EAAEqigB,KAAgD,IAAxCvK,KAAI77f,GAAG+nE,KAAI9nE,IAAE+kgB,GAAG,KAAKvC,GAAGlhB,KAAI,IAAI8kB,GAAGrmgB,EAAEC,MAAM,IAAIqmgB,KAAK,KAAuB,CAAjB,MAAMpqhB,GAAGqqhB,GAAGvmgB,EAAE9jB,EAAG,CAASi5gB,KAAKwP,GAAGjrgB,QAAQqK,EAAEkzf,GAAE/tgB,EAAE,OAAO27gB,GAAE5kgB,EAAE,GAAG47f,GAAE,KAAK9zb,GAAE,EAAE9nE,EAAEuigB,GAAG,IAAG,IAAIvigB,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAAR/W,EAAEm6f,GAAGrjf,MAAWyD,EAAEva,EAAE+W,EAAEumgB,GAAGxmgB,EAAE9W,KAAQ,IAAI+W,EAAE,MAAMpG,EAAEirgB,GAAGuB,GAAGrmgB,EAAE,GAAGwlgB,GAAGxlgB,EAAEyD,GAAGgigB,GAAGzlgB,EAAEuhf,MAAK1nf,EAAE,GAAG,IAAIoG,EAAEulgB,GAAGxlgB,EAAEyD,OAChf,CAAuB,GAAtBva,EAAE8W,EAAEtG,QAAQ4mf,UAAa,KAAO,GAAF78e,KAGnC,SAAYzD,GAAG,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAW,MAARC,EAAEi6J,MAAY,CAAC,IAAIrgK,EAAEoG,EAAEq2f,YAAY,GAAG,OAAOz8f,GAAe,QAAXA,EAAEA,EAAEmigB,QAAiB,IAAI,IAAIv4f,EAAE,EAAEA,EAAE5J,EAAEjZ,OAAO6iB,IAAI,CAAC,IAAIva,EAAE2Q,EAAE4J,GAAGM,EAAE7a,EAAEyygB,YAAYzygB,EAAEA,EAAE/K,MAAM,IAAI,IAAIqugB,GAAGzof,IAAI7a,GAAG,OAAM,CAAqB,CAAlB,MAAM8a,GAAG,OAAM,CAAG,CAAC,CAAC,CAAU,GAAVnK,EAAEoG,EAAEqsB,MAAwB,MAAfrsB,EAAEwhgB,cAAoB,OAAO5ngB,EAAEA,EAAE5O,OAAOgV,EAAEA,EAAEpG,MAAM,CAAC,GAAGoG,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAE2gf,SAAS,CAAC,GAAG,OAAO3gf,EAAEhV,QAAQgV,EAAEhV,SAAS+U,EAAE,OAAM,EAAGC,EAAEA,EAAEhV,MAAO,CAAAgV,EAAE2gf,QAAQ31f,OAAOgV,EAAEhV,OAAOgV,EAAEA,EAAE2gf,OAAQ,CAAC,QAAM,CAAG,CAHxX6lB,CAAGv9gB,KAAe,KAAV+W,EAAEkmgB,GAAGnmgB,EAAEyD,MAAmB,KAARM,EAAEs/e,GAAGrjf,MAAWyD,EAAEM,EAAE9D,EAAEumgB,GAAGxmgB,EAAE+D,KAAK,IAAI9D,GAAG,MAAMpG,EAAEirgB,GAAGuB,GAAGrmgB,EAAE,GAAGwlgB,GAAGxlgB,EAAEyD,GAAGgigB,GAAGzlgB,EAAEuhf,MAAK1nf,EAAqC,OAAnCmG,EAAE0mgB,aAAax9gB,EAAE8W,EAAE2mgB,cAAcljgB,EAASxD,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMzlB,MAAMsD,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAE8ohB,GAAG5mgB,EAAE83F,GAAGkta,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGxlgB,EAAEyD,IAAS,UAAFA,KAAeA,GAAiB,IAAbxD,EAAEmkgB,GAAG,IAAI7iB,MAAU,CAAC,GAAG,IAAIuB,GAAG9if,EAAE,GAAG,MAAyB,KAAnB9W,EAAE8W,EAAEgjf,gBAAqBv/e,KAAKA,EAAE,CAACujE,KAAIhnE,EAAEijf,aAAajjf,EAAEgjf,eAAe95f,EAAE,KAAM,CAAA8W,EAAE6mgB,cAAc7V,GAAG4V,GAAG7phB,KAAK,KAAKijB,EAAE83F,GAAGkta,IAAI/kgB,GAAG,KAAM,CAAA2mgB,GAAG5mgB,EAAE83F,GAAGkta,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGxlgB,EAAEyD,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfxD,EAAED,EAAEyjf,WAAev6f,GAAG,EAAE,EAAEua,GAAG,CAAC,IAAIO,EAAE,GAAGu+e,GAAG9+e,GAAGM,EAAE,GAAGC,GAAEA,EAAE/D,EAAE+D,IAAK9a,IAAIA,EAAE8a,GAAGP,IAAIM,CAAE,CAAoG,GAApGN,EAAEva,EAAqG,IAA3Fua,GAAG,KAAXA,EAAE89e,KAAI99e,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKswF,GAAGtwF,EAAE,OAAOA,GAAU,CAACzD,EAAE6mgB,cAAc7V,GAAG4V,GAAG7phB,KAAK,KAAKijB,EAAE83F,GAAGkta,IAAIvhgB,GAAG,KAAM,CAAAmjgB,GAAG5mgB,EAAE83F,GAAGkta,IAAI,MAA+B,QAAQ,MAAMxqhB,MAAMsD,EAAE,MAAQ,CAAC,CAAU,OAAV2nhB,GAAGzlgB,EAAEuhf,MAAYvhf,EAAE0lgB,eAAe7rgB,EAAEosgB,GAAGlphB,KAAK,KAAKijB,GAAG,IAAK,CACtX,SAASwmgB,GAAGxmgB,EAAEC,GAAG,IAAIpG,EAAE29F,GAA2G,OAAxGx3F,EAAEtG,QAAQ8mf,cAAc2E,eAAekhB,GAAGrmgB,EAAEC,GAAGi6J,OAAO,KAAe,KAAVl6J,EAAEmmgB,GAAGnmgB,EAAEC,MAAWA,EAAE63F,GAAGA,GAAGj+F,EAAE,OAAOoG,GAAGkigB,GAAGligB,IAAWD,CAAE,UAASmigB,GAAGnigB,GAAG,OAAO83F,GAAGA,GAAG93F,EAAE83F,GAAGz3G,KAAK2X,MAAM8/F,GAAG93F,EAAG,CAE7L,SAASwlgB,GAAGxlgB,EAAEC,GAAuD,IAApDA,IAAIw2F,GAAGx2F,IAAI8kgB,GAAG/kgB,EAAEgjf,gBAAgB/if,EAAED,EAAEijf,cAAchjf,EAAMD,EAAEA,EAAE2lgB,gBAAgB,EAAE1lgB,GAAG,CAAC,IAAIpG,EAAE,GAAG0of,GAAGtif,GAAGwD,EAAE,GAAG5J,EAAEmG,EAAEnG,IAAI,EAAEoG,IAAIwD,CAAE,CAAC,UAASsigB,GAAG/lgB,GAAG,GAAG,KAAO,EAAFi3f,IAAK,MAAMz8gB,MAAMsD,EAAE,MAAMoohB,KAAK,IAAIjmgB,EAAE6if,GAAG9if,EAAE,GAAG,GAAG,KAAO,EAAFC,GAAK,OAAOwlgB,GAAGzlgB,EAAEuhf,MAAK,KAAK,IAAI1nf,EAAEssgB,GAAGnmgB,EAAEC,GAAG,GAAG,IAAID,EAAE9Y,KAAK,IAAI2S,EAAE,CAAC,IAAI4J,EAAE4/e,GAAGrjf,GAAG,IAAIyD,IAAIxD,EAAEwD,EAAE5J,EAAE2sgB,GAAGxmgB,EAAEyD,GAAI,IAAG,IAAI5J,EAAE,MAAMA,EAAEirgB,GAAGuB,GAAGrmgB,EAAE,GAAGwlgB,GAAGxlgB,EAAEC,GAAGwlgB,GAAGzlgB,EAAEuhf,MAAK1nf,EAAE,GAAG,IAAIA,EAAE,MAAMrf,MAAMsD,EAAE,MAAiF,OAA3EkiB,EAAE0mgB,aAAa1mgB,EAAEtG,QAAQ4mf,UAAUtgf,EAAE2mgB,cAAc1mgB,EAAE2mgB,GAAG5mgB,EAAE83F,GAAGkta,IAAIS,GAAGzlgB,EAAEuhf,MAAY,IAAK,CACxd,SAASulB,GAAG9mgB,EAAEC,GAAG,IAAIpG,EAAEo9f,GAAEA,IAAG,EAAE,IAAI,OAAOj3f,EAAEC,EAA4C,CAAzD,QAA4B,KAAJg3f,GAAEp9f,KAAU4ogB,GAAGlhB,KAAI,IAAIwR,IAAIE,KAAM,CAAC,UAAS8T,GAAG/mgB,GAAG,OAAOklgB,IAAI,IAAIA,GAAGh+gB,KAAK,KAAO,EAAF+vgB,KAAMiP,KAAK,IAAIjmgB,EAAEg3f,GAAEA,IAAG,EAAE,IAAIp9f,EAAE+qgB,GAAG7zf,WAAWtN,EAAEk6O,GAAE,IAAI,GAAGinR,GAAG7zf,WAAW,KAAK4sO,GAAE,EAAE39O,EAAE,OAAOA,GAAoD,CAA3F,QAAmD29O,GAAEl6O,EAAEmhgB,GAAG7zf,WAAWlX,EAAM,KAAO,GAAXo9f,GAAEh3f,KAAagzf,IAAK,CAAC,UAASyP,KAAKzC,GAAGD,GAAGtmgB,QAAQytE,GAAE64b,GAAI,CACjT,SAASqG,GAAGrmgB,EAAEC,GAAGD,EAAE0mgB,aAAa,KAAK1mgB,EAAE2mgB,cAAc,EAAE,IAAI9sgB,EAAEmG,EAAE6mgB,cAAiD,IAAlC,IAAIhtgB,IAAImG,EAAE6mgB,eAAe,EAAE5V,GAAGp3f,IAAO,OAAOgrgB,GAAE,IAAIhrgB,EAAEgrgB,GAAE55gB,OAAO,OAAO4O,GAAG,CAAC,IAAI4J,EAAE5J,EAAQ,OAAN45f,GAAGhwf,GAAUA,EAAEvc,KAAK,KAAK,EAA6B,QAA3Buc,EAAEA,EAAEne,KAAKgmc,yBAA4B,IAAS7nb,GAAGgvf,KAAK,MAAM,KAAK,EAAE8G,KAAKpyb,GAAEgrb,IAAIhrb,GAAEI,IAAGsyb,KAAK,MAAM,KAAK,EAAEJ,GAAGh2f,GAAG,MAAM,KAAK,EAAE81f,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGpyb,GAAEP,IAAG,MAAM,KAAK,GAAGwub,GAAG3xf,EAAEne,KAAKk7I,UAAU,MAAM,KAAK,GAAG,KAAK,GAAGkiY,KAAK7ogB,EAAEA,EAAE5O,MAAO,CAAoE,GAApE4wgB,GAAE77f,EAAE6kgB,GAAE7kgB,EAAE24f,GAAG34f,EAAEtG,QAAQ,MAAMquE,GAAEk4b,GAAGhggB,EAAEuigB,GAAE,EAAEsC,GAAG,KAAKrua,GAAGsua,GAAGj6C,GAAG,EAAEhzX,GAAGN,GAAG,KAAQ,OAAOu+Z,GAAG,CAAC,IAAI91f,EAC1f,EAAEA,EAAE81f,GAAGn1gB,OAAOqf,IAAI,GAA2B,QAAhBwD,GAAR5J,EAAEk8f,GAAG91f,IAAOi2f,aAAqB,CAACr8f,EAAEq8f,YAAY,KAAK,IAAIhtgB,EAAEua,EAAErY,KAAK2Y,EAAElK,EAAE6qK,QAAQ,GAAG,OAAO3gK,EAAE,CAAC,IAAIC,EAAED,EAAE3Y,KAAK2Y,EAAE3Y,KAAKlC,EAAEua,EAAErY,KAAK4Y,CAAE,CAAAnK,EAAE6qK,QAAQjhK,CAAE,CAAAsyf,GAAG,IAAK,QAAO/1f,CAAE,CAC5K,SAASumgB,GAAGvmgB,EAAEC,GAAG,OAAE,CAAC,IAAIpG,EAAEgrgB,GAAE,IAAuB,GAAnB1P,KAAK4E,GAAGrggB,QAAQohgB,GAAMT,GAAG,CAAC,IAAI,IAAI52f,EAAE02f,GAAE3Z,cAAc,OAAO/8e,GAAG,CAAC,IAAIva,EAAEua,EAAEwqC,MAAM,OAAO/kD,IAAIA,EAAEw7K,QAAQ,MAAMjhK,EAAEA,EAAErY,IAAK,CAAAivgB,IAAG,CAAG,CAA2C,GAA3CH,GAAG,EAAEE,GAAEr0c,GAAEo0c,GAAE,KAAKG,IAAG,EAAGC,GAAG,EAAE9zgB,GAAGiT,QAAQ,KAAQ,OAAOG,GAAG,OAAOA,EAAE5O,OAAO,CAACu3gB,GAAE,EAAEsC,GAAG7kgB,EAAE4kgB,GAAE,KAAK,KAAM,CAAA7kgB,EAAE,CAAC,IAAI+D,EAAE/D,EAAEgE,EAAEnK,EAAE5O,OAAO/O,EAAE2d,EAAE5V,EAAEgc,EAAqB,GAAnBA,EAAE8nE,GAAE7rF,EAAEg+K,OAAO,MAAS,OAAOj2K,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAElG,KAAK,CAAC,IAAIkmB,EAAEhgB,EAAE9G,EAAEjB,EAAEioB,EAAEhnB,EAAE+J,IAAI,GAAG,KAAY,EAAP/J,EAAEoqB,QAAU,IAAIpD,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIG,EAAEnnB,EAAEmjgB,UAAUh8e,GAAGnnB,EAAEm5gB,YAAYhyf,EAAEgyf,YAAYn5gB,EAAEqjgB,cAAcl8e,EAAEk8e,cACxerjgB,EAAEw4gB,MAAMrxf,EAAEqxf,QAAQx4gB,EAAEm5gB,YAAY,KAAKn5gB,EAAEqjgB,cAAc,KAAM,KAAIvyf,EAAEixgB,GAAGl7f,GAAG,GAAG,OAAO/V,EAAE,CAACA,EAAEisK,QAAQ,IAAIilW,GAAGlxgB,EAAE+V,EAAE9nB,EAAE6nB,EAAE9D,GAAU,EAAPhS,EAAEsZ,MAAQw3f,GAAGh7f,EAAEE,EAAEhE,GAAOhc,EAAEggB,EAAE,IAAIC,GAAZjE,EAAEhS,GAAcqogB,YAAY,GAAG,OAAOpyf,EAAE,CAAC,IAAIE,EAAE,IAAIplB,IAAIolB,EAAE4pB,IAAI/pC,GAAGgc,EAAEq2f,YAAYlyf,CAAE,MAAKF,EAAE8pB,IAAI/pC,GAAG,MAAM+b,CAAE,CAAK,GAAG,KAAO,EAAFC,GAAK,CAAC8+f,GAAGh7f,EAAEE,EAAEhE,GAAGohgB,KAAK,MAAMrhgB,CAAE,CAAA/b,EAAEzJ,MAAMsD,EAAE,KAAO,MAAK,GAAG81gB,IAAU,EAAP13gB,EAAEqrB,KAAO,CAAC,IAAIqof,EAAEsP,GAAGl7f,GAAG,GAAG,OAAO4rf,EAAE,CAAC,KAAa,MAARA,EAAE11V,SAAe01V,EAAE11V,OAAO,KAAKilW,GAAGvP,EAAE5rf,EAAE9nB,EAAE6nB,EAAE9D,GAAG20f,GAAGuJ,GAAGl6gB,EAAE/H,IAAI,MAAM8jB,CAAE,CAAC,CAAA+D,EAAE9f,EAAEk6gB,GAAGl6gB,EAAE/H,GAAG,IAAIsmhB,KAAIA,GAAE,GAAG,OAAOhra,GAAGA,GAAG,CAACzzF,GAAGyzF,GAAGn3G,KAAK0jB,GAAGA,EAAEC,EAAE,EAAE,CAAC,OAAOD,EAAE7c,KAAK,KAAK,EAAE6c,EAAEm2J,OAAO,MACpfj6J,IAAIA,EAAE8D,EAAE4xf,OAAO11f,EAAkBk3f,GAAGpzf,EAAby6f,GAAGz6f,EAAE9f,EAAEgc,IAAW,MAAMD,EAAE,KAAK,EAAE9jB,EAAE+H,EAAE,IAAI+9G,EAAEj+F,EAAEze,KAAKuW,EAAEkI,EAAEm7e,UAAU,GAAG,KAAa,IAARn7e,EAAEm2J,SAAa,oBAAoBl4D,EAAE0pV,0BAA0B,OAAO7vb,GAAG,oBAAoBA,EAAE+igB,oBAAoB,OAAOC,KAAKA,GAAGjlhB,IAAIiiB,KAAK,CAACkI,EAAEm2J,OAAO,MAAMj6J,IAAIA,EAAE8D,EAAE4xf,OAAO11f,EAAkBk3f,GAAGpzf,EAAb46f,GAAG56f,EAAE7nB,EAAE+jB,IAAW,MAAMD,CAAE,EAAC+D,EAAEA,EAAE9Y,MAAO,OAAM,OAAO8Y,EAAG,CAAAijgB,GAAGntgB,EAA2D,CAAxD,MAAMq2f,GAAIjwf,EAAEiwf,EAAG2U,KAAIhrgB,GAAG,OAAOA,IAAIgrgB,GAAEhrgB,EAAEA,EAAE5O,QAAQ,QAAS,MAAM,CAAS,UAASm7gB,KAAK,IAAIpmgB,EAAE2kgB,GAAGjrgB,QAAsB,OAAdirgB,GAAGjrgB,QAAQohgB,GAAU,OAAO96f,EAAE86f,GAAG96f,CAAE,CACtd,SAASqhgB,KAAQ,IAAImB,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAO3G,IAAG,KAAQ,UAAH/wC,KAAe,KAAQ,UAAHi6C,KAAeS,GAAG3J,GAAE9zb,GAAG,UAASo+b,GAAGnmgB,EAAEC,GAAG,IAAIpG,EAAEo9f,GAAEA,IAAG,EAAE,IAAIxzf,EAAE2igB,KAAqC,IAA7BvK,KAAI77f,GAAG+nE,KAAI9nE,IAAE+kgB,GAAG,KAAKqB,GAAGrmgB,EAAEC,MAAM,IAAIgngB,KAAK,KAAuB,CAAjB,MAAM/9gB,GAAGq9gB,GAAGvmgB,EAAE9W,EAAG,CAA+B,GAAtBisgB,KAAK8B,GAAEp9f,EAAE8qgB,GAAGjrgB,QAAQ+J,EAAK,OAAOohgB,GAAE,MAAMrqhB,MAAMsD,EAAE,MAAiB,OAAX+9gB,GAAE,KAAK9zb,GAAE,EAASy6b,EAAE,UAASyE,KAAK,KAAK,OAAOpC,IAAGqC,GAAGrC,GAAG,UAASyB,KAAK,KAAK,OAAOzB,KAAI1jB,MAAM+lB,GAAGrC,GAAG,UAASqC,GAAGlngB,GAAG,IAAIC,EAAEykgB,GAAG1kgB,EAAEsgf,UAAUtgf,EAAEiggB,IAAIjggB,EAAEy0f,cAAcz0f,EAAEk0f,aAAa,OAAOj0f,EAAE+mgB,GAAGhngB,GAAG6kgB,GAAE5kgB,EAAExZ,GAAGiT,QAAQ,IAAK,CAC3d,SAASstgB,GAAGhngB,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAInG,EAAEoG,EAAEqgf,UAAqB,GAAXtgf,EAAEC,EAAEhV,OAAU,KAAa,MAARgV,EAAEi6J,QAAc,GAAgB,QAAbrgK,EAAEqogB,GAAGrogB,EAAEoG,EAAEgggB,KAAkB,YAAJ4E,GAAEhrgB,OAAc,CAAW,GAAG,QAAbA,EAAE8ogB,GAAG9ogB,EAAEoG,IAAmC,OAAnBpG,EAAEqgK,OAAO,WAAM2qW,GAAEhrgB,GAAS,GAAG,OAAOmG,EAAmE,OAAXwigB,GAAE,OAAEqC,GAAE,MAA5D7kgB,EAAEk6J,OAAO,MAAMl6J,EAAEyhgB,aAAa,EAAEzhgB,EAAEg0f,UAAU,IAA6B,CAAY,GAAG,QAAf/zf,EAAEA,EAAE2gf,SAAyB,YAAJikB,GAAE5kgB,GAAS4kgB,GAAE5kgB,EAAED,CAAE,OAAM,OAAOC,GAAG,IAAIuigB,KAAIA,GAAE,EAAG,UAASoE,GAAG5mgB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEk6O,GAAEz0P,EAAE07gB,GAAG7zf,WAAW,IAAI6zf,GAAG7zf,WAAW,KAAK4sO,GAAE,EAC3Y,SAAY39O,EAAEC,EAAEpG,EAAE4J,GAAG,GAAGyigB,WAAW,OAAOhB,IAAI,GAAG,KAAO,EAAFjO,IAAK,MAAMz8gB,MAAMsD,EAAE,MAAM+b,EAAEmG,EAAE0mgB,aAAa,IAAIx9gB,EAAE8W,EAAE2mgB,cAAc,GAAG,OAAO9sgB,EAAE,OAAO,KAA2C,GAAtCmG,EAAE0mgB,aAAa,KAAK1mgB,EAAE2mgB,cAAc,EAAK9sgB,IAAImG,EAAEtG,QAAQ,MAAMlf,MAAMsD,EAAE,MAAMkiB,EAAE0lgB,aAAa,KAAK1lgB,EAAE8lgB,iBAAiB,EAAE,IAAI/hgB,EAAElK,EAAE87f,MAAM97f,EAAE07f,WAA8J,GA1NtT,SAAYv1f,EAAEC,GAAG,IAAIpG,EAAEmG,EAAE+if,cAAc9if,EAAED,EAAE+if,aAAa9if,EAAED,EAAEgjf,eAAe,EAAEhjf,EAAEijf,YAAY,EAAEjjf,EAAE4lgB,cAAc3lgB,EAAED,EAAEmngB,kBAAkBlngB,EAAED,EAAEkjf,gBAAgBjjf,EAAEA,EAAED,EAAEmjf,cAAc,IAAI1/e,EAAEzD,EAAEyjf,WAAW,IAAIzjf,EAAEA,EAAE2lgB,gBAAgB,EAAE9rgB,GAAG,CAAC,IAAI3Q,EAAE,GAAGq5f,GAAG1of,GAAGkK,EAAE,GAAG7a,EAAE+W,EAAE/W,GAAG,EAAEua,EAAEva,IAAI,EAAE8W,EAAE9W,IAAI,EAAE2Q,IAAIkK,CAAE,CAAC,CA0N7GqjgB,CAAGpngB,EAAE+D,GAAG/D,IAAI67f,KAAIgJ,GAAEhJ,GAAE,KAAK9zb,GAAE,GAAG,KAAoB,KAAfluE,EAAE4ngB,eAAoB,KAAa,KAAR5ngB,EAAEqgK,QAAa+qW,KAAKA,IAAG,EAAGe,GAAGjkB,IAAG,WAAgB,OAALmkB,KAAY,IAAK,KAAGnigB,EAAE,KAAa,MAARlK,EAAEqgK,OAAgB,KAAoB,MAAfrgK,EAAE4ngB,eAAqB19f,EAAE,CAACA,EAAE6ggB,GAAG7zf,WAAW6zf,GAAG7zf,WAAW,KAChf,IAAI/M,EAAE25O,GAAEA,GAAE,EAAE,IAAIzhQ,EAAE+6gB,GAAEA,IAAG,EAAExwgB,GAAGiT,QAAQ,KA1CpC,SAAYsG,EAAEC,GAAgB,GAAb4wf,GAAG9lC,GAAagiC,GAAV/sf,EAAE4sf,MAAc,CAAC,GAAG,mBAAmB5sf,EAAE,IAAInG,EAAE,CAAC2iB,MAAMxc,EAAEyrO,eAAethP,IAAI6V,EAAE0rO,mBAAmB1rO,EAAE,CAA8C,IAAIyD,GAAjD5J,GAAGA,EAAEmG,EAAEmT,gBAAgBtZ,EAAEsuB,aAAajuC,QAAemuD,cAAcxuC,EAAEwuC,eAAe,GAAG5kC,GAAG,IAAIA,EAAE2pf,WAAW,CAACvzf,EAAE4J,EAAE4pf,WAAW,IAAInkgB,EAAEua,EAAE6pf,aAAavpf,EAAEN,EAAE8pf,UAAU9pf,EAAEA,EAAE+pf,YAAY,IAAI3zf,EAAEm8B,SAASjyB,EAAEiyB,QAAiC,CAAxB,MAAM0rF,GAAG7nH,EAAE,KAAK,MAAMmG,CAAE,KAAIgE,EAAE,EAAE9nB,GAAG,EAAE+H,GAAG,EAAEggB,EAAE,EAAE9mB,EAAE,EAAEgnB,EAAEnE,EAAEsE,EAAE,KAAKrE,EAAE,OAAO,CAAC,IAAI,IAAIhS,EAAKkW,IAAItK,GAAG,IAAI3Q,GAAG,IAAIib,EAAE6xB,WAAW95C,EAAE8nB,EAAE9a,GAAGib,IAAIJ,GAAG,IAAIN,GAAG,IAAIU,EAAE6xB,WAAW/xC,EAAE+f,EAAEP,GAAG,IAAIU,EAAE6xB,WAAWhyB,GACnfG,EAAEujK,UAAU9mL,QAAW,QAAQqN,EAAEkW,EAAE1c,aAAkB6c,EAAEH,EAAEA,EAAElW,EAAE,OAAO,CAAC,GAAGkW,IAAInE,EAAE,MAAMC,EAA8C,GAA5CqE,IAAIzK,KAAKoK,IAAI/a,IAAIhN,EAAE8nB,GAAGM,IAAIP,KAAK5mB,IAAIsmB,IAAIxf,EAAE+f,GAAM,QAAQ/V,EAAEkW,EAAE7c,aAAa,MAAUgd,GAAJH,EAAEG,GAAMjb,UAAW,CAAA8a,EAAElW,CAAE,CAAA4L,GAAG,IAAI3d,IAAI,IAAI+H,EAAE,KAAK,CAACu4B,MAAMtgC,EAAEiO,IAAIlG,EAAG,MAAK4V,EAAE,IAAK,CAAAA,EAAEA,GAAG,CAAC2iB,MAAM,EAAEryB,IAAI,EAAG,MAAK0P,EAAE,KAA+C,IAA1Ci3f,GAAG,CAAC5D,YAAYltf,EAAEmtf,eAAetzf,GAAGkxd,IAAG,EAAOxvT,GAAEt7J,EAAE,OAAOs7J,IAAG,GAAOv7J,GAAJC,EAAEs7J,IAAMjvI,MAAM,KAAoB,KAAfrsB,EAAEwhgB,eAAoB,OAAOzhgB,EAAEA,EAAE/U,OAAOgV,EAAEs7J,GAAEv7J,OAAO,KAAK,OAAOu7J,IAAG,CAACt7J,EAAEs7J,GAAE,IAAI,IAAIr3J,EAAEjE,EAAEqgf,UAAU,GAAG,KAAa,KAARrgf,EAAEi6J,OAAY,OAAOj6J,EAAE/Y,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAOgd,EAAE,CAAC,IAAIE,EAAEF,EAAEuwf,cAAc7E,EAAE1rf,EAAEs8e,cAAcxyf,EAAEiS,EAAEi/e,UAAUl9Y,EAAEh0G,EAAEo2K,wBAAwBnkK,EAAE2te,cAAc3te,EAAE3a,KAAK8e,EAAE0wf,GAAG70f,EAAE3a,KAAK8e,GAAGwrf,GAAG5hgB,EAAEy2gB,oCAAoCzia,CAAE,OAAM,KAAK,EAAE,IAAInmG,EAAEoE,EAAEi/e,UAAUkG,cAAc,IAAIvpf,EAAEm6B,SAASn6B,EAAEyrC,YAAY,GAAG,IAAIzrC,EAAEm6B,UAAUn6B,EAAEssC,iBAAiBtsC,EAAEvS,YAAYuS,EAAEssC,iBAAiB,MAAyC,QAAQ,MAAM3tD,MAAMsD,EAAE,MAAiC,CAAzB,MAAM4jI,GAAG46W,GAAEr8d,EAAEA,EAAEhV,OAAOy2H,EAAG,CAAY,GAAG,QAAf1hH,EAAEC,EAAE2gf,SAAoB,CAAC5gf,EAAE/U,OAAOgV,EAAEhV,OAAOswK,GAAEv7J,EAAE,KAAM,CAAAu7J,GAAEt7J,EAAEhV,MAAO,CAAAiZ,EAAEg/f,GAAGA,IAAG,CAAY,CAwCndmE,CAAGrngB,EAAEnG,GAAGqqgB,GAAGrqgB,EAAEmG,GAAGitf,GAAG6D,IAAI/lC,KAAK8lC,GAAGC,GAAGD,GAAG,KAAK7wf,EAAEtG,QAAQG,EAAEyqgB,GAAGzqgB,EAAEmG,EAAE9W,GAAGm4f,KAAK4V,GAAE/6gB,EAAEyhQ,GAAE35O,EAAE4ggB,GAAG7zf,WAAWhN,CAAE,MAAK/D,EAAEtG,QAAQG,EAAsF,GAApForgB,KAAKA,IAAG,EAAGC,GAAGllgB,EAAEmlgB,GAAGj8gB,GAAoB,KAAjB6a,EAAE/D,EAAE+if,gBAAqB8b,GAAG,MAjOmJ,SAAY7+f,GAAG,GAAGsif,IAAI,oBAAoBA,GAAGglB,kBAAkB,IAAIhlB,GAAGglB,kBAAkBjlB,GAAGrif,OAAE,EAAO,OAAuB,IAAhBA,EAAEtG,QAAQwgK,OAAsB,CAAV,MAAMj6J,GAAI,CAAC,CAiOzRsngB,CAAG1tgB,EAAEqlf,WAAaumB,GAAGzlgB,EAAEuhf,MAAQ,OAAOthf,EAAE,IAAIwD,EAAEzD,EAAEwngB,mBAAmB3tgB,EAAE,EAAEA,EAAEoG,EAAErf,OAAOiZ,IAAW4J,GAAPva,EAAE+W,EAAEpG,IAAO1b,MAAM,CAAC2ghB,eAAe51gB,EAAE4jY,MAAMsxI,OAAOl1gB,EAAEk1gB,SAAS,GAAGK,GAAG,MAAMA,IAAG,EAAGz+f,EAAE0+f,GAAGA,GAAG,KAAK1+f,EAAE,KAAQ,EAAHmlgB,KAAO,IAAInlgB,EAAE9Y,KAAKg/gB,KAAsB,KAAO,GAAxBnigB,EAAE/D,EAAE+if,eAAuB/if,IAAIqlgB,GAAGD,MAAMA,GAAG,EAAEC,GAAGrlgB,GAAGolgB,GAAG,EAAEnS,IAAiB,CAFzFwU,CAAGzngB,EAAEC,EAAEpG,EAAE4J,EAA+B,CAAnE,QAA+CmhgB,GAAG7zf,WAAW7nB,EAAEy0P,GAAEl6O,CAAE,QAAO,IAAK,CAGjc,SAASyigB,KAAK,GAAG,OAAOhB,GAAG,CAAC,IAAIllgB,EAAE2jf,GAAGwhB,IAAIllgB,EAAE2kgB,GAAG7zf,WAAWlX,EAAE8jP,GAAE,IAAmC,GAA/BinR,GAAG7zf,WAAW,KAAK4sO,GAAE,GAAG39O,EAAE,GAAGA,EAAK,OAAOklgB,GAAG,IAAIzhgB,GAAE,MAAO,CAAmB,GAAlBzD,EAAEklgB,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAFlO,IAAK,MAAMz8gB,MAAMsD,EAAE,MAAM,IAAIoL,EAAE+tgB,GAAO,IAALA,IAAG,EAAM17V,GAAEv7J,EAAEtG,QAAQ,OAAO6hK,IAAG,CAAC,IAAIx3J,EAAEw3J,GAAEv3J,EAAED,EAAEuoB,MAAM,GAAG,KAAa,GAARivI,GAAErB,OAAU,CAAC,IAAIh+K,EAAE6nB,EAAEiwf,UAAU,GAAG,OAAO93gB,EAAE,CAAC,IAAI,IAAI+H,EAAE,EAAEA,EAAE/H,EAAE0E,OAAOqD,IAAI,CAAC,IAAIggB,EAAE/nB,EAAE+H,GAAG,IAAIs3K,GAAEt3J,EAAE,OAAOs3J,IAAG,CAAC,IAAIp+K,EAAEo+K,GAAE,OAAOp+K,EAAE+J,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGi8gB,GAAG,EAAEhmhB,EAAE4mB,GAAG,IAAII,EAAEhnB,EAAEmvC,MAAM,GAAG,OAAOnoB,EAAEA,EAAElZ,OAAO9N,EAAEo+K,GAAEp3J,OAAO,KAAK,OAAOo3J,IAAG,CAAK,IAAIj3J,GAARnnB,EAAEo+K,IAAUqlV,QAAQ3yf,EAAE9Q,EAAE8N,OAAa,GAANq4gB,GAAGnmhB,GAAMA,IACnf8mB,EAAE,CAACs3J,GAAE,KAAK,KAAM,IAAG,OAAOj3J,EAAE,CAACA,EAAErZ,OAAOgD,EAAEstK,GAAEj3J,EAAE,KAAM,CAAAi3J,GAAEttK,CAAE,CAAC,CAAC,KAAIiW,EAAEH,EAAEu8e,UAAU,GAAG,OAAOp8e,EAAE,CAAC,IAAIE,EAAEF,EAAEooB,MAAM,GAAG,OAAOloB,EAAE,CAACF,EAAEooB,MAAM,KAAK,EAAE,CAAC,IAAIsje,EAAExrf,EAAEw8e,QAAQx8e,EAAEw8e,QAAQ,KAAKx8e,EAAEwrf,CAAE,OAAM,OAAOxrf,EAAG,CAAC,CAAAm3J,GAAEx3J,CAAE,CAAC,IAAG,KAAoB,KAAfA,EAAE09f,eAAoB,OAAOz9f,EAAEA,EAAE/Y,OAAO8Y,EAAEw3J,GAAEv3J,OAAO/D,EAAE,KAAK,OAAOs7J,IAAG,CAAK,GAAG,KAAa,MAApBx3J,EAAEw3J,IAAYrB,OAAY,OAAOn2J,EAAE7c,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGi8gB,GAAG,EAAEp/f,EAAEA,EAAE9Y,QAAQ,IAAI+C,EAAE+V,EAAE68e,QAAQ,GAAG,OAAO5yf,EAAE,CAACA,EAAE/C,OAAO8Y,EAAE9Y,OAAOswK,GAAEvtK,EAAE,MAAMiS,CAAE,CAAAs7J,GAAEx3J,EAAE9Y,MAAO,CAAC,KAAI+2G,EAAEhiG,EAAEtG,QAAQ,IAAI6hK,GAAEv5D,EAAE,OAAOu5D,IAAG,CAAK,IAAI1/J,GAARmI,EAAEu3J,IAAUjvI,MAAM,GAAG,KAAoB,KAAftoB,EAAEy9f,eAAoB,OAClf5lgB,EAAEA,EAAE5Q,OAAO+Y,EAAEu3J,GAAE1/J,OAAOoE,EAAE,IAAI+D,EAAEg+F,EAAE,OAAOu5D,IAAG,CAAK,GAAG,KAAa,MAApBr/K,EAAEq/K,IAAYrB,OAAY,IAAI,OAAOh+K,EAAEgL,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGk8gB,GAAG,EAAElnhB,GAA+B,CAA3B,MAAMg0gB,GAAI5zB,GAAEpgf,EAAEA,EAAE+O,OAAOilgB,EAAI,IAAGh0gB,IAAI8nB,EAAE,CAACu3J,GAAE,KAAK,MAAMt7J,CAAE,KAAIyhH,EAAExlI,EAAE0kgB,QAAQ,GAAG,OAAOl/X,EAAE,CAACA,EAAEz2H,OAAO/O,EAAE+O,OAAOswK,GAAE75C,EAAE,MAAMzhH,CAAE,CAAAs7J,GAAEr/K,EAAE+O,MAAO,CAAC,CAAS,GAATgsgB,GAAE/tgB,EAAE+pgB,KAAQ3Q,IAAI,oBAAoBA,GAAGolB,sBAAsB,IAAIplB,GAAGolB,sBAAsBrlB,GAAGrif,EAAc,CAAX,MAAMkwf,GAAK,CAAAzsf,GAAE,CAAG,QAAOA,CAA8B,CAF1U,QAEsTk6O,GAAE9jP,EAAE+qgB,GAAG7zf,WAAW9Q,CAAE,CAAC,QAAM,CAAG,UAAS0ngB,GAAG3ngB,EAAEC,EAAEpG,GAAyBmG,EAAEg3f,GAAGh3f,EAAjBC,EAAEu+f,GAAGx+f,EAAfC,EAAEk+f,GAAGtkgB,EAAEoG,GAAY,GAAY,GAAGA,EAAE+mE,KAAI,OAAOhnE,IAAIwjf,GAAGxjf,EAAE,EAAEC,GAAGwlgB,GAAGzlgB,EAAEC,GAAI,CAC1e,SAASq8d,GAAEt8d,EAAEC,EAAEpG,GAAG,GAAG,IAAImG,EAAE9Y,IAAIyghB,GAAG3ngB,EAAEA,EAAEnG,QAAQ,KAAK,OAAOoG,GAAG,CAAC,GAAG,IAAIA,EAAE/Y,IAAI,CAACyghB,GAAG1ngB,EAAED,EAAEnG,GAAG,KAAM,CAAK,GAAG,IAAIoG,EAAE/Y,IAAI,CAAC,IAAIuc,EAAExD,EAAEi/e,UAAU,GAAG,oBAAoBj/e,EAAE3a,KAAKomc,0BAA0B,oBAAoBjob,EAAEm7f,oBAAoB,OAAOC,KAAKA,GAAGjlhB,IAAI6pB,IAAI,CAAuBxD,EAAE+2f,GAAG/2f,EAAjBD,EAAE2+f,GAAG1+f,EAAfD,EAAEm+f,GAAGtkgB,EAAEmG,GAAY,GAAY,GAAGA,EAAEgnE,KAAI,OAAO/mE,IAAIujf,GAAGvjf,EAAE,EAAED,GAAGylgB,GAAGxlgB,EAAED,IAAI,KAAM,CAAC,CAAAC,EAAEA,EAAEhV,MAAO,CAAC,CACpV,SAASg0gB,GAAGj/f,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEzD,EAAEg/f,UAAU,OAAOv7f,GAAGA,EAAE3d,OAAOma,GAAGA,EAAE+mE,KAAIhnE,EAAEijf,aAAajjf,EAAEgjf,eAAenpf,EAAEgigB,KAAI77f,IAAI+nE,GAAEluE,KAAKA,IAAI,IAAI2ogB,IAAG,IAAIA,KAAM,UAAFz6b,MAAeA,IAAG,IAAIw5a,KAAI6iB,GAAGiC,GAAGrmgB,EAAE,GAAGy2F,IAAI58F,GAAG4rgB,GAAGzlgB,EAAEC,EAAG,UAAS2ngB,GAAG5ngB,EAAEC,GAAG,IAAIA,IAAI,KAAY,EAAPD,EAAEuH,MAAQtH,EAAE,GAAGA,EAAEg2F,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAIp8F,EAAEmtE,KAAc,QAAVhnE,EAAEm2f,GAAGn2f,EAAEC,MAAcujf,GAAGxjf,EAAEC,EAAEpG,GAAG4rgB,GAAGzlgB,EAAEnG,GAAI,UAASyngB,GAAGthgB,GAAG,IAAIC,EAAED,EAAEwgf,cAAc3mf,EAAE,EAAE,OAAOoG,IAAIpG,EAAEoG,EAAEm0f,WAAWwT,GAAG5ngB,EAAEnG,EAAG,CAClZ,SAASmqgB,GAAGhkgB,EAAEC,GAAG,IAAIpG,EAAE,EAAE,OAAOmG,EAAE9Y,KAAK,KAAK,GAAG,IAAIuc,EAAEzD,EAAEk/e,UAAch2f,EAAE8W,EAAEwgf,cAAc,OAAOt3f,IAAI2Q,EAAE3Q,EAAEkrgB,WAAW,MAAM,KAAK,GAAG3wf,EAAEzD,EAAEk/e,UAAU,MAAM,QAAQ,MAAM1kgB,MAAMsD,EAAE,MAAO,OAAO2lB,GAAGA,EAAE3d,OAAOma,GAAG2ngB,GAAG5ngB,EAAEnG,EAAG,CAQoK,SAASmsgB,GAAGhmgB,EAAEC,GAAG,OAAO8gf,GAAG/gf,EAAEC,EAAG,CAClZ,SAAS4ngB,GAAG7ngB,EAAEC,EAAEpG,EAAE4J,GAAGxjB,KAAKiH,IAAI8Y,EAAE/f,KAAKsC,IAAIsX,EAAE5Z,KAAK2ggB,QAAQ3ggB,KAAKqsC,MAAMrsC,KAAKgL,OAAOhL,KAAKi/f,UAAUj/f,KAAKqF,KAAKrF,KAAK2tf,YAAY,KAAK3tf,KAAKmB,MAAM,EAAEnB,KAAKiR,IAAI,KAAKjR,KAAKi0gB,aAAaj0f,EAAEhgB,KAAKw1gB,aAAax1gB,KAAKuggB,cAAcvggB,KAAKq2gB,YAAYr2gB,KAAKw0gB,cAAc,KAAKx0gB,KAAKsnB,KAAK9D,EAAExjB,KAAKwhhB,aAAaxhhB,KAAKi6K,MAAM,EAAEj6K,KAAK+zgB,UAAU,KAAK/zgB,KAAKs1gB,WAAWt1gB,KAAK01gB,MAAM,EAAE11gB,KAAKqggB,UAAU,IAAK,UAASyT,GAAG/zf,EAAEC,EAAEpG,EAAE4J,GAAG,OAAO,IAAIokgB,GAAG7ngB,EAAEC,EAAEpG,EAAE4J,EAAG,UAASi8f,GAAG1/f,GAAiB,UAAdA,EAAEA,EAAE/X,aAAuB+X,EAAE8ngB,iBAAkB,CAErd,SAASnP,GAAG34f,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEsgf,UACuB,OADb,OAAOzmf,IAAGA,EAAEk6f,GAAG/zf,EAAE9Y,IAAI+Y,EAAED,EAAEzd,IAAIyd,EAAEuH,OAAQqme,YAAY5te,EAAE4te,YAAY/ze,EAAEvU,KAAK0a,EAAE1a,KAAKuU,EAAEqlf,UAAUl/e,EAAEk/e,UAAUrlf,EAAEymf,UAAUtgf,EAAEA,EAAEsgf,UAAUzmf,IAAIA,EAAEq6f,aAAaj0f,EAAEpG,EAAEvU,KAAK0a,EAAE1a,KAAKuU,EAAEqgK,MAAM,EAAErgK,EAAE4ngB,aAAa,EAAE5ngB,EAAEm6f,UAAU,MAAMn6f,EAAEqgK,MAAc,SAARl6J,EAAEk6J,MAAergK,EAAE07f,WAAWv1f,EAAEu1f,WAAW17f,EAAE87f,MAAM31f,EAAE21f,MAAM97f,EAAEyyB,MAAMtsB,EAAEssB,MAAMzyB,EAAE46f,cAAcz0f,EAAEy0f,cAAc56f,EAAE2mf,cAAcxgf,EAAEwgf,cAAc3mf,EAAEy8f,YAAYt2f,EAAEs2f,YAAYr2f,EAAED,EAAEy1f,aAAa57f,EAAE47f,aAAa,OAAOx1f,EAAE,KAAK,CAAC01f,MAAM11f,EAAE01f,MAAMD,aAAaz1f,EAAEy1f,cAC/e77f,EAAE+mf,QAAQ5gf,EAAE4gf,QAAQ/mf,EAAEzY,MAAM4e,EAAE5e,MAAMyY,EAAE3I,IAAI8O,EAAE9O,IAAW2I,CAAE,CACzD,SAAS++f,GAAG54f,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,GAAG,IAAIC,EAAE,EAAM,GAAJP,EAAEzD,EAAK,oBAAoBA,EAAE0/f,GAAG1/f,KAAKgE,EAAE,QAAQ,GAAG,kBAAkBhE,EAAEgE,EAAE,OAAOhE,EAAE,OAAOA,GAAG,KAAKq6e,EAAG,OAAOye,GAAGj/f,EAAE7O,SAAS9B,EAAE6a,EAAE9D,GAAG,KAAKq6e,EAAGt2e,EAAE,EAAE9a,GAAG,EAAE,MAAM,KAAKqxf,EAAG,OAAOv6e,EAAE+zf,GAAG,GAAGl6f,EAAEoG,EAAI,EAAF/W,IAAO0kf,YAAY2M,EAAGv6e,EAAE21f,MAAM5xf,EAAE/D,EAAE,KAAK26e,EAAG,OAAO36e,EAAE+zf,GAAG,GAAGl6f,EAAEoG,EAAE/W,IAAK0kf,YAAY+M,EAAG36e,EAAE21f,MAAM5xf,EAAE/D,EAAE,KAAK46e,EAAG,OAAO56e,EAAE+zf,GAAG,GAAGl6f,EAAEoG,EAAE/W,IAAK0kf,YAAYgN,EAAG56e,EAAE21f,MAAM5xf,EAAE/D,EAAE,KAAK+6e,EAAG,OAAOkmB,GAAGpngB,EAAE3Q,EAAE6a,EAAE9D,GAAG,QAAQ,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,OAAOA,EAAEuE,UAAU,KAAKi2e,EAAGx2e,EAAE,GAAG,MAAMhE,EAAE,KAAKy6e,EAAGz2e,EAAE,EAAE,MAAMhE,EAAE,KAAK06e,EAAG12e,EAAE,GACpf,MAAMhE,EAAE,KAAK66e,EAAG72e,EAAE,GAAG,MAAMhE,EAAE,KAAK86e,EAAG92e,EAAE,GAAGP,EAAE,KAAK,MAAMzD,EAAE,MAAMxlB,MAAMsD,EAAE,IAAI,MAAMkiB,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAE8zf,GAAG/vf,EAAEnK,EAAEoG,EAAE/W,IAAK0kf,YAAY5te,EAAEC,EAAE3a,KAAKme,EAAExD,EAAE01f,MAAM5xf,EAAS9D,CAAE,UAAS64f,GAAG94f,EAAEC,EAAEpG,EAAE4J,GAA2B,OAAxBzD,EAAE+zf,GAAG,EAAE/zf,EAAEyD,EAAExD,IAAK01f,MAAM97f,EAASmG,CAAE,UAASihgB,GAAGjhgB,EAAEC,EAAEpG,EAAE4J,GAAuE,OAApEzD,EAAE+zf,GAAG,GAAG/zf,EAAEyD,EAAExD,IAAK2te,YAAYmN,EAAG/6e,EAAE21f,MAAM97f,EAAEmG,EAAEk/e,UAAU,CAAC72S,UAAS,GAAWroM,CAAE,UAASu4F,GAAGv4F,EAAEC,EAAEpG,GAA8B,OAA3BmG,EAAE+zf,GAAG,EAAE/zf,EAAE,KAAKC,IAAK01f,MAAM97f,EAASmG,CAAE,CAC7W,SAAS+4F,GAAG/4F,EAAEC,EAAEpG,GAA8J,OAA3JoG,EAAE8zf,GAAG,EAAE,OAAO/zf,EAAEhV,SAASgV,EAAEhV,SAAS,GAAGgV,EAAEzd,IAAI0d,IAAK01f,MAAM97f,EAAEoG,EAAEi/e,UAAU,CAACkG,cAAcplf,EAAEolf,cAAc2iB,gBAAgB,KAAKlP,eAAe74f,EAAE64f,gBAAuB54f,CAAE,CACvL,SAAS+ngB,GAAGhogB,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAGjJ,KAAKiH,IAAI+Y,EAAEhgB,KAAKmlgB,cAAcplf,EAAE/f,KAAKymhB,aAAazmhB,KAAK++gB,UAAU/+gB,KAAKyZ,QAAQzZ,KAAK8nhB,gBAAgB,KAAK9nhB,KAAK4mhB,eAAe,EAAE5mhB,KAAKylhB,aAAazlhB,KAAKughB,eAAevghB,KAAKmmD,QAAQ,KAAKnmD,KAAK6lhB,iBAAiB,EAAE7lhB,KAAKwjgB,WAAWF,GAAG,GAAGtjgB,KAAK0lhB,gBAAgBpiB,IAAI,GAAGtjgB,KAAKijgB,eAAejjgB,KAAK0mhB,cAAc1mhB,KAAKknhB,iBAAiBlnhB,KAAK2lhB,aAAa3lhB,KAAKgjgB,YAAYhjgB,KAAK+igB,eAAe/igB,KAAK8igB,aAAa,EAAE9igB,KAAKkjgB,cAAcI,GAAG,GAAGtjgB,KAAKi+gB,iBAAiBz6f,EAAExjB,KAAKunhB,mBAAmBt+gB,EAAEjJ,KAAKgohB,gCAC/e,IAAK,UAASC,GAAGlogB,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,EAAE9nB,EAAE+H,GAAgN,OAA7M+b,EAAE,IAAIgogB,GAAGhogB,EAAEC,EAAEpG,EAAE3d,EAAE+H,GAAG,IAAIgc,GAAGA,EAAE,GAAE,IAAK8D,IAAI9D,GAAG,IAAIA,EAAE,EAAE8D,EAAEgwf,GAAG,EAAE,KAAK,KAAK9zf,GAAGD,EAAEtG,QAAQqK,EAAEA,EAAEm7e,UAAUl/e,EAAE+D,EAAEy8e,cAAc,CAAC/zf,QAAQgX,EAAE0hf,aAAatrf,EAAEtJ,MAAM,KAAKud,YAAY,KAAKq6f,0BAA0B,MAAM9R,GAAGtyf,GAAU/D,CAAE,UAASoogB,GAAGpogB,EAAEC,EAAEpG,GAAG,IAAI4J,EAAE,EAAE1L,UAAUnX,aAAQ,IAASmX,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACwM,SAAS61e,EAAG73f,IAAI,MAAMkhB,EAAE,KAAK,GAAGA,EAAEzY,SAASgV,EAAEolf,cAAcnlf,EAAE44f,eAAeh/f,EAAG,CACra,SAASsgD,GAAGn6C,GAAG,IAAIA,EAAE,OAAOkyf,GAAuBlyf,EAAE,CAAC,GAAGqgf,GAA1Brgf,EAAEA,EAAE03f,mBAA8B13f,GAAG,IAAIA,EAAE9Y,IAAI,MAAM1M,MAAMsD,EAAE,MAAM,IAAImiB,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAE/Y,KAAK,KAAK,EAAE+Y,EAAEA,EAAEi/e,UAAU94c,QAAQ,MAAMpmC,EAAE,KAAK,EAAE,GAAGwyf,GAAGvyf,EAAE3a,MAAM,CAAC2a,EAAEA,EAAEi/e,UAAU0T,0CAA0C,MAAM5yf,CAAE,EAACC,EAAEA,EAAEhV,MAAO,OAAM,OAAOgV,GAAG,MAAMzlB,MAAMsD,EAAE,KAAO,IAAG,IAAIkiB,EAAE9Y,IAAI,CAAC,IAAI2S,EAAEmG,EAAE1a,KAAK,GAAGktgB,GAAG34f,GAAG,OAAOwzF,GAAGrtF,EAAEnG,EAAEoG,EAAG,QAAOA,CAAE,CACrW,SAASoogB,GAAGrogB,EAAEC,EAAEpG,EAAE4J,EAAEva,EAAE6a,EAAEC,EAAE9nB,EAAE+H,GAAwK,OAArK+b,EAAEkogB,GAAGrugB,EAAE4J,GAAE,EAAGzD,EAAE9W,EAAE6a,EAAEC,EAAE9nB,EAAE+H,IAAKmiD,QAAQ+T,GAAG,MAAMtgD,EAAEmG,EAAEtG,SAAsBqK,EAAE6yf,GAAhBnzf,EAAEujE,KAAI99E,EAAE0ugB,GAAG/9f,KAAerc,cAAS,IAASyiB,GAAG,OAAOA,EAAEA,EAAE,KAAK+2f,GAAGn9f,EAAEkK,EAAE7a,GAAG8W,EAAEtG,QAAQi8f,MAAMzsgB,EAAEs6f,GAAGxjf,EAAE9W,EAAEua,GAAGgigB,GAAGzlgB,EAAEyD,GAAUzD,CAAE,UAASgwF,GAAGhwF,EAAEC,EAAEpG,EAAE4J,GAAG,IAAIva,EAAE+W,EAAEvG,QAAQqK,EAAEijE,KAAIhjE,EAAE4zf,GAAG1ugB,GAAsL,OAAnL2Q,EAAEsgD,GAAGtgD,GAAG,OAAOoG,EAAEmmC,QAAQnmC,EAAEmmC,QAAQvsC,EAAEoG,EAAEuggB,eAAe3mgB,GAAEoG,EAAE22f,GAAG7yf,EAAEC,IAAK+yf,QAAQ,CAACtqgB,QAAQuT,GAAuB,QAApByD,OAAE,IAASA,EAAE,KAAKA,KAAaxD,EAAEziB,SAASimB,GAAe,QAAZzD,EAAEg3f,GAAG9tgB,EAAE+W,EAAE+D,MAAc6zf,GAAG73f,EAAE9W,EAAE8a,EAAED,GAAGmzf,GAAGl3f,EAAE9W,EAAE8a,IAAWA,CAAE,CAC5b,SAASskgB,GAAGtogB,GAAe,OAAZA,EAAEA,EAAEtG,SAAc4yB,OAAyBtsB,EAAEssB,MAAMplC,IAAoD8Y,EAAEssB,MAAM4yd,WAAhF,IAA2F,UAASqpB,GAAGvogB,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAEwgf,gBAA2B,OAAOxgf,EAAEygf,WAAW,CAAC,IAAI5mf,EAAEmG,EAAEo0f,UAAUp0f,EAAEo0f,UAAU,IAAIv6f,GAAGA,EAAEoG,EAAEpG,EAAEoG,CAAE,CAAC,UAASuogB,GAAGxogB,EAAEC,GAAGsogB,GAAGvogB,EAAEC,IAAID,EAAEA,EAAEsgf,YAAYioB,GAAGvogB,EAAEC,EAAG,CAnB9SykgB,GAAG,SAAS1kgB,EAAEC,EAAEpG,GAAG,GAAG,OAAOmG,EAAE,GAAGA,EAAEy0f,gBAAgBx0f,EAAEi0f,cAAc/B,GAAGz4f,QAAQk8f,IAAG,MAAO,CAAC,GAAG,KAAK51f,EAAE21f,MAAM97f,IAAI,KAAa,IAARoG,EAAEi6J,OAAW,OAAO07V,IAAG,EAzE1I,SAAY51f,EAAEC,EAAEpG,GAAG,OAAOoG,EAAE/Y,KAAK,KAAK,EAAEq5gB,GAAGtggB,GAAG00f,KAAK,MAAM,KAAK,EAAE6E,GAAGv5f,GAAG,MAAM,KAAK,EAAEuyf,GAAGvyf,EAAE3a,OAAOqtgB,GAAG1yf,GAAG,MAAM,KAAK,EAAEq5f,GAAGr5f,EAAEA,EAAEi/e,UAAUkG,eAAe,MAAM,KAAK,GAAG,IAAI3hf,EAAExD,EAAE3a,KAAKk7I,SAASt3I,EAAE+W,EAAEw0f,cAAct2gB,MAAM8zgB,GAAE8C,GAAGtxf,EAAE4xf,eAAe5xf,EAAE4xf,cAAcnsgB,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBua,EAAExD,EAAEugf,eAA2B,OAAG,OAAO/8e,EAAEg9e,YAAkBwR,GAAErrb,GAAY,EAAVA,GAAEltE,SAAWuG,EAAEi6J,OAAO,IAAI,MAAQ,KAAKrgK,EAAEoG,EAAEqsB,MAAMipe,YAAmBwL,GAAG/ggB,EAAEC,EAAEpG,IAAGo4f,GAAErrb,GAAY,EAAVA,GAAEltE,SAA8B,QAAnBsG,EAAEw/f,GAAGx/f,EAAEC,EAAEpG,IAAmBmG,EAAE4gf,QAAQ,MAAKqR,GAAErrb,GAAY,EAAVA,GAAEltE,SAAW,MAAM,KAAK,GAC7d,GADge+J,EAAE,KAAK5J,EACrfoG,EAAEs1f,YAAe,KAAa,IAARv1f,EAAEk6J,OAAW,CAAC,GAAGz2J,EAAE,OAAOu+f,GAAGhigB,EAAEC,EAAEpG,GAAGoG,EAAEi6J,OAAO,GAAI,CAA4F,GAA1E,QAAlBhxK,EAAE+W,EAAEugf,iBAAyBt3f,EAAE24gB,UAAU,KAAK34gB,EAAEssI,KAAK,KAAKtsI,EAAE6ygB,WAAW,MAAM9J,GAAErrb,GAAEA,GAAEltE,SAAY+J,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOxD,EAAE01f,MAAM,EAAEkK,GAAG7/f,EAAEC,EAAEpG,GAAG,OAAO2lgB,GAAGx/f,EAAEC,EAAEpG,EAAG,CAwE9G4ugB,CAAGzogB,EAAEC,EAAEpG,GAAG+7f,GAAG,KAAa,OAAR51f,EAAEk6J,MAAoB,MAAK07V,IAAG,EAAGhC,IAAG,KAAa,QAAR3zf,EAAEi6J,QAAgBriE,GAAG53F,EAAEkzf,GAAGlzf,EAAE7e,OAAiB,OAAV6e,EAAE01f,MAAM,EAAS11f,EAAE/Y,KAAK,KAAK,EAAE,IAAIuc,EAAExD,EAAE3a,KAAK86gB,GAAGpggB,EAAEC,GAAGD,EAAEC,EAAEi0f,aAAa,IAAIhrgB,EAAEmpgB,GAAGpyf,EAAEsnE,GAAE7tE,SAAS87f,GAAGv1f,EAAEpG,GAAG3Q,EAAEwxgB,GAAG,KAAKz6f,EAAEwD,EAAEzD,EAAE9W,EAAE2Q,GAAG,IAAIkK,EAAEg3f,KACvI,OAD4I96f,EAAEi6J,OAAO,EAAE,kBAAkBhxK,GAAG,OAAOA,GAAG,oBAAoBA,EAAEqlC,aAAQ,IAASrlC,EAAEqb,UAAUtE,EAAE/Y,IAAI,EAAE+Y,EAAEugf,cAAc,KAAKvgf,EAAEq2f,YAC1e,KAAK9D,GAAG/uf,IAAIM,GAAE,EAAG4uf,GAAG1yf,IAAI8D,GAAE,EAAG9D,EAAEugf,cAAc,OAAOt3f,EAAEy/B,YAAO,IAASz/B,EAAEy/B,MAAMz/B,EAAEy/B,MAAM,KAAK0te,GAAGp2f,GAAG/W,EAAEgkd,QAAQsqD,GAAGv3f,EAAEi/e,UAAUh2f,EAAEA,EAAEwugB,gBAAgBz3f,EAAEo4f,GAAGp4f,EAAEwD,EAAEzD,EAAEnG,GAAGoG,EAAEqggB,GAAG,KAAKrggB,EAAEwD,GAAE,EAAGM,EAAElK,KAAKoG,EAAE/Y,IAAI,EAAE0sgB,IAAG7vf,GAAGyvf,GAAGvzf,GAAGq/f,GAAG,KAAKr/f,EAAE/W,EAAE2Q,GAAGoG,EAAEA,EAAEqsB,OAAcrsB,EAAE,KAAK,GAAGwD,EAAExD,EAAE2te,YAAY5te,EAAE,CAAqF,OAApFoggB,GAAGpggB,EAAEC,GAAGD,EAAEC,EAAEi0f,aAAuBzwf,GAAVva,EAAEua,EAAE+/E,OAAU//E,EAAEk4e,UAAU17e,EAAE3a,KAAKme,EAAEva,EAAE+W,EAAE/Y,IAQtU,SAAY8Y,GAAG,GAAG,oBAAoBA,EAAE,OAAO0/f,GAAG1/f,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEuE,YAAgBm2e,EAAG,OAAO,GAAG,GAAG16e,IAAI66e,EAAG,OAAO,EAAG,QAAO,CAAE,CAR0L6tB,CAAGjlgB,GAAGzD,EAAE80f,GAAGrxf,EAAEzD,GAAU9W,GAAG,KAAK,EAAE+W,EAAE2/f,GAAG,KAAK3/f,EAAEwD,EAAEzD,EAAEnG,GAAG,MAAMmG,EAAE,KAAK,EAAEC,EAAEkggB,GAAG,KAAKlggB,EAAEwD,EAAEzD,EAAEnG,GAAG,MAAMmG,EAAE,KAAK,GAAGC,EAAEs/f,GAAG,KAAKt/f,EAAEwD,EAAEzD,EAAEnG,GAAG,MAAMmG,EAAE,KAAK,GAAGC,EAAEw/f,GAAG,KAAKx/f,EAAEwD,EAAEqxf,GAAGrxf,EAAEne,KAAK0a,GAAGnG,GAAG,MAAMmG,EAAE,MAAMxlB,MAAMsD,EAAE,IACvgB2lB,EAAE,IAAM,QAAOxD,EAAE,KAAK,EAAE,OAAOwD,EAAExD,EAAE3a,KAAK4D,EAAE+W,EAAEi0f,aAA2C0L,GAAG5/f,EAAEC,EAAEwD,EAArCva,EAAE+W,EAAE2te,cAAcnqe,EAAEva,EAAE4rgB,GAAGrxf,EAAEva,GAAc2Q,GAAG,KAAK,EAAE,OAAO4J,EAAExD,EAAE3a,KAAK4D,EAAE+W,EAAEi0f,aAA2CiM,GAAGnggB,EAAEC,EAAEwD,EAArCva,EAAE+W,EAAE2te,cAAcnqe,EAAEva,EAAE4rgB,GAAGrxf,EAAEva,GAAc2Q,GAAG,KAAK,EAAEmG,EAAE,CAAO,GAANuggB,GAAGtggB,GAAM,OAAOD,EAAE,MAAMxlB,MAAMsD,EAAE,MAAM2lB,EAAExD,EAAEi0f,aAA+BhrgB,GAAlB6a,EAAE9D,EAAEugf,eAAkB/zf,QAAQkqgB,GAAG32f,EAAEC,GAAGm3f,GAAGn3f,EAAEwD,EAAE,KAAK5J,GAAG,IAAImK,EAAE/D,EAAEugf,cAA0B,GAAZ/8e,EAAEO,EAAEvX,QAAWsX,EAAEohf,aAAL,CAAkB,GAAGphf,EAAE,CAACtX,QAAQgX,EAAE0hf,cAAa,EAAG50f,MAAMyT,EAAEzT,MAAM43gB,0BAA0BnkgB,EAAEmkgB,0BAA0Br6f,YAAY9J,EAAE8J,aAAa7N,EAAEq2f,YAAYC,UAChfxyf,EAAE9D,EAAEugf,cAAcz8e,EAAU,IAAR9D,EAAEi6J,MAAU,CAAuBj6J,EAAEwggB,GAAGzggB,EAAEC,EAAEwD,EAAE5J,EAAjC3Q,EAAEi1gB,GAAG3jhB,MAAMsD,EAAE,MAAMmiB,IAAmB,MAAMD,CAAE,CAAK,GAAGyD,IAAIva,EAAE,CAAuB+W,EAAEwggB,GAAGzggB,EAAEC,EAAEwD,EAAE5J,EAAjC3Q,EAAEi1gB,GAAG3jhB,MAAMsD,EAAE,MAAMmiB,IAAmB,MAAMD,CAAE,CAAK,IAAI2zf,GAAGpC,GAAGtxf,EAAEi/e,UAAUkG,cAAc39f,YAAYisgB,GAAGzzf,EAAE2zf,IAAE,EAAGC,GAAG,KAAKh6f,EAAEm/f,GAAG/4f,EAAE,KAAKwD,EAAE5J,GAAGoG,EAAEqsB,MAAMzyB,EAAEA,GAAGA,EAAEqgK,OAAe,EAATrgK,EAAEqgK,MAAS,KAAKrgK,EAAEA,EAAE+mf,OADoE,KACxD,CAAM,GAAL+T,KAAQlxf,IAAIva,EAAE,CAAC+W,EAAEu/f,GAAGx/f,EAAEC,EAAEpG,GAAG,MAAMmG,CAAE,CAAAs/f,GAAGt/f,EAAEC,EAAEwD,EAAE5J,EAAG,CAAAoG,EAAEA,EAAEqsB,KAAM,QAAOrsB,EAAE,KAAK,EAAE,OAAOu5f,GAAGv5f,GAAG,OAAOD,GAAGs0f,GAAGr0f,GAAGwD,EAAExD,EAAE3a,KAAK4D,EAAE+W,EAAEi0f,aAAanwf,EAAE,OAAO/D,EAAEA,EAAEy0f,cAAc,KAAKzwf,EAAE9a,EAAE8B,SAAS+lgB,GAAGttf,EAAEva,GAAG8a,EAAE,KAAK,OAAOD,GAAGgtf,GAAGttf,EAAEM,KAAK9D,EAAEi6J,OAAO,IACnfgmW,GAAGlggB,EAAEC,GAAGq/f,GAAGt/f,EAAEC,EAAE+D,EAAEnK,GAAGoG,EAAEqsB,MAAM,KAAK,EAAE,OAAO,OAAOtsB,GAAGs0f,GAAGr0f,GAAG,KAAK,KAAK,GAAG,OAAO8ggB,GAAG/ggB,EAAEC,EAAEpG,GAAG,KAAK,EAAE,OAAOy/f,GAAGr5f,EAAEA,EAAEi/e,UAAUkG,eAAe3hf,EAAExD,EAAEi0f,aAAa,OAAOl0f,EAAEC,EAAEqsB,MAAMyse,GAAG94f,EAAE,KAAKwD,EAAE5J,GAAGylgB,GAAGt/f,EAAEC,EAAEwD,EAAE5J,GAAGoG,EAAEqsB,MAAM,KAAK,GAAG,OAAO7oB,EAAExD,EAAE3a,KAAK4D,EAAE+W,EAAEi0f,aAA2CqL,GAAGv/f,EAAEC,EAAEwD,EAArCva,EAAE+W,EAAE2te,cAAcnqe,EAAEva,EAAE4rgB,GAAGrxf,EAAEva,GAAc2Q,GAAG,KAAK,EAAE,OAAOylgB,GAAGt/f,EAAEC,EAAEA,EAAEi0f,aAAar6f,GAAGoG,EAAEqsB,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAOgze,GAAGt/f,EAAEC,EAAEA,EAAEi0f,aAAalpgB,SAAS6O,GAAGoG,EAAEqsB,MAAM,KAAK,GAAGtsB,EAAE,CACxZ,GADyZyD,EAAExD,EAAE3a,KAAKk7I,SAASt3I,EAAE+W,EAAEi0f,aAAanwf,EAAE9D,EAAEw0f,cAClfzwf,EAAE9a,EAAE/K,MAAM8zgB,GAAE8C,GAAGtxf,EAAE4xf,eAAe5xf,EAAE4xf,cAAcrxf,EAAK,OAAOD,EAAE,GAAGyof,GAAGzof,EAAE5lB,MAAM6lB,IAAI,GAAGD,EAAE/Y,WAAW9B,EAAE8B,WAAWmngB,GAAGz4f,QAAQ,CAACuG,EAAEu/f,GAAGx/f,EAAEC,EAAEpG,GAAG,MAAMmG,CAAE,OAAM,IAAc,QAAV+D,EAAE9D,EAAEqsB,SAAiBvoB,EAAE9Y,OAAOgV,GAAG,OAAO8D,GAAG,CAAC,IAAI7nB,EAAE6nB,EAAE0xf,aAAa,GAAG,OAAOv5gB,EAAE,CAAC8nB,EAAED,EAAEuoB,MAAM,IAAI,IAAIroC,EAAE/H,EAAEw5gB,aAAa,OAAOzxgB,GAAG,CAAC,GAAGA,EAAEmiD,UAAU3iC,EAAE,CAAC,GAAG,IAAIM,EAAE7c,IAAI,EAACjD,EAAE2ygB,IAAI,EAAE/8f,GAAGA,IAAK3S,IAAI,EAAE,IAAI+c,EAAEF,EAAEuyf,YAAY,GAAG,OAAOryf,EAAE,CAAY,IAAI9mB,GAAf8mB,EAAEA,EAAEyyf,QAAehyV,QAAQ,OAAOvnL,EAAE8G,EAAEmH,KAAKnH,GAAGA,EAAEmH,KAAKjO,EAAEiO,KAAKjO,EAAEiO,KAAKnH,GAAGggB,EAAEygK,QAAQzgL,CAAE,CAAC,CAAA8f,EAAE4xf,OAAO97f,EAAgB,QAAd5V,EAAE8f,EAAEu8e,aAAqBr8f,EAAE0xgB,OAAO97f,GAAGy7f,GAAGvxf,EAAE9Y,OAClf4O,EAAEoG,GAAG/jB,EAAEy5gB,OAAO97f,EAAE,KAAM,CAAA5V,EAAEA,EAAEmH,IAAK,CAAC,MAAK,GAAG,KAAK2Y,EAAE7c,IAAI8c,EAAED,EAAEze,OAAO2a,EAAE3a,KAAK,KAAKye,EAAEuoB,WAAW,GAAG,KAAKvoB,EAAE7c,IAAI,CAAY,GAAG,QAAd8c,EAAED,EAAE9Y,QAAmB,MAAMzQ,MAAMsD,EAAE,MAAMkmB,EAAE2xf,OAAO97f,EAAgB,QAAd3d,EAAE8nB,EAAEs8e,aAAqBpkgB,EAAEy5gB,OAAO97f,GAAGy7f,GAAGtxf,EAAEnK,EAAEoG,GAAG+D,EAAED,EAAE68e,OAAQ,MAAK58e,EAAED,EAAEuoB,MAAM,GAAG,OAAOtoB,EAAEA,EAAE/Y,OAAO8Y,OAAO,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAGA,IAAI/D,EAAE,CAAC+D,EAAE,KAAK,KAAM,CAAY,GAAG,QAAfD,EAAEC,EAAE48e,SAAoB,CAAC78e,EAAE9Y,OAAO+Y,EAAE/Y,OAAO+Y,EAAED,EAAE,KAAM,CAAAC,EAAEA,EAAE/Y,MAAO,CAAA8Y,EAAEC,CAAE,CAAAs7f,GAAGt/f,EAAEC,EAAE/W,EAAE8B,SAAS6O,GAAGoG,EAAEA,EAAEqsB,KAAM,QAAOrsB,EAAE,KAAK,EAAE,OAAO/W,EAAE+W,EAAE3a,KAAKme,EAAExD,EAAEi0f,aAAalpgB,SAASwqgB,GAAGv1f,EAAEpG,GAAW4J,EAAEA,EAAVva,EAAE2sgB,GAAG3sgB,IAAU+W,EAAEi6J,OAAO,EAAEolW,GAAGt/f,EAAEC,EAAEwD,EAAE5J,GACpfoG,EAAEqsB,MAAM,KAAK,GAAG,OAAgBpjC,EAAE4rgB,GAAXrxf,EAAExD,EAAE3a,KAAY2a,EAAEi0f,cAA6BuL,GAAGz/f,EAAEC,EAAEwD,EAAtBva,EAAE4rgB,GAAGrxf,EAAEne,KAAK4D,GAAc2Q,GAAG,KAAK,GAAG,OAAO8lgB,GAAG3/f,EAAEC,EAAEA,EAAE3a,KAAK2a,EAAEi0f,aAAar6f,GAAG,KAAK,GAAG,OAAO4J,EAAExD,EAAE3a,KAAK4D,EAAE+W,EAAEi0f,aAAahrgB,EAAE+W,EAAE2te,cAAcnqe,EAAEva,EAAE4rgB,GAAGrxf,EAAEva,GAAGk3gB,GAAGpggB,EAAEC,GAAGA,EAAE/Y,IAAI,EAAEsrgB,GAAG/uf,IAAIzD,GAAE,EAAG2yf,GAAG1yf,IAAID,GAAE,EAAGw1f,GAAGv1f,EAAEpG,GAAGq+f,GAAGj4f,EAAEwD,EAAEva,GAAGmvgB,GAAGp4f,EAAEwD,EAAEva,EAAE2Q,GAAGymgB,GAAG,KAAKrggB,EAAEwD,GAAE,EAAGzD,EAAEnG,GAAG,KAAK,GAAG,OAAOmogB,GAAGhigB,EAAEC,EAAEpG,GAAG,KAAK,GAAG,OAAOgmgB,GAAG7/f,EAAEC,EAAEpG,GAAG,MAAMrf,MAAMsD,EAAE,IAAImiB,EAAE/Y,KAAO,EAYzC,IAAIyhhB,GAAG,oBAAoBC,YAAYA,YAAY,SAAS5ogB,GAAG1jB,QAAQgD,MAAM0gB,EAAG,EAAC,SAASwiB,GAAGxiB,GAAG/f,KAAK4ohB,cAAc7ogB,CAAE,CAClI,SAASw0F,GAAGx0F,GAAG/f,KAAK4ohB,cAAc7ogB,CAAE,CAC7J,SAAS8ogB,GAAG9ogB,GAAG,SAASA,GAAG,IAAIA,EAAEg2B,UAAU,IAAIh2B,EAAEg2B,UAAU,KAAKh2B,EAAEg2B,SAAU,UAASxU,GAAGxhB,GAAG,SAASA,GAAG,IAAIA,EAAEg2B,UAAU,IAAIh2B,EAAEg2B,UAAU,KAAKh2B,EAAEg2B,WAAW,IAAIh2B,EAAEg2B,UAAU,iCAAiCh2B,EAAE0nK,WAAY,UAASqhW,KAAM,CAEza,SAASrya,GAAG12F,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,IAAI6a,EAAElK,EAAE6pgB,oBAAoB,GAAG3/f,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAG,oBAAoB7a,EAAE,CAAC,IAAIhN,EAAEgN,EAAEA,EAAE,WAAW,IAAI8W,EAAEsogB,GAAGtkgB,GAAG9nB,EAAEwC,KAAKshB,EAAG,CAAC,CAAAgwF,GAAG/vF,EAAE+D,EAAEhE,EAAE9W,EAAG,MAAK8a,EADxJ,SAAYhE,EAAEC,EAAEpG,EAAE4J,EAAEva,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoBua,EAAE,CAAC,IAAIM,EAAEN,EAAEA,EAAE,WAAW,IAAIzD,EAAEsogB,GAAGtkgB,GAAGD,EAAErlB,KAAKshB,EAAG,CAAC,KAAIgE,EAAEqkgB,GAAGpogB,EAAEwD,EAAEzD,EAAE,EAAE,MAAK,EAAG,EAAG,GAAG+ogB,IAAmF,OAA/E/ogB,EAAE0jgB,oBAAoB1/f,EAAEhE,EAAE8vf,IAAI9rf,EAAEtK,QAAQg2f,GAAG,IAAI1vf,EAAEg2B,SAASh2B,EAAE3W,WAAW2W,GAAG+mgB,KAAY/igB,CAAE,MAAK9a,EAAE8W,EAAEwtD,WAAWxtD,EAAE1W,YAAYJ,GAAG,GAAG,oBAAoBua,EAAE,CAAC,IAAIvnB,EAAEunB,EAAEA,EAAE,WAAW,IAAIzD,EAAEsogB,GAAGrkhB,GAAG/H,EAAEwC,KAAKshB,EAAG,CAAC,KAAI/b,EAAEikhB,GAAGlogB,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAG+ogB,IAA0G,OAAtG/ogB,EAAE0jgB,oBAAoBz/gB,EAAE+b,EAAE8vf,IAAI7rgB,EAAEyV,QAAQg2f,GAAG,IAAI1vf,EAAEg2B,SAASh2B,EAAE3W,WAAW2W,GAAG+mgB,IAAG,WAAW/2a,GAAG/vF,EAAEhc,EAAE4V,EAAE4J,EAAG,IAASxf,CAAE,CACrU+khB,CAAGnvgB,EAAEoG,EAAED,EAAE9W,EAAEua,GAAG,OAAO6kgB,GAAGtkgB,EAAG,CAHrLwwF,GAAGvsG,UAAUsmC,OAAO/L,GAAGv6B,UAAUsmC,OAAO,SAASvuB,GAAG,IAAIC,EAAEhgB,KAAK4ohB,cAAc,GAAG,OAAO5ogB,EAAE,MAAMzlB,MAAMsD,EAAE,MAAMkyG,GAAGhwF,EAAEC,EAAE,KAAK,KAAM,EAACu0F,GAAGvsG,UAAU65K,QAAQt/I,GAAGv6B,UAAU65K,QAAQ,WAAW,IAAI9hK,EAAE/f,KAAK4ohB,cAAc,GAAG,OAAO7ogB,EAAE,CAAC/f,KAAK4ohB,cAAc,KAAK,IAAI5ogB,EAAED,EAAEolf,cAAc2hB,IAAG,WAAW/2a,GAAG,KAAKhwF,EAAE,KAAK,KAAM,IAAEC,EAAE6vf,IAAI,IAAK,CAAC,EAC1Tt7Z,GAAGvsG,UAAUghhB,2BAA2B,SAASjpgB,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAE8jf,KAAK/jf,EAAE,CAAC6kf,UAAU,KAAKjtf,OAAOoI,EAAEksd,SAASjsd,GAAG,IAAI,IAAIpG,EAAE,EAAEA,EAAE2qf,GAAG5jgB,QAAQ,IAAIqf,GAAGA,EAAEukf,GAAG3qf,GAAGqyd,SAASryd,KAAK2qf,GAAGljgB,OAAOuY,EAAE,EAAEmG,GAAG,IAAInG,GAAGorf,GAAGjlf,EAAG,CAAC,EAEZ4jf,GAAG,SAAS5jf,GAAG,OAAOA,EAAE9Y,KAAK,KAAK,EAAE,IAAI+Y,EAAED,EAAEk/e,UAAU,GAAGj/e,EAAEvG,QAAQ8mf,cAAc2E,aAAa,CAAC,IAAItrf,EAAEgpf,GAAG5if,EAAE8if,cAAc,IAAIlpf,IAAI6pf,GAAGzjf,EAAI,EAAFpG,GAAK4rgB,GAAGxlgB,EAAEshf,MAAK,KAAO,EAAF0V,MAAOwL,GAAGlhB,KAAI,IAAI0R,MAAO,OAAM,KAAK,GAAG8T,IAAG,WAAW,IAAI9mgB,EAAEk2f,GAAGn2f,EAAE,GAAG,GAAG,OAAOC,EAAE,CAAC,IAAIpG,EAAEmtE,KAAI6wb,GAAG53f,EAAED,EAAE,EAAEnG,EAAG,CAAC,IAAE2ugB,GAAGxogB,EAAE,GAAI,EAChc6jf,GAAG,SAAS7jf,GAAG,GAAG,KAAKA,EAAE9Y,IAAI,CAAC,IAAI+Y,EAAEk2f,GAAGn2f,EAAE,WAAW,GAAG,OAAOC,EAAa43f,GAAG53f,EAAED,EAAE,UAAXgnE,MAAwBwhc,GAAGxogB,EAAE,UAAW,CAAC,EAAC8jf,GAAG,SAAS9jf,GAAG,GAAG,KAAKA,EAAE9Y,IAAI,CAAC,IAAI+Y,EAAE23f,GAAG53f,GAAGnG,EAAEs8f,GAAGn2f,EAAEC,GAAG,GAAG,OAAOpG,EAAag+f,GAAGh+f,EAAEmG,EAAEC,EAAX+mE,MAAgBwhc,GAAGxogB,EAAEC,EAAG,CAAC,EAAC8jf,GAAG,WAAW,OAAOpmQ,EAAE,EAACqmQ,GAAG,SAAShkf,EAAEC,GAAG,IAAIpG,EAAE8jP,GAAE,IAAI,OAAOA,GAAE39O,EAAEC,GAAgB,CAA/B,QAA2B09O,GAAE9jP,CAAE,CAAC,EACnSglf,GAAG,SAAS7+e,EAAEC,EAAEpG,GAAG,OAAOoG,GAAG,IAAK,QAAyB,GAAjB08e,EAAG38e,EAAEnG,GAAGoG,EAAEpG,EAAExgB,KAAQ,UAAUwgB,EAAEvU,MAAM,MAAM2a,EAAE,CAAC,IAAIpG,EAAEmG,EAAEnG,EAAExQ,YAAYwQ,EAAEA,EAAExQ,WAAsF,IAA3EwQ,EAAEA,EAAExK,iBAAiB,cAActJ,KAAKC,UAAU,GAAGia,GAAG,mBAAuBA,EAAE,EAAEA,EAAEpG,EAAEjZ,OAAOqf,IAAI,CAAC,IAAIwD,EAAE5J,EAAEoG,GAAG,GAAGwD,IAAIzD,GAAGyD,EAAE/d,OAAOsa,EAAEta,KAAK,CAAC,IAAIwD,EAAEi2f,GAAG17e,GAAG,IAAIva,EAAE,MAAM1O,MAAMsD,EAAE,KAAKq+f,EAAG14e,GAAGk5e,EAAGl5e,EAAEva,EAAG,CAAC,CAAC,OAAM,IAAK,WAAWi0f,GAAGn9e,EAAEnG,GAAG,MAAM,IAAK,SAAmB,OAAVoG,EAAEpG,EAAE1b,QAAe4+f,GAAG/8e,IAAInG,EAAE0mK,SAAStgK,GAAE,GAAK,EAACq/e,GAAGwnB,GAAGvnB,GAAGwnB,GACpa,IAAImC,GAAG,CAACC,uBAAsB,EAAGC,OAAO,CAACnqB,GAAG0M,GAAGxM,GAAGC,GAAGC,GAAGynB,KAAKuC,GAAG,CAACC,wBAAwBpkB,GAAGqkB,WAAW,EAAE/0c,QAAQ,SAASg1c,oBAAoB,aAC1IC,GAAG,CAACF,WAAWF,GAAGE,WAAW/0c,QAAQ60c,GAAG70c,QAAQg1c,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAK9+e,eAAe,KAAK++e,qBAAqBhsgB,EAAG67f,uBAAuBoQ,wBAAwB,SAASpqgB,GAAW,OAAO,QAAfA,EAAE2gf,GAAG3gf,IAAmB,KAAKA,EAAEk/e,SAAU,EAACoqB,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAK,EASrUe,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAG/mY,YAAY+mY,GAAGC,cAAc,IAAIxoB,GAAGuoB,GAAGvzd,OAAOoyd,IAAInnB,GAAGsoB,EAAa,CAAV,MAAM5qgB,IAAI,CAAC,CAAAmD,EAAQ+2e,mDAAmDgvB,GAC9Y/lgB,EAAQmrB,aAAa,SAAStuB,EAAEC,GAAG,IAAIpG,EAAE,EAAE9B,UAAUnX,aAAQ,IAASmX,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAI+wgB,GAAG7ogB,GAAG,MAAMzlB,MAAMsD,EAAE,MAAM,OAAOsqhB,GAAGpogB,EAAEC,EAAE,KAAKpG,EAAG,EAACsJ,EAAQ2ngB,WAAW,SAAS9qgB,EAAEC,GAAG,IAAI6ogB,GAAG9ogB,GAAG,MAAMxlB,MAAMsD,EAAE,MAAM,IAAI+b,GAAE,EAAG4J,EAAE,GAAGva,EAAEy/gB,GAA4P,OAAzP,OAAO1ogB,QAAG,IAASA,KAAI,IAAKA,EAAE8qgB,sBAAsBlxgB,GAAE,QAAI,IAASoG,EAAEi+f,mBAAmBz6f,EAAExD,EAAEi+f,uBAAkB,IAASj+f,EAAEungB,qBAAqBt+gB,EAAE+W,EAAEungB,qBAAqBvngB,EAAEiogB,GAAGlogB,EAAE,GAAE,EAAG,KAAK,EAAKnG,EAAE,EAAG4J,EAAEva,GAAG8W,EAAE8vf,IAAI7vf,EAAEvG,QAAQg2f,GAAG,IAAI1vf,EAAEg2B,SAASh2B,EAAE3W,WAAW2W,GAAU,IAAIwiB,GAAGviB,EAAG,EACtfkD,EAAQ6ngB,YAAY,SAAShrgB,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEg2B,SAAS,OAAOh2B,EAAE,IAAIC,EAAED,EAAE03f,gBAAgB,QAAG,IAASz3f,EAAE,CAAC,GAAG,oBAAoBD,EAAEuuB,OAAO,MAAM/zC,MAAMsD,EAAE,MAAiC,MAA3BkiB,EAAE/hB,OAAOgB,KAAK+gB,GAAGtT,KAAK,KAAWlS,MAAMsD,EAAE,IAAIkiB,GAAK,CAAoC,OAA5BA,EAAE,QAAVA,EAAE2gf,GAAG1gf,IAAc,KAAKD,EAAEk/e,SAAmB,EAAC/7e,EAAQ8ngB,UAAU,SAASjrgB,GAAG,OAAO+mgB,GAAG/mgB,EAAG,EAACmD,EAAQjb,QAAQ,SAAS8X,EAAEC,EAAEpG,GAAG,IAAI2nB,GAAGvhB,GAAG,MAAMzlB,MAAMsD,EAAE,MAAM,OAAO44G,GAAG,KAAK12F,EAAEC,GAAE,EAAGpG,EAAG,EAChZsJ,EAAQ+ngB,YAAY,SAASlrgB,EAAEC,EAAEpG,GAAG,IAAIivgB,GAAG9ogB,GAAG,MAAMxlB,MAAMsD,EAAE,MAAM,IAAI2lB,EAAE,MAAM5J,GAAGA,EAAEsxgB,iBAAiB,KAAKjihB,GAAE,EAAG6a,EAAE,GAAGC,EAAE2kgB,GAAyO,GAAtO,OAAO9ugB,QAAG,IAASA,KAAI,IAAKA,EAAEkxgB,sBAAsB7hhB,GAAE,QAAI,IAAS2Q,EAAEqkgB,mBAAmBn6f,EAAElK,EAAEqkgB,uBAAkB,IAASrkgB,EAAE2tgB,qBAAqBxjgB,EAAEnK,EAAE2tgB,qBAAqBvngB,EAAEoogB,GAAGpogB,EAAE,KAAKD,EAAE,EAAE,MAAMnG,EAAEA,EAAE,KAAK3Q,EAAE,EAAG6a,EAAEC,GAAGhE,EAAE8vf,IAAI7vf,EAAEvG,QAAQg2f,GAAG1vf,GAAMyD,EAAE,IAAIzD,EAAE,EAAEA,EAAEyD,EAAE7iB,OAAOof,IAA2B9W,GAAhBA,GAAP2Q,EAAE4J,EAAEzD,IAAOorgB,aAAgBvxgB,EAAEy0G,SAAS,MAAMruG,EAAEgogB,gCAAgChogB,EAAEgogB,gCAAgC,CAACpugB,EAAE3Q,GAAG+W,EAAEgogB,gCAAgC5nhB,KAAKwZ,EACvhB3Q,GAAG,OAAO,IAAIsrG,GAAGv0F,EAAG,EAACkD,EAAQorB,OAAO,SAASvuB,EAAEC,EAAEpG,GAAG,IAAI2nB,GAAGvhB,GAAG,MAAMzlB,MAAMsD,EAAE,MAAM,OAAO44G,GAAG,KAAK12F,EAAEC,GAAE,EAAGpG,EAAG,EAACsJ,EAAQkogB,uBAAuB,SAASrrgB,GAAG,IAAIwhB,GAAGxhB,GAAG,MAAMxlB,MAAMsD,EAAE,KAAK,QAAOkiB,EAAE0jgB,sBAAqBqD,IAAG,WAAWrwa,GAAG,KAAK,KAAK12F,GAAE,GAAG,WAAWA,EAAE0jgB,oBAAoB,KAAK1jgB,EAAE8vf,IAAI,IAAK,GAAE,KAAE,EAAO,EAAC3sf,EAAQmogB,wBAAwBxE,GAC/U3jgB,EAAQoogB,oCAAoC,SAASvrgB,EAAEC,EAAEpG,EAAE4J,GAAG,IAAI+d,GAAG3nB,GAAG,MAAMrf,MAAMsD,EAAE,MAAM,GAAG,MAAMkiB,QAAG,IAASA,EAAE03f,gBAAgB,MAAMl9gB,MAAMsD,EAAE,KAAK,OAAO44G,GAAG12F,EAAEC,EAAEpG,GAAE,EAAG4J,EAAG,EAACN,EAAQqxD,QAAQ,oEChU7L,IAAIr3E,EAAI+lB,EAAQ,MAEdC,EAAQ2ngB,WAAa3thB,EAAE2thB,WACvB3ngB,EAAQ+ngB,YAAc/thB,EAAE+thB,gDCH1B,SAASM,IAEP,GAC4C,qBAAnCb,gCAC4C,oBAA5CA,+BAA+Ba,SAcxC,IAEEb,+BAA+Ba,SAASA,EAKzC,CAJC,MAAOnshB,GAGP/C,QAAQgD,MAAMD,EACf,CACF,CAKCmshB,GACAhngB,EAAOrB,QAAU,EAAjBqB,2GC4DSingB,EAAe,IA3Fa,SAAUC,GAG/C,SAASC,IACP,IAAI3khB,EAuBJ,OArBAA,EAAQ0khB,EAAchthB,KAAKuB,OAASA,MAE9BgxE,MAAQ,SAAU57C,GACtB,IAAIwgD,EAEJ,IAAK+1c,EAAAA,KAAmC,OAArB/1c,EAAU37E,aAAkB,EAAS27E,EAAQr0E,kBAAmB,CACjF,IAAIf,EAAW,WACb,OAAO40B,GACR,EAKD,OAFAn7B,OAAOsH,iBAAiB,mBAAoBf,GAAU,GACtDvG,OAAOsH,iBAAiB,QAASf,GAAU,GACpC,WAELvG,OAAOuH,oBAAoB,mBAAoBhB,GAC/CvG,OAAOuH,oBAAoB,QAAShB,EACrC,CACF,CACF,EAEMuG,CACR,EA3BD6khB,EAAAA,EAAAA,GAAeF,EAAcD,GA6B7B,IAAI1jhB,EAAS2jhB,EAAa1jhB,UA2D1B,OAzDAD,EAAO8jhB,YAAc,WACd7rhB,KAAKgxM,SACRhxM,KAAK8rhB,iBAAiB9rhB,KAAKgxE,MAE9B,EAEDjpE,EAAOgkhB,cAAgB,WAEnB,IAAIC,EADDhshB,KAAKishB,iBAG0B,OAAjCD,EAAgBhshB,KAAKgxM,UAA4Bg7U,EAAcvthB,KAAKuB,MACrEA,KAAKgxM,aAAUrpM,EAElB,EAEDI,EAAO+jhB,iBAAmB,SAA0B96c,GAClD,IAAIk7c,EACAzpU,EAASziN,KAEbA,KAAKgxE,MAAQA,EACsB,OAAlCk7c,EAAiBlshB,KAAKgxM,UAA4Bk7U,EAAezthB,KAAKuB,MACvEA,KAAKgxM,QAAUhgI,GAAM,SAAUnpC,GACN,mBAAZA,EACT46K,EAAO0pU,WAAWtkf,GAElB46K,EAAOrtL,SAEV,GACF,EAEDrtB,EAAOokhB,WAAa,SAAoBtkf,GACtC7nC,KAAK6nC,QAAUA,EAEXA,GACF7nC,KAAKo1B,SAER,EAEDrtB,EAAOqtB,QAAU,WACfp1B,KAAKC,UAAUS,SAAQ,SAAUF,GAC/BA,GACD,GACF,EAEDuH,EAAO4xM,UAAY,WACjB,MAA4B,mBAAjB35M,KAAK6nC,QACP7nC,KAAK6nC,QAIU,qBAAb3lC,UAIJ,MAACyF,EAAW,UAAW,aAAapC,SAASrD,SAAS0yB,gBAC9D,EAEM82f,CACR,CA1FsC,CA0FrCU,EAAAA,qbC3FK,SAASC,IACd,MAAO,CACLC,QAAS,SAAiBnme,GACxBA,EAAQome,QAAU,WAChB,IAAIC,EAAuBC,EAAwBC,EAAwBC,EAAwBC,EAAqBC,EAoDpHvvgB,EAlDAwvgB,EAAgE,OAAjDN,EAAwBrme,EAAQ4me,eAA0F,OAAxDN,EAAyBD,EAAsBruB,WAAzD,EAAkFsuB,EAAuBK,YAChLE,EAA+D,OAAlDN,EAAyBvme,EAAQ4me,eAA2F,OAAzDJ,EAAyBD,EAAuBvuB,WAA1D,EAAmFwuB,EAAuBK,UAChLC,EAAyB,MAAbD,OAAoB,EAASA,EAAUC,UACnDC,EAA4E,aAAzC,MAAbF,OAAoB,EAASA,EAAUpmgB,WAC7DumgB,EAAgF,cAAzC,MAAbH,OAAoB,EAASA,EAAUpmgB,WACjEwmgB,GAA0D,OAA7CR,EAAsBzme,EAAQzd,MAAMpuC,WAAgB,EAASsyhB,EAAoBS,QAAU,GACxGC,GAAgE,OAA9CT,EAAuB1me,EAAQzd,MAAMpuC,WAAgB,EAASuyhB,EAAqBU,aAAe,GACpHC,GAAkBC,EAAAA,EAAAA,MAClBC,EAAiC,MAAnBF,OAA0B,EAASA,EAAgBG,OACjEC,EAAgBN,EAChBO,GAAY,EAEZC,EAAU3ne,EAAQ/oD,QAAQ0whB,SAAW,WACvC,OAAOnvhB,QAAQa,OAAO,kBACvB,EAEGuuhB,EAAgB,SAAuBV,EAAOl+Y,EAAOsiJ,EAAMrkR,GAE7D,OADAwghB,EAAgBxghB,EAAW,CAAC+hI,GAAOl/H,OAAO29gB,GAAiB,GAAG39gB,OAAO29gB,EAAe,CAACz+Y,IAC9E/hI,EAAW,CAACqkR,GAAMxhR,OAAOo9gB,GAAS,GAAGp9gB,OAAOo9gB,EAAO,CAAC57P,GAC5D,EAGGu8P,EAAY,SAAmBX,EAAOY,EAAQ9+Y,EAAO/hI,GACvD,GAAIyghB,EACF,OAAOlvhB,QAAQa,OAAO,aAGxB,GAAqB,qBAAV2vI,IAA0B8+Y,GAAUZ,EAAM1shB,OACnD,OAAOhC,QAAQC,QAAQyuhB,GAGzB,IAAIa,EAAiB,CACnBC,SAAUhoe,EAAQgoe,SAClBR,OAAQD,EACRT,UAAW99Y,EACXgvX,KAAMh4c,EAAQg4c,MAEZiwB,EAAgBN,EAAQI,GACxB5wgB,EAAU3e,QAAQC,QAAQwvhB,GAAetwhB,MAAK,SAAU2zR,GAC1D,OAAOs8P,EAAcV,EAAOl+Y,EAAOsiJ,EAAMrkR,EAC1C,KAEGihhB,EAAAA,EAAAA,IAAaD,KACI9wgB,EACN0jC,OAASote,EAAcpte,QAGtC,OAAO1jC,CACR,EAID,GAAK8vgB,EAASzshB,OAGT,GAAIushB,EAAoB,CACzB,IAAIe,EAA8B,qBAAdhB,EAChB99Y,EAAQ8+Y,EAAShB,EAAYqB,EAAiBnoe,EAAQ/oD,QAASgwhB,GACnE9vgB,EAAU0wgB,EAAUZ,EAAUa,EAAQ9+Y,EACvC,MACI,GAAIg+Y,EAAwB,CAC7B,IAAIoB,EAA+B,qBAAdtB,EAEjBuB,EAASD,EAAUtB,EAAYwB,EAAqBtoe,EAAQ/oD,QAASgwhB,GAEzE9vgB,EAAU0wgB,EAAUZ,EAAUmB,EAASC,GAAQ,EAChD,MAEG,WACEZ,EAAgB,GAChB,IAAIK,EAAqD,qBAArC9ne,EAAQ/oD,QAAQkxhB,iBAChCI,GAAuB5B,IAAeM,EAAS,IAAKN,EAAYM,EAAS,GAAI,EAAGA,GAEpF9vgB,EAAUoxgB,EAAuBV,EAAU,GAAIC,EAAQX,EAAc,IAAM3uhB,QAAQC,QAAQmvhB,EAAc,GAAIT,EAAc,GAAIF,EAAS,KAgBxI,IAdA,IAAIrlS,EAAQ,SAAep/O,GACzB2U,EAAUA,EAAQxf,MAAK,SAAUuvhB,GAG/B,IAF0BP,IAAeM,EAASzkhB,IAAKmkhB,EAAYM,EAASzkhB,GAAIA,EAAGykhB,GAE1D,CACvB,IAAIuB,EAAUV,EAASX,EAAc3khB,GAAK2lhB,EAAiBnoe,EAAQ/oD,QAASiwhB,GAE5E,OAAOW,EAAUX,EAAOY,EAAQU,EACjC,CAED,OAAOhwhB,QAAQC,QAAQmvhB,EAAcV,EAAOC,EAAc3khB,GAAIykhB,EAASzkhB,IACxE,GACF,EAEQA,EAAI,EAAGA,EAAIykhB,EAASzshB,OAAQgI,IACnCo/O,EAAMp/O,EAtBV,SAfN2U,EAAU0wgB,EAAU,IA0CtB,IAAIY,EAAetxgB,EAAQxf,MAAK,SAAUuvhB,GACxC,MAAO,CACLA,MAAOA,EACPE,WAAYK,EAEf,IAYD,OAXwBgB,EAEN5te,OAAS,WACzB6se,GAAY,EACO,MAAnBL,GAAmCA,EAAgB/+d,SAE/C4/d,EAAAA,EAAAA,IAAa/wgB,IACfA,EAAQ0jC,QAEX,EAEM4te,CACR,CACF,EAEJ,CACM,SAASN,EAAiBlxhB,EAASiwhB,GACxC,OAAmC,MAA5BjwhB,EAAQkxhB,sBAA2B,EAASlxhB,EAAQkxhB,iBAAiBjB,EAAMA,EAAM1shB,OAAS,GAAI0shB,EACtG,CACM,SAASoB,EAAqBrxhB,EAASiwhB,GAC5C,OAAuC,MAAhCjwhB,EAAQqxhB,0BAA+B,EAASrxhB,EAAQqxhB,qBAAqBpB,EAAM,GAAIA,EAC/F,CAMM,SAASwB,EAAYzxhB,EAASiwhB,GACnC,GAAIjwhB,EAAQkxhB,kBAAoBzphB,MAAMC,QAAQuohB,GAAQ,CACpD,IAAIyB,EAAgBR,EAAiBlxhB,EAASiwhB,GAC9C,MAAgC,qBAAlByB,GAAmD,OAAlBA,IAA4C,IAAlBA,CAC1E,CACF,CAMM,SAASC,EAAgB3xhB,EAASiwhB,GACvC,GAAIjwhB,EAAQqxhB,sBAAwB5phB,MAAMC,QAAQuohB,GAAQ,CACxD,IAAI2B,EAAoBP,EAAqBrxhB,EAASiwhB,GACtD,MAAoC,qBAAtB2B,GAA2D,OAAtBA,IAAoD,IAAtBA,CAClF,CACF,2FCtJD,IAAIz7d,EAASl3D,QACN,SAAS4yhB,IACd,OAAO17d,CACR,CACM,SAAS27d,EAAUC,GACxB57d,EAAS47d,CACV,mFCLUC,EAA6B,WACtC,SAASA,IACPpvhB,KAAKguD,MAAQ,GACbhuD,KAAKqvhB,aAAe,EAEpBrvhB,KAAKsvhB,SAAW,SAAU/xhB,GACxBA,GACD,EAEDyC,KAAKuvhB,cAAgB,SAAUhyhB,GAC7BA,GACD,CACF,CAED,IAAIwK,EAASqnhB,EAAcpnhB,UAoF3B,OAlFAD,EAAOynhB,MAAQ,SAAejyhB,GAC5B,IAAIiG,EACJxD,KAAKqvhB,eAEL,IACE7rhB,EAASjG,GAOV,CARD,QAGEyC,KAAKqvhB,eAEArvhB,KAAKqvhB,cACRrvhB,KAAKmJ,OAER,CAED,OAAO3F,CACR,EAEDuE,EAAO0nhB,SAAW,SAAkBlyhB,GAClC,IAAIwJ,EAAQ/G,KAERA,KAAKqvhB,aACPrvhB,KAAKguD,MAAM5tD,KAAK7C,IAEhBmyhB,EAAAA,EAAAA,KAAkB,WAChB3ohB,EAAMuohB,SAAS/xhB,EAChB,GAEJ,EAMDwK,EAAO4nhB,WAAa,SAAoBpyhB,GACtC,IAAIklN,EAASziN,KAEb,OAAO,WACL,IAAK,IAAI8sD,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC/EzX,EAAKyX,GAAQyC,UAAUzC,GAGzBotM,EAAOgtU,UAAS,WACdlyhB,EAASwa,WAAM,EAAQna,EACxB,GACF,CACF,EAEDmK,EAAOoB,MAAQ,WACb,IAAIk6M,EAASrjN,KAETguD,EAAQhuD,KAAKguD,MACjBhuD,KAAKguD,MAAQ,GAETA,EAAMrtD,SACR+uhB,EAAAA,EAAAA,KAAkB,WAChBrsU,EAAOksU,eAAc,WACnBvhe,EAAMttD,SAAQ,SAAUnD,GACtB8lN,EAAOisU,SAAS/xhB,EACjB,GACF,GACF,GAEJ,EAODwK,EAAO6nhB,kBAAoB,SAA2B7xhB,GACpDiC,KAAKsvhB,SAAWvxhB,CACjB,EAODgK,EAAO8nhB,uBAAyB,SAAgC9xhB,GAC9DiC,KAAKuvhB,cAAgBxxhB,CACtB,EAEMqxhB,CACR,CAnGuC,GAqG7BU,EAAgB,IAAIV,uGCXpBW,EAAgB,IA1Fa,SAAUtE,GAGhD,SAASuE,IACP,IAAIjphB,EAuBJ,OArBAA,EAAQ0khB,EAAchthB,KAAKuB,OAASA,MAE9BgxE,MAAQ,SAAUi/c,GACtB,IAAIr6c,EAEJ,IAAK+1c,EAAAA,KAAmC,OAArB/1c,EAAU37E,aAAkB,EAAS27E,EAAQr0E,kBAAmB,CACjF,IAAIf,EAAW,WACb,OAAOyvhB,GACR,EAKD,OAFAh2hB,OAAOsH,iBAAiB,SAAUf,GAAU,GAC5CvG,OAAOsH,iBAAiB,UAAWf,GAAU,GACtC,WAELvG,OAAOuH,oBAAoB,SAAUhB,GACrCvG,OAAOuH,oBAAoB,UAAWhB,EACvC,CACF,CACF,EAEMuG,CACR,EA3BD6khB,EAAAA,EAAAA,GAAeoE,EAAevE,GA6B9B,IAAI1jhB,EAASiohB,EAAchohB,UA0D3B,OAxDAD,EAAO8jhB,YAAc,WACd7rhB,KAAKgxM,SACRhxM,KAAK8rhB,iBAAiB9rhB,KAAKgxE,MAE9B,EAEDjpE,EAAOgkhB,cAAgB,WAEnB,IAAIC,EADDhshB,KAAKishB,iBAG0B,OAAjCD,EAAgBhshB,KAAKgxM,UAA4Bg7U,EAAcvthB,KAAKuB,MACrEA,KAAKgxM,aAAUrpM,EAElB,EAEDI,EAAO+jhB,iBAAmB,SAA0B96c,GAClD,IAAIk7c,EACAzpU,EAASziN,KAEbA,KAAKgxE,MAAQA,EACsB,OAAlCk7c,EAAiBlshB,KAAKgxM,UAA4Bk7U,EAAezthB,KAAKuB,MACvEA,KAAKgxM,QAAUhgI,GAAM,SAAUk/c,GACP,mBAAXA,EACTztU,EAAO0tU,UAAUD,GAEjBztU,EAAOwtU,UAEV,GACF,EAEDlohB,EAAOoohB,UAAY,SAAmBD,GACpClwhB,KAAKkwhB,OAASA,EAEVA,GACFlwhB,KAAKiwhB,UAER,EAEDlohB,EAAOkohB,SAAW,WAChBjwhB,KAAKC,UAAUS,SAAQ,SAAUF,GAC/BA,GACD,GACF,EAEDuH,EAAOqohB,SAAW,WAChB,MAA2B,mBAAhBpwhB,KAAKkwhB,OACPlwhB,KAAKkwhB,OAGW,qBAAdzygB,WAAyD,qBAArBA,UAAU4ygB,QAIlD5ygB,UAAU4ygB,MAClB,EAEML,CACR,CAzFuC,CAyFtC5D,EAAAA,sICrFSpsb,EAAqB,WAC9B,SAASA,EAAMjgG,GACbC,KAAKswhB,qBAAsB,EAC3BtwhB,KAAKuwhB,cAAe,EACpBvwhB,KAAKomH,eAAiBrmH,EAAOqmH,eAC7BpmH,KAAKwwhB,WAAWzwhB,EAAO3C,SACvB4C,KAAKohB,UAAY,GACjBphB,KAAKsQ,MAAQvQ,EAAOuQ,MACpBtQ,KAAKmuhB,SAAWpuhB,EAAOouhB,SACvBnuhB,KAAKywhB,UAAY1whB,EAAO0whB,UACxBzwhB,KAAK0whB,aAAe3whB,EAAO2oC,OAAS1oC,KAAK2whB,gBAAgB3whB,KAAK5C,SAC9D4C,KAAK0oC,MAAQ1oC,KAAK0whB,aAClB1whB,KAAKm+f,KAAOp+f,EAAOo+f,KACnBn+f,KAAK4whB,YACN,CAED,IAAI7ohB,EAASi4F,EAAMh4F,UA2dnB,OAzdAD,EAAOyohB,WAAa,SAAoBpzhB,GACtC,IAAIyzhB,EAEJ7whB,KAAK5C,SAAU2b,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKomH,eAAgBhpH,GACjD4C,KAAKm+f,KAAkB,MAAX/ggB,OAAkB,EAASA,EAAQ+ggB,KAE/Cn+f,KAAK8whB,UAAYvnhB,KAAKkuB,IAAIz3B,KAAK8whB,WAAa,EAAuD,OAAnDD,EAAwB7whB,KAAK5C,QAAQ0zhB,WAAqBD,EAAwB,IACnI,EAED9ohB,EAAOgphB,kBAAoB,SAA2B3zhB,GACpD4C,KAAKomH,eAAiBhpH,CACvB,EAED2K,EAAO6ohB,WAAa,WAClB,IAAI7phB,EAAQ/G,KAEZA,KAAKgxhB,kBAEDC,EAAAA,EAAAA,IAAejxhB,KAAK8whB,aACtB9whB,KAAKkxhB,UAAY37f,YAAW,WAC1BxuB,EAAMoqhB,gBACP,GAAEnxhB,KAAK8whB,WAEX,EAED/ohB,EAAOiphB,eAAiB,WAClBhxhB,KAAKkxhB,YACP57f,aAAat1B,KAAKkxhB,WAClBlxhB,KAAKkxhB,eAAYvphB,EAEpB,EAEDI,EAAOophB,eAAiB,WACjBnxhB,KAAKohB,UAAUzgB,SACdX,KAAK0oC,MAAM0of,WACTpxhB,KAAKuwhB,cACPvwhB,KAAK4whB,aAGP5whB,KAAKsQ,MAAM5S,OAAOsC,MAGvB,EAED+H,EAAOsxE,QAAU,SAAiB4zY,EAAS7vd,GACzC,IAAIi0hB,EAAuBzsT,EAEvB0sT,EAAWtxhB,KAAK0oC,MAAMpuC,KAEtBA,GAAOi3hB,EAAAA,EAAAA,IAAiBtkE,EAASqkE,GAerC,OAb4E,OAAvED,GAAyBzsT,EAAgB5kO,KAAK5C,SAASo0hB,kBAAuB,EAASH,EAAsB5yhB,KAAKmmO,EAAe0sT,EAAUh3hB,IAC9IA,EAAOg3hB,GACqC,IAAnCtxhB,KAAK5C,QAAQq0hB,oBAEtBn3hB,GAAOo3hB,EAAAA,EAAAA,IAAiBJ,EAAUh3hB,IAIpC0F,KAAKu7gB,SAAS,CACZjhhB,KAAMA,EACN+K,KAAM,UACNsshB,cAA0B,MAAXv0hB,OAAkB,EAASA,EAAQw0hB,YAE7Ct3hB,CACR,EAEDyN,EAAO2xC,SAAW,SAAkBhR,EAAOmpf,GACzC7xhB,KAAKu7gB,SAAS,CACZl2gB,KAAM,WACNqjC,MAAOA,EACPmpf,gBAAiBA,GAEpB,EAED9phB,EAAOi5C,OAAS,SAAgB5jD,GAC9B,IAAI00hB,EAEAx0gB,EAAUtd,KAAKsd,QAEnB,OADkC,OAAjCw0gB,EAAgB9xhB,KAAK+xhB,UAA4BD,EAAc9we,OAAO5jD,GAChEkgB,EAAUA,EAAQxf,KAAKgkB,EAAAA,IAAMvE,MAAMuE,EAAAA,IAAQnjB,QAAQC,SAC3D,EAEDmJ,EAAO+lL,QAAU,WACf9tL,KAAKgxhB,iBACLhxhB,KAAKghD,OAAO,CACV25G,QAAQ,GAEX,EAED5yJ,EAAOy+B,MAAQ,WACbxmC,KAAK8tL,UACL9tL,KAAK05C,SAAS15C,KAAK0whB,aACpB,EAED3ohB,EAAOqqJ,SAAW,WAChB,OAAOpyJ,KAAKohB,UAAU+wC,MAAK,SAAUzwC,GACnC,OAAoC,IAA7BA,EAAStkB,QAAQupN,OACzB,GACF,EAED5+M,EAAOqphB,WAAa,WAClB,OAAOpxhB,KAAK0oC,MAAM0of,UACnB,EAEDrphB,EAAOiqhB,QAAU,WACf,OAAOhyhB,KAAK0oC,MAAMupf,gBAAkBjyhB,KAAK0oC,MAAMipf,eAAiB3xhB,KAAKohB,UAAU+wC,MAAK,SAAUzwC,GAC5F,OAAOA,EAASwwgB,mBAAmBF,OACpC,GACF,EAEDjqhB,EAAOoqhB,cAAgB,SAAuBC,GAK5C,YAJkB,IAAdA,IACFA,EAAY,GAGPpyhB,KAAK0oC,MAAMupf,gBAAkBjyhB,KAAK0oC,MAAMipf,iBAAkBU,EAAAA,EAAAA,IAAeryhB,KAAK0oC,MAAMipf,cAAeS,EAC3G,EAEDrqhB,EAAOqtB,QAAU,WACf,IAAIk9f,EAEA5wgB,EAAW1hB,KAAKohB,UAAUplB,MAAK,SAAU+R,GAC3C,OAAOA,EAAEwkhB,0BACV,IAEG7wgB,GACFA,EAAS8wgB,UAIwB,OAAlCF,EAAiBtyhB,KAAK+xhB,UAA4BO,EAAeG,UACnE,EAED1qhB,EAAOkohB,SAAW,WAChB,IAAIyC,EAEAhxgB,EAAW1hB,KAAKohB,UAAUplB,MAAK,SAAU+R,GAC3C,OAAOA,EAAE4khB,wBACV,IAEGjxgB,GACFA,EAAS8wgB,UAIwB,OAAlCE,EAAiB1yhB,KAAK+xhB,UAA4BW,EAAeD,UACnE,EAED1qhB,EAAO6qhB,YAAc,SAAqBlxgB,IACE,IAAtC1hB,KAAKohB,UAAUhgB,QAAQsgB,KACzB1hB,KAAKohB,UAAUhhB,KAAKshB,GACpB1hB,KAAKuwhB,cAAe,EAEpBvwhB,KAAKgxhB,iBACLhxhB,KAAKsQ,MAAMuihB,OAAO,CAChBxthB,KAAM,gBACN4vF,MAAOj1F,KACP0hB,SAAUA,IAGf,EAED3Z,EAAO+qhB,eAAiB,SAAwBpxgB,IACJ,IAAtC1hB,KAAKohB,UAAUhgB,QAAQsgB,KACzB1hB,KAAKohB,UAAYphB,KAAKohB,UAAUoZ,QAAO,SAAUzsB,GAC/C,OAAOA,IAAM2T,CACd,IAEI1hB,KAAKohB,UAAUzgB,SAGdX,KAAK+xhB,UACH/xhB,KAAK+xhB,QAAQgB,uBAAyB/yhB,KAAKswhB,oBAC7CtwhB,KAAK+xhB,QAAQ/we,OAAO,CAClBgye,QAAQ,IAGVhzhB,KAAK+xhB,QAAQkB,eAIbjzhB,KAAK8whB,UACP9whB,KAAK4whB,aAEL5whB,KAAKsQ,MAAM5S,OAAOsC,OAItBA,KAAKsQ,MAAMuihB,OAAO,CAChBxthB,KAAM,kBACN4vF,MAAOj1F,KACP0hB,SAAUA,IAGf,EAED3Z,EAAOmrhB,kBAAoB,WACzB,OAAOlzhB,KAAKohB,UAAUzgB,MACvB,EAEDoH,EAAOorhB,WAAa,WACbnzhB,KAAK0oC,MAAMupf,eACdjyhB,KAAKu7gB,SAAS,CACZl2gB,KAAM,cAGX,EAED0C,EAAO1B,MAAQ,SAAejJ,EAAS2vhB,GACrC,IACIqG,EACA5G,EACA6G,EAHA5wU,EAASziN,KAKb,GAAIA,KAAK0oC,MAAM0of,WACb,GAAIpxhB,KAAK0oC,MAAMipf,gBAAkC,MAAhB5E,OAAuB,EAASA,EAAauG,eAE5EtzhB,KAAKghD,OAAO,CACV25G,QAAQ,SAEL,GAAI36J,KAAKsd,QAAS,CACvB,IAAIi2gB,EAKJ,OAFmC,OAAlCA,EAAiBvzhB,KAAK+xhB,UAA4BwB,EAAeC,gBAE3DxzhB,KAAKsd,OACb,CAUH,GANIlgB,GACF4C,KAAKwwhB,WAAWpzhB,IAKb4C,KAAK5C,QAAQ0whB,QAAS,CACzB,IAAIpsgB,EAAW1hB,KAAKohB,UAAUplB,MAAK,SAAU+R,GAC3C,OAAOA,EAAE3Q,QAAQ0whB,OAClB,IAEGpsgB,GACF1hB,KAAKwwhB,WAAW9ugB,EAAStkB,QAE5B,CAED,IAAI+whB,GAAWsF,EAAAA,EAAAA,IAAoBzzhB,KAAKmuhB,UACpCX,GAAkBC,EAAAA,EAAAA,MAElBS,EAAiB,CACnBC,SAAUA,EACVlB,eAAWtlhB,EACXw2f,KAAMn+f,KAAKm+f,MAEbnggB,OAAOC,eAAeiwhB,EAAgB,SAAU,CAC9CzqgB,YAAY,EACZ7pB,IAAK,WACH,GAAI4zhB,EAEF,OADA/qU,EAAO6tU,qBAAsB,EACtB9C,EAAgBG,MAI1B,IAGH,IAoBM+F,EASAjH,EAnBFtme,EAAU,CACZ4me,aAAcA,EACd3vhB,QAAS4C,KAAK5C,QACd+whB,SAAUA,EACVzlf,MAAO1oC,KAAK0oC,MACZ6jf,QAfY,WACZ,OAAK9pU,EAAOrlN,QAAQ0whB,SAIpBrrU,EAAO6tU,qBAAsB,EACtB7tU,EAAOrlN,QAAQ0whB,QAAQI,IAJrBvvhB,QAAQa,OAAO,kBAKzB,EASC2+f,KAAMn+f,KAAKm+f,OAG0C,OAAlDi1B,EAAwBpzhB,KAAK5C,QAAQu2hB,eAAoB,EAASP,EAAsB9G,WAGvC,OAAnDoH,EAAyB1zhB,KAAK5C,QAAQu2hB,WAA6BD,EAAuBpH,QAAQnme,KAIrGnmD,KAAK4zhB,YAAc5zhB,KAAK0oC,MAEnB1oC,KAAK0oC,MAAM0of,YAAcpxhB,KAAK0oC,MAAMmrf,aAAiE,OAAjDrH,EAAwBrme,EAAQ4me,mBAAwB,EAASP,EAAsBruB,QAG9In+f,KAAKu7gB,SAAS,CACZl2gB,KAAM,QACN84f,KAAyD,OAAlDsuB,EAAyBtme,EAAQ4me,mBAAwB,EAASN,EAAuBtuB,OA0DpG,OArDAn+f,KAAK+xhB,QAAU,IAAI+B,EAAAA,GAAQ,CACzB/1hB,GAAIooD,EAAQome,QACZ99d,MAA0B,MAAnB++d,GAAsF,OAAlD6F,EAAwB7F,EAAgB/+d,YAAlD,EAA4E4ke,EAAsBv2hB,KAAK0whB,GACxIuG,UAAW,SAAmBz5hB,GAC5BmoN,EAAOppI,QAAQ/+E,GAGkB,MAAjCmoN,EAAOnyM,MAAMvQ,OAAOg0hB,WAA6BtxU,EAAOnyM,MAAMvQ,OAAOg0hB,UAAUz5hB,EAAMmoN,GAE5D,IAArBA,EAAOquU,WACTruU,EAAO0uU,gBAEV,EACDtxB,QAAS,SAAiBxggB,IAElB20hB,EAAAA,EAAAA,IAAiB30hB,IAAUA,EAAMs7J,QACrC8nD,EAAO84T,SAAS,CACdl2gB,KAAM,QACNhG,MAAOA,KAIN20hB,EAAAA,EAAAA,IAAiB30hB,KAEW,MAA/BojN,EAAOnyM,MAAMvQ,OAAO8/f,SAA2Bp9S,EAAOnyM,MAAMvQ,OAAO8/f,QAAQxggB,EAAOojN,IAElFwsU,EAAAA,EAAAA,KAAY5vhB,MAAMA,IAIK,IAArBojN,EAAOquU,WACTruU,EAAO0uU,gBAEV,EACD8C,OAAQ,WACNxxU,EAAO84T,SAAS,CACdl2gB,KAAM,UAET,EACD6uhB,QAAS,WACPzxU,EAAO84T,SAAS,CACdl2gB,KAAM,SAET,EACD8uhB,WAAY,WACV1xU,EAAO84T,SAAS,CACdl2gB,KAAM,YAET,EACD+uhB,MAAOjue,EAAQ/oD,QAAQg3hB,MACvBC,WAAYlue,EAAQ/oD,QAAQi3hB,aAE9Br0hB,KAAKsd,QAAUtd,KAAK+xhB,QAAQz0gB,QACrBtd,KAAKsd,OACb,EAEDvV,EAAOwzgB,SAAW,SAAkB11f,GAClC,IAAIw9L,EAASrjN,KAEbA,KAAK0oC,MAAQ1oC,KAAKs0hB,QAAQt0hB,KAAK0oC,MAAO7iB,GACtCiqgB,EAAAA,EAAAA,OAAoB,WAClBzsU,EAAOjiM,UAAU1gB,SAAQ,SAAUghB,GACjCA,EAAS6ygB,cAAc1ugB,EACxB,IAEDw9L,EAAO/yM,MAAMuihB,OAAO,CAClB59b,MAAOouH,EACPh+M,KAAM,eACNwgB,OAAQA,GAEX,GACF,EAED9d,EAAO4ohB,gBAAkB,SAAyBvzhB,GAChD,IAAI9C,EAAsC,oBAAxB8C,EAAQsnV,YAA6BtnV,EAAQsnV,cAAgBtnV,EAAQsnV,YAEnF8vM,EADgD,qBAAxBp3hB,EAAQsnV,YACgD,oBAAjCtnV,EAAQo3hB,qBAAsCp3hB,EAAQo3hB,uBAAyBp3hB,EAAQo3hB,qBAAuB,EAC7JC,EAA0B,qBAATn6hB,EACrB,MAAO,CACLA,KAAMA,EACNo6hB,gBAAiB,EACjB/C,cAAe8C,EAAkC,MAAxBD,EAA+BA,EAAuB1xhB,KAAKygE,MAAQ,EAC5FlkE,MAAO,KACPs1hB,iBAAkB,EAClBC,eAAgB,EAChBC,kBAAmB,EACnBhB,UAAW,KACXzC,YAAY,EACZa,eAAe,EACf6C,UAAU,EACVluhB,OAAQ6thB,EAAU,UAAY,OAEjC,EAED1shB,EAAOushB,QAAU,SAAiB5rf,EAAO7iB,GACvC,IAAIkvgB,EAAcC,EAElB,OAAQnvgB,EAAOxgB,MACb,IAAK,SACH,OAAO0T,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBmsf,kBAAmBnsf,EAAMmsf,kBAAoB,IAGjD,IAAK,QACH,OAAO97gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBosf,UAAU,IAGd,IAAK,WACH,OAAO/7gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBosf,UAAU,IAGd,IAAK,QACH,OAAO/7gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBmsf,kBAAmB,EACnBhB,UAA2C,OAA/BkB,EAAelvgB,EAAOs4e,MAAgB42B,EAAe,KACjE3D,YAAY,EACZ0D,UAAU,IACRpsf,EAAMipf,eAAiB,CACzBtyhB,MAAO,KACPuH,OAAQ,YAGZ,IAAK,UACH,OAAOmS,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBpuC,KAAMurB,EAAOvrB,KACbo6hB,gBAAiBhsf,EAAMgsf,gBAAkB,EACzC/C,cAAiE,OAAjDqD,EAAwBnvgB,EAAO8rgB,eAAyBqD,EAAwBlyhB,KAAKygE,MACrGlkE,MAAO,KACPw1hB,kBAAmB,EACnBzD,YAAY,EACZa,eAAe,EACf6C,UAAU,EACVluhB,OAAQ,YAGZ,IAAK,QACH,IAAIvH,EAAQwmB,EAAOxmB,MAEnB,OAAI20hB,EAAAA,EAAAA,IAAiB30hB,IAAUA,EAAM2zhB,QAAUhzhB,KAAK4zhB,aAC3C76gB,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAK4zhB,cAGpB76gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBrpC,MAAOA,EACPs1hB,iBAAkBjsf,EAAMisf,iBAAmB,EAC3CC,eAAgB9xhB,KAAKygE,MACrBsxd,kBAAmBnsf,EAAMmsf,kBAAoB,EAC7CzD,YAAY,EACZ0D,UAAU,EACVluhB,OAAQ,UAGZ,IAAK,aACH,OAAOmS,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBupf,eAAe,IAGnB,IAAK,WACH,OAAOl5gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO7iB,EAAO6iB,OAEpC,QACE,OAAOA,EAEZ,EAEMs3D,CACR,CA5e+B,aCDrBi1b,EAA0B,SAAUxJ,GAG7C,SAASwJ,EAAWl1hB,GAClB,IAAIgH,EAMJ,OAJAA,EAAQ0khB,EAAchthB,KAAKuB,OAASA,MAC9BD,OAASA,GAAU,CAAC,EAC1BgH,EAAMmuhB,QAAU,GAChBnuhB,EAAMouhB,WAAa,CAAC,EACbpuhB,CACR,EAVD6khB,EAAAA,EAAAA,GAAeqJ,EAAYxJ,GAY3B,IAAI1jhB,EAASkthB,EAAWjthB,UA8HxB,OA5HAD,EAAOqthB,MAAQ,SAAe9na,EAAQlwH,EAASsrC,GAC7C,IAAI2sf,EAEAlH,EAAW/whB,EAAQ+whB,SACnBsC,EAAwD,OAA3C4E,EAAqBj4hB,EAAQqzhB,WAAqB4E,GAAqBC,EAAAA,EAAAA,IAAsBnH,EAAU/whB,GACpH63F,EAAQj1F,KAAKpG,IAAI62hB,GAerB,OAbKx7b,IACHA,EAAQ,IAAI+K,EAAM,CAChB1vF,MAAOtQ,KACPmuhB,SAAUA,EACVsC,UAAWA,EACXrzhB,QAASkwH,EAAOioa,oBAAoBn4hB,GACpCsrC,MAAOA,EACP09E,eAAgBkH,EAAOkoa,iBAAiBrH,GACxChwB,KAAM/ggB,EAAQ+ggB,OAEhBn+f,KAAK+tC,IAAIknD,IAGJA,CACR,EAEDltF,EAAOgmC,IAAM,SAAaknD,GACnBj1F,KAAKm1hB,WAAWlgc,EAAMw7b,aACzBzwhB,KAAKm1hB,WAAWlgc,EAAMw7b,WAAax7b,EACnCj1F,KAAKk1hB,QAAQ90hB,KAAK60F,GAClBj1F,KAAK6yhB,OAAO,CACVxthB,KAAM,aACN4vF,MAAOA,IAGZ,EAEDltF,EAAOrK,OAAS,SAAgBu3F,GAC9B,IAAIwgc,EAAaz1hB,KAAKm1hB,WAAWlgc,EAAMw7b,WAEnCgF,IACFxgc,EAAM64F,UACN9tL,KAAKk1hB,QAAUl1hB,KAAKk1hB,QAAQ16f,QAAO,SAAUzsB,GAC3C,OAAOA,IAAMknF,CACd,IAEGwgc,IAAexgc,UACVj1F,KAAKm1hB,WAAWlgc,EAAMw7b,WAG/BzwhB,KAAK6yhB,OAAO,CACVxthB,KAAM,eACN4vF,MAAOA,IAGZ,EAEDltF,EAAOo/B,MAAQ,WACb,IAAIs7K,EAASziN,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAClBrtU,EAAOyyU,QAAQx0hB,SAAQ,SAAUu0F,GAC/BwtH,EAAO/kN,OAAOu3F,EACf,GACF,GACF,EAEDltF,EAAOnO,IAAM,SAAa62hB,GACxB,OAAOzwhB,KAAKm1hB,WAAW1E,EACxB,EAED1ohB,EAAO2thB,OAAS,WACd,OAAO11hB,KAAKk1hB,OACb,EAEDnthB,EAAO/L,KAAO,SAAco/K,EAAMu6W,GAChC,IACIj4T,GADmBk4T,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,GACd,GAM/B,MAJ6B,qBAAlBj4T,EAAQowR,QACjBpwR,EAAQowR,OAAQ,GAGX9tf,KAAKk1hB,QAAQl5hB,MAAK,SAAUi5F,GACjC,OAAO4gc,EAAAA,EAAAA,IAAWn4T,EAASzoI,EAC5B,GACF,EAEDltF,EAAO+thB,QAAU,SAAiB16W,EAAMu6W,GACtC,IACIj4T,GADoBk4T,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,GACd,GAEhC,OAAO33hB,OAAOgB,KAAK0+N,GAAS/8N,OAAS,EAAIX,KAAKk1hB,QAAQ16f,QAAO,SAAUy6D,GACrE,OAAO4gc,EAAAA,EAAAA,IAAWn4T,EAASzoI,EAC5B,IAAIj1F,KAAKk1hB,OACX,EAEDnthB,EAAO8qhB,OAAS,SAAgB9xhB,GAC9B,IAAIsiN,EAASrjN,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAClBzsU,EAAOpjN,UAAUS,SAAQ,SAAUF,GACjCA,EAASO,EACV,GACF,GACF,EAEDgH,EAAOqtB,QAAU,WACf,IAAIgwL,EAASplN,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAClB1qU,EAAO8vU,QAAQx0hB,SAAQ,SAAUu0F,GAC/BA,EAAM7/D,SACP,GACF,GACF,EAEDrtB,EAAOkohB,SAAW,WAChB,IAAIzpU,EAASxmN,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAClBtpU,EAAO0uU,QAAQx0hB,SAAQ,SAAUu0F,GAC/BA,EAAMg7b,UACP,GACF,GACF,EAEMgF,CACR,CA5IoC,CA4InC7I,EAAAA,GC3IS2J,EAAwB,WACjC,SAASA,EAASh2hB,GAChBC,KAAK5C,SAAU2b,EAAAA,EAAAA,GAAS,CAAC,EAAGhZ,EAAOqmH,eAAgBrmH,EAAO3C,SAC1D4C,KAAKg2hB,WAAaj2hB,EAAOi2hB,WACzBh2hB,KAAKi2hB,cAAgBl2hB,EAAOk2hB,cAC5Bj2hB,KAAKohB,UAAY,GACjBphB,KAAK0oC,MAAQ3oC,EAAO2oC,OA6Jf,CACLyd,aAASx+C,EACTrN,UAAMqN,EACNtI,MAAO,KACP62hB,aAAc,EACdpB,UAAU,EACVluhB,OAAQ,OACRuvhB,eAAWxuhB,GAnKX3H,KAAKm+f,KAAOp+f,EAAOo+f,IACpB,CAED,IAAIp2f,EAASguhB,EAAS/thB,UAsJtB,OApJAD,EAAO2xC,SAAW,SAAkBhR,GAClC1oC,KAAKu7gB,SAAS,CACZl2gB,KAAM,WACNqjC,MAAOA,GAEV,EAED3gC,EAAO6qhB,YAAc,SAAqBlxgB,IACE,IAAtC1hB,KAAKohB,UAAUhgB,QAAQsgB,IACzB1hB,KAAKohB,UAAUhhB,KAAKshB,EAEvB,EAED3Z,EAAO+qhB,eAAiB,SAAwBpxgB,GAC9C1hB,KAAKohB,UAAYphB,KAAKohB,UAAUoZ,QAAO,SAAUzsB,GAC/C,OAAOA,IAAM2T,CACd,GACF,EAED3Z,EAAOi5C,OAAS,WACd,OAAIhhD,KAAK+xhB,SACP/xhB,KAAK+xhB,QAAQ/we,SACNhhD,KAAK+xhB,QAAQz0gB,QAAQxf,KAAKgkB,EAAAA,IAAMvE,MAAMuE,EAAAA,KAGxCnjB,QAAQC,SAChB,EAEDmJ,EAAO0qhB,SAAW,WAChB,OAAIzyhB,KAAK+xhB,SACP/xhB,KAAK+xhB,QAAQU,WACNzyhB,KAAK+xhB,QAAQz0gB,SAGftd,KAAKyhJ,SACb,EAED15I,EAAO05I,QAAU,WACf,IAEInnJ,EAFAyM,EAAQ/G,KAGRo2hB,EAAiC,YAAtBp2hB,KAAK0oC,MAAM9hC,OACtB0W,EAAU3e,QAAQC,UAuBtB,OArBKw3hB,IACHp2hB,KAAKu7gB,SAAS,CACZl2gB,KAAM,UACN8whB,UAAWn2hB,KAAK5C,QAAQ+4hB,YAE1B74gB,EAAUA,EAAQxf,MAAK,WAEkB,MAAvCiJ,EAAMkvhB,cAAcl2hB,OAAOs2hB,UAA4BtvhB,EAAMkvhB,cAAcl2hB,OAAOs2hB,SAAStvhB,EAAM2hC,MAAMytf,UAAWpvhB,EACnH,IAAEjJ,MAAK,WACN,OAAiC,MAA1BiJ,EAAM3J,QAAQi5hB,cAAmB,EAAStvhB,EAAM3J,QAAQi5hB,SAAStvhB,EAAM2hC,MAAMytf,UACrF,IAAEr4hB,MAAK,SAAUqoD,GACZA,IAAYp/C,EAAM2hC,MAAMyd,SAC1Bp/C,EAAMw0gB,SAAS,CACbl2gB,KAAM,UACN8gD,QAASA,EACTgwe,UAAWpvhB,EAAM2hC,MAAMytf,WAG5B,KAGI74gB,EAAQxf,MAAK,WAClB,OAAOiJ,EAAMuvhB,iBACd,IAAEx4hB,MAAK,SAAU0F,GAChBlJ,EAAOkJ,EAEiC,MAAxCuD,EAAMkvhB,cAAcl2hB,OAAOg0hB,WAA6BhthB,EAAMkvhB,cAAcl2hB,OAAOg0hB,UAAUz5hB,EAAMyM,EAAM2hC,MAAMytf,UAAWpvhB,EAAM2hC,MAAMyd,QAASp/C,EAChJ,IAAEjJ,MAAK,WACN,OAAkC,MAA3BiJ,EAAM3J,QAAQ22hB,eAAoB,EAAShthB,EAAM3J,QAAQ22hB,UAAUz5hB,EAAMyM,EAAM2hC,MAAMytf,UAAWpvhB,EAAM2hC,MAAMyd,QACpH,IAAEroD,MAAK,WACN,OAAkC,MAA3BiJ,EAAM3J,QAAQm5hB,eAAoB,EAASxvhB,EAAM3J,QAAQm5hB,UAAUj8hB,EAAM,KAAMyM,EAAM2hC,MAAMytf,UAAWpvhB,EAAM2hC,MAAMyd,QAC1H,IAAEroD,MAAK,WAMN,OALAiJ,EAAMw0gB,SAAS,CACbl2gB,KAAM,UACN/K,KAAMA,IAGDA,CACR,IAAEijB,OAAM,SAAUle,GAKjB,OAHsC,MAAtC0H,EAAMkvhB,cAAcl2hB,OAAO8/f,SAA2B94f,EAAMkvhB,cAAcl2hB,OAAO8/f,QAAQxggB,EAAO0H,EAAM2hC,MAAMytf,UAAWpvhB,EAAM2hC,MAAMyd,QAASp/C,IAE5IkohB,EAAAA,EAAAA,KAAY5vhB,MAAMA,GACXV,QAAQC,UAAUd,MAAK,WAC5B,OAAgC,MAAzBiJ,EAAM3J,QAAQyigB,aAAkB,EAAS94f,EAAM3J,QAAQyigB,QAAQxggB,EAAO0H,EAAM2hC,MAAMytf,UAAWpvhB,EAAM2hC,MAAMyd,QACjH,IAAEroD,MAAK,WACN,OAAkC,MAA3BiJ,EAAM3J,QAAQm5hB,eAAoB,EAASxvhB,EAAM3J,QAAQm5hB,eAAU5uhB,EAAWtI,EAAO0H,EAAM2hC,MAAMytf,UAAWpvhB,EAAM2hC,MAAMyd,QAChI,IAAEroD,MAAK,WAMN,MALAiJ,EAAMw0gB,SAAS,CACbl2gB,KAAM,QACNhG,MAAOA,IAGHA,CACP,GACF,GACF,EAED0I,EAAOuuhB,gBAAkB,WACvB,IACIE,EADA/zU,EAASziN,KA6Bb,OA1BAA,KAAK+xhB,QAAU,IAAI+B,EAAAA,GAAQ,CACzB/1hB,GAAI,WACF,OAAK0kN,EAAOrlN,QAAQq5hB,WAIbh0U,EAAOrlN,QAAQq5hB,WAAWh0U,EAAO/5K,MAAMytf,WAHrCx3hB,QAAQa,OAAO,sBAIzB,EACDy0hB,OAAQ,WACNxxU,EAAO84T,SAAS,CACdl2gB,KAAM,UAET,EACD6uhB,QAAS,WACPzxU,EAAO84T,SAAS,CACdl2gB,KAAM,SAET,EACD8uhB,WAAY,WACV1xU,EAAO84T,SAAS,CACdl2gB,KAAM,YAET,EACD+uhB,MAAqD,OAA7CoC,EAAsBx2hB,KAAK5C,QAAQg3hB,OAAiBoC,EAAsB,EAClFnC,WAAYr0hB,KAAK5C,QAAQi3hB,aAEpBr0hB,KAAK+xhB,QAAQz0gB,OACrB,EAEDvV,EAAOwzgB,SAAW,SAAkB11f,GAClC,IAAIw9L,EAASrjN,KAEbA,KAAK0oC,MAwBT,SAAiBA,EAAO7iB,GACtB,OAAQA,EAAOxgB,MACb,IAAK,SACH,OAAO0T,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBwtf,aAAcxtf,EAAMwtf,aAAe,IAGvC,IAAK,QACH,OAAOn9gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBosf,UAAU,IAGd,IAAK,WACH,OAAO/7gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBosf,UAAU,IAGd,IAAK,UACH,OAAO/7gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzByd,QAAStgC,EAAOsgC,QAChB7rD,UAAMqN,EACNtI,MAAO,KACPy1hB,UAAU,EACVluhB,OAAQ,UACRuvhB,UAAWtwgB,EAAOswgB,YAGtB,IAAK,UACH,OAAOp9gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBpuC,KAAMurB,EAAOvrB,KACb+E,MAAO,KACPuH,OAAQ,UACRkuhB,UAAU,IAGd,IAAK,QACH,OAAO/7gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO,CACzBpuC,UAAMqN,EACNtI,MAAOwmB,EAAOxmB,MACd62hB,aAAcxtf,EAAMwtf,aAAe,EACnCpB,UAAU,EACVluhB,OAAQ,UAGZ,IAAK,WACH,OAAOmS,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAO7iB,EAAO6iB,OAEpC,QACE,OAAOA,EAEZ,CA1EgB4rf,CAAQt0hB,KAAK0oC,MAAO7iB,GACjCiqgB,EAAAA,EAAAA,OAAoB,WAClBzsU,EAAOjiM,UAAU1gB,SAAQ,SAAUghB,GACjCA,EAASg1gB,iBAAiB7wgB,EAC3B,IAEDw9L,EAAO4yU,cAAcpD,OAAOxvU,EAC7B,GACF,EAEM0yU,CACR,CAjKkC,GCA5B,IAAIY,EAA6B,SAAUlL,GAGhD,SAASkL,EAAc52hB,GACrB,IAAIgH,EAMJ,OAJAA,EAAQ0khB,EAAchthB,KAAKuB,OAASA,MAC9BD,OAASA,GAAU,CAAC,EAC1BgH,EAAM6vhB,UAAY,GAClB7vhB,EAAMivhB,WAAa,EACZjvhB,CACR,EAVD6khB,EAAAA,EAAAA,GAAe+K,EAAelL,GAY9B,IAAI1jhB,EAAS4uhB,EAAc3uhB,UAyF3B,OAvFAD,EAAOqthB,MAAQ,SAAe9na,EAAQlwH,EAASsrC,GAC7C,IAAImuf,EAAW,IAAId,EAAS,CAC1BE,cAAej2hB,KACfg2hB,aAAch2hB,KAAKg2hB,WACnB54hB,QAASkwH,EAAOwpa,uBAAuB15hB,GACvCsrC,MAAOA,EACP09E,eAAgBhpH,EAAQ25hB,YAAczpa,EAAO0pa,oBAAoB55hB,EAAQ25hB,kBAAepvhB,EACxFw2f,KAAM/ggB,EAAQ+ggB,OAGhB,OADAn+f,KAAK+tC,IAAI8of,GACFA,CACR,EAED9uhB,EAAOgmC,IAAM,SAAa8of,GACxB72hB,KAAK42hB,UAAUx2hB,KAAKy2hB,GACpB72hB,KAAK6yhB,OAAOgE,EACb,EAED9uhB,EAAOrK,OAAS,SAAgBm5hB,GAC9B72hB,KAAK42hB,UAAY52hB,KAAK42hB,UAAUp8f,QAAO,SAAUzsB,GAC/C,OAAOA,IAAM8ohB,CACd,IACDA,EAAS71e,SACThhD,KAAK6yhB,OAAOgE,EACb,EAED9uhB,EAAOo/B,MAAQ,WACb,IAAIs7K,EAASziN,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAClBrtU,EAAOm0U,UAAUl2hB,SAAQ,SAAUm2hB,GACjCp0U,EAAO/kN,OAAOm5hB,EACf,GACF,GACF,EAED9uhB,EAAO2thB,OAAS,WACd,OAAO11hB,KAAK42hB,SACb,EAED7uhB,EAAO/L,KAAO,SAAc0hO,GAK1B,MAJ6B,qBAAlBA,EAAQowR,QACjBpwR,EAAQowR,OAAQ,GAGX9tf,KAAK42hB,UAAU56hB,MAAK,SAAU66hB,GACnC,OAAOI,EAAAA,EAAAA,IAAcv5T,EAASm5T,EAC/B,GACF,EAED9uhB,EAAO+thB,QAAU,SAAiBp4T,GAChC,OAAO19N,KAAK42hB,UAAUp8f,QAAO,SAAUq8f,GACrC,OAAOI,EAAAA,EAAAA,IAAcv5T,EAASm5T,EAC/B,GACF,EAED9uhB,EAAO8qhB,OAAS,SAAgBgE,GAC9B,IAAIxzU,EAASrjN,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAClBzsU,EAAOpjN,UAAUS,SAAQ,SAAUF,GACjCA,EAASq2hB,EACV,GACF,GACF,EAED9uhB,EAAOqtB,QAAU,WACfp1B,KAAKk3hB,uBACN,EAEDnvhB,EAAOkohB,SAAW,WAChBjwhB,KAAKk3hB,uBACN,EAEDnvhB,EAAOmvhB,sBAAwB,WAC7B,IAAIC,EAAkBn3hB,KAAK42hB,UAAUp8f,QAAO,SAAUzsB,GACpD,OAAOA,EAAE26B,MAAMosf,QAChB,IACD,OAAOhF,EAAAA,EAAAA,OAAoB,WACzB,OAAOqH,EAAgBhzhB,QAAO,SAAUmZ,EAASu5gB,GAC/C,OAAOv5gB,EAAQxf,MAAK,WAClB,OAAO+4hB,EAASpE,WAAWl1gB,MAAMuE,EAAAA,GAClC,GACF,GAAEnjB,QAAQC,UACZ,GACF,EAEM+3hB,CACR,CAvGuC,CAuGtCvK,EAAAA,gCCrGSgL,EAA2B,WACpC,SAASA,EAAYr3hB,QACJ,IAAXA,IACFA,EAAS,CAAC,GAGZC,KAAKq3hB,WAAat3hB,EAAOs3hB,YAAc,IAAIpC,EAC3Cj1hB,KAAKi2hB,cAAgBl2hB,EAAOk2hB,eAAiB,IAAIU,EACjD32hB,KAAKomH,eAAiBrmH,EAAOqmH,gBAAkB,CAAC,EAChDpmH,KAAKs3hB,cAAgB,GACrBt3hB,KAAKu3hB,iBAAmB,EACzB,CAED,IAAIxvhB,EAASqvhB,EAAYpvhB,UAsUzB,OApUAD,EAAO68K,MAAQ,WACb,IAAI79K,EAAQ/G,KAEZA,KAAKw3hB,iBAAmBhM,EAAAA,EAAAA,WAAuB,WACzCA,EAAAA,EAAAA,aAA4BuE,EAAAA,EAAAA,aAC9BhphB,EAAMkvhB,cAAc7ggB,UAEpBruB,EAAMswhB,WAAWjigB,UAEpB,IACDp1B,KAAKy3hB,kBAAoB1H,EAAAA,EAAAA,WAAwB,WAC3CvE,EAAAA,EAAAA,aAA4BuE,EAAAA,EAAAA,aAC9BhphB,EAAMkvhB,cAAchG,WAEpBlphB,EAAMswhB,WAAWpH,WAEpB,GACF,EAEDlohB,EAAO85K,QAAU,WACf,IAAI61W,EAAuBC,EAEwB,OAAlDD,EAAwB13hB,KAAKw3hB,mBAAqCE,EAAsBj5hB,KAAKuB,MAC1C,OAAnD23hB,EAAwB33hB,KAAKy3hB,oBAAsCE,EAAsBl5hB,KAAKuB,KAChG,EAED+H,EAAOqphB,WAAa,SAAoBh2W,EAAMu6W,GAC5C,IACIj4T,GADmBk4T,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,GACd,GAG/B,OADAj4T,EAAQk6T,UAAW,EACZ53hB,KAAKq3hB,WAAWvB,QAAQp4T,GAAS/8N,MACzC,EAEDoH,EAAO8vhB,WAAa,SAAoBn6T,GACtC,OAAO19N,KAAKi2hB,cAAcH,SAAQ/8gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2kN,EAAS,CACtDk6T,UAAU,KACRj3hB,MACL,EAEDoH,EAAO+vhB,aAAe,SAAsB3J,EAAUzwT,GACpD,IAAIq6T,EAEJ,OAA4E,OAApEA,EAAwB/3hB,KAAKq3hB,WAAWr7hB,KAAKmyhB,EAAUzwT,SAAoB,EAASq6T,EAAsBrvf,MAAMpuC,IACzH,EAEDyN,EAAOiwhB,eAAiB,SAAwBC,GAC9C,OAAOj4hB,KAAKk4hB,gBAAgBpC,QAAQmC,GAAmBl0hB,KAAI,SAAUiT,GAInE,MAAO,CAHQA,EAAKm3gB,SACRn3gB,EAAK0xB,MACApuC,KAElB,GACF,EAEDyN,EAAOowhB,aAAe,SAAsBhK,EAAUlhE,EAAS7vd,GAC7D,IAAIknI,GAAgB8zZ,EAAAA,EAAAA,IAAejK,GAC/BkK,EAAmBr4hB,KAAKu1hB,oBAAoBjxZ,GAChD,OAAOtkI,KAAKq3hB,WAAWjC,MAAMp1hB,KAAMq4hB,GAAkBh/c,QAAQ4zY,EAAS7vd,EACvE,EAED2K,EAAOuwhB,eAAiB,SAAwBL,EAAmBhrE,EAAS7vd,GAC1E,IAAIqlN,EAASziN,KAEb,OAAO8vhB,EAAAA,EAAAA,OAAoB,WACzB,OAAOrtU,EAAOy1U,gBAAgBpC,QAAQmC,GAAmBl0hB,KAAI,SAAU2gK,GACrE,IAAIypX,EAAWzpX,EAAMypX,SACrB,MAAO,CAACA,EAAU1rU,EAAO01U,aAAahK,EAAUlhE,EAAS7vd,GAC1D,GACF,GACF,EAED2K,EAAOwwhB,cAAgB,SAAuBpK,EAAUzwT,GACtD,IAAI86T,EAEJ,OAA6E,OAArEA,EAAyBx4hB,KAAKq3hB,WAAWr7hB,KAAKmyhB,EAAUzwT,SAAoB,EAAS86T,EAAuB9vf,KACrH,EAED3gC,EAAO0whB,cAAgB,SAAuBr9W,EAAMu6W,GAClD,IACIj4T,GADoBk4T,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,GACd,GAE5B0B,EAAar3hB,KAAKq3hB,WACtBvH,EAAAA,EAAAA,OAAoB,WAClBuH,EAAWvB,QAAQp4T,GAASh9N,SAAQ,SAAUu0F,GAC5Coic,EAAW35hB,OAAOu3F,EACnB,GACF,GACF,EAEDltF,EAAO2whB,aAAe,SAAsBt9W,EAAMu6W,EAAMgD,GACtD,IAAIt1U,EAASrjN,KAET44hB,GAAoBhD,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,EAAMgD,GAChDj7T,EAAUk7T,EAAkB,GAC5Bx7hB,EAAUw7hB,EAAkB,GAE5BvB,EAAar3hB,KAAKq3hB,WAElBwB,GAAiB9/gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2kN,EAAS,CACzC53M,QAAQ,IAGV,OAAOgqgB,EAAAA,EAAAA,OAAoB,WAIzB,OAHAuH,EAAWvB,QAAQp4T,GAASh9N,SAAQ,SAAUu0F,GAC5CA,EAAMzuD,OACP,IACM68K,EAAOy1U,eAAeD,EAAgBz7hB,EAC9C,GACF,EAED2K,EAAOgxhB,cAAgB,SAAuB39W,EAAMu6W,EAAMgD,GACxD,IAAIvzU,EAASplN,KAETg5hB,GAAoBpD,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,EAAMgD,GAChDj7T,EAAUs7T,EAAkB,GAC5BC,EAAqBD,EAAkB,GACvCE,OAAuC,IAAvBD,EAAgC,CAAC,EAAIA,EAErB,qBAAzBC,EAAclG,SACvBkG,EAAclG,QAAS,GAGzB,IAAI31X,EAAWyyX,EAAAA,EAAAA,OAAoB,WACjC,OAAO1qU,EAAOiyU,WAAWvB,QAAQp4T,GAAS35N,KAAI,SAAUkxF,GACtD,OAAOA,EAAMj0C,OAAOk4e,EACrB,GACF,IACD,OAAOv6hB,QAAQ0nI,IAAIg3B,GAAUv/J,KAAKgkB,EAAAA,IAAMvE,MAAMuE,EAAAA,GAC/C,EAED/Z,EAAOoxhB,kBAAoB,SAA2B/9W,EAAMu6W,EAAMgD,GAChE,IAAI7yY,EACAszY,EACAC,EACA7yU,EAASxmN,KAETs5hB,GAAoB1D,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,EAAMgD,GAChDj7T,EAAU47T,EAAkB,GAC5Bl8hB,EAAUk8hB,EAAkB,GAE5BT,GAAiB9/gB,EAAAA,EAAAA,GAAS,CAAC,EAAG2kN,EAAS,CAGzC53M,OAAsH,OAA7GggI,EAA2D,OAAlDszY,EAAwB17T,EAAQ67T,eAAyBH,EAAwB17T,EAAQ53M,SAAkBggI,EAC7H0gB,SAA+D,OAApD6yX,EAAwB37T,EAAQ87T,kBAA2BH,IAGxE,OAAOvJ,EAAAA,EAAAA,OAAoB,WAKzB,OAJAtpU,EAAO6wU,WAAWvB,QAAQp4T,GAASh9N,SAAQ,SAAUu0F,GACnDA,EAAMk+b,YACP,IAEM3sU,EAAOsyU,eAAeD,EAAgBz7hB,EAC9C,GACF,EAED2K,EAAO+whB,eAAiB,SAAwB19W,EAAMu6W,EAAMgD,GAC1D,IAAIc,EAASz5hB,KAET05hB,GAAoB9D,EAAAA,EAAAA,IAAgBx6W,EAAMu6W,EAAMgD,GAChDj7T,EAAUg8T,EAAkB,GAC5Bt8hB,EAAUs8hB,EAAkB,GAE5Br8X,EAAWyyX,EAAAA,EAAAA,OAAoB,WACjC,OAAO2J,EAAOpC,WAAWvB,QAAQp4T,GAAS35N,KAAI,SAAUkxF,GACtD,OAAOA,EAAM5uF,WAAMsB,GAAWoR,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS,CAClD+ggB,KAAM,CACJ2uB,YAAwB,MAAXpvT,OAAkB,EAASA,EAAQovT,eAGrD,GACF,IACGxvgB,EAAU3e,QAAQ0nI,IAAIg3B,GAAUv/J,KAAKgkB,EAAAA,IAMzC,OAJiB,MAAX1kB,OAAkB,EAASA,EAAQu8hB,gBACvCr8gB,EAAUA,EAAQC,MAAMuE,EAAAA,KAGnBxE,CACR,EAEDvV,EAAO6xhB,WAAa,SAAoBx+W,EAAMu6W,EAAMgD,GAClD,IAAIr0Z,GAAgB8zZ,EAAAA,EAAAA,IAAeh9W,EAAMu6W,EAAMgD,GAC3CN,EAAmBr4hB,KAAKu1hB,oBAAoBjxZ,GAEV,qBAA3B+zZ,EAAiBjE,QAC1BiE,EAAiBjE,OAAQ,GAG3B,IAAIn/b,EAAQj1F,KAAKq3hB,WAAWjC,MAAMp1hB,KAAMq4hB,GACxC,OAAOpjc,EAAMk9b,cAAckG,EAAiBjG,WAAan9b,EAAM5uF,MAAMgyhB,GAAoB15hB,QAAQC,QAAQq2F,EAAMvsD,MAAMpuC,KACtH,EAEDyN,EAAO8xhB,cAAgB,SAAuBz+W,EAAMu6W,EAAMgD,GACxD,OAAO34hB,KAAK45hB,WAAWx+W,EAAMu6W,EAAMgD,GAAM76hB,KAAKgkB,EAAAA,IAAMvE,MAAMuE,EAAAA,GAC3D,EAED/Z,EAAO+xhB,mBAAqB,SAA4B1+W,EAAMu6W,EAAMgD,GAClE,IAAIr0Z,GAAgB8zZ,EAAAA,EAAAA,IAAeh9W,EAAMu6W,EAAMgD,GAE/C,OADAr0Z,EAAcqvZ,UAAWtH,EAAAA,EAAAA,MAClBrshB,KAAK45hB,WAAWt1Z,EACxB,EAEDv8H,EAAOgyhB,sBAAwB,SAA+B3+W,EAAMu6W,EAAMgD,GACxE,OAAO34hB,KAAK85hB,mBAAmB1+W,EAAMu6W,EAAMgD,GAAM76hB,KAAKgkB,EAAAA,IAAMvE,MAAMuE,EAAAA,GACnE,EAED/Z,EAAOiyhB,gBAAkB,WACvB,IAAIC,EAASj6hB,KAETq9J,EAAWyyX,EAAAA,EAAAA,OAAoB,WACjC,OAAOmK,EAAOhE,cAAcP,SAAS3xhB,KAAI,SAAU8yhB,GACjD,OAAOA,EAAS71e,QACjB,GACF,IACD,OAAOriD,QAAQ0nI,IAAIg3B,GAAUv/J,KAAKgkB,EAAAA,IAAMvE,MAAMuE,EAAAA,GAC/C,EAED/Z,EAAOmvhB,sBAAwB,WAC7B,OAAOl3hB,KAAKk6hB,mBAAmBhD,uBAChC,EAEDnvhB,EAAOuuhB,gBAAkB,SAAyBl5hB,GAChD,OAAO4C,KAAKi2hB,cAAcb,MAAMp1hB,KAAM5C,GAASqkJ,SAChD,EAED15I,EAAOmwhB,cAAgB,WACrB,OAAOl4hB,KAAKq3hB,UACb,EAEDtvhB,EAAOmyhB,iBAAmB,WACxB,OAAOl6hB,KAAKi2hB,aACb,EAEDluhB,EAAOk6Q,kBAAoB,WACzB,OAAOjiR,KAAKomH,cACb,EAEDr+G,EAAOgphB,kBAAoB,SAA2B3zhB,GACpD4C,KAAKomH,eAAiBhpH,CACvB,EAED2K,EAAOoyhB,iBAAmB,SAA0BhM,EAAU/whB,GAC5D,IAAIoG,EAASxD,KAAKs3hB,cAAct7hB,MAAK,SAAU+R,GAC7C,OAAOqshB,EAAAA,EAAAA,IAAajM,MAAciM,EAAAA,EAAAA,IAAarshB,EAAEoghB,SAClD,IAEG3qhB,EACFA,EAAO4iH,eAAiBhpH,EAExB4C,KAAKs3hB,cAAcl3hB,KAAK,CACtB+thB,SAAUA,EACV/na,eAAgBhpH,GAGrB,EAED2K,EAAOythB,iBAAmB,SAA0BrH,GAClD,IAAIkM,EAEJ,OAAOlM,EAEA,OAFYkM,EAAwBr6hB,KAAKs3hB,cAAct7hB,MAAK,SAAU+R,GAC3E,OAAOushB,EAAAA,EAAAA,IAAgBnM,EAAUpghB,EAAEoghB,SACpC,UAAa,EAASkM,EAAsBj0a,oBAAiBz+G,CAC/D,EAEDI,EAAOwyhB,oBAAsB,SAA6BxD,EAAa35hB,GACrE,IAAIoG,EAASxD,KAAKu3hB,iBAAiBv7hB,MAAK,SAAU+R,GAChD,OAAOqshB,EAAAA,EAAAA,IAAarD,MAAiBqD,EAAAA,EAAAA,IAAarshB,EAAEgphB,YACrD,IAEGvzhB,EACFA,EAAO4iH,eAAiBhpH,EAExB4C,KAAKu3hB,iBAAiBn3hB,KAAK,CACzB22hB,YAAaA,EACb3wa,eAAgBhpH,GAGrB,EAED2K,EAAOivhB,oBAAsB,SAA6BD,GACxD,IAAIyD,EAEJ,OAAOzD,EAEA,OAFeyD,EAAwBx6hB,KAAKu3hB,iBAAiBv7hB,MAAK,SAAU+R,GACjF,OAAOushB,EAAAA,EAAAA,IAAgBvD,EAAahphB,EAAEgphB,YACvC,UAAa,EAASyD,EAAsBp0a,oBAAiBz+G,CAC/D,EAEDI,EAAOwthB,oBAAsB,SAA6Bn4hB,GACxD,GAAe,MAAXA,OAAkB,EAASA,EAAQq9hB,WACrC,OAAOr9hB,EAGT,IAAIi7hB,GAAmBt/gB,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKomH,eAAe8ua,QAASl1hB,KAAKw1hB,iBAA4B,MAAXp4hB,OAAkB,EAASA,EAAQ+whB,UAAW/whB,EAAS,CAC5Iq9hB,YAAY,IAOd,OAJKpC,EAAiB5H,WAAa4H,EAAiBlK,WAClDkK,EAAiB5H,WAAY6E,EAAAA,EAAAA,IAAsB+C,EAAiBlK,SAAUkK,IAGzEA,CACR,EAEDtwhB,EAAO2yhB,4BAA8B,SAAqCt9hB,GACxE,OAAO4C,KAAKu1hB,oBAAoBn4hB,EACjC,EAED2K,EAAO+uhB,uBAAyB,SAAgC15hB,GAC9D,OAAe,MAAXA,OAAkB,EAASA,EAAQq9hB,YAC9Br9hB,GAGF2b,EAAAA,EAAAA,GAAS,CAAC,EAAG/Y,KAAKomH,eAAewwa,UAAW52hB,KAAKg3hB,oBAA+B,MAAX55hB,OAAkB,EAASA,EAAQ25hB,aAAc35hB,EAAS,CACpIq9hB,YAAY,GAEf,EAED1yhB,EAAOo/B,MAAQ,WACbnnC,KAAKq3hB,WAAWlwf,QAChBnnC,KAAKi2hB,cAAc9uf,OACpB,EAEMiwf,CACR,CApVqC,yJCLtC,SAASuD,EAAkBzE,GACzB,OAAO3shB,KAAKsZ,IAAI,IAAOtZ,KAAKkZ,IAAI,EAAGyzgB,GAAe,IACnD,CAEM,SAAS7H,EAAanwhB,GAC3B,MAA0D,oBAAlC,MAATA,OAAgB,EAASA,EAAM8iD,OAC/C,CACM,IAAI45e,EAAiB,SAAwBx9hB,GAClD4C,KAAKgzhB,OAAoB,MAAX51hB,OAAkB,EAASA,EAAQ41hB,OACjDhzhB,KAAK26J,OAAoB,MAAXv9J,OAAkB,EAASA,EAAQu9J,MAClD,EACM,SAASq5X,EAAiB91hB,GAC/B,OAAOA,aAAiB08hB,CACzB,CAEM,IAAI9G,EAAU,SAAiB/zhB,GACpC,IAGI86hB,EACAC,EACAC,EACAC,EANAj0hB,EAAQ/G,KAERizhB,GAAc,EAKlBjzhB,KAAKyuD,MAAQ1uD,EAAO0uD,MAEpBzuD,KAAKghD,OAAS,SAAUk4e,GACtB,OAAmB,MAAZ2B,OAAmB,EAASA,EAAS3B,EAC7C,EAEDl5hB,KAAKizhB,YAAc,WACjBA,GAAc,CACf,EAEDjzhB,KAAKwzhB,cAAgB,WACnBP,GAAc,CACf,EAEDjzhB,KAAKyyhB,SAAW,WACd,OAAqB,MAAdqI,OAAqB,EAASA,GACtC,EAED96hB,KAAKk2hB,aAAe,EACpBl2hB,KAAK80hB,UAAW,EAChB90hB,KAAKi7hB,YAAa,EAClBj7hB,KAAK+yhB,uBAAwB,EAC7B/yhB,KAAKsd,QAAU,IAAI3e,SAAQ,SAAUu8hB,EAAcC,GACjDJ,EAAiBG,EACjBF,EAAgBG,CACjB,IAED,IAAIv8hB,EAAU,SAAiBV,GACxB6I,EAAMk0hB,aACTl0hB,EAAMk0hB,YAAa,EACC,MAApBl7hB,EAAOg0hB,WAA6Bh0hB,EAAOg0hB,UAAU71hB,GACvC,MAAd48hB,GAA8BA,IAC9BC,EAAe78hB,GAElB,EAEGsB,EAAS,SAAgBtB,GACtB6I,EAAMk0hB,aACTl0hB,EAAMk0hB,YAAa,EACD,MAAlBl7hB,EAAO8/f,SAA2B9/f,EAAO8/f,QAAQ3hgB,GACnC,MAAd48hB,GAA8BA,IAC9BE,EAAc98hB,GAEjB,GAeS,SAASk9hB,IAEjB,IAAIr0hB,EAAMk0hB,WAAV,CAIA,IAAII,EAEJ,IACEA,EAAiBt7hB,EAAOhC,IAGzB,CAFC,MAAOsB,GACPg8hB,EAAiB18hB,QAAQa,OAAOH,EACjC,CAGDw7hB,EAAW,SAAkB3B,GAC3B,IAAKnyhB,EAAMk0hB,aACTz7hB,EAAO,IAAIo7hB,EAAe1B,IACX,MAAfnyhB,EAAM0nD,OAAyB1nD,EAAM0nD,QAEjC4/d,EAAagN,IACf,IACEA,EAAer6e,QACG,CAAlB,MAAOs6e,GAAW,CAGzB,EAGDv0hB,EAAMgshB,sBAAwB1E,EAAagN,GAC3C18hB,QAAQC,QAAQy8hB,GAAgBv9hB,KAAKc,GAAS2e,OAAM,SAAUle,GAC5D,IAAIk8hB,EAAeC,EAGnB,IAAIz0hB,EAAMk0hB,WAAV,CAKA,IAAI7G,EAA0C,OAAjCmH,EAAgBx7hB,EAAOq0hB,OAAiBmH,EAAgB,EACjElH,EAAyD,OAA3CmH,EAAqBz7hB,EAAOs0hB,YAAsBmH,EAAqBb,EACrF3tgB,EAA8B,oBAAfqngB,EAA4BA,EAAWtthB,EAAMmvhB,aAAc72hB,GAASg1hB,EACnFoH,GAAwB,IAAVrH,GAAmC,kBAAVA,GAAsBrthB,EAAMmvhB,aAAe9B,GAA0B,oBAAVA,GAAwBA,EAAMrthB,EAAMmvhB,aAAc72hB,IAEpJ4zhB,GAAgBwI,GAMpB10hB,EAAMmvhB,eAEW,MAAjBn2hB,EAAOk0hB,QAA0Bl0hB,EAAOk0hB,OAAOlthB,EAAMmvhB,aAAc72hB,IAEnEq8hB,EAAAA,EAAAA,IAAM1ugB,GACLlvB,MAAK,WACJ,IAAK0thB,EAAAA,EAAAA,cAA6BuE,EAAAA,EAAAA,WAChC,OArEC,IAAIpxhB,SAAQ,SAAUg9hB,GAC3Bb,EAAaa,EACb50hB,EAAM+thB,UAAW,EACC,MAAlB/0hB,EAAOm0hB,SAA2Bn0hB,EAAOm0hB,SAC1C,IAAEp2hB,MAAK,WACNg9hB,OAAanzhB,EACbZ,EAAM+thB,UAAW,EACI,MAArB/0hB,EAAOo0hB,YAA8Bp0hB,EAAOo0hB,YAC7C,GA+DE,IAAEr2hB,MAAK,WACFm1hB,EACFzzhB,EAAOH,GAEP+7hB,GAEH,KAnBC57hB,EAAOH,EAVR,CA8BF,GA9DA,CA+DF,CAGD+7hB,EACD,qEC5JM,IAAIhP,EAA4B,WACrC,SAASA,IACPpshB,KAAKC,UAAY,EAClB,CAED,IAAI8H,EAASqkhB,EAAapkhB,UA8B1B,OA5BAD,EAAOoZ,UAAY,SAAmB3gB,GACpC,IAAIuG,EAAQ/G,KAERzC,EAAWiD,GAAY,WAE1B,EAID,OAFAR,KAAKC,UAAUG,KAAK7C,GACpByC,KAAK6rhB,cACE,WACL9khB,EAAM9G,UAAY8G,EAAM9G,UAAUu6B,QAAO,SAAUzsB,GACjD,OAAOA,IAAMxQ,CACd,IAEDwJ,EAAMglhB,eACP,CACF,EAEDhkhB,EAAOkkhB,aAAe,WACpB,OAAOjshB,KAAKC,UAAUU,OAAS,CAChC,EAEDoH,EAAO8jhB,YAAc,WACpB,EAED9jhB,EAAOgkhB,cAAgB,WACtB,EAEMK,CACR,CApCsC,+fCG5BT,EAA6B,qBAAX1xhB,OACtB,SAAS6nB,IAEf,CACM,SAASyvgB,EAAiBtkE,EAASzyc,GACxC,MAA0B,oBAAZyyc,EAAyBA,EAAQzyc,GAASyyc,CACzD,CACM,SAASgkE,EAAe/yhB,GAC7B,MAAwB,kBAAVA,GAAsBA,GAAS,GAAKA,IAAU6nd,GAC7D,CACM,SAAS0tE,EAAoBv1hB,GAClC,OAAO2G,MAAMC,QAAQ5G,GAASA,EAAQ,CAACA,EACxC,CAWM,SAASm0hB,EAAeT,EAAWQ,GACxC,OAAO7ohB,KAAKkuB,IAAIm6f,GAAaQ,GAAa,GAAKtvhB,KAAKygE,MAAO,EAC5D,CACM,SAAS60d,EAAeh9W,EAAMu6W,EAAMgD,GACzC,OAAKiD,EAAWxgX,GAII,oBAATu6W,GACF58gB,EAAAA,EAAAA,GAAS,CAAC,EAAG4/gB,EAAM,CACxBxK,SAAU/yW,EACV0yW,QAAS6H,KAIN58gB,EAAAA,EAAAA,GAAS,CAAC,EAAG48gB,EAAM,CACxBxH,SAAU/yW,IAXHA,CAaV,CAuBM,SAASw6W,EAAgBx6W,EAAMu6W,EAAMgD,GAC1C,OAAOiD,EAAWxgX,GAAQ,EAACriK,EAAAA,EAAAA,GAAS,CAAC,EAAG48gB,EAAM,CAC5CxH,SAAU/yW,IACRu9W,GAAQ,CAACv9W,GAAQ,CAAC,EAAGu6W,EAC1B,CAkBM,SAASE,EAAWn4T,EAASzoI,GAClC,IAAInvE,EAAS43M,EAAQ53M,OACjBgoe,EAAQpwR,EAAQowR,MAChB8pC,EAAWl6T,EAAQk6T,SACnBpxX,EAAWk3D,EAAQl3D,SACnB2wS,EAAYz5O,EAAQy5O,UACpBg3E,EAAWzwT,EAAQywT,SACnB0N,EAAQn+T,EAAQm+T,MAEpB,GAAID,EAAWzN,GACb,GAAIrgC,GACF,GAAI74Z,EAAMw7b,YAAc6E,EAAsBnH,EAAUl5b,EAAM73F,SAC5D,OAAO,OAEJ,IAAKk9hB,EAAgBrlc,EAAMk5b,SAAUA,GAC1C,OAAO,EAIX,IAAI2N,EA/BC,SAA8Bh2gB,EAAQ0gJ,GAC3C,OAAe,IAAX1gJ,IAAgC,IAAb0gJ,GAA+B,MAAV1gJ,GAA8B,MAAZ0gJ,EACrD,OACa,IAAX1gJ,IAAiC,IAAb0gJ,EACtB,QAIkB,MAAV1gJ,EAAiBA,GAAU0gJ,GACxB,SAAW,UAEhC,CAoByBu1X,CAAqBj2gB,EAAQ0gJ,GAErD,GAA0B,SAAtBs1X,EACF,OAAO,EACF,GAA0B,QAAtBA,EAA6B,CACtC,IAAI1pY,EAAWn9D,EAAMm9D,WAErB,GAA0B,WAAtB0pY,IAAmC1pY,EACrC,OAAO,EAGT,GAA0B,aAAtB0pY,GAAoC1pY,EACtC,OAAO,CAEV,CAED,OAAqB,mBAAVypY,GAAuB5mc,EAAM+8b,YAAc6J,MAI9B,mBAAbjE,GAA0B3ic,EAAMm8b,eAAiBwG,MAIxDzgF,IAAcA,EAAUliX,IAK7B,CACM,SAASgic,EAAcv5T,EAASm5T,GACrC,IAAI/oC,EAAQpwR,EAAQowR,MAChB8pC,EAAWl6T,EAAQk6T,SACnBzgF,EAAYz5O,EAAQy5O,UACpB4/E,EAAcr5T,EAAQq5T,YAE1B,GAAI6E,EAAW7E,GAAc,CAC3B,IAAKF,EAASz5hB,QAAQ25hB,YACpB,OAAO,EAGT,GAAIjpC,GACF,GAAIssC,EAAavD,EAASz5hB,QAAQ25hB,eAAiBqD,EAAarD,GAC9D,OAAO,OAEJ,IAAKuD,EAAgBzD,EAASz5hB,QAAQ25hB,YAAaA,GACxD,OAAO,CAEV,CAED,OAAwB,mBAAba,GAAoD,YAA1Bf,EAASnuf,MAAM9hC,SAAyBgxhB,MAIzEzgF,IAAcA,EAAU0/E,GAK7B,CACM,SAASvB,EAAsBnH,EAAU/whB,GAE9C,QADyB,MAAXA,OAAkB,EAASA,EAAQ4+hB,iBAAmB5B,GACtDjM,EACf,CAKM,SAASiM,EAAajM,GAC3B,IAO8BjwhB,EAP1B+9hB,EAAUxI,EAAoBtF,GAClC,OAM8BjwhB,EANP+9hB,EAOhBn2hB,KAAKC,UAAU7H,GAAO,SAAUY,EAAG25B,GACxC,OAAO2O,EAAc3O,GAAOz6B,OAAOgB,KAAKy5B,GAAKW,OAAOj1B,QAAO,SAAUX,EAAQlB,GAE3E,OADAkB,EAAOlB,GAAOm2B,EAAIn2B,GACXkB,CACR,GAAE,CAAC,GAAKi1B,CACV,GAXF,CAiBM,SAAS6hgB,EAAgBv6gB,EAAGC,GACjC,OAAOk8gB,EAAiBzI,EAAoB1zgB,GAAI0zgB,EAAoBzzgB,GACrE,CAKM,SAASk8gB,EAAiBn8gB,EAAGC,GAClC,OAAID,IAAMC,UAICD,WAAaC,OAIpBD,IAAKC,GAAkB,kBAAND,GAA+B,kBAANC,KACpChiB,OAAOgB,KAAKghB,GAAGmyC,MAAK,SAAU7vD,GACpC,OAAQ45hB,EAAiBn8gB,EAAEzd,GAAM0d,EAAE1d,GACpC,IAIJ,CAOM,SAASovhB,EAAiB3xgB,EAAGC,GAClC,GAAID,IAAMC,EACR,OAAOD,EAGT,IAAI1V,EAAQxF,MAAMC,QAAQib,IAAMlb,MAAMC,QAAQkb,GAE9C,GAAI3V,GAAS+8B,EAAcrnB,IAAMqnB,EAAcpnB,GAAI,CAOjD,IANA,IAAIm8gB,EAAQ9xhB,EAAQ0V,EAAEpf,OAAS3C,OAAOgB,KAAK+gB,GAAGpf,OAC1Cy7hB,EAAS/xhB,EAAQ2V,EAAIhiB,OAAOgB,KAAKghB,GACjCq8gB,EAAQD,EAAOz7hB,OACfsK,EAAOZ,EAAQ,GAAK,CAAC,EACrBiyhB,EAAa,EAER3zhB,EAAI,EAAGA,EAAI0zhB,EAAO1zhB,IAAK,CAC9B,IAAIrG,EAAM+H,EAAQ1B,EAAIyzhB,EAAOzzhB,GAC7BsC,EAAK3I,GAAOovhB,EAAiB3xgB,EAAEzd,GAAM0d,EAAE1d,IAEnC2I,EAAK3I,KAASyd,EAAEzd,IAClBg6hB,GAEH,CAED,OAAOH,IAAUE,GAASC,IAAeH,EAAQp8gB,EAAI9U,CACtD,CAED,OAAO+U,CACR,CAKM,SAASu8gB,EAAoBx8gB,EAAGC,GACrC,GAAID,IAAMC,GAAKA,IAAMD,EACnB,OAAO,EAGT,IAAK,IAAIzd,KAAOyd,EACd,GAAIA,EAAEzd,KAAS0d,EAAE1d,GACf,OAAO,EAIX,OAAO,CACR,CAEM,SAAS8kC,EAAcs5F,GAC5B,IAAK87Z,EAAmB97Z,GACtB,OAAO,EAIT,IAAI39E,EAAO29E,EAAEr5F,YAEb,GAAoB,qBAAT0b,EACT,OAAO,EAIT,IAAI05e,EAAO15e,EAAK/6C,UAEhB,QAAKw0hB,EAAmBC,MAKnBA,EAAK58gB,eAAe,gBAM1B,CAED,SAAS28gB,EAAmB97Z,GAC1B,MAA6C,oBAAtC1iI,OAAOgK,UAAU1K,SAASmB,KAAKiiI,EACvC,CAEM,SAASk7Z,EAAW19hB,GACzB,MAAwB,kBAAVA,GAAsB2G,MAAMC,QAAQ5G,EACnD,CAIM,SAASw9hB,EAAM30f,GACpB,OAAO,IAAIpoC,SAAQ,SAAUC,GAC3B22B,WAAW32B,EAASmoC,EACrB,GACF,CAMM,SAAS2of,EAAkBnyhB,GAChCoB,QAAQC,UAAUd,KAAKP,GAAUggB,OAAM,SAAUle,GAC/C,OAAOk2B,YAAW,WAChB,MAAMl2B,CACP,GACF,GACF,CACM,SAASouhB,IACd,GAA+B,oBAApBiP,gBACT,OAAO,IAAIA,eAEd,mjBC1UUrR,UAA0Bxye,wBCCrCi3e,EAAAA,EAAAA,uBAAqCzE,gBCF1B93d,EAASl3D,SCEpB6yhB,EAAAA,EAAAA,GAAU37d,iBCDNope,EAA8BxjhB,EAAAA,mBAAoBxR,GAClDi1hB,EAAyCzjhB,EAAAA,eAAoB,GAOjE,SAAS0jhB,EAAsBC,GAC7B,OAAIA,GAAoC,qBAAX7iiB,QACtBA,OAAO8iiB,0BACV9iiB,OAAO8iiB,wBAA0BJ,GAG5B1iiB,OAAO8iiB,yBAGTJ,CACR,CAEM,IASIK,EAAsB,SAA6BhmhB,GAC5D,IAAIs2G,EAASt2G,EAAKs2G,OACd2va,EAAsBjmhB,EAAK8lhB,eAC3BA,OAAyC,IAAxBG,GAAyCA,EAC1DlyhB,EAAWiM,EAAKjM,SACpBoO,EAAAA,WAAgB,WAEd,OADAm0G,EAAOs3D,QACA,WACLt3D,EAAOu0D,SACR,CACF,GAAE,CAACv0D,IACJ,IAAI4va,EAAUL,EAAsBC,GACpC,OAAoB3jhB,EAAAA,cAAoByjhB,EAA0B/rhB,SAAU,CAC1E3S,MAAO4+hB,GACO3jhB,EAAAA,cAAoB+jhB,EAAQrshB,SAAU,CACpD3S,MAAOovH,GACNviH,GACJ,8DCvCUoyhB,EAA6B,SAAU1R,GAGhD,SAAS0R,EAAc7va,EAAQlwH,GAC7B,IAAI2J,EAYJ,OAVAA,EAAQ0khB,EAAchthB,KAAKuB,OAASA,MAC9BstH,OAASA,EACfvmH,EAAM3J,QAAUA,EAChB2J,EAAMq2hB,aAAe,GACrBr2hB,EAAMs2hB,YAAc,KAEpBt2hB,EAAMu2hB,cAENv2hB,EAAMyphB,WAAWpzhB,GAEV2J,CACR,EAhBD6khB,EAAAA,EAAAA,GAAeuR,EAAe1R,GAkB9B,IAAI1jhB,EAASo1hB,EAAcn1hB,UA+e3B,OA7eAD,EAAOu1hB,YAAc,WACnBt9hB,KAAKtC,OAASsC,KAAKtC,OAAOZ,KAAKkD,MAC/BA,KAAKwyhB,QAAUxyhB,KAAKwyhB,QAAQ11hB,KAAKkD,KAClC,EAED+H,EAAO8jhB,YAAc,WACW,IAA1B7rhB,KAAKC,UAAUU,SACjBX,KAAKu9hB,aAAa3K,YAAY5yhB,MAE1Bw9hB,EAAmBx9hB,KAAKu9hB,aAAcv9hB,KAAK5C,UAC7C4C,KAAKy9hB,eAGPz9hB,KAAK09hB,eAER,EAED31hB,EAAOgkhB,cAAgB,WAChB/rhB,KAAKC,UAAUU,QAClBX,KAAK8tL,SAER,EAED/lL,EAAO4qhB,uBAAyB,WAC9B,OAAOgL,EAAc39hB,KAAKu9hB,aAAcv9hB,KAAK5C,QAAS4C,KAAK5C,QAAQwgiB,mBACpE,EAED71hB,EAAOwqhB,yBAA2B,WAChC,OAAOoL,EAAc39hB,KAAKu9hB,aAAcv9hB,KAAK5C,QAAS4C,KAAK5C,QAAQygiB,qBACpE,EAED91hB,EAAO+lL,QAAU,WACf9tL,KAAKC,UAAY,GACjBD,KAAK89hB,cACL99hB,KAAKu9hB,aAAazK,eAAe9yhB,KAClC,EAED+H,EAAOyohB,WAAa,SAAoBpzhB,EAAS2giB,GAC/C,IAAI9sf,EAAcjxC,KAAK5C,QACnB4giB,EAAYh+hB,KAAKu9hB,aAGrB,GAFAv9hB,KAAK5C,QAAU4C,KAAKstH,OAAOota,4BAA4Bt9hB,GAEnB,qBAAzB4C,KAAK5C,QAAQupN,SAA2D,mBAAzB3mN,KAAK5C,QAAQupN,QACrE,MAAM,IAAIpsN,MAAM,oCAIbyF,KAAK5C,QAAQ+whB,WAChBnuhB,KAAK5C,QAAQ+whB,SAAWl9e,EAAYk9e,UAGtCnuhB,KAAKi+hB,cACL,IAAInjf,EAAU96C,KAAKishB,eAEfnxe,GAAWojf,EAAsBl+hB,KAAKu9hB,aAAcS,EAAWh+hB,KAAK5C,QAAS6zC,IAC/EjxC,KAAKy9hB,eAIPz9hB,KAAKm+hB,aAAaJ,IAEdjjf,GAAY96C,KAAKu9hB,eAAiBS,GAAah+hB,KAAK5C,QAAQupN,UAAY11K,EAAY01K,SAAW3mN,KAAK5C,QAAQg1hB,YAAcnhf,EAAYmhf,WACxIpyhB,KAAKo+hB,qBAGP,IAAIC,EAAsBr+hB,KAAKs+hB,0BAE3Bxjf,GAAY96C,KAAKu9hB,eAAiBS,GAAah+hB,KAAK5C,QAAQupN,UAAY11K,EAAY01K,SAAW03U,IAAwBr+hB,KAAKu+hB,wBAC9Hv+hB,KAAKw+hB,sBAAsBH,EAE9B,EAEDt2hB,EAAO02hB,oBAAsB,SAA6BrhiB,GACxD,IAAIi7hB,EAAmBr4hB,KAAKstH,OAAOota,4BAA4Bt9hB,GAC3D63F,EAAQj1F,KAAKstH,OAAO4qa,gBAAgB9C,MAAMp1hB,KAAKstH,OAAQ+qa,GAC3D,OAAOr4hB,KAAK0+hB,aAAazpc,EAAOojc,EACjC,EAEDtwhB,EAAOmqhB,iBAAmB,WACxB,OAAOlyhB,KAAK49U,aACb,EAED71U,EAAO42hB,YAAc,SAAqBn7hB,EAAQ60hB,GAChD,IAAI51U,EAASziN,KAET4+hB,EAAgB,CAAC,EAEjBC,EAAY,SAAmBv8hB,GAC5BmgN,EAAO26U,aAAa73hB,SAASjD,IAChCmgN,EAAO26U,aAAah9hB,KAAKkC,EAE5B,EAiBD,OAfAtE,OAAOgB,KAAKwE,GAAQ9C,SAAQ,SAAU4B,GACpCtE,OAAOC,eAAe2giB,EAAet8hB,EAAK,CACxClE,cAAc,EACdqlB,YAAY,EACZ7pB,IAAK,WAEH,OADAiliB,EAAUv8hB,GACHkB,EAAOlB,EACf,GAEJ,KAEG+1hB,EAAiByG,kBAAoBzG,EAAiB0G,WACxDF,EAAU,SAGLD,CACR,EAED72hB,EAAOi3hB,cAAgB,SAAuB5hiB,GAC5C,IAAIimN,EAASrjN,KAEb,OAAO,IAAIrB,SAAQ,SAAUC,EAASY,GACpC,IAAI63J,EAAcgsD,EAAOliM,WAAU,SAAU3d,GACtCA,EAAO4thB,aACV/5X,IAEI7zJ,EAAOi1d,UAAuB,MAAXr7d,OAAkB,EAASA,EAAQu8hB,cACxDn6hB,EAAOgE,EAAOnE,OAEdT,EAAQ4E,GAGb,GACF,GACF,EAEDuE,EAAOk3hB,gBAAkB,WACvB,OAAOj/hB,KAAKu9hB,YACb,EAEDx1hB,EAAOrK,OAAS,WACdsC,KAAKstH,OAAO4qa,gBAAgBx6hB,OAAOsC,KAAKu9hB,aACzC,EAEDx1hB,EAAOyqhB,QAAU,SAAiBp1hB,GAChC,OAAO4C,KAAKqG,OAAM0S,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS,CACtC+ggB,KAAM,CACJ2uB,YAAwB,MAAX1vhB,OAAkB,EAASA,EAAQ0vhB,eAGrD,EAED/khB,EAAOm3hB,gBAAkB,SAAyB9hiB,GAChD,IAAIgoN,EAASplN,KAETq4hB,EAAmBr4hB,KAAKstH,OAAOota,4BAA4Bt9hB,GAC3D63F,EAAQj1F,KAAKstH,OAAO4qa,gBAAgB9C,MAAMp1hB,KAAKstH,OAAQ+qa,GAC3D,OAAOpjc,EAAM5uF,QAAQvI,MAAK,WACxB,OAAOsnN,EAAOs5U,aAAazpc,EAAOojc,EACnC,GACF,EAEDtwhB,EAAO1B,MAAQ,SAAe0mhB,GAC5B,IAAIvmU,EAASxmN,KAEb,OAAOA,KAAKy9hB,aAAa1Q,GAAcjvhB,MAAK,WAG1C,OAFA0oN,EAAO23U,eAEA33U,EAAOo3H,aACf,GACF,EAED71U,EAAO01hB,aAAe,SAAsB1Q,GAE1C/shB,KAAKi+hB,cAEL,IAAI3ghB,EAAUtd,KAAKu9hB,aAAal3hB,MAAMrG,KAAK5C,QAAS2vhB,GAMpD,OAJsB,MAAhBA,OAAuB,EAASA,EAAa4M,gBACjDr8gB,EAAUA,EAAQC,MAAMuE,EAAAA,KAGnBxE,CACR,EAEDvV,EAAOq2hB,mBAAqB,WAC1B,IAAI3E,EAASz5hB,KAIb,GAFAA,KAAKm/hB,qBAEDxT,EAAAA,KAAY3rhB,KAAK49U,cAAco0M,UAAYf,EAAAA,EAAAA,IAAejxhB,KAAK5C,QAAQg1hB,WAA3E,CAIA,IAGIrrf,GAHOsrf,EAAAA,EAAAA,IAAeryhB,KAAK49U,cAAc+zM,cAAe3xhB,KAAK5C,QAAQg1hB,WAGpD,EACrBpyhB,KAAKo/hB,eAAiB7pgB,YAAW,WAC1BkkgB,EAAO77M,cAAco0M,SACxByH,EAAO0E,cAEV,GAAEp3f,EAVF,CAWF,EAEDh/B,EAAOu2hB,uBAAyB,WAC9B,IAAIe,EAEJ,MAA+C,oBAAjCr/hB,KAAK5C,QAAQkiiB,gBAAiCt/hB,KAAK5C,QAAQkiiB,gBAAgBt/hB,KAAK49U,cAActjV,KAAM0F,KAAKu9hB,cAA0E,OAAzD8B,EAAwBr/hB,KAAK5C,QAAQkiiB,kBAA2BD,CACzM,EAEDt3hB,EAAOy2hB,sBAAwB,SAA+Be,GAC5D,IAAItF,EAASj6hB,KAEbA,KAAKw/hB,uBACLx/hB,KAAKu+hB,uBAAyBgB,GAE1B5T,EAAAA,KAAqC,IAAzB3rhB,KAAK5C,QAAQupN,UAAsBsqU,EAAAA,EAAAA,IAAejxhB,KAAKu+hB,yBAA2D,IAAhCv+hB,KAAKu+hB,yBAIvGv+hB,KAAKy/hB,kBAAoB7jW,aAAY,YAC/Bq+V,EAAO78hB,QAAQsiiB,6BAA+BlU,EAAAA,EAAAA,cAChDyO,EAAOwD,cAEV,GAAEz9hB,KAAKu+hB,wBACT,EAEDx2hB,EAAO21hB,aAAe,WACpB19hB,KAAKo+hB,qBACLp+hB,KAAKw+hB,sBAAsBx+hB,KAAKs+hB,yBACjC,EAEDv2hB,EAAO+1hB,YAAc,WACnB99hB,KAAKm/hB,oBACLn/hB,KAAKw/hB,sBACN,EAEDz3hB,EAAOo3hB,kBAAoB,WACrBn/hB,KAAKo/hB,iBACP9pgB,aAAat1B,KAAKo/hB,gBAClBp/hB,KAAKo/hB,oBAAiBz3hB,EAEzB,EAEDI,EAAOy3hB,qBAAuB,WACxBx/hB,KAAKy/hB,oBACP/jW,cAAc17L,KAAKy/hB,mBACnBz/hB,KAAKy/hB,uBAAoB93hB,EAE5B,EAEDI,EAAO22hB,aAAe,SAAsBzpc,EAAO73F,GACjD,IAgBI9C,EAhBA0jiB,EAAYh+hB,KAAKu9hB,aACjBtsf,EAAcjxC,KAAK5C,QACnBuiiB,EAAa3/hB,KAAK49U,cAClBgiN,EAAkB5/hB,KAAK6/hB,mBACvBC,EAAoB9/hB,KAAK+/hB,qBACzBC,EAAc/qc,IAAU+oc,EACxBiC,EAAoBD,EAAc/qc,EAAMvsD,MAAQ1oC,KAAKkgiB,yBACrDC,EAAkBH,EAAchgiB,KAAK49U,cAAgB59U,KAAKogiB,oBAC1D13f,EAAQusD,EAAMvsD,MACdipf,EAAgBjpf,EAAMipf,cACtBtyhB,EAAQqpC,EAAMrpC,MACdu1hB,EAAiBlsf,EAAMksf,eACvBxD,EAAa1of,EAAM0of,WACnBxqhB,EAAS8hC,EAAM9hC,OACfy5hB,GAAiB,EACjBC,GAAoB,EAGxB,GAAIljiB,EAAQmjiB,kBAAmB,CAC7B,IAAIzlf,EAAU96C,KAAKishB,eACfuU,GAAgB1lf,GAAW0if,EAAmBvoc,EAAO73F,GACrDqjiB,EAAkB3lf,GAAWojf,EAAsBjpc,EAAO+oc,EAAW5giB,EAAS6zC,IAE9Euvf,GAAgBC,KAClBrP,GAAa,EAERO,IACH/qhB,EAAS,WAGd,CAGD,GAAIxJ,EAAQsjiB,mBAAqBh4f,EAAMgsf,kBAAuC,MAAnByL,OAA0B,EAASA,EAAgBQ,YAAyB,UAAX/5hB,EAC1HtM,EAAO6liB,EAAgB7liB,KACvBq3hB,EAAgBwO,EAAgBxO,cAChC/qhB,EAASu5hB,EAAgBv5hB,OACzBy5hB,GAAiB,OAEd,GAAIjjiB,EAAQyyE,QAAgC,qBAAfnnC,EAAMpuC,KAEpC,GAAIqliB,GAAcj3f,EAAMpuC,QAA6B,MAAnBsliB,OAA0B,EAASA,EAAgBtliB,OAAS8C,EAAQyyE,SAAW7vE,KAAK4giB,SACpHtmiB,EAAO0F,KAAK6giB,kBAEZ,IACE7giB,KAAK4giB,SAAWxjiB,EAAQyyE,OACxBv1E,EAAO8C,EAAQyyE,OAAOnnC,EAAMpuC,OAEM,IAA9B8C,EAAQq0hB,oBACVn3hB,GAAOo3hB,EAAAA,EAAAA,IAA+B,MAAdiO,OAAqB,EAASA,EAAWrliB,KAAMA,IAGzE0F,KAAK6giB,aAAevmiB,EACpB0F,KAAKq9hB,YAAc,IAIpB,CAHC,MAAOA,IACPpO,EAAAA,EAAAA,KAAY5vhB,MAAMg+hB,GAClBr9hB,KAAKq9hB,YAAcA,CACpB,MAID/iiB,EAAOouC,EAAMpuC,KAInB,GAAuC,qBAA5B8C,EAAQ0jiB,iBAAmD,qBAATxmiB,IAAoC,YAAXsM,GAAmC,SAAXA,GAAoB,CAChI,IAAIk6hB,EAEJ,IAAmB,MAAdnB,OAAqB,EAASA,EAAWW,oBAAsBljiB,EAAQ0jiB,mBAA0C,MAArBhB,OAA4B,EAASA,EAAkBgB,iBACtJA,EAAkBnB,EAAWrliB,UAI7B,GAFAwmiB,EAAqD,oBAA5B1jiB,EAAQ0jiB,gBAAiC1jiB,EAAQ0jiB,kBAAoB1jiB,EAAQ0jiB,gBAElG1jiB,EAAQyyE,QAAqC,qBAApBixd,EAC3B,IACEA,EAAkB1jiB,EAAQyyE,OAAOixd,IAEC,IAA9B1jiB,EAAQq0hB,oBACVqP,GAAkBpP,EAAAA,EAAAA,IAA+B,MAAdiO,OAAqB,EAASA,EAAWrliB,KAAMwmiB,IAGpF9giB,KAAKq9hB,YAAc,IAIpB,CAHC,MAAOA,IACPpO,EAAAA,EAAAA,KAAY5vhB,MAAMg+hB,GAClBr9hB,KAAKq9hB,YAAcA,CACpB,CAI0B,qBAApByD,IACTl6hB,EAAS,UACTtM,EAAOwmiB,EACPR,GAAoB,EAEvB,CAiCD,OA/BItgiB,KAAKq9hB,cACPh+hB,EAAQW,KAAKq9hB,YACb/iiB,EAAO0F,KAAK6giB,aACZjM,EAAiB9xhB,KAAKygE,MACtB38D,EAAS,SAGE,CACXA,OAAQA,EACR+9F,UAAsB,YAAX/9F,EACX+5hB,UAAsB,YAAX/5hB,EACX6xd,QAAoB,UAAX7xd,EACTm6hB,OAAmB,SAAXn6hB,EACRtM,KAAMA,EACNq3hB,cAAeA,EACftyhB,MAAOA,EACPu1hB,eAAgBA,EAChBsB,aAAcxtf,EAAMmsf,kBACpBF,iBAAkBjsf,EAAMisf,iBACxBqM,UAAWt4f,EAAMgsf,gBAAkB,GAAKhsf,EAAMisf,iBAAmB,EACjEsM,oBAAqBv4f,EAAMgsf,gBAAkBuL,EAAkBvL,iBAAmBhsf,EAAMisf,iBAAmBsL,EAAkBtL,iBAC7HvD,WAAYA,EACZ8P,aAAc9P,GAAyB,YAAXxqhB,EAC5Bu6hB,eAA2B,UAAXv6hB,GAA8C,IAAxB8hC,EAAMipf,cAC5C2O,kBAAmBA,EACnBD,eAAgBA,EAChBe,eAA2B,UAAXx6hB,GAA8C,IAAxB8hC,EAAMipf,cAC5CK,QAASA,EAAQ/8b,EAAO73F,GACxBo1hB,QAASxyhB,KAAKwyhB,QACd90hB,OAAQsC,KAAKtC,OAGhB,EAEDqK,EAAOs5hB,sBAAwB,SAA+B79hB,EAAQm8hB,GACpE,IAAKA,EACH,OAAO,EAGT,IAAI/6T,EAAgB5kO,KAAK5C,QACrBkkiB,EAAsB18T,EAAc08T,oBACpCC,EAAgC38T,EAAc28T,8BAElD,IAAKD,IAAwBC,EAC3B,OAAO,EAGT,GAA4B,YAAxBD,IAAsCthiB,KAAKo9hB,aAAaz8hB,OAC1D,OAAO,EAGT,IAAI6giB,EAAwC,YAAxBF,EAAoCthiB,KAAKo9hB,aAAekE,EAC5E,OAAOtjiB,OAAOgB,KAAKwE,GAAQ2uD,MAAK,SAAU7vD,GACxC,IAAIm/hB,EAAWn/hB,EACX4zE,EAAU1yE,EAAOi+hB,KAAc9B,EAAW8B,GAC1CC,EAA8B,MAAjBF,OAAwB,EAASA,EAAcrve,MAAK,SAAUpkD,GAC7E,OAAOA,IAAMzL,CACd,IACGq/hB,EAA8C,MAAjCJ,OAAwC,EAASA,EAA8Bpve,MAAK,SAAUpkD,GAC7G,OAAOA,IAAMzL,CACd,IACD,OAAO4zE,IAAYyrd,KAAgBH,GAAiBE,EACrD,GACF,EAED35hB,EAAOo2hB,aAAe,SAAsBJ,GAC1C,IAAI4B,EAAa3/hB,KAAK49U,cAKtB,GAJA59U,KAAK49U,cAAgB59U,KAAK0+hB,aAAa1+hB,KAAKu9hB,aAAcv9hB,KAAK5C,SAC/D4C,KAAK6/hB,mBAAqB7/hB,KAAKu9hB,aAAa70f,MAC5C1oC,KAAK+/hB,qBAAuB//hB,KAAK5C,UAE7Bm/hB,EAAAA,EAAAA,IAAoBv8hB,KAAK49U,cAAe+hN,GAA5C,CAKA,IAAIiC,EAAuB,CACzBtxhB,OAAO,IAG0D,KAA7C,MAAjBythB,OAAwB,EAASA,EAAc99hB,YAAwBD,KAAKqhiB,sBAAsBrhiB,KAAK49U,cAAe+hN,KACzHiC,EAAqB3hiB,WAAY,GAGnCD,KAAK6yhB,QAAO95gB,EAAAA,EAAAA,GAAS,CAAC,EAAG6ohB,EAAsB7D,GAX9C,CAYF,EAEDh2hB,EAAOk2hB,YAAc,WACnB,IAAIhpc,EAAQj1F,KAAKstH,OAAO4qa,gBAAgB9C,MAAMp1hB,KAAKstH,OAAQttH,KAAK5C,SAEhE,GAAI63F,IAAUj1F,KAAKu9hB,aAAnB,CAIA,IAAIS,EAAYh+hB,KAAKu9hB,aACrBv9hB,KAAKu9hB,aAAetoc,EACpBj1F,KAAKkgiB,yBAA2Bjrc,EAAMvsD,MACtC1oC,KAAKogiB,oBAAsBpgiB,KAAK49U,cAE5B59U,KAAKishB,iBACM,MAAb+R,GAA6BA,EAAUlL,eAAe9yhB,MACtDi1F,EAAM29b,YAAY5yhB,MATnB,CAWF,EAED+H,EAAOwshB,cAAgB,SAAuB1ugB,GAC5C,IAAIk4gB,EAAgB,CAAC,EAED,YAAhBl4gB,EAAOxgB,KACT04hB,EAAchK,WAAY,EACD,UAAhBlugB,EAAOxgB,OAAqB2uhB,EAAAA,EAAAA,IAAiBnugB,EAAOxmB,SAC7D0+hB,EAAcl+B,SAAU,GAG1B7/f,KAAKm+hB,aAAaJ,GAEd/9hB,KAAKishB,gBACPjshB,KAAK09hB,cAER,EAED31hB,EAAO8qhB,OAAS,SAAgBkL,GAC9B,IAAI8D,EAAS7hiB,KAEb8vhB,EAAAA,EAAAA,OAAoB,WAEdiO,EAAchK,WACY,MAA5B8N,EAAOzkiB,QAAQ22hB,WAA6B8N,EAAOzkiB,QAAQ22hB,UAAU8N,EAAOjkN,cAActjV,MAC9D,MAA5BuniB,EAAOzkiB,QAAQm5hB,WAA6BsL,EAAOzkiB,QAAQm5hB,UAAUsL,EAAOjkN,cAActjV,KAAM,OACvFyjiB,EAAcl+B,UACG,MAA1BgiC,EAAOzkiB,QAAQyigB,SAA2BgiC,EAAOzkiB,QAAQyigB,QAAQgiC,EAAOjkN,cAAcv+U,OAC1D,MAA5BwiiB,EAAOzkiB,QAAQm5hB,WAA6BsL,EAAOzkiB,QAAQm5hB,eAAU5uhB,EAAWk6hB,EAAOjkN,cAAcv+U,QAInG0+hB,EAAc99hB,WAChB4hiB,EAAO5hiB,UAAUS,SAAQ,SAAUF,GACjCA,EAASqhiB,EAAOjkN,cACjB,IAICmgN,EAAczthB,OAChBuxhB,EAAOv0a,OAAO4qa,gBAAgBrF,OAAO,CACnC59b,MAAO4sc,EAAOtE,aACdl4hB,KAAM,0BAGX,GACF,EAEM83hB,CACR,CAngBuC,CAmgBtC/Q,EAAAA,GAMF,SAASoR,EAAmBvoc,EAAO73F,GACjC,OALF,SAA2B63F,EAAO73F,GAChC,OAA2B,IAApBA,EAAQupN,UAAsB1xH,EAAMvsD,MAAMipf,iBAA0C,UAAvB18b,EAAMvsD,MAAM9hC,SAA+C,IAAzBxJ,EAAQ0kiB,aAC/G,CAGQC,CAAkB9sc,EAAO73F,IAAY63F,EAAMvsD,MAAMipf,cAAgB,GAAKgM,EAAc1oc,EAAO73F,EAASA,EAAQ4kiB,eACpH,CAED,SAASrE,EAAc1oc,EAAO73F,EAASihE,GACrC,IAAwB,IAApBjhE,EAAQupN,QAAmB,CAC7B,IAAIzoN,EAAyB,oBAAVmgE,EAAuBA,EAAM42B,GAAS52B,EACzD,MAAiB,WAAVngE,IAAgC,IAAVA,GAAmB8zhB,EAAQ/8b,EAAO73F,EAChE,CAED,OAAO,CACR,CAED,SAAS8giB,EAAsBjpc,EAAO+oc,EAAW5giB,EAAS6zC,GACxD,OAA2B,IAApB7zC,EAAQupN,UAAsB1xH,IAAU+oc,IAAqC,IAAxB/sf,EAAY01K,YAAwBvpN,EAAQ2hiB,UAAmC,UAAvB9pc,EAAMvsD,MAAM9hC,SAAuBorhB,EAAQ/8b,EAAO73F,EACvK,CAED,SAAS40hB,EAAQ/8b,EAAO73F,GACtB,OAAO63F,EAAMk9b,cAAc/0hB,EAAQg1hB,UACpC,cChiBU6P,EAAqC,SAAUC,GAOxD,SAASD,EAAsB30a,EAAQlwH,GACrC,OAAO8kiB,EAAezjiB,KAAKuB,KAAMstH,EAAQlwH,IAAY4C,IACtD,EARD4rhB,EAAAA,EAAAA,GAAeqW,EAAuBC,GAUtC,IAAIn6hB,EAASk6hB,EAAsBj6hB,UAqEnC,OAnEAD,EAAOu1hB,YAAc,WACnB4E,EAAel6hB,UAAUs1hB,YAAY7+hB,KAAKuB,MAE1CA,KAAKmiiB,cAAgBniiB,KAAKmiiB,cAAcrliB,KAAKkD,MAC7CA,KAAKoiiB,kBAAoBpiiB,KAAKoiiB,kBAAkBtliB,KAAKkD,KACtD,EAED+H,EAAOyohB,WAAa,SAAoBpzhB,EAAS2giB,GAC/CmE,EAAel6hB,UAAUwohB,WAAW/xhB,KAAKuB,MAAM+Y,EAAAA,EAAAA,GAAS,CAAC,EAAG3b,EAAS,CACnEu2hB,UAAUtH,EAAAA,EAAAA,QACR0R,EACL,EAEDh2hB,EAAO02hB,oBAAsB,SAA6BrhiB,GAExD,OADAA,EAAQu2hB,UAAWtH,EAAAA,EAAAA,MACZ6V,EAAel6hB,UAAUy2hB,oBAAoBhgiB,KAAKuB,KAAM5C,EAChE,EAED2K,EAAOo6hB,cAAgB,SAAuB/kiB,GAC5C,IAAIiliB,EAEJ,OAAOriiB,KAAKqG,MAAM,CAEhBithB,cAA6F,OAA7E+O,EAAmC,MAAXjliB,OAAkB,EAASA,EAAQk2hB,gBAAyB+O,EACpG1I,aAAyB,MAAXv8hB,OAAkB,EAASA,EAAQu8hB,aACjDx7B,KAAM,CACJ6uB,UAAW,CACTpmgB,UAAW,UACXqmgB,UAAsB,MAAX7vhB,OAAkB,EAASA,EAAQ6vhB,aAIrD,EAEDllhB,EAAOq6hB,kBAAoB,SAA2BhliB,GACpD,IAAIkliB,EAEJ,OAAOtiiB,KAAKqG,MAAM,CAEhBithB,cAA8F,OAA9EgP,EAAoC,MAAXlliB,OAAkB,EAASA,EAAQk2hB,gBAAyBgP,EACrG3I,aAAyB,MAAXv8hB,OAAkB,EAASA,EAAQu8hB,aACjDx7B,KAAM,CACJ6uB,UAAW,CACTpmgB,UAAW,WACXqmgB,UAAsB,MAAX7vhB,OAAkB,EAASA,EAAQ6vhB,aAIrD,EAEDllhB,EAAO22hB,aAAe,SAAsBzpc,EAAO73F,GACjD,IAAImliB,EAAaC,EAAcC,EAAkBC,EAAuBC,EAAmBC,EAEvFl6f,EAAQusD,EAAMvsD,MAEdllC,EAAS0+hB,EAAel6hB,UAAU02hB,aAAajgiB,KAAKuB,KAAMi1F,EAAO73F,GAErE,OAAO2b,EAAAA,EAAAA,GAAS,CAAC,EAAGvV,EAAQ,CAC1B2+hB,cAAeniiB,KAAKmiiB,cACpBC,kBAAmBpiiB,KAAKoiiB,kBACxBvT,aAAaA,EAAAA,EAAAA,IAAYzxhB,EAAuC,OAA7BmliB,EAAc75f,EAAMpuC,WAAgB,EAASioiB,EAAYlV,OAC5F0B,iBAAiBA,EAAAA,EAAAA,IAAgB3xhB,EAAwC,OAA9BoliB,EAAe95f,EAAMpuC,WAAgB,EAASkoiB,EAAanV,OACtGH,mBAAoBxkf,EAAM0of,YAAoL,aAA7H,OAAvCqR,EAAmB/5f,EAAMmrf,YAAsF,OAAvD6O,EAAwBD,EAAiBzV,gBAAnD,EAAiF0V,EAAsB97gB,WAC/LumgB,uBAAwBzkf,EAAM0of,YAAsL,cAA9H,OAAxCuR,EAAoBj6f,EAAMmrf,YAAuF,OAAxD+O,EAAwBD,EAAkB3V,gBAApD,EAAkF4V,EAAsBh8gB,YAExM,EAEMq7gB,CACR,CAjF+C,CAiF9C9E,GCnFF,SAAS0F,IACP,IAAIC,GAAW,EACf,MAAO,CACLC,WAAY,WACVD,GAAW,CACZ,EACDt8f,MAAO,WACLs8f,GAAW,CACZ,EACDE,QAAS,WACP,OAAOF,CACR,EAEJ,CAED,IAAIG,EAA8C9phB,EAAAA,cAAoB0phB,KCZ/D,SAASK,EAAa9liB,EAASixJ,GACpC,IAAI80Y,EAAahqhB,EAAAA,QAAa,GAG1Bg1B,EADkBh1B,EAAAA,SAAe,GACH,GAE9BiqhB,EJUsB,WAC1B,IAAIA,EAAcjqhB,EAAAA,WAAiB0jhB,EAAsB1jhB,EAAAA,WAAiByjhB,KAE1E,IAAKwG,EACH,MAAM,IAAI7oiB,MAAM,0DAGlB,OAAO6oiB,CACR,CIlBmBC,GACdC,EDQGnqhB,EAAAA,WAAiB8phB,GCPpB5K,EAAmB+K,EAAY1I,4BAA4Bt9hB,GAE/Di7hB,EAAiBkI,mBAAoB,EAEjClI,EAAiBx4B,UACnBw4B,EAAiBx4B,QAAUiwB,EAAAA,EAAAA,WAAyBuI,EAAiBx4B,UAGnEw4B,EAAiBtE,YACnBsE,EAAiBtE,UAAYjE,EAAAA,EAAAA,WAAyBuI,EAAiBtE,YAGrEsE,EAAiB9B,YACnB8B,EAAiB9B,UAAYzG,EAAAA,EAAAA,WAAyBuI,EAAiB9B,YAGrE8B,EAAiB0G,WAGuB,kBAA/B1G,EAAiBjG,YAC1BiG,EAAiBjG,UAAY,KAKI,IAA/BiG,EAAiBvH,YACnBuH,EAAiBvH,UAAY,KAI7BuH,EAAiB0G,UAAY1G,EAAiByG,oBAE3CwE,EAAmBN,YACtB3K,EAAiByJ,cAAe,IAIpC,IClD+B/C,EAAUwE,EAAmBj/hB,EDqDxDod,EAHmBvI,EAAAA,UAAe,WACpC,OAAO,IAAIk1I,EAAS+0Y,EAAa/K,EAClC,IAC+B,GAE5B70hB,EAASke,EAAS+8gB,oBAAoBpG,GA2B1C,GA1BAl/gB,EAAAA,WAAgB,WACdgqhB,EAAW1phB,SAAU,EACrB6phB,EAAmBP,aACnB,IAAI1rY,EAAc31I,EAASP,UAAU2ugB,EAAAA,EAAAA,YAAyB,WACxDqT,EAAW1phB,SACb00B,GAAY,SAAUpgC,GACpB,OAAOA,EAAI,CACZ,GAEJ,KAID,OADA2T,EAASy8gB,eACF,WACLgF,EAAW1phB,SAAU,EACrB49I,GACD,CACF,GAAE,CAACisY,EAAoB5hhB,IACxBvI,EAAAA,WAAgB,WAGduI,EAAS8ugB,WAAW6H,EAAkB,CACpCp4hB,WAAW,GAEd,GAAE,CAACo4hB,EAAkB32gB,IAElB22gB,EAAiB0G,UAAYv7hB,EAAOmhG,UACtC,MAAMjjF,EAASw9gB,gBAAgB7G,GAAkBv6hB,MAAK,SAAUkZ,GAC9D,IAAI1c,EAAO0c,EAAK1c,KACc,MAA9B+9hB,EAAiBtE,WAA6BsE,EAAiBtE,UAAUz5hB,GAC3C,MAA9B+9hB,EAAiB9B,WAA6B8B,EAAiB9B,UAAUj8hB,EAAM,KAChF,IAAEijB,OAAM,SAAUle,GACjBikiB,EAAmBP,aACS,MAA5B1K,EAAiBx4B,SAA2Bw4B,EAAiBx4B,QAAQxggB,GACvC,MAA9Bg5hB,EAAiB9B,WAA6B8B,EAAiB9B,eAAU5uhB,EAAWtI,EACrF,IAIH,GAAImE,EAAOi1d,UAAY6qE,EAAmBN,YAAcx/hB,EAAO4thB,aC/FhC2N,ED+F+D1G,EAAiB0G,SC/FtEwE,ED+FgFlL,EAAiByG,iBC/F9Ex6hB,ED+FgG,CAACd,EAAOnE,MAAOqiB,EAASu9gB,mBC7FnJ,oBAAtBsE,EACFA,EAAkBxrhB,WAAM,EAAQzT,GAIR,mBAAtBi/hB,EAAwCA,EAE1CxE,GDuFP,MAAMv7hB,EAAOnE,MAQf,MAJ6C,YAAzCg5hB,EAAiBiJ,sBACnB99hB,EAASke,EAASi9gB,YAAYn7hB,EAAQ60hB,IAGjC70hB,CACR,CErGM,SAASggiB,EAAiBpoX,EAAMu6W,EAAMgD,GAE3C,OAAOuK,GADO9K,EAAAA,EAAAA,IAAeh9W,EAAMu6W,EAAMgD,GACZsJ,EAC9B,wBCPD19gB,EAAOrB,QAAQ,SAASja,GAAG,IAAIkb,EAAE,CAAC,EAAE,SAASF,EAAEI,GAAG,GAAGF,EAAEE,GAAG,OAAOF,EAAEE,GAAGnB,QAAQ,IAAIw9G,EAAEv8G,EAAEE,GAAG,CAAC1b,EAAE0b,EAAEL,GAAE,EAAGd,QAAQ,CAAC,GAAG,OAAOja,EAAEob,GAAG5lB,KAAKiiI,EAAEx9G,QAAQw9G,EAAEA,EAAEx9G,QAAQe,GAAGy8G,EAAE18G,GAAE,EAAG08G,EAAEx9G,OAAQ,QAAOe,EAAE/mB,EAAE+L,EAAEgb,EAAErK,EAAEuK,EAAEF,EAAET,EAAE,SAASva,EAAEkb,EAAEE,GAAGJ,EAAEy8G,EAAEz3H,EAAEkb,IAAInmB,OAAOC,eAAegL,EAAEkb,EAAE,CAACV,YAAW,EAAG7pB,IAAIyqB,GAAI,EAACJ,EAAEI,EAAE,SAASpb,GAAG,oBAAoB2a,QAAQA,OAAOm4b,aAAa/9c,OAAOC,eAAegL,EAAE2a,OAAOm4b,YAAY,CAAC79c,MAAM,WAAWF,OAAOC,eAAegL,EAAE,aAAa,CAAC/K,OAAM,GAAK,EAAC+lB,EAAEE,EAAE,SAASlb,EAAEkb,GAAG,GAAG,EAAEA,IAAIlb,EAAEgb,EAAEhb,IAAI,EAAEkb,EAAE,OAAOlb,EAAE,GAAG,EAAEkb,GAAG,iBAAiBlb,GAAGA,GAAGA,EAAEw6hB,WAAW,OAAOx6hB,EAAE,IAAIob,EAAErmB,OAAOwS,OAAO,MAAM,GAAGyT,EAAEI,EAAEA,GAAGrmB,OAAOC,eAAeomB,EAAE,UAAU,CAACZ,YAAW,EAAGvlB,MAAM+K,IAAI,EAAEkb,GAAG,iBAAiBlb,EAAE,IAAI,IAAIy3H,KAAKz3H,EAAEgb,EAAET,EAAEa,EAAEq8G,EAAE,SAASv8G,GAAG,OAAOlb,EAAEkb,EAAG,EAACrnB,KAAK,KAAK4jI,IAAI,OAAOr8G,CAAE,EAACJ,EAAEA,EAAE,SAAShb,GAAG,IAAIkb,EAAElb,GAAGA,EAAEw6hB,WAAW,WAAW,OAAOx6hB,EAAEqa,OAAQ,EAAC,WAAW,OAAOra,CAAE,EAAC,OAAOgb,EAAET,EAAEW,EAAE,IAAIA,GAAGA,CAAE,EAACF,EAAEy8G,EAAE,SAASz3H,EAAEkb,GAAG,OAAOnmB,OAAOgK,UAAU6X,eAAephB,KAAKwK,EAAEkb,EAAG,EAACF,EAAEpmB,EAAE,GAAGomB,EAAEA,EAAEsU,EAAE,EAAG,CAAp5B,CAAq5B,CAAC,SAAStvB,EAAEkb,EAAEF,GAAGhb,EAAEia,QAAQe,EAAE,EAAFA,EAAO,EAAC,SAAShb,EAAEkb,GAAGlb,EAAEia,QAAQD,EAAQ,KAAS,EAAC,SAASha,EAAEkb,EAAEF,GAAG,aAAa,IAAII,EAAEJ,EAAE,GAAG,SAASy8G,IAAK,UAAS3gH,IAAK,CAAAA,EAAEote,kBAAkBzsX,EAAEz3H,EAAEia,QAAQ,WAAW,SAASja,EAAEA,EAAEkb,EAAEF,EAAEy8G,EAAE3gH,EAAEpX,GAAG,GAAGA,IAAI0b,EAAE,CAAC,IAAIzK,EAAE,IAAIrf,MAAM,mLAAmL,MAAMqf,EAAExgB,KAAK,sBAAsBwgB,CAAE,CAAC,UAASuK,IAAI,OAAOlb,CAAE,CAAAA,EAAE+wC,WAAW/wC,EAAE,IAAIgb,EAAE,CAAC5Z,MAAMpB,EAAEk0C,KAAKl0C,EAAE8H,KAAK9H,EAAE+qB,OAAO/qB,EAAE08B,OAAO18B,EAAEmM,OAAOnM,EAAE4iG,OAAO5iG,EAAEwkf,IAAIxkf,EAAEykf,QAAQvpe,EAAE3X,QAAQvD,EAAE0kf,YAAY1kf,EAAE2kf,WAAWzpe,EAAExZ,KAAK1B,EAAE4kf,SAAS1pe,EAAEo5B,MAAMp5B,EAAEm5B,UAAUn5B,EAAEiZ,MAAMjZ,EAAE2pe,MAAM3pe,EAAE4pe,eAAehue,EAAEote,kBAAkBzsX,GAAG,OAAOz8G,EAAE61B,UAAU71B,EAAEA,CAAE,CAAC,EAAC,SAAShb,EAAEkb,EAAEF,GAAG,aAAahb,EAAEia,QAAQ,8CAA+C,EAAC,SAASja,EAAEkb,EAAEF,GAAG,aAAaA,EAAEI,EAAEF,GAAGF,EAAET,EAAEW,EAAE,uBAAuB,WAAW,OAAOs9G,CAAE,IAAGx9G,EAAET,EAAEW,EAAE,qBAAqB,WAAW,OAAOm3J,CAAE,IAAGr3J,EAAET,EAAEW,EAAE,qBAAqB,WAAW,OAAOy3f,CAAE,IAAG33f,EAAET,EAAEW,EAAE,sBAAsB,WAAW,OAAOyggB,CAAE,IAAG3ggB,EAAET,EAAEW,EAAE,qBAAqB,WAAW,OAAOwrf,CAAE,IAAG1rf,EAAET,EAAEW,EAAE,wBAAwB,WAAW,OAAO2jE,CAAE,IAAG7jE,EAAET,EAAEW,EAAE,uBAAuB,WAAW,OAAO6iE,CAAE,IAAG/iE,EAAET,EAAEW,EAAE,wBAAwB,WAAW,OAAO2qF,CAAG,IAAG7qF,EAAET,EAAEW,EAAE,qBAAqB,WAAW,OAAOwT,EAAG,IAAG1T,EAAET,EAAEW,EAAE,uBAAuB,WAAW,OAAOinf,EAAG,IAAGnnf,EAAET,EAAEW,EAAE,oBAAoB,WAAW,OAAOunf,EAAG,IAAGznf,EAAET,EAAEW,EAAE,sBAAsB,WAAW,OAAOqnf,EAAG,IAAGvnf,EAAET,EAAEW,EAAE,mBAAmB,WAAW,OAAOgnf,EAAG,IAAGlnf,EAAET,EAAEW,EAAE,oBAAoB,WAAW,OAAO2nf,EAAG,IAAG7nf,EAAET,EAAEW,EAAE,oBAAoB,WAAW,OAAOkof,EAAG,IAAGpof,EAAET,EAAEW,EAAE,gBAAgB,WAAW,OAAOwiE,CAAE,IAAG1iE,EAAET,EAAEW,EAAE,iBAAiB,WAAW,OAAOojE,CAAE,IAAGtjE,EAAET,EAAEW,EAAE,mBAAmB,WAAW,OAAOmsf,EAAG,IAAGrsf,EAAET,EAAEW,EAAE,qBAAqB,WAAW,OAAO4pf,EAAG,IAAG9pf,EAAET,EAAEW,EAAE,uBAAuB,WAAW,OAAO2pf,EAAG,IAAG,IAAIzpf,EAAE,CAAC,EAAEJ,EAAEI,EAAEA,GAAGJ,EAAET,EAAEa,EAAE,uBAAuB,WAAW,OAAOo9G,CAAE,IAAGx9G,EAAET,EAAEa,EAAE,qBAAqB,WAAW,OAAOi3J,CAAE,IAAGr3J,EAAET,EAAEa,EAAE,qBAAqB,WAAW,OAAOu3f,CAAE,IAAG33f,EAAET,EAAEa,EAAE,sBAAsB,WAAW,OAAOuggB,CAAE,IAAG3ggB,EAAET,EAAEa,EAAE,qBAAqB,WAAW,OAAOsrf,CAAE,IAAG1rf,EAAET,EAAEa,EAAE,wBAAwB,WAAW,OAAOyjE,CAAE,IAAG7jE,EAAET,EAAEa,EAAE,uBAAuB,WAAW,OAAO2iE,CAAE,IAAG/iE,EAAET,EAAEa,EAAE,wBAAwB,WAAW,OAAOyqF,CAAG,IAAG7qF,EAAET,EAAEa,EAAE,qBAAqB,WAAW,OAAOsT,EAAG,IAAG1T,EAAET,EAAEa,EAAE,uBAAuB,WAAW,OAAO+mf,EAAG,IAAGnnf,EAAET,EAAEa,EAAE,oBAAoB,WAAW,OAAOqnf,EAAG,IAAGznf,EAAET,EAAEa,EAAE,sBAAsB,WAAW,OAAOmnf,EAAG,IAAGvnf,EAAET,EAAEa,EAAE,mBAAmB,WAAW,OAAO8mf,EAAG,IAAGlnf,EAAET,EAAEa,EAAE,oBAAoB,WAAW,OAAOynf,EAAG,IAAG7nf,EAAET,EAAEa,EAAE,oBAAoB,WAAW,OAAOgof,EAAG,IAAGpof,EAAET,EAAEa,EAAE,gBAAgB,WAAW,OAAOsiE,CAAE,IAAG1iE,EAAET,EAAEa,EAAE,iBAAiB,WAAW,OAAOkjE,CAAE,IAAGtjE,EAAET,EAAEa,EAAE,mBAAmB,WAAW,OAAOisf,EAAG,IAAGrsf,EAAET,EAAEa,EAAE,qBAAqB,WAAW,OAAO0pf,EAAG,IAAG9pf,EAAET,EAAEa,EAAE,uBAAuB,WAAW,OAAOypf,EAAG,IAAG,IAAIptY,EAAEz8G,EAAE,GAAGlE,EAAEkE,EAAEA,EAAEy8G,GAAG/3H,EAAEsb,EAAE,GAAGrK,EAAEqK,EAAEA,EAAEtb,GAAGqb,EAAE,SAAS/a,GAAG,IAAIkb,EAAElb,EAAE7P,KAAK6qB,EAAEhb,EAAE4E,KAAKwW,EAAEpb,EAAE4uD,OAAO,OAAO93C,EAAEA,EAAE1X,cAAc,IAAI,CAAC8P,UAAUkM,EAAEF,GAAG2S,MAAM,CAACpN,SAASzF,IAAK,EAACD,EAAEkb,UAAU,CAAC24B,OAAOj+C,EAAEmG,EAAEhP,KAAK3X,KAAKwgB,EAAEmG,EAAE3K,OAAO4kC,WAAWnsC,KAAK+L,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAE3K,OAAOwE,EAAEmG,EAAEiU,SAASgmB,YAAYh2B,EAAErL,aAAa,CAACk/C,OAAO,SAAS5uD,GAAG,MAAM,kBAAkBgH,OAAOhH,EAAG,EAAC4E,KAAK,IAAI,IAAI+N,EAAEoI,EAAEuU,EAAE,SAAStvB,GAAG,IAAIkb,EAAElb,EAAE5D,KAAK4e,EAAEhb,EAAE4E,KAAKwW,EAAEpb,EAAE4uD,OAAO6oE,EAAEz3H,EAAE0f,MAAMhgB,OAAE,IAAS+3H,EAAE,UAAUA,EAAE,MAAM,iBAAiBv8G,EAAEpE,EAAEA,EAAE1X,cAAcuT,EAAE,CAACi8C,OAAOxzC,EAAEjrB,KAAK+qB,EAAEtW,KAAKoW,IAAIlE,EAAEA,EAAE1X,cAAc8b,EAAE,CAACtW,KAAKoW,EAAE0E,MAAMhgB,GAAI,EAAC4vB,EAAE2G,UAAU,CAAC24B,OAAOj+C,EAAEmG,EAAEhP,KAAKlD,KAAK+L,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAAS/P,KAAKuU,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAE3K,OAAOwE,EAAEmG,EAAEpV,KAAKiP,EAAEmG,EAAEhP,OAAO4X,MAAM/O,EAAEmG,EAAE3K,QAAQ,IAAI0O,EAAEyU,EAAE,SAAS16B,EAAEoL,EAAEkb,GAAG,IAAIF,EAAEjmB,OAAOgB,KAAKiK,GAAG,GAAGjL,OAAOsza,sBAAsB,CAAC,IAAIjtZ,EAAErmB,OAAOsza,sBAAsBroa,GAAGkb,IAAIE,EAAEA,EAAEmW,QAAQ,SAASrW,GAAG,OAAOnmB,OAAOouc,yBAAyBnjc,EAAEkb,GAAGV,UAAW,KAAIQ,EAAE7jB,KAAK2X,MAAMkM,EAAEI,EAAG,QAAOJ,CAAE,UAAShoB,EAAEgN,GAAG,IAAI,IAAIkb,EAAE,EAAEA,EAAErM,UAAUnX,OAAOwjB,IAAI,CAAC,IAAIF,EAAE,MAAMnM,UAAUqM,GAAGrM,UAAUqM,GAAG,CAAC,EAAEA,EAAE,EAAEtmB,EAAEG,OAAOimB,IAAG,GAAIvjB,SAAS,SAASyjB,GAAGX,EAAEva,EAAEkb,EAAEF,EAAEE,GAAI,IAAGnmB,OAAOwmM,0BAA0BxmM,OAAO00f,iBAAiBzpf,EAAEjL,OAAOwmM,0BAA0BvgL,IAAIpmB,EAAEG,OAAOimB,IAAIvjB,SAAS,SAASyjB,GAAGnmB,OAAOC,eAAegL,EAAEkb,EAAEnmB,OAAOouc,yBAAyBnob,EAAEE,GAAI,GAAG,QAAOlb,CAAE,UAASua,EAAEva,EAAEkb,EAAEF,GAAG,OAAOE,KAAKlb,EAAEjL,OAAOC,eAAegL,EAAEkb,EAAE,CAACjmB,MAAM+lB,EAAER,YAAW,EAAGrlB,cAAa,EAAGD,UAAS,IAAK8K,EAAEkb,GAAGF,EAAEhb,CAAE,UAAS8a,EAAE9a,GAAG,OAAO8a,EAAE,mBAAmBH,QAAQ,iBAAiBA,OAAO44G,SAAS,SAASvzH,GAAG,cAAcA,CAAE,EAAC,SAASA,GAAG,OAAOA,GAAG,mBAAmB2a,QAAQ3a,EAAEo+B,cAAczjB,QAAQ3a,IAAI2a,OAAO5b,UAAU,gBAAgBiB,CAAE,GAAEA,EAAG,UAAS/L,IAAI,OAAOA,EAAEc,OAAOmH,QAAQ,SAAS8D,GAAG,IAAI,IAAIkb,EAAE,EAAEA,EAAErM,UAAUnX,OAAOwjB,IAAI,CAAC,IAAIF,EAAEnM,UAAUqM,GAAG,IAAI,IAAIE,KAAKJ,EAAEjmB,OAAOgK,UAAU6X,eAAephB,KAAKwlB,EAAEI,KAAKpb,EAAEob,GAAGJ,EAAEI,GAAI,QAAOpb,CAAE,GAAE8O,MAAM/X,KAAK8X,UAAW,UAASsM,EAAEnb,EAAEkb,GAAG,IAAI,IAAIF,EAAE,EAAEA,EAAEE,EAAExjB,OAAOsjB,IAAI,CAAC,IAAII,EAAEF,EAAEF,GAAGI,EAAEZ,WAAWY,EAAEZ,aAAY,EAAGY,EAAEjmB,cAAa,EAAG,UAAUimB,IAAIA,EAAElmB,UAAS,GAAIH,OAAOC,eAAegL,EAAEob,EAAE/hB,IAAI+hB,EAAG,CAAC,UAASrW,EAAE/E,EAAEkb,GAAG,OAAOnW,EAAEhQ,OAAOihB,gBAAgB,SAAShW,EAAEkb,GAAG,OAAOlb,EAAEwgC,UAAUtlB,EAAElb,CAAE,GAAEA,EAAEkb,EAAG,CAAka,SAAS49F,EAAE94G,EAAEkb,GAAG,OAAOA,GAAG,WAAWJ,EAAEI,IAAI,mBAAmBA,EAAE,SAASlb,GAAG,QAAG,IAASA,EAAE,MAAM,IAAI8mf,eAAe,6DAA6D,OAAO9mf,CAAE,CAAzH,CAA0HA,GAAGkb,CAAE,UAAS+iE,EAAEj+E,GAAG,OAAOi+E,EAAElpF,OAAOihB,eAAejhB,OAAOolD,eAAe,SAASn6C,GAAG,OAAOA,EAAEwgC,WAAWzrC,OAAOolD,eAAen6C,EAAG,GAAEA,EAAG,KAAI68D,EAAE,SAAS78D,IAAI,SAASA,EAAEkb,GAAG,GAAG,mBAAmBA,GAAG,OAAOA,EAAE,MAAM,IAAIulB,UAAU,sDAAsDzgC,EAAEjB,UAAUhK,OAAOwS,OAAO2T,GAAGA,EAAEnc,UAAU,CAACq/B,YAAY,CAACnpC,MAAM+K,EAAE9K,UAAS,EAAGC,cAAa,KAAM+lB,GAAGnW,EAAE/E,EAAEkb,EAAG,CAAlO,CAAmOxb,EAAEM,GAAG,IAAIkb,EAAEF,EAAIy8G,EAAv+B,SAAWz3H,GAAG,IAAIkb,EAAE,WAAW,GAAG,oBAAoBm3e,UAAUA,QAAQC,UAAU,OAAM,EAAG,GAAGD,QAAQC,UAAUmoC,KAAK,OAAM,EAAG,GAAG,mBAAmB7kiB,MAAM,OAAM,EAAG,IAAI,OAAOiE,KAAKkF,UAAU1K,SAASmB,KAAK68f,QAAQC,UAAUz4f,KAAK,IAAI,WAAY,MAAI,CAAqB,CAAlB,MAAMmG,GAAG,OAAM,CAAG,CAAC,CAAxP,GAA2P,OAAO,WAAW,IAAIgb,EAAEI,EAAE6iE,EAAEj+E,GAAG,GAAGkb,EAAE,CAAC,IAAIu8G,EAAEx5C,EAAElnF,MAAMqnC,YAAYpjB,EAAEq3e,QAAQC,UAAUl3e,EAAEvM,UAAU4oH,EAAG,MAAKz8G,EAAEI,EAAEtM,MAAM/X,KAAK8X,WAAW,OAAOiqG,EAAE/hH,KAAKikB,EAAG,CAAC,CAAukBjE,CAAErX,GAAG,SAASA,EAAEM,GAAG,IAAIkb,EAAE,OAAO,SAASlb,EAAEkb,GAAG,KAAKlb,aAAakb,GAAG,MAAM,IAAIulB,UAAU,oCAAqC,CAA5F,CAA6F1pC,KAAK2I,IAAIwb,EAAEu8G,EAAEjiI,KAAKuB,KAAKiJ,IAAIy/B,MAAM,CAACb,SAAQ,EAAGi9J,SAAQ,GAAI3gL,EAAEw/gB,iBAAiB,WAAWx/gB,EAAEu1B,SAAS,CAACorJ,SAAQ,IAAK,mBAAmB3gL,EAAErZ,MAAMygX,cAAcpnW,EAAErZ,MAAMygX,cAAe,EAACpnW,EAAEy/gB,iBAAiB,WAAWz/gB,EAAEu1B,SAAS,CAACorJ,SAAQ,IAAK,mBAAmB3gL,EAAErZ,MAAM0gX,cAAcrnW,EAAErZ,MAAM0gX,cAAe,EAACrnW,EAAE0/gB,YAAY,WAAW1/gB,EAAEu1B,SAAS,CAAC7R,SAAQ,GAAK,EAAC1jB,EAAE2/gB,WAAW,WAAW3/gB,EAAEu1B,SAAS,CAAC7R,SAAQ,GAAK,EAAC1jB,EAAE2qR,YAAY,SAAS7lS,GAAG,mBAAmBkb,EAAErZ,MAAMwyK,SAASn5J,EAAErZ,MAAMwyK,QAAQr0K,EAAG,EAACkb,CAAE,QAAOA,EAAExb,GAAGsb,EAAE,CAAC,CAAC3hB,IAAI,SAASpE,MAAM,WAAW,IAAI+K,EAAEjJ,KAAK8K,MAAMqZ,EAAElb,EAAE86hB,YAAY9/gB,EAAEhb,EAAEojM,MAAMhoL,EAAEpb,EAAEtC,KAAK+5H,EAAEz3H,EAAE8B,SAASpC,OAAE,IAAS+3H,EAAEr8G,EAAEq8G,EAAE9mH,EAAE3Q,EAAEkP,UAAU6L,EAAE/a,EAAEwd,KAAK7K,EAAE3S,EAAE+6hB,WAAWzrgB,EAAEtvB,EAAE+mT,SAASnyT,EAAEoL,EAAEg7hB,UAAUhoiB,OAAE,IAAS4B,EAAE,UAAUA,EAAE2lB,EAAEva,EAAEi7hB,oBAAoBnghB,EAAE9a,EAAE4E,KAAKuW,EAAEnb,EAAE6tB,MAAM9oB,EAAE/E,EAAEuc,SAASxF,EAAEhgB,KAAK0oC,MAAMq5E,EAAE/hG,EAAE6nB,QAAQq/C,EAAElnE,EAAE8kL,QAAQh/H,EAAE9hE,EAAEiK,EAAEid,OAAO,CAAC64gB,YAAYvghB,EAAEY,EAAED,EAAEgghB,YAAY//gB,EAAE0B,OAAOohE,GAAG66B,EAAEl0G,KAAKkW,IAAI,OAAOhE,EAAEA,EAAE1X,cAAc,SAASnL,EAAE,CAACmI,KAAK,SAASyxB,MAAMgvC,EAAEw3G,QAAQt9K,KAAK8uS,YAAYy8E,aAAavrX,KAAK2jiB,iBAAiBn4K,aAAaxrX,KAAK4jiB,iBAAiBxugB,QAAQp1B,KAAK6jiB,YAAYxugB,OAAOr1B,KAAK8jiB,YAAY,CAAC3rhB,UAAUyB,GAAG,CAAC4L,SAASxX,IAAI+R,EAAEA,EAAE1X,cAAc,MAAM,CAACyuB,MAAM7oB,EAAE6D,OAAO/D,EAAEwqB,IAAIxY,EAAEA,EAAE1X,cAAc,MAAM,CAACyuB,MAAM,CAAClG,QAAQ,OAAOgT,eAAe,SAAS5C,SAASzI,IAAIxY,EAAEA,EAAE1X,cAAcyb,EAAE,CAACze,KAAK2e,EAAEnW,KAAK0qB,EAAEs/B,OAAOj8C,EAAE+M,MAAM1sB,MAAM8R,EAAEwqB,IAAIxY,EAAEA,EAAE1X,cAAc,MAAM,CAACyuB,MAAM7oB,EAAEwX,UAAU1F,EAAEA,EAAE1X,cAAc,MAAM,CAACyuB,MAAM,CAACkO,UAAU/gB,EAAE0M,MAAM,SAAShoB,IAAK,MAAKyb,EAAED,EAAEnc,UAAUic,GAAatb,CAAE,CAA9wD,CAA+wD+3H,EAAEruG,WAAWtkB,EAAE,SAAS9E,GAAG,MAAM,MAAMA,GAAG,QAAQA,GAAG,IAAIA,CAAE,EAACjF,EAAE,SAASiF,EAAEkb,GAAG,IAAIF,EAAEE,EAAEtW,KAAKwW,EAAEF,EAAEgghB,YAAYzja,EAAEv8G,EAAE2B,OAAO/F,EAAEoE,EAAE4/gB,YAAY,OAAO9niB,EAAEA,EAAEA,EAAE,CAAC,EAAEgN,GAAG,CAAC,EAAE,CAACujB,OAAOvI,GAAGI,GAAGq8G,GAAG3gH,EAAG,EAAC+lD,EAAE5mC,UAAU,CAAC6kgB,YAAYnqhB,EAAEmG,EAAE4lB,OAAO0mK,MAAMzyL,EAAEmG,EAAEw9B,MAAM,CAAC,OAAO,QAAQ,WAAWxyC,SAAS6O,EAAEmG,EAAEpV,KAAKwN,UAAUyB,EAAEmG,EAAE3K,OAAOqR,KAAK7M,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAE3K,OAAOwE,EAAEmG,EAAEpV,KAAKiP,EAAEmG,EAAEhP,OAAOizhB,WAAWpqhB,EAAEmG,EAAEhP,KAAKi/S,SAASp2S,EAAEmG,EAAE3K,OAAO6uhB,UAAUrqhB,EAAEmG,EAAE3K,OAAOkoK,QAAQ1jK,EAAEmG,EAAEhP,KAAKw6W,aAAa3xW,EAAEmG,EAAEhP,KAAKy6W,aAAa5xW,EAAEmG,EAAEhP,KAAKmzhB,oBAAoBtqhB,EAAEmG,EAAEo9B,KAAKtvC,KAAK+L,EAAEmG,EAAE3K,OAAO0hB,MAAMld,EAAEmG,EAAE4lB,OAAOh/B,KAAKiT,EAAEmG,EAAE3K,OAAOoQ,SAAS5L,EAAEmG,EAAEo9B,MAAM2oB,EAAEntD,aAAa,CAAC0zL,MAAM,OAAO2jH,SAAS,OAAOk0O,qBAAoB,EAAGr2hB,KAAK,QAAQ,IAAII,EAAE,CAACid,OAAO,CAAC0F,QAAQ,QAAQ+O,OAAO,EAAE/C,aAAa,EAAEiI,UAAU,+BAA+Blc,MAAM,UAAU/T,OAAO,UAAU8U,SAAS,OAAOsV,OAAO,MAAMrO,MAAM,oBAAoB0S,SAAS,SAASpE,QAAQ,SAASvO,WAAW,QAAQjL,QAAQ,CAACkL,MAAM,QAAQ7e,KAAK,CAAC+xB,WAAW,SAASjT,QAAQ,OAAOpE,OAAO,SAAS,SAASu6D,EAAE99E,EAAEkb,GAAG,IAAIF,EAAEjmB,OAAOgB,KAAKiK,GAAG,GAAGjL,OAAOsza,sBAAsB,CAAC,IAAIjtZ,EAAErmB,OAAOsza,sBAAsBroa,GAAGkb,IAAIE,EAAEA,EAAEmW,QAAQ,SAASrW,GAAG,OAAOnmB,OAAOouc,yBAAyBnjc,EAAEkb,GAAGV,UAAW,KAAIQ,EAAE7jB,KAAK2X,MAAMkM,EAAEI,EAAG,QAAOJ,CAAE,UAASs+f,EAAEt5gB,GAAG,IAAI,IAAIkb,EAAE,EAAEA,EAAErM,UAAUnX,OAAOwjB,IAAI,CAAC,IAAIF,EAAE,MAAMnM,UAAUqM,GAAGrM,UAAUqM,GAAG,CAAC,EAAEA,EAAE,EAAE4iE,EAAE/oF,OAAOimB,IAAG,GAAIvjB,SAAS,SAASyjB,GAAGu5O,EAAEz0P,EAAEkb,EAAEF,EAAEE,GAAI,IAAGnmB,OAAOwmM,0BAA0BxmM,OAAO00f,iBAAiBzpf,EAAEjL,OAAOwmM,0BAA0BvgL,IAAI8iE,EAAE/oF,OAAOimB,IAAIvjB,SAAS,SAASyjB,GAAGnmB,OAAOC,eAAegL,EAAEkb,EAAEnmB,OAAOouc,yBAAyBnob,EAAEE,GAAI,GAAG,QAAOlb,CAAE,UAASy0P,EAAEz0P,EAAEkb,EAAEF,GAAG,OAAOE,KAAKlb,EAAEjL,OAAOC,eAAegL,EAAEkb,EAAE,CAACjmB,MAAM+lB,EAAER,YAAW,EAAGrlB,cAAa,EAAGD,UAAS,IAAK8K,EAAEkb,GAAGF,EAAEhb,CAAE,KAAI09E,EAAE,SAAS19E,GAAG,OAAO,SAASkb,GAAG,IAAIF,EAAEs+f,EAAEA,EAAEA,EAAE,CAACwhB,YAAYxhB,EAAEA,EAAE,CAAC,EAAEt5gB,EAAE86hB,aAAa5/gB,EAAE4/gB,cAAc96hB,GAAGkb,GAAG,CAAC,EAAE,CAAC2S,MAAMyrf,EAAEA,EAAE,CAAC,EAAEt5gB,EAAE6tB,OAAO3S,EAAE2S,SAAS,OAAO/W,EAAEA,EAAE1X,cAAcy9D,EAAE7hD,EAAG,CAAC,EAAC,SAASnW,IAAI,OAAOA,EAAE9P,OAAOmH,QAAQ,SAAS8D,GAAG,IAAI,IAAIkb,EAAE,EAAEA,EAAErM,UAAUnX,OAAOwjB,IAAI,CAAC,IAAIF,EAAEnM,UAAUqM,GAAG,IAAI,IAAIE,KAAKJ,EAAEjmB,OAAOgK,UAAU6X,eAAephB,KAAKwlB,EAAEI,KAAKpb,EAAEob,GAAGJ,EAAEI,GAAI,QAAOpb,CAAE,GAAE8O,MAAM/X,KAAK8X,UAAW,KAAIyvE,EAAE,SAASt+E,EAAEkb,GAAG,OAAO,SAASF,GAAG,IAAII,EAAEJ,EAAEpW,KAAK6yH,EAAEz8G,EAAE0E,MAAM,MAAG,iBAAiBxE,EAAUlb,GAAG,SAASA,GAAG,OAAO8W,EAAEA,EAAE1X,cAAc,MAAMyF,EAAE,CAACm0D,IAAI99C,GAAGlb,GAAI,IAAU8W,EAAEA,EAAE1X,cAAc8b,EAAE,CAACwM,MAAMtM,EAAEmI,OAAOnI,EAAEsE,MAAM+3G,GAAI,CAAC,EAAC4gY,EAAE,CAACyiC,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAED,GAAGxwD,MAAM,CAACpR,WAAW,WAAW/e,KAAK,wBAAwB86H,EAAE96C,EAAE26a,GAAG,SAASh6a,EAAEr+E,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAEuN,QAAQ,aAAazR,EAAEA,EAAE1X,cAAc,IAAI,KAAK0X,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,6PAA6PqN,KAAKxM,KAAM,CAAAijE,EAAEpoD,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAI+kgB,EAAE,CAAC4pB,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEzoF,GAAGg4B,MAAM,CAACpR,WAAW,QAAQiD,MAAM,SAAShiB,KAAK,sBAAsB20K,EAAE30F,EAAEwzb,GAAG,SAASr7gB,EAAEmK,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAO,OAAOzM,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6B5ygB,QAAQ,YAAYb,MAAMxM,EAAEqI,OAAOvI,GAAGlE,EAAEA,EAAE1X,cAAc,iBAAiB,CAAC0V,GAAG,yBAAyB+sL,GAAG,SAASE,GAAG,SAASD,GAAG,QAAQE,GAAG,UAAUo5V,kBAAkB,wBAAwBC,cAAc,kBAAkBvkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,OAAOs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,OAAOs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,aAAaxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,+BAA+BrN,EAAE,2NAA2NzD,EAAEA,EAAE1X,cAAc,iBAAiB,CAAC0V,GAAG,yBAAyB+sL,GAAG,SAASE,GAAG,SAASD,GAAG,OAAOE,GAAG,SAASo5V,kBAAkB,wBAAwBC,cAAc,kBAAkBvkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,OAAOs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,aAAaxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,+BAA+BrN,EAAE,0KAA0KzD,EAAEA,EAAE1X,cAAc,iBAAiB,CAAC0V,GAAG,yBAAyB+sL,GAAG,QAAQE,GAAG,QAAQD,GAAG,SAASE,GAAG,SAASo5V,kBAAkB,wBAAwBC,cAAc,kBAAkBvkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,OAAOs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,aAAaxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,+BAA+BrN,EAAE,uKAAuKzD,EAAEA,EAAE1X,cAAc,iBAAiB,CAAC0V,GAAG,yBAAyB+sL,GAAG,KAAKE,GAAG,KAAKD,GAAG,QAAQE,GAAG,SAASo5V,kBAAkB,wBAAwBC,cAAc,kBAAkBvkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,OAAOs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,OAAOs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,MAAMs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,aAAaxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,+BAA+BrN,EAAE,8LAA+L,CAAA1kB,EAAEogC,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIi6f,EAAE,CAAC00B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEo2K,GAAG7mO,MAAM,CAACpR,WAAW,WAAW/e,KAAK,sBAAsBi1gB,EAAEj1b,EAAE0ob,GAAG,SAAS1xQ,EAAE10P,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAACwoB,KAAKxM,EAAE6N,KAAK,MAAMV,QAAQ,YAAYb,MAAMxM,EAAEqI,OAAOvI,EAAEmghB,MAAM,8BAA8BrkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,6sBAA8sB,CAAAm6O,EAAEz+N,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIu+f,EAAE,CAACowB,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEyqb,GAAGl7e,MAAM,CAACpR,WAAW,WAAW/e,KAAK,uBAAuBi+gB,EAAEj+b,EAAEgtb,GAAG,SAAS3B,EAAE/ogB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAEuN,QAAQ,aAAazR,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAKxM,EAAEb,EAAE,+fAAggB,CAAAwuf,EAAE9ye,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIwtgB,EAAE,CAACmhB,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE2yb,GAAGpjf,MAAM,CAACpR,WAAW,WAAW/e,KAAK,sBAAsBgpgB,EAAEhpb,EAAEi8b,GAAG,SAAS1I,EAAEjxgB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,OAAE,IAASE,EAAE,GAAGA,EAAEE,EAAEpb,EAAEujB,OAAOk0G,OAAE,IAASr8G,EAAE,GAAGA,EAAE1b,EAAEM,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BvzgB,KAAKloB,EAAEgoB,MAAM1M,EAAEuI,OAAOk0G,EAAElvG,QAAQ,aAAazR,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,glCAAglCghhB,SAAS,UAAUC,SAAS,YAAa,CAAAvqB,EAAEh7e,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIine,EAAE,CAAC0nD,YAAY,CAACr+gB,WAAW,iGAAiGe,KAAK8gE,EAAErjE,GAAG4S,MAAM,CAACpR,WAAW,kGAAkG/e,KAAK,yBAAyBmhF,EAAEnB,EAAE01Z,GAAG,SAASn4d,EAAEjb,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAEuN,QAAQ,uBAAuBzR,EAAEA,EAAE1X,cAAc,IAAI,CAACwoB,KAAKxM,GAAGtE,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,kXAAkXzD,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,8UAA8UzD,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,kRAAmR,CAAAU,EAAEgb,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAI4hgB,EAAE,CAAC+sB,YAAY,CAACr+gB,WAAW,oBAAoBe,KAAK8gE,EAAEM,GAAG/wD,MAAM,CAACpR,WAAW,qBAAqB/e,KAAK,wBAAwBqgF,EAAEL,EAAEqwb,GAAG,SAASnvb,EAAE5+E,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAEuN,QAAQ,uBAAuBzR,EAAEA,EAAE1X,cAAc,IAAI,KAAK0X,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,4jBAA4jBqN,KAAKxM,KAAM,CAAAwjE,EAAE3oD,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAI27D,EAAE,CAACgzd,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE4vB,IAAIrgF,MAAM,CAACpR,WAAW,WAAW/e,KAAK,yBAAyBmoG,EAAGnoB,EAAE5V,GAAG,SAASomC,GAAGluG,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAE4M,KAAKxM,EAAEtW,EAAE,MAAMC,EAAE,MAAMwjB,QAAQ,aAAazR,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,gBAAgBwZ,UAAU,uBAAuBjd,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,kBAAkBwZ,UAAU,uBAAuBjd,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,mBAAmBwZ,UAAU,uBAAuBjd,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,iBAAiBwZ,UAAU,uBAAwB,CAAAm6E,GAAGj4E,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIk/F,GAAG,CAACyvb,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEgkb,IAAIz0e,MAAM,CAACpR,WAAW,WAAW/e,KAAK,sBAAsBgxB,GAAGgvD,EAAE2tB,IAAI,SAASi3Z,GAAGtigB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC,kBAAkB,0BAA0B6pB,KAAK,MAAMV,QAAQ,YAAYb,MAAMxM,EAAEqI,OAAOvI,EAAEmghB,MAAM,8BAA8BrkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,smBAAsmBqN,KAAKxM,IAAK,CAAAknf,GAAGrse,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAI41f,GAAG,CAAC+4B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEsmB,IAAI/2E,MAAM,CAACpR,WAAW,WAAW/e,KAAK,wBAAwBykgB,GAAGzkb,EAAEqkb,IAAI,SAASn9Z,GAAG5kG,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAe,OAARvjB,EAAE0f,MAAa5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6B5ygB,QAAQ,cAAcb,MAAMxM,EAAEqI,OAAOvI,EAAE6S,MAAM,CAACkG,UAAU,eAAejd,EAAEA,EAAE1X,cAAc,OAAO,KAAK0X,EAAEA,EAAE1X,cAAc,iBAAiB,CAAC0V,GAAG,IAAI+sL,GAAG,MAAME,GAAG,OAAOD,GAAG,OAAOE,GAAG,QAAQlrL,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,YAAYxkhB,EAAEA,EAAE1X,cAAc,OAAO,CAAC4E,OAAO,IAAIs3hB,UAAU,WAAWxkhB,EAAEA,EAAE1X,cAAc,SAAS,CAACq8hB,GAAG,MAAMv2b,GAAG,MAAM9pF,EAAE,MAAMwM,KAAK,YAAY9Q,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,8DAA8DzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,wDAAwDzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,qOAAsO,CAAAqqF,GAAG3uE,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIi2f,GAAG,CAAC04B,YAAY,CAACr+gB,WAAW,aAAae,KAAK8gE,EAAE2uB,IAAIp/E,MAAM,CAACpR,WAAW,UAAUiD,MAAM,WAAWhiB,KAAK,qBAAqB+kgB,GAAG/kb,EAAE0kb,IAAI,SAASn1Z,GAAGjtG,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAe,OAARvjB,EAAE0f,MAAa5I,EAAEA,EAAE1X,cAAc,MAAM,CAACsoB,MAAMxM,EAAEqI,OAAOvI,EAAEuN,QAAQ,YAAYsF,MAAM,CAACkG,UAAU,cAAcu3C,QAAQ,MAAM6vd,MAAM,8BAA8BrkhB,EAAEA,EAAE1X,cAAc,IAAI,CAACs8hB,OAAO,OAAO1whB,YAAY,IAAI4c,KAAK,OAAO2zgB,SAAS,WAAWzkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,+sCAA+sCqN,KAAK,UAAU2zgB,SAAS,aAAc,CAAAtub,GAAGh3E,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAI81f,GAAG,CAAC64B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE+oB,IAAIx5E,MAAM,CAACpR,WAAW,WAAW/e,KAAK,uBAAuB6kgB,GAAG7kb,EAAEukb,IAAI,SAAS56Z,GAAGrnG,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC6pB,KAAK,MAAMV,QAAQ,YAAY4ygB,MAAM,6BAA6BvzgB,KAAKxM,EAAEsM,MAAMxM,EAAEqI,OAAOvI,GAAGlE,EAAEA,EAAE1X,cAAc,QAAQ,KAAK,gBAAgB0X,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,yiCAA0iC,CAAA8sF,GAAGpxE,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIk5F,GAAG,CAACy1b,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE+jb,IAAIx0e,MAAM,CAACpR,WAAW,QAAQiD,MAAM,SAAShiB,KAAK,oBAAoBwkgB,GAAGxkb,EAAE2nB,IAAI,SAASg9Z,GAAGrigB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,OAAE,IAASE,EAAE,GAAGA,EAAEE,EAAEpb,EAAEujB,OAAOk0G,OAAE,IAASr8G,EAAE,GAAGA,EAAE,OAAOtE,EAAEA,EAAE1X,cAAc,MAAM,CAACksE,QAAQ,MAAM6vd,MAAM,6BAA6Br2hB,EAAE,MAAMC,EAAE,MAAMwjB,QAAQ,gBAAgBb,MAAM1M,EAAEuI,OAAOk0G,GAAG3gH,EAAEA,EAAE1X,cAAc,IAAI,KAAK0X,EAAEA,EAAE1X,cAAc,IAAI,KAAK0X,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,4MAA4MzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,ibAAibzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,qYAAqYzD,EAAEA,EAAE1X,cAAc,IAAI,KAAK0X,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,wcAAyc,CAAA8nf,GAAGpse,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIu2f,GAAG,CAACo4B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE0lB,IAAIn2E,MAAM,CAACpR,WAAW,QAAQiD,MAAM,SAAShiB,KAAK,qBAAqBmlgB,GAAGnlb,EAAEglb,IAAI,SAAS1+Z,GAAGhkG,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,OAAE,IAASE,EAAE,GAAGA,EAAEE,EAAEpb,EAAEujB,OAAOk0G,OAAE,IAASr8G,EAAE,GAAGA,EAAE1b,EAAEM,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAACu8hB,iBAAiB,wBAAwBpzgB,QAAQ,oBAAoBX,KAAKloB,EAAEgoB,MAAM1M,EAAEuI,OAAOk0G,EAAE0ja,MAAM,8BAA8BrkhB,EAAEA,EAAE1X,cAAc,IAAI,CAACo8hB,SAAS,UAAUD,SAAS,WAAWzkhB,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,+RAA+RqN,KAAK,YAAY9Q,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,oRAAoRqN,KAAK,YAAY9Q,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,yRAAyRqN,KAAK,YAAY9Q,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,mSAAmSqN,KAAK,aAAc,CAAAo8E,GAAG/tE,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASuT,MAAM/O,EAAEmG,EAAE3K,QAAQ,IAAIw2f,GAAG,CAACm4B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEylb,IAAIl2e,MAAM,CAACpR,WAAW,WAAW/e,KAAK,qBAAqB0lgB,GAAG1lb,EAAEilb,IAAI,SAASoB,GAAG/jgB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAACksE,QAAQ,MAAM6vd,MAAM,6BAA6Br2hB,EAAE,MAAMC,EAAE,MAAMwjB,QAAQ,sBAAsBqzgB,OAAO,6CAA6CC,SAAS,WAAWj0gB,KAAKxM,EAAEsM,MAAMxM,EAAEqI,OAAOvI,GAAGlE,EAAEA,EAAE1X,cAAc,IAAI,KAAK0X,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,cAAcrN,EAAE,wIAAwIzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAUrN,EAAE,4yBAA6yB,CAAAwpf,GAAG9te,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIy2f,GAAG,CAACk4B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAEwkb,IAAIj1e,MAAM,CAACpR,WAAW,WAAW/e,KAAK,oBAAoB2pgB,GAAG3pb,EAAEklb,IAAI,SAASE,GAAG9igB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAEuN,QAAQ,aAAazR,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAKxM,EAAEb,EAAE,q8BAAs8B,CAAAuof,GAAG7se,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIs3f,GAAG,CAACq3B,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE4kb,IAAIr1e,MAAM,CAACpR,WAAW,UAAUiD,MAAM,WAAWhiB,KAAK,sBAAsBongB,GAAGpnb,EAAE+lb,IAAI,SAASP,GAAGljgB,GAAG,IAAIkb,EAAElb,EAAE0nB,MAAM1M,EAAEhb,EAAEujB,OAAOnI,EAAEpb,EAAE0f,MAAM,OAAO5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6BzzgB,MAAMxM,EAAEqI,OAAOvI,EAAE4M,KAAKxM,EAAEmN,QAAQ,eAAezR,EAAEA,EAAE1X,cAAc,OAAO,CAACmb,EAAE,s0BAAu0B,UAASmpf,KAAK,OAAOA,GAAG3ugB,OAAOmH,QAAQ,SAAS8D,GAAG,IAAI,IAAIkb,EAAE,EAAEA,EAAErM,UAAUnX,OAAOwjB,IAAI,CAAC,IAAIF,EAAEnM,UAAUqM,GAAG,IAAI,IAAIE,KAAKJ,EAAEjmB,OAAOgK,UAAU6X,eAAephB,KAAKwlB,EAAEI,KAAKpb,EAAEob,GAAGJ,EAAEI,GAAI,QAAOpb,CAAE,GAAE8O,MAAM/X,KAAK8X,UAAW,CAAAq0f,GAAGjte,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU,IAAIi7f,GAAG,CAAC0zB,YAAY,CAACr+gB,WAAW,WAAWe,KAAK8gE,EAAE2kb,IAAIp1e,MAAM,CAACpR,WAAW,UAAUiD,MAAM,WAAWhiB,KAAK,wBAAwBmngB,GAAGnnb,EAAE0pb,IAAI,SAASnE,GAAGjjgB,GAA4B,OAAzBA,EAAE0nB,MAAM1nB,EAAEujB,OAAOvjB,EAAE0f,MAAa5I,EAAEA,EAAE1X,cAAc,MAAM,CAAC+7hB,MAAM,6BAA6Br2hB,EAAE,IAAIC,EAAE,IAAIumE,QAAQ,MAAM/iD,QAAQ,kBAAkBszgB,SAAS,YAAY/khB,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,qCAAqCzD,EAAEA,EAAE1X,cAAc,OAAOskgB,GAAG,CAACnpf,EAAE,sHAAsH8of,KAAKvsf,EAAEA,EAAE1X,cAAc,OAAOskgB,GAAG,CAACnpf,EAAE,+IAA+I8of,KAAKvsf,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,+EAA+EzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,6DAA6DzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,6JAA6JzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,mIAAmIzD,EAAEA,EAAE1X,cAAc,OAAOskgB,GAAG,CAACnpf,EAAE,kGAAkG+of,KAAKxsf,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,mGAAmGzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,wEAAwEzD,EAAEA,EAAE1X,cAAc,OAAO,CAACwoB,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,QAAQxhhB,EAAE,+LAA+LzD,EAAEA,EAAE1X,cAAc,OAAOskgB,GAAG,CAACnpf,EAAE,iMAAiM+of,KAAM,KAAID,GAAG,CAACz7e,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,SAASz4B,GAAG,CAAC17e,KAAK,UAAU8zgB,OAAO,UAAUI,cAAc,QAAQC,eAAe,SAAS94B,GAAGhte,UAAU,CAACvO,MAAM/W,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,SAASoX,OAAO5S,EAAEmG,EAAEu9B,UAAU,CAAC1jC,EAAEmG,EAAEiU,OAAOpa,EAAEmG,EAAE3K,UAAU+O,EAAEb,QAAQe,CAAE,uCCS7trC,IAAIP,EAAEb,EAAQ,MAASjf,EAAE4f,OAAOC,IAAI,iBAAiBG,EAAEJ,OAAOC,IAAI,kBAAkB3mB,EAAEc,OAAOgK,UAAU6X,eAAeoE,EAAEH,EAAEm2e,mDAAmDmlB,kBAAkBvhhB,EAAE,CAACyE,KAAI,EAAG2O,KAAI,EAAGg0hB,QAAO,EAAGC,UAAS,GAChP,SAAShhhB,EAAEtK,EAAEmG,EAAEgE,GAAG,IAAI/D,EAAEwD,EAAE,CAAC,EAAEva,EAAE,KAAKhN,EAAE,KAAiF,IAAI+jB,UAAhF,IAAS+D,IAAI9a,EAAE,GAAG8a,QAAG,IAAShE,EAAEzd,MAAM2G,EAAE,GAAG8W,EAAEzd,UAAK,IAASyd,EAAE9O,MAAMhV,EAAE8jB,EAAE9O,KAAc8O,EAAE7iB,EAAEuB,KAAKshB,EAAEC,KAAKniB,EAAEgiB,eAAeG,KAAKwD,EAAExD,GAAGD,EAAEC,IAAI,GAAGpG,GAAGA,EAAEjB,aAAa,IAAIqH,KAAKD,EAAEnG,EAAEjB,kBAAe,IAAS6K,EAAExD,KAAKwD,EAAExD,GAAGD,EAAEC,IAAI,MAAM,CAACsE,SAAStgB,EAAEqB,KAAKuU,EAAEtX,IAAI2G,EAAEgI,IAAIhV,EAAE6O,MAAM0Y,EAAEuvD,OAAO9uD,EAAExK,QAAS,CAAAyJ,EAAQzK,SAASuL,EAAEd,EAAQK,IAAIW,EAAEhB,EAAQiihB,KAAKjhhB,mCCD7V,IAAIF,EAAEJ,OAAOC,IAAI,iBAAiBI,EAAEL,OAAOC,IAAI,gBAAgBhmB,EAAE+lB,OAAOC,IAAI,kBAAkBK,EAAEN,OAAOC,IAAI,qBAAqBQ,EAAET,OAAOC,IAAI,kBAAkBM,EAAEP,OAAOC,IAAI,kBAAkBjI,EAAEgI,OAAOC,IAAI,iBAAiBO,EAAER,OAAOC,IAAI,qBAAqBk+F,EAAEn+F,OAAOC,IAAI,kBAAkB9V,EAAE6V,OAAOC,IAAI,cAAc7V,EAAE4V,OAAOC,IAAI,cAAc5V,EAAE2V,OAAO44G,SACzW,IAAI8kY,EAAE,CAACkW,UAAU,WAAW,OAAM,CAAG,EAACM,mBAAmB,WAAY,EAACD,oBAAoB,WAAY,EAACH,gBAAgB,WAAY,GAAEh6Q,EAAE1/P,OAAOmH,OAAOkqgB,EAAE,CAAC,EAAE,SAASnob,EAAEnnE,EAAEC,EAAE/W,GAAGjJ,KAAK8K,MAAMiV,EAAE/f,KAAKmmD,QAAQnmC,EAAEhgB,KAAK8oC,KAAKume,EAAErvgB,KAAKitd,QAAQhkd,GAAGq4f,CAAE,CACuI,SAAS7/X,IAAK,CAAwB,SAASuwY,EAAEjyf,EAAEC,EAAE/W,GAAGjJ,KAAK8K,MAAMiV,EAAE/f,KAAKmmD,QAAQnmC,EAAEhgB,KAAK8oC,KAAKume,EAAErvgB,KAAKitd,QAAQhkd,GAAGq4f,CAAE,CADzPp6a,EAAEl/E,UAAU6/gB,iBAAiB,CAAC,EACpQ3gc,EAAEl/E,UAAU0xC,SAAS,SAAS35B,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMxlB,MAAM,yHAAyHyF,KAAKitd,QAAQyqD,gBAAgB13gB,KAAK+f,EAAEC,EAAE,WAAY,EAACknE,EAAEl/E,UAAUmmC,YAAY,SAASpuB,GAAG/f,KAAKitd,QAAQ6qD,mBAAmB93gB,KAAK+f,EAAE,cAAe,EAAe0hH,EAAEz5H,UAAUk/E,EAAEl/E,UAAsF,IAAIs/E,EAAE0qb,EAAEhqgB,UAAU,IAAIy5H,EACrfn6C,EAAEjgD,YAAY2qe,EAAEt0Q,EAAEp2K,EAAEJ,EAAEl/E,WAAWs/E,EAAE0wb,sBAAqB,EAAG,IAAIrE,EAAE9ugB,MAAMC,QAAQ6qgB,EAAE3xgB,OAAOgK,UAAU6X,eAAem3f,EAAE,CAACv9f,QAAQ,MAAMstE,EAAE,CAACzkF,KAAI,EAAG2O,KAAI,EAAGg0hB,QAAO,EAAGC,UAAS,GACtK,SAASv+c,EAAE5mE,EAAEC,EAAE/W,GAAG,IAAIua,EAAE5J,EAAE,CAAC,EAAE5V,EAAE,KAAK/H,EAAE,KAAK,GAAG,MAAM+jB,EAAE,IAAIwD,UAAK,IAASxD,EAAE/O,MAAMhV,EAAE+jB,EAAE/O,UAAK,IAAS+O,EAAE1d,MAAM0B,EAAE,GAAGgc,EAAE1d,KAAK0d,EAAE2vf,EAAElxgB,KAAKuhB,EAAEwD,KAAKujE,EAAElnE,eAAe2D,KAAK5J,EAAE4J,GAAGxD,EAAEwD,IAAI,IAAIO,EAAEjM,UAAUnX,OAAO,EAAE,GAAG,IAAIojB,EAAEnK,EAAE7O,SAAS9B,OAAO,GAAG,EAAE8a,EAAE,CAAC,IAAI,IAAID,EAAEjf,MAAMkf,GAAG7mB,EAAE,EAAEA,EAAE6mB,EAAE7mB,IAAI4mB,EAAE5mB,GAAG4a,UAAU5a,EAAE,GAAG0c,EAAE7O,SAAS+Y,CAAE,IAAG/D,GAAGA,EAAEpH,aAAa,IAAI6K,KAAKO,EAAEhE,EAAEpH,kBAAe,IAASiB,EAAE4J,KAAK5J,EAAE4J,GAAGO,EAAEP,IAAI,MAAM,CAACc,SAASN,EAAE3e,KAAK0a,EAAEzd,IAAI0B,EAAEiN,IAAIhV,EAAE6O,MAAM8O,EAAEm5D,OAAOikc,EAAEv9f,QAAS,CACjV,SAASqsD,EAAE/lD,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEuE,WAAWN,CAAE,CAAmG,IAAIm2f,EAAE,OAAO,SAASnzb,EAAEjnE,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAEzd,IAA7K,SAAgByd,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEne,QAAQ,SAAQ,SAASme,GAAG,OAAOC,EAAED,EAAG,GAAE,CAA8Eje,CAAO,GAAGie,EAAEzd,KAAK0d,EAAE1iB,SAAS,GAAI,CAChX,SAASs+gB,EAAE77f,EAAEC,EAAE/W,EAAEua,EAAE5J,GAAG,IAAI5V,SAAS+b,EAAK,cAAc/b,GAAG,YAAYA,IAAE+b,EAAE,MAAK,IAAI9jB,GAAE,EAAG,GAAG,OAAO8jB,EAAE9jB,GAAE,OAAQ,OAAO+H,GAAG,IAAK,SAAS,IAAK,SAAS/H,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO8jB,EAAEuE,UAAU,KAAKN,EAAE,KAAKC,EAAEhoB,GAAE,GAAI,GAAGA,EAAE,OAAW2d,EAAEA,EAAN3d,EAAE8jB,GAASA,EAAE,KAAKyD,EAAE,IAAIwjE,EAAE/qF,EAAE,GAAGunB,EAAEmwf,EAAE/5f,IAAI3Q,EAAE,GAAG,MAAM8W,IAAI9W,EAAE8W,EAAEne,QAAQu4gB,EAAE,OAAO,KAAKyB,EAAEhigB,EAAEoG,EAAE/W,EAAE,IAAG,SAAS8W,GAAG,OAAOA,CAAE,KAAG,MAAMnG,IAAIksD,EAAElsD,KAAKA,EADnW,SAAWmG,EAAEC,GAAG,MAAM,CAACsE,SAASN,EAAE3e,KAAK0a,EAAE1a,KAAK/C,IAAI0d,EAAE/O,IAAI8O,EAAE9O,IAAInG,MAAMiV,EAAEjV,MAAMioE,OAAOhzD,EAAEgzD,OAAQ,CACwQmnc,CAAEtggB,EAAE3Q,IAAI2Q,EAAEtX,KAAKrG,GAAGA,EAAEqG,MAAMsX,EAAEtX,IAAI,IAAI,GAAGsX,EAAEtX,KAAKV,QAAQu4gB,EAAE,OAAO,KAAKp6f,IAAIC,EAAE5f,KAAKwZ,IAAI,EAAyB,GAAvB3d,EAAE,EAAEunB,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOmwf,EAAE5zf,GAAG,IAAI,IAAIgE,EAAE,EAAEA,EAAEhE,EAAEpf,OAAOojB,IAAI,CAC/e,IAAID,EAAEN,EAAEwjE,EADwehjF,EACrf+b,EAAEgE,GAAeA,GAAG9nB,GAAG2/gB,EAAE53gB,EAAEgc,EAAE/W,EAAE6a,EAAElK,EAAG,MAAK,GAAGkK,EAPsU,SAAW/D,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAE9R,GAAG8R,EAAE9R,IAAI8R,EAAE,eAA0CA,EAAE,IAAK,CAO7b49O,CAAE59O,GAAG,oBAAoB+D,EAAE,IAAI/D,EAAE+D,EAAErlB,KAAKshB,GAAGgE,EAAE,IAAI/f,EAAE+b,EAAE5U,QAAQyjD,MAA6B3yD,GAAG2/gB,EAA1B53gB,EAAEA,EAAE9F,MAA0B8hB,EAAE/W,EAAtB6a,EAAEN,EAAEwjE,EAAEhjF,EAAE+f,KAAkBnK,QAAQ,GAAG,WAAW5V,EAAE,MAAMgc,EAAEvW,OAAOsW,GAAGxlB,MAAM,mDAAmD,oBAAoBylB,EAAE,qBAAqBhiB,OAAOgB,KAAK+gB,GAAGtT,KAAK,MAAM,IAAIuT,GAAG,6EAA6E,OAAO/jB,CAAE,CAC1Z,SAASsrF,EAAExnE,EAAEC,EAAE/W,GAAG,GAAG,MAAM8W,EAAE,OAAOA,EAAE,IAAIyD,EAAE,GAAG5J,EAAE,EAAmD,OAAjDgigB,EAAE77f,EAAEyD,EAAE,GAAG,IAAG,SAASzD,GAAG,OAAOC,EAAEvhB,KAAKwK,EAAE8W,EAAEnG,IAAK,IAAS4J,CAAE,UAAS++f,EAAExigB,GAAG,IAAI,IAAIA,EAAEqlhB,QAAQ,CAAC,IAAIplhB,EAAED,EAAEo8G,SAAQn8G,EAAEA,KAAMliB,MAAK,SAASkiB,GAAM,IAAID,EAAEqlhB,UAAU,IAAIrlhB,EAAEqlhB,UAAQrlhB,EAAEqlhB,QAAQ,EAAErlhB,EAAEo8G,QAAQn8G,EAAE,IAAC,SAASA,GAAM,IAAID,EAAEqlhB,UAAU,IAAIrlhB,EAAEqlhB,UAAQrlhB,EAAEqlhB,QAAQ,EAAErlhB,EAAEo8G,QAAQn8G,EAAE,KAAG,IAAID,EAAEqlhB,UAAUrlhB,EAAEqlhB,QAAQ,EAAErlhB,EAAEo8G,QAAQn8G,EAAG,IAAG,IAAID,EAAEqlhB,QAAQ,OAAOrlhB,EAAEo8G,QAAQ74G,QAAQ,MAAMvD,EAAEo8G,OAAS,CAC7Z,IAAIymZ,EAAE,CAACnpgB,QAAQ,MAAM6hK,EAAE,CAACxqJ,WAAW,MAAMurd,EAAE,CAAC09B,uBAAuB6I,EAAEhd,wBAAwBtqV,EAAE8jW,kBAAkBpI,GAAG9zf,EAAQ8rB,SAAS,CAACjrC,IAAIwjF,EAAE7mF,QAAQ,SAASqf,EAAEC,EAAE/W,GAAGs+E,EAAExnE,GAAE,WAAWC,EAAEjI,MAAM/X,KAAK8X,UAAW,GAAC7O,EAAG,EAAC4C,MAAM,SAASkU,GAAG,IAAIC,EAAE,EAAuB,OAArBunE,EAAExnE,GAAE,WAAWC,GAAI,IAASA,CAAE,EAAC0tD,QAAQ,SAAS3tD,GAAG,OAAOwnE,EAAExnE,GAAE,SAASA,GAAG,OAAOA,CAAE,KAAG,EAAG,EAAC0c,KAAK,SAAS1c,GAAG,IAAI+lD,EAAE/lD,GAAG,MAAMxlB,MAAM,yEAAyE,OAAOwlB,CAAE,GAAEmD,EAAQmP,UAAU60D,EAAEhkE,EAAQzK,SAAS5a,EACneqlB,EAAQkqb,SAAS/ob,EAAEnB,EAAQurB,cAAcuje,EAAE9uf,EAAQmqb,WAAWnpb,EAAEhB,EAAQoqb,SAASvrV,EAAE7+F,EAAQ+2e,mDAAmD5d,EAC9In5d,EAAQisB,aAAa,SAASpvB,EAAEC,EAAE/W,GAAG,GAAG,OAAO8W,QAAG,IAASA,EAAE,MAAMxlB,MAAM,iFAAiFwlB,EAAE,KAAK,IAAIyD,EAAEk6O,EAAE,CAAC,EAAE39O,EAAEjV,OAAO8O,EAAEmG,EAAEzd,IAAI0B,EAAE+b,EAAE9O,IAAIhV,EAAE8jB,EAAEgzD,OAAO,GAAG,MAAM/yD,EAAE,CAAoE,QAAnE,IAASA,EAAE/O,MAAMjN,EAAEgc,EAAE/O,IAAIhV,EAAE+6gB,EAAEv9f,cAAS,IAASuG,EAAE1d,MAAMsX,EAAE,GAAGoG,EAAE1d,KAAQyd,EAAE1a,MAAM0a,EAAE1a,KAAKsT,aAAa,IAAIoL,EAAEhE,EAAE1a,KAAKsT,aAAa,IAAImL,KAAK9D,EAAE2vf,EAAElxgB,KAAKuhB,EAAE8D,KAAKijE,EAAElnE,eAAeiE,KAAKN,EAAEM,QAAG,IAAS9D,EAAE8D,SAAI,IAASC,EAAEA,EAAED,GAAG9D,EAAE8D,GAAI,KAAIA,EAAEhM,UAAUnX,OAAO,EAAE,GAAG,IAAImjB,EAAEN,EAAEzY,SAAS9B,OAAO,GAAG,EAAE6a,EAAE,CAACC,EAAElf,MAAMif,GACrf,IAAI,IAAI5mB,EAAE,EAAEA,EAAE4mB,EAAE5mB,IAAI6mB,EAAE7mB,GAAG4a,UAAU5a,EAAE,GAAGsmB,EAAEzY,SAASgZ,CAAE,OAAM,CAACO,SAASN,EAAE3e,KAAK0a,EAAE1a,KAAK/C,IAAIsX,EAAE3I,IAAIjN,EAAE8G,MAAM0Y,EAAEuvD,OAAO92E,EAAG,EAACinB,EAAQvS,cAAc,SAASoP,GAAqK,OAAlKA,EAAE,CAACuE,SAAS1I,EAAEw5f,cAAcr1f,EAAEslhB,eAAetlhB,EAAEulhB,aAAa,EAAEz0hB,SAAS,KAAK00hB,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQ50hB,SAAS,CAACyT,SAASH,EAAEo8H,SAASxgI,GAAUA,EAAEwlhB,SAASxlhB,CAAE,EAACmD,EAAQ7a,cAAcs+E,EAAEzjE,EAAQwihB,cAAc,SAAS3lhB,GAAG,IAAIC,EAAE2mE,EAAE7pF,KAAK,KAAKijB,GAAY,OAATC,EAAE3a,KAAK0a,EAASC,CAAE,EAACkD,EAAQ81B,UAAU,WAAW,MAAM,CAACv/B,QAAQ,KAAM,EAC/dyJ,EAAQlS,WAAW,SAAS+O,GAAG,MAAM,CAACuE,SAASF,EAAEkqB,OAAOvuB,EAAG,EAACmD,EAAQyihB,eAAe7/d,EAAE5iD,EAAQ0ihB,KAAK,SAAS7lhB,GAAG,MAAM,CAACuE,SAAStW,EAAE0tf,SAAS,CAAC0pC,SAAS,EAAEjpa,QAAQp8G,GAAGwjF,MAAMg/a,EAAG,EAACr/f,EAAQ2ihB,KAAK,SAAS9lhB,EAAEC,GAAG,MAAM,CAACsE,SAASvW,EAAE1I,KAAK0a,EAAE2vB,aAAQ,IAAS1vB,EAAE,KAAKA,EAAG,EAACkD,EAAQ4ihB,gBAAgB,SAAS/lhB,GAAG,IAAIC,EAAEs7J,EAAExqJ,WAAWwqJ,EAAExqJ,WAAW,CAAC,EAAE,IAAI/Q,GAA2B,CAA/B,QAAgBu7J,EAAExqJ,WAAW9Q,CAAE,CAAC,EAACkD,EAAQ6ihB,aAAa,WAAW,MAAMxriB,MAAM,2DAA6D,EAC3c2oB,EAAQk6f,YAAY,SAASr9f,EAAEC,GAAG,OAAO4igB,EAAEnpgB,QAAQ2jgB,YAAYr9f,EAAEC,EAAG,EAACkD,EAAQhS,WAAW,SAAS6O,GAAG,OAAO6igB,EAAEnpgB,QAAQvI,WAAW6O,EAAG,EAACmD,EAAQy6f,cAAc,WAAY,EAACz6f,EAAQ06f,iBAAiB,SAAS79f,GAAG,OAAO6igB,EAAEnpgB,QAAQmkgB,iBAAiB79f,EAAG,EAACmD,EAAQm6f,UAAU,SAASt9f,EAAEC,GAAG,OAAO4igB,EAAEnpgB,QAAQ4jgB,UAAUt9f,EAAEC,EAAG,EAACkD,EAAQsQ,MAAM,WAAW,OAAOovf,EAAEnpgB,QAAQ+Z,OAAQ,EAACtQ,EAAQo6f,oBAAoB,SAASv9f,EAAEC,EAAE/W,GAAG,OAAO25gB,EAAEnpgB,QAAQ6jgB,oBAAoBv9f,EAAEC,EAAE/W,EAAG,EAC9bia,EAAQhK,mBAAmB,SAAS6G,EAAEC,GAAG,OAAO4igB,EAAEnpgB,QAAQP,mBAAmB6G,EAAEC,EAAG,EAACkD,EAAQ7J,gBAAgB,SAAS0G,EAAEC,GAAG,OAAO4igB,EAAEnpgB,QAAQJ,gBAAgB0G,EAAEC,EAAG,EAACkD,EAAQq6f,QAAQ,SAASx9f,EAAEC,GAAG,OAAO4igB,EAAEnpgB,QAAQ8jgB,QAAQx9f,EAAEC,EAAG,EAACkD,EAAQs6f,WAAW,SAASz9f,EAAEC,EAAE/W,GAAG,OAAO25gB,EAAEnpgB,QAAQ+jgB,WAAWz9f,EAAEC,EAAE/W,EAAG,EAACia,EAAQu6f,OAAO,SAAS19f,GAAG,OAAO6igB,EAAEnpgB,QAAQgkgB,OAAO19f,EAAG,EAACmD,EAAQw6f,SAAS,SAAS39f,GAAG,OAAO6igB,EAAEnpgB,QAAQikgB,SAAS39f,EAAG,EAACmD,EAAQ66f,qBAAqB,SAASh+f,EAAEC,EAAE/W,GAAG,OAAO25gB,EAAEnpgB,QAAQskgB,qBAAqBh+f,EAAEC,EAAE/W,EAAG,EAChfia,EAAQ26f,cAAc,WAAW,OAAO+E,EAAEnpgB,QAAQokgB,eAAgB,EAAC36f,EAAQqxD,QAAQ,4CCtBjFhwD,EAAOrB,QAAU,EAAjBqB,wCCAAA,EAAOrB,QAAU,EAAjBqB,uCCMW,SAAST,EAAE/D,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEpf,OAAOof,EAAE3f,KAAK4f,GAAGD,EAAE,KAAK,EAAEnG,GAAG,CAAC,IAAI4J,EAAE5J,EAAE,IAAI,EAAE3Q,EAAE8W,EAAEyD,GAAG,KAAG,EAAEO,EAAE9a,EAAE+W,IAA0B,MAAMD,EAA7BA,EAAEyD,GAAGxD,EAAED,EAAEnG,GAAG3Q,EAAE2Q,EAAE4J,CAAe,CAAC,UAASvnB,EAAE8jB,GAAG,OAAO,IAAIA,EAAEpf,OAAO,KAAKof,EAAE,EAAG,UAAS/b,EAAE+b,GAAG,GAAG,IAAIA,EAAEpf,OAAO,OAAO,KAAK,IAAIqf,EAAED,EAAE,GAAGnG,EAAEmG,EAAE6tC,MAAM,GAAGh0C,IAAIoG,EAAE,CAACD,EAAE,GAAGnG,EAAEmG,EAAE,IAAI,IAAIyD,EAAE,EAAEva,EAAE8W,EAAEpf,OAAOohH,EAAE94G,IAAI,EAAEua,EAAEu+F,GAAG,CAAC,IAAI7kH,EAAE,GAAGsmB,EAAE,GAAG,EAAEk6O,EAAE39O,EAAE7iB,GAAG+mB,EAAE/mB,EAAE,EAAE6Q,EAAEgS,EAAEkE,GAAG,GAAG,EAAEF,EAAE25O,EAAE9jP,GAAGqK,EAAEhb,GAAG,EAAE8a,EAAEhW,EAAE2vP,IAAI39O,EAAEyD,GAAGzV,EAAEgS,EAAEkE,GAAGrK,EAAE4J,EAAES,IAAIlE,EAAEyD,GAAGk6O,EAAE39O,EAAE7iB,GAAG0c,EAAE4J,EAAEtmB,OAAQ,MAAG+mB,EAAEhb,GAAG,EAAE8a,EAAEhW,EAAE6L,IAA0B,MAAMmG,EAA7BA,EAAEyD,GAAGzV,EAAEgS,EAAEkE,GAAGrK,EAAE4J,EAAES,CAAO,CAAQ,CAAC,QAAOjE,CAAE,CAC5c,SAAS+D,EAAEhE,EAAEC,GAAG,IAAIpG,EAAEmG,EAAEimhB,UAAUhmhB,EAAEgmhB,UAAU,OAAO,IAAIpshB,EAAEA,EAAEmG,EAAEhC,GAAGiC,EAAEjC,EAAG,IAAG,kBAAkBkohB,aAAa,oBAAoBA,YAAY1ie,IAAI,CAAC,IAAIv/C,EAAEiihB,YAAY/ihB,EAAQq+e,aAAa,WAAW,OAAOv9e,EAAEu/C,KAAM,CAAC,KAAI,CAAC,IAAI1lE,EAAEiF,KAAKohB,EAAErmB,EAAE0lE,MAAMrgD,EAAQq+e,aAAa,WAAW,OAAO1jgB,EAAE0lE,MAAMr/C,CAAE,CAAC,KAAIG,EAAE,GAAGF,EAAE,GAAGvI,EAAE,EAAEwI,EAAE,KAAKpW,EAAE,EAAEC,GAAE,EAAG0vP,GAAE,EAAG2jQ,GAAE,EAAG+N,EAAE,oBAAoB95e,WAAWA,WAAW,KAAK2xD,EAAE,oBAAoB5xD,aAAaA,aAAa,KAAKmsG,EAAE,qBAAqByka,aAAaA,aAAa,KACnT,SAASl0B,EAAEjyf,GAAG,IAAI,IAAIC,EAAE/jB,EAAEkoB,GAAG,OAAOnE,GAAG,CAAC,GAAG,OAAOA,EAAEziB,SAASyG,EAAEmgB,OAAQ,MAAGnE,EAAE6iE,WAAW9iE,GAAgD,MAA9C/b,EAAEmgB,GAAGnE,EAAEgmhB,UAAUhmhB,EAAEmmhB,eAAerihB,EAAEO,EAAErE,EAAa,CAACA,EAAE/jB,EAAEkoB,EAAG,CAAC,UAASmjE,EAAEvnE,GAAa,GAAVuhf,GAAE,EAAG0Q,EAAEjyf,IAAO49O,EAAE,GAAG,OAAO1hQ,EAAEooB,GAAGs5O,GAAE,EAAGg2Q,EAAEhE,OAAO,CAAC,IAAI3vf,EAAE/jB,EAAEkoB,GAAG,OAAOnE,GAAGg3f,EAAE1vb,EAAEtnE,EAAE6iE,UAAU9iE,EAAG,CAAC,CACta,SAAS4vf,EAAE5vf,EAAEC,GAAG29O,GAAE,EAAG2jQ,IAAIA,GAAE,EAAGp6a,EAAEH,GAAGA,GAAG,GAAG94E,GAAE,EAAG,IAAI2L,EAAE5L,EAAE,IAAS,IAALgkgB,EAAEhyf,GAAOoE,EAAEnoB,EAAEooB,GAAG,OAAOD,MAAMA,EAAE+hhB,eAAenmhB,IAAID,IAAI4mE,MAAM,CAAC,IAAInjE,EAAEY,EAAE7mB,SAAS,GAAG,oBAAoBimB,EAAE,CAACY,EAAE7mB,SAAS,KAAKyQ,EAAEoW,EAAEgihB,cAAc,IAAIn9hB,EAAEua,EAAEY,EAAE+hhB,gBAAgBnmhB,GAAGA,EAAEkD,EAAQq+e,eAAe,oBAAoBt4f,EAAEmb,EAAE7mB,SAAS0L,EAAEmb,IAAInoB,EAAEooB,IAAIrgB,EAAEqgB,GAAG2tf,EAAEhyf,EAAG,MAAKhc,EAAEqgB,GAAGD,EAAEnoB,EAAEooB,EAAG,IAAG,OAAOD,EAAE,IAAI29F,GAAE,MAAO,CAAC,IAAI7kH,EAAEjB,EAAEkoB,GAAG,OAAOjnB,GAAG85gB,EAAE1vb,EAAEpqF,EAAE2lF,UAAU7iE,GAAG+hG,GAAE,CAAG,QAAOA,CAA0B,CAApX,QAAoW39F,EAAE,KAAKpW,EAAE4L,EAAE3L,GAAE,CAAG,CAAC,CAD3a,qBAAqBwP,gBAAW,IAASA,UAAU4ohB,iBAAY,IAAS5ohB,UAAU4ohB,WAAWC,gBAAgB7ohB,UAAU4ohB,WAAWC,eAAexpiB,KAAK2gB,UAAU4ohB,YAC2Q,IACzP9+c,EAD6P2yb,GAAE,EAAGp0c,EAAE,KAAKihB,GAAG,EAAEozb,EAAE,EAAEnzb,GAAG,EACvc,SAASL,IAAI,QAAOzjE,EAAQq+e,eAAev6a,EAAEmzb,EAAQ,UAASyB,IAAI,GAAG,OAAO91c,EAAE,CAAC,IAAI/lD,EAAEmD,EAAQq+e,eAAev6a,EAAEjnE,EAAE,IAAIC,GAAE,EAAG,IAAIA,EAAE8lD,GAAE,EAAG/lD,EAA+B,CAA1C,QAAsBC,EAAEunE,KAAK2yb,GAAE,EAAGp0c,EAAE,KAAM,CAAC,MAAKo0c,GAAE,CAAG,CAAM,GAAG,oBAAoBz4Y,EAAEl6C,EAAE,WAAWk6C,EAAEm6Y,EAAG,OAAM,GAAG,qBAAqB2qB,eAAe,CAAC,IAAIhkB,EAAE,IAAIgkB,eAAe3jB,EAAEL,EAAEikB,MAAMjkB,EAAEkkB,MAAMC,UAAU9qB,EAAEr0b,EAAE,WAAWq7b,EAAE+jB,YAAY,KAAM,CAAC,MAAKp/c,EAAE,WAAW8nb,EAAEuM,EAAE,EAAG,EAAC,SAASjI,EAAE5zf,GAAG+lD,EAAE/lD,EAAEm6f,IAAIA,GAAE,EAAG3yb,IAAK,UAASyvb,EAAEj3f,EAAEC,GAAG+mE,EAAEsob,GAAE,WAAWtvf,EAAEmD,EAAQq+e,eAAgB,GAACvhf,EAAG,CAC7dkD,EAAQi/e,sBAAsB,EAAEj/e,EAAQy+e,2BAA2B,EAAEz+e,EAAQ++e,qBAAqB,EAAE/+e,EAAQ6+e,wBAAwB,EAAE7+e,EAAQ0jhB,mBAAmB,KAAK1jhB,EAAQ2+e,8BAA8B,EAAE3+e,EAAQ+9e,wBAAwB,SAASlhf,GAAGA,EAAExiB,SAAS,IAAK,EAAC2lB,EAAQ2jhB,2BAA2B,WAAWlpS,GAAG1vP,IAAI0vP,GAAE,EAAGg2Q,EAAEhE,GAAI,EAC3Uzsf,EAAQ4jhB,wBAAwB,SAAS/mhB,GAAG,EAAEA,GAAG,IAAIA,EAAE1jB,QAAQgD,MAAM,mHAAmH86gB,EAAE,EAAEp6f,EAAExW,KAAKo/D,MAAM,IAAI5oD,GAAG,CAAE,EAACmD,EAAQu+e,iCAAiC,WAAW,OAAOzzf,CAAE,EAACkV,EAAQ6jhB,8BAA8B,WAAW,OAAO9qiB,EAAEooB,EAAG,EAACnB,EAAQ8jhB,cAAc,SAASjnhB,GAAG,OAAO/R,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIgS,EAAE,EAAE,MAAM,QAAQA,EAAEhS,EAAE,IAAI4L,EAAE5L,EAAEA,EAAEgS,EAAE,IAAI,OAAOD,GAAgB,CAA3B,QAAuB/R,EAAE4L,CAAE,CAAC,EAACsJ,EAAQ+jhB,wBAAwB,WAAY,EAC/f/jhB,EAAQm+e,sBAAsB,WAAY,EAACn+e,EAAQgkhB,yBAAyB,SAASnnhB,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAInG,EAAE5L,EAAEA,EAAE+R,EAAE,IAAI,OAAOC,GAAgB,CAA3B,QAAuBhS,EAAE4L,CAAE,CAAC,EACjMsJ,EAAQ69e,0BAA0B,SAAShhf,EAAEC,EAAEpG,GAAG,IAAI4J,EAAEN,EAAQq+e,eAA8F,OAA/E,kBAAkB3nf,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEoT,QAA6B,EAAEpT,EAAE4J,EAAE5J,EAAE4J,EAAG5J,EAAE4J,EAASzD,GAAG,KAAK,EAAE,IAAI9W,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzM8W,EAAE,CAAChC,GAAGnC,IAAIre,SAASyiB,EAAEomhB,cAAcrmhB,EAAE8iE,UAAUjpE,EAAEushB,eAAvDl9hB,EAAE2Q,EAAE3Q,EAAoE+8hB,WAAW,GAAGpshB,EAAE4J,GAAGzD,EAAEimhB,UAAUpshB,EAAEkK,EAAEK,EAAEpE,GAAG,OAAO9jB,EAAEooB,IAAItE,IAAI9jB,EAAEkoB,KAAKm9e,GAAGp6a,EAAEH,GAAGA,GAAG,GAAGu6a,GAAE,EAAG0V,EAAE1vb,EAAE1tE,EAAE4J,MAAMzD,EAAEimhB,UAAU/8hB,EAAE6a,EAAEO,EAAEtE,GAAG49O,GAAG1vP,IAAI0vP,GAAE,EAAGg2Q,EAAEhE,KAAY5vf,CAAE,EACpemD,EAAQi+e,qBAAqBx6a,EAAEzjE,EAAQikhB,sBAAsB,SAASpnhB,GAAG,IAAIC,EAAEhS,EAAE,OAAO,WAAW,IAAI4L,EAAE5L,EAAEA,EAAEgS,EAAE,IAAI,OAAOD,EAAEhI,MAAM/X,KAAK8X,UAAuB,CAA/C,QAA2C9J,EAAE4L,CAAE,CAAC,CAAC,qCCf9J2K,EAAOrB,QAAU,EAAjBqB,4BCHF,OAGA,SAAUtqB,EAAO0N,GAAW,aAAa,IAA6Cy/hB,EAAU,WAAWC,EAAW,YAAYC,EAAS,SAASC,EAAS,SAASC,EAAM,QAAQC,EAAM,QAAQjpY,EAAK,OAAOw9H,EAAK,OAAO0rQ,EAAO,SAAStkE,EAAQ,UAAUukE,EAAa,eAAeC,EAAQ,UAAUC,EAAO,SAASC,EAAO,SAASC,EAAQ,UAAUC,EAAS,WAAWC,EAAS,WAAiCC,EAAO,SAASC,EAAM,QAAQC,EAAK,OAAOC,EAAW,aAA2DC,EAAQ,UAAUC,EAAO,SAASC,EAAO,SAASC,EAAG,KAAKC,EAAU,YAAYC,EAAS,WAAWC,EAAM,QAAQC,EAAQ,UAAUC,EAAM,QAAQC,EAAK,OAAqBC,EAAO,SAASC,EAAM,QAAQC,EAAS,WAAWC,EAAY,cAAcr3C,EAAO,SAAoPs3C,EAAU,SAASz4e,GAAkB,IAAb,IAAI04e,EAAM,CAAC,EAAU1giB,EAAE,EAAEA,EAAEgoD,EAAIhwD,OAAOgI,IAAK0giB,EAAM14e,EAAIhoD,GAAG+9B,eAAeiqB,EAAIhoD,GAAG,OAAO0giB,CAAM,EAAC1viB,EAAI,SAAS2viB,EAAKC,GAAM,cAAcD,IAAO/B,IAAmD,IAA1CiC,EAASD,GAAMnoiB,QAAQooiB,EAASF,GAAkB,EAACE,EAAS,SAAS9niB,GAAK,OAAOA,EAAI8S,aAAc,EAAwHjS,EAAK,SAASb,EAAI0P,GAAK,UAAU1P,IAAM6liB,EAA0C,OAAhC7liB,EAAIA,EAAIE,QAAQ,SAA53C,WAA05CwP,IAAMi2hB,EAAW3liB,EAAIA,EAAIof,UAAU,EAAlnC,IAAooC,EAAK2ohB,EAAU,SAASvrhB,EAAGync,GAAsC,IAA9B,IAAQ73c,EAAE9J,EAAEnG,EAAEqmB,EAAE4Q,EAAQ7lB,EAApBtG,EAAE,EAA8BA,EAAEg9c,EAAOhld,SAASm0B,GAAQ,CAAC,IAAI41F,EAAMi7V,EAAOh9c,GAAGmC,EAAM66c,EAAOh9c,EAAE,GAAS,IAANmF,EAAE9J,EAAE,EAAQ8J,EAAE48G,EAAM/pH,SAASm0B,GAAa41F,EAAM58G,IAAsC,GAA5BgnB,EAAQ41F,EAAM58G,KAAKkB,KAAKkP,GAAkB,IAAIrgB,EAAE,EAAEA,EAAEiN,EAAMnK,OAAO9C,IAAKoR,EAAM6lB,IAAU9wB,UAAGkgB,EAAEpZ,EAAMjN,MAAiBypiB,GAAUpjhB,EAAEvjB,OAAO,EAAiB,IAAXujB,EAAEvjB,cAAsBujB,EAAE,IAAIkjhB,EAAWpniB,KAAKkkB,EAAE,IAAIA,EAAE,GAAGzlB,KAAKuB,KAAKiP,GAAYjP,KAAKkkB,EAAE,IAAIA,EAAE,GAAuB,IAAXA,EAAEvjB,cAAsBujB,EAAE,KAAKkjhB,GAAaljhB,EAAE,GAAGlV,MAAMkV,EAAE,GAAG9N,KAAkEpW,KAAKkkB,EAAE,IAAIjV,EAAMA,EAAMrN,QAAQsiB,EAAE,GAAGA,EAAE,IAAIvc,EAArG3H,KAAKkkB,EAAE,IAAIjV,EAAMiV,EAAE,GAAGzlB,KAAKuB,KAAKiP,EAAMiV,EAAE,IAAIvc,EAAuF,IAAXuc,EAAEvjB,SAAYX,KAAKkkB,EAAE,IAAIjV,EAAMiV,EAAE,GAAGzlB,KAAKuB,KAAKiP,EAAMrN,QAAQsiB,EAAE,GAAGA,EAAE,KAAKvc,GAAgB3H,KAAKkkB,GAAGjV,GAAYtH,EAAagB,GAAG,CAAE,CAAC,EAAC+giB,EAAU,SAAShoiB,EAAIqC,GAAK,IAAI,IAAI4E,KAAK5E,EAAK,UAAUA,EAAI4E,KAAK2+hB,GAAUvjiB,EAAI4E,GAAGhI,OAAO,GAAG,IAAI,IAAImN,EAAE,EAAEA,EAAE/J,EAAI4E,GAAGhI,OAAOmN,IAAK,GAAGnU,EAAIoK,EAAI4E,GAAGmF,GAAGpM,GAAM,MAAx0E,MAA+0EiH,EAAYhB,EAAUgB,OAAS,GAAGhP,EAAIoK,EAAI4E,GAAGjH,GAAM,MAAl4E,MAAy4EiH,EAAYhB,EAAUgB,EAAG,OAAOjH,CAAI,EAAmHioiB,EAAkB,CAACC,GAAG,OAAO,UAAU,SAAS,SAAS,QAAQ,IAAI,SAASC,GAAG,CAAC,SAAS,UAAUC,MAAM,SAAS,EAAE,SAAS,EAAE,SAAS,IAAI,SAAS,GAAG,CAAC,SAAS,WAAWC,GAAG,OAAW98D,EAAQ,CAACnvd,QAAQ,CAAC,CAAC,gCAAgC,CAACsld,EAAQ,CAAC5kU,EAAK,WAAW,CAAC,+BAA+B,CAAC4kU,EAAQ,CAAC5kU,EAAK,SAAS,CAAC,4BAA4B,mDAAmD,2CAA2C,CAACA,EAAK4kU,GAAS,CAAC,yBAAyB,CAACA,EAAQ,CAAC5kU,EAAKoqY,eAAgB,CAAC,qBAAqB,CAACxlE,EAAQ,CAAC5kU,EAAKoqY,IAAQ,CAAC,uBAAuB,8DAA8D,qDAAqD,kCAAkC,2BAA2B,+LAA+L,kCAAkC,uBAAuB,CAACpqY,EAAK4kU,GAAS,CAAC,qDAAqD,CAACA,EAAQ,CAAC5kU,EAAK,cAAe,CAAC,+BAA+B,gCAAgC,CAAC4kU,EAAQ,CAAC5kU,EAAK,wBAAwB,CAAC,8BAA8B,CAAC4kU,EAAQ,CAAC5kU,EAAK,WAAW,CAAC,yBAAyB,CAAC4kU,EAAQ,CAAC5kU,EAAK,cAAc,CAAC,+CAA+C,CAAC4kU,EAAQ,CAAC5kU,EAAK,OAAO,CAAC,oCAAoC,CAAC4kU,EAAQ,CAAC5kU,EAAK,WAAW,CAAC,2BAA2B,CAAC,CAACA,EAAK,OAAO,qBAAsB4kU,GAAS,CAAC,uBAAuB,CAACA,EAAQ,CAAC5kU,EAAK8pY,kBAAmB,CAAC,qBAAqB,CAACllE,EAAQ,CAAC5kU,EAAKoqY,gBAAiB,CAAC,0BAA0B,CAACxlE,EAAQ,CAAC5kU,EAAK,YAAY,CAAC,sBAAsB,CAAC4kU,EAAQ,CAAC5kU,EAAK,YAAY,CAAC,qBAAqB,CAAC4kU,EAAQ,CAAC5kU,EAAKoqY,gBAAiB,CAAC,2BAA2B,CAACxlE,EAAQ,CAAC5kU,EAAK,iBAAkB,CAAC,sBAAsB,CAAC4kU,EAAQ,CAAC5kU,EAAK8pY,IAAU,CAAC,iCAAiC,CAAC,CAAC9pY,EAAK,gBAAiB,CAAC,uDAAuD,CAAC,CAACA,EAAK,OAAO,cAAe4kU,GAAS,CAAC,+BAA+B,CAAC,CAAC5kU,EAAK,KAAK,KAAK4kU,GAAS,CAAC,gCAAgC,iDAAiD,0DAA0D,CAAC5kU,EAAK4kU,GAAS,CAAC,2BAA2B,eAAe,sBAAsB,CAAC5kU,GAAM,CAAC,+DAA+D,CAAC,CAACA,EAAK0qY,GAAU9lE,GAAS,CAAC,uCAAuC,kCAAkC,4BAA4B,4BAA4B,wCAAwC,CAAC5kU,EAAK4kU,GAAS,CAAC,gCAAgC,CAACA,EAAQ,CAAC5kU,EAAK,QAAQ,CAAC,8CAA8C,CAAC4kU,EAAQ,CAAC5kU,EAAK,WAAW,CAAC,oCAAoC,CAAC4kU,EAAQ,CAAC5kU,EAAKwrY,oBAAqB,CAAC,+BAA+B,CAAC,CAACxrY,EAAKwrY,kBAAmB5mE,GAAS,CAAC,2DAA2D,CAACA,EAAQ,CAAC5kU,EAAK,oBAAqB,CAAC,+DAA+D,CAACA,EAAK4kU,GAAS,CAAC,gDAAgD,CAACA,EAAQ,CAAC5kU,EAAK,kBAAkB,CAAC,sDAAsD,CAAC4kU,EAAQ5kU,GAAM,CAAC,gDAAgD,CAACA,EAAK,CAAC4kU,EAAQsmE,EAAlzG,CAAC,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,MAAM,OAAO,QAAQ,OAAO,QAAQ,OAAO,QAAQ,OAAO,IAAI,OAA+uG,CAAC,8BAA8B,CAAClrY,EAAK4kU,GAAS,CAAC,wCAAwC,CAAC,CAAC5kU,EAAK,YAAY4kU,GAAS,CAAC,uCAAuC,CAACA,EAAQ,CAAC5kU,EAAK8pY,oBAAqB,CAAC,6BAA6B,cAAc,mGAAmG,+FAA+F,wBAAwB,2CAA2C,wHAAwH,uBAAuB,sBAAsB,CAAC9pY,EAAK4kU,GAAS,CAAC,wBAAwB,CAAC5kU,EAAK,CAAC4kU,EAAQ,eAAe,MAAMgrB,IAAI,CAAC,CAAC,iDAAiD,CAAC,CAACu5C,EAAa,UAAU,CAAC,gBAAgB,CAAC,CAACA,EAAa6B,IAAW,CAAC,0BAA0B,CAAC,CAAC7B,EAAa,SAAS,CAAC,oCAAoC,CAAC,CAACA,EAAa,UAAU,CAAC,mCAAmC,CAAC,CAACA,EAAa,UAAU,CAAC,8BAA8B,CAAC,CAACA,EAAa,QAAQ,CAAC,0CAA0C,CAAC,CAACA,EAAa,OAA/4N,GAA45N6B,IAAW,CAAC,kBAAkB,CAAC,CAAC7B,EAAa,UAAU,CAAC,2HAA2H,CAAC,CAACA,EAAa6B,KAAY9yd,OAAO,CAAC,CAAC,mFAAmF,CAAC+wd,EAAM,CAACC,EAAOmB,GAAS,CAAC7sQ,EAAK8rQ,IAAS,CAAC,yDAAyD,uBAAuB,iBAAiB,CAACL,EAAM,CAACC,EAAOmB,GAAS,CAAC7sQ,EAAK6rQ,IAAS,CAAC,4CAA4C,CAACJ,EAAM,CAACC,EAAOS,GAAO,CAACnsQ,EAAK6rQ,IAAS,CAAC,6BAA6B,oCAAoC,kCAAkC,CAACJ,EAAM,CAACC,EAAOS,GAAO,CAACnsQ,EAAK8rQ,IAAS,CAAC,iBAAiB,CAACL,EAAM,CAACC,EAAOS,IAAQ,CAAC,iCAAiC,CAACV,EAAM,CAACC,EAAOoB,GAAO,CAAC9sQ,EAAK6rQ,IAAS,CAAC,+DAA+D,CAACJ,EAAM,CAACC,EAAOc,GAAQ,CAACxsQ,EAAK8rQ,IAAS,CAAC,kCAAkC,sEAAsE,CAACL,EAAM,CAACC,EAAOc,GAAQ,CAACxsQ,EAAK6rQ,IAAS,CAAC,6BAA6B,yBAAyB,uCAAuC,iDAAiD,yGAAyG,CAAC,CAACJ,EAAM,KAAK,KAAK,CAACC,EAAOsB,GAAQ,CAAChtQ,EAAK6rQ,IAAS,CAAC,8CAA8C,CAAC,CAACJ,EAAM,KAAK,KAAK,CAACC,EAAOsB,GAAQ,CAAChtQ,EAAK8rQ,IAAS,CAAC,sBAAsB,mEAAmE,CAACL,EAAM,CAACC,EAAO,QAAQ,CAAC1rQ,EAAK6rQ,IAAS,CAAC,yBAAyB,oCAAoC,CAACJ,EAAM,CAACC,EAAO,QAAQ,CAAC1rQ,EAAK6rQ,IAAS,CAAC,kCAAkC,CAACJ,EAAM,CAACC,EAAO,UAAU,CAAC1rQ,EAAK6rQ,IAAS,CAAC,iFAAiF,4BAA4B,sDAAsD,CAACJ,EAAM,CAACC,EAAOiB,GAAU,CAAC3sQ,EAAK6rQ,IAAS,CAAC,qCAAqC,CAACJ,EAAM,CAACC,EAAOiB,GAAU,CAAC3sQ,EAAK8rQ,IAAS,CAAC,iEAAiE,CAACL,EAAM,CAACC,EAAOe,GAAI,CAACzsQ,EAAK8rQ,IAAS,CAAC,sDAAsD,oDAAoD,wBAAwB,CAACL,EAAM,CAACC,EAAOe,GAAI,CAACzsQ,EAAK6rQ,IAAS,CAAC,oBAAoB,qEAAqE,CAACJ,EAAM,CAACC,EAAO,UAAU,CAAC1rQ,EAAK8rQ,IAAS,CAAC,qCAAqC,0BAA0B,CAAC,CAACL,EAAM,KAAK,KAAK,CAACC,EAAO,SAAS,CAAC1rQ,EAAK6rQ,IAAS,CAAC,gBAAgB,CAACJ,EAAM,CAACC,EAAOa,GAAQ,CAACvsQ,EAAK8rQ,IAAS,CAAC,6CAA6C,CAACL,EAAM,CAACC,EAAOa,GAAQ,CAACvsQ,EAAK6rQ,IAAS,CAAC,0GAA0G,CAACJ,EAAM,CAACC,EAAOqB,GAAM,CAAC/sQ,EAAK6rQ,IAAS,CAAC,oBAAoB,iCAAiC,CAAC,CAACJ,EAAM,iBAAiB,CAACC,EAAOqB,GAAM,CAAC/sQ,EAAK8rQ,IAAS,CAAC,sCAAsC,0CAA0C,CAACL,EAAM,CAACC,EAAO,WAAW,CAAC1rQ,EAAK6rQ,IAAS,CAAC,eAAe,uCAAuC,gCAAgC,CAACJ,EAAM,CAACC,EAAOQ,GAAQ,CAAClsQ,EAAK8rQ,IAAS,CAAC,iDAAiD,CAAC,CAACL,EAAM,QAAQ,iBAAiB,CAACC,EAAOQ,GAAQ,CAAClsQ,EAAK6rQ,IAAS,CAAC,gCAAgC,CAACJ,EAAMC,EAAO,CAAC1rQ,EAAK8rQ,IAAS,CAAC,gCAAgC,kBAAkB,CAACL,EAAM,CAACC,EAAOW,GAAY,CAACrsQ,EAAK6rQ,IAAS,CAAC,qFAAqF,CAACJ,EAAM,CAACC,EAAOU,GAAM,CAACpsQ,EAAK8rQ,IAAS,CAAC,iDAAiD,CAACL,EAAM,CAACC,EAAOU,GAAM,CAACpsQ,EAAK6rQ,IAAS,CAAC,cAAc,CAACJ,EAAM,CAACC,EAAO,OAAO,CAAC1rQ,EAAK8rQ,IAAS,CAAC,2CAA2C,oCAAoC,iFAAiF,CAACJ,EAAO,CAACD,EAAM,KAAK,KAAK,CAACzrQ,EAAK6rQ,IAAS,CAAC,uCAAuC,CAACJ,EAAM,CAACC,EAAO,QAAQ,CAAC1rQ,EAAK8rQ,IAAS,CAAC,8BAA8B,qBAAqB,CAACL,EAAM,CAACC,EAAO,SAAS,CAAC1rQ,EAAK6rQ,IAAS,CAAC,kGAAkG,mBAAmB,iBAAiB,8BAA8B,0BAA0B,WAAW,yBAAyB,CAACH,EAAOD,EAAM,CAACzrQ,EAAK6rQ,IAAS,CAAC,2BAA2B,wBAAwB,uCAAuC,uBAAuB,4BAA4B,iCAAiC,kCAAkC,8BAA8B,gCAAgC,mCAAmC,CAACH,EAAOD,EAAM,CAACzrQ,EAAK8rQ,IAAS,CAAC,kBAAkB,CAACL,EAAM,CAACC,EAAOgB,GAAW,CAAC1sQ,EAAK8rQ,IAAS,CAAC,qCAAqC,CAACL,EAAM,CAACC,EAAO,aAAa,CAAC1rQ,EAAK6rQ,IAAS,CAAC,aAAa,CAACJ,EAAM,CAACC,EAAO,QAAQ,CAAC1rQ,EAAK6rQ,IAAS,CAAC,gBAAgB,CAACJ,EAAM,CAACC,EAAO,WAAW,CAAC1rQ,EAAK6rQ,IAAS,CAAC,iBAAiB,CAACJ,EAAM,CAACC,EAAO,OAAO,CAAC1rQ,EAAK8rQ,IAAS,CAAC,0BAA0B,CAACL,EAAM,CAACC,EAAO,QAAQ,CAAC1rQ,EAAK8rQ,IAAS,CAAC,wBAAwB,CAACL,EAAM,CAACC,EAAO,WAAW,CAAC1rQ,EAAK8rQ,IAAS,CAAC,+CAA+C,CAACL,EAAM,CAACC,EAAO,kBAAkB,CAAC1rQ,EAAK8rQ,IAAS,CAAC,qBAAqB,CAACL,EAAM,CAACC,EAAO,YAAY,CAAC1rQ,EAAK8rQ,IAAS,CAAC,cAAc,CAACL,EAAM,CAACC,EAAO,OAAO,CAAC1rQ,EAAK8rQ,IAAS,CAAC,mBAAmB,CAACL,EAAM,CAACC,EAAO,OAAO,CAAC1rQ,EAAK6rQ,IAAS,CAAC,wBAAwB,CAACJ,EAAM,CAACC,EAAO,SAAS,CAAC1rQ,EAAK6rQ,IAAS,CAAC,mBAAmB,CAACJ,EAAM,CAACC,EAAO,SAAS,CAAC1rQ,EAAK8rQ,IAAS,CAAC,wBAAwB,CAACL,EAAM,CAACC,EAAO,QAAQ,CAAC1rQ,EAAK8rQ,IAAS,CAAC,mBAAmB,sCAAsC,CAAC,CAACJ,EAAO,gBAAgBD,EAAM,CAACzrQ,EAAK8rQ,IAAS,CAAC,sBAAsB,CAACL,EAAM,CAACC,EAAO,YAAY,CAAC1rQ,EAAK8rQ,IAAS,CAAC,8BAA8B,CAACL,EAAM,CAACC,EAAO,YAAY,CAAC1rQ,EAAK8rQ,IAAS,CAAC,oDAAoD,CAAC,CAACJ,EAAO,SAASD,EAAM,CAACzrQ,EAAK6rQ,IAAS,CAAC,2BAA2B,CAAC,CAACH,EAAO,SAASD,EAAM,CAACzrQ,EAAK6rQ,IAAS,CAAC,cAAc,CAACJ,EAAM,CAACC,EAAO,aAAa,CAAC1rQ,EAAK6rQ,IAAS,CAAC,uCAAuC,CAACJ,EAAM,CAACC,EAAO,WAAW,CAAC1rQ,EAAK8rQ,IAAS,CAAC,wBAAwB,CAACL,EAAM,CAACC,EAAO,aAAa,CAAC1rQ,EAAK8rQ,IAAS,CAAC,kBAAkB,CAACL,EAAM,CAACC,EAAO,SAAS,CAAC1rQ,EAAK8rQ,IAAS,CAAC,qBAAqB,CAACL,EAAM,CAACC,EAAO,UAAU,CAAC1rQ,EAAK8rQ,IAAS,CAAC,mBAAmB,CAACJ,EAAOD,EAAM,CAACzrQ,EAAK6rQ,IAAS,CAAC,sBAAsB,CAAC,CAACJ,EAAM,MAAM,KAAK,CAACC,EAAOgB,GAAW,CAAC1sQ,EAAK6rQ,IAAS,CAAC,yDAAyD,CAACJ,EAAM,CAACC,EAAOuB,GAAO,CAACjtQ,EAAK8rQ,IAAS,CAAC,yCAAyC,CAACL,EAAM,CAACC,EAAOuB,GAAO,CAACjtQ,EAAK6rQ,IAAS,CAAC,wBAAwB,CAACH,EAAO,CAAC1rQ,EAAK+rQ,IAAU,CAAC,uBAAuB,CAAC,CAACN,EAAM,IAAI,WAAW,CAACC,EAAOmB,GAAS,CAAC7sQ,EAAK+rQ,IAAU,CAAC,8DAA8D,CAAC,CAACL,EAAOe,GAAI,CAACzsQ,EAAK+rQ,IAAU,CAAC,gBAAgB,CAACL,EAAO,CAACD,EAAMU,YAAa,CAACnsQ,EAAK+rQ,IAAU,CAAC,UAAU,CAAC,CAACN,EAAMuC,cAAe,CAACtC,EAAOa,GAAQ,CAACvsQ,EAAK+rQ,IAAU,CAAC,4BAA4B,CAACN,EAAM,CAACC,EAAOQ,GAAQ,CAAClsQ,EAAK+rQ,IAAU,CAAC,uBAAuB,uBAAuB,CAACN,EAAM,CAACC,EAAOoB,GAAO,CAAC9sQ,EAAK+rQ,IAAU,CAAC,4BAA4B,CAACN,EAAM,CAACC,EAAOqB,GAAM,CAAC/sQ,EAAK+rQ,IAAU,CAAC,qBAAqB,CAACN,EAAM,CAACC,EAAOsB,GAAQ,CAAChtQ,EAAK+rQ,IAAU,CAAC,6BAA6B,CAACL,EAAOD,EAAM,CAACzrQ,EAAK+rQ,IAAU,CAAC,0CAA0C,6DAA6D,CAAC,CAACL,EAAOnliB,GAAM,CAACkliB,EAAMlliB,GAAM,CAACy5R,EAAK+rQ,IAAU,CAAC,mDAAmD,CAAC,CAAC/rQ,EAAK+rQ,IAAU,CAAC,UAAU,8BAA8B,CAACL,EAAOD,EAAM,CAACzrQ,EAAK4rQ,IAAU,CAAC,0BAA0B,CAACH,EAAM,CAACC,EAAO,UAAU,CAAC1rQ,EAAK4rQ,IAAU,CAAC,mCAAmC,CAACH,EAAM,CAACC,EAAOqB,GAAM,CAAC/sQ,EAAK4rQ,IAAU,CAAC,sCAAsC,CAACH,EAAM,CAACC,EAAOgB,GAAW,CAAC1sQ,EAAK4rQ,IAAU,CAAC,kBAAkB,CAACF,EAAOD,EAAM,CAACzrQ,EAAKgsQ,IAAW,CAAC,wCAAwC,CAACP,EAAM,CAACC,EAAOS,GAAO,CAACnsQ,EAAKgsQ,IAAW,CAAC,wBAAwB,CAACP,EAAM,CAACC,EAAOa,GAAQ,CAACvsQ,EAAKgsQ,IAAW,CAAC,6BAA6B,CAACP,EAAM,CAACC,EAAOuB,GAAO,CAACjtQ,EAAKgsQ,IAAW,CAAC,sBAAsB,CAACP,EAAM,CAACC,EAAOwB,GAAU,CAACltQ,EAAKgsQ,IAAW,CAAC,wCAAwC,CAACN,EAAO,CAAC1rQ,EAAKisQ,IAAW,CAAC,cAAc,CAACR,EAAM,CAACC,EAAOQ,GAAQ,CAAClsQ,EAAKisQ,IAAW,CAAC,2DAA2D,CAACR,EAAM,CAACzrQ,EAAK6rQ,IAAS,CAAC,+DAA+D,CAACJ,EAAM,CAACzrQ,EAAK8rQ,IAAS,CAAC,gDAAgD,CAAC,CAAC9rQ,EAAK8rQ,IAAS,CAAC,kEAAkE,CAAC,CAAC9rQ,EAAK6rQ,IAAS,CAAC,kCAAkC,CAACJ,EAAM,CAACC,EAAO,aAAa1je,OAAO,CAAC,CAAC,8BAA8B,CAACo/Z,EAAQ,CAAC5kU,EAAKyrY,aAAc,CAAC,6CAA6C,CAAC7mE,EAAQ,CAAC5kU,EAAK,UAAU,CAAC,uBAAuB,sEAAsE,0BAA0B,yCAAyC,8BAA8B,eAAe,CAACA,EAAK4kU,GAAS,CAAC,iCAAiC,CAACA,EAAQ5kU,IAAOzpD,GAAG,CAAC,CAAC,mCAAmC,CAACypD,EAAK4kU,GAAS,CAAC,4BAA4B,wDAAwD,8CAA8C,CAAC5kU,EAAK,CAAC4kU,EAAQsmE,EAAUC,IAAoB,CAAC,sCAAsC,CAAC,CAACnrY,EAAK,WAAW,CAAC4kU,EAAQsmE,EAAUC,IAAoB,CAAC,sDAAsD,uBAAuB,wBAAwB,CAAC,CAACvmE,EAAQ,KAAK,KAAK,CAAC5kU,EAAK,QAAQ,CAAC,0BAA0B,yCAAyC,CAAC,CAACA,EAAKszV,GAAQ,CAAC1uB,EAAQ,KAAK,MAAM,CAAC,kDAAkD,CAACA,EAAQ5kU,GAAM,CAAC,+EAA+E,8BAA8B,+BAA+B,kBAAkB,CAACA,EAAK4kU,GAAS,CAAC,cAAc,CAACA,EAAQ,CAAC5kU,EAAK6pY,IAAa,CAAC,6DAA6D,CAACjlE,EAAQ,CAAC5kU,EAAK,YAAY,CAAC,mFAAmF,CAAC4kU,EAAQ,CAAC5kU,EAAK8pY,eAAgB,CAAC,kBAAkB,wCAAwC,CAACllE,EAAQ,CAAC5kU,EAAK,UAAU,CAAC,wCAAwC,CAAC4kU,EAAQ,CAAC5kU,EAAK,YAAY,CAAC,qBAAqB,CAAC4kU,EAAQ,CAAC5kU,EAAKwrY,eAAgB,CAAC,oCAAoC,CAAC,CAACxrY,EAAK2qY,GAAa/lE,GAAS,CAAC,qBAAqB,iBAAiB,2BAA2B,mDAAmD,2BAA2B,wCAAwC,yBAAyB,4BAA4B,8SAA8S,2BAA2B,oBAAoB,6EAA6E,kBAAkB,CAAC5kU,EAAK4kU,GAAS,CAAC,yBAAyB,CAAC,CAAC5kU,EAAK,WAAW4kU,GAAS,CAAC,sCAAsC,kCAAkC,mEAAmE,sBAAsB,CAAC5kU,EAAK4kU,KAAe6qB,EAAS,SAATA,EAAkB/ve,EAAGgshB,GAAgE,UAA1ChshB,IAAKophB,IAAU4C,EAAWhshB,EAAGA,EAAGvW,KAAe3H,gBAAgBiuf,GAAW,OAAO,IAAIA,EAAS/ve,EAAGgshB,GAAYC,YAAY,IAAIztR,SAAkBziR,IAASotiB,GAAYptiB,EAAOwjB,UAAUxjB,EAAOwjB,UAAU9V,EAAcyiiB,EAAIlshB,IAAKw+P,GAAYA,EAAW9nO,UAAU8nO,EAAW9nO,UAA5tkB,IAAivkBy1f,EAAM3tR,GAAYA,EAAW4tR,cAAc5tR,EAAW4tR,cAAc3iiB,EAAc4iiB,EAAQL,EAArnjB,SAASj9D,EAAQi9D,GAAY,IAAIM,EAAc,CAAC,EAAE,IAAI,IAAI7hiB,KAAKske,EAAYi9D,EAAWvhiB,IAAIuhiB,EAAWvhiB,GAAGhI,OAAO,IAAI,EAAG6piB,EAAc7hiB,GAAGuhiB,EAAWvhiB,GAAGsH,OAAOg9d,EAAQtke,IAAS6hiB,EAAc7hiB,GAAGske,EAAQtke,GAAI,OAAO6hiB,CAAc,CAAi6iB/kf,CAAOwnb,EAAQi9D,GAAYj9D,EAAYw9D,EAAW/tR,GAAYA,EAAW9nO,WAAWw1f,EAAmlD,OAA/kDpqiB,KAAKmuf,WAAW,WAAW,IAAnviB55a,EAAuviBm2d,EAAS,CAAC,EAAgQ,OAA9PA,EAAQ,KAAO/iiB,EAAU+iiB,EAAQ,QAAU/iiB,EAAU8hiB,EAAUhriB,KAAKisiB,EAASN,EAAIG,EAAQzshB,SAAS4shB,EAAQ,aAA72iBn2d,EAA83iBm2d,EAAQ,WAAr2iBnD,EAAShzd,EAAQ3yE,QAAQ,WAAhxC,IAAkyCS,MAAM,KAAK,GAAGsF,EAA0ziB8iiB,GAAY/tR,GAAYA,EAAWiuR,cAAcjuR,EAAWiuR,MAAMC,SAASxD,IAAWsD,EAAQ,KAAO,SAAeA,CAAS,EAAC1qiB,KAAKquf,OAAO,WAAW,IAAIw8C,EAAK,CAAC,EAAoE,OAAlEA,EAAI,aAAeljiB,EAAU8hiB,EAAUhriB,KAAKosiB,EAAKT,EAAIG,EAAQn8C,KAAYy8C,CAAK,EAAC7qiB,KAAKsuf,UAAU,WAAW,IAAI/4Q,EAAQ,CAAC,EAAuY,OAArYA,EAAO,OAAS5tO,EAAU4tO,EAAO,MAAQ5tO,EAAU4tO,EAAO,KAAO5tO,EAAU8hiB,EAAUhriB,KAAK82O,EAAQ60T,EAAIG,EAAQ7zd,QAAW+zd,IAAal1T,EAAO,MAAQ80T,GAAOA,EAAMS,SAAQv1T,EAAO,KAAOsyT,GAAU4C,GAA4B,aAAhBl1T,EAAO,OAAsBmnC,UAAmBA,EAAWn2J,aAAa8gb,GAAY3qR,EAAWpnM,gBAAgBonM,EAAWpnM,eAAe,IAAGigK,EAAO,MAAQ,OAAOA,EAAO,KAAOuyT,GAAcvyT,CAAQ,EAACv1O,KAAKuuf,UAAU,WAAW,IAAIw8C,EAAQ,CAAC,EAAgG,OAA9FA,EAAO,KAAOpjiB,EAAUojiB,EAAO,QAAUpjiB,EAAU8hiB,EAAUhriB,KAAKssiB,EAAQX,EAAIG,EAAQvme,QAAe+me,CAAQ,EAAC/qiB,KAAKwuf,MAAM,WAAW,IAAIw8C,EAAI,CAAC,EAAiO,OAA/NA,EAAG,KAAOrjiB,EAAUqjiB,EAAG,QAAUrjiB,EAAU8hiB,EAAUhriB,KAAKusiB,EAAIZ,EAAIG,EAAQx1b,IAAO01b,IAAaO,EAAG,MAAQX,GAAuB,WAAhBA,EAAM5wiB,WAAqBuxiB,EAAG,KAAOX,EAAM5wiB,SAASmI,QAAQ,aAAauniB,GAAavniB,QAAQ,SAASkwf,IAAek5C,CAAI,EAAChriB,KAAKmqiB,UAAU,WAAW,MAAM,CAACjshB,GAAGle,KAAKwd,QAAQM,QAAQ9d,KAAKmuf,aAAanqb,OAAOhkE,KAAKuuf,YAAYx5Y,GAAG/0G,KAAKwuf,QAAQ93a,OAAO12E,KAAKsuf,YAAYF,IAAIpuf,KAAKquf,SAAU,EAACruf,KAAKwd,MAAM,WAAW,OAAO4shB,CAAI,EAACpqiB,KAAK2uf,MAAM,SAASzwe,GAAgF,OAA5EkshB,SAAWlshB,IAAKqphB,GAAUrphB,EAAGvd,OAAtmnB,IAA2nnB4B,EAAK2b,EAAhonB,KAAkpnBA,EAAUle,IAAK,EAACA,KAAK2uf,MAAMy7C,GAAYpqiB,IAAK,EAACiuf,EAAS7qB,QAAlioB,SAAqjoB6qB,EAASg9C,QAAQ7B,EAAU,CAAC5qY,EAAK4kU,EAAQokE,IAAQv5C,EAASi9C,IAAI9B,EAAU,CAACzB,IAAe15C,EAASk9C,OAAO/B,EAAU,CAAC3B,EAAMC,EAAO1rQ,EAAK4rQ,EAAQC,EAAOE,EAAQD,EAAOE,EAASC,IAAWh6C,EAASm9C,OAAOn9C,EAASo9C,GAAGjC,EAAU,CAAC5qY,EAAK4kU,WAAoBlgd,IAAUmkhB,GAA2C9ihB,EAAOrB,UAASA,EAAQqB,EAAOrB,QAAQ+qe,GAAS/qe,EAAQ+qe,SAASA,GAA4C1pB,EAAAA,MAAYA,EAAAA,WAAkB,OAAO0pB,CAAnB,2CAA6Ch0f,IAASotiB,IAAYptiB,EAAOg0f,SAASA,GAAU,IAAIl9a,SAAS92E,IAASotiB,IAAaptiB,EAAOqxiB,QAAQrxiB,EAAOsxiB,OAAO,GAAGx6d,IAAIA,EAAE7yD,GAAG,CAAC,IAAIu5D,EAAO,IAAIw2a,EAASl9a,EAAE7yD,GAAGu5D,EAAO0yd,YAAYp5d,EAAE7yD,GAAGtkB,IAAI,WAAW,OAAO69E,EAAOj6D,OAAQ,EAACuzD,EAAE7yD,GAAG/kB,IAAI,SAAS+kB,GAAIu5D,EAAOk3a,MAAMzwe,GAAI,IAAI1a,EAAOi0E,EAAO0yd,YAAY,IAAI,IAAIttiB,KAAQ2G,EAAQutE,EAAE7yD,GAAGrhB,GAAM2G,EAAO3G,EAAO,CAAC,CAAn5pB,EAAs6pB,kBAAT5C,OAAkBA,OAAO+F,+CCFt7pB,WAAiB,4CCAjB,WAAiB,4CCAjB,WAAiB,oBCIjBukB,EAAOrB,QALP,SAAgC/N,GAC9B,OAAOA,GAAOA,EAAIsuhB,WAAatuhB,EAAM,CACnC,QAAWA,EAEf,EACyCoP,EAAOrB,QAAQughB,YAAa,EAAMl/gB,EAAOrB,QAAiB,QAAIqB,EAAOrB,0CCL/F,SAASqte,EAAkB5/b,EAAKv/C,IAClC,MAAPA,GAAeA,EAAMu/C,EAAIhwD,UAAQyQ,EAAMu/C,EAAIhwD,QAC/C,IAAK,IAAIgI,EAAI,EAAG2ue,EAAO,IAAIzye,MAAMuM,GAAMzI,EAAIyI,EAAKzI,IAAK2ue,EAAK3ue,GAAKgoD,EAAIhoD,GACnE,OAAO2ue,CACT,oECJe,SAASwY,EAAuB91f,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI+1f,eAAe,6DAE3B,OAAO/1f,CACT,oECLA,SAASwxiB,EAAmBC,EAAK7siB,EAASY,EAAQqsP,EAAO6/S,EAAQppiB,EAAKmO,GACpE,IACE,IAAIuM,EAAOyuhB,EAAInpiB,GAAKmO,GAChBvS,EAAQ8e,EAAK9e,KAInB,CAHE,MAAOmB,GAEP,YADAG,EAAOH,EAET,CACI2d,EAAK4xC,KACPhwD,EAAQV,GAERS,QAAQC,QAAQV,GAAOJ,KAAK+tP,EAAO6/S,EAEvC,CACe,SAASC,EAAkB5tiB,GACxC,OAAO,WACL,IAAI/D,EAAOgG,KACTpC,EAAOka,UACT,OAAO,IAAInZ,SAAQ,SAAUC,EAASY,GACpC,IAAIisiB,EAAM1tiB,EAAGga,MAAM/d,EAAM4D,GACzB,SAASiuP,EAAM3tP,GACbstiB,EAAmBC,EAAK7siB,EAASY,EAAQqsP,EAAO6/S,EAAQ,OAAQxtiB,EAClE,CACA,SAASwtiB,EAAOtsiB,GACdosiB,EAAmBC,EAAK7siB,EAASY,EAAQqsP,EAAO6/S,EAAQ,QAAStsiB,EACnE,CACAysP,OAAMlkP,EACR,GACF,CACF,oEC7Be,SAASikiB,EAAgB7igB,EAAU8igB,GAChD,KAAM9igB,aAAoB8igB,GACxB,MAAM,IAAInigB,UAAU,oCAExB,4HCFe,SAASoigB,EAAWC,EAAQnuiB,EAAMuuD,GAa/C,OAXE2/e,GADE,SACWxwC,QAAQC,UAAUz+f,OAElB,SAAoBiviB,EAAQnuiB,EAAMuuD,GAC7C,IAAIpsC,EAAI,CAAC,MACTA,EAAE3f,KAAK2X,MAAMgI,EAAGniB,GAChB,IACImrC,EAAW,IADG4sa,SAAS74c,KAAKib,MAAMg0hB,EAAQhshB,IAG9C,OADIosC,IAAO,OAAepjB,EAAUojB,EAAMnkD,WACnC+gC,CACT,EAEK+igB,EAAW/zhB,MAAM,KAAMD,UAChC,mFCfA,SAASw3e,EAAkB33e,EAAQ7M,GACjC,IAAK,IAAInC,EAAI,EAAGA,EAAImC,EAAMnK,OAAQgI,IAAK,CACrC,IAAIspC,EAAannC,EAAMnC,GACvBspC,EAAWxuB,WAAawuB,EAAWxuB,aAAc,EACjDwuB,EAAW7zC,cAAe,EACtB,UAAW6zC,IAAYA,EAAW9zC,UAAW,GACjDH,OAAOC,eAAe0Z,GAAQ,OAAcs6B,EAAW3vC,KAAM2vC,EAC/D,CACF,CACe,SAAS+5f,EAAaH,EAAaI,EAAYC,GAM5D,OALID,GAAY38C,EAAkBu8C,EAAY7jiB,UAAWikiB,GACrDC,GAAa58C,EAAkBu8C,EAAaK,GAChDluiB,OAAOC,eAAe4tiB,EAAa,YAAa,CAC9C1tiB,UAAU,IAEL0tiB,CACT,kFChBe,SAASM,EAA2Bzra,EAAG0ra,GACpD,IAAIr7b,EAAuB,qBAAXntF,QAA0B88G,EAAE98G,OAAO44G,WAAakE,EAAE,cAClE,IAAK3vB,EAAI,CACP,GAAIlsG,MAAMC,QAAQ47H,KAAO3vB,GAAK,OAA2B2vB,KAAO0ra,GAAkB1ra,GAAyB,kBAAbA,EAAE//H,OAAqB,CAC/GowG,IAAI2vB,EAAI3vB,GACZ,IAAIpoG,EAAI,EACJ84H,EAAI,WAAc,EACtB,MAAO,CACLlpG,EAAGkpG,EACHx9G,EAAG,WACD,OAAItb,GAAK+3H,EAAE//H,OAAe,CACxBiuD,MAAM,GAED,CACLA,MAAM,EACN1wD,MAAOwiI,EAAE/3H,KAEb,EACAM,EAAG,SAAWnO,GACZ,MAAMA,CACR,EACAgpB,EAAG29G,EAEP,CACA,MAAM,IAAI/3F,UAAU,wIACtB,CACA,IAEEtqC,EAFEitiB,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACL/zgB,EAAG,WACDw4E,EAAKA,EAAGtyG,KAAKiiI,EACf,EACAz8G,EAAG,WACD,IAAI8X,EAAOg1E,EAAG5lG,OAEd,OADAkhiB,EAAmBtwgB,EAAK6yB,KACjB7yB,CACT,EACA9yB,EAAG,SAAWsjiB,GACZD,GAAS,EACTltiB,EAAMmtiB,CACR,EACAzohB,EAAG,WACD,IACOuohB,GAAoC,MAAhBt7b,EAAW,QAAWA,EAAW,QAG5D,CAFE,QACA,GAAIu7b,EAAQ,MAAMltiB,CACpB,CACF,EAEJ,iHCjDe,SAASotiB,EAA2BxyiB,EAAMyE,GACvD,GAAIA,IAA2B,YAAlB,OAAQA,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIirC,UAAU,4DAEtB,OAAO,EAAA+igB,EAAA,GAAsBzyiB,EAC/B,CCNe,SAAS0yiB,EAAaC,GACnC,IAAIC,GAA4B,EAAAC,EAAA,KAChC,OAAO,WACL,IACErpiB,EADEspiB,GAAQ,EAAA1pf,EAAA,GAAeupf,GAE3B,GAAIC,EAA2B,CAC7B,IAAIG,GAAY,EAAA3pf,EAAA,GAAepjD,MAAMqnC,YACrC7jC,EAAS83f,QAAQC,UAAUuxC,EAAOh1hB,UAAWi1hB,EAC/C,MACEvpiB,EAASspiB,EAAM/0hB,MAAM/X,KAAM8X,WAE7B,OAAO,EAA0B9X,KAAMwD,EACzC,CACF,mFCfe,SAAS+rf,EAAgBp6e,EAAK7S,EAAKpE,GAYhD,OAXAoE,GAAM,OAAcA,MACT6S,EACTnX,OAAOC,eAAekX,EAAK7S,EAAK,CAC9BpE,MAAOA,EACPulB,YAAY,EACZrlB,cAAc,EACdD,UAAU,IAGZgX,EAAI7S,GAAOpE,EAENiX,CACT,qCCde,SAAS4D,IAYtB,OAXAA,EAAW/a,OAAOmH,OAASnH,OAAOmH,OAAOrI,OAAS,SAAU6a,GAC1D,IAAK,IAAIhP,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAAK,CACzC,IAAI4+B,EAASzvB,UAAUnP,GACvB,IAAK,IAAIrG,KAAOilC,EACVvpC,OAAOgK,UAAU6X,eAAephB,KAAK8oC,EAAQjlC,KAC/CqV,EAAOrV,GAAOilC,EAAOjlC,GAG3B,CACA,OAAOqV,CACT,EACOoB,EAAShB,MAAM/X,KAAM8X,UAC9B,kHCZe,SAASk1hB,EAAerngB,EAAQx4B,GAC7C,MAAQnP,OAAOgK,UAAU6X,eAAephB,KAAKknC,EAAQx4B,IAEpC,QADfw4B,GAAS,EAAAyd,EAAA,GAAezd,MAG1B,OAAOA,CACT,CCNe,SAASsngB,IActB,OAZEA,EADqB,qBAAZ3xC,SAA2BA,QAAQ1hgB,IACrC0hgB,QAAQ1hgB,IAAIkD,OAEZ,SAAc6a,EAAQxK,EAAU+/hB,GACrC,IAAI71gB,EAAO,EAAc1f,EAAQxK,GACjC,GAAKkqB,EAAL,CACA,IAAIyzD,EAAO9sF,OAAOouc,yBAAyB/0a,EAAMlqB,GACjD,OAAI29E,EAAKlxF,IACAkxF,EAAKlxF,IAAI6E,KAAKqZ,UAAUnX,OAAS,EAAIgX,EAASu1hB,GAEhDpid,EAAK5sF,KALK,CAMnB,EAEK+uiB,EAAKl1hB,MAAM/X,KAAM8X,UAC1B,qCChBe,SAAS03e,EAAgB9uX,GAItC,OAHA8uX,EAAkBxxf,OAAOihB,eAAiBjhB,OAAOolD,eAAetmD,OAAS,SAAyB4jI,GAChG,OAAOA,EAAEj3F,WAAazrC,OAAOolD,eAAes9E,EAC9C,EACO8uX,EAAgB9uX,EACzB,iHCJe,SAASysa,EAAUC,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI3jgB,UAAU,sDAEtB0jgB,EAASpliB,UAAYhK,OAAOwS,OAAO68hB,GAAcA,EAAWrliB,UAAW,CACrEq/B,YAAa,CACXnpC,MAAOkviB,EACPjviB,UAAU,EACVC,cAAc,KAGlBJ,OAAOC,eAAemviB,EAAU,YAAa,CAC3CjviB,UAAU,IAERkviB,IAAY,OAAeD,EAAUC,EAC3C,mFCfe,SAASzhB,EAAewhB,EAAUC,GAC/CD,EAASpliB,UAAYhK,OAAOwS,OAAO68hB,EAAWrliB,WAC9ColiB,EAASpliB,UAAUq/B,YAAc+lgB,GACjC,OAAeA,EAAUC,EAC3B,qCCLe,SAASC,IACtB,GAAuB,qBAAZhyC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAUmoC,KAAM,OAAO,EACnC,GAAqB,oBAAV7kiB,MAAsB,OAAO,EACxC,IAEE,OADAogI,QAAQj3H,UAAUukD,QAAQ9tD,KAAK68f,QAAQC,UAAUt8X,QAAS,IAAI,WAAa,MACpE,CAGT,CAFE,MAAOh2H,GACP,OAAO,CACT,CACF,kHCTA,SAASgmf,EAAQtpd,EAAQupd,GACvB,IAAIlwf,EAAOhB,OAAOgB,KAAK2mC,GACvB,GAAI3nC,OAAOsza,sBAAuB,CAChC,IAAI69E,EAAUnxf,OAAOsza,sBAAsB3rY,GAC3Cupd,IAAmBC,EAAUA,EAAQ30d,QAAO,SAAU40d,GACpD,OAAOpxf,OAAOouc,yBAAyBzma,EAAQypd,GAAK3re,UACtD,KAAKzkB,EAAKoB,KAAK2X,MAAM/Y,EAAMmwf,EAC7B,CACA,OAAOnwf,CACT,CACe,SAAS2zf,EAAeh7e,GACrC,IAAK,IAAIhP,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAAK,CACzC,IAAI4+B,EAAS,MAAQzvB,UAAUnP,GAAKmP,UAAUnP,GAAK,CAAC,EACpDA,EAAI,EAAIsmf,EAAQjxf,OAAOupC,IAAS,GAAI7mC,SAAQ,SAAU4B,IACpD,OAAeqV,EAAQrV,EAAKilC,EAAOjlC,GACrC,IAAKtE,OAAOwmM,0BAA4BxmM,OAAO00f,iBAAiB/6e,EAAQ3Z,OAAOwmM,0BAA0Bj9J,IAAW0nd,EAAQjxf,OAAOupC,IAAS7mC,SAAQ,SAAU4B,GAC5JtE,OAAOC,eAAe0Z,EAAQrV,EAAKtE,OAAOouc,yBAAyB7ka,EAAQjlC,GAC7E,GACF,CACA,OAAOqV,CACT,qCCrBe,SAAS8P,EAA8B8f,EAAQood,GAC5D,GAAc,MAAVpod,EAAgB,MAAO,CAAC,EAC5B,IAEIjlC,EAAKqG,EAFLgP,EAAS,CAAC,EACVi4e,EAAa5xf,OAAOgB,KAAKuoC,GAE7B,IAAK5+B,EAAI,EAAGA,EAAIinf,EAAWjvf,OAAQgI,IACjCrG,EAAMstf,EAAWjnf,GACbgnf,EAASvuf,QAAQkB,IAAQ,IAC7BqV,EAAOrV,GAAOilC,EAAOjlC,IAEvB,OAAOqV,CACT,kHCVe,SAAS41hB,IAEtBA,EAAsB,WACpB,OAAOrqhB,CACT,EACA,IAAIA,EAAU,CAAC,EACbsqhB,EAAKxviB,OAAOgK,UACZu7C,EAASiqf,EAAG3thB,eACZ5hB,EAAiBD,OAAOC,gBAAkB,SAAUkX,EAAK7S,EAAKwoF,GAC5D31E,EAAI7S,GAAOwoF,EAAK5sF,KAClB,EACAuviB,EAAU,mBAAqB7phB,OAASA,OAAS,CAAC,EAClD8phB,EAAiBD,EAAQjxa,UAAY,aACrCmxa,EAAsBF,EAAQG,eAAiB,kBAC/CC,EAAoBJ,EAAQ1xF,aAAe,gBAC7C,SAASwoB,EAAOpvd,EAAK7S,EAAKpE,GACxB,OAAOF,OAAOC,eAAekX,EAAK7S,EAAK,CACrCpE,MAAOA,EACPulB,YAAY,EACZrlB,cAAc,EACdD,UAAU,IACRgX,EAAI7S,EACV,CACA,IACEiie,EAAO,CAAC,EAAG,GAKb,CAJE,MAAOnle,GACPmle,EAAS,SAAgBpvd,EAAK7S,EAAKpE,GACjC,OAAOiX,EAAI7S,GAAOpE,CACpB,CACF,CACA,SAASo+D,EAAKwxe,EAASC,EAAS/ziB,EAAMg0iB,GACpC,IAAIC,EAAiBF,GAAWA,EAAQ/liB,qBAAqBkmiB,EAAYH,EAAUG,EACjFn7gB,EAAY/0B,OAAOwS,OAAOy9hB,EAAejmiB,WACzCm+C,EAAU,IAAI+2e,EAAQ8Q,GAAe,IACvC,OAAO/viB,EAAe80B,EAAW,UAAW,CAC1C70B,MAAOiwiB,EAAiBL,EAAS9ziB,EAAMmsD,KACrCpzB,CACN,CACA,SAASq7gB,EAASrwiB,EAAIoX,EAAK1E,GACzB,IACE,MAAO,CACLpL,KAAM,SACNoL,IAAK1S,EAAGU,KAAK0W,EAAK1E,GAOtB,CALE,MAAOrR,GACP,MAAO,CACLiG,KAAM,QACNoL,IAAKrR,EAET,CACF,CACA8jB,EAAQo5C,KAAOA,EACf,IAAI+xe,EAAmB,CAAC,EACxB,SAASH,IAAa,CACtB,SAASI,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIC,EAAoB,CAAC,EACzBjqE,EAAOiqE,EAAmBd,GAAgB,WACxC,OAAO1tiB,IACT,IACA,IAAIyuiB,EAAWzwiB,OAAOolD,eACpBsrf,EAA0BD,GAAYA,EAASA,EAAS94gB,EAAO,MACjE+4gB,GAA2BA,IAA4BlB,GAAMjqf,EAAO9kD,KAAKiwiB,EAAyBhB,KAAoBc,EAAoBE,GAC1I,IAAIC,EAAKJ,EAA2BvmiB,UAAYkmiB,EAAUlmiB,UAAYhK,OAAOwS,OAAOg+hB,GACpF,SAASI,EAAsB5miB,GAC7B,CAAC,OAAQ,QAAS,UAAUtH,SAAQ,SAAU0E,GAC5Cm/d,EAAOv8d,EAAW5C,GAAQ,SAAUqL,GAClC,OAAOzQ,KAAK6uiB,QAAQzpiB,EAAQqL,EAC9B,GACF,GACF,CACA,SAASq+hB,EAAc/7gB,EAAWg8gB,GAChC,SAASvwL,EAAOp5W,EAAQqL,EAAK7R,EAASY,GACpC,IAAIoyF,EAASw8c,EAASr7gB,EAAU3tB,GAAS2tB,EAAWtiB,GACpD,GAAI,UAAYmhF,EAAOvsF,KAAM,CAC3B,IAAI7B,EAASouF,EAAOnhF,IAClBvS,EAAQsF,EAAOtF,MACjB,OAAOA,GAAS,WAAY,OAAQA,IAAUqlD,EAAO9kD,KAAKP,EAAO,WAAa6wiB,EAAYnwiB,QAAQV,EAAM8wiB,SAASlxiB,MAAK,SAAUI,GAC9HsgX,EAAO,OAAQtgX,EAAOU,EAASY,EACjC,IAAG,SAAUJ,GACXo/W,EAAO,QAASp/W,EAAKR,EAASY,EAChC,IAAKuviB,EAAYnwiB,QAAQV,GAAOJ,MAAK,SAAUmxiB,GAC7CzriB,EAAOtF,MAAQ+wiB,EAAWrwiB,EAAQ4E,EACpC,IAAG,SAAUnE,GACX,OAAOm/W,EAAO,QAASn/W,EAAOT,EAASY,EACzC,GACF,CACAA,EAAOoyF,EAAOnhF,IAChB,CACA,IAAIy+hB,EACJjxiB,EAAe+B,KAAM,UAAW,CAC9B9B,MAAO,SAAekH,EAAQqL,GAC5B,SAAS0+hB,IACP,OAAO,IAAIJ,GAAY,SAAUnwiB,EAASY,GACxCg/W,EAAOp5W,EAAQqL,EAAK7R,EAASY,EAC/B,GACF,CACA,OAAO0viB,EAAkBA,EAAkBA,EAAgBpxiB,KAAKqxiB,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAAShB,EAAiBL,EAAS9ziB,EAAMmsD,GACvC,IAAIzd,EAAQ,iBACZ,OAAO,SAAUtjC,EAAQqL,GACvB,GAAI,cAAgBi4B,EAAO,MAAM,IAAInuC,MAAM,gCAC3C,GAAI,cAAgBmuC,EAAO,CACzB,GAAI,UAAYtjC,EAAQ,MAAMqL,EAC9B,OAAO2+hB,GACT,CACA,IAAKjpf,EAAQ/gD,OAASA,EAAQ+gD,EAAQ11C,IAAMA,IAAO,CACjD,IAAI4+hB,EAAWlpf,EAAQkpf,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUlpf,GACnD,GAAImpf,EAAgB,CAClB,GAAIA,IAAmBjB,EAAkB,SACzC,OAAOiB,CACT,CACF,CACA,GAAI,SAAWnpf,EAAQ/gD,OAAQ+gD,EAAQqpf,KAAOrpf,EAAQspf,MAAQtpf,EAAQ11C,SAAS,GAAI,UAAY01C,EAAQ/gD,OAAQ,CAC7G,GAAI,mBAAqBsjC,EAAO,MAAMA,EAAQ,YAAayd,EAAQ11C,IACnE01C,EAAQupf,kBAAkBvpf,EAAQ11C,IACpC,KAAO,WAAa01C,EAAQ/gD,QAAU+gD,EAAQwpf,OAAO,SAAUxpf,EAAQ11C,KACvEi4B,EAAQ,YACR,IAAIkpD,EAASw8c,EAASN,EAAS9ziB,EAAMmsD,GACrC,GAAI,WAAayrC,EAAOvsF,KAAM,CAC5B,GAAIqjC,EAAQyd,EAAQyI,KAAO,YAAc,iBAAkBgjC,EAAOnhF,MAAQ49hB,EAAkB,SAC5F,MAAO,CACLnwiB,MAAO0zF,EAAOnhF,IACdm+C,KAAMzI,EAAQyI,KAElB,CACA,UAAYgjC,EAAOvsF,OAASqjC,EAAQ,YAAayd,EAAQ/gD,OAAS,QAAS+gD,EAAQ11C,IAAMmhF,EAAOnhF,IAClG,CACF,CACF,CACA,SAAS8+hB,EAAoBF,EAAUlpf,GACrC,IAAIlE,EAAakE,EAAQ/gD,OACvBA,EAASiqiB,EAAS7ya,SAASv6E,GAC7B,QAAIt6C,IAAcvC,EAAQ,OAAO+gD,EAAQkpf,SAAW,KAAM,UAAYptf,GAAcotf,EAAS7ya,SAAiB,SAAMr2E,EAAQ/gD,OAAS,SAAU+gD,EAAQ11C,SAAM9I,EAAW4niB,EAAoBF,EAAUlpf,GAAU,UAAYA,EAAQ/gD,SAAW,WAAa68C,IAAekE,EAAQ/gD,OAAS,QAAS+gD,EAAQ11C,IAAM,IAAIi5B,UAAU,oCAAsCuY,EAAa,aAAcosf,EAClY,IAAIz8c,EAASw8c,EAAShpiB,EAAQiqiB,EAAS7ya,SAAUr2E,EAAQ11C,KACzD,GAAI,UAAYmhF,EAAOvsF,KAAM,OAAO8gD,EAAQ/gD,OAAS,QAAS+gD,EAAQ11C,IAAMmhF,EAAOnhF,IAAK01C,EAAQkpf,SAAW,KAAMhB,EACjH,IAAIrxhB,EAAO40E,EAAOnhF,IAClB,OAAOuM,EAAOA,EAAK4xC,MAAQzI,EAAQkpf,EAASO,YAAc5yhB,EAAK9e,MAAOioD,EAAQh7C,KAAOkkiB,EAASQ,QAAS,WAAa1pf,EAAQ/gD,SAAW+gD,EAAQ/gD,OAAS,OAAQ+gD,EAAQ11C,SAAM9I,GAAYw+C,EAAQkpf,SAAW,KAAMhB,GAAoBrxhB,GAAQmpC,EAAQ/gD,OAAS,QAAS+gD,EAAQ11C,IAAM,IAAIi5B,UAAU,oCAAqCyc,EAAQkpf,SAAW,KAAMhB,EACrW,CACA,SAASyB,EAAaC,GACpB,IAAIpriB,EAAQ,CACVqriB,OAAQD,EAAK,IAEf,KAAKA,IAASpriB,EAAMsriB,SAAWF,EAAK,IAAK,KAAKA,IAASpriB,EAAMuriB,WAAaH,EAAK,GAAIpriB,EAAMwriB,SAAWJ,EAAK,IAAK/viB,KAAKowiB,WAAWhwiB,KAAKuE,EACrI,CACA,SAAS0riB,EAAc1riB,GACrB,IAAIitF,EAASjtF,EAAM2riB,YAAc,CAAC,EAClC1+c,EAAOvsF,KAAO,gBAAiBusF,EAAOnhF,IAAK9L,EAAM2riB,WAAa1+c,CAChE,CACA,SAASsrc,EAAQ8Q,GACfhuiB,KAAKowiB,WAAa,CAAC,CACjBJ,OAAQ,SACNhC,EAAYttiB,QAAQoviB,EAAc9viB,MAAOA,KAAKwmC,OAAM,EAC1D,CACA,SAAS7Q,EAAO45b,GACd,GAAIA,EAAU,CACZ,IAAIghF,EAAiBhhF,EAASm+E,GAC9B,GAAI6C,EAAgB,OAAOA,EAAe9xiB,KAAK8wd,GAC/C,GAAI,mBAAqBA,EAASpkd,KAAM,OAAOokd,EAC/C,IAAK5zZ,MAAM4zZ,EAAS5ud,QAAS,CAC3B,IAAIgI,GAAK,EACPwC,EAAO,SAASA,IACd,OAASxC,EAAI4md,EAAS5ud,QAAS,GAAI4iD,EAAO9kD,KAAK8wd,EAAU5md,GAAI,OAAOwC,EAAKjN,MAAQqxd,EAAS5md,GAAIwC,EAAKyjD,MAAO,EAAIzjD,EAC9G,OAAOA,EAAKjN,WAAQyJ,EAAWwD,EAAKyjD,MAAO,EAAIzjD,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMikiB,EAEV,CACA,SAASA,IACP,MAAO,CACLlxiB,WAAOyJ,EACPinD,MAAM,EAEV,CACA,OAAO0/e,EAAkBtmiB,UAAYumiB,EAA4BtwiB,EAAe0wiB,EAAI,cAAe,CACjGzwiB,MAAOqwiB,EACPnwiB,cAAc,IACZH,EAAeswiB,EAA4B,cAAe,CAC5DrwiB,MAAOowiB,EACPlwiB,cAAc,IACZkwiB,EAAkB51hB,YAAc6rd,EAAOgqE,EAA4BV,EAAmB,qBAAsB3qhB,EAAQsthB,oBAAsB,SAAUC,GACtJ,IAAI1tf,EAAO,mBAAqB0tf,GAAUA,EAAOppgB,YACjD,QAAS0b,IAASA,IAASurf,GAAqB,uBAAyBvrf,EAAKrqC,aAAeqqC,EAAK3pD,MACpG,EAAG8pB,EAAQutO,KAAO,SAAUggT,GAC1B,OAAOzyiB,OAAOihB,eAAiBjhB,OAAOihB,eAAewxhB,EAAQlC,IAA+BkC,EAAOhngB,UAAY8kgB,EAA4BhqE,EAAOksE,EAAQ5C,EAAmB,sBAAuB4C,EAAOzoiB,UAAYhK,OAAOwS,OAAOm+hB,GAAK8B,CAC5O,EAAGvthB,EAAQwthB,MAAQ,SAAUjgiB,GAC3B,MAAO,CACLu+hB,QAASv+hB,EAEb,EAAGm+hB,EAAsBE,EAAc9miB,WAAYu8d,EAAOuqE,EAAc9miB,UAAW2liB,GAAqB,WACtG,OAAO3tiB,IACT,IAAIkjB,EAAQ4rhB,cAAgBA,EAAe5rhB,EAAQ65E,MAAQ,SAAU+wc,EAASC,EAAS/ziB,EAAMg0iB,EAAae,QACxG,IAAWA,IAAgBA,EAAcpwiB,SACzC,IAAIqyF,EAAO,IAAI89c,EAAcxye,EAAKwxe,EAASC,EAAS/ziB,EAAMg0iB,GAAce,GACxE,OAAO7rhB,EAAQsthB,oBAAoBzC,GAAW/8c,EAAOA,EAAK7lF,OAAOrN,MAAK,SAAU0F,GAC9E,OAAOA,EAAOorD,KAAOprD,EAAOtF,MAAQ8yF,EAAK7lF,MAC3C,GACF,EAAGyjiB,EAAsBD,GAAKpqE,EAAOoqE,EAAId,EAAmB,aAActpE,EAAOoqE,EAAIjB,GAAgB,WACnG,OAAO1tiB,IACT,IAAIuke,EAAOoqE,EAAI,YAAY,WACzB,MAAO,oBACT,IAAIzrhB,EAAQlkB,KAAO,SAAUy5B,GAC3B,IAAIkN,EAAS3nC,OAAOy6B,GAClBz5B,EAAO,GACT,IAAK,IAAIsD,KAAOqjC,EAAQ3mC,EAAKoB,KAAKkC,GAClC,OAAOtD,EAAK87D,UAAW,SAAS3vD,IAC9B,KAAOnM,EAAK2B,QAAS,CACnB,IAAI2B,EAAMtD,EAAK4uD,MACf,GAAItrD,KAAOqjC,EAAQ,OAAOx6B,EAAKjN,MAAQoE,EAAK6I,EAAKyjD,MAAO,EAAIzjD,CAC9D,CACA,OAAOA,EAAKyjD,MAAO,EAAIzjD,CACzB,CACF,EAAG+X,EAAQyS,OAASA,EAAQungB,EAAQl1hB,UAAY,CAC9Cq/B,YAAa61f,EACb12f,MAAO,SAAemqgB,GACpB,GAAI3wiB,KAAKkL,KAAO,EAAGlL,KAAKmL,KAAO,EAAGnL,KAAKwviB,KAAOxviB,KAAKyviB,WAAQ9niB,EAAW3H,KAAK4uD,MAAO,EAAI5uD,KAAKqviB,SAAW,KAAMrviB,KAAKoF,OAAS,OAAQpF,KAAKyQ,SAAM9I,EAAW3H,KAAKowiB,WAAW1viB,QAAQ2viB,IAAiBM,EAAe,IAAK,IAAIv3iB,KAAQ4G,KAAM,MAAQ5G,EAAK6iB,OAAO,IAAMsnC,EAAO9kD,KAAKuB,KAAM5G,KAAUuiE,OAAOviE,EAAK2L,MAAM,MAAQ/E,KAAK5G,QAAQuO,EACtU,EACA8qL,KAAM,WACJzyL,KAAK4uD,MAAO,EACZ,IAAIgif,EAAa5wiB,KAAKowiB,WAAW,GAAGE,WACpC,GAAI,UAAYM,EAAWvriB,KAAM,MAAMuriB,EAAWngiB,IAClD,OAAOzQ,KAAK6wiB,IACd,EACAnB,kBAAmB,SAA2B/8a,GAC5C,GAAI3yH,KAAK4uD,KAAM,MAAM+jE,EACrB,IAAIxsE,EAAUnmD,KACd,SAASsB,EAAOwviB,EAAKC,GACnB,OAAOn/c,EAAOvsF,KAAO,QAASusF,EAAOnhF,IAAMkiH,EAAWxsE,EAAQh7C,KAAO2liB,EAAKC,IAAW5qf,EAAQ/gD,OAAS,OAAQ+gD,EAAQ11C,SAAM9I,KAAcopiB,CAC5I,CACA,IAAK,IAAIpoiB,EAAI3I,KAAKowiB,WAAWzviB,OAAS,EAAGgI,GAAK,IAAKA,EAAG,CACpD,IAAIhE,EAAQ3E,KAAKowiB,WAAWzniB,GAC1BipF,EAASjtF,EAAM2riB,WACjB,GAAI,SAAW3riB,EAAMqriB,OAAQ,OAAO1uiB,EAAO,OAC3C,GAAIqD,EAAMqriB,QAAUhwiB,KAAKkL,KAAM,CAC7B,IAAI8liB,EAAWztf,EAAO9kD,KAAKkG,EAAO,YAChCssiB,EAAa1tf,EAAO9kD,KAAKkG,EAAO,cAClC,GAAIqsiB,GAAYC,EAAY,CAC1B,GAAIjxiB,KAAKkL,KAAOvG,EAAMsriB,SAAU,OAAO3uiB,EAAOqD,EAAMsriB,UAAU,GAC9D,GAAIjwiB,KAAKkL,KAAOvG,EAAMuriB,WAAY,OAAO5uiB,EAAOqD,EAAMuriB,WACxD,MAAO,GAAIc,GACT,GAAIhxiB,KAAKkL,KAAOvG,EAAMsriB,SAAU,OAAO3uiB,EAAOqD,EAAMsriB,UAAU,OACzD,CACL,IAAKgB,EAAY,MAAM,IAAI12iB,MAAM,0CACjC,GAAIyF,KAAKkL,KAAOvG,EAAMuriB,WAAY,OAAO5uiB,EAAOqD,EAAMuriB,WACxD,CACF,CACF,CACF,EACAP,OAAQ,SAAgBtqiB,EAAMoL,GAC5B,IAAK,IAAI9H,EAAI3I,KAAKowiB,WAAWzviB,OAAS,EAAGgI,GAAK,IAAKA,EAAG,CACpD,IAAIhE,EAAQ3E,KAAKowiB,WAAWzniB,GAC5B,GAAIhE,EAAMqriB,QAAUhwiB,KAAKkL,MAAQq4C,EAAO9kD,KAAKkG,EAAO,eAAiB3E,KAAKkL,KAAOvG,EAAMuriB,WAAY,CACjG,IAAIgB,EAAevsiB,EACnB,KACF,CACF,CACAusiB,IAAiB,UAAY7riB,GAAQ,aAAeA,IAAS6riB,EAAalB,QAAUv/hB,GAAOA,GAAOygiB,EAAahB,aAAegB,EAAe,MAC7I,IAAIt/c,EAASs/c,EAAeA,EAAaZ,WAAa,CAAC,EACvD,OAAO1+c,EAAOvsF,KAAOA,EAAMusF,EAAOnhF,IAAMA,EAAKygiB,GAAgBlxiB,KAAKoF,OAAS,OAAQpF,KAAKmL,KAAO+liB,EAAahB,WAAY7B,GAAoBruiB,KAAK2hB,SAASiwE,EAC5J,EACAjwE,SAAU,SAAkBiwE,EAAQu+c,GAClC,GAAI,UAAYv+c,EAAOvsF,KAAM,MAAMusF,EAAOnhF,IAC1C,MAAO,UAAYmhF,EAAOvsF,MAAQ,aAAeusF,EAAOvsF,KAAOrF,KAAKmL,KAAOymF,EAAOnhF,IAAM,WAAamhF,EAAOvsF,MAAQrF,KAAK6wiB,KAAO7wiB,KAAKyQ,IAAMmhF,EAAOnhF,IAAKzQ,KAAKoF,OAAS,SAAUpF,KAAKmL,KAAO,OAAS,WAAaymF,EAAOvsF,MAAQ8qiB,IAAanwiB,KAAKmL,KAAOgliB,GAAW9B,CACtQ,EACA/9V,OAAQ,SAAgB4/V,GACtB,IAAK,IAAIvniB,EAAI3I,KAAKowiB,WAAWzviB,OAAS,EAAGgI,GAAK,IAAKA,EAAG,CACpD,IAAIhE,EAAQ3E,KAAKowiB,WAAWzniB,GAC5B,GAAIhE,EAAMuriB,aAAeA,EAAY,OAAOlwiB,KAAK2hB,SAAShd,EAAM2riB,WAAY3riB,EAAMwriB,UAAWE,EAAc1riB,GAAQ0piB,CACrH,CACF,EACA,MAAS,SAAgB2B,GACvB,IAAK,IAAIrniB,EAAI3I,KAAKowiB,WAAWzviB,OAAS,EAAGgI,GAAK,IAAKA,EAAG,CACpD,IAAIhE,EAAQ3E,KAAKowiB,WAAWzniB,GAC5B,GAAIhE,EAAMqriB,SAAWA,EAAQ,CAC3B,IAAIp+c,EAASjtF,EAAM2riB,WACnB,GAAI,UAAY1+c,EAAOvsF,KAAM,CAC3B,IAAI8riB,EAASv/c,EAAOnhF,IACpB4/hB,EAAc1riB,EAChB,CACA,OAAOwsiB,CACT,CACF,CACA,MAAM,IAAI52iB,MAAM,wBAClB,EACA62iB,cAAe,SAAuB7hF,EAAUqgF,EAAYC,GAC1D,OAAO7viB,KAAKqviB,SAAW,CACrB7ya,SAAU7mG,EAAO45b,GACjBqgF,WAAYA,EACZC,QAASA,GACR,SAAW7viB,KAAKoF,SAAWpF,KAAKyQ,SAAM9I,GAAY0miB,CACvD,GACCnrhB,CACL,qCC9Se,SAASuse,EAAgB/uX,EAAG7iI,GAKzC,OAJA4xf,EAAkBzxf,OAAOihB,eAAiBjhB,OAAOihB,eAAeniB,OAAS,SAAyB4jI,EAAG7iI,GAEnG,OADA6iI,EAAEj3F,UAAY5rC,EACP6iI,CACT,EACO+uX,EAAgB/uX,EAAG7iI,EAC5B,gHCFe,SAASmyf,EAAer/b,EAAKhoD,GAC1C,OCLa,SAAyBgoD,GACtC,GAAI9rD,MAAMC,QAAQ6rD,GAAM,OAAOA,CACjC,CDGS,CAAeA,IELT,SAA+BA,EAAKhoD,GACjD,IAAI4M,EAAK,MAAQo7C,EAAM,KAAO,oBAAsB/sC,QAAU+sC,EAAI/sC,OAAO44G,WAAa7rE,EAAI,cAC1F,GAAI,MAAQp7C,EAAI,CACd,IAAI26e,EACFp1f,EACAu2iB,EACAC,EACAnhD,EAAO,GACPC,GAAK,EACLv1f,GAAK,EACP,IACE,GAAIw2iB,GAAM97hB,EAAKA,EAAG9W,KAAKkyD,IAAMxlD,KAAM,IAAMxC,EAAG,CAC1C,GAAI3K,OAAOuX,KAAQA,EAAI,OACvB66e,GAAK,CACP,MAAO,OAASA,GAAMF,EAAKmhD,EAAG5yiB,KAAK8W,IAAKq5C,QAAUuhc,EAAK/vf,KAAK8vf,EAAGhyf,OAAQiyf,EAAKxvf,SAAWgI,GAAIynf,GAAK,GASlG,CARE,MAAOhxf,GACPvE,GAAK,EAAIC,EAAKsE,CAChB,CAAE,QACA,IACE,IAAKgxf,GAAM,MAAQ76e,EAAW,SAAM+7hB,EAAK/7hB,EAAW,SAAKvX,OAAOsziB,KAAQA,GAAK,MAG/E,CAFE,QACA,GAAIz2iB,EAAI,MAAMC,CAChB,CACF,CACA,OAAOq1f,CACT,CACF,CFrBgC,CAAqBx/b,EAAKhoD,KAAM,EAAA4oiB,EAAA,GAA2B5gf,EAAKhoD,IGLjF,WACb,MAAM,IAAI+gC,UAAU,4IACtB,CHGsG,EACtG,+FIFe,SAAS8ngB,EAAmB7gf,GACzC,OCJa,SAA4BA,GACzC,GAAI9rD,MAAMC,QAAQ6rD,GAAM,OAAO,EAAA8gf,EAAA,GAAiB9gf,EAClD,CDES,CAAkBA,IELZ,SAA0BqgC,GACvC,GAAsB,qBAAXptE,QAAmD,MAAzBotE,EAAKptE,OAAO44G,WAA2C,MAAtBxrC,EAAK,cAAuB,OAAOnsF,MAAM2E,KAAKwnF,EACtH,CFGmC,CAAgBrgC,KAAQ,EAAA4gf,EAAA,GAA2B5gf,IGLvE,WACb,MAAM,IAAIjnB,UAAU,uIACtB,CHG8F,EAC9F,mFIJe,SAASgogB,EAAejhiB,GACrC,IAAInO,ECFS,SAAsBkY,EAAO8jC,GAC1C,GAAuB,YAAnB,OAAQ9jC,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIm3hB,EAAOn3hB,EAAMoJ,OAAOguhB,aACxB,QAAajqiB,IAATgqiB,EAAoB,CACtB,IAAIv1a,EAAMu1a,EAAKlziB,KAAK+b,EAAO8jC,GAAQ,WACnC,GAAqB,YAAjB,OAAQ89E,GAAmB,OAAOA,EACtC,MAAM,IAAI1yF,UAAU,+CACtB,CACA,OAAiB,WAAT4U,EAAoB70C,OAASivB,QAAQle,EAC/C,CDPY,CAAY/J,EAAK,UAC3B,MAAwB,YAAjB,OAAQnO,GAAoBA,EAAMmH,OAAOnH,EAClD,qCELe,SAAS+sf,EAAQl6e,GAG9B,OAAOk6e,EAAU,mBAAqBzre,QAAU,iBAAmBA,OAAO44G,SAAW,SAAUrnH,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqByO,QAAUzO,EAAIkyB,cAAgBzjB,QAAUzO,IAAQyO,OAAO5b,UAAY,gBAAkBmN,CAC1H,EAAGk6e,EAAQl6e,EACb,gHCPe,SAASq7e,EAA4B9vX,EAAG4vX,GACrD,GAAK5vX,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,OAAiBA,EAAG4vX,GACtD,IAAIrse,EAAIjmB,OAAOgK,UAAU1K,SAASmB,KAAKiiI,GAAG37H,MAAM,GAAI,GAEpD,MADU,WAANkf,GAAkBy8G,EAAEr5F,cAAapjB,EAAIy8G,EAAEr5F,YAAYjuC,MAC7C,QAAN6qB,GAAqB,QAANA,EAAoBpf,MAAM2E,KAAKk3H,GACxC,cAANz8G,GAAqB,2CAA2C7N,KAAK6N,IAAW,OAAiBy8G,EAAG4vX,QAAxG,CALc,CAMhB,2GCJe,SAASuhD,EAAiB1lf,GACvC,IAAI8/E,EAAwB,oBAAR/yI,IAAqB,IAAIA,SAAQyO,EAuBrD,OAtBAkqiB,EAAmB,SAA0B1lf,GAC3C,GAAc,OAAVA,ICPkCpuD,EDOEouD,GCNsB,IAAzDwpZ,SAASr4c,SAASmB,KAAKV,GAAIqD,QAAQ,kBDMQ,OAAO+qD,ECP5C,IAA2BpuD,EDQtC,GAAqB,oBAAVouD,EACT,MAAM,IAAIziB,UAAU,sDAEtB,GAAsB,qBAAXuiG,EAAwB,CACjC,GAAIA,EAAOtyI,IAAIwyD,GAAQ,OAAO8/E,EAAOryI,IAAIuyD,GACzC8/E,EAAO9yI,IAAIgzD,EAAO2lf,EACpB,CACA,SAASA,IACP,OAAO,EAAAv2C,EAAA,GAAUpvc,EAAOr0C,WAAW,EAAAsrC,EAAA,GAAepjD,MAAMqnC,YAC1D,CASA,OARAyqgB,EAAQ9piB,UAAYhK,OAAOwS,OAAO27C,EAAMnkD,UAAW,CACjDq/B,YAAa,CACXnpC,MAAO4ziB,EACPruhB,YAAY,EACZtlB,UAAU,EACVC,cAAc,MAGX,EAAA6gB,EAAA,GAAe6yhB,EAAS3lf,EACjC,EACO0lf,EAAiB1lf,EAC1B,kME3BI4lf,EACAC,gHAqBJ,IAAMC,EAAmB,IAAI1jiB,QACvB2jiB,EAAqB,IAAI3jiB,QACzB4jiB,EAA2B,IAAI5jiB,QAC/B6jiB,EAAiB,IAAI7jiB,QACrB8jiB,EAAwB,IAAI9jiB,QA0DlC,IAAI+jiB,EAAgB,CAChB14iB,IADgB,SACZ+d,EAAQ9a,EAAMqwiB,GACd,GAAIv1hB,aAAkB46hB,eAAgB,CAElC,GAAa,SAAT11iB,EACA,OAAOq1iB,EAAmBt4iB,IAAI+d,GAElC,GAAa,qBAAT9a,EACA,OAAO8a,EAAO66hB,kBAAoBL,EAAyBv4iB,IAAI+d,GAGnE,GAAa,UAAT9a,EACA,OAAOqwiB,EAASsF,iBAAiB,QAC3B7qiB,EACAuliB,EAASuF,YAAYvF,EAASsF,iBAAiB,GAE5D,CAED,OAAOl2e,EAAK3kD,EAAO9a,GACtB,EACD1D,IApBgB,SAoBZwe,EAAQ9a,EAAMqB,GAEd,OADAyZ,EAAO9a,GAAQqB,GACR,CACV,EACDvE,IAxBgB,SAwBZge,EAAQ9a,GACR,OAAI8a,aAAkB46hB,iBACR,SAAT11iB,GAA4B,UAATA,IAGjBA,KAAQ8a,CAClB,GAKL,SAAS+6hB,EAAa3hiB,GAIlB,OAAIA,IAAS4hiB,YAAY3qiB,UAAU4qiB,aAC7B,qBAAsBL,eAAevqiB,WA7GnCgqiB,IACHA,EAAuB,CACpBa,UAAU7qiB,UAAU8qiB,QACpBD,UAAU7qiB,UAAUyqhB,SACpBogB,UAAU7qiB,UAAU+qiB,sBAqHExtiB,SAASwL,GAC5B,WAAmB,2BAANnT,EAAM,yBAANA,EAAM,gBAItB,OADAmT,EAAKgH,MAAMo8C,EAAOn0D,MAAOpC,GAClB0+D,EAAK21e,EAAiBr4iB,IAAIoG,MACpC,EAEE,WAAmB,2BAANpC,EAAM,yBAANA,EAAM,gBAGtB,OAAO0+D,EAAKvrD,EAAKgH,MAAMo8C,EAAOn0D,MAAOpC,GACxC,EAvBU,SAAUo1iB,GAAqB,2BAANp1iB,EAAM,iCAANA,EAAM,kBAClC,IAAMq1iB,EAAKliiB,EAAKtS,KAAL,MAAAsS,EAAI,CAAMojD,EAAOn0D,MAAOgziB,GAApB,OAAmCp1iB,IAElD,OADAu0iB,EAAyBh5iB,IAAI85iB,EAAID,EAAW55gB,KAAO45gB,EAAW55gB,OAAS,CAAC45gB,IACjE12e,EAAK22e,EACf,CAoBR,CACD,SAASC,EAAuBh1iB,GAC5B,MAAqB,oBAAVA,EACAw0iB,EAAax0iB,IAGpBA,aAAiBq0iB,gBAhGzB,SAAwCU,GAEpC,IAAIf,EAAmBv4iB,IAAIs5iB,GAA3B,CAEA,IAAMrkf,EAAO,IAAIjwD,SAAQ,SAACC,EAASY,GAC/B,IAAM2ziB,EAAW,WACbF,EAAGzxiB,oBAAoB,WAAYmgB,GACnCsxhB,EAAGzxiB,oBAAoB,QAASnC,GAChC4ziB,EAAGzxiB,oBAAoB,QAASnC,EACnC,EACKsiB,EAAW,WACb/iB,IACAu0iB,GACH,EACK9ziB,EAAQ,WACVG,EAAOyziB,EAAG5ziB,OAAS,IAAI+ziB,aAAa,aAAc,eAClDD,GACH,EACDF,EAAG1xiB,iBAAiB,WAAYogB,GAChCsxhB,EAAG1xiB,iBAAiB,QAASlC,GAC7B4ziB,EAAG1xiB,iBAAiB,QAASlC,EAChC,IAED6yiB,EAAmB/4iB,IAAI85iB,EAAIrkf,EApBjB,CAqBb,CAyEOykf,CAA+Bn1iB,GA9JhBynC,EA+JDznC,GAzJV6ziB,IACHA,EAAoB,CACjBY,YACAW,eACAC,SACAV,UACAN,kBAZiDpgf,MAAK,SAACv4C,GAAD,OAAO+rB,aAAkB/rB,CAAzB,IAgKnD,IAAI/a,MAAMX,EAAOo0iB,GAErBp0iB,GAlKW,IAACynC,CAmKtB,CACD,SAAS22B,EAAKp+D,GAGV,GAAIA,aAAiBs1iB,WACjB,OA3IR,SAA0B3siB,GACtB,IAAMyW,EAAU,IAAI3e,SAAQ,SAACC,EAASY,GAClC,IAAM2ziB,EAAW,WACbtsiB,EAAQrF,oBAAoB,UAAW0mB,GACvCrhB,EAAQrF,oBAAoB,QAASnC,EACxC,EACK6oB,EAAU,WACZtpB,EAAQ09D,EAAKz1D,EAAQrD,SACrB2viB,GACH,EACK9ziB,EAAQ,WACVG,EAAOqH,EAAQxH,OACf8ziB,GACH,EACDtsiB,EAAQtF,iBAAiB,UAAW2mB,GACpCrhB,EAAQtF,iBAAiB,QAASlC,EACrC,IAcD,OAbAie,EACKxf,MAAK,SAACI,GAGHA,aAAiB20iB,WACjBZ,EAAiB94iB,IAAI+E,EAAO2I,EAGnC,IACI0W,OAAM,WAAS,IAGpB80hB,EAAsBl5iB,IAAImkB,EAASzW,GAC5ByW,CACV,CA4Gcm2hB,CAAiBv1iB,GAG5B,GAAIk0iB,EAAez4iB,IAAIuE,GACnB,OAAOk0iB,EAAex4iB,IAAIsE,GAC9B,IAAM2qC,EAAWqqgB,EAAuBh1iB,GAOxC,OAJI2qC,IAAa3qC,IACbk0iB,EAAej5iB,IAAI+E,EAAO2qC,GAC1BwpgB,EAAsBl5iB,IAAI0vC,EAAU3qC,IAEjC2qC,CACV,CACD,IAAMsrB,EAAS,SAACj2D,GAAD,OAAWm0iB,EAAsBz4iB,IAAIsE,EAArC,ECrIf,QAAMw1iB,EAAc,CAAC,MAAO,SAAU,SAAU,aAAc,SACxDC,EAAe,CAAC,MAAO,MAAO,SAAU,SACxCC,EAAgB,IAAI16iB,IAC1B,SAAS8iG,EAAUrkF,EAAQ9a,GACvB,GAAM8a,aAAkBg7hB,eAClB91iB,KAAQ8a,IACM,kBAAT9a,EAFX,CAKA,GAAI+2iB,EAAch6iB,IAAIiD,GAClB,OAAO+2iB,EAAch6iB,IAAIiD,GAC7B,IAAMg3iB,EAAiBh3iB,EAAK+E,QAAQ,aAAc,IAC5CkyiB,EAAWj3iB,IAASg3iB,EACpBE,EAAUJ,EAAapuiB,SAASsuiB,GACtC,GAEEA,KAAmBC,EAAWP,SAAWD,gBAAgBtriB,YACrD+riB,GAAWL,EAAYnuiB,SAASsuiB,IAHtC,CAMA,IAAMzuiB,EAAM,yCAAG,WAAgB4uiB,GAAhB,sGAELf,EAAKjziB,KAAK4yiB,YAAYoB,EAAWD,EAAU,YAAc,YAC3Dp8hB,EAASs7hB,EAAG16c,MAHL,WAA8B36F,EAA9B,iCAA8BA,EAA9B,iBAIPk2iB,IACAn8hB,EAASA,EAAOxW,MAAMvD,EAAKs6B,UALpB,SAWGv5B,QAAQ0nI,IAAI,EACtB,EAAA1uH,GAAOk8hB,GAAP,QAA0Bj2iB,GAC1Bm2iB,GAAWd,EAAGrkf,OAbP,uCAcP,IAdO,gDAAH,sDAiBZ,OADAglf,EAAcz6iB,IAAI0D,EAAMuI,GACjBA,CAlBN,CAXA,CA8BJ,CDgCGktiB,EC/BS,SAAC2B,GAAD,eAAC,UACPA,GADM,IAETr6iB,IAAK,SAAC+d,EAAQ9a,EAAMqwiB,GAAf,OAA4Blxc,EAAUrkF,EAAQ9a,IAASo3iB,EAASr6iB,IAAI+d,EAAQ9a,EAAMqwiB,EAAlF,EACLvziB,IAAK,SAACge,EAAQ9a,GAAT,QAAoBm/F,EAAUrkF,EAAQ9a,IAASo3iB,EAASt6iB,IAAIge,EAAQ9a,EAApE,GAHI,CD+BOU,CAAS+0iB,OE9FhB4B,EAAAA,WACX,WAA6B3siB,IAA6B,eAA7B,KAASA,UAATA,CAAiC,qDAG9D,WAIE,OAHkBvH,KAAKuH,UAAU4siB,eAI9BpwiB,KAAI,SAAAqwiB,GACH,GAmBR,SAAkCA,GAChC,IAAMhjhB,EAAYgjhB,EAASC,eAC3B,MAAsB,aAAf,OAAAjjhB,QAAS,IAATA,OAAS,EAATA,EAAW/rB,KACpB,CAtBYiviB,CAAyBF,GAAW,CACtC,IAAMh1hB,EAAUg1hB,EAASG,eACzB,MAAO,GAAP,OAAUn1hB,EAAQo1hB,QAAlB,YAA6Bp1hB,EAAQm1D,QACtC,CACC,OAAO,IAEV,IACA/5C,QAAO,SAAAi6gB,GAAS,OAAIA,CAAJ,IAChBhoiB,KAAK,IACT,OAnBUyniB,oCCNA3gf,EAAS,IAAImhf,EAAAA,GAAO,iBC6BpBC,EAAqB,YAErBC,GAAmB,eAC7BC,EAAU,cADmB,gCAEb,qBAFa,+BAGb,mBAHa,sCAIP,0BAJO,+BAKd,mBALc,sCAMR,0BANQ,0BAOlB,cAPkB,iCAQZ,qBARY,8BASd,cATc,qCAUR,qBAVQ,+BAWb,YAXa,sCAYP,mBAZO,mCAaT,aAbS,0CAcH,oBAdG,+BAeb,aAfa,sCAgBP,oBAhBO,iCAiBX,cAjBW,wCAkBL,qBAlBK,mCAmBV,YAnBU,0CAoBJ,mBApBI,6BAqBf,aArBe,oCAsBT,oBAtBS,+BAuBb,aAvBa,sCAwBP,oBAxBO,SAyB9B,UAAW,YAzBmB,oBA0Bf,eA1Be,GCxBnBC,EAAQ,IAAI57iB,IAQZ67iB,EAAc,IAAI77iB,IAOf,SAAA87iB,EACdC,EACA7jhB,GAEA,IACG6jhB,EAAwB1tiB,UAAU2tiB,aAAa9jhB,EAMjD,CALC,MAAOnoB,GACPsqD,EAAO4hf,MAAP,oBACe/jhB,EAAUh4B,KADzB,gDACqE67iB,EAAI77iB,MACvE6P,EAEH,CACF,CAoBK,SAAUmsiB,EACdhkhB,GAEA,IAAMsB,EAAgBtB,EAAUh4B,KAChC,GAAI27iB,EAAYp7iB,IAAI+4B,GAKlB,OAJA6gC,EAAO4hf,MAAP,6DACwDzihB,EADxD,OAIO,EAGTqihB,EAAY57iB,IAAIu5B,EAAetB,GAXR,gBAcL0jhB,EAAMn/gB,UAdD,IAcvB,IAAK,EAAL,qBAAkC,CAChCq/gB,EADgC,QACM5jhB,EACvC,CAhBsB,+BAkBvB,OAAO,CACR,CAWe,SAAAikhB,EACdJ,EACA77iB,GAEA,IAAMk8iB,EAAuBL,EAAwB1tiB,UAClDguiB,YAAY,aACZhB,aAAa,CAAEiB,UAAU,IAI5B,OAHIF,GACGA,EAAoBG,mBAEnBR,EAAwB1tiB,UAAUguiB,YAAYn8iB,EACvD,CClFD,IAAMs8iB,GAAM,eACV,SACE,+EAFQ,SAIV,eAAyB,kCAJf,SAKV,gBACE,oFANQ,SAOV,cAAwB,oDAPd,SAQV,aACE,4EATQ,SAUV,uBACE,+EAXQ,SAaV,uBACE,0DAdQ,SAeV,WACE,kFAhBQ,SAiBV,UACE,uFAlBQ,SAmBV,UACE,qFApBQ,SAqBV,aACE,uFAtBQ,GAqCCC,EAAgB,IAAIx2hB,EAAAA,GAC/B,MACA,WACAu2hB,GC5CWE,EAAAA,WAcX,WACEx4iB,EACA2C,EACAwH,GAA6B,2BANvB,KAAUsuiB,YAAG,EAQnB71iB,KAAKktD,SAAgBlvD,OAAAA,OAAAA,CAAAA,EAAAA,GACrBgC,KAAK4ne,QAAe5pe,OAAAA,OAAAA,CAAAA,EAAAA,GACpBgC,KAAKsvF,MAAQvvF,EAAO3G,KACpB4G,KAAK81iB,gCACH/1iB,EAAOg2iB,+BACT/1iB,KAAKg2iB,WAAazuiB,EAClBvH,KAAKuH,UAAU2tiB,aACb,IAAI7ihB,EAAAA,GAAU,OAAO,kBAAM,CAAN,GAAU,UAElC,4DAED,WAEE,OADAryB,KAAKi2iB,iBACEj2iB,KAAK81iB,+BACb,MAED,SAAmCr9gB,GACjCz4B,KAAKi2iB,iBACLj2iB,KAAK81iB,gCAAkCr9gB,CACxC,mBAED,WAEE,OADAz4B,KAAKi2iB,iBACEj2iB,KAAKsvF,KACb,sBAED,WAEE,OADAtvF,KAAKi2iB,iBACEj2iB,KAAKktD,QACb,qBAED,WAEE,OADAltD,KAAKi2iB,iBACEj2iB,KAAK4ne,OACb,wBAED,WACE,OAAO5ne,KAAKg2iB,UACb,wBAED,WACE,OAAOh2iB,KAAK61iB,UACb,MAED,SAAcp9gB,GACZz4B,KAAK61iB,WAAap9gB,CACnB,+BAMO,WACN,GAAIz4B,KAAKqnc,UACP,MAAMsuG,EAAcnliB,OAAM,cAAuB,CAAEqkiB,QAAS70iB,KAAKsvF,OAEpE,OA3EUsmd,GCqBAM,oBAoEGC,EACdjpf,GACc,IAAdkpf,EAAc,uDAAF,CAAC,EAETh5iB,EAAU8vD,EAEd,GAAyB,kBAAdkpf,EAAwB,CACjC,IAAMh9iB,EAAOg9iB,EACbA,EAAY,CAAEh9iB,KAAAA,EACf,CAED,IAAM2G,EAAM,eACV3G,KAAMu7iB,EACNoB,gCAAgC,GAC7BK,GAECh9iB,EAAO2G,EAAO3G,KAEpB,GAAoB,kBAATA,IAAsBA,EAC/B,MAAMu8iB,EAAcnliB,OAA8B,gBAChDqkiB,QAASpriB,OAAOrQ,KAMpB,GAFAgE,IAAAA,GAAY+f,EAAAA,EAAAA,QAEP/f,EACH,MAAMu4iB,EAAcnliB,OAAM,cAG5B,IAAM6liB,EAAcvB,EAAMl7iB,IAAIR,GAC9B,GAAIi9iB,EAAa,CAEf,IACEv2hB,EAAAA,EAAAA,IAAU1iB,EAASi5iB,EAAYj5iB,WAC/B0iB,EAAAA,EAAAA,IAAU/f,EAAQs2iB,EAAYt2iB,QAE9B,OAAOs2iB,EAEP,MAAMV,EAAcnliB,OAA+B,iBAAEqkiB,QAASz7iB,GAEjE,CAED,IAzCc,EAyCRmO,EAAY,IAAI+uiB,EAAAA,GAAmBl9iB,GAzC3B,UA0CU27iB,EAAYp/gB,UA1CtB,IA0Cd,IAAK,EAAL,qBAA8C,KAAnCvE,EAAmC,QAC5C7pB,EAAU2tiB,aAAa9jhB,EACxB,CA5Ca,+BA8Cd,IAAMmlhB,EAAS,IAAIX,EAAgBx4iB,EAAS2C,EAAQwH,GAIpD,OAFAutiB,EAAM37iB,IAAIC,EAAMm9iB,GAETA,CACR,CA+Be,SAAAC,IAAwC,IAAjCp9iB,EAAiC,uDAAlBu7iB,EAC9BM,EAAMH,EAAMl7iB,IAAIR,GACtB,IAAK67iB,GAAO77iB,IAASu7iB,IAAsBx3hB,EAAAA,EAAAA,MACzC,OAAOg5hB,IAET,IAAKlB,EACH,MAAMU,EAAcnliB,OAAwB,UAAEqkiB,QAASz7iB,IAGzD,OAAO67iB,CACR,UAgDewB,EACdC,EACAnie,EACAr7C,SAIIs7gB,EAAmD,QAAzC,EAAAI,EAAoB8B,UAAqBh8iB,IAAAA,EAAAA,EAAAg8iB,EACnDx9gB,IACFs7gB,GAAW,IAAJ,OAAQt7gB,IAEjB,IAAMy9gB,EAAkBnC,EAAQvliB,MAAM,SAChC2niB,EAAkBrie,EAAQtlE,MAAM,SACtC,GAAI0niB,GAAmBC,EAAiB,CACtC,IAAMvuhB,EAAU,CAAC,+BAAD,OACiBmshB,EADjB,2BAC2Cjge,EAD3C,OAiBhB,OAdIoie,GACFtuhB,EAAQjoB,KAAR,wBACmBo0iB,EADnB,sDAIEmC,GAAmBC,GACrBvuhB,EAAQjoB,KAAK,OAEXw2iB,GACFvuhB,EAAQjoB,KAAR,wBACmBm0E,EADnB,2DAIFhhB,EAAOj3D,KAAK+rB,EAAQ5b,KAAK,KAE1B,CACD2oiB,EACE,IAAI/ihB,EAAAA,GAAJ,UACKmihB,EADL,aAEE,iBAAO,CAAEA,QAAAA,EAASjge,QAAAA,EAAlB,GAA4B,WAIjC,CCpRD,IAEMsie,EAAa,2BASfC,EAAiD,KACrD,SAASC,IAoBP,OAnBKD,IACHA,ER5BJ,SAAgB19iB,EAAMm7E,GAA0D,6DAAJ,CAAC,EAA5Cyie,EAA+C,EAA/CA,QAASC,EAAsC,EAAtCA,QAASC,EAA6B,EAA7BA,SAAUC,EAAmB,EAAnBA,WACnDtwiB,EAAUuX,UAAUI,KAAKplB,EAAMm7E,GAC/B6ie,EAAc96e,EAAKz1D,GAoBzB,OAnBIowiB,GACApwiB,EAAQtF,iBAAiB,iBAAiB,SAACR,GACvCk2iB,EAAQ36e,EAAKz1D,EAAQrD,QAASzC,EAAMs2iB,WAAYt2iB,EAAMu2iB,WAAYh7e,EAAKz1D,EAAQ+riB,aAAc7xiB,EAChG,IAEDi2iB,GACAnwiB,EAAQtF,iBAAiB,WAAW,SAACR,GAAD,OAAWi2iB,EAE/Cj2iB,EAAMs2iB,WAAYt2iB,EAAMu2iB,WAAYv2iB,EAFA,IAIxCq2iB,EACKt5iB,MAAK,SAAC8+f,GACHu6C,GACAv6C,EAAGr7f,iBAAiB,SAAS,kBAAM41iB,GAAN,IAC7BD,GACAt6C,EAAGr7f,iBAAiB,iBAAiB,SAACR,GAAD,OAAWm2iB,EAASn2iB,EAAMs2iB,WAAYt2iB,EAAMu2iB,WAAYv2iB,EAAxD,GAE5C,IACIwc,OAAM,WAAS,IACb65hB,CACV,CQKeG,CAdA,8BACG,EAagC,CAC7CN,QAAS,SAACr6C,EAAIy6C,GAMZ,GACO,IADCA,EAEJz6C,EAAG46C,kBAAkBX,EAE1B,IACAt5hB,OAAM,SAAAtU,GACP,MAAM0siB,EAAcnliB,OAA0B,YAC5CiniB,qBAAsBxuiB,EAAE7O,SAE3B,KAEI08iB,CACR,UAEqBY,EAA4B,mFAA3C,WACLzC,GADK,yGAIc8B,IAJd,cAIGn6C,EAJH,gBAKkBA,EAClBg2C,YAAYiE,GACZpE,YAAYoE,GACZj9iB,IAAI+9iB,GAAW1C,IARf,cAKGzxiB,EALH,yBASIA,GATJ,kCAWC,gBAAaub,EAAAA,GACfw0C,EAAOj3D,KAAK,KAAElC,UAERw9iB,EAAcjC,EAAcnliB,OAAyB,WACzDiniB,qBAAkC,OAAX,gCAAar9iB,UAEtCm5D,EAAOj3D,KAAKs7iB,EAAYx9iB,UAjBvB,0FAsBey9iB,GAA2B,EAA3BA,mFAAf,WACL5C,EACA6C,GAFK,2GAKcf,IALd,cAKGn6C,EALH,OAMGq2C,EAAKr2C,EAAGg2C,YAAYiE,EAAY,aAChCpE,EAAcQ,EAAGR,YAAYoE,GAPhC,SAQGpE,EAAYsF,IAAID,EAAiBH,GAAW1C,IAR/C,wBASGhC,EAAGrkf,KATN,0DAWC,gBAAa7vC,EAAAA,GACfw0C,EAAOj3D,KAAK,KAAElC,UAERw9iB,EAAcjC,EAAcnliB,OAA2B,WAC3DiniB,qBAAkC,OAAX,gCAAar9iB,UAEtCm5D,EAAOj3D,KAAKs7iB,EAAYx9iB,UAjBvB,iFAsBP,SAASu9iB,GAAW1C,GAClB,MAAO,GAAP,OAAUA,EAAI77iB,KAAd,YAAsB67iB,EAAI73iB,QAAQ46iB,MACpC,CCrEA,IAIaC,GAAAA,WAyBX,WAA6B1wiB,GAA6B,2BAA7B,KAASA,UAATA,EAT7B,KAAgB2wiB,iBAAiC,KAU/C,IAAMjD,EAAMj1iB,KAAKuH,UAAUguiB,YAAY,OAAOhB,eAC9Cv0iB,KAAKm4iB,SAAW,IAAIC,GAAqBnD,GACzCj1iB,KAAKq4iB,wBAA0Br4iB,KAAKm4iB,SAASG,OAAOx6iB,MAAK,SAAA0F,GAEvD,OADA,EAAK00iB,iBAAmB10iB,EACjBA,CACR,GACF,yFASD,gGACQ+0iB,EAAiBv4iB,KAAKuH,UACzBguiB,YAAY,mBACZhB,eAIGiE,EAAQD,EAAeE,wBACvBxkhB,EAAOykhB,KACiB,OAA1B14iB,KAAKk4iB,iBATX,gCAUkCl4iB,KAAKq4iB,wBAVvC,OAUIr4iB,KAAKk4iB,iBAVT,iBAeIl4iB,KAAKk4iB,iBAAiBS,wBAA0B1khB,IAChDj0B,KAAKk4iB,iBAAiBU,WAAWzmf,MAC/B,SAAA0mf,GAAmB,OAAIA,EAAoB5khB,OAASA,CAAjC,IAjBzB,mDAuBIj0B,KAAKk4iB,iBAAiBU,WAAWx4iB,KAAK,CAAE6zB,KAAAA,EAAMukhB,MAAAA,IAvBlD,eA0BEx4iB,KAAKk4iB,iBAAiBU,WAAa54iB,KAAKk4iB,iBAAiBU,WAAWp+gB,QAClE,SAAAq+gB,GACE,IAAMC,EAAc,IAAIh2iB,KAAK+1iB,EAAoB5khB,MAAMs4B,UAEvD,OADYzpD,KAAKygE,MACJu1e,GAzEyB,MA0EvC,IA/BL,kBAiCS94iB,KAAKm4iB,SAASY,UAAU/4iB,KAAKk4iB,mBAjCtC,iLA2CA,oGACgC,OAA1Bl4iB,KAAKk4iB,iBADX,gCAEUl4iB,KAAKq4iB,wBAFf,UAM8B,OAA1Br4iB,KAAKk4iB,kBACuC,IAA5Cl4iB,KAAKk4iB,iBAAiBU,WAAWj4iB,OAPrC,yCASW,IATX,UAWQszB,EAAOykhB,KAXf,EAa8CM,GAC1Ch5iB,KAAKk4iB,iBAAiBU,YADhBK,EAbV,EAaUA,iBAAkBC,EAb5B,EAa4BA,cAGpBC,GAAe/8hB,EAAAA,EAAAA,GACnBtW,KAAKC,UAAU,CAAEwuE,QAAS,EAAGqke,WAAYK,KAG3Cj5iB,KAAKk4iB,iBAAiBS,sBAAwB1khB,IAC1CilhB,EAAcv4iB,OAAS,GArB7B,wBAuBIX,KAAKk4iB,iBAAiBU,WAAaM,EAvBvC,UA2BUl5iB,KAAKm4iB,SAASY,UAAU/4iB,KAAKk4iB,kBA3BvC,gCA6BIl4iB,KAAKk4iB,iBAAiBU,WAAa,GAE9B54iB,KAAKm4iB,SAASY,UAAU/4iB,KAAKk4iB,kBA/BtC,iCAiCSiB,GAjCT,2GApFWlB,GAyHb,SAASS,KAGP,OAFc,IAAI51iB,MAELugf,cAAcvie,UAAU,EAAG,GACzC,UAEek4hB,GACdI,GAC0B,MAA1Bn+O,EAA0B,uDArIH,KA4IjBg+O,EAA4C,GAE9CC,EAAgBE,EAAgBr0iB,QATV,UAUQq0iB,GAVR,yBAUfP,EAVe,QAYlBQ,EAAiBJ,EAAiBj9iB,MACtC,SAAAihgB,GAAE,OAAIA,EAAGu7C,QAAUK,EAAoBL,KAArC,IAEJ,GAAKa,GAgBH,GAHAA,EAAe/9a,MAAMl7H,KAAKy4iB,EAAoB5khB,MAG1CqlhB,GAAWL,GAAoBh+O,EAEjC,OADAo+O,EAAe/9a,MAAM1tE,MACrB,aAZF,GAJAqrf,EAAiB74iB,KAAK,CACpBo4iB,MAAOK,EAAoBL,MAC3Bl9a,MAAO,CAACu9a,EAAoB5khB,QAE1BqlhB,GAAWL,GAAoBh+O,EAIjC,OADAg+O,EAAiBrrf,MACjB,QAaJsrf,EAAgBA,EAAcn0iB,MAAM,EAtCZ,EAU1B,IAAK,EAAL,qBAAmD,0BAuB7C,KAML,CAvCyB,+BAwC1B,MAAO,CACLk0iB,iBAAAA,EACAC,cAAAA,EAEH,KC7LsChghB,GD+L1Bk/gB,GAAAA,WAEX,WAAmBnD,IAAgB,eAAhB,KAAGA,IAAHA,EACjBj1iB,KAAKu5iB,wBAA0Bv5iB,KAAKw5iB,8BACrC,qGACD,uFACOr7hB,EAAAA,EAAAA,MADP,0CAEW,GAFX,iCAIWE,EAAAA,EAAAA,MACJvgB,MAAK,kBAAM,CAAN,IACLyf,OAAM,kBAAM,CAAN,KANb,4JAYA,yGACgCvd,KAAKu5iB,wBADrC,0DAGW,CAAEX,WAAY,KAHzB,uBAKqClB,EAA4B13iB,KAAKi1iB,KALtE,cAKUwE,EALV,yBAMWA,GAAsB,CAAEb,WAAY,KAN/C,uKAUA,WAAgBc,GAAhB,8FACgC15iB,KAAKu5iB,wBADrC,kFAK2Cv5iB,KAAKs4iB,OALhD,cAKUqB,EALV,yBAMW9B,GAA2B73iB,KAAKi1iB,IAAK,CAC1C0D,sBAEE,QADA,EAAAe,EAAiBf,6BACjBj+iB,IAAAA,EAAAA,EAAAi/iB,EAAyBhB,sBAC3BC,WAAYc,EAAiBd,cAVnC,kKAeA,WAAUc,GAAV,8FACgC15iB,KAAKu5iB,wBADrC,kFAK2Cv5iB,KAAKs4iB,OALhD,cAKUqB,EALV,yBAMW9B,GAA2B73iB,KAAKi1iB,IAAK,CAC1C0D,sBAEE,QADA,EAAAe,EAAiBf,6BACjBj+iB,IAAAA,EAAAA,EAAAi/iB,EAAyBhB,sBAC3BC,WAAY,GAAF,eACLe,EAAyBf,aADpB,OAELc,EAAiBd,gBAZ5B,4GA1CWR,GAkEP,SAAUkB,GAAWF,GAEzB,OAAOh9hB,EAAAA,EAAAA,GAELtW,KAAKC,UAAU,CAAEwuE,QAAS,EAAGqke,WAAYQ,KACzCz4iB,MACJ,CCvQuCu4B,GCMhB,GDLrBk8gB,EACE,IAAI/ihB,EAAAA,GACF,mBACA,SAAA9qB,GAAS,OAAI,IAAI2siB,EAA0B3siB,EAAlC,GAA4C,YAIzD6tiB,EACE,IAAI/ihB,EAAAA,GACF,aACA,SAAA9qB,GAAS,OAAI,IAAI0wiB,GAAqB1wiB,EAA7B,GAAuC,YAMpDkviB,EAAgBr9iB,EAAMm7E,EAASr7C,IAE/Bu9gB,EAAgBr9iB,EAAMm7E,EAAS,WAE/Bkie,EAAgB,UAAW,mLEjBhBpkhB,EAAAA,WAiBX,WACWj5B,EACAwgjB,EACAv0iB,IAAmB,eAFnB,KAAIjM,KAAJA,EACA,KAAewgjB,gBAAfA,EACA,KAAIv0iB,KAAJA,EAnBX,KAAiBw0iB,mBAAG,EAIpB,KAAYC,aAAe,CAAC,EAE5B,KAAAC,kBAA2C,OAE3C,KAAiBC,kBAAwC,IAYrD,oDAEJ,SAAqB1yhB,GAEnB,OADAtnB,KAAK+5iB,kBAAoBzyhB,EAClBtnB,IACR,qCAED,SAAqB65iB,GAEnB,OADA75iB,KAAK65iB,kBAAoBA,EAClB75iB,IACR,gCAED,SAAgB8K,GAEd,OADA9K,KAAK85iB,aAAehviB,EACb9K,IACR,2CAED,SAA2BzC,GAEzB,OADAyC,KAAKg6iB,kBAAoBz8iB,EAClByC,IACR,OAzCUqyB,GCXAsihB,EAAqB,YCgBrB9jiB,EAAAA,WAWX,WACmBzX,EACAmO,IAA6B,eAD7B,KAAInO,KAAJA,EACA,KAASmO,UAATA,EAZX,KAAS6pB,UAAwB,KACxB,KAAA6ohB,UAAgD,IAAI/gjB,IACpD,KAAAghjB,kBAGb,IAAIhhjB,IACS,KAAAihjB,iBACf,IAAIjhjB,IACE,KAAAkhjB,gBAAuD,IAAIlhjB,GAK/D,mCAMJ,SAAI6S,GAEF,IAAMsuiB,EAAuBr6iB,KAAKs6iB,4BAA4BvuiB,GAE9D,IAAK/L,KAAKk6iB,kBAAkBvgjB,IAAI0gjB,GAAuB,CACrD,IAAM9rf,EAAW,IAAIlxC,EAAAA,GAGrB,GAFArd,KAAKk6iB,kBAAkB/gjB,IAAIkhjB,EAAsB9rf,GAG/CvuD,KAAKogK,cAAci6Y,IACnBr6iB,KAAKu6iB,uBAGL,IACE,IAAMxxgB,EAAW/oC,KAAKw6iB,uBAAuB,CAC3CC,mBAAoBJ,IAElBtxgB,GACFwlB,EAAS3vD,QAAQmqC,EAKpB,CAHC,MAAO9/B,GAGR,CAEJ,CAED,OAAOjJ,KAAKk6iB,kBAAkBtgjB,IAAIygjB,GAAuB/8hB,OAC1D,6BAkBD,SAAalgB,SAKLi9iB,EAAuBr6iB,KAAKs6iB,4BAChC,OAAAl9iB,QAAA,IAAAA,OAAA,EAAAA,EAAS2O,YAELypiB,EAAgC,QAArB,SAAAp4iB,QAAA,IAAAA,OAAA,EAAAA,EAASo4iB,gBAAY96iB,IAAAA,GAAAA,EAEtC,IACEsF,KAAKogK,cAAci6Y,KACnBr6iB,KAAKu6iB,uBAaA,CAEL,GAAI/E,EACF,OAAO,KAEP,MAAMj7iB,MAAM,WAAD,OAAYyF,KAAK5G,KAAjB,qBAEd,CAlBC,IACE,OAAO4G,KAAKw6iB,uBAAuB,CACjCC,mBAAoBJ,GAQvB,CANC,MAAOpxiB,GACP,GAAIusiB,EACF,OAAO,KAEP,MAAMvsiB,CAET,CASJ,6BAED,WACE,OAAOjJ,KAAKoxB,SACb,6BAED,SAAaA,GACX,GAAIA,EAAUh4B,OAAS4G,KAAK5G,KAC1B,MAAMmB,MAAM,yBAAD,OACgB62B,EAAUh4B,KAD1B,yBAC+C4G,KAAK5G,KADpD,MAKb,GAAI4G,KAAKoxB,UACP,MAAM72B,MAAM,iBAAD,OAAkByF,KAAK5G,KAAvB,+BAMb,GAHA4G,KAAKoxB,UAAYA,EAGZpxB,KAAKu6iB,uBAAV,CAKA,GA0NJ,SAA0CnphB,GACxC,MAAkC,UAA3BA,EAAU2ohB,iBACnB,CA5NQW,CAAiBtphB,GACnB,IACEpxB,KAAKw6iB,uBAAuB,CAAEC,mBAAoB9F,GAMnD,CALC,MAAO1riB,GAKR,CA3B+B,gBAoC7BjJ,KAAKk6iB,kBAAkBz1iB,WApCM,IAiClC,IAAK,EAAL,qBAGuC,0BAFrCg2iB,EAEqC,KADrCE,EACqC,KAC/BN,EACJr6iB,KAAKs6iB,4BAA4BG,GAEnC,IAEE,IAAM1xgB,EAAW/oC,KAAKw6iB,uBAAuB,CAC3CC,mBAAoBJ,IAEtBM,EAAiB/7iB,QAAQmqC,EAI1B,CAHC,MAAO9/B,GAGR,CACF,CAlDiC,+BAgBjC,CAmCF,8BAED,WAAqD,IAAvC8C,EAAuC,uDAAlB4oiB,EACjC30iB,KAAKk6iB,kBAAkBr0iB,OAAOkG,GAC9B/L,KAAKm6iB,iBAAiBt0iB,OAAOkG,GAC7B/L,KAAKi6iB,UAAUp0iB,OAAOkG,EACvB,gEAID,gGACQ6uiB,EAAW/1iB,MAAM2E,KAAKxJ,KAAKi6iB,UAAUtkhB,UAD7C,SAGQh3B,QAAQ0nI,IAAR,kBACDu0a,EACApghB,QAAO,SAAApb,GAAO,MAAI,aAAcA,CAAlB,IAEdrb,KAAI,SAAAqb,GAAO,OAAKA,EAAgBy7hB,SAAUh1iB,QAA/B,MAJV,OAKD+0iB,EACApghB,QAAO,SAAApb,GAAO,MAAI,YAAaA,CAAjB,IAEdrb,KAAI,SAAAqb,GAAO,OAAKA,EAAgB07hB,SAArB,OAXlB,kIAeA,WACE,OAAyB,MAAlB96iB,KAAKoxB,SACb,8BAED,WAAqD,IAAvCrlB,EAAuC,uDAAlB4oiB,EACjC,OAAO30iB,KAAKi6iB,UAAUtgjB,IAAIoS,EAC3B,2BAED,WAAkD,IAAvCA,EAAuC,uDAAlB4oiB,EAC9B,OAAO30iB,KAAKm6iB,iBAAiBvgjB,IAAImS,IAAe,CAAC,CAClD,2BAED,WAAuC,IAA5Bg4H,EAA4B,uDAAF,CAAC,EACpC,EAAyBA,EAAjB3mI,QAAAA,OAAR,MAAkB,CAAC,EAAnB,EACMi9iB,EAAuBr6iB,KAAKs6iB,4BAChCv2a,EAAK02a,oBAEP,GAAIz6iB,KAAKogK,cAAci6Y,GACrB,MAAM9/iB,MAAM,GAAD,OACNyF,KAAK5G,KADC,YACOihjB,EADP,mCAKb,IAAKr6iB,KAAK+6iB,iBACR,MAAMxgjB,MAAM,aAAD,OAAcyF,KAAK5G,KAAnB,iCAGb,IAfqC,EAe/B2vC,EAAW/oC,KAAKw6iB,uBAAuB,CAC3CC,mBAAoBJ,EACpBj9iB,QAAAA,IAjBmC,UAwBhC4C,KAAKk6iB,kBAAkBz1iB,WAxBS,IAqBrC,IAAK,EAAL,qBAGuC,0BAFrCg2iB,EAEqC,KADrCE,EACqC,KAC/BK,EACJh7iB,KAAKs6iB,4BAA4BG,GAC/BJ,IAAyBW,GAC3BL,EAAiB/7iB,QAAQmqC,EAE5B,CA9BoC,+BAgCrC,OAAOA,CACR,uBAUD,SAAOxrC,EAA6BwO,SAC5BsuiB,EAAuBr6iB,KAAKs6iB,4BAA4BvuiB,GACxDkviB,EAC0C,QAA9C,EAAAj7iB,KAAKo6iB,gBAAgBxgjB,IAAIygjB,UAAqB3/iB,IAAAA,EAAAA,EAC9C,IAAIqE,IACNk8iB,EAAkBltgB,IAAIxwC,GACtByC,KAAKo6iB,gBAAgBjhjB,IAAIkhjB,EAAsBY,GAE/C,IAAMC,EAAmBl7iB,KAAKi6iB,UAAUrgjB,IAAIygjB,GAK5C,OAJIa,GACF39iB,EAAS29iB,EAAkBb,GAGtB,WACLY,EAAkBp1iB,OAAOtI,EAC1B,CACF,sCAMO,SACNwrC,EACAh9B,GAEA,IAAM4gD,EAAY3sD,KAAKo6iB,gBAAgBxgjB,IAAImS,GAC3C,GAAK4gD,EAAL,CAHkB,gBAMKA,GANL,IAMlB,IAAK,EAAL,qBAAkC,KAAvBpvD,EAAuB,QAChC,IACEA,EAASwrC,EAAUh9B,EAGpB,CAFC,MAAMrR,GAEP,CACF,CAZiB,+BAKjB,CAQF,uCAEO,YAMP,IAyDoCqR,EA9DnC0uiB,EAKD,EALCA,mBAKD,IAJCr9iB,QAAAA,OAID,MAJW,CAAC,EAIZ,EACK2rC,EAAW/oC,KAAKi6iB,UAAUrgjB,IAAI6gjB,GAClC,IAAK1xgB,GAAY/oC,KAAKoxB,YACpB2X,EAAW/oC,KAAKoxB,UAAUwohB,gBAAgB55iB,KAAKuH,UAAW,CACxDkziB,oBAqD+B1uiB,EArDmB0uiB,EAsDjD1uiB,IAAe4oiB,OAAqBhtiB,EAAYoE,GArDjD3O,QAAAA,IAEF4C,KAAKi6iB,UAAU9gjB,IAAIshjB,EAAoB1xgB,GACvC/oC,KAAKm6iB,iBAAiBhhjB,IAAIshjB,EAAoBr9iB,GAO9C4C,KAAKm7iB,sBAAsBpygB,EAAU0xgB,GAOjCz6iB,KAAKoxB,UAAU4ohB,mBACjB,IACEh6iB,KAAKoxB,UAAU4ohB,kBACbh6iB,KAAKuH,UACLkziB,EACA1xgB,EAIH,CAFC,MAAMruC,GAEP,CAIL,OAAOquC,GAAY,IACpB,4CAEO,WACiC,IAAvCh9B,EAAuC,uDAAlB4oiB,EAErB,OAAI30iB,KAAKoxB,UACApxB,KAAKoxB,UAAUyohB,kBAAoB9tiB,EAAa4oiB,EAEhD5oiB,CAEV,qCAEO,WACN,QACI/L,KAAKoxB,WACyB,aAAhCpxB,KAAKoxB,UAAU2ohB,iBAElB,OA9UUlpiB,OCTAyliB,EAAAA,WAGX,WAA6Bl9iB,IAAY,eAAZ,KAAIA,KAAJA,EAFZ,KAAAgijB,UAAY,IAAIlijB,GAEY,4CAW7C,SAA6Bk4B,GAC3B,IAAMgjhB,EAAWp0iB,KAAKu1iB,YAAYnkhB,EAAUh4B,MAC5C,GAAIg7iB,EAAS2G,iBACX,MAAM,IAAIxgjB,MAAJ,oBACS62B,EAAUh4B,KADnB,6CAC4D4G,KAAK5G,OAIzEg7iB,EAASiH,aAAajqhB,EACvB,wCAED,SAAwCA,GACrBpxB,KAAKu1iB,YAAYnkhB,EAAUh4B,MAC/B2hjB,kBAEX/6iB,KAAKo7iB,UAAUv1iB,OAAOurB,EAAUh4B,MAGlC4G,KAAKk1iB,aAAa9jhB,EACnB,4BASD,SAA4Bh4B,GAC1B,GAAI4G,KAAKo7iB,UAAUzhjB,IAAIP,GACrB,OAAO4G,KAAKo7iB,UAAUxhjB,IAAIR,GAI5B,IAAMg7iB,EAAW,IAAIvjiB,EAAYzX,EAAM4G,MAGvC,OAFAA,KAAKo7iB,UAAUjijB,IAAIC,EAAMg7iB,GAElBA,CACR,6BAED,WACE,OAAOvviB,MAAM2E,KAAKxJ,KAAKo7iB,UAAUzlhB,SAClC,OAxDU2ghB,qGC8BDgF,gCAbCrB,EAAsB,IAanC,SAAYqB,GACVA,EAAAA,EAAAA,MAAAA,GAAAA,QACAA,EAAAA,EAAAA,QAAAA,GAAAA,UACAA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,MAAAA,GAAAA,QACAA,EAAAA,EAAAA,OAAAA,GAAAA,QANF,EAAYA,IAAAA,EAOX,KAED,IAAMC,EAA2D,CAC/D,MAASD,EAAS57iB,MAClB,QAAW47iB,EAASE,QACpB,KAAQF,EAASG,KACjB,KAAQH,EAASI,KACjB,MAASJ,EAASlgd,MAClB,OAAUkgd,EAASK,QAMfC,EAA4BN,EAASG,KAmBrCI,GAAa,eAChBP,EAAS57iB,MAAQ,QADD,SAEhB47iB,EAASE,QAAU,QAFH,SAGhBF,EAASG,KAAO,SAHA,SAIhBH,EAASI,KAAO,SAJA,SAKhBJ,EAASlgd,MAAQ,SALD,GAab0gd,EAAgC,SAAC/ygB,EAAUgzgB,GAC/C,KAAIA,EAAUhzgB,EAASizgB,UAAvB,CAGA,IAAMz4e,GAAM,IAAIzgE,MAAOugf,cACjBj+e,EAASy2iB,EAAcE,GAC7B,IAAI32iB,EAMF,MAAM,IAAI7K,MAAJ,qEAC0DwhjB,EAD1D,MANI,6BAN+Cn+iB,EAM/C,iCAN+CA,EAM/C,mBACV,EAAAvB,SAAQ+I,GAAR,oBACMm+D,EADN,cACex6B,EAAS3vC,KADxB,aAEKwE,GANN,CAaF,EAEY82iB,EAAAA,WAOX,WAAmBt7iB,IAAY,eAAZ,KAAIA,KAAJA,EAUX,KAAS6ijB,UAAGL,EAsBZ,KAAWM,YAAeJ,EAc1B,KAAeK,gBAAsB,KA1C3ClC,EAAU75iB,KAAKJ,KAChB,sCAOD,WACE,OAAOA,KAAKi8iB,SACb,MAED,SAAaxjhB,GACX,KAAMA,KAAO6ihB,GACX,MAAM,IAAI5xgB,UAAJ,yBAAgCjR,EAAhC,6BAERz4B,KAAKi8iB,UAAYxjhB,CAClB,4BAGD,SAAYA,GACVz4B,KAAKi8iB,UAA2B,kBAARxjhB,EAAmB8ihB,EAAkB9ihB,GAAOA,CACrE,yBAOD,WACE,OAAOz4B,KAAKk8iB,WACb,MACD,SAAezjhB,GACb,GAAmB,oBAARA,EACT,MAAM,IAAIiR,UAAU,qDAEtB1pC,KAAKk8iB,YAAczjhB,CACpB,6BAMD,WACE,OAAOz4B,KAAKm8iB,eACb,MACD,SAAmB1jhB,GACjBz4B,KAAKm8iB,gBAAkB1jhB,CACxB,sBAMD,WAAwB,2BAAf76B,EAAe,yBAAfA,EAAe,gBACtBoC,KAAKm8iB,iBAAmBn8iB,KAAKm8iB,gBAAL,MAAAn8iB,KAAA,CAAqBA,KAAMs7iB,EAAS57iB,OAApC,OAA8C9B,IACtEoC,KAAKk8iB,YAAL,MAAAl8iB,KAAA,CAAiBA,KAAMs7iB,EAAS57iB,OAAhC,OAA0C9B,GAC3C,oBACD,WAAsB,2BAAfA,EAAe,yBAAfA,EAAe,gBACpBoC,KAAKm8iB,iBACHn8iB,KAAKm8iB,gBAAL,MAAAn8iB,KAAA,CAAqBA,KAAMs7iB,EAASE,SAApC,OAAgD59iB,IAClDoC,KAAKk8iB,YAAL,MAAAl8iB,KAAA,CAAiBA,KAAMs7iB,EAASE,SAAhC,OAA4C59iB,GAC7C,qBACD,WAAuB,2BAAfA,EAAe,yBAAfA,EAAe,gBACrBoC,KAAKm8iB,iBAAmBn8iB,KAAKm8iB,gBAAL,MAAAn8iB,KAAA,CAAqBA,KAAMs7iB,EAASG,MAApC,OAA6C79iB,IACrEoC,KAAKk8iB,YAAL,MAAAl8iB,KAAA,CAAiBA,KAAMs7iB,EAASG,MAAhC,OAAyC79iB,GAC1C,qBACD,WAAuB,2BAAfA,EAAe,yBAAfA,EAAe,gBACrBoC,KAAKm8iB,iBAAmBn8iB,KAAKm8iB,gBAAL,MAAAn8iB,KAAA,CAAqBA,KAAMs7iB,EAASI,MAApC,OAA6C99iB,IACrEoC,KAAKk8iB,YAAL,MAAAl8iB,KAAA,CAAiBA,KAAMs7iB,EAASI,MAAhC,OAAyC99iB,GAC1C,sBACD,WAAwB,2BAAfA,EAAe,yBAAfA,EAAe,gBACtBoC,KAAKm8iB,iBAAmBn8iB,KAAKm8iB,gBAAL,MAAAn8iB,KAAA,CAAqBA,KAAMs7iB,EAASlgd,OAApC,OAA8Cx9F,IACtEoC,KAAKk8iB,YAAL,MAAAl8iB,KAAA,CAAiBA,KAAMs7iB,EAASlgd,OAAhC,OAA0Cx9F,GAC3C,OArFU82iB,itCCnFN,SAASrjI,EAAO94Y,EAAGtvB,GACxB,IAAIkb,EAAI,CAAC,EACT,IAAK,IAAItmB,KAAK06B,EAAOv6B,OAAOgK,UAAU6X,eAAephB,KAAK85B,EAAG16B,IAAMoL,EAAE7H,QAAQvD,GAAK,IAC9EsmB,EAAEtmB,GAAK06B,EAAE16B,IACb,GAAS,MAAL06B,GAAqD,oBAAjCv6B,OAAOsza,sBACtB,KAAI3oa,EAAI,EAAb,IAAgB9K,EAAIG,OAAOsza,sBAAsB/4Y,GAAI5vB,EAAI9K,EAAE8C,OAAQgI,IAC3DM,EAAE7H,QAAQvD,EAAE8K,IAAM,GAAK3K,OAAOgK,UAAUupa,qBAAqB9ya,KAAK85B,EAAG16B,EAAE8K,MACvEwb,EAAEtmB,EAAE8K,IAAM4vB,EAAE16B,EAAE8K,IAFF,CAIxB,OAAOwb,CACR,CAoG4BnmB,OAAOwS,OA0GXxS,OAAOwS,OAyDkB,oBAApB4riB,iBAAiCA,gBA0B/D,gBCzTM,SAAUC,EACdC,GAEA,YACiB30iB,IAAf20iB,QAC0C30iB,IAAzC20iB,EAAyBC,WAE7B,CAsBK,SAAUC,EACdF,GAEA,YACiB30iB,IAAf20iB,QACkD30iB,IAAjD20iB,EAAkCG,UAEtC,KASYC,GAAAA,EAAAA,EAAAA,IAWX,WAAYp2iB,GACV,IAD8C,eAPhD,KAAOq2iB,QAAW,GAKlB,KAAoBC,sBAAY,OAGAj1iB,IAA1BrB,EAASu2iB,aACX,MAAM,IAAItijB,MAAM,0BAGlByF,KAAK28iB,QAAUr2iB,EAASu2iB,aAAax6iB,MAAM,KAAK,GAChDrC,KAAK48iB,qBAAuBt2iB,EAASw2iB,0BAA0B3qf,MAC7D,SAAA4qf,GAAgB,MACgB,4BAA9BA,EAAiB3I,UACqB,QAAtC2I,EAAiBA,gBAFH,GAInB,IC8SH,SAASC,IAIP,OAAO,UACL,wCACE,0LAIL,CASM,IASMC,EAA6BD,EAuD7BE,EAA8B,IAAI/9hB,EAAAA,GAG7C,OAAQ,WAAY69hB,KC7chBG,EAAY,IAAIzI,EAAAA,GAAO,2BAiBb0I,EAASn8iB,GACvB,GAAIk8iB,EAAUnB,UAAYV,EAAAA,GAAAA,KAAe,4BADF19iB,EACE,iCADFA,EACE,kBACvCu/iB,EAAU7gjB,KAAV,MAAA6gjB,EAAS,iBAAejH,EAAAA,GAAf,cAAgCj1iB,IAAhC,OAA0CrD,GACpD,CACF,UAEey/iB,EAAUp8iB,GACxB,GAAIk8iB,EAAUnB,UAAYV,EAAAA,GAAAA,MAAgB,4BADF19iB,EACE,iCADFA,EACE,kBACxCu/iB,EAAU99iB,MAAV,MAAA89iB,EAAS,iBAAgBjH,EAAAA,GAAhB,cAAiCj1iB,IAAjC,OAA2CrD,GACrD,CACH,UCWgB0/iB,EACdC,GACkB,2BAAf3wT,EAAe,iCAAfA,EAAe,kBAElB,MAAM4wT,EAAmB,WAAnB,GAAoBD,GAApB,OAAmC3wT,GAC1C,UAae6wT,EACdF,GACkB,2BAAf3wT,EAAe,iCAAfA,EAAe,kBAElB,OAAO4wT,EAAmB,WAAnB,GAAoBD,GAApB,OAAmC3wT,GAC3C,UAEe8wT,EACdC,EACAtjjB,EACAD,GAEA,IAAMwjjB,EACA5/iB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,MAAA,UACH3D,EAAOD,IAOV,OALgB,IAAI+kB,EAAAA,GAClB,OACA,WACAy+hB,GAEaptiB,OAAOnW,EAAM,CAC1Bw6iB,QAAS8I,EAAKvkjB,MAEjB,UAEeykjB,EACdF,EACAh4gB,EACAoD,GAGA,KAAMpD,aADsBoD,GAM1B,MAN0BA,EAEF3vC,OAASusC,EAAO0B,YAAYjuC,MAClDkkjB,EAAMK,EAAI,kBAGND,EACJC,EAEA,mCAAWh4gB,EAAO0B,YAAYjuC,KAA9B,4FAIL,CAED,SAASokjB,EACPD,GACkB,2BAAf3wT,EAAe,iCAAfA,EAAe,kBAElB,GAA0B,kBAAf2wT,EAAyB,OAC5BljjB,EAAOuyP,EAAK,GACZkxT,GAAa,OAAIlxT,EAAK7nP,MAAM,IAKlC,OAJI+4iB,EAAW,KACbA,EAAW,GAAGjJ,QAAU0I,EAAWnkjB,OAG7B,EAAAmkjB,EAA4BQ,eAAcvtiB,OAA1C,SACNnW,GADM,eAEHyjjB,IAEN,CAED,OAAOZ,EAA4B1siB,OAA5B,MAAA0siB,EAA2B,CAChCK,GADgC,OAE5B3wT,GAEP,CAeK,SAAUoxT,EACdC,EACAV,GAGA,IAAKU,EAAW,4BAFbrxT,EAEa,iCAFbA,EAEa,kBACd,MAAM4wT,EAAmB,WAAnB,GAAoBD,GAApB,OAAmC3wT,GAC1C,CACF,CA4FK,SAAUsxT,EAAUC,GAGxB,IAAM/jjB,EAAU,8BAAgC+jjB,EAMhD,MALAd,EAAUjjjB,GAKJ,IAAIG,MAAMH,EACjB,CASe,SAAAgkjB,EACdH,EACA7jjB,GAEK6jjB,GACHC,EAAU9jjB,EAEd,UC7QgBikjB,UACd,MAAwB,qBAATrkjB,OAAqC,QAAb,EAAAA,KAAK24B,gBAAQj4B,IAAAA,OAAA,EAAAA,EAAEmhG,OAAS,EAChE,UAEeyid,IACd,MAA+B,UAAxBC,KAA2D,WAAxBA,GAC3C,UAEeA,UACd,MAAwB,qBAATvkjB,OAAqC,QAAb,EAAAA,KAAK24B,gBAAQj4B,IAAAA,OAAA,EAAAA,EAAEwiG,WAAa,IACrE,KCGashd,EAAAA,WAIX,WACmBC,EACAC,IAAiB,eADjB,KAAUD,WAAVA,EACA,KAASC,UAATA,EAGjBN,EACEM,EAAYD,EACZ,+CAEFz+iB,KAAKwtW,UAAW9vV,EAAAA,EAAAA,QAAqBM,EAAAA,EAAAA,KACtC,mCAED,WACE,MCtBqB,qBAAdP,WACPA,WACA,WAAYA,WACgB,mBAArBA,UAAU4ygB,SAMhBiuB,MAAoB3giB,EAAAA,EAAAA,OAAwB,eAAgBF,aAEtDA,UAAU4ygB,ODaR9mhB,KAAKsZ,IAAG,IAAmB7iB,KAAKy+iB,YAMlCz+iB,KAAKwtW,SAAWxtW,KAAK0+iB,UAAY1+iB,KAAKy+iB,UAC9C,OA1BUD,GEVG,SAAAG,EAAa5+iB,EAAwB4C,GACnDy7iB,EAAYr+iB,EAAO6+iB,SAAU,sCAC7B,IAAQ/7iB,EAAQ9C,EAAO6+iB,SAAf/7iB,IAER,OAAKF,EAIE,GAAP,OAAUE,GAAV,OAAgBF,EAAK+1C,WAAW,KAAO/1C,EAAKoC,MAAM,GAAKpC,GAH9CE,CAIX,KCVag8iB,EAAAA,sFAKX,SACEC,EACAC,EACAC,GAEAh/iB,KAAK8+iB,UAAYA,EACbC,IACF/+iB,KAAK++iB,YAAcA,GAEjBC,IACFh/iB,KAAKg/iB,aAAeA,EAEvB,sBAED,WACE,OAAIh/iB,KAAK8+iB,UACA9+iB,KAAK8+iB,UAEM,qBAAT9kjB,MAAwB,UAAWA,KACrCA,KAAKqM,WAEd63iB,EACE,kHAEH,wBAED,WACE,OAAIl+iB,KAAK++iB,YACA/+iB,KAAK++iB,YAEM,qBAAT/kjB,MAAwB,YAAaA,KACvCA,KAAK4L,aAEds4iB,EACE,oHAEH,yBAED,WACE,OAAIl+iB,KAAKg/iB,aACAh/iB,KAAKg/iB,aAEM,qBAAThljB,MAAwB,aAAcA,KACxCA,KAAKiljB,cAEdf,EACE,qHAEH,OArDUW,GCgHAK,GAAgB,eAE3B,sBAAoE,0BAFzC,SAI3B,uBAAgE,mBAJrC,SAO3B,qBAA6D,kBAPlC,SAS3B,uBAAgE,mBATrC,SAY3B,mBAA8D,mBAZnC,SAc3B,mBAA8D,qBAdnC,SAiB3B,eAAsD,yBAjB3B,SAkB3B,0BAA0E,0BAlB/C,SAqB3B,uBAAsE,uBArB3C,SAsB3B,wBAAuE,uBAtB5C,SAuB3B,mCACyC,8BAxBd,SA2B3B,mBAA4D,mBA3BjC,SA8B3B,kBAAyD,mBA9B9B,SA+B3B,8BAC2C,sBAhChB,SAkC3B,mBAA8D,wBAlCnC,SAmC3B,mBAA8D,wBAnCnC,SAqC3B,mBAA4D,mBArCjC,SAwC3B,iCAC8C,0BAzCnB,SA0C3B,mBAA0D,uBA1C/B,SA2C3B,gBAAwD,uBA3C7B,SA4C3B,iBAAyD,uBA5C9B,SA+C3B,8BAC2C,sBAhDhB,SAiD3B,sCACmD,wCAlDxB,SAqD3B,eAAsD,8BArD3B,SAsD3B,uBAAsE,4BAtD3C,SAuD3B,0BAAyE,uBAvD9C,SAwD3B,uBAAsE,4BAxD3C,SAyD3B,kBAAyD,iBAzD9B,SA8D3B,+BAC4C,6BA/DjB,SAgE3B,sBAAoE,8BAhEzC,SAmE3B,0BAA4E,4BAnEjD,SAsE3B,uBAAsE,+BAtE3C,SAyE3B,iCACmC,iCA1ER,SA2E3B,2BAAwE,gCA3E7C,SA4E3B,4BAAuE,8BA5E5C,SA6E3B,iCACmC,iCA9ER,SA+E3B,uBAC8C,iCAhFnB,SAiF3B,+BAC4C,yCAlFjB,SAqF3B,mCAA4E,mBArFjD,SAwF3B,wBAAwE,0BAxF7C,SAyF3B,0BAA4E,4BAzFjD,SA0F3B,0BAA4E,4BA1FjD,SA2F3B,2BACwC,6BA5Fb,SA6F3B,sBAAoE,wBA7FzC,SA8F3B,4BACyC,8BA/Fd,SAgG3B,4BACyC,8BAjGd,SAkG3B,mBAA8D,oBAlGnC,GC1ChBC,EAAyB,IAAIX,EAAM,IAAQ,KAExC,SAAAY,EACdzB,EACA92iB,GAEA,OAAI82iB,EAAK0B,WAAax4iB,EAAQw4iB,SACrB,OAAP,wBACKx4iB,GACH,CAAAw4iB,SAAU1B,EAAK0B,WAGZx4iB,CACR,UAEqBy4iB,EAAAA,EAAAA,EAAAA,EAAAA,gFAAf,WACL3B,EACAv4iB,EACAzC,EACAkE,GAJK,+FAKL04iB,EALK,+BAKkD,CAAC,EALnD,kBAOEC,EAA+B7B,EAAM4B,GAAP,uBAAuB,sGACtDj6iB,EAAO,CAAC,EACRhB,EAAS,CAAC,EACVuC,IACa,QAAXzB,EACFd,EAASuC,EAETvB,EAAO,CACLA,KAAMQ,KAAKC,UAAUc,KAKrBouF,GAAQ10E,EAAAA,EAAAA,IAAY,OAAD,QACvBje,IAAKq7iB,EAAK59iB,OAAO0/iB,QACdn7iB,IACFS,MAAM,GAhBiD,SAkBnC44iB,EAAsB+B,wBAlBa,cAkBpD97iB,EAlBoD,QAmBlD,gBAA2B,mBAE/B+5iB,EAAKgC,eACP/7iB,EAAqC,qBAAG+5iB,EAAKgC,cAtBW,kBAyBnDd,EAAcx4iB,OAAdw4iB,CACLe,GAAgBjC,EAAMA,EAAK59iB,OAAO8/iB,QAASl9iB,EAAMsyF,GAAMj3F,OAAAA,OAAAA,CAErDoH,OAAAA,EACAxB,QAAAA,EACAk8iB,eAAgB,eACbx6iB,KA/BmD,8CAPvD,4EA4Cek6iB,EAAAA,EAAAA,EAAAA,gFAAf,WACL7B,EACA4B,EACAhzB,GAHK,qGAKJoxB,EAAsBoC,kBAAmB,EACpCnC,EAAgB5/iB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,GAAqBuhjB,GANtC,SAQGS,EAAiB,IAAIC,GAAyBtC,GARjD,SAS8Bh/iB,QAAQuhjB,KAAwB,CAC/D3zB,IACAyzB,EAAe1iiB,UAXd,cASGhX,EATH,OAgBH05iB,EAAeG,sBAhBZ,UAkBgB75iB,EAASI,OAlBzB,aAmBC,qBADEA,EAlBH,gCAoBK05iB,GAAiBzC,EAAuC,2CAAAj3iB,GApB7D,YAuBCJ,EAASE,IAAQ,iBAAkBE,EAvBpC,0CAwBMA,GAxBN,WA0BK25iB,EAAe/5iB,EAASE,GAAKE,EAAK25iB,aAAe35iB,EAAKrH,MAAMjF,QA1BjE,EA2B6CimjB,EAAah+iB,MAAM,OA3BhE,eA2BMi+iB,EA3BN,KA2BuBC,EA3BvB,KA4BuB,qCAApBD,EA5BH,uBA6BOF,GACJzC,EAEA,4BAAAj3iB,GAhCH,WAkC8B,iBAApB45iB,EAlCV,uBAmCOF,GAAiBzC,EAAkC,uBAAAj3iB,GAnC1D,WAoC8B,kBAApB45iB,EApCV,uBAqCOF,GAAiBzC,EAAmC,gBAAAj3iB,GArC3D,WAuCK85iB,EACJ5C,EAAS0C,IACRA,EACE9riB,cACA5S,QAAQ,UAAW,MACpB2+iB,EA5CH,uBA6CO7C,EAAwBC,EAAM6C,EAAWD,GA7ChD,QA+CCjD,EAAMK,EAAM6C,GA/Cb,+DAmDC,gBAAazhiB,EAAAA,IAnDd,oCAyDHu+hB,EAAMK,EAA4C,0BAAE,QAAWl0iB,OAAO,EAAD,MAzDlE,0FA6Deg3iB,EAAAA,EAAAA,EAAAA,EAAAA,gFAAf,WACL9C,EACAv4iB,EACAzC,EACAkE,GAJK,iGAKL04iB,EALK,+BAKkD,CAAC,EALnD,SAOyBD,EAC5B3B,EACAv4iB,EACAzC,EACAkE,EACA04iB,GAZG,aAcD,yBAPE7kd,EAPD,SAeH4id,EAAMK,EAAkC,8BACtC+C,gBAAiBhmd,IAhBhB,kBAoBEA,GApBF,mEAuBD,SAAUkld,GACdjC,EACA90f,EACAlmD,EACAsyF,GAEA,IAAM59D,EAAO,GAAH,OAAMwxB,GAAN,OAAalmD,EAAb,YAAqBsyF,GAE/B,OAAM0od,EAAsB59iB,OAAO6+iB,SAI5BD,EAAahB,EAAK59iB,OAA0Bs3B,GAH1C,GAAP,OAAUsmhB,EAAK59iB,OAAO4gjB,UAAtB,cAAqCtphB,EAIxC,KAEK4ohB,GAAAA,WAiBJ,WAA6BtC,GAAU,2BAAV,KAAIA,KAAJA,EAbrB,KAAKx2G,MAAe,KACnB,KAAO7pb,QAAG,IAAI3e,SAAW,SAACG,EAAGU,GACpC,EAAK2nc,MAAQ5xa,YAAW,WACtB,OAAO/1B,EACLi+iB,EAAa,EAAKE,KAA2C,0BAEhE,GAAEwB,EAAuBvljB,MAC3B,GAM0C,mDAJ3C,WACE07B,aAAat1B,KAAKmnc,MACnB,OAfG84G,YAyBUG,GACdzC,EACAtjjB,EACAiM,GAEA,IAAMs6iB,EAAgC,CACpC/L,QAAS8I,EAAKvkjB,MAGZkN,EAASwtB,QACX8shB,EAAY9shB,MAAQxtB,EAASwtB,OAE3BxtB,EAASu6iB,cACXD,EAAYC,YAAcv6iB,EAASu6iB,aAGrC,IAAMxhjB,EAAQo+iB,EAAaE,EAAMtjjB,EAAMumjB,GAIvC,OADCvhjB,EAAM2f,WAAwC8hiB,eAAiBx6iB,EACzDjH,CACT,UCtQsB0hjB,GAAmB,mFAAlC,WAAkCpD,GAAlC,sFAGK2B,EACJ3B,EAGD,6BAPA,sBAQDqD,iBARC,0BAQmB,GARnB,iHA6BeC,GAAmB,EAAnBA,mFAAf,WACLtD,EACA92iB,GAFK,+FAIEy4iB,EAIL3B,EAGA,4BAAAyB,EAAmBzB,EAAM92iB,KAXtB,2ECnCeq6iB,GAAc,EAAdA,mFAAf,WACLvD,EACA92iB,GAFK,+FAIEy4iB,EACL3B,EAGA,6BAAA92iB,IARG,2EA8Bes6iB,GAAqB,EAArBA,mFAAf,WACLxD,EACA92iB,GAFK,+FAIEy4iB,EAGL3B,EAAkD,6BAAA92iB,IAP/C,2EAiCeu6iB,GAAe,EAAfA,mFAAf,WACLzD,EACA92iB,GAFK,+FAIEy4iB,EACL3B,EAGA,6BAAA92iB,IARG,kECvED,SAAUw6iB,GACdC,GAEA,GAAKA,EAGL,IAEE,IAAMrthB,EAAO,IAAInxB,KAAK41B,OAAO4ohB,IAE7B,IAAK3lf,MAAM1nC,EAAKyhC,WAEd,OAAOzhC,EAAKlxB,aAIf,CAFC,MAAOkG,GAER,CAEH,iDCmBO,WACLs4iB,GADK,yGAELC,EAFK,gCAICC,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,GAJnC,SAKeE,EAAaC,WAAWF,GALvC,cAKCl2iB,EALD,OAQL0yiB,GAFM2D,EAASC,GAAYt2iB,KAGfq2iB,EAAOE,KAAOF,EAAOG,WAAaH,EAAOI,IACnDN,EAAa9D,KAAI,kBAGbqE,EACuB,kBAApBL,EAAOK,SAAwBL,EAAOK,cAAWr6iB,EAEpDs6iB,EAAqC,OAAAD,QAAQ,IAARA,OAAQ,EAARA,EAAQ,iBAhB9C,kBAkBE,CACLL,OAAAA,EACAr2iB,MAAAA,EACA42iB,SAAUb,GACRc,GAA4BR,EAAOG,YAErCM,aAAcf,GACZc,GAA4BR,EAAOI,MAErC5b,eAAgBkb,GACdc,GAA4BR,EAAOE,MAErCI,eAAgBA,GAAkB,KAClCI,oBAAoB,OAAAL,QAAA,IAAAA,OAAA,EAAAA,EAAQ,wBAA+B,OA/BxD,qEAmCP,SAASG,GAA4B9he,GACnC,OAAyB,IAAlB3nD,OAAO2nD,EACf,CAEK,SAAUuhe,GAAYt2iB,GAC1B,MAAwCA,EAAMjJ,MAAM,KAApD,eAAOigjB,EAAP,KAAkBxrC,EAAlB,KAA2ByrC,EAA3B,KACA,QACgB56iB,IAAd26iB,QACY36iB,IAAZmvgB,QACcnvgB,IAAd46iB,EAGA,OADAlF,EAAU,kDACH,KAGT,IACE,IAAMvgiB,GAAUP,EAAAA,EAAAA,IAAau6f,GAC7B,OAAKh6f,EAIEhX,KAAK6G,MAAMmQ,IAHhBugiB,EAAU,uCACH,KASV,CANC,MAAOp0iB,GAKP,OAJAo0iB,EACE,2CACC,OAAAp0iB,QAAA,IAAAA,OAAA,EAAAA,EAAa3L,YAET,IACR,CACF,UChGqBkljB,GAAAA,EAAAA,mFAAf,WACLjB,EACAjkiB,GAFK,qKAMIA,GANJ,gCASUA,EATV,6EAWC,gBAAayB,EAAAA,IAAiB0jiB,GAAkB,EAAD,KAXhD,oBAYGlB,EAAK5D,KAAK+E,cAAgBnB,EAZ7B,kCAaOA,EAAK5D,KAAKgF,UAbjB,qGAqBP,SAASF,GAAT,GAAkD,IAArBpojB,EAAqB,EAArBA,KAC3B,OACEA,IAAS,QAAL,OAAa,kBACjBA,IAAS,QAAL,OAAa,qBAErB,KCpBauojB,GAAAA,WAUX,WAA6BrB,IAAkB,eAAlB,KAAIA,KAAJA,EATrB,KAASsB,WAAG,EAMZ,KAAOn0f,QAAe,KACtB,KAAAo0f,aAA0C,GAEC,sCAEnD,WACM9ijB,KAAK6ijB,YAIT7ijB,KAAK6ijB,WAAY,EACjB7ijB,KAAKyvhB,WACN,sBAED,WACOzvhB,KAAK6ijB,YAIV7ijB,KAAK6ijB,WAAY,EACI,OAAjB7ijB,KAAK0uD,SACPp5B,aAAat1B,KAAK0uD,SAErB,4BAEO,SAAYq0f,SAClB,GAAIA,EAAU,CACZ,IAAMpme,EAAW38E,KAAK8ijB,aAKtB,OAJA9ijB,KAAK8ijB,aAAev5iB,KAAKsZ,IACH,EAApB7iB,KAAK8ijB,aAAgB,MAGhBnme,CACR,CAEC38E,KAAK8ijB,aAAY,IACjB,IACMnme,GADsD,QAA5C,EAAA38E,KAAKuhjB,KAAKyB,gBAAgB7c,sBAAkBzriB,IAAAA,EAAAA,EAAA,GACjCoI,KAAKygE,MAAK,IAErC,OAAOh6D,KAAKkuB,IAAI,EAAGklD,EAEtB,yBAEO,WAAyB,WAAhBome,EAAgB,wDAC/B,GAAK/ijB,KAAK6ijB,UAAV,CAKA,IAAMlme,EAAW38E,KAAKi9X,YAAY8lL,GAClC/ijB,KAAK0uD,QAAUn5B,YAAU,uBAAC,mGAClB,EAAK0thB,YADa,2CAEvBtme,EALF,CAMF,mEAEO,4GAEE38E,KAAKuhjB,KAAKG,YAAW,GAFvB,8DAMkB,OAAnB,gCAAqBrnjB,QAAtB,eACQ,2BAER2F,KAAKyvhB,UAAwB,GAT3B,0BAcNzvhB,KAAKyvhB,WAdC,mHA9DGmzB,GCPAM,GAAAA,WAIX,WACUC,EACAC,IAA6B,eAD7B,KAASD,UAATA,EACA,KAAWC,YAAXA,EAERpjjB,KAAKqjjB,iBACN,+CAEO,WACNrjjB,KAAKsjjB,eAAiBjC,GAAyBrhjB,KAAKojjB,aACpDpjjB,KAAKujjB,aAAelC,GAAyBrhjB,KAAKmjjB,UACnD,sBAED,SAAMK,GACJxjjB,KAAKmjjB,UAAYK,EAASL,UAC1BnjjB,KAAKojjB,YAAcI,EAASJ,YAC5BpjjB,KAAKqjjB,iBACN,uBAED,WACE,MAAO,CACLF,UAAWnjjB,KAAKmjjB,UAChBC,YAAapjjB,KAAKojjB,YAErB,OA3BUF,YCSSO,GAAqB,mFAApC,WAAoClC,GAApC,uGACC5D,EAAO4D,EAAK5D,KADb,SAEiB4D,EAAKG,aAFtB,cAECgC,EAFD,gBAGkBlB,GACrBjB,EACAH,GAAezD,EAAM,CAAE+F,QAAAA,KALpB,OAQL1F,EAAQ,QALF13iB,EAHD,cAQG,IAAAA,OAAA,EAAAA,EAAUq9iB,MAAMhjjB,OAAQg9iB,EAAI,kBAE9BiG,EAAct9iB,EAASq9iB,MAAM,GAEnCpC,EAAKsC,sBAAsBD,GAErBE,GAA8C,QAA5B,EAAAF,EAAYG,wBAAgBrpjB,IAAAA,OAAA,EAAAA,EAAEiG,QAClDqjjB,GAAoBJ,EAAYG,kBAChC,GAEEE,EAAeC,GAAkB3C,EAAK0C,aAAcH,GAOpDK,EAAiB5C,EAAK3ugB,YACtBwxgB,IACF7C,EAAKzthB,OAAS8vhB,EAAYS,iBAAkB,OAAAJ,QAAY,IAAZA,OAAY,EAAZA,EAActjjB,QACxDiyC,IAAeuxgB,GAAyBC,EAExCE,EAAiC,CACrCtpG,IAAK4oG,EAAYW,QACjB7riB,YAAakriB,EAAYlriB,aAAe,KACxC8riB,SAAUZ,EAAYa,UAAY,KAClC3whB,MAAO8vhB,EAAY9vhB,OAAS,KAC5B4whB,cAAed,EAAYc,gBAAiB,EAC5C7D,YAAa+C,EAAY/C,aAAe,KACxCxB,SAAUuE,EAAYvE,UAAY,KAClC4E,aAAAA,EACAT,SAAU,IAAIN,GAAaU,EAAYT,UAAWS,EAAYR,aAC9DxwgB,YAAAA,GAGF50C,OAAOmH,OAAOo8iB,EAAM+C,GA3Cf,4EAqDej+c,GAAAA,mFAAf,WAAsBk7c,GAAtB,mFACCE,GAA6B3+hB,EAAAA,EAAAA,IAAmBy+hB,GADjD,SAECkC,GAAqBhC,GAFtB,uBAOCA,EAAa9D,KAAKgH,sBAAsBlD,GAPzC,OAQLA,EAAa9D,KAAKiH,0BAA0BnD,GARvC,kEAWP,SAASyC,GACPlif,EACAk2X,GAEA,IAAM2sH,EAAU7if,EAASxnC,QACvB,SAAAkmG,GAAC,OAAKw3T,EAAQ/lY,MAAK,SAAAluC,GAAC,OAAIA,EAAE6giB,aAAepkb,EAAEokb,UAAvB,GAAnB,IAEH,MAAO,GAAP,eAAWD,IAAX,OAAuB3sH,GACxB,CAED,SAAS8rH,GAAoB5I,GAC3B,OAAOA,EAAUr3iB,KAAI,SAACrJ,GAAA,IAAEoqjB,EAAyBpqjB,EAAzBoqjB,WAAe1Q,EAAQ/iI,EAAAA,EAAzB,gBACpB,MAAO,CACLyzI,WAAAA,EACA9pG,IAAKo5F,EAAS2Q,OAAS,GACvBrsiB,YAAa07hB,EAAS17hB,aAAe,KACrCob,MAAOsghB,EAAStghB,OAAS,KACzB+shB,YAAazM,EAASyM,aAAe,KACrC2D,SAAUpQ,EAASqQ,UAAY,KAElC,GACH,UCnEsBO,GAAgB,EAAhBA,mFAAf,WACLrH,EACAsH,GAFK,4FAKGzF,EACJ7B,EACA,CAAC,GAFiC,uBAGlC,0GACQr4iB,GAAOib,EAAAA,EAAAA,IAAY,CACvB,WAAc,gBACd,cAAiB0kiB,IAChBlgjB,MAAM,GAJX,EAKmC44iB,EAAK59iB,OAA9BmljB,EALV,EAKUA,aAAczF,EALxB,EAKwBA,OAChB58iB,EAAM+8iB,GACVjC,EACAuH,EAAY,YAFa,cAIlBzF,IAVX,SAayB9B,EAAsB+B,wBAb/C,cAaQ97iB,EAbR,QAcU,gBAA2B,oCAdrC,kBAgBSi7iB,EAAcx4iB,OAAdw4iB,CAAsBh8iB,EAAK,CAChCuC,OAAuB,OACvBxB,QAAAA,EACA0B,KAAAA,KAnBJ,4CARC,cAICgB,EAJD,yBAiCE,CACL6+iB,YAAa7+iB,EAAS8+iB,aACtBC,UAAW/+iB,EAASg/iB,WACpBL,aAAc3+iB,EAASi/iB,gBApCpB,sECRMC,GAAAA,WAAb,6BACE,KAAYP,aAAkB,KAC9B,KAAWE,YAAkB,KAC7B,KAAchf,eAAkB,IAkIjC,uCAhIC,WACE,OACGnmiB,KAAKmmiB,gBACNrjiB,KAAKygE,MAAQvjE,KAAKmmiB,eAAqC,GAE1D,yCAED,SACE7/hB,GAEA03iB,EAAQ13iB,EAASo9iB,QAAO,kBACxB1F,EAC8B,qBAArB13iB,EAASo9iB,QAAuB,kBAGzC1F,EACmC,qBAA1B13iB,EAAS2+iB,aAA4B,kBAG9C,IAAMI,EACJ,cAAe/+iB,GAA0C,qBAAvBA,EAAS++iB,UACvC3shB,OAAOpyB,EAAS++iB,WNyDpB,SAA0B/5iB,GAC9B,IAAMm6iB,EAAc7D,GAAYt2iB,GAIhC,OAHA0yiB,EAAQyH,EAAW,kBACnBzH,EAAmC,qBAApByH,EAAY5D,IAAmB,kBAC9C7D,EAAmC,qBAApByH,EAAY1D,IAAmB,kBACvCrphB,OAAO+shB,EAAY5D,KAAOnphB,OAAO+shB,EAAY1D,IACtD,CM9DU2D,CAAgBp/iB,EAASo9iB,SAC/B1jjB,KAAK2ljB,0BACHr/iB,EAASo9iB,QACTp9iB,EAAS2+iB,aACTI,EAEH,kEAED,WACE1H,GADF,2FAEE6D,EAFF,gCAIExD,GACGh+iB,KAAKmljB,aAAenljB,KAAKiljB,aAC1BtH,EAAI,sBAID6D,IAAgBxhjB,KAAKmljB,aAAgBnljB,KAAK4ljB,UAVjD,yCAWW5ljB,KAAKmljB,aAXhB,WAcMnljB,KAAKiljB,aAdX,gCAeUjljB,KAAKwlG,QAAQm4c,EAAM39iB,KAAKiljB,cAflC,gCAgBWjljB,KAAKmljB,aAhBhB,gCAmBS,MAnBT,sIAsBA,WACEnljB,KAAKiljB,aAAe,IACrB,iEAEO,WAActH,EAAoBkI,GAAlC,kGACiDb,GACrDrH,EACAkI,GAHI,gBACEV,EADF,EACEA,YAAaF,EADf,EACeA,aAAcI,EAD7B,EAC6BA,UAInCrljB,KAAK2ljB,0BACHR,EACAF,EACAvshB,OAAO2shB,IARH,gJAYA,SACNF,EACAF,EACAa,GAEA9ljB,KAAKiljB,aAAeA,GAAgB,KACpCjljB,KAAKmljB,YAAcA,GAAe,KAClCnljB,KAAKmmiB,eAAiBrjiB,KAAKygE,MAAuB,IAAfuif,CACpC,uBA+BD,WACE,MAAO,CACLb,aAAcjljB,KAAKiljB,aACnBE,YAAanljB,KAAKmljB,YAClBhf,eAAgBnmiB,KAAKmmiB,eAExB,wBAED,SAAQ6c,GACNhjjB,KAAKmljB,YAAcnC,EAAgBmC,YACnCnljB,KAAKiljB,aAAejC,EAAgBiC,aACpCjljB,KAAKmmiB,eAAiB6c,EAAgB7c,cACvC,uBAED,WACE,OAAOnoiB,OAAOmH,OAAO,IAAIqgjB,EAAmBxljB,KAAKwsD,SAClD,gCAED,WACE,OAAO0xf,EAAU,kBAClB,2BAjDD,SAAgBrJ,EAAiBlvgB,GAC/B,IAAQs/gB,EAA8Ct/gB,EAA9Cs/gB,aAAcE,EAAgCx/gB,EAAhCw/gB,YAAahf,EAAmBxggB,EAAnBwggB,eAE7B4f,EAAU,IAAIP,EAuBpB,OAtBIP,IACFjH,EAAgC,kBAAjBiH,EAAyD,kBACtEpQ,QAAAA,IAEFkR,EAAQd,aAAeA,GAErBE,IACFnH,EAA+B,kBAAhBmH,EAAwD,kBACrEtQ,QAAAA,IAEFkR,EAAQZ,YAAcA,GAEpBhf,IACF6X,EAC4B,kBAAnB7X,EAEP,kBACE0O,QAAAA,IAGJkR,EAAQ5f,eAAiBA,GAEpB4f,CACR,OA9GUP,GCGb,SAASQ,GACP/H,EACApJ,GAEAmJ,EACuB,kBAAdC,GAA+C,qBAAdA,EAExC,kBAAEpJ,QAAAA,GAEL,KAEYoR,GAAAA,WAwBX,WAAYvrjB,IAAsD,mBAApDsgd,EAA0Btgd,EAA1Bsgd,IAAK2iG,EAAqBjjjB,EAArBijjB,KAAMqF,EAAetojB,EAAfsojB,gBAAoBkD,EAAjC70I,EAAAA,EAAAA,CAAAA,MAAAA,OAAAA,oBAtBH,KAAAyzI,WAAiC,WAoBzB,KAAAqB,iBAAmB,IAAIvD,GAAiB5ijB,MA6CjD,KAAcomjB,eAAuB,KACrC,KAAcC,eAA+B,KA3CnDrmjB,KAAKg7c,IAAMA,EACXh7c,KAAK29iB,KAAOA,EACZ39iB,KAAKgjjB,gBAAkBA,EACvBhjjB,KAAKmljB,YAAcnC,EAAgBmC,YACnCnljB,KAAK0Y,YAAcwtiB,EAAIxtiB,aAAe,KACtC1Y,KAAK8zB,MAAQoyhB,EAAIpyhB,OAAS,KAC1B9zB,KAAK0kjB,cAAgBwB,EAAIxB,gBAAiB,EAC1C1kjB,KAAK6gjB,YAAcqF,EAAIrF,aAAe,KACtC7gjB,KAAKwkjB,SAAW0B,EAAI1B,UAAY,KAChCxkjB,KAAK4yC,YAAcszgB,EAAItzgB,cAAe,EACtC5yC,KAAKq/iB,SAAW6G,EAAI7G,UAAY,KAChCr/iB,KAAKikjB,aAAeiC,EAAIjC,cAAJ,OAAuBiC,EAAIjC,cAAgB,GAC/DjkjB,KAAKwjjB,SAAW,IAAIN,GAClBgD,EAAI/C,gBAAax7iB,EACjBu+iB,EAAI9C,kBAAez7iB,EAEtB,mFAED,WAAiB65iB,GAAjB,4FAC4BgB,GACxBxijB,KACAA,KAAKgjjB,gBAAgBsD,SAAStmjB,KAAK29iB,KAAM6D,IAH7C,UAKExD,EAJMmH,EADR,OAKuBnljB,KAAK29iB,KAAI,kBAE1B39iB,KAAKmljB,cAAgBA,EAP3B,uBAQInljB,KAAKmljB,YAAcA,EARvB,SASUnljB,KAAK29iB,KAAKgH,sBAAsB3kjB,MAT1C,OAUIA,KAAK29iB,KAAKiH,0BAA0B5kjB,MAVxC,gCAaSmljB,GAbT,sIAgBA,SAAiB3D,GACf,gBP5DkB+E,mCO4DXA,CAAiBvmjB,KAAMwhjB,EAC/B,uBAED,WACE,OAAOn7c,GAAOrmG,KACf,wBAKD,SAAQuhjB,GACFvhjB,OAASuhjB,IAGbvD,EAAQh+iB,KAAKg7c,MAAQumG,EAAKvmG,IAAKh7c,KAAK29iB,KAAI,kBACxC39iB,KAAK0Y,YAAc6oiB,EAAK7oiB,YACxB1Y,KAAKwkjB,SAAWjD,EAAKiD,SACrBxkjB,KAAK8zB,MAAQythB,EAAKzthB,MAClB9zB,KAAK0kjB,cAAgBnD,EAAKmD,cAC1B1kjB,KAAK6gjB,YAAcU,EAAKV,YACxB7gjB,KAAK4yC,YAAc2ugB,EAAK3ugB,YACxB5yC,KAAKq/iB,SAAWkC,EAAKlC,SACrBr/iB,KAAKikjB,aAAe1C,EAAK0C,aAAalgjB,KAAI,SAAAyijB,GAAQ,wBAAUA,EAAV,IAClDxmjB,KAAKwjjB,SAASiD,MAAMlF,EAAKiC,UACzBxjjB,KAAKgjjB,gBAAgB0D,QAAQnF,EAAKyB,iBACnC,uBAED,SAAOrF,GACL,IAAMgJ,EAAU,IAAIV,EACfjojB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,MAAI,CACP2/iB,KAAAA,EACAqF,gBAAiBhjjB,KAAKgjjB,gBAAgB4D,YAGxC,OADAD,EAAQnD,SAASiD,MAAMzmjB,KAAKwjjB,UACrBmD,CACR,0BAED,SAAUppjB,GAERygjB,GAASh+iB,KAAKqmjB,eAAgBrmjB,KAAK29iB,KAAI,kBACvC39iB,KAAKqmjB,eAAiB9ojB,EAClByC,KAAKomjB,iBACPpmjB,KAAK6jjB,sBAAsB7jjB,KAAKomjB,gBAChCpmjB,KAAKomjB,eAAiB,KAEzB,sCAED,SAAsBI,GAChBxmjB,KAAKqmjB,eACPrmjB,KAAKqmjB,eAAeG,GAGpBxmjB,KAAKomjB,eAAiBI,CAEzB,uCAED,WACExmjB,KAAKmmjB,iBAAiB38Z,QACvB,sCAED,WACExpJ,KAAKmmjB,iBAAiB17Z,OACvB,kFAED,WACEnkJ,GADF,6FAEE+/F,EAFF,gCAIMwgd,GAAkB,EAEpBvgjB,EAASo9iB,SACTp9iB,EAASo9iB,UAAY1jjB,KAAKgjjB,gBAAgBmC,cAE1CnljB,KAAKgjjB,gBAAgB8D,yBAAyBxgjB,GAC9CugjB,GAAkB,IAGhBxgd,EAbN,gCAcUo9c,GAAqBzjjB,MAd/B,uBAiBQA,KAAK29iB,KAAKgH,sBAAsB3kjB,MAjBxC,OAkBM6mjB,GACF7mjB,KAAK29iB,KAAKiH,0BAA0B5kjB,MAnBxC,oKAuBA,yGACwBA,KAAK0hjB,aAD7B,cACQgC,EADR,gBAEQlB,GAAqBxijB,KAAMkhjB,GAAclhjB,KAAK29iB,KAAM,CAAE+F,QAAAA,KAF9D,cAGE1jjB,KAAKgjjB,gBAAgB+D,oBAHvB,kBAQS/mjB,KAAK29iB,KAAKgF,WARnB,0HAWA,WACE,OAAO,OAAP,sBACE3nG,IAAKh7c,KAAKg7c,IACVlnb,MAAO9zB,KAAK8zB,YAASnsB,EACrB+8iB,cAAe1kjB,KAAK0kjB,cACpBhsiB,YAAa1Y,KAAK0Y,kBAAe/Q,EACjCirC,YAAa5yC,KAAK4yC,YAClB4xgB,SAAUxkjB,KAAKwkjB,eAAY78iB,EAC3Bk5iB,YAAa7gjB,KAAK6gjB,kBAAel5iB,EACjC03iB,SAAUr/iB,KAAKq/iB,eAAY13iB,EAC3Bs8iB,aAAcjkjB,KAAKikjB,aAAalgjB,KAAI,SAAAyijB,GAAQ,wBAAUA,EAAV,IAC5CxD,gBAAiBhjjB,KAAKgjjB,gBAAgBx2f,SAGtCw6f,iBAAkBhnjB,KAAKgnjB,kBACpBhnjB,KAAKwjjB,SAASh3f,UAAQ,CAGzBizf,OAAQz/iB,KAAK29iB,KAAK59iB,OAAO0/iB,OACzB5K,QAAS70iB,KAAK29iB,KAAKvkjB,MAItB,2BAED,WACE,OAAO4G,KAAKgjjB,gBAAgBiC,cAAgB,EAC7C,4BAED,SAAiBtH,EAAoBh4gB,uBAC7BjtB,EAAgC,QAAlB,EAAAitB,EAAOjtB,mBAAWhe,IAAAA,EAAAA,OAAIiN,EACpCmsB,EAAoB,QAAZ,EAAA6R,EAAO7R,aAAKn5B,IAAAA,EAAAA,OAAIgN,EACxBk5iB,EAAgC,QAAlB,EAAAl7gB,EAAOk7gB,mBAAWjmjB,IAAAA,EAAAA,OAAI+M,EACpC68iB,EAA0B,QAAf,EAAA7+gB,EAAO6+gB,gBAAQ3pjB,IAAAA,EAAAA,OAAI8M,EAC9B03iB,EAA0B,QAAf,EAAA15gB,EAAO05gB,gBAAQvkjB,IAAAA,EAAAA,OAAI6M,EAC9Bq/iB,EAA0C,QAAvB,EAAArhhB,EAAOqhhB,wBAAgBngF,IAAAA,EAAAA,OAAIl/d,EAC9Cw7iB,EAA4B,QAAhB,EAAAx9gB,EAAOw9gB,iBAAS8D,IAAAA,EAAAA,OAAIt/iB,EAChCy7iB,EAAgC,QAAlB,EAAAz9gB,EAAOy9gB,mBAAW8D,IAAAA,EAAAA,OAAIv/iB,EAExCqzc,EAKEr1a,EALFq1a,IACA0pG,EAIE/+gB,EAJF++gB,cACA9xgB,EAGEjN,EAHFiN,YACAqxgB,EAEEt+gB,EAFFs+gB,aACiBkD,EACfxhhB,EADFq9gB,gBAGFhF,EAAQhjG,GAAOmsG,EAAyBxJ,EAAI,kBAE5C,IAAMqF,EAAkBwC,GAAgB4B,SACtCpnjB,KAAK5G,KACL+tjB,GAGFnJ,EAAuB,kBAARhjG,EAAkB2iG,EAAI,kBACrCqI,GAAwBttiB,EAAailiB,EAAKvkjB,MAC1C4sjB,GAAwBlyhB,EAAO6phB,EAAKvkjB,MACpC4kjB,EAC2B,mBAAlB0G,EACP/G,EAAI,kBAGNK,EACyB,mBAAhBprgB,EACP+qgB,EAAI,kBAGNqI,GAAwBnF,EAAalD,EAAKvkjB,MAC1C4sjB,GAAwBxB,EAAU7G,EAAKvkjB,MACvC4sjB,GAAwB3G,EAAU1B,EAAKvkjB,MACvC4sjB,GAAwBgB,EAAkBrJ,EAAKvkjB,MAC/C4sjB,GAAwB7C,EAAWxF,EAAKvkjB,MACxC4sjB,GAAwB5C,EAAazF,EAAKvkjB,MAC1C,IAAMmojB,EAAO,IAAI0E,EAAS,CACxBjrG,IAAAA,EACA2iG,KAAAA,EACA7phB,MAAAA,EACA4whB,cAAAA,EACAhsiB,YAAAA,EACAk6B,YAAAA,EACA4xgB,SAAAA,EACA3D,YAAAA,EACAxB,SAAAA,EACA2D,gBAAAA,EACAG,UAAAA,EACAC,YAAAA,IAWF,OARIa,GAAgBp/iB,MAAMC,QAAQm/iB,KAChC1C,EAAK0C,aAAeA,EAAalgjB,KAAI,SAAAyijB,GAAQ,OAAIxojB,OAAAA,OAAAA,CAAAA,EAAMwojB,EAAV,KAG3CQ,IACFzF,EAAKyF,iBAAmBA,GAGnBzF,CACR,8EAOD,WACE5D,EACA0J,GAFF,mGAGEz0gB,EAHF,iCAKQowgB,EAAkB,IAAIwC,IACZsB,yBAAyBO,GAGnC9F,EAAO,IAAI0E,EAAS,CACxBjrG,IAAKqsG,EAAgB9C,QACrB5G,KAAAA,EACAqF,gBAAAA,EACApwgB,YAAAA,IAbJ,SAiBQ6wgB,GAAqBlC,GAjB7B,gCAkBSA,GAlBT,wGArQW0E,GCxBPqB,GAAuC,IAAIpujB,IAE3C,SAAUqujB,GAAgBC,GAC9BpJ,EAAYoJ,aAAe7xG,SAAU,+BACrC,IAAI5sa,EAAWu+gB,GAAc1tjB,IAAI4tjB,GAEjC,OAAIz+gB,GACFq1gB,EACEr1gB,aAAoBy+gB,EACpB,kDAEKz+gB,IAGTA,EAAW,IAAKy+gB,EAChBF,GAAcnujB,IAAIqujB,EAAKz+gB,GAChBA,EACT,KCrBa0+gB,GAAAA,WAAb,6BAEW,KAAApijB,KAA4B,OACrC,KAAOqijB,QAAqC,CAAC,CA4B9C,qFA1BC,6GACS,GADT,4JAIA,WAAWpljB,EAAapE,GAAxB,sEACE8B,KAAK0njB,QAAQpljB,GAAOpE,EADtB,oKAIA,WAAuCoE,GAAvC,mFACQpE,EAAQ8B,KAAK0njB,QAAQpljB,GAD7B,uBAEmBqF,IAAVzJ,EAAsB,KAAQA,GAFvC,qKAKA,WAAcoE,GAAd,6EACStC,KAAK0njB,QAAQpljB,GADtB,iIAIA,SAAa+S,EAAcsyiB,GAG1B,gCAED,SAAgBtyiB,EAAcsyiB,GAG7B,OA9BUF,GACJA,GAAI,KAAW,OAqCjB,IAAMG,GAAmCH,YC9BhCI,GACdvljB,EACAm9iB,EACA5K,GAEA,MAAU,WAAV,WAAmCvyiB,EAAnC,YAA0Cm9iB,EAA1C,YAAoD5K,EACrD,KAEYiT,GAAAA,WAKX,WACSC,EACUpK,EACAqK,IAAe,eAFzB,KAAWD,YAAXA,EACU,KAAIpK,KAAJA,EACA,KAAOqK,QAAPA,EAEjB,MAAyBhojB,KAAK29iB,KAAtB59iB,EAAR,EAAQA,OAAQ3G,EAAhB,EAAgBA,KAChB4G,KAAKiojB,YAAcJ,GAAoB7njB,KAAKgojB,QAASjojB,EAAO0/iB,OAAQrmjB,GACpE4G,KAAKkojB,mBAAqBL,GAAoB,cAE5C9njB,EAAO0/iB,OACPrmjB,GAEF4G,KAAKmojB,kBAAoBxK,EAAKyK,gBAAgBtrjB,KAAK6gjB,GACnD39iB,KAAK+njB,YAAYM,aAAarojB,KAAKiojB,YAAajojB,KAAKmojB,kBACtD,8CAED,SAAe5G,GACb,OAAOvhjB,KAAK+njB,YAAYO,KAAKtojB,KAAKiojB,YAAa1G,EAAK/0f,SACrD,wEAED,yGACqBxsD,KAAK+njB,YAAY9a,KAAoBjtiB,KAAKiojB,aAD/D,cACQ9kjB,EADR,yBAESA,EAAO8ijB,GAASsC,UAAUvojB,KAAK29iB,KAAMx6iB,GAAQ,MAFtD,qIAKA,WACE,OAAOnD,KAAK+njB,YAAYS,QAAQxojB,KAAKiojB,YACtC,2CAED,WACE,OAAOjojB,KAAK+njB,YAAYO,KACtBtojB,KAAKkojB,mBACLlojB,KAAK+njB,YAAY1ijB,KAEpB,wEAED,WAAqBojjB,GAArB,+EACMzojB,KAAK+njB,cAAgBU,EAD3B,iEAK4BzojB,KAAK0ojB,iBALjC,cAKQhG,EALR,gBAMQ1ijB,KAAK2ojB,oBANb,UAQE3ojB,KAAK+njB,YAAcU,GAEf/F,EAVN,0CAWW1ijB,KAAK4ojB,eAAelG,IAX/B,4HAeA,WACE1ijB,KAAK+njB,YAAYc,gBAAgB7ojB,KAAKiojB,YAAajojB,KAAKmojB,kBACzD,kEAED,WACExK,EACAmL,GAFF,+GAGEd,EAHF,+BAG6B,WAEtBc,EAAqBnojB,OAL5B,yCAMW,IAAImnjB,EACTP,GAAaK,IACbjK,EACAqK,IATN,uBAeUrpjB,QAAQ0nI,IACZyib,EAAqB/kjB,IAArB,yCAAyB,WAAMgkjB,GAAN,sFACbA,EAAYgB,eADC,2DAEdhB,GAFc,qCAIhBpgjB,GAJgB,2CAAzB,wDAhBN,OAcQqhjB,EAdR,OAuBIxuhB,QAAO,SAAAuthB,GAAW,OAAIA,CAAJ,IAGhBkB,EACFD,EAAsB,IACtBzB,GAAkCK,IAE9BtljB,EAAMuljB,GAAoBG,EAASrK,EAAK59iB,OAAO0/iB,OAAQ9B,EAAKvkjB,MAI9D8vjB,EAAqC,KAlC3C,UAsC4BJ,GAtC5B,YAAAvwhB,IAAA,kDAsCawvhB,EAtCb,4BAwCyBA,EAAY9a,KAAoB3qiB,GAxCzD,aAwCYa,EAxCZ,gCA0Cco+iB,EAAO0E,GAASsC,UAAU5K,EAAMx6iB,GAClC4kjB,IAAgBkB,IAClBC,EAAgB3H,GAElB0H,EAAsBlB,EA9C9B,oOAsDQoB,EAAqBH,EAAsBxuhB,QAC/C,SAAA38B,GAAC,OAAIA,EAAEurjB,qBAAN,IAKAH,EAAoBG,uBACpBD,EAAmBxojB,OA7DxB,0CA+DW,IAAImnjB,EAAuBmB,EAAqBtL,EAAMqK,IA/DjE,WAkEEiB,EAAsBE,EAAmB,IACrCD,EAnEN,kCAsEUD,EAAoBX,KAAKhmjB,EAAK4mjB,EAAc18f,UAtEtD,yBA2EQ7tD,QAAQ0nI,IACZyib,EAAqB/kjB,IAArB,yCAAyB,WAAMgkjB,GAAN,yEACnBA,IAAgBkB,EADG,yCAGblB,EAAYS,QAAQlmjB,GAHP,8GAAzB,wDA5EJ,iCAoFS,IAAIwljB,EAAuBmB,EAAqBtL,EAAMqK,IApF/D,sIA5DWF,GCMP,SAAUuB,GAAgBz0gB,GAC9B,IAAM12B,EAAK02B,EAAUpgC,cACrB,GAAI0J,EAAG3Y,SAAS,WAAa2Y,EAAG3Y,SAAS,SAAW2Y,EAAG3Y,SAAS,UAC9D,MAAyB,QACpB,GAAI+jjB,GAAYpriB,GAErB,MAA4B,WACvB,GAAIA,EAAG3Y,SAAS,SAAW2Y,EAAG3Y,SAAS,YAC5C,MAAsB,KACjB,GAAI2Y,EAAG3Y,SAAS,SACrB,MAAwB,OACnB,GAAIgkjB,GAAWrriB,GACpB,MAA2B,UACtB,GAAIA,EAAG3Y,SAAS,SACrB,MAAwB,OACnB,GAAIikjB,GAActriB,GAEvB,MAA8B,aACzB,GAAIuriB,GAASvriB,GAElB,MAAyB,QACpB,GAAIwriB,GAAUxriB,GACnB,MAA0B,SACrB,IACJA,EAAG3Y,SAAS,YAAcokjB,GAAazriB,MACvCA,EAAG3Y,SAAS,SAEb,MAA0B,SACrB,GAAIqkjB,GAAW1riB,GAEpB,MAA2B,UAG3B,IACM4W,EAAU8f,EAAU3lC,MADf,mCAEX,OAAwB,KAAb,OAAP6lB,QAAO,IAAPA,OAAO,EAAPA,EAASn0B,QACJm0B,EAAQ,GAGM,OAC1B,UAEey0hB,KAAuB,IAAZrriB,EAAY,wDAAPV,EAAAA,EAAAA,MAC9B,MAAO,aAAapH,KAAK8H,EAC1B,UAEewriB,KAA6B,IAAnB90gB,EAAmB,wDAAPp3B,EAAAA,EAAAA,MAC9BU,EAAK02B,EAAUpgC,cACrB,OACE0J,EAAG3Y,SAAS,aACX2Y,EAAG3Y,SAAS,aACZ2Y,EAAG3Y,SAAS,YACZ2Y,EAAG3Y,SAAS,UAEhB,UAEeokjB,KAAyB,IAAZzriB,EAAY,wDAAPV,EAAAA,EAAAA,MAChC,MAAO,WAAWpH,KAAK8H,EACxB,UAEeoriB,KAAwB,IAAZpriB,EAAY,wDAAPV,EAAAA,EAAAA,MAC/B,MAAO,YAAYpH,KAAK8H,EACzB,UAEe0riB,KAAuB,IAAZ1riB,EAAY,wDAAPV,EAAAA,EAAAA,MAC9B,MAAO,WAAWpH,KAAK8H,EACxB,UAEesriB,KAA0B,IAAZtriB,EAAY,wDAAPV,EAAAA,EAAAA,MACjC,MAAO,cAAcpH,KAAK8H,EAC3B,UAEeuriB,KAAqB,IAAZvriB,EAAY,wDAAPV,EAAAA,EAAAA,MAC5B,MAAO,SAASpH,KAAK8H,EACtB,UAEe2riB,KAAmB,IAAZ3riB,EAAY,wDAAPV,EAAAA,EAAAA,MAC1B,MACE,oBAAoBpH,KAAK8H,IACxB,aAAa9H,KAAK8H,IAAO,UAAU9H,KAAK8H,EAE5C,UASe4riB,KAA6B,MAAZ5riB,EAAY,wDAAPV,EAAAA,EAAAA,MACpC,OAAOqsiB,GAAO3riB,OAAoD,QAA1C,EAAAjkB,OAAOwjB,iBAAmC/iB,IAAAA,OAAA,EAAAA,EAAAA,WACnE,UAEeqvjB,KACd,OAAO9riB,EAAAA,EAAAA,OAAkD,KAAvC/b,SAAsB+ogB,YACzC,CAEe,SAAA++C,KAAqC,IAApB9riB,EAAoB,wDAAPV,EAAAA,EAAAA,MAE5C,OACEqsiB,GAAO3riB,IACP0riB,GAAW1riB,IACXuriB,GAASvriB,IACTsriB,GAActriB,IACd,iBAAiB9H,KAAK8H,IACtBoriB,GAAYpriB,EAEf,UCrHe+riB,GACdC,GACkC,IAE9BC,EAFJC,EAAkC,uDAAF,GAGhC,OAAQF,GACN,IAAK,UAEHC,EAAmBd,IAAgB7riB,EAAAA,EAAAA,OACnC,MACF,IAAK,SAIH2siB,EAAmB,GAAH,OAAMd,IAAgB7riB,EAAAA,EAAAA,OAAtB,YAAkC0siB,GAClD,MACF,QACEC,EAAmBD,EAEvB,IAAMG,EAAqBD,EAAWzpjB,OAClCypjB,EAAW39iB,KAAK,KAChB,mBACJ,MAAO,GAAP,OAAU09iB,EAAV,IAA8B,SAA9B,YAA2DjU,EAAAA,GAA3D,YAA0EmU,EAC5E,KCpCaC,GAAAA,WAGX,WAA6B3M,IAAkB,eAAlB,KAAIA,KAAJA,EAFZ,KAAK3vf,MAAsB,EAEO,4CAEnD,SACEzwD,EACAgtjB,GAAoB,WAIdC,EAAmC,SACvCjJ,GADuC,OAGvC,IAAI5ijB,SAAQ,SAACC,EAASY,GACpB,IAIEZ,EAHerB,EAASgkjB,GAOzB,CAHC,MAAOt4iB,GAEPzJ,EAAOyJ,EACR,CACF,GAbsC,EAezCuhjB,EAAgBD,QAAUA,EAC1BvqjB,KAAKguD,MAAM5tD,KAAKoqjB,GAEhB,IAAMrpjB,EAAQnB,KAAKguD,MAAMrtD,OAAS,EAClC,OAAO,WAGL,EAAKqtD,MAAM7sD,GAAS,kBAAMxC,QAAQC,SAAd,CACrB,CACF,uEAED,WAAoB6rjB,GAApB,2FACMzqjB,KAAK29iB,KAAK+E,cAAgB+H,EADhC,iDAQQC,EAAkC,GAR1C,mBAUsC1qjB,KAAKguD,OAV3C,gEAUe28f,EAVf,kBAWYA,EAAoBF,GAXhC,QAcUE,EAAoBJ,SACtBG,EAAatqjB,KAAKuqjB,EAAoBJ,SAf9C,iMAqBIG,EAAa5vf,UArBjB,UAsB0B4vf,GAtB1B,IAsBI,IAAK,EAAL,qBAAoC,CAAzBH,EAAyB,QAClC,IACEA,GAGD,CAFC,MAAOzrjB,GAER,CACF,CA5BL,qCA8BUkB,KAAK29iB,KAAKI,cAAcvtiB,OAAoC,iBAChEo6iB,gBAA6B,OAAX,gCAAaxwjB,UA/BrC,kIArCWkwjB,YC+BSO,GAAmB,mFAAlC,WACLlN,GADK,+FAEL92iB,EAFK,+BAE+B,CAAC,EAFhC,kBAIEy4iB,EAIL3B,EAGA,2BAAAyB,EAAmBzB,EAAM92iB,KAXtB,oEC/BP,IAOaikjB,GAAAA,WAOX,WAAYxkjB,gBAAmC,eAE7C,IAAMykjB,EAAkBzkjB,EAAS0kjB,sBACjChrjB,KAAKgrjB,sBAAwB,CAAC,EAE9BhrjB,KAAKgrjB,sBAAsBC,kBACQ,QAAjC,EAAAF,EAAgBE,yBAAiBvwjB,IAAAA,EAAAA,EApBH,EAqB5BqwjB,EAAgBG,oBAClBlrjB,KAAKgrjB,sBAAsBE,kBACzBH,EAAgBG,wBAE+BvjjB,IAA/CojjB,EAAgBI,6BAClBnrjB,KAAKgrjB,sBAAsBI,wBACzBL,EAAgBI,iCAE+BxjjB,IAA/CojjB,EAAgBM,6BAClBrrjB,KAAKgrjB,sBAAsBM,wBACzBP,EAAgBM,iCAE6B1jjB,IAA7CojjB,EAAgBQ,2BAClBvrjB,KAAKgrjB,sBAAsBO,yBACzBR,EAAgBQ,+BAEqC5jjB,IAArDojjB,EAAgBS,mCAClBxrjB,KAAKgrjB,sBAAsBQ,iCACzBT,EAAgBS,kCAGpBxrjB,KAAK+8iB,iBAAmBz2iB,EAASy2iB,iBACH,kCAA1B/8iB,KAAK+8iB,mBACP/8iB,KAAK+8iB,iBAAmB,OAI1B/8iB,KAAKyrjB,iCACoD,QAAvD,EAAyC,QAAzC,EAAAnljB,EAASmljB,wCAAgC9wjB,IAAAA,OAAA,EAAAA,EAAE8R,KAAK,WAAO7R,IAAAA,EAAAA,EAAA,GAEzDoF,KAAK0rjB,qBAAwD,QAAjC,EAAApljB,EAASoljB,4BAAwB7wjB,IAAAA,GAAAA,EAC7DmF,KAAK2rjB,cAAgBrljB,EAASqljB,aAC/B,gDAED,SAAiB53hB,mBACTntB,EAA2C,CAC/CspI,SAAS,EACT07a,eAAgB5rjB,MAelB,OAXAA,KAAK6rjB,8BAA8B93hB,EAAUntB,GAC7C5G,KAAK8rjB,iCAAiC/3hB,EAAUntB,GAGhDA,EAAOspI,UAAPtpI,EAAOspI,QAAyC,QAA7B,EAAAtpI,EAAOmljB,8BAAsBrxjB,IAAAA,GAAAA,GAChDkM,EAAOspI,UAAPtpI,EAAOspI,QAAyC,QAA7B,EAAAtpI,EAAOoljB,8BAAsBrxjB,IAAAA,GAAAA,GAChDiM,EAAOspI,UAAPtpI,EAAOspI,QAA0C,QAA9B,EAAAtpI,EAAOwkjB,+BAAuBxwjB,IAAAA,GAAAA,GACjDgM,EAAOspI,UAAPtpI,EAAOspI,QAA0C,QAA9B,EAAAtpI,EAAO0kjB,+BAAuBzwjB,IAAAA,GAAAA,GACjD+L,EAAOspI,UAAPtpI,EAAOspI,QAA2C,QAA/B,EAAAtpI,EAAO2kjB,gCAAwBzwjB,IAAAA,GAAAA,GAClD8L,EAAOspI,UAAPtpI,EAAOspI,QAAmD,QAAvC,EAAAtpI,EAAO4kjB,wCAAgC3kF,IAAAA,GAAAA,GAEnDjge,CACR,8CAQO,SACNmtB,EACAntB,GAEA,IAAMqkjB,EAAoBjrjB,KAAKgrjB,sBAAsBC,kBAC/CC,EAAoBlrjB,KAAKgrjB,sBAAsBE,kBACjDD,IACFrkjB,EAAOmljB,uBAAyBh4hB,EAASpzB,QAAUsqjB,GAEjDC,IACFtkjB,EAAOoljB,uBAAyBj4hB,EAASpzB,QAAUuqjB,EAEtD,iDAQO,SACNn3hB,EACAntB,GAWA,IAAIqljB,EARJjsjB,KAAKksjB,uCACHtljB,GACkC,GACA,GACF,GACQ,GAI1C,IAAK,IAAI+B,EAAI,EAAGA,EAAIorB,EAASpzB,OAAQgI,IACnCsjjB,EAAel4hB,EAAS9X,OAAOtT,GAC/B3I,KAAKksjB,uCACHtljB,EACkCqljB,GAAgB,KAChDA,GAAgB,IACgBA,GAAgB,KAChDA,GAAgB,IACcA,GAAgB,KAC9CA,GAAgB,IACsBjsjB,KAAKyrjB,iCAAiClmjB,SAC5E0mjB,GAIP,uDAaO,SACNrljB,EACAukjB,EACAE,EACAE,EACAC,GAEIxrjB,KAAKgrjB,sBAAsBI,0BAC7BxkjB,EAAOwkjB,0BAAPxkjB,EAAOwkjB,wBAA4BD,IAEjCnrjB,KAAKgrjB,sBAAsBM,0BAC7B1kjB,EAAO0kjB,0BAAP1kjB,EAAO0kjB,wBAA4BD,IAEjCrrjB,KAAKgrjB,sBAAsBO,2BAC7B3kjB,EAAO2kjB,2BAAP3kjB,EAAO2kjB,yBAA6BA,IAElCvrjB,KAAKgrjB,sBAAsBQ,mCAC7B5kjB,EAAO4kjB,mCAAP5kjB,EAAO4kjB,iCACLA,GAEL,OA7JUV,GCiDAqB,GAAAA,WAqCX,WACkBlX,EACCmX,EACAC,EACDtsjB,IAAsB,eAHtB,KAAGk1iB,IAAHA,EACC,KAAwBmX,yBAAxBA,EACA,KAAuBC,wBAAvBA,EACD,KAAMtsjB,OAANA,EAxClB,KAAW2ijB,YAAgB,KAC3B,KAAc4J,eAA0B,KAChC,KAAAC,WAAa5tjB,QAAQC,UAGrB,KAAA4tjB,sBAAwB,IAAIC,GAAmBzsjB,MAC/C,KAAA0sjB,oBAAsB,IAAID,GAAmBzsjB,MACpC,KAAA2sjB,iBAAmB,IAAIrC,GAAoBtqjB,MACpD,KAAY4sjB,aAAwB,KACpC,KAAyBC,2BAAG,EACnB,KAAuCC,wCAAW,EAInE,KAAgB/M,kBAAG,EACnB,KAAcgN,gBAAG,EACjB,KAAQC,UAAG,EACX,KAAsBC,uBAAyB,KAC/C,KAAsBC,uBAAyC,KAC/D,KAAanP,cACXb,EACF,KAAqBiQ,sBAA2B,KAChD,KAAuBC,wBAAoC,CAAC,EAC5D,KAAsBC,uBAAkC,KACxD,KAAuBC,wBAA2C,CAAC,EAM3D,KAAeC,qBAA8B5ljB,EAErD,KAAYg4iB,aAAkB,KAC9B,KAAQN,SAAkB,KAC1B,KAAA7pb,SAAyB,CAAEg4b,mCAAmC,GAilBtD,KAAUpD,WAAa,GAzkB7BpqjB,KAAK5G,KAAO67iB,EAAI77iB,KAChB4G,KAAKytjB,cAAgB1tjB,EAAO2tjB,gBAC7B,0DAED,SACE5E,EACA6E,GAA6C,WA2C7C,OAzCIA,IACF3tjB,KAAKktjB,uBAAyB3F,GAAaoG,IAK7C3tjB,KAAKitjB,uBAAyBjtjB,KAAKguD,OAAL,uBAAW,+FACnC,EAAKg/f,SAD8B,iEAKPlF,GAAuBt3iB,OACrD,EACAs4iB,GAPqC,UAKvC,EAAK8E,mBALkC,QAUnC,EAAKZ,SAV8B,sDAgBR,QAA3B,IAAKE,8BAAsBxyjB,IAAAA,OAAA,EAAAA,EAAEmzjB,wBAhBM,2CAmB7B,EAAKX,uBAAuBY,YAAY,GAnBX,mFAyBjC,EAAKC,sBAAsBJ,GAzBM,WA0BvC,EAAKJ,iBAAoC,QAAlB,IAAK7K,mBAAa/njB,IAAAA,OAAA,EAAAA,EAAAA,MAAO,MAE5C,EAAKqyjB,SA5B8B,mDAgCvC,EAAKD,gBAAiB,EAhCiB,2DAmClC/sjB,KAAKitjB,sBACb,yEAKD,6FACMjtjB,KAAKgtjB,SADX,iEAKqBhtjB,KAAKgujB,oBAAoBtF,iBAL9C,UAKQnH,EALR,OAOOvhjB,KAAK0ijB,aAAgBnB,EAP5B,qDAaMvhjB,KAAK0ijB,cAAenB,GAAQvhjB,KAAK0ijB,YAAY1nG,MAAQumG,EAAKvmG,IAbhE,wBAeIh7c,KAAKiujB,aAAavH,QAAQnF,GAf9B,UAkBUvhjB,KAAK0ijB,YAAYhB,aAlB3B,2DAwBQ1hjB,KAAKkujB,mBAAmB3M,GAAqC,GAxBrE,mLA2BQ,WACNoM,GADM,wGAKG3tjB,KAAKgujB,oBAAoBtF,iBAL5B,UAIAyF,EAJA,OAMFC,EAAoBD,EACpBE,GAAyB,GACzBV,IAAyB3tjB,KAAKD,OAAOuujB,WARnC,iCASEtujB,KAAKuujB,sCATP,cAUEC,EAAuC,QAAjB,EAAAxujB,KAAK4sjB,oBAAYlyjB,IAAAA,OAAA,EAAAA,EAAEssjB,iBACzCyH,EAAqC,OAAjBL,QAAA,IAAAA,OAAA,EAAAA,EAAmBpH,iBAXzC,UAYiBhnjB,KAAK0ujB,kBAAkBf,GAZxC,QAYEnqjB,EAZF,OAmBAgrjB,GAAuBA,IAAwBC,KAC3C,OAANjrjB,QAAM,IAANA,OAAM,EAANA,EAAQ+9iB,QAER6M,EAAoB5qjB,EAAO+9iB,KAC3B8M,GAAyB,GAvBvB,WA4BDD,EA5BC,0CA6BGpujB,KAAK2ujB,uBAAuB,OA7B/B,WAgCDP,EAAkBpH,iBAhCjB,qBAmCAqH,EAnCA,4CAqCMrujB,KAAK2sjB,iBAAiBiC,cAAcR,GArC1C,2DAuCAA,EAAoBD,EAGpBnujB,KAAKktjB,uBAAwB2B,wBAAwB7ujB,MAAM,kBACzDrB,QAAQa,OAAR,KADyD,IA1C3D,YAgDA4ujB,EAhDA,0CAiDKpujB,KAAK8ujB,+BAA+BV,IAjDzC,iCAmDKpujB,KAAK2ujB,uBAAuB,OAnDjC,eAuDN3Q,EAAQh+iB,KAAKktjB,uBAAwBltjB,KAAI,kBAvDnC,UAwDAA,KAAKuujB,sCAxDL,YA8DJvujB,KAAK4sjB,cACL5sjB,KAAK4sjB,aAAa5F,mBAAqBoH,EAAkBpH,iBA/DrD,0CAiEGhnjB,KAAK2ujB,uBAAuBP,IAjE/B,iCAoECpujB,KAAK8ujB,+BAA+BV,IApErC,0LAuEA,WACNW,GADM,mFAmBFvrjB,EAAgC,KAnB9B,kBAuBWxD,KAAKktjB,uBAAwB8B,oBAC1ChvjB,KACA+ujB,GACA,GA1BE,OAuBJvrjB,EAvBI,wEA+BExD,KAAKivjB,iBAAiB,MA/BxB,iCAkCCzrjB,GAlCD,qMAqCA,WACN+9iB,GADM,+FAIEkC,GAAqBlC,GAJvB,0DAOkB,OAAnB,gCAAqBlnjB,QAAtB,eACQ,0BARN,yCAYK2F,KAAK2ujB,uBAAuB,OAZjC,gCAgBC3ujB,KAAK2ujB,uBAAuBpN,IAhB7B,+IAmBR,WACEvhjB,KAAK2/iB,wBxBpSP,GAAyB,qBAAdliiB,UACT,OAAO,KAET,IAAMyxiB,EAAuCzxiB,UAC7C,OAEGyxiB,EAAkBC,WAAaD,EAAkBC,UAAU,IAG5DD,EAAkB1wb,UAElB,IAEJ,CwBuRwB4wb,EACrB,iEAED,mFACEpvjB,KAAKgtjB,UAAW,EADlB,8KAIA,WAAwBqC,GAAxB,mFAGQ9N,EAAO8N,GACRvsiB,EAAAA,EAAAA,IAAmBusiB,GACpB,OAEFrR,EACEuD,EAAK5D,KAAK59iB,OAAO0/iB,SAAWz/iB,KAAKD,OAAO0/iB,OACxCz/iB,KAAI,sBATV,kBAaSA,KAAKkujB,mBAAmB3M,GAAQA,EAAKqF,OAAO5mjB,QAbrD,gLAgBA,WACEuhjB,GADF,kGAEE+N,EAFF,iCAIMtvjB,KAAKgtjB,SAJX,oDAOMzL,GACFvD,EACEh+iB,KAAKq/iB,WAAakC,EAAKlC,SACvBr/iB,KAAI,sBAKHsvjB,EAfP,gCAgBUtvjB,KAAK2sjB,iBAAiBiC,cAAcrN,GAhB9C,gCAmBSvhjB,KAAKguD,OAAL,uBAAW,mGACV,EAAK2ggB,uBAAuBpN,GADlB,OAEhB,EAAKgO,sBAFW,6CAnBpB,qKAyBA,mGAEQvvjB,KAAK2sjB,iBAAiBiC,cAAc,MAF5C,WAIM5ujB,KAAKwvjB,6BAA8BxvjB,KAAKktjB,uBAJ9C,gCAKUltjB,KAAKivjB,iBAAiB,MALhC,gCAUSjvjB,KAAKkujB,mBAAmB,MAAqC,IAVtE,kIAaA,SAAenG,GAAwB,WACrC,OAAO/njB,KAAKguD,OAAL,uBAAW,mGACV,EAAKgggB,oBAAoByB,eAAelI,GAAaQ,IAD3C,2CAGnB,oCAED,WACE,OAAqB,MAAjB/njB,KAAKq/iB,SACAr/iB,KAAKmtjB,sBAELntjB,KAAKotjB,wBAAwBptjB,KAAKq/iB,SAE5C,0EAED,WAAuBtrhB,GAAvB,+EACO/zB,KAAK0vjB,6BADZ,gCAEU1vjB,KAAK2vjB,wBAFf,WAMQ/D,EACJ5rjB,KAAK0vjB,8BAKU/D,gBACf3rjB,KAAK8sjB,wCAbT,yCAeWnujB,QAAQa,OACbQ,KAAK+9iB,cAAcvtiB,OAAM,6CAEvB,CAAC,KAlBT,gCAuBSo7iB,EAAegE,iBAAiB77hB,IAvBzC,+IA0BA,WACE,OAAsB,OAAlB/zB,KAAKq/iB,SACAr/iB,KAAKqtjB,uBAELrtjB,KAAKstjB,wBAAwBttjB,KAAKq/iB,SAE5C,+EAED,2GACyBwL,GAAmB7qjB,MAD5C,OACQsG,EADR,OAGQsljB,EAAyC,IAAId,GACjDxkjB,GAGoB,OAAlBtG,KAAKq/iB,SACPr/iB,KAAKqtjB,uBAAyBzB,EAE9B5rjB,KAAKstjB,wBAAwBttjB,KAAKq/iB,UAAYuM,EAVlD,mIAcA,WACE,OAAO5rjB,KAAKgujB,oBAAoBjG,YAAY1ijB,IAC7C,gCAED,SAAgBu4iB,GACd59iB,KAAK+9iB,cAAgB,IAAI5+hB,EAAAA,GACvB,OACA,WACCy+hB,IAEJ,mCAED,SACEh8hB,EACAviB,EACAsoC,GAEA,OAAO3nC,KAAK6vjB,sBACV7vjB,KAAKwsjB,sBACL5qiB,EACAviB,EACAsoC,EAEH,uCAED,SACEpqC,EACAgtjB,GAEA,OAAOvqjB,KAAK2sjB,iBAAiBmD,aAAavyjB,EAAUgtjB,EACrD,iCAED,SACE3oiB,EACAviB,EACAsoC,GAEA,OAAO3nC,KAAK6vjB,sBACV7vjB,KAAK0sjB,oBACL9qiB,EACAviB,EACAsoC,EAEH,+BAED,WAAc,WACZ,OAAO,IAAIhpC,SAAQ,SAACC,EAASY,GAC3B,GAAI,EAAKkjjB,YACP9jjB,SAEA,IAAMy4J,EAAc,EAAK04Z,oBAAmB,WAC1C14Z,IACAz4J,GACD,GAAEY,EAEN,GACF,uBAED,iBACE,MAAO,CACLigjB,OAAQz/iB,KAAKD,OAAO0/iB,OACpB6O,WAAYtujB,KAAKD,OAAOuujB,WACxBzZ,QAAS70iB,KAAK5G,KACdspjB,YAA8B,QAAjB,EAAA1ijB,KAAKiujB,oBAAYvzjB,IAAAA,OAAA,EAAAA,EAAE8xD,SAEnC,0EAED,WACE+0f,EACAoM,GAFF,4FAIgC3tjB,KAAKuujB,oCACjCZ,GALJ,cAIQqC,EAJR,yBAOkB,OAATzO,EACHyO,EAAgBrH,oBAChBqH,EAAgBpH,eAAerH,IATrC,mMAYQ,WACNoM,GADM,+EAGD3tjB,KAAKwvjB,2BAHJ,uBAOJxR,EAHMjmF,EACH41F,GAAyBpG,GAAaoG,IACvC3tjB,KAAKktjB,uBACWltjB,KAAI,kBAPlB,SAQoC8njB,GAAuBt3iB,OAC7DxQ,KACA,CAACunjB,GAAaxvF,EAASk4F,uBAAsB,gBAV3C,cAQJjwjB,KAAKwvjB,2BARD,gBAcIxvjB,KAAKwvjB,2BAA2B9G,iBAdpC,OAaJ1ojB,KAAK4sjB,aAbD,uCAiBC5sjB,KAAKwvjB,4BAjBN,iLAoBR,WAAyBzxiB,GAAzB,kFAGM/d,KAAK+sjB,eAHX,gCAIU/sjB,KAAKguD,OAAL,uBAAW,wHAJrB,WAOyB,QAAnB,EAAAhuD,KAAKiujB,oBAAcvzjB,IAAAA,OAAA,EAAAA,EAAAA,oBAAqBqjB,EAP9C,yCAQW/d,KAAKiujB,cARhB,WAWyB,QAAnB,EAAAjujB,KAAK4sjB,oBAAcjyjB,IAAAA,OAAA,EAAAA,EAAAA,oBAAqBojB,EAX9C,yCAYW/d,KAAK4sjB,cAZhB,gCAeS,MAfT,mLAkBA,WAA4BrL,GAA5B,oFACMA,IAASvhjB,KAAK0ijB,YADpB,yCAEW1ijB,KAAKguD,OAAL,uBAAW,4GAAY,EAAK2ggB,uBAAuBpN,IAAxC,6CAFtB,8IAOA,SAA0BA,GACpBA,IAASvhjB,KAAK0ijB,aAChB1ijB,KAAKuvjB,qBAER,qBAED,WACE,MAAO,GAAP,OAAUvvjB,KAAKD,OAAOuujB,WAAtB,YAAoCtujB,KAAKD,OAAO0/iB,OAAhD,YAA0Dz/iB,KAAK5G,KAChE,uCAED,WACE4G,KAAK6sjB,2BAA4B,EAC7B7sjB,KAAK0ijB,aACP1ijB,KAAKiujB,aAAaiC,wBAErB,sCAED,WACElwjB,KAAK6sjB,2BAA4B,EAC7B7sjB,KAAK0ijB,aACP1ijB,KAAKiujB,aAAakC,uBAErB,2BAGD,WACE,OAAOnwjB,KAAK0ijB,WACb,oCAEO,mBACN,GAAK1ijB,KAAK+sjB,eAAV,CAIA/sjB,KAAK0sjB,oBAAoBvhjB,KAAKnL,KAAK0ijB,aAEnC,IAAM0N,EAAsC,QAAzB,EAAkB,QAAlB,EAAApwjB,KAAK0ijB,mBAAahojB,IAAAA,OAAA,EAAAA,EAAAA,WAAOC,IAAAA,EAAAA,EAAA,KACxCqF,KAAKutjB,kBAAoB6C,IAC3BpwjB,KAAKutjB,gBAAkB6C,EACvBpwjB,KAAKwsjB,sBAAsBrhjB,KAAKnL,KAAK0ijB,aAPtC,CASF,sCAEO,SACN2N,EACAzuiB,EACAviB,EACAsoC,GAAsB,WAEtB,GAAI3nC,KAAKgtjB,SACP,OAAO,WAAQ,EAGjB,IAAMrwD,EACsB,oBAAnB/6e,EACHA,EACAA,EAAezW,KAAKrO,KAAK8kB,GAE3B0uiB,GAAiB,EAEfhziB,EAAUtd,KAAK+sjB,eACjBpujB,QAAQC,UACRoB,KAAKitjB,uBAWT,GAVAjP,EAAQ1giB,EAAStd,KAAI,kBAGrBsd,EAAQxf,MAAK,WACPwyjB,GAGJ3zD,EAAG,EAAK+lD,YACT,IAE6B,oBAAnB9giB,EAA+B,CACxC,IAAMy1I,EAAcg5Z,EAAaz9B,YAC/BhxgB,EACAviB,EACAsoC,GAEF,OAAO,WACL2ohB,GAAiB,EACjBj5Z,GACD,CACF,CACC,IAAMA,EAAcg5Z,EAAaz9B,YAAYhxgB,GAC7C,OAAO,WACL0uiB,GAAiB,EACjBj5Z,GACD,CAEJ,gFAOO,WACNkqZ,GADM,yEAGFvhjB,KAAK0ijB,aAAe1ijB,KAAK0ijB,cAAgBnB,GAC3CvhjB,KAAKiujB,aAAakC,wBAEhB5O,GAAQvhjB,KAAK6sjB,2BACftL,EAAK2O,yBAGPlwjB,KAAK0ijB,YAAcnB,GAEfA,EAZE,gCAaEvhjB,KAAKgujB,oBAAoBpF,eAAerH,GAb1C,+CAeEvhjB,KAAKgujB,oBAAoBrF,oBAf3B,2HAmBA,SAAM9iiB,GAIZ,OADA7lB,KAAKusjB,WAAavsjB,KAAKusjB,WAAWzujB,KAAK+nB,EAAQA,GACxC7lB,KAAKusjB,UACb,kCAED,WAEE,OADAvO,EAAQh+iB,KAAK4tjB,mBAAoB5tjB,KAAI,kBAC9BA,KAAK4tjB,kBACb,8BAID,SAAc2C,GACPA,IAAavwjB,KAAKoqjB,WAAW7kjB,SAASgrjB,KAG3CvwjB,KAAKoqjB,WAAWhqjB,KAAKmwjB,GAIrBvwjB,KAAKoqjB,WAAWhxhB,OAChBp5B,KAAKytjB,cAAgBxD,GACnBjqjB,KAAKD,OAAOmqjB,eACZlqjB,KAAKwwjB,kBAER,+BACD,WACE,OAAOxwjB,KAAKoqjB,UACb,+EACD,sGAEQxmjB,GAFR,UAGiC,mBAAE5D,KAAKytjB,eAGlCztjB,KAAKi1iB,IAAI73iB,QAAQ46iB,QACnBp0iB,EAAQ,oBAA+B5D,KAAKi1iB,IAAI73iB,QAAQ46iB,OAP5D,SAeM,QAJ2B,EAAAh4iB,KAAKosjB,yBACjC7X,aAAa,CACZiB,UAAU,WAEV96iB,IAAAA,OAAA,EAAAA,EAAAA,sBAfN,cAWQ+1jB,EAXR,UAiBI7sjB,EAAQ,qBAAgC6sjB,GAjB5C,SAqB8BzwjB,KAAK0wjB,oBArBnC,cAqBQC,EArBR,UAuBI/sjB,EAAQ,uBAAmC+sjB,GAvB/C,kBA0BS/sjB,GA1BT,+KA6BA,2GAGM,QAF8B,EAAA5D,KAAKqsjB,wBACpC9X,aAAa,CAAEiB,UAAU,WACxB96iB,IAAAA,OAAA,EAAAA,EAAAA,WAHN,cAIM,QAHEk2jB,EADR,cAIyB,IAAnBA,OAAmB,EAAnBA,EAAqBvxjB,QAKvB+9iB,EAAS,2CAAD,OACqCwT,EAAoBvxjB,QAVrE,kBAaS,OAAAuxjB,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBtljB,OAb9B,0GApqBW6gjB,GA2rBP,SAAU0E,GAAUlT,GACxB,OAAO76hB,EAAAA,EAAAA,IAAmB66hB,EAC3B,KAGK8O,GAAAA,WAMJ,WAAqB9O,GAAkB,2BAAlB,KAAIA,KAAJA,EALb,KAAQj8hB,SAA8B,KACrC,KAAAkxgB,aAAmC7xgB,EAAAA,EAAAA,KAC1C,SAAAW,GAAQ,OAAK,EAAKA,SAAWA,CAArB,GAGiC,kCAE3C,WAEE,OADAs8hB,EAAQh+iB,KAAK0hB,SAAU1hB,KAAK29iB,KAAI,kBACzB39iB,KAAK0hB,SAASvW,KAAKrO,KAAKkD,KAAK0hB,SACrC,OAXG+qiB,GC1vBA,SAAUqE,GAAQjujB,GAEtB,OAAO,IAAIlE,SAAQ,SAACC,EAASY,GAC3B,IAAM06D,EAAKh4D,SAASmG,cAAc,UAClC6xD,EAAG5xD,aAAa,MAAOzF,GACvBq3D,EAAG52D,OAAS1E,EACZs7D,EAAGz2D,QAAU,SAAAwF,GACX,IAAM5J,EAAQo+iB,EAAa,kBAC3Bp+iB,EAAM2f,WAAa/V,EACnBzJ,EAAOH,EACR,EACD66D,EAAG70D,KAAO,kBACV60D,EAAG62f,QAAU,QAhBjB,mBACE,OAAiD,QAA1C,EAAwC,QAAxC,EAAA7ujB,SAAS0iE,qBAAqB,eAAUlqE,IAAAA,OAAA,EAAAA,EAAAA,UAAEC,IAAAA,EAAAA,EAAIuH,QACtD,CAeG8ujB,GAAyBzojB,YAAY2xD,EACtC,GACF,CAEK,SAAU+2f,GAAsBrijB,GACpC,MAAO,KAAP,OAAYA,GAAZ,OAAqBrF,KAAKo/D,MAAsB,IAAhBp/D,KAAKqZ,UACvC,CCZA,IAAMsuiB,GACJ,yDAGWC,GAAa,eAEbC,GAAAA,WAaX,WAAYC,IAAgB,eATnB,KAAIhsjB,KAPmC,uBAiB9CrF,KAAK29iB,KAAOkT,GAAUQ,EACvB,+EAOD,qBAIiBC,EAJjB,EAyCWC,EAzCX,gGAyCWA,EAzCX,SA0CI5U,EACA/9iB,EACAY,GAEA,IAAM88iB,EAAarijB,OAAOqijB,WACtBE,EAAaF,GACfA,EAAWG,WAAWtpe,OAAM,WAC1Bmpe,EAAWG,WACRh7Z,QAAQk7Z,EAAS,CAAE92hB,OAAAA,IACnB/nB,MAAK,SAAAwN,GACJ1M,EAAQ0M,EACT,IACAiS,OAAM,WACL3e,EAAQuyjB,GACT,GACJ,IAED3xjB,EAAOjF,MAAM,0CAEhB,EA7DH,8CAIE,WAA+BojjB,GAA/B,yEACO6D,EADP,mBAEyB,MAAjB7D,EAAK0B,UAAkD,MAA9B1B,EAAKwP,sBAFtC,yCAGaxP,EAAKwP,sBAAsBxQ,SAHxC,UAMuB,MAAjBgB,EAAK0B,eAC2C13iB,IAAhDg2iB,EAAKyP,wBAAwBzP,EAAK0B,UAPxC,yCASa1B,EAAKyP,wBAAwBzP,EAAK0B,UAAU1C,SATzD,gCAaS,IAAIh+iB,QAAJ,yCAAoB,WAAOC,EAASY,GAAhB,sEACzByhjB,GAAmBtD,EAAM,CACvB6T,WAAmC,kBACnCj9e,QAAoC,yBAEnCz2E,MAAK,SAAAwI,GACJ,QAA8BqB,IAA1BrB,EAASu2iB,aAEN,CACL,IAAM98iB,EAAS,IAAI28iB,EAAgBp2iB,GAMnC,OALqB,MAAjBq3iB,EAAK0B,SACP1B,EAAKwP,sBAAwBptjB,EAE7B49iB,EAAKyP,wBAAwBzP,EAAK0B,UAAYt/iB,EAEzCnB,EAAQmB,EAAO48iB,QACvB,CATCn9iB,EAAO,IAAIjF,MAAM,2CAUpB,IACAgjB,OAAM,SAAAle,GACLG,EAAOH,EACR,IApBsB,2CAApB,0DAbT,2CAJF,yBAIiBiyjB,EAJjB,4CACEzriB,EADF,+BACmB,SACjB27hB,EAFF,kDA+DS,IAAI7ijB,SAAgB,SAACC,EAASY,GACnC8xjB,EAAgB,EAAK3T,MAClB7/iB,MAAK,SAAA6+iB,GACJ,IAAK6E,GAAgBhF,EAAavijB,OAAOqijB,YACvCiV,EAAuB5U,EAAS/9iB,EAASY,OACpC,CACL,GAAsB,qBAAXvF,OAIT,YAHAuF,EACE,IAAIjF,MAAM,mDAIdk3jB,GACWP,GAA2BvU,GACnC7+iB,MAAK,WACJyzjB,EAAuB5U,EAAS/9iB,EAASY,EAC1C,IACA+d,OAAM,SAAAle,GACLG,EAAOH,EACR,GACJ,CACF,IACAke,OAAM,SAAAle,GACLG,EAAOH,EACR,GACJ,KAxFH,qGAtBW+xjB,YAkHSM,GAAAA,EAAAA,EAAAA,mFAAf,WACL/T,EACA92iB,EACAgf,GAHK,qGAIL8riB,EAJK,gCAMCC,EAAW,IAAIR,GAA4BzT,GAN5C,kBASqBiU,EAASC,OAAOhsiB,GATrC,OASHisiB,EATG,wEAWqBF,EAASC,OAAOhsiB,GAAQ,GAX7C,QAWHisiB,EAXG,sBAaCC,EAAU/zjB,OAAAA,OAAAA,CAAAA,EAAQ6I,GACnB8qjB,EAGH3zjB,OAAOmH,OAAO4sjB,EAAY,CAAE,YAAeD,IAF3C9zjB,OAAOmH,OAAO4sjB,EAAY,CAAED,gBAAAA,IAI9B9zjB,OAAOmH,OAAO4sjB,EAAY,CAAE,WAAY,oBACxC/zjB,OAAOmH,OAAO4sjB,EAAY,CACxB,iBAA+C,yBArB5C,kBAuBEA,GAvBF,kFCnGS,SAAAC,GAAe/c,EAAkB74B,GAC/C,IAAMg4B,GAAWiB,EAAAA,EAAAA,IAAaJ,EAAK,QAEnC,GAAIb,EAASh0Y,gBAAiB,CAC5B,IAAMu9Y,EAAOvJ,EAASG,eAChB7ggB,EAAiB0ggB,EAAS6d,aAChC,IAAInyiB,EAAAA,EAAAA,IAAU4zB,EAAoB,OAAJ0oe,QAAI,IAAJA,EAAAA,EAAQ,CAAC,GACrC,OAAOuhC,EAEPL,EAAMK,EAAI,sBAEb,CAID,OAFavJ,EAAS8d,WAAW,CAAE90jB,QAASg/gB,GAG7C,UCzBe+1C,GACdxU,EACA96iB,EACAzF,GAEA,IAAMg1jB,EAAevB,GAAUlT,GAC/BK,EACEoU,EAAarS,iBACbqS,EAAY,0BAIdpU,EACE,eAAe5niB,KAAKvT,GACpBuvjB,EAAY,2BAId,IAAMC,KAAoB,OAAAj1jB,QAAA,IAAAA,OAAA,EAAAA,EAASi1jB,iBAE7Bn1d,EAAWo1d,GAAgBzvjB,GACjC,EAuBF,SAA4BA,GAI1B,IAAMq6F,EAAWo1d,GAAgBzvjB,GAC3B0vjB,EAAY,mBAAmBvjjB,KAAKnM,EAAImC,OAAOk4F,EAASv8F,SAC9D,IAAK4xjB,EACH,MAAO,CAAE1pgB,KAAM,GAAI2pgB,KAAM,MAE3B,IAAMC,EAAcF,EAAU,GAAGlwjB,MAAM,KAAKurD,OAAS,GAC/C8kgB,EAAgB,qBAAqB1jjB,KAAKyjjB,GAChD,GAAIC,EAAe,CACjB,IAAM7pgB,EAAO6pgB,EAAc,GAC3B,MAAO,CAAE7pgB,KAAAA,EAAM2pgB,KAAMG,GAAUF,EAAYztjB,OAAO6jD,EAAKloD,OAAS,IACjE,CACC,MAAqB8xjB,EAAYpwjB,MAAM,KAAvC,eACA,MAAO,CAAEwmD,KADT,KACe2pgB,KAAMG,GADrB,MAGH,CAzCwBC,CAAmB/vjB,GAAlCgmD,EAAR,EAAQA,KAAM2pgB,EAAd,EAAcA,KACRK,EAAmB,OAATL,EAAgB,GAAhB,WAAyBA,GAGzCJ,EAAaryjB,OAAO6+iB,SAAW,CAAE/7iB,IAAK,GAAF,OAAKq6F,EAAL,aAAkBr0C,GAAlB,OAAyBgqgB,EAAzB,MACpCT,EAAa58b,SAASg4b,mCAAoC,EAC1D4E,EAAa9F,eAAiBtujB,OAAO8iM,OAAO,CAC1Cj4I,KAAAA,EACA2pgB,KAAAA,EACAt1d,SAAUA,EAASt7F,QAAQ,IAAK,IAChCxE,QAASY,OAAO8iM,OAAO,CAAEuxX,gBAAAA,MAGtBA,GAyCP,WACE,SAASS,IACP,IAAM54f,EAAKh4D,SAASmG,cAAc,KAC5B0qjB,EAAM74f,EAAGpjC,MACfojC,EAAG84f,UACD,oEACFD,EAAIvojB,SAAW,QACfuojB,EAAIpiiB,MAAQ,OACZoiiB,EAAI5xhB,gBAAkB,UACtB4xhB,EAAIpzhB,OAAS,qBACbozhB,EAAIpqiB,MAAQ,UACZoqiB,EAAIpuhB,OAAS,MACbouhB,EAAInuhB,KAAO,MACXmuhB,EAAI/zhB,OAAS,MACb+zhB,EAAIx/iB,OAAS,QACbw/iB,EAAI/thB,UAAY,SAChBk1B,EAAGpsB,UAAUC,IAAI,6BACjB7rC,SAASoD,KAAKiD,YAAY2xD,EAC3B,CAEsB,qBAAZ79D,SAAmD,oBAAjBA,QAAQ2gB,MACnD3gB,QAAQ2gB,KACN,gIAKkB,qBAAX/iB,QAA8C,qBAAbiI,WACd,YAAxBA,SAASqmD,WACXtuD,OAAOsH,iBAAiB,mBAAoBuxjB,GAE5CA,IAGN,CA1EIG,EAEH,CAED,SAASX,GAAgBzvjB,GACvB,IAAMqwjB,EAAcrwjB,EAAIzB,QAAQ,KAChC,OAAO8xjB,EAAc,EAAI,GAAKrwjB,EAAImC,OAAO,EAAGkujB,EAAc,EAC3D,CAsBD,SAASP,GAAUE,GACjB,IAAKA,EACH,OAAO,KAET,IAAML,EAAO95hB,OAAOm6hB,GACpB,OAAIl3f,MAAM62f,GACD,KAEFA,CACR,KCtFYW,GAAAA,WAEX,WAOWrO,EASAsO,IAAoB,eATpB,KAAUtO,WAAVA,EASA,KAAYsO,aAAZA,CACP,sCAOJ,WACE,OAAOlV,EAAU,kBAClB,oCAGD,SAAoBmV,GAClB,OAAOnV,EAAU,kBAClB,+BAED,SACEmV,EACAC,GAEA,OAAOpV,EAAU,kBAClB,6CAED,SAA6BmV,GAC3B,OAAOnV,EAAU,kBAClB,OA5CUiV,YCWSI,GAAc,EAAdA,mFAAf,WACL5V,EACA92iB,GAFK,+FAIEy4iB,EACL3B,EAGA,oCAAAyB,EAAmBzB,EAAM92iB,KARtB,2EAoBe2sjB,GAAoB,EAApBA,mFAAf,WACL7V,EACA92iB,GAFK,+FAIEy4iB,EAGL3B,EAAkD,6BAAA92iB,IAP/C,2EAiBe4sjB,GAAAA,EAAAA,mFAAf,WACL9V,EACA92iB,GAFK,+FAIEy4iB,EACL3B,EAGA,6BAAAyB,EAAmBzB,EAAM92iB,KARtB,2ECjCe6sjB,GAAmB,EAAnBA,mFAAf,WACL/V,EACA92iB,GAFK,+FAIE45iB,EAIL9C,EAGA,yCAAAyB,EAAmBzB,EAAM92iB,KAXtB,2EAiEQ8sjB,GAAY,EAAZA,mFAAf,WACEhW,EACA92iB,GAFF,+FAISy4iB,EACL3B,EAGA,kCAAAyB,EAAmBzB,EAAM92iB,KAR7B,2EAYsB+sjB,GAAAA,EAAAA,mFAAf,WACLjW,EACA92iB,GAFK,+FAIE8sjB,GAAYhW,EAAM92iB,IAJpB,2EAOegtjB,GAAAA,EAAAA,mFAAf,WACLlW,EACA92iB,GAFK,+FAIE8sjB,GAAYhW,EAAM92iB,IAJpB,2EAOeitjB,GAAAA,EAAAA,mFAAf,WACLnW,EACA92iB,GAFK,+FAIE8sjB,GAAYhW,EAAM92iB,IAJpB,2ECnGektjB,GAAAA,EAAAA,mFAAf,WACLpW,EACA92iB,GAFK,+FAIE45iB,EAIL9C,EAGA,0CAAAyB,EAAmBzB,EAAM92iB,KAXtB,2EAoBemtjB,GAA8B,EAA9BA,mFAAf,WACLrW,EACA92iB,GAFK,+FAIE45iB,EAIL9C,EAGA,0CAAAyB,EAAmBzB,EAAM92iB,KAXtB,sECZMotjB,GAAAA,SAAAA,iCAEX,WAEWC,EAEAC,EACTf,GAEwC,MAA/BgB,EAA+B,uDAAJ,KAAI,uBAExC,cAAK,WAAsBhB,IAPZc,OAANA,EAEA,EAASC,UAATA,EAGA,EAASC,UAATA,EAA+B,CAGzC,sCA6BD,WACE,MAAO,CACLtgiB,MAAO9zB,KAAKk0jB,OACZngiB,SAAU/zB,KAAKm0jB,UACff,aAAcpzjB,KAAKozjB,aACnB/T,SAAUr/iB,KAAKo0jB,UAElB,6EAuBD,WAA0BzW,GAA1B,qFACU39iB,KAAKozjB,aADf,OAEI,aAFJ,OAmCI,cAnCJ,2BAGYvsjB,EAAqC,CACzCwtjB,mBAAmB,EACnBvgiB,MAAO9zB,KAAKk0jB,OACZngiB,SAAU/zB,KAAKm0jB,UACf3C,WAAmC,qBAEP,QAA1B,EAAA7T,EAAK2W,6BAAqB55jB,IAAAA,OAAA,EAAAA,EAAEkijB,sBATtC,iCAU2C8U,GACjC/T,EACA92iB,EAAO,sBAZjB,cAUc0tjB,EAVd,yBAeeb,GAAmB/V,EAAM4W,IAfxC,iCAiBeb,GAAmB/V,EAAM92iB,GAAS0W,MAAlC,yCAAwC,WAAMle,GAAN,+EAE3CA,EAAMhF,OAAN,eAAuB,2BAFoB,uBAI3CgC,QAAQm3D,IACN,oKALyC,SAORk+f,GACjC/T,EACA92iB,EAAO,sBATkC,cAOrC0tjB,EAPqC,yBAYpCb,GAAmB/V,EAAM4W,IAZW,gCAcpC51jB,QAAQa,OAAOH,IAdqB,2CAAxC,wDAjBf,iCAoCa00jB,GAAoBpW,EAAM,CAC/B7phB,MAAO9zB,KAAKk0jB,OACZM,QAASx0jB,KAAKm0jB,aAtCtB,QAyCM7W,EAAMK,EAAI,kBAzChB,6KA8CA,WACEA,EACA+F,GAFF,2EAIU1jjB,KAAKozjB,aAJf,OAKI,aALJ,OAYI,cAZJ,+CAMaI,GAAoB7V,EAAM,CAC/B+F,QAAAA,EACA2Q,mBAAmB,EACnBvgiB,MAAO9zB,KAAKk0jB,OACZngiB,SAAU/zB,KAAKm0jB,aAVvB,gCAaaH,GAA8BrW,EAAM,CACzC+F,QAAAA,EACA5vhB,MAAO9zB,KAAKk0jB,OACZM,QAASx0jB,KAAKm0jB,aAhBtB,OAmBM7W,EAAMK,EAAI,kBAnBhB,mJAwBA,SAA6BA,GAC3B,OAAO39iB,KAAKy0jB,oBAAoB9W,EACjC,wCAhID,SACE7phB,EACAC,GAEA,OAAO,IAAIkgiB,EACTngiB,EACAC,EAAQ,WAGX,kCAGD,SACED,EACA0giB,GAC8B,IAA9BnV,EAA8B,uDAAJ,KAE1B,OAAO,IAAI4U,EACTngiB,EACA0giB,EAAO,YAEPnV,EAEH,yBAoBD,SAAgB34iB,GACd,IAAMyO,EAAsB,kBAATzO,EAAoBZ,KAAK6G,MAAMjG,GAAQA,EAC1D,IAAO,OAAHyO,QAAG,IAAHA,OAAG,EAAHA,EAAK2e,SAAY,OAAH3e,QAAG,IAAHA,OAAG,EAAHA,EAAK4e,UAAU,CAC/B,GAAoB,aAAhB5e,EAAIi+iB,aACN,OAAOpzjB,KAAK00jB,sBAAsBv/iB,EAAI2e,MAAO3e,EAAI4e,UAC5C,GAAoB,cAAhB5e,EAAIi+iB,aACb,OAAOpzjB,KAAK20jB,kBAAkBx/iB,EAAI2e,MAAO3e,EAAI4e,SAAU5e,EAAIkqiB,SAE9D,CACD,OAAO,IACR,OApEU4U,CAA4Bd,aCInByB,GAAc,EAAdA,mFAAf,WACLjX,EACA92iB,GAFK,+FAIE45iB,EACL9C,EAGA,oCAAAyB,EAAmBzB,EAAM92iB,KARtB,kECpBP,IA6BagujB,GAAAA,SAAAA,iCAAb,qEAqBsBC,aAAkB,KArBxC,CAmJC,sCA1FC,WACE,MAAO,CACLpR,QAAS1jjB,KAAK0jjB,QACdyB,YAAanljB,KAAKmljB,YAClB93D,OAAQrtf,KAAKqtf,OACbvlf,MAAO9H,KAAK8H,MACZgtjB,aAAc90jB,KAAK80jB,aACnBhQ,WAAY9kjB,KAAK8kjB,WACjBsO,aAAcpzjB,KAAKozjB,aAEtB,oCA4BD,SAAoBzV,GAElB,OAAOiX,GAAcjX,EADL39iB,KAAK+0jB,eAEtB,+BAGD,SACEpX,EACA+F,GAEA,IAAM78iB,EAAU7G,KAAK+0jB,eAErB,OADAlujB,EAAQ68iB,QAAUA,EACXkR,GAAcjX,EAAM92iB,EAC5B,6CAGD,SAA6B82iB,GAC3B,IAAM92iB,EAAU7G,KAAK+0jB,eAErB,OADAlujB,EAAQmujB,YAAa,EACdJ,GAAcjX,EAAM92iB,EAC5B,6BAEO,WACN,IAAMA,EAAgC,CACpCoujB,WApJkB,mBAqJlBZ,mBAAmB,GAGrB,GAAIr0jB,KAAK80jB,aACPjujB,EAAQiujB,aAAe90jB,KAAK80jB,iBACvB,CACL,IAAMI,EAAmC,CAAC,EACtCl1jB,KAAK0jjB,UACPwR,EAAQ,SAAel1jB,KAAK0jjB,SAE1B1jjB,KAAKmljB,cACP+P,EAAQ,aAAmBl1jB,KAAKmljB,aAE9BnljB,KAAKqtf,SACP6nE,EAAQ,mBAAyBl1jB,KAAKqtf,QAGxC6nE,EAAQ,WAAiBl1jB,KAAK8kjB,WAC1B9kjB,KAAK8H,QAAU9H,KAAK80jB,eACtBI,EAAQ,MAAYl1jB,KAAK8H,OAG3BjB,EAAQqujB,UAAW30iB,EAAAA,EAAAA,IAAY20iB,EAChC,CAED,OAAOrujB,CACR,8BA1HD,SAAmBvC,GACjB,IAAM6wjB,EAAO,IAAIN,EAAgBvwjB,EAAOwgjB,WAAYxgjB,EAAO8ujB,cA4B3D,OA1BI9ujB,EAAOo/iB,SAAWp/iB,EAAO6gjB,aAEvB7gjB,EAAOo/iB,UACTyR,EAAKzR,QAAUp/iB,EAAOo/iB,SAGpBp/iB,EAAO6gjB,cACTgQ,EAAKhQ,YAAc7gjB,EAAO6gjB,aAIxB7gjB,EAAOwD,QAAUxD,EAAOwwjB,eAC1BK,EAAKrtjB,MAAQxD,EAAOwD,OAGlBxD,EAAOwwjB,eACTK,EAAKL,aAAexwjB,EAAOwwjB,eAEpBxwjB,EAAO8wjB,YAAc9wjB,EAAO+wjB,kBAErCF,EAAKhQ,YAAc7gjB,EAAO8wjB,WAC1BD,EAAK9nE,OAAS/of,EAAO+wjB,kBAErB/X,EAAM,kBAGD6X,CACR,yBAwBD,SAAgBzujB,GACd,IAAMyO,EAAsB,kBAATzO,EAAoBZ,KAAK6G,MAAMjG,GAAQA,EAClDo+iB,EAA6D3viB,EAA7D2viB,WAAYsO,EAAiDj+iB,EAAjDi+iB,aAAiBxmU,EAAgCykL,EAAAA,EAA/D,+BACN,IAAKyzI,IAAesO,EAClB,OAAO,KAGT,IAAM+B,EAAO,IAAIN,EAAgB/P,EAAYsO,GAM7C,OALA+B,EAAKzR,QAAU92T,EAAK82T,cAAW/7iB,EAC/BwtjB,EAAKhQ,YAAcv4T,EAAKu4T,kBAAex9iB,EACvCwtjB,EAAK9nE,OAASzgQ,EAAKygQ,OACnB8nE,EAAKrtjB,MAAQ8kP,EAAK9kP,MAClBqtjB,EAAKL,aAAeloU,EAAKkoU,cAAgB,KAClCK,CACR,OA5FUN,CAAwB1B,aClBfmC,GAA0B,EAA1BA,mFAAf,WACL3X,EACA92iB,GAFK,+FAIEy4iB,EAIL3B,EAGA,2CAAAyB,EAAmBzB,EAAM92iB,KAXtB,kHAuCA,WACL82iB,EACA92iB,GAFK,+FAIE45iB,EAIL9C,EAGA,4CAAAyB,EAAmBzB,EAAM92iB,KAXtB,kHAeA,WACL82iB,EACA92iB,GAFK,4FAIkB45iB,EAIrB9C,EAAI,4CAGJyB,EAAmBzB,EAAM92iB,IAXtB,YAICP,EAJD,QAaQivjB,eAbR,sBAcGnV,GAAiBzC,EAAuC,2CAAAr3iB,GAd3D,gCAgBEA,GAhBF,kEAwBP,IAAMkvjB,IAA2C,UAG/C,iBAAwD,kEAGnD,WACL7X,EACA92iB,GAFK,mFAIC4ujB,EAAUz3jB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EACX6I,GAAO,CACV4gG,UAAW,WANR,kBAQEg5c,EAIL9C,EAAI,4CAGJyB,EAAmBzB,EAAM8X,GACzBD,KAhBG,sEClFME,GAAAA,SAAAA,iCACX,WAAqCpxjB,GAAqC,6BACxE,cAAK,kBADoCA,OAANA,EAAqC,CAEzE,mDAmBD,SAAoBq5iB,GAClB,gBDckBgY,EAAAA,mCCdXA,CAAsBhY,EAAM39iB,KAAK41jB,2BACzC,+BAGD,SACEjY,EACA+F,GAEA,gBDqBkBmS,EAAAA,mCCrBXA,CAAoBlY,EACzB3/iB,OAAAA,OAAAA,CAAA0ljB,QAAAA,GACG1jjB,KAAK41jB,4BAEX,6CAGD,SAA6BjY,GAC3B,gBD2C+C,EAA7BmY,mCC3CXA,CAA6BnY,EAAM39iB,KAAK41jB,2BAChD,yCAGD,WACE,MACE51jB,KAAKsE,OADCixjB,EAAR,EAAQA,eAAgB1U,EAAxB,EAAwBA,YAAakV,EAArC,EAAqCA,eAAgBC,EAArD,EAAqDA,iBAErD,OAAIT,GAAkB1U,EACb,CAAE0U,eAAAA,EAAgB1U,YAAAA,GAGpB,CACLoV,YAAaF,EACb17jB,KAAM27jB,EAET,uBAGD,WACE,IAAM7gjB,EAA8B,CAClC2viB,WAAY9kjB,KAAK8kjB,YAenB,OAbI9kjB,KAAKsE,OAAOu8iB,cACd1riB,EAAI0riB,YAAc7gjB,KAAKsE,OAAOu8iB,aAE5B7gjB,KAAKsE,OAAOixjB,iBACdpgjB,EAAIogjB,eAAiBv1jB,KAAKsE,OAAOixjB,gBAE/Bv1jB,KAAKsE,OAAO0xjB,mBACd7gjB,EAAI6gjB,iBAAmBh2jB,KAAKsE,OAAO0xjB,kBAEjCh2jB,KAAKsE,OAAOyxjB,iBACd5gjB,EAAI4gjB,eAAiB/1jB,KAAKsE,OAAOyxjB,gBAG5B5gjB,CACR,oCArED,SACE4gjB,EACAC,GAEA,OAAO,IAAIN,EAAoB,CAAEK,eAAAA,EAAgBC,iBAAAA,GAClD,mCAGD,SACEnV,EACA0U,GAEA,OAAO,IAAIG,EAAoB,CAAE7U,YAAAA,EAAa0U,eAAAA,GAC/C,yBA2DD,SAAgB7ujB,GACM,kBAATA,IACTA,EAAOZ,KAAK6G,MAAMjG,IAGpB,MACEA,EADMqvjB,EAAR,EAAQA,eAAgBC,EAAxB,EAAwBA,iBAAkBnV,EAA1C,EAA0CA,YAAa0U,EAAvD,EAAuDA,eAEvD,OACGS,GACAD,GACAlV,GACA0U,EAKI,IAAIG,EAAoB,CAC7BK,eAAAA,EACAC,iBAAAA,EACAnV,YAAAA,EACA0U,eAAAA,IAPO,IASV,OApGUG,CAA4BvC,QC8C5B+C,GAAAA,WAiCX,WAAYC,oBAAkB,eAC5B,IAAMC,GAAe11iB,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,IAAmBw1iB,IACpD1W,EAAyC,QAAhC,EAAA2W,EAAY,cAAoB17jB,IAAAA,EAAAA,EAAI,KAC7CL,EAAoC,QAA7B,EAAA+7jB,EAAY,eAAiBz7jB,IAAAA,EAAAA,EAAI,KACxC8sG,EApFV,SAAmBngF,GACjB,OAAQA,GACN,IAAK,eACH,MAAyC,gBAC3C,IAAK,gBACH,MAA0C,iBAC5C,IAAK,SACH,MAAwC,eAC1C,IAAK,cACH,MAAwC,eAC1C,IAAK,uBACH,MAAmD,0BACrD,IAAK,6BACH,MAAyD,gCAC3D,QACE,OAAO,KAEZ,CAmEqB+uiB,CAAuC,QAA7B,EAAAD,EAAY,YAAiBx7jB,IAAAA,EAAAA,EAAI,MAE7DojjB,EAAQyB,GAAUpljB,GAAQotG,EAAS,kBACnCznG,KAAKy/iB,OAASA,EACdz/iB,KAAKynG,UAAYA,EACjBznG,KAAK3F,KAAOA,EACZ2F,KAAKs2jB,YAAmD,QAArC,EAAAF,EAAY,mBAAyBv7jB,IAAAA,EAAAA,EAAI,KAC5DmF,KAAK2/iB,aAAqD,QAAtC,EAAAyW,EAAY,oBAA0Bt7jB,IAAAA,EAAAA,EAAI,KAC9DkF,KAAKq/iB,SAA6C,QAAlC,EAAA+W,EAAY,gBAAsBvvF,IAAAA,EAAAA,EAAI,IACvD,8CAWD,SAAiBpqS,GACf,IAAM05X,EAjFV,SAAuBtzjB,GACrB,IAAM45L,GAAO/7K,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,IAAmB9d,IAArC,KAGP0zjB,EAAiB95X,GACnB/7K,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,IAAmB87K,IAArC,aACA,KAEE+5X,GAAc91iB,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,IAAmB9d,IAArC,aAMpB,OAH0B2zjB,GACtB91iB,EAAAA,EAAAA,KAAkBC,EAAAA,EAAAA,IAAmB61iB,IAArC,KACA,OACwBA,GAAeD,GAAkB95X,GAAQ55L,CACtE,CAkEsB4zjB,CAAch6X,GACjC,IACE,OAAO,IAAIy5X,EAAcC,EAG1B,CAFC,MAAMz7jB,GACN,OAAO,IACR,CACF,OAhEUw7jB,OC1DAQ,GAAAA,WAAb,6BAkBW,KAAA5R,WAAa4R,EAAkBC,WA2DzC,+CAvCC,SAAkB7iiB,EAAeC,GAC/B,OAAOkgiB,GAAoBS,sBAAsB5giB,EAAOC,EACzD,mCAwBD,SACED,EACA8iiB,GAEA,IAAMC,EAAgBX,GAAcY,UAAUF,GAG9C,OAFA5Y,EAAQ6Y,EAAa,kBAEd5C,GAAoBU,kBACzB7giB,EACA+iiB,EAAcx8jB,KACdw8jB,EAAcxX,SAEjB,OA5EUqX,GAIKA,GAAAA,YAA8C,WAI9CA,GAAAA,8BACc,WAIdA,GAAAA,0BACU,gBCXNK,GAAAA,WAWpB,WAAqBjS,IAAkB,eAAlB,KAAUA,WAAVA,EATrB,KAAmBkS,oBAAkB,KAE7B,KAAgBC,iBAAqB,CAAC,CAOH,kDAO3C,SAAmBtX,GACjB3/iB,KAAKg3jB,oBAAsBrX,CAC5B,oCAYD,SAAoBuX,GAElB,OADAl3jB,KAAKi3jB,iBAAmBC,EACjBl3jB,IACR,oCAKD,WACE,OAAOA,KAAKi3jB,gBACb,OA1CmBF,GC6BAI,GAAAA,SAAAA,iCAAtB,qEAKgBC,OAAa,GAL7B,CA0BC,wCAdC,SAASnjT,GAKP,OAHKj0Q,KAAKo3jB,OAAO7xjB,SAAS0uQ,IACxBj0Q,KAAKo3jB,OAAOh3jB,KAAK6zQ,GAEZj0Q,IACR,0BAKD,WACE,OAAO,OAAIA,KAAKo3jB,OACjB,OAzBmBD,CACZJ,IAmEGM,GAAAA,SAAAA,qIAmCX,SAAW/yjB,GACT,OAAOtE,KAAKs3jB,YAAWt5jB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAMsG,GAAM,CAAEwD,MAAOxD,EAAOizjB,WACpD,4BAGO,SACNjzjB,GAIA,OAFA05iB,EAAQ15iB,EAAOo/iB,SAAWp/iB,EAAO6gjB,YAAW,kBAErC0P,GAAgB2C,YAAWx5jB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAC7BsG,GAAM,CACTwgjB,WAAY9kjB,KAAK8kjB,WACjBsO,aAAcpzjB,KAAK8kjB,aAEtB,qCA7CD,SAA0Bp+iB,GACxB,IAAMyO,EAAsB,kBAATzO,EAAoBZ,KAAK6G,MAAMjG,GAAQA,EAK1D,OAJAs3iB,EACE,eAAgB7oiB,GAAO,iBAAkBA,EAAG,kBAGvC0/iB,GAAgB2C,YAAYrijB,EACpC,qCA6CD,SACEsijB,GAEA,OAAOJ,EAAcK,gCACnBD,EAEH,oCAOD,SAA2Bp4jB,GACzB,OAAOg4jB,EAAcK,gCAClBr4jB,EAAM2f,YAAc,CAAC,EAEzB,gDAEO,YAEkB,IADR24iB,EACQ,EADxB7W,eAEA,IAAK6W,EACH,OAAO,KAGT,IACEC,EAMED,EANFC,aACAC,EAKEF,EALFE,iBACAxC,EAIEsC,EAJFtC,iBACAP,EAGE6C,EAHF7C,aACAhtjB,EAEE6vjB,EAFF7vjB,MACAg9iB,EACE6S,EADF7S,WAEF,IACG+S,IACAxC,IACAuC,IACA9C,EAED,OAAO,KAGT,IAAKhQ,EACH,OAAO,KAGT,IACE,OAAO,IAAIuS,EAAcvS,GAAYwS,YAAY,CAC/C5T,QAASkU,EACTzS,YAAa0S,EACb/vjB,MAAAA,EACAgtjB,aAAAA,GAIH,CAFC,MAAO7rjB,GACP,OAAO,IACR,CACF,OAlHUoujB,CAAsBF,ICjEtBW,GAAAA,SAAAA,iCAOX,+CACO,eACN,+CAcD,SAAkB3S,GAChB,OAAO0P,GAAgB2C,YAAY,CACjC1S,WAAYgT,EAAqBnB,YACjCvD,aAAc0E,EAAqBC,wBACnC5S,YAAAA,GAEH,qCAOD,SACEsS,GAEA,OAAOK,EAAqBE,2BAC1BP,EAEH,oCAQD,SAA2Bp4jB,GACzB,OAAOy4jB,EAAqBE,2BACzB34jB,EAAM2f,YAAc,CAAC,EAEzB,2CAEO,YAEkB,IADR24iB,EACQ,EADxB7W,eAEA,IAAK6W,KAAmB,qBAAsBA,GAC5C,OAAO,KAGT,IAAKA,EAAcE,iBACjB,OAAO,KAGT,IACE,OAAOC,EAAqBG,WAAWN,EAAcE,iBAGtD,CAFC,MAAMn9jB,GACN,OAAO,IACR,CACF,OAxEUo9jB,CAA6BX,IAExBW,GAAAA,wBACQ,eAERA,GAAAA,YAAkD,mBCFvDI,GAAAA,SAAAA,iCAMX,0CACE,cAAK,eACAC,SAAS,WAFhB,CAGC,+CAeD,SACEzU,EACAyB,GAEA,OAAO0P,GAAgB2C,YAAY,CACjC1S,WAAYoT,EAAmBvB,YAC/BvD,aAAc8E,EAAmBE,sBACjC1U,QAAAA,EACAyB,YAAAA,GAEH,qCAOD,SACEsS,GAEA,OAAOS,EAAmBF,2BACxBP,EAEH,oCAOD,SAA2Bp4jB,GACzB,OAAO64jB,EAAmBF,2BACvB34jB,EAAM2f,YAAc,CAAC,EAEzB,2CAEO,YAEkB,IADR24iB,EACQ,EADxB7W,eAEA,IAAK6W,EACH,OAAO,KAGT,IAAQC,EACND,EADMC,aAAcC,EACpBF,EADoBE,iBAEtB,IAAKD,IAAiBC,EAEpB,OAAO,KAGT,IACE,OAAOK,EAAmBD,WAAWL,EAAcC,EAGpD,CAFC,MAAMn9jB,GACN,OAAO,IACR,CACF,OA/EUw9jB,CAA2Bf,IAEtBe,GAAAA,sBAA0D,aAE1DA,GAAAA,YAA8C,iBCJnDG,GAAAA,SAAAA,iCAMX,+CACO,aACN,+CAOD,SAAkBlT,GAChB,OAAO0P,GAAgB2C,YAAY,CACjC1S,WAAYuT,EAAmB1B,YAC/BvD,aAAciF,EAAmBC,sBACjCnT,YAAAA,GAEH,qCAOD,SACEsS,GAEA,OAAOY,EAAmBL,2BACxBP,EAEH,oCAQD,SAA2Bp4jB,GACzB,OAAOg5jB,EAAmBL,2BACvB34jB,EAAM2f,YAAc,CAAC,EAEzB,2CAEO,YAEkB,IADR24iB,EACQ,EADxB7W,eAEA,IAAK6W,KAAmB,qBAAsBA,GAC5C,OAAO,KAGT,IAAKA,EAAcE,iBACjB,OAAO,KAGT,IACE,OAAOQ,EAAmBJ,WAAWN,EAAcE,iBAGpD,CAFC,MAAMn9jB,GACN,OAAO,IACR,CACF,OAhEU29jB,CAA2BlB,IAEtBkB,GAAAA,sBAA0D,aAE1DA,GAAAA,YAA8C,aCzChE,ICoDaE,GAAAA,SAAAA,iCAMX,+CACO,cACN,+CAQD,SAAkBjtjB,EAAe+hf,GAC/B,OAAOwnE,GAAgB2C,YAAY,CACjC1S,WAAYyT,EAAoB5B,YAChCvD,aAAcmF,EAAoBC,uBAClCpD,WAAY9pjB,EACZ+pjB,iBAAkBhoE,GAErB,qCAOD,SACEoqE,GAEA,OAAOc,EAAoBP,2BACzBP,EAEH,oCAQD,SAA2Bp4jB,GACzB,OAAOk5jB,EAAoBP,2BACxB34jB,EAAM2f,YAAc,CAAC,EAEzB,2CAEO,YAEkB,IADR24iB,EACQ,EADxB7W,eAEA,IAAK6W,EACH,OAAO,KAET,IAAQE,EACNF,EADME,iBAAkBxC,EACxBsC,EADwBtC,iBAE1B,IAAKwC,IAAqBxC,EACxB,OAAO,KAGT,IACE,OAAOkD,EAAoBN,WAAWJ,EAAkBxC,EAGzD,CAFC,MAAM36jB,GACN,OAAO,IACR,CACF,OAnEU69jB,CAA4BpB,aCxCnBsB,GAAO,EAAPA,mFAAf,WACL9a,EACA92iB,GAFK,+FAIE45iB,EACL9C,EAGA,6BAAAyB,EAAmBzB,EAAM92iB,KARtB,kED0CW0xjB,GAAAA,uBAA6D,cAE7DA,GAAAA,YAAgD,kBExDrDG,GAAAA,WAQX,WAAYp0jB,IAA4B,eACtCtE,KAAKuhjB,KAAOj9iB,EAAOi9iB,KACnBvhjB,KAAK8kjB,WAAaxgjB,EAAOwgjB,WACzB9kjB,KAAK8gjB,eAAiBx8iB,EAAOw8iB,eAC7B9gjB,KAAK24jB,cAAgBr0jB,EAAOq0jB,aAC7B,kGAED,WACEhb,EACAgb,EACAtR,GAHF,qGAIEz0gB,EAJF,yCAMqBqzgB,GAAS2S,qBAC1Bjb,EACA0J,EACAz0gB,GATJ,cAMQ2ugB,EANR,OAWQuD,EAAa+T,GAAsBxR,GACnCyR,EAAW,IAAIJ,EAAmB,CACtCnX,KAAAA,EACAuD,WAAAA,EACAhE,eAAgBuG,EAChBsR,cAAAA,IAhBJ,kBAkBSG,GAlBT,0KAqBA,WACEvX,EACAoX,EACAryjB,GAHF,4FAKQi7iB,EAAKwX,yBAAyBzyjB,GAAuB,GAL7D,cAMQw+iB,EAAa+T,GAAsBvyjB,GAN3C,kBAOS,IAAIoyjB,EAAmB,CAC5BnX,KAAAA,EACAuD,WAAAA,EACAhE,eAAgBx6iB,EAChBqyjB,cAAAA,KAXJ,0GApCWD,GAoDb,SAASG,GACPvyjB,GAEA,OAAIA,EAASw+iB,WACJx+iB,EAASw+iB,WAGd,gBAAiBx+iB,EACK,QAGnB,IACT,UC5DsB0yjB,GAAkB,mFAAjC,WAAiCrb,GAAjC,yFACCyU,EAAevB,GAAUlT,GAD1B,SAECyU,EAAanF,uBAFd,YAGuB,QAAxB,EAAAmF,EAAa1P,mBAAWhojB,IAAAA,OAAA,EAAAA,EAAEk4C,aAHzB,yCAKI,IAAI8lhB,GAAmB,CAC5BnX,KAAM6Q,EAAa1P,YACnBoC,WAAY,KACZ6T,cAAoC,YARnC,uBAWkBF,GAAOrG,EAAc,CAC1CiC,mBAAmB,IAZhB,cAWC/tjB,EAXD,iBAcwBoyjB,GAAmBE,qBAC9CxG,EAEA,SAAA9rjB,GACA,GAlBG,eAcCmxjB,EAdD,iBAoBCrF,EAAalE,mBAAmBuJ,EAAelW,MApBhD,iCAqBEkW,GArBF,uECJMwB,GAAAA,SAAAA,iCAMX,WACEtb,EACAt+iB,EACSs5jB,EACApX,GAAmB,+BAE5B,cAAMlijB,EAAMhF,KAAMgF,EAAMjF,UAHFu+jB,cAAbA,EACA,EAAIpX,KAAJA,EAITvjjB,OAAOihB,gBAAP,UAA4Bg6iB,EAAiBjxjB,WAC7C,EAAKgX,WAAa,CAChB61hB,QAAS8I,EAAKvkjB,KACdimjB,SAAuB,QAAb,EAAA1B,EAAK0B,gBAAQ3kjB,IAAAA,EAAAA,OAAIiN,EAC3B+4iB,gBAAiBrhjB,EAAM2f,WAAY0hiB,gBACnCiY,cAAAA,GAT0B,CAW7B,2DAED,SACEhb,EACAt+iB,EACAs5jB,EACApX,GAEA,OAAO,IAAI0X,EAAiBtb,EAAMt+iB,EAAOs5jB,EAAepX,EACzD,OA9BU0X,CACHl6iB,EAAAA,IAgCJ,SAAUm6iB,GACdvb,EACAgb,EACAV,EACA1W,GAOA,OAJgD,mBAA9CoX,EACIV,EAAWkB,6BAA6Bxb,GACxCsa,EAAWxD,oBAAoB9W,IAEdpgiB,OAAM,SAAAle,GAC3B,GAAIA,EAAMhF,OAAN,eAAuB,8BACzB,MAAM4+jB,GAAiBG,uBACrBzb,EACAt+iB,EACAs5jB,EACApX,GAIJ,MAAMlijB,CACP,GACH,CC/DM,SAAUg6jB,GACdpV,GAEA,OAAO,IAAIlljB,IACTkljB,EACGlgjB,KAAI,qBAAG+gjB,UAAH,IACJtqhB,QAAO,SAAA8+hB,GAAG,QAAMA,CAAN,IAEjB,UCOsBC,GAAO,EAAPA,mFAAf,WAAsBhY,EAAYuD,GAAlC,yFACCrD,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,GADnC,SAECiY,IAAoB,EAAM/X,EAAcqD,GAFzC,mBAG8B3D,GAH9B,KAGmDM,EAAa9D,KAHhE,SAIY8D,EAAaC,aAJzB,+BAKa,CAACoD,GALd,MAIHpB,QAJG,KAKH+V,eALG,4DAGG1V,EAHH,EAGGA,iBAKF2V,EAAgBL,GAAoBtV,GAAoB,IAE9DtC,EAAawC,aAAexC,EAAawC,aAAazphB,QAAO,SAAA6re,GAAE,OAC7DqzD,EAAc//jB,IAAI0sgB,EAAGy+C,WADwC,IAG1D4U,EAAc//jB,IAAG,WACpB8njB,EAAaZ,YAAc,MAdxB,UAiBCY,EAAa9D,KAAKgH,sBAAsBlD,GAjBzC,iCAkBEA,GAlBF,4EAqBekY,GAAAA,EAAAA,mFAAf,WACLpY,EACA0W,GAFK,iGAGL2B,EAHK,qCAKkBpX,GALlB,KAMHjB,EANG,KAOH0W,EAPG,KAOuB1W,EAAK5D,KAP5B,SAOwC4D,EAAKG,aAP7C,oCAOQmY,eAPR,0BAQHD,EARG,kDAKCtzjB,EALD,yBAUEoyjB,GAAmBoB,cAAcvY,EAA0B,OAAAj7iB,IAV7D,8EAaekzjB,GAAoB,EAApBA,EAAAA,mFAAf,WACL/xc,EACA85b,EACAnN,GAHK,8FAKCqP,GAAqBlC,GALtB,OAMCwY,EAAcV,GAAoB9X,EAAK0C,cAEvC5pjB,GACS,IAAbotH,EACG,0BACD,mBACJu2b,EAAQ+b,EAAYpgkB,IAAIy6iB,KAAc3sb,EAAU85b,EAAK5D,KAAMtjjB,GAZtD,2EC7Ce2/jB,GAAgB,EAAhBA,mFAAf,WACLzY,EACA0W,GAFK,yGAGL2B,EAHK,gCAKGjc,EAAS4D,EAAT5D,KACFgb,EAAa,iBANd,kBASoBnW,GACrBjB,EACA2X,GACEvb,EACAgb,EACAV,EACA1W,GAEFqY,GAjBC,cAmBH5b,GAVM13iB,EATH,QAmBco9iB,QAAS/F,EAAI,kBAE9BK,EADM5viB,EAASwziB,GAAYt7iB,EAASo9iB,SACpB/F,EAAI,kBAEP4G,EAAYn2iB,EAAjB6rjB,IACRjc,EAAQuD,EAAKvmG,MAAQupG,EAAS5G,EAAI,iBAxB/B,kBA0BI+a,GAAmBoB,cAAcvY,EAAMoX,EAAeryjB,IA1B1D,yCA6BE,uCAAqBjM,QAAtB,eAAuC,mBACzCijjB,EAAMK,EAAI,iBA9BT,iGCEeuc,GAAsB,EAAtBA,mFAAf,WACLvc,EACAsa,GAFK,qGAGL2B,EAHK,gCAKCjB,EAAa,SALd,SAMkBO,GACrBvb,EACAgb,EACAV,GATG,cAMC3xjB,EAND,gBAWwBoyjB,GAAmBE,qBAC9Cjb,EACAgb,EACAryjB,GAdG,UAWCmxjB,EAXD,OAiBAmC,EAjBA,kCAkBGjc,EAAKuQ,mBAAmBuJ,EAAelW,MAlB1C,iCAoBEkW,GApBF,8EAkCe0C,GAAqB,EAArBA,mFAAf,WACLxc,EACAsa,GAFK,+FAIEiC,GAAsBrJ,GAAUlT,GAAOsa,IAJzC,2EAkBemC,GAAmB,EAAnBA,mFAAf,WACL7Y,EACA0W,GAFK,mFAICxW,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,GAJnC,SAMCiY,IAAoB,EAAO/X,EAAcwW,EAAWnT,YANrD,gCAQE6U,GAAMlY,EAAcwW,IARtB,2EChDeoC,GAAAA,EAAAA,mFAAf,WACL1c,EACA92iB,GAFK,+FAIE45iB,EAIL9C,EAGA,4CAAAyB,EAAmBzB,EAAM92iB,KAXtB,2ECOewzjB,GAAsB,EAAtBA,mFAAf,WACL1c,EACA2c,GAFK,uFAIClI,EAAevB,GAAUlT,GAJ1B,SAKmC4c,GAAmBnI,EAAc,CACvE9mjB,MAAOgvjB,EACPjG,mBAAmB,IAPhB,cAKC/tjB,EALD,gBAScoyjB,GAAmBE,qBACpCxG,EAAY,SAEZ9rjB,GAZG,cASC6ujB,EATD,gBAcC/C,EAAalE,mBAAmBiH,EAAK5T,MAdtC,gCAeE4T,GAfF,4EClBSqF,GACd7c,EACA92iB,EACA4zjB,SAEAzc,GAC0B,QAAxB,EAAAyc,EAAmB53jB,WAAKnI,IAAAA,OAAA,EAAAA,EAAAA,QAAS,EACjCijjB,EAAI,wBAGNK,EACkD,qBAAzCyc,EAAmBC,mBACxBD,EAAmBC,kBAAkB/5jB,OAAS,EAChDg9iB,EAAI,+BAIN92iB,EAAQyvjB,YAAcmE,EAAmB53jB,IACzCgE,EAAQ6zjB,kBAAoBD,EAAmBC,kBAC/C7zjB,EAAQ8zjB,mBAAqBF,EAAmBG,gBAE5CH,EAAmBI,MACrB7c,EACEyc,EAAmBI,IAAIC,SAASn6jB,OAAS,EACzCg9iB,EAAI,yBAGN92iB,EAAQk0jB,YAAcN,EAAmBI,IAAIC,UAG3CL,EAAmB/lf,UACrBspe,EACEyc,EAAmB/lf,QAAQsmf,YAAYr6jB,OAAS,EAChDg9iB,EAAI,4BAGN92iB,EAAQo0jB,kBAAoBR,EAAmB/lf,QAAQwmf,WACvDr0jB,EAAQs0jB,0BACNV,EAAmB/lf,QAAQ0mf,eAC7Bv0jB,EAAQw0jB,mBAAqBZ,EAAmB/lf,QAAQsmf,YAE5D,UCTeM,GAAsB,mFAArC,WAAqC3d,GAArC,iFACQyU,EAAevB,GAAUlT,IACd+R,6BAFnB,gCAGU0C,EAAazC,wBAHvB,2EAuCsBkE,GAAuB,EAAvBA,EAAAA,mFAAf,WACLlW,EACA7phB,EACA2miB,GAHK,qFAKCrI,EAAevB,GAAUlT,GACzB92iB,EAA+C,CACnD00jB,YAA+C,iBAC/CzniB,MAAAA,EACA09hB,WAAmC,qBAEC,QAAlC,EAAAY,EAAakC,6BAAqB55jB,IAAAA,OAAA,EAAAA,EAAEkijB,sBAXnC,iCAYgC8U,GACjCU,EACAvrjB,EAAO,cAEP,GAhBC,cAYG0tjB,EAZH,OAkBCkG,GACFD,GACEpI,EACAmC,EACAkG,GAtBD,SAyBGe,GACJpJ,EACAmC,GA3BC,sCA8BCkG,GACFD,GACEpI,EACAvrjB,EACA4zjB,GAlCD,UAqCGgB,GACoBrJ,EAAcvrjB,GACrC0W,MAFGk+iB,WAAAA,IAAAA,GAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,KAAAA,MAEG,WAAMp8jB,GAAN,+EACDA,EAAMhF,OAAN,eAAuB,2BADtB,wBAEHgC,QAAQm3D,IACN,oJAHC,SAKgCk+f,GACjCU,EACAvrjB,EAAO,cAEP,GATC,cAKG0tjB,EALH,OAWCkG,GACFD,GACEpI,EACAmC,EACAkG,GAfD,SAkBGe,GACJpJ,EACAmC,GApBC,wDAuBI51jB,QAAQa,OAAOH,IAvBnB,4CAFHo8jB,OAAAA,SAAAA,GAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAAAA,IArCH,8EA6EeC,GAAqB,EAArBA,EAAAA,mFAAf,WACL/d,EACA6W,EACAmH,GAHK,sFAKCC,IACW94iB,EAAAA,EAAAA,IAAmB66hB,GAAO,CACvC6W,QAAAA,EACAmH,YAAAA,IAEDp+iB,MALGq+iB,WAAAA,IAAAA,GAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,KAAAA,MAKG,WAAMv8jB,GAAN,4EAEHA,EAAMhF,OAAN,eACQ,wCAEHihkB,GAAsB3d,GAGvBt+iB,EARD,2CALHu8jB,OAAAA,SAAAA,GAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAAAA,IALD,6EA+BenI,GAAgB,EAAhBA,mFAAf,WACL9V,EACA6W,GAFK,sFAICqH,IAAwB/4iB,EAAAA,EAAAA,IAAmB66hB,GAAO,CAAE6W,QAAAA,IAJrD,2EA0GesH,GAA+B,EAA/BA,EAAAA,mFAAf,WACLne,EACA7phB,EACAC,GAHK,2FAKCq+hB,EAAevB,GAAUlT,GACzB92iB,EAAyB,CAC7BwtjB,mBAAmB,EACnBvgiB,MAAAA,EACAC,SAAAA,EACAy9hB,WAAmC,qBAGC,QAAlC,EAAAY,EAAakC,6BAAqB55jB,IAAAA,OAAA,EAAAA,EAAEkijB,sBAbnC,gCAcgC8U,GACjCU,EACAvrjB,EAAO,kBAhBN,OAcG0tjB,EAdH,OAmBHwH,EAAiBtD,GAAOrG,EAAcmC,GAnBnC,uBAqBHwH,EAAiBtD,GAAOrG,EAAcvrjB,GAAS0W,MAA9B,yCAAoC,WAAMle,GAAN,+EAC/CA,EAAMhF,OAAN,eAAuB,2BADwB,uBAEjDgC,QAAQm3D,IACN,oIAH+C,SAKdk+f,GACjCU,EACAvrjB,EAAO,kBAPwC,cAK3C0tjB,EAL2C,yBAU1CkE,GAAOrG,EAAcmC,IAVqB,aAa7Cl1jB,EAb6C,2CAApC,uDArBd,yBAsCkB08jB,EAAex+iB,OAAM,SAAAle,GAO1C,MALEA,EAAMhF,OAAN,eAAuB,wCAElBihkB,GAAsB3d,GAGvBt+iB,CACP,IA9CI,eAsCCiH,EAtCD,iBAgDwBoyjB,GAAmBE,qBAC9CxG,EAAY,SAEZ9rjB,GAnDG,eAgDCmxjB,EAhDD,iBAqDCrF,EAAalE,mBAAmBuJ,EAAelW,MArDhD,iCAuDEkW,GAvDF,8EA0ESuE,GACdre,EACA7phB,EACAC,GAEA,OAAOomiB,IACLr3iB,EAAAA,EAAAA,IAAmB66hB,GACnB+Y,GAAkBuB,WAAWnkiB,EAAOC,IACpCxW,MAHK,yCAGC,WAAMle,GAAN,4EAEJA,EAAMhF,OAAN,eAAuB,wCAElBihkB,GAAsB3d,GAGvBt+iB,EAPA,2CAHD,sDAYT,UCpUsBy0jB,GAAsB,EAAtBA,EAAAA,mFAAf,WACLnW,EACA7phB,EACA2miB,GAHK,UAWIwB,EAXJ,2EAWIA,EAXJ,SAYHp1jB,EACA4zjB,GAEAzc,EACEyc,EAAmBG,gBACnBxI,EAAY,kBAGVqI,GACFD,GACEpI,EACAvrjB,EACA4zjB,EAGL,EAtBKrI,EAAevB,GAAUlT,GACzB92iB,EAAkC,CACtC00jB,YAA6C,eAC7CzniB,MAAAA,EACA09hB,WAAmC,qBAmBC,QAAlC,EAAAY,EAAakC,6BAAqB55jB,IAAAA,OAAA,EAAAA,EAAEkijB,sBA5BnC,iCA6BgC8U,GACjCU,EACAvrjB,EAAO,cAEP,GAjCC,cA6BG0tjB,EA7BH,OAmCH0H,EAAsB1H,EAAsBkG,GAnCzC,UAoCGyB,GAA0B9J,EAAcmC,GApC3C,uCAsCH0H,EAAsBp1jB,EAAS4zjB,GAtC5B,UAuCG0B,GACmB/J,EAAcvrjB,GACpC0W,MAFG4+iB,WAAAA,IAAAA,GAAAA,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,KAAAA,MAEG,WAAM98jB,GAAN,+EACDA,EAAMhF,OAAN,eAAuB,2BADtB,wBAEHgC,QAAQm3D,IACN,+IAHC,SAKgCk+f,GACjCU,EACAvrjB,EAAO,cAEP,GATC,cAKG0tjB,EALH,OAWH0H,EAAsB1H,EAAsBkG,GAXzC,SAYGyB,GAA0B9J,EAAcmC,GAZ3C,wDAcI51jB,QAAQa,OAAOH,IAdnB,4CAFH88jB,OAAAA,SAAAA,GAAAA,OAAAA,EAAAA,MAAAA,KAAAA,UAAAA,CAAAA,CAAAA,IAvCH,qEAqES,SAAAC,GAAsBze,EAAYiZ,GAChD,IAAMC,EAAgBX,GAAcY,UAAUF,GAC9C,MAA+B,kBAAxB,OAAAC,QAAa,IAAbA,OAAa,EAAbA,EAAepvd,UACvB,UAuCqBssd,GAAoB,EAApBA,EAAAA,mFAAf,WACLpW,EACA7phB,EACA8iiB,GAHK,qFAKCyF,GAAcv5iB,EAAAA,EAAAA,IAAmB66hB,GAOvCK,GANMia,EAAavB,GAAkB4F,mBACnCxoiB,EACA8iiB,GAAavY,MAKF+V,aAAeiI,EAAYhd,UAAY,MAClDgd,EAAW,sBAdR,kBAiBElC,GAAqBkC,EAAapE,IAjBpC,2ECvFerE,GAAsB,EAAtBA,mFAAf,WACLrS,EACAkZ,GAFK,yFAIChZ,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,GAJnC,SAKiBA,EAAKG,aALtB,cAKCgC,EALD,OAMC78iB,EAAkC,CACtC00jB,YAA6C,eAC7C7X,QAAAA,GAEE+W,GACFD,GACE/Y,EAAa9D,KACb92iB,EACA4zjB,GAdC,SAkBmB8B,GAA0B9a,EAAa9D,KAAM92iB,GAlBhE,qBAkBGitB,QAEMythB,EAAKzthB,MApBd,kCAqBGythB,EAAKl7c,SArBR,4EClEem2d,GAAAA,EAAAA,mFAAf,WACL7e,EACA92iB,GAFK,+FAIEy4iB,EACL3B,EAGA,6BAAA92iB,IARG,2ECIe21jB,GAAc,EAAdA,mFAAf,WACLjb,EADK,8FAGH7oiB,EAHG,EAGHA,YACU+riB,EAJP,EAIHD,cAGkB78iB,IAAhB+Q,QAA0C/Q,IAAb88iB,EAP5B,wDAWChD,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,GAXnC,SAYiBE,EAAaC,aAZ9B,cAYCgC,EAZD,OAaC+Y,EAAiB,CACrB/Y,QAAAA,EACAhriB,YAAAA,EACA+riB,SAAAA,EACA4P,mBAAmB,GAjBhB,UAmBkB7R,GACrBf,EACAib,GAAiBjb,EAAa9D,KAAM8e,IArBjC,eAmBCn2jB,EAnBD,OAwBLm7iB,EAAa/oiB,YAAcpS,EAASoS,aAAe,KACnD+oiB,EAAa+C,SAAWl+iB,EAASm+iB,UAAY,MAGvCkY,EAAmBlb,EAAawC,aAAajojB,MACjD,kBAAmC,aAAnC,EAAG8ojB,UAAH,OAGA6X,EAAiBjkjB,YAAc+oiB,EAAa/oiB,YAC5CikjB,EAAiBnY,SAAW/C,EAAa+C,UAjCtC,UAoCC/C,EAAasX,yBAAyBzyjB,GApCvC,mEAuDS,SAAAs2jB,GAAYrb,EAAYsb,GACtC,OAAOC,IACLh6iB,EAAAA,EAAAA,IAAmBy+hB,GACnBsb,EACA,KAEH,CAee,SAAAE,GAAexb,EAAYoa,GACzC,OAAOmB,IACLh6iB,EAAAA,EAAAA,IAAmBy+hB,GACnB,KACAoa,EAEH,UAEcmB,GAAsB,EAAtBA,EAAAA,mFAAf,WACEvb,EACAzthB,EACAC,GAHF,yFAKU4phB,EAAS4D,EAAT5D,KALV,SAMwB4D,EAAKG,aAN7B,cAMQgC,EANR,OAOQ78iB,EAAsC,CAC1C68iB,QAAAA,EACA2Q,mBAAmB,GAGjBvgiB,IACFjtB,EAAQitB,MAAQA,GAGdC,IACFltB,EAAQktB,SAAWA,GAjBvB,SAoByByuhB,GACrBjB,EACAyb,GAAuBrf,EAAM92iB,IAtBjC,cAoBQP,EApBR,iBAwBQi7iB,EAAKwX,yBAAyBzyjB,GAAuB,GAxB7D,uEC3CM22jB,IAAAA,EAAAA,EAAAA,IACJ,WACWC,EACApY,GACqC,IAArCqY,EAAqC,uDAAF,CAAC,GAAC,eAFrC,KAASD,UAATA,EACA,KAAUpY,WAAVA,EACA,KAAOqY,QAAPA,CACP,IAGAC,GAAAA,SAAAA,iCACJ,WACEF,EACApY,EACAqY,EACSv/d,GAAuB,6BAEhC,cAAMs/d,EAAWpY,EAAYqY,IAFZv/d,SAARA,EAAuB,CAGjC,kBARGw/d,CAAgDH,IAWhDI,GAAAA,SAAAA,iCACJ,WAAYH,EAAoBC,GAAgC,kCACxDD,EAAgC,eAAAC,EACvC,kBAHGE,CAAmCJ,IAMnCK,GAAAA,SAAAA,iCACJ,WAAYJ,EAAoBC,GAAgC,kCAE5DD,EAEA,aAAAC,EAC0B,kBAAZ,OAAPA,QAAO,IAAPA,OAAO,EAAPA,EAASI,OAA4B,OAAPJ,QAAA,IAAAA,OAAA,EAAAA,EAASI,MAAQ,KAEzD,kBARGD,CAAiCF,IAWjCI,GAAAA,SAAAA,iCACJ,WAAYN,EAAoBC,GAAgC,kCACxDD,EAA8B,aAAAC,EACrC,kBAHGK,CAAiCP,IAMjCQ,GAAAA,SAAAA,iCACJ,WACEP,EACAC,EACAO,GAAyB,kCAEnBR,EAAS,cAAsBC,EAASO,EAC/C,kBAPGD,CAAkCL,IAiBlC,SAAUO,GACdlG,GAEA,IAAQlW,EAAyBkW,EAAzBlW,KAAMT,EAAmB2W,EAAnB3W,eACd,OAAIS,EAAK3ugB,cAAgBkugB,EAGhB,CACLgE,WAAY,KACZoY,WAAW,EACXC,QAAS,MAxHT,SACJ9V,WAEA,IAAKA,EACH,OAAO,KAET,IAAQvC,EAAeuC,EAAfvC,WACFqY,EAAU9V,EAAgBuW,YAC5B93jB,KAAK6G,MAAM06iB,EAAgBuW,aAC3B,CAAC,EACCV,EACJ7V,EAAgB6V,WACI,0CAApB7V,EAAgBwW,KAClB,IAAK/Y,IAA6B,OAAfuC,QAAe,IAAfA,OAAe,EAAfA,EAAiB3D,SAAS,CAC3C,IAAMzB,EACJ,QADqB,EAAsC,QAAtC,EAAAL,GAAYyF,EAAgB3D,gBAAUhpjB,IAAAA,OAAA,EAAAA,EAAAA,gBAC3DC,IAAAA,OAAA,EAAAA,EAAAA,iBAEF,GAAIsnjB,EAOF,OAAO,IAAIgb,GAA0BC,EALI,cAAvCjb,GACoC,WAApCA,EACKA,EACD,KAIT,CACD,IAAK6C,EACH,OAAO,KAET,OAAQA,GACN,IAAK,eACH,OAAO,IAAIuY,GAA2BH,EAAWC,GACnD,IAAK,aACH,OAAO,IAAIG,GAAyBJ,EAAWC,GACjD,IAAK,aACH,OAAO,IAAIK,GAAyBN,EAAWC,GACjD,IAAK,cACH,OAAO,IAAIM,GACTP,EACAC,EACA9V,EAAgBqW,YAAc,MAElC,IAAuB,SACvB,IAAK,YACH,OAAO,IAAIT,GAA0BC,EAAW,MAClD,QACE,OAAO,IAAID,GAA0BC,EAAWpY,EAAYqY,GAEjE,CA2EQvE,CAAqB9X,EAC9B,CC3FgB,SAAA2O,GACd9R,EACAoK,GAEA,OAAOjliB,EAAAA,EAAAA,IAAmB66hB,GAAM8R,eAAe1H,EAChD,CAgFK,SAAU+V,GACdngB,EACA/7hB,EACAviB,EACAsoC,GAEA,OAAO7kB,EAAAA,EAAAA,IAAmB66hB,GAAMmgB,iBAC9Bl8iB,EACAviB,EACAsoC,EAEH,UAWeo2hB,GACdpgB,EACApgjB,EACAgtjB,GAEA,OAAOzniB,EAAAA,EAAAA,IAAmB66hB,GAAMogB,uBAAuBxgkB,EAAUgtjB,EAClE,UAsJqByT,GAAW,mFAA1B,WAA0Bzc,GAA1B,gGACEz+hB,EAAAA,EAAAA,IAAmBy+hB,GAAM17iB,UAD3B,kEChQS,SAAAo4jB,GACdtgB,EACA92iB,GAEA,OAAOy4iB,EAIL3B,EAGA,0CAAAyB,EAAmBzB,EAAM92iB,GAE5B,CAwEe,SAAAq3jB,GACdvgB,EACA92iB,GAEA,OAAOy4iB,EAIL3B,EAGA,6CAAAyB,EAAmBzB,EAAM92iB,GAE5B,CC/D4B,IAAI0H,QCvE1B,IAAM4vjB,GAAwB,QCLfC,GAAAA,WACpB,WACqBC,EACVh5jB,IAAqB,eADX,KAAgBg5jB,iBAAhBA,EACV,KAAIh5jB,KAAJA,CACP,4CAEJ,WACE,IACE,OAAKrF,KAAK0njB,SAGV1njB,KAAK0njB,QAAQ4W,QAAQH,GAAuB,KAC5Cn+jB,KAAK0njB,QAAQ6W,WAAWJ,IACjBx/jB,QAAQC,SAAQ,IAJdD,QAAQC,SAAQ,EAO1B,CAFC,MAAMlE,GACN,OAAOiE,QAAQC,SAAQ,EACxB,CACF,qBAED,SAAK0D,EAAapE,GAEhB,OADA8B,KAAK0njB,QAAQ4W,QAAQh8jB,EAAKwD,KAAKC,UAAU7H,IAClCS,QAAQC,SAChB,qBAED,SAAiC0D,GAC/B,IAAMoE,EAAO1G,KAAK0njB,QAAQnwe,QAAQj1E,GAClC,OAAO3D,QAAQC,QAAQ8H,EAAOZ,KAAK6G,MAAMjG,GAAQ,KAClD,wBAED,SAAQpE,GAEN,OADAtC,KAAK0njB,QAAQ6W,WAAWj8jB,GACjB3D,QAAQC,SAChB,sBAED,WACE,OAAOoB,KAAKq+jB,kBACb,OApCmBD,GCcf,IAKDI,GAAAA,SAAAA,iCAMJ,0CACE,eAAM,kBAAMvkkB,OAAOwkkB,YAAb,GAAyB,UAGhBtW,kBAAoB,SACnCpnjB,EACA29jB,GAFmC,OAG1B,EAAKC,eAAe59jB,EAAO29jB,EAHD,EAIpB,EAASz+jB,UAA8C,CAAC,EACxD,EAAU2+jB,WAAkC,CAAC,EAGtD,EAASC,UAAe,KAGf,EAAAC,4BAhCnB,WACE,IAAM5gjB,GAAKV,EAAAA,EAAAA,MACX,OAAOksiB,GAAUxriB,IAAO2riB,GAAO3riB,EAChC,CA8BG6gjB,elD2FF,IAGE,SAAU9kkB,QAAUA,SAAWA,OAAOwqC,IAGvC,CAFC,MAAOx7B,GACP,OAAO,CACR,CACH,CkDlGqC+1jB,GAElB,EAAiBC,kBAAGjV,KAC5B,EAAqBZ,uBAAG,EAnBjC,CAEC,iDAmBO,SACNzsD,GAGA,IAAK,IAAL,MAAkB3+f,OAAOgB,KAAKgB,KAAKC,WAAnC,eAA+C,CAA1C,IAAMqC,EAAG,KAENumC,EAAW7oC,KAAK0njB,QAAQnwe,QAAQj1E,GAChCs4J,EAAW56J,KAAK4+jB,WAAWt8jB,GAG7BumC,IAAa+xH,GACf+hW,EAAGr6f,EAAKs4J,EAAU/xH,EAErB,CACF,+BAEO,SAAe9nC,GAAiC,WAAZ29jB,EAAY,wDAEtD,GAAK39jB,EAAMuB,IAAX,CASA,IAAMA,EAAMvB,EAAMuB,IAgBlB,GAZIo8jB,EAGF1+jB,KAAKk/jB,iBAILl/jB,KAAKm/jB,cAKHn/jB,KAAK8+jB,4BAA6B,CAEpC,IAAMM,EAAcp/jB,KAAK0njB,QAAQnwe,QAAQj1E,GAEzC,GAAIvB,EAAM8nC,WAAau2hB,EACE,OAAnBr+jB,EAAM8nC,SAER7oC,KAAK0njB,QAAQ4W,QAAQh8jB,EAAKvB,EAAM8nC,UAGhC7oC,KAAK0njB,QAAQ6W,WAAWj8jB,QAErB,GAAItC,KAAK4+jB,WAAWt8jB,KAASvB,EAAM8nC,WAAa61hB,EAErD,MAEH,CAED,IAAMW,EAAmB,WAGvB,IAAMD,EAAc,EAAK1X,QAAQnwe,QAAQj1E,IACpCo8jB,GAAQ,EAAKE,WAAWt8jB,KAAS88jB,IAKtC,EAAKp+jB,gBAAgBsB,EAAK88jB,EAC3B,EAEKA,EAAcp/jB,KAAK0njB,QAAQnwe,QAAQj1E,GAEvCynjB,MACAqV,IAAgBr+jB,EAAM8nC,UACtB9nC,EAAM8nC,WAAa9nC,EAAM65J,SAMzBrlI,WAAW8piB,EAhHqB,IAkHhCA,GA5DD,MANCr/jB,KAAKs/jB,mBACH,SAACh9jB,EAAai9jB,EAA0B12hB,GACtC,EAAK7nC,gBAAgBsB,EAAKumC,EAC3B,GAiEN,gCAEO,SAAgBvmC,EAAapE,GACnC8B,KAAK4+jB,WAAWt8jB,GAAOpE,EACvB,IAAM+B,EAAYD,KAAKC,UAAUqC,GACjC,GAAIrC,EACF,IAAK,IAAL,MAAuB4E,MAAM2E,KAAKvJ,GAAlC,eAA8C,EAC5CO,EADiB,MACRtC,EAAQ4H,KAAK6G,MAAMzO,GAASA,EACtC,CAEJ,6BAEO,WAAY,WAClB8B,KAAKm/jB,cAELn/jB,KAAK6+jB,UAAYjjY,aAAY,WAC3B,EAAK0jY,mBACH,SAACh9jB,EAAas4J,EAAyB/xH,GACrC,EAAK81hB,eACH,IAAIa,aAAa,UAAW,CAC1Bl9jB,IAAAA,EACAs4J,SAAAA,EACA/xH,SAAAA,KAES,EAEd,GAEJ,GAnJ+B,IAoJjC,4BAEO,WACF7oC,KAAK6+jB,YACPnjY,cAAc17L,KAAK6+jB,WACnB7+jB,KAAK6+jB,UAAY,KAEpB,+BAEO,WACN5kkB,OAAOsH,iBAAiB,UAAWvB,KAAKmojB,kBACzC,+BAEO,WACNlujB,OAAOuH,oBAAoB,UAAWxB,KAAKmojB,kBAC5C,6BAED,SAAa7ljB,EAAa9B,GACmB,IAAvCxC,OAAOgB,KAAKgB,KAAKC,WAAWU,SAK1BX,KAAKi/jB,kBACPj/jB,KAAKy/jB,eAELz/jB,KAAK0/jB,kBAGJ1/jB,KAAKC,UAAUqC,KAClBtC,KAAKC,UAAUqC,GAAO,IAAIvD,IAE1BiB,KAAK4+jB,WAAWt8jB,GAAOtC,KAAK0njB,QAAQnwe,QAAQj1E,IAE9CtC,KAAKC,UAAUqC,GAAKyrC,IAAIvtC,EACzB,gCAED,SAAgB8B,EAAa9B,GACvBR,KAAKC,UAAUqC,KACjBtC,KAAKC,UAAUqC,GAAKuD,OAAOrF,GAEM,IAA7BR,KAAKC,UAAUqC,GAAKuL,aACf7N,KAAKC,UAAUqC,IAIiB,IAAvCtE,OAAOgB,KAAKgB,KAAKC,WAAWU,SAC9BX,KAAKk/jB,iBACLl/jB,KAAKm/jB,cAER,8DAID,WAAW78jB,EAAapE,GAAxB,0IACmBoE,EAAKpE,GADxB,OAEE8B,KAAK4+jB,WAAWt8jB,GAAOwD,KAAKC,UAAU7H,GAFxC,oKAKA,WAAuCoE,GAAvC,gJACoCA,GADpC,cACQpE,EADR,OAEE8B,KAAK4+jB,WAAWt8jB,GAAOwD,KAAKC,UAAU7H,GAFxC,kBAGSA,GAHT,qKAMA,WAAcoE,GAAd,6IACsBA,GADtB,cAEStC,KAAK4+jB,WAAWt8jB,GAFzB,2GAhNIk8jB,CACIJ,IAGDI,GAAI,KAAY,QAwNlB,IAAMmB,GAAuCnB,GChP9CoB,GAAAA,SAAAA,iCAMJ,gDACQ,kBAAM3lkB,OAAOo9E,cAAb,GAA2B,UAClC,4CAED,SAAahiE,EAAcsyiB,GAG1B,gCAED,SAAgBtyiB,EAAcsyiB,GAG7B,OAlBGiY,CACIxB,IAGDwB,GAAI,KAAc,UAuBpB,IAAMC,GAAyCD,GCfhD,SAAUE,GACdzia,GAEA,OAAO1+J,QAAQ0nI,IACbg3B,EAASt5J,IAAT,yCAAa,WAAMuZ,GAAN,qGAEWA,EAFX,cAEHpf,EAFG,yBAGF,CACL6hkB,WAAW,EACX7hkB,MAAAA,IALO,yDAQF,CACL6hkB,WAAW,EACXvtiB,OAAM,OAVC,yDAAb,uDAeJ,KC1BawtiB,GAAAA,WAUX,WAA6B7sY,IAAwB,eAAxB,KAAWA,YAAXA,EANZ,KAAW8sY,YAIxB,CAAC,EAGHjgkB,KAAKmojB,kBAAoBnojB,KAAKkgkB,YAAYpjkB,KAAKkD,KAChD,6CAuBO,SAAcmzL,GACpB,OAAOnzL,KAAKmzL,cAAgBA,CAC7B,qEAYO,WAGNpyL,GAHM,gGAIAo/jB,EAAep/jB,GAC6BzG,KAA1C8lkB,EALF,EAKEA,QAASC,EALX,EAKWA,UAAW/lkB,EALtB,EAKsBA,KAIvB,QAFCmlC,EACJz/B,KAAKigkB,YAAYI,UACN,IAAR5giB,OAAQ,EAARA,EAAU5xB,KATT,wDAaNsyjB,EAAaG,MAAM,GAAG35B,YAAY,CAChC//hB,OAAmB,MACnBw5jB,QAAAA,EACAC,UAAAA,IAGIhja,EAAWx4J,MAAM2E,KAAKi2B,GAAU17B,IAArB,yCAAyB,WAAMjD,GAAN,+FACxCA,EAAQq/jB,EAAaI,OAAQjmkB,IADW,2CAAzB,uDAnBX,SAsBiBwlkB,GAAYzia,GAtB7B,OAsBA/2J,EAtBA,OAuBN65jB,EAAaG,MAAM,GAAG35B,YAAY,CAChC//hB,OAAoB,OACpBw5jB,QAAAA,EACAC,UAAAA,EACA/5jB,SAAAA,IA3BI,gIAsCR,SACE+5jB,EACAptf,GAE6C,IAAzCj1E,OAAOgB,KAAKgB,KAAKigkB,aAAat/jB,QAChCX,KAAKmzL,YAAY5xL,iBAAiB,UAAWvB,KAAKmojB,mBAG/CnojB,KAAKigkB,YAAYI,KACpBrgkB,KAAKigkB,YAAYI,GAAa,IAAIthkB,KAGpCiB,KAAKigkB,YAAYI,GAAWtyhB,IAAIklC,EACjC,6BASD,SACEotf,EACAptf,GAEIjzE,KAAKigkB,YAAYI,IAAcptf,GACjCjzE,KAAKigkB,YAAYI,GAAWx6jB,OAAOotE,GAEhCA,GAAqD,IAArCjzE,KAAKigkB,YAAYI,GAAWxyjB,aACxC7N,KAAKigkB,YAAYI,GAGmB,IAAzCrikB,OAAOgB,KAAKgB,KAAKigkB,aAAat/jB,QAChCX,KAAKmzL,YAAY3xL,oBAAoB,UAAWxB,KAAKmojB,kBAExD,+BAvGD,SAAoBh1X,GAIlB,IAAM+nX,EAAmBl7iB,KAAKwgkB,UAAUxkkB,MAAK,SAAAkxiB,GAAQ,OACnDA,EAASuzB,cAActtY,EAD4B,IAGrD,GAAI+nX,EACF,OAAOA,EAET,IAAMwlB,EAAc,IAAIV,EAAS7sY,GAEjC,OADAnzL,KAAKwgkB,UAAUpgkB,KAAKsgkB,GACbA,CACR,OAjCUV,GCdP,SAAUW,KAEd,IAFuD,IAAxB/xjB,EAAwB,uDAAf,GAAImuG,EAAW,uDAAF,GACjDn6F,EAAS,GACJja,EAAI,EAAGA,EAAIo0G,EAAQp0G,IAC1Bia,GAAUrZ,KAAKo/D,MAAsB,GAAhBp/D,KAAKqZ,UAE5B,OAAOhU,EAASgU,CAClB,CDS0Bo9iB,GAAS,UAAe,OEOrCY,GAAAA,WAGX,WAA6BjpjB,IAAqB,eAArB,KAAMA,OAANA,EAFZ,KAAA8nB,SAAW,IAAI1gC,GAEsB,oDAO9C,SAAqB+B,GACvBA,EAAQ+/jB,iBACV//jB,EAAQ+/jB,eAAep6B,MAAMjliB,oBAC3B,UACAV,EAAQggkB,WAEVhgkB,EAAQ+/jB,eAAep6B,MAAM/nhB,SAE/B1e,KAAKy/B,SAAS55B,OAAO/E,EACtB,+DAeD,WACEu/jB,EACA/lkB,GAFF,wGAGEysC,EAHF,+BAGgC,GAExB85hB,EACsB,qBAAnBt6B,eAAiC,IAAIA,eAAmB,KANnE,sBAQU,IAAIhsiB,MAAK,0BARnB,gCAgBS,IAAIoE,SAAqC,SAACC,EAASY,GACxD,IAAM4gkB,EAAUO,GAAiB,GAAI,IACrCE,EAAep6B,MAAMlqgB,QACrB,IAAMwkiB,EAAWxriB,YAAW,WAC1B/1B,EAAO,IAAIjF,MAAK,qBACjB,GAAEwsC,GACHjmC,EAAU,CACR+/jB,eAAAA,EACAC,UAFQ,SAEE//jB,GACR,IAAMo/jB,EAAep/jB,EACrB,GAAIo/jB,EAAa7lkB,KAAK8lkB,UAAYA,EAGlC,OAAQD,EAAa7lkB,KAAKsM,QACxB,IAAK,MAEH0uB,aAAayriB,GACbC,EAAkBzriB,YAAW,WAC3B/1B,EAAO,IAAIjF,MAAK,WACjB,QACD,MACF,IAAK,OAEH+6B,aAAa0riB,GACbpikB,EAAQuhkB,EAAa7lkB,KAAKgM,UAC1B,MACF,QACEgvB,aAAayriB,GACbzriB,aAAa0riB,GACbxhkB,EAAO,IAAIjF,MAAK,qBAGrB,GAEH,EAAKklC,SAASsO,IAAIjtC,GAClB+/jB,EAAep6B,MAAMlliB,iBAAiB,UAAWT,EAAQggkB,WACzD,EAAKnpjB,OAAOgvhB,YACV,CACE05B,UAAAA,EACAD,QAAAA,EACA9lkB,KAAAA,GAEF,CAACumkB,EAAer6B,OAEnB,IAAEy6B,SAAQ,WACLngkB,GACF,EAAKogkB,qBAAqBpgkB,EAE7B,KAhEH,wGAlCW8/jB,YCIGhrf,KACd,OAAO37E,MACR,CAEK,SAAUknkB,GAAmBt+jB,GACjC+yE,KAAUjjD,SAASkpE,KAAOh5F,CAC5B,UC9BgBu+jB,KACd,MAC4C,qBAAnCxrf,KAAO,mBACwB,oBAA/BA,KAAO,aAEjB,UAEqByrf,qFAAf,4FACA,OAAA5jjB,gBAAS,IAATA,eAAS,EAATA,UAAW6jjB,cADX,yCAEI,MAFJ,gCAKwB7jjB,UAAU6jjB,cAAcnuf,MALhD,cAKGouf,EALH,yBAMIA,EAAaz7iB,QANjB,yDAQI,MARJ,yFAYS07iB,WACd,OAA+B,QAAxB,EAAS,OAAT/jjB,gBAAS,IAATA,eAAS,EAATA,UAAW6jjB,qBAAa5mkB,IAAAA,OAAA,EAAAA,EAAE+mkB,aAAc,IAChD,CCGM,IAAMC,GAAU,yBAEjBC,GAAsB,uBACtBC,GAAkB,YAalBC,GAAAA,WACJ,WAA6Bh7jB,IAAmB,eAAnB,KAAOA,QAAPA,CAAuB,yCAEpD,WAAS,WACP,OAAO,IAAIlI,SAAW,SAACC,EAASY,GAC9B,EAAKqH,QAAQtF,iBAAiB,WAAW,WACvC3C,EAAQ,EAAKiI,QAAQrD,OACtB,IACD,EAAKqD,QAAQtF,iBAAiB,SAAS,WACrC/B,EAAO,EAAKqH,QAAQxH,MACrB,GACF,GACF,OAZGwikB,GAeN,SAASC,GAAellE,EAAiBmlE,GACvC,OAAOnlE,EACJg2C,YAAY,CAAC+uB,IAAsBI,EAAc,YAAc,YAC/DtvB,YAAYkvB,GAChB,UAOeK,KACd,IAAMn7jB,EAAUuX,UAAUO,eAAe+ijB,IACzC,OAAO,IAAIG,GAAgBh7jB,GAASo7jB,WACrC,UAEeC,KACd,IAAMr7jB,EAAUuX,UAAUI,KAAKkjjB,GA/Cd,GAgDjB,OAAO,IAAI/ikB,SAAQ,SAACC,EAASY,GAC3BqH,EAAQtF,iBAAiB,SAAS,WAChC/B,EAAOqH,EAAQxH,MAChB,IAEDwH,EAAQtF,iBAAiB,iBAAiB,WACxC,IAAMq7f,EAAK/1f,EAAQrD,OAEnB,IACEo5f,EAAG46C,kBAAkBmqB,GAAqB,CAAEQ,QAASP,IAGtD,CAFC,MAAO34jB,GACPzJ,EAAOyJ,EACR,CACF,IAEDpC,EAAQtF,iBAAiB,WAAzB,uBAAoC,6FAC5Bq7f,EAAkB/1f,EAAQrD,QAMxBgviB,iBAAiBvye,SAAS0hgB,IAPA,wBAShC/kE,EAAGl+e,QAT6B,SAU1BsjjB,KAV0B,mBAWhCpjkB,EAXgC,SAWlBsjkB,KAXkB,0DAahCtjkB,EAAQg+f,GAbwB,4CAgBrC,GACF,UAEqBwlE,GAAW,EAAXA,EAAAA,mFAAf,WACLxlE,EACAt6f,EACApE,GAHK,qFAKC2I,EAAUi7jB,GAAellE,GAAI,GAAMm7C,KAAzB,eACb6pB,GAAkBt/jB,IADL,iBAEdpE,GAFc,IALX,kBASE,IAAI2jkB,GAAgBh7jB,GAASo7jB,aAT/B,2EAYQI,GAAU,EAAVA,mFAAf,WACEzlE,EACAt6f,GAFF,qFAIQuE,EAAUi7jB,GAAellE,GAAI,GAAOhjgB,IAAI0I,GAJhD,SAKqB,IAAIu/jB,GAAgCh7jB,GAASo7jB,YALlE,cAKQ3nkB,EALR,8BAMkBqN,IAATrN,EAAqB,KAAOA,EAAK4D,OAN1C,kEASgB,SAAAokkB,GAAc1lE,EAAiBt6f,GAC7C,IAAMuE,EAAUi7jB,GAAellE,GAAI,GAAM/2f,OAAOvD,GAChD,OAAO,IAAIu/jB,GAAgBh7jB,GAASo7jB,WACrC,CAEM,IAGDM,GAAAA,WAqBJ,6BAlBA,KAAAl9jB,KAA6B,QAEpB,KAAqB+jjB,uBAAG,EAEhB,KAASnpjB,UAA8C,CAAC,EACxD,KAAU2+jB,WAA4C,CAAC,EAGhE,KAASC,UAAe,KACxB,KAAa2D,cAAG,EAEhB,KAAQt1B,SAAoB,KAC5B,KAAMu1B,OAAkB,KACxB,KAA8BC,gCAAG,EACjC,KAAmBC,oBAAyB,KAMlD3ikB,KAAK4ikB,6BACH5ikB,KAAK6ikB,mCAAmC/kkB,MACtC,WAAQ,IACR,WAAQ,GAEb,gFAED,uFACMkC,KAAK48f,GADX,yCAEW58f,KAAK48f,IAFhB,uBAIkBslE,KAJlB,cAIElikB,KAAK48f,GAJP,yBAKS58f,KAAK48f,IALd,yKAQA,WAAsBxpa,GAAtB,8EACM0ve,EAAc,EADpB,gCAKuB9ikB,KAAK+ikB,UAL5B,cAKYnmE,EALZ,gBAMmBxpa,EAAGwpa,GANtB,+EAQUkmE,IAhD4B,GAwCtC,oCAWU9ikB,KAAK48f,KACP58f,KAAK48f,GAAGl+e,QACR1e,KAAK48f,QAAKj1f,GAblB,+NAwBQ,4GACCy5jB,KAAcphkB,KAAKgjkB,qBAAuBhjkB,KAAKijkB,oBADhD,+KAOA,8FACNjjkB,KAAKktiB,SAAW8yB,GAASzY,aDtLpB6Z,KAAepnkB,KAAoC,MCwLxDgG,KAAKktiB,SAASg2B,WAAU,aAAxB,yCAEE,WAAOC,EAAiB7okB,GAAxB,4FACqB,EAAK8okB,QAD1B,cACQpkkB,EADR,yBAES,CACLqkkB,aAAcrkkB,EAAKuG,SAASjL,EAAKgI,OAHrC,2CAFF,oCAAAtC,KAAA,gBAUAA,KAAKktiB,SAASg2B,WAAU,OAAxB,yCAEE,WAAOC,EAAiBzie,GAAxB,+FACS,CAAC,eADV,2CAFF,oCAAA1gG,KAAA,gBAbM,6KA4BA,6GAE2BqhkB,KAF3B,UAENrhkB,KAAK2ikB,oBAFC,OAGD3ikB,KAAK2ikB,oBAHJ,wDAMN3ikB,KAAKyikB,OAAS,IAAI7B,GAAO5gkB,KAAK2ikB,qBANxB,SAQgB3ikB,KAAKyikB,OAAOa,MAAK,OAErC,CAAC,EAAC,KAVE,UAQAC,EARA,2DAiBM,QAAV,EAAAA,EAAQ,UAAE7okB,IAAAA,OAAA,EAAAA,EAAEqlkB,aACF,QAAV,EAAAwD,EAAQ,UAAE5okB,IAAAA,OAAA,EAAAA,EAAEuD,MAAMqH,SAAgC,iBAElDvF,KAAK0ikB,gCAAiC,GApBlC,iLAiCA,WAA0BpgkB,GAA1B,yEAEHtC,KAAKyikB,QACLzikB,KAAK2ikB,qBACNnB,OAAkCxhkB,KAAK2ikB,oBAJnC,0EASE3ikB,KAAKyikB,OAAOa,MAEhB,cAAEhhkB,IAAAA,GAEFtC,KAAK0ikB,+BACF,IACA,IAfD,wOAsBR,qGAEStkjB,UAFT,0CAGa,GAHb,uBAKqB8jjB,KALrB,cAKUtlE,EALV,gBAMUwlE,GAAWxlE,EAAIuhE,GAAuB,KANhD,wBAOUmE,GAAc1lE,EAAIuhE,IAP5B,kCAQW,GARX,oEAUS,GAVT,wLAaQ,WAAwBqF,GAAxB,6EACNxjkB,KAAKwikB,gBADC,kBAGEgB,IAHF,uBAKJxjkB,KAAKwikB,gBALD,yLASR,WAAWlgkB,EAAapE,GAAxB,0GACS8B,KAAKyjkB,mBAAL,uBAAuB,mGACtB,EAAKC,cAAa,SAAC9mE,GAAD,OAAqBwlE,GAAWxlE,EAAIt6f,EAAKpE,EAAzC,IADI,cAE5B,EAAK0gkB,WAAWt8jB,GAAOpE,EAFK,kBAGrB,EAAKylkB,oBAAoBrhkB,IAHJ,6CADhC,oKAQA,WAAuCA,GAAvC,4FACqBtC,KAAK0jkB,cAAa,SAAC9mE,GAAD,OACnCylE,GAAUzlE,EAAIt6f,EADqB,IADvC,cACQ6S,EADR,OAIEnV,KAAK4+jB,WAAWt8jB,GAAO6S,EAJzB,kBAKSA,GALT,qKAQA,WAAc7S,GAAd,0GACStC,KAAKyjkB,mBAAL,uBAAuB,mGACtB,EAAKC,cAAa,SAAC9mE,GAAD,OAAqB0lE,GAAc1lE,EAAIt6f,EAAvC,IADI,qBAErB,EAAKs8jB,WAAWt8jB,GAFK,kBAGrB,EAAKqhkB,oBAAoBrhkB,IAHJ,6CADhC,mKAQQ,6HAEetC,KAAK0jkB,cAAa,SAAC9mE,GACtC,IAAMgnE,EAAgB9B,GAAellE,GAAI,GAAO84B,SAChD,OAAO,IAAImsC,GAA6B+B,GAAe3B,WACxD,IALK,UAEAz+jB,EAFA,gDAQG,IARH,UAYqB,IAAvBxD,KAAKwikB,cAZH,yCAaG,IAbH,OAgBAxjkB,EAAO,GACP6kkB,EAAe,IAAI9kkB,IAjBnB,UAkBkCyE,GAlBlC,IAkBN,IAAK,EAAL,qBAAgD,UAAxBlB,EAAwB,EAAnCwhkB,UAAgB5lkB,EAAmB,EAAnBA,MAC3B2lkB,EAAa91hB,IAAIzrC,GACbwD,KAAKC,UAAU/F,KAAK4+jB,WAAWt8jB,MAAUwD,KAAKC,UAAU7H,KAC1D8B,KAAKgB,gBAAgBsB,EAAKpE,GAC1Bc,EAAKoB,KAAKkC,GAtBR,+BAyBN,IAAK,EAAL,IAAuBtE,OAAOgB,KAAKgB,KAAK4+jB,YAAxC,eAAWmF,EAA0C,KAC/C/jkB,KAAK4+jB,WAAWmF,KAAcF,EAAalqkB,IAAIoqkB,KAEjD/jkB,KAAKgB,gBAAgB+ikB,EAAU,MAC/B/kkB,EAAKoB,KAAK2jkB,IA7BR,yBAgCC/kkB,GAhCD,oIAmCA,SACNsD,EACAumC,GAEA7oC,KAAK4+jB,WAAWt8jB,GAAOumC,EACvB,IAAM5oC,EAAYD,KAAKC,UAAUqC,GACjC,GAAIrC,EACF,IAAK,IAAL,MAAuB4E,MAAM2E,KAAKvJ,GAAlC,eAA8C,EAC5CO,EADiB,MACRqoC,EACV,CAEJ,6BAEO,WAAY,WAClB7oC,KAAKm/jB,cAELn/jB,KAAK6+jB,UAAYjjY,aAAW,uBAC1B,4GAAY,EAAKwnY,SAAjB,2CA7P8B,IAgQjC,4BAEO,WACFpjkB,KAAK6+jB,YACPnjY,cAAc17L,KAAK6+jB,WACnB7+jB,KAAK6+jB,UAAY,KAEpB,6BAED,SAAav8jB,EAAa9B,GACmB,IAAvCxC,OAAOgB,KAAKgB,KAAKC,WAAWU,QAC9BX,KAAKy/jB,eAEFz/jB,KAAKC,UAAUqC,KAClBtC,KAAKC,UAAUqC,GAAO,IAAIvD,IAErBiB,KAAKitiB,KAAK3qiB,IAEjBtC,KAAKC,UAAUqC,GAAKyrC,IAAIvtC,EACzB,gCAED,SAAgB8B,EAAa9B,GACvBR,KAAKC,UAAUqC,KACjBtC,KAAKC,UAAUqC,GAAKuD,OAAOrF,GAEM,IAA7BR,KAAKC,UAAUqC,GAAKuL,aACf7N,KAAKC,UAAUqC,IAIiB,IAAvCtE,OAAOgB,KAAKgB,KAAKC,WAAWU,QAC9BX,KAAKm/jB,aAER,OA9RGoD,GACGA,GAAI,KAAY,QAsSlB,IAAMyB,GAAyCzB,GCtYtC,SAAA0B,GACdtmB,EACA92iB,GAEA,OAAOy4iB,EAIL3B,EAGA,sCAAAyB,EAAmBzB,EAAM92iB,GAE5B,CAqCe,SAAAq9jB,GACdvmB,EACA92iB,GAEA,OAAOy4iB,EAIL3B,EAGA,yCAAAyB,EAAmBzB,EAAM92iB,GAE7B,CC/FO,IAEMs9jB,GAAmB,KAQnBC,GAAAA,WAIX,WAA6BzmB,IAAkB,eAAlB,KAAIA,KAAJA,EAHrB,KAAOr7d,QAAG6hf,GAClB,KAAAE,SAAW,IAAInrkB,GAEoC,sCAEnD,SACEqO,EACA00F,GAEA,IAAMl+E,EAAK/d,KAAKsiF,QAMhB,OALAtiF,KAAKqkkB,SAASlrkB,IACZ4kB,EACA,IAAIumjB,GAAW/8jB,EAAWvH,KAAK29iB,KAAKvkjB,KAAM6iG,GAAc,CAAC,IAE3Dj8F,KAAKsiF,UACEvkE,CACR,sBAED,SAAMwmjB,SACExmjB,EAAKwmjB,GAAeJ,GACA,QAArB,EAAAnkkB,KAAKqkkB,SAASzqkB,IAAImkB,UAAGrjB,IAAAA,GAAAA,EAAEmL,SAC5B7F,KAAKqkkB,SAASx+jB,OAAOkY,EACtB,4BAED,SAAYwmjB,SACJxmjB,EAAKwmjB,GAAeJ,GAC1B,OAA8B,QAAvB,EAAAnkkB,KAAKqkkB,SAASzqkB,IAAImkB,UAAKrjB,IAAAA,OAAA,EAAAA,EAAAA,gBAAiB,EAChD,iEAED,WAAc6pkB,GAAd,qFACQxmjB,EAAcwmjB,GAA0BJ,GACpB,QAArB,EAAAnkkB,KAAKqkkB,SAASzqkB,IAAImkB,UAAGrjB,IAAAA,GAAAA,EAAE+mJ,UAF9B,kBAGS,IAHT,2GA9BW2ib,GAgFAE,GAAAA,WAUX,WACEE,EACA3vB,EACiBvwiB,GAA2B,2BAA3B,KAAMA,OAANA,EAVX,KAAOoqD,QAAkB,KACzB,KAAO+1gB,SAAG,EACV,KAAaC,cAAkB,KACtB,KAAY/yY,aAAG,WAC9B,EAAKlwC,SACN,EAOC,IAAMl6I,EACqB,kBAAlBi9jB,EACHtikB,SAASyikB,eAAeH,GACxBA,EACNxmB,EAAQz2iB,EAAS,iBAAgC,CAAEstiB,QAAAA,IAEnD70iB,KAAKuH,UAAYA,EACjBvH,KAAKuvE,UAAiC,cAArBvvE,KAAKsE,OAAOuJ,KACzB7N,KAAKuvE,UACPvvE,KAAKyhJ,UAELzhJ,KAAKuH,UAAUhG,iBAAiB,QAASvB,KAAK2xL,aAEjD,2CAED,WAEE,OADA3xL,KAAK4kkB,iBACE5kkB,KAAK0kkB,aACb,uBAED,WACE1kkB,KAAK4kkB,iBACL5kkB,KAAKykkB,SAAU,EACXzkkB,KAAK0uD,UACPp5B,aAAat1B,KAAK0uD,SAClB1uD,KAAK0uD,QAAU,MAEjB1uD,KAAKuH,UAAU/F,oBAAoB,QAASxB,KAAK2xL,aAClD,wBAED,WAAO,WACL3xL,KAAK4kkB,iBACD5kkB,KAAK0uD,UAIT1uD,KAAK0uD,QAAUz0D,OAAOs7B,YAAW,WAC/B,EAAKmviB,cA+BX,SAA0CtzjB,GAIxC,IAHA,IAAM8vP,EAAQ,GACR9T,EACJ,iEACOzkP,EAAI,EAAGA,EAAIyI,EAAKzI,IACvBu4P,EAAM9gQ,KACJgtP,EAAanxO,OAAO1S,KAAKo/D,MAAMp/D,KAAKqZ,SAAWwqO,EAAazsP,UAGhE,OAAOugQ,EAAMz0P,KAAK,GACpB,CAzC2Bo4jB,CAAiC,IACtD,MAA0D,EAAKvgkB,OAAvD/G,EAAR,EAAQA,SAA8BunkB,EAAtC,EAAkB,oBAClB,GAAIvnkB,EACF,IACEA,EAAS,EAAKmnkB,cACF,CAAZ,MAAOz7jB,GAAK,CAGhB,EAAKylD,QAAUz0D,OAAOs7B,YAAW,WAG/B,GAFA,EAAKm5B,QAAU,KACf,EAAKg2gB,cAAgB,KACjBI,EACF,IACEA,GACY,CAAZ,MAAO77jB,GAAK,CAGZ,EAAKsmE,WACP,EAAKkyE,SAER,GAjK4B,IAkK9B,GAnKyB,KAoK3B,+BAEO,WACN,GAAIzhJ,KAAKykkB,QACP,MAAM,IAAIlqkB,MAAM,sCAEnB,OAhFU+pkB,GCxFN,IAAMS,GAAmBC,GAAgC,OAC1DC,GAAwB,IAAIzmB,EAAM,IAAO,KACzC0mB,GAAiB,2CAgBVC,GAAAA,WAAb,mCACU,KAAYC,aAAG,GACf,KAAO9if,QAAG,EAMD,KAAA+if,2BAAgD,QAApB,EAAAzvf,KAAU0me,kBAAU5hjB,IAAAA,OAAA,EAAAA,EAAE4zC,OAqEpE,oCAnEC,SAAKqvgB,GAA2B,WAAPt1B,EAAO,uDAAF,GAG5B,OAFA21B,EAAQsnB,GAAoBj9C,GAAKs1B,EAAI,kBAEjC39iB,KAAKulkB,yBAAyBl9C,IAAOg0B,EAAKzme,KAAU0me,YAC/C39iB,QAAQC,QAAQg3E,KAAU0me,YAE5B,IAAI39iB,SAAmB,SAACC,EAASY,GACtC,IAAMwgjB,EAAiBpqe,KAAUrgD,YAAW,WAC1C/1B,EAAOi+iB,EAAaE,EAAI,0BACzB,GAAEsnB,GAAsBrrkB,OAEzBg8E,KAAUmvf,IAAoB,WAC5Bnvf,KAAUtgD,aAAa0qhB,UAChBpqe,KAAUmvf,IAEjB,IAAMS,EAAY5vf,KAAU0me,WAE5B,GAAKkpB,GAAcnpB,EAAKmpB,GAAxB,CAOA,IAAMl3hB,EAASk3hB,EAAUl3hB,OACzBk3hB,EAAUl3hB,OAAS,SAAC/mC,EAAWjD,GAC7B,IAAMmhkB,EAAWn3hB,EAAO/mC,EAAWjD,GAEnC,OADA,EAAKg+E,UACEmjf,CACR,EAED,EAAKL,aAAe/8C,EACpBzphB,EAAQ4mkB,EAZP,MAFChmkB,EAAOi+iB,EAAaE,EAAI,kBAe3B,EAQD+nB,GANY,GAAH,OAAMR,GAAN,aAAwB3kjB,EAAAA,EAAAA,IAAY,CAC3Cjd,OAAQyhkB,GACRz2hB,OAAQ,WACR+5e,GAAAA,MAGqB9qgB,OAAM,WAC3B+X,aAAa0qhB,GACbxgjB,EAAOi+iB,EAAaE,EAAI,kBACzB,GACF,GACF,mCAED,WACE39iB,KAAKsiF,SACN,yCAEO,SAAyB+lc,SAQ/B,SAC0B,QAAtB,EAAAzyc,KAAU0me,kBAAY5hjB,IAAAA,OAAA,EAAAA,EAAAA,UACvB2thB,IAAOrohB,KAAKolkB,cACXplkB,KAAKsiF,QAAU,GACftiF,KAAKqlkB,wBAEV,OA5EUF,GA+Eb,SAASG,GAAoBj9C,GAC3B,OAAOA,EAAG1nhB,QAAU,GAAK,yBAAyByV,KAAKiygB,EACxD,KAEYs9C,GAAAA,oHACX,WAAWhoB,GAAX,+FACS,IAAIymB,GAAczmB,IAD3B,kIAIA,WAA6B,OALlBgoB,GCjGAC,GAA0B,YAEjCC,GAAsC,CAC1CxtjB,MAAO,QACPhT,KAAM,SAaKygkB,GAAAA,WAuCX,WACEzU,EACAmT,GAGC,IAFgBvoe,EAEhB,uDAFgBj+F,OAAAA,OAAAA,CAAAA,EACZ6nkB,KACJ,eAFgB,KAAU5pe,WAAVA,EAnCV,KAAI52F,KAAGugkB,GACR,KAASG,WAAG,EACZ,KAAQN,SAAkB,KAGjB,KAAAO,qBAAuB,IAAIjnkB,IACpC,KAAaknkB,cAA2B,KAKxC,KAAST,UAAqB,KA4BpCxlkB,KAAK29iB,KAAOkT,GAAUQ,GACtBrxjB,KAAKkmkB,YAAuC,cAAzBlmkB,KAAKi8F,WAAWpuF,KACnCmwiB,EACsB,qBAAb97iB,SACPlC,KAAK29iB,KAAI,+CAGX,IAAMp2iB,EACqB,kBAAlBi9jB,EACHtikB,SAASyikB,eAAeH,GACxBA,EACNxmB,EAAQz2iB,EAAWvH,KAAK29iB,KAAI,kBAE5B39iB,KAAKuH,UAAYA,EACjBvH,KAAKi8F,WAAW1+F,SAAWyC,KAAKmmkB,kBAAkBnmkB,KAAKi8F,WAAW1+F,UAElEyC,KAAKomkB,iBAAmBpmkB,KAAK29iB,KAAKnob,SAASg4b,kCACvC,IAAImY,GACJ,IAAIR,GAERnlkB,KAAKqmkB,uBAEN,+EAOD,2GACErmkB,KAAKsmkB,qBADP,SAEmBtmkB,KAAKsuC,SAFxB,UAEQvwB,EAFR,OAGQynjB,EAAYxlkB,KAAKumkB,yBAEjBjgkB,EAAWk/jB,EAAUjpB,YAAYx+hB,IALzC,yCAOWzX,GAPX,gCAUS,IAAI3H,SAAgB,SAAAC,GASzB,EAAKonkB,qBAAqBj4hB,KARN,SAAdy4hB,EAAel7jB,GACdA,IAGL,EAAK06jB,qBAAqBngkB,OAAO2gkB,GACjC5nkB,EAAQ0M,GACT,IAGG,EAAK46jB,aACPV,EAAU/jb,QAAQ1jI,EAErB,KAvBH,0HA+BA,WAAM,WACJ,IACE/d,KAAKsmkB,oBAMN,CALC,MAAOr9jB,GAIP,OAAOtK,QAAQa,OAAOyJ,EACvB,CAED,OAAIjJ,KAAKimkB,gBAITjmkB,KAAKimkB,cAAgBjmkB,KAAKymkB,oBAAoBlpjB,OAAM,SAAAtU,GAElD,MADA,EAAKg9jB,cAAgB,KACfh9jB,CACP,KANQjJ,KAAKimkB,aASf,uBAGD,WACEjmkB,KAAKsmkB,qBACiB,OAAlBtmkB,KAAKylkB,UACPzlkB,KAAKumkB,uBAAuB//hB,MAAMxmC,KAAKylkB,SAE1C,sBAKD,WAAK,WACHzlkB,KAAKsmkB,qBACLtmkB,KAAK+lkB,WAAY,EACjB/lkB,KAAKomkB,iBAAiBM,qBACjB1mkB,KAAKkmkB,aACRlmkB,KAAKuH,UAAUmkC,WAAWhrC,SAAQ,SAAAiK,GAChC,EAAKpD,UAAU8B,YAAYsB,EAC5B,GAEJ,sCAEO,WACNqziB,GAASh+iB,KAAKi8F,WAAW0qe,QAAS3mkB,KAAK29iB,KAAI,kBAC3CK,EACEh+iB,KAAKkmkB,cAAgBlmkB,KAAKuH,UAAUq/jB,gBACpC5mkB,KAAK29iB,KAAI,kBAGXK,EACsB,qBAAb97iB,SACPlC,KAAK29iB,KAAI,8CAGZ,kCAEO,SACNkpB,GAA4C,WAE5C,OAAO,SAAAv7jB,GAEL,GADA,EAAK06jB,qBAAqBtlkB,SAAQ,SAAAF,GAAQ,OAAIA,EAAS8K,EAAb,IAClB,oBAAbu7jB,EACTA,EAASv7jB,QACJ,GAAwB,kBAAbu7jB,EAAuB,CACvC,IAAMC,EAAalxf,KAAUixf,GACH,oBAAfC,GACTA,EAAWx7jB,EAEd,CACF,CACF,mCAEO,WACN0yiB,GAASh+iB,KAAK+lkB,UAAW/lkB,KAAK29iB,KAAI,iBACnC,2EAEO,2GACA39iB,KAAK62J,OADL,cAED72J,KAAKylkB,WACJl+jB,EAAYvH,KAAKuH,UAChBvH,KAAKkmkB,cACFa,EAAkB7kkB,SAASmG,cAAc,OAC/Cd,EAAUgB,YAAYw+jB,GACtBx/jB,EAAYw/jB,GAGd/mkB,KAAKylkB,SAAWzlkB,KAAKumkB,uBAAuBj4hB,OAC1C/mC,EACAvH,KAAKi8F,aAZH,kBAgBCj8F,KAAKylkB,UAhBN,iKAmBA,gGACNznB,EACEM,MAAqB8iB,KACrBphkB,KAAK29iB,KAAI,kBAHL,SAOAqpB,KAPA,uBAQiBhnkB,KAAKomkB,iBAAiB/ve,KAC3Cr2F,KAAK29iB,KACL39iB,KAAK29iB,KAAKgC,mBAAgBh4iB,GAVtB,cAQN3H,KAAKwlkB,UARC,gBAagBzkB,GAAmB/gjB,KAAK29iB,MAbxC,OAcNK,EADMrB,EAbA,OAcW38iB,KAAK29iB,KAAI,kBAC1B39iB,KAAKi8F,WAAW0qe,QAAUhqB,EAfpB,yIAkBA,WAEN,OADAqB,EAAQh+iB,KAAKwlkB,UAAWxlkB,KAAK29iB,KAAI,kBAC1B39iB,KAAKwlkB,SACb,OAhOUM,GAmOb,SAASkB,KACP,IAAIjvG,EAAgC,KACpC,OAAO,IAAIp5d,SAAc,SAAAC,GACK,aAAxBsD,SAASqmD,YAQbwva,EAAW,kBAAMn5d,GAAN,EACX3E,OAAOsH,iBAAiB,OAAQw2d,IAR9Bn5d,GASH,IAAE2e,OAAM,SAAAtU,GAKP,MAJI8ud,GACF99d,OAAOuH,oBAAoB,OAAQu2d,GAG/B9ud,CACP,GACH,KCpPMg+jB,GAAAA,WACJ,WACWlR,EACQmR,IAAsC,eAD9C,KAAcnR,eAAdA,EACQ,KAAcmR,eAAdA,CACf,uCAEJ,SAAQlR,GACN,IAAMmR,EAAiBzR,GAAoB0R,kBACzCpnkB,KAAK+1jB,eACLC,GAEF,OAAOh2jB,KAAKknkB,eAAeC,EAC5B,OAZGF,YA+CgBtR,GAAsB,EAAtBA,EAAAA,mFAAf,WACLhY,EACAkD,EACAwmB,GAHK,qFAKCjV,EAAevB,GAAUlT,GAL1B,SAMwB2pB,GAC3BlV,EACAvR,GACA/9hB,EAAAA,EAAAA,IAAmBukjB,IAThB,cAMCtR,EAND,yBAWE,IAAIkR,GAAuBlR,GAAgB,SAAAZ,GAAI,OACpDgF,GAAqB/H,EAAc+C,EADiB,KAXjD,2EA4BeU,GAAoB,EAApBA,EAAAA,mFAAf,WACLtU,EACAV,EACAwmB,GAHK,qFAKC5lB,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,GALnC,SAMCiY,IAAoB,EAAO/X,EAAY,SANxC,uBAOwB6lB,GAC3B7lB,EAAa9D,KACbkD,GACA/9hB,EAAAA,EAAAA,IAAmBukjB,IAVhB,cAOCtR,EAPD,yBAYE,IAAIkR,GAAuBlR,GAAgB,SAAAZ,GAAI,OACpDiF,GAAmB3Y,EAAc0T,EADmB,KAZjD,2EAmDemS,GAAmB,EAAnBA,EAAAA,mFAAf,WACL3pB,EACAvgjB,EACAw0jB,GAHK,4GAKwBA,EAASC,SALjC,UAKC0V,EALD,gBAQHvpB,EAC4B,kBAAnBupB,EACP5pB,EAAI,kBAGNK,EACE4T,EAASvsjB,OAASugkB,GAClBjoB,EAAI,oBAcF,YAPF6pB,EADqB,kBAAZpqkB,EACU,CACjByjjB,YAAazjjB,GAGIA,IA1BlB,oBA8BKqqkB,EAAUD,EAAiBC,UAE7B,gBAAiBD,GAhCpB,wBAiCCxpB,EACc,WAAZypB,EAAQpikB,KACRs4iB,EAAI,kBAnCP,UAsCwBsgB,GAAoBtgB,EAAM,CAC/C+F,QAAS+jB,EAAQxP,WACjByP,oBAAqB,CACnB7mB,YAAa2mB,EAAiB3mB,YAC9B0mB,eAAAA,KA1CL,eAsCOjhkB,EAtCP,yBA6CQA,EAASqhkB,iBAAiB1R,aA7ClC,eA+CCjY,EACc,WAAZypB,EAAQpikB,KACRs4iB,EAAI,kBAMNK,EAHM4pB,GAC4B,QAAhC,EAAAJ,EAAiBK,uBAAentkB,IAAAA,OAAA,EAAAA,EAAEsgd,MAClCwsH,EAAiBM,eACMnqB,EAAI,6BAvD9B,UAwDwBsmB,GAAoBtmB,EAAM,CAC/CoqB,qBAAsBN,EAAQxP,WAC9B2P,gBAAAA,EACAI,gBAAiB,CACfT,eAAAA,KA5DL,eAwDOjhkB,EAxDP,yBA+DQA,EAAS2hkB,kBAAkBhS,aA/DnC,iDAkE6BX,GAA0B3X,EAAM,CAC5DkD,YAAa2mB,EAAiB3mB,YAC9B0mB,eAAAA,IApED,wBAkEOtR,EAlEP,EAkEOA,YAlEP,kBAsEMA,GAtEN,yBAyEHrE,EAASsW,SAzEN,sGC7HMC,GAAAA,WAcX,WAAYxqB,IAAU,eAPb,KAAAmH,WAAaqjB,EAAkBxR,YAQtC32jB,KAAK29iB,KAAOkT,GAAUlT,EACvB,iDAiCD,SACEyqB,EACAC,GAEA,OAAOf,GACLtnkB,KAAK29iB,KACLyqB,GACAtljB,EAAAA,EAAAA,IAAmBuljB,GAEtB,6BA6BD,SACEtS,EACAC,GAEA,OAAON,GAAoB0R,kBACzBrR,EACAC,EAEH,qCAMD,SACEyB,GAEA,IAAMQ,EAAaR,EACnB,OAAO0Q,EAAkBnQ,2BAA2BC,EACrD,oCAkCD,SAA2B54jB,GACzB,OAAO8okB,EAAkBnQ,2BACtB34jB,EAAM2f,YAAc,CAAC,EAEzB,2CAEO,YAEkB,IADR24iB,EACQ,EADxB7W,eAEA,IAAK6W,EACH,OAAO,KAET,IAAQ9W,EACN8W,EADM9W,YAAa0U,EACnBoC,EADmBpC,eAErB,OAAI1U,GAAe0U,EACVG,GAAoB4S,mBACzBznB,EACA0U,GAGG,IACR,OAjKU4S,GC1BG,SAAAI,GACd5qB,EACA6qB,GAEA,OAAIA,EACKjhB,GAAaihB,IAGtBxqB,EAAQL,EAAKuP,uBAAwBvP,EAAI,kBAElCA,EAAKuP,uBACd,CDiBkBib,GAAAA,YAAwC,QAExCA,GAAAA,qBAAmD,YEX/DM,GAAAA,SAAAA,iCACJ,WAAqBnkkB,GAAqB,6BACxC,cAAK,oBADoBA,OAANA,EAAqB,CAEzC,mDAED,SAAoBq5iB,GAClB,OAAOiX,GAAcjX,EAAM39iB,KAAK0okB,mBACjC,+BAED,SACE/qB,EACA+F,GAEA,OAAOkR,GAAcjX,EAAM39iB,KAAK0okB,iBAAiBhlB,GAClD,6CAED,SAA6B/F,GAC3B,OAAOiX,GAAcjX,EAAM39iB,KAAK0okB,mBACjC,iCAEO,SAAiBhlB,GACvB,IAAM78iB,EAAgC,CACpCoujB,WAAYj1jB,KAAKsE,OAAO2wjB,WACxB0T,UAAW3okB,KAAKsE,OAAOqkkB,UACvBzT,SAAUl1jB,KAAKsE,OAAO4wjB,SACtB7V,SAAUr/iB,KAAKsE,OAAO+6iB,SACtByV,aAAc90jB,KAAKsE,OAAOwwjB,aAC1BT,mBAAmB,EACnBuU,qBAAqB,GAOvB,OAJIllB,IACF78iB,EAAQ68iB,QAAUA,GAGb78iB,CACR,OApCG4hkB,CAAsBtV,IAuCtB,SAAU0V,GACdvkkB,GAEA,OAAO41jB,GACL51jB,EAAOq5iB,KACP,IAAI8qB,GAAcnkkB,GAClBA,EAAOs1jB,gBAEV,CAEK,SAAUkP,GACdxkkB,GAEA,IAAQq5iB,EAAer5iB,EAAfq5iB,KAAM4D,EAASj9iB,EAATi9iB,KAEd,OADAvD,EAAQuD,EAAM5D,EAAI,kBACXqc,GACLzY,EACA,IAAIknB,GAAcnkkB,GAClBA,EAAOs1jB,gBAEV,UAEqBD,GAAM,mFAArB,WACLr1jB,GADK,qFAGGq5iB,EAAer5iB,EAAfq5iB,KACRK,EADcuD,EAASj9iB,EAATi9iB,KACA5D,EAAI,kBAJb,kBAKEorB,GAAUxnB,EAAM,IAAIknB,GAAcnkkB,GAASA,EAAOs1jB,kBALpD,sEC9DeoP,GAAAA,WASpB,WACqBrrB,EACnBnjhB,EACmBu9b,EACTwpF,GACgC,IAAvBqY,EAAuB,wEAJvB,KAAIjc,KAAJA,EAEA,KAAQ5lF,SAARA,EACT,KAAIwpF,KAAJA,EACS,KAAeqY,gBAAfA,EAXb,KAAcqP,eAA0B,KACxC,KAAY52a,aAAwB,KAY1CryJ,KAAKw6B,OAAS31B,MAAMC,QAAQ01B,GAAUA,EAAS,CAACA,EACjD,uCAID,WAAO,WACL,OAAO,IAAI77B,QAAJ,yCACL,WAAOC,EAASY,GAAhB,6EACE,EAAKypkB,eAAiB,CAAErqkB,QAAAA,EAASY,OAAAA,GADnC,kBAI8B,EAAKu4d,SAAS+1F,YAAY,EAAKnQ,MAJ7D,cAII,EAAKtrZ,aAJT,gBAKU,EAAK62a,cALf,OAMI,EAAK72a,aAAa82a,iBAAiB,GANvC,kDAQI,EAAK3pkB,OAAL,MARJ,0DADK,wDAaR,qEAED,WAAkBuB,GAAlB,2FACUqokB,EAA4DrokB,EAA5DqokB,YAAaT,EAA+C5nkB,EAA/C4nkB,UAAWzT,EAAoCn0jB,EAApCm0jB,SAAU7V,EAA0Bt+iB,EAA1Bs+iB,SAAUhgjB,EAAgB0B,EAAhB1B,MAAOgG,EAAStE,EAATsE,MACvDhG,EAFN,uBAGIW,KAAKR,OAAOH,GAHhB,iCAOQiF,EAAwB,CAC5Bq5iB,KAAM39iB,KAAK29iB,KACXsX,WAAYmU,EACZT,UAAWA,EACXtpB,SAAUA,QAAY13iB,EACtButjB,SAAUA,QAAYvtjB,EACtB45iB,KAAMvhjB,KAAKuhjB,KACXqY,gBAAiB55jB,KAAK45jB,iBAd1B,cAkBI55jB,KAlBJ,SAkBuBA,KAAKqpkB,WAAWhkkB,EAAhBrF,CAAsBsE,GAlB7C,wBAkBS1F,QAlBT,kEAoBIoB,KAAKR,OAAL,MApBJ,sIAwBA,SAAQH,GACNW,KAAKR,OAAOH,EACb,2BAEO,SAAWgG,GACjB,OAAQA,GACN,IAAqC,iBACrC,IAAK,oBACH,OAAOwjkB,GACT,IAAkC,eAClC,IAAK,kBACH,OAAOlP,GACT,IAAoC,iBACpC,IAAK,oBACH,OAAOmP,GACT,QACExrB,EAAMt9iB,KAAK29iB,KAAI,kBAEpB,wBAES,SAAQwX,GAChB/W,EAAYp+iB,KAAKipkB,eAAgB,iCACjCjpkB,KAAKipkB,eAAerqkB,QAAQu2jB,GAC5Bn1jB,KAAKspkB,sBACN,uBAES,SAAOjqkB,GACf++iB,EAAYp+iB,KAAKipkB,eAAgB,iCACjCjpkB,KAAKipkB,eAAezpkB,OAAOH,GAC3BW,KAAKspkB,sBACN,qCAEO,WACFtpkB,KAAKqyJ,cACPryJ,KAAKqyJ,aAAak3a,mBAAmBvpkB,MAGvCA,KAAKipkB,eAAiB,KACtBjpkB,KAAKwpkB,SACN,OApGmBR,GCSTS,GAA6B,IAAIjrB,EAAM,IAAM,cAgCpCkrB,GAAgB,EAAhBA,EAAAA,mFAAf,WACL/rB,EACAvJ,EACAr8E,GAHK,uFAKCq6F,EAAevB,GAAUlT,GAC/BE,EAAkBF,EAAMvJ,EAAU2iB,IAC5B4S,EAAmBpB,GAAqBnW,EAAcr6F,GACtDlyc,EAAS,IAAI+jjB,GACjBxX,EAAY,iBAEZhe,EACAu1B,GAZG,kBAcE9jjB,EAAOgkjB,kBAdT,2EAuFeC,GAAc,EAAdA,EAAAA,mFAAf,WACLvoB,EACAnN,EACAr8E,GAHK,uFAML8lF,GADM4D,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,IACT5D,KAAMvJ,EAAU2iB,IACzC4S,EAAmBpB,GAAqB9mB,EAAa9D,KAAM5lF,GAE3Dlyc,EAAS,IAAI+jjB,GACjBnoB,EAAa9D,KAAI,eAEjBvJ,EACAu1B,EACAloB,GAdG,kBAgBE57hB,EAAOgkjB,kBAhBT,sEAwBDD,GAAAA,SAAAA,iCAOJ,WACEjsB,EACAnjhB,EACiB45gB,EACjBr8E,EACAwpF,GAAmB,6BAEnB,cAAM5D,EAAMnjhB,EAAQu9b,EAAUwpF,IAJLnN,SAARA,EANX,EAAU21B,WAAqB,KAC/B,EAAMC,OAAkB,KAU1BJ,EAAeK,oBACjBL,EAAeK,mBAAmBjphB,SAGpC4ohB,EAAeK,oBAAf,UAPmB,CAQpB,uFAED,yGACuBjqkB,KAAKyhJ,UAD5B,cAEEu8Z,EADMx6iB,EADR,OAEkBxD,KAAK29iB,KAAI,kBAF3B,kBAGSn6iB,GAHT,wKAMA,uGACE46iB,EACyB,IAAvBp+iB,KAAKw6B,OAAO75B,OACZ,0CAEIy/jB,EAAUO,KALlB,SAM0B3gkB,KAAK+3d,SAASmyG,WACpClqkB,KAAK29iB,KACL39iB,KAAKo0iB,SACLp0iB,KAAKw6B,OAAO,GACZ4liB,GAVJ,OAMEpgkB,KAAK+pkB,WANP,OAYE/pkB,KAAK+pkB,WAAWI,gBAAkB/J,EASlCpgkB,KAAK+3d,SAASqyG,kBAAkBpqkB,KAAK29iB,MAAMpgiB,OAAM,SAAAtU,GAC/C,EAAKzJ,OAAOyJ,EACb,IAEDjJ,KAAK+3d,SAASsyG,6BAA6BrqkB,KAAK29iB,MAAM,SAAA39e,GAC/CA,GACH,EAAKxgE,OACHi+iB,EAAa,EAAKE,KAA4C,2BAGnE,IAGD39iB,KAAKsqkB,uBAlCP,yHAqCA,iBACE,OAAwB,QAAjB,EAAAtqkB,KAAK+pkB,kBAAYrvkB,IAAAA,OAAA,EAAAA,EAAAA,kBAAmB,IAC5C,uBAED,WACEsF,KAAKR,OAAOi+iB,EAAaz9iB,KAAK29iB,KAA0C,2BACzE,wBAED,WACM39iB,KAAK+pkB,YACP/pkB,KAAK+pkB,WAAWrrjB,QAGd1e,KAAKgqkB,QACP/vkB,OAAOq7B,aAAat1B,KAAKgqkB,QAG3BhqkB,KAAK+pkB,WAAa,KAClB/pkB,KAAKgqkB,OAAS,KACdJ,EAAeK,mBAAqB,IACrC,qCAEO,WAAoB,YACb,SAAPvL,aACyB,QAAzB,EAAiB,QAAjB,IAAKqL,kBAAYrvkB,IAAAA,OAAA,EAAAA,EAAAA,cAAQC,IAAAA,OAAA,EAAAA,EAAAA,QAM3B,EAAKqvkB,OAAS/vkB,OAAOs7B,YAAW,WAC9B,EAAKy0iB,OAAS,KACd,EAAKxqkB,OACHi+iB,EAAa,EAAKE,KAAyC,wBAE9D,QAIH,EAAKqsB,OAAS/vkB,OAAOs7B,WAAWmpiB,EAAM+K,GAA2B7vkB,MAClE,CAED8kkB,EACD,OA5GGkL,CAAuBZ,IAGZY,GAAkB,mBAA0B,KC7K7D,IAIMW,GAGF,IAAIrxkB,IAEKsxkB,GAAAA,SAAAA,iCAGX,WACE7sB,EACA5lF,GACuB,MAAvB6hG,EAAuB,+EAEvB,cACEjc,EACA,CAAC,oBAAD,iDAMA5lF,OACApwd,EACAiyjB,IAjBGwG,QAAG,KAKe,CAcxB,gFAMD,8FACMqK,EAAeF,GAAmB3wkB,IAAIoG,KAAK29iB,KAAKtoiB,QADtD,0CAIuCq1jB,GAC/B1qkB,KAAK+3d,SACL/3d,KAAK29iB,MANb,2JAQkE,KARlE,QAQYn6iB,EARZ,KASMinkB,EAAe,kBAAM9rkB,QAAQC,QAAQ4E,EAAtB,EATrB,kDAWMinkB,EAAe,kBAAM9rkB,QAAQa,OAAR,KAAN,EAXrB,QAcI+qkB,GAAmBpxkB,IAAI6G,KAAK29iB,KAAKtoiB,OAAQo1jB,GAd7C,eAmBOzqkB,KAAK45jB,iBACR2Q,GAAmBpxkB,IAAI6G,KAAK29iB,KAAKtoiB,QAAQ,kBAAM1W,QAAQC,QAAQ,KAAtB,IApB7C,kBAuBS6rkB,KAvBT,kLA0BA,WAAkB1pkB,GAAlB,+EACgB,sBAAVA,EAAMsE,KADZ,oGAE6BtE,IAF7B,UAGuB,YAAVA,EAAMsE,KAHnB,uBAKIrF,KAAKpB,QAAQ,MALjB,8BASMmC,EAAMq/jB,QATZ,kCAUuBpgkB,KAAK29iB,KAAKgtB,mBAAmB5pkB,EAAMq/jB,SAV1D,aAUU7e,EAVV,gCAYMvhjB,KAAKuhjB,KAAOA,EAZlB,6EAa+BxgjB,IAb/B,QAeMf,KAAKpB,QAAQ,MAfnB,0KAoBA,kMAEA,WAAkB,OA1EP4rkB,CAAuBxB,aA6Ed0B,GAAkC,EAAlCA,mFAAf,WACL3yG,EACA4lF,GAFK,uFAICr7iB,EAAMsokB,GAAmBjtB,GACzBoK,EAAc8iB,GAAoB9yG,GALnC,SAMOgwF,EAAYgB,eANnB,2DAOI,GAPJ,uBAS6BhB,EAAY9a,KAAK3qiB,GAT9C,0BASCwokB,EAAuD,SATxD,eAUC/iB,EAAYS,QAAQlmjB,GAVrB,iCAWEwokB,GAXF,4EAceC,GAA0B,EAA1BA,mFAAf,WACLhzG,EACA4lF,GAFK,+FAIEktB,GAAoB9yG,GAAUuwF,KAAKsiB,GAAmBjtB,GAAO,SAJ/D,kEAWS,SAAAkR,GACdlR,EACAn6iB,GAEA+mkB,GAAmBpxkB,IAAIwkjB,EAAKtoiB,OAAQ7R,EACrC,CAED,SAASqnkB,GACP9yG,GAEA,OAAOwvF,GAAaxvF,EAASk4F,qBAC9B,CAED,SAAS2a,GAAmBjtB,GAC1B,OAAOkK,GA7HoB,kBA+HzBlK,EAAK59iB,OAAO0/iB,OACZ9B,EAAKvkjB,KAET,UC7EgB4xkB,GACdrtB,EACAvJ,EACAr8E,GAEA,gBAGwC,EAApBkzG,EAAAA,mCAHbA,CAAoBttB,EAAMvJ,EAAUr8E,EAC5C,iDAEM,WACL4lF,EACAvJ,EACAr8E,GAHK,qFAKCq6F,EAAevB,GAAUlT,GAC/BE,EAAkBF,EAAMvJ,EAAU2iB,IAN7B,SAUC3E,EAAanF,uBAVd,cAWC0c,EAAmBpB,GAAqBnW,EAAcr6F,GAXvD,SAYCgzG,GAA0BpB,EAAkBvX,GAZ7C,gCAcEuX,EAAiBuB,cACtB9Y,EACAhe,EAAQ,sBAhBL,2EAwHS+2B,GACd5pB,EACAnN,EACAr8E,GAEA,gBAEsC,EAAlBqzG,EAAAA,mCAFbA,CAAkB7pB,EAAMnN,EAAUr8E,EAC1C,iDACM,WACLwpF,EACAnN,EACAr8E,GAHK,uFAML8lF,GADM4D,GAAe3+hB,EAAAA,EAAAA,IAAmBy+hB,IACT5D,KAAMvJ,EAAU2iB,IAN1C,SAUCtV,EAAa9D,KAAKsP,uBAVnB,cAYC0c,EAAmBpB,GAAqB9mB,EAAa9D,KAAM5lF,GAZ5D,SAaCyhG,IAAoB,EAAO/X,EAAcrN,EAAS0Q,YAbnD,uBAcCimB,GAA0BpB,EAAkBloB,EAAa9D,MAd1D,wBAgBiB0tB,GAAuB5pB,GAhBxC,eAgBC2e,EAhBD,yBAiBEuJ,EAAiBuB,cACtBzpB,EAAa9D,KACbvJ,EAAQ,kBAERgsB,IArBG,4EAiEekL,GAAkB,EAAlBA,mFAAf,WACL3tB,EACA5lF,GAFK,sFAIC84F,GAAUlT,GAAMsP,uBAJjB,gCAKEse,GAAmB5tB,EAAM5lF,GAAU,IALrC,2EAQewzG,GAAmB,EAAnBA,mFAAf,WACL5tB,EACA6tB,GAFK,uGAGL5R,EAHK,gCAKCxH,EAAevB,GAAUlT,GACzB5lF,EAAWwwG,GAAqBnW,EAAcoZ,GAC9C3ljB,EAAS,IAAI2kjB,GAAepY,EAAcr6F,EAAU6hG,GAPrD,SAQgB/ziB,EAAO47H,UARvB,YAQCj+I,EARD,SAUUo2jB,EAVV,+BAWIp2jB,EAAO+9iB,KAAKyF,iBAXhB,UAYGoL,EAAazN,sBAAsBnhjB,EAAO+9iB,MAZ7C,yBAaG6Q,EAAanD,iBAAiB,KAAMuc,GAbvC,iCAgBEhokB,GAhBF,8EAmBQ6nkB,GAAuB,mFAAtC,WAAsC9pB,GAAtC,mFACQ6e,EAAUO,GAAiB,GAAD,OAAIpf,EAAKvmG,IAAT,QAChCumG,EAAKyF,iBAAmBoZ,EAF1B,SAGQ7e,EAAK5D,KAAKsR,iBAAiB1N,GAHnC,uBAIQA,EAAK5D,KAAKgH,sBAAsBpD,GAJxC,gCAKS6e,GALT,kECxRA,IAEaqL,GAAAA,WAOX,WAA6B9tB,IAAkB,eAAlB,KAAIA,KAAJA,EANZ,KAAA+tB,gBAA+B,IAAI3skB,IACnC,KAAA4skB,UAAoC,IAAI5skB,IAC/C,KAAmB6skB,oBAAqB,KACxC,KAA2BC,6BAAG,EAChC,KAAAC,uBAAyBhpkB,KAAKygE,KAEa,gDAEnD,SAAiBwogB,GACf/rkB,KAAK2rkB,UAAU59hB,IAAIg+hB,GAGjB/rkB,KAAK4rkB,qBACL5rkB,KAAKgskB,mBAAmBhskB,KAAK4rkB,oBAAqBG,KAElD/rkB,KAAKiskB,eAAejskB,KAAK4rkB,oBAAqBG,GAC9C/rkB,KAAKkskB,iBAAiBlskB,KAAK4rkB,qBAC3B5rkB,KAAK4rkB,oBAAsB,KAE9B,mCAED,SAAmBG,GACjB/rkB,KAAK2rkB,UAAU9lkB,OAAOkmkB,EACvB,wBAED,SAAQhrkB,GAAgB,WAEtB,GAAIf,KAAKmskB,oBAAoBprkB,GAC3B,OAAO,EAGT,IAAIkgJ,GAAU,EASd,OARAjhJ,KAAK2rkB,UAAUjrkB,SAAQ,SAAA0rkB,GACjB,EAAKJ,mBAAmBjrkB,EAAOqrkB,KACjCnrb,GAAU,EACV,EAAKgrb,eAAelrkB,EAAOqrkB,GAC3B,EAAKF,iBAAiBnrkB,GAEzB,IAEGf,KAAK6rkB,8BAkEb,SAAyB9qkB,GACvB,OAAQA,EAAMsE,MACZ,IAAwC,oBACxC,IAAqC,kBACrC,IAAK,oBACH,OAAO,EACT,IAAK,UACH,OAAOgnkB,GAAoBtrkB,GAC7B,QACE,OAAO,EAEb,CA7E6CurkB,CAAgBvrkB,KAMzDf,KAAK6rkB,6BAA8B,EAG9B5qb,IACHjhJ,KAAK4rkB,oBAAsB7qkB,EAC3BkgJ,GAAU,IARHA,CAYV,+BAEO,SAAelgJ,EAAkBqrkB,SACvC,GAAIrrkB,EAAM1B,QAAUgtkB,GAAoBtrkB,GAAQ,CAC9C,IAAM1G,GACa,QAAhB,EAAA0G,EAAM1B,MAAMhF,YAAIK,IAAAA,OAAA,EAAAA,EAAE2H,MAAM,SAAS,KAAlC,iBAEF+pkB,EAASvsE,QAAQ49C,EAAaz9iB,KAAK29iB,KAAMtjjB,GAC1C,MACC+xkB,EAASG,YAAYxrkB,EAExB,mCAEO,SACNA,EACAqrkB,GAEA,IAAMI,EACiB,OAArBJ,EAAShM,WACNr/jB,EAAMq/jB,SAAWr/jB,EAAMq/jB,UAAYgM,EAAShM,QACjD,OAAOgM,EAAS5xiB,OAAOj1B,SAASxE,EAAMsE,OAASmnkB,CAChD,oCAEO,SAAoBzrkB,GAQ1B,OANE+B,KAAKygE,MAAQvjE,KAAK8rkB,wBAnFoB,KAsFtC9rkB,KAAK0rkB,gBAAgBvkiB,QAGhBnnC,KAAK0rkB,gBAAgB/xkB,IAAI8ykB,GAAS1rkB,GAC1C,iCAEO,SAAiBA,GACvBf,KAAK0rkB,gBAAgB39hB,IAAI0+hB,GAAS1rkB,IAClCf,KAAK8rkB,uBAAyBhpkB,KAAKygE,KACpC,OA7FUkogB,GAgGb,SAASgB,GAASxjkB,GAChB,MAAO,CAACA,EAAE5D,KAAM4D,EAAEm3jB,QAASn3jB,EAAE0/jB,UAAW1/jB,EAAEo2iB,UAAU7khB,QAAO,SAAApW,GAAC,OAAIA,CAAJ,IAAO3X,KAAK,IACzE,CAED,SAAS4/jB,GAAT,GAAuD,IAAxBhnkB,EAAwB,EAAxBA,KAAMhG,EAAkB,EAAlBA,MACnC,MACgC,YAA9BgG,IACK,OAALhG,QAAK,IAALA,OAAK,EAALA,EAAOhF,QAAP,eAAwB,gBAE3B,UC3GqBqykB,GAAkB,mFAAjC,WACL/uB,GADK,+FAEL92iB,EAFK,+BAE8B,CAAC,EAF/B,kBAIEy4iB,EACL3B,EAGA,qBAAA92iB,IARG,oECNP,IAAM8lkB,GAAmB,uCACnBC,GAAa,0DAEZ,WAA+BjvB,GAA/B,wFAEDA,EAAK59iB,OAAO6+iB,SAFX,iEAM+B8tB,GAAkB/uB,GANjD,gBAMGkvB,EANH,EAMGA,kBANH,UAQgBA,GARhB,4DAQMjqkB,EARN,mBAUGkqkB,GAAYlqkB,GAVf,qPAmBL06iB,EAAMK,EAAI,uBAnBL,+FAsBP,SAASmvB,GAAYrld,GACnB,IAAMsld,EAAa1uB,IACnB,EAA+B,IAAI2uB,IAAID,GAA/B7ve,EAAR,EAAQA,SAAU+ve,EAAlB,EAAkBA,SAClB,GAAIxld,EAAS/uE,WAAW,uBAAwB,CAC9C,IAAMw0hB,EAAQ,IAAIF,IAAIvld,GAEtB,MAAuB,KAAnByld,EAAMD,UAAgC,KAAbA,EAGZ,sBAAb/ve,GACAuqB,EAAS7lH,QAAQ,sBAAuB,MACtCmrkB,EAAWnrkB,QAAQ,sBAAuB,IAI5B,sBAAbs7F,GAAoCgwe,EAAMD,WAAaA,CAC/D,CAED,IAAKL,GAAWx2jB,KAAK8mF,GACnB,OAAO,EAGT,GAAIyve,GAAiBv2jB,KAAKqxG,GAGxB,OAAOwld,IAAaxld,EAItB,IAAM0ld,EAAuB1ld,EAAS7lH,QAAQ,MAAO,OAOrD,OAJW,IAAIg2B,OACb,UAAYu1iB,EAAuB,IAAMA,EAAuB,KAChE,KAEQ/2jB,KAAK62jB,EACjB,CC7DA,IAAMG,GAAkB,IAAI5uB,EAAM,IAAO,KAMzC,SAAS6uB,KAIP,IAAMC,EAAS13f,KAAU23f,OAEzB,GAAI,OAAAD,QAAM,IAANA,OAAM,EAANA,EAAQhmf,EAEV,IAAK,IAAL,MAAmBtpF,OAAOgB,KAAKsukB,EAAOhmf,GAAtC,eAA0C,CAArC,IAAMhpC,EAAI,KAQb,GANAgvhB,EAAOhmf,EAAEhpC,GAAMj6B,EAAIipjB,EAAOhmf,EAAEhpC,GAAMj6B,GAAK,GAEvCipjB,EAAOhmf,EAAEhpC,GAAMyoC,EAAIumf,EAAOhmf,EAAEhpC,GAAMyoC,GAAK,GAEvCumf,EAAOhmf,EAAEhpC,GAAMj6B,GAAf,OAAuBipjB,EAAOhmf,EAAEhpC,GAAMyoC,GAElCumf,EAAOE,GACT,IAAK,IAAI7kkB,EAAI,EAAGA,EAAI2kkB,EAAOE,GAAG7skB,OAAQgI,IAEpC2kkB,EAAOE,GAAG7kkB,GAAK,IAGpB,CAEJ,CA8DD,IAAI8kkB,GAAyD,KACvD,SAAUC,GAAU/vB,GAExB,OADA8vB,GAAmBA,IA9DrB,SAAkB9vB,GAChB,OAAO,IAAIh/iB,SAA8B,SAACC,EAASY,aAEjD,SAASmukB,IAGPN,KACAO,KAAKv3e,KAAK,eAAgB,CACxB94F,SAAU,WACRqB,EAAQgvkB,KAAKC,QAAQC,aACtB,EACDC,UAAW,WAOTV,KACA7tkB,EAAOi+iB,EAAaE,EAAI,0BACzB,EACD52gB,QAASqmiB,GAAgBxzkB,OAE5B,CAED,GAA6B,QAAzB,EAAgB,QAAhB,EAAAg8E,KAAUg4f,YAAMlzkB,IAAAA,OAAA,EAAAA,EAAAA,eAASC,IAAAA,OAAA,EAAAA,EAAAA,OAE3BiE,EAAQgvkB,KAAKC,QAAQC,kBAChB,MAAoB,QAAd,EAAAl4f,KAAUg4f,YAAIhzkB,IAAAA,OAAA,EAAAA,EAAEy7F,MAGtB,CAML,IAAM23e,EAASC,GAAyB,aAYxC,OAVAr4f,KAAUo4f,GAAU,WAEZJ,KAAKv3e,KACTs3e,IAGAnukB,EAAOi+iB,EAAaE,EAAI,0BAE3B,EAEMuwB,GACI,4CAAD,OAA6CF,IACpDzwjB,OAAM,SAAAtU,GAAC,OAAIzJ,EAAOyJ,EAAX,GACX,CAtBC0kkB,GAsBD,CACF,IAAEpwjB,OAAM,SAAAle,GAGP,MADAoukB,GAAmB,KACbpukB,CACP,GACF,CAIwC8ukB,CAASxwB,GACzC8vB,EACT,CC3FA,IAAMW,GAAe,IAAI5vB,EAAM,IAAM,MAI/B6vB,GAAoB,CACxBv3iB,MAAO,CACLtsB,SAAU,WACVi6B,IAAK,SACL9T,MAAO,MACPnE,OAAQ,OAEV,cAAe,OACf8hjB,SAAU,MAKNC,GAAmB,IAAIr1kB,IAAI,CAC/B,CAAC,iCAAwB,KACzB,CAAC,iDAAkD,KACnD,CAAC,8CAA+C,OAGlD,SAASs1kB,GAAa7wB,GACpB,IAAM59iB,EAAS49iB,EAAK59iB,OACpBi+iB,EAAQj+iB,EAAOuujB,WAAY3Q,EAAI,+BAC/B,IAAM96iB,EAAM9C,EAAO6+iB,SACfD,EAAa5+iB,EAzBU,wBAwBf,kBAEG49iB,EAAK59iB,OAAOuujB,WAFf,YAzBM,kBA6BZhqjB,EAAiC,CACrCm7iB,OAAQ1/iB,EAAO0/iB,OACf5K,QAAS8I,EAAKvkjB,KACdgrB,EAAG8xhB,EAAAA,IAECu4B,EAAMF,GAAiB30kB,IAAI+jjB,EAAK59iB,OAAO8/iB,SACzC4uB,IACFnqkB,EAAOmqkB,IAAMA,GAEf,IAAMrkB,EAAazM,EAAK6S,iBAIxB,OAHIpG,EAAWzpjB,SACb2D,EAAOoqkB,GAAKtkB,EAAW39iB,KAAK,MAEvB,GAAP,OAAU5J,EAAV,aAAiB0d,EAAAA,EAAAA,IAAYjc,GAAQS,MAAM,GAC5C,UAEqB4pkB,GAAY,mFAA3B,WACLhxB,GADK,8FAGiBixB,GAAqBjxB,GAHtC,cAGCx3f,EAHD,OAKL63f,EADM4vB,EAAOh4f,KAAUg4f,KACTjwB,EAAI,kBALb,kBAMEx3f,EAAQ3nC,KACb,CACEqwjB,MAAO3skB,SAASoD,KAChBzC,IAAK2rkB,GAAa7wB,GAClBmxB,sBAAuBlB,EAAKC,QAAQkB,4BACpCnma,WAAYyla,GACZW,WAAW,IAEb,SAACC,GAAD,OACE,IAAItwkB,QAAJ,yCAAY,WAAOC,EAASY,GAAhB,QAgBD0vkB,EAhBC,6EAgBDA,EAhBC,WAiBRt5f,KAAUtgD,aAAa65iB,GACvBvwkB,EAAQqwkB,EACT,EAnBS,SACJA,EAAOG,QAAQ,CAEnBC,gBAAgB,IAHR,OAMJC,EAAe7xB,EACnBE,EAAI,0BAKAwxB,EAAoBv5f,KAAUrgD,YAAW,WAC7C/1B,EAAO8vkB,EACR,GAAElB,GAAax0kB,OAQhBq1kB,EAAOM,KAAKL,GAAsBpxkB,KAAKoxkB,GAAsB,WAC3D1vkB,EAAO8vkB,EACR,IAxBS,2CAAZ,wDADF,KAdG,oEC/CP,IAAME,GAAqB,CACzB78iB,SAAU,MACV88iB,UAAW,MACXC,UAAW,MACX/qjB,QAAS,MAKLgrjB,GAAe,SAEfC,GAAoB,mBAEbC,GAAAA,WAGX,WAAqB51kB,IAAqB,eAArB,KAAMA,OAANA,EAFrB,KAAekwkB,gBAAkB,IAEa,qCAE9C,WACE,GAAInqkB,KAAK/F,OACP,IACE+F,KAAK/F,OAAOykB,OACA,CAAZ,MAAOzV,GAAK,CAEjB,OAXU4mkB,GAcG,SAAAC,GACdnyB,EACA96iB,EACAzJ,GAEuB,IADvBu3B,EACuB,uDAzBH,IAyBpBnE,EAAuB,uDAxBF,IA0BfiY,EAAMl7B,KAAKkuB,KAAKx9B,OAAOs7E,OAAOw6f,YAAcvjjB,GAAU,EAAG,GAAGlvB,WAC5DsnC,EAAOr7B,KAAKkuB,KAAKx9B,OAAOs7E,OAAOy6f,WAAar/iB,GAAS,EAAG,GAAGrzB,WAC7Dqa,EAAS,GAEPva,EACDY,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,IAAkB,CACrB2yB,MAAOA,EAAMrzB,WACbkvB,OAAQA,EAAOlvB,WACfmnC,IAAAA,EACAG,KAAAA,IAKI1mB,GAAKV,EAAAA,EAAAA,MAAQhJ,cAEfpb,IACFue,EAASgyiB,GAAazriB,GAAMyxjB,GAAev2kB,GAGzCmwjB,GAAWrriB,KAEbrb,EAAMA,GAAO+skB,GAGbxykB,EAAQ6ykB,WAAa,OAGvB,IAAMhrhB,EAAgBjnD,OAAOyG,QAAQrH,GAAS+G,QAC5C,SAAC+rkB,EAAD,sBAAS5tkB,EAAT,KAAcpE,EAAd,qBAA4BgykB,GAA5B,OAAoC5tkB,EAApC,YAA2CpE,EAA3C,OACA,IAGF,GAAI4rjB,GAAiB5riB,IAAkB,UAAXvG,EAE1B,OADAw4jB,GAAmBttkB,GAAO,GAAI8U,GACvB,IAAIk4jB,GAAU,MAKvB,IAAMO,EAASn2kB,OAAOukB,KAAK3b,GAAO,GAAI8U,EAAQstC,GAC9C+4f,EAAQoyB,EAAQzyB,EAAI,iBAGpB,IACEyyB,EAAO/pjB,OACK,CAAZ,MAAOpd,GAAK,CAEd,OAAO,IAAI4mkB,GAAUO,EACtB,CAED,SAASD,GAAmBttkB,EAAa8U,GACvC,IAAMuiD,EAAKh4D,SAASmG,cAAc,KAClC6xD,EAAG2hC,KAAOh5F,EACVq3D,EAAGviD,OAASA,EACZ,IAAMuvJ,EAAQhlK,SAASkkJ,YAAY,cACnC8gB,EAAMmpa,eACJ,SACA,GACA,EACAp2kB,OACA,EACA,EACA,EACA,EACA,GACA,GACA,GACA,GACA,EACA,EACA,MAEFigE,EAAGorc,cAAcp+V,EACnB,CCvGA,IAcMopa,GAAiC3ukB,mBAAmB,gBAgBpC4ukB,GAAgB,EAAhBA,EAAAA,EAAAA,EAAAA,EAAAA,mFAAf,WACL5yB,EACAvJ,EACAo8B,EACAC,EACArQ,EACAsQ,GANK,oGAoBL,GAZA1yB,EAAQL,EAAK59iB,OAAOuujB,WAAY3Q,EAAI,+BACpCK,EAAQL,EAAK59iB,OAAO0/iB,OAAQ9B,EAAI,mBAE1Br5iB,EAAuB,CAC3Bm7iB,OAAQ9B,EAAK59iB,OAAO0/iB,OACpB5K,QAAS8I,EAAKvkjB,KACdo3kB,SAAAA,EACAC,YAAAA,EACArsjB,EAAG8xhB,EAAAA,GACHkqB,QAAAA,GAGEhsB,aAAoB2iB,GAQtB,IAPA3iB,EAASu8B,mBAAmBhzB,EAAKgC,cACjCr7iB,EAAOwgjB,WAAa1Q,EAAS0Q,YAAc,IACtClliB,EAAAA,EAAAA,IAAQw0hB,EAASw8B,yBACpBtskB,EAAO2yjB,iBAAmBnxjB,KAAKC,UAAUquiB,EAASw8B,wBAI/C,EAAL,IAA2B5ykB,OAAOyG,QAAQiskB,GAAoB,CAAC,GAA/D,eAAmE,kBAAvDpukB,EAAuD,KAAlDpE,EAAkD,KACjEoG,EAAOhC,GAAOpE,EAmBlB,IAfIk2iB,aAAoB+iB,KAChBC,EAAShjB,EAASy8B,YAAYr2iB,QAAO,SAAAy5O,GAAK,MAAc,KAAVA,CAAJ,KACrCtzQ,OAAS,IAClB2D,EAAO8yjB,OAASA,EAAO3qjB,KAAK,MAI5BkxiB,EAAK0B,WACP/6iB,EAAOwskB,IAAMnzB,EAAK0B,UAMd0xB,EAAazskB,EACd,EAAL,IAAkBtG,OAAOgB,KAAK+xkB,GAA9B,eAAWzukB,EAAgC,UACjBqF,IAApBopkB,EAAWzukB,WACNyukB,EAAWzukB,GAlDjB,iBAuDuBq7iB,EAAK+S,oBAvD5B,eAuDCC,EAvDD,OAwDCqgB,EAAwBrgB,EAAa,WACnC2f,GADmC,YACD3ukB,mBAAmBgvjB,IACzD,GA1DC,4BA6DKsgB,GAAetzB,GA7DpB,aA6D6Bp9hB,EAAAA,EAAAA,IAAYwwjB,GAAYhskB,MACxD,IA9DG,OA+DDiskB,IA/DC,mEAkEP,SAASC,GAAT,GAAgD,IAAtBlxkB,EAAsB,EAAtBA,OACxB,OAAKA,EAAO6+iB,SAILD,EAAa5+iB,EA9FO,yBA2FlB,WAAP,OAAkBA,EAAOuujB,WAAzB,YAlGgB,kBAsGpB,CCzFA,IAAM4iB,GAA0B,oBAW1BC,GAAAA,WAAN,6BACmB,KAAaC,cAAqC,CAAC,EACnD,KAAOvD,QAAwC,CAAC,EAChD,KAAwBwD,yBAAkC,CAAC,EAEnE,KAAoBphB,qBAAG4P,GAyHhC,KAAmB7Q,oBAAGuc,GAEtB,KAAuB1c,wBAAGA,EAC3B,mFAxHC,WACElR,EACAvJ,EACAo8B,EACApQ,GAJF,qFAMEhiB,EACmC,QAAjC,EAAAp+iB,KAAKoxkB,cAAczzB,EAAKtoiB,eAAS3a,IAAAA,OAAA,EAAAA,EAAAA,QACjC,gDARJ,SAWoB61kB,GAChB5yB,EACAvJ,EACAo8B,EACAnyB,IACA+hB,GAhBJ,cAWQv9jB,EAXR,yBAkBSitkB,GAAMnyB,EAAM96iB,EAAK89jB,OAlB1B,iLAqBA,WACEhjB,EACAvJ,EACAo8B,EACApQ,GAJF,sFAMQpgkB,KAAKoqkB,kBAAkBzsB,GAN/B,uBAOoB4yB,GAChB5yB,EACAvJ,EACAo8B,EACAnyB,IACA+hB,GAZJ,cAcEe,GAdF,0BAeS,IAAIxikB,SAAQ,WAAQ,KAf7B,sIAkBA,SAAYg/iB,GAAkB,WACtBr7iB,EAAMq7iB,EAAKtoiB,OACjB,GAAIrV,KAAKoxkB,cAAc9ukB,GAAM,CAC3B,MAA6BtC,KAAKoxkB,cAAc9ukB,GAAxCyjjB,EAAR,EAAQA,QAASzoiB,EAAjB,EAAiBA,QACjB,OAAIyoiB,EACKpnjB,QAAQC,QAAQmnjB,IAEvB3H,EAAY9giB,EAAS,4CACdA,EAEV,CAED,IAAMA,EAAUtd,KAAKsxkB,kBAAkB3zB,GASvC,OARA39iB,KAAKoxkB,cAAc9ukB,GAAO,CAAEgb,QAAAA,GAI5BA,EAAQC,OAAM,kBACL,EAAK6zjB,cAAc9ukB,EAC3B,IAEMgb,CACR,2EAEO,WAAwBqgiB,GAAxB,8FACegxB,GAAYhxB,GAD3B,cACAsxB,EADA,OAEAlpB,EAAU,IAAI0lB,GAAiB9tB,GACrCsxB,EAAOsC,SACL,aACA,SAACC,GAKC,OAJAxzB,EAAmB,OAAXwzB,QAAW,IAAXA,OAAW,EAAXA,EAAaC,UAAW9zB,EAAI,sBAI7B,CAAE/2iB,OADOm/iB,EAAQ2rB,QAAQF,EAAYC,WACD,MAAmB,QAC/D,GACD7D,KAAKC,QAAQkB,6BAGf/ukB,KAAKoxkB,cAAczzB,EAAKtoiB,QAAU,CAAE0wiB,QAAAA,GACpC/ljB,KAAK6tkB,QAAQlwB,EAAKtoiB,QAAU45jB,EAhBtB,kBAiBClpB,GAjBD,iJAoBR,SACEpI,EACAhhD,GAEe38f,KAAK6tkB,QAAQlwB,EAAKtoiB,QAC1BqpF,KACLwye,GACA,CAAE7rkB,KAAM6rkB,KACR,SAAA1tkB,SACQw8D,EAA4B,QAAd,EAAM,OAANx8D,QAAM,IAANA,OAAM,EAANA,EAAS,UAAK9I,IAAAA,OAAA,EAAAA,EAAAA,uBACdiN,IAAhBq4D,GACF28b,IAAK38b,GAGPs9e,EAAMK,EAAI,iBACX,GACDiwB,KAAKC,QAAQkB,4BAEhB,kCAED,SAAkBpxB,GAChB,IAAMr7iB,EAAMq7iB,EAAKtoiB,OAKjB,OAJKrV,KAAKqxkB,yBAAyB/ukB,KACjCtC,KAAKqxkB,yBAAyB/ukB,YLlJE,mCKkJKqvkB,CAAgBh0B,IAGhD39iB,KAAKqxkB,yBAAyB/ukB,EACtC,qCAED,WAEE,OAAO0njB,MAAsBN,MAAeG,IAC7C,OA5HGsnB,GA4IOS,GACXT,GChLoBU,GAAAA,WACpB,WAA+BC,IAAkB,eAAlB,KAAQA,SAARA,CAAsB,wCAErD,SACEn0B,EACA8pB,EACA/ujB,GAEA,OAAQ+ujB,EAAQpikB,MACd,IAAK,SACH,OAAOrF,KAAK+xkB,gBAAgBp0B,EAAM8pB,EAAQxP,WAAYv/iB,GACxD,IAAK,SACH,OAAO1Y,KAAKgykB,gBAAgBr0B,EAAM8pB,EAAQxP,YAC5C,QACE,OAAO/Z,EAAU,qCAEtB,OAhBmB2zB,GCaTI,GAAAA,SAAAA,iCAIX,WAAqCha,GAA+B,6BAClE,cAAK,UADwCA,WAAVA,EAA+B,CAEnE,+CAUD,SACEta,EACA+F,EACAhriB,GAEA,OlCqCY,SACdiliB,EACA92iB,GAEA,OAAOy4iB,EAIL3B,EAGA,6CAAAyB,EAAmBzB,EAAM92iB,GAE5B,CkClDUqrkB,CAAuBv0B,EAAM,CAClC+F,QAAAA,EACAhriB,YAAAA,EACAy5jB,sBAAuBnykB,KAAKi4jB,WAAWrC,4BAE1C,gCAGD,SACEjY,EACAoqB,GAEA,OrB2BY,SACdpqB,EACA92iB,GAEA,OAAOy4iB,EAIL3B,EAGA,yCAAAyB,EAAmBzB,EAAM92iB,GAE5B,CqBxCUurkB,CAAuBz0B,EAAM,CAClCoqB,qBAAAA,EACAoK,sBAAuBnykB,KAAKi4jB,WAAWrC,4BAE1C,kCA5BD,SACEqC,GAEA,OAAO,IAAIga,EAA8Bha,EAC1C,OAbUga,CACHJ,KA4CGQ,WACX,4BAAwB,8CAYxB,SAAiBpa,GACf,OAAOga,GAA8BK,gBAAgBra,EACtD,OAfUoa,IAoBK,UAAG,YC1DRE,GAAAA,kGAWX,SACEllF,EACAmlF,GAEA,OAAOC,GAA6BC,YAAYrlF,EAAQmlF,EACzD,mCAWD,SACEG,EACAH,GAEA,OAAOC,GAA6BG,kBAClCD,EACAH,EAEH,wEAWD,WACE/K,GADF,uFAIEzpB,EACmC,qBAAX,QAAf,GAFH60B,EAAapL,GAEClmB,YAAI7mjB,IAAAA,OAAA,EAAAA,EAAEijjB,MAAoB,kBALhD,SnCqCAA,EmC7B4Ck1B,EAAWtxB,KAAK5D,KnC8B5D92iB,EmC9BkE,CAC9D68iB,QAASmvB,EAAW5a,WACpB6a,mBAAoB,CAAC,GnC8BlBxzB,EAIL3B,EAGA,0CAAAyB,EAAmBzB,EAAM92iB,ImC/C3B,cAQQP,EARR,yBAYSyskB,GAAWC,oCAChB1skB,EACAuskB,EAAWtxB,KAAK5D,OAdpB,iCnCoCc,IACdA,EACA92iB,CmCtCA,qEA9CW0rkB,GAmEJA,GAAAA,UAAkC,WAG9BE,GAAAA,SAAAA,iCAIX,WACWQ,EACAN,EACAtlF,GAAmB,6BAE5B,cAAK,SAJO4lF,IAAHA,EACA,EAAYN,aAAZA,EACA,EAAMtlF,OAANA,EAAmB,CAG7B,wFAmBD,WACEswD,EACA+F,EACAhriB,GAHF,6EAKEsliB,EACyB,qBAAhBh+iB,KAAKqtf,OACZswD,EAAI,kBAPR,kBAUSugB,GAAsBvgB,EAAM,CACjC+F,QAAAA,EACAhriB,YAAAA,EACAw6jB,qBAAsBlzkB,KAAKqtf,OAAO8lF,0BAA0BnzkB,KAAKizkB,QAbrE,iLAkBA,WACEt1B,EACAoqB,GAFF,mFAIE/pB,OACwBr2iB,IAAtB3H,KAAK2ykB,mBAA2ChrkB,IAAb3H,KAAKizkB,IACxCt1B,EAAI,kBAGAu1B,EAAuB,CAAEld,iBAAkBh2jB,KAAKizkB,KATxD,kBAUS/O,GAAsBvmB,EAAM,CACjCoqB,qBAAAA,EACAH,gBAAiB5nkB,KAAK2ykB,aACtBO,qBAAAA,KAbJ,oIAlCA,SACE7lF,EACA4lF,GAEA,OAAO,IAAIR,EAA6BQ,OAAKtrkB,EAAW0lf,EACzD,kCAGD,SACEslF,EACAM,GAEA,OAAO,IAAIR,EAA6BQ,EAAKN,EAC9C,OA1BUF,CACHZ,IAuEGkB,GAAAA,WAwBX,WACEK,EACAC,EACAC,EACAC,EACAC,EACiBvd,EACAtY,IAAkB,eADlB,KAAWsY,YAAXA,EACA,KAAItY,KAAJA,EAEjB39iB,KAAKozkB,UAAYA,EACjBpzkB,KAAKqzkB,iBAAmBA,EACxBrzkB,KAAKszkB,WAAaA,EAClBtzkB,KAAKuzkB,oBAAsBA,EAC3BvzkB,KAAKwzkB,6BAA+BA,CACrC,yDAmBD,SAA0BP,GACxB,MAAO,CAAEhd,YAAaj2jB,KAAKi2jB,YAAaD,iBAAkBid,EAC3D,kCAYD,SAAkBQ,EAAsBC,SAClCC,GAAc,EAYlB,OAXIC,GAAeH,IAAgBG,GAAeF,MAChDC,GAAc,GAEZA,IACEC,GAAeH,KACjBA,GAAqC,QAAvB,EAAAzzkB,KAAK29iB,KAAK+E,mBAAahojB,IAAAA,OAAA,EAAAA,EAAAA,QAAS,eAE5Ck5kB,GAAeF,KACjBA,EAAS1zkB,KAAK29iB,KAAKvkjB,OAGhB,kBAAP,OAAyBs6kB,EAAzB,YAAmCD,EAAnC,mBAAyDzzkB,KAAKozkB,UAA9D,mBAAkFM,EAAlF,sBAAsG1zkB,KAAKqzkB,iBAA3G,mBAAsIrzkB,KAAKszkB,WAC5I,sDA5CD,SACEhtkB,EACAq3iB,GAEA,OAAO,IAAIo1B,EACTzskB,EAASutkB,gBAAgBC,gBACzBxtkB,EAASutkB,gBAAgBR,iBACzB/skB,EAASutkB,gBAAgBE,uBACzBztkB,EAASutkB,gBAAgBG,UACzB,IAAIlxkB,KAAKwD,EAASutkB,gBAAgBI,wBAAwBlxkB,cAC1DuD,EAASutkB,gBAAgB5d,YACzBtY,EAEH,OAtDUo1B,GAyFb,SAASa,GAAep5jB,GACtB,MAAwB,qBAAVA,GAA2C,KAAlB,OAAAA,QAAK,IAALA,OAAK,EAALA,EAAO7Z,OAChD,oCCtPauzkB,GAAAA,WAIX,WAA6Bv2B,IAAkB,eAAlB,KAAIA,KAAJA,EAHZ,KAAAw2B,kBACf,IAAIj7kB,GAE6C,sCAEnD,iBAEE,OADA8G,KAAKo0kB,wBACyB,QAAvB,EAAAp0kB,KAAK29iB,KAAK+E,mBAAahojB,IAAAA,OAAA,EAAAA,EAAAA,MAAO,IACtC,kEAED,WACE8mjB,GADF,mFAGExhjB,KAAKo0kB,uBAHP,SAIQp0kB,KAAK29iB,KAAKsP,uBAJlB,UAKOjtjB,KAAK29iB,KAAK+E,YALjB,yCAMW,MANX,uBAS4B1ijB,KAAK29iB,KAAK+E,YAAYhB,WAAWF,GAT7D,cASQ2D,EATR,yBAUS,CAAEA,YAAAA,IAVX,yIAaA,SAAqB3kjB,GAEnB,GADAR,KAAKo0kB,wBACDp0kB,KAAKm0kB,kBAAkBx6kB,IAAI6G,GAA/B,CAIA,IAAM62J,EAAcr3J,KAAK29iB,KAAKmgB,kBAAiB,SAAAvc,GAC7C/gjB,GAC+B,OAA5B+gjB,QAAA,IAAAA,OAAA,EAAAA,EAA8ByB,gBAAgBmC,cAAe,KAEjE,IACDnljB,KAAKm0kB,kBAAkBh7kB,IAAIqH,EAAU62J,GACrCr3J,KAAKq0kB,wBARJ,CASF,wCAED,SAAwB7zkB,GACtBR,KAAKo0kB,uBACL,IAAM/8a,EAAcr3J,KAAKm0kB,kBAAkBv6kB,IAAI4G,GAC1C62J,IAILr3J,KAAKm0kB,kBAAkBtukB,OAAOrF,GAC9B62J,IACAr3J,KAAKq0kB,yBACN,qCAEO,WACNr2B,EACEh+iB,KAAK29iB,KAAKsP,uBAAsB,wCAGnC,uCAEO,WACFjtjB,KAAKm0kB,kBAAkBtmkB,KAAO,EAChC7N,KAAK29iB,KAAKuS,yBAEVlwjB,KAAK29iB,KAAKwS,uBAEb,OAhEU+jB,GCKb,ICuB6BhqB,GDtBvBoqB,IACJl3jB,EAAAA,EAAAA,IAAuB,sBAFQ,IAI7Bm3jB,GAA+C,KAE7CC,GAAoB,SAAC3xkB,GAAD,gDAAiB,WAAO0+iB,GAAP,wFACnBA,GADmB,qCACJA,EAAKgF,mBADD,6BACnCkuB,EADmC,QAEnCC,EACJD,KACC,IAAI3xkB,MAAO4yD,UAAY5yD,KAAK6J,MAAM8nkB,EAAcryB,eAAiB,MAClDsyB,EAAaJ,IALU,oDASnC5wB,EAAuB,OAAb+wB,QAAA,IAAAA,OAAA,EAAAA,EAAenpkB,MAC3BipkB,KAAsB7wB,EAVe,0DAazC6wB,GAAoB7wB,EAbqB,UAcnCr9iB,MAAMxD,EAAK,CACfuC,OAAQs+iB,EAAU,OAAS,SAC3B9/iB,QAAS8/iB,EACL,CACE,cAAiB,UAAjB,OAA2BA,IAE7B,CAAC,IApBkC,4CAAjB,uDAgCV,SAAAixB,KAAmC,IAA3B1/B,EAA2B,wDAARuB,EAAAA,EAAAA,MACnCpC,GAAWiB,EAAAA,EAAAA,IAAaJ,EAAK,QAEnC,GAAIb,EAASh0Y,gBACX,OAAOg0Y,EAASG,eAGlB,IAAMoJ,EAAOqU,GAAe/c,EAAK,CAC/B0Y,sBAAuBikB,GACvB7pB,YAAa,CACXic,GACArE,GACAE,MAIE+U,GAAmBx3jB,EAAAA,EAAAA,IAAuB,oBAChD,GAAIw3jB,EAAkB,CACpB,IAAMC,EAAaL,GAAkBI,GACrC7W,GAAuBpgB,EAAMk3B,GAAY,kBACvCA,EAAWl3B,EAAK+E,YADuB,IAGzCob,GAAiBngB,GAAM,SAAA4D,GAAI,OAAIszB,EAAWtzB,EAAf,GAC5B,CAED,IAAMuzB,GAAmB73jB,EAAAA,EAAAA,IAAuB,QAKhD,OAJI63jB,GACF3iB,GAAoBxU,EAAD,iBAAiBm3B,IAG/Bn3B,CACR,CC9C4BuM,GDgDhB,WC/CX9U,EAAAA,EAAAA,IACE,IAAI/ihB,EAAAA,GAAS,QAEX,SAAC9qB,EAAD,GAA6D,IAAtC60gB,EAAsC,EAA/Ch/gB,QACN63iB,EAAM1tiB,EAAUguiB,YAAY,OAAOhB,eACnC6X,EACJ7kjB,EAAUguiB,YAAyB,aAC/B8W,EACJ9kjB,EAAUguiB,YAAkC,sBAC9C,EAA+BN,EAAI73iB,QAA3BqijB,EAAR,EAAQA,OAAQ6O,EAAhB,EAAgBA,WAEhBtQ,EACEyB,IAAWA,EAAOl6iB,SAAS,KAE3B,mBAAEsviB,QAASI,EAAI77iB,OAGjB,IAAM2G,EAAyB,CAC7B0/iB,OAAAA,EACA6O,WAAAA,EACApE,eAAAA,GACArK,QAA+B,iCAC/BqF,aAA0C,6BAC1CvE,UAAmC,QACnC+M,iBAAkBzD,GAAkBC,KAGhC6qB,EAAe,IAAI5oB,GACvBlX,EACAmX,EACAC,EACAtsjB,GAIF,O5EvBQ,SACd49iB,EACAvhC,GAEA,IAAM2rC,GAAc,OAAA3rC,QAAA,IAAAA,OAAA,EAAAA,EAAM2rC,cAAe,GACnCitB,GACJnwkB,MAAMC,QAAQijjB,GAAeA,EAAc,CAACA,IAC5ChkjB,IAAyBwjjB,KACvB,OAAAnrC,QAAI,IAAJA,OAAI,EAAJA,EAAMwhC,WACRD,EAAKs3B,gBAAgB74D,EAAKwhC,UAM5BD,EAAKu3B,2BAA2BF,EAAW,OAAA54D,QAAA,IAAAA,OAAA,EAAAA,EAAMuxC,sBACnD,C4EKQwnB,CAAwBJ,EAAc34D,GAE/B24D,CACR,GAEF,UAKEK,qBAAgD,YAKhDC,4BACC,SAAC9tkB,EAAW+tkB,EAAqBlpiB,GACF7kC,EAAUguiB,YAAW,iBAG7B2c,YACtB,MAIP9c,EAAAA,EAAAA,IACE,IAAI/ihB,EAAAA,GAEF,0BAAA9qB,GAIE,OAAQ,SAAAo2iB,GAAI,OAAI,IAAIu2B,GAAYv2B,EAApB,CAAJ,CAHKkT,GACXtpjB,EAAUguiB,YAAW,QAAsBhB,gBAG9C,GAEF,WAAC6gC,qBAAoB,cAGxB3+B,EAAAA,EAAAA,IAAgBr9iB,GAAMm7E,GA1FxB,SACE21e,GAEA,OAAQA,GACN,IAAK,OACH,MAAO,OACT,IAAK,cACH,MAAO,KACT,IAAK,SACH,MAAO,YACT,IAAK,UACH,MAAO,UACT,QACE,OAEL,CA2EgCqrB,CAAsBrrB,MAErDzT,EAAAA,EAAAA,IAAgBr9iB,GAAMm7E,GAAS,aClI7BihgB,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqB/tkB,IAAjBgukB,EACH,OAAOA,EAAazyjB,QAGrB,IAAIqB,EAASixjB,EAAyBE,GAAY,CACjD33jB,GAAI23jB,EACJE,QAAQ,EACR1yjB,QAAS,CAAC,GAUX,OANA2yjB,EAAoBH,GAAUj3kB,KAAK8lB,EAAOrB,QAASqB,EAAQA,EAAOrB,QAASuyjB,GAG3ElxjB,EAAOqxjB,QAAS,EAGTrxjB,EAAOrB,OACf,CAGAuyjB,EAAoBv4kB,EAAI24kB,EC5BxBJ,EAAoBK,KAAO,CAAC,ECC5BL,EAAoBxxjB,EAAI,SAASM,GAChC,IAAIqwC,EAASrwC,GAAUA,EAAOk/gB,WAC7B,WAAa,OAAOl/gB,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAkxjB,EAAoBjyjB,EAAEoxC,EAAQ,CAAE70C,EAAG60C,IAC5BA,CACR,aCPA,IACImhhB,EADAtnC,EAAWzwiB,OAAOolD,eAAiB,SAASjuC,GAAO,OAAOnX,OAAOolD,eAAejuC,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAIs0B,SAAW,EAQpIgsiB,EAAoBtxjB,EAAI,SAASjmB,EAAOopB,GAEvC,GADU,EAAPA,IAAUppB,EAAQ8B,KAAK9B,IAChB,EAAPopB,EAAU,OAAOppB,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPopB,GAAappB,EAAMuliB,WAAY,OAAOvliB,EAC1C,GAAW,GAAPopB,GAAoC,oBAAfppB,EAAMJ,KAAqB,OAAOI,CAC5D,CACA,IAAIooD,EAAKtoD,OAAOwS,OAAO,MACvBilkB,EAAoBpxjB,EAAEiiC,GACtB,IAAI0vhB,EAAM,CAAC,EACXD,EAAiBA,GAAkB,CAAC,KAAMtnC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAIh1hB,EAAiB,EAAP6N,GAAYppB,EAAyB,iBAAXub,KAAyBs8jB,EAAe30kB,QAAQqY,GAAUA,EAAUg1hB,EAASh1hB,GACxHzb,OAAO09C,oBAAoBjiC,GAAS/Y,SAAQ,SAAS4B,GAAO0zkB,EAAI1zkB,GAAO,WAAa,OAAOpE,EAAMoE,EAAM,CAAG,IAI3G,OAFA0zkB,EAAa,QAAI,WAAa,OAAO93kB,CAAO,EAC5Cu3kB,EAAoBjyjB,EAAE8iC,EAAI0vhB,GACnB1vhB,CACR,KCxBAmvhB,EAAoBjyjB,EAAI,SAASN,EAASwW,GACzC,IAAI,IAAIp3B,KAAOo3B,EACX+7iB,EAAoB/0c,EAAEhnG,EAAYp3B,KAASmzkB,EAAoB/0c,EAAEx9G,EAAS5gB,IAC5EtE,OAAOC,eAAeilB,EAAS5gB,EAAK,CAAEmhB,YAAY,EAAM7pB,IAAK8/B,EAAWp3B,IAG3E,ECPAmzkB,EAAoB3xjB,EAAI,CAAC,EAGzB2xjB,EAAoBxskB,EAAI,SAASgtkB,GAChC,OAAOt3kB,QAAQ0nI,IAAIroI,OAAOgB,KAAKy2kB,EAAoB3xjB,GAAG3f,QAAO,SAASk5J,EAAU/6J,GAE/E,OADAmzkB,EAAoB3xjB,EAAExhB,GAAK2zkB,EAAS54a,GAC7BA,CACR,GAAG,IACJ,ECPAo4a,EAAoB75jB,EAAI,SAASq6jB,GAEhC,MAAO,aAAeA,EAAU,IAAM,CAAC,IAAM,WAAW,IAAM,YAAYA,GAAW,WACtF,ECHAR,EAAoBS,SAAW,SAASD,GAGxC,ECJAR,EAAoB1xjB,EAAI,WACvB,GAA0B,kBAAfhqB,WAAyB,OAAOA,WAC3C,IACC,OAAOiG,MAAQ,IAAI21c,SAAS,cAAb,EAGhB,CAFE,MAAO1sc,GACR,GAAsB,kBAAXhP,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBw7kB,EAAoB/0c,EAAI,SAASvrH,EAAKtY,GAAQ,OAAOmB,OAAOgK,UAAU6X,eAAephB,KAAK0W,EAAKtY,EAAO,aCAtG,IAAIkoR,EAAa,CAAC,EACdoxT,EAAoB,YAExBV,EAAoBzxjB,EAAI,SAASnhB,EAAK+rD,EAAMtsD,EAAK2zkB,GAChD,GAAGlxT,EAAWliR,GAAQkiR,EAAWliR,GAAKzC,KAAKwuD,OAA3C,CACA,IAAI0sC,EAAQ86e,EACZ,QAAWzukB,IAARrF,EAEF,IADA,IAAI+zkB,EAAUn0kB,SAAS0iE,qBAAqB,UACpCj8D,EAAI,EAAGA,EAAI0tkB,EAAQ11kB,OAAQgI,IAAK,CACvC,IAAI4vB,EAAI89iB,EAAQ1tkB,GAChB,GAAG4vB,EAAElpB,aAAa,QAAUxM,GAAO01B,EAAElpB,aAAa,iBAAmB8mkB,EAAoB7zkB,EAAK,CAAEg5F,EAAS/iE,EAAG,KAAO,CACpH,CAEG+iE,IACH86e,GAAa,GACb96e,EAASp5F,SAASmG,cAAc,WAEzB0ojB,QAAU,QACjBz1d,EAAOv0D,QAAU,IACb0uiB,EAAoBa,IACvBh7e,EAAOhzF,aAAa,QAASmtkB,EAAoBa,IAElDh7e,EAAOhzF,aAAa,eAAgB6tkB,EAAoB7zkB,GACxDg5F,EAAOr5B,IAAMp/D,GAEdkiR,EAAWliR,GAAO,CAAC+rD,GACnB,IAAI2nhB,EAAmB,SAASrrkB,EAAMnK,GAErCu6F,EAAO73F,QAAU63F,EAAOh4F,OAAS,KACjCgyB,aAAayR,GACb,IAAIyviB,EAAUzxT,EAAWliR,GAIzB,UAHOkiR,EAAWliR,GAClBy4F,EAAOlyF,YAAckyF,EAAOlyF,WAAWC,YAAYiyF,GACnDk7e,GAAWA,EAAQ91kB,SAAQ,SAAS3C,GAAM,OAAOA,EAAGgD,EAAQ,IACzDmK,EAAM,OAAOA,EAAKnK,EACtB,EAEIgmC,EAAUxR,WAAWghjB,EAAiBz5kB,KAAK,UAAM6K,EAAW,CAAEtC,KAAM,UAAWsS,OAAQ2jF,IAAW,MACtGA,EAAO73F,QAAU8ykB,EAAiBz5kB,KAAK,KAAMw+F,EAAO73F,SACpD63F,EAAOh4F,OAASizkB,EAAiBz5kB,KAAK,KAAMw+F,EAAOh4F,QACnD8ykB,GAAcl0kB,SAASoN,KAAK/G,YAAY+yF,EApCkB,CAqC3D,KCxCAm6e,EAAoBpxjB,EAAI,SAASnB,GACX,qBAAXU,QAA0BA,OAAOm4b,aAC1C/9c,OAAOC,eAAeilB,EAASU,OAAOm4b,YAAa,CAAE79c,MAAO,WAE7DF,OAAOC,eAAeilB,EAAS,aAAc,CAAEhlB,OAAO,GACvD,ECNAu3kB,EAAoBgB,IAAM,SAASlyjB,GAGlC,OAFAA,EAAO08b,MAAQ,GACV18b,EAAOxZ,WAAUwZ,EAAOxZ,SAAW,IACjCwZ,CACR,ECJAkxjB,EAAoB53kB,EAAI,eCKxB,IAAI64kB,EAAkB,CACrB,IAAK,GAGNjB,EAAoB3xjB,EAAEhW,EAAI,SAASmokB,EAAS54a,GAE1C,IAAIs5a,EAAqBlB,EAAoB/0c,EAAEg2c,EAAiBT,GAAWS,EAAgBT,QAAWtukB,EACtG,GAA0B,IAAvBgvkB,EAGF,GAAGA,EACFt5a,EAASj9J,KAAKu2kB,EAAmB,QAC3B,CAGL,IAAIr5jB,EAAU,IAAI3e,SAAQ,SAASC,EAASY,GAAUm3kB,EAAqBD,EAAgBT,GAAW,CAACr3kB,EAASY,EAAS,IACzH69J,EAASj9J,KAAKu2kB,EAAmB,GAAKr5jB,GAGtC,IAAIza,EAAM4ykB,EAAoB53kB,EAAI43kB,EAAoB75jB,EAAEq6jB,GAEpD52kB,EAAQ,IAAI9E,MAgBhBk7kB,EAAoBzxjB,EAAEnhB,GAfH,SAAS9B,GAC3B,GAAG00kB,EAAoB/0c,EAAEg2c,EAAiBT,KAEf,KAD1BU,EAAqBD,EAAgBT,MACRS,EAAgBT,QAAWtukB,GACrDgvkB,GAAoB,CACtB,IAAIC,EAAY71kB,IAAyB,SAAfA,EAAMsE,KAAkB,UAAYtE,EAAMsE,MAChEwxkB,EAAU91kB,GAASA,EAAM4W,QAAU5W,EAAM4W,OAAOsqD,IACpD5iE,EAAMjF,QAAU,iBAAmB67kB,EAAU,cAAgBW,EAAY,KAAOC,EAAU,IAC1Fx3kB,EAAMjG,KAAO,iBACbiG,EAAMgG,KAAOuxkB,EACbv3kB,EAAMwH,QAAUgwkB,EAChBF,EAAmB,GAAGt3kB,EACvB,CAEF,GACyC,SAAW42kB,EAASA,EAE/D,CAEH,EAaA,IAAIa,EAAuB,SAASC,EAA4Bz8kB,GAC/D,IAKIo7kB,EAAUO,EALVe,EAAW18kB,EAAK,GAChB28kB,EAAc38kB,EAAK,GACnBsjB,EAAUtjB,EAAK,GAGIqO,EAAI,EAC3B,GAAGqukB,EAAS7khB,MAAK,SAASp0C,GAAM,OAA+B,IAAxB24jB,EAAgB34jB,EAAW,IAAI,CACrE,IAAI23jB,KAAYuB,EACZxB,EAAoB/0c,EAAEu2c,EAAavB,KACrCD,EAAoBv4kB,EAAEw4kB,GAAYuB,EAAYvB,IAGhD,GAAG93jB,EAAsBA,EAAQ63jB,EAClC,CAEA,IADGsB,GAA4BA,EAA2Bz8kB,GACrDqO,EAAIqukB,EAASr2kB,OAAQgI,IACzBstkB,EAAUe,EAASrukB,GAChB8skB,EAAoB/0c,EAAEg2c,EAAiBT,IAAYS,EAAgBT,IACrES,EAAgBT,GAAS,KAE1BS,EAAgBT,GAAW,CAG7B,EAEIiB,EAAqBl9kB,KAA2B,qBAAIA,KAA2B,sBAAK,GACxFk9kB,EAAmBx2kB,QAAQo2kB,EAAqBh6kB,KAAK,KAAM,IAC3Do6kB,EAAmB92kB,KAAO02kB,EAAqBh6kB,KAAK,KAAMo6kB,EAAmB92kB,KAAKtD,KAAKo6kB,m5BChE1EC,GAAoBh+jB,EAAAA,EAAAA,eAC/B,UAYWi+jB,GAAkBj+jB,EAAAA,EAAAA,eAC7B,UAYWk+jB,GAAel+jB,EAAAA,EAAAA,eAAwC,CAClEm+jB,OAAQ,KACRxijB,QAAS,KChDJ,SAASyijB,EAAUt7G,EAAW7he,GACnC,IAAK6he,EAAM,MAAM,IAAI1he,MAAMH,EAC5B,CAuID,SAAgBo9kB,EACdC,EACAC,EACAC,QACqB,IADrBA,IAAAA,EAAW,KAEX,IAGIC,EAAWC,GAFU,kBAAhBH,EAA2BI,EAAUJ,GAAeA,GAEvBE,UAAY,IAAKD,GAEvD,GAAgB,MAAZC,EACF,OAAO,KAGT,IAAIG,EAAWC,EAAcP,IA6E/B,SAA2BM,GACzBA,EAAS3+iB,MAAK,SAACrZ,EAAGC,GAAJ,OACZD,EAAEy9d,QAAUx9d,EAAEw9d,MACVx9d,EAAEw9d,MAAQz9d,EAAEy9d,MAyCpB,SAAwBz9d,EAAaC,GACnC,IAAI0vD,EACF3vD,EAAEpf,SAAWqf,EAAErf,QAAUof,EAAEhb,MAAM,GAAI,GAAG8gC,OAAM,SAAC5hB,EAAGtb,GAAJ,OAAUsb,IAAMjE,EAAErX,EAAlB,IAEhD,OAAO+mE,EAKH3vD,EAAEA,EAAEpf,OAAS,GAAKqf,EAAEA,EAAErf,OAAS,GAG/B,CACL,CArDOs3kB,CACEl4jB,EAAEm4jB,WAAWn0kB,KAAKo6f,SAAAA,GAAD,OAAUA,EAAKg6E,aAAf,IACjBn4jB,EAAEk4jB,WAAWn0kB,KAAKo6f,SAAAA,GAAD,OAAUA,EAAKg6E,aAAf,IALX,GAQf,CArFCC,CAAkBL,GAGlB,IADA,IAAIjjjB,EAAU,KACLnsB,EAAI,EAAc,MAAXmsB,GAAmBnsB,EAAIovkB,EAASp3kB,SAAUgI,EACxDmsB,EAAUujjB,EAAiBN,EAASpvkB,GAAIivkB,GAG1C,OAAO9ijB,CACR,CAeD,SAASkjjB,EACPP,EACAM,EACAO,EACAC,GA8CA,YA7Ce,IAHfR,IAAAA,EAA0B,SAGX,IAFfO,IAAAA,EAA2B,SAEZ,IADfC,IAAAA,EAAa,IAEbd,EAAO/2kB,SAAQ,SAAC83kB,EAAOr3kB,GACrB,IAAIg9f,EAAkB,CACpBs6E,aAAcD,EAAM71kB,MAAQ,GAC5B8yD,eAAuC,IAAxB+ihB,EAAM/ihB,cACrB0ihB,cAAeh3kB,EACfq3kB,MAAAA,GAGEr6E,EAAKs6E,aAAa//hB,WAAW,OAE7Byld,EAAKs6E,aAAa//hB,WAAW6/hB,IAD/BhB,GAAU,GAOVp5E,EAAKs6E,aAAet6E,EAAKs6E,aAAa1zkB,MAAMwzkB,EAAW53kB,SAGzD,IAAIgC,EAAO+1kB,EAAU,CAACH,EAAYp6E,EAAKs6E,eACnCP,EAAaI,EAAYrokB,OAAOkuf,GAKhCq6E,EAAMztkB,UAAYytkB,EAAMztkB,SAASpK,OAAS,KAE1B,IAAhB63kB,EAAMr3kB,OADRo2kB,GAAU,GAMVS,EAAcQ,EAAMztkB,SAAUgtkB,EAAUG,EAAYv1kB,KAKpC,MAAd61kB,EAAM71kB,MAAiB61kB,EAAMr3kB,QAIjC42kB,EAAS33kB,KAAK,CAAEuC,KAAAA,EAAM66e,MAAOm7F,EAAah2kB,EAAM61kB,EAAMr3kB,OAAQ+2kB,WAAAA,GAzChE,IA4COH,CACR,CAaD,IAAMa,EAAU,SAMVC,EAAWtgjB,SAAAA,GAAD,MAAqB,MAANA,CAAf,EAEhB,SAASogjB,EAAah2kB,EAAcxB,GAClC,IAAI23kB,EAAWn2kB,EAAKN,MAAM,KACtB02kB,EAAeD,EAASn4kB,OAS5B,OARIm4kB,EAAS3mhB,KAAK0mhB,KAChBE,IAPiB,GAUf53kB,IACF43kB,GAdoB,GAiBfD,EACJt+iB,QAAQjC,SAAAA,GAAD,OAAQsgjB,EAAQtgjB,EAAhB,IACPp0B,QACC,SAACq5e,EAAOw7F,GAAR,OACEx7F,GACCo7F,EAAQxikB,KAAK4ikB,GAvBM,EAyBJ,KAAZA,EAvBc,EACC,GAkBrB,GAOAD,EAEL,CAiBD,SAASV,EACPY,EACArB,GAOA,IALA,IAAMM,EAAee,EAAff,WAEFgB,EAAgB,CAAC,EACjBC,EAAkB,IAClBrkjB,EAAwB,GACnBnsB,EAAI,EAAGA,EAAIuvkB,EAAWv3kB,SAAUgI,EAAG,CAC1C,IAAIw1f,EAAO+5E,EAAWvvkB,GAClBuB,EAAMvB,IAAMuvkB,EAAWv3kB,OAAS,EAChCy4kB,EACkB,MAApBD,EACIvB,EACAA,EAAS7ykB,MAAMo0kB,EAAgBx4kB,SAAW,IAC5CsO,EAAQoqkB,EACV,CAAE12kB,KAAMw7f,EAAKs6E,aAAchjhB,cAAe0oc,EAAK1oc,cAAevrD,IAAAA,GAC9DkvkB,GAGF,IAAKnqkB,EAAO,OAAO,KAEnBjR,OAAOmH,OAAO+zkB,EAAejqkB,EAAM3K,QAEnC,IAAIk0kB,EAAQr6E,EAAKq6E,MAEjB1jjB,EAAQ10B,KAAK,CACXkE,OAAQ40kB,EACRtB,SAAUc,EAAU,CAACS,EAAiBlqkB,EAAM2okB,WAC5C0B,aAAcC,EACZb,EAAU,CAACS,EAAiBlqkB,EAAMqqkB,gBAEpCd,MAAAA,IAGyB,MAAvBvpkB,EAAMqqkB,eACRH,EAAkBT,EAAU,CAACS,EAAiBlqkB,EAAMqqkB,eAEvD,CAED,OAAOxkjB,CACR,CAuDD,SAAgBukjB,EAId1vkB,EACAiukB,GAEuB,kBAAZjukB,IACTA,EAAU,CAAEhH,KAAMgH,EAAS8rD,eAAe,EAAOvrD,KAAK,IAGxD,MAwCF,SACEvH,EACA8yD,EACAvrD,QACoB,IAFpBurD,IAAAA,GAAgB,QAEI,IADpBvrD,IAAAA,GAAM,GAUN,IAAIsvkB,EAAuB,GACvBC,EACF,IACA92kB,EACGf,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,sBAAuB,QAC/BA,QAAQ,WAAW,SAAC9C,EAAWoxD,GAE9B,OADAsphB,EAAWp5kB,KAAK8vD,GACT,WANX,IASEvtD,EAAKmuT,SAAS,MAChB0oR,EAAWp5kB,KAAK,KAChBq5kB,GACW,MAAT92kB,GAAyB,OAATA,EACZ,QACA,qBAEN82kB,GAAgBvvkB,EACZ,QAOA,uCAKN,MAAO,CAFO,IAAI0tB,OAAO6hjB,EAAchkhB,OAAgB9tD,EAAY,KAElD6xkB,EAClB,CAtF6BE,CAC1B/vkB,EAAQhH,KACRgH,EAAQ8rD,cACR9rD,EAAQO,KAHV,eAAKm1e,EAAL,KAAcm6F,EAAd,KAMIvqkB,EAAQ2okB,EAAS3okB,MAAMowe,GAC3B,IAAKpwe,EAAO,OAAO,KAEnB,IAAIkqkB,EAAkBlqkB,EAAM,GACxBqqkB,EAAeH,EAAgBv3kB,QAAQ,UAAW,MAClD+3kB,EAAgB1qkB,EAAMlK,MAAM,GAqBhC,MAAO,CACLT,OArBmBk1kB,EAAWr1kB,QAC9B,SAAC0hiB,EAAM31e,EAAW/uD,GAGhB,GAAkB,MAAd+uD,EAAmB,CACrB,IAAI0phB,EAAaD,EAAcx4kB,IAAU,GACzCm4kB,EAAeH,EACZp0kB,MAAM,EAAGo0kB,EAAgBx4kB,OAASi5kB,EAAWj5kB,QAC7CiB,QAAQ,UAAW,KACvB,CAMD,OAJAikiB,EAAK31e,GAiEX,SAAkChyD,EAAegyD,GAC/C,IACE,OAAOruD,mBAAmB3D,EAU3B,CATC,MAAOmB,GAQP,OAAOnB,CACR,CACF,CA9EuB27kB,CAChBF,EAAcx4kB,IAAU,IAGnB0kiB,CAfU,GAiBnB,CAAC,GAKD+xC,SAAUuB,EACVG,aAAAA,EACA3vkB,QAAAA,EAEH,CA0GD,SAAgBmwkB,EACdC,EACAC,EACAC,GAEA,IAUIzwkB,EAVAguG,EAAsB,kBAAVuie,EAAqBjC,EAAUiC,GAASA,EACpDG,EAAuB,KAAVH,GAAgC,KAAhBvie,EAAGoge,SAAkB,IAAMpge,EAAGoge,SAU/D,GAAkB,MAAdsC,EACF1wkB,EAAOywkB,MACF,CACL,IAAIE,EAAqBH,EAAer5kB,OAAS,EAEjD,GAAIu5kB,EAAWxhiB,WAAW,MAAO,CAM/B,IALA,IAAI0hiB,EAAaF,EAAW73kB,MAAM,KAKT,OAAlB+3kB,EAAW,IAChBA,EAAWlijB,QACXiijB,GAAsB,EAGxB3ie,EAAGoge,SAAWwC,EAAW3tkB,KAAK,IAd3B,CAmBLjD,EAAO2wkB,GAAsB,EAAIH,EAAeG,GAAsB,GACvE,CAED,IAAIx3kB,EA5EN,SAA4B60G,EAAQ6ie,QAA0B,IAA1BA,IAAAA,EAAe,KACjD,MAIkB,kBAAP7ie,EAAkBsge,EAAUtge,GAAMA,EAHjC0ie,EADZ,EACEtC,SADF,IAEE9tkB,OAAAA,OAFF,MAEW,GAFX,MAGE+E,KAAAA,OAHF,MAGS,GAHT,EAMI+okB,EAAWsC,EACXA,EAAWxhiB,WAAW,KACpBwhiB,EAWR,SAAyBzB,EAAsB4B,GAC7C,IAAIvB,EAAWuB,EAAaz4kB,QAAQ,OAAQ,IAAIS,MAAM,KAYtD,OAXuBo2kB,EAAap2kB,MAAM,KAEzB3B,SAASs4kB,SAAAA,GACR,OAAZA,EAEEF,EAASn4kB,OAAS,GAAGm4kB,EAASlrhB,MACb,MAAZorhB,GACTF,EAAS14kB,KAAK44kB,EALlB,IASOF,EAASn4kB,OAAS,EAAIm4kB,EAASrskB,KAAK,KAAO,GACnD,CAxBO6tkB,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACLzC,SAAAA,EACA9tkB,OAAQywkB,EAAgBzwkB,GACxB+E,KAAM2rkB,EAAc3rkB,GAEvB,CA0DY4rkB,CAAYjje,EAAIhuG,GAY3B,OARE0wkB,GACe,MAAfA,GACAA,EAAWppR,SAAS,OACnBnuT,EAAKi1kB,SAAS9mR,SAAS,OAExBnuT,EAAKi1kB,UAAY,KAGZj1kB,CACR,CAWD,SAAgBk1kB,EACdD,EACAD,GAEA,GAAiB,MAAbA,EAAkB,OAAOC,EAE7B,IAAKA,EAASpjkB,cAAckkC,WAAWi/hB,EAASnjkB,eAC9C,OAAO,KAGT,IAAI0rG,EAAW03d,EAAS37jB,OAAO07jB,EAASh3kB,QACxC,OAAIu/G,GAAyB,MAAbA,EAEP,KAGF03d,EAAS7ykB,MAAM4ykB,EAASh3kB,SAAW,GAC3C,CAED,IAAa+3kB,EAAaz3H,SAAAA,GAAD,OACvBA,EAAMx0c,KAAK,KAAK7K,QAAQ,SAAU,IADX,EAGZ23kB,EAAqB3B,SAAAA,GAAD,OAC/BA,EAASh2kB,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,IADd,EAG3B24kB,EAAmBzwkB,SAAAA,GAAD,OACrBA,GAAqB,MAAXA,EAEPA,EAAO4uC,WAAW,KAClB5uC,EACA,IAAMA,EAHN,EAFkB,EAOlB0wkB,EAAiB3rkB,SAAAA,GAAD,OACnBA,GAAiB,MAATA,EAAoBA,EAAK6pC,WAAW,KAAO7pC,EAAO,IAAMA,EAAzC,EADJ,EChmBtB,SAAgB6rkB,EAAQlje,GAEpBmje,KADFpD,GAAU,GAOV,OAA8Bp+jB,EAAAA,EAAAA,YAAiBg+jB,GAAzCQ,EAAN,EAAMA,SAAUl6jB,EAAhB,EAAgBA,UAChB,EAAiCm9jB,EAAgBpje,GAA3C3oG,EAAN,EAAMA,KAAM+okB,EAAZ,EAAYA,SAAU9tkB,EAAtB,EAAsBA,OAElB+wkB,EAAiBjD,EACrB,GAAiB,MAAbD,EAAkB,CACpB,IAAIuC,ED0iBR,SAA8B1ie,GAE5B,MAAc,KAAPA,GAAuC,KAAzBA,EAAYoge,SAC7B,IACc,kBAAPpge,EACPsge,EAAUtge,GAAIoge,SACdpge,EAAGoge,QACR,CCjjBoBkD,CAActje,GAC3Buje,EAA8B,MAAdb,GAAsBA,EAAWppR,SAAS,KAC9D+pR,EACe,MAAbjD,EACID,GAAYoD,EAAgB,IAAM,IAClCrC,EAAU,CAACf,EAAUC,GAC5B,CAED,OAAOn6jB,EAAUu9jB,WAAW,CAAEpD,SAAUiD,EAAgB/wkB,OAAAA,EAAQ+E,KAAAA,GACjE,CAOD,SAAgB8rkB,IACd,OAA4C,OAArCxhkB,EAAAA,EAAAA,YAAiBi+jB,EACzB,CAYD,SAAgB6D,IAQd,OANEN,KADFpD,GAAU,IAOHp+jB,EAAAA,EAAAA,YAAiBi+jB,GAAiBzkjB,QAC1C,CAwDD,SAAgBuojB,IAEZP,KADFpD,GAAU,GAOV,OAA8Bp+jB,EAAAA,EAAAA,YAAiBg+jB,GAAzCQ,EAAN,EAAMA,SAAUl6jB,EAAhB,EAAgBA,UACVqX,GAAY3b,EAAAA,EAAAA,YAAiBk+jB,GAA7BvijB,QACUmljB,EAAqBgB,IAA/BrD,SAEFuD,EAAqBr1kB,KAAKC,UAC5B+uB,EAAQ/wB,KAAKkL,SAAAA,GAAD,OAAWA,EAAMqqkB,YAAjB,KAGV8B,GAAYjikB,EAAAA,EAAAA,SAAa,GAsC7B,OArCAA,EAAAA,EAAAA,YAAgB,WACdiikB,EAAU3hkB,SAAU,CADtB,KAIiCN,EAAAA,EAAAA,cAC/B,SAACq+F,EAAiBp6G,GAOhB,QAPkD,IAAlCA,IAAAA,EAA2B,CAAC,GAOvCg+kB,EAAU3hkB,QAEf,GAAkB,kBAAP+9F,EAAX,CAKA,IAAI70G,EAAOm3kB,EACTtie,EACA1xG,KAAK6G,MAAMwukB,GACXlB,GAGe,MAAbtC,IACFh1kB,EAAKi1kB,SAAWc,EAAU,CAACf,EAAUh1kB,EAAKi1kB,aAGzCx6kB,EAAQwE,QAAU6b,EAAU7b,QAAU6b,EAAUrd,MACjDuC,EACAvF,EAAQsrC,MAdT,MAFCjrB,EAAU49jB,GAAG7je,EAXc,GA8B/B,CAACmge,EAAUl6jB,EAAW09jB,EAAoBlB,GAI7C,CAED,IAAMqB,GAAgBnikB,EAAAA,EAAAA,eAA6B,MAgDnD,SAAgByhkB,EAAgBpje,GAC9B,IAAM1iF,GAAY3b,EAAAA,EAAAA,YAAiBk+jB,GAA7BvijB,QACUmljB,EAAqBgB,IAA/BrD,SAEFuD,EAAqBr1kB,KAAKC,UAC5B+uB,EAAQ/wB,KAAKkL,SAAAA,GAAD,OAAWA,EAAMqqkB,YAAjB,KAGd,OAAOngkB,EAAAA,EAAAA,UACL,kBAAM2gkB,EAAUtie,EAAI1xG,KAAK6G,MAAMwukB,GAAqBlB,EAApD,GACA,CAACzie,EAAI2je,EAAoBlB,GAE5B,CAyHD,SAAgBsB,EACdzmjB,EACA0mjB,GAEA,YAD2B,IAD3BA,IAAAA,EAA8B,IAEf,MAAX1mjB,EAAwB,KAErBA,EAAQ+9X,aAAY,SAACykL,EAAQrokB,EAAO9N,GACzC,OACEs6kB,EAAAA,EAAAA,eAACpE,EAAaxmkB,SAAd4qkB,CACE1wkB,cAC0BpD,IAAxBsH,EAAMupkB,MAAMhskB,QAAwByC,EAAMupkB,MAAMhskB,QAAU8qkB,EAE5Dp5kB,MAAO,CACLo5kB,OAAAA,EACAxijB,QAAS0mjB,EAAcvrkB,OAAO6kB,EAAQ/vB,MAAM,EAAG5D,EAAQ,MARxD,GAYJ,KACJ,CC/RD,SAAgBu6kB,EAAO5wkB,GACrB,ODuGF,SAA0Bq7C,GACxB,IAAImxhB,GAASn+jB,EAAAA,EAAAA,YAAiBk+jB,GAAcC,OAC5C,OAAIA,GAEAmE,EAAAA,EAAAA,eAACH,EAAczqkB,SAAf4qkB,CAAwBv9kB,MAAOioD,GAAUmxhB,GAGtCA,CACR,CC/GQqE,CAAU7wkB,EAAMq7C,QACxB,CAiCD,SAAgBy1hB,EACd5lZ,GAEAuhZ,GAAU,EAKX,CAoBD,SAAgBsE,EAAT/1b,GAOoC,QANzC6xb,SAAUmE,OAM+B,MANhB,IAMgB,MALzC/wkB,SAAAA,OAKyC,MAL9B,KAK8B,EAJ/BgxkB,EAI+B,EAJzCppjB,SAIyC,IAHzCqpjB,eAAAA,OAGyC,MAHxBC,EAAAA,IAGwB,EAFzCx+jB,EAEyC,EAFzCA,UAEyC,IADzCq2N,OAAQooW,OACiC,SAEtCvB,KADHpD,GAAU,GAMV,IAAII,EAAW4B,EAAkBuC,GAC7BK,GAAoBhjkB,EAAAA,EAAAA,UACtB,iBAAO,CAAEw+jB,SAAAA,EAAUl6jB,UAAAA,EAAWq2N,OAAQooW,EAAtC,GACA,CAACvE,EAAUl6jB,EAAWy+jB,IAGI,kBAAjBH,IACTA,EAAejE,EAAUiE,IAG3B,MAMIA,EANJ,IACEnE,SAAAA,OADF,MACa,IADb,MAEE9tkB,OAAAA,OAFF,MAEW,GAFX,MAGE+E,KAAAA,OAHF,MAGS,GAHT,MAIE65B,MAAAA,OAJF,MAIU,KAJV,MAKEpmC,IAAAA,OALF,MAKQ,UALR,EAQIqwB,GAAWxZ,EAAAA,EAAAA,UAAc,WAC3B,IAAIijkB,EAAmBvE,EAAcD,EAAUD,GAE/C,OAAwB,MAApByE,EACK,KAGF,CACLxE,SAAUwE,EACVtykB,OAAAA,EACA+E,KAAAA,EACA65B,MAAAA,EACApmC,IAAAA,EAZW,GAcZ,CAACq1kB,EAAUC,EAAU9tkB,EAAQ+E,EAAM65B,EAAOpmC,IAS7C,OAAgB,MAAZqwB,EACK,MAIP8ojB,EAAAA,EAAAA,eAACtE,EAAkBtmkB,SAAnB4qkB,CAA4Bv9kB,MAAOi+kB,IACjCV,EAAAA,EAAAA,eAACrE,EAAgBvmkB,SAAjB4qkB,CACE1wkB,SAAUA,EACV7M,MAAO,CAAEy0B,SAAAA,EAAUqpjB,eAAAA,KAI1B,CAaD,SAAgBK,EAAT91b,GAGoC,IAFzCx7I,EAEyC,EAFzCA,SACA4nB,EACyC,EADzCA,SAEA,ODUF,SACE8kjB,EACAC,GAGEiD,KADFpD,GAAU,GAOV,IA4CI5kjB,EA5CW6ojB,GAAkBrikB,EAAAA,EAAAA,YAAiBk+jB,GAA5CvijB,QACFwnjB,EAAad,EAAcA,EAAc76kB,OAAS,GAClD47kB,EAAeD,EAAaA,EAAWh4kB,OAAS,CAAC,EAEjDk4kB,GADiBF,GAAaA,EAAW1E,SACpB0E,EAAaA,EAAWhD,aAAe,KAsC5DmD,GArCcH,GAAcA,EAAW9D,MAqCjByC,KAG1B,GAAIvD,EAAa,OACXgF,EACqB,kBAAhBhF,EAA2BI,EAAUJ,GAAeA,EAGpC,MAAvB8E,IAAA,OAAAA,EACEE,EAAkB9E,eADpB,EACE+E,EAA4BjkiB,WAAW8jiB,KAF3CjF,GAAU,GASV5kjB,EAAW+pjB,CAbb,MAeE/pjB,EAAW8pjB,EAGb,IAAI7E,EAAWjljB,EAASiljB,UAAY,IAKhC9ijB,EAAU0ijB,EAAYC,EAAQ,CAAEG,SAHX,MAAvB4E,EACI5E,EACAA,EAAS7ykB,MAAMy3kB,EAAmB77kB,SAAW,MAiBnD,OAAO46kB,EACLzmjB,GACEA,EAAQ/wB,KAAKkL,SAAAA,GAAD,OACVjR,OAAOmH,OAAO,CAAC,EAAG8J,EAAO,CACvB3K,OAAQtG,OAAOmH,OAAO,CAAC,EAAGo3kB,EAActtkB,EAAM3K,QAC9CszkB,SAAUc,EAAU,CAAC8D,EAAoBvtkB,EAAM2okB,WAC/C0B,aACyB,MAAvBrqkB,EAAMqqkB,aACFkD,EACA9D,EAAU,CAAC8D,EAAoBvtkB,EAAMqqkB,gBAPnC,IAUdkC,EAEH,CCvHQoB,CAAUC,EAAyB9xkB,GAAW4nB,EACtD,CAaD,SAAgBkqjB,EACd9xkB,GAEA,IAAI0skB,EAAwB,GAuC5B,OArCAt+jB,EAAAA,SAAAA,QAAuBpO,GAAWyB,SAAAA,GAChC,IAAK2M,EAAAA,EAAAA,gBAAqB3M,GAM1B,GAAIA,EAAQnH,OAAS8T,EAAAA,SAArB,CAUE3M,EAAQnH,OAASu2kB,GADnBrE,GAAU,GAOV,IAAIiB,EAAqB,CACvB/ihB,cAAejpD,EAAQ1B,MAAM2qD,cAC7BjpD,QAASA,EAAQ1B,MAAM0B,QACvBrL,MAAOqL,EAAQ1B,MAAM3J,MACrBwB,KAAM6J,EAAQ1B,MAAMnI,MAGlB6J,EAAQ1B,MAAMC,WAChBytkB,EAAMztkB,SAAW8xkB,EAAyBrwkB,EAAQ1B,MAAMC,WAG1D0skB,EAAOr3kB,KAAKo4kB,EApBX,MALCf,EAAOr3kB,KAAK2X,MACV0/jB,EACAoF,EAAyBrwkB,EAAQ1B,MAAMC,UAX7C,IAqCO0skB,CACR,0ZCvKM,SAASqF,EAAT,GAIgB,IAHrBnF,EAGqB,EAHrBA,SACA5skB,EAEqB,EAFrBA,SACA9Q,EACqB,EADrBA,OAEI8ilB,GAAa5jkB,EAAAA,EAAAA,UACS,MAAtB4jkB,EAAWtjkB,UACbsjkB,EAAWtjkB,skDAAUujkB,CAAqB,CAAE/ilB,OAAAA,KAG9C,IAAIgjlB,EAAUF,EAAWtjkB,QACzB,GAAwBN,EAAAA,EAAAA,UAAe,CACrC0M,OAAQo3jB,EAAQp3jB,OAChB8M,SAAUsqjB,EAAQtqjB,WAFpB,eAAK+V,EAAL,KAAYgR,EAAZ,KAOA,OAFAvgC,EAAAA,EAAAA,kBAAsB,kBAAM8jkB,EAAQv0hB,OAAOhP,EAArB,GAAgC,CAACujiB,KAGrDxB,EAAAA,EAAAA,eAACI,EAADJ,CACE9D,SAAUA,EACV5skB,SAAUA,EACV4nB,SAAU+V,EAAM/V,SAChBqpjB,eAAgBtziB,EAAM7iB,OACtBpI,UAAWw/jB,GAGhB,KAyFYC,GAAO/jkB,EAAAA,EAAAA,aAClB,WAEElI,GACA,IAFEqsK,EAEF,EAFEA,QAAS6/Z,EAEX,EAFWA,eAEX,IAF2Bv7kB,QAAAA,OAE3B,SAF4C8mC,EAE5C,EAF4CA,MAAO/wB,EAEnD,EAFmDA,OAAQ6/F,EAE3D,EAF2DA,GAAOo1I,EAElE,OACI/wJ,EAAO6+e,EAAQlje,GACf4le,EAwHD,SACL5le,EADK,GAW6C,iBAD9C,CAAC,EAC6C,EARhD7/F,EAQgD,EARhDA,OACS0lkB,EAOuC,EAPhDz7kB,QACA8mC,EAMgD,EANhDA,MAOE40iB,EAAWpC,IACXvojB,EAAWsojB,IACXt4kB,EAAOi4kB,EAAgBpje,GAE3B,OAAOr+F,EAAAA,EAAAA,cACJpY,SAAAA,GACC,GACmB,IAAjBA,EAAMmqB,UACJvT,GAAqB,UAAXA,KAjKpB,SAAyB5W,GACvB,SAAUA,EAAMwzB,SAAWxzB,EAAMyzB,QAAUzzB,EAAM0zB,SAAW1zB,EAAMmxJ,SACnE,CAgKQqrb,CAAgBx8kB,GACjB,CACAA,EAAMo7D,iBAIN,IAAIv6D,IACAy7kB,GAAeG,EAAW7qjB,KAAc6qjB,EAAW76kB,GAEvD26kB,EAAS9le,EAAI,CAAE51G,QAAAA,EAAS8mC,MAAAA,GACzB,CAfE,GAiBL,CAAC/V,EAAU2qjB,EAAU36kB,EAAM06kB,EAAa30iB,EAAO/wB,EAAQ6/F,GAE1D,CA3JyBime,CAAoBjme,EAAI,CAAE51G,QAAAA,EAAS8mC,MAAAA,EAAO/wB,OAAAA,IAUhE,OAEEtP,EAAAA,EAAAA,eAAAA,IAAAA,EAAAA,CAAAA,EACMukP,EADN,CAEE/wJ,KAAMA,EACNyhF,QAdJ,SACEv8K,GAEIu8K,GAASA,EAAQv8K,GAChBA,EAAMmiE,kBAAqBi6gB,GAC9BC,EAAgBr8kB,EAEnB,EAQGkQ,IAAKA,EACL0G,OAAQA,IAvBI,4BCrQL,SAAS+lkB,EAAuB5nkB,EAASC,GAItD,OAHKA,IACHA,EAAMD,EAAQ/Q,MAAM,IAEf/G,OAAO8iM,OAAO9iM,OAAO00f,iBAAiB58e,EAAS,CACpDC,IAAK,CACH7X,MAAOF,OAAO8iM,OAAO/qL,MAG3B,oGCCA,GATwB,SAAA4nkB,GAOtB,QALIA,EAAY,EACD,QAAU,KAAV,IAAUA,EAAa,GAEvB,IAAMp0kB,KAAKiqD,IAAImqhB,EAAY,GAAK,GAE1B,KAAKhljB,QAAQ,EACnC,wBCPM,SAASiljB,GAAqBzujB,GACnC,OAAOC,EAAAA,GAAAA,GAAqB,WAAYD,EACzC,EACoBE,EAAAA,GAAAA,GAAuB,WAAY,CAAC,OAAQ,UAAW,WAAY,YAAa,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,aAAc,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,cAAe,gBAAnc,cCHMjK,GAAY,CAAC,YAAa,YAAa,YAAa,SAAU,WAyB9Dy4jB,IAAY/ujB,EAAAA,GAAAA,IAAO,MAAO,CAC9B11B,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAOmf,EAAW0J,UAAW1J,EAAWsujB,QAAUztkB,EAAO0tkB,QAAgC,cAAvBvujB,EAAW0J,SAA2B7oB,EAAO,YAAD,OAAamf,EAAWmujB,YAC5J,GARe7ujB,EASf,YAGG,IACAkvjB,EAHJ3lkB,EAEI,EAFJA,MACAmX,EACI,EADJA,WAGA,OAAOzW,EAAAA,EAAAA,GAAS,CACdooB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ3B,WAAWC,MAC1DgD,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK2e,QAC1CwL,WAAYzY,EAAMwV,YAAYrd,OAAO,gBACnCgf,EAAWsujB,QAAU,CACvBlhjB,aAAcvkB,EAAM+kB,MAAMR,cACF,aAAvBpN,EAAW0J,SAA0B,CACtCyG,OAAQ,aAAF,QAAgBtnB,EAAM2V,MAAQ3V,GAAOgP,QAAQ5B,UAC3B,cAAvB+J,EAAW0J,UAA2BngB,EAAAA,EAAAA,GAAS,CAChD8rB,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQoB,EAAWmujB,aAClDtlkB,EAAM2V,MAA+B,SAAvB3V,EAAMgP,QAAQC,MAAmB,CACjD22jB,gBAAiB,mBAAF,QAAqBlljB,EAAAA,GAAAA,IAAM,OAAQmljB,GAAgB1ujB,EAAWmujB,YAA9D,cAA8E5kjB,EAAAA,GAAAA,IAAM,OAAQmljB,GAAgB1ujB,EAAWmujB,YAAvH,MACdtlkB,EAAM2V,MAAQ,CACfiwjB,gBAAiE,OAA/CD,EAAuB3lkB,EAAM2V,KAAKmwjB,eAAoB,EAASH,EAAqBxujB,EAAWmujB,aAEpH,IAuFD,GAtF2BxkkB,EAAAA,YAAiB,SAAegY,EAASlgB,GAClE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,aAGJ+e,EAKErN,EALFqN,UADJ,EAMMrN,EAJFsmB,UAAAA,OAFJ,MAEgB,MAFhB,IAMMtmB,EAHF6ykB,UAAAA,OAHJ,MAGgB,EAHhB,IAMM7ykB,EAFFgzkB,OAAAA,OAJJ,WAMMhzkB,EADFouB,QAAAA,OALJ,MAKc,YALd,EAOE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACAusjB,UAAAA,EACAG,OAAAA,EACA5kjB,QAAAA,IAEIvH,EA7DkB,SAAAnC,GACxB,IACEsujB,EAIEtujB,EAJFsujB,OACAH,EAGEnujB,EAHFmujB,UACAzkjB,EAEE1J,EAFF0J,QACAvH,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAQsuB,GAAU4kjB,GAAU,UAAuB,cAAZ5kjB,GAAA,mBAAuCykjB,KAEvF,OAAO9rjB,EAAAA,GAAAA,GAAeD,EAAOgsjB,GAAsBjsjB,EACpD,CAkDiBG,CAAkBtC,GAQlC,OAAoB2C,EAAAA,GAAAA,KAAK0rjB,IAAW9kkB,EAAAA,EAAAA,GAAS,CAC3Cb,GAAIkZ,EACJ5B,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,GACJ,ICxFM,SAAS42jB,GAAsBjvjB,GACpC,OAAOC,EAAAA,GAAAA,GAAqB,YAAaD,EAC1C,EACqBE,EAAAA,GAAAA,GAAuB,YAAa,CAAC,OAAQ,gBAAiB,mBAAoB,iBAAkB,iBAAkB,mBAAoB,eAAgB,eAAgB,iBAAkB,eAAgB,qBAAlO,ICHMjK,GAAY,CAAC,YAAa,QAAS,oBAAqB,YAyBxDi5jB,GAAW,SAACC,EAAMC,GAAP,OAAgBD,EAAO,GAAH,OAAc,MAARA,OAAe,EAASA,EAAK18kB,QAAQ,IAAK,IAAhD,aAAwD28kB,EAAxD,KAAkEA,CAAtF,EACXC,IAAa1vjB,EAAAA,GAAAA,IAAO2vjB,GAAO,CAC/BrllB,KAAM,YACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAO,WAAD,QAAY4e,EAAAA,GAAAA,GAAWO,EAAWhlB,YAAc6F,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWO,EAAW7G,SACjH,GARgBmG,EAShB,YAGG,IAFJzW,EAEI,EAFJA,MACAmX,EACI,EADJA,WAEMkvjB,EAAgD,UAAvBrmkB,EAAMgP,QAAQC,KAAmBjP,EAAMgP,QAAQ8B,KAAK,KAAO9Q,EAAMgP,QAAQ8B,KAAK,KAC7G,OAAOpQ,EAAAA,EAAAA,GAAS,CACd6X,QAAS,OACT8S,cAAe,SACf/S,MAAO,OACPmU,UAAW,aAEX7yB,WAAY,GACa,UAAxBud,EAAWhlB,UAAwB,CACpCA,SAAU,QACV+I,QAAS8E,EAAM2V,MAAQ3V,GAAO9E,OAAO8Z,OACrCoX,IAAK,EACLG,KAAM,OACNF,MAAO,EACP,eAAgB,CAEdl6B,SAAU,aAEa,aAAxBglB,EAAWhlB,UAA2B,CACvCA,SAAU,WACV+I,QAAS8E,EAAM2V,MAAQ3V,GAAO9E,OAAO8Z,OACrCoX,IAAK,EACLG,KAAM,OACNF,MAAO,GACkB,WAAxBlV,EAAWhlB,UAAyB,CAErCA,SAAU,SACV+I,QAAS8E,EAAM2V,MAAQ3V,GAAO9E,OAAO8Z,OACrCoX,IAAK,EACLG,KAAM,OACNF,MAAO,GACkB,WAAxBlV,EAAWhlB,UAAyB,CACrCA,SAAU,UACe,aAAxBglB,EAAWhlB,UAA2B,CACvCA,SAAU,aACR6N,EAAM2V,OAAQjV,EAAAA,EAAAA,GAAS,CAAC,EAAwB,YAArByW,EAAW7G,OAAuB,CAC/DwY,gBAAiBu9iB,EACjB/1jB,MAAOtQ,EAAMgP,QAAQmB,gBAAgBk2jB,IACpClvjB,EAAW7G,OAA8B,YAArB6G,EAAW7G,OAA4C,YAArB6G,EAAW7G,OAA4C,gBAArB6G,EAAW7G,OAA2B,CAC/HwY,gBAAiB9oB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KACjDyB,MAAOtQ,EAAMgP,QAAQmI,EAAW7G,OAAOK,cACjB,YAArBwG,EAAW7G,OAAuB,CACnCA,MAAO,WACiB,SAAvBtQ,EAAMgP,QAAQC,OAAoBkI,EAAWmvjB,mBAAqB,CACnEx9iB,gBAAiB,KACjBxY,MAAO,MACe,gBAArB6G,EAAW7G,QAA2B5P,EAAAA,EAAAA,GAAS,CAChDooB,gBAAiB,cACjBxY,MAAO,WACiB,SAAvBtQ,EAAMgP,QAAQC,MAAmB,CAClC22jB,gBAAiB,UACd5lkB,EAAM2V,OAAQjV,EAAAA,EAAAA,GAAS,CAAC,EAAwB,YAArByW,EAAW7G,OAAuB,CAChE,sBAAuB6G,EAAWmvjB,kBAAoBtmkB,EAAM2V,KAAK3G,QAAQu3jB,OAAOC,UAAYR,GAAShmkB,EAAM2V,KAAK3G,QAAQu3jB,OAAOE,OAAQzmkB,EAAM2V,KAAK3G,QAAQu3jB,OAAOC,WACjK,iBAAkBrvjB,EAAWmvjB,kBAAoBtmkB,EAAM2V,KAAK3G,QAAQ1gB,KAAK2e,QAAU+4jB,GAAShmkB,EAAM2V,KAAK3G,QAAQu3jB,OAAOG,UAAW1mkB,EAAM2V,KAAK3G,QAAQ1gB,KAAK2e,UACxJkK,EAAW7G,QAAU6G,EAAW7G,MAAM1Z,MAAM,oCAAsC,CACnF,sBAAuBugB,EAAWmvjB,kBAAoBtmkB,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOzB,KAAOm3jB,GAAShmkB,EAAM2V,KAAK3G,QAAQu3jB,OAAOE,OAAQzmkB,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOzB,MAClL,iBAAkBsI,EAAWmvjB,kBAAoBtmkB,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOK,aAAeq1jB,GAAShmkB,EAAM2V,KAAK3G,QAAQu3jB,OAAOG,UAAW1mkB,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOK,eACvL,CACDmY,gBAAiB,2BACjBxY,MAA4B,YAArB6G,EAAW7G,MAAsB,UAAY,uBAC9B,gBAArB6G,EAAW7G,OAA2B,CACvCs1jB,gBAAiB,OACjB98iB,gBAAiB,cACjBxY,MAAO,YAEV,IAqED,GApE4BxP,EAAAA,YAAiB,SAAgBgY,EAASlgB,GACpE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,cAGJ+e,EAIErN,EAJFqN,UADJ,EAKMrN,EAHF6d,MAAAA,OAFJ,MAEY,UAFZ,IAKM7d,EAFF6zkB,kBAAAA,OAHJ,WAKM7zkB,EADFN,SAAAA,OAJJ,MAIe,QAJf,EAMEgd,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAne,SAAAA,EACAm0kB,kBAAAA,IAEIhtjB,EA/GkB,SAAAnC,GACxB,IACE7G,EAGE6G,EAHF7G,MACAne,EAEEglB,EAFFhlB,SACAmnB,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAD,gBAAiBqkB,EAAAA,GAAAA,GAAWtG,IAA5B,mBAAiDsG,EAAAA,GAAAA,GAAWzkB,MAEpE,OAAOqnB,EAAAA,GAAAA,GAAeD,EAAOwsjB,GAAuBzsjB,EACrD,CAqGiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKqsjB,IAAYzlkB,EAAAA,EAAAA,GAAS,CAC5C+kkB,QAAQ,EACR1sjB,UAAW,SACX5B,WAAYA,EACZmujB,UAAW,EACXxlkB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,EAAwB,UAAb3N,GAAwB,aACjEyG,IAAKA,GACJuW,GACJ,qCCnIKpC,GAAY,CAAC,MAmBJ,SAAS45jB,GAAal0kB,GAC7B,IAQFm0kB,EAPIC,EACFp0kB,EADF4jB,GAGJ,EArBiB,SAAA5jB,GACjB,IAAIq0kB,EAAuBv+iB,EACrBp9B,EAAS,CACb47kB,YAAa,CAAC,EACdC,WAAY,CAAC,GAETt/kB,EAA8I,OAApIo/kB,EAAiC,MAATr0kB,GAAyD,OAA/B81B,EAAe91B,EAAMuN,YAA/B,EAAyDuoB,EAAatS,mBAA6B6wjB,EAAwB5wjB,GAAAA,EAQnL,OAPAvwB,OAAOgB,KAAK8L,GAAOpK,SAAQ,SAAA7D,GACrBkD,EAAOlD,GACT2G,EAAO47kB,YAAYvilB,GAAQiO,EAAMjO,GAEjC2G,EAAO67kB,WAAWxilB,GAAQiO,EAAMjO,EAEnC,IACM2G,CACR,CASK87kB,EAJM73jB,EAAAA,EAAAA,GAA8B3c,EAAOsa,KAE7Cg6jB,EADF,EACEA,YACAC,EAFF,EAEEA,WAgBF,OAZEJ,EADEp6kB,MAAMC,QAAQo6kB,GACN,CAACE,GAAJ,gBAAoBF,IACF,oBAATA,EACN,WACR,IAAM17kB,EAAS07kB,EAAI,WAAJ,aACf,OAAK93iB,EAAAA,GAAAA,GAAc5jC,IAGZuV,EAAAA,EAAAA,GAAS,CAAC,EAAGqmkB,EAAa57kB,GAFxB47kB,CAGV,GAESrmkB,EAAAA,EAAAA,GAAS,CAAC,EAAGqmkB,EAAaF,IAE/BnmkB,EAAAA,EAAAA,GAAS,CAAC,EAAGsmkB,EAAY,CAC9B3wjB,GAAIuwjB,GAEP,CC7CM,SAASM,GAA0BpwjB,GACxC,OAAOC,EAAAA,GAAAA,GAAqB,gBAAiBD,EAC9C,EACyBE,EAAAA,GAAAA,GAAuB,gBAAiB,CAAC,OAAQ,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,YAAa,YAAa,QAAS,QAAS,UAAW,SAAU,UAAW,WAAY,YAAa,aAAc,cAAe,eAAgB,SAAU,eAAgB,cAA3R,ICHMjK,GAAY,CAAC,QAAS,YAAa,YAAa,eAAgB,SAAU,YAAa,UAAW,kBAyB3Fo6jB,IAAiB1wjB,EAAAA,GAAAA,IAAO,OAAQ,CAC3C11B,KAAM,gBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAM4kB,EAAW0J,SAAW7oB,EAAOmf,EAAW0J,SAA+B,YAArB1J,EAAW68K,OAAuBh8L,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWO,EAAW68K,SAAW78K,EAAWiwjB,QAAUpvkB,EAAOovkB,OAAQjwjB,EAAWkwjB,cAAgBrvkB,EAAOqvkB,aAAclwjB,EAAWmwjB,WAAatvkB,EAAOsvkB,UAC7Q,GAR2B7wjB,EAS3B,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbimB,OAAQ,GACPxP,EAAW0J,SAAW7gB,EAAMmR,WAAWgG,EAAW0J,SAA+B,YAArB1J,EAAW68K,OAAuB,CAC/FrnK,UAAWxV,EAAW68K,OACrB78K,EAAWiwjB,QAAU,CACtBp8iB,SAAU,SACVC,aAAc,WACdE,WAAY,UACXhU,EAAWkwjB,cAAgB,CAC5B98iB,aAAc,UACbpT,EAAWmwjB,WAAa,CACzB/8iB,aAAc,IAdb,IAgBGg9iB,GAAwB,CAC5Bp1jB,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,UAAW,KACXC,UAAW,KACXC,MAAO,IACPC,MAAO,IACPI,QAAS,KAILw0jB,GAAuB,CAC3Bv6jB,QAAS,eACTw6jB,YAAa,eACbv6jB,UAAW,iBACXw6jB,cAAe,iBACf1glB,MAAO,cAwHT,GAnHgC8Z,EAAAA,YAAiB,SAAoBgY,EAASlgB,GAC5E,IAAM+ukB,GAAajxjB,EAAAA,GAAAA,GAAc,CAC/BjkB,MAAOqmB,EACP/3B,KAAM,kBAEFuvB,EAR0B,SAAAA,GAChC,OAAOk3jB,GAAqBl3jB,IAAUA,CACvC,CAMes3jB,CAA0BD,EAAWr3jB,OAC7C7d,EAAQk0kB,IAAajmkB,EAAAA,EAAAA,GAAS,CAAC,EAAGinkB,EAAY,CAClDr3jB,MAAAA,KAEF,EASM7d,EARFuhM,MAAAA,OADJ,MACY,UADZ,EAEIl0L,EAOErN,EAPFqN,UACAiZ,EAMEtmB,EANFsmB,UAHJ,EASMtmB,EALF40kB,aAAAA,OAJJ,WASM50kB,EAJF20kB,OAAAA,OALJ,WASM30kB,EAHF60kB,UAAAA,OANJ,WASM70kB,EAFFouB,QAAAA,OAPJ,MAOc,QAPd,IASMpuB,EADFo1kB,eAAAA,OARJ,MAQqBN,GARrB,EAUEp4jB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCuhM,MAAAA,EACA1jL,MAAAA,EACAxQ,UAAAA,EACAiZ,UAAAA,EACAsujB,aAAAA,EACAD,OAAAA,EACAE,UAAAA,EACAzmjB,QAAAA,EACAgnjB,eAAAA,IAEI7tjB,EAAYjB,IAAcuujB,EAAY,IAAMO,EAAehnjB,IAAY0mjB,GAAsB1mjB,KAAa,OAC1GvH,EAhGkB,SAAAnC,GACxB,IACE68K,EAME78K,EANF68K,MACAqzY,EAKElwjB,EALFkwjB,aACAD,EAIEjwjB,EAJFiwjB,OACAE,EAGEnwjB,EAHFmwjB,UACAzmjB,EAEE1J,EAFF0J,QACAvH,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAQsuB,EAA8B,YAArB1J,EAAW68K,OAAX,gBAA0Cp9K,EAAAA,GAAAA,GAAWo9K,IAAUqzY,GAAgB,eAAgBD,GAAU,SAAUE,GAAa,cAE1J,OAAO9tjB,EAAAA,GAAAA,GAAeD,EAAO2tjB,GAA2B5tjB,EACzD,CAmFiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKqtjB,IAAgBzmkB,EAAAA,EAAAA,GAAS,CAChDb,GAAIma,EACJphB,IAAKA,EACLue,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,IAC7BqP,GACJ,eCjHc,SAAS24jB,GAAgB3zkB,GACtC,MAA0B,kBAAZA,CACf,CCWc,SAAS4zkB,GAAiBzyF,EAAa0xF,EAAY7vjB,GAChE,YAAoB7nB,IAAhBgmf,GAA6BwyF,GAAgBxyF,GACxC0xF,GAEFtmkB,EAAAA,EAAAA,GAAS,CAAC,EAAGsmkB,EAAY,CAC9B7vjB,YAAYzW,EAAAA,EAAAA,GAAS,CAAC,EAAGsmkB,EAAW7vjB,WAAYA,IAEnD,0BCpBc,SAASyW,KAMtB,OALco6iB,EAAAA,GAAAA,GAAe1xjB,GAAAA,EAM9B,2BCVD,IACY,ECAZ,GAAexV,EAAAA,cAAoB,MCQxBmnkB,GAAY,YACZC,GAAS,SACTC,GAAW,WACXC,GAAU,UACVC,GAAU,UA6FjBC,GAA0B,SAAUC,GAGtC,SAASD,EAAW71kB,EAAOq7C,GACzB,IAAIp/C,EAEJA,EAAQ65kB,EAAiBnilB,KAAKuB,KAAM8K,EAAOq7C,IAAYnmD,KACvD,IAGI6glB,EADAC,EAFc36hB,MAEuB46hB,WAAaj2kB,EAAMq5I,MAAQr5I,EAAMg2kB,OAuB1E,OArBA/5kB,EAAMi6kB,aAAe,KAEjBl2kB,EAAMm2kB,GACJH,GACFD,EAAgBN,GAChBx5kB,EAAMi6kB,aAAeR,IAErBK,EAAgBJ,GAIhBI,EADE/1kB,EAAMo2kB,eAAiBp2kB,EAAMq2kB,aACfb,GAEAC,GAIpBx5kB,EAAM2hC,MAAQ,CACZ9hC,OAAQi6kB,GAEV95kB,EAAMq6kB,aAAe,KACdr6kB,CACR,EAhCD6khB,EAAAA,GAAAA,GAAe+0D,EAAYC,GAkC3BD,EAAWlma,yBAA2B,SAAkCzjK,EAAMqqkB,GAG5E,OAFarqkB,EAAKiqkB,IAEJI,EAAUz6kB,SAAW05kB,GAC1B,CACL15kB,OAAQ25kB,IAIL,IACR,EAkBD,IAAIx4kB,EAAS44kB,EAAW34kB,UAkPxB,OAhPAD,EAAOyjC,kBAAoB,WACzBxrC,KAAKshlB,cAAa,EAAMthlB,KAAKghlB,aAC9B,EAEDj5kB,EAAO8jC,mBAAqB,SAA4BC,GACtD,IAAIy1iB,EAAa,KAEjB,GAAIz1iB,IAAc9rC,KAAK8K,MAAO,CAC5B,IAAIlE,EAAS5G,KAAK0oC,MAAM9hC,OAEpB5G,KAAK8K,MAAMm2kB,GACTr6kB,IAAW45kB,IAAY55kB,IAAW65kB,KACpCc,EAAaf,IAGX55kB,IAAW45kB,IAAY55kB,IAAW65kB,KACpCc,EAAab,GAGlB,CAED1glB,KAAKshlB,cAAa,EAAOC,EAC1B,EAEDx5kB,EAAOokC,qBAAuB,WAC5BnsC,KAAKwhlB,oBACN,EAEDz5kB,EAAO05kB,YAAc,WACnB,IACIC,EAAMv9b,EAAO28b,EADb/5iB,EAAU/mC,KAAK8K,MAAMi8B,QAWzB,OATA26iB,EAAOv9b,EAAQ28b,EAAS/5iB,EAET,MAAXA,GAAsC,kBAAZA,IAC5B26iB,EAAO36iB,EAAQ26iB,KACfv9b,EAAQp9G,EAAQo9G,MAEhB28b,OAA4Bn5kB,IAAnBo/B,EAAQ+5iB,OAAuB/5iB,EAAQ+5iB,OAAS38b,GAGpD,CACLu9b,KAAMA,EACNv9b,MAAOA,EACP28b,OAAQA,EAEX,EAED/4kB,EAAOu5kB,aAAe,SAAsB1ga,EAAU2ga,GAKpD,QAJiB,IAAb3ga,IACFA,GAAW,GAGM,OAAf2ga,EAIF,GAFAvhlB,KAAKwhlB,qBAEDD,IAAef,GAAU,CAC3B,GAAIxglB,KAAK8K,MAAMo2kB,eAAiBlhlB,KAAK8K,MAAMq2kB,aAAc,CACvD,IAAIx2kB,EAAO3K,KAAK8K,MAAM62kB,QAAU3hlB,KAAK8K,MAAM62kB,QAAQlokB,QAAUo/B,GAAAA,YAAqB74C,MAI9E2K,GCzOW,SAAqBA,GACrCA,EAAKyjM,SACb,CDuOmBwzY,CAAYj3kB,EACvB,CAED3K,KAAK6hlB,aAAajha,EACnB,MACC5gL,KAAK8hlB,mBAEE9hlB,KAAK8K,MAAMo2kB,eAAiBlhlB,KAAK0oC,MAAM9hC,SAAW25kB,IAC3DvglB,KAAK05C,SAAS,CACZ9yC,OAAQ05kB,IAGb,EAEDv4kB,EAAO85kB,aAAe,SAAsBjha,GAC1C,IAAI6hC,EAASziN,KAETmkJ,EAAQnkJ,KAAK8K,MAAMq5I,MACnB49b,EAAY/hlB,KAAKmmD,QAAUnmD,KAAKmmD,QAAQ46hB,WAAanga,EAErDlc,EAAQ1kK,KAAK8K,MAAM62kB,QAAU,CAACI,GAAa,CAAClpiB,GAAAA,YAAqB74C,MAAO+hlB,GACxEC,EAAYt9a,EAAM,GAClBu9a,EAAiBv9a,EAAM,GAEvBw9a,EAAWlilB,KAAKyhlB,cAChBU,EAAeJ,EAAYG,EAASpB,OAASoB,EAAS/9b,OAGrDy8B,IAAaz8B,GAASpkJ,GACzBC,KAAKoilB,aAAa,CAChBx7kB,OAAQ65kB,KACP,WACDh+X,EAAO33M,MAAMu3kB,UAAUL,EACxB,KAIHhilB,KAAK8K,MAAMw3kB,QAAQN,EAAWC,GAC9BjilB,KAAKoilB,aAAa,CAChBx7kB,OAAQ45kB,KACP,WACD/9X,EAAO33M,MAAMy3kB,WAAWP,EAAWC,GAEnCx/X,EAAO+/X,gBAAgBL,GAAc,WACnC1/X,EAAO2/X,aAAa,CAClBx7kB,OAAQ65kB,KACP,WACDh+X,EAAO33M,MAAMu3kB,UAAUL,EAAWC,EACnC,GACF,GACF,IACF,EAEDl6kB,EAAO+5kB,YAAc,WACnB,IAAIz+X,EAASrjN,KAET0hlB,EAAO1hlB,KAAK8K,MAAM42kB,KAClBQ,EAAWlilB,KAAKyhlB,cAChBO,EAAYhilB,KAAK8K,MAAM62kB,aAAUh6kB,EAAYkxC,GAAAA,YAAqB74C,MAEjE0hlB,IAAQ3hlB,IASbC,KAAK8K,MAAM23kB,OAAOT,GAClBhilB,KAAKoilB,aAAa,CAChBx7kB,OAAQ85kB,KACP,WACDr9X,EAAOv4M,MAAM43kB,UAAUV,GAEvB3+X,EAAOm/X,gBAAgBN,EAASR,MAAM,WACpCr+X,EAAO++X,aAAa,CAClBx7kB,OAAQ25kB,KACP,WACDl9X,EAAOv4M,MAAM63kB,SAASX,EACvB,GACF,GACF,KArBChilB,KAAKoilB,aAAa,CAChBx7kB,OAAQ25kB,KACP,WACDl9X,EAAOv4M,MAAM63kB,SAASX,EACvB,GAkBJ,EAEDj6kB,EAAOy5kB,mBAAqB,WACA,OAAtBxhlB,KAAKohlB,eACPphlB,KAAKohlB,aAAapgiB,SAClBhhD,KAAKohlB,aAAe,KAEvB,EAEDr5kB,EAAOq6kB,aAAe,SAAsBt7Z,EAAWvpL,GAIrDA,EAAWyC,KAAK4ilB,gBAAgBrllB,GAChCyC,KAAK05C,SAASotI,EAAWvpL,EAC1B,EAEDwK,EAAO66kB,gBAAkB,SAAyBrllB,GAChD,IAAI6nN,EAASplN,KAET8lB,GAAS,EAcb,OAZA9lB,KAAKohlB,aAAe,SAAUrglB,GACxB+kB,IACFA,GAAS,EACTs/L,EAAOg8X,aAAe,KACtB7jlB,EAASwD,GAEZ,EAEDf,KAAKohlB,aAAapgiB,OAAS,WACzBl7B,GAAS,CACV,EAEM9lB,KAAKohlB,YACb,EAEDr5kB,EAAOy6kB,gBAAkB,SAAyBz7iB,EAASjmC,GACzDd,KAAK4ilB,gBAAgB9hlB,GACrB,IAAI6J,EAAO3K,KAAK8K,MAAM62kB,QAAU3hlB,KAAK8K,MAAM62kB,QAAQlokB,QAAUo/B,GAAAA,YAAqB74C,MAC9E6ilB,EAA0C,MAAX97iB,IAAoB/mC,KAAK8K,MAAMg4kB,eAElE,GAAKn4kB,IAAQk4kB,EAAb,CAKA,GAAI7ilB,KAAK8K,MAAMg4kB,eAAgB,CAC7B,IAAIh9b,EAAQ9lJ,KAAK8K,MAAM62kB,QAAU,CAAC3hlB,KAAKohlB,cAAgB,CAACz2kB,EAAM3K,KAAKohlB,cAC/DY,EAAYl8b,EAAM,GAClBi9b,EAAoBj9b,EAAM,GAE9B9lJ,KAAK8K,MAAMg4kB,eAAed,EAAWe,EACtC,CAEc,MAAXh8iB,GACFxR,WAAWv1B,KAAKohlB,aAAcr6iB,EAX/B,MAFCxR,WAAWv1B,KAAKohlB,aAAc,EAejC,EAEDr5kB,EAAOumC,OAAS,WACd,IAAI1nC,EAAS5G,KAAK0oC,MAAM9hC,OAExB,GAAIA,IAAW05kB,GACb,OAAO,KAGT,IAAIjiZ,EAAcr+L,KAAK8K,MACnBC,EAAWszL,EAAYtzL,SAgBvBi4kB,GAfM3kZ,EAAY4iZ,GACF5iZ,EAAY8iZ,aACX9iZ,EAAY6iZ,cACnB7iZ,EAAYyiZ,OACbziZ,EAAYl6C,MACbk6C,EAAYqjZ,KACTrjZ,EAAYt3J,QACLs3J,EAAYykZ,eACnBzkZ,EAAYikZ,QACTjkZ,EAAYkkZ,WACblkZ,EAAYgkZ,UACfhkZ,EAAYokZ,OACTpkZ,EAAYqkZ,UACbrkZ,EAAYskZ,SACbtkZ,EAAYsjZ,SACVl6jB,EAAAA,EAAAA,GAA8B42K,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGEllL,EAAAA,cAAoB8pkB,GAAuBpykB,SAAU,CACnD3S,MAAO,MACc,oBAAb6M,EAA0BA,EAASnE,EAAQo8kB,GAAc7pkB,EAAAA,aAAmBA,EAAAA,SAAAA,KAAoBpO,GAAWi4kB,GAExH,EAEMrC,CACR,CAlT6B,CAkT5BxnkB,EAAAA,WA+LF,SAAS2I,KAAS,CA7LlB6+jB,GAAWr1I,YAAc23I,GACzBtC,GAAWzhjB,UA0LP,CAAC,EAILyhjB,GAAWhokB,aAAe,CACxBsokB,IAAI,EACJE,cAAc,EACdD,eAAe,EACfJ,QAAQ,EACR38b,OAAO,EACPu9b,MAAM,EACNY,QAASxgkB,GACTygkB,WAAYzgkB,GACZugkB,UAAWvgkB,GACX2gkB,OAAQ3gkB,GACR4gkB,UAAW5gkB,GACX6gkB,SAAU7gkB,IAEZ6+jB,GAAWL,UAAYA,GACvBK,GAAWJ,OAASA,GACpBI,GAAWH,SAAWA,GACtBG,GAAWF,QAAUA,GACrBE,GAAWD,QAAUA,GACrB,UEhnBawC,GAAS,SAAAv4kB,GAAI,OAAIA,EAAKyjM,SAAT,EACnB,SAAS+0Y,GAAmBr4kB,EAAO1N,GACxC,IAAIgmlB,EAAuBC,EAEzBt8iB,EAGEj8B,EAHFi8B,QACAvb,EAEE1gB,EAFF0gB,OAFF,EAII1gB,EADFgsB,MAAAA,OAHF,MAGU,CAAC,EAHX,EAKA,MAAO,CACLjL,SAAgE,OAArDu3jB,EAAwBtsjB,EAAMu6K,oBAA8B+xY,EAA2C,kBAAZr8iB,EAAuBA,EAAUA,EAAQ3pC,EAAQkqB,OAAS,EAChKkE,OAAoE,OAA3D63jB,EAAwBvsjB,EAAMw6K,0BAAoC+xY,EAA0C,kBAAX73jB,EAAsBA,EAAOpuB,EAAQkqB,MAAQkE,EACvJwB,MAAO8J,EAAMs6K,gBAEhB,gBCXKhsL,GAAY,CAAC,iBAAkB,SAAU,WAAY,SAAU,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,UAAW,uBASxK,SAASk+jB,GAASpllB,GAChB,MAAO,SAAP,OAAgBA,EAAhB,sBAA0BA,EAAS,GAAnC,IACD,CACD,IAAMmS,GAAS,CACbkzkB,SAAU,CACRrwkB,QAAS,EACT8pB,UAAWsmjB,GAAS,IAEtBE,QAAS,CACPtwkB,QAAS,EACT8pB,UAAW,SAQTymjB,GAAmC,qBAAdhmkB,WAA6B,0CAA0CrH,KAAKqH,UAAUm3B,YAAc,2BAA2Bx+B,KAAKqH,UAAUm3B,WAOnK8uiB,GAAoBvqkB,EAAAA,YAAiB,SAAcrO,EAAOmG,GAC9D,IACI6xkB,EAeEh4kB,EAfFg4kB,eADJ,EAgBMh4kB,EAdFg2kB,OAAAA,OAFJ,SAGI/1kB,EAaED,EAbFC,SACAygB,EAYE1gB,EAZF0gB,OACIm4jB,EAWF74kB,EAXFm2kB,GACAqB,EAUEx3kB,EAVFw3kB,QACAD,EASEv3kB,EATFu3kB,UACAE,EAQEz3kB,EARFy3kB,WACAE,EAOE33kB,EAPF23kB,OACAE,EAME73kB,EANF63kB,SACAD,EAKE53kB,EALF43kB,UACA5rjB,EAIEhsB,EAJFgsB,MAZJ,EAgBMhsB,EAHFi8B,QAAAA,OAbJ,MAac,OAbd,IAgBMj8B,EADF84kB,oBAAAA,OAfJ,MAe0BjD,GAf1B,EAiBEn5jB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzC+hb,EAAQhub,EAAAA,SACR0qkB,EAAc1qkB,EAAAA,SACdd,EAAQ4tB,KACR07iB,EAAUxokB,EAAAA,OAAa,MACvB2qkB,GAAYvwjB,EAAAA,GAAAA,GAAWoujB,EAAS52kB,EAASkG,IAAKA,GAC9C8ykB,EAA+B,SAAAxmlB,GAAQ,OAAI,SAAAymlB,GAC/C,GAAIzmlB,EAAU,CACZ,IAAMoN,EAAOg3kB,EAAQlokB,aAGI9R,IAArBq8kB,EACFzmlB,EAASoN,GAETpN,EAASoN,EAAMq5kB,EAElB,CACF,CAX4C,EAYvCC,EAAiBF,EAA6BxB,GAC9C2B,EAAcH,GAA6B,SAACp5kB,EAAMw5kB,GACtDjB,GAAOv4kB,GAEP,IAWIkhB,EAXJ,EAIIs3jB,GAAmB,CACrBrsjB,MAAAA,EACAiQ,QAAAA,EACAvb,OAAAA,GACC,CACDlE,KAAM,UARI+pL,EADZ,EACExlL,SACAmB,EAFF,EAEEA,MACQskL,EAHV,EAGE9lL,OASc,SAAZub,GACFlb,EAAWxT,EAAMwV,YAAYtB,sBAAsB5hB,EAAKguJ,cACxDkrb,EAAYpqkB,QAAUoS,GAEtBA,EAAWwlL,EAEb1mM,EAAKmsB,MAAMhG,WAAa,CAACzY,EAAMwV,YAAYrd,OAAO,UAAW,CAC3Dqb,SAAAA,EACAmB,MAAAA,IACE3U,EAAMwV,YAAYrd,OAAO,YAAa,CACxCqb,SAAU43jB,GAAc53jB,EAAsB,KAAXA,EACnCmB,MAAAA,EACAxB,OAAQ8lL,KACN7kM,KAAK,KACL61kB,GACFA,EAAQ33kB,EAAMw5kB,EAEjB,IACKC,EAAgBL,EAA6B1B,GAC7CgC,EAAgBN,EAA6BrB,GAC7C4B,EAAaP,GAA6B,SAAAp5kB,GAC9C,IAWIkhB,EAXJ,EAIIs3jB,GAAmB,CACrBrsjB,MAAAA,EACAiQ,QAAAA,EACAvb,OAAAA,GACC,CACDlE,KAAM,SARI+pL,EADZ,EACExlL,SACAmB,EAFF,EAEEA,MACQskL,EAHV,EAGE9lL,OASc,SAAZub,GACFlb,EAAWxT,EAAMwV,YAAYtB,sBAAsB5hB,EAAKguJ,cACxDkrb,EAAYpqkB,QAAUoS,GAEtBA,EAAWwlL,EAEb1mM,EAAKmsB,MAAMhG,WAAa,CAACzY,EAAMwV,YAAYrd,OAAO,UAAW,CAC3Dqb,SAAAA,EACAmB,MAAAA,IACE3U,EAAMwV,YAAYrd,OAAO,YAAa,CACxCqb,SAAU43jB,GAAc53jB,EAAsB,KAAXA,EACnCmB,MAAOy2jB,GAAcz2jB,EAAQA,GAAoB,KAAXnB,EACtCL,OAAQ8lL,KACN7kM,KAAK,KACT9B,EAAKmsB,MAAM5jB,QAAU,EACrBvI,EAAKmsB,MAAMkG,UAAYsmjB,GAAS,KAC5Bb,GACFA,EAAO93kB,EAEV,IACK45kB,EAAeR,EAA6BpB,GAelD,OALAxpkB,EAAAA,WAAgB,WACd,OAAO,WACLmc,aAAa6xa,EAAM1tb,QACpB,CACF,GAAE,KACiB0Y,EAAAA,GAAAA,KAAKyxjB,GAAqB7qkB,EAAAA,EAAAA,GAAS,CACrD+nkB,OAAQA,EACRG,GAAI0C,EACJhC,QAASA,EACTW,QAAS4B,EACT7B,UAAW+B,EACX7B,WAAY0B,EACZxB,OAAQ6B,EACR3B,SAAU4B,EACV7B,UAAW2B,EACXvB,eAxB2B,SAAA33kB,GACX,SAAZ47B,IACFoga,EAAM1tb,QAAU8b,WAAWpqB,EAAM04kB,EAAYpqkB,SAAW,IAEtDqpkB,GAEFA,EAAenB,EAAQlokB,QAAStO,EAEnC,EAiBC47B,QAAqB,SAAZA,EAAqB,KAAOA,GACpCvf,EAAO,CACRzc,SAAU,SAAC29B,EAAOs6iB,GAChB,OAAoB7pkB,EAAAA,aAAmBpO,GAAUgO,EAAAA,EAAAA,GAAS,CACxD+d,OAAO/d,EAAAA,EAAAA,GAAS,CACd7F,QAAS,EACT8pB,UAAWsmjB,GAAS,KACpB//iB,WAAsB,WAAVmF,GAAuBi7iB,OAAoBh8kB,EAAX,UAC3C0I,GAAOq4B,GAAQ5R,EAAO/rB,EAASD,MAAMgsB,OACxC7lB,IAAK6ykB,GACJd,GACJ,IAEJ,IA2EDU,GAAKc,gBAAiB,EACtB,2CChQe,SAASzjiB,GAAUp2C,GAChC,GAAY,MAARA,EACF,OAAO1Q,OAGT,GAAwB,oBAApB0Q,EAAKrN,WAAkC,CACzC,IAAI41B,EAAgBvoB,EAAKuoB,cACzB,OAAOA,GAAgBA,EAAcgV,aAAwBjuC,MAC9D,CAED,OAAO0Q,CACR,CCTD,SAASgjc,GAAUhjc,GAEjB,OAAOA,aADUo2C,GAAUp2C,GAAMsic,SACItic,aAAgBsic,OACtD,CAED,SAASw3I,GAAc95kB,GAErB,OAAOA,aADUo2C,GAAUp2C,GAAMiG,aACIjG,aAAgBiG,WACtD,CAED,SAAS8zkB,GAAa/5kB,GAEpB,MAA0B,qBAAfg6kB,aAKJh6kB,aADUo2C,GAAUp2C,GAAMg6kB,YACIh6kB,aAAgBg6kB,WACtD,CCpBM,IAAIltjB,GAAMluB,KAAKkuB,IACX5U,GAAMtZ,KAAKsZ,IACXF,GAAQpZ,KAAKoZ,MCFT,SAASiikB,KACtB,IAAIC,EAASpnkB,UAAU6shB,cAEvB,OAAc,MAAVu6C,GAAkBA,EAAOC,QAAUjglB,MAAMC,QAAQ+/kB,EAAOC,QACnDD,EAAOC,OAAO/glB,KAAI,SAAUa,GACjC,OAAOA,EAAKmglB,MAAQ,IAAMnglB,EAAK2vE,OAChC,IAAE9nE,KAAK,KAGHgR,UAAUm3B,SAClB,CCTc,SAASowiB,KACtB,OAAQ,iCAAiC5ukB,KAAKwukB,KAC/C,CCCc,SAASrqhB,GAAsB/tD,EAASy4kB,EAAcC,QAC9C,IAAjBD,IACFA,GAAe,QAGO,IAApBC,IACFA,GAAkB,GAGpB,IAAIC,EAAa34kB,EAAQ+tD,wBACrB6qhB,EAAS,EACTC,EAAS,EAETJ,GAAgBR,GAAcj4kB,KAChC44kB,EAAS54kB,EAAQijE,YAAc,GAAI9sD,GAAMwikB,EAAWx0jB,OAASnkB,EAAQijE,aAAmB,EACxF41gB,EAAS74kB,EAAQs8D,aAAe,GAAInmD,GAAMwikB,EAAW34jB,QAAUhgB,EAAQs8D,cAAoB,GAG7F,IACIulI,GADOs/P,GAAUnhc,GAAWu0C,GAAUv0C,GAAWvS,QAC3Bo0M,eAEtBi3Y,GAAoBN,MAAsBE,EAC1Cn3kB,GAAKo3kB,EAAWvgjB,MAAQ0gjB,GAAoBj3Y,EAAiBA,EAAep+B,WAAa,IAAMm1a,EAC/Fp3kB,GAAKm3kB,EAAW1gjB,KAAO6gjB,GAAoBj3Y,EAAiBA,EAAer+B,UAAY,IAAMq1a,EAC7F10jB,EAAQw0jB,EAAWx0jB,MAAQy0jB,EAC3B54jB,EAAS24jB,EAAW34jB,OAAS64jB,EACjC,MAAO,CACL10jB,MAAOA,EACPnE,OAAQA,EACRiY,IAAKz2B,EACL02B,MAAO32B,EAAI4iB,EACXgU,OAAQ32B,EAAIwe,EACZoY,KAAM72B,EACNA,EAAGA,EACHC,EAAGA,EAEN,CCvCc,SAASu3kB,GAAgB56kB,GACtC,IAAI3R,EAAM+nD,GAAUp2C,GAGpB,MAAO,CACLwjM,WAHen1M,EAAIkzE,YAInBkiI,UAHcp1M,EAAIgzE,YAKrB,CCTc,SAASw5gB,GAAYh5kB,GAClC,OAAOA,GAAWA,EAAQotC,UAAY,IAAIplC,cAAgB,IAC3D,CCDc,SAASyzC,GAAmBz7C,GAEzC,QAASmhc,GAAUnhc,GAAWA,EAAQ0mB,cACtC1mB,EAAQtK,WAAajI,OAAOiI,UAAUgmD,eACvC,CCFc,SAASu9hB,GAAoBj5kB,GAQ1C,OAAO+tD,GAAsBtS,GAAmBz7C,IAAUo4B,KAAO2gjB,GAAgB/4kB,GAAS2hM,UAC3F,CCXc,SAASvzI,GAAiBpuD,GACvC,OAAOu0C,GAAUv0C,GAASouD,iBAAiBpuD,EAC5C,CCFc,SAASk5kB,GAAel5kB,GAErC,IAAIm5kB,EAAoB/qhB,GAAiBpuD,GACrC62B,EAAWsijB,EAAkBtijB,SAC7B2vM,EAAY2yW,EAAkB3yW,UAC9BC,EAAY0yW,EAAkB1yW,UAElC,MAAO,6BAA6B78N,KAAKitB,EAAW4vM,EAAYD,EACjE,CCSc,SAAS4yW,GAAiBC,EAAyB51gB,EAAc61gB,QAC9D,IAAZA,IACFA,GAAU,GAGZ,IAAIC,EAA0BtB,GAAcx0gB,GACxC+1gB,EAAuBvB,GAAcx0gB,IAf3C,SAAyBzjE,GACvB,IAAI8tD,EAAO9tD,EAAQ+tD,wBACf6qhB,EAASzikB,GAAM23C,EAAK3pC,OAASnkB,EAAQijE,aAAe,EACpD41gB,EAAS1ikB,GAAM23C,EAAK9tC,QAAUhgB,EAAQs8D,cAAgB,EAC1D,OAAkB,IAAXs8gB,GAA2B,IAAXC,CACxB,CAU2DY,CAAgBh2gB,GACtE/nB,EAAkBD,GAAmBgoB,GACrC3V,EAAOC,GAAsBsrhB,EAAyBG,EAAsBF,GAC5Eh4T,EAAS,CACX3/E,WAAY,EACZC,UAAW,GAETngF,EAAU,CACZlgH,EAAG,EACHC,EAAG,GAkBL,OAfI+3kB,IAA4BA,IAA4BD,MACxB,SAA9BN,GAAYv1gB,IAChBy1gB,GAAex9hB,MACb4lO,ECnCS,SAAuBnjR,GACpC,OAAIA,IAASo2C,GAAUp2C,IAAU85kB,GAAc95kB,GCJxC,CACLwjM,YAFyC3hM,EDQb7B,GCNRwjM,WACpBC,UAAW5hM,EAAQ4hM,WDGZm3Y,GAAgB56kB,GCNZ,IAA8B6B,CDU5C,CD6Bc05kB,CAAcj2gB,IAGrBw0gB,GAAcx0gB,KAChBg+C,EAAU1zD,GAAsB0V,GAAc,IACtCliE,GAAKkiE,EAAa9D,WAC1B8hD,EAAQjgH,GAAKiiE,EAAahE,WACjB/jB,IACT+lE,EAAQlgH,EAAI03kB,GAAoBv9hB,KAI7B,CACLn6C,EAAGusD,EAAK11B,KAAOkpP,EAAO3/E,WAAalgF,EAAQlgH,EAC3CC,EAAGssD,EAAK71B,IAAMqpP,EAAO1/E,UAAYngF,EAAQjgH,EACzC2iB,MAAO2pC,EAAK3pC,MACZnE,OAAQ8tC,EAAK9tC,OAEhB,CGtDc,SAAS25jB,GAAc35kB,GACpC,IAAI24kB,EAAa5qhB,GAAsB/tD,GAGnCmkB,EAAQnkB,EAAQijE,YAChBjjD,EAAShgB,EAAQs8D,aAUrB,OARIv/D,KAAKD,IAAI67kB,EAAWx0jB,MAAQA,IAAU,IACxCA,EAAQw0jB,EAAWx0jB,OAGjBpnB,KAAKD,IAAI67kB,EAAW34jB,OAASA,IAAW,IAC1CA,EAAS24jB,EAAW34jB,QAGf,CACLze,EAAGvB,EAAQyjK,WACXjiK,EAAGxB,EAAQwjK,UACXr/I,MAAOA,EACPnE,OAAQA,EAEX,CCrBc,SAAS45jB,GAAc55kB,GACpC,MAA6B,SAAzBg5kB,GAAYh5kB,GACPA,EAMPA,EAAQ65kB,cACR75kB,EAAQpD,aACRs7kB,GAAal4kB,GAAWA,EAAQq8C,KAAO,OAEvCZ,GAAmBz7C,EAGtB,CCdc,SAAS85kB,GAAgB37kB,GACtC,MAAI,CAAC,OAAQ,OAAQ,aAAavJ,QAAQoklB,GAAY76kB,KAAU,EAEvDA,EAAKuoB,cAAc5tB,KAGxBm/kB,GAAc95kB,IAAS+6kB,GAAe/6kB,GACjCA,EAGF27kB,GAAgBF,GAAcz7kB,GACtC,CCJc,SAAS47kB,GAAkB/5kB,EAASkhD,GACjD,IAAI8Z,OAES,IAAT9Z,IACFA,EAAO,IAGT,IAAI84hB,EAAeF,GAAgB95kB,GAC/Bi6kB,EAASD,KAAqE,OAAlDh/gB,EAAwBh7D,EAAQ0mB,oBAAyB,EAASs0C,EAAsBliE,MACpHtM,EAAM+nD,GAAUyliB,GAChB7ukB,EAAS8ukB,EAAS,CAACztlB,GAAKiX,OAAOjX,EAAIq1M,gBAAkB,GAAIq3Y,GAAec,GAAgBA,EAAe,IAAMA,EAC7GE,EAAch5hB,EAAKz9C,OAAO0H,GAC9B,OAAO8ukB,EAASC,EAChBA,EAAYz2kB,OAAOs2kB,GAAkBH,GAAczukB,IACpD,CCxBc,SAASgvkB,GAAen6kB,GACrC,MAAO,CAAC,QAAS,KAAM,MAAMpL,QAAQoklB,GAAYh5kB,KAAa,CAC/D,CCKD,SAASo6kB,GAAoBp6kB,GAC3B,OAAKi4kB,GAAcj4kB,IACoB,UAAvCouD,GAAiBpuD,GAAShC,SAInBgC,EAAQyjE,aAHN,IAIV,CAwCc,SAAS42gB,GAAgBr6kB,GAItC,IAHA,IAAIvS,EAAS8mD,GAAUv0C,GACnByjE,EAAe22gB,GAAoBp6kB,GAEhCyjE,GAAgB02gB,GAAe12gB,IAA6D,WAA5CrV,GAAiBqV,GAAczlE,UACpFylE,EAAe22gB,GAAoB32gB,GAGrC,OAAIA,IAA+C,SAA9Bu1gB,GAAYv1gB,IAA0D,SAA9Bu1gB,GAAYv1gB,IAAwE,WAA5CrV,GAAiBqV,GAAczlE,UAC3HvQ,EAGFg2E,GAhDT,SAA4BzjE,GAC1B,IAAImrf,EAAY,WAAWvhf,KAAKwukB,MAGhC,GAFW,WAAWxukB,KAAKwukB,OAEfH,GAAcj4kB,IAII,UAFXouD,GAAiBpuD,GAEnBhC,SACb,OAAO,KAIX,IAAI6jL,EAAc+3Z,GAAc55kB,GAMhC,IAJIk4kB,GAAar2Z,KACfA,EAAcA,EAAYxlI,MAGrB47hB,GAAcp2Z,IAAgB,CAAC,OAAQ,QAAQjtL,QAAQoklB,GAAYn3Z,IAAgB,GAAG,CAC3F,IAAI/oJ,EAAMs1B,GAAiByzH,GAI3B,GAAsB,SAAlB/oJ,EAAItI,WAA4C,SAApBsI,EAAIwhjB,aAA0C,UAAhBxhjB,EAAIyhjB,UAAiF,IAA1D,CAAC,YAAa,eAAe3llB,QAAQkkC,EAAI0hjB,aAAsBrvF,GAAgC,WAAnBryd,EAAI0hjB,YAA2BrvF,GAAaryd,EAAI9K,QAAyB,SAAf8K,EAAI9K,OACjO,OAAO6zJ,EAEPA,EAAcA,EAAYjlL,UAE7B,CAED,OAAO,IACR,CAgBwB69kB,CAAmBz6kB,IAAYvS,CACvD,CCpEM,IAAIwqC,GAAM,MACNE,GAAS,SACTD,GAAQ,QACRE,GAAO,OACPmvW,GAAO,OACPmzM,GAAiB,CAACzijB,GAAKE,GAAQD,GAAOE,IACtCrI,GAAQ,QACRryB,GAAM,MAENyxM,GAAW,WACXwrY,GAAS,SAETC,GAAmCF,GAAe/ilB,QAAO,SAAUC,EAAKijlB,GACjF,OAAOjjlB,EAAI6L,OAAO,CAACo3kB,EAAY,IAAM9qjB,GAAO8qjB,EAAY,IAAMn9kB,IAC/D,GAAE,IACQo9kB,GAA0B,GAAGr3kB,OAAOi3kB,GAAgB,CAACnzM,KAAO5vY,QAAO,SAAUC,EAAKijlB,GAC3F,OAAOjjlB,EAAI6L,OAAO,CAACo3kB,EAAWA,EAAY,IAAM9qjB,GAAO8qjB,EAAY,IAAMn9kB,IAC1E,GAAE,IAaQq9kB,GAAiB,CAXJ,aACN,OACK,YAEC,aACN,OACK,YAEE,cACN,QACK,cC3BxB,SAASp0kB,GAAMq0kB,GACb,IAAIzjlB,EAAM,IAAI7K,IACVuulB,EAAU,IAAI1olB,IACdyE,EAAS,GAKb,SAAS41B,EAAKsujB,GACZD,EAAQ15iB,IAAI25iB,EAAStulB,MACN,GAAG6W,OAAOy3kB,EAASC,UAAY,GAAID,EAASE,kBAAoB,IACtElnlB,SAAQ,SAAUmnlB,GACzB,IAAKJ,EAAQ9tlB,IAAIkulB,GAAM,CACrB,IAAIC,EAAc/jlB,EAAInK,IAAIiulB,GAEtBC,GACF1ujB,EAAK0ujB,EAER,CACF,IACDtklB,EAAOpD,KAAKsnlB,EACb,CAQD,OAzBAF,EAAU9mlB,SAAQ,SAAUgnlB,GAC1B3jlB,EAAI5K,IAAIuulB,EAAStulB,KAAMsulB,EACxB,IAiBDF,EAAU9mlB,SAAQ,SAAUgnlB,GACrBD,EAAQ9tlB,IAAI+tlB,EAAStulB,OAExBggC,EAAKsujB,EAER,IACMlklB,CACR,CChCc,SAAS8uB,GAASv0B,GAC/B,IAAI0mL,EACJ,OAAO,WAUL,OATKA,IACHA,EAAU,IAAI9lL,SAAQ,SAAUC,GAC9BD,QAAQC,UAAUd,MAAK,WACrB2mL,OAAU98K,EACV/I,EAAQb,IACT,GACF,KAGI0mL,CACR,CACF,CCAD,IAEIzgD,GAAkB,CACpBqjd,UAAW,SACXG,UAAW,GACXrjhB,SAAU,YAGZ,SAAS4jhB,KACP,IAAK,IAAIj7hB,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC/EzX,EAAKyX,GAAQyC,UAAUzC,GAGzB,OAAQzX,EAAKu0D,MAAK,SAAU3lD,GAC1B,QAASA,GAAoD,oBAAlCA,EAAQ+tD,sBACpC,GACF,CAEM,SAASythB,GAAgBC,QACL,IAArBA,IACFA,EAAmB,CAAC,GAGtB,IAAIC,EAAoBD,EACpBE,EAAwBD,EAAkBE,iBAC1CA,OAA6C,IAA1BD,EAAmC,GAAKA,EAC3DE,EAAyBH,EAAkB9he,eAC3CA,OAA4C,IAA3Biie,EAAoCrkd,GAAkBqkd,EAC3E,OAAO,SAAsB76kB,EAAW25kB,EAAQ/plB,QAC9B,IAAZA,IACFA,EAAUgpH,GAGZ,IAAI19E,EAAQ,CACV2+iB,UAAW,SACXiB,iBAAkB,GAClBlrlB,QAASY,OAAOmH,OAAO,CAAC,EAAG6+H,GAAiB5d,GAC5Cmie,cAAe,CAAC,EAChB52hB,SAAU,CACRnkD,UAAWA,EACX25kB,OAAQA,GAEVv+a,WAAY,CAAC,EACbv4J,OAAQ,CAAC,GAEPm4kB,EAAmB,GACnBC,GAAc,EACd1/iB,EAAW,CACbL,MAAOA,EACP8nf,WAAY,SAAoBk4D,GAC9B,IAAItrlB,EAAsC,oBAArBsrlB,EAAkCA,EAAiBhgjB,EAAMtrC,SAAWsrlB,EACzFC,IACAjgjB,EAAMtrC,QAAUY,OAAOmH,OAAO,CAAC,EAAGihH,EAAgB19E,EAAMtrC,QAASA,GACjEsrC,EAAMkgjB,cAAgB,CACpBp7kB,UAAWmgc,GAAUngc,GAAa+4kB,GAAkB/4kB,GAAaA,EAAUq7kB,eAAiBtC,GAAkB/4kB,EAAUq7kB,gBAAkB,GAC1I1B,OAAQZ,GAAkBY,IAI5B,IAAImB,EFvCG,SAAwBd,GAErC,IAAIc,EAAmBn1kB,GAAMq0kB,GAE7B,OAAOD,GAAepjlB,QAAO,SAAUC,EAAK0klB,GAC1C,OAAO1klB,EAAI6L,OAAOq4kB,EAAiB9tjB,QAAO,SAAUktjB,GAClD,OAAOA,EAASoB,QAAUA,CAC3B,IACF,GAAE,GACJ,CE8B8BC,CCzEhB,SAAqBvB,GAClC,IAAI7+P,EAAS6+P,EAAUrjlB,QAAO,SAAUwkV,EAAQlvU,GAC9C,IAAIotjB,EAAWl+O,EAAOlvU,EAAQrgB,MAK9B,OAJAuvV,EAAOlvU,EAAQrgB,MAAQytkB,EAAW7okB,OAAOmH,OAAO,CAAC,EAAG0hkB,EAAUptjB,EAAS,CACrErc,QAASY,OAAOmH,OAAO,CAAC,EAAG0hkB,EAASzpkB,QAASqc,EAAQrc,SACrD9C,KAAM0D,OAAOmH,OAAO,CAAC,EAAG0hkB,EAASvskB,KAAMmf,EAAQnf,QAC5Cmf,EACEkvU,CACR,GAAE,CAAC,GAEJ,OAAO3qV,OAAOgB,KAAK2pV,GAAQ5kV,KAAI,SAAUzB,GACvC,OAAOqmV,EAAOrmV,EACf,GACF,CD4D6C0mlB,CAAY,GAAG/4kB,OAAOm4kB,EAAkB1/iB,EAAMtrC,QAAQoqlB,aAyC5F,OAvCA9+iB,EAAM4/iB,iBAAmBA,EAAiB9tjB,QAAO,SAAUt9B,GACzD,OAAOA,EAAEypN,OACV,IAoJHj+K,EAAM4/iB,iBAAiB5nlB,SAAQ,SAAUolJ,GACvC,IAAI1sJ,EAAO0sJ,EAAM1sJ,KACb6vlB,EAAgBnjc,EAAM1oJ,QACtBA,OAA4B,IAAlB6rlB,EAA2B,CAAC,EAAIA,EAC1Cr7Z,EAAS9nC,EAAM8nC,OAEnB,GAAsB,oBAAXA,EAAuB,CAChC,IAAIs7Z,EAAYt7Z,EAAO,CACrBllJ,MAAOA,EACPtvC,KAAMA,EACN2vC,SAAUA,EACV3rC,QAASA,IAGP+rlB,EAAS,WAAoB,EAEjCX,EAAiBpolB,KAAK8olB,GAAaC,EACpC,CACF,IAjIQpgjB,EAASiD,QACjB,EAMDmC,YAAa,WACX,IAAIs6iB,EAAJ,CAIA,IAAIW,EAAkB1gjB,EAAMipB,SACxBnkD,EAAY47kB,EAAgB57kB,UAC5B25kB,EAASiC,EAAgBjC,OAG7B,GAAKY,GAAiBv6kB,EAAW25kB,GAAjC,CASAz+iB,EAAM2gjB,MAAQ,CACZ77kB,UAAWo4kB,GAAiBp4kB,EAAWq5kB,GAAgBM,GAAoC,UAA3Bz+iB,EAAMtrC,QAAQ+mE,UAC9EgjhB,OAAQhB,GAAcgB,IAOxBz+iB,EAAMlC,OAAQ,EACdkC,EAAM2+iB,UAAY3+iB,EAAMtrC,QAAQiqlB,UAKhC3+iB,EAAM4/iB,iBAAiB5nlB,SAAQ,SAAUgnlB,GACvC,OAAOh/iB,EAAM6/iB,cAAcb,EAAStulB,MAAQ4E,OAAOmH,OAAO,CAAC,EAAGuilB,EAASptlB,KACxE,IAGD,IAFA,IAES6G,EAAQ,EAAGA,EAAQunC,EAAM4/iB,iBAAiB3nlB,OAAQQ,IAUzD,IAAoB,IAAhBunC,EAAMlC,MAAV,CAMA,IAAI8ijB,EAAwB5gjB,EAAM4/iB,iBAAiBnnlB,GAC/CpD,EAAKurlB,EAAsBvrlB,GAC3BwrlB,EAAyBD,EAAsBlslB,QAC/C8vD,OAAsC,IAA3Bq8hB,EAAoC,CAAC,EAAIA,EACpDnwlB,EAAOkwlB,EAAsBlwlB,KAEf,oBAAP2E,IACT2qC,EAAQ3qC,EAAG,CACT2qC,MAAOA,EACPtrC,QAAS8vD,EACT9zD,KAAMA,EACN2vC,SAAUA,KACNL,EAdP,MAHCA,EAAMlC,OAAQ,EACdrlC,GAAS,CAnCZ,CAbA,CAmEF,EAGD6qC,OAAQ1Z,IAAS,WACf,OAAO,IAAI3zB,SAAQ,SAAUC,GAC3BmqC,EAASoF,cACTvvC,EAAQ8pC,EACT,GACF,IACDolJ,QAAS,WACP66Z,IACAF,GAAc,CACf,GAGH,IAAKV,GAAiBv6kB,EAAW25kB,GAK/B,OAAOp+iB,EAmCT,SAAS4/iB,IACPH,EAAiB9nlB,SAAQ,SAAU3C,GACjC,OAAOA,GACR,IACDyqlB,EAAmB,EACpB,CAED,OAvCAz/iB,EAASynf,WAAWpzhB,GAASU,MAAK,SAAU4qC,IACrC+/iB,GAAerrlB,EAAQoslB,eAC1BpslB,EAAQoslB,cAAc9gjB,EAEzB,IAmCMK,CACR,CACF,CACM,IE9PHy4B,GAAU,CACZA,SAAS,GCFI,SAASiohB,GAAiBpC,GACvC,OAAOA,EAAUhllB,MAAM,KAAK,EAC7B,CCHc,SAASqnlB,GAAarC,GACnC,OAAOA,EAAUhllB,MAAM,KAAK,EAC7B,CCFc,SAASsnlB,GAAyBtC,GAC/C,MAAO,CAAC,MAAO,UAAUjmlB,QAAQimlB,IAAc,EAAI,IAAM,GAC1D,CCEc,SAASuC,GAAe5ykB,GACrC,IAOIi3G,EAPAzgH,EAAYwJ,EAAKxJ,UACjBhB,EAAUwK,EAAKxK,QACf66kB,EAAYrwkB,EAAKqwkB,UACjBwC,EAAgBxC,EAAYoC,GAAiBpC,GAAa,KAC1DyC,EAAYzC,EAAYqC,GAAarC,GAAa,KAClD0C,EAAUv8kB,EAAUO,EAAIP,EAAUmjB,MAAQ,EAAInkB,EAAQmkB,MAAQ,EAC9Dq5jB,EAAUx8kB,EAAUQ,EAAIR,EAAUgf,OAAS,EAAIhgB,EAAQggB,OAAS,EAGpE,OAAQq9jB,GACN,KAAKpljB,GACHwpF,EAAU,CACRlgH,EAAGg8kB,EACH/7kB,EAAGR,EAAUQ,EAAIxB,EAAQggB,QAE3B,MAEF,KAAKmY,GACHspF,EAAU,CACRlgH,EAAGg8kB,EACH/7kB,EAAGR,EAAUQ,EAAIR,EAAUgf,QAE7B,MAEF,KAAKkY,GACHupF,EAAU,CACRlgH,EAAGP,EAAUO,EAAIP,EAAUmjB,MAC3B3iB,EAAGg8kB,GAEL,MAEF,KAAKpljB,GACHqpF,EAAU,CACRlgH,EAAGP,EAAUO,EAAIvB,EAAQmkB,MACzB3iB,EAAGg8kB,GAEL,MAEF,QACE/7d,EAAU,CACRlgH,EAAGP,EAAUO,EACbC,EAAGR,EAAUQ,GAInB,IAAIi8I,EAAW4/b,EAAgBF,GAAyBE,GAAiB,KAEzE,GAAgB,MAAZ5/b,EAAkB,CACpB,IAAI74I,EAAmB,MAAb64I,EAAmB,SAAW,QAExC,OAAQ6/b,GACN,KAAKvtjB,GACH0xF,EAAQg8B,GAAYh8B,EAAQg8B,IAAaz8I,EAAU4D,GAAO,EAAI5E,EAAQ4E,GAAO,GAC7E,MAEF,KAAKlH,GACH+jH,EAAQg8B,GAAYh8B,EAAQg8B,IAAaz8I,EAAU4D,GAAO,EAAI5E,EAAQ4E,GAAO,GAKlF,CAED,OAAO68G,CACR,CCnDD,ICTIg8d,GAAa,CACfxljB,IAAK,OACLC,MAAO,OACPC,OAAQ,OACRC,KAAM,QAeD,SAASsljB,GAAYxlb,GAC1B,IAAIylb,EAEAhD,EAASzib,EAAMyib,OACfiD,EAAa1lb,EAAM0lb,WACnB/C,EAAY3ib,EAAM2ib,UAClByC,EAAYplb,EAAMolb,UAClB77d,EAAUy2C,EAAMz2C,QAChBzjH,EAAWk6J,EAAMl6J,SACjB6/kB,EAAkB3lb,EAAM2lb,gBACxBC,EAAW5lb,EAAM4lb,SACjBC,EAAe7lb,EAAM6lb,aACrBzE,EAAUphb,EAAMohb,QAChB0E,EAAav8d,EAAQlgH,EACrBA,OAAmB,IAAfy8kB,EAAwB,EAAIA,EAChCC,EAAax8d,EAAQjgH,EACrBA,OAAmB,IAAfy8kB,EAAwB,EAAIA,EAEhC3kc,EAAgC,oBAAjBykc,EAA8BA,EAAa,CAC5Dx8kB,EAAGA,EACHC,EAAGA,IACA,CACHD,EAAGA,EACHC,EAAGA,GAGLD,EAAI+3I,EAAM/3I,EACVC,EAAI83I,EAAM93I,EACV,IAAI08kB,EAAOz8d,EAAQpuG,eAAe,KAC9B8qkB,EAAO18d,EAAQpuG,eAAe,KAC9B+qkB,EAAQhmjB,GACRimjB,EAAQpmjB,GACRzrC,EAAMiB,OAEV,GAAIqwlB,EAAU,CACZ,IAAIr6gB,EAAe42gB,GAAgBM,GAC/B2D,EAAa,eACbC,EAAY,cAchB,GAZI96gB,IAAiBlvB,GAAUomiB,IAGmB,WAA5CvshB,GAFJqV,EAAehoB,GAAmBk/hB,IAEC38kB,UAAsC,aAAbA,IAC1DsglB,EAAa,eACbC,EAAY,eAOZ1D,IAAc5ijB,KAAQ4ijB,IAAczijB,IAAQyijB,IAAc3ijB,KAAUoljB,IAAc5/kB,GACpF2glB,EAAQlmjB,GAGR32B,IAFc83kB,GAAW71gB,IAAiBj3E,GAAOA,EAAIq1M,eAAiBr1M,EAAIq1M,eAAe7hL,OACzFyjD,EAAa66gB,IACEV,EAAW59jB,OAC1Bxe,GAAKq8kB,EAAkB,GAAK,EAG9B,GAAIhD,IAAczijB,KAASyijB,IAAc5ijB,IAAO4ijB,IAAc1ijB,KAAWmljB,IAAc5/kB,GACrF0glB,EAAQlmjB,GAGR32B,IAFc+3kB,GAAW71gB,IAAiBj3E,GAAOA,EAAIq1M,eAAiBr1M,EAAIq1M,eAAe19K,MACzFs/C,EAAa86gB,IACEX,EAAWz5jB,MAC1B5iB,GAAKs8kB,EAAkB,GAAK,CAE/B,CAED,IAgBMW,EAhBFC,EAAejtlB,OAAOmH,OAAO,CAC/BqF,SAAUA,GACT8/kB,GAAYL,IAEX1jc,GAAyB,IAAjBgkc,EAlFd,SAA2BvzkB,EAAMhe,GAC/B,IAAI+U,EAAIiJ,EAAKjJ,EACTC,EAAIgJ,EAAKhJ,EACTk9kB,EAAMlylB,EAAIqkM,kBAAoB,EAClC,MAAO,CACLtvL,EAAG4U,GAAM5U,EAAIm9kB,GAAOA,GAAO,EAC3Bl9kB,EAAG2U,GAAM3U,EAAIk9kB,GAAOA,GAAO,EAE9B,CA0EqCC,CAAkB,CACpDp9kB,EAAGA,EACHC,EAAGA,GACF+yC,GAAUomiB,IAAW,CACtBp5kB,EAAGA,EACHC,EAAGA,GAML,OAHAD,EAAIw4I,EAAMx4I,EACVC,EAAIu4I,EAAMv4I,EAENq8kB,EAGKrslB,OAAOmH,OAAO,CAAC,EAAG8llB,IAAeD,EAAiB,CAAC,GAAkBH,GAASF,EAAO,IAAM,GAAIK,EAAeJ,GAASF,EAAO,IAAM,GAAIM,EAAehujB,WAAahkC,EAAIqkM,kBAAoB,IAAM,EAAI,aAAetvL,EAAI,OAASC,EAAI,MAAQ,eAAiBD,EAAI,OAASC,EAAI,SAAUg9kB,IAG5RhtlB,OAAOmH,OAAO,CAAC,EAAG8llB,IAAed,EAAkB,CAAC,GAAmBU,GAASF,EAAO38kB,EAAI,KAAO,GAAIm8kB,EAAgBS,GAASF,EAAO38kB,EAAI,KAAO,GAAIo8kB,EAAgBntjB,UAAY,GAAImtjB,GAC7L,CC1CD,QACE/wlB,KAAM,cACNutN,SAAS,EACTmiY,MAAO,QACP/qlB,GA5EF,SAAqBiZ,GACnB,IAAI0xB,EAAQ1xB,EAAK0xB,MACjB1qC,OAAOgB,KAAK0pC,EAAMipB,UAAUjxD,SAAQ,SAAUtH,GAC5C,IAAI09B,EAAQ4R,EAAMr4B,OAAOjX,IAAS,CAAC,EAC/BwvK,EAAalgI,EAAMkgI,WAAWxvK,IAAS,CAAC,EACxCoT,EAAUk8B,EAAMipB,SAASv4D,GAExBqrlB,GAAcj4kB,IAAag5kB,GAAYh5kB,KAO5CxO,OAAOmH,OAAOqH,EAAQsqB,MAAOA,GAC7B94B,OAAOgB,KAAK4pK,GAAYloK,SAAQ,SAAUtH,GACxC,IAAI8E,EAAQ0qK,EAAWxvK,IAET,IAAV8E,EACFsO,EAAQ06C,gBAAgB9tD,GAExBoT,EAAQlE,aAAalP,GAAgB,IAAV8E,EAAiB,GAAKA,EAEpD,IACF,GACF,EAoDC0vL,OAlDF,SAAgBlpB,GACd,IAAIh8H,EAAQg8H,EAAMh8H,MACd0ijB,EAAgB,CAClBjE,OAAQ,CACN38kB,SAAUk+B,EAAMtrC,QAAQ+mE,SACxBv/B,KAAM,IACNH,IAAK,IACLzF,OAAQ,KAEVqsjB,MAAO,CACL7glB,SAAU,YAEZgD,UAAW,CAAC,GASd,OAPAxP,OAAOmH,OAAOujC,EAAMipB,SAASw1hB,OAAOrwjB,MAAOs0jB,EAAcjE,QACzDz+iB,EAAMr4B,OAAS+6kB,EAEX1ijB,EAAMipB,SAAS05hB,OACjBrtlB,OAAOmH,OAAOujC,EAAMipB,SAAS05hB,MAAMv0jB,MAAOs0jB,EAAcC,OAGnD,WACLrtlB,OAAOgB,KAAK0pC,EAAMipB,UAAUjxD,SAAQ,SAAUtH,GAC5C,IAAIoT,EAAUk8B,EAAMipB,SAASv4D,GACzBwvK,EAAalgI,EAAMkgI,WAAWxvK,IAAS,CAAC,EAGxC09B,EAFkB94B,OAAOgB,KAAK0pC,EAAMr4B,OAAOwP,eAAezmB,GAAQsvC,EAAMr4B,OAAOjX,GAAQgylB,EAAchylB,IAE7E+K,QAAO,SAAU2yB,EAAO3pB,GAElD,OADA2pB,EAAM3pB,GAAY,GACX2pB,CACR,GAAE,CAAC,GAEC2tjB,GAAcj4kB,IAAag5kB,GAAYh5kB,KAI5CxO,OAAOmH,OAAOqH,EAAQsqB,MAAOA,GAC7B94B,OAAOgB,KAAK4pK,GAAYloK,SAAQ,SAAU46S,GACxC9uS,EAAQ06C,gBAAgBo0P,EACzB,IACF,GACF,CACF,EASCqsS,SAAU,CAAC,kBCnCb,QACEvulB,KAAM,SACNutN,SAAS,EACTmiY,MAAO,OACPnB,SAAU,CAAC,iBACX5plB,GA5BF,SAAgB2mK,GACd,IAAIh8H,EAAQg8H,EAAMh8H,MACdtrC,EAAUsnK,EAAMtnK,QAChBhE,EAAOsrK,EAAMtrK,KACbkylB,EAAkBlulB,EAAQ6P,OAC1BA,OAA6B,IAApBq+kB,EAA6B,CAAC,EAAG,GAAKA,EAC/ChxlB,EAAOgtlB,GAAAA,QAAkB,SAAUljlB,EAAKijlB,GAE1C,OADAjjlB,EAAIijlB,GA5BD,SAAiCA,EAAWgC,EAAOp8kB,GACxD,IAAI48kB,EAAgBJ,GAAiBpC,GACjCkE,EAAiB,CAAC3mjB,GAAMH,IAAKrjC,QAAQyolB,IAAkB,GAAK,EAAI,EAEhE7ykB,EAAyB,oBAAX/J,EAAwBA,EAAOjP,OAAOmH,OAAO,CAAC,EAAGkklB,EAAO,CACxEhC,UAAWA,KACPp6kB,EACFu+kB,EAAWx0kB,EAAK,GAChBy5Q,EAAWz5Q,EAAK,GAIpB,OAFAw0kB,EAAWA,GAAY,EACvB/6T,GAAYA,GAAY,GAAK86T,EACtB,CAAC3mjB,GAAMF,IAAOtjC,QAAQyolB,IAAkB,EAAI,CACjD97kB,EAAG0iR,EACHziR,EAAGw9kB,GACD,CACFz9kB,EAAGy9kB,EACHx9kB,EAAGyiR,EAEN,CASoBg7T,CAAwBpE,EAAW3+iB,EAAM2gjB,MAAOp8kB,GAC1D7I,CACR,GAAE,CAAC,GACAsnlB,EAAwBpxlB,EAAKouC,EAAM2+iB,WACnCt5kB,EAAI29kB,EAAsB39kB,EAC1BC,EAAI09kB,EAAsB19kB,EAEW,MAArC06B,EAAM6/iB,cAAcoD,gBACtBjjjB,EAAM6/iB,cAAcoD,cAAc59kB,GAAKA,EACvC26B,EAAM6/iB,cAAcoD,cAAc39kB,GAAKA,GAGzC06B,EAAM6/iB,cAAcnvlB,GAAQkB,CAC7B,GC5CGuU,GAAO,CACT+1B,KAAM,QACNF,MAAO,OACPC,OAAQ,MACRF,IAAK,UAEQ,SAASmnjB,GAAqBvE,GAC3C,OAAOA,EAAUzllB,QAAQ,0BAA0B,SAAU4se,GAC3D,OAAO3/d,GAAK2/d,EACb,GACF,CCVD,IAAI3/d,GAAO,CACT0tB,MAAO,MACPryB,IAAK,SAEQ,SAAS2hlB,GAA8BxE,GACpD,OAAOA,EAAUzllB,QAAQ,cAAc,SAAU4se,GAC/C,OAAO3/d,GAAK2/d,EACb,GACF,CCPc,SAASvua,GAASp1D,EAAQwhC,GACvC,IAAIkL,EAAWlL,EAAMsb,aAAetb,EAAMsb,cAE1C,GAAI98C,EAAOo1D,SAAS5zB,GAClB,OAAO,EAEJ,GAAIkL,GAAYmtiB,GAAantiB,GAAW,CACzC,IAAIpsC,EAAOkhC,EAEX,EAAG,CACD,GAAIlhC,GAAQN,EAAOihlB,WAAW3glB,GAC5B,OAAO,EAITA,EAAOA,EAAK/B,YAAc+B,EAAK09C,IAChC,OAAQ19C,EACV,CAGH,OAAO,CACR,CCtBc,SAAS4glB,GAAiBzxhB,GACvC,OAAOt8D,OAAOmH,OAAO,CAAC,EAAGm1D,EAAM,CAC7B11B,KAAM01B,EAAKvsD,EACX02B,IAAK61B,EAAKtsD,EACV02B,MAAO41B,EAAKvsD,EAAIusD,EAAK3pC,MACrBgU,OAAQ21B,EAAKtsD,EAAIssD,EAAK9tC,QAEzB,CCqBD,SAASw/jB,GAA2Bx/kB,EAASy/kB,EAAgB9nhB,GAC3D,OAAO8nhB,IAAmBtwY,GAAWowY,GCzBxB,SAAyBv/kB,EAAS23D,GAC/C,IAAInrE,EAAM+nD,GAAUv0C,GAChB2gE,EAAOllB,GAAmBz7C,GAC1B6hM,EAAiBr1M,EAAIq1M,eACrB19K,EAAQw8C,EAAKrQ,YACbtwC,EAAS2gD,EAAKwrF,aACd5qJ,EAAI,EACJC,EAAI,EAER,GAAIqgM,EAAgB,CAClB19K,EAAQ09K,EAAe19K,MACvBnE,EAAS6hL,EAAe7hL,OACxB,IAAI0/jB,EAAiBlH,MAEjBkH,IAAmBA,GAA+B,UAAb/nhB,KACvCp2D,EAAIsgM,EAAep+B,WACnBjiK,EAAIqgM,EAAer+B,UAEtB,CAED,MAAO,CACLr/I,MAAOA,EACPnE,OAAQA,EACRze,EAAGA,EAAI03kB,GAAoBj5kB,GAC3BwB,EAAGA,EAEN,CDDuDm+kB,CAAgB3/kB,EAAS23D,IAAawpY,GAAUs+I,GAdxG,SAAoCz/kB,EAAS23D,GAC3C,IAAI7J,EAAOC,GAAsB/tD,GAAS,EAAoB,UAAb23D,GASjD,OARA7J,EAAK71B,IAAM61B,EAAK71B,IAAMj4B,EAAQy/D,UAC9B3R,EAAK11B,KAAO01B,EAAK11B,KAAOp4B,EAAQ2/D,WAChC7R,EAAK31B,OAAS21B,EAAK71B,IAAMj4B,EAAQmsJ,aACjCr+F,EAAK51B,MAAQ41B,EAAK11B,KAAOp4B,EAAQswD,YACjCxC,EAAK3pC,MAAQnkB,EAAQswD,YACrBxC,EAAK9tC,OAAShgB,EAAQmsJ,aACtBr+F,EAAKvsD,EAAIusD,EAAK11B,KACd01B,EAAKtsD,EAAIssD,EAAK71B,IACP61B,CACR,CAGyH8xhB,CAA2BH,EAAgB9nhB,GAAY4nhB,GEtBlK,SAAyBv/kB,GACtC,IAAIg7D,EAEA2F,EAAOllB,GAAmBz7C,GAC1B6/kB,EAAY9G,GAAgB/4kB,GAC5BlH,EAA0D,OAAlDkiE,EAAwBh7D,EAAQ0mB,oBAAyB,EAASs0C,EAAsBliE,KAChGqrB,EAAQ8G,GAAI01C,EAAKgqN,YAAahqN,EAAKrQ,YAAax3D,EAAOA,EAAK6xR,YAAc,EAAG7xR,EAAOA,EAAKw3D,YAAc,GACvGtwC,EAASiL,GAAI01C,EAAKiqN,aAAcjqN,EAAKwrF,aAAcrzJ,EAAOA,EAAK8xR,aAAe,EAAG9xR,EAAOA,EAAKqzJ,aAAe,GAC5G5qJ,GAAKs+kB,EAAUl+Y,WAAas3Y,GAAoBj5kB,GAChDwB,GAAKq+kB,EAAUj+Y,UAMnB,MAJiD,QAA7CxzI,GAAiBt1D,GAAQ6nE,GAAMvmD,YACjC7Y,GAAK0pB,GAAI01C,EAAKrQ,YAAax3D,EAAOA,EAAKw3D,YAAc,GAAKnsC,GAGrD,CACLA,MAAOA,EACPnE,OAAQA,EACRze,EAAGA,EACHC,EAAGA,EAEN,CFCiMs+kB,CAAgBrkiB,GAAmBz7C,IACpO,CAsBc,SAAS+/kB,GAAgB//kB,EAASyhM,EAAUu+Y,EAAcrohB,GACvE,IAAIsohB,EAAmC,oBAAbx+Y,EAlB5B,SAA4BzhM,GAC1B,IAAIkglB,EAAkBnG,GAAkBH,GAAc55kB,IAElDmglB,EADoB,CAAC,WAAY,SAASvrlB,QAAQw5D,GAAiBpuD,GAAShC,WAAa,GACnDi6kB,GAAcj4kB,GAAWq6kB,GAAgBr6kB,GAAWA,EAE9F,OAAKmhc,GAAUg/I,GAKRD,EAAgBlyjB,QAAO,SAAUyxjB,GACtC,OAAOt+I,GAAUs+I,IAAmBhshB,GAASgshB,EAAgBU,IAAmD,SAAhCnH,GAAYyG,EAC7F,IANQ,EAOV,CAK4DW,CAAmBpglB,GAAW,GAAGyD,OAAOg+L,GAC/Fy+Y,EAAkB,GAAGz8kB,OAAOw8kB,EAAqB,CAACD,IAClDK,EAAsBH,EAAgB,GACtCI,EAAeJ,EAAgBvolB,QAAO,SAAU4olB,EAASd,GAC3D,IAAI3xhB,EAAO0xhB,GAA2Bx/kB,EAASy/kB,EAAgB9nhB,GAK/D,OAJA4ohB,EAAQtojB,IAAMhN,GAAI6iC,EAAK71B,IAAKsojB,EAAQtojB,KACpCsojB,EAAQrojB,MAAQ7hB,GAAIy3C,EAAK51B,MAAOqojB,EAAQrojB,OACxCqojB,EAAQpojB,OAAS9hB,GAAIy3C,EAAK31B,OAAQoojB,EAAQpojB,QAC1CoojB,EAAQnojB,KAAOnN,GAAI6iC,EAAK11B,KAAMmojB,EAAQnojB,MAC/BmojB,CACR,GAAEf,GAA2Bx/kB,EAASqglB,EAAqB1ohB,IAK5D,OAJA2ohB,EAAan8jB,MAAQm8jB,EAAapojB,MAAQoojB,EAAalojB,KACvDkojB,EAAatgkB,OAASsgkB,EAAanojB,OAASmojB,EAAarojB,IACzDqojB,EAAa/+kB,EAAI++kB,EAAalojB,KAC9BkojB,EAAa9+kB,EAAI8+kB,EAAarojB,IACvBqojB,CACR,CGpEc,SAASE,GAAmBC,GACzC,OAAOjvlB,OAAOmH,OAAO,CAAC,ECDf,CACLs/B,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GDHuCqojB,EAChD,CEHc,SAASC,GAAgBhvlB,EAAOc,GAC7C,OAAOA,EAAKmF,QAAO,SAAUgplB,EAAS7qlB,GAEpC,OADA6qlB,EAAQ7qlB,GAAOpE,EACRivlB,CACR,GAAE,CAAC,EACL,CCKc,SAASC,GAAe1kjB,EAAOtrC,QAC5B,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAI8vD,EAAW9vD,EACXiwlB,EAAqBngiB,EAASm6hB,UAC9BA,OAAmC,IAAvBgG,EAAgC3kjB,EAAM2+iB,UAAYgG,EAC9DC,EAAoBpgiB,EAASiX,SAC7BA,OAAiC,IAAtBmphB,EAA+B5kjB,EAAMy7B,SAAWmphB,EAC3DC,EAAoBrgiB,EAAS+gJ,SAC7BA,OAAiC,IAAtBs/Y,ExBbY,kBwBaqCA,EAC5DC,EAAwBtgiB,EAASs/hB,aACjCA,OAAyC,IAA1BgB,EAAmC7xY,GAAW6xY,EAC7DC,EAAwBvgiB,EAASwgiB,eACjCA,OAA2C,IAA1BD,EAAmCtG,GAASsG,EAC7DE,EAAuBzgiB,EAAS0giB,YAChCA,OAAuC,IAAzBD,GAA0CA,EACxDE,EAAmB3giB,EAASjuB,QAC5BA,OAA+B,IAArB4ujB,EAA8B,EAAIA,EAC5CZ,EAAgBD,GAAsC,kBAAZ/tjB,EAAuBA,EAAUiujB,GAAgBjujB,EAASiojB,KACpG4G,EAAaJ,IAAmBvG,GxBpBf,YwBoBoCA,GACrDiD,EAAa1hjB,EAAM2gjB,MAAMlC,OACzB36kB,EAAUk8B,EAAMipB,SAASi8hB,EAAcE,EAAaJ,GACpDK,EAAqBxB,GAAgB5+I,GAAUnhc,GAAWA,EAAUA,EAAQq8kB,gBAAkB5giB,GAAmBvf,EAAMipB,SAASw1hB,QAASl5Y,EAAUu+Y,EAAcrohB,GACjK6phB,EAAsBzzhB,GAAsB7xB,EAAMipB,SAASnkD,WAC3Dm+kB,EAAgB/B,GAAe,CACjCp8kB,UAAWwglB,EACXxhlB,QAAS49kB,EACTjmhB,SAAU,WACVkjhB,UAAWA,IAET4G,EAAmBlC,GAAiB/tlB,OAAOmH,OAAO,CAAC,EAAGillB,EAAYuB,IAClEuC,EAAoBR,IAAmBvG,GAAS8G,EAAmBD,EAGnEG,EAAkB,CACpB1pjB,IAAKspjB,EAAmBtpjB,IAAMypjB,EAAkBzpjB,IAAMwojB,EAAcxojB,IACpEE,OAAQupjB,EAAkBvpjB,OAASopjB,EAAmBppjB,OAASsojB,EAActojB,OAC7EC,KAAMmpjB,EAAmBnpjB,KAAOspjB,EAAkBtpjB,KAAOqojB,EAAcrojB,KACvEF,MAAOwpjB,EAAkBxpjB,MAAQqpjB,EAAmBrpjB,MAAQuojB,EAAcvojB,OAExE0pjB,EAAa1ljB,EAAM6/iB,cAAct7kB,OAErC,GAAIyglB,IAAmBvG,IAAUiH,EAAY,CAC3C,IAAInhlB,EAASmhlB,EAAW/G,GACxBrplB,OAAOgB,KAAKmvlB,GAAiBztlB,SAAQ,SAAU4B,GAC7C,IAAIm5d,EAAW,CAAC/2b,GAAOC,IAAQvjC,QAAQkB,IAAQ,EAAI,GAAK,EACpDysK,EAAO,CAACtqI,GAAKE,IAAQvjC,QAAQkB,IAAQ,EAAI,IAAM,IACnD6rlB,EAAgB7rlB,IAAQ2K,EAAO8hK,GAAQ0sT,CACxC,GACF,CAED,OAAO0yH,CACR,CC/DM,SAASE,GAAOxrkB,EAAK3kB,EAAOu5B,GACjC,OAAO62jB,GAAQzrkB,EAAK0rkB,GAAQrwlB,EAAOu5B,GACpC,CCoID,QACEr+B,KAAM,kBACNutN,SAAS,EACTmiY,MAAO,OACP/qlB,GA/HF,SAAyBiZ,GACvB,IAAI0xB,EAAQ1xB,EAAK0xB,MACbtrC,EAAU4Z,EAAK5Z,QACfhE,EAAO4d,EAAK5d,KACZo1lB,EAAoBpxlB,EAAQ6sJ,SAC5Bwkc,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBtxlB,EAAQuxlB,QAC3BC,OAAoC,IAArBF,GAAsCA,EACrDzgZ,EAAW7wM,EAAQ6wM,SACnBu+Y,EAAepvlB,EAAQovlB,aACvBoB,EAAcxwlB,EAAQwwlB,YACtB3ujB,EAAU7hC,EAAQ6hC,QAClB4vjB,EAAkBzxlB,EAAQ0xlB,OAC1BA,OAA6B,IAApBD,GAAoCA,EAC7CE,EAAwB3xlB,EAAQ4xlB,aAChCA,OAAyC,IAA1BD,EAAmC,EAAIA,EACtD1rjB,EAAW+pjB,GAAe1kjB,EAAO,CACnCulK,SAAUA,EACVu+Y,aAAcA,EACdvtjB,QAASA,EACT2ujB,YAAaA,IAEX/D,EAAgBJ,GAAiB/gjB,EAAM2+iB,WACvCyC,EAAYJ,GAAahhjB,EAAM2+iB,WAC/B4H,GAAmBnF,EACnB7/b,EAAW0/b,GAAyBE,GACpC8E,ECrCY,MDqCS1kc,ECrCH,IAAM,IDsCxB0hc,EAAgBjjjB,EAAM6/iB,cAAcoD,cACpCuD,EAAgBxmjB,EAAM2gjB,MAAM77kB,UAC5B48kB,EAAa1hjB,EAAM2gjB,MAAMlC,OACzBgI,EAA4C,oBAAjBH,EAA8BA,EAAahxlB,OAAOmH,OAAO,CAAC,EAAGujC,EAAM2gjB,MAAO,CACvGhC,UAAW3+iB,EAAM2+iB,aACb2H,EACFI,EAA2D,kBAAtBD,EAAiC,CACxEllc,SAAUklc,EACVR,QAASQ,GACPnxlB,OAAOmH,OAAO,CAChB8kJ,SAAU,EACV0kc,QAAS,GACRQ,GACCE,EAAsB3mjB,EAAM6/iB,cAAct7kB,OAASy7B,EAAM6/iB,cAAct7kB,OAAOy7B,EAAM2+iB,WAAa,KACjG/slB,EAAO,CACTyT,EAAG,EACHC,EAAG,GAGL,GAAK29kB,EAAL,CAIA,GAAI8C,EAAe,CACjB,IAAIa,EAEAC,EAAwB,MAAbtlc,EAAmBxlH,GAAMG,GACpC4qjB,EAAuB,MAAbvlc,EAAmBtlH,GAASD,GACtCtzB,EAAmB,MAAb64I,EAAmB,SAAW,QACpCh9I,EAAS0+kB,EAAc1hc,GACvBpnI,EAAM5V,EAASo2B,EAASksjB,GACxB93jB,EAAMxqB,EAASo2B,EAASmsjB,GACxBC,EAAWX,GAAU1E,EAAWh5kB,GAAO,EAAI,EAC3Ck/e,EAASw5F,IAAcvtjB,GAAQ2yjB,EAAc99kB,GAAOg5kB,EAAWh5kB,GAC/Dy4K,EAASiga,IAAcvtjB,IAAS6tjB,EAAWh5kB,IAAQ89kB,EAAc99kB,GAGjEs+kB,EAAehnjB,EAAMipB,SAAS05hB,MAC9B9uO,EAAYuyO,GAAUY,EAAevJ,GAAcuJ,GAAgB,CACrE/+jB,MAAO,EACPnE,OAAQ,GAENmjkB,EAAqBjnjB,EAAM6/iB,cAAc,oBAAsB7/iB,EAAM6/iB,cAAc,oBAAoBtpjB,QJhFtG,CACLwF,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,GI6EFgrjB,EAAkBD,EAAmBJ,GACrCM,EAAkBF,EAAmBH,GAMrCM,EAAWzB,GAAO,EAAGa,EAAc99kB,GAAMmrW,EAAUnrW,IACnD6jJ,EAAYg6b,EAAkBC,EAAc99kB,GAAO,EAAIq+kB,EAAWK,EAAWF,EAAkBR,EAA4Bnlc,SAAWqmW,EAASw/F,EAAWF,EAAkBR,EAA4Bnlc,SACxMiL,EAAY+5b,GAAmBC,EAAc99kB,GAAO,EAAIq+kB,EAAWK,EAAWD,EAAkBT,EAA4Bnlc,SAAW4/B,EAASima,EAAWD,EAAkBT,EAA4Bnlc,SACzM8lc,EAAoBrnjB,EAAMipB,SAAS05hB,OAASxE,GAAgBn+iB,EAAMipB,SAAS05hB,OAC3Er+d,EAAe+ie,EAAiC,MAAb9lc,EAAmB8lc,EAAkB9jhB,WAAa,EAAI8jhB,EAAkB5jhB,YAAc,EAAI,EAC7H6jhB,EAAwH,OAAjGV,EAA+C,MAAvBD,OAA8B,EAASA,EAAoBplc,IAAqBqlc,EAAwB,EAEvJW,EAAYhjlB,EAASioJ,EAAY86b,EACjCE,EAAkB7B,GAAOS,EAASP,GAAQ1rkB,EAF9B5V,EAASgoJ,EAAY+6b,EAAsBhje,GAEKnqG,EAAK5V,EAAQ6hlB,EAASR,GAAQ72jB,EAAKw4jB,GAAax4jB,GAChHk0jB,EAAc1hc,GAAYimc,EAC1B51lB,EAAK2vJ,GAAYimc,EAAkBjjlB,CACpC,CAED,GAAI2hlB,EAAc,CAChB,IAAIuB,EAEAC,EAAyB,MAAbnmc,EAAmBxlH,GAAMG,GAErCyrjB,GAAwB,MAAbpmc,EAAmBtlH,GAASD,GAEvCuic,GAAU0kH,EAAcgD,GAExB7hiB,GAAmB,MAAZ6hiB,EAAkB,SAAW,QAEpC2B,GAAOrpH,GAAU5jc,EAAS+sjB,GAE1BG,GAAOtpH,GAAU5jc,EAASgtjB,IAE1BG,IAAuD,IAAxC,CAAC/rjB,GAAKG,IAAMxjC,QAAQyolB,GAEnC4G,GAAyH,OAAjGN,EAAgD,MAAvBd,OAA8B,EAASA,EAAoBV,IAAoBwB,EAAyB,EAEzJO,GAAaF,GAAeF,GAAOrpH,GAAUioH,EAAcpiiB,IAAQs9hB,EAAWt9hB,IAAQ2jiB,GAAuBrB,EAA4BT,QAEzIgC,GAAaH,GAAevpH,GAAUioH,EAAcpiiB,IAAQs9hB,EAAWt9hB,IAAQ2jiB,GAAuBrB,EAA4BT,QAAU4B,GAE5IK,GAAmB9B,GAAU0B,GDzH9B,SAAwB3tkB,EAAK3kB,EAAOu5B,GACzC,IAAIrT,EAAIiqkB,GAAOxrkB,EAAK3kB,EAAOu5B,GAC3B,OAAOrT,EAAIqT,EAAMA,EAAMrT,CACxB,CCsHmDyskB,CAAeH,GAAYzpH,GAAS0pH,IAActC,GAAOS,EAAS4B,GAAaJ,GAAMrpH,GAAS6nH,EAAS6B,GAAaJ,IAEpK5E,EAAcgD,GAAWiC,GACzBt2lB,EAAKq0lB,GAAWiC,GAAmB3pH,EACpC,CAEDv+b,EAAM6/iB,cAAcnvlB,GAAQkB,CAvE3B,CAwEF,EAQCstlB,iBAAkB,CAAC,WEhDrB,QACExulB,KAAM,QACNutN,SAAS,EACTmiY,MAAO,OACP/qlB,GA9EF,SAAeiZ,GACb,IAAI85kB,EAEApojB,EAAQ1xB,EAAK0xB,MACbtvC,EAAO4d,EAAK5d,KACZgE,EAAU4Z,EAAK5Z,QACfsylB,EAAehnjB,EAAMipB,SAAS05hB,MAC9BM,EAAgBjjjB,EAAM6/iB,cAAcoD,cACpC9B,EAAgBJ,GAAiB/gjB,EAAM2+iB,WACvCt4a,EAAO46a,GAAyBE,GAEhCz4kB,EADa,CAACwzB,GAAMF,IAAOtjC,QAAQyolB,IAAkB,EAClC,SAAW,QAElC,GAAK6F,GAAiB/D,EAAtB,CAIA,IAAIsB,EAxBgB,SAAyBhujB,EAASyJ,GAItD,OAAOskjB,GAAsC,kBAH7C/tjB,EAA6B,oBAAZA,EAAyBA,EAAQjhC,OAAOmH,OAAO,CAAC,EAAGujC,EAAM2gjB,MAAO,CAC/EhC,UAAW3+iB,EAAM2+iB,aACbpojB,GACkDA,EAAUiujB,GAAgBjujB,EAASiojB,IAC5F,CAmBqB6J,CAAgB3zlB,EAAQ6hC,QAASyJ,GACjD6zU,EAAY4pO,GAAcuJ,GAC1BsB,EAAmB,MAATjib,EAAetqI,GAAMG,GAC/BqsjB,EAAmB,MAATlib,EAAepqI,GAASD,GAClCwsjB,EAAUxojB,EAAM2gjB,MAAM77kB,UAAU4D,GAAOs3B,EAAM2gjB,MAAM77kB,UAAUuhK,GAAQ48a,EAAc58a,GAAQrmI,EAAM2gjB,MAAMlC,OAAO/1kB,GAC9G+/kB,EAAYxF,EAAc58a,GAAQrmI,EAAM2gjB,MAAM77kB,UAAUuhK,GACxDghb,EAAoBlJ,GAAgB6I,GACpC0B,EAAarB,EAA6B,MAAThhb,EAAeghb,EAAkBp3b,cAAgB,EAAIo3b,EAAkBjzhB,aAAe,EAAI,EAC3Hu0hB,EAAoBH,EAAU,EAAIC,EAAY,EAG9CtukB,EAAMoqkB,EAAc+D,GACpBv5jB,EAAM25jB,EAAa70O,EAAUnrW,GAAO67kB,EAAcgE,GAClDj1Y,EAASo1Y,EAAa,EAAI70O,EAAUnrW,GAAO,EAAIiglB,EAC/CpklB,EAASohlB,GAAOxrkB,EAAKm5L,EAAQvkL,GAE7B65jB,EAAWvib,EACfrmI,EAAM6/iB,cAAcnvlB,KAAS03lB,EAAwB,CAAC,GAAyBQ,GAAYrklB,EAAQ6jlB,EAAsBS,aAAetklB,EAAS+uM,EAAQ80Y,EAnBxJ,CAoBF,EA4CClja,OA1CF,SAAgBlpB,GACd,IAAIh8H,EAAQg8H,EAAMh8H,MAEd8ojB,EADU9sb,EAAMtnK,QACWoP,QAC3BkjlB,OAAoC,IAArB8B,EAA8B,sBAAwBA,EAErD,MAAhB9B,IAKwB,kBAAjBA,IACTA,EAAehnjB,EAAMipB,SAASw1hB,OAAO73gB,cAAcoghB,MAahDzvhB,GAASv3B,EAAMipB,SAASw1hB,OAAQuI,KAQrChnjB,EAAMipB,SAAS05hB,MAAQqE,EACxB,EASC/H,SAAU,CAAC,iBACXC,iBAAkB,CAAC,oBChGrB,SAAS6J,GAAepujB,EAAUi3B,EAAMo3hB,GAQtC,YAPyB,IAArBA,IACFA,EAAmB,CACjB3jlB,EAAG,EACHC,EAAG,IAIA,CACLy2B,IAAKpB,EAASoB,IAAM61B,EAAK9tC,OAASklkB,EAAiB1jlB,EACnD02B,MAAOrB,EAASqB,MAAQ41B,EAAK3pC,MAAQ+gkB,EAAiB3jlB,EACtD42B,OAAQtB,EAASsB,OAAS21B,EAAK9tC,OAASklkB,EAAiB1jlB,EACzD42B,KAAMvB,EAASuB,KAAO01B,EAAK3pC,MAAQ+gkB,EAAiB3jlB,EAEvD,CAED,SAAS4jlB,GAAsBtujB,GAC7B,MAAO,CAACoB,GAAKC,GAAOC,GAAQC,IAAMutB,MAAK,SAAUkpP,GAC/C,OAAOh4Q,EAASg4Q,IAAS,CAC1B,GACF,CA+BD,IC3CIu2S,GAA4B5J,GAAgB,CAC9CI,iBAFqB,CzB+BvB,CACEhvlB,KAAM,iBACNutN,SAAS,EACTmiY,MAAO,QACP/qlB,GAAI,WAAgB,EACpB6vL,OAxCF,SAAgB52K,GACd,IAAI0xB,EAAQ1xB,EAAK0xB,MACbK,EAAW/xB,EAAK+xB,SAChB3rC,EAAU4Z,EAAK5Z,QACfy0lB,EAAkBz0lB,EAAQ0wR,OAC1BA,OAA6B,IAApB+jU,GAAoCA,EAC7CC,EAAkB10lB,EAAQupK,OAC1BA,OAA6B,IAApBmrb,GAAoCA,EAC7C73lB,EAAS8mD,GAAUrY,EAAMipB,SAASw1hB,QAClCyB,EAAgB,GAAG34kB,OAAOy4B,EAAMkgjB,cAAcp7kB,UAAWk7B,EAAMkgjB,cAAczB,QAYjF,OAVIr5T,GACF86T,EAAclolB,SAAQ,SAAU8llB,GAC9BA,EAAajllB,iBAAiB,SAAUwnC,EAASiD,OAAQw1B,GAC1D,IAGCmlG,GACF1sK,EAAOsH,iBAAiB,SAAUwnC,EAASiD,OAAQw1B,IAG9C,WACDssN,GACF86T,EAAclolB,SAAQ,SAAU8llB,GAC9BA,EAAahllB,oBAAoB,SAAUunC,EAASiD,OAAQw1B,GAC7D,IAGCmlG,GACF1sK,EAAOuH,oBAAoB,SAAUunC,EAASiD,OAAQw1B,GAEzD,CACF,EASClnE,KAAM,CAAC,GK7BT,CACElB,KAAM,gBACNutN,SAAS,EACTmiY,MAAO,OACP/qlB,GApBF,SAAuBiZ,GACrB,IAAI0xB,EAAQ1xB,EAAK0xB,MACbtvC,EAAO4d,EAAK5d,KAKhBsvC,EAAM6/iB,cAAcnvlB,GAAQwwlB,GAAe,CACzCp8kB,UAAWk7B,EAAM2gjB,MAAM77kB,UACvBhB,QAASk8B,EAAM2gjB,MAAMlC,OACrBhjhB,SAAU,WACVkjhB,UAAW3+iB,EAAM2+iB,WAEpB,EAQC/slB,KAAM,CAAC,GCsJT,CACElB,KAAM,gBACNutN,SAAS,EACTmiY,MAAO,cACP/qlB,GAzDF,SAAuB4oJ,GACrB,IAAIj+G,EAAQi+G,EAAMj+G,MACdtrC,EAAUupJ,EAAMvpJ,QAChB20lB,EAAwB30lB,EAAQitlB,gBAChCA,OAA4C,IAA1B0H,GAA0CA,EAC5DC,EAAoB50lB,EAAQktlB,SAC5BA,OAAiC,IAAtB0H,GAAsCA,EACjDC,EAAwB70lB,EAAQmtlB,aAChCA,OAAyC,IAA1B0H,GAA0CA,EAYzDhH,EAAe,CACjB5D,UAAWoC,GAAiB/gjB,EAAM2+iB,WAClCyC,UAAWJ,GAAahhjB,EAAM2+iB,WAC9BF,OAAQz+iB,EAAMipB,SAASw1hB,OACvBiD,WAAY1hjB,EAAM2gjB,MAAMlC,OACxBkD,gBAAiBA,EACjBvE,QAAoC,UAA3Bp9iB,EAAMtrC,QAAQ+mE,UAGgB,MAArCz7B,EAAM6/iB,cAAcoD,gBACtBjjjB,EAAMr4B,OAAO82kB,OAASnplB,OAAOmH,OAAO,CAAC,EAAGujC,EAAMr4B,OAAO82kB,OAAQ+C,GAAYlslB,OAAOmH,OAAO,CAAC,EAAG8llB,EAAc,CACvGh9d,QAASvlF,EAAM6/iB,cAAcoD,cAC7BnhlB,SAAUk+B,EAAMtrC,QAAQ+mE,SACxBmmhB,SAAUA,EACVC,aAAcA,OAIe,MAA7B7hjB,EAAM6/iB,cAAc8C,QACtB3ijB,EAAMr4B,OAAOg7kB,MAAQrtlB,OAAOmH,OAAO,CAAC,EAAGujC,EAAMr4B,OAAOg7kB,MAAOnB,GAAYlslB,OAAOmH,OAAO,CAAC,EAAG8llB,EAAc,CACrGh9d,QAASvlF,EAAM6/iB,cAAc8C,MAC7B7glB,SAAU,WACV8/kB,UAAU,EACVC,aAAcA,OAIlB7hjB,EAAMkgI,WAAWu+a,OAASnplB,OAAOmH,OAAO,CAAC,EAAGujC,EAAMkgI,WAAWu+a,OAAQ,CACnE,wBAAyBz+iB,EAAM2+iB,WAElC,EAQC/slB,KAAM,CAAC,GmBxK6D43lB,GAAajllB,GC+HnF,CACE7T,KAAM,OACNutN,SAAS,EACTmiY,MAAO,OACP/qlB,GA5HF,SAAciZ,GACZ,IAAI0xB,EAAQ1xB,EAAK0xB,MACbtrC,EAAU4Z,EAAK5Z,QACfhE,EAAO4d,EAAK5d,KAEhB,IAAIsvC,EAAM6/iB,cAAcnvlB,GAAM+4lB,MAA9B,CAoCA,IAhCA,IAAI3D,EAAoBpxlB,EAAQ6sJ,SAC5Bwkc,OAAsC,IAAtBD,GAAsCA,EACtDE,EAAmBtxlB,EAAQuxlB,QAC3BC,OAAoC,IAArBF,GAAqCA,EACpD0D,EAA8Bh1lB,EAAQi1lB,mBACtCpzjB,EAAU7hC,EAAQ6hC,QAClBgvK,EAAW7wM,EAAQ6wM,SACnBu+Y,EAAepvlB,EAAQovlB,aACvBoB,EAAcxwlB,EAAQwwlB,YACtB0E,EAAwBl1lB,EAAQm1lB,eAChCA,OAA2C,IAA1BD,GAA0CA,EAC3DE,EAAwBp1lB,EAAQo1lB,sBAChCC,EAAqB/pjB,EAAMtrC,QAAQiqlB,UACnCwC,EAAgBJ,GAAiBgJ,GAEjCJ,EAAqBD,IADHvI,IAAkB4I,IACqCF,EAAiB,CAAC3G,GAAqB6G,IAjCtH,SAAuCpL,GACrC,GAAIoC,GAAiBpC,KAAetzM,GAClC,MAAO,GAGT,IAAI2+M,EAAoB9G,GAAqBvE,GAC7C,MAAO,CAACwE,GAA8BxE,GAAYqL,EAAmB7G,GAA8B6G,GACpG,CA0B4IC,CAA8BF,IACrKnL,EAAa,CAACmL,GAAoBxilB,OAAOoilB,GAAoBlulB,QAAO,SAAUC,EAAKijlB,GACrF,OAAOjjlB,EAAI6L,OAAOw5kB,GAAiBpC,KAAetzM,GCvCvC,SAA8BrrW,EAAOtrC,QAClC,IAAZA,IACFA,EAAU,CAAC,GAGb,IAAI8vD,EAAW9vD,EACXiqlB,EAAYn6hB,EAASm6hB,UACrBp5Y,EAAW/gJ,EAAS+gJ,SACpBu+Y,EAAet/hB,EAASs/hB,aACxBvtjB,EAAUiuB,EAASjuB,QACnBszjB,EAAiBrliB,EAASqliB,eAC1BK,EAAwB1liB,EAASsliB,sBACjCA,OAAkD,IAA1BI,EAAmCC,GAAgBD,EAC3E9I,EAAYJ,GAAarC,GACzBC,EAAawC,EAAYyI,EAAiBnL,GAAsBA,GAAoB5sjB,QAAO,SAAU6sjB,GACvG,OAAOqC,GAAarC,KAAeyC,CACpC,IAAI5C,GACD4L,EAAoBxL,EAAW9sjB,QAAO,SAAU6sjB,GAClD,OAAOmL,EAAsBpxlB,QAAQimlB,IAAc,CACpD,IAEgC,IAA7ByL,EAAkBnylB,SACpBmylB,EAAoBxL,GAQtB,IAAIyL,EAAYD,EAAkB3ulB,QAAO,SAAUC,EAAKijlB,GAOtD,OANAjjlB,EAAIijlB,GAAa+F,GAAe1kjB,EAAO,CACrC2+iB,UAAWA,EACXp5Y,SAAUA,EACVu+Y,aAAcA,EACdvtjB,QAASA,IACRwqjB,GAAiBpC,IACbjjlB,CACR,GAAE,CAAC,GACJ,OAAOpG,OAAOgB,KAAK+zlB,GAAW35jB,MAAK,SAAUrZ,EAAGC,GAC9C,OAAO+ykB,EAAUhzkB,GAAKgzkB,EAAU/ykB,EACjC,GACF,CDH4DgzkB,CAAqBtqjB,EAAO,CACnF2+iB,UAAWA,EACXp5Y,SAAUA,EACVu+Y,aAAcA,EACdvtjB,QAASA,EACTszjB,eAAgBA,EAChBC,sBAAuBA,IACpBnL,EACN,GAAE,IACC6H,EAAgBxmjB,EAAM2gjB,MAAM77kB,UAC5B48kB,EAAa1hjB,EAAM2gjB,MAAMlC,OACzB8L,EAAY,IAAI/5lB,IAChBg6lB,GAAqB,EACrBC,EAAwB7L,EAAW,GAE9B3+kB,EAAI,EAAGA,EAAI2+kB,EAAW3mlB,OAAQgI,IAAK,CAC1C,IAAI0+kB,EAAYC,EAAW3+kB,GAEvByqlB,EAAiB3J,GAAiBpC,GAElCgM,EAAmB3J,GAAarC,KAAe9qjB,GAC/Ck8P,EAAa,CAACh0P,GAAKE,IAAQvjC,QAAQgylB,IAAmB,EACtDhilB,EAAMqnR,EAAa,QAAU,SAC7Bp1P,EAAW+pjB,GAAe1kjB,EAAO,CACnC2+iB,UAAWA,EACXp5Y,SAAUA,EACVu+Y,aAAcA,EACdoB,YAAaA,EACb3ujB,QAASA,IAEPq0jB,EAAoB76T,EAAa46T,EAAmB3ujB,GAAQE,GAAOyujB,EAAmB1ujB,GAASF,GAE/FyqjB,EAAc99kB,GAAOg5kB,EAAWh5kB,KAClCkilB,EAAoB1H,GAAqB0H,IAG3C,IAAIC,EAAmB3H,GAAqB0H,GACxCE,EAAS,GAUb,GARI/E,GACF+E,EAAOpzlB,KAAKijC,EAAS+vjB,IAAmB,GAGtCxE,GACF4E,EAAOpzlB,KAAKijC,EAASiwjB,IAAsB,EAAGjwjB,EAASkwjB,IAAqB,GAG1EC,EAAO3tjB,OAAM,SAAUi8J,GACzB,OAAOA,CACR,IAAG,CACFqxZ,EAAwB9L,EACxB6L,GAAqB,EACrB,KACD,CAEDD,EAAU95lB,IAAIkulB,EAAWmM,EAC1B,CAED,GAAIN,EAqBF,IAnBA,IAEInrW,EAAQ,SAAexyO,GACzB,IAAIk+kB,EAAmBnM,EAAWtrlB,MAAK,SAAUqrlB,GAC/C,IAAImM,EAASP,EAAUr5lB,IAAIytlB,GAE3B,GAAImM,EACF,OAAOA,EAAOzulB,MAAM,EAAGwQ,GAAIswB,OAAM,SAAUi8J,GACzC,OAAOA,CACR,GAEJ,IAED,GAAI2xZ,EAEF,OADAN,EAAwBM,EACjB,OAEV,EAEQl+kB,EAnBYg9kB,EAAiB,EAAI,EAmBZh9kB,EAAK,EAAGA,IAAM,CAG1C,GAAa,UAFFwyO,EAAMxyO,GAEK,KACvB,CAGCmzB,EAAM2+iB,YAAc8L,IACtBzqjB,EAAM6/iB,cAAcnvlB,GAAM+4lB,OAAQ,EAClCzpjB,EAAM2+iB,UAAY8L,EAClBzqjB,EAAMlC,OAAQ,EA5Gf,CA8GF,EAQCohjB,iBAAkB,CAAC,UACnBttlB,KAAM,CACJ63lB,OAAO,IDtIsFuB,GAAiBrI,GD4ClH,CACEjylB,KAAM,OACNutN,SAAS,EACTmiY,MAAO,OACPlB,iBAAkB,CAAC,mBACnB7plB,GAlCF,SAAciZ,GACZ,IAAI0xB,EAAQ1xB,EAAK0xB,MACbtvC,EAAO4d,EAAK5d,KACZ81lB,EAAgBxmjB,EAAM2gjB,MAAM77kB,UAC5B48kB,EAAa1hjB,EAAM2gjB,MAAMlC,OACzBuK,EAAmBhpjB,EAAM6/iB,cAAcmL,gBACvCC,EAAoBvG,GAAe1kjB,EAAO,CAC5CgljB,eAAgB,cAEdkG,EAAoBxG,GAAe1kjB,EAAO,CAC5CkljB,aAAa,IAEXiG,EAA2BpC,GAAekC,EAAmBzE,GAC7D4E,EAAsBrC,GAAemC,EAAmBxJ,EAAYsH,GACpEqC,EAAoBpC,GAAsBkC,GAC1CG,EAAmBrC,GAAsBmC,GAC7CprjB,EAAM6/iB,cAAcnvlB,GAAQ,CAC1By6lB,yBAA0BA,EAC1BC,oBAAqBA,EACrBC,kBAAmBA,EACnBC,iBAAkBA,GAEpBtrjB,EAAMkgI,WAAWu+a,OAASnplB,OAAOmH,OAAO,CAAC,EAAGujC,EAAMkgI,WAAWu+a,OAAQ,CACnE,+BAAgC4M,EAChC,sBAAuBC,GAE1B,iBImCD,OAjE4B76kB,EAAAA,YAAiB,SAAgBrO,EAAOmG,GAClE,IACElG,EAGED,EAHFC,SACAxD,EAEEuD,EAFFvD,UAFF,EAIIuD,EADFmplB,cAAAA,OAHF,SAKA,EAAkC96kB,EAAAA,SAAe,MAAjD,eAAOg3K,EAAP,KAAkB+ja,EAAlB,KAEMpQ,GAAYvwjB,EAAAA,GAAAA,GAAyBpa,EAAAA,eAAqBpO,GAAYA,EAASkG,IAAM,KAAMA,GAejG,IAdAoiB,EAAAA,GAAAA,IAAkB,WACX4gkB,GACHC,EA3BN,SAAsB3slB,GACpB,MAA4B,oBAAdA,EAA2BA,IAAcA,CACxD,CAyBkBknT,CAAalnT,IAAcrF,SAASoD,KAEpD,GAAE,CAACiC,EAAW0slB,KACf5gkB,EAAAA,GAAAA,IAAkB,WAChB,GAAI88J,IAAc8ja,EAEhB,OADA3rjB,EAAAA,GAAAA,GAAOr3B,EAAKk/K,GACL,YACL7nJ,EAAAA,GAAAA,GAAOr3B,EAAK,KACb,CAGJ,GAAE,CAACA,EAAKk/K,EAAW8ja,IAChBA,EAAe,CACjB,GAAkB96kB,EAAAA,eAAqBpO,GAAW,CAChD,IAAMyN,EAAW,CACfvH,IAAK6ykB,GAEP,OAAoB3qkB,EAAAA,aAAmBpO,EAAUyN,EAClD,CACD,OAAoB2Z,EAAAA,GAAAA,KAAKhZ,EAAAA,SAAgB,CACvCpO,SAAUA,GAEb,CACD,OAAoBonB,EAAAA,GAAAA,KAAKhZ,EAAAA,SAAgB,CACvCpO,SAAUolL,EAAyBt3I,GAAAA,aAAsB9tC,EAAUolL,GAAaA,GAEnF,ICxDM,SAASgka,GAA8BhlkB,GAC5C,OAAOC,EAAAA,GAAAA,GAAqB,YAAaD,EAC1C,EAC6BE,EAAAA,GAAAA,GAAuB,YAAa,CAAC,SCEpD,SAAS+kkB,GAAkBzujB,GACxC,QAAeh+B,IAAXg+B,EACF,MAAO,CAAC,EAEV,IAAMniC,EAAS,CAAC,EAIhB,OAHAxF,OAAOgB,KAAK2mC,GAAQnL,QAAO,SAAA39B,GAAI,QAAMA,EAAKoS,MAAM,aAAuC,oBAAjB02B,EAAO9oC,GAA9C,IAAqE6D,SAAQ,SAAA7D,GAC1G2G,EAAO3G,GAAQ8oC,EAAO9oC,EACvB,IACM2G,CACR,CCCc,SAAS6wlB,GAAep4f,GACrC,IACEq4f,EAKEr4f,EALFq4f,aACAC,EAIEt4f,EAJFs4f,gBACAC,EAGEv4f,EAHFu4f,kBACAC,EAEEx4f,EAFFw4f,uBACAt8kB,EACE8jF,EADF9jF,UAEF,IAAKm8kB,EAAc,CAGjB,IAAMI,GAAgB1ikB,EAAAA,GAAAA,GAA+B,MAA1ByikB,OAAiC,EAASA,EAAuBt8kB,UAAgC,MAArBq8kB,OAA4B,EAASA,EAAkBr8kB,UAAWA,EAA8B,MAAnBo8kB,OAA0B,EAASA,EAAgBp8kB,WACjOw8kB,GAAc57kB,EAAAA,EAAAA,GAAS,CAAC,EAAsB,MAAnBw7kB,OAA0B,EAASA,EAAgBz9jB,MAAiC,MAA1B29jB,OAAiC,EAASA,EAAuB39jB,MAA4B,MAArB09jB,OAA4B,EAASA,EAAkB19jB,OACpNhsB,GAAQiO,EAAAA,EAAAA,GAAS,CAAC,EAAGw7kB,EAAiBE,EAAwBD,GAOpE,OANIE,EAAc/zlB,OAAS,IACzBmK,EAAMqN,UAAYu8kB,GAEhB12lB,OAAOgB,KAAK21lB,GAAah0lB,OAAS,IACpCmK,EAAMgsB,MAAQ69jB,GAET,CACL7plB,MAAAA,EACA8plB,iBAAajtlB,EAEhB,CAKD,IAAMktlB,ECvCO,SAA8BlvjB,GAA0B,IAAlBmvjB,EAAkB,uDAAJ,GACjE,QAAentlB,IAAXg+B,EACF,MAAO,CAAC,EAEV,IAAMniC,EAAS,CAAC,EAIhB,OAHAxF,OAAOgB,KAAK2mC,GAAQnL,QAAO,SAAA39B,GAAI,OAAIA,EAAKoS,MAAM,aAAuC,oBAAjB02B,EAAO9oC,KAAyBi4lB,EAAYvvlB,SAAS1I,EAA1F,IAAiG6D,SAAQ,SAAA7D,GACtI2G,EAAO3G,GAAQ8oC,EAAO9oC,EACvB,IACM2G,CACR,CD8BuBuxlB,EAAqBh8kB,EAAAA,EAAAA,GAAS,CAAC,EAAG07kB,EAAwBD,IAC1EQ,EAAsCZ,GAAkBI,GACxDS,EAAiCb,GAAkBK,GACnDS,EAAoBZ,EAAaO,GAMjCH,GAAgB1ikB,EAAAA,GAAAA,GAA0B,MAArBkjkB,OAA4B,EAASA,EAAkB/8kB,UAA8B,MAAnBo8kB,OAA0B,EAASA,EAAgBp8kB,UAAWA,EAAqC,MAA1Bs8kB,OAAiC,EAASA,EAAuBt8kB,UAAgC,MAArBq8kB,OAA4B,EAASA,EAAkBr8kB,WACnSw8kB,GAAc57kB,EAAAA,EAAAA,GAAS,CAAC,EAAwB,MAArBm8kB,OAA4B,EAASA,EAAkBp+jB,MAA0B,MAAnBy9jB,OAA0B,EAASA,EAAgBz9jB,MAAiC,MAA1B29jB,OAAiC,EAASA,EAAuB39jB,MAA4B,MAArB09jB,OAA4B,EAASA,EAAkB19jB,OAClRhsB,GAAQiO,EAAAA,EAAAA,GAAS,CAAC,EAAGm8kB,EAAmBX,EAAiBU,EAAgCD,GAO/F,OANIN,EAAc/zlB,OAAS,IACzBmK,EAAMqN,UAAYu8kB,GAEhB12lB,OAAOgB,KAAK21lB,GAAah0lB,OAAS,IACpCmK,EAAMgsB,MAAQ69jB,GAET,CACL7plB,MAAAA,EACA8plB,YAAaM,EAAkBjklB,IAElC,CEhEc,SAASkklB,GAAsBpnS,EAAgBv+R,GAC5D,MAA8B,oBAAnBu+R,EACFA,EAAev+R,GAEjBu+R,CACR,CCPD,IAAM3oS,GAAY,CAAC,cAAe,oBAAqB,cAaxC,SAASgwkB,GAAan5f,GACnC,IAAIo5f,EAEA1nG,EAGE1xZ,EAHF0xZ,YACA6mG,EAEEv4f,EAFFu4f,kBACAhlkB,EACEysE,EADFzsE,WAEFo9N,GAAOnlO,EAAAA,EAAAA,GAA8Bw0E,EAAY72E,IAC7CkwkB,EAA0BH,GAAsBX,EAAmBhlkB,GACzE,EAGI6kkB,IAAet7kB,EAAAA,EAAAA,GAAS,CAAC,EAAG6zO,EAAM,CACpC4nW,kBAAmBc,KAHZvglB,EADT,EACEjK,MACA8plB,EAFF,EAEEA,YAII3jlB,GAAMsiB,EAAAA,GAAAA,GAAWqhkB,EAAwC,MAA3BU,OAAkC,EAASA,EAAwBrklB,IAA6D,OAAvDoklB,EAAwBp5f,EAAWs4f,sBAA2B,EAASc,EAAsBpklB,KAI1M,OAHcmvkB,GAAiBzyF,GAAa50e,EAAAA,EAAAA,GAAS,CAAC,EAAGhE,EAAa,CACpE9D,IAAAA,IACEue,EAEL,CCjCD,IAAM+lkB,GAAsB,CAC1BC,uBAAuB,GAEnBC,GAA4Ct8kB,EAAAA,cAAoBo8kB,IAS/D,SAASG,GAAsBtmkB,GACpC,IACEomkB,EACEr8kB,EAAAA,WAAiBs8kB,IADnBD,sBAEF,OAAO,SAAArmkB,GACL,OAAIqmkB,EACK,GAEFpmkB,EAAqBD,EAC7B,CACF,CCtBD,IAAM/J,GAAY,CAAC,WAAY,WAAY,YAAa,YAAa,gBAAiB,YAAa,OAAQ,aAAc,YAAa,gBAAiB,YAAa,YAAa,QAAS,mBACxLuoS,GAAa,CAAC,WAAY,WAAY,YAAa,YAAa,gBAAiB,cAAe,YAAa,OAAQ,YAAa,gBAAiB,YAAa,QAAS,aAAc,YAAa,SA4BtM,SAASgoS,GAAgBC,GACvB,MAA2B,oBAAbA,EAA0BA,IAAaA,CACtD,CACD,SAASnR,GAAcj4kB,GACrB,YAA4B7E,IAArB6E,EAAQupC,QAChB,CAID,IAMM8/iB,GAAuB,CAAC,EACxBC,GAA6B38kB,EAAAA,YAAiB,SAAuBrO,EAAOmG,GAChF,IAAI+F,EAEA4+kB,EAcE9qlB,EAdF8qlB,SACA7qlB,EAaED,EAbFC,SACAqmB,EAYEtmB,EAZFsmB,UACAxK,EAWE9b,EAXF8b,UACAqtkB,EAUEnplB,EAVFmplB,cACAzM,EASE18kB,EATF08kB,UACAhpkB,EAQE1T,EARF0T,KACAgR,EAOE1kB,EAPF0kB,WACWumkB,EAMTjrlB,EANFu8kB,UACA2O,EAKElrlB,EALFkrlB,cACWC,EAITnrlB,EAJForlB,UAXJ,EAeMprlB,EAHFs9B,UAAAA,OAZJ,MAYgB,CAAC,EAZjB,IAeMt9B,EAFF8mB,MAAAA,OAbJ,MAaY,CAAC,EAbb,EAcIukkB,EACErrlB,EADFqrlB,gBAEF3ukB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCgxkB,EAAaj9kB,EAAAA,OAAa,MAC1Bk9kB,GAAS9ikB,EAAAA,GAAAA,GAAW6ikB,EAAYnllB,GAChCillB,EAAY/8kB,EAAAA,OAAa,MACzBm9kB,GAAkB/ikB,EAAAA,GAAAA,GAAW2ikB,EAAWD,GACxCM,EAAqBp9kB,EAAAA,OAAam9kB,IACxCjjkB,EAAAA,GAAAA,IAAkB,WAChBkjkB,EAAmB98kB,QAAU68kB,CAC9B,GAAE,CAACA,IACJn9kB,EAAAA,oBAA0B88kB,GAAe,kBAAMC,EAAUz8kB,OAAhB,GAAyB,IAClE,IAAM+8kB,EA7DR,SAAuBnP,EAAWzgkB,GAChC,GAAkB,QAAdA,EACF,OAAOygkB,EAET,OAAQA,GACN,IAAK,aACH,MAAO,eACT,IAAK,eACH,MAAO,aACT,IAAK,UACH,MAAO,YACT,IAAK,YACH,MAAO,UACT,QACE,OAAOA,EAEZ,CA6CsBoP,CAAcV,EAAkBnvkB,GAKrD,EAAkCzN,EAAAA,SAAeq9kB,GAAjD,eAAOnP,EAAP,KAAkBqP,EAAlB,KACA,EAA0Dv9kB,EAAAA,SAAew8kB,GAAgBC,IAAzF,eAAOe,EAAP,KAA8BC,EAA9B,KACAz9kB,EAAAA,WAAgB,WACV+8kB,EAAUz8kB,SACZy8kB,EAAUz8kB,QAAQ00B,aAErB,IACDh1B,EAAAA,WAAgB,WACVy8kB,GACFgB,EAAyBjB,GAAgBC,GAE5C,GAAE,CAACA,KACJvikB,EAAAA,GAAAA,IAAkB,WAChB,GAAKsjkB,GAA0Bn4kB,EAA/B,CAGA,IAWIq4kB,EAAkB,CAAC,CACrBz9lB,KAAM,kBACNgE,QAAS,CACPwwlB,YAAaqG,IAEd,CACD76lB,KAAM,OACNgE,QAAS,CACPwwlB,YAAaqG,IAEd,CACD76lB,KAAM,WACNutN,SAAS,EACTmiY,MAAO,aACP/qlB,GAAI,YAEE,IADJ2qC,EACI,EADJA,MAzBFgujB,EA2BqBhujB,EA3BH2+iB,UA4BjB,IAEc,MAAbG,IACFqP,EAAkBA,EAAgB5mlB,OAAOu3kB,IAEvCwO,GAA4C,MAA3BA,EAAcxO,YACjCqP,EAAkBA,EAAgB5mlB,OAAO+llB,EAAcxO,YAEzD,IAAML,EAASyK,GAAa+E,EAAuBP,EAAW38kB,SAASV,EAAAA,EAAAA,GAAS,CAC9EsukB,UAAWmP,GACVR,EAAe,CAChBxO,UAAWqP,KAGb,OADAN,EAAmB98kB,QAAQ0tkB,GACpB,WACLA,EAAOr5Z,UACPyoa,EAAmB98kB,QAAQ,KAC5B,CA/CA,CAgDF,GAAE,CAACk9kB,EAAuB1C,EAAezM,EAAWhpkB,EAAMw3kB,EAAeQ,IAC1E,IAAMxT,EAAa,CACjBqE,UAAWA,GAEW,OAApB8O,IACFnT,EAAWmT,gBAAkBA,GAE/B,IAAMxkkB,GA1GCE,EAAAA,GAAAA,GAHO,CACZjnB,KAAM,CAAC,SAEoB8qlB,GAAsBvB,KA2G7C2C,EAA8D,OAAtD9/kB,EAAoB,MAAboa,EAAoBA,EAAYQ,EAAMhnB,MAAgBoM,EAAO,MAC5E+/kB,EAAY3B,GAAa,CAC7BznG,YAAampG,EACbtC,kBAAmBpsjB,EAAUx9B,KAC7B6plB,uBAAwBjtkB,EACxB+skB,gBAAiB,CACfrikB,KAAM,UACNjhB,IAAKollB,GAEP7mkB,YAAYzW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO0kB,GAChCrX,UAAWwZ,EAAQ/mB,OAErB,OAAoBunB,EAAAA,GAAAA,KAAK2kkB,GAAM/9kB,EAAAA,EAAAA,GAAS,CAAC,EAAGg+kB,EAAW,CACrDhslB,SAA8B,oBAAbA,EAA0BA,EAASi4kB,GAAcj4kB,IAErE,IAaKislB,GAA8B79kB,EAAAA,YAAiB,SAAwBrO,EAAOmG,GAClF,IAgCI1J,EA/BAqulB,EAeE9qlB,EAfF8qlB,SACA7qlB,EAcED,EAdFC,SACW8yM,EAaT/yM,EAbFvD,UAHJ,EAgBMuD,EAZF8b,UAAAA,OAJJ,MAIgB,MAJhB,IAgBM9b,EAXFmplB,cAAAA,OALJ,WAgBMnplB,EAVFmslB,YAAAA,OANJ,SAOIzP,EASE18kB,EATF08kB,UACAhpkB,EAQE1T,EARF0T,KARJ,EAgBM1T,EAPFu8kB,UAAAA,OATJ,MASgB,SAThB,IAgBMv8kB,EANFkrlB,cAAAA,OAVJ,MAUoBH,GAVpB,EAWIK,EAKEprlB,EALForlB,UACAp/jB,EAIEhsB,EAJFgsB,MAZJ,EAgBMhsB,EAHFgmB,WAAAA,OAbJ,WAgBMhmB,EAFFs9B,UAAAA,OAdJ,MAcgB,CAAC,EAdjB,IAgBMt9B,EADF8mB,MAAAA,OAfJ,MAeY,CAAC,EAfb,EAiBEpK,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAO6iT,IAC/C,EAA4Bx0S,EAAAA,UAAe,GAA3C,eAAO+9kB,EAAP,KAAeC,EAAf,KAOA,IAAKF,IAAgBz4kB,KAAUsS,GAAcomkB,GAC3C,OAAO,KAOT,GAAIr5Y,EACFt2M,EAAYs2M,OACP,GAAI+3Y,EAAU,CACnB,IAAMwB,EAAmBzB,GAAgBC,GACzCrulB,EAAY6vlB,GAAoB3S,GAAc2S,IAAoBlkkB,EAAAA,GAAAA,GAAckkkB,GAAkB9xlB,MAAO4tB,EAAAA,GAAAA,GAAc,MAAM5tB,IAC9H,CACD,IAAMsrB,EAAWpS,IAAQy4kB,GAAiBnmkB,IAAcomkB,OAAmBvvlB,EAAT,OAC5D0vlB,EAAkBvmkB,EAAa,CACnCmwjB,GAAIzikB,EACJ8jkB,QAvBkB,WAClB6U,GAAU,EACX,EAsBCxU,SArBmB,WACnBwU,GAAU,EACX,QAoBGxvlB,EACJ,OAAoBwqB,EAAAA,GAAAA,KAAKg7a,GAAQ,CAC/B8mJ,cAAeA,EACf1slB,UAAWA,EACXwD,UAAuBonB,EAAAA,GAAAA,KAAK2jkB,IAAe/8kB,EAAAA,EAAAA,GAAS,CAClD68kB,SAAUA,EACVhvkB,UAAWA,EACXqtkB,cAAeA,EACfzM,UAAWA,EACXv2kB,IAAKA,EACLuN,KAAMsS,GAAcomkB,EAAS14kB,EAC7B6okB,UAAWA,EACX2O,cAAeA,EACfE,UAAWA,EACX9tjB,UAAWA,EACXxW,MAAOA,GACNpK,EAAO,CACRsP,OAAO/d,EAAAA,EAAAA,GAAS,CAEdvO,SAAU,QAEVi6B,IAAK,EACLG,KAAM,EACNhU,QAAAA,GACCkG,GACHq/jB,gBAAiBkB,EACjBtslB,SAAUA,MAGf,IA2HD,iBCtXMqa,GAAY,CAAC,aAAc,kBAAmB,QAAS,aAQvDkykB,IAAaxokB,EAAAA,GAAAA,IAAOkokB,GAAgB,CACxC59lB,KAAM,YACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHFkkB,CAIhB,CAAC,GAsKJ,GAxJ4B3V,EAAAA,YAAiB,SAAgBgY,EAASlgB,GACpE,IAAIsmlB,EACEl/kB,GAAQ4tB,EAAAA,GAAAA,KACRn7B,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,cAGJkgC,EAIExuB,EAJFwuB,WACAk+jB,EAGE1slB,EAHF0slB,gBACA5lkB,EAEE9mB,EAFF8mB,MACAwW,EACEt9B,EADFs9B,UAEF5gB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCqykB,EAAuE,OAAtDF,EAAuB,MAAT3lkB,OAAgB,EAASA,EAAMhnB,MAAgB2slB,EAA4B,MAAdj+jB,OAAqB,EAASA,EAAWw9jB,KAC3I,OAAoB3kkB,EAAAA,GAAAA,KAAKmlkB,IAAYv+kB,EAAAA,EAAAA,GAAS,CAC5C6N,UAAoB,MAATvO,OAAgB,EAASA,EAAMuO,UAC1CgL,MAAO,CACLhnB,KAAM6slB,GAERrvjB,UAAwB,MAAbA,EAAoBA,EAAYovjB,GAC1ChwkB,EAAO,CACRvW,IAAKA,IAER,gDClDM,SAASymlB,GAAuBvokB,GACrC,OAAOC,EAAAA,GAAAA,GAAqB,aAAcD,EAC3C,CACD,IACA,IADuBE,EAAAA,GAAAA,GAAuB,aAAc,CAAC,SAAU,oBAAqB,cAAe,cAAe,UAAW,eAAgB,QAAS,uBAAwB,wBAAyB,sBAAuB,yBAA0B,UCH1PjK,GAAY,CAAC,QAAS,WAAY,UAAW,aAAc,kBAAmB,gBAAiB,uBAAwB,uBAAwB,qBAAsB,uBAAwB,aAAc,iBAAkB,kBAAmB,eAAgB,KAAM,aAAc,kBAAmB,UAAW,SAAU,OAAQ,YAAa,kBAAmB,cAAe,YAAa,QAAS,QAAS,sBAAuB,mBAwB/a,IAeMuykB,IAAgB7okB,EAAAA,GAAAA,IAAO8okB,GAAQ,CACnCx+lB,KAAM,aACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAO82kB,QAAS33jB,EAAWqokB,oBAAsBxnlB,EAAOynlB,kBAAmBtokB,EAAW67jB,OAASh7kB,EAAO0nlB,aAAcvokB,EAAWhR,MAAQnO,EAAO2nlB,YACvJ,GARmBlpkB,EASnB,kBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WACAhR,EAHC,EAGDA,KAHC,OAIGzF,EAAAA,EAAAA,GAAS,CACbxF,QAAS8E,EAAM2V,MAAQ3V,GAAO9E,OAAOka,QACrCotC,cAAe,SACbrrC,EAAWqokB,oBAAsB,CACnCh9hB,cAAe,SACbr8C,GAAQ,CACVq8C,cAAe,QACdrrC,EAAW67jB,QAAX,8DACuC4M,GAAAA,OAAyB,CAC/DxzjB,IAAK,EACL/B,UAAW,UACX,YAAa,CACXw1jB,gBAAiB,aALpB,qDAQoCD,GAAAA,OAAyB,CAC5DtzjB,OAAQ,EACR/B,aAAc,UACd,YAAa,CACXs1jB,gBAAiB,aAZpB,uDAesCD,GAAAA,QAAyBl/kB,EAAAA,EAAAA,GAAS,CAAC,EAAIyW,EAAWuvP,MAGrF,CACFr6O,MAAO,EACP/B,YAAa,WALkF,CAC/FiC,KAAM,EACN/B,WAAY,WAIX,CACDrW,OAAQ,MACRmE,MAAO,SACP,YAAa,CACXunkB,gBAAiB,iBAzBpB,sDA4BqCD,GAAAA,QAAyBl/kB,EAAAA,EAAAA,GAAS,CAAC,EAAIyW,EAAWuvP,MAGpF,CACFn6O,KAAM,EACN/B,WAAY,WALkF,CAC9F6B,MAAO,EACP/B,YAAa,WAIZ,CACDnW,OAAQ,MACRmE,MAAO,SACP,YAAa,CACXunkB,gBAAiB,UAtCpB,GAXA,IAqDGC,IAAiBrpkB,EAAAA,GAAAA,IAAO,MAAO,CACnC11B,KAAM,aACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOod,QAAS+B,EAAWy1H,OAAS50I,EAAO40I,MAAOz1H,EAAW67jB,OAASh7kB,EAAO+nlB,aAAc/nlB,EAAO,mBAAD,QAAoB4e,EAAAA,GAAAA,GAAWO,EAAW63jB,UAAUhllB,MAAM,KAAK,MACzK,GARoBysB,EASpB,kBAzFY5wB,EA0Fbma,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbooB,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ41V,QAAQ7vQ,IAAKr0E,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ8B,KAAK,KAAM,KAC7FyT,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,aAC1CjU,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQzB,OAAOb,MAC5C0E,WAAYpR,EAAMmR,WAAWC,WAC7BwV,QAAS,UACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,IACnCyW,SAAU,IACV3B,OAAQ,EACRq5jB,SAAU,aACVrllB,WAAYqF,EAAMmR,WAAWK,kBAC5B2F,EAAW67jB,OAAS,CACrB7glB,SAAU,WACVw0B,OAAQ,GACPxP,EAAWy1H,OAAS,CACrBhmH,QAAS,WACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,IACnCjX,WAAY,GAAF,QA7GG/U,EA6GQ,GAAK,GA5GnBqL,KAAKoZ,MAAc,IAARzkB,GAAe,KA4GvB,MACV8U,WAAYqF,EAAMmR,WAAWI,oBAlBjB,2BAoBPqukB,GAAAA,OApBO,sCAoBoDl/kB,EAAAA,EAAAA,GAAS,CACvEm/kB,gBAAiB,gBACf1okB,EAAWuvP,OAIVhmQ,EAAAA,EAAAA,GAAS,CACZ8pB,WAAY,QACXrT,EAAWy1H,OAAS,CACrBpiH,WAAY,UAPS9pB,EAAAA,EAAAA,GAAS,CAC9B4pB,YAAa,QACZnT,EAAWy1H,OAAS,CACrBtiH,YAAa,YAzBH,qBA+BPs1jB,GAAAA,OA/BO,uCA+BqDl/kB,EAAAA,EAAAA,GAAS,CACxEm/kB,gBAAiB,eACf1okB,EAAWuvP,OAIVhmQ,EAAAA,EAAAA,GAAS,CACZ4pB,YAAa,QACZnT,EAAWy1H,OAAS,CACrBtiH,YAAa,UAPQ5pB,EAAAA,EAAAA,GAAS,CAC9B8pB,WAAY,QACXrT,EAAWy1H,OAAS,CACrBpiH,WAAY,YApCF,qBA0CPo1jB,GAAAA,OA1CO,qCA0CmDl/kB,EAAAA,EAAAA,GAAS,CACtEm/kB,gBAAiB,gBACjBt1jB,aAAc,QACbpT,EAAWy1H,OAAS,CACrBriH,aAAc,WA9CJ,qBAgDPq1jB,GAAAA,OAhDO,wCAgDsDl/kB,EAAAA,EAAAA,GAAS,CACzEm/kB,gBAAiB,aACjBx1jB,UAAW,QACVlT,EAAWy1H,OAAS,CACrBviH,UAAW,UApDD,GAHX,IA0DG41jB,IAAexpkB,EAAAA,GAAAA,IAAO,OAAQ,CAClC11B,KAAM,aACN+1B,KAAM,QACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOg7kB,KAA1B,GAHAv8jB,EAIlB,gBACDzW,EADC,EACDA,MADC,MAEI,CACLgrB,SAAU,SACV74B,SAAU,WACVmmB,MAAO,MACPnE,OAAQ,SACRsY,UAAW,aACXnc,MAAOtQ,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ41V,QAAQ7vQ,IAAKr0E,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ8B,KAAK,KAAM,IACnF,YAAa,CACX0nB,QAAS,KACT7R,OAAQ,OACRpO,QAAS,QACTD,MAAO,OACPnE,OAAQ,OACR2U,gBAAiB,eACjBnE,UAAW,iBAhBZ,IAmBCu7jB,IAAgB,EAChBC,GAAiB,KACjBC,GAAiB,CACnB1qlB,EAAG,EACHC,EAAG,GAML,SAAS0qlB,GAAoB53lB,EAASmyE,GACpC,OAAO,SAAAlyE,GACDkyE,GACFA,EAAalyE,GAEfD,EAAQC,EACT,CACF,CAGD,IAAMk8W,GAAuB9jW,EAAAA,YAAiB,SAAiBgY,EAASlgB,GACtE,IAAI+F,EAAM2hlB,EAAej0b,EAAO5e,EAAO8yc,EAAmBryc,EAAOsyc,EAAgBlyc,EAAOmyc,EAAcC,EAAmBjyc,EAAOkyc,EAAoBC,EAAuBC,EAAoBlyb,EAAOmyb,EAAqBC,EAAkB9lG,EAAO+lG,EAC9OvulB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,eAER,EA4BM0R,EA3BFuglB,MAAAA,OADJ,SAEItglB,EA0BED,EA1BFC,SAFJ,EA4BMD,EAzBFwuB,WAAAA,OAHJ,MAGiB,CAAC,EAHlB,IA4BMxuB,EAxBF0slB,gBAAAA,OAJJ,MAIsB,CAAC,EAJvB,IA4BM1slB,EAvBFwulB,cAAAA,OALJ,WA4BMxulB,EAtBFyulB,qBAAAA,OANJ,WA4BMzulB,EArBF0ulB,qBAAAA,OAPJ,WA4BM1ulB,EApBF+slB,mBAAoB4B,OARxB,WA4BM3ulB,EAnBF4ulB,qBAAAA,OATJ,WA4BM5ulB,EAlBF6ulB,WAAAA,OAVJ,MAUiB,IAVjB,IA4BM7ulB,EAjBF8ulB,eAAAA,OAXJ,MAWqB,EAXrB,IA4BM9ulB,EAhBF+ulB,gBAAAA,OAZJ,MAYsB,IAZtB,IA4BM/ulB,EAfFgvlB,aAAAA,OAbJ,SAcQC,EAcFjvlB,EAdFiT,GAdJ,EA4BMjT,EAbFkvlB,WAAAA,OAfJ,MAeiB,EAfjB,KA4BMlvlB,EAZFmvlB,gBAAAA,QAhBJ,OAgBsB,KAhBtB,GAiBIC,GAWEpvlB,EAXFovlB,QACAC,GAUErvlB,EAVFqvlB,OACMC,GASJtvlB,EATF0T,KAnBJ,GA4BM1T,EARFu8kB,UAAAA,QApBJ,OAoBgB,SApBhB,GAqBqBgT,GAOfvvlB,EAPFwvlB,gBArBJ,GA4BMxvlB,EANFyvlB,YAAAA,QAtBJ,OAsBkB,CAAC,EAtBnB,MA4BMzvlB,EALFs9B,UAAAA,QAvBJ,OAuBgB,CAAC,EAvBjB,MA4BMt9B,EAJF8mB,MAAAA,QAxBJ,OAwBY,CAAC,EAxBb,GAyBI89F,GAGE5kH,EAHF4kH,MAzBJ,GA4BM5kH,EAFF84kB,oBAAqB4W,QA1BzB,OA0BmD9W,GA1BnD,GA2BIyS,GACErrlB,EADFqrlB,gBAEF3ukB,IAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzC/M,GAAQ4tB,KACR84O,GAA4B,QAApB1mQ,GAAMuO,UACpB,GAAkCzN,EAAAA,WAAlC,iBAAOwhD,GAAP,MAAkB8/hB,GAAlB,MACA,GAAgCthlB,EAAAA,SAAe,MAA/C,iBAAOuhlB,GAAP,MAAiBC,GAAjB,MACMC,GAAuBzhlB,EAAAA,QAAa,GACpC0+kB,GAAqB4B,GAA0BK,EAC/Ce,GAAa1hlB,EAAAA,SACb2hlB,GAAa3hlB,EAAAA,SACb4hlB,GAAa5hlB,EAAAA,SACb6hlB,GAAa7hlB,EAAAA,SACnB,IAAkCia,EAAAA,GAAAA,GAAc,CAC9CmV,WAAY6xjB,GACZ92kB,SAAS,EACTlqB,KAAM,UACNsvC,MAAO,SAJT,iBAAOuyjB,GAAP,MAAkBC,GAAlB,MAMI18kB,GAAOy8kB,GAcLl9kB,IAAKyV,EAAAA,GAAAA,GAAMumkB,GACXoB,GAAiBhilB,EAAAA,SACjBiilB,GAAuBjilB,EAAAA,aAAkB,gBACdxR,IAA3BwzlB,GAAe1hlB,UACjBvX,SAASoD,KAAKwxB,MAAMukkB,iBAAmBF,GAAe1hlB,QACtD0hlB,GAAe1hlB,aAAU9R,GAE3B2tB,aAAa0lkB,GAAWvhlB,QACzB,GAAE,IACHN,EAAAA,WAAgB,WACd,OAAO,WACLmc,aAAaulkB,GAAWphlB,SACxB6b,aAAawlkB,GAAWrhlB,SACxB6b,aAAaylkB,GAAWthlB,SACxB2hlB,IACD,CACF,GAAE,CAACA,KACJ,IAAME,GAAa,SAAAv6lB,GACjBu0B,aAAakjkB,IACbD,IAAgB,EAKhB2C,IAAa,GACTf,KAAW37kB,IACb27kB,GAAOp5lB,EAEV,EACKw6lB,IAAcjokB,EAAAA,GAAAA,IAIpB,SAAAvyB,GACEu0B,aAAakjkB,IACbA,GAAiBjjkB,YAAW,WAC1BgjkB,IAAgB,CACjB,GAAE,IAAMyB,GACTkB,IAAa,GACThB,IAAW17kB,IACb07kB,GAAQn5lB,GAEVu0B,aAAaulkB,GAAWphlB,SACxBohlB,GAAWphlB,QAAU8b,YAAW,WAC9BqlkB,GAAqBnhlB,SAAU,CAChC,GAAEpB,GAAMwV,YAAYhC,SAASC,SAC/B,IACKo4jB,GAAc,SAAAnjlB,GACd65lB,GAAqBnhlB,SAA0B,eAAf1Y,EAAMsE,OAOtCs1D,IACFA,GAAUzT,gBAAgB,SAE5B5xB,aAAawlkB,GAAWrhlB,SACxB6b,aAAaylkB,GAAWthlB,SACpBkglB,GAAcpB,IAAiBqB,EACjCkB,GAAWrhlB,QAAU8b,YAAW,WAC9B+lkB,GAAWv6lB,EACZ,GAAEw3lB,GAAgBqB,EAAiBD,GAEpC2B,GAAWv6lB,GAEd,EACKy6lB,GAAc,SAAAz6lB,GAClBu0B,aAAawlkB,GAAWrhlB,SACxB6b,aAAaylkB,GAAWthlB,SACxBshlB,GAAWthlB,QAAU8b,YAAW,WAC9BgmkB,GAAYx6lB,EACb,GAAEi5lB,EACJ,EACD,IAKIyB,EAAAA,GAAAA,KAJFtmkB,GADF,GACEA,kBACQumkB,GAFV,GAEErmkB,OACSsmkB,GAHX,GAGEvmkB,QACKwmkB,GAJP,GAIE3qlB,IAIF,GAAmCkI,EAAAA,UAAe,GAAzC0ilB,IAAT,gBACM/3D,GAAa,SAAA/iiB,GACjB26lB,GAAkB36lB,IACgB,IAA9Bo0B,GAAkB1b,UACpBoilB,IAAuB,GACvBL,GAAYz6lB,GAEf,EACK8iiB,GAAc,SAAA9iiB,GAIb45D,IACH8/hB,GAAa15lB,EAAMy+D,eAErBm8hB,GAAmB56lB,IACe,IAA9Bo0B,GAAkB1b,UACpBoilB,IAAuB,GACvB3X,GAAYnjlB,GAEf,EACK+6lB,GAAmB,SAAA/6lB,GACvB65lB,GAAqBnhlB,SAAU,EAC/B,IAAMsilB,EAAgBhxlB,EAASD,MAC3BixlB,EAAc79a,cAChB69a,EAAc79a,aAAan9K,EAE9B,EACKi7lB,GAAkB9X,GAClBtgD,GAAmB43D,GAwBzBrilB,EAAAA,WAAgB,WACd,GAAKqF,GAcL,OADAtc,SAASX,iBAAiB,UAAW+yB,GAC9B,WACLpyB,SAASV,oBAAoB,UAAW8yB,EACzC,EATD,SAASA,EAAcqwe,GAEG,WAApBA,EAAYrigB,KAAwC,QAApBqigB,EAAYrigB,KAC9Ci5lB,GAAY52F,EAEf,CAKF,GAAE,CAAC42F,GAAa/8kB,KACjB,IAAMslkB,IAAYvwjB,EAAAA,GAAAA,GAAWxoB,EAASkG,IAAK2qlB,GAAiBnB,GAAcxplB,GAGrEy+G,IAAmB,IAAVA,KACZlxG,IAAO,GAET,IAAM03kB,GAAY/8kB,EAAAA,SAcZ8ilB,GAAkB,CAAC,EACnBC,GAAiC,kBAAVxse,GACzB4pe,GACF2C,GAAgBvse,MAASlxG,KAAQ09kB,IAAkB1C,EAA+B,KAAR9pe,GAC1Euse,GAAgB,oBAAsBz9kB,GAAOT,GAAK,OAElDk+kB,GAAgB,cAAgBC,GAAgBxse,GAAQ,KACxDuse,GAAgB,mBAAqBz9kB,KAAS09kB,GAAgBn+kB,GAAK,MAErE,IAAMg+kB,IAAgBhjlB,EAAAA,EAAAA,GAAS,CAAC,EAAGkjlB,GAAiBz0kB,GAAOzc,EAASD,MAAO,CACzEqN,WAAW6Z,EAAAA,GAAAA,GAAKxK,GAAMrP,UAAWpN,EAASD,MAAMqN,WAChD+lK,aAAc49a,GACd7qlB,IAAK6ykB,IACJgW,EAAe,CAChBh8a,YA3BsB,SAAA/8K,GACtB,IAAMg7lB,EAAgBhxlB,EAASD,MAC3BixlB,EAAcj+a,aAChBi+a,EAAcj+a,YAAY/8K,GAE5B03lB,GAAiB,CACf1qlB,EAAGhN,EAAMwmgB,QACTv5f,EAAGjN,EAAMymgB,SAEP0uF,GAAUz8kB,SACZy8kB,GAAUz8kB,QAAQuyB,QAErB,GAgBG,CAAC,GAWL,IAAMmwjB,GAA8B,CAAC,EAChCzC,IACHqC,GAAc79a,aA1FS,SAAAn9K,GACvB+6lB,GAAiB/6lB,GACjBu0B,aAAaylkB,GAAWthlB,SACxB6b,aAAaulkB,GAAWphlB,SACxB2hlB,KACAD,GAAe1hlB,QAAUvX,SAASoD,KAAKwxB,MAAMukkB,iBAE7Cn5lB,SAASoD,KAAKwxB,MAAMukkB,iBAAmB,OACvCL,GAAWvhlB,QAAU8b,YAAW,WAC9BrzB,SAASoD,KAAKwxB,MAAMukkB,iBAAmBF,GAAe1hlB,QACtDyqkB,GAAYnjlB,EACb,GAAE84lB,EACJ,EA+ECkC,GAAc/9a,WA9EO,SAAAj9K,GACjBgK,EAASD,MAAMkzK,YACjBjzK,EAASD,MAAMkzK,WAAWj9K,GAE5Bq6lB,KACA9lkB,aAAaylkB,GAAWthlB,SACxBshlB,GAAWthlB,QAAU8b,YAAW,WAC9BgmkB,GAAYx6lB,EACb,GAAEk5lB,GACJ,GAuEIT,IACHuC,GAAcK,YAAc1D,GAAoBsD,GAAiBD,GAAcK,aAC/EL,GAAcvwO,aAAektO,GAAoB90D,GAAkBm4D,GAAcvwO,cAC5EqsO,KACHsE,GAA4BC,YAAcJ,GAC1CG,GAA4B3wO,aAAeo4K,KAG1C21D,IACHwC,GAAc3mkB,QAAUsjkB,GAAoB70D,GAAak4D,GAAc3mkB,SACvE2mkB,GAAc1mkB,OAASqjkB,GAAoB50D,GAAYi4D,GAAc1mkB,QAChEwikB,KACHsE,GAA4B/mkB,QAAUyugB,GACtCs4D,GAA4B9mkB,OAASyugB,KAQzC,IAAMkyD,GAAgB78kB,EAAAA,SAAc,WAClC,IAAIkjlB,EACAC,EAAmB,CAAC,CACtBljmB,KAAM,QACNutN,QAAS1nF,QAAQy7d,IACjBt9lB,QAAS,CACPoP,QAASkulB,GACTz7jB,QAAS,KAMb,OAH2D,OAAtDo9jB,EAAwB9B,GAAYvE,gBAA0BqG,EAAsB7U,YACvF8U,EAAmBA,EAAiBrslB,OAAOsqlB,GAAYvE,cAAcxO,aAEhEzukB,EAAAA,EAAAA,GAAS,CAAC,EAAGwhlB,GAAYvE,cAAe,CAC7CxO,UAAW8U,GAEd,GAAE,CAAC5B,GAAUH,KACR/qkB,IAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCi0Q,MAAAA,GACAssU,MAAAA,EACAwM,mBAAAA,GACAxQ,UAAAA,GACAgT,oBAAAA,GACAp1c,MAAO21c,GAAqBnhlB,UAExBkY,GAzfkB,SAAAnC,GACxB,IACEmC,EAKEnC,EALFmC,QACAkmkB,EAIErokB,EAJFqokB,mBACAxM,EAGE77jB,EAHF67jB,MACApmc,EAEEz1H,EAFFy1H,MACAoic,EACE73jB,EADF63jB,UAEIz1jB,EAAQ,CACZu1jB,OAAQ,CAAC,UAAW0Q,GAAsB,oBAAqBxM,GAAS,eACxE59jB,QAAS,CAAC,UAAW49jB,GAAS,eAAgBpmc,GAAS,QAA9C,2BAA0Eh2H,EAAAA,GAAAA,GAAWo4jB,EAAUhllB,MAAM,KAAK,MACnHgplB,MAAO,CAAC,UAEV,OAAOx5jB,EAAAA,GAAAA,GAAeD,EAAO8lkB,GAAwB/lkB,EACtD,CA2eiBG,CAAkBtC,IAC5B8qkB,GAAyG,OAAtFtjlB,EAAyC,OAAjC2hlB,EAAgB/mkB,GAAMu1jB,QAAkBwR,EAAgBr/jB,EAAWs+jB,QAAkB5glB,EAAO2glB,GACvH/T,GAAkL,OAA3Jl/a,EAAgH,OAAvG5e,EAAkD,OAAzC8yc,EAAoBhnkB,GAAMd,YAAsB8nkB,EAAoBt/jB,EAAWqnjB,YAAsB76b,EAAQ00c,IAAmC91b,EAAQg/a,GACjM6Y,GAA+G,OAA3Fh2c,EAA4C,OAAnCsyc,EAAiBjnkB,GAAMnE,SAAmBorkB,EAAiBv/jB,EAAW2jV,SAAmB12N,EAAQ4xc,GAC9HqE,GAAqG,OAAnF71c,EAAwC,OAA/Bmyc,EAAelnkB,GAAMy5jB,OAAiByN,EAAex/jB,EAAWmjkB,OAAiB91c,EAAQ2xc,GACpHoE,GAActc,GAAiBka,IAAiBvhlB,EAAAA,EAAAA,GAAS,CAAC,EAAGwhlB,GAAuD,OAAzCxB,EAAoB3wjB,GAAU++iB,QAAkB4R,EAAoBvB,EAAgBrQ,OAAQ,CAC3KhvkB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQw1jB,OAAuB,MAAfoT,QAAsB,EAASA,GAAYpilB,UAAsH,OAA1G2uI,EAAmD,OAA1Ckyc,EAAqB5wjB,GAAU++iB,QAAkB6R,EAAqBxB,EAAgBrQ,aAAkB,EAASrgc,EAAM3uI,aACrNqX,IACE6nkB,GAAkBjX,GAAiBwD,IAAqB7qkB,EAAAA,EAAAA,GAAS,CAAC,EAAGo9kB,GAAmE,OAAjD8C,EAAwB7wjB,GAAUtX,YAAsBmokB,EAAwBzB,EAAgB1mkB,YAAatB,IACpMmtkB,GAAevc,GAAiBmc,IAAkBxjlB,EAAAA,EAAAA,GAAS,CAAC,EAA+C,OAA3CmglB,EAAqB9wjB,GAAU3a,SAAmByrkB,EAAqB1B,EAAgB/pkB,QAAS,CACpKtV,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQlE,QAAwH,OAA9Gu5I,EAAqD,OAA5Cmyb,EAAsB/wjB,GAAU3a,SAAmB0rkB,EAAsB3B,EAAgB/pkB,cAAmB,EAASu5I,EAAM7uJ,aACpKqX,IACEotkB,GAAoBxc,GAAiBoc,IAAgBzjlB,EAAAA,EAAAA,GAAS,CAAC,EAA2C,OAAvCqglB,EAAmBhxjB,GAAUijjB,OAAiB+N,EAAmB5B,EAAgBnM,MAAO,CAC/JlzkB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQ05jB,MAA8G,OAAtG/3F,EAAiD,OAAxC+lG,EAAoBjxjB,GAAUijjB,OAAiBgO,EAAoB7B,EAAgBnM,YAAiB,EAAS/3F,EAAMn7e,aAC1JqX,IACJ,OAAoBuC,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,CAAcoO,EAAAA,aAAmBpO,EAAUgxlB,KAA6B5pkB,EAAAA,GAAAA,KAAKmokB,IAAiBvhlB,EAAAA,EAAAA,GAAS,CAC/Gb,GAA2B,MAAvBmilB,GAA8BA,GAAsBzC,GACxDvQ,UAAWA,GACXuO,SAAUkE,EAAe,CACvBv/hB,sBAAuB,iBAAO,CAC5B91B,IAAKg0jB,GAAezqlB,EACpB42B,KAAM6zjB,GAAe1qlB,EACrB22B,MAAO+zjB,GAAe1qlB,EACtB42B,OAAQ8zjB,GAAezqlB,EACvB2iB,MAAO,EACPnE,OAAQ,EANa,GAQrBmuC,GACJu7hB,UAAWA,GACX13kB,OAAMm8C,IAAYn8C,GAClBT,GAAIA,GACJ+S,YAAY,GACXqrkB,GAA6BO,GAAa,CAC3C1G,cAAeA,GACfjrlB,SAAU,gBACS8xlB,EADT,EACR1G,gBADQ,OAEShkkB,EAAAA,GAAAA,KAAKyxjB,IAAqB7qkB,EAAAA,EAAAA,GAAS,CACpDguB,QAAS1uB,GAAMwV,YAAYhC,SAASE,SACnC8wkB,EAAsBxF,GAAiB,CACxCtslB,UAAuBgnB,EAAAA,GAAAA,MAAMwqkB,IAAkBxjlB,EAAAA,EAAAA,GAAS,CAAC,EAAG4jlB,GAAc,CACxE5xlB,SAAU,CAAC2kH,GAAO27d,GAAqBl5jB,EAAAA,GAAAA,KAAKqqkB,IAAgBzjlB,EAAAA,EAAAA,GAAS,CAAC,EAAG6jlB,GAAmB,CAC1F3rlB,IAAK0plB,MACD,WARA,OAaf,IAkMD,iBC7vBO,SAASmC,GAAgB/xlB,EAAU8kD,GACxC,IAIIrsD,EAASxF,OAAOwS,OAAO,MAO3B,OANIzF,GAAUikC,EAAAA,SAAAA,IAAajkC,GAAU,SAAU6O,GAC7C,OAAOA,CACR,IAAElZ,SAAQ,SAAU2rC,GAEnB7oC,EAAO6oC,EAAM/pC,KATF,SAAgB+pC,GAC3B,OAAOwjB,IAAS81e,EAAAA,EAAAA,gBAAet5f,GAASwjB,EAAMxjB,GAASA,CACxD,CAOqB6kD,CAAO7kD,EAC5B,IACM7oC,CACR,CAiED,SAASu5lB,GAAQ1wjB,EAAOxvC,EAAMiO,GAC5B,OAAsB,MAAfA,EAAMjO,GAAgBiO,EAAMjO,GAAQwvC,EAAMvhC,MAAMjO,EACxD,CAaM,SAASmgmB,GAAoBxib,EAAWyib,EAAkBta,GAC/D,IAAIua,EAAmBJ,GAAgBtib,EAAUzvK,UAC7CA,EA/DC,SAA4BG,EAAMC,GAIvC,SAASgylB,EAAe76lB,GACtB,OAAOA,KAAO6I,EAAOA,EAAK7I,GAAO4I,EAAK5I,EACvC,CALD4I,EAAOA,GAAQ,CAAC,EAChBC,EAAOA,GAAQ,CAAC,EAQhB,IAcIxC,EAdAy0lB,EAAkBp/lB,OAAOwS,OAAO,MAChC6slB,EAAc,GAElB,IAAK,IAAIC,KAAWpylB,EACdoylB,KAAWnylB,EACTkylB,EAAY18lB,SACdy8lB,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYj9lB,KAAKk9lB,GAKrB,IAAIC,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWrylB,EAAM,CACxB,GAAIiylB,EAAgBI,GAClB,IAAK70lB,EAAI,EAAGA,EAAIy0lB,EAAgBI,GAAS78lB,OAAQgI,IAAK,CACpD,IAAI80lB,EAAiBL,EAAgBI,GAAS70lB,GAC9C40lB,EAAaH,EAAgBI,GAAS70lB,IAAMw0lB,EAAeM,EAC5D,CAGHF,EAAaC,GAAWL,EAAeK,EACxC,CAGD,IAAK70lB,EAAI,EAAGA,EAAI00lB,EAAY18lB,OAAQgI,IAClC40lB,EAAaF,EAAY10lB,IAAMw0lB,EAAeE,EAAY10lB,IAG5D,OAAO40lB,CACR,CAmBgBG,CAAmBT,EAAkBC,GAmCpD,OAlCAl/lB,OAAOgB,KAAK+L,GAAUrK,SAAQ,SAAU4B,GACtC,IAAI+pC,EAAQthC,EAASzI,GACrB,IAAKqjiB,EAAAA,EAAAA,gBAAet5f,GAApB,CACA,IAAIsxjB,EAAWr7lB,KAAO26lB,EAClB9rgB,EAAW7uF,KAAO46lB,EAClBU,EAAYX,EAAiB36lB,GAC7Bu7lB,GAAYl4D,EAAAA,EAAAA,gBAAei4D,KAAeA,EAAU9ylB,MAAMm2kB,IAE1D9vf,GAAawsgB,IAAWE,EAQhB1sgB,IAAWwsgB,GAAYE,EAMxB1sgB,GAAWwsgB,IAAWh4D,EAAAA,EAAAA,gBAAei4D,KAI9C7ylB,EAASzI,IAAO6sC,EAAAA,EAAAA,cAAa9C,EAAO,CAClCs2iB,SAAUA,EAAS7llB,KAAK,KAAMuvC,GAC9B40iB,GAAI2c,EAAU9ylB,MAAMm2kB,GACpBS,KAAMqb,GAAQ1wjB,EAAO,OAAQmuI,GAC7Br2B,MAAO44c,GAAQ1wjB,EAAO,QAASmuI,MAXjCzvK,EAASzI,IAAO6sC,EAAAA,EAAAA,cAAa9C,EAAO,CAClC40iB,IAAI,IAVNl2kB,EAASzI,IAAO6sC,EAAAA,EAAAA,cAAa9C,EAAO,CAClCs2iB,SAAUA,EAAS7llB,KAAK,KAAMuvC,GAC9B40iB,IAAI,EACJS,KAAMqb,GAAQ1wjB,EAAO,OAAQmuI,GAC7Br2B,MAAO44c,GAAQ1wjB,EAAO,QAASmuI,IAZD,CA+BnC,IACMzvK,CACR,CClID,IAAI4qB,GAAS33B,OAAO23B,QAAU,SAAUxgB,GACtC,OAAOnX,OAAOgB,KAAKmW,GAAKpR,KAAI,SAAUC,GACpC,OAAOmR,EAAInR,EACZ,GACF,EAuBG85lB,GAA+B,SAAUld,GAG3C,SAASkd,EAAgBhzlB,EAAOq7C,GAC9B,IAAIp/C,EAIAw9kB,GAFJx9kB,EAAQ65kB,EAAiBnilB,KAAKuB,KAAM8K,EAAOq7C,IAAYnmD,MAE9BuklB,aAAaznlB,MAAKgzf,EAAAA,GAAAA,GAAuB/of,IAUlE,OAPAA,EAAM2hC,MAAQ,CACZq1jB,aAAc,CACZhd,YAAY,GAEdwD,aAAcA,EACdyZ,aAAa,GAERj3lB,CACR,EAlBD6khB,EAAAA,GAAAA,GAAekyE,EAAiBld,GAoBhC,IAAI74kB,EAAS+1lB,EAAgB91lB,UAqE7B,OAnEAD,EAAOyjC,kBAAoB,WACzBxrC,KAAK86C,SAAU,EACf96C,KAAK05C,SAAS,CACZqkjB,aAAc,CACZhd,YAAY,IAGjB,EAEDh5kB,EAAOokC,qBAAuB,WAC5BnsC,KAAK86C,SAAU,CAChB,EAEDgjjB,EAAgBrjb,yBAA2B,SAAkCD,EAAWxjK,GACtF,IDiBmClM,EAAO63kB,ECjBtCsa,EAAmBjmlB,EAAKjM,SACxBw5kB,EAAevtkB,EAAKutkB,aAExB,MAAO,CACLx5kB,SAFgBiM,EAAKgnlB,aDeYlzlB,ECbc0vK,EDaPmoa,ECbkB4B,EDcvDuY,GAAgBhylB,EAAMC,UAAU,SAAUshC,GAC/C,OAAO8C,EAAAA,EAAAA,cAAa9C,EAAO,CACzBs2iB,SAAUA,EAAS7llB,KAAK,KAAMuvC,GAC9B40iB,IAAI,EACJH,OAAQic,GAAQ1wjB,EAAO,SAAUvhC,GACjCq5I,MAAO44c,GAAQ1wjB,EAAO,QAASvhC,GAC/B42kB,KAAMqb,GAAQ1wjB,EAAO,OAAQvhC,IAEhC,KCtB6EkylB,GAAoBxib,EAAWyib,EAAkB1Y,GAC3HyZ,aAAa,EAEhB,EAGDj2lB,EAAOw8kB,aAAe,SAAsBl4iB,EAAO1hC,GACjD,IAAIszlB,EAAsBnB,GAAgB98lB,KAAK8K,MAAMC,UACjDshC,EAAM/pC,OAAO27lB,IAEb5xjB,EAAMvhC,MAAM63kB,UACdt2iB,EAAMvhC,MAAM63kB,SAASh4kB,GAGnB3K,KAAK86C,SACP96C,KAAK05C,UAAS,SAAUhR,GACtB,IAAI39B,GAAWgO,EAAAA,EAAAA,GAAS,CAAC,EAAG2vB,EAAM39B,UAGlC,cADOA,EAASshC,EAAM/pC,KACf,CACLyI,SAAUA,EAEb,IAEJ,EAEDhD,EAAOumC,OAAS,WACd,IAAI+vJ,EAAcr+L,KAAK8K,MACnBunB,EAAYgsK,EAAYjtK,UACxB8skB,EAAe7/Z,EAAY6/Z,aAC3BpzlB,GAAQ2c,EAAAA,EAAAA,GAA8B42K,EAAa,CAAC,YAAa,iBAEjE0/Z,EAAe/9lB,KAAK0oC,MAAMq1jB,aAC1BhzlB,EAAW4qB,GAAO31B,KAAK0oC,MAAM39B,UAAUhH,IAAIm6lB,GAK/C,cAJOpzlB,EAAMg2kB,cACNh2kB,EAAMq5I,aACNr5I,EAAM42kB,KAEK,OAAdrvjB,EACkBlZ,EAAAA,cAAoB8pkB,GAAuBpykB,SAAU,CACvE3S,MAAO6/lB,GACNhzlB,GAGeoO,EAAAA,cAAoB8pkB,GAAuBpykB,SAAU,CACvE3S,MAAO6/lB,GACO5klB,EAAAA,cAAoBkZ,EAAWvnB,EAAOC,GACvD,EAEM+ylB,CACR,CA3FkC,CA2FjC3klB,EAAAA,WAEF2klB,GAAgB5+jB,UAyDZ,CAAC,EACL4+jB,GAAgBnllB,aA5KG,CACjByY,UAAW,MACX8skB,aAAc,SAAsB7xjB,GAClC,OAAOA,CACR,GAyKH,0ECjCI8xjB,IAAwBrtlB,EAAAA,GAAAA,IAAiB,SAAUhG,EAAOwF,GAU5D,IAAID,EAASvF,EAAMuF,OACfF,GAAayF,EAAAA,GAAAA,GAAgB,CAACvF,QAAS1I,GAAWuJ,EAAAA,EAAAA,YAAWC,GAAAA,IAM7DitlB,GAAW3gF,EAAAA,EAAAA,UAsDf,OArDArkgB,EAAAA,GAAAA,IAAqC,WACnC,IAAI9W,EAAMgO,EAAMhO,IAAM,UAElBoG,EAAQ,IAAI4H,EAAM5H,MAAM2+B,YAAY,CACtC/kC,IAAKA,EACLwF,MAAOwI,EAAM5H,MAAMZ,MACnBP,UAAW+I,EAAM5H,MAAMnB,UACvBK,OAAQ0I,EAAM5H,MAAMhB,WAElB22lB,GAAc,EAEd1zlB,EAAOzI,SAASotE,cAAc,uBAA0BhtE,EAAM,IAAM6N,EAAW/W,KAAO,MAc1F,OAZIkX,EAAM5H,MAAMvB,KAAKxG,SACnB+H,EAAMxB,OAASoJ,EAAM5H,MAAMvB,KAAK,IAGrB,OAATwD,IACF0zlB,GAAc,EAEd1zlB,EAAKrC,aAAa,eAAgBhG,GAClCoG,EAAMT,QAAQ,CAAC0C,KAGjByzlB,EAAS3klB,QAAU,CAAC/Q,EAAO21lB,GACpB,WACL31lB,EAAMS,OACP,CACF,GAAE,CAACmH,KACJ8I,EAAAA,GAAAA,IAAqC,WACnC,IAAIkllB,EAAkBF,EAAS3klB,QAC3B/Q,EAAQ41lB,EAAgB,GAG5B,GAFkBA,EAAgB,GAGhCA,EAAgB,IAAK,MADvB,CAUA,QALwB32lB,IAApBwI,EAAWhF,OAEbiM,EAAAA,GAAAA,IAAa9G,EAAOH,EAAWhF,MAAM,GAGnCzC,EAAMvB,KAAKxG,OAAQ,CAErB,IAAI6L,EAAU9D,EAAMvB,KAAKuB,EAAMvB,KAAKxG,OAAS,GAAG49lB,mBAChD71lB,EAAMxB,OAASsF,EACf9D,EAAMS,OACP,CAEDmH,EAAMnI,OAAO,GAAIgI,EAAYzH,GAAO,EAdnC,CAeF,GAAE,CAAC4H,EAAOH,EAAW/W,OACf,IACR,IAMD,SAASksC,KACP,IAAK,IAAIwnB,EAAOh1C,UAAUnX,OAAQ/C,EAAO,IAAIiH,MAAMioD,GAAOz3C,EAAO,EAAGA,EAAOy3C,EAAMz3C,IAC/EzX,EAAKyX,GAAQyC,UAAUzC,GAGzB,OAAOO,EAAAA,GAAAA,GAAgBhY,EACxB,CAED,IAAI4gmB,GAAY,WACd,IAAIC,EAAan5jB,GAAIvtB,WAAM,EAAQD,WAC/B1e,EAAO,aAAeqlmB,EAAWrlmB,KAErC,MAAO,CACLA,KAAMA,EACNiX,OAAQ,cAAgBjX,EAAO,IAAMqlmB,EAAWpulB,OAAS,IACzD6E,KAAM,EACN5X,SAAU,WACR,MAAO,QAAU0C,KAAK5G,KAAO,IAAM4G,KAAKqQ,OAAS,OAClD,EAEJ,ECvKD,OA9EA,SAAgBvF,GACd,IACEqN,EASErN,EATFqN,UACAwZ,EAQE7mB,EARF6mB,QAFF,EAUI7mB,EAPF4zlB,QAAAA,OAHF,SAIEC,EAME7zlB,EANF6zlB,QACAC,EAKE9zlB,EALF8zlB,QACAC,EAIE/zlB,EAJF+zlB,WACIlb,EAGF74kB,EAHFm2kB,GACA0B,EAEE73kB,EAFF63kB,SACA57iB,EACEj8B,EADFi8B,QAEF,EAA8B5tB,EAAAA,UAAe,GAA7C,eAAO2llB,EAAP,KAAgBC,EAAhB,KACMC,GAAkBhtkB,EAAAA,GAAAA,GAAK7Z,EAAWwZ,EAAQstkB,OAAQttkB,EAAQutkB,cAAeR,GAAW/skB,EAAQwtkB,eAC5FC,EAAe,CACnBzukB,MAAOkukB,EACPrykB,OAAQqykB,EACRp6jB,KAAOo6jB,EAAa,EAAKD,EACzBh6jB,MAAQi6jB,EAAa,EAAKF,GAEtBU,GAAiBrtkB,EAAAA,GAAAA,GAAKL,EAAQ0a,MAAOyyjB,GAAWntkB,EAAQ2tkB,aAAcZ,GAAW/skB,EAAQ4tkB,cAc/F,OAbK5b,GAAWmb,GACdC,GAAW,GAEb5llB,EAAAA,WAAgB,WACd,IAAKwqkB,GAAsB,MAAZhB,EAAkB,CAE/B,IAAMn2f,EAAYj3D,WAAWotjB,EAAU57iB,GACvC,OAAO,WACLzR,aAAak3D,EACd,CACF,CAEF,GAAE,CAACm2f,EAAUgB,EAAQ58iB,KACF5U,EAAAA,GAAAA,KAAK,OAAQ,CAC/Bha,UAAW6mlB,EACXlokB,MAAOsokB,EACPr0lB,UAAuBonB,EAAAA,GAAAA,KAAK,OAAQ,CAClCha,UAAWknlB,KAGhB,EC5CD,gBCDEG,GACAC,GACAC,GACAC,GDDF,IAD2BtwkB,EAAAA,GAAAA,GAAuB,iBAAkB,CAAC,OAAQ,SAAU,gBAAiB,gBAAiB,QAAS,eAAgB,iBCH5IjK,GAAY,CAAC,SAAU,UAAW,aAkBlCw6kB,GAAgBpB,GAAUgB,KAAOA,GAAE,6IAWnCK,GAAerB,GAAUiB,KAAQA,GAAG,qFASpCK,GAAkBtB,GAAUkB,KAAQA,GAAG,oJAahCK,IAAkBjxkB,EAAAA,GAAAA,IAAO,OAAQ,CAC5C11B,KAAM,iBACN+1B,KAAM,QAFuBL,CAG5B,CACDuU,SAAU,SACVw3B,cAAe,OACfrwD,SAAU,WACV+I,OAAQ,EACRkxB,IAAK,EACLC,MAAO,EACPC,OAAQ,EACRC,KAAM,EACNhI,aAAc,YAKHojkB,IAAoBlxkB,EAAAA,GAAAA,IAAOmxkB,GAAQ,CAC9C7mmB,KAAM,iBACN+1B,KAAM,UAFyBL,CAG9B6wkB,KAAQA,GAAG,4yBA2CVO,GAAAA,cAAkCN,GAlGrB,KAkG8C,qBAC7DvnlB,MACUwV,YAAYrC,OAAOC,SAFgC,GAErBy0kB,GAAAA,eAAkC,qBAC1E7nlB,MACUwV,YAAYhC,SAASE,OAF2C,GAElCm0kB,GAAAA,MAA0BA,GAAAA,aAAiCL,GAtGpF,KAsG4G,qBAC3HxnlB,MACUwV,YAAYrC,OAAOC,SAF8F,GAEnFy0kB,GAAAA,aAAiCJ,IAAiB,qBAC1FznlB,MACUwV,YAAYrC,OAAOC,SAF6D,IAStF00kB,GAA2BhnlB,EAAAA,YAAiB,SAAqBgY,EAASlgB,GAC9E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,mBAER,EAIM0R,EAHFkxM,OAAQokZ,OADZ,WAIMt1lB,EAFF6mB,QAAAA,OAFJ,MAEc,CAAC,EAFf,EAGIxZ,EACErN,EADFqN,UAEFqP,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAC/C,EAA8BjM,EAAAA,SAAe,IAA7C,eAAOknlB,EAAP,KAAgBC,EAAhB,KACM9C,EAAUrklB,EAAAA,OAAa,GACvBonlB,EAAiBpnlB,EAAAA,OAAa,MACpCA,EAAAA,WAAgB,WACVonlB,EAAe9mlB,UACjB8mlB,EAAe9mlB,UACf8mlB,EAAe9mlB,QAAU,KAE5B,GAAE,CAAC4mlB,IAGJ,IAAMG,EAAoBrnlB,EAAAA,QAAa,GAGjCsnlB,EAAatnlB,EAAAA,OAAa,MAG1BunlB,EAAmBvnlB,EAAAA,OAAa,MAChC5R,EAAY4R,EAAAA,OAAa,MAC/BA,EAAAA,WAAgB,WACd,OAAO,WACLmc,aAAamrkB,EAAWhnlB,QACzB,CACF,GAAE,IACH,IAAMknlB,EAAcxnlB,EAAAA,aAAkB,SAAA7U,GACpC,IACEo6lB,EAKEp6lB,EALFo6lB,QACAC,EAIEr6lB,EAJFq6lB,QACAC,EAGEt6lB,EAHFs6lB,QACAC,EAEEv6lB,EAFFu6lB,WACAliG,EACEr4f,EADFq4f,GAEF2jG,GAAW,SAAAM,GAAU,yBAAQA,GAAR,EAAiCzukB,EAAAA,GAAAA,KAAK6tkB,GAAmB,CAC5ErukB,QAAS,CACPstkB,QAAQjtkB,EAAAA,GAAAA,GAAKL,EAAQstkB,OAAQiB,GAAAA,QAC7BhB,eAAeltkB,EAAAA,GAAAA,GAAKL,EAAQutkB,cAAegB,GAAAA,eAC3Cf,eAAentkB,EAAAA,GAAAA,GAAKL,EAAQwtkB,cAAee,GAAAA,eAC3C7zjB,OAAOra,EAAAA,GAAAA,GAAKL,EAAQ0a,MAAO6zjB,GAAAA,OAC3BZ,cAActtkB,EAAAA,GAAAA,GAAKL,EAAQ2tkB,aAAcY,GAAAA,cACzCX,cAAcvtkB,EAAAA,GAAAA,GAAKL,EAAQ4tkB,aAAcW,GAAAA,eAE3Cn5jB,QArKW,IAsKX23jB,QAASA,EACTC,QAASA,EACTC,QAASA,EACTC,WAAYA,GACXrB,EAAQ/jlB,UAdU,IAerB+jlB,EAAQ/jlB,SAAW,EACnB8mlB,EAAe9mlB,QAAUkjf,CAC1B,GAAE,CAAChre,IACE4K,EAAQpjB,EAAAA,aAAkB,WAA6C,IAA5CpY,EAA4C,uDAApC,CAAC,EAAG3D,EAAgC,uDAAtB,CAAC,EAAGu/f,EAAkB,uDAAb,WAAQ,EACtE,EAIIv/f,EAHFshmB,QAAAA,OADF,WAIIthmB,EAFF4+M,OAAAA,OAFF,MAEWokZ,GAAchjmB,EAAQshmB,QAFjC,IAIIthmB,EADFyjmB,YAAAA,OAHF,SAKA,GAA8C,eAAhC,MAAT9/lB,OAAgB,EAASA,EAAMsE,OAAyBm7lB,EAAkB/mlB,QAC7E+mlB,EAAkB/mlB,SAAU,MAD9B,CAI8C,gBAAhC,MAAT1Y,OAAgB,EAASA,EAAMsE,QAClCm7lB,EAAkB/mlB,SAAU,GAE9B,IASIkllB,EACAC,EACAC,EAXErylB,EAAUq0lB,EAAc,KAAOt5lB,EAAUkS,QACzC6gD,EAAO9tD,EAAUA,EAAQ+tD,wBAA0B,CACvD5pC,MAAO,EACPnE,OAAQ,EACRoY,KAAM,EACNH,IAAK,GAOP,GAAIu3K,QAAoBr0M,IAAV5G,GAAyC,IAAlBA,EAAMwmgB,SAAmC,IAAlBxmgB,EAAMymgB,UAAkBzmgB,EAAMwmgB,UAAYxmgB,EAAM2iE,QAC1Gi7hB,EAAUp1lB,KAAKoZ,MAAM23C,EAAK3pC,MAAQ,GAClCiukB,EAAUr1lB,KAAKoZ,MAAM23C,EAAK9tC,OAAS,OAC9B,CACL,MAGIzrB,EAAM2iE,SAAW3iE,EAAM2iE,QAAQ/iE,OAAS,EAAII,EAAM2iE,QAAQ,GAAK3iE,EAFjEwmgB,EADF,EACEA,QACAC,EAFF,EAEEA,QAEFm3F,EAAUp1lB,KAAKoZ,MAAM4kf,EAAUjtc,EAAK11B,MACpCg6jB,EAAUr1lB,KAAKoZ,MAAM6kf,EAAUltc,EAAK71B,IACrC,CACD,GAAIu3K,GACF6iZ,EAAat1lB,KAAK42L,MAAM,EAAI,KAAJ,IAAI7lI,EAAK3pC,MAAS,GAAlB,SAAsB2pC,EAAK9tC,OAAU,IAAK,IAGjD,IAAM,IACrBqykB,GAAc,OAEX,CACL,IAAMiC,EAAqF,EAA7Ev3lB,KAAKkuB,IAAIluB,KAAKD,KAAKkD,EAAUA,EAAQswD,YAAc,GAAK6hiB,GAAUA,GAAe,EACzFoC,EAAsF,EAA9Ex3lB,KAAKkuB,IAAIluB,KAAKD,KAAKkD,EAAUA,EAAQmsJ,aAAe,GAAKimc,GAAUA,GAAe,EAChGC,EAAat1lB,KAAK42L,KAAK,SAAA2ga,EAAS,GAAT,SAAaC,EAAS,GAC9C,CAGY,MAAThgmB,GAAiBA,EAAM2iE,QAIQ,OAA7Bg9hB,EAAiBjnlB,UAEnBinlB,EAAiBjnlB,QAAU,WACzBknlB,EAAY,CACVjC,QAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAliG,GAAAA,GAEH,EAED8jG,EAAWhnlB,QAAU8b,YAAW,WAC1BmrkB,EAAiBjnlB,UACnBinlB,EAAiBjnlB,UACjBinlB,EAAiBjnlB,QAAU,KAE9B,GApPmB,KAuPtBknlB,EAAY,CACVjC,QAAAA,EACAC,QAAAA,EACAC,QAAAA,EACAC,WAAAA,EACAliG,GAAAA,GAtEH,CAyEF,GAAE,CAACyjG,EAAYO,IACVjC,EAAUvllB,EAAAA,aAAkB,WAChCojB,EAAM,CAAC,EAAG,CACRmikB,SAAS,GAEZ,GAAE,CAACnikB,IACEk2J,EAAOt5K,EAAAA,aAAkB,SAACpY,EAAO47f,GAKrC,GAJArne,aAAamrkB,EAAWhnlB,SAIsB,cAAhC,MAAT1Y,OAAgB,EAASA,EAAMsE,OAAwBq7lB,EAAiBjnlB,QAM3E,OALAinlB,EAAiBjnlB,UACjBinlB,EAAiBjnlB,QAAU,UAC3BgnlB,EAAWhnlB,QAAU8b,YAAW,WAC9Bk9J,EAAK1xL,EAAO47f,EACb,KAGH+jG,EAAiBjnlB,QAAU,KAC3B6mlB,GAAW,SAAAM,GACT,OAAIA,EAAWjgmB,OAAS,EACfigmB,EAAW77lB,MAAM,GAEnB67lB,CACR,IACDL,EAAe9mlB,QAAUkjf,CAC1B,GAAE,IAMH,OALAxjf,EAAAA,oBAA0BlI,GAAK,iBAAO,CACpCytlB,QAAAA,EACAnikB,MAAAA,EACAk2J,KAAAA,EAH6B,GAI3B,CAACisa,EAASnikB,EAAOk2J,KACDtgK,EAAAA,GAAAA,KAAK4tkB,IAAiBhnlB,EAAAA,EAAAA,GAAS,CACjDZ,WAAW6Z,EAAAA,GAAAA,GAAKkukB,GAAAA,KAAyBvukB,EAAQ/mB,KAAMuN,GACvDlH,IAAK1J,GACJigB,EAAO,CACRzc,UAAuBonB,EAAAA,GAAAA,KAAK2rkB,GAAiB,CAC3C1skB,UAAW,KACXswjB,MAAM,EACN32kB,SAAUs1lB,MAGf,IAiBD,MC5UO,SAASW,GAA0B7xkB,GACxC,OAAOC,EAAAA,GAAAA,GAAqB,gBAAiBD,EAC9C,CACD,OACA,IAD0BE,EAAAA,GAAAA,GAAuB,gBAAiB,CAAC,OAAQ,WAAY,iBCHjFjK,GAAY,CAAC,SAAU,eAAgB,WAAY,YAAa,YAAa,WAAY,gBAAiB,qBAAsB,cAAe,wBAAyB,gBAAiB,SAAU,UAAW,gBAAiB,cAAe,UAAW,iBAAkB,YAAa,UAAW,cAAe,eAAgB,YAAa,aAAc,cAAe,eAAgB,WAAY,mBAAoB,iBAAkB,QA+Bva67kB,IAAiBnykB,EAAAA,GAAAA,IAAO,SAAU,CAC7C11B,KAAM,gBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHSkkB,EAAA,IAK5B8B,QAAS,cACTiT,WAAY,SACZD,eAAgB,SAChBp5B,SAAU,WACVs6B,UAAW,aACXo8jB,wBAAyB,cACzB//jB,gBAAiB,cAGjBggkB,QAAS,EACTxhkB,OAAQ,EACRX,OAAQ,EAERpC,aAAc,EACdqC,QAAS,EAETrqB,OAAQ,UACR8b,WAAY,OACZ0wkB,cAAe,SACfC,cAAe,OAEfC,iBAAkB,OAElBC,eAAgB,OAEhB54kB,MAAO,UACP,sBAAuB,CACrB64kB,YAAa,UAhCa,uBAmCtBC,GAAAA,UAA+B,CACnC5miB,cAAe,OAEfjmD,OAAQ,aAtCkB,WAwC5B,eAAgB,CACd8slB,YAAa,UAzCa,KAkDxBC,GAA0BxolB,EAAAA,YAAiB,SAAoBgY,EAASlgB,GAC5E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,kBAGJysB,EA4BE/a,EA5BF+a,OADJ,EA6BM/a,EA3BF82lB,aAAAA,OAFJ,SAGI72lB,EA0BED,EA1BFC,SACAoN,EAyBErN,EAzBFqN,UAJJ,EA6BMrN,EAxBFsmB,UAAAA,OALJ,MAKgB,SALhB,IA6BMtmB,EAvBF0a,SAAAA,OANJ,WA6BM1a,EAtBF+2lB,cAAAA,OAPJ,WA6BM/2lB,EArBFg3lB,mBAAAA,OARJ,WA6BMh3lB,EApBFi3lB,YAAAA,OATJ,WA6BMj3lB,EAnBFk3lB,cAAAA,OAVJ,MAUoB,IAVpB,EAWI3skB,EAkBEvqB,EAlBFuqB,OACAioJ,EAiBExyK,EAjBFwyK,QACA2kb,EAgBEn3lB,EAhBFm3lB,cACA3oM,EAeExuZ,EAfFwuZ,YACAlkY,EAcEtqB,EAdFsqB,QACA8skB,EAaEp3lB,EAbFo3lB,eACAxkb,EAYE5yK,EAZF4yK,UACAE,EAWE9yK,EAXF8yK,QACAC,EAUE/yK,EAVF+yK,YACA2tM,EASE1gX,EATF0gX,aACAztM,EAQEjzK,EARFizK,UACAC,EAOElzK,EAPFkzK,WACAC,EAMEnzK,EANFmzK,YACAC,EAKEpzK,EALFozK,aAxBJ,EA6BMpzK,EAJF01C,SAAAA,OAzBJ,MAyBe,EAzBf,EA0BI2hjB,EAGEr3lB,EAHFq3lB,iBACAC,EAEEt3lB,EAFFs3lB,eACA/8lB,EACEyF,EADFzF,KAEFmiB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCi9kB,EAAYlplB,EAAAA,OAAa,MACzBmplB,EAAYnplB,EAAAA,OAAa,MACzBoplB,GAAkBhvkB,EAAAA,GAAAA,GAAW+ukB,EAAWF,GAC9C,GAKI3G,EAAAA,GAAAA,KAJFtmkB,EADF,EACEA,kBACSwmkB,EAFX,EAEEvmkB,QACQsmkB,EAHV,EAGErmkB,OACKumkB,EAJP,EAIE3qlB,IAEF,EAAwCkI,EAAAA,UAAe,GAAvD,eAAO2uB,GAAP,KAAqB06jB,GAArB,KACIh9kB,GAAYsiB,IACd06jB,IAAgB,GAElBrplB,EAAAA,oBAA0B0M,GAAQ,iBAAO,CACvCiiB,aAAc,WACZ06jB,IAAgB,GAChBH,EAAU5olB,QAAQ4M,OACnB,EAJ+B,GAK9B,IACJ,OAAwClN,EAAAA,UAAe,GAAvD,iBAAOsplB,GAAP,MAAqBC,GAArB,MACAvplB,EAAAA,WAAgB,WACduplB,IAAgB,EACjB,GAAE,IACH,IAAMC,GAAoBF,KAAiBZ,IAAkBr8kB,EAM7D,SAASo9kB,GAAiBC,EAAcC,GAAsD,IAAvCC,EAAuC,uDAApBjB,EACxE,OAAOxukB,EAAAA,GAAAA,IAAiB,SAAAvyB,GAQtB,OAPI+hmB,GACFA,EAAc/hmB,IAEDgimB,GACAT,EAAU7olB,SACvB6olB,EAAU7olB,QAAQoplB,GAAc9hmB,IAE3B,CACR,GACF,CAhBDoY,EAAAA,WAAgB,WACV2uB,IAAgBi6jB,IAAgBF,GAAiBY,IACnDH,EAAU7olB,QAAQillB,SAErB,GAAE,CAACmD,EAAeE,EAAaj6jB,GAAc26jB,KAa9C,IAAMO,GAAkBJ,GAAiB,QAAS/kb,GAC5CuxH,GAAoBwzT,GAAiB,OAAQX,GAC7CgB,GAAkBL,GAAiB,OAAQtpM,GAC3C4pM,GAAgBN,GAAiB,OAAQ7kb,GACzC6lX,GAAmBg/D,GAAiB,QAAQ,SAAA7hmB,GAC5C+mC,IACF/mC,EAAMo7D,iBAEJqvT,GACFA,EAAazqX,EAEhB,IACKoimB,GAAmBP,GAAiB,QAAS1kb,GAC7Cklb,GAAiBR,GAAiB,OAAQ5kb,GAC1Cqlb,GAAkBT,GAAiB,OAAQ3kb,GAC3C6lX,GAAa8+D,GAAiB,QAAQ,SAAA7hmB,GAC1C26lB,EAAkB36lB,IACgB,IAA9Bo0B,EAAkB1b,SACpB+olB,IAAgB,GAEdntkB,GACFA,EAAOt0B,EAEV,IAAE,GACG8iiB,IAAcvwgB,EAAAA,GAAAA,IAAiB,SAAAvyB,GAE9BshmB,EAAU5olB,UACb4olB,EAAU5olB,QAAU1Y,EAAMy+D,eAE5Bm8hB,EAAmB56lB,IACe,IAA9Bo0B,EAAkB1b,UACpB+olB,IAAgB,GACZN,GACFA,EAAenhmB,IAGfq0B,GACFA,EAAQr0B,EAEX,IACKuimB,GAAoB,WACxB,IAAMp4kB,EAASm3kB,EAAU5olB,QACzB,OAAO2X,GAA2B,WAAdA,KAA+C,MAAnBlG,EAAOjS,SAAmBiS,EAAO2wE,KAClF,EAKK0ngB,GAAapqlB,EAAAA,QAAa,GAC1Bmb,IAAgBhB,EAAAA,GAAAA,IAAiB,SAAAvyB,GAEjCghmB,IAAgBwB,GAAW9plB,SAAWquB,IAAgBw6jB,EAAU7olB,SAAyB,MAAd1Y,EAAMuB,MACnFihmB,GAAW9plB,SAAU,EACrB6olB,EAAU7olB,QAAQg5K,KAAK1xL,GAAO,WAC5BuhmB,EAAU7olB,QAAQ8iB,MAAMx7B,EACzB,KAECA,EAAM4W,SAAW5W,EAAMy+D,eAAiB8jiB,MAAqC,MAAdvimB,EAAMuB,KACvEvB,EAAMo7D,iBAEJuhH,GACFA,EAAU38K,GAIRA,EAAM4W,SAAW5W,EAAMy+D,eAAiB8jiB,MAAqC,UAAdvimB,EAAMuB,MAAoBkjB,IAC3FzkB,EAAMo7D,iBACFmhH,GACFA,EAAQv8K,GAGb,IACKyimB,IAAclwkB,EAAAA,GAAAA,IAAiB,SAAAvyB,GAG/BghmB,GAA6B,MAAdhhmB,EAAMuB,KAAeggmB,EAAU7olB,SAAWquB,KAAiB/mC,EAAMmiE,mBAClFqgiB,GAAW9plB,SAAU,EACrB6olB,EAAU7olB,QAAQg5K,KAAK1xL,GAAO,WAC5BuhmB,EAAU7olB,QAAQillB,QAAQ39lB,EAC3B,KAEC68K,GACFA,EAAQ78K,GAINu8K,GAAWv8K,EAAM4W,SAAW5W,EAAMy+D,eAAiB8jiB,MAAqC,MAAdvimB,EAAMuB,MAAgBvB,EAAMmiE,kBACxGo6G,EAAQv8K,EAEX,IACG0imB,GAAgBrykB,EACE,WAAlBqykB,KAA+Bj8kB,EAAMq0E,MAAQr0E,EAAMgwF,MACrDisf,GAAgBzB,GAElB,IAAM0B,GAAc,CAAC,EACC,WAAlBD,IACFC,GAAYr+lB,UAAgBsC,IAATtC,EAAqB,SAAWA,EACnDq+lB,GAAYl+kB,SAAWA,IAElBgC,EAAMq0E,MAASr0E,EAAMgwF,KACxBksf,GAAYxxkB,KAAO,UAEjB1M,IACFk+kB,GAAY,iBAAmBl+kB,IAGnC,IAAMs+jB,IAAYvwjB,EAAAA,GAAAA,GAAWtiB,EAAK2qlB,EAAiByG,GASnD,IAAM7ykB,IAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC82lB,aAAAA,EACAxwkB,UAAAA,EACA5L,SAAAA,EACAq8kB,cAAAA,EACAC,mBAAAA,EACAC,YAAAA,EACAvhjB,SAAAA,EACA1Y,aAAAA,KAEInW,GA5QkB,SAAAnC,GACxB,IACEhK,EAIEgK,EAJFhK,SACAsiB,EAGEtY,EAHFsY,aACA67jB,EAEEn0kB,EAFFm0kB,sBACAhykB,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAQ4a,GAAY,WAAYsiB,GAAgB,iBAEnD87jB,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAOovkB,GAA2BrvkB,GAIzE,OAHImW,GAAgB67jB,IAClBC,EAAgBh5lB,MAAhB,WAA4B+4lB,IAEvBC,CACR,CA6PiB9xkB,CAAkBtC,IAClC,OAAoBuC,EAAAA,GAAAA,MAAMkvkB,IAAgBlolB,EAAAA,EAAAA,GAAS,CACjDb,GAAIurlB,GACJtrlB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQ/mB,KAAMuN,GAC9BqX,WAAYA,GACZ6F,OAAQyugB,GACRxmX,QAASA,EACT2kb,cAAe7yT,GACfh6Q,QAASyugB,GACTnmX,UAAWppJ,GACXspJ,QAAS4lb,GACT3lb,YAAamlb,GACbx3O,aAAco4K,GACd7lX,UAAWmlb,GACX5pM,YAAa2pM,GACbjlb,WAAYolb,GACZnlb,YAAaolb,GACbnlb,aAAcilb,GACdlylB,IAAK6ykB,GACLtjiB,SAAUh7B,GAAY,EAAIg7B,EAC1Bn7C,KAAMA,GACLq+lB,GAAal8kB,EAAO,CACrBzc,SAAU,CAACA,EAAU43lB,IAGrBxwkB,EAAAA,GAAAA,KAAKgukB,IAAapnlB,EAAAA,EAAAA,GAAS,CACzB9H,IAAKsxlB,EACLvmZ,OAAQ4lZ,GACPO,IAAqB,QAE3B,IA+JD,MCxdO,SAAS0B,GAA0B10kB,GACxC,OAAOC,EAAAA,GAAAA,GAAqB,gBAAiBD,EAC9C,CACD,IACA,IAD0BE,EAAAA,GAAAA,GAAuB,gBAAiB,CAAC,OAAQ,WAAY,eAAgB,eAAgB,iBAAkB,aAAc,YAAa,eAAgB,eAAgB,YAAa,UAAW,YAAa,aAAc,cCHjPjK,GAAY,CAAC,OAAQ,WAAY,YAAa,QAAS,WAAY,qBAAsB,QA0BzF0+kB,IAAiBh1kB,EAAAA,GAAAA,IAAO6ykB,GAAY,CACxCvomB,KAAM,gBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAA2B,YAArB4kB,EAAW7G,OAAuBtY,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWO,EAAW7G,SAAW6G,EAAWu0kB,MAAQ1zlB,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAWu0kB,QAAU1zlB,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAW3hB,QAC7M,GARoBihB,EASpB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbisB,UAAW,SACXlzB,KAAM,WACN4X,SAAUrR,EAAMmR,WAAWU,QAAQ,IACnC+U,QAAS,EACTrC,aAAc,MACdyG,SAAU,UAEV1a,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOC,OAC5CgL,WAAYzY,EAAMwV,YAAYrd,OAAO,mBAAoB,CACvDqb,SAAUxT,EAAMwV,YAAYhC,SAASC,aAErC0D,EAAWqykB,eAAiB,CAC9B,UAAW,CACT1gkB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQxB,OAAOm+kB,cAA/C,cAAkE3rlB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAA5F,MAA8G+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQxB,OAAOC,OAAQzN,EAAMgP,QAAQxB,OAAOG,cAEvL,uBAAwB,CACtBmb,gBAAiB,iBAGA,UAApB3R,EAAWu0kB,MAAoB,CAChClhkB,WAAgC,UAApBrT,EAAW3hB,MAAoB,GAAK,IAC3B,QAApB2hB,EAAWu0kB,MAAkB,CAC9BphkB,YAAiC,UAApBnT,EAAW3hB,MAAoB,GAAK,IA1BhD,IA2BC,YAGE,IACAuiB,EAHJ/X,EAEI,EAFJA,MACAmX,EACI,EADJA,WAGMnI,EAAwD,OAA7C+I,GAAY/X,EAAM2V,MAAQ3V,GAAOgP,cAAmB,EAAS+I,EAASZ,EAAW7G,OAClG,OAAO5P,EAAAA,EAAAA,GAAS,CAAC,EAAwB,YAArByW,EAAW7G,OAAuB,CACpDA,MAAO,WACe,YAArB6G,EAAW7G,OAA4C,YAArB6G,EAAW7G,QAAuB5P,EAAAA,EAAAA,GAAS,CAC9E4P,MAAkB,MAAXtB,OAAkB,EAASA,EAAQH,OACxCsI,EAAWqykB,eAAiB,CAC9B,WAAW9olB,EAAAA,EAAAA,GAAS,CAAC,EAAGsO,GAAW,CACjC8Z,gBAAiB9oB,EAAM2V,KAAN,eAAqB3G,EAAQ48kB,YAA7B,cAA8C5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAAxE,MAA0F+S,EAAAA,GAAAA,IAAM1R,EAAQH,KAAM7O,EAAMgP,QAAQxB,OAAOG,eACnJ,CAED,uBAAwB,CACtBmb,gBAAiB,mBAGC,UAApB3R,EAAW3hB,MAAoB,CACjCoxB,QAAS,EACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAAoB,CAChCoxB,QAAS,GACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,MAlBtB,uBAoBPg6kB,GAAAA,UAA+B,CACnC/ikB,gBAAiB,cACjBxY,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,WAGjD,IA2GD,GArGgCrM,EAAAA,YAAiB,SAAoBgY,EAASlgB,GAC5E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,kBAER,EAQM0R,EAPFi5lB,KAAAA,OADJ,SAEIh5lB,EAMED,EANFC,SACAoN,EAKErN,EALFqN,UAHJ,EAQMrN,EAJF6d,MAAAA,OAJJ,MAIY,UAJZ,IAQM7d,EAHF0a,SAAAA,OALJ,WAQM1a,EAFFq5lB,mBAAAA,OANJ,WAQMr5lB,EADF+C,KAAAA,OAPJ,MAOW,SAPX,EASE2Z,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCi5lB,KAAAA,EACAp7kB,MAAAA,EACAnD,SAAAA,EACA2+kB,mBAAAA,EACAt2lB,KAAAA,IAEI8jB,EA5GkB,SAAAnC,GACxB,IACEmC,EAKEnC,EALFmC,QACAnM,EAIEgK,EAJFhK,SACAmD,EAGE6G,EAHF7G,MACAo7kB,EAEEv0kB,EAFFu0kB,KACAl2lB,EACE2hB,EADF3hB,KAEI+jB,EAAQ,CACZhnB,KAAM,CAAC,OAAQ4a,GAAY,WAAsB,YAAVmD,GAAA,gBAA+BsG,EAAAA,GAAAA,GAAWtG,IAAUo7kB,GAAQ,OAAJ,QAAW90kB,EAAAA,GAAAA,GAAW80kB,IAA/G,eAA+H90kB,EAAAA,GAAAA,GAAWphB,MAElJ,OAAOgkB,EAAAA,GAAAA,GAAeD,EAAOiykB,GAA2BlykB,EACzD,CAgGiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAK2xkB,IAAgB/qlB,EAAAA,EAAAA,GAAS,CAChDZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9ByplB,cAAc,EACdG,aAAcoC,EACd3+kB,SAAUA,EACVvU,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,SAAUA,IAEb,eC/HD,IAAe4Y,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,kHACD,UCPG,SAAS4glB,GAAsBj1kB,GACpC,OAAOC,EAAAA,GAAAA,GAAqB,YAAaD,EAC1C,EACqBE,EAAAA,GAAAA,GAAuB,YAAa,CAAC,OAAQ,eAAgB,WAAY,UAAW,SAAU,MAAO,aAA3H,ICHMjK,GAAY,CAAC,MAAO,WAAY,YAAa,YAAa,WAAY,QAAS,MAAO,SAAU,WAuBhGi/kB,IAAav1kB,EAAAA,GAAAA,IAAO,MAAO,CAC/B11B,KAAM,YACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAOmf,EAAW0J,SAAU1J,EAAW80kB,cAAgBj0lB,EAAOi0lB,aACpF,GARgBx1kB,EAShB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbvO,SAAU,WACVomB,QAAS,OACTiT,WAAY,SACZD,eAAgB,SAChB3xB,WAAY,EACZ0e,MAAO,GACPnE,OAAQ,GACR/C,WAAYpR,EAAMmR,WAAWC,WAC7BC,SAAUrR,EAAMmR,WAAWU,QAAQ,IACnCjX,WAAY,EACZ2pB,aAAc,MACdyG,SAAU,SACV3S,WAAY,QACY,YAAvBlB,EAAW0J,SAAyB,CACrC0D,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,cAClB,WAAvBpN,EAAW0J,SAAwB,CACpC0D,aAAc,GACbpN,EAAW80kB,eAAgBvrlB,EAAAA,EAAAA,GAAS,CACrC4P,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ3B,WAAWpC,SAC/CjL,EAAM2V,KAAO,CACdmT,gBAAiB9oB,EAAM2V,KAAK3G,QAAQk9kB,OAAO1lB,WACzC,CACF19iB,gBAAwC,UAAvB9oB,EAAMgP,QAAQC,KAAmBjP,EAAMgP,QAAQ8B,KAAK,KAAO9Q,EAAMgP,QAAQ8B,KAAK,OA1B9F,IA4BGq7kB,IAAY11kB,EAAAA,GAAAA,IAAO,MAAO,CAC9B11B,KAAM,YACN+1B,KAAM,MACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAO4tf,GAA1B,GAHHnve,CAIf,CACD6B,MAAO,OACPnE,OAAQ,OACRwY,UAAW,SAEXy/jB,UAAW,QAEX97kB,MAAO,cAEP+7kB,WAAY,MAERC,IAAiB71kB,EAAAA,GAAAA,IAAO81kB,GAAQ,CACpCxrmB,KAAM,YACN+1B,KAAM,WACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAO0wgB,QAA1B,GAHEjyf,CAIpB,CACD6B,MAAO,MACPnE,OAAQ,QAwCV,IAoHA,GApH4BrT,EAAAA,YAAiB,SAAgBgY,EAASlgB,GACpE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,cAGJurJ,EASE75I,EATF65I,IACUkgd,EAQR/5lB,EARFC,SACAoN,EAOErN,EAPFqN,UAHJ,EAUMrN,EANFsmB,UAAAA,OAJJ,MAIgB,MAJhB,EAKI0zkB,EAKEh6lB,EALFg6lB,SACAC,EAIEj6lB,EAJFi6lB,MACA9iiB,EAGEn3D,EAHFm3D,IACA+iiB,EAEEl6lB,EAFFk6lB,OARJ,EAUMl6lB,EADFouB,QAAAA,OATJ,MASc,WATd,EAWE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAC3Cra,EAAW,KAGT6qkB,EA1DR,YAKG,IAJDqvB,EAIC,EAJDA,YACAnlD,EAGC,EAHDA,eACA79e,EAEC,EAFDA,IACA+iiB,EACC,EADDA,OAEA,EAA4B7rlB,EAAAA,UAAe,GAA3C,eAAOy8jB,EAAP,KAAesvB,EAAf,KA8BA,OA7BA/rlB,EAAAA,WAAgB,WACd,GAAK8oD,GAAQ+iiB,EAAb,CAGAE,GAAU,GACV,IAAIp/kB,GAAS,EACPq/kB,EAAQ,IAAIC,MAmBlB,OAlBAD,EAAM7hmB,OAAS,WACRwiB,GAGLo/kB,EAAU,SACX,EACDC,EAAM1hmB,QAAU,WACTqiB,GAGLo/kB,EAAU,QACX,EACDC,EAAMF,YAAcA,EACpBE,EAAMrlD,eAAiBA,EACvBqlD,EAAMljiB,IAAMA,EACR+iiB,IACFG,EAAME,OAASL,GAEV,WACLl/kB,GAAS,CACV,CAxBA,CAyBF,GAAE,CAACm/kB,EAAanlD,EAAgB79e,EAAK+iiB,IAC/BpvB,CACR,CAqBgB0vB,EAAUvslB,EAAAA,EAAAA,GAAS,CAAC,EAAG+rlB,EAAU,CAC9C7iiB,IAAAA,EACA+iiB,OAAAA,KAEIO,EAAStjiB,GAAO+iiB,EAChBQ,EAAmBD,GAAqB,UAAX3vB,EAC7BpmjB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCw5lB,cAAekB,EACfp0kB,UAAAA,EACA8H,QAAAA,IAEIvH,EA9IkB,SAAAnC,GACxB,IACEmC,EAGEnC,EAHFmC,QAIIC,EAAQ,CACZhnB,KAAM,CAAC,OAFL4kB,EAFF0J,QAEE1J,EADF80kB,cAGwC,gBACxCrmG,IAAK,CAAC,OACN8iB,SAAU,CAAC,aAEb,OAAOlvf,EAAAA,GAAAA,GAAeD,EAAOwykB,GAAuBzykB,EACrD,CAkIiBG,CAAkBtC,GAoBlC,OAlBEzkB,EADEy6lB,GACsBrzkB,EAAAA,GAAAA,KAAKqykB,IAAWzrlB,EAAAA,EAAAA,GAAS,CAC/C4rI,IAAKA,EACL1iF,IAAKA,EACL+iiB,OAAQA,EACRD,MAAOA,EACPv1kB,WAAYA,EACZrX,UAAWwZ,EAAQsse,KAClB6mG,IACsB,MAAhBD,EACEA,EACFU,GAAU5gd,EACRA,EAAI,IAESxyH,EAAAA,GAAAA,KAAKwykB,GAAgB,CAC3Cn1kB,WAAYA,EACZrX,UAAWwZ,EAAQovf,YAGH5uf,EAAAA,GAAAA,KAAKkykB,IAAYtrlB,EAAAA,EAAAA,GAAS,CAC5Cb,GAAIkZ,EACJ5B,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,EAAO,CACRzc,SAAUA,IAEb,yBC7KD,OAJiCoO,EAAAA,cAAoB,CAAC,GCH/C,SAASsslB,GAAoBt2kB,GAClC,OAAOC,EAAAA,GAAAA,GAAqB,UAAWD,EACxC,EACmBE,EAAAA,GAAAA,GAAuB,UAAW,CAAC,OAAQ,UAAW,QAAS,cAAnF,ICHMjK,GAAY,CAAC,WAAY,YAAa,YAAa,QAAS,iBAAkB,aAuB9EsglB,IAAW52kB,EAAAA,GAAAA,IAAO,KAAM,CAC5B11B,KAAM,UACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,MAAO4kB,EAAWm2kB,gBAAkBt1lB,EAAO4uB,QAASzP,EAAWo2kB,OAASv1lB,EAAOu1lB,MAAOp2kB,EAAWq2kB,WAAax1lB,EAAOw1lB,UACrI,GARc/2kB,EASd,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACb+slB,UAAW,OACX9mkB,OAAQ,EACRC,QAAS,EACTz0B,SAAU,aACRglB,EAAWm2kB,gBAAkB,CAC/BjkkB,WAAY,EACZE,cAAe,GACdpS,EAAWq2kB,WAAa,CACzBnkkB,WAAY,GAXX,IA2FH,GA9E0BvoB,EAAAA,YAAiB,SAAcgY,EAASlgB,GAChE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,YAGJ2R,EAMED,EANFC,SACAoN,EAKErN,EALFqN,UAFJ,EAOMrN,EAJFsmB,UAAAA,OAHJ,MAGgB,KAHhB,IAOMtmB,EAHF86lB,MAAAA,OAJJ,WAOM96lB,EAFF66lB,eAAAA,OALJ,SAMIE,EACE/6lB,EADF+6lB,UAEFr+kB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzC+gC,EAAUhtC,EAAAA,SAAc,iBAAO,CACnCyslB,MAAAA,EAD4B,GAE1B,CAACA,IACCp2kB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACAw0kB,MAAAA,EACAD,eAAAA,IAEIh0kB,EAxDkB,SAAAnC,GACxB,IACEmC,EAIEnC,EAJFmC,QAKIC,EAAQ,CACZhnB,KAAM,CAAC,QAFL4kB,EAHFm2kB,gBAKkC,UAFhCn2kB,EAFFo2kB,OAIsD,QAFpDp2kB,EADFq2kB,WAG4E,cAE9E,OAAOh0kB,EAAAA,GAAAA,GAAeD,EAAO6zkB,GAAqB9zkB,EACnD,CA6CiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAK4zkB,GAAAA,SAAsB,CAC7C7nmB,MAAOioD,EACPp7C,UAAuBgnB,EAAAA,GAAAA,MAAM2zkB,IAAU3slB,EAAAA,EAAAA,GAAS,CAC9Cb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,SAAU,CAAC86lB,EAAW96lB,OAG3B,IC/Ec,SAASi7lB,GAAiB9wkB,GAEvC,IAAM+wkB,EAAgB/wkB,EAAIgzB,gBAAgB4U,YAC1C,OAAOvzD,KAAKD,IAAIrP,OAAOu4E,WAAayzhB,EACrC,CCLD,oBCCM7glB,GAAY,CAAC,UAAW,YAAa,gBAAiB,WAAY,YAAa,yBAA0B,kBAAmB,YAAa,WAU/I,SAAS8glB,GAASx4iB,EAAM9oD,EAAMuhmB,GAC5B,OAAIz4iB,IAAS9oD,EACJ8oD,EAAKlmD,WAEV5C,GAAQA,EAAK25lB,mBACR35lB,EAAK25lB,mBAEP4H,EAAkB,KAAOz4iB,EAAKlmD,UACtC,CACD,SAASopX,GAAaljU,EAAM9oD,EAAMuhmB,GAChC,OAAIz4iB,IAAS9oD,EACJuhmB,EAAkBz4iB,EAAKlmD,WAAakmD,EAAK6f,UAE9C3oE,GAAQA,EAAKwhmB,uBACRxhmB,EAAKwhmB,uBAEPD,EAAkB,KAAOz4iB,EAAK6f,SACtC,CACD,SAAS84hB,GAAoBC,EAAWC,GACtC,QAAqB5+lB,IAAjB4+lB,EACF,OAAO,EAET,IAAI5/lB,EAAO2/lB,EAAUtzC,UAMrB,YALarrjB,IAAThB,IAEFA,EAAO2/lB,EAAUj/iB,aAGC,KADpB1gD,EAAOA,EAAKpE,OAAOiS,eACV7T,SAGL4lmB,EAAaC,UACR7/lB,EAAK,KAAO4/lB,EAAavnmB,KAAK,GAEa,IAA7C2H,EAAKvF,QAAQmlmB,EAAavnmB,KAAKyN,KAAK,KAC5C,CACD,SAASg6lB,GAAU/4iB,EAAMg5iB,EAAcP,EAAiBQ,EAAwBC,EAAmBL,GAGjG,IAFA,IAAIM,GAAc,EACdP,EAAYM,EAAkBl5iB,EAAMg5iB,IAAcA,GAAeP,GAC9DG,GAAW,CAEhB,GAAIA,IAAc54iB,EAAKlmD,WAAY,CACjC,GAAIq/lB,EACF,OAAO,EAETA,GAAc,CACf,CAGD,IAAMC,GAAoBH,IAAiCL,EAAU9glB,UAAwD,SAA5C8glB,EAAUj3lB,aAAa,kBACxG,GAAKi3lB,EAAUpgd,aAAa,aAAgBmgd,GAAoBC,EAAWC,KAAiBO,EAK1F,OADAR,EAAUjglB,SACH,EAHPiglB,EAAYM,EAAkBl5iB,EAAM44iB,EAAWH,EAKlD,CACD,OAAO,CACR,CAQD,IAiMA,GAjM8BhtlB,EAAAA,YAAiB,SAAkBrO,EAAOmG,GACtE,IAGIwwM,EASE32M,EATF22M,QAHJ,EAYM32M,EARFw3gB,UAAAA,OAJJ,WAYMx3gB,EAPFi8lB,cAAAA,OALJ,SAMIh8lB,EAMED,EANFC,SACAoN,EAKErN,EALFqN,UAPJ,EAYMrN,EAJF67lB,uBAAAA,OARJ,WAYM77lB,EAHFq7lB,gBAAAA,OATJ,SAUIzob,EAEE5yK,EAFF4yK,UAVJ,EAYM5yK,EADFouB,QAAAA,OAXJ,MAWc,eAXd,EAaE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzC4hlB,EAAU7tlB,EAAAA,OAAa,MACvB8tlB,EAAkB9tlB,EAAAA,OAAa,CACnCna,KAAM,GACNwnmB,WAAW,EACXU,oBAAoB,EACpBC,SAAU,QAEZ9zkB,EAAAA,GAAAA,IAAkB,WACZivf,GACF0kF,EAAQvtlB,QAAQ4M,OAEnB,GAAE,CAACi8f,IACJnpgB,EAAAA,oBAA0BsoM,GAAS,iBAAO,CACxC2lZ,wBAAyB,SAAC7uU,EAAkBlgR,GAG1C,IAAMgvlB,GAAmBL,EAAQvtlB,QAAQqd,MAAMnG,MAC/C,GAAI4nQ,EAAiB5/H,aAAequc,EAAQvtlB,QAAQk/I,cAAgB0uc,EAAiB,CACnF,IAAMC,EAAgB,GAAH,OAAMtB,IAAiB9ykB,EAAAA,GAAAA,GAAcqlQ,IAArC,MACnByuU,EAAQvtlB,QAAQqd,MAA0B,QAApBze,EAAMuO,UAAsB,cAAgB,gBAAkB0glB,EACpFN,EAAQvtlB,QAAQqd,MAAMnG,MAAtB,sBAA6C22kB,EAA7C,IACD,CACD,OAAON,EAAQvtlB,OAChB,EAXgC,GAY/B,IACJ,IAkDMqqkB,GAAYvwjB,EAAAA,GAAAA,GAAWyzkB,EAAS/1lB,GAOlCs2lB,GAAmB,EAIvBpulB,EAAAA,SAAAA,QAAuBpO,GAAU,SAACshC,EAAOlrC,GACpBgY,EAAAA,eAAqBkzB,KAQnCA,EAAMvhC,MAAM0a,WACC,iBAAZ0T,GAA8BmT,EAAMvhC,MAAMmb,WAEd,IAArBshlB,KADTA,EAAkBpmmB,GAKlBommB,IAAoBpmmB,IAAUkrC,EAAMvhC,MAAM0a,UAAY6mB,EAAMvhC,MAAM08lB,sBAAwBn7jB,EAAMhnC,KAAKmimB,wBACvGD,GAAmB,IACIx8lB,EAASpK,SAE9B4mmB,GAAmB,GAGxB,IACD,IAAMrhjB,EAAQ/sC,EAAAA,SAAAA,IAAmBpO,GAAU,SAACshC,EAAOlrC,GACjD,GAAIA,IAAUommB,EAAiB,CAC7B,IAAME,EAAgB,CAAC,EAOvB,OANIV,IACFU,EAAcnlF,WAAY,QAEC36gB,IAAzB0kC,EAAMvhC,MAAM01C,UAAsC,iBAAZtnB,IACxCuukB,EAAcjnjB,SAAW,GAEPrnC,EAAAA,aAAmBkzB,EAAOo7jB,EAC/C,CACD,OAAOp7jB,CACR,IACD,OAAoBla,EAAAA,GAAAA,KAAKg3R,IAAMpwS,EAAAA,EAAAA,GAAS,CACtCmZ,KAAM,OACNjhB,IAAK6ykB,EACL3rkB,UAAWA,EACXulK,UAtGoB,SAAA38K,GACpB,IAAM2sD,EAAOs5iB,EAAQvtlB,QACfnX,EAAMvB,EAAMuB,IAOZokmB,GAAexzkB,EAAAA,GAAAA,GAAcw6B,GAAM9F,cACzC,GAAY,cAARtlD,EAEFvB,EAAMo7D,iBACNsqiB,GAAU/4iB,EAAMg5iB,EAAcP,EAAiBQ,EAAwBT,SAClE,GAAY,YAAR5jmB,EACTvB,EAAMo7D,iBACNsqiB,GAAU/4iB,EAAMg5iB,EAAcP,EAAiBQ,EAAwB/1O,SAClE,GAAY,SAARtuX,EACTvB,EAAMo7D,iBACNsqiB,GAAU/4iB,EAAM,KAAMy4iB,EAAiBQ,EAAwBT,SAC1D,GAAY,QAAR5jmB,EACTvB,EAAMo7D,iBACNsqiB,GAAU/4iB,EAAM,KAAMy4iB,EAAiBQ,EAAwB/1O,SAC1D,GAAmB,IAAftuX,EAAI3B,OAAc,CAC3B,IAAM0yF,EAAW4zgB,EAAgBxtlB,QAC3BiulB,EAAWplmB,EAAIkS,cACfmzlB,EAAW1hE,YAAY1ie,MACzB8vB,EAASr0F,KAAK2B,OAAS,IAErBgnmB,EAAWt0gB,EAAS8zgB,SAAW,KACjC9zgB,EAASr0F,KAAO,GAChBq0F,EAASmzgB,WAAY,EACrBnzgB,EAAS6zgB,oBAAqB,GACrB7zgB,EAASmzgB,WAAakB,IAAar0gB,EAASr0F,KAAK,KAC1Dq0F,EAASmzgB,WAAY,IAGzBnzgB,EAAS8zgB,SAAWQ,EACpBt0gB,EAASr0F,KAAKoB,KAAKsnmB,GACnB,IAAME,EAAqBlB,IAAiBrzgB,EAASmzgB,WAAaH,GAAoBK,EAAcrzgB,GAChGA,EAAS6zgB,qBAAuBU,GAAsBnB,GAAU/4iB,EAAMg5iB,GAAc,EAAOC,EAAwBT,GAAU7ygB,IAC/HtyF,EAAMo7D,iBAENk3B,EAAS6zgB,oBAAqB,CAEjC,CACGxpb,GACFA,EAAU38K,EAEb,EAsDCy/C,SAAU8he,EAAY,GAAK,GAC1B96f,EAAO,CACRzc,SAAUm7C,IAEb,iFCzNM,SAAS2hjB,GAAWr7lB,EAASshE,GAC9BA,EACFthE,EAAQlE,aAAa,cAAe,QAEpCkE,EAAQ06C,gBAAgB,cAE3B,CACD,SAAS4gjB,GAAgBt7lB,GACvB,OAAOsrB,UAAS3E,EAAAA,GAAAA,GAAY3mB,GAASouD,iBAAiBpuD,GAASm1B,aAAc,KAAO,CACrF,CAUD,SAASomkB,GAAmBxgmB,EAAWs9K,EAAclrG,EAAgBquhB,EAAmBl6hB,GACtF,IAAM2+X,EAAY,CAAC5nR,EAAclrG,GAAlB,gBAAqCquhB,IACpD,GAAGtnmB,QAAQjC,KAAK8I,EAAUwD,UAAU,SAAAyB,GAClC,IAAMy7lB,GAAuD,IAAhCx7J,EAAUrrc,QAAQoL,GACzC07lB,GAbV,SAAwC17lB,GAItC,IACM27lB,GAAqE,IADjD,CAAC,WAAY,SAAU,QAAS,OAAQ,MAAO,OAAQ,WAAY,UAAW,MAAO,WAAY,QAAS,OAAQ,SAAU,SACzG/mmB,QAAQoL,EAAQyM,SACvDmvlB,EAAoC,UAApB57lB,EAAQyM,SAAwD,WAAjCzM,EAAQ6C,aAAa,QAC1E,OAAO84lB,GAAsBC,CAC9B,CAKkCC,CAA+B77lB,GAC1Dy7lB,GAAwBC,GAC1BL,GAAWr7lB,EAASshE,EAEvB,GACF,CACD,SAASw6hB,GAAYpijB,EAAO3oD,GAC1B,IAAI60D,GAAO,EAQX,OAPAlM,EAAMiM,MAAK,SAACvtD,EAAMzD,GAChB,QAAI5D,EAASqH,KACXwtD,EAAMjxD,GACC,EAGV,IACMixD,CACR,CACD,SAASm2iB,GAAgBpjG,EAAer6f,GACtC,IAAM09lB,EAAe,GACfjhmB,EAAY49f,EAAc59f,UAChC,IAAKuD,EAAM29lB,kBAAmB,CAC5B,GAnDJ,SAAuBlhmB,GACrB,IAAM2tB,GAAMhC,EAAAA,GAAAA,GAAc3rB,GAC1B,OAAI2tB,EAAI5vB,OAASiC,GACR4rB,EAAAA,GAAAA,GAAY5rB,GAAWirE,WAAat9C,EAAIgzB,gBAAgB4U,YAE1Dv1D,EAAU6vR,aAAe7vR,EAAUoxJ,YAC3C,CA6CO+vc,CAAcnhmB,GAAY,CAE5B,IAAM+/lB,EAAgBtB,IAAiB9ykB,EAAAA,GAAAA,GAAc3rB,IACrDihmB,EAAapomB,KAAK,CAChBlC,MAAOqJ,EAAUuvB,MAAM6K,aACvBx0B,SAAU,gBACV+sD,GAAI3yD,IAGNA,EAAUuvB,MAAM6K,aAAhB,UAAkCmmkB,GAAgBvgmB,GAAa+/lB,EAA/D,MAGA,IAAMh5lB,GAAgB4kB,EAAAA,GAAAA,GAAc3rB,GAAW6H,iBAAiB,cAChE,GAAG1O,QAAQjC,KAAK6P,GAAe,SAAA9B,GAC7Bg8lB,EAAapomB,KAAK,CAChBlC,MAAOsO,EAAQsqB,MAAM6K,aACrBx0B,SAAU,gBACV+sD,GAAI1tD,IAENA,EAAQsqB,MAAM6K,aAAd,UAAgCmmkB,GAAgBt7lB,GAAW86lB,EAA3D,KACD,GACF,CACD,IAAIqB,EACJ,GAAIphmB,EAAU6B,sBAAsBw/lB,iBAClCD,GAAkBz1kB,EAAAA,GAAAA,GAAc3rB,GAAWjC,SACtC,CAGL,IAAMuF,EAAStD,EAAU0rC,cACnB41jB,GAAkB11kB,EAAAA,GAAAA,GAAY5rB,GACpCohmB,EAAkE,UAArC,MAAV99lB,OAAiB,EAASA,EAAO+uC,WAA+E,WAAvDivjB,EAAgBjuiB,iBAAiB/vD,GAAQooO,UAAyBpoO,EAAStD,CACxJ,CAIDihmB,EAAapomB,KAAK,CAChBlC,MAAOyqmB,EAAgB7xkB,MAAMuM,SAC7Bl2B,SAAU,WACV+sD,GAAIyuiB,GACH,CACDzqmB,MAAOyqmB,EAAgB7xkB,MAAMk8M,UAC7B7lO,SAAU,aACV+sD,GAAIyuiB,GACH,CACDzqmB,MAAOyqmB,EAAgB7xkB,MAAMm8M,UAC7B9lO,SAAU,aACV+sD,GAAIyuiB,IAENA,EAAgB7xkB,MAAMuM,SAAW,QAClC,CAcD,OAbgB,WACdmlkB,EAAa9nmB,SAAQ,YAIf,IAHJxC,EAGI,EAHJA,MACAg8D,EAEI,EAFJA,GACA/sD,EACI,EADJA,SAEIjP,EACFg8D,EAAGpjC,MAAMqwB,YAAYh6C,EAAUjP,GAE/Bg8D,EAAGpjC,MAAMiwC,eAAe55D,EAE3B,GACF,CAEF,KAiBoB27lB,GAAAA,WACnB,cAAc,gBACZ9omB,KAAK+omB,gBAAa,EAClB/omB,KAAKgpmB,YAAS,EACdhpmB,KAAKgpmB,OAAS,GACdhpmB,KAAK+omB,WAAa,EACnB,oCACD,SAAIx7kB,EAAOhmB,GACT,IAAI0hmB,EAAajpmB,KAAKgpmB,OAAO5nmB,QAAQmsB,GACrC,IAAoB,IAAhB07kB,EACF,OAAOA,EAETA,EAAajpmB,KAAKgpmB,OAAOromB,OACzBX,KAAKgpmB,OAAO5omB,KAAKmtB,GAGbA,EAAM27kB,UACRrB,GAAWt6kB,EAAM27kB,UAAU,GAE7B,IAAMC,EAnCV,SAA2B5hmB,GACzB,IAAM4hmB,EAAiB,GAMvB,MALA,GAAGzomB,QAAQjC,KAAK8I,EAAUwD,UAAU,SAAAyB,GACU,SAAxCA,EAAQ6C,aAAa,gBACvB85lB,EAAe/omB,KAAKoM,EAEvB,IACM28lB,CACR,CA2B0BC,CAAkB7hmB,GACzCwgmB,GAAmBxgmB,EAAWgmB,EAAMq3J,MAAOr3J,EAAM27kB,SAAUC,GAAgB,GAC3E,IAAME,EAAiBf,GAAYtomB,KAAK+omB,YAAY,SAAAnkmB,GAAI,OAAIA,EAAK2C,YAAcA,CAAvB,IACxD,OAAwB,IAApB8hmB,GACFrpmB,KAAK+omB,WAAWM,GAAgBL,OAAO5omB,KAAKmtB,GACrC07kB,IAETjpmB,KAAK+omB,WAAW3omB,KAAK,CACnB4omB,OAAQ,CAACz7kB,GACThmB,UAAAA,EACA+hmB,QAAS,KACTH,eAAAA,IAEKF,EACR,sBACD,SAAM17kB,EAAOziB,GACX,IAAMu+lB,EAAiBf,GAAYtomB,KAAK+omB,YAAY,SAAAnkmB,GAAI,OAAoC,IAAhCA,EAAKokmB,OAAO5nmB,QAAQmsB,EAAxB,IAClD43e,EAAgBnlgB,KAAK+omB,WAAWM,GACjClkG,EAAcmkG,UACjBnkG,EAAcmkG,QAAUf,GAAgBpjG,EAAer6f,GAE1D,uBACD,SAAOyiB,GAA+B,IAAxBg8kB,IAAwB,yDAC9BN,EAAajpmB,KAAKgpmB,OAAO5nmB,QAAQmsB,GACvC,IAAoB,IAAhB07kB,EACF,OAAOA,EAET,IAAMI,EAAiBf,GAAYtomB,KAAK+omB,YAAY,SAAAnkmB,GAAI,OAAoC,IAAhCA,EAAKokmB,OAAO5nmB,QAAQmsB,EAAxB,IAClD43e,EAAgBnlgB,KAAK+omB,WAAWM,GAKtC,GAJAlkG,EAAc6jG,OAAO3nmB,OAAO8jgB,EAAc6jG,OAAO5nmB,QAAQmsB,GAAQ,GACjEvtB,KAAKgpmB,OAAO3nmB,OAAO4nmB,EAAY,GAGK,IAAhC9jG,EAAc6jG,OAAOromB,OAEnBwkgB,EAAcmkG,SAChBnkG,EAAcmkG,UAEZ/7kB,EAAM27kB,UAERrB,GAAWt6kB,EAAM27kB,SAAUK,GAE7BxB,GAAmB5iG,EAAc59f,UAAWgmB,EAAMq3J,MAAOr3J,EAAM27kB,SAAU/jG,EAAcgkG,gBAAgB,GACvGnpmB,KAAK+omB,WAAW1nmB,OAAOgomB,EAAgB,OAClC,CAEL,IAAMG,EAAUrkG,EAAc6jG,OAAO7jG,EAAc6jG,OAAOromB,OAAS,GAI/D6omB,EAAQN,UACVrB,GAAW2B,EAAQN,UAAU,EAEhC,CACD,OAAOD,CACR,2BACD,SAAW17kB,GACT,OAAOvtB,KAAKgpmB,OAAOromB,OAAS,GAAKX,KAAKgpmB,OAAOhpmB,KAAKgpmB,OAAOromB,OAAS,KAAO4sB,CAC1E,OA7EkBu7kB,GC/HfW,GAAqB,CAAC,QAAS,SAAU,WAAY,UAAW,SAAU,aAAc,kBAAmB,kBAAmB,oDAAoDh9lB,KAAK,KAwC7L,SAASi9lB,GAAmB9+lB,GAC1B,IAAM++lB,EAAkB,GAClBC,EAAkB,GAgBxB,OAfA/kmB,MAAM2E,KAAKoB,EAAKwE,iBAAiBq6lB,KAAqB/omB,SAAQ,SAACiK,EAAMhC,GACnE,IAAMkhmB,EA3CV,SAAqBl/lB,GACnB,IAAMm/lB,EAAehykB,SAASntB,EAAK0E,aAAa,aAAe,GAAI,IACnE,OAAKqpB,OAAOijC,MAAMmuiB,GAYW,SAAzBn/lB,EAAKoigB,kBAAiD,UAAlBpigB,EAAKivC,UAA0C,UAAlBjvC,EAAKivC,UAA0C,YAAlBjvC,EAAKivC,WAA6D,OAAlCjvC,EAAK0E,aAAa,YAC3I,EAEF1E,EAAK61C,SAdHspjB,CAeV,CAyBwBC,CAAYp/lB,IACX,IAAlBk/lB,GAXR,SAAyCl/lB,GACvC,QAAIA,EAAK6a,UAA6B,UAAjB7a,EAAKsO,SAAqC,WAAdtO,EAAKtF,MAfxD,SAA4BsF,GAC1B,GAAqB,UAAjBA,EAAKsO,SAAqC,UAAdtO,EAAKtF,KACnC,OAAO,EAET,IAAKsF,EAAKvR,KACR,OAAO,EAET,IAAM4wmB,EAAW,SAAA95lB,GAAQ,OAAIvF,EAAKuoB,cAAco8C,cAAnB,6BAAuDp/D,GAA3D,EACrB+5lB,EAASD,EAAS,UAAD,OAAWr/lB,EAAKvR,KAAhB,eAIrB,OAHK6wmB,IACHA,EAASD,EAAS,UAAD,OAAWr/lB,EAAKvR,KAAhB,QAEZ6wmB,IAAWt/lB,CACnB,CAE4Eu/lB,CAAmBv/lB,GAI/F,CAM+Bw/lB,CAAgCx/lB,KAGvC,IAAjBk/lB,EACFF,EAAgBvpmB,KAAKuK,GAErBi/lB,EAAgBxpmB,KAAK,CACnBgqmB,cAAezhmB,EACf63C,SAAUqpjB,EACVl/lB,KAAMA,IAGX,IACMi/lB,EAAgBxwkB,MAAK,SAACrZ,EAAGC,GAAJ,OAAUD,EAAEygC,WAAaxgC,EAAEwgC,SAAWzgC,EAAEqqlB,cAAgBpqlB,EAAEoqlB,cAAgBrqlB,EAAEygC,SAAWxgC,EAAEwgC,QAAzF,IAAmGz8C,KAAI,SAAAgc,GAAC,OAAIA,EAAEpV,IAAN,IAAYsF,OAAO05lB,EACxJ,CACD,SAASU,KACP,OAAO,CACR,CAiQD,OApPA,SAAmBv/lB,GACjB,IACEC,EAOED,EAPFC,SADF,EAQID,EANFw/lB,iBAAAA,OAFF,WAQIx/lB,EALFy/lB,oBAAAA,OAHF,WAQIz/lB,EAJF0/lB,oBAAAA,OAJF,WAQI1/lB,EAHF2/lB,YAAAA,OALF,MAKgBf,GALhB,IAQI5+lB,EAFF4/lB,UAAAA,OANF,MAMcL,GANd,EAOE7rlB,EACE1T,EADF0T,KAEImslB,EAAyBxxlB,EAAAA,QAAa,GACtCyxlB,EAAgBzxlB,EAAAA,OAAa,MAC7B0xlB,EAAc1xlB,EAAAA,OAAa,MAC3B2xlB,EAAgB3xlB,EAAAA,OAAa,MAC7B4xlB,EAAwB5xlB,EAAAA,OAAa,MAGrCg1I,EAAYh1I,EAAAA,QAAa,GACzB6xlB,EAAU7xlB,EAAAA,OAAa,MAEvB2qkB,GAAYvwjB,EAAAA,GAAAA,GAAWxoB,EAASkG,IAAK+5lB,GACrCC,EAAc9xlB,EAAAA,OAAa,MACjCA,EAAAA,WAAgB,WAETqF,GAASwslB,EAAQvxlB,UAGtB00I,EAAU10I,SAAW6wlB,EACtB,GAAE,CAACA,EAAkB9rlB,IACtBrF,EAAAA,WAAgB,WAEd,GAAKqF,GAASwslB,EAAQvxlB,QAAtB,CAGA,IAAMyb,GAAMhC,EAAAA,GAAAA,GAAc83kB,EAAQvxlB,SAYlC,OAXKuxlB,EAAQvxlB,QAAQwmD,SAAS/qC,EAAI0yB,iBAC3BojjB,EAAQvxlB,QAAQysI,aAAa,aAIhC8kd,EAAQvxlB,QAAQnR,aAAa,WAAY,MAEvC6lJ,EAAU10I,SACZuxlB,EAAQvxlB,QAAQ4M,SAGb,WAEAmklB,IAKCM,EAAcrxlB,SAAWqxlB,EAAcrxlB,QAAQ4M,QACjDsklB,EAAuBlxlB,SAAU,EACjCqxlB,EAAcrxlB,QAAQ4M,SAExByklB,EAAcrxlB,QAAU,KAE3B,CA1BA,CA8BF,GAAE,CAAC+E,IACJrF,EAAAA,WAAgB,WAEd,GAAKqF,GAASwslB,EAAQvxlB,QAAtB,CAGA,IAAMyb,GAAMhC,EAAAA,GAAAA,GAAc83kB,EAAQvxlB,SAC5BstkB,EAAU,SAAApiF,GACd,IACWv3E,EACP49K,EADFvxlB,QAKF,GAAoB,OAAhB2za,EAGJ,GAAKl4Z,EAAIg2kB,aAAcX,GAAwBG,MAAeC,EAAuBlxlB,SAIrF,IAAK2za,EAAYntX,SAAS/qC,EAAI0yB,eAAgB,CAE5C,GAAI+8c,GAAeomG,EAAsBtxlB,UAAYkrf,EAAYhtf,QAAUud,EAAI0yB,gBAAkBmjjB,EAAsBtxlB,QACrHsxlB,EAAsBtxlB,QAAU,UAC3B,GAAsC,OAAlCsxlB,EAAsBtxlB,QAC/B,OAEF,IAAK00I,EAAU10I,QACb,OAEF,IAAIsqI,EAAW,GAIf,GAHI7uH,EAAI0yB,gBAAkBgjjB,EAAcnxlB,SAAWyb,EAAI0yB,gBAAkBijjB,EAAYpxlB,UACnFsqI,EAAW0md,EAAYO,EAAQvxlB,UAE7BsqI,EAASpjJ,OAAS,EAAG,CACvB,IAAIwqmB,EAAsBC,EACpBC,EAAapse,SAAyD,OAA/Ckse,EAAuBF,EAAYxxlB,cAAmB,EAAS0xlB,EAAqBj5c,WAA8G,SAA/C,OAAhDk5c,EAAwBH,EAAYxxlB,cAAmB,EAAS2xlB,EAAsB9omB,MAChNgpmB,EAAYvnd,EAAS,GACrBwnd,EAAgBxnd,EAASA,EAASpjJ,OAAS,GACxB,kBAAd2qmB,GAAmD,kBAAlBC,IACtCF,EACFE,EAAclllB,QAEdillB,EAAUjllB,QAGf,MACC+ma,EAAY/ma,OAEf,OAhCCsklB,EAAuBlxlB,SAAU,CAiCpC,EACK+xlB,EAAY,SAAA7mG,GAChBsmG,EAAYxxlB,QAAUkrf,GAClB4lG,GAAwBG,KAAmC,QAApB/lG,EAAYrigB,KAMnD4yB,EAAI0yB,gBAAkBojjB,EAAQvxlB,SAAWkrf,EAAYzyW,WAGvDy4c,EAAuBlxlB,SAAU,EAC7BoxlB,EAAYpxlB,SACdoxlB,EAAYpxlB,QAAQ4M,QAGzB,EACD6O,EAAI3zB,iBAAiB,UAAWwllB,GAChC7xjB,EAAI3zB,iBAAiB,UAAWiqmB,GAAW,GAQ3C,IAAM7uhB,EAAWi/G,aAAY,WACvB1mK,EAAI0yB,eAA+C,SAA9B1yB,EAAI0yB,cAAc3uC,SACzC8tkB,EAAQ,KAEX,GAAE,IACH,OAAO,WACLrrZ,cAAc/+G,GACdznD,EAAI1zB,oBAAoB,UAAWullB,GACnC7xjB,EAAI1zB,oBAAoB,UAAWgqmB,GAAW,EAC/C,CAlFA,CAmFF,GAAE,CAAClB,EAAkBC,EAAqBC,EAAqBE,EAAWlslB,EAAMislB,IACjF,IAWMgB,EAAsB,SAAA1qmB,GACI,OAA1B+pmB,EAAcrxlB,UAChBqxlB,EAAcrxlB,QAAU1Y,EAAM+/D,eAEhCqtF,EAAU10I,SAAU,CACrB,EACD,OAAoBsY,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,EAAconB,EAAAA,GAAAA,KAAK,MAAO,CAClCquB,SAAUhiC,EAAO,GAAK,EACtB4W,QAASq2kB,EACTx6lB,IAAK25lB,EACL,cAAe,kBACAzxlB,EAAAA,aAAmBpO,EAAU,CAC5CkG,IAAK6ykB,EACL1ujB,QAzBY,SAAAr0B,GACgB,OAA1B+pmB,EAAcrxlB,UAChBqxlB,EAAcrxlB,QAAU1Y,EAAM+/D,eAEhCqtF,EAAU10I,SAAU,EACpBsxlB,EAAsBtxlB,QAAU1Y,EAAM4W,OACtC,IAAM+zlB,EAAuB3gmB,EAASD,MAAMsqB,QACxCs2kB,GACFA,EAAqB3qmB,EAExB,KAgBkBoxB,EAAAA,GAAAA,KAAK,MAAO,CAC3BquB,SAAUhiC,EAAO,GAAK,EACtB4W,QAASq2kB,EACTx6lB,IAAK45lB,EACL,cAAe,kBAGpB,ECzQM,SAASc,GAAqBx8kB,GACnC,OAAOC,EAAAA,GAAAA,GAAqB,WAAYD,EACzC,EAC4BE,EAAAA,GAAAA,GAAuB,WAAY,CAAC,OAAQ,SAAU,aAAnF,ICHMjK,GAAY,CAAC,WAAY,uBAAwB,YAAa,YAAa,mBAAoB,sBAAuB,uBAAwB,gBAAiB,sBAAuB,oBAAqB,eAAgB,cAAe,UAAW,kBAAmB,UAAW,YAAa,OAAQ,oBAAqB,qBAAsB,YAAa,SAiCtW,IAAMwmlB,GAAiB,IAAI9C,GAuV3B,GAhUmC3vlB,EAAAA,YAAiB,SAAuBrO,EAAO+gmB,GAChF,IAAIC,EAAmB90lB,EAEnBjM,EAsBED,EAtBFC,SADJ,EAuBMD,EArBFihmB,qBAAAA,OAFJ,SAGI36kB,EAoBEtmB,EApBFsmB,UACA7pB,EAmBEuD,EAnBFvD,UAJJ,EAuBMuD,EAlBFw/lB,iBAAAA,OALJ,WAuBMx/lB,EAjBFy/lB,oBAAAA,OANJ,WAuBMz/lB,EAhBFkhmB,qBAAAA,OAPJ,WAuBMlhmB,EAfFmplB,cAAAA,OARJ,WAuBMnplB,EAdF0/lB,oBAAAA,OATJ,WAuBM1/lB,EAbF29lB,kBAAAA,OAVJ,WAuBM39lB,EAZFmhmB,aAAAA,OAXJ,WAuBMnhmB,EAXFmslB,YAAAA,OAZJ,WAuBMnslB,EATFi7iB,QAAAA,OAdJ,MAcc6lD,GAdd,EAeIM,EAQEphmB,EARFohmB,gBACAhS,EAOEpvlB,EAPFovlB,QACAx8a,EAME5yK,EANF4yK,UACAl/J,EAKE1T,EALF0T,KACA2tlB,EAIErhmB,EAJFqhmB,kBACAC,EAGEthmB,EAHFshmB,mBApBJ,EAuBMthmB,EAFFs9B,UAAAA,OArBJ,MAqBgB,CAAC,EArBjB,IAuBMt9B,EADF8mB,MAAAA,OAtBJ,MAsBY,CAAC,EAtBb,EAwBEpK,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAC/C,EAA4BjM,EAAAA,UAAgBqF,GAA5C,eAAO04kB,EAAP,KAAeC,EAAf,KACM5pkB,EAAQpU,EAAAA,OAAa,CAAC,GACtBkzlB,EAAelzlB,EAAAA,OAAa,MAC5B+vlB,EAAW/vlB,EAAAA,OAAa,MACxB2qkB,GAAYvwjB,EAAAA,GAAAA,GAAW21kB,EAAU2C,GACjCS,EA7DR,SAA0BvhmB,GACxB,QAAOA,GAAWA,EAASD,MAAM+U,eAAe,KACjD,CA2DuB0slB,CAAiBxhmB,GACjCyhmB,EAA+D,OAA7CV,EAAoBhhmB,EAAM,iBAA0BghmB,EAEtEW,EAAW,WAGf,OAFAl/kB,EAAM9T,QAAQyvlB,SAAWA,EAASzvlB,QAClC8T,EAAM9T,QAAQ02K,UAAYk8a,EAAa5ylB,QAChC8T,EAAM9T,OACd,EACKizlB,EAAgB,WACpB3mD,EAAQnhY,MAAM6nb,IAAY,CACxBhE,kBAAAA,IAIES,EAASzvlB,UACXyvlB,EAASzvlB,QAAQ20L,UAAY,EAEhC,EACKktZ,IAAahokB,EAAAA,GAAAA,IAAiB,WAClC,IAAMq5kB,EAnFV,SAAsBplmB,GACpB,MAA4B,oBAAdA,EAA2BA,IAAcA,CACxD,CAiF6BknT,CAAalnT,KAjBpB2rB,EAAAA,GAAAA,GAAcm5kB,EAAa5ylB,SAiBgBnU,KAC9DygjB,EAAQh4gB,IAAI0+jB,IAAYE,GAGpBzD,EAASzvlB,SACXizlB,GAEH,IACKE,GAAazzlB,EAAAA,aAAkB,kBAAM4siB,EAAQ6mD,WAAWH,IAAzB,GAAsC,CAAC1mD,IACtE8mD,IAAkBv5kB,EAAAA,GAAAA,IAAiB,SAAA3oB,GACvC0hmB,EAAa5ylB,QAAU9O,EAClBA,GAASu+lB,EAASzvlB,UAGnB+E,GAAQoulB,KACVF,IAEA7E,GAAWqB,EAASzvlB,QAAS+ylB,GAEhC,IACKjR,GAAcpilB,EAAAA,aAAkB,WACpC4siB,EAAQrojB,OAAO+umB,IAAYD,EAC5B,GAAE,CAACzmD,EAASymD,IACbrzlB,EAAAA,WAAgB,WACd,OAAO,WACLoilB,IACD,CACF,GAAE,CAACA,KACJpilB,EAAAA,WAAgB,WACVqF,EACF88kB,KACUgR,GAAkBP,GAC5BxQ,IAEH,GAAE,CAAC/8kB,EAAM+8kB,GAAa+Q,EAAeP,EAAsBzQ,KAC5D,IAAM9rkB,IAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCihmB,qBAAAA,EACAzB,iBAAAA,EACAC,oBAAAA,EACAyB,qBAAAA,EACA/X,cAAAA,EACAuW,oBAAAA,EACA/B,kBAAAA,EACAvR,OAAAA,EACA+U,aAAAA,EACAhV,YAAAA,IAEItlkB,GA7IkB,SAAAnC,GACxB,IACEhR,EAEEgR,EAFFhR,KACA04kB,EACE1nkB,EADF0nkB,OAEItlkB,EAAQ,CACZhnB,KAAM,CAAC,QAAS4T,GAAQ04kB,GAAU,UAClC4V,SAAU,CAAC,aAEb,OAAOj7kB,EAAAA,GAAAA,GAAeD,EAAO8jkB,GAAsBiW,IACpD,CAmIiB75kB,CAAkBtC,IAiD5BwzjB,GAAa,CAAC,OACYr7kB,IAA5BoD,EAASD,MAAM01C,WACjBwiiB,GAAWxiiB,SAAW,MAIpB8rjB,IACFtpB,GAAWV,SAAUz7iB,EAAAA,GAAAA,IAvDH,WAClBswjB,GAAU,GACNgV,GACFA,GAEH,GAkDyDphmB,EAASD,MAAMw3kB,SACvEU,GAAWL,UAAW97iB,EAAAA,GAAAA,IAlDH,WACnBswjB,GAAU,GACNiV,GACFA,IAEEL,GACFxQ,IAEH,GA0C2DxwlB,EAASD,MAAM63kB,WAE3E,IAAMmU,GAA8D,OAAtD9/kB,EAAoB,MAAboa,EAAoBA,EAAYQ,EAAMhnB,MAAgBoM,EAAO,MAC5E+/kB,GAAY3B,GAAa,CAC7BznG,YAAampG,GACbtC,kBAAmBpsjB,EAAUx9B,KAC7B6plB,uBAAwBjtkB,EACxB+skB,gBAAiB,CACftjlB,IAAK6ykB,EACL5xjB,KAAM,eACNwrJ,UAxCkB,SAAA38K,GAChB28K,GACFA,EAAU38K,GASM,WAAdA,EAAMuB,KAAqBsqmB,OAG1BZ,IAEHjrmB,EAAMggE,kBACFm5hB,GACFA,EAAQn5lB,EAAO,kBAGpB,GAqBCoX,UAAWwZ,GAAQ/mB,KACnB4kB,WAAAA,KAEIu9kB,GAAoBn7kB,EAAMk7kB,SAC1BE,GAAgB5X,GAAa,CACjCznG,YAAao/G,GACbvY,kBAAmBpsjB,EAAU0kkB,SAC7BvY,gBAAiB,CACf,eAAe,EACfj3a,QA9DwB,SAAAv8K,GACtBA,EAAM4W,SAAW5W,EAAMy+D,gBAGvB0siB,GACFA,EAAgBnrmB,GAEdm5lB,GACFA,EAAQn5lB,EAAO,iBAElB,EAqDGyd,KAAAA,GAEFrG,UAAWwZ,GAAQm7kB,SACnBt9kB,WAAAA,KAEF,OAAKynkB,GAAgBz4kB,GAAU8tlB,IAAiBpV,GAG5B/kkB,EAAAA,GAAAA,KAAKg7a,GAEvB,CACAl8b,IAAK47lB,GACLtlmB,UAAWA,EACX0slB,cAAeA,EACflplB,UAAuBgnB,EAAAA,GAAAA,MAAM+kkB,IAAM/9kB,EAAAA,EAAAA,GAAS,CAAC,EAAGg+kB,GAAW,CACzDhslB,SAAU,EAAEkhmB,GAAgBc,IAAiC56kB,EAAAA,GAAAA,KAAK46kB,IAAmBh0lB,EAAAA,EAAAA,GAAS,CAAC,EAAGi0lB,KAAkB,MAAmB76kB,EAAAA,GAAAA,KAAK86kB,GAAW,CACrJ1C,oBAAqBA,EACrBD,iBAAkBA,EAClBE,oBAAqBA,EACrBE,UAAWkC,GACXpulB,KAAMA,EACNzT,SAAuBoO,EAAAA,aAAmBpO,EAAUi4kB,YAfjD,IAmBV,IClQK59jB,GAAY,CAAC,iBAAkB,SAAU,WAAY,SAAU,KAAM,UAAW,YAAa,aAAc,SAAU,WAAY,YAAa,QAAS,UAAW,uBASlK/U,GAAS,CACbkzkB,SAAU,CACRrwkB,QAAS,GAEXswkB,QAAS,CACPtwkB,QAAS,IAQPg6lB,GAAoB/zlB,EAAAA,YAAiB,SAAcrO,EAAOmG,GAC9D,IAAMoH,EAAQ4tB,KACRi1J,EAAiB,CACrB/2C,MAAO9rI,EAAMwV,YAAYhC,SAASM,eAClCu1jB,KAAMrpkB,EAAMwV,YAAYhC,SAASO,eAG/B02jB,EAeEh4kB,EAfFg4kB,eADJ,EAgBMh4kB,EAdFg2kB,OAAAA,OAFJ,SAGI/1kB,EAaED,EAbFC,SACAygB,EAYE1gB,EAZF0gB,OACIm4jB,EAWF74kB,EAXFm2kB,GACAqB,EAUEx3kB,EAVFw3kB,QACAD,EASEv3kB,EATFu3kB,UACAE,EAQEz3kB,EARFy3kB,WACAE,EAOE33kB,EAPF23kB,OACAE,EAME73kB,EANF63kB,SACAD,EAKE53kB,EALF43kB,UACA5rjB,EAIEhsB,EAJFgsB,MAZJ,EAgBMhsB,EAHFi8B,QAAAA,OAbJ,MAacm0J,EAbd,IAgBMpwL,EADF84kB,oBAAAA,OAfJ,MAe0BjD,GAf1B,EAiBEn5jB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAEzCu8jB,EAAUxokB,EAAAA,OAAa,MACvB2qkB,GAAYvwjB,EAAAA,GAAAA,GAAWoujB,EAAS52kB,EAASkG,IAAKA,GAC9C8ykB,EAA+B,SAAAxmlB,GAAQ,OAAI,SAAAymlB,GAC/C,GAAIzmlB,EAAU,CACZ,IAAMoN,EAAOg3kB,EAAQlokB,aAGI9R,IAArBq8kB,EACFzmlB,EAASoN,GAETpN,EAASoN,EAAMq5kB,EAElB,CACF,CAX4C,EAYvCC,EAAiBF,EAA6BxB,GAC9C2B,EAAcH,GAA6B,SAACp5kB,EAAMw5kB,GACtDjB,GAAOv4kB,GAEP,IAAM0slB,EAAkBlU,GAAmB,CACzCrsjB,MAAAA,EACAiQ,QAAAA,EACAvb,OAAAA,GACC,CACDlE,KAAM,UAER3c,EAAKmsB,MAAM+zH,iBAAmBxyI,EAAMwV,YAAYrd,OAAO,UAAW6mlB,GAClE1slB,EAAKmsB,MAAMhG,WAAazY,EAAMwV,YAAYrd,OAAO,UAAW6mlB,GACxD/U,GACFA,EAAQ33kB,EAAMw5kB,EAEjB,IACKC,EAAgBL,EAA6B1B,GAC7CgC,EAAgBN,EAA6BrB,GAC7C4B,EAAaP,GAA6B,SAAAp5kB,GAC9C,IAAM0slB,EAAkBlU,GAAmB,CACzCrsjB,MAAAA,EACAiQ,QAAAA,EACAvb,OAAAA,GACC,CACDlE,KAAM,SAER3c,EAAKmsB,MAAM+zH,iBAAmBxyI,EAAMwV,YAAYrd,OAAO,UAAW6mlB,GAClE1slB,EAAKmsB,MAAMhG,WAAazY,EAAMwV,YAAYrd,OAAO,UAAW6mlB,GACxD5U,GACFA,EAAO93kB,EAEV,IACK45kB,EAAeR,EAA6BpB,GAOlD,OAAoBxwjB,EAAAA,GAAAA,KAAKyxjB,GAAqB7qkB,EAAAA,EAAAA,GAAS,CACrD+nkB,OAAQA,EACRG,GAAI0C,EACJhC,QAAkCA,EAClCW,QAAS4B,EACT7B,UAAW+B,EACX7B,WAAY0B,EACZxB,OAAQ6B,EACR3B,SAAU4B,EACV7B,UAAW2B,EACXvB,eAhB2B,SAAA33kB,GACvB23kB,GAEFA,EAAenB,EAAQlokB,QAAStO,EAEnC,EAYC47B,QAASA,GACRvf,EAAO,CACRzc,SAAU,SAAC29B,EAAOs6iB,GAChB,OAAoB7pkB,EAAAA,aAAmBpO,GAAUgO,EAAAA,EAAAA,GAAS,CACxD+d,OAAO/d,EAAAA,EAAAA,GAAS,CACd7F,QAAS,EACTqwB,WAAsB,WAAVmF,GAAuBi7iB,OAAoBh8kB,EAAX,UAC3C0I,GAAOq4B,GAAQ5R,EAAO/rB,EAASD,MAAMgsB,OACxC7lB,IAAK6ykB,GACJd,GACJ,IAEJ,IA4ED,MCxMO,SAASmqB,GAAwBh+kB,GACtC,OAAOC,EAAAA,GAAAA,GAAqB,cAAeD,EAC5C,EACuBE,EAAAA,GAAAA,GAAuB,cAAe,CAAC,OAAQ,cAAvE,ICHMjK,GAAY,CAAC,WAAY,YAAa,YAAa,aAAc,kBAAmB,YAAa,OAAQ,YAAa,QAAS,sBAAuB,sBAoBtJgolB,IAAet+kB,EAAAA,GAAAA,IAAO,MAAO,CACjC11B,KAAM,cACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAM4kB,EAAW69kB,WAAah9lB,EAAOg9lB,UACrD,GARkBv+kB,EASlB,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACbvO,SAAU,QACVomB,QAAS,OACTiT,WAAY,SACZD,eAAgB,SAChBc,MAAO,EACPC,OAAQ,EACRF,IAAK,EACLG,KAAM,EACNzD,gBAAiB,qBACjB+/jB,wBAAyB,eACxB1xkB,EAAW69kB,WAAa,CACzBlskB,gBAAiB,eAdhB,IA0JH,GA1I8BhoB,EAAAA,YAAiB,SAAkBgY,EAASlgB,GACxE,IAAIq8lB,EAAiBt2lB,EAAMuglB,EACrBzslB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,gBAGJ2R,EAWED,EAXFC,SACAoN,EAUErN,EAVFqN,UAFJ,EAYMrN,EATFsmB,UAAAA,OAHJ,MAGgB,MAHhB,IAYMtmB,EARFwuB,WAAAA,OAJJ,MAIiB,CAAC,EAJlB,IAYMxuB,EAPF0slB,gBAAAA,OALJ,MAKsB,CAAC,EALvB,IAYM1slB,EANFuimB,UAAAA,OANJ,SAOI7ulB,EAKE1T,EALF0T,KAPJ,EAYM1T,EAJFs9B,UAAAA,OARJ,MAQgB,CAAC,EARjB,IAYMt9B,EAHF8mB,MAAAA,OATJ,MASY,CAAC,EATb,IAYM9mB,EAFF84kB,oBAAAA,OAVJ,MAU0BspB,GAV1B,EAWI77Z,EACEvmM,EADFumM,mBAEF7pL,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACAi8kB,UAAAA,IAEI17kB,EA3DkB,SAAAnC,GACxB,IACEmC,EAEEnC,EAFFmC,QAGIC,EAAQ,CACZhnB,KAAM,CAAC,OAFL4kB,EADF69kB,WAG4B,cAE9B,OAAOx7kB,EAAAA,GAAAA,GAAeD,EAAOu7kB,GAAyBx7kB,EACvD,CAkDiBG,CAAkBtC,GAC5B+9kB,EAAsD,OAArCD,EAAkBllkB,EAAUx9B,MAAgB0imB,EAAkB9V,EAAgB5slB,KACrG,OAAoBunB,EAAAA,GAAAA,KAAKyxjB,GAAqB7qkB,EAAAA,EAAAA,GAAS,CACrDkokB,GAAIzikB,EACJuoB,QAASsqK,GACR7pL,EAAO,CACRzc,UAAuBonB,EAAAA,GAAAA,KAAKi7kB,IAAcr0lB,EAAAA,EAAAA,GAAS,CACjD,eAAe,GACdw0lB,EAAe,CAChBr1lB,GAAmF,OAA9ElB,EAAqC,OAA7BuglB,EAAc3lkB,EAAMhnB,MAAgB2slB,EAAcj+jB,EAAWw9jB,MAAgB9/kB,EAAOoa,EACjGjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,EAA4B,MAAjBo1lB,OAAwB,EAASA,EAAcp1lB,WACxFqX,YAAYzW,EAAAA,EAAAA,GAAS,CAAC,EAAGyW,EAA6B,MAAjB+9kB,OAAwB,EAASA,EAAc/9kB,YACpFmC,QAASA,EACT1gB,IAAKA,EACLlG,SAAUA,OAGf,ICtFKqa,GAAY,CAAC,oBAAqB,gBAAiB,UAAW,YAAa,uBAAwB,WAAY,YAAa,aAAc,kBAAmB,mBAAoB,sBAAuB,uBAAwB,gBAAiB,sBAAuB,oBAAqB,eAAgB,cAAe,YAAa,QAAS,SAYlVoolB,IAAY1+kB,EAAAA,GAAAA,IAAO,MAAO,CAC9B11B,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,MAAO4kB,EAAWhR,MAAQgR,EAAW0nkB,QAAU7mlB,EAAOq3L,OACtE,GARe54K,EASf,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbvO,SAAU,QACV+I,QAAS8E,EAAM2V,MAAQ3V,GAAO9E,OAAOga,MACrCmX,MAAO,EACPC,OAAQ,EACRF,IAAK,EACLG,KAAM,IACJpV,EAAWhR,MAAQgR,EAAW0nkB,QAAU,CAC1C3zjB,WAAY,UAXX,IAaGkqkB,IAAgB3+kB,EAAAA,GAAAA,IAAO4+kB,GAAU,CACrCt0mB,KAAM,WACN+1B,KAAM,WACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,OAAOA,EAAOy8lB,QACf,GALmBh+kB,CAMnB,CACDvb,QAAS,IAkQX,GAlP2B4F,EAAAA,YAAiB,SAAegY,EAASlgB,GAClE,IAAI+F,EAAMuglB,EAAa7yb,EAAOipc,EAAiBL,EAAiBM,EAC1D9imB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1B31B,KAAM,WACN0R,MAAOqmB,IAET,EAsBMrmB,EArBFiimB,kBAAAA,OADJ,MACwBU,GADxB,EAEII,EAoBE/imB,EApBF+imB,cACAl8kB,EAmBE7mB,EAnBF6mB,QACAxZ,EAkBErN,EAlBFqN,UAJJ,EAsBMrN,EAjBFihmB,qBAAAA,OALJ,SAMIhhmB,EAgBED,EAhBFC,SACAqmB,EAeEtmB,EAfFsmB,UAPJ,EAsBMtmB,EAdFwuB,WAAAA,OARJ,MAQiB,CAAC,EARlB,IAsBMxuB,EAbF0slB,gBAAAA,OATJ,MASsB,CAAC,EATvB,IAsBM1slB,EAZFw/lB,iBAAAA,OAVJ,WAsBMx/lB,EAXFy/lB,oBAAAA,OAXJ,WAsBMz/lB,EAVFkhmB,qBAAAA,OAZJ,WAsBMlhmB,EATFmplB,cAAAA,OAbJ,WAsBMnplB,EARF0/lB,oBAAAA,OAdJ,WAsBM1/lB,EAPF29lB,kBAAAA,OAfJ,WAsBM39lB,EANFmhmB,aAAAA,OAhBJ,WAsBMnhmB,EALFmslB,YAAAA,OAjBJ,SAkBI7ujB,EAIEt9B,EAJFs9B,UACAxW,EAGE9mB,EAHF8mB,MAEAvZ,EACEvN,EADFuN,MAEFmP,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAC/C,EAA4BjM,EAAAA,UAAe,GAA3C,eAAO+9kB,EAAP,KAAeC,EAAf,KACM2W,EAAc,CAClB/B,qBAAAA,EACAzB,iBAAAA,EACAC,oBAAAA,EACAyB,qBAAAA,EACA/X,cAAAA,EACAuW,oBAAAA,EACA/B,kBAAAA,EACAwD,aAAAA,EACAhV,YAAAA,GAEIznkB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAOgjmB,EAAa,CAClD5W,OAAAA,IAEI6W,EAAmH,OAAvG/2lB,EAA8D,OAAtDuglB,EAAuB,MAAT3lkB,OAAgB,EAASA,EAAMhnB,MAAgB2slB,EAAcj+jB,EAAWw9jB,MAAgB9/kB,EAAOw2lB,GACjIQ,EAAwI,OAAxHtpc,EAAuE,OAA9Dipc,EAA2B,MAAT/7kB,OAAgB,EAASA,EAAMk7kB,UAAoBa,EAAkBr0kB,EAAWo0kB,UAAoBhpc,EAAQqoc,EACvJQ,GAAmF,OAAlED,EAA+B,MAAbllkB,OAAoB,EAASA,EAAUx9B,MAAgB0imB,EAAkB9V,EAAgB5slB,KAC5HqjmB,GAA+F,OAA1EL,EAAmC,MAAbxlkB,OAAoB,EAASA,EAAU0kkB,UAAoBc,EAAsBpW,EAAgBsV,SAClJ,OAAoB36kB,EAAAA,GAAAA,KAAK+7kB,IAAen1lB,EAAAA,EAAAA,GAAS,CAC/C6Y,MAAO,CACLhnB,KAAMmjmB,EACNjB,SAAUkB,GAEZ5lkB,UAAW,CACTx9B,KAAM,kBAAMmO,EAAAA,EAAAA,GAAS,CAAC,EAAGo8kB,GAAsBoY,GAAe/9kB,IAAc2wjB,GAAgB4tB,IAAa,CACvG71lB,GAAIkZ,EACJ/Y,MAAAA,GACC,CACDF,WAAW6Z,EAAAA,GAAAA,GAAK7Z,EAA4B,MAAjBo1lB,QAAwB,EAASA,GAAcp1lB,UAAsB,MAAXwZ,OAAkB,EAASA,EAAQ/mB,MAAO4kB,EAAWhR,MAAQgR,EAAW0nkB,SAAsB,MAAXvlkB,OAAkB,EAASA,EAAQ+1K,UAJvM,EAMNola,SAAU,kBAAM/zlB,EAAAA,EAAAA,GAAS,CAAC,EAAG80lB,EAAe1Y,GAAsB8Y,GAAmBz+kB,GAAa,CAChGrX,WAAW6Z,EAAAA,GAAAA,GAA0B,MAArBi8kB,QAA4B,EAASA,GAAkB91lB,UAAsB,MAAXwZ,OAAkB,EAASA,EAAQm7kB,WAD7G,GAIZX,kBAAmB,kBAAMhV,GAAU,EAAhB,EACnBiV,mBAAoB,kBAAMjV,GAAU,EAAhB,EACpBlmlB,IAAKA,GACJuW,EAAOsmlB,EAAa,CACrB/imB,SAAUA,IAEb,IChIM,SAASojmB,GAAuBh/kB,GACrC,OAAOC,EAAAA,GAAAA,GAAqB,aAAcD,EAC3C,EACsBE,EAAAA,GAAAA,GAAuB,aAAc,CAAC,OAAQ,UAArE,ICHMjK,GAAY,CAAC,cACjBuoS,GAAa,CAAC,SAAU,WAAY,eAAgB,iBAAkB,kBAAmB,WAAY,YAAa,YAAa,YAAa,kBAAmB,OAAQ,aAAc,kBAAmB,sBAAuB,qBAAsB,mBAiBhP,SAASygT,GAAa9ziB,EAAMo7E,GACjC,IAAIzoI,EAAS,EAQb,MAPwB,kBAAbyoI,EACTzoI,EAASyoI,EACa,WAAbA,EACTzoI,EAASqtD,EAAK9tC,OAAS,EACD,WAAbkpH,IACTzoI,EAASqtD,EAAK9tC,QAETvf,CACR,CACM,SAASohmB,GAAc/ziB,EAAMm7E,GAClC,IAAIxoI,EAAS,EAQb,MAP0B,kBAAfwoI,EACTxoI,EAASwoI,EACe,WAAfA,EACTxoI,EAASqtD,EAAK3pC,MAAQ,EACE,UAAf8kH,IACTxoI,EAASqtD,EAAK3pC,OAET1jB,CACR,CACD,SAASqhmB,GAAwBpW,GAC/B,MAAO,CAACA,EAAgBzid,WAAYyid,EAAgBxid,UAAU3xI,KAAI,SAAAkgB,GAAC,MAAiB,kBAANA,EAAP,UAA2BA,EAA3B,MAAmCA,CAAvC,IAA0CxX,KAAK,IACnH,CACD,SAASkplB,GAAgBC,GACvB,MAA2B,oBAAbA,EAA0BA,IAAaA,CACtD,CACD,IAUM2Y,IAAcz/kB,EAAAA,GAAAA,IAAO0/kB,GAAO,CAChCp1mB,KAAM,aACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHDkkB,CAIjB,CAAC,GACE2/kB,IAAe3/kB,EAAAA,GAAAA,IAAO2vjB,GAAO,CACjCrllB,KAAM,aACN+1B,KAAM,QACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOsV,KAA1B,GAHAmJ,CAIlB,CACDtkB,SAAU,WACVyoO,UAAW,OACXD,UAAW,SAGXhyM,SAAU,GACVpc,UAAW,GACX+b,SAAU,oBACVM,UAAW,oBAEXkgkB,QAAS,IAELrmP,GAAuB3hW,EAAAA,YAAiB,SAAiBgY,EAASlgB,GACtE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,eAGJysB,EAwBE/a,EAxBF+a,OACA+vkB,EAuBE9qlB,EAvBF8qlB,SAFJ,EAyBM9qlB,EAtBF4jmB,aAAAA,OAHJ,MAGmB,CACbh5d,SAAU,MACVD,WAAY,QALlB,EAOIk5d,EAkBE7jmB,EAlBF6jmB,eAPJ,EAyBM7jmB,EAjBF8jmB,gBAAAA,OARJ,MAQsB,WARtB,EASI7jmB,EAgBED,EAhBFC,SACAoN,EAeErN,EAfFqN,UACW0lM,EAcT/yM,EAdFvD,UAXJ,EAyBMuD,EAbF6ykB,UAAAA,OAZJ,MAYgB,EAZhB,IAyBM7ykB,EAZF+jmB,gBAAAA,OAbJ,MAasB,GAbtB,EAcIrwlB,EAWE1T,EAXF0T,KAdJ,EAyBM1T,EAVFgkmB,WAAAA,OAfJ,MAeiB,CAAC,EAflB,IAyBMhkmB,EATFotlB,gBAAAA,OAhBJ,MAgBsB,CAChBxid,SAAU,MACVD,WAAY,QAlBlB,IAyBM3qI,EALF84kB,oBAAAA,OApBJ,MAoB0BF,GApB1B,IAyBM54kB,EAJFumM,mBAAoB09Z,OArBxB,MAqBiD,OArBjD,IAyBMjkmB,EAHFqrlB,gBACE5T,GAvBN,aAwBQ,CAAC,EAxBT,GAuBMA,WAGJ4T,GAAkB1ukB,EAAAA,EAAAA,GAA8B3c,EAAMqrlB,gBAAiB/wkB,IACvEoC,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAO6iT,IACzCqhT,EAAW71lB,EAAAA,SACX81lB,GAAiB17kB,EAAAA,GAAAA,GAAWy7kB,EAAUF,EAAW79lB,KACjDue,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC4jmB,aAAAA,EACAE,gBAAAA,EACAjxB,UAAAA,EACAkxB,gBAAAA,EACAC,WAAAA,EACA5W,gBAAAA,EACAtU,oBAAAA,EACAvyY,mBAAoB09Z,EACpB5Y,gBAAAA,IAEIxkkB,EA9EkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAMF,OAAOE,EAAAA,GAAAA,GAJO,CACZjnB,KAAM,CAAC,QACP+a,MAAO,CAAC,UAEmBwolB,GAAwBx8kB,EACtD,CAqEiBG,CAAkBtC,GAI5B0/kB,EAAkB/1lB,EAAAA,aAAkB,WACxC,GAAwB,mBAApBy1lB,EAMF,OAAOD,EAET,IAAMvX,EAAmBzB,GAAgBC,GAInCuZ,GADgB/X,GAAkD,IAA9BA,EAAiBrhjB,SAAiBqhjB,GAAmBlkkB,EAAAA,GAAAA,GAAc87kB,EAASv1lB,SAASnU,MAC9Fi1D,wBAOjC,MAAO,CACL91B,IAAK0qkB,EAAW1qkB,IAAM2pkB,GAAae,EAAYT,EAAah5d,UAC5D9wG,KAAMuqkB,EAAWvqkB,KAAOypkB,GAAcc,EAAYT,EAAaj5d,YAElE,GAAE,CAACmgd,EAAU8Y,EAAaj5d,WAAYi5d,EAAah5d,SAAUi5d,EAAgBC,IAGxEQ,EAAqBj2lB,EAAAA,aAAkB,SAAAk2lB,GAC3C,MAAO,CACL35d,SAAU04d,GAAaiB,EAAUnX,EAAgBxid,UACjDD,WAAY44d,GAAcgB,EAAUnX,EAAgBzid,YAEvD,GAAE,CAACyid,EAAgBzid,WAAYyid,EAAgBxid,WAC1C45d,EAAsBn2lB,EAAAA,aAAkB,SAAA3M,GAC5C,IAAM6imB,EAAW,CACf1+kB,MAAOnkB,EAAQijE,YACfjjD,OAAQhgB,EAAQs8D,cAIZymiB,EAAsBH,EAAmBC,GAC/C,GAAwB,SAApBT,EACF,MAAO,CACLnqkB,IAAK,KACLG,KAAM,KACNszjB,gBAAiBoW,GAAwBiB,IAK7C,IAAMliG,EAAe6hG,IAGjBzqkB,EAAM4oe,EAAa5oe,IAAM8qkB,EAAoB75d,SAC7C9wG,EAAOyoe,EAAazoe,KAAO2qkB,EAAoB95d,WAC7C9wG,EAASF,EAAM4qkB,EAAS7ilB,OACxBkY,EAAQE,EAAOyqkB,EAAS1+kB,MAGxBk4kB,GAAkB11kB,EAAAA,GAAAA,GAAYwikB,GAAgBC,IAG9C4Z,EAAkB3G,EAAgBhgiB,YAAcgmiB,EAChDY,EAAiB5G,EAAgBr2hB,WAAaq8hB,EAGpD,GAAIpqkB,EAAMoqkB,EAAiB,CACzB,IAAMlthB,EAAOl9C,EAAMoqkB,EACnBpqkB,GAAOk9C,EACP4thB,EAAoB75d,UAAY/zD,CACjC,MAAM,GAAIh9C,EAAS6qkB,EAAiB,CACnC,IAAM7thB,EAAOh9C,EAAS6qkB,EACtB/qkB,GAAOk9C,EACP4thB,EAAoB75d,UAAY/zD,CACjC,CAQD,GAAI/8C,EAAOiqkB,EAAiB,CAC1B,IAAMlthB,EAAO/8C,EAAOiqkB,EACpBjqkB,GAAQ+8C,EACR4thB,EAAoB95d,YAAc9zD,CACnC,MAAM,GAAIj9C,EAAQ+qkB,EAAgB,CACjC,IAAM9thB,EAAOj9C,EAAQ+qkB,EACrB7qkB,GAAQ+8C,EACR4thB,EAAoB95d,YAAc9zD,CACnC,CACD,MAAO,CACLl9C,IAAK,GAAF,OAAKl7B,KAAKoZ,MAAM8hB,GAAhB,MACHG,KAAM,GAAF,OAAKr7B,KAAKoZ,MAAMiiB,GAAhB,MACJszjB,gBAAiBoW,GAAwBiB,GAE5C,GAAE,CAAC3Z,EAAUgZ,EAAiBM,EAAiBE,EAAoBP,IACpE,EAAwC11lB,EAAAA,SAAeqF,GAAvD,eAAOkxlB,EAAP,KAAqBC,EAArB,KACMC,EAAuBz2lB,EAAAA,aAAkB,WAC7C,IAAM3M,EAAUwimB,EAASv1lB,QACzB,GAAKjN,EAAL,CAGA,IAAMqjmB,EAAcP,EAAoB9imB,GAChB,OAApBqjmB,EAAYprkB,MACdj4B,EAAQsqB,MAAM2N,IAAMorkB,EAAYprkB,KAET,OAArBorkB,EAAYjrkB,OACdp4B,EAAQsqB,MAAM8N,KAAOirkB,EAAYjrkB,MAEnCp4B,EAAQsqB,MAAMohkB,gBAAkB2X,EAAY3X,gBAC5CyX,GAAgB,EATf,CAUF,GAAE,CAACL,IAUJn2lB,EAAAA,WAAgB,WACVqF,GACFoxlB,GAEH,IACDz2lB,EAAAA,oBAA0B0M,GAAQ,kBAAMrH,EAAO,CAC7C4+L,eAAgB,WACdwyZ,GACD,GACC,IAJ8B,GAIxB,CAACpxlB,EAAMoxlB,IACjBz2lB,EAAAA,WAAgB,WACd,GAAKqF,EAAL,CAGA,IAAMi0D,GAAengD,EAAAA,GAAAA,IAAS,WAC5Bs9kB,GACD,IACK/G,GAAkB11kB,EAAAA,GAAAA,GAAYyikB,GAEpC,OADAiT,EAAgBtnmB,iBAAiB,SAAUkxE,GACpC,WACLA,EAAatrC,QACb0hkB,EAAgBrnmB,oBAAoB,SAAUixE,EAC/C,CATA,CAUF,GAAE,CAACmjhB,EAAUp3kB,EAAMoxlB,IACpB,IAAIv+Z,EAAqB09Z,EACM,SAA3BA,GAAsCnrB,EAAoBY,iBAC5DnzY,OAAqB1pM,GAMvB,IAAMJ,EAAYs2M,IAAkB+3Y,GAAW1ikB,EAAAA,GAAAA,GAAcyikB,GAAgBC,IAAWtwlB,UAAOqC,GAC/F,OAAoBwqB,EAAAA,GAAAA,KAAKo8kB,IAAax1lB,EAAAA,EAAAA,GAAS,CAC7C80lB,cAAe,CACbR,WAAW,GAEbl1lB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9B5Q,UAAWA,EACXiX,KAAMA,EACNvN,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,UAAuBonB,EAAAA,GAAAA,KAAKyxjB,GAAqB7qkB,EAAAA,EAAAA,GAAS,CACxD+nkB,QAAQ,EACRG,GAAIzikB,EACJ+jkB,WAvDmB,SAAC/1kB,EAAS23kB,GAC3B5B,GACFA,EAAW/1kB,EAAS23kB,GAEtByrB,GACD,EAmDGjtB,SAlDiB,WACnBgtB,GAAgB,EACjB,EAiDG5okB,QAASsqK,GACR8kZ,EAAiB,CAClBprlB,UAAuBonB,EAAAA,GAAAA,KAAKs8kB,IAAc11lB,EAAAA,EAAAA,GAAS,CACjD4kkB,UAAWA,GACVmxB,EAAY,CACb79lB,IAAKg+lB,EACL92lB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQhM,MAAOmplB,EAAW32lB,YACzCu3lB,OAAe/nmB,EAAY,CAC5BmvB,OAAO/d,EAAAA,EAAAA,GAAS,CAAC,EAAG+1lB,EAAWh4kB,MAAO,CACpC5jB,QAAS,KAEV,CACDsc,WAAYA,EACZzkB,SAAUA,UAIjB,IAoJD,MC/cO,SAAS+kmB,GAAoB3glB,GAClC,OAAOC,EAAAA,GAAAA,GAAqB,UAAWD,EACxC,EACmBE,EAAAA,GAAAA,GAAuB,UAAW,CAAC,OAAQ,QAAS,SAAxE,ICHMjK,GAAY,CAAC,cACjBuoS,GAAa,CAAC,YAAa,WAAY,uBAAwB,gBAAiB,UAAW,OAAQ,aAAc,iBAAkB,qBAAsB,kBAAmB,WAexKoiT,GAAa,CACjBr6d,SAAU,MACVD,WAAY,SAERu6d,GAAa,CACjBt6d,SAAU,MACVD,WAAY,QAaRw6d,IAAWnhlB,EAAAA,GAAAA,IAAOgsV,GAAS,CAC/BnkW,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,UACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAJJkkB,CAKd,CAAC,GACEohlB,IAAYphlB,EAAAA,GAAAA,IAAO2vjB,GAAO,CAC9BrllB,KAAM,UACN+1B,KAAM,QACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOsV,KAA1B,GAHHmJ,CAIf,CAIDmS,UAAW,oBAEXkvkB,wBAAyB,UAErBC,IAAethlB,EAAAA,GAAAA,IAAOuhlB,GAAU,CACpCj3mB,KAAM,UACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOq9C,IAA1B,GAHA5+B,CAIlB,CAEDqykB,QAAS,IAyMX,GAvM0BholB,EAAAA,YAAiB,SAAcgY,EAASlgB,GAChE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,YAER,EAcM0R,EAbFw3gB,UAAAA,OADJ,SAEIv3gB,EAYED,EAZFC,SAFJ,EAcMD,EAXFwlmB,qBAAAA,OAHJ,WAcMxlmB,EAVFylmB,cAAAA,OAJJ,MAIoB,CAAC,EAJrB,EAKIrW,EASEpvlB,EATFovlB,QACA17kB,EAQE1T,EARF0T,KANJ,EAcM1T,EAPFgkmB,WAAAA,OAPJ,MAOiB,CAAC,EAPlB,EAQI0B,EAME1lmB,EANF0lmB,eARJ,EAcM1lmB,EALFumM,mBAAAA,OATJ,MASyB,OATzB,IAcMvmM,EAJFqrlB,gBACE5T,GAXN,aAYQ,CAAC,EAZT,GAWMA,WAXN,EAcMz3kB,EADFouB,QAAAA,OAbJ,MAac,eAbd,EAeEi9jB,GAAkB1ukB,EAAAA,EAAAA,GAA8B3c,EAAMqrlB,gBAAiB/wkB,IACvEoC,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAO6iT,IACzCt1S,EAAQ4tB,KACR84O,EAA4B,QAApB1mQ,EAAMuO,UACd4I,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCw3gB,UAAAA,EACAguF,qBAAAA,EACAC,cAAAA,EACAhuB,WAAAA,EACAusB,WAAAA,EACAz9Z,mBAAAA,EACA8kZ,gBAAAA,EACAj9jB,QAAAA,IAEIvH,EAvEkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAOF,OAAOE,EAAAA,GAAAA,GALO,CACZjnB,KAAM,CAAC,QACP+a,MAAO,CAAC,SACR+nC,KAAM,CAAC,SAEoBoijB,GAAqBn+kB,EACnD,CA6DiBG,CAAkBtC,GAC5Bu3kB,EAAgBzkF,IAAcguF,GAAwB9xlB,EACtDiylB,EAAqBt3lB,EAAAA,OAAa,MAuBpCoulB,GAAmB,EAqBvB,OAjBApulB,EAAAA,SAAAA,IAAmBpO,GAAU,SAACshC,EAAOlrC,GAChBgY,EAAAA,eAAqBkzB,KAQnCA,EAAMvhC,MAAM0a,WACC,iBAAZ0T,GAA8BmT,EAAMvhC,MAAMmb,WAEd,IAArBshlB,KADTA,EAAkBpmmB,GAKvB,KACmBgxB,EAAAA,GAAAA,KAAK89kB,IAAUl3lB,EAAAA,EAAAA,GAAS,CAC1CmhlB,QAASA,EACTwU,aAAc,CACZh5d,SAAU,SACVD,WAAYspI,EAAQ,QAAU,QAEhCm5U,gBAAiBn5U,EAAQgxV,GAAaC,GACtClB,YAAY/1lB,EAAAA,EAAAA,GAAS,CACnBb,GAAIg4lB,IACHpB,EAAY,CACbn9kB,SAAS5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG+1lB,EAAWn9kB,QAAS,CACxC/mB,KAAM+mB,EAAQhM,UAGlBxN,UAAWwZ,EAAQ/mB,KACnB4T,KAAMA,EACNvN,IAAKA,EACLogM,mBAAoBA,EACpB8kZ,iBAAiBp9kB,EAAAA,EAAAA,GAAS,CACxBwpkB,WA9DmB,SAAC/1kB,EAAS23kB,GAC3BssB,EAAmBh3lB,SACrBg3lB,EAAmBh3lB,QAAQ2tlB,wBAAwB56lB,EAAS6L,GAE1DkqkB,GACFA,EAAW/1kB,EAAS23kB,EAEvB,GAwDIgS,GACH3mkB,WAAYA,GACXhI,EAAO,CACRmK,QAAS6+kB,EACTzlmB,UAAuBonB,EAAAA,GAAAA,KAAKi+kB,IAAcr3lB,EAAAA,EAAAA,GAAS,CACjD2kK,UA5DsB,SAAA38K,GACN,QAAdA,EAAMuB,MACRvB,EAAMo7D,iBACF+9hB,GACFA,EAAQn5lB,EAAO,cAGpB,EAsDG0gN,QAASgvZ,EACTnuF,UAAWA,KAAmC,IAArBilF,GAA0B+I,GACnDvJ,cAAeA,EACf7tkB,QAASA,GACRq3kB,EAAe,CAChBp4lB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ+7B,KAAM6ijB,EAAcp4lB,WAC5CpN,SAAUA,OAGf,IChLM,SAAS2lmB,GAAuBvhlB,GACrC,OAAOC,EAAAA,GAAAA,GAAqB,aAAcD,EAC3C,CACD,IACA,IADuBE,EAAAA,GAAAA,GAAuB,aAAc,CAAC,OAAQ,WAAY,YAAa,QAAS,SAAU,WAAY,QAAS,WAAY,eAAgB,uBAAwB,iBAAkB,gBAAiB,UAAW,oBCAxO,IACA,IAD4BA,EAAAA,GAAAA,GAAuB,kBAAmB,CAAC,OAAQ,wBCA/E,IACA,IAD4BA,EAAAA,GAAAA,GAAuB,kBAAmB,CAAC,OAAQ,YAAa,QAAS,QAAS,UAAW,cCHlH,SAASshlB,GAAwBxhlB,GACtC,OAAOC,EAAAA,GAAAA,GAAqB,cAAeD,EAC5C,CACD,IACA,IADwBE,EAAAA,GAAAA,GAAuB,cAAe,CAAC,OAAQ,eAAgB,QAAS,WAAY,UAAW,UAAW,aCH5HjK,GAAY,CAAC,YAAa,YAAa,QAAS,UAAW,iBAAkB,wBAAyB,OAAQ,WAAY,aAsC1HwrlB,IAAe9hlB,EAAAA,GAAAA,IAAO6ykB,GAAY,CACtChrlB,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,cACN+1B,KAAM,OACNI,kBAzB+B,SAACzkB,EAAOuF,GACvC,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAM4kB,EAAWo2kB,OAASv1lB,EAAOu1lB,MAAOp2kB,EAAW/J,SAAWpV,EAAOoV,SAAU+J,EAAWqhlB,gBAAkBxgmB,EAAOygmB,QACnI,GAgBoBhilB,EAKlB,kBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAMmR,WAAWwB,MAAO,CACzC4F,QAAS,OACTgT,eAAgB,aAChBC,WAAY,SACZr5B,SAAU,WACV+2lB,eAAgB,OAChB38kB,UAAW,GACX8c,WAAY,EACZE,cAAe,EACfkD,UAAW,aACXtB,WAAY,WACVhU,EAAWqhlB,gBAAkB,CAC/BhvkB,YAAa,GACbF,aAAc,IACbnS,EAAW/J,SAAW,CACvBqa,aAAc,aAAF,QAAgBznB,EAAM2V,MAAQ3V,GAAOgP,QAAQ5B,SACzDsrlB,eAAgB,gBAhBJ,GAkBZ,UAAW,CACTxP,eAAgB,OAChBpgkB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOE,MAEtD,uBAAwB,CACtBob,gBAAiB,kBAvBT,sBA0BN6vkB,GAAAA,WA1BM,SA2BV7vkB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,cAAiE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAA3F,MAAgH6S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,kBA3B9K,YA4BJ8qlB,GAAAA,cAAiC,CACrC7vkB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,mBAAsE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAhG,cAAqH7N,EAAM2V,KAAK3G,QAAQxB,OAAOS,aAA/I,OAAkKyS,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOS,kBA7BzQ,sBAgCN0qlB,GAAAA,SAhCM,UAgC6B,CACvC7vkB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,mBAAsE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAhG,cAAqH7N,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAA/I,OAAkK+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOG,cAEjR,uBAAwB,CACtBmb,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,cAAiE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAA3F,MAAgH6S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,qBApChL,sBAuCN8qlB,GAAAA,cAAiC,CACrC7vkB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOQ,SAxC5C,sBA0CN2qlB,GAAAA,UAA6B,CACjC99lB,SAAUmF,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOO,mBA3CpC,yBA6CH6qlB,GAAAA,MAAwB,CAC/BvukB,UAAWrqB,EAAM6kB,QAAQ,GACzB0F,aAAcvqB,EAAM6kB,QAAQ,MA/ClB,yBAiDH+zkB,GAAAA,OAAyB,CAChCpukB,WAAY,MAlDF,uBAoDLqukB,GAAAA,MAA6B,CAClCxukB,UAAW,EACXE,aAAc,KAtDJ,uBAwDLsukB,GAAAA,OAA8B,CACnCrvkB,YAAa,MAzDH,uBA2DLsvkB,GAAAA,MAA6B,CAClCnwkB,SAAU,KA5DA,IA8DVxR,EAAWo2kB,QAAZ,WACAvtlB,EAAMoM,YAAYI,GAAG,MAAQ,CAC5BD,UAAW,SAEZ4K,EAAWo2kB,QAAS7slB,EAAAA,EAAAA,GAAS,CAC9B6L,UAAW,GAEX8c,WAAY,EACZE,cAAe,GACdvpB,EAAMmR,WAAWyB,OALW,wBAMtBkmlB,GAAAA,KANsB,QAMW,CACtCznlB,SAAU,aA5EX,IAoNH,GArI8BvQ,EAAAA,YAAiB,SAAkBgY,EAASlgB,GACxE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,gBAER,EAUM0R,EATFw3gB,UAAAA,OADJ,WAUMx3gB,EARFsmB,UAAAA,OAFJ,MAEgB,KAFhB,IAUMtmB,EAPF86lB,MAAAA,OAHJ,WAUM96lB,EANF2a,QAAAA,OAJJ,WAUM3a,EALF+lmB,eAAAA,OALJ,SAMIlN,EAIE74lB,EAJF64lB,sBANJ,EAUM74lB,EAHFonB,KAAAA,OAPJ,MAOW,WAPX,EAQck/kB,EAERtmmB,EAFF01C,SACAroC,EACErN,EADFqN,UAEFqP,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzC+gC,EAAUhtC,EAAAA,WAAiB4slB,IAC3Blib,EAAe1qK,EAAAA,SAAc,iBAAO,CACxCyslB,MAAOA,GAASz/iB,EAAQy/iB,QAAS,EACjCiL,eAAAA,EAFiC,GAG/B,CAAC1qjB,EAAQy/iB,MAAOA,EAAOiL,IACrBQ,EAAcl4lB,EAAAA,OAAa,OACjCka,EAAAA,GAAAA,IAAkB,WACZivf,GACE+uF,EAAY53lB,SACd43lB,EAAY53lB,QAAQ4M,OAKzB,GAAE,CAACi8f,IACJ,IAOI9he,EAPEhxB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC86lB,MAAO/hb,EAAa+hb,MACpBnglB,QAAAA,EACAorlB,eAAAA,IAEIl/kB,EAxIkB,SAAAnC,GACxB,IACEhK,EAMEgK,EANFhK,SACAoglB,EAKEp2kB,EALFo2kB,MACAnglB,EAIE+J,EAJF/J,QACAorlB,EAGErhlB,EAHFqhlB,eACA5qlB,EAEEuJ,EAFFvJ,SACA0L,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAQg7lB,GAAS,QAASpglB,GAAY,YAAaqrlB,GAAkB,UAAWprlB,GAAW,UAAWQ,GAAY,aAErH29kB,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAO++kB,GAAyBh/kB,GACvE,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CA0HiB9xkB,CAAkBhnB,GAC5Bg5kB,GAAYvwjB,EAAAA,GAAAA,GAAW89kB,EAAapgmB,GAK1C,OAHKnG,EAAM0a,WACTg7B,OAA4B74C,IAAjBypmB,EAA6BA,GAAgB,IAEtCj/kB,EAAAA,GAAAA,KAAK4zkB,GAAAA,SAAsB,CAC7C7nmB,MAAO2lL,EACP94K,UAAuBonB,EAAAA,GAAAA,KAAKy+kB,IAAc73lB,EAAAA,EAAAA,GAAS,CACjD9H,IAAK6ykB,EACL5xjB,KAAMA,EACNsuB,SAAUA,EACVpvB,UAAWA,EACXuykB,uBAAuB3xkB,EAAAA,GAAAA,GAAKL,EAAQmW,aAAc67jB,GAClDxrlB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,IAC7BqP,EAAO,CACRgI,WAAYA,EACZmC,QAASA,MAGd,gDClKD8khB,EAAAA,GAAAA,wBAA+B,WCjB3B1E,GACAC,0DAqBJ,IAAMC,GAAmB,IAAI1jiB,QACvB2jiB,GAAqB,IAAI3jiB,QACzB4jiB,GAA2B,IAAI5jiB,QAC/B6jiB,GAAiB,IAAI7jiB,QACrB8jiB,GAAwB,IAAI9jiB,QA0DlC,IAAI+jiB,GAAgB,CAChB14iB,IADgB,SACZ+d,EAAQ9a,EAAMqwiB,GACd,GAAIv1hB,aAAkB46hB,eAAgB,CAElC,GAAa,SAAT11iB,EACA,OAAOq1iB,GAAmBt4iB,IAAI+d,GAElC,GAAa,qBAAT9a,EACA,OAAO8a,EAAO66hB,kBAAoBL,GAAyBv4iB,IAAI+d,GAGnE,GAAa,UAAT9a,EACA,OAAOqwiB,EAASsF,iBAAiB,QAC3B7qiB,EACAuliB,EAASuF,YAAYvF,EAASsF,iBAAiB,GAE5D,CAED,OAAOl2e,GAAK3kD,EAAO9a,GACtB,EACD1D,IApBgB,SAoBZwe,EAAQ9a,EAAMqB,GAEd,OADAyZ,EAAO9a,GAAQqB,GACR,CACV,EACDvE,IAxBgB,SAwBZge,EAAQ9a,GACR,OAAI8a,aAAkB46hB,iBACR,SAAT11iB,GAA4B,UAATA,IAGjBA,KAAQ8a,CAClB,GAKL,SAAS+6hB,GAAa3hiB,GAIlB,OAAIA,IAAS4hiB,YAAY3qiB,UAAU4qiB,aAC7B,qBAAsBL,eAAevqiB,WA7GnCgqiB,KACHA,GAAuB,CACpBa,UAAU7qiB,UAAU8qiB,QACpBD,UAAU7qiB,UAAUyqhB,SACpBogB,UAAU7qiB,UAAU+qiB,sBAqHExtiB,SAASwL,GAC5B,WAAmB,2BAANnT,EAAM,yBAANA,EAAM,gBAItB,OADAmT,EAAKgH,MAAMo8C,GAAOn0D,MAAOpC,GAClB0+D,GAAK21e,GAAiBr4iB,IAAIoG,MACpC,EAEE,WAAmB,2BAANpC,EAAM,yBAANA,EAAM,gBAGtB,OAAO0+D,GAAKvrD,EAAKgH,MAAMo8C,GAAOn0D,MAAOpC,GACxC,EAvBU,SAAUo1iB,GAAqB,2BAANp1iB,EAAM,iCAANA,EAAM,kBAClC,IAAMq1iB,EAAKliiB,EAAKtS,KAAL,MAAAsS,EAAI,CAAMojD,GAAOn0D,MAAOgziB,GAApB,OAAmCp1iB,IAElD,OADAu0iB,GAAyBh5iB,IAAI85iB,EAAID,EAAW55gB,KAAO45gB,EAAW55gB,OAAS,CAAC45gB,IACjE12e,GAAK22e,EACf,CAoBR,CACD,SAASC,GAAuBh1iB,GAC5B,MAAqB,oBAAVA,EACAw0iB,GAAax0iB,IAGpBA,aAAiBq0iB,gBAhGzB,SAAwCU,GAEpC,IAAIf,GAAmBv4iB,IAAIs5iB,GAA3B,CAEA,IAAMrkf,EAAO,IAAIjwD,SAAQ,SAACC,EAASY,GAC/B,IAAM2ziB,EAAW,WACbF,EAAGzxiB,oBAAoB,WAAYmgB,GACnCsxhB,EAAGzxiB,oBAAoB,QAASnC,GAChC4ziB,EAAGzxiB,oBAAoB,QAASnC,EACnC,EACKsiB,EAAW,WACb/iB,IACAu0iB,GACH,EACK9ziB,EAAQ,WACVG,EAAOyziB,EAAG5ziB,OAAS,IAAI+ziB,aAAa,aAAc,eAClDD,GACH,EACDF,EAAG1xiB,iBAAiB,WAAYogB,GAChCsxhB,EAAG1xiB,iBAAiB,QAASlC,GAC7B4ziB,EAAG1xiB,iBAAiB,QAASlC,EAChC,IAED6yiB,GAAmB/4iB,IAAI85iB,EAAIrkf,EApBjB,CAqBb,CAyEOykf,CAA+Bn1iB,GA9JhBynC,EA+JDznC,GAzJV6ziB,KACHA,GAAoB,CACjBY,YACAW,eACAC,SACAV,UACAN,kBAZiDpgf,MAAK,SAACv4C,GAAD,OAAO+rB,aAAkB/rB,CAAzB,IAgKnD,IAAI/a,MAAMX,EAAOo0iB,IAErBp0iB,GAlKW,IAACynC,CAmKtB,CACD,SAAS22B,GAAKp+D,GAGV,GAAIA,aAAiBs1iB,WACjB,OA3IR,SAA0B3siB,GACtB,IAAMyW,EAAU,IAAI3e,SAAQ,SAACC,EAASY,GAClC,IAAM2ziB,EAAW,WACbtsiB,EAAQrF,oBAAoB,UAAW0mB,GACvCrhB,EAAQrF,oBAAoB,QAASnC,EACxC,EACK6oB,EAAU,WACZtpB,EAAQ09D,GAAKz1D,EAAQrD,SACrB2viB,GACH,EACK9ziB,EAAQ,WACVG,EAAOqH,EAAQxH,OACf8ziB,GACH,EACDtsiB,EAAQtF,iBAAiB,UAAW2mB,GACpCrhB,EAAQtF,iBAAiB,QAASlC,EACrC,IAcD,OAbAie,EACKxf,MAAK,SAACI,GAGHA,aAAiB20iB,WACjBZ,GAAiB94iB,IAAI+E,EAAO2I,EAGnC,IACI0W,OAAM,WAAS,IAGpB80hB,GAAsBl5iB,IAAImkB,EAASzW,GAC5ByW,CACV,CA4Gcm2hB,CAAiBv1iB,GAG5B,GAAIk0iB,GAAez4iB,IAAIuE,GACnB,OAAOk0iB,GAAex4iB,IAAIsE,GAC9B,IAAM2qC,EAAWqqgB,GAAuBh1iB,GAOxC,OAJI2qC,IAAa3qC,IACbk0iB,GAAej5iB,IAAI+E,EAAO2qC,GAC1BwpgB,GAAsBl5iB,IAAI0vC,EAAU3qC,IAEjC2qC,CACV,CACD,IAAMsrB,GAAS,SAACj2D,GAAD,OAAWm0iB,GAAsBz4iB,IAAIsE,EAArC,EC5If,OAAMw1iB,GAAc,CAAC,MAAO,SAAU,SAAU,aAAc,SACxDC,GAAe,CAAC,MAAO,MAAO,SAAU,SACxCC,GAAgB,IAAI16iB,IAC1B,SAAS8iG,GAAUrkF,EAAQ9a,GACvB,GAAM8a,aAAkBg7hB,eAClB91iB,KAAQ8a,IACM,kBAAT9a,EAFX,CAKA,GAAI+2iB,GAAch6iB,IAAIiD,GAClB,OAAO+2iB,GAAch6iB,IAAIiD,GAC7B,IAAMg3iB,EAAiBh3iB,EAAK+E,QAAQ,aAAc,IAC5CkyiB,EAAWj3iB,IAASg3iB,EACpBE,EAAUJ,GAAapuiB,SAASsuiB,GACtC,GAEEA,KAAmBC,EAAWP,SAAWD,gBAAgBtriB,YACrD+riB,GAAWL,GAAYnuiB,SAASsuiB,IAHtC,CAMA,IAAMzuiB,EAAM,yCAAG,WAAgB4uiB,GAAhB,sGAELf,EAAKjziB,KAAK4yiB,YAAYoB,EAAWD,EAAU,YAAc,YAC3Dp8hB,EAASs7hB,EAAG16c,MAHL,WAA8B36F,EAA9B,iCAA8BA,EAA9B,iBAIPk2iB,IACAn8hB,EAASA,EAAOxW,MAAMvD,EAAKs6B,UALpB,SAWGv5B,QAAQ0nI,IAAI,EACtB,EAAA1uH,GAAOk8hB,GAAP,QAA0Bj2iB,GAC1Bm2iB,GAAWd,EAAGrkf,OAbP,uCAcP,IAdO,gDAAH,sDAiBZ,OADAglf,GAAcz6iB,IAAI0D,EAAMuI,GACjBA,CAlBN,CAXA,CA8BJ,CDuCGktiB,GCtCS,SAAC2B,GAAD,gBAAC,WACPA,GADM,IAETr6iB,IAAK,SAAC+d,EAAQ9a,EAAMqwiB,GAAf,OAA4Blxc,GAAUrkF,EAAQ9a,IAASo3iB,EAASr6iB,IAAI+d,EAAQ9a,EAAMqwiB,EAAlF,EACLvziB,IAAK,SAACge,EAAQ9a,GAAT,QAAoBm/F,GAAUrkF,EAAQ9a,IAASo3iB,EAASt6iB,IAAIge,EAAQ9a,EAApE,GAHI,CDsCOU,CAAS+0iB,gDEpGhBg/D,GAAqB,IAErBC,GAAkB,KAAH,OAAQh9hB,IACvBi9hB,GAAwB,SAKxBC,GAA0B,KCEjCC,IAAqB,kBACzB,4BACE,oDAFuB,WAGzB,iBAA4B,6CAHH,WAIzB,yBAAoC,qCAJX,WAKzB,iBACE,+FANuB,WAOzB,cAAyB,oDAPA,WAQzB,8BACE,4EATuB,IAsBd/7D,GAAgB,IAAIx2hB,GAAAA,GDtBV,gBACK,gBCwB1BuylB,IAYI,SAAUC,GAActymB,GAC5B,OACEA,aAAiB0f,GAAAA,IACjB1f,EAAMhF,KAAKkL,SAAQ,iBAEvB,CCxCgB,SAAAqsmB,GAAA,GAAiD,IAAtBC,EAAsB,EAAtBA,UACzC,MAAO,GAAP,OFPA,kDEOA,qBAA4CA,EAA5C,iBACD,CAEK,SAAUC,GACdxrmB,GAEA,MAAO,CACLgF,MAAOhF,EAASgF,MAChBymmB,cAAsC,EACtC1sD,WA8DuC2sD,EA9DM1rmB,EAAS++iB,UAgEjD3shB,OAAOs5kB,EAAkBpwmB,QAAQ,IAAK,SA/D3C2hjB,aAAczgjB,KAAKygE,OA6DvB,IAA2CyuiB,CA3D1C,UAEqBC,GAAqB,EAArBA,mFAAf,WACLC,EACA5rmB,GAFK,8FAIqCA,EAASI,OAJ9C,cAICyrmB,EAJD,OAKCC,EAAYD,EAAa9ymB,MAL1B,kBAMEs2iB,GAAcnliB,OAAiC,kBACpD0hmB,YAAAA,EACAG,WAAYD,EAAU/3mB,KACtBi4mB,cAAeF,EAAUh4mB,QACzBm4mB,aAAcH,EAAUxrmB,UAVrB,kEAcS,SAAA4rmB,GAAA,GAAgC,IAAnB/yD,EAAmB,EAAnBA,OAC3B,OAAO,IAAI75iB,QAAQ,CACjB,eAAgB,mBAChBy2F,OAAQ,mBACR,iBAAkBojd,GAErB,UAEegzD,GACdC,EAAAA,GAC6C,IAA3CztD,EAA2C,EAA3CA,aAEIrhjB,EAAU4umB,GAAWE,GAE3B,OADA9umB,EAAQ+B,OAAO,gBAmCjB,SAAgCs/iB,GAC9B,MAAO,GAAP,OAAUusD,GAAV,YAAmCvsD,EACrC,CArCkC0tD,CAAuB1tD,IAChDrhjB,CACR,UAeqBgvmB,GAAmB,mFAAlC,WACL70mB,GADK,4FAGgBA,IAHhB,aAGCyF,EAHD,QAKMoD,QAAU,KAAOpD,EAAOoD,OAAS,KALvC,yCAOI7I,KAPJ,gCAUEyF,GAVF,2ECzDeqvmB,GAA0B,EAA1BA,mFAAf,qHACHH,EADG,EACHA,UAAWtmD,EADR,EACQA,yBACX0mD,EAFG,EAEHA,IAEIC,EAAWnB,GAAyBc,GAEpC9umB,EAAU4umB,GAAWE,KAGrBM,EAAmB5mD,EAAyB7X,aAAa,CAC7DiB,UAAU,KAVP,iCAa4Bw9D,EAAiBC,sBAb7C,QAaGxiD,EAbH,SAeD7sjB,EAAQ+B,OAAO,oBAAqB8qjB,GAfnC,eAmBCnrjB,EAAO,CACXwtmB,IAAAA,EACAI,YAAa1B,GACbx5D,MAAO06D,EAAU16D,MACjBm7D,WAAY5B,IAGR1qmB,EAAuB,CAC3BzB,OAAQ,OACRxB,QAAAA,EACA0B,KAAMQ,KAAKC,UAAUT,IA7BlB,UAgCkBstmB,IAAmB,kBAAMvsmB,MAAM0smB,EAAUlsmB,EAAtB,IAhCrC,aAgCCP,EAhCD,QAiCQE,GAjCR,kCAkCqDF,EAASI,OAlC9D,eAkCG0smB,EAlCH,OAmCGC,EAA2D,CAC/DP,IAAKM,EAAcN,KAAOA,EAC1BQ,mBAA2C,EAC3CruD,aAAcmuD,EAAcnuD,aAC5BsuD,UAAWzB,GAAiCsB,EAAcG,YAvCzD,kBAyCIF,GAzCJ,yBA2CSpB,GAAqB,sBAAuB3rmB,GA3CrD,wFCfD,SAAUo1hB,GAAM31d,GACpB,OAAO,IAAIpnE,SAAc,SAAAC,GACvB22B,WAAW32B,EAASmnE,EACrB,GACH,CCHO,IAAMytiB,GAAoB,6BAOjBC,KACd,IAGE,IAAMC,EAAe,IAAIn4J,WAAW,KAElCvhd,KAAK25mB,QAAW35mB,KAAyC45mB,UACpDC,gBAAgBH,GAGvBA,EAAa,GAAK,IAAcA,EAAa,GAAK,GAElD,IAAMZ,EAUV,SAAgBY,GAKd,OCpCoCrpmB,EDgCIqpmB,EC/B5Bp4lB,KAAK7R,OAAOC,aAAP,MAAAD,QAAM,QAAiBY,KAC7BzI,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MDkC7BoD,OAAO,EAAG,ICpCvB,IAAgCqF,CDqCtC,CAhBgB5I,CAAOiymB,GAEnB,OAAOF,GAAkBp9lB,KAAK08lB,GAAOA,EApBd,EAwBxB,CAHC,MAAMp4mB,IAEN,MAvBuB,EAwBxB,CACF,CEzBK,SAAUukO,GAAOyzY,GACrB,MAAO,GAAP,OAAUA,EAAU79D,QAApB,YAA+B69D,EAAU16D,MAC3C,CCDA,IAAM87D,GAA2D,IAAI56mB,IAMrD,SAAA66mB,GAAWrB,EAAsBI,GAC/C,IAAMxwmB,EAAM28N,GAAOyzY,GAEnBsB,GAAuB1xmB,EAAKwwmB,GAsD9B,SAA4BxwmB,EAAawwmB,GACvC,IAAMmB,EAAUC,KACZD,GACFA,EAAQttE,YAAY,CAAErkiB,IAAAA,EAAKwwmB,IAAAA,IAE7BqB,IACD,CA3DCC,CAAmB9xmB,EAAKwwmB,EACzB,CAyCD,SAASkB,GAAuB1xmB,EAAawwmB,GAC3C,IAAMnmjB,EAAYmnjB,GAAmBl6mB,IAAI0I,GACzC,GAAKqqD,EAAL,CAFsD,iBAM/BA,GAN+B,IAMtD,IAAK,EAAL,qBAAkC,EAChCpvD,EADgC,SACvBu1mB,EACV,CARqD,+BAIrD,CAKF,CAUD,IAAIuB,GAA4C,KAEhD,SAASH,KAOP,OANKG,IAAoB,qBAAsBr6mB,QAC7Cq6mB,GAAmB,IAAIC,iBAAiB,0BACvB5tE,UAAY,SAAAz9hB,GAC3B+qmB,GAAuB/qmB,EAAE3O,KAAKgI,IAAK2G,EAAE3O,KAAKw4mB,IAC3C,GAEIuB,EACR,CAED,SAASF,KACyB,IAA5BL,GAAmBjmmB,MAAcwmmB,KACnCA,GAAiB31lB,QACjB21lB,GAAmB,KAEvB,CCtFA,IAEME,GAAoB,+BAStBz9D,GAA2D,KAC/D,SAASC,KAgBP,OAfKD,KACHA,GV3BJ,SAAgB19iB,EAAMm7E,GAA0D,6DAAJ,CAAC,EAA5Cyie,EAA+C,EAA/CA,QAASC,EAAsC,EAAtCA,QAASC,EAA6B,EAA7BA,SAAUC,EAAmB,EAAnBA,WACnDtwiB,EAAUuX,UAAUI,KAAKplB,EAAMm7E,GAC/B6ie,EAAc96e,GAAKz1D,GAgBzB,OAfIowiB,GACApwiB,EAAQtF,iBAAiB,iBAAiB,SAACR,GACvCk2iB,EAAQ36e,GAAKz1D,EAAQrD,QAASzC,EAAMs2iB,WAAYt2iB,EAAMu2iB,WAAYh7e,GAAKz1D,EAAQ+riB,aAClF,IAEDoE,GACAnwiB,EAAQtF,iBAAiB,WAAW,kBAAMy1iB,GAAN,IACxCI,EACKt5iB,MAAK,SAAC8+f,GACHu6C,GACAv6C,EAAGr7f,iBAAiB,SAAS,kBAAM41iB,GAAN,IAC7BD,GACAt6C,EAAGr7f,iBAAiB,iBAAiB,kBAAM21iB,GAAN,GAC5C,IACI35hB,OAAM,WAAS,IACb65hB,CACV,CUQeG,CAdM,kCACG,EAa+B,CAClDN,QAAS,SAACr6C,EAAIy6C,GAMZ,GACO,IADCA,EAEJz6C,EAAG46C,kBAAkB+8D,GAE1B,KAGEz9D,EACR,UAeqB39iB,GAAAA,EAAAA,mFAAf,WACLu5mB,EACAx0mB,GAFK,2FAICoE,EAAM28N,GAAOyzY,GAJd,SAKY37D,KALZ,cAKCn6C,EALD,OAMCq2C,EAAKr2C,EAAGg2C,YAAY2hE,GAAmB,aACvC9hE,EAAcQ,EAAGR,YAAY8hE,IAP9B,SAQmB9hE,EAAY74iB,IAAI0I,GARnC,cAQCs4J,EARD,iBASC63Y,EAAYsF,IAAI75iB,EAAOoE,GATxB,yBAUC2wiB,EAAGrkf,KAVJ,eAYAgsG,GAAYA,EAASk4c,MAAQ50mB,EAAM40mB,KACtCiB,GAAWrB,EAAWx0mB,EAAM40mB,KAbzB,kBAgBE50mB,GAhBF,4EAoBeR,GAAO,mFAAtB,WAAsBg1mB,GAAtB,uFACCpwmB,EAAM28N,GAAOyzY,GADd,SAEY37D,KAFZ,cAECn6C,EAFD,OAGCq2C,EAAKr2C,EAAGg2C,YAAY2hE,GAAmB,aAHxC,SAICthE,EAAGR,YAAY8hE,IAAmB1umB,OAAOvD,GAJ1C,uBAKC2wiB,EAAGrkf,KALJ,2EAce5iB,GAAAA,EAAAA,mFAAf,WACL0mkB,EACA8B,GAFK,6FAIClymB,EAAM28N,GAAOyzY,GAJd,SAKY37D,KALZ,cAKCn6C,EALD,OAMCq2C,EAAKr2C,EAAGg2C,YAAY2hE,GAAmB,aACvCh8gB,EAAQ06c,EAAGR,YAAY8hE,IAPxB,SAQkDh8gB,EAAM3+F,IAC3D0I,GATG,UAQCs4J,EARD,YAaYjzJ,KAFXkhC,EAAW2rkB,EAAS55c,IAXrB,kCAcGriE,EAAM1yF,OAAOvD,GAdhB,iDAgBGi2F,EAAMw/c,IAAIlvgB,EAAUvmC,GAhBvB,yBAkBC2wiB,EAAGrkf,KAlBJ,eAoBD/lB,GAAc+xH,GAAYA,EAASk4c,MAAQjqkB,EAASiqkB,KACtDiB,GAAWrB,EAAW7pkB,EAASiqkB,KArB5B,kBAwBEjqkB,GAxBF,4ECzDe4rkB,GAAqB,mFAApC,WACLC,GADK,8FAK2B1okB,GAAO0okB,EAAchC,WAAW,SAAAiC,GAC9D,IAAMC,EAAoBC,GAAgCF,GACpDG,EAAmBC,GACvBL,EACAE,GAGF,OADAI,EAAsBF,EAAiBE,oBAChCF,EAAiBF,iBACzB,IAbI,ULxBoB,MK6BnBA,EALD,QAeiB9B,IAfjB,gCAiB+BkC,EAjB/B,6CAiBMJ,kBAjBN,uCAoBE,CACLA,kBAAAA,EACAI,oBAAAA,IAtBG,kEA8BP,SAASH,GACPF,GAOA,OAAOM,GAL0BN,GAAY,CAC3C7B,IAAKW,KACLH,mBAA6C,GAIhD,CASD,SAASyB,GACPL,EACAE,GAEA,GAAwC,IAApCA,EAAkBtB,mBAAkD,CACtE,IAAK71lB,UAAU4ygB,OAKb,MAAO,CACLukF,kBAAAA,EACAI,oBALmCr2mB,QAAQa,OAC3Cm2iB,GAAcnliB,OAA6B,iBAS/C,IAAM0kmB,EAA+C,CACnDpC,IAAK8B,EAAkB9B,IACvBQ,mBAA6C,EAC7C6B,iBAAkBrymB,KAAKygE,OAEnByxiB,WAkB0B,EAArBI,mCAlBiBA,CAC1BV,EACAQ,GAEF,MAAO,CAAEN,kBAAmBM,EAAiBF,oBAAAA,EAC9C,CAAM,OAC+B,IAApCJ,EAAkBtB,mBAEX,CACLsB,kBAAAA,EACAI,oBAAqBK,GAAyBX,IAGzC,CAAEE,kBAAAA,EAEZ,iDAGD,WACEF,EACAE,GAFF,qGAK8C/B,GACxC6B,EACAE,GAPN,cAKUvB,EALV,yBASWl6mB,GAAIu7mB,EAAchC,UAAWW,IATxC,oCAWQ1B,GAAc,EAAD,KAAmC,MAA5B,KAAE3ylB,WAAWqzlB,WAXzC,kCAcY30mB,GAAOg3mB,EAAchC,WAdjC,iDAiBYv5mB,GAAIu7mB,EAAchC,UAAW,CACjCI,IAAK8B,EAAkB9B,IACvBQ,mBAA6C,IAnBrD,4GA2Be+B,GAAyB,mFAAxC,WACEX,GADF,kGAOuCY,GACnCZ,EAAchC,WARlB,OAOM/tmB,EAPN,iBAUiC,IAAxBA,EAAM2umB,mBAVf,iCAYU53E,GAAM,KAZhB,uBAckB45E,GAA0BZ,EAAchC,WAd1D,OAcI/tmB,EAdJ,iCAiB8B,IAAxBA,EAAM2umB,mBAjBZ,kCAoBYmB,GAAqBC,GApBjC,oBAmBYE,EAnBZ,EAmBYA,oBAAmBI,EAnB/B,EAmB+BA,qBAnB/B,0CAuBaA,GAvBb,iCA0BaJ,GA1Bb,iCA8BSjwmB,GA9BT,mEAyCA,SAAS2wmB,GACP5C,GAEA,OAAO1mkB,GAAO0mkB,GAAW,SAAAiC,GACvB,IAAKA,EACH,MAAMh/D,GAAcnliB,OAAM,0BAE5B,OAAOykmB,GAAqBN,EAC7B,GACF,CAED,SAASM,GAAqBtwmB,GAC5B,OAcoE,KAHpEiwmB,EAXmCjwmB,GAcf2umB,oBAClBsB,EAAkBO,iBAAmB7D,GAAqBxumB,KAAKygE,MAdxD,CACLuviB,IAAKnumB,EAAMmumB,IACXQ,mBAA6C,GAI1C3umB,EAGT,IACEiwmB,CAHD,UCzLqBW,GAAyB,EAAzBA,mFAAf,aAELX,GAFK,mGACHlC,EADG,EACHA,UAAWtmD,EADR,EACQA,yBAGP2mD,EAAWyC,GAA6B9C,EAAWkC,GAEnDhxmB,EAAU6umB,GAAmBC,EAAWkC,KAGxC5B,EAAmB5mD,EAAyB7X,aAAa,CAC7DiB,UAAU,KAVP,gCAa4Bw9D,EAAiBC,sBAb7C,QAaGxiD,EAbH,SAeD7sjB,EAAQ+B,OAAO,oBAAqB8qjB,GAfnC,cAmBCnrjB,EAAO,CACXmwmB,aAAc,CACZtC,WAAY5B,GACZv5D,MAAO06D,EAAU16D,QAIfnxiB,EAAuB,CAC3BzB,OAAQ,OACRxB,QAAAA,EACA0B,KAAMQ,KAAKC,UAAUT,IA7BlB,UAgCkBstmB,IAAmB,kBAAMvsmB,MAAM0smB,EAAUlsmB,EAAtB,IAhCrC,aAgCCP,EAhCD,QAiCQE,GAjCR,kCAkCoDF,EAASI,OAlC7D,eAkCG0smB,EAlCH,OAmCGsC,EACJ5D,GAAiCsB,GApChC,kBAqCIsC,GArCJ,yBAuCSzD,GAAqB,sBAAuB3rmB,GAvCrD,wFA2CP,SAASkvmB,GACP9C,EADF,GAEsC,IAAlCI,EAAkC,EAAlCA,IAEF,MAAO,GAAP,OAAUlB,GAAyBc,GAAnC,YAAiDI,EAAjD,uBACF,UC1CsB6C,GAAiB,mFAAhC,WACLjB,GADK,qGAELlzD,EAFK,yCAKex1gB,GAAO0okB,EAAchC,WAAW,SAAAiC,GAClD,IAAKiB,GAAkBjB,GACrB,MAAMh/D,GAAcnliB,OAAM,kBAG5B,IAAMqlmB,EAAelB,EAASpB,UAC9B,IAAK/xD,GAAgBs0D,GAAiBD,GAEpC,OAAOlB,EACF,GAA8B,IAA1BkB,EAAa9D,cAGtB,OADAgE,EAAeC,GAA0BtB,EAAelzD,GACjDmzD,EAGP,IAAKl3lB,UAAU4ygB,OACb,MAAMslB,GAAcnliB,OAAM,eAG5B,IAAM0kmB,EAAkBe,GAAoCtB,GAE5D,OADAoB,EAAeG,GAAyBxB,EAAeQ,GAChDA,CAEV,IA5BI,UAKCvwmB,EALD,QA8BaoxmB,EA9Bb,iCA+BKA,EA/BL,gDAgCApxmB,EAAM4umB,UAhCN,eA8BCA,EA9BD,uBAiCEA,GAjCF,8EA0CQyC,GAA0B,EAA1BA,mFAAf,WACEtB,EACAlzD,GAFF,8FAQoB20D,GAAuBzB,EAAchC,WARzD,OAQM/tmB,EARN,iBASsC,IAA7BA,EAAM4umB,UAAUxB,cATzB,iCAWUr2E,GAAM,KAXhB,uBAakBy6E,GAAuBzB,EAAchC,WAbvD,OAaI/tmB,EAbJ,iCAiB6B,KADrB4umB,EAAY5umB,EAAM4umB,WACVxB,cAjBhB,0CAmBW4D,GAAiBjB,EAAelzD,IAnB3C,iCAqBW+xD,GArBX,mEAiCA,SAAS4C,GACPzD,GAEA,OAAO1mkB,GAAO0mkB,GAAW,SAAAiC,GACvB,IAAKiB,GAAkBjB,GACrB,MAAMh/D,GAAcnliB,OAAM,kBAG5B,IAoFiC+imB,EApF3BsC,EAAelB,EAASpB,UAC9B,OAqFqD,KAFpBA,EAnFDsC,GAqFtB9D,eACVwB,EAAU6C,YAAc9E,GAAqBxumB,KAAKygE,MApF3CvlE,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,GAAQ,CACXu1mB,UAAW,CAAExB,cAAe,KAIzB4C,CACR,GACF,UAEcuB,GAAyB,EAAzBA,mFAAf,WACExB,EACAE,GAFF,yGAK4BW,GACtBb,EACAE,GAPN,cAKUrB,EALV,OASU8C,EACDr4mB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,GACH,CAAAu1mB,UAAAA,IAXN,SAaUp6mB,GAAIu7mB,EAAchC,UAAW2D,GAbvC,gCAcW9C,GAdX,sCAiBM5B,GAAc,EAAD,KACgB,MAA5B,KAAE3ylB,WAAWqzlB,YAAkD,MAA5B,KAAErzlB,WAAWqzlB,WAlBvD,kCAsBY30mB,GAAOg3mB,EAAchC,WAtBjC,uCAwBY2D,EACDr4mB,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EAAAA,GACH,CAAAu1mB,UAAW,CAAExB,cAAe,KA1BpC,UA4BY54mB,GAAIu7mB,EAAchC,UAAW2D,GA5BzC,oGAkCA,SAAST,GACPhB,GAEA,YACwBjtmB,IAAtBitmB,GACgE,IAAhEA,EAAkBtB,kBAErB,CAED,SAASwC,GAAiBvC,GACxB,OACqD,IAAnDA,EAAUxB,gBAKd,SAA4BwB,GAC1B,IAAMhwiB,EAAMzgE,KAAKygE,MACjB,OACEA,EAAMgwiB,EAAUhwD,cAChBgwD,EAAUhwD,aAAegwD,EAAUluD,UAAY9hf,EAAMkuiB,EAExD,CAVI6E,CAAmB/C,EAEvB,CAWD,SAAS0C,GACPtB,GAEA,IAAM4B,EAA2C,CAC/CxE,cAAwC,EACxCqE,YAAatzmB,KAAKygE,OAEpB,OAAO,OAAP,wBACKoxiB,GAAQ,CACXpB,UAAWgD,GAEd,iDCjLM,WAAqB7B,GAArB,yFACC8B,EAAoB9B,EADrB,SAEoDD,GACvD+B,GAHG,uBAEG5B,EAFH,EAEGA,mBAAmBI,EAFtB,EAEsBA,qBAKzBA,EAAoBz3lB,MAAMlhB,QAAQgD,OAIlCs2mB,GAAiBa,GAAmBj5lB,MAAMlhB,QAAQgD,OAX/C,kBAcEu1mB,EAAkB9B,KAdpB,kHCCA,WACL4B,GADK,mGAELlzD,EAFK,gCAICg1D,EAAoB9B,EAJrB,SAKC+B,GAAiCD,GALlC,uBASmBb,GAAiBa,EAAmBh1D,GATvD,cASC+xD,EATD,yBAUEA,EAAUjomB,OAVZ,6EAaQmrmB,GAAiC,mFAAhD,WACE/B,GADF,8FAGwCD,GAAqBC,GAH7D,qBAGUM,EAHV,EAGUA,qBAHV,gCAOUA,EAPV,kECSA,SAAS0B,GAAqB37c,GAC5B,OAAO46Y,GAAcnliB,OAA4C,6BAC/DuqJ,UAAAA,GAEJ,CC3BA,OAAM47c,GAAqB,gBAGrBC,GAAkD,SACtDrvmB,GAEA,IAAM0tiB,EAAM1tiB,EAAUguiB,YAAY,OAAOhB,eAEnCm+D,EDfF,SAA2Bz9D,GAC/B,IAAKA,IAAQA,EAAI73iB,QACf,MAAMs5mB,GAAqB,qBAG7B,IAAKzhE,EAAI77iB,KACP,MAAMs9mB,GAAqB,YAU7B,IANA,IAMA,MANiD,CAC/C,YACA,SACA,SAGF,eAAkC,CAA7B,IAAMpxc,EAAO,KAChB,IAAK2vY,EAAI73iB,QAAQkoK,GACf,MAAMoxc,GAAqBpxc,EAE9B,CAED,MAAO,CACLuvY,QAASI,EAAI77iB,KACby4mB,UAAW58D,EAAI73iB,QAAQy0mB,UACvBpyD,OAAQxK,EAAI73iB,QAAQqijB,OACpBzH,MAAO/C,EAAI73iB,QAAQ46iB,MAEtB,CCbmB6+D,CAAiB5hE,GASnC,MANqD,CACnDA,IAAAA,EACAy9D,UAAAA,EACAtmD,0BAL+B/W,EAAAA,GAAAA,IAAaJ,EAAK,aAMjD6F,QAAS,kBAAMn8iB,QAAQC,SAAd,EAGZ,EAEKk4mB,GAA6D,SACjEvvmB,GAEA,IAAM0tiB,EAAM1tiB,EAAUguiB,YAAY,OAAOhB,eAEnCmgE,GAAgBr/D,EAAAA,GAAAA,IAAaJ,EAAK0hE,IAAoBpiE,eAEtDwiE,EAAwD,CAC5Dx/W,MAAO,2BH5BWA,mCG4BLA,CAAMm9W,EAAZ,EACPpuD,SAAU,SAAC9E,GAAD,gBF5BQ8E,mCE4BoBA,CAASouD,EAAelzD,EAApD,GAEZ,OAAOu1D,CACR,GAGC3hE,EAAAA,GAAAA,IACE,IAAI/ihB,GAAAA,GAAUsklB,GAAoBC,GAAoC,YAExExhE,EAAAA,GAAAA,IACE,IAAI/ihB,GAAAA,GAtC4B,yBAwC9ByklB,GAED,aCzCLrgE,EAAAA,GAAAA,IAAgBr9iB,GAAMm7E,KAEtBkie,EAAAA,GAAAA,IAAgBr9iB,GAAMm7E,GAAS,WCbxB,IAAMyiiB,GAAiB,YAMjBC,GAAuB,IAEvBC,GACX,6EAEWC,GAAW,2CCZX5jjB,GAAS,IAAImhf,GAAAA,GAAO,uBCe3BgB,IAAM,kBACV,iBACE,4IAFQ,WAKV,sBACE,oRANQ,WAUV,+BACE,mJAXQ,WAcV,+BACE,0EAfQ,WAgBV,4BACE,sMAjBQ,WAoBV,wBACE,sMArBQ,WAwBV,iBACE,2KAzBQ,WA2BV,sBACE,oEA5BQ,WA6BV,aACE,gIA9BQ,WAgCV,YACE,8HAjCQ,WAmCV,eAA+B,oCAnCrB,WAoCV,wBACE,gEArCQ,IAqDCC,GAAgB,IAAIx2hB,GAAAA,GAC/B,YACA,YACAu2hB,ICxDI,SAAU0hE,GAAgCv0mB,GAC9C,IAAKA,EAAI61C,WAAWy+jB,IAAW,CAC7B,IAAM/3mB,EAAMu2iB,GAAcnliB,OAA6C,yBACrE6mmB,QAASx0mB,IAGX,OADA0wD,GAAOj3D,KAAK8C,EAAIhF,SACT,EACR,CACD,OAAOyI,CACR,CAQK,SAAUy0mB,GACdj6c,GAEA,OAAO1+J,QAAQ0nI,IAAIg3B,EAASt5J,KAAI,SAAAuZ,GAAO,OAAIA,EAAQC,OAAM,SAAAtU,GAAC,OAAIA,CAAJ,GAAnB,IACxC,CA6Be,SAAAsumB,GACdC,EACAC,GAEA,IAAMC,EAxBQ,SACdC,EACAC,GAIA,IAAIF,EAOJ,OANIz9mB,OAAO49mB,eACTH,EAAqBz9mB,OAAO49mB,aAAaC,aACvCH,EACAC,IAGGF,CACR,CAU4BK,CACzB,yBACA,CACEC,gBAAiBZ,KAIf97gB,EAASp5F,SAASmG,cAAc,UAIhC4vmB,EAAgB,GAAH,OAAMd,GAAN,cAAoBK,EAApB,eAAwCC,GAC1Dn8gB,EAAOr5B,IAAoCy1iB,EACC,OAAxCA,QAAkB,IAAlBA,OAAkB,EAAlBA,EAA0CM,gBAAgBC,GAC3DA,EAEJ38gB,EAAOyB,OAAQ,EACf76F,SAASoN,KAAK/G,YAAY+yF,EAC3B,UA2Bc48gB,GAAa,EAAbA,EAAAA,EAAAA,EAAAA,EAAAA,mFAAf,WACEC,EACAC,EACAC,EAGAC,EACAb,EACAc,GARF,mFAYQC,EAAqBF,EAAqBb,GAZlD,UAcQe,EAdR,gCAeYJ,EAA0BI,GAftC,8CAqByClB,GACjCe,GAtBR,UAqBYI,EArBZ,SAwBYC,EAAcD,EAAqBz8mB,MACvC,SAAA+D,GAAM,OAAIA,EAAO03mB,gBAAkBA,CAA7B,KAzBd,kCA4BcW,EAA0BM,EAAY1gE,OA5BpD,0DAgCIzkf,GAAOl0D,MAAP,MAhCJ,QAkCE84mB,EAA6B,SAAAV,EAAec,GAlC9C,4FA8CeI,GAAY,EAAZA,EAAAA,EAAAA,EAAAA,mFAAf,WACER,EACAC,EACAC,EAGAZ,EACAc,GAPF,kGAUQK,EAA0D,IAI1DL,IAAcA,EAAU,QAdhC,wBAeUM,EAAkCN,EAAU,QAE3C1zmB,MAAMC,QAAQ+zmB,KACjBA,EAAe,CAACA,IAlBxB,SAsByCvB,GACjCe,GAvBR,OAsBYI,EAtBZ,kBAyB6BI,GAzB7B,0BAyBiBC,EAzBjB,QA2BcJ,EAAcD,EAAqBz8mB,MACvC,SAAA+D,GAAM,OAAIA,EAAO03mB,gBAAkBqB,CAA7B,IAEFC,EACJL,GAAeN,EAA0BM,EAAY1gE,OACvD,IAAI+gE,EAOF,OADAH,EAAkC,GAClC,QANAA,EAAgCx4mB,KAAK24mB,EAjC/C,wQA+CmD,IAA3CH,EAAgCj4mB,SAClCi4mB,EAAkC56mB,OAAO23B,OACvCyilB,IAjDR,UAuDUz5mB,QAAQ0nI,IAAIuye,GAvDtB,QAyDIT,EAAS,QAAmBV,EAAec,GAAc,CAAC,GAzD9D,kDA2DIhljB,GAAOl0D,MAAP,MA3DJ,gGAkKM,SAAU25mB,GACdZ,EACAC,EAGAC,EACAd,EACAyB,GAMA,IAAId,EAAiB,WAA6B,2BAAhBe,EAAgB,yBAAhBA,EAAgB,gBAE/Cj/mB,OAAOu9mB,GAA6Bp3mB,KAAK0X,UAC3C,EAkBD,OAdE7d,OAAOg/mB,IAC6B,oBAA7Bh/mB,OAAOg/mB,KAGdd,EAAWl+mB,OAAOg/mB,IAGpBh/mB,OAAOg/mB,GArHT,SACEd,EAKAC,EAKAC,EAQAC,GAAyD,8CAQzD,WACEa,GADF,sIAEKv7mB,EAFL,iCAEKA,EAFL,aAMoB,UAAZu7mB,EANR,uBAOa1B,EAA6B75mB,EAP1C,GAO4B26mB,EAAc36mB,EAP1C,YASY+6mB,GACJR,EACAC,EACAC,EACAZ,EACAc,GAdR,iCAgB2B,WAAZY,EAhBf,wBAiBa1B,EAA6B75mB,EAjB1C,GAiB4B26mB,EAAc36mB,EAjB1C,aAmBYs6mB,GACJC,EACAC,EACAC,EACAC,EACAb,EACAc,GAzBR,gCA2B2B,YAAZY,GACFZ,EAAc36mB,EADqB,GAE1Cu6mB,EAA8B,mBAAUI,IACnB,QAAZY,GACF1B,EAAsC75mB,EADP,GAChBuwI,EAAuBvwI,EADP,GACLL,EAAYK,EADP,GAEtCu6mB,EAAS,MAEPV,EACAtpe,EACA5wI,IAEmB,QAAZ47mB,GACFC,EAAgBx7mB,EADe,GAGtCu6mB,EAAS,MAAiBiB,IAE1BjB,EAAQ,WAAR,GAASgB,GAAT,OAAqBv7mB,IA3C3B,0DA8CI21D,GAAOl0D,MAAP,MA9CJ,0DARyD,wBAyDzD,OAzDyD,2CA0D1D,CAwC4Bg6mB,CACzBlB,EACAC,EACAC,EACAC,GAGK,CACLH,SAAAA,EACAmB,YAAar/mB,OAAOg/mB,GAEvB,CAMK,SAAUM,GACd/B,GAGA,IADA,IAAMgC,EAAav/mB,OAAOiI,SAAS0iE,qBAAqB,UACxD,MAAkB5mE,OAAO23B,OAAO6jlB,GAAhC,eAA6C,CAAxC,IAAMvymB,EAAG,KACZ,GACEA,EAAIg7D,KACJh7D,EAAIg7D,IAAI18D,SAAS4xmB,KACjBlwmB,EAAIg7D,IAAI18D,SAASiymB,GAEjB,OAAOvwmB,CAEV,CACD,OAAO,IACT,CCtWO,IAUDwymB,GAAAA,WACJ,aAEsD,IAD7CC,EAC6C,uDADa,CAAC,EAC3Dp3lB,EAA6C,uDAR3B,KAQ2B,gBAD7C,KAAgBo3lB,iBAAhBA,EACA,KAAcp3lB,eAAdA,CACL,oDAEJ,SAAoB01hB,GAClB,OAAOh4iB,KAAK05mB,iBAAiB1hE,EAC9B,oCAED,SAAoBA,EAAewL,GACjCxjjB,KAAK05mB,iBAAiB1hE,GAASwL,CAChC,uCAED,SAAuBxL,UACdh4iB,KAAK05mB,iBAAiB1hE,EAC9B,OAhBGyhE,GAmBAE,GAAmB,IAAIF,GAM7B,SAASjH,GAAW/yD,GAClB,OAAO,IAAI75iB,QAAQ,CACjBy2F,OAAQ,mBACR,iBAAkBojd,GAErB,UAMqBm6D,GAAmB,mFAAlC,WACLC,GADK,iGAGG7hE,EAAkB6hE,EAAlB7hE,MAAOyH,EAAWo6D,EAAXp6D,OACT54iB,EAAuB,CAC3BzB,OAAQ,MACRxB,QAAS4umB,GAAW/yD,IAEhBq6D,EAAS5C,GAAmBt1mB,QAAQ,WAAYo2iB,GARjD,SASkB3xiB,MAAMyzmB,EAAQjzmB,GAThC,UAUmB,OADlBP,EATD,QAUQM,QAAsC,MAApBN,EAASM,OAVnC,wBAWCy5iB,EAAe,GAXhB,mBAc2B/5iB,EAASI,OAdpC,QAcKqzmB,EAdL,QAiBqB,QAAlB,EAAAA,EAAa16mB,aAAK3E,IAAAA,OAAA,EAAAA,EAAEN,WACtBimjB,EAAe05D,EAAa16mB,MAAMjF,SAlBnC,gEAqBGu7iB,GAAcnliB,OAA2C,uBAC7DwpmB,WAAY1zmB,EAASM,OACrBqzmB,gBAAiB55D,IAvBhB,iCA0BE/5iB,EAASI,QA1BX,4FAiCewzmB,GAA4B,mFAA3C,WACLjlE,GADK,yGAGLklE,EAHK,+BAGkBR,GACvBS,EAJK,yBAMoCnlE,EAAI73iB,QAArC46iB,EANH,EAMGA,MAAOyH,EANV,EAMUA,OAAQg4D,EANlB,EAMkBA,cAElBz/D,EARA,sBASGrC,GAAcnliB,OAAM,aATvB,UAYAiviB,EAZA,oBAaCg4D,EAbD,yCAcM,CACLA,cAAAA,EACAz/D,MAAAA,IAhBD,aAmBGrC,GAAcnliB,OAAM,cAnBvB,cAsBCkpmB,EAAqCS,EAAUE,oBACnDriE,IACG,CACH31hB,aAAc,EACdi4lB,sBAAuBx3mB,KAAKygE,OAGxBoqd,EAAS,IAAI4sF,GAEnBhllB,YAAU,uBACR,mFAEEo4f,EAAOl/d,QAFT,gDAIkB9mD,IAAlByymB,EAA8BA,EAAgBnD,IApC3C,kBAuCEuD,GACL,CAAExiE,MAAAA,EAAOyH,OAAAA,EAAQg4D,cAAAA,GACjBiC,EACA/rF,EACAwsF,IA3CG,8EAqDQK,GAAmC,EAAnCA,EAAAA,mFAAf,WACEX,EADF,EAGElsF,GAHF,iHAEI2sF,EAFJ,EAEIA,sBAAuBj4lB,EAF3B,EAE2BA,aAEzB83lB,EAJF,+BAIyBR,GAEf3hE,EAAyB6hE,EAAzB7hE,MAAOy/D,EAAkBoC,EAAlBpC,cANjB,kBAWUgD,GAAoB9sF,EAAQ2sF,GAXtC,2DAaQ7C,EAbR,wBAcMlkjB,GAAOj3D,KACL,uHACyCm7mB,GADzC,gFAGgB,OAAX,WAAC,IAAD,UAAC,EAAD,KAAar9mB,QAHlB,MAfR,kBAqBa,CAAE49iB,MAAAA,EAAOy/D,cAAAA,IArBtB,sDA2B2BmC,GAAmBC,GA3B9C,eA2BUvzmB,EA3BV,OA8BI6zmB,EAAUO,uBAAuB1iE,GA9BrC,kBAgCW1xiB,GAhCX,sCAmCSq0mB,GADCt7mB,EAlCV,0BAoCM86mB,EAAUO,uBAAuB1iE,IAC7By/D,EArCV,wBAsCQlkjB,GAAOj3D,KACL,oHACyCm7mB,GADzC,gFAEgF,OAALp4mB,QAAK,IAALA,OAAK,EAALA,EAAOjF,QAFlF,MAvCV,kBA2Ce,CAAE49iB,MAAAA,EAAOy/D,cAAAA,IA3CxB,kCAiDUmD,EACsC,MAA1ClilB,OAAwB,QAAjB,SAAAr5B,QAAA,IAAAA,OAAA,EAAAA,EAAO2f,kBAAUtkB,IAAAA,OAAA,EAAAA,EAAEs/mB,aACtB53lB,EAAAA,GAAAA,IACEC,EACA83lB,EAAU73lB,eAzLW,KA4LvBF,EAAAA,GAAAA,IAAuBC,EAAc83lB,EAAU73lB,gBAG/Co3lB,EAAmB,CACvBY,sBAAuBx3mB,KAAKygE,MAAQq3iB,EACpCv4lB,aAAcA,EAAe,GAI/B83lB,EAAUU,oBAAoB7iE,EAAO0hE,GACrCnmjB,GAAO4hf,MAAP,wCAA8CylE,EAA9C,YAlEJ,kBAoEWJ,GACLX,EACAH,EACA/rF,EACAwsF,IAxEN,0FAyFA,SAASM,GACP9sF,EACA2sF,GAEA,OAAO,IAAI37mB,SAAQ,SAACC,EAASY,GAE3B,IAAMo7mB,EAAgBrxmB,KAAKkuB,IAAI6ilB,EAAwBx3mB,KAAKygE,MAAO,GAE7Dx8B,EAAUxR,WAAW32B,EAASg8mB,GAGpCjtF,EAAOpshB,kBAAiB,WACtB+zB,aAAayR,GAEbvnC,EACEm2iB,GAAcnliB,OAAsC,kBAClD8pmB,sBAAAA,IAGL,GACF,GACF,CAOD,SAASK,GAAiB1xmB,GACxB,KAAMA,aAAa8V,GAAAA,MAAmB9V,EAAE+V,WACtC,OAAO,EAIT,IAAMg7lB,EAAathlB,OAAOzvB,EAAE+V,WAAF,YAE1B,OACiB,MAAfg7lB,GACe,MAAfA,GACe,MAAfA,GACe,MAAfA,CAEH,KCjRUc,GAuJAC,GDoIER,GAAAA,WAAb,8BACE,KAASt6mB,UAAsB,EAOhC,iDANC,SAAiBO,GACfR,KAAKC,UAAUG,KAAKI,EACrB,sBACD,WACER,KAAKC,UAAUS,SAAQ,SAAAF,GAAQ,OAAIA,GAAJ,GAChC,OAPU+5mB,mDClRN,WACLS,EACAjC,EACAv6mB,EACAy8mB,EACA79mB,GALK,kFAODA,IAAWA,EAAQlD,OAPlB,uBAQH8gnB,EAAgC,QAAAx8mB,EAAWy8mB,GARxC,0CAWyBlC,EAXzB,OAWGtB,EAXH,OAYGnzmB,EAAMtG,OAAAA,OAAAA,OAAAA,OAAAA,CAAAA,EACPi9mB,GAAW,CACd,QAAWxD,IAEbuD,EAAgC,QAAAx8mB,EAAW8F,GAhBxC,mEAsJD,SAAU42mB,GACdC,GAEAJ,GAAgCI,CACjC,CAQK,SAAUC,GACdhC,GAEA0B,GAAgC1B,CAClC,UCzKeiC,qFAAf,uFACOl9lB,EAAAA,GAAAA,MADP,uBAEIo1C,GAAOj3D,KACLq5iB,GAAcnliB,OAA6C,yBACzD8qmB,UAAW,oDACVlhnB,SALT,mBAOW,GAPX,iCAUYikB,EAAAA,GAAAA,MAVZ,gEAYMk1C,GAAOj3D,KACLq5iB,GAAcnliB,OAA6C,yBACzD8qmB,UAAY,kBAAC,IAAD,UAAC,EAAD,KAAah+mB,aACxBlD,SAfX,mBAiBa,GAjBb,kCAoBS,GApBT,iIAoCO,WACL66iB,EACAojE,EAGAC,EACA5D,EACAyD,EACAX,EACAp6mB,GATK,iGAWCm+mB,EAAuBrB,GAA4BjlE,IAGtDn3iB,MAAK,SAAAiC,GACJu4mB,EAAqBv4mB,EAAO03mB,eAAiB13mB,EAAOi4iB,MAElD/C,EAAI73iB,QAAQq6mB,eACZ13mB,EAAO03mB,gBAAkBxiE,EAAI73iB,QAAQq6mB,eAErClkjB,GAAOj3D,KACL,2DAAoD24iB,EAAI73iB,QAAQq6mB,cAAhE,2EACiE13mB,EAAO03mB,cADxE,+KAOL,IACAl6lB,OAAM,SAAAtU,GAAC,OAAIsqD,GAAOl0D,MAAM4J,EAAjB,IAEVovmB,EAA0Bj4mB,KAAKm7mB,GAEzBC,EAA0CH,KAAoBv9mB,MAClE,SAAA29mB,GACE,OAAIA,EACK/G,EAAcn9W,aAErB,CAEH,IAxCE,SA2C8B54P,QAAQ0nI,IAAI,CAC7Ck1e,EACAC,IA7CG,sCA2CEE,EA3CF,KA2CiB5I,EA3CjB,KAkDAyG,GAAqB/B,IACxBD,GAAgBC,EAAekE,EAAcjE,eAI3CsD,KACF5C,EAA8B,oBAAW4C,IACzCG,QAA0BvzmB,IAO3BwwmB,EAAiB,KAAM,IAAIr1mB,OAGtB64mB,EAA+D,QAAnB,SAAAv+mB,QAAA,IAAAA,OAAA,EAAAA,EAAS2C,cAAUrF,IAAAA,EAAAA,EAAA,CAAC,GAGtD,OAAe,WAC/BihnB,EAAiB3vkB,QAAS,EAEf,MAAP8mkB,IACF6I,EAAgB,YAAe7I,GAOjCqF,EAAS,SAAoBuD,EAAcjE,cAAekE,GAGtDb,KACF3C,EAAS,MAAiB2C,IAC1BM,QAAkCzzmB,IAtF/B,kBAyFE+zmB,EAAcjE,eAzFhB,yECKHmE,GAMOC,GAtDEC,GAAAA,WACX,WAAmB7mE,IAAgB,gBAAhB,KAAGA,IAAHA,CAAoB,wCACvC,WAEE,cADOmjE,GAA0Bp4mB,KAAKi1iB,IAAI73iB,QAAQ46iB,OAC3Cr5iB,QAAQC,SAChB,OALUk9mB,GAaF1D,GAEP,CAAC,EAODC,GAEA,GAQEC,GAA4D,CAAC,EAK/Dd,GAAwB,YAKxBuE,GAAmB,OAkBnBC,IAA0B,WAsFdjvH,GACdkoD,EACAy/D,EACAt3mB,IA1BF,WACE,IAAM6+mB,EAAwB,GAO9B,IANIt+lB,EAAAA,GAAAA,OACFs+lB,EAAsB77mB,KAAK,6CAExBye,EAAAA,GAAAA,OACHo9lB,EAAsB77mB,KAAK,8BAEzB67mB,EAAsBt7mB,OAAS,EAAG,CACpC,IAAMm3D,EAAUmkjB,EACbl4mB,KAAI,SAAC3J,EAAS+G,GAAV,iBAAwBA,EAAQ,EAAhC,aAAsC/G,EAAtC,IACJqS,KAAK,KACFrN,EAAMu2iB,GAAcnliB,OAAiD,6BACzE8qmB,UAAWxjjB,IAEbvE,GAAOj3D,KAAK8C,EAAIhF,QACjB,CACF,CAWC8hnB,GACA,IAAMlkE,EAAQ/C,EAAI73iB,QAAQ46iB,MAC1B,IAAKA,EACH,MAAMrC,GAAcnliB,OAAM,aAE5B,IAAKykiB,EAAI73iB,QAAQqijB,OAAQ,CACvB,IAAIxK,EAAI73iB,QAAQq6mB,cAOd,MAAM9hE,GAAcnliB,OAAM,cAN1B+iD,GAAOj3D,KACL,mLAC+E24iB,EAAI73iB,QAAQq6mB,eAD3F,uEAOL,CACD,GAAwC,MAApCW,GAA0BpgE,GAC5B,MAAMrC,GAAcnliB,OAAsC,kBACxDuN,GAAIi6hB,IAIR,IAAKgkE,GAAgB,EJ3FjB,SAA+BxE,GAEnC,IAAI2E,EAAuB,GACvBt3mB,MAAMC,QAAQ7K,OAAOu9mB,IACvB2E,EAAYlinB,OAAOu9mB,GAEnBv9mB,OAAOu9mB,GAAiB2E,CAG3B,CIsFGC,CAAqB5E,IAErB,MAAkCwB,GAChCZ,GACAC,GACAC,GACAd,GACAuE,IALMzC,EAAR,EAAQA,YAAanB,EAArB,EAAqBA,SAOrB0D,GAAsBvC,EACtBsC,GAAmBzD,EAEnB6D,IAAiB,CAClB,CAeD,OAZA5D,GAA0BpgE,YDtJe,EAArBqkE,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,mCCsJeA,CACjCpnE,EACAojE,GACAC,GACA5D,EACAkH,GACApE,GACAp6mB,GAG0C,IAAI0+mB,GAAiB7mE,EAGnE,CCmfM,SAAUqnE,GACdC,EACA/9mB,EACAy8mB,EACA79mB,GAEAm/mB,GAAoBz5lB,EAAAA,GAAAA,IAAmBy5lB,YH7rBnBD,EAAAA,EAAAA,EAAAA,EAAAA,mCG8rBpBE,CACEX,GACAzD,GAA0BmE,EAAkBtnE,IAAI73iB,QAAQ46iB,OACxDx5iB,EACAy8mB,EACA79mB,GACAmgB,OAAM,SAAAtU,GAAC,OAAIsqD,GAAOl0D,MAAM4J,EAAjB,GACV,2CC/rBCmsiB,EAAAA,GAAAA,IACE,IAAI/ihB,GAAAA,GACF2klB,IACA,SAACzvmB,EAAD,GAAqE,IAA9Ck1mB,EAA8C,EAAvDr/mB,QAOZ,OAAO2vf,GALKxlf,EAAUguiB,YAAY,OAAOhB,eACnBhtiB,EACnBguiB,YAAY,0BACZhB,eAEgCkoE,EACpC,eAKLrnE,EAAAA,GAAAA,IACE,IAAI/ihB,GAAAA,GAAU,sBAOhB,SACE9qB,GAEA,IACE,IAAMm1mB,EAAYn1mB,EAAUguiB,YAAYyhE,IAAgBziE,eACxD,MAAO,CACL+nE,SAAU,SACR99mB,EACAy8mB,EACA79mB,GAHQ,OAILk/mB,GAASI,EAAWl+mB,EAAWy8mB,EAAa79mB,EAJvC,EAUb,CAJC,MAAO6L,GACP,MAAM0siB,GAAcnliB,OAAoD,gCACtEgiB,OAAQvpB,GAEX,CACF,GAxB4E,aAG7EwtiB,EAAAA,GAAAA,IAAgBr9iB,GAAMm7E,KAEtBkie,EAAAA,GAAAA,IAAgBr9iB,GAAMm7E,GAAS,qCCtC3B6/d,KAZM+B,EAAAA,GAAAA,IAXW,CACnBsJ,OAAQv2iB,0CACRoljB,WAAYpljB,+BACZ2omB,UAAW3omB,eACXyzmB,cAAezzmB,2BACf0zmB,kBAAmB1zmB,eACnB8uiB,MAAO9uiB,4CACPuumB,cAAevumB,iBAgBF,IAAIgvjB,GAAAA,IACf2kD,GAAgB,IAAIxlD,GAAAA,GAAc,aAE3B1Z,IAAOg3B,EAAAA,GAAAA,KAAQn+B,EAAAA,GAAAA,QAC5BiZ,EAAAA,GAAAA,IAAe9R,GAAMljjB,GAAAA,GAAAA,mBAA+BupkB,GAAAA,GAA4BrE,GAAAA,IAEzE,IAAMm9C,GAAgB,yCAAG,6GAAYpzC,EAAAA,GAAAA,IAAgB/rB,GAAMvJ,KAAlC,2CAAH,qDAChB2oE,GAAe,yCAAG,6GAAYrzC,EAAAA,GAAAA,IAAgB/rB,GAAMk/D,KAAlC,2CAAH,qDAEfG,GAAc,yCAAG,WAAOlplB,EAAOC,GAAd,gGAA2BioiB,EAAAA,GAAAA,IAA2Bre,GAAM7phB,EAAOC,IAAnE,2CAAH,wDACdkplB,GAAe,yCAAG,WAAOnplB,EAAOC,GAAd,gGAA2B+niB,EAAAA,GAAAA,IAA+Bne,GAAM7phB,EAAOC,IAAvE,2CAAH,wDCtC5B,SAAS5uB,GAAQwS,GACf,IAAK,IAAIhP,EAAI,EAAGA,EAAImP,UAAUnX,OAAQgI,IAAK,CACzC,IAAI4+B,EAASzvB,UAAUnP,GACvB,IAAK,IAAIrG,KAAOilC,EACd5vB,EAAOrV,GAAOilC,EAAOjlC,EAExB,CACD,OAAOqV,CACR,CAwHD,IAAIulmB,GAlGJ,SAASrmd,EAAMsmd,EAAWvnX,GACxB,SAASz8P,EAAKC,EAAM8E,EAAO0qK,GACzB,GAAwB,qBAAb1mK,SAAX,CAMkC,kBAFlC0mK,EAAazjK,GAAO,CAAC,EAAGywP,EAAmBhtF,IAErBlmK,UACpBkmK,EAAWlmK,QAAU,IAAII,KAAKA,KAAKygE,MAA6B,MAArBqlG,EAAWlmK,UAEpDkmK,EAAWlmK,UACbkmK,EAAWlmK,QAAUkmK,EAAWlmK,QAAQK,eAG1C3J,EAAOuI,mBAAmBvI,GACvBwI,QAAQ,uBAAwBC,oBAChCD,QAAQ,QAASE,QAEpB,IAAIs7mB,EAAwB,GAC5B,IAAK,IAAI5jH,KAAiB5wV,EACnBA,EAAW4wV,KAIhB4jH,GAAyB,KAAO5jH,GAEE,IAA9B5wV,EAAW4wV,KAWf4jH,GAAyB,IAAMx0c,EAAW4wV,GAAen3f,MAAM,KAAK,KAGtE,OAAQH,SAASC,OACf/I,EAAO,IAAM+jnB,EAAU35C,MAAMtlkB,EAAO9E,GAAQgknB,CAtC7C,CAuCF,CA4BD,OAAOp/mB,OAAOwS,OACZ,CACErX,IAAAA,EACAS,IA7BJ,SAAcR,GACZ,GAAwB,qBAAb8I,YAA6B4V,UAAUnX,QAAWvH,GAA7D,CAQA,IAFA,IAAI6I,EAAUC,SAASC,OAASD,SAASC,OAAOE,MAAM,MAAQ,GAC1Dg7mB,EAAM,CAAC,EACF10mB,EAAI,EAAGA,EAAI1G,EAAQtB,OAAQgI,IAAK,CACvC,IAAIgsC,EAAQ1yC,EAAQ0G,GAAGtG,MAAM,KACzBnE,EAAQy2C,EAAM5vC,MAAM,GAAG0H,KAAK,KAEhC,IACE,IAAI6wmB,EAAQz7mB,mBAAmB8yC,EAAM,IAGrC,GAFA0okB,EAAIC,GAASH,EAAU7kE,KAAKp6iB,EAAOo/mB,GAE/BlknB,IAASkknB,EACX,KAEU,CAAZ,MAAOr0mB,GAAK,CACf,CAED,OAAO7P,EAAOiknB,EAAIjknB,GAAQiknB,CApBzB,CAqBF,EAMG3/mB,OAAQ,SAAUtE,EAAMwvK,GACtBzvK,EACEC,EACA,GACA+L,GAAO,CAAC,EAAGyjK,EAAY,CACrBlmK,SAAU,IAGf,EACD66mB,eAAgB,SAAU30c,GACxB,OAAO/R,EAAK72J,KAAKm9mB,UAAWh4mB,GAAO,CAAC,EAAGnF,KAAK4oK,WAAYA,GACzD,EACD40c,cAAe,SAAUL,GACvB,OAAOtmd,EAAK1xJ,GAAO,CAAC,EAAGnF,KAAKm9mB,UAAWA,GAAYn9mB,KAAK4oK,WACzD,GAEH,CACEA,WAAY,CAAE1qK,MAAOF,OAAO8iM,OAAO80D,IACnCunX,UAAW,CAAEj/mB,MAAOF,OAAO8iM,OAAOq8a,KAGvC,CAEStmd,CApHa,CACrByhZ,KAAM,SAAUp6iB,GAId,MAHiB,MAAbA,EAAM,KACRA,EAAQA,EAAM6G,MAAM,GAAI,IAEnB7G,EAAM0D,QAAQ,mBAAoBC,mBAC1C,EACD2hkB,MAAO,SAAUtlkB,GACf,OAAOyD,mBAAmBzD,GAAO0D,QAC/B,2CACAC,mBAEH,GAwG8B,CAAEc,KAAM,MC9HnC86mB,IAAcvhnB,EAAAA,GAAAA,IAAkC,cAAe,CACnEgH,IAAK,kBAAM,8BAAgBpF,MAAK,SAAAZ,GAAC,OAAI,IAAIA,EAAEwgnB,cAAV,GAA5B,ICAMp3D,GAAQ,yCAAG,+FAChB7rjB,GAAAA,GAAAA,mBADgB,gCAEQgjnB,GAAY7jnB,IAAI,CAAE0I,IAAK,QAF/B,uBAERpE,EAFQ,EAERA,MAFQ,mCAGCA,IAHD,iDAKCy/mB,GAAAA,IAAY,SALb,2CAAH,qDASRC,GAAS,yCAAG,+FACjBnjnB,GAAAA,GAAAA,mBADiB,gCAEOgjnB,GAAY7jnB,IAAI,CAAE0I,IAAK,WAF9B,uBAETpE,EAFS,EAETA,MAFS,kBAGVA,GAHU,gCAKVy/mB,GAAAA,IAAY,WALF,2CAAH,qDASTE,GAAW,yCAAG,2GACCJ,GAAY7jnB,IAAI,CAAE0I,IAAK,aADxB,iBACfpE,EADe,EACfA,QACGm5E,eAAeinf,QAAQ,WAAYpgkB,GAFvB,2CAAH,qDAIX4/mB,GAAmB,yCAAG,2GACPL,GAAY7jnB,IAAI,CAAE0I,IAAK,iBADhB,uBACvBpE,EADuB,EACvBA,MADuB,kBAExBA,GAAgB,MAFQ,2CAAH,qDAMnB6/mB,GAAS,yCAAG,WAAOC,GAAP,sFACfP,GAAYtknB,IAAI,CAClBmJ,IAAK,SACLpE,MAAO8/mB,IAHU,2CAAH,sDAOTC,GAAQ,yCAAG,WAAO3ymB,GAAP,sFACdmymB,GAAYtknB,IAAI,CAClBmJ,IAAK,MACLpE,MAAOoN,IAHS,2CAAH,sDAOR4ymB,GAAW,yCAAG,WAAOz5D,GAAP,sFACjBg5D,GAAYtknB,IAAI,CAClBmJ,IAAK,WACLpE,MAAOumjB,IAHY,2CAAH,sDAOX05D,GAAmB,yCAAG,WAAOC,GAAP,sFACzBX,GAAYtknB,IAAI,CAClBmJ,IAAK,eACLpE,MAAOkgnB,IAHoB,OAK/B3/C,aAAaH,QAAQ,eAAgB,QALN,2CAAH,sDAQnB+/C,GAAa,yCAAG,mGACnBZ,GAAY//mB,OAAO,CAAE4E,IAAK,QADP,uBAEnBm7mB,GAAY//mB,OAAO,CAAE4E,IAAK,WAFP,uBAGnBm7mB,GAAY//mB,OAAO,CAAE4E,IAAK,aAHP,uBAInBm7mB,GAAY//mB,OAAO,CAAE4E,IAAK,iBAJP,2CAAH,qDAMbg8mB,GAAsB,yCAAG,mGAC5Bb,GAAY//mB,OAAO,CAAE4E,IAAK,iBADE,2CAAH,yECWnBi8mB,GAAIl/mB,8BAAwCzB,EAAW,iCAAXA,EAAW,KAAAka,UAAAA,GAMnE,MAAM,IAAIvd,MACW,kBAAV8E,EAAkB,6BACUA,GACzBzB,EAAK+C,OAAS,IAAM/C,EAAKmG,IAAI0F,QAAQgD,KAAK,KAAO,IACrD,2GACUpN,EAExB,CCzFA,IAAMm/mB,GAAa,CAAC,EAEpB,SAAgB/hmB,KACZ,MAA0B,qBAAf1iB,WACAA,WAEW,qBAAXE,OACAA,OAEW,qBAAXC,EAAAA,EACAA,EAAAA,EAES,qBAATF,KACAA,KAEJwknB,EACX,CChBA,IAAar5mB,GAASnH,OAAOmH,OAChBs5mB,GAAgBzgnB,OAAOouc,yBACvBnuc,GAAiBD,OAAOC,eACxBouc,GAAkBruc,OAAOgK,UAEzB02mB,GAAc,GAC3B1gnB,OAAO8iM,OAAO49a,IAEd,IAAaC,GAAe,CAAC,EAC7B3gnB,OAAO8iM,OAAO69a,IAOd,IAAMC,GAA4B,qBAAV//mB,MAClBggnB,GAAoB7gnB,OAAOV,WAEjC,SAAgBwhnB,KACPF,IACDL,GAGU,sBAGlB,CAkBA,SAAgB/gJ,GAAKzsd,GACjB,IAAIgumB,GAAU,EACd,OAAO,WACH,IAAIA,EAIJ,OADAA,GAAU,EACFhumB,EAAagH,MAAM/X,KAAM8X,UACpC,CACL,CAEA,IAAagK,GAAO,WAAQ,EAE5B,SAAgB+sC,GAAW9wD,GACvB,MAAqB,oBAAPA,CAClB,CAEA,SAIgBihnB,GAAY9gnB,GAExB,cADiBA,GAEb,IAAK,SACL,IAAK,SACL,IAAK,SACD,OAAO,EAEf,OAAO,CACX,CAEA,SAAgBmiB,GAASniB,GACrB,OAAiB,OAAVA,GAAmC,kBAAVA,CACpC,CAEA,SAAgBkpC,GAAclpC,GAC1B,IAAKmiB,GAASniB,GACV,OAAO,EAEX,IAAM29D,EAAQ79D,OAAOolD,eAAellD,GACpC,GAAa,MAAT29D,EACA,OAAO,EAEX,IAAMojjB,EAAmBjhnB,OAAO6hB,eAAephB,KAAKo9D,EAAO,gBAAkBA,EAAMx0B,YACnF,MACgC,oBAArB43kB,GAAmCA,EAAiB3hnB,aAAeuhnB,EAElF,CAGA,SAAgBK,GAAY/pmB,GACxB,IAAMkyB,EAAiB,MAAHlyB,OAAG,EAAHA,EAAKkyB,YACzB,QAAKA,IAID,sBAAwBA,EAAYjuC,MACpC,sBAAwBiuC,EAAY3uB,YAK5C,CAEA,SAAgBymmB,GAAcx5kB,EAAa7uB,EAAuB5Y,GAC9DD,GAAe0nC,EAAQ7uB,EAAU,CAC7B2M,YAAY,EACZtlB,UAAU,EACVC,cAAc,EACdF,MAAAA,GAER,CAEA,SAAgBkhnB,GAAmBz5kB,EAAa7uB,EAAuB5Y,GACnED,GAAe0nC,EAAQ7uB,EAAU,CAC7B2M,YAAY,EACZtlB,UAAU,EACVC,cAAc,EACdF,MAAAA,GAER,CAEA,SAAgBmhnB,GACZjmnB,EACAkmnB,GAEA,IAAMxomB,EAAW,SAAW1d,EAE5B,OADAkmnB,EAASt3mB,UAAU8O,IAAY,EACxB,SAAU/I,GACb,OAAOsS,GAAStS,KAAsB,IAAhBA,EAAE+I,EACpB,CACZ,CAEA,SAAgByomB,GAASj/lB,GACrB,OAAOA,aAAiBpnB,GAC5B,CAEA,SAAgBsmnB,GAASl/lB,GACrB,OAAOA,aAAiBvhB,GAC5B,CAEA,IAAM0gnB,GAAmE,qBAAjCzhnB,OAAOsza,sBAoB/C,IAAa29E,GACU,qBAAZqM,SAA2BA,QAAQrM,QACpCqM,QAAQrM,QACRwwH,GACA,SAAAtqmB,GAAG,OAAInX,OAAO09C,oBAAoBvmC,GAAKlF,OAAOjS,OAAOsza,sBAAsBn8Z,GAAY,EAC5DnX,OAAO09C,oBAY5C,SAAgBk2f,GAAY1ziB,GACxB,OAAiB,OAAVA,EAAiB,KAAwB,kBAAVA,EAAqB,GAAKA,EAAQA,CAC5E,CAEA,SAAgBwhnB,GAAQ/nmB,EAAgB9a,GACpC,OAAOwvc,GAAgBxsb,eAAephB,KAAKkZ,EAAQ9a,EACvD,CAGA,IAAa2nM,GACTxmM,OAAOwmM,2BACP,SAAmC7sL,GAE/B,IAAMykH,EAAW,CAAC,EAKlB,OAHA6yX,GAAQt3e,GAAQjX,SAAQ,SAAA4B,GACpB85H,EAAI95H,GAAOm8mB,GAAc9mmB,EAAQrV,EACpC,IACM85H,CACV,o+DC5ME,IAAMujf,GAA0B/7lB,OAAO,2BAO9C,SAAgBg8lB,GAA0BC,GAItC,OAAO7hnB,OAAOmH,QAHd,SAAmBwS,EAAQxK,GACvB2ymB,GAAgBnomB,EAAQxK,EAAU0ymB,KAENA,EACpC,CAMA,SAAgBC,GAAgB93mB,EAAgB1F,EAAkBu9mB,GACzDH,GAAQ13mB,EAAW23mB,KACpBR,GAAcn3mB,EAAW23mB,GAAuB5mmB,GAAAA,CAAAA,EAEzC/Q,EAAU23mB,MCPzB,SAA2BE,GACvB,OAAOA,EAAWE,kBAAoBC,EAC1C,CDoBSC,CAAWJ,KACZ73mB,EAAU23mB,IAAyBr9mB,GAAOu9mB,EAElD,KEzBaK,GAAQt8lB,OAAO,uBAOfu8lB,GAAI,WAYb,WAAmBC,QAAAA,IAAAA,IAAAA,EAA0C,QAAM,KAAhDA,WAAAA,OAXnBC,yBAA0B,EAAK,KAC/BC,kBAAmB,EAAK,KACxBC,WAAa,IAAIxhnB,IAAkB,KAEnCyhnB,WAAa,EAAC,KACdC,gBAAkB,EAAC,KACnBC,qBAAuBC,GAAkBC,cAAa,KAQ/CC,WAAK,OAELC,YAAM,EALM,KAAAV,MAAAA,EAEnB,kBA0CC,OA1CDr4mB,EAKOg5mB,KAAA,WACC/gnB,KAAK6gnB,OACL7gnB,KAAK6gnB,MAAMngnB,SAAQ,SAAAF,GAAQ,OAAIA,MAEtC,EAAAuH,EAEMi5mB,MAAA,WACChhnB,KAAK8gnB,QACL9gnB,KAAK8gnB,OAAOpgnB,SAAQ,SAAAF,GAAQ,OAAIA,QAIxCuH,EAIOk5mB,eAAA,WACH,OAAOA,GAAejhnB,OAG1B+H,EAGOm5mB,cAAA,WACHC,KACAC,GAAiBphnB,MAGjBqhnB,GAAYC,aACRD,GAAYC,aAAe5olB,OAAOo2a,iBAC5BuyK,GAAYC,aAAe,EAC3B5olB,OAAO6olB,iBACjBC,IACH,EAAAz5mB,EAEDzK,SAAA,WACI,OAAO0C,KAAKognB,KACf,IAxDY,GA2DJqB,GAASpC,GAA0B,OAAQc,IAExD,SAAgBuB,GACZtonB,EACAuonB,EACAC,QADAD,IAAAA,IAAAA,EAAsC7/lB,SACtC8/lB,IAAAA,IAAAA,EAAwC9/lB,IAExC,IC5D0C62gB,ED4DpCkpF,EAAO,IAAI1B,GAAK/mnB,GAStB,OAPIuonB,IAA4B7/lB,IC7DzBggmB,GAAcC,GD8DAF,EAAMF,EC9D2BhpF,GDiElDipF,IAA8B9/lB,IAC9BkgmB,GAAmBH,EAAMD,GAEtBC,CACX,CE1EA,IAAa13J,GAAW,CACpB7B,SArBJ,SAA0Bvoc,EAAQC,GAC9B,OAAOD,IAAMC,CACjB,EAoBIiimB,WAlBJ,SAA4BlimB,EAAQC,GAChC,OAAOF,GAAUC,EAAGC,EACxB,EAiBIsD,QAXJ,SAAyBvD,EAAQC,GAC7B,OAAIhiB,OAAOixE,GACAjxE,OAAOixE,GAAGlvD,EAAGC,GAGjBD,IAAMC,EAAU,IAAND,GAAW,EAAIA,IAAM,EAAIC,EAAID,IAAMA,GAAKC,IAAMA,CACnE,EAMIkimB,QAhBJ,SAAyBnimB,EAAQC,GAC7B,OAAOF,GAAUC,EAAGC,EAAG,EAC3B,YCOgBmimB,GAAa/9lB,EAAGtlB,EAAG1F,GAE/B,OAAIgpnB,GAAah+lB,GACNA,EAIPvf,MAAMC,QAAQsf,GACPi+lB,GAAWh4mB,MAAM+Z,EAAG,CAAEhrB,KAAAA,IAE7BguC,GAAchjB,GACPi+lB,GAAW18kB,OAAOvhB,OAAGzc,EAAW,CAAEvO,KAAAA,IAEzCmmnB,GAASn7lB,GACFi+lB,GAAWt+mB,IAAIqgB,EAAG,CAAEhrB,KAAAA,IAE3BomnB,GAASp7lB,GACFi+lB,GAAWlpnB,IAAIirB,EAAG,CAAEhrB,KAAAA,IAEd,oBAANgrB,GAAqBmwW,GAASnwW,IAAOk+lB,GAAOl+lB,GAOhDA,EANC86lB,GAAY96lB,GACLw2c,GAAKx2c,GAELm+lB,GAAWnpnB,EAAMgrB,EAIpC,CA6BA,SAAgBo+lB,GAAkB35kB,GAE9B,OAAOA,CACX,CJzEA,IAAMm3kB,GAAW,oBKGDyC,GAAuBrpnB,EAAcgE,GACjD,MAAO,CACH2inB,gBAAiB3mnB,EACjBspnB,SAAUtlnB,EACVulnB,MAAAA,GACAC,QAAAA,GAER,CAEA,SAASD,GACLE,EACAvgnB,EACA2vC,EACA1K,SAGA,GAAiB,OAAjB,EAAIvnC,KAAK0inB,WAALI,EAAe53O,MACf,OAAqD,OAA9ClrY,KAAK4inB,QAAQC,EAAKvgnB,EAAK2vC,GAAY,GAAe,IAK7D,GAAI1K,IAAWs7kB,EAAIE,QACf,OAAqD,OAA9C/inB,KAAK4inB,QAAQC,EAAKvgnB,EAAK2vC,GAAY,GAAe,IAK7D,GAAIsiV,GAAStiV,EAAW/zC,OAGpB,OAAO,EAEX,IAAM8knB,EAAmBC,GAAuBJ,EAAK7inB,KAAMsC,EAAK2vC,GAAY,GAE5E,OADAh0C,GAAespC,EAAQjlC,EAAK0gnB,GACrB,CACX,CAEA,SAASJ,GACLC,EACAvgnB,EACA2vC,EACAixkB,GAEA,IAAMF,EAAmBC,GAAuBJ,EAAK7inB,KAAMsC,EAAK2vC,GAChE,OAAO4wkB,EAAIM,gBAAgB7gnB,EAAK0gnB,EAAkBE,EACtD,CAgBA,SAAgBD,GACZJ,EACAhD,EACAv9mB,EACA2vC,EAEAmxkB,qBAjBgB1+c,OAiBhB0+c,IAAAA,IAAAA,EAA2B/B,GAAY+B,iBAjBvB1+c,EAmB6BzyH,EAAjB4tkB,EApB1BE,gBAEK,EAAL7hnB,MAmBF,IACgC,EAD1BA,EAAU+zC,EAAV/zC,MACiB,OAAvB,EAAI2hnB,EAAW6C,WAAXW,EAAqBn4O,QACrBhtY,EAAQA,EAAMpB,KAAe,OAAV,EAAA+lnB,EAAIS,QAAMC,EAAIV,EAAIE,UAEzC,MAAO,CACH7knB,MAAO4sa,GACsB,OADV,EACI,OADJ,EACf+0M,EAAW6C,eAAQ,EAAnBc,EAAqBpqnB,MAAIqqnB,EAAInhnB,EAAIhF,WACjCY,EAC+B,OAD1B,EACc,OADd,EACL2hnB,EAAW6C,eAAQ,EAAnBgB,EAAqBnB,aAAUoB,EAEZ,OAAnB,EAAA9D,EAAW6C,WAAX,EAAqBx3O,MAAkB,OAAb,EAAG23O,EAAIS,QAAMM,EAAIf,EAAIE,aAAUp7mB,GAI7DvJ,cAAcglnB,GAAkBP,EAAIgB,eAEpCpgmB,YAAY,EAGZtlB,UAAUilnB,EAElB,UC3FgBU,GAAqB1qnB,EAAcgE,GAC/C,MAAO,CACH2inB,gBAAiB3mnB,EACjBspnB,SAAUtlnB,EACVulnB,MAAAA,GACAC,QAAAA,GAER,CAEA,SAASD,GACLE,EACAvgnB,EACA2vC,EACA1K,SAGA,GAAIA,IAAWs7kB,EAAIE,QACf,OAAqD,OAA9C/inB,KAAK4inB,QAAQC,EAAKvgnB,EAAK2vC,GAAY,GAAe,IAM7D,GAAiB,OAAb,EAAAjyC,KAAK0inB,WAAL,EAAex3O,SAAWw0O,GAAQmD,EAAIE,QAASzgnB,KAASggnB,GAAOO,EAAIE,QAAQzgnB,MACzB,OAA9CtC,KAAK4inB,QAAQC,EAAKvgnB,EAAK2vC,GAAY,GACnC,OAAO,EAGf,GAAIqwkB,GAAOrwkB,EAAW/zC,OAGlB,OAAO,EAEX,IAAM6lnB,EAAiBC,GAAqBnB,EAAK7inB,KAAMsC,EAAK2vC,GAAY,GAAO,GAE/E,OADAh0C,GAAespC,EAAQjlC,EAAKyhnB,GACrB,CACX,CAEA,SAASnB,GACLC,EACAvgnB,EACA2vC,EACAixkB,SAEMa,EAAiBC,GAAqBnB,EAAK7inB,KAAMsC,EAAK2vC,EAAyB,OAAf,EAAEjyC,KAAK0inB,eAAQ,EAAbuB,EAAe/4O,OACvF,OAAO23O,EAAIM,gBAAgB7gnB,EAAKyhnB,EAAgBb,EACpD,CAgBA,SAASc,GACLnB,EACAhD,EACAv9mB,EACA2vC,EACAi5V,EAEAk4O,GArBJ,IAGoB1+c,OAkBhB0+c,IAAAA,IAAAA,EAA2B/B,GAAY+B,iBAlBvB1+c,EAoB2BzyH,EAAjB4tkB,EArBxBE,gBAEK,EAAL7hnB,MAoBF,IAKW,EALLA,EAAU+zC,EAAV/zC,OAEDoknB,GAAOpknB,KACRA,EAAQ08d,GAAK18d,IAEbgtY,MAEAhtY,EAAQA,EAAMpB,KAAe,OAAV,EAAA+lnB,EAAIS,QAAMC,EAAIV,EAAIE,UAE/BmB,YAAa,GAEvB,MAAO,CACHhmnB,MAAAA,EAGAE,cAAcglnB,GAAkBP,EAAIgB,eAEpCpgmB,YAAY,EAGZtlB,UAAUilnB,EAElB,UCzGgBe,GAAyB/qnB,EAAcgE,GACnD,MAAO,CACH2inB,gBAAiB3mnB,EACjBspnB,SAAUtlnB,EACVulnB,MAAAA,GACAC,QAAAA,GAER,CAEA,SAASD,GACLE,EACAvgnB,EACA2vC,GAEA,OAAqD,OAA9CjyC,KAAK4inB,QAAQC,EAAKvgnB,EAAK2vC,GAAY,GAAe,GAC7D,CAEA,SAAS2wkB,GACLC,EACAvgnB,EACA2vC,EACAixkB,GAGA,OAWJ,SACIL,EAAmC7rmB,EAEnC1U,EAAgBoiK,GADC,EAAfq7c,gBAEG,EAAHnmnB,IAEEsP,CAMR,CAxBIk7mB,CAAyBvB,EAAK7inB,KAAMsC,EAAK2vC,GAClC4wkB,EAAIwB,wBACP/hnB,EAAGyW,GAAAA,CAAAA,EAEI/Y,KAAK0inB,SAAQ,CAChB9onB,IAAKq4C,EAAWr4C,IAChBT,IAAK84C,EAAW94C,MAEpB+pnB,EAER,UC3BgBoB,GAA2BlrnB,EAAcgE,GACrD,MAAO,CACH2inB,gBAAiB3mnB,EACjBspnB,SAAUtlnB,EACVulnB,MAAAA,GACAC,QAAAA,GAER,CAEA,SAASD,GACLE,EACAvgnB,EACA2vC,GAEA,OAAqD,OAA9CjyC,KAAK4inB,QAAQC,EAAKvgnB,EAAK2vC,GAAY,GAAe,GAC7D,CAEA,SAAS2wkB,GACLC,EACAvgnB,EACA2vC,EACAixkB,WAGA,OAQJ,SACIL,EAAmC7rmB,EAEnC1U,EACA2vC,GAFiB,EAAf8tkB,gBAIE72mB,CAMR,CArBIq7mB,CAA2B1B,EAAK7inB,MACzB6inB,EAAI2B,0BACPlinB,EACA2vC,EAAW/zC,MACY,OADP,EACH,OADG,EAChB8B,KAAK0inB,eAAQ,EAAbI,EAAe2B,UAAQC,EAAIvC,GAC3Be,EAER,CCxBA,IAEayB,GAA6BC,KAE1C,SAAgBA,GAAqBxnnB,GACjC,MAAO,CACH2inB,gBANK,OAOL2C,SAAUtlnB,EACVulnB,MAAAA,GACAC,QAAAA,GAER,CAEA,SAASD,GACLE,EACAvgnB,EACA2vC,EACA1K,WA2BsE,EAC/B,EAzBvC,GAAI0K,EAAWr4C,IACX,OAAO2pd,GAASo/J,MAAME,EAAKvgnB,EAAK2vC,EAAY1K,GAGhD,GAAI0K,EAAW94C,IAAK,CAEhB,IAAMA,EAAM2xa,GAAaxoa,EAAIhF,WAAY20C,EAAW94C,KAEpD,OAAIouC,IAAWs7kB,EAAIE,QAIR,OAHAF,EAAIM,gBAAgB7gnB,EAAK,CAC5BlE,cAAcijnB,GAAY+B,iBAAkBP,EAAIgB,eAChD1qnB,IAAAA,IACO,KAKf8E,GAAespC,EAAQjlC,EAAK,CACxBlE,cAAc,EACdjF,IAAAA,IAEG,GAGX,GAAIouC,IAAWs7kB,EAAIE,SAAuC,oBAArB9wkB,EAAW/zC,MAC5C,OAAIghnB,GAAYjtkB,EAAW/zC,QACa,OAAb,EAAA8B,KAAK0inB,WAAL,EAAemC,SAAWjqJ,GAAK1vF,MAAQ0vF,IACxC+nJ,MAAME,EAAKvgnB,EAAK2vC,EAAY1K,IAEhB,OAAb,EAAAvnC,KAAK0inB,WAAL,EAAemC,SAAWtC,GAAWr3O,MAAQq3O,IAC9CI,MAAME,EAAKvgnB,EAAK2vC,EAAY1K,GAKxD,IAEuE,EAFnEu9kB,GAA+C,KAAX,OAAb,EAAA9knB,KAAK0inB,eAAQ,EAAb,EAAetqjB,MAAiBiqjB,GAAWpxmB,IAAMoxmB,GAE5C,oBAArBpwkB,EAAW/zC,OAAqC,OAAjB,EAAI8B,KAAK0inB,WAALqC,EAAeF,WACzD5ykB,EAAW/zC,MAAQ+zC,EAAW/zC,MAAMpB,KAAe,OAAV,EAAA+lnB,EAAIS,QAAMC,EAAIV,EAAIE,UAE/D,OAAO+B,EAAqBnC,MAAME,EAAKvgnB,EAAK2vC,EAAY1K,EAC5D,CAEA,SAASq7kB,GACLC,EACAvgnB,EACA2vC,EACAixkB,WAoBuE,EAjBvE,GAAIjxkB,EAAWr4C,IACX,OAAO2pd,GAASq/J,QAAQC,EAAKvgnB,EAAK2vC,EAAYixkB,GAGlD,GAAIjxkB,EAAW94C,IAEX,OAAO0pnB,EAAIM,gBACP7gnB,EACA,CACIlE,cAAcijnB,GAAY+B,iBAAkBP,EAAIgB,eAChD1qnB,IAAK2xa,GAAaxoa,EAAIhF,WAAY20C,EAAW94C,MAEjD+pnB,GAKwB,oBAArBjxkB,EAAW/zC,OAAqC,OAAjB,EAAI8B,KAAK0inB,WAALsC,EAAeH,WACzD5ykB,EAAW/zC,MAAQ+zC,EAAW/zC,MAAMpB,KAAe,OAAV,EAAA+lnB,EAAIS,QAAMM,EAAIf,EAAIE,UAG/D,QADmD,KAAX,OAAb,EAAA/inB,KAAK0inB,eAAQ,EAAb,EAAetqjB,MAAiBiqjB,GAAWpxmB,IAAMoxmB,IAChDO,QAAQC,EAAKvgnB,EAAK2vC,EAAYixkB,EAC9D,CCxEO,IAgBM+B,GAA0D,CACnE7sjB,MAAM,EACNh/D,UAAMuO,EACNu9mB,sBAAkBv9mB,EAClBpL,OAAO,GAIX,SAAgB4onB,GAA0B7kmB,GACtC,OAAOA,GAAS2kmB,EACpB,CAJAjnnB,OAAO8iM,OAAOmkb,IAMd,IAAMH,GAAuBR,GA5BH,cA6BpBc,GAA0Bd,GA5BF,iBA4B6C,CACvEG,SAAUjC,KAER6C,GAA8Bf,GA9BF,qBA8BiD,CAC/EG,SNfJ,SAAgCrgmB,EAAGtlB,EAAG1F,GAClC,YAAUuO,IAANyc,GAAyB,OAANA,GAGnBkhmB,GAAmBlhmB,IAAMmhmB,GAAkBnhmB,IAAMohmB,GAAgBphmB,IAAMqhmB,GAAgBrhmB,GAFhFA,EAKPvf,MAAMC,QAAQsf,GACPi+lB,GAAWh4mB,MAAM+Z,EAAG,CAAEhrB,KAAAA,EAAMg/D,MAAM,IAEzChxB,GAAchjB,GACPi+lB,GAAW18kB,OAAOvhB,OAAGzc,EAAW,CAAEvO,KAAAA,EAAMg/D,MAAM,IAErDmnjB,GAASn7lB,GACFi+lB,GAAWt+mB,IAAIqgB,EAAG,CAAEhrB,KAAAA,EAAMg/D,MAAM,IAEvConjB,GAASp7lB,GACFi+lB,GAAWlpnB,IAAIirB,EAAG,CAAEhrB,KAAAA,EAAMg/D,MAAM,SAGvC,CAKR,IMRMstjB,GAA6BpB,GAhCF,oBAgCgD,CAC7EG,SNcJ,SAAkCrgmB,EAAGw2I,GAIjC,OAAI96I,GAAUsE,EAAGw2I,GACNA,EAEJx2I,CACX,IMpBMuhmB,GAAgC/F,GAA0BkF,IAEhE,SAAgBc,GAAuBxonB,GACnC,OAAwB,IAAjBA,EAAQg7D,KACT+pjB,IACiB,IAAjB/knB,EAAQg7D,KACRoqjB,GAUV,SAA0C3C,WACtC,OAAQA,GAAyD,OAAhC,EAAsB,OAAtB,EAAGA,EAAW6C,eAAQ,EAAnBW,EAAqBoB,UAAQhB,EAA5CtB,EACzB,CAXU0D,CAA0BzonB,EAAQ8nnB,iBAC5C,CAgBA,SAASY,GAAiB1hmB,EAAQuxgB,EAAYgD,GAE1C,IAAIqmF,GAAYrpF,GAMhB,OAAIysF,GAAah+lB,GACNA,EAIPgjB,GAAchjB,GACPi+lB,GAAW18kB,OAAOvhB,EAAGuxgB,EAAMgD,GAIlC9zhB,MAAMC,QAAQsf,GACPi+lB,GAAWh4mB,MAAM+Z,EAAGuxgB,GAI3B4pF,GAASn7lB,GACFi+lB,GAAWt+mB,IAAIqgB,EAAGuxgB,GAIzB6pF,GAASp7lB,GACFi+lB,GAAWlpnB,IAAIirB,EAAGuxgB,GAIZ,kBAANvxgB,GAAwB,OAANA,EAClBA,EAIJi+lB,GAAWn6iB,IAAI9jD,EAAGuxgB,GAnCrBmqF,GAAgB17lB,EAAGuxgB,EAAMmvF,GAoCjC,CACA3/mB,GAAO2gnB,GAAkBH,IA6CzB,UA+CWtD,GAAiCl9mB,GAAO2gnB,GA/CH,CAC5C59iB,IAAG,SAAUhqE,EAAUd,GACnB,IAAMsjI,EAAIykf,GAA0B/nnB,GACpC,OAAO,IAAI2onB,GAAgB7nnB,EAAO0nnB,GAAuBllf,GAAIA,EAAEtnI,MAAM,EAAMsnI,EAAEslf,OAChF,EACD37mB,MAAK,SAAU47mB,EAAqB7onB,GAChC,IAAMsjI,EAAIykf,GAA0B/nnB,GACpC,QAC+B,IAA3BiknB,GAAY6E,aAAoC,IAAZxlf,EAAEnkI,MAChC4pnB,GACAC,IACRH,EAAeL,GAAuBllf,GAAIA,EAAEtnI,KACjD,EACD2K,IAAG,SACCkinB,EACA7onB,GAEA,IAAMsjI,EAAIykf,GAA0B/nnB,GACpC,OAAO,IAAIipnB,GAAoBJ,EAAeL,GAAuBllf,GAAIA,EAAEtnI,KAC9E,EACDD,IAAG,SACC8snB,EACA7onB,GAEA,IAAMsjI,EAAIykf,GAA0B/nnB,GACpC,OAAO,IAAIkpnB,GAAiBL,EAAeL,GAAuBllf,GAAIA,EAAEtnI,KAC3E,EACDusC,OAAM,SACF76B,EACA+jS,EACAzxS,GAEA,OAAOmpnB,IACwB,IAA3BlF,GAAY6E,aAA2C,KAAZ,MAAP9onB,OAAO,EAAPA,EAASb,OACvCiqnB,GAAmB,CAAC,EAAGppnB,GCtIzC,SACIua,EACAva,WAIA,OAFA0hnB,KACAnnmB,EAAS6umB,GAAmB7umB,EAAQva,GACR,OAApB,KAAAua,EAAOuomB,KAAOoD,QAAMmD,EAApBC,EAAcpD,OAAW,IAAIzknB,MAAM8Y,EAAQgvmB,GACvD,CDgIkBC,CAA0B,CAAC,EAAGxpnB,GACpC0N,EACA+jS,EAEP,EACD59R,IAAK2umB,GAA0BwF,IAC/BlD,QAAStC,GAA0ByF,IACnCjtjB,KAAMutjB,GACNkB,OAAQjH,GAA0B8F,MEjNzBoB,GAAW,WAYlBC,GAAqB5C,GAAyB2C,IAC9CE,GAA2B7C,GAZF,kBAY4C,CACvE6B,OAAQ77J,GAAS83J,aAOR1+J,GAA6B,SAAkBnoS,EAAMu6W,GAC9D,GAAIqpF,GAAYrpF,GAEZ,OAAOmqF,GAAgB1kc,EAAMu6W,EAAMoxF,IAEvC,GAAI3/kB,GAAcg0I,GAEd,OAAOwkc,GAA0BuE,GAAyB2C,GAAU1rc,IAcxE,IAAMr3C,EAAmC38F,GAAcuuf,GAAQA,EAAO,CAAC,EAIvE,OAHA5xZ,EAAKnqI,IAAMwhL,EACXr3C,EAAK3qI,OAAL2qI,EAAK3qI,KAASgiL,EAAKhiL,MAAQ,IAEpB,IAAI6tnB,GAAcljf,EACrB,EAER/lI,OAAOmH,OAAOo+c,GAAUwjK,IAExBxjK,GAASsjK,OAASjH,GAA0BoH,IC5C5C,OAAIE,GAAkB,EAClBC,GAAe,EACbC,GAA0E,OAAhD,GAAkC,OAAlC,GAAG3I,IAAc,WAAQ,GAAE,cAAO,EAA/B4I,GAAiCjpnB,eAAYkpnB,GAG1EC,GAAwC,CAC1CrpnB,MAAO,SACPE,cAAc,EACdD,UAAU,EACVslB,YAAY,GAGhB,SAAgBqnZ,GACZttQ,EACAz/J,EACAwknB,EACAtxmB,GAUA,SAASmrH,IACL,OAAOmqC,GAAc/I,EAAY+kd,EAAYxknB,EAAIkT,GAAOjR,KAAM8X,WAOlE,YAnBAyqmB,IAAAA,IAAAA,GAAsB,GActBnmf,EAAIorf,cAAe,EACfJ,KACAG,GAAkBrpnB,MAAQs/J,EAC1Bv/J,GAAem+H,EAAK,OAAQmrf,KAEzBnrf,CACX,CAEA,SAAgBmqC,GACZ/I,EACAiqd,EACA1pnB,EACAk2Q,EACAr2Q,GAEA,IAAM8pnB,EAuBV,SACIlqd,EACAiqd,EACAxzW,EACAr2Q,GAEA,IAAM+pnB,GAAaz+mB,EACf0+mB,EAAqB,EACrB1+mB,EAUJ,IAAM2+mB,EAAkBxG,GAAYyG,mBAC9BC,GAAeN,IAAuBI,EAC5C1G,KACA,IAAI6G,EAAyB3G,GAAY4G,kBACrCF,IACAG,KACAF,EAAyBG,IAAuB,IAEpD,IAAMC,EAAuBC,IAAqB,GAC5CX,EAAU,CACZY,aAAcP,EACdF,gBAAAA,EACAG,uBAAAA,EACAI,qBAAAA,EACAT,WAAAA,EACAC,WAAAA,EACAW,UAAWpB,KACXqB,gBAAiBtB,IAGrB,OADAA,GAAkBQ,EAAQa,UACnBb,CACX,CA9DoBt3V,CAAa5yH,EAAYiqd,GACzC,IACI,OAAO1pnB,EAAGga,MAAMk8P,EAAOr2Q,GACzB,MAAOwB,GAEL,MADAsonB,EAAQe,OAASrpnB,EACXA,CACT,CALD,SA+DJ,SAA2BsonB,GACnBR,KAAoBQ,EAAQa,WAC5BhK,GAAI,IAER2I,GAAkBQ,EAAQc,qBAEH7gnB,IAAnB+/mB,EAAQe,SACRpH,GAAYqH,wBAAyB,GAEzCC,GAAqBjB,EAAQM,wBAC7BY,GAAmBlB,EAAQU,sBAC3B5G,KACIkG,EAAQY,cACRO,GAAanB,EAAQG,iBAErB3+mB,EAGJm4mB,GAAYqH,wBAAyB,CACzC,CA5EQ73V,CAAW62V,GAEnB,CA4EA,SAAgBO,GAAqBA,EAA4Bl3mB,GAC7D,IAAM7F,EAAOi9mB,GAAuBF,GACpC,IACI,OAAOl3mB,IADX,QAGI43mB,GAAqBz9mB,GAE7B,CAEA,SAAgBi9mB,GAAuBF,GACnC,IAAM/8mB,EAAOm2mB,GAAY4G,kBAEzB,OADA5G,GAAY4G,kBAAoBA,EACzB/8mB,CACX,CAEA,SAAgBy9mB,GAAqBz9mB,GACjCm2mB,GAAY4G,kBAAoB/8mB,CACpC,CC/GuB49mB,GAsIlBllmB,OAAOguhB,YApIZ,OAAam0E,GACT,YASA,WACI7nnB,EACOumnB,EACArE,EACP2I,EACQ/C,SAaP,YAfM5F,IAAAA,IAAAA,EAAqD,wBACnD,IAAT2I,IAAAA,GAAY,QACJ/C,IAAAA,IAAAA,EAA+B77J,GAAQ,UAE/Cpjd,EAAAA,EAAAA,KAAAA,KAAMq5mB,IAAM,MALLqE,cAAAA,IACArE,WAAQ,IAEP4F,YAAAA,IAXZgD,sBAAuB,EAAKjinB,EAC5BkinB,mBAAa,EAAAlinB,EACbminB,sBAAgB,EAAAninB,EAChBoinB,YAAM,EAAApinB,EACNqinB,cAAQ,EAIGrinB,EAAAA,SAAAA,EACAA,EAAAA,MAAAA,EAECA,EAAAA,OAAAA,EAGRA,EAAKoinB,OAAS1E,EAASvmnB,OAAOyJ,EAAWy4mB,GAUxC,EA3BLx0F,GAAAA,EAAAA,GA4BC,kBAyGA,OAzGA7jhB,EAEOshnB,aAAA,SAAanrnB,GACjB,YAAsByJ,IAAlB3H,KAAKopnB,SACEppnB,KAAKopnB,SAASlrnB,GAElBA,CACV,EAAA6J,EAEM5O,IAAA,SAAI0vC,GACU7oC,KAAKmpnB,OAEtB,IADAtglB,EAAW7oC,KAAKspnB,iBAAiBzglB,MAChBw4kB,GAAYkI,UAAW,CAEhCrgnB,EAUJlJ,KAAKwpnB,aAAa3glB,GAKzB,EAAA9gC,EAEOuhnB,iBAAA,SAAiBzglB,GAErB,GADA4glB,GAAoCzpnB,MAChC0pnB,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAqC3pnB,KAAM,CACtD2lC,OAAQ3lC,KACRqF,KAAMwyF,GACNhvD,SAAAA,IAEJ,IAAKwmD,EACD,OAAOgyhB,GAAYkI,UAEvB1glB,EAAWwmD,EAAOxmD,SAItB,OADAA,EAAW7oC,KAAKyknB,SAAS57kB,EAAU7oC,KAAKmpnB,OAAQnpnB,KAAKognB,OAC9CpgnB,KAAKgmnB,OAAOhmnB,KAAKmpnB,OAAQtglB,GAAYw4kB,GAAYkI,UAAY1glB,CACvE,EAAA9gC,EAEDyhnB,aAAA,SAAa3glB,GACT,IAAM+xH,EAAW56J,KAAKmpnB,OACtBnpnB,KAAKmpnB,OAAStglB,EACd7oC,KAAKkhnB,gBACDj1F,GAAajshB,OACbgB,GAAgBhB,KAAM,CAClBqF,KAAMwyF,GACNlyD,OAAQ3lC,KACR6oC,SAAAA,EACA+xH,SAAAA,GAGX,EAAA7yJ,EAEMnO,IAAA,WAEH,OADAoG,KAAKihnB,iBACEjhnB,KAAKqpnB,aAAarpnB,KAAKmpnB,OACjC,EAAAphnB,EAED6hnB,WAAA,SAAW9onB,GACP,OAAO+onB,GAAoB7pnB,KAAMc,EACpC,EAAAiH,EAED+hnB,SAAA,SAAStpnB,EAAgDupnB,GAWrD,OAVIA,GACAvpnB,EAAS,CACLwpnB,eAAgB,QAChBC,gBAAiBjqnB,KAAKognB,MACtBz6kB,OAAQ3lC,KACRqF,KAAMwyF,GACNhvD,SAAU7oC,KAAKmpnB,OACfvud,cAAUjzJ,IAGXuinB,GAAiBlqnB,KAAMQ,EACjC,EAAAuH,EAEDgO,IAAA,WAEI,OAAO/V,KAAKmpnB,MACf,EAAAphnB,EAEDykD,OAAA,WACI,OAAOxsD,KAAKpG,KACf,EAAAmO,EAEDzK,SAAA,WACI,OAAU0C,KAAKognB,MAAK,IAAIpgnB,KAAKmpnB,OAAM,GACtC,EAAAphnB,EAEDwkD,QAAA,WACI,OAAOqlf,GAAY5xiB,KAAKpG,MAC3B,EAAAmO,EAAAA,IAED,WACI,OAAO/H,KAAKusD,SACf,IArID,CAAQ4zjB,IAwICgK,GAAoB9K,GAA0B,kBAAmB0G,IC1I9E+C,GA+QKllmB,OAAOguhB,YA5PZ,ICnEY+uE,GAoBAyJ,GD+CCnD,GAAa,WAqCtB,WAAY7pnB,QApCZitnB,mBAAqB1J,GAAkBC,cAAa,KACpD0J,WAA4B,GAAE,KAC9BC,cAAgB,KAAI,KACpBjK,kBAAmB,EAAK,KACxBD,yBAAmC,EAAK,KACxCE,WAAa,IAAIxhnB,IAAkB,KACnCyhnB,WAAa,EAAC,KACdgK,OAAS,EAAC,KACV/J,gBAAkB,EAAC,KACnBC,qBAAuBC,GAAkB8J,YAAW,KACpDC,kBAAoB,EAAC,KACXvB,OAA0C,IAAIwB,GAAgB,MAAK,KAC7EvK,WAAK,OACLwK,kBAAY,OACZC,cAAwB,EAAK,KAC7BC,kBAA4B,EAAK,KACjCC,gBAAU,OACVC,aAAO,OACPC,WAAwBb,GAAUc,KAAI,KACtCC,YAAM,OACEC,aAAO,OACPC,uBAAiB,OACzBC,gBAAU,OAwCHzK,WAAK,OACLC,YAAM,EA1BJ1jnB,EAAQxD,KACT2knB,GAAI,IAERv+mB,KAAK+qnB,WAAa3tnB,EAAQxD,IAC1BoG,KAAKognB,MAAQhjnB,EAAQhE,MAAoD,gBACrEgE,EAAQjE,MACR6G,KAAKgrnB,QAAUlgN,GACwB,uBACnC1ta,EAAQjE,MAGhB6G,KAAKornB,QACDhunB,EAAQ4onB,SACN5onB,EAAgBmunB,mBAAsBnunB,EAAgBypnB,OAClD18J,GAAS83J,WACT93J,GAAQ,SAClBnqd,KAAKmrnB,OAAS/tnB,EAAQ+oD,QACtBnmD,KAAKqrnB,kBAAoBjunB,EAAQounB,iBACjCxrnB,KAAKsrnB,aAAelunB,EAAQqunB,UAC/B,kBAqMA,OArMA1jnB,EAED2jnB,eAAA,YE4FJ,SAAsCrJ,GAElC,GAAIA,EAAW3B,uBAAyBC,GAAkB8J,YACtD,OAEJpI,EAAW3B,qBAAuBC,GAAkBgL,gBAEpDtJ,EAAW9B,WAAW7/mB,SAAQ,SAAA8iB,GACtBA,EAAE6mmB,qBAAuB1J,GAAkB8J,cAC3CjnmB,EAAE6mmB,mBAAqB1J,GAAkBgL,gBACzCnomB,EAAEkomB,iBAET,GAEL,CFzGQE,CAAsB5rnB,KACzB,EAAA+H,EAKMg5mB,KAAA,WACC/gnB,KAAK6gnB,OACL7gnB,KAAK6gnB,MAAMngnB,SAAQ,SAAAF,GAAQ,OAAIA,MAEtC,EAAAuH,EAEMi5mB,MAAA,WACChhnB,KAAK8gnB,QACL9gnB,KAAK8gnB,OAAOpgnB,SAAQ,SAAAF,GAAQ,OAAIA,QAIxCuH,EAIOnO,IAAA,WAIH,GAHIoG,KAAK6qnB,cACLtM,GAAI,GAAIv+mB,KAAKognB,MAAOpgnB,KAAK+qnB,YAGD,IAAxB1J,GAAYwK,SAEa,IAAzB7rnB,KAAKugnB,WAAW1ymB,MACf7N,KAAKsrnB,YAUN,GADArK,GAAejhnB,MACX8rnB,GAAc9rnB,MAAO,CACrB,IAAI+rnB,EAAsB1K,GAAY2K,gBAClChsnB,KAAKsrnB,aAAeS,IACpB1K,GAAY2K,gBAAkBhsnB,MAE9BA,KAAKisnB,mBEuBzB,SAAyC5J,GAErC,GAAIA,EAAW3B,uBAAyBC,GAAkBuL,OACtD,OAEJ7J,EAAW3B,qBAAuBC,GAAkBuL,OAEpD7J,EAAW9B,WAAW7/mB,SAAQ,SAAA8iB,GACtBA,EAAE6mmB,qBAAuB1J,GAAkBgL,gBAC3CnomB,EAAE6mmB,mBAAqB1J,GAAkBuL,OAKzC1omB,EAAE6mmB,qBAAuB1J,GAAkB8J,cAE3CpI,EAAW3B,qBAAuBC,GAAkB8J,YAE3D,GAEL,CF1CoB0B,CAAyBnsnB,MAE7BqhnB,GAAY2K,gBAAkBD,QAhB9BD,GAAc9rnB,QACdA,KAAKosnB,0BACLjL,KACAnhnB,KAAKmpnB,OAASnpnB,KAAKqsnB,eAAc,GACjC7K,MAeR,IAAMh+mB,EAASxD,KAAKmpnB,OAEpB,GAAImD,GAAkB9onB,GAClB,MAAMA,EAAO+onB,MAEjB,OAAO/onB,CACV,EAAAuE,EAEM5O,IAAA,SAAI+E,GACP,GAAI8B,KAAKgrnB,QAAS,CACVhrnB,KAAK8qnB,kBACLvM,GAAI,GAAIv+mB,KAAKognB,OAEjBpgnB,KAAK8qnB,kBAAmB,EACxB,IACI9qnB,KAAKgrnB,QAAQvsnB,KAAKuB,KAAKmrnB,OAAQjtnB,GADnC,QAGI8B,KAAK8qnB,kBAAmB,EAE/B,MACGvM,GAAI,GAAIv+mB,KAAKognB,MAEpB,EAAAr4mB,EAEDkknB,gBAAA,WAEI,IAAMrxd,EAAW56J,KAAKmpnB,OAChBqD,EACcxsnB,KAAKqqnB,qBAAuB1J,GAAkBC,cAC5D/3kB,EAAW7oC,KAAKqsnB,eAAc,GAE9Bn2iB,EACFs2iB,GACAF,GAAkB1xd,IAClB0xd,GAAkBzjlB,KACjB7oC,KAAKornB,QAAQxwd,EAAU/xH,GAiB5B,OAfIqtC,IACAl2E,KAAKmpnB,OAAStglB,GAcXqtC,CACV,EAAAnuE,EAEDsknB,cAAA,SAAcjuH,GACVp+f,KAAK6qnB,cAAe,EAEpB,IACIzuf,EADElxH,EAAOi9mB,IAAuB,GAEpC,GAAI/pH,EACAhiY,EAAMqwf,GAAqBzsnB,KAAMA,KAAK+qnB,WAAY/qnB,KAAKmrnB,aAEvD,IAA2C,IAAvC9J,GAAYqL,uBACZtwf,EAAMp8H,KAAK+qnB,WAAWtsnB,KAAKuB,KAAKmrnB,aAEhC,IACI/uf,EAAMp8H,KAAK+qnB,WAAWtsnB,KAAKuB,KAAKmrnB,QAClC,MAAOlinB,GACLmzH,EAAM,IAAIuuf,GAAgB1hnB,GAMtC,OAFA0/mB,GAAqBz9mB,GACrBlL,KAAK6qnB,cAAe,EACbzuf,CACV,EAAAr0H,EAED4knB,SAAA,WACS3snB,KAAKsrnB,aACNsB,GAAe5snB,MACfA,KAAKmpnB,YAASxhnB,EAOrB,EAAAI,EAED+hnB,SAAA,SAAStpnB,EAAmDupnB,cACpDxiJ,GAAY,EACZxua,OAA2BpxD,EAC/B,OAAOklnB,IAAQ,WAEX,IAAIhklB,EAAW9hC,EAAKnN,MACpB,IAAK2te,GAAawiJ,EAAiB,CAC/B,IAAM+C,EAAQ5E,KACd1nnB,EAAS,CACLwpnB,eAAgB,WAChBC,gBAAiBljnB,EAAKq5mB,MACtB/6mB,KAAMwyF,GACNlyD,OAAQ5+B,EACR8hC,SAAAA,EACA+xH,SAAU7hG,IAEd8vjB,GAAaiE,GAEjBvlJ,GAAY,EACZxua,EAAYlwB,CACf,GACJ,EAAA9gC,EAEDqknB,wBAAA,WAkBC,EAAArknB,EAEDzK,SAAA,WACI,OAAU0C,KAAKognB,MAAK,IAAIpgnB,KAAK+qnB,WAAWztnB,WAAU,GACrD,EAAAyK,EAEDwkD,QAAA,WACI,OAAOqlf,GAAY5xiB,KAAKpG,MAC3B,EAAAmO,EAAAA,IAED,WACI,OAAO/H,KAAKusD,SACf,IA9PqB,GAiQbwgkB,GAAkB1N,GAA0B,gBAAiB4H,KCpU1E,SAAYtG,GAGRA,EAAAA,EAAAA,eAAAA,GAAAA,gBAIAA,EAAAA,EAAAA,YAAAA,GAAAA,cAOAA,EAAAA,EAAAA,gBAAAA,GAAAA,kBAGAA,EAAAA,EAAAA,OAAAA,GAAAA,QAjBJ,EAAYA,KAAAA,GAAiB,KAoB7B,SAAYyJ,GACRA,EAAAA,EAAAA,KAAAA,GAAAA,OACAA,EAAAA,EAAAA,IAAAA,GAAAA,MACAA,EAAAA,EAAAA,MAAAA,GAAAA,OAHJ,EAAYA,KAAAA,GAAS,KAgCrB,IAAaO,GACT,SAAmB4B,QAAAA,WAAAA,EAAA,KAAAA,MAAAA,CAElB,EAGL,SAAgBD,GAAkBrjnB,GAC9B,OAAOA,aAAa0hnB,EACxB,CAaA,SAAgBmB,GAAcf,GAC1B,OAAQA,EAAWV,oBACf,KAAK1J,GAAkB8J,YACnB,OAAO,EACX,KAAK9J,GAAkBC,cACvB,KAAKD,GAAkBuL,OACnB,OAAO,EACX,KAAKvL,GAAkBgL,gBAMnB,IAJA,IAAMqB,EAAsB3E,IAAqB,GAC3C4E,EAAgB/E,KAChBgF,EAAMnC,EAAWT,WACnBtmmB,EAAIkpmB,EAAIvsnB,OACHgI,EAAI,EAAGA,EAAIqb,EAAGrb,IAAK,CACxB,IAAMwM,EAAM+3mB,EAAIvknB,GAChB,GAAIoknB,GAAgB53mB,GAAM,CACtB,GAAIksmB,GAAYqL,uBACZv3mB,EAAIvb,WAEJ,IACIub,EAAIvb,MACN,MAAOqP,GAIL,OAFA4/mB,GAAaoE,GACbrE,GAAmBoE,IACZ,EAMf,GAAKjC,EAAWV,qBAA+B1J,GAAkBuL,OAG7D,OAFArD,GAAaoE,GACbrE,GAAmBoE,IACZ,GAOnB,OAHAG,GAA2BpC,GAC3BlC,GAAaoE,GACbrE,GAAmBoE,IACZ,EAGnB,CAMA,SAAgBvD,GAAoC5H,GAkBpD,CAeA,SAAgB4K,GAAwB1B,EAAyBjnmB,EAAYqiC,GACzE,IAAM6mkB,EAAsB3E,IAAqB,GAGjD8E,GAA2BpC,GAC3BA,EAAWR,cAAgB,IAAI1lnB,MAAMkmnB,EAAWT,WAAW3pnB,OAAS,KACpEoqnB,EAAWL,kBAAoB,EAC/BK,EAAWP,SAAWnJ,GAAY+L,MAClC,IAGI5pnB,EAHE6pnB,EAAehM,GAAYyG,mBAIjC,GAHAzG,GAAYyG,mBAAqBiD,EACjC1J,GAAYwK,WAE+B,IAAvCxK,GAAYqL,uBACZlpnB,EAASsgB,EAAErlB,KAAK0nD,QAEhB,IACI3iD,EAASsgB,EAAErlB,KAAK0nD,GAClB,MAAOl9C,GACLzF,EAAS,IAAImnnB,GAAgB1hnB,GASrC,OANAo4mB,GAAYwK,UACZxK,GAAYyG,mBAAqBuF,EAiCrC,SAA0BtC,GAWtB,IATA,IAAMuC,EAAgBvC,EAAWT,WAC3BiD,EAAaxC,EAAWT,WAAaS,EAAWR,cAClDiD,EAAoC7M,GAAkB8J,YAKtDgD,EAAK,EACLzpmB,EAAI+mmB,EAAWL,kBACV/hnB,EAAI,EAAGA,EAAIqb,EAAGrb,IAAK,CACxB,IAAMk/kB,EAAM0lC,EAAU5knB,GACC,IAAnBk/kB,EAAI24B,aACJ34B,EAAI24B,WAAa,EACbiN,IAAO9knB,IACP4knB,EAAUE,GAAM5lC,GAEpB4lC,KAKC5lC,EAA2BwiC,mBAAqBmD,IACjDA,EAAqC3lC,EAA2BwiC,oBAGxEkD,EAAU5snB,OAAS8snB,EAEnB1C,EAAWR,cAAgB,KAK3BvmmB,EAAIspmB,EAAc3snB,OAClB,KAAOqjB,KAAK,CACR,IAAM6jkB,EAAMylC,EAActpmB,GACH,IAAnB6jkB,EAAI24B,YACJ1tF,GAAe+0D,EAAKkjC,GAExBljC,EAAI24B,WAAa,EAMrB,KAAOiN,KAAM,CACT,IAAM5lC,EAAM0lC,EAAUE,GACC,IAAnB5lC,EAAI24B,aACJ34B,EAAI24B,WAAa,EACjB5tF,GAAYi1D,EAAKkjC,IAMrByC,IAAsC7M,GAAkB8J,cACxDM,EAAWV,mBAAqBmD,EAChCzC,EAAWW,iBAEnB,CA5FIgC,CAAiB3C,GAGjBnC,GAAmBoE,GACZxpnB,CACX,CAyFA,SAAgBopnB,GAAe7B,GAE3B,IAAMmC,EAAMnC,EAAWT,WACvBS,EAAWT,WAAa,GAExB,IADA,IAAI3hnB,EAAIuknB,EAAIvsnB,OACLgI,KACHmqhB,GAAeo6F,EAAIvknB,GAAIoinB,GAG3BA,EAAWV,mBAAqB1J,GAAkBC,aACtD,CAEA,SAAgB+M,GAAa9nmB,GACzB,IAAM3a,EAAOg9mB,KACb,IACI,OAAOrimB,IADX,QAGIgjmB,GAAa39mB,GAErB,CAEA,SAAgBg9mB,KACZ,IAAMh9mB,EAAOm2mB,GAAYyG,mBAEzB,OADAzG,GAAYyG,mBAAqB,KAC1B58mB,CACX,CAEA,SAAgB29mB,GAAa39mB,GACzBm2mB,GAAYyG,mBAAqB58mB,CACrC,CAEA,SAAgBm9mB,GAAqBuF,GACjC,IAAM1inB,EAAOm2mB,GAAYuM,gBAEzB,OADAvM,GAAYuM,gBAAkBA,EACvB1inB,CACX,CAEA,SAAgB09mB,GAAmB19mB,GAC/Bm2mB,GAAYuM,gBAAkB1inB,CAClC,CAMA,SAAgBiinB,GAA2BpC,GACvC,GAAIA,EAAWV,qBAAuB1J,GAAkB8J,YAAxD,CAGAM,EAAWV,mBAAqB1J,GAAkB8J,YAIlD,IAFA,IAAMyC,EAAMnC,EAAWT,WACnB3hnB,EAAIuknB,EAAIvsnB,OACLgI,KACHuknB,EAAIvknB,GAAG+3mB,qBAAuBC,GAAkB8J,YAExD,CE7UA,IAgBaoD,GAAW,gBASpBt5iB,QAAU,EAAC,KAKXg1iB,UAAwB,CAAC,EAAC,KAK1BzB,mBAAyC,KAAI,KAO7CkE,gBAAwD,KAAI,KAK5DoB,MAAQ,EAAC,KAKTU,SAAW,EAAC,KAKZjC,QAAkB,EAAC,KAQnBkC,sBAAuC,GAAE,KAKzCC,iBAA+B,GAAE,KAKjCC,oBAAqB,EAAK,KAO1BhG,mBAAoB,EAAK,KAMzB2F,iBAAkB,EAAI,KAKtBM,gBAAqC,EAAI,KAKzCC,aAA0C,GAAE,KAK5CC,4BAAiF,GAAE,KAKnFC,0BAA2B,EAAK,KAMhCC,4BAA6B,EAAK,KAMlCC,4BAA6B,EAAK,KAMlC7B,wBAAyB,EAAK,KAM9BhE,wBAAyB,EAAK,KAE9BxC,YAAa,EAAI,KAIjBsI,eAAgB,EAAK,KAOrBpL,iBAAkB,EAAI,KAKtB9B,aAAe5olB,OAAO6olB,gBAAgB,EAGtCkN,IAAsB,EACtBC,IAAgB,EAETrN,GAA4B,WACnC,IAAInnnB,EAASuiB,KAQb,OAPIviB,EAAOy0nB,oBAAsB,IAAMz0nB,EAAO00nB,gBAC1CH,IAAsB,GAEtBv0nB,EAAO00nB,eAAiB10nB,EAAO00nB,cAAcr6iB,WAAY,IAAIs5iB,IAAct5iB,UAC3Ek6iB,IAAsB,GAGrBA,GASMv0nB,EAAO00nB,eACd10nB,EAAOy0nB,qBAAuB,EACzBz0nB,EAAO00nB,cAAcrF,YACtBrvnB,EAAO00nB,cAAcrF,UAAY,CAAC,GAE/BrvnB,EAAO00nB,gBAEd10nB,EAAOy0nB,oBAAsB,EACrBz0nB,EAAO00nB,cAAgB,IAAIf,KAdnCt4lB,YAAW,WACFm5lB,IACDnQ,GAAI,GAEX,GAAE,GACI,IAAIsP,GAWlB,CA5BsC,GDjGvC,SAAgBj7F,GAAYyvF,EAAyB13mB,GAKjD03mB,EAAW9B,WAAWxykB,IAAIpjC,GACtB03mB,EAAW3B,qBAAuB/1mB,EAAK0/mB,qBACvChI,EAAW3B,qBAAuB/1mB,EAAK0/mB,mBAK/C,CAEA,SAAgBv3F,GAAeuvF,EAAyB13mB,GAIpD03mB,EAAW9B,WAAX8B,OAA6B13mB,GACM,IAA/B03mB,EAAW9B,WAAW1ymB,MAEtBghnB,GAAsBxM,EAI9B,CAEA,SAAgBwM,GAAsBxM,IACS,IAAvCA,EAAWhC,0BAEXgC,EAAWhC,yBAA0B,EACrCgB,GAAY0M,sBAAsB3tnB,KAAKiinB,GAE/C,CAOA,SAAgBlB,KACZE,GAAYwK,SAChB,CAEA,SAAgBrK,KACZ,GAA8B,MAAxBH,GAAYwK,QAAe,CAC7BiD,KAGA,IADA,IAAMphkB,EAAO2zjB,GAAY0M,sBAChBplnB,EAAI,EAAGA,EAAI+kD,EAAK/sD,OAAQgI,IAAK,CAClC,IAAM05mB,EAAa30jB,EAAK/kD,GACxB05mB,EAAWhC,yBAA0B,EACF,IAA/BgC,EAAW9B,WAAW1ymB,OAClBw0mB,EAAW/B,mBAEX+B,EAAW/B,kBAAmB,EAC9B+B,EAAWrB,SAEXqB,aAAsB4E,IAGtB5E,EAAWsK,YAIvBtL,GAAY0M,sBAAwB,GAE5C,CAEA,SAAgB9M,GAAeoB,GAG3B,IAAM0I,EAAa1J,GAAYyG,mBAC/B,OAAmB,OAAfiD,GAMIA,EAAWP,SAAWnI,EAAW5B,kBACjC4B,EAAW5B,gBAAkBsK,EAAWP,OAExCO,EAAWR,cAAeQ,EAAWL,qBAAuBrI,GACvDA,EAAW/B,kBAAoBe,GAAY2K,kBAC5C3J,EAAW/B,kBAAmB,EAC9B+B,EAAWtB,SAGZsB,EAAW/B,mBACoB,IAA/B+B,EAAW9B,WAAW1ymB,MAAcwzmB,GAAYwK,QAAU,GACjEgD,GAAsBxM,IAGnB,EACX,CAyBA,SAAgBjB,GAAiBiB,GAEzBA,EAAW3B,uBAAyBC,GAAkBuL,SAG1D7J,EAAW3B,qBAAuBC,GAAkBuL,OAGpD7J,EAAW9B,WAAW7/mB,SAAQ,SAAA8iB,GACtBA,EAAE6mmB,qBAAuB1J,GAAkB8J,aAI3CjnmB,EAAEkomB,iBAENlomB,EAAE6mmB,mBAAqB1J,GAAkBuL,MAC5C,IAEL,KEtJa6C,GAAQ,WAajB,WACW3O,EACC4O,EACAC,EACDC,QAHA9O,IAAAA,IAAAA,EAAsD,YAAU,KAAhEA,WAAAA,OACC4O,mBAAAA,OACAC,mBAAAA,OACDC,yBAAAA,OAhBX5E,WAA4B,GAAE,KAC9BC,cAA+B,GAAE,KACjCF,mBAAqB1J,GAAkBC,cAAa,KACpDJ,WAAa,EAAC,KACdgK,OAAS,EAAC,KACVE,kBAAoB,EAAC,KACrByE,aAAc,EAAK,KACnBC,cAAe,EAAK,KACpBC,iBAAkB,EAAK,KACvBC,YAAa,EAAK,KAClBrE,WAAwBb,GAAUc,KAGvB,KAAA9K,MAAAA,EACC,KAAA4O,cAAAA,EACA,KAAAC,cAAAA,EACD,KAAAC,oBAAAA,EACP,kBA2IH,OA3IGnnnB,EAEJ2jnB,eAAA,WACI1rnB,KAAKuvnB,WACR,EAAAxnnB,EAEDwnnB,UAAA,WACSvvnB,KAAKovnB,eACNpvnB,KAAKovnB,cAAe,EACpB/N,GAAY2M,iBAAiB5tnB,KAAKJ,MAClC8unB,KAEP,EAAA/mnB,EAEDynnB,YAAA,WACI,OAAOxvnB,KAAKovnB,cAGhBrnnB,EAGA0nnB,aAAA,WACI,IAAKzvnB,KAAKmvnB,YAAa,CACnBhO,KACAnhnB,KAAKovnB,cAAe,EACpB,IAAMlknB,EAAOm2mB,GAAY2K,gBAEzB,GADA3K,GAAY2K,gBAAkBhsnB,KAC1B8rnB,GAAc9rnB,MAAO,CACrBA,KAAKqvnB,iBAAkB,EAEvB,IACIrvnB,KAAKgvnB,gBAQP,MAAO/lnB,GACLjJ,KAAK0vnB,6BAA6BzmnB,IAG1Co4mB,GAAY2K,gBAAkB9gnB,EAC9Bs2mB,KAEP,EAAAz5mB,EAEDq2f,MAAA,SAAMrggB,GACF,IAAIiC,KAAKmvnB,YAAT,CAIAhO,KAGIj4mB,EAOJlJ,KAAKsvnB,YAAa,EAClB,IAAMK,EAAetO,GAAY2K,gBACjC3K,GAAY2K,gBAAkBhsnB,KAC9B,IAAMwD,EAASipnB,GAAqBzsnB,KAAMjC,OAAI4J,GAC9C05mB,GAAY2K,gBAAkB2D,EAC9B3vnB,KAAKsvnB,YAAa,EAClBtvnB,KAAKqvnB,iBAAkB,EACnBrvnB,KAAKmvnB,aAELvC,GAAe5snB,MAEfssnB,GAAkB9onB,IAClBxD,KAAK0vnB,6BAA6BlsnB,EAAO+onB,OAO7C/K,KACH,EAAAz5mB,EAED2nnB,6BAAA,SAA6BrwnB,cACzB,GAAIW,KAAKivnB,cACLjvnB,KAAKivnB,cAAc5vnB,EAAOW,UAD9B,CAKA,GAAIqhnB,GAAYqL,uBACZ,MAAMrtnB,EAGV,IAAMjF,EAC0G,6BAC7E4F,KAAI,IAClCqhnB,GAAYqH,wBACbrsnB,QAAQgD,MAAMjF,EAASiF,GAa3BginB,GAAY+M,4BAA4B1tnB,SAAQ,SAAAojB,GAAC,OAAIA,EAAEzkB,EAAO0H,MACjE,EAAAgB,EAEDwkC,QAAA,WACSvsC,KAAKmvnB,cACNnvnB,KAAKmvnB,aAAc,EACdnvnB,KAAKsvnB,aAENnO,KACAyL,GAAe5snB,MACfwhnB,MAGX,EAAAz5mB,EAED6nnB,aAAA,WACI,IAAMvrmB,EAAIrkB,KAAKusC,QAAQzvC,KAAKkD,MAE5B,OADAqkB,EAAE67lB,IAASlgnB,KACJqkB,CACV,EAAAtc,EAEDzK,SAAA,WACI,MAAO,YAAY0C,KAAKognB,MAAK,GAChC,EAAAr4mB,EAED8nnB,MAAA,SAAMC,QAAAA,IAAAA,IAAAA,GAA2B,cCxM7BvR,GAAI,iDAEmB,IAA3B,IAAIuR,GAAkB,EAAK,mBAJNlynB,EAAW,aAAAyX,EAAAA,EAAAA,EAAAA,EAAAA,IAAXzX,EAAW,GAAAka,UAAAA,GAKK,mBAA1Bla,EAAKA,EAAK+C,OAAS,KAC1BmvnB,EAAkBlynB,EAAKgwD,OAE3B,IAAMm9jB,EAAagF,GAAgBnynB,GACnC,IAAKmtnB,EACD,OAAOxM,GAAI,iJAIXwM,EAAWE,aAAeb,GAAUc,MACpC7unB,QAAQm3D,IAAG,iBAAkBu3jB,EAAW3K,MAAK,qBAEjD2K,EAAWE,WAAa6E,EAAkB1F,GAAU4F,MAAQ5F,GAAU6F,GAC1E,CDyLQJ,CAAM7vnB,KAAM8vnB,EACf,IA7JgB,GA+KrB,IAEII,GAA8C,SAAApsmB,GAAC,OAAIA,GAAG,EAE1D,SAAgBgrmB,KAERzN,GAAYwK,QAAU,GAAKxK,GAAY4M,oBAG3CiC,GAAkBC,GACtB,CAEA,SAASA,KACL9O,GAAY4M,oBAAqB,EAOjC,IANA,IAAMmC,EAAe/O,GAAY2M,iBAC7BqC,EAAa,EAKVD,EAAazvnB,OAAS,GAAG,CApBJ,QAqBlB0vnB,IACFh0nB,QAAQgD,MAG+E,6BAChD+wnB,EAAa,IAEpDA,EAAa/unB,OAAO,IAGxB,IADA,IAAIivnB,EAAqBF,EAAa/unB,OAAO,GACpCsH,EAAI,EAAGqb,EAAIssmB,EAAmB3vnB,OAAQgI,EAAIqb,EAAGrb,IAClD2nnB,EAAmB3nnB,GAAG8mnB,eAG9BpO,GAAY4M,oBAAqB,CACrC,CAEA,IAAasC,GAAalR,GAA0B,WAAY0P,IE7PzD,IAAMyB,GAAS,SAETC,GAAa,aAGpBC,GAAsB,mBAEtBC,GAAmBlO,GAAuB+N,IAC1CI,GAAwBnO,GAPF,eAOuC,CAC/Dv3O,OAAO,IAEL2lP,GAAuBpO,GAAuBgO,GAAY,CAC5DlO,YAAY,IAEVuO,GAA4BrO,GAXF,mBAW2C,CACvEF,YAAY,EACZr3O,OAAO,IAgBX,SAAS6lP,GAAoBxO,GA4BzB,OA3B4B,SAAgBnnc,EAAMu6W,GAE9C,OAAI9me,GAAWusH,GACJ0vP,GAAa1vP,EAAKhiL,MAAQs3nB,GAAqBt1c,EAAMmnc,GAG5D1zjB,GAAW8me,GACJ7qH,GAAa1vP,EAAMu6W,EAAM4sF,GAGhCvD,GAAYrpF,GACLmqF,GAAgB1kc,EAAMu6W,EAAM4sF,EAAasO,GAAuBF,IAGvE3R,GAAY5jc,GACLwkc,GACH6C,GAAuBF,EAAakO,GAAaD,GAAQ,CACrDp3nB,KAAMgiL,EACNmnc,WAAAA,UAKR,CAGW,CAEvB,CAEA,IAAa18lB,GAAyBkrmB,IAAoB,GAC1D/ynB,OAAOmH,OAAO0gB,GAAQ8qmB,IACtB,IAAapO,GAA6BwO,IAAoB,GAM9D,SAAgBC,GAAejznB,GAC3B,OAAOwoK,GAAcxoK,EAAG3E,MAA6B,EAAO2E,EAAIiC,UAAM2H,EAC1E,CAEA,SAAgB4sX,GAASj0W,GACrB,OAAOuuC,GAAWvuC,KAAiC,IAAvBA,EAAMknmB,YACtC,CCtDA,SAAgBqF,GACZ7vkB,EACA+mF,gBAAAA,IAAAA,IAAAA,EAAwB46e,IAWxB,IAGIsS,EAHE73nB,EACQ,OADJ,EACF,OADE,EACN2qI,QAAI,EAAJmtf,EAAM93nB,MAAI+3nB,EAAgE,UAI9E,IAHiBptf,EAAK4lO,YAAc5lO,EAAK/2G,MAKrCikmB,EAAW,IAAIlC,GACX31nB,GACA,WACI4G,KAAKo+f,MAAMgzH,EACd,GACDrtf,EAAK87X,QACL97X,EAAKstf,wBAEN,CACH,IAAM1nR,EAAY2nR,GAA2Bvtf,GAEzCyrf,GAAc,EAElByB,EAAW,IAAIlC,GACX31nB,GACA,WACSo2nB,IACDA,GAAc,EACd7lR,GAAU,WACN6lR,GAAc,EACTyB,EAAS9B,aACV8B,EAAS7yH,MAAMgzH,EAEtB,IAER,GACDrtf,EAAK87X,QACL97X,EAAKstf,oBAIb,SAASD,IACLp0kB,EAAKi0kB,GAIT,OADAA,EAAS1B,YACF0B,EAASrB,cACpB,CDdA5xnB,OAAOmH,OAAOo9mB,GAAYsO,IAE1BhrmB,GAAOqlX,MAAQ00O,GAA0BgR,IACzCrO,GAAWr3O,MAAQ00O,GAA0BkR,ICkB7C,IAAM11F,GAAM,SAACt3gB,GAAS,OAAKA,GAAG,EAE9B,SAASwtmB,GAA2Bvtf,GAChC,OAAOA,EAAK4lO,UACN5lO,EAAK4lO,UACL5lO,EAAK/2G,MACL,SAAClJ,GAAS,OAAKyR,WAAWzR,EAAGigH,EAAK/2G,QAClCougB,EACV,CpB/FA,IAAM2mF,GAAqB,OAqC3B,SAAgBC,GAAmB1hmB,EAAOq1gB,EAAMgD,GAC5C,OAAOmpF,GArCkB,QAqCkBxhmB,EAAOq1gB,EAAMgD,EAC5D,CAEA,SAASmpF,GAAcp/iB,EAAwBpiD,EAAOq1gB,EAAMgD,GACxD,IAAMkpF,EACc,oBAATlpF,EAAsB44F,GAAQjxmB,EAAOq1gB,GAAS47F,GAAQjxmB,GAC3Dq8e,EAAK9tc,GAAW8pe,GAAQA,EAAOhD,EAC/B67F,EAAkB9ujB,EAAI,IAQ5B,OANIm/iB,EAAK2P,GACL3P,EAAK2P,GAAezjlB,IAAI4ud,GAExBklH,EAAK2P,GAAgB,IAAIzynB,IAAY,CAAC49f,IAGnC,WACH,IAAM80H,EAAgB5P,EAAK2P,GACvBC,IACAA,EAAa,OAAQ90H,GACM,IAAvB80H,EAAc5jnB,aACPg0mB,EAAK2P,GAGvB,CACL,CqBxEA,IACME,GAAS,SAIf,SAAgB5+lB,GAAU11B,IAiBa,IAA/BA,EAAQu0nB,oBLwKhB,WASI,IAPItQ,GAAY2M,iBAAiBrtnB,QAC7B0gnB,GAAYwK,SACZxK,GAAY4M,qBAEZ1P,GAAI,IAERmQ,IAAgB,EACZD,GAAqB,CACrB,IAAIv0nB,EAASuiB,KACwB,MAA/BviB,EAAOy0nB,sBACTz0nB,EAAO00nB,mBAAgBjnnB,GAE3B05mB,GAAc,IAAIwM,GAE1B,CKvLQ8D,GAEJ,IAAQzL,EAA+B9onB,EAA/B8onB,WAAYgI,EAAmB9wnB,EAAnB8wnB,eAYpB,QAXmBvmnB,IAAfu+mB,IACA7E,GAAY6E,WACRA,IAAewL,IA5Bb,UA8BIxL,GAEiB,qBAAVrnnB,OAEF,gBAAfqnnB,IACA7E,GAAYmN,eAAgB,QAET7mnB,IAAnBumnB,EAA8B,CAC9B,IAAM90H,EAAK80H,IAAmBwD,GAASA,GApC9B,aAoCuCxD,EAChD7M,GAAY6M,eAAiB90H,EAC7BioH,GAAY4G,mBAA2B,IAAP7uH,GAAeA,IAAOs4H,GAEzD,CACG,2BACA,6BACA,6BACA,yBACA,mBACFhxnB,SAAQ,SAAA4B,GACFA,KAAOlF,IACPiknB,GAAY/+mB,KAASlF,EAAQkF,GAEpC,IACD++mB,GAAYuM,iBAAmBvM,GAAYkN,2BAMvCnxnB,EAAQ8ynB,mBJ8MhB,SAAqCnynB,GACjC,IAAM6znB,EAAgB1B,GACtBA,GAAoB,SAAApsmB,GAAC,OAAI/lB,GAAG,kBAAM6znB,EAAc9tmB,MACpD,CIhNQ+tmB,CAAqBz0nB,EAAQ8ynB,kBAErC,UChDgB3J,GACZ5umB,EACA2lB,EACAw0lB,EACA10nB,GAoBA,IAAM20nB,EAAcvtb,GAA0BlnK,GAExCullB,EAAsC2D,GAAmB7umB,EAAQva,GAAS8inB,IAChFiB,KACA,IACIlyH,GAAQ8iI,GAAarxnB,SAAQ,SAAA4B,GACzBugnB,EAAID,QACAtgnB,EACAyvnB,EAAYzvnB,IAEXwvnB,MAAqBxvnB,KAAOwvnB,IAAcA,EAAYxvnB,IAE9D,IARL,QAUIk/mB,KAEJ,OAAO7pmB,CACX,UC7CgBq6mB,GAAkB1xmB,EAAYnT,GAC1C,OAAO8knB,GAAqBV,GAAQjxmB,EAAOnT,GAC/C,CAEA,SAAS8knB,GAAqBtnnB,GAC1B,IAuBe+iD,EAvBTlqD,EAA0B,CAC5BpK,KAAMuR,EAAKy1mB,OAKf,OAHIz1mB,EAAK2/mB,YAAc3/mB,EAAK2/mB,WAAW3pnB,OAAS,IAC5C6C,EAAOgygB,cAmBI9nd,EAnBkB/iD,EAAK2/mB,WAoB/BzlnB,MAAM2E,KAAK,IAAIzK,IAAI2uD,KApBwB3pD,IAAIkunB,KAE/CzunB,CACX,CCVA,IAAI0unB,GAAc,EAElB,SAAgBC,KACZnynB,KAAK5F,QAAU,gBACnB,CACA+3nB,GAAsBnqnB,UAAYhK,OAAOwS,OAAOjW,MAAMyN,WAetD,IAAMoqnB,GAAiBtO,GAAqB,QACtCuO,GAAsBvO,GAAqB,aAAc,CAAE54O,OAAO,IAE3D0vF,GAAa58d,OAAOmH,QAC7B,SAAci2K,EAAMu6W,GAEhB,GAAIqpF,GAAYrpF,GACZ,OAAOmqF,GAAgB1kc,EAAMu6W,EAAMy8F,IAMvC,IAAMr/lB,EAAYqoJ,EACZhiL,EAAO25B,EAAU35B,MAAQ,iBAGzBgjI,EAAM,WACR,IAIIk2f,EAJEC,EAAMvynB,KACNpC,EAAOka,UACPs1mB,IAAU8E,GACVzmF,EAAM5lhB,GAAUzsB,EAAI,aAAag0nB,EAAK,UAAWr6lB,GAAWhb,MAAMw6mB,EAAK30nB,GAEzEqrkB,OAAsDthkB,EAEpD2V,EAAU,IAAI3e,SAAQ,SAAUC,EAASY,GAC3C,IAAIgznB,EAAS,EAGb,SAASC,EAAYr2f,GAEjB,IAAIwkX,EADJqoF,OAAiBthkB,EAEjB,IACIi5e,EAAM/6d,GACCzsB,EAAI,aAAag0nB,EAAK,YAAYoF,IACrC/mF,EAAItgiB,MACN1M,KAAKgtiB,EAAKrva,GACd,MAAOnzH,GACL,OAAOzJ,EAAOyJ,GAGlBkC,EAAKy1e,GAGT,SAAS8xI,EAAWtznB,GAEhB,IAAIwhf,EADJqoF,OAAiBthkB,EAEjB,IACIi5e,EAAM/6d,GACCzsB,EAAI,aAAag0nB,EAAK,YAAYoF,IACrC/mF,EAAG,OACLhtiB,KAAKgtiB,EAAKrsiB,GACd,MAAO6J,GACL,OAAOzJ,EAAOyJ,GAElBkC,EAAKy1e,GAGT,SAASz1e,EAAKy1e,GACV,IAAI/xb,GAAc,MAAH+xb,OAAG,EAAHA,EAAK9if,MAKpB,OAAI8if,EAAIhyb,KACGhwD,EAAQgif,EAAI1if,QAEvB+qkB,EAAiBtqkB,QAAQC,QAAQgif,EAAI1if,QACdJ,KAAK20nB,EAAaC,GAPrC9xI,EAAI9if,KAAKqN,EAAM3L,GAlCvB8ynB,EAAW9ynB,EA4CXiznB,OAAY9qnB,EACf,IAmBD,OAjBA2V,EAAQ0jC,OAASn7B,GAAUzsB,EAAI,aAAag0nB,EAAK,aAAa,WAC1D,IACQnkD,GACA0pD,GAAc1pD,GAGlB,IAAM7sc,EAAMqva,EAAG,YAAS9jiB,GAElBirnB,EAAiBj0nB,QAAQC,QAAQw9H,EAAIl+H,OAC3C00nB,EAAe90nB,KAAKgkB,GAAMA,IAC1B6wmB,GAAcC,GAEdN,EAAS,IAAIH,IACf,MAAOlpnB,GACLqpnB,EAASrpnB,GAEhB,IACMqU,CACV,EAED,OADA8+G,EAAI8nf,YAAa,EACV9nf,CACH,GACRg2f,IAKJ,SAASO,GAAcr1mB,GACfuxC,GAAWvxC,EAAQ0jC,SACnB1jC,EAAQ0jC,QAEhB,CAYA,SAAgBshkB,GAAOvknB,GACnB,OAA0B,KAAjB,MAAFA,OAAE,EAAFA,EAAImmnB,WACf,CC7IA,SAAS2O,GAAc30nB,EAAOiP,GAC1B,QAAKjP,SAGYyJ,IAAbwF,IAMIm4mB,GAAmBpnnB,IACZA,EAAMginB,IAAO4S,QAAQn5nB,IAAIwT,GAMpCm4mB,GAAmBpnnB,MACjBA,EAAMginB,KACRuB,GAAOvjnB,IACPqynB,GAAWrynB,IACX6unB,GAAgB7unB,GAExB,CAEA,SAAgBkknB,GAAalknB,GAMzB,OAAO20nB,GAAc30nB,EACzB,CChCA,SAASoS,GAAYvM,EAAoBzB,EAAQpE,GAE7C,OADA6F,EAAI5K,IAAImJ,EAAKpE,GACNA,CACX,CAEA,SAAS60nB,GAAWxrlB,EAAQyrlB,GACxB,GACc,MAAVzrlB,GACkB,kBAAXA,GACPA,aAAkBzkC,OACjBs/mB,GAAa76kB,GAEd,OAAOA,EAGX,GAAI4ilB,GAAkB5ilB,IAAWwllB,GAAgBxllB,GAC7C,OAAOwrlB,GAAWxrlB,EAAO3tC,MAAOo5nB,GAEpC,GAAIA,EAAcr5nB,IAAI4tC,GAClB,OAAOyrlB,EAAcp5nB,IAAI2tC,GAE7B,GAAIg+kB,GAAkBh+kB,GAAS,CAC3B,IAAM60F,EAAM9rH,GAAM0inB,EAAezrlB,EAAQ,IAAI1iC,MAAM0iC,EAAO5mC,SAI1D,OAHA4mC,EAAO7mC,SAAQ,SAACxC,EAAOk0D,GACnBgqE,EAAIhqE,GAAO2gkB,GAAW70nB,EAAO80nB,EAChC,IACM52f,EAEX,GAAIqpf,GAAgBl+kB,GAAS,CACzB,IAAM60F,EAAM9rH,GAAM0inB,EAAezrlB,EAAQ,IAAIxoC,KAI7C,OAHAwoC,EAAO7mC,SAAQ,SAAAxC,GACXk+H,EAAIruF,IAAIgllB,GAAW70nB,EAAO80nB,GAC7B,IACM52f,EAEX,GAAIopf,GAAgBj+kB,GAAS,CACzB,IAAM60F,EAAM9rH,GAAM0inB,EAAezrlB,EAAQ,IAAIruC,KAI7C,OAHAquC,EAAO7mC,SAAQ,SAACxC,EAAOoE,GACnB85H,EAAIjjI,IAAImJ,EAAKywnB,GAAW70nB,EAAO80nB,GAClC,IACM52f,CACV,CAEG,IAAMA,EAAM9rH,GAAM0inB,EAAezrlB,EAAQ,CAAC,GAM1C,OCyHR,SAA2BpyB,GACvB,GAAImwmB,GAAmBnwmB,GACnB,OAAQA,EAAmC+qmB,IAAO+S,WAEtD1U,GAAI,GACR,CDnIQ2U,CAAW3rlB,GAAQ7mC,SAAQ,SAAC4B,GACpB+pc,GAAgB96B,qBAAqB9ya,KAAK8oC,EAAQjlC,KAClD85H,EAAI95H,GAAOywnB,GAAWxrlB,EAAOjlC,GAAM0wnB,GAE1C,IACM52f,CAEf,CAQA,SAAgB+2f,GAAQ5rlB,EAAWnqC,GAI/B,OAAO21nB,GAAWxrlB,EAAQ,IAAIruC,IAClC,CRnDA,SAAS62nB,GAAgBnynB,GACrB,OAAQA,EAAK+C,QACT,KAAK,EACD,OAAO0gnB,GAAYyG,mBACvB,KAAK,EACD,OAAOyJ,GAAQ3znB,EAAK,IACxB,KAAK,EACD,OAAO2znB,GAAQ3znB,EAAK,GAAIA,EAAK,IAEzC,CUzBA,SAAgBg1iB,GAAe/shB,EAAiBgxb,QAAO,IAAPA,IAAAA,OAAUlvc,GACtDw5mB,KACA,IACI,OAAOt7lB,EAAO9N,MAAM8+b,GADxB,QAGI2qK,KAER,CnBHA,SAAS4R,GAAOz7mB,GACZ,OAAOA,EAAOuomB,GAClB,CesHAtlJ,GAAK1vF,MAAQ00O,GAA0ByS,IflHvC,IAAM1L,GAAsC,CACxChtnB,IAAG,SAACge,EAA6Bve,GAM7B,OAAOg6nB,GAAOz7mB,GAAQ07mB,KAAKj6nB,EAC9B,EACDQ,IAAG,SAAC+d,EAA6Bve,GAC7B,OAAOg6nB,GAAOz7mB,GAAQ27mB,KAAKl6nB,EAC9B,EACDD,IAAG,SAACwe,EAA6Bve,EAAmB8E,SAChD,QAAK8gnB,GAAY5lnB,KAS4B,OAA7C,EAAOg6nB,GAAOz7mB,GAAQ47mB,KAAKn6nB,EAAM8E,GAAO,KAAKs1nB,EAChD,EACDC,eAAc,SAAC97mB,EAA6Bve,SAMxC,QAAK4lnB,GAAY5lnB,KAIwB,OAAzC,EAAOg6nB,GAAOz7mB,GAAQ+7mB,QAAQt6nB,GAAM,KAAKu6nB,EAC5C,EACD11nB,eAAc,SACV0Z,EACAve,EACA64C,SAQA,OAAuD,OAAvD,EAAOmhlB,GAAOz7mB,GAAQwrmB,gBAAgB/pnB,EAAM64C,KAAW2hlB,CAC1D,EACD3kI,QAAO,SAACt3e,GAMJ,OAAOy7mB,GAAOz7mB,GAAQs7mB,UACzB,EACDY,kBAAiB,SAACl8mB,GACd4mmB,GAAI,eoBrEImL,GAAgBoK,GAC5B,YAAuCnsnB,IAAhCmsnB,EAAc7K,eAA+B6K,EAAc7K,cAActonB,OAAS,CAC7F,CAEA,SAAgBkpnB,GACZiK,EACAhznB,GAEA,IAAMiznB,EAAeD,EAAc7K,gBAAkB6K,EAAc7K,cAAgB,IAEnF,OADA8K,EAAa3znB,KAAKU,GACX08d,IAAK,WACR,IAAMpra,EAAM2hkB,EAAa3ynB,QAAQN,IACpB,IAATsxD,GACA2hkB,EAAa1ynB,OAAO+wD,EAAK,EAEhC,GACL,CAEA,SAAgBu3jB,GACZmK,EACAzkiB,GAEA,IAAMy9hB,EAAQ5E,KACd,IAGI,IADA,IAAM6L,EAAe,GAAH,OAAQD,EAAc7K,eAAiB,IAChDtgnB,EAAI,EAAGqb,EAAI+vmB,EAAapznB,OAAQgI,EAAIqb,KACzCqrE,EAAS0kiB,EAAaprnB,GAAG0mF,MACTA,EAAehqF,MAC3Bk5mB,GAAI,IAEHlvhB,GALuC1mF,KAShD,OAAO0mF,EAZX,QAcIw5hB,GAAaiE,GAErB,UCzCgB7gG,GAAa+nG,GACzB,YAAuCrsnB,IAAhCqsnB,EAAW9K,kBAAkC8K,EAAW9K,iBAAiBvonB,OAAS,CAC7F,CAEA,SAAgBupnB,GAAiB8J,EAAyBlznB,GACtD,IAAMb,EAAY+znB,EAAW9K,mBAAqB8K,EAAW9K,iBAAmB,IAEhF,OADAjpnB,EAAUG,KAAKU,GACR08d,IAAK,WACR,IAAMpra,EAAMnyD,EAAUmB,QAAQN,IACjB,IAATsxD,GACAnyD,EAAUoB,OAAO+wD,EAAK,EAE7B,GACL,CAEA,SAAgBpxD,GAAmBgznB,EAAyB3kiB,GACxD,IAAMy9hB,EAAQ5E,KACVjonB,EAAY+znB,EAAW9K,iBAC3B,GAAKjpnB,EAAL,CAIA,IAAK,IAAI0I,EAAI,EAAGqb,GADhB/jB,EAAYA,EAAU8E,SACQpE,OAAQgI,EAAIqb,EAAGrb,IACzC1I,EAAU0I,GAAG0mF,GAEjBw5hB,GAAaiE,GACjB,CCkBA,IAAMmH,GAAarwmB,OAAO,aAE1B,SAAgBswmB,GACZv8mB,EACAw8mB,EACA/2nB,GAaA,GAAIgqC,GAAczvB,GACd,OAAO4umB,GAAiB5umB,EAAQA,EAAQw8mB,EAAW/2nB,GAGvD,IAAMylnB,EAAsC2D,GAAmB7umB,EAAQva,GAAS8inB,IAIhF,IAAKvomB,EAAOs8mB,IAAa,CACrB,IAAMp4jB,EAAQ79D,OAAOolD,eAAezrC,GAC9B3Y,EAAO,IAAID,IAAG,UAAKkwf,GAAQt3e,GAAYs3e,GAAQpzb,KACrD78D,EAAI,OAAQ,eACZA,EAAI,OAAQkhnB,IACZf,GAActjjB,EAAOo4jB,GAAYj1nB,GAGrCminB,KACA,IACIxpmB,EAAOs8mB,IAAYvznB,SAAQ,SAAA4B,GAAG,OAC1BugnB,EAAIF,MACArgnB,GAEC6xnB,MAAmB7xnB,KAAO6xnB,IAAYA,EAAU7xnB,QAL7D,QASIk/mB,KAEJ,OAAO7pmB,CACX,CChEA,IAAMy8mB,GAAS,SACFv8hB,GAAS,SAiDhBw8hB,GAAa,CACfz6nB,IAAG,SAAC+d,EAAQve,GACR,IAAMypnB,EAAqClrmB,EAAOuomB,IAClD,OAAI9mnB,IAAS8mnB,GACF2C,EAEE,WAATzpnB,EACOypnB,EAAIyR,kBAEK,kBAATl7nB,GAAsBuiE,MAAMviE,GAGnCsmnB,GAAQ6U,GAAiBn7nB,GAClBm7nB,GAAgBn7nB,GAEpBue,EAAOve,GALHypnB,EAAIyQ,KAAKx7lB,SAAS1+B,GAMhC,EACDD,IAAG,SAACwe,EAAQve,EAAM8E,GACd,IAAM2knB,EAAqClrmB,EAAOuomB,IAUlD,MATa,WAAT9mnB,GACAypnB,EAAI2R,gBAAgBt2nB,GAEJ,kBAAT9E,GAAqBuiE,MAAMviE,GAClCue,EAAOve,GAAQ8E,EAGf2knB,EAAI0Q,KAAKz7lB,SAAS1+B,GAAO8E,IAEtB,CACV,EACD21nB,kBAAiB,WACbtV,GAAI,MAICkW,GAA6B,WAYtC,WACIr7nB,EACAqrnB,EACOiQ,EACAC,QAHH,IAAJv7nB,IAAAA,EAAoD,mBAAiB,KAE9Ds7nB,YAAAA,OACAC,iBAAAA,OAbXC,WAAK,OACI9B,QAAiB,GAAE,KAC5B7J,mBAAa,OACbC,sBAAgB,OAChB2L,eAAS,OACTzL,cAAQ,OACR9F,YAAM,OACNwR,iBAAmB,EAKR,KAAAJ,OAAAA,EACA,KAAAC,YAAAA,EAEP30nB,KAAK40nB,MAAQ,IAAIzU,GAAK/mnB,GACtB4G,KAAK60nB,UAAY,SAACE,EAAMC,GAAI,OACxBvQ,EAASsQ,EAAMC,EAAgC,wBACtD,kBAmQA,OAnQAjtnB,EAEDktnB,cAAA,SAAc/2nB,GACV,YAAsByJ,IAAlB3H,KAAKopnB,SACEppnB,KAAKopnB,SAASlrnB,GAElBA,CACV,EAAA6J,EAEDmtnB,eAAA,SAAev/lB,GACX,YAAsBhuB,IAAlB3H,KAAKopnB,UAA0BzzlB,EAAOh1B,OAAS,EACxCg1B,EAAO5xB,IAAI/D,KAAKopnB,UAEpBzzlB,CACV,EAAA5tB,EAED6hnB,WAAA,SAAW9onB,GACP,OAAO+onB,GAAmE7pnB,KAAMc,EACnF,EAAAiH,EAED+hnB,SAAA,SACItpnB,EACAupnB,GAeA,YAfe,IAAfA,IAAAA,GAAkB,GAEdA,GACAvpnB,EAA4B,CACxBwpnB,eAAgB,QAChBrklB,OAAQ3lC,KAAKsjnB,OACb2G,gBAAiBjqnB,KAAK40nB,MAAMxU,MAC5B/6mB,KAAM,SACNlE,MAAO,EACPosL,MAAOvtL,KAAK8ynB,QAAQ/tnB,QACpBu0S,WAAYt5S,KAAK8ynB,QAAQnynB,OACzB2sL,QAAS,GACT6nc,aAAc,IAGfjL,GAAiBlqnB,KAAMQ,EACjC,EAAAuH,EAEDusnB,gBAAA,WAEI,OADAt0nB,KAAK40nB,MAAM3T,iBACJjhnB,KAAK8ynB,QAAQnynB,MACvB,EAAAoH,EAEDysnB,gBAAA,SAAgBY,IACa,kBAAdA,GAA0Bz5jB,MAAMy5jB,IAAcA,EAAY,IACjE7W,GAAI,iBAAmB6W,GAE3B,IAAIC,EAAgBr1nB,KAAK8ynB,QAAQnynB,OACjC,GAAIy0nB,IAAcC,EAEX,GAAID,EAAYC,EAAe,CAElC,IADA,IAAMvia,EAAW,IAAIjuN,MAAMuwnB,EAAYC,GAC9B1snB,EAAI,EAAGA,EAAIysnB,EAAYC,EAAe1snB,IAC3CmqN,EAASnqN,QAAKhB,EAElB3H,KAAKs1nB,iBAAiBD,EAAe,EAAGvia,EAC3C,MACG9yN,KAAKs1nB,iBAAiBF,EAAWC,EAAgBD,EAExD,EAAArtnB,EAEDwtnB,mBAAA,SAAmBC,EAAmBv0iB,GAC9Bu0iB,IAAcx1nB,KAAK80nB,kBACnBvW,GAAI,IAERv+mB,KAAK80nB,kBAAoB7ziB,EACrBjhF,KAAK20nB,aAAe1ziB,EAAQ,GAC5Bw0iB,GAAmBD,EAAYv0iB,EAAQ,EAE9C,EAAAl5E,EAEDutnB,iBAAA,SAAiBn0nB,EAAeu0nB,EAAsB5ia,cACd9yN,KAAK40nB,MACzC,IAAMj0nB,EAASX,KAAK8ynB,QAAQnynB,OAsB5B,QApBcgH,IAAVxG,EACAA,EAAQ,EACDA,EAAQR,EACfQ,EAAQR,EACDQ,EAAQ,IACfA,EAAQoI,KAAKkuB,IAAI,EAAG92B,EAASQ,IAI7Bu0nB,EADqB,IAArB59mB,UAAUnX,OACIA,EAASQ,OACAwG,IAAhB+tnB,GAA6C,OAAhBA,EACtB,EAEAnsnB,KAAKkuB,IAAI,EAAGluB,KAAKsZ,IAAI6ymB,EAAa/0nB,EAASQ,SAG5CwG,IAAbmrN,IACAA,EAAW4rZ,IAGXgL,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAuC3pnB,KAAa,CAC/D2lC,OAAQ3lC,KAAKsjnB,OACbj+mB,KAAM+unB,GACNjznB,MAAAA,EACAg0nB,aAAcO,EACdnoc,MAAOulC,IAEX,IAAKzjI,EACD,OAAOqvhB,GAEXgX,EAAcrmiB,EAAO8liB,aACrBria,EAAWzjI,EAAOk+F,MAKtB,GAFAulC,EACwB,IAApBA,EAASnyN,OAAemyN,EAAWA,EAAS/uN,KAAI,SAAAqgB,GAAC,OAAIrd,EAAK8tnB,UAAUzwmB,OAAGzc,MACvE3H,KAAK20nB,YAAwB,CAC7B,IAAMgB,EAAc7ia,EAASnyN,OAAS+0nB,EACtC11nB,KAAKu1nB,mBAAmB50nB,EAAQg1nB,GAEpC,IAAMv5f,EAAMp8H,KAAK41nB,uBAAuBz0nB,EAAOu0nB,EAAa5ia,GAK5D,OAHoB,IAAhB4ia,GAAyC,IAApB5ia,EAASnyN,QAC9BX,KAAK61nB,mBAAmB10nB,EAAO2xN,EAAU12F,GAEtCp8H,KAAKk1nB,eAAe94f,EAC9B,EAAAr0H,EAED6tnB,uBAAA,SAAuBz0nB,EAAeu0nB,EAAqB5ia,GAChB,MAAvC,GAAIA,EAASnyN,OAvOU,IAwOnB,OAAO,EAAAX,KAAK8ynB,SAAQzxnB,OAAM0W,MAAA+9mB,EAAA,CAAC30nB,EAAOu0nB,GAAWzlnB,OAAK6iN,IAGlD,IAAM12F,EAAMp8H,KAAK8ynB,QAAQ/tnB,MAAM5D,EAAOA,EAAQu0nB,GAE1Cv8U,EAAWn5S,KAAK8ynB,QAAQ/tnB,MAAM5D,EAAQu0nB,GAE1C11nB,KAAK8ynB,QAAQnynB,QAAUmyN,EAASnyN,OAAS+0nB,EACzC,IAAK,IAAI/snB,EAAI,EAAGA,EAAImqN,EAASnyN,OAAQgI,IACjC3I,KAAK8ynB,QAAQ3xnB,EAAQwH,GAAKmqN,EAASnqN,GAEvC,IAAK,IAAIA,EAAI,EAAGA,EAAIwwS,EAASx4S,OAAQgI,IACjC3I,KAAK8ynB,QAAQ3xnB,EAAQ2xN,EAASnyN,OAASgI,GAAKwwS,EAASxwS,GAEzD,OAAOyzH,CAEd,EAAAr0H,EAEDgunB,wBAAA,SAAwB50nB,EAAe0nC,EAAe+xH,GAClD,IAAMmud,GAAa/onB,KAAK00nB,SCvRrBxrnB,EDwRG2phB,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,GAAUk2F,EACH,CACGiB,eAAgB,QAChBrklB,OAAQ3lC,KAAKsjnB,OACbj+mB,KAAMwyF,GACNoyhB,gBAAiBjqnB,KAAK40nB,MAAMxU,MAC5Bj/mB,MAAAA,EACA0nC,SAAAA,EACA+xH,SAAAA,GAEJ,KAOV56J,KAAK40nB,MAAM1T,gBACPruF,GACA7xhB,GAAgBhB,KAAMqvF,EAK7B,EAAAtnF,EAED8tnB,mBAAA,SAAmB10nB,EAAeosL,EAAcD,GAC5C,IAAMy7b,GAAa/onB,KAAK00nB,SCrTrBxrnB,EDsTG2phB,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,GAAUk2F,EACH,CACGiB,eAAgB,QAChBrklB,OAAQ3lC,KAAKsjnB,OACb2G,gBAAiBjqnB,KAAK40nB,MAAMxU,MAC5B/6mB,KAAM+unB,GACNjznB,MAAAA,EACAmsL,QAAAA,EACAC,MAAAA,EACA4nc,aAAc7nc,EAAQ3sL,OACtB24S,WAAY/rH,EAAM5sL,QAEtB,KAKVX,KAAK40nB,MAAM1T,gBAEPruF,GACA7xhB,GAAgBhB,KAAMqvF,EAK7B,EAAAtnF,EAEDurnB,KAAA,SAAKnynB,GACD,KAAInB,KAAK20nB,aAAexznB,GAASnB,KAAK8ynB,QAAQnynB,QAS9C,OADAX,KAAK40nB,MAAM3T,iBACJjhnB,KAAKi1nB,cAAcj1nB,KAAK8ynB,QAAQ3xnB,IARnC9E,QAAQC,KAEsG,8BACtE6E,EAM/C,EAAA4G,EAEDwrnB,KAAA,SAAKpynB,EAAe0nC,GAChB,IAAMlT,EAAS31B,KAAK8ynB,QAKpB,GAJI9ynB,KAAK20nB,aAAexznB,EAAQw0B,EAAOh1B,QAEnC49mB,GAAI,GAAIp9mB,EAAOw0B,EAAOh1B,QAEtBQ,EAAQw0B,EAAOh1B,OAAQ,CAEaX,KAAK40nB,MACzC,IAAMh6d,EAAWjlI,EAAOx0B,GACxB,GAAIuonB,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAuC3pnB,KAAa,CAC/DqF,KAAMwyF,GACNlyD,OAAQ3lC,KAAKsjnB,OACbninB,MAAAA,EACA0nC,SAAAA,IAEJ,IAAKwmD,EACD,OAEJxmD,EAAWwmD,EAAOxmD,UAEtBA,EAAW7oC,KAAK60nB,UAAUhslB,EAAU+xH,MACPA,IAEzBjlI,EAAOx0B,GAAS0nC,EAChB7oC,KAAK+1nB,wBAAwB50nB,EAAO0nC,EAAU+xH,GAErD,KAAM,CAKH,IADA,IAAMk4D,EAAW,IAAIjuN,MAAM1D,EAAQ,EAAIw0B,EAAOh1B,QACrCgI,EAAI,EAAGA,EAAImqN,EAASnyN,OAAS,EAAGgI,IACrCmqN,EAASnqN,QAAKhB,EAElBmrN,EAASA,EAASnyN,OAAS,GAAKkoC,EAChC7oC,KAAKs1nB,iBAAiB3/lB,EAAOh1B,OAAQ,EAAGmyN,GAE/C,IAxRqC,GA2R1C,SAAgBszZ,GACZH,EACAxB,EACArrnB,EACA48nB,QADI,IAAJ58nB,IAAAA,EAAoD,wBAC/C,IAAL48nB,IAAAA,GAAQ,GAERlX,KACA,IAAM+D,EAAM,IAAI4R,GAA8Br7nB,EAAMqrnB,EAAUuR,GAAO,GACrE5W,GAAmByD,EAAIiQ,QAAS5S,GAAO2C,GACvC,IAAMtmnB,EAAQ,IAAIsC,MAAMgknB,EAAIiQ,QAASuB,IAErC,GADAxR,EAAIS,OAAS/mnB,EACT0pnB,GAAiBA,EAActlnB,OAAQ,CACvC,IAAMuK,EAAOi9mB,IAAuB,GACpCtF,EAAIyS,iBAAiB,EAAG,EAAGrP,GAC3B0C,GAAqBz9mB,GAEzB,OAAO3O,CACX,CAGA,IAAWg4nB,GAAkB,CACzBptlB,MAAK,WACD,OAAOnnC,KAAKqB,OAAO,EACtB,EAEDO,QAAO,SAACkxN,GACJ,IAAM+vZ,EAAqC7inB,KAAKkgnB,IAChD,OAAO2C,EAAIyS,iBAAiB,EAAGzS,EAAIiQ,QAAQnynB,OAAQmyN,EACtD,EAGDtmK,OAAM,WACF,OAAOxsD,KAAK+E,OACf,EAQD1D,OAAM,SAACF,EAAeu0nB,8BAAyB5ia,EAAe,iCAAfA,EAAe,KAAAh7M,UAAAA,GAC1D,IAAM+qmB,EAAqC7inB,KAAKkgnB,IAChD,OAAQpomB,UAAUnX,QACd,KAAK,EACD,MAAO,GACX,KAAK,EACD,OAAOkinB,EAAIyS,iBAAiBn0nB,GAChC,KAAK,EACD,OAAO0hnB,EAAIyS,iBAAiBn0nB,EAAOu0nB,GAE3C,OAAO7S,EAAIyS,iBAAiBn0nB,EAAOu0nB,EAAa5ia,EACnD,EAEDmja,gBAAe,SAAC90nB,EAAeu0nB,EAAsB5ia,GACjD,OAAQ9yN,KAAKkgnB,IAAyCoV,iBAClDn0nB,EACAu0nB,EACA5ia,EAEP,EAED1yN,KAAI,WACsD,IAAtD,IAAMyinB,EAAqC7inB,KAAKkgnB,IAAM,mBADlDh6jB,EAAY,aAAAujB,EAAAA,EAAAA,EAAAA,EAAAA,IAAZvjB,EAAY,GAAApuC,UAAAA,GAGhB,OADA+qmB,EAAIyS,iBAAiBzS,EAAIiQ,QAAQnynB,OAAQ,EAAGulD,GACrC28jB,EAAIiQ,QAAQnynB,MACtB,EAEDitD,IAAG,WACC,OAAO5tD,KAAKqB,OAAOkI,KAAKkuB,IAAIz3B,KAAKkgnB,IAAO4S,QAAQnynB,OAAS,EAAG,GAAI,GAAG,EACtE,EAEDu3B,MAAK,WACD,OAAOl4B,KAAKqB,OAAO,EAAG,GAAG,EAC5B,EAEDuvE,QAAO,WACmD,IAAtD,IAAMiyiB,EAAqC7inB,KAAKkgnB,IAAM,mBAD/Ch6jB,EAAY,aAAAyjB,EAAAA,EAAAA,EAAAA,EAAAA,IAAZzjB,EAAY,GAAApuC,UAAAA,GAGnB,OADA+qmB,EAAIyS,iBAAiB,EAAG,EAAGpvkB,GACpB28jB,EAAIiQ,QAAQnynB,MACtB,EAEDm6D,QAAO,WAOH,OAJIumjB,GAAYyG,oBACZvJ,GAAI,GAAI,WAEZv+mB,KAAK4B,QAAQ5B,KAAK+E,QAAQ+1D,WACnB96D,IACV,EAEDo5B,KAAI,WAGIiolB,GAAYyG,oBACZvJ,GAAI,GAAI,QAEZ,IAAMtzmB,EAAOjL,KAAK+E,QAGlB,OAFAkG,EAAKmuB,KAAKrhB,MAAM9M,EAAM6M,WACtB9X,KAAK4B,QAAQqJ,GACNjL,IACV,EAEDtC,OAAM,SAACQ,GACH,IAAM2knB,EAAqC7inB,KAAKkgnB,IAC1C9tjB,EAAMywjB,EAAIqS,eAAerS,EAAIiQ,SAAS1xnB,QAAQlD,GACpD,OAAIk0D,GAAO,IACPpyD,KAAKqB,OAAO+wD,EAAK,IACV,KAiCnB,SAAS8jkB,GAAkB93Q,EAAU+3Q,GACQ,oBAA9BtxnB,MAAMmD,UAAUo2W,KACvBm2Q,GAAgBn2Q,GAAY+3Q,EAAY/3Q,GAEhD,CAGA,SAASg4Q,GAAWh4Q,GAChB,OAAO,WACH,IAAMykQ,EAAqC7inB,KAAKkgnB,IAChD2C,EAAI+R,MAAM3T,iBACV,IAAMoV,EAAiBxT,EAAIqS,eAAerS,EAAIiQ,SAC9C,OAAOuD,EAAej4Q,GAAUrmW,MAAMs+mB,EAAgBv+mB,UACzD,CACL,CAGA,SAASw+mB,GAAYl4Q,GACjB,OAAO,SAAU7gX,EAAUs5c,cACjBgsK,EAAqC7inB,KAAKkgnB,IAGhD,OAFA2C,EAAI+R,MAAM3T,iBACa4B,EAAIqS,eAAerS,EAAIiQ,SACxB10Q,IAAU,SAAC5xW,EAASrL,GACtC,OAAO5D,EAASkB,KAAKo4c,EAASrqc,EAASrL,EAAOshN,EACjD,GACJ,CACL,CAGA,SAAS8za,GAAen4Q,GACpB,OAAO,sBACGykQ,EAAqC7inB,KAAKkgnB,IAChD2C,EAAI+R,MAAM3T,iBACV,IAAMoV,EAAiBxT,EAAIqS,eAAerS,EAAIiQ,SAExCv1nB,EAAWua,UAAU,GAI3B,OAHAA,UAAU,GAAK,SAACpT,EAAawwD,EAAc/zD,GACvC,OAAO5D,EAASmH,EAAawwD,EAAc/zD,EAAOkiN,EACrD,EACMgza,EAAej4Q,GAAUrmW,MAAMs+mB,EAAgBv+mB,UACzD,CACL,CA/DAo+mB,GAAkB,SAAUE,IAC5BF,GAAkB,OAAQE,IAC1BF,GAAkB,WAAYE,IAC9BF,GAAkB,UAAWE,IAC7BF,GAAkB,OAAQE,IAC1BF,GAAkB,cAAeE,IACjCF,GAAkB,QAASE,IAC3BF,GAAkB,WAAYE,IAC9BF,GAAkB,iBAAkBE,IAEpCF,GAAkB,QAASI,IAC3BJ,GAAkB,SAAUI,IAC5BJ,GAAkB,OAAQI,IAC1BJ,GAAkB,YAAaI,IAC/BJ,GAAkB,UAAWI,IAC7BJ,GAAkB,UAAWI,IAC7BJ,GAAkB,MAAOI,IACzBJ,GAAkB,OAAQI,IAE1BJ,GAAkB,SAAUK,IAC5BL,GAAkB,cAAeK,IA6CjC,UAAMC,GAAkCnX,GACpC,gCACAoV,IAGJ,SAAgBlP,GAAkBjlmB,GAC9B,OAAOD,GAASC,IAAUk2mB,GAAgCl2mB,EAAM4/lB,IACpE,CEjlBA,IA8EMuW,GAAsB,CAAC,EAEhBC,GAAM,MACNC,GAAS,SAStBC,GA6OKhzmB,OAAO44G,SAAQq6f,GAuIXjzmB,OAAOm4b,YAnXhB,UAAasqK,GAAa,WAUtB,WACI3hS,EACOmwS,EACAzU,mBADAyU,IAAAA,IAAAA,EAA0B1S,SAC1B/B,IAAAA,IAAAA,EAAmD,iBAAe,KADlEyU,eAAAA,OACAzU,WAAQ,OAXlBF,IAASuW,GAAmB,KAC7BK,WAAK,OACLC,aAAO,OACPC,eAAS,OACT/N,mBAAa,OACbC,sBAAgB,OAChBE,cAAQ,EAIG,KAAAyL,UAAAA,EACA,KAAAzU,MAAAA,EAEFvxjB,GAAW31D,MACZqlnB,GAAI,IAERv+mB,KAAKg3nB,UAAYtV,GAA8C,wBAC/D1hnB,KAAK82nB,MAAQ,IAAI59nB,IACjB8G,KAAK+2nB,QAAU,IAAI79nB,IACnB+unB,IAAkB,GAAM,WACpBlhnB,EAAKg4B,MAAM2lT,EACd,IACJ,kBA6VA,OA7VA38U,EAEOsrnB,KAAA,SAAK/wnB,GACT,OAAOtC,KAAK82nB,MAAMn9nB,IAAI2I,EACzB,EAAAyF,EAEDpO,IAAA,SAAI2I,cACA,IAAK++mB,GAAYyG,mBACb,OAAO9nnB,KAAKqznB,KAAK/wnB,GAGrB,IAAIqC,EAAQ3E,KAAK+2nB,QAAQn9nB,IAAI0I,GAC7B,IAAKqC,EAAO,CACR,IAAMsynB,EAAYtynB,EAAQ,IAAIohnB,GAC1B/lnB,KAAKqznB,KAAK/wnB,GACVkgnB,GACkD,sBAClD,GAEJxinB,KAAK+2nB,QAAQ59nB,IAAImJ,EAAK20nB,GACtBjV,GAAmBiV,GAAU,kBAAMx0a,EAAKs0a,QAAL,OAAoBz0nB,MAG3D,OAAOqC,EAAM/K,KAChB,EAAAmO,EAED5O,IAAA,SAAImJ,EAAQpE,GACR,IAAMqyF,EAASvwF,KAAKqznB,KAAK/wnB,GACzB,GAAIonnB,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAsC3pnB,KAAM,CACvDqF,KAAMkrF,EAASsH,GAAS6+hB,GACxB/wlB,OAAQ3lC,KACR6oC,SAAU3qC,EACV9E,KAAMkJ,IAEV,IAAK+sF,EACD,OAAOrvF,KAEX9B,EAAQmxF,EAAOxmD,SAOnB,OALI0nD,EACAvwF,KAAKk3nB,aAAa50nB,EAAKpE,GAEvB8B,KAAKm3nB,UAAU70nB,EAAKpE,GAEjB8B,IACV,EAAA+H,EAAAA,OAED,SAAOzF,cAEH,IADoCtC,KAAKg3nB,UACrCtN,GAAgB1pnB,SACD2pnB,GAAsC3pnB,KAAM,CACvDqF,KAAMsxnB,GACNhxlB,OAAQ3lC,KACR5G,KAAMkJ,IAGN,OAAO,EAGf,GAAItC,KAAKqznB,KAAK/wnB,GAAM,CAChB,IACMuwhB,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,EACM,CACIm3F,eAAgB,MAChBC,gBAAiBjqnB,KAAKognB,MACtB/6mB,KAAMsxnB,GACNhxlB,OAAQ3lC,KACR46J,SAAgB56J,KAAK82nB,MAAMl9nB,IAAI0I,GAAM6mnB,OACrC/vnB,KAAMkJ,GAEV,KAkBV,OAbAswiB,IAAY,iBACRvvV,EAAK2za,UAAU9V,gBACM,OAArB,IAAK6V,QAAQn9nB,IAAI0I,KAAjB,EAAuBknnB,cAAa,GACjBnma,EAAKyza,MAAMl9nB,IAAI0I,GACvBknnB,kBAAa7hnB,GACxB07M,EAAKyza,MAAL,OAAkBx0nB,EACrB,IACGuwhB,GACA7xhB,GAAgBhB,KAAMqvF,IAKnB,EAEX,OAAO,CACV,EAAAtnF,EAEOmvnB,aAAA,SAAa50nB,EAAQumC,GACzB,IAAMw5kB,EAAarinB,KAAK82nB,MAAMl9nB,IAAI0I,GAElC,IADAumC,EAAYw5kB,EAAmBiH,iBAAiBzglB,MAC/Bw4kB,GAAYkI,UAAW,CACpC,IACM12F,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,EACM,CACIm3F,eAAgB,MAChBC,gBAAiBjqnB,KAAKognB,MACtB/6mB,KAAMwyF,GACNlyD,OAAQ3lC,KACR46J,SAAWynd,EAAmB8G,OAC9B/vnB,KAAMkJ,EACNumC,SAAAA,GAEJ,KACN3/B,EAGJm5mB,EAAWmH,aAAa3glB,GACpBgqf,GACA7xhB,GAAgBhB,KAAMqvF,GAMjC,EAAAtnF,EAEOovnB,UAAA,SAAU70nB,EAAQumC,cACc7oC,KAAKg3nB,UACzCpkF,IAAY,iBACFyvE,EAAa,IAAI0D,GACnBl9kB,EACAu8K,EAAKyva,UAC4C,qBACjD,GAEJzva,EAAK0xa,MAAM39nB,IAAImJ,EAAK+/mB,GACpBx5kB,EAAYw5kB,EAAmB8G,OACV,OAArB,IAAK4N,QAAQn9nB,IAAI0I,KAAjB,EAAuBknnB,cAAa,GACpCpka,EAAK4xa,UAAU9V,eAClB,IACD,IACMruF,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,EACM,CACIm3F,eAAgB,MAChBC,gBAAiBjqnB,KAAKognB,MACtB/6mB,KAAMqxnB,GACN/wlB,OAAQ3lC,KACR5G,KAAMkJ,EACNumC,SAAAA,GAEJ,KAINgqf,GACA7xhB,GAAgBhB,KAAMqvF,EAK7B,EAAAtnF,EAEDnO,IAAA,SAAI0I,GACA,OAAItC,KAAKrG,IAAI2I,GACFtC,KAAKi1nB,cAAcj1nB,KAAK82nB,MAAMl9nB,IAAI0I,GAAM1I,OAE5CoG,KAAKi1nB,mBAActtnB,EAC7B,EAAAI,EAEOktnB,cAAA,SAAuC/2nB,GAC3C,YAAsByJ,IAAlB3H,KAAKopnB,SACEppnB,KAAKopnB,SAASlrnB,GAElBA,CACV,EAAA6J,EAED/I,KAAA,WAEI,OADAgB,KAAKg3nB,UAAU/V,iBACRjhnB,KAAK82nB,MAAM93nB,MACrB,EAAA+I,EAED4tB,OAAA,WACI,IAAM37B,EAAOgG,KACPhB,EAAOgB,KAAKhB,OAClB,OAAOo4nB,GAAa,CAChBjsnB,KAAI,WACA,MAAwBnM,EAAKmM,OAArByjD,EAAI,EAAJA,KAAM1wD,EAAK,EAALA,MACd,MAAO,CACH0wD,KAAAA,EACA1wD,MAAO0wD,OAAQjnD,EAAoB3N,EAAKJ,IAAIsE,MAI3D,EAAA6J,EAEDtD,QAAA,WACI,IAAMzK,EAAOgG,KACPhB,EAAOgB,KAAKhB,OAClB,OAAOo4nB,GAAa,CAChBjsnB,KAAI,WACA,MAAwBnM,EAAKmM,OAArByjD,EAAI,EAAJA,KAAM1wD,EAAK,EAALA,MACd,MAAO,CACH0wD,KAAAA,EACA1wD,MAAO0wD,OAAQjnD,EAAqB,CAACzJ,EAAOlE,EAAKJ,IAAIsE,OAIpE,EAAA6J,EAAAA,IAED,WACI,OAAO/H,KAAKyE,SACf,EAAAsD,EAEDrH,QAAA,SAAQnD,EAAyDs5c,GAC7D,IAAK,IAA0B/xL,EAA/B,KAA2B9kR,QAAI,aAAE,eAArBsC,EAAG,KAAEpE,EAAK,KAClBX,EAASkB,KAAKo4c,EAAS34c,EAAOoE,EAAKtC,QAI3C+H,EACAg3B,MAAA,SAAMvX,cAoBF,OAnBIg+lB,GAAgBh+lB,KAChBA,EAAQ,IAAItuB,IAAIsuB,IAEpBorhB,IAAY,WACJxrgB,GAAc5f,GtC5L9B,SAAmCme,GAC/B,IAAM3mC,EAAOhB,OAAOgB,KAAK2mC,GAEzB,IAAK85kB,GACD,OAAOzgnB,EAEX,IAAMmwf,EAAUnxf,OAAOsza,sBAAsB3rY,GAC7C,OAAKwpd,EAAQxuf,OAGN,GAAP,OAAW3B,EAASmwf,EAAQ30d,QAAO,SAAAjC,GAAC,OAAI8za,GAAgB96B,qBAAqB9ya,KAAKknC,EAAQpN,OAF/Ev5B,CAGf,CsCkLgBq4nB,CAAmB7vmB,GAAO9mB,SAAQ,SAAC4B,GAAQ,OACvCkkN,EAAKrtN,IAAImJ,EAAWklB,EAAuBllB,OAExCuC,MAAMC,QAAQ0iB,GACrBA,EAAM9mB,SAAQ,gBAAE4B,EAAG,KAAEpE,EAAK,YAAMsoN,EAAKrtN,IAAImJ,EAAKpE,MACvCqhnB,GAAS/3lB,IACZA,EAAM6f,cAAgBnuC,KACtBqlnB,GAAI,GAAI/2lB,GAEZA,EAAM9mB,SAAQ,SAACxC,EAAOoE,GAAG,OAAKkkN,EAAKrtN,IAAImJ,EAAKpE,OAC3B,OAAVspB,QAA4B7f,IAAV6f,GACzB+2lB,GAAI,GAAI/2lB,EAEf,IACMxnB,IACV,EAAA+H,EAEDo/B,MAAA,sBACIyrgB,IAAY,WACR+6E,IAAU,WACN,IAAK,IAAwB2J,EAA7B,KAAkB79F,EAAKz6hB,UAAM,aAAE,KAApBsD,EAAG,QACVm3hB,EAAI,OAAQn3hB,GAEnB,GACJ,GACJ,EAAAyF,EAEDnG,QAAA,SAAQ+zB,cA2EJ,OApEAi9gB,IAAY,WASR,IAPA,IAOmC2kF,EAP7BC,EA4GlB,SAAsBC,GAClB,GAAIlY,GAASkY,IAAkBjS,GAAgBiS,GAC3C,OAAOA,EACJ,GAAI5ynB,MAAMC,QAAQ2ynB,GACrB,OAAO,IAAIv+nB,IAAIu+nB,GACZ,GAAIrwlB,GAAcqwlB,GAAgB,CACrC,IAAM1znB,EAAM,IAAI7K,IAChB,IAAK,IAAMoJ,KAAOm1nB,EACd1znB,EAAI5K,IAAImJ,EAAKm1nB,EAAcn1nB,IAE/B,OAAOyB,CACV,CACG,OAAOw6mB,GAAI,GAAIkZ,EAEvB,CA1HmCC,CAAa/hmB,GAC9BgimB,EAAc,IAAIz+nB,IAEpB0+nB,GAA0B,EAI9B,KAAkB39F,EAAK68F,MAAM93nB,UAAM,aAAE,KAA1BsD,EAAG,QAGV,IAAKk1nB,EAAe79nB,IAAI2I,GAGpB,GAFgB23hB,EAAI,OAAQ33hB,GAIxBs1nB,GAA0B,MACvB,CAEH,IAAM15nB,EAAQ+7hB,EAAK68F,MAAMl9nB,IAAI0I,GAC7Bq1nB,EAAYx+nB,IAAImJ,EAAKpE,IAKjC,IAAK,IAA8C25nB,EAAnD,KAA2BL,EAAe/ynB,aAAS,aAAE,eAAzCnC,EAAG,KAAEpE,EAAK,KAEZ45nB,EAAa79F,EAAK68F,MAAMn9nB,IAAI2I,GAIlC,GAFA23hB,EAAK9giB,IAAImJ,EAAKpE,GAEV+7hB,EAAK68F,MAAMn9nB,IAAI2I,GAAM,CAIrB,IAAMpE,EAAQ+7hB,EAAK68F,MAAMl9nB,IAAI0I,GAC7Bq1nB,EAAYx+nB,IAAImJ,EAAKpE,GAEhB45nB,IAEDF,GAA0B,IAKtC,IAAKA,EACD,GAAI39F,EAAK68F,MAAMjpnB,OAAS8pnB,EAAY9pnB,KAEhCoshB,EAAK+8F,UAAU9V,qBAMf,IAJA,IAAM6W,EAAQ99F,EAAK68F,MAAM93nB,OACnBg5nB,EAAQL,EAAY34nB,OACtBi5nB,EAAQF,EAAM5snB,OACd+snB,EAAQF,EAAM7snB,QACV8snB,EAAMrpkB,MAAM,CAChB,GAAIqpkB,EAAM/5nB,QAAUg6nB,EAAMh6nB,MAAO,CAC7B+7hB,EAAK+8F,UAAU9V,gBACf,MAEJ+W,EAAQF,EAAM5snB,OACd+snB,EAAQF,EAAM7snB,OAK1B8uhB,EAAK68F,MAAQa,CAChB,IACM33nB,IACV,EAAA+H,EAODzK,SAAA,WACI,MAAO,wBACV,EAAAyK,EAEDykD,OAAA,WACI,OAAO3nD,MAAM2E,KAAKxJ,KACrB,EAMD+H,EAKA+hnB,SAAA,SAAStpnB,EAAkDupnB,GAIvD,OAAOG,GAAiBlqnB,KAAMQ,EACjC,EAAAuH,EAED6hnB,WAAA,SAAW9onB,GACP,OAAO+onB,GAAoB7pnB,KAAMc,EACpC,EAAAkriB,GAAAA,EAAAA,CAAAA,CAAA1piB,IAAAA,OAAA1I,IA/BD,WAEI,OADAoG,KAAKg3nB,UAAU/V,iBACRjhnB,KAAK82nB,MAAMjpnB,OA6BrB,CA5BAvL,IAAAA,GAAA1I,IAUD,WACI,MAAO,UACV,EArXqB,GAyYf4rnB,GAAkBnG,GAA0B,gBAAiBgH,ICpexE,IAgCM8R,GAAsB,CAAC,EAACvB,GAyPzBhzmB,OAAO44G,SAAQq6f,GAIXjzmB,OAAOm4b,YA7NhB,IAAauqK,GAAa,WAStB,WACI5hS,EACA+/R,EACOrE,QADPqE,IAAAA,IAAAA,EAAyBtC,SAClB/B,IAAAA,IAAAA,EAAmD,iBAAe,KAAlEA,WAAAA,OAXVF,IAASiY,GAAmB,KACrBrB,MAAkB,IAAI/3nB,IAAK,KACnC61nB,WAAK,OACL1L,sBAAgB,OAChBD,mBAAa,OACbG,cAAQ,OACRyL,eAAS,EAKE,KAAAzU,MAAAA,EAEFvxjB,GAAW9vD,MACZw/mB,GAAI,IAERv+mB,KAAK40nB,MAAQlT,GAAW1hnB,KAAKognB,OAC7BpgnB,KAAK60nB,UAAY,SAACE,EAAMC,GAAI,OAAKvQ,EAASsQ,EAAMC,EAAM5U,IAClD17R,GACA1kV,KAAK4B,QAAQ8iV,GAEpB,kBAyMA,OAzMA38U,EAEOktnB,cAAA,SAAuC/2nB,GAC3C,YAAsByJ,IAAlB3H,KAAKopnB,SACEppnB,KAAKopnB,SAASlrnB,GAElBA,CACV,EAAA6J,EAEDo/B,MAAA,sBACIyrgB,IAAY,WACR+6E,IAAU,WACN,IAAK,IAAkC7oW,EAAvC,KAAoB/9Q,EAAK+vnB,MAAMnhmB,YAAQ,aAAE,KAA9Bz3B,EAAK,QACZ6I,EAAI,OAAQ7I,GAEnB,GACJ,GACJ,EAAA6J,EAEDrH,QAAA,SAAQ03nB,EAAwDvhL,GAC5D,IAAK,IAAmBygL,EAAxB,KAAoBt3nB,QAAI,aAAE,KAAf9B,EAAK,QACZk6nB,EAAW35nB,KAAKo4c,EAAS34c,EAAOA,EAAO8B,MAE9C,EAAA+H,EAODgmC,IAAA,SAAI7vC,cAEA,IADoC8B,KAAK40nB,MACrClL,GAAgB1pnB,SACD2pnB,GAAmC3pnB,KAAM,CACpDqF,KAAMqxnB,GACN/wlB,OAAQ3lC,KACR6oC,SAAU3qC,IAGV,OAAO8B,KAKf,IAAKA,KAAKrG,IAAIuE,GAAQ,CAClB00iB,IAAY,WACRnwV,EAAKq0a,MAAM/olB,IAAI00K,EAAKoya,UAAU32nB,OAAOyJ,IACrC86M,EAAKmya,MAAM1T,eACd,IACD,IAAM6H,GAAY7/mB,EACZ2phB,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,EACwB,CACdm3F,eAAgB,MAChBC,gBAAiBjqnB,KAAKognB,MACtB/6mB,KAAMqxnB,GACN/wlB,OAAQ3lC,KACR6oC,SAAU3qC,GAEd,KACN6qnB,EAGAl2F,GACA7xhB,GAAgBhB,KAAMqvF,GAO9B,OAAOrvF,IACV,EAAA+H,EAAAA,OAED,SAAO7J,cACH,GAAIwrnB,GAAgB1pnB,QACD2pnB,GAAmC3pnB,KAAM,CACpDqF,KAAMsxnB,GACNhxlB,OAAQ3lC,KACR46J,SAAU18J,IAGV,OAAO,EAGf,GAAI8B,KAAKrG,IAAIuE,GAAQ,CACjB,IACM20hB,EAAS5G,GAAajshB,MACtBqvF,EACFwjc,EACwB,CACdm3F,eAAgB,MAChBC,gBAAiBjqnB,KAAKognB,MACtB/6mB,KAAMsxnB,GACNhxlB,OAAQ3lC,KACR46J,SAAU18J,GAEd,KAeV,OAVA00iB,IAAY,WACRvvV,EAAKuxa,MAAM1T,gBACX79Z,EAAKyza,MAAL,OAAkB54nB,EACrB,IACG20hB,GACA7xhB,GAAgBhB,KAAMqvF,IAKnB,EAEX,OAAO,CACV,EAAAtnF,EAEDpO,IAAA,SAAIuE,GAEA,OADA8B,KAAK40nB,MAAM3T,iBACJjhnB,KAAK82nB,MAAMn9nB,IAAIqG,KAAKi1nB,cAAc/2nB,GAC5C,EAAA6J,EAEDtD,QAAA,WACI,IAAI4znB,EAAY,EACVr5nB,EAAO6F,MAAM2E,KAAKxJ,KAAKhB,QACvB22B,EAAS9wB,MAAM2E,KAAKxJ,KAAK21B,UAC/B,OAAOyhmB,GAAqB,CACxBjsnB,KAAI,WACA,IAAMhK,EAAQk3nB,EAEd,OADAA,GAAa,EACNl3nB,EAAQw0B,EAAOh1B,OAChB,CAAEzC,MAAO,CAACc,EAAKmC,GAAQw0B,EAAOx0B,IAASytD,MAAM,GAC7C,CAAEA,MAAM,KAGzB,EAAA7mD,EAED/I,KAAA,WACI,OAAOgB,KAAK21B,QACf,EAAA5tB,EAED4tB,OAAA,WACI31B,KAAK40nB,MAAM3T,iBACX,IAAMjnnB,EAAOgG,KACTq4nB,EAAY,EACVC,EAAmBzznB,MAAM2E,KAAKxJ,KAAK82nB,MAAMnhmB,UAC/C,OAAOyhmB,GAAgB,CACnBjsnB,KAAI,WACA,OAAOktnB,EAAYC,EAAiB33nB,OAC9B,CAAEzC,MAAOlE,EAAKi7nB,cAAcqD,EAAiBD,MAAezpkB,MAAM,GAClE,CAAEA,MAAM,KAGzB,EAAA7mD,EAEDnG,QAAA,SAAQ4lB,cAiBJ,OAhBIi+lB,GAAgBj+lB,KAChBA,EAAQ,IAAIzoB,IAAIyoB,IAGpBorhB,IAAY,WACJ/tiB,MAAMC,QAAQ0iB,IAGPg4lB,GAASh4lB,IAFhB49L,EAAKj+K,QACL3f,EAAM9mB,SAAQ,SAAAxC,GAAK,OAAIknN,EAAKr3K,IAAI7vC,OAIf,OAAVspB,QAA4B7f,IAAV6f,GACzB+2lB,GAAI,8BAAgC/2lB,EAE3C,IAEMxnB,IACV,EAAA+H,EACD+hnB,SAAA,SAAStpnB,EAA+CupnB,GAKpD,OAAOG,GAAiBlqnB,KAAMQ,EACjC,EAAAuH,EAED6hnB,WAAA,SAAW9onB,GACP,OAAO+onB,GAAoB7pnB,KAAMc,EACpC,EAAAiH,EAEDykD,OAAA,WACI,OAAO3nD,MAAM2E,KAAKxJ,KACrB,EAAA+H,EAEDzK,SAAA,WACI,MAAO,wBACV,EAAAyK,EAAAA,IAED,WACI,OAAO/H,KAAK21B,QACf,EAAAq2gB,GAAAA,EAAAA,CAAAA,CAAA1piB,IAAAA,OAAA1I,IA5KD,WAEI,OADAoG,KAAK40nB,MAAM3T,iBACJjhnB,KAAK82nB,MAAMjpnB,OA0KrB,CAzKAvL,IAAAA,GAAA1I,IA2KD,WACI,MAAO,UACV,EA/NqB,GAmOf6rnB,GAAkBpG,GAA0B,gBAAiBiH,IChPlEiS,GAAkBv6nB,OAAOwS,OAAO,MAoChCsnF,GAAS,SAEF0giB,GAA8B,WAWvC,WACWzV,EACA+P,EACA1S,EAEAqY,QAHA3F,IAAAA,IAAAA,EAAU,IAAI55nB,UAGdu/nB,IAAAA,IAAAA,EAAiC9T,IAAc,KAJ/C5B,aAAAA,OACA+P,aAAU,OACV1S,WAAAA,OAEAqY,wBAAAA,OAbXzB,eAAS,OACT9N,sBAAgB,OAChBD,mBAAa,OACb3F,YAAM,OACNO,oBAAc,OACd6U,yBAAmB,OACXC,kBAAY,EAGT,KAAA5V,QAAAA,EACA,KAAA+P,QAAAA,EACA,KAAA1S,MAAAA,EAEA,KAAAqY,mBAAAA,EAEPz4nB,KAAKg3nB,UAAY,IAAI7W,GAAsC,yBAE3DngnB,KAAK6jnB,eAAiBz8kB,GAAcpnC,KAAK+inB,SAQ5C,kBA2gBA,OA3gBAh7mB,EAED6wnB,wBAAA,SAAwBt2nB,GACpB,OAAOtC,KAAK8ynB,QAAQl5nB,IAAI0I,GAAM1I,KACjC,EAAAmO,EAED8wnB,wBAAA,SAAwBv2nB,EAAkBumC,GACtC,IAAMw5kB,EAAarinB,KAAK8ynB,QAAQl5nB,IAAI0I,GACpC,GAAI+/mB,aAAsB4E,GAEtB,OADA5E,EAAWlpnB,IAAI0vC,IACR,EAIX,GAAI6glB,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAmC3pnB,KAAM,CACpDqF,KAAMwyF,GACNlyD,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5B3pnB,KAAMkJ,EACNumC,SAAAA,IAEJ,IAAKwmD,EACD,OAAO,KAEXxmD,EAAYwmD,EAAexmD,SAK/B,IAHAA,EAAYw5kB,EAAmBiH,iBAAiBzglB,MAG/Bw4kB,GAAYkI,UAAW,CACpC,IAAM12F,EAAS5G,GAAajshB,MAEtBqvF,EACFwjc,EACM,CACIxthB,KAAMwyF,GACNmyhB,eAAgB,SAChBC,gBAAiBjqnB,KAAKognB,MACtBz6kB,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5Bnod,SAAWynd,EAAmB8G,OAC9B/vnB,KAAMkJ,EACNumC,SAAAA,GAEJ,KAEN3/B,EAGFm5mB,EAAoCmH,aAAa3glB,GAC/Cgqf,GACA7xhB,GAAgBhB,KAAMqvF,GAM9B,OAAO,CACV,EAAAtnF,EAEDurnB,KAAA,SAAKhxnB,GAKD,OAJI++mB,GAAYyG,qBAAuBpI,GAAQ1/mB,KAAK+inB,QAASzgnB,IAEzDtC,KAAKqznB,KAAK/wnB,GAEPtC,KAAK+inB,QAAQzgnB,IAGxByF,EAOAwrnB,KAAA,SAAKjxnB,EAAkBpE,EAAYglnB,GAE/B,YAF+BA,IAAAA,IAAAA,GAAqB,GAEhDxD,GAAQ1/mB,KAAK+inB,QAASzgnB,GAElBtC,KAAK8ynB,QAAQn5nB,IAAI2I,GAEVtC,KAAK64nB,wBAAwBv2nB,EAAKpE,GAClCglnB,EAEA5nH,QAAQnigB,IAAI6G,KAAK+inB,QAASzgnB,EAAKpE,IAGtC8B,KAAK+inB,QAAQzgnB,GAAOpE,GACb,GAIJ8B,KAAK4inB,QACRtgnB,EACA,CAAEpE,MAAAA,EAAOulB,YAAY,EAAMtlB,UAAU,EAAMC,cAAc,GACzD4B,KAAKy4nB,mBACLvV,IAKZn7mB,EACAsrnB,KAAA,SAAK/wnB,GACD,IAAK++mB,GAAYyG,mBAEb,OAAOxlnB,KAAOtC,KAAK+inB,QAEvB/inB,KAAK24nB,eAAL34nB,KAAK24nB,aAAiB,IAAIz/nB,KAC1B,IAAIyL,EAAQ3E,KAAK24nB,aAAa/+nB,IAAI0I,GAUlC,OATKqC,IACDA,EAAQ,IAAIohnB,GACRzjnB,KAAOtC,KAAK+inB,QACZP,GACkD,yBAClD,GAEJxinB,KAAK24nB,aAAax/nB,IAAImJ,EAAKqC,IAExBA,EAAM/K,OAGjBmO,EAIA46mB,MAAA,SAAMrgnB,EAAkBu9mB,GAIpB,IAHmB,IAAfA,IACAA,EAAa7/mB,KAAKy4nB,qBAEH,IAAf5Y,EAAJ,CAIA,GADAiZ,GAAgB94nB,KAAM6/mB,EAAYv9mB,KAC5BA,KAAOtC,KAAK+inB,SAAU,OAMxB,GAAyC,OAAzC,EAAI/inB,KAAK+inB,QAAQpD,MAAboZ,EAAwCz2nB,GACxC,OAEAi8mB,GAAI,EAAGsB,EAAWE,gBAAoB//mB,KAAKognB,MAAK,IAAI99mB,EAAIhF,YAIhE,IADA,IAAIiqC,EAASvnC,KAAK+inB,QACXx7kB,GAAUA,IAAW8ka,IAAiB,CACzC,IAAMp6Z,EAAawskB,GAAcl3kB,EAAQjlC,GACzC,GAAI2vC,EAAY,CACZ,IAAM+mlB,EAAUnZ,EAAW8C,MAAM3inB,KAAMsC,EAAK2vC,EAAY1K,GACxD,GAAgB,IAAZyxlB,EACA,OAEJ,GAAgB,IAAZA,EACA,MAGRzxlB,EAASvpC,OAAOolD,eAAe7b,GAEnC0xlB,GAAwBj5nB,KAAM6/mB,EAAYv9mB,KAG9CyF,EAOA66mB,QAAA,SACItgnB,EACA2vC,EACA4tkB,EACAqD,GAKA,QALAA,IAAAA,IAAAA,GAAqB,IAEF,IAAfrD,IACAA,EAAa7/mB,KAAKy4nB,qBAEH,IAAf5Y,EACA,OAAO7/mB,KAAKmjnB,gBAAgB7gnB,EAAK2vC,EAAYixkB,GAEjD4V,GAAgB94nB,KAAM6/mB,EAAYv9mB,GAClC,IAAM02nB,EAAUnZ,EAAW+C,QAAQ5inB,KAAMsC,EAAK2vC,EAAYixkB,GAI1D,OAHI8V,GACAC,GAAwBj5nB,KAAM6/mB,EAAYv9mB,GAEvC02nB,GAGXjxnB,EAMAo7mB,gBAAA,SACI7gnB,EACA2vC,EACAixkB,QAAAA,IAAAA,IAAAA,GAAqB,GAErB,IACI/B,KAGA,IAAM+X,EAAgBl5nB,KAAK0znB,QAAQpxnB,GACnC,IAAK42nB,EAED,OAAOA,EAIX,GAAIxP,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAmC3pnB,KAAM,CACpD2lC,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5B3pnB,KAAMkJ,EACN+C,KAAMqxnB,GACN7tlB,SAAUoJ,EAAW/zC,QAEzB,IAAKmxF,EACD,OAAO,KAEX,IAAQxmD,EAAawmD,EAAbxmD,SACJoJ,EAAW/zC,QAAU2qC,IACrBoJ,EAAa,MACNA,EAAU,CACb/zC,MAAO2qC,KAMnB,GAAIq6kB,GACA,IAAK5nH,QAAQr9f,eAAe+B,KAAK+inB,QAASzgnB,EAAK2vC,GAC3C,OAAO,OAGXh0C,GAAe+B,KAAK+inB,QAASzgnB,EAAK2vC,GAItCjyC,KAAKm5nB,wBAAwB72nB,EAAK2vC,EAAW/zC,OAxCjD,QA0CIsjnB,KAEJ,OAAO,GAGXz5mB,EACAy8mB,0BAAA,SACIlinB,EACApE,EACAumnB,EACAvB,QAAAA,IAAAA,IAAAA,GAAqB,GAErB,IACI/B,KAGA,IAAM+X,EAAgBl5nB,KAAK0znB,QAAQpxnB,GACnC,IAAK42nB,EAED,OAAOA,EAIX,GAAIxP,GAAgB1pnB,MAAO,CACvB,IAAMqvF,EAASs6hB,GAAmC3pnB,KAAM,CACpD2lC,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5B3pnB,KAAMkJ,EACN+C,KAAMqxnB,GACN7tlB,SAAU3qC,IAEd,IAAKmxF,EACD,OAAO,KAEXnxF,EAASmxF,EAAexmD,SAG5B,IAAMuwlB,EAAmBC,GAAkC/2nB,GACrD2vC,EAAa,CACf7zC,cAAcijnB,GAAY+B,iBAAkBpjnB,KAAK6jnB,eACjDpgmB,YAAY,EACZ7pB,IAAKw/nB,EAAiBx/nB,IACtBT,IAAKigoB,EAAiBjgoB,KAI1B,GAAI+pnB,GACA,IAAK5nH,QAAQr9f,eAAe+B,KAAK+inB,QAASzgnB,EAAK2vC,GAC3C,OAAO,OAGXh0C,GAAe+B,KAAK+inB,QAASzgnB,EAAK2vC,GAGtC,IAAMowkB,EAAa,IAAI0D,GACnB7nnB,EACAumnB,EAC8C,wBAC9C,GAGJzknB,KAAK8ynB,QAAQ35nB,IAAImJ,EAAK+/mB,GAGtBrinB,KAAKm5nB,wBAAwB72nB,EAAK+/mB,EAAW8G,QAnDjD,QAqDI3H,KAEJ,OAAO,GAGXz5mB,EACAs8mB,wBAAA,SACI/hnB,EACAlF,EACA8lnB,QAAAA,IAAAA,IAAAA,GAAqB,GAErB,IACI/B,KAGA,IAAM+X,EAAgBl5nB,KAAK0znB,QAAQpxnB,GACnC,IAAK42nB,EAED,OAAOA,EAIX,GAAIxP,GAAgB1pnB,MAOhB,IANe2pnB,GAAmC3pnB,KAAM,CACpD2lC,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5B3pnB,KAAMkJ,EACN+C,KAAMqxnB,GACN7tlB,cAAUlhC,IAGV,OAAO,KAGfvK,EAAQhE,OAARgE,EAAQhE,KAAuD,wBAC/DgE,EAAQ+oD,QAAUnmD,KAAKsjnB,QAAUtjnB,KAAK+inB,QACtC,IAAMqW,EAAmBC,GAAkC/2nB,GACrD2vC,EAAa,CACf7zC,cAAcijnB,GAAY+B,iBAAkBpjnB,KAAK6jnB,eACjDpgmB,YAAY,EACZ7pB,IAAKw/nB,EAAiBx/nB,IACtBT,IAAKigoB,EAAiBjgoB,KAI1B,GAAI+pnB,GACA,IAAK5nH,QAAQr9f,eAAe+B,KAAK+inB,QAASzgnB,EAAK2vC,GAC3C,OAAO,OAGXh0C,GAAe+B,KAAK+inB,QAASzgnB,EAAK2vC,GAGtCjyC,KAAK8ynB,QAAQ35nB,IAAImJ,EAAK,IAAI2knB,GAAc7pnB,IAGxC4C,KAAKm5nB,wBAAwB72nB,OAAKqF,GA5CtC,QA8CI65mB,KAEJ,OAAO,GAGXz5mB,EAMA2rnB,QAAA,SAAQpxnB,EAAkB4gnB,GAEtB,QAFsBA,IAAAA,IAAAA,GAAqB,IAEtCxD,GAAQ1/mB,KAAK+inB,QAASzgnB,GACvB,OAAO,EAIX,GAAIonnB,GAAgB1pnB,QACD2pnB,GAAmC3pnB,KAAM,CACpD2lC,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5B3pnB,KAAMkJ,EACN+C,KAAMyyF,KAIN,OAAO,KAKf,IAAI,QACAqphB,KACA,IAM0C,EANpCtuF,EAAS5G,GAAajshB,MAEtBqinB,EAAarinB,KAAK8ynB,QAAQl5nB,IAAI0I,GAEhCpE,OAAQyJ,EAEZ,IAAK06mB,GAAexvF,EAChB30hB,EAAwC,OAAnC,EAAGugnB,GAAcz+mB,KAAK+inB,QAASzgnB,SAAI,EAAhC+knB,EAAkCnpnB,MAG9C,GAAIglnB,GACA,IAAK5nH,QAAQm4H,eAAezznB,KAAK+inB,QAASzgnB,GACtC,OAAO,cAGJtC,KAAK+inB,QAAQzgnB,GAwBxB,GAjBI+/mB,IACArinB,KAAK8ynB,QAAL,OAAoBxwnB,GAEhB+/mB,aAAsB0D,KACtB7nnB,EAAQmknB,EAAW8G,QAGvB/H,GAAiBiB,IAGrBrinB,KAAKg3nB,UAAU9V,gBAIE,OAAjB,EAAAlhnB,KAAK24nB,eAAsB,OAAV,EAAjBW,EAAmB1/nB,IAAI0I,KAAvBi3nB,EAA6BpgoB,IAAImJ,KAAOtC,KAAK+inB,SAGzClwF,EAAqB,CACrB,IAAMxjc,EAA2B,CAC7BhqF,KAAMyyF,GACNkyhB,eAAgB,SAChBrklB,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5BkH,gBAAiBjqnB,KAAKognB,MACtBxld,SAAU18J,EACV9E,KAAMkJ,GAEN4G,EAGA2phB,GACA7xhB,GAAgBhB,KAAMqvF,IAtDlC,QA6DImyhB,KAEJ,OAAO,GAGXz5mB,EAKA+hnB,SAAA,SAASvsnB,EAA+CwsnB,GAIpD,OAAOG,GAAiBlqnB,KAAMzC,EACjC,EAAAwK,EAED6hnB,WAAA,SAAW9onB,GACP,OAAO+onB,GAAoB7pnB,KAAMc,EACpC,EAAAiH,EAEDoxnB,wBAAA,SAAwB72nB,EAAkBpE,WAChC20hB,EAAS5G,GAAajshB,MAE5B,GAAI6yhB,EAAqB,CACrB,IAAMxjc,EACFwjc,EACO,CACGxthB,KAAMqxnB,GACN1M,eAAgB,SAChBC,gBAAiBjqnB,KAAKognB,MACtBz6kB,OAAQ3lC,KAAKsjnB,QAAUtjnB,KAAK+inB,QAC5B3pnB,KAAMkJ,EACNumC,SAAU3qC,GAEd,KAENgL,EAGA2phB,GACA7xhB,GAAgBhB,KAAMqvF,GAOb,OAAjB,EAAArvF,KAAK24nB,eAAsB,OAAV,EAAjBa,EAAmB5/nB,IAAI0I,KAAvBm3nB,EAA6BtgoB,KAAI,GAGjC6G,KAAKg3nB,UAAU9V,eAClB,EAAAn5mB,EAEDkrnB,SAAA,WAEI,OADAjznB,KAAKg3nB,UAAU/V,iBACRhyH,GAAQjvf,KAAK+inB,QACvB,EAAAh7mB,EAED2xnB,MAAA,WAQI,OADA15nB,KAAKg3nB,UAAU/V,iBACRjjnB,OAAOgB,KAAKgB,KAAK+inB,QAC3B,IAviBsC,GA8iB3C,SAAgByD,GACZ7umB,EACAva,SAMA,GAAIsinB,GAAQ/nmB,EAAQuomB,IAQhB,OAAOvomB,EAOX,IAAMve,EACW,OADP,EACC,MAAPgE,OAAO,EAAPA,EAAShE,MAAIugoB,EAKP,mBAEJ9W,EAAM,IAAI2V,GACZ7gnB,EACA,IAAIze,IACJuQ,OAAOrQ,G5BvlBf,SACIgE,SAEA,OAAOA,EAAkC,OAA3B,EAAGA,EAAQ8nnB,kBAAgB0U,EAAIhV,GAAqBxnnB,QAAWuK,CACjF,C4BolBQkynB,CAAyBz8nB,IAK7B,OAFA+hnB,GAAcxnmB,EAAQuomB,GAAO2C,GAEtBlrmB,CACX,CAEA,IAAMminB,GAAmCza,GACrC,iCACAmZ,IAGJ,SAASa,GAAkC/2nB,GACvC,OACIi2nB,GAAgBj2nB,KACfi2nB,GAAgBj2nB,GAAO,CACpB1I,IAAG,WACC,OAAOoG,KAAKkgnB,IAAO0Y,wBAAwBt2nB,EAC9C,EACDnJ,IAAG,SAAC+E,GACA,OAAO8B,KAAKkgnB,IAAO2Y,wBAAwBv2nB,EAAKpE,KAIhE,CAEA,SAAgBonnB,GAAmBhlmB,GAC/B,QAAID,GAASC,IACFw5mB,GAAkCx5mB,EAAc4/lB,IAG/D,CAEA,SAAgB+Y,GACZpW,EACAhD,EACAv9mB,SAM2C,OAA3C,EAAOugnB,EAAIE,QAAQpD,aAAZoa,EAAuCz3nB,EAClD,CAEA,SAASw2nB,GACLjW,EACAhD,EACAv9mB,GAkDJ,CC5vBA,IAuBiBygD,GAAM8Y,GAvBjBm+jB,GAAUC,GAA2B,GAmBvCC,GAA+B,EAG7BC,GAAS,aACEp3kB,GASTo3kB,GATet+jB,GASJh3D,MAAMmD,UARjBhK,OAAOihB,eACPjhB,OAAOihB,eAAe8jC,GAAK/6C,UAAW6zD,SACFl0D,IAA7Bo7C,GAAK/6C,UAAUyhC,UACtBsZ,GAAK/6C,UAAUyhC,UAAYoyB,GAE3B9Y,GAAK/6C,UAAY6zD,GAOzB,IAEMu+jB,GAAyB,gBAC3B,WACInU,EACAxB,EACArrnB,EACA48nB,cADI,IAAJ58nB,IAAAA,EAAoD,wBAC/C,IAAL48nB,IAAAA,GAAQ,GAERjvnB,EAAAA,EAAAA,KAAAA,OAAO,KAEP,IAAM87mB,EAAM,IAAI4R,GAA8Br7nB,EAAMqrnB,EAAUuR,GAAO,GAIrE,GAHAnT,EAAIS,OAAMxzH,GAAAA,GACVsvH,GAAmB,GAAD,GAAOc,GAAO2C,GAE5BoD,GAAiBA,EAActlnB,OAAQ,CACvC,IAAMuK,EAAOi9mB,IAAuB,GAEpCphnB,EAAKkvnB,gBAAgB,EAAG,EAAGhQ,GAC3B0C,GAAqBz9mB,GAOxB,OADGlN,OAAOC,eAAc6xf,GAAAA,GAAO,IAAKkqI,IACpC,EAxBsBpuG,GAAAA,EAAAA,GAyB1B,kBAqBA,OArBA7jhB,EAEDkI,OAAA,WACMjQ,KAAKkgnB,IAAyC0U,MAAM3T,iBAAgB,2BADhEt7J,EAAa,aAAAtwc,EAAAA,EAAAA,EAAAA,EAAAA,IAAbswc,EAAa,GAAA7tc,UAAAA,GAEnB,OAAOjT,MAAMmD,UAAUiI,OAAO8H,MACzB/X,KAAa+E,QAEd4gd,EAAO5hd,KAAI,SAAAgc,GAAC,OAAKwlmB,GAAkBxlmB,GAAKA,EAAEhb,QAAUgb,CAAE,IAE7D,EAAAhY,EAAAA,GAcD,WACI,IAAM/N,EAAOgG,KACTq4nB,EAAY,EAChB,OAAOjB,GAAa,CAChBjsnB,KAAI,WACA,OAAOktnB,EAAYr+nB,EAAK2G,OAClB,CAAEzC,MAAOlE,EAAKq+nB,KAAczpkB,MAAM,GAClC,CAAEA,MAAM,EAAM1wD,WAAOyJ,KAGtC,EAAAqkiB,GAAAA,EAAAA,CAAAA,CAAA1piB,IAAAA,SAAA1I,IAtBD,WACI,OAAQoG,KAAKkgnB,IAAyCoU,iBACzD,EAAAn7nB,IAED,SAAWi8nB,GACLp1nB,KAAKkgnB,IAAyCsU,gBAAgBY,KAiBnE,CAhBA9ynB,IAAAA,EAAA1I,IAED,WACI,MAAO,YACV,EA9C0B,CAAQugoB,GA4C9Bv2mB,OAAOm4b,YAIXn4b,OAAO44G,UAmBZ,SAASy9f,GAA2B94nB,GAChC,MAAO,CACHsiB,YAAY,EACZrlB,cAAc,EACdxE,IAAK,WACD,OAAOoG,KAAKkgnB,IAAOoT,KAAKnynB,EAC3B,EACDhI,IAAK,SAAU+E,GACX8B,KAAKkgnB,IAAOqT,KAAKpynB,EAAOjD,IAGpC,CAEA,SAASm8nB,GAAsBl5nB,GAC3BlD,GAAem8nB,GAAsBpynB,UAAW,GAAK7G,EAAO84nB,GAA2B94nB,GAC3F,CAEA,SAAgBs0nB,GAAmBh+lB,GAC/B,GAAIA,EAAMyimB,GAA8B,CACpC,IAAK,IAAI/4nB,EAAQ+4nB,GAA8B/4nB,EAAQs2B,EAAM,IAAKt2B,IAC9Dk5nB,GAAsBl5nB,GAE1B+4nB,GAA+BzimB,EAEvC,CAIA,SAAgB0ulB,GACZF,EACAxB,EACArrnB,GAEA,OAAO,IAAIghoB,GAAsBnU,EAAexB,EAAUrrnB,EAC9D,UC7IgBm4nB,GAAQjxmB,EAAYnT,GAChC,GAAqB,kBAAVmT,GAAgC,OAAVA,EAAgB,CAC7C,GAAIilmB,GAAkBjlmB,GAIlB,YAHiB3Y,IAAbwF,GACAoxmB,GAAI,IAEAj+lB,EAAc4/lB,IAAO0U,MAEjC,GAAInP,GAAgBnlmB,GAChB,OAAOA,EAAMs0mB,MAEjB,GAAIpP,GAAgBllmB,GAAQ,CACxB,QAAiB3Y,IAAbwF,EACA,OAAOmT,EAAM02mB,UAEjB,IAAM3U,EAAa/hmB,EAAMw2mB,MAAMl9nB,IAAIuT,IAAamT,EAAMy2mB,QAAQn9nB,IAAIuT,GAIlE,OAHKk1mB,GACD9D,GAAI,GAAIpxmB,EAAUmtnB,GAAah6mB,IAE5B+hmB,EAKX,GAAIiD,GAAmBhlmB,GAAQ,CAC3B,IAAKnT,EACD,OAAOoxmB,GAAI,IAEf,IAAM8D,EAAc/hmB,EAAc4/lB,IAAO4S,QAAQl5nB,IAAIuT,GAIrD,OAHKk1mB,GACD9D,GAAI,GAAIpxmB,EAAUmtnB,GAAah6mB,IAE5B+hmB,EAEX,GAAIZ,GAAOnhmB,IAAUysmB,GAAgBzsmB,IAAUiwmB,GAAWjwmB,GACtD,OAAOA,CAEd,MAAM,GAAIuuC,GAAWvuC,IACdiwmB,GAAWjwmB,EAAM4/lB,KAEjB,OAAO5/lB,EAAM4/lB,IAGrB3B,GAAI,GACR,CAEA,SAAgBgc,GAAkBj6mB,EAAYnT,GAI1C,OAHKmT,GACDi+lB,GAAI,SAES52mB,IAAbwF,EACOotnB,GAAkBhJ,GAAQjxmB,EAAOnT,IAExCs0mB,GAAOnhmB,IAAUysmB,GAAgBzsmB,IAAUiwmB,GAAWjwmB,IAGtDklmB,GAAgBllmB,IAAUmlmB,GAAgBnlmB,GAFnCA,EAKPA,EAAM4/lB,IACC5/lB,EAAM4/lB,SAEjB3B,GAAI,GAAIj+lB,EACZ,CAEA,SAAgBg6mB,GAAah6mB,EAAYnT,GACrC,IAAIqtnB,EACJ,QAAiB7ynB,IAAbwF,EACAqtnB,EAAQjJ,GAAQjxmB,EAAOnT,OACpB,IAAIonX,GAASj0W,GAChB,OAAOA,EAAMlnB,KAEbohoB,EADOlV,GAAmBhlmB,IAAUklmB,GAAgBllmB,IAAUmlmB,GAAgBnlmB,GACtEi6mB,GAAkBj6mB,GAGlBixmB,GAAQjxmB,GAEpB,OAAOk6mB,EAAMpa,KACjB,CDuBApinB,OAAOyG,QAAQ8vnB,IAAiB7znB,SAAQ,gBAAE7D,EAAI,KAAEkB,EAAE,KACjC,WAATlB,GACAsinB,GAAcib,GAAsBpynB,UAAWnL,EAAMkB,EAE5D,IA4BD03nB,GAAmB,KExInB,IAAMn4nB,GAAW+uc,GAAgB/uc,SAEjC,SAAgBwiB,GAAUC,EAAQC,EAAQkyC,GACtC,YADsCA,IAAAA,IAAAA,GAAiB,GAChD0d,GAAG7vD,EAAGC,EAAGkyC,EACpB,CAIA,SAAS0d,GAAG7vD,EAAQC,EAAQkyC,EAAeuokB,EAAgBC,GAGvD,GAAI36mB,IAAMC,EACN,OAAa,IAAND,GAAW,EAAIA,IAAM,EAAIC,EAGpC,GAAS,MAALD,GAAkB,MAALC,EACb,OAAO,EAGX,GAAID,IAAMA,EACN,OAAOC,IAAMA,EAGjB,IAAM3a,SAAc0a,EACpB,GAAa,aAAT1a,GAAgC,WAATA,GAAiC,iBAAL2a,EACnD,OAAO,EAIX,IAAM7H,EAAY7a,GAASmB,KAAKshB,GAChC,GAAI5H,IAAc7a,GAASmB,KAAKuhB,GAC5B,OAAO,EAEX,OAAQ7H,GAEJ,IAAK,kBAEL,IAAK,kBAGD,MAAO,GAAK4H,IAAM,GAAKC,EAC3B,IAAK,kBAGD,OAAKD,KAAOA,GACAC,KAAOA,EAGL,KAAND,EAAU,GAAKA,IAAM,EAAIC,GAAKD,KAAOC,EACjD,IAAK,gBACL,IAAK,mBAID,OAAQD,KAAOC,EACnB,IAAK,kBACD,MACsB,qBAAX4D,QAA0BA,OAAO2oC,QAAQ9tD,KAAKshB,KAAO6D,OAAO2oC,QAAQ9tD,KAAKuhB,GAExF,IAAK,eACL,IAAK,eAGGkyC,GAAS,GACTA,IAKZnyC,EAAIo0C,GAAOp0C,GACXC,EAAIm0C,GAAOn0C,GAEX,IAAM26mB,EAA0B,mBAAdxinB,EAClB,IAAKwinB,EAAW,CACZ,GAAgB,iBAAL56mB,GAA6B,iBAALC,EAC/B,OAAO,EAKX,IAAM46mB,EAAQ76mB,EAAEsnB,YACZwzlB,EAAQ76mB,EAAEqnB,YACd,GACIuzlB,IAAUC,KAENhskB,GAAW+rkB,IACXA,aAAiBA,GACjB/rkB,GAAWgskB,IACXA,aAAiBA,IAErB,gBAAiB96mB,GACjB,gBAAiBC,EAEjB,OAAO,EAIf,GAAc,IAAVkyC,EACA,OAAO,EACAA,EAAQ,IACfA,GAAS,GASbwokB,EAASA,GAAU,GAEnB,IADA,IAAI/5nB,GAFJ85nB,EAASA,GAAU,IAEC95nB,OACbA,KAGH,GAAI85nB,EAAO95nB,KAAYof,EACnB,OAAO26mB,EAAO/5nB,KAAYqf,EASlC,GAJAy6mB,EAAOr6nB,KAAK2f,GACZ26mB,EAAOt6nB,KAAK4f,GAGR26mB,EAAW,CAGX,IADAh6nB,EAASof,EAAEpf,UACIqf,EAAErf,OACb,OAAO,EAGX,KAAOA,KACH,IAAKivE,GAAG7vD,EAAEpf,GAASqf,EAAErf,GAASuxD,EAAQ,EAAGuokB,EAAQC,GAC7C,OAAO,CAGlB,KAAM,CAEH,IACIp4nB,EADEtD,EAAOhB,OAAOgB,KAAK+gB,GAIzB,GAFApf,EAAS3B,EAAK2B,OAEV3C,OAAOgB,KAAKghB,GAAGrf,SAAWA,EAC1B,OAAO,EAEX,KAAOA,KAGH,IAAM++mB,GAAQ1/lB,EADd1d,EAAMtD,EAAK2B,MACcivE,GAAG7vD,EAAEzd,GAAM0d,EAAE1d,GAAM4vD,EAAQ,EAAGuokB,EAAQC,GAC3D,OAAO,EAOnB,OAFAD,EAAO7skB,MACP8skB,EAAO9skB,OACA,CACX,CAEA,SAASuG,GAAOp0C,GACZ,OAAIwlmB,GAAkBxlmB,GACXA,EAAEhb,QAETw6mB,GAASx/lB,IAAMylmB,GAAgBzlmB,IAG/By/lB,GAASz/lB,IAAM0lmB,GAAgB1lmB,GAFxBlb,MAAM2E,KAAKuW,EAAEtb,WAKjBsb,CACX,UCtLgBq3mB,GAAgB56f,GAE5B,OADAA,EAAS54G,OAAO44G,UAAYs+f,GACrBt+f,CACX,CAEA,SAASs+f,KACL,OAAO96nB,IACX,CCUA,CAEE,SAAU,MAAO,OAAOU,SAAQ,SAAAxD,GAEV,qBADZuf,KACKvf,IACTqhnB,GAAI,yBAAyBrhnB,EAAC,kCAErC,IA0H4C,kBAAlC69nB,+BAEPA,8BAA8BC,WAAW,CACrCC,IRzFR,SAAoBz6nB,GAGZ,OADAnE,QAAQC,KAAI,8CACL,WAAc,CAO7B,EQgFQ4+nB,OAAQ,CACJZ,aAAAA,IAEJpa,MAAAA,SC1HR,GAD4B,IA5BtBib,WAIF,cAAe,qBAHfC,kBAA4B,EAGd,KAFdC,kBAA4B,EAGxBnH,GAAmBl0nB,MAEnB,IAAM6C,EAAM5I,OAAO04B,SAASkpE,KAAKx5F,MAAM,KAAKurD,MAChC,YAAR/qD,EACA7C,KAAKo7nB,kBAAoB,EAEZ,KAARv4nB,EACL7C,KAAKo7nB,kBAAoB,EAEZ,aAARv4nB,IACL7C,KAAKo7nB,kBAAoB,EAGhC,CAOA,OAPA,6CAED,SAAqBvylB,GACjB7oC,KAAKo7nB,kBAAoBvylB,CAC5B,oCACD,SAAoBA,GAChB7oC,KAAKq7nB,iBAAmBxylB,CAC3B,OAzBCsylB,ICCN,IAAKz9G,EAAAA,SACD,MAAM,IAAInjhB,MAAM,qDAEpB,aZoBIod,EACAm6mB,EACA10nB,GAEA,IAAMylnB,EAAsC2D,GAAmB7umB,EAAQva,GAAS8inB,IAChFiB,KACA,IACQj4mB,EAMO,MAAX4onB,IAAAA,ElCsBR,SAAyCn6mB,GAUrC,OATK+nmB,GAAQ/nmB,EAAQgomB,KAOjBR,GAAcxnmB,EAAQgomB,GAAuB5mmB,GAAAA,CAAAA,EAAOpB,EAAOgomB,MAExDhomB,EAAOgomB,GAClB,CkCjCwB2b,CAAyB3jnB,IAGzCs3e,GAAQ6iI,GAAapxnB,SAAQ,SAAA4B,GAAG,OAAIugnB,EAAIF,MAAMrgnB,EAAKwvnB,EAAaxvnB,OAVpE,QAYIk/mB,KAEJ,OAAO7pmB,CACX,EYxCI,MAAM,IAAIpd,MAAM,sECLd,SAAUghoB,GAAiBh+nB,GAC7BA,GACH,CCFK,SAAUi+nB,GAAgBp3mB,GAC5B,OAAO4tmB,GAAkB5tmB,EAC5B,CCIM,IAGP,cAII,WAA6BsnE,GAA7B,kGAA6BA,IAH7B1tF,OAAAA,eAAAA,KAAAA,gBAAAA,iDAA0E,IAAI9E,MAC9E8E,OAAAA,eAAAA,KAAAA,eAAAA,0DAkBAA,OAAAA,eAAAA,KAAAA,QAAAA,iDAAQ,SAACy9nB,QAAA,IAAAA,IAAAA,EAvB0B,KAyB/BnmmB,aAAavuB,EAAK20nB,cAClB30nB,EAAK20nB,kBAAe/znB,EAEpB,IAAM47D,EAAMzgE,KAAKygE,MACjBx8D,EAAK40nB,cAAcj7nB,SAAQ,SAAC6gkB,EAAcj2jB,GAClCi4D,EAAMg+f,EAAaq6D,cAAgBH,IACnC10nB,EAAK2kF,SAAS61e,EAAarjkB,OAC3B6I,EAAK40nB,cAAc91nB,OAAOyF,GAEjC,IAEGvE,EAAK40nB,cAAc9tnB,KAAO,GAC1B9G,EAAK80nB,eAEZ,IAGD79nB,OAAAA,eAAAA,KAAAA,yBAAAA,iDAAyB,WACrB+I,EAAK+0nB,MAAM,EACd,GArC4D,CA4CjE,qGAzCI,SAASnknB,EAAgBzZ,EAAUoN,GAC/BtL,KAAK27nB,cAAcxioB,IAAImS,EAAO,CAC1BpN,MAAK,EACL09nB,aAAc94nB,KAAKygE,QAEvBvjE,KAAK67nB,eACR,oGAED,SAAWvwnB,GACPtL,KAAK27nB,cAAc91nB,OAAOyF,EAC7B,uGA0BD,gBAC8B3D,IAAtB3H,KAAK07nB,eACL17nB,KAAK07nB,aAAenmmB,WAAWv1B,KAAK87nB,MA/CT,KAiDlC,IACL,CAAC,CAhDD,GCRaC,GAA+B,ID2DR,qBAAzBC,qBACDA,qBACAC,KC5DN,SAACpZ,SACe,QAAZ,EAAAA,EAAIoO,gBAAQv2nB,IAAAA,GAAAA,EAAE6xC,UACds2kB,EAAIoO,SAAW,IAClB,ICPDiL,IAA+B,EAM7B,SAAUC,KACZ,OAAOD,EACV,iSCFD,SAASE,GAAyBC,GAC9B,MAAO,kBAAWA,EACrB,CAsBD,kBAAkC,EAElC,SAASC,KACL,OAAO,IAAIC,EACd,CAEK,SAAUC,GAAez+nB,EAAas+nB,GACxC,QADwC,IAAAA,IAAAA,EAAAA,YACpCF,KACA,OAAOp+nB,IAGL,IAAC0+nB,EAAD,GAA0BtjnB,EAAAA,SAAemjnB,IAAiC,GAApD,GAEnB5ilB,EAAH,GAAevgC,EAAAA,WAAgB,GAApB,GACXg1B,EAAc,WAAM,OAAAuL,EAAS,GAAU,EAKvCgjlB,EAASvjnB,EAAAA,OAA4C,MAEtDujnB,EAAOjjnB,UAERijnB,EAAOjjnB,QAAU,CACbw3mB,SAAU,KACVn2kB,SAAS,EACT6hlB,oBAAoB,IAI5B,IA6DI/6G,EACAjvZ,EA9DEkwf,EAAM6Z,EAAOjjnB,QAuEnB,GArEKopmB,EAAIoO,WAELpO,EAAIoO,SAAW,IAAIlC,GAASqN,GAAyBC,IAAoB,WAMjExZ,EAAI/nkB,QAEJ3M,IAIA00kB,EAAI8Z,oBAAqB,CAEhC,IAEDZ,GAA6BxqD,SAASkrD,EAAuB5Z,EAAKA,IAGtE1pmB,EAAAA,cAAoB0pmB,EAAIoO,SAAUuK,IAElCrinB,EAAAA,WAAgB,WAyBZ,OAxBA4inB,GAA6Ba,WAAW/Z,GAExCA,EAAI/nkB,SAAU,EAEV+nkB,EAAIoO,SACApO,EAAI8Z,qBAEJ9Z,EAAI8Z,oBAAqB,EACzBxulB,MASJ00kB,EAAIoO,SAAW,IAAIlC,GAASqN,GAAyBC,IAAoB,WAErElulB,GACH,IACDA,KAGG,WACH00kB,EAAIoO,SAAU1klB,UACds2kB,EAAIoO,SAAW,KACfpO,EAAI/nkB,SAAU,EACd+nkB,EAAI8Z,oBAAqB,CAC5B,CACJ,GAAE,IAOH9Z,EAAIoO,SAAS7yH,OAAM,WACf,IACIwjB,EAAY7jhB,GAGf,CAFC,MAAOkL,GACL0pH,EAAY1pH,CACf,CACJ,IAEG0pH,EACA,MAAMA,EAGV,OAAOivZ,CACV,CCnID,IAEMi7G,GAA8B,oBAAXj5mB,QAAyBA,OAAOC,IAEnDi5mB,GAAwBD,GACxBj5mB,OAAOC,IAAI,qBACW,oBAAf7S,EAAAA,aAA6BA,EAAAA,EAAAA,aAAW,SAAClG,GAAe,WAAI,IAA/B,SAEpCiynB,GAAkBF,GAClBj5mB,OAAOC,IAAI,cACK,oBAATgihB,EAAAA,OAAuBA,EAAAA,EAAAA,OAAK,SAAC/6hB,GAAe,WAAI,IAAzB,SA4C9B,SAAU4W,GACZs7mB,EAKA5/nB,SASA,GAAI2/nB,IAAmBC,EAAa,WAAiBD,GACjD,MAAM,IAAIxioB,MACN,uLAKR,GAAI4hoB,KACA,OAAOa,EAGX,IAAIC,EAAmC,QAAnB,EAAO,OAAP7/nB,QAAO,IAAPA,OAAO,EAAPA,EAAS4T,kBAAUtW,IAAAA,GAAAA,EACnC4zC,EAAS0ulB,EAEPX,EAAoBW,EAActknB,aAAesknB,EAAc5joB,KAIrE,GAAI0joB,IAAyBE,EAAa,WAAiBF,KACvDG,GAAgB,EAEM,oBADtB3ulB,EAAS0ulB,EAAa,SAElB,MAAM,IAAIzioB,MACN,wEAKZ,IAyD0B88B,EAAW1f,EAzDjCulnB,EAAoB,SAACpynB,EAAYmG,GACjC,OAAOurnB,IAAY,WAAM,OAAAlulB,EAAOxjC,EAAOmG,EAAI,GAAEornB,EAChD,EAyCD,MArC0B,KAAtBA,IACEa,EAA8CxknB,YAAc2jnB,GAI7DW,EAAsBzxL,eACrB2xL,EAA8C3xL,aAC5CyxL,EACFzxL,cAGF0xL,IAIAC,GAAoBlsnB,EAAAA,EAAAA,YAAWksnB,IAMnCA,GAAoBr3F,EAAAA,EAAAA,MAAKq3F,GA8BC7lmB,EA5BL2lmB,EA4BgBrlnB,EA5BDulnB,EA6BpCl/nB,OAAOgB,KAAKq4B,GAAM32B,SAAQ,SAAA4B,GACjB66nB,GAAe76nB,IAChBtE,OAAOC,eAAe0Z,EAAQrV,EAAKtE,OAAOouc,yBAAyB/0a,EAAM/0B,GAEhF,IAnBM46nB,CACV,CAGD,IAAMC,GAAsB,CACxB74mB,UAAU,EACVgqB,QAAQ,EACRoB,SAAS,EACTrqC,MAAM,EAGNqT,aAAa,WNtJX,SAA2Bw3mB,GACxBA,IACDA,EAAoBqL,IAOxBzomB,GAAU,CAAEo9lB,kBAAiB,GAChC,COPDkN,CAAiB5tG,GAAAA,yBASU,GAAAusG,GAAA,qFCdrBsB,IAAyBnhoB,EAAAA,GAAAA,IAC7B,yBACA,CACEgH,IAAK,kBAAM,8BAAgBpF,MAAK,SAAAZ,GAAC,OAAI,IAAIA,EAAEogoB,yBAAV,GAA5B,ICYHC,IAAYzumB,EAAAA,EAAAA,GAAO8vjB,GAAP9vjB,CAAH,4MAC2B,QAA5Br0B,GAAAA,GAAAA,cAAoC,GAAK,QASjDq3iB,GAAUhjhB,EAAAA,EAAAA,IAAH,mKAC6B,QAA5Br0B,GAAAA,GAAAA,cAAoC,GAAK,QAOjD+ioB,GAAS1umB,EAAAA,EAAAA,IAAH,4IAQN2umB,IAAO3umB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,uPAWJ6umB,IAAa7umB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,iHAOVi6e,GAAQj6e,EAAAA,EAAAA,IAAH,kHAOL8umB,GAAY9umB,EAAAA,EAAAA,IAAH,mEAEK0+U,GAAAA,GAAW,MAAQ,QA0HvC,GAAe9rV,IAxHM,SAAC5W,GAClB,IAAMwykB,EAAWpC,IACjB,GAAwCx9D,EAAAA,EAAAA,UAA6B,MAArE,eAAOmgH,EAAP,KAAqBC,EAArB,KACA,GAAwCpgH,EAAAA,EAAAA,WAAS,GAAjD,eAAOqgH,EAAP,KAAqBC,EAArB,KACA,GAAgCtgH,EAAAA,EAAAA,UAASrmc,eAAeE,QAAQ,aAAe,IAA/E,eAAOkte,EAAP,KAAiBy5D,EAAjB,MACA7gG,EAAAA,EAAAA,YAAU,WACN,IAAM4gH,EAAQ,yCAAG,sFACR5mjB,eAAeE,QAAQ,YADf,gCAEHsmiB,KAFG,OAGTK,EAAY7miB,eAAeE,QAAQ,aAAe,IAHzC,2CAAH,qDAMd0mjB,IACA,IAAMp7nB,EAAM5I,OAAO04B,SAASkpE,KAAKx5F,MAAM,KAAKurD,MAExCowkB,EADQ,kBAARn7nB,IAGa,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAMtG,GAAE,IAEH,IAyBMq7nB,EAAY,yCAAG,uFACbzjoB,GAAAA,GAAAA,mBADa,iCAEP4jnB,KAFO,cAGbhniB,eAAelwC,QACfs3hB,aAAaF,WAAW,gBACxB4/D,GAAAA,qBAAyC,GAL5B,SAMPd,GAAuB16E,UANhB,sCAUbg7D,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YAEftmiB,eAAelwC,QACfg3lB,GAAAA,qBAAyC,GACzC1/D,aAAaF,WAAW,gBAhBX,UAiBP5gB,GAAKgF,UAjBE,QAmBjB26B,EAAS,UAnBQ,4CAAH,qDAqBlB,OACI,iCACI,UAACigD,GAAD,CAAW/ynB,SAAS,SAApB,UACI,WAACsniB,GAAD,YACI,WAAC0rF,GAAD,WACKO,IAAgB,UAACK,GAAA,EAAD,CAAe9gd,QA3C3B,WACrBmhZ,aAAaF,WAAW,gBAExB,IAAM17jB,EAAM5I,OAAO04B,SAASkpE,KAAKx5F,MAAM,KAAKurD,MACxCuwkB,GAAAA,kBACAA,GAAAA,qBAAyC,GACzCA,GAAAA,qBAAwC,IAE3B,kBAARt7nB,EACLs7nB,GAAAA,qBAAyC,GAE5B,MAARt7nB,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAAuB,MAARA,GAC/Fs7nB,GAAAA,qBAAyC,GAE7C7gD,GAAU,EACb,IA8BuB9vO,GAAAA,IACM,UAACmwR,GAAD,CAAYzkmB,QAAS,KAArB,SAA4BpuB,EAAM4kH,SAClC,UAAC+tgB,GAAD,CAAMvkmB,QAAS,KAAf,SAAsBpuB,EAAM4kH,YAG1C,UAACq5Y,GAAD,WACI,WAAC60H,GAAD,YACI,UAAC,GAAD,CAASlugB,MAAM,gBAAf,UACI,UAAC,GAAD,CAAY4tD,QA7Db,SAACv8K,GACxB+8nB,EAAgB/8nB,EAAMy+D,cACzB,EA2DoE9wC,GAAI,CAAE7wB,EAAG,GAAlD,SACK4mjB,GACG,UAAC,GAAD,CAAQxif,IAAKwif,EAAUqgD,SAAU,CAAEhlD,eAAgB,eAAiBpxhB,GAAI,CAAEiC,MAAO68U,GAAAA,GAAW,OAAS,OAAQhhV,OAAQghV,GAAAA,GAAW,OAAS,WACvI,UAAC6wR,GAAA,EAAD,CAAe3vmB,GAAI,CAAE/F,MAAO,gBAG1C,UAAC,GAAD,CACI+F,GAAI,CAAE0T,GAAI,QACVrkB,GAAG,cACH63kB,SAAUioC,EACVnvB,aAAc,CACVh5d,SAAU,MACVD,WAAY,SAEhBwhd,aAAW,EACXiB,gBAAiB,CACbxid,SAAU,MACVD,WAAY,SAEhBj3H,KAAMygH,QAAQ4+f,GACd3jC,QA7EA,WACxB4jC,EAAgB,KACnB,EA6DuB,UAgBI,UAAC,GAAD,CAAUxgd,QAAS4gd,EAAnB,UACI,UAAC,GAAD,CAAYl5lB,UAAU,SAAtB,mCASnC,IChLKu4lB,IAAYzumB,EAAAA,EAAAA,GAAO8vjB,GAAP9vjB,CAAH,wMASTgjhB,GAAUhjhB,EAAAA,EAAAA,IAAH,0HAOP+5e,GAAO/5e,EAAAA,EAAAA,IAAH,gFAKJwvmB,IAAcxvmB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,oFAKXyvmB,GAAsBzvmB,EAAAA,EAAAA,IAAH,sMAUnB0vmB,GAAsB1vmB,EAAAA,EAAAA,IAAH,uMAUnB0umB,GAAS1umB,EAAAA,EAAAA,IAAH,2DAIN2umB,IAAO3umB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,4NAUJi6e,GAAQj6e,EAAAA,EAAAA,IAAH,gHAOL8umB,GAAY9umB,EAAAA,EAAAA,IAAH,qEAwGf,GApGe,SAAChkB,GACZ,IAAMwykB,EAAWpC,IACjB,GAAwCx9D,EAAAA,EAAAA,UAA6B,MAArE,eAAOmgH,EAAP,KAAqBC,EAArB,KAUMI,EAAY,yCAAG,0FACjBvgB,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YAEftmiB,eAAelwC,QALE,SAMXw2gB,GAAKgF,UANM,OAOjB26B,EAAS,UAPQ,2CAAH,qDASlB,OACI,gCAEQ9vO,GAAAA,IACI,iCACI,UAAC,GAAD,CAAc99O,MAAO5kH,EAAM4kH,WAG/B,iCACI,UAAC,GAAD,CAAWllH,SAAS,SAApB,UACI,WAAC,GAAD,YACI,UAACq+f,GAAD,WACI,UAAC01H,GAAD,WACI,WAACrhD,EAAD,CAAM1le,GAAG,WAAW1gF,MAAO,CAAEyqkB,eAAgB,OAAQ19jB,WAAY,SAAUjT,QAAS,QAApF,WACI,iBAAKzY,UAAU,oBAAf,UACI,UAACsmnB,EAAA,EAAD,CAAmB91mB,MAAM,UAAU+F,GAAI,CAAEhF,SAAU,GAAIgZ,UAAW,YAEtE,UAAC47lB,GAAD,CAAaplmB,QAAS,KAAtB,6BAIZ,UAAC,GAAD,WACI,UAACgkjB,EAAD,CAAM1le,GAAG,IAAT,UACI,UAAC,GAAD,CAAMt+E,QAAS,KAAf,wBAGR,WAAC,GAAD,YACI,UAACslmB,GAAD,WACI,UAACthD,EAAD,CAAM1le,GAAG,YAAY1gF,MAAO,CAAEyqkB,eAAgB,OAAQ19jB,WAAY,SAAUjT,QAAS,QAArF,UAEQ,mCACI,iBAAKzY,UAAU,oBAAf,UACI,UAAC6xG,GAAA,EAAD,CAAYt7F,GAAI,CAAEhF,SAAU,GAAIgZ,UAAW,YAE/C,UAAC47lB,GAAD,CAAaplmB,QAAQ,KAArB,8BAKhB,WAAC,GAAD,YACI,UAAC,GAAD,CAASw2F,MAAM,gBAAf,UACI,UAAC,GAAD,CAAY4tD,QA1DzB,SAACv8K,GACxB+8nB,EAAgB/8nB,EAAMy+D,cACzB,EAwDgF9wC,GAAI,CAAE7wB,EAAG,GAAlD,SACK8/mB,GAAAA,IAAY,aAAc,UAAC,GAAD,CAAQ17iB,IAAK07iB,GAAAA,IAAY,YAAa7Y,SAAU,CAAEhlD,eAAgB,eAAiBpxhB,GAAI,CAAEiC,MAAO,OAAQnE,OAAQ,WAAe,UAAC6xmB,GAAA,EAAD,CAAe3vmB,GAAI,CAAE/F,MAAO,gBAG9L,UAAC,GAAD,CACI+F,GAAI,CAAE0T,GAAI,QACVrkB,GAAG,cACH63kB,SAAUioC,EACVnvB,aAAc,CACVh5d,SAAU,MACVD,WAAY,SAEhBwhd,aAAW,EACXiB,gBAAiB,CACbxid,SAAU,MACVD,WAAY,SAEhBj3H,KAAMygH,QAAQ4+f,GACd3jC,QAxEZ,WACxB4jC,EAAgB,KACnB,EAwDmC,UAgBI,UAAC,GAAD,CAAUxgd,QAAS4gd,EAAnB,UACI,UAAC,GAAD,CAAYl5lB,UAAU,SAAtB,sCAe/C,ECvLc,SAASloC,GAAKiB,EAAI84c,GAC/B,OAAO,WACL,OAAO94c,EAAGga,MAAM8+b,EAAS/+b,UAC1B,CACF,CCAD,IAAOxa,GAAYU,OAAOgK,UAAnB1K,SACA8lD,GAAkBplD,OAAlBolD,eAEDs7kB,GAAU,SAAApunB,GAAK,OAAI,SAAAgQ,GACrB,IAAM5e,EAAMpE,GAASmB,KAAK6hB,GAC1B,OAAOhQ,EAAM5O,KAAS4O,EAAM5O,GAAOA,EAAIqD,MAAM,GAAI,GAAGyP,cACvD,CAHoB,CAAL,CAGbxW,OAAOwS,OAAO,OAEXmunB,GAAa,SAACt5nB,GAElB,OADAA,EAAOA,EAAKmP,cACL,SAAC8L,GAAD,OAAWo+mB,GAAOp+mB,KAAWjb,CAA7B,CACR,EAEKu5nB,GAAa,SAAAv5nB,GAAI,OAAI,SAAAib,GAAK,cAAWA,IAAUjb,CAArB,CAAT,EAShBP,GAAWD,MAAXC,QASD0qL,GAAcovc,GAAW,aAqB/B,IAAMzoL,GAAgBwoL,GAAW,eA2BjC,IAAMjukB,GAAWkukB,GAAW,UAQtB/vkB,GAAa+vkB,GAAW,YASxB70iB,GAAW60iB,GAAW,UAStBv+mB,GAAW,SAACC,GAAD,OAAqB,OAAVA,GAAmC,kBAAVA,CAApC,EAiBX8mB,GAAgB,SAAC3O,GACrB,GAAoB,WAAhBimmB,GAAOjmmB,GACT,OAAO,EAGT,IAAMzwB,EAAYo7C,GAAe3qB,GACjC,OAAsB,OAAdzwB,GAAsBA,IAAchK,OAAOgK,WAAkD,OAArChK,OAAOolD,eAAep7C,OAA0B4b,OAAOm4b,eAAetjb,MAAU7U,OAAO44G,YAAY/jG,EACpK,EASKijC,GAASijkB,GAAW,QASpBE,GAASF,GAAW,QASpBG,GAASH,GAAW,QASpBI,GAAaJ,GAAW,YAsCxBK,GAAoBL,GAAW,mBA2BrC,SAASj+nB,GAAQyU,EAAKpX,GAA+B,IAM/C4K,EACAqb,EAP+C,yDAAJ,CAAC,EAAG,IAA1Bi7mB,WAAAA,OAA0B,SAEnD,GAAY,OAAR9pnB,GAA+B,qBAARA,EAa3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGLrQ,GAAQqQ,GAEV,IAAKxM,EAAI,EAAGqb,EAAI7O,EAAIxU,OAAQgI,EAAIqb,EAAGrb,IACjC5K,EAAGU,KAAK,KAAM0W,EAAIxM,GAAIA,EAAGwM,OAEtB,CAEL,IAEI7S,EAFEtD,EAAOigoB,EAAajhoB,OAAO09C,oBAAoBvmC,GAAOnX,OAAOgB,KAAKmW,GAClE/D,EAAMpS,EAAK2B,OAGjB,IAAKgI,EAAI,EAAGA,EAAIyI,EAAKzI,IACnBrG,EAAMtD,EAAK2J,GACX5K,EAAGU,KAAK,KAAM0W,EAAI7S,GAAMA,EAAK6S,EAEhC,CACF,CAED,SAASuqd,GAAQvqd,EAAK7S,GACpBA,EAAMA,EAAIkS,cAIV,IAHA,IAEIa,EAFErW,EAAOhB,OAAOgB,KAAKmW,GACrBxM,EAAI3J,EAAK2B,OAENgI,KAAM,GAEX,GAAIrG,KADJ+S,EAAOrW,EAAK2J,IACK6L,cACf,OAAOa,EAGX,OAAO,IACR,CAED,IAAM6pnB,GAEsB,qBAAfnloB,WAAmCA,WACvB,qBAATC,KAAuBA,KAA0B,qBAAXC,OAAyBA,OAASC,OAGlFiloB,GAAmB,SAACh5kB,GAAD,OAAcqpI,GAAYrpI,IAAYA,IAAY+4kB,EAAlD,EAoDzB,IA8HsBE,GAAhBxoL,IAAgBwoL,GAKG,qBAAf7jL,YAA8Bn4Z,GAAem4Z,YAH9C,SAAAj7b,GACL,OAAO8+mB,IAAc9+mB,aAAiB8+mB,EACvC,GA4CGC,GAAaV,GAAW,mBAWxB9+mB,GAAkB,gBAAEA,EAAmE7hB,OAAOgK,UAA1E6X,eAAF,OAAsB,SAAC1K,EAAKtY,GAAN,OAAegjB,EAAephB,KAAK0W,EAAKtY,EAAxC,CAAtB,IASlB25c,GAAWmoL,GAAW,UAEtBW,GAAoB,SAACnqnB,EAAKm/gB,GAC9B,IAAMy9F,EAAc/znB,OAAOwmM,0BAA0BrvL,GAC/CoqnB,EAAqB,CAAC,EAE5B7+nB,GAAQqxnB,GAAa,SAAC9/kB,EAAY74C,IACO,IAAnCk7hB,EAAQrif,EAAY74C,EAAM+b,KAC5BoqnB,EAAmBnmoB,GAAQ64C,EAE9B,IAEDj0C,OAAO00f,iBAAiBv9e,EAAKoqnB,EAC9B,EAsDKC,GAAQ,6BAERC,GAAQ,aAERC,GAAW,CACfD,MAAAA,GACAD,MAAAA,GACAG,YAAaH,GAAQA,GAAM94lB,cAAgB+4lB,IAwB7C,IA+BMG,GAAYjB,GAAW,iBAK7B,IACE75nB,QAAAA,GACAqxc,cAAAA,GACAqG,SAlnBF,SAAkB/jb,GAChB,OAAe,OAARA,IAAiB+2J,GAAY/2J,IAA4B,OAApBA,EAAI4O,cAAyBmoJ,GAAY/2J,EAAI4O,cACpFwnB,GAAWp2B,EAAI4O,YAAYm1a,WAAa/jb,EAAI4O,YAAYm1a,SAAS/jb,EACvE,EAgnBConmB,WApeiB,SAACv/mB,GAClB,IAAIu9iB,EACJ,OAAOv9iB,IACgB,oBAAb5a,UAA2B4a,aAAiB5a,UAClDmpD,GAAWvuC,EAAM3a,UACY,cAA1Bk4jB,EAAO6gE,GAAOp+mB,KAEL,WAATu9iB,GAAqBhvgB,GAAWvuC,EAAMhjB,WAAkC,sBAArBgjB,EAAMhjB,YAIjE,EA0dCwioB,kBA9lBF,SAA2BrnmB,GAOzB,MAL4B,qBAAhBs7b,aAAiCA,YAAYgsK,OAC9ChsK,YAAYgsK,OAAOtnmB,GAElBA,GAASA,EAAI8pb,QAAYpM,GAAc19a,EAAI8pb,OAGxD,EAulBC7xZ,SAAAA,GACAq5B,SAAAA,GACAvuB,UA9iBgB,SAAAl7C,GAAK,OAAc,IAAVA,IAA4B,IAAVA,CAAtB,EA+iBrBD,SAAAA,GACA+mB,cAAAA,GACAooJ,YAAAA,GACA9zH,OAAAA,GACAmjkB,OAAAA,GACAC,OAAAA,GACAtoL,SAAAA,GACA3nZ,WAAAA,GACAmxkB,SA1fe,SAACvnmB,GAAD,OAASpY,GAASoY,IAAQo2B,GAAWp2B,EAAIwnmB,KAAzC,EA2ffjB,kBAAAA,GACApoL,aAAAA,GACAmoL,WAAAA,GACAr+nB,QAAAA,GACAq+B,MA9XF,SAASA,IAgBP,IAfA,MAAmBogmB,GAAiBn/nB,OAASA,MAAQ,CAAC,EAA/CkgoB,EAAP,EAAOA,SACD18nB,EAAS,CAAC,EACVi9c,EAAc,SAAChob,EAAKn2B,GACxB,IAAM69nB,EAAYD,GAAYxgK,GAAQl8d,EAAQlB,IAAQA,EAClD8kC,GAAc5jC,EAAO28nB,KAAe/4lB,GAAc3O,GACpDj1B,EAAO28nB,GAAaphmB,EAAMv7B,EAAO28nB,GAAY1nmB,GACpC2O,GAAc3O,GACvBj1B,EAAO28nB,GAAaphmB,EAAM,CAAC,EAAGtG,GACrB3zB,GAAQ2zB,GACjBj1B,EAAO28nB,GAAa1nmB,EAAI1zB,QAExBvB,EAAO28nB,GAAa1nmB,CAEvB,EAEQ9vB,EAAI,EAAGqb,EAAIlM,UAAUnX,OAAQgI,EAAIqb,EAAGrb,IAC3CmP,UAAUnP,IAAMjI,GAAQoX,UAAUnP,GAAI83c,GAExC,OAAOj9c,CACR,EA2WCiiD,OA/Va,SAAC1lC,EAAGC,EAAG62b,GAA8B,6DAAP,CAAC,EAAdooL,EAAoB,EAApBA,WAQ9B,OAPAv+nB,GAAQsf,GAAG,SAACyY,EAAKn2B,GACXu0c,GAAWhoZ,GAAWp2B,GACxB1Y,EAAEzd,GAAOxF,GAAK27B,EAAKo+a,GAEnB92b,EAAEzd,GAAOm2B,CAEZ,GAAE,CAACwmmB,WAAAA,IACGl/mB,CACR,EAuVCxd,KA3dW,SAACb,GAAD,OAASA,EAAIa,KACxBb,EAAIa,OAASb,EAAIE,QAAQ,qCAAsC,GADpD,EA4dXw+nB,SA/Ue,SAACvvlB,GAIhB,OAH8B,QAA1BA,EAAQ7mC,WAAW,KACrB6mC,EAAUA,EAAQ9rC,MAAM,IAEnB8rC,CACR,EA2UCwvlB,SAhUe,SAACh5lB,EAAai5lB,EAAkBx1nB,EAAOinnB,GACtD1qlB,EAAYr/B,UAAYhK,OAAOwS,OAAO8vnB,EAAiBt4nB,UAAW+pnB,GAClE1qlB,EAAYr/B,UAAUq/B,YAAcA,EACpCrpC,OAAOC,eAAeopC,EAAa,QAAS,CAC1CnpC,MAAOoioB,EAAiBt4nB,YAE1B8C,GAAS9M,OAAOmH,OAAOkiC,EAAYr/B,UAAW8C,EAC/C,EA0TCy1nB,aA/SmB,SAACC,EAAWC,EAASjmmB,EAAQkmmB,GAChD,IAAI51nB,EACAnC,EACA9L,EACE8rV,EAAS,CAAC,EAIhB,GAFA83S,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IADA93nB,GADAmC,EAAQ9M,OAAO09C,oBAAoB8klB,IACzB7/nB,OACHgI,KAAM,GACX9L,EAAOiO,EAAMnC,GACP+3nB,IAAcA,EAAW7joB,EAAM2joB,EAAWC,IAAc93S,EAAO9rV,KACnE4joB,EAAQ5joB,GAAQ2joB,EAAU3joB,GAC1B8rV,EAAO9rV,IAAQ,GAGnB2joB,GAAuB,IAAXhmmB,GAAoB4oB,GAAeo9kB,EAChD,OAAQA,KAAehmmB,GAAUA,EAAOgmmB,EAAWC,KAAaD,IAAcxioB,OAAOgK,WAEtF,OAAOy4nB,CACR,EAwRC/B,OAAAA,GACAC,WAAAA,GACA7tU,SA/Qe,SAACpvT,EAAK+jG,EAAcj7F,GACnC9I,EAAM+H,OAAO/H,SACIiG,IAAb6C,GAA0BA,EAAW9I,EAAIf,UAC3C6J,EAAW9I,EAAIf,QAEjB6J,GAAYi7F,EAAa9kG,OACzB,IAAMqV,EAAYtU,EAAIN,QAAQqkG,EAAcj7F,GAC5C,OAAsB,IAAfwL,GAAoBA,IAAcxL,CAC1C,EAwQCkjE,QA9Pc,SAACptD,GACf,IAAKA,EAAO,OAAO,KACnB,GAAIxb,GAAQwb,GAAQ,OAAOA,EAC3B,IAAI3X,EAAI2X,EAAM3f,OACd,IAAKopF,GAASphF,GAAI,OAAO,KAEzB,IADA,IAAMgoD,EAAM,IAAI9rD,MAAM8D,GACfA,KAAM,GACXgoD,EAAIhoD,GAAK2X,EAAM3X,GAEjB,OAAOgoD,CACR,EAqPCgwkB,aA3NmB,SAACxrnB,EAAKpX,GAOzB,IANA,IAIIyF,EAFEg5H,GAFYrnH,GAAOA,EAAIyO,OAAO44G,WAET/9H,KAAK0W,IAIxB3R,EAASg5H,EAASrxH,UAAY3H,EAAOorD,MAAM,CACjD,IAAMsC,EAAO1tD,EAAOtF,MACpBH,EAAGU,KAAK0W,EAAK+7C,EAAK,GAAIA,EAAK,GAC5B,CACF,EAiNC0vkB,SAvMe,SAACzjhB,EAAQz7G,GAIxB,IAHA,IAAIozB,EACE67B,EAAM,GAE4B,QAAhC77B,EAAUqoF,EAAOnuG,KAAKtN,KAC5BivD,EAAIvwD,KAAK00B,GAGX,OAAO67B,CACR,EA+LC0ukB,WAAAA,GACAx/mB,eAAAA,GACA8kd,WAAY9kd,GACZy/mB,kBAAAA,GACAuB,cAxJoB,SAAC1rnB,GACrBmqnB,GAAkBnqnB,GAAK,SAAC88B,EAAY74C,GAElC,GAAIy1D,GAAW15C,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAU/T,QAAQhI,GAC/D,OAAO,EAGT,IAAM8E,EAAQiX,EAAI/b,GAEby1D,GAAW3wD,KAEhB+zC,EAAWxuB,YAAa,EAEpB,aAAcwuB,EAChBA,EAAW9zC,UAAW,EAInB8zC,EAAW94C,MACd84C,EAAW94C,IAAM,WACf,MAAMoB,MAAM,qCAAwCnB,EAAO,IAC5D,GAEJ,GACF,EAiIC0noB,YA/HkB,SAACC,EAAer1nB,GAClC,IAAMyJ,EAAM,CAAC,EAEPovd,EAAS,SAAC5za,GACdA,EAAIjwD,SAAQ,SAAAxC,GACViX,EAAIjX,IAAS,CACd,GACF,EAID,OAFA4G,GAAQi8nB,GAAiBx8J,EAAOw8J,GAAiBx8J,EAAO96d,OAAOs3nB,GAAe1+nB,MAAMqJ,IAE7EyJ,CACR,EAoHC6rnB,YAhMkB,SAAAt/nB,GAClB,OAAOA,EAAI8S,cAAc5S,QAAQ,yBAC/B,SAAkB1E,EAAGwX,EAAIC,GACvB,OAAOD,EAAGgyB,cAAgB/xB,CAC3B,GAEJ,EA2LCmN,KAnHW,WAAQ,EAoHnBm/mB,eAlHqB,SAAC/ioB,EAAOkgC,GAE7B,OADAlgC,GAASA,EACFw6B,OAAOy4B,SAASjzD,GAASA,EAAQkgC,CACzC,EAgHCshc,QAAAA,GACAxle,OAAQgloB,GACRC,iBAAAA,GACAO,SAAAA,GACAwB,eAxGqB,WAGrB,IAHqE,IAA/CrznB,EAA+C,uDAAxC,GAAIsznB,EAAoC,uDAAzBzB,GAASC,YACjDj+nB,EAAM,GACHf,EAAUwgoB,EAAVxgoB,OACAkN,KACLnM,GAAOy/nB,EAAS53nB,KAAKqZ,SAAWjiB,EAAO,GAGzC,OAAOe,CACR,EAiGC0/nB,oBAxFF,SAA6B9gnB,GAC3B,SAAUA,GAASuuC,GAAWvuC,EAAM3a,SAAyC,aAA9B2a,EAAMsD,OAAOm4b,cAA+Bz7b,EAAMsD,OAAO44G,UACzG,EAuFC6kgB,aArFmB,SAAClsnB,GACpB,IAAM03X,EAAQ,IAAIhoY,MAAM,IA2BxB,OAzBc,SAARy8nB,EAAS/5lB,EAAQ5+B,GAErB,GAAI0X,GAASknB,GAAS,CACpB,GAAIslW,EAAMzrY,QAAQmmC,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxBslW,EAAMlkY,GAAK4+B,EACX,IAAM5vB,EAAS7S,GAAQyiC,GAAU,GAAK,CAAC,EASvC,OAPA7mC,GAAQ6mC,GAAQ,SAACrpC,EAAOoE,GACtB,IAAMi/nB,EAAeD,EAAMpjoB,EAAOyK,EAAI,IACrC6mL,GAAY+xc,KAAkB5pnB,EAAOrV,GAAOi/nB,EAC9C,IAED10P,EAAMlkY,QAAKhB,EAEJgQ,CACR,CACF,CAED,OAAO4vB,CACR,CAEM+5lB,CAAMnsnB,EAAK,EACnB,EAyDCyqnB,UAAAA,GACA4B,WAtDiB,SAAClhnB,GAAD,OACjBA,IAAUD,GAASC,IAAUuuC,GAAWvuC,KAAWuuC,GAAWvuC,EAAMxiB,OAAS+wD,GAAWvuC,EAAM/C,MAD7E,GC3oBnB,SAASkknB,GAAWrnoB,EAASC,EAAM0F,EAAQ8G,EAASP,GAClD/L,MAAMkE,KAAKuB,MAEPzF,MAAM2kB,kBACR3kB,MAAM2kB,kBAAkBlf,KAAMA,KAAKqnC,aAEnCrnC,KAAK6sY,OAAS,IAAItyY,OAASsyY,MAG7B7sY,KAAK5F,QAAUA,EACf4F,KAAK5G,KAAO,aACZiB,IAAS2F,KAAK3F,KAAOA,GACrB0F,IAAWC,KAAKD,OAASA,GACzB8G,IAAY7G,KAAK6G,QAAUA,GAC3BP,IAAatG,KAAKsG,SAAWA,EAC9B,CAED4rH,GAAMmugB,SAASoB,GAAYlnoB,MAAO,CAChCiyD,OAAQ,WACN,MAAO,CAELpyD,QAAS4F,KAAK5F,QACdhB,KAAM4G,KAAK5G,KAEXwpc,YAAa5ic,KAAK4ic,YAClB5ua,OAAQh0B,KAAKg0B,OAEb0tmB,SAAU1hoB,KAAK0hoB,SACfC,WAAY3hoB,KAAK2hoB,WACjBC,aAAc5hoB,KAAK4hoB,aACnB/0P,MAAO7sY,KAAK6sY,MAEZ9sY,OAAQmyH,GAAMmvgB,aAAarhoB,KAAKD,QAChC1F,KAAM2F,KAAK3F,KACXuM,OAAQ5G,KAAKsG,UAAYtG,KAAKsG,SAASM,OAAS5G,KAAKsG,SAASM,OAAS,KAE1E,IAGH,IAAMoB,GAAYy5nB,GAAWz5nB,UACvB+pnB,GAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEArxnB,SAAQ,SAAArG,GACR03nB,GAAY13nB,GAAQ,CAAC6D,MAAO7D,EAC7B,IAED2D,OAAO00f,iBAAiB+uI,GAAY1P,IACpC/znB,OAAOC,eAAe+J,GAAW,eAAgB,CAAC9J,OAAO,IAGzDujoB,GAAWj4nB,KAAO,SAACnK,EAAOhF,EAAM0F,EAAQ8G,EAASP,EAAUu7nB,GACzD,IAAMC,EAAa9joB,OAAOwS,OAAOxI,IAgBjC,OAdAkqH,GAAMqugB,aAAalhoB,EAAOyioB,GAAY,SAAgB3snB,GACpD,OAAOA,IAAQ5a,MAAMyN,SACtB,IAAE,SAAAnL,GACD,MAAgB,iBAATA,CACR,IAED4koB,GAAWhjoB,KAAKqjoB,EAAYzioB,EAAMjF,QAASC,EAAM0F,EAAQ8G,EAASP,GAElEw7nB,EAAWvV,MAAQltnB,EAEnByioB,EAAW1ooB,KAAOiG,EAAMjG,KAExByooB,GAAe7joB,OAAOmH,OAAO28nB,EAAYD,GAElCC,CACR,EAED,UCrFA,SAASC,GAAYzhnB,GACnB,OAAO4xG,GAAM9qF,cAAc9mB,IAAU4xG,GAAMptH,QAAQwb,EACpD,CASD,SAAS0hnB,GAAe1/nB,GACtB,OAAO4vH,GAAM4+L,SAASxuT,EAAK,MAAQA,EAAIyC,MAAM,GAAI,GAAKzC,CACvD,CAWD,SAAS2/nB,GAAUt/nB,EAAML,EAAK4/nB,GAC5B,OAAKv/nB,EACEA,EAAKsN,OAAO3N,GAAKyB,KAAI,SAAcuH,EAAO3C,GAG/C,OADA2C,EAAQ02nB,GAAe12nB,IACf42nB,GAAQv5nB,EAAI,IAAM2C,EAAQ,IAAMA,CACzC,IAAEmB,KAAKy1nB,EAAO,IAAM,IALH5/nB,CAMnB,CAaD,IAAM6/nB,GAAajwgB,GAAMqugB,aAAarugB,GAAO,CAAC,EAAG,MAAM,SAAgBr1H,GACrE,MAAO,WAAWuZ,KAAKvZ,EACxB,IA8JD,OArIA,SAAoBsY,EAAKu3U,EAAUtvV,GACjC,IAAK80H,GAAM7xG,SAASlL,GAClB,MAAM,IAAIu0B,UAAU,4BAItBgjT,EAAWA,GAAY,IAAyBhnV,SAYhD,IAAM08nB,GATNhloB,EAAU80H,GAAMqugB,aAAanjoB,EAAS,CACpCgloB,YAAY,EACZF,MAAM,EACNnhhB,SAAS,IACR,GAAO,SAAiBp0E,EAAQpF,GAEjC,OAAQ2qF,GAAMs9D,YAAYjoJ,EAAOoF,GAClC,KAE0By1lB,WAErBC,EAAUjloB,EAAQiloB,SAAWC,EAC7BJ,EAAO9koB,EAAQ8koB,KACfnhhB,EAAU3jH,EAAQ2jH,QAElBwhhB,GADQnloB,EAAQoloB,MAAwB,qBAATA,MAAwBA,OACpCtwgB,GAAMkvgB,oBAAoB10S,GAEnD,IAAKx6N,GAAMrjE,WAAWwzkB,GACpB,MAAM,IAAI34lB,UAAU,8BAGtB,SAAS+4lB,EAAavkoB,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIg0H,GAAMx2D,OAAOx9D,GACf,OAAOA,EAAMmlf,cAGf,IAAKk/I,GAAWrwgB,GAAM4sgB,OAAO5goB,GAC3B,MAAM,IAAIujoB,GAAW,gDAGvB,OAAIvvgB,GAAMikV,cAAcj4c,IAAUg0H,GAAM0kV,aAAa14c,GAC5CqkoB,GAA2B,oBAATC,KAAsB,IAAIA,KAAK,CAACtkoB,IAAUo9c,OAAO9xc,KAAKtL,GAG1EA,CACR,CAYD,SAASokoB,EAAepkoB,EAAOoE,EAAKK,GAClC,IAAIguD,EAAMzyD,EAEV,GAAIA,IAAUyE,GAAyB,kBAAVzE,EAC3B,GAAIg0H,GAAM4+L,SAASxuT,EAAK,MAEtBA,EAAM8/nB,EAAa9/nB,EAAMA,EAAIyC,MAAM,GAAI,GAEvC7G,EAAQ4H,KAAKC,UAAU7H,QAClB,GACJg0H,GAAMptH,QAAQ5G,IAnGvB,SAAqByyD,GACnB,OAAOuhE,GAAMptH,QAAQ6rD,KAASA,EAAIwB,KAAK4vkB,GACxC,CAiGgCW,CAAYxkoB,KACnCg0H,GAAM6sgB,WAAW7goB,IAAUg0H,GAAM4+L,SAASxuT,EAAK,SAAWquD,EAAMuhE,GAAMxkD,QAAQxvE,IAYhF,OATAoE,EAAM0/nB,GAAe1/nB,GAErBquD,EAAIjwD,SAAQ,SAAcw5D,EAAI/4D,IAC1B+wH,GAAMs9D,YAAYt1H,IAAc,OAAPA,GAAgBwyR,EAAS/mV,QAEtC,IAAZo7G,EAAmBkhhB,GAAU,CAAC3/nB,GAAMnB,EAAO+goB,GAAqB,OAAZnhhB,EAAmBz+G,EAAMA,EAAM,KACnFmgoB,EAAavokB,GAEhB,KACM,EAIX,QAAI6nkB,GAAY7joB,KAIhBwuV,EAAS/mV,OAAOs8nB,GAAUt/nB,EAAML,EAAK4/nB,GAAOO,EAAavkoB,KAElD,EACR,CAED,IAAM2uY,EAAQ,GAER81P,EAAiB3koB,OAAOmH,OAAOg9nB,GAAY,CAC/CG,eAAAA,EACAG,aAAAA,EACAV,YAAAA,KAyBF,IAAK7vgB,GAAM7xG,SAASlL,GAClB,MAAM,IAAIu0B,UAAU,0BAKtB,OA5BA,SAAS0rf,EAAMl3hB,EAAOyE,GACpB,IAAIuvH,GAAMs9D,YAAYtxL,GAAtB,CAEA,IAA8B,IAA1B2uY,EAAMzrY,QAAQlD,GAChB,MAAM3D,MAAM,kCAAoCoI,EAAK8J,KAAK,MAG5DogY,EAAMzsY,KAAKlC,GAEXg0H,GAAMxxH,QAAQxC,GAAO,SAAcg8D,EAAI53D,IAKtB,OAJE4vH,GAAMs9D,YAAYt1H,IAAc,OAAPA,IAAgBmokB,EAAQ5joB,KAChEiuV,EAAUxyR,EAAIg4D,GAAMxhE,SAASpuD,GAAOA,EAAIC,OAASD,EAAKK,EAAMggoB,KAI5DvtG,EAAMl7d,EAAIv3D,EAAOA,EAAKsN,OAAO3N,GAAO,CAACA,GAExC,IAEDuqY,EAAMj/U,KAlB8B,CAmBrC,CAMDwne,CAAMjghB,GAECu3U,CACR,EC5MD,SAASjrV,GAAOC,GACd,IAAMkhoB,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOjhoB,mBAAmBD,GAAKE,QAAQ,oBAAoB,SAAkBqN,GAC3E,OAAO2znB,EAAQ3znB,EAChB,GACF,CAUD,SAAS4znB,GAAqBv+nB,EAAQlH,GACpC4C,KAAK8ioB,OAAS,GAEdx+nB,GAAUy+nB,GAAWz+nB,EAAQtE,KAAM5C,EACpC,CAED,IAAM4K,GAAY66nB,GAAqB76nB,UAEvCA,GAAUrC,OAAS,SAAgBvM,EAAM8E,GACvC8B,KAAK8ioB,OAAO1ioB,KAAK,CAAChH,EAAM8E,GACzB,EAED8J,GAAU1K,SAAW,SAAkB0loB,GACrC,IAAMC,EAAUD,EAAU,SAAS9koB,GACjC,OAAO8koB,EAAQvkoB,KAAKuB,KAAM9B,EAAOuD,GAClC,EAAGA,GAEJ,OAAOzB,KAAK8ioB,OAAO/+nB,KAAI,SAAcmtD,GACnC,OAAO+xkB,EAAQ/xkB,EAAK,IAAM,IAAM+xkB,EAAQ/xkB,EAAK,GAC9C,GAAE,IAAIzkD,KAAK,IACb,EAED,UC5CA,SAAShL,GAAOg3B,GACd,OAAO92B,mBAAmB82B,GACxB72B,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACpB,CAWc,SAASshoB,GAASrgoB,EAAKyB,EAAQlH,GAE5C,IAAKkH,EACH,OAAOzB,EAGT,IAIIsgoB,EAJEF,EAAU7loB,GAAWA,EAAQqE,QAAUA,GAEvC2hoB,EAAchmoB,GAAWA,EAAQmP,UAYvC,GAPE42nB,EADEC,EACiBA,EAAY9+nB,EAAQlH,GAEpB80H,GAAM8sgB,kBAAkB16nB,GACzCA,EAAOhH,WACP,IAAIuloB,GAAqBv+nB,EAAQlH,GAASE,SAAS2loB,GAGjC,CACpB,IAAMI,EAAgBxgoB,EAAIzB,QAAQ,MAEX,IAAnBiioB,IACFxgoB,EAAMA,EAAIkC,MAAM,EAAGs+nB,IAErBxgoB,KAA8B,IAAtBA,EAAIzB,QAAQ,KAAc,IAAM,KAAO+hoB,CAChD,CAED,OAAOtgoB,CACR,KCQD,GAlEMygoB,WACJ,cAAc,gBACZtjoB,KAAKy/B,SAAW,EACjB,oCAUD,SAAIsgiB,EAAWwjE,EAAUnmoB,GAOvB,OANA4C,KAAKy/B,SAASr/B,KAAK,CACjB2/jB,UAAAA,EACAwjE,SAAAA,EACAC,cAAapmoB,GAAUA,EAAQomoB,YAC/BC,QAASrmoB,EAAUA,EAAQqmoB,QAAU,OAEhCzjoB,KAAKy/B,SAAS9+B,OAAS,CAC/B,sBASD,SAAMod,GACA/d,KAAKy/B,SAAS1hB,KAChB/d,KAAKy/B,SAAS1hB,GAAM,KAEvB,sBAOD,WACM/d,KAAKy/B,WACPz/B,KAAKy/B,SAAW,GAEnB,wBAYD,SAAQ1hC,GACNm0H,GAAMxxH,QAAQV,KAAKy/B,UAAU,SAAwBxjC,GACzC,OAANA,GACF8B,EAAG9B,EAEN,GACF,OA/DGqnoB,GCFN,IACEI,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCgDvB,IACE5xI,WAAW,EACXrge,QAAS,CACPnsB,gBCrDsC,qBAApBA,gBAAkCA,gBAAkBq9nB,GDsDtEn9nB,SEvD+B,qBAAbA,SAA2BA,SAAW,KFwDxD88nB,KGxD2B,qBAATA,KAAuBA,KAAO,MH0DlDqB,qBAvC4B,WAC5B,IAAIC,EACJ,OAAyB,qBAAdrmnB,WACyB,iBAAjCqmnB,EAAUrmnB,UAAUqmnB,UACT,iBAAZA,GACY,OAAZA,KAKuB,qBAAX7poB,QAA8C,qBAAbiI,SAChD,CAX6B,GAwC5B6hoB,8BAhB+B,qBAAtBC,mBAEPhqoB,gBAAgBgqoB,mBACc,oBAAvBhqoB,KAAKiqoB,cAcdC,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SI6BtD,OA3CA,SAAwBx3S,GACtB,SAASy3S,EAAUxhoB,EAAMzE,EAAOyZ,EAAQxW,GACtC,IAAI/H,EAAOuJ,EAAKxB,KACVijoB,EAAe1rmB,OAAOy4B,UAAU/3D,GAChCiroB,EAASljoB,GAASwB,EAAKhC,OAG7B,OAFAvH,GAAQA,GAAQ84H,GAAMptH,QAAQ6S,GAAUA,EAAOhX,OAASvH,EAEpDiroB,GACEnygB,GAAMyyW,WAAWhtd,EAAQve,GAC3Bue,EAAOve,GAAQ,CAACue,EAAOve,GAAO8E,GAE9ByZ,EAAOve,GAAQ8E,GAGTkmoB,IAGLzsnB,EAAOve,IAAU84H,GAAM7xG,SAAS1I,EAAOve,MAC1Cue,EAAOve,GAAQ,IAGF+qoB,EAAUxhoB,EAAMzE,EAAOyZ,EAAOve,GAAO+H,IAEtC+wH,GAAMptH,QAAQ6S,EAAOve,MACjCue,EAAOve,GA5Cb,SAAuBu3D,GACrB,IAEIhoD,EAEArG,EAJE6S,EAAM,CAAC,EACPnW,EAAOhB,OAAOgB,KAAK2xD,GAEnBv/C,EAAMpS,EAAK2B,OAEjB,IAAKgI,EAAI,EAAGA,EAAIyI,EAAKzI,IAEnBwM,EADA7S,EAAMtD,EAAK2J,IACAgoD,EAAIruD,GAEjB,OAAO6S,CACR,CAiCoBmvnB,CAAc3snB,EAAOve,MAG9BgroB,EACT,CAED,GAAIlygB,GAAM2tgB,WAAWnzS,IAAax6N,GAAMrjE,WAAW69R,EAASjoV,SAAU,CACpE,IAAM0Q,EAAM,CAAC,EAMb,OAJA+8G,GAAMyugB,aAAaj0S,GAAU,SAACtzV,EAAM8E,GAClCimoB,EAvEN,SAAuB/qoB,GAKrB,OAAO84H,GAAM0ugB,SAAS,gBAAiBxnoB,GAAM2K,KAAI,SAAAkL,GAC/C,MAAoB,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,EACnD,GACF,CA+Des1nB,CAAcnroB,GAAO8E,EAAOiX,EAAK,EAC5C,IAEMA,CACR,CAED,OAAO,IACR,EC/EKqvnB,GAAuB,CAC3B,oBAAgB78nB,GA4BlB,IAAMgsC,GAAW,CAEf8wlB,aAAcC,GAEdpliB,QAAS,CAAC,MAAO,QAEjBqliB,iBAAkB,CAAC,SAA0BrqoB,EAAMsJ,GACjD,IAiCIm7nB,EAjCEx4nB,EAAc3C,EAAQghoB,kBAAoB,GAC1CC,EAAqBt+nB,EAAYnF,QAAQ,qBAAuB,EAChE0joB,EAAkB5ygB,GAAM7xG,SAAS/lB,GAQvC,GANIwqoB,GAAmB5ygB,GAAMmtgB,WAAW/koB,KACtCA,EAAO,IAAIoL,SAASpL,IAGH43H,GAAM2tgB,WAAWvloB,GAGlC,OAAKuqoB,GAGEA,EAAqB/+nB,KAAKC,UAAUg/nB,GAAezqoB,IAFjDA,EAKX,GAAI43H,GAAMikV,cAAc77c,IACtB43H,GAAMsqV,SAASlid,IACf43H,GAAM8tgB,SAAS1loB,IACf43H,GAAM2sgB,OAAOvkoB,IACb43H,GAAM4sgB,OAAOxkoB,GAEb,OAAOA,EAET,GAAI43H,GAAM4tgB,kBAAkBxloB,GAC1B,OAAOA,EAAKiod,OAEd,GAAIrwV,GAAM8sgB,kBAAkB1koB,GAE1B,OADAsJ,EAAQohoB,eAAe,mDAAmD,GACnE1qoB,EAAKgD,WAKd,GAAIwnoB,EAAiB,CACnB,GAAIv+nB,EAAYnF,QAAQ,sCAAwC,EAC9D,OC7EO,SAA0B9G,EAAM8C,GAC7C,OAAO2loB,GAAWzooB,EAAM,IAAIb,GAAAA,QAAAA,gBAAoCuE,OAAOmH,OAAO,CAC5Ek9nB,QAAS,SAASnkoB,EAAOoE,EAAKK,EAAMsioB,GAClC,OAAIxroB,GAAAA,QAAmBy4H,GAAMsqV,SAASt+c,IACpC8B,KAAK2F,OAAOrD,EAAKpE,EAAMZ,SAAS,YACzB,GAGF2noB,EAAQ3C,eAAevqnB,MAAM/X,KAAM8X,UAC3C,GACA1a,GACJ,CDkEc8noB,CAAiB5qoB,EAAM0F,KAAKmloB,gBAAgB7noB,WAGrD,IAAKyhoB,EAAa7sgB,GAAM6sgB,WAAWzkoB,KAAUiM,EAAYnF,QAAQ,wBAA0B,EAAG,CAC5F,IAAMgkoB,EAAYploB,KAAKqloB,KAAOrloB,KAAKqloB,IAAI3/nB,SAEvC,OAAOq9nB,GACLhE,EAAa,CAAC,UAAWzkoB,GAAQA,EACjC8qoB,GAAa,IAAIA,EACjBploB,KAAKmloB,eAER,CACF,CAED,OAAIL,GAAmBD,GACrBjhoB,EAAQohoB,eAAe,oBAAoB,GA1EjD,SAAyBl5Y,EAAUr0K,EAAQurjB,GACzC,GAAI9wgB,GAAMxhE,SAASo7L,GACjB,IAEE,OADCr0K,GAAU3xE,KAAK6G,OAAOm/O,GAChB55H,GAAM3vH,KAAKupP,EAKnB,CAJC,MAAO7iP,GACP,GAAe,gBAAXA,EAAE7P,KACJ,MAAM6P,CAET,CAGH,OAAQ+5nB,GAAWl9nB,KAAKC,WAAW+lP,EACpC,CA8DYw5Y,CAAgBhroB,IAGlBA,CACR,GAEDiroB,kBAAmB,CAAC,SAA2BjroB,GAC7C,IAAMmqoB,EAAezkoB,KAAKykoB,cAAgB9wlB,GAAS8wlB,aAC7Cd,EAAoBc,GAAgBA,EAAad,kBACjD6B,EAAsC,SAAtBxloB,KAAKyG,aAE3B,GAAInM,GAAQ43H,GAAMxhE,SAASp2D,KAAWqpoB,IAAsB3joB,KAAKyG,cAAiB++nB,GAAgB,CAChG,IACMC,IADoBhB,GAAgBA,EAAaf,oBACP8B,EAEhD,IACE,OAAO1/nB,KAAK6G,MAAMrS,EAQnB,CAPC,MAAO2O,GACP,GAAIw8nB,EAAmB,CACrB,GAAe,gBAAXx8nB,EAAE7P,KACJ,MAAMqooB,GAAAA,KAAgBx4nB,EAAGw4nB,GAAAA,iBAA6BzhoB,KAAM,KAAMA,KAAKsG,UAEzE,MAAM2C,CACP,CACF,CACF,CAED,OAAO3O,CACR,GAMDysC,QAAS,EAET2+lB,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBR,IAAK,CACH3/nB,SAAUjM,GAAAA,QAAAA,SACV+ooB,KAAM/ooB,GAAAA,QAAAA,MAGRqsoB,eAAgB,SAAwBl/nB,GACtC,OAAOA,GAAU,KAAOA,EAAS,GAClC,EAEDhD,QAAS,CACPgiB,OAAQ,CACN,OAAU,uCAKhBssG,GAAMxxH,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6B0E,GACpEuuC,GAAS/vC,QAAQwB,GAAU,CAAC,CAC7B,IAED8sH,GAAMxxH,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B0E,GACrEuuC,GAAS/vC,QAAQwB,GAAU8sH,GAAMnzF,MAAMylmB,GACxC,IAED,UE/JMuB,GAAoB7zgB,GAAM4ugB,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtBkF,GAAapinB,OAAO,aAE1B,SAASqinB,GAAgBphgB,GACvB,OAAOA,GAAUp7H,OAAOo7H,GAAQtiI,OAAOiS,aACxC,CAED,SAAS0xnB,GAAehooB,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFg0H,GAAMptH,QAAQ5G,GAASA,EAAM6F,IAAImioB,IAAkBz8nB,OAAOvL,EAClE,CAgBD,SAASiooB,GAAiBhglB,EAASjoD,EAAO2mI,EAAQrqG,EAAQ4rmB,GACxD,OAAIl0gB,GAAMrjE,WAAWr0B,GACZA,EAAO/7B,KAAKuB,KAAM9B,EAAO2mI,IAG9BuhgB,IACFlooB,EAAQ2mI,GAGL3S,GAAMxhE,SAASxyD,GAEhBg0H,GAAMxhE,SAASl2B,IACiB,IAA3Bt8B,EAAMkD,QAAQo5B,GAGnB03F,GAAMskV,SAASh8a,GACVA,EAAOpkB,KAAKlY,QADrB,OANA,EASD,KAsBKmooB,GAAAA,SAAAA,EAAAA,GACJ,WAAYzioB,IAAS,gBACnBA,GAAW5D,KAAK7G,IAAIyK,EACrB,oCAED,SAAIihI,EAAQyhgB,EAAgBC,GAC1B,IAAMvsoB,EAAOgG,KAEb,SAASwmoB,EAAUp6kB,EAAQg0Y,EAASqmM,GAClC,IAAMC,EAAUT,GAAgB7lM,GAEhC,IAAKsmM,EACH,MAAM,IAAInsoB,MAAM,0CAGlB,IAAM+H,EAAM4vH,GAAMwtW,QAAQ1le,EAAM0soB,KAE5BpkoB,QAAqBqF,IAAd3N,EAAKsI,KAAmC,IAAbmkoB,QAAmC9+nB,IAAb8+nB,IAAwC,IAAdzsoB,EAAKsI,MACzFtI,EAAKsI,GAAO89b,GAAW8lM,GAAe95kB,GAEzC,CAED,IAAMu6kB,EAAa,SAAC/ioB,EAAS6ioB,GAAV,OACjBv0gB,GAAMxxH,QAAQkD,GAAS,SAACwoD,EAAQg0Y,GAAT,OAAqBomM,EAAUp6kB,EAAQg0Y,EAASqmM,EAAhD,GADN,EAWnB,OARIv0gB,GAAM9qF,cAAcy9F,IAAWA,aAAkB7kI,KAAKqnC,YACxDs/lB,EAAW9hgB,EAAQyhgB,GACXp0gB,GAAMxhE,SAASm0E,KAAYA,EAASA,EAAOtiI,UArEtB,iCAAiC6T,KAqEmByuH,EArEVtiI,QAsEvEokoB,ED1EN,SAAeC,GACb,IACItkoB,EACAm2B,EACA9vB,EAHEyF,EAAS,CAAC,EAyBhB,OApBAw4nB,GAAcA,EAAWvkoB,MAAM,MAAM3B,SAAQ,SAAgB4J,GAC3D3B,EAAI2B,EAAKlJ,QAAQ,KACjBkB,EAAMgI,EAAKwW,UAAU,EAAGnY,GAAGpG,OAAOiS,cAClCikB,EAAMnuB,EAAKwW,UAAUnY,EAAI,GAAGpG,QAEvBD,GAAQ8L,EAAO9L,IAAQyjoB,GAAkBzjoB,KAIlC,eAARA,EACE8L,EAAO9L,GACT8L,EAAO9L,GAAKlC,KAAKq4B,GAEjBrqB,EAAO9L,GAAO,CAACm2B,GAGjBrqB,EAAO9L,GAAO8L,EAAO9L,GAAO8L,EAAO9L,GAAO,KAAOm2B,EAAMA,EAE1D,IAEMrqB,CA1BT,CC0EiBy4nB,CAAahigB,GAASyhgB,GAEvB,MAAVzhgB,GAAkB2hgB,EAAUF,EAAgBzhgB,EAAQ0hgB,GAG/CvmoB,IACR,oBAED,SAAI6kI,EAAQptD,GAGV,GAFAotD,EAASohgB,GAAgBphgB,GAEb,CACV,IAAMviI,EAAM4vH,GAAMwtW,QAAQ1/d,KAAM6kI,GAEhC,GAAIviI,EAAK,CACP,IAAMpE,EAAQ8B,KAAKsC,GAEnB,IAAKm1E,EACH,OAAOv5E,EAGT,IAAe,IAAXu5E,EACF,OAxGV,SAAqB/1E,GAKnB,IAJA,IAEIuN,EAFEytH,EAAS1+H,OAAOwS,OAAO,MACvBs2nB,EAAW,mCAGT73nB,EAAQ63nB,EAAS93nB,KAAKtN,IAC5Bg7H,EAAOztH,EAAM,IAAMA,EAAM,GAG3B,OAAOytH,CACR,CA8FgBqqgB,CAAY7ooB,GAGrB,GAAIg0H,GAAMrjE,WAAW4oB,GACnB,OAAOA,EAAOh5E,KAAKuB,KAAM9B,EAAOoE,GAGlC,GAAI4vH,GAAMskV,SAAS/+X,GACjB,OAAOA,EAAOzoE,KAAK9Q,GAGrB,MAAM,IAAIwrC,UAAU,yCACrB,CACF,CACF,oBAED,SAAIm7F,EAAQw6W,GAGV,GAFAx6W,EAASohgB,GAAgBphgB,GAEb,CACV,IAAMviI,EAAM4vH,GAAMwtW,QAAQ1/d,KAAM6kI,GAEhC,SAAUviI,QAAqBqF,IAAd3H,KAAKsC,IAAwB+8e,IAAW8mJ,GAAiBnmoB,EAAMA,KAAKsC,GAAMA,EAAK+8e,GACjG,CAED,OAAO,CACR,uBAED,SAAOx6W,EAAQw6W,GACb,IAAMrlf,EAAOgG,KACTykkB,GAAU,EAEd,SAASuiE,EAAa5mM,GAGpB,GAFAA,EAAU6lM,GAAgB7lM,GAEb,CACX,IAAM99b,EAAM4vH,GAAMwtW,QAAQ1le,EAAMomc,IAE5B99b,GAAS+8e,IAAW8mJ,GAAiBnsoB,EAAMA,EAAKsI,GAAMA,EAAK+8e,YACtDrlf,EAAKsI,GAEZmikB,GAAU,EAEb,CACF,CAQD,OANIvyc,GAAMptH,QAAQ+/H,GAChBA,EAAOnkI,QAAQsmoB,GAEfA,EAAanigB,GAGR4/b,CACR,sBAED,SAAMplF,GAKJ,IAJA,IAAMrgf,EAAOhB,OAAOgB,KAAKgB,MACrB2I,EAAI3J,EAAK2B,OACT8jkB,GAAU,EAEP97jB,KAAK,CACV,IAAMrG,EAAMtD,EAAK2J,GACb02e,IAAW8mJ,GAAiBnmoB,EAAMA,KAAKsC,GAAMA,EAAK+8e,GAAS,YACtDr/e,KAAKsC,GACZmikB,GAAU,EAEb,CAED,OAAOA,CACR,0BAED,SAAU5sgB,GACR,IAAM79D,EAAOgG,KACP4D,EAAU,CAAC,EAsBjB,OApBAsuH,GAAMxxH,QAAQV,MAAM,SAAC9B,EAAO2mI,GAC1B,IAAMviI,EAAM4vH,GAAMwtW,QAAQ97d,EAASihI,GAEnC,GAAIviI,EAGF,OAFAtI,EAAKsI,GAAO4joB,GAAehooB,eACpBlE,EAAK6qI,GAId,IAAM3gI,EAAa2zD,EA1JzB,SAAsBgtE,GACpB,OAAOA,EAAOtiI,OACXiS,cAAc5S,QAAQ,mBAAmB,SAACmgH,EAAGjxD,EAAMpvD,GAClD,OAAOovD,EAAKpqB,cAAgBhlC,CAC7B,GACJ,CAqJiCuloB,CAAapigB,GAAUp7H,OAAOo7H,GAAQtiI,OAE9D2B,IAAe2gI,UACV7qI,EAAK6qI,GAGd7qI,EAAKkK,GAAcgioB,GAAehooB,GAElC0F,EAAQM,IAAc,CACvB,IAEMlE,IACR,uBAED,WAAmB,6BAAT+vE,EAAS,yBAATA,EAAS,gBACjB,OAAO,EAAA/vE,KAAKqnC,aAAYp3B,OAAjB,SAAwBjQ,MAAxB,OAAiC+vE,GACzC,uBAED,SAAOm3jB,GACL,IAAM/xnB,EAAMnX,OAAOwS,OAAO,MAM1B,OAJA0hH,GAAMxxH,QAAQV,MAAM,SAAC9B,EAAO2mI,GACjB,MAAT3mI,IAA2B,IAAVA,IAAoBiX,EAAI0vH,GAAUqigB,GAAah1gB,GAAMptH,QAAQ5G,GAASA,EAAMuO,KAAK,MAAQvO,EAC3G,IAEMiX,CACR,gBAED,WACE,OAAOnX,OAAOyG,QAAQzE,KAAKwsD,UAAU5oC,OAAO44G,WAC7C,yBAED,WACE,OAAOx+H,OAAOyG,QAAQzE,KAAKwsD,UAAUzoD,KAAI,2CAA8B,KAA9B,QAA4C0I,KAAK,KAC3F,cAED,WACE,MAAO,cACR,uBAED,SAAY6T,GACV,OAAOA,aAAiBtgB,KAAOsgB,EAAQ,IAAItgB,KAAKsgB,EACjD,uBAED,SAAcy0B,GAAmB,IAC/B,IAAMwua,EAAW,IAAIvjd,KAAK+0C,GADK,mBAATg7B,EAAS,iCAATA,EAAS,kBAK/B,OAFAA,EAAQrvE,SAAQ,SAACiX,GAAD,OAAY4rc,EAASpqd,IAAIwe,EAAzB,IAET4rc,CACR,yBAED,SAAgB1+U,GACd,IAIMsigB,GAJYnnoB,KAAKgmoB,IAAehmoB,KAAKgmoB,IAAc,CACvDmB,UAAW,CAAC,IAGcA,UACtBn/nB,EAAYhI,KAAKgI,UAEvB,SAASo/nB,EAAehnM,GACtB,IAAMsmM,EAAUT,GAAgB7lM,GAE3B+mM,EAAUT,MAlNrB,SAAwBvxnB,EAAK0vH,GAC3B,IAAMwigB,EAAen1gB,GAAM8ugB,YAAY,IAAMn8f,GAE7C,CAAC,MAAO,MAAO,OAAOnkI,SAAQ,SAAAuhD,GAC5BjkD,OAAOC,eAAekX,EAAK8sC,EAAaollB,EAAc,CACpDnpoB,MAAO,SAASk9K,EAAMu6W,EAAMgD,GAC1B,OAAO34hB,KAAKiiD,GAAYxjD,KAAKuB,KAAM6kI,EAAQu2C,EAAMu6W,EAAMgD,EACxD,EACDv6hB,cAAc,GAEjB,GACF,CAwMOkpoB,CAAet/nB,EAAWo4b,GAC1B+mM,EAAUT,IAAW,EAExB,CAID,OAFAx0gB,GAAMptH,QAAQ+/H,GAAUA,EAAOnkI,QAAQ0moB,GAAkBA,EAAevigB,GAEjE7kI,IACR,OA9MGqmoB,CAkKHzinB,OAAO44G,SAQH54G,OAAOm4b,aAuCdsqL,GAAakB,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAEpGr1gB,GAAM2ugB,cAAcwF,GAAar+nB,WACjCkqH,GAAM2ugB,cAAcwF,IAEpB,UCjRe,SAASmB,GAAcC,EAAKnhoB,GACzC,IAAMvG,EAASC,MAAQ2zC,GACjBwS,EAAU7/C,GAAYvG,EACtB6D,EAAUyioB,GAAAA,KAAkBlglB,EAAQviD,SACtCtJ,EAAO6rD,EAAQ7rD,KAQnB,OANA43H,GAAMxxH,QAAQ+moB,GAAK,SAAmB1poB,GACpCzD,EAAOyD,EAAGU,KAAKsB,EAAQzF,EAAMsJ,EAAQmyD,YAAazvD,EAAWA,EAASM,YAASe,EAChF,IAED/D,EAAQmyD,YAEDz7D,CACR,CCzBc,SAASotoB,GAASxpoB,GAC/B,SAAUA,IAASA,EAAMypoB,WAC1B,CCUD,SAASC,GAAcxtoB,EAAS2F,EAAQ8G,GAEtC46nB,GAAAA,KAAgBzhoB,KAAiB,MAAX5F,EAAkB,WAAaA,EAASqnoB,GAAAA,aAAyB1hoB,EAAQ8G,GAC/F7G,KAAK5G,KAAO,eACb,CAED84H,GAAMmugB,SAASuH,GAAenG,GAAY,CACxCkG,YAAY,IAGd,UCnBA,OAAeluoB,GAAAA,qBAIJ,CACL+pkB,MAAO,SAAepqkB,EAAM8E,EAAOwE,EAASC,EAAMC,EAAQiloB,GACxD,IAAM1loB,EAAS,GACfA,EAAO/B,KAAKhH,EAAO,IAAMuI,mBAAmBzD,IAExCg0H,GAAMnoC,SAASrnF,IACjBP,EAAO/B,KAAK,WAAa,IAAI0C,KAAKJ,GAASoloB,eAGzC51gB,GAAMxhE,SAAS/tD,IACjBR,EAAO/B,KAAK,QAAUuC,GAGpBuvH,GAAMxhE,SAAS9tD,IACjBT,EAAO/B,KAAK,UAAYwC,IAGX,IAAXiloB,GACF1loB,EAAO/B,KAAK,UAGd8B,SAASC,OAASA,EAAOsK,KAAK,KAC/B,EAED6riB,KAAM,SAAcl/iB,GAClB,IAAM6V,EAAQ/M,SAASC,OAAO8M,MAAM,IAAI2oB,OAAO,aAAex+B,EAAO,cACrE,OAAQ6V,EAAQpN,mBAAmBoN,EAAM,IAAM,IAChD,EAEDvR,OAAQ,SAAgBtE,GACtB4G,KAAKwjkB,MAAMpqkB,EAAM,GAAI0J,KAAKygE,MAAQ,MACnC,GAMI,CACLiggB,MAAO,WAAmB,EAC1BlrB,KAAM,WAAkB,OAAO,IAAO,EACtC56iB,OAAQ,WAAoB,GClCnB,SAASqqoB,GAAcC,EAASC,GAC7C,OAAID,ICHG,8BAA8B5xnB,KDGP6xnB,GENjB,SAAqBD,EAASE,GAC3C,OAAOA,EACHF,EAAQpmoB,QAAQ,OAAQ,IAAM,IAAMsmoB,EAAYtmoB,QAAQ,OAAQ,IAChEomoB,CACL,CFGUG,CAAYH,EAASC,GAEvBA,CACR,CGfD,OAAexuoB,GAAAA,qBAIZ,WACC,IAEI2uoB,EAFEvzlB,EAAO,kBAAkBz+B,KAAKqH,UAAUm3B,WACxCyzlB,EAAiBnmoB,SAASmG,cAAc,KAS9C,SAASigoB,EAAWzloB,GAClB,IAAIg5F,EAAOh5F,EAWX,OATIgyC,IAEFwzlB,EAAe//nB,aAAa,OAAQuzF,GACpCA,EAAOwsiB,EAAexsiB,MAGxBwsiB,EAAe//nB,aAAa,OAAQuzF,GAG7B,CACLA,KAAMwsiB,EAAexsiB,KACrBqB,SAAUmriB,EAAenriB,SAAWmriB,EAAenriB,SAASt7F,QAAQ,KAAM,IAAM,GAChFinD,KAAMw/kB,EAAex/kB,KACrB/+C,OAAQu+nB,EAAev+nB,OAASu+nB,EAAev+nB,OAAOlI,QAAQ,MAAO,IAAM,GAC3EiN,KAAMw5nB,EAAex5nB,KAAOw5nB,EAAex5nB,KAAKjN,QAAQ,KAAM,IAAM,GACpEqrkB,SAAUo7D,EAAep7D,SACzBza,KAAM61E,EAAe71E,KACrBolB,SAAiD,MAAtCywD,EAAezwD,SAAS37jB,OAAO,GACxCosnB,EAAezwD,SACf,IAAMywD,EAAezwD,SAE1B,CAUD,OARAwwD,EAAYE,EAAWruoB,OAAO04B,SAASkpE,MAQhC,SAAyB0siB,GAC9B,IAAMn6nB,EAAU8jH,GAAMxhE,SAAS63kB,GAAeD,EAAWC,GAAcA,EACvE,OAAQn6nB,EAAO8uF,WAAakriB,EAAUlriB,UAClC9uF,EAAOy6C,OAASu/kB,EAAUv/kB,IAC/B,CACF,CAlDA,GAsDQ,WACL,OAAO,CACR,ECXL,OA9CA,SAAqB2/kB,EAAc3lnB,GACjC2lnB,EAAeA,GAAgB,GAC/B,IAIIC,EAJEjtnB,EAAQ,IAAI3W,MAAM2joB,GAClBE,EAAa,IAAI7joB,MAAM2joB,GACzBl5nB,EAAO,EACPimI,EAAO,EAKX,OAFA1yH,OAAclb,IAARkb,EAAoBA,EAAM,IAEzB,SAAc8lnB,GACnB,IAAMplkB,EAAMzgE,KAAKygE,MAEXqlkB,EAAYF,EAAWnzf,GAExBkzf,IACHA,EAAgBllkB,GAGlB/nD,EAAMlM,GAAQq5nB,EACdD,EAAWp5nB,GAAQi0D,EAKnB,IAHA,IAAI56D,EAAI4sI,EACJszf,EAAa,EAEVlgoB,IAAM2G,GACXu5nB,GAAcrtnB,EAAM7S,KACpBA,GAAQ6/nB,EASV,IANAl5nB,GAAQA,EAAO,GAAKk5nB,KAEPjzf,IACXA,GAAQA,EAAO,GAAKizf,KAGlBjlkB,EAAMklkB,EAAgB5lnB,GAA1B,CAIA,IAAMimnB,EAASF,GAAarlkB,EAAMqlkB,EAElC,OAAOE,EAASv/nB,KAAKoZ,MAAmB,IAAbkmnB,EAAoBC,QAAUnhoB,CAJxD,CAKF,CACF,ECpCD,SAASohoB,GAAqBvooB,EAAUwooB,GACtC,IAAIC,EAAgB,EACdC,EAAeC,GAAY,GAAI,KAErC,OAAO,SAAAlgoB,GACL,IAAM2skB,EAAS3skB,EAAE2skB,OACX55c,EAAQ/yH,EAAEmgoB,iBAAmBngoB,EAAE+yH,WAAQr0H,EACvC0hoB,EAAgBzzD,EAASqzD,EACzBK,EAAOJ,EAAaG,GAG1BJ,EAAgBrzD,EAEhB,IAAMt7kB,EAAO,CACXs7kB,OAAAA,EACA55c,MAAAA,EACAutgB,SAAUvtgB,EAAS45c,EAAS55c,OAASr0H,EACrC6T,MAAO6tnB,EACPC,KAAMA,QAAc3hoB,EACpB6hoB,UAAWF,GAAQttgB,GAVL45c,GAAU55c,GAUeA,EAAQ45c,GAAU0zD,OAAO3hoB,EAChE5G,MAAOkI,GAGT3O,EAAK0uoB,EAAmB,WAAa,WAAY,EAEjDxooB,EAASlG,EACV,CACF,CAED,ICxCMmvoB,GAAgB,CACpBC,KCLF,KDMEv+iB,IDsCsD,qBAAnB+P,gBAEG,SAAUn7F,GAChD,OAAO,IAAIpB,SAAQ,SAA4BC,EAASY,GACtD,IAGImqoB,EAHAC,EAAc7poB,EAAOzF,KACnBuvoB,EAAiBxD,GAAAA,KAAkBtmoB,EAAO6D,SAASmyD,YACnDtvD,EAAe1G,EAAO0G,aAE5B,SAASmoD,IACH7uD,EAAO+poB,aACT/poB,EAAO+poB,YAAYzye,YAAYsye,GAG7B5poB,EAAO4thB,QACT5thB,EAAO4thB,OAAOnshB,oBAAoB,QAASmooB,EAE9C,CAEGz3gB,GAAM2tgB,WAAW+J,KACfnwoB,GAAAA,sBAAiCA,GAAAA,8BACnCowoB,EAAe7E,gBAAe,GAE9B6E,EAAe7E,eAAe,wBAAwB,IAI1D,IAAIn+nB,EAAU,IAAIq0F,eAGlB,GAAIn7F,EAAO49iB,KAAM,CACf,IAAM//c,EAAW79F,EAAO49iB,KAAK//c,UAAY,GACnC7pE,EAAWh0B,EAAO49iB,KAAK5phB,SAAWkvc,SAASthe,mBAAmB5B,EAAO49iB,KAAK5phB,WAAa,GAC7F81mB,EAAe1woB,IAAI,gBAAiB,SAAWmiB,KAAKsiF,EAAW,IAAM7pE,GACtE,CAED,IAAMqgT,EAAW2zT,GAAchooB,EAAOiooB,QAASjooB,EAAO8C,KAOtD,SAASknoB,IACP,GAAKljoB,EAAL,CAIA,IAAMmjoB,EAAkB3D,GAAAA,KACtB,0BAA2Bx/nB,GAAWA,EAAQojoB,0BGhFvC,SAAgBrroB,EAASY,EAAQ8G,GAC9C,IAAMw/nB,EAAiBx/nB,EAASvG,OAAO+loB,eAClCx/nB,EAASM,QAAWk/nB,IAAkBA,EAAex/nB,EAASM,QAGjEpH,EAAO,IAAIiioB,GACT,mCAAqCn7nB,EAASM,OAC9C,CAAC66nB,GAAAA,gBAA4BA,GAAAA,kBAA6Bl4nB,KAAKo/D,MAAMriE,EAASM,OAAS,KAAO,GAC9FN,EAASvG,OACTuG,EAASO,QACTP,IAPF1H,EAAQ0H,EAUX,CHgFK4joB,EAAO,SAAkBhsoB,GACvBU,EAAQV,GACR0wD,GACD,IAAE,SAAiBxvD,GAClBI,EAAOJ,GACPwvD,GACD,GAfgB,CACft0D,KAHoBmM,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxCI,EAAQP,SAA/BO,EAAQo3F,aAGRr3F,OAAQC,EAAQD,OAChBykF,WAAYxkF,EAAQwkF,WACpBznF,QAASomoB,EACTjqoB,OAAAA,EACA8G,QAAAA,IAYFA,EAAU,IAzBT,CA0BF,CAmED,GArGAA,EAAQ2X,KAAKze,EAAOqF,OAAOshC,cAAew8lB,GAAS9uT,EAAUr0U,EAAOuE,OAAQvE,EAAOoqoB,mBAAmB,GAGtGtjoB,EAAQkgC,QAAUhnC,EAAOgnC,QAiCrB,cAAelgC,EAEjBA,EAAQkjoB,UAAYA,EAGpBljoB,EAAQk3F,mBAAqB,WACtBl3F,GAAkC,IAAvBA,EAAQ0hD,aAQD,IAAnB1hD,EAAQD,QAAkBC,EAAQujoB,aAAwD,IAAzCvjoB,EAAQujoB,YAAYhpoB,QAAQ,WAKjFm0B,WAAWw0mB,EACZ,EAIHljoB,EAAQy3F,QAAU,WACXz3F,IAILrH,EAAO,IAAIiioB,GAAW,kBAAmBA,GAAAA,aAAyB1hoB,EAAQ8G,IAG1EA,EAAU,KACX,EAGDA,EAAQpD,QAAU,WAGhBjE,EAAO,IAAIiioB,GAAW,gBAAiBA,GAAAA,YAAwB1hoB,EAAQ8G,IAGvEA,EAAU,IACX,EAGDA,EAAQknkB,UAAY,WAClB,IAAIs8D,EAAsBtqoB,EAAOgnC,QAAU,cAAgBhnC,EAAOgnC,QAAU,cAAgB,mBACtF09lB,EAAe1koB,EAAO0koB,cAAgBC,GACxC3koB,EAAOsqoB,sBACTA,EAAsBtqoB,EAAOsqoB,qBAE/B7qoB,EAAO,IAAIiioB,GACT4I,EACA5F,EAAab,oBAAsBnC,GAAAA,UAAuBA,GAAAA,aAC1D1hoB,EACA8G,IAGFA,EAAU,IACX,EAKGpN,GAAAA,qBAA+B,CAEjC,IAAM6woB,GAAavqoB,EAAOwqoB,iBAAmBC,GAAgBp2T,KACxDr0U,EAAO2loB,gBAAkBzjoB,GAAQq2iB,KAAKv4iB,EAAO2loB,gBAE9C4E,GACFT,EAAe1woB,IAAI4G,EAAO4loB,eAAgB2E,EAE7C,MAGe3ioB,IAAhBiioB,GAA6BC,EAAe7E,eAAe,MAGvD,qBAAsBn+nB,GACxBqrH,GAAMxxH,QAAQmpoB,EAAer9kB,UAAU,SAA0B/zB,EAAKn2B,GACpEuE,EAAQ23F,iBAAiBl8F,EAAKm2B,EAC/B,IAIEy5F,GAAMs9D,YAAYzvL,EAAOwqoB,mBAC5B1joB,EAAQ0joB,kBAAoBxqoB,EAAOwqoB,iBAIjC9joB,GAAiC,SAAjBA,IAClBI,EAAQJ,aAAe1G,EAAO0G,cAIS,oBAA9B1G,EAAO0qoB,oBAChB5joB,EAAQtF,iBAAiB,WAAYwnoB,GAAqBhpoB,EAAO0qoB,oBAAoB,IAIhD,oBAA5B1qoB,EAAO2qoB,kBAAmC7joB,EAAQi1F,QAC3Dj1F,EAAQi1F,OAAOv6F,iBAAiB,WAAYwnoB,GAAqBhpoB,EAAO2qoB,oBAGtE3qoB,EAAO+poB,aAAe/poB,EAAO4thB,UAG/Bg8G,EAAa,SAAA3olB,GACNn6C,IAGLrH,GAAQwhD,GAAUA,EAAO37C,KAAO,IAAIuioB,GAAc,KAAM7noB,EAAQ8G,GAAWm6C,GAC3En6C,EAAQ4nD,QACR5nD,EAAU,KACX,EAED9G,EAAO+poB,aAAe/poB,EAAO+poB,YAAY3onB,UAAUwonB,GAC/C5poB,EAAO4thB,SACT5thB,EAAO4thB,OAAOg9G,QAAUhB,IAAe5poB,EAAO4thB,OAAOpshB,iBAAiB,QAASoooB,KAInF,IAAMzsiB,EI/OK,SAAuBr6F,GACpC,IAAMoM,EAAQ,4BAA4BD,KAAKnM,GAC/C,OAAOoM,GAASA,EAAM,IAAM,EAC7B,CJ4OoB27nB,CAAcx2T,GAE3Bl3O,IAAsD,IAA1CzjG,GAAAA,UAAAA,QAA2ByjG,GACzC19F,EAAO,IAAIiioB,GAAW,wBAA0BvkiB,EAAW,IAAKukiB,GAAAA,gBAA4B1hoB,IAM9F8G,EAAQ63F,KAAKkriB,GAAe,KAC7B,GACF,GClPD13gB,GAAMxxH,QAAQ+ooB,IAAe,SAAC1roB,EAAIG,GAChC,GAAGH,EAAI,CACL,IACEC,OAAOC,eAAeF,EAAI,OAAQ,CAACG,MAAAA,GAGpC,CAFC,MAAO+K,GAER,CACDjL,OAAOC,eAAeF,EAAI,cAAe,CAACG,MAAAA,GAC3C,CACF,IAED,OACc,SAACw1W,GAOX,IAJA,IACIm3R,EACAvriB,EAFG3+F,GAFP+yW,EAAWxhP,GAAMptH,QAAQ4uW,GAAYA,EAAW,CAACA,IAE1C/yW,OAIEgI,EAAI,EAAGA,EAAIhI,IAClBkqoB,EAAgBn3R,EAAS/qW,KACrB22F,EAAU4yB,GAAMxhE,SAASm6kB,GAAiBpB,GAAcoB,EAAcr2nB,eAAiBq2nB,IAFjElioB,KAO5B,IAAK22F,EAAS,CACZ,IAAgB,IAAZA,EACF,MAAM,IAAImiiB,GAAJ,kBACOoJ,EADP,wCAEJ,mBAIJ,MAAM,IAAItwoB,MACR23H,GAAMyyW,WAAW8kK,GAAeoB,GAAhC,mBACcA,EADd,8DAEsBA,EAFtB,KAIH,CAED,IAAK34gB,GAAMrjE,WAAWywC,GACpB,MAAM,IAAI51D,UAAU,6BAGtB,OAAO41D,CACR,EIxCH,SAASwriB,GAA6B/qoB,GAKpC,GAJIA,EAAO+poB,aACT/poB,EAAO+poB,YAAYiB,mBAGjBhroB,EAAO4thB,QAAU5thB,EAAO4thB,OAAOg9G,QACjC,MAAM,IAAI/C,GAAc,KAAM7noB,EAEjC,CASc,SAASiroB,GAAgBjroB,GAiBtC,OAhBA+qoB,GAA6B/qoB,GAE7BA,EAAO6D,QAAUyioB,GAAAA,KAAkBtmoB,EAAO6D,SAG1C7D,EAAOzF,KAAOktoB,GAAc/ooB,KAC1BsB,EACAA,EAAO4koB,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAASvjoB,QAAQrB,EAAOqF,SAC1CrF,EAAO6D,QAAQohoB,eAAe,qCAAqC,GAGrDtxR,GAAoB3zW,EAAOu/F,SAAW3rD,GAAAA,QAE/C2rD,CAAQv/F,GAAQjC,MAAK,SAA6BwI,GAYvD,OAXAwkoB,GAA6B/qoB,GAG7BuG,EAAShM,KAAOktoB,GAAc/ooB,KAC5BsB,EACAA,EAAOwloB,kBACPj/nB,GAGFA,EAAS1C,QAAUyioB,GAAAA,KAAkB//nB,EAAS1C,SAEvC0C,CACR,IAAE,SAA4BksB,GAe7B,OAdKk1mB,GAASl1mB,KACZs4mB,GAA6B/qoB,GAGzByyB,GAAUA,EAAOlsB,WACnBksB,EAAOlsB,SAAShM,KAAOktoB,GAAc/ooB,KACnCsB,EACAA,EAAOwloB,kBACP/ymB,EAAOlsB,UAETksB,EAAOlsB,SAAS1C,QAAUyioB,GAAAA,KAAkB7zmB,EAAOlsB,SAAS1C,WAIzDjF,QAAQa,OAAOgzB,EACvB,GACF,CC3ED,IAAMy4mB,GAAkB,SAAC3qnB,GAAD,OAAWA,aAAiB+lnB,GAAe/lnB,EAAMksC,SAAWlsC,CAA5D,EAWT,SAAS4qnB,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,IAAMrroB,EAAS,CAAC,EAEhB,SAASsroB,EAAe1znB,EAAQ4vB,EAAQ24lB,GACtC,OAAIhugB,GAAM9qF,cAAczvB,IAAWu6G,GAAM9qF,cAAcG,GAC9C2qF,GAAMnzF,MAAMtgC,KAAK,CAACyhoB,SAAAA,GAAWvonB,EAAQ4vB,GACnC2qF,GAAM9qF,cAAcG,GACtB2qF,GAAMnzF,MAAM,CAAC,EAAGwI,GACd2qF,GAAMptH,QAAQyiC,GAChBA,EAAOxiC,QAETwiC,CACR,CAGD,SAAS+jmB,EAAoBvrnB,EAAGC,EAAGkgnB,GACjC,OAAKhugB,GAAMs9D,YAAYxvK,GAEXkyG,GAAMs9D,YAAYzvK,QAAvB,EACEsrnB,OAAe1joB,EAAWoY,EAAGmgnB,GAF7BmL,EAAetrnB,EAAGC,EAAGkgnB,EAI/B,CAGD,SAASqL,EAAiBxrnB,EAAGC,GAC3B,IAAKkyG,GAAMs9D,YAAYxvK,GACrB,OAAOqrnB,OAAe1joB,EAAWqY,EAEpC,CAGD,SAASwrnB,EAAiBzrnB,EAAGC,GAC3B,OAAKkyG,GAAMs9D,YAAYxvK,GAEXkyG,GAAMs9D,YAAYzvK,QAAvB,EACEsrnB,OAAe1joB,EAAWoY,GAF1BsrnB,OAAe1joB,EAAWqY,EAIpC,CAGD,SAASyrnB,EAAgB1rnB,EAAGC,EAAGnjB,GAC7B,OAAIA,KAAQuuoB,EACHC,EAAetrnB,EAAGC,GAChBnjB,KAAQsuoB,EACVE,OAAe1joB,EAAWoY,QAD5B,CAGR,CAED,IAAM2rnB,EAAW,CACf7ooB,IAAK0ooB,EACLnmoB,OAAQmmoB,EACRjxoB,KAAMixoB,EACNvD,QAASwD,EACT7G,iBAAkB6G,EAClBjG,kBAAmBiG,EACnBrB,iBAAkBqB,EAClBzkmB,QAASykmB,EACTG,eAAgBH,EAChBjB,gBAAiBiB,EACjBlsiB,QAASksiB,EACT/koB,aAAc+koB,EACd9F,eAAgB8F,EAChB7F,eAAgB6F,EAChBd,iBAAkBc,EAClBf,mBAAoBe,EACpBI,WAAYJ,EACZ5F,iBAAkB4F,EAClB3F,cAAe2F,EACfK,eAAgBL,EAChBM,UAAWN,EACXO,UAAWP,EACXQ,WAAYR,EACZ1B,YAAa0B,EACbS,WAAYT,EACZU,iBAAkBV,EAClB1F,eAAgB2F,EAChB7noB,QAAS,SAACmc,EAAGC,GAAJ,OAAUsrnB,EAAoBL,GAAgBlrnB,GAAIkrnB,GAAgBjrnB,IAAI,EAAtE,GASX,OANAkyG,GAAMxxH,QAAQ1C,OAAOgB,KAAKhB,OAAOmH,OAAO,CAAC,EAAGgmoB,EAASC,KAAW,SAA4BvuoB,GAC1F,IAAMkiC,EAAQ2smB,EAAS7uoB,IAASyuoB,EAC1Ba,EAAcptmB,EAAMosmB,EAAQtuoB,GAAOuuoB,EAAQvuoB,GAAOA,GACvDq1H,GAAMs9D,YAAY28c,IAAgBptmB,IAAU0smB,IAAqB1roB,EAAOlD,GAAQsvoB,EAClF,IAEMpsoB,CACR,CCxGM,IAAMqje,GAAU,QCKjB5uT,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU9zK,SAAQ,SAAC2E,EAAMsD,GAC7E6rK,GAAWnvK,GAAQ,SAAmBib,GACpC,cAAcA,IAAUjb,GAAQ,KAAOsD,EAAI,EAAI,KAAO,KAAOtD,CAC9D,CACF,IAED,IAAM+moB,GAAqB,CAAC,EAW5B53d,GAAWiwd,aAAe,SAAsBlymB,EAAWgiD,EAASn6E,GAClE,SAASu9D,EAAcuuf,EAAKp7d,GAC1B,MAAO,uCAAoDo7d,EAAM,IAAOp7d,GAAQ1wF,EAAU,KAAOA,EAAU,GAC5G,CAGD,OAAO,SAAC8D,EAAOgojB,EAAKnib,GAClB,IAAkB,IAAdxxG,EACF,MAAM,IAAIkvmB,GACR9pkB,EAAcuuf,EAAK,qBAAuB3xe,EAAU,OAASA,EAAU,KACvEktjB,GAAAA,gBAeJ,OAXIltjB,IAAY63jB,GAAmBlmF,KACjCkmF,GAAmBlmF,IAAO,EAE1B7pjB,QAAQC,KACNq7D,EACEuuf,EACA,+BAAiC3xe,EAAU,8CAK1ChiD,GAAYA,EAAUr0B,EAAOgojB,EAAKnib,EAC1C,CACF,EAmCD,QACEsogB,cAxBF,SAAuBjvoB,EAASkvoB,EAAQC,GACtC,GAAuB,kBAAZnvoB,EACT,MAAM,IAAIqkoB,GAAW,4BAA6BA,GAAAA,sBAIpD,IAFA,IAAMzioB,EAAOhB,OAAOgB,KAAK5B,GACrBuL,EAAI3J,EAAK2B,OACNgI,KAAM,GAAG,CACd,IAAMu9iB,EAAMlnjB,EAAK2J,GACX4pB,EAAY+5mB,EAAOpmF,GACzB,GAAI3zhB,EAAJ,CACE,IAAMr0B,EAAQd,EAAQ8ojB,GAChB1ijB,OAAmBmE,IAAVzJ,GAAuBq0B,EAAUr0B,EAAOgojB,EAAK9ojB,GAC5D,IAAe,IAAXoG,EACF,MAAM,IAAIi+nB,GAAW,UAAYv7E,EAAM,YAAc1ijB,EAAQi+nB,GAAAA,qBAGhE,MACD,IAAqB,IAAjB8K,EACF,MAAM,IAAI9K,GAAW,kBAAoBv7E,EAAKu7E,GAAAA,eAEjD,CACF,EAICjtd,WAAAA,IC9EIA,GAAajiJ,GAAUiiJ,WASvBg4d,GAAAA,WACJ,WAAYC,IAAgB,gBAC1BzsoB,KAAK2zC,SAAW84lB,EAChBzsoB,KAAK+znB,aAAe,CAClBltnB,QAAS,IAAIy8nB,GACbh9nB,SAAU,IAAIg9nB,GAEjB,wCAUD,SAAQoJ,EAAa3soB,GAGQ,kBAAhB2soB,GACT3soB,EAASA,GAAU,CAAC,GACb8C,IAAM6poB,EAEb3soB,EAAS2soB,GAAe,CAAC,EAK3B,IA0BIC,EA1BJ,EAFA5soB,EAASmroB,GAAYlroB,KAAK2zC,SAAU5zC,GAE7B0koB,EAAP,EAAOA,aAAc0F,EAArB,EAAqBA,iBAAkBvmoB,EAAvC,EAAuCA,aAElB+D,IAAjB88nB,GACFlymB,GAAU85mB,cAAc5H,EAAc,CACpCf,kBAAmBlvd,GAAWiwd,aAAajwd,GAAWo4d,SACtDjJ,kBAAmBnvd,GAAWiwd,aAAajwd,GAAWo4d,SACtDhJ,oBAAqBpvd,GAAWiwd,aAAajwd,GAAWo4d,WACvD,GAGmB,MAApBzC,IACEj4gB,GAAMrjE,WAAWs7kB,GACnBpqoB,EAAOoqoB,iBAAmB,CACxB59nB,UAAW49nB,GAGb53mB,GAAU85mB,cAAclC,EAAkB,CACxC1ooB,OAAQ+yK,GAAWq4d,SACnBtgoB,UAAWioK,GAAWq4d,WACrB,IAKP9soB,EAAOqF,QAAUrF,EAAOqF,QAAUpF,KAAK2zC,SAASvuC,QAAU,OAAOoP,eAKjEm4nB,EAAiB/ooB,GAAWsuH,GAAMnzF,MAChCn7B,EAAQgiB,OACRhiB,EAAQ7D,EAAOqF,WAGC8sH,GAAMxxH,QACtB,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAAC0E,UACQxB,EAAQwB,EAChB,IAGHrF,EAAO6D,QAAUyioB,GAAAA,OAAoBsG,EAAgB/ooB,GAGrD,IAAMkpoB,EAA0B,GAC5BC,GAAiC,EACrC/soB,KAAK+znB,aAAaltnB,QAAQnG,SAAQ,SAAoC01d,GACjC,oBAAxBA,EAAYqtK,UAA0D,IAAhCrtK,EAAYqtK,QAAQ1joB,KAIrEgtoB,EAAiCA,GAAkC32K,EAAYotK,YAE/EsJ,EAAwBl8jB,QAAQwlZ,EAAY2pG,UAAW3pG,EAAYmtK,UACpE,IAED,IAKIjmnB,EALE0vnB,EAA2B,GACjChtoB,KAAK+znB,aAAaztnB,SAAS5F,SAAQ,SAAkC01d,GACnE42K,EAAyB5soB,KAAKg2d,EAAY2pG,UAAW3pG,EAAYmtK,SAClE,IAGD,IACInynB,EADAzI,EAAI,EAGR,IAAKokoB,EAAgC,CACnC,IAAM52K,EAAQ,CAAC60K,GAAgBluoB,KAAKkD,WAAO2H,GAO3C,IANAwud,EAAMvlZ,QAAQ74D,MAAMo+c,EAAO22K,GAC3B32K,EAAM/1d,KAAK2X,MAAMo+c,EAAO62K,GACxB57nB,EAAM+kd,EAAMx1d,OAEZ2c,EAAU3e,QAAQC,QAAQmB,GAEnB4I,EAAIyI,GACTkM,EAAUA,EAAQxf,KAAKq4d,EAAMxtd,KAAMwtd,EAAMxtd,MAG3C,OAAO2U,CACR,CAEDlM,EAAM07nB,EAAwBnsoB,OAE9B,IAAI4kD,EAAYxlD,EAIhB,IAFA4I,EAAI,EAEGA,EAAIyI,GAAK,CACd,IAAMqhnB,EAAcqa,EAAwBnkoB,KACtC+pnB,EAAaoa,EAAwBnkoB,KAC3C,IACE48C,EAAYktkB,EAAYltkB,EAIzB,CAHC,MAAOlmD,GACPqznB,EAAWj0nB,KAAKuB,KAAMX,GACtB,KACD,CACF,CAED,IACEie,EAAU0tnB,GAAgBvsoB,KAAKuB,KAAMulD,EAGtC,CAFC,MAAOlmD,GACP,OAAOV,QAAQa,OAAOH,EACvB,CAKD,IAHAsJ,EAAI,EACJyI,EAAM47nB,EAAyBrsoB,OAExBgI,EAAIyI,GACTkM,EAAUA,EAAQxf,KAAKkvoB,EAAyBrkoB,KAAMqkoB,EAAyBrkoB,MAGjF,OAAO2U,CACR,uBAED,SAAOvd,GAGL,OAAOmjoB,GADU6E,IADjBhooB,EAASmroB,GAAYlroB,KAAK2zC,SAAU5zC,IACEiooB,QAASjooB,EAAO8C,KAC5B9C,EAAOuE,OAAQvE,EAAOoqoB,iBACjD,OAlJGqC,GAsJNt6gB,GAAMxxH,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6B0E,GAE/EonoB,GAAMxkoB,UAAU5C,GAAU,SAASvC,EAAK9C,GACtC,OAAOC,KAAK6G,QAAQqkoB,GAAYnroB,GAAU,CAAC,EAAG,CAC5CqF,OAAAA,EACAvC,IAAAA,EACAvI,MAAOyF,GAAU,CAAC,GAAGzF,OAExB,CACF,IAED43H,GAAMxxH,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+B0E,GAGrE,SAAS6noB,EAAmBC,GAC1B,OAAO,SAAoBrqoB,EAAKvI,EAAMyF,GACpC,OAAOC,KAAK6G,QAAQqkoB,GAAYnroB,GAAU,CAAC,EAAG,CAC5CqF,OAAAA,EACAxB,QAASspoB,EAAS,CAChB,eAAgB,uBACd,CAAC,EACLrqoB,IAAAA,EACAvI,KAAAA,IAEH,CACF,CAEDkyoB,GAAMxkoB,UAAU5C,GAAU6noB,IAE1BT,GAAMxkoB,UAAU5C,EAAS,QAAU6noB,GAAmB,EACvD,IAED,UClFA,GA7GME,WACJ,WAAYnsnB,GACV,IADoB,gBACI,oBAAbA,EACT,MAAM,IAAI0oB,UAAU,gCAGtB,IAAI0jmB,EAEJptoB,KAAKsd,QAAU,IAAI3e,SAAQ,SAAyBC,GAClDwuoB,EAAiBxuoB,CAClB,IAED,IAAM0M,EAAQtL,KAGdA,KAAKsd,QAAQxf,MAAK,SAAAkjD,GAChB,GAAK11C,EAAM+hoB,WAAX,CAIA,IAFA,IAAI1koB,EAAI2C,EAAM+hoB,WAAW1soB,OAElBgI,KAAM,GACX2C,EAAM+hoB,WAAW1koB,GAAGq4C,GAEtB11C,EAAM+hoB,WAAa,IAPU,CAQ9B,IAGDrtoB,KAAKsd,QAAQxf,KAAO,SAAAwvoB,GAClB,IAAIC,EAEEjwnB,EAAU,IAAI3e,SAAQ,SAAAC,GAC1B0M,EAAM6V,UAAUviB,GAChB2uoB,EAAW3uoB,CACZ,IAAEd,KAAKwvoB,GAMR,OAJAhwnB,EAAQ0jC,OAAS,WACf11C,EAAM+rJ,YAAYk2e,EACnB,EAEMjwnB,CACR,EAED0D,GAAS,SAAgB5mB,EAAS2F,EAAQ8G,GACpCyE,EAAMknB,SAKVlnB,EAAMknB,OAAS,IAAIo1mB,GAAcxtoB,EAAS2F,EAAQ8G,GAClDumoB,EAAe9hoB,EAAMknB,QACtB,GACF,iDAKD,WACE,GAAIxyB,KAAKwyB,OACP,MAAMxyB,KAAKwyB,MAEd,0BAMD,SAAUhyB,GACJR,KAAKwyB,OACPhyB,EAASR,KAAKwyB,QAIZxyB,KAAKqtoB,WACPrtoB,KAAKqtoB,WAAWjtoB,KAAKI,GAErBR,KAAKqtoB,WAAa,CAAC7soB,EAEtB,4BAMD,SAAYA,GACV,GAAKR,KAAKqtoB,WAAV,CAGA,IAAMlsoB,EAAQnB,KAAKqtoB,WAAWjsoB,QAAQZ,IACvB,IAAXW,GACFnB,KAAKqtoB,WAAWhsoB,OAAOF,EAAO,EAH/B,CAKF,yBAMD,WACE,IAAI6/C,EAIJ,MAAO,CACL11C,MAJY,IAAI6hoB,GAAY,SAAkBvznB,GAC9ConC,EAASpnC,CACV,IAGConC,OAAAA,EAEH,OA1GGmslB,GCXN,IAAMK,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZrnH,GAAI,IACJsnH,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjCtzoB,OAAOyG,QAAQ+ooB,IAAgB9soB,SAAQ,YAAkB,mBAAhB4B,EAAgB,KAAXpE,EAAW,KACvDsvoB,GAAetvoB,GAASoE,CACzB,IAED,UCzBA,IAAMivoB,GAnBN,SAASC,EAAe97b,GACtB,IAAMvvJ,EAAU,IAAIqmlB,GAAM92b,GACpB3sK,EAAWjsC,GAAK0voB,GAAAA,UAAAA,QAAyBrmlB,GAa/C,OAVA+rE,GAAMzsE,OAAO1c,EAAUyjmB,GAAAA,UAAiBrmlB,EAAS,CAAC84kB,YAAY,IAG9D/sgB,GAAMzsE,OAAO1c,EAAUod,EAAS,KAAM,CAAC84kB,YAAY,IAGnDl2lB,EAASv4B,OAAS,SAAgBi8nB,GAChC,OAAO+E,EAAetG,GAAYx1b,EAAe+2b,GAClD,EAEM1jmB,CACR,CAGayomB,CAAe79lB,IAG7B49lB,GAAM/E,MAAQA,GAGd+E,GAAM3J,cAAgBA,GACtB2J,GAAMpE,YAAcA,GACpBoE,GAAM7J,SAAWA,GACjB6J,GAAMnuK,QAAUA,GAChBmuK,GAAMxO,WAAaA,GAGnBwO,GAAM9P,WAAaA,GAGnB8P,GAAM7nhB,OAAS6nhB,GAAM3J,cAGrB2J,GAAMlrgB,IAAM,SAAag3B,GACvB,OAAO1+J,QAAQ0nI,IAAIg3B,EACpB,EAEDk0e,GAAMpzK,OC7CS,SAAgB5ge,GAC7B,OAAO,SAAcozD,GACnB,OAAOpzD,EAASwa,MAAM,KAAM44C,EAC7B,CACF,ED4CD4glB,GAAME,aE5DS,SAAsB36H,GACnC,OAAO5kZ,GAAM7xG,SAASy2f,KAAsC,IAAzBA,EAAQ26H,YAC5C,EF6DDF,GAAMrG,YAAcA,GAEpBqG,GAAMlL,aAAeA,GAErBkL,GAAMG,WAAa,SAAApxnB,GAAK,OAAIyknB,GAAe7ygB,GAAMmtgB,WAAW/+mB,GAAS,IAAI5a,SAAS4a,GAASA,EAAnE,EAExBixnB,GAAM/D,eAAiBA,GAEvB+D,GAAMjunB,QAAUiunB,GAGhB,UGtEA,GAZuB,CACnBI,KAAM,CAAC,iBACPC,QAAS,CACL/uoB,IAAMpI,GAAAA,GAAAA,oBAA4D,YAA5BA,GAAAA,GAAAA,cAAyC,2BAA6B,6BAGhHo3oB,OAAQ,CACJhvoB,IAAK,+BAETivoB,cAAc,GCFZzM,GAAMn8nB,aACZ,GANgB,CACZ6ooB,YAAaC,GACbC,WCLmB,CACnBN,KAAM,CAAC,iBACPC,QAAS,CACL/uoB,IAAK,oCAETgvoB,OAAQ,CACJhvoB,IAAK,sCAETivoB,cAAc,IDCWzM,IENvB6M,GAAe,yCAAG,yGAEd,IAAIvzoB,SAAc,SAACC,GACrBy4J,EAAcsmZ,GAAKoS,oBAAmB,SAACjxjB,GAAD,OAAOF,GAAP,GACzC,IAJmB,uBAKby4J,EALa,yEAAH,qDAQfqxZ,GAAc,yCAAG,gGAEXjujB,GAAAA,GAAAA,mBAFW,gCAGE4ioB,GAAuB30E,iBAHzB,uEAKLwpF,KALK,wBAMEv0F,GAAK+E,YANP,mFASR,MATQ,0DAAH,qDAcpB,MCjBMyvF,GAAW,yCAAG,WAAO9yoB,GAAP,qFACVi+kB,EAAWpC,KACb77kB,EAAMiH,UAAsC,MAA1BjH,EAAMiH,SAASM,OAFrB,wBAGZ+2mB,GAAAA,OAAe,OACfA,GAAAA,OAAe,UAJH,kBAMWj1D,KANX,UAMFnH,EANE,QAQJ9mjB,GAAAA,GAAAA,mBARI,kCASiB4ioB,GAAuB37E,aATxC,QASEl+iB,EATF,OAUJ8H,EAAK,OAAG9H,QAAH,IAAGA,OAAH,EAAGA,EAAQ8H,MAVZ,gDAYUi2iB,QAZV,IAYUA,OAZV,EAYUA,EAAMG,aAZhB,QAYJp2iB,EAZI,eAcJA,GAASqyiB,GAAK+E,cACdi7D,GAAAA,IAAY,MAAOrymB,EAAO,CAAE5I,QAAS,GAAImloB,OAAQ9noB,GAAAA,eACjD49mB,GAAAA,IAAY,SAAUhgE,GAAK+E,YAAY1nG,IAAK,CAAEt4c,QAAS,GAAImloB,OAAQ9noB,GAAAA,eACnE9F,OAAO04B,SAAS0zE,UAjBZ,mEAqBFg4gB,KArBE,eAsBRhniB,eAAelwC,QACfs3hB,aAAaF,WAAW,gBACxB4/D,GAAAA,qBAAyC,GAxBjC,UAyBFd,GAAuB16E,UAzBrB,QA0BRtmjB,QAAQm3D,IAAR,MACA8phB,EAAS,UA3BD,gCAgCZjhlB,QAAQgD,MAAMA,GAhCF,0DAAH,sDAqCjB,MCjCO,SAAe+yoB,KAAtB,8CAAO,OAAP,2BAAO,uGACC33oB,GAAAA,GAAAA,mBADD,iCAEoBiujB,KAFpB,cAEOnH,EAFP,OAGOy8D,EAHP,OAGgBz8D,QAHhB,IAGgBA,OAHhB,EAGgBA,EAAMA,KAAKvmG,IAH3B,SAIqBqiL,GAAuB37E,WAAW,CAAEF,cAAc,IAJvE,YAIOl2iB,EAJP,QAKWA,QAAS0ymB,EALpB,kCAMWP,GAAYtknB,IAAI,CAClBmJ,IAAK,SACLpE,MAAO8/mB,IARhB,yBAUWP,GAAYtknB,IAAI,CAClBmJ,IAAK,MACLpE,MAAOoN,EAAMA,QAZtB,wCAgB6B3D,IAAvBg2mB,GAAAA,IAAY,aAAkDh2mB,IAA1Bg2mB,GAAAA,IAAY,UAhBtD,kCAiBoBj1D,KAjBpB,eAiBOnH,EAjBP,OAkBOy8D,EAlBP,OAkBgBz8D,QAlBhB,IAkBgBA,OAlBhB,EAkBgBA,EAAMvmG,IAlBtB,iBAmBqBumG,QAnBrB,IAmBqBA,OAnBrB,EAmBqBA,EAAMG,YAAW,GAnBtC,SAmBOp2iB,EAnBP,SAoBc0ymB,IACTL,GAAAA,IAAY,MAAOrymB,EAAO,CAAE5I,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACvD49mB,GAAAA,IAAY,SAAUK,EAAQ,CAAEt7mB,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,gBAtBhE,uECJDsyoB,GAAAA,WAEF,cAAe,qBADfC,cAAiC,GAE7Bpe,GAAmBl0nB,KAEtB,CAED,OAFC,+EAED,qIAEcoyoB,KAFd,cAGcjzf,EAAY,IAAIr8I,KAH9B,SAK0B86mB,KAL1B,+BAMkBz+d,EAFJ7kJ,EAJd,CAKY0jnB,OALZ,KAMY/plB,KANZ,WAQ0Bs9mB,GAR1B,KAQqCxxoB,GAAAA,QAAAA,IAAqB,4BAR1D,KAQuFzF,EARvF,UAUuCgsjB,KAVvC,iCAUgB,cAVhB,YASY1ijB,QATZ,qBAQgCgK,KARhC,kCAQcwuH,EARd,OAaQ40f,IAAY,WAAO,IAAD,IACd,EAAKshB,cAAL,UAAqBl2gB,EAAI9hI,YAAzB,iBAAqB,EAAUA,YAA/B,aAAqB,EAAgBi4oB,cACxC,IAfT,kDAoBQJ,GAAY,EAAD,IACL9xF,EArBd,sCAqB6B,KAAG/5iB,gBArBhC,iBAqB6B,EAAahM,YArB1C,iBAqB6B,EAAmB+E,aArBhD,aAqB6B,EAA0BjF,QAC/CiC,QAAQm3D,IAAI6sf,GAtBpB,4GAFC,MAED,EAPEgyF,GAoCN,GAD2B,IAAIA,GCnCzBG,GAAAA,WAGF,cAAe,qBAFfC,eAAmC,GAErB,KADdC,cAAgC,GAE5Bxe,GAAmBl0nB,KACtB,CAiCA,OAjCA,+EAED,mIAEcoyoB,KAFd,uBAI0Bx0B,KAJ1B,0BAGc+0B,EAHd,CAIY30B,OAJZ,WAO0BuzB,GAP1B,KAOqCxxoB,GAAAA,QAAAA,IAAqB,qBAP1D,KAOgF4yoB,EAPhF,UASuCrsF,KATvC,iCASgB,cAThB,YAQY1ijB,QARZ,qBAOgCgK,KAPhC,kCAOcwuH,EAPd,OAYQ40f,IAAY,WAAO,IAAD,UACd,EAAKyhB,eAAL,UAAsBr2gB,EAAI9hI,YAA1B,iBAAsB,EAAUA,YAAhC,aAAsB,EAAgBkJ,OACtC,EAAKkvoB,eAAgB,UAAAt2gB,EAAI9hI,YAAJ,mBAAUA,YAAV,mBAAgBkJ,OAAO,UAAvB,eAA2BovoB,aAAc,EAGjE,IAjBT,kDAoBQT,GAAY,EAAD,IACL9xF,EArBd,sCAqB6B,KAAG/5iB,gBArBhC,iBAqB6B,EAAahM,YArB1C,iBAqB6B,EAAmB+E,aArBhD,aAqB6B,EAA0BjF,QAC/CiC,QAAQm3D,IAAI6sf,GAtBpB,4GAFC,IAED,+BA0BA,WACI,OAAOrgjB,KAAKyyoB,cACf,iCACD,WACI,OAAOzyoB,KAAK0yoB,aACf,OAtCCF,GA2CN,GAD4B,IAAIA,GClDzB,SAASK,GAAgC1jnB,GAC9C,OAAOC,EAAAA,GAAAA,GAAqB,sBAAuBD,EACpD,EAC+BE,EAAAA,GAAAA,GAAuB,sBAAuB,CAAC,OAAQ,cAAe,gBAAiB,eAAgB,iBAAkB,MAAO,SAAU,oBAAqB,sBAAuB,wBAAtN,gBCDEmwkB,GACAC,GACAC,GACAC,GALIv6kB,GAAY,CAAC,YAAa,QAAS,gBAAiB,OAAQ,QAAS,YAAa,QAAS,WAiB3F0tnB,GAAO,GACPC,GAAyBv0C,GAAUgB,KAAOA,GAAE,iHAS5CwzC,GAAuBx0C,GAAUiB,KAAQA,GAAG,0QA8B5CwzC,IAAuBnknB,EAAAA,GAAAA,IAAO,OAAQ,CAC1C11B,KAAM,sBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAOmf,EAAW0J,SAAU7oB,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWO,EAAW7G,SACvF,GAR0BmG,EAS1B,gBACDU,EADC,EACDA,WACAnX,EAFC,EAEDA,MAFC,OAGGU,EAAAA,EAAAA,GAAS,CACb6X,QAAS,gBACe,gBAAvBpB,EAAW0J,SAA6B,CACzCpI,WAAYzY,EAAMwV,YAAYrd,OAAO,cACf,YAArBgf,EAAW7G,OAAuB,CACnCA,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,MARtD,IASC,kBAEyB,kBAFzB,EACFsI,WACe0J,SAA+BoM,GAAIo6jB,KAAQA,GAAG,oEAEvDqzC,GAJJ,IAKEG,IAAsBpknB,EAAAA,GAAAA,IAAO,MAAO,CACxC11B,KAAM,sBACN+1B,KAAM,MACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAO8ioB,GAA1B,GAHOrknB,CAIzB,CACD8B,QAAS,UAGLwinB,IAAyBtknB,EAAAA,GAAAA,IAAO,SAAU,CAC9C11B,KAAM,sBACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOgjoB,OAAQhjoB,EAAO,SAAD,QAAU4e,EAAAA,GAAAA,GAAWO,EAAW0J,WAAa1J,EAAW8jnB,eAAiBjjoB,EAAOkjoB,oBAC9G,GAR4BzknB,EAS5B,gBACDU,EADC,EACDA,WACAnX,EAFC,EAEDA,MAFC,OAGGU,EAAAA,EAAAA,GAAS,CACb4rhB,OAAQ,gBACgB,gBAAvBn1gB,EAAW0J,SAA6B,CACzCpI,WAAYzY,EAAMwV,YAAYrd,OAAO,sBACb,kBAAvBgf,EAAW0J,SAA+B,CAE3CrlB,gBAAiB,cACjBC,iBAAkB,GAVjB,IAWC,gBACF0b,EADE,EACFA,WADE,MAEyB,kBAAvBA,EAAW0J,UAAgC1J,EAAW8jnB,eAAiBhumB,GAAIq6jB,KAAQA,GAAG,yEAEpFqzC,GAJJ,IAaEQ,GAAgCr6nB,EAAAA,YAAiB,SAA0BgY,EAASlgB,GACxF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,wBAGJ+e,EAQErN,EARFqN,UADJ,EASMrN,EAPF6d,MAAAA,OAFJ,MAEY,UAFZ,IASM7d,EANFwooB,cAAAA,OAHJ,WASMxooB,EALF+C,KAAAA,OAJJ,MAIW,GAJX,EAKIipB,EAIEhsB,EAJFgsB,MALJ,EASMhsB,EAHF2ooB,UAAAA,OANJ,MAMgB,IANhB,IASM3ooB,EAFF5M,MAAAA,OAPJ,MAOY,EAPZ,IASM4M,EADFouB,QAAAA,OARJ,MAQc,gBARd,EAUE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACA2qnB,cAAAA,EACAzloB,KAAAA,EACA4loB,UAAAA,EACAv1oB,MAAAA,EACAg7B,QAAAA,IAEIvH,EAtGkB,SAAAnC,GACxB,IACEmC,EAIEnC,EAJFmC,QACAuH,EAGE1J,EAHF0J,QACAvQ,EAEE6G,EAFF7G,MACA2qnB,EACE9jnB,EADF8jnB,cAEI1hnB,EAAQ,CACZhnB,KAAM,CAAC,OAAQsuB,EAAT,gBAA0BjK,EAAAA,GAAAA,GAAWtG,KAC3CwqnB,IAAK,CAAC,OACNE,OAAQ,CAAC,SAAD,iBAAoBpknB,EAAAA,GAAAA,GAAWiK,IAAYo6mB,GAAiB,wBAEtE,OAAOzhnB,EAAAA,GAAAA,GAAeD,EAAOihnB,GAAiClhnB,EAC/D,CAyFiBG,CAAkBtC,GAC5BkknB,EAAc,CAAC,EACfC,EAAY,CAAC,EACb58C,EAAY,CAAC,EACnB,GAAgB,gBAAZ79jB,EAA2B,CAC7B,IAAM06mB,EAAgB,EAAIrqoB,KAAKsqoB,KAAOf,GAAOW,GAAa,GAC1DC,EAAY7/nB,gBAAkB+/nB,EAAcj7mB,QAAQ,GACpDo+jB,EAAU,iBAAmBxtlB,KAAKoZ,MAAMzkB,GACxCw1oB,EAAY5/nB,iBAAZ,YAAoC,IAAM5V,GAAS,IAAM01oB,GAAej7mB,QAAQ,GAAhF,MACAg7mB,EAAU32mB,UAAY,gBACvB,CACD,OAAoB7K,EAAAA,GAAAA,KAAK8gnB,IAAsBl6nB,EAAAA,EAAAA,GAAS,CACtDZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9B2e,OAAO/d,EAAAA,EAAAA,GAAS,CACd4X,MAAO9iB,EACP2e,OAAQ3e,GACP8loB,EAAW78mB,GACdtH,WAAYA,EACZve,IAAKA,EACLihB,KAAM,eACL6kkB,EAAWvvkB,EAAO,CACnBzc,UAAuBonB,EAAAA,GAAAA,KAAK+gnB,GAAqB,CAC/C/6nB,UAAWwZ,EAAQwhnB,IACnB3jnB,WAAYA,EACZgC,QAAS,GAAF,OAAKshnB,GAAL,YAAiBA,GAAjB,YAA6BA,GAA7B,YAAqCA,IAC5C/noB,UAAuBonB,EAAAA,GAAAA,KAAKihnB,GAAwB,CAClDj7nB,UAAWwZ,EAAQ0hnB,OACnBv8mB,MAAO48mB,EACPlknB,WAAYA,EACZk1gB,GAAIouG,GACJ3kiB,GAAI2kiB,GACJzunB,GAAIyunB,GAAOW,GAAa,EACxB5inB,KAAM,OACN5c,YAAaw/nB,QAIpB,IAiED,2BC3NIjmS,GAAAA,IACFvqV,EAAQ,KACRA,EAAQ,QAERA,EAAQ,MACRA,EAAQ,OAGV,IAYM6wnB,GAAgB,CACpB,CACEntoB,KAAM,eACNoX,GAAI,EACJ4K,MAAO,WACN,CACDhiB,KAAM,gBACNoX,GAAI,EACJ4K,MAAO,WACN,CACDhiB,KAAM,eACNoX,GAAI,EACJ4K,MAAO,WACN,CACDhiB,KAAM,UACNoX,GAAI,EACJ4K,MAAO,cAgVLi4B,GAAQ,CAAC,MAAO4sT,GAAAA,GAAW,CAC/BnoW,KAAM,SACNjM,KAAM,QACJ,OAAQ,SAGZ,GAAesoB,IAjVW,WAExB,OAA0Cg8f,EAAAA,EAAAA,WAAS,GAAnD,eAAOq2H,EAAP,KAAsBC,EAAtB,KACA,GAAwCt2H,EAAAA,EAAAA,UAAS,IAAjD,eAAOu2H,EAAP,KAAqBC,EAArB,KACA,GAAsCx2H,EAAAA,EAAAA,UAAS,IAAI56gB,MAAnD,eAAOiiF,EAAP,KAAoBovjB,EAApB,KACA,GAA8Cz2H,EAAAA,EAAAA,UAASrmc,eAAeE,QAAQ,eAAiBi2R,GAAAA,GAAW,MAAQ,SAAlH,eAAO4mS,EAAP,KAAwBC,EAAxB,KACA,GAA4D32H,EAAAA,EAAAA,UAASrmc,eAAeE,QAAQ,gBAAkBwN,GAA9G,eAAOuvjB,EAAP,KAA+BC,EAA/B,KAEA,GAAwD72H,EAAAA,EAAAA,WAAS,GAAjE,eAEM4/D,GAFN,UAEiBpC,KACXs5D,EAASvxnB,EAAQ,MACjBwxnB,EAAc,IAAI3xoB,MAExBu6gB,EAAAA,EAAAA,YAAU,WACRohD,aAAaF,WAAW,gBACxB,IAAMl4jB,EAAK,yCAAG,0FACZ2toB,GAAiB,GADL,SAENr1oB,QAAQ0nI,IAAI,CAChBi4e,KACAT,KACA62B,GAAAA,gBACAC,GAAAA,kBANU,OASZC,EAAoBD,GAAAA,eAC0B,OAA1Ct9jB,eAAeE,QAAQ,gBACzBs9jB,EAAgB,IAAI/xoB,KAAKu0E,eAAeE,QAAQ,iBAElDy8jB,GAAiB,GAbL,2CAAH,qDAeX3toB,GACD,GAAE,IAOH,IAAMuuoB,EAAsB,SAACE,GAC3B,IAAMC,EAAqB,GACrBC,EAAmB,GACnBC,EAA2B,GACjCjB,GAAiB,GAJ8C,iBAKzCc,GALyC,IAK/D,2BAAsC,CAAC,IAA5BI,EAA2B,QAE9BpvjB,EAAY0ujB,EAAOU,EAAQC,YAAYz3jB,KAAK,GAAGD,OAAO,GAAGzoC,OAAO,GAAGwoC,YAAY,GAC/EuI,EAAUyujB,EAAO1ujB,GAAWpI,KAAK,IAAID,OAAO,GAAGzoC,OAAO,GAAGwoC,YAAY,GAQrE43jB,EAAgB,CACpBtvjB,UAJmBA,EAAUjuB,OAAO,4BAKpCkuB,QAJiBA,EAAQluB,OAAO,4BAKhCi0D,QAAQ,EAERnlH,KAAMuuoB,EAAQxlhB,MACd0uf,aAAc+U,GAAK+hB,GAEnBG,OAAQvvjB,EAAU88Z,OAAO4xJ,IAAU,OAAS,CAAC,GAAK,CAAC,IAErDQ,EAAY50oB,KAAK0lF,GACjBivjB,EAAc30oB,KAAKg1oB,EACpB,CA5B8D,gDA6BzCV,GAAAA,eA7ByC,yBA6BpDQ,EA7BoD,QA+B7D,GAA0B,OAAtBA,EAAQI,UAAoB,iBAChCL,EAAe70oB,KAAK80oB,EAAQI,WAE5B,IAAMxvjB,EAAY0ujB,IAAS72jB,IAAIu3jB,EAAQI,WAAW53jB,KAAK,GAAGD,OAAO,GAAGzoC,OAAO,GAAGwoC,YAAY,GACpFuI,EAAUyujB,EAAO1ujB,GAAWpI,KAAK,IAAID,OAAO,GAAGzoC,OAAO,GAAGwoC,YAAY,GAGvEsI,EAAUq7Z,SAASqzJ,IAAU,SAC/B1ujB,EAAU/3C,IAAI,EAAG,QACjBg4C,EAAQh4C,IAAI,EAAG,SAGjB,IAAIwnmB,EAAezvjB,EAAUjuB,OAAO,4BAChC29kB,EAAazvjB,EAAQluB,OAAO,4BAEhC,GAAIiuB,EAAU88Z,OAAO4xJ,IAAU,SAAWQ,EAAY7ilB,MAAK,SAACl+B,GAAD,OAAe6xD,EAAU88Z,OAAO3ud,EAAM,MAAtC,IAA+C,CACxG,IAAMwhnB,EAAmB,CACvB3vjB,UAAWyvjB,EACXxvjB,QAASyvjB,EACT1phB,QAAQ,EAERnlH,KAAMuuoB,EAAQxlhB,MACdylB,oBAAqB6/f,EAAYjxoB,KAAI,SAACkwB,GAAD,OAAeugnB,EAAOh5gB,IAAIvnG,GAAM4jC,OAAO,qBAAvC,IAA8DprD,KAAK,MACxG2xmB,aAAc+U,GAAK+hB,GAEnBG,OAAQ,CAAC,IAEXL,EAAY50oB,KAAKm1oB,GACjBR,EAAc30oB,KAAKq1oB,GACnBF,EAAezvjB,EAAU/3C,IAAI,EAAG,QAAQ8pB,OAAO,4BAC/C29kB,EAAazvjB,EAAQh4C,IAAI,EAAG,QAAQ8pB,OAAO,2BAC5C,CAED,IAAMu9kB,EAAgB,CACpBtvjB,UAAWyvjB,EACXxvjB,QAASyvjB,EACT1phB,QAAQ,EAERnlH,KAAMuuoB,EAAQxlhB,MACdsgB,eAAe,qBAAD,OAAuBklgB,EAAQI,UAAUx0nB,UAAU,EAAG,IACpEq0H,oBAAqB6/f,EAAYjxoB,KAAI,SAACkwB,GAAD,OAAeugnB,EAAOh5gB,IAAIvnG,GAAM4jC,OAAO,qBAAvC,IAA8DprD,KAAK,MACxG2xmB,aAAc+U,GAAK+hB,GAEnBG,OAAQ,CAAC,IAEXN,EAAc30oB,KAAKg1oB,EA5E0C,EA6B/D,2BAAyD,GA7BM,+BAgF/D,IAhF+D,EAiFzDM,EADgB,CAAC,SAAU,UAAW,YAAa,WAAY,SAAU,WAAY,UAC5Dl7mB,QAAO,SAAAmjD,GAAG,OAAKs3jB,EAAe1voB,SAASo4E,EAA7B,IAjFsB,WAkFzC+3jB,GAlFyC,IAkF/D,2BAAgC,CAAC,IAAtBC,EAAqB,QAExB7vjB,EAAY0ujB,IAAS72jB,IAAIg4jB,GAASj4jB,KAAK,GAAGD,OAAO,GAAGzoC,OAAO,GAAGwoC,YAAY,GAC1EuI,EAAUyujB,EAAO1ujB,GAAWpI,KAAK,IAAID,OAAO,GAAGzoC,OAAO,GAAGwoC,YAAY,GAGvEsI,EAAUq7Z,SAASqzJ,IAAU,SAC/B1ujB,EAAU/3C,IAAI,EAAG,QACjBg4C,EAAQh4C,IAAI,EAAG,SAGjB,IAIMqnmB,EAAgB,CACpBtvjB,UALmBA,EAAUjuB,OAAO,4BAMpCkuB,QALiBA,EAAQluB,OAAO,4BAMhCi0D,QAAQ,EAERnlH,KAAM,WACNqpI,eAAe,qBAAD,OAAuB2lgB,EAAQ70nB,UAAU,EAAG,IAC1Dq0H,oBAAqB6/f,EAAYjxoB,KAAI,SAACkwB,GAAD,OAAeugnB,EAAOh5gB,IAAIvnG,GAAM4jC,OAAO,qBAAvC,IAA8DprD,KAAK,MAExG4ooB,OAAQ,CAAC,IAEXN,EAAc30oB,KAAKg1oB,EAEpB,CA9G8D,+BA+G/DlB,EAAgBa,GAChBf,GAAiB,EAClB,EAEKa,EAAe,yCAAG,WAAO5gnB,GAAP,uGACtBsgnB,EAA0BtgnB,GAC1BojD,eAAeinf,QAAQ,cAAerqiB,EAAKovd,eAEvCpvd,EAAKmrD,aAAe2F,EAAY3F,WAJd,oBAKhBnrD,EAAKmrD,aAAeq1jB,EAAYr1jB,WALhB,gBAMlBw1jB,EAAoBD,GAAAA,eACpBR,EAAelgnB,GAPG,iDAWVm+mB,KAXU,eAYVrtjB,EAAc,IAAIjiF,KAAKmxB,GAEvB2hnB,EAAe7wjB,EAAY3F,WAC3BgxC,EAAcrrC,EAAYnF,cAG1Bi2jB,EAA6B,IAAjBD,EAAqB,GAAKA,EAGtC/6Q,EAA6B,KAAjB+6Q,EAAsB,EAAIA,EAAe,EACrDE,EAA4B,KAAjBF,EAAsBxlhB,EAAc,EAAIA,EAGnDtqC,EAAY,IAAIhjF,KAAJ,UANgB,IAAjB8yoB,EAAqBxlhB,EAAc,EAAIA,EAMtC,YAAyBylhB,IACrC9vjB,EAAU,IAAIjjF,KAAKgzoB,EAAUj7Q,EAAY,EAAG,GA1BlC,UA4BA+iP,KA5BA,gCA6BH93hB,EA7BG,KA8BLC,EAHLzrF,EA3BU,CA4Bd0jnB,OA5Bc,KA6Bdl4hB,UA7Bc,KA8BdC,QA9Bc,WAgCEwrjB,GAhCF,KAgCaxxoB,GAAAA,QAAAA,IAAqB,4BAhClC,KAgC+DzF,EAhC/D,UAkCWgsjB,KAlCX,iCAkCZ,cAlCY,YAiCd1ijB,QAjCc,qBAgCQgK,KAhCR,kCAgCVwuH,EAhCU,OAqCV04gB,EArCU,UAqCO14gB,EAAI9hI,YArCX,iBAqCO,EAAUA,YArCjB,aAqCO,EAAgBi4oB,eACvCqC,EAAoBE,GAtCJ,kDAyChBz4oB,QAAQm3D,IAAR,MAzCgB,QA2ClB2glB,EAAelgnB,GA3CG,0DAAH,sDAmGrB,OACE,gCACG8/mB,GACC,iBAAKj9mB,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACE,UAAC,GAAD,OAuCF,iCACE,kBAAKlO,MAAO,CAAEtK,OAAQghV,GAAAA,GAAW,OAAS,QAASuoS,SAAU,SAAUnlnB,QAAS,OAAQgR,cAAe4rU,GAAAA,GAAW,OAAS,IAA3H,WACE,iBAAK12U,MAAO,CAAEtK,OAA4B,UAApB4nnB,EAA8B,QAAU,IAA9D,UACE,UAAC,KAAD,CACEj8nB,UAAS,eAA8B,SAApBi8nB,EAA6B,GAAK,kBAA5C,YAAqF,UAApBA,EAA8B,mBAAqB,iBAApH,YAA6J,QAApBA,GAA6B5mS,GAAAA,GAAY,kBAAoB,GAAtM,KACT5sT,MAAOA,GACPlD,YAAa02lB,EACb7siB,WAAY0siB,EACZlvjB,YAAauvjB,EAEbr1Q,oBA/DW,SAAC/gY,GACxBm2oB,EAAmBn2oB,GACnBm5E,eAAeinf,QAAQ,YAAapgkB,GAEpCq2oB,EAA0B,IAAIzxoB,MAC9Bu0E,eAAeknf,WAAW,eAC1Bs2E,EAAgB,IAAI/xoB,KAErB,EAwDa0pB,OAAQ,IACR+zB,aAAc,EACdJ,iBAAiB,EACjBvB,mBAzEiB,SAACtkD,GAC9BgjlB,EAAS,iBAAkB,CAAE50iB,MAAOpuC,EAAKyqX,yBAC1C,EAwEaloU,SAAS,EACTsiV,oBAAqB01Q,EAbvB,UAeE,UAAC,GAAA14lB,SAAD,CACEg8F,UAAU,SACVuB,eAAe,EACfnyC,WAAYusiB,GACZp8nB,MAAM,cAIZ,iBAAKof,MAAO,CAAEqK,gBAAiB,UAAWpvB,SAAU,aAO/D,IC9YM,SAASikoB,GAAsC7mnB,GACpD,OAAOC,EAAAA,GAAAA,GAAqB,4BAA6BD,EAC1D,CACD,IACA,IADsCE,EAAAA,GAAAA,GAAuB,4BAA6B,CAAC,OAAQ,WAAY,WAAY,UCHrHjK,GAAY,CAAC,YAAa,OAAQ,QAAS,WAAY,UAAW,WAAY,YAAa,SAwB3F6wnB,IAA6BnnnB,EAAAA,GAAAA,IAAO6ykB,GAAY,CACpDvomB,KAAM,4BACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,MAAO4kB,EAAW0mnB,YAAc1mnB,EAAWvJ,UAAY5V,EAAO8loB,SAC9E,GARgCrnnB,EAShC,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb+X,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,QAAS,eAAgB,CAC7Dqb,SAAUxT,EAAMwV,YAAYhC,SAASG,QAEvCiT,QAAS,WACT+B,SAAU,GACVL,SAAU,IACVhY,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK4e,UAC1Cme,cAAe,SACf5xB,KAAM,MACJ0d,EAAW0mnB,YAAc1mnB,EAAWvJ,UAAY,CAClDyb,WAAY,KACVlS,EAAW0mnB,YAAc1mnB,EAAWvJ,WAAauJ,EAAW9X,OAAS,CACvEgqB,WAAY,IAbA,uBAeN00mB,GAAAA,UAA2C,CAC/CztnB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ/B,QAAQ4B,OAnB9C,IAsBGmvnB,IAA8BvnnB,EAAAA,GAAAA,IAAO,OAAQ,CACjD11B,KAAM,4BACN+1B,KAAM,QACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOqH,KAA1B,GAHeoX,EAIjC,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb0Q,WAAYpR,EAAMmR,WAAWC,WAC7BC,SAAUrR,EAAMmR,WAAWU,QAAQ,IACnChX,QAAS,EACT4d,WAAY,+BACZsgL,gBAAiB,SACf5hL,EAAW0mnB,YAAc1mnB,EAAWvJ,UAAY,CAClD/S,QAAS,EACTk+L,gBAAiB,OARL,uBAUNglc,GAAAA,UAA2C,CAC/C1snB,SAAUrR,EAAMmR,WAAWU,QAAQ,MAdpC,IA0GH,GAzF4C/Q,EAAAA,YAAiB,SAAgCgY,EAASlgB,GACpG,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,8BAGJ+e,EAMErN,EANFqN,UACAsO,EAKE3b,EALF2b,KACA/O,EAIE5M,EAJF4M,MACA6pK,EAGEz2K,EAHFy2K,SACAjE,EAEExyK,EAFFwyK,QACAp/K,EACE4M,EADF5M,MAEFspB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,EAAa1kB,EACb6mB,EA/EkB,SAAAnC,GACxB,IACEmC,EAGEnC,EAHFmC,QACAuknB,EAEE1mnB,EAFF0mnB,UACAjwnB,EACEuJ,EADFvJ,SAEI2L,EAAQ,CACZhnB,KAAM,CAAC,QAASsroB,IAAcjwnB,GAAY,WAAYA,GAAY,YAClEvO,MAAO,CAAC,SAAUw+nB,IAAcjwnB,GAAY,WAAYA,GAAY,aAEtE,OAAO4L,EAAAA,GAAAA,GAAeD,EAAOoknB,GAAuCrknB,EACrE,CAoEiBG,CAAkBtC,GASlC,OAAoBuC,EAAAA,GAAAA,MAAMkknB,IAA4Bl9nB,EAAAA,EAAAA,GAAS,CAC7D9H,IAAKA,EACLkH,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9B4plB,aAAa,EACbzkb,QAZmB,SAAAv8K,GACfwgL,GACFA,EAASxgL,EAAO7C,GAEdo/K,GACFA,EAAQv8K,EAEX,EAMCyuB,WAAYA,GACXhI,EAAO,CACRzc,SAAU,CAAC0b,GAAmB0L,EAAAA,GAAAA,KAAKkknB,GAA6B,CAC9Dl+nB,UAAWwZ,EAAQja,MACnB8X,WAAYA,EACZzkB,SAAU2M,OAGf,ICjHM,SAAS4+nB,GAAgCnnnB,GAC9C,OAAOC,EAAAA,GAAAA,GAAqB,sBAAuBD,EACpD,EAC+BE,EAAAA,GAAAA,GAAuB,sBAAuB,CAAC,SAA/E,ICHMjK,GAAY,CAAC,WAAY,YAAa,YAAa,WAAY,aAAc,SAmB7EmxnB,IAAuBznnB,EAAAA,GAAAA,IAAO,MAAO,CACzC11B,KAAM,sBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHQkkB,EAI1B,gBACDzW,EADC,EACDA,MADC,MAEI,CACLuY,QAAS,OACTgT,eAAgB,SAChBpX,OAAQ,GACR2U,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ3B,WAAWC,MANzD,IAgGH,GAxFsCxM,EAAAA,YAAiB,SAA0BgY,EAASlgB,GACxF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,wBAGJ2R,EAMED,EANFC,SACAoN,EAKErN,EALFqN,UAFJ,EAOMrN,EAJFsmB,UAAAA,OAHJ,MAGgB,MAHhB,EAIImwJ,EAGEz2K,EAHFy2K,SAJJ,EAOMz2K,EAFF0roB,WAAAA,OALJ,SAMIt4oB,EACE4M,EADF5M,MAEFspB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACAolnB,WAAAA,IAEI7knB,EAvCkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAKF,OAAOE,EAAAA,GAAAA,GAHO,CACZjnB,KAAM,CAAC,SAEoB0roB,GAAiC3knB,EAC/D,CA+BiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKoknB,IAAsBx9nB,EAAAA,EAAAA,GAAS,CACtDb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,SAAUoO,EAAAA,SAAAA,IAAmBpO,GAAU,SAACshC,EAAOoqmB,GAC7C,IAAmBt9nB,EAAAA,eAAqBkzB,GACtC,OAAO,KAOT,IAAMqqmB,OAAmC/uoB,IAAtB0kC,EAAMvhC,MAAM5M,MAAsBu4oB,EAAapqmB,EAAMvhC,MAAM5M,MAC9E,OAAoBib,EAAAA,aAAmBkzB,EAAO,CAC5CpmB,SAAUywnB,IAAex4oB,EACzBg4oB,eAAqCvuoB,IAA1B0kC,EAAMvhC,MAAMoroB,UAA0B7pmB,EAAMvhC,MAAMoroB,UAAYM,EACzEt4oB,MAAOw4oB,EACPn1d,SAAAA,GAEH,MAEJ,cClEKo1d,IAAkB7nnB,EAAAA,GAAAA,IAAO8nnB,GAAP9nnB,CAA+B,CACnDnG,MAAO,OACP,qBAAsB,CAClBw4kB,QAAS,QAEb,UAAW,CACPA,QAAS,QAEb,iBAAkB,CACdx4kB,MAAO,WAgCf,GA3BwBjH,IAAS,WAC7B,IAAM47jB,EAAWpC,IAajB,OACI,iCACI,UAAC,GAAD,CAAOxsjB,GAAI,CAAElkB,SAAU,QAASm6B,OAAQ,EAAGC,KAAM,EAAGF,MAAO,EAAGnxB,OAAQ,OAAQ2tB,QAAS,UAAWtE,aAAc,GAAK+gjB,UAAW,EAAhI,UACI,WAAC,GAAD,CAAkB64D,YAAU,EAACt4oB,MAAOigoB,GAAAA,kBAAuC58c,SAdlE,SAACxgL,EAA6B8nC,GAC/Cs1lB,GAAAA,qBAAyCt1lB,GACxB,IAAbA,EACAy0iB,EAAS,YACW,IAAbz0iB,EACPy0iB,EAAS,KACW,IAAbz0iB,GACPy0iB,EAAS,YAEhB,EAK8G5ujB,GAAI,CAAEwS,QAAS,UAAW12B,SAAU,WAAYo4B,aAA0C,QAA5BnoC,GAAAA,GAAAA,cAAoC,8BAAgC,QAArO,WACI,UAACk8oB,GAAD,CAAiBlwnB,MAAM,UAACg4mB,EAAA,EAAD,CAAmB/0mB,SAAS,UAAYhS,MAAM,aACrE,UAACi/nB,GAAD,CAAiBlwnB,MAAM,UAACownB,GAAA,EAAD,CAAmBntnB,SAAS,UAAYhS,MAAM,cACrE,UAACi/nB,GAAD,CAAiBlwnB,MAAM,UAACujG,GAAA,EAAD,CAAYtgG,SAAS,UAAYhS,MAAM,mBAKjF,IC/BD,GAXiB,SAAC5M,GAChB,OACE,mCACE,UAAC,GAAD,CAAQ4kH,MAAO,WACf,UAAC,GAAD,IACC89O,GAAAA,KAAY,UAAC,GAAD,MAIlB,aCdM,SAASspS,GAAsB3nnB,GACpC,OAAOC,EAAAA,GAAAA,GAAqB,YAAaD,EAC1C,CACD,IACA,IADsBE,EAAAA,GAAAA,GAAuB,YAAa,CAAC,OAAQ,OAAQ,cAAe,cAAe,gBAAiB,cAAe,YAAa,WAAY,cAAe,WAAY,kBAAmB,kBAAmB,oBAAqB,kBAAmB,gBAAiB,eAAgB,kBAAmB,YAAa,mBAAoB,mBAAoB,qBAAsB,mBAAoB,iBAAkB,gBAAiB,mBAAoB,mBAAoB,eAAgB,WAAY,eAAgB,gBAAiB,iBAAkB,gBAAiB,oBAAqB,qBAAsB,oBAAqB,qBAAsB,sBAAuB,qBAAsB,aAAc,YAAa,YAAa,YAAa,YAAa,UAAW,gBAAiB,iBAAkB,kBCG5zB,OAJwClW,EAAAA,cAAoB,CAAC,GCFvDiM,GAAY,CAAC,WAAY,QAAS,YAAa,YAAa,WAAY,mBAAoB,qBAAsB,UAAW,wBAAyB,YAAa,OAAQ,YAAa,OAAQ,WAiChM2xnB,GAAmB,SAAAvnnB,GAAU,OAAIzW,EAAAA,EAAAA,GAAS,CAAC,EAAuB,UAApByW,EAAW3hB,MAAoB,CACjF,uBAAwB,CACtB6b,SAAU,KAES,WAApB8F,EAAW3hB,MAAqB,CACjC,uBAAwB,CACtB6b,SAAU,KAES,UAApB8F,EAAW3hB,MAAoB,CAChC,uBAAwB,CACtB6b,SAAU,KAVqB,EAa7BstnB,IAAalonB,EAAAA,GAAAA,IAAO6ykB,GAAY,CACpChrlB,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,YACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAOmf,EAAW0J,SAAU7oB,EAAO,GAAD,OAAImf,EAAW0J,SAAf,QAAyBjK,EAAAA,GAAAA,GAAWO,EAAW7G,SAAWtY,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAW3hB,QAAUwC,EAAO,GAAD,OAAImf,EAAW0J,QAAf,gBAA6BjK,EAAAA,GAAAA,GAAWO,EAAW3hB,QAA+B,YAArB2hB,EAAW7G,OAAuBtY,EAAO4moB,aAAcznnB,EAAW0nnB,kBAAoB7moB,EAAO6moB,iBAAkB1nnB,EAAW2nnB,WAAa9moB,EAAO8moB,UACjX,GATgBronB,EAUhB,YAGG,MACAsonB,EAAuBC,EAH3Bh/nB,EAEI,EAFJA,MACAmX,EACI,EADJA,WAGA,OAAOzW,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAMmR,WAAW0B,QAAtB,GACb8V,SAAU,GACV/B,QAAS,WACTrC,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,aAC1C9L,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,mBAAoB,aAAc,eAAgB,SAAU,CAChGqb,SAAUxT,EAAMwV,YAAYhC,SAASG,QAEvC,WAAWjT,EAAAA,EAAAA,GAAS,CAClBwolB,eAAgB,OAChBpgkB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ1gB,KAAK2woB,eAA7C,cAAiEj/nB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAA3F,MAA6G+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ1gB,KAAK2e,QAASjN,EAAMgP,QAAQxB,OAAOG,cAErL,uBAAwB,CACtBmb,gBAAiB,gBAEK,SAAvB3R,EAAW0J,SAA2C,YAArB1J,EAAW7G,OAAuB,CACpEwY,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAA1D,cAA2E5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAArG,MAAuH+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM7O,EAAMgP,QAAQxB,OAAOG,cAEzM,uBAAwB,CACtBmb,gBAAiB,gBAEK,aAAvB3R,EAAW0J,SAA+C,YAArB1J,EAAW7G,OAAuB,CACxEgX,OAAQ,aAAF,QAAgBtnB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,MACrEia,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAA1D,cAA2E5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAArG,MAAuH+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM7O,EAAMgP,QAAQxB,OAAOG,cAEzM,uBAAwB,CACtBmb,gBAAiB,gBAEK,cAAvB3R,EAAW0J,SAA2B,CACvCiI,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ8B,KAAKnE,KACpD6f,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,GAEzC,uBAAwB,CACtByW,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,GACzC+S,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ8B,KAAK,OAE9B,cAAvBqG,EAAW0J,SAAgD,YAArB1J,EAAW7G,OAAuB,CACzEwY,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOnC,KAEjE,uBAAwB,CACtB2a,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,QAGrE,YAAYnO,EAAAA,EAAAA,GAAS,CAAC,EAA0B,cAAvByW,EAAW0J,SAA2B,CAC7D2L,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,OA3C9B,sBA6CPmpnB,GAAAA,eAA+Bx+nB,EAAAA,EAAAA,GAAS,CAAC,EAA0B,cAAvByW,EAAW0J,SAA2B,CACtF2L,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,OA9C9B,sBAgDPmpnB,GAAAA,WAA2Bx+nB,EAAAA,EAAAA,GAAS,CACxC4P,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,UACpB,aAAvBgK,EAAW0J,SAA0B,CACtCyG,OAAQ,aAAF,QAAgBtnB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOM,qBAClC,cAAvBqJ,EAAW0J,SAA2B,CACvCvQ,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,SAC5Cqf,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,GACzC+S,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOM,sBAvD3C,GAyDW,SAAvBqJ,EAAW0J,SAAsB,CAClC+F,QAAS,WACe,SAAvBzP,EAAW0J,SAA2C,YAArB1J,EAAW7G,OAAuB,CACpEA,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,MAC/B,aAAvBsI,EAAW0J,SAA0B,CACtC+F,QAAS,WACTU,OAAQ,0BACgB,aAAvBnQ,EAAW0J,SAA+C,YAArB1J,EAAW7G,OAAuB,CACxEA,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,KACvDyY,OAAQtnB,EAAM2V,KAAN,yBAA+B3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAApE,gCAAwGlrkB,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM,MACpI,cAAvBsI,EAAW0J,SAA2B,CACvCvQ,MAAOtQ,EAAM2V,KAEb3V,EAAM2V,KAAK3G,QAAQ1gB,KAAK2e,QAAwF,OAA7E8xnB,GAAyBC,EAAiBh/nB,EAAMgP,SAASmB,sBAA2B,EAAS4unB,EAAsB34oB,KAAK44oB,EAAgBh/nB,EAAMgP,QAAQ8B,KAAK,MAC9LgY,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ8B,KAAK,KACpD0b,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,IACjB,cAAvBoB,EAAW0J,SAAgD,YAArB1J,EAAW7G,OAAuB,CACzEA,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOK,aACvDmY,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,MAC3C,YAArBsI,EAAW7G,OAAuB,CACnCA,MAAO,UACPqX,YAAa,gBACQ,UAApBxQ,EAAW3hB,MAA2C,SAAvB2hB,EAAW0J,SAAsB,CACjE+F,QAAS,UACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAA2C,SAAvB2hB,EAAW0J,SAAsB,CACjE+F,QAAS,WACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAA2C,aAAvB2hB,EAAW0J,SAA0B,CACrE+F,QAAS,UACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAA2C,aAAvB2hB,EAAW0J,SAA0B,CACrE+F,QAAS,WACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAA2C,cAAvB2hB,EAAW0J,SAA2B,CACtE+F,QAAS,WACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAA2C,cAAvB2hB,EAAW0J,SAA2B,CACtE+F,QAAS,WACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KAClCsF,EAAW2nnB,WAAa,CACzBxmnB,MAAO,QAEV,IAAE,2BACDnB,WACe0nnB,mBAAX,GACJrymB,UAAW,OACX,UAAW,CACTA,UAAW,UAHT,sBAKE0ymB,GAAAA,cAA+B,CACnC1ymB,UAAW,UANT,UAQJ,WAAY,CACVA,UAAW,UATT,sBAWE0ymB,GAAAA,UAA2B,CAC/B1ymB,UAAW,SAZT,EAFH,IAiBG2ymB,IAAkB1onB,EAAAA,GAAAA,IAAO,OAAQ,CACrC11B,KAAM,YACN+1B,KAAM,YACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOonoB,UAAWpnoB,EAAO,WAAD,QAAY4e,EAAAA,GAAAA,GAAWO,EAAW3hB,QACnE,GARqBihB,EASrB,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACb6X,QAAS,UACT+R,YAAa,EACbE,YAAa,GACQ,UAApBrT,EAAW3hB,MAAoB,CAChCg1B,YAAa,GACZk0mB,GAAiBvnnB,GARjB,IASGkonB,IAAgB5onB,EAAAA,GAAAA,IAAO,OAAQ,CACnC11B,KAAM,YACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOsnoB,QAAStnoB,EAAO,WAAD,QAAY4e,EAAAA,GAAAA,GAAWO,EAAW3hB,QACjE,GARmBihB,EASnB,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACb6X,QAAS,UACT+R,aAAc,EACdE,WAAY,GACS,UAApBrT,EAAW3hB,MAAoB,CAChC80B,aAAc,GACbo0mB,GAAiBvnnB,GARjB,IAoKH,GA3J4BrW,EAAAA,YAAiB,SAAgBgY,EAASlgB,GAEpE,IAAMikc,EAAe/7b,EAAAA,WAAiBy+nB,IAChCC,GAAgB3xmB,EAAAA,GAAAA,GAAagva,EAAc/jb,GAC3CrmB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAO+soB,EACPz+oB,KAAM,cAGJ2R,EAcED,EAdFC,SADJ,EAeMD,EAbF6d,MAAAA,OAFJ,MAEY,UAFZ,IAeM7d,EAZFsmB,UAAAA,OAHJ,MAGgB,SAHhB,EAIIjZ,EAWErN,EAXFqN,UAJJ,EAeMrN,EAVF0a,SAAAA,OALJ,WAeM1a,EATFosoB,iBAAAA,OANJ,WAeMpsoB,EARFq5lB,mBAAAA,OAPJ,SAQa2zC,EAOPhtoB,EAPF6soB,QACAh0C,EAME74lB,EANF64lB,sBATJ,EAeM74lB,EALFqsoB,UAAAA,OAVJ,WAeMrsoB,EAJF+C,KAAAA,OAXJ,MAWW,SAXX,EAYekqoB,EAGTjtoB,EAHF2soB,UACApyoB,EAEEyF,EAFFzF,KAbJ,EAeMyF,EADFouB,QAAAA,OAdJ,MAcc,OAdd,EAgBE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAyI,UAAAA,EACA5L,SAAAA,EACA0xnB,iBAAAA,EACA/yC,mBAAAA,EACAgzC,UAAAA,EACAtpoB,KAAAA,EACAxI,KAAAA,EACA6zB,QAAAA,IAEIvH,EA3OkB,SAAAnC,GACxB,IACE7G,EAME6G,EANF7G,MACAuunB,EAKE1nnB,EALF0nnB,iBACAC,EAIE3nnB,EAJF2nnB,UACAtpoB,EAGE2hB,EAHF3hB,KACAqrB,EAEE1J,EAFF0J,QACAvH,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAQsuB,EAAT,UAAqBA,GAArB,QAA+BjK,EAAAA,GAAAA,GAAWtG,IAA1C,eAA2DsG,EAAAA,GAAAA,GAAWphB,IAAtE,UAAkFqrB,EAAlF,gBAAgGjK,EAAAA,GAAAA,GAAWphB,IAAmB,YAAV8a,GAAuB,eAAgBuunB,GAAoB,mBAAoBC,GAAa,aACtNz/nB,MAAO,CAAC,SACR+/nB,UAAW,CAAC,YAAD,mBAAyBxonB,EAAAA,GAAAA,GAAWphB,KAC/C8poB,QAAS,CAAC,UAAD,mBAAuB1onB,EAAAA,GAAAA,GAAWphB,MAEvC+1lB,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAOklnB,GAAuBnlnB,GACrE,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CA0NiB9xkB,CAAkBtC,GAC5BionB,EAAYM,IAA8B5lnB,EAAAA,GAAAA,KAAKqlnB,GAAiB,CACpEr/nB,UAAWwZ,EAAQ8lnB,UACnBjonB,WAAYA,EACZzkB,SAAUgtoB,IAENJ,EAAUG,IAA4B3lnB,EAAAA,GAAAA,KAAKulnB,GAAe,CAC9Dv/nB,UAAWwZ,EAAQgmnB,QACnBnonB,WAAYA,EACZzkB,SAAU+soB,IAEZ,OAAoB/lnB,EAAAA,GAAAA,MAAMilnB,IAAYj+nB,EAAAA,EAAAA,GAAS,CAC7CyW,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKkjb,EAAa/8b,UAAWwZ,EAAQ/mB,KAAMuN,GACtDiZ,UAAWA,EACX5L,SAAUA,EACVu8kB,aAAcoC,EACdR,uBAAuB3xkB,EAAAA,GAAAA,GAAKL,EAAQmW,aAAc67jB,GAClD1ylB,IAAKA,EACL5L,KAAMA,GACLmiB,EAAO,CACRmK,QAASA,EACT5mB,SAAU,CAAC0soB,EAAW1soB,EAAU4soB,KAEnC,0BC5QD,GAPyB,SAAAz5oB,GACvB,IAAM+S,EAAMkI,EAAAA,OAAa,CAAC,GAI1B,OAHAA,EAAAA,WAAgB,WACdlI,EAAIwI,QAAUvb,CACf,IACM+S,EAAIwI,OACZ,ECAD,SAASu+nB,GAAgB5ioB,GACvB,MAAmC,qBAArBA,EAAO2gD,UAA4B3gD,EAAO2gD,UAAU,OAAOn0D,QAAQ,mBAAoB,IAAMwT,CAC5G,CAoCD,SAASuhQ,GAAUtsQ,EAAO4toB,GACxB,IAAK,IAAItvoB,EAAI,EAAGA,EAAI0B,EAAM1J,OAAQgI,GAAK,EACrC,GAAIsvoB,EAAK5toB,EAAM1B,IACb,OAAOA,EAGX,OAAQ,CACT,CACD,IAAMuvoB,GA3CC,WAA0C,IAAbn4oB,EAAa,uDAAJ,CAAC,EAC5C,EAOIA,EANFo4oB,cAAAA,OADF,WAOIp4oB,EALFq4oB,WAAAA,OAFF,SAGEl6K,EAIEn+d,EAJFm+d,MAHF,EAOIn+d,EAHFs4oB,UAAAA,OAJF,MAIc,MAJd,EAKEtyoB,EAEEhG,EAFFgG,UALF,EAOIhG,EADFwC,KAAAA,OANF,SAQA,OAAO,SAACnF,EAAD,GAGD,IAFJkiQ,EAEI,EAFJA,WACAg5Y,EACI,EADJA,eAEI99nB,EAAQjY,EAAO+8P,EAAW/8P,OAAS+8P,EACnC84Y,IACF59nB,EAAQA,EAAMhG,eAEZ2joB,IACF39nB,EAAQw9nB,GAAgBx9nB,IAE1B,IAAM+9nB,EAAmB/9nB,EAAkBpd,EAAQo9B,QAAO,SAAAmS,GACxD,IAAI6rmB,GAAazyoB,GAAauyoB,GAAgB3rmB,GAO9C,OANIyrmB,IACFI,EAAYA,EAAUhkoB,eAEpB2joB,IACFK,EAAYR,GAAgBQ,IAET,UAAdH,EAAqD,IAA7BG,EAAUp3oB,QAAQoZ,GAAeg+nB,EAAUp3oB,QAAQoZ,IAAU,CAC7F,IATgCpd,EAUjC,MAAwB,kBAAV8ge,EAAqBq6K,EAAgBxzoB,MAAM,EAAGm5d,GAASq6K,CACtE,CACF,CAW4BE,GAIvBC,GAAkC,SAAAC,GACtC,IAAIC,EACJ,OAA8B,OAAvBD,EAAWl/nB,UAAmF,OAA7Dm/nB,EAAwBD,EAAWl/nB,QAAQw5B,oBAAyB,EAAS2lmB,EAAsB34kB,SAAS/9D,SAAS0lD,eAC9J,EACc,SAASixlB,GAAgB/toB,GACtC,IA8CIwtoB,EA9CJ,EA4CIxtoB,EA1CFguoB,kCAAAA,OAFF,MAEsCJ,GAFtC,IA4CI5toB,EAxCFiuoB,yBAAAA,OAJF,MAI6B,MAJ7B,IA4CIjuoB,EAvCFkuoB,aAAAA,OALF,WA4CIluoB,EAtCFmuoB,cAAAA,OANF,WA4CInuoB,EArCFouoB,WAAAA,OAPF,WA4CIpuoB,EApCFquoB,aAAAA,OARF,WA4CIruoB,EAnCFsuoB,YAAAA,OATF,OASiBtuoB,EAAMuuoB,SATvB,IA4CIvuoB,EAlCFwuoB,cAAAA,OAVF,WA4CIxuoB,EAjCF4nB,cAAAA,OAXF,MAWkB,kBAXlB,IA4CI5nB,EAhCFszB,aAAAA,OAZF,MAYiBtzB,EAAMw1K,SAAW,GAAK,KAZvC,IA4CIx1K,EA/BFyuoB,iBAAAA,OAbF,WA4CIzuoB,EA9BF0uoB,qBAAAA,OAdF,SAeYC,EA6BR3uoB,EA7BF0a,SAfF,EA4CI1a,EA5BF67lB,uBAAAA,OAhBF,WA4CI77lB,EA3BFq7lB,gBAAAA,OAjBF,WA4CIr7lB,EA1BF6oW,cAAAA,OAlBF,MAkBkBukS,GAlBlB,IA4CIptoB,EAzBF4uoB,sBAAAA,OAnBF,WA4CI5uoB,EAxBFuuoB,SAAAA,OApBF,SAqBEM,EAuBE7uoB,EAvBF6uoB,kBArBF,EA4CI7uoB,EAtBFwtoB,eAAgBsB,OAtBlB,MAsBuC,SAAAjtmB,GACnC,IAAIktmB,EACJ,OAAyC,OAAjCA,EAAgBltmB,EAAOj1B,OAAiBmioB,EAAgBltmB,CACjE,EAzBH,EA0BEmoD,EAkBEhqF,EAlBFgqF,QA1BF,EA4CIhqF,EAjBFgvoB,kBAAAA,OA3BF,OA2BuBhvoB,EAAMuuoB,SA3B7B,EA4BMt/C,EAgBFjvlB,EAhBFiT,GA5BF,EA4CIjT,EAfFivoB,mBAAAA,OA7BF,SA8BcC,EAcVlvoB,EAdFw0P,WA9BF,EA4CIx0P,EAbFmvoB,qBAAAA,OA/BF,MA+ByB,SAACttmB,EAAQzuC,GAAT,OAAmByuC,IAAWzuC,CAA9B,EA/BzB,IA4CI4M,EAZFw1K,SAAAA,OAhCF,SAiCEiB,GAWEz2K,EAXFy2K,SACA24a,GAUEpvlB,EAVFovlB,QACAggD,GASEpvoB,EATFovoB,kBACAC,GAQErvoB,EARFqvoB,cACAhgD,GAOErvlB,EAPFqvlB,OACMC,GAMJtvlB,EANF0T,KAtCF,GA4CI1T,EALFsvoB,YAAAA,QAvCF,WAwCEh9oB,GAIE0N,EAJF1N,QAxCF,GA4CI0N,EAHFiqB,SAAAA,QAzCF,cA4CIjqB,EAFFojN,cAAAA,QA1CF,QA0CmBpjN,EAAMuuoB,SA1CzB,GA2CSgB,GACLvvoB,EADF5M,MAEI6f,IAAKyV,EAAAA,GAAAA,GAAMumkB,GAEjBu+C,EAAiB,SAAA3rmB,GACf,IAAM2tmB,EAAcV,EAAmBjtmB,GACvC,MAA2B,kBAAhB2tmB,EAKF7woB,OAAO6woB,GAETA,CACR,EACD,IAAMC,GAAcphoB,EAAAA,QAAa,GAC3BqhoB,GAAarhoB,EAAAA,QAAa,GAC1BshoB,GAAWthoB,EAAAA,OAAa,MACxBw/nB,GAAax/nB,EAAAA,OAAa,MAChC,GAAgCA,EAAAA,SAAe,MAA/C,iBAAOy8kB,GAAP,MAAiB8kD,GAAjB,MACA,GAAoCvhoB,EAAAA,UAAgB,GAApD,iBAAOwhoB,GAAP,MAAmBC,GAAnB,MACMC,GAAqB5B,EAAgB,GAAK,EAC1C6B,GAAsB3hoB,EAAAA,OAAa0hoB,IACzC,IAA+BznnB,EAAAA,GAAAA,GAAc,CAC3CmV,WAAY8xmB,GACZ/2nB,QAAS8a,EACThlC,KAAMs5B,IAHR,iBAAOx0B,GAAP,MAAc68oB,GAAd,MAKA,IAAyC3nnB,EAAAA,GAAAA,GAAc,CACrDmV,WAAYyxmB,EACZ12nB,QAAS,GACTlqB,KAAMs5B,EACNgW,MAAO,eAJT,iBAAO42N,GAAP,MAAmB07Y,GAAnB,MAMA,GAA8B7hoB,EAAAA,UAAe,GAA7C,iBAAO0uB,GAAP,MAAgBskf,GAAhB,MACM8uH,GAAkB9hoB,EAAAA,aAAkB,SAACpY,EAAO8nC,GAIhD,IADyBy3I,EAAWpiL,GAAMyC,OAASkoC,EAASloC,OAAsB,OAAbkoC,IAC3CuwmB,EAA1B,CAGA,IAAI8B,EACJ,GAAI56d,EACF46d,EAAgB,QACX,GAAgB,MAAZrymB,EACTqymB,EAAgB,OACX,CACL,IAAMZ,EAAchC,EAAezvmB,GACnCqymB,EAAuC,kBAAhBZ,EAA2BA,EAAc,EACjE,CACGh7Y,KAAe47Y,IAGnBF,GAAmBE,GACff,IACFA,GAAcp5oB,EAAOm6oB,EAAe,SAfrC,CAiBF,GAAE,CAAC5C,EAAgBh5Y,GAAYh/E,EAAU65d,GAAea,GAAoB5B,EAAal7oB,KAC1F,IAA6Bk1B,EAAAA,GAAAA,GAAc,CACzCmV,WAAY6xjB,GACZ92kB,SAAS,EACTlqB,KAAMs5B,EACNgW,MAAO,SAJT,iBAAOlqB,GAAP,MAAa08kB,GAAb,MAMA,GAA0C/hlB,EAAAA,UAAe,GAAzD,iBAAOgioB,GAAP,MAAsBC,GAAtB,MACMC,IAA6B/6d,GAAqB,MAATpiL,IAAiBohQ,KAAeg5Y,EAAep6oB,IACxFo9oB,GAAY98nB,KAASuW,GACrBwjnB,GAAkB+C,GAAY3nS,EAAcv2W,GAAQo9B,QAAO,SAAAmS,GAC/D,OAAI+smB,KAA0Bp5d,EAAWpiL,GAAQ,CAACA,KAAQi0D,MAAK,SAAAa,GAAM,OAAe,OAAXA,GAAmBinlB,EAAqBttmB,EAAQqmB,EAApD,GAItE,IAGD,CACEssM,WAAY+7Y,IAA6BF,GAAgB,GAAK77Y,GAC9Dg5Y,eAAAA,IACG,GACCiD,GAAgBC,GAAiB,CACrCjD,gBAAAA,GACAr6oB,MAAAA,KAEFib,EAAAA,WAAgB,WACd,IAAMm1S,EAAcpwT,KAAUq9oB,GAAcr9oB,MACxC2pC,KAAYymR,GAKZ+qV,IAAa/qV,GAGjB2sV,GAAgB,KAAM/8oB,GACvB,GAAE,CAACA,GAAO+8oB,GAAiBpzmB,GAAS0zmB,GAAcr9oB,MAAOm7oB,IAC1D,IAAMoC,GAAmBj9nB,IAAQ+5nB,GAAgB53oB,OAAS,IAAMo0B,GAS1D2mnB,IAAWponB,EAAAA,GAAAA,IAAiB,SAAAqonB,IACZ,IAAhBA,EACFlB,GAAShhoB,QAAQ4M,QAEjBuvkB,GAAStmhB,cAAT,2BAA2CqskB,EAA3C,OAA2Dt1nB,OAE9D,IAGDlN,EAAAA,WAAgB,WACVmnK,GAAYq6d,GAAaz8oB,GAAMyC,OAAS,IAC1Ci6oB,IAAe,GACfc,IAAU,GAEb,GAAE,CAACx9oB,GAAOoiL,EAAUq6d,GAAYe,KAuBjC,IAAME,IAAsBtonB,EAAAA,GAAAA,IAAiB,YAIvC,IAHJvyB,EAGI,EAHJA,MACAI,EAEI,EAFJA,MAEI,IADJqxB,OAAAA,OACI,MADK,OACL,EAYJ,GAXAsonB,GAAoBrhoB,QAAUtY,GAGf,IAAXA,EACFs5oB,GAAShhoB,QAAQytC,gBAAgB,yBAEjCuzlB,GAAShhoB,QAAQnR,aAAa,wBAA9B,UAA0DyV,GAA1D,mBAAuE5c,IAErE+4oB,IACFA,GAAkBn5oB,GAAkB,IAAXI,EAAe,KAAOo3oB,GAAgBp3oB,GAAQqxB,GAEpEmmnB,GAAWl/nB,QAAhB,CAGA,IAAMvO,EAAOytoB,GAAWl/nB,QAAQ61D,cAAnB,0BAAoDypkB,EAApD,aACT7toB,IACFA,EAAK4iC,UAAUpwC,OAAf,UAAyBq7oB,EAAzB,aACA7toB,EAAK4iC,UAAUpwC,OAAf,UAAyBq7oB,EAAzB,mBAEF,IAAM8C,EAAclD,GAAWl/nB,QAAQw5B,cAAcq8B,cAAc,oBAGnE,GAAKuskB,EAGL,IAAe,IAAX16oB,EAAJ,CAIA,IAAMwrC,EAASgsmB,GAAWl/nB,QAAQ61D,cAAnB,8BAAwDnuE,EAAxD,OACf,GAAKwrC,IAGLA,EAAOmB,UAAUC,IAAjB,UAAwBgrmB,EAAxB,aACe,aAAXvmnB,GACFma,EAAOmB,UAAUC,IAAjB,UAAwBgrmB,EAAxB,kBAQE8C,EAAYzkX,aAAeykX,EAAYljf,cAA2B,UAAXnmI,GAAoB,CAC7E,IAAMhmB,EAAUmgC,EACVsxQ,EAAe49V,EAAYljf,aAAekjf,EAAYztc,UACtD0tc,EAAgBtvoB,EAAQwjK,UAAYxjK,EAAQs8D,aAC9CgzkB,EAAgB79V,EAClB49V,EAAYztc,UAAY0tc,EAAgBD,EAAYljf,aAC3CnsJ,EAAQwjK,UAAYxjK,EAAQs8D,cAAgBgsB,EAAU,IAAM,GAAK+mjB,EAAYztc,YACtFytc,EAAYztc,UAAY5hM,EAAQwjK,UAAYxjK,EAAQs8D,cAAgBgsB,EAAU,IAAM,GAEvF,CAxBA,MAFC+mjB,EAAYztc,UAAY,CAbzB,CAwCF,IACK2tc,IAAyBzonB,EAAAA,GAAAA,IAAiB,YAK1C,IAJJvyB,EAII,EAJJA,MACA4gF,EAGI,EAHJA,KAGI,IAFJ/6D,UAAAA,OAEI,MAFQ,OAER,MADJ4L,OAAAA,OACI,MADK,OACL,EACJ,GAAK8onB,GAAL,CAGA,IAgCMjjB,EA1HR,SAA0Bl3nB,EAAOylB,GAC/B,IAAK+xnB,GAAWl/nB,UAAsB,IAAXtY,EACzB,OAAQ,EAGV,IADA,IAAImlmB,EAAYnlmB,IACH,CAEX,GAAkB,SAAdylB,GAAwB0/kB,IAAciyC,GAAgB53oB,QAAwB,aAAdimB,IAA2C,IAAf0/kB,EAC9F,OAAQ,EAEV,IAAM35jB,EAASgsmB,GAAWl/nB,QAAQ61D,cAAnB,8BAAwDg3hB,EAAxD,OAGTQ,GAAoBH,KAAkCh6jB,GAAUA,EAAOnnB,UAAqD,SAAzCmnB,EAAOt9B,aAAa,kBAC7G,KAAIs9B,IAAWA,EAAOu5G,aAAa,aAAe4gd,GAIhD,OAAOR,EAFPA,GAA2B,SAAd1/kB,EAAuB,GAAK,CAI5C,CACF,CAqGmBo1nB,CAhCG,WACnB,IAAMC,EAAW1D,GAAgB53oB,OAAS,EAC1C,GAAa,UAATghF,EACF,OAAOk5jB,GAET,GAAa,UAATl5jB,EACF,OAAO,EAET,GAAa,QAATA,EACF,OAAOs6jB,EAET,IAAM93iB,EAAW22iB,GAAoBrhoB,QAAUkoE,EAC/C,OAAIwiB,EAAW,GACK,IAAdA,GAAmB41iB,GACb,EAEN5zC,IAAoD,IAAjC20C,GAAoBrhoB,SAAkBlQ,KAAKD,IAAIq4E,GAAQ,EACrE,EAEFs6jB,EAEL93iB,EAAW83iB,EACT93iB,IAAa83iB,EAAW,GAAKlC,GACvB,EAEN5zC,GAAmB58lB,KAAKD,IAAIq4E,GAAQ,EAC/Bs6jB,EAEF,EAEF93iB,CACR,CACkC+3iB,GAAgBt1nB,GAQnD,GAPAg1nB,GAAoB,CAClBz6oB,MAAOk3nB,EACP7lmB,OAAAA,EACAzxB,MAAAA,IAIEi4oB,GAAyB,UAATr3jB,EAClB,IAAmB,IAAf02iB,EACFoiB,GAAShhoB,QAAQvb,MAAQohQ,OACpB,CACL,IAAM3yN,EAAS2rmB,EAAeC,GAAgBlgB,IAC9CoiB,GAAShhoB,QAAQvb,MAAQyuC,EAKX,IADAA,EAAOn4B,cAAcpT,QAAQk+P,GAAW9qP,gBACnC8qP,GAAW3+P,OAAS,GACrC85oB,GAAShhoB,QAAQ0ioB,kBAAkB78Y,GAAW3+P,OAAQgsC,EAAOhsC,OAEhE,CAtDF,CAwDF,IAoBKy7oB,GAAuBjjoB,EAAAA,aAAkB,WAC7C,GAAKmioB,KApB8B,WACnC,IAAqBvolB,EAAQC,EAK7B,IAAqC,IAAjC8nlB,GAAoBrhoB,SAAkB8hoB,GAAchD,iBAAmBgD,GAAchD,gBAAgB53oB,SAAW43oB,GAAgB53oB,SAAW2/K,EAAWpiL,GAAMyC,SAAW46oB,GAAcr9oB,MAAMyC,QAAU46oB,GAAcr9oB,MAAM2nC,OAAM,SAACpN,EAAK9vB,GAAN,OAAY2voB,EAAep6oB,GAAMyK,MAAQ2voB,EAAe7/mB,EAAxD,KAL9Ms6B,EAK0RwolB,GAAcr9oB,MALhS80D,EAKuS90D,IAJnT60D,EAASullB,EAAevllB,GAAU,OAClCC,EAASsllB,EAAetllB,GAAU,MAG0R,CAC3U,IAAMqplB,EAA4Bd,GAAchD,gBAAgBuC,GAAoBrhoB,SACpF,GAAI4ioB,GACsC9D,GAAgBpmlB,MAAK,SAAAxlB,GAC3D,OAAO2rmB,EAAe3rmB,KAAY2rmB,EAAe+D,EAClD,IAEC,OAAO,CAGZ,CACD,OAAO,CACR,CAQKC,GAAJ,CAGA,IAAMjslB,EAAYiwH,EAAWpiL,GAAM,GAAKA,GAGxC,GAA+B,IAA3Bq6oB,GAAgB53oB,QAA6B,MAAb0vD,GAMpC,GAAKsolB,GAAWl/nB,QAKhB,GAAiB,MAAb42C,EAqBAyqlB,GAAoBrhoB,SAAW8+nB,GAAgB53oB,OAAS,EAC1Di7oB,GAAoB,CAClBz6oB,MAAOo3oB,GAAgB53oB,OAAS,IAMpCi7oB,GAAoB,CAClBz6oB,MAAO25oB,GAAoBrhoB,cA9B7B,CACE,IAAM8ioB,EAAgBhE,GAAgBuC,GAAoBrhoB,SAG1D,GAAI6mK,GAAYi8d,IAAwF,IAAvE5lY,GAAUz4Q,IAAO,SAAAu6B,GAAG,OAAIwhnB,EAAqBsC,EAAe9jnB,EAAxC,IACnD,OAEF,IAAMggH,EAAYk+H,GAAU4hY,IAAiB,SAAAiE,GAAU,OAAIvC,EAAqBuC,EAAYnslB,EAArC,KACpC,IAAfooF,EACFsjgB,GAAuB,CACrBp6jB,KAAM,UAGRi6jB,GAAoB,CAClBz6oB,MAAOs3I,GAIZ,OA5BCsjgB,GAAuB,CACrBp6jB,KAAM,SANT,CAiDF,GAAE,CAEH42jB,GAAgB53oB,QAGhB2/K,GAAmBpiL,GAAOw7oB,EAAuBqC,GAAwBH,GAAqBN,GAAWh8Y,GAAYh/E,IAC/Gm8d,IAAmBnpnB,EAAAA,GAAAA,IAAiB,SAAA3oB,IACxC29B,EAAAA,GAAAA,GAAOqwmB,GAAYhuoB,GACdA,GAGLyxoB,IACD,IAaDjjoB,EAAAA,WAAgB,WACdijoB,IACD,GAAE,CAACA,KACJ,IAAM9gD,GAAa,SAAAv6lB,GACbyd,KAGJ08kB,IAAa,GACbkgD,IAAiB,GACbjhD,IACFA,GAAOp5lB,GAEV,EACKw6lB,GAAc,SAACx6lB,EAAOyxB,GACrBhU,KAGL08kB,IAAa,GACThB,IACFA,GAAQn5lB,EAAOyxB,GAElB,EACKkqnB,GAAc,SAAC37oB,EAAO8nC,EAAUrW,EAAQslC,GAC5C,GAAIwoH,GACF,GAAIpiL,GAAMyC,SAAWkoC,EAASloC,QAAUzC,GAAM2nC,OAAM,SAACpN,EAAK9vB,GAAN,OAAY8vB,IAAQoQ,EAASlgC,EAA7B,IAClD,YAEG,GAAIzK,KAAU2qC,EACnB,OAEE04I,IACFA,GAASxgL,EAAO8nC,EAAUrW,EAAQslC,GAEpCijlB,GAAclymB,EACf,EACK8zmB,GAAUxjoB,EAAAA,QAAa,GACvByjoB,GAAiB,SAAC77oB,EAAO4rC,GAA4D,IAApDkwmB,EAAoD,uDAAvC,eAAgBt8E,EAAuB,uDAAd,UACvE/tiB,EAASqqnB,EACTh0mB,EAAW8D,EACf,GAAI2zI,EAAU,CAE+B,IAMrC7nC,EAAYk+H,GAPlB9tO,EAAWhkC,MAAMC,QAAQ5G,IAASA,GAAM6G,QAAU,IAOZ,SAAAsrD,GAAS,OAAI4plB,EAAqBttmB,EAAQ0jB,EAAjC,KAC5B,IAAfooF,EACF5vG,EAASzoC,KAAKusC,GACM,aAAX4zhB,IACT13hB,EAASxnC,OAAOo3I,EAAW,GAC3BjmH,EAAS,eAEZ,CACDyonB,GAAgBl6oB,EAAO8nC,GACvB6zmB,GAAY37oB,EAAO8nC,EAAUrW,EAAQ,CACnCma,OAAAA,IAEG6smB,GAA0Bz4oB,IAAUA,EAAM0zB,SAAY1zB,EAAMwzB,UAC/DgnkB,GAAYx6lB,EAAOyxB,KAEA,IAAjB2mnB,GAA0C,UAAjBA,GAA4BwD,GAAQljoB,SAA4B,UAAjB0/nB,IAA6BwD,GAAQljoB,UAC/GghoB,GAAShhoB,QAAQ++D,MAEpB,EAqBD,IAAMskkB,GAAiB,SAAC/7oB,EAAO6lB,GAC7B,GAAK05J,EAAL,CAGmB,KAAfg/E,IACFi8V,GAAYx6lB,EAAO,eAErB,IAAI8X,EAAU8hoB,IACM,IAAhBA,GACiB,KAAfr7Y,IAAmC,aAAd14O,IACvB/N,EAAU3a,GAAMyC,OAAS,KAG3BkY,GAAyB,SAAd+N,EAAuB,GAAK,GACzB,IACZ/N,EAAU,GAERA,IAAY3a,GAAMyC,SACpBkY,GAAW,IAGfA,EAzCF,SAAuB1X,EAAOylB,GAC5B,IAAe,IAAXzlB,EACF,OAAQ,EAGV,IADA,IAAImlmB,EAAYnlmB,IACH,CAEX,GAAkB,SAAdylB,GAAwB0/kB,IAAcpomB,GAAMyC,QAAwB,aAAdimB,IAA2C,IAAf0/kB,EACpF,OAAQ,EAEV,IAAM35jB,EAASipjB,GAAStmhB,cAAT,2BAA2Cg3hB,EAA3C,OAGf,GAAK35jB,GAAWA,EAAOu5G,aAAa,cAAev5G,EAAOnnB,UAAqD,SAAzCmnB,EAAOt9B,aAAa,iBAGxF,OAAOi3lB,EAFPA,GAA2B,SAAd1/kB,EAAuB,GAAK,CAI5C,CACF,CAsBWm2nB,CAAclkoB,EAAS+N,GACjCg0nB,GAAc/hoB,GACd6ioB,GAAS7ioB,EApBR,CAqBF,EACKmkoB,GAAc,SAAAj8oB,GAClBw5oB,GAAY9goB,SAAU,EACtBuhoB,GAAmB,IACfb,IACFA,GAAcp5oB,EAAO,GAAI,SAE3B27oB,GAAY37oB,EAAOu/K,EAAW,GAAK,KAAM,QAC1C,EACKhsJ,GAAgB,SAAA9M,GAAK,OAAI,SAAAzmB,GAI7B,GAHIymB,EAAMk2J,WACRl2J,EAAMk2J,UAAU38K,IAEdA,EAAMk8oB,uBAGU,IAAhBtC,KAAyE,IAApD,CAAC,YAAa,cAAcv5oB,QAAQL,EAAMuB,OACjEs4oB,IAAe,GACfc,IAAU,IAIQ,MAAhB36oB,EAAMshE,OACR,OAAQthE,EAAMuB,KACZ,IAAK,OACCg5oB,IAAaxB,IAEf/4oB,EAAMo7D,iBACN4/kB,GAAuB,CACrBp6jB,KAAM,QACN/6D,UAAW,OACX4L,OAAQ,WACRzxB,MAAAA,KAGJ,MACF,IAAK,MACCu6oB,IAAaxB,IAEf/4oB,EAAMo7D,iBACN4/kB,GAAuB,CACrBp6jB,KAAM,MACN/6D,UAAW,WACX4L,OAAQ,WACRzxB,MAAAA,KAGJ,MACF,IAAK,SAEHA,EAAMo7D,iBACN4/kB,GAAuB,CACrBp6jB,MAnkBK,EAokBL/6D,UAAW,WACX4L,OAAQ,WACRzxB,MAAAA,IAEFu6lB,GAAWv6lB,GACX,MACF,IAAK,WAEHA,EAAMo7D,iBACN4/kB,GAAuB,CACrBp6jB,KA9kBK,EA+kBL/6D,UAAW,OACX4L,OAAQ,WACRzxB,MAAAA,IAEFu6lB,GAAWv6lB,GACX,MACF,IAAK,YAEHA,EAAMo7D,iBACN4/kB,GAAuB,CACrBp6jB,KAAM,EACN/6D,UAAW,OACX4L,OAAQ,WACRzxB,MAAAA,IAEFu6lB,GAAWv6lB,GACX,MACF,IAAK,UAEHA,EAAMo7D,iBACN4/kB,GAAuB,CACrBp6jB,MAAO,EACP/6D,UAAW,WACX4L,OAAQ,WACRzxB,MAAAA,IAEFu6lB,GAAWv6lB,GACX,MACF,IAAK,YACH+7oB,GAAe/7oB,EAAO,YACtB,MACF,IAAK,aACH+7oB,GAAe/7oB,EAAO,QACtB,MACF,IAAK,QACH,IAAqC,IAAjC+5oB,GAAoBrhoB,SAAkB6hoB,GAAW,CACnD,IAAM3umB,EAAS4rmB,GAAgBuC,GAAoBrhoB,SAC7C+L,IAAWm0nB,GAAoBA,EAAkBhtmB,GAIvD,GADA5rC,EAAMo7D,iBACF32C,EACF,OAEFo3nB,GAAe77oB,EAAO4rC,EAAQ,gBAG1BqsmB,GACFyB,GAAShhoB,QAAQ0ioB,kBAAkB1B,GAAShhoB,QAAQvb,MAAMyC,OAAQ85oB,GAAShhoB,QAAQvb,MAAMyC,OAE5F,MAAU04oB,GAA2B,KAAf/5Y,KAAmD,IAA9B+7Y,KACtC/6d,GAEFv/K,EAAMo7D,iBAERyglB,GAAe77oB,EAAOu+P,GAAY,eAAgB,aAEpD,MACF,IAAK,SACCg8Y,IAEFv6oB,EAAMo7D,iBAENp7D,EAAMggE,kBACNw6hB,GAAYx6lB,EAAO,WACVu4oB,IAAiC,KAAfh6Y,IAAqBh/E,GAAYpiL,GAAMyC,OAAS,KAE3EI,EAAMo7D,iBAENp7D,EAAMggE,kBACNi8kB,GAAYj8oB,IAEd,MACF,IAAK,YACH,GAAIu/K,IAAavrJ,IAA2B,KAAfuqO,IAAqBphQ,GAAMyC,OAAS,EAAG,CAClE,IAAMQ,GAAwB,IAAhBw5oB,GAAoBz8oB,GAAMyC,OAAS,EAAIg6oB,GAC/C9xmB,EAAW3qC,GAAM6G,QACvB8jC,EAASxnC,OAAOF,EAAO,GACvBu7oB,GAAY37oB,EAAO8nC,EAAU,eAAgB,CAC3C8D,OAAQzuC,GAAMiD,IAEjB,CACD,MACF,IAAK,SACH,GAAIm/K,IAAavrJ,IAA2B,KAAfuqO,IAAqBphQ,GAAMyC,OAAS,IAAqB,IAAhBg6oB,GAAmB,CACvF,IAAMx5oB,EAAQw5oB,GACR9xmB,EAAW3qC,GAAM6G,QACvB8jC,EAASxnC,OAAOF,EAAO,GACvBu7oB,GAAY37oB,EAAO8nC,EAAU,eAAgB,CAC3C8D,OAAQzuC,GAAMiD,IAEjB,EAKR,CAvJ0B,EAwJrB0iiB,GAAc,SAAA9iiB,GAClBorhB,IAAW,GACPiuH,KAAgBG,GAAY9goB,SAC9B6hlB,GAAWv6lB,EAEd,EACK+iiB,GAAa,SAAA/iiB,GAEb+3oB,EAAkCH,IACpC8B,GAAShhoB,QAAQ4M,SAGnB8lgB,IAAW,GACXquH,GAAW/goB,SAAU,EACrB8goB,GAAY9goB,SAAU,EAClBy/nB,IAA+C,IAAjC4B,GAAoBrhoB,SAAkB6hoB,GACtDsB,GAAe77oB,EAAOw3oB,GAAgBuC,GAAoBrhoB,SAAU,QAC3Dy/nB,GAAcG,GAA2B,KAAf/5Y,GACnCs9Y,GAAe77oB,EAAOu+P,GAAY,OAAQ,YACjC85Y,GACT6B,GAAgBl6oB,EAAO7C,IAEzBq9lB,GAAYx6lB,EAAO,QACpB,EACKm8oB,GAAoB,SAAAn8oB,GACxB,IAAM8nC,EAAW9nC,EAAM4W,OAAOzZ,MAC1BohQ,KAAez2N,IACjBmymB,GAAmBnymB,GACnBuymB,IAAiB,GACbjB,IACFA,GAAcp5oB,EAAO8nC,EAAU,UAGlB,KAAbA,EACG0wmB,GAAqBj5d,GACxBo8d,GAAY37oB,EAAO,KAAM,SAG3Bu6lB,GAAWv6lB,EAEd,EACKo8oB,GAAwB,SAAAp8oB,GAC5B66oB,GAAoB,CAClB76oB,MAAAA,EACAI,MAAOu3B,OAAO33B,EAAMy+D,cAAcnwD,aAAa,sBAC/CmjB,OAAQ,SAEX,EACK4qnB,GAAyB,SAAAr8oB,GAC7B66oB,GAAoB,CAClB76oB,MAAAA,EACAI,MAAOu3B,OAAO33B,EAAMy+D,cAAcnwD,aAAa,sBAC/CmjB,OAAQ,UAEVmqnB,GAAQljoB,SAAU,CACnB,EACK4joB,GAAoB,SAAAt8oB,GACxB,IAAMI,EAAQu3B,OAAO33B,EAAMy+D,cAAcnwD,aAAa,sBACtDutoB,GAAe77oB,EAAOw3oB,GAAgBp3oB,GAAQ,gBAC9Cw7oB,GAAQljoB,SAAU,CACnB,EACK6joB,GAAkB,SAAAn8oB,GAAK,OAAI,SAAAJ,GAC/B,IAAM8nC,EAAW3qC,GAAM6G,QACvB8jC,EAASxnC,OAAOF,EAAO,GACvBu7oB,GAAY37oB,EAAO8nC,EAAU,eAAgB,CAC3C8D,OAAQzuC,GAAMiD,IAEjB,CAN4B,EAOvBo8oB,GAAuB,SAAAx8oB,GACvByd,GACF+8kB,GAAYx6lB,EAAO,eAEnBu6lB,GAAWv6lB,EAEd,EAGKiimB,GAAkB,SAAAjimB,GAClBA,EAAM4W,OAAOtI,aAAa,QAAU0O,IACtChd,EAAMo7D,gBAET,EAGK2yO,GAAc,WAClB2rW,GAAShhoB,QAAQ4M,QACb6nM,IAAiBssb,GAAW/goB,SAAWghoB,GAAShhoB,QAAQgyO,aAAegvZ,GAAShhoB,QAAQ+xO,iBAAmB,GAC7GivZ,GAAShhoB,QAAQo2D,SAEnB2qkB,GAAW/goB,SAAU,CACtB,EACK+joB,GAAuB,SAAAz8oB,GACR,KAAfu+P,IAAsB9gP,IACxB++nB,GAAqBx8oB,EAExB,EACG08oB,GAAQpE,GAAY/5Y,GAAW3+P,OAAS,EAC5C88oB,GAAQA,KAAUn9d,EAAWpiL,GAAMyC,OAAS,EAAc,OAAVzC,IAChD,IAAIw/oB,GAAiBnF,GACrB,GAAIzjjB,EAAS,CAEK,IAAI57F,IAEpBwkpB,GAAiBnF,GAAgBp0oB,QAAO,SAACC,EAAKuoC,EAAQxrC,GACpD,IAAMo0F,EAAQT,EAAQnoD,GAkBtB,OAjBIvoC,EAAIzD,OAAS,GAAKyD,EAAIA,EAAIzD,OAAS,GAAG40F,QAAUA,EAClDnxF,EAAIA,EAAIzD,OAAS,GAAGvD,QAAQgD,KAAKusC,GASjCvoC,EAAIhE,KAAK,CACPkC,IAAKnB,EACLA,MAAAA,EACAo0F,MAAAA,EACAn4F,QAAS,CAACuvC,KAGPvoC,CACR,GAAE,GACJ,CAID,OAHIq1oB,GAAgB5xmB,IAClBi8f,KAEK,CACL65G,aAAc,eAACn2nB,EAAD,uDAAS,CAAC,EAAV,OAAgBzO,EAAAA,EAAAA,GAAS,CACrC,YAAa0ioB,GAAmB,GAAH,OAAM19nB,GAAN,YAAqB,MACjDyJ,EAAO,CACRk2J,UAAWppJ,GAAc9M,GACzBq2J,YAAamlb,GACb1lb,QAASwxH,IALG,EAOd8uW,mBAAoB,iBAAO,CACzB7/nB,GAAI,GAAF,OAAKA,GAAL,UACF8/nB,QAAS9/nB,GAFS,EAIpB+/nB,cAAe,iBAAO,CACpB//nB,GAAAA,GACA7f,MAAOohQ,GACPjqO,OAAQyugB,GACR1ugB,QAASyugB,GACTtiX,SAAU27d,GACVr/d,YAAa2/d,GAGb,wBAAyBlC,GAAY,GAAK,KAC1C,oBAAqBtC,EAAe,OAAS,OAC7C,gBAAiByC,GAAmB,GAAH,OAAM19nB,GAAN,iBAAqBpW,EACtD,gBAAiB8zoB,GAGjBzC,aAAc,MACd/noB,IAAKwpoB,GACLsD,eAAgB,OAChBC,WAAY,QACZ9rnB,KAAM,WACN1M,SAAUi0nB,EApBG,EAsBfwE,cAAe,iBAAO,CACpBz9lB,UAAW,EACX88H,QAAS0/d,GAFI,EAIfkB,uBAAwB,iBAAO,CAC7B19lB,UAAW,EACX88H,QAASige,GAFa,EAIxBY,YAAa,gBACXh9oB,EADW,EACXA,MADW,OAEP4X,EAAAA,EAAAA,GAAS,CACbzW,IAAKnB,EACL,iBAAkBA,EAClBq/C,UAAW,IACTzrB,IAAY,CACdqpnB,SAAUd,GAAgBn8oB,IAPf,EASbk9oB,gBAAiB,iBAAO,CACtBnsnB,KAAM,UACNnU,GAAI,GAAF,OAAKA,GAAL,YACF,kBAAmB,GAAnB,OAAsBA,GAAtB,UACA9M,IAAKwroB,GACL5+d,YAAa,SAAA98K,GAEXA,EAAMo7D,gBACP,EARc,EAUjBmilB,eAAgB,YAGV,IAFJn9oB,EAEI,EAFJA,MACAwrC,EACI,EADJA,OAEM1mB,GAAYq6J,EAAWpiL,GAAQ,CAACA,KAAQi0D,MAAK,SAAAa,GAAM,OAAc,MAAVA,GAAkBinlB,EAAqBttmB,EAAQqmB,EAAnD,IACnDxtC,IAAWm0nB,GAAoBA,EAAkBhtmB,GACvD,MAAO,CACLrqC,IAAKg2oB,EAAe3rmB,GACpB6T,UAAW,EACXtuB,KAAM,SACNnU,GAAI,GAAF,OAAKA,GAAL,mBAAkB5c,GACpBi7lB,YAAa+gD,GACb7/d,QAAS+/d,GACTn/d,aAAck/d,GACd,oBAAqBj8oB,EACrB,gBAAiBqkB,EACjB,gBAAiBS,EAEpB,EACDlI,GAAAA,GACAuhP,WAAAA,GACAphQ,MAAAA,GACAu/oB,MAAAA,GACA71mB,SAAU0zmB,IAAa1lD,GACvB0lD,UAAAA,GACAzzmB,QAASA,KAA2B,IAAhB8ymB,GACpB/kD,SAAAA,GACA8kD,YAAAA,GACAC,WAAAA,GACA+C,eAAAA,GAEH,CCl8BM,SAASa,GAA6BpvnB,GAC3C,OAAOC,EAAAA,GAAAA,GAAqB,mBAAoBD,EACjD,EAC4BE,EAAAA,GAAAA,GAAuB,mBAAoB,CAAC,OAAQ,eAAgB,eAAgB,UAAW,QAAS,WAArI,ICHMjK,GAAY,CAAC,YAAa,QAAS,YAAa,iBAAkB,gBAAiB,SAuBnFo5nB,IAAoB1vnB,EAAAA,GAAAA,IAAO,KAAM,CACrC11B,KAAM,mBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAA2B,YAArB4kB,EAAW7G,OAAuBtY,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWO,EAAW7G,UAAY6G,EAAWqhlB,gBAAkBxgmB,EAAOygmB,QAASthlB,EAAWivnB,OAASpuoB,EAAOouoB,OAAQjvnB,EAAWkvnB,eAAiBruoB,EAAOsuoB,OAC5N,GARuB7vnB,EASvB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb+rB,UAAW,aACX7xB,WAAY,OACZ6ylB,UAAW,OACXn9kB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK4e,UAC1CkE,WAAYpR,EAAMmR,WAAWC,WAC7BzW,WAAYqF,EAAMmR,WAAWK,iBAC7BH,SAAUrR,EAAMmR,WAAWU,QAAQ,KACb,YAArBsF,EAAW7G,OAAuB,CACnCA,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ/B,QAAQ4B,MACvB,YAArBsI,EAAW7G,OAAuB,CACnCA,MAAO,YACL6G,EAAWqhlB,gBAAkB,CAC/BhvkB,YAAa,GACbF,aAAc,IACbnS,EAAWivnB,OAAS,CACrB58mB,YAAa,KACXrS,EAAWkvnB,eAAiB,CAC9Bl0oB,SAAU,SACVi6B,IAAK,EACLlxB,OAAQ,EACR4tB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ3B,WAAWC,OAxBzD,IA0BGi5nB,GAA6BzloB,EAAAA,YAAiB,SAAuBgY,EAASlgB,GAClF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,qBAGJ+e,EAMErN,EANFqN,UADJ,EAOMrN,EALF6d,MAAAA,OAFJ,MAEY,UAFZ,IAOM7d,EAJFsmB,UAAAA,OAHJ,MAGgB,KAHhB,IAOMtmB,EAHF+lmB,eAAAA,OAJJ,WAOM/lmB,EAFF4zoB,cAAAA,OALJ,WAOM5zoB,EADF2zoB,MAAAA,OANJ,SAQEj3nB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAyI,UAAAA,EACAy/kB,eAAAA,EACA6tC,cAAAA,EACAD,MAAAA,IAEI9snB,EArEkB,SAAAnC,GACxB,IACEmC,EAKEnC,EALFmC,QACAhJ,EAIE6G,EAJF7G,MACAkolB,EAGErhlB,EAHFqhlB,eACA4tC,EAEEjvnB,EAFFivnB,MACAC,EACElvnB,EADFkvnB,cAEI9snB,EAAQ,CACZhnB,KAAM,CAAC,OAAkB,YAAV+d,GAAA,gBAA+BsG,EAAAA,GAAAA,GAAWtG,KAAWkolB,GAAkB,UAAW4tC,GAAS,SAAUC,GAAiB,WAEvI,OAAO7snB,EAAAA,GAAAA,GAAeD,EAAO2snB,GAA8B5snB,EAC5D,CAyDiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKqsnB,IAAmBzloB,EAAAA,EAAAA,GAAS,CACnDb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,EACLue,WAAYA,GACXhI,GACJ,IACDo3nB,GAAcp3C,sBAAuB,EAgDrC,UClIA,IAAe7jlB,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,oLACD,UCPG,SAASq7nB,GAAoB1vnB,GAClC,OAAOC,EAAAA,GAAAA,GAAqB,UAAWD,EACxC,CACD,IACA,IADoBE,EAAAA,GAAAA,GAAuB,UAAW,CAAC,OAAQ,YAAa,aAAc,aAAc,YAAa,eAAgB,iBAAkB,eAAgB,eAAgB,WAAY,YAAa,wBAAyB,0BAA2B,YAAa,wBAAyB,0BAA2B,WAAY,SAAU,kBAAmB,oBAAqB,gBAAiB,kBAAmB,SAAU,cAAe,eAAgB,qBAAsB,uBAAwB,OAAQ,YAAa,aAAc,mBAAoB,qBAAsB,QAAS,aAAc,cAAe,aAAc,kBAAmB,mBAAoB,yBAA0B,2BAA4B,iCAAkC,mCAAoC,+BAAgC,iCAAkC,iBCH91BjK,GAAY,CAAC,SAAU,YAAa,YAAa,QAAS,YAAa,aAAc,WAAY,OAAQ,QAAS,UAAW,WAAY,YAAa,UAAW,OAAQ,UAAW,WAAY,yBAoChM05nB,IAAWhwnB,EAAAA,GAAAA,IAAO,MAAO,CAC7B11B,KAAM,UACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAGA7G,EAME6G,EANF7G,MACAs7gB,EAKEz0gB,EALFy0gB,UACA86G,EAIEvvnB,EAJFuvnB,UACAX,EAGE5unB,EAHF4unB,SACAvwoB,EAEE2hB,EAFF3hB,KACAqrB,EACE1J,EADF0J,QAEF,MAAO,EAAC,wBACC8lnB,GAAAA,QAAuB3uoB,EAAO4uoB,SADhC,wBAGED,GAAAA,QAAuB3uoB,EAAO,SAAD,QAAU4e,EAAAA,GAAAA,GAAWphB,OAHpD,wBAKEmxoB,GAAAA,QAAuB3uoB,EAAO,cAAD,QAAe4e,EAAAA,GAAAA,GAAWtG,OALzD,wBAOEq2nB,GAAAA,MAAqB3uoB,EAAOoW,OAP9B,wBASEu4nB,GAAAA,MAAqB3uoB,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWphB,OAThD,wBAWEmxoB,GAAAA,MAAqB3uoB,EAAO,YAAD,QAAa4e,EAAAA,GAAAA,GAAWg1gB,OAXrD,wBAaE+6G,GAAAA,YAA2B3uoB,EAAO6uoB,aAbpC,wBAeEF,GAAAA,YAA2B3uoB,EAAO,aAAD,QAAc4e,EAAAA,GAAAA,GAAWphB,OAf5D,wBAiBEmxoB,GAAAA,YAA2B3uoB,EAAO,kBAAD,QAAmB4e,EAAAA,GAAAA,GAAWtG,OAjBjE,wBAmBEq2nB,GAAAA,YAA2B3uoB,EAAO,aAAD,QAAc4e,EAAAA,GAAAA,GAAWiK,GAAzB,iBAAyCjK,EAAAA,GAAAA,GAAWtG,MAC3FtY,EAAOzF,KAAMyF,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWphB,KAAUwC,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWtG,KAAWo2nB,GAAa1uoB,EAAO0uoB,UAAWA,GAAuB,YAAVp2nB,GAAuBtY,EAAO,iBAAD,QAAkB4e,EAAAA,GAAAA,GAAWtG,GAA7B,MAAyCy1nB,GAAY/toB,EAAO8uoB,UAAWf,GAAsB,YAAVz1nB,GAAuBtY,EAAO,iBAAD,QAAkB4e,EAAAA,GAAAA,GAAWtG,KAAWtY,EAAO6oB,GAAU7oB,EAAO,GAAD,OAAI6oB,GAAJ,QAAcjK,EAAAA,GAAAA,GAAWtG,KAC1W,GApCcmG,EAqCd,YAGG,MAFJzW,EAEI,EAFJA,MACAmX,EACI,EADJA,WAEM4vnB,GAAkBrmnB,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ1gB,KAAK2e,QAAS,KACpD+5nB,EAAmC,UAAvBhnoB,EAAMgP,QAAQC,KAAmBjP,EAAMgP,QAAQ8B,KAAK,KAAO9Q,EAAMgP,QAAQ8B,KAAK,KAChG,OAAOpQ,EAAAA,EAAAA,IAAQ,GACb4nB,SAAU,OACVlX,WAAYpR,EAAMmR,WAAWC,WAC7BC,SAAUrR,EAAMmR,WAAWU,QAAQ,IACnC0G,QAAS,cACTiT,WAAY,SACZD,eAAgB,SAChBpX,OAAQ,GACR7D,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK2e,QAC1C6b,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOI,SACtD2W,aAAc,GACd4G,WAAY,SACZ1S,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,mBAAoB,eAE1DoE,OAAQ,UAERuslB,QAAS,EACTI,eAAgB,OAChB5hkB,OAAQ,EAERV,QAAS,EAETmikB,cAAe,SACft8jB,UAAW,eAvBE,sBAwBPk6mB,GAAAA,UAAyB,CAC7B9roB,SAAUmF,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOO,gBAC9Cy0C,cAAe,UA1BJ,uBA4BNmklB,GAAAA,QAAuB,CAC5Bn8mB,WAAY,EACZF,aAAc,EACdhS,MAAO,GACPnE,OAAQ,GACR7D,MAAOtQ,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQi4nB,KAAKC,mBAAqBF,EACjE31nB,SAAUrR,EAAMmR,WAAWU,QAAQ,OAlCxB,uBAoCN80nB,GAAAA,oBAAmC,CACxCr2nB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ/B,QAAQ0D,aAC7CmY,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ/B,QAAQkB,QAtC5C,uBAwCNw4nB,GAAAA,sBAAqC,CAC1Cr2nB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ9B,UAAUyD,aAC/CmY,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ9B,UAAUiB,QA1C9C,uBA4CNw4nB,GAAAA,aAA4B,CACjCn8mB,WAAY,EACZF,aAAc,EACdhS,MAAO,GACPnE,OAAQ,GACR9C,SAAUrR,EAAMmR,WAAWU,QAAQ,OAjDxB,uBAmDN80nB,GAAAA,OAAqBjmoB,EAAAA,EAAAA,GAAS,CACnC8pB,WAAY,EACZF,aAAc,GACO,UAApBnT,EAAW3hB,MAAoB,CAChC6b,SAAU,GACVmZ,WAAY,EACZF,aAAc,GACbnT,EAAWy0gB,YAAcz0gB,EAAW7G,QAAS5P,EAAAA,EAAAA,GAAS,CACvD4P,MAAOtQ,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQi4nB,KAAKE,iBAAmBH,GACzC,YAArB7vnB,EAAW7G,OAAuB,CACnCA,MAAO,eA7DI,uBA+DNq2nB,GAAAA,aAA2BjmoB,EAAAA,EAAAA,GAAS,CACzCmolB,wBAAyB,cACzBv4kB,MAAOtQ,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ1gB,KAAK2woB,eAA7C,YAAwE8H,EAC/E11nB,SAAU,GACV9U,OAAQ,UACRoqB,OAAQ,eACR,UAAW,CACTrW,MAAOtQ,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ1gB,KAAK2woB,eAA7C,YAAuEv+mB,EAAAA,GAAAA,IAAMqmnB,EAAiB,MAElF,UAApB5vnB,EAAW3hB,MAAoB,CAChC6b,SAAU,GACViZ,YAAa,EACbE,YAAa,GACS,YAArBrT,EAAW7G,OAAuB,CACnCA,MAAOtQ,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAO82nB,oBAA1D,YAAyF1mnB,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOK,aAAc,IACpJ,oBAAqB,CACnBL,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOK,iBA/E9C,GAkFQ,UAApBwG,EAAW3hB,MAAoB,CAChC2e,OAAQ,IACc,YAArBgD,EAAW7G,OAAuB,CACnCwY,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,KACjEyB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOK,cACtDwG,EAAW4unB,WAAX,uBACKY,GAAAA,cAA6B,CACjC79mB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQxB,OAAO65nB,gBAA/C,mBAAyErnoB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAnG,cAAwH7N,EAAM2V,KAAK3G,QAAQxB,OAAOS,aAAlJ,OAAqKyS,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQxB,OAAOI,SAAU5N,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOS,gBAExRkJ,EAAW4unB,UAAiC,YAArB5unB,EAAW7G,QAAlC,uBACKq2nB,GAAAA,cAA6B,CACjC79mB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOnC,OAGtE,IAAE,kBACDnO,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CAAC,EAAGyW,EAAWuvnB,YAAX,GACjBrunB,WAAY,OACZwwkB,wBAAyB,cACzBtslB,OAAQ,UACR,UAAW,CACTusB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQxB,OAAO65nB,gBAA/C,mBAAyErnoB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAnG,cAAwH7N,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAAlJ,OAAqK+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQxB,OAAOI,SAAU5N,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOG,iBALxQ,sBAOXg5nB,GAAAA,cAA6B,CACjC79mB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQxB,OAAO65nB,gBAA/C,mBAAyErnoB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAnG,cAAwH7N,EAAM2V,KAAK3G,QAAQxB,OAAOS,aAAlJ,OAAqKyS,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQxB,OAAOI,SAAU5N,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOS,iBARxQ,UAUjB,WAAY,CACVue,WAAYxsB,EAAM2V,MAAQ3V,GAAO+V,QAAQ,KAX1B,GAahBoB,EAAWuvnB,WAAkC,YAArBvvnB,EAAW7G,QAAnC,gCACcq2nB,GAAAA,cAA6B,CAC1C79mB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOnC,OAlBlE,IAoBC,oBACFnO,EADE,EACFA,MACAmX,EAFE,EAEFA,WAFE,OAGEzW,EAAAA,EAAAA,GAAS,CAAC,EAA0B,aAAvByW,EAAW0J,UAAX,GACjBiI,gBAAiB,cACjBxB,OAAQtnB,EAAM2V,KAAN,oBAA0B3V,EAAM2V,KAAK3G,QAAQi4nB,KAAKK,eAAlD,oBAAwG,UAAvBtnoB,EAAMgP,QAAQC,KAAmBjP,EAAMgP,QAAQ8B,KAAK,KAAO9Q,EAAMgP,QAAQ8B,KAAK,QAFtJ,sBAGX61nB,GAAAA,UAHW,UAGqB,CACpC79mB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOE,SAJvC,sBAMXi5nB,GAAAA,cAA6B,CACjC79mB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOQ,SAPvC,uBASV24nB,GAAAA,QAAuB,CAC5Bn8mB,WAAY,KAVG,uBAYVm8mB,GAAAA,aAA4B,CACjCn8mB,WAAY,KAbG,uBAeVm8mB,GAAAA,MAAqB,CAC1Bn8mB,WAAY,KAhBG,uBAkBVm8mB,GAAAA,WAA0B,CAC/Bn8mB,WAAY,KAnBG,uBAqBVm8mB,GAAAA,YAA2B,CAChCr8mB,YAAa,KAtBE,uBAwBVq8mB,GAAAA,iBAAgC,CACrCr8mB,YAAa,IAzBE,GA2BO,aAAvBnT,EAAW0J,SAA+C,YAArB1J,EAAW7G,QAAhD,GACDA,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,KACvDyY,OAAQ,aAAF,OAAetnB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAA1D,YAAiFlrkB,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM,OAFjJ,sBAGK83nB,GAAAA,UAHL,UAGqC,CACpC79mB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAA1D,cAA2E5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAArG,MAAuH+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM7O,EAAMgP,QAAQxB,OAAOG,iBAJ1M,sBAMKg5nB,GAAAA,cAA6B,CACjC79mB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAA1D,cAA2E5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOS,aAArG,MAAuHyS,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM7O,EAAMgP,QAAQxB,OAAOS,iBAP1M,uBASM04nB,GAAAA,YAA2B,CAChCr2nB,MAAOtQ,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,YAA1D,YAAiFlrkB,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAAM,IACpI,oBAAqB,CACnByB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,QAZ1D,GA9BC,IA8CE04nB,IAAY9wnB,EAAAA,GAAAA,IAAO,OAAQ,CAC/B11B,KAAM,UACN+1B,KAAM,QACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IAIExC,EAFE/C,EADF0kB,WAGA3hB,KAEF,MAAO,CAACwC,EAAOqH,MAAOrH,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWphB,KACjD,GAXeihB,EAYf,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACbsqB,SAAU,SACVC,aAAc,WACdzB,YAAa,GACbF,aAAc,GACd6B,WAAY,UACS,UAApBhU,EAAW3hB,MAAoB,CAChCg0B,YAAa,EACbF,aAAc,GAVb,IAYH,SAASk+mB,GAAsBC,GAC7B,MAA6B,cAAtBA,EAAcx9oB,KAA6C,WAAtBw9oB,EAAcx9oB,GAC3D,CAKD,IAgOA,GAhO0B6W,EAAAA,YAAiB,SAAcgY,EAASlgB,GAChE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,YAGI2mpB,EAiBNj1oB,EAjBFm0oB,OACA9moB,EAgBErN,EAhBFqN,UACW6noB,EAeTl1oB,EAfFi0oB,UAHJ,EAkBMj0oB,EAdF6d,MAAAA,OAJJ,MAIY,UAJZ,EAKe86kB,EAaT34lB,EAbFsmB,UACY6unB,EAYVn1oB,EAZFo0oB,WANJ,EAkBMp0oB,EAXF0a,SAAAA,OAPJ,SAQU06nB,EAUJp1oB,EAVF2b,KACA/O,EASE5M,EATF4M,MACA4lK,EAQExyK,EARFwyK,QACA8ge,EAOEtzoB,EAPFszoB,SACA1ge,EAME5yK,EANF4yK,UACAE,EAKE9yK,EALF8yK,QAbJ,EAkBM9yK,EAJF+C,KAAAA,OAdJ,MAcW,SAdX,IAkBM/C,EAHFouB,QAAAA,OAfJ,MAec,SAfd,EAgBIsnB,EAEE11C,EAFF01C,SAhBJ,EAkBM11C,EADFq1oB,sBAAAA,OAjBJ,SAmBE34nB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCg7nB,EAAUjnoB,EAAAA,OAAa,MACvB2qkB,GAAYvwjB,EAAAA,GAAAA,GAAW6snB,EAASnvoB,GAChCovoB,EAAwB,SAAAt/oB,GAE5BA,EAAMggE,kBACFq9kB,GACFA,EAASr9oB,EAEZ,EAyBKg+oB,KAA8B,IAAlBiB,IAA2B1ie,IAAiB0ie,EACxD5unB,EAAY2tnB,GAAaX,EAAWz8C,GAAa8B,GAAiB,MAClEj0kB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACA5L,SAAAA,EACA3X,KAAAA,EACA8a,MAAAA,EACAs7gB,UAAwB9qhB,EAAAA,eAAqB+moB,IAAYA,EAASp1oB,MAAM6d,OAAiBA,EACzFy1nB,WAAYA,EACZW,UAAAA,EACA7lnB,QAAAA,IAEIvH,EAtUkB,SAAAnC,GACxB,IACEmC,EAQEnC,EARFmC,QACAnM,EAOEgK,EAPFhK,SACA3X,EAME2hB,EANF3hB,KACA8a,EAKE6G,EALF7G,MACAs7gB,EAIEz0gB,EAJFy0gB,UACAm6G,EAGE5unB,EAHF4unB,SACAW,EAEEvvnB,EAFFuvnB,UACA7lnB,EACE1J,EADF0J,QAEItH,EAAQ,CACZhnB,KAAM,CAAC,OAAQsuB,EAAS1T,GAAY,WAA9B,eAAiDyJ,EAAAA,GAAAA,GAAWphB,IAA5D,gBAA6EohB,EAAAA,GAAAA,GAAWtG,IAAUo2nB,GAAa,YAAaA,GAAa,iBAAJ,QAAqB9vnB,EAAAA,GAAAA,GAAWtG,IAAUy1nB,GAAY,YAAaA,GAAY,iBAAJ,QAAqBnvnB,EAAAA,GAAAA,GAAWtG,IAAhP,UAA6PuQ,GAA7P,QAAuQjK,EAAAA,GAAAA,GAAWtG,KACxRjR,MAAO,CAAC,QAAD,gBAAkBuX,EAAAA,GAAAA,GAAWphB,KACpCoxoB,OAAQ,CAAC,SAAD,iBAAoBhwnB,EAAAA,GAAAA,GAAWphB,IAA/B,sBAAsDohB,EAAAA,GAAAA,GAAWtG,KACzElC,KAAM,CAAC,OAAD,eAAgBwI,EAAAA,GAAAA,GAAWphB,IAA3B,oBAAgDohB,EAAAA,GAAAA,GAAWg1gB,KACjEi7G,WAAY,CAAC,aAAD,qBAA4BjwnB,EAAAA,GAAAA,GAAWphB,IAAvC,0BAAkEohB,EAAAA,GAAAA,GAAWtG,IAA7E,qBAAoGsG,EAAAA,GAAAA,GAAWiK,GAA/G,iBAA+HjK,EAAAA,GAAAA,GAAWtG,MAExJ,OAAOkJ,EAAAA,GAAAA,GAAeD,EAAOitnB,GAAqBltnB,EACnD,CAmTiBG,CAAkBtC,GAC5B8wnB,EAAYlvnB,IAAcuwkB,IAAa5olB,EAAAA,EAAAA,GAAS,CACpDqY,UAAWqykB,GAAiB,MAC5BE,sBAAuBhykB,EAAQmW,cAC9Bs2mB,GAAY,CACbv8C,eAAe,IACZ,CAAC,EACFq9C,EAAa,KACbd,IACFc,EAAae,GAA+B9moB,EAAAA,eAAqB8moB,GAA+B9moB,EAAAA,aAAmB8moB,EAAgB,CACjI9noB,WAAW6Z,EAAAA,GAAAA,GAAKiunB,EAAen1oB,MAAMqN,UAAWwZ,EAAQutnB,YACxD5he,QAAS+ie,KACOlunB,EAAAA,GAAAA,KAAKounB,GAAY,CACjCpooB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQutnB,YACxB5he,QAAS+ie,KAGb,IAAIpB,EAAS,KACTc,GAA2B5moB,EAAAA,eAAqB4moB,KAClDd,EAAsB9loB,EAAAA,aAAmB4moB,EAAY,CACnD5noB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQstnB,OAAQc,EAAWj1oB,MAAMqN,cAGrD,IAAIsO,EAAO,KAWX,OAVIy5nB,GAAyB/moB,EAAAA,eAAqB+moB,KAChDz5nB,EAAoBtN,EAAAA,aAAmB+moB,EAAU,CAC/C/noB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQlL,KAAMy5nB,EAASp1oB,MAAMqN,eAQ7B4Z,EAAAA,GAAAA,MAAM+snB,IAAU/loB,EAAAA,EAAAA,GAAS,CAC3Cb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BqN,YAAUu5nB,IAAav5nB,SAAkB7d,EACzC21K,QAASA,EACTI,UA3EoB,SAAA38K,GAEhBA,EAAMy+D,gBAAkBz+D,EAAM4W,QAAUkooB,GAAsB9+oB,IAGhEA,EAAMo7D,iBAEJuhH,GACFA,EAAU38K,EAEb,EAkEC68K,QAjEkB,SAAA78K,GAEdA,EAAMy+D,gBAAkBz+D,EAAM4W,SAC5BymoB,GAAYyB,GAAsB9+oB,GACpCq9oB,EAASr9oB,GACc,WAAdA,EAAMuB,KAAoB89oB,EAAQ3moB,SAC3C2moB,EAAQ3moB,QAAQ++D,QAGhBolG,GACFA,EAAQ78K,EAEX,EAsDCkQ,IAAK6ykB,EACLtjiB,SAAU2/lB,GAAyB36nB,GAAY,EAAIg7B,EACnDhxB,WAAYA,GACX8wnB,EAAW94nB,EAAO,CACnBzc,SAAU,CAACk0oB,GAAUx4nB,GAAmB0L,EAAAA,GAAAA,KAAKytnB,GAAW,CACtDznoB,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQja,OACxB8X,WAAYA,EACZzkB,SAAU2M,IACRwnoB,KAEP,ICzYM,SAASsB,GAAyBrxnB,GACvC,OAAOC,EAAAA,GAAAA,GAAqB,eAAgBD,EAC7C,CACD,IACA,IADyBE,EAAAA,GAAAA,GAAuB,eAAgB,CAAC,OAAQ,cAAe,UAAW,WAAY,eAAgB,aAAc,QAAS,YAAa,YAAa,iBAAkB,YAAa,cAAe,WAAY,QAAS,iBAAkB,iBAAkB,kBAAmB,oBAAqB,kBAAmB,qBCD3U,SAASoxnB,GAAqBtxnB,GACnC,OAAOC,EAAAA,GAAAA,GAAqB,WAAYD,EACzC,CACD,IACA,IADqBpW,EAAAA,EAAAA,GAAS,CAAC,EAAG2noB,IAAkBrxnB,EAAAA,GAAAA,GAAuB,WAAY,CAAC,OAAQ,YAAa,WCHtG,SAASsxnB,GAA6BxxnB,GAC3C,OAAOC,EAAAA,GAAAA,GAAqB,mBAAoBD,EACjD,CACD,IACA,IAD6BpW,EAAAA,EAAAA,GAAS,CAAC,EAAG2noB,IAAkBrxnB,EAAAA,GAAAA,GAAuB,mBAAoB,CAAC,OAAQ,iBAAkB,WCH3H,SAASuxnB,GAA2BzxnB,GACzC,OAAOC,EAAAA,GAAAA,GAAqB,iBAAkBD,EAC/C,CACD,IACA,IAD2BpW,EAAAA,EAAAA,GAAS,CAAC,EAAG2noB,IAAkBrxnB,EAAAA,GAAAA,GAAuB,iBAAkB,CAAC,OAAQ,YAAa,WCEzH,IAAe1L,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,0GACD,SCJJ,IAAeG,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,mBACD,iBCPG,SAASq9nB,GAA4B1xnB,GAC1C,OAAOC,EAAAA,GAAAA,GAAqB,kBAAmBD,EAChD,CACD,ICHI2xnB,GAAYC,GDIhB,IAD4B1xnB,EAAAA,GAAAA,GAAuB,kBAAmB,CAAC,OAAQ,WAAY,YAAa,UAAW,eAAgB,MAAO,eAAgB,gBAAiB,eAAgB,eAAgB,YAAa,QAAS,eAAgB,eAAgB,iBAAkB,iBAAkB,qBAAsB,SAAU,sBAAuB,QAAS,UAAW,UAAW,YAAa,SAAU,aAAc,YCF1ZjK,GAAY,CAAC,eAAgB,gBAAiB,aAAc,eAAgB,YAAa,YAAa,YAAa,cAAe,gBAAiB,YAAa,YAAa,kBAAmB,eAAgB,mBAAoB,uBAAwB,WAAY,yBAA0B,kBAAmB,gBAAiB,gBAAiB,wBAAyB,iBAAkB,WAAY,YAAa,mBAAoB,oBAAqB,iBAAkB,uBAAwB,UAAW,oBAAqB,KAAM,qBAAsB,aAAc,YAAa,mBAAoB,eAAgB,UAAW,cAAe,WAAY,gBAAiB,WAAY,UAAW,oBAAqB,gBAAiB,SAAU,OAAQ,cAAe,WAAY,UAAW,iBAAkB,kBAAmB,YAAa,WAAY,cAAe,cAAe,eAAgB,aAAc,gBAAiB,OAAQ,YAAa,SAwDr7B47nB,IAAmBlynB,EAAAA,GAAAA,IAAO,MAAO,CACrC11B,KAAM,kBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAGA2nnB,EAKE3nnB,EALF2nnB,UACA8J,EAIEzxnB,EAJFyxnB,aACAC,EAGE1xnB,EAHF0xnB,aACAC,EAEE3xnB,EAFF2xnB,aACAtzoB,EACE2hB,EADF3hB,KAEF,MAAO,EAAC,wBACCuzoB,GAAAA,KAA4B/woB,EAAOpJ,MADrC,wBAGEm6oB,GAAAA,KAA4B/woB,EAAO,UAAD,QAAW4e,EAAAA,GAAAA,GAAWphB,OAH1D,wBAKEuzoB,GAAAA,WAAkC/woB,EAAOgxoB,YAL3C,wBAOED,GAAAA,OAA8B/woB,EAAOmK,QAPvC,wBASE4moB,GAAAA,OAA8BD,GAAgB9woB,EAAO8woB,cAC3D9woB,EAAOzF,KAAMusoB,GAAa9moB,EAAO8moB,UAAW+J,GAAgB7woB,EAAO6woB,aAAcD,GAAgB5woB,EAAO4woB,aAC5G,GAzBsBnynB,EA0BtB,0BACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,IAAQ,4BACNqooB,GAAAA,QADM,aAC0BA,GAAAA,gBAAuC,CAC3E79mB,WAAY,aAFF,UAKZ,0BALY,8BAMG69mB,GAAAA,gBAAuC,CAClD79mB,WAAY,aAPJ,GAUX/T,EAAW2nnB,WAAa,CACzBxmnB,MAAO,SAXK,6BAaLywnB,GAAAA,MAA4BrooB,EAAAA,EAAAA,GAAS,CAC1CimB,OAAQ,EACR2B,SAAU,oBACW,UAApBnR,EAAW3hB,MAAoB,CAChCmxB,OAAQ,EACR2B,SAAU,uBAlBA,uBAoBLygnB,GAAAA,YApBK,GAqBVz9mB,SAAU,SArBA,qBAsBLy9mB,GAAAA,aAtBK,eAsBkCA,GAAAA,aAtBlC,KAsBwE,CAChFz/mB,aAAc,MAvBN,qBAyBLy/mB,GAAAA,aAzBK,YAyB+BA,GAAAA,aAzB/B,KAyBqE,CAC7Ez/mB,aAAc,MA1BN,uBA4BHy/mB,GAAAA,OAA8B,CACnCzwnB,MAAO,EACPqQ,SAAU,KA9BF,4BAiCLsgnB,GAAAA,MAAsB,CAC3B1/mB,cAAe,EACf,oBAAqB,CACnB3C,QAAS,sBApCD,uBAuCLqinB,GAAAA,KAvCK,YAuCgBZ,GAAAA,YAvChB,wBAwCHY,GAAAA,OAAuB,CAC5BrinB,QAAS,oBAzCD,uBA4CLsinB,GAAAA,OA5CK,GA6CVtinB,QAAS,IA7CC,qBA8CLminB,GAAAA,aA9CK,eA8CkCA,GAAAA,aA9ClC,KA8CwE,CAChFz/mB,aAAc,MA/CN,qBAiDLy/mB,GAAAA,aAjDK,YAiD+BA,GAAAA,aAjD/B,KAiDqE,CAC7Ez/mB,aAAc,MAlDN,uBAoDHy/mB,GAAAA,OAA8B,CACnCninB,QAAS,yBArDD,uBAuDHminB,GAAAA,cAAqC,CAC1C18mB,MAAO,IAxDC,4BA2DL68mB,GAAAA,KA3DK,YA2DwBb,GAAAA,YA3DxB,SA8DVh/mB,WAAY,EACZE,cAAe,EACfC,YAAa,GAhEH,aAiEHu/mB,GAAAA,OAA8B,CACnCninB,QAAS,0BAlED,uBAqELuinB,GAAAA,OArEK,GAsEV9/mB,WAAY,GACZG,YAAa,IAvEH,qBAwELu/mB,GAAAA,aAxEK,eAwEkCA,GAAAA,aAxElC,KAwEwE,CAChFz/mB,aAAc,MAzEN,qBA2ELy/mB,GAAAA,aA3EK,YA2E+BA,GAAAA,aA3E/B,KA2EqE,CAC7Ez/mB,aAAc,MA5EN,uBA8EH6/mB,GAAAA,OAA6B,CAClCvinB,QAAS,aA/ED,uBAiFHminB,GAAAA,cAAqC,CAC1C18mB,MAAO,IAlFC,4BAqFL88mB,GAAAA,KArFK,YAqFsBd,GAAAA,YArFtB,SAsFV9+mB,cAAe,GAtFL,aAuFH4/mB,GAAAA,OAA6B,CAClCvinB,QAAS,gBAxFD,uBA2FLyhnB,GAAAA,aAAiC,CACtCh/mB,WAAY,KA5FF,uBA8FL8/mB,GAAAA,KA9FK,YA8FsBd,GAAAA,cA9FtB,SA+FVh/mB,WAAY,EACZE,cAAe,GAhGL,aAiGHw/mB,GAAAA,OAA8B,CACnC1/mB,WAAY,GACZE,cAAe,OAnGP,uBAsGL4/mB,GAAAA,KAtGK,YAsGsBd,GAAAA,YAtGtB,YAsGsDA,GAAAA,YAtGtD,wBAuGHU,GAAAA,OAA8B,CACnC1/mB,WAAY,EACZE,cAAe,MAzGP,uBA4GLw/mB,GAAAA,QAA8BrooB,EAAAA,EAAAA,GAAS,CAC5ChH,SAAU,EACVuxB,aAAc,WACdpwB,QAAS,GACRsc,EAAW2xnB,cAAgB,CAC5BjuoB,QAAS,KAjHC,GAFX,IAsHGuuoB,IAA2B3ynB,EAAAA,GAAAA,IAAO,MAAO,CAC7C11B,KAAM,kBACN+1B,KAAM,eACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOqxoB,YAA1B,GAHY5ynB,CAI9B,CAEDtkB,SAAU,WACVk6B,MAAO,EACPD,IAAK,qBAGDk9mB,IAA6B7ynB,EAAAA,GAAAA,IAAO8ynB,GAAY,CACpDxopB,KAAM,kBACN+1B,KAAM,iBACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOwxoB,cAA1B,GAHc/ynB,CAIhC,CACD6T,aAAc,EACd1D,QAAS,EACTsE,WAAY,WAERu+mB,IAA6BhznB,EAAAA,GAAAA,IAAO8ynB,GAAY,CACpDxopB,KAAM,kBACN+1B,KAAM,iBACNI,kBAAmB,WAEhBlf,GAFgB,IACjBmf,EADiB,EACjBA,WADiB,OAELzW,EAAAA,EAAAA,GAAS,CAAC,EAAG1I,EAAO0xoB,eAAgBvynB,EAAW8rnB,WAAajroB,EAAO2xoB,mBAF9D,GAHclznB,EAMhC,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACbkmB,QAAS,EACT0D,aAAc,GACbnT,EAAW8rnB,WAAa,CACzBt+mB,UAAW,kBANV,IAQGilnB,IAAqBnznB,EAAAA,GAAAA,IAAO8okB,GAAQ,CACxCx+lB,KAAM,kBACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,EAAC,wBACC4xnB,GAAAA,QAA+B/woB,EAAOs8B,QAC5Ct8B,EAAO82kB,OAAQ33jB,EAAWykkB,eAAiB5jlB,EAAO6xoB,oBACtD,GAVwBpznB,EAWxB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbxF,QAAS8E,EAAM2V,MAAQ3V,GAAO9E,OAAOga,OACpCiC,EAAWykkB,eAAiB,CAC7BzplB,SAAU,YANT,IAQG23oB,IAAoBrznB,EAAAA,GAAAA,IAAO2vjB,GAAO,CACtCrllB,KAAM,kBACN+1B,KAAM,QACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOsV,KAA1B,GAHKmJ,EAIvB,gBACDzW,EADC,EACDA,MADC,OAEGU,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAMmR,WAAWwB,MAAO,CACzCqY,SAAU,QAHT,IAKG++mB,IAAsBtznB,EAAAA,GAAAA,IAAO,MAAO,CACxC11B,KAAM,kBACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAO69V,OAA1B,GAHOp/U,EAIzB,gBACDzW,EADC,EACDA,MADC,MAEI,CACLsQ,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK4e,UAC1C0Z,QAAS,YAJR,IAMGojnB,IAAwBvznB,EAAAA,GAAAA,IAAO,MAAO,CAC1C11B,KAAM,kBACN+1B,KAAM,YACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOiyoB,SAA1B,GAHSxznB,EAI3B,gBACDzW,EADC,EACDA,MADC,MAEI,CACLsQ,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK4e,UAC1C0Z,QAAS,YAJR,IAMGsjnB,IAAsBzznB,EAAAA,GAAAA,IAAO,MAAO,CACxC11B,KAAM,kBACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOmyoB,OAA1B,GAHO1znB,EAIzB,oBACDzW,EADC,EACDA,MADC,gBAGDytlB,UAAW,OACX9mkB,OAAQ,EACRC,QAAS,QACTgC,UAAW,OACXoC,SAAU,OACV74B,SAAU,YART,aASM42oB,GAAAA,SATN,GAUCx8nB,UAAW,GACXgM,QAAS,OACTyS,SAAU,SACVO,eAAgB,aAChBC,WAAY,SACZjvB,OAAQ,UACR8sB,WAAY,EACZoD,UAAW,aACXq8jB,QAAS,IACTD,wBAAyB,cACzBt/jB,cAAe,EACfC,YAAa,GACbF,aAAc,KAtBf,UAuBEtpB,EAAMoM,YAAYI,GAAG,MAAQ,CAC5BD,UAAW,UAxBd,sBA0BOw8nB,GAAAA,SAAgC,CACpCjgnB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOE,MAEtD,uBAAwB,CACtBob,gBAAiB,kBA9BtB,UAiCC,0BAA2B,CACzBjuB,SAAUmF,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOO,gBAC9Cy0C,cAAe,UAnClB,sBAqCOumlB,GAAAA,cAAqC,CACzCjgnB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOQ,SAtCzD,UAwCC,2BAxCD,GAyCG8a,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,cAAiE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAA3F,MAAgH6S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,mBAzC3L,sBA0CSk7nB,GAAAA,SAAgC,CACpCjgnB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,mBAAsE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAhG,cAAqH7N,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAA/I,OAAkK+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOG,cAEjR,uBAAwB,CACtBmb,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOI,aA9C7D,sBAiDSm7nB,GAAAA,cAAqC,CACzCjgnB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ/B,QAAQ2+kB,YAAhD,mBAAsE5rlB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAhG,cAAqH7N,EAAM2V,KAAK3G,QAAQxB,OAAOS,aAA/I,OAAkKyS,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ/B,QAAQ4B,KAAM7O,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOS,gBAlDtR,WAuDGm8nB,IAAyB3znB,EAAAA,GAAAA,IAAO8vnB,GAAe,CACnDxlpB,KAAM,kBACN+1B,KAAM,aACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOqyoB,UAA1B,GAHU5znB,EAI5B,gBACDzW,EADC,EACDA,MADC,MAEI,CACL8oB,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ3B,WAAWC,MAC1D8e,KAAM,EAJL,IAMGk+mB,IAAsB7znB,EAAAA,GAAAA,IAAO,KAAM,CACvC11B,KAAM,kBACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOuyoB,OAA1B,GAHO9znB,EAAA,SAK1BmQ,QAAS,GALiB,aAMnBminB,GAAAA,QAA+B,CACpCv/mB,YAAa,MAIXghnB,GAA4B1poB,EAAAA,YAAiB,SAAsBgY,EAASlgB,GAChF,IAAI6xoB,EAAuBC,EAAkBhqD,EAAmBiqD,EAuG5DC,EAtGEn4oB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,oBAQJ8ppB,GAiDEp4oB,EArDFkuoB,aAqDEluoB,EApDFmuoB,cAoDEnuoB,EAnDFouoB,WAmDEpuoB,EAlDFquoB,aAkDEruoB,EAjDFo4oB,WACA/qoB,EAgDErN,EAhDFqN,UANJ,EAsDMrN,EA/CFq4oB,UAAAA,OAPJ,MAOgBrC,KAAeA,IAA0B3unB,EAAAA,GAAAA,KAAKixnB,GAAW,CACnE15nB,SAAU,WARhB,IAsDM5e,EA5CFsuoB,YAVJ,eAUmBtuoB,EAAMuuoB,SA4CnBvuoB,EA3CFwuoB,cA2CExuoB,EA1CFu4oB,WAAAA,OAZJ,MAYgB,QAZhB,IAsDMv4oB,EAzCFw4oB,UAAAA,OAbJ,MAagB,QAbhB,IAsDMx4oB,EAxCF0slB,gBAAAA,OAdJ,MAcsB,CAAC,EAdvB,IAsDM1slB,EAvCFszB,aAfJ,eAemBtzB,EAAMw1K,SAuCnBx1K,EAtCFyuoB,kBAAAA,OAhBJ,YAsDMzuoB,EArCF0uoB,qBAqCE1uoB,EApCF0a,UAAAA,OAlBJ,YAsDM1a,EAnCF67lB,uBAmCE77lB,EAlCFq7lB,gBAkCEr7lB,EAjCFmplB,eAAAA,OArBJ,YAsDMnplB,EAhCF4uoB,sBAgCE5uoB,EA/BFy4oB,gBAAAA,OAvBJ,MAuBqB,OAvBrB,IAsDMz4oB,EA9BFuuoB,SAAAA,OAxBJ,WAsDMvuoB,EA7BFqsoB,UAAAA,OAzBJ,WAsDMrsoB,EA5BF04oB,iBAAAA,OA1BJ,MA0BuB,SAAA9xnB,GAAI,iBAAQA,EAAR,EA1B3B,IAsDM5mB,EA3BFwtoB,eAAAA,OA3BJ,MA2BqB,SAAA3rmB,GACf,IAAIktmB,EACJ,OAAyC,OAAjCA,EAAgBltmB,EAAOj1B,OAAiBmioB,EAAgBltmB,CACjE,EA9BL,EA+BImoD,EAuBEhqF,EAvBFgqF,QA/BJ,EAsDMhqF,EAtBFgvoB,kBAhCJ,eAgCyBhvoB,EAAMuuoB,SAsBzBvuoB,EArBFivoB,mBAqBEjvoB,EApBF24oB,WAAAA,OAlCJ,OAkCiB,EAlCjB,IAsDM34oB,EAnBF44oB,iBAAAA,OAnCJ,MAmCuB,KAnCvB,EAoCIC,EAkBE74oB,EAlBF64oB,aApCJ,EAsDM74oB,EAjBFojW,QAAAA,OArCJ,WAsDMpjW,EAhBF84oB,YAAAA,OAtCJ,MAsCkB,gBAtClB,IAsDM94oB,EAfFw1K,SAAAA,OAvCJ,WAsDMx1K,EAdF+4oB,cAAAA,OAxCJ,MAwCoB,aAxCpB,MAsDM/4oB,EAbFsvoB,YAaEtvoB,EAZFg5oB,UAAAA,QA1CJ,OA0Ce,OA1Cf,MAsDMh5oB,EAXFi5oB,eAAAA,QA3CJ,OA2CqBtlE,GA3CrB,MAsDM3zkB,EAVFwvlB,gBAAAA,QA5CJ,OA4CsB1C,GA5CtB,MAsDM9slB,EATFk5oB,UAAAA,QA7CJ,OA6CgBjD,KAAuBA,IAAkC5unB,EAAAA,GAAAA,KAAK8xnB,GAAmB,CAAC,IA7ClG,MAsDMn5oB,EARFiqB,SAAAA,QA9CJ,WA+CiBmvnB,GAOXp5oB,EAPFq5oB,YACAC,GAMEt5oB,EANFs5oB,YACcC,GAKZv5oB,EALFw5oB,aACAC,GAIEz5oB,EAJFy5oB,WAlDJ,GAsDMz5oB,EAHFojN,cAnDJ,iBAmDqBpjN,EAAMuuoB,SAGrBvuoB,EAFF+C,MAAAA,QApDJ,OAoDW,SApDX,MAsDM/C,EADFs9B,UAAAA,QArDJ,OAqDgB,CAAC,EArDjB,GAuDE5gB,IAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAG/C,GAoBIyznB,IAAgB9/nB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACtC4nB,cAAe,kBApBfirnB,GADF,GACEA,aACAG,GAFF,GAEEA,cACAF,GAHF,GAGEA,mBACAM,GAJF,GAIEA,uBACAD,GALF,GAKEA,cACAE,GANF,GAMEA,YACAE,GAPF,GAOEA,gBACAC,GARF,GAQEA,eACApgpB,GATF,GASEA,MACAu/oB,GAVF,GAUEA,MACA71mB,GAXF,GAWEA,SACA7pB,GAZF,GAYEA,GACAu9nB,GAbF,GAaEA,UACAzzmB,GAdF,GAcEA,QACA8ymB,GAfF,GAeEA,WACA/kD,GAhBF,GAgBEA,SACA8kD,GAjBF,GAiBEA,YACAp7Y,GAlBF,GAkBEA,WACAo+Y,GAnBF,GAmBEA,eAIIuD,IAAgB1H,IAAqB/znB,GAAYi4nB,KAAU1onB,GAC3DmsnB,KAAiB7H,IAA+B,IAAnBkK,KAA+C,IAAnBA,EAGzD/znB,IAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCmplB,cAAAA,EACArsjB,SAAAA,GACAC,QAAAA,GACAsvmB,UAAAA,EACA8J,aAAAA,GACAC,aAAAA,GACAC,cAA8B,IAAhBxG,GACdW,UAAAA,GACAztoB,KAAAA,KAEI8jB,GAzbkB,SAAAnC,GACxB,IACEmC,EAUEnC,EAVFmC,QACAsikB,EASEzkkB,EATFykkB,cACArsjB,EAQEpY,EARFoY,SACAC,EAOErY,EAPFqY,QACAsvmB,EAME3nnB,EANF2nnB,UACA8J,EAKEzxnB,EALFyxnB,aACAC,EAIE1xnB,EAJF0xnB,aACAC,EAGE3xnB,EAHF2xnB,aACA7F,EAEE9rnB,EAFF8rnB,UACAztoB,EACE2hB,EADF3hB,KAEI+jB,EAAQ,CACZhnB,KAAM,CAAC,OAAQg9B,GAAY,WAAYC,GAAW,UAAWsvmB,GAAa,YAAa8J,GAAgB,eAAgBC,GAAgB,gBACvIG,UAAW,CAAC,aACZ7moB,MAAO,CAAC,QAAS2moB,GAAgB,gBACjCl6oB,IAAK,CAAC,MAAD,kBAAkBgoB,EAAAA,GAAAA,GAAWphB,KAClC6zoB,aAAc,CAAC,gBACfG,eAAgB,CAAC,kBACjBE,eAAgB,CAAC,iBAAkBzG,GAAa,sBAChDn0D,OAAQ,CAAC,SAAU8M,GAAiB,uBACpCtukB,MAAO,CAAC,SACR68nB,QAAS,CAAC,WACVt0S,QAAS,CAAC,WACVo0S,UAAW,CAAC,aACZ31mB,OAAQ,CAAC,UACT+1mB,WAAY,CAAC,cACbE,QAAS,CAAC,YAEZ,OAAO/wnB,EAAAA,GAAAA,GAAeD,EAAOivnB,GAA6BlvnB,EAC3D,CA0ZiBG,CAAkBtC,IAElC,GAAI8wJ,GAAYpiL,GAAMyC,OAAS,EAAG,CAChC,IAAM6jpB,GAAwB,SAAAlgpB,GAAM,OAAIyU,EAAAA,EAAAA,GAAS,CAC/CZ,UAAWwZ,GAAQ1qB,IACnBue,SAAAA,GACC24nB,GAAY75oB,GAHqB,EAKlC2+oB,EADEsB,GACeA,GAAWrmpB,GAAOsmpB,GAAuBh1nB,IAEzCtxB,GAAM6F,KAAI,SAAC4oC,EAAQxrC,GAAT,OAAgCgxB,EAAAA,GAAAA,KAAKmtnB,IAAMvmoB,EAAAA,EAAAA,GAAS,CAC7ErB,MAAO4goB,EAAe3rmB,GACtB9+B,KAAMA,IACL22oB,GAAsB,CACvBrjpB,MAAAA,IACE+hpB,GALuB,GAO9B,CACD,GAAIO,GAAa,GAAK5+oB,MAAMC,QAAQm+oB,GAAiB,CACnD,IAAMvxnB,GAAOuxnB,EAAetipB,OAAS8ipB,GAChC57mB,IAAWnW,GAAO,IACrBuxnB,EAAiBA,EAAe5hpB,OAAO,EAAGoipB,IAC3BrjpB,MAAmB+xB,EAAAA,GAAAA,KAAK,OAAQ,CAC7Cha,UAAWwZ,GAAQ1qB,IACnB8D,SAAUy4oB,EAAiB9xnB,KAC1BuxnB,EAAetipB,QAErB,CACD,IAYMwjpB,GAAcD,IAZO,SAAA5/oB,GAAM,OAAiBytB,EAAAA,GAAAA,MAAM,KAAM,CAC5DhnB,SAAU,EAAconB,EAAAA,GAAAA,KAAKswnB,GAAwB,CACnDtqoB,UAAWwZ,GAAQ+wnB,WACnBlznB,WAAYA,GACZ4B,UAAW,MACXrmB,SAAUzG,EAAOixF,SACFpjE,EAAAA,GAAAA,KAAKwwnB,GAAqB,CACzCxqoB,UAAWwZ,GAAQixnB,QACnBpznB,WAAYA,GACZzkB,SAAUzG,EAAOyG,aAElBzG,EAAOhC,IAXuB,EAgB3BgipB,GAAeD,IAHO,SAACI,EAAQ93mB,GAAT,OAAiCxa,EAAAA,GAAAA,KAAK,MAAMpZ,EAAAA,EAAAA,GAAS,CAAC,EAAG0roB,EAAQ,CAC3F15oB,SAAUutoB,EAAe3rmB,KADC,EAItB+3mB,GAAmB,SAAC/3mB,EAAQxrC,GAChC,IAAMwjpB,EAAcrG,GAAe,CACjC3xmB,OAAAA,EACAxrC,MAAAA,IAEF,OAAOmjpB,IAAavroB,EAAAA,EAAAA,GAAS,CAAC,EAAG4roB,EAAa,CAC5CxsoB,UAAWwZ,GAAQgb,SACjBA,EAAQ,CACV1mB,SAAU0+nB,EAAY,iBACtBxjpB,MAAAA,EACAm+P,WAAAA,IAEH,EACKslZ,GAAgF,OAArD9B,EAAwB16mB,GAAUy5mB,gBAA0BiB,EAAwBtrD,EAAgBqqD,eAC/HgD,GAAyD,OAAvC9B,EAAmB36mB,GAAUziB,OAAiBo9nB,EAAmBvrD,EAAgB7xkB,MACnGm/nB,GAA4D,OAAzC/rD,EAAoB3wjB,GAAU++iB,QAAkB4R,EAAoBvB,EAAgBrQ,OACvG49D,GAAgF,OAArD/B,EAAwB56mB,GAAU25mB,gBAA0BiB,EAAwBxrD,EAAgBuqD,eACrI,OAAoBhwnB,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,EAAconB,EAAAA,GAAAA,KAAK6unB,IAAkBjooB,EAAAA,EAAAA,GAAS,CACtD9H,IAAKA,EACLkH,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQ/mB,KAAMuN,GAC9BqX,WAAYA,IACXmunB,GAAan2nB,IAAQ,CACtBzc,SAAUq5oB,GAAY,CACpBrmoB,GAAAA,GACAyH,SAAAA,EACA2xnB,WAAW,EACXtpoB,KAAe,UAATA,GAAmB,aAAUlG,EACnCq9oB,gBAAiBpH,KACjBqH,YAAYlsoB,EAAAA,EAAAA,GAAS,CACnB9H,IAAKypoB,GACLvioB,UAAWwZ,GAAQ0vnB,UACnB4B,eAAAA,IACEhC,IAAgBC,KAAiB,CACnCQ,cAA2B3vnB,EAAAA,GAAAA,MAAM0vnB,GAA0B,CACzDtpoB,UAAWwZ,GAAQ+vnB,aACnBlynB,WAAYA,GACZzkB,SAAU,CAACk2oB,IAA4B9unB,EAAAA,GAAAA,KAAKwvnB,IAA4B5ooB,EAAAA,EAAAA,GAAS,CAAC,EAAGkloB,KAAiB,CACpG,aAAcoF,EACd3zhB,MAAO2zhB,EACP7znB,WAAYA,IACXo1nB,GAAyB,CAC1BzsoB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQkwnB,eAA2C,MAA3B+C,QAAkC,EAASA,GAAwBzsoB,WAC3GpN,SAAUo4oB,KACN,KAAMjC,IAA4B/unB,EAAAA,GAAAA,KAAK2vnB,IAA4B/ooB,EAAAA,EAAAA,GAAS,CAAC,EAAGmloB,KAA0B,CAC9G14nB,SAAUA,EACV,aAAc81nB,GAAYgI,EAAYQ,GACtCp0hB,MAAO4rhB,GAAYgI,EAAYQ,GAC/Bt0nB,WAAYA,IACXu1nB,GAAyB,CAC1B5soB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQownB,eAA2C,MAA3BgD,QAAkC,EAASA,GAAwB5soB,WAC3GpN,SAAUi5oB,MACN,UAGVkB,YAAYnsoB,EAAAA,EAAAA,GAAS,CACnBZ,UAAWwZ,GAAQnX,MACnBgL,SAAAA,EACAuP,SAAAA,IACC+onB,WAEFloD,IAAwBzjkB,EAAAA,GAAAA,KAAK8vnB,IAAoBlpoB,EAAAA,EAAAA,GAAS,CAC7Db,GAAIoilB,GACJrG,cAAeA,EACfn9jB,MAAO,CACLnG,MAAOilkB,GAAWA,GAAS94hB,YAAc,MAE3CttC,WAAYA,GACZ0C,KAAM,eACN0jkB,SAAUA,GACVp3kB,KAAM88nB,IACLwJ,GAAiB,CAClB3soB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQw1jB,OAA2B,MAAnB29D,QAA0B,EAASA,GAAgB3soB,WACnFpN,UAAuBgnB,EAAAA,GAAAA,MAAMownB,IAAmBppoB,EAAAA,EAAAA,GAAS,CACvDyW,WAAYA,GACZtX,GAAI6roB,IACHc,GAAgB,CACjB1soB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQhM,MAAyB,MAAlBk/nB,QAAyB,EAASA,GAAe1soB,WAChFpN,SAAU,CAACmjW,GAAqC,IAA1BwvS,GAAe/8oB,QAA4BwxB,EAAAA,GAAAA,KAAKiwnB,GAAqB,CACzFjqoB,UAAWwZ,GAAQu8U,QACnB1+U,WAAYA,GACZzkB,SAAU64oB,IACP,KAAgC,IAA1BlG,GAAe/8oB,QAAiB04oB,GAAanrS,EASnD,MAT0E/7U,EAAAA,GAAAA,KAAKkwnB,GAAuB,CACzGlqoB,UAAWwZ,GAAQ2wnB,UACnB9ynB,WAAYA,GACZ0C,KAAM,eACN2rJ,YAAa,SAAA98K,GAEXA,EAAMo7D,gBACP,EACDpxD,SAAU84oB,IACDnG,GAAe/8oB,OAAS,GAAiBwxB,EAAAA,GAAAA,KAAKownB,IAAqBxpoB,EAAAA,EAAAA,GAAS,CACrFb,GAAIwroB,EACJvroB,UAAWwZ,GAAQ6wnB,QACnBhznB,WAAYA,IACX6unB,KAAmBsF,EAAc,CAClC54oB,SAAU2yoB,GAAe35oB,KAAI,SAAC4oC,EAAQxrC,GACpC,OAAI2zF,EACKqvjB,GAAY,CACjB7hpB,IAAKqqC,EAAOrqC,IACZizF,MAAO5oD,EAAO4oD,MACdxqF,SAAU4hC,EAAOvvC,QAAQ2G,KAAI,SAACohpB,EAASC,GAAV,OAAqBV,GAAiBS,EAASx4mB,EAAOxrC,MAAQikpB,EAA9D,MAG1BV,GAAiB/3mB,EAAQxrC,EACjC,OACG,YAEJ,OAET,IA2ZD,2BCxgCMikB,GAAY,CAAC,YAAa,4BCG1Bi2S,GDIS,WAAiC,IAAdj+T,EAAc,uDAAJ,CAAC,EAEzC+8B,EAIE/8B,EAJF+8B,QACAxL,EAGEvxB,EAHFuxB,aAFF,EAKIvxB,EAFFiopB,iBAAAA,OAHF,MAGqB,cAHrB,EAIEC,EACElopB,EADFkopB,kBAEIC,GAAUz2nB,EAAAA,GAAAA,IAAO,MAAO,CAC5BnY,kBAAmB,SAAA9Z,GAAI,MAAa,UAATA,GAA6B,OAATA,GAA0B,OAATA,CAAzC,GADTiyB,CAEbL,GAAAA,GACG4sS,EAAmBliT,EAAAA,YAAiB,SAAagY,EAASlgB,GAC9D,IAAMoH,GAAQ4tB,EAAAA,GAAAA,GAAStX,GACjB62nB,EAAgBxmE,GAAa7tjB,GAE/BhZ,EAEEqtoB,EAFFrtoB,UAFE,EAIAqtoB,EADFp0nB,UAAAA,OAHE,MAGU,MAHV,EAKJ5J,GAAQC,EAAAA,EAAAA,GAA8B+9nB,EAAepgoB,IACvD,OAAoB+M,EAAAA,GAAAA,KAAKoznB,GAASxsoB,EAAAA,EAAAA,GAAS,CACzCb,GAAIkZ,EACJngB,IAAKA,EACLkH,WAAW6Z,EAAAA,GAAAA,GAAK7Z,EAAWmtoB,EAAoBA,EAAkBD,GAAoBA,GACrFhtoB,MAAO8hB,GAAU9hB,EAAM8hB,IAAoB9hB,GAC1CmP,GACJ,IACD,OAAO6zS,CACR,CC9BWoqV,CAAU,CACpB92nB,cAFmBjB,UAAAA,KAGnB23nB,iBAAkB,cAClBC,kBAAmBtynB,GAAAA,EAAAA,WAqBrB,MC3BA,IADe3b,UAAAA,kDCCT+N,GAAY,CAAC,YAAa,YAAa,UAAW,UAAW,WAAY,YAAa,cAYtFuJ,IAAejB,EAAAA,GAAAA,KAEfg4nB,GAA+BC,GAAa,MAAO,CACvDvspB,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,IAErB,SAASg7oB,GAAqB96oB,GAC5B,OAAO+6oB,EAAAA,GAAAA,GAAoB,CACzB/6oB,MAAAA,EACA1R,KAAM,WACNu1B,aAAAA,IAEH,CASD,SAASm3nB,GAAa/6oB,EAAUymD,GAC9B,IAAMu0lB,EAAgB5soB,EAAAA,SAAAA,QAAuBpO,GAAUyvB,OAAOykG,SAC9D,OAAO8mhB,EAAc5hpB,QAAO,SAACK,EAAQ6nC,EAAOlrC,GAO1C,OANAqD,EAAOpE,KAAKisC,GACRlrC,EAAQ4kpB,EAAcplpB,OAAS,GACjC6D,EAAOpE,KAAmB+Y,EAAAA,aAAmBq4C,EAAW,CACtDlvD,IAAK,aAAF,OAAenB,MAGfqD,CACR,GAAE,GACJ,CACD,IAQasyB,GAAQ,SAAC,GAGhB,IAFJtH,EAEI,EAFJA,WACAnX,EACI,EADJA,MAEIhI,GAAS0I,EAAAA,EAAAA,GAAS,CACpB6X,QAAS,OACT8S,cAAe,WACdxN,EAAAA,GAAAA,IAAkB,CACnB7d,MAAAA,IACC8e,EAAAA,GAAAA,IAAwB,CACzBxB,OAAQnG,EAAW5I,UACnBnC,YAAapM,EAAMoM,YAAYkR,UAC7B,SAAAQ,GAAS,MAAK,CAChBuN,cAAevN,EADJ,KAGb,GAAI3G,EAAW0N,QAAS,CACtB,IAAMuB,GAAcxB,EAAAA,GAAAA,IAAmB5kB,GACjCgf,EAAOr5B,OAAOgB,KAAKqZ,EAAMoM,YAAYkR,QAAQxxB,QAAO,SAACC,EAAKkyB,GAI9D,OAHkC,kBAAvB9G,EAAW0N,SAA0D,MAAlC1N,EAAW0N,QAAQ5G,IAAuD,kBAAzB9G,EAAW5I,WAA8D,MAApC4I,EAAW5I,UAAU0P,MACvJlyB,EAAIkyB,IAAc,GAEblyB,CACR,GAAE,CAAC,GACE4hpB,GAAkB7unB,EAAAA,GAAAA,IAAwB,CAC9CxB,OAAQnG,EAAW5I,UACnByQ,KAAAA,IAEI4unB,GAAgB9unB,EAAAA,GAAAA,IAAwB,CAC5CxB,OAAQnG,EAAW0N,QACnB7F,KAAAA,IAE6B,kBAApB2unB,GACThopB,OAAOgB,KAAKgnpB,GAAiBtlpB,SAAQ,SAAC41B,EAAYn1B,EAAOsjB,GAEvD,IADuBuhoB,EAAgB1vnB,GAClB,CACnB,IAAM4vnB,EAAyB/kpB,EAAQ,EAAI6kpB,EAAgBvhoB,EAAYtjB,EAAQ,IAAM,SACrF6kpB,EAAgB1vnB,GAAc4vnB,CAC/B,CACF,IAeH71oB,GAAS6Y,EAAAA,GAAAA,GAAU7Y,GAAQ6lB,EAAAA,GAAAA,IAAkB,CAC3C7d,MAAAA,GACC4toB,GAfwB,SAAC9vnB,EAAWG,GACrC,OAAI9G,EAAW22nB,WACN,CACL7lnB,KAAK9B,EAAAA,GAAAA,IAASC,EAAatI,IAGxB,CACL,iCAAiC,SAC/B6I,OAAQ,GADV,iBAvDqBpY,EAyDY0P,EAAa0vnB,EAAgB1vnB,GAAc9G,EAAW5I,UAxDtF,CACL8oP,IAAK,OACL,cAAe,QACfnlQ,OAAQ,MACR,iBAAkB,UAClBqc,MAmD0G4X,EAAAA,GAAAA,IAASC,EAAatI,KAzDvG,IAAAvP,CA4DxB,IAIF,CAED,OADAvW,GAAS2mB,EAAAA,GAAAA,IAAwB3e,EAAMoM,YAAapU,EAErD,EC/GD,IAAMivc,GDgHS,WAAmC,IAAdlid,EAAc,uDAAJ,CAAC,EAC7C,EAKIA,EAHFgppB,sBAAAA,OAFF,MAE0BV,GAF1B,IAKItopB,EAFF2xB,cAAAA,OAHF,MAGkB62nB,GAHlB,IAKIxopB,EADFs1B,cAAAA,OAJF,MAIkB,WAJlB,EAMMZ,EAAoB,WAIxB,OAAOD,EAAAA,GAAAA,GAHO,CACZjnB,KAAM,CAAC,UAEoB,SAAAukB,GAAI,OAAIC,EAAAA,GAAAA,GAAqBsD,EAAevD,EAAxC,GAA+C,CAAC,EAClF,EACKk3nB,EAAYD,EAAsBtvnB,IAClCwob,EAAqBnmc,EAAAA,YAAiB,SAAcgY,EAASlgB,GACjE,IACMnG,EAAQk0kB,GADKjwjB,EAAcoC,IAEjC,EAQMrmB,EAPFsmB,UAAAA,OADJ,MACgB,MADhB,IAQMtmB,EANF8b,UAAAA,OAFJ,MAEgB,SAFhB,IAQM9b,EALFoyB,QAAAA,OAHJ,MAGc,EAHd,EAIIzX,EAIE3a,EAJF2a,QACA1a,EAGED,EAHFC,SACAoN,EAEErN,EAFFqN,UANJ,EAQMrN,EADFq7oB,WAAAA,OAPJ,SASE3+nB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,EAAa,CACjB5I,UAAAA,EACAsW,QAAAA,EACAipnB,WAAAA,GAEIx0nB,EAAUG,IAChB,OAAoBK,EAAAA,GAAAA,KAAKk0nB,GAAWttoB,EAAAA,EAAAA,GAAS,CAC3Cb,GAAIkZ,EACJ5B,WAAYA,EACZve,IAAKA,EACLkH,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,IAC7BqP,EAAO,CACRzc,SAAU0a,EAAUqgoB,GAAa/6oB,EAAU0a,GAAW1a,IAEzD,IAQD,OAAOu0c,CACR,CClKagnM,CAAY,CACxBF,uBAAuBt3nB,EAAAA,GAAAA,IAAO,MAAO,CACnC11B,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,IAErBmkB,cAAe,SAAAoC,GAAO,OAAIpC,EAAAA,GAAAA,GAAc,CACtCjkB,MAAOqmB,EACP/3B,KAAM,YAFc,IAuCxB,MC/CMgsB,GAAY,CAAC,WAAY,WAAY,YAAa,YAAa,WAAY,QAAS,cAAe,OAAQ,YAAa,WA2BxHmhoB,IAAcz3nB,EAAAA,GAAAA,IAAO,MAAO,CAChC11B,KAAM,aACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAM4kB,EAAWg3nB,UAAYn2oB,EAAOm2oB,SAAUn2oB,EAAOmf,EAAW0J,SAAU1J,EAAWnK,OAAShV,EAAOgV,MAAkC,aAA3BmK,EAAWmoD,aAA8BtnE,EAAOqlI,SAAUlmH,EAAWi3nB,UAAYp2oB,EAAOo2oB,SAAUj3nB,EAAWzkB,UAAYsF,EAAOq2oB,aAAcl3nB,EAAWzkB,UAAuC,aAA3BykB,EAAWmoD,aAA8BtnE,EAAOs2oB,qBAA+C,UAAzBn3nB,EAAWwV,WAAoD,aAA3BxV,EAAWmoD,aAA8BtnE,EAAOu2oB,eAAyC,SAAzBp3nB,EAAWwV,WAAmD,aAA3BxV,EAAWmoD,aAA8BtnE,EAAOw2oB,cAC9hB,GARiB/3nB,EASjB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbimB,OAAQ,EAER/sB,WAAY,EACZw8J,YAAa,EACb+yb,YAAa,QACbxhkB,aAAc3nB,EAAM2V,MAAQ3V,GAAOgP,QAAQ5B,QAC3CqhoB,kBAAmB,QAClBt3nB,EAAWg3nB,UAAY,CACxBh8oB,SAAU,WACVm6B,OAAQ,EACRC,KAAM,EACNjU,MAAO,QACNnB,EAAWnK,OAAS,CACrB2a,YAAa3nB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ0/nB,eAAxC,aAAmEhunB,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ5B,QAAS,MACrF,UAAvB+J,EAAW0J,SAAuB,CACnC2J,WAAY,IACY,WAAvBrT,EAAW0J,SAAmD,eAA3B1J,EAAWmoD,aAAgC,CAC/E90C,WAAYxqB,EAAM6kB,QAAQ,GAC1ByF,YAAatqB,EAAM6kB,QAAQ,IACH,WAAvB1N,EAAW0J,SAAmD,aAA3B1J,EAAWmoD,aAA8B,CAC7Ej1C,UAAWrqB,EAAM6kB,QAAQ,GACzB0F,aAAcvqB,EAAM6kB,QAAQ,IACA,aAA3B1N,EAAWmoD,aAA8B,CAC1CnrD,OAAQ,OACRs6nB,kBAAmB,EACnBE,iBAAkB,QACjBx3nB,EAAWi3nB,UAAY,CACxB1inB,UAAW,UACXvX,OAAQ,QAhCP,IAiCC,gBACFnU,EADE,EACFA,MACAmX,EAFE,EAEFA,WAFE,OAGEzW,EAAAA,EAAAA,GAAS,CAAC,EAAGyW,EAAWzkB,UAAY,CACxC6lB,QAAS,OACT4S,WAAY,SACZwB,UAAW,SACXrF,OAAQ,EACR,sBAAuB,CACrBn1B,SAAU,WACVmmB,MAAO,OACPiP,UAAW,cAAF,QAAiBvnB,EAAM2V,MAAQ3V,GAAOgP,QAAQ5B,SACvDgf,IAAK,MACLoM,QAAS,KACT7T,UAAW,oBAdX,IAgBA,gBACF3kB,EADE,EACFA,MACAmX,EAFE,EAEFA,WAFE,OAGEzW,EAAAA,EAAAA,GAAS,CAAC,EAAGyW,EAAWzkB,UAAuC,aAA3BykB,EAAWmoD,aAA8B,CACjFj0C,cAAe,SACf,sBAAuB,CACrBlX,OAAQ,OACRiY,IAAK,KACLG,KAAM,MACNhF,UAAW,EACXG,WAAY,cAAF,QAAiB1nB,EAAM2V,MAAQ3V,GAAOgP,QAAQ5B,SACxDuX,UAAW,mBAXX,IAaA,gBACFxN,EADE,EACFA,WADE,OAEEzW,EAAAA,EAAAA,GAAS,CAAC,EAA4B,UAAzByW,EAAWwV,WAAoD,aAA3BxV,EAAWmoD,aAA8B,CAC9F,YAAa,CACXhnD,MAAO,OAET,WAAY,CACVA,MAAO,QAEiB,SAAzBnB,EAAWwV,WAAmD,aAA3BxV,EAAWmoD,aAA8B,CAC7E,YAAa,CACXhnD,MAAO,OAET,WAAY,CACVA,MAAO,QAdP,IAiBEs2nB,IAAiBn4nB,EAAAA,GAAAA,IAAO,OAAQ,CACpC11B,KAAM,aACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAO1S,QAAoC,aAA3B6xB,EAAWmoD,aAA8BtnE,EAAO62oB,gBACzE,GARoBp4nB,EASpB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb6X,QAAS,eACTiR,YAAa,QAAF,OAAUxpB,EAAM6kB,QAAQ,GAAxB,WACXyE,aAAc,QAAF,OAAUtpB,EAAM6kB,QAAQ,GAAxB,YACgB,aAA3B1N,EAAWmoD,aAA8B,CAC1Cj2C,WAAY,QAAF,OAAUrpB,EAAM6kB,QAAQ,GAAxB,WACV0E,cAAe,QAAF,OAAUvpB,EAAM6kB,QAAQ,GAAxB,YATZ,IAoHH,GAzG6B/jB,EAAAA,YAAiB,SAAiBgY,EAASlgB,GACtE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,eAER,EAWM0R,EAVF07oB,SAAAA,OADJ,SAEIz7oB,EASED,EATFC,SACAoN,EAQErN,EARFqN,UAHJ,EAWMrN,EAPFsmB,UAAAA,OAJJ,MAIgBrmB,EAAW,MAAQ,KAJnC,IAWMD,EANF27oB,SAAAA,OALJ,WAWM37oB,EALFua,MAAAA,OANJ,WAWMva,EAJF6sE,YAAAA,OAPJ,MAOkB,aAPlB,IAWM7sE,EAHFonB,KAAAA,OARJ,MAQyB,OAAdd,EAAqB,iBAAczpB,EAR9C,IAWMmD,EAFFk6B,UAAAA,OATJ,MASgB,SAThB,IAWMl6B,EADFouB,QAAAA,OAVJ,MAUc,YAVd,EAYE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC07oB,SAAAA,EACAp1nB,UAAAA,EACAq1nB,SAAAA,EACAphoB,MAAAA,EACAsyD,YAAAA,EACAzlD,KAAAA,EACA8S,UAAAA,EACA9L,QAAAA,IAEIvH,EAzJkB,SAAAnC,GACxB,IACEg3nB,EAQEh3nB,EARFg3nB,SACAz7oB,EAOEykB,EAPFzkB,SACA4mB,EAMEnC,EANFmC,QACA80nB,EAKEj3nB,EALFi3nB,SACAphoB,EAIEmK,EAJFnK,MACAsyD,EAGEnoD,EAHFmoD,YACA3yC,EAEExV,EAFFwV,UAGIpT,EAAQ,CACZhnB,KAAM,CAAC,OAAQ47oB,GAAY,WAFzBh3nB,EADF0J,QAGgD7T,GAAS,QAAyB,aAAhBsyD,GAA8B,WAAY8ukB,GAAY,WAAY17oB,GAAY,eAAgBA,GAA4B,aAAhB4sE,GAA8B,uBAAsC,UAAd3yC,GAAyC,aAAhB2yC,GAA8B,iBAAgC,SAAd3yC,GAAwC,aAAhB2yC,GAA8B,iBACjWh6E,QAAS,CAAC,UAA2B,aAAhBg6E,GAA8B,oBAErD,OAAO9lD,EAAAA,GAAAA,GAAeD,EAAO8+kB,GAAwB/+kB,EACtD,CAyIiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKo0nB,IAAaxtoB,EAAAA,EAAAA,GAAS,CAC7Cb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9B+Z,KAAMA,EACNjhB,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,SAAUA,GAAwBonB,EAAAA,GAAAA,KAAK80nB,GAAgB,CACrD9uoB,UAAWwZ,EAAQh0B,QACnB6xB,WAAYA,EACZzkB,SAAUA,IACP,OAER,IC3KD,OAJwCoO,EAAAA,mBAAoBxR,GCF7C,SAASw/oB,KACtB,OAAOhuoB,EAAAA,WAAiBiuoB,GACzB,CCFM,SAASC,GAA8Bl4nB,GAC5C,OAAOC,EAAAA,GAAAA,GAAqB,oBAAqBD,EAClD,CACD,ICHIm4nB,GDIJ,IAD8Bj4nB,EAAAA,GAAAA,GAAuB,oBAAqB,CAAC,OAAQ,SAAU,WAAY,WAAY,gBAAiB,cAAe,uBAAwB,cAAe,cCFtLjK,GAAY,CAAC,WAAY,YAAa,YAAa,uBAAwB,oBAAqB,WAAY,WAkC5GmioB,IAAqBz4nB,EAAAA,GAAAA,IAAO,MAAO,CACvC11B,KAAM,oBACN+1B,KAAM,OACNI,kBAvBwB,SAACzkB,EAAOuF,GAChC,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAO,WAAD,QAAY4e,EAAAA,GAAAA,GAAWO,EAAWhlB,aAAkD,IAApCglB,EAAWg4nB,sBAAiCn3oB,EAAOm3oB,qBAAsBn3oB,EAAOmf,EAAW0J,SACvK,GAe0BpK,EAIxB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb6X,QAAS,OACTpE,OAAQ,SAERyU,UAAW,MACX4C,WAAY,SACZL,WAAY,SACZ7a,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOC,QACpB,WAAvB0J,EAAW0J,UAAX,uBAEKuunB,GAAAA,cAFL,kBAEkDA,GAAAA,YAFlD,KAEyF,CACxF/knB,UAAW,KAEY,UAAxBlT,EAAWhlB,UAAwB,CAEpCm4B,YAAa,GACY,QAAxBnT,EAAWhlB,UAAsB,CAElCq4B,WAAY,IACyB,IAApCrT,EAAWg4nB,sBAAiC,CAE7C3slB,cAAe,QAxBd,IAiIH,GAvGoC1hD,EAAAA,YAAiB,SAAwBgY,EAASlgB,GACpF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,sBAGJ2R,EAOED,EAPFC,SACAoN,EAMErN,EANFqN,UAFJ,EAQMrN,EALFsmB,UAAAA,OAHJ,MAGgB,MAHhB,IAQMtmB,EAJF08oB,qBAAAA,OAJJ,WAQM18oB,EAHF48oB,kBAAAA,OALJ,SAMIl9oB,EAEEM,EAFFN,SACSm9oB,EACP78oB,EADFouB,QAEF1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCwioB,EAAiBT,MAAoB,CAAC,EACxCjunB,EAAUyunB,EACVA,GAAeC,EAAe1unB,QAO9B0unB,IAAmB1unB,IACrBA,EAAU0unB,EAAe1unB,SAE3B,IAAM1J,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC+8oB,YAAaD,EAAeC,YAC5Bh6oB,KAAM+5oB,EAAe/5oB,KACrB25oB,qBAAAA,EACAh9oB,SAAAA,EACA0uB,QAAAA,IAEIvH,EA9EkB,SAAAnC,GACxB,IACEmC,EAMEnC,EANFmC,QACA61nB,EAKEh4nB,EALFg4nB,qBACAK,EAIEr4nB,EAJFq4nB,YACAr9oB,EAGEglB,EAHFhlB,SACAqD,EAEE2hB,EAFF3hB,KACAqrB,EACE1J,EADF0J,QAEItH,EAAQ,CACZhnB,KAAM,CAAC,OAAQ48oB,GAAwB,uBAAwBh9oB,GAAY,WAAJ,QAAeykB,EAAAA,GAAAA,GAAWzkB,IAAa0uB,EAAS2unB,GAAe,cAAeh6oB,GAAQ,OAAJ,QAAWohB,EAAAA,GAAAA,GAAWphB,MAEjL,OAAOgkB,EAAAA,GAAAA,GAAeD,EAAOy1nB,GAA+B11nB,EAC7D,CAiEiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKi1nB,GAAAA,SAA6B,CACpDlppB,MAAO,KACP6M,UAAuBonB,EAAAA,GAAAA,KAAKo1nB,IAAoBxuoB,EAAAA,EAAAA,GAAS,CACvDb,GAAIkZ,EACJ5B,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,EAAO,CACRzc,SAA8B,kBAAbA,GAA0B28oB,GAGzB31nB,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACtCpO,SAAU,CAAc,UAAbP,EAA0G88oB,KAAUA,IAAqBn1nB,EAAAA,GAAAA,KAAK,OAAQ,CAC/Jha,UAAW,cACXpN,SAAU,YACN,KAAMA,MAP8DonB,EAAAA,GAAAA,KAAKurmB,GAAY,CAC3F/0mB,MAAO,iBACP5d,SAAUA,QASjB,ICvHM,SAAS+8oB,GAAoB34nB,GAClC,OAAOC,EAAAA,GAAAA,GAAqB,UAAWD,EACxC,EACmBE,EAAAA,GAAAA,GAAuB,UAAW,CAAC,SAAvD,ICHMjK,GAAY,CAAC,YAAa,UAoB1B2ioB,IAAWj5nB,EAAAA,GAAAA,IAAO2vjB,GAAO,CAC7BrllB,KAAM,UACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHJkkB,EAId,WACD,MAAO,CACLuU,SAAU,SAEb,IAsDD,GArD0BlqB,EAAAA,YAAiB,SAAcgY,EAASlgB,GAChE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,YAGJ+e,EAEErN,EAFFqN,UADJ,EAGMrN,EADFk9oB,OAAAA,OAFJ,SAIExgoB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCk9oB,OAAAA,IAEIr2nB,EA/BkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAKF,OAAOE,EAAAA,GAAAA,GAHO,CACZjnB,KAAM,CAAC,SAEoBk9oB,GAAqBn2nB,EACnD,CAuBiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAK41nB,IAAUhvoB,EAAAA,EAAAA,GAAS,CAC1CZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BwlkB,UAAWqqE,EAAS,OAAIrgpB,EACxBsJ,IAAKA,EACLue,WAAYA,GACXhI,GACJ,0BCjDKpC,GAAY,CAAC,WAAY,UAAW,UAAW,QAAS,SAO9D,SAASia,GAAcnhC,GACrB,OAAO45B,SAAS55B,EAAO,KAAO,CAC/B,CACD,IAAMmS,GACI,CAENkzB,WAAY,SAEZ/4B,SAAU,WAEV64B,SAAU,SACV7W,OAAQ,EACRiY,IAAK,EACLG,KAAM,EAEN5H,UAAW,iBAGf,SAASpd,GAAQzK,GACf,YAAexN,IAARwN,GAA6B,OAARA,GAA4C,IAA5BnX,OAAOgB,KAAKmW,GAAKxU,QAAyC,IAAzBwU,EAAI8yoB,mBAA2B9yoB,EAAIkuB,QACjH,CAaD,IAAM6knB,GAAgC/uoB,EAAAA,YAAiB,SAA0BrO,EAAOmG,GACtF,IACIswK,EAKEz2K,EALFy2K,SACA4me,EAIEr9oB,EAJFq9oB,QAFJ,EAMMr9oB,EAHFs9oB,QAAAA,OAHJ,MAGc,EAHd,EAIItxnB,EAEEhsB,EAFFgsB,MACA54B,EACE4M,EADF5M,MAEFspB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAEpCqjB,EACPtvB,EAAAA,OAAsB,MAATjb,GADfub,QAEIghoB,EAAWthoB,EAAAA,OAAa,MACxB2qkB,GAAYvwjB,EAAAA,GAAAA,GAAWtiB,EAAKwpoB,GAC5B4N,EAAYlvoB,EAAAA,OAAa,MACzBmvoB,EAAUnvoB,EAAAA,OAAa,GAC7B,EAA0BA,EAAAA,SAAe,CACvC8uoB,iBAAkB,IADpB,eAAOv/mB,EAAP,KAAcgR,EAAd,KAGM6umB,EAAkBpvoB,EAAAA,aAAkB,WACxC,IAAMqB,EAAQigoB,EAAShhoB,QAEjB+uoB,GADkBr1nB,EAAAA,GAAAA,GAAY3Y,GACEogD,iBAAiBpgD,GAGvD,GAA4B,QAAxBguoB,EAAc73nB,MAChB,MAAO,CACLs3nB,iBAAkB,GAGtB,IAAMQ,EAAeJ,EAAU5uoB,QAC/BgvoB,EAAa3xnB,MAAMnG,MAAQ63nB,EAAc73nB,MACzC83nB,EAAavqpB,MAAQsc,EAAMtc,OAAS4M,EAAM4nP,aAAe,IACpB,OAAjC+1Z,EAAavqpB,MAAM6G,OAAO,KAI5B0jpB,EAAavqpB,OAAS,KAExB,IAAM4mC,EAAY0jnB,EAAc1jnB,UAC1B7F,EAAUI,GAAcmpnB,EAAc5mnB,eAAiBvC,GAAcmpnB,EAAc9mnB,YACnF/B,EAASN,GAAcmpnB,EAAc1B,mBAAqBznnB,GAAcmpnB,EAAcE,gBAGtF7/kB,EAAc4/kB,EAAarxX,aAGjCqxX,EAAavqpB,MAAQ,IACrB,IAAMyqpB,EAAkBF,EAAarxX,aAGjCzsM,EAAc9hB,EAYlB,OAXIu/kB,IACFz9jB,EAAcphF,KAAKkuB,IAAIiB,OAAO0vnB,GAAWO,EAAiBh+jB,IAExDw9jB,IACFx9jB,EAAcphF,KAAKsZ,IAAI6V,OAAOyvnB,GAAWQ,EAAiBh+jB,IAOrD,CACLs9jB,kBANFt9jB,EAAcphF,KAAKkuB,IAAIkzD,EAAag+jB,KAGkB,eAAd7jnB,EAA6B7F,EAAUU,EAAS,GAItF0D,SAHe95B,KAAKD,IAAIqhF,EAAc9hB,IAAgB,EAKzD,GAAE,CAACs/kB,EAASC,EAASt9oB,EAAM4nP,cACtB77L,EAAc,SAACwqhB,EAAWl2Z,GAC9B,IACE88d,EAEE98d,EAFF88d,iBACA5knB,EACE8nJ,EADF9nJ,SAIF,OAAIilnB,EAAQ7uoB,QAAU,KAAOwuoB,EAAmB,GAAK1+oB,KAAKD,KAAK+3kB,EAAU4mE,kBAAoB,GAAKA,GAAoB,GAAK5mE,EAAUh+iB,WAAaA,IAChJilnB,EAAQ7uoB,SAAW,EACZ,CACL4pB,SAAAA,EACA4knB,iBAAAA,IAQG5mE,CACR,EACKunE,EAAazvoB,EAAAA,aAAkB,WACnC,IAAMgyK,EAAWo9d,IACb3ooB,GAAQurK,IAGZzxI,GAAS,SAAA2niB,GACP,OAAOxqhB,EAAYwqhB,EAAWl2Z,EAC/B,GACF,GAAE,CAACo9d,IAgBJpvoB,EAAAA,WAAgB,WACd,IAWI0voB,EAXEp2kB,GAAengD,EAAAA,GAAAA,IAAS,WAC5Bg2nB,EAAQ7uoB,QAAU,EAMdghoB,EAAShhoB,SAvBe,WAC9B,IAAM0xK,EAAWo9d,IACb3ooB,GAAQurK,IAOZtyI,GAAAA,WAAmB,WACjBa,GAAS,SAAA2niB,GACP,OAAOxqhB,EAAYwqhB,EAAWl2Z,EAC/B,GACF,GACF,CAUK29d,EAEH,IAEKtuoB,EAAQigoB,EAAShhoB,QACjBovlB,GAAkB11kB,EAAAA,GAAAA,GAAY3Y,GAMpC,OALAqulB,EAAgBtnmB,iBAAiB,SAAUkxE,GACb,qBAAnBi/J,iBACTm3a,EAAiB,IAAIn3a,eAAej/J,IACrB6+J,QAAQ92N,GAElB,WACLi4D,EAAatrC,QACb0hkB,EAAgBrnmB,oBAAoB,SAAUixE,GAC1Co2kB,GACFA,EAAer3a,YAElB,CACF,KACDn+M,EAAAA,GAAAA,IAAkB,WAChBu1nB,GACD,IACDzvoB,EAAAA,WAAgB,WACdmvoB,EAAQ7uoB,QAAU,CACnB,GAAE,CAACvb,IAUJ,OAAoB6zB,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,EAAconB,EAAAA,GAAAA,KAAK,YAAYpZ,EAAAA,EAAAA,GAAS,CAChD7a,MAAOA,EACPqjL,SAZiB,SAAAxgL,GACnBunpB,EAAQ7uoB,QAAU,EACbgvB,GACHmgnB,IAEErne,GACFA,EAASxgL,EAEZ,EAKGkQ,IAAK6ykB,EAGL9tQ,KAAMoyU,EACNtxnB,OAAO/d,EAAAA,EAAAA,GAAS,CACdyT,OAAQkc,EAAMu/mB,iBAGd5knB,SAAUqF,EAAMrF,SAAW,cAAW17B,GACrCmvB,IACFtP,KAAsB2K,EAAAA,GAAAA,KAAK,WAAY,CACxC,eAAe,EACfha,UAAWrN,EAAMqN,UACjB4c,UAAU,EACV9jB,IAAKo3oB,EACL7nmB,UAAW,EACX1pB,OAAO/d,EAAAA,EAAAA,GAAS,CAAC,EAAG1I,GAAeymB,EAAO,CACxCmI,QAAS,QAIhB,IAoCD,MCnQe,SAAS8pnB,GAAT,GAIZ,IAHDj+oB,EAGC,EAHDA,MACAk+oB,EAEC,EAFDA,OACApB,EACC,EADDA,eAEA,OAAOoB,EAAO7kpB,QAAO,SAACC,EAAKskC,GAOzB,OANAtkC,EAAIskC,GAAS59B,EAAM49B,GACfk/mB,GAC0B,qBAAjB98oB,EAAM49B,KACftkC,EAAIskC,GAASk/mB,EAAel/mB,IAGzBtkC,CACR,GAAE,CAAC,EACL,CCPc,SAAS6kpB,GAAan+oB,GACnC,IACEuF,EAEEvF,EAFFuF,OADF,EAGIvF,EADF6jB,aAAAA,OAFF,MAEiB,CAAC,EAFlB,EAIMu6nB,EAAiC,oBAAX74oB,EAAwB,SAAA84oB,GAAU,OAAI94oB,OAPnD1I,KADAwN,EAQkEg0oB,IAP7C,OAARh0oB,GAA4C,IAA5BnX,OAAOgB,KAAKmW,GAAKxU,OAOkCguB,EAAew6nB,GARhH,IAAiBh0oB,CAQ+C,EAA8D9E,EAC5H,OAAoB8hB,EAAAA,GAAAA,KAAKgskB,GAAQ,CAC/B9tlB,OAAQ64oB,GAEX,CCkBD,OA7BA,YAIG,IAHD74oB,EAGC,EAHDA,OACA8pB,EAEC,EAFDA,QAEC,IADDxL,aAAAA,OACC,MADc,CAAC,EACf,EACKy6nB,GAAanjnB,EAAAA,GAAAA,GAAStX,GACtBu6nB,EAAiC,oBAAX74oB,EAAwBA,EAAO8pB,GAAUivnB,EAAWjvnB,IAAyBivnB,GAAc/4oB,EACvH,OAAoB8hB,EAAAA,GAAAA,KAAKk3nB,GAAiB,CACxCh5oB,OAAQ64oB,GAEX,ECQD,OAjBA,SAAsBp+oB,GACpB,OAAoBqnB,EAAAA,GAAAA,KAAKm3nB,IAAoBvwoB,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CAC/D6jB,aAAcA,GAAAA,IAEjB,ECJM,SAAS4xJ,GAASriL,GACvB,OAAgB,MAATA,KAAmB2G,MAAMC,QAAQ5G,IAA2B,IAAjBA,EAAMyC,OACzD,CASM,SAAS4opB,GAASp0oB,GAAkB,IAAbq0oB,EAAa,wDACzC,OAAOr0oB,IAAQorK,GAASprK,EAAIjX,QAAwB,KAAdiX,EAAIjX,OAAgBsrpB,GAAOjpe,GAASprK,EAAIipB,eAAsC,KAArBjpB,EAAIipB,aACpG,CChBD,IAAMhZ,GAAY,CAAC,mBAAoB,eAAgB,YAAa,YAAa,QAAS,aAAc,kBAAmB,eAAgB,WAAY,+BAAgC,eAAgB,QAAS,YAAa,KAAM,iBAAkB,aAAc,WAAY,SAAU,UAAW,UAAW,YAAa,OAAQ,SAAU,WAAY,UAAW,UAAW,YAAa,UAAW,cAAe,WAAY,eAAgB,OAAQ,OAAQ,YAAa,QAAS,iBAAkB,OAAQ,SAmBteqkoB,GAAwB,SAAC3+oB,EAAOuF,GAC3C,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAM4kB,EAAWk6nB,aAAer5oB,EAAOq5oB,YAAal6nB,EAAWyznB,gBAAkB5yoB,EAAOs5oB,aAAcn6nB,EAAWkynB,cAAgBrxoB,EAAOu5oB,WAAYp6nB,EAAWnwB,OAASgR,EAAOhR,MAA2B,UAApBmwB,EAAW3hB,MAAoBwC,EAAOw5oB,UAAWr6nB,EAAWqvU,WAAaxuV,EAAOwuV,UAAWrvU,EAAW7G,OAAStY,EAAO,QAAD,QAAS4e,EAAAA,GAAAA,GAAWO,EAAW7G,SAAW6G,EAAW2nnB,WAAa9moB,EAAO8moB,UAAW3nnB,EAAWq4nB,aAAex3oB,EAAOw3oB,YAChb,EACYiC,GAAyB,SAACh/oB,EAAOuF,GAC5C,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOmK,MAA2B,UAApBgV,EAAW3hB,MAAoBwC,EAAO05oB,eAAgBv6nB,EAAWqvU,WAAaxuV,EAAO25oB,eAAoC,WAApBx6nB,EAAWnqB,MAAqBgL,EAAO45oB,gBAAiBz6nB,EAAWyznB,gBAAkB5yoB,EAAO65oB,kBAAmB16nB,EAAWkynB,cAAgBrxoB,EAAO85oB,gBAAiB36nB,EAAWq4nB,aAAex3oB,EAAO+5oB,iBAC/T,EAwBYC,IAAgBv7nB,EAAAA,GAAAA,IAAO,MAAO,CACzC11B,KAAM,eACN+1B,KAAM,OACNI,kBAAmBk6nB,IAHQ36nB,EAI1B,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAMmR,WAAWwB,OAAtB,SACZrC,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK2e,QAC1CrS,WAAY,WAEZ6xB,UAAW,aAEXt6B,SAAU,WACVoK,OAAQ,OACRgc,QAAS,cACTiT,WAAY,UATA,YAUN68mB,GAAAA,UAA8B,CAClC/3nB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK6e,SAC1C5Q,OAAQ,YAET4a,EAAWqvU,YAAa9lV,EAAAA,EAAAA,GAAS,CAClCkmB,QAAS,aACY,UAApBzP,EAAW3hB,MAAoB,CAChC6zB,WAAY,IACVlS,EAAW2nnB,WAAa,CAC1BxmnB,MAAO,QAtBN,IAwBU25nB,IAAqBx7nB,EAAAA,GAAAA,IAAO,QAAS,CAChD11B,KAAM,eACN+1B,KAAM,QACNI,kBAAmBu6nB,IAHah7nB,EAI/B,YAGG,MAFJzW,EAEI,EAFJA,MACAmX,EACI,EADJA,WAEMnK,EAA+B,UAAvBhN,EAAMgP,QAAQC,KACtBorO,GAAc35O,EAAAA,EAAAA,GAAS,CAC3B4P,MAAO,gBACNtQ,EAAM2V,KAAO,CACd9a,QAASmF,EAAM2V,KAAK9a,QAAQq3oB,kBAC1B,CACFr3oB,QAASmS,EAAQ,IAAO,IACvB,CACDyL,WAAYzY,EAAMwV,YAAYrd,OAAO,UAAW,CAC9Cqb,SAAUxT,EAAMwV,YAAYhC,SAASE,YAGnCy+nB,EAAoB,CACxBt3oB,QAAS,gBAELu3oB,EAAqBpyoB,EAAM2V,KAAO,CACtC9a,QAASmF,EAAM2V,KAAK9a,QAAQq3oB,kBAC1B,CACFr3oB,QAASmS,EAAQ,IAAO,IAE1B,OAAOtM,EAAAA,EAAAA,IAAQ,GACb2xoB,KAAM,UACNrgoB,cAAe,UACf1B,MAAO,eACPsW,QAAS,YACTU,OAAQ,EACRmF,UAAW,cACXpf,WAAY,OACZ8G,OAAQ,WAERwS,OAAQ,EAERkikB,wBAAyB,cACzBtwkB,QAAS,QAEToQ,SAAU,EACVrQ,MAAO,OAEPy3e,cAAe,uBACfxnU,kBAAmB,OACnB,+BAAgC8xD,EAChC,sBAAuBA,EAEvB,0BAA2BA,EAE3B,2BAA4BA,EAE5B,UAAW,CACTyuW,QAAS,GAGX,YAAa,CACXt8jB,UAAW,QAEb,+BAAgC,CAE9By8jB,iBAAkB,UApCP,gDAuCmBo/C,GAAAA,YAvCnB,MAuCsD,CACjE,+BAAgC8J,EAChC,sBAAuBA,EAEvB,0BAA2BA,EAE3B,2BAA4BA,EAE5B,qCAAsCC,EACtC,4BAA6BA,EAE7B,gCAAiCA,EAEjC,iCAAkCA,KApDvB,sBAuDP/J,GAAAA,UAA8B,CAClCxtoB,QAAS,EAETy3oB,qBAAsBtyoB,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK6e,YA1D7C,UA6Db,qBAAsB,CACpBo7K,kBAAmB,QACnBwnU,cAAe,kBA/DJ,GAiEQ,UAApB54e,EAAW3hB,MAAoB,CAChC6zB,WAAY,GACXlS,EAAWqvU,WAAa,CACzBryU,OAAQ,OACRm6I,OAAQ,OACR1nI,QAAS,EACTyC,WAAY,GACS,WAApBlS,EAAWnqB,MAAqB,CAEjCg8lB,cAAe,aAElB,IACKupD,IAAiCz4nB,EAAAA,GAAAA,KAAK82nB,GAAc,CACxD54oB,OAAQ,CACN,2BAA4B,CAC1B7G,KAAM,CACJonB,QAAS,UAGb,kCAAmC,CACjCpnB,KAAM,CACJonB,QAAS,aAWXi6nB,GAAyB1xoB,EAAAA,YAAiB,SAAmBgY,EAASlgB,GAC1E,IAAI65oB,EACEhgpB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,iBAGgB2xpB,EAkClBjgpB,EAlCF,oBACAkuoB,EAiCEluoB,EAjCFkuoB,aACA12H,EAgCEx3gB,EAhCFw3gB,UACAnqgB,EA+BErN,EA/BFqN,UAJJ,EAmCMrN,EA9BFwuB,WAAAA,OALJ,MAKiB,CAAC,EALlB,IAmCMxuB,EA7BF0slB,gBAAAA,OANJ,MAMsB,CAAC,EANvB,EAOIp5jB,EA4BEtzB,EA5BFszB,aACA5Y,EA2BE1a,EA3BF0a,SACAwloB,EA0BElgpB,EA1BFkgpB,6BACAtJ,EAyBE52oB,EAzBF42oB,aAVJ,EAmCM52oB,EAxBFqsoB,UAAAA,OAXJ,SAYIp5nB,EAuBEjT,EAvBFiT,GAZJ,EAmCMjT,EAtBFmgpB,eAAAA,OAbJ,MAaqB,QAbrB,IAmCMngpB,EArBFo6oB,WAAYgG,OAdhB,MAciC,CAAC,EAdlC,EAecC,EAoBRrgpB,EApBF2voB,SACA0N,EAmBEr9oB,EAnBFq9oB,QACAC,EAkBEt9oB,EAlBFs9oB,QAjBJ,EAmCMt9oB,EAjBF+zV,UAAAA,OAlBJ,SAmBIzlW,EAgBE0R,EAhBF1R,KACAi8B,EAeEvqB,EAfFuqB,OACAksJ,EAcEz2K,EAdFy2K,SACAjE,EAaExyK,EAbFwyK,QACAloJ,EAYEtqB,EAZFsqB,QACAsoJ,EAWE5yK,EAXF4yK,UACAE,EAUE9yK,EAVF8yK,QACA80E,EASE5nP,EATF4nP,YACA39N,EAQEjqB,EARFiqB,SACAq2nB,EAOEtgpB,EAPFsgpB,aACAp1U,EAMElrU,EANFkrU,KA7BJ,EAmCMlrU,EALFs9B,UAAAA,OA9BJ,MA8BgB,CAAC,EA9BjB,IAmCMt9B,EAJF8mB,MAAAA,OA/BJ,MA+BY,CAAC,EA/Bb,EAgCIqxnB,EAGEn4oB,EAHFm4oB,eAhCJ,EAmCMn4oB,EAFFzF,KAAAA,OAjCJ,MAiCW,OAjCX,EAkCWg1oB,EACLvvoB,EADF5M,MAEFspB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzClnB,EAAgC,MAAxBgtpB,EAAehtpB,MAAgBgtpB,EAAehtpB,MAAQm8oB,EAEzD5xmB,EACPtvB,EAAAA,OAAsB,MAATjb,GADfub,QAEIghoB,GAAWthoB,EAAAA,SACXkyoB,GAAwBlyoB,EAAAA,aAAkB,SAAA4vB,GAC1C7/B,CAKL,GAAE,IACGoipB,IAAiB/3nB,EAAAA,GAAAA,GAAWknnB,GAAU0Q,EAAcD,EAAej6oB,IAAKo6oB,IAC9E,GAA8BlyoB,EAAAA,UAAe,GAA7C,iBAAO0uB,GAAP,MAAgBskf,GAAhB,MACMy7H,GAAiBT,KAUvB,IAAMoE,GAAMxC,GAAiB,CAC3Bj+oB,MAAAA,EACA88oB,eAAAA,GACAoB,OAAQ,CAAC,QAAS,WAAY,QAAS,cAAe,OAAQ,WAAY,YAE5EuC,GAAI1jnB,QAAU+/mB,GAAiBA,GAAe//mB,QAAUA,GAIxD1uB,EAAAA,WAAgB,YACTyuoB,IAAkBpioB,GAAYqiB,KACjCskf,IAAW,GACP92f,GACFA,IAGL,GAAE,CAACuynB,GAAgBpioB,EAAUqiB,GAASxS,IACvC,IAAMm2nB,GAAW5D,IAAkBA,GAAe4D,SAC5CC,GAAU7D,IAAkBA,GAAe6D,QAC3CC,GAAavyoB,EAAAA,aAAkB,SAAAhE,GAC/Bo0oB,GAASp0oB,GACPq2oB,IACFA,KAEOC,IACTA,IAEH,GAAE,CAACD,GAAUC,MACdp4nB,EAAAA,GAAAA,IAAkB,WACZoV,GACFijnB,GAAW,CACTxtpB,MAAAA,GAGL,GAAE,CAACA,EAAOwtpB,GAAYjjnB,IAuDvBtvB,EAAAA,WAAgB,WACduyoB,GAAWjR,GAAShhoB,QAErB,GAAE,IACH,IAQIkyoB,GAAiBV,EACjB/F,GAAagG,EACbrsT,GAAgC,UAAnB8sT,KAObzG,GANElvU,GAMWj9T,EAAAA,EAAAA,GAAS,CACpB1T,UAAMsC,EACNygpB,QAASpyU,EACTmyU,QAASnyU,GACRkvU,KAEUnsoB,EAAAA,EAAAA,GAAS,CACpB1T,UAAMsC,EACNwgpB,QAAAA,EACAC,QAAAA,GACClD,IAELyG,GAAiBzD,IAQnB/uoB,EAAAA,WAAgB,WACVyuoB,IACFA,GAAegE,gBAAgB3shB,QAAQgkhB,GAE1C,GAAE,CAAC2E,GAAgB3E,IACpB,IAAMzznB,IAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAO4ioB,GAAI5ioB,OAAS,UACpBnD,SAAU+loB,GAAI/loB,SACdk8nB,aAAAA,EACAripB,MAAOkspB,GAAIlspB,MACXwoC,QAAS0jnB,GAAI1jnB,QACb6hnB,YAAa9B,GACbzQ,UAAAA,EACA0Q,YAAa0D,GAAI1D,YACjBhpT,UAAAA,EACAhxV,KAAM09oB,GAAI19oB,KACVo1oB,eAAAA,EACA59oB,KAAAA,IAEIssB,GAxYkB,SAAAnC,GACxB,IACEmC,EAcEnC,EAdFmC,QACAhJ,EAaE6G,EAbF7G,MACAnD,EAYEgK,EAZFhK,SACAnmB,EAWEmwB,EAXFnwB,MACAqipB,EAUElynB,EAVFkynB,aACA75mB,EASErY,EATFqY,QACA6hnB,EAQEl6nB,EARFk6nB,YACAvS,EAOE3nnB,EAPF2nnB,UACA0Q,EAMEr4nB,EANFq4nB,YACAhpT,EAKErvU,EALFqvU,UACA9pU,EAIEvF,EAJFuF,SACAlnB,EAGE2hB,EAHF3hB,KACAo1oB,EAEEzznB,EAFFyznB,eACA59oB,EACEmqB,EADFnqB,KAEIusB,EAAQ,CACZhnB,KAAM,CAAC,OAAD,gBAAiBqkB,EAAAA,GAAAA,GAAWtG,IAAUnD,GAAY,WAAYnmB,GAAS,QAAS83oB,GAAa,YAAatvmB,GAAW,UAAW6hnB,GAAe,cAAwB,UAAT77oB,GAAoB,YAAagxV,GAAa,YAAaokT,GAAkB,eAAgBvB,GAAgB,aAAcmG,GAAe,cAAe9ynB,GAAY,YACzUva,MAAO,CAAC,QAASgL,GAAY,WAAqB,WAATngB,GAAqB,kBAAmBw5V,GAAa,iBAA2B,UAAThxV,GAAoB,iBAAkBg6oB,GAAe,mBAAoB5E,GAAkB,oBAAqBvB,GAAgB,kBAAmB3snB,GAAY,aAEjR,OAAOlD,EAAAA,GAAAA,GAAeD,EAAO4unB,GAA0B7unB,EACxD,CAkXiBG,CAAkBtC,IAC5BsnkB,GAAOllkB,EAAMhnB,MAAQ0uB,EAAWw9jB,MAAQuzD,GACxCtzD,GAAY3ujB,EAAUx9B,MAAQ4slB,EAAgB5slB,MAAQ,CAAC,EACvDihpB,GAAQj6nB,EAAMpX,OAAS8e,EAAWuynB,OAASvB,GAEjD,OADApF,IAAansoB,EAAAA,EAAAA,GAAS,CAAC,EAAGmsoB,GAAoD,OAAvC4F,EAAmB1inB,EAAU5tB,OAAiBswoB,EAAmBtzD,EAAgBh9kB,QACpGuX,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,EAAEigpB,GAAgCJ,IAAgC74nB,EAAAA,GAAAA,MAAM+kkB,IAAM/9kB,EAAAA,EAAAA,GAAS,CAAC,EAAGg+kB,IAAY5W,GAAgB2W,KAAS,CACxItnkB,YAAYzW,EAAAA,EAAAA,GAAS,CAAC,EAAGyW,GAAYunkB,GAAUvnkB,aAC9C,CACDve,IAAKA,EACLqsK,QAlEgB,SAAAv8K,GACd05oB,GAAShhoB,SAAW1Y,EAAMy+D,gBAAkBz+D,EAAM4W,QACpD8ioB,GAAShhoB,QAAQ4M,QAEfi3J,GACFA,EAAQv8K,EAEX,GA4DIymB,EAAO,CACRrP,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQ/mB,KAAMmslB,GAAU5+kB,UAAWA,EAAW4c,GAAY,yBAC1EhqB,SAAU,CAACk4oB,GAA6B9wnB,EAAAA,GAAAA,KAAKi1nB,GAAAA,SAA6B,CACxElppB,MAAO,KACP6M,UAAuBonB,EAAAA,GAAAA,KAAK05nB,IAAO9yoB,EAAAA,EAAAA,GAAS,CAC1CyW,WAAYA,GACZ,eAAgB+7nB,GAAIlspB,MACpB,mBAAoB0rpB,EACpB/R,aAAcA,EACd12H,UAAWA,EACXlkf,aAAcA,EACd5Y,SAAU+loB,GAAI/loB,SACdzH,GAAIA,EACJ+toB,iBAjDe,SAAA/qpB,GAErB2qpB,GAAmC,yBAAxB3qpB,EAAMqngB,cAA2CqyI,GAAShhoB,QAAU,CAC7Evb,MAAO,KAEV,EA6CO9E,KAAMA,EACNs5P,YAAaA,EACb39N,SAAUA,EACVgT,SAAUwjnB,GAAIxjnB,SACdiuS,KAAMA,EACN93U,MAAOA,EACPw/K,UAAWA,EACXE,QAASA,EACTv4K,KAAMA,GACL6/oB,IAAa/kE,GAAgB0rE,KAAU,CACxC3zoB,GAAIyzoB,GACJn8nB,YAAYzW,EAAAA,EAAAA,GAAS,CAAC,EAAGyW,GAAY01nB,GAAW11nB,aAC/C,CACDve,IAAKq6oB,GACLnzoB,WAAW6Z,EAAAA,GAAAA,GAAKL,GAAQnX,MAAO0qoB,GAAW/soB,UAAW4c,GAAY,yBACjEM,OAvIW,SAAAt0B,GACbs0B,GACFA,EAAOt0B,GAELmqpB,EAAe71nB,QACjB61nB,EAAe71nB,OAAOt0B,GAEpB6mpB,IAAkBA,GAAevynB,OACnCuynB,GAAevynB,OAAOt0B,GAEtBorhB,IAAW,EAEd,EA4HO5qW,SA3Ha,SAACxgL,GACpB,IAAK0nC,EAAc,CACjB,IAAMj8B,EAAUzL,EAAM4W,QAAU8ioB,GAAShhoB,QACzC,GAAe,MAAXjN,EACF,MAAM,IAAIjS,OAA2NwuB,EAAAA,GAAAA,GAAuB,IAE9P2ioB,GAAW,CACTxtpB,MAAOsO,EAAQtO,OAElB,CATsC,2BAATN,EAAS,iCAATA,EAAS,kBAUnCstpB,EAAe3pe,UACjB2pe,EAAe3pe,SAAf,MAAA2pe,EAAc,CAAUnqpB,GAAV,OAAoBnD,IAIhC2jL,GACFA,EAAQ,WAAR,GAASxgL,GAAT,OAAmBnD,GAEtB,EA0GOw3B,QA5JY,SAAAr0B,GAGdwqpB,GAAI/loB,SACNzkB,EAAMggE,mBAGJ3rC,GACFA,EAAQr0B,GAENmqpB,EAAe91nB,SACjB81nB,EAAe91nB,QAAQr0B,GAErB6mpB,IAAkBA,GAAexynB,QACnCwynB,GAAexynB,QAAQr0B,GAEvBorhB,IAAW,GAEd,OA4IOu1H,EAAc0J,EAAeA,GAAaryoB,EAAAA,EAAAA,GAAS,CAAC,EAAGwyoB,GAAK,CAC9DtI,eAAAA,KACI,WAGX,IAuOD,MChsBM79nB,GAAY,CAAC,mBAAoB,aAAc,kBAAmB,YAAa,iBAAkB,YAAa,YAAa,QAAS,QAuBpI2moB,IAAYj9nB,EAAAA,GAAAA,IAAOu7nB,GAAe,CACtC1zoB,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,GAAP,gBAAWw8nB,GAA+BlhpB,EAAOuF,IAAjD,EAA2Dmf,EAAWy8nB,kBAAoB57oB,EAAO67oB,WAClG,GATep9nB,EAUf,YAGG,MAFJzW,EAEI,EAFJA,MACAmX,EACI,EADJA,WAGI28nB,EADiC,UAAvB9zoB,EAAMgP,QAAQC,KACE,sBAAwB,2BAItD,OAHIjP,EAAM2V,OACRm+nB,EAAkB,QAAH,OAAW9zoB,EAAM2V,KAAK3G,QAAQzB,OAAOwmoB,oBAArC,cAA8D/zoB,EAAM2V,KAAK9a,QAAQm5oB,eAAjF,OAEVtzoB,EAAAA,EAAAA,GAAS,CACdvO,SAAU,YACTglB,EAAWk6nB,aAAe,CAC3B,YAAa,CACXhnnB,UAAW,MAEXlT,EAAWy8nB,mBAAZ,GACD,UAAW,CACTnsnB,aAAc,aAAF,QAAgBznB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,MAC3E0d,KAAM,EACND,OAAQ,EAERkM,QAAS,KACTrmC,SAAU,WACVk6B,MAAO,EACP1H,UAAW,YACXlM,WAAYzY,EAAMwV,YAAYrd,OAAO,YAAa,CAChDqb,SAAUxT,EAAMwV,YAAYhC,SAASE,QACrCP,OAAQnT,EAAMwV,YAAYrC,OAAOE,UAEnCmvC,cAAe,UAdhB,sBAiBKymlB,GAAAA,QAjBL,UAiBoC,CAGnCtknB,UAAW,6BApBZ,sBAsBKsknB,GAAAA,OAAuB,CAC3B,oBAAqB,CACnBnhnB,mBAAoB9nB,EAAM2V,MAAQ3V,GAAOgP,QAAQhoB,MAAM6nB,SAxB1D,UA2BD,WAAY,CACV4Y,aAAc,aAAF,OAAeqsnB,GAC3BvnnB,KAAM,EACND,OAAQ,EAERkM,QAAS,WACTrmC,SAAU,WACVk6B,MAAO,EACP5T,WAAYzY,EAAMwV,YAAYrd,OAAO,sBAAuB,CAC1Dqb,SAAUxT,EAAMwV,YAAYhC,SAASE,UAEvC8uC,cAAe,UAtChB,iCAyCgBymlB,GAAAA,SAzChB,cAyC2CA,GAAAA,MAzC3C,YAyC0E,CACzExhnB,aAAc,aAAF,QAAgBznB,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK2e,SAE9D,uBAAwB,CACtBwa,aAAc,aAAF,OAAeqsnB,OA7C9B,sBAgDK7K,GAAAA,SAhDL,WAgDsC,CACrCgL,kBAAmB,WAjDpB,GAoDJ,IACKC,IAAaz9nB,EAAAA,GAAAA,IAAO09nB,GAAgB,CACxCpzpB,KAAM,WACN+1B,KAAM,QACNI,kBAAmBk9nB,IAHF39nB,CAIhB,CAAC,GACE+8nB,GAAqB1yoB,EAAAA,YAAiB,SAAegY,EAASlgB,GAClE,IAAI+F,EAAMuglB,EAAa7yb,EAAOgof,EACxB5hpB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,aAGJ6ypB,EASEnhpB,EATFmhpB,iBADJ,EAUMnhpB,EARFwuB,WAAAA,OAFJ,MAEiB,CAAC,EAFlB,EAGqBqznB,EAOf7hpB,EAPF0slB,gBAHJ,EAUM1slB,EANFqsoB,UAAAA,OAJJ,WAUMrsoB,EALFmgpB,eAAAA,OALJ,MAKqB,QALrB,IAUMngpB,EAJF+zV,UAAAA,OANJ,SAOIz2T,EAGEt9B,EAHFs9B,UAPJ,EAUMt9B,EAFF8mB,MAAAA,OARJ,MAQY,CAAC,EARb,IAUM9mB,EADFzF,KAAAA,OATJ,MASW,OATX,EAWEmiB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCuM,EAjHkB,SAAAnC,GACxB,IACEmC,EAEEnC,EAFFmC,QAGIC,EAAQ,CACZhnB,KAAM,CAAC,QAFL4kB,EADFy8nB,kBAGoC,aACpCzxoB,MAAO,CAAC,UAEJoplB,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAO6unB,GAAsB9unB,GACpE,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CAsGiB9xkB,CAAkBhnB,GAI5B8hpB,EAAuB,CAC3BhipB,KAAM,CACJ4kB,WALe,CACjBy8nB,iBAAAA,KAOIz0D,GAAgC,MAAbpvjB,EAAoBA,EAAYuknB,IAAuBzjoB,EAAAA,GAAAA,GAAuB,MAAbkf,EAAoBA,EAAYuknB,EAAqBC,GAAwBA,EACjK7+C,EAA0F,OAA9E/2lB,EAAqC,OAA7BuglB,EAAc3lkB,EAAMhnB,MAAgB2slB,EAAcj+jB,EAAWw9jB,MAAgB9/kB,EAAO+0oB,GACxGc,EAAgG,OAAnFnof,EAAwC,OAA/Bgof,EAAe96nB,EAAMpX,OAAiBkyoB,EAAepznB,EAAWuynB,OAAiBnnf,EAAQ6nf,GACrH,OAAoBp6nB,EAAAA,GAAAA,KAAK04nB,IAAW9xoB,EAAAA,EAAAA,GAAS,CAC3C6Y,MAAO,CACLhnB,KAAMmjmB,EACNvzlB,MAAOqyoB,GAETzknB,UAAWovjB,EACX2/C,UAAWA,EACX8T,eAAgBA,EAChBpsT,UAAWA,EACX5tV,IAAKA,EACL5L,KAAMA,GACLmiB,EAAO,CACRmK,QAASA,IAEZ,IA2LDk6nB,GAAMz5nB,QAAU,QAChB,UClVMhN,GAAY,CAAC,mBAAoB,aAAc,kBAAmB,YAAa,cAAe,iBAAkB,YAAa,YAAa,QAAS,QAuBnJ0noB,IAAkBh+nB,EAAAA,GAAAA,IAAOu7nB,GAAe,CAC5C1zoB,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,iBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,GAAP,gBAAWw8nB,GAA+BlhpB,EAAOuF,IAAjD,EAA2Dmf,EAAWy8nB,kBAAoB57oB,EAAO67oB,WAClG,GATqBp9nB,EAUrB,YAGG,QACAsB,EAHJ/X,EAEI,EAFJA,MACAmX,EACI,EADJA,WAGMnK,EAA+B,UAAvBhN,EAAMgP,QAAQC,KACtB6koB,EAAkB9moB,EAAQ,sBAAwB,2BAClD8b,EAAkB9b,EAAQ,sBAAwB,4BAClD0noB,EAAkB1noB,EAAQ,sBAAwB,4BAClDc,EAAqBd,EAAQ,sBAAwB,4BAC3D,OAAOtM,EAAAA,EAAAA,IAAQ,GACbvO,SAAU,WACV22B,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ2loB,YAAY5/iB,GAAKjsE,EAClE8rnB,qBAAsB50oB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,aACjDswnB,sBAAuB70oB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,aAClD9L,WAAYzY,EAAMwV,YAAYrd,OAAO,mBAAoB,CACvDqb,SAAUxT,EAAMwV,YAAYhC,SAASE,QACrCP,OAAQnT,EAAMwV,YAAYrC,OAAOE,UAEnC,UAAW,CACTyV,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ2loB,YAAYG,QAAUJ,EAEvE,uBAAwB,CACtB5rnB,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ2loB,YAAY5/iB,GAAKjsE,MAbzD,sBAgBPqgnB,GAAAA,SAA+B,CACnCrgnB,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ2loB,YAAY5/iB,GAAKjsE,KAjBvD,sBAmBPqgnB,GAAAA,UAAgC,CACpCrgnB,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ2loB,YAAYI,WAAajnoB,IApB/D,IAsBXqJ,EAAWy8nB,mBAAZ,GACD,UAAW,CACTnsnB,aAAc,aAAF,OAA4F,OAA5E1P,GAAY/X,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAS,iBAAsB,EAASyH,EAASlJ,MACjI0d,KAAM,EACND,OAAQ,EAERkM,QAAS,KACTrmC,SAAU,WACVk6B,MAAO,EACP1H,UAAW,YACXlM,WAAYzY,EAAMwV,YAAYrd,OAAO,YAAa,CAChDqb,SAAUxT,EAAMwV,YAAYhC,SAASE,QACrCP,OAAQnT,EAAMwV,YAAYrC,OAAOE,UAEnCmvC,cAAe,UAdhB,sBAiBK2mlB,GAAAA,QAjBL,UAiB0C,CAGzCxknB,UAAW,6BApBZ,sBAsBKwknB,GAAAA,OAA6B,CACjC,oBAAqB,CACnBrhnB,mBAAoB9nB,EAAM2V,MAAQ3V,GAAOgP,QAAQhoB,MAAM6nB,SAxB1D,UA2BD,WAAY,CACV4Y,aAAc,aAAF,OAAeznB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQzB,OAAOwmoB,oBAA/C,cAAwE/zoB,EAAM2V,KAAK9a,QAAQm5oB,eAA3F,KAA+GF,GAC1IvnnB,KAAM,EACND,OAAQ,EAERkM,QAAS,WACTrmC,SAAU,WACVk6B,MAAO,EACP5T,WAAYzY,EAAMwV,YAAYrd,OAAO,sBAAuB,CAC1Dqb,SAAUxT,EAAMwV,YAAYhC,SAASE,UAEvC8uC,cAAe,UAtChB,iCAyCgB2mlB,GAAAA,SAzChB,cAyCiDA,GAAAA,MAzCjD,YAyCsF,CACrF1hnB,aAAc,aAAF,QAAgBznB,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK2e,YA1C/D,sBA4CKk8nB,GAAAA,SA5CL,WA4C4C,CAC3C8K,kBAAmB,WA7CpB,GA+CA98nB,EAAWyznB,gBAAkB,CAC9BphnB,YAAa,IACZrS,EAAWkynB,cAAgB,CAC5B//mB,aAAc,IACbnS,EAAWqvU,YAAa9lV,EAAAA,EAAAA,GAAS,CAClCkmB,QAAS,iBACY,UAApBzP,EAAW3hB,MAAoB,CAChC6zB,WAAY,GACZE,cAAe,GACdpS,EAAWq4nB,aAAe,CAC3BnmnB,WAAY,GACZE,cAAe,KAElB,IACKyrnB,IAAmBv+nB,EAAAA,GAAAA,IAAO09nB,GAAgB,CAC9CpzpB,KAAM,iBACN+1B,KAAM,QACNI,kBAAmBk9nB,IAHI39nB,EAItB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb2oB,WAAY,GACZC,aAAc,GACdC,cAAe,EACfC,YAAa,KACXxpB,EAAM2V,MAAQ,CAChB,qBAAsB,CACpBs/nB,gBAAwC,UAAvBj1oB,EAAMgP,QAAQC,KAAmB,KAAO,4BACzDqjoB,oBAA4C,UAAvBtyoB,EAAMgP,QAAQC,KAAmB,KAAO,OAC7DimoB,WAAmC,UAAvBl1oB,EAAMgP,QAAQC,KAAmB,KAAO,OACpD2loB,oBAAqB,UACrBC,qBAAsB,YAEvB70oB,EAAM2V,OAAN,SACD,qBAAsB,CACpBi/nB,oBAAqB,UACrBC,qBAAsB,YAEvB70oB,EAAMm1oB,uBAAuB,QAAU,CACtC,qBAAsB,CACpBF,gBAAiB,4BACjB3C,oBAAqB,OACrB4C,WAAY,UAGK,UAApB/9nB,EAAW3hB,MAAoB,CAChC6zB,WAAY,GACZE,cAAe,GACdpS,EAAWq4nB,aAAe,CAC3BnmnB,WAAY,GACZE,cAAe,IACdpS,EAAWqvU,WAAa,CACzBn9T,WAAY,EACZE,cAAe,EACfC,YAAa,EACbF,aAAc,GACbnS,EAAWyznB,gBAAkB,CAC9BphnB,YAAa,GACZrS,EAAWkynB,cAAgB,CAC5B//mB,aAAc,GACbnS,EAAWq4nB,aAAmC,UAApBr4nB,EAAW3hB,MAAoB,CAC1D6zB,WAAY,EACZE,cAAe,GA7Cd,IA+CGornB,GAA2B7zoB,EAAAA,YAAiB,SAAqBgY,EAASlgB,GAC9E,IAAI+F,EAAMuglB,EAAa7yb,EAAOgof,EACxB5hpB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,mBAER,EAUM0R,EATFwuB,WAAAA,OADJ,MACiB,CAAC,EADlB,EAEqBqznB,EAQf7hpB,EARF0slB,gBAFJ,EAUM1slB,EAPFqsoB,UAAAA,OAHJ,WAUMrsoB,EALFmgpB,eAAAA,OALJ,MAKqB,QALrB,IAUMngpB,EAJF+zV,UAAAA,OANJ,SAOIz2T,EAGEt9B,EAHFs9B,UAPJ,EAUMt9B,EAFF8mB,MAAAA,OARJ,MAQY,CAAC,EARb,IAUM9mB,EADFzF,KAAAA,OATJ,MASW,OATX,EAWEmiB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCqsoB,UAAAA,EACA8T,eAAAA,EACApsT,UAAAA,EACAx5V,KAAAA,IAEIssB,EA9LkB,SAAAnC,GACxB,IACEmC,EAEEnC,EAFFmC,QAGIC,EAAQ,CACZhnB,KAAM,CAAC,QAFL4kB,EADFy8nB,kBAGoC,aACpCzxoB,MAAO,CAAC,UAEJoplB,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAOgvnB,GAA4BjvnB,GAC1E,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CAmLiB9xkB,CAAkBhnB,GAC5B2ipB,EAA6B,CACjC7ipB,KAAM,CACJ4kB,WAAAA,GAEFhV,MAAO,CACLgV,WAAAA,IAGEgokB,GAAgC,MAAbpvjB,EAAoBA,EAAYuknB,IAAuBzjoB,EAAAA,GAAAA,GAAuB,MAAbkf,EAAoBA,EAAYuknB,EAAqBc,GAA8BA,EACvK1/C,EAA0F,OAA9E/2lB,EAAqC,OAA7BuglB,EAAc3lkB,EAAMhnB,MAAgB2slB,EAAcj+jB,EAAWw9jB,MAAgB9/kB,EAAO81oB,GACxGD,EAAgG,OAAnFnof,EAAwC,OAA/Bgof,EAAe96nB,EAAMpX,OAAiBkyoB,EAAepznB,EAAWuynB,OAAiBnnf,EAAQ2of,GACrH,OAAoBl7nB,EAAAA,GAAAA,KAAK04nB,IAAW9xoB,EAAAA,EAAAA,GAAS,CAC3C6Y,MAAO,CACLhnB,KAAMmjmB,EACNvzlB,MAAOqyoB,GAETr1D,gBAAiBA,EACjB2/C,UAAWA,EACX8T,eAAgBA,EAChBpsT,UAAWA,EACX5tV,IAAKA,EACL5L,KAAMA,GACLmiB,EAAO,CACRmK,QAASA,IAEZ,IAkMDq7nB,GAAY56nB,QAAU,QACtB,ICtaIk1nB,GDsaJ,MCraMlioB,GAAY,CAAC,WAAY,UAAW,YAAa,QAAS,WAK1DsooB,IAAqB5+nB,EAAAA,GAAAA,IAAO,WAAPA,CAAmB,CAC5CkW,UAAW,OACXx6B,SAAU,WACVm6B,OAAQ,EACRD,MAAO,EACPD,KAAM,EACNG,KAAM,EACN5F,OAAQ,EACRC,QAAS,QACT47B,cAAe,OACfj+B,aAAc,UACd4kkB,YAAa,QACb/yb,YAAa,EACbprI,SAAU,SACVrC,SAAU,OAEN2snB,IAAuB7+nB,EAAAA,GAAAA,IAAO,SAAPA,EAAiB,gBAC5CU,EAD4C,EAC5CA,WACAnX,EAF4C,EAE5CA,MAF4C,OAGxCU,EAAAA,EAAAA,GAAS,CACb2gE,MAAO,QAEP/oD,MAAO,OAEP0S,SAAU,WACR7T,EAAWo+nB,WAAa,CAC1B3unB,QAAS,EACThsB,WAAY,OAEZ6d,WAAYzY,EAAMwV,YAAYrd,OAAO,QAAS,CAC5Cqb,SAAU,IACVL,OAAQnT,EAAMwV,YAAYrC,OAAOE,WAElC8D,EAAWo+nB,YAAa70oB,EAAAA,EAAAA,GAAS,CAClC6X,QAAS,QAETqO,QAAS,EACTzS,OAAQ,GAER9C,SAAU,SACV6Z,WAAY,SACZ5C,SAAU,IACV7P,WAAYzY,EAAMwV,YAAYrd,OAAO,YAAa,CAChDqb,SAAU,GACVL,OAAQnT,EAAMwV,YAAYrC,OAAOE,UAEnC8X,WAAY,SACZ,WAAY,CACV3B,YAAa,EACbF,aAAc,EACd/Q,QAAS,eACT1d,QAAS,EACTqwB,WAAY,YAEb/T,EAAWq+nB,SAAW,CACvBltnB,SAAU,OACV7P,WAAYzY,EAAMwV,YAAYrd,OAAO,YAAa,CAChDqb,SAAU,IACVL,OAAQnT,EAAMwV,YAAYrC,OAAOE,QACjCsB,MAAO,OA3CmC,ICtB9C,IAAM5H,GAAY,CAAC,aAAc,YAAa,iBAAkB,QAAS,YAAa,UAAW,QAAS,QA0BpG0ooB,IAAoBh/nB,EAAAA,GAAAA,IAAOu7nB,GAAe,CAC9C1zoB,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,mBACN+1B,KAAM,OACNI,kBAAmBy8nB,IAJKl9nB,EAKvB,YAGG,MAFJzW,EAEI,EAFJA,MACAmX,EACI,EADJA,WAEMwQ,EAAqC,UAAvB3nB,EAAMgP,QAAQC,KAAmB,sBAAwB,4BAC7E,OAAOvO,EAAAA,EAAAA,IAAQ,GACbvO,SAAU,WACVoyB,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,eAF7B,6BAGA2knB,GAAAA,gBAAwC,CACnDvhnB,aAAc3nB,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK2e,WAJrC,UAOb,wBAPa,8BAQEi8nB,GAAAA,gBAAwC,CACnDvhnB,YAAa3nB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQzB,OAAOwmoB,oBAA/C,YAA+EpsnB,MATnF,sBAYPuhnB,GAAAA,QAZO,aAY0BA,GAAAA,gBAAwC,CAC7EvhnB,aAAc3nB,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,KAC7DunJ,YAAa,KAdF,sBAgBP8ye,GAAAA,MAhBO,aAgBwBA,GAAAA,gBAAwC,CAC3EvhnB,aAAc3nB,EAAM2V,MAAQ3V,GAAOgP,QAAQhoB,MAAM6nB,QAjBtC,sBAmBPq6nB,GAAAA,SAnBO,aAmB2BA,GAAAA,gBAAwC,CAC9EvhnB,aAAc3nB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,WApBvC,GAsBZgK,EAAWyznB,gBAAkB,CAC9BphnB,YAAa,IACZrS,EAAWkynB,cAAgB,CAC5B//mB,aAAc,IACbnS,EAAWqvU,YAAa9lV,EAAAA,EAAAA,GAAS,CAClCkmB,QAAS,eACY,UAApBzP,EAAW3hB,MAAoB,CAChCoxB,QAAS,eAEZ,IACKyunB,IAAqB5+nB,EAAAA,GAAAA,KDIZ,SAAwBhkB,GACrC,IACIqN,EAGErN,EAHFqN,UACAT,EAEE5M,EAFF4M,MACAm2oB,EACE/ipB,EADF+ipB,QAEFrmoB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCwooB,EAAqB,MAATl2oB,GAA2B,KAAVA,EAC7B8X,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC+ipB,QAAAA,EACAD,UAAAA,IAEF,OAAoBz7nB,EAAAA,GAAAA,KAAKu7nB,IAAoB30oB,EAAAA,EAAAA,GAAS,CACpD,eAAe,EACfZ,UAAWA,EACXqX,WAAYA,GACXhI,EAAO,CACRzc,UAAuBonB,EAAAA,GAAAA,KAAKw7nB,GAAsB,CAChDn+nB,WAAYA,EACZzkB,SAAU6ipB,GAAyBz7nB,EAAAA,GAAAA,KAAK,OAAQ,CAC9CpnB,SAAU2M,IAEZ4voB,KAAUA,IAAqBn1nB,EAAAA,GAAAA,KAAK,OAAQ,CAC1Cha,UAAW,cACXpN,SAAU,gBAIjB,GChCiD,CAChD3R,KAAM,mBACN+1B,KAAM,iBACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAO09oB,cAA1B,GAHMj/nB,EAIxB,YAEG,IADJzW,EACI,EADJA,MAEM2nB,EAAqC,UAAvB3nB,EAAMgP,QAAQC,KAAmB,sBAAwB,4BAC7E,MAAO,CACL0Y,YAAa3nB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQzB,OAAOwmoB,oBAA/C,YAA+EpsnB,EAE/F,IACKgunB,IAAqBl/nB,EAAAA,GAAAA,IAAO09nB,GAAgB,CAChDpzpB,KAAM,mBACN+1B,KAAM,QACNI,kBAAmBk9nB,IAHM39nB,EAIxB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbkmB,QAAS,gBACP5mB,EAAM2V,MAAQ,CAChB,qBAAsB,CACpBs/nB,gBAAwC,UAAvBj1oB,EAAMgP,QAAQC,KAAmB,KAAO,4BACzDqjoB,oBAA4C,UAAvBtyoB,EAAMgP,QAAQC,KAAmB,KAAO,OAC7DimoB,WAAmC,UAAvBl1oB,EAAMgP,QAAQC,KAAmB,KAAO,OACpDsV,aAAc,YAEfvkB,EAAM2V,OAAN,SACD,qBAAsB,CACpB4O,aAAc,YAEfvkB,EAAMm1oB,uBAAuB,QAAU,CACtC,qBAAsB,CACpBF,gBAAiB,4BACjB3C,oBAAqB,OACrB4C,WAAY,UAGK,UAApB/9nB,EAAW3hB,MAAoB,CAChCoxB,QAAS,cACRzP,EAAWqvU,WAAa,CACzB5/T,QAAS,GACRzP,EAAWyznB,gBAAkB,CAC9BphnB,YAAa,GACZrS,EAAWkynB,cAAgB,CAC5B//mB,aAAc,GA9Bb,IAgCGssnB,GAA6B90oB,EAAAA,YAAiB,SAAuBgY,EAASlgB,GAClF,IAAI+F,EAAMuglB,EAAa7yb,EAAOgof,EAAcwB,EACtCpjpB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,qBAER,EASM0R,EARFwuB,WAAAA,OADJ,MACiB,CAAC,EADlB,IASMxuB,EAPFqsoB,UAAAA,OAFJ,WASMrsoB,EANFmgpB,eAAAA,OAHJ,MAGqB,QAHrB,EAIIvzoB,EAKE5M,EALF4M,MAJJ,EASM5M,EAJF+zV,UAAAA,OALJ,SAMIgvT,EAGE/ipB,EAHF+ipB,QANJ,EASM/ipB,EAFF8mB,MAAAA,OAPJ,MAOY,CAAC,EAPb,IASM9mB,EADFzF,KAAAA,OARJ,MAQW,OARX,EAUEmiB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCuM,EAvHkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAOIiykB,GAAkB/xkB,EAAAA,GAAAA,GALV,CACZjnB,KAAM,CAAC,QACPmjpB,eAAgB,CAAC,kBACjBvzoB,MAAO,CAAC,UAEoCmmoB,GAA8BhvnB,GAC5E,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CA4GiB9xkB,CAAkBhnB,GAC5B88oB,EAAiBT,KACjBoE,EAAMxC,GAAiB,CAC3Bj+oB,MAAAA,EACA88oB,eAAAA,EACAoB,OAAQ,CAAC,cAELx5nB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAO4ioB,EAAI5ioB,OAAS,UACpBnD,SAAU+loB,EAAI/loB,SACdnmB,MAAOkspB,EAAIlspB,MACXwoC,QAAS0jnB,EAAI1jnB,QACb6hnB,YAAa9B,EACbzQ,UAAAA,EACA0Q,YAAa0D,EAAI1D,YACjBhpT,UAAAA,EACAhxV,KAAM09oB,EAAI19oB,KACVxI,KAAAA,IAEI0omB,EAA0F,OAA9E/2lB,EAAqC,OAA7BuglB,EAAc3lkB,EAAMhnB,MAAgB2slB,EAAcj+jB,EAAWw9jB,MAAgB9/kB,EAAO82oB,GACxGjB,EAAgG,OAAnFnof,EAAwC,OAA/Bgof,EAAe96nB,EAAMpX,OAAiBkyoB,EAAepznB,EAAWuynB,OAAiBnnf,EAAQspf,GACrH,OAAoB77nB,EAAAA,GAAAA,KAAK04nB,IAAW9xoB,EAAAA,EAAAA,GAAS,CAC3C6Y,MAAO,CACLhnB,KAAMmjmB,EACNvzlB,MAAOqyoB,GAETzB,aAAc,SAAA1inB,GAAK,OAAiBvW,EAAAA,GAAAA,KAAKu7nB,GAAoB,CAC3Dl+nB,WAAYA,EACZrX,UAAWwZ,EAAQo8nB,eACnBr2oB,MAAgB,MAATA,GAA2B,KAAVA,GAAgB6zoB,EAAIxjnB,SAAWmmnB,IAAoBA,GAA+Bn8nB,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CAC9HpO,SAAU,CAAC2M,EAAO,SAAU,QACxBA,EACNm2oB,QAA4B,qBAAZA,EAA0BA,EAAU5uhB,QAAQv2F,EAAMu6mB,gBAAkBv6mB,EAAMylnB,QAAUzlnB,EAAMb,UANzF,EAQnBsvmB,UAAWA,EACX8T,eAAgBA,EAChBpsT,UAAWA,EACX5tV,IAAKA,EACL5L,KAAMA,GACLmiB,EAAO,CACRmK,SAAS5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAAS,CAC7Bo8nB,eAAgB,SAGrB,IAuKDE,GAAc77nB,QAAU,QACxB,UCzVO,SAASg8nB,GAA2Bj/nB,GACzC,OAAOC,EAAAA,GAAAA,GAAqB,eAAgBD,EAC7C,CACD,IACA,IADyBE,EAAAA,GAAAA,GAAuB,eAAgB,CAAC,OAAQ,iBAAkB,UAAW,WAAY,QAAS,SAAU,WAAY,aCH3IjK,GAAY,CAAC,WAAY,YAAa,QAAS,YAAa,WAAY,QAAS,SAAU,UAAW,YA4B/FipoB,IAAgBv/nB,EAAAA,GAAAA,IAAO,QAAS,CAC3C11B,KAAM,eACN+1B,KAAM,OACNI,kBAAmB,WAEhBlf,GAAW,IADZmf,EACY,EADZA,WAEA,OAAOzW,EAAAA,EAAAA,GAAS,CAAC,EAAG1I,EAAOzF,KAA2B,cAArB4kB,EAAW7G,OAAyBtY,EAAOi+oB,eAAgB9+nB,EAAW2+nB,QAAU99oB,EAAO89oB,OACzH,GAP0Br/nB,EAQ1B,kBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb4P,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK4e,WACzClN,EAAMmR,WAAWwB,OAFN,GAGZ/X,WAAY,WACZgsB,QAAS,EACTz0B,SAAU,aALE,sBAMN+jpB,GAAAA,SAA6B,CACjC5loB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQmI,EAAW7G,OAAOzB,QAP7C,sBASNqnoB,GAAAA,UAA8B,CAClC5loB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK6e,YAVhC,sBAYN+ooB,GAAAA,OAA2B,CAC/B5loB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQhoB,MAAM6nB,OAbjC,GAHX,IAmBGsnoB,IAAoB1/nB,EAAAA,GAAAA,IAAO,OAAQ,CACvC11B,KAAM,eACN+1B,KAAM,WACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOo+oB,QAA1B,GAHK3/nB,EAIvB,gBACDzW,EADC,EACDA,MADC,8BAGKk2oB,GAAAA,OAA2B,CAC/B5loB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQhoB,MAAM6nB,MAJ5C,IAqGH,GA9F+B/N,EAAAA,YAAiB,SAAmBgY,EAASlgB,GAC1E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,iBAGJ2R,EAGED,EAHFC,SACAoN,EAEErN,EAFFqN,UAFJ,EAIMrN,EADFsmB,UAAAA,OAHJ,MAGgB,QAHhB,EAKE5J,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAEzCmmoB,EAAMxC,GAAiB,CAC3Bj+oB,MAAAA,EACA88oB,eAHqBT,KAIrB6B,OAAQ,CAAC,QAAS,WAAY,UAAW,WAAY,QAAS,YAE1Dx5nB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAO4ioB,EAAI5ioB,OAAS,UACpByI,UAAAA,EACA5L,SAAU+loB,EAAI/loB,SACdnmB,MAAOkspB,EAAIlspB,MACX8upB,OAAQ5C,EAAI4C,OACZtmnB,QAAS0jnB,EAAI1jnB,QACbE,SAAUwjnB,EAAIxjnB,WAEVpW,EAhFkB,SAAAnC,GACxB,IACEmC,EAOEnC,EAPFmC,QACAhJ,EAME6G,EANF7G,MACAkf,EAKErY,EALFqY,QACAriB,EAIEgK,EAJFhK,SACAnmB,EAGEmwB,EAHFnwB,MACA8upB,EAEE3+nB,EAFF2+nB,OACApmnB,EACEvY,EADFuY,SAEInW,EAAQ,CACZhnB,KAAM,CAAC,OAAD,gBAAiBqkB,EAAAA,GAAAA,GAAWtG,IAAUnD,GAAY,WAAYnmB,GAAS,QAAS8upB,GAAU,SAAUtmnB,GAAW,UAAWE,GAAY,YAC5I0mnB,SAAU,CAAC,WAAYpvpB,GAAS,UAElC,OAAOwyB,EAAAA,GAAAA,GAAeD,EAAOw8nB,GAA4Bz8nB,EAC1D,CAiEiBG,CAAkBtC,GAClC,OAAoBuC,EAAAA,GAAAA,MAAMs8nB,IAAet1oB,EAAAA,EAAAA,GAAS,CAChDb,GAAIkZ,EACJ5B,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,EAAO,CACRzc,SAAU,CAACA,EAAUwgpB,EAAIxjnB,WAAyBhW,EAAAA,GAAAA,MAAMy8nB,GAAmB,CACzEh/nB,WAAYA,EACZ,eAAe,EACfrX,UAAWwZ,EAAQ88nB,SACnB1jpB,SAAU,CAAC,SAAU,UAG1B,IC1GM,SAAS2jpB,GAA4Bv/nB,GAC1C,OAAOC,EAAAA,GAAAA,GAAqB,gBAAiBD,EAC9C,EACyBE,EAAAA,GAAAA,GAAuB,gBAAiB,CAAC,OAAQ,UAAW,WAAY,QAAS,WAAY,WAAY,cAAe,YAAa,SAAU,WAAY,WAAY,SAAU,aAA3M,ICHMjK,GAAY,CAAC,mBAAoB,SAAU,SAAU,UAAW,aA6BhEupoB,IAAiB7/nB,EAAAA,GAAAA,IAAO8/nB,GAAW,CACvCj4oB,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,gBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,EAAC,wBACC++nB,GAAAA,UAA8Bl+oB,EAAOo+oB,UAC3Cp+oB,EAAOzF,KAAM4kB,EAAWk6nB,aAAer5oB,EAAOq5oB,YAAiC,UAApBl6nB,EAAW3hB,MAAoBwC,EAAOw5oB,UAAWr6nB,EAAW4rS,QAAU/qT,EAAO+qT,QAAS5rS,EAAWq/nB,kBAAoBx+oB,EAAOy+oB,SAAUz+oB,EAAOmf,EAAW0J,SACvN,GAXoBpK,EAYpB,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb6X,QAAS,QACTsnkB,gBAAiB,WACjB10jB,WAAY,SACZH,SAAU,SACVC,aAAc,WACd3C,SAAU,QACTnR,EAAWk6nB,aAAe,CAC3Bl/oB,SAAU,WACVo6B,KAAM,EACNH,IAAK,EAELzH,UAAW,+BACU,UAApBxN,EAAW3hB,MAAoB,CAEhCmvB,UAAW,+BACVxN,EAAW4rS,QAAU,CACtBp+R,UAAW,mCACXk7jB,gBAAiB,WACjBv3jB,SAAU,SACRnR,EAAWq/nB,kBAAoB,CACjC/9nB,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,QAAS,YAAa,aAAc,CACxEqb,SAAUxT,EAAMwV,YAAYhC,SAASE,QACrCP,OAAQnT,EAAMwV,YAAYrC,OAAOE,WAEX,WAAvB8D,EAAW0J,UAAwBngB,EAAAA,EAAAA,GAAS,CAK7CxF,OAAQ,EACRsnD,cAAe,OACf79B,UAAW,iCACX2D,SAAU,qBACW,UAApBnR,EAAW3hB,MAAoB,CAChCmvB,UAAW,kCACVxN,EAAW4rS,SAAUriT,EAAAA,EAAAA,GAAS,CAC/B2X,WAAY,OACZmqC,cAAe,OACf79B,UAAW,mCACX2D,SAAU,qBACW,UAApBnR,EAAW3hB,MAAoB,CAChCmvB,UAAW,sCACe,aAAvBxN,EAAW0J,UAA0BngB,EAAAA,EAAAA,GAAS,CAEjDxF,OAAQ,EACRsnD,cAAe,OACf79B,UAAW,iCACX2D,SAAU,qBACW,UAApBnR,EAAW3hB,MAAoB,CAChCmvB,UAAW,iCACVxN,EAAW4rS,QAAU,CACtB1qS,WAAY,OACZmqC,cAAe,OAGfl6B,SAAU,oBACV3D,UAAW,sCA5DV,IAwKH,GA1GgC7jB,EAAAA,YAAiB,SAAoBgY,EAASlgB,GAC5E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1B31B,KAAM,gBACN0R,MAAOqmB,IAET,EAIMrmB,EAHF+jpB,iBAAAA,OADJ,SAEYE,EAENjkpB,EAFFswT,OACAjjT,EACErN,EADFqN,UAEFqP,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCwioB,EAAiBT,KACnB/rV,EAAS2zV,EACS,qBAAX3zV,GAA0BwsV,IACnCxsV,EAASwsV,EAAeuG,QAAUvG,EAAe//mB,SAAW+/mB,EAAe+B,cAE7E,IAAM4B,EAAMxC,GAAiB,CAC3Bj+oB,MAAAA,EACA88oB,eAAAA,EACAoB,OAAQ,CAAC,OAAQ,UAAW,cAExBx5nB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC+jpB,iBAAAA,EACAnF,YAAa9B,EACbxsV,OAAAA,EACAvtT,KAAM09oB,EAAI19oB,KACVqrB,QAASqynB,EAAIrynB,QACb6O,SAAUwjnB,EAAIxjnB,WAEVpW,EAxHkB,SAAAnC,GACxB,IACEmC,EAOEnC,EAPFmC,QACA+3nB,EAMEl6nB,EANFk6nB,YACA77oB,EAKE2hB,EALF3hB,KACAutT,EAIE5rS,EAJF4rS,OAKIxpS,EAAQ,CACZhnB,KAAM,CAAC,OAAQ8+oB,GAAe,eAF5Bl6nB,EAHFq/nB,kBAKkE,WAAYzzV,GAAU,SAAmB,UAATvtT,GAAoB,YAFpH2hB,EAFF0J,SAKAu1nB,SAAU,CAHRj/nB,EADFuY,UAIuB,aAEnB67jB,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAO88nB,GAA6B/8nB,GAC3E,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CAwGiB9xkB,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKw8nB,IAAgB51oB,EAAAA,EAAAA,GAAS,CAChD,cAAeqiT,EACf5rS,WAAYA,EACZve,IAAKA,EACLkH,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,IAC7BqP,EAAO,CACRmK,QAASA,IAEZ,eC7IM,SAASq9nB,GAA6B7/nB,GAC3C,OAAOC,EAAAA,GAAAA,GAAqB,iBAAkBD,EAC/C,EAC0BE,EAAAA,GAAAA,GAAuB,iBAAkB,CAAC,OAAQ,aAAc,eAAgB,cAAe,YAAa,aAAvI,ICHMjK,GAAY,CAAC,WAAY,YAAa,QAAS,YAAa,WAAY,QAAS,UAAW,YAAa,cAAe,SAAU,WAAY,OAAQ,WAwBtJ6poB,IAAkBngoB,EAAAA,GAAAA,IAAO,MAAO,CACpC11B,KAAM,iBACN+1B,KAAM,OACNI,kBAAmB,WAEhBlf,GAAW,IADZmf,EACY,EADZA,WAEA,OAAOzW,EAAAA,EAAAA,GAAS,CAAC,EAAG1I,EAAOzF,KAAMyF,EAAO,SAAD,QAAU4e,EAAAA,GAAAA,GAAWO,EAAWwP,UAAYxP,EAAW2nnB,WAAa9moB,EAAO8moB,UACnH,GAPqBronB,EAQrB,gBACDU,EADC,EACDA,WADC,OAEGzW,EAAAA,EAAAA,GAAS,CACb6X,QAAS,cACT8S,cAAe,SACfl5B,SAAU,WAEVw2B,SAAU,EACV/B,QAAS,EACTD,OAAQ,EACRW,OAAQ,EACRyhkB,cAAe,OACQ,WAAtB5xkB,EAAWwP,QAAuB,CACnC0D,UAAW,GACXE,aAAc,GACS,UAAtBpT,EAAWwP,QAAsB,CAClC0D,UAAW,EACXE,aAAc,GACbpT,EAAW2nnB,WAAa,CACzBxmnB,MAAO,QAnBN,IA6PH,GA/MiCxX,EAAAA,YAAiB,SAAqBgY,EAASlgB,GAC9E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,mBAGJ2R,EAaED,EAbFC,SACAoN,EAYErN,EAZFqN,UAFJ,EAcMrN,EAXF6d,MAAAA,OAHJ,MAGY,UAHZ,IAcM7d,EAVFsmB,UAAAA,OAJJ,MAIgB,MAJhB,IAcMtmB,EATF0a,SAAAA,OALJ,WAcM1a,EARFzL,MAAAA,OANJ,SAOa6vpB,EAOPpkpB,EAPF+8B,QAPJ,EAcM/8B,EANFqsoB,UAAAA,OARJ,WAcMrsoB,EALF+8oB,YAAAA,OATJ,WAcM/8oB,EAJFk0B,OAAAA,OAVJ,MAUa,OAVb,IAcMl0B,EAHFi9B,SAAAA,OAXJ,WAcMj9B,EAFF+C,KAAAA,OAZJ,MAYW,SAZX,IAcM/C,EADFouB,QAAAA,OAbJ,MAac,WAbd,EAeE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAyI,UAAAA,EACA5L,SAAAA,EACAnmB,MAAAA,EACA83oB,UAAAA,EACA0Q,YAAAA,EACA7onB,OAAAA,EACA+I,SAAAA,EACAl6B,KAAAA,EACAqrB,QAAAA,IAEIvH,EAlGkB,SAAAnC,GACxB,IACEmC,EAGEnC,EAHFmC,QACAqN,EAEExP,EAFFwP,OACAm4mB,EACE3nnB,EADF2nnB,UAEIvlnB,EAAQ,CACZhnB,KAAM,CAAC,OAAmB,SAAXo0B,GAAA,iBAA8B/P,EAAAA,GAAAA,GAAW+P,IAAWm4mB,GAAa,cAElF,OAAOtlnB,EAAAA,GAAAA,GAAeD,EAAOo9nB,GAA8Br9nB,EAC5D,CAwFiBG,CAAkBtC,GAClC,EAAwCrW,EAAAA,UAAe,WAGrD,IAAIg2oB,GAAsB,EAY1B,OAXIpkpB,GACFoO,EAAAA,SAAAA,QAAuBpO,GAAU,SAAAshC,GAC/B,IAAK+inB,EAAAA,GAAAA,GAAa/inB,EAAO,CAAC,QAAS,WAAnC,CAGA,IAAM7xB,GAAQ40oB,EAAAA,GAAAA,GAAa/inB,EAAO,CAAC,WAAaA,EAAMvhC,MAAM0P,MAAQ6xB,EAChE7xB,GAAwBA,EAAM1P,MXhG7Bm4oB,iBWiGHkM,GAAsB,EAHvB,CAKF,IAEIA,CACR,IAhBD,eAAOxF,EAAP,KAAqBiC,EAArB,KAiBA,EAA4BzyoB,EAAAA,UAAe,WAGzC,IAAIk2oB,GAAgB,EAWpB,OAVItkpB,GACFoO,EAAAA,SAAAA,QAAuBpO,GAAU,SAAAshC,IAC1B+inB,EAAAA,GAAAA,GAAa/inB,EAAO,CAAC,QAAS,YAG/Bk9mB,GAASl9mB,EAAMvhC,OAAO,KACxBukpB,GAAgB,EAEnB,IAEIA,CACR,IAfD,eAAOlB,EAAP,KAAemB,EAAf,KAgBA,EAAmCn2oB,EAAAA,UAAe,GAAlD,eAAOo2oB,EAAP,KAAqBpjI,EAArB,KACI3mgB,GAAY+poB,GACdpjI,GAAW,GAEb,IACIqjI,EADE3nnB,OAA8BlgC,IAApBunpB,GAAkC1poB,EAA6B+poB,EAAlBL,EAevDrre,EAAe1qK,EAAAA,SAAc,WACjC,MAAO,CACLwwoB,aAAAA,EACAiC,gBAAAA,EACAjjoB,MAAAA,EACAnD,SAAAA,EACAnmB,MAAAA,EACA8upB,OAAAA,EACAtmnB,QAAAA,EACAsvmB,UAAAA,EACA0Q,YAAAA,EACAh6oB,KAAAA,EACAwnB,OAAQ,WACN82f,GAAW,EACZ,EACDs/H,QAAS,WACP6D,GAAU,EACX,EACD9D,SAAU,WACR8D,GAAU,EACX,EACDl6nB,QAAS,WACP+2f,GAAW,EACZ,EACDqjI,eAAAA,EACAznnB,SAAAA,EACA7O,QAAAA,EAEH,GAAE,CAACywnB,EAAchhoB,EAAOnD,EAAUnmB,EAAO8upB,EAAQtmnB,EAASsvmB,EAAW0Q,EAAa2H,EAAgBznnB,EAAUl6B,EAAMqrB,IACnH,OAAoB/G,EAAAA,GAAAA,KAAKi1nB,GAAAA,SAA6B,CACpDlppB,MAAO2lL,EACP94K,UAAuBonB,EAAAA,GAAAA,KAAK88nB,IAAiBl2oB,EAAAA,EAAAA,GAAS,CACpDb,GAAIkZ,EACJ5B,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,EAAO,CACRzc,SAAUA,MAGf,IC5MM,SAAS0kpB,GAAgCtgoB,GAC9C,OAAOC,EAAAA,GAAAA,GAAqB,oBAAqBD,EAClD,CACD,ICHIm4nB,GDIJ,IAD8Bj4nB,EAAAA,GAAAA,GAAuB,oBAAqB,CAAC,OAAQ,QAAS,WAAY,YAAa,aAAc,YAAa,UAAW,SAAU,aCF/JjK,GAAY,CAAC,WAAY,YAAa,YAAa,WAAY,QAAS,SAAU,UAAW,SAAU,WAAY,WA4BnHsqoB,IAAqB5goB,EAAAA,GAAAA,IAAO,IAAK,CACrC11B,KAAM,oBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAM4kB,EAAW3hB,MAAQwC,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAW3hB,QAAU2hB,EAAWmgoB,WAAat/oB,EAAOs/oB,UAAWngoB,EAAW2+nB,QAAU99oB,EAAO89oB,OAC7J,GARwBr/nB,EASxB,kBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACb4P,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK4e,WACzClN,EAAMmR,WAAW2B,SAFN,GAGZ6Z,UAAW,OACXtC,UAAW,EACXC,YAAa,EACbC,aAAc,EACdC,WAAY,IAPA,sBAQN+snB,GAAAA,UAAmC,CACvCjnoB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQ1gB,KAAK6e,YAThC,sBAWNoqoB,GAAAA,OAAgC,CACpCjnoB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQhoB,MAAM6nB,OAZjC,GAcS,UAApBsI,EAAW3hB,MAAoB,CAChC60B,UAAW,GACVlT,EAAWmgoB,WAAa,CACzB9snB,WAAY,GACZF,YAAa,IArBZ,IA2HH,GApGoCxpB,EAAAA,YAAiB,SAAwBgY,EAASlgB,GACpF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,sBAGJ2R,EAGED,EAHFC,SACAoN,EAEErN,EAFFqN,UAFJ,EAIMrN,EADFsmB,UAAAA,OAHJ,MAGgB,IAHhB,EAKE5J,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAEzCmmoB,EAAMxC,GAAiB,CAC3Bj+oB,MAAAA,EACA88oB,eAHqBT,KAIrB6B,OAAQ,CAAC,UAAW,OAAQ,WAAY,QAAS,SAAU,UAAW,cAElEx5nB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACAu+nB,UAA2B,WAAhBpE,EAAIrynB,SAAwC,aAAhBqynB,EAAIrynB,QAC3CA,QAASqynB,EAAIrynB,QACbrrB,KAAM09oB,EAAI19oB,KACV2X,SAAU+loB,EAAI/loB,SACdnmB,MAAOkspB,EAAIlspB,MACX8upB,OAAQ5C,EAAI4C,OACZtmnB,QAAS0jnB,EAAI1jnB,QACbE,SAAUwjnB,EAAIxjnB,WAEVpW,EA5EkB,SAAAnC,GACxB,IACEmC,EAQEnC,EARFmC,QACAg+nB,EAOEngoB,EAPFmgoB,UACA9hpB,EAME2hB,EANF3hB,KACA2X,EAKEgK,EALFhK,SACAnmB,EAIEmwB,EAJFnwB,MACA8upB,EAGE3+nB,EAHF2+nB,OACAtmnB,EAEErY,EAFFqY,QACAE,EACEvY,EADFuY,SAEInW,EAAQ,CACZhnB,KAAM,CAAC,OAAQ4a,GAAY,WAAYnmB,GAAS,QAASwO,GAAQ,OAAJ,QAAWohB,EAAAA,GAAAA,GAAWphB,IAAS8hpB,GAAa,YAAa9nnB,GAAW,UAAWsmnB,GAAU,SAAUpmnB,GAAY,aAE9K,OAAOlW,EAAAA,GAAAA,GAAeD,EAAO69nB,GAAiC99nB,EAC/D,CA6DiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKu9nB,IAAoB32oB,EAAAA,EAAAA,GAAS,CACpDb,GAAIkZ,EACJ5B,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,EAAO,CACRzc,SAAuB,MAAbA,EACVu8oB,KAAUA,IAAqBn1nB,EAAAA,GAAAA,KAAK,OAAQ,CAC1Cha,UAAW,cACXpN,SAAU,YACNA,IAET,ICtGM,SAAS8kpB,GAA8B1goB,GAC5C,OAAOC,EAAAA,GAAAA,GAAqB,kBAAmBD,EAChD,CACD,IACA,IAD4BE,EAAAA,GAAAA,GAAuB,kBAAmB,CAAC,OAAQ,SAAU,WAAY,SAAU,WAAY,WAAY,WAAY,OAAQ,WAAY,aAAc,eAAgB,eAAgB,gBCH/MjK,GAAY,CAAC,YAAa,WAAY,gBAAiB,WAAY,WAyB5D0qoB,GAA2B,SAAC,GAAD,MACtCtgoB,EADsC,EACtCA,WACAnX,EAFsC,EAEtCA,MAFsC,OAGlCU,EAAAA,EAAAA,IAAQ,GACZsolB,cAAe,OAEfC,iBAAkB,OAIlB5wkB,WAAY,OACZkM,aAAc,EAEdhoB,OAAQ,UACR,WAAWmE,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAM2V,KAAO,CACnCmT,gBAAiB,QAAF,OAAU9oB,EAAM2V,KAAK3G,QAAQzB,OAAOwmoB,oBAApC,aACb,CACFjrnB,gBAAwC,UAAvB9oB,EAAMgP,QAAQC,KAAmB,sBAAwB,6BACzE,CACDsV,aAAc,IAIhB,gBAAiB,CACfhM,QAAS,UArBC,sBAuBNm/nB,GAAAA,UAAiC,CACrCn7oB,OAAQ,aAxBE,UA0BZ,cAAe,CACb4X,OAAQ,UA3BE,UA6BZ,uDAAwD,CACtD2U,iBAAkB9oB,EAAM2V,MAAQ3V,GAAOgP,QAAQ3B,WAAWC,SA9BhD,UAiCZ,MAAO,CACLgc,aAAc,GACdX,SAAU,KAnCA,GAqCY,WAAvBxR,EAAW0J,SAAwB,CACpC,MAAO,CACLyI,aAAc,KAEQ,aAAvBnS,EAAW0J,SAA0B,CACtC0D,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,aAC1C,UAAW,CACTA,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,cAG5C,MAAO,CACL+E,aAAc,KAnDsB,EAsDlCqunB,IAAqBlhoB,EAAAA,GAAAA,IAAO,SAAU,CAC1C11B,KAAM,kBACN+1B,KAAM,SACNxY,kBAAmBiY,GAAAA,GACnBW,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOw/D,OAAQx/D,EAAOmf,EAAW0J,UAAlC,uBACC62nB,GAAAA,UAAiC1/oB,EAAOiwK,UAEjD,GAXwBxxJ,CAYxBghoB,IACUG,GAAyB,SAAC,GAAD,IACpCzgoB,EADoC,EACpCA,WACAnX,EAFoC,EAEpCA,MAFoC,OAGhCU,EAAAA,EAAAA,IAAS,SAGbvO,SAAU,WACVk6B,MAAO,EACPD,IAAK,mBAELo2B,cAAe,OAEflyC,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOC,QAThC,YAUNiqoB,GAAAA,UAAiC,CACrCpnoB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,WAE7CgK,EAAWhR,MAAQ,CACpBwe,UAAW,kBACa,WAAvBxN,EAAW0J,SAAwB,CACpCwL,MAAO,GACiB,aAAvBlV,EAAW0J,SAA0B,CACtCwL,MAAO,GArB6B,EAuBhCwrnB,IAAmBphoB,EAAAA,GAAAA,IAAO,MAAO,CACrC11B,KAAM,kBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOoW,KAAM+I,EAAW0J,SAAW7oB,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAW0J,WAAa1J,EAAWhR,MAAQnO,EAAO8/oB,SACvH,GARsBrhoB,CAStBmhoB,IAoFH,GA/EuC92oB,EAAAA,YAAiB,SAA2BrO,EAAOmG,GACxF,IACIkH,EAKErN,EALFqN,UACAqN,EAIE1a,EAJF0a,SACA4qoB,EAGEtlpB,EAHFslpB,cACA3V,EAEE3voB,EAFF2voB,SAJJ,EAMM3voB,EADFouB,QAAAA,OALJ,MAKc,WALd,EAOE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC0a,SAAAA,EACA0T,QAAAA,IAEIvH,EAnIkB,SAAAnC,GACxB,IACEmC,EAKEnC,EALFmC,QACAuH,EAIE1J,EAJF0J,QACA1T,EAGEgK,EAHFhK,SACA86J,EAEE9wJ,EAFF8wJ,SACA9hK,EACEgR,EADFhR,KAEIoT,EAAQ,CACZi+C,OAAQ,CAAC,SAAU32C,EAAS1T,GAAY,WAAY86J,GAAY,YAChE75J,KAAM,CAAC,OAAD,eAAgBwI,EAAAA,GAAAA,GAAWiK,IAAY1a,GAAQ,WAAYgH,GAAY,aAE/E,OAAOqM,EAAAA,GAAAA,GAAeD,EAAOi+nB,GAA+Bl+nB,EAC7D,CAsHiBG,CAAkBtC,GAClC,OAAoBuC,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,EAAconB,EAAAA,GAAAA,KAAK69nB,IAAoBj3oB,EAAAA,EAAAA,GAAS,CACxDyW,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQk+C,OAAQ13D,GAChCqN,SAAUA,EACVvU,IAAKwpoB,GAAYxpoB,GAChBuW,IAAS1c,EAAMw1K,SAAW,MAAoBnuJ,EAAAA,GAAAA,KAAK+9nB,GAAkB,CACtEh4oB,GAAIk4oB,EACJ5goB,WAAYA,EACZrX,UAAWwZ,EAAQlL,SAGxB,IC3JM,SAAS4poB,GAAwBlhoB,GACtC,OAAOC,EAAAA,GAAAA,GAAqB,YAAaD,EAC1C,CACD,ICFIm4nB,GDGJ,IADsBj4nB,EAAAA,GAAAA,GAAuB,YAAa,CAAC,SAAU,WAAY,SAAU,WAAY,WAAY,WAAY,UAAW,OAAQ,WAAY,aAAc,eAAgB,eAAgB,gBCDtMjK,GAAY,CAAC,mBAAoB,aAAc,YAAa,YAAa,WAAY,YAAa,cAAe,eAAgB,WAAY,eAAgB,gBAAiB,WAAY,UAAW,YAAa,WAAY,OAAQ,SAAU,WAAY,UAAW,UAAW,SAAU,OAAQ,WAAY,cAAe,qBAAsB,WAAY,OAAQ,QAAS,WAkBlXkroB,IAAexhoB,EAAAA,GAAAA,IAAO,MAAO,CACjC11B,KAAM,YACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,yBAGC+goB,GAAAA,QAAyBlgpB,EAAOw/D,SAHjC,uBAKC0glB,GAAAA,QAAyBlgpB,EAAOmf,EAAW0J,WAL5C,uBAOCq3nB,GAAAA,UAA2BlgpB,EAAOiwK,UAE3C,GAhBkBxxJ,CAiBlBghoB,IAjBkB,uBAmBbS,GAAAA,QAAyB,CAC7B/joB,OAAQ,OAER5H,UAAW,WAEX0e,aAAc,WACdE,WAAY,SACZH,SAAU,YAGRmtnB,IAAa1hoB,EAAAA,GAAAA,IAAO,MAAO,CAC/B11B,KAAM,YACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOoW,KAAM+I,EAAW0J,SAAW7oB,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAW0J,WAAa1J,EAAWhR,MAAQnO,EAAO8/oB,SACvH,GARgBrhoB,CAShBmhoB,IACGQ,IAAoB3hoB,EAAAA,GAAAA,IAAO,QAAS,CACxCnY,kBAAmB,SAAA9Z,GAAI,OAAIgyB,EAAAA,GAAAA,IAAsBhyB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,YACN+1B,KAAM,cACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOqgpB,WAA1B,GAJK5hoB,CAKvB,CACD6V,OAAQ,EACRC,KAAM,EACNp6B,SAAU,WACV0I,QAAS,EACT2nD,cAAe,OACflqC,MAAO,OACPmU,UAAW,eAEb,SAAS6rnB,GAAe5woB,EAAGC,GACzB,MAAiB,kBAANA,GAAwB,OAANA,EACpBD,IAAMC,EAIRvW,OAAOsW,KAAOtW,OAAOuW,EAC7B,CACD,SAASJ,GAAQgR,GACf,OAAkB,MAAXA,GAAsC,kBAAZA,IAAyBA,EAAQruB,MACnE,CACD,ICpFIqupB,GAAcC,GDuGZC,GAA2B33oB,EAAAA,YAAiB,SAAqBrO,EAAOmG,GAC5E,IACwB85oB,EA4BlBjgpB,EA5BF,oBACcokZ,EA2BZpkZ,EA3BF,cACAw3gB,EA0BEx3gB,EA1BFw3gB,UACAyuI,EAyBEjmpB,EAzBFimpB,UACAhmpB,EAwBED,EAxBFC,SACAoN,EAuBErN,EAvBFqN,UACA64oB,EAsBElmpB,EAtBFkmpB,YACA5ynB,EAqBEtzB,EArBFszB,aACA5Y,EAoBE1a,EApBF0a,SACAyroB,EAmBEnmpB,EAnBFmmpB,aACAb,EAkBEtlpB,EAlBFslpB,cACUjF,EAiBRrgpB,EAjBF2voB,SACA7hT,EAgBE9tV,EAhBF8tV,QAbJ,EA6BM9tV,EAfFompB,UAAAA,OAdJ,MAcgB,CAAC,EAdjB,EAeI5we,EAcEx1K,EAdFw1K,SACAlnL,EAaE0R,EAbF1R,KACAi8B,EAYEvqB,EAZFuqB,OACAksJ,EAWEz2K,EAXFy2K,SACA24a,EAUEpvlB,EAVFovlB,QACA9kkB,EASEtqB,EATFsqB,QACA+kkB,EAQErvlB,EARFqvlB,OACMC,EAOJtvlB,EAPF0T,KACAuW,EAMEjqB,EANFiqB,SACAsuP,EAKEv4Q,EALFu4Q,YAxBJ,EA6BMv4Q,EAJFqmpB,mBAAAA,OAzBJ,MAyByB,CAAC,EAzB1B,EA0Bc//C,EAGRtmmB,EAHF01C,SACO65lB,EAELvvoB,EAFF5M,MA3BJ,EA6BM4M,EADFouB,QAAAA,OA5BJ,MA4Bc,WA5Bd,EA8BE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IAC/C,GAA+BgO,EAAAA,GAAAA,GAAc,CAC3CmV,WAAY8xmB,EACZ/2nB,QAAS8a,EACThlC,KAAM,WAHR,eAAO8E,EAAP,KAAc68oB,EAAd,KAKA,GAAkC3nnB,EAAAA,GAAAA,GAAc,CAC9CmV,WAAY6xjB,EACZ92kB,QAAS0toB,EACT53pB,KAAM,WAHR,eAAO6hmB,EAAP,KAAkBC,EAAlB,KAKMu/C,EAAWthoB,EAAAA,OAAa,MACxBi4oB,EAAaj4oB,EAAAA,OAAa,MAChC,EAAsCA,EAAAA,SAAe,MAArD,eAAOk4oB,EAAP,KAAoBC,EAApB,KAEWC,EACPp4oB,EAAAA,OAAyB,MAAZihlB,GADf3glB,QAEF,EAAkDN,EAAAA,WAAlD,gBAAOq4oB,GAAP,MAA0BC,GAA1B,MACM3tE,IAAYvwjB,EAAAA,GAAAA,GAAWtiB,EAAKk6oB,GAC5BuG,GAAmBv4oB,EAAAA,aAAkB,SAAAxO,GACzCympB,EAAW33oB,QAAU9O,EACjBA,GACF2mpB,EAAe3mpB,EAElB,GAAE,IACGgnpB,GAA+B,MAAfN,OAAsB,EAASA,EAAYjopB,WACjE+P,EAAAA,oBAA0B2qkB,IAAW,iBAAO,CAC1Cz9jB,MAAO,WACL+qoB,EAAW33oB,QAAQ4M,OACpB,EACD1b,KAAM8voB,EAAShhoB,QACfvb,MAAAA,EALmC,GAMjC,CAACA,IAGLib,EAAAA,WAAgB,WACV63oB,GAAe/1D,GAAao2D,IAAgBE,IAC9CE,GAAqBV,EAAY,KAAOY,GAAc70lB,aACtDs0lB,EAAW33oB,QAAQ4M,QAGtB,GAAE,CAACgroB,EAAaN,IAGjB53oB,EAAAA,WAAgB,WACVmpgB,GACF8uI,EAAW33oB,QAAQ4M,OAEtB,GAAE,CAACi8f,IACJnpgB,EAAAA,WAAgB,WACd,GAAKy/U,EAAL,CAGA,IAAMlhV,GAAQwb,EAAAA,GAAAA,GAAck+nB,EAAW33oB,SAASkrjB,eAAe/rO,GAC/D,GAAIlhV,EAAO,CACT,IAAM5W,EAAU,WACVsnD,eAAewpmB,aACjBR,EAAW33oB,QAAQ4M,OAEtB,EAED,OADA3O,EAAMnW,iBAAiB,QAAST,GACzB,WACL4W,EAAMlW,oBAAoB,QAASV,EACpC,CACF,CAZA,CAcF,GAAE,CAAC83V,IACJ,IAgHIhoU,GACAihoB,GAjHE7lnB,GAAS,SAACxtB,EAAMzd,GAChByd,EACE27kB,GACFA,EAAOp5lB,GAEAm5lB,GACTA,EAAQn5lB,GAELwwpB,IACHE,GAAqBV,EAAY,KAAOY,GAAc70lB,aACtDo+hB,EAAa18kB,GAEhB,EAcKunoB,GAAgB5soB,EAAAA,SAAAA,QAAuBpO,GAcvC+mpB,GAAkB,SAAAzlnB,GAAK,OAAI,SAAAtrC,GAC/B,IAAI8nC,EAGJ,GAAK9nC,EAAMy+D,cAAc0mF,aAAa,YAAtC,CAGA,GAAIo6B,EAAU,CACZz3I,EAAWhkC,MAAMC,QAAQ5G,GAASA,EAAM6G,QAAU,GAClD,IAAM0zI,EAAYv6I,EAAMkD,QAAQirC,EAAMvhC,MAAM5M,QACzB,IAAfu6I,EACF5vG,EAASzoC,KAAKisC,EAAMvhC,MAAM5M,OAE1B2qC,EAASxnC,OAAOo3I,EAAW,EAE9B,MACC5vG,EAAWwD,EAAMvhC,MAAM5M,MAKzB,GAHImuC,EAAMvhC,MAAMwyK,SACdjxI,EAAMvhC,MAAMwyK,QAAQv8K,GAElB7C,IAAU2qC,IACZkymB,EAAclymB,GACV04I,GAAU,CAKZ,IAAMojV,EAAc5jgB,EAAM4jgB,aAAe5jgB,EACnCgxpB,EAAc,IAAIptJ,EAAYt9d,YAAYs9d,EAAYt/f,KAAMs/f,GAClE3mgB,OAAOC,eAAe8zpB,EAAa,SAAU,CAC3C5zpB,UAAU,EACVD,MAAO,CACLA,MAAO2qC,EACPzvC,KAAAA,KAGJmoL,EAASwwe,EAAa1lnB,EACvB,CAEEi0I,GACHt0I,IAAO,EAAOjrC,EAnCf,CAqCF,CA3C4B,EAwDvByd,GAAuB,OAAhB6yoB,GAAwBp2D,SAe9BzzkB,EAAM,gBAGb,IAAMwqoB,GAAkB,GACpBC,IAAiB,GAIjB1I,GAAS,CACXrrpB,MAAAA,KACI+ypB,KACA5tY,EACFzyP,GAAUyyP,EAAYnlR,GAEtB+zpB,IAAiB,GAGrB,IAAM/rmB,GAAQ6/lB,GAAchipB,KAAI,SAAAsoC,GAC9B,IAAmBlzB,EAAAA,eAAqBkzB,GACtC,OAAO,KAOT,IAAIpmB,EACJ,GAAIq6J,EAAU,CACZ,IAAKz7K,MAAMC,QAAQ5G,GACjB,MAAM,IAAI3D,OAAkJwuB,EAAAA,GAAAA,GAAuB,KAErL9C,EAAW/nB,EAAMi0D,MAAK,SAAA/tC,GAAC,OAAIusoB,GAAevsoB,EAAGioB,EAAMvhC,MAAM5M,MAAlC,MACP+zpB,IACdD,GAAgB5xpB,KAAKisC,EAAMvhC,MAAMC,SAEpC,MACCkb,EAAW0qoB,GAAezypB,EAAOmuC,EAAMvhC,MAAM5M,SAC7B+zpB,KACdJ,GAAgBxlnB,EAAMvhC,MAAMC,UAMhC,OAHIkb,IACW,EAEK9M,EAAAA,aAAmBkzB,EAAO,CAC5C,gBAAiBpmB,EAAW,OAAS,QACrCq3J,QAASw0e,GAAgBzlnB,GACzBuxI,QAAS,SAAA78K,GACW,MAAdA,EAAMuB,KAIRvB,EAAMo7D,iBAEJ9vB,EAAMvhC,MAAM8yK,SACdvxI,EAAMvhC,MAAM8yK,QAAQ78K,EAEvB,EACDmxB,KAAM,SACNjM,SAAAA,EACA/nB,WAAOyJ,EAEP,aAAc0kC,EAAMvhC,MAAM5M,OAE7B,IAWG+zpB,KAGErhoB,GAFA0vJ,EAC6B,IAA3B0xe,GAAgBrxpB,OACR,KAEAqxpB,GAAgB7tpB,QAAO,SAACK,EAAQ6nC,EAAOlrC,GAK/C,OAJAqD,EAAOpE,KAAKisC,GACRlrC,EAAQ6wpB,GAAgBrxpB,OAAS,GACnC6D,EAAOpE,KAAK,MAEPoE,CACR,GAAE,IAGKqtpB,IAKd,IAIIrxmB,GAJA0xmB,GAAeV,IACdT,GAAaQ,GAAoBF,IACpCa,GAAeP,GAAc70lB,aAI7Btc,GAD0B,qBAAjB4wjB,EACEA,EAEA5rlB,EAAW,KAAO,EAE/B,IAAM2soB,GAAWhB,EAAmBpzoB,KAAO3kB,EAAO,wBAAH,OAA2BA,QAASuO,GAC7E6nB,IAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCouB,QAAAA,EACAh7B,MAAAA,EACAsgB,KAAAA,KAEImT,GAlVkB,SAAAnC,GACxB,IACEmC,EAKEnC,EALFmC,QACAuH,EAIE1J,EAJF0J,QACA1T,EAGEgK,EAHFhK,SACA86J,EAEE9wJ,EAFF8wJ,SACA9hK,EACEgR,EADFhR,KAEIoT,EAAQ,CACZi+C,OAAQ,CAAC,SAAU32C,EAAS1T,GAAY,WAAY86J,GAAY,YAChE75J,KAAM,CAAC,OAAD,eAAgBwI,EAAAA,GAAAA,GAAWiK,IAAY1a,GAAQ,WAAYgH,GAAY,YAC7EkroB,YAAa,CAAC,gBAEhB,OAAO7+nB,EAAAA,GAAAA,GAAeD,EAAOy+nB,GAAyB1+nB,EACvD,CAoUiBG,CAAkBtC,IAClC,OAAoBuC,EAAAA,GAAAA,MAAM5Y,EAAAA,SAAgB,CACxCpO,SAAU,EAAconB,EAAAA,GAAAA,KAAKm+nB,IAAcv3oB,EAAAA,EAAAA,GAAS,CAClD9H,IAAKygpB,GACLlxmB,SAAUA,GACVtuB,KAAM,SACN,gBAAiB1M,EAAW,YAAS7d,EACrC,gBAAiB6W,GAAO,OAAS,QACjC,gBAAiB,UACjB,aAAc0wY,EACd,kBAAmB,CAACt2D,EAASu5T,IAAU33nB,OAAOykG,SAASxyH,KAAK,WAAQ9E,EACpE,mBAAoBojpB,EACpBrte,UArJkB,SAAA38K,GACpB,IAAKg0B,EAAU,EAKyB,IAJpB,CAAC,IAAK,UAAW,YAGnC,SACc3zB,QAAQL,EAAMuB,OAC1BvB,EAAMo7D,iBACNnwB,IAAO,EAAMjrC,GAEhB,CACF,EA2IG88K,YAAar4J,GAAYuP,EAAW,KA7NhB,SAAAh0B,GAED,IAAjBA,EAAMmqB,SAIVnqB,EAAMo7D,iBACNi1lB,EAAW33oB,QAAQ4M,QACnB2lB,IAAO,EAAMjrC,GACd,EAqNGs0B,OA1Ie,SAAAt0B,IAEZyd,IAAQ6W,IAEXr3B,OAAOC,eAAe8C,EAAO,SAAU,CACrC5C,UAAU,EACVD,MAAO,CACLA,MAAAA,EACA9E,KAAAA,KAGJi8B,EAAOt0B,GAEV,EA8HGq0B,QAASA,GACR+7nB,EAAoB,CACrB3hoB,WAAYA,GACZrX,WAAW6Z,EAAAA,GAAAA,GAAKm/nB,EAAmBh5oB,UAAWwZ,GAAQk+C,OAAQ13D,GAG9D4F,GAAIo0oB,GACJpnpB,SAAU6U,GAAQgR,IAClB02nB,KAAUA,IAAqBn1nB,EAAAA,GAAAA,KAAK,OAAQ,CAC1Cha,UAAW,cACXpN,SAAU,YACN6lB,OACUuB,EAAAA,GAAAA,KAAKs+nB,IAAmB13oB,EAAAA,EAAAA,GAAS,CACjD7a,MAAO2G,MAAMC,QAAQ5G,GAASA,EAAMuO,KAAK,KAAOvO,EAChD9E,KAAMA,EACN6X,IAAKwpoB,EACL,eAAe,EACfl5d,SAhOiB,SAAAxgL,GACnB,IAAMI,EAAQ4kpB,GAAchipB,KAAI,SAAAsoC,GAAK,OAAIA,EAAMvhC,MAAM5M,KAAhB,IAAuBkD,QAAQL,EAAM4W,OAAOzZ,OACjF,IAAe,IAAXiD,EAAJ,CAGA,IAAMkrC,EAAQ05mB,GAAc5kpB,GAC5B45oB,EAAc1umB,EAAMvhC,MAAM5M,OACtBqjL,GACFA,EAASxgL,EAAOsrC,EAJjB,CAMF,EAuNGmU,UAAW,EACXh7B,SAAUA,EACVrN,UAAWwZ,GAAQ++nB,YACnBpuI,UAAWA,EACX9yf,WAAYA,IACXhI,KAAsB2K,EAAAA,GAAAA,KAAKq+nB,GAAY,CACxCt4oB,GAAIk4oB,EACJj4oB,UAAWwZ,GAAQlL,KACnB+I,WAAYA,MACG2C,EAAAA,GAAAA,KAAKg3e,IAAMpwf,EAAAA,EAAAA,GAAS,CACnCgF,GAAI,QAAF,OAAU3kB,GAAQ,IACpBw8lB,SAAU+7D,GACVnzoB,KAAMA,GACN07kB,QApPgB,SAAAn5lB,GAClBirC,IAAO,EAAOjrC,EACf,EAmPG2tmB,aAAc,CACZh5d,SAAU,SACVD,WAAY,UAEdyid,gBAAiB,CACfxid,SAAU,MACVD,WAAY,WAEby7gB,EAAW,CACZ3gD,eAAex3lB,EAAAA,EAAAA,GAAS,CACtB,kBAAmB6/U,EACnB1mU,KAAM,UACNi0kB,iBAAiB,GAChB+qD,EAAU3gD,eACbzB,YAAY/1lB,EAAAA,EAAAA,GAAS,CAAC,EAAGm4oB,EAAUpiD,WAAY,CAC7Ch4kB,OAAO/d,EAAAA,EAAAA,GAAS,CACdioB,SAAUkxnB,IACe,MAAxBhB,EAAUpiD,WAAqBoiD,EAAUpiD,WAAWh4kB,MAAQ,QAEjE/rB,SAAUm7C,QAGf,IA8ID,MCxnBM9gC,GAAY,CAAC,YAAa,WAAY,UAAW,YAAa,cAAe,eAAgB,gBAAiB,KAAM,QAAS,aAAc,QAAS,UAAW,YAAa,WAAY,SAAU,UAAW,SAAU,OAAQ,cAAe,qBAAsB,WAuBpQgtoB,GAAmB,CACvBh5pB,KAAM,YACNm2B,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,EACnB+L,kBAAmB,SAAA9Z,GAAI,OAAI+xB,EAAAA,GAAAA,IAAsB/xB,IAAkB,YAATA,CAAnC,EACvBsyB,KAAM,QAEFkjoB,IAAcvjoB,EAAAA,GAAAA,IAAO+8nB,GAAOuG,GAAdtjoB,CAAgC,IAC9CwjoB,IAAsBxjoB,EAAAA,GAAAA,IAAOm/nB,GAAemE,GAAtBtjoB,CAAwC,IAC9DyjoB,IAAoBzjoB,EAAAA,GAAAA,IAAOk+nB,GAAaoF,GAApBtjoB,CAAsC,IAC1Di7F,GAAsB5wG,EAAAA,YAAiB,SAAgBgY,EAASlgB,GACpE,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1B31B,KAAM,YACN0R,MAAOqmB,IAET,EAsBMrmB,EArBFimpB,UAAAA,OADJ,SAEIhmpB,EAoBED,EApBFC,SAFJ,EAsBMD,EAnBF6mB,QAAS6goB,OAHb,MAG2B,CAAC,EAH5B,EAIIr6oB,EAkBErN,EAlBFqN,UAJJ,EAsBMrN,EAjBFkmpB,YAAAA,OALJ,WAsBMlmpB,EAhBFmmpB,aAAAA,OANJ,WAsBMnmpB,EAfFslpB,cAAAA,OAPJ,MAOoBnM,GAPpB,EAQIlmoB,EAcEjT,EAdFiT,GACAvD,EAaE1P,EAbF0P,MACA0qoB,EAYEp6oB,EAZFo6oB,WACAxtoB,EAWE5M,EAXF4M,MACAkhV,EAUE9tV,EAVF8tV,QACAs4T,EASEpmpB,EATFompB,UAbJ,EAsBMpmpB,EARFw1K,SAAAA,OAdJ,WAsBMx1K,EAPFs2T,OAAAA,OAfJ,SAgBI84R,EAMEpvlB,EANFovlB,QACAC,EAKErvlB,EALFqvlB,OACA37kB,EAIE1T,EAJF0T,KACA6kQ,EAGEv4Q,EAHFu4Q,YACA8tY,EAEErmpB,EAFFqmpB,mBApBJ,EAsBMrmpB,EADFouB,QAASyunB,OArBb,MAqB2B,WArB3B,EAuBEngoB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzC6loB,EAAiB7pV,EAASqxV,GAAoB3B,GAO9C53nB,EALM6vnB,GAAiB,CAC3Bj+oB,MAAAA,EACA88oB,eAHqBT,KAIrB6B,OAAQ,CAAC,aAES9vnB,SAAWyunB,EACzBgE,EAAiBnxoB,GAAS,CAC9ByR,SAAU2koB,KAAiBA,IAA4Bz+nB,EAAAA,GAAAA,KAAKkgoB,GAAa,CAAC,IAC1EK,UAAuBvgoB,EAAAA,GAAAA,KAAKmgoB,GAAqB,CAC/C56oB,MAAOA,IAETy2oB,OAAQ0C,KAAuBA,IAAkC1+nB,EAAAA,GAAAA,KAAKogoB,GAAmB,CAAC,KAC1Fr5nB,GAKIvH,EA/DkB,SAAAnC,GAIxB,OADIA,EADFmC,OAGH,CA0DiBG,EAJG/Y,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCouB,QAAAA,EACAvH,QAAS6goB,KAGLG,GAAoBp/nB,EAAAA,GAAAA,GAAWtiB,EAAK06oB,EAAe16oB,KACzD,OAAoBkhB,EAAAA,GAAAA,KAAKhZ,EAAAA,SAAgB,CACvCpO,SAAuBoO,EAAAA,aAAmBwyoB,GAAgB5yoB,EAAAA,EAAAA,GAAS,CAGjEkyoB,eAAAA,EACA/F,YAAYnsoB,EAAAA,EAAAA,GAAS,CACnBhO,SAAAA,EACAqlpB,cAAAA,EACAl3nB,QAAAA,EACA7zB,UAAMsC,EAEN24K,SAAAA,GACC8gJ,EAAS,CACVrjT,GAAAA,GACE,CACFgzoB,UAAAA,EACAC,YAAAA,EACAC,aAAAA,EACAr4T,QAAAA,EACAs4T,UAAAA,EACAh3D,QAAAA,EACAC,OAAAA,EACA37kB,KAAAA,EACA6kQ,YAAAA,EACA8tY,oBAAoBp4oB,EAAAA,EAAAA,GAAS,CAC3BgF,GAAAA,GACCozoB,IACFjM,EAAY,CACbvznB,QAASuznB,GAAah8nB,EAAAA,GAAAA,GAAUyI,EAASuznB,EAAWvznB,SAAWA,GAC9DnX,EAAQA,EAAM1P,MAAMo6oB,WAAa,CAAC,IACpC5ke,GAAY8gJ,GAAsB,aAAZloS,EAAyB,CAChD20nB,SAAS,GACP,CAAC,EAAG,CACN58oB,IAAK0hpB,EACLx6oB,WAAW6Z,EAAAA,GAAAA,GAAK25nB,EAAe7gpB,MAAMqN,UAAWA,KAC9CqC,GAAS,CACX0e,QAAAA,GACC1R,KAEN,IAoJDuiG,GAAO33F,QAAU,SACjB,UC/QO,SAASwgoB,GAAyBzjoB,GACvC,OAAOC,EAAAA,GAAAA,GAAqB,eAAgBD,EAC7C,EACwBE,EAAAA,GAAAA,GAAuB,eAAgB,CAAC,SAAjE,ICHMjK,GAAY,CAAC,eAAgB,YAAa,WAAY,YAAa,QAAS,eAAgB,WAAY,QAAS,sBAAuB,YAAa,aAAc,KAAM,kBAAmB,aAAc,aAAc,WAAY,QAAS,UAAW,UAAW,YAAa,OAAQ,SAAU,WAAY,UAAW,cAAe,WAAY,OAAQ,SAAU,cAAe,OAAQ,QAAS,WAkBtYytoB,GAAmB,CACvB5moB,SAAU4/nB,GACVsC,OAAQnB,GACR0F,SAAUzE,IAWN6E,IAAgBhkoB,EAAAA,GAAAA,IAAOikoB,GAAa,CACxC35pB,KAAM,eACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHCkkB,CAInB,CAAC,GA8UJ,GA5S+B3V,EAAAA,YAAiB,SAAmBgY,EAASlgB,GAC1E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,iBAGJ4/oB,EAgCEluoB,EAhCFkuoB,aADJ,EAiCMluoB,EA/BFw3gB,UAAAA,OAFJ,SAGIv3gB,EA8BED,EA9BFC,SACAoN,EA6BErN,EA7BFqN,UAJJ,EAiCMrN,EA5BF6d,MAAAA,OALJ,MAKY,UALZ,EAMIyV,EA2BEtzB,EA3BFszB,aANJ,EAiCMtzB,EA1BF0a,SAAAA,OAPJ,WAiCM1a,EAzBFzL,MAAAA,OARJ,SASI2zpB,EAwBElopB,EAxBFkopB,oBATJ,EAiCMlopB,EAvBFqsoB,UAAAA,OAVJ,SAWI8b,EAsBEnopB,EAtBFmopB,WACI/pnB,EAqBFp+B,EArBFiT,GACAinoB,EAoBEl6oB,EApBFk6oB,gBACAE,EAmBEp6oB,EAnBFo6oB,WACAD,EAkBEn6oB,EAlBFm6oB,WACAxK,EAiBE3voB,EAjBF2voB,SACA/ioB,EAgBE5M,EAhBF4M,MACAywoB,EAeEr9oB,EAfFq9oB,QACAC,EAcEt9oB,EAdFs9oB,QAnBJ,EAiCMt9oB,EAbF+zV,UAAAA,OApBJ,SAqBIzlW,EAYE0R,EAZF1R,KACAi8B,EAWEvqB,EAXFuqB,OACAksJ,EAUEz2K,EAVFy2K,SACAnsJ,EASEtqB,EATFsqB,QACAs9N,EAQE5nP,EARF4nP,YAzBJ,EAiCM5nP,EAPFi9B,SAAAA,OA1BJ,SA2BIiuS,EAMElrU,EANFkrU,KA3BJ,EAiCMlrU,EALF+kE,OAAAA,OA5BJ,SA6BIqjlB,EAIEpopB,EAJFoopB,YACA7tpB,EAGEyF,EAHFzF,KACAnH,EAEE4M,EAFF5M,MA/BJ,EAiCM4M,EADFouB,QAAAA,OAhCJ,MAgCc,WAhCd,EAkCE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCw3gB,UAAAA,EACA35f,MAAAA,EACAnD,SAAAA,EACAnmB,MAAAA,EACA83oB,UAAAA,EACAt4S,UAAAA,EACA92T,SAAAA,EACA8nC,OAAAA,EACA32C,QAAAA,IAEIvH,EAlGkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAKF,OAAOE,EAAAA,GAAAA,GAHO,CACZjnB,KAAM,CAAC,SAEoBgopB,GAA0BjhoB,EACxD,CA0FiBG,CAAkBtC,GAMlC,IAAM2joB,EAAY,CAAC,EACH,aAAZj6nB,IACE8rnB,GAAqD,qBAA3BA,EAAgB5pV,SAC5C+3V,EAAUtF,QAAU7I,EAAgB5pV,QAEtC+3V,EAAUz7oB,MAAQA,GAEhBm4D,IAEGqjlB,GAAgBA,EAAY9xV,SAC/B+xV,EAAUp1oB,QAAKpW,GAEjBwrpB,EAAU,yBAAsBxrpB,GAElC,IAAMoW,GAAKyV,EAAAA,GAAAA,GAAM0V,GACXkqnB,EAAeH,GAAcl1oB,EAAd,UAAsBA,EAAtB,qBAAyCpW,EACxD0rpB,EAAe37oB,GAASqG,EAAT,UAAiBA,EAAjB,eAA8BpW,EAC7CgkpB,EAAiBkH,GAAiB35nB,GAClCo6nB,IAA4BnhoB,EAAAA,GAAAA,KAAKw5nB,GAAgB5yoB,EAAAA,EAAAA,GAAS,CAC9D,mBAAoBq6oB,EACpBpa,aAAcA,EACd12H,UAAWA,EACXlkf,aAAcA,EACd+4mB,UAAWA,EACXt4S,UAAWA,EACXzlW,KAAMA,EACN48U,KAAMA,EACNmyU,QAASA,EACTC,QAASA,EACT/ipB,KAAMA,EACNnH,MAAOA,EACP6f,GAAIA,EACJ08nB,SAAUA,EACVplnB,OAAQA,EACRksJ,SAAUA,EACVnsJ,QAASA,EACTs9N,YAAaA,EACbwyZ,WAAYA,GACXiO,EAAWlO,IACd,OAAoBlznB,EAAAA,GAAAA,MAAM+goB,IAAe/5oB,EAAAA,EAAAA,GAAS,CAChDZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BqN,SAAUA,EACVnmB,MAAOA,EACP83oB,UAAWA,EACXlmoB,IAAKA,EACL82B,SAAUA,EACVpf,MAAOA,EACPuQ,QAASA,EACT1J,WAAYA,GACXhI,EAAO,CACRzc,SAAU,CAAU,MAAT2M,GAA2B,KAAVA,IAA6Bya,EAAAA,GAAAA,KAAKohoB,IAAYx6oB,EAAAA,EAAAA,GAAS,CACjF8koB,QAAS9/nB,EACTA,GAAIs1oB,GACHrO,EAAiB,CAClBj6oB,SAAU2M,KACPm4D,GAAsB19C,EAAAA,GAAAA,KAAK43F,IAAQhxG,EAAAA,EAAAA,GAAS,CAC/C,mBAAoBq6oB,EACpBr1oB,GAAIA,EACJ66U,QAASy6T,EACTn1pB,MAAOA,EACPsc,MAAO84oB,IACNJ,EAAa,CACdnopB,SAAUA,KACNuopB,GAAcL,IAA2B9goB,EAAAA,GAAAA,KAAKqhoB,IAAgBz6oB,EAAAA,EAAAA,GAAS,CAC3EgF,GAAIq1oB,GACHJ,EAAqB,CACtBjopB,SAAUkopB,QAGf,IC/KD,GAvBqB,WAGjB,OAFe,IAAIjmF,IAAI/ykB,OAAO04B,SAASkpE,MACZ+7e,SAASv1kB,MAAM,KAAKurD,OAE3C,IAAK,IACD,MAAO,SACX,IAAK,IACD,MAAO,UACX,IAAK,IACD,MAAO,YACX,IAAK,IACD,MAAO,WACX,IAAK,IACD,MAAO,SACX,IAAK,IACD,MAAO,WACX,IAAK,IACD,MAAO,SACX,QACI,OAEX,ECfD,GAJmB,SAAC6lmB,EAAsC91kB,GACtD,OAAQ81kB,EAAqBz3pB,MAAK,SAAC03pB,GAAD,OAAaA,EAAQpe,YAAc33jB,CAAnC,GACrC,ECFM,SAASg2kB,GAA6BxkoB,GAC3C,OAAOC,EAAAA,GAAAA,GAAqB,mBAAoBD,EACjD,CACD,iDACA,IAD6BE,EAAAA,GAAAA,GAAuB,mBAAoB,CAAC,OAAQ,UAAW,mBAAoB,yBAA0B,wBAAyB,sBAAuB,oBAAqB,0BCHzMjK,GAAY,CAAC,WAAY,WAAY,KAAM,UAAW,mBAAoB,kBAAmB,WA8B7FwuoB,IAAoB9koB,EAAAA,GAAAA,IAAO65K,GAAQ,CACvChyL,kBAAmB,SAAA9Z,GAAI,OAFK,SAAAA,GAAI,MAAa,eAATA,GAAkC,UAATA,GAA6B,OAATA,GAA0B,OAATA,GAA0B,YAATA,CAAnF,CAEL+xB,CAAsB/xB,IAAkB,YAATA,CAAnC,EACvBzD,KAAM,mBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,MAAO,CAACA,EAAOzF,KAAMyF,EAAOwjpB,wBAAP,wBACZC,GAAAA,uBAA+CzjpB,EAAOwjpB,uBAC5DxjpB,EAAO0jpB,oBAAP,wBACMD,GAAAA,mBAA2CzjpB,EAAO0jpB,mBAE5D,GAVuBjloB,EAWvB,gBACDU,EADC,EACDA,WACAnX,EAFC,EAEDA,MAFC,OAGGU,EAAAA,EAAAA,IAAS,wBACN+6oB,GAAAA,sBADK,gBAC6CA,GAAAA,mBAA2C,CAClGhjoB,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,WAAY,CAChDqb,SAAUxT,EAAMwV,YAAYhC,SAASG,QAEvC9Y,QAAS,IAEqB,WAA/Bsc,EAAWwkoB,kBAAX,SACDljoB,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,mBAAoB,aAAc,gBAAiB,CACvFqb,SAAUxT,EAAMwV,YAAYhC,SAASG,SAFtC,YAIK8noB,GAAAA,SAAiC,CACrCnroB,MAAO,gBAEuB,UAA/B6G,EAAWwkoB,iBAA+BxkoB,EAAW2nnB,YAArD,wBACM2c,GAAAA,sBADN,gBACwDA,GAAAA,mBAA2C,CAClGhjoB,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,WAAY,CAChDqb,SAAUxT,EAAMwV,YAAYhC,SAASG,QAEvC9Y,QAAS,EACTyvB,aAAc,IAEgB,QAA/BnT,EAAWwkoB,iBAA6BxkoB,EAAW2nnB,YAAnD,wBACM2c,GAAAA,sBADN,gBACwDA,GAAAA,mBAA2C,CAClGhjoB,WAAYzY,EAAMwV,YAAYrd,OAAO,CAAC,WAAY,CAChDqb,SAAUxT,EAAMwV,YAAYhC,SAASG,QAEvC9Y,QAAS,EACT2vB,YAAa,IA/Bd,IAkCGoxnB,IAAgCnloB,EAAAA,GAAAA,IAAO,MAAO,CAClD11B,KAAM,mBACN+1B,KAAM,mBACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAO6jpB,iBAAkB7jpB,EAAO,mBAAD,QAAoB4e,EAAAA,GAAAA,GAAWO,EAAWwkoB,mBAClF,GARmClloB,EASnC,gBACDzW,EADC,EACDA,MACAmX,EAFC,EAEDA,WAFC,OAGGzW,EAAAA,EAAAA,GAAS,CACbvO,SAAU,WACV+4B,WAAY,UACZ3S,QAAS,QACuB,UAA/BpB,EAAWwkoB,kBAAuD,aAAvBxkoB,EAAW0J,SAAiD,cAAvB1J,EAAW0J,UAA4B,CACxH0L,KAA0B,UAApBpV,EAAW3hB,KAAmB,GAAK,IACT,UAA/B2hB,EAAWwkoB,iBAAsD,SAAvBxkoB,EAAW0J,SAAsB,CAC5E0L,KAAM,GAC0B,WAA/BpV,EAAWwkoB,iBAAgC,CAC5CpvnB,KAAM,MACN5H,UAAW,kBACXrU,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,UACZ,QAA/BgK,EAAWwkoB,kBAAqD,aAAvBxkoB,EAAW0J,SAAiD,cAAvB1J,EAAW0J,UAA4B,CACtHwL,MAA2B,UAApBlV,EAAW3hB,KAAmB,GAAK,IACV,QAA/B2hB,EAAWwkoB,iBAAoD,SAAvBxkoB,EAAW0J,SAAsB,CAC1EwL,MAAO,GACyB,UAA/BlV,EAAWwkoB,iBAA+BxkoB,EAAW2nnB,WAAa,CACnE3soB,SAAU,WACVo6B,MAAO,IACyB,QAA/BpV,EAAWwkoB,iBAA6BxkoB,EAAW2nnB,WAAa,CACjE3soB,SAAU,WACVk6B,OAAQ,IAxBP,IAgIH,GAtGmCvrB,EAAAA,YAAiB,SAAuBgY,EAASlgB,GAClF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,qBAGJ2R,EAOED,EAPFC,SADJ,EAQMD,EANF0a,SAAAA,OAFJ,SAGQu0kB,EAKFjvlB,EALFiT,GAHJ,EAQMjT,EAJFojW,QAAAA,OAJJ,SAKsBimT,EAGhBrppB,EAHFoppB,iBALJ,EAQMpppB,EAFFkppB,gBAAAA,OANJ,MAMsB,SANtB,IAQMlppB,EADFouB,QAAAA,OAPJ,MAOc,OAPd,EASE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCrH,GAAKyV,EAAAA,GAAAA,GAAMumkB,GACXm6D,EAA2C,MAAxBC,EAA+BA,GAAoChioB,EAAAA,GAAAA,KAAKqhnB,GAAkB,CACjH,kBAAmBz1nB,EACnB4K,MAAO,UACP9a,KAAM,KAEF2hB,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC0a,SAAAA,EACA0oV,QAAAA,EACAgmT,iBAAAA,EACAF,gBAAAA,EACA96nB,QAAAA,IAEIvH,EA9HkB,SAAAnC,GACxB,IACE0+U,EAGE1+U,EAHF0+U,QACA8lT,EAEExkoB,EAFFwkoB,gBACArioB,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAQsjW,GAAW,WAC1BupS,UAAW,CAACvpS,GAAW,mBAAJ,QAAuBj/U,EAAAA,GAAAA,GAAW+koB,KACrDrc,QAAS,CAACzpS,GAAW,iBAAJ,QAAqBj/U,EAAAA,GAAAA,GAAW+koB,KACjDE,iBAAkB,CAAC,mBAAoBhmT,GAAW,mBAAJ,QAAuBj/U,EAAAA,GAAAA,GAAW+koB,MAE5EpwD,GAAkB/xkB,EAAAA,GAAAA,GAAeD,EAAO+hoB,GAA8BhioB,GAC5E,OAAO5Y,EAAAA,EAAAA,GAAS,CAAC,EAAG4Y,EAASiykB,EAC9B,CAgHiB9xkB,CAAkBtC,GAC5B4koB,EAAgClmT,GAAuB/7U,EAAAA,GAAAA,KAAK8hoB,GAA+B,CAC/F97oB,UAAWwZ,EAAQuioB,iBACnB1koB,WAAYA,EACZzkB,SAAUmppB,IACP,KACL,OAAoBnioB,EAAAA,GAAAA,MAAM6hoB,IAAmB76oB,EAAAA,EAAAA,GAAS,CACpDyM,SAAUA,GAAY0oV,EACtBnwV,GAAIA,EACJ9M,IAAKA,GACJuW,EAAO,CACR0R,QAASA,EACTvH,QAASA,EACTnC,WAAYA,EACZzkB,SAAU,CAAgC,QAA/BykB,EAAWwkoB,gBAA4BjppB,EAAWqppB,EAA8D,QAA/B5koB,EAAWwkoB,gBAA4BI,EAAgCrppB,KAEtK,8CCvJYsppB,GAAsB/unB,GAAH,+LAQTkoU,GAAAA,GAAwC,QAA5B/yW,GAAAA,GAAAA,cAAoC,wCAA0C,OAAU,qCCNrH65pB,IAAaxloB,EAAAA,EAAAA,GAAOq6e,GAAPr6e,CAAa,CAC5B,mBAAoB,CAChB8N,aAAc,MACduE,gBAAiB,UACjBxY,MAAO,WA+Df,GA1DoC,SAAC,GAAmD,EAAjD4roB,SAAkD,IAAxCpzpB,EAAuC,EAAvCA,MAAOqzpB,EAAgC,EAAhCA,qBACpD,EAAgCr7oB,EAAAA,SAAmC,MAAnE,eAAOy8kB,EAAP,KAAiB8kD,EAAjB,KACM+Z,EAAWx1hB,QAAQ22d,GAMnB2F,EAAc,WAChBm/C,EAAY,KACf,EAED,OACI,mCAEI,UAACga,GAAA,EAAD,CAAc59nB,MAAO,CAAEtsB,SAAU,WAAYk6B,MAAO,OAAQD,IAAK,OAAQ9b,MAAO,QAASe,SAAU,QAC/F,gBAAe+qoB,EAAW,kBAAe9spB,EACzC,gBAAe8spB,EAAW,YAAS9spB,EACnC,gBAAc,OACd21K,QAAS,SAACr0K,GAdlByxoB,EAcoCzxoB,EAdlBu2D,cAcD,KAEb,WAAC80lB,GAAD,CACIv2oB,GAAG,aACH63kB,SAAUA,EACVp3kB,KAAMi2oB,EACNv6D,QAASqB,EACTmT,aAAc,CACVh5d,SAAU,SACVD,WAAY,SAEhByid,gBAAiB,CACbxid,SAAU,MACVD,WAAY,SAXpB,WAeI,UAAC,GAAD,CAAU6nC,QAASi+a,EAAnB,UACI,UAAC,GAAD,CAAQl2lB,KAAK,SAASwI,KAAK,QAAQ4poB,WAAW,UAACkd,GAAA,EAAD,CAAmBjmoB,GAAI,CAAE/F,MAAO,SAAa+F,GAAI,CAC3F/F,MAAO,QACPU,cAAe,OACfK,SAAU,QACX4zJ,QAAS,kBAAOk3e,EAAqBrzpB,EAA5B,EAJZ,gCAMJ,UAAC,GAAD,CAAUm8K,QAASi+a,EAAnB,UACI,UAAC,GAAD,CAAQ1tlB,KAAK,QAAQ4poB,WAAW,UAAC,KAAD,IAAe3gnB,MAAO,CAClDnO,MAAO,QACPU,cAAe,OACfK,SAAU,QAHd,0BAYnB,EC6qBD,IAAM6zmB,GAAYzumB,EAAAA,EAAAA,IAAH,gLAQXuloB,IAGEviH,GAAUhjhB,EAAAA,EAAAA,IAAH,mIACF0+U,GAAAA,GAAW,OAAS,MAIX/yW,GAAAA,GAAAA,mBAA+B,2CAA6C,QAE1Fm6pB,GAAS9loB,EAAAA,EAAAA,IAAH,0HAON+loB,IAAe/loB,EAAAA,EAAAA,GAAOgmoB,GAAPhmoB,CAAH,gEAEH0+U,GAAAA,GAAW,OAAS,QAI7BunT,GAAkBjmoB,EAAAA,EAAAA,IAAH,uFAMfkmoB,GAAwBlmoB,EAAAA,EAAAA,IAAH,gFAMrBmmoB,IAAoBnmoB,EAAAA,EAAAA,GAAOomoB,GAAPpmoB,CAAH,yMAWjBqmoB,GAAermoB,EAAAA,EAAAA,IAAH,2EAMZsmoB,IAAetmoB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAH,0PAeZumoB,IAAoBvmoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC1C4T,UAAW,OACXG,WAAY,OACZlS,MAAO,MACPnE,OAAQ,OACR,wBAAyB,CACvB7D,MAAO,WAET,sBAAuB,CACrBA,MAAO,aAET,4BAA6B,CAC3BA,MAAO,SAET,2BAA4B,CAC1BwY,gBAAiB,UACjB,aAAc,CACZnB,YAAa,QAEf,mBAAoB,CAClBA,YAAa,aAEf,yBAA0B,CACxBA,YAAa,gBAKbu1nB,GAAqBzmoB,EAAAA,EAAAA,IAAH,yFAMlB0moB,GAAe1moB,EAAAA,EAAAA,IAAH,wGAOZ2moB,IAAkB3moB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAe,CAAC,GAIlC4moB,GAAgB5moB,EAAAA,EAAAA,IAAH,iGACF0+U,GAAAA,GAAW,MAAQ,QAM9BmoT,IAAuB7moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC7C4T,UAAW,KACX/R,MAAO,MACPkS,WAAY,MACZ6nnB,KAAM,OACN,sBAAuB,CACrB/hoB,MAAO,aAET,4BAA6B,CAC3BA,MAAO,SAET,2BAA4B,CAC1B,aAAc,CACZqX,YAAa,WAEf,mBAAoB,CAClBA,YAAa,aAEf,yBAA0B,CACxBA,YAAa,aAEf,wBAAyB,CACvBrX,MAAO,UAGX,wBAAyB,CACvBA,MAAO,aAILitoB,IAA6B9moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACnD+T,WAAY,MACZlS,MAAO,MACP,sBAAuB,CACrBhI,MAAO,aAET,0BAA2B,CACzBA,MAAO,SAET,yBAA0B,CACxB,WAAY,CACVwX,kBAAmB,WAErB,iBAAkB,CAChBA,kBAAmB,WAErB,sBAAuB,CACrBA,kBAAmB,cAGvB,wBAAyB,CACvBxX,MAAO,aAILktoB,IAAgB/moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACtC+T,WAAY,OACZlS,MAAO,MACP,wBAAyB,CACvBhI,MAAO,WAET,sBAAuB,CACrBA,MAAO,aAET,4BAA6B,CAC3BA,MAAO,SAET,2BAA4B,CAC1BwY,gBAAiB,UACjB,aAAc,CACZnB,YAAa,QAEf,mBAAoB,CAClBA,YAAa,aAEf,yBAA0B,CACxBA,YAAa,gBAKb81nB,IAAkBhnoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACxC6S,aAAc,MACdkB,WAAY,OACZlS,MAAO,MACP,wBAAyB,CACvBhI,MAAO,WAET,sBAAuB,CACrBA,MAAO,aAET,4BAA6B,CAC3BA,MAAO,SAET,2BAA4B,CAC1BwY,gBAAiB,UACjB,aAAc,CACZnB,YAAa,QAEf,mBAAoB,CAClBA,YAAa,aAEf,yBAA0B,CACxBA,YAAa,gBAab+1nB,KARajnoB,EAAAA,EAAAA,GAAOq6e,GAAPr6e,CAAa,CAC9B,mBAAoB,CAClBqS,gBAAiB,UACjBxY,MAAO,YAKYmG,EAAAA,EAAAA,GAAOusS,GAAPvsS,CAAH,gSAcdknoB,IAAwBlnoB,EAAAA,EAAAA,GAAOusS,GAAPvsS,CAAH,8WAmB3B,GAAepN,IA18Bf,WACE,OAA0Cg8f,EAAAA,EAAAA,WAAS,GAAnD,eAAO/oP,EAAP,KAAsBshY,EAAtB,KACA,GAAkCv4I,EAAAA,EAAAA,WAAS,GAA3C,eAAO/4a,EAAP,KAAkBuxjB,EAAlB,KACA,GAA0Cx4I,EAAAA,EAAAA,WAAS,GAAnD,eAAOq2H,EAAP,KAAsBC,EAAtB,KACA,GAA8Ct2H,EAAAA,EAAAA,WAAS,GAAvD,eAAOy4I,EAAP,KAAwBC,EAAxB,KACA,GAAoC14I,EAAAA,EAAAA,WAAS,GAA7C,eAAO24I,EAAP,KAAmBC,EAAnB,KACA,GAAkC54I,EAAAA,EAAAA,WAAS,GAA3C,eAAOijB,EAAP,KAAkB41H,EAAlB,KACA,GAAsC74I,EAAAA,EAAAA,WAAS,GAA/C,eAAO84I,EAAP,KAAoBC,EAApB,KACA,GAA8B/4I,EAAAA,EAAAA,WAAS,GAAvC,eAAOg5I,EAAP,KAAgBC,EAAhB,KACA,GAAgCj5I,EAAAA,EAAAA,WAAS,GAAzC,eAAOk5I,EAAP,KAAiBC,EAAjB,KACA,GAA8Cn5I,EAAAA,EAAAA,WAAS,GAAvD,eAAOo5I,EAAP,KAAwBC,EAAxB,KACA,GAA4Cr5I,EAAAA,EAAAA,WAAS,GAArD,eAAOs5I,EAAP,KAAuBC,EAAvB,KACA,GAAoCv5I,EAAAA,EAAAA,YAApC,eAAOw5I,EAAP,KAAmBC,EAAnB,KACA,GAAwCz5I,EAAAA,EAAAA,UAAkB,CACxDhuZ,MAAO,GACPkzU,YAAa,GACbw0N,UAAW,EACXC,UAAW,KAJb,gBAAOj5C,GAAP,MAAqBk5C,GAArB,MAMA,GAAgCn+oB,EAAAA,SAAmC,MAAnE,iBAAOy8kB,GAAP,MAAiB8kD,GAAjB,MAEMp9D,IADWr+c,QAAQ22d,IACR1a,KAEjB,GAAkC/hkB,EAAAA,UAAe,GAAjD,iBAAOo+oB,GAAP,MAAkBC,GAAlB,MACA,GAAgDr+oB,EAAAA,UAAe,GAA/D,iBAAOs+oB,GAAP,MAAyBC,GAAzB,OAMAr6I,EAAAA,EAAAA,YAAU,WACR,IAAMh3gB,EAAK,yCAAG,kGAERsuR,IACFq/W,GAAiB,GACjBiiB,GAAiB,IAGdO,GAAgB7hY,EAPT,iEAWN+/W,GAAAA,gBAXM,OAYNlgY,EAAQmjZ,KACRlE,EAAuBtgC,GAAKuhB,GAAAA,oBACpB/soB,IAAV6sQ,IACFojZ,EAAqBC,GAAWpE,EAAsBj/Y,MAEpDqiZ,GAAY,GAEZM,EAAa,UAACS,SAAD,aAAC,EAAoB75oB,IAClCu5oB,IAAgB,SAACj2E,GAAD,gCAAC,WACZA,GADW,IAEdtjkB,GAAE,UAAE65oB,SAAF,aAAE,EAAoB75oB,GACxBu3nB,UAAS,UAAEsiB,SAAF,aAAE,EAAoBtiB,UAC/B5lhB,OAAyB,QAAlB,EAAAkoiB,SAAA,eAAoBloiB,QAAS,GACpCkzU,aAA+B,QAAlB,EAAAg1N,SAAA,eAAoBh1N,cAAe,GAChDw0N,WAA6B,QAAlB,EAAAQ,SAAA,eAAoBP,UAAU12pB,SAAU0glB,EAAU+1E,UAC7DC,UAA6B,QAAlB,EAAAO,SAAA,SAAoBP,UAC3BO,EAAmBP,UAAUtzpB,KAAI,SAACwwpB,EAAUpzpB,GAAX,MAAsB,CACvDuuH,MAAO6kiB,EAAS7kiB,MAChBooiB,WAAY32pB,EACZ42pB,WAAYxD,EAASwD,WAAWh0pB,KAAI,SAACg0pB,GAAD,MAAiB,CACnDC,KAAMD,EAAWC,KACjBC,OAAQF,EAAWE,OAFe,IAHH,IAQjC52E,EAAUg2E,WAhBA,KAoBpBrjB,GAAiB,GAxCL,2CAAH,qDA2CX3toB,GAED,GAAE,CAACmwpB,IAGJ,IAQM0B,GAAY,yCAAG,WAAOjvpB,GAAP,2FACnBstpB,GAAa,GACbE,GAAe,IAEXr4C,GAAa1uf,MAJE,sBAKbgniB,EALa,uBAMfH,GAAa,GANE,6BASjBL,GAAa,KAEPh1kB,EAASy2kB,MAXE,4CAcPvlB,KAdO,yBAiBGx0B,KAjBH,kDAiBkB,GAjBlB,0BAkBPQ,GAAargmB,GAlBN,KAmBJqgmB,GAAa1uf,MAnBT,KAoBE0uf,GAAax7K,YApBf,KAqBA1hX,EArBA,KAsBGA,EAtBH,KAuBAk9hB,GAAai5C,UARpB/8pB,EAfO,CAiBX0jnB,OAjBW,KAkBXjgmB,GAlBW,KAmBX2xG,MAnBW,KAoBXkzU,YApBW,KAqBX0yM,UArBW,KAsBX6iB,aAtBW,KAuBXd,UAvBW,WA0BkC1vpB,KAAxB,OAAnB+soB,SAAmB,IAAnBA,QAAA,EAAAA,GAAAA,eAAAA,IA1BS,6BA2BOnD,GA3BP,KA2BkBxxoB,GAAAA,QAAAA,IAAqB,iBA3BvC,UA4BK69mB,KA5BL,mCA4BTI,OA5BS,MA6BTtuf,MAAO,uBACPkzU,YAAa,+BA9BJ,UAiCgB0jH,KAjChB,mCAiCP,cAjCO,cAgCT1ijB,QAhCS,sBA2BagK,KA3Bb,oCA2BLwuH,EA3BK,OAqCX9hI,EAAK89pB,UAAYh8hB,EAAI9hI,KAAKA,KAAKyjB,GArCpB,wBAwCXzjB,EAAK89pB,UAAY1jB,GAAAA,eAAAA,GAAAA,GAxCN,YA6CTkiB,EA7CS,qBA+CPI,GAAkBE,IAAe94C,GAAargmB,GA/CvC,oBAiDHm6a,GAjDG,SAkDPmgO,MAAOnB,EACPoB,aAAc5jB,GAAAA,eAAAA,GAAAA,GACd6jB,cAAe,MACZj+pB,GAI0B,OAA3B8jnB,GAAak3B,UAzDR,8BA0DD/D,GA1DC,MA0DSxxoB,GAAAA,QAAAA,IAAqB,sBA1D9B,MA0DqDm4b,EA1DrD,UA4DoBouH,KA5DpB,mCA4DH,cA5DG,cA2DL1ijB,QA3DK,uBA0DKm0iB,IA1DL,4EAkEA7/G,EAAQn6a,GAlER,MAmEDwznB,GAnEC,MAmEUxxoB,GAAAA,QAAAA,IAAqB,sBAnE/B,MAmEsDm4b,EAnEtD,UAqEoBouH,KArEpB,mCAqEH,cArEG,cAoEL1ijB,QApEK,uBAmEKgK,KAnEL,2EA6EH2joB,GA7EG,MA6EOxxoB,GAAAA,QAAAA,IAAqB,UA7E5B,MA6EuCzF,EA7EvC,UA+EkBgsjB,KA/ElB,mCA+EL,cA/EK,cA8EP1ijB,QA9EO,uBA6EGm0iB,IA7EH,kEAoFuB,OAA3BqmE,GAAak3B,UApFT,8BAqFL/D,GArFK,MAqFKxxoB,GAAAA,QAAAA,IAAqB,mBArF1B,MAqF8CzF,EArF9C,UAuFgBgsjB,KAvFhB,mCAuFP,cAvFO,cAsFT1ijB,QAtFS,uBAqFCm0iB,IArFD,4EA6FLw5F,GA7FK,MA6FMxxoB,GAAAA,QAAAA,IAAqB,UA7F3B,MA6FsCzF,EA7FtC,WA+FgBgsjB,KA/FhB,oCA+FP,cA/FO,cA8FT1ijB,QA9FS,wBA6FCgK,KA7FD,uCAoGbqppB,GAAkB,GAClBR,GAAe,GACfF,GAAa,GACbL,GAAa,GAvGA,8FA0GQ,MAAG5vpB,gBA1GX,iBA0GQ,EAAahM,YA1GrB,iBA0GQ,EAAmB+E,aA1G3B,aA0GQ,EAA0BjF,QAC/CiC,QAAQm3D,IAAI,OA3GC,mCAgHjB8imB,GAAc,GAhHG,4DAAH,sDAqSZ9B,GAAuB,SAACrzpB,GAC5Bo1pB,GAAa,GACbI,GAAW,GACXI,GAAmB,GACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdg2E,UAAWh2E,EAAUg2E,UAAU78nB,QAAO,SAAC0qB,EAAcv8C,GAAf,OAA6BA,IAAMxH,CAAnC,KAFxB,IA7ShBu5oB,GAAY,KAmTb,EAkCK8d,GAAyB,yCAAG,4FAChCpC,GAAmB,GACnBS,GAAY,GAFoB,UAI1Bz4C,GAAargmB,GAJa,iCAKtBq0nB,KALsB,mBAOtBh0B,GAAargmB,GAPS,SASZ6/lB,KATY,0BAMtBtjnB,EANsB,CAO1ByjB,GAP0B,KAS1BigmB,OAT0B,WAWVuzB,GAXU,KAWCxxoB,GAAAA,QAAAA,IAAqB,iBAXtB,KAWwCzF,EAXxC,UAaDgsjB,KAbC,iCAaxB,cAbwB,YAY1B1ijB,QAZ0B,qBAWJgK,KAXI,yCAgB5B8moB,GAAAA,gBAEA0hB,GAAmB,GACnBW,GAAmB,GACnBO,GAAgB,CACd5niB,MAAO,GACPkzU,YAAa,GACbw0N,UAAW,EACXC,UAAW,KAxBe,0DA6B9Bh7pB,QAAQm3D,IAAR,MACA4imB,GAAmB,GA9BW,QAgChCA,GAAmB,GAhCa,0DAAH,qDAmCzBqC,GAAyB,yCAAG,mFAEhCxB,GAAkB,GAClBK,GAAgB,CACd5niB,MAAO,GACPkzU,YAAa,GACbw0N,UAAW,EACXC,UAAW,KAPmB,2CAAH,qDAc/B,OACE,iCACE,UAAC,GAAD,WACE,UAAC,GAAD,UACGtjB,GACC,iBAAKj9mB,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACE,UAAC,GAAD,OAGF,mCACE,WAAC,GAAD,WACGwoU,GAAAA,IACG,UAACkrT,GAAA,EAAD,CAAchqoB,GAAI,CAAElkB,SAAU,WAAYo6B,KAAM,OAAQlC,UAAW,OAAQ/Z,MAAO,SAAW20J,QAfnF,WAC1Bk6e,IAAa,EACd,KAciB,UAAC,GAAD,CAAQt+nB,QAAQ,YAAYrrB,KAAK,QAAQ8a,MAAM,UAAU20J,QA9FlD,WACvBgga,GAAS,WACV,EA4FqG5ujB,GAAI,CAAElkB,SAAU,WAAYo6B,KAAM,OAAQlC,UAAW,QAAzI,mBACJ,UAAC,GAAD,CAAexJ,QAAQ,YAAY7zB,KAAK,SAASwI,KAAK,QAAQqgW,QAASvpQ,EAAWqvjB,gBAAgB,QAAQvc,UAAW92G,GAAY,UAACg4H,GAAA,EAAD,KAAgB,UAACC,GAAA,EAAD,IAAclqoB,GAAI,CACjKlkB,SAAU,WAAYk6B,MAAO,OAAQhC,UAAW,OAAQxB,QAASy/f,EAAY,QAAU,UAAW,YAAa,CAC7Gz/f,QAAS,QAEX,SAAU,CACRA,QAASy/f,EAAY,QAAU,YAEhCrjX,QAAS46e,GAPZ,sBASF,UAAC,GAAD,CACEn6oB,GAAG,eACHs7nB,UAAQ,EACRF,cAAY,EACZjrb,eAAa,EACbhwN,MAAOkgnB,GAAa1uf,MACpBtyH,QAASs3oB,GAAAA,cACT4D,eAAgB,SAAC3rmB,GACf,MAAsB,kBAAXA,EACFA,EAEFA,EAAO+iF,KACf,EACDyqhB,cAAe,SAACp5oB,EAAO7C,GAAR,OApQN,SAAC6C,EAA6CkI,GACrD,OAAVlI,IAGJu1pB,GAAc,GACdK,GAAW,GACXJ,GAAa,GACbQ,GAAmB,GACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WAAoBA,GAArB,IAAgC3xd,MAAOzmH,GAAvC,IACjB,CA2P8C4vpB,CAAe93pB,EAAO7C,EAAxC,EACfqjL,SAAU,SAACxgL,EAAO7C,GAAR,OAlHkD46pB,EAkHL56pB,EAjHnEq4pB,GAAa,GACbI,GAAW,GACXI,GAAmB,QACK,OAApB+B,GAAuD,kBAApBA,IAGvC7B,GAAkB,GAClBK,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdtjkB,GAAE,OAAE+6oB,QAAF,IAAEA,OAAF,EAAEA,EAAiB/6oB,GACrB2xG,OAAsB,OAAfopiB,QAAe,IAAfA,OAAA,EAAAA,EAAiBppiB,QAAS,GACjC4lhB,UAAS,OAAEwjB,QAAF,IAAEA,OAAF,EAAEA,EAAiBxjB,UAC5B1yM,aAA4B,OAAfk2N,QAAe,IAAfA,OAAA,EAAAA,EAAiBl2N,cAAe,GAC7Cw0N,WAA0B,OAAf0B,QAAe,IAAfA,OAAA,EAAAA,EAAiBzB,UAAU12pB,SAAU0glB,EAAU+1E,UAC1DC,UAA0B,OAAfyB,QAAe,IAAfA,GAAAA,EAAiBzB,UACxByB,EAAgBzB,UAAUtzpB,KAAI,SAACwwpB,EAAepzpB,GAAhB,MAAmC,CACjEuuH,MAAO6kiB,EAAS7kiB,MAChBooiB,WAAY32pB,EACZ42pB,WAAYxD,EAASwD,WAAWh0pB,KAAI,SAACg0pB,GAAD,MAAsB,CACxDC,KAAMD,EAAWC,KACjBC,OAAQF,EAAWE,OAFe,IAHN,IAQ9B52E,EAAUg2E,WAhBA,MARU,IAA8CyB,CAkHlD,EACV1U,YAAa,SAAC9/oB,GAAD,OACX,UAACqxpB,IAAD,oBAA0BrxpB,GAA1B,IACEoT,MAAM,kBACNwhB,QAAQ,WACRrrB,KAAM2/V,GAAAA,GAAW,QAAU,SAC3BzlU,UAAQ,EACR1oC,MAAOg3pB,IANE,EAQb/R,aAAc,SAACx5oB,EAAY6hC,GACzB,MAAsB,kBAAXA,GACF,mBAAC,IAAD,oBAAS7hC,GAAT,IAAgBxI,IAAK87mB,GAAargmB,IAAM,QAAQ4uB,GAErDyxkB,GAAak3B,YAAc3omB,EAAO2omB,UACX,OAArB3omB,EAAO2omB,WACF,mBAAC,IAAD,oBAASxqoB,GAAT,IAAgBxI,IAAKqqC,EAAO5uB,KAAK,UAAY4uB,EAAO+iF,QAEtD,mBAAC,IAAD,oBAAS5kH,GAAT,IAAgBxI,IAAKqqC,EAAO5uB,KAAK4uB,EAAO2omB,UAAY,MAAQ3omB,EAAO+iF,YAJ5E,CAMD,KAGH,UAACkmiB,GAAD,CACEr0e,SAAU,SAACt4K,GAAD,OAjRK,SAACA,GAC5BqtpB,GAAc,GACdK,GAAW,GACXJ,GAAa,GACbQ,GAAmB,GACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WAAoBA,GAArB,IAAgCz+I,YAAa35b,GAA7C,GACjB,CA2Q8B8vpB,CAAqB9vpB,EAAE0O,OAAOzZ,MAArC,EACVwZ,MAAM,uCACNwhB,QAAQ,SACR2lU,WAAS,EACT3gW,MAAOkgnB,GAAax7K,YACpB5sH,KAAM,KAGLw3B,GAAAA,KACD,WAACwnT,GAAD,YACE,UAAC,GAAD,CAAe97nB,QAAQ,YAAY7zB,KAAK,SAASwI,KAAK,SAAS8a,MAAM,QAAQulV,QAASioT,EAAiB1e,UAAWqf,GAAkB,UAAC6B,GAAA,EAAD,KAAgB,UAAChE,GAAA,EAAD,IAAuBX,gBAAgB,QAAQtloB,GAAI,CACrMlkB,SAAU,WAAYk4B,UAAW,OAAQ,YAAa,CAAExB,QAAS,SAChEo8I,QAASk7e,GAFZ,SAEyChrT,GAAAA,GAAW,SAAW,oBAC/D,WAAC,GAAD,CAAQt0U,QAAQ,YAAYrrB,KAAK,SAAS8a,MAAM,UAAU+F,GAAI,CAAElkB,SAAU,WAAYk4B,UAAW,OAAQgC,MAAO,MAAO/B,YAAa,OAAS80mB,WAAW,UAACuhB,GAAA,EAAD,IAAgB17e,QAASm7e,GAAjL,cAA8MjrT,GAAAA,GAAW,MAAQ,oBAMrO,UAACqnT,GAAD,CAAc37nB,QAAQ,SAASxK,GAAI,CAAEwS,QAAS,cAC9C,WAAC,GAAD,CAAOhE,QAAS,EAAhB,UAEIkhlB,GAAai5C,UAAUtzpB,KAAI,SAACwwpB,EAAepzpB,GAAhB,OACzBozpB,EAASuD,YAAc,GACrB,WAAC7C,GAAD,CAA+Bn+nB,MAAO,CAAE+L,WAAY2qU,GAAAA,GAAW,KAAO,MAAO5qU,aAAc,OAAQjS,MAAO68U,GAAAA,GAAW,MAAQ,OAA7H,UAEIA,GAAAA,IAEE,UAAC,GAAD,CAEE+mT,SAAUA,EACVpzpB,MAAOA,EACPqzpB,qBAAsBA,IAHjBrzpB,IAMP,UAAC,GAAD,CACE+3B,QAAQ,WACRrrB,KAAK,SACL8a,MAAM,QACN20J,QAAS,kBAAOk3e,GAAqBrzpB,EAA5B,EACT21B,MAAO,CAAEtsB,SAAU,WAAYk6B,MAAO,OAAQD,IAAK,OAAQzD,SAAUwsU,GAAAA,GAAW,QAAU,GAAIvuU,QAASuuU,GAAAA,GAAW,mBAAqB,IALzI,SAKgJA,GAAAA,GAAW,IAAM,YAErK,UAAC6nT,GAAD,CACE39oB,MAAM,gBACNshoB,aAAa,MACb96oB,MAAOq2pB,EAAS7kiB,MAChB7hH,KAAM2/V,GAAAA,GAAW,QAAU,SAC3BjsL,SAAU,SAACt4K,GAAD,OA5OD,SAACA,EAAwDgwpB,GACxF1C,GAAa,GACbI,GAAW,GACXI,GAAmB,GACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACm1pB,GAClC,OAAID,EAAYnB,aAAeoB,EAAKpB,YAC3B,oBACFoB,GADL,IAEExpiB,MAAOzmH,EAAE0O,OAAOzZ,QAGbg7pB,CACR,KAVa,GAYjB,CA4NwCC,CAAyBlwpB,EAAGsrpB,EAAnC,EACVz9nB,MAAO,CAAEnG,MAAO68U,GAAAA,GAAW,MAAQ,UAErC,UAAC,GAAD,CAAS9+U,GAAI,CAAEgU,UAAW8qU,GAAAA,GAAW,GAAK,OAAQtsU,QAAS,cAE3D,UAACq0nB,GAAD,UAEIhB,EAASwD,WAAWh0pB,KAAI,SAAC0xG,EAAS2viB,GAAV,OACtB,WAACoQ,GAAD,YACE,UAACC,GAAD,CAAiBv8nB,QAAQ,WAAWvQ,MAAM,QAAQ9a,KAAK,SAAS6gB,GAAI,CAAEsS,SAAUwsU,GAAAA,GAAW,QAAU,UAAW78U,MAAO,QAAU2sJ,QAAS,kBAnOhJ,SAACi3e,EAAoBpzpB,GAC3Co1pB,GAAa,GACbI,GAAW,GACXI,GAAmB,GACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAClC,OAAIqvmB,EAASuD,aAAe5ymB,EAAG4ymB,YACtB,oBACF5ymB,GADL,IAEE6ymB,WAAY7ymB,EAAG6ymB,WAAWv9nB,QAAO,SAACi7E,EAAS9sG,GAAV,OAAwBA,IAAMxH,CAA9B,MAG9B+jD,CACR,KAVa,GAYjB,CAmN8Kk0mB,CAAgB7E,EAAUnP,EAAjC,EAA1I,gBACA,UAAC,GAAD,CAASqB,UAAQ,EAAC9ukB,YAAY,WAAWjpD,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,MAAQ,OAAQtsU,QAAS,YAC/F,UAACw0nB,GAAD,UAAgBtQ,EAAS,KACzB,UAACyQ,GAAD,CACEhopB,KAAK,QACLmroB,aAAa,MACbr7d,WAAY,SAAC58K,GACN,QAAQqV,KAAKrV,EAAMuB,MACtBvB,EAAMo7D,gBAET,EACDj+D,MAAmB,KAAZu3G,EAAGuijB,KAAc,GAAKvijB,EAAGuijB,KAChCz2e,SAAU,SAACt4K,GAAD,OA7Ud,SAACA,EAAwDsrpB,EAAoBpzpB,GACvGo1pB,GAAa,GACbI,GAAW,GACXI,GAAmB,GACnB,IAAIsC,EAAcpwpB,EAAE0O,OAAOzZ,MAAOZ,WAAW2e,OAAO,GAChDyc,OAAOzvB,EAAE0O,OAAOzZ,OAAS,MAGL,MAAfm7pB,EACPpwpB,EAAE0O,OAAOzZ,MAAQ,IAEgB,IAA1B+K,EAAE0O,OAAOzZ,MAAMyC,SACtBsI,EAAE0O,OAAOzZ,MAAQ,IAGnBo5pB,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAClC,OAAIqvmB,EAASuD,aAAe5ymB,EAAG4ymB,WACtB5ymB,GAEF,oBACFA,GADL,IAEE6ymB,WAAY7ymB,EAAG6ymB,WAAWh0pB,KAAI,SAAC0xG,EAAS9sG,GACtC,OAAIA,IAAMxH,GACD,oBACFs0G,GADL,IAEEuijB,KAAM/upB,EAAE0O,OAAOzZ,QAGZu3G,CACR,KAEJ,KAlBa,IAoBjB,CA0SgD6jjB,CAAoBrwpB,EAAGsrpB,EAAUnP,EAAxC,EACVF,WAAY,CAAEztnB,IAAK,IAAK8hoB,UAAW,WACnCtU,WAAY,CACVvD,cAAc,UAAE,GAAF,CAAiBl3oB,SAAS,MAAMssB,MAAO,CAAEnO,MAAO,SAAhD,UACZ,UAAC,GAAD,yBAIN,UAACmtoB,GAAD,CACEjopB,KAAK,QACLmroB,aAAa,MACbr7d,WAAY,SAAC58K,GACN,SAASqV,KAAKrV,EAAMuB,MACvBvB,EAAMo7D,gBAET,EACDj+D,MAAuB,KAAfu3G,EAAGwijB,OAAiB,GAAKxijB,EAAGwijB,OACpC12e,SAAU,SAACt4K,GAAD,OAzTZ,SAACA,EAAwDsrpB,EAAoBpzpB,GACzGo1pB,GAAa,GACbI,GAAW,GACXI,GAAmB,GACnB,IAAIsC,EAAcpwpB,EAAE0O,OAAOzZ,MAAOZ,WAAW2e,OAAO,GACpD,KAAIyc,OAAOzvB,EAAE0O,OAAOzZ,OAAS,OAA7B,CAGK,GAAmB,MAAfm7pB,EACPpwpB,EAAE0O,OAAOzZ,MAAQ,SAEd,GAAK+K,EAAE0O,OAAOzZ,MAAMqH,SAAS,KAAO,CACvC,IAAIovC,EAAS1rC,EAAE0O,OAAOzZ,MAAOmE,MAAM,KAC/BsyC,EAAMh0C,OAAS,IACjBsI,EAAE0O,OAAOzZ,MAAQy2C,EAAM,GAAK,IAAMA,EAAM,GAAG7zB,UAAU,EAAG,GAE3D,CACDw2oB,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAClC,OAAIqvmB,EAASuD,aAAe5ymB,EAAG4ymB,WACtB5ymB,GAEF,oBACFA,GADL,IAEE6ymB,WAAY7ymB,EAAG6ymB,WAAWh0pB,KAAI,SAAC0xG,EAAS9sG,GACtC,OAAIA,IAAMxH,GACD,oBACFs0G,GADL,IAEEwijB,OAAQhvpB,EAAE0O,OAAOzZ,QAGdu3G,CACR,KAEJ,KAlBa,GADf,CAqBF,CAoRiD+jjB,CAAsBvwpB,EAAGsrpB,EAAUnP,EAA3C,EACVF,WAAY,CAAEqU,UAAW,WACzBtU,WAAY,CACVvD,cAAc,UAAE,GAAF,CAAiBl3oB,SAAS,MAAMssB,MAAO,CAAEnO,MAAO,SAAhD,UACZ,UAAC,GAAD,4BAlCWy8nB,EADG,OA4C5B,WAAC+P,GAAD,YACE,UAAC,GAAD,CAASzmoB,GAAI,CAAEwS,QAAS,cACxB,UAACk0nB,GAAD,CAAcl8nB,QAAQ,YAAYrrB,KAAK,QAAQyvK,QAAS,kBAxZ1D27e,EAwZ6E1E,EAvZjGgC,GAAa,GACbI,GAAW,GACXI,GAAmB,QACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEdg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAClC,OAAI+zmB,EAAYnB,aAAe5ymB,EAAG4ymB,YACzB,oBACF5ymB,GADL,IAEE6ymB,WAAW,GAAD,gBACL7ymB,EAAG6ymB,YADE,CAER,CACEC,KAAM,GACNC,OAAQ,QAKT/ymB,CACR,KAhBa,IAJG,IAAC+zmB,CAwZ0D,EAAxD,0BA5EoB93pB,GA+EtB,IAjFqB,KAoF7B,2BACE,UAAC4zpB,GAAD,WACE,UAAC,GAAD,CAAQ77nB,QAAQ,YAAY7zB,KAAK,SAASwI,KAAK,QAAQyvK,QArb/C,WACxBi5e,GAAa,GACbI,GAAW,GACXI,GAAmB,GACnBO,IAAgB,SAACj2E,GAAD,gBAAC,WACZA,GADW,IAEd+1E,UAAW/1E,EAAU+1E,UAAY,EACjCC,UAAU,GAAD,gBACJh2E,EAAUg2E,WADN,CAEP,CACES,WAAYz2E,EAAU+1E,UACtB1niB,MAAO,GACPqoiB,WAAY,CAAC,CACXC,KAAM,GACNC,OAAQ,SAVA,GAejB,EAkaoGvpoB,GAAI,CAAEwS,QAAS,UAAW0B,aAAc,QAA3H,8BAIF4qU,GAAAA,KACA,mCACE,UAAC,GAAD,CACEhvV,KAAM+4oB,GACNr9D,QA/mBK,kBAAMs9D,IAAa,EAAnB,EAgnBLzrD,sBAAoB,EACpBn6kB,MAAO,CAAEk7kB,SAAUY,IACnBtlkB,UAAW,CACT0kkB,SAAU,CACR/lkB,QAAS,MAPf,UAWE,UAAC,GAAD,CAAMk6iB,GAAIs2E,GAAV,UACE,WAACxB,GAAD,YACE,UAAC,GAAD,CAAe1wpB,KAAK,SAASwI,KAAK,SAASqgW,QAASioT,EAAiB1e,UAAWqf,GAAkB,UAAC6B,GAAA,EAAD,KAAgB,UAAChE,GAAA,EAAD,CAAmBjmoB,GAAI,CAAE/F,MAAO,SAAaqroB,gBAAgB,QAAQtloB,GAAI,CACzL,YAAa,CAAEwS,QAAS,QACxBvY,MAAO,OACN20J,QAAS,kBAAMo6e,IAAoB,EAA1B,EAHZ,2CAIA,UAAC,GAAD,CAAQ7ppB,KAAK,SAAS4poB,WAAW,UAACuhB,GAAA,EAAD,IAAgB17e,QAAS,SAACr0K,GAAD,OAAQwvpB,KAA6BjB,IAAa,EAAlD,EAA2D9ooB,GAAI,CAAE/F,MAAO,SAAlI,0CACA,UAAC,GAAD,CAAQ20J,QAAS,kBAAMk6e,IAAa,EAAnB,EAA2B9ooB,GAAI,CAAE/F,MAAO,SAAzD,2BAIN,UAAC,GAAD,CACEnK,KAAMi5oB,GACNv9D,QAAS,kBAAMw9D,IAAoB,EAA1B,EAFX,UAIE,WAAC1B,GAAD,YACE,WAAC,GAAD,CAAYl/nB,MAAO,CAAEnO,MAAO,SAA5B,uCAAgE,kBAAMmO,MAAO,CAAEnO,MAAO,UAAWoc,UAAW,UAA5C,gCAAhE,qBAEA,kBAAKjO,MAAO,CAAElG,QAAS,OAAQ8S,cAAe,MAAOhB,UAAW,OAAQ/R,MAAO,UAA/E,WACE,UAAC,GAAD,CAAQuI,QAAQ,WAAWxK,GAAI,CAAEiU,YAAa,OAAQhS,MAAO,OAAS2sJ,QAAS,kBAAOk7e,KAA6Bd,IAAoB,EAAxD,EAA/E,kBACA,UAAC,GAAD,CAAQx+nB,QAAQ,WAAWxK,GAAI,CAAEiC,MAAO,OAAS2sJ,QAAS,kBAAMo6e,IAAoB,EAA1B,EAA1D,sCAczB,ICvtBD,GApBoB,SAAC5spB,GACnB,IAAMwykB,EAAWpC,IACjB,GAAkCx9D,EAAAA,EAAAA,UAA6Bi6I,MAA/D,eAAOriB,EAAP,UAQA,OAPAj4H,EAAAA,EAAAA,YAAU,gBAEiB11gB,IADAgwpB,OAEvB8B,MAAM,sBACNn8E,EAAS,YAEZ,GAAE,KAED,mCACE,UAAC,GAAD,CAAQ5td,MAAK,iBAAK4lhB,QAAL,IAAKA,OAAL,EAAKA,EAAWr5nB,OAAO,GAAGyqB,eAA1B,cAA0C4umB,QAA1C,IAA0CA,OAA1C,EAA0CA,EAAWvwoB,MAAM,GAAGyP,cAA9D,iBACb,UAAC,GAAD,MAKL,ECxBM,SAASklpB,GAA0BvqoB,GACxC,OAAOC,EAAAA,GAAAA,GAAqB,gBAAiBD,EAC9C,CACD,IACA,IAD0BE,EAAAA,GAAAA,GAAuB,gBAAiB,CAAC,OAAQ,SAAU,SAAU,UAAW,QAAS,cCH7GjK,GAAY,CAAC,SAAU,SAAU,YAAa,YAAa,oBAAqB,YAAa,2BAA4B,QAAS,wBAyBlIu0oB,IAAiB7qoB,EAAAA,GAAAA,IAAO,MAAO,CACnC11B,KAAM,gBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,aAAmB0I,EAAAA,EAAAA,IAAQ,6BACrC6gpB,GAAAA,OAA4BvppB,EAAOq/G,QADE,uBAErCkqiB,GAAAA,WAAgCvppB,EAAOw1lB,WAFF,GAG3Cx1lB,EAAOzF,KAHS,GAHEkkB,CAOpB,CACD8B,QAAS,OACTiT,WAAY,SACZ5E,QAAS,KAEL46nB,IAAmB/qoB,EAAAA,GAAAA,IAAO,MAAO,CACrC11B,KAAM,gBACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAO4uoB,MAA1B,GAHInwnB,CAItB,CACD8B,QAAS,OACT9e,KAAM,WACN6wB,YAAa,KAETm3nB,IAAmBhroB,EAAAA,GAAAA,IAAO,MAAO,CACrC11B,KAAM,gBACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOwV,MAA1B,GAHIiJ,CAItB,CACDhd,KAAM,WACNiyB,UAAW,aACXrB,WAAY,EACZC,aAAc,EACdC,cAAe,IAEXm3nB,IAAoBjroB,EAAAA,GAAAA,IAAO,MAAO,CACtC11B,KAAM,gBACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOwgC,OAA1B,GAHK/hB,CAIvB,CACDhd,KAAM,aAEFkopB,GAA0B7gpB,EAAAA,YAAiB,SAAoBgY,EAASlgB,GAC5E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,kBAGJysB,EASE/a,EATF+a,OACAo5nB,EAQEn0oB,EARFm0oB,OACA9moB,EAOErN,EAPFqN,UAHJ,EAUMrN,EANFsmB,UAAAA,OAJJ,MAIgB,MAJhB,IAUMtmB,EALF48oB,kBAAAA,OALJ,SAMeuS,EAITnvpB,EAJF+6lB,UACAq0D,EAGEpvpB,EAHFovpB,yBACOC,EAELrvpB,EAFF4kH,MACA0qiB,EACEtvpB,EADFsvpB,qBAEF5yoB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,EACAs2nB,kBAAAA,IAEI/1nB,EA1EkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAUF,OAAOE,EAAAA,GAAAA,GARO,CACZjnB,KAAM,CAAC,QACPq0oB,OAAQ,CAAC,UACTp5nB,OAAQ,CAAC,UACTgrB,QAAS,CAAC,WACV6+E,MAAO,CAAC,SACRm2e,UAAW,CAAC,cAEe6zD,GAA2B/noB,EACzD,CA6DiBG,CAAkBtC,GAC9BkgG,EAAQyqiB,EACC,MAATzqiB,GAAiBA,EAAMrqH,OAASq4nB,IAAegqB,IACjDh4hB,GAAqBv9F,EAAAA,GAAAA,KAAKurmB,IAAY3knB,EAAAA,EAAAA,GAAS,CAC7CmgB,QAAS+lnB,EAAS,QAAU,KAC5B9moB,UAAWwZ,EAAQ+9F,MACnBt+F,UAAW,OACXR,QAAS,SACRwpoB,EAAsB,CACvBrvpB,SAAU2kH,MAGd,IAAIm2e,EAAYo0D,EAYhB,OAXiB,MAAbp0D,GAAqBA,EAAUxgmB,OAASq4nB,IAAegqB,IACzD7hD,GAAyB1zkB,EAAAA,GAAAA,KAAKurmB,IAAY3knB,EAAAA,EAAAA,GAAS,CACjDmgB,QAAS+lnB,EAAS,QAAU,QAC5B9moB,UAAWwZ,EAAQk0kB,UACnBl9kB,MAAO,iBACPyI,UAAW,OACXR,QAAS,SACRspoB,EAA0B,CAC3BnvpB,SAAU86lB,OAGM9zkB,EAAAA,GAAAA,MAAM4noB,IAAgB5gpB,EAAAA,EAAAA,GAAS,CACjDZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BD,GAAIkZ,EACJngB,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,SAAU,CAACk0oB,IAAuB9snB,EAAAA,GAAAA,KAAK0noB,GAAkB,CACvD1hpB,UAAWwZ,EAAQstnB,OACnBzvnB,WAAYA,EACZzkB,SAAUk0oB,KACKltnB,EAAAA,GAAAA,MAAMgooB,GAAmB,CACxC5hpB,UAAWwZ,EAAQkf,QACnBrhB,WAAYA,EACZzkB,SAAU,CAAC2kH,EAAOm2e,KAChBhglB,IAAuBsM,EAAAA,GAAAA,KAAK2noB,GAAkB,CAChD3hpB,UAAWwZ,EAAQ9L,OACnB2J,WAAYA,EACZzkB,SAAU8a,OAGf,IA8DD,MC/LO,SAASw0oB,GAA2BlroB,GACzC,OAAOC,EAAAA,GAAAA,GAAqB,iBAAkBD,EAC/C,EAC0BE,EAAAA,GAAAA,GAAuB,iBAAkB,CAAC,SAArE,+ECHMjK,GAAY,CAAC,YAAa,aAkB1Bk1oB,IAAkBxroB,EAAAA,GAAAA,IAAO,MAAO,CACpC11B,KAAM,iBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOzF,IAA1B,GAHGkkB,EAIrB,WACD,MAAO,CACLmQ,QAAS,GACT,eAAgB,CACd2C,cAAe,IAGpB,IAiDD,GAhDiCzoB,EAAAA,YAAiB,SAAqBgY,EAASlgB,GAC9E,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,mBAGJ+e,EAEErN,EAFFqN,UADJ,EAGMrN,EADFsmB,UAAAA,OAFJ,MAEgB,MAFhB,EAIE5J,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrCsmB,UAAAA,IAEIO,EAlCkB,SAAAnC,GACxB,IACEmC,EACEnC,EADFmC,QAKF,OAAOE,EAAAA,GAAAA,GAHO,CACZjnB,KAAM,CAAC,SAEoByvpB,GAA4B1ooB,EAC1D,CA0BiBG,CAAkBtC,GAClC,OAAoB2C,EAAAA,GAAAA,KAAKmooB,IAAiBvhpB,EAAAA,EAAAA,GAAS,CACjDb,GAAIkZ,EACJjZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BqX,WAAYA,EACZve,IAAKA,GACJuW,GACJ,gDCuaD,GAAe9F,IAjciB,WAAO,IAAD,cAC5B47jB,EAAWpC,IACjB,EhFiEG,WACH,OAA8Bx9D,EAAAA,EAAAA,WAAS,GAAvC,eAAOxvK,EAAP,KAAgBqsT,EAAhB,KACA,GAAsC78I,EAAAA,EAAAA,YAAtC,eAAO88I,EAAP,KAAoBC,EAApB,KACMC,EAAO,yCAAG,WAAO73pB,EAAavI,GAApB,8FACN83oB,KADM,yCAIL93oB,GAJK,iBAKMsjnB,KALN,gCAKRI,OALQ,MAGN28C,GAHM,uCASUppB,GATV,KASoBxxoB,GAAAA,QAAAA,IAAqB8C,EATzC,KAS8C83pB,EAT9C,UAWuBr0G,KAXvB,iCAWA,cAXA,aAUJ1ijB,QAVI,qBASgBm0iB,IAThB,oCASF37a,EATE,QAcA9hI,MACJmgqB,EAAer+hB,EAAI9hI,MAff,oDAmBR+B,QAAQm3D,IAAR,OAnBQ,QAqBZ+mmB,GAAW,GArBC,2DAAH,wDAyBb,MAAO,CACHK,WAAY1sT,EACZ2sT,YAAaL,EACbE,QAAAA,EAEP,CgFlGgDI,GAAZJ,GAAjC,EAAQE,WAAR,EAAoBC,YAApB,EAAiCH,SACjC,EhFiCG,WACH,OAA8Bh9I,EAAAA,EAAAA,WAAS,GAAvC,eAAOxvK,EAAP,KAAgBqsT,EAAhB,KACA,GAAgC78I,EAAAA,EAAAA,YAAhC,eAAOq9I,EAAP,KAAiBC,EAAjB,KAEMC,EAAQ,yCAAG,WAAOp4pB,EAAavI,GAApB,8FACP83oB,KADO,yCAIN93oB,GAJM,iBAKKsjnB,KALL,gCAKTI,OALS,MAGP28C,GAHO,uCAQSppB,GART,KAQoBxxoB,GAAAA,QAAAA,IAAqB8C,EARzC,KAQ8C83pB,EAR9C,UAUsBr0G,KAVtB,iCAUD,cAVC,aASL1ijB,QATK,qBAQegK,KARf,mCAQHwuH,EARG,OAaT4+hB,EAAY5+hB,EAAI9hI,KAAKA,MAbZ,oDAeT+B,QAAQm3D,IAAR,OAfS,QAiBb+mmB,GAAW,GAjBE,2DAAH,wDAoBd,MAAO,CACHW,YAAahtT,EACb6sT,SAAAA,EACAE,SAAAA,EAEP,CgF9D+CE,GAAbF,GAA/B,EAAQC,YAAR,EAAqBH,SAArB,EAA+BE,UAE/B,GAAoCv9I,EAAAA,EAAAA,WAAS,GAA7C,eAAO24I,EAAP,KAAmBC,EAAnB,KACA,GAAkC54I,EAAAA,EAAAA,WAAS,GAA3C,eAAO09I,EAAP,KAAkBC,EAAlB,KACA,GAAkC39I,EAAAA,EAAAA,WAAS,GAA3C,eAAO/4a,EAAP,KAAkBuxjB,EAAlB,KACA,GAA0Cx4I,EAAAA,EAAAA,WAAS,GAAnD,eAAOq2H,EAAP,KAAsBC,EAAtB,KACA,GAAkCt2H,EAAAA,EAAAA,WAAS,GAA3C,eAAOijB,EAAP,KAAkB41H,EAAlB,KACA,GAA8B74I,EAAAA,EAAAA,WAAS,GAAvC,eAAOg5I,EAAP,KAAgBC,EAAhB,KACA,GAAgDj5I,EAAAA,EAAAA,WAAS,GAAzD,eAAO49I,EAAP,KAAyBC,EAAzB,KACA,GAA4C79I,EAAAA,EAAAA,WAAS,GAArD,eAAO89I,EAAP,KAAuBC,EAAvB,KACA,GAAgD/9I,EAAAA,EAAAA,WAAS,GAAzD,eAAOg+I,EAAP,KAAyBC,EAAzB,KACA,IAAwCj+I,EAAAA,EAAAA,UAAS,CAC7ChuZ,MAAO,GACPkzU,YAAa,KAFjB,iBAAOw7K,GAAP,MAAqBk5C,GAArB,OAKAj6I,EAAAA,EAAAA,YAAU,WACN,IAAMh3gB,EAAK,yCAAG,0FACV2toB,GAAiB,GADP,SAEJU,GAAAA,gBAFI,OAGNA,GAAAA,eAAAA,OAA4C,GAC5C6mB,GAAoB,GACpBjE,IAAgB,SAACpspB,GAAD,gBAAC,WAAeA,GAAhB,IAAsBwkH,MAAOglhB,GAAAA,eAAAA,GAAAA,MAA6C9xM,YAAa8xM,GAAAA,eAAAA,GAAAA,aAAqD,IAA5I,KAGhB6mB,GAAoB,GAGxBvnB,GAAiB,GAXP,2CAAH,qDAaX3toB,GACH,GAAE,IAIH,IAeMu1pB,GAAoB,SAAC79oB,GACvB,GAAI24oB,EACA,OAAOp5E,EAAS,YAAD,OAAav/jB,IAEhC07oB,MAAM,kDACT,EACKvB,GAAY,yCAAG,WAAOjvpB,GAAP,qFAEjBstpB,GAAa,IACTn4C,GAAa1uf,MAHA,oBAKR0uf,GAAax7K,YALL,uBAMTy4N,GAAa,GANJ,8BAST3E,EATS,uBAUTH,GAAa,GAVJ,6BAabL,GAAa,GAbA,UAeLoF,EAfK,kCAiBCZ,EAAQ,iBAAkB,CAC5BhriB,MAAO0uf,GAAa1uf,MACpBkzU,YAAaw7K,GAAax7K,YAC1B7kb,GAAI22nB,GAAAA,eAAAA,GAAAA,KApBH,iDAkCCumB,EAAS,iBAAkB,CAC7BvriB,MAAO0uf,GAAa1uf,MACpBkzU,YAAaw7K,GAAax7K,cApCzB,QAkDTszN,GAAa,GACbS,GAAW,GACXJ,GAAa,GACbgF,GAAoB,GArDX,kDAwDHl7G,EAxDG,sCAwDY,KAAK/5iB,gBAxDjB,iBAwDY,EAAehM,YAxD3B,iBAwDY,EAAqB+E,aAxDjC,aAwDY,EAA4BjF,QACjDiC,QAAQm3D,IAAI6sf,GAzDH,gCA6Dbi2G,GAAc,GA7DD,0DAAH,sDAiEZuF,GAA6B,yCAAG,qGAE9BJ,GAAkB,IAEZK,EAAgBpnB,GAAAA,cAAAA,QAAyC,SAACgf,GAAD,OAAmC,OAAtBA,EAAQpe,SAArB,KAC5C30oB,OALW,uBAM1B86pB,GAAkB,GANQ,0CASxBR,EAAS,eAAgB,CAC3B7C,UAAW1jB,GAAAA,eAAAA,GAAAA,GACXjC,eAAgBqpB,IAXU,yDA0B9Bz/pB,QAAQm3D,IAAR,MA1B8B,yBA4B5BkhlB,GAAAA,gBA5B4B,QA6BlC+mB,GAAkB,GA7BgB,0DAAH,qDAgC7BM,GAA0B,yCAAG,qGAE3BJ,GAAoB,IAEdG,EAAgBpnB,GAAAA,cAAAA,QAAyC,SAACgf,GAAD,OAAmC,OAAtBA,EAAQpe,SAArB,KAC5C30oB,OALQ,uBAMvBg7pB,GAAoB,GANG,0CASrBV,EAAS,kBAAmB,CAC9B7C,UAAW1jB,GAAAA,eAAAA,GAAAA,GACXjC,eAAgBqpB,IAXO,yDAe3Bz/pB,QAAQm3D,IAAR,MAf2B,yBAiBzBkhlB,GAAAA,gBAjByB,QAkB/BinB,GAAoB,GAlBW,0DAAH,qDAyBhC,OACI,iCACI,UAAC,GAAD,WACI,UAAC,GAAD,UACK5nB,GACG,iBAAKj9mB,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACI,UAAC,GAAD,OAGJ,mCACI,WAAC,GAAD,YACMwoU,GAAAA,KAAY,UAAC,GAAD,CAAQt0U,QAAQ,YAAYrrB,KAAK,QAAQ8a,MAAM,UAAU20J,QAf1E,WACrBgga,EAAS,IACZ,EAa6H5ujB,GAAI,CAAElkB,SAAU,WAAYo6B,KAAM,OAAQlC,UAAW,QAAzI,mBACd,UAAC,GAAD,CAAexJ,QAAQ,YAAY7zB,KAAK,SAASwI,KAAM,QAASqgW,QAASvpQ,EAAWqvjB,gBAAgB,QAAQvc,UAAW92G,GAAY,UAACg4H,GAAA,EAAD,KAAgB,UAACC,GAAA,EAAD,IAAclqoB,GAAI,CACjKlkB,SAAU,WAAYk6B,MAAO,OAAQhC,UAAW,OAAQxB,QAASy/f,EAAY,QAAU,UAAW,YAAa,CAC3Gz/f,QAAS,QAEb,SAAU,CACNA,QAASy/f,EAAY,QAAU,YAEpCrjX,QAAS46e,GAPZ,sBASJ,UAAC,GAAD,CACI32e,SAAU,SAACt4K,GAAD,OArKf,SAAClI,EAAYkI,GAChCqtpB,GAAc,GACdK,GAAW,GACXJ,GAAa,GACbe,IAAgB,SAACpspB,GAAD,gBAAC,WAAeA,GAAhB,IAAsBwkH,MAAOzmH,GAA7B,GACnB,CAgK4C4vpB,CAAe5vpB,EAAGA,EAAE0O,OAAOzZ,MAAlC,EACVwZ,MAAM,uBACNwhB,QAAQ,WACRh7B,MAAOkgnB,GAAa1uf,MACpB3nF,UAAQ,EACR1oC,MAAOg3pB,EACP/zI,WAAYg5I,KAEhB,UAACU,GAAD,CACIz6e,SAAU,SAACt4K,GAAD,OAvKT,SAAClI,EAAYkI,GAEtCoypB,GAAa,GACb1E,GAAW,GACXJ,GAAa,GACbe,IAAgB,SAACpspB,GAAD,gBAAC,WAAeA,GAAhB,IAAsB03b,YAAa35b,GAAnC,GACnB,CAiK4C8vpB,CAAqB9vpB,EAAGA,EAAE0O,OAAOzZ,MAAxC,EACVwZ,MAAM,4CACNwhB,QAAQ,SACRh7B,MAAOkgnB,GAAax7K,YACpB/jG,WAAS,EACT7oB,KAAM,EACNjuS,UAAQ,EACR1oC,MAAO+7pB,KAEX,WAACa,GAAD,YAEI,WAACC,GAAD,YACI,UAAC,GAAD,CAAehuT,QAASwtT,EAAkBjkB,UAAWjqS,GAAAA,IAAW,UAAC2uT,GAAA,EAAD,KAAsB,UAACC,GAAA,EAAD,IAAcpI,gBAAgB,QAAQ96nB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,QAAU,QAAS7kV,MAAM,OAAO20J,QAASy+e,GACtMrtoB,GAAI,CACA,YAAa,CACTwS,QAAS,QAEb,SAAU,CACNA,QAAS,WAEbvQ,MAAQ68U,GAAAA,GAAW,MAAQ,OAC3BrsU,gBAAiB,UACjBrvB,KAAM07V,GAAAA,GAAW,GAAK,GAV9B,4BAkBEA,GAAAA,KACE,WAAC6uT,GAAD,YACI,UAAC59B,EAAA,EAAD,CAAmB91mB,MAAM,UAAU+F,GAAI,CAAEhF,SAAU,GAAImZ,WAAY2qU,GAAAA,GAAW,OAAS,OACvF,UAAC8uT,GAAD,CAAUxloB,MAAO,CAAEnO,MAAO,QAASe,SAAU,QAA7C,gCAER,UAAC,GAAD,CAAewkV,QAASstT,EAAgB/jB,UAAWjqS,GAAAA,IAAW,UAAC+uT,GAAA,EAAD,IAAwB,GAAI5kB,QAASnqS,GAAAA,GAAW,IAAK,UAACgvT,GAAA,EAAD,IAAcxI,gBAAgB,QAAQ96nB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,QAAU,QAAS7kV,MAAM,OAAO20J,QAASu+e,GACnOntoB,GAAI,CACA,YAAa,CACTwS,QAAS,QAEb,SAAU,CACNA,QAAS,WAEbvQ,MAAQ68U,GAAAA,GAAW,MAAQ,OAC3BrsU,gBAAiB,UACjBrvB,KAAM07V,GAAAA,GAAW,GAAK,GAV9B,+BAiBJ,WAACivT,GAAD,YACI,WAACC,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,YACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,iBAA9C,eAAyDhlhB,QAAS,cAEvE,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,UAAY,eAAiB,yBAIvM,WAACgoB,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,YACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,iBAA9C,eAAyDhlhB,QAAS,cAEvE,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,UAAY,eAAiB,yBAIvM,WAACgoB,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,aACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,kBAA9C,eAA0DhlhB,QAAS,cAGxE,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,WAAa,eAAiB,yBAIxM,WAACgoB,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,eACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,oBAA9C,eAA4DhlhB,QAAS,cAG1E,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,aAAe,eAAiB,yBAI1M,WAACgoB,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,cACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,mBAA9C,eAA2DhlhB,QAAS,cAGzE,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,YAAc,eAAiB,yBAIzM,WAACgoB,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,YACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,iBAA9C,eAAyDhlhB,QAAS,cAEvE,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,UAAY,eAAiB,yBAIvM,WAACgoB,GAAD,YACI,UAACC,GAAD,CAAiBjtiB,MAAM,cACvB,WAACktiB,GAAD,YACI,UAACC,GAAD,CAAmB3joB,QAAQ,KAAKmzK,MAAM,SAAtC,UACK,UAAAywd,GAAWpoB,GAAAA,cAAmC,mBAA9C,eAA2DhlhB,QAAS,cAGzE,UAACqtiB,GAAD,WACI,UAACC,GAAD,CAAe9joB,QAAQ,YAAYrrB,KAAM2/V,GAAAA,GAAW,SAAW,QAASlwL,QAAS,kBAAMs+e,GAAkB,IAAxB,EAAjF,SAAgHkB,GAAWpoB,GAAAA,cAAmC,YAAc,eAAiB,sCAyG5O,IAIKnX,GAAYzumB,EAAAA,EAAAA,IAAH,4MAQXuloB,GACmB7mT,GAAAA,GAAwC,QAA5B/yW,GAAAA,GAAAA,cAAoC,wCAA0C,QAAW,IAGtHm6pB,GAAS9loB,EAAAA,EAAAA,IAAH,8FAONgjhB,GAAUhjhB,EAAAA,EAAAA,IAAH,yLACH0+U,GAAAA,GAAW,OAAS,MAKPA,GAAAA,GAAW,QAAU,GACxB/yW,GAAAA,GAAAA,mBAA+B,4CAA+C+yW,GAAAA,GAAW,QAAU,IAEjHmoT,IAAuB7moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC3C4T,UAAW,KACX/R,MAAO,MACPkS,WAAY,MACZ6nnB,KAAM,OACN,sBAAuB,CACnB/hoB,MAAO,aAEX,4BAA6B,CACzBA,MAAO,SAEX,2BAA4B,CACxB,aAAc,CACVqX,YAAa,WAEjB,mBAAoB,CAChBA,YAAa,aAEjB,yBAA0B,CACtBA,YAAa,cAGrB,wBAAyB,CACrBrX,MAAO,aAITqzoB,IAAsBltoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC1C+T,WAAY,MACZlS,MAAO,MACP,sBAAuB,CACnBhI,MAAO,aAEX,0BAA2B,CACvBA,MAAO,SAEX,yBAA0B,CACtB,WAAY,CACRwX,kBAAmB,WAEvB,iBAAkB,CACdA,kBAAmB,WAEvB,sBAAuB,CACnBA,kBAAmB,cAG3B,wBAAyB,CACrBxX,MAAO,aAKTszoB,GAAiBntoB,EAAAA,EAAAA,IAAH,mKAOD0+U,GAAAA,GAAW,QAAU,SAGlC0uT,GAAqBptoB,EAAAA,EAAAA,IAAH,gRAOH0+U,GAAAA,GAAW,gBAAkB,SAEjCA,GAAAA,GAAW,KAAO,GACjBA,GAAAA,GAAW,KAAO,GACjBA,GAAAA,GAAW,KAAO,IAG/B8uT,GAAWxtoB,EAAAA,EAAAA,KAAH,yCAIRutoB,GAAgBvtoB,EAAAA,EAAAA,IAAH,0KAUb2toB,GAAc3toB,EAAAA,EAAAA,IAAH,qEACJ0+U,GAAAA,GAAW,GAAK,QAKvBkvT,IAAY5toB,EAAAA,EAAAA,GAAOomoB,GAAPpmoB,CAAH,qIAIE0+U,GAAAA,GAAW,KAAO,GAChBA,GAAAA,GAAW,KAAO,IAG/BmvT,IAAkB7toB,EAAAA,EAAAA,GAAOkroB,GAAPlroB,CAAH,qJASfiuoB,GAAuBjuoB,EAAAA,EAAAA,IAAH,yLAOL0+U,GAAAA,GAAW,GAAK,QAG/BwvT,IAAgBluoB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAH,0BAIb+toB,IAAoB/toB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,qEACL0+U,GAAAA,GAAW,OAAS,QACjBA,GAAAA,GAAW,OAAS,IAGnCovT,IAAuB9toB,EAAAA,EAAAA,GAAOmuoB,GAAPnuoB,CAAoB,CAC7C8B,QAAS,OACT8S,cAAe,WChnBnB,IDonBgC5U,EAAAA,EAAAA,IAAH,sSC9nBF,SAAChkB,GACxB,OACI,mCACI,UAAC,GAAD,CAAQ4kH,MAAO,0BACf,UAAC,GAAD,IACC89O,GAAAA,KAAY,UAAC,GAAD,MAGxB,aCshBD,IAAM+vR,GAAYzumB,EAAAA,EAAAA,IAAH,8KAQXuloB,IAEEviH,GAAUhjhB,EAAAA,EAAAA,IAAH,oIACF0+U,GAAAA,GAAW,OAAS,MAIX/yW,GAAAA,GAAAA,mBAA+B,2CAA6C,QAG1Fm6pB,GAAS9loB,EAAAA,EAAAA,IAAH,8FAMN+loB,IAAe/loB,EAAAA,EAAAA,GAAOgmoB,GAAPhmoB,CAAH,yCAIZimoB,GAAkBjmoB,EAAAA,EAAAA,IAAH,uFAMfmmoB,IAAoBnmoB,EAAAA,EAAAA,GAAOomoB,GAAPpmoB,CAAH,0MAKZ0+U,GAAAA,GAAW,MAAQ,OAOxB2nT,GAAermoB,EAAAA,EAAAA,IAAH,2EAMZsmoB,IAAetmoB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAH,0PAeZumoB,IAAoBvmoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACxC4T,UAAW,OACXG,WAAY,OACZrW,OAAQ,OACR,wBAAyB,CACrB7D,MAAO,WAEX,sBAAuB,CACnBA,MAAO,aAEX,4BAA6B,CACzBA,MAAO,SAEX,2BAA4B,CACxBwY,gBAAiB,UACjB,aAAc,CACVnB,YAAa,QAEjB,mBAAoB,CAChBA,YAAa,aAEjB,yBAA0B,CACtBA,YAAa,gBAKnBu1nB,GAAqBzmoB,EAAAA,EAAAA,IAAH,yFAMlB0moB,GAAe1moB,EAAAA,EAAAA,IAAH,wGAOZ2moB,IAAkB3moB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAe,CAAC,GAIlC4moB,GAAgB5moB,EAAAA,EAAAA,IAAH,iGACF0+U,GAAAA,GAAW,MAAQ,QAM9BmoT,IAAuB7moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC3C4T,UAAW,KACX/R,MAAO,MACPkS,WAAY,MACZ6nnB,KAAM,OACN,sBAAuB,CACnB/hoB,MAAO,aAEX,4BAA6B,CACzBA,MAAO,SAEX,2BAA4B,CACxB,aAAc,CACVqX,YAAa,WAEjB,mBAAoB,CAChBA,YAAa,aAEjB,yBAA0B,CACtBA,YAAa,aAEjB,wBAAyB,CACrBrX,MAAO,UAGf,wBAAyB,CACrBA,MAAO,aAITitoB,IAA6B9moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACjD+T,WAAY,MACZlS,MAAO,MACP,sBAAuB,CACnBhI,MAAO,aAEX,0BAA2B,CACvBA,MAAO,SAEX,yBAA0B,CACtB,WAAY,CACRwX,kBAAmB,WAEvB,iBAAkB,CACdA,kBAAmB,WAEvB,sBAAuB,CACnBA,kBAAmB,cAG3B,wBAAyB,CACrBxX,MAAO,aAITktoB,IAAgB/moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACpC+T,WAAY,OACZlS,MAAO,MACP,wBAAyB,CACrBhI,MAAO,WAEX,sBAAuB,CACnBA,MAAO,aAEX,4BAA6B,CACzBA,MAAO,SAEX,2BAA4B,CACxBwY,gBAAiB,UACjB,aAAc,CACVnB,YAAa,QAEjB,mBAAoB,CAChBA,YAAa,aAEjB,yBAA0B,CACtBA,YAAa,gBAKnB81nB,IAAkBhnoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACtC6S,aAAc,MACdkB,WAAY,OACZlS,MAAO,MACP,wBAAyB,CACrBhI,MAAO,WAEX,sBAAuB,CACnBA,MAAO,aAEX,4BAA6B,CACzBA,MAAO,SAEX,2BAA4B,CACxBwY,gBAAiB,UACjB,aAAc,CACVnB,YAAa,QAEjB,mBAAoB,CAChBA,YAAa,aAEjB,yBAA0B,CACtBA,YAAa,gBAYzB,KAPmBlR,EAAAA,EAAAA,GAAOq6e,GAAPr6e,CAAa,CAC5B,mBAAoB,CAChBqS,gBAAiB,UACjBxY,MAAO,WA/tBf,WACI,IAAM20jB,EAAWpC,IAEX5glB,EADW2glB,IACKvyiB,MACtB,GAAkCg1e,EAAAA,EAAAA,WAAS,GAA3C,eAAO/4a,EAAP,KAAkBuxjB,EAAlB,KACA,GAA0Cx4I,EAAAA,EAAAA,WAAS,GAAnD,eAAOq2H,EAAP,KAAsBC,EAAtB,KACA,GAAoCt2H,EAAAA,EAAAA,WAAS,GAA7C,eAAO24I,EAAP,KAAmBC,EAAnB,KACA,GAAkC54I,EAAAA,EAAAA,WAAS,GAA3C,eAAOijB,EAAP,KAAkB41H,EAAlB,KACA,GAA8B74I,EAAAA,EAAAA,WAAS,GAAvC,eAAOg5I,EAAP,KAAgBC,EAAhB,KACA,GAAgCj5I,EAAAA,EAAAA,WAAS,GAAzC,eAAOk5I,EAAP,KAAiBC,EAAjB,KACA,GAA8Cn5I,EAAAA,EAAAA,YAA9C,eAAOw/I,EAAP,KAAwBC,EAAxB,KACA,GAAwCz/I,EAAAA,EAAAA,UAAkB,CACtDhuZ,MAAO,GACPkzU,YAAa,GACbw0N,UAAW,EACXC,UAAW,KAJf,eAAOj5C,EAAP,KAAqBk5C,EAArB,KAMM9iB,EAASvxnB,EAAQ,MACjBm6oB,EAAsB9iqB,EAAK8jnB,cACjC/gG,EAAAA,EAAAA,YAAU,WACN,IAcQggJ,EAdFC,EAAe,yCAAG,2GACWx/C,KADX,OACdy/C,EADc,QAEdF,EAAuBv3pB,KAAK6G,MAAM4wpB,GAAoB,KACnCpoB,WACrB0hB,GAAY,UAGLwG,EAAqBt/oB,GAEhCu5oB,EAAgB+F,GATI,2CAAH,qDAYjB5+F,aAAalnf,QAAQ,iBACrBy8jB,GAAiB,GAEbv5oB,GAAAA,GAAAA,mBACA6iqB,IAEAD,EAAuBv3pB,KAAK6G,MAAM8xjB,aAAalnf,QAAQ,iBAIvD8llB,EAAqBloB,WACrB0hB,GAAY,UAGLwG,EAAqBt/oB,GAGhCu5oB,EAAgB+F,GAChBrpB,GAAiB,IAGZopB,IACLppB,GAAiB,GACbopB,EAAoBjoB,WACpB0hB,GAAY,UAGLuG,EAAoBr/oB,GAE/Bu5oB,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZ3xd,OAA0B,OAAnB0tiB,QAAmB,IAAnBA,OAAA,EAAAA,EAAqB1tiB,QAAS,GACrCkzU,aAAgC,OAAnBw6N,QAAmB,IAAnBA,OAAA,EAAAA,EAAqBx6N,cAAe,GACjDw0N,WAA8B,OAAnBgG,QAAmB,IAAnBA,OAAA,EAAAA,EAAqB/F,UAAU12pB,SAAU0glB,EAAU+1E,UAC9DC,UAA8B,OAAnB+F,QAAmB,IAAnBA,GAAAA,EAAqB/F,UAC1B+F,EAAoB/F,UAAUtzpB,KAAI,SAACwwpB,EAAUpzpB,GAAX,MAAsB,CACtDuuH,MAAO6kiB,EAAS7kiB,MAChBooiB,WAAY32pB,EACZ42pB,WAAYxD,EAASwD,WAAWh0pB,KAAI,SAACg0pB,GAAD,MAAiB,CACjDC,KAAMD,EAAWC,KACjBC,OAAQF,EAAWE,OAFa,IAHJ,IAQlC52E,EAAUg2E,WAdJ,IAgBhBrjB,GAAiB,IAErBA,GAAiB,EACpB,GAAE,KAEH32H,EAAAA,EAAAA,YAAU,WAENk5I,GAAa,GACbI,GAAW,GACX,IAAM6G,GAAgBlroB,EAAAA,GAAAA,WAAQ,uBAAC,uFACvB73B,GAAAA,GAAAA,mBADuB,gCAEjB0jnB,GAAoBr4mB,KAAKC,UAAUq4mB,IAFlB,6BAIvB3/C,aAAaH,QAAQ,eAAgBx4jB,KAAKC,UAAUq4mB,IAJ7B,2CAM5B,KAKH,OAHAo/C,IAGO,WACHA,EAAcx8mB,QACjB,CACJ,GAAE,CAACo9jB,IAEJ,IAAM85C,EAAY,yCAAG,WAAOjvpB,GAAP,yFACjBstpB,GAAa,IAETn4C,EAAa1uf,MAHA,qBAITgniB,EAJS,uBAKTH,GAAa,GALJ,iCAQbL,GAAa,GARA,kBAWH9jB,KAXG,wBAaSx0B,KAbT,kDAawB,GAbxB,0BAcEQ,EAAa1uf,MAdf,KAeQ0uf,EAAax7K,YAfrB,KAgBMw7K,EAAai5C,UAhBnB,KAiBO7iB,EAAOl6oB,EAAKwrF,WAAWjuB,OAAO,4BALxCqgY,EAZG,CAaL8lL,OAbK,KAcLtuf,MAdK,KAeLkzU,YAfK,KAgBLy0N,UAhBK,KAiBLliB,WAjBK,OAmBLyhB,EAnBK,wBAoBL1+N,EAAQn6a,IAAwB,OAAnBq/oB,QAAmB,IAAnBA,OAAA,EAAAA,EAAqBr/oB,KAAMm/oB,EApBnC,KAqBa3rB,GArBb,KAqBuBxxoB,GAAAA,QAAAA,IAAqB,gBArB5C,KAqB6Dm4b,EArB7D,UAuB0BouH,KAvB1B,kCAuBG,cAvBH,aAsBD1ijB,QAtBC,sBAqBmBm0iB,IArBnB,+EA4Baw5F,GA5Bb,MA4BwBxxoB,GAAAA,QAAAA,IAAqB,gBA5B7C,MA4B8Dm4b,EA5B9D,UA8B0BouH,KA9B1B,mCA8BG,cA9BH,cA6BD1ijB,QA7BC,uBA4BmBgK,KA5BnB,sCA4BCwuH,EA5BD,OAiCLy6hB,GAAY,GACZsG,EAAmB/giB,EAAI9hI,KAAKA,KAAKyjB,IAlC5B,QAoCTw4oB,GAAa,GACbL,GAAa,GArCJ,mDAwCH71G,EAxCG,wCAwCY,MAAG/5iB,gBAxCf,iBAwCY,EAAahM,YAxCzB,iBAwCY,EAAmB+E,aAxC/B,aAwCY,EAA0BjF,QAC/CiC,QAAQm3D,IAAI6sf,GAzCH,gCA6Cbi2G,GAAc,GA7CD,0DAAH,sDAyMZ9B,EAAuB,SAACrzpB,GAC1Bm2pB,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZg2E,UAAWh2E,EAAUg2E,UAAU78nB,QAAO,SAAC0qB,EAAcv8C,GAAf,OAA6BA,IAAMxH,CAAnC,KAF1B,GAKnB,EAgCD,OACI,iCACI,UAAC,GAAD,WACI,UAAC,GAAD,UACK4yoB,GACG,iBAAKj9mB,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACI,UAAC,GAAD,OAGJ,mCAEI,WAAC,GAAD,YACMwoU,GAAAA,KAAY,UAAC,GAAD,CAAQt0U,QAAQ,YAAYrrB,KAAK,QAAQ8a,MAAM,UAAU20J,QA3C1E,WACrBgga,GAAU,EACb,EAyC6H5ujB,GAAI,CAAElkB,SAAU,WAAYo6B,KAAM,OAAQlC,UAAW,QAAzI,mBACd,UAAC,GAAD,CAAexJ,QAAQ,YAAY7zB,KAAK,SAASwI,KAAK,QAAQqgW,QAASvpQ,EAAWqvjB,gBAAgB,QAAQvc,UAAW92G,GAAY,UAACg4H,GAAA,EAAD,KAAgB,UAACC,GAAA,EAAD,IAAclqoB,GAAI,CAC/JlkB,SAAU,WAAYk6B,MAAO,OAAQhC,UAAW,OAAQxB,QAASy/f,EAAY,QAAU,UAAW,YAAa,CAC3Gz/f,QAAS,QAEb,SAAU,CACNA,QAASy/f,EAAY,QAAU,YAEpCrjX,QAAS46e,EAPZ,sBASJ,UAAC,GAAD,CACIn6oB,GAAG,eACHs7nB,UAAQ,EACRF,cAAY,EACZjrb,eAAa,EACbhwN,MAAOkgnB,EAAa1uf,MACpBtyH,QAASs3oB,GAAAA,cACT4D,eAAgB,SAAC3rmB,GACb,MAAsB,kBAAXA,EACAA,EAEJA,EAAO+iF,KACjB,EACDyqhB,cAAe,SAACp5oB,EAAO7C,GAAR,OAzLpB,SAAC6C,EAA6CkI,GACnD,OAAVlI,IAGJu1pB,GAAc,GACdgB,GAAgB,SAACj2E,GAAD,gBAAC,WAAoBA,GAArB,IAAgC3xd,MAAOzmH,GAAvC,IACnB,CAmL4D4vpB,CAAe93pB,EAAO7C,EAAxC,EACfqjL,SAAU,SAACxgL,EAAO7C,GA9DlB,IAA8C46pB,EAC9C,QAD8CA,EA8DS56pB,IA7DpB,kBAApB46pB,GAGvCxB,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZtjkB,GAAE,OAAE+6oB,QAAF,IAAEA,OAAF,EAAEA,EAAiB/6oB,GACrB2xG,OAAsB,OAAfopiB,QAAe,IAAfA,OAAA,EAAAA,EAAiBppiB,QAAS,GACjC4lhB,UAAS,OAAEwjB,QAAF,IAAEA,OAAF,EAAEA,EAAiBxjB,UAC5B1yM,aAA4B,OAAfk2N,QAAe,IAAfA,OAAA,EAAAA,EAAiBl2N,cAAe,GAC7Cw0N,WAA0B,OAAf0B,QAAe,IAAfA,OAAA,EAAAA,EAAiBzB,UAAU12pB,SAAU0glB,EAAU+1E,UAC1DC,UAA0B,OAAfyB,QAAe,IAAfA,GAAAA,EAAiBzB,UACtByB,EAAgBzB,UAAUtzpB,KAAI,SAACwwpB,EAAepzpB,GAAhB,MAAmC,CAC/DuuH,MAAO6kiB,EAAS7kiB,MAChBooiB,WAAY32pB,EACZ42pB,WAAYxD,EAASwD,WAAWh0pB,KAAI,SAACg0pB,GAAD,MAAsB,CACtDC,KAAMD,EAAWC,KACjBC,OAAQF,EAAWE,OAFa,IAHR,IAQ9B52E,EAAUg2E,WAhBJ,GA0DkB,EACVjT,YAAa,SAAC9/oB,GAAD,OACT,UAAC,IAAD,oBAA0BA,GAA1B,IACIoT,MAAM,kBACNwhB,QAAQ,WACRrrB,KAAM2/V,GAAAA,GAAW,QAAU,SAC3BzlU,UAAQ,EACR1oC,MAAOg3pB,IANF,EAQb/R,aAAc,SAACx5oB,EAAY6hC,GACvB,MAAsB,kBAAXA,GACA,mBAAC,IAAD,oBAAS7hC,GAAT,IAAgBxI,IAAK87mB,EAAargmB,IAAM,QAAQ4uB,GAEvDyxkB,EAAak3B,YAAc3omB,EAAO2omB,UACT,OAArB3omB,EAAO2omB,WACA,mBAAC,IAAD,oBAASxqoB,GAAT,IAAgBxI,IAAKqqC,EAAO5uB,KAAK,UAAY4uB,EAAO+iF,QAExD,mBAAC,IAAD,oBAAS5kH,GAAT,IAAgBxI,IAAKqqC,EAAO5uB,KAAK4uB,EAAO2omB,UAAY,MAAQ3omB,EAAO+iF,YAJ9E,CAMH,KAGL,UAAC,GAAD,CACI6xD,SAAU,SAACt4K,GAAD,OAzMT,SAACA,GAC1BqupB,GAAgB,SAACj2E,GAAD,gBAAC,WAAoBA,GAArB,IAAgCz+I,YAAa35b,GAA7C,GACnB,CAuM4C8vpB,CAAqB9vpB,EAAE0O,OAAOzZ,MAArC,EACVwZ,MAAM,uCACNwhB,QAAQ,SACR2lU,WAAS,EACT3gW,MAAOkgnB,EAAax7K,YACpB5sH,KAAM,KAEV,UAAC,GAAD,CAAc98S,QAAQ,SAASxK,GAAI,CAAEwS,QAAS,cAC9C,WAAC,GAAD,CAAOhE,QAAS,EAAhB,UAEQkhlB,EAAai5C,UAAUtzpB,KAAI,SAACwwpB,EAAepzpB,GAAhB,OACvBozpB,EAASuD,YAAc,GACnB,WAAC,GAAD,CAA+BhhoB,MAAO,CAAE+L,WAAY2qU,GAAAA,GAAW,KAAO,MAAO5qU,aAAc,QAA3F,UAEQ4qU,GAAAA,IACI,UAAC,GAAD,CAEI+mT,SAAUA,EACVpzpB,MAAOA,EACPqzpB,qBAAsBA,GAHjBrzpB,IAMT,UAAC,GAAD,CACI+3B,QAAQ,WACRrrB,KAAK,SACL8a,MAAM,QACN20J,QAAS,kBAAOk3e,EAAqBrzpB,EAA5B,EACT21B,MAAO,CAAEtsB,SAAU,WAAYk6B,MAAO,OAAQD,IAAK,OAAQzD,SAAUwsU,GAAAA,GAAW,QAAU,GAAIvuU,QAASuuU,GAAAA,GAAW,mBAAqB,IAL3I,SAKkJA,GAAAA,GAAW,IAAM,YAE3K,UAAC,GAAD,CACI91V,MAAM,gBACNshoB,aAAa,MACb96oB,MAAOq2pB,EAAS7kiB,MAChB7hH,KAAM2/V,GAAAA,GAAW,QAAU,SAC3BjsL,SAAU,SAACt4K,GAAD,OAjKzB,SAACA,EAAwDgwpB,GACtF3B,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACm1pB,GAChC,OAAID,EAAYnB,aAAeoB,EAAKpB,YACzB,oBACAoB,GADP,IAEIxpiB,MAAOzmH,EAAE0O,OAAOzZ,QAGjBg7pB,CACV,KAVW,GAYnB,CAoJgEC,CAAyBlwpB,EAAGsrpB,EAAnC,EACVz9nB,MAAO,CAAEnG,MAAO68U,GAAAA,GAAW,MAAQ,UAEvC,UAAC,GAAD,CAAS9+U,GAAI,CAAEgU,UAAW8qU,GAAAA,GAAW,GAAK,OAAQtsU,QAAS,cAE3D,UAAC,GAAD,UAEQqznB,EAASwD,WAAWh0pB,KAAI,SAAC0xG,EAAS2viB,GAAV,OACpB,WAAC,GAAD,YACI,UAAC,GAAD,CAAiBlsnB,QAAQ,WAAWvQ,MAAM,QAAQ9a,KAAK,SAAS6gB,GAAI,CAAEsS,SAAUwsU,GAAAA,GAAW,QAAU,UAAW78U,MAAO,QAAU2sJ,QAAS,kBA3J9K,SAACi3e,EAAoBpzpB,GACzCm2pB,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAChC,OAAIqvmB,EAASuD,aAAe5ymB,EAAG4ymB,YACpB,oBACA5ymB,GADP,IAEI6ymB,WAAY7ymB,EAAG6ymB,WAAWv9nB,QAAO,SAACi7E,EAAS9sG,GAAV,OAAwBA,IAAMxH,CAA9B,MAGlC+jD,CACV,KAVW,GAYnB,CA8I4Mk0mB,CAAgB7E,EAAUnP,EAAjC,EAA1I,gBACA,UAAC,GAAD,CAASqB,UAAQ,EAAC9ukB,YAAY,WAAWjpD,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,MAAQ,OAAQtsU,QAAS,YAC/F,UAAC,GAAD,UAAgBkknB,EAAS,KACzB,UAAC,GAAD,CACIv3oB,KAAK,QACLmroB,aAAa,MACbr7d,WAAY,SAAC58K,GACJ,QAAQqV,KAAKrV,EAAMuB,MACpBvB,EAAMo7D,gBAEb,EACDj+D,MAAmB,KAAZu3G,EAAGuijB,KAAc,GAAKvijB,EAAGuijB,KAChCz2e,SAAU,SAACt4K,GAAD,OA5P9C,SAACA,EAAwDsrpB,EAAoBpzpB,GACrG,IAAIk4pB,EAAcpwpB,EAAE0O,OAAOzZ,MAAOZ,WAAW2e,OAAO,GAChDyc,OAAOzvB,EAAE0O,OAAOzZ,OAAS,MAGL,MAAfm7pB,EACLpwpB,EAAE0O,OAAOzZ,MAAQ,IAEc,IAA1B+K,EAAE0O,OAAOzZ,MAAMyC,SACpBsI,EAAE0O,OAAOzZ,MAAQ,IAGrBo5pB,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAChC,OAAIqvmB,EAASuD,aAAe5ymB,EAAG4ymB,WACpB5ymB,GAEJ,oBACAA,GADP,IAEI6ymB,WAAY7ymB,EAAG6ymB,WAAWh0pB,KAAI,SAAC0xG,EAAS9sG,GACpC,OAAIA,IAAMxH,GACC,oBACAs0G,GADP,IAEIuijB,KAAM/upB,EAAE0O,OAAOzZ,QAGhBu3G,CACV,KAER,KAlBW,IAoBnB,CA4NgF6jjB,CAAoBrwpB,EAAGsrpB,EAAUnP,EAAxC,EACVF,WAAY,CAAEztnB,IAAK,IAAK8hoB,UAAW,WACnCtU,WAAY,CACRvD,cAAc,UAAE,GAAF,CAAiBl3oB,SAAS,MAAMssB,MAAO,CAAEnO,MAAO,SAAhD,UACV,UAAC,GAAD,yBAIZ,UAAC,GAAD,CACI9a,KAAK,QACLmroB,aAAa,MACbr7d,WAAY,SAAC58K,GACJ,SAASqV,KAAKrV,EAAMuB,MACrBvB,EAAMo7D,gBAEb,EACDj+D,MAAuB,KAAfu3G,EAAGwijB,OAAiB,GAAKxijB,EAAGwijB,OACpC12e,SAAU,SAACt4K,GAAD,OA3O5C,SAACA,EAAwDsrpB,EAAoBpzpB,GACvG,IAAIk4pB,EAAcpwpB,EAAE0O,OAAOzZ,MAAOZ,WAAW2e,OAAO,GACpD,KAAIyc,OAAOzvB,EAAE0O,OAAOzZ,OAAS,OAA7B,CAGK,GAAmB,MAAfm7pB,EACLpwpB,EAAE0O,OAAOzZ,MAAQ,SAEhB,GAAK+K,EAAE0O,OAAOzZ,MAAMqH,SAAS,KAAO,CACrC,IAAIovC,EAAS1rC,EAAE0O,OAAOzZ,MAAOmE,MAAM,KAC/BsyC,EAAMh0C,OAAS,IACfsI,EAAE0O,OAAOzZ,MAAQy2C,EAAM,GAAK,IAAMA,EAAM,GAAG7zB,UAAU,EAAG,GAE/D,CACDw2oB,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAChC,OAAIqvmB,EAASuD,aAAe5ymB,EAAG4ymB,WACpB5ymB,GAEJ,oBACAA,GADP,IAEI6ymB,WAAY7ymB,EAAG6ymB,WAAWh0pB,KAAI,SAAC0xG,EAAS9sG,GACpC,OAAIA,IAAMxH,GACC,oBACAs0G,GADP,IAEIwijB,OAAQhvpB,EAAE0O,OAAOzZ,QAGlBu3G,CACV,KAER,KAlBW,GADf,CAqBJ,CAyMiF+jjB,CAAsBvwpB,EAAGsrpB,EAAUnP,EAA3C,EACVF,WAAY,CAAEqU,UAAW,WACzBtU,WAAY,CACRvD,cAAc,UAAE,GAAF,CAAiBl3oB,SAAS,MAAMssB,MAAO,CAAEnO,MAAO,SAAhD,UACV,UAAC,GAAD,4BAlCGy8nB,EADC,OA2ChC,WAAC,GAAD,YACI,UAAC,GAAD,CAAS12nB,GAAI,CAAEwS,QAAS,cACxB,UAAC,GAAD,CAAchI,QAAQ,YAAYrrB,KAAK,QAAQyvK,QAAS,kBA3TlF27e,EA2TqG1E,OA1TvH+C,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZg2E,UAAWh2E,EAAUg2E,UAAUtzpB,KAAI,SAACmhD,GAChC,OAAI+zmB,EAAYnB,aAAe5ymB,EAAG4ymB,YACvB,oBACA5ymB,GADP,IAEI6ymB,WAAW,GAAD,gBACH7ymB,EAAG6ymB,YADA,CAEN,CACIC,KAAM,GACNC,OAAQ,QAKjB/ymB,CACV,KAhBW,IADC,IAAC+zmB,CA2TkF,EAAxD,0BA1EgB93pB,GA6ExB,IA/EmB,KAkF/B,2BACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAQ+3B,QAAQ,YAAY7zB,KAAK,SAASwI,KAAK,QAAQyvK,QArVjE,WACtBg6e,GAAgB,SAACj2E,GAAD,gBAAC,WACVA,GADS,IAEZ+1E,UAAW/1E,EAAU+1E,UAAY,EACjCC,UAAU,GAAD,gBACFh2E,EAAUg2E,WADR,CAEL,CACIS,WAAYz2E,EAAU+1E,UACtB1niB,MAAO,GACPqoiB,WAAY,CAAC,CACTC,KAAM,GACNC,OAAQ,SAVR,GAenB,EAqUsHvpoB,GAAI,CAAEwS,QAAS,UAAW0B,aAAc,QAA3H,yCAUvC,GClhBD,GAV0B,SAAC93B,GACvB,OACI,mCACI,UAAC,GAAD,CAAQ4kH,MAAO,aACf,UAAC,GAAD,MAIX,ECZc,SAAS+tiB,GAAgBv/pB,EAAOs6oB,GAC7C,YAAkB7woB,IAAd6woB,QAAqC7woB,IAAVzJ,IAG3B2G,MAAMC,QAAQ0zoB,GACTA,EAAUp3oB,QAAQlD,IAAU,EAE9BA,IAAUs6oB,EAClB,CCRM,SAASklB,GAAiCvuoB,GAC/C,OAAOC,EAAAA,GAAAA,GAAqB,uBAAwBD,EACrD,CACD,IACA,IADiCE,EAAAA,GAAAA,GAAuB,uBAAwB,CAAC,OAAQ,WAAY,WAAY,WAAY,UAAW,oBAAqB,oBCHvJjK,GAAY,CAAC,WAAY,YAAa,QAAS,WAAY,YAAa,YAAa,WAAY,cAAe,OAAQ,SAyBxHu4oB,IAAwB7uoB,EAAAA,GAAAA,IAAO,MAAO,CAC1C11B,KAAM,uBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,EAAC,wBACCouoB,GAAAA,SAAqCvtpB,EAAOy9N,UAD9C,wBAGE8vb,GAAAA,SAAqCvtpB,EAAO,UAAD,QAAW4e,EAAAA,GAAAA,GAAWO,EAAWmoD,gBAClFtnE,EAAOzF,KAAiC,aAA3B4kB,EAAWmoD,aAA8BtnE,EAAOqlI,SAAUlmH,EAAW2nnB,WAAa9moB,EAAO8moB,UAC1G,GAZ2BronB,EAa3B,gBACDU,EADC,EACDA,WACAnX,EAFC,EAEDA,MAFC,OAGGU,EAAAA,EAAAA,GAAS,CACb6X,QAAS,cACTgM,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,cACd,aAA3BpN,EAAWmoD,aAA8B,CAC1Cj0C,cAAe,UACdlU,EAAW2nnB,WAAa,CACzBxmnB,MAAO,SANK,wBAQLitoB,GAAAA,UAAqC7kpB,EAAAA,EAAAA,GAAS,CAAC,EAA8B,eAA3ByW,EAAWmoD,aAAX,SACvD,wBAAyB,CACvB90C,YAAa,EACb9C,WAAY,wBACZktnB,oBAAqB,EACrB4Q,uBAAwB,GAE1B,uBAAwB,CACtB3Q,qBAAsB,EACtB4Q,wBAAyB,IAT4B,YAWjDF,GAAAA,SAXiD,eAWTA,GAAAA,QAXS,YAW2BA,GAAAA,UAAsC,CACtH79nB,WAAY,EACZ8C,WAAY,KAbyC,SAgBvD,wBAAyB,CACvBH,WAAY,EACZ9C,UAAW,wBACXqtnB,oBAAqB,EACrBC,qBAAsB,GAExB,uBAAwB,CACtB2Q,uBAAwB,EACxBC,wBAAyB,IAxB4B,YA0BjDF,GAAAA,SA1BiD,eA0BTA,GAAAA,QA1BS,YA0B2BA,GAAAA,UAAsC,CACtHh+nB,UAAW,EACX8C,UAAW,MAvCd,IAyLH,GA9IuCvpB,EAAAA,YAAiB,SAA2BgY,EAASlgB,GAC1F,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,yBAGJ2R,EAUED,EAVFC,SACAoN,EASErN,EATFqN,UAFJ,EAWMrN,EARF6d,MAAAA,OAHJ,MAGY,WAHZ,IAWM7d,EAPF0a,SAAAA,OAJJ,WAWM1a,EANFizpB,UAAAA,OALJ,WAWMjzpB,EALFqsoB,UAAAA,OANJ,SAOI51d,EAIEz2K,EAJFy2K,SAPJ,EAWMz2K,EAHF6sE,YAAAA,OARJ,MAQkB,aARlB,IAWM7sE,EAFF+C,KAAAA,OATJ,MASW,SATX,EAUI3P,EACE4M,EADF5M,MAEFspB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC0a,SAAAA,EACA2xnB,UAAAA,EACAx/jB,YAAAA,EACA9pE,KAAAA,IAEI8jB,EA7FkB,SAAAnC,GACxB,IACEmC,EAIEnC,EAJFmC,QACAgmD,EAGEnoD,EAHFmoD,YACAw/jB,EAEE3nnB,EAFF2nnB,UACA3xnB,EACEgK,EADFhK,SAEIoM,EAAQ,CACZhnB,KAAM,CAAC,OAAwB,aAAhB+sE,GAA8B,WAAYw/jB,GAAa,aACtErpa,QAAS,CAAC,UAAD,kBAAsB7+M,EAAAA,GAAAA,GAAW0oD,IAAgBnyD,GAAY,aAExE,OAAOqM,EAAAA,GAAAA,GAAeD,EAAO8roB,GAAkC/roB,EAChE,CAiFiBG,CAAkBtC,GAC5BwuoB,EAAe,SAACj9pB,EAAOk9pB,GAC3B,GAAK18e,EAAL,CAGA,IACI14I,EADE1nC,EAAQjD,GAASA,EAAMkD,QAAQ68pB,GAEjC//pB,GAASiD,GAAS,GACpB0nC,EAAW3qC,EAAM6G,SACR1D,OAAOF,EAAO,GAEvB0nC,EAAW3qC,EAAQA,EAAM+R,OAAOgupB,GAAe,CAACA,GAElD18e,EAASxgL,EAAO8nC,EATf,CAUF,EACKq1nB,EAAwB,SAACn9pB,EAAOk9pB,GAC/B18e,GAGLA,EAASxgL,EAAO7C,IAAU+/pB,EAAc,KAAOA,EAChD,EACD,OAAoB9roB,EAAAA,GAAAA,KAAKwroB,IAAuB5kpB,EAAAA,EAAAA,GAAS,CACvDmZ,KAAM,QACN/Z,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,EACLue,WAAYA,GACXhI,EAAO,CACRzc,SAAUoO,EAAAA,SAAAA,IAAmBpO,GAAU,SAAAshC,GACrC,OAAmBlzB,EAAAA,eAAqBkzB,GAQpBlzB,EAAAA,aAAmBkzB,EAAO,CAC5Cl0B,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQm8M,QAASzhM,EAAMvhC,MAAMqN,WAC7CopK,SAAUw8e,EAAYG,EAAwBF,EAC9C/3oB,cAAmCte,IAAzB0kC,EAAMvhC,MAAMmb,SAAyBw3oB,GAAgBpxnB,EAAMvhC,MAAM5M,MAAOA,GAASmuC,EAAMvhC,MAAMmb,SACvGpY,KAAMw+B,EAAMvhC,MAAM+C,MAAQA,EAC1BspoB,UAAAA,EACAxunB,MAAO0jB,EAAMvhC,MAAM6d,OAASA,EAC5BnD,SAAU6mB,EAAMvhC,MAAM0a,UAAYA,IAd3B,IAgBV,MAEJ,ICxJM,SAAS24oB,GAA4BhvoB,GAC1C,OAAOC,EAAAA,GAAAA,GAAqB,kBAAmBD,EAChD,CACD,IACA,IAD4BE,EAAAA,GAAAA,GAAuB,kBAAmB,CAAC,OAAQ,WAAY,WAAY,WAAY,UAAW,YAAa,YAAa,aAAc,cCHhKjK,GAAY,CAAC,WAAY,YAAa,QAAS,WAAY,qBAAsB,YAAa,WAAY,UAAW,WAAY,OAAQ,SA2BzIg5oB,IAAmBtvoB,EAAAA,GAAAA,IAAO6ykB,GAAY,CAC1CvomB,KAAM,kBACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAO,OAAD,QAAQ4e,EAAAA,GAAAA,GAAWO,EAAW3hB,QAC1D,GARsBihB,EAStB,YAGG,MAEAuvoB,EAJJhmpB,EAEI,EAFJA,MACAmX,EACI,EADJA,WAEI8uoB,EAAqC,aAArB9uoB,EAAW7G,MAAuBtQ,EAAMgP,QAAQ1gB,KAAK2e,QAAUjN,EAAMgP,QAAQmI,EAAW7G,OAAOzB,KAMnH,OAJI7O,EAAM2V,OACRswoB,EAAqC,aAArB9uoB,EAAW7G,MAAuBtQ,EAAM2V,KAAK3G,QAAQ1gB,KAAK2e,QAAUjN,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOzB,KACzHm3oB,EAA4C,aAArB7uoB,EAAW7G,MAAuBtQ,EAAM2V,KAAK3G,QAAQ1gB,KAAK2woB,eAAiBj/nB,EAAM2V,KAAK3G,QAAQmI,EAAW7G,OAAOs7kB,cAElIlrlB,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAMmR,WAAW0B,OAAQ,CAC3C0R,cAAevkB,EAAM2V,MAAQ3V,GAAO+kB,MAAMR,aAC1CqC,QAAS,GACTU,OAAQ,aAAF,QAAgBtnB,EAAM2V,MAAQ3V,GAAOgP,QAAQ5B,SACnDkD,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOC,QAC3C0J,EAAW2nnB,WAAa,CACzBxmnB,MAAO,SANM,4BAQP4toB,GAAAA,UAAiC,CACrC51oB,OAAQtQ,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOL,SAC5Cma,OAAQ,aAAF,QAAgBtnB,EAAM2V,MAAQ3V,GAAOgP,QAAQxB,OAAOM,uBAV/C,UAYb,UAAW,CACTo7kB,eAAgB,OAEhBpgkB,gBAAiB9oB,EAAM2V,KAAN,eAAqB3V,EAAM2V,KAAK3G,QAAQ1gB,KAAK2woB,eAA7C,cAAiEj/nB,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAA3F,MAA6G+S,EAAAA,GAAAA,IAAM1gB,EAAMgP,QAAQ1gB,KAAK2e,QAASjN,EAAMgP,QAAQxB,OAAOG,cACrL,uBAAwB,CACtBmb,gBAAiB,kBAjBR,sBAoBPo9nB,GAAAA,UAAiC,CACrC51oB,MAAO21oB,EACPn9nB,gBAAiB9oB,EAAM2V,KAAN,eAAqBqwoB,EAArB,cAA+ChmpB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAzE,MAA8F6S,EAAAA,GAAAA,IAAMuloB,EAAejmpB,EAAMgP,QAAQxB,OAAOK,iBACzJ,UAAW,CACTib,gBAAiB9oB,EAAM2V,KAAN,eAAqBqwoB,EAArB,mBAAoDhmpB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAA9E,cAAmG7N,EAAM2V,KAAK3G,QAAQxB,OAAOG,aAA7H,OAAgJ+S,EAAAA,GAAAA,IAAMuloB,EAAejmpB,EAAMgP,QAAQxB,OAAOK,gBAAkB7N,EAAMgP,QAAQxB,OAAOG,cAElP,uBAAwB,CACtBmb,gBAAiB9oB,EAAM2V,KAAN,eAAqBqwoB,EAArB,cAA+ChmpB,EAAM2V,KAAK3G,QAAQxB,OAAOK,gBAAzE,MAA8F6S,EAAAA,GAAAA,IAAMuloB,EAAejmpB,EAAMgP,QAAQxB,OAAOK,qBA3BlJ,GA+BQ,UAApBsJ,EAAW3hB,MAAoB,CAChCoxB,QAAS,EACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KACd,UAApBsF,EAAW3hB,MAAoB,CAChCoxB,QAAS,GACTvV,SAAUrR,EAAMmR,WAAWU,QAAQ,KAEtC,IAsID,GArIkC/Q,EAAAA,YAAiB,SAAsBgY,EAASlgB,GAChF,IAAMnG,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,oBAGJ2R,EAWED,EAXFC,SACAoN,EAUErN,EAVFqN,UAFJ,EAYMrN,EATF6d,MAAAA,OAHJ,MAGY,WAHZ,IAYM7d,EARF0a,SAAAA,OAJJ,WAYM1a,EAPFq5lB,mBAAAA,OALJ,WAYMr5lB,EANFqsoB,UAAAA,OANJ,SAOI51d,EAKEz2K,EALFy2K,SACAjE,EAIExyK,EAJFwyK,QACAr3J,EAGEnb,EAHFmb,SATJ,EAYMnb,EAFF+C,KAAAA,OAVJ,MAUW,SAVX,EAWI3P,EACE4M,EADF5M,MAEFspB,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAnD,SAAAA,EACA2+kB,mBAAAA,EACAgzC,UAAAA,EACAtpoB,KAAAA,IAEI8jB,EAlGkB,SAAAnC,GACxB,IACEmC,EAMEnC,EANFmC,QACAwlnB,EAKE3nnB,EALF2nnB,UACAlxnB,EAIEuJ,EAJFvJ,SACAT,EAGEgK,EAHFhK,SACA3X,EAEE2hB,EAFF3hB,KACA8a,EACE6G,EADF7G,MAEIiJ,EAAQ,CACZhnB,KAAM,CAAC,OAAQqb,GAAY,WAAYT,GAAY,WAAY2xnB,GAAa,YAAtE,eAA0FlonB,EAAAA,GAAAA,GAAWphB,IAAS8a,IAEtH,OAAOkJ,EAAAA,GAAAA,GAAeD,EAAOusoB,GAA6BxsoB,EAC3D,CAqFiBG,CAAkBtC,GAYlC,OAAoB2C,EAAAA,GAAAA,KAAKisoB,IAAkBrlpB,EAAAA,EAAAA,GAAS,CAClDZ,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BqN,SAAUA,EACVu8kB,aAAcoC,EACdlzlB,IAAKA,EACLqsK,QAhBmB,SAAAv8K,GACfu8K,IACFA,EAAQv8K,EAAO7C,GACX6C,EAAMmiE,mBAIRq+G,GACFA,EAASxgL,EAAO7C,EAEnB,EAOCqjL,SAAUA,EACVrjL,MAAOA,EACPsxB,WAAYA,EACZ,eAAgBvJ,GACfuB,EAAO,CACRzc,SAAUA,IAEb,mRCxID,IAAMyzpB,GAAc,IAAItlqB,IASlBulqB,GAA+C,IAAIlwpB,QACrDmwpB,GAAS,EAETC,QAAwCh3pB,EA6BtC,SAAUi3pB,GAAYxhqB,GAC1B,OAAOY,OAAOgB,KAAK5B,GAChBg8B,OACAoB,QAAQl4B,SAAAA,GAAG,YAAsBqF,IAAjBvK,EAAQkF,EAAb,IACXyB,KAAKzB,SAAAA,GACJ,MAAO,GAAP,OAAUA,EAAV,YACU,SAARA,EAnBR,SAAmBsI,GACjB,OAAKA,GACD6zpB,GAAQ9kqB,IAAIiR,KAChB8zpB,IAAU,EACVD,GAAQtlqB,IAAIyR,EAAM8zpB,GAAOphqB,aAFKmhqB,GAAQ7kqB,IAAIgR,IADxB,GAKpB,CAayBi0pB,CAAUzhqB,EAAQwN,MAAQxN,EAAQkF,GAEtD,IACAhF,UACL,CAEA,SAASwhqB,GAAe1hqB,GAEtB,IAAI2gB,EAAK6gpB,GAAYxhqB,GACjB2rC,EAAWy1nB,GAAY5kqB,IAAImkB,GAE/B,IAAKgrB,EAAU,CAEb,IACIoid,EADEx5b,EAAW,IAAIz4D,IAGfwoB,EAAW,IAAIq9oB,sBAAsBt6pB,SAAAA,GACzCA,EAAQ/D,SAASiE,SAAAA,GAAS,MAGlBq6pB,EACJr6pB,EAAMs6pB,gBACN9zK,EAAWh5b,MAAMu5b,SAAAA,GAAS,OAAK/mf,EAAMu6pB,mBAAqBxzK,CAAhC,IAGxBtuf,EAAQ+hqB,iBAA8C,qBAApBx6pB,EAAM4qE,YAG1C5qE,EAAM4qE,UAAYyvlB,GAGM,OAA1B,EAAArtmB,EAAS/3D,IAAI+K,EAAMgT,UAAnB,EAA4BjX,SAASnD,SAAAA,GACnCA,EAASyhqB,EAAQr6pB,EAClB,GACF,GACF,GAAEvH,GAGH+tf,EACEzpe,EAASype,aACRtmf,MAAMC,QAAQ1H,EAAQsuf,WACnBtuf,EAAQsuf,UACR,CAACtuf,EAAQsuf,WAAa,IAE5B3id,EAAW,CACThrB,GAAAA,EACA2D,SAAAA,EACAiwC,SAAAA,GAGF6smB,GAAYrlqB,IAAI4kB,EAAIgrB,EACrB,CAED,OAAOA,CACT,CASgB,YACdv8B,EACAjP,GAEiC,IADjCH,EACiC,uDADG,CAAC,EACrCgiqB,EAAiC,uDAAhBT,GAEjB,GACyC,qBAAhC1kqB,OAAO8kqB,2BACKp3pB,IAAnBy3pB,EACA,CACA,IAAM5yd,EAAShgM,EAAQ+tD,wBAWvB,OAVAh9D,EAAS6hqB,EAAgB,CACvBH,eAAgBG,EAChBznpB,OAAQnL,EACR0ypB,kBAC+B,kBAAtB9hqB,EAAQsuf,UAAyBtuf,EAAQsuf,UAAY,EAC9Dt3d,KAAM,EACNi1C,mBAAoBmjI,EACpB6yd,iBAAkB7yd,EAClB8yd,WAAY9yd,IAEP,WAEN,CACF,CAED,MAAmCsyd,GAAe1hqB,GAA1C2gB,EAAR,EAAQA,GAAI2D,EAAZ,EAAYA,SAAUiwC,EAAtB,EAAsBA,SAGlBhF,EAAYgF,EAAS/3D,IAAI4S,IAAY,GAQzC,OAPKmlD,EAASh4D,IAAI6S,IAChBmlD,EAASx4D,IAAIqT,EAASmgD,GAGxBA,EAAUvsD,KAAK7C,GACfmkB,EAAS4vN,QAAQ9kO,GAEV,WAELmgD,EAAUtrD,OAAOsrD,EAAUvrD,QAAQ7D,GAAW,GAErB,IAArBovD,EAAUhsD,SAEZgxD,EAAS9rD,OAAO2G,GAChBkV,EAAS6vN,UAAU/kO,IAGC,IAAlBmlD,EAAS9jD,OAEX6T,EAAS8vN,aACTgtb,GAAY34pB,OAAOkY,GAEtB,CACH,qJC5JA,SAASwhpB,GACPz0pB,GAEA,MAAiC,oBAAnBA,EAAMC,QACtB,CAmD4BoO,EAAAA,UCi1B5B,kCC33BA,IAAMoknB,GAAYzumB,EAAAA,EAAAA,IAAH,iLACTuloB,IASAviH,GAAUhjhB,EAAAA,EAAAA,IAAH,oLACF0+U,GAAAA,GAAW,OAAS,OASzBgyT,GAAkB1woB,EAAAA,EAAAA,IAAH,gIACR0+U,GAAAA,GAAW,MAAQ,MACdA,GAAAA,GAAW,KAAO,KACjBA,GAAAA,GAAW,KAAO,OAK/BiyT,GAA2B3woB,EAAAA,EAAAA,IAAH,uCAIxB4woB,IAAkB5woB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACtC47nB,KAAM,OACN/5nB,MAAO,OACP,sBAAuB,CACnBhI,MAAO,aAEX,4BAA6B,CACzBA,MAAO,QACP,iBAAkB,CACde,SAAU,SAGlB,2BAA4B,CACxB,aAAc,CACVsW,YAAa,WAEjB,mBAAoB,CAChBA,YAAa,aAEjB,yBAA0B,CACtBA,YAAa,cAGrB,wBAAyB,CACrBrX,MAAO,WAEX,uBAAwB,CACpB6D,OAAQghV,GAAAA,GAAW,OAAS,MAI9BmyT,IAAoB7woB,EAAAA,EAAAA,GAAO8woB,GAAP9woB,CAA0B,CAChD+T,WAAY,OAGVg9nB,IAAqB/woB,EAAAA,EAAAA,GAAOgxoB,GAAPhxoB,CAAqB,CAC5CnG,MAAO,OACP6D,OAAQghV,GAAAA,GAAW,OAAS,OAC5B9jV,SAAU8jV,GAAAA,GAAW,OAAS,GAC9Bx6V,WAAYw6V,GAAAA,GAAW,OAAS,GAChCrsU,gBAAiB,UACjB,iBAAkB,CACdxY,MAAO,YACPwY,gBAAiB,UACjB,SAAU,CACNxY,MAAO,YACPwY,gBAAiB,YAGzB,SAAU,CACNxY,MAAO,QACPwY,gBAAiB,WAErB,WAAY,CACRggkB,QAAS,UAIX4+D,IAAmBjxoB,EAAAA,EAAAA,GAAOomoB,GAAPpmoB,CAAH,0NAKX0+U,GAAAA,GAAW,MAAQ,OAOxB6nT,IAAoBvmoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACxC4T,UAAW,OACXG,WAAY,OACZlS,MAAO68U,GAAAA,GAAW,MAAQ,MAC1BhhV,OAAQ,OACR,uBAAwB,CACpB7D,MAAO,aAEX,2BAA4B,CACxBwY,gBAAiB,UACjB,aAAc,CACVnB,YAAa,SAGrB,qCAAsC,CAClC2qnB,oBAAqB,aAKvB4K,GAAqBzmoB,EAAAA,EAAAA,IAAH,yFAKlB0moB,GAAe1moB,EAAAA,EAAAA,IAAH,wGAMZ4moB,GAAgB5moB,EAAAA,EAAAA,IAAH,iGACF0+U,GAAAA,GAAW,MAAQ,QAM9B2nT,GAAermoB,EAAAA,EAAAA,IAAH,2EAMZsmoB,IAAetmoB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAe,CAChC6B,MAAO,OACPiT,eAAgB,aAChBhH,aAAc,MAEduE,gBAAiB,UACjBU,YAAa,OACb,iBAAkB,CACdlZ,MAAO,aAITktoB,IAAgB/moB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACpC+T,WAAY,OACZlS,MAAO,MACP,2BAA4B,CACxBwQ,gBAAiB,WAGrB,qCAAsC,CAClCwpnB,oBAAqB,aAIvBmL,IAAkBhnoB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CACtC+T,WAAY,OACZlS,MAAO,MACP,2BAA4B,CACxBwQ,gBAAiB,WAGrB,qCAAsC,CAClCwpnB,oBAAqB,aAMvBqV,IAAmBlxoB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAmB,CACxC8T,aAAc,OACdja,MAAO,UAGLs3oB,GAAuBnxoB,EAAAA,EAAAA,IAAH,6HA4R1B,GAAepN,IApRW,WAAO,IAAD,QAC5B,ECzLE,WAWqB,+DAAF,CAAC,EAVxBgqe,EAUyB,EAVzBA,UACA1+d,EASyB,EATzBA,MACAmyoB,EAQyB,EARzBA,gBACAe,EAOyB,EAPzBA,WACAt1pB,EAMyB,EANzBA,KACAu1pB,EAKyB,EALzBA,YACAx+lB,EAIyB,EAJzBA,KACAy+lB,EAGyB,EAHzBA,cACAhB,EAEyB,EAFzBA,eACA79e,EACyB,EADzBA,SAEA,EAAsBpoK,EAAAA,SAA+B,MAArD,eAAOlI,EAAP,KAAYq3B,EAAZ,KACM/qC,EAAW4b,EAAAA,SACjB,EAA0BA,EAAAA,SAAsB,CAC9C6lpB,SAAUoB,EACVz7pB,WAAOgD,IAFT,eAAO+gC,EAAP,KAAcgR,EAAd,KAOAn8C,EAASkc,QAAU8nK,EAEnBpoK,EAAAA,WACE,WAIE,IAAIo4N,EAFJ,IAAI5vK,GAAS1wD,EA8Bb,OA3BAsgO,EAAYD,GACVrgO,GACA,SAAC+tpB,EAAQr6pB,GACP+0C,EAAS,CACPslnB,OAAAA,EACAr6pB,MAAAA,IAEEpH,EAASkc,SAASlc,EAASkc,QAAQulpB,EAAQr6pB,GAE3CA,EAAMs6pB,gBAAkBkB,GAAe5ub,IAEzCA,IACAA,OAAY5pO,EAEf,GACD,CACEiD,KAAAA,EACAs1pB,WAAAA,EACAx0K,UAAAA,EAEAyzK,gBAAAA,EAEAnyoB,MAAAA,GAEFoyoB,GAGK,WACD7tb,GACFA,GAEH,CACF,GAGD,CAGE1sO,MAAMC,QAAQ4mf,GAAaA,EAAUpuf,WAAaouf,EAClDz6e,EACArG,EACAs1pB,EACAC,EACAx+lB,EACAw9lB,EACAC,EACApyoB,IAIJ,IAAMqzoB,EAAyB,OAAd,EAAG33nB,EAAM/jC,YAAK,EAAX27pB,EAAa3opB,OAC3B4opB,EAAsBpnpB,EAAAA,SAEzBlI,IACDovpB,GACCF,GACAx+lB,GACD4+lB,EAAoB9mpB,UAAY4mpB,IAIhCE,EAAoB9mpB,QAAU4mpB,EAC9B3mnB,EAAS,CACPslnB,SAAUoB,EACVz7pB,WAAOgD,KAIX,IAAMnE,EAAS,CAAC8kC,EAAQI,EAAMs2nB,OAAQt2nB,EAAM/jC,OAO5C,OAJAnB,EAAOyN,IAAMzN,EAAO,GACpBA,EAAOw7pB,OAASx7pB,EAAO,GACvBA,EAAOmB,MAAQnB,EAAO,GAEfA,CACT,CDgF4Bg9pB,GAAhBvvpB,EAAR,EAAQA,IAAK+tpB,EAAb,EAAaA,OACb,GAAsCthJ,EAAAA,EAAAA,UAAiBrmc,eAAeE,QAAQ,gBAAkB,WAAhG,eAAOkplB,EAAP,KAAoBC,EAApB,KACA,GAAoChjJ,EAAAA,EAAAA,UAASrmc,eAAeE,QAAQ,eAAiB,IAArF,eAAOoplB,EAAP,KAAmBC,EAAnB,KAEMpsB,EAASvxnB,EAAQ,MACjBq6jB,EAAWpC,IACX2lF,EDFH,SAAqB3iqB,EAAO8uB,GACjC,MAA4C7T,EAAAA,SAAejb,GAA3D,eAAO4iqB,EAAP,KAAuBC,EAAvB,KAYA,OAVA5npB,EAAAA,WAAgB,WACd,IAAMrY,EAAUy0B,YAAW,WACzBwroB,EAAkB7iqB,EACnB,GAAE8uB,GAEH,OAAO,WACLsI,aAAax0B,EACd,CACF,GAAE,CAAC5C,EAAO8uB,IAEJ8zoB,CACR,CCZyBE,CAAYL,EAAY,MAE9CtjJ,EAAAA,EAAAA,YAAU,WACF2hJ,GAAUiC,EAAYpyI,aACtBoyI,EAAY9+H,gBAEhB9qd,eAAeknf,WAAW,eAC1Blnf,eAAeknf,WAAW,aAG7B,GAAE,CAACygG,IAEJ,IAmBMkC,EAAmB,yCAAG,WAAO9I,GAAP,0FACNzwpB,IAAdywpB,EADoB,yCAEb,MAFa,uBAIlBhmB,KAJkB,cAKxB/6jB,eAAeinf,QAAQ,cAAemiG,GACtCpplB,eAAeinf,QAAQ,aAAcqiG,GANb,SAUN/iD,KAVM,+BAWhBw6C,EAAU96pB,WAJZ6jqB,EAPkB,CAUpBnjD,OAVoB,KAWpBjgmB,GAXoB,qBAcFwznB,GAdE,KAcSxxoB,GAAAA,QAAAA,IAAqB,2BAd9B,KAc0DohqB,EAd1D,UAgBW76G,KAhBX,iCAgBZ,cAhBY,YAehB1ijB,QAfgB,qBAcIgK,KAdJ,kCAcdwuH,EAdc,OAmBd9hI,EAAO,CACT8jnB,aAAY,UAAEhif,EAAI9hI,YAAN,aAAE,EAAUA,KAAK8mqB,mBAAmB,IAEpDjjC,GAAAA,qBAAwC,GACxC7gD,EAAS,iBAAkB,CAAE50iB,MAAOpuC,IAvBhB,mDAyBpB63oB,GAAY,EAAD,IAzBS,2DAAH,sDA6BnBkvB,EAAgB,yCAAG,WAAOV,EAAoB1zI,GAA3B,iGAChB0zI,EADgB,yCAEV,MAFU,gCAKXvuB,KALW,UAMG,YAAhBquB,EANa,iCAUK7iD,KAVL,+BAWF+iD,EAXE,KAYD1zI,EAAU3vhB,WALhBhD,EAPO,CAUT0jnB,OAVS,KAWTtuf,MAXS,KAYT96G,OAZS,WAeK28nB,GAfL,KAegBxxoB,GAAAA,QAAAA,IAAqB,6BAfrC,KAemEzF,EAfnE,UAiBkBgsjB,KAjBlB,iCAiBL,cAjBK,YAgBT1ijB,QAhBS,qBAeWgK,KAfX,yCAePwuH,EAfO,OAqBP87T,EAAU,CACZopO,eAAc,UAAElliB,EAAI9hI,YAAN,aAAE,EAAUA,KAAK8mqB,mBAC/BG,OAAM,UAAEnliB,EAAI9hI,YAAN,aAAE,EAAUA,KAAKinqB,QAvBd,kBA0BNrpO,GA1BM,WA6BG,aAAhBuoO,EA7Ba,kCAiCK7iD,KAjCL,iCAkCF+iD,EAlCE,MAmCD1zI,EAAU3vhB,WALhBhD,EA9BO,CAiCT0jnB,OAjCS,KAkCTtuf,MAlCS,MAmCT96G,OAnCS,aAqCK28nB,GArCL,MAqCgBxxoB,GAAAA,QAAAA,IAAqB,8BArCrC,MAqCoEzF,EArCpE,UAuCkBgsjB,KAvClB,mCAuCL,cAvCK,cAsCT1ijB,QAtCS,uBAqCWgK,KArCX,6CAqCPwuH,EArCO,OA2CP87T,EAAU,CACZopO,eAAc,UAAElliB,EAAI9hI,YAAN,aAAE,EAAUA,KAAKknqB,oBAC/BD,OAAM,UAAEnliB,EAAI9hI,YAAN,aAAE,EAAUA,KAAKinqB,QA7Cd,kBAgDNrpO,GAhDM,2DAmDjBi6M,GAAY,EAAD,KAnDM,0DAAH,wDAuDhB8uB,GAAcz9H,EAAAA,GAAAA,kBAAiB,CACjCrV,SAAU,CAAC,gBAAiB0yI,EAAeJ,GAC3C3yI,QAAS,oBAAGb,UAAH,OAAwBo0I,EAAiBR,OAAzC,MAAe,GAAf,IACTvyI,iBAAkB,SAACmzI,GAAD,OAAsB,OAARA,QAAQ,IAARA,OAAA,EAAAA,EAAUF,UAAU,CAAlC,IAGtB,OACI,iCACI,UAAC,GAAD,WACI,WAAC,GAAD,YACI,WAAC/B,GAAD,YACI,UAACC,GAAD,WACI,UAACC,GAAD,CACIhta,YAAa86G,GAAAA,GAAQ,gBAAYizT,EAAZ,2BAA4CA,EAA5C,uBACrBznB,aAAa,MACb96oB,MAAOyiqB,EACPp/e,SAAU,SAACt4K,GAAD,OAAQ23pB,EAAc33pB,EAAE0O,OAAOzZ,MAA/B,OAGlB,WAACyhqB,GAAD,CACIh3oB,MAAM,UACNzqB,MAAOuiqB,EACP1C,WAAS,EACTx8e,SA9HG,SAACt4K,EAA8Cy4pB,GAC/C,OAAnBA,IACAhB,EAAegB,GACfd,EAAc,IACdvplB,eAAeknf,WAAW,cAGjC,EAwHuB,aAAW,WALf,WAOI,UAACshG,GAAD,CAAoB3hqB,MAAM,UAAU2P,KAAM2/V,GAAAA,GAAW,QAAU,SAA/D,sBACA,UAACqyT,GAAD,CAAoB3hqB,MAAM,WAAW2P,KAAM2/V,GAAAA,GAAW,QAAU,SAAhE,4BAIJyzT,EAAYt8jB,WAAag8jB,GACrB,iBAAK7poB,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUlB,UAAW,QAApE,UACI,UAAC,GAAD,MAGkD,KAAtD,UAAAu+nB,EAAY3mqB,YAAZ,mBAAkB+yhB,MAAM,UAAxB,eAA4Bi0I,eAAe3gqB,SAAgBggqB,GACvD,UAACV,GAAD,WACI,UAAC,GAAD,CAAYnpoB,MAAO,CAAEpN,SAAU,QAA/B,gCAIgB,YAAhB+2oB,GAA6BE,EAErBA,IAAU,UAAIM,EAAY3mqB,YAAhB,aAAI,EAAkB+yhB,MAAMtphB,KAAI,SAAC0tR,GAAD,aACtCA,IACA,UAAC,WAAD,oBAEQA,EAAK6vY,sBAFb,aAEQ,EAAqBv9pB,KAAI,SAAC2vpB,EAAwBvypB,GAAzB,aACrB,WAAC4+pB,GAAD,CAA8BjpoB,MAAO,CAAE+L,WAAY2qU,GAAAA,GAAW,KAAO,MAAO5qU,aAAc,OAAQf,YAAa,QAAUy7I,QAAS,SAACr0K,GAAD,OA/I/J,SAACm1mB,GACxB/miB,eAAeinf,QAAQ,cAAemiG,GACtCpplB,eAAeinf,QAAQ,aAAcqiG,GACrC,IAAMrmqB,EAAO,CACT8jnB,aAAAA,GAEJ+f,GAAAA,qBAAwC,GACxC7gD,EAAS,iBAAkB,CAAE50iB,MAAOpuC,GACvC,CAuIgMqnqB,CAAmBjO,EAA1B,EAAlI,WACI,UAACsM,GAAD,CAAkB9moB,QAAQ,KAAKlmB,WAAW,OAAO8jB,MAAO,CAAE4L,UAAW,QAArE,SAAgFgxnB,EAAQhkiB,SACxF,kBAAK54F,MAAO,CAAElG,QAAS,QAAvB,WACI,UAACgxoB,GAAA,EAAD,CAA0Bl4oB,SAAS,QAAQoN,MAAO,CAAEnO,MAAO,YAAaga,YAAa,UACrF,UAAC,GAAD,CAAY7L,MAAO,CAAEnO,MAAO,YAAaia,aAAc,QAAvD,SACK4xmB,EAAOkf,EAAQve,YAAYt9kB,OAAO,4BAG3C,UAAC,GAAD,CAASnpC,GAAI,CAAEwS,QAAS,UAAW0B,aAAc,OAAQC,WAAY2qU,GAAAA,GAAW,MAAQ,OAAQ9qU,UAAW,UAC3G,kBAAK5L,MAAO,CAAElG,QAAS,QAAvB,WACI,UAAC6tmB,EAAA,EAAD,CAAmB91mB,MAAM,UAAUe,SAAS,QAAQoN,MAAO,CAAE6L,YAAa,MAAOD,UAAW,UAC5F,UAACs9nB,GAAD,CAAkBlpoB,MAAO,CAAC,EAA1B,8BAEJ,UAACkpoB,GAAD,CAAkBlpoB,MAAO,CAAE+L,WAAY,QAAvC,mBACK6wnB,EAAQ2D,iBADb,aACK,EAAmBtzpB,KAAI,SAACwwpB,EAA0BpzpB,GAA3B,OACpB,WAAC,WAAD,WACKozpB,EAAS7kiB,MACTvuH,IAAUuypB,EAAQ2D,UAAU12pB,OAAS,GAAK,OAF1BQ,EADD,QAdTA,EADF,MAFR,OAAJswR,QAAI,IAAJA,OAAA,EAAAA,EAAM8vY,SAAU,WAFC,KAoC1CZ,IAAU,UAAIM,EAAY3mqB,YAAhB,aAAI,EAAkB+yhB,MAAMtphB,KAAI,SAAC0tR,GAAD,aACtC,UAAC,WAAD,iBAEQA,QAFR,IAEQA,GAFR,UAEQA,EAAM6vY,sBAFd,aAEQ,EAAsBv9pB,KAAI,SAACwwpB,EAA0BpzpB,GAA3B,aACtB,WAAC4+pB,GAAD,CAA0DjpoB,MAAO,CAAE+L,WAAY2qU,GAAAA,GAAW,KAAO,MAAO5qU,aAAc,OAAQjS,MAAO68U,GAAAA,GAAW,MAAQ,OAASlwL,QAAS,SAACr0K,GAAD,OAAOi4pB,EAAoB3M,EAASsN,gBAApC,EAA1K,WACI,UAAC,GAAD,CACInqpB,MAAM,gBACNshoB,aAAa,MACb96oB,MAAOq2pB,EAAS7kiB,MAChB7hH,KAAM2/V,GAAAA,GAAW,QAAU,SAC3BhoV,UAAQ,KAGZ,UAAC,GAAD,CAASkJ,GAAI,CAAEgU,UAAW8qU,GAAAA,GAAW,GAAK,OAAQtsU,QAAS,cAC3D,UAAC,GAAD,oBAEQqznB,EAASwD,kBAFjB,aAEQ,EAAqBh0pB,KAAI,SAAC0xG,EAAS2viB,GAAV,OACrB,WAAC,GAAD,YACI,UAAC,GAAD,CAAQlsnB,QAAQ,WAAWrrB,KAAK,SAAS2X,UAAQ,EAACkJ,GAAI,CAClDiC,MAAO,OAAQhI,MAAO,QAAS,iBAAkB,CAC7CA,MAAO,WAEXqY,SAAUwsU,GAAAA,GAAW,QAAU,WAJnC,gBAMA,UAAC,GAAD,CAASi5S,UAAQ,EAAC9ukB,YAAY,WAAWjpD,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,GAAK,OAAQtsU,QAAS,YAC5F,UAAC,GAAD,UAAgBkknB,EAAS,KACzB,UAAC,GAAD,CACIv3oB,KAAK,QACL3P,MAAOu3G,EAAGuijB,KACVxyoB,UAAQ,EACRy/nB,WAAY,CACRvD,cAAc,UAAE,GAAF,CAAiBl3oB,SAAS,MAAMssB,MAAO,CAAEnO,MAAO,SAAhD,UACV,UAAC,GAAD,yBAIZ,UAAC,GAAD,CACI9a,KAAK,QACL2X,UAAQ,EACRtnB,MAAOu3G,EAAGwijB,OACVhT,WAAY,CACRvD,cAAc,UAAE,GAAF,CAAiBl3oB,SAAS,MAAMssB,MAAO,CAAEnO,MAAO,SAAhD,UACV,UAAC,GAAD,4BAzBhB,cAA0B8sF,EAAG13F,IADR,OAkCjC,UAAC,GAAD,WACI,UAAC,GAAD,CAAcmb,QAAQ,YAAYrrB,KAAK,QAAQ2X,UAAQ,EAAvD,yBA/CR,UAA0B+uoB,EAAS7kiB,OAAnC,OAA2C6kiB,EAASx2oB,IAD9B,MAFT,OAAJ0zQ,QAAI,IAAJA,OAAA,EAAAA,EAAM8vY,SAAU,WADC,KA8DjEN,EAAY/zI,qBACT,iBAAKp2f,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUlB,UAAW,QAApE,UACI,UAAC,GAAD,OAGR,kBAAMzxB,IAAKA,EAAK6lB,MAAO,CAAEyM,WAAY,UAArC,gDAKnB,IE7dD,GAVqB,SAACz4B,GAClB,OACI,mCACI,UAAC,GAAD,CAAQ4kH,MAAO,cACf,UAAC,GAAD,IACC89O,GAAAA,KAAY,UAAC,GAAD,MAGxB,ECZM,SAASs0T,GAAqB3yoB,GACnC,OAAOC,EAAAA,GAAAA,GAAqB,WAAYD,EACzC,CACD,kIACA,IADqBE,EAAAA,GAAAA,GAAuB,WAAY,CAAC,OAAQ,SAAU,OAAQ,UAAW,SAAU,gBAAiB,aAAc,gBAAiB,cAAe,WAAY,kBAAmB,eAAgB,kBAAmB,gBAAiB,WAAY,kBAAmB,eAAgB,kBAAmB,kBCE5T,IAAe1L,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,8OACD,mBCFJ,IAAeG,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,qFACD,yBCFJ,IAAeG,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,4KACD,gBCFJ,IAAeG,EAAAA,GAAAA,IAA4BwO,EAAAA,GAAAA,KAAK,OAAQ,CACtD3O,EAAG,8MACD,gBCPE4B,GAAY,CAAC,SAAU,WAAY,YAAa,YAAa,QAAS,aAAc,kBAAmB,OAAQ,cAAe,UAAW,OAAQ,WAAY,YAAa,QAAS,WAkCnL28oB,IAAYjzoB,EAAAA,GAAAA,IAAO2vjB,GAAO,CAC9BrllB,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GACzB,IACEmf,EACE1kB,EADF0kB,WAEF,MAAO,CAACnf,EAAOzF,KAAMyF,EAAOmf,EAAW0J,SAAU7oB,EAAO,GAAD,OAAImf,EAAW0J,SAAf,QAAyBjK,EAAAA,GAAAA,GAAWO,EAAW7G,OAAS6G,EAAWwyoB,YAC3H,GARelzoB,EASf,YAGG,IAFJzW,EAEI,EAFJA,MACAmX,EACI,EADJA,WAEMyyoB,EAAkC,UAAvB5ppB,EAAMgP,QAAQC,KAAmBH,GAAAA,GAASF,GAAAA,GACrDi7oB,EAA4C,UAAvB7ppB,EAAMgP,QAAQC,KAAmBL,GAAAA,GAAUE,GAAAA,GAChEwB,EAAQ6G,EAAW7G,OAAS6G,EAAWwyoB,SAC7C,OAAOjppB,EAAAA,EAAAA,GAAS,CAAC,EAAGV,EAAMmR,WAAWyB,MAAO,CAC1CkW,gBAAiB,cACjBvQ,QAAS,OACTqO,QAAS,YACRtW,GAAgC,aAAvB6G,EAAW0J,UAApB,SACDvQ,MAAOtQ,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,UAA4Cs5oB,EAAS5ppB,EAAMgP,QAAQsB,GAAOtD,MAAO,IACrG8b,gBAAiB9oB,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,eAAiDu5oB,EAAmB7ppB,EAAMgP,QAAQsB,GAAOtD,MAAO,KAF7H,aAGM+8oB,GAAAA,MAAsB/ppB,EAAM2V,KAAO,CACxCrF,MAAOtQ,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,eACL,CACFA,MAAOtQ,EAAMgP,QAAQsB,GAAOzB,OAE7ByB,GAAgC,aAAvB6G,EAAW0J,UAApB,SACDvQ,MAAOtQ,EAAM2V,KAAO3V,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,UAA4Cs5oB,EAAS5ppB,EAAMgP,QAAQsB,GAAOtD,MAAO,IACrGsa,OAAQ,aAAF,QAAgBtnB,EAAM2V,MAAQ3V,GAAOgP,QAAQsB,GAAOtD,QAFzD,aAGM+8oB,GAAAA,MAAsB/ppB,EAAM2V,KAAO,CACxCrF,MAAOtQ,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,eACL,CACFA,MAAOtQ,EAAMgP,QAAQsB,GAAOzB,OAE7ByB,GAAgC,WAAvB6G,EAAW0J,UAAwBngB,EAAAA,EAAAA,GAAS,CACtD/F,WAAYqF,EAAMmR,WAAWK,kBAC5BxR,EAAM2V,KAAO,CACdrF,MAAOtQ,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,gBACPwY,gBAAiB9oB,EAAM2V,KAAK3G,QAAQ86oB,MAAnB,UAA4Bx5oB,EAA5B,cACf,CACFwY,gBAAwC,SAAvB9oB,EAAMgP,QAAQC,KAAkBjP,EAAMgP,QAAQsB,GAAOnC,KAAOnO,EAAMgP,QAAQsB,GAAOzB,KAClGyB,MAAOtQ,EAAMgP,QAAQmB,gBAAgBnQ,EAAMgP,QAAQsB,GAAOzB,QAE7D,IACKm7oB,IAAYvzoB,EAAAA,GAAAA,IAAO,MAAO,CAC9B11B,KAAM,WACN+1B,KAAM,OACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOoW,IAA1B,GAHHqI,CAIf,CACD6T,YAAa,GACb1D,QAAS,QACTrO,QAAS,OACTlH,SAAU,GACVxW,QAAS,KAELovpB,IAAexzoB,EAAAA,GAAAA,IAAO,MAAO,CACjC11B,KAAM,WACN+1B,KAAM,UACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOjW,OAA1B,GAHA00B,CAIlB,CACDmQ,QAAS,QACT+B,SAAU,EACVqC,SAAU,SAENk/nB,IAAczzoB,EAAAA,GAAAA,IAAO,MAAO,CAChC11B,KAAM,WACN+1B,KAAM,SACNI,kBAAmB,SAACzkB,EAAOuF,GAAR,OAAmBA,EAAOwV,MAA1B,GAHDiJ,CAIjB,CACD8B,QAAS,OACTiT,WAAY,aACZ5E,QAAS,eACT4D,WAAY,OACZF,aAAc,IAEV6/nB,GAAqB,CACzBt6oB,SAAsBiK,EAAAA,GAAAA,KAAKswoB,GAAqB,CAC9C/4oB,SAAU,YAEZrB,SAAsB8J,EAAAA,GAAAA,KAAKuwoB,GAA2B,CACpDh5oB,SAAU,YAEZrqB,OAAoB8yB,EAAAA,GAAAA,KAAKwwoB,GAAkB,CACzCj5oB,SAAU,YAEZ1M,MAAmBmV,EAAAA,GAAAA,KAAKywoB,GAAkB,CACxCl5oB,SAAU,aAGRy4oB,GAAqBhppB,EAAAA,YAAiB,SAAegY,EAASlgB,GAClE,IAAI+F,EAAM6rpB,EAAoBn+f,EAAOo+f,EAAkBC,EAAuBC,EACxEl4pB,GAAQikB,EAAAA,GAAAA,GAAc,CAC1BjkB,MAAOqmB,EACP/3B,KAAM,aAGJysB,EAeE/a,EAfF+a,OACA9a,EAcED,EAdFC,SACAoN,EAaErN,EAbFqN,UAHJ,EAgBMrN,EAZFw4oB,UAAAA,OAJJ,MAIgB,QAJhB,EAKI36nB,EAWE7d,EAXF6d,MALJ,EAgBM7d,EAVFwuB,WAAAA,OANJ,MAMiB,CAAC,EANlB,IAgBMxuB,EATF0slB,gBAAAA,OAPJ,MAOsB,CAAC,EAPvB,EAQI/wkB,EAQE3b,EARF2b,KARJ,EAgBM3b,EAPFm4pB,YAAAA,OATJ,MASkBT,GATlB,EAUItoE,EAMEpvlB,EANFovlB,QAVJ,EAgBMpvlB,EALFonB,KAAAA,OAXJ,MAWW,QAXX,IAgBMpnB,EAJFk3pB,SAAAA,OAZJ,MAYe,UAZf,IAgBMl3pB,EAHFs9B,UAAAA,OAbJ,MAagB,CAAC,EAbjB,IAgBMt9B,EAFF8mB,MAAAA,OAdJ,MAcY,CAAC,EAdb,IAgBM9mB,EADFouB,QAAAA,OAfJ,MAec,WAfd,EAiBE1R,GAAQC,EAAAA,EAAAA,GAA8B3c,EAAOsa,IACzCoK,GAAazW,EAAAA,EAAAA,GAAS,CAAC,EAAGjO,EAAO,CACrC6d,MAAAA,EACAq5oB,SAAAA,EACA9ooB,QAAAA,IAEIvH,EAvIkB,SAAAnC,GACxB,IACE0J,EAIE1J,EAJF0J,QACAvQ,EAGE6G,EAHF7G,MACAq5oB,EAEExyoB,EAFFwyoB,SACArwoB,EACEnC,EADFmC,QAEIC,EAAQ,CACZhnB,KAAM,CAAC,OAAD,UAAYsuB,GAAZ,QAAsBjK,EAAAA,GAAAA,GAAWtG,GAASq5oB,IAA1C,UAA0D9ooB,IAChEzS,KAAM,CAAC,QACPrsB,QAAS,CAAC,WACVyrB,OAAQ,CAAC,WAEX,OAAOgM,EAAAA,GAAAA,GAAeD,EAAOkwoB,GAAsBnwoB,EACpD,CAyHiBG,CAAkBtC,GAC5B0zoB,EAA8H,OAA1GlspB,EAAmD,OAA3C6rpB,EAAqBjxoB,EAAMuxoB,aAAuBN,EAAqBvpoB,EAAW8poB,aAAuBpspB,EAAO4qoB,GAC5IyhB,EAAqH,OAAnG3+f,EAAgD,OAAvCo+f,EAAmBlxoB,EAAMgzB,WAAqBk+mB,EAAmBxpoB,EAAWgqoB,WAAqB5+f,EAAQ4+f,GACpIC,EAAsE,OAAlDR,EAAwB36nB,EAAU+6nB,aAAuBJ,EAAwBvrE,EAAgB2rE,YACrHK,EAAiE,OAA/CR,EAAuB56nB,EAAUwc,WAAqBo+mB,EAAuBxrE,EAAgB5yiB,UACrH,OAAoB7yB,EAAAA,GAAAA,MAAMgwoB,IAAWhppB,EAAAA,EAAAA,GAAS,CAC5CmZ,KAAMA,EACNyrjB,UAAW,EACXnujB,WAAYA,EACZrX,WAAW6Z,EAAAA,GAAAA,GAAKL,EAAQ/mB,KAAMuN,GAC9BlH,IAAKA,GACJuW,EAAO,CACRzc,SAAU,EAAU,IAAT0b,GAA8B0L,EAAAA,GAAAA,KAAKkwoB,GAAW,CACvD7yoB,WAAYA,EACZrX,UAAWwZ,EAAQlL,KACnB1b,SAAU0b,GAAQw8oB,EAAYjB,IAAaQ,GAAmBR,KAC3D,MAAmB7voB,EAAAA,GAAAA,KAAKmwoB,GAAc,CACzC9yoB,WAAYA,EACZrX,UAAWwZ,EAAQv3B,QACnB2Q,SAAUA,IACE,MAAV8a,GAA8BsM,EAAAA,GAAAA,KAAKowoB,GAAa,CAClD/yoB,WAAYA,EACZrX,UAAWwZ,EAAQ9L,OACnB9a,SAAU8a,IACP,KAAgB,MAAVA,GAAkBq0kB,GAAuB/nkB,EAAAA,GAAAA,KAAKowoB,GAAa,CACpE/yoB,WAAYA,EACZrX,UAAWwZ,EAAQ9L,OACnB9a,UAAuBonB,EAAAA,GAAAA,KAAK+woB,GAAkBnqpB,EAAAA,EAAAA,GAAS,CACrDlL,KAAM,QACN,aAAcy1oB,EACd5zhB,MAAO4zhB,EACP36nB,MAAO,UACP20J,QAAS48a,GACRqpE,EAAkB,CACnBx4pB,UAAuBonB,EAAAA,GAAAA,KAAKkxoB,GAAgBtqpB,EAAAA,EAAAA,GAAS,CACnD2Q,SAAU,SACT85oB,SAEF,QAER,IA+HD,sCChTMC,GAAuB30oB,EAAAA,EAAAA,IAAH,8IAGJ0+U,GAAAA,GAAW,SAAW,OAKtCk2T,GAAe50oB,EAAAA,EAAAA,IAAH,iKASZ60oB,GAAc70oB,EAAAA,EAAAA,IAAH,qIACJ0+U,GAAAA,GAAW,OAAS,QAQ3Bo2T,GAAsB90oB,EAAAA,EAAAA,IAAH,0KAMP0+U,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAM,MAAQ2kS,GAAAA,GAAW,KAAO,MAI7Eq2T,GAA4B/0oB,EAAAA,EAAAA,IAAH,wHAChB0+U,GAAAA,GAAW,OAAS,OAIjBA,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAmC,QAA5BpuE,GAAAA,GAAAA,cAAoC,2BAA6B,KAAQ,MAG7HqpqB,IAAgBh1oB,EAAAA,EAAAA,GAAOgmoB,GAAPhmoB,CAAH,6GAObi1oB,IAAqBj1oB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAH,gaACX0+U,GAAAA,GAAW,QAAU,SAiB5BunT,GAAkBjmoB,EAAAA,EAAAA,IAAH,qHAOfk1oB,GAAmBl1oB,EAAAA,EAAAA,IAAH,2FAMhBm1oB,GAAqBn1oB,EAAAA,EAAAA,IAAH,6FAOlBo1oB,GAAwBp1oB,EAAAA,EAAAA,IAAH,gOAOd0+U,GAAAA,GAAW,OAAS,OAI3BioT,IAAkB3moB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAe,CACnCtkB,SAAU,WACVi6B,IAAK,EACLG,KAAM,EACN5D,SAAU,QACVrY,MAAO,QACPqX,YAAa,UAIXmkoB,IAAqBr1oB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,yHAOlBs1oB,IAAwBt1oB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC5C6B,MAAO,MACPiS,aAAc,OAEdhG,aAAc,QAsBZynoB,IAAqBv1oB,EAAAA,EAAAA,GAAOw1oB,GAAPx1oB,CAAH,sNAYlBy1oB,IAAmBz1oB,EAAAA,EAAAA,GAAOqzoB,GAAPrzoB,CAAH,4DAqYtB,GA/Xc,WACV,OAA0C4uf,EAAAA,EAAAA,WAAS,GAAnD,eAAO8mJ,EAAP,KAAsBC,EAAtB,KACA,GAAgD/mJ,EAAAA,EAAAA,WAAS,GAAzD,eAAOgnJ,EAAP,KAAyBC,EAAzB,KACA,GAAkCjnJ,EAAAA,EAAAA,WAAS,GAA3C,eAAO/4a,EAAP,KAAkBuxjB,EAAlB,KACA,GAA0Cx4I,EAAAA,EAAAA,WAAS,GAAnD,eAAOknJ,EAAP,KAAsB5wB,EAAtB,KACA,GAA8Ct2H,EAAAA,EAAAA,WAAS,GAAvD,eAAOmnJ,EAAP,KAAwBC,EAAxB,KACA,GAAwCpnJ,EAAAA,EAAAA,WAAS,GAAjD,eAAOqnJ,EAAP,KAAqBC,EAArB,KACA,GAAwCtnJ,EAAAA,EAAAA,WAAS,GAAjD,eAAOunJ,EAAP,KAAqBC,EAArB,KACA,GAAwDxnJ,EAAAA,EAAAA,WAAS,GAAjE,eAAOynJ,EAAP,KAA6BC,EAA7B,KACA,GAA4C1nJ,EAAAA,EAAAA,UAAS,IAArD,eAAO2nJ,EAAP,KAAuBC,EAAvB,KACA,GAA0B5nJ,EAAAA,EAAAA,UAAS,IAAnC,eAAO5pf,EAAP,KAAcyxoB,EAAd,KACA,GAAgC7nJ,EAAAA,EAAAA,UAAS,IAAzC,eAAO3pf,EAAP,KAAiByxoB,EAAjB,KACA,GAAoC9nJ,EAAAA,EAAAA,UAAS,IAA7C,eAAO+nJ,EAAP,KAAmBC,EAAnB,KAEMpoF,EAAWpC,KAEjB79D,EAAAA,EAAAA,YAAU,WACN64I,GAAa,GACTv4C,GAAAA,IAAY,WAAaA,GAAAA,IAAY,QAAQrgC,EAAS,KAC1D44E,GAAa,EAEhB,GAAE,IAEH,IAMMyP,GAAgB,yCAAG,WAAOtgqB,GAAP,yHAEb5K,GAAAA,GAAAA,mBAFa,oBAIA,UAAT4K,EAJS,gCAIwBg4nB,GAAuBtgB,kBAJ/C,OAISv5mB,EAJT,iCAKK,WAAT6B,EALI,kCAK8Bg4nB,GAAuBvgB,mBALrD,QAKet5mB,EALf,kBAMbwwoB,GAAiB,GACXtxF,EAPO,UAOOl/iB,SAPP,aAOO,EAAQ+9iB,KAPf,0DASPzthB,EATO,UASCtwB,SATD,iBASC,EAAQ+9iB,YATT,aASC,EAAczthB,MACtB8xoB,EAAOljH,EAAY1nG,IAVZ,UAWQqiL,GAAuB37E,aAX/B,eAWPmkH,EAXO,OAYPv6pB,EAAQu6pB,EAAOv6pB,MAZR,UAcKimoB,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAMspjB,EAAYhqiB,aAAe,aAAcob,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CACrJhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MAhBtB,gCAsBPyymB,GAAU6nD,GAtBH,yBAuBP3nD,GAAS3ymB,GAvBF,YAwBTo3iB,EAAY+B,SAxBH,kCA0BHy5D,GAAYx7D,EAAY+B,UA1BrB,yBA2BHo5D,KA3BG,QA6BbvgC,EAAS,KA7BI,2BAiCA,UAATj4kB,EAjCS,kCAiCwB03mB,KAjCxB,QAiCSv5mB,EAjCT,kCAkCK,WAAT6B,EAlCI,kCAkC8By3mB,KAlC9B,QAkCet5mB,EAlCf,sBAoCbwwoB,GAAiB,GACXtxF,EArCO,UAqCOl/iB,SArCP,aAqCO,EAAQ+9iB,KACtBzthB,EAtCO,UAsCCtwB,SAtCD,iBAsCC,EAAQ+9iB,YAtCT,aAsCC,EAAczthB,MACtB8xoB,EAAOljH,EAAY1nG,IAvCZ,UAwCO0nG,EAAYhB,aAxCnB,WAwCPp2iB,EAxCO,QA0CTo3iB,EA1CS,kCA2CS6uF,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAMspjB,EAAYhqiB,aAAe,aAAcob,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CACrJhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MA7C1B,eAiDTqymB,GAAAA,IAAY,MAAOrymB,EAAO,CAAE5I,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACvD49mB,GAAAA,IAAY,SAAUioD,EAAM,CAAEljqB,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACrD2ijB,EAAY8B,UACZm5D,GAAAA,IAAY,WAAYj7D,EAAY8B,SAAU,CAAE9hjB,QAAS,GAAImloB,OAAQ9noB,GAAAA,eAEzEu9kB,EAAS,KAtDA,iEA4DjBqgC,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YA9DE,UA+DXhgE,GAAKgF,UA/DM,QAiErBqxF,GAAiB,GAjEI,0DAAH,sDAuEhB8xB,GAAqB,WACvBJ,EAAc,IACdR,GAAgB,GAChBP,GAAoB,GACpBF,GAAiB,GACjBc,EAAS,IACTC,EAAY,GACf,EAEKO,GAAiB,yCAAG,0HAEdtrqB,GAAAA,GAAAA,mBAFc,wBAGdqqqB,GAAmB,GAHL,SAIOznC,GAAuBrhE,2BAA2B,CAAEloiB,MAAAA,EAAOC,SAAAA,IAJlE,cAIRvwB,EAJQ,OAKdshqB,GAAmB,GACnB9wB,GAAiB,GACXtxF,EAAcl/iB,EAAO+9iB,KACrBqkH,EARQ,OAQDljH,QARC,IAQDA,OARC,EAQDA,EAAa1nG,IARZ,UASQqiL,GAAuB37E,aAT/B,WASRskH,EATQ,OAUR16pB,EAAQ06pB,EAAQ16pB,OAClBo3iB,IAAekjH,EAXL,kCAYQr0B,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAM,aAAc06B,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CAC1HhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MAdzB,gCAiBJyymB,GAAU6nD,GAjBN,yBAkBJ3nD,GAAS3ymB,GAlBL,QAmBVgykB,EAAS,KAnBC,uCAsBdwnF,GAAmB,GAtBL,UAuBuB9nD,GAAelplB,EAAOC,GAvB7C,eAuBRvwB,EAvBQ,OAwBdshqB,GAAmB,GACnB9wB,GAAiB,GACXtxF,EAAcl/iB,EAAO+9iB,KACrBqkH,EAAOljH,EAAY1nG,IA3BX,UA4BM0nG,EAAYhB,aA5BlB,WA4BRp2iB,EA5BQ,QA6BVo3iB,EA7BU,kCA8BQ6uF,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAM,aAAc06B,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CAC1HhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MAhCzB,mBAoCN7Q,GAAAA,GAAAA,mBApCM,kCAqCAsjnB,GAAU6nD,GArCV,yBAsCA3nD,GAAS3ymB,GAtCT,gCAwCNqymB,GAAAA,IAAY,MAAOrymB,EAAO,CAAE5I,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACvD49mB,GAAAA,IAAY,SAAUioD,EAAM,CAAEljqB,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eAzCnD,QA2CVu9kB,EAAS,KA3CC,iEAiDZj9B,EAAe,KAAIjmjB,QAEX,yBADRiF,EAAQghjB,EAAav/hB,UAAUu/hB,EAAaj/iB,QAAQ,KAAO,EAAGi/iB,EAAaj/iB,QAAQ,QACxC,wBAAV/B,GAA6C,uBAAVA,GAA4C,uBAAVA,GAA4C,mCAAVA,IAC1IqmqB,EAAc,+BACdR,GAAgB,IAEH,mBAAb,KAAI7qqB,MAA0C,mBAAb,KAAIA,MAA0C,kBAAb,KAAIA,MAAyC,kBAAb,KAAIA,MAAyC,wBAAb,KAAIA,OACtIqrqB,EAAc,+BACdR,GAAgB,IAGpBvnD,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YA9DG,UA+DZhgE,GAAKgF,UA/DO,QAkEtBmiH,GAAmB,GACnB9wB,GAAiB,GAnEK,0DAAH,qDA6EjBiyB,GAAiC,yCAAG,yGAElCnB,GAAmB,GAFe,UAG5BjxG,EAAAA,GAAAA,IAAuBlW,GAAM0nH,GAHD,OAIlCD,GAAwB,GAJU,gDAM5B/kH,EAAe,KAAIjmjB,QAEX,wBADAimjB,EAAav/hB,UAAUu/hB,EAAaj/iB,QAAQ,KAAO,EAAGi/iB,EAAaj/iB,QAAQ,OACrC,mBAAb,KAAI/G,OACvCqrqB,EAAc,sDACdR,GAAgB,IAVc,QActCJ,GAAmB,GAdmB,yDAAH,qDAiBvC,OACI,gCAESngkB,GAAaigkB,GAEV,UAACZ,GAAD,UAEQvpqB,GAAAA,GAAAA,oBACI,iBAAKq8B,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACI,UAAC,GAAD,OAGJ,iBAAKlO,MAAO,CAAEnO,MAAO,SAArB,gCAIZ,iCACI,WAAC86oB,GAAD,YACI,UAACE,GAAD,WACI,UAACC,GAAD,WACI,UAAC,GAAD,CAAY1qoB,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,wBAIR,WAACg6oB,GAAD,YACI,UAACG,GAAD,WACI,UAAC,GAAD,CAAY3qoB,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,sBAEJ,iBAAKoN,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUlB,UAAW,OAAQE,aAAc,QAA1F,UACI,UAAC,GAAD,CAAY1J,QAAQ,KAAKvQ,MAAM,QAAQe,SAAW8jV,GAAAA,IAAYvzW,OAAOu4E,WAAa,IAAO,OAASg7R,GAAAA,GAAW,QAAU,OAAvH,4DAEJ,iBAAK12U,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUhB,aAAc,QAAvE,UACI,UAAC,GAAD,CAAY1J,QAAQ,KAAKvQ,MAAM,QAAQc,WAAY,SAAUC,SAAW8jV,GAAAA,IAAYvzW,OAAOu4E,WAAa,IAAO,OAASg7R,GAAAA,GAAW,QAAU,OAA7I,sBAGHg3T,GACG,WAACN,GAAD,YACI,UAAC,GAAD,CAAiBhroB,QAAQ,WAAWrrB,KAAK,QAAQ6gB,GAAI,CAAEiC,MAAO,QAAU2sJ,QAAS,kBAAMwof,IAAN,EAAjF,gBACA,UAAC3B,GAAD,CAAoBjroB,QAAQ,KAAKvQ,MAAM,QAAvC,gCACA,UAACy7oB,GAAD,CAAuBlroB,QAAQ,SAASxhB,MAAM,SAAS6pK,SAAU,SAACt4K,GAAD,OAAQs8pB,EAASt8pB,EAAE0O,OAAOzZ,OAAQgnqB,GAAgB,GAAQQ,EAAc,GAAxE,EAC7DzgB,WAAY,CACRgH,kBAAkB,GAEtBv9nB,GAAI,CACAiR,OAAQsloB,EAAe,gBAAkB,oBACzC,UAAW,CAAEjloB,YAAailoB,EAAe,MAAQ,aACjD,iBAAkB,CAAEtloB,OAAQsloB,EAAe,gBAAkB,uBAC7D,sBAAuB,CAAEt8oB,MAAOs8oB,EAAe,MAAQ,aACvD,0BAA2B,CAAEt8oB,MAAO,SACpC,wBAAyB,CAAEA,MAAQs8oB,EAAe,MAAQ,UAAYtloB,OAAQ,YAGtF,UAACykoB,GAAD,CAAuBlroB,QAAQ,SAASxhB,MAAM,YAC1CrS,KAAM0/pB,EAAe,OAAS,WAC9Bxjf,SAAU,SAACt4K,GAAD,OAAQu8pB,EAAYv8pB,EAAE0O,OAAOzZ,OAAQgnqB,GAAgB,GAAQQ,EAAc,GAA3E,EACVzgB,WAAY,CACRgH,kBAAkB,EAClBvK,cACI,UAAE,GAAF,CAAiBl3oB,SAAS,MAA1B,UACI,UAAC,GAAD,CACI,aAAW,6BACX8yK,QAjPxB,kBAAM0nf,GAAgB,SAACl3lB,GAAD,OAAWA,CAAX,GAAtB,EAkPwB+vG,YAhPxB,SAAC98K,GAC7BA,EAAMo7D,gBACT,EA+OuD4niB,KAAK,MAJT,SAMKghE,GAAe,UAACmB,GAAA,EAAD,CAAex3oB,GAAI,CAAE/F,MAAO,YAAgB,UAACw9oB,GAAA,EAAD,CAAYz3oB,GAAI,CAAE/F,MAAO,gBAKrG+F,GAAI,CACAiR,OAAQsloB,EAAe,gBAAkB,oBACzC,UAAW,CAAEjloB,YAAailoB,EAAe,MAAQ,aACjD,iBAAkB,CAAEtloB,OAAQsloB,EAAe,gBAAkB,uBAC7D,sBAAuB,CAAEt8oB,MAAOs8oB,EAAe,MAAQ,aACvD,0BAA2B,CAAEt8oB,MAAO,SACpC,wBAAyB,CAAEA,MAAQs8oB,EAAe,MAAQ,UAAYtloB,OAAQ,YAGtF,UAAC0koB,GAAD,CAAoBnroB,QAAQ,YAAYg1U,QAAS22T,EAAiBn2oB,GAAI,CAClE,YAAa,CACTyS,gBAAiB,YAEtBm8I,QAAS,kBAAMyof,IAAN,EAJZ,qBAKA,UAAC,GAAD,CAAYp9oB,MAAM,QAAQ+F,GAAI,CAAEkU,aAAc,QAA9C,UACI,eAAGi5D,KAAK,IAAIyhF,QAAS,kBA5GzD4nf,GAAgB,GAChBQ,EAAc,IACdjB,GAAiB,QACjBE,GAAoB,EAyGqC,EAArB,iCAEJ,WAAC,GAAD,CAAYh8oB,MAAM,QAAlB,mCAEI,eAAGkzE,KAAK,UAAR,8BAEJ,UAAC0okB,GAAD,CAAkBvC,SAAS,QAAQ9ooB,QAAQ,SAASwuK,QAASu9d,EAA7D,SAA4EQ,OAKhFf,GAEI,WAACR,GAAD,YACI,UAAC,GAAD,CAAiBhroB,QAAQ,WAAWrrB,KAAK,QAAQ6gB,GAAI,CAAEiC,MAAO,QAAU2sJ,QAAS,kBAAMwof,IAAN,EAAjF,gBACA,UAAC3B,GAAD,CAAoBjroB,QAAQ,KAAKvQ,MAAM,QAAvC,8BACA,UAACy7oB,GAAD,CAAuBlroB,QAAQ,SAASxhB,MAAM,SAAS6pK,SAAU,SAACt4K,GAAD,OAAQq8pB,EAAkBr8pB,EAAE0O,OAAOzZ,OAAQgnqB,GAAgB,GAAQQ,EAAc,IAAKN,GAAwB,EAA9G,EAC7DngB,WAAY,CACRgH,kBAAkB,GAEtBv9nB,GAAI,CACAiR,OAAQsloB,EAAe,gBAAkB,oBACzC,UAAW,CAAEjloB,YAAailoB,EAAe,MAAQ,aACjD,iBAAkB,CAAEtloB,OAAQsloB,EAAe,gBAAkB,uBAC7D,sBAAuB,CAAEt8oB,MAAOs8oB,EAAe,MAAQ,aACvD,0BAA2B,CAAEt8oB,MAAO,SACpC,wBAAyB,CAAEA,MAAQs8oB,EAAe,MAAQ,UAAYtloB,OAAQ,YAItF,UAAC0koB,GAAD,CAAoBnroB,QAAQ,YAAYg1U,QAAS22T,EAAiBn2oB,GAAI,CAClE,YAAa,CACTyS,gBAAiB,YAEtBm8I,QAAS,kBAAM2of,IAAN,EAJZ,qBAKA,WAAC,GAAD,CAAYt9oB,MAAM,QAAlB,mCAEI,eAAGkzE,KAAK,UAAR,8BAEJ,UAAC0okB,GAAD,CAAkBvC,SAAS,QAAQ9ooB,QAAQ,SAASwuK,QAASu9d,EAA7D,SAA4EQ,KAC5E,UAAClB,GAAD,CAAkBvC,SAAS,UAAU9ooB,QAAQ,SAASwuK,QAASy9d,EAA/D,8CAGJ,mCACI,UAAC,GAAD,WACI,kBAAKruoB,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUF,cAAe,UAAxE,WACI,UAAC,GAAA0ioB,kBAAD,CAAmBz/pB,KAAK,qBACpBmwB,MAAO,CACHnG,MAAO68U,GAAAA,GAAW,QAAU,QAC5B5wU,aAAc,OACdnT,WAAY,mCACZmH,QAAS,OACTgT,eAAgB,SAChBC,WAAY,UAEhBy5I,QAAS,kBAAMqof,GAAiB,SAAvB,IAEmB,YAA5BlrqB,GAAAA,GAAAA,gBACA,UAAC,GAAA4rqB,iBAAD,CAAkB1/pB,KAAK,oBACnBmwB,MAAO,CACHnG,MAAO68U,GAAAA,GAAW,QAAU,QAC5B5wU,aAAc,OACdnT,WAAY,mCACZmH,QAAS,OACTgT,eAAgB,SAChBC,WAAY,SACZnB,UAAW,QAEf46I,QAAS,kBAAMqof,GAAiB,QAAvB,KAGjB,kBAAK7uoB,MAAO,CAAElG,QAAS,OAAQ8S,cAAe,OAA9C,WACI,UAACogoB,GAAD,KACA,UAAC,GAAD,CAAYn7oB,MAAM,QAAQ+F,GAAI,CAAEsQ,OAAQ,OAAQltB,KAAM,OAAtD,iBACA,UAACgypB,GAAD,QAEJ,UAACC,GAAD,CAAoB7qoB,QAAQ,YAAYvQ,MAAM,YAAY20J,QAAS,WA3Q/Gmnf,GAAiB,EA2Q8F,EAAnE,0BAGR,UAACR,GAAD,WACI,WAAC,GAAD,CAAYt7oB,MAAM,QAAlB,mCAEI,eAAGkzE,KAAK,UAAR,2CAWnD,EC/hBKmokB,GAAmBl1oB,EAAAA,EAAAA,IAAH,2FA4GtB,GApGoB,WAChB,IAAMwujB,EAAWpC,IACjB,GAAkCx9D,EAAAA,EAAAA,WAAS,GAA3C,eAAO/4a,EAAP,KAAkBuxjB,EAAlB,KACA,GAAoCx4I,EAAAA,EAAAA,UAAsB,MAA1D,eAAO4oJ,EAAP,KAAmBC,EAAnB,KA6EA,OA3EAlpJ,EAAAA,EAAAA,YAAU,WAAM,8CAEZ,yGACuBqrC,KADvB,YACUnH,EADV,SAE6C,IAA7BvjjB,OAAOgB,KAAKuijB,GAAM5gjB,OAFlC,wBAGQ4lqB,EAAchlH,GAHtB,SAIc6wF,KAJd,OAKQ,OAAI7wF,QAAJ,IAAIA,GAAAA,EAAMiD,WACF/pjB,GAAAA,GAAAA,mBACAyjnB,GAAY38D,EAAKiD,UAGjBm5D,GAAAA,IAAY,WAAYp8D,EAAKiD,SAAU,CAAE9hjB,QAAS,GAAImloB,OAAQ9noB,GAAAA,gBAV9E,4BAeYtF,GAAAA,GAAAA,mBAfZ,kCAgBkB4jnB,KAhBlB,eAiBYhniB,eAAelwC,QACfs3hB,aAAaF,WAAW,gBACxB4/D,GAAAA,qBAAyC,GAnBrD,UAoBkBd,GAAuB16E,UApBzC,gCAuBYg7D,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YAzB3B,QA2BQrgC,EAAS,UA3BjB,6CAFY,sBACZ44E,GAAa,GADD,mCAgCZsQ,GAuCAtQ,GAAa,EAEhB,GAAE,IAGCvxjB,IAAc2hkB,GAEV,UAAC,GAAD,UAEQ7rqB,GAAAA,GAAAA,oBACI,iBAAKq8B,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACI,UAAC,GAAD,OAGJ,iBAAKlO,MAAO,CAAEnO,MAAO,SAArB,mCAIZ,UAAC+yjB,EAAD,GAIX,ECzHK6hD,GAAYzumB,EAAAA,EAAAA,IAAH,2FAqBf,GAfqB,WACjB,OACI,UAAC,GAAD,UAEQr0B,GAAAA,GAAAA,oBACI,iBAAKq8B,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACI,UAAC,GAAD,OAGJ,iBAAKlO,MAAO,CAAEnO,MAAO,SAArB,iCAInB,ECHK86oB,GAAuB30oB,EAAAA,EAAAA,IAAH,8IAGJ0+U,GAAAA,GAAW,SAAW,OAKtCk2T,GAAe50oB,EAAAA,EAAAA,IAAH,iKASZ60oB,GAAc70oB,EAAAA,EAAAA,IAAH,qIACJ0+U,GAAAA,GAAW,OAAS,QAQ3Bo2T,GAAsB90oB,EAAAA,EAAAA,IAAH,2KAMP0+U,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAM,MAAQ2kS,GAAAA,GAAW,KAAO,MAG7Eq2T,GAA4B/0oB,EAAAA,EAAAA,IAAH,wHAChB0+U,GAAAA,GAAW,OAAS,OAIjBA,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAmC,QAA5BpuE,GAAAA,GAAAA,cAAoC,2BAA6B,KAAQ,MAI7Hs6pB,GAAkBjmoB,EAAAA,EAAAA,IAAH,qHAOfk1oB,GAAmBl1oB,EAAAA,EAAAA,IAAH,2FAKhBm1oB,GAAqBn1oB,EAAAA,EAAAA,IAAH,6FAMlBg1oB,IAAgBh1oB,EAAAA,EAAAA,GAAOgmoB,GAAPhmoB,CAAH,6GAOb23oB,IAA4B33oB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAH,yRAClB0+U,GAAAA,GAAW,QAAU,SAY5Bk5T,GAAwB53oB,EAAAA,EAAAA,IAAH,gOAOd0+U,GAAAA,GAAW,OAAS,OAI3Bm5T,IAA4B73oB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,yHAOzBs1oB,IAAwBt1oB,EAAAA,EAAAA,GAAOwmoB,GAAPxmoB,CAAkB,CAC5C6B,MAAO,MACPiS,aAAc,OAEdhG,aAAc,QAoBZynoB,IAAqBv1oB,EAAAA,EAAAA,GAAOw1oB,GAAPx1oB,CAAH,sNAalB2moB,IAAkB3moB,EAAAA,EAAAA,GAAO65K,GAAP75K,CAAe,CACnCtkB,SAAU,WACVi6B,IAAK,EACLG,KAAM,EACN5D,SAAU,QACVrY,MAAO,QACPqX,YAAa,UAGXukoB,IAAmBz1oB,EAAAA,EAAAA,GAAOqzoB,GAAPrzoB,CAAH,4DA+VtB,GAxVe,WACX,OAAkC4uf,EAAAA,EAAAA,WAAS,GAA3C,eAAO/4a,EAAP,KAAkBuxjB,EAAlB,KACA,GAA0Cx4I,EAAAA,EAAAA,WAAS,GAAnD,eAAOknJ,EAAP,KAAsB5wB,EAAtB,KACA,GAAwCt2H,EAAAA,EAAAA,WAAS,GAAjD,eAAOunJ,EAAP,KAAqBC,EAArB,KACA,GAA0CxnJ,EAAAA,EAAAA,WAAS,GAAnD,eAAOkpJ,EAAP,KAAsBC,EAAtB,KACA,GAAwCnpJ,EAAAA,EAAAA,WAAS,GAAjD,eAAOqnJ,EAAP,KAAqBC,EAArB,KACA,GAA8CtnJ,EAAAA,EAAAA,WAAS,GAAvD,eAAOmnJ,EAAP,KAAwBC,EAAxB,KACA,GAAoCpnJ,EAAAA,EAAAA,UAAS,IAA7C,eAAO+nJ,EAAP,KAAmBC,EAAnB,KACA,GAAwBhoJ,EAAAA,EAAAA,UAAS,IAAjC,eAAOtkhB,EAAP,KAAa0tqB,EAAb,KACA,GAA0BppJ,EAAAA,EAAAA,UAAS,IAAnC,eAAO5pf,EAAP,KAAcyxoB,EAAd,KACA,GAAgC7nJ,EAAAA,EAAAA,UAAS,IAAzC,eAAO3pf,EAAP,KAAiByxoB,EAAjB,KACMloF,EAAWpC,KAEjB79D,EAAAA,EAAAA,YAAU,WACN64I,GAAa,GACTv4C,GAAAA,IAAY,WAAaA,GAAAA,IAAY,QAAQrgC,EAAS,KAC1D44E,GAAa,EAEhB,GAAE,IAEH,IAMM6Q,EAAwB,yCAAG,mFAC7BF,GAAiB,GADY,2CAAH,qDAcxBG,EAAiB,yCAAG,WAAO3hqB,GAAP,yHAEd5K,GAAAA,GAAAA,mBAFc,oBAID,UAAT4K,EAJU,gCAIuBg4nB,GAAuBtgB,kBAJ9C,OAIQv5mB,EAJR,iCAKI,WAAT6B,EALK,kCAK6Bg4nB,GAAuBvgB,mBALpD,QAKct5mB,EALd,kBAMdwwoB,GAAiB,GACXtxF,EAPQ,UAOMl/iB,SAPN,aAOM,EAAQ+9iB,KAPd,0DASRzthB,EATQ,UASAtwB,SATA,iBASA,EAAQ+9iB,YATR,aASA,EAAczthB,MACtB8xoB,EAAOljH,EAAY1nG,IAVX,UAWOqiL,GAAuB37E,aAX9B,eAWRmkH,EAXQ,OAYRv6pB,EAAQu6pB,EAAOv6pB,MAZP,UAcIimoB,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAMspjB,EAAYhqiB,aAAe,aAAcob,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CACrJhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MAhBrB,gCAsBRyymB,GAAU6nD,GAtBF,yBAuBR3nD,GAAS3ymB,GAvBD,YAyBVo3iB,EAAY+B,SAzBF,kCA0BJy5D,GAAYx7D,EAAY+B,UA1BpB,yBA2BJo5D,KA3BI,QA6BdvgC,EAAS,KA7BK,2BAgCD,UAATj4kB,EAhCU,kCAgCuB03mB,KAhCvB,QAgCQv5mB,EAhCR,kCAiCI,WAAT6B,EAjCK,kCAiC6By3mB,KAjC7B,QAiCct5mB,EAjCd,sBAkCdwwoB,GAAiB,GACXtxF,EAnCQ,UAmCMl/iB,SAnCN,aAmCM,EAAQ+9iB,KACtBzthB,EApCQ,UAoCAtwB,SApCA,iBAoCA,EAAQ+9iB,YApCR,aAoCA,EAAczthB,MACtB8xoB,EAAOljH,EAAY1nG,IArCX,UAsCM0nG,EAAYhB,aAtClB,WAsCRp2iB,EAtCQ,QAuCVo3iB,EAvCU,kCAwCQ6uF,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAMspjB,EAAYhqiB,aAAe,aAAcob,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CACrJhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MA1CzB,eA8CVqymB,GAAAA,IAAY,MAAOrymB,EAAO,CAAE5I,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACvD49mB,GAAAA,IAAY,SAAUioD,EAAM,CAAEljqB,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACrD2ijB,EAAY8B,UACZm5D,GAAAA,IAAY,WAAYj7D,EAAY8B,SAAU,CAAE9hjB,QAAS,GAAImloB,OAAQ9noB,GAAAA,eAEzEu9kB,EAAS,KAnDC,iEAwDlBqgC,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YA1DG,UA2DZhgE,GAAKgF,UA3DO,QA8DtBqxF,GAAiB,GA9DK,0DAAH,sDAiEjBizB,EAAmB,yCAAG,yHAEP,KAAT7tqB,EAFgB,uBAGhBssqB,EAAc,wBACdR,GAAgB,GAJA,8BAOhBzqqB,GAAAA,GAAAA,mBAPgB,wBAQhBqqqB,GAAmB,GARH,SASKznC,GAAuBvhE,+BAA+B,CAAEhoiB,MAAAA,EAAOC,SAAAA,IATpE,cASVvwB,EATU,OAUhBshqB,GAAmB,GACnB9wB,GAAiB,GACXtxF,EAAcl/iB,EAAO+9iB,KACrBqkH,EAbU,OAaHljH,QAbG,IAaHA,OAbG,EAaHA,EAAa1nG,IAbV,UAcMqiL,GAAuB37E,aAd7B,WAcVskH,EAdU,OAeV16pB,EAAQ06pB,EAAQ16pB,OAClBo3iB,IAAekjH,EAhBH,kCAiBMr0B,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAMA,EAAM06B,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CAClHhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MAnBvB,gCAsBNyymB,GAAU6nD,GAtBJ,yBAuBN3nD,GAAS3ymB,GAvBH,QAwBZgykB,EAAS,KAxBG,uCA4BhBwnF,GAAmB,GA5BH,UA6BqB7nD,GAAgBnplB,EAAOC,GA7B5C,eA6BVvwB,EA7BU,OA8BhBshqB,GAAmB,GACnB9wB,GAAiB,GACXtxF,EAAcl/iB,EAAO+9iB,KACrBqkH,EAAOljH,EAAY1nG,IAjCT,UAkCI0nG,EAAYhB,aAlChB,WAkCVp2iB,EAlCU,QAmCZo3iB,EAnCY,kCAoCM6uF,GAAAA,KAAWxxoB,GAAAA,QAAAA,IAAqB,QAAS,CAAE3G,KAAMA,EAAM06B,MAAK,OAAEA,QAAF,IAAEA,OAAF,EAAEA,EAAOtf,cAAewpmB,OAAQ4nD,GAAQ,CAClHhiqB,QAAS,CACL,cAAgB,UAAhB,OAA2B0H,MAtCvB,eA0CZqymB,GAAAA,IAAY,MAAOrymB,EAAO,CAAE5I,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eACvD49mB,GAAAA,IAAY,SAAUioD,EAAM,CAAEljqB,QAAU,EAAI,GAAKmloB,OAAQ9noB,GAAAA,eAEzDu9kB,EAAS,KA7CG,iEAiDdj9B,EAAe,KAAIjmjB,QAEX,wBADRiF,EAAQghjB,EAAav/hB,UAAUu/hB,EAAaj/iB,QAAQ,KAAO,EAAGi/iB,EAAaj/iB,QAAQ,QACtC,kBAAb,KAAI/G,OACtCqrqB,EAAc,4CACdR,GAAgB,IAEN,8BAAV7lqB,GAAsD,yBAAb,KAAIhF,OAC7CqrqB,EAAc,wBACdR,GAAgB,IAEN,uBAAV7lqB,GAA+C,kBAAb,KAAIhF,OACtCqrqB,EAAc,2BACdR,GAAgB,IAEN,0BAAV7lqB,GAAkD,mBAAb,KAAIhF,OACzCqrqB,EAAc,4CACdR,GAAgB,IAGpBvnD,GAAAA,OAAe,OACfA,GAAAA,OAAe,UACfA,GAAAA,OAAe,YAtEK,UAuEdhgE,GAAKgF,UAvES,QAyExBmiH,GAAmB,GACnB9wB,GAAiB,GA1EO,0DAAH,qDAoFzB,OACI,gCAESrviB,GAAaigkB,GAEV,UAAC,GAAD,UAEQnqqB,GAAAA,GAAAA,oBACI,iBAAKq8B,MAAO,CAAEtsB,SAAU,WAAYi6B,IAAK,MAAO9T,MAAO,OAAQqU,UAAW,UAA1E,UACI,UAAC,GAAD,OAGJ,iBAAKlO,MAAO,CAAEnO,MAAO,SAArB,gCAIZ,iCACI,WAAC,GAAD,YACI,UAAC,GAAD,WACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAYuQ,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,wBAGR,WAAC,GAAD,YACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAYwP,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,sBAEJ,iBAAKoN,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUlB,UAAW,OAAQE,aAAc,QAA1F,UACI,UAAC,GAAD,CAAY1J,QAAQ,KAAKvQ,MAAM,QAAQe,SAAW8jV,GAAAA,IAAYvzW,OAAOu4E,WAAa,IAAO,OAASg7R,GAAAA,GAAW,QAAU,OAAvH,4DAEJ,iBAAK12U,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUhB,aAAc,QAAvE,UACI,UAAC,GAAD,CAAY1J,QAAQ,KAAKvQ,MAAM,QAAQc,WAAY,SAAUC,SAAW8jV,GAAAA,IAAYvzW,OAAOu4E,WAAa,IAAO,OAASg7R,GAAAA,GAAW,QAAU,OAA7I,uBAGAo5T,GAEI,WAACF,GAAD,YACI,UAAC,GAAD,CAAiBxtoB,QAAQ,WAAWrrB,KAAK,QAAQ6gB,GAAI,CAAEiC,MAAO,QAAU2sJ,QAAS,kBAnMrHoof,EAAc,IACdR,GAAgB,GAEhB2B,GAAiB,GACjBC,EAAQ,IACRvB,EAAS,SACTC,EAAY,GA6LyG,EAAjF,gBACA,UAACmB,GAAD,CAA2BztoB,QAAQ,KAAKvQ,MAAM,QAA9C,kCACA,UAAC,GAAD,CAAuBuQ,QAAQ,SAASxhB,MAAM,QAAQ6pK,SAAU,SAACt4K,GAAD,OA9ClF,SAACA,GACnBy8pB,EAAc,IACdR,GAAgB,GAChB4B,EAAQ79pB,EAAE0O,OAAOzZ,MAEpB,CAyC+GgpqB,CAAcj+pB,EAAtB,EAC5Dg8oB,WAAY,CACRgH,kBAAkB,GAEtBv9nB,GAAI,CACAiR,OAAQsloB,EAAe,gBAAkB,oBACzC,UAAW,CAAEjloB,YAAailoB,EAAe,MAAQ,aACjD,iBAAkB,CAAEtloB,OAAQsloB,EAAe,gBAAkB,uBAC7D,sBAAuB,CAAEt8oB,MAAOs8oB,EAAe,MAAQ,aACvD,0BAA2B,CAAEt8oB,MAAO,SACpC,wBAAyB,CAAEA,MAAQs8oB,EAAe,MAAQ,UAAYtloB,OAAQ,YAItF,UAAC,GAAD,CAAuBzG,QAAQ,SAASxhB,MAAM,SAAS6pK,SAAU,SAACt4K,GAAD,OAAQs8pB,EAASt8pB,EAAE0O,OAAOzZ,OAAQgnqB,GAAgB,GAAQQ,EAAc,GAAxE,EAC7DzgB,WAAY,CACRgH,kBAAkB,GAEtBv9nB,GAAI,CACAiR,OAAQsloB,EAAe,gBAAkB,oBACzC,UAAW,CAAEjloB,YAAailoB,EAAe,MAAQ,aACjD,iBAAkB,CAAEtloB,OAAQsloB,EAAe,gBAAkB,uBAC7D,sBAAuB,CAAEt8oB,MAAOs8oB,EAAe,MAAQ,aACvD,0BAA2B,CAAEt8oB,MAAO,SACpC,wBAAyB,CAAEA,MAAQs8oB,EAAe,MAAQ,UAAYtloB,OAAQ,YAItF,UAAC,GAAD,CAAuBzG,QAAQ,SAASxhB,MAAM,YAC1CrS,KAAM0/pB,EAAe,OAAS,WAC9Bxjf,SAAU,SAACt4K,GAAD,OAAQu8pB,EAAYv8pB,EAAE0O,OAAOzZ,OAAQgnqB,GAAgB,GAAQQ,EAAc,GAA3E,EACVzgB,WAAY,CACRgH,kBAAkB,EAClBvK,cACI,UAAE,GAAF,CAAiBl3oB,SAAS,MAA1B,UACI,UAAC,GAAD,CACI,aAAW,6BACX8yK,QArP5B,kBAAM0nf,GAAgB,SAACl3lB,GAAD,OAAWA,CAAX,GAAtB,EAsP4B+vG,YApP5B,SAAC98K,GAC7BA,EAAMo7D,gBACT,EAmP2D4niB,KAAK,MAJT,SAMKghE,GAAe,UAACmB,GAAA,EAAD,CAAex3oB,GAAI,CAAE/F,MAAO,YAAgB,UAACw9oB,GAAA,EAAD,CAAYz3oB,GAAI,CAAE/F,MAAO,gBAKrG+F,GAAI,CACAiR,OAAQsloB,EAAe,gBAAkB,oBACzC,UAAW,CAAEjloB,YAAailoB,EAAe,MAAQ,aACjD,iBAAkB,CAAEtloB,OAAQsloB,EAAe,gBAAkB,uBAC7D,sBAAuB,CAAEt8oB,MAAOs8oB,EAAe,MAAQ,aACvD,0BAA2B,CAAEt8oB,MAAO,SACpC,wBAAyB,CAAEA,MAAQs8oB,EAAe,MAAQ,UAAYtloB,OAAQ,YAGtF,UAAC,GAAD,CAAoBzG,QAAQ,YAAYg1U,QAAS22T,EAAiB7Q,gBAAgB,QAAQtloB,GAAI,CAC1F,YAAa,CACTyS,gBAAiB,YAEtBm8I,QAAS,kBAAM2pf,GAAN,EAJZ,qBAKA,WAAC,GAAD,CAAYt+oB,MAAM,QAAlB,sCAEI,eAAGkzE,KAAK,SAAR,yBAEJ,UAAC,GAAD,CAAkBmmkB,SAAS,QAAQ9ooB,QAAQ,SAASwuK,QAASu9d,EAA7D,SAA4EQ,QAIhF,mCACI,WAAC,GAAD,YACI,kBAAK3uoB,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUF,cAAe,UAAxE,WACI,UAAC,GAAA0ioB,kBAAD,CAAmBz/pB,KAAK,sBAAsBmwB,MAAO,CACjDnG,MAAO68U,GAAAA,GAAW,QAAU,QAC5B5wU,aAAc,OACdnT,WAAY,mCACZmH,QAAS,OACTgT,eAAgB,SAChBC,WAAY,UACby5I,QAAS,kBAAM0pf,EAAkB,SAAxB,IAEoB,YAA5BvsqB,GAAAA,GAAAA,gBACA,UAAC,GAAA4rqB,iBAAD,CAAkB1/pB,KAAK,qBAAqBmwB,MAAO,CAC/CnG,MAAO68U,GAAAA,GAAW,QAAU,QAC5B5wU,aAAc,OACdnT,WAAY,mCACZmH,QAAS,OACTgT,eAAgB,SAChBC,WAAY,SACZnB,UAAW,QACZ46I,QAAS,kBAAM0pf,EAAkB,QAAxB,KAEhB,kBAAKlwoB,MAAO,CAAElG,QAAS,OAAQ8S,cAAe,OAA9C,WACI,UAAC,GAAD,KACA,UAAC,GAAD,CAAY/a,MAAM,QAAQ+F,GAAI,CAAEsQ,OAAQ,OAAQltB,KAAM,OAAtD,iBACA,UAAC,GAAD,WAGR,UAAC20pB,GAAD,CAA2BvtoB,QAAQ,YAAYokJ,QAAS,kBAAMypf,GAAN,EAAxD,mCAGJ,UAAC,GAAD,WACI,WAAC,GAAD,CAAYp+oB,MAAM,QAAlB,sCAEI,eAAGkzE,KAAK,SAAR,sCAWnD,EC5fK4nkB,GAAuB30oB,EAAAA,EAAAA,IAAH,8IAGJ0+U,GAAAA,GAAW,SAAW,OAKtCk2T,GAAe50oB,EAAAA,EAAAA,IAAH,iKASZ60oB,GAAc70oB,EAAAA,EAAAA,IAAH,qIACJ0+U,GAAAA,GAAW,OAAS,QAQ3Bo2T,GAAsB90oB,EAAAA,EAAAA,IAAH,2KAMP0+U,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAM,MAAQ2kS,GAAAA,GAAW,KAAO,MAG7Eq2T,GAA4B/0oB,EAAAA,EAAAA,IAAH,yHAChB0+U,GAAAA,GAAW,QAIRA,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAmC,QAA5BpuE,GAAAA,GAAAA,cAAoC,2BAA6B,KAAQ,MAG7H0sqB,IAAiBr4oB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,+CA8CpB,GAvC0B,WACtB,OACI,iCACI,WAAC,GAAD,YACI,UAAC,GAAD,WACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAYoK,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,wBAGR,WAAC,GAAD,YACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAYwP,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,sBAEJ,UAAC,GAAD,CAAYf,MAAM,YAAYuQ,QAASs0U,GAAAA,GAAW,KAAO,KAAzD,6BACA,iBAAK12U,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUlB,UAAW,OAAQE,aAAc,QAA1F,UACI,WAAC,GAAD,CAAY1J,QAAQ,KAAKvQ,MAAM,YAAYe,SAAW8jV,GAAAA,IAAYvzW,OAAOu4E,WAAa,IAAO,OAASg7R,GAAAA,GAAW,QAAU,OAA3H,WACI,UAAC,GAAD,CAAYt0U,QAAQ,KAAKxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAA/D,qCACA,UAAC25T,GAAD,CAAgBjuoB,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAAtE,yCAGA,UAAC25T,GAAD,CAAgBjuoB,QAAQ,KAAKxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAAnE,wCACA,WAAC25T,GAAD,CAAgBjuoB,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAAtE,qDAEI,WAAC25T,GAAD,CAAgBjuoB,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY,QAAlD,uHAC6G,uBAE7G,WAAC,GAAD,CAAY3J,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY,OAAQD,aAAc,QAApE,oHAC0G,sBAN9G,oIAgB3B,ECvFK6goB,GAAuB30oB,EAAAA,EAAAA,IAAH,8IAGJ0+U,GAAAA,GAAW,SAAW,OAKtCk2T,GAAe50oB,EAAAA,EAAAA,IAAH,iKASZ60oB,GAAc70oB,EAAAA,EAAAA,IAAH,qIACJ0+U,GAAAA,GAAW,OAAS,QAQ3Bo2T,GAAsB90oB,EAAAA,EAAAA,IAAH,2KAMP0+U,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAM,MAAQ2kS,GAAAA,GAAW,KAAO,MAG7Eq2T,GAA4B/0oB,EAAAA,EAAAA,IAAH,yHAChB0+U,GAAAA,GAAW,QAIRA,GAAAA,IAAYvzW,OAAO4uE,YAAc,IAAmC,QAA5BpuE,GAAAA,GAAAA,cAAoC,2BAA6B,KAAQ,MAG7H0sqB,IAAiBr4oB,EAAAA,EAAAA,GAAO4umB,GAAP5umB,CAAH,+CA8CpB,GAvCuC,WACnC,OACI,iCACI,WAAC,GAAD,YACI,UAAC,GAAD,WACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAYoK,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,iCAGR,WAAC,GAAD,YACI,UAAC,GAAD,WACI,UAAC,GAAD,CAAYwP,QAAQ,KAAKvQ,MAAM,QAAQe,SAAU,QAAjD,+BAEJ,UAAC,GAAD,CAAYf,MAAM,YAAYuQ,QAASs0U,GAAAA,GAAW,KAAO,KAAzD,6BACA,iBAAK12U,MAAO,CAAElG,QAAS,OAAQgT,eAAgB,SAAUlB,UAAW,OAAQE,aAAc,QAA1F,UACI,WAAC,GAAD,CAAY1J,QAAQ,KAAKvQ,MAAM,YAAYe,SAAW8jV,GAAAA,IAAYvzW,OAAOu4E,WAAa,IAAO,OAASg7R,GAAAA,GAAW,QAAU,OAA3H,WACI,UAAC,GAAD,CAAYt0U,QAAQ,KAAKxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAA/D,qCACA,UAAC,GAAD,CAAgBt0U,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAAtE,0CAGA,UAAC,GAAD,CAAgBt0U,QAAQ,KAAKxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAAnE,wCACA,WAAC,GAAD,CAAgBt0U,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY2qU,GAAAA,GAAW,OAAS,IAAtE,4CAEI,WAAC,GAAD,CAAgBt0U,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY,QAAlD,uEAC6D,uBAE7D,WAAC,GAAD,CAAY3J,QAAQ,QAAQxK,GAAI,CAAEmU,WAAY,OAAQD,aAAc,QAApE,2DACiD,sBANrD,oIAgB3B,ECjDD,GA9BY,WACR,OACI,iCACI,WAACy5iB,EAAD,YASI,WAACT,EAAD,CAAOpvkB,SAAS,UAAC,GAAD,IAAhB,WACI,UAACovkB,EAAD,CAAOj5kB,KAAK,IAAI6J,SAAS,UAAC,GAAD,OACzB,UAACovkB,EAAD,CAAOj5kB,KAAK,WAAW6J,SAAS,UAAC,GAAD,OAChC,UAACovkB,EAAD,CAAOj5kB,KAAK,eAAe6J,SAAS,UAAC46pB,GAAD,OACpC,UAACxrF,EAAD,CAAOj5kB,KAAK,iBAAiB6J,SAAS,UAAC,GAAD,OACtC,UAACovkB,EAAD,CAAOj5kB,KAAK,YAAY6J,SAAS,UAAC,GAAD,OACjC,UAACovkB,EAAD,CAAOj5kB,KAAK,YAAY6J,SAAS,UAAC,GAAD,UAErC,UAACovkB,EAAD,CAAOj5kB,KAAK,SAAS6J,SAAS,UAAC,GAAD,OAC9B,UAACovkB,EAAD,CAAOj5kB,KAAK,UAAU6J,SAAS,UAAC,GAAD,OAC/B,UAACovkB,EAAD,CAAOj5kB,KAAK,WAAW6J,SAAS,UAAC,GAAD,OAChC,UAACovkB,EAAD,CAAOj5kB,KAAK,yBAAyB6J,SAAS,UAAC,GAAD,OAC9C,UAACovkB,EAAD,CAAOj5kB,KAAK,IAAI6J,SAAS,6DAIxC,EC5BK42hB,GAAc,IAAIhM,GAAAA,YAEXv+e,EAAAA,WAAoB32C,SAASyikB,eAAe,SACpDr2hB,QAEH,UAACwuiB,EAAD,WACE,UAAC,GAAA9/C,oBAAD,CAAqB1va,OAAQ81a,GAA7B,UACE,UAAC,GAAD","sources":["../node_modules/@capacitor-firebase/authentication/src/definitions.ts","../node_modules/@capacitor/core/build/util.js","../node_modules/@capacitor/core/build/platforms.js","../node_modules/@capacitor/core/build/runtime.js","../node_modules/@capacitor/core/build/global.js","../node_modules/@capacitor/core/build/web-plugin.js","../node_modules/@capacitor/core/build/core-plugins.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Utility.js","../node_modules/@emotion/cache/node_modules/stylis/src/Tokenizer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Enum.js","../node_modules/@emotion/cache/node_modules/stylis/src/Serializer.js","../node_modules/@emotion/cache/node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/@emotion/cache/node_modules/stylis/src/Middleware.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/react/dist/emotion-element-6a883da9.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/serialize/node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js","../node_modules/@emotion/styled/base/dist/emotion-styled-base.browser.esm.js","../node_modules/@emotion/styled/dist/emotion-styled.browser.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@firebase/util/src/crypt.ts","../node_modules/@firebase/util/src/defaults.ts","../node_modules/@firebase/util/src/global.ts","../node_modules/@firebase/util/src/deferred.ts","../node_modules/@firebase/util/src/environment.ts","../node_modules/@firebase/util/src/errors.ts","../node_modules/@firebase/util/src/obj.ts","../node_modules/@firebase/util/src/query.ts","../node_modules/@firebase/util/src/subscribe.ts","../node_modules/@firebase/util/src/utf8.ts","../node_modules/@firebase/util/src/exponential_backoff.ts","../node_modules/@firebase/util/src/compat.ts","../node_modules/@mui/icons-material/AccountCircle.js","../node_modules/@mui/icons-material/AddBox.js","../node_modules/@mui/icons-material/ArrowBack.js","../node_modules/@mui/icons-material/ArrowDownward.js","../node_modules/@mui/icons-material/ArrowUpward.js","../node_modules/@mui/icons-material/CalendarMonth.js","../node_modules/@mui/icons-material/CalendarTodayTwoTone.js","../node_modules/@mui/icons-material/Check.js","../node_modules/@mui/icons-material/Close.js","../node_modules/@mui/icons-material/DeleteForever.js","../node_modules/@mui/icons-material/East.js","../node_modules/@mui/icons-material/FitnessCenter.js","../node_modules/@mui/icons-material/MoreVert.js","../node_modules/@mui/icons-material/Save.js","../node_modules/@mui/icons-material/Search.js","../node_modules/@mui/icons-material/Settings.js","../node_modules/@mui/icons-material/Visibility.js","../node_modules/@mui/icons-material/VisibilityOff.js","../node_modules/@mui/icons-material/West.js","../node_modules/@mui/icons-material/utils/createSvgIcon.js","../node_modules/@mui/material/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/@mui/material/node_modules/react-is/index.js","../node_modules/@mui/material/styles/createMixins.js","../node_modules/@mui/material/colors/common.js","../node_modules/@mui/material/colors/grey.js","../node_modules/@mui/material/colors/purple.js","../node_modules/@mui/material/colors/red.js","../node_modules/@mui/material/colors/orange.js","../node_modules/@mui/material/colors/blue.js","../node_modules/@mui/material/colors/lightBlue.js","../node_modules/@mui/material/colors/green.js","../node_modules/@mui/material/styles/createPalette.js","../node_modules/@mui/material/styles/createTypography.js","../node_modules/@mui/material/styles/shadows.js","../node_modules/@mui/material/styles/createTransitions.js","../node_modules/@mui/material/styles/zIndex.js","../node_modules/@mui/material/styles/createTheme.js","../node_modules/@mui/material/styles/defaultTheme.js","../node_modules/@mui/material/styles/styled.js","../node_modules/@mui/material/styles/useThemeProps.js","../node_modules/@mui/material/utils/capitalize.js","../node_modules/@mui/material/SvgIcon/svgIconClasses.js","../node_modules/@mui/material/SvgIcon/SvgIcon.js","../node_modules/@mui/material/utils/createSvgIcon.js","../node_modules/@mui/material/utils/debounce.js","../node_modules/@mui/material/utils/createChainedFunction.js","../node_modules/@mui/material/utils/deprecatedPropType.js","../node_modules/@mui/utils/esm/deprecatedPropType.js","../node_modules/@mui/material/utils/requirePropFactory.js","../node_modules/@mui/utils/esm/requirePropFactory.js","../node_modules/@mui/material/utils/setRef.js","../node_modules/@mui/material/utils/unsupportedProp.js","../node_modules/@mui/utils/esm/unsupportedProp.js","../node_modules/@mui/material/utils/index.js","../node_modules/@mui/material/utils/isMuiElement.js","../node_modules/@mui/utils/esm/isMuiElement.js","../node_modules/@mui/material/utils/ownerDocument.js","../node_modules/@mui/material/utils/ownerWindow.js","../node_modules/@mui/material/utils/useControlled.js","../node_modules/@mui/material/utils/useEnhancedEffect.js","../node_modules/@mui/material/utils/useEventCallback.js","../node_modules/@mui/material/utils/useForkRef.js","../node_modules/@mui/material/utils/useId.js","../node_modules/@mui/utils/esm/useIsFocusVisible.js","../node_modules/@mui/material/utils/useIsFocusVisible.js","../node_modules/@mui/styled-engine/index.js","../node_modules/@mui/system/esm/breakpoints.js","../node_modules/@mui/system/esm/colorManipulator.js","../node_modules/@mui/system/esm/propsToClassKey.js","../node_modules/@mui/system/esm/createStyled.js","../node_modules/@mui/system/esm/createTheme/createBreakpoints.js","../node_modules/@mui/system/esm/createTheme/shape.js","../node_modules/@mui/system/esm/createTheme/createSpacing.js","../node_modules/@mui/system/esm/createTheme/createTheme.js","../node_modules/@mui/system/esm/merge.js","../node_modules/@mui/system/esm/spacing.js","../node_modules/@mui/system/esm/memoize.js","../node_modules/@mui/system/esm/style.js","../node_modules/@mui/system/esm/compose.js","../node_modules/@mui/system/esm/borders.js","../node_modules/@mui/system/esm/cssGrid.js","../node_modules/@mui/system/esm/palette.js","../node_modules/@mui/system/esm/sizing.js","../node_modules/@mui/system/esm/styleFunctionSx/defaultSxConfig.js","../node_modules/@mui/system/esm/styleFunctionSx/styleFunctionSx.js","../node_modules/@mui/system/esm/useTheme.js","../node_modules/@mui/system/esm/useThemeProps/useThemeProps.js","../node_modules/@mui/system/esm/useThemeProps/getThemeProps.js","../node_modules/@mui/system/esm/useThemeWithoutDefault.js","../node_modules/@mui/utils/esm/ClassNameGenerator/ClassNameGenerator.js","../node_modules/@mui/utils/esm/capitalize.js","../node_modules/@mui/utils/esm/composeClasses/composeClasses.js","../node_modules/@mui/utils/esm/createChainedFunction.js","../node_modules/@mui/utils/esm/debounce.js","../node_modules/@mui/utils/esm/deepmerge.js","../node_modules/@mui/utils/esm/formatMuiErrorMessage.js","../node_modules/@mui/utils/esm/generateUtilityClass/generateUtilityClass.js","../node_modules/@mui/utils/esm/generateUtilityClasses/generateUtilityClasses.js","../node_modules/@mui/utils/esm/ownerDocument.js","../node_modules/@mui/utils/esm/ownerWindow.js","../node_modules/@mui/utils/esm/resolveProps.js","../node_modules/@mui/utils/esm/setRef.js","../node_modules/@mui/utils/esm/useControlled.js","../node_modules/@mui/utils/esm/useEnhancedEffect.js","../node_modules/@mui/utils/esm/useEventCallback.js","../node_modules/@mui/utils/esm/useForkRef.js","../node_modules/@mui/utils/esm/useId.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/devextreme-react/core/component-base.js","../node_modules/devextreme-react/core/component.js","../node_modules/devextreme-react/core/config.js","../node_modules/devextreme-react/core/configuration/comparer.js","../node_modules/devextreme-react/core/configuration/react/element.js","../node_modules/devextreme-react/core/configuration/react/templates.js","../node_modules/devextreme-react/core/configuration/react/tree.js","../node_modules/devextreme-react/core/configuration/tree.js","../node_modules/devextreme-react/core/configuration/utils.js","../node_modules/devextreme-react/core/dx-template.js","../node_modules/devextreme-react/core/extension-component.js","../node_modules/devextreme-react/core/helpers.js","../node_modules/devextreme-react/core/nested-option.js","../node_modules/devextreme-react/core/options-manager.js","../node_modules/devextreme-react/core/template-wrapper.js","../node_modules/devextreme-react/core/template.js","../node_modules/devextreme-react/core/templates-manager.js","../node_modules/devextreme-react/core/templates-renderer.js","../node_modules/devextreme-react/core/templates-store.js","../node_modules/devextreme-react/core/widget-config.js","../node_modules/devextreme-react/scheduler.js","../node_modules/devextreme/esm/animation/frame.js","../node_modules/devextreme/esm/core/class.js","../node_modules/devextreme/esm/core/config.js","../node_modules/devextreme/esm/core/dom_adapter.js","../node_modules/devextreme/esm/core/errors.js","../node_modules/devextreme/esm/core/guid.js","../node_modules/devextreme/esm/core/memorized_callbacks.js","../node_modules/devextreme/esm/core/utils/call_once.js","../node_modules/devextreme/esm/core/utils/callbacks.js","../node_modules/devextreme/esm/core/utils/common.js","../node_modules/devextreme/esm/core/utils/console.js","../node_modules/devextreme/esm/core/utils/data.js","../node_modules/devextreme/esm/core/utils/deferred.js","../node_modules/devextreme/esm/core/utils/dependency_injector.js","../node_modules/devextreme/esm/core/utils/error.js","../node_modules/devextreme/esm/core/version.js","../node_modules/devextreme/esm/core/utils/extend.js","../node_modules/devextreme/esm/core/utils/iterator.js","../node_modules/devextreme/esm/core/utils/object.js","../node_modules/devextreme/esm/core/utils/shadow_dom.js","../node_modules/devextreme/esm/core/utils/string.js","../node_modules/devextreme/esm/core/utils/type.js","../node_modules/devextreme/esm/core/utils/variable_wrapper.js","../node_modules/devextreme/esm/core/utils/window.js","../node_modules/devextreme/esm/events/core/event_registrator_callbacks.js","../node_modules/devextreme/esm/events/core/hook_touch_props.js","../node_modules/devextreme/esm/events/core/events_engine.js","../node_modules/devextreme/esm/events/index.js","../node_modules/devextreme/esm/core/element_data.js","../node_modules/devextreme/esm/core/utils/inflector.js","../node_modules/devextreme/esm/core/utils/style.js","../node_modules/devextreme/esm/core/utils/size.js","../node_modules/devextreme/esm/core/utils/html_parser.js","../node_modules/devextreme/esm/core/renderer_base.js","../node_modules/devextreme/esm/core/renderer.js","../node_modules/devextreme/esm/core/component_registrator_callbacks.js","../node_modules/devextreme/esm/events/core/event_registrator.js","../node_modules/devextreme/esm/events/remove.js","../node_modules/devextreme/esm/core/utils/public_component.js","../node_modules/devextreme/esm/core/component_registrator.js","../node_modules/devextreme/esm/core/utils/ready_callbacks.js","../node_modules/devextreme/esm/core/utils/resize_callbacks.js","../node_modules/devextreme/esm/core/events_strategy.js","../node_modules/devextreme/esm/core/utils/storage.js","../node_modules/devextreme/esm/core/utils/view_port.js","../node_modules/devextreme/esm/core/devices.js","../node_modules/devextreme/esm/core/utils/dom.js","../node_modules/devextreme/esm/events/visibility_change.js","../node_modules/devextreme/esm/core/templates/template_base.js","../node_modules/devextreme/esm/core/templates/bindable_template.js","../node_modules/devextreme/esm/core/templates/empty_template.js","../node_modules/devextreme/esm/core/utils/math.js","../node_modules/devextreme/esm/renovation/ui/common/utils/date/toMilliseconds.js","../node_modules/devextreme/esm/core/utils/date.js","../node_modules/devextreme/esm/localization/ldml/date.formatter.js","../node_modules/devextreme/esm/localization/default_date_names.js","../node_modules/devextreme/esm/core/utils/date_serialization.js","../node_modules/devextreme/esm/core/utils/position.js","../node_modules/devextreme/esm/data/utils.js","../node_modules/devextreme/esm/data/errors.js","../node_modules/devextreme/esm/data/array_utils.js","../node_modules/devextreme/esm/data/array_query.js","../node_modules/devextreme/esm/data/store_helper.js","../node_modules/devextreme/esm/data/abstract_store.js","../node_modules/devextreme/esm/data/custom_store.js","../node_modules/devextreme/esm/core/utils/queue.js","../node_modules/devextreme/esm/core/http_request.js","../node_modules/devextreme/esm/core/utils/ajax.js","../node_modules/devextreme/esm/data/query_adapters.js","../node_modules/devextreme/esm/data/remote_query.js","../node_modules/devextreme/esm/data/query_implementation.js","../node_modules/devextreme/esm/data/query.js","../node_modules/devextreme/esm/data/array_store.js","../node_modules/devextreme/esm/data/data_source/utils.js","../node_modules/devextreme/esm/data/data_source/operation_manager.js","../node_modules/devextreme/esm/data/data_source/data_source.js","../node_modules/devextreme/esm/ui/collection/data_controller.js","../node_modules/devextreme/esm/data_helper.js","../node_modules/devextreme/esm/localization/utils.js","../node_modules/devextreme/esm/localization/ldml/number.js","../node_modules/devextreme/esm/localization/currency.js","../node_modules/devextreme/esm/localization/cldr-data/parent_locales.js","../node_modules/devextreme/esm/localization/parentLocale.js","../node_modules/devextreme/esm/localization/core.js","../node_modules/devextreme/esm/localization/cldr-data/accounting_formats.js","../node_modules/devextreme/esm/localization/intl/number.js","../node_modules/devextreme/esm/localization/open_xml_currency_format.js","../node_modules/devextreme/esm/localization/number.js","../node_modules/devextreme/esm/localization/ldml/date.format.js","../node_modules/devextreme/esm/localization/ldml/date.parser.js","../node_modules/devextreme/esm/localization/cldr-data/first_day_of_week_data.js","../node_modules/devextreme/esm/localization/intl/date.js","../node_modules/devextreme/esm/localization/date.js","../node_modules/devextreme/esm/renovation/ui/scheduler/timeZoneCalculator/types.js","../node_modules/devextreme/esm/localization/message.js","../node_modules/devextreme/esm/localization/default_messages.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay.js","../node_modules/devextreme/esm/renovation/ui/scheduler/model/untyped_getCurrentView.js","../node_modules/devextreme/esm/renovation/ui/scheduler/timeZoneCalculator/utils.js","../node_modules/devextreme/esm/__internal/scheduler/m_date_adapter.js","../node_modules/devextreme/esm/__internal/scheduler/timezones/m_utils_timezones_data.js","../node_modules/devextreme/esm/__internal/scheduler/timezones/timezones_data.js","../node_modules/devextreme/esm/__internal/scheduler/m_utils_time_zone.js","../node_modules/devextreme/esm/ui/scheduler/utils.timeZone.js","../node_modules/devextreme/esm/__internal/scheduler/m_expression_utils.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/data_provider/m_utils.js","../node_modules/devextreme/esm/ui/widget/ui.errors.js","../../../src/weekday.ts","../../../src/helpers.ts","../../../src/dateutil.ts","../../../src/iterresult.ts","../node_modules/rrule/node_modules/tslib/tslib.es6.js","../../../src/callbackiterresult.ts","../../../src/types.ts","../../../src/nlp/i18n.ts","../../../src/nlp/totext.ts","../../../src/nlp/parsetext.ts","../../../src/nlp/index.ts","../../../src/datetime.ts","../../../src/parseoptions.ts","../../../src/parsestring.ts","../../../src/datewithzone.ts","../../../src/optionstostring.ts","../../../src/cache.ts","../../../src/masks.ts","../../../src/iterinfo/yearinfo.ts","../../../src/iterinfo/index.ts","../../../src/iterinfo/monthinfo.ts","../../../src/iterinfo/easter.ts","../../../src/iter/poslist.ts","../../../src/iter/index.ts","../../../src/rrule.ts","../../../src/rrulestr.ts","../../../src/rruleset.ts","../../../src/iterset.ts","../node_modules/devextreme/esm/__internal/scheduler/m_recurrence.js","../node_modules/devextreme/esm/__internal/scheduler/m_appointment_adapter.js","../node_modules/devextreme/esm/renovation/ui/scheduler/utils/recurrence/excludeFromRecurrence.js","../node_modules/devextreme/esm/__internal/scheduler/m_classes.js","../node_modules/devextreme/esm/__internal/scheduler/m_constants.js","../node_modules/devextreme/esm/core/utils/array.js","../node_modules/devextreme/esm/renovation/ui/scheduler/resources/hasResourceValue.js","../node_modules/devextreme/esm/__internal/scheduler/resources/m_utils.js","../node_modules/devextreme/esm/renovation/utils/combine_classes.js","../node_modules/devextreme/esm/renovation/ui/scheduler/consts.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/utils.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/const.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/base.js","../node_modules/devextreme/esm/core/action.js","../node_modules/devextreme/esm/core/element.js","../node_modules/devextreme/esm/core/utils/browser.js","../node_modules/devextreme/esm/core/utils/version.js","../node_modules/devextreme/esm/animation/translator.js","../node_modules/devextreme/esm/events/utils/add_namespace.js","../node_modules/devextreme/esm/ui/widget/selectors.js","../node_modules/devextreme/esm/events/utils/index.js","../node_modules/devextreme/esm/events/core/emitter.js","../node_modules/devextreme/esm/events/gesture/emitter.gesture.js","../node_modules/devextreme/esm/core/utils/support.js","../node_modules/devextreme/esm/events/pointer/base.js","../node_modules/devextreme/esm/events/pointer/touch.js","../node_modules/devextreme/esm/events/pointer/mouse.js","../node_modules/devextreme/esm/events/pointer/observer.js","../node_modules/devextreme/esm/events/pointer/mouse_and_touch.js","../node_modules/devextreme/esm/events/pointer.js","../node_modules/devextreme/esm/events/core/wheel.js","../node_modules/devextreme/esm/events/core/emitter_registrator.js","../node_modules/devextreme/esm/events/drag.js","../node_modules/devextreme/esm/ui/popup/popup_drag.js","../node_modules/devextreme/esm/core/templates/template_engine_registry.js","../node_modules/devextreme/esm/core/options/utils.js","../node_modules/devextreme/esm/core/options/option_manager.js","../node_modules/devextreme/esm/core/utils/comparator.js","../node_modules/devextreme/esm/core/options/index.js","../node_modules/devextreme/esm/core/postponed_operations.js","../node_modules/devextreme/esm/core/component.js","../node_modules/devextreme/esm/core/templates/function_template.js","../node_modules/devextreme/esm/core/templates/child_default_template.js","../node_modules/devextreme/esm/core/templates/template.js","../node_modules/devextreme/esm/core/utils/template_manager.js","../node_modules/devextreme/esm/core/template_manager.js","../node_modules/devextreme/esm/events/core/keyboard_processor.js","../node_modules/devextreme/esm/events/short.js","../node_modules/devextreme/esm/core/dom_component.js","../node_modules/devextreme/esm/ui/resizable.js","../node_modules/devextreme/esm/ui/validation_engine.js","../node_modules/inferno/dist/index.esm.js","../node_modules/@devextreme/runtime/esm/inferno/effect_host.js","../node_modules/@devextreme/runtime/esm/inferno/base_component.js","../node_modules/@devextreme/runtime/esm/inferno/create_context.js","../node_modules/@devextreme/runtime/esm/inferno/effect.js","../node_modules/@devextreme/runtime/esm/inferno/re_render_effect.js","../node_modules/@devextreme/runtime/esm/inferno/mocked/shared.js","../node_modules/@devextreme/runtime/esm/inferno/mocked/hydrate.js","../node_modules/inferno-create-element/dist/index.esm.js","../node_modules/@devextreme/runtime/esm/inferno/render_template.js","../node_modules/@devextreme/runtime/esm/inferno/normalize_styles.js","../node_modules/devextreme/esm/core/inferno_renderer.js","../node_modules/devextreme/esm/renovation/utils/shallow_equals.js","../node_modules/devextreme/esm/renovation/component_wrapper/common/template_wrapper.js","../node_modules/devextreme/esm/renovation/component_wrapper/utils/update_props_immutable.js","../node_modules/devextreme/esm/events/utils/event_nodes_disposing.js","../node_modules/devextreme/esm/events/click.js","../node_modules/devextreme/esm/events/core/emitter.feedback.js","../node_modules/devextreme/esm/events/hover.js","../node_modules/devextreme/esm/renovation/component_wrapper/common/component.js","../node_modules/devextreme/esm/core/utils/icon.js","../node_modules/devextreme/esm/ui/themes.js","../node_modules/devextreme/esm/renovation/component_wrapper/button.js","../node_modules/devextreme/esm/ui/themes_callback.js","../node_modules/devextreme/esm/renovation/ui/common/icon.js","../node_modules/devextreme/esm/ui/widget/utils.ink_ripple.js","../node_modules/devextreme/esm/renovation/ui/common/ink_ripple.js","../node_modules/devextreme/esm/events/gesture/emitter.gesture.scroll.js","../node_modules/devextreme/esm/renovation/utils/subscribe_to_event.js","../node_modules/devextreme/esm/renovation/ui/common/base_props.js","../node_modules/devextreme/esm/renovation/common/config_context.js","../node_modules/devextreme/esm/renovation/common/config_provider.js","../node_modules/devextreme/esm/renovation/ui/common/widget.js","../node_modules/devextreme/esm/renovation/utils/resolve_rtl.js","../node_modules/devextreme/esm/renovation/ui/button.js","../node_modules/devextreme/esm/renovation/ui/button.j.js","../node_modules/devextreme/esm/ui/button.js","../node_modules/devextreme/esm/animation/easing.js","../node_modules/devextreme/esm/animation/position.js","../node_modules/devextreme/esm/animation/fx.js","../node_modules/devextreme/esm/mobile/hide_callback.js","../node_modules/devextreme/esm/ui/widget/ui.widget.js","../node_modules/devextreme/esm/ui/overlay/z_index.js","../node_modules/devextreme/esm/ui/widget/swatch_container.js","../node_modules/devextreme/esm/ui/overlay/overlay_position_controller.js","../node_modules/devextreme/esm/ui/overlay/ui.overlay.js","../node_modules/devextreme/esm/ui/collection/item.js","../node_modules/devextreme/esm/events/hold.js","../node_modules/devextreme/esm/events/contextmenu.js","../node_modules/devextreme/esm/ui/collection/ui.collection_widget.base.js","../node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.strategy.js","../node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.strategy.plain.js","../node_modules/devextreme/esm/ui/selection/selection.strategy.js","../node_modules/devextreme/esm/ui/selection/selection.strategy.deferred.js","../node_modules/devextreme/esm/core/utils/array_compare.js","../node_modules/devextreme/esm/core/utils/selection_filter.js","../node_modules/devextreme/esm/ui/selection/selection.strategy.standard.js","../node_modules/devextreme/esm/ui/selection/selection.js","../node_modules/devextreme/esm/ui/collection/ui.collection_widget.edit.js","../node_modules/devextreme/esm/ui/collection/ui.collection_widget.async.js","../node_modules/devextreme/esm/ui/toolbar/constants.js","../node_modules/devextreme/esm/ui/toolbar/ui.toolbar.base.js","../node_modules/devextreme/esm/core/resize_observer.js","../node_modules/devextreme/esm/ui/popup/popup_position_controller.js","../node_modules/devextreme/esm/ui/popup/popup_overflow_manager.js","../node_modules/devextreme/esm/ui/popup/ui.popup.js","../node_modules/devextreme/esm/ui/dialog.js","../node_modules/devextreme/esm/ui/editor/ui.data_expression.js","../node_modules/devextreme/esm/ui/validation_message.js","../node_modules/devextreme/esm/ui/editor/editor.js","../node_modules/devextreme/esm/ui/radio_group/radio_group.js","../node_modules/devextreme/esm/ui/button_group.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.mask.parts.js","../node_modules/devextreme/esm/ui/date_box/ui.date_utils.js","../node_modules/devextreme/esm/ui/text_box/texteditor_button_collection/button.js","../node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_button.js","../node_modules/devextreme/esm/ui/text_box/utils.caret.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.rule.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.clear.js","../node_modules/devextreme/esm/ui/text_box/texteditor_button_collection/custom.js","../node_modules/devextreme/esm/ui/text_box/texteditor_button_collection/index.js","../node_modules/devextreme/esm/ui/load_indicator.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.label.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.base.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.strategy.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.mask.js","../node_modules/devextreme/esm/ui/text_box/ui.text_editor.js","../node_modules/devextreme/esm/ui/text_box/text_box.js","../node_modules/devextreme/esm/ui/text_box.js","../node_modules/devextreme/esm/ui/drop_down_editor/utils.js","../node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_editor.js","../node_modules/devextreme/esm/events/swipe.js","../node_modules/devextreme/esm/events/gesture/swipeable.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.navigator.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.base_view.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.views.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.selection.strategy.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.single.selection.strategy.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.multi.selection.strategy.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.range.selection.strategy.js","../node_modules/devextreme/esm/ui/calendar/ui.calendar.js","../node_modules/devextreme/esm/ui/calendar.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.calendar.js","../node_modules/devextreme/esm/ui/scroll_view/animator.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scrollbar.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.simulated.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.native.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.device.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/common/consts.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.old.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_element_location_internal.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_relative_offset.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/scroll_direction.js","../node_modules/devextreme/esm/ui/date_box/ui.date_view_roller.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/convert_location.js","../node_modules/devextreme/esm/ui/date_box/ui.date_view.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.date_view.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.native.js","../node_modules/devextreme/esm/ui/number_box/utils.js","../node_modules/devextreme/esm/ui/number_box/number_box.caret.js","../node_modules/devextreme/esm/ui/number_box/number_box.spin.js","../node_modules/devextreme/esm/ui/number_box/number_box.spins.js","../node_modules/devextreme/esm/ui/number_box/number_box.base.js","../node_modules/devextreme/esm/ui/number_box/number_box.mask.js","../node_modules/devextreme/esm/ui/number_box/number_box.js","../node_modules/devextreme/esm/ui/number_box.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.strategy.grouped.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.decorator_registry.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.provider.js","../node_modules/devextreme/esm/ui/list/item.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.native.pull_down.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.native.swipe_down.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.simulated.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scrollable.js","../node_modules/devextreme/esm/ui/load_panel.js","../node_modules/devextreme/esm/ui/scroll_view/ui.scroll_view.js","../node_modules/devextreme/esm/ui/scroll_view.js","../node_modules/devextreme/esm/ui/collection/ui.collection_widget.live_update.js","../node_modules/devextreme/esm/ui/shared/grouped_data_converter_mixin.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_element_style.js","../node_modules/devextreme/esm/renovation/utils/type_conversion.js","../node_modules/devextreme/esm/ui/list/ui.list.base.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.js","../node_modules/devextreme/esm/ui/widget/ui.search_box_mixin.js","../node_modules/devextreme/esm/core/utils/stubs.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.search.js","../node_modules/devextreme/esm/ui/list_light.js","../node_modules/devextreme/esm/ui/drop_down_editor/ui.drop_down_list.js","../node_modules/devextreme/esm/renovation/component_wrapper/editors/editor.js","../node_modules/devextreme/esm/renovation/utils/dom.js","../node_modules/devextreme/esm/renovation/component_wrapper/editors/check_box.js","../node_modules/devextreme/esm/renovation/ui/common/utils/get_updated_options.js","../node_modules/devextreme/esm/renovation/ui/common/dom_component_wrapper.js","../node_modules/devextreme/esm/renovation/ui/overlays/validation_message.js","../node_modules/devextreme/esm/renovation/ui/editors/common/editor.js","../node_modules/devextreme/esm/renovation/ui/editors/check_box/utils.js","../node_modules/devextreme/esm/renovation/ui/editors/check_box/check_box_icon.js","../node_modules/devextreme/esm/renovation/utils/get_computed_style.js","../node_modules/devextreme/esm/renovation/ui/editors/check_box/check_box.js","../node_modules/devextreme/esm/renovation/ui/editors/check_box/check_box.j.js","../node_modules/devextreme/esm/ui/check_box.js","../node_modules/devextreme/esm/ui/radio_group/radio_button.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.js","../node_modules/devextreme/esm/ui/list/ui.list.edit.decorator.selection.js","../node_modules/devextreme/esm/ui/select_box.js","../node_modules/devextreme/esm/ui/box.js","../node_modules/devextreme/esm/ui/date_box/ui.time_view.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.calendar_with_time.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.strategy.list.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.base.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.mask.js","../node_modules/devextreme/esm/ui/date_box/ui.date_box.js","../node_modules/devextreme/esm/ui/date_box.js","../node_modules/devextreme/esm/ui/form/ui.form.items_runtime_info.js","../node_modules/devextreme/esm/ui/multi_view/ui.multi_view.animation.js","../node_modules/devextreme/esm/ui/multi_view.js","../node_modules/devextreme/esm/ui/tabs/item.js","../node_modules/devextreme/esm/ui/tabs/constants.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_scroll_left_max.js","../node_modules/devextreme/esm/renovation/ui/scroll_view/utils/get_boundary_props.js","../node_modules/devextreme/esm/ui/tabs.js","../node_modules/devextreme/esm/ui/tab_panel/item.js","../node_modules/devextreme/esm/ui/tab_panel.js","../node_modules/devextreme/esm/ui/form/ui.form.item_option_action.js","../node_modules/devextreme/esm/ui/form/ui.form.utils.js","../node_modules/devextreme/esm/ui/form/ui.form.item_options_actions.js","../node_modules/devextreme/esm/ui/responsive_box.js","../node_modules/devextreme/esm/ui/form/constants.js","../node_modules/devextreme/esm/ui/validation/default_adapter.js","../node_modules/devextreme/esm/ui/validator.js","../node_modules/devextreme/esm/ui/form/ui.form.layout_manager.utils.js","../node_modules/devextreme/esm/ui/form/components/label.js","../node_modules/devextreme/esm/ui/form/components/field_item.js","../node_modules/devextreme/esm/ui/form/components/button_item.js","../node_modules/devextreme/esm/ui/form/components/empty_item.js","../node_modules/devextreme/esm/ui/form/ui.form.layout_manager.js","../node_modules/devextreme/esm/ui/validation_summary.js","../node_modules/devextreme/esm/ui/validation_group.js","../node_modules/devextreme/esm/ui/form/ui.form.js","../node_modules/devextreme/esm/ui/form.js","../node_modules/devextreme/esm/__internal/scheduler/m_recurrence_editor.js","../node_modules/devextreme/esm/ui/text_box/utils.scroll.js","../node_modules/devextreme/esm/ui/text_area.js","../node_modules/devextreme/esm/ui/tag_box.js","../node_modules/devextreme/esm/ui/switch.js","../node_modules/devextreme/esm/data/data_source.js","../node_modules/devextreme/esm/renovation/ui/scheduler/utils/semaphore/semaphore.js","../node_modules/devextreme/esm/__internal/scheduler/appointment_popup/m_form.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment_edit_form/popup_config.js","../node_modules/devextreme/esm/__internal/scheduler/m_loading.js","../node_modules/devextreme/esm/__internal/scheduler/appointment_popup/m_popup.js","../node_modules/devextreme/esm/renovation/ui/scheduler/utils/filtering/getDatesWithoutTime.js","../node_modules/devextreme/esm/renovation/ui/scheduler/utils/filtering/remote.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/data_provider/m_appointment_data_source.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/data_provider/m_appointment_filter.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/data_provider/m_appointment_data_provider.js","../node_modules/devextreme/esm/events/double_click.js","../node_modules/devextreme/esm/renovation/ui/resizable/utils.js","../node_modules/devextreme/esm/ui/popover/popover_position_controller.js","../node_modules/devextreme/esm/ui/popover/ui.popover.js","../node_modules/devextreme/esm/ui/tooltip/tooltip.js","../node_modules/devextreme/esm/ui/tooltip/ui.tooltip.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_appointment.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_appointment_layout.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/resizing/m_utils.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/resizing/m_core.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_appointment_collection.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/utils.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/content/details/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/content/title/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/content/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/resources/utils.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointments_context.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/appointment.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/overflow_indicator/utils.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/overflow_indicator/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/appointment/layout.j.js","../node_modules/devextreme/esm/__internal/scheduler/m_utils.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_render.js","../node_modules/devextreme/esm/ui/drop_down_button.js","../node_modules/devextreme/esm/ui/toolbar/ui.toolbar.utils.js","../node_modules/devextreme/esm/ui/toolbar/strategy/toolbar.multiline.js","../node_modules/devextreme/esm/ui/toolbar/internal/ui.toolbar.menu.list.js","../node_modules/devextreme/esm/ui/popup/ui.popup.full.js","../node_modules/devextreme/esm/ui/popup.js","../node_modules/devextreme/esm/ui/toolbar/internal/ui.toolbar.menu.js","../node_modules/devextreme/esm/ui/toolbar/strategy/toolbar.singleline.js","../node_modules/devextreme/esm/ui/toolbar/ui.toolbar.js","../node_modules/devextreme/esm/ui/toolbar.js","../node_modules/devextreme/esm/__internal/scheduler/header/m_calendar.js","../node_modules/devextreme/esm/__internal/scheduler/header/m_date_navigator.js","../node_modules/devextreme/esm/__internal/scheduler/header/m_utils.js","../node_modules/devextreme/esm/__internal/scheduler/header/m_view_switcher.js","../node_modules/devextreme/esm/__internal/scheduler/header/m_header.js","../node_modules/devextreme/esm/renovation/ui/scheduler/model/utils.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_cell_position_calculator.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_text_utils.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_settings_generator.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_base.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_adaptive.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_base.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_agenda.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/helpers/m_position_helper.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_week.js","../node_modules/devextreme/esm/__internal/scheduler/appointments/m_view_model_generator.js","../node_modules/devextreme/esm/__internal/scheduler/m_appointments_layout_manager.js","../node_modules/devextreme/esm/__internal/scheduler/m_data_structures.js","../node_modules/devextreme/esm/__internal/scheduler/m_compact_appointments_helper.js","../node_modules/devextreme/esm/__internal/scheduler/m_subscribes.js","../node_modules/devextreme/esm/__internal/scheduler/resources/m_agenda_resource_processor.js","../node_modules/devextreme/esm/ui/tooltip.js","../node_modules/devextreme/esm/__internal/scheduler/tooltip_strategies/m_tooltip_strategy_base.js","../node_modules/devextreme/esm/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.js","../node_modules/devextreme/esm/__internal/scheduler/tooltip_strategies/m_mobile_tooltip_strategy.js","../node_modules/devextreme/esm/__internal/scheduler/m_table_creator.js","../node_modules/devextreme/esm/renovation/ui/common/utils/scroll/getMemoizeScrollTo.js","../node_modules/devextreme/esm/renovation/component_wrapper/scheduler/date_table.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/ordinary_cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/header_cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/virtual_cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/row.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/virtual_row.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/table.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/const.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table_body.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/layout_props.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.j.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.js","../node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/table_body.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/date_table/layout.j.js","../node_modules/devextreme/esm/renovation/component_wrapper/scheduler/group_panel.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel_props.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/cell_props.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/row_props.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/row.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel_layout_props.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/row.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel.j.js","../node_modules/devextreme/esm/renovation/component_wrapper/scheduler/header_panel.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/dateHeaderText.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/cell.js","../node_modules/devextreme/esm/renovation/utils/getThemeType.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/header_panel/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/header_panel/layout.j.js","../node_modules/devextreme/esm/renovation/component_wrapper/scheduler/time_panel.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/time_panel/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/time_panel/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/time_panel/layout.j.js","../node_modules/devextreme/esm/__internal/m_draggable.js","../node_modules/devextreme/esm/__internal/scheduler/base/m_widget_observer.js","../node_modules/devextreme/esm/ui/draggable.js","../node_modules/devextreme/esm/__internal/scheduler/m_appointment_drag_behavior.js","../node_modules/devextreme/esm/__internal/scheduler/utils/is_scheduler_component.js","../node_modules/devextreme/esm/__internal/scheduler/shaders/m_current_time_shader.js","../node_modules/devextreme/esm/__internal/scheduler/shaders/m_current_time_shader_vertical.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_cache.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_cells_selection_controller.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/base/utils.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_cells_selection_state.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_virtual_scrolling.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/group_panel/utils.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_date_header_data_generator.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_grouped_data_map_provider.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/week.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_time_panel_data_generator.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_generator.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_day.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/day.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/month.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_utils.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_timeline_month.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/timeline_month.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_week.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/work_week.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_work_week.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/view_model/m_view_data_provider.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_agenda.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/agenda.js","../node_modules/devextreme/esm/renovation/ui/scheduler/view_model/to_test/views/utils/timeline_week.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/timeline/header_panel/date_header/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/timeline/header_panel/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/timeline/header_panel/layout.j.js","../node_modules/devextreme/esm/__internal/scheduler/shaders/m_current_time_shader_horizontal.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_indicator.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_timeline.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_timeline_day.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_timeline_month.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_timeline_week.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_timeline_work_week.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_vertical.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_day.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/month/date_table/cell.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/month/date_table/layout.js","../node_modules/devextreme/esm/renovation/ui/scheduler/workspaces/month/date_table/layout.j.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_month.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_week.js","../node_modules/devextreme/esm/__internal/scheduler/workspaces/m_work_space_work_week.js","../node_modules/devextreme/esm/__internal/scheduler/m_scheduler.js","../node_modules/devextreme/esm/renovation/ui/scheduler/timeZoneCalculator/createTimeZoneCalculator.js","../node_modules/devextreme/esm/renovation/ui/scheduler/utils/data.js","../node_modules/devextreme/esm/ui/scheduler.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/lodash/lodash.js","../node_modules/moment/moment.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-device-detect/dist/lib.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-query/es/core/focusManager.js","../node_modules/react-query/es/core/infiniteQueryBehavior.js","../node_modules/react-query/es/core/logger.js","../node_modules/react-query/es/core/notifyManager.js","../node_modules/react-query/es/core/onlineManager.js","../node_modules/react-query/es/core/query.js","../node_modules/react-query/es/core/queryCache.js","../node_modules/react-query/es/core/mutation.js","../node_modules/react-query/es/core/mutationCache.js","../node_modules/react-query/es/core/queryClient.js","../node_modules/react-query/es/core/retryer.js","../node_modules/react-query/es/core/subscribable.js","../node_modules/react-query/es/core/utils.js","../node_modules/react-query/es/react/reactBatchedUpdates.js","../node_modules/react-query/es/react/setBatchUpdatesFn.js","../node_modules/react-query/es/react/logger.js","../node_modules/react-query/es/react/setLogger.js","../node_modules/react-query/es/react/QueryClientProvider.js","../node_modules/react-query/es/core/queryObserver.js","../node_modules/react-query/es/core/infiniteQueryObserver.js","../node_modules/react-query/es/react/QueryErrorResetBoundary.js","../node_modules/react-query/es/react/useBaseQuery.js","../node_modules/react-query/es/react/utils.js","../node_modules/react-query/es/react/useInfiniteQuery.js","../node_modules/react-social-login-buttons/dist/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/ua-parser-js/dist/ua-parser.min.js","webpack://frontend/./node_modules/devextreme/dist/css/dx.material.blue.light.compact.css?1e13","webpack://frontend/./node_modules/devextreme/dist/css/dx.material.blue.light.css?fa00","webpack://frontend/./src/components/calender/calenderStyle.css?0618","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@firebase/app/node_modules/idb/build/wrap-idb-value.js","../node_modules/@firebase/app/node_modules/idb/build/index.js","../node_modules/@firebase/app/src/platformLoggerService.ts","../node_modules/@firebase/app/src/logger.ts","../node_modules/@firebase/app/src/constants.ts","../node_modules/@firebase/app/src/internal.ts","../node_modules/@firebase/app/src/errors.ts","../node_modules/@firebase/app/src/firebaseApp.ts","../node_modules/@firebase/app/src/api.ts","../node_modules/@firebase/app/src/indexeddb.ts","../node_modules/@firebase/app/src/heartbeatService.ts","../node_modules/@firebase/app/src/registerCoreComponents.ts","../node_modules/@firebase/app/src/index.ts","../node_modules/@firebase/component/src/component.ts","../node_modules/@firebase/component/src/constants.ts","../node_modules/@firebase/component/src/provider.ts","../node_modules/@firebase/component/src/component_container.ts","../node_modules/@firebase/logger/src/logger.ts","../node_modules/@firebase/auth/node_modules/tslib/tslib.es6.mjs","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha.ts","../node_modules/@firebase/auth/src/core/errors.ts","../node_modules/@firebase/auth/src/core/util/log.ts","../node_modules/@firebase/auth/src/core/util/assert.ts","../node_modules/@firebase/auth/src/core/util/location.ts","../node_modules/@firebase/auth/src/core/util/delay.ts","../node_modules/@firebase/auth/src/core/util/navigator.ts","../node_modules/@firebase/auth/src/core/util/emulator.ts","../node_modules/@firebase/auth/src/core/util/fetch_provider.ts","../node_modules/@firebase/auth/src/api/errors.ts","../node_modules/@firebase/auth/src/api/index.ts","../node_modules/@firebase/auth/src/api/authentication/recaptcha.ts","../node_modules/@firebase/auth/src/api/account_management/account.ts","../node_modules/@firebase/auth/src/core/util/time.ts","../node_modules/@firebase/auth/src/core/user/id_token_result.ts","../node_modules/@firebase/auth/src/core/user/invalidation.ts","../node_modules/@firebase/auth/src/core/user/proactive_refresh.ts","../node_modules/@firebase/auth/src/core/user/user_metadata.ts","../node_modules/@firebase/auth/src/core/user/reload.ts","../node_modules/@firebase/auth/src/api/authentication/token.ts","../node_modules/@firebase/auth/src/core/user/token_manager.ts","../node_modules/@firebase/auth/src/core/user/user_impl.ts","../node_modules/@firebase/auth/src/core/util/instantiator.ts","../node_modules/@firebase/auth/src/core/persistence/in_memory.ts","../node_modules/@firebase/auth/src/core/persistence/persistence_user_manager.ts","../node_modules/@firebase/auth/src/core/util/browser.ts","../node_modules/@firebase/auth/src/core/util/version.ts","../node_modules/@firebase/auth/src/core/auth/middleware.ts","../node_modules/@firebase/auth/src/api/password_policy/get_password_policy.ts","../node_modules/@firebase/auth/src/core/auth/password_policy_impl.ts","../node_modules/@firebase/auth/src/core/auth/auth_impl.ts","../node_modules/@firebase/auth/src/platform_browser/load_js.ts","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha_enterprise_verifier.ts","../node_modules/@firebase/auth/src/core/auth/initialize.ts","../node_modules/@firebase/auth/src/core/auth/emulator.ts","../node_modules/@firebase/auth/src/core/credentials/auth_credential.ts","../node_modules/@firebase/auth/src/api/account_management/email_and_password.ts","../node_modules/@firebase/auth/src/api/authentication/email_and_password.ts","../node_modules/@firebase/auth/src/api/authentication/email_link.ts","../node_modules/@firebase/auth/src/core/credentials/email.ts","../node_modules/@firebase/auth/src/api/authentication/idp.ts","../node_modules/@firebase/auth/src/core/credentials/oauth.ts","../node_modules/@firebase/auth/src/api/authentication/sms.ts","../node_modules/@firebase/auth/src/core/credentials/phone.ts","../node_modules/@firebase/auth/src/core/action_code_url.ts","../node_modules/@firebase/auth/src/core/providers/email.ts","../node_modules/@firebase/auth/src/core/providers/federated.ts","../node_modules/@firebase/auth/src/core/providers/oauth.ts","../node_modules/@firebase/auth/src/core/providers/facebook.ts","../node_modules/@firebase/auth/src/core/providers/google.ts","../node_modules/@firebase/auth/src/core/providers/github.ts","../node_modules/@firebase/auth/src/core/credentials/saml.ts","../node_modules/@firebase/auth/src/core/providers/twitter.ts","../node_modules/@firebase/auth/src/api/authentication/sign_up.ts","../node_modules/@firebase/auth/src/core/user/user_credential_impl.ts","../node_modules/@firebase/auth/src/core/strategies/anonymous.ts","../node_modules/@firebase/auth/src/mfa/mfa_error.ts","../node_modules/@firebase/auth/src/core/util/providers.ts","../node_modules/@firebase/auth/src/core/user/link_unlink.ts","../node_modules/@firebase/auth/src/core/user/reauthenticate.ts","../node_modules/@firebase/auth/src/core/strategies/credential.ts","../node_modules/@firebase/auth/src/api/authentication/custom_token.ts","../node_modules/@firebase/auth/src/core/strategies/custom_token.ts","../node_modules/@firebase/auth/src/core/strategies/action_code_settings.ts","../node_modules/@firebase/auth/src/core/strategies/email_and_password.ts","../node_modules/@firebase/auth/src/core/strategies/email_link.ts","../node_modules/@firebase/auth/src/core/strategies/email.ts","../node_modules/@firebase/auth/src/api/account_management/profile.ts","../node_modules/@firebase/auth/src/core/user/account_info.ts","../node_modules/@firebase/auth/src/core/user/additional_user_info.ts","../node_modules/@firebase/auth/src/core/index.ts","../node_modules/@firebase/auth/src/api/account_management/mfa.ts","../node_modules/@firebase/auth/src/mfa/mfa_user.ts","../node_modules/@firebase/auth/src/core/persistence/index.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/browser.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/local_storage.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/session_storage.ts","../node_modules/@firebase/auth/src/platform_browser/messagechannel/promise.ts","../node_modules/@firebase/auth/src/platform_browser/messagechannel/receiver.ts","../node_modules/@firebase/auth/src/core/util/event_id.ts","../node_modules/@firebase/auth/src/platform_browser/messagechannel/sender.ts","../node_modules/@firebase/auth/src/platform_browser/auth_window.ts","../node_modules/@firebase/auth/src/platform_browser/util/worker.ts","../node_modules/@firebase/auth/src/platform_browser/persistence/indexed_db.ts","../node_modules/@firebase/auth/src/api/authentication/mfa.ts","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha_mock.ts","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha_loader.ts","../node_modules/@firebase/auth/src/platform_browser/recaptcha/recaptcha_verifier.ts","../node_modules/@firebase/auth/src/platform_browser/strategies/phone.ts","../node_modules/@firebase/auth/src/platform_browser/providers/phone.ts","../node_modules/@firebase/auth/src/core/util/resolver.ts","../node_modules/@firebase/auth/src/core/strategies/idp.ts","../node_modules/@firebase/auth/src/core/strategies/abstract_popup_redirect_operation.ts","../node_modules/@firebase/auth/src/platform_browser/strategies/popup.ts","../node_modules/@firebase/auth/src/core/strategies/redirect.ts","../node_modules/@firebase/auth/src/platform_browser/strategies/redirect.ts","../node_modules/@firebase/auth/src/core/auth/auth_event_manager.ts","../node_modules/@firebase/auth/src/api/project_config/get_project_config.ts","../node_modules/@firebase/auth/src/core/util/validate_origin.ts","../node_modules/@firebase/auth/src/platform_browser/iframe/gapi.ts","../node_modules/@firebase/auth/src/platform_browser/iframe/iframe.ts","../node_modules/@firebase/auth/src/platform_browser/util/popup.ts","../node_modules/@firebase/auth/src/core/util/handler.ts","../node_modules/@firebase/auth/src/platform_browser/popup_redirect.ts","../node_modules/@firebase/auth/src/mfa/mfa_assertion.ts","../node_modules/@firebase/auth/src/platform_browser/mfa/assertions/phone.ts","../node_modules/@firebase/auth/src/mfa/assertions/totp.ts","../node_modules/@firebase/auth/src/core/auth/firebase_internal.ts","../node_modules/@firebase/auth/src/platform_browser/index.ts","../node_modules/@firebase/auth/src/core/auth/register.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../../packages/react-router-dom/index.tsx","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/@mui/material/styles/getOverlayAlpha.js","../node_modules/@mui/material/Paper/paperClasses.js","../node_modules/@mui/material/Paper/Paper.js","../node_modules/@mui/material/AppBar/appBarClasses.js","../node_modules/@mui/material/AppBar/AppBar.js","../node_modules/@mui/system/esm/styleFunctionSx/extendSxProp.js","../node_modules/@mui/material/Typography/typographyClasses.js","../node_modules/@mui/material/Typography/Typography.js","../node_modules/@mui/material/node_modules/@mui/base/utils/isHostComponent.js","../node_modules/@mui/material/node_modules/@mui/base/utils/appendOwnerState.js","../node_modules/@mui/material/styles/useTheme.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/utils/reflow.js","../node_modules/@mui/material/transitions/utils.js","../node_modules/@mui/material/Grow/Grow.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@mui/material/node_modules/@mui/base/Portal/Portal.js","../node_modules/@mui/material/node_modules/@mui/base/PopperUnstyled/popperUnstyledClasses.js","../node_modules/@mui/material/node_modules/@mui/base/utils/omitEventHandlers.js","../node_modules/@mui/material/node_modules/@mui/base/utils/mergeSlotProps.js","../node_modules/@mui/material/node_modules/@mui/base/utils/extractEventHandlers.js","../node_modules/@mui/material/node_modules/@mui/base/utils/resolveComponentProps.js","../node_modules/@mui/material/node_modules/@mui/base/utils/useSlotProps.js","../node_modules/@mui/material/node_modules/@mui/base/utils/ClassNameConfigurator.js","../node_modules/@mui/material/node_modules/@mui/base/PopperUnstyled/PopperUnstyled.js","../node_modules/@mui/material/Popper/Popper.js","../node_modules/@mui/material/Tooltip/tooltipClasses.js","../node_modules/@mui/material/Tooltip/Tooltip.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@mui/material/ButtonBase/Ripple.js","../node_modules/@mui/material/ButtonBase/touchRippleClasses.js","../node_modules/@mui/material/ButtonBase/TouchRipple.js","../node_modules/@mui/material/ButtonBase/buttonBaseClasses.js","../node_modules/@mui/material/ButtonBase/ButtonBase.js","../node_modules/@mui/material/IconButton/iconButtonClasses.js","../node_modules/@mui/material/IconButton/IconButton.js","../node_modules/@mui/material/internal/svg-icons/Person.js","../node_modules/@mui/material/Avatar/avatarClasses.js","../node_modules/@mui/material/Avatar/Avatar.js","../node_modules/@mui/material/List/ListContext.js","../node_modules/@mui/material/List/listClasses.js","../node_modules/@mui/material/List/List.js","../node_modules/@mui/utils/esm/getScrollbarSize.js","../node_modules/@mui/material/utils/getScrollbarSize.js","../node_modules/@mui/material/MenuList/MenuList.js","../node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/ModalManager.js","../node_modules/@mui/material/node_modules/@mui/base/FocusTrap/FocusTrap.js","../node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/modalUnstyledClasses.js","../node_modules/@mui/material/node_modules/@mui/base/ModalUnstyled/ModalUnstyled.js","../node_modules/@mui/material/Fade/Fade.js","../node_modules/@mui/material/Backdrop/backdropClasses.js","../node_modules/@mui/material/Backdrop/Backdrop.js","../node_modules/@mui/material/Modal/Modal.js","../node_modules/@mui/material/Popover/popoverClasses.js","../node_modules/@mui/material/Popover/Popover.js","../node_modules/@mui/material/Menu/menuClasses.js","../node_modules/@mui/material/Menu/Menu.js","../node_modules/@mui/material/Divider/dividerClasses.js","../node_modules/@mui/material/ListItemIcon/listItemIconClasses.js","../node_modules/@mui/material/ListItemText/listItemTextClasses.js","../node_modules/@mui/material/MenuItem/menuItemClasses.js","../node_modules/@mui/material/MenuItem/MenuItem.js","../node_modules/firebase/app/index.ts","../node_modules/@firebase/installations/node_modules/idb/build/wrap-idb-value.js","../node_modules/@firebase/installations/node_modules/idb/build/index.js","../node_modules/@firebase/installations/src/util/constants.ts","../node_modules/@firebase/installations/src/util/errors.ts","../node_modules/@firebase/installations/src/functions/common.ts","../node_modules/@firebase/installations/src/functions/create-installation-request.ts","../node_modules/@firebase/installations/src/util/sleep.ts","../node_modules/@firebase/installations/src/helpers/generate-fid.ts","../node_modules/@firebase/installations/src/helpers/buffer-to-base64-url-safe.ts","../node_modules/@firebase/installations/src/util/get-key.ts","../node_modules/@firebase/installations/src/helpers/fid-changed.ts","../node_modules/@firebase/installations/src/helpers/idb-manager.ts","../node_modules/@firebase/installations/src/helpers/get-installation-entry.ts","../node_modules/@firebase/installations/src/functions/generate-auth-token-request.ts","../node_modules/@firebase/installations/src/helpers/refresh-auth-token.ts","../node_modules/@firebase/installations/src/api/get-id.ts","../node_modules/@firebase/installations/src/api/get-token.ts","../node_modules/@firebase/installations/src/helpers/extract-app-config.ts","../node_modules/@firebase/installations/src/functions/config.ts","../node_modules/@firebase/installations/src/index.ts","../node_modules/@firebase/analytics/src/constants.ts","../node_modules/@firebase/analytics/src/logger.ts","../node_modules/@firebase/analytics/src/errors.ts","../node_modules/@firebase/analytics/src/helpers.ts","../node_modules/@firebase/analytics/src/get-config.ts","../node_modules/@firebase/analytics/src/functions.ts","../node_modules/@firebase/analytics/src/initialize-analytics.ts","../node_modules/@firebase/analytics/src/factory.ts","../node_modules/@firebase/analytics/src/api.ts","../node_modules/@firebase/analytics/src/index.ts","libs/firebase.js","../node_modules/js-cookie/dist/js.cookie.mjs","../node_modules/@capacitor/preferences/src/index.ts","utils/mobileStorage.ts","../node_modules/mobx/src/errors.ts","../node_modules/mobx/src/utils/global.ts","../node_modules/mobx/src/utils/utils.ts","../node_modules/mobx/src/api/decorators.ts","../node_modules/mobx/src/types/overrideannotation.ts","../node_modules/mobx/src/core/atom.ts","../node_modules/mobx/src/api/become-observed.ts","../node_modules/mobx/src/utils/comparer.ts","../node_modules/mobx/src/types/modifiers.ts","../node_modules/mobx/src/types/actionannotation.ts","../node_modules/mobx/src/types/flowannotation.ts","../node_modules/mobx/src/types/computedannotation.ts","../node_modules/mobx/src/types/observableannotation.ts","../node_modules/mobx/src/types/autoannotation.ts","../node_modules/mobx/src/api/observable.ts","../node_modules/mobx/src/types/dynamicobject.ts","../node_modules/mobx/src/api/computed.ts","../node_modules/mobx/src/core/action.ts","../node_modules/mobx/src/types/observablevalue.ts","../node_modules/mobx/src/core/computedvalue.ts","../node_modules/mobx/src/core/derivation.ts","../node_modules/mobx/src/core/observable.ts","../node_modules/mobx/src/core/globalstate.ts","../node_modules/mobx/src/core/reaction.ts","../node_modules/mobx/src/api/trace.ts","../node_modules/mobx/src/api/action.ts","../node_modules/mobx/src/api/autorun.ts","../node_modules/mobx/src/api/configure.ts","../node_modules/mobx/src/api/extendobservable.ts","../node_modules/mobx/src/api/extras.ts","../node_modules/mobx/src/api/flow.ts","../node_modules/mobx/src/api/isobservable.ts","../node_modules/mobx/src/api/tojs.ts","../node_modules/mobx/src/api/object-api.ts","../node_modules/mobx/src/api/transaction.ts","../node_modules/mobx/src/types/intercept-utils.ts","../node_modules/mobx/src/types/listen-utils.ts","../node_modules/mobx/src/api/makeObservable.ts","../node_modules/mobx/src/types/observablearray.ts","../node_modules/mobx/src/core/spy.ts","../node_modules/mobx/src/types/observablemap.ts","../node_modules/mobx/src/types/observableset.ts","../node_modules/mobx/src/types/observableobject.ts","../node_modules/mobx/src/types/legacyobservablearray.ts","../node_modules/mobx/src/types/type-utils.ts","../node_modules/mobx/src/utils/eq.ts","../node_modules/mobx/src/utils/iterable.ts","../node_modules/mobx/src/mobx.ts","store/mobileSelectedStore.ts","../node_modules/mobx-react-lite/src/utils/assertEnvironment.ts","../node_modules/mobx-react-lite/src/utils/observerBatching.ts","../node_modules/mobx-react-lite/src/utils/printDebugValue.ts","../node_modules/mobx-react-lite/src/utils/UniversalFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/utils/observerFinalizationRegistry.ts","../node_modules/mobx-react-lite/src/staticRendering.ts","../node_modules/mobx-react-lite/src/useObserver.ts","../node_modules/mobx-react-lite/src/observer.ts","../node_modules/mobx-react-lite/src/index.ts","../node_modules/@capacitor-firebase/authentication/src/index.ts","components/Mobile/MobileTopBar.tsx","components/Navbar.tsx","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","config/local.ts","config/index.ts","config/production.ts","utils/GetCurrentUser.ts","utils/ErrorConfig.ts","libs/api.tsx","store/loggedRoutineStore.ts","store/workoutRoutineStore.ts","../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../node_modules/@mui/material/CircularProgress/CircularProgress.js","components/calender/CalenderComponent.tsx","../node_modules/@mui/material/BottomNavigationAction/bottomNavigationActionClasses.js","../node_modules/@mui/material/BottomNavigationAction/BottomNavigationAction.js","../node_modules/@mui/material/BottomNavigation/bottomNavigationClasses.js","../node_modules/@mui/material/BottomNavigation/BottomNavigation.js","components/Mobile/MobileBottomBar.tsx","pages/HomePage.tsx","../node_modules/@mui/material/Button/buttonClasses.js","../node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js","../node_modules/@mui/material/Button/Button.js","../node_modules/@mui/utils/esm/usePreviousProps.js","../node_modules/@mui/material/node_modules/@mui/base/useAutocomplete/useAutocomplete.js","../node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","../node_modules/@mui/material/ListSubheader/ListSubheader.js","../node_modules/@mui/material/internal/svg-icons/Cancel.js","../node_modules/@mui/material/Chip/chipClasses.js","../node_modules/@mui/material/Chip/Chip.js","../node_modules/@mui/material/InputBase/inputBaseClasses.js","../node_modules/@mui/material/Input/inputClasses.js","../node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js","../node_modules/@mui/material/FilledInput/filledInputClasses.js","../node_modules/@mui/material/internal/svg-icons/Close.js","../node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js","../node_modules/@mui/material/Autocomplete/autocompleteClasses.js","../node_modules/@mui/material/Autocomplete/Autocomplete.js","../node_modules/@mui/system/esm/createBox.js","../node_modules/@mui/material/Box/Box.js","../node_modules/@mui/system/esm/styled.js","../node_modules/@mui/system/esm/Stack/createStack.js","../node_modules/@mui/material/Stack/Stack.js","../node_modules/@mui/material/Divider/Divider.js","../node_modules/@mui/material/FormControl/FormControlContext.js","../node_modules/@mui/material/FormControl/useFormControl.js","../node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js","../node_modules/@mui/material/InputAdornment/InputAdornment.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","../node_modules/@mui/material/node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js","../node_modules/@mui/material/FormControl/formControlState.js","../node_modules/@mui/styled-engine/GlobalStyles/GlobalStyles.js","../node_modules/@mui/system/esm/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/GlobalStyles/GlobalStyles.js","../node_modules/@mui/material/InputBase/utils.js","../node_modules/@mui/material/InputBase/InputBase.js","../node_modules/@mui/material/Input/Input.js","../node_modules/@mui/material/FilledInput/FilledInput.js","../node_modules/@mui/material/OutlinedInput/NotchedOutline.js","../node_modules/@mui/material/OutlinedInput/OutlinedInput.js","../node_modules/@mui/material/FormLabel/formLabelClasses.js","../node_modules/@mui/material/FormLabel/FormLabel.js","../node_modules/@mui/material/InputLabel/inputLabelClasses.js","../node_modules/@mui/material/InputLabel/InputLabel.js","../node_modules/@mui/material/FormControl/formControlClasses.js","../node_modules/@mui/material/FormControl/FormControl.js","../node_modules/@mui/material/FormHelperText/formHelperTextClasses.js","../node_modules/@mui/material/FormHelperText/FormHelperText.js","../node_modules/@mui/material/NativeSelect/nativeSelectClasses.js","../node_modules/@mui/material/NativeSelect/NativeSelectInput.js","../node_modules/@mui/material/Select/selectClasses.js","../node_modules/@mui/material/Select/SelectInput.js","../node_modules/@mui/material/Select/Select.js","../node_modules/@mui/material/TextField/textFieldClasses.js","../node_modules/@mui/material/TextField/TextField.js","utils/GetDayOfWeek.ts","utils/GetRoutine.ts","../node_modules/@mui/lab/LoadingButton/loadingButtonClasses.js","../node_modules/@mui/lab/LoadingButton/LoadingButton.js","components/styled/baseStyles.tsx","components/styled/ExerciseMenuButtonComponent.tsx","components/routines/DailyRoutineComponent.tsx","pages/DailyRoutinePage.tsx","../node_modules/@mui/material/CardHeader/cardHeaderClasses.js","../node_modules/@mui/material/CardHeader/CardHeader.js","../node_modules/@mui/material/CardContent/cardContentClasses.js","../node_modules/@mui/material/CardContent/CardContent.js","components/routines/WorkoutRoutineComponent.tsx","pages/WorkoutRoutinePage.tsx","components/routines/view/LoggedWorkoutComponent.tsx","pages/LoggedWorkoutPage.tsx","../node_modules/@mui/material/ToggleButtonGroup/isValueSelected.js","../node_modules/@mui/material/ToggleButtonGroup/toggleButtonGroupClasses.js","../node_modules/@mui/material/ToggleButtonGroup/ToggleButtonGroup.js","../node_modules/@mui/material/ToggleButton/toggleButtonClasses.js","../node_modules/@mui/material/ToggleButton/ToggleButton.js","../node_modules/src/observe.ts","../node_modules/src/InView.tsx","../node_modules/@uidotdev/usehooks/index.js","components/ProgressComponent.tsx","../node_modules/src/useInView.tsx","pages/ProgressPage.tsx","../node_modules/@mui/material/Alert/alertClasses.js","../node_modules/@mui/material/internal/svg-icons/SuccessOutlined.js","../node_modules/@mui/material/internal/svg-icons/ReportProblemOutlined.js","../node_modules/@mui/material/internal/svg-icons/ErrorOutline.js","../node_modules/@mui/material/internal/svg-icons/InfoOutlined.js","../node_modules/@mui/material/Alert/Alert.js","pages/auth/Login.tsx","components/auth/RequireAuth.tsx","pages/auth/RedirectPage.tsx","pages/auth/Signup.tsx","pages/PrivacyPolicyPage.tsx","pages/AthanReminderPolicyPage.tsx","App.tsx","index.tsx"],"sourcesContent":["/// \n\nimport type { PluginListenerHandle } from '@capacitor/core';\n\ndeclare module '@capacitor/cli' {\n export interface PluginsConfig {\n /**\n * These configuration values are available:\n *\n * @since 0.1.0\n */\n FirebaseAuthentication?: {\n /**\n * Configure whether the plugin should skip the native authentication.\n * Only needed if you want to use the Firebase JavaScript SDK.\n * This configuration option has no effect on Firebase account linking.\n *\n * **Note that the plugin may behave differently across the platforms.**\n *\n * Only available for Android and iOS.\n *\n * @default false\n * @example false\n * @since 0.1.0\n */\n skipNativeAuth?: boolean;\n /**\n * Configure the providers that should be loaded by the plugin.\n *\n * Possible values: `[\"apple.com\", \"facebook.com\", \"gc.apple.com\", \"github.com\", \"google.com\", \"microsoft.com\", \"playgames.google.com\", \"twitter.com\", \"yahoo.com\", \"phone\"]`\n *\n * Only available for Android and iOS.\n *\n * @default []\n * @example [\"apple.com\", \"facebook.com\"]\n * @since 0.1.0\n */\n providers?: string[];\n };\n }\n}\n\nexport interface FirebaseAuthenticationPlugin {\n /**\n * Applies a verification code sent to the user by email.\n *\n * @since 0.2.2\n */\n applyActionCode(options: ApplyActionCodeOptions): Promise;\n /**\n * Completes the password reset process.\n *\n * @since 0.2.2\n */\n confirmPasswordReset(options: ConfirmPasswordResetOptions): Promise;\n /**\n * Finishes the phone number verification process.\n *\n * @since 5.0.0\n */\n confirmVerificationCode(\n options: ConfirmVerificationCodeOptions,\n ): Promise;\n /**\n * Creates a new user account with email and password.\n * If the new account was created, the user is signed in automatically.\n *\n * @since 0.2.2\n */\n createUserWithEmailAndPassword(\n options: CreateUserWithEmailAndPasswordOptions,\n ): Promise;\n /**\n * Deletes and signs out the user.\n *\n * @since 1.3.0\n */\n deleteUser(): Promise;\n /**\n * Fetches the currently signed-in user.\n *\n * @since 0.1.0\n */\n getCurrentUser(): Promise;\n /**\n * Fetches the Firebase Auth ID Token for the currently signed-in user.\n *\n * @since 0.1.0\n */\n getIdToken(options?: GetIdTokenOptions): Promise;\n /**\n * Returns the `SignInResult` from the redirect-based sign-in flow.\n *\n * If sign-in was unsuccessful, fails with an error.\n * If no redirect operation was called, returns a `SignInResult` with a null user.\n *\n * Only available for Web.\n *\n * @since 1.3.0\n */\n getRedirectResult(): Promise;\n /**\n * Get the tenant id.\n *\n * @since 1.1.0\n */\n getTenantId(): Promise;\n /**\n * Checks if an incoming link is a sign-in with email link suitable for `signInWithEmailLink`.\n *\n * @since 1.1.0\n */\n isSignInWithEmailLink(\n options: IsSignInWithEmailLinkOptions,\n ): Promise;\n /**\n * Links the user account with Apple authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithApple(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Email authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithEmailAndPassword(\n options: LinkWithEmailAndPasswordOptions,\n ): Promise;\n /**\n * Links the user account with Email authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithEmailLink(options: LinkWithEmailLinkOptions): Promise;\n /**\n * Links the user account with Facebook authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithFacebook(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Game Center authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * Only available for iOS.\n *\n * @since 1.3.0\n */\n linkWithGameCenter(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with GitHub authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithGithub(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Google authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithGoogle(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Microsoft authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithMicrosoft(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Phone Number authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * Use the `phoneVerificationCompleted` listener to be notified when the verification is completed.\n * Use the `phoneVerificationFailed` listener to be notified when the verification is failed.\n * Use the `phoneCodeSent` listener to get the verification id.\n *\n * @since 1.1.0\n */\n linkWithPhoneNumber(options: LinkWithPhoneNumberOptions): Promise;\n /**\n * Links the user account with Play Games authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * Only available for Android.\n *\n * @since 1.1.0\n */\n linkWithPlayGames(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Twitter authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithTwitter(options?: LinkWithOAuthOptions): Promise;\n /**\n * Links the user account with Yahoo authentication provider.\n *\n * The user must be logged in on the native layer.\n * The `skipNativeAuth` configuration option has no effect here.\n *\n * @since 1.1.0\n */\n linkWithYahoo(options?: LinkWithOAuthOptions): Promise;\n /**\n * Reloads user account data, if signed in.\n *\n * @since 1.3.0\n */\n reload(): Promise;\n /**\n * Sends a verification email to the currently signed in user.\n *\n * @since 0.2.2\n */\n sendEmailVerification(): Promise;\n /**\n * Sends a password reset email.\n *\n * @since 0.2.2\n */\n sendPasswordResetEmail(options: SendPasswordResetEmailOptions): Promise;\n /**\n * Sends a sign-in email link to the user with the specified email.\n *\n * To complete sign in with the email link, call `signInWithEmailLink` with the email address and the email link supplied in the email sent to the user.\n *\n * @since 1.1.0\n */\n sendSignInLinkToEmail(options: SendSignInLinkToEmailOptions): Promise;\n /**\n * Sets the user-facing language code for auth operations.\n *\n * @since 0.1.0\n */\n setLanguageCode(options: SetLanguageCodeOptions): Promise;\n /**\n * Sets the type of persistence for the currently saved auth session.\n *\n * Only available for Web.\n *\n * @since 5.2.0\n */\n setPersistence(options: SetPersistenceOptions): Promise;\n /**\n * Sets the tenant id.\n *\n * @since 1.1.0\n */\n setTenantId(options: SetTenantIdOptions): Promise;\n /**\n * Signs in as an anonymous user.\n *\n * @since 1.1.0\n */\n signInAnonymously(): Promise;\n /**\n * Starts the Apple sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithApple(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the Custom Token sign-in flow.\n *\n * This method cannot be used in combination with `skipNativeAuth` on Android and iOS.\n * In this case you have to use the `signInWithCustomToken` interface of the Firebase JS SDK directly.\n *\n * @since 0.1.0\n */\n signInWithCustomToken(\n options: SignInWithCustomTokenOptions,\n ): Promise;\n /**\n * Starts the sign-in flow using an email and password.\n *\n * @since 0.2.2\n */\n signInWithEmailAndPassword(\n options: SignInWithEmailAndPasswordOptions,\n ): Promise;\n /**\n * Signs in using an email and sign-in email link.\n *\n * @since 1.1.0\n */\n signInWithEmailLink(\n options: SignInWithEmailLinkOptions,\n ): Promise;\n /**\n * Starts the Facebook sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithFacebook(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the Game Center sign-in flow.\n *\n * Only available for iOS.\n *\n * @since 1.3.0\n */\n signInWithGameCenter(\n options?: SignInOptions | SignInWithOAuthOptions,\n ): Promise;\n /**\n * Starts the GitHub sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithGithub(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the Google sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithGoogle(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the Microsoft sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithMicrosoft(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the sign-in flow using a phone number.\n *\n * Use the `phoneVerificationCompleted` listener to be notified when the verification is completed.\n * Use the `phoneVerificationFailed` listener to be notified when the verification is failed.\n * Use the `phoneCodeSent` listener to get the verification id.\n *\n * Only available for Android and iOS.\n *\n * @since 0.1.0\n */\n signInWithPhoneNumber(options: SignInWithPhoneNumberOptions): Promise;\n /**\n * Starts the Play Games sign-in flow.\n *\n * Only available for Android.\n *\n * @since 0.1.0\n */\n signInWithPlayGames(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the Twitter sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithTwitter(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the Yahoo sign-in flow.\n *\n * @since 0.1.0\n */\n signInWithYahoo(options?: SignInWithOAuthOptions): Promise;\n /**\n * Starts the sign-out flow.\n *\n * @since 0.1.0\n */\n signOut(): Promise;\n /**\n * Unlinks a provider from a user account.\n *\n * @since 1.1.0\n */\n unlink(options: UnlinkOptions): Promise;\n /**\n * Updates the email address of the currently signed in user.\n *\n * @since 0.1.0\n */\n updateEmail(options: UpdateEmailOptions): Promise;\n /**\n * Updates the password of the currently signed in user.\n *\n * @since 0.1.0\n */\n updatePassword(options: UpdatePasswordOptions): Promise;\n /**\n * Updates a user's profile data.\n *\n * @since 1.3.0\n */\n updateProfile(options: UpdateProfileOptions): Promise;\n /**\n * Sets the user-facing language code to be the default app language.\n *\n * @since 0.1.0\n */\n useAppLanguage(): Promise;\n /**\n * Instrument your app to talk to the Authentication emulator.\n *\n * @since 0.2.0\n */\n useEmulator(options: UseEmulatorOptions): Promise;\n /**\n * Listen for the user's sign-in state changes.\n *\n * @since 0.1.0\n */\n addListener(\n eventName: 'authStateChange',\n listenerFunc: AuthStateChangeListener,\n ): Promise & PluginListenerHandle;\n /**\n * Listen for a completed phone verification.\n *\n * This listener only fires in two situations:\n * 1. **Instant verification**: In some cases the phone number can be instantly\n * verified without needing to send or enter a verification code.\n * 2. **Auto-retrieval**: On some devices Google Play services can automatically\n * detect the incoming verification SMS and perform verification without\n * user action.\n *\n * Only available for Android.\n *\n * @since 1.3.0\n */\n addListener(\n eventName: 'phoneVerificationCompleted',\n listenerFunc: PhoneVerificationCompletedListener,\n ): Promise & PluginListenerHandle;\n /**\n * Listen for a failed phone verification.\n *\n * @since 1.3.0\n */\n addListener(\n eventName: 'phoneVerificationFailed',\n listenerFunc: PhoneVerificationFailedListener,\n ): Promise & PluginListenerHandle;\n /**\n * Listen for a phone verification code.\n *\n * @since 1.3.0\n */\n addListener(\n eventName: 'phoneCodeSent',\n listenerFunc: PhoneCodeSentListener,\n ): Promise & PluginListenerHandle;\n /**\n * Remove all listeners for this plugin.\n *\n * @since 0.1.0\n */\n removeAllListeners(): Promise;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface ApplyActionCodeOptions {\n /**\n * A verification code sent to the user.\n *\n * @since 0.2.2\n */\n oobCode: string;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface ConfirmPasswordResetOptions {\n /**\n * A verification code sent to the user.\n *\n * @since 0.2.2\n */\n oobCode: string;\n /**\n * The new password.\n *\n * @since 0.2.2\n */\n newPassword: string;\n}\n\n/**\n * @since 5.0.0\n */\nexport interface ConfirmVerificationCodeOptions {\n /**\n * The verification ID received from the `phoneCodeSent` listener.\n *\n * The `verificationCode` option must also be provided.\n *\n * @since 5.0.0\n */\n verificationId: string;\n /**\n * The verification code either received from the `phoneCodeSent` listener or entered by the user.\n *\n * The `verificationId` option must also be provided.\n *\n * @since 5.0.0\n */\n verificationCode: string;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface CreateUserWithEmailAndPasswordOptions {\n /**\n * @since 0.2.2\n */\n email: string;\n /**\n * @since 0.2.2\n */\n password: string;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface GetCurrentUserResult {\n /**\n * The currently signed-in user, or null if there isn't any.\n *\n * @since 0.1.0\n */\n user: User | null;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface GetIdTokenOptions {\n /**\n * Force refresh regardless of token expiration.\n *\n * @since 0.1.0\n */\n forceRefresh: boolean;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface GetIdTokenResult {\n /**\n * The Firebase Auth ID token JWT string.\n *\n * @since 0.1.0\n */\n token: string;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface GetTenantIdResult {\n /**\n * The tenant id.\n * `null` if it has never been set.\n *\n * @since 1.1.0\n */\n tenantId: string | null;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface SendPasswordResetEmailOptions {\n /**\n * @since 0.2.2\n */\n email: string;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface SetLanguageCodeOptions {\n /**\n * BCP 47 language code.\n *\n * @example \"en-US\"\n * @since 0.1.0\n */\n languageCode: string;\n}\n\n/**\n * @since 5.2.0\n */\nexport interface SetPersistenceOptions {\n /**\n * The persistence types.\n *\n * @since 5.2.0\n */\n persistence: Persistence;\n}\n\n/**\n * @since 5.2.0\n */\nexport enum Persistence {\n /**\n * Long term persistence using IndexedDB.\n *\n * @since 5.2.0\n */\n IndexedDbLocal = 'INDEXED_DB_LOCAL',\n /**\n * No persistence.\n *\n * @since 5.2.0\n */\n InMemory = 'IN_MEMORY',\n /**\n * Long term persistence using local storage.\n *\n * @since 5.2.0\n */\n BrowserLocal = 'BROWSER_LOCAL',\n /**\n * Temporary persistence using session storage.\n *\n * @since 5.2.0\n */\n BrowserSession = 'BROWSER_SESSION',\n}\n\n/**\n * @since 1.1.0\n */\nexport interface SetTenantIdOptions {\n /**\n * The tenant id.\n *\n * @since 1.1.0\n */\n tenantId: string;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface UpdateEmailOptions {\n /**\n * The new email address.\n *\n * @since 0.2.2\n */\n newEmail: string;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface UpdatePasswordOptions {\n /**\n * The new password.\n *\n * @since 0.2.2\n */\n newPassword: string;\n}\n\n/**\n * @since 1.3.0\n */\nexport interface UpdateProfileOptions {\n /**\n * The user's display name.\n *\n * @since 1.3.0\n */\n displayName?: string | null;\n /**\n * The user's photo URL.\n *\n * @since 1.3.0\n */\n photoUrl?: string | null;\n}\n\n/**\n * @since 1.1.0\n */\nexport type LinkOptions = SignInOptions;\n\n/**\n * @since 1.1.0\n */\nexport type LinkWithOAuthOptions = SignInWithOAuthOptions;\n\n/**\n * @since 1.1.0\n */\nexport interface LinkWithEmailAndPasswordOptions {\n /**\n * The user's email address.\n *\n * @since 1.1.0\n */\n email: string;\n /**\n * The user's password.\n *\n * @since 1.1.0\n */\n password: string;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface LinkWithEmailLinkOptions {\n /**\n * The user's email address.\n *\n * @since 1.1.0\n */\n email: string;\n /**\n * The link sent to the user's email address.\n *\n * @since 1.1.0\n */\n emailLink: string;\n}\n\n/**\n * @since 1.1.0\n */\nexport type LinkWithPhoneNumberOptions = SignInWithPhoneNumberOptions;\n\n/**\n * @since 1.1.0\n */\nexport type LinkWithCustomTokenOptions = SignInWithCustomTokenOptions;\n\n/**\n * @since 1.1.0\n */\nexport type LinkResult = SignInResult;\n\n/**\n * @since 0.1.0\n */\nexport interface SignInOptions {\n /**\n * Whether the plugin should skip the native authentication or not.\n * Only needed if you want to use the Firebase JavaScript SDK.\n * This value overwrites the configrations value of the `skipNativeAuth` option.\n * If no value is set, the configuration value is used.\n *\n * **Note that the plugin may behave differently across the platforms.**\n *\n * `skipNativeAuth` cannot be used in combination with `signInWithCustomToken`, `createUserWithEmailAndPassword` or `signInWithEmailAndPassword`.\n *\n * Only available for Android and iOS.\n *\n * @since 1.1.0\n */\n skipNativeAuth?: boolean;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface SignInWithOAuthOptions extends SignInOptions {\n /**\n * Configures custom parameters to be passed to the identity provider during the OAuth sign-in flow.\n *\n * Supports Apple, Facebook, GitHub, Google, Microsoft, Twitter and Yahoo on Web.\n * Supports Apple, GitHub, Microsoft, Twitter and Yahoo on Android.\n * Supports Facebook, GitHub, Microsoft, Twitter and Yahoo on iOS.\n *\n * @since 1.1.0\n */\n customParameters?: SignInCustomParameter[];\n /**\n * Whether to use the popup-based OAuth authentication flow or the full-page redirect flow.\n * If you choose `redirect`, you will get the result of the call via the `authStateChange` listener after the redirect.\n *\n * Only available for Web.\n *\n * @default 'popup'\n * @since 1.3.0\n */\n mode?: 'popup' | 'redirect';\n /**\n * Scopes to request from provider.\n *\n * Supports Apple, Facebook, GitHub, Google, Microsoft, Twitter and Yahoo on Web.\n * Supports Apple, GitHub, Google, Microsoft, Twitter, Yahoo and Play Games on Android.\n * Supports Facebook, GitHub, Google, Microsoft, Twitter and Yahoo on iOS.\n *\n * @since 1.1.0\n */\n scopes?: string[];\n}\n\n/**\n * @since 0.1.0\n */\nexport interface SignInCustomParameter {\n /**\n * The custom parameter key (e.g. `login_hint`).\n *\n * @since 0.1.0\n */\n key: string;\n /**\n * The custom parameter value (e.g. `user@firstadd.onmicrosoft.com`).\n *\n * @since 0.1.0\n */\n value: string;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface SignInWithPhoneNumberOptions extends SignInOptions {\n /**\n * The phone number to be verified in E.164 format.\n *\n * @example \"+16505550101\"\n * @since 0.1.0\n */\n phoneNumber: string;\n /**\n * The reCAPTCHA verifier.\n * Must be an instance of `firebase.auth.RecaptchaVerifier`.\n *\n * Only available for Web.\n *\n * @since 5.2.0\n */\n recaptchaVerifier?: unknown;\n /**\n * Resend the verification code to the specified phone number.\n * `signInWithPhoneNumber` must be called once before using this option.\n *\n * Only available for Android.\n *\n * @since 1.3.0\n * @default false\n */\n resendCode?: boolean;\n}\n\n/**\n * @since 0.2.2\n */\nexport interface SignInWithEmailAndPasswordOptions extends SignInOptions {\n /**\n * The user's email address.\n *\n * @since 0.2.2\n */\n email: string;\n /**\n * The user's password.\n *\n * @since 0.2.2\n */\n password: string;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface SendSignInLinkToEmailOptions {\n /**\n * The user's email address.\n *\n * @since 1.1.0\n */\n email: string;\n /**\n * Structure that contains the required continue/state URL with optional Android and iOS bundle identifiers.\n *\n * @since 1.1.0\n */\n actionCodeSettings: ActionCodeSettings;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface IsSignInWithEmailLinkOptions {\n /**\n * The link sent to the user's email address.\n *\n * @since 1.1.0\n */\n emailLink: string;\n}\n/**\n * @since 1.1.0\n */\nexport interface IsSignInWithEmailLinkResult {\n /**\n * Whether an incoming link is a signup with email link suitable for `signInWithEmailLink(...)`.\n */\n isSignInWithEmailLink: boolean;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface SignInWithEmailLinkOptions extends SignInOptions {\n /**\n * The user's email address.\n *\n * @since 1.1.0\n */\n email: string;\n /**\n * The link sent to the user's email address.\n *\n * @since 1.1.0\n */\n emailLink: string;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface SignInWithCustomTokenOptions extends SignInOptions {\n /**\n * The custom token to sign in with.\n *\n * @since 0.1.0\n */\n token: string;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface SignInResult {\n /**\n * The currently signed-in user, or null if there isn't any.\n *\n * @since 0.1.0\n */\n user: User | null;\n /**\n * Credentials returned by an auth provider.\n *\n * @since 0.1.0\n */\n credential: AuthCredential | null;\n /**\n * Additional user information from a federated identity provider.\n *\n * @since 0.5.1\n */\n additionalUserInfo: AdditionalUserInfo | null;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface UnlinkOptions {\n /**\n * The provider to unlink.\n *\n * @since 1.1.0\n */\n providerId: ProviderId;\n}\n\n/**\n * @since 1.1.0\n */\nexport interface UnlinkResult {\n /**\n * The currently signed-in user, or null if there isn't any.\n *\n * @since 1.1.0\n */\n user: User | null;\n}\n\n/**\n * @since 0.2.0\n */\nexport interface UseEmulatorOptions {\n /**\n * The emulator host without any port or scheme.\n *\n * @since 0.2.0\n * @example \"127.0.0.1\"\n */\n host: string;\n /**\n * The emulator port.\n *\n * @since 0.2.0\n * @default 9099\n * @example 9099\n */\n port?: number;\n /**\n * The emulator scheme.\n *\n * Only available for Web.\n *\n * @since 5.2.0\n * @default \"http\"\n * @example \"https\"\n */\n scheme?: string;\n}\n\n/**\n * @since 0.1.0\n * @see https://firebase.google.com/docs/reference/js/auth.user\n */\nexport interface User {\n /**\n * @since 0.1.0\n */\n displayName: string | null;\n /**\n * @since 0.1.0\n */\n email: string | null;\n /**\n * @since 0.1.0\n */\n emailVerified: boolean;\n /**\n * @since 0.1.0\n */\n isAnonymous: boolean;\n /**\n * The user's metadata.\n *\n * @since 5.2.0\n */\n metadata: UserMetadata;\n /**\n * @since 0.1.0\n */\n phoneNumber: string | null;\n /**\n * @since 0.1.0\n */\n photoUrl: string | null;\n /**\n * Additional per provider such as displayName and profile information.\n *\n * @since 5.2.0\n */\n providerData: UserInfo[];\n /**\n * @since 0.1.0\n */\n providerId: string;\n /**\n * @since 0.1.0\n */\n tenantId: string | null;\n /**\n * @since 0.1.0\n */\n uid: string;\n}\n\n/**\n * @since 5.2.0\n * @see https://firebase.google.com/docs/reference/js/auth.userinfo\n */\nexport interface UserInfo {\n /**\n * The display name of the user.\n *\n * @since 5.2.0\n */\n displayName: string | null;\n /**\n * The email of the user.\n *\n * @since 5.2.0\n */\n email: string | null;\n /**\n * The phone number normalized based on the E.164 standard (e.g. +16505550101) for the user.\n *\n * @since 5.2.0\n */\n phoneNumber: string | null;\n /**\n * The profile photo URL of the user.\n *\n * @since 5.2.0\n */\n photoUrl: string | null;\n /**\n * The provider used to authenticate the user.\n *\n * @since 5.2.0\n */\n providerId: string;\n /**\n * The user's unique ID.\n *\n * @since 5.2.0\n */\n uid: string;\n}\n\n/**\n * @since 5.2.0\n * @see https://firebase.google.com/docs/reference/js/auth.usermetadata\n */\nexport interface UserMetadata {\n /**\n * Time the user was created in milliseconds since the epoch.\n *\n * @since 5.2.0\n * @example 1695130859034\n */\n creationTime?: number;\n /**\n * Time the user last signed in in milliseconds since the epoch.\n *\n * @since 5.2.0\n * @example 1695130859034\n */\n lastSignInTime?: number;\n}\n\n/**\n * @since 0.1.0\n */\nexport interface AuthCredential {\n /**\n * The OAuth access token associated with the credential if it belongs to an OAuth provider.\n *\n * @since 0.1.0\n */\n accessToken?: string;\n /**\n * A token that the app uses to interact with the server.\n *\n * Only available for Apple Sign-in on iOS.\n *\n * @since 1.2.0\n */\n authorizationCode?: string;\n /**\n * The OAuth ID token associated with the credential if it belongs to an OIDC provider.\n *\n * @since 0.1.0\n */\n idToken?: string;\n /**\n * The random string used to make sure that the ID token you get was granted specifically in response to your app's authentication request.\n *\n * @since 0.1.0\n */\n nonce?: string;\n /**\n * The authentication provider ID for the credential.\n *\n * @example \"google.com\"\n * @since 0.1.0\n */\n providerId: string;\n /**\n * The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0 provider.\n *\n * @since 0.1.0\n */\n secret?: string;\n /**\n * The server auth code.\n *\n * Only available for Google Sign-in and Play Games Sign-In on Android and iOS.\n *\n * @since 5.2.0\n */\n serverAuthCode?: string;\n}\n\n/**\n * @since 0.5.1\n */\nexport interface AdditionalUserInfo {\n /**\n * Whether the user is new (sign-up) or existing (sign-in).\n *\n * @since 0.5.1\n */\n isNewUser: boolean;\n /**\n * Map containing IDP-specific user data.\n *\n * @since 0.5.1\n */\n profile?: { [key: string]: unknown };\n /**\n * Identifier for the provider used to authenticate this user.\n *\n * @since 0.5.1\n */\n providerId?: string;\n /**\n * The username if the provider is GitHub or Twitter.\n *\n * @since 0.5.1\n */\n username?: string;\n}\n\n/**\n * Callback to receive the user's sign-in state change notifications.\n *\n * @since 0.1.0\n */\nexport type AuthStateChangeListener = (change: AuthStateChange) => void;\n\n/**\n * @since 0.1.0\n */\nexport interface AuthStateChange {\n /**\n * The currently signed-in user, or null if there isn't any.\n *\n * @since 0.1.0\n */\n user: User | null;\n}\n\n/**\n * Callback to receive the verification code sent to the user's phone number.\n *\n * @since 1.3.0\n */\nexport type PhoneVerificationCompletedListener = (\n event: PhoneVerificationCompletedEvent,\n) => void;\n\n/**\n * @since 5.0.0\n */\nexport interface PhoneVerificationCompletedEvent extends SignInResult {\n /**\n * The verification code sent to the user's phone number.\n *\n * If instant verification is used, this property is not set.\n *\n * @since 5.0.0\n */\n verificationCode?: string;\n}\n\n/**\n * Callback to receive notifications of failed phone verification.\n *\n * @since 1.3.0\n */\nexport type PhoneVerificationFailedListener = (\n event: PhoneVerificationFailedEvent,\n) => void;\n\n/**\n * @since 5.0.0\n */\nexport interface PhoneVerificationFailedEvent {\n /**\n * The error message.\n *\n * @since 1.3.0\n */\n message: string;\n}\n\n/**\n * Callback to receive the verification ID.\n *\n * @since 1.3.0\n */\nexport type PhoneCodeSentListener = (event: PhoneCodeSentEvent) => void;\n\n/**\n * @since 5.0.0\n */\nexport interface PhoneCodeSentEvent {\n /**\n * The verification ID, which is needed to identify the verification code.\n *\n * @since 1.3.0\n */\n verificationId: string;\n}\n\n/**\n * An interface that defines the required continue/state URL with optional Android and iOS\n * bundle identifiers.\n *\n * @since 1.1.0\n */\nexport interface ActionCodeSettings {\n /**\n * Sets the Android package name.\n */\n android?: {\n installApp?: boolean;\n minimumVersion?: string;\n packageName: string;\n };\n /**\n * When set to true, the action code link will be be sent as a Universal Link or Android App\n * Link and will be opened by the app if installed.\n */\n handleCodeInApp?: boolean;\n /**\n * Sets the iOS bundle ID.\n */\n iOS?: {\n bundleId: string;\n };\n /**\n * Sets the link continue/state URL.\n */\n url: string;\n /**\n * When multiple custom dynamic link domains are defined for a project, specify which one to use\n * when the link is to be opened via a specified mobile app (for example, `example.page.link`).\n */\n dynamicLinkDomain?: string;\n}\n\nexport enum ProviderId {\n APPLE = 'apple.com',\n FACEBOOK = 'facebook.com',\n GAME_CENTER = 'gc.apple.com',\n GITHUB = 'github.com',\n GOOGLE = 'google.com',\n MICROSOFT = 'microsoft.com',\n PLAY_GAMES = 'playgames.google.com',\n TWITTER = 'twitter.com',\n YAHOO = 'yahoo.com',\n PASSWORD = 'password',\n PHONE = 'phone',\n}\n","export var ExceptionCode;\n(function (ExceptionCode) {\n /**\n * API is not implemented.\n *\n * This usually means the API can't be used because it is not implemented for\n * the current platform.\n */\n ExceptionCode[\"Unimplemented\"] = \"UNIMPLEMENTED\";\n /**\n * API is not available.\n *\n * This means the API can't be used right now because:\n * - it is currently missing a prerequisite, such as network connectivity\n * - it requires a particular platform or browser version\n */\n ExceptionCode[\"Unavailable\"] = \"UNAVAILABLE\";\n})(ExceptionCode || (ExceptionCode = {}));\nexport class CapacitorException extends Error {\n constructor(message, code, data) {\n super(message);\n this.message = message;\n this.code = code;\n this.data = data;\n }\n}\nexport const getPlatformId = (win) => {\n var _a, _b;\n if (win === null || win === void 0 ? void 0 : win.androidBridge) {\n return 'android';\n }\n else if ((_b = (_a = win === null || win === void 0 ? void 0 : win.webkit) === null || _a === void 0 ? void 0 : _a.messageHandlers) === null || _b === void 0 ? void 0 : _b.bridge) {\n return 'ios';\n }\n else {\n return 'web';\n }\n};\n//# sourceMappingURL=util.js.map","const createCapacitorPlatforms = (win) => {\n const defaultPlatformMap = new Map();\n defaultPlatformMap.set('web', { name: 'web' });\n const capPlatforms = win.CapacitorPlatforms || {\n currentPlatform: { name: 'web' },\n platforms: defaultPlatformMap,\n };\n const addPlatform = (name, platform) => {\n capPlatforms.platforms.set(name, platform);\n };\n const setPlatform = (name) => {\n if (capPlatforms.platforms.has(name)) {\n capPlatforms.currentPlatform = capPlatforms.platforms.get(name);\n }\n };\n capPlatforms.addPlatform = addPlatform;\n capPlatforms.setPlatform = setPlatform;\n return capPlatforms;\n};\nconst initPlatforms = (win) => (win.CapacitorPlatforms = createCapacitorPlatforms(win));\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nexport const CapacitorPlatforms = /*#__PURE__*/ initPlatforms((typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {}));\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nexport const addPlatform = CapacitorPlatforms.addPlatform;\n/**\n * @deprecated Set `CapacitorCustomPlatform` on the window object prior to runtime executing in the web app instead\n */\nexport const setPlatform = CapacitorPlatforms.setPlatform;\n//# sourceMappingURL=platforms.js.map","import { CapacitorException, getPlatformId, ExceptionCode } from './util';\nexport const createCapacitor = (win) => {\n var _a, _b, _c, _d, _e;\n const capCustomPlatform = win.CapacitorCustomPlatform || null;\n const cap = win.Capacitor || {};\n const Plugins = (cap.Plugins = cap.Plugins || {});\n /**\n * @deprecated Use `capCustomPlatform` instead, default functions like registerPlugin will function with the new object.\n */\n const capPlatforms = win.CapacitorPlatforms;\n const defaultGetPlatform = () => {\n return capCustomPlatform !== null\n ? capCustomPlatform.name\n : getPlatformId(win);\n };\n const getPlatform = ((_a = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _a === void 0 ? void 0 : _a.getPlatform) || defaultGetPlatform;\n const defaultIsNativePlatform = () => getPlatform() !== 'web';\n const isNativePlatform = ((_b = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _b === void 0 ? void 0 : _b.isNativePlatform) || defaultIsNativePlatform;\n const defaultIsPluginAvailable = (pluginName) => {\n const plugin = registeredPlugins.get(pluginName);\n if (plugin === null || plugin === void 0 ? void 0 : plugin.platforms.has(getPlatform())) {\n // JS implementation available for the current platform.\n return true;\n }\n if (getPluginHeader(pluginName)) {\n // Native implementation available.\n return true;\n }\n return false;\n };\n const isPluginAvailable = ((_c = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _c === void 0 ? void 0 : _c.isPluginAvailable) ||\n defaultIsPluginAvailable;\n const defaultGetPluginHeader = (pluginName) => { var _a; return (_a = cap.PluginHeaders) === null || _a === void 0 ? void 0 : _a.find(h => h.name === pluginName); };\n const getPluginHeader = ((_d = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _d === void 0 ? void 0 : _d.getPluginHeader) || defaultGetPluginHeader;\n const handleError = (err) => win.console.error(err);\n const pluginMethodNoop = (_target, prop, pluginName) => {\n return Promise.reject(`${pluginName} does not have an implementation of \"${prop}\".`);\n };\n const registeredPlugins = new Map();\n const defaultRegisterPlugin = (pluginName, jsImplementations = {}) => {\n const registeredPlugin = registeredPlugins.get(pluginName);\n if (registeredPlugin) {\n console.warn(`Capacitor plugin \"${pluginName}\" already registered. Cannot register plugins twice.`);\n return registeredPlugin.proxy;\n }\n const platform = getPlatform();\n const pluginHeader = getPluginHeader(pluginName);\n let jsImplementation;\n const loadPluginImplementation = async () => {\n if (!jsImplementation && platform in jsImplementations) {\n jsImplementation =\n typeof jsImplementations[platform] === 'function'\n ? (jsImplementation = await jsImplementations[platform]())\n : (jsImplementation = jsImplementations[platform]);\n }\n else if (capCustomPlatform !== null &&\n !jsImplementation &&\n 'web' in jsImplementations) {\n jsImplementation =\n typeof jsImplementations['web'] === 'function'\n ? (jsImplementation = await jsImplementations['web']())\n : (jsImplementation = jsImplementations['web']);\n }\n return jsImplementation;\n };\n const createPluginMethod = (impl, prop) => {\n var _a, _b;\n if (pluginHeader) {\n const methodHeader = pluginHeader === null || pluginHeader === void 0 ? void 0 : pluginHeader.methods.find(m => prop === m.name);\n if (methodHeader) {\n if (methodHeader.rtype === 'promise') {\n return (options) => cap.nativePromise(pluginName, prop.toString(), options);\n }\n else {\n return (options, callback) => cap.nativeCallback(pluginName, prop.toString(), options, callback);\n }\n }\n else if (impl) {\n return (_a = impl[prop]) === null || _a === void 0 ? void 0 : _a.bind(impl);\n }\n }\n else if (impl) {\n return (_b = impl[prop]) === null || _b === void 0 ? void 0 : _b.bind(impl);\n }\n else {\n throw new CapacitorException(`\"${pluginName}\" plugin is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n };\n const createPluginMethodWrapper = (prop) => {\n let remove;\n const wrapper = (...args) => {\n const p = loadPluginImplementation().then(impl => {\n const fn = createPluginMethod(impl, prop);\n if (fn) {\n const p = fn(...args);\n remove = p === null || p === void 0 ? void 0 : p.remove;\n return p;\n }\n else {\n throw new CapacitorException(`\"${pluginName}.${prop}()\" is not implemented on ${platform}`, ExceptionCode.Unimplemented);\n }\n });\n if (prop === 'addListener') {\n p.remove = async () => remove();\n }\n return p;\n };\n // Some flair ✨\n wrapper.toString = () => `${prop.toString()}() { [capacitor code] }`;\n Object.defineProperty(wrapper, 'name', {\n value: prop,\n writable: false,\n configurable: false,\n });\n return wrapper;\n };\n const addListener = createPluginMethodWrapper('addListener');\n const removeListener = createPluginMethodWrapper('removeListener');\n const addListenerNative = (eventName, callback) => {\n const call = addListener({ eventName }, callback);\n const remove = async () => {\n const callbackId = await call;\n removeListener({\n eventName,\n callbackId,\n }, callback);\n };\n const p = new Promise(resolve => call.then(() => resolve({ remove })));\n p.remove = async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n };\n return p;\n };\n const proxy = new Proxy({}, {\n get(_, prop) {\n switch (prop) {\n // https://github.com/facebook/react/issues/20030\n case '$$typeof':\n return undefined;\n case 'toJSON':\n return () => ({});\n case 'addListener':\n return pluginHeader ? addListenerNative : addListener;\n case 'removeListener':\n return removeListener;\n default:\n return createPluginMethodWrapper(prop);\n }\n },\n });\n Plugins[pluginName] = proxy;\n registeredPlugins.set(pluginName, {\n name: pluginName,\n proxy,\n platforms: new Set([\n ...Object.keys(jsImplementations),\n ...(pluginHeader ? [platform] : []),\n ]),\n });\n return proxy;\n };\n const registerPlugin = ((_e = capPlatforms === null || capPlatforms === void 0 ? void 0 : capPlatforms.currentPlatform) === null || _e === void 0 ? void 0 : _e.registerPlugin) || defaultRegisterPlugin;\n // Add in convertFileSrc for web, it will already be available in native context\n if (!cap.convertFileSrc) {\n cap.convertFileSrc = filePath => filePath;\n }\n cap.getPlatform = getPlatform;\n cap.handleError = handleError;\n cap.isNativePlatform = isNativePlatform;\n cap.isPluginAvailable = isPluginAvailable;\n cap.pluginMethodNoop = pluginMethodNoop;\n cap.registerPlugin = registerPlugin;\n cap.Exception = CapacitorException;\n cap.DEBUG = !!cap.DEBUG;\n cap.isLoggingEnabled = !!cap.isLoggingEnabled;\n // Deprecated props\n cap.platform = cap.getPlatform();\n cap.isNative = cap.isNativePlatform();\n return cap;\n};\nexport const initCapacitorGlobal = (win) => (win.Capacitor = createCapacitor(win));\n//# sourceMappingURL=runtime.js.map","import { legacyRegisterWebPlugin } from './legacy/legacy-web-plugin-merge';\nimport { initCapacitorGlobal } from './runtime';\nexport const Capacitor = /*#__PURE__*/ initCapacitorGlobal(typeof globalThis !== 'undefined'\n ? globalThis\n : typeof self !== 'undefined'\n ? self\n : typeof window !== 'undefined'\n ? window\n : typeof global !== 'undefined'\n ? global\n : {});\nexport const registerPlugin = Capacitor.registerPlugin;\n/**\n * @deprecated Provided for backwards compatibility for Capacitor v2 plugins.\n * Capacitor v3 plugins should import the plugin directly. This \"Plugins\"\n * export is deprecated in v3, and will be removed in v4.\n */\nexport const Plugins = Capacitor.Plugins;\n/**\n * Provided for backwards compatibility. Use the registerPlugin() API\n * instead, and provide the web plugin as the \"web\" implmenetation.\n * For example\n *\n * export const Example = registerPlugin('Example', {\n * web: () => import('./web').then(m => new m.Example())\n * })\n *\n * @deprecated Deprecated in v3, will be removed from v4.\n */\nexport const registerWebPlugin = (plugin) => legacyRegisterWebPlugin(Capacitor, plugin);\n//# sourceMappingURL=global.js.map","import { Capacitor } from './global';\nimport { ExceptionCode } from './util';\n/**\n * Base class web plugins should extend.\n */\nexport class WebPlugin {\n constructor(config) {\n this.listeners = {};\n this.windowListeners = {};\n if (config) {\n // TODO: add link to upgrade guide\n console.warn(`Capacitor WebPlugin \"${config.name}\" config object was deprecated in v3 and will be removed in v4.`);\n this.config = config;\n }\n }\n addListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n this.listeners[eventName] = [];\n }\n this.listeners[eventName].push(listenerFunc);\n // If we haven't added a window listener for this event and it requires one,\n // go ahead and add it\n const windowListener = this.windowListeners[eventName];\n if (windowListener && !windowListener.registered) {\n this.addWindowListener(windowListener);\n }\n const remove = async () => this.removeListener(eventName, listenerFunc);\n const p = Promise.resolve({ remove });\n Object.defineProperty(p, 'remove', {\n value: async () => {\n console.warn(`Using addListener() without 'await' is deprecated.`);\n await remove();\n },\n });\n return p;\n }\n async removeAllListeners() {\n this.listeners = {};\n for (const listener in this.windowListeners) {\n this.removeWindowListener(this.windowListeners[listener]);\n }\n this.windowListeners = {};\n }\n notifyListeners(eventName, data) {\n const listeners = this.listeners[eventName];\n if (listeners) {\n listeners.forEach(listener => listener(data));\n }\n }\n hasListeners(eventName) {\n return !!this.listeners[eventName].length;\n }\n registerWindowListener(windowEventName, pluginEventName) {\n this.windowListeners[pluginEventName] = {\n registered: false,\n windowEventName,\n pluginEventName,\n handler: event => {\n this.notifyListeners(pluginEventName, event);\n },\n };\n }\n unimplemented(msg = 'not implemented') {\n return new Capacitor.Exception(msg, ExceptionCode.Unimplemented);\n }\n unavailable(msg = 'not available') {\n return new Capacitor.Exception(msg, ExceptionCode.Unavailable);\n }\n async removeListener(eventName, listenerFunc) {\n const listeners = this.listeners[eventName];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listenerFunc);\n this.listeners[eventName].splice(index, 1);\n // If there are no more listeners for this type of event,\n // remove the window listener\n if (!this.listeners[eventName].length) {\n this.removeWindowListener(this.windowListeners[eventName]);\n }\n }\n addWindowListener(handle) {\n window.addEventListener(handle.windowEventName, handle.handler);\n handle.registered = true;\n }\n removeWindowListener(handle) {\n if (!handle) {\n return;\n }\n window.removeEventListener(handle.windowEventName, handle.handler);\n handle.registered = false;\n }\n}\n//# sourceMappingURL=web-plugin.js.map","import { registerPlugin } from './global';\nimport { WebPlugin } from './web-plugin';\nexport const WebView = /*#__PURE__*/ registerPlugin('WebView');\n/******** END WEB VIEW PLUGIN ********/\n/******** COOKIES PLUGIN ********/\n/**\n * Safely web encode a string value (inspired by js-cookie)\n * @param str The string value to encode\n */\nconst encode = (str) => encodeURIComponent(str)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n/**\n * Safely web decode a string value (inspired by js-cookie)\n * @param str The string value to decode\n */\nconst decode = (str) => str.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent);\nexport class CapacitorCookiesPluginWeb extends WebPlugin {\n async getCookies() {\n const cookies = document.cookie;\n const cookieMap = {};\n cookies.split(';').forEach(cookie => {\n if (cookie.length <= 0)\n return;\n // Replace first \"=\" with CAP_COOKIE to prevent splitting on additional \"=\"\n let [key, value] = cookie.replace(/=/, 'CAP_COOKIE').split('CAP_COOKIE');\n key = decode(key).trim();\n value = decode(value).trim();\n cookieMap[key] = value;\n });\n return cookieMap;\n }\n async setCookie(options) {\n try {\n // Safely Encoded Key/Value\n const encodedKey = encode(options.key);\n const encodedValue = encode(options.value);\n // Clean & sanitize options\n const expires = `; expires=${(options.expires || '').replace('expires=', '')}`; // Default is \"; expires=\"\n const path = (options.path || '/').replace('path=', ''); // Default is \"path=/\"\n const domain = options.url != null && options.url.length > 0\n ? `domain=${options.url}`\n : '';\n document.cookie = `${encodedKey}=${encodedValue || ''}${expires}; path=${path}; ${domain};`;\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async deleteCookie(options) {\n try {\n document.cookie = `${options.key}=; Max-Age=0`;\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async clearCookies() {\n try {\n const cookies = document.cookie.split(';') || [];\n for (const cookie of cookies) {\n document.cookie = cookie\n .replace(/^ +/, '')\n .replace(/=.*/, `=;expires=${new Date().toUTCString()};path=/`);\n }\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n async clearAllCookies() {\n try {\n await this.clearCookies();\n }\n catch (error) {\n return Promise.reject(error);\n }\n }\n}\nexport const CapacitorCookies = registerPlugin('CapacitorCookies', {\n web: () => new CapacitorCookiesPluginWeb(),\n});\n// UTILITY FUNCTIONS\n/**\n * Read in a Blob value and return it as a base64 string\n * @param blob The blob value to convert to a base64 string\n */\nexport const readBlobAsBase64 = async (blob) => new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const base64String = reader.result;\n // remove prefix \"data:application/pdf;base64,\"\n resolve(base64String.indexOf(',') >= 0\n ? base64String.split(',')[1]\n : base64String);\n };\n reader.onerror = (error) => reject(error);\n reader.readAsDataURL(blob);\n});\n/**\n * Normalize an HttpHeaders map by lowercasing all of the values\n * @param headers The HttpHeaders object to normalize\n */\nconst normalizeHttpHeaders = (headers = {}) => {\n const originalKeys = Object.keys(headers);\n const loweredKeys = Object.keys(headers).map(k => k.toLocaleLowerCase());\n const normalized = loweredKeys.reduce((acc, key, index) => {\n acc[key] = headers[originalKeys[index]];\n return acc;\n }, {});\n return normalized;\n};\n/**\n * Builds a string of url parameters that\n * @param params A map of url parameters\n * @param shouldEncode true if you should encodeURIComponent() the values (true by default)\n */\nconst buildUrlParams = (params, shouldEncode = true) => {\n if (!params)\n return null;\n const output = Object.entries(params).reduce((accumulator, entry) => {\n const [key, value] = entry;\n let encodedValue;\n let item;\n if (Array.isArray(value)) {\n item = '';\n value.forEach(str => {\n encodedValue = shouldEncode ? encodeURIComponent(str) : str;\n item += `${key}=${encodedValue}&`;\n });\n // last character will always be \"&\" so slice it off\n item.slice(0, -1);\n }\n else {\n encodedValue = shouldEncode ? encodeURIComponent(value) : value;\n item = `${key}=${encodedValue}`;\n }\n return `${accumulator}&${item}`;\n }, '');\n // Remove initial \"&\" from the reduce\n return output.substr(1);\n};\n/**\n * Build the RequestInit object based on the options passed into the initial request\n * @param options The Http plugin options\n * @param extra Any extra RequestInit values\n */\nexport const buildRequestInit = (options, extra = {}) => {\n const output = Object.assign({ method: options.method || 'GET', headers: options.headers }, extra);\n // Get the content-type\n const headers = normalizeHttpHeaders(options.headers);\n const type = headers['content-type'] || '';\n // If body is already a string, then pass it through as-is.\n if (typeof options.data === 'string') {\n output.body = options.data;\n }\n // Build request initializers based off of content-type\n else if (type.includes('application/x-www-form-urlencoded')) {\n const params = new URLSearchParams();\n for (const [key, value] of Object.entries(options.data || {})) {\n params.set(key, value);\n }\n output.body = params.toString();\n }\n else if (type.includes('multipart/form-data')) {\n const form = new FormData();\n if (options.data instanceof FormData) {\n options.data.forEach((value, key) => {\n form.append(key, value);\n });\n }\n else {\n for (const key of Object.keys(options.data)) {\n form.append(key, options.data[key]);\n }\n }\n output.body = form;\n const headers = new Headers(output.headers);\n headers.delete('content-type'); // content-type will be set by `window.fetch` to includy boundary\n output.headers = headers;\n }\n else if (type.includes('application/json') ||\n typeof options.data === 'object') {\n output.body = JSON.stringify(options.data);\n }\n return output;\n};\n// WEB IMPLEMENTATION\nexport class CapacitorHttpPluginWeb extends WebPlugin {\n /**\n * Perform an Http request given a set of options\n * @param options Options to build the HTTP request\n */\n async request(options) {\n const requestInit = buildRequestInit(options, options.webFetchExtra);\n const urlParams = buildUrlParams(options.params, options.shouldEncodeUrlParams);\n const url = urlParams ? `${options.url}?${urlParams}` : options.url;\n const response = await fetch(url, requestInit);\n const contentType = response.headers.get('content-type') || '';\n // Default to 'text' responseType so no parsing happens\n let { responseType = 'text' } = response.ok ? options : {};\n // If the response content-type is json, force the response to be json\n if (contentType.includes('application/json')) {\n responseType = 'json';\n }\n let data;\n let blob;\n switch (responseType) {\n case 'arraybuffer':\n case 'blob':\n blob = await response.blob();\n data = await readBlobAsBase64(blob);\n break;\n case 'json':\n data = await response.json();\n break;\n case 'document':\n case 'text':\n default:\n data = await response.text();\n }\n // Convert fetch headers to Capacitor HttpHeaders\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return {\n data,\n headers,\n status: response.status,\n url: response.url,\n };\n }\n /**\n * Perform an Http GET request given a set of options\n * @param options Options to build the HTTP request\n */\n async get(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'GET' }));\n }\n /**\n * Perform an Http POST request given a set of options\n * @param options Options to build the HTTP request\n */\n async post(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'POST' }));\n }\n /**\n * Perform an Http PUT request given a set of options\n * @param options Options to build the HTTP request\n */\n async put(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'PUT' }));\n }\n /**\n * Perform an Http PATCH request given a set of options\n * @param options Options to build the HTTP request\n */\n async patch(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'PATCH' }));\n }\n /**\n * Perform an Http DELETE request given a set of options\n * @param options Options to build the HTTP request\n */\n async delete(options) {\n return this.request(Object.assign(Object.assign({}, options), { method: 'DELETE' }));\n }\n}\nexport const CapacitorHttp = registerPlugin('CapacitorHttp', {\n web: () => new CapacitorHttpPluginWeb(),\n});\n/******** END HTTP PLUGIN ********/\n//# sourceMappingURL=core-plugins.js.map","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import { createContext, useContext, forwardRef, createElement, Fragment } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nvar ThemeContext = /* #__PURE__ */createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = useContext(ThemeContext);\n return /*#__PURE__*/createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nexport { CacheProvider as C, Emotion as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, useTheme as u, withEmotionCache as w };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport default murmur2;\n","var unitlessKeys = {\n animationIterationCount: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport default unitlessKeys;\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","import memoize from '@emotion/memoize';\n\nvar reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|enterKeyHint|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23\n\nvar isPropValid = /* #__PURE__ */memoize(function (prop) {\n return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111\n /* o */\n && prop.charCodeAt(1) === 110\n /* n */\n && prop.charCodeAt(2) < 91;\n}\n/* Z+1 */\n);\n\nexport default isPropValid;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport { useContext, createElement, Fragment } from 'react';\nimport isPropValid from '@emotion/is-prop-valid';\nimport { withEmotionCache, ThemeContext } from '@emotion/react';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar testOmitPropsOnStringTag = isPropValid;\n\nvar testOmitPropsOnComponent = function testOmitPropsOnComponent(key) {\n return key !== 'theme';\n};\n\nvar getDefaultShouldForwardProp = function getDefaultShouldForwardProp(tag) {\n return typeof tag === 'string' && // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96 ? testOmitPropsOnStringTag : testOmitPropsOnComponent;\n};\nvar composeShouldForwardProps = function composeShouldForwardProps(tag, options, isReal) {\n var shouldForwardProp;\n\n if (options) {\n var optionsShouldForwardProp = options.shouldForwardProp;\n shouldForwardProp = tag.__emotion_forwardProp && optionsShouldForwardProp ? function (propName) {\n return tag.__emotion_forwardProp(propName) && optionsShouldForwardProp(propName);\n } : optionsShouldForwardProp;\n }\n\n if (typeof shouldForwardProp !== 'function' && isReal) {\n shouldForwardProp = tag.__emotion_forwardProp;\n }\n\n return shouldForwardProp;\n};\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar createStyled = function createStyled(tag, options) {\n if (process.env.NODE_ENV !== 'production') {\n if (tag === undefined) {\n throw new Error('You are trying to create a styled element with an undefined component.\\nYou may have forgotten to import it.');\n }\n }\n\n var isReal = tag.__emotion_real === tag;\n var baseTag = isReal && tag.__emotion_base || tag;\n var identifierName;\n var targetClassName;\n\n if (options !== undefined) {\n identifierName = options.label;\n targetClassName = options.target;\n }\n\n var shouldForwardProp = composeShouldForwardProps(tag, options, isReal);\n var defaultShouldForwardProp = shouldForwardProp || getDefaultShouldForwardProp(baseTag);\n var shouldUseAs = !defaultShouldForwardProp('as');\n return function () {\n var args = arguments;\n var styles = isReal && tag.__emotion_styles !== undefined ? tag.__emotion_styles.slice(0) : [];\n\n if (identifierName !== undefined) {\n styles.push(\"label:\" + identifierName + \";\");\n }\n\n if (args[0] == null || args[0].raw === undefined) {\n styles.push.apply(styles, args);\n } else {\n if (process.env.NODE_ENV !== 'production' && args[0][0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[0][0]);\n var len = args.length;\n var i = 1;\n\n for (; i < len; i++) {\n if (process.env.NODE_ENV !== 'production' && args[0][i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles.push(args[i], args[0][i]);\n }\n } // $FlowFixMe: we need to cast StatelessFunctionalComponent to our PrivateStyledComponent class\n\n\n var Styled = withEmotionCache(function (props, cache, ref) {\n var FinalTag = shouldUseAs && props.as || baseTag;\n var className = '';\n var classInterpolations = [];\n var mergedProps = props;\n\n if (props.theme == null) {\n mergedProps = {};\n\n for (var key in props) {\n mergedProps[key] = props[key];\n }\n\n mergedProps.theme = useContext(ThemeContext);\n }\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, classInterpolations, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(styles.concat(classInterpolations), cache.registered, mergedProps);\n className += cache.key + \"-\" + serialized.name;\n\n if (targetClassName !== undefined) {\n className += \" \" + targetClassName;\n }\n\n var finalShouldForwardProp = shouldUseAs && shouldForwardProp === undefined ? getDefaultShouldForwardProp(FinalTag) : defaultShouldForwardProp;\n var newProps = {};\n\n for (var _key in props) {\n if (shouldUseAs && _key === 'as') continue;\n\n if ( // $FlowFixMe\n finalShouldForwardProp(_key)) {\n newProps[_key] = props[_key];\n }\n }\n\n newProps.className = className;\n newProps.ref = ref;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof FinalTag === 'string'\n }), /*#__PURE__*/createElement(FinalTag, newProps));\n });\n Styled.displayName = identifierName !== undefined ? identifierName : \"Styled(\" + (typeof baseTag === 'string' ? baseTag : baseTag.displayName || baseTag.name || 'Component') + \")\";\n Styled.defaultProps = tag.defaultProps;\n Styled.__emotion_real = Styled;\n Styled.__emotion_base = baseTag;\n Styled.__emotion_styles = styles;\n Styled.__emotion_forwardProp = shouldForwardProp;\n Object.defineProperty(Styled, 'toString', {\n value: function value() {\n if (targetClassName === undefined && process.env.NODE_ENV !== 'production') {\n return 'NO_COMPONENT_SELECTOR';\n } // $FlowFixMe: coerce undefined to string\n\n\n return \".\" + targetClassName;\n }\n });\n\n Styled.withComponent = function (nextTag, nextOptions) {\n return createStyled(nextTag, _extends({}, options, nextOptions, {\n shouldForwardProp: composeShouldForwardProps(Styled, nextOptions, true)\n })).apply(void 0, styles);\n };\n\n return Styled;\n };\n};\n\nexport default createStyled;\n","import '@babel/runtime/helpers/extends';\nimport 'react';\nimport '@emotion/is-prop-valid';\nimport createStyled from '../base/dist/emotion-styled-base.browser.esm.js';\nimport '@emotion/react';\nimport '@emotion/utils';\nimport '@emotion/serialize';\nimport '@emotion/use-insertion-effect-with-fallbacks';\n\nvar tags = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG\n'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];\n\nvar newStyled = createStyled.bind();\ntags.forEach(function (tagName) {\n // $FlowFixMe: we can ignore this because its exposed type is defined by the CreateStyled type\n newStyled[tagName] = newStyled(tagName);\n});\n\nexport default newStyled;\n","import * as React from 'react';\nimport { useLayoutEffect } from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst stringToByteArray = function (str: string): number[] {\n // TODO(user): Use native implementations if/when available\n const out: number[] = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n } else if (\n (c & 0xfc00) === 0xd800 &&\n i + 1 < str.length &&\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00\n ) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n } else {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n\n/**\n * Turns an array of numbers into the string given by the concatenation of the\n * characters to which the numbers correspond.\n * @param bytes Array of numbers representing characters.\n * @return Stringification of the array.\n */\nconst byteArrayToString = function (bytes: number[]): string {\n // TODO(user): Use native implementations if/when available\n const out: string[] = [];\n let pos = 0,\n c = 0;\n while (pos < bytes.length) {\n const c1 = bytes[pos++];\n if (c1 < 128) {\n out[c++] = String.fromCharCode(c1);\n } else if (c1 > 191 && c1 < 224) {\n const c2 = bytes[pos++];\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\n } else if (c1 > 239 && c1 < 365) {\n // Surrogate Pair\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n const c4 = bytes[pos++];\n const u =\n (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\n 0x10000;\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\n } else {\n const c2 = bytes[pos++];\n const c3 = bytes[pos++];\n out[c++] = String.fromCharCode(\n ((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63)\n );\n }\n }\n return out.join('');\n};\n\ninterface Base64 {\n byteToCharMap_: { [key: number]: string } | null;\n charToByteMap_: { [key: string]: number } | null;\n byteToCharMapWebSafe_: { [key: number]: string } | null;\n charToByteMapWebSafe_: { [key: string]: number } | null;\n ENCODED_VALS_BASE: string;\n readonly ENCODED_VALS: string;\n readonly ENCODED_VALS_WEBSAFE: string;\n HAS_NATIVE_SUPPORT: boolean;\n encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string;\n encodeString(input: string, webSafe?: boolean): string;\n decodeString(input: string, webSafe: boolean): string;\n decodeStringToByteArray(input: string, webSafe: boolean): number[];\n init_(): void;\n}\n\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\n// Static lookup maps, lazily populated by init_()\nexport const base64: Base64 = {\n /**\n * Maps bytes to characters.\n */\n byteToCharMap_: null,\n\n /**\n * Maps characters to bytes.\n */\n charToByteMap_: null,\n\n /**\n * Maps bytes to websafe characters.\n * @private\n */\n byteToCharMapWebSafe_: null,\n\n /**\n * Maps websafe characters to bytes.\n * @private\n */\n charToByteMapWebSafe_: null,\n\n /**\n * Our default alphabet, shared between\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\n */\n ENCODED_VALS_BASE:\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\n\n /**\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\n */\n get ENCODED_VALS() {\n return this.ENCODED_VALS_BASE + '+/=';\n },\n\n /**\n * Our websafe alphabet.\n */\n get ENCODED_VALS_WEBSAFE() {\n return this.ENCODED_VALS_BASE + '-_.';\n },\n\n /**\n * Whether this browser supports the atob and btoa functions. This extension\n * started at Mozilla but is now implemented by many browsers. We use the\n * ASSUME_* variables to avoid pulling in the full useragent detection library\n * but still allowing the standard per-browser compilations.\n *\n */\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\n\n /**\n * Base64-encode an array of bytes.\n *\n * @param input An array of bytes (numbers with\n * value in [0, 255]) to encode.\n * @param webSafe Boolean indicating we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeByteArray(input: number[] | Uint8Array, webSafe?: boolean): string {\n if (!Array.isArray(input)) {\n throw Error('encodeByteArray takes an array as a parameter');\n }\n\n this.init_();\n\n const byteToCharMap = webSafe\n ? this.byteToCharMapWebSafe_!\n : this.byteToCharMap_!;\n\n const output = [];\n\n for (let i = 0; i < input.length; i += 3) {\n const byte1 = input[i];\n const haveByte2 = i + 1 < input.length;\n const byte2 = haveByte2 ? input[i + 1] : 0;\n const haveByte3 = i + 2 < input.length;\n const byte3 = haveByte3 ? input[i + 2] : 0;\n\n const outByte1 = byte1 >> 2;\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\n let outByte4 = byte3 & 0x3f;\n\n if (!haveByte3) {\n outByte4 = 64;\n\n if (!haveByte2) {\n outByte3 = 64;\n }\n }\n\n output.push(\n byteToCharMap[outByte1],\n byteToCharMap[outByte2],\n byteToCharMap[outByte3],\n byteToCharMap[outByte4]\n );\n }\n\n return output.join('');\n },\n\n /**\n * Base64-encode a string.\n *\n * @param input A string to encode.\n * @param webSafe If true, we should use the\n * alternative alphabet.\n * @return The base64 encoded string.\n */\n encodeString(input: string, webSafe?: boolean): string {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return btoa(input);\n }\n return this.encodeByteArray(stringToByteArray(input), webSafe);\n },\n\n /**\n * Base64-decode a string.\n *\n * @param input to decode.\n * @param webSafe True if we should use the\n * alternative alphabet.\n * @return string representing the decoded value.\n */\n decodeString(input: string, webSafe: boolean): string {\n // Shortcut for Mozilla browsers that implement\n // a native base64 encoder in the form of \"btoa/atob\"\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\n return atob(input);\n }\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\n },\n\n /**\n * Base64-decode a string.\n *\n * In base-64 decoding, groups of four characters are converted into three\n * bytes. If the encoder did not apply padding, the input length may not\n * be a multiple of 4.\n *\n * In this case, the last group will have fewer than 4 characters, and\n * padding will be inferred. If the group has one or two characters, it decodes\n * to one byte. If the group has three characters, it decodes to two bytes.\n *\n * @param input Input to decode.\n * @param webSafe True if we should use the web-safe alphabet.\n * @return bytes representing the decoded value.\n */\n decodeStringToByteArray(input: string, webSafe: boolean): number[] {\n this.init_();\n\n const charToByteMap = webSafe\n ? this.charToByteMapWebSafe_!\n : this.charToByteMap_!;\n\n const output: number[] = [];\n\n for (let i = 0; i < input.length; ) {\n const byte1 = charToByteMap[input.charAt(i++)];\n\n const haveByte2 = i < input.length;\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\n ++i;\n\n const haveByte3 = i < input.length;\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n const haveByte4 = i < input.length;\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\n ++i;\n\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\n throw new DecodeBase64StringError();\n }\n\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\n output.push(outByte1);\n\n if (byte3 !== 64) {\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\n output.push(outByte2);\n\n if (byte4 !== 64) {\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\n output.push(outByte3);\n }\n }\n }\n\n return output;\n },\n\n /**\n * Lazy static initialization function. Called before\n * accessing any of the static map variables.\n * @private\n */\n init_() {\n if (!this.byteToCharMap_) {\n this.byteToCharMap_ = {};\n this.charToByteMap_ = {};\n this.byteToCharMapWebSafe_ = {};\n this.charToByteMapWebSafe_ = {};\n\n // We want quick mappings back and forth, so we precompute two maps.\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\n\n // Be forgiving when decoding and correctly decode both encodings.\n if (i >= this.ENCODED_VALS_BASE.length) {\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\n }\n }\n }\n }\n};\n\n/**\n * An error encountered while decoding base64 string.\n */\nexport class DecodeBase64StringError extends Error {\n readonly name = 'DecodeBase64StringError';\n}\n\n/**\n * URL-safe base64 encoding\n */\nexport const base64Encode = function (str: string): string {\n const utf8Bytes = stringToByteArray(str);\n return base64.encodeByteArray(utf8Bytes, true);\n};\n\n/**\n * URL-safe base64 encoding (without \".\" padding in the end).\n * e.g. Used in JSON Web Token (JWT) parts.\n */\nexport const base64urlEncodeWithoutPadding = function (str: string): string {\n // Use base64url encoding and remove padding in the end (dot characters).\n return base64Encode(str).replace(/\\./g, '');\n};\n\n/**\n * URL-safe base64 decoding\n *\n * NOTE: DO NOT use the global atob() function - it does NOT support the\n * base64Url variant encoding.\n *\n * @param str To be decoded\n * @return Decoded result, if possible\n */\nexport const base64Decode = function (str: string): string | null {\n try {\n return base64.decodeString(str, true);\n } catch (e) {\n console.error('base64Decode failed: ', e);\n }\n return null;\n};\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { base64Decode } from './crypt';\nimport { getGlobal } from './global';\n\n/**\n * Keys for experimental properties on the `FirebaseDefaults` object.\n * @public\n */\nexport type ExperimentalKey = 'authTokenSyncURL' | 'authIdTokenMaxAge';\n\n/**\n * An object that can be injected into the environment as __FIREBASE_DEFAULTS__,\n * either as a property of globalThis, a shell environment variable, or a\n * cookie.\n *\n * This object can be used to automatically configure and initialize\n * a Firebase app as well as any emulators.\n *\n * @public\n */\nexport interface FirebaseDefaults {\n config?: Record;\n emulatorHosts?: Record;\n _authTokenSyncURL?: string;\n _authIdTokenMaxAge?: number;\n /**\n * Override Firebase's runtime environment detection and\n * force the SDK to act as if it were in the specified environment.\n */\n forceEnvironment?: 'browser' | 'node';\n [key: string]: unknown;\n}\n\ndeclare global {\n // Need `var` for this to work.\n // eslint-disable-next-line no-var\n var __FIREBASE_DEFAULTS__: FirebaseDefaults | undefined;\n}\n\nconst getDefaultsFromGlobal = (): FirebaseDefaults | undefined =>\n getGlobal().__FIREBASE_DEFAULTS__;\n\n/**\n * Attempt to read defaults from a JSON string provided to\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\n * The dots are in parens because certain compilers (Vite?) cannot\n * handle seeing that variable in comments.\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\n */\nconst getDefaultsFromEnvVariable = (): FirebaseDefaults | undefined => {\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\n return;\n }\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\n if (defaultsJsonString) {\n return JSON.parse(defaultsJsonString);\n }\n};\n\nconst getDefaultsFromCookie = (): FirebaseDefaults | undefined => {\n if (typeof document === 'undefined') {\n return;\n }\n let match;\n try {\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\n } catch (e) {\n // Some environments such as Angular Universal SSR have a\n // `document` object but error on accessing `document.cookie`.\n return;\n }\n const decoded = match && base64Decode(match[1]);\n return decoded && JSON.parse(decoded);\n};\n\n/**\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\n * (1) if such an object exists as a property of `globalThis`\n * (2) if such an object was provided on a shell environment variable\n * (3) if such an object exists in a cookie\n * @public\n */\nexport const getDefaults = (): FirebaseDefaults | undefined => {\n try {\n return (\n getDefaultsFromGlobal() ||\n getDefaultsFromEnvVariable() ||\n getDefaultsFromCookie()\n );\n } catch (e) {\n /**\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\n * to any environment case we have not accounted for. Log to\n * info instead of swallowing so we can find these unknown cases\n * and add paths for them if needed.\n */\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\n return;\n }\n};\n\n/**\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\n * @public\n */\nexport const getDefaultEmulatorHost = (\n productName: string\n): string | undefined => getDefaults()?.emulatorHosts?.[productName];\n\n/**\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\n * for the given product.\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\n * @public\n */\nexport const getDefaultEmulatorHostnameAndPort = (\n productName: string\n): [hostname: string, port: number] | undefined => {\n const host = getDefaultEmulatorHost(productName);\n if (!host) {\n return undefined;\n }\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\n }\n // eslint-disable-next-line no-restricted-globals\n const port = parseInt(host.substring(separatorIndex + 1), 10);\n if (host[0] === '[') {\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\n return [host.substring(1, separatorIndex - 1), port];\n } else {\n return [host.substring(0, separatorIndex), port];\n }\n};\n\n/**\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\n * @public\n */\nexport const getDefaultAppConfig = (): Record | undefined =>\n getDefaults()?.config;\n\n/**\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\n * prefixed by \"_\")\n * @public\n */\nexport const getExperimentalSetting = (\n name: T\n): FirebaseDefaults[`_${T}`] =>\n getDefaults()?.[`_${name}`] as FirebaseDefaults[`_${T}`];\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Polyfill for `globalThis` object.\n * @returns the `globalThis` object for the given environment.\n * @public\n */\nexport function getGlobal(): typeof globalThis {\n if (typeof self !== 'undefined') {\n return self;\n }\n if (typeof window !== 'undefined') {\n return window;\n }\n if (typeof global !== 'undefined') {\n return global;\n }\n throw new Error('Unable to locate global object.');\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class Deferred {\n promise: Promise;\n reject: (value?: unknown) => void = () => {};\n resolve: (value?: unknown) => void = () => {};\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve as (value?: unknown) => void;\n this.reject = reject as (value?: unknown) => void;\n });\n }\n\n /**\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\n */\n wrapCallback(\n callback?: (error?: unknown, value?: unknown) => void\n ): (error: unknown, value?: unknown) => void {\n return (error, value?) => {\n if (error) {\n this.reject(error);\n } else {\n this.resolve(value);\n }\n if (typeof callback === 'function') {\n // Attaching noop handler just in case developer wasn't expecting\n // promises\n this.promise.catch(() => {});\n\n // Some of our callbacks don't expect a value and our own tests\n // assert that the parameter length is 1\n if (callback.length === 1) {\n callback(error);\n } else {\n callback(error, value);\n }\n }\n };\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CONSTANTS } from './constants';\nimport { getDefaults } from './defaults';\n\n/**\n * Returns navigator.userAgent string or '' if it's not defined.\n * @return user agent string\n */\nexport function getUA(): string {\n if (\n typeof navigator !== 'undefined' &&\n typeof navigator['userAgent'] === 'string'\n ) {\n return navigator['userAgent'];\n } else {\n return '';\n }\n}\n\n/**\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\n *\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\n * wait for a callback.\n */\nexport function isMobileCordova(): boolean {\n return (\n typeof window !== 'undefined' &&\n // @ts-ignore Setting up an broadly applicable index signature for Window\n // just to deal with this case would probably be a bad idea.\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA())\n );\n}\n\n/**\n * Detect Node.js.\n *\n * @return true if Node.js environment is detected or specified.\n */\n// Node detection logic from: https://github.com/iliakan/detect-node/\nexport function isNode(): boolean {\n const forceEnvironment = getDefaults()?.forceEnvironment;\n if (forceEnvironment === 'node') {\n return true;\n } else if (forceEnvironment === 'browser') {\n return false;\n }\n\n try {\n return (\n Object.prototype.toString.call(global.process) === '[object process]'\n );\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Detect Browser Environment\n */\nexport function isBrowser(): boolean {\n return typeof self === 'object' && self.self === self;\n}\n\n/**\n * Detect browser extensions (Chrome and Firefox at least).\n */\ninterface BrowserRuntime {\n id?: unknown;\n}\ndeclare const chrome: { runtime?: BrowserRuntime };\ndeclare const browser: { runtime?: BrowserRuntime };\nexport function isBrowserExtension(): boolean {\n const runtime =\n typeof chrome === 'object'\n ? chrome.runtime\n : typeof browser === 'object'\n ? browser.runtime\n : undefined;\n return typeof runtime === 'object' && runtime.id !== undefined;\n}\n\n/**\n * Detect React Native.\n *\n * @return true if ReactNative environment is detected.\n */\nexport function isReactNative(): boolean {\n return (\n typeof navigator === 'object' && navigator['product'] === 'ReactNative'\n );\n}\n\n/** Detects Electron apps. */\nexport function isElectron(): boolean {\n return getUA().indexOf('Electron/') >= 0;\n}\n\n/** Detects Internet Explorer. */\nexport function isIE(): boolean {\n const ua = getUA();\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\n}\n\n/** Detects Universal Windows Platform apps. */\nexport function isUWP(): boolean {\n return getUA().indexOf('MSAppHost/') >= 0;\n}\n\n/**\n * Detect whether the current SDK build is the Node version.\n *\n * @return true if it's the Node SDK build.\n */\nexport function isNodeSdk(): boolean {\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\n}\n\n/** Returns true if we are running in Safari. */\nexport function isSafari(): boolean {\n return (\n !isNode() &&\n navigator.userAgent.includes('Safari') &&\n !navigator.userAgent.includes('Chrome')\n );\n}\n\n/**\n * This method checks if indexedDB is supported by current browser/service worker context\n * @return true if indexedDB is supported by current browser/service worker context\n */\nexport function isIndexedDBAvailable(): boolean {\n try {\n return typeof indexedDB === 'object';\n } catch (e) {\n return false;\n }\n}\n\n/**\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\n * if errors occur during the database open operation.\n *\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\n * private browsing)\n */\nexport function validateIndexedDBOpenable(): Promise {\n return new Promise((resolve, reject) => {\n try {\n let preExist: boolean = true;\n const DB_CHECK_NAME =\n 'validate-browser-context-for-indexeddb-analytics-module';\n const request = self.indexedDB.open(DB_CHECK_NAME);\n request.onsuccess = () => {\n request.result.close();\n // delete database only when it doesn't pre-exist\n if (!preExist) {\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\n }\n resolve(true);\n };\n request.onupgradeneeded = () => {\n preExist = false;\n };\n\n request.onerror = () => {\n reject(request.error?.message || '');\n };\n } catch (error) {\n reject(error);\n }\n });\n}\n\n/**\n *\n * This method checks whether cookie is enabled within current browser\n * @return true if cookie is enabled within current browser\n */\nexport function areCookiesEnabled(): boolean {\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\n return false;\n }\n return true;\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/**\n * @fileoverview Standardized Firebase Error.\n *\n * Usage:\n *\n * // Typescript string literals for type-safe codes\n * type Err =\n * 'unknown' |\n * 'object-not-found'\n * ;\n *\n * // Closure enum for type-safe error codes\n * // at-enum {string}\n * var Err = {\n * UNKNOWN: 'unknown',\n * OBJECT_NOT_FOUND: 'object-not-found',\n * }\n *\n * let errors: Map = {\n * 'generic-error': \"Unknown error\",\n * 'file-not-found': \"Could not find file: {$file}\",\n * };\n *\n * // Type-safe function - must pass a valid error code as param.\n * let error = new ErrorFactory('service', 'Service', errors);\n *\n * ...\n * throw error.create(Err.GENERIC);\n * ...\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\n * ...\n * // Service: Could not file file: foo.txt (service/file-not-found).\n *\n * catch (e) {\n * assert(e.message === \"Could not find file: foo.txt.\");\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\n * console.log(\"Could not read file: \" + e['file']);\n * }\n * }\n */\n\nexport type ErrorMap = {\n readonly [K in ErrorCode]: string;\n};\n\nconst ERROR_NAME = 'FirebaseError';\n\nexport interface StringLike {\n toString(): string;\n}\n\nexport interface ErrorData {\n [key: string]: unknown;\n}\n\n// Based on code from:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\nexport class FirebaseError extends Error {\n /** The custom name for all FirebaseErrors. */\n readonly name: string = ERROR_NAME;\n\n constructor(\n /** The error code for this error. */\n readonly code: string,\n message: string,\n /** Custom data for this error. */\n public customData?: Record\n ) {\n super(message);\n\n // Fix For ES5\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, FirebaseError.prototype);\n\n // Maintains proper stack trace for where our error was thrown.\n // Only available on V8.\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\n }\n }\n}\n\nexport class ErrorFactory<\n ErrorCode extends string,\n ErrorParams extends { readonly [K in ErrorCode]?: ErrorData } = {}\n> {\n constructor(\n private readonly service: string,\n private readonly serviceName: string,\n private readonly errors: ErrorMap\n ) {}\n\n create(\n code: K,\n ...data: K extends keyof ErrorParams ? [ErrorParams[K]] : []\n ): FirebaseError {\n const customData = (data[0] as ErrorData) || {};\n const fullCode = `${this.service}/${code}`;\n const template = this.errors[code];\n\n const message = template ? replaceTemplate(template, customData) : 'Error';\n // Service Name: Error message (service/code).\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\n\n const error = new FirebaseError(fullCode, fullMessage, customData);\n\n return error;\n }\n}\n\nfunction replaceTemplate(template: string, data: ErrorData): string {\n return template.replace(PATTERN, (_, key) => {\n const value = data[key];\n return value != null ? String(value) : `<${key}?>`;\n });\n}\n\nconst PATTERN = /\\{\\$([^}]+)}/g;\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function contains(obj: T, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nexport function safeGet(\n obj: T,\n key: K\n): T[K] | undefined {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return obj[key];\n } else {\n return undefined;\n }\n}\n\nexport function isEmpty(obj: object): obj is {} {\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n return false;\n }\n }\n return true;\n}\n\nexport function map(\n obj: { [key in K]: V },\n fn: (value: V, key: K, obj: { [key in K]: V }) => U,\n contextObj?: unknown\n): { [key in K]: U } {\n const res: Partial<{ [key in K]: U }> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n res[key] = fn.call(contextObj, obj[key], key, obj);\n }\n }\n return res as { [key in K]: U };\n}\n\n/**\n * Deep equal two objects. Support Arrays and Objects.\n */\nexport function deepEqual(a: object, b: object): boolean {\n if (a === b) {\n return true;\n }\n\n const aKeys = Object.keys(a);\n const bKeys = Object.keys(b);\n for (const k of aKeys) {\n if (!bKeys.includes(k)) {\n return false;\n }\n\n const aProp = (a as Record)[k];\n const bProp = (b as Record)[k];\n if (isObject(aProp) && isObject(bProp)) {\n if (!deepEqual(aProp, bProp)) {\n return false;\n }\n } else if (aProp !== bProp) {\n return false;\n }\n }\n\n for (const k of bKeys) {\n if (!aKeys.includes(k)) {\n return false;\n }\n }\n return true;\n}\n\nfunction isObject(thing: unknown): thing is object {\n return thing !== null && typeof thing === 'object';\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\n * params object (e.g. {arg: 'val', arg2: 'val2'})\n * Note: You must prepend it with ? when adding it to a URL.\n */\nexport function querystring(querystringParams: {\n [key: string]: string | number;\n}): string {\n const params = [];\n for (const [key, value] of Object.entries(querystringParams)) {\n if (Array.isArray(value)) {\n value.forEach(arrayVal => {\n params.push(\n encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal)\n );\n });\n } else {\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n }\n }\n return params.length ? '&' + params.join('&') : '';\n}\n\n/**\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\n * (e.g. {arg: 'val', arg2: 'val2'})\n */\nexport function querystringDecode(querystring: string): Record {\n const obj: Record = {};\n const tokens = querystring.replace(/^\\?/, '').split('&');\n\n tokens.forEach(token => {\n if (token) {\n const [key, value] = token.split('=');\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\n }\n });\n return obj;\n}\n\n/**\n * Extract the query string part of a URL, including the leading question mark (if present).\n */\nexport function extractQuerystring(url: string): string {\n const queryStart = url.indexOf('?');\n if (!queryStart) {\n return '';\n }\n const fragmentStart = url.indexOf('#', queryStart);\n return url.substring(\n queryStart,\n fragmentStart > 0 ? fragmentStart : undefined\n );\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport type NextFn = (value: T) => void;\nexport type ErrorFn = (error: Error) => void;\nexport type CompleteFn = () => void;\n\nexport interface Observer {\n // Called once for each value in a stream of values.\n next: NextFn;\n\n // A stream terminates by a single call to EITHER error() or complete().\n error: ErrorFn;\n\n // No events will be sent to next() once complete() is called.\n complete: CompleteFn;\n}\n\nexport type PartialObserver = Partial>;\n\n// TODO: Support also Unsubscribe.unsubscribe?\nexport type Unsubscribe = () => void;\n\n/**\n * The Subscribe interface has two forms - passing the inline function\n * callbacks, or a object interface with callback properties.\n */\nexport interface Subscribe {\n (next?: NextFn, error?: ErrorFn, complete?: CompleteFn): Unsubscribe;\n (observer: PartialObserver): Unsubscribe;\n}\n\nexport interface Observable {\n // Subscribe method\n subscribe: Subscribe;\n}\n\nexport type Executor = (observer: Observer) => void;\n\n/**\n * Helper to make a Subscribe function (just like Promise helps make a\n * Thenable).\n *\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\nexport function createSubscribe(\n executor: Executor,\n onNoObservers?: Executor\n): Subscribe {\n const proxy = new ObserverProxy(executor, onNoObservers);\n return proxy.subscribe.bind(proxy);\n}\n\n/**\n * Implement fan-out for any number of Observers attached via a subscribe\n * function.\n */\nclass ObserverProxy implements Observer {\n private observers: Array> | undefined = [];\n private unsubscribes: Unsubscribe[] = [];\n private onNoObservers: Executor | undefined;\n private observerCount = 0;\n // Micro-task scheduling by calling task.then().\n private task = Promise.resolve();\n private finalized = false;\n private finalError?: Error;\n\n /**\n * @param executor Function which can make calls to a single Observer\n * as a proxy.\n * @param onNoObservers Callback when count of Observers goes to zero.\n */\n constructor(executor: Executor, onNoObservers?: Executor) {\n this.onNoObservers = onNoObservers;\n // Call the executor asynchronously so subscribers that are called\n // synchronously after the creation of the subscribe function\n // can still receive the very first value generated in the executor.\n this.task\n .then(() => {\n executor(this);\n })\n .catch(e => {\n this.error(e);\n });\n }\n\n next(value: T): void {\n this.forEachObserver((observer: Observer) => {\n observer.next(value);\n });\n }\n\n error(error: Error): void {\n this.forEachObserver((observer: Observer) => {\n observer.error(error);\n });\n this.close(error);\n }\n\n complete(): void {\n this.forEachObserver((observer: Observer) => {\n observer.complete();\n });\n this.close();\n }\n\n /**\n * Subscribe function that can be used to add an Observer to the fan-out list.\n *\n * - We require that no event is sent to a subscriber sychronously to their\n * call to subscribe().\n */\n subscribe(\n nextOrObserver?: NextFn | PartialObserver,\n error?: ErrorFn,\n complete?: CompleteFn\n ): Unsubscribe {\n let observer: Observer;\n\n if (\n nextOrObserver === undefined &&\n error === undefined &&\n complete === undefined\n ) {\n throw new Error('Missing Observer.');\n }\n\n // Assemble an Observer object when passed as callback functions.\n if (\n implementsAnyMethods(nextOrObserver as { [key: string]: unknown }, [\n 'next',\n 'error',\n 'complete'\n ])\n ) {\n observer = nextOrObserver as Observer;\n } else {\n observer = {\n next: nextOrObserver as NextFn,\n error,\n complete\n } as Observer;\n }\n\n if (observer.next === undefined) {\n observer.next = noop as NextFn;\n }\n if (observer.error === undefined) {\n observer.error = noop as ErrorFn;\n }\n if (observer.complete === undefined) {\n observer.complete = noop as CompleteFn;\n }\n\n const unsub = this.unsubscribeOne.bind(this, this.observers!.length);\n\n // Attempt to subscribe to a terminated Observable - we\n // just respond to the Observer with the final error or complete\n // event.\n if (this.finalized) {\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n try {\n if (this.finalError) {\n observer.error(this.finalError);\n } else {\n observer.complete();\n }\n } catch (e) {\n // nothing\n }\n return;\n });\n }\n\n this.observers!.push(observer as Observer);\n\n return unsub;\n }\n\n // Unsubscribe is synchronous - we guarantee that no events are sent to\n // any unsubscribed Observer.\n private unsubscribeOne(i: number): void {\n if (this.observers === undefined || this.observers[i] === undefined) {\n return;\n }\n\n delete this.observers[i];\n\n this.observerCount -= 1;\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\n this.onNoObservers(this);\n }\n }\n\n private forEachObserver(fn: (observer: Observer) => void): void {\n if (this.finalized) {\n // Already closed by previous event....just eat the additional values.\n return;\n }\n\n // Since sendOne calls asynchronously - there is no chance that\n // this.observers will become undefined.\n for (let i = 0; i < this.observers!.length; i++) {\n this.sendOne(i, fn);\n }\n }\n\n // Call the Observer via one of it's callback function. We are careful to\n // confirm that the observe has not been unsubscribed since this asynchronous\n // function had been queued.\n private sendOne(i: number, fn: (observer: Observer) => void): void {\n // Execute the callback asynchronously\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n if (this.observers !== undefined && this.observers[i] !== undefined) {\n try {\n fn(this.observers[i]);\n } catch (e) {\n // Ignore exceptions raised in Observers or missing methods of an\n // Observer.\n // Log error to console. b/31404806\n if (typeof console !== 'undefined' && console.error) {\n console.error(e);\n }\n }\n }\n });\n }\n\n private close(err?: Error): void {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n if (err !== undefined) {\n this.finalError = err;\n }\n // Proxy is no longer needed - garbage collect references\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.task.then(() => {\n this.observers = undefined;\n this.onNoObservers = undefined;\n });\n }\n}\n\n/** Turn synchronous function into one called asynchronously. */\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function async(fn: Function, onError?: ErrorFn): Function {\n return (...args: unknown[]) => {\n Promise.resolve(true)\n .then(() => {\n fn(...args);\n })\n .catch((error: Error) => {\n if (onError) {\n onError(error);\n }\n });\n };\n}\n\n/**\n * Return true if the object passed in implements any of the named methods.\n */\nfunction implementsAnyMethods(\n obj: { [key: string]: unknown },\n methods: string[]\n): boolean {\n if (typeof obj !== 'object' || obj === null) {\n return false;\n }\n\n for (const method of methods) {\n if (method in obj && typeof obj[method] === 'function') {\n return true;\n }\n }\n\n return false;\n}\n\nfunction noop(): void {\n // do nothing\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from './assert';\n\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\n// so it's been modified.\n\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\n// pair).\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\n\n/**\n * @param {string} str\n * @return {Array}\n */\nexport const stringToByteArray = function (str: string): number[] {\n const out: number[] = [];\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i);\n\n // Is this the lead surrogate in a surrogate pair?\n if (c >= 0xd800 && c <= 0xdbff) {\n const high = c - 0xd800; // the high 10 bits.\n i++;\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\n c = 0x10000 + (high << 10) + low;\n }\n\n if (c < 128) {\n out[p++] = c;\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192;\n out[p++] = (c & 63) | 128;\n } else if (c < 65536) {\n out[p++] = (c >> 12) | 224;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n } else {\n out[p++] = (c >> 18) | 240;\n out[p++] = ((c >> 12) & 63) | 128;\n out[p++] = ((c >> 6) & 63) | 128;\n out[p++] = (c & 63) | 128;\n }\n }\n return out;\n};\n\n/**\n * Calculate length without actually converting; useful for doing cheaper validation.\n * @param {string} str\n * @return {number}\n */\nexport const stringLength = function (str: string): number {\n let p = 0;\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n if (c < 128) {\n p++;\n } else if (c < 2048) {\n p += 2;\n } else if (c >= 0xd800 && c <= 0xdbff) {\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\n p += 4;\n i++; // skip trail surrogate.\n } else {\n p += 3;\n }\n }\n return p;\n};\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The amount of milliseconds to exponentially increase.\n */\nconst DEFAULT_INTERVAL_MILLIS = 1000;\n\n/**\n * The factor to backoff by.\n * Should be a number greater than 1.\n */\nconst DEFAULT_BACKOFF_FACTOR = 2;\n\n/**\n * The maximum milliseconds to increase to.\n *\n *

Visible for testing\n */\nexport const MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\n\n/**\n * The percentage of backoff time to randomize by.\n * See\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\n * for context.\n *\n *

Visible for testing\n */\nexport const RANDOM_FACTOR = 0.5;\n\n/**\n * Based on the backoff method from\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\n */\nexport function calculateBackoffMillis(\n backoffCount: number,\n intervalMillis: number = DEFAULT_INTERVAL_MILLIS,\n backoffFactor: number = DEFAULT_BACKOFF_FACTOR\n): number {\n // Calculates an exponentially increasing value.\n // Deviation: calculates value from count and a constant interval, so we only need to save value\n // and count to restore state.\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\n\n // A random \"fuzz\" to avoid waves of retries.\n // Deviation: randomFactor is required.\n const randomWait = Math.round(\n // A fraction of the backoff value to add/subtract.\n // Deviation: changes multiplication order to improve readability.\n RANDOM_FACTOR *\n currBaseValue *\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\n // if we add or subtract.\n (Math.random() - 0.5) *\n 2\n );\n\n // Limits backoff to max to avoid effectively permanent backoff.\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Compat {\n _delegate: T;\n}\n\nexport function getModularInstance(\n service: Compat | ExpService\n): ExpService {\n if (service && (service as Compat)._delegate) {\n return (service as Compat)._delegate;\n } else {\n return service as ExpService;\n }\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 4c1.93 0 3.5 1.57 3.5 3.5S13.93 13 12 13s-3.5-1.57-3.5-3.5S10.07 6 12 6zm0 14c-2.03 0-4.43-.82-6.14-2.88C7.55 15.8 9.68 15 12 15s4.45.8 6.14 2.12C16.43 19.18 14.03 20 12 20z\"\n}), 'AccountCircle');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10h-4v4h-2v-4H7v-2h4V7h2v4h4v2z\"\n}), 'AddBox');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z\"\n}), 'ArrowBack');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m20 12-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8-8 8z\"\n}), 'ArrowUpward');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 4h-1V2h-2v2H8V2H6v2H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zM9 14H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2zm-8 4H7v-2h2v2zm4 0h-2v-2h2v2zm4 0h-2v-2h2v2z\"\n}), 'CalendarMonth');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)([/*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20 3h-1V1h-2v2H7V1H5v2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 2v3H4V5h16zM4 21V10h16v11H4z\"\n}, \"0\"), /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M4 5.01h16V8H4z\",\n opacity: \".3\"\n}, \"1\")], 'CalendarTodayTwoTone');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z\"\n}), 'Check');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zm2.46-7.12 1.41-1.41L12 12.59l2.12-2.12 1.41 1.41L13.41 14l2.12 2.12-1.41 1.41L12 15.41l-2.12 2.12-1.41-1.41L10.59 14l-2.13-2.12zM15.5 4l-1-1h-5l-1 1H5v2h14V4z\"\n}), 'DeleteForever');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m15 5-1.41 1.41L18.17 11H2v2h16.17l-4.59 4.59L15 19l7-7-7-7z\"\n}), 'East');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M20.57 14.86 22 13.43 20.57 12 17 15.57 8.43 7 12 3.43 10.57 2 9.14 3.43 7.71 2 5.57 4.14 4.14 2.71 2.71 4.14l1.43 1.43L2 7.71l1.43 1.43L2 10.57 3.43 12 7 8.43 15.57 17 12 20.57 13.43 22l1.43-1.43L16.29 22l2.14-2.14 1.43 1.43 1.43-1.43-1.43-1.43L22 16.29z\"\n}), 'FitnessCenter');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\"\n}), 'MoreVert');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7l-4-4zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3zm3-10H5V5h10v4z\"\n}), 'Save');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z\"\n}), 'Search');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z\"\n}), 'Settings');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z\"\n}), 'Visibility');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z\"\n}), 'VisibilityOff');\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\nvar _jsxRuntime = require(\"react/jsx-runtime\");\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m9 19 1.41-1.41L5.83 13H22v-2H5.83l4.59-4.59L9 5l-7 7 7 7z\"\n}), 'West');\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function () {\n return _utils.createSvgIcon;\n }\n});\nvar _utils = require(\"@mui/material/utils\");","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function createMixins(breakpoints, mixins) {\n return _extends({\n toolbar: {\n minHeight: 56,\n [breakpoints.up('xs')]: {\n '@media (orientation: landscape)': {\n minHeight: 48\n }\n },\n [breakpoints.up('sm')]: {\n minHeight: 64\n }\n }\n }, mixins);\n}","const common = {\n black: '#000',\n white: '#fff'\n};\nexport default common;","const grey = {\n 50: '#fafafa',\n 100: '#f5f5f5',\n 200: '#eeeeee',\n 300: '#e0e0e0',\n 400: '#bdbdbd',\n 500: '#9e9e9e',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n A100: '#f5f5f5',\n A200: '#eeeeee',\n A400: '#bdbdbd',\n A700: '#616161'\n};\nexport default grey;","const purple = {\n 50: '#f3e5f5',\n 100: '#e1bee7',\n 200: '#ce93d8',\n 300: '#ba68c8',\n 400: '#ab47bc',\n 500: '#9c27b0',\n 600: '#8e24aa',\n 700: '#7b1fa2',\n 800: '#6a1b9a',\n 900: '#4a148c',\n A100: '#ea80fc',\n A200: '#e040fb',\n A400: '#d500f9',\n A700: '#aa00ff'\n};\nexport default purple;","const red = {\n 50: '#ffebee',\n 100: '#ffcdd2',\n 200: '#ef9a9a',\n 300: '#e57373',\n 400: '#ef5350',\n 500: '#f44336',\n 600: '#e53935',\n 700: '#d32f2f',\n 800: '#c62828',\n 900: '#b71c1c',\n A100: '#ff8a80',\n A200: '#ff5252',\n A400: '#ff1744',\n A700: '#d50000'\n};\nexport default red;","const orange = {\n 50: '#fff3e0',\n 100: '#ffe0b2',\n 200: '#ffcc80',\n 300: '#ffb74d',\n 400: '#ffa726',\n 500: '#ff9800',\n 600: '#fb8c00',\n 700: '#f57c00',\n 800: '#ef6c00',\n 900: '#e65100',\n A100: '#ffd180',\n A200: '#ffab40',\n A400: '#ff9100',\n A700: '#ff6d00'\n};\nexport default orange;","const blue = {\n 50: '#e3f2fd',\n 100: '#bbdefb',\n 200: '#90caf9',\n 300: '#64b5f6',\n 400: '#42a5f5',\n 500: '#2196f3',\n 600: '#1e88e5',\n 700: '#1976d2',\n 800: '#1565c0',\n 900: '#0d47a1',\n A100: '#82b1ff',\n A200: '#448aff',\n A400: '#2979ff',\n A700: '#2962ff'\n};\nexport default blue;","const lightBlue = {\n 50: '#e1f5fe',\n 100: '#b3e5fc',\n 200: '#81d4fa',\n 300: '#4fc3f7',\n 400: '#29b6f6',\n 500: '#03a9f4',\n 600: '#039be5',\n 700: '#0288d1',\n 800: '#0277bd',\n 900: '#01579b',\n A100: '#80d8ff',\n A200: '#40c4ff',\n A400: '#00b0ff',\n A700: '#0091ea'\n};\nexport default lightBlue;","const green = {\n 50: '#e8f5e9',\n 100: '#c8e6c9',\n 200: '#a5d6a7',\n 300: '#81c784',\n 400: '#66bb6a',\n 500: '#4caf50',\n 600: '#43a047',\n 700: '#388e3c',\n 800: '#2e7d32',\n 900: '#1b5e20',\n A100: '#b9f6ca',\n A200: '#69f0ae',\n A400: '#00e676',\n A700: '#00c853'\n};\nexport default green;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"mode\", \"contrastThreshold\", \"tonalOffset\"];\nimport { deepmerge } from '@mui/utils';\nimport { darken, getContrastRatio, lighten } from '@mui/system';\nimport common from '../colors/common';\nimport grey from '../colors/grey';\nimport purple from '../colors/purple';\nimport red from '../colors/red';\nimport orange from '../colors/orange';\nimport blue from '../colors/blue';\nimport lightBlue from '../colors/lightBlue';\nimport green from '../colors/green';\nexport const light = {\n // The colors used to style the text.\n text: {\n // The most important text.\n primary: 'rgba(0, 0, 0, 0.87)',\n // Secondary text.\n secondary: 'rgba(0, 0, 0, 0.6)',\n // Disabled text have even lower visual prominence.\n disabled: 'rgba(0, 0, 0, 0.38)'\n },\n // The color used to divide different elements.\n divider: 'rgba(0, 0, 0, 0.12)',\n // The background colors used to style the surfaces.\n // Consistency between these values is important.\n background: {\n paper: common.white,\n default: common.white\n },\n // The colors used to style the action elements.\n action: {\n // The color of an active action like an icon button.\n active: 'rgba(0, 0, 0, 0.54)',\n // The color of an hovered action.\n hover: 'rgba(0, 0, 0, 0.04)',\n hoverOpacity: 0.04,\n // The color of a selected action.\n selected: 'rgba(0, 0, 0, 0.08)',\n selectedOpacity: 0.08,\n // The color of a disabled action.\n disabled: 'rgba(0, 0, 0, 0.26)',\n // The background color of a disabled action.\n disabledBackground: 'rgba(0, 0, 0, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(0, 0, 0, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.12\n }\n};\nexport const dark = {\n text: {\n primary: common.white,\n secondary: 'rgba(255, 255, 255, 0.7)',\n disabled: 'rgba(255, 255, 255, 0.5)',\n icon: 'rgba(255, 255, 255, 0.5)'\n },\n divider: 'rgba(255, 255, 255, 0.12)',\n background: {\n paper: '#121212',\n default: '#121212'\n },\n action: {\n active: common.white,\n hover: 'rgba(255, 255, 255, 0.08)',\n hoverOpacity: 0.08,\n selected: 'rgba(255, 255, 255, 0.16)',\n selectedOpacity: 0.16,\n disabled: 'rgba(255, 255, 255, 0.3)',\n disabledBackground: 'rgba(255, 255, 255, 0.12)',\n disabledOpacity: 0.38,\n focus: 'rgba(255, 255, 255, 0.12)',\n focusOpacity: 0.12,\n activatedOpacity: 0.24\n }\n};\nfunction addLightOrDark(intent, direction, shade, tonalOffset) {\n const tonalOffsetLight = tonalOffset.light || tonalOffset;\n const tonalOffsetDark = tonalOffset.dark || tonalOffset * 1.5;\n if (!intent[direction]) {\n if (intent.hasOwnProperty(shade)) {\n intent[direction] = intent[shade];\n } else if (direction === 'light') {\n intent.light = lighten(intent.main, tonalOffsetLight);\n } else if (direction === 'dark') {\n intent.dark = darken(intent.main, tonalOffsetDark);\n }\n }\n}\nfunction getDefaultPrimary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: blue[200],\n light: blue[50],\n dark: blue[400]\n };\n }\n return {\n main: blue[700],\n light: blue[400],\n dark: blue[800]\n };\n}\nfunction getDefaultSecondary(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: purple[200],\n light: purple[50],\n dark: purple[400]\n };\n }\n return {\n main: purple[500],\n light: purple[300],\n dark: purple[700]\n };\n}\nfunction getDefaultError(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: red[500],\n light: red[300],\n dark: red[700]\n };\n }\n return {\n main: red[700],\n light: red[400],\n dark: red[800]\n };\n}\nfunction getDefaultInfo(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: lightBlue[400],\n light: lightBlue[300],\n dark: lightBlue[700]\n };\n }\n return {\n main: lightBlue[700],\n light: lightBlue[500],\n dark: lightBlue[900]\n };\n}\nfunction getDefaultSuccess(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: green[400],\n light: green[300],\n dark: green[700]\n };\n }\n return {\n main: green[800],\n light: green[500],\n dark: green[900]\n };\n}\nfunction getDefaultWarning(mode = 'light') {\n if (mode === 'dark') {\n return {\n main: orange[400],\n light: orange[300],\n dark: orange[700]\n };\n }\n return {\n main: '#ed6c02',\n // closest to orange[800] that pass 3:1.\n light: orange[500],\n dark: orange[900]\n };\n}\nexport default function createPalette(palette) {\n const {\n mode = 'light',\n contrastThreshold = 3,\n tonalOffset = 0.2\n } = palette,\n other = _objectWithoutPropertiesLoose(palette, _excluded);\n const primary = palette.primary || getDefaultPrimary(mode);\n const secondary = palette.secondary || getDefaultSecondary(mode);\n const error = palette.error || getDefaultError(mode);\n const info = palette.info || getDefaultInfo(mode);\n const success = palette.success || getDefaultSuccess(mode);\n const warning = palette.warning || getDefaultWarning(mode);\n\n // Use the same logic as\n // Bootstrap: https://github.com/twbs/bootstrap/blob/1d6e3710dd447de1a200f29e8fa521f8a0908f70/scss/_functions.scss#L59\n // and material-components-web https://github.com/material-components/material-components-web/blob/ac46b8863c4dab9fc22c4c662dc6bd1b65dd652f/packages/mdc-theme/_functions.scss#L54\n function getContrastText(background) {\n const contrastText = getContrastRatio(background, dark.text.primary) >= contrastThreshold ? dark.text.primary : light.text.primary;\n if (process.env.NODE_ENV !== 'production') {\n const contrast = getContrastRatio(background, contrastText);\n if (contrast < 3) {\n console.error([`MUI: The contrast ratio of ${contrast}:1 for ${contrastText} on ${background}`, 'falls below the WCAG recommended absolute minimum contrast ratio of 3:1.', 'https://www.w3.org/TR/2008/REC-WCAG20-20081211/#visual-audio-contrast-contrast'].join('\\n'));\n }\n }\n return contrastText;\n }\n const augmentColor = ({\n color,\n name,\n mainShade = 500,\n lightShade = 300,\n darkShade = 700\n }) => {\n color = _extends({}, color);\n if (!color.main && color[mainShade]) {\n color.main = color[mainShade];\n }\n if (!color.hasOwnProperty('main')) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\nThe color object needs to have a \\`main\\` property or a \\`${mainShade}\\` property.` : _formatMuiErrorMessage(11, name ? ` (${name})` : '', mainShade));\n }\n if (typeof color.main !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The color${name ? ` (${name})` : ''} provided to augmentColor(color) is invalid.\n\\`color.main\\` should be a string, but \\`${JSON.stringify(color.main)}\\` was provided instead.\n\nDid you intend to use one of the following approaches?\n\nimport { green } from \"@mui/material/colors\";\n\nconst theme1 = createTheme({ palette: {\n primary: green,\n} });\n\nconst theme2 = createTheme({ palette: {\n primary: { main: green[500] },\n} });` : _formatMuiErrorMessage(12, name ? ` (${name})` : '', JSON.stringify(color.main)));\n }\n addLightOrDark(color, 'light', lightShade, tonalOffset);\n addLightOrDark(color, 'dark', darkShade, tonalOffset);\n if (!color.contrastText) {\n color.contrastText = getContrastText(color.main);\n }\n return color;\n };\n const modes = {\n dark,\n light\n };\n if (process.env.NODE_ENV !== 'production') {\n if (!modes[mode]) {\n console.error(`MUI: The palette mode \\`${mode}\\` is not supported.`);\n }\n }\n const paletteOutput = deepmerge(_extends({\n // A collection of common colors.\n common: _extends({}, common),\n // prevent mutable object.\n // The palette mode, can be light or dark.\n mode,\n // The colors used to represent primary interface elements for a user.\n primary: augmentColor({\n color: primary,\n name: 'primary'\n }),\n // The colors used to represent secondary interface elements for a user.\n secondary: augmentColor({\n color: secondary,\n name: 'secondary',\n mainShade: 'A400',\n lightShade: 'A200',\n darkShade: 'A700'\n }),\n // The colors used to represent interface elements that the user should be made aware of.\n error: augmentColor({\n color: error,\n name: 'error'\n }),\n // The colors used to represent potentially dangerous actions or important messages.\n warning: augmentColor({\n color: warning,\n name: 'warning'\n }),\n // The colors used to present information to the user that is neutral and not necessarily important.\n info: augmentColor({\n color: info,\n name: 'info'\n }),\n // The colors used to indicate the successful completion of an action that user triggered.\n success: augmentColor({\n color: success,\n name: 'success'\n }),\n // The grey colors.\n grey,\n // Used by `getContrastText()` to maximize the contrast between\n // the background and the text.\n contrastThreshold,\n // Takes a background color and returns the text color that maximizes the contrast.\n getContrastText,\n // Generate a rich color object.\n augmentColor,\n // Used by the functions below to shift a color's luminance by approximately\n // two indexes within its tonal palette.\n // E.g., shift from Red 500 to Red 300 or Red 700.\n tonalOffset\n }, modes[mode]), other);\n return paletteOutput;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"fontFamily\", \"fontSize\", \"fontWeightLight\", \"fontWeightRegular\", \"fontWeightMedium\", \"fontWeightBold\", \"htmlFontSize\", \"allVariants\", \"pxToRem\"];\nimport { deepmerge } from '@mui/utils';\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst caseAllCaps = {\n textTransform: 'uppercase'\n};\nconst defaultFontFamily = '\"Roboto\", \"Helvetica\", \"Arial\", sans-serif';\n\n/**\n * @see @link{https://m2.material.io/design/typography/the-type-system.html}\n * @see @link{https://m2.material.io/design/typography/understanding-typography.html}\n */\nexport default function createTypography(palette, typography) {\n const _ref = typeof typography === 'function' ? typography(palette) : typography,\n {\n fontFamily = defaultFontFamily,\n // The default font size of the Material Specification.\n fontSize = 14,\n // px\n fontWeightLight = 300,\n fontWeightRegular = 400,\n fontWeightMedium = 500,\n fontWeightBold = 700,\n // Tell MUI what's the font-size on the html element.\n // 16px is the default font-size used by browsers.\n htmlFontSize = 16,\n // Apply the CSS properties to all the variants.\n allVariants,\n pxToRem: pxToRem2\n } = _ref,\n other = _objectWithoutPropertiesLoose(_ref, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n if (typeof fontSize !== 'number') {\n console.error('MUI: `fontSize` is required to be a number.');\n }\n if (typeof htmlFontSize !== 'number') {\n console.error('MUI: `htmlFontSize` is required to be a number.');\n }\n }\n const coef = fontSize / 14;\n const pxToRem = pxToRem2 || (size => `${size / htmlFontSize * coef}rem`);\n const buildVariant = (fontWeight, size, lineHeight, letterSpacing, casing) => _extends({\n fontFamily,\n fontWeight,\n fontSize: pxToRem(size),\n // Unitless following https://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/\n lineHeight\n }, fontFamily === defaultFontFamily ? {\n letterSpacing: `${round(letterSpacing / size)}em`\n } : {}, casing, allVariants);\n const variants = {\n h1: buildVariant(fontWeightLight, 96, 1.167, -1.5),\n h2: buildVariant(fontWeightLight, 60, 1.2, -0.5),\n h3: buildVariant(fontWeightRegular, 48, 1.167, 0),\n h4: buildVariant(fontWeightRegular, 34, 1.235, 0.25),\n h5: buildVariant(fontWeightRegular, 24, 1.334, 0),\n h6: buildVariant(fontWeightMedium, 20, 1.6, 0.15),\n subtitle1: buildVariant(fontWeightRegular, 16, 1.75, 0.15),\n subtitle2: buildVariant(fontWeightMedium, 14, 1.57, 0.1),\n body1: buildVariant(fontWeightRegular, 16, 1.5, 0.15),\n body2: buildVariant(fontWeightRegular, 14, 1.43, 0.15),\n button: buildVariant(fontWeightMedium, 14, 1.75, 0.4, caseAllCaps),\n caption: buildVariant(fontWeightRegular, 12, 1.66, 0.4),\n overline: buildVariant(fontWeightRegular, 12, 2.66, 1, caseAllCaps),\n inherit: {\n fontFamily: 'inherit',\n fontWeight: 'inherit',\n fontSize: 'inherit',\n lineHeight: 'inherit',\n letterSpacing: 'inherit'\n }\n };\n return deepmerge(_extends({\n htmlFontSize,\n pxToRem,\n fontFamily,\n fontSize,\n fontWeightLight,\n fontWeightRegular,\n fontWeightMedium,\n fontWeightBold\n }, variants), other, {\n clone: false // No need to clone deep\n });\n}","const shadowKeyUmbraOpacity = 0.2;\nconst shadowKeyPenumbraOpacity = 0.14;\nconst shadowAmbientShadowOpacity = 0.12;\nfunction createShadow(...px) {\n return [`${px[0]}px ${px[1]}px ${px[2]}px ${px[3]}px rgba(0,0,0,${shadowKeyUmbraOpacity})`, `${px[4]}px ${px[5]}px ${px[6]}px ${px[7]}px rgba(0,0,0,${shadowKeyPenumbraOpacity})`, `${px[8]}px ${px[9]}px ${px[10]}px ${px[11]}px rgba(0,0,0,${shadowAmbientShadowOpacity})`].join(',');\n}\n\n// Values from https://github.com/material-components/material-components-web/blob/be8747f94574669cb5e7add1a7c54fa41a89cec7/packages/mdc-elevation/_variables.scss\nconst shadows = ['none', createShadow(0, 2, 1, -1, 0, 1, 1, 0, 0, 1, 3, 0), createShadow(0, 3, 1, -2, 0, 2, 2, 0, 0, 1, 5, 0), createShadow(0, 3, 3, -2, 0, 3, 4, 0, 0, 1, 8, 0), createShadow(0, 2, 4, -1, 0, 4, 5, 0, 0, 1, 10, 0), createShadow(0, 3, 5, -1, 0, 5, 8, 0, 0, 1, 14, 0), createShadow(0, 3, 5, -1, 0, 6, 10, 0, 0, 1, 18, 0), createShadow(0, 4, 5, -2, 0, 7, 10, 1, 0, 2, 16, 1), createShadow(0, 5, 5, -3, 0, 8, 10, 1, 0, 3, 14, 2), createShadow(0, 5, 6, -3, 0, 9, 12, 1, 0, 3, 16, 2), createShadow(0, 6, 6, -3, 0, 10, 14, 1, 0, 4, 18, 3), createShadow(0, 6, 7, -4, 0, 11, 15, 1, 0, 4, 20, 3), createShadow(0, 7, 8, -4, 0, 12, 17, 2, 0, 5, 22, 4), createShadow(0, 7, 8, -4, 0, 13, 19, 2, 0, 5, 24, 4), createShadow(0, 7, 9, -4, 0, 14, 21, 2, 0, 5, 26, 4), createShadow(0, 8, 9, -5, 0, 15, 22, 2, 0, 6, 28, 5), createShadow(0, 8, 10, -5, 0, 16, 24, 2, 0, 6, 30, 5), createShadow(0, 8, 11, -5, 0, 17, 26, 2, 0, 6, 32, 5), createShadow(0, 9, 11, -5, 0, 18, 28, 2, 0, 7, 34, 6), createShadow(0, 9, 12, -6, 0, 19, 29, 2, 0, 7, 36, 6), createShadow(0, 10, 13, -6, 0, 20, 31, 3, 0, 8, 38, 7), createShadow(0, 10, 13, -6, 0, 21, 33, 3, 0, 8, 40, 7), createShadow(0, 10, 14, -6, 0, 22, 35, 3, 0, 8, 42, 7), createShadow(0, 11, 14, -7, 0, 23, 36, 3, 0, 9, 44, 8), createShadow(0, 11, 15, -7, 0, 24, 38, 3, 0, 9, 46, 8)];\nexport default shadows;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"duration\", \"easing\", \"delay\"];\n// Follow https://material.google.com/motion/duration-easing.html#duration-easing-natural-easing-curves\n// to learn the context in which each easing should be used.\nexport const easing = {\n // This is the most common easing curve.\n easeInOut: 'cubic-bezier(0.4, 0, 0.2, 1)',\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: 'cubic-bezier(0.0, 0, 0.2, 1)',\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: 'cubic-bezier(0.4, 0, 1, 1)',\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: 'cubic-bezier(0.4, 0, 0.6, 1)'\n};\n\n// Follow https://m2.material.io/guidelines/motion/duration-easing.html#duration-easing-common-durations\n// to learn when use what timing\nexport const duration = {\n shortest: 150,\n shorter: 200,\n short: 250,\n // most basic recommended timing\n standard: 300,\n // this is to be used in complex animations\n complex: 375,\n // recommended when something is entering screen\n enteringScreen: 225,\n // recommended when something is leaving screen\n leavingScreen: 195\n};\nfunction formatMs(milliseconds) {\n return `${Math.round(milliseconds)}ms`;\n}\nfunction getAutoHeightDuration(height) {\n if (!height) {\n return 0;\n }\n const constant = height / 36;\n\n // https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\nexport default function createTransitions(inputTransitions) {\n const mergedEasing = _extends({}, easing, inputTransitions.easing);\n const mergedDuration = _extends({}, duration, inputTransitions.duration);\n const create = (props = ['all'], options = {}) => {\n const {\n duration: durationOption = mergedDuration.standard,\n easing: easingOption = mergedEasing.easeInOut,\n delay = 0\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (process.env.NODE_ENV !== 'production') {\n const isString = value => typeof value === 'string';\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n const isNumber = value => !isNaN(parseFloat(value));\n if (!isString(props) && !Array.isArray(props)) {\n console.error('MUI: Argument \"props\" must be a string or Array.');\n }\n if (!isNumber(durationOption) && !isString(durationOption)) {\n console.error(`MUI: Argument \"duration\" must be a number or a string but found ${durationOption}.`);\n }\n if (!isString(easingOption)) {\n console.error('MUI: Argument \"easing\" must be a string.');\n }\n if (!isNumber(delay) && !isString(delay)) {\n console.error('MUI: Argument \"delay\" must be a number or a string.');\n }\n if (Object.keys(other).length !== 0) {\n console.error(`MUI: Unrecognized argument(s) [${Object.keys(other).join(',')}].`);\n }\n }\n return (Array.isArray(props) ? props : [props]).map(animatedProp => `${animatedProp} ${typeof durationOption === 'string' ? durationOption : formatMs(durationOption)} ${easingOption} ${typeof delay === 'string' ? delay : formatMs(delay)}`).join(',');\n };\n return _extends({\n getAutoHeightDuration,\n create\n }, inputTransitions, {\n easing: mergedEasing,\n duration: mergedDuration\n });\n}","// We need to centralize the zIndex definitions as they work\n// like global values in the browser.\nconst zIndex = {\n mobileStepper: 1000,\n fab: 1050,\n speedDial: 1050,\n appBar: 1100,\n drawer: 1200,\n modal: 1300,\n snackbar: 1400,\n tooltip: 1500\n};\nexport default zIndex;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"breakpoints\", \"mixins\", \"spacing\", \"palette\", \"transitions\", \"typography\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport { createTheme as systemCreateTheme, unstable_defaultSxConfig as defaultSxConfig, unstable_styleFunctionSx as styleFunctionSx } from '@mui/system';\nimport generateUtilityClass from '../generateUtilityClass';\nimport createMixins from './createMixins';\nimport createPalette from './createPalette';\nimport createTypography from './createTypography';\nimport shadows from './shadows';\nimport createTransitions from './createTransitions';\nimport zIndex from './zIndex';\nfunction createTheme(options = {}, ...args) {\n const {\n mixins: mixinsInput = {},\n palette: paletteInput = {},\n transitions: transitionsInput = {},\n typography: typographyInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n if (options.vars) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`vars\\` is a private field used for CSS variables support.\nPlease use another name.` : _formatMuiErrorMessage(18));\n }\n const palette = createPalette(paletteInput);\n const systemTheme = systemCreateTheme(options);\n let muiTheme = deepmerge(systemTheme, {\n mixins: createMixins(systemTheme.breakpoints, mixinsInput),\n palette,\n // Don't use [...shadows] until you've verified its transpiled code is not invoking the iterator protocol.\n shadows: shadows.slice(),\n typography: createTypography(palette, typographyInput),\n transitions: createTransitions(transitionsInput),\n zIndex: _extends({}, zIndex)\n });\n muiTheme = deepmerge(muiTheme, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n if (process.env.NODE_ENV !== 'production') {\n // TODO v6: Refactor to use globalStateClassesMapping from @mui/utils once `readOnly` state class is used in Rating component.\n const stateClasses = ['active', 'checked', 'completed', 'disabled', 'error', 'expanded', 'focused', 'focusVisible', 'required', 'selected'];\n const traverse = (node, component) => {\n let key;\n\n // eslint-disable-next-line guard-for-in, no-restricted-syntax\n for (key in node) {\n const child = node[key];\n if (stateClasses.indexOf(key) !== -1 && Object.keys(child).length > 0) {\n if (process.env.NODE_ENV !== 'production') {\n const stateClass = generateUtilityClass('', key);\n console.error([`MUI: The \\`${component}\\` component increases ` + `the CSS specificity of the \\`${key}\\` internal state.`, 'You can not override it like this: ', JSON.stringify(node, null, 2), '', `Instead, you need to use the '&.${stateClass}' syntax:`, JSON.stringify({\n root: {\n [`&.${stateClass}`]: child\n }\n }, null, 2), '', 'https://mui.com/r/state-classes-guide'].join('\\n'));\n }\n // Remove the style to prevent global conflicts.\n node[key] = {};\n }\n }\n };\n Object.keys(muiTheme.components).forEach(component => {\n const styleOverrides = muiTheme.components[component].styleOverrides;\n if (styleOverrides && component.indexOf('Mui') === 0) {\n traverse(styleOverrides, component);\n }\n });\n }\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nlet warnedOnce = false;\nexport function createMuiTheme(...args) {\n if (process.env.NODE_ENV !== 'production') {\n if (!warnedOnce) {\n warnedOnce = true;\n console.error(['MUI: the createMuiTheme function was renamed to createTheme.', '', \"You should use `import { createTheme } from '@mui/material/styles'`\"].join('\\n'));\n }\n }\n return createTheme(...args);\n}\nexport default createTheme;","import createTheme from './createTheme';\nconst defaultTheme = createTheme();\nexport default defaultTheme;","import { createStyled, shouldForwardProp } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport const rootShouldForwardProp = prop => shouldForwardProp(prop) && prop !== 'classes';\nexport const slotShouldForwardProp = shouldForwardProp;\nconst styled = createStyled({\n defaultTheme,\n rootShouldForwardProp\n});\nexport default styled;","import { useThemeProps as systemUseThemeProps } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useThemeProps({\n props,\n name\n}) {\n return systemUseThemeProps({\n props,\n name,\n defaultTheme\n });\n}","import { unstable_capitalize as capitalize } from '@mui/utils';\nexport default capitalize;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSvgIconUtilityClass(slot) {\n return generateUtilityClass('MuiSvgIcon', slot);\n}\nconst svgIconClasses = generateUtilityClasses('MuiSvgIcon', ['root', 'colorPrimary', 'colorSecondary', 'colorAction', 'colorError', 'colorDisabled', 'fontSizeInherit', 'fontSizeSmall', 'fontSizeMedium', 'fontSizeLarge']);\nexport default svgIconClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"fontSize\", \"htmlColor\", \"inheritViewBox\", \"titleAccess\", \"viewBox\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getSvgIconUtilityClass } from './svgIconClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n fontSize,\n classes\n } = ownerState;\n const slots = {\n root: ['root', color !== 'inherit' && `color${capitalize(color)}`, `fontSize${capitalize(fontSize)}`]\n };\n return composeClasses(slots, getSvgIconUtilityClass, classes);\n};\nconst SvgIconRoot = styled('svg', {\n name: 'MuiSvgIcon',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'inherit' && styles[`color${capitalize(ownerState.color)}`], styles[`fontSize${capitalize(ownerState.fontSize)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$transitions, _theme$transitions$cr, _theme$transitions2, _theme$transitions2$d, _theme$typography, _theme$typography$pxT, _theme$typography2, _theme$typography2$px, _theme$typography3, _theme$typography3$px, _palette$ownerState$c, _palette, _palette$ownerState$c2, _palette2, _palette2$action, _palette3, _palette3$action;\n return {\n userSelect: 'none',\n width: '1em',\n height: '1em',\n display: 'inline-block',\n fill: 'currentColor',\n flexShrink: 0,\n transition: (_theme$transitions = theme.transitions) == null ? void 0 : (_theme$transitions$cr = _theme$transitions.create) == null ? void 0 : _theme$transitions$cr.call(_theme$transitions, 'fill', {\n duration: (_theme$transitions2 = theme.transitions) == null ? void 0 : (_theme$transitions2$d = _theme$transitions2.duration) == null ? void 0 : _theme$transitions2$d.shorter\n }),\n fontSize: {\n inherit: 'inherit',\n small: ((_theme$typography = theme.typography) == null ? void 0 : (_theme$typography$pxT = _theme$typography.pxToRem) == null ? void 0 : _theme$typography$pxT.call(_theme$typography, 20)) || '1.25rem',\n medium: ((_theme$typography2 = theme.typography) == null ? void 0 : (_theme$typography2$px = _theme$typography2.pxToRem) == null ? void 0 : _theme$typography2$px.call(_theme$typography2, 24)) || '1.5rem',\n large: ((_theme$typography3 = theme.typography) == null ? void 0 : (_theme$typography3$px = _theme$typography3.pxToRem) == null ? void 0 : _theme$typography3$px.call(_theme$typography3, 35)) || '2.1875rem'\n }[ownerState.fontSize],\n // TODO v5 deprecate, v6 remove for sx\n color: (_palette$ownerState$c = (_palette = (theme.vars || theme).palette) == null ? void 0 : (_palette$ownerState$c2 = _palette[ownerState.color]) == null ? void 0 : _palette$ownerState$c2.main) != null ? _palette$ownerState$c : {\n action: (_palette2 = (theme.vars || theme).palette) == null ? void 0 : (_palette2$action = _palette2.action) == null ? void 0 : _palette2$action.active,\n disabled: (_palette3 = (theme.vars || theme).palette) == null ? void 0 : (_palette3$action = _palette3.action) == null ? void 0 : _palette3$action.disabled,\n inherit: undefined\n }[ownerState.color]\n };\n});\nconst SvgIcon = /*#__PURE__*/React.forwardRef(function SvgIcon(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSvgIcon'\n });\n const {\n children,\n className,\n color = 'inherit',\n component = 'svg',\n fontSize = 'medium',\n htmlColor,\n inheritViewBox = false,\n titleAccess,\n viewBox = '0 0 24 24'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n fontSize,\n instanceFontSize: inProps.fontSize,\n inheritViewBox,\n viewBox\n });\n const more = {};\n if (!inheritViewBox) {\n more.viewBox = viewBox;\n }\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(SvgIconRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n focusable: \"false\",\n color: htmlColor,\n \"aria-hidden\": titleAccess ? undefined : true,\n role: titleAccess ? 'img' : undefined,\n ref: ref\n }, more, other, {\n ownerState: ownerState,\n children: [children, titleAccess ? /*#__PURE__*/_jsx(\"title\", {\n children: titleAccess\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? SvgIcon.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Node passed into the SVG element.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * You can use the `htmlColor` prop to apply a color attribute to the SVG element.\n * @default 'inherit'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.\n * @default 'medium'\n */\n fontSize: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'large', 'medium', 'small']), PropTypes.string]),\n /**\n * Applies a color attribute to the SVG element.\n */\n htmlColor: PropTypes.string,\n /**\n * If `true`, the root node will inherit the custom `component`'s viewBox and the `viewBox`\n * prop will be ignored.\n * Useful when you want to reference a custom `component` and have `SvgIcon` pass that\n * `component`'s viewBox to the root node.\n * @default false\n */\n inheritViewBox: PropTypes.bool,\n /**\n * The shape-rendering attribute. The behavior of the different options is described on the\n * [MDN Web Docs](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/shape-rendering).\n * If you are having issues with blurry icons you should investigate this prop.\n */\n shapeRendering: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Provides a human-readable title for the element that contains it.\n * https://www.w3.org/TR/SVG-access/#Equivalent\n */\n titleAccess: PropTypes.string,\n /**\n * Allows you to redefine what the coordinates without units mean inside an SVG element.\n * For example, if the SVG element is 500 (width) by 200 (height),\n * and you pass viewBox=\"0 0 50 20\",\n * this means that the coordinates inside the SVG will go from the top left corner (0,0)\n * to bottom right (50,20) and each unit will be worth 10px.\n * @default '0 0 24 24'\n */\n viewBox: PropTypes.string\n} : void 0;\nSvgIcon.muiName = 'SvgIcon';\nexport default SvgIcon;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport SvgIcon from '../SvgIcon';\n\n/**\n * Private module reserved for @mui packages.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createSvgIcon(path, displayName) {\n function Component(props, ref) {\n return /*#__PURE__*/_jsx(SvgIcon, _extends({\n \"data-testid\": `${displayName}Icon`,\n ref: ref\n }, props, {\n children: path\n }));\n }\n if (process.env.NODE_ENV !== 'production') {\n // Need to set `displayName` on the inner component for React.memo.\n // React prior to 16.14 ignores `displayName` on the wrapper.\n Component.displayName = `${displayName}Icon`;\n }\n Component.muiName = SvgIcon.muiName;\n return /*#__PURE__*/React.memo( /*#__PURE__*/React.forwardRef(Component));\n}","import { unstable_debounce as debounce } from '@mui/utils';\nexport default debounce;","import { unstable_createChainedFunction as createChainedFunction } from '@mui/utils';\nexport default createChainedFunction;","import { unstable_deprecatedPropType as deprecatedPropType } from '@mui/utils';\nexport default deprecatedPropType;","export default function deprecatedPropType(validator, reason) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n return (props, propName, componentName, location, propFullName) => {\n const componentNameSafe = componentName || '<>';\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The ${location} \\`${propFullNameSafe}\\` of ` + `\\`${componentNameSafe}\\` is deprecated. ${reason}`);\n }\n return null;\n };\n}","import { unstable_requirePropFactory as requirePropFactory } from '@mui/utils';\nexport default requirePropFactory;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport default function requirePropFactory(componentNameInError, Component) {\n if (process.env.NODE_ENV === 'production') {\n return () => null;\n }\n\n // eslint-disable-next-line react/forbid-foreign-prop-types\n const prevPropTypes = Component ? _extends({}, Component.propTypes) : null;\n const requireProp = requiredProp => (props, propName, componentName, location, propFullName, ...args) => {\n const propFullNameSafe = propFullName || propName;\n const defaultTypeChecker = prevPropTypes == null ? void 0 : prevPropTypes[propFullNameSafe];\n if (defaultTypeChecker) {\n const typeCheckerResult = defaultTypeChecker(props, propName, componentName, location, propFullName, ...args);\n if (typeCheckerResult) {\n return typeCheckerResult;\n }\n }\n if (typeof props[propName] !== 'undefined' && !props[requiredProp]) {\n return new Error(`The prop \\`${propFullNameSafe}\\` of ` + `\\`${componentNameInError}\\` can only be used together with the \\`${requiredProp}\\` prop.`);\n }\n return null;\n };\n return requireProp;\n}","import { unstable_setRef as setRef } from '@mui/utils';\nexport default setRef;","import { unstable_unsupportedProp as unsupportedProp } from '@mui/utils';\nexport default unsupportedProp;","export default function unsupportedProp(props, propName, componentName, location, propFullName) {\n if (process.env.NODE_ENV === 'production') {\n return null;\n }\n const propFullNameSafe = propFullName || propName;\n if (typeof props[propName] !== 'undefined') {\n return new Error(`The prop \\`${propFullNameSafe}\\` is not supported. Please remove it.`);\n }\n return null;\n}","import { unstable_ClassNameGenerator as ClassNameGenerator } from '@mui/base/className';\nexport { default as capitalize } from './capitalize';\nexport { default as createChainedFunction } from './createChainedFunction';\nexport { default as createSvgIcon } from './createSvgIcon';\nexport { default as debounce } from './debounce';\nexport { default as deprecatedPropType } from './deprecatedPropType';\nexport { default as isMuiElement } from './isMuiElement';\nexport { default as ownerDocument } from './ownerDocument';\nexport { default as ownerWindow } from './ownerWindow';\nexport { default as requirePropFactory } from './requirePropFactory';\nexport { default as setRef } from './setRef';\nexport { default as unstable_useEnhancedEffect } from './useEnhancedEffect';\nexport { default as unstable_useId } from './useId';\nexport { default as unsupportedProp } from './unsupportedProp';\nexport { default as useControlled } from './useControlled';\nexport { default as useEventCallback } from './useEventCallback';\nexport { default as useForkRef } from './useForkRef';\nexport { default as useIsFocusVisible } from './useIsFocusVisible';\n// TODO: remove this export once ClassNameGenerator is stable\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_ClassNameGenerator = {\n configure: generator => {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(['MUI: `ClassNameGenerator` import from `@mui/material/utils` is outdated and might cause unexpected issues.', '', \"You should use `import { unstable_ClassNameGenerator } from '@mui/material/className'` instead\", '', 'The detail of the issue: https://github.com/mui/material-ui/issues/30011#issuecomment-1024993401', '', 'The updated documentation: https://mui.com/guides/classname-generator/'].join('\\n'));\n }\n ClassNameGenerator.configure(generator);\n }\n};","import { unstable_isMuiElement as isMuiElement } from '@mui/utils';\nexport default isMuiElement;","import * as React from 'react';\nexport default function isMuiElement(element, muiNames) {\n return /*#__PURE__*/React.isValidElement(element) && muiNames.indexOf(element.type.muiName) !== -1;\n}","import { unstable_ownerDocument as ownerDocument } from '@mui/utils';\nexport default ownerDocument;","import { unstable_ownerWindow as ownerWindow } from '@mui/utils';\nexport default ownerWindow;","import { unstable_useControlled as useControlled } from '@mui/utils';\nexport default useControlled;","import { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nexport default useEnhancedEffect;","import { unstable_useEventCallback as useEventCallback } from '@mui/utils';\nexport default useEventCallback;","import { unstable_useForkRef as useForkRef } from '@mui/utils';\nexport default useForkRef;","import { unstable_useId as useId } from '@mui/utils';\nexport default useId;","// based on https://github.com/WICG/focus-visible/blob/v4.1.5/src/focus-visible.js\nimport * as React from 'react';\nlet hadKeyboardEvent = true;\nlet hadFocusVisibleRecently = false;\nlet hadFocusVisibleRecentlyTimeout;\nconst inputTypesWhitelist = {\n text: true,\n search: true,\n url: true,\n tel: true,\n email: true,\n password: true,\n number: true,\n date: true,\n month: true,\n week: true,\n time: true,\n datetime: true,\n 'datetime-local': true\n};\n\n/**\n * Computes whether the given element should automatically trigger the\n * `focus-visible` class being added, i.e. whether it should always match\n * `:focus-visible` when focused.\n * @param {Element} node\n * @returns {boolean}\n */\nfunction focusTriggersKeyboardModality(node) {\n const {\n type,\n tagName\n } = node;\n if (tagName === 'INPUT' && inputTypesWhitelist[type] && !node.readOnly) {\n return true;\n }\n if (tagName === 'TEXTAREA' && !node.readOnly) {\n return true;\n }\n if (node.isContentEditable) {\n return true;\n }\n return false;\n}\n\n/**\n * Keep track of our keyboard modality state with `hadKeyboardEvent`.\n * If the most recent user interaction was via the keyboard;\n * and the key press did not include a meta, alt/option, or control key;\n * then the modality is keyboard. Otherwise, the modality is not keyboard.\n * @param {KeyboardEvent} event\n */\nfunction handleKeyDown(event) {\n if (event.metaKey || event.altKey || event.ctrlKey) {\n return;\n }\n hadKeyboardEvent = true;\n}\n\n/**\n * If at any point a user clicks with a pointing device, ensure that we change\n * the modality away from keyboard.\n * This avoids the situation where a user presses a key on an already focused\n * element, and then clicks on a different element, focusing it with a\n * pointing device, while we still think we're in keyboard modality.\n */\nfunction handlePointerDown() {\n hadKeyboardEvent = false;\n}\nfunction handleVisibilityChange() {\n if (this.visibilityState === 'hidden') {\n // If the tab becomes active again, the browser will handle calling focus\n // on the element (Safari actually calls it twice).\n // If this tab change caused a blur on an element with focus-visible,\n // re-apply the class when the user switches back to the tab.\n if (hadFocusVisibleRecently) {\n hadKeyboardEvent = true;\n }\n }\n}\nfunction prepare(doc) {\n doc.addEventListener('keydown', handleKeyDown, true);\n doc.addEventListener('mousedown', handlePointerDown, true);\n doc.addEventListener('pointerdown', handlePointerDown, true);\n doc.addEventListener('touchstart', handlePointerDown, true);\n doc.addEventListener('visibilitychange', handleVisibilityChange, true);\n}\nexport function teardown(doc) {\n doc.removeEventListener('keydown', handleKeyDown, true);\n doc.removeEventListener('mousedown', handlePointerDown, true);\n doc.removeEventListener('pointerdown', handlePointerDown, true);\n doc.removeEventListener('touchstart', handlePointerDown, true);\n doc.removeEventListener('visibilitychange', handleVisibilityChange, true);\n}\nfunction isFocusVisible(event) {\n const {\n target\n } = event;\n try {\n return target.matches(':focus-visible');\n } catch (error) {\n // Browsers not implementing :focus-visible will throw a SyntaxError.\n // We use our own heuristic for those browsers.\n // Rethrow might be better if it's not the expected error but do we really\n // want to crash if focus-visible malfunctioned?\n }\n\n // No need for validFocusTarget check. The user does that by attaching it to\n // focusable events only.\n return hadKeyboardEvent || focusTriggersKeyboardModality(target);\n}\nexport default function useIsFocusVisible() {\n const ref = React.useCallback(node => {\n if (node != null) {\n prepare(node.ownerDocument);\n }\n }, []);\n const isFocusVisibleRef = React.useRef(false);\n\n /**\n * Should be called if a blur event is fired\n */\n function handleBlurVisible() {\n // checking against potential state variable does not suffice if we focus and blur synchronously.\n // React wouldn't have time to trigger a re-render so `focusVisible` would be stale.\n // Ideally we would adjust `isFocusVisible(event)` to look at `relatedTarget` for blur events.\n // This doesn't work in IE11 due to https://github.com/facebook/react/issues/3751\n // TODO: check again if React releases their internal changes to focus event handling (https://github.com/facebook/react/pull/19186).\n if (isFocusVisibleRef.current) {\n // To detect a tab/window switch, we look for a blur event followed\n // rapidly by a visibility change.\n // If we don't see a visibility change within 100ms, it's probably a\n // regular focus change.\n hadFocusVisibleRecently = true;\n window.clearTimeout(hadFocusVisibleRecentlyTimeout);\n hadFocusVisibleRecentlyTimeout = window.setTimeout(() => {\n hadFocusVisibleRecently = false;\n }, 100);\n isFocusVisibleRef.current = false;\n return true;\n }\n return false;\n }\n\n /**\n * Should be called if a blur event is fired\n */\n function handleFocusVisible(event) {\n if (isFocusVisible(event)) {\n isFocusVisibleRef.current = true;\n return true;\n }\n return false;\n }\n return {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref\n };\n}","import { unstable_useIsFocusVisible as useIsFocusVisible } from '@mui/utils';\nexport default useIsFocusVisible;","/**\n * @mui/styled-engine v5.12.3\n *\n * @license MIT\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/* eslint-disable no-underscore-dangle */\nimport emStyled from '@emotion/styled';\nexport default function styled(tag, options) {\n const stylesFactory = emStyled(tag, options);\n if (process.env.NODE_ENV !== 'production') {\n return (...styles) => {\n const component = typeof tag === 'string' ? `\"${tag}\"` : 'component';\n if (styles.length === 0) {\n console.error([`MUI: Seems like you called \\`styled(${component})()\\` without a \\`style\\` argument.`, 'You must provide a `styles` argument: `styled(\"div\")(styleYouForgotToPass)`.'].join('\\n'));\n } else if (styles.some(style => style === undefined)) {\n console.error(`MUI: the styled(${component})(...args) API requires all its args to be defined.`);\n }\n return stylesFactory(...styles);\n };\n }\n return stylesFactory;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const internal_processStyles = (tag, processor) => {\n // Emotion attaches all the styles as `__emotion_styles`.\n // Ref: https://github.com/emotion-js/emotion/blob/16d971d0da229596d6bcc39d282ba9753c9ee7cf/packages/styled/src/base.js#L186\n if (Array.isArray(tag.__emotion_styles)) {\n tag.__emotion_styles = processor(tag.__emotion_styles);\n }\n};\nexport { ThemeContext, keyframes, css } from '@emotion/react';\nexport { default as StyledEngineProvider } from './StyledEngineProvider';\nexport { default as GlobalStyles } from './GlobalStyles';","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\nimport { deepmerge } from '@mui/utils';\nimport merge from './merge';\n\n// The breakpoint **start** at this value.\n// For instance with the first breakpoint xs: [xs, sm[.\nexport const values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n};\n\nconst defaultBreakpoints = {\n // Sorted ASC by size. That's important.\n // It can't be configured as it's used statically for propTypes.\n keys: ['xs', 'sm', 'md', 'lg', 'xl'],\n up: key => `@media (min-width:${values[key]}px)`\n};\nexport function handleBreakpoints(props, propValue, styleFromPropValue) {\n const theme = props.theme || {};\n if (Array.isArray(propValue)) {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return propValue.reduce((acc, item, index) => {\n acc[themeBreakpoints.up(themeBreakpoints.keys[index])] = styleFromPropValue(propValue[index]);\n return acc;\n }, {});\n }\n if (typeof propValue === 'object') {\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n return Object.keys(propValue).reduce((acc, breakpoint) => {\n // key is breakpoint\n if (Object.keys(themeBreakpoints.values || values).indexOf(breakpoint) !== -1) {\n const mediaKey = themeBreakpoints.up(breakpoint);\n acc[mediaKey] = styleFromPropValue(propValue[breakpoint], breakpoint);\n } else {\n const cssKey = breakpoint;\n acc[cssKey] = propValue[cssKey];\n }\n return acc;\n }, {});\n }\n const output = styleFromPropValue(propValue);\n return output;\n}\nfunction breakpoints(styleFunction) {\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const newStyleFunction = props => {\n const theme = props.theme || {};\n const base = styleFunction(props);\n const themeBreakpoints = theme.breakpoints || defaultBreakpoints;\n const extended = themeBreakpoints.keys.reduce((acc, key) => {\n if (props[key]) {\n acc = acc || {};\n acc[themeBreakpoints.up(key)] = styleFunction(_extends({\n theme\n }, props[key]));\n }\n return acc;\n }, null);\n return merge(base, extended);\n };\n newStyleFunction.propTypes = process.env.NODE_ENV !== 'production' ? _extends({}, styleFunction.propTypes, {\n xs: PropTypes.object,\n sm: PropTypes.object,\n md: PropTypes.object,\n lg: PropTypes.object,\n xl: PropTypes.object\n }) : {};\n newStyleFunction.filterProps = ['xs', 'sm', 'md', 'lg', 'xl', ...styleFunction.filterProps];\n return newStyleFunction;\n}\nexport function createEmptyBreakpointObject(breakpointsInput = {}) {\n var _breakpointsInput$key;\n const breakpointsInOrder = (_breakpointsInput$key = breakpointsInput.keys) == null ? void 0 : _breakpointsInput$key.reduce((acc, key) => {\n const breakpointStyleKey = breakpointsInput.up(key);\n acc[breakpointStyleKey] = {};\n return acc;\n }, {});\n return breakpointsInOrder || {};\n}\nexport function removeUnusedBreakpoints(breakpointKeys, style) {\n return breakpointKeys.reduce((acc, key) => {\n const breakpointOutput = acc[key];\n const isBreakpointUnused = !breakpointOutput || Object.keys(breakpointOutput).length === 0;\n if (isBreakpointUnused) {\n delete acc[key];\n }\n return acc;\n }, style);\n}\nexport function mergeBreakpointsInOrder(breakpointsInput, ...styles) {\n const emptyBreakpoints = createEmptyBreakpointObject(breakpointsInput);\n const mergedOutput = [emptyBreakpoints, ...styles].reduce((prev, next) => deepmerge(prev, next), {});\n return removeUnusedBreakpoints(Object.keys(emptyBreakpoints), mergedOutput);\n}\n\n// compute base for responsive values; e.g.,\n// [1,2,3] => {xs: true, sm: true, md: true}\n// {xs: 1, sm: 2, md: 3} => {xs: true, sm: true, md: true}\nexport function computeBreakpointsBase(breakpointValues, themeBreakpoints) {\n // fixed value\n if (typeof breakpointValues !== 'object') {\n return {};\n }\n const base = {};\n const breakpointsKeys = Object.keys(themeBreakpoints);\n if (Array.isArray(breakpointValues)) {\n breakpointsKeys.forEach((breakpoint, i) => {\n if (i < breakpointValues.length) {\n base[breakpoint] = true;\n }\n });\n } else {\n breakpointsKeys.forEach(breakpoint => {\n if (breakpointValues[breakpoint] != null) {\n base[breakpoint] = true;\n }\n });\n }\n return base;\n}\nexport function resolveBreakpointValues({\n values: breakpointValues,\n breakpoints: themeBreakpoints,\n base: customBase\n}) {\n const base = customBase || computeBreakpointsBase(breakpointValues, themeBreakpoints);\n const keys = Object.keys(base);\n if (keys.length === 0) {\n return breakpointValues;\n }\n let previous;\n return keys.reduce((acc, breakpoint, i) => {\n if (Array.isArray(breakpointValues)) {\n acc[breakpoint] = breakpointValues[i] != null ? breakpointValues[i] : breakpointValues[previous];\n previous = i;\n } else if (typeof breakpointValues === 'object') {\n acc[breakpoint] = breakpointValues[breakpoint] != null ? breakpointValues[breakpoint] : breakpointValues[previous];\n previous = breakpoint;\n } else {\n acc[breakpoint] = breakpointValues;\n }\n return acc;\n }, {});\n}\nexport default breakpoints;","import { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\n/* eslint-disable @typescript-eslint/naming-convention */\n/**\n * Returns a number whose value is limited to the given range.\n * @param {number} value The value to be clamped\n * @param {number} min The lower boundary of the output range\n * @param {number} max The upper boundary of the output range\n * @returns {number} A number in the range [min, max]\n */\nfunction clamp(value, min = 0, max = 1) {\n if (process.env.NODE_ENV !== 'production') {\n if (value < min || value > max) {\n console.error(`MUI: The value provided ${value} is out of range [${min}, ${max}].`);\n }\n }\n return Math.min(Math.max(min, value), max);\n}\n\n/**\n * Converts a color from CSS hex format to CSS rgb format.\n * @param {string} color - Hex color, i.e. #nnn or #nnnnnn\n * @returns {string} A CSS rgb color string\n */\nexport function hexToRgb(color) {\n color = color.slice(1);\n const re = new RegExp(`.{1,${color.length >= 6 ? 2 : 1}}`, 'g');\n let colors = color.match(re);\n if (colors && colors[0].length === 1) {\n colors = colors.map(n => n + n);\n }\n return colors ? `rgb${colors.length === 4 ? 'a' : ''}(${colors.map((n, index) => {\n return index < 3 ? parseInt(n, 16) : Math.round(parseInt(n, 16) / 255 * 1000) / 1000;\n }).join(', ')})` : '';\n}\nfunction intToHex(int) {\n const hex = int.toString(16);\n return hex.length === 1 ? `0${hex}` : hex;\n}\n\n/**\n * Returns an object with the type and values of a color.\n *\n * Note: Does not support rgb % values.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {object} - A MUI color object: {type: string, values: number[]}\n */\nexport function decomposeColor(color) {\n // Idempotent\n if (color.type) {\n return color;\n }\n if (color.charAt(0) === '#') {\n return decomposeColor(hexToRgb(color));\n }\n const marker = color.indexOf('(');\n const type = color.substring(0, marker);\n if (['rgb', 'rgba', 'hsl', 'hsla', 'color'].indexOf(type) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Unsupported \\`${color}\\` color.\nThe following formats are supported: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color().` : _formatMuiErrorMessage(9, color));\n }\n let values = color.substring(marker + 1, color.length - 1);\n let colorSpace;\n if (type === 'color') {\n values = values.split(' ');\n colorSpace = values.shift();\n if (values.length === 4 && values[3].charAt(0) === '/') {\n values[3] = values[3].slice(1);\n }\n if (['srgb', 'display-p3', 'a98-rgb', 'prophoto-rgb', 'rec-2020'].indexOf(colorSpace) === -1) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: unsupported \\`${colorSpace}\\` color space.\nThe following color spaces are supported: srgb, display-p3, a98-rgb, prophoto-rgb, rec-2020.` : _formatMuiErrorMessage(10, colorSpace));\n }\n } else {\n values = values.split(',');\n }\n values = values.map(value => parseFloat(value));\n return {\n type,\n values,\n colorSpace\n };\n}\n\n/**\n * Returns a channel created from the input color.\n *\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {string} - The channel for the color, that can be used in rgba or hsla colors\n */\nexport const colorChannel = color => {\n const decomposedColor = decomposeColor(color);\n return decomposedColor.values.slice(0, 3).map((val, idx) => decomposedColor.type.indexOf('hsl') !== -1 && idx !== 0 ? `${val}%` : val).join(' ');\n};\nexport const private_safeColorChannel = (color, warning) => {\n try {\n return colorChannel(color);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n};\n\n/**\n * Converts a color object with type and values to a string.\n * @param {object} color - Decomposed color\n * @param {string} color.type - One of: 'rgb', 'rgba', 'hsl', 'hsla', 'color'\n * @param {array} color.values - [n,n,n] or [n,n,n,n]\n * @returns {string} A CSS color string\n */\nexport function recomposeColor(color) {\n const {\n type,\n colorSpace\n } = color;\n let {\n values\n } = color;\n if (type.indexOf('rgb') !== -1) {\n // Only convert the first 3 values to int (i.e. not alpha)\n values = values.map((n, i) => i < 3 ? parseInt(n, 10) : n);\n } else if (type.indexOf('hsl') !== -1) {\n values[1] = `${values[1]}%`;\n values[2] = `${values[2]}%`;\n }\n if (type.indexOf('color') !== -1) {\n values = `${colorSpace} ${values.join(' ')}`;\n } else {\n values = `${values.join(', ')}`;\n }\n return `${type}(${values})`;\n}\n\n/**\n * Converts a color from CSS rgb format to CSS hex format.\n * @param {string} color - RGB color, i.e. rgb(n, n, n)\n * @returns {string} A CSS rgb color string, i.e. #nnnnnn\n */\nexport function rgbToHex(color) {\n // Idempotent\n if (color.indexOf('#') === 0) {\n return color;\n }\n const {\n values\n } = decomposeColor(color);\n return `#${values.map((n, i) => intToHex(i === 3 ? Math.round(255 * n) : n)).join('')}`;\n}\n\n/**\n * Converts a color from hsl format to rgb format.\n * @param {string} color - HSL color values\n * @returns {string} rgb color values\n */\nexport function hslToRgb(color) {\n color = decomposeColor(color);\n const {\n values\n } = color;\n const h = values[0];\n const s = values[1] / 100;\n const l = values[2] / 100;\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n let type = 'rgb';\n const rgb = [Math.round(f(0) * 255), Math.round(f(8) * 255), Math.round(f(4) * 255)];\n if (color.type === 'hsla') {\n type += 'a';\n rgb.push(values[3]);\n }\n return recomposeColor({\n type,\n values: rgb\n });\n}\n/**\n * The relative brightness of any point in a color space,\n * normalized to 0 for darkest black and 1 for lightest white.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @returns {number} The relative brightness of the color in the range 0 - 1\n */\nexport function getLuminance(color) {\n color = decomposeColor(color);\n let rgb = color.type === 'hsl' || color.type === 'hsla' ? decomposeColor(hslToRgb(color)).values : color.values;\n rgb = rgb.map(val => {\n if (color.type !== 'color') {\n val /= 255; // normalized\n }\n\n return val <= 0.03928 ? val / 12.92 : ((val + 0.055) / 1.055) ** 2.4;\n });\n\n // Truncate at 3 digits\n return Number((0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]).toFixed(3));\n}\n\n/**\n * Calculates the contrast ratio between two colors.\n *\n * Formula: https://www.w3.org/TR/WCAG20-TECHS/G17.html#G17-tests\n * @param {string} foreground - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @param {string} background - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla()\n * @returns {number} A contrast ratio value in the range 0 - 21.\n */\nexport function getContrastRatio(foreground, background) {\n const lumA = getLuminance(foreground);\n const lumB = getLuminance(background);\n return (Math.max(lumA, lumB) + 0.05) / (Math.min(lumA, lumB) + 0.05);\n}\n\n/**\n * Sets the absolute transparency of a color.\n * Any existing alpha values are overwritten.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} value - value to set the alpha channel to in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function alpha(color, value) {\n color = decomposeColor(color);\n value = clamp(value);\n if (color.type === 'rgb' || color.type === 'hsl') {\n color.type += 'a';\n }\n if (color.type === 'color') {\n color.values[3] = `/${value}`;\n } else {\n color.values[3] = value;\n }\n return recomposeColor(color);\n}\nexport function private_safeAlpha(color, value, warning) {\n try {\n return alpha(color, value);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darkens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function darken(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] *= 1 - coefficient;\n } else if (color.type.indexOf('rgb') !== -1 || color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] *= 1 - coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeDarken(color, coefficient, warning) {\n try {\n return darken(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Lightens a color.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function lighten(color, coefficient) {\n color = decomposeColor(color);\n coefficient = clamp(coefficient);\n if (color.type.indexOf('hsl') !== -1) {\n color.values[2] += (100 - color.values[2]) * coefficient;\n } else if (color.type.indexOf('rgb') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (255 - color.values[i]) * coefficient;\n }\n } else if (color.type.indexOf('color') !== -1) {\n for (let i = 0; i < 3; i += 1) {\n color.values[i] += (1 - color.values[i]) * coefficient;\n }\n }\n return recomposeColor(color);\n}\nexport function private_safeLighten(color, coefficient, warning) {\n try {\n return lighten(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}\n\n/**\n * Darken or lighten a color, depending on its luminance.\n * Light colors are darkened, dark colors are lightened.\n * @param {string} color - CSS color, i.e. one of: #nnn, #nnnnnn, rgb(), rgba(), hsl(), hsla(), color()\n * @param {number} coefficient=0.15 - multiplier in the range 0 - 1\n * @returns {string} A CSS color string. Hex input values are returned as rgb\n */\nexport function emphasize(color, coefficient = 0.15) {\n return getLuminance(color) > 0.5 ? darken(color, coefficient) : lighten(color, coefficient);\n}\nexport function private_safeEmphasize(color, coefficient, warning) {\n try {\n return private_safeEmphasize(color, coefficient);\n } catch (error) {\n if (warning && process.env.NODE_ENV !== 'production') {\n console.warn(warning);\n }\n return color;\n }\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"variant\"];\nimport { unstable_capitalize as capitalize } from '@mui/utils';\nfunction isEmpty(string) {\n return string.length === 0;\n}\n\n/**\n * Generates string classKey based on the properties provided. It starts with the\n * variant if defined, and then it appends all other properties in alphabetical order.\n * @param {object} props - the properties for which the classKey should be created.\n */\nexport default function propsToClassKey(props) {\n const {\n variant\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n let classKey = variant || '';\n Object.keys(other).sort().forEach(key => {\n if (key === 'color') {\n classKey += isEmpty(classKey) ? props[key] : capitalize(props[key]);\n } else {\n classKey += `${isEmpty(classKey) ? key : capitalize(key)}${capitalize(props[key].toString())}`;\n }\n });\n return classKey;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"name\", \"slot\", \"skipVariantsResolver\", \"skipSx\", \"overridesResolver\"];\n/* eslint-disable no-underscore-dangle */\nimport styledEngineStyled, { internal_processStyles as processStyles } from '@mui/styled-engine';\nimport { getDisplayName } from '@mui/utils';\nimport createTheme from './createTheme';\nimport propsToClassKey from './propsToClassKey';\nimport styleFunctionSx from './styleFunctionSx';\nfunction isEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\n\n// https://github.com/emotion-js/emotion/blob/26ded6109fcd8ca9875cc2ce4564fee678a3f3c5/packages/styled/src/utils.js#L40\nfunction isStringTag(tag) {\n return typeof tag === 'string' &&\n // 96 is one less than the char code\n // for \"a\" so this is checking that\n // it's a lowercase character\n tag.charCodeAt(0) > 96;\n}\nconst getStyleOverrides = (name, theme) => {\n if (theme.components && theme.components[name] && theme.components[name].styleOverrides) {\n return theme.components[name].styleOverrides;\n }\n return null;\n};\nconst getVariantStyles = (name, theme) => {\n let variants = [];\n if (theme && theme.components && theme.components[name] && theme.components[name].variants) {\n variants = theme.components[name].variants;\n }\n const variantsStyles = {};\n variants.forEach(definition => {\n const key = propsToClassKey(definition.props);\n variantsStyles[key] = definition.style;\n });\n return variantsStyles;\n};\nconst variantsResolver = (props, styles, theme, name) => {\n var _theme$components, _theme$components$nam;\n const {\n ownerState = {}\n } = props;\n const variantsStyles = [];\n const themeVariants = theme == null ? void 0 : (_theme$components = theme.components) == null ? void 0 : (_theme$components$nam = _theme$components[name]) == null ? void 0 : _theme$components$nam.variants;\n if (themeVariants) {\n themeVariants.forEach(themeVariant => {\n let isMatch = true;\n Object.keys(themeVariant.props).forEach(key => {\n if (ownerState[key] !== themeVariant.props[key] && props[key] !== themeVariant.props[key]) {\n isMatch = false;\n }\n });\n if (isMatch) {\n variantsStyles.push(styles[propsToClassKey(themeVariant.props)]);\n }\n });\n }\n return variantsStyles;\n};\n\n// Update /system/styled/#api in case if this changes\nexport function shouldForwardProp(prop) {\n return prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as';\n}\nexport const systemDefaultTheme = createTheme();\nconst lowercaseFirstLetter = string => {\n return string.charAt(0).toLowerCase() + string.slice(1);\n};\nfunction resolveTheme({\n defaultTheme,\n theme,\n themeId\n}) {\n return isEmpty(theme) ? defaultTheme : theme[themeId] || theme;\n}\nexport default function createStyled(input = {}) {\n const {\n themeId,\n defaultTheme = systemDefaultTheme,\n rootShouldForwardProp = shouldForwardProp,\n slotShouldForwardProp = shouldForwardProp\n } = input;\n const systemSx = props => {\n return styleFunctionSx(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n };\n systemSx.__mui_systemSx = true;\n return (tag, inputOptions = {}) => {\n // Filter out the `sx` style function from the previous styled component to prevent unnecessary styles generated by the composite components.\n processStyles(tag, styles => styles.filter(style => !(style != null && style.__mui_systemSx)));\n const {\n name: componentName,\n slot: componentSlot,\n skipVariantsResolver: inputSkipVariantsResolver,\n skipSx: inputSkipSx,\n overridesResolver\n } = inputOptions,\n options = _objectWithoutPropertiesLoose(inputOptions, _excluded);\n\n // if skipVariantsResolver option is defined, take the value, otherwise, true for root and false for other slots.\n const skipVariantsResolver = inputSkipVariantsResolver !== undefined ? inputSkipVariantsResolver : componentSlot && componentSlot !== 'Root' || false;\n const skipSx = inputSkipSx || false;\n let label;\n if (process.env.NODE_ENV !== 'production') {\n if (componentName) {\n label = `${componentName}-${lowercaseFirstLetter(componentSlot || 'Root')}`;\n }\n }\n let shouldForwardPropOption = shouldForwardProp;\n if (componentSlot === 'Root') {\n shouldForwardPropOption = rootShouldForwardProp;\n } else if (componentSlot) {\n // any other slot specified\n shouldForwardPropOption = slotShouldForwardProp;\n } else if (isStringTag(tag)) {\n // for string (html) tag, preserve the behavior in emotion & styled-components.\n shouldForwardPropOption = undefined;\n }\n const defaultStyledResolver = styledEngineStyled(tag, _extends({\n shouldForwardProp: shouldForwardPropOption,\n label\n }, options));\n const muiStyledResolver = (styleArg, ...expressions) => {\n const expressionsWithDefaultTheme = expressions ? expressions.map(stylesArg => {\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n return typeof stylesArg === 'function' && stylesArg.__emotion_real !== stylesArg ? props => {\n return stylesArg(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n } : stylesArg;\n }) : [];\n let transformedStyleArg = styleArg;\n if (componentName && overridesResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n const styleOverrides = getStyleOverrides(componentName, theme);\n if (styleOverrides) {\n const resolvedStyleOverrides = {};\n Object.entries(styleOverrides).forEach(([slotKey, slotStyle]) => {\n resolvedStyleOverrides[slotKey] = typeof slotStyle === 'function' ? slotStyle(_extends({}, props, {\n theme\n })) : slotStyle;\n });\n return overridesResolver(props, resolvedStyleOverrides);\n }\n return null;\n });\n }\n if (componentName && !skipVariantsResolver) {\n expressionsWithDefaultTheme.push(props => {\n const theme = resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }));\n return variantsResolver(props, getVariantStyles(componentName, theme), theme, componentName);\n });\n }\n if (!skipSx) {\n expressionsWithDefaultTheme.push(systemSx);\n }\n const numOfCustomFnsApplied = expressionsWithDefaultTheme.length - expressions.length;\n if (Array.isArray(styleArg) && numOfCustomFnsApplied > 0) {\n const placeholders = new Array(numOfCustomFnsApplied).fill('');\n // If the type is array, than we need to add placeholders in the template for the overrides, variants and the sx styles.\n transformedStyleArg = [...styleArg, ...placeholders];\n transformedStyleArg.raw = [...styleArg.raw, ...placeholders];\n } else if (typeof styleArg === 'function' &&\n // On the server Emotion doesn't use React.forwardRef for creating components, so the created\n // component stays as a function. This condition makes sure that we do not interpolate functions\n // which are basically components used as a selectors.\n styleArg.__emotion_real !== styleArg) {\n // If the type is function, we need to define the default theme.\n transformedStyleArg = props => styleArg(_extends({}, props, {\n theme: resolveTheme(_extends({}, props, {\n defaultTheme,\n themeId\n }))\n }));\n }\n const Component = defaultStyledResolver(transformedStyleArg, ...expressionsWithDefaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n let displayName;\n if (componentName) {\n displayName = `${componentName}${componentSlot || ''}`;\n }\n if (displayName === undefined) {\n displayName = `Styled(${getDisplayName(tag)})`;\n }\n Component.displayName = displayName;\n }\n if (tag.muiName) {\n Component.muiName = tag.muiName;\n }\n return Component;\n };\n if (defaultStyledResolver.withConfig) {\n muiStyledResolver.withConfig = defaultStyledResolver.withConfig;\n }\n return muiStyledResolver;\n };\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"values\", \"unit\", \"step\"];\n// Sorted ASC by size. That's important.\n// It can't be configured as it's used statically for propTypes.\nexport const breakpointKeys = ['xs', 'sm', 'md', 'lg', 'xl'];\nconst sortBreakpointsValues = values => {\n const breakpointsAsArray = Object.keys(values).map(key => ({\n key,\n val: values[key]\n })) || [];\n // Sort in ascending order\n breakpointsAsArray.sort((breakpoint1, breakpoint2) => breakpoint1.val - breakpoint2.val);\n return breakpointsAsArray.reduce((acc, obj) => {\n return _extends({}, acc, {\n [obj.key]: obj.val\n });\n }, {});\n};\n\n// Keep in mind that @media is inclusive by the CSS specification.\nexport default function createBreakpoints(breakpoints) {\n const {\n // The breakpoint **start** at this value.\n // For instance with the first breakpoint xs: [xs, sm).\n values = {\n xs: 0,\n // phone\n sm: 600,\n // tablet\n md: 900,\n // small laptop\n lg: 1200,\n // desktop\n xl: 1536 // large screen\n },\n\n unit = 'px',\n step = 5\n } = breakpoints,\n other = _objectWithoutPropertiesLoose(breakpoints, _excluded);\n const sortedValues = sortBreakpointsValues(values);\n const keys = Object.keys(sortedValues);\n function up(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (min-width:${value}${unit})`;\n }\n function down(key) {\n const value = typeof values[key] === 'number' ? values[key] : key;\n return `@media (max-width:${value - step / 100}${unit})`;\n }\n function between(start, end) {\n const endIndex = keys.indexOf(end);\n return `@media (min-width:${typeof values[start] === 'number' ? values[start] : start}${unit}) and ` + `(max-width:${(endIndex !== -1 && typeof values[keys[endIndex]] === 'number' ? values[keys[endIndex]] : end) - step / 100}${unit})`;\n }\n function only(key) {\n if (keys.indexOf(key) + 1 < keys.length) {\n return between(key, keys[keys.indexOf(key) + 1]);\n }\n return up(key);\n }\n function not(key) {\n // handle first and last key separately, for better readability\n const keyIndex = keys.indexOf(key);\n if (keyIndex === 0) {\n return up(keys[1]);\n }\n if (keyIndex === keys.length - 1) {\n return down(keys[keyIndex]);\n }\n return between(key, keys[keys.indexOf(key) + 1]).replace('@media', '@media not all and');\n }\n return _extends({\n keys,\n values: sortedValues,\n up,\n down,\n between,\n only,\n not,\n unit\n }, other);\n}","const shape = {\n borderRadius: 4\n};\nexport default shape;","import { createUnarySpacing } from '../spacing';\n\n// The different signatures imply different meaning for their arguments that can't be expressed structurally.\n// We express the difference with variable names.\n/* tslint:disable:unified-signatures */\n/* tslint:enable:unified-signatures */\n\nexport default function createSpacing(spacingInput = 8) {\n // Already transformed.\n if (spacingInput.mui) {\n return spacingInput;\n }\n\n // Material Design layouts are visually balanced. Most measurements align to an 8dp grid, which aligns both spacing and the overall layout.\n // Smaller components, such as icons, can align to a 4dp grid.\n // https://m2.material.io/design/layout/understanding-layout.html\n const transform = createUnarySpacing({\n spacing: spacingInput\n });\n const spacing = (...argsInput) => {\n if (process.env.NODE_ENV !== 'production') {\n if (!(argsInput.length <= 4)) {\n console.error(`MUI: Too many arguments provided, expected between 0 and 4, got ${argsInput.length}`);\n }\n }\n const args = argsInput.length === 0 ? [1] : argsInput;\n return args.map(argument => {\n const output = transform(argument);\n return typeof output === 'number' ? `${output}px` : output;\n }).join(' ');\n };\n spacing.mui = true;\n return spacing;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"breakpoints\", \"palette\", \"spacing\", \"shape\"];\nimport { deepmerge } from '@mui/utils';\nimport createBreakpoints from './createBreakpoints';\nimport shape from './shape';\nimport createSpacing from './createSpacing';\nimport styleFunctionSx from '../styleFunctionSx/styleFunctionSx';\nimport defaultSxConfig from '../styleFunctionSx/defaultSxConfig';\nfunction createTheme(options = {}, ...args) {\n const {\n breakpoints: breakpointsInput = {},\n palette: paletteInput = {},\n spacing: spacingInput,\n shape: shapeInput = {}\n } = options,\n other = _objectWithoutPropertiesLoose(options, _excluded);\n const breakpoints = createBreakpoints(breakpointsInput);\n const spacing = createSpacing(spacingInput);\n let muiTheme = deepmerge({\n breakpoints,\n direction: 'ltr',\n components: {},\n // Inject component definitions.\n palette: _extends({\n mode: 'light'\n }, paletteInput),\n spacing,\n shape: _extends({}, shape, shapeInput)\n }, other);\n muiTheme = args.reduce((acc, argument) => deepmerge(acc, argument), muiTheme);\n muiTheme.unstable_sxConfig = _extends({}, defaultSxConfig, other == null ? void 0 : other.unstable_sxConfig);\n muiTheme.unstable_sx = function sx(props) {\n return styleFunctionSx({\n sx: props,\n theme: this\n });\n };\n return muiTheme;\n}\nexport default createTheme;","import { deepmerge } from '@mui/utils';\nfunction merge(acc, item) {\n if (!item) {\n return acc;\n }\n return deepmerge(acc, item, {\n clone: false // No need to clone deep, it's way faster.\n });\n}\n\nexport default merge;","import responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nimport { getPath } from './style';\nimport merge from './merge';\nimport memoize from './memoize';\nconst properties = {\n m: 'margin',\n p: 'padding'\n};\nconst directions = {\n t: 'Top',\n r: 'Right',\n b: 'Bottom',\n l: 'Left',\n x: ['Left', 'Right'],\n y: ['Top', 'Bottom']\n};\nconst aliases = {\n marginX: 'mx',\n marginY: 'my',\n paddingX: 'px',\n paddingY: 'py'\n};\n\n// memoize() impact:\n// From 300,000 ops/sec\n// To 350,000 ops/sec\nconst getCssProperties = memoize(prop => {\n // It's not a shorthand notation.\n if (prop.length > 2) {\n if (aliases[prop]) {\n prop = aliases[prop];\n } else {\n return [prop];\n }\n }\n const [a, b] = prop.split('');\n const property = properties[a];\n const direction = directions[b] || '';\n return Array.isArray(direction) ? direction.map(dir => property + dir) : [property + direction];\n});\nexport const marginKeys = ['m', 'mt', 'mr', 'mb', 'ml', 'mx', 'my', 'margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'marginInline', 'marginInlineStart', 'marginInlineEnd', 'marginBlock', 'marginBlockStart', 'marginBlockEnd'];\nexport const paddingKeys = ['p', 'pt', 'pr', 'pb', 'pl', 'px', 'py', 'padding', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'paddingX', 'paddingY', 'paddingInline', 'paddingInlineStart', 'paddingInlineEnd', 'paddingBlock', 'paddingBlockStart', 'paddingBlockEnd'];\nconst spacingKeys = [...marginKeys, ...paddingKeys];\nexport function createUnaryUnit(theme, themeKey, defaultValue, propName) {\n var _getPath;\n const themeSpacing = (_getPath = getPath(theme, themeKey, false)) != null ? _getPath : defaultValue;\n if (typeof themeSpacing === 'number') {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (typeof abs !== 'number') {\n console.error(`MUI: Expected ${propName} argument to be a number or a string, got ${abs}.`);\n }\n }\n return themeSpacing * abs;\n };\n }\n if (Array.isArray(themeSpacing)) {\n return abs => {\n if (typeof abs === 'string') {\n return abs;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (!Number.isInteger(abs)) {\n console.error([`MUI: The \\`theme.${themeKey}\\` array type cannot be combined with non integer values.` + `You should either use an integer value that can be used as index, or define the \\`theme.${themeKey}\\` as a number.`].join('\\n'));\n } else if (abs > themeSpacing.length - 1) {\n console.error([`MUI: The value provided (${abs}) overflows.`, `The supported values are: ${JSON.stringify(themeSpacing)}.`, `${abs} > ${themeSpacing.length - 1}, you need to add the missing values.`].join('\\n'));\n }\n }\n return themeSpacing[abs];\n };\n }\n if (typeof themeSpacing === 'function') {\n return themeSpacing;\n }\n if (process.env.NODE_ENV !== 'production') {\n console.error([`MUI: The \\`theme.${themeKey}\\` value (${themeSpacing}) is invalid.`, 'It should be a number, an array or a function.'].join('\\n'));\n }\n return () => undefined;\n}\nexport function createUnarySpacing(theme) {\n return createUnaryUnit(theme, 'spacing', 8, 'spacing');\n}\nexport function getValue(transformer, propValue) {\n if (typeof propValue === 'string' || propValue == null) {\n return propValue;\n }\n const abs = Math.abs(propValue);\n const transformed = transformer(abs);\n if (propValue >= 0) {\n return transformed;\n }\n if (typeof transformed === 'number') {\n return -transformed;\n }\n return `-${transformed}`;\n}\nexport function getStyleFromPropValue(cssProperties, transformer) {\n return propValue => cssProperties.reduce((acc, cssProperty) => {\n acc[cssProperty] = getValue(transformer, propValue);\n return acc;\n }, {});\n}\nfunction resolveCssProperty(props, keys, prop, transformer) {\n // Using a hash computation over an array iteration could be faster, but with only 28 items,\n // it's doesn't worth the bundle size.\n if (keys.indexOf(prop) === -1) {\n return null;\n }\n const cssProperties = getCssProperties(prop);\n const styleFromPropValue = getStyleFromPropValue(cssProperties, transformer);\n const propValue = props[prop];\n return handleBreakpoints(props, propValue, styleFromPropValue);\n}\nfunction style(props, keys) {\n const transformer = createUnarySpacing(props.theme);\n return Object.keys(props).map(prop => resolveCssProperty(props, keys, prop, transformer)).reduce(merge, {});\n}\nexport function margin(props) {\n return style(props, marginKeys);\n}\nmargin.propTypes = process.env.NODE_ENV !== 'production' ? marginKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nmargin.filterProps = marginKeys;\nexport function padding(props) {\n return style(props, paddingKeys);\n}\npadding.propTypes = process.env.NODE_ENV !== 'production' ? paddingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\npadding.filterProps = paddingKeys;\nfunction spacing(props) {\n return style(props, spacingKeys);\n}\nspacing.propTypes = process.env.NODE_ENV !== 'production' ? spacingKeys.reduce((obj, key) => {\n obj[key] = responsivePropType;\n return obj;\n}, {}) : {};\nspacing.filterProps = spacingKeys;\nexport default spacing;","export default function memoize(fn) {\n const cache = {};\n return arg => {\n if (cache[arg] === undefined) {\n cache[arg] = fn(arg);\n }\n return cache[arg];\n };\n}","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport responsivePropType from './responsivePropType';\nimport { handleBreakpoints } from './breakpoints';\nexport function getPath(obj, path, checkVars = true) {\n if (!path || typeof path !== 'string') {\n return null;\n }\n\n // Check if CSS variables are used\n if (obj && obj.vars && checkVars) {\n const val = `vars.${path}`.split('.').reduce((acc, item) => acc && acc[item] ? acc[item] : null, obj);\n if (val != null) {\n return val;\n }\n }\n return path.split('.').reduce((acc, item) => {\n if (acc && acc[item] != null) {\n return acc[item];\n }\n return null;\n }, obj);\n}\nexport function getStyleValue(themeMapping, transform, propValueFinal, userValue = propValueFinal) {\n let value;\n if (typeof themeMapping === 'function') {\n value = themeMapping(propValueFinal);\n } else if (Array.isArray(themeMapping)) {\n value = themeMapping[propValueFinal] || userValue;\n } else {\n value = getPath(themeMapping, propValueFinal) || userValue;\n }\n if (transform) {\n value = transform(value, userValue, themeMapping);\n }\n return value;\n}\nfunction style(options) {\n const {\n prop,\n cssProperty = options.prop,\n themeKey,\n transform\n } = options;\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n if (props[prop] == null) {\n return null;\n }\n const propValue = props[prop];\n const theme = props.theme;\n const themeMapping = getPath(theme, themeKey) || {};\n const styleFromPropValue = propValueFinal => {\n let value = getStyleValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getStyleValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, propValue, styleFromPropValue);\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? {\n [prop]: responsivePropType\n } : {};\n fn.filterProps = [prop];\n return fn;\n}\nexport default style;","import merge from './merge';\nfunction compose(...styles) {\n const handlers = styles.reduce((acc, style) => {\n style.filterProps.forEach(prop => {\n acc[prop] = style;\n });\n return acc;\n }, {});\n\n // false positive\n // eslint-disable-next-line react/function-component-definition\n const fn = props => {\n return Object.keys(props).reduce((acc, prop) => {\n if (handlers[prop]) {\n return merge(acc, handlers[prop](props));\n }\n return acc;\n }, {});\n };\n fn.propTypes = process.env.NODE_ENV !== 'production' ? styles.reduce((acc, style) => Object.assign(acc, style.propTypes), {}) : {};\n fn.filterProps = styles.reduce((acc, style) => acc.concat(style.filterProps), []);\n return fn;\n}\nexport default compose;","import responsivePropType from './responsivePropType';\nimport style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nexport function borderTransform(value) {\n if (typeof value !== 'number') {\n return value;\n }\n return `${value}px solid`;\n}\nexport const border = style({\n prop: 'border',\n themeKey: 'borders',\n transform: borderTransform\n});\nexport const borderTop = style({\n prop: 'borderTop',\n themeKey: 'borders',\n transform: borderTransform\n});\nexport const borderRight = style({\n prop: 'borderRight',\n themeKey: 'borders',\n transform: borderTransform\n});\nexport const borderBottom = style({\n prop: 'borderBottom',\n themeKey: 'borders',\n transform: borderTransform\n});\nexport const borderLeft = style({\n prop: 'borderLeft',\n themeKey: 'borders',\n transform: borderTransform\n});\nexport const borderColor = style({\n prop: 'borderColor',\n themeKey: 'palette'\n});\nexport const borderTopColor = style({\n prop: 'borderTopColor',\n themeKey: 'palette'\n});\nexport const borderRightColor = style({\n prop: 'borderRightColor',\n themeKey: 'palette'\n});\nexport const borderBottomColor = style({\n prop: 'borderBottomColor',\n themeKey: 'palette'\n});\nexport const borderLeftColor = style({\n prop: 'borderLeftColor',\n themeKey: 'palette'\n});\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const borderRadius = props => {\n if (props.borderRadius !== undefined && props.borderRadius !== null) {\n const transformer = createUnaryUnit(props.theme, 'shape.borderRadius', 4, 'borderRadius');\n const styleFromPropValue = propValue => ({\n borderRadius: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.borderRadius, styleFromPropValue);\n }\n return null;\n};\nborderRadius.propTypes = process.env.NODE_ENV !== 'production' ? {\n borderRadius: responsivePropType\n} : {};\nborderRadius.filterProps = ['borderRadius'];\nconst borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderColor, borderTopColor, borderRightColor, borderBottomColor, borderLeftColor, borderRadius);\nexport default borders;","import style from './style';\nimport compose from './compose';\nimport { createUnaryUnit, getValue } from './spacing';\nimport { handleBreakpoints } from './breakpoints';\nimport responsivePropType from './responsivePropType';\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const gap = props => {\n if (props.gap !== undefined && props.gap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'gap');\n const styleFromPropValue = propValue => ({\n gap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.gap, styleFromPropValue);\n }\n return null;\n};\ngap.propTypes = process.env.NODE_ENV !== 'production' ? {\n gap: responsivePropType\n} : {};\ngap.filterProps = ['gap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const columnGap = props => {\n if (props.columnGap !== undefined && props.columnGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'columnGap');\n const styleFromPropValue = propValue => ({\n columnGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.columnGap, styleFromPropValue);\n }\n return null;\n};\ncolumnGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n columnGap: responsivePropType\n} : {};\ncolumnGap.filterProps = ['columnGap'];\n\n// false positive\n// eslint-disable-next-line react/function-component-definition\nexport const rowGap = props => {\n if (props.rowGap !== undefined && props.rowGap !== null) {\n const transformer = createUnaryUnit(props.theme, 'spacing', 8, 'rowGap');\n const styleFromPropValue = propValue => ({\n rowGap: getValue(transformer, propValue)\n });\n return handleBreakpoints(props, props.rowGap, styleFromPropValue);\n }\n return null;\n};\nrowGap.propTypes = process.env.NODE_ENV !== 'production' ? {\n rowGap: responsivePropType\n} : {};\nrowGap.filterProps = ['rowGap'];\nexport const gridColumn = style({\n prop: 'gridColumn'\n});\nexport const gridRow = style({\n prop: 'gridRow'\n});\nexport const gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport const gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport const gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport const gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport const gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport const gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport const gridArea = style({\n prop: 'gridArea'\n});\nconst grid = compose(gap, columnGap, rowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea);\nexport default grid;","import style from './style';\nimport compose from './compose';\nexport function paletteTransform(value, userValue) {\n if (userValue === 'grey') {\n return userValue;\n }\n return value;\n}\nexport const color = style({\n prop: 'color',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const bgcolor = style({\n prop: 'bgcolor',\n cssProperty: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nexport const backgroundColor = style({\n prop: 'backgroundColor',\n themeKey: 'palette',\n transform: paletteTransform\n});\nconst palette = compose(color, bgcolor, backgroundColor);\nexport default palette;","import style from './style';\nimport compose from './compose';\nimport { handleBreakpoints, values as breakpointsValues } from './breakpoints';\nexport function sizingTransform(value) {\n return value <= 1 && value !== 0 ? `${value * 100}%` : value;\n}\nexport const width = style({\n prop: 'width',\n transform: sizingTransform\n});\nexport const maxWidth = props => {\n if (props.maxWidth !== undefined && props.maxWidth !== null) {\n const styleFromPropValue = propValue => {\n var _props$theme, _props$theme$breakpoi, _props$theme$breakpoi2;\n const breakpoint = ((_props$theme = props.theme) == null ? void 0 : (_props$theme$breakpoi = _props$theme.breakpoints) == null ? void 0 : (_props$theme$breakpoi2 = _props$theme$breakpoi.values) == null ? void 0 : _props$theme$breakpoi2[propValue]) || breakpointsValues[propValue];\n return {\n maxWidth: breakpoint || sizingTransform(propValue)\n };\n };\n return handleBreakpoints(props, props.maxWidth, styleFromPropValue);\n }\n return null;\n};\nmaxWidth.filterProps = ['maxWidth'];\nexport const minWidth = style({\n prop: 'minWidth',\n transform: sizingTransform\n});\nexport const height = style({\n prop: 'height',\n transform: sizingTransform\n});\nexport const maxHeight = style({\n prop: 'maxHeight',\n transform: sizingTransform\n});\nexport const minHeight = style({\n prop: 'minHeight',\n transform: sizingTransform\n});\nexport const sizeWidth = style({\n prop: 'size',\n cssProperty: 'width',\n transform: sizingTransform\n});\nexport const sizeHeight = style({\n prop: 'size',\n cssProperty: 'height',\n transform: sizingTransform\n});\nexport const boxSizing = style({\n prop: 'boxSizing'\n});\nconst sizing = compose(width, maxWidth, minWidth, height, maxHeight, minHeight, boxSizing);\nexport default sizing;","import { padding, margin } from '../spacing';\nimport { borderRadius, borderTransform } from '../borders';\nimport { gap, rowGap, columnGap } from '../cssGrid';\nimport { paletteTransform } from '../palette';\nimport { maxWidth, sizingTransform } from '../sizing';\nconst defaultSxConfig = {\n // borders\n border: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderTop: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderRight: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderBottom: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderLeft: {\n themeKey: 'borders',\n transform: borderTransform\n },\n borderColor: {\n themeKey: 'palette'\n },\n borderTopColor: {\n themeKey: 'palette'\n },\n borderRightColor: {\n themeKey: 'palette'\n },\n borderBottomColor: {\n themeKey: 'palette'\n },\n borderLeftColor: {\n themeKey: 'palette'\n },\n borderRadius: {\n themeKey: 'shape.borderRadius',\n style: borderRadius\n },\n // palette\n color: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n bgcolor: {\n themeKey: 'palette',\n cssProperty: 'backgroundColor',\n transform: paletteTransform\n },\n backgroundColor: {\n themeKey: 'palette',\n transform: paletteTransform\n },\n // spacing\n p: {\n style: padding\n },\n pt: {\n style: padding\n },\n pr: {\n style: padding\n },\n pb: {\n style: padding\n },\n pl: {\n style: padding\n },\n px: {\n style: padding\n },\n py: {\n style: padding\n },\n padding: {\n style: padding\n },\n paddingTop: {\n style: padding\n },\n paddingRight: {\n style: padding\n },\n paddingBottom: {\n style: padding\n },\n paddingLeft: {\n style: padding\n },\n paddingX: {\n style: padding\n },\n paddingY: {\n style: padding\n },\n paddingInline: {\n style: padding\n },\n paddingInlineStart: {\n style: padding\n },\n paddingInlineEnd: {\n style: padding\n },\n paddingBlock: {\n style: padding\n },\n paddingBlockStart: {\n style: padding\n },\n paddingBlockEnd: {\n style: padding\n },\n m: {\n style: margin\n },\n mt: {\n style: margin\n },\n mr: {\n style: margin\n },\n mb: {\n style: margin\n },\n ml: {\n style: margin\n },\n mx: {\n style: margin\n },\n my: {\n style: margin\n },\n margin: {\n style: margin\n },\n marginTop: {\n style: margin\n },\n marginRight: {\n style: margin\n },\n marginBottom: {\n style: margin\n },\n marginLeft: {\n style: margin\n },\n marginX: {\n style: margin\n },\n marginY: {\n style: margin\n },\n marginInline: {\n style: margin\n },\n marginInlineStart: {\n style: margin\n },\n marginInlineEnd: {\n style: margin\n },\n marginBlock: {\n style: margin\n },\n marginBlockStart: {\n style: margin\n },\n marginBlockEnd: {\n style: margin\n },\n // display\n displayPrint: {\n cssProperty: false,\n transform: value => ({\n '@media print': {\n display: value\n }\n })\n },\n display: {},\n overflow: {},\n textOverflow: {},\n visibility: {},\n whiteSpace: {},\n // flexbox\n flexBasis: {},\n flexDirection: {},\n flexWrap: {},\n justifyContent: {},\n alignItems: {},\n alignContent: {},\n order: {},\n flex: {},\n flexGrow: {},\n flexShrink: {},\n alignSelf: {},\n justifyItems: {},\n justifySelf: {},\n // grid\n gap: {\n style: gap\n },\n rowGap: {\n style: rowGap\n },\n columnGap: {\n style: columnGap\n },\n gridColumn: {},\n gridRow: {},\n gridAutoFlow: {},\n gridAutoColumns: {},\n gridAutoRows: {},\n gridTemplateColumns: {},\n gridTemplateRows: {},\n gridTemplateAreas: {},\n gridArea: {},\n // positions\n position: {},\n zIndex: {\n themeKey: 'zIndex'\n },\n top: {},\n right: {},\n bottom: {},\n left: {},\n // shadows\n boxShadow: {\n themeKey: 'shadows'\n },\n // sizing\n width: {\n transform: sizingTransform\n },\n maxWidth: {\n style: maxWidth\n },\n minWidth: {\n transform: sizingTransform\n },\n height: {\n transform: sizingTransform\n },\n maxHeight: {\n transform: sizingTransform\n },\n minHeight: {\n transform: sizingTransform\n },\n boxSizing: {},\n // typography\n fontFamily: {\n themeKey: 'typography'\n },\n fontSize: {\n themeKey: 'typography'\n },\n fontStyle: {\n themeKey: 'typography'\n },\n fontWeight: {\n themeKey: 'typography'\n },\n letterSpacing: {},\n textTransform: {},\n lineHeight: {},\n textAlign: {},\n typography: {\n cssProperty: false,\n themeKey: 'typography'\n }\n};\nexport default defaultSxConfig;","import { unstable_capitalize as capitalize } from '@mui/utils';\nimport merge from '../merge';\nimport { getPath, getStyleValue as getValue } from '../style';\nimport { handleBreakpoints, createEmptyBreakpointObject, removeUnusedBreakpoints } from '../breakpoints';\nimport defaultSxConfig from './defaultSxConfig';\nfunction objectsHaveSameKeys(...objects) {\n const allKeys = objects.reduce((keys, object) => keys.concat(Object.keys(object)), []);\n const union = new Set(allKeys);\n return objects.every(object => union.size === Object.keys(object).length);\n}\nfunction callIfFn(maybeFn, arg) {\n return typeof maybeFn === 'function' ? maybeFn(arg) : maybeFn;\n}\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function unstable_createStyleFunctionSx() {\n function getThemeValue(prop, val, theme, config) {\n const props = {\n [prop]: val,\n theme\n };\n const options = config[prop];\n if (!options) {\n return {\n [prop]: val\n };\n }\n const {\n cssProperty = prop,\n themeKey,\n transform,\n style\n } = options;\n if (val == null) {\n return null;\n }\n if (themeKey === 'typography' && val === 'inherit') {\n return {\n [prop]: val\n };\n }\n const themeMapping = getPath(theme, themeKey) || {};\n if (style) {\n return style(props);\n }\n const styleFromPropValue = propValueFinal => {\n let value = getValue(themeMapping, transform, propValueFinal);\n if (propValueFinal === value && typeof propValueFinal === 'string') {\n // Haven't found value\n value = getValue(themeMapping, transform, `${prop}${propValueFinal === 'default' ? '' : capitalize(propValueFinal)}`, propValueFinal);\n }\n if (cssProperty === false) {\n return value;\n }\n return {\n [cssProperty]: value\n };\n };\n return handleBreakpoints(props, val, styleFromPropValue);\n }\n function styleFunctionSx(props) {\n var _theme$unstable_sxCon;\n const {\n sx,\n theme = {}\n } = props || {};\n if (!sx) {\n return null; // Emotion & styled-components will neglect null\n }\n\n const config = (_theme$unstable_sxCon = theme.unstable_sxConfig) != null ? _theme$unstable_sxCon : defaultSxConfig;\n\n /*\n * Receive `sxInput` as object or callback\n * and then recursively check keys & values to create media query object styles.\n * (the result will be used in `styled`)\n */\n function traverse(sxInput) {\n let sxObject = sxInput;\n if (typeof sxInput === 'function') {\n sxObject = sxInput(theme);\n } else if (typeof sxInput !== 'object') {\n // value\n return sxInput;\n }\n if (!sxObject) {\n return null;\n }\n const emptyBreakpoints = createEmptyBreakpointObject(theme.breakpoints);\n const breakpointsKeys = Object.keys(emptyBreakpoints);\n let css = emptyBreakpoints;\n Object.keys(sxObject).forEach(styleKey => {\n const value = callIfFn(sxObject[styleKey], theme);\n if (value !== null && value !== undefined) {\n if (typeof value === 'object') {\n if (config[styleKey]) {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n } else {\n const breakpointsValues = handleBreakpoints({\n theme\n }, value, x => ({\n [styleKey]: x\n }));\n if (objectsHaveSameKeys(breakpointsValues, value)) {\n css[styleKey] = styleFunctionSx({\n sx: value,\n theme\n });\n } else {\n css = merge(css, breakpointsValues);\n }\n }\n } else {\n css = merge(css, getThemeValue(styleKey, value, theme, config));\n }\n }\n });\n return removeUnusedBreakpoints(breakpointsKeys, css);\n }\n return Array.isArray(sx) ? sx.map(traverse) : traverse(sx);\n }\n return styleFunctionSx;\n}\nconst styleFunctionSx = unstable_createStyleFunctionSx();\nstyleFunctionSx.filterProps = ['sx'];\nexport default styleFunctionSx;","import createTheme from './createTheme';\nimport useThemeWithoutDefault from './useThemeWithoutDefault';\nexport const systemDefaultTheme = createTheme();\nfunction useTheme(defaultTheme = systemDefaultTheme) {\n return useThemeWithoutDefault(defaultTheme);\n}\nexport default useTheme;","import getThemeProps from './getThemeProps';\nimport useTheme from '../useTheme';\nexport default function useThemeProps({\n props,\n name,\n defaultTheme,\n themeId\n}) {\n let theme = useTheme(defaultTheme);\n if (themeId) {\n theme = theme[themeId] || theme;\n }\n const mergedProps = getThemeProps({\n theme,\n name,\n props\n });\n return mergedProps;\n}","import { internal_resolveProps as resolveProps } from '@mui/utils';\nexport default function getThemeProps(params) {\n const {\n theme,\n name,\n props\n } = params;\n if (!theme || !theme.components || !theme.components[name] || !theme.components[name].defaultProps) {\n return props;\n }\n return resolveProps(theme.components[name].defaultProps, props);\n}","import * as React from 'react';\nimport { ThemeContext } from '@mui/styled-engine';\nfunction isObjectEmpty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction useTheme(defaultTheme = null) {\n const contextTheme = React.useContext(ThemeContext);\n return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme : contextTheme;\n}\nexport default useTheme;","const defaultGenerator = componentName => componentName;\nconst createClassNameGenerator = () => {\n let generate = defaultGenerator;\n return {\n configure(generator) {\n generate = generator;\n },\n generate(componentName) {\n return generate(componentName);\n },\n reset() {\n generate = defaultGenerator;\n }\n };\n};\nconst ClassNameGenerator = createClassNameGenerator();\nexport default ClassNameGenerator;","import _formatMuiErrorMessage from \"./formatMuiErrorMessage\";\n// It should to be noted that this function isn't equivalent to `text-transform: capitalize`.\n//\n// A strict capitalization should uppercase the first letter of each word in the sentence.\n// We only handle the first word.\nexport default function capitalize(string) {\n if (typeof string !== 'string') {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: \\`capitalize(string)\\` expects a string argument.` : _formatMuiErrorMessage(7));\n }\n return string.charAt(0).toUpperCase() + string.slice(1);\n}","export default function composeClasses(slots, getUtilityClass, classes = undefined) {\n const output = {};\n Object.keys(slots).forEach(\n // `Objet.keys(slots)` can't be wider than `T` because we infer `T` from `slots`.\n // @ts-expect-error https://github.com/microsoft/TypeScript/pull/12253#issuecomment-263132208\n slot => {\n output[slot] = slots[slot].reduce((acc, key) => {\n if (key) {\n const utilityClass = getUtilityClass(key);\n if (utilityClass !== '') {\n acc.push(utilityClass);\n }\n if (classes && classes[key]) {\n acc.push(classes[key]);\n }\n }\n return acc;\n }, []).join(' ');\n });\n return output;\n}","/**\n * Safe chained function.\n *\n * Will only create a new function if needed,\n * otherwise will pass back existing functions or null.\n */\nexport default function createChainedFunction(...funcs) {\n return funcs.reduce((acc, func) => {\n if (func == null) {\n return acc;\n }\n return function chainedFunction(...args) {\n acc.apply(this, args);\n func.apply(this, args);\n };\n }, () => {});\n}","// Corresponds to 10 frames at 60 Hz.\n// A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\nexport default function debounce(func, wait = 166) {\n let timeout;\n function debounced(...args) {\n const later = () => {\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n return debounced;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nexport function isPlainObject(item) {\n return item !== null && typeof item === 'object' && item.constructor === Object;\n}\nfunction deepClone(source) {\n if (!isPlainObject(source)) {\n return source;\n }\n const output = {};\n Object.keys(source).forEach(key => {\n output[key] = deepClone(source[key]);\n });\n return output;\n}\nexport default function deepmerge(target, source, options = {\n clone: true\n}) {\n const output = options.clone ? _extends({}, target) : target;\n if (isPlainObject(target) && isPlainObject(source)) {\n Object.keys(source).forEach(key => {\n // Avoid prototype pollution\n if (key === '__proto__') {\n return;\n }\n if (isPlainObject(source[key]) && key in target && isPlainObject(target[key])) {\n // Since `output` is a clone of `target` and we have narrowed `target` in this block we can cast to the same type.\n output[key] = deepmerge(target[key], source[key], options);\n } else if (options.clone) {\n output[key] = isPlainObject(source[key]) ? deepClone(source[key]) : source[key];\n } else {\n output[key] = source[key];\n }\n });\n }\n return output;\n}","/**\n * WARNING: Don't import this directly.\n * Use `MuiError` from `@mui/utils/macros/MuiError.macro` instead.\n * @param {number} code\n */\nexport default function formatMuiErrorMessage(code) {\n // Apply babel-plugin-transform-template-literals in loose mode\n // loose mode is safe iff we're concatenating primitives\n // see https://babeljs.io/docs/en/babel-plugin-transform-template-literals#loose\n /* eslint-disable prefer-template */\n let url = 'https://mui.com/production-error/?code=' + code;\n for (let i = 1; i < arguments.length; i += 1) {\n // rest params over-transpile for this case\n // eslint-disable-next-line prefer-rest-params\n url += '&args[]=' + encodeURIComponent(arguments[i]);\n }\n return 'Minified MUI error #' + code + '; visit ' + url + ' for the full message.';\n /* eslint-enable prefer-template */\n}","import ClassNameGenerator from '../ClassNameGenerator';\nconst globalStateClassesMapping = {\n active: 'active',\n checked: 'checked',\n completed: 'completed',\n disabled: 'disabled',\n readOnly: 'readOnly',\n error: 'error',\n expanded: 'expanded',\n focused: 'focused',\n focusVisible: 'focusVisible',\n required: 'required',\n selected: 'selected'\n};\nexport default function generateUtilityClass(componentName, slot, globalStatePrefix = 'Mui') {\n const globalStateClass = globalStateClassesMapping[slot];\n return globalStateClass ? `${globalStatePrefix}-${globalStateClass}` : `${ClassNameGenerator.generate(componentName)}-${slot}`;\n}","import generateUtilityClass from '../generateUtilityClass';\nexport default function generateUtilityClasses(componentName, slots, globalStatePrefix = 'Mui') {\n const result = {};\n slots.forEach(slot => {\n result[slot] = generateUtilityClass(componentName, slot, globalStatePrefix);\n });\n return result;\n}","export default function ownerDocument(node) {\n return node && node.ownerDocument || document;\n}","import ownerDocument from './ownerDocument';\nexport default function ownerWindow(node) {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Add keys, values of `defaultProps` that does not exist in `props`\n * @param {object} defaultProps\n * @param {object} props\n * @returns {object} resolved props\n */\nexport default function resolveProps(defaultProps, props) {\n const output = _extends({}, props);\n Object.keys(defaultProps).forEach(propName => {\n if (propName.toString().match(/^(components|slots)$/)) {\n output[propName] = _extends({}, defaultProps[propName], output[propName]);\n } else if (propName.toString().match(/^(componentsProps|slotProps)$/)) {\n const defaultSlotProps = defaultProps[propName] || {};\n const slotProps = props[propName];\n output[propName] = {};\n if (!slotProps || !Object.keys(slotProps)) {\n // Reduce the iteration if the slot props is empty\n output[propName] = defaultSlotProps;\n } else if (!defaultSlotProps || !Object.keys(defaultSlotProps)) {\n // Reduce the iteration if the default slot props is empty\n output[propName] = slotProps;\n } else {\n output[propName] = _extends({}, slotProps);\n Object.keys(defaultSlotProps).forEach(slotPropName => {\n output[propName][slotPropName] = resolveProps(defaultSlotProps[slotPropName], slotProps[slotPropName]);\n });\n }\n } else if (output[propName] === undefined) {\n output[propName] = defaultProps[propName];\n }\n });\n return output;\n}","/**\n * TODO v5: consider making it private\n *\n * passes {value} to {ref}\n *\n * WARNING: Be sure to only call this inside a callback that is passed as a ref.\n * Otherwise, make sure to cleanup the previous {ref} if it changes. See\n * https://github.com/mui/material-ui/issues/13539\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nexport default function setRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}","/* eslint-disable react-hooks/rules-of-hooks, react-hooks/exhaustive-deps */\nimport * as React from 'react';\nexport default function useControlled({\n controlled,\n default: defaultProp,\n name,\n state = 'value'\n}) {\n // isControlled is ignored in the hook dependency lists as it should never change.\n const {\n current: isControlled\n } = React.useRef(controlled !== undefined);\n const [valueState, setValue] = React.useState(defaultProp);\n const value = isControlled ? controlled : valueState;\n if (process.env.NODE_ENV !== 'production') {\n React.useEffect(() => {\n if (isControlled !== (controlled !== undefined)) {\n console.error([`MUI: A component is changing the ${isControlled ? '' : 'un'}controlled ${state} state of ${name} to be ${isControlled ? 'un' : ''}controlled.`, 'Elements should not switch from uncontrolled to controlled (or vice versa).', `Decide between using a controlled or uncontrolled ${name} ` + 'element for the lifetime of the component.', \"The nature of the state is determined during the first render. It's considered controlled if the value is not `undefined`.\", 'More info: https://fb.me/react-controlled-components'].join('\\n'));\n }\n }, [state, name, controlled]);\n const {\n current: defaultValue\n } = React.useRef(defaultProp);\n React.useEffect(() => {\n if (!isControlled && defaultValue !== defaultProp) {\n console.error([`MUI: A component is changing the default ${state} state of an uncontrolled ${name} after being initialized. ` + `To suppress this warning opt to use a controlled ${name}.`].join('\\n'));\n }\n }, [JSON.stringify(defaultProp)]);\n }\n const setValueIfUncontrolled = React.useCallback(newValue => {\n if (!isControlled) {\n setValue(newValue);\n }\n }, []);\n return [value, setValueIfUncontrolled];\n}","import * as React from 'react';\nconst useEnhancedEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nexport default useEnhancedEffect;","import * as React from 'react';\nimport useEnhancedEffect from './useEnhancedEffect';\n\n/**\n * https://github.com/facebook/react/issues/14099#issuecomment-440013892\n */\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n return React.useCallback((...args) =>\n // @ts-expect-error hide `this`\n // tslint:disable-next-line:ban-comma-operator\n (0, ref.current)(...args), []);\n}","import * as React from 'react';\nimport setRef from './setRef';\nexport default function useForkRef(...refs) {\n /**\n * This will create a new function if the refs passed to this hook change and are all defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refs.every(ref => ref == null)) {\n return null;\n }\n return instance => {\n refs.forEach(ref => {\n setRef(ref, instance);\n });\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, refs);\n}","import * as React from 'react';\nlet globalId = 0;\nfunction useGlobalId(idOverride) {\n const [defaultId, setDefaultId] = React.useState(idOverride);\n const id = idOverride || defaultId;\n React.useEffect(() => {\n if (defaultId == null) {\n // Fallback to this default id when possible.\n // Use the incrementing value for client-side rendering only.\n // We can't use it server-side.\n // If you want to use random values please consider the Birthday Problem: https://en.wikipedia.org/wiki/Birthday_problem\n globalId += 1;\n setDefaultId(`mui-${globalId}`);\n }\n }, [defaultId]);\n return id;\n}\n\n// eslint-disable-next-line no-useless-concat -- Workaround for https://github.com/webpack/webpack/issues/14814\nconst maybeReactUseId = React['useId' + ''];\n/**\n *\n * @example

\n * @param idOverride\n * @returns {string}\n */\nexport default function useId(idOverride) {\n if (maybeReactUseId !== undefined) {\n const reactId = maybeReactUseId();\n return idOverride != null ? idOverride : reactId;\n }\n // eslint-disable-next-line react-hooks/rules-of-hooks -- `React.useId` is invariant at runtime.\n return useGlobalId(idOverride);\n}","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t 0 ? childrenData.hasTranscludedContent : false);\n if (template) {\n childrenData.templates.push(template);\n }\n });\n return {\n fullName: fullName,\n predefinedOptions: element.descriptor.predefinedValuesProps,\n initialOptions: separatedValues.defaults,\n options: separatedValues.options,\n templates: childrenData.templates,\n configCollections: childrenData.configCollections,\n configs: childrenData.configs,\n };\n}\nfunction buildConfigTree(widgetDescriptor, props) {\n return createConfigNode({\n type: element_1.ElementType.Option,\n descriptor: __assign({ name: '', isCollection: false }, widgetDescriptor),\n props: props,\n }, '');\n}\nexports.buildConfigTree = buildConfigTree;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findValueInObject = exports.findValue = exports.buildTemplates = exports.buildNode = exports.buildConfig = exports.ValueType = void 0;\nvar utils_1 = require(\"./utils\");\nfunction buildTemplates(node, optionsAccum, templatesAccum) {\n node.templates.forEach(function (template) {\n if (template.isAnonymous) {\n var templateName = utils_1.mergeNameParts(node.fullName, template.optionName);\n optionsAccum[template.optionName] = templateName;\n templatesAccum[templateName] = template;\n }\n else {\n templatesAccum[template.optionName] = template;\n }\n });\n}\nexports.buildTemplates = buildTemplates;\nfunction buildNode(node, templatesAccum, ignoreInitialValues) {\n var result = {};\n Object.keys(node.predefinedOptions).forEach(function (key) {\n result[key] = node.predefinedOptions[key];\n });\n Object.keys(node.configs).forEach(function (key) {\n result[key] = buildNode(node.configs[key], templatesAccum, ignoreInitialValues);\n });\n Object.keys(node.configCollections).forEach(function (key) {\n result[key] = node.configCollections[key].map(function (item) { return buildNode(item, templatesAccum, ignoreInitialValues); });\n });\n if (!ignoreInitialValues) {\n Object.keys(node.initialOptions).forEach(function (key) {\n result[key] = node.initialOptions[key];\n });\n }\n Object.keys(node.options).forEach(function (key) {\n result[key] = node.options[key];\n });\n buildTemplates(node, result, templatesAccum);\n return result;\n}\nexports.buildNode = buildNode;\nfunction buildConfig(root, ignoreInitialValues) {\n var templatesAccum = {};\n var options = buildNode(root, templatesAccum, ignoreInitialValues);\n return {\n templates: templatesAccum,\n options: options,\n };\n}\nexports.buildConfig = buildConfig;\nvar ValueType;\n(function (ValueType) {\n ValueType[ValueType[\"Simple\"] = 0] = \"Simple\";\n ValueType[ValueType[\"Complex\"] = 1] = \"Complex\";\n ValueType[ValueType[\"Array\"] = 2] = \"Array\";\n})(ValueType || (ValueType = {}));\nexports.ValueType = ValueType;\nfunction findValueInObject(obj, path) {\n var key = path.shift();\n if (!key) {\n return {\n value: obj,\n type: ValueType.Simple,\n };\n }\n if (obj instanceof Object && Object.keys(obj).includes(key)) {\n return findValueInObject(obj[key], path);\n }\n return undefined;\n}\nexports.findValueInObject = findValueInObject;\nfunction findValue(node, path) {\n var name = path.shift();\n if (!name) {\n return {\n value: buildConfig(node, true).options,\n type: ValueType.Complex,\n };\n }\n var optionInfo = utils_1.parseOptionName(name);\n if (optionInfo.name in node.options) {\n var options = optionInfo.isCollectionItem\n ? node.options[optionInfo.name][optionInfo.index]\n : node.options[optionInfo.name];\n return findValueInObject(options, path);\n }\n if (optionInfo.isCollectionItem) {\n var collection = node.configCollections[optionInfo.name];\n if (!collection) {\n return undefined;\n }\n var item = collection[optionInfo.index];\n if (!item) {\n return undefined;\n }\n return findValue(item, path);\n }\n var child = node.configs[optionInfo.name];\n if (child) {\n return findValue(child, path);\n }\n var childCollection = node.configCollections[optionInfo.name];\n if (childCollection) {\n if (path.length !== 0) {\n return undefined;\n }\n return {\n value: childCollection.map(function (item) { return buildNode(item, {}, true); }),\n type: ValueType.Array,\n };\n }\n return undefined;\n}\nexports.findValue = findValue;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.shallowEquals = exports.isIE = exports.parseOptionName = exports.mergeNameParts = void 0;\nfunction mergeNameParts() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return args.filter(function (value) { return value; }).join('.');\n}\nexports.mergeNameParts = mergeNameParts;\nfunction parseOptionName(name) {\n var parts = name.split('[');\n if (parts.length === 1) {\n return {\n isCollectionItem: false,\n name: name,\n };\n }\n return {\n isCollectionItem: true,\n name: parts[0],\n index: Number(parts[1].slice(0, -1)),\n };\n}\nexports.parseOptionName = parseOptionName;\nvar isIE = function () {\n var _a, _b;\n var ua = (_b = (_a = window === null || window === void 0 ? void 0 : window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) !== null && _b !== void 0 ? _b : ''; // Check the userAgent property of the window.navigator object\n var msie = ua.indexOf('MSIE'); // IE 10 or older\n var trident = ua.indexOf('Trident/'); // IE 11\n return (msie > 0 || trident > 0);\n};\nexports.isIE = isIE;\nvar shallowEquals = function (first, second) {\n if (Object.keys(first).length !== Object.keys(second).length) {\n return false;\n }\n return Object.keys(first).every(function (key) { return first[key] === second[key]; });\n};\nexports.shallowEquals = shallowEquals;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDxTemplate = void 0;\nvar React = require(\"react\");\nvar events = require(\"devextreme/events\");\nvar helpers_1 = require(\"./helpers\");\nvar template_wrapper_1 = require(\"./template-wrapper\");\nvar component_base_1 = require(\"./component-base\");\nfunction unwrapElement(element) {\n return element.get ? element.get(0) : element;\n}\nfunction createDxTemplate(createContentProvider, templatesStore, keyFn) {\n var renderedTemplates = new helpers_1.DoubleKeyMap();\n return {\n render: function (data) {\n var container = unwrapElement(data.container);\n var key = { key1: data.model, key2: container };\n var prevTemplateId = renderedTemplates.get(key);\n var templateId;\n var onRemoved = function () {\n templatesStore.setDeferredRemove(templateId, true);\n renderedTemplates.delete(key);\n };\n var _subscribeOnContainerRemoval = function () {\n if (container.nodeType === Node.ELEMENT_NODE) {\n events.one(container, component_base_1.DX_REMOVE_EVENT, onRemoved);\n }\n };\n var _unsubscribeOnContainerRemoval = function () {\n if (container.nodeType === Node.ELEMENT_NODE) {\n events.off(container, component_base_1.DX_REMOVE_EVENT, onRemoved);\n }\n };\n if (prevTemplateId) {\n templateId = prevTemplateId;\n }\n else {\n templateId = keyFn ? keyFn(data.model) : \"__template_\" + helpers_1.generateID();\n if (data.model !== undefined) {\n renderedTemplates.set(key, templateId);\n }\n }\n _subscribeOnContainerRemoval();\n templatesStore.add(templateId, function () {\n var props = {\n data: data.model,\n index: data.index,\n };\n var contentProvider = createContentProvider();\n return React.createElement(template_wrapper_1.TemplateWrapper, {\n content: contentProvider(props),\n container: container,\n onRemoved: onRemoved,\n onDidMount: function () {\n var _a;\n _unsubscribeOnContainerRemoval();\n templatesStore.setDeferredRemove(templateId, false);\n (_a = data.onRendered) === null || _a === void 0 ? void 0 : _a.call(data);\n },\n key: templateId,\n });\n });\n return container;\n },\n };\n}\nexports.createDxTemplate = createDxTemplate;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nvar __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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExtensionComponent = void 0;\nvar component_base_1 = require(\"./component-base\");\nvar ExtensionComponent = /** @class */ (function (_super) {\n __extends(ExtensionComponent, _super);\n function ExtensionComponent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ExtensionComponent.prototype.componentDidMount = function () {\n var onMounted = this.props.onMounted;\n if (onMounted) {\n onMounted(this._createWidget);\n }\n else {\n this._createWidget();\n }\n };\n return ExtensionComponent;\n}(component_base_1.ComponentBase));\nexports.ExtensionComponent = ExtensionComponent;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.capitalizeFirstLetter = exports.DoubleKeyMap = exports.generateID = void 0;\nfunction generateID() {\n return Math.random().toString(36).substr(2);\n}\nexports.generateID = generateID;\nvar DoubleKeyMap = /** @class */ (function () {\n function DoubleKeyMap() {\n this._map = new Map();\n }\n DoubleKeyMap.prototype.set = function (_a, value) {\n var key1 = _a.key1, key2 = _a.key2;\n var innerMap = this._map.get(key1);\n if (!innerMap) {\n innerMap = new Map();\n this._map.set(key1, innerMap);\n }\n innerMap.set(key2, value);\n };\n DoubleKeyMap.prototype.get = function (_a) {\n var key1 = _a.key1, key2 = _a.key2;\n var innerMap = this._map.get(key1);\n return innerMap ? innerMap.get(key2) : undefined;\n };\n DoubleKeyMap.prototype.delete = function (_a) {\n var key1 = _a.key1, key2 = _a.key2;\n var innerMap = this._map.get(key1);\n if (!innerMap) {\n return;\n }\n innerMap.delete(key2);\n if (innerMap.size === 0) {\n this._map.delete(key1);\n }\n };\n return DoubleKeyMap;\n}());\nexports.DoubleKeyMap = DoubleKeyMap;\nfunction capitalizeFirstLetter(text) {\n if (text.length) {\n return \"\" + text[0].toUpperCase() + text.substr(1);\n }\n return '';\n}\nexports.capitalizeFirstLetter = capitalizeFirstLetter;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nvar __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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nvar element_1 = require(\"./configuration/react/element\");\nvar NestedOption = /** @class */ (function (_super) {\n __extends(NestedOption, _super);\n function NestedOption() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n NestedOption.prototype.render = function () {\n var stateChildren = this.props.children;\n var children = React.Children.map(stateChildren, function (child) {\n var childElementInfo = element_1.getElementInfo(child);\n return childElementInfo.type === element_1.ElementType.Option ? child : null;\n });\n return React.createElement(React.Fragment, {}, children);\n };\n return NestedOption;\n}(React.PureComponent));\nexports.default = NestedOption;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OptionsManager = exports.scheduleGuards = exports.unscheduleGuards = void 0;\n/* eslint-disable no-restricted-globals */\nvar comparer_1 = require(\"./configuration/comparer\");\nvar tree_1 = require(\"./configuration/tree\");\nvar utils_1 = require(\"./configuration/utils\");\nvar helpers_1 = require(\"./helpers\");\nvar optionsManagers = new Set();\nvar guardTimeoutHandler = -1;\nfunction unscheduleGuards() {\n clearTimeout(guardTimeoutHandler);\n}\nexports.unscheduleGuards = unscheduleGuards;\nfunction scheduleGuards() {\n unscheduleGuards();\n guardTimeoutHandler = window.setTimeout(function () {\n optionsManagers.forEach(function (optionManager) { return optionManager.execGuards(); });\n });\n}\nexports.scheduleGuards = scheduleGuards;\nvar OptionsManager = /** @class */ (function () {\n function OptionsManager(templatesManager) {\n this.guards = {};\n this.isUpdating = false;\n this.templatesManager = templatesManager;\n optionsManagers.add(this);\n this.onOptionChanged = this.onOptionChanged.bind(this);\n this.wrapOptionValue = this.wrapOptionValue.bind(this);\n }\n OptionsManager.prototype.setInstance = function (instance, config, subscribableOptions, independentEvents) {\n this.instance = instance;\n this.currentConfig = config;\n this.subscribableOptions = new Set(subscribableOptions);\n this.independentEvents = new Set(independentEvents);\n };\n OptionsManager.prototype.getInitialOptions = function (rootNode) {\n var _this = this;\n var config = tree_1.buildConfig(rootNode, false);\n Object.keys(config.templates).forEach(function (key) {\n _this.templatesManager.add(key, config.templates[key]);\n });\n var options = {};\n Object.keys(config.options).forEach(function (key) {\n options[key] = _this.wrapOptionValue(key, config.options[key]);\n });\n if (this.templatesManager.templatesCount > 0) {\n options.integrationOptions = {\n templates: this.templatesManager.templates,\n };\n }\n return options;\n };\n OptionsManager.prototype.update = function (config) {\n var _this = this;\n var changedOptions = [];\n var optionChangedHandler = function (_a) {\n var value = _a.value, fullName = _a.fullName;\n changedOptions.push([fullName, value]);\n };\n this.instance.on('optionChanged', optionChangedHandler);\n var changes = comparer_1.getChanges(config, this.currentConfig);\n if (!changes.options && !changes.templates && !changes.removedOptions.length) {\n return;\n }\n this.instance.beginUpdate();\n this.isUpdating = true;\n changes.removedOptions.forEach(function (optionName) {\n _this.resetOption(optionName);\n });\n Object.keys(changes.templates).forEach(function (key) {\n _this.templatesManager.add(key, changes.templates[key]);\n });\n if (this.templatesManager.templatesCount > 0) {\n this.setValue('integrationOptions', {\n templates: this.templatesManager.templates,\n });\n }\n Object.keys(changes.options).forEach(function (key) {\n _this.setValue(key, changes.options[key]);\n });\n this.isUpdating = false;\n this.instance.off('optionChanged', optionChangedHandler);\n this.currentConfig = config;\n changedOptions.forEach(function (_a) {\n var name = _a[0], value = _a[1];\n var currentPropValue = config.options[name];\n if (Object.prototype.hasOwnProperty.call(config.options, name)\n && currentPropValue !== value) {\n _this.setValue(name, currentPropValue);\n }\n });\n this.instance.endUpdate();\n };\n OptionsManager.prototype.onOptionChanged = function (e) {\n var _this = this;\n var _a;\n if (this.isUpdating) {\n return;\n }\n var valueDescriptor = tree_1.findValue(this.currentConfig, e.fullName.split('.'));\n if (!valueDescriptor || valueDescriptor.value !== e.value) {\n this.callOptionChangeHandler(e.fullName, e.value);\n }\n valueDescriptor = tree_1.findValue(this.currentConfig, e.fullName.split('.'));\n if (!valueDescriptor) {\n return;\n }\n var value = valueDescriptor.value, type = valueDescriptor.type;\n if (value instanceof Array && type === tree_1.ValueType.Array) {\n for (var i = 0; i < value.length; i += 1) {\n if (value[i] !== ((_a = e.value) === null || _a === void 0 ? void 0 : _a[i])) {\n this.addGuard(e.fullName, value);\n return;\n }\n }\n }\n else if (type === tree_1.ValueType.Complex && value instanceof Object) {\n Object.keys(value).forEach(function (key) {\n var _a;\n if (value[key] === ((_a = e.value) === null || _a === void 0 ? void 0 : _a[key])) {\n return;\n }\n _this.addGuard(utils_1.mergeNameParts(e.fullName, key), value[key]);\n });\n }\n else {\n var valuesAreEqual = value === e.value;\n var valuesAreEqualObjects = !valuesAreEqual\n && value instanceof Object\n && e.value instanceof Object\n && utils_1.shallowEquals(value, e.value);\n if (valuesAreEqual || valuesAreEqualObjects || this.instance.skipOptionsRollBack) {\n return;\n }\n this.addGuard(e.fullName, value);\n }\n };\n OptionsManager.prototype.dispose = function () {\n var _this = this;\n optionsManagers.delete(this);\n Object.keys(this.guards).forEach(function (optionName) {\n delete _this.guards[optionName];\n });\n };\n OptionsManager.prototype.isOptionSubscribable = function (optionName) {\n return this.subscribableOptions.has(optionName);\n };\n OptionsManager.prototype.isIndependentEvent = function (optionName) {\n return this.independentEvents.has(optionName);\n };\n OptionsManager.prototype.callOptionChangeHandler = function (optionName, optionValue) {\n if (!this.isOptionSubscribable(optionName)) {\n return;\n }\n var parts = optionName.split('.');\n var propName = parts[parts.length - 1];\n if (propName.startsWith('on')) {\n return;\n }\n var eventName = \"on\" + helpers_1.capitalizeFirstLetter(propName) + \"Change\";\n parts[parts.length - 1] = eventName;\n var changeEvent = tree_1.findValue(this.currentConfig, parts);\n if (!changeEvent) {\n return;\n }\n if (typeof changeEvent.value !== 'function') {\n throw new Error(\"Invalid value for the \" + eventName + \" property.\\n \" + eventName + \" must be a function.\");\n }\n changeEvent.value(optionValue);\n };\n OptionsManager.prototype.wrapOptionValue = function (name, value) {\n var _this = this;\n if (name.substr(0, 2) === 'on' && typeof value === 'function') {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (!_this.isUpdating || _this.isIndependentEvent(name)) {\n value.apply(void 0, args);\n }\n };\n }\n return value;\n };\n OptionsManager.prototype.addGuard = function (optionName, optionValue) {\n var _this = this;\n if (this.guards[optionName] !== undefined) {\n return;\n }\n var handler = function () {\n _this.setValue(optionName, optionValue);\n delete _this.guards[optionName];\n };\n this.guards[optionName] = handler;\n scheduleGuards();\n };\n OptionsManager.prototype.execGuards = function () {\n Object.values(this.guards)\n .forEach(function (handler) { return handler(); });\n };\n OptionsManager.prototype.resetOption = function (name) {\n this.instance.resetOption(name);\n };\n OptionsManager.prototype.setValue = function (name, value) {\n if (this.guards[name]) {\n delete this.guards[name];\n }\n this.instance.option(name, this.wrapOptionValue(name, value));\n };\n return OptionsManager;\n}());\nexports.OptionsManager = OptionsManager;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nvar __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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateWrapper = void 0;\nvar events = require(\"devextreme/events\");\nvar React = require(\"react\");\nvar ReactDOM = require(\"react-dom\");\nvar component_base_1 = require(\"./component-base\");\nvar removalListenerStyle = { display: 'none' };\nvar TableNodeNames;\n(function (TableNodeNames) {\n TableNodeNames[\"TABLE\"] = \"tbody\";\n TableNodeNames[\"TBODY\"] = \"tr\";\n})(TableNodeNames || (TableNodeNames = {}));\nvar TemplateWrapper = /** @class */ (function (_super) {\n __extends(TemplateWrapper, _super);\n function TemplateWrapper(props) {\n var _this = _super.call(this, props) || this;\n _this._removalListenerRef = React.createRef();\n _this.state = { removalListenerRequired: false };\n _this._onDxRemove = _this._onDxRemove.bind(_this);\n _this.getPreviousSiblingNode = _this.getPreviousSiblingNode.bind(_this);\n return _this;\n }\n TemplateWrapper.prototype.componentDidMount = function () {\n var _a, _b;\n this._subscribeOnRemove();\n (_b = (_a = this.props).onDidMount) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n TemplateWrapper.prototype.componentDidUpdate = function () {\n this._subscribeOnRemove();\n };\n TemplateWrapper.prototype.componentWillUnmount = function () {\n // Let React remove it itself\n var node = this.element;\n var hiddenNode = this.hiddenElement;\n var container = this.props.container;\n if (node) {\n container.appendChild(node);\n }\n if (hiddenNode) {\n container.appendChild(hiddenNode);\n }\n if (this._listenerElement) {\n container.appendChild(this._listenerElement);\n }\n };\n Object.defineProperty(TemplateWrapper.prototype, \"_listenerElement\", {\n get: function () {\n return this._removalListenerRef.current;\n },\n enumerable: false,\n configurable: true\n });\n TemplateWrapper.prototype.getPreviousSiblingNode = function (node) {\n this.hiddenElement = node;\n this.element = node === null || node === void 0 ? void 0 : node.previousSibling;\n };\n TemplateWrapper.prototype._subscribeOnRemove = function () {\n var node = this.element;\n var removalListenerRequired = this.state.removalListenerRequired;\n if (node && node.nodeType === Node.ELEMENT_NODE) {\n this._subscribeOnElementRemoval(node);\n return;\n }\n if (!removalListenerRequired) {\n this.setState({ removalListenerRequired: true });\n return;\n }\n if (this._listenerElement) {\n this._subscribeOnElementRemoval(this._listenerElement);\n }\n };\n TemplateWrapper.prototype._subscribeOnElementRemoval = function (element) {\n events.off(element, component_base_1.DX_REMOVE_EVENT, this._onDxRemove);\n events.one(element, component_base_1.DX_REMOVE_EVENT, this._onDxRemove);\n };\n TemplateWrapper.prototype._onDxRemove = function () {\n var onRemoved = this.props.onRemoved;\n onRemoved();\n };\n TemplateWrapper.prototype.render = function () {\n var removalListenerRequired = this.state.removalListenerRequired;\n var _a = this.props, content = _a.content, container = _a.container;\n var removalListener = removalListenerRequired\n ? React.createElement('span', { style: removalListenerStyle, ref: this._removalListenerRef })\n : undefined;\n var nodeName = TableNodeNames[container.nodeName] || 'div';\n return ReactDOM.createPortal(React.createElement(React.Fragment, null, content, content && React.createElement(nodeName, { style: { display: 'none' }, ref: this.getPreviousSiblingNode }), removalListener), container);\n };\n return TemplateWrapper;\n}(React.PureComponent));\nexports.TemplateWrapper = TemplateWrapper;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nvar __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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findProps = exports.Template = void 0;\nvar PropTypes = require(\"prop-types\");\nvar React = require(\"react\");\nvar Template = /** @class */ (function (_super) {\n __extends(Template, _super);\n function Template() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Template.prototype.render = function () {\n return null;\n };\n return Template;\n}(React.PureComponent));\nexports.Template = Template;\nvar requiredPropsCheck = function (props) {\n if (!props.component && !props.render && !props.children) {\n return new Error(\"The Template component requires 'component' or 'render' property\");\n }\n return null;\n};\nTemplate.propTypes = {\n name: PropTypes.string.isRequired,\n component: requiredPropsCheck,\n render: requiredPropsCheck,\n children: requiredPropsCheck,\n};\nfunction findProps(child) {\n if (child.type !== Template) {\n return undefined;\n }\n return {\n name: child.props.name,\n render: child.props.render,\n component: child.props.component,\n children: child.props.children,\n keyFn: child.props.keyFn,\n };\n}\nexports.findProps = findProps;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar React = require(\"react\");\nvar config_1 = require(\"./config\");\nvar dx_template_1 = require(\"./dx-template\");\nfunction normalizeProps(props) {\n if (config_1.getOption('useLegacyTemplateEngine')) {\n var model = props.data;\n if (model && Object.prototype.hasOwnProperty.call(model, 'key')) {\n model.dxkey = model.key;\n }\n return model;\n }\n return props;\n}\nvar contentCreators = {\n component: function (contentGetter) { return function (props) {\n props = normalizeProps(props);\n return React.createElement.bind(null, contentGetter())(props);\n }; },\n render: function (contentGetter) { return function (props) {\n normalizeProps(props);\n return contentGetter()(props.data, props.index);\n }; },\n children: function (contentGetter) { return function () { return contentGetter(); }; },\n};\nvar TemplatesManager = /** @class */ (function () {\n function TemplatesManager(templatesStore) {\n this._templates = {};\n this._templatesContent = {};\n this._templatesStore = templatesStore;\n }\n TemplatesManager.prototype.add = function (name, template) {\n var _this = this;\n this._templatesContent[name] = template.content;\n var contentCreator = contentCreators[template.type]\n .bind(this, function () { return _this._templatesContent[name]; });\n this._templates[name] = dx_template_1.createDxTemplate(contentCreator, this._templatesStore, template.keyFn);\n };\n Object.defineProperty(TemplatesManager.prototype, \"templatesCount\", {\n get: function () {\n return Object.keys(this._templates).length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TemplatesManager.prototype, \"templates\", {\n get: function () {\n return this._templates;\n },\n enumerable: false,\n configurable: true\n });\n return TemplatesManager;\n}());\nexports.default = TemplatesManager;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nvar __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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplatesRenderer = void 0;\nvar frame_1 = require(\"devextreme/animation/frame\");\nvar common_1 = require(\"devextreme/core/utils/common\");\nvar React = require(\"react\");\nvar TemplatesRenderer = /** @class */ (function (_super) {\n __extends(TemplatesRenderer, _super);\n function TemplatesRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.updateScheduled = false;\n _this.mounted = false;\n _this.shouldRepeatForceUpdate = false;\n _this.isUpdateFuncLaunched = false;\n return _this;\n }\n TemplatesRenderer.prototype.componentDidMount = function () {\n this.mounted = true;\n };\n TemplatesRenderer.prototype.componentWillUnmount = function () {\n this.mounted = false;\n };\n TemplatesRenderer.prototype.scheduleUpdate = function (useDeferUpdate, onRendered) {\n var _this = this;\n if (this.updateScheduled) {\n this.shouldRepeatForceUpdate = this.isUpdateFuncLaunched;\n return;\n }\n this.updateScheduled = true;\n var updateFunc = useDeferUpdate ? common_1.deferUpdate : frame_1.requestAnimationFrame;\n updateFunc(function () {\n if (_this.mounted) {\n _this.isUpdateFuncLaunched = true;\n _this.forceUpdate(function () {\n _this.updateScheduled = false;\n onRendered === null || onRendered === void 0 ? void 0 : onRendered();\n if (_this.shouldRepeatForceUpdate) {\n _this.shouldRepeatForceUpdate = false;\n _this.forceUpdate();\n }\n });\n }\n _this.isUpdateFuncLaunched = false;\n _this.updateScheduled = false;\n });\n };\n TemplatesRenderer.prototype.render = function () {\n var templatesStore = this.props.templatesStore;\n return React.createElement(React.Fragment, {}, templatesStore.renderWrappers());\n };\n return TemplatesRenderer;\n}(React.PureComponent));\nexports.TemplatesRenderer = TemplatesRenderer;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplatesStore = void 0;\nvar TemplatesStore = /** @class */ (function () {\n function TemplatesStore(onTemplateAdded) {\n this._templates = {};\n this._onTemplateAdded = onTemplateAdded;\n }\n TemplatesStore.prototype.add = function (templateId, templateFunc) {\n this._templates[templateId] = { template: templateFunc, isDeferredRemove: false };\n this._onTemplateAdded();\n };\n TemplatesStore.prototype.setDeferredRemove = function (templateId, isDeferredRemove) {\n if (this._templates[templateId]) {\n this._templates[templateId].isDeferredRemove = isDeferredRemove;\n }\n };\n TemplatesStore.prototype.removeDefferedTemplate = function () {\n var _this = this;\n Object.entries(this._templates)\n .filter(function (_a) {\n var templateInfo = _a[1];\n return (templateInfo.isDeferredRemove);\n })\n .forEach(function (_a) {\n var templateId = _a[0];\n delete _this._templates[templateId];\n });\n };\n TemplatesStore.prototype.renderWrappers = function () {\n var _this = this;\n this.removeDefferedTemplate();\n return Object.getOwnPropertyNames(this._templates).map(function (templateId) { return _this._templates[templateId].template(); });\n };\n return TemplatesStore;\n}());\nexports.TemplatesStore = TemplatesStore;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.separateProps = exports.getClassName = exports.elementPropNames = void 0;\nvar elementPropNames = ['style', 'id'];\nexports.elementPropNames = elementPropNames;\nvar classNamePropName = 'className';\nvar refPropName = ['dropZone', 'dialogTrigger'];\nfunction isIgnoredProp(name) {\n return name === 'children' || name === classNamePropName || elementPropNames.indexOf(name) > -1;\n}\nfunction separateProps(props, defaultsProps, templateProps) {\n templateProps = templateProps || [];\n var defaults = {};\n var options = {};\n var templates = {};\n var knownTemplates = {};\n templateProps.forEach(function (value) {\n knownTemplates[value.component] = true;\n knownTemplates[value.render] = true;\n });\n Object.keys(props).forEach(function (key) {\n var defaultOptionName = defaultsProps ? defaultsProps[key] : null;\n var value = props[key];\n if (isIgnoredProp(key)) {\n return;\n }\n if (defaultOptionName) {\n defaults[defaultOptionName] = value;\n return;\n }\n if (knownTemplates[key]) {\n templates[key] = value;\n return;\n }\n if (refPropName.includes(key)) {\n options[key] = value && value.current ? value.current : value;\n return;\n }\n options[key] = value;\n });\n return { options: options, defaults: defaults, templates: templates };\n}\nexports.separateProps = separateProps;\nfunction getClassName(props) {\n return props[classNamePropName];\n}\nexports.getClassName = getClassName;\n","/*!\n * devextreme-react\n * Version: 23.1.6\n * Build date: Fri Oct 13 2023\n *\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\n *\n * This software may be modified and distributed under the terms\n * of the MIT license. See the LICENSE file in the root of the project for details.\n *\n * https://github.com/DevExpress/devextreme-react\n */\n\n\"use strict\";\nvar __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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.View = exports.Scrolling = exports.Resource = exports.Editing = exports.AppointmentDragging = exports.Scheduler = void 0;\nvar scheduler_1 = require(\"devextreme/ui/scheduler\");\nvar PropTypes = require(\"prop-types\");\nvar component_1 = require(\"./core/component\");\nvar nested_option_1 = require(\"./core/nested-option\");\nvar Scheduler = /** @class */ (function (_super) {\n __extends(Scheduler, _super);\n function Scheduler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._WidgetClass = scheduler_1.default;\n _this.subscribableOptions = [\"currentDate\", \"currentView\"];\n _this.independentEvents = [\"onAppointmentAdded\", \"onAppointmentAdding\", \"onAppointmentClick\", \"onAppointmentContextMenu\", \"onAppointmentDblClick\", \"onAppointmentDeleted\", \"onAppointmentDeleting\", \"onAppointmentFormOpening\", \"onAppointmentRendered\", \"onAppointmentTooltipShowing\", \"onAppointmentUpdated\", \"onAppointmentUpdating\", \"onCellClick\", \"onCellContextMenu\", \"onContentReady\", \"onDisposing\", \"onInitialized\"];\n _this._defaults = {\n defaultCurrentDate: \"currentDate\",\n defaultCurrentView: \"currentView\"\n };\n _this._expectedChildren = {\n appointmentDragging: { optionName: \"appointmentDragging\", isCollectionItem: false },\n editing: { optionName: \"editing\", isCollectionItem: false },\n resource: { optionName: \"resources\", isCollectionItem: true },\n scrolling: { optionName: \"scrolling\", isCollectionItem: false },\n view: { optionName: \"views\", isCollectionItem: true }\n };\n _this._templateProps = [{\n tmplOption: \"appointmentCollectorTemplate\",\n render: \"appointmentCollectorRender\",\n component: \"appointmentCollectorComponent\",\n keyFn: \"appointmentCollectorKeyFn\"\n }, {\n tmplOption: \"appointmentTemplate\",\n render: \"appointmentRender\",\n component: \"appointmentComponent\",\n keyFn: \"appointmentKeyFn\"\n }, {\n tmplOption: \"appointmentTooltipTemplate\",\n render: \"appointmentTooltipRender\",\n component: \"appointmentTooltipComponent\",\n keyFn: \"appointmentTooltipKeyFn\"\n }, {\n tmplOption: \"dataCellTemplate\",\n render: \"dataCellRender\",\n component: \"dataCellComponent\",\n keyFn: \"dataCellKeyFn\"\n }, {\n tmplOption: \"dateCellTemplate\",\n render: \"dateCellRender\",\n component: \"dateCellComponent\",\n keyFn: \"dateCellKeyFn\"\n }, {\n tmplOption: \"dropDownAppointmentTemplate\",\n render: \"dropDownAppointmentRender\",\n component: \"dropDownAppointmentComponent\",\n keyFn: \"dropDownAppointmentKeyFn\"\n }, {\n tmplOption: \"resourceCellTemplate\",\n render: \"resourceCellRender\",\n component: \"resourceCellComponent\",\n keyFn: \"resourceCellKeyFn\"\n }, {\n tmplOption: \"timeCellTemplate\",\n render: \"timeCellRender\",\n component: \"timeCellComponent\",\n keyFn: \"timeCellKeyFn\"\n }];\n return _this;\n }\n Object.defineProperty(Scheduler.prototype, \"instance\", {\n get: function () {\n return this._instance;\n },\n enumerable: false,\n configurable: true\n });\n return Scheduler;\n}(component_1.Component));\nexports.Scheduler = Scheduler;\nScheduler.propTypes = {\n accessKey: PropTypes.string,\n adaptivityEnabled: PropTypes.bool,\n allDayExpr: PropTypes.string,\n allDayPanelMode: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.oneOf([\n \"all\",\n \"allDay\",\n \"hidden\"\n ])\n ]),\n appointmentDragging: PropTypes.object,\n cellDuration: PropTypes.number,\n crossScrollingEnabled: PropTypes.bool,\n currentView: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.oneOf([\n \"agenda\",\n \"day\",\n \"month\",\n \"timelineDay\",\n \"timelineMonth\",\n \"timelineWeek\",\n \"timelineWorkWeek\",\n \"week\",\n \"workWeek\"\n ])\n ]),\n customizeDateNavigatorText: PropTypes.func,\n dateSerializationFormat: PropTypes.string,\n descriptionExpr: PropTypes.string,\n disabled: PropTypes.bool,\n editing: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.object\n ]),\n elementAttr: PropTypes.object,\n endDateExpr: PropTypes.string,\n endDateTimeZoneExpr: PropTypes.string,\n endDayHour: PropTypes.number,\n firstDayOfWeek: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.oneOf([\n 0,\n 1,\n 2,\n 3,\n 4,\n 5,\n 6\n ])\n ]),\n focusStateEnabled: PropTypes.bool,\n groupByDate: PropTypes.bool,\n groups: PropTypes.array,\n height: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.number,\n PropTypes.string\n ]),\n hint: PropTypes.string,\n indicatorUpdateInterval: PropTypes.number,\n maxAppointmentsPerCell: PropTypes.oneOfType([\n PropTypes.number,\n PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.oneOf([\n \"auto\",\n \"unlimited\"\n ])\n ])\n ]),\n noDataText: PropTypes.string,\n onAppointmentAdded: PropTypes.func,\n onAppointmentAdding: PropTypes.func,\n onAppointmentClick: PropTypes.func,\n onAppointmentContextMenu: PropTypes.func,\n onAppointmentDblClick: PropTypes.func,\n onAppointmentDeleted: PropTypes.func,\n onAppointmentDeleting: PropTypes.func,\n onAppointmentFormOpening: PropTypes.func,\n onAppointmentRendered: PropTypes.func,\n onAppointmentTooltipShowing: PropTypes.func,\n onAppointmentUpdated: PropTypes.func,\n onAppointmentUpdating: PropTypes.func,\n onCellClick: PropTypes.func,\n onCellContextMenu: PropTypes.func,\n onContentReady: PropTypes.func,\n onDisposing: PropTypes.func,\n onInitialized: PropTypes.func,\n onOptionChanged: PropTypes.func,\n recurrenceEditMode: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.oneOf([\n \"dialog\",\n \"occurrence\",\n \"series\"\n ])\n ]),\n recurrenceExceptionExpr: PropTypes.string,\n recurrenceRuleExpr: PropTypes.string,\n remoteFiltering: PropTypes.bool,\n resources: PropTypes.array,\n rtlEnabled: PropTypes.bool,\n scrolling: PropTypes.object,\n selectedCellData: PropTypes.array,\n shadeUntilCurrentTime: PropTypes.bool,\n showAllDayPanel: PropTypes.bool,\n showCurrentTimeIndicator: PropTypes.bool,\n startDateExpr: PropTypes.string,\n startDateTimeZoneExpr: PropTypes.string,\n startDayHour: PropTypes.number,\n tabIndex: PropTypes.number,\n textExpr: PropTypes.string,\n timeZone: PropTypes.string,\n useDropDownViewSwitcher: PropTypes.bool,\n views: PropTypes.array,\n visible: PropTypes.bool,\n width: PropTypes.oneOfType([\n PropTypes.func,\n PropTypes.number,\n PropTypes.string\n ])\n};\nvar AppointmentDragging = /** @class */ (function (_super) {\n __extends(AppointmentDragging, _super);\n function AppointmentDragging() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AppointmentDragging.OptionName = \"appointmentDragging\";\n return AppointmentDragging;\n}(nested_option_1.default));\nexports.AppointmentDragging = AppointmentDragging;\nvar Editing = /** @class */ (function (_super) {\n __extends(Editing, _super);\n function Editing() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Editing.OptionName = \"editing\";\n return Editing;\n}(nested_option_1.default));\nexports.Editing = Editing;\nvar Resource = /** @class */ (function (_super) {\n __extends(Resource, _super);\n function Resource() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Resource.OptionName = \"resources\";\n Resource.IsCollectionItem = true;\n return Resource;\n}(nested_option_1.default));\nexports.Resource = Resource;\nvar Scrolling = /** @class */ (function (_super) {\n __extends(Scrolling, _super);\n function Scrolling() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Scrolling.OptionName = \"scrolling\";\n return Scrolling;\n}(nested_option_1.default));\nexports.Scrolling = Scrolling;\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n function View() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n View.OptionName = \"views\";\n View.IsCollectionItem = true;\n View.ExpectedChildren = {\n scrolling: { optionName: \"scrolling\", isCollectionItem: false }\n };\n View.TemplateProps = [{\n tmplOption: \"appointmentCollectorTemplate\",\n render: \"appointmentCollectorRender\",\n component: \"appointmentCollectorComponent\",\n keyFn: \"appointmentCollectorKeyFn\"\n }, {\n tmplOption: \"appointmentTemplate\",\n render: \"appointmentRender\",\n component: \"appointmentComponent\",\n keyFn: \"appointmentKeyFn\"\n }, {\n tmplOption: \"appointmentTooltipTemplate\",\n render: \"appointmentTooltipRender\",\n component: \"appointmentTooltipComponent\",\n keyFn: \"appointmentTooltipKeyFn\"\n }, {\n tmplOption: \"dataCellTemplate\",\n render: \"dataCellRender\",\n component: \"dataCellComponent\",\n keyFn: \"dataCellKeyFn\"\n }, {\n tmplOption: \"dateCellTemplate\",\n render: \"dateCellRender\",\n component: \"dateCellComponent\",\n keyFn: \"dateCellKeyFn\"\n }, {\n tmplOption: \"dropDownAppointmentTemplate\",\n render: \"dropDownAppointmentRender\",\n component: \"dropDownAppointmentComponent\",\n keyFn: \"dropDownAppointmentKeyFn\"\n }, {\n tmplOption: \"resourceCellTemplate\",\n render: \"resourceCellRender\",\n component: \"resourceCellComponent\",\n keyFn: \"resourceCellKeyFn\"\n }, {\n tmplOption: \"timeCellTemplate\",\n render: \"timeCellRender\",\n component: \"timeCellComponent\",\n keyFn: \"timeCellKeyFn\"\n }];\n return View;\n}(nested_option_1.default));\nexports.View = View;\nexports.default = Scheduler;\n","/**\r\n * DevExtreme (esm/animation/frame.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = hasWindow() ? getWindow() : {};\r\nimport callOnce from \"../core/utils/call_once\";\r\nvar FRAME_ANIMATION_STEP_TIME = 1e3 / 60;\r\nvar request = function(callback) {\r\n return setTimeout(callback, FRAME_ANIMATION_STEP_TIME)\r\n};\r\nvar cancel = function(requestID) {\r\n clearTimeout(requestID)\r\n};\r\nvar setAnimationFrameMethods = callOnce((function() {\r\n var nativeRequest = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame;\r\n var nativeCancel = window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || window.oCancelAnimationFrame || window.msCancelAnimationFrame;\r\n if (nativeRequest && nativeCancel) {\r\n request = nativeRequest;\r\n cancel = nativeCancel\r\n }\r\n}));\r\nexport function requestAnimationFrame() {\r\n setAnimationFrameMethods();\r\n return request.apply(window, arguments)\r\n}\r\nexport function cancelAnimationFrame() {\r\n setAnimationFrameMethods();\r\n cancel.apply(window, arguments)\r\n}\r\n","/**\r\n * DevExtreme (esm/core/class.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"./errors\";\r\nimport {\r\n isWindow\r\n} from \"./utils/type\";\r\nvar wrapOverridden = function(baseProto, methodName, method) {\r\n return function() {\r\n var prevCallBase = this.callBase;\r\n this.callBase = baseProto[methodName];\r\n try {\r\n return method.apply(this, arguments)\r\n } finally {\r\n this.callBase = prevCallBase\r\n }\r\n }\r\n};\r\nvar clonePrototype = function(obj) {\r\n var func = function() {};\r\n func.prototype = obj.prototype;\r\n return new func\r\n};\r\nvar redefine = function(members) {\r\n var overridden;\r\n var memberName;\r\n var member;\r\n if (!members) {\r\n return this\r\n }\r\n for (memberName in members) {\r\n member = members[memberName];\r\n overridden = \"function\" === typeof this.prototype[memberName] && \"function\" === typeof member;\r\n this.prototype[memberName] = overridden ? wrapOverridden(this.parent.prototype, memberName, member) : member\r\n }\r\n return this\r\n};\r\nvar include = function() {\r\n var classObj = this;\r\n var argument;\r\n var name;\r\n var i;\r\n var hasClassObjOwnProperty = Object.prototype.hasOwnProperty.bind(classObj);\r\n var isES6Class = !hasClassObjOwnProperty(\"_includedCtors\") && !hasClassObjOwnProperty(\"_includedPostCtors\");\r\n if (isES6Class) {\r\n classObj._includedCtors = classObj._includedCtors.slice(0);\r\n classObj._includedPostCtors = classObj._includedPostCtors.slice(0)\r\n }\r\n for (i = 0; i < arguments.length; i++) {\r\n argument = arguments[i];\r\n if (argument.ctor) {\r\n classObj._includedCtors.push(argument.ctor)\r\n }\r\n if (argument.postCtor) {\r\n classObj._includedPostCtors.push(argument.postCtor)\r\n }\r\n for (name in argument) {\r\n if (\"ctor\" === name || \"postCtor\" === name || \"default\" === name) {\r\n continue\r\n }\r\n classObj.prototype[name] = argument[name]\r\n }\r\n }\r\n return classObj\r\n};\r\nvar subclassOf = function(parentClass) {\r\n var hasParentProperty = Object.prototype.hasOwnProperty.bind(this)(\"parent\");\r\n var isES6Class = !hasParentProperty && this.parent;\r\n if (isES6Class) {\r\n var baseClass = Object.getPrototypeOf(this);\r\n return baseClass === parentClass || baseClass.subclassOf(parentClass)\r\n } else {\r\n if (this.parent === parentClass) {\r\n return true\r\n }\r\n if (!this.parent || !this.parent.subclassOf) {\r\n return false\r\n }\r\n return this.parent.subclassOf(parentClass)\r\n }\r\n};\r\nvar abstract = function() {\r\n throw errors.Error(\"E0001\")\r\n};\r\nvar copyStatic = function() {\r\n var hasOwn = Object.prototype.hasOwnProperty;\r\n return function(source, destination) {\r\n for (var key in source) {\r\n if (!hasOwn.call(source, key)) {\r\n return\r\n }\r\n destination[key] = source[key]\r\n }\r\n }\r\n}();\r\nvar classImpl = function() {};\r\nclassImpl.inherit = function(members) {\r\n var inheritor = function() {\r\n if (!this || isWindow(this) || \"function\" !== typeof this.constructor) {\r\n throw errors.Error(\"E0003\")\r\n }\r\n var instance = this;\r\n var ctor = instance.ctor;\r\n var includedCtors = instance.constructor._includedCtors;\r\n var includedPostCtors = instance.constructor._includedPostCtors;\r\n var i;\r\n for (i = 0; i < includedCtors.length; i++) {\r\n includedCtors[i].call(instance)\r\n }\r\n if (ctor) {\r\n ctor.apply(instance, arguments)\r\n }\r\n for (i = 0; i < includedPostCtors.length; i++) {\r\n includedPostCtors[i].call(instance)\r\n }\r\n };\r\n inheritor.prototype = clonePrototype(this);\r\n copyStatic(this, inheritor);\r\n inheritor.inherit = this.inherit;\r\n inheritor.abstract = abstract;\r\n inheritor.redefine = redefine;\r\n inheritor.include = include;\r\n inheritor.subclassOf = subclassOf;\r\n inheritor.parent = this;\r\n inheritor._includedCtors = this._includedCtors ? this._includedCtors.slice(0) : [];\r\n inheritor._includedPostCtors = this._includedPostCtors ? this._includedPostCtors.slice(0) : [];\r\n inheritor.prototype.constructor = inheritor;\r\n inheritor.redefine(members);\r\n return inheritor\r\n};\r\nclassImpl.abstract = abstract;\r\nexport default classImpl;\r\n","/**\r\n * DevExtreme (esm/core/config.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport errors from \"./errors\";\r\nvar config = {\r\n rtlEnabled: false,\r\n defaultCurrency: \"USD\",\r\n defaultUseCurrencyAccountingStyle: true,\r\n oDataFilterToLower: true,\r\n serverDecimalSeparator: \".\",\r\n decimalSeparator: \".\",\r\n thousandsSeparator: \",\",\r\n forceIsoDateParsing: true,\r\n wrapActionsBeforeExecute: true,\r\n useLegacyStoreResult: false,\r\n useJQuery: void 0,\r\n editorStylingMode: void 0,\r\n useLegacyVisibleIndex: false,\r\n floatingActionButtonConfig: {\r\n icon: \"add\",\r\n closeIcon: \"close\",\r\n label: \"\",\r\n position: {\r\n at: \"right bottom\",\r\n my: \"right bottom\",\r\n offset: {\r\n x: -16,\r\n y: -16\r\n }\r\n },\r\n maxSpeedDialActionCount: 5,\r\n shading: false,\r\n direction: \"auto\"\r\n },\r\n optionsParser: optionsString => {\r\n if (\"{\" !== optionsString.trim().charAt(0)) {\r\n optionsString = \"{\" + optionsString + \"}\"\r\n }\r\n try {\r\n return JSON.parse(optionsString)\r\n } catch (ex) {\r\n try {\r\n return JSON.parse(normalizeToJSONString(optionsString))\r\n } catch (exNormalize) {\r\n throw errors.Error(\"E3018\", ex, optionsString)\r\n }\r\n }\r\n }\r\n};\r\nvar normalizeToJSONString = optionsString => optionsString.replace(/'/g, '\"').replace(/,\\s*([\\]}])/g, \"$1\").replace(/([{,])\\s*([^\":\\s]+)\\s*:/g, '$1\"$2\":');\r\nvar deprecatedFields = [\"decimalSeparator\", \"thousandsSeparator\"];\r\nvar configMethod = function() {\r\n if (!arguments.length) {\r\n return config\r\n }\r\n var newConfig = arguments.length <= 0 ? void 0 : arguments[0];\r\n deprecatedFields.forEach(deprecatedField => {\r\n if (newConfig[deprecatedField]) {\r\n var message = \"Now, the \".concat(deprecatedField, \" is selected based on the specified locale.\");\r\n errors.log(\"W0003\", \"config\", deprecatedField, \"19.2\", message)\r\n }\r\n });\r\n extend(config, newConfig)\r\n};\r\nif (\"undefined\" !== typeof DevExpress && DevExpress.config) {\r\n configMethod(DevExpress.config)\r\n}\r\nexport default configMethod;\r\n","/**\r\n * DevExtreme (esm/core/dom_adapter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport injector from \"./utils/dependency_injector\";\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n getShadowElementsFromPoint\r\n} from \"./utils/shadow_dom\";\r\nvar ELEMENT_NODE = 1;\r\nvar TEXT_NODE = 3;\r\nvar DOCUMENT_NODE = 9;\r\nvar DOCUMENT_FRAGMENT_NODE = 11;\r\nvar nativeDOMAdapterStrategy = {\r\n querySelectorAll: (element, selector) => element.querySelectorAll(selector),\r\n elementMatches(element, selector) {\r\n var matches = element.matches || element.matchesSelector || element.mozMatchesSelector || element.msMatchesSelector || element.oMatchesSelector || element.webkitMatchesSelector || (selector => {\r\n var doc = element.document || element.ownerDocument;\r\n if (!doc) {\r\n return false\r\n }\r\n var items = this.querySelectorAll(doc, selector);\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] === element) {\r\n return true\r\n }\r\n }\r\n });\r\n return matches.call(element, selector)\r\n },\r\n createElement(tagName, context) {\r\n context = context || this._document;\r\n return context.createElement(tagName)\r\n },\r\n createElementNS(ns, tagName, context) {\r\n context = context || this._document;\r\n return context.createElementNS(ns, tagName)\r\n },\r\n createTextNode(text, context) {\r\n context = context || this._document;\r\n return context.createTextNode(text)\r\n },\r\n createAttribute(text, context) {\r\n context = context || this._document;\r\n return context.createAttribute(text)\r\n },\r\n isNode: element => element && \"object\" === typeof element && \"nodeType\" in element && \"nodeName\" in element,\r\n isElementNode: element => element && element.nodeType === ELEMENT_NODE,\r\n isTextNode: element => element && element.nodeType === TEXT_NODE,\r\n isDocument: element => element && element.nodeType === DOCUMENT_NODE,\r\n isDocumentFragment: element => element && element.nodeType === DOCUMENT_FRAGMENT_NODE,\r\n removeElement(element) {\r\n var parentNode = element && element.parentNode;\r\n if (parentNode) {\r\n parentNode.removeChild(element)\r\n }\r\n },\r\n insertElement(parentElement, newElement, nextSiblingElement) {\r\n if (parentElement && newElement && parentElement !== newElement) {\r\n if (nextSiblingElement) {\r\n parentElement.insertBefore(newElement, nextSiblingElement)\r\n } else {\r\n parentElement.appendChild(newElement)\r\n }\r\n }\r\n },\r\n getAttribute: (element, name) => element.getAttribute(name),\r\n setAttribute(element, name, value) {\r\n if (\"style\" === name) {\r\n element.style.cssText = value\r\n } else {\r\n element.setAttribute(name, value)\r\n }\r\n },\r\n removeAttribute(element, name) {\r\n element.removeAttribute(name)\r\n },\r\n setProperty(element, name, value) {\r\n element[name] = value\r\n },\r\n setText(element, text) {\r\n if (element) {\r\n element.textContent = text\r\n }\r\n },\r\n setClass(element, className, isAdd) {\r\n if (1 === element.nodeType && className) {\r\n isAdd ? element.classList.add(className) : element.classList.remove(className)\r\n }\r\n },\r\n setStyle(element, name, value) {\r\n element.style[name] = value || \"\"\r\n },\r\n _document: \"undefined\" === typeof document ? void 0 : document,\r\n getDocument() {\r\n return this._document\r\n },\r\n getActiveElement(element) {\r\n var activeElementHolder = this.getRootNode(element);\r\n return activeElementHolder.activeElement\r\n },\r\n getRootNode(element) {\r\n var _element$getRootNode, _element$getRootNode2;\r\n return null !== (_element$getRootNode = null === element || void 0 === element ? void 0 : null === (_element$getRootNode2 = element.getRootNode) || void 0 === _element$getRootNode2 ? void 0 : _element$getRootNode2.call(element)) && void 0 !== _element$getRootNode ? _element$getRootNode : this._document\r\n },\r\n getBody() {\r\n return this._document.body\r\n },\r\n createDocumentFragment() {\r\n return this._document.createDocumentFragment()\r\n },\r\n getDocumentElement() {\r\n return this._document.documentElement\r\n },\r\n getLocation() {\r\n return this._document.location\r\n },\r\n getSelection() {\r\n return this._document.selection\r\n },\r\n getReadyState() {\r\n return this._document.readyState\r\n },\r\n getHead() {\r\n return this._document.head\r\n },\r\n hasDocumentProperty(property) {\r\n return property in this._document\r\n },\r\n listen(element, event, callback, options) {\r\n if (!element || !(\"addEventListener\" in element)) {\r\n return noop\r\n }\r\n element.addEventListener(event, callback, options);\r\n return () => {\r\n element.removeEventListener(event, callback)\r\n }\r\n },\r\n elementsFromPoint(x, y, element) {\r\n var activeElementHolder = this.getRootNode(element);\r\n if (activeElementHolder.host) {\r\n return getShadowElementsFromPoint(x, y, activeElementHolder)\r\n }\r\n return activeElementHolder.elementsFromPoint(x, y)\r\n }\r\n};\r\nexport default injector(nativeDOMAdapterStrategy);\r\n","/**\r\n * DevExtreme (esm/core/errors.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"./utils/error\";\r\nexport default errorUtils({\r\n E0001: \"Method is not implemented\",\r\n E0002: \"Member name collision: {0}\",\r\n E0003: \"A class must be instantiated using the 'new' keyword\",\r\n E0004: \"The NAME property of the component is not specified\",\r\n E0005: \"Unknown device\",\r\n E0006: \"Unknown endpoint key is requested\",\r\n E0007: \"'Invalidate' method is called outside the update transaction\",\r\n E0008: \"Type of the option name is not appropriate to create an action\",\r\n E0009: \"Component '{0}' has not been initialized for an element\",\r\n E0010: \"Animation configuration with the '{0}' type requires '{1}' configuration as {2}\",\r\n E0011: \"Unknown animation type '{0}'\",\r\n E0012: \"jQuery version is too old. Please upgrade jQuery to 1.10.0 or later\",\r\n E0013: \"KnockoutJS version is too old. Please upgrade KnockoutJS to 2.3.0 or later\",\r\n E0014: \"The 'release' method shouldn't be called for an unlocked Lock object\",\r\n E0015: \"Queued task returned an unexpected result\",\r\n E0017: \"Event namespace is not defined\",\r\n E0018: \"DevExpress.ui.DevExpressPopup widget is required\",\r\n E0020: \"Template engine '{0}' is not supported\",\r\n E0021: \"Unknown theme is set: {0}\",\r\n E0022: \"LINK[rel=DevExpress-theme] tags must go before DevExpress included scripts\",\r\n E0023: \"Template name is not specified\",\r\n E0024: \"DevExtreme bundle already included\",\r\n E0025: \"Unexpected argument type\",\r\n E0100: \"Unknown validation type is detected\",\r\n E0101: \"Misconfigured range validation rule is detected\",\r\n E0102: \"Misconfigured comparison validation rule is detected\",\r\n E0103: \"validationCallback of an asynchronous rule should return a jQuery or a native promise\",\r\n E0110: \"Unknown validation group is detected\",\r\n E0120: \"Adapter for a DevExpressValidator component cannot be configured\",\r\n E0121: \"The 'customItem' parameter of the 'onCustomItemCreating' function is empty or contains invalid data. Assign a custom object or a Promise that is resolved after the item is created.\",\r\n W0000: \"'{0}' is deprecated in {1}. {2}\",\r\n W0001: \"{0} - '{1}' option is deprecated in {2}. {3}\",\r\n W0002: \"{0} - '{1}' method is deprecated in {2}. {3}\",\r\n W0003: \"{0} - '{1}' property is deprecated in {2}. {3}\",\r\n W0004: \"Timeout for theme loading is over: {0}\",\r\n W0005: \"'{0}' event is deprecated in {1}. {2}\",\r\n W0006: \"Invalid recurrence rule: '{0}'\",\r\n W0007: \"'{0}' Globalize culture is not defined\",\r\n W0008: \"Invalid view name: '{0}'\",\r\n W0009: \"Invalid time zone name: '{0}'\",\r\n W0010: \"{0} is deprecated in {1}. {2}\",\r\n W0011: \"Number parsing is invoked while the parser is not defined\",\r\n W0012: \"Date parsing is invoked while the parser is not defined\",\r\n W0013: \"'{0}' file is deprecated in {1}. {2}\",\r\n W0014: \"{0} - '{1}' type is deprecated in {2}. {3}\",\r\n W0015: \"Instead of returning a value from the '{0}' function, write it into the '{1}' field of the function's parameter.\",\r\n W0016: 'The \"{0}\" option does not accept the \"{1}\" value since v{2}. {3}.',\r\n W0017: 'Setting the \"{0}\" property with a function is deprecated since v21.2',\r\n W0018: 'Setting the \"position\" property with a function is deprecated since v21.2'\r\n});\r\n","/**\r\n * DevExtreme (esm/core/guid.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"./class\";\r\nvar Guid = Class.inherit({\r\n ctor: function(value) {\r\n if (value) {\r\n value = String(value)\r\n }\r\n this._value = this._normalize(value || this._generate())\r\n },\r\n _normalize: function(value) {\r\n value = value.replace(/[^a-f0-9]/gi, \"\").toLowerCase();\r\n while (value.length < 32) {\r\n value += \"0\"\r\n }\r\n return [value.substr(0, 8), value.substr(8, 4), value.substr(12, 4), value.substr(16, 4), value.substr(20, 12)].join(\"-\")\r\n },\r\n _generate: function() {\r\n var value = \"\";\r\n for (var i = 0; i < 32; i++) {\r\n value += Math.round(15 * Math.random()).toString(16)\r\n }\r\n return value\r\n },\r\n toString: function() {\r\n return this._value\r\n },\r\n valueOf: function() {\r\n return this._value\r\n },\r\n toJSON: function() {\r\n return this._value\r\n }\r\n});\r\nexport default Guid;\r\n","/**\r\n * DevExtreme (esm/core/memorized_callbacks.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport Callbacks from \"./utils/callbacks\";\r\nexport default class MemorizedCallbacks {\r\n constructor() {\r\n this.memory = [];\r\n this.callbacks = Callbacks()\r\n }\r\n add(fn) {\r\n each(this.memory, (_, item) => fn.apply(fn, item));\r\n this.callbacks.add(fn)\r\n }\r\n remove(fn) {\r\n this.callbacks.remove(fn)\r\n }\r\n fire() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n this.memory.push(args);\r\n this.callbacks.fire.apply(this.callbacks, args)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/call_once.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar callOnce = function(handler) {\r\n var result;\r\n var _wrappedHandler = function() {\r\n result = handler.apply(this, arguments);\r\n _wrappedHandler = function() {\r\n return result\r\n };\r\n return result\r\n };\r\n return function() {\r\n return _wrappedHandler.apply(this, arguments)\r\n }\r\n};\r\nexport default callOnce;\r\n","/**\r\n * DevExtreme (esm/core/utils/callbacks.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar Callback = function(options) {\r\n this._options = options || {};\r\n this._list = [];\r\n this._queue = [];\r\n this._firing = false;\r\n this._fired = false;\r\n this._firingIndexes = []\r\n};\r\nCallback.prototype._fireCore = function(context, args) {\r\n var firingIndexes = this._firingIndexes;\r\n var list = this._list;\r\n var stopOnFalse = this._options.stopOnFalse;\r\n var step = firingIndexes.length;\r\n for (firingIndexes[step] = 0; firingIndexes[step] < list.length; firingIndexes[step]++) {\r\n var result = list[firingIndexes[step]].apply(context, args);\r\n if (false === result && stopOnFalse) {\r\n break\r\n }\r\n }\r\n firingIndexes.pop()\r\n};\r\nCallback.prototype.add = function(fn) {\r\n if (\"function\" === typeof fn && (!this._options.unique || !this.has(fn))) {\r\n this._list.push(fn)\r\n }\r\n return this\r\n};\r\nCallback.prototype.remove = function(fn) {\r\n var list = this._list;\r\n var firingIndexes = this._firingIndexes;\r\n var index = list.indexOf(fn);\r\n if (index > -1) {\r\n list.splice(index, 1);\r\n if (this._firing && firingIndexes.length) {\r\n for (var step = 0; step < firingIndexes.length; step++) {\r\n if (index <= firingIndexes[step]) {\r\n firingIndexes[step]--\r\n }\r\n }\r\n }\r\n }\r\n return this\r\n};\r\nCallback.prototype.has = function(fn) {\r\n var list = this._list;\r\n return fn ? list.indexOf(fn) > -1 : !!list.length\r\n};\r\nCallback.prototype.empty = function(fn) {\r\n this._list = [];\r\n return this\r\n};\r\nCallback.prototype.fireWith = function(context, args) {\r\n var queue = this._queue;\r\n args = args || [];\r\n args = args.slice ? args.slice() : args;\r\n if (this._options.syncStrategy) {\r\n this._firing = true;\r\n this._fireCore(context, args)\r\n } else {\r\n queue.push([context, args]);\r\n if (this._firing) {\r\n return\r\n }\r\n this._firing = true;\r\n while (queue.length) {\r\n var memory = queue.shift();\r\n this._fireCore(memory[0], memory[1])\r\n }\r\n }\r\n this._firing = false;\r\n this._fired = true;\r\n return this\r\n};\r\nCallback.prototype.fire = function() {\r\n this.fireWith(this, arguments)\r\n};\r\nCallback.prototype.fired = function() {\r\n return this._fired\r\n};\r\nvar Callbacks = function(options) {\r\n return new Callback(options)\r\n};\r\nexport default Callbacks;\r\n","/**\r\n * DevExtreme (esm/core/utils/common.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport config from \"../config\";\r\nimport Guid from \"../guid\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../utils/deferred\";\r\nimport {\r\n toComparable\r\n} from \"./data\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n isDefined,\r\n isFunction,\r\n isString,\r\n isObject,\r\n type\r\n} from \"./type\";\r\nexport var ensureDefined = function(value, defaultValue) {\r\n return isDefined(value) ? value : defaultValue\r\n};\r\nexport var executeAsync = function(action, context) {\r\n var deferred = new Deferred;\r\n var normalizedContext = context || this;\r\n var task = {\r\n promise: deferred.promise(),\r\n abort: function() {\r\n clearTimeout(timerId);\r\n deferred.rejectWith(normalizedContext)\r\n }\r\n };\r\n var callback = function() {\r\n var result = action.call(normalizedContext);\r\n if (result && result.done && isFunction(result.done)) {\r\n result.done((function() {\r\n deferred.resolveWith(normalizedContext)\r\n }))\r\n } else {\r\n deferred.resolveWith(normalizedContext)\r\n }\r\n };\r\n var timerId = (arguments[2] || setTimeout)(callback, \"number\" === typeof context ? context : 0);\r\n return task\r\n};\r\nvar delayedFuncs = [];\r\nvar delayedNames = [];\r\nvar delayedDeferreds = [];\r\nvar executingName;\r\nvar deferExecute = function(name, func, deferred) {\r\n if (executingName && executingName !== name) {\r\n delayedFuncs.push(func);\r\n delayedNames.push(name);\r\n deferred = deferred || new Deferred;\r\n delayedDeferreds.push(deferred);\r\n return deferred\r\n } else {\r\n var oldExecutingName = executingName;\r\n var currentDelayedCount = delayedDeferreds.length;\r\n executingName = name;\r\n var result = func();\r\n if (!result) {\r\n if (delayedDeferreds.length > currentDelayedCount) {\r\n result = when.apply(this, delayedDeferreds.slice(currentDelayedCount))\r\n } else if (deferred) {\r\n deferred.resolve()\r\n }\r\n }\r\n executingName = oldExecutingName;\r\n if (deferred && result && result.done) {\r\n result.done(deferred.resolve).fail(deferred.reject)\r\n }\r\n if (!executingName && delayedFuncs.length) {\r\n (\"render\" === delayedNames.shift() ? deferRender : deferUpdate)(delayedFuncs.shift(), delayedDeferreds.shift())\r\n }\r\n return result || when()\r\n }\r\n};\r\nexport var deferRender = function(func, deferred) {\r\n return deferExecute(\"render\", func, deferred)\r\n};\r\nexport var deferUpdate = function(func, deferred) {\r\n return deferExecute(\"update\", func, deferred)\r\n};\r\nexport var deferRenderer = function(func) {\r\n return function() {\r\n var that = this;\r\n return deferExecute(\"render\", (function() {\r\n return func.call(that)\r\n }))\r\n }\r\n};\r\nexport var deferUpdater = function(func) {\r\n return function() {\r\n var that = this;\r\n return deferExecute(\"update\", (function() {\r\n return func.call(that)\r\n }))\r\n }\r\n};\r\nexport var findBestMatches = function(targetFilter, items, mapFn) {\r\n var bestMatches = [];\r\n var maxMatchCount = 0;\r\n each(items, (index, itemSrc) => {\r\n var matchCount = 0;\r\n var item = mapFn ? mapFn(itemSrc) : itemSrc;\r\n each(targetFilter, (paramName, targetValue) => {\r\n var value = item[paramName];\r\n if (void 0 === value) {\r\n return\r\n }\r\n if (match(value, targetValue)) {\r\n matchCount++;\r\n return\r\n }\r\n matchCount = -1;\r\n return false\r\n });\r\n if (matchCount < maxMatchCount) {\r\n return\r\n }\r\n if (matchCount > maxMatchCount) {\r\n bestMatches.length = 0;\r\n maxMatchCount = matchCount\r\n }\r\n bestMatches.push(itemSrc)\r\n });\r\n return bestMatches\r\n};\r\nvar match = function(value, targetValue) {\r\n if (Array.isArray(value) && Array.isArray(targetValue)) {\r\n var mismatch = false;\r\n each(value, (index, valueItem) => {\r\n if (valueItem !== targetValue[index]) {\r\n mismatch = true;\r\n return false\r\n }\r\n });\r\n if (mismatch) {\r\n return false\r\n }\r\n return true\r\n }\r\n if (value === targetValue) {\r\n return true\r\n }\r\n return false\r\n};\r\nexport var splitPair = function(raw) {\r\n var _raw$x, _raw$y;\r\n switch (type(raw)) {\r\n case \"string\":\r\n return raw.split(/\\s+/, 2);\r\n case \"object\":\r\n return [null !== (_raw$x = raw.x) && void 0 !== _raw$x ? _raw$x : raw.h, null !== (_raw$y = raw.y) && void 0 !== _raw$y ? _raw$y : raw.v];\r\n case \"number\":\r\n return [raw];\r\n case \"array\":\r\n return raw;\r\n default:\r\n return null\r\n }\r\n};\r\nexport var normalizeKey = function(id) {\r\n var key = isString(id) ? id : id.toString();\r\n var arr = key.match(/[^a-zA-Z0-9_]/g);\r\n arr && each(arr, (_, sign) => {\r\n key = key.replace(sign, \"__\" + sign.charCodeAt() + \"__\")\r\n });\r\n return key\r\n};\r\nexport var denormalizeKey = function(key) {\r\n var arr = key.match(/__\\d+__/g);\r\n arr && arr.forEach(char => {\r\n var charCode = parseInt(char.replace(\"__\", \"\"));\r\n key = key.replace(char, String.fromCharCode(charCode))\r\n });\r\n return key\r\n};\r\nexport var pairToObject = function(raw, preventRound) {\r\n var pair = splitPair(raw);\r\n var h = preventRound ? parseFloat(pair && pair[0]) : parseInt(pair && pair[0], 10);\r\n var v = preventRound ? parseFloat(pair && pair[1]) : parseInt(pair && pair[1], 10);\r\n if (!isFinite(h)) {\r\n h = 0\r\n }\r\n if (!isFinite(v)) {\r\n v = h\r\n }\r\n return {\r\n h: h,\r\n v: v\r\n }\r\n};\r\nexport var getKeyHash = function(key) {\r\n if (key instanceof Guid) {\r\n return key.toString()\r\n } else if (isObject(key) || Array.isArray(key)) {\r\n try {\r\n var keyHash = JSON.stringify(key);\r\n return \"{}\" === keyHash ? key : keyHash\r\n } catch (e) {\r\n return key\r\n }\r\n }\r\n return key\r\n};\r\nexport var escapeRegExp = function(string) {\r\n return string.replace(/[[\\]{}\\-()*+?.\\\\^$|\\s]/g, \"\\\\$&\")\r\n};\r\nexport var applyServerDecimalSeparator = function(value) {\r\n var separator = config().serverDecimalSeparator;\r\n if (isDefined(value)) {\r\n value = value.toString().replace(\".\", separator)\r\n }\r\n return value\r\n};\r\nexport var noop = function() {};\r\nexport var asyncNoop = function() {\r\n return (new Deferred).resolve().promise()\r\n};\r\nexport var grep = function(elements, checkFunction, invert) {\r\n var result = [];\r\n var check;\r\n var expectedCheck = !invert;\r\n for (var i = 0; i < elements.length; i++) {\r\n check = !!checkFunction(elements[i], i);\r\n if (check === expectedCheck) {\r\n result.push(elements[i])\r\n }\r\n }\r\n return result\r\n};\r\nvar compareArrays = (array1, array2, depth, options) => {\r\n if (array1.length !== array2.length) {\r\n return false\r\n }\r\n return !array1.some((item, idx) => !compareByValue(item, array2[idx], depth + 1, _extends({}, options, {\r\n strict: true\r\n })))\r\n};\r\nvar compareObjects = (object1, object2, depth, options) => {\r\n var keys1 = Object.keys(object1);\r\n var keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false\r\n }\r\n var keys2Set = new Set(keys2);\r\n return !keys1.some(key => !keys2Set.has(key) || !compareByValue(object1[key], object2[key], depth + 1, options))\r\n};\r\nvar DEFAULT_EQUAL_BY_VALUE_OPTS = {\r\n maxDepth: 3,\r\n strict: true\r\n};\r\nvar compareByValue = (value1, value2, depth, options) => {\r\n var {\r\n strict: strict,\r\n maxDepth: maxDepth\r\n } = options;\r\n var comparable1 = toComparable(value1, true);\r\n var comparable2 = toComparable(value2, true);\r\n var comparisonResult = strict ? comparable1 === comparable2 : comparable1 == comparable2;\r\n switch (true) {\r\n case comparisonResult:\r\n case depth >= maxDepth:\r\n return true;\r\n case isObject(comparable1) && isObject(comparable2):\r\n return compareObjects(comparable1, comparable2, depth, options);\r\n case Array.isArray(comparable1) && Array.isArray(comparable2):\r\n return compareArrays(comparable1, comparable2, depth, options);\r\n default:\r\n return false\r\n }\r\n};\r\nexport var equalByValue = function(value1, value2) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : DEFAULT_EQUAL_BY_VALUE_OPTS;\r\n var compareOptions = _extends({}, DEFAULT_EQUAL_BY_VALUE_OPTS, options);\r\n return compareByValue(value1, value2, 0, compareOptions)\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/console.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"./type\";\r\nvar noop = function() {};\r\nvar getConsoleMethod = function(method) {\r\n if (\"undefined\" === typeof console || !isFunction(console[method])) {\r\n return noop\r\n }\r\n return console[method].bind(console)\r\n};\r\nexport var logger = {\r\n log: getConsoleMethod(\"log\"),\r\n info: getConsoleMethod(\"info\"),\r\n warn: getConsoleMethod(\"warn\"),\r\n error: getConsoleMethod(\"error\")\r\n};\r\nexport var debug = function() {\r\n function assert(condition, message) {\r\n if (!condition) {\r\n throw new Error(message)\r\n }\r\n }\r\n return {\r\n assert: assert,\r\n assertParam: function(parameter, message) {\r\n assert(null !== parameter && void 0 !== parameter, message)\r\n }\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/core/utils/data.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../errors\";\r\nimport Class from \"../class\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"./object\";\r\nimport {\r\n isObject,\r\n isPlainObject,\r\n isFunction,\r\n isDefined\r\n} from \"./type\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport variableWrapper from \"./variable_wrapper\";\r\nvar unwrapVariable = variableWrapper.unwrap;\r\nvar isWrapped = variableWrapper.isWrapped;\r\nvar assign = variableWrapper.assign;\r\nvar bracketsToDots = function(expr) {\r\n return expr.replace(/\\[/g, \".\").replace(/\\]/g, \"\")\r\n};\r\nexport var getPathParts = function(name) {\r\n return bracketsToDots(name).split(\".\")\r\n};\r\nvar readPropValue = function(obj, propName, options) {\r\n options = options || {};\r\n if (\"this\" === propName) {\r\n return unwrap(obj, options)\r\n }\r\n return unwrap(obj[propName], options)\r\n};\r\nvar assignPropValue = function(obj, propName, value, options) {\r\n if (\"this\" === propName) {\r\n throw new errors.Error(\"E4016\")\r\n }\r\n var propValue = obj[propName];\r\n if (options.unwrapObservables && isWrapped(propValue)) {\r\n assign(propValue, value)\r\n } else {\r\n obj[propName] = value\r\n }\r\n};\r\nvar prepareOptions = function(options) {\r\n options = options || {};\r\n options.unwrapObservables = void 0 !== options.unwrapObservables ? options.unwrapObservables : true;\r\n return options\r\n};\r\n\r\nfunction unwrap(value, options) {\r\n return options.unwrapObservables ? unwrapVariable(value) : value\r\n}\r\nexport var compileGetter = function(expr) {\r\n if (arguments.length > 1) {\r\n expr = [].slice.call(arguments)\r\n }\r\n if (!expr || \"this\" === expr) {\r\n return function(obj) {\r\n return obj\r\n }\r\n }\r\n if (\"string\" === typeof expr) {\r\n var path = getPathParts(expr);\r\n return function(obj, options) {\r\n options = prepareOptions(options);\r\n var functionAsIs = options.functionsAsIs;\r\n var hasDefaultValue = \"defaultValue\" in options;\r\n var current = unwrap(obj, options);\r\n for (var i = 0; i < path.length; i++) {\r\n if (!current) {\r\n if (null == current && hasDefaultValue) {\r\n return options.defaultValue\r\n }\r\n break\r\n }\r\n var pathPart = path[i];\r\n if (hasDefaultValue && isObject(current) && !(pathPart in current)) {\r\n return options.defaultValue\r\n }\r\n var next = unwrap(current[pathPart], options);\r\n if (!functionAsIs && isFunction(next)) {\r\n next = next.call(current)\r\n }\r\n current = next\r\n }\r\n return current\r\n }\r\n }\r\n if (Array.isArray(expr)) {\r\n return combineGetters(expr)\r\n }\r\n if (isFunction(expr)) {\r\n return expr\r\n }\r\n};\r\n\r\nfunction combineGetters(getters) {\r\n var compiledGetters = {};\r\n for (var i = 0, l = getters.length; i < l; i++) {\r\n var getter = getters[i];\r\n compiledGetters[getter] = compileGetter(getter)\r\n }\r\n return function(obj, options) {\r\n var result;\r\n each(compiledGetters, (function(name) {\r\n var value = this(obj, options);\r\n if (void 0 === value) {\r\n return\r\n }\r\n var current = result || (result = {});\r\n var path = name.split(\".\");\r\n var last = path.length - 1;\r\n for (var _i = 0; _i < last; _i++) {\r\n var pathItem = path[_i];\r\n if (!(pathItem in current)) {\r\n current[pathItem] = {}\r\n }\r\n current = current[pathItem]\r\n }\r\n current[path[last]] = value\r\n }));\r\n return result\r\n }\r\n}\r\nvar ensurePropValueDefined = function(obj, propName, value, options) {\r\n if (isDefined(value)) {\r\n return value\r\n }\r\n var newValue = {};\r\n assignPropValue(obj, propName, newValue, options);\r\n return newValue\r\n};\r\nexport var compileSetter = function(expr) {\r\n expr = getPathParts(expr || \"this\");\r\n var lastLevelIndex = expr.length - 1;\r\n return function(obj, value, options) {\r\n options = prepareOptions(options);\r\n var currentValue = unwrap(obj, options);\r\n expr.forEach((function(propertyName, levelIndex) {\r\n var propertyValue = readPropValue(currentValue, propertyName, options);\r\n var isPropertyFunc = !options.functionsAsIs && isFunction(propertyValue) && !isWrapped(propertyValue);\r\n if (levelIndex === lastLevelIndex) {\r\n if (options.merge && isPlainObject(value) && (!isDefined(propertyValue) || isPlainObject(propertyValue))) {\r\n propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);\r\n deepExtendArraySafe(propertyValue, value, false, true)\r\n } else if (isPropertyFunc) {\r\n currentValue[propertyName](value)\r\n } else {\r\n assignPropValue(currentValue, propertyName, value, options)\r\n }\r\n } else {\r\n propertyValue = ensurePropValueDefined(currentValue, propertyName, propertyValue, options);\r\n if (isPropertyFunc) {\r\n propertyValue = propertyValue.call(currentValue)\r\n }\r\n currentValue = propertyValue\r\n }\r\n }))\r\n }\r\n};\r\nexport var toComparable = function(value, caseSensitive) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n if (value instanceof Date) {\r\n return value.getTime()\r\n }\r\n if (value && value instanceof Class && value.valueOf) {\r\n return value.valueOf()\r\n }\r\n if (!caseSensitive && \"string\" === typeof value) {\r\n var _options$collatorOpti;\r\n if (\"base\" === (null === options || void 0 === options ? void 0 : null === (_options$collatorOpti = options.collatorOptions) || void 0 === _options$collatorOpti ? void 0 : _options$collatorOpti.sensitivity)) {\r\n var REMOVE_DIACRITICAL_MARKS_REGEXP = /[\\u0300-\\u036f]/g;\r\n value = value.normalize(\"NFD\").replace(REMOVE_DIACRITICAL_MARKS_REGEXP, \"\")\r\n }\r\n return null !== options && void 0 !== options && options.locale ? value.toLocaleLowerCase(options.locale) : value.toLowerCase()\r\n }\r\n return value\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/deferred.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDeferred,\r\n isDefined,\r\n isPromise\r\n} from \"../utils/type\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nimport Callbacks from \"../utils/callbacks\";\r\nvar deferredConfig = [{\r\n method: \"resolve\",\r\n handler: \"done\",\r\n state: \"resolved\"\r\n}, {\r\n method: \"reject\",\r\n handler: \"fail\",\r\n state: \"rejected\"\r\n}, {\r\n method: \"notify\",\r\n handler: \"progress\"\r\n}];\r\nvar _DeferredObj = function() {\r\n var that = this;\r\n this._state = \"pending\";\r\n this._promise = {};\r\n deferredConfig.forEach(function(config) {\r\n var methodName = config.method;\r\n this[methodName + \"Callbacks\"] = Callbacks();\r\n this[methodName] = function() {\r\n return this[methodName + \"With\"](this._promise, arguments)\r\n }.bind(this);\r\n this._promise[config.handler] = function(handler) {\r\n if (!handler) {\r\n return this\r\n }\r\n var callbacks = that[methodName + \"Callbacks\"];\r\n if (callbacks.fired()) {\r\n handler.apply(that[methodName + \"Context\"], that[methodName + \"Args\"])\r\n } else {\r\n callbacks.add(function(context, args) {\r\n handler.apply(context, args)\r\n }.bind(this))\r\n }\r\n return this\r\n }\r\n }.bind(this));\r\n this._promise.always = function(handler) {\r\n return this.done(handler).fail(handler)\r\n };\r\n this._promise.catch = function(handler) {\r\n return this.then(null, handler)\r\n };\r\n this._promise.then = function(resolve, reject) {\r\n var result = new _DeferredObj;\r\n [\"done\", \"fail\"].forEach(function(method) {\r\n var callback = \"done\" === method ? resolve : reject;\r\n this[method]((function() {\r\n if (!callback) {\r\n result[\"done\" === method ? \"resolve\" : \"reject\"].apply(this, arguments);\r\n return\r\n }\r\n var callbackResult = callback && callback.apply(this, arguments);\r\n if (isDeferred(callbackResult)) {\r\n callbackResult.done(result.resolve).fail(result.reject)\r\n } else if (isPromise(callbackResult)) {\r\n callbackResult.then(result.resolve, result.reject)\r\n } else {\r\n result.resolve.apply(this, isDefined(callbackResult) ? [callbackResult] : arguments)\r\n }\r\n }))\r\n }.bind(this));\r\n return result.promise()\r\n };\r\n this._promise.state = function() {\r\n return that._state\r\n };\r\n this._promise.promise = function(args) {\r\n return args ? extend(args, that._promise) : that._promise\r\n };\r\n this._promise.promise(this)\r\n};\r\ndeferredConfig.forEach((function(config) {\r\n var methodName = config.method;\r\n var state = config.state;\r\n _DeferredObj.prototype[methodName + \"With\"] = function(context, args) {\r\n var callbacks = this[methodName + \"Callbacks\"];\r\n if (\"pending\" === this.state()) {\r\n this[methodName + \"Args\"] = args;\r\n this[methodName + \"Context\"] = context;\r\n if (state) {\r\n this._state = state\r\n }\r\n callbacks.fire(context, args)\r\n }\r\n return this\r\n }\r\n}));\r\nexport function fromPromise(promise, context) {\r\n if (isDeferred(promise)) {\r\n return promise\r\n } else if (isPromise(promise)) {\r\n var d = new _DeferredObj;\r\n promise.then((function() {\r\n d.resolveWith.apply(d, [context].concat([\r\n [].slice.call(arguments)\r\n ]))\r\n }), (function() {\r\n d.rejectWith.apply(d, [context].concat([\r\n [].slice.call(arguments)\r\n ]))\r\n }));\r\n return d\r\n }\r\n return (new _DeferredObj).resolveWith(context, [promise])\r\n}\r\nvar whenFunc = function() {\r\n if (1 === arguments.length) {\r\n return fromPromise(arguments[0])\r\n }\r\n var values = [].slice.call(arguments);\r\n var contexts = [];\r\n var resolvedCount = 0;\r\n var deferred = new _DeferredObj;\r\n var updateState = function(i) {\r\n return function(value) {\r\n contexts[i] = this;\r\n values[i] = arguments.length > 1 ? [].slice.call(arguments) : value;\r\n resolvedCount++;\r\n if (resolvedCount === values.length) {\r\n deferred.resolveWith(contexts, values)\r\n }\r\n }\r\n };\r\n for (var i = 0; i < values.length; i++) {\r\n if (isDeferred(values[i])) {\r\n values[i].promise().done(updateState(i)).fail(deferred.reject)\r\n } else {\r\n resolvedCount++\r\n }\r\n }\r\n if (resolvedCount === values.length) {\r\n deferred.resolveWith(contexts, values)\r\n }\r\n return deferred.promise()\r\n};\r\nexport function setStrategy(value) {\r\n _DeferredObj = value.Deferred;\r\n whenFunc = value.when\r\n}\r\nexport function Deferred() {\r\n return new _DeferredObj\r\n}\r\nexport function when() {\r\n return whenFunc.apply(this, arguments)\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/dependency_injector.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n isFunction\r\n} from \"./type\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport Class from \"../class\";\r\nexport default function(object) {\r\n var BaseClass = Class.inherit(object);\r\n var InjectedClass = BaseClass;\r\n var instance = new InjectedClass(object);\r\n var initialFields = {};\r\n var injectFields = function(injectionObject, initial) {\r\n each(injectionObject, (function(key) {\r\n if (isFunction(instance[key])) {\r\n if (initial || !object[key]) {\r\n object[key] = function() {\r\n return instance[key].apply(object, arguments)\r\n }\r\n }\r\n } else {\r\n if (initial) {\r\n initialFields[key] = object[key]\r\n }\r\n object[key] = instance[key]\r\n }\r\n }))\r\n };\r\n injectFields(object, true);\r\n object.inject = function(injectionObject) {\r\n InjectedClass = InjectedClass.inherit(injectionObject);\r\n instance = new InjectedClass;\r\n injectFields(injectionObject)\r\n };\r\n object.resetInjection = function() {\r\n extend(object, initialFields);\r\n InjectedClass = BaseClass;\r\n instance = new BaseClass\r\n };\r\n return object\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/error.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n logger\r\n} from \"./console\";\r\nimport {\r\n format\r\n} from \"./string\";\r\nimport {\r\n version\r\n} from \"../version\";\r\nvar ERROR_URL = \"http://js.devexpress.com/error/\" + version.split(\".\").slice(0, 2).join(\"_\") + \"/\";\r\nexport default function(baseErrors, errors) {\r\n var exports = {\r\n ERROR_MESSAGES: extend(errors, baseErrors),\r\n Error: function() {\r\n return makeError([].slice.call(arguments))\r\n },\r\n log: function(id) {\r\n var method = \"log\";\r\n if (/^E\\d+$/.test(id)) {\r\n method = \"error\"\r\n } else if (/^W\\d+$/.test(id)) {\r\n method = \"warn\"\r\n }\r\n logger[method](\"log\" === method ? id : combineMessage([].slice.call(arguments)))\r\n }\r\n };\r\n\r\n function combineMessage(args) {\r\n var id = args[0];\r\n args = args.slice(1);\r\n return formatMessage(id, formatDetails(id, args))\r\n }\r\n\r\n function formatDetails(id, args) {\r\n args = [exports.ERROR_MESSAGES[id]].concat(args);\r\n return format.apply(this, args).replace(/\\.*\\s*?$/, \"\")\r\n }\r\n\r\n function formatMessage(id, details) {\r\n return format.apply(this, [\"{0} - {1}. See:\\n{2}\", id, details, getErrorUrl(id)])\r\n }\r\n\r\n function makeError(args) {\r\n var id = args[0];\r\n args = args.slice(1);\r\n var details = formatDetails(id, args);\r\n var url = getErrorUrl(id);\r\n var message = formatMessage(id, details);\r\n return extend(new Error(message), {\r\n __id: id,\r\n __details: details,\r\n url: url\r\n })\r\n }\r\n\r\n function getErrorUrl(id) {\r\n return ERROR_URL + id\r\n }\r\n return exports\r\n}\r\n","/**\r\n * DevExtreme (esm/core/version.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var version = \"23.1.6\";\r\n","/**\r\n * DevExtreme (esm/core/utils/extend.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isPlainObject\r\n} from \"./type\";\r\nexport var extendFromObject = function(target, source, overrideExistingValues) {\r\n target = target || {};\r\n for (var prop in source) {\r\n if (Object.prototype.hasOwnProperty.call(source, prop)) {\r\n var value = source[prop];\r\n if (!(prop in target) || overrideExistingValues) {\r\n target[prop] = value\r\n }\r\n }\r\n }\r\n return target\r\n};\r\nexport var extend = function extend(target) {\r\n target = target || {};\r\n var i = 1;\r\n var deep = false;\r\n if (\"boolean\" === typeof target) {\r\n deep = target;\r\n target = arguments[1] || {};\r\n i++\r\n }\r\n for (; i < arguments.length; i++) {\r\n var source = arguments[i];\r\n if (null == source) {\r\n continue\r\n }\r\n for (var key in source) {\r\n var targetValue = target[key];\r\n var sourceValue = source[key];\r\n var sourceValueIsArray = false;\r\n var clone = void 0;\r\n if (\"__proto__\" === key || \"constructor\" === key || target === sourceValue) {\r\n continue\r\n }\r\n if (deep && sourceValue && (isPlainObject(sourceValue) || (sourceValueIsArray = Array.isArray(sourceValue)))) {\r\n if (sourceValueIsArray) {\r\n clone = targetValue && Array.isArray(targetValue) ? targetValue : []\r\n } else {\r\n clone = targetValue && isPlainObject(targetValue) ? targetValue : {}\r\n }\r\n target[key] = extend(deep, clone, sourceValue)\r\n } else if (void 0 !== sourceValue) {\r\n target[key] = sourceValue\r\n }\r\n }\r\n }\r\n return target\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/iterator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar map = (values, callback) => {\r\n if (Array.isArray(values)) {\r\n return values.map(callback)\r\n }\r\n var result = [];\r\n for (var key in values) {\r\n result.push(callback(values[key], key))\r\n }\r\n return result\r\n};\r\nvar each = (values, callback) => {\r\n if (!values) {\r\n return\r\n }\r\n if (\"length\" in values) {\r\n for (var i = 0; i < values.length; i++) {\r\n if (false === callback.call(values[i], i, values[i])) {\r\n break\r\n }\r\n }\r\n } else {\r\n for (var key in values) {\r\n if (false === callback.call(values[key], key, values[key])) {\r\n break\r\n }\r\n }\r\n }\r\n return values\r\n};\r\nvar reverseEach = (array, callback) => {\r\n if (!array || !(\"length\" in array) || 0 === array.length) {\r\n return\r\n }\r\n for (var i = array.length - 1; i >= 0; i--) {\r\n if (false === callback.call(array[i], i, array[i])) {\r\n break\r\n }\r\n }\r\n};\r\nexport {\r\n map,\r\n each,\r\n reverseEach\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/object.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isNumeric,\r\n isPlainObject,\r\n isObject\r\n} from \"./type\";\r\nimport variableWrapper from \"./variable_wrapper\";\r\nvar clone = function() {\r\n function Clone() {}\r\n return function(obj) {\r\n Clone.prototype = obj;\r\n return new Clone\r\n }\r\n}();\r\nvar orderEach = function(map, func) {\r\n var keys = [];\r\n var key;\r\n var i;\r\n for (key in map) {\r\n if (Object.prototype.hasOwnProperty.call(map, key)) {\r\n keys.push(key)\r\n }\r\n }\r\n keys.sort((function(x, y) {\r\n var isNumberX = isNumeric(x);\r\n var isNumberY = isNumeric(y);\r\n if (isNumberX && isNumberY) {\r\n return x - y\r\n }\r\n if (isNumberX && !isNumberY) {\r\n return -1\r\n }\r\n if (!isNumberX && isNumberY) {\r\n return 1\r\n }\r\n if (x < y) {\r\n return -1\r\n }\r\n if (x > y) {\r\n return 1\r\n }\r\n return 0\r\n }));\r\n for (i = 0; i < keys.length; i++) {\r\n key = keys[i];\r\n func(key, map[key])\r\n }\r\n};\r\nvar assignValueToProperty = function(target, property, value, assignByReference) {\r\n if (!assignByReference && variableWrapper.isWrapped(target[property])) {\r\n variableWrapper.assign(target[property], value)\r\n } else {\r\n target[property] = value\r\n }\r\n};\r\nvar deepExtendArraySafe = function deepExtendArraySafe(target, changes, extendComplexObject, assignByReference) {\r\n var prevValue;\r\n var newValue;\r\n for (var name in changes) {\r\n prevValue = target[name];\r\n newValue = changes[name];\r\n if (\"__proto__\" === name || \"constructor\" === name || target === newValue) {\r\n continue\r\n }\r\n if (isPlainObject(newValue)) {\r\n var goDeeper = extendComplexObject ? isObject(prevValue) : isPlainObject(prevValue);\r\n newValue = deepExtendArraySafe(goDeeper ? prevValue : {}, newValue, extendComplexObject, assignByReference)\r\n }\r\n if (void 0 !== newValue && prevValue !== newValue) {\r\n assignValueToProperty(target, name, newValue, assignByReference)\r\n }\r\n }\r\n return target\r\n};\r\nexport {\r\n clone,\r\n orderEach,\r\n deepExtendArraySafe\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/shadow_dom.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar DX_RULE_PREFIX = \"dx-\";\r\nvar ownerDocumentStyleSheet = null;\r\n\r\nfunction createConstructedStyleSheet(rootNode) {\r\n try {\r\n return new CSSStyleSheet\r\n } catch (err) {\r\n var styleElement = rootNode.ownerDocument.createElement(\"style\");\r\n rootNode.appendChild(styleElement);\r\n return styleElement.sheet\r\n }\r\n}\r\n\r\nfunction processRules(targetStyleSheet, styleSheets, needApplyAllStyles) {\r\n for (var i = 0; i < styleSheets.length; i++) {\r\n var sheet = styleSheets[i];\r\n try {\r\n for (var j = 0; j < sheet.cssRules.length; j++) {\r\n insertRule(targetStyleSheet, sheet.cssRules[j], needApplyAllStyles)\r\n }\r\n } catch (err) {}\r\n }\r\n}\r\n\r\nfunction insertRule(targetStyleSheet, rule, needApplyAllStyles) {\r\n var _rule$selectorText, _rule$cssRules, _rule$cssRules$, _rule$cssRules$$selec, _rule$name, _rule$style;\r\n var isDxRule = needApplyAllStyles || (null === (_rule$selectorText = rule.selectorText) || void 0 === _rule$selectorText ? void 0 : _rule$selectorText.includes(DX_RULE_PREFIX)) || (null === (_rule$cssRules = rule.cssRules) || void 0 === _rule$cssRules ? void 0 : null === (_rule$cssRules$ = _rule$cssRules[0]) || void 0 === _rule$cssRules$ ? void 0 : null === (_rule$cssRules$$selec = _rule$cssRules$.selectorText) || void 0 === _rule$cssRules$$selec ? void 0 : _rule$cssRules$$selec.includes(DX_RULE_PREFIX)) || (null === (_rule$name = rule.name) || void 0 === _rule$name ? void 0 : _rule$name.startsWith(DX_RULE_PREFIX)) || \"DXIcons\" === (null === (_rule$style = rule.style) || void 0 === _rule$style ? void 0 : _rule$style.fontFamily);\r\n if (isDxRule) {\r\n targetStyleSheet.insertRule(rule.cssText, targetStyleSheet.cssRules.length)\r\n }\r\n}\r\nexport function addShadowDomStyles($element) {\r\n var _el$getRootNode;\r\n var el = $element.get(0);\r\n var root = null === (_el$getRootNode = el.getRootNode) || void 0 === _el$getRootNode ? void 0 : _el$getRootNode.call(el);\r\n if (!(null !== root && void 0 !== root && root.host)) {\r\n return\r\n }\r\n if (!ownerDocumentStyleSheet) {\r\n ownerDocumentStyleSheet = createConstructedStyleSheet(root);\r\n processRules(ownerDocumentStyleSheet, el.ownerDocument.styleSheets, false)\r\n }\r\n var currentShadowDomStyleSheet = createConstructedStyleSheet(root);\r\n processRules(currentShadowDomStyleSheet, root.styleSheets, true);\r\n root.adoptedStyleSheets = [ownerDocumentStyleSheet, currentShadowDomStyleSheet]\r\n}\r\n\r\nfunction isPositionInElementRectangle(element, x, y) {\r\n var rect = element.getBoundingClientRect();\r\n return rect && x >= rect.left && x < rect.right && y >= rect.top && y < rect.bottom\r\n}\r\n\r\nfunction createQueue() {\r\n var shiftIndex = 0;\r\n var items = [];\r\n return {\r\n push(item) {\r\n items.push(item);\r\n return this\r\n },\r\n shift() {\r\n shiftIndex++;\r\n return items[shiftIndex - 1]\r\n },\r\n get length() {\r\n return items.length - shiftIndex\r\n },\r\n get items() {\r\n return items\r\n }\r\n }\r\n}\r\nexport function getShadowElementsFromPoint(x, y, root) {\r\n var elementQueue = createQueue().push(root);\r\n while (elementQueue.length) {\r\n var el = elementQueue.shift();\r\n for (var i = 0; i < el.childNodes.length; i++) {\r\n var childNode = el.childNodes[i];\r\n if (childNode.nodeType === Node.ELEMENT_NODE && isPositionInElementRectangle(childNode, x, y) && \"none\" !== getComputedStyle(childNode).pointerEvents) {\r\n elementQueue.push(childNode)\r\n }\r\n }\r\n }\r\n var result = elementQueue.items.reverse();\r\n result.pop();\r\n return result\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/string.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction,\r\n isString\r\n} from \"./type\";\r\nexport var encodeHtml = function() {\r\n var encodeRegExp = [new RegExp(\"&\", \"g\"), new RegExp('\"', \"g\"), new RegExp(\"'\", \"g\"), new RegExp(\"<\", \"g\"), new RegExp(\">\", \"g\")];\r\n return function(str) {\r\n return String(str).replace(encodeRegExp[0], \"&\").replace(encodeRegExp[1], \""\").replace(encodeRegExp[2], \"'\").replace(encodeRegExp[3], \"<\").replace(encodeRegExp[4], \">\")\r\n }\r\n}();\r\nvar splitQuad = function(raw) {\r\n switch (typeof raw) {\r\n case \"string\":\r\n return raw.split(/\\s+/, 4);\r\n case \"object\":\r\n return [raw.x || raw.h || raw.left, raw.y || raw.v || raw.top, raw.x || raw.h || raw.right, raw.y || raw.v || raw.bottom];\r\n case \"number\":\r\n return [raw];\r\n default:\r\n return raw\r\n }\r\n};\r\nexport var quadToObject = function(raw) {\r\n var quad = splitQuad(raw);\r\n var left = parseInt(quad && quad[0], 10);\r\n var top = parseInt(quad && quad[1], 10);\r\n var right = parseInt(quad && quad[2], 10);\r\n var bottom = parseInt(quad && quad[3], 10);\r\n if (!isFinite(left)) {\r\n left = 0\r\n }\r\n if (!isFinite(top)) {\r\n top = left\r\n }\r\n if (!isFinite(right)) {\r\n right = left\r\n }\r\n if (!isFinite(bottom)) {\r\n bottom = top\r\n }\r\n return {\r\n top: top,\r\n right: right,\r\n bottom: bottom,\r\n left: left\r\n }\r\n};\r\nexport function format(template) {\r\n for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n values[_key - 1] = arguments[_key]\r\n }\r\n if (isFunction(template)) {\r\n return template(...values)\r\n }\r\n values.forEach((value, index) => {\r\n if (isString(value)) {\r\n value = value.replace(/\\$/g, \"$$$$\")\r\n }\r\n var placeholderReg = new RegExp(\"\\\\{\" + index + \"\\\\}\", \"gm\");\r\n template = template.replace(placeholderReg, value)\r\n });\r\n return template\r\n}\r\nexport var replaceAll = function(text, searchToken, replacementToken) {\r\n return text.replace(new RegExp(\"(\" + (str = searchToken, (str + \"\").replace(/([+*?.[^\\]$(){}><|=!:])/g, \"\\\\$1\")) + \")\", \"gi\"), replacementToken);\r\n var str\r\n};\r\nexport var isEmpty = function() {\r\n var SPACE_REGEXP = /\\s/g;\r\n return function(text) {\r\n return !text || !text.replace(SPACE_REGEXP, \"\")\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/core/utils/type.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar types = {\r\n \"[object Array]\": \"array\",\r\n \"[object Date]\": \"date\",\r\n \"[object Object]\": \"object\",\r\n \"[object String]\": \"string\"\r\n};\r\nvar type = function(object) {\r\n if (null === object) {\r\n return \"null\"\r\n }\r\n var typeOfObject = Object.prototype.toString.call(object);\r\n return \"object\" === typeof object ? types[typeOfObject] || \"object\" : typeof object\r\n};\r\nvar isBoolean = function(object) {\r\n return \"boolean\" === typeof object\r\n};\r\nvar isExponential = function(value) {\r\n return isNumeric(value) && -1 !== value.toString().indexOf(\"e\")\r\n};\r\nvar isDate = function(object) {\r\n return \"date\" === type(object)\r\n};\r\nvar isDefined = function(object) {\r\n return null !== object && void 0 !== object\r\n};\r\nvar isFunction = function(object) {\r\n return \"function\" === typeof object\r\n};\r\nvar isString = function(object) {\r\n return \"string\" === typeof object\r\n};\r\nvar isNumeric = function(object) {\r\n return \"number\" === typeof object && isFinite(object) || !isNaN(object - parseFloat(object))\r\n};\r\nvar isObject = function(object) {\r\n return \"object\" === type(object)\r\n};\r\nvar isEmptyObject = function(object) {\r\n var property;\r\n for (property in object) {\r\n return false\r\n }\r\n return true\r\n};\r\nvar isPlainObject = function(object) {\r\n if (!object || \"object\" !== type(object)) {\r\n return false\r\n }\r\n var proto = Object.getPrototypeOf(object);\r\n if (!proto) {\r\n return true\r\n }\r\n var ctor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\r\n return \"function\" === typeof ctor && Object.toString.call(ctor) === Object.toString.call(Object)\r\n};\r\nvar isPrimitive = function(value) {\r\n return -1 === [\"object\", \"array\", \"function\"].indexOf(type(value))\r\n};\r\nvar isWindow = function(object) {\r\n return null != object && object === object.window\r\n};\r\nvar isRenderer = function(object) {\r\n return !!object && !!(object.jquery || object.dxRenderer)\r\n};\r\nvar isPromise = function(object) {\r\n return !!object && isFunction(object.then)\r\n};\r\nvar isDeferred = function(object) {\r\n return !!object && isFunction(object.done) && isFunction(object.fail)\r\n};\r\nvar isEvent = function(object) {\r\n return !!(object && object.preventDefault)\r\n};\r\nexport {\r\n isBoolean,\r\n isExponential,\r\n isDate,\r\n isDefined,\r\n isFunction,\r\n isString,\r\n isNumeric,\r\n isObject,\r\n isEmptyObject,\r\n isPlainObject,\r\n isPrimitive,\r\n isWindow,\r\n isRenderer,\r\n isPromise,\r\n isDeferred,\r\n type,\r\n isEvent\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/variable_wrapper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n logger\r\n} from \"./console\";\r\nimport dependencyInjector from \"./dependency_injector\";\r\nexport default dependencyInjector({\r\n isWrapped: function() {\r\n return false\r\n },\r\n isWritableWrapped: function() {\r\n return false\r\n },\r\n wrap: function(value) {\r\n return value\r\n },\r\n unwrap: function(value) {\r\n return value\r\n },\r\n assign: function() {\r\n logger.error(\"Method 'assign' should not be used for not wrapped variables. Use 'isWrapped' method for ensuring.\")\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/window.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nvar hasWindowValue = \"undefined\" !== typeof window;\r\nvar hasWindow = () => hasWindowValue;\r\nvar windowObject = hasWindow() ? window : void 0;\r\nif (!windowObject) {\r\n windowObject = {};\r\n windowObject.window = windowObject\r\n}\r\nvar getWindow = () => windowObject;\r\nvar setWindow = (newWindowObject, hasWindow) => {\r\n if (void 0 === hasWindow) {\r\n hasWindowValue = \"undefined\" !== typeof window && window === newWindowObject\r\n } else {\r\n hasWindowValue = hasWindow\r\n }\r\n windowObject = newWindowObject\r\n};\r\nvar hasProperty = prop => hasWindow() && prop in windowObject;\r\nvar defaultScreenFactorFunc = width => {\r\n if (width < 768) {\r\n return \"xs\"\r\n } else if (width < 992) {\r\n return \"sm\"\r\n } else if (width < 1200) {\r\n return \"md\"\r\n } else {\r\n return \"lg\"\r\n }\r\n};\r\nvar getCurrentScreenFactor = screenFactorCallback => {\r\n var screenFactorFunc = screenFactorCallback || defaultScreenFactorFunc;\r\n var windowWidth = domAdapter.getDocumentElement().clientWidth;\r\n return screenFactorFunc(windowWidth)\r\n};\r\nvar getNavigator = () => hasWindow() ? windowObject.navigator : {\r\n userAgent: \"\"\r\n};\r\nexport {\r\n hasWindow,\r\n getWindow,\r\n setWindow,\r\n hasProperty,\r\n defaultScreenFactorFunc,\r\n getCurrentScreenFactor,\r\n getNavigator\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/event_registrator_callbacks.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport MemorizedCallbacks from \"../../core/memorized_callbacks\";\r\nexport default new MemorizedCallbacks;\r\n","/**\r\n * DevExtreme (esm/events/core/hook_touch_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar touchPropsToHook = [\"pageX\", \"pageY\", \"screenX\", \"screenY\", \"clientX\", \"clientY\"];\r\nvar touchPropHook = function(name, event) {\r\n if (event[name] && !event.touches || !event.touches) {\r\n return event[name]\r\n }\r\n var touches = event.touches.length ? event.touches : event.changedTouches;\r\n if (!touches.length) {\r\n return\r\n }\r\n return touches[0][name]\r\n};\r\nexport default function(callback) {\r\n touchPropsToHook.forEach((function(name) {\r\n callback(name, (function(event) {\r\n return touchPropHook(name, event)\r\n }))\r\n }), this)\r\n}\r\n","/**\r\n * DevExtreme (esm/events/core/events_engine.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport registerEventCallbacks from \"./event_registrator_callbacks\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport injector from \"../../core/utils/dependency_injector\";\r\nimport {\r\n isWindow,\r\n isFunction,\r\n isString,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport errors from \"../../core/errors\";\r\nimport hookTouchProps from \"../../events/core/hook_touch_props\";\r\nimport callOnce from \"../../core/utils/call_once\";\r\nvar EMPTY_EVENT_NAME = \"dxEmptyEventType\";\r\nvar NATIVE_EVENTS_TO_SUBSCRIBE = {\r\n mouseenter: \"mouseover\",\r\n mouseleave: \"mouseout\",\r\n pointerenter: \"pointerover\",\r\n pointerleave: \"pointerout\"\r\n};\r\nvar NATIVE_EVENTS_TO_TRIGGER = {\r\n focusin: \"focus\",\r\n focusout: \"blur\"\r\n};\r\nvar NO_BUBBLE_EVENTS = [\"blur\", \"focus\", \"load\"];\r\nvar forcePassiveFalseEventNames = [\"touchmove\", \"wheel\", \"mousewheel\", \"touchstart\"];\r\nvar EVENT_PROPERTIES = [\"target\", \"relatedTarget\", \"delegateTarget\", \"altKey\", \"bubbles\", \"cancelable\", \"changedTouches\", \"ctrlKey\", \"detail\", \"eventPhase\", \"metaKey\", \"shiftKey\", \"view\", \"char\", \"code\", \"charCode\", \"key\", \"keyCode\", \"button\", \"buttons\", \"offsetX\", \"offsetY\", \"pointerId\", \"pointerType\", \"targetTouches\", \"toElement\", \"touches\"];\r\n\r\nfunction matchesSafe(target, selector) {\r\n return !isWindow(target) && \"#document\" !== target.nodeName && domAdapter.elementMatches(target, selector)\r\n}\r\nvar elementDataMap = new WeakMap;\r\nvar guid = 0;\r\nvar skipEvent;\r\nvar special = function() {\r\n var specialData = {};\r\n registerEventCallbacks.add((function(eventName, eventObject) {\r\n specialData[eventName] = eventObject\r\n }));\r\n return {\r\n getField: function(eventName, field) {\r\n return specialData[eventName] && specialData[eventName][field]\r\n },\r\n callMethod: function(eventName, methodName, context, args) {\r\n return specialData[eventName] && specialData[eventName][methodName] && specialData[eventName][methodName].apply(context, args)\r\n }\r\n }\r\n}();\r\nvar eventsEngine = injector({\r\n on: getHandler(normalizeOnArguments(iterate((function(element, eventName, selector, data, handler) {\r\n var handlersController = getHandlersController(element, eventName);\r\n handlersController.addHandler(handler, selector, data)\r\n })))),\r\n one: getHandler(normalizeOnArguments((function(element, eventName, selector, data, handler) {\r\n eventsEngine.on(element, eventName, selector, data, (function oneTimeHandler() {\r\n eventsEngine.off(element, eventName, selector, oneTimeHandler);\r\n handler.apply(this, arguments)\r\n }))\r\n }))),\r\n off: getHandler(normalizeOffArguments(iterate((function(element, eventName, selector, handler) {\r\n var handlersController = getHandlersController(element, eventName);\r\n handlersController.removeHandler(handler, selector)\r\n })))),\r\n trigger: getHandler(normalizeTriggerArguments((function(element, event, extraParameters) {\r\n var eventName = event.type;\r\n var handlersController = getHandlersController(element, event.type);\r\n special.callMethod(eventName, \"trigger\", element, [event, extraParameters]);\r\n handlersController.callHandlers(event, extraParameters);\r\n var noBubble = special.getField(eventName, \"noBubble\") || event.isPropagationStopped() || -1 !== NO_BUBBLE_EVENTS.indexOf(eventName);\r\n if (!noBubble) {\r\n var parents = [];\r\n ! function getParents(element) {\r\n var _element$parentNode;\r\n var parent = null !== (_element$parentNode = element.parentNode) && void 0 !== _element$parentNode ? _element$parentNode : isObject(element.host) ? element.host : null;\r\n if (parent) {\r\n parents.push(parent);\r\n getParents(parent)\r\n }\r\n }(element);\r\n parents.push(window);\r\n var i = 0;\r\n while (parents[i] && !event.isPropagationStopped()) {\r\n var parentDataByEvent = getHandlersController(parents[i], event.type);\r\n parentDataByEvent.callHandlers(extend(event, {\r\n currentTarget: parents[i]\r\n }), extraParameters);\r\n i++\r\n }\r\n }\r\n if (element.nodeType || isWindow(element)) {\r\n special.callMethod(eventName, \"_default\", element, [event, extraParameters]);\r\n callNativeMethod(eventName, element)\r\n }\r\n }))),\r\n triggerHandler: getHandler(normalizeTriggerArguments((function(element, event, extraParameters) {\r\n var handlersController = getHandlersController(element, event.type);\r\n handlersController.callHandlers(event, extraParameters)\r\n })))\r\n});\r\n\r\nfunction applyForEach(args, method) {\r\n var element = args[0];\r\n if (!element) {\r\n return\r\n }\r\n if (domAdapter.isNode(element) || isWindow(element)) {\r\n method.apply(eventsEngine, args)\r\n } else if (!isString(element) && \"length\" in element) {\r\n var itemArgs = Array.prototype.slice.call(args, 0);\r\n Array.prototype.forEach.call(element, (function(itemElement) {\r\n itemArgs[0] = itemElement;\r\n applyForEach(itemArgs, method)\r\n }))\r\n } else {\r\n throw errors.Error(\"E0025\")\r\n }\r\n}\r\n\r\nfunction getHandler(method) {\r\n return function() {\r\n applyForEach(arguments, method)\r\n }\r\n}\r\n\r\nfunction detectPassiveEventHandlersSupport() {\r\n var isSupported = false;\r\n try {\r\n var options = Object.defineProperty({}, \"passive\", {\r\n get: function() {\r\n isSupported = true;\r\n return true\r\n }\r\n });\r\n window.addEventListener(\"test\", null, options)\r\n } catch (e) {}\r\n return isSupported\r\n}\r\nvar passiveEventHandlersSupported = callOnce(detectPassiveEventHandlersSupport);\r\nvar contains = (container, element) => {\r\n if (isWindow(container)) {\r\n return contains(container.document, element)\r\n }\r\n return container.contains ? container.contains(element) : !!(element.compareDocumentPosition(container) & element.DOCUMENT_POSITION_CONTAINS)\r\n};\r\n\r\nfunction getHandlersController(element, eventName) {\r\n var elementData = elementDataMap.get(element);\r\n eventName = eventName || \"\";\r\n var eventNameParts = eventName.split(\".\");\r\n var namespaces = eventNameParts.slice(1);\r\n var eventNameIsDefined = !!eventNameParts[0];\r\n eventName = eventNameParts[0] || EMPTY_EVENT_NAME;\r\n if (!elementData) {\r\n elementData = {};\r\n elementDataMap.set(element, elementData)\r\n }\r\n if (!elementData[eventName]) {\r\n elementData[eventName] = {\r\n handleObjects: [],\r\n nativeHandler: null\r\n }\r\n }\r\n var eventData = elementData[eventName];\r\n return {\r\n addHandler: function(handler, selector, data) {\r\n var callHandler = function(e, extraParameters) {\r\n var handlerArgs = [e];\r\n var target = e.currentTarget;\r\n var relatedTarget = e.relatedTarget;\r\n var secondaryTargetIsInside;\r\n var result;\r\n if (eventName in NATIVE_EVENTS_TO_SUBSCRIBE) {\r\n secondaryTargetIsInside = relatedTarget && target && (relatedTarget === target || contains(target, relatedTarget))\r\n }\r\n if (void 0 !== extraParameters) {\r\n handlerArgs.push(extraParameters)\r\n }\r\n special.callMethod(eventName, \"handle\", element, [e, data]);\r\n if (!secondaryTargetIsInside) {\r\n result = handler.apply(target, handlerArgs)\r\n }\r\n if (false === result) {\r\n e.preventDefault();\r\n e.stopPropagation()\r\n }\r\n };\r\n var handleObject = {\r\n handler: handler,\r\n wrappedHandler: function(e, extraParameters) {\r\n if (skipEvent && e.type === skipEvent) {\r\n return\r\n }\r\n e.data = data;\r\n e.delegateTarget = element;\r\n if (selector) {\r\n var currentTarget = e.target;\r\n while (currentTarget && currentTarget !== element) {\r\n if (matchesSafe(currentTarget, selector)) {\r\n e.currentTarget = currentTarget;\r\n callHandler(e, extraParameters)\r\n }\r\n currentTarget = currentTarget.parentNode\r\n }\r\n } else {\r\n e.currentTarget = e.delegateTarget || e.target;\r\n callHandler(e, extraParameters)\r\n }\r\n },\r\n selector: selector,\r\n type: eventName,\r\n data: data,\r\n namespace: namespaces.join(\".\"),\r\n namespaces: namespaces,\r\n guid: ++guid\r\n };\r\n eventData.handleObjects.push(handleObject);\r\n var firstHandlerForTheType = 1 === eventData.handleObjects.length;\r\n var shouldAddNativeListener = firstHandlerForTheType && eventNameIsDefined;\r\n var nativeListenerOptions;\r\n if (shouldAddNativeListener) {\r\n shouldAddNativeListener = !special.callMethod(eventName, \"setup\", element, [data, namespaces, handler])\r\n }\r\n if (shouldAddNativeListener) {\r\n eventData.nativeHandler = getNativeHandler(eventName);\r\n if (passiveEventHandlersSupported() && forcePassiveFalseEventNames.indexOf(eventName) > -1) {\r\n nativeListenerOptions = {\r\n passive: false\r\n }\r\n }\r\n eventData.removeListener = domAdapter.listen(element, NATIVE_EVENTS_TO_SUBSCRIBE[eventName] || eventName, eventData.nativeHandler, nativeListenerOptions)\r\n }\r\n special.callMethod(eventName, \"add\", element, [handleObject])\r\n },\r\n removeHandler: function(handler, selector) {\r\n var removeByEventName = function(eventName) {\r\n var eventData = elementData[eventName];\r\n if (!eventData.handleObjects.length) {\r\n delete elementData[eventName];\r\n return\r\n }\r\n var removedHandler;\r\n eventData.handleObjects = eventData.handleObjects.filter((function(handleObject) {\r\n var skip = namespaces.length && !isSubset(handleObject.namespaces, namespaces) || handler && handleObject.handler !== handler || selector && handleObject.selector !== selector;\r\n if (!skip) {\r\n removedHandler = handleObject.handler;\r\n special.callMethod(eventName, \"remove\", element, [handleObject])\r\n }\r\n return skip\r\n }));\r\n var lastHandlerForTheType = !eventData.handleObjects.length;\r\n var shouldRemoveNativeListener = lastHandlerForTheType && eventName !== EMPTY_EVENT_NAME;\r\n if (shouldRemoveNativeListener) {\r\n special.callMethod(eventName, \"teardown\", element, [namespaces, removedHandler]);\r\n if (eventData.nativeHandler) {\r\n eventData.removeListener()\r\n }\r\n delete elementData[eventName]\r\n }\r\n };\r\n if (eventNameIsDefined) {\r\n removeByEventName(eventName)\r\n } else {\r\n for (var name in elementData) {\r\n removeByEventName(name)\r\n }\r\n }\r\n var elementDataIsEmpty = 0 === Object.keys(elementData).length;\r\n if (elementDataIsEmpty) {\r\n elementDataMap.delete(element)\r\n }\r\n },\r\n callHandlers: function(event, extraParameters) {\r\n var forceStop = false;\r\n var handleCallback = function(handleObject) {\r\n if (forceStop) {\r\n return\r\n }\r\n if (!namespaces.length || isSubset(handleObject.namespaces, namespaces)) {\r\n handleObject.wrappedHandler(event, extraParameters);\r\n forceStop = event.isImmediatePropagationStopped()\r\n }\r\n };\r\n eventData.handleObjects.forEach(handleCallback);\r\n if (namespaces.length && elementData[EMPTY_EVENT_NAME]) {\r\n elementData[EMPTY_EVENT_NAME].handleObjects.forEach(handleCallback)\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction getNativeHandler(subscribeName) {\r\n return function(event, extraParameters) {\r\n var handlersController = getHandlersController(this, subscribeName);\r\n event = eventsEngine.Event(event);\r\n handlersController.callHandlers(event, extraParameters)\r\n }\r\n}\r\n\r\nfunction isSubset(original, checked) {\r\n for (var i = 0; i < checked.length; i++) {\r\n if (original.indexOf(checked[i]) < 0) {\r\n return false\r\n }\r\n }\r\n return true\r\n}\r\n\r\nfunction normalizeOnArguments(callback) {\r\n return function(element, eventName, selector, data, handler) {\r\n if (!handler) {\r\n handler = data;\r\n data = void 0\r\n }\r\n if (\"string\" !== typeof selector) {\r\n data = selector;\r\n selector = void 0\r\n }\r\n if (!handler && \"string\" === typeof eventName) {\r\n handler = data || selector;\r\n selector = void 0;\r\n data = void 0\r\n }\r\n callback(element, eventName, selector, data, handler)\r\n }\r\n}\r\n\r\nfunction normalizeOffArguments(callback) {\r\n return function(element, eventName, selector, handler) {\r\n if (\"function\" === typeof selector) {\r\n handler = selector;\r\n selector = void 0\r\n }\r\n callback(element, eventName, selector, handler)\r\n }\r\n}\r\n\r\nfunction normalizeTriggerArguments(callback) {\r\n return function(element, src, extraParameters) {\r\n if (\"string\" === typeof src) {\r\n src = {\r\n type: src\r\n }\r\n }\r\n if (!src.target) {\r\n src.target = element\r\n }\r\n src.currentTarget = element;\r\n if (!src.delegateTarget) {\r\n src.delegateTarget = element\r\n }\r\n if (!src.type && src.originalEvent) {\r\n src.type = src.originalEvent.type\r\n }\r\n callback(element, src instanceof eventsEngine.Event ? src : eventsEngine.Event(src), extraParameters)\r\n }\r\n}\r\n\r\nfunction normalizeEventArguments(callback) {\r\n eventsEngine.Event = function(src, config) {\r\n if (!(this instanceof eventsEngine.Event)) {\r\n return new eventsEngine.Event(src, config)\r\n }\r\n if (!src) {\r\n src = {}\r\n }\r\n if (\"string\" === typeof src) {\r\n src = {\r\n type: src\r\n }\r\n }\r\n if (!config) {\r\n config = {}\r\n }\r\n callback.call(this, src, config)\r\n };\r\n _extends(eventsEngine.Event.prototype, {\r\n _propagationStopped: false,\r\n _immediatePropagationStopped: false,\r\n _defaultPrevented: false,\r\n isPropagationStopped: function() {\r\n return !!(this._propagationStopped || this.originalEvent && this.originalEvent.propagationStopped)\r\n },\r\n stopPropagation: function() {\r\n this._propagationStopped = true;\r\n this.originalEvent && this.originalEvent.stopPropagation()\r\n },\r\n isImmediatePropagationStopped: function() {\r\n return this._immediatePropagationStopped\r\n },\r\n stopImmediatePropagation: function() {\r\n this.stopPropagation();\r\n this._immediatePropagationStopped = true;\r\n this.originalEvent && this.originalEvent.stopImmediatePropagation()\r\n },\r\n isDefaultPrevented: function() {\r\n return !!(this._defaultPrevented || this.originalEvent && this.originalEvent.defaultPrevented)\r\n },\r\n preventDefault: function() {\r\n this._defaultPrevented = true;\r\n this.originalEvent && this.originalEvent.preventDefault()\r\n }\r\n });\r\n return eventsEngine.Event\r\n}\r\n\r\nfunction iterate(callback) {\r\n var iterateEventNames = function(element, eventName) {\r\n if (eventName && eventName.indexOf(\" \") > -1) {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n eventName.split(\" \").forEach((function(eventName) {\r\n args[1] = eventName;\r\n callback.apply(this, args)\r\n }))\r\n } else {\r\n callback.apply(this, arguments)\r\n }\r\n };\r\n return function(element, eventName) {\r\n if (\"object\" === typeof eventName) {\r\n var args = Array.prototype.slice.call(arguments, 0);\r\n for (var name in eventName) {\r\n args[1] = name;\r\n args[args.length - 1] = eventName[name];\r\n iterateEventNames.apply(this, args)\r\n }\r\n } else {\r\n iterateEventNames.apply(this, arguments)\r\n }\r\n }\r\n}\r\n\r\nfunction callNativeMethod(eventName, element) {\r\n var nativeMethodName = NATIVE_EVENTS_TO_TRIGGER[eventName] || eventName;\r\n if (function(eventName, element) {\r\n return \"click\" === eventName && \"a\" === element.localName\r\n }(eventName, element)) {\r\n return\r\n }\r\n if (isFunction(element[nativeMethodName])) {\r\n skipEvent = eventName;\r\n element[nativeMethodName]();\r\n skipEvent = void 0\r\n }\r\n}\r\n\r\nfunction calculateWhich(event) {\r\n if (function(event) {\r\n return null == event.which && 0 === event.type.indexOf(\"key\")\r\n }(event)) {\r\n return null != event.charCode ? event.charCode : event.keyCode\r\n }\r\n if (function(event) {\r\n return !event.which && void 0 !== event.button && /^(?:mouse|pointer|contextmenu|drag|drop)|click/.test(event.type)\r\n }(event)) {\r\n return {\r\n 1: 1,\r\n 2: 3,\r\n 3: 1,\r\n 4: 2\r\n } [event.button]\r\n }\r\n return event.which\r\n}\r\n\r\nfunction initEvent(EventClass) {\r\n if (EventClass) {\r\n eventsEngine.Event = EventClass;\r\n eventsEngine.Event.prototype = EventClass.prototype\r\n }\r\n}\r\ninitEvent(normalizeEventArguments((function(src, config) {\r\n var _src$view;\r\n var srcIsEvent = src instanceof eventsEngine.Event || hasWindow() && src instanceof window.Event || (null === (_src$view = src.view) || void 0 === _src$view ? void 0 : _src$view.Event) && src instanceof src.view.Event;\r\n if (srcIsEvent) {\r\n this.originalEvent = src;\r\n this.type = src.type;\r\n this.currentTarget = void 0;\r\n if (Object.prototype.hasOwnProperty.call(src, \"isTrusted\")) {\r\n this.isTrusted = src.isTrusted\r\n }\r\n this.timeStamp = src.timeStamp || Date.now()\r\n } else {\r\n _extends(this, src)\r\n }\r\n addProperty(\"which\", calculateWhich, this);\r\n if (0 === src.type.indexOf(\"touch\")) {\r\n delete config.pageX;\r\n delete config.pageY\r\n }\r\n _extends(this, config);\r\n this.guid = ++guid\r\n})));\r\n\r\nfunction addProperty(propName, hook, eventInstance) {\r\n Object.defineProperty(eventInstance || eventsEngine.Event.prototype, propName, {\r\n enumerable: true,\r\n configurable: true,\r\n get: function() {\r\n return this.originalEvent && hook(this.originalEvent)\r\n },\r\n set: function(value) {\r\n Object.defineProperty(this, propName, {\r\n enumerable: true,\r\n configurable: true,\r\n writable: true,\r\n value: value\r\n })\r\n }\r\n })\r\n}\r\nEVENT_PROPERTIES.forEach(prop => addProperty(prop, event => event[prop]));\r\nhookTouchProps(addProperty);\r\nvar beforeSetStrategy = Callbacks();\r\nvar afterSetStrategy = Callbacks();\r\neventsEngine.set = function(engine) {\r\n beforeSetStrategy.fire();\r\n eventsEngine.inject(engine);\r\n initEvent(engine.Event);\r\n afterSetStrategy.fire()\r\n};\r\neventsEngine.subscribeGlobal = function() {\r\n applyForEach(arguments, normalizeOnArguments((function() {\r\n var args = arguments;\r\n eventsEngine.on.apply(this, args);\r\n beforeSetStrategy.add((function() {\r\n var offArgs = Array.prototype.slice.call(args, 0);\r\n offArgs.splice(3, 1);\r\n eventsEngine.off.apply(this, offArgs)\r\n }));\r\n afterSetStrategy.add((function() {\r\n eventsEngine.on.apply(this, args)\r\n }))\r\n })))\r\n};\r\neventsEngine.forcePassiveFalseEventNames = forcePassiveFalseEventNames;\r\neventsEngine.passiveEventHandlersSupported = passiveEventHandlersSupported;\r\nexport default eventsEngine;\r\n","/**\r\n * DevExtreme (esm/events/index.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"./core/events_engine\";\r\nexport var on = eventsEngine.on;\r\nexport var one = eventsEngine.one;\r\nexport var off = eventsEngine.off;\r\nexport var trigger = eventsEngine.trigger;\r\nexport var triggerHandler = eventsEngine.triggerHandler;\r\nexport var Event = eventsEngine.Event;\r\n","/**\r\n * DevExtreme (esm/core/element_data.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"./dom_adapter\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport MemorizedCallbacks from \"./memorized_callbacks\";\r\nvar dataMap = new WeakMap;\r\nvar strategy;\r\nexport var strategyChanging = new MemorizedCallbacks;\r\nvar beforeCleanDataFunc = function() {};\r\nvar afterCleanDataFunc = function() {};\r\nexport var setDataStrategy = function(value) {\r\n strategyChanging.fire(value);\r\n strategy = value;\r\n var cleanData = strategy.cleanData;\r\n strategy.cleanData = function(nodes) {\r\n beforeCleanDataFunc(nodes);\r\n var result = cleanData.call(this, nodes);\r\n afterCleanDataFunc(nodes);\r\n return result\r\n }\r\n};\r\nsetDataStrategy({\r\n data: function() {\r\n var element = arguments[0];\r\n var key = arguments[1];\r\n var value = arguments[2];\r\n if (!element) {\r\n return\r\n }\r\n var elementData = dataMap.get(element);\r\n if (!elementData) {\r\n elementData = {};\r\n dataMap.set(element, elementData)\r\n }\r\n if (void 0 === key) {\r\n return elementData\r\n }\r\n if (2 === arguments.length) {\r\n return elementData[key]\r\n }\r\n elementData[key] = value;\r\n return value\r\n },\r\n removeData: function(element, key) {\r\n if (!element) {\r\n return\r\n }\r\n if (void 0 === key) {\r\n dataMap.delete(element)\r\n } else {\r\n var elementData = dataMap.get(element);\r\n if (elementData) {\r\n delete elementData[key]\r\n }\r\n }\r\n },\r\n cleanData: function(elements) {\r\n for (var i = 0; i < elements.length; i++) {\r\n eventsEngine.off(elements[i]);\r\n dataMap.delete(elements[i])\r\n }\r\n }\r\n});\r\nexport function getDataStrategy() {\r\n return strategy\r\n}\r\nexport function data() {\r\n return strategy.data.apply(this, arguments)\r\n}\r\nexport function beforeCleanData(callback) {\r\n beforeCleanDataFunc = callback\r\n}\r\nexport function afterCleanData(callback) {\r\n afterCleanDataFunc = callback\r\n}\r\nexport function cleanData(nodes) {\r\n return strategy.cleanData.call(this, nodes)\r\n}\r\nexport function removeData(element, key) {\r\n return strategy.removeData.call(this, element, key)\r\n}\r\nexport function cleanDataRecursive(element, cleanSelf) {\r\n if (!domAdapter.isElementNode(element)) {\r\n return\r\n }\r\n var childElements = element.getElementsByTagName(\"*\");\r\n strategy.cleanData(childElements);\r\n if (cleanSelf) {\r\n strategy.cleanData([element])\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/inflector.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n map\r\n} from \"./iterator\";\r\nvar _normalize = function(text) {\r\n if (void 0 === text || null === text) {\r\n return \"\"\r\n }\r\n return String(text)\r\n};\r\nvar _upperCaseFirst = function(text) {\r\n return _normalize(text).charAt(0).toUpperCase() + text.substr(1)\r\n};\r\nvar _chop = function(text) {\r\n return _normalize(text).replace(/([a-z\\d])([A-Z])/g, \"$1 $2\").split(/[\\s_-]+/)\r\n};\r\nexport var dasherize = function(text) {\r\n return map(_chop(text), (function(p) {\r\n return p.toLowerCase()\r\n })).join(\"-\")\r\n};\r\nexport var underscore = function(text) {\r\n return dasherize(text).replace(/-/g, \"_\")\r\n};\r\nexport var camelize = function(text, upperFirst) {\r\n return map(_chop(text), (function(p, i) {\r\n p = p.toLowerCase();\r\n if (upperFirst || i > 0) {\r\n p = _upperCaseFirst(p)\r\n }\r\n return p\r\n })).join(\"\")\r\n};\r\nexport var humanize = function(text) {\r\n return _upperCaseFirst(dasherize(text).replace(/-/g, \" \"))\r\n};\r\nexport var titleize = function(text) {\r\n return map(_chop(text), (function(p) {\r\n return _upperCaseFirst(p.toLowerCase())\r\n })).join(\" \")\r\n};\r\nvar DIGIT_CHARS = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\"];\r\nexport var captionize = function(name) {\r\n var captionList = [];\r\n var i;\r\n var char;\r\n var isPrevCharNewWord = false;\r\n var isNewWord = false;\r\n for (i = 0; i < name.length; i++) {\r\n char = name.charAt(i);\r\n isNewWord = char === char.toUpperCase() && \"-\" !== char && \")\" !== char && \"/\" !== char || char in DIGIT_CHARS;\r\n if (\"_\" === char || \".\" === char) {\r\n char = \" \";\r\n isNewWord = true\r\n } else if (0 === i) {\r\n char = char.toUpperCase();\r\n isNewWord = true\r\n } else if (!isPrevCharNewWord && isNewWord) {\r\n if (captionList.length > 0) {\r\n captionList.push(\" \")\r\n }\r\n }\r\n captionList.push(char);\r\n isPrevCharNewWord = isNewWord\r\n }\r\n return captionList.join(\"\")\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/style.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n camelize\r\n} from \"./inflector\";\r\nimport callOnce from \"./call_once\";\r\nimport {\r\n isNumeric,\r\n isString\r\n} from \"./type\";\r\nimport domAdapter from \"../dom_adapter\";\r\nvar jsPrefixes = [\"\", \"Webkit\", \"Moz\", \"O\", \"Ms\"];\r\nvar cssPrefixes = {\r\n \"\": \"\",\r\n Webkit: \"-webkit-\",\r\n Moz: \"-moz-\",\r\n O: \"-o-\",\r\n ms: \"-ms-\"\r\n};\r\nvar getStyles = callOnce((function() {\r\n return domAdapter.createElement(\"dx\").style\r\n}));\r\nvar forEachPrefixes = function(prop, callBack) {\r\n prop = camelize(prop, true);\r\n var result;\r\n for (var i = 0, cssPrefixesCount = jsPrefixes.length; i < cssPrefixesCount; i++) {\r\n var jsPrefix = jsPrefixes[i];\r\n var prefixedProp = jsPrefix + prop;\r\n var lowerPrefixedProp = camelize(prefixedProp);\r\n result = callBack(lowerPrefixedProp, jsPrefix);\r\n if (void 0 === result) {\r\n result = callBack(prefixedProp, jsPrefix)\r\n }\r\n if (void 0 !== result) {\r\n break\r\n }\r\n }\r\n return result || \"\"\r\n};\r\nvar styleProp = function(name) {\r\n if (name in getStyles()) {\r\n return name\r\n }\r\n var originalName = name;\r\n name = name.charAt(0).toUpperCase() + name.substr(1);\r\n for (var i = 1; i < jsPrefixes.length; i++) {\r\n var prefixedProp = jsPrefixes[i].toLowerCase() + name;\r\n if (prefixedProp in getStyles()) {\r\n return prefixedProp\r\n }\r\n }\r\n return originalName\r\n};\r\nvar stylePropPrefix = function(prop) {\r\n return forEachPrefixes(prop, (function(specific, jsPrefix) {\r\n if (specific in getStyles()) {\r\n return cssPrefixes[jsPrefix]\r\n }\r\n }))\r\n};\r\nvar pxExceptions = [\"fillOpacity\", \"columnCount\", \"flexGrow\", \"flexShrink\", \"fontWeight\", \"lineHeight\", \"opacity\", \"zIndex\", \"zoom\"];\r\nvar parsePixelValue = function(value) {\r\n if (isNumeric(value)) {\r\n return value\r\n } else if (isString(value)) {\r\n return Number(value.replace(\"px\", \"\"))\r\n }\r\n return NaN\r\n};\r\nvar normalizeStyleProp = function(prop, value) {\r\n if (isNumeric(value) && -1 === pxExceptions.indexOf(prop)) {\r\n value += \"px\"\r\n }\r\n return value\r\n};\r\nvar setDimensionProperty = function(elements, propertyName, value) {\r\n if (elements) {\r\n value = isNumeric(value) ? value += \"px\" : value;\r\n for (var i = 0; i < elements.length; ++i) {\r\n elements[i].style[propertyName] = value\r\n }\r\n }\r\n};\r\nvar setWidth = function(elements, value) {\r\n setDimensionProperty(elements, \"width\", value)\r\n};\r\nvar setHeight = function(elements, value) {\r\n setDimensionProperty(elements, \"height\", value)\r\n};\r\nvar setStyle = function(element, styleString) {\r\n var resetStyle = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : true;\r\n if (resetStyle) {\r\n var styleList = [].slice.call(element.style);\r\n styleList.forEach(propertyName => {\r\n element.style.removeProperty(propertyName)\r\n })\r\n }\r\n styleString.split(\";\").forEach(style => {\r\n var parts = style.split(\":\").map(stylePart => stylePart.trim());\r\n if (2 === parts.length) {\r\n var [property, value] = parts;\r\n element.style[property] = value\r\n }\r\n })\r\n};\r\nexport {\r\n styleProp,\r\n setStyle,\r\n stylePropPrefix,\r\n normalizeStyleProp,\r\n parsePixelValue,\r\n setWidth,\r\n setHeight\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/size.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isWindow,\r\n isString,\r\n isNumeric,\r\n isRenderer\r\n} from \"../utils/type\";\r\nvar window = getWindow();\r\nvar SPECIAL_HEIGHT_VALUES = [\"auto\", \"none\", \"inherit\", \"initial\"];\r\nvar getSizeByStyles = function(elementStyles, styles) {\r\n var result = 0;\r\n styles.forEach((function(style) {\r\n result += parseFloat(elementStyles[style]) || 0\r\n }));\r\n return result\r\n};\r\nexport var getElementBoxParams = function(name, elementStyles) {\r\n var beforeName = \"width\" === name ? \"Left\" : \"Top\";\r\n var afterName = \"width\" === name ? \"Right\" : \"Bottom\";\r\n return {\r\n padding: getSizeByStyles(elementStyles, [\"padding\" + beforeName, \"padding\" + afterName]),\r\n border: getSizeByStyles(elementStyles, [\"border\" + beforeName + \"Width\", \"border\" + afterName + \"Width\"]),\r\n margin: getSizeByStyles(elementStyles, [\"margin\" + beforeName, \"margin\" + afterName])\r\n }\r\n};\r\nvar getElementComputedStyle = function(element) {\r\n var _element$ownerDocumen;\r\n var view = (null === element || void 0 === element ? void 0 : null === (_element$ownerDocumen = element.ownerDocument) || void 0 === _element$ownerDocumen ? void 0 : _element$ownerDocumen.defaultView) || window;\r\n return view.getComputedStyle && view.getComputedStyle(element)\r\n};\r\nvar getCSSProperty = function(element, styles, name, defaultValue) {\r\n var _element$style;\r\n return (null === styles || void 0 === styles ? void 0 : styles[name]) || (null === (_element$style = element.style) || void 0 === _element$style ? void 0 : _element$style[name]) || defaultValue\r\n};\r\nvar boxIndices = {\r\n content: 0,\r\n padding: 1,\r\n border: 2,\r\n margin: 3,\r\n \"content-box\": 0,\r\n \"border-box\": 2\r\n};\r\nvar dimensionComponents = {\r\n width: [\"left\", \"right\"],\r\n height: [\"top\", \"bottom\"]\r\n};\r\n\r\nfunction getComponentThickness(elem, dimension, component, styles) {\r\n var get = (elem, styles, field) => parseFloat(getCSSProperty(elem, styles, field, \"0\")) || 0;\r\n var suffix = \"border\" === component ? \"-width\" : \"\";\r\n return get(elem, styles, \"\".concat(component, \"-\").concat(dimensionComponents[dimension][0]).concat(suffix)) + get(elem, styles, \"\".concat(component, \"-\").concat(dimensionComponents[dimension][1]).concat(suffix))\r\n}\r\nexport var getSize = function(element, dimension, box) {\r\n var offsetFieldName = \"width\" === dimension ? \"offsetWidth\" : \"offsetHeight\";\r\n var styles = getElementComputedStyle(element);\r\n var result = getCSSProperty(element, styles, dimension);\r\n if (\"\" === result || \"auto\" === result) {\r\n result = element[offsetFieldName]\r\n }\r\n result = parseFloat(result) || 0;\r\n var currentBox = getCSSProperty(element, styles, \"boxSizing\", \"content-box\");\r\n var targetBox = box || currentBox;\r\n var targetBoxIndex = boxIndices[targetBox];\r\n var currentBoxIndex = boxIndices[currentBox];\r\n if (void 0 === targetBoxIndex || void 0 === currentBoxIndex) {\r\n throw new Error\r\n }\r\n if (currentBoxIndex === targetBoxIndex) {\r\n return result\r\n }\r\n var coeff = Math.sign(targetBoxIndex - currentBoxIndex);\r\n var padding = false;\r\n var border = false;\r\n var margin = false;\r\n var scrollThickness = false;\r\n if (1 === coeff) {\r\n targetBoxIndex += 1;\r\n currentBoxIndex += 1\r\n }\r\n for (var boxPart = currentBoxIndex; boxPart !== targetBoxIndex; boxPart += coeff) {\r\n switch (boxPart) {\r\n case boxIndices.content:\r\n break;\r\n case boxIndices.padding:\r\n padding = coeff * getComponentThickness(element, dimension, \"padding\", styles);\r\n break;\r\n case boxIndices.border:\r\n border = coeff * getComponentThickness(element, dimension, \"border\", styles);\r\n break;\r\n case boxIndices.margin:\r\n margin = coeff * getComponentThickness(element, dimension, \"margin\", styles)\r\n }\r\n }\r\n if (padding || border) {\r\n var paddingAndBorder = (false === padding ? coeff * getComponentThickness(element, dimension, \"padding\", styles) : padding) + (false === border ? coeff * getComponentThickness(element, dimension, \"border\", styles) : border);\r\n scrollThickness = coeff * Math.max(0, Math.floor(element[offsetFieldName] - result - coeff * paddingAndBorder)) || 0\r\n }\r\n return result + margin + padding + border + scrollThickness\r\n};\r\nvar getContainerHeight = function(container) {\r\n return isWindow(container) ? container.innerHeight : container.offsetHeight\r\n};\r\nexport var parseHeight = function(value, container, element) {\r\n if (value.indexOf(\"px\") > 0) {\r\n value = parseInt(value.replace(\"px\", \"\"))\r\n } else if (value.indexOf(\"%\") > 0) {\r\n value = parseInt(value.replace(\"%\", \"\")) * getContainerHeight(container) / 100\r\n } else if (!isNaN(value)) {\r\n value = parseInt(value)\r\n } else if (value.indexOf(\"vh\") > 0) {\r\n value = window.innerHeight / 100 * parseInt(value.replace(\"vh\", \"\"))\r\n } else if (element && value.indexOf(\"em\") > 0) {\r\n value = parseFloat(value.replace(\"em\", \"\")) * parseFloat(window.getComputedStyle(element).fontSize)\r\n }\r\n return value\r\n};\r\nvar getHeightWithOffset = function(value, offset, container) {\r\n if (!value) {\r\n return null\r\n }\r\n if (SPECIAL_HEIGHT_VALUES.indexOf(value) > -1) {\r\n return offset ? null : value\r\n }\r\n if (isString(value)) {\r\n value = parseHeight(value, container)\r\n }\r\n if (isNumeric(value)) {\r\n return Math.max(0, value + offset)\r\n }\r\n var operationString = offset < 0 ? \" - \" : \" \";\r\n return \"calc(\" + value + operationString + Math.abs(offset) + \"px)\"\r\n};\r\nexport var addOffsetToMaxHeight = function(value, offset, container) {\r\n var maxHeight = getHeightWithOffset(value, offset, container);\r\n return null !== maxHeight ? maxHeight : \"none\"\r\n};\r\nexport var addOffsetToMinHeight = function(value, offset, container) {\r\n var minHeight = getHeightWithOffset(value, offset, container);\r\n return null !== minHeight ? minHeight : 0\r\n};\r\nexport var getVerticalOffsets = function(element, withMargins) {\r\n if (!element) {\r\n return 0\r\n }\r\n var boxParams = getElementBoxParams(\"height\", window.getComputedStyle(element));\r\n return boxParams.padding + boxParams.border + (withMargins ? boxParams.margin : 0)\r\n};\r\nexport var getVisibleHeight = function(element) {\r\n if (element) {\r\n var boundingClientRect = element.getBoundingClientRect();\r\n if (boundingClientRect.height) {\r\n return boundingClientRect.height\r\n }\r\n }\r\n return 0\r\n};\r\nexport var implementationsMap = {\r\n getWidth: function() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n return elementSizeHelper(\"width\", ...args)\r\n },\r\n setWidth: function() {\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2]\r\n }\r\n return elementSizeHelper(\"width\", ...args)\r\n },\r\n getHeight: function() {\r\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\r\n args[_key3] = arguments[_key3]\r\n }\r\n return elementSizeHelper(\"height\", ...args)\r\n },\r\n setHeight: function() {\r\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\r\n args[_key4] = arguments[_key4]\r\n }\r\n return elementSizeHelper(\"height\", ...args)\r\n },\r\n getOuterWidth: function() {\r\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\r\n args[_key5] = arguments[_key5]\r\n }\r\n return elementSizeHelper(\"outerWidth\", ...args)\r\n },\r\n setOuterWidth: function() {\r\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\r\n args[_key6] = arguments[_key6]\r\n }\r\n return elementSizeHelper(\"outerWidth\", ...args)\r\n },\r\n getOuterHeight: function() {\r\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\r\n args[_key7] = arguments[_key7]\r\n }\r\n return elementSizeHelper(\"outerHeight\", ...args)\r\n },\r\n setOuterHeight: function() {\r\n for (var _len8 = arguments.length, args = new Array(_len8), _key8 = 0; _key8 < _len8; _key8++) {\r\n args[_key8] = arguments[_key8]\r\n }\r\n return elementSizeHelper(\"outerHeight\", ...args)\r\n },\r\n getInnerWidth: function() {\r\n for (var _len9 = arguments.length, args = new Array(_len9), _key9 = 0; _key9 < _len9; _key9++) {\r\n args[_key9] = arguments[_key9]\r\n }\r\n return elementSizeHelper(\"innerWidth\", ...args)\r\n },\r\n setInnerWidth: function() {\r\n for (var _len10 = arguments.length, args = new Array(_len10), _key10 = 0; _key10 < _len10; _key10++) {\r\n args[_key10] = arguments[_key10]\r\n }\r\n return elementSizeHelper(\"innerWidth\", ...args)\r\n },\r\n getInnerHeight: function() {\r\n for (var _len11 = arguments.length, args = new Array(_len11), _key11 = 0; _key11 < _len11; _key11++) {\r\n args[_key11] = arguments[_key11]\r\n }\r\n return elementSizeHelper(\"innerHeight\", ...args)\r\n },\r\n setInnerHeight: function() {\r\n for (var _len12 = arguments.length, args = new Array(_len12), _key12 = 0; _key12 < _len12; _key12++) {\r\n args[_key12] = arguments[_key12]\r\n }\r\n return elementSizeHelper(\"innerHeight\", ...args)\r\n }\r\n};\r\n\r\nfunction elementSizeHelper(sizeProperty, el, value) {\r\n return 2 === arguments.length ? elementSize(el, sizeProperty) : elementSize(el, sizeProperty, value)\r\n}\r\nexport var getWidth = el => implementationsMap.getWidth(el);\r\nexport var setWidth = (el, value) => implementationsMap.setWidth(el, value);\r\nexport var getHeight = el => implementationsMap.getHeight(el);\r\nexport var setHeight = (el, value) => implementationsMap.setHeight(el, value);\r\nexport var getOuterWidth = (el, includeMargin) => implementationsMap.getOuterWidth(el, includeMargin || false);\r\nexport var setOuterWidth = (el, value) => implementationsMap.setOuterWidth(el, value);\r\nexport var getOuterHeight = (el, includeMargin) => implementationsMap.getOuterHeight(el, includeMargin || false);\r\nexport var setOuterHeight = (el, value) => implementationsMap.setOuterHeight(el, value);\r\nexport var getInnerWidth = el => implementationsMap.getInnerWidth(el);\r\nexport var setInnerWidth = (el, value) => implementationsMap.setInnerWidth(el, value);\r\nexport var getInnerHeight = el => implementationsMap.getInnerHeight(el);\r\nexport var setInnerHeight = (el, value) => implementationsMap.setInnerHeight(el, value);\r\nvar elementSize = function elementSize(el, sizeProperty, value) {\r\n var partialName = sizeProperty.toLowerCase().indexOf(\"width\") >= 0 ? \"Width\" : \"Height\";\r\n var propName = partialName.toLowerCase();\r\n var isOuter = 0 === sizeProperty.indexOf(\"outer\");\r\n var isInner = 0 === sizeProperty.indexOf(\"inner\");\r\n var isGetter = 2 === arguments.length || \"boolean\" === typeof value;\r\n if (isRenderer(el)) {\r\n if (el.length > 1 && !isGetter) {\r\n for (var i = 0; i < el.length; i++) {\r\n elementSize(el[i], sizeProperty, value)\r\n }\r\n return\r\n }\r\n el = el[0]\r\n }\r\n if (!el) {\r\n return\r\n }\r\n if (isWindow(el)) {\r\n return isOuter ? el[\"inner\" + partialName] : domAdapter.getDocumentElement()[\"client\" + partialName]\r\n }\r\n if (domAdapter.isDocument(el)) {\r\n var documentElement = domAdapter.getDocumentElement();\r\n var body = domAdapter.getBody();\r\n return Math.max(body[\"scroll\" + partialName], body[\"offset\" + partialName], documentElement[\"scroll\" + partialName], documentElement[\"offset\" + partialName], documentElement[\"client\" + partialName])\r\n }\r\n if (isGetter) {\r\n var box = \"content\";\r\n if (isOuter) {\r\n box = value ? \"margin\" : \"border\"\r\n }\r\n if (isInner) {\r\n box = \"padding\"\r\n }\r\n return getSize(el, propName, box)\r\n }\r\n if (isNumeric(value)) {\r\n var elementStyles = getElementComputedStyle(el);\r\n var sizeAdjustment = getElementBoxParams(propName, elementStyles);\r\n var isBorderBox = \"border-box\" === elementStyles.boxSizing;\r\n value = Number(value);\r\n if (isOuter) {\r\n value -= isBorderBox ? 0 : sizeAdjustment.border + sizeAdjustment.padding\r\n } else if (isInner) {\r\n value += isBorderBox ? sizeAdjustment.border : -sizeAdjustment.padding\r\n } else if (isBorderBox) {\r\n value += sizeAdjustment.border + sizeAdjustment.padding\r\n }\r\n }\r\n value += isNumeric(value) ? \"px\" : \"\";\r\n domAdapter.setStyle(el, propName, value);\r\n return null\r\n};\r\nexport var getWindowByElement = el => isWindow(el) ? el : el.defaultView;\r\nexport var getOffset = el => {\r\n if (!el.getClientRects().length) {\r\n return {\r\n top: 0,\r\n left: 0\r\n }\r\n }\r\n var rect = el.getBoundingClientRect();\r\n var win = getWindowByElement(el.ownerDocument);\r\n var docElem = el.ownerDocument.documentElement;\r\n return {\r\n top: rect.top + win.pageYOffset - docElem.clientTop,\r\n left: rect.left + win.pageXOffset - docElem.clientLeft\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/html_parser.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nvar isTagName = /<([a-z][^/\\0>\\x20\\t\\r\\n\\f]+)/i;\r\nvar tagWrappers = {\r\n default: {\r\n tagsCount: 0,\r\n startTags: \"\",\r\n endTags: \"\"\r\n },\r\n thead: {\r\n tagsCount: 1,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n },\r\n td: {\r\n tagsCount: 3,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n },\r\n col: {\r\n tagsCount: 2,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n },\r\n tr: {\r\n tagsCount: 2,\r\n startTags: \"\",\r\n endTags: \"
\"\r\n }\r\n};\r\ntagWrappers.tbody = tagWrappers.colgroup = tagWrappers.caption = tagWrappers.tfoot = tagWrappers.thead;\r\ntagWrappers.th = tagWrappers.td;\r\nexport var parseHTML = function(html) {\r\n if (\"string\" !== typeof html) {\r\n return null\r\n }\r\n var fragment = domAdapter.createDocumentFragment();\r\n var container = fragment.appendChild(domAdapter.createElement(\"div\"));\r\n var tags = isTagName.exec(html);\r\n var firstRootTag = tags && tags[1].toLowerCase();\r\n var tagWrapper = tagWrappers[firstRootTag] || tagWrappers.default;\r\n container.innerHTML = tagWrapper.startTags + html + tagWrapper.endTags;\r\n for (var i = 0; i < tagWrapper.tagsCount; i++) {\r\n container = container.lastChild\r\n }\r\n return [...container.childNodes]\r\n};\r\nexport var isTablePart = function(html) {\r\n var tags = isTagName.exec(html);\r\n return tags && tags[1] in tagWrappers\r\n};\r\n","/**\r\n * DevExtreme (esm/core/renderer_base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n cleanDataRecursive,\r\n removeData,\r\n data as elementData\r\n} from \"./element_data\";\r\nimport domAdapter from \"./dom_adapter\";\r\nimport {\r\n getWindow\r\n} from \"./utils/window\";\r\nimport {\r\n isObject,\r\n isWindow,\r\n isPlainObject,\r\n isString,\r\n isNumeric,\r\n isDefined,\r\n isFunction,\r\n type\r\n} from \"./utils/type\";\r\nimport {\r\n styleProp,\r\n normalizeStyleProp\r\n} from \"./utils/style\";\r\nimport {\r\n getOffset,\r\n getWindowByElement\r\n} from \"./utils/size\";\r\nimport {\r\n parseHTML,\r\n isTablePart\r\n} from \"./utils/html_parser\";\r\nvar window = getWindow();\r\nvar renderer;\r\nvar initRender = function(selector, context) {\r\n if (!selector) {\r\n this.length = 0;\r\n return this\r\n }\r\n if (\"string\" === typeof selector) {\r\n if (\"body\" === selector) {\r\n this[0] = context ? context.body : domAdapter.getBody();\r\n this.length = 1;\r\n return this\r\n }\r\n context = context || domAdapter.getDocument();\r\n if (\"<\" === selector[0]) {\r\n this[0] = domAdapter.createElement(selector.slice(1, -1), context);\r\n this.length = 1;\r\n return this\r\n } [].push.apply(this, domAdapter.querySelectorAll(context, selector));\r\n return this\r\n } else if (domAdapter.isNode(selector) || isWindow(selector)) {\r\n this[0] = selector;\r\n this.length = 1;\r\n return this\r\n } else if (Array.isArray(selector)) {\r\n [].push.apply(this, selector);\r\n return this\r\n }\r\n return renderer(selector.toArray ? selector.toArray() : [selector])\r\n};\r\nrenderer = function(selector, context) {\r\n return new initRender(selector, context)\r\n};\r\nrenderer.fn = {\r\n dxRenderer: true\r\n};\r\ninitRender.prototype = renderer.fn;\r\nvar repeatMethod = function(methodName, args) {\r\n for (var i = 0; i < this.length; i++) {\r\n var item = renderer(this[i]);\r\n item[methodName].apply(item, args)\r\n }\r\n return this\r\n};\r\nvar setAttributeValue = function(element, attrName, value) {\r\n if (void 0 !== value && null !== value && false !== value) {\r\n domAdapter.setAttribute(element, attrName, value)\r\n } else {\r\n domAdapter.removeAttribute(element, attrName)\r\n }\r\n};\r\ninitRender.prototype.show = function() {\r\n return this.toggle(true)\r\n};\r\ninitRender.prototype.hide = function() {\r\n return this.toggle(false)\r\n};\r\ninitRender.prototype.toggle = function(value) {\r\n if (this[0]) {\r\n this.toggleClass(\"dx-state-invisible\", !value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.attr = function(attrName, value) {\r\n if (this.length > 1 && arguments.length > 1) {\r\n return repeatMethod.call(this, \"attr\", arguments)\r\n }\r\n if (!this[0]) {\r\n if (isObject(attrName) || void 0 !== value) {\r\n return this\r\n } else {\r\n return\r\n }\r\n }\r\n if (!this[0].getAttribute) {\r\n return this.prop(attrName, value)\r\n }\r\n if (\"string\" === typeof attrName && 1 === arguments.length) {\r\n var result = this[0].getAttribute(attrName);\r\n return null == result ? void 0 : result\r\n } else if (isPlainObject(attrName)) {\r\n for (var key in attrName) {\r\n this.attr(key, attrName[key])\r\n }\r\n } else {\r\n setAttributeValue(this[0], attrName, value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.removeAttr = function(attrName) {\r\n this[0] && domAdapter.removeAttribute(this[0], attrName);\r\n return this\r\n};\r\ninitRender.prototype.prop = function(propName, value) {\r\n if (!this[0]) {\r\n return this\r\n }\r\n if (\"string\" === typeof propName && 1 === arguments.length) {\r\n return this[0][propName]\r\n } else if (isPlainObject(propName)) {\r\n for (var key in propName) {\r\n this.prop(key, propName[key])\r\n }\r\n } else {\r\n domAdapter.setProperty(this[0], propName, value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.addClass = function(className) {\r\n return this.toggleClass(className, true)\r\n};\r\ninitRender.prototype.removeClass = function(className) {\r\n return this.toggleClass(className, false)\r\n};\r\ninitRender.prototype.hasClass = function(className) {\r\n if (!this[0] || void 0 === this[0].className) {\r\n return false\r\n }\r\n var classNames = className.split(\" \");\r\n for (var i = 0; i < classNames.length; i++) {\r\n if (this[0].classList) {\r\n if (this[0].classList.contains(classNames[i])) {\r\n return true\r\n }\r\n } else {\r\n var _className = isString(this[0].className) ? this[0].className : domAdapter.getAttribute(this[0], \"class\");\r\n if ((_className || \"\").split(\" \").indexOf(classNames[i]) >= 0) {\r\n return true\r\n }\r\n }\r\n }\r\n return false\r\n};\r\ninitRender.prototype.toggleClass = function(className, value) {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"toggleClass\", arguments)\r\n }\r\n if (!this[0] || !className) {\r\n return this\r\n }\r\n value = void 0 === value ? !this.hasClass(className) : value;\r\n var classNames = className.split(\" \");\r\n for (var i = 0; i < classNames.length; i++) {\r\n domAdapter.setClass(this[0], classNames[i], value)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.html = function(value) {\r\n if (!arguments.length) {\r\n return this[0].innerHTML\r\n }\r\n this.empty();\r\n if (\"string\" === typeof value && !isTablePart(value) || \"number\" === typeof value) {\r\n this[0].innerHTML = value;\r\n return this\r\n }\r\n return this.append(parseHTML(value))\r\n};\r\nvar appendElements = function(element, nextSibling) {\r\n if (!this[0] || !element) {\r\n return\r\n }\r\n if (\"string\" === typeof element) {\r\n element = parseHTML(element)\r\n } else if (element.nodeType) {\r\n element = [element]\r\n } else if (isNumeric(element)) {\r\n element = [domAdapter.createTextNode(element)]\r\n }\r\n for (var i = 0; i < element.length; i++) {\r\n var item = element[i];\r\n var container = this[0];\r\n var wrapTR = \"TABLE\" === container.tagName && \"TR\" === item.tagName;\r\n if (wrapTR && container.tBodies && container.tBodies.length) {\r\n container = container.tBodies[0]\r\n }\r\n domAdapter.insertElement(container, item.nodeType ? item : item[0], nextSibling)\r\n }\r\n};\r\nvar setCss = function(name, value) {\r\n if (!this[0] || !this[0].style) {\r\n return\r\n }\r\n if (null === value || \"number\" === typeof value && isNaN(value)) {\r\n return\r\n }\r\n name = styleProp(name);\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].style[name] = normalizeStyleProp(name, value)\r\n }\r\n};\r\ninitRender.prototype.css = function(name, value) {\r\n if (isString(name)) {\r\n if (2 === arguments.length) {\r\n setCss.call(this, name, value)\r\n } else {\r\n if (!this[0]) {\r\n return\r\n }\r\n name = styleProp(name);\r\n var result = window.getComputedStyle(this[0])[name] || this[0].style[name];\r\n return isNumeric(result) ? result.toString() : result\r\n }\r\n } else if (isPlainObject(name)) {\r\n for (var key in name) {\r\n setCss.call(this, key, name[key])\r\n }\r\n }\r\n return this\r\n};\r\ninitRender.prototype.prepend = function(element) {\r\n if (arguments.length > 1) {\r\n for (var i = 0; i < arguments.length; i++) {\r\n this.prepend(arguments[i])\r\n }\r\n return this\r\n }\r\n appendElements.apply(this, [element, this[0].firstChild]);\r\n return this\r\n};\r\ninitRender.prototype.append = function(element) {\r\n if (arguments.length > 1) {\r\n for (var i = 0; i < arguments.length; i++) {\r\n this.append(arguments[i])\r\n }\r\n return this\r\n }\r\n appendElements.apply(this, [element]);\r\n return this\r\n};\r\ninitRender.prototype.prependTo = function(element) {\r\n if (this.length > 1) {\r\n for (var i = this.length - 1; i >= 0; i--) {\r\n renderer(this[i]).prependTo(element)\r\n }\r\n return this\r\n }\r\n element = renderer(element);\r\n if (element[0]) {\r\n domAdapter.insertElement(element[0], this[0], element[0].firstChild)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.appendTo = function(element) {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"appendTo\", arguments)\r\n }\r\n domAdapter.insertElement(renderer(element)[0], this[0]);\r\n return this\r\n};\r\ninitRender.prototype.insertBefore = function(element) {\r\n if (element && element[0]) {\r\n domAdapter.insertElement(element[0].parentNode, this[0], element[0])\r\n }\r\n return this\r\n};\r\ninitRender.prototype.insertAfter = function(element) {\r\n if (element && element[0]) {\r\n domAdapter.insertElement(element[0].parentNode, this[0], element[0].nextSibling)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.before = function(element) {\r\n if (this[0]) {\r\n domAdapter.insertElement(this[0].parentNode, element[0], this[0])\r\n }\r\n return this\r\n};\r\ninitRender.prototype.after = function(element) {\r\n if (this[0]) {\r\n domAdapter.insertElement(this[0].parentNode, element[0], this[0].nextSibling)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.wrap = function(wrapper) {\r\n if (this[0]) {\r\n var wrap = renderer(wrapper);\r\n wrap.insertBefore(this);\r\n wrap.append(this)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.wrapInner = function(wrapper) {\r\n var contents = this.contents();\r\n if (contents.length) {\r\n contents.wrap(wrapper)\r\n } else {\r\n this.append(wrapper)\r\n }\r\n return this\r\n};\r\ninitRender.prototype.replaceWith = function(element) {\r\n if (!(element && element[0])) {\r\n return\r\n }\r\n if (element.is(this)) {\r\n return this\r\n }\r\n element.insertBefore(this);\r\n this.remove();\r\n return element\r\n};\r\ninitRender.prototype.remove = function() {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"remove\", arguments)\r\n }\r\n cleanDataRecursive(this[0], true);\r\n domAdapter.removeElement(this[0]);\r\n return this\r\n};\r\ninitRender.prototype.detach = function() {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"detach\", arguments)\r\n }\r\n domAdapter.removeElement(this[0]);\r\n return this\r\n};\r\ninitRender.prototype.empty = function() {\r\n if (this.length > 1) {\r\n return repeatMethod.call(this, \"empty\", arguments)\r\n }\r\n cleanDataRecursive(this[0]);\r\n domAdapter.setText(this[0], \"\");\r\n return this\r\n};\r\ninitRender.prototype.clone = function() {\r\n var result = [];\r\n for (var i = 0; i < this.length; i++) {\r\n result.push(this[i].cloneNode(true))\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.text = function(value) {\r\n if (!arguments.length) {\r\n var result = \"\";\r\n for (var i = 0; i < this.length; i++) {\r\n result += this[i] && this[i].textContent || \"\"\r\n }\r\n return result\r\n }\r\n var text = isFunction(value) ? value() : value;\r\n cleanDataRecursive(this[0], false);\r\n domAdapter.setText(this[0], isDefined(text) ? text : \"\");\r\n return this\r\n};\r\ninitRender.prototype.val = function(value) {\r\n if (1 === arguments.length) {\r\n return this.prop(\"value\", isDefined(value) ? value : \"\")\r\n }\r\n return this.prop(\"value\")\r\n};\r\ninitRender.prototype.contents = function() {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var result = [];\r\n result.push.apply(result, this[0].childNodes);\r\n return renderer(result)\r\n};\r\ninitRender.prototype.find = function(selector) {\r\n var result = renderer();\r\n if (!selector) {\r\n return result\r\n }\r\n var nodes = [];\r\n var i;\r\n if (\"string\" === typeof selector) {\r\n selector = selector.trim();\r\n for (i = 0; i < this.length; i++) {\r\n var element = this[i];\r\n if (domAdapter.isElementNode(element)) {\r\n var elementId = element.getAttribute(\"id\");\r\n var queryId = elementId || \"dx-query-children\";\r\n if (!elementId) {\r\n setAttributeValue(element, \"id\", queryId)\r\n }\r\n queryId = \"[id='\" + queryId + \"'] \";\r\n var querySelector = queryId + selector.replace(/([^\\\\])(,)/g, \"$1, \" + queryId);\r\n nodes.push.apply(nodes, domAdapter.querySelectorAll(element, querySelector));\r\n setAttributeValue(element, \"id\", elementId)\r\n } else if (domAdapter.isDocument(element) || domAdapter.isDocumentFragment(element)) {\r\n nodes.push.apply(nodes, domAdapter.querySelectorAll(element, selector))\r\n }\r\n }\r\n } else {\r\n for (i = 0; i < this.length; i++) {\r\n selector = domAdapter.isNode(selector) ? selector : selector[0];\r\n if (this[i] !== selector && this[i].contains(selector)) {\r\n nodes.push(selector)\r\n }\r\n }\r\n }\r\n return result.add(nodes)\r\n};\r\nvar isVisible = function(_, element) {\r\n var _element$host;\r\n element = null !== (_element$host = element.host) && void 0 !== _element$host ? _element$host : element;\r\n if (!element.nodeType) {\r\n return true\r\n }\r\n return !!(element.offsetWidth || element.offsetHeight || element.getClientRects().length)\r\n};\r\ninitRender.prototype.filter = function(selector) {\r\n if (!selector) {\r\n return renderer()\r\n }\r\n if (\":visible\" === selector) {\r\n return this.filter(isVisible)\r\n } else if (\":hidden\" === selector) {\r\n return this.filter((function(_, element) {\r\n return !isVisible(_, element)\r\n }))\r\n }\r\n var result = [];\r\n for (var i = 0; i < this.length; i++) {\r\n var item = this[i];\r\n if (domAdapter.isElementNode(item) && \"string\" === type(selector)) {\r\n domAdapter.elementMatches(item, selector) && result.push(item)\r\n } else if (domAdapter.isNode(selector) || isWindow(selector)) {\r\n selector === item && result.push(item)\r\n } else if (isFunction(selector)) {\r\n selector.call(item, i, item) && result.push(item)\r\n } else {\r\n for (var j = 0; j < selector.length; j++) {\r\n selector[j] === item && result.push(item)\r\n }\r\n }\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.not = function(selector) {\r\n var result = [];\r\n var nodes = this.filter(selector).toArray();\r\n for (var i = 0; i < this.length; i++) {\r\n if (-1 === nodes.indexOf(this[i])) {\r\n result.push(this[i])\r\n }\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.is = function(selector) {\r\n return !!this.filter(selector).length\r\n};\r\ninitRender.prototype.children = function(selector) {\r\n var result = [];\r\n for (var i = 0; i < this.length; i++) {\r\n var nodes = this[i] ? this[i].childNodes : [];\r\n for (var j = 0; j < nodes.length; j++) {\r\n if (domAdapter.isElementNode(nodes[j])) {\r\n result.push(nodes[j])\r\n }\r\n }\r\n }\r\n result = renderer(result);\r\n return selector ? result.filter(selector) : result\r\n};\r\ninitRender.prototype.siblings = function() {\r\n var element = this[0];\r\n if (!element || !element.parentNode) {\r\n return renderer()\r\n }\r\n var result = [];\r\n var parentChildNodes = element.parentNode.childNodes || [];\r\n for (var i = 0; i < parentChildNodes.length; i++) {\r\n var node = parentChildNodes[i];\r\n if (domAdapter.isElementNode(node) && node !== element) {\r\n result.push(node)\r\n }\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.each = function(callback) {\r\n for (var i = 0; i < this.length; i++) {\r\n if (false === callback.call(this[i], i, this[i])) {\r\n break\r\n }\r\n }\r\n};\r\ninitRender.prototype.index = function(element) {\r\n if (!element) {\r\n return this.parent().children().index(this)\r\n }\r\n element = renderer(element);\r\n return this.toArray().indexOf(element[0])\r\n};\r\ninitRender.prototype.get = function(index) {\r\n return this[index < 0 ? this.length + index : index]\r\n};\r\ninitRender.prototype.eq = function(index) {\r\n index = index < 0 ? this.length + index : index;\r\n return renderer(this[index])\r\n};\r\ninitRender.prototype.first = function() {\r\n return this.eq(0)\r\n};\r\ninitRender.prototype.last = function() {\r\n return this.eq(-1)\r\n};\r\ninitRender.prototype.select = function() {\r\n for (var i = 0; i < this.length; i += 1) {\r\n this[i].select && this[i].select()\r\n }\r\n return this\r\n};\r\ninitRender.prototype.parent = function(selector) {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var result = renderer(this[0].parentNode);\r\n return !selector || result.is(selector) ? result : renderer()\r\n};\r\ninitRender.prototype.parents = function(selector) {\r\n var result = [];\r\n var parent = this.parent();\r\n while (parent && parent[0] && !domAdapter.isDocument(parent[0])) {\r\n if (domAdapter.isElementNode(parent[0])) {\r\n if (!selector || parent.is(selector)) {\r\n result.push(parent.get(0))\r\n }\r\n }\r\n parent = parent.parent()\r\n }\r\n return renderer(result)\r\n};\r\ninitRender.prototype.closest = function(selector) {\r\n if (this.is(selector)) {\r\n return this\r\n }\r\n var parent = this.parent();\r\n while (parent && parent.length) {\r\n if (parent.is(selector)) {\r\n return parent\r\n }\r\n parent = parent.parent()\r\n }\r\n return renderer()\r\n};\r\ninitRender.prototype.next = function(selector) {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var next = renderer(this[0].nextSibling);\r\n if (!arguments.length) {\r\n return next\r\n }\r\n while (next && next.length) {\r\n if (next.is(selector)) {\r\n return next\r\n }\r\n next = next.next()\r\n }\r\n return renderer()\r\n};\r\ninitRender.prototype.prev = function() {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n return renderer(this[0].previousSibling)\r\n};\r\ninitRender.prototype.add = function(selector) {\r\n var targets = renderer(selector);\r\n var result = this.toArray();\r\n for (var i = 0; i < targets.length; i++) {\r\n var target = targets[i];\r\n if (-1 === result.indexOf(target)) {\r\n result.push(target)\r\n }\r\n }\r\n return renderer(result)\r\n};\r\nvar emptyArray = [];\r\ninitRender.prototype.splice = function() {\r\n return renderer(emptyArray.splice.apply(this, arguments))\r\n};\r\ninitRender.prototype.slice = function() {\r\n return renderer(emptyArray.slice.apply(this, arguments))\r\n};\r\ninitRender.prototype.toArray = function() {\r\n return emptyArray.slice.call(this)\r\n};\r\ninitRender.prototype.offset = function() {\r\n if (!this[0]) {\r\n return\r\n }\r\n return getOffset(this[0])\r\n};\r\ninitRender.prototype.offsetParent = function() {\r\n if (!this[0]) {\r\n return renderer()\r\n }\r\n var offsetParent = renderer(this[0].offsetParent);\r\n while (offsetParent[0] && \"static\" === offsetParent.css(\"position\")) {\r\n offsetParent = renderer(offsetParent[0].offsetParent)\r\n }\r\n offsetParent = offsetParent[0] ? offsetParent : renderer(domAdapter.getDocumentElement());\r\n return offsetParent\r\n};\r\ninitRender.prototype.position = function() {\r\n if (!this[0]) {\r\n return\r\n }\r\n var offset;\r\n var marginTop = parseFloat(this.css(\"marginTop\"));\r\n var marginLeft = parseFloat(this.css(\"marginLeft\"));\r\n if (\"fixed\" === this.css(\"position\")) {\r\n offset = this[0].getBoundingClientRect();\r\n return {\r\n top: offset.top - marginTop,\r\n left: offset.left - marginLeft\r\n }\r\n }\r\n offset = this.offset();\r\n var offsetParent = this.offsetParent();\r\n var parentOffset = {\r\n top: 0,\r\n left: 0\r\n };\r\n if (\"HTML\" !== offsetParent[0].nodeName) {\r\n parentOffset = offsetParent.offset()\r\n }\r\n parentOffset = {\r\n top: parentOffset.top + parseFloat(offsetParent.css(\"borderTopWidth\")),\r\n left: parentOffset.left + parseFloat(offsetParent.css(\"borderLeftWidth\"))\r\n };\r\n return {\r\n top: offset.top - parentOffset.top - marginTop,\r\n left: offset.left - parentOffset.left - marginLeft\r\n }\r\n};\r\n[{\r\n name: \"scrollLeft\",\r\n offsetProp: \"pageXOffset\",\r\n scrollWindow: function(win, value) {\r\n win.scrollTo(value, win.pageYOffset)\r\n }\r\n}, {\r\n name: \"scrollTop\",\r\n offsetProp: \"pageYOffset\",\r\n scrollWindow: function(win, value) {\r\n win.scrollTo(win.pageXOffset, value)\r\n }\r\n}].forEach((function(directionStrategy) {\r\n var propName = directionStrategy.name;\r\n initRender.prototype[propName] = function(value) {\r\n if (!this[0]) {\r\n return\r\n }\r\n var window = getWindowByElement(this[0]);\r\n if (void 0 === value) {\r\n return window ? window[directionStrategy.offsetProp] : this[0][propName]\r\n }\r\n if (window) {\r\n directionStrategy.scrollWindow(window, value)\r\n } else {\r\n this[0][propName] = value\r\n }\r\n return this\r\n }\r\n}));\r\ninitRender.prototype.data = function(key, value) {\r\n if (!this[0]) {\r\n return\r\n }\r\n if (arguments.length < 2) {\r\n return elementData.call(renderer, this[0], key)\r\n }\r\n elementData.call(renderer, this[0], key, value);\r\n return this\r\n};\r\ninitRender.prototype.removeData = function(key) {\r\n this[0] && removeData(this[0], key);\r\n return this\r\n};\r\nvar rendererWrapper = function() {\r\n return renderer.apply(this, arguments)\r\n};\r\nObject.defineProperty(rendererWrapper, \"fn\", {\r\n enumerable: true,\r\n configurable: true,\r\n get: function() {\r\n return renderer.fn\r\n },\r\n set: function(value) {\r\n renderer.fn = value\r\n }\r\n});\r\nexport default {\r\n set: function(strategy) {\r\n renderer = strategy\r\n },\r\n get: function() {\r\n return rendererWrapper\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/renderer.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport rendererBase from \"./renderer_base\";\r\nexport default rendererBase.get();\r\n","/**\r\n * DevExtreme (esm/core/component_registrator_callbacks.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport MemorizedCallbacks from \"./memorized_callbacks\";\r\nexport default new MemorizedCallbacks;\r\n","/**\r\n * DevExtreme (esm/events/core/event_registrator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport callbacks from \"./event_registrator_callbacks\";\r\nvar registerEvent = function(name, eventObject) {\r\n var strategy = {};\r\n if (\"noBubble\" in eventObject) {\r\n strategy.noBubble = eventObject.noBubble\r\n }\r\n if (\"bindType\" in eventObject) {\r\n strategy.bindType = eventObject.bindType\r\n }\r\n if (\"delegateType\" in eventObject) {\r\n strategy.delegateType = eventObject.delegateType\r\n }\r\n each([\"setup\", \"teardown\", \"add\", \"remove\", \"trigger\", \"handle\", \"_default\", \"dispose\"], (function(_, methodName) {\r\n if (!eventObject[methodName]) {\r\n return\r\n }\r\n strategy[methodName] = function() {\r\n var args = [].slice.call(arguments);\r\n args.unshift(this);\r\n return eventObject[methodName].apply(eventObject, args)\r\n }\r\n }));\r\n callbacks.fire(name, strategy)\r\n};\r\nregisterEvent.callbacks = callbacks;\r\nexport default registerEvent;\r\n","/**\r\n * DevExtreme (esm/events/remove.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n beforeCleanData\r\n} from \"../core/element_data\";\r\nimport eventsEngine from \"./core/events_engine\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nexport var removeEvent = \"dxremove\";\r\nvar eventPropName = \"dxRemoveEvent\";\r\nbeforeCleanData((function(elements) {\r\n elements = [].slice.call(elements);\r\n for (var i = 0; i < elements.length; i++) {\r\n var $element = $(elements[i]);\r\n if ($element.prop(eventPropName)) {\r\n $element[0][eventPropName] = null;\r\n eventsEngine.triggerHandler($element, removeEvent)\r\n }\r\n }\r\n}));\r\nregisterEvent(removeEvent, {\r\n noBubble: true,\r\n setup: function(element) {\r\n $(element).prop(eventPropName, true)\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/utils/public_component.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDefined\r\n} from \"./type\";\r\nimport {\r\n removeEvent\r\n} from \"../../events/remove\";\r\nvar COMPONENT_NAMES_DATA_KEY = \"dxComponents\";\r\nvar ANONYMOUS_COMPONENT_DATA_KEY = \"dxPrivateComponent\";\r\nvar componentNames = new WeakMap;\r\nvar nextAnonymousComponent = 0;\r\nvar getName = function(componentClass, newName) {\r\n if (isDefined(newName)) {\r\n componentNames.set(componentClass, newName);\r\n return\r\n }\r\n if (!componentNames.has(componentClass)) {\r\n var generatedName = ANONYMOUS_COMPONENT_DATA_KEY + nextAnonymousComponent++;\r\n componentNames.set(componentClass, generatedName);\r\n return generatedName\r\n }\r\n return componentNames.get(componentClass)\r\n};\r\nexport function attachInstanceToElement($element, componentInstance, disposeFn) {\r\n var data = elementData($element.get(0));\r\n var name = getName(componentInstance.constructor);\r\n data[name] = componentInstance;\r\n if (disposeFn) {\r\n eventsEngine.one($element, removeEvent, (function() {\r\n disposeFn.call(componentInstance)\r\n }))\r\n }\r\n if (!data[COMPONENT_NAMES_DATA_KEY]) {\r\n data[COMPONENT_NAMES_DATA_KEY] = []\r\n }\r\n data[COMPONENT_NAMES_DATA_KEY].push(name)\r\n}\r\nexport function getInstanceByElement($element, componentClass) {\r\n var name = getName(componentClass);\r\n return elementData($element.get(0), name)\r\n}\r\nexport {\r\n getName as name\r\n};\r\n","/**\r\n * DevExtreme (esm/core/component_registrator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport callbacks from \"./component_registrator_callbacks\";\r\nimport errors from \"./errors\";\r\nimport {\r\n name as publicComponentName\r\n} from \"./utils/public_component\";\r\nvar registerComponent = function(name, namespace, componentClass) {\r\n if (!componentClass) {\r\n componentClass = namespace\r\n } else {\r\n namespace[name] = componentClass\r\n }\r\n publicComponentName(componentClass, name);\r\n callbacks.fire(name, componentClass)\r\n};\r\nvar registerRendererComponent = function(name, componentClass) {\r\n $.fn[name] = function(options) {\r\n var isMemberInvoke = \"string\" === typeof options;\r\n var result;\r\n if (isMemberInvoke) {\r\n var memberName = options;\r\n var memberArgs = [].slice.call(arguments).slice(1);\r\n this.each((function() {\r\n var instance = componentClass.getInstance(this);\r\n if (!instance) {\r\n throw errors.Error(\"E0009\", name)\r\n }\r\n var member = instance[memberName];\r\n var memberValue = member.apply(instance, memberArgs);\r\n if (void 0 === result) {\r\n result = memberValue\r\n }\r\n }))\r\n } else {\r\n this.each((function() {\r\n var instance = componentClass.getInstance(this);\r\n if (instance) {\r\n instance.option(options)\r\n } else {\r\n new componentClass(this, options)\r\n }\r\n }));\r\n result = this\r\n }\r\n return result\r\n }\r\n};\r\ncallbacks.add(registerRendererComponent);\r\nexport default registerComponent;\r\n","/**\r\n * DevExtreme (esm/core/utils/ready_callbacks.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nimport injector from \"./dependency_injector\";\r\nimport {\r\n hasWindow\r\n} from \"./window\";\r\nimport callOnce from \"./call_once\";\r\nvar callbacks = [];\r\nvar subscribeReady = callOnce(() => {\r\n var removeListener = domAdapter.listen(domAdapter.getDocument(), \"DOMContentLoaded\", () => {\r\n readyCallbacks.fire();\r\n removeListener()\r\n })\r\n});\r\nvar readyCallbacks = {\r\n add: callback => {\r\n var windowExists = hasWindow();\r\n if (windowExists && \"loading\" !== domAdapter.getReadyState()) {\r\n callback()\r\n } else {\r\n callbacks.push(callback);\r\n windowExists && subscribeReady()\r\n }\r\n },\r\n fire: () => {\r\n callbacks.forEach(callback => callback());\r\n callbacks = []\r\n }\r\n};\r\nexport default injector(readyCallbacks);\r\n","/**\r\n * DevExtreme (esm/core/utils/resize_callbacks.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n hasWindow,\r\n getWindow\r\n} from \"./window\";\r\nimport domAdapter from \"../dom_adapter\";\r\nimport Callbacks from \"./callbacks\";\r\nimport readyCallbacks from \"./ready_callbacks\";\r\nimport callOnce from \"./call_once\";\r\nvar resizeCallbacks = function() {\r\n var prevSize;\r\n var callbacks = Callbacks();\r\n var originalCallbacksAdd = callbacks.add;\r\n var originalCallbacksRemove = callbacks.remove;\r\n if (!hasWindow()) {\r\n return callbacks\r\n }\r\n var formatSize = function() {\r\n var window = getWindow();\r\n return {\r\n width: window.innerWidth,\r\n height: window.innerHeight\r\n }\r\n };\r\n var handleResize = function() {\r\n var now = formatSize();\r\n if (now.width === prevSize.width && now.height === prevSize.height) {\r\n return\r\n }\r\n var changedDimension;\r\n if (now.width === prevSize.width) {\r\n changedDimension = \"height\"\r\n }\r\n if (now.height === prevSize.height) {\r\n changedDimension = \"width\"\r\n }\r\n prevSize = now;\r\n callbacks.fire(changedDimension)\r\n };\r\n var setPrevSize = callOnce((function() {\r\n prevSize = formatSize()\r\n }));\r\n var removeListener;\r\n callbacks.add = function() {\r\n var result = originalCallbacksAdd.apply(callbacks, arguments);\r\n setPrevSize();\r\n readyCallbacks.add((function() {\r\n if (!removeListener && callbacks.has()) {\r\n removeListener = domAdapter.listen(getWindow(), \"resize\", handleResize)\r\n }\r\n }));\r\n return result\r\n };\r\n callbacks.remove = function() {\r\n var result = originalCallbacksRemove.apply(callbacks, arguments);\r\n if (!callbacks.has() && removeListener) {\r\n removeListener();\r\n removeListener = void 0\r\n }\r\n return result\r\n };\r\n return callbacks\r\n}();\r\nexport default resizeCallbacks;\r\n","/**\r\n * DevExtreme (esm/core/events_strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Callbacks from \"./utils/callbacks\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nimport {\r\n isFunction,\r\n isPlainObject\r\n} from \"./utils/type\";\r\nexport class EventsStrategy {\r\n constructor(owner) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n this._events = {};\r\n this._owner = owner;\r\n this._options = options\r\n }\r\n static create(owner, strategy) {\r\n if (strategy) {\r\n return isFunction(strategy) ? strategy(owner) : strategy\r\n } else {\r\n return new EventsStrategy(owner)\r\n }\r\n }\r\n hasEvent(eventName) {\r\n var callbacks = this._events[eventName];\r\n return callbacks ? callbacks.has() : false\r\n }\r\n fireEvent(eventName, eventArgs) {\r\n var callbacks = this._events[eventName];\r\n if (callbacks) {\r\n callbacks.fireWith(this._owner, eventArgs)\r\n }\r\n return this._owner\r\n }\r\n on(eventName, eventHandler) {\r\n if (isPlainObject(eventName)) {\r\n each(eventName, (e, h) => {\r\n this.on(e, h)\r\n })\r\n } else {\r\n var callbacks = this._events[eventName];\r\n if (!callbacks) {\r\n callbacks = Callbacks({\r\n syncStrategy: this._options.syncStrategy\r\n });\r\n this._events[eventName] = callbacks\r\n }\r\n var addFn = callbacks.originalAdd || callbacks.add;\r\n addFn.call(callbacks, eventHandler)\r\n }\r\n }\r\n off(eventName, eventHandler) {\r\n var callbacks = this._events[eventName];\r\n if (callbacks) {\r\n if (isFunction(eventHandler)) {\r\n callbacks.remove(eventHandler)\r\n } else {\r\n callbacks.empty()\r\n }\r\n }\r\n }\r\n dispose() {\r\n each(this._events, (eventName, event) => {\r\n event.empty()\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/storage.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nvar getSessionStorage = function() {\r\n var sessionStorage;\r\n try {\r\n sessionStorage = window.sessionStorage\r\n } catch (e) {}\r\n return sessionStorage\r\n};\r\nexport {\r\n getSessionStorage as sessionStorage\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/view_port.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport readyCallbacks from \"./ready_callbacks\";\r\nvar ready = readyCallbacks.add;\r\nimport callbacks from \"./callbacks\";\r\nvar changeCallback = callbacks();\r\nvar $originalViewPort = $();\r\nvar value = function() {\r\n var $current;\r\n return function(element) {\r\n if (!arguments.length) {\r\n return $current\r\n }\r\n var $element = $(element);\r\n $originalViewPort = $element;\r\n var isNewViewportFound = !!$element.length;\r\n var prevViewPort = value();\r\n $current = isNewViewportFound ? $element : $(\"body\");\r\n changeCallback.fire(isNewViewportFound ? value() : $(), prevViewPort)\r\n }\r\n}();\r\nready((function() {\r\n value(\".dx-viewport\")\r\n}));\r\nexport {\r\n value,\r\n changeCallback\r\n};\r\nexport function originalViewPort() {\r\n return $originalViewPort\r\n}\r\n","/**\r\n * DevExtreme (esm/core/devices.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"./utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow,\r\n getNavigator,\r\n hasWindow\r\n} from \"./utils/window\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n isPlainObject\r\n} from \"./utils/type\";\r\nimport errors from \"./errors\";\r\nimport Callbacks from \"./utils/callbacks\";\r\nimport readyCallbacks from \"./utils/ready_callbacks\";\r\nimport resizeCallbacks from \"./utils/resize_callbacks\";\r\nimport {\r\n EventsStrategy\r\n} from \"./events_strategy\";\r\nimport {\r\n sessionStorage as SessionStorage\r\n} from \"./utils/storage\";\r\nimport {\r\n changeCallback,\r\n value as viewPort\r\n} from \"./utils/view_port\";\r\nimport Config from \"./config\";\r\nvar window = getWindow();\r\nvar KNOWN_UA_TABLE = {\r\n iPhone: \"iPhone\",\r\n iPhone5: \"iPhone\",\r\n iPhone6: \"iPhone\",\r\n iPhone6plus: \"iPhone\",\r\n iPad: \"iPad\",\r\n iPadMini: \"iPad Mini\",\r\n androidPhone: \"Android Mobile\",\r\n androidTablet: \"Android\",\r\n msSurface: \"Windows ARM Tablet PC\",\r\n desktop: \"desktop\"\r\n};\r\nvar DEFAULT_DEVICE = {\r\n deviceType: \"desktop\",\r\n platform: \"generic\",\r\n version: [],\r\n phone: false,\r\n tablet: false,\r\n android: false,\r\n ios: false,\r\n generic: true,\r\n grade: \"A\",\r\n mac: false\r\n};\r\nvar UA_PARSERS = {\r\n generic(userAgent) {\r\n var isPhone = /windows phone/i.test(userAgent) || userAgent.match(/WPDesktop/);\r\n var isTablet = !isPhone && /Windows(.*)arm(.*)Tablet PC/i.test(userAgent);\r\n var isDesktop = !isPhone && !isTablet && /msapphost/i.test(userAgent);\r\n var isMac = /((intel|ppc) mac os x)/.test(userAgent.toLowerCase());\r\n if (!(isPhone || isTablet || isDesktop || isMac)) {\r\n return null\r\n }\r\n return {\r\n deviceType: isPhone ? \"phone\" : isTablet ? \"tablet\" : \"desktop\",\r\n platform: \"generic\",\r\n version: [],\r\n grade: \"A\",\r\n mac: isMac\r\n }\r\n },\r\n appleTouchDevice(userAgent) {\r\n var navigator = getNavigator();\r\n var isIpadOs = /Macintosh/i.test(userAgent) && (null === navigator || void 0 === navigator ? void 0 : navigator.maxTouchPoints) > 2;\r\n var isAppleDevice = /ip(hone|od|ad)/i.test(userAgent);\r\n if (!isAppleDevice && !isIpadOs) {\r\n return null\r\n }\r\n var isPhone = /ip(hone|od)/i.test(userAgent);\r\n var matches = userAgent.match(/os\\s{0,}X? (\\d+)_(\\d+)_?(\\d+)?/i);\r\n var version = matches ? [parseInt(matches[1], 10), parseInt(matches[2], 10), parseInt(matches[3] || 0, 10)] : [];\r\n var isIPhone4 = 480 === window.screen.height;\r\n var grade = isIPhone4 ? \"B\" : \"A\";\r\n return {\r\n deviceType: isPhone ? \"phone\" : \"tablet\",\r\n platform: \"ios\",\r\n version: version,\r\n grade: grade\r\n }\r\n },\r\n android(userAgent) {\r\n var isAndroid = /android|htc_|silk/i.test(userAgent);\r\n var isWinPhone = /windows phone/i.test(userAgent);\r\n if (!isAndroid || isWinPhone) {\r\n return null\r\n }\r\n var isPhone = /mobile/i.test(userAgent);\r\n var matches = userAgent.match(/android (\\d+)\\.?(\\d+)?\\.?(\\d+)?/i);\r\n var version = matches ? [parseInt(matches[1], 10), parseInt(matches[2] || 0, 10), parseInt(matches[3] || 0, 10)] : [];\r\n var worseThan4_4 = version.length > 1 && (version[0] < 4 || 4 === version[0] && version[1] < 4);\r\n var grade = worseThan4_4 ? \"B\" : \"A\";\r\n return {\r\n deviceType: isPhone ? \"phone\" : \"tablet\",\r\n platform: \"android\",\r\n version: version,\r\n grade: grade\r\n }\r\n }\r\n};\r\nvar UA_PARSERS_ARRAY = [UA_PARSERS.appleTouchDevice, UA_PARSERS.android, UA_PARSERS.generic];\r\nclass Devices {\r\n constructor(options) {\r\n this._window = (null === options || void 0 === options ? void 0 : options.window) || window;\r\n this._realDevice = this._getDevice();\r\n this._currentDevice = void 0;\r\n this._currentOrientation = void 0;\r\n this._eventsStrategy = new EventsStrategy(this);\r\n this.changed = Callbacks();\r\n if (hasWindow()) {\r\n readyCallbacks.add(this._recalculateOrientation.bind(this));\r\n resizeCallbacks.add(this._recalculateOrientation.bind(this))\r\n }\r\n }\r\n current(deviceOrName) {\r\n if (deviceOrName) {\r\n this._currentDevice = this._getDevice(deviceOrName);\r\n this._forced = true;\r\n this.changed.fire();\r\n return\r\n }\r\n if (!this._currentDevice) {\r\n deviceOrName = void 0;\r\n try {\r\n deviceOrName = this._getDeviceOrNameFromWindowScope()\r\n } catch (e) {\r\n deviceOrName = this._getDeviceNameFromSessionStorage()\r\n } finally {\r\n if (!deviceOrName) {\r\n deviceOrName = this._getDeviceNameFromSessionStorage()\r\n }\r\n if (deviceOrName) {\r\n this._forced = true\r\n }\r\n }\r\n this._currentDevice = this._getDevice(deviceOrName)\r\n }\r\n return this._currentDevice\r\n }\r\n real(forceDevice) {\r\n return extend({}, this._realDevice)\r\n }\r\n orientation() {\r\n return this._currentOrientation\r\n }\r\n isForced() {\r\n return this._forced\r\n }\r\n isRippleEmulator() {\r\n return !!this._window.tinyHippos\r\n }\r\n _getCssClasses(device) {\r\n var result = [];\r\n var realDevice = this._realDevice;\r\n device = device || this.current();\r\n if (device.deviceType) {\r\n result.push(\"dx-device-\".concat(device.deviceType));\r\n if (\"desktop\" !== device.deviceType) {\r\n result.push(\"dx-device-mobile\")\r\n }\r\n }\r\n result.push(\"dx-device-\".concat(realDevice.platform));\r\n if (realDevice.version && realDevice.version.length) {\r\n result.push(\"dx-device-\".concat(realDevice.platform, \"-\").concat(realDevice.version[0]))\r\n }\r\n if (this.isSimulator()) {\r\n result.push(\"dx-simulator\")\r\n }\r\n if (Config().rtlEnabled) {\r\n result.push(\"dx-rtl\")\r\n }\r\n return result\r\n }\r\n attachCssClasses(element, device) {\r\n this._deviceClasses = this._getCssClasses(device).join(\" \");\r\n $(element).addClass(this._deviceClasses)\r\n }\r\n detachCssClasses(element) {\r\n $(element).removeClass(this._deviceClasses)\r\n }\r\n isSimulator() {\r\n try {\r\n return this._isSimulator || hasWindow() && this._window.top !== this._window.self && this._window.top[\"dx-force-device\"] || this.isRippleEmulator()\r\n } catch (e) {\r\n return false\r\n }\r\n }\r\n forceSimulator() {\r\n this._isSimulator = true\r\n }\r\n _getDevice(deviceName) {\r\n if (\"genericPhone\" === deviceName) {\r\n deviceName = {\r\n deviceType: \"phone\",\r\n platform: \"generic\",\r\n generic: true\r\n }\r\n }\r\n if (isPlainObject(deviceName)) {\r\n return this._fromConfig(deviceName)\r\n } else {\r\n var ua;\r\n if (deviceName) {\r\n ua = KNOWN_UA_TABLE[deviceName];\r\n if (!ua) {\r\n throw errors.Error(\"E0005\")\r\n }\r\n } else {\r\n var navigator = getNavigator();\r\n ua = navigator.userAgent\r\n }\r\n return this._fromUA(ua)\r\n }\r\n }\r\n _getDeviceOrNameFromWindowScope() {\r\n var result;\r\n if (hasWindow() && (this._window.top[\"dx-force-device-object\"] || this._window.top[\"dx-force-device\"])) {\r\n result = this._window.top[\"dx-force-device-object\"] || this._window.top[\"dx-force-device\"]\r\n }\r\n return result\r\n }\r\n _getDeviceNameFromSessionStorage() {\r\n var sessionStorage = SessionStorage();\r\n if (!sessionStorage) {\r\n return\r\n }\r\n var deviceOrName = sessionStorage.getItem(\"dx-force-device\");\r\n try {\r\n return JSON.parse(deviceOrName)\r\n } catch (ex) {\r\n return deviceOrName\r\n }\r\n }\r\n _fromConfig(config) {\r\n var result = extend({}, DEFAULT_DEVICE, this._currentDevice, config);\r\n var shortcuts = {\r\n phone: \"phone\" === result.deviceType,\r\n tablet: \"tablet\" === result.deviceType,\r\n android: \"android\" === result.platform,\r\n ios: \"ios\" === result.platform,\r\n generic: \"generic\" === result.platform\r\n };\r\n return extend(result, shortcuts)\r\n }\r\n _fromUA(ua) {\r\n for (var idx = 0; idx < UA_PARSERS_ARRAY.length; idx += 1) {\r\n var parser = UA_PARSERS_ARRAY[idx];\r\n var config = parser(ua);\r\n if (config) {\r\n return this._fromConfig(config)\r\n }\r\n }\r\n return DEFAULT_DEVICE\r\n }\r\n _changeOrientation() {\r\n var $window = $(this._window);\r\n var orientation = getHeight($window) > getWidth($window) ? \"portrait\" : \"landscape\";\r\n if (this._currentOrientation === orientation) {\r\n return\r\n }\r\n this._currentOrientation = orientation;\r\n this._eventsStrategy.fireEvent(\"orientationChanged\", [{\r\n orientation: orientation\r\n }])\r\n }\r\n _recalculateOrientation() {\r\n var windowWidth = getWidth(this._window);\r\n if (this._currentWidth === windowWidth) {\r\n return\r\n }\r\n this._currentWidth = windowWidth;\r\n this._changeOrientation()\r\n }\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n }\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n}\r\nvar devices = new Devices;\r\nvar viewPortElement = viewPort();\r\nif (viewPortElement) {\r\n devices.attachCssClasses(viewPortElement)\r\n}\r\nchangeCallback.add((viewPort, prevViewport) => {\r\n devices.detachCssClasses(prevViewport);\r\n devices.attachCssClasses(viewPort)\r\n});\r\nexport default devices;\r\n","/**\r\n * DevExtreme (esm/core/utils/dom.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n isDefined,\r\n isRenderer,\r\n isWindow,\r\n isString\r\n} from \"./type\";\r\nimport {\r\n getWindow\r\n} from \"./window\";\r\nvar window = getWindow();\r\nvar getRootNodeHost = element => {\r\n if (!element.getRootNode) {\r\n return\r\n }\r\n var host = element.getRootNode().host;\r\n if (isString(host)) {\r\n return\r\n }\r\n return host\r\n};\r\nexport var resetActiveElement = () => {\r\n var activeElement = domAdapter.getActiveElement();\r\n if (activeElement && activeElement !== domAdapter.getBody()) {\r\n var _activeElement$blur;\r\n null === (_activeElement$blur = activeElement.blur) || void 0 === _activeElement$blur ? void 0 : _activeElement$blur.call(activeElement)\r\n }\r\n};\r\nexport var clearSelection = () => {\r\n var selection = window.getSelection();\r\n if (!selection) {\r\n return\r\n }\r\n if (\"Caret\" === selection.type) {\r\n return\r\n }\r\n if (selection.empty) {\r\n selection.empty()\r\n } else if (selection.removeAllRanges) {\r\n try {\r\n selection.removeAllRanges()\r\n } catch (e) {}\r\n }\r\n};\r\nexport var closestCommonParent = (startTarget, endTarget) => {\r\n var $startTarget = $(startTarget);\r\n var $endTarget = $(endTarget);\r\n if ($startTarget[0] === $endTarget[0]) {\r\n return $startTarget[0]\r\n }\r\n var $startParents = $startTarget.parents();\r\n var $endParents = $endTarget.parents();\r\n var startingParent = Math.min($startParents.length, $endParents.length);\r\n for (var i = -startingParent; i < 0; i++) {\r\n if ($startParents.get(i) === $endParents.get(i)) {\r\n return $startParents.get(i)\r\n }\r\n }\r\n};\r\nexport var extractTemplateMarkup = element => {\r\n element = $(element);\r\n var templateTag = element.length && element.filter((function() {\r\n var $node = $(this);\r\n return $node.is(\"script[type]\") && $node.attr(\"type\").indexOf(\"script\") < 0\r\n }));\r\n if (templateTag.length) {\r\n return templateTag.eq(0).html()\r\n } else {\r\n element = $(\"
\").append(element);\r\n return element.html()\r\n }\r\n};\r\nexport var normalizeTemplateElement = element => {\r\n var $element = isDefined(element) && (element.nodeType || isRenderer(element)) ? $(element) : $(\"
\").html(element).contents();\r\n if (1 === $element.length) {\r\n if ($element.is(\"script\")) {\r\n $element = normalizeTemplateElement($element.html().trim())\r\n } else if ($element.is(\"table\")) {\r\n $element = $element.children(\"tbody\").contents()\r\n }\r\n }\r\n return $element\r\n};\r\nexport var clipboardText = (event, text) => {\r\n var clipboard = event.originalEvent && event.originalEvent.clipboardData || window.clipboardData;\r\n if (!text) {\r\n return clipboard && clipboard.getData(\"Text\")\r\n }\r\n clipboard && clipboard.setData(\"Text\", text)\r\n};\r\nexport var contains = (container, element) => {\r\n if (!element) {\r\n return false\r\n }\r\n if (isWindow(container)) {\r\n return contains(container.document, element)\r\n }\r\n return container.contains(element) || contains(container, getRootNodeHost(element))\r\n};\r\nexport var createTextElementHiddenCopy = (element, text, options) => {\r\n var elementStyles = window.getComputedStyle($(element).get(0));\r\n var includePaddings = options && options.includePaddings;\r\n return $(\"
\").text(text).css({\r\n fontStyle: elementStyles.fontStyle,\r\n fontVariant: elementStyles.fontVariant,\r\n fontWeight: elementStyles.fontWeight,\r\n fontSize: elementStyles.fontSize,\r\n fontFamily: elementStyles.fontFamily,\r\n letterSpacing: elementStyles.letterSpacing,\r\n border: elementStyles.border,\r\n paddingTop: includePaddings ? elementStyles.paddingTop : \"\",\r\n paddingRight: includePaddings ? elementStyles.paddingRight : \"\",\r\n paddingBottom: includePaddings ? elementStyles.paddingBottom : \"\",\r\n paddingLeft: includePaddings ? elementStyles.paddingLeft : \"\",\r\n visibility: \"hidden\",\r\n whiteSpace: \"pre\",\r\n position: \"absolute\",\r\n float: \"left\"\r\n })\r\n};\r\nexport var insertBefore = (element, newElement) => {\r\n if (newElement) {\r\n domAdapter.insertElement(element.parentNode, newElement, element)\r\n }\r\n return element\r\n};\r\nexport var replaceWith = (element, newElement) => {\r\n if (!(newElement && newElement[0])) {\r\n return\r\n }\r\n if (newElement.is(element)) {\r\n return element\r\n }\r\n each(newElement, (_, currentElement) => {\r\n insertBefore(element[0], currentElement)\r\n });\r\n element.remove();\r\n return newElement\r\n};\r\nexport var isElementInDom = $element => {\r\n var element = null === $element || void 0 === $element ? void 0 : $element.get(0);\r\n var shadowHost = null === element || void 0 === element ? void 0 : element.getRootNode().host;\r\n return !!$(shadowHost || element).closest(getWindow().document).length\r\n};\r\n","/**\r\n * DevExtreme (esm/events/visibility_change.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"./core/events_engine\";\r\nvar triggerVisibilityChangeEvent = function(eventName) {\r\n return function(element) {\r\n var $element = $(element || \"body\");\r\n var changeHandlers = $element.filter(\".dx-visibility-change-handler\").add($element.find(\".dx-visibility-change-handler\"));\r\n for (var i = 0; i < changeHandlers.length; i++) {\r\n eventsEngine.triggerHandler(changeHandlers[i], eventName)\r\n }\r\n }\r\n};\r\nexport var triggerShownEvent = triggerVisibilityChangeEvent(\"dxshown\");\r\nexport var triggerHidingEvent = triggerVisibilityChangeEvent(\"dxhiding\");\r\nexport var triggerResizeEvent = triggerVisibilityChangeEvent(\"dxresize\");\r\n","/**\r\n * DevExtreme (esm/core/templates/template_base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport domAdapter from \"../dom_adapter\";\r\nimport Callbacks from \"../utils/callbacks\";\r\nimport {\r\n contains\r\n} from \"../utils/dom\";\r\nimport {\r\n triggerShownEvent\r\n} from \"../../events/visibility_change\";\r\nimport errors from \"../errors\";\r\nexport var renderedCallbacks = Callbacks({\r\n syncStrategy: true\r\n});\r\nexport class TemplateBase {\r\n render(options) {\r\n options = options || {};\r\n var onRendered = options.onRendered;\r\n delete options.onRendered;\r\n var $result;\r\n if (options.renovated && options.transclude && this._element) {\r\n $result = $(\"
\").append(this._element).contents()\r\n } else {\r\n $result = this._renderCore(options)\r\n }\r\n this._ensureResultInContainer($result, options.container);\r\n renderedCallbacks.fire($result, options.container);\r\n onRendered && onRendered();\r\n return $result\r\n }\r\n _ensureResultInContainer($result, container) {\r\n if (!container) {\r\n return\r\n }\r\n var $container = $(container);\r\n var resultInContainer = contains($container.get(0), $result.get(0));\r\n $container.append($result);\r\n if (resultInContainer) {\r\n return\r\n }\r\n var resultInBody = domAdapter.getBody().contains($container.get(0));\r\n if (!resultInBody) {\r\n return\r\n }\r\n triggerShownEvent($result)\r\n }\r\n _renderCore() {\r\n throw errors.Error(\"E0001\")\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/templates/bindable_template.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n removeEvent\r\n} from \"../../events/remove\";\r\nimport {\r\n isPrimitive\r\n} from \"../utils/type\";\r\nvar watchChanges = function(rawData, watchMethod, fields, fieldsMap, callback) {\r\n var fieldsDispose;\r\n var globalDispose = ((data, watchMethod, callback) => watchMethod(() => data, callback))(rawData, watchMethod, (function(dataWithRawFields) {\r\n fieldsDispose && fieldsDispose();\r\n if (isPrimitive(dataWithRawFields)) {\r\n callback(dataWithRawFields);\r\n return\r\n }\r\n fieldsDispose = function(data, watchMethod, fields, fieldsMap, callback) {\r\n var resolvedData = {};\r\n var missedFields = fields.slice();\r\n var watchHandlers = fields.map((function(name) {\r\n var fieldGetter = fieldsMap[name];\r\n return watchMethod(fieldGetter ? () => fieldGetter(data) : () => data[name], (function(value) {\r\n resolvedData[name] = value;\r\n if (missedFields.length) {\r\n var index = missedFields.indexOf(name);\r\n if (index >= 0) {\r\n missedFields.splice(index, 1)\r\n }\r\n }\r\n if (!missedFields.length) {\r\n callback(resolvedData)\r\n }\r\n }))\r\n }));\r\n return function() {\r\n watchHandlers.forEach(dispose => dispose())\r\n }\r\n }(dataWithRawFields, watchMethod, fields, fieldsMap, callback)\r\n }));\r\n return function() {\r\n fieldsDispose && fieldsDispose();\r\n globalDispose && globalDispose()\r\n }\r\n};\r\nexport class BindableTemplate extends TemplateBase {\r\n constructor(render, fields, watchMethod, fieldsMap) {\r\n super();\r\n this._render = render;\r\n this._fields = fields;\r\n this._fieldsMap = fieldsMap || {};\r\n this._watchMethod = watchMethod\r\n }\r\n _renderCore(options) {\r\n var $container = $(options.container);\r\n var dispose = watchChanges(options.model, this._watchMethod, this._fields, this._fieldsMap, data => {\r\n $container.empty();\r\n this._render($container, data, options.model)\r\n });\r\n eventsEngine.on($container, removeEvent, dispose);\r\n return $container.contents()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/templates/empty_template.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nexport class EmptyTemplate extends TemplateBase {\r\n _renderCore() {\r\n return $()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/math.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isExponential\r\n} from \"./type\";\r\nvar sign = function(value) {\r\n if (0 === value) {\r\n return 0\r\n }\r\n return value / Math.abs(value)\r\n};\r\nvar fitIntoRange = function(value, minValue, maxValue) {\r\n var isMinValueUndefined = !minValue && 0 !== minValue;\r\n var isMaxValueUndefined = !maxValue && 0 !== maxValue;\r\n isMinValueUndefined && (minValue = !isMaxValueUndefined ? Math.min(value, maxValue) : value);\r\n isMaxValueUndefined && (maxValue = !isMinValueUndefined ? Math.max(value, minValue) : value);\r\n return Math.min(Math.max(value, minValue), maxValue)\r\n};\r\nvar inRange = function(value, minValue, maxValue) {\r\n return value >= minValue && value <= maxValue\r\n};\r\n\r\nfunction getExponent(value) {\r\n return Math.abs(parseInt(value.toExponential().split(\"e\")[1]))\r\n}\r\n\r\nfunction getExponentialNotation(value) {\r\n var parts = value.toExponential().split(\"e\");\r\n var mantissa = parseFloat(parts[0]);\r\n var exponent = parseInt(parts[1]);\r\n return {\r\n exponent: exponent,\r\n mantissa: mantissa\r\n }\r\n}\r\n\r\nfunction multiplyInExponentialForm(value, exponentShift) {\r\n var exponentialNotation = getExponentialNotation(value);\r\n return parseFloat(\"\".concat(exponentialNotation.mantissa, \"e\").concat(exponentialNotation.exponent + exponentShift))\r\n}\r\n\r\nfunction _isEdgeBug() {\r\n return \"0.000300\" !== 3e-4.toPrecision(3)\r\n}\r\n\r\nfunction adjust(value, interval) {\r\n var precision = getPrecision(interval || 0) + 2;\r\n var separatedValue = value.toString().split(\".\");\r\n var sourceValue = value;\r\n var absValue = Math.abs(value);\r\n var separatedAdjustedValue;\r\n var isExponentValue = isExponential(value);\r\n var integerPart = absValue > 1 ? 10 : 0;\r\n if (1 === separatedValue.length) {\r\n return value\r\n }\r\n if (!isExponentValue) {\r\n if (isExponential(interval)) {\r\n precision = separatedValue[0].length + getExponent(interval)\r\n }\r\n value = absValue;\r\n value = value - Math.floor(value) + integerPart\r\n }\r\n precision = _isEdgeBug() && getExponent(value) > 6 || precision > 7 ? 15 : 7;\r\n if (!isExponentValue) {\r\n separatedAdjustedValue = parseFloat(value.toPrecision(precision)).toString().split(\".\");\r\n if (separatedAdjustedValue[0] === integerPart.toString()) {\r\n return parseFloat(separatedValue[0] + \".\" + separatedAdjustedValue[1])\r\n }\r\n }\r\n return parseFloat(sourceValue.toPrecision(precision))\r\n}\r\n\r\nfunction getPrecision(value) {\r\n var str = value.toString();\r\n if (str.indexOf(\".\") < 0) {\r\n return 0\r\n }\r\n var mantissa = str.split(\".\");\r\n var positionOfDelimiter = mantissa[1].indexOf(\"e\");\r\n return positionOfDelimiter >= 0 ? positionOfDelimiter : mantissa[1].length\r\n}\r\n\r\nfunction getRoot(x, n) {\r\n if (x < 0 && n % 2 !== 1) {\r\n return NaN\r\n }\r\n var y = Math.pow(Math.abs(x), 1 / n);\r\n return n % 2 === 1 && x < 0 ? -y : y\r\n}\r\n\r\nfunction solveCubicEquation(a, b, c, d) {\r\n if (Math.abs(a) < 1e-8) {\r\n a = b;\r\n b = c;\r\n c = d;\r\n if (Math.abs(a) < 1e-8) {\r\n a = b;\r\n b = c;\r\n if (Math.abs(a) < 1e-8) {\r\n return []\r\n }\r\n return [-b / a]\r\n }\r\n var D2 = b * b - 4 * a * c;\r\n if (Math.abs(D2) < 1e-8) {\r\n return [-b / (2 * a)]\r\n } else if (D2 > 0) {\r\n return [(-b + Math.sqrt(D2)) / (2 * a), (-b - Math.sqrt(D2)) / (2 * a)]\r\n }\r\n return []\r\n }\r\n var p = (3 * a * c - b * b) / (3 * a * a);\r\n var q = (2 * b * b * b - 9 * a * b * c + 27 * a * a * d) / (27 * a * a * a);\r\n var roots;\r\n var u;\r\n if (Math.abs(p) < 1e-8) {\r\n roots = [getRoot(-q, 3)]\r\n } else if (Math.abs(q) < 1e-8) {\r\n roots = [0].concat(p < 0 ? [Math.sqrt(-p), -Math.sqrt(-p)] : [])\r\n } else {\r\n var D3 = q * q / 4 + p * p * p / 27;\r\n if (Math.abs(D3) < 1e-8) {\r\n roots = [-1.5 * q / p, 3 * q / p]\r\n } else if (D3 > 0) {\r\n u = getRoot(-q / 2 - Math.sqrt(D3), 3);\r\n roots = [u - p / (3 * u)]\r\n } else {\r\n u = 2 * Math.sqrt(-p / 3);\r\n var t = Math.acos(3 * q / p / u) / 3;\r\n var k = 2 * Math.PI / 3;\r\n roots = [u * Math.cos(t), u * Math.cos(t - k), u * Math.cos(t - 2 * k)]\r\n }\r\n }\r\n for (var i = 0; i < roots.length; i++) {\r\n roots[i] -= b / (3 * a)\r\n }\r\n return roots\r\n}\r\n\r\nfunction trunc(value) {\r\n return Math.trunc ? Math.trunc(value) : value > 0 ? Math.floor(value) : Math.ceil(value)\r\n}\r\n\r\nfunction getRemainderByDivision(dividend, divider, digitsCount) {\r\n if (divider === parseInt(divider)) {\r\n return dividend % divider\r\n }\r\n var quotient = roundFloatPart(dividend / divider, digitsCount);\r\n return (quotient - parseInt(quotient)) * divider\r\n}\r\n\r\nfunction getExponentLength(value) {\r\n var _valueString$split$;\r\n var valueString = value.toString();\r\n return (null === (_valueString$split$ = valueString.split(\".\")[1]) || void 0 === _valueString$split$ ? void 0 : _valueString$split$.length) || parseInt(valueString.split(\"e-\")[1]) || 0\r\n}\r\n\r\nfunction roundFloatPart(value) {\r\n var digitsCount = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n return parseFloat(value.toFixed(digitsCount))\r\n}\r\nexport {\r\n sign,\r\n fitIntoRange,\r\n inRange,\r\n adjust,\r\n getPrecision,\r\n getExponent,\r\n getRoot,\r\n solveCubicEquation,\r\n trunc,\r\n roundFloatPart,\r\n getExponentLength,\r\n getRemainderByDivision,\r\n multiplyInExponentialForm\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/utils/date/toMilliseconds.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar timeIntervals = {\r\n millisecond: 1,\r\n second: 1e3,\r\n minute: 6e4,\r\n hour: 36e5,\r\n day: 864e5,\r\n week: 6048e5,\r\n month: 2592e6,\r\n quarter: 7776e6,\r\n year: 31536e6\r\n};\r\nexport function toMilliseconds(value) {\r\n return timeIntervals[value]\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/date.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject,\r\n isString,\r\n isDate,\r\n isDefined,\r\n isNumeric\r\n} from \"./type\";\r\nimport {\r\n adjust\r\n} from \"./math\";\r\nimport {\r\n each\r\n} from \"./iterator\";\r\nimport {\r\n camelize\r\n} from \"./inflector\";\r\nimport {\r\n toMilliseconds\r\n} from \"../../renovation/ui/common/utils/date/index\";\r\nvar DAYS_IN_WEEK = 7;\r\nvar THURSDAY_WEEK_NUMBER = 4;\r\nvar SUNDAY_WEEK_NUMBER = 7;\r\nvar USUAL_WEEK_COUNT_IN_YEAR = 52;\r\nvar dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"week\", \"month\", \"quarter\", \"year\"];\r\nvar getDatesInterval = function(startDate, endDate, intervalUnit) {\r\n var delta = endDate.getTime() - startDate.getTime();\r\n var millisecondCount = toMilliseconds(intervalUnit) || 1;\r\n return Math.floor(delta / millisecondCount)\r\n};\r\nvar getNextDateUnit = function(unit, withWeeks) {\r\n var interval = getDateUnitInterval(unit);\r\n switch (interval) {\r\n case \"millisecond\":\r\n return \"second\";\r\n case \"second\":\r\n return \"minute\";\r\n case \"minute\":\r\n return \"hour\";\r\n case \"hour\":\r\n return \"day\";\r\n case \"day\":\r\n return withWeeks ? \"week\" : \"month\";\r\n case \"week\":\r\n return \"month\";\r\n case \"month\":\r\n return \"quarter\";\r\n case \"quarter\":\r\n case \"year\":\r\n return \"year\";\r\n default:\r\n return 0\r\n }\r\n};\r\nvar convertMillisecondsToDateUnits = function(value) {\r\n var i;\r\n var dateUnitCount;\r\n var dateUnitInterval;\r\n var dateUnitIntervals = [\"millisecond\", \"second\", \"minute\", \"hour\", \"day\", \"month\", \"year\"];\r\n var result = {};\r\n for (i = dateUnitIntervals.length - 1; i >= 0; i--) {\r\n dateUnitInterval = dateUnitIntervals[i];\r\n dateUnitCount = Math.floor(value / toMilliseconds(dateUnitInterval));\r\n if (dateUnitCount > 0) {\r\n result[dateUnitInterval + \"s\"] = dateUnitCount;\r\n value -= convertDateUnitToMilliseconds(dateUnitInterval, dateUnitCount)\r\n }\r\n }\r\n return result\r\n};\r\nvar dateToMilliseconds = function(tickInterval) {\r\n var milliseconds = 0;\r\n if (isObject(tickInterval)) {\r\n each(tickInterval, (function(key, value) {\r\n milliseconds += convertDateUnitToMilliseconds(key.substr(0, key.length - 1), value)\r\n }))\r\n }\r\n if (isString(tickInterval)) {\r\n milliseconds = convertDateUnitToMilliseconds(tickInterval, 1)\r\n }\r\n return milliseconds\r\n};\r\n\r\nfunction convertDateUnitToMilliseconds(dateUnit, count) {\r\n return toMilliseconds(dateUnit) * count\r\n}\r\n\r\nfunction getDateUnitInterval(tickInterval) {\r\n var maxInterval = -1;\r\n var i;\r\n if (isString(tickInterval)) {\r\n return tickInterval\r\n }\r\n if (isObject(tickInterval)) {\r\n each(tickInterval, (function(key, value) {\r\n for (i = 0; i < dateUnitIntervals.length; i++) {\r\n if (value && (key === dateUnitIntervals[i] + \"s\" || key === dateUnitIntervals[i]) && maxInterval < i) {\r\n maxInterval = i\r\n }\r\n }\r\n }));\r\n return dateUnitIntervals[maxInterval]\r\n }\r\n return \"\"\r\n}\r\nvar tickIntervalToFormatMap = {\r\n millisecond: \"millisecond\",\r\n second: \"longtime\",\r\n minute: \"shorttime\",\r\n hour: \"shorttime\",\r\n day: \"day\",\r\n week: \"day\",\r\n month: \"month\",\r\n quarter: \"quarter\",\r\n year: \"year\"\r\n};\r\n\r\nfunction getDateFormatByTickInterval(tickInterval) {\r\n return tickIntervalToFormatMap[getDateUnitInterval(tickInterval)] || \"\"\r\n}\r\nvar getQuarter = function(month) {\r\n return Math.floor(month / 3)\r\n};\r\nvar getFirstQuarterMonth = function(month) {\r\n return 3 * getQuarter(month)\r\n};\r\n\r\nfunction correctDateWithUnitBeginning(date, dateInterval, withCorrection, firstDayOfWeek) {\r\n date = new Date(date.getTime());\r\n var oldDate = new Date(date.getTime());\r\n var firstQuarterMonth;\r\n var month;\r\n var dateUnitInterval = getDateUnitInterval(dateInterval);\r\n switch (dateUnitInterval) {\r\n case \"second\":\r\n date = new Date(1e3 * Math.floor(oldDate.getTime() / 1e3));\r\n break;\r\n case \"minute\":\r\n date = new Date(6e4 * Math.floor(oldDate.getTime() / 6e4));\r\n break;\r\n case \"hour\":\r\n date = new Date(36e5 * Math.floor(oldDate.getTime() / 36e5));\r\n break;\r\n case \"year\":\r\n date.setMonth(0);\r\n case \"month\":\r\n date.setDate(1);\r\n case \"day\":\r\n date.setHours(0, 0, 0, 0);\r\n break;\r\n case \"week\":\r\n date = getFirstWeekDate(date, firstDayOfWeek || 0);\r\n date.setHours(0, 0, 0, 0);\r\n break;\r\n case \"quarter\":\r\n firstQuarterMonth = getFirstQuarterMonth(date.getMonth());\r\n month = date.getMonth();\r\n date.setDate(1);\r\n date.setHours(0, 0, 0, 0);\r\n if (month !== firstQuarterMonth) {\r\n date.setMonth(firstQuarterMonth)\r\n }\r\n }\r\n if (withCorrection && \"hour\" !== dateUnitInterval && \"minute\" !== dateUnitInterval && \"second\" !== dateUnitInterval) {\r\n fixTimezoneGap(oldDate, date)\r\n }\r\n return date\r\n}\r\n\r\nfunction trimTime(date) {\r\n return correctDateWithUnitBeginning(date, \"day\")\r\n}\r\nvar setToDayEnd = function(date) {\r\n var result = trimTime(date);\r\n result.setDate(result.getDate() + 1);\r\n return new Date(result.getTime() - 1)\r\n};\r\nvar getDatesDifferences = function(date1, date2) {\r\n var counter = 0;\r\n var differences = {\r\n year: date1.getFullYear() !== date2.getFullYear(),\r\n month: date1.getMonth() !== date2.getMonth(),\r\n day: date1.getDate() !== date2.getDate(),\r\n hour: date1.getHours() !== date2.getHours(),\r\n minute: date1.getMinutes() !== date2.getMinutes(),\r\n second: date1.getSeconds() !== date2.getSeconds(),\r\n millisecond: date1.getMilliseconds() !== date2.getMilliseconds()\r\n };\r\n each(differences, (function(key, value) {\r\n if (value) {\r\n counter++\r\n }\r\n }));\r\n if (0 === counter && 0 !== getTimezonesDifference(date1, date2)) {\r\n differences.hour = true;\r\n counter++\r\n }\r\n differences.count = counter;\r\n return differences\r\n};\r\n\r\nfunction addDateInterval(value, interval, dir) {\r\n var result = new Date(value.getTime());\r\n var intervalObject = isString(interval) ? getDateIntervalByString(interval.toLowerCase()) : isNumeric(interval) ? convertMillisecondsToDateUnits(interval) : interval;\r\n if (intervalObject.years) {\r\n result.setFullYear(result.getFullYear() + intervalObject.years * dir)\r\n }\r\n if (intervalObject.quarters) {\r\n result.setMonth(result.getMonth() + 3 * intervalObject.quarters * dir)\r\n }\r\n if (intervalObject.months) {\r\n result.setMonth(result.getMonth() + intervalObject.months * dir)\r\n }\r\n if (intervalObject.weeks) {\r\n result.setDate(result.getDate() + 7 * intervalObject.weeks * dir)\r\n }\r\n if (intervalObject.days) {\r\n result.setDate(result.getDate() + intervalObject.days * dir)\r\n }\r\n if (intervalObject.hours) {\r\n result.setTime(result.getTime() + 36e5 * intervalObject.hours * dir)\r\n }\r\n if (intervalObject.minutes) {\r\n result.setTime(result.getTime() + 6e4 * intervalObject.minutes * dir)\r\n }\r\n if (intervalObject.seconds) {\r\n result.setTime(result.getTime() + 1e3 * intervalObject.seconds * dir)\r\n }\r\n if (intervalObject.milliseconds) {\r\n result.setTime(result.getTime() + intervalObject.milliseconds * dir)\r\n }\r\n return result\r\n}\r\nvar addInterval = function(value, interval, isNegative) {\r\n var dir = isNegative ? -1 : 1;\r\n return isDate(value) ? addDateInterval(value, interval, dir) : adjust(value + interval * dir, interval)\r\n};\r\nvar getSequenceByInterval = function(min, max, interval) {\r\n var intervals = [];\r\n var cur;\r\n intervals.push(isDate(min) ? new Date(min.getTime()) : min);\r\n cur = min;\r\n while (cur < max) {\r\n cur = addInterval(cur, interval);\r\n intervals.push(cur)\r\n }\r\n return intervals\r\n};\r\nvar getViewFirstCellDate = function(viewType, date) {\r\n if (\"month\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n }\r\n if (\"year\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), 0, date.getDate())\r\n }\r\n if (\"decade\" === viewType) {\r\n return createDateWithFullYear(getFirstYearInDecade(date), date.getMonth(), date.getDate())\r\n }\r\n if (\"century\" === viewType) {\r\n return createDateWithFullYear(getFirstDecadeInCentury(date), date.getMonth(), date.getDate())\r\n }\r\n};\r\nvar getViewLastCellDate = function(viewType, date) {\r\n if (\"month\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), getLastMonthDay(date))\r\n }\r\n if (\"year\" === viewType) {\r\n return createDateWithFullYear(date.getFullYear(), 11, date.getDate())\r\n }\r\n if (\"decade\" === viewType) {\r\n return createDateWithFullYear(getFirstYearInDecade(date) + 9, date.getMonth(), date.getDate())\r\n }\r\n if (\"century\" === viewType) {\r\n return createDateWithFullYear(getFirstDecadeInCentury(date) + 90, date.getMonth(), date.getDate())\r\n }\r\n};\r\nvar getViewMinBoundaryDate = function(viewType, date) {\r\n var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth(), 1);\r\n if (\"month\" === viewType) {\r\n return resultDate\r\n }\r\n resultDate.setMonth(0);\r\n if (\"year\" === viewType) {\r\n return resultDate\r\n }\r\n if (\"decade\" === viewType) {\r\n resultDate.setFullYear(getFirstYearInDecade(date))\r\n }\r\n if (\"century\" === viewType) {\r\n resultDate.setFullYear(getFirstDecadeInCentury(date))\r\n }\r\n return resultDate\r\n};\r\nvar getViewMaxBoundaryDate = function(viewType, date) {\r\n var resultDate = new Date(date);\r\n resultDate.setDate(getLastMonthDay(date));\r\n if (\"month\" === viewType) {\r\n return resultDate\r\n }\r\n resultDate.setMonth(11);\r\n resultDate.setDate(getLastMonthDay(resultDate));\r\n if (\"year\" === viewType) {\r\n return resultDate\r\n }\r\n if (\"decade\" === viewType) {\r\n resultDate.setFullYear(getFirstYearInDecade(date) + 9)\r\n }\r\n if (\"century\" === viewType) {\r\n resultDate.setFullYear(getFirstDecadeInCentury(date) + 99)\r\n }\r\n return resultDate\r\n};\r\n\r\nfunction getLastMonthDay(date) {\r\n var resultDate = createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0);\r\n return resultDate.getDate()\r\n}\r\nvar getViewUp = function(typeView) {\r\n switch (typeView) {\r\n case \"month\":\r\n return \"year\";\r\n case \"year\":\r\n return \"decade\";\r\n case \"decade\":\r\n return \"century\"\r\n }\r\n};\r\nvar getViewDown = function(typeView) {\r\n switch (typeView) {\r\n case \"century\":\r\n return \"decade\";\r\n case \"decade\":\r\n return \"year\";\r\n case \"year\":\r\n return \"month\"\r\n }\r\n};\r\nvar getDifferenceInMonth = function(typeView) {\r\n var difference = 1;\r\n if (\"year\" === typeView) {\r\n difference = 12\r\n }\r\n if (\"decade\" === typeView) {\r\n difference = 120\r\n }\r\n if (\"century\" === typeView) {\r\n difference = 1200\r\n }\r\n return difference\r\n};\r\nvar getDifferenceInMonthForCells = function(typeView) {\r\n var difference = 1;\r\n if (\"decade\" === typeView) {\r\n difference = 12\r\n }\r\n if (\"century\" === typeView) {\r\n difference = 120\r\n }\r\n return difference\r\n};\r\n\r\nfunction getDateIntervalByString(intervalString) {\r\n var result = {};\r\n switch (intervalString) {\r\n case \"year\":\r\n result.years = 1;\r\n break;\r\n case \"month\":\r\n result.months = 1;\r\n break;\r\n case \"quarter\":\r\n result.months = 3;\r\n break;\r\n case \"week\":\r\n result.weeks = 1;\r\n break;\r\n case \"day\":\r\n result.days = 1;\r\n break;\r\n case \"hour\":\r\n result.hours = 1;\r\n break;\r\n case \"minute\":\r\n result.minutes = 1;\r\n break;\r\n case \"second\":\r\n result.seconds = 1;\r\n break;\r\n case \"millisecond\":\r\n result.milliseconds = 1\r\n }\r\n return result\r\n}\r\n\r\nfunction sameDate(date1, date2) {\r\n return sameMonthAndYear(date1, date2) && date1.getDate() === date2.getDate()\r\n}\r\n\r\nfunction sameMonthAndYear(date1, date2) {\r\n return sameYear(date1, date2) && date1.getMonth() === date2.getMonth()\r\n}\r\n\r\nfunction sameYear(date1, date2) {\r\n return date1 && date2 && date1.getFullYear() === date2.getFullYear()\r\n}\r\n\r\nfunction sameHoursAndMinutes(date1, date2) {\r\n return date1 && date2 && date1.getHours() === date2.getHours() && date1.getMinutes() === date2.getMinutes()\r\n}\r\nvar sameDecade = function(date1, date2) {\r\n if (!isDefined(date1) || !isDefined(date2)) {\r\n return\r\n }\r\n var startDecadeDate1 = date1.getFullYear() - date1.getFullYear() % 10;\r\n var startDecadeDate2 = date2.getFullYear() - date2.getFullYear() % 10;\r\n return date1 && date2 && startDecadeDate1 === startDecadeDate2\r\n};\r\nvar sameCentury = function(date1, date2) {\r\n if (!isDefined(date1) || !isDefined(date2)) {\r\n return\r\n }\r\n var startCenturyDate1 = date1.getFullYear() - date1.getFullYear() % 100;\r\n var startCenturyDate2 = date2.getFullYear() - date2.getFullYear() % 100;\r\n return date1 && date2 && startCenturyDate1 === startCenturyDate2\r\n};\r\n\r\nfunction getFirstDecadeInCentury(date) {\r\n return date && date.getFullYear() - date.getFullYear() % 100\r\n}\r\n\r\nfunction getFirstYearInDecade(date) {\r\n return date && date.getFullYear() - date.getFullYear() % 10\r\n}\r\nvar getShortDateFormat = function() {\r\n return \"yyyy/MM/dd\"\r\n};\r\nvar getFirstMonthDate = function(date) {\r\n if (!isDefined(date)) {\r\n return\r\n }\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth(), 1)\r\n};\r\nvar getLastMonthDate = function(date) {\r\n if (!isDefined(date)) {\r\n return\r\n }\r\n return createDateWithFullYear(date.getFullYear(), date.getMonth() + 1, 0)\r\n};\r\n\r\nfunction getFirstWeekDate(date, firstDayOfWeek) {\r\n var delta = (date.getDay() - firstDayOfWeek + DAYS_IN_WEEK) % DAYS_IN_WEEK;\r\n var result = new Date(date);\r\n result.setDate(date.getDate() - delta);\r\n return result\r\n}\r\n\r\nfunction getUTCTime(date) {\r\n return Date.UTC(date.getFullYear(), date.getMonth(), date.getDate())\r\n}\r\n\r\nfunction getDayNumber(date) {\r\n var ms = getUTCTime(date) - getUTCTime(getFirstDateInYear(date.getFullYear()));\r\n return 1 + Math.floor(ms / toMilliseconds(\"day\"))\r\n}\r\n\r\nfunction getFirstDateInYear(year) {\r\n return new Date(year, 0, 1)\r\n}\r\n\r\nfunction getLastDateInYear(year) {\r\n return new Date(year, 11, 31)\r\n}\r\n\r\nfunction getDayWeekNumber(date, firstDayOfWeek) {\r\n var day = date.getDay() - firstDayOfWeek + 1;\r\n if (day <= 0) {\r\n day += DAYS_IN_WEEK\r\n }\r\n return day\r\n}\r\n\r\nfunction getWeekNumber(date, firstDayOfWeek, rule) {\r\n var firstWeekDayInYear = getDayWeekNumber(getFirstDateInYear(date.getFullYear()), firstDayOfWeek);\r\n var lastWeekDayInYear = getDayWeekNumber(getLastDateInYear(date.getFullYear()), firstDayOfWeek);\r\n var daysInFirstWeek = DAYS_IN_WEEK - firstWeekDayInYear + 1;\r\n var weekNumber = Math.ceil((getDayNumber(date) - daysInFirstWeek) / 7);\r\n switch (rule) {\r\n case \"fullWeek\":\r\n if (daysInFirstWeek === DAYS_IN_WEEK) {\r\n weekNumber++\r\n }\r\n if (0 === weekNumber) {\r\n var lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);\r\n return getWeekNumber(lastDateInPreviousYear, firstDayOfWeek, rule)\r\n }\r\n return weekNumber;\r\n case \"firstDay\":\r\n if (daysInFirstWeek > 0) {\r\n weekNumber++\r\n }\r\n var isSunday = firstWeekDayInYear === SUNDAY_WEEK_NUMBER || lastWeekDayInYear === SUNDAY_WEEK_NUMBER;\r\n if (weekNumber > USUAL_WEEK_COUNT_IN_YEAR && !isSunday || 54 === weekNumber) {\r\n weekNumber = 1\r\n }\r\n return weekNumber;\r\n case \"firstFourDays\":\r\n if (daysInFirstWeek > 3) {\r\n weekNumber++\r\n }\r\n var isThursday = firstWeekDayInYear === THURSDAY_WEEK_NUMBER || lastWeekDayInYear === THURSDAY_WEEK_NUMBER;\r\n if (weekNumber > USUAL_WEEK_COUNT_IN_YEAR && !isThursday) {\r\n weekNumber = 1\r\n }\r\n if (0 === weekNumber) {\r\n var _lastDateInPreviousYear = getLastDateInYear(date.getFullYear() - 1);\r\n return getWeekNumber(_lastDateInPreviousYear, firstDayOfWeek, rule)\r\n }\r\n return weekNumber\r\n }\r\n}\r\nvar normalizeDateByWeek = function(date, currentDate) {\r\n var differenceInDays = dateUtils.getDatesInterval(date, currentDate, \"day\");\r\n var resultDate = new Date(date);\r\n if (differenceInDays >= 6) {\r\n resultDate = new Date(resultDate.setDate(resultDate.getDate() + 7))\r\n }\r\n return resultDate\r\n};\r\nvar dateInRange = function(date, min, max, format) {\r\n if (\"date\" === format) {\r\n min = min && dateUtils.correctDateWithUnitBeginning(min, \"day\");\r\n max = max && dateUtils.correctDateWithUnitBeginning(max, \"day\");\r\n date = date && dateUtils.correctDateWithUnitBeginning(date, \"day\")\r\n }\r\n return normalizeDate(date, min, max) === date\r\n};\r\nvar intervalsOverlap = function(options) {\r\n var {\r\n firstMin: firstMin,\r\n firstMax: firstMax,\r\n secondMin: secondMin,\r\n secondMax: secondMax\r\n } = options;\r\n return firstMin <= secondMin && secondMin <= firstMax || firstMin > secondMin && firstMin < secondMax || firstMin < secondMax && firstMax > secondMax\r\n};\r\nvar dateTimeFromDecimal = function(number) {\r\n var hours = Math.floor(number);\r\n var minutes = number % 1 * 60;\r\n return {\r\n hours: hours,\r\n minutes: minutes\r\n }\r\n};\r\nvar roundDateByStartDayHour = function(date, startDayHour) {\r\n var startTime = this.dateTimeFromDecimal(startDayHour);\r\n var result = new Date(date);\r\n if (date.getHours() === startTime.hours && date.getMinutes() < startTime.minutes || date.getHours() < startTime.hours) {\r\n result.setHours(startTime.hours, startTime.minutes, 0, 0)\r\n }\r\n return result\r\n};\r\n\r\nfunction normalizeDate(date, min, max) {\r\n var normalizedDate = date;\r\n if (!isDefined(date)) {\r\n return date\r\n }\r\n if (isDefined(min) && date < min) {\r\n normalizedDate = min\r\n }\r\n if (isDefined(max) && date > max) {\r\n normalizedDate = max\r\n }\r\n return normalizedDate\r\n}\r\n\r\nfunction fixTimezoneGap(oldDate, newDate) {\r\n if (!isDefined(oldDate)) {\r\n return\r\n }\r\n var diff = newDate.getHours() - oldDate.getHours();\r\n if (0 === diff) {\r\n return\r\n }\r\n var sign = 1 === diff || -23 === diff ? -1 : 1;\r\n var trial = new Date(newDate.getTime() + 36e5 * sign);\r\n if (sign > 0 || trial.getDate() === newDate.getDate()) {\r\n newDate.setTime(trial.getTime())\r\n }\r\n}\r\nvar roundToHour = function(date) {\r\n var result = new Date(date.getTime());\r\n result.setHours(result.getHours() + 1);\r\n result.setMinutes(0);\r\n return result\r\n};\r\n\r\nfunction getTimezonesDifference(min, max) {\r\n return 60 * (max.getTimezoneOffset() - min.getTimezoneOffset()) * 1e3\r\n}\r\nvar makeDate = function(date) {\r\n return new Date(date)\r\n};\r\nvar getDatesOfInterval = function(startDate, endDate, step) {\r\n var result = [];\r\n var currentDate = new Date(startDate.getTime());\r\n while (currentDate < endDate) {\r\n result.push(new Date(currentDate.getTime()));\r\n currentDate = this.addInterval(currentDate, step)\r\n }\r\n return result\r\n};\r\nvar createDateWithFullYear = function(year) {\r\n var result = new Date(...arguments);\r\n result.setFullYear(year);\r\n return result\r\n};\r\nvar getMachineTimezoneName = () => {\r\n var hasIntl = \"undefined\" !== typeof Intl;\r\n return hasIntl ? Intl.DateTimeFormat().resolvedOptions().timeZone : null\r\n};\r\nvar dateUtils = {\r\n dateUnitIntervals: dateUnitIntervals,\r\n convertMillisecondsToDateUnits: convertMillisecondsToDateUnits,\r\n dateToMilliseconds: dateToMilliseconds,\r\n getNextDateUnit: getNextDateUnit,\r\n convertDateUnitToMilliseconds: convertDateUnitToMilliseconds,\r\n getDateUnitInterval: getDateUnitInterval,\r\n getDateFormatByTickInterval: getDateFormatByTickInterval,\r\n getDatesDifferences: getDatesDifferences,\r\n correctDateWithUnitBeginning: correctDateWithUnitBeginning,\r\n trimTime: trimTime,\r\n setToDayEnd: setToDayEnd,\r\n roundDateByStartDayHour: roundDateByStartDayHour,\r\n dateTimeFromDecimal: dateTimeFromDecimal,\r\n addDateInterval: addDateInterval,\r\n addInterval: addInterval,\r\n getSequenceByInterval: getSequenceByInterval,\r\n getDateIntervalByString: getDateIntervalByString,\r\n sameHoursAndMinutes: sameHoursAndMinutes,\r\n sameDate: sameDate,\r\n sameMonthAndYear: sameMonthAndYear,\r\n sameMonth: sameMonthAndYear,\r\n sameYear: sameYear,\r\n sameDecade: sameDecade,\r\n sameCentury: sameCentury,\r\n getDifferenceInMonth: getDifferenceInMonth,\r\n getDifferenceInMonthForCells: getDifferenceInMonthForCells,\r\n getFirstYearInDecade: getFirstYearInDecade,\r\n getFirstDecadeInCentury: getFirstDecadeInCentury,\r\n getShortDateFormat: getShortDateFormat,\r\n getViewFirstCellDate: getViewFirstCellDate,\r\n getViewLastCellDate: getViewLastCellDate,\r\n getViewDown: getViewDown,\r\n getViewUp: getViewUp,\r\n getLastMonthDay: getLastMonthDay,\r\n getLastMonthDate: getLastMonthDate,\r\n getFirstMonthDate: getFirstMonthDate,\r\n getFirstWeekDate: getFirstWeekDate,\r\n getWeekNumber: getWeekNumber,\r\n normalizeDateByWeek: normalizeDateByWeek,\r\n getQuarter: getQuarter,\r\n getFirstQuarterMonth: getFirstQuarterMonth,\r\n dateInRange: dateInRange,\r\n intervalsOverlap: intervalsOverlap,\r\n roundToHour: roundToHour,\r\n normalizeDate: normalizeDate,\r\n getViewMinBoundaryDate: getViewMinBoundaryDate,\r\n getViewMaxBoundaryDate: getViewMaxBoundaryDate,\r\n fixTimezoneGap: fixTimezoneGap,\r\n getTimezonesDifference: getTimezonesDifference,\r\n makeDate: makeDate,\r\n getDatesInterval: getDatesInterval,\r\n getDatesOfInterval: getDatesOfInterval,\r\n createDateWithFullYear: createDateWithFullYear,\r\n getMachineTimezoneName: getMachineTimezoneName\r\n};\r\ndateUtils.sameView = function(view, date1, date2) {\r\n return dateUtils[camelize(\"same \" + view)](date1, date2)\r\n};\r\nexport default dateUtils;\r\n","/**\r\n * DevExtreme (esm/localization/ldml/date.formatter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nfunction leftPad(text, length) {\r\n while (text.length < length) {\r\n text = \"0\" + text\r\n }\r\n return text\r\n}\r\nvar FORMAT_TYPES = {\r\n 3: \"abbreviated\",\r\n 4: \"wide\",\r\n 5: \"narrow\"\r\n};\r\nvar LDML_FORMATTERS = {\r\n y: function(date, count, useUtc) {\r\n var year = date[useUtc ? \"getUTCFullYear\" : \"getFullYear\"]();\r\n if (2 === count) {\r\n year %= 100\r\n }\r\n return leftPad(year.toString(), count)\r\n },\r\n M: function(date, count, useUtc, dateParts) {\r\n var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n var formatType = FORMAT_TYPES[count];\r\n if (formatType) {\r\n return dateParts.getMonthNames(formatType, \"format\")[month]\r\n }\r\n return leftPad((month + 1).toString(), Math.min(count, 2))\r\n },\r\n L: function(date, count, useUtc, dateParts) {\r\n var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n var formatType = FORMAT_TYPES[count];\r\n if (formatType) {\r\n return dateParts.getMonthNames(formatType, \"standalone\")[month]\r\n }\r\n return leftPad((month + 1).toString(), Math.min(count, 2))\r\n },\r\n Q: function(date, count, useUtc, dateParts) {\r\n var month = date[useUtc ? \"getUTCMonth\" : \"getMonth\"]();\r\n var quarter = Math.floor(month / 3);\r\n var formatType = FORMAT_TYPES[count];\r\n if (formatType) {\r\n return dateParts.getQuarterNames(formatType)[quarter]\r\n }\r\n return leftPad((quarter + 1).toString(), Math.min(count, 2))\r\n },\r\n E: function(date, count, useUtc, dateParts) {\r\n var day = date[useUtc ? \"getUTCDay\" : \"getDay\"]();\r\n var formatType = FORMAT_TYPES[count < 3 ? 3 : count];\r\n return dateParts.getDayNames(formatType)[day]\r\n },\r\n a: function(date, count, useUtc, dateParts) {\r\n var hours = date[useUtc ? \"getUTCHours\" : \"getHours\"]();\r\n var period = hours < 12 ? 0 : 1;\r\n var formatType = FORMAT_TYPES[count];\r\n return dateParts.getPeriodNames(formatType)[period]\r\n },\r\n d: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCDate\" : \"getDate\"]().toString(), Math.min(count, 2))\r\n },\r\n H: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCHours\" : \"getHours\"]().toString(), Math.min(count, 2))\r\n },\r\n h: function(date, count, useUtc) {\r\n var hours = date[useUtc ? \"getUTCHours\" : \"getHours\"]();\r\n return leftPad((hours % 12 || 12).toString(), Math.min(count, 2))\r\n },\r\n m: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCMinutes\" : \"getMinutes\"]().toString(), Math.min(count, 2))\r\n },\r\n s: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCSeconds\" : \"getSeconds\"]().toString(), Math.min(count, 2))\r\n },\r\n S: function(date, count, useUtc) {\r\n return leftPad(date[useUtc ? \"getUTCMilliseconds\" : \"getMilliseconds\"]().toString(), 3).substr(0, count)\r\n },\r\n x: function(date, count, useUtc) {\r\n var timezoneOffset = useUtc ? 0 : date.getTimezoneOffset();\r\n var signPart = timezoneOffset > 0 ? \"-\" : \"+\";\r\n var timezoneOffsetAbs = Math.abs(timezoneOffset);\r\n var hours = Math.floor(timezoneOffsetAbs / 60);\r\n var minutes = timezoneOffsetAbs % 60;\r\n var hoursPart = leftPad(hours.toString(), 2);\r\n var minutesPart = leftPad(minutes.toString(), 2);\r\n return signPart + hoursPart + (count >= 3 ? \":\" : \"\") + (count > 1 || minutes ? minutesPart : \"\")\r\n },\r\n X: function(date, count, useUtc) {\r\n if (useUtc || !date.getTimezoneOffset()) {\r\n return \"Z\"\r\n }\r\n return LDML_FORMATTERS.x(date, count, useUtc)\r\n },\r\n Z: function(date, count, useUtc) {\r\n return LDML_FORMATTERS.X(date, count >= 5 ? 3 : 2, useUtc)\r\n }\r\n};\r\nexport var getFormatter = function(format, dateParts) {\r\n return function(date) {\r\n var charIndex;\r\n var formatter;\r\n var char;\r\n var charCount = 0;\r\n var isEscaping = false;\r\n var isCurrentCharEqualsNext;\r\n var result = \"\";\r\n if (!date) {\r\n return null\r\n }\r\n if (!format) {\r\n return date\r\n }\r\n var useUtc = \"Z\" === format[format.length - 1] || \"'Z'\" === format.slice(-3);\r\n for (charIndex = 0; charIndex < format.length; charIndex++) {\r\n char = format[charIndex];\r\n formatter = LDML_FORMATTERS[char];\r\n isCurrentCharEqualsNext = char === format[charIndex + 1];\r\n charCount++;\r\n if (!isCurrentCharEqualsNext) {\r\n if (formatter && !isEscaping) {\r\n result += formatter(date, charCount, useUtc, dateParts)\r\n }\r\n charCount = 0\r\n }\r\n if (\"'\" === char && !isCurrentCharEqualsNext) {\r\n isEscaping = !isEscaping\r\n } else if (isEscaping || !formatter) {\r\n result += char\r\n }\r\n if (\"'\" === char && isCurrentCharEqualsNext) {\r\n charIndex++\r\n }\r\n }\r\n return result\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/default_date_names.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n map\r\n} from \"../core/utils/iterator\";\r\nvar MONTHS = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\r\nvar DAYS = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\r\nvar PERIODS = [\"AM\", \"PM\"];\r\nvar QUARTERS = [\"Q1\", \"Q2\", \"Q3\", \"Q4\"];\r\nvar cutCaptions = (captions, format) => {\r\n var lengthByFormat = {\r\n abbreviated: 3,\r\n short: 2,\r\n narrow: 1\r\n };\r\n return map(captions, caption => caption.substr(0, lengthByFormat[format]))\r\n};\r\nexport default {\r\n getMonthNames: function(format) {\r\n return cutCaptions(MONTHS, format)\r\n },\r\n getDayNames: function(format) {\r\n return cutCaptions(DAYS, format)\r\n },\r\n getQuarterNames: function(format) {\r\n return QUARTERS\r\n },\r\n getPeriodNames: function(format) {\r\n return PERIODS\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/date_serialization.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../config\";\r\nimport {\r\n getFormatter as getLDMLFormatter\r\n} from \"../../localization/ldml/date.formatter\";\r\nimport defaultDateNames from \"../../localization/default_date_names\";\r\nimport {\r\n isString,\r\n isDate,\r\n isNumeric as isNumber\r\n} from \"./type\";\r\nvar NUMBER_SERIALIZATION_FORMAT = \"number\";\r\nvar DATE_SERIALIZATION_FORMAT = \"yyyy/MM/dd\";\r\nvar DATETIME_SERIALIZATION_FORMAT = \"yyyy/MM/dd HH:mm:ss\";\r\nvar ISO8601_PATTERN = /^(\\d{4,})(-)?(\\d{2})(-)?(\\d{2})(?:T(\\d{2})(:)?(\\d{2})?(:)?(\\d{2}(?:\\.(\\d{1,3})\\d*)?)?)?(Z|([+-])(\\d{2})(:)?(\\d{2})?)?$/;\r\nvar ISO8601_TIME_PATTERN = /^(\\d{2}):(\\d{2})(:(\\d{2}))?$/;\r\nvar ISO8601_PATTERN_PARTS = [\"\", \"yyyy\", \"\", \"MM\", \"\", \"dd\", \"THH\", \"\", \"mm\", \"\", \"ss\", \".SSS\"];\r\nvar DATE_SERIALIZATION_PATTERN = /^(\\d{4})\\/(\\d{2})\\/(\\d{2})$/;\r\nvar MILLISECOND_LENGHT = 3;\r\nvar dateParser = function(text, skipISO8601Parsing) {\r\n var result;\r\n if (isString(text) && !skipISO8601Parsing) {\r\n result = parseISO8601String(text)\r\n }\r\n return result || parseDate(text)\r\n};\r\n\r\nfunction getTimePart(part) {\r\n return +part || 0\r\n}\r\n\r\nfunction parseDate(text) {\r\n var isDefaultSerializationFormat = getDateSerializationFormat(text) === DATE_SERIALIZATION_FORMAT;\r\n var parsedValue = !isDate(text) && Date.parse(text);\r\n if (!parsedValue && isDefaultSerializationFormat) {\r\n var parts = text.match(DATE_SERIALIZATION_PATTERN);\r\n if (parts) {\r\n var newDate = new Date(getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[3]));\r\n newDate.setFullYear(getTimePart(parts[1]));\r\n newDate.setMonth(getTimePart(parts[2]) - 1);\r\n newDate.setDate(getTimePart(parts[3]));\r\n return newDate\r\n }\r\n }\r\n return isNumber(parsedValue) ? new Date(parsedValue) : text\r\n}\r\n\r\nfunction parseISO8601String(text) {\r\n var parts = text.match(ISO8601_PATTERN);\r\n if (!parts) {\r\n parts = text.match(ISO8601_TIME_PATTERN);\r\n if (parts) {\r\n return new Date(0, 0, 0, getTimePart(parts[1]), getTimePart(parts[2]), getTimePart(parts[4]))\r\n }\r\n return\r\n }\r\n var year = getTimePart(parts[1]);\r\n var month = --parts[3];\r\n var day = parts[5];\r\n var timeZoneHour = 0;\r\n var timeZoneMinute = 0;\r\n var correctYear = d => {\r\n year < 100 && d.setFullYear(year);\r\n return d\r\n };\r\n timeZoneHour = getTimePart(parts[14]);\r\n timeZoneMinute = getTimePart(parts[16]);\r\n if (\"-\" === parts[13]) {\r\n timeZoneHour = -timeZoneHour;\r\n timeZoneMinute = -timeZoneMinute\r\n }\r\n var hour = getTimePart(parts[6]) - timeZoneHour;\r\n var minute = getTimePart(parts[8]) - timeZoneMinute;\r\n var second = getTimePart(parts[10]);\r\n var millisecond = function(part) {\r\n part = part || \"\";\r\n return getTimePart(part) * Math.pow(10, MILLISECOND_LENGHT - part.length)\r\n }(parts[11]);\r\n if (parts[12]) {\r\n return correctYear(new Date(Date.UTC(year, month, day, hour, minute, second, millisecond)))\r\n }\r\n return correctYear(new Date(year, month, day, hour, minute, second, millisecond))\r\n}\r\nvar getIso8601Format = function(text, useUtc) {\r\n var parts = text.match(ISO8601_PATTERN);\r\n var result = \"\";\r\n if (!parts) {\r\n parts = text.match(ISO8601_TIME_PATTERN);\r\n if (parts) {\r\n return parts[3] ? \"HH:mm:ss\" : \"HH:mm\"\r\n }\r\n return\r\n }\r\n for (var i = 1; i < ISO8601_PATTERN_PARTS.length; i++) {\r\n if (parts[i]) {\r\n result += ISO8601_PATTERN_PARTS[i] || parts[i]\r\n }\r\n }\r\n if (\"Z\" === parts[12]) {\r\n result += \"'Z'\"\r\n }\r\n if (parts[14]) {\r\n if (parts[15]) {\r\n result += \"xxx\"\r\n } else if (parts[16]) {\r\n result += \"xx\"\r\n } else {\r\n result += \"x\"\r\n }\r\n }\r\n return result\r\n};\r\nvar deserializeDate = function(value) {\r\n if (\"number\" === typeof value) {\r\n return new Date(value)\r\n }\r\n return dateParser(value, !config().forceIsoDateParsing)\r\n};\r\nvar serializeDate = function(value, serializationFormat) {\r\n if (!serializationFormat) {\r\n return value\r\n }\r\n if (!isDate(value)) {\r\n return null\r\n }\r\n if (serializationFormat === NUMBER_SERIALIZATION_FORMAT) {\r\n return value && value.valueOf ? value.valueOf() : null\r\n }\r\n return getLDMLFormatter(serializationFormat, defaultDateNames)(value)\r\n};\r\nvar getDateSerializationFormat = function(value) {\r\n if (\"number\" === typeof value) {\r\n return NUMBER_SERIALIZATION_FORMAT\r\n } else if (isString(value)) {\r\n var format;\r\n if (config().forceIsoDateParsing) {\r\n format = getIso8601Format(value)\r\n }\r\n if (format) {\r\n return format\r\n } else if (value.indexOf(\":\") >= 0) {\r\n return DATETIME_SERIALIZATION_FORMAT\r\n } else {\r\n return DATE_SERIALIZATION_FORMAT\r\n }\r\n } else if (value) {\r\n return null\r\n }\r\n};\r\nexport default {\r\n dateParser: dateParser,\r\n deserializeDate: deserializeDate,\r\n serializeDate: serializeDate,\r\n getDateSerializationFormat: getDateSerializationFormat\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/position.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../config\";\r\nimport {\r\n isWindow\r\n} from \"../utils/type\";\r\nvar getDefaultAlignment = isRtlEnabled => {\r\n var rtlEnabled = null !== isRtlEnabled && void 0 !== isRtlEnabled ? isRtlEnabled : config().rtlEnabled;\r\n return rtlEnabled ? \"right\" : \"left\"\r\n};\r\nvar getBoundingRect = element => {\r\n if (isWindow(element)) {\r\n return {\r\n width: element.outerWidth,\r\n height: element.outerHeight\r\n }\r\n }\r\n return element.getBoundingClientRect()\r\n};\r\nexport {\r\n getBoundingRect,\r\n getDefaultAlignment\r\n};\r\n","/**\r\n * DevExtreme (esm/data/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport readyCallbacks from \"../core/utils/ready_callbacks\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n equalByValue\r\n} from \"../core/utils/common\";\r\nvar ready = readyCallbacks.add;\r\nexport var XHR_ERROR_UNLOAD = \"DEVEXTREME_XHR_ERROR_UNLOAD\";\r\nexport var normalizeBinaryCriterion = function(crit) {\r\n return [crit[0], crit.length < 3 ? \"=\" : String(crit[1]).toLowerCase(), crit.length < 2 ? true : crit[crit.length - 1]]\r\n};\r\nexport var normalizeSortingInfo = function(info) {\r\n if (!Array.isArray(info)) {\r\n info = [info]\r\n }\r\n return map(info, (function(i) {\r\n var result = {\r\n selector: isFunction(i) || \"string\" === typeof i ? i : i.getter || i.field || i.selector,\r\n desc: !!(i.desc || \"d\" === String(i.dir).charAt(0).toLowerCase())\r\n };\r\n if (i.compare) {\r\n result.compare = i.compare\r\n }\r\n return result\r\n }))\r\n};\r\nexport var errorMessageFromXhr = function() {\r\n var textStatusMessages = {\r\n timeout: \"Network connection timeout\",\r\n error: \"Unspecified network error\",\r\n parsererror: \"Unexpected server response\"\r\n };\r\n var unloading;\r\n ready((function() {\r\n var window = getWindow();\r\n domAdapter.listen(window, \"beforeunload\", (function() {\r\n unloading = true\r\n }))\r\n }));\r\n return function(xhr, textStatus) {\r\n if (unloading) {\r\n return XHR_ERROR_UNLOAD\r\n }\r\n if (xhr.status < 400) {\r\n return function(textStatus) {\r\n var result = textStatusMessages[textStatus];\r\n if (!result) {\r\n return textStatus\r\n }\r\n return result\r\n }(textStatus)\r\n }\r\n return xhr.statusText\r\n }\r\n}();\r\nexport var aggregators = {\r\n count: {\r\n seed: 0,\r\n step: function(count) {\r\n return 1 + count\r\n }\r\n },\r\n sum: {\r\n seed: 0,\r\n step: function(sum, item) {\r\n return sum + item\r\n }\r\n },\r\n min: {\r\n step: function(min, item) {\r\n return item < min ? item : min\r\n }\r\n },\r\n max: {\r\n step: function(max, item) {\r\n return item > max ? item : max\r\n }\r\n },\r\n avg: {\r\n seed: [0, 0],\r\n step: function(pair, value) {\r\n return [pair[0] + value, pair[1] + 1]\r\n },\r\n finalize: function(pair) {\r\n return pair[1] ? pair[0] / pair[1] : NaN\r\n }\r\n }\r\n};\r\nexport var processRequestResultLock = function() {\r\n var lockCount = 0;\r\n var lockDeferred;\r\n return {\r\n obtain: function() {\r\n if (0 === lockCount) {\r\n lockDeferred = new Deferred\r\n }\r\n lockCount++\r\n },\r\n release: function() {\r\n lockCount--;\r\n if (lockCount < 1) {\r\n lockDeferred.resolve()\r\n }\r\n },\r\n promise: function() {\r\n var deferred = 0 === lockCount ? (new Deferred).resolve() : lockDeferred;\r\n return deferred.promise()\r\n },\r\n reset: function() {\r\n lockCount = 0;\r\n if (lockDeferred) {\r\n lockDeferred.resolve()\r\n }\r\n }\r\n }\r\n}();\r\nexport function isDisjunctiveOperator(condition) {\r\n return /^(or|\\|\\||\\|)$/i.test(condition)\r\n}\r\nexport function isConjunctiveOperator(condition) {\r\n return /^(and|&&|&)$/i.test(condition)\r\n}\r\nexport var keysEqual = function(keyExpr, key1, key2) {\r\n if (Array.isArray(keyExpr)) {\r\n var names = map(key1, (function(v, k) {\r\n return k\r\n }));\r\n var name;\r\n for (var i = 0; i < names.length; i++) {\r\n name = names[i];\r\n if (!equalByValue(key1[name], key2[name], {\r\n strict: false\r\n })) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return equalByValue(key1, key2, {\r\n strict: false\r\n })\r\n};\r\nvar BASE64_CHARS = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\r\nexport var base64_encode = function(input) {\r\n if (!Array.isArray(input)) {\r\n input = stringToByteArray(String(input))\r\n }\r\n var result = \"\";\r\n\r\n function getBase64Char(index) {\r\n return BASE64_CHARS.charAt(index)\r\n }\r\n for (var i = 0; i < input.length; i += 3) {\r\n var octet1 = input[i];\r\n var octet2 = input[i + 1];\r\n var octet3 = input[i + 2];\r\n result += map([octet1 >> 2, (3 & octet1) << 4 | octet2 >> 4, isNaN(octet2) ? 64 : (15 & octet2) << 2 | octet3 >> 6, isNaN(octet3) ? 64 : 63 & octet3], getBase64Char).join(\"\")\r\n }\r\n return result\r\n};\r\n\r\nfunction stringToByteArray(str) {\r\n var bytes = [];\r\n var code;\r\n var i;\r\n for (i = 0; i < str.length; i++) {\r\n code = str.charCodeAt(i);\r\n if (code < 128) {\r\n bytes.push(code)\r\n } else if (code < 2048) {\r\n bytes.push(192 + (code >> 6), 128 + (63 & code))\r\n } else if (code < 65536) {\r\n bytes.push(224 + (code >> 12), 128 + (code >> 6 & 63), 128 + (63 & code))\r\n } else if (code < 2097152) {\r\n bytes.push(240 + (code >> 18), 128 + (code >> 12 & 63), 128 + (code >> 6 & 63), 128 + (63 & code))\r\n }\r\n }\r\n return bytes\r\n}\r\nexport var isUnaryOperation = function(crit) {\r\n return \"!\" === crit[0] && Array.isArray(crit[1])\r\n};\r\nvar isGroupOperator = function(value) {\r\n return \"and\" === value || \"or\" === value\r\n};\r\nexport var isGroupCriterion = function(crit) {\r\n var first = crit[0];\r\n var second = crit[1];\r\n if (Array.isArray(first)) {\r\n return true\r\n }\r\n if (isFunction(first)) {\r\n if (Array.isArray(second) || isFunction(second) || isGroupOperator(second)) {\r\n return true\r\n }\r\n }\r\n return false\r\n};\r\nexport var trivialPromise = function() {\r\n var d = new Deferred;\r\n return d.resolve.apply(d, arguments).promise()\r\n};\r\nexport var rejectedPromise = function() {\r\n var d = new Deferred;\r\n return d.reject.apply(d, arguments).promise()\r\n};\r\n\r\nfunction throttle(func, timeout) {\r\n var timeoutId;\r\n return function() {\r\n if (!timeoutId) {\r\n timeoutId = setTimeout(() => {\r\n timeoutId = void 0;\r\n func.call(this)\r\n }, isFunction(timeout) ? timeout() : timeout)\r\n }\r\n return timeoutId\r\n }\r\n}\r\nexport function throttleChanges(func, timeout) {\r\n var cache = [];\r\n var throttled = throttle((function() {\r\n func.call(this, cache);\r\n cache = []\r\n }), timeout);\r\n return function(changes) {\r\n if (Array.isArray(changes)) {\r\n cache.push(...changes)\r\n }\r\n return throttled.call(this, cache)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/data/errors.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"../core/utils/error\";\r\nimport coreErrors from \"../core/errors\";\r\nexport var errors = errorUtils(coreErrors.ERROR_MESSAGES, {\r\n E4000: \"[DevExpress.data]: {0}\",\r\n E4001: \"Unknown aggregating function is detected: '{0}'\",\r\n E4002: \"Unsupported OData protocol version is used\",\r\n E4003: \"Unknown filter operation is used: {0}\",\r\n E4004: \"The thenby() method is called before the sortby() method\",\r\n E4005: \"Store requires a key expression for this operation\",\r\n E4006: \"ArrayStore 'data' option must be an array\",\r\n E4007: \"Compound keys cannot be auto-generated\",\r\n E4008: \"Attempt to insert an item with a duplicated key\",\r\n E4009: \"Data item cannot be found\",\r\n E4010: \"CustomStore does not support creating queries\",\r\n E4011: \"Custom Store method is not implemented or is not a function: {0}\",\r\n E4012: \"Custom Store method returns an invalid value: {0}\",\r\n E4013: \"Local Store requires the 'name' configuration option is specified\",\r\n E4014: \"Unknown data type is specified for ODataStore: {0}\",\r\n E4015: \"Unknown entity name or alias is used: {0}\",\r\n E4016: \"The compileSetter(expr) method is called with 'self' passed as a parameter\",\r\n E4017: \"Keys cannot be modified\",\r\n E4018: \"The server has returned a non-numeric value in a response to an item count request\",\r\n E4019: \"Mixing of group operators inside a single group of filter expression is not allowed\",\r\n E4020: \"Unknown store type is detected: {0}\",\r\n E4021: \"The server response does not provide the totalCount value\",\r\n E4022: \"The server response does not provide the groupCount value\",\r\n E4023: \"Could not parse the following XML: {0}\",\r\n E4024: \"String function {0} cannot be used with the data field {1} of type {2}.\",\r\n W4000: \"Data returned from the server has an incorrect structure\",\r\n W4001: 'The {0} field is listed in both \"keyType\" and \"fieldTypes\". The value of \"fieldTypes\" is used.',\r\n W4002: \"Data loading has failed for some cells due to the following error: {0}\"\r\n});\r\nexport var errorHandler = null;\r\nexport var handleError = function(error) {\r\n var _errorHandler;\r\n null === (_errorHandler = errorHandler) || void 0 === _errorHandler ? void 0 : _errorHandler(error)\r\n};\r\nexport var setErrorHandler = handler => errorHandler = handler;\r\n","/**\r\n * DevExtreme (esm/data/array_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isDefined,\r\n isEmptyObject,\r\n isObject,\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport config from \"../core/config\";\r\nimport Guid from \"../core/guid\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n errors\r\n} from \"./errors\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"../core/utils/object\";\r\nimport {\r\n compileGetter\r\n} from \"../core/utils/data\";\r\nimport {\r\n keysEqual,\r\n rejectedPromise,\r\n trivialPromise\r\n} from \"./utils\";\r\n\r\nfunction hasKey(target, keyOrKeys) {\r\n var key;\r\n var keys = \"string\" === typeof keyOrKeys ? keyOrKeys.split() : keyOrKeys.slice();\r\n while (keys.length) {\r\n key = keys.shift();\r\n if (key in target) {\r\n return true\r\n }\r\n }\r\n return false\r\n}\r\n\r\nfunction findItems(keyInfo, items, key, groupCount) {\r\n var childItems;\r\n var result;\r\n if (groupCount) {\r\n for (var i = 0; i < items.length; i++) {\r\n childItems = items[i].items || items[i].collapsedItems || [];\r\n result = findItems(keyInfo, childItems || [], key, groupCount - 1);\r\n if (result) {\r\n return result\r\n }\r\n }\r\n } else if (indexByKey(keyInfo, items, key) >= 0) {\r\n return items\r\n }\r\n}\r\n\r\nfunction getItems(keyInfo, items, key, groupCount) {\r\n if (groupCount) {\r\n return findItems(keyInfo, items, key, groupCount) || []\r\n }\r\n return items\r\n}\r\n\r\nfunction generateDataByKeyMap(keyInfo, array) {\r\n if (keyInfo.key() && (!array._dataByKeyMap || array._dataByKeyMapLength !== array.length)) {\r\n var dataByKeyMap = {};\r\n var arrayLength = array.length;\r\n for (var i = 0; i < arrayLength; i++) {\r\n dataByKeyMap[JSON.stringify(keyInfo.keyOf(array[i]))] = array[i]\r\n }\r\n array._dataByKeyMap = dataByKeyMap;\r\n array._dataByKeyMapLength = arrayLength\r\n }\r\n}\r\n\r\nfunction getCacheValue(array, key) {\r\n if (array._dataByKeyMap) {\r\n return array._dataByKeyMap[JSON.stringify(key)]\r\n }\r\n}\r\n\r\nfunction getHasKeyCacheValue(array, key) {\r\n if (array._dataByKeyMap) {\r\n return array._dataByKeyMap[JSON.stringify(key)]\r\n }\r\n return true\r\n}\r\n\r\nfunction setDataByKeyMapValue(array, key, data) {\r\n if (array._dataByKeyMap) {\r\n array._dataByKeyMap[JSON.stringify(key)] = data;\r\n array._dataByKeyMapLength += data ? 1 : -1\r\n }\r\n}\r\n\r\nfunction cloneInstanceWithChangedPaths(instance, changes, clonedInstances) {\r\n clonedInstances = clonedInstances || new WeakMap;\r\n var result = instance ? Object.create(Object.getPrototypeOf(instance)) : {};\r\n if (instance) {\r\n clonedInstances.set(instance, result)\r\n }\r\n var instanceWithoutPrototype = _extends({}, instance);\r\n deepExtendArraySafe(result, instanceWithoutPrototype, true, true);\r\n for (var name in instanceWithoutPrototype) {\r\n var value = instanceWithoutPrototype[name];\r\n var change = null === changes || void 0 === changes ? void 0 : changes[name];\r\n if (isObject(value) && !isPlainObject(value) && isObject(change) && !clonedInstances.has(value)) {\r\n result[name] = cloneInstanceWithChangedPaths(value, change, clonedInstances)\r\n }\r\n }\r\n for (var _name in result) {\r\n var prop = result[_name];\r\n if (isObject(prop) && clonedInstances.has(prop)) {\r\n result[_name] = clonedInstances.get(prop)\r\n }\r\n }\r\n return result\r\n}\r\n\r\nfunction createObjectWithChanges(target, changes) {\r\n var result = cloneInstanceWithChangedPaths(target, changes);\r\n return deepExtendArraySafe(result, changes, true, true)\r\n}\r\n\r\nfunction applyBatch(_ref) {\r\n var {\r\n keyInfo: keyInfo,\r\n data: data,\r\n changes: changes,\r\n groupCount: groupCount,\r\n useInsertIndex: useInsertIndex,\r\n immutable: immutable,\r\n disableCache: disableCache,\r\n logError: logError,\r\n skipCopying: skipCopying\r\n } = _ref;\r\n var resultItems = true === immutable ? [...data] : data;\r\n changes.forEach(item => {\r\n var items = \"insert\" === item.type ? resultItems : getItems(keyInfo, resultItems, item.key, groupCount);\r\n !disableCache && generateDataByKeyMap(keyInfo, items);\r\n switch (item.type) {\r\n case \"update\":\r\n update(keyInfo, items, item.key, item.data, true, immutable, logError);\r\n break;\r\n case \"insert\":\r\n insert(keyInfo, items, item.data, useInsertIndex && isDefined(item.index) ? item.index : -1, true, logError, skipCopying);\r\n break;\r\n case \"remove\":\r\n remove(keyInfo, items, item.key, true, logError)\r\n }\r\n });\r\n return resultItems\r\n}\r\n\r\nfunction getErrorResult(isBatch, logError, errorCode) {\r\n return !isBatch ? rejectedPromise(errors.Error(errorCode)) : logError && errors.log(errorCode)\r\n}\r\n\r\nfunction applyChanges(data, changes) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var {\r\n keyExpr: keyExpr = \"id\",\r\n immutable: immutable = true\r\n } = options;\r\n var keyGetter = compileGetter(keyExpr);\r\n var keyInfo = {\r\n key: () => keyExpr,\r\n keyOf: obj => keyGetter(obj)\r\n };\r\n return applyBatch({\r\n keyInfo: keyInfo,\r\n data: data,\r\n changes: changes,\r\n immutable: immutable,\r\n disableCache: true,\r\n logError: true\r\n })\r\n}\r\n\r\nfunction update(keyInfo, array, key, data, isBatch, immutable, logError) {\r\n var target;\r\n var keyExpr = keyInfo.key();\r\n if (keyExpr) {\r\n if (hasKey(data, keyExpr) && !keysEqual(keyExpr, key, keyInfo.keyOf(data))) {\r\n return getErrorResult(isBatch, logError, \"E4017\")\r\n }\r\n target = getCacheValue(array, key);\r\n if (!target) {\r\n var index = indexByKey(keyInfo, array, key);\r\n if (index < 0) {\r\n return getErrorResult(isBatch, logError, \"E4009\")\r\n }\r\n target = array[index];\r\n if (true === immutable && isDefined(target)) {\r\n var newTarget = createObjectWithChanges(target, data);\r\n array[index] = newTarget;\r\n return !isBatch && trivialPromise(newTarget, key)\r\n }\r\n }\r\n } else {\r\n target = key\r\n }\r\n deepExtendArraySafe(target, data, true);\r\n if (!isBatch) {\r\n if (config().useLegacyStoreResult) {\r\n return trivialPromise(key, data)\r\n } else {\r\n return trivialPromise(target, key)\r\n }\r\n }\r\n}\r\n\r\nfunction insert(keyInfo, array, data, index, isBatch, logError, skipCopying) {\r\n var keyValue;\r\n var keyExpr = keyInfo.key();\r\n var obj = isPlainObject(data) && !skipCopying ? extend({}, data) : data;\r\n if (keyExpr) {\r\n keyValue = keyInfo.keyOf(obj);\r\n if (void 0 === keyValue || \"object\" === typeof keyValue && isEmptyObject(keyValue)) {\r\n if (Array.isArray(keyExpr)) {\r\n throw errors.Error(\"E4007\")\r\n }\r\n keyValue = obj[keyExpr] = String(new Guid)\r\n } else if (void 0 !== array[indexByKey(keyInfo, array, keyValue)]) {\r\n return getErrorResult(isBatch, logError, \"E4008\")\r\n }\r\n } else {\r\n keyValue = obj\r\n }\r\n if (index >= 0) {\r\n array.splice(index, 0, obj)\r\n } else {\r\n array.push(obj)\r\n }\r\n setDataByKeyMapValue(array, keyValue, obj);\r\n if (!isBatch) {\r\n return trivialPromise(config().useLegacyStoreResult ? data : obj, keyValue)\r\n }\r\n}\r\n\r\nfunction remove(keyInfo, array, key, isBatch, logError) {\r\n var index = indexByKey(keyInfo, array, key);\r\n if (index > -1) {\r\n array.splice(index, 1);\r\n setDataByKeyMapValue(array, key, null)\r\n }\r\n if (!isBatch) {\r\n return trivialPromise(key)\r\n } else if (index < 0) {\r\n return getErrorResult(isBatch, logError, \"E4009\")\r\n }\r\n}\r\n\r\nfunction indexByKey(keyInfo, array, key) {\r\n var keyExpr = keyInfo.key();\r\n if (!getHasKeyCacheValue(array, key)) {\r\n return -1\r\n }\r\n for (var i = 0, arrayLength = array.length; i < arrayLength; i++) {\r\n if (keysEqual(keyExpr, keyInfo.keyOf(array[i]), key)) {\r\n return i\r\n }\r\n }\r\n return -1\r\n}\r\nexport {\r\n applyBatch,\r\n createObjectWithChanges,\r\n update,\r\n insert,\r\n remove,\r\n indexByKey,\r\n applyChanges\r\n};\r\n","/**\r\n * DevExtreme (esm/data/array_query.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nimport {\r\n isFunction,\r\n isDefined,\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n compileGetter,\r\n toComparable\r\n} from \"../core/utils/data\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n errors,\r\n handleError as handleDataError\r\n} from \"./errors\";\r\nimport {\r\n aggregators,\r\n isGroupCriterion,\r\n isUnaryOperation,\r\n normalizeBinaryCriterion,\r\n isConjunctiveOperator as isConjunctiveOperatorChecker\r\n} from \"./utils\";\r\nvar Iterator = Class.inherit({\r\n toArray: function() {\r\n var result = [];\r\n this.reset();\r\n while (this.next()) {\r\n result.push(this.current())\r\n }\r\n return result\r\n },\r\n countable: function() {\r\n return false\r\n }\r\n});\r\nvar ArrayIterator = Iterator.inherit({\r\n ctor: function(array) {\r\n this.array = array;\r\n this.index = -1\r\n },\r\n next: function() {\r\n if (this.index + 1 < this.array.length) {\r\n this.index++;\r\n return true\r\n }\r\n return false\r\n },\r\n current: function() {\r\n return this.array[this.index]\r\n },\r\n reset: function() {\r\n this.index = -1\r\n },\r\n toArray: function() {\r\n return this.array.slice(0)\r\n },\r\n countable: function() {\r\n return true\r\n },\r\n count: function() {\r\n return this.array.length\r\n }\r\n});\r\nvar WrappedIterator = Iterator.inherit({\r\n ctor: function(iter) {\r\n this.iter = iter\r\n },\r\n next: function() {\r\n return this.iter.next()\r\n },\r\n current: function() {\r\n return this.iter.current()\r\n },\r\n reset: function() {\r\n return this.iter.reset()\r\n }\r\n});\r\nvar MapIterator = WrappedIterator.inherit({\r\n ctor: function(iter, mapper) {\r\n this.callBase(iter);\r\n this.index = -1;\r\n this.mapper = mapper\r\n },\r\n current: function() {\r\n return this.mapper(this.callBase(), this.index)\r\n },\r\n next: function() {\r\n var hasNext = this.callBase();\r\n if (hasNext) {\r\n this.index++\r\n }\r\n return hasNext\r\n }\r\n});\r\nvar defaultCompare = function(xValue, yValue, options) {\r\n if (isString(xValue) && isString(yValue) && (null !== options && void 0 !== options && options.locale || null !== options && void 0 !== options && options.collatorOptions)) {\r\n return new Intl.Collator((null === options || void 0 === options ? void 0 : options.locale) || void 0, (null === options || void 0 === options ? void 0 : options.collatorOptions) || void 0).compare(xValue, yValue)\r\n }\r\n xValue = toComparable(xValue, false, options);\r\n yValue = toComparable(yValue, false, options);\r\n if (null === xValue && null !== yValue) {\r\n return -1\r\n }\r\n if (null !== xValue && null === yValue) {\r\n return 1\r\n }\r\n if (void 0 === xValue && void 0 !== yValue) {\r\n return 1\r\n }\r\n if (void 0 !== xValue && void 0 === yValue) {\r\n return -1\r\n }\r\n if (xValue < yValue) {\r\n return -1\r\n }\r\n if (xValue > yValue) {\r\n return 1\r\n }\r\n return 0\r\n};\r\nvar SortIterator = Iterator.inherit({\r\n ctor: function(iter, getter, desc, compare) {\r\n this.langParams = iter.langParams;\r\n if (!(iter instanceof MapIterator)) {\r\n iter = new MapIterator(iter, this._wrap);\r\n iter.langParams = this.langParams\r\n }\r\n this.iter = iter;\r\n this.rules = [{\r\n getter: getter,\r\n desc: desc,\r\n compare: compare,\r\n langParams: this.langParams\r\n }]\r\n },\r\n thenBy: function(getter, desc, compare) {\r\n var result = new SortIterator(this.sortedIter || this.iter, getter, desc, compare);\r\n if (!this.sortedIter) {\r\n result.rules = this.rules.concat(result.rules)\r\n }\r\n return result\r\n },\r\n next: function() {\r\n this._ensureSorted();\r\n return this.sortedIter.next()\r\n },\r\n current: function() {\r\n this._ensureSorted();\r\n return this.sortedIter.current()\r\n },\r\n reset: function() {\r\n delete this.sortedIter\r\n },\r\n countable: function() {\r\n return this.sortedIter || this.iter.countable()\r\n },\r\n count: function() {\r\n if (this.sortedIter) {\r\n return this.sortedIter.count()\r\n }\r\n return this.iter.count()\r\n },\r\n _ensureSorted: function() {\r\n var that = this;\r\n if (that.sortedIter) {\r\n return\r\n }\r\n each(that.rules, (function() {\r\n this.getter = compileGetter(this.getter)\r\n }));\r\n that.sortedIter = new MapIterator(new ArrayIterator(this.iter.toArray().sort((function(x, y) {\r\n return that._compare(x, y)\r\n }))), that._unwrap)\r\n },\r\n _wrap: function(record, index) {\r\n return {\r\n index: index,\r\n value: record\r\n }\r\n },\r\n _unwrap: function(wrappedItem) {\r\n return wrappedItem.value\r\n },\r\n _getDefaultCompare: langParams => (xValue, yValue) => defaultCompare(xValue, yValue, langParams),\r\n _compare: function(x, y) {\r\n var xIndex = x.index;\r\n var yIndex = y.index;\r\n x = x.value;\r\n y = y.value;\r\n if (x === y) {\r\n return xIndex - yIndex\r\n }\r\n for (var i = 0, rulesCount = this.rules.length; i < rulesCount; i++) {\r\n var rule = this.rules[i];\r\n var xValue = rule.getter(x);\r\n var yValue = rule.getter(y);\r\n var compare = rule.compare || this._getDefaultCompare(rule.langParams);\r\n var compareResult = compare(xValue, yValue);\r\n if (compareResult) {\r\n return rule.desc ? -compareResult : compareResult\r\n }\r\n }\r\n return xIndex - yIndex\r\n }\r\n});\r\nvar compileCriteria = function() {\r\n var langParams = {};\r\n var _toComparable = value => toComparable(value, false, langParams);\r\n var toString = function(value) {\r\n var _langParams;\r\n return isDefined(value) ? null !== (_langParams = langParams) && void 0 !== _langParams && _langParams.locale ? value.toLocaleString(langParams.locale) : value.toString() : \"\"\r\n };\r\n\r\n function compileEquals(getter, value, negate) {\r\n return function(obj) {\r\n obj = _toComparable(getter(obj));\r\n var result = function(value) {\r\n return \"\" === value || 0 === value || false === value\r\n }(value) ? obj === value : obj == value;\r\n if (negate) {\r\n result = !result\r\n }\r\n return result\r\n }\r\n }\r\n return function(crit, options) {\r\n langParams = options || {};\r\n if (isFunction(crit)) {\r\n return crit\r\n }\r\n if (isGroupCriterion(crit)) {\r\n return function(crit) {\r\n var ops = [];\r\n var isConjunctiveOperator = false;\r\n var isConjunctiveNextOperator = false;\r\n each(crit, (function() {\r\n if (Array.isArray(this) || isFunction(this)) {\r\n if (ops.length > 1 && isConjunctiveOperator !== isConjunctiveNextOperator) {\r\n throw new errors.Error(\"E4019\")\r\n }\r\n ops.push(compileCriteria(this, langParams));\r\n isConjunctiveOperator = isConjunctiveNextOperator;\r\n isConjunctiveNextOperator = true\r\n } else {\r\n isConjunctiveNextOperator = isConjunctiveOperatorChecker(this)\r\n }\r\n }));\r\n return function(d) {\r\n var result = isConjunctiveOperator;\r\n for (var i = 0; i < ops.length; i++) {\r\n if (ops[i](d) !== isConjunctiveOperator) {\r\n result = !isConjunctiveOperator;\r\n break\r\n }\r\n }\r\n return result\r\n }\r\n }(crit)\r\n }\r\n if (isUnaryOperation(crit)) {\r\n return function(crit) {\r\n var op = crit[0];\r\n var criteria = compileCriteria(crit[1], langParams);\r\n if (\"!\" === op) {\r\n return function(obj) {\r\n return !criteria(obj)\r\n }\r\n }\r\n throw errors.Error(\"E4003\", op)\r\n }(crit)\r\n }\r\n return function(crit) {\r\n crit = normalizeBinaryCriterion(crit);\r\n var getter = compileGetter(crit[0]);\r\n var op = crit[1];\r\n var value = crit[2];\r\n value = _toComparable(value);\r\n var compare = (obj, operatorFn) => {\r\n obj = _toComparable(getter(obj));\r\n return (null == value || null == obj) && value !== obj ? false : operatorFn(obj, value)\r\n };\r\n switch (op.toLowerCase()) {\r\n case \"=\":\r\n return compileEquals(getter, value);\r\n case \"<>\":\r\n return compileEquals(getter, value, true);\r\n case \">\":\r\n return obj => compare(obj, (a, b) => a > b);\r\n case \"<\":\r\n return obj => compare(obj, (a, b) => a < b);\r\n case \">=\":\r\n return obj => compare(obj, (a, b) => a >= b);\r\n case \"<=\":\r\n return obj => compare(obj, (a, b) => a <= b);\r\n case \"startswith\":\r\n return function(obj) {\r\n return 0 === _toComparable(toString(getter(obj))).indexOf(value)\r\n };\r\n case \"endswith\":\r\n return function(obj) {\r\n var getterValue = _toComparable(toString(getter(obj)));\r\n var searchValue = toString(value);\r\n if (getterValue.length < searchValue.length) {\r\n return false\r\n }\r\n var index = getterValue.lastIndexOf(value);\r\n return -1 !== index && index === getterValue.length - value.length\r\n };\r\n case \"contains\":\r\n return function(obj) {\r\n return _toComparable(toString(getter(obj))).indexOf(value) > -1\r\n };\r\n case \"notcontains\":\r\n return function(obj) {\r\n return -1 === _toComparable(toString(getter(obj))).indexOf(value)\r\n }\r\n }\r\n throw errors.Error(\"E4003\", op)\r\n }(crit)\r\n }\r\n}();\r\nvar FilterIterator = WrappedIterator.inherit({\r\n ctor: function(iter, criteria) {\r\n this.callBase(iter);\r\n this.langParams = iter.langParams;\r\n this.criteria = compileCriteria(criteria, this.langParams)\r\n },\r\n next: function() {\r\n while (this.iter.next()) {\r\n if (this.criteria(this.current())) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n});\r\nvar GroupIterator = Iterator.inherit({\r\n ctor: function(iter, getter) {\r\n this.iter = iter;\r\n this.getter = getter\r\n },\r\n next: function() {\r\n this._ensureGrouped();\r\n return this.groupedIter.next()\r\n },\r\n current: function() {\r\n this._ensureGrouped();\r\n return this.groupedIter.current()\r\n },\r\n reset: function() {\r\n delete this.groupedIter\r\n },\r\n countable: function() {\r\n return !!this.groupedIter\r\n },\r\n count: function() {\r\n return this.groupedIter.count()\r\n },\r\n _ensureGrouped: function() {\r\n if (this.groupedIter) {\r\n return\r\n }\r\n var hash = {};\r\n var keys = [];\r\n var iter = this.iter;\r\n var getter = compileGetter(this.getter);\r\n iter.reset();\r\n while (iter.next()) {\r\n var current = iter.current();\r\n var key = getter(current);\r\n if (key in hash) {\r\n hash[key].push(current)\r\n } else {\r\n hash[key] = [current];\r\n keys.push(key)\r\n }\r\n }\r\n this.groupedIter = new ArrayIterator(map(keys, (function(key) {\r\n return {\r\n key: key,\r\n items: hash[key]\r\n }\r\n })))\r\n }\r\n});\r\nvar SelectIterator = WrappedIterator.inherit({\r\n ctor: function(iter, getter) {\r\n this.callBase(iter);\r\n this.getter = compileGetter(getter)\r\n },\r\n current: function() {\r\n return this.getter(this.callBase())\r\n },\r\n countable: function() {\r\n return this.iter.countable()\r\n },\r\n count: function() {\r\n return this.iter.count()\r\n }\r\n});\r\nvar SliceIterator = WrappedIterator.inherit({\r\n ctor: function(iter, skip, take) {\r\n this.callBase(iter);\r\n this.skip = Math.max(0, skip);\r\n this.take = Math.max(0, take);\r\n this.pos = 0\r\n },\r\n next: function() {\r\n if (this.pos >= this.skip + this.take) {\r\n return false\r\n }\r\n while (this.pos < this.skip && this.iter.next()) {\r\n this.pos++\r\n }\r\n this.pos++;\r\n return this.iter.next()\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this.pos = 0\r\n },\r\n countable: function() {\r\n return this.iter.countable()\r\n },\r\n count: function() {\r\n return Math.min(this.iter.count() - this.skip, this.take)\r\n }\r\n});\r\nvar arrayQueryImpl = function arrayQueryImpl(iter, queryOptions) {\r\n queryOptions = queryOptions || {};\r\n if (!(iter instanceof Iterator)) {\r\n iter = new ArrayIterator(iter)\r\n }\r\n if (queryOptions.langParams) {\r\n iter.langParams = queryOptions.langParams\r\n }\r\n var handleError = function(error) {\r\n var handler = queryOptions.errorHandler;\r\n if (handler) {\r\n handler(error)\r\n }\r\n handleDataError(error)\r\n };\r\n var aggregateCore = function(aggregator) {\r\n var d = (new Deferred).fail(handleError);\r\n var seed;\r\n var step = aggregator.step;\r\n var finalize = aggregator.finalize;\r\n try {\r\n iter.reset();\r\n if (\"seed\" in aggregator) {\r\n seed = aggregator.seed\r\n } else {\r\n seed = iter.next() ? iter.current() : NaN\r\n }\r\n var accumulator = seed;\r\n while (iter.next()) {\r\n accumulator = step(accumulator, iter.current())\r\n }\r\n d.resolve(finalize ? finalize(accumulator) : accumulator)\r\n } catch (x) {\r\n d.reject(x)\r\n }\r\n return d.promise()\r\n };\r\n var standardAggregate = function(name) {\r\n return aggregateCore(aggregators[name])\r\n };\r\n var select = function(getter) {\r\n if (!isFunction(getter) && !Array.isArray(getter)) {\r\n getter = [].slice.call(arguments)\r\n }\r\n return chainQuery(new SelectIterator(iter, getter))\r\n };\r\n var selectProp = function(name) {\r\n return select(compileGetter(name))\r\n };\r\n\r\n function chainQuery(iter) {\r\n return arrayQueryImpl(iter, queryOptions)\r\n }\r\n return {\r\n toArray: function() {\r\n return iter.toArray()\r\n },\r\n enumerate: function() {\r\n var d = (new Deferred).fail(handleError);\r\n try {\r\n d.resolve(iter.toArray())\r\n } catch (x) {\r\n d.reject(x)\r\n }\r\n return d.promise()\r\n },\r\n setLangParams(options) {\r\n iter.langParams = options\r\n },\r\n sortBy: function(getter, desc, compare) {\r\n return chainQuery(new SortIterator(iter, getter, desc, compare))\r\n },\r\n thenBy: function(getter, desc, compare) {\r\n if (iter instanceof SortIterator) {\r\n return chainQuery(iter.thenBy(getter, desc, compare))\r\n }\r\n throw errors.Error(\"E4004\")\r\n },\r\n filter: function(criteria) {\r\n if (!Array.isArray(criteria)) {\r\n criteria = [].slice.call(arguments)\r\n }\r\n return chainQuery(new FilterIterator(iter, criteria))\r\n },\r\n slice: function(skip, take) {\r\n if (void 0 === take) {\r\n take = Number.MAX_VALUE\r\n }\r\n return chainQuery(new SliceIterator(iter, skip, take))\r\n },\r\n select: select,\r\n groupBy: function(getter) {\r\n return chainQuery(new GroupIterator(iter, getter))\r\n },\r\n aggregate: function(seed, step, finalize) {\r\n if (arguments.length < 2) {\r\n return aggregateCore({\r\n step: arguments[0]\r\n })\r\n }\r\n return aggregateCore({\r\n seed: seed,\r\n step: step,\r\n finalize: finalize\r\n })\r\n },\r\n count: function() {\r\n if (iter.countable()) {\r\n var d = (new Deferred).fail(handleError);\r\n try {\r\n d.resolve(iter.count())\r\n } catch (x) {\r\n d.reject(x)\r\n }\r\n return d.promise()\r\n }\r\n return standardAggregate(\"count\")\r\n },\r\n sum: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).sum()\r\n }\r\n return standardAggregate(\"sum\")\r\n },\r\n min: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).min()\r\n }\r\n return standardAggregate(\"min\")\r\n },\r\n max: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).max()\r\n }\r\n return standardAggregate(\"max\")\r\n },\r\n avg: function(getter) {\r\n if (getter) {\r\n return selectProp(getter).avg()\r\n }\r\n return standardAggregate(\"avg\")\r\n }\r\n }\r\n};\r\nexport default arrayQueryImpl;\r\n","/**\r\n * DevExtreme (esm/data/store_helper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport arrayQuery from \"./array_query\";\r\nimport {\r\n normalizeSortingInfo\r\n} from \"./utils\";\r\n\r\nfunction multiLevelGroup(query, groupInfo) {\r\n query = query.groupBy(groupInfo[0].selector);\r\n if (groupInfo.length > 1) {\r\n query = query.select((function(g) {\r\n return extend({}, g, {\r\n items: multiLevelGroup(arrayQuery(g.items), groupInfo.slice(1)).toArray()\r\n })\r\n }))\r\n }\r\n return query\r\n}\r\n\r\nfunction arrangeSortingInfo(groupInfo, sortInfo) {\r\n var filteredGroup = [];\r\n each(groupInfo, (function(_, group) {\r\n var collision = grep(sortInfo, (function(sort) {\r\n return group.selector === sort.selector\r\n }));\r\n if (collision.length < 1) {\r\n filteredGroup.push(group)\r\n }\r\n }));\r\n return filteredGroup.concat(sortInfo)\r\n}\r\n\r\nfunction queryByOptions(query, options, isCountQuery) {\r\n var _options;\r\n options = options || {};\r\n var filter = options.filter;\r\n if (null !== (_options = options) && void 0 !== _options && _options.langParams) {\r\n var _query$setLangParams, _query;\r\n null === (_query$setLangParams = (_query = query).setLangParams) || void 0 === _query$setLangParams ? void 0 : _query$setLangParams.call(_query, options.langParams)\r\n }\r\n if (filter) {\r\n query = query.filter(filter)\r\n }\r\n if (isCountQuery) {\r\n return query\r\n }\r\n var sort = options.sort;\r\n var select = options.select;\r\n var group = options.group;\r\n var skip = options.skip;\r\n var take = options.take;\r\n if (group) {\r\n group = normalizeSortingInfo(group);\r\n group.keepInitialKeyOrder = !!options.group.keepInitialKeyOrder\r\n }\r\n if (sort || group) {\r\n sort = normalizeSortingInfo(sort || []);\r\n if (group && !group.keepInitialKeyOrder) {\r\n sort = arrangeSortingInfo(group, sort)\r\n }\r\n each(sort, (function(index) {\r\n query = query[index ? \"thenBy\" : \"sortBy\"](this.selector, this.desc, this.compare)\r\n }))\r\n }\r\n if (select) {\r\n query = query.select(select)\r\n }\r\n if (group) {\r\n query = multiLevelGroup(query, group)\r\n }\r\n if (take || skip) {\r\n query = query.slice(skip || 0, take)\r\n }\r\n return query\r\n}\r\nexport default {\r\n multiLevelGroup: multiLevelGroup,\r\n arrangeSortingInfo: arrangeSortingInfo,\r\n queryByOptions: queryByOptions\r\n};\r\n","/**\r\n * DevExtreme (esm/data/abstract_store.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport Class from \"../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n EventsStrategy\r\n} from \"../core/events_strategy\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n errors,\r\n handleError\r\n} from \"./errors\";\r\nimport {\r\n processRequestResultLock\r\n} from \"./utils\";\r\nimport {\r\n compileGetter\r\n} from \"../core/utils/data\";\r\nimport storeHelper from \"./store_helper\";\r\nvar queryByOptions = storeHelper.queryByOptions;\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport {\r\n isEmptyObject\r\n} from \"../core/utils/type\";\r\nvar storeImpl = {};\r\nvar Store = Class.inherit({\r\n _langParams: {},\r\n ctor: function(options) {\r\n var that = this;\r\n options = options || {};\r\n this._eventsStrategy = new EventsStrategy(this);\r\n each([\"onLoaded\", \"onLoading\", \"onInserted\", \"onInserting\", \"onUpdated\", \"onUpdating\", \"onPush\", \"onRemoved\", \"onRemoving\", \"onModified\", \"onModifying\"], (function(_, optionName) {\r\n if (optionName in options) {\r\n that.on(optionName.slice(2).toLowerCase(), options[optionName])\r\n }\r\n }));\r\n this._key = options.key;\r\n this._errorHandler = options.errorHandler;\r\n this._useDefaultSearch = true\r\n },\r\n _clearCache: noop,\r\n _customLoadOptions: function() {\r\n return null\r\n },\r\n key: function() {\r\n return this._key\r\n },\r\n keyOf: function(obj) {\r\n if (!this._keyGetter) {\r\n this._keyGetter = compileGetter(this.key())\r\n }\r\n return this._keyGetter(obj)\r\n },\r\n _requireKey: function() {\r\n if (!this.key()) {\r\n throw errors.Error(\"E4005\")\r\n }\r\n },\r\n load: function(options) {\r\n var that = this;\r\n options = options || {};\r\n this._eventsStrategy.fireEvent(\"loading\", [options]);\r\n return this._withLock(this._loadImpl(options)).done((function(result) {\r\n that._eventsStrategy.fireEvent(\"loaded\", [result, options])\r\n }))\r\n },\r\n _loadImpl: function(options) {\r\n if (!isEmptyObject(this._langParams)) {\r\n options = options || {};\r\n options._langParams = _extends({}, this._langParams, options._langParams)\r\n }\r\n return queryByOptions(this.createQuery(options), options).enumerate()\r\n },\r\n _withLock: function(task) {\r\n var result = new Deferred;\r\n task.done((function() {\r\n var that = this;\r\n var args = arguments;\r\n processRequestResultLock.promise().done((function() {\r\n result.resolveWith(that, args)\r\n }))\r\n })).fail((function() {\r\n result.rejectWith(this, arguments)\r\n }));\r\n return result\r\n },\r\n createQuery: abstract,\r\n totalCount: function(options) {\r\n return this._totalCountImpl(options)\r\n },\r\n _totalCountImpl: function(options) {\r\n return queryByOptions(this.createQuery(options), options, true).count()\r\n },\r\n byKey: function(key, extraOptions) {\r\n return this._addFailHandlers(this._withLock(this._byKeyImpl(key, extraOptions)))\r\n },\r\n _byKeyImpl: abstract,\r\n insert: function(values) {\r\n var that = this;\r\n that._eventsStrategy.fireEvent(\"modifying\");\r\n that._eventsStrategy.fireEvent(\"inserting\", [values]);\r\n return that._addFailHandlers(that._insertImpl(values).done((function(callbackValues, callbackKey) {\r\n that._eventsStrategy.fireEvent(\"inserted\", [callbackValues, callbackKey]);\r\n that._eventsStrategy.fireEvent(\"modified\")\r\n })))\r\n },\r\n _insertImpl: abstract,\r\n update: function(key, values) {\r\n var that = this;\r\n that._eventsStrategy.fireEvent(\"modifying\");\r\n that._eventsStrategy.fireEvent(\"updating\", [key, values]);\r\n return that._addFailHandlers(that._updateImpl(key, values).done((function() {\r\n that._eventsStrategy.fireEvent(\"updated\", [key, values]);\r\n that._eventsStrategy.fireEvent(\"modified\")\r\n })))\r\n },\r\n _updateImpl: abstract,\r\n push: function(changes) {\r\n var beforePushArgs = {\r\n changes: changes,\r\n waitFor: []\r\n };\r\n this._eventsStrategy.fireEvent(\"beforePushAggregation\", [beforePushArgs]);\r\n when(...beforePushArgs.waitFor).done(() => {\r\n this._pushImpl(changes);\r\n this._eventsStrategy.fireEvent(\"beforePush\", [{\r\n changes: changes\r\n }]);\r\n this._eventsStrategy.fireEvent(\"push\", [changes])\r\n })\r\n },\r\n _pushImpl: noop,\r\n remove: function(key) {\r\n var that = this;\r\n that._eventsStrategy.fireEvent(\"modifying\");\r\n that._eventsStrategy.fireEvent(\"removing\", [key]);\r\n return that._addFailHandlers(that._removeImpl(key).done((function(callbackKey) {\r\n that._eventsStrategy.fireEvent(\"removed\", [callbackKey]);\r\n that._eventsStrategy.fireEvent(\"modified\")\r\n })))\r\n },\r\n _removeImpl: abstract,\r\n _addFailHandlers: function(deferred) {\r\n return deferred.fail(this._errorHandler).fail(handleError)\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\nStore.create = function(alias, options) {\r\n if (!(alias in storeImpl)) {\r\n throw errors.Error(\"E4020\", alias)\r\n }\r\n return new storeImpl[alias](options)\r\n};\r\nStore.registerClass = function(type, alias) {\r\n if (alias) {\r\n storeImpl[alias] = type\r\n }\r\n return type\r\n};\r\nStore.inherit = function(inheritor) {\r\n return function(members, alias) {\r\n var type = inheritor.apply(this, [members]);\r\n Store.registerClass(type, alias);\r\n return type\r\n }\r\n}(Store.inherit);\r\nexport default Store;\r\n","/**\r\n * DevExtreme (esm/data/custom_store.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n keysEqual,\r\n XHR_ERROR_UNLOAD,\r\n errorMessageFromXhr as errorMessageFromXhrUtility\r\n} from \"./utils\";\r\nimport {\r\n applyBatch\r\n} from \"./array_utils\";\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport config from \"../core/config\";\r\nimport {\r\n errors\r\n} from \"./errors\";\r\nimport Store from \"./abstract_store\";\r\nimport arrayQuery from \"./array_query\";\r\nimport storeHelper from \"./store_helper\";\r\nimport {\r\n Deferred,\r\n when,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nvar TOTAL_COUNT = \"totalCount\";\r\nvar LOAD = \"load\";\r\nvar BY_KEY = \"byKey\";\r\nvar INSERT = \"insert\";\r\nvar UPDATE = \"update\";\r\nvar REMOVE = \"remove\";\r\n\r\nfunction isPromise(obj) {\r\n return obj && isFunction(obj.then)\r\n}\r\n\r\nfunction trivialPromise(value) {\r\n return (new Deferred).resolve(value).promise()\r\n}\r\n\r\nfunction ensureRequiredFuncOption(name, obj) {\r\n if (!isFunction(obj)) {\r\n throw errors.Error(\"E4011\", name)\r\n }\r\n}\r\n\r\nfunction throwInvalidUserFuncResult(name) {\r\n throw errors.Error(\"E4012\", name)\r\n}\r\n\r\nfunction createUserFuncFailureHandler(pendingDeferred) {\r\n function errorMessageFromXhr(promiseArguments) {\r\n var xhr = promiseArguments[0];\r\n var textStatus = promiseArguments[1];\r\n if (!xhr || !xhr.getResponseHeader) {\r\n return null\r\n }\r\n return errorMessageFromXhrUtility(xhr, textStatus)\r\n }\r\n return function(arg) {\r\n var error;\r\n if (arg instanceof Error) {\r\n error = arg\r\n } else {\r\n error = new Error(errorMessageFromXhr(arguments) || arg && String(arg) || \"Unknown error\")\r\n }\r\n if (error.message !== XHR_ERROR_UNLOAD) {\r\n pendingDeferred.reject(error)\r\n }\r\n }\r\n}\r\n\r\nfunction invokeUserLoad(store, options) {\r\n var userFunc = store._loadFunc;\r\n var userResult;\r\n ensureRequiredFuncOption(LOAD, userFunc);\r\n userResult = userFunc.apply(store, [options]);\r\n if (Array.isArray(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n } else if (null === userResult || void 0 === userResult) {\r\n userResult = trivialPromise([])\r\n } else if (!isPromise(userResult)) {\r\n throwInvalidUserFuncResult(LOAD)\r\n }\r\n return fromPromise(userResult)\r\n}\r\n\r\nfunction invokeUserTotalCountFunc(store, options) {\r\n var userFunc = store._totalCountFunc;\r\n var userResult;\r\n if (!isFunction(userFunc)) {\r\n throw errors.Error(\"E4021\")\r\n }\r\n userResult = userFunc.apply(store, [options]);\r\n if (!isPromise(userResult)) {\r\n userResult = Number(userResult);\r\n if (!isFinite(userResult)) {\r\n throwInvalidUserFuncResult(TOTAL_COUNT)\r\n }\r\n userResult = trivialPromise(userResult)\r\n }\r\n return fromPromise(userResult)\r\n}\r\n\r\nfunction invokeUserByKeyFunc(store, key, extraOptions) {\r\n var userFunc = store._byKeyFunc;\r\n var userResult;\r\n ensureRequiredFuncOption(BY_KEY, userFunc);\r\n userResult = userFunc.apply(store, [key, extraOptions]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n }\r\n return fromPromise(userResult)\r\n}\r\n\r\nfunction runRawLoad(pendingDeferred, store, userFuncOptions, continuation) {\r\n if (store.__rawData) {\r\n continuation(store.__rawData)\r\n } else {\r\n var loadPromise = store.__rawDataPromise || invokeUserLoad(store, userFuncOptions);\r\n if (store._cacheRawData) {\r\n store.__rawDataPromise = loadPromise\r\n }\r\n loadPromise.always((function() {\r\n delete store.__rawDataPromise\r\n })).done((function(rawData) {\r\n if (store._cacheRawData) {\r\n store.__rawData = rawData\r\n }\r\n continuation(rawData)\r\n })).fail(createUserFuncFailureHandler(pendingDeferred))\r\n }\r\n}\r\n\r\nfunction runRawLoadWithQuery(pendingDeferred, store, options, countOnly) {\r\n options = options || {};\r\n var userFuncOptions = {};\r\n if (\"userData\" in options) {\r\n userFuncOptions.userData = options.userData\r\n }\r\n runRawLoad(pendingDeferred, store, userFuncOptions, (function(rawData) {\r\n var rawDataQuery = arrayQuery(rawData, {\r\n errorHandler: store._errorHandler\r\n });\r\n var itemsQuery;\r\n var totalCountQuery;\r\n var waitList = [];\r\n var items;\r\n var totalCount;\r\n if (!countOnly) {\r\n itemsQuery = storeHelper.queryByOptions(rawDataQuery, options);\r\n if (itemsQuery === rawDataQuery) {\r\n items = rawData.slice(0)\r\n } else {\r\n waitList.push(itemsQuery.enumerate().done((function(asyncResult) {\r\n items = asyncResult\r\n })))\r\n }\r\n }\r\n if (options.requireTotalCount || countOnly) {\r\n totalCountQuery = storeHelper.queryByOptions(rawDataQuery, options, true);\r\n if (totalCountQuery === rawDataQuery) {\r\n totalCount = rawData.length\r\n } else {\r\n waitList.push(totalCountQuery.count().done((function(asyncResult) {\r\n totalCount = asyncResult\r\n })))\r\n }\r\n }\r\n when.apply($, waitList).done((function() {\r\n if (countOnly) {\r\n pendingDeferred.resolve(totalCount)\r\n } else if (options.requireTotalCount) {\r\n pendingDeferred.resolve(items, {\r\n totalCount: totalCount\r\n })\r\n } else {\r\n pendingDeferred.resolve(items)\r\n }\r\n })).fail((function(x) {\r\n pendingDeferred.reject(x)\r\n }))\r\n }))\r\n}\r\n\r\nfunction runRawLoadWithKey(pendingDeferred, store, key) {\r\n runRawLoad(pendingDeferred, store, {}, (function(rawData) {\r\n var keyExpr = store.key();\r\n var item;\r\n for (var i = 0, len = rawData.length; i < len; i++) {\r\n item = rawData[i];\r\n if (keysEqual(keyExpr, store.keyOf(rawData[i]), key)) {\r\n pendingDeferred.resolve(item);\r\n return\r\n }\r\n }\r\n pendingDeferred.reject(errors.Error(\"E4009\"))\r\n }))\r\n}\r\nvar CustomStore = Store.inherit({\r\n ctor: function(options) {\r\n options = options || {};\r\n this.callBase(options);\r\n this._useDefaultSearch = !!options.useDefaultSearch || \"raw\" === options.loadMode;\r\n this._loadMode = options.loadMode;\r\n this._cacheRawData = false !== options.cacheRawData;\r\n this._loadFunc = options[LOAD];\r\n this._totalCountFunc = options[TOTAL_COUNT];\r\n this._byKeyFunc = options[BY_KEY];\r\n this._insertFunc = options[INSERT];\r\n this._updateFunc = options[UPDATE];\r\n this._removeFunc = options[REMOVE]\r\n },\r\n _clearCache() {\r\n delete this.__rawData\r\n },\r\n createQuery: function() {\r\n throw errors.Error(\"E4010\")\r\n },\r\n clearRawDataCache: function() {\r\n this._clearCache()\r\n },\r\n _totalCountImpl: function(options) {\r\n var d = new Deferred;\r\n if (\"raw\" === this._loadMode && !this._totalCountFunc) {\r\n runRawLoadWithQuery(d, this, options, true)\r\n } else {\r\n invokeUserTotalCountFunc(this, options).done((function(count) {\r\n d.resolve(Number(count))\r\n })).fail(createUserFuncFailureHandler(d));\r\n d = this._addFailHandlers(d)\r\n }\r\n return d.promise()\r\n },\r\n _pushImpl: function(changes) {\r\n if (this.__rawData) {\r\n applyBatch({\r\n keyInfo: this,\r\n data: this.__rawData,\r\n changes: changes\r\n })\r\n }\r\n },\r\n _loadImpl: function(options) {\r\n var d = new Deferred;\r\n if (\"raw\" === this._loadMode) {\r\n runRawLoadWithQuery(d, this, options, false)\r\n } else {\r\n invokeUserLoad(this, options).done((function(data, extra) {\r\n d.resolve(data, extra)\r\n })).fail(createUserFuncFailureHandler(d));\r\n d = this._addFailHandlers(d)\r\n }\r\n return d.promise()\r\n },\r\n _byKeyImpl: function(key, extraOptions) {\r\n var d = new Deferred;\r\n if (this._byKeyViaLoad()) {\r\n this._requireKey();\r\n runRawLoadWithKey(d, this, key)\r\n } else {\r\n invokeUserByKeyFunc(this, key, extraOptions).done((function(obj) {\r\n d.resolve(obj)\r\n })).fail(createUserFuncFailureHandler(d))\r\n }\r\n return d.promise()\r\n },\r\n _byKeyViaLoad: function() {\r\n return \"raw\" === this._loadMode && !this._byKeyFunc\r\n },\r\n _insertImpl: function(values) {\r\n var that = this;\r\n var userFunc = that._insertFunc;\r\n var userResult;\r\n var d = new Deferred;\r\n ensureRequiredFuncOption(INSERT, userFunc);\r\n userResult = userFunc.apply(that, [values]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n }\r\n fromPromise(userResult).done((function(serverResponse) {\r\n if (config().useLegacyStoreResult) {\r\n d.resolve(values, serverResponse)\r\n } else {\r\n d.resolve(serverResponse || values, that.keyOf(serverResponse))\r\n }\r\n })).fail(createUserFuncFailureHandler(d));\r\n return d.promise()\r\n },\r\n _updateImpl: function(key, values) {\r\n var userFunc = this._updateFunc;\r\n var userResult;\r\n var d = new Deferred;\r\n ensureRequiredFuncOption(UPDATE, userFunc);\r\n userResult = userFunc.apply(this, [key, values]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise(userResult)\r\n }\r\n fromPromise(userResult).done((function(serverResponse) {\r\n if (config().useLegacyStoreResult) {\r\n d.resolve(key, values)\r\n } else {\r\n d.resolve(serverResponse || values, key)\r\n }\r\n })).fail(createUserFuncFailureHandler(d));\r\n return d.promise()\r\n },\r\n _removeImpl: function(key) {\r\n var userFunc = this._removeFunc;\r\n var userResult;\r\n var d = new Deferred;\r\n ensureRequiredFuncOption(REMOVE, userFunc);\r\n userResult = userFunc.apply(this, [key]);\r\n if (!isPromise(userResult)) {\r\n userResult = trivialPromise()\r\n }\r\n fromPromise(userResult).done((function() {\r\n d.resolve(key)\r\n })).fail(createUserFuncFailureHandler(d));\r\n return d.promise()\r\n }\r\n});\r\nexport default CustomStore;\r\n","/**\r\n * DevExtreme (esm/core/utils/queue.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../errors\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\n\r\nfunction createQueue(discardPendingTasks) {\r\n var _tasks = [];\r\n var _busy = false;\r\n\r\n function exec() {\r\n while (_tasks.length) {\r\n _busy = true;\r\n var task = _tasks.shift();\r\n var result = task();\r\n if (void 0 === result) {\r\n continue\r\n }\r\n if (result.then) {\r\n when(result).always(exec);\r\n return\r\n }\r\n throw errors.Error(\"E0015\")\r\n }\r\n _busy = false\r\n }\r\n return {\r\n add: function(task, removeTaskCallback) {\r\n if (!discardPendingTasks) {\r\n _tasks.push(task)\r\n } else {\r\n if (_tasks[0] && removeTaskCallback) {\r\n removeTaskCallback(_tasks[0])\r\n }\r\n _tasks = [task]\r\n }\r\n if (!_busy) {\r\n exec()\r\n }\r\n },\r\n busy: function() {\r\n return _busy\r\n }\r\n }\r\n}\r\nexport {\r\n createQueue as create\r\n};\r\nexport var enqueue = createQueue().add;\r\n","/**\r\n * DevExtreme (esm/core/http_request.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"./utils/window\";\r\nvar window = getWindow();\r\nimport injector from \"./utils/dependency_injector\";\r\nvar nativeXMLHttpRequest = {\r\n getXhr: function() {\r\n return new window.XMLHttpRequest\r\n }\r\n};\r\nexport default injector(nativeXMLHttpRequest);\r\n","/**\r\n * DevExtreme (esm/core/utils/ajax.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred\r\n} from \"./deferred\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport httpRequest from \"../../core/http_request\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n extendFromObject\r\n} from \"./extend\";\r\nimport {\r\n isDefined\r\n} from \"./type\";\r\nimport injector from \"./dependency_injector\";\r\nvar SUCCESS = \"success\";\r\nvar ERROR = \"error\";\r\nvar TIMEOUT = \"timeout\";\r\nvar NO_CONTENT = \"nocontent\";\r\nvar PARSER_ERROR = \"parsererror\";\r\nvar isStatusSuccess = function(status) {\r\n return 200 <= status && status < 300\r\n};\r\nvar hasContent = function(status) {\r\n return 204 !== status\r\n};\r\nvar paramsConvert = function(params) {\r\n var result = [];\r\n for (var name in params) {\r\n var value = params[name];\r\n if (void 0 === value) {\r\n continue\r\n }\r\n if (null === value) {\r\n value = \"\"\r\n }\r\n if (\"function\" === typeof value) {\r\n value = value()\r\n }\r\n result.push(encodeURIComponent(name) + \"=\" + encodeURIComponent(value))\r\n }\r\n return result.join(\"&\")\r\n};\r\nvar createScript = function(options) {\r\n var script = domAdapter.createElement(\"script\");\r\n for (var name in options) {\r\n script[name] = options[name]\r\n }\r\n return script\r\n};\r\nvar removeScript = function(scriptNode) {\r\n scriptNode.parentNode.removeChild(scriptNode)\r\n};\r\nvar appendToHead = function(element) {\r\n return domAdapter.getHead().appendChild(element)\r\n};\r\nvar evalScript = function(code) {\r\n var script = createScript({\r\n text: code\r\n });\r\n appendToHead(script);\r\n removeScript(script)\r\n};\r\nvar evalCrossDomainScript = function(url) {\r\n var script = createScript({\r\n src: url\r\n });\r\n return new Promise((function(resolve, reject) {\r\n var events = {\r\n load: resolve,\r\n error: reject\r\n };\r\n var loadHandler = function(e) {\r\n events[e.type]();\r\n removeScript(script)\r\n };\r\n for (var event in events) {\r\n domAdapter.listen(script, event, loadHandler)\r\n }\r\n appendToHead(script)\r\n }))\r\n};\r\nvar getAcceptHeader = function(options) {\r\n var dataType = options.dataType || \"*\";\r\n var scriptAccept = \"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript\";\r\n var accepts = {\r\n \"*\": \"*/*\",\r\n text: \"text/plain\",\r\n html: \"text/html\",\r\n xml: \"application/xml, text/xml\",\r\n json: \"application/json, text/javascript\",\r\n jsonp: scriptAccept,\r\n script: scriptAccept\r\n };\r\n extendFromObject(accepts, options.accepts, true);\r\n return accepts[dataType] ? accepts[dataType] + (\"*\" !== dataType ? \", */*; q=0.01\" : \"\") : accepts[\"*\"]\r\n};\r\nvar getContentTypeHeader = function(options) {\r\n var defaultContentType;\r\n if (options.data && !options.upload && \"GET\" !== getMethod(options)) {\r\n defaultContentType = \"application/x-www-form-urlencoded;charset=utf-8\"\r\n }\r\n return options.contentType || defaultContentType\r\n};\r\nvar getDataFromResponse = function(xhr) {\r\n return xhr.responseType && \"text\" !== xhr.responseType || \"string\" !== typeof xhr.responseText ? xhr.response : xhr.responseText\r\n};\r\nvar postProcess = function(deferred, xhr, dataType) {\r\n var data = getDataFromResponse(xhr);\r\n switch (dataType) {\r\n case \"jsonp\":\r\n evalScript(data);\r\n break;\r\n case \"script\":\r\n evalScript(data);\r\n deferred.resolve(data, SUCCESS, xhr);\r\n break;\r\n case \"json\":\r\n try {\r\n deferred.resolve(JSON.parse(data), SUCCESS, xhr)\r\n } catch (e) {\r\n deferred.reject(xhr, PARSER_ERROR, e)\r\n }\r\n break;\r\n default:\r\n deferred.resolve(data, SUCCESS, xhr)\r\n }\r\n};\r\nvar isCrossDomain = function(url) {\r\n if (!hasWindow()) {\r\n return true\r\n }\r\n var crossDomain = false;\r\n var originAnchor = domAdapter.createElement(\"a\");\r\n var urlAnchor = domAdapter.createElement(\"a\");\r\n originAnchor.href = window.location.href;\r\n try {\r\n urlAnchor.href = url;\r\n urlAnchor.href = urlAnchor.href;\r\n crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !== urlAnchor.protocol + \"//\" + urlAnchor.host\r\n } catch (e) {\r\n crossDomain = true\r\n }\r\n return crossDomain\r\n};\r\nvar setHttpTimeout = function(timeout, xhr) {\r\n return timeout && setTimeout((function() {\r\n xhr.customStatus = TIMEOUT;\r\n xhr.abort()\r\n }), timeout)\r\n};\r\nvar getJsonpOptions = function(options) {\r\n if (\"jsonp\" === options.dataType) {\r\n var random = Math.random().toString().replace(/\\D/g, \"\");\r\n var callbackName = options.jsonpCallback || \"dxCallback\" + Date.now() + \"_\" + random;\r\n var callbackParameter = options.jsonp || \"callback\";\r\n options.data = options.data || {};\r\n options.data[callbackParameter] = callbackName;\r\n return callbackName\r\n }\r\n};\r\nvar getRequestOptions = function(options, headers) {\r\n var params = options.data;\r\n var paramsAlreadyString = \"string\" === typeof params;\r\n var url = options.url || window.location.href;\r\n if (!paramsAlreadyString && !options.cache) {\r\n params = params || {};\r\n params._ = Date.now()\r\n }\r\n if (params && !options.upload) {\r\n if (!paramsAlreadyString) {\r\n params = paramsConvert(params)\r\n }\r\n if (\"GET\" === getMethod(options)) {\r\n if (\"\" !== params) {\r\n url += (url.indexOf(\"?\") > -1 ? \"&\" : \"?\") + params\r\n }\r\n params = null\r\n } else if (headers[\"Content-Type\"] && headers[\"Content-Type\"].indexOf(\"application/x-www-form-urlencoded\") > -1) {\r\n params = params.replace(/%20/g, \"+\")\r\n }\r\n }\r\n return {\r\n url: url,\r\n parameters: params\r\n }\r\n};\r\n\r\nfunction getMethod(options) {\r\n return (options.method || \"GET\").toUpperCase()\r\n}\r\nvar getRequestHeaders = function(options) {\r\n var headers = options.headers || {};\r\n headers[\"Content-Type\"] = headers[\"Content-Type\"] || getContentTypeHeader(options);\r\n headers.Accept = headers.Accept || getAcceptHeader(options);\r\n if (!options.crossDomain && !headers[\"X-Requested-With\"]) {\r\n headers[\"X-Requested-With\"] = \"XMLHttpRequest\"\r\n }\r\n return headers\r\n};\r\nvar sendRequest = function(options) {\r\n var xhr = httpRequest.getXhr();\r\n var d = new Deferred;\r\n var result = d.promise();\r\n var async = isDefined(options.async) ? options.async : true;\r\n var dataType = options.dataType;\r\n var timeout = options.timeout || 0;\r\n var timeoutId;\r\n options.crossDomain = isCrossDomain(options.url);\r\n var needScriptEvaluation = \"jsonp\" === dataType || \"script\" === dataType;\r\n if (void 0 === options.cache) {\r\n options.cache = !needScriptEvaluation\r\n }\r\n var callbackName = getJsonpOptions(options);\r\n var headers = getRequestHeaders(options);\r\n var requestOptions = getRequestOptions(options, headers);\r\n var url = requestOptions.url;\r\n var parameters = requestOptions.parameters;\r\n if (callbackName) {\r\n window[callbackName] = function(data) {\r\n d.resolve(data, SUCCESS, xhr)\r\n }\r\n }\r\n if (options.crossDomain && needScriptEvaluation) {\r\n evalCrossDomainScript(url).then((function() {\r\n if (\"jsonp\" === dataType) {\r\n return\r\n }\r\n d.resolve(null, SUCCESS, xhr)\r\n }), (function() {\r\n d.reject(xhr, ERROR)\r\n }));\r\n return result\r\n }\r\n if (options.crossDomain && !(\"withCredentials\" in xhr)) {\r\n d.reject(xhr, ERROR);\r\n return result\r\n }\r\n xhr.open(getMethod(options), url, async, options.username, options.password);\r\n if (async) {\r\n xhr.timeout = timeout;\r\n timeoutId = setHttpTimeout(timeout, xhr)\r\n }\r\n xhr.onreadystatechange = function(e) {\r\n if (4 === xhr.readyState) {\r\n clearTimeout(timeoutId);\r\n if (isStatusSuccess(xhr.status)) {\r\n if (hasContent(xhr.status)) {\r\n postProcess(d, xhr, dataType)\r\n } else {\r\n d.resolve(null, NO_CONTENT, xhr)\r\n }\r\n } else {\r\n d.reject(xhr, xhr.customStatus || ERROR)\r\n }\r\n }\r\n };\r\n if (options.upload) {\r\n xhr.upload.onprogress = options.upload.onprogress;\r\n xhr.upload.onloadstart = options.upload.onloadstart;\r\n xhr.upload.onabort = options.upload.onabort\r\n }\r\n if (options.xhrFields) {\r\n for (var field in options.xhrFields) {\r\n xhr[field] = options.xhrFields[field]\r\n }\r\n }\r\n if (\"arraybuffer\" === options.responseType) {\r\n xhr.responseType = options.responseType\r\n }\r\n for (var name in headers) {\r\n if (Object.prototype.hasOwnProperty.call(headers, name) && isDefined(headers[name])) {\r\n xhr.setRequestHeader(name, headers[name])\r\n }\r\n }\r\n if (options.beforeSend) {\r\n options.beforeSend(xhr)\r\n }\r\n xhr.send(parameters);\r\n result.abort = function() {\r\n xhr.abort()\r\n };\r\n return result\r\n};\r\nexport default injector({\r\n sendRequest: sendRequest\r\n});\r\n","/**\r\n * DevExtreme (esm/data/query_adapters.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default {};\r\n","/**\r\n * DevExtreme (esm/data/remote_query.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport queryAdapters from \"./query_adapters\";\r\nimport {\r\n errors,\r\n handleError\r\n} from \"./errors\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport arrayQueryImpl from \"./array_query\";\r\nvar remoteQueryImpl = function remoteQueryImpl(url, queryOptions, tasks) {\r\n tasks = tasks || [];\r\n queryOptions = queryOptions || {};\r\n var createTask = function(name, args) {\r\n return {\r\n name: name,\r\n args: args\r\n }\r\n };\r\n var exec = function(executorTask) {\r\n var d = new Deferred;\r\n var _adapterFactory;\r\n var _adapter;\r\n var _taskQueue;\r\n var _currentTask;\r\n var _mergedSortArgs;\r\n var rejectWithNotify = function(error) {\r\n var handler = queryOptions.errorHandler;\r\n if (handler) {\r\n handler(error)\r\n }\r\n handleError(error);\r\n d.reject(error)\r\n };\r\n\r\n function mergeSortTask(task) {\r\n switch (task.name) {\r\n case \"sortBy\":\r\n _mergedSortArgs = [task.args];\r\n return true;\r\n case \"thenBy\":\r\n if (!_mergedSortArgs) {\r\n throw errors.Error(\"E4004\")\r\n }\r\n _mergedSortArgs.push(task.args);\r\n return true\r\n }\r\n return false\r\n }\r\n try {\r\n _adapterFactory = queryOptions.adapter;\r\n if (!isFunction(_adapterFactory)) {\r\n _adapterFactory = queryAdapters[_adapterFactory]\r\n }\r\n _adapter = _adapterFactory(queryOptions);\r\n _taskQueue = [].concat(tasks).concat(executorTask);\r\n var optimize = _adapter.optimize;\r\n if (optimize) {\r\n optimize(_taskQueue)\r\n }\r\n while (_taskQueue.length) {\r\n _currentTask = _taskQueue[0];\r\n if (!mergeSortTask(_currentTask)) {\r\n if (_mergedSortArgs) {\r\n _taskQueue.unshift(createTask(\"multiSort\", [_mergedSortArgs]));\r\n _mergedSortArgs = null;\r\n continue\r\n }\r\n if (\"enumerate\" !== String(_currentTask.name)) {\r\n if (!_adapter[_currentTask.name] || false === _adapter[_currentTask.name].apply(_adapter, _currentTask.args)) {\r\n break\r\n }\r\n }\r\n }\r\n _taskQueue.shift()\r\n }! function() {\r\n var head = _taskQueue[0];\r\n var unmergedTasks = [];\r\n if (head && \"multiSort\" === head.name) {\r\n _taskQueue.shift();\r\n each(head.args[0], (function() {\r\n unmergedTasks.push(createTask(unmergedTasks.length ? \"thenBy\" : \"sortBy\", this))\r\n }))\r\n }\r\n _taskQueue = unmergedTasks.concat(_taskQueue)\r\n }();\r\n _adapter.exec(url).done((function(result, extra) {\r\n if (!_taskQueue.length) {\r\n d.resolve(result, extra)\r\n } else {\r\n var clientChain = arrayQueryImpl(result, {\r\n errorHandler: queryOptions.errorHandler\r\n });\r\n each(_taskQueue, (function() {\r\n clientChain = clientChain[this.name].apply(clientChain, this.args)\r\n }));\r\n clientChain.done(d.resolve).fail(d.reject)\r\n }\r\n })).fail(rejectWithNotify)\r\n } catch (x) {\r\n rejectWithNotify(x)\r\n }\r\n return d.promise()\r\n };\r\n var query = {};\r\n each([\"sortBy\", \"thenBy\", \"filter\", \"slice\", \"select\", \"groupBy\"], (function() {\r\n var name = String(this);\r\n query[name] = function() {\r\n return remoteQueryImpl(url, queryOptions, tasks.concat(createTask(name, arguments)))\r\n }\r\n }));\r\n each([\"count\", \"min\", \"max\", \"sum\", \"avg\", \"aggregate\", \"enumerate\"], (function() {\r\n var name = String(this);\r\n query[name] = function() {\r\n return exec.call(this, createTask(name, arguments))\r\n }\r\n }));\r\n return query\r\n};\r\nexport default remoteQueryImpl;\r\n","/**\r\n * DevExtreme (esm/data/query_implementation.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport arrayQueryImpl from \"./array_query\";\r\nimport remoteQueryImpl from \"./remote_query\";\r\nexport var queryImpl = {\r\n array: arrayQueryImpl,\r\n remote: remoteQueryImpl\r\n};\r\n","/**\r\n * DevExtreme (esm/data/query.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n queryImpl\r\n} from \"./query_implementation\";\r\nvar query = function() {\r\n var impl = Array.isArray(arguments[0]) ? \"array\" : \"remote\";\r\n return queryImpl[impl].apply(this, arguments)\r\n};\r\nexport default query;\r\n","/**\r\n * DevExtreme (esm/data/array_store.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n rejectedPromise,\r\n trivialPromise\r\n} from \"./utils\";\r\nimport Query from \"./query\";\r\nimport {\r\n errors\r\n} from \"./errors\";\r\nimport Store from \"./abstract_store\";\r\nimport {\r\n indexByKey,\r\n insert,\r\n applyBatch,\r\n update,\r\n remove\r\n} from \"./array_utils\";\r\nvar ArrayStore = Store.inherit({\r\n ctor: function(options) {\r\n if (Array.isArray(options)) {\r\n options = {\r\n data: options\r\n }\r\n } else {\r\n options = options || {}\r\n }\r\n this.callBase(options);\r\n var initialArray = options.data;\r\n if (initialArray && !Array.isArray(initialArray)) {\r\n throw errors.Error(\"E4006\")\r\n }\r\n this._array = initialArray || []\r\n },\r\n createQuery: function() {\r\n return Query(this._array, {\r\n errorHandler: this._errorHandler\r\n })\r\n },\r\n _byKeyImpl: function(key) {\r\n var index = indexByKey(this, this._array, key);\r\n if (-1 === index) {\r\n return rejectedPromise(errors.Error(\"E4009\"))\r\n }\r\n return trivialPromise(this._array[index])\r\n },\r\n _insertImpl: function(values) {\r\n return insert(this, this._array, values)\r\n },\r\n _pushImpl: function(changes) {\r\n applyBatch({\r\n keyInfo: this,\r\n data: this._array,\r\n changes: changes\r\n })\r\n },\r\n _updateImpl: function(key, values) {\r\n return update(this, this._array, key, values)\r\n },\r\n _removeImpl: function(key) {\r\n return remove(this, this._array, key)\r\n },\r\n clear: function() {\r\n this._eventsStrategy.fireEvent(\"modifying\");\r\n this._array = [];\r\n this._eventsStrategy.fireEvent(\"modified\")\r\n }\r\n}, \"array\");\r\nexport default ArrayStore;\r\n","/**\r\n * DevExtreme (esm/data/data_source/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"items\"];\r\nimport ajaxUtils from \"../../core/utils/ajax\";\r\nimport Store from \"../abstract_store\";\r\nimport ArrayStore from \"../array_store\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport CustomStore from \"../custom_store\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n normalizeSortingInfo\r\n} from \"../utils\";\r\nexport var CANCELED_TOKEN = \"canceled\";\r\nexport var isPending = deferred => \"pending\" === deferred.state();\r\nexport var normalizeStoreLoadOptionAccessorArguments = originalArguments => {\r\n switch (originalArguments.length) {\r\n case 0:\r\n return;\r\n case 1:\r\n return originalArguments[0]\r\n }\r\n return [].slice.call(originalArguments)\r\n};\r\nvar mapGroup = (group, level, mapper) => map(group, item => {\r\n var restItem = _objectWithoutPropertiesLoose(item, _excluded);\r\n return _extends({}, restItem, {\r\n items: mapRecursive(item.items, level - 1, mapper)\r\n })\r\n});\r\nvar mapRecursive = (items, level, mapper) => {\r\n if (!Array.isArray(items)) {\r\n return items\r\n }\r\n return level ? mapGroup(items, level, mapper) : map(items, mapper)\r\n};\r\nexport var mapDataRespectingGrouping = (items, mapper, groupInfo) => {\r\n var level = groupInfo ? normalizeSortingInfo(groupInfo).length : 0;\r\n return mapRecursive(items, level, mapper)\r\n};\r\nexport var normalizeLoadResult = (data, extra) => {\r\n var _data;\r\n if (null !== (_data = data) && void 0 !== _data && _data.data) {\r\n extra = data;\r\n data = data.data\r\n }\r\n if (!Array.isArray(data)) {\r\n data = [data]\r\n }\r\n return {\r\n data: data,\r\n extra: extra\r\n }\r\n};\r\nvar createCustomStoreFromLoadFunc = options => {\r\n var storeConfig = {};\r\n each([\"useDefaultSearch\", \"key\", \"load\", \"loadMode\", \"cacheRawData\", \"byKey\", \"lookup\", \"totalCount\", \"insert\", \"update\", \"remove\"], (function() {\r\n storeConfig[this] = options[this];\r\n delete options[this]\r\n }));\r\n return new CustomStore(storeConfig)\r\n};\r\nvar createStoreFromConfig = storeConfig => {\r\n var alias = storeConfig.type;\r\n delete storeConfig.type;\r\n return Store.create(alias, storeConfig)\r\n};\r\nvar createCustomStoreFromUrl = (url, normalizationOptions) => new CustomStore({\r\n load: () => ajaxUtils.sendRequest({\r\n url: url,\r\n dataType: \"json\"\r\n }),\r\n loadMode: null === normalizationOptions || void 0 === normalizationOptions ? void 0 : normalizationOptions.fromUrlLoadMode\r\n});\r\nexport var normalizeDataSourceOptions = (options, normalizationOptions) => {\r\n var store;\r\n if (\"string\" === typeof options) {\r\n options = {\r\n paginate: false,\r\n store: createCustomStoreFromUrl(options, normalizationOptions)\r\n }\r\n }\r\n if (void 0 === options) {\r\n options = []\r\n }\r\n if (Array.isArray(options) || options instanceof Store) {\r\n options = {\r\n store: options\r\n }\r\n } else {\r\n options = extend({}, options)\r\n }\r\n if (void 0 === options.store) {\r\n options.store = []\r\n }\r\n store = options.store;\r\n if (\"load\" in options) {\r\n store = createCustomStoreFromLoadFunc(options)\r\n } else if (Array.isArray(store)) {\r\n store = new ArrayStore(store)\r\n } else if (isPlainObject(store)) {\r\n store = createStoreFromConfig(extend({}, store))\r\n }\r\n options.store = store;\r\n return options\r\n};\r\n","/**\r\n * DevExtreme (esm/data/data_source/operation_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n CANCELED_TOKEN\r\n} from \"./utils\";\r\nexport default class OperationManager {\r\n constructor() {\r\n this._counter = -1;\r\n this._deferreds = {}\r\n }\r\n add(deferred) {\r\n this._counter++;\r\n this._deferreds[this._counter] = deferred;\r\n return this._counter\r\n }\r\n remove(operationId) {\r\n return delete this._deferreds[operationId]\r\n }\r\n cancel(operationId) {\r\n if (operationId in this._deferreds) {\r\n this._deferreds[operationId].reject(CANCELED_TOKEN);\r\n return true\r\n }\r\n return false\r\n }\r\n cancelAll() {\r\n while (this._counter > -1) {\r\n this.cancel(this._counter);\r\n this._counter--\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/data/data_source/data_source.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n executeAsync\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isString,\r\n isNumeric,\r\n isBoolean,\r\n isDefined,\r\n isObject,\r\n isEmptyObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n throttleChanges\r\n} from \"../utils\";\r\nimport {\r\n applyBatch\r\n} from \"../array_utils\";\r\nimport CustomStore from \"../custom_store\";\r\nimport {\r\n EventsStrategy\r\n} from \"../../core/events_strategy\";\r\nimport {\r\n errors\r\n} from \"../errors\";\r\nimport {\r\n create\r\n} from \"../../core/utils/queue\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport OperationManager from \"./operation_manager\";\r\nimport {\r\n normalizeDataSourceOptions,\r\n normalizeStoreLoadOptionAccessorArguments,\r\n CANCELED_TOKEN,\r\n isPending,\r\n normalizeLoadResult,\r\n mapDataRespectingGrouping\r\n} from \"./utils\";\r\nexport var DataSource = Class.inherit({\r\n ctor(options) {\r\n var _options$reshapeOnPus;\r\n options = normalizeDataSourceOptions(options);\r\n this._eventsStrategy = new EventsStrategy(this, {\r\n syncStrategy: true\r\n });\r\n this._store = options.store;\r\n this._changedTime = 0;\r\n var needThrottling = 0 !== options.pushAggregationTimeout;\r\n if (needThrottling) {\r\n var throttlingTimeout = void 0 === options.pushAggregationTimeout ? () => 5 * this._changedTime : options.pushAggregationTimeout;\r\n var pushDeferred;\r\n var lastPushWaiters;\r\n var throttlingPushHandler = throttleChanges(changes => {\r\n pushDeferred.resolve();\r\n var storePushPending = when(...lastPushWaiters);\r\n storePushPending.done(() => this._onPush(changes));\r\n lastPushWaiters = void 0;\r\n pushDeferred = void 0\r\n }, throttlingTimeout);\r\n this._onPushHandler = args => {\r\n this._aggregationTimeoutId = throttlingPushHandler(args.changes);\r\n if (!pushDeferred) {\r\n pushDeferred = new Deferred\r\n }\r\n lastPushWaiters = args.waitFor;\r\n args.waitFor.push(pushDeferred.promise())\r\n };\r\n this._store.on(\"beforePushAggregation\", this._onPushHandler)\r\n } else {\r\n this._onPushHandler = changes => this._onPush(changes);\r\n this._store.on(\"push\", this._onPushHandler)\r\n }\r\n this._storeLoadOptions = this._extractLoadOptions(options);\r\n this._mapFunc = options.map;\r\n this._postProcessFunc = options.postProcess;\r\n this._pageIndex = void 0 !== options.pageIndex ? options.pageIndex : 0;\r\n this._pageSize = void 0 !== options.pageSize ? options.pageSize : 20;\r\n this._loadingCount = 0;\r\n this._loadQueue = this._createLoadQueue();\r\n this._searchValue = \"searchValue\" in options ? options.searchValue : null;\r\n this._searchOperation = options.searchOperation || \"contains\";\r\n this._searchExpr = options.searchExpr;\r\n this._paginate = options.paginate;\r\n this._reshapeOnPush = null !== (_options$reshapeOnPus = options.reshapeOnPush) && void 0 !== _options$reshapeOnPus ? _options$reshapeOnPus : false;\r\n each([\"onChanged\", \"onLoadError\", \"onLoadingChanged\", \"onCustomizeLoadResult\", \"onCustomizeStoreLoadOptions\"], (_, optionName) => {\r\n if (optionName in options) {\r\n this.on(optionName.substr(2, 1).toLowerCase() + optionName.substr(3), options[optionName])\r\n }\r\n });\r\n this._operationManager = new OperationManager;\r\n this._init()\r\n },\r\n _init() {\r\n this._items = [];\r\n this._userData = {};\r\n this._totalCount = -1;\r\n this._isLoaded = false;\r\n if (!isDefined(this._paginate)) {\r\n this._paginate = !this.group()\r\n }\r\n this._isLastPage = !this._paginate\r\n },\r\n dispose() {\r\n var _this$_delayedLoadTas;\r\n this._store.off(\"beforePushAggregation\", this._onPushHandler);\r\n this._store.off(\"push\", this._onPushHandler);\r\n this._eventsStrategy.dispose();\r\n clearTimeout(this._aggregationTimeoutId);\r\n null === (_this$_delayedLoadTas = this._delayedLoadTask) || void 0 === _this$_delayedLoadTas ? void 0 : _this$_delayedLoadTas.abort();\r\n this._operationManager.cancelAll();\r\n delete this._store;\r\n delete this._items;\r\n delete this._delayedLoadTask;\r\n this._disposed = true\r\n },\r\n _extractLoadOptions(options) {\r\n var result = {};\r\n var names = [\"sort\", \"filter\", \"langParams\", \"select\", \"group\", \"requireTotalCount\"];\r\n var customNames = this._store._customLoadOptions();\r\n if (customNames) {\r\n names = names.concat(customNames)\r\n }\r\n each(names, (function() {\r\n result[this] = options[this]\r\n }));\r\n return result\r\n },\r\n loadOptions() {\r\n return this._storeLoadOptions\r\n },\r\n items() {\r\n return this._items\r\n },\r\n pageIndex(newIndex) {\r\n if (!isNumeric(newIndex)) {\r\n return this._pageIndex\r\n }\r\n this._pageIndex = newIndex;\r\n this._isLastPage = !this._paginate\r\n },\r\n paginate(value) {\r\n if (!isBoolean(value)) {\r\n return this._paginate\r\n }\r\n if (this._paginate !== value) {\r\n this._paginate = value;\r\n this.pageIndex(0)\r\n }\r\n },\r\n pageSize(value) {\r\n if (!isNumeric(value)) {\r\n return this._pageSize\r\n }\r\n this._pageSize = value\r\n },\r\n isLastPage() {\r\n return this._isLastPage\r\n },\r\n generateStoreLoadOptionAccessor(optionName) {\r\n return args => {\r\n var normalizedArgs = normalizeStoreLoadOptionAccessorArguments(args);\r\n if (void 0 === normalizedArgs) {\r\n return this._storeLoadOptions[optionName]\r\n }\r\n this._storeLoadOptions[optionName] = normalizedArgs\r\n }\r\n },\r\n sort() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n return this.generateStoreLoadOptionAccessor(\"sort\")(args)\r\n },\r\n filter() {\r\n var newFilter = normalizeStoreLoadOptionAccessorArguments(arguments);\r\n if (void 0 === newFilter) {\r\n return this._storeLoadOptions.filter\r\n }\r\n this._storeLoadOptions.filter = newFilter;\r\n this.pageIndex(0)\r\n },\r\n group() {\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2]\r\n }\r\n return this.generateStoreLoadOptionAccessor(\"group\")(args)\r\n },\r\n select() {\r\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\r\n args[_key3] = arguments[_key3]\r\n }\r\n return this.generateStoreLoadOptionAccessor(\"select\")(args)\r\n },\r\n requireTotalCount(value) {\r\n if (!isBoolean(value)) {\r\n return this._storeLoadOptions.requireTotalCount\r\n }\r\n this._storeLoadOptions.requireTotalCount = value\r\n },\r\n searchValue(value) {\r\n if (arguments.length < 1) {\r\n return this._searchValue\r\n }\r\n this._searchValue = value;\r\n this.pageIndex(0)\r\n },\r\n searchOperation(op) {\r\n if (!isString(op)) {\r\n return this._searchOperation\r\n }\r\n this._searchOperation = op;\r\n this.pageIndex(0)\r\n },\r\n searchExpr(expr) {\r\n var argc = arguments.length;\r\n if (0 === argc) {\r\n return this._searchExpr\r\n }\r\n if (argc > 1) {\r\n expr = [].slice.call(arguments)\r\n }\r\n this._searchExpr = expr;\r\n this.pageIndex(0)\r\n },\r\n store() {\r\n return this._store\r\n },\r\n key() {\r\n var _this$_store;\r\n return null === (_this$_store = this._store) || void 0 === _this$_store ? void 0 : _this$_store.key()\r\n },\r\n totalCount() {\r\n return this._totalCount\r\n },\r\n isLoaded() {\r\n return this._isLoaded\r\n },\r\n isLoading() {\r\n return this._loadingCount > 0\r\n },\r\n beginLoading() {\r\n this._changeLoadingCount(1)\r\n },\r\n endLoading() {\r\n this._changeLoadingCount(-1)\r\n },\r\n _createLoadQueue: () => create(),\r\n _changeLoadingCount(increment) {\r\n var oldLoading = this.isLoading();\r\n this._loadingCount += increment;\r\n var newLoading = this.isLoading();\r\n if (oldLoading ^ newLoading) {\r\n this._eventsStrategy.fireEvent(\"loadingChanged\", [newLoading])\r\n }\r\n },\r\n _scheduleLoadCallbacks(deferred) {\r\n this.beginLoading();\r\n deferred.always(() => {\r\n this.endLoading()\r\n })\r\n },\r\n _scheduleFailCallbacks(deferred) {\r\n var _this = this;\r\n deferred.fail((function() {\r\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\r\n args[_key4] = arguments[_key4]\r\n }\r\n if (args[0] === CANCELED_TOKEN) {\r\n return\r\n }\r\n _this._eventsStrategy.fireEvent(\"loadError\", args)\r\n }))\r\n },\r\n _fireChanged(args) {\r\n var date = new Date;\r\n this._eventsStrategy.fireEvent(\"changed\", args);\r\n this._changedTime = new Date - date\r\n },\r\n _scheduleChangedCallbacks(deferred) {\r\n deferred.done(() => this._fireChanged())\r\n },\r\n loadSingle(propName, propValue) {\r\n var d = new Deferred;\r\n var key = this.key();\r\n var store = this._store;\r\n var options = this._createStoreLoadOptions();\r\n this._scheduleFailCallbacks(d);\r\n if (arguments.length < 2) {\r\n propValue = propName;\r\n propName = key\r\n }\r\n delete options.skip;\r\n delete options.group;\r\n delete options.refresh;\r\n delete options.pageIndex;\r\n delete options.searchString;\r\n (() => {\r\n if (propName === key || store instanceof CustomStore && !store._byKeyViaLoad()) {\r\n return store.byKey(propValue, options)\r\n }\r\n options.take = 1;\r\n options.filter = options.filter ? [options.filter, [propName, propValue]] : [propName, propValue];\r\n return store.load(options)\r\n })().fail(d.reject).done(data => {\r\n var isEmptyArray = Array.isArray(data) && !data.length;\r\n if (!isDefined(data) || isEmptyArray) {\r\n d.reject(new errors.Error(\"E4009\"))\r\n } else {\r\n if (!Array.isArray(data)) {\r\n data = [data]\r\n }\r\n d.resolve(this._applyMapFunction(data)[0])\r\n }\r\n });\r\n return d.promise()\r\n },\r\n load() {\r\n var d = new Deferred;\r\n var loadTask = () => {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (!isPending(d)) {\r\n return\r\n }\r\n return this._loadFromStore(loadOperation, d)\r\n };\r\n this._scheduleLoadCallbacks(d);\r\n this._scheduleFailCallbacks(d);\r\n this._scheduleChangedCallbacks(d);\r\n var loadOperation = this._createLoadOperation(d);\r\n this._eventsStrategy.fireEvent(\"customizeStoreLoadOptions\", [loadOperation]);\r\n this._loadQueue.add(() => {\r\n if (\"number\" === typeof loadOperation.delay) {\r\n this._delayedLoadTask = executeAsync(loadTask, loadOperation.delay)\r\n } else {\r\n loadTask()\r\n }\r\n return d.promise()\r\n });\r\n return d.promise({\r\n operationId: loadOperation.operationId\r\n })\r\n },\r\n _onPush(changes) {\r\n if (this._reshapeOnPush) {\r\n this.load()\r\n } else {\r\n var changingArgs = {\r\n changes: changes\r\n };\r\n this._eventsStrategy.fireEvent(\"changing\", [changingArgs]);\r\n var group = this.group();\r\n var items = this.items();\r\n var groupLevel = 0;\r\n var dataSourceChanges = this.paginate() || group ? changes.filter(item => \"update\" === item.type) : changes;\r\n if (group) {\r\n groupLevel = Array.isArray(group) ? group.length : 1\r\n }\r\n if (this._mapFunc) {\r\n dataSourceChanges.forEach(item => {\r\n if (\"insert\" === item.type) {\r\n item.data = this._mapFunc(item.data)\r\n }\r\n })\r\n }\r\n if (changingArgs.postProcessChanges) {\r\n dataSourceChanges = changingArgs.postProcessChanges(dataSourceChanges)\r\n }\r\n applyBatch({\r\n keyInfo: this.store(),\r\n data: items,\r\n changes: dataSourceChanges,\r\n groupCount: groupLevel,\r\n useInsertIndex: true\r\n });\r\n this._fireChanged([{\r\n changes: changes\r\n }])\r\n }\r\n },\r\n _createLoadOperation(deferred) {\r\n var operationId = this._operationManager.add(deferred);\r\n var storeLoadOptions = this._createStoreLoadOptions();\r\n if (this._store && !isEmptyObject(null === storeLoadOptions || void 0 === storeLoadOptions ? void 0 : storeLoadOptions.langParams)) {\r\n this._store._langParams = _extends({}, this._store._langParams, storeLoadOptions.langParams)\r\n }\r\n deferred.always(() => this._operationManager.remove(operationId));\r\n return {\r\n operationId: operationId,\r\n storeLoadOptions: storeLoadOptions\r\n }\r\n },\r\n reload() {\r\n var store = this.store();\r\n store._clearCache();\r\n this._init();\r\n return this.load()\r\n },\r\n cancel(operationId) {\r\n return this._operationManager.cancel(operationId)\r\n },\r\n cancelAll() {\r\n return this._operationManager.cancelAll()\r\n },\r\n _addSearchOptions(storeLoadOptions) {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (this.store()._useDefaultSearch) {\r\n this._addSearchFilter(storeLoadOptions)\r\n } else {\r\n storeLoadOptions.searchOperation = this._searchOperation;\r\n storeLoadOptions.searchValue = this._searchValue;\r\n storeLoadOptions.searchExpr = this._searchExpr\r\n }\r\n },\r\n _createStoreLoadOptions() {\r\n var result = extend({}, this._storeLoadOptions);\r\n this._addSearchOptions(result);\r\n if (this._paginate) {\r\n if (this._pageSize) {\r\n result.skip = this._pageIndex * this._pageSize;\r\n result.take = this._pageSize\r\n }\r\n }\r\n result.userData = this._userData;\r\n return result\r\n },\r\n _addSearchFilter(storeLoadOptions) {\r\n var value = this._searchValue;\r\n var op = this._searchOperation;\r\n var selector = this._searchExpr;\r\n var searchFilter = [];\r\n if (!value) {\r\n return\r\n }\r\n if (!selector) {\r\n selector = \"this\"\r\n }\r\n if (!Array.isArray(selector)) {\r\n selector = [selector]\r\n }\r\n each(selector, (function(i, item) {\r\n if (searchFilter.length) {\r\n searchFilter.push(\"or\")\r\n }\r\n searchFilter.push([item, op, value])\r\n }));\r\n if (storeLoadOptions.filter) {\r\n storeLoadOptions.filter = [searchFilter, storeLoadOptions.filter]\r\n } else {\r\n storeLoadOptions.filter = searchFilter\r\n }\r\n },\r\n _loadFromStore(loadOptions, pendingDeferred) {\r\n var handleSuccess = (data, extra) => {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (!isPending(pendingDeferred)) {\r\n return\r\n }\r\n var loadResult = extend(normalizeLoadResult(data, extra), loadOptions);\r\n this._eventsStrategy.fireEvent(\"customizeLoadResult\", [loadResult]);\r\n when(loadResult.data).done(data => {\r\n loadResult.data = data;\r\n this._processStoreLoadResult(loadResult, pendingDeferred)\r\n }).fail(pendingDeferred.reject)\r\n };\r\n if (loadOptions.data) {\r\n return (new Deferred).resolve(loadOptions.data).done(handleSuccess)\r\n }\r\n return this.store().load(loadOptions.storeLoadOptions).done(handleSuccess).fail(pendingDeferred.reject)\r\n },\r\n _processStoreLoadResult(loadResult, pendingDeferred) {\r\n var data = loadResult.data;\r\n var extra = loadResult.extra;\r\n var storeLoadOptions = loadResult.storeLoadOptions;\r\n var resolvePendingDeferred = () => {\r\n this._isLoaded = true;\r\n this._totalCount = isFinite(extra.totalCount) ? extra.totalCount : -1;\r\n return pendingDeferred.resolve(data, extra)\r\n };\r\n if (this._disposed) {\r\n return\r\n }\r\n data = this._applyPostProcessFunction(this._applyMapFunction(data));\r\n if (!isObject(extra)) {\r\n extra = {}\r\n }\r\n this._items = data;\r\n if (!data.length || !this._paginate || this._pageSize && data.length < this._pageSize) {\r\n this._isLastPage = true\r\n }\r\n if (storeLoadOptions.requireTotalCount && !isFinite(extra.totalCount)) {\r\n (() => {\r\n this.store().totalCount(storeLoadOptions).done((function(count) {\r\n extra.totalCount = count;\r\n resolvePendingDeferred()\r\n })).fail(pendingDeferred.reject)\r\n })()\r\n } else {\r\n resolvePendingDeferred()\r\n }\r\n },\r\n _applyMapFunction(data) {\r\n if (this._mapFunc) {\r\n return mapDataRespectingGrouping(data, this._mapFunc, this.group())\r\n }\r\n return data\r\n },\r\n _applyPostProcessFunction(data) {\r\n if (this._postProcessFunc) {\r\n return this._postProcessFunc(data)\r\n }\r\n return data\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/collection/data_controller.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar DataControllerMock = {\r\n load: () => Deferred().reject(),\r\n loadSingle: () => Deferred().reject(),\r\n loadFromStore: () => Deferred().reject(),\r\n loadNextPage: () => Deferred().reject(),\r\n loadOptions: noop,\r\n userData: noop,\r\n cancel: noop,\r\n cancelAll: noop,\r\n filter: noop,\r\n addSearchFilter: noop,\r\n group: noop,\r\n paginate: noop,\r\n pageSize: noop,\r\n pageIndex: noop,\r\n resetDataSourcePageIndex: noop,\r\n totalCount: noop,\r\n isLastPage: noop,\r\n isLoading: noop,\r\n isLoaded: noop,\r\n searchValue: noop,\r\n searchOperation: noop,\r\n searchExpr: noop,\r\n select: noop,\r\n key: noop,\r\n keyOf: noop,\r\n store: noop,\r\n items: noop,\r\n applyMapFunction: noop,\r\n getDataSource: noop,\r\n reload: noop,\r\n on: noop,\r\n off: noop\r\n};\r\nclass DataController {\r\n constructor(dataSource) {\r\n if (!dataSource) {\r\n return DataControllerMock\r\n }\r\n this._dataSource = dataSource\r\n }\r\n load() {\r\n return this._dataSource.load()\r\n }\r\n loadSingle(propName, propValue) {\r\n if (arguments.length < 2) {\r\n propValue = propName;\r\n propName = this.key()\r\n }\r\n return this._dataSource.loadSingle(propName, propValue)\r\n }\r\n loadFromStore(loadOptions) {\r\n return this.store().load(loadOptions)\r\n }\r\n loadNextPage() {\r\n this.pageIndex(1 + this.pageIndex());\r\n return this.load()\r\n }\r\n loadOptions() {\r\n return this._dataSource.loadOptions()\r\n }\r\n userData() {\r\n return this._dataSource._userData\r\n }\r\n cancel(operationId) {\r\n this._dataSource.cancel(operationId)\r\n }\r\n cancelAll() {\r\n this._dataSource.cancelAll()\r\n }\r\n filter(filter) {\r\n return this._dataSource.filter(filter)\r\n }\r\n addSearchFilter(storeLoadOptions) {\r\n this._dataSource._addSearchFilter(storeLoadOptions)\r\n }\r\n group(group) {\r\n return this._dataSource.group(group)\r\n }\r\n paginate() {\r\n return this._dataSource.paginate()\r\n }\r\n pageSize() {\r\n return this._dataSource._pageSize\r\n }\r\n pageIndex(pageIndex) {\r\n return this._dataSource.pageIndex(pageIndex)\r\n }\r\n resetDataSourcePageIndex() {\r\n if (this.pageIndex()) {\r\n this.pageIndex(0);\r\n this.load()\r\n }\r\n }\r\n totalCount() {\r\n return this._dataSource.totalCount()\r\n }\r\n isLastPage() {\r\n return this._dataSource.isLastPage() || !this._dataSource._pageSize\r\n }\r\n isLoading() {\r\n return this._dataSource.isLoading()\r\n }\r\n isLoaded() {\r\n return this._dataSource.isLoaded()\r\n }\r\n searchValue(value) {\r\n if (!arguments.length) {\r\n return this._dataSource.searchValue()\r\n }\r\n return this._dataSource.searchValue(value)\r\n }\r\n searchOperation(operation) {\r\n return this._dataSource.searchOperation(operation)\r\n }\r\n searchExpr(expr) {\r\n if (!arguments.length) {\r\n return this._dataSource.searchExpr()\r\n }\r\n return this._dataSource.searchExpr(expr)\r\n }\r\n select() {\r\n return this._dataSource.select(...arguments)\r\n }\r\n key() {\r\n return this._dataSource.key()\r\n }\r\n keyOf(item) {\r\n return this.store().keyOf(item)\r\n }\r\n store() {\r\n return this._dataSource.store()\r\n }\r\n items() {\r\n return this._dataSource.items()\r\n }\r\n applyMapFunction(data) {\r\n return this._dataSource._applyMapFunction(data)\r\n }\r\n getDataSource() {\r\n return this._dataSource || null\r\n }\r\n reload() {\r\n return this._dataSource.reload()\r\n }\r\n on(event, handler) {\r\n this._dataSource.on(event, handler)\r\n }\r\n off(event, handler) {\r\n this._dataSource.off(event, handler)\r\n }\r\n}\r\nexport default DataController;\r\n","/**\r\n * DevExtreme (esm/data_helper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n DataSource\r\n} from \"./data/data_source/data_source\";\r\nimport {\r\n extend\r\n} from \"./core/utils/extend\";\r\nimport {\r\n normalizeDataSourceOptions\r\n} from \"./data/data_source/utils\";\r\nimport DataController from \"./ui/collection/data_controller\";\r\nvar DATA_SOURCE_OPTIONS_METHOD = \"_dataSourceOptions\";\r\nvar DATA_SOURCE_CHANGED_METHOD = \"_dataSourceChangedHandler\";\r\nvar DATA_SOURCE_LOAD_ERROR_METHOD = \"_dataSourceLoadErrorHandler\";\r\nvar DATA_SOURCE_LOADING_CHANGED_METHOD = \"_dataSourceLoadingChangedHandler\";\r\nvar DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD = \"_dataSourceFromUrlLoadMode\";\r\nvar SPECIFIC_DATA_SOURCE_OPTION = \"_getSpecificDataSourceOption\";\r\nvar NORMALIZE_DATA_SOURCE = \"_normalizeDataSource\";\r\nvar DataHelperMixin = {\r\n postCtor: function() {\r\n this.on(\"disposing\", function() {\r\n this._disposeDataSource()\r\n }.bind(this))\r\n },\r\n _refreshDataSource: function() {\r\n this._initDataSource();\r\n this._loadDataSource()\r\n },\r\n _initDataSource: function() {\r\n var dataSourceOptions = SPECIFIC_DATA_SOURCE_OPTION in this ? this[SPECIFIC_DATA_SOURCE_OPTION]() : this.option(\"dataSource\");\r\n var widgetDataSourceOptions;\r\n var dataSourceType;\r\n this._disposeDataSource();\r\n if (dataSourceOptions) {\r\n if (dataSourceOptions instanceof DataSource) {\r\n this._isSharedDataSource = true;\r\n this._dataSource = dataSourceOptions\r\n } else {\r\n widgetDataSourceOptions = DATA_SOURCE_OPTIONS_METHOD in this ? this[DATA_SOURCE_OPTIONS_METHOD]() : {};\r\n dataSourceType = this._dataSourceType ? this._dataSourceType() : DataSource;\r\n dataSourceOptions = normalizeDataSourceOptions(dataSourceOptions, {\r\n fromUrlLoadMode: DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD in this && this[DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD]()\r\n });\r\n this._dataSource = new dataSourceType(extend(true, {}, widgetDataSourceOptions, dataSourceOptions))\r\n }\r\n if (NORMALIZE_DATA_SOURCE in this) {\r\n this._dataSource = this[NORMALIZE_DATA_SOURCE](this._dataSource)\r\n }\r\n this._addDataSourceHandlers();\r\n this._initDataController()\r\n }\r\n },\r\n _initDataController: function() {\r\n var _this$option;\r\n var dataController = null === (_this$option = this.option) || void 0 === _this$option ? void 0 : _this$option.call(this, \"_dataController\");\r\n var dataSource = this._dataSource;\r\n if (dataController) {\r\n this._dataController = dataController\r\n } else {\r\n this._dataController = new DataController(dataSource)\r\n }\r\n },\r\n _addDataSourceHandlers: function() {\r\n if (DATA_SOURCE_CHANGED_METHOD in this) {\r\n this._addDataSourceChangeHandler()\r\n }\r\n if (DATA_SOURCE_LOAD_ERROR_METHOD in this) {\r\n this._addDataSourceLoadErrorHandler()\r\n }\r\n if (DATA_SOURCE_LOADING_CHANGED_METHOD in this) {\r\n this._addDataSourceLoadingChangedHandler()\r\n }\r\n this._addReadyWatcher()\r\n },\r\n _addReadyWatcher: function() {\r\n this._dataSource.on(\"loadingChanged\", function(isLoading) {\r\n this._ready && this._ready(!isLoading)\r\n }.bind(this))\r\n },\r\n _addDataSourceChangeHandler: function() {\r\n var dataSource = this._dataSource;\r\n this._proxiedDataSourceChangedHandler = function(e) {\r\n this[DATA_SOURCE_CHANGED_METHOD](dataSource.items(), e)\r\n }.bind(this);\r\n dataSource.on(\"changed\", this._proxiedDataSourceChangedHandler)\r\n },\r\n _addDataSourceLoadErrorHandler: function() {\r\n this._proxiedDataSourceLoadErrorHandler = this[DATA_SOURCE_LOAD_ERROR_METHOD].bind(this);\r\n this._dataSource.on(\"loadError\", this._proxiedDataSourceLoadErrorHandler)\r\n },\r\n _addDataSourceLoadingChangedHandler: function() {\r\n this._proxiedDataSourceLoadingChangedHandler = this[DATA_SOURCE_LOADING_CHANGED_METHOD].bind(this);\r\n this._dataSource.on(\"loadingChanged\", this._proxiedDataSourceLoadingChangedHandler)\r\n },\r\n _loadDataSource: function() {\r\n var dataSource = this._dataSource;\r\n if (dataSource) {\r\n if (dataSource.isLoaded()) {\r\n this._proxiedDataSourceChangedHandler && this._proxiedDataSourceChangedHandler()\r\n } else {\r\n dataSource.load()\r\n }\r\n }\r\n },\r\n _loadSingle: function(key, value) {\r\n key = \"this\" === key ? this._dataSource.key() || \"this\" : key;\r\n return this._dataSource.loadSingle(key, value)\r\n },\r\n _isLastPage: function() {\r\n return !this._dataSource || this._dataSource.isLastPage() || !this._dataSource._pageSize\r\n },\r\n _isDataSourceLoading: function() {\r\n return this._dataSource && this._dataSource.isLoading()\r\n },\r\n _disposeDataSource: function() {\r\n if (this._dataSource) {\r\n if (this._isSharedDataSource) {\r\n delete this._isSharedDataSource;\r\n this._proxiedDataSourceChangedHandler && this._dataSource.off(\"changed\", this._proxiedDataSourceChangedHandler);\r\n this._proxiedDataSourceLoadErrorHandler && this._dataSource.off(\"loadError\", this._proxiedDataSourceLoadErrorHandler);\r\n this._proxiedDataSourceLoadingChangedHandler && this._dataSource.off(\"loadingChanged\", this._proxiedDataSourceLoadingChangedHandler)\r\n } else {\r\n this._dataSource.dispose()\r\n }\r\n delete this._dataSource;\r\n delete this._proxiedDataSourceChangedHandler;\r\n delete this._proxiedDataSourceLoadErrorHandler;\r\n delete this._proxiedDataSourceLoadingChangedHandler\r\n }\r\n },\r\n getDataSource: function() {\r\n return this._dataSource || null\r\n }\r\n};\r\nexport default DataHelperMixin;\r\n","/**\r\n * DevExtreme (esm/localization/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n sign,\r\n multiplyInExponentialForm\r\n} from \"../core/utils/math\";\r\nvar DECIMAL_BASE = 10;\r\n\r\nfunction roundByAbs(value) {\r\n var valueSign = sign(value);\r\n return valueSign * Math.round(Math.abs(value))\r\n}\r\n\r\nfunction adjustValue(value, precision) {\r\n var precisionMultiplier = Math.pow(DECIMAL_BASE, precision);\r\n var intermediateValue = multiplyInExponentialForm(value, precision);\r\n return roundByAbs(intermediateValue) / precisionMultiplier\r\n}\r\nexport function toFixed(value, precision) {\r\n var valuePrecision = precision || 0;\r\n var adjustedValue = valuePrecision > 0 ? adjustValue(...arguments) : value;\r\n return adjustedValue.toFixed(valuePrecision)\r\n}\r\n","/**\r\n * DevExtreme (esm/localization/ldml/number.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n fitIntoRange,\r\n multiplyInExponentialForm\r\n} from \"../../core/utils/math\";\r\nimport {\r\n toFixed\r\n} from \"../utils\";\r\nvar DEFAULT_CONFIG = {\r\n thousandsSeparator: \",\",\r\n decimalSeparator: \".\"\r\n};\r\nvar ESCAPING_CHAR = \"'\";\r\nvar MAXIMUM_NUMBER_LENGTH = 15;\r\nvar PERCENT_EXPONENT_SHIFT = 2;\r\n\r\nfunction getGroupSizes(formatString) {\r\n return formatString.split(\",\").slice(1).map((function(str) {\r\n var singleQuotesLeft = 0;\r\n return str.split(\"\").filter((function(char, index) {\r\n singleQuotesLeft += \"'\" === char;\r\n var isDigit = \"#\" === char || \"0\" === char;\r\n var isInStub = singleQuotesLeft % 2;\r\n return isDigit && !isInStub\r\n })).length\r\n }))\r\n}\r\n\r\nfunction getSignParts(format) {\r\n var signParts = format.split(\";\");\r\n if (1 === signParts.length) {\r\n signParts.push(\"-\" + signParts[0])\r\n }\r\n return signParts\r\n}\r\n\r\nfunction reverseString(str) {\r\n return str.toString().split(\"\").reverse().join(\"\")\r\n}\r\n\r\nfunction isPercentFormat(format) {\r\n return -1 !== format.indexOf(\"%\") && !format.match(/'[^']*%[^']*'/g)\r\n}\r\n\r\nfunction removeStubs(str) {\r\n return str.replace(/'.+'/g, \"\")\r\n}\r\n\r\nfunction getNonRequiredDigitCount(floatFormat) {\r\n if (!floatFormat) {\r\n return 0\r\n }\r\n var format = removeStubs(floatFormat);\r\n return format.length - format.replace(/[#]/g, \"\").length\r\n}\r\n\r\nfunction getRequiredDigitCount(floatFormat) {\r\n if (!floatFormat) {\r\n return 0\r\n }\r\n var format = removeStubs(floatFormat);\r\n return format.length - format.replace(/[0]/g, \"\").length\r\n}\r\n\r\nfunction normalizeValueString(valuePart, minDigitCount, maxDigitCount) {\r\n if (!valuePart) {\r\n return \"\"\r\n }\r\n if (valuePart.length > maxDigitCount) {\r\n valuePart = valuePart.substr(0, maxDigitCount)\r\n }\r\n while (valuePart.length > minDigitCount && \"0\" === valuePart.slice(-1)) {\r\n valuePart = valuePart.substr(0, valuePart.length - 1)\r\n }\r\n while (valuePart.length < minDigitCount) {\r\n valuePart += \"0\"\r\n }\r\n return valuePart\r\n}\r\n\r\nfunction applyGroups(valueString, groupSizes, thousandsSeparator) {\r\n if (!groupSizes.length) {\r\n return valueString\r\n }\r\n var groups = [];\r\n var index = 0;\r\n while (valueString) {\r\n var groupSize = groupSizes[index];\r\n if (!groupSize) {\r\n break\r\n }\r\n groups.push(valueString.slice(0, groupSize));\r\n valueString = valueString.slice(groupSize);\r\n if (index < groupSizes.length - 1) {\r\n index++\r\n }\r\n }\r\n return groups.join(thousandsSeparator)\r\n}\r\n\r\nfunction formatNumberPart(format, valueString) {\r\n return format.split(ESCAPING_CHAR).map((function(formatPart, escapeIndex) {\r\n var isEscape = escapeIndex % 2;\r\n if (!formatPart && isEscape) {\r\n return ESCAPING_CHAR\r\n }\r\n return isEscape ? formatPart : formatPart.replace(/[,#0]+/, valueString)\r\n })).join(\"\")\r\n}\r\n\r\nfunction getFloatPointIndex(format) {\r\n var isEscape = false;\r\n for (var index = 0; index < format.length; index++) {\r\n if (\"'\" === format[index]) {\r\n isEscape = !isEscape\r\n }\r\n if (\".\" === format[index] && !isEscape) {\r\n return index\r\n }\r\n }\r\n return format.length\r\n}\r\nexport function getFormatter(format, config) {\r\n config = config || DEFAULT_CONFIG;\r\n return function(value) {\r\n if (\"number\" !== typeof value || isNaN(value)) {\r\n return \"\"\r\n }\r\n var signFormatParts = getSignParts(format);\r\n var isPositiveZero = 1 / value === 1 / 0;\r\n var isPositive = value > 0 || isPositiveZero;\r\n var numberFormat = signFormatParts[isPositive ? 0 : 1];\r\n var floatPointIndex = getFloatPointIndex(numberFormat);\r\n var floatFormatParts = [numberFormat.substr(0, floatPointIndex), numberFormat.substr(floatPointIndex + 1)];\r\n var minFloatPrecision = getRequiredDigitCount(floatFormatParts[1]);\r\n var maxFloatPrecision = minFloatPrecision + getNonRequiredDigitCount(floatFormatParts[1]);\r\n if (isPercentFormat(numberFormat)) {\r\n value = multiplyInExponentialForm(value, PERCENT_EXPONENT_SHIFT)\r\n }\r\n if (!isPositive) {\r\n value = -value\r\n }\r\n var minIntegerPrecision = getRequiredDigitCount(floatFormatParts[0]);\r\n var maxIntegerPrecision = getNonRequiredDigitCount(floatFormatParts[0]) || config.unlimitedIntegerDigits ? void 0 : minIntegerPrecision;\r\n var integerLength = Math.floor(value).toString().length;\r\n var floatPrecision = fitIntoRange(maxFloatPrecision, 0, MAXIMUM_NUMBER_LENGTH - integerLength);\r\n var groupSizes = getGroupSizes(floatFormatParts[0]).reverse();\r\n var valueParts = toFixed(value, floatPrecision < 0 ? 0 : floatPrecision).split(\".\");\r\n var valueIntegerPart = normalizeValueString(reverseString(valueParts[0]), minIntegerPrecision, maxIntegerPrecision);\r\n var valueFloatPart = normalizeValueString(valueParts[1], minFloatPrecision, maxFloatPrecision);\r\n valueIntegerPart = applyGroups(valueIntegerPart, groupSizes, config.thousandsSeparator);\r\n var integerString = reverseString(formatNumberPart(reverseString(floatFormatParts[0]), valueIntegerPart));\r\n var floatString = maxFloatPrecision ? formatNumberPart(floatFormatParts[1], valueFloatPart) : \"\";\r\n var result = integerString + (floatString.match(/\\d/) ? config.decimalSeparator : \"\") + floatString;\r\n return result\r\n }\r\n}\r\n\r\nfunction parseValue(text, isPercent, isNegative) {\r\n var value = (isPercent ? .01 : 1) * parseFloat(text) || 0;\r\n return isNegative ? -value : value\r\n}\r\n\r\nfunction prepareValueText(valueText, formatter, isPercent, isIntegerPart) {\r\n var nextValueText = valueText;\r\n var char;\r\n var text;\r\n var nextText;\r\n do {\r\n if (nextText) {\r\n char = text.length === nextText.length ? \"0\" : \"1\";\r\n valueText = isIntegerPart ? char + valueText : valueText + char\r\n }\r\n text = nextText || formatter(parseValue(nextValueText, isPercent));\r\n nextValueText = isIntegerPart ? \"1\" + nextValueText : nextValueText + \"1\";\r\n nextText = formatter(parseValue(nextValueText, isPercent))\r\n } while (text !== nextText && (isIntegerPart ? text.length === nextText.length : text.length <= nextText.length));\r\n if (isIntegerPart && nextText.length > text.length) {\r\n var hasGroups = -1 === formatter(12345).indexOf(\"12345\");\r\n do {\r\n valueText = \"1\" + valueText\r\n } while (hasGroups && parseValue(valueText, isPercent) < 1e5)\r\n }\r\n return valueText\r\n}\r\n\r\nfunction getFormatByValueText(valueText, formatter, isPercent, isNegative) {\r\n var format = formatter(parseValue(valueText, isPercent, isNegative));\r\n var valueTextParts = valueText.split(\".\");\r\n var valueTextWithModifiedFloat = valueTextParts[0] + \".3\" + valueTextParts[1].slice(1);\r\n var valueWithModifiedFloat = parseValue(valueTextWithModifiedFloat, isPercent, isNegative);\r\n var decimalSeparatorIndex = formatter(valueWithModifiedFloat).indexOf(\"3\") - 1;\r\n format = format.replace(/(\\d)\\D(\\d)/g, \"$1,$2\");\r\n if (decimalSeparatorIndex >= 0) {\r\n format = format.slice(0, decimalSeparatorIndex) + \".\" + format.slice(decimalSeparatorIndex + 1)\r\n }\r\n format = format.replace(/1+/, \"1\").replace(/1/g, \"#\");\r\n if (!isPercent) {\r\n format = format.replace(\"%\", \"'%'\")\r\n }\r\n return format\r\n}\r\nexport function getFormat(formatter) {\r\n var valueText = \".\";\r\n var isPercent = formatter(1).indexOf(\"100\") >= 0;\r\n valueText = prepareValueText(valueText, formatter, isPercent, true);\r\n valueText = prepareValueText(valueText, formatter, isPercent, false);\r\n var positiveFormat = getFormatByValueText(valueText, formatter, isPercent, false);\r\n var negativeFormat = getFormatByValueText(valueText, formatter, isPercent, true);\r\n return negativeFormat === \"-\" + positiveFormat ? positiveFormat : positiveFormat + \";\" + negativeFormat\r\n}\r\n","/**\r\n * DevExtreme (esm/localization/currency.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nexport default {\r\n _formatNumberCore: function(value, format, formatConfig) {\r\n if (\"currency\" === format) {\r\n formatConfig.precision = formatConfig.precision || 0;\r\n var result = this.format(value, extend({}, formatConfig, {\r\n type: \"fixedpoint\"\r\n }));\r\n var currencyPart = this.getCurrencySymbol().symbol.replace(/\\$/g, \"$$$$\");\r\n result = result.replace(/^(\\D*)(\\d.*)/, \"$1\" + currencyPart + \"$2\");\r\n return result\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getCurrencySymbol: function() {\r\n return {\r\n symbol: \"$\"\r\n }\r\n },\r\n getOpenXmlCurrencyFormat: function() {\r\n return \"$#,##0{0}_);\\\\($#,##0{0}\\\\)\"\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/cldr-data/parent_locales.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n// !!! AUTO-GENERATED FILE, DO NOT EDIT\r\nexport default {\r\n \"en-150\": \"en-001\",\r\n \"en-AG\": \"en-001\",\r\n \"en-AI\": \"en-001\",\r\n \"en-AU\": \"en-001\",\r\n \"en-BB\": \"en-001\",\r\n \"en-BM\": \"en-001\",\r\n \"en-BS\": \"en-001\",\r\n \"en-BW\": \"en-001\",\r\n \"en-BZ\": \"en-001\",\r\n \"en-CC\": \"en-001\",\r\n \"en-CK\": \"en-001\",\r\n \"en-CM\": \"en-001\",\r\n \"en-CX\": \"en-001\",\r\n \"en-CY\": \"en-001\",\r\n \"en-DG\": \"en-001\",\r\n \"en-DM\": \"en-001\",\r\n \"en-ER\": \"en-001\",\r\n \"en-FJ\": \"en-001\",\r\n \"en-FK\": \"en-001\",\r\n \"en-FM\": \"en-001\",\r\n \"en-GB\": \"en-001\",\r\n \"en-GD\": \"en-001\",\r\n \"en-GG\": \"en-001\",\r\n \"en-GH\": \"en-001\",\r\n \"en-GI\": \"en-001\",\r\n \"en-GM\": \"en-001\",\r\n \"en-GY\": \"en-001\",\r\n \"en-HK\": \"en-001\",\r\n \"en-IE\": \"en-001\",\r\n \"en-IL\": \"en-001\",\r\n \"en-IM\": \"en-001\",\r\n \"en-IN\": \"en-001\",\r\n \"en-IO\": \"en-001\",\r\n \"en-JE\": \"en-001\",\r\n \"en-JM\": \"en-001\",\r\n \"en-KE\": \"en-001\",\r\n \"en-KI\": \"en-001\",\r\n \"en-KN\": \"en-001\",\r\n \"en-KY\": \"en-001\",\r\n \"en-LC\": \"en-001\",\r\n \"en-LR\": \"en-001\",\r\n \"en-LS\": \"en-001\",\r\n \"en-MG\": \"en-001\",\r\n \"en-MO\": \"en-001\",\r\n \"en-MS\": \"en-001\",\r\n \"en-MT\": \"en-001\",\r\n \"en-MU\": \"en-001\",\r\n \"en-MV\": \"en-001\",\r\n \"en-MW\": \"en-001\",\r\n \"en-MY\": \"en-001\",\r\n \"en-NA\": \"en-001\",\r\n \"en-NF\": \"en-001\",\r\n \"en-NG\": \"en-001\",\r\n \"en-NR\": \"en-001\",\r\n \"en-NU\": \"en-001\",\r\n \"en-NZ\": \"en-001\",\r\n \"en-PG\": \"en-001\",\r\n \"en-PK\": \"en-001\",\r\n \"en-PN\": \"en-001\",\r\n \"en-PW\": \"en-001\",\r\n \"en-RW\": \"en-001\",\r\n \"en-SB\": \"en-001\",\r\n \"en-SC\": \"en-001\",\r\n \"en-SD\": \"en-001\",\r\n \"en-SG\": \"en-001\",\r\n \"en-SH\": \"en-001\",\r\n \"en-SL\": \"en-001\",\r\n \"en-SS\": \"en-001\",\r\n \"en-SX\": \"en-001\",\r\n \"en-SZ\": \"en-001\",\r\n \"en-TC\": \"en-001\",\r\n \"en-TK\": \"en-001\",\r\n \"en-TO\": \"en-001\",\r\n \"en-TT\": \"en-001\",\r\n \"en-TV\": \"en-001\",\r\n \"en-TZ\": \"en-001\",\r\n \"en-UG\": \"en-001\",\r\n \"en-VC\": \"en-001\",\r\n \"en-VG\": \"en-001\",\r\n \"en-VU\": \"en-001\",\r\n \"en-WS\": \"en-001\",\r\n \"en-ZA\": \"en-001\",\r\n \"en-ZM\": \"en-001\",\r\n \"en-ZW\": \"en-001\",\r\n \"en-AT\": \"en-150\",\r\n \"en-BE\": \"en-150\",\r\n \"en-CH\": \"en-150\",\r\n \"en-DE\": \"en-150\",\r\n \"en-DK\": \"en-150\",\r\n \"en-FI\": \"en-150\",\r\n \"en-NL\": \"en-150\",\r\n \"en-SE\": \"en-150\",\r\n \"en-SI\": \"en-150\",\r\n \"hi-Latn\": \"en-IN\",\r\n \"es-AR\": \"es-419\",\r\n \"es-BO\": \"es-419\",\r\n \"es-BR\": \"es-419\",\r\n \"es-BZ\": \"es-419\",\r\n \"es-CL\": \"es-419\",\r\n \"es-CO\": \"es-419\",\r\n \"es-CR\": \"es-419\",\r\n \"es-CU\": \"es-419\",\r\n \"es-DO\": \"es-419\",\r\n \"es-EC\": \"es-419\",\r\n \"es-GT\": \"es-419\",\r\n \"es-HN\": \"es-419\",\r\n \"es-MX\": \"es-419\",\r\n \"es-NI\": \"es-419\",\r\n \"es-PA\": \"es-419\",\r\n \"es-PE\": \"es-419\",\r\n \"es-PR\": \"es-419\",\r\n \"es-PY\": \"es-419\",\r\n \"es-SV\": \"es-419\",\r\n \"es-US\": \"es-419\",\r\n \"es-UY\": \"es-419\",\r\n \"es-VE\": \"es-419\",\r\n nb: \"no\",\r\n nn: \"no\",\r\n \"pt-AO\": \"pt-PT\",\r\n \"pt-CH\": \"pt-PT\",\r\n \"pt-CV\": \"pt-PT\",\r\n \"pt-FR\": \"pt-PT\",\r\n \"pt-GQ\": \"pt-PT\",\r\n \"pt-GW\": \"pt-PT\",\r\n \"pt-LU\": \"pt-PT\",\r\n \"pt-MO\": \"pt-PT\",\r\n \"pt-MZ\": \"pt-PT\",\r\n \"pt-ST\": \"pt-PT\",\r\n \"pt-TL\": \"pt-PT\",\r\n \"az-Arab\": \"und\",\r\n \"az-Cyrl\": \"und\",\r\n \"bal-Latn\": \"und\",\r\n \"blt-Latn\": \"und\",\r\n \"bm-Nkoo\": \"und\",\r\n \"bs-Cyrl\": \"und\",\r\n \"byn-Latn\": \"und\",\r\n \"cu-Glag\": \"und\",\r\n \"dje-Arab\": \"und\",\r\n \"dyo-Arab\": \"und\",\r\n \"en-Dsrt\": \"und\",\r\n \"en-Shaw\": \"und\",\r\n \"ff-Adlm\": \"und\",\r\n \"ff-Arab\": \"und\",\r\n \"ha-Arab\": \"und\",\r\n \"iu-Latn\": \"und\",\r\n \"kk-Arab\": \"und\",\r\n \"ks-Deva\": \"und\",\r\n \"ku-Arab\": \"und\",\r\n \"ky-Arab\": \"und\",\r\n \"ky-Latn\": \"und\",\r\n \"ml-Arab\": \"und\",\r\n \"mn-Mong\": \"und\",\r\n \"mni-Mtei\": \"und\",\r\n \"ms-Arab\": \"und\",\r\n \"pa-Arab\": \"und\",\r\n \"sat-Deva\": \"und\",\r\n \"sd-Deva\": \"und\",\r\n \"sd-Khoj\": \"und\",\r\n \"sd-Sind\": \"und\",\r\n \"shi-Latn\": \"und\",\r\n \"so-Arab\": \"und\",\r\n \"sr-Latn\": \"und\",\r\n \"sw-Arab\": \"und\",\r\n \"tg-Arab\": \"und\",\r\n \"ug-Cyrl\": \"und\",\r\n \"uz-Arab\": \"und\",\r\n \"uz-Cyrl\": \"und\",\r\n \"vai-Latn\": \"und\",\r\n \"wo-Arab\": \"und\",\r\n \"yo-Arab\": \"und\",\r\n \"yue-Hans\": \"und\",\r\n \"zh-Hant\": \"und\",\r\n \"zh-Hant-MO\": \"zh-Hant-HK\"\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/parentLocale.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar PARENT_LOCALE_SEPARATOR = \"-\";\r\nexport default (parentLocales, locale) => {\r\n var parentLocale = parentLocales[locale];\r\n if (parentLocale) {\r\n return \"root\" !== parentLocale && parentLocale\r\n }\r\n return locale.substr(0, locale.lastIndexOf(PARENT_LOCALE_SEPARATOR))\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/core.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport parentLocales from \"./cldr-data/parent_locales\";\r\nimport getParentLocale from \"./parentLocale\";\r\nvar DEFAULT_LOCALE = \"en\";\r\nexport default dependencyInjector({\r\n locale: (() => {\r\n var currentLocale = DEFAULT_LOCALE;\r\n return locale => {\r\n if (!locale) {\r\n return currentLocale\r\n }\r\n currentLocale = locale\r\n }\r\n })(),\r\n getValueByClosestLocale: function(getter) {\r\n var locale = this.locale();\r\n var value = getter(locale);\r\n var isRootLocale;\r\n while (!value && !isRootLocale) {\r\n locale = getParentLocale(parentLocales, locale);\r\n if (locale) {\r\n value = getter(locale)\r\n } else {\r\n isRootLocale = true\r\n }\r\n }\r\n if (void 0 === value && locale !== DEFAULT_LOCALE) {\r\n return getter(DEFAULT_LOCALE)\r\n }\r\n return value\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/localization/cldr-data/accounting_formats.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n// !!! AUTO-GENERATED FILE, DO NOT EDIT\r\nexport default {\r\n af: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"af-NA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n agq: \"#,##0.00\\xa4\",\r\n ak: \"\\xa4#,##0.00\",\r\n am: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ar: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-AE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-BH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-DJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-DZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-EG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-EH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-ER\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-IL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-IQ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-JO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-KM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-KW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-LB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-LY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-MA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-MR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-OM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-PS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-QA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-SY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-TD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-TN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ar-YE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n as: \"\\xa4\\xa0#,##,##0.00\",\r\n asa: \"#,##0.00\\xa0\\xa4\",\r\n ast: \"#,##0.00\\xa0\\xa4\",\r\n az: \"#,##0.00\\xa0\\xa4\",\r\n \"az-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n \"az-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n bas: \"#,##0.00\\xa0\\xa4\",\r\n be: \"#,##0.00\\xa0\\xa4\",\r\n \"be-tarask\": \"#,##0.00\\xa0\\xa4\",\r\n bem: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n bez: \"#,##0.00\\xa4\",\r\n bg: \"0.00\\xa0\\xa4;(0.00\\xa0\\xa4)\",\r\n bm: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n bn: \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n \"bn-IN\": \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n bo: \"\\xa4\\xa0#,##0.00\",\r\n \"bo-IN\": \"\\xa4\\xa0#,##0.00\",\r\n br: \"#,##0.00\\xa0\\xa4\",\r\n brx: \"\\xa4\\xa0#,##,##0.00\",\r\n bs: \"#,##0.00\\xa0\\xa4\",\r\n \"bs-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n \"bs-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n ca: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-AD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-ES-valencia\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-FR\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ca-IT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n ccp: \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n \"ccp-IN\": \"#,##,##0.00\\xa4;(#,##,##0.00\\xa4)\",\r\n ce: \"#,##0.00\\xa0\\xa4\",\r\n ceb: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n cgg: \"\\xa4#,##0.00\",\r\n chr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ckb: \"\\xa4\\xa0#,##0.00\",\r\n \"ckb-IR\": \"\\xa4\\xa0#,##0.00\",\r\n cs: \"#,##0.00\\xa0\\xa4\",\r\n cy: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n da: \"#,##0.00\\xa0\\xa4\",\r\n \"da-GL\": \"#,##0.00\\xa0\\xa4\",\r\n dav: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n de: \"#,##0.00\\xa0\\xa4\",\r\n \"de-AT\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-BE\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-CH\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-IT\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-LI\": \"#,##0.00\\xa0\\xa4\",\r\n \"de-LU\": \"#,##0.00\\xa0\\xa4\",\r\n dje: \"#,##0.00\\xa4\",\r\n doi: \"\\xa4#,##0.00\",\r\n dsb: \"#,##0.00\\xa0\\xa4\",\r\n dua: \"#,##0.00\\xa0\\xa4\",\r\n dyo: \"#,##0.00\\xa0\\xa4\",\r\n dz: \"\\xa4#,##,##0.00\",\r\n ebu: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ee: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ee-TG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n el: \"#,##0.00\\xa0\\xa4\",\r\n \"el-CY\": \"#,##0.00\\xa0\\xa4\",\r\n en: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-001\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-150\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-AE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-AT\": \"\\xa4\\xa0#,##0.00\",\r\n \"en-AU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BE\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-BI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-BZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CH\": \"\\xa4\\xa0#,##0.00;\\xa4-#,##0.00\",\r\n \"en-CK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-CY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-DE\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-DG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-DK\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-DM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ER\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-FI\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-FJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-FK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-FM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-GY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-IO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-JE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-JM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-KY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-LC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-LR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-LS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MP\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MT\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MV\": \"\\xa4\\xa0#,##0.00\",\r\n \"en-MW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-MY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NF\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NL\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"en-NR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-NZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PR\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-PW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-RW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SD\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SE\": \"#,##0.00\\xa0\\xa4\",\r\n \"en-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SH\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"en-SL\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SX\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-SZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TT\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TV\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-TZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-UG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-UM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VC\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VI\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-VU\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-WS\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ZA\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ZM\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"en-ZW\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n eo: \"\\xa4\\xa0#,##0.00\",\r\n es: \"#,##0.00\\xa0\\xa4\",\r\n \"es-419\": \"\\xa4#,##0.00\",\r\n \"es-AR\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"es-BO\": \"\\xa4#,##0.00\",\r\n \"es-BR\": \"\\xa4#,##0.00\",\r\n \"es-BZ\": \"\\xa4#,##0.00\",\r\n \"es-CL\": \"\\xa4#,##0.00\",\r\n \"es-CO\": \"\\xa4#,##0.00\",\r\n \"es-CR\": \"\\xa4#,##0.00\",\r\n \"es-CU\": \"\\xa4#,##0.00\",\r\n \"es-DO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"es-EA\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-EC\": \"\\xa4#,##0.00\",\r\n \"es-GQ\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-GT\": \"\\xa4#,##0.00\",\r\n \"es-HN\": \"\\xa4#,##0.00\",\r\n \"es-IC\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-MX\": \"\\xa4#,##0.00\",\r\n \"es-NI\": \"\\xa4#,##0.00\",\r\n \"es-PA\": \"\\xa4#,##0.00\",\r\n \"es-PE\": \"\\xa4#,##0.00\",\r\n \"es-PH\": \"#,##0.00\\xa0\\xa4\",\r\n \"es-PR\": \"\\xa4#,##0.00\",\r\n \"es-PY\": \"\\xa4#,##0.00\",\r\n \"es-SV\": \"\\xa4#,##0.00\",\r\n \"es-US\": \"\\xa4#,##0.00\",\r\n \"es-UY\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"es-VE\": \"\\xa4#,##0.00\",\r\n et: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n eu: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n ewo: \"#,##0.00\\xa0\\xa4\",\r\n fa: \"\\u200e\\xa4\\xa0#,##0.00;\\u200e(\\xa4\\xa0#,##0.00)\",\r\n \"fa-AF\": \"\\xa4\\xa0#,##0.00;\\u200e(\\xa4\\xa0#,##0.00)\",\r\n ff: \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Adlm\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-BF\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-CM\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-GH\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-GM\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-GW\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-LR\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-MR\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-NE\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-NG\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-SL\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Adlm-SN\": \"\\xa4\\xa0#,##0.00\",\r\n \"ff-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-BF\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-CM\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GH\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GM\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GN\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-GW\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-LR\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-MR\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-NE\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-NG\": \"#,##0.00\\xa0\\xa4\",\r\n \"ff-Latn-SL\": \"#,##0.00\\xa0\\xa4\",\r\n fi: \"#,##0.00\\xa0\\xa4\",\r\n fil: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n fo: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fo-DK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n fr: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BJ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-BL\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CH\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CI\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-CM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-DJ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-DZ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GP\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-GQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-HT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-KM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-LU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-ML\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MR\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-MU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-NC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-NE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-PF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-PM\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-RE\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-RW\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-SC\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-SN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-SY\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-TD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-TG\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-TN\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-VU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-WF\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"fr-YT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n fur: \"\\xa4\\xa0#,##0.00\",\r\n fy: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n ga: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ga-GB\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n gd: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n gl: \"#,##0.00\\xa0\\xa4\",\r\n gsw: \"#,##0.00\\xa0\\xa4\",\r\n \"gsw-FR\": \"#,##0.00\\xa0\\xa4\",\r\n \"gsw-LI\": \"#,##0.00\\xa0\\xa4\",\r\n gu: \"\\xa4#,##,##0.00;(\\xa4#,##,##0.00)\",\r\n guz: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n gv: \"\\xa4#,##0.00\",\r\n ha: \"\\xa4\\xa0#,##0.00\",\r\n \"ha-GH\": \"\\xa4\\xa0#,##0.00\",\r\n \"ha-NE\": \"\\xa4\\xa0#,##0.00\",\r\n haw: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n he: \"#,##0.00\\xa0\\xa4\",\r\n hi: \"\\xa4#,##,##0.00\",\r\n \"hi-Latn\": \"\\xa4#,##,##0.00\",\r\n hr: \"#,##0.00\\xa0\\xa4\",\r\n \"hr-BA\": \"#,##0.00\\xa0\\xa4\",\r\n hsb: \"#,##0.00\\xa0\\xa4\",\r\n hu: \"#,##0.00\\xa0\\xa4\",\r\n hy: \"#,##0.00\\xa0\\xa4\",\r\n ia: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n id: \"\\xa4#,##0.00\",\r\n ig: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ii: \"\\xa4\\xa0#,##0.00\",\r\n is: \"#,##0.00\\xa0\\xa4\",\r\n it: \"#,##0.00\\xa0\\xa4\",\r\n \"it-CH\": \"#,##0.00\\xa0\\xa4\",\r\n \"it-SM\": \"#,##0.00\\xa0\\xa4\",\r\n \"it-VA\": \"#,##0.00\\xa0\\xa4\",\r\n ja: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n jgo: \"\\xa4\\xa0#,##0.00\",\r\n jmc: \"\\xa4#,##0.00\",\r\n jv: \"\\xa4\\xa0#,##0.00\",\r\n ka: \"#,##0.00\\xa0\\xa4\",\r\n kab: \"#,##0.00\\xa4\",\r\n kam: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kde: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kea: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n kgp: \"\\xa4\\xa0#,##0.00\",\r\n khq: \"#,##0.00\\xa4\",\r\n ki: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kk: \"#,##0.00\\xa0\\xa4\",\r\n kkj: \"\\xa4\\xa0#,##0.00\",\r\n kl: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n kln: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n km: \"#,##0.00\\xa4;(#,##0.00\\xa4)\",\r\n kn: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ko: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ko-KP\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n kok: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ks: \"\\xa4#,##0.00\",\r\n \"ks-Arab\": \"\\xa4#,##0.00\",\r\n \"ks-Deva\": \"\\xa4\\xa0#,##0.00\",\r\n ksb: \"#,##0.00\\xa4\",\r\n ksf: \"#,##0.00\\xa0\\xa4\",\r\n ksh: \"#,##0.00\\xa0\\xa4\",\r\n ku: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n kw: \"\\xa4#,##0.00\",\r\n ky: \"#,##0.00\\xa0\\xa4\",\r\n lag: \"\\xa4\\xa0#,##0.00\",\r\n lb: \"#,##0.00\\xa0\\xa4\",\r\n lg: \"#,##0.00\\xa4\",\r\n lkt: \"\\xa4\\xa0#,##0.00\",\r\n ln: \"#,##0.00\\xa0\\xa4\",\r\n \"ln-AO\": \"#,##0.00\\xa0\\xa4\",\r\n \"ln-CF\": \"#,##0.00\\xa0\\xa4\",\r\n \"ln-CG\": \"#,##0.00\\xa0\\xa4\",\r\n lo: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n lrc: \"\\xa4\\xa0#,##0.00\",\r\n \"lrc-IQ\": \"\\xa4\\xa0#,##0.00\",\r\n lt: \"#,##0.00\\xa0\\xa4\",\r\n lu: \"#,##0.00\\xa4\",\r\n luo: \"#,##0.00\\xa4\",\r\n luy: \"\\xa4#,##0.00;\\xa4-\\xa0#,##0.00\",\r\n lv: \"#,##0.00\\xa0\\xa4\",\r\n mai: \"\\xa4\\xa0#,##0.00\",\r\n mas: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"mas-TZ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mer: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mfe: \"\\xa4\\xa0#,##0.00\",\r\n mg: \"\\xa4#,##0.00\",\r\n mgh: \"\\xa4\\xa0#,##0.00\",\r\n mgo: \"\\xa4\\xa0#,##0.00\",\r\n mi: \"\\xa4\\xa0#,##0.00\",\r\n mk: \"#,##0.00\\xa0\\xa4\",\r\n ml: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mn: \"\\xa4\\xa0#,##0.00\",\r\n mni: \"\\xa4\\xa0#,##0.00\",\r\n \"mni-Beng\": \"\\xa4\\xa0#,##0.00\",\r\n mr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ms: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ms-BN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ms-ID\": \"\\xa4#,##0.00\",\r\n \"ms-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n mt: \"\\xa4#,##0.00\",\r\n mua: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n my: \"\\xa4\\xa0#,##0.00\",\r\n mzn: \"\\xa4\\xa0#,##0.00\",\r\n naq: \"\\xa4#,##0.00\",\r\n nb: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nb-SJ\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n nd: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n nds: \"\\xa4\\xa0#,##0.00\",\r\n \"nds-NL\": \"\\xa4\\xa0#,##0.00\",\r\n ne: \"\\xa4\\xa0#,##,##0.00\",\r\n \"ne-IN\": \"\\xa4\\xa0#,##,##0.00\",\r\n nl: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-AW\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-BE\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-BQ\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-CW\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-SR\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n \"nl-SX\": \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n nmg: \"#,##0.00\\xa0\\xa4\",\r\n nn: \"#,##0.00\\xa0\\xa4\",\r\n nnh: \"\\xa4\\xa0#,##0.00\",\r\n no: \"\\xa4\\xa0#,##0.00;(\\xa4\\xa0#,##0.00)\",\r\n nus: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n nyn: \"\\xa4#,##0.00\",\r\n om: \"\\xa4#,##0.00\",\r\n \"om-KE\": \"\\xa4#,##0.00\",\r\n or: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n os: \"\\xa4\\xa0#,##0.00\",\r\n \"os-RU\": \"\\xa4\\xa0#,##0.00\",\r\n pa: \"\\xa4\\xa0#,##0.00\",\r\n \"pa-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n \"pa-Guru\": \"\\xa4\\xa0#,##0.00\",\r\n pcm: \"\\xa4#,##0.00\",\r\n pl: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n ps: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ps-PK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n pt: \"\\xa4\\xa0#,##0.00\",\r\n \"pt-AO\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-CH\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-CV\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-GQ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-GW\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-LU\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-MO\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-MZ\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-PT\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-ST\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"pt-TL\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n qu: \"\\xa4\\xa0#,##0.00\",\r\n \"qu-BO\": \"\\xa4\\xa0#,##0.00\",\r\n \"qu-EC\": \"\\xa4\\xa0#,##0.00\",\r\n rm: \"#,##0.00\\xa0\\xa4\",\r\n rn: \"#,##0.00\\xa4\",\r\n ro: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"ro-MD\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n rof: \"\\xa4#,##0.00\",\r\n ru: \"#,##0.00\\xa0\\xa4\",\r\n \"ru-BY\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-KG\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-KZ\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-MD\": \"#,##0.00\\xa0\\xa4\",\r\n \"ru-UA\": \"#,##0.00\\xa0\\xa4\",\r\n rw: \"\\xa4\\xa0#,##0.00\",\r\n rwk: \"#,##0.00\\xa4\",\r\n sa: \"\\xa4\\xa0#,##0.00\",\r\n sah: \"#,##0.00\\xa0\\xa4\",\r\n saq: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n sat: \"\\xa4\\xa0#,##0.00\",\r\n \"sat-Olck\": \"\\xa4\\xa0#,##0.00\",\r\n sbp: \"#,##0.00\\xa4\",\r\n sc: \"#,##0.00\\xa0\\xa4\",\r\n sd: \"\\xa4\\xa0#,##0.00\",\r\n \"sd-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n \"sd-Deva\": \"\\xa4\\xa0#,##0.00\",\r\n se: \"#,##0.00\\xa0\\xa4\",\r\n \"se-FI\": \"#,##0.00\\xa0\\xa4\",\r\n \"se-SE\": \"#,##0.00\\xa0\\xa4\",\r\n seh: \"#,##0.00\\xa4\",\r\n ses: \"#,##0.00\\xa4\",\r\n sg: \"\\xa4#,##0.00;\\xa4-#,##0.00\",\r\n shi: \"#,##0.00\\xa4\",\r\n \"shi-Latn\": \"#,##0.00\\xa4\",\r\n \"shi-Tfng\": \"#,##0.00\\xa4\",\r\n si: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n sk: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n sl: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n smn: \"#,##0.00\\xa0\\xa4\",\r\n sn: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n so: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"so-DJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"so-ET\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"so-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n sq: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sq-MK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sq-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n sr: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl-BA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl-ME\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Cyrl-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn-BA\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn-ME\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n \"sr-Latn-XK\": \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n su: \"\\xa4#,##0.00\",\r\n \"su-Latn\": \"\\xa4#,##0.00\",\r\n sv: \"#,##0.00\\xa0\\xa4\",\r\n \"sv-AX\": \"#,##0.00\\xa0\\xa4\",\r\n \"sv-FI\": \"#,##0.00\\xa0\\xa4\",\r\n sw: \"\\xa4\\xa0#,##0.00\",\r\n \"sw-CD\": \"\\xa4\\xa0#,##0.00\",\r\n \"sw-KE\": \"\\xa4\\xa0#,##0.00\",\r\n \"sw-UG\": \"\\xa4\\xa0#,##0.00\",\r\n ta: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ta-LK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ta-MY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ta-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n te: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n teo: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"teo-KE\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n tg: \"#,##0.00\\xa0\\xa4\",\r\n th: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n ti: \"\\xa4#,##0.00\",\r\n \"ti-ER\": \"\\xa4#,##0.00\",\r\n tk: \"#,##0.00\\xa0\\xa4\",\r\n to: \"\\xa4\\xa0#,##0.00\",\r\n tr: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"tr-CY\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n tt: \"#,##0.00\\xa0\\xa4\",\r\n twq: \"#,##0.00\\xa4\",\r\n tzm: \"#,##0.00\\xa0\\xa4\",\r\n ug: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n uk: \"#,##0.00\\xa0\\xa4\",\r\n und: \"\\xa4\\xa0#,##0.00\",\r\n ur: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"ur-IN\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n uz: \"#,##0.00\\xa0\\xa4\",\r\n \"uz-Arab\": \"\\xa4\\xa0#,##0.00\",\r\n \"uz-Cyrl\": \"#,##0.00\\xa0\\xa4\",\r\n \"uz-Latn\": \"#,##0.00\\xa0\\xa4\",\r\n vai: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"vai-Latn\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"vai-Vaii\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n vi: \"#,##0.00\\xa0\\xa4\",\r\n vun: \"\\xa4#,##0.00\",\r\n wae: \"\\xa4\\xa0#,##0.00\",\r\n wo: \"\\xa4\\xa0#,##0.00\",\r\n xh: \"\\xa4#,##0.00\",\r\n xog: \"#,##0.00\\xa0\\xa4\",\r\n yav: \"#,##0.00\\xa0\\xa4;(#,##0.00\\xa0\\xa4)\",\r\n yi: \"\\xa4\\xa0#,##0.00\",\r\n yo: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"yo-BJ\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n yrl: \"\\xa4\\xa0#,##0.00\",\r\n \"yrl-CO\": \"\\xa4\\xa0#,##0.00\",\r\n \"yrl-VE\": \"\\xa4\\xa0#,##0.00\",\r\n yue: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"yue-Hans\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"yue-Hant\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n zgh: \"#,##0.00\\xa4\",\r\n zh: \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hans-SG\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hant\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hant-HK\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n \"zh-Hant-MO\": \"\\xa4#,##0.00;(\\xa4#,##0.00)\",\r\n zu: \"\\xa4#,##0.00;(\\xa4#,##0.00)\"\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/intl/number.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dxConfig from \"../../core/config\";\r\nimport localizationCoreUtils from \"../core\";\r\nimport openXmlCurrencyFormat from \"../open_xml_currency_format\";\r\nimport accountingFormats from \"../cldr-data/accounting_formats\";\r\nvar CURRENCY_STYLES = [\"standard\", \"accounting\"];\r\nvar MAX_FRACTION_DIGITS = 20;\r\nvar detectCurrencySymbolRegex = /([^\\s0]+)?(\\s*)0*[.,]*0*(\\s*)([^\\s0]+)?/;\r\nvar formattersCache = {};\r\nvar getFormatter = format => {\r\n var key = localizationCoreUtils.locale() + \"/\" + JSON.stringify(format);\r\n if (!formattersCache[key]) {\r\n formattersCache[key] = new Intl.NumberFormat(localizationCoreUtils.locale(), format).format\r\n }\r\n return formattersCache[key]\r\n};\r\nvar getCurrencyFormatter = currency => new Intl.NumberFormat(localizationCoreUtils.locale(), {\r\n style: \"currency\",\r\n currency: currency\r\n});\r\nexport default {\r\n engine: function() {\r\n return \"intl\"\r\n },\r\n _formatNumberCore: function(value, format, formatConfig) {\r\n if (\"exponential\" === format) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return getFormatter(this._normalizeFormatConfig(format, formatConfig, value))(value)\r\n },\r\n _normalizeFormatConfig: function(format, formatConfig, value) {\r\n var config;\r\n if (\"decimal\" === format) {\r\n var fractionDigits = String(value).split(\".\")[1];\r\n config = {\r\n minimumIntegerDigits: formatConfig.precision || void 0,\r\n useGrouping: false,\r\n maximumFractionDigits: fractionDigits && fractionDigits.length,\r\n round: value < 0 ? \"ceil\" : \"floor\"\r\n }\r\n } else {\r\n config = this._getPrecisionConfig(formatConfig.precision)\r\n }\r\n if (\"percent\" === format) {\r\n config.style = \"percent\"\r\n } else if (\"currency\" === format) {\r\n var _formatConfig$useCurr;\r\n var useAccountingStyle = null !== (_formatConfig$useCurr = formatConfig.useCurrencyAccountingStyle) && void 0 !== _formatConfig$useCurr ? _formatConfig$useCurr : dxConfig().defaultUseCurrencyAccountingStyle;\r\n config.style = \"currency\";\r\n config.currency = formatConfig.currency || dxConfig().defaultCurrency;\r\n config.currencySign = CURRENCY_STYLES[+useAccountingStyle]\r\n }\r\n return config\r\n },\r\n _getPrecisionConfig: function(precision) {\r\n var config;\r\n if (null === precision) {\r\n config = {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: MAX_FRACTION_DIGITS\r\n }\r\n } else {\r\n config = {\r\n minimumFractionDigits: precision || 0,\r\n maximumFractionDigits: precision || 0\r\n }\r\n }\r\n return config\r\n },\r\n format: function(value, _format) {\r\n if (\"number\" !== typeof value) {\r\n return value\r\n }\r\n _format = this._normalizeFormat(_format);\r\n if (\"default\" === _format.currency) {\r\n _format.currency = dxConfig().defaultCurrency\r\n }\r\n if (!_format || \"function\" !== typeof _format && !_format.type && !_format.formatter) {\r\n return getFormatter(_format)(value)\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _getCurrencySymbolInfo: function(currency) {\r\n var formatter = getCurrencyFormatter(currency);\r\n return this._extractCurrencySymbolInfo(formatter.format(0))\r\n },\r\n _extractCurrencySymbolInfo: function(currencyValueString) {\r\n var match = detectCurrencySymbolRegex.exec(currencyValueString) || [];\r\n var position = match[1] ? \"before\" : \"after\";\r\n var symbol = match[1] || match[4] || \"\";\r\n var delimiter = match[2] || match[3] || \"\";\r\n return {\r\n position: position,\r\n symbol: symbol,\r\n delimiter: delimiter\r\n }\r\n },\r\n getCurrencySymbol: function(currency) {\r\n if (!currency) {\r\n currency = dxConfig().defaultCurrency\r\n }\r\n var symbolInfo = this._getCurrencySymbolInfo(currency);\r\n return {\r\n symbol: symbolInfo.symbol\r\n }\r\n },\r\n getOpenXmlCurrencyFormat: function(currency) {\r\n var targetCurrency = currency || dxConfig().defaultCurrency;\r\n var currencySymbol = this._getCurrencySymbolInfo(targetCurrency).symbol;\r\n var closestAccountingFormat = localizationCoreUtils.getValueByClosestLocale(locale => accountingFormats[locale]);\r\n return openXmlCurrencyFormat(currencySymbol, closestAccountingFormat)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/open_xml_currency_format.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default (currencySymbol, accountingFormat) => {\r\n if (!accountingFormat) {\r\n return\r\n }\r\n var encodedCurrencySymbol = currencySymbol;\r\n if (\"string\" === typeof currencySymbol) {\r\n encodedCurrencySymbol = \"\";\r\n for (var i = 0; i < currencySymbol.length; i++) {\r\n if (\"$\" !== currencySymbol[i]) {\r\n encodedCurrencySymbol += \"\\\\\"\r\n }\r\n encodedCurrencySymbol += currencySymbol[i]\r\n }\r\n }\r\n var encodeSymbols = {\r\n \".00\": \"{0}\",\r\n \"'\": \"\\\\'\",\r\n \"\\\\(\": \"\\\\(\",\r\n \"\\\\)\": \"\\\\)\",\r\n \" \": \"\\\\ \",\r\n '\"': \""\",\r\n \"\\\\\\xa4\": encodedCurrencySymbol\r\n };\r\n var result = accountingFormat.split(\";\");\r\n for (var _i = 0; _i < result.length; _i++) {\r\n for (var symbol in encodeSymbols) {\r\n if (Object.prototype.hasOwnProperty.call(encodeSymbols, symbol)) {\r\n result[_i] = result[_i].replace(new RegExp(symbol, \"g\"), encodeSymbols[symbol])\r\n }\r\n }\r\n }\r\n return 2 === result.length ? result[0] + \"_);\" + result[1] : result[0]\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/number.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport {\r\n escapeRegExp\r\n} from \"../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n getFormatter\r\n} from \"./ldml/number\";\r\nimport config from \"../core/config\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n toFixed\r\n} from \"./utils\";\r\nimport currencyLocalization from \"./currency\";\r\nimport intlNumberLocalization from \"./intl/number\";\r\nvar hasIntl = \"undefined\" !== typeof Intl;\r\nvar MAX_LARGE_NUMBER_POWER = 4;\r\nvar DECIMAL_BASE = 10;\r\nvar NUMERIC_FORMATS = [\"currency\", \"fixedpoint\", \"exponential\", \"percent\", \"decimal\"];\r\nvar LargeNumberFormatPostfixes = {\r\n 1: \"K\",\r\n 2: \"M\",\r\n 3: \"B\",\r\n 4: \"T\"\r\n};\r\nvar LargeNumberFormatPowers = {\r\n largenumber: \"auto\",\r\n thousands: 1,\r\n millions: 2,\r\n billions: 3,\r\n trillions: 4\r\n};\r\nvar numberLocalization = dependencyInjector({\r\n engine: function() {\r\n return \"base\"\r\n },\r\n numericFormats: NUMERIC_FORMATS,\r\n defaultLargeNumberFormatPostfixes: LargeNumberFormatPostfixes,\r\n _parseNumberFormatString: function(formatType) {\r\n var formatObject = {};\r\n if (!formatType || \"string\" !== typeof formatType) {\r\n return\r\n }\r\n var formatList = formatType.toLowerCase().split(\" \");\r\n each(formatList, (index, value) => {\r\n if (NUMERIC_FORMATS.includes(value)) {\r\n formatObject.formatType = value\r\n } else if (value in LargeNumberFormatPowers) {\r\n formatObject.power = LargeNumberFormatPowers[value]\r\n }\r\n });\r\n if (formatObject.power && !formatObject.formatType) {\r\n formatObject.formatType = \"fixedpoint\"\r\n }\r\n if (formatObject.formatType) {\r\n return formatObject\r\n }\r\n },\r\n _calculateNumberPower: function(value, base, minPower, maxPower) {\r\n var number = Math.abs(value);\r\n var power = 0;\r\n if (number > 1) {\r\n while (number && number >= base && (void 0 === maxPower || power < maxPower)) {\r\n power++;\r\n number /= base\r\n }\r\n } else if (number > 0 && number < 1) {\r\n while (number < 1 && (void 0 === minPower || power > minPower)) {\r\n power--;\r\n number *= base\r\n }\r\n }\r\n return power\r\n },\r\n _getNumberByPower: function(number, power, base) {\r\n var result = number;\r\n while (power > 0) {\r\n result /= base;\r\n power--\r\n }\r\n while (power < 0) {\r\n result *= base;\r\n power++\r\n }\r\n return result\r\n },\r\n _formatNumber: function(value, formatObject, formatConfig) {\r\n if (\"auto\" === formatObject.power) {\r\n formatObject.power = this._calculateNumberPower(value, 1e3, 0, MAX_LARGE_NUMBER_POWER)\r\n }\r\n if (formatObject.power) {\r\n value = this._getNumberByPower(value, formatObject.power, 1e3)\r\n }\r\n var powerPostfix = this.defaultLargeNumberFormatPostfixes[formatObject.power] || \"\";\r\n var result = this._formatNumberCore(value, formatObject.formatType, formatConfig);\r\n result = result.replace(/(\\d|.$)(\\D*)$/, \"$1\" + powerPostfix + \"$2\");\r\n return result\r\n },\r\n _formatNumberExponential: function(value, formatConfig) {\r\n var power = this._calculateNumberPower(value, DECIMAL_BASE);\r\n var number = this._getNumberByPower(value, power, DECIMAL_BASE);\r\n if (void 0 === formatConfig.precision) {\r\n formatConfig.precision = 1\r\n }\r\n if (number.toFixed(formatConfig.precision || 0) >= DECIMAL_BASE) {\r\n power++;\r\n number /= DECIMAL_BASE\r\n }\r\n var powString = (power >= 0 ? \"+\" : \"\") + power.toString();\r\n return this._formatNumberCore(number, \"fixedpoint\", formatConfig) + \"E\" + powString\r\n },\r\n _addZeroes: function(value, precision) {\r\n var multiplier = Math.pow(10, precision);\r\n var sign = value < 0 ? \"-\" : \"\";\r\n value = (Math.abs(value) * multiplier >>> 0) / multiplier;\r\n var result = value.toString();\r\n while (result.length < precision) {\r\n result = \"0\" + result\r\n }\r\n return sign + result\r\n },\r\n _addGroupSeparators: function(value) {\r\n var parts = value.toString().split(\".\");\r\n return parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g, config().thousandsSeparator) + (parts[1] ? config().decimalSeparator + parts[1] : \"\")\r\n },\r\n _formatNumberCore: function(value, format, formatConfig) {\r\n if (\"exponential\" === format) {\r\n return this._formatNumberExponential(value, formatConfig)\r\n }\r\n if (\"decimal\" !== format && null !== formatConfig.precision) {\r\n formatConfig.precision = formatConfig.precision || 0\r\n }\r\n if (\"percent\" === format) {\r\n value *= 100\r\n }\r\n if (void 0 !== formatConfig.precision) {\r\n if (\"decimal\" === format) {\r\n value = this._addZeroes(value, formatConfig.precision)\r\n } else {\r\n value = null === formatConfig.precision ? value.toPrecision() : toFixed(value, formatConfig.precision)\r\n }\r\n }\r\n if (\"decimal\" !== format) {\r\n value = this._addGroupSeparators(value)\r\n } else {\r\n value = value.toString().replace(\".\", config().decimalSeparator)\r\n }\r\n if (\"percent\" === format) {\r\n value += \"%\"\r\n }\r\n return value\r\n },\r\n _normalizeFormat: function(format) {\r\n if (!format) {\r\n return {}\r\n }\r\n if (\"function\" === typeof format) {\r\n return format\r\n }\r\n if (!isPlainObject(format)) {\r\n format = {\r\n type: format\r\n }\r\n }\r\n return format\r\n },\r\n _getSeparators: function() {\r\n return {\r\n decimalSeparator: this.getDecimalSeparator(),\r\n thousandsSeparator: this.getThousandsSeparator()\r\n }\r\n },\r\n getThousandsSeparator: function() {\r\n return this.format(1e4, \"fixedPoint\")[2]\r\n },\r\n getDecimalSeparator: function() {\r\n return this.format(1.2, {\r\n type: \"fixedPoint\",\r\n precision: 1\r\n })[1]\r\n },\r\n convertDigits: function(value, toStandard) {\r\n var digits = this.format(90, \"decimal\");\r\n if (\"string\" !== typeof value || \"0\" === digits[1]) {\r\n return value\r\n }\r\n var fromFirstDigit = toStandard ? digits[1] : \"0\";\r\n var toFirstDigit = toStandard ? \"0\" : digits[1];\r\n var fromLastDigit = toStandard ? digits[0] : \"9\";\r\n var regExp = new RegExp(\"[\" + fromFirstDigit + \"-\" + fromLastDigit + \"]\", \"g\");\r\n return value.replace(regExp, char => String.fromCharCode(char.charCodeAt(0) + (toFirstDigit.charCodeAt(0) - fromFirstDigit.charCodeAt(0))))\r\n },\r\n getNegativeEtalonRegExp: function(format) {\r\n var separators = this._getSeparators();\r\n var digitalRegExp = new RegExp(\"[0-9\" + escapeRegExp(separators.decimalSeparator + separators.thousandsSeparator) + \"]+\", \"g\");\r\n var negativeEtalon = this.format(-1, format).replace(digitalRegExp, \"1\");\r\n [\"\\\\\", \"(\", \")\", \"[\", \"]\", \"*\", \"+\", \"$\", \"^\", \"?\", \"|\", \"{\", \"}\"].forEach(char => {\r\n negativeEtalon = negativeEtalon.replace(new RegExp(\"\\\\\".concat(char), \"g\"), \"\\\\\".concat(char))\r\n });\r\n negativeEtalon = negativeEtalon.replace(/ /g, \"\\\\s\");\r\n negativeEtalon = negativeEtalon.replace(/1/g, \".*\");\r\n return new RegExp(negativeEtalon, \"g\")\r\n },\r\n getSign: function(text, format) {\r\n if (!format) {\r\n if (\"-\" === text.replace(/[^0-9-]/g, \"\").charAt(0)) {\r\n return -1\r\n }\r\n return 1\r\n }\r\n var negativeEtalon = this.getNegativeEtalonRegExp(format);\r\n return text.match(negativeEtalon) ? -1 : 1\r\n },\r\n format: function(value, _format) {\r\n if (\"number\" !== typeof value) {\r\n return value\r\n }\r\n if (\"number\" === typeof _format) {\r\n return value\r\n }\r\n _format = _format && _format.formatter || _format;\r\n if (\"function\" === typeof _format) {\r\n return _format(value)\r\n }\r\n _format = this._normalizeFormat(_format);\r\n if (!_format.type) {\r\n _format.type = \"decimal\"\r\n }\r\n var numberConfig = this._parseNumberFormatString(_format.type);\r\n if (!numberConfig) {\r\n var formatterConfig = this._getSeparators();\r\n formatterConfig.unlimitedIntegerDigits = _format.unlimitedIntegerDigits;\r\n return this.convertDigits(getFormatter(_format.type, formatterConfig)(value))\r\n }\r\n return this._formatNumber(value, numberConfig, _format)\r\n },\r\n parse: function(text, format) {\r\n if (!text) {\r\n return\r\n }\r\n if (format && format.parser) {\r\n return format.parser(text)\r\n }\r\n text = this.convertDigits(text, true);\r\n if (format && \"string\" !== typeof format) {\r\n errors.log(\"W0011\")\r\n }\r\n var decimalSeparator = this.getDecimalSeparator();\r\n var regExp = new RegExp(\"[^0-9\" + escapeRegExp(decimalSeparator) + \"]\", \"g\");\r\n var cleanedText = text.replace(regExp, \"\").replace(decimalSeparator, \".\").replace(/\\.$/g, \"\");\r\n if (\".\" === cleanedText || \"\" === cleanedText) {\r\n return null\r\n }\r\n if (this._calcSignificantDigits(cleanedText) > 15) {\r\n return NaN\r\n }\r\n var parsed = +cleanedText * this.getSign(text, format);\r\n format = this._normalizeFormat(format);\r\n var formatConfig = this._parseNumberFormatString(format.type);\r\n var power = null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.power;\r\n if (power) {\r\n if (\"auto\" === power) {\r\n var match = text.match(/\\d(K|M|B|T)/);\r\n if (match) {\r\n power = Object.keys(LargeNumberFormatPostfixes).find(power => LargeNumberFormatPostfixes[power] === match[1])\r\n }\r\n }\r\n parsed *= Math.pow(10, 3 * power)\r\n }\r\n if (\"percent\" === (null === formatConfig || void 0 === formatConfig ? void 0 : formatConfig.formatType)) {\r\n parsed /= 100\r\n }\r\n return parsed\r\n },\r\n _calcSignificantDigits: function(text) {\r\n var [integer, fractional] = text.split(\".\");\r\n var calcDigitsAfterLeadingZeros = digits => {\r\n var index = -1;\r\n for (var i = 0; i < digits.length; i++) {\r\n if (\"0\" !== digits[i]) {\r\n index = i;\r\n break\r\n }\r\n }\r\n return index > -1 ? digits.length - index : 0\r\n };\r\n var result = 0;\r\n if (integer) {\r\n result += calcDigitsAfterLeadingZeros(integer.split(\"\"))\r\n }\r\n if (fractional) {\r\n result += calcDigitsAfterLeadingZeros(fractional.split(\"\").reverse())\r\n }\r\n return result\r\n }\r\n});\r\nnumberLocalization.inject(currencyLocalization);\r\nif (hasIntl) {\r\n numberLocalization.inject(intlNumberLocalization)\r\n}\r\nexport default numberLocalization;\r\n","/**\r\n * DevExtreme (esm/localization/ldml/date.format.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport numberLocalization from \"../number\";\r\nvar ARABIC_COMMA = \"\\u060c\";\r\nvar FORMAT_SEPARATORS = \" .,:;/\\\\<>()-[]\" + ARABIC_COMMA;\r\nvar AM_PM_PATTERN = \". m.\";\r\nvar checkDigit = function(char) {\r\n var code = char && numberLocalization.convertDigits(char, false).charCodeAt(0);\r\n var zeroCode = numberLocalization.convertDigits(\"0\", false).charCodeAt(0);\r\n return zeroCode <= code && code < zeroCode + 10\r\n};\r\nvar checkPatternContinue = function(text, patterns, index, isDigit) {\r\n var char = text[index];\r\n var nextChar = text[index + 1];\r\n if (!isDigit) {\r\n if (\".\" === char || \" \" === char && text.slice(index - 1, index + 3) === AM_PM_PATTERN) {\r\n return true\r\n }\r\n if (\"-\" === char && !checkDigit(nextChar)) {\r\n return true\r\n }\r\n }\r\n var isDigitChanged = isDigit && patterns.some(pattern => text[index] !== pattern[index]);\r\n return FORMAT_SEPARATORS.indexOf(char) < 0 && isDigit === checkDigit(char) && (!isDigit || isDigitChanged)\r\n};\r\nvar getPatternStartIndex = function(defaultPattern, index) {\r\n if (!checkDigit(defaultPattern[index])) {\r\n while (index > 0 && !checkDigit(defaultPattern[index - 1]) && (\".\" === defaultPattern[index - 1] || FORMAT_SEPARATORS.indexOf(defaultPattern[index - 1]) < 0)) {\r\n index--\r\n }\r\n }\r\n return index\r\n};\r\nvar getDifference = function(defaultPattern, patterns, processedIndexes, isDigit) {\r\n var i = 0;\r\n var result = [];\r\n var patternsFilter = function(pattern) {\r\n return defaultPattern[i] !== pattern[i] && (void 0 === isDigit || checkDigit(defaultPattern[i]) === isDigit)\r\n };\r\n if (!Array.isArray(patterns)) {\r\n patterns = [patterns]\r\n }\r\n for (i = 0; i < defaultPattern.length; i++) {\r\n if (processedIndexes.indexOf(i) < 0 && patterns.filter(patternsFilter).length) {\r\n i = getPatternStartIndex(defaultPattern, i);\r\n do {\r\n isDigit = checkDigit(defaultPattern[i]);\r\n if (!result.length && !isDigit && checkDigit(patterns[0][i])) {\r\n break\r\n }\r\n result.push(i);\r\n processedIndexes.unshift(i);\r\n i++\r\n } while (defaultPattern[i] && checkPatternContinue(defaultPattern, patterns, i, isDigit));\r\n break\r\n }\r\n }\r\n if (1 === result.length && (\"0\" === defaultPattern[processedIndexes[0] - 1] || \"\\u0660\" === defaultPattern[processedIndexes[0] - 1])) {\r\n processedIndexes.unshift(processedIndexes[0] - 1)\r\n }\r\n return result\r\n};\r\nvar replaceCharsCore = function(pattern, indexes, char, patternPositions) {\r\n var baseCharIndex = indexes[0];\r\n var patternIndex = baseCharIndex < patternPositions.length ? patternPositions[baseCharIndex] : baseCharIndex;\r\n indexes.forEach((function(_, index) {\r\n pattern = pattern.substr(0, patternIndex + index) + (char.length > 1 ? char[index] : char) + pattern.substr(patternIndex + index + 1)\r\n }));\r\n if (1 === indexes.length) {\r\n pattern = pattern.replace(\"0\" + char, char + char);\r\n pattern = pattern.replace(\"\\u0660\" + char, char + char)\r\n }\r\n return pattern\r\n};\r\nvar replaceChars = function(pattern, indexes, char, patternPositions) {\r\n var i;\r\n var index;\r\n var patternIndex;\r\n if (!checkDigit(pattern[indexes[0]] || \"0\")) {\r\n var letterCount = Math.max(indexes.length <= 3 ? 3 : 4, char.length);\r\n while (indexes.length > letterCount) {\r\n index = indexes.pop();\r\n patternIndex = patternPositions[index];\r\n patternPositions[index] = -1;\r\n for (i = index + 1; i < patternPositions.length; i++) {\r\n patternPositions[i]--\r\n }\r\n pattern = pattern.substr(0, patternIndex) + pattern.substr(patternIndex + 1)\r\n }\r\n index = indexes[indexes.length - 1] + 1, patternIndex = index < patternPositions.length ? patternPositions[index] : index;\r\n while (indexes.length < letterCount) {\r\n indexes.push(indexes[indexes.length - 1] + 1);\r\n for (i = index; i < patternPositions.length; i++) {\r\n patternPositions[i]++\r\n }\r\n pattern = pattern.substr(0, patternIndex) + \" \" + pattern.substr(patternIndex)\r\n }\r\n }\r\n pattern = replaceCharsCore(pattern, indexes, char, patternPositions);\r\n return pattern\r\n};\r\nvar formatValue = function(value, formatter) {\r\n if (Array.isArray(value)) {\r\n return value.map((function(value) {\r\n return (formatter(value) || \"\").toString()\r\n }))\r\n }\r\n return (formatter(value) || \"\").toString()\r\n};\r\nvar ESCAPE_CHARS_REGEXP = /[a-zA-Z]/g;\r\nvar escapeChars = function(pattern, defaultPattern, processedIndexes, patternPositions) {\r\n var escapeIndexes = defaultPattern.split(\"\").map((function(char, index) {\r\n if (processedIndexes.indexOf(index) < 0 && (char.match(ESCAPE_CHARS_REGEXP) || \"'\" === char)) {\r\n return patternPositions[index]\r\n }\r\n return -1\r\n }));\r\n pattern = pattern.split(\"\").map((function(char, index) {\r\n var result = char;\r\n var isCurrentCharEscaped = escapeIndexes.indexOf(index) >= 0;\r\n var isPrevCharEscaped = index > 0 && escapeIndexes.indexOf(index - 1) >= 0;\r\n var isNextCharEscaped = escapeIndexes.indexOf(index + 1) >= 0;\r\n if (isCurrentCharEscaped) {\r\n if (!isPrevCharEscaped) {\r\n result = \"'\" + result\r\n }\r\n if (!isNextCharEscaped) {\r\n result += \"'\"\r\n }\r\n }\r\n return result\r\n })).join(\"\");\r\n return pattern\r\n};\r\nexport var getFormat = function(formatter) {\r\n var processedIndexes = [];\r\n var defaultPattern = formatValue(new Date(2009, 8, 8, 6, 5, 4), formatter);\r\n var patternPositions = defaultPattern.split(\"\").map((function(_, index) {\r\n return index\r\n }));\r\n var result = defaultPattern;\r\n var replacedPatterns = {};\r\n var datePatterns = [{\r\n date: new Date(2009, 8, 8, 6, 5, 4, 111),\r\n pattern: \"S\"\r\n }, {\r\n date: new Date(2009, 8, 8, 6, 5, 2),\r\n pattern: \"s\"\r\n }, {\r\n date: new Date(2009, 8, 8, 6, 2, 4),\r\n pattern: \"m\"\r\n }, {\r\n date: new Date(2009, 8, 8, 18, 5, 4),\r\n pattern: \"H\",\r\n isDigit: true\r\n }, {\r\n date: new Date(2009, 8, 8, 2, 5, 4),\r\n pattern: \"h\",\r\n isDigit: true\r\n }, {\r\n date: new Date(2009, 8, 8, 18, 5, 4),\r\n pattern: \"a\",\r\n isDigit: false\r\n }, {\r\n date: new Date(2009, 8, 1, 6, 5, 4),\r\n pattern: \"d\"\r\n }, {\r\n date: [new Date(2009, 8, 2, 6, 5, 4), new Date(2009, 8, 3, 6, 5, 4), new Date(2009, 8, 4, 6, 5, 4)],\r\n pattern: \"E\"\r\n }, {\r\n date: new Date(2009, 9, 6, 6, 5, 4),\r\n pattern: \"M\"\r\n }, {\r\n date: new Date(1998, 8, 8, 6, 5, 4),\r\n pattern: \"y\"\r\n }];\r\n if (!result) {\r\n return\r\n }\r\n datePatterns.forEach((function(test) {\r\n var diff = getDifference(defaultPattern, formatValue(test.date, formatter), processedIndexes, test.isDigit);\r\n var pattern = \"M\" === test.pattern && !replacedPatterns.d ? \"L\" : test.pattern;\r\n result = replaceChars(result, diff, pattern, patternPositions);\r\n replacedPatterns[pattern] = diff.length\r\n }));\r\n result = escapeChars(result, defaultPattern, processedIndexes, patternPositions);\r\n if (processedIndexes.length) {\r\n return result\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/ldml/date.parser.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n escapeRegExp\r\n} from \"../../core/utils/common\";\r\nimport {\r\n logger\r\n} from \"../../core/utils/console\";\r\nvar FORMAT_TYPES = {\r\n 3: \"abbreviated\",\r\n 4: \"wide\",\r\n 5: \"narrow\"\r\n};\r\nvar monthRegExpGenerator = function(count, dateParts) {\r\n if (count > 2) {\r\n return Object.keys(FORMAT_TYPES).map((function(count) {\r\n return [\"format\", \"standalone\"].map((function(type) {\r\n return dateParts.getMonthNames(FORMAT_TYPES[count], type).join(\"|\")\r\n })).join(\"|\")\r\n })).join(\"|\")\r\n }\r\n return 2 === count ? \"1[012]|0?[1-9]\" : \"0??[1-9]|1[012]\"\r\n};\r\nvar PATTERN_REGEXPS = {\r\n \":\": function(count, dateParts) {\r\n var countSuffix = count > 1 ? \"{\".concat(count, \"}\") : \"\";\r\n var timeSeparator = escapeRegExp(dateParts.getTimeSeparator());\r\n \":\" !== timeSeparator && (timeSeparator = \"\".concat(timeSeparator, \"|:\"));\r\n return \"\".concat(timeSeparator).concat(countSuffix)\r\n },\r\n y: function(count) {\r\n return 2 === count ? \"[0-9]{\".concat(count, \"}\") : \"[0-9]+?\"\r\n },\r\n M: monthRegExpGenerator,\r\n L: monthRegExpGenerator,\r\n Q: function(count, dateParts) {\r\n if (count > 2) {\r\n return dateParts.getQuarterNames(FORMAT_TYPES[count], \"format\").join(\"|\")\r\n }\r\n return \"0?[1-4]\"\r\n },\r\n E: function(count, dateParts) {\r\n return \"\\\\D*\"\r\n },\r\n a: function(count, dateParts) {\r\n return dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\").join(\"|\")\r\n },\r\n d: function(count) {\r\n return 2 === count ? \"3[01]|[12][0-9]|0?[1-9]\" : \"0??[1-9]|[12][0-9]|3[01]\"\r\n },\r\n H: function(count) {\r\n return 2 === count ? \"2[0-3]|1[0-9]|0?[0-9]\" : \"0??[0-9]|1[0-9]|2[0-3]\"\r\n },\r\n h: function(count) {\r\n return 2 === count ? \"1[012]|0?[1-9]\" : \"0??[1-9]|1[012]\"\r\n },\r\n m: function(count) {\r\n return 2 === count ? \"[1-5][0-9]|0?[0-9]\" : \"0??[0-9]|[1-5][0-9]\"\r\n },\r\n s: function(count) {\r\n return 2 === count ? \"[1-5][0-9]|0?[0-9]\" : \"0??[0-9]|[1-5][0-9]\"\r\n },\r\n S: function(count) {\r\n return \"[0-9]{1,\".concat(count, \"}\")\r\n },\r\n w: function(count) {\r\n return 2 === count ? \"[1-5][0-9]|0?[0-9]\" : \"0??[0-9]|[1-5][0-9]\"\r\n }\r\n};\r\nvar parseNumber = Number;\r\nvar caseInsensitiveIndexOf = function(array, value) {\r\n return array.map(item => item.toLowerCase()).indexOf(value.toLowerCase())\r\n};\r\nvar monthPatternParser = function(text, count, dateParts) {\r\n if (count > 2) {\r\n return [\"format\", \"standalone\"].map((function(type) {\r\n return Object.keys(FORMAT_TYPES).map((function(count) {\r\n var monthNames = dateParts.getMonthNames(FORMAT_TYPES[count], type);\r\n return caseInsensitiveIndexOf(monthNames, text)\r\n }))\r\n })).reduce((function(a, b) {\r\n return a.concat(b)\r\n })).filter((function(index) {\r\n return index >= 0\r\n }))[0]\r\n }\r\n return parseNumber(text) - 1\r\n};\r\nvar PATTERN_PARSERS = {\r\n y: function(text, count) {\r\n var year = parseNumber(text);\r\n if (2 === count) {\r\n return year < 30 ? 2e3 + year : 1900 + year\r\n }\r\n return year\r\n },\r\n M: monthPatternParser,\r\n L: monthPatternParser,\r\n Q: function(text, count, dateParts) {\r\n if (count > 2) {\r\n return dateParts.getQuarterNames(FORMAT_TYPES[count], \"format\").indexOf(text)\r\n }\r\n return parseNumber(text) - 1\r\n },\r\n E: function(text, count, dateParts) {\r\n var dayNames = dateParts.getDayNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\");\r\n return caseInsensitiveIndexOf(dayNames, text)\r\n },\r\n a: function(text, count, dateParts) {\r\n var periodNames = dateParts.getPeriodNames(FORMAT_TYPES[count < 3 ? 3 : count], \"format\");\r\n return caseInsensitiveIndexOf(periodNames, text)\r\n },\r\n d: parseNumber,\r\n H: parseNumber,\r\n h: parseNumber,\r\n m: parseNumber,\r\n s: parseNumber,\r\n S: function(text, count) {\r\n count = Math.max(count, 3);\r\n text = text.slice(0, 3);\r\n while (count < 3) {\r\n text += \"0\";\r\n count++\r\n }\r\n return parseNumber(text)\r\n }\r\n};\r\nvar ORDERED_PATTERNS = [\"y\", \"M\", \"d\", \"h\", \"m\", \"s\", \"S\"];\r\nvar PATTERN_SETTERS = {\r\n y: \"setFullYear\",\r\n M: \"setMonth\",\r\n L: \"setMonth\",\r\n a: function(date, value, datePartValues) {\r\n var hours = date.getHours();\r\n var hourPartValue = datePartValues.h;\r\n if (void 0 !== hourPartValue && hourPartValue !== hours) {\r\n hours--\r\n }\r\n if (!value && 12 === hours) {\r\n hours = 0\r\n } else if (value && 12 !== hours) {\r\n hours += 12\r\n }\r\n date.setHours(hours)\r\n },\r\n d: \"setDate\",\r\n H: \"setHours\",\r\n h: \"setHours\",\r\n m: \"setMinutes\",\r\n s: \"setSeconds\",\r\n S: \"setMilliseconds\"\r\n};\r\nvar getSameCharCount = function(text, index) {\r\n var char = text[index];\r\n if (!char) {\r\n return 0\r\n }\r\n var count = 0;\r\n do {\r\n index++;\r\n count++\r\n } while (text[index] === char);\r\n return count\r\n};\r\nvar createPattern = function(char, count) {\r\n var result = \"\";\r\n for (var i = 0; i < count; i++) {\r\n result += char\r\n }\r\n return result\r\n};\r\nexport var getRegExpInfo = function(format, dateParts) {\r\n var regexpText = \"\";\r\n var stubText = \"\";\r\n var isEscaping;\r\n var patterns = [];\r\n var addPreviousStub = function() {\r\n if (stubText) {\r\n patterns.push(\"'\".concat(stubText, \"'\"));\r\n regexpText += \"\".concat(escapeRegExp(stubText), \")\");\r\n stubText = \"\"\r\n }\r\n };\r\n for (var i = 0; i < format.length; i++) {\r\n var char = format[i];\r\n var isEscapeChar = \"'\" === char;\r\n var regexpPart = PATTERN_REGEXPS[char];\r\n if (isEscapeChar) {\r\n isEscaping = !isEscaping;\r\n if (\"'\" !== format[i - 1]) {\r\n continue\r\n }\r\n }\r\n if (regexpPart && !isEscaping) {\r\n var count = getSameCharCount(format, i);\r\n var pattern = createPattern(char, count);\r\n addPreviousStub();\r\n patterns.push(pattern);\r\n regexpText += \"(\".concat(regexpPart(count, dateParts), \")\");\r\n i += count - 1\r\n } else {\r\n if (!stubText) {\r\n regexpText += \"(\"\r\n }\r\n stubText += char\r\n }\r\n }\r\n addPreviousStub();\r\n if (!isPossibleForParsingFormat(patterns)) {\r\n logger.warn(\"The following format may be parsed incorrectly: \".concat(format, \".\"))\r\n }\r\n return {\r\n patterns: patterns,\r\n regexp: new RegExp(\"^\".concat(regexpText, \"$\"), \"i\")\r\n }\r\n};\r\nvar digitFieldSymbols = [\"d\", \"H\", \"h\", \"m\", \"s\", \"w\", \"M\", \"L\", \"Q\"];\r\nexport var isPossibleForParsingFormat = function(patterns) {\r\n var isDigitPattern = pattern => {\r\n if (!pattern) {\r\n return false\r\n }\r\n var char = pattern[0];\r\n return [\"y\", \"S\"].includes(char) || digitFieldSymbols.includes(char) && pattern.length < 3\r\n };\r\n var possibleForParsing = true;\r\n var ambiguousDigitPatternsCount = 0;\r\n return patterns.every((pattern, index, patterns) => {\r\n if (isDigitPattern(pattern)) {\r\n if ((pattern => \"S\" !== pattern[0] && 2 !== pattern.length)(pattern)) {\r\n possibleForParsing = ++ambiguousDigitPatternsCount < 2\r\n }\r\n if (!isDigitPattern(patterns[index + 1])) {\r\n ambiguousDigitPatternsCount = 0\r\n }\r\n }\r\n return possibleForParsing\r\n })\r\n};\r\nexport var getPatternSetters = function() {\r\n return PATTERN_SETTERS\r\n};\r\nvar setPatternPart = function(date, pattern, text, dateParts, datePartValues) {\r\n var patternChar = pattern[0];\r\n var partSetter = PATTERN_SETTERS[patternChar];\r\n var partParser = PATTERN_PARSERS[patternChar];\r\n if (partSetter && partParser) {\r\n var value = partParser(text, pattern.length, dateParts);\r\n datePartValues[pattern] = value;\r\n if (date[partSetter]) {\r\n date[partSetter](value)\r\n } else {\r\n partSetter(date, value, datePartValues)\r\n }\r\n }\r\n};\r\nvar setPatternPartFromNow = function(date, pattern, now) {\r\n var setterName = PATTERN_SETTERS[pattern];\r\n var getterName = \"g\" + setterName.substr(1);\r\n var value = now[getterName]();\r\n date[setterName](value)\r\n};\r\nvar getShortPatterns = function(fullPatterns) {\r\n return fullPatterns.map((function(pattern) {\r\n if (\"'\" === pattern[0]) {\r\n return \"\"\r\n } else {\r\n return \"H\" === pattern[0] ? \"h\" : pattern[0]\r\n }\r\n }))\r\n};\r\nvar getMaxOrderedPatternIndex = function(patterns) {\r\n var indexes = patterns.map((function(pattern) {\r\n return ORDERED_PATTERNS.indexOf(pattern)\r\n }));\r\n return Math.max.apply(Math, indexes)\r\n};\r\nvar getOrderedFormatPatterns = function(formatPatterns) {\r\n var otherPatterns = formatPatterns.filter((function(pattern) {\r\n return ORDERED_PATTERNS.indexOf(pattern) < 0\r\n }));\r\n return ORDERED_PATTERNS.concat(otherPatterns)\r\n};\r\nexport var getParser = function(format, dateParts) {\r\n var regExpInfo = getRegExpInfo(format, dateParts);\r\n return function(text) {\r\n var regExpResult = regExpInfo.regexp.exec(text);\r\n if (regExpResult) {\r\n var now = new Date;\r\n var date = new Date(now.getFullYear(), 0, 1);\r\n var formatPatterns = getShortPatterns(regExpInfo.patterns);\r\n var maxPatternIndex = getMaxOrderedPatternIndex(formatPatterns);\r\n var orderedFormatPatterns = getOrderedFormatPatterns(formatPatterns);\r\n var datePartValues = {};\r\n orderedFormatPatterns.forEach((function(pattern, index) {\r\n if (!pattern || index < ORDERED_PATTERNS.length && index > maxPatternIndex) {\r\n return\r\n }\r\n var patternIndex = formatPatterns.indexOf(pattern);\r\n if (patternIndex >= 0) {\r\n var regExpPattern = regExpInfo.patterns[patternIndex];\r\n var regExpText = regExpResult[patternIndex + 1];\r\n setPatternPart(date, regExpPattern, regExpText, dateParts, datePartValues)\r\n } else {\r\n setPatternPartFromNow(date, pattern, now)\r\n }\r\n }));\r\n return date\r\n }\r\n return null\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/cldr-data/first_day_of_week_data.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n// !!! AUTO-GENERATED FILE, DO NOT EDIT\r\nexport default {\r\n \"af-NA\": 1,\r\n agq: 1,\r\n ak: 1,\r\n ar: 6,\r\n \"ar-EH\": 1,\r\n \"ar-ER\": 1,\r\n \"ar-KM\": 1,\r\n \"ar-LB\": 1,\r\n \"ar-MA\": 1,\r\n \"ar-MR\": 1,\r\n \"ar-PS\": 1,\r\n \"ar-SO\": 1,\r\n \"ar-SS\": 1,\r\n \"ar-TD\": 1,\r\n \"ar-TN\": 1,\r\n asa: 1,\r\n ast: 1,\r\n az: 1,\r\n \"az-Cyrl\": 1,\r\n bas: 1,\r\n be: 1,\r\n bem: 1,\r\n bez: 1,\r\n bg: 1,\r\n bm: 1,\r\n br: 1,\r\n bs: 1,\r\n \"bs-Cyrl\": 1,\r\n ca: 1,\r\n ce: 1,\r\n cgg: 1,\r\n ckb: 6,\r\n cs: 1,\r\n cy: 1,\r\n da: 1,\r\n de: 1,\r\n dje: 1,\r\n dsb: 1,\r\n dua: 1,\r\n dyo: 1,\r\n ee: 1,\r\n el: 1,\r\n \"en-001\": 1,\r\n \"en-AE\": 6,\r\n \"en-BI\": 1,\r\n \"en-MP\": 1,\r\n \"en-MV\": 5,\r\n \"en-SD\": 6,\r\n eo: 1,\r\n es: 1,\r\n et: 1,\r\n eu: 1,\r\n ewo: 1,\r\n fa: 6,\r\n ff: 1,\r\n \"ff-Adlm\": 1,\r\n fi: 1,\r\n fo: 1,\r\n fr: 1,\r\n \"fr-DJ\": 6,\r\n \"fr-DZ\": 6,\r\n \"fr-SY\": 6,\r\n fur: 1,\r\n fy: 1,\r\n ga: 1,\r\n gd: 1,\r\n gl: 1,\r\n gsw: 1,\r\n gv: 1,\r\n ha: 1,\r\n hr: 1,\r\n hsb: 1,\r\n hu: 1,\r\n hy: 1,\r\n ia: 1,\r\n ig: 1,\r\n is: 1,\r\n it: 1,\r\n jgo: 1,\r\n jmc: 1,\r\n ka: 1,\r\n kab: 6,\r\n kde: 1,\r\n kea: 1,\r\n khq: 1,\r\n kk: 1,\r\n kkj: 1,\r\n kl: 1,\r\n \"ko-KP\": 1,\r\n ksb: 1,\r\n ksf: 1,\r\n ksh: 1,\r\n ku: 1,\r\n kw: 1,\r\n ky: 1,\r\n lag: 1,\r\n lb: 1,\r\n lg: 1,\r\n ln: 1,\r\n lrc: 6,\r\n lt: 1,\r\n lu: 1,\r\n lv: 1,\r\n \"mas-TZ\": 1,\r\n mfe: 1,\r\n mg: 1,\r\n mgo: 1,\r\n mi: 1,\r\n mk: 1,\r\n mn: 1,\r\n ms: 1,\r\n mua: 1,\r\n mzn: 6,\r\n naq: 1,\r\n nds: 1,\r\n nl: 1,\r\n nmg: 1,\r\n nnh: 1,\r\n no: 1,\r\n nus: 1,\r\n nyn: 1,\r\n os: 1,\r\n pcm: 1,\r\n pl: 1,\r\n ps: 6,\r\n \"pt-AO\": 1,\r\n \"pt-CH\": 1,\r\n \"pt-CV\": 1,\r\n \"pt-GQ\": 1,\r\n \"pt-GW\": 1,\r\n \"pt-LU\": 1,\r\n \"pt-ST\": 1,\r\n \"pt-TL\": 1,\r\n \"qu-BO\": 1,\r\n \"qu-EC\": 1,\r\n rm: 1,\r\n rn: 1,\r\n ro: 1,\r\n rof: 1,\r\n ru: 1,\r\n rw: 1,\r\n rwk: 1,\r\n sah: 1,\r\n sbp: 1,\r\n sc: 1,\r\n se: 1,\r\n ses: 1,\r\n sg: 1,\r\n shi: 1,\r\n \"shi-Latn\": 1,\r\n si: 1,\r\n sk: 1,\r\n sl: 1,\r\n smn: 1,\r\n so: 1,\r\n \"so-DJ\": 6,\r\n sq: 1,\r\n sr: 1,\r\n \"sr-Latn\": 1,\r\n sv: 1,\r\n sw: 1,\r\n \"ta-LK\": 1,\r\n \"ta-MY\": 1,\r\n teo: 1,\r\n tg: 1,\r\n \"ti-ER\": 1,\r\n tk: 1,\r\n to: 1,\r\n tr: 1,\r\n tt: 1,\r\n twq: 1,\r\n tzm: 1,\r\n uk: 1,\r\n uz: 1,\r\n \"uz-Arab\": 6,\r\n \"uz-Cyrl\": 1,\r\n vai: 1,\r\n \"vai-Latn\": 1,\r\n vi: 1,\r\n vun: 1,\r\n wae: 1,\r\n wo: 1,\r\n xog: 1,\r\n yav: 1,\r\n yi: 1,\r\n yo: 1,\r\n zgh: 1\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/intl/date.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport localizationCoreUtils from \"../core\";\r\nvar SYMBOLS_TO_REMOVE_REGEX = /[\\u200E\\u200F]/g;\r\nvar NARROW_NO_BREAK_SPACE_REGEX = /[\\u202F]/g;\r\nvar getIntlFormatter = format => date => {\r\n if (!format.timeZoneName) {\r\n var year = date.getFullYear();\r\n var recognizableAsTwentyCentury = String(year).length < 3;\r\n var temporaryYearValue = recognizableAsTwentyCentury ? year + 400 : year;\r\n var utcDate = new Date(Date.UTC(temporaryYearValue, date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\r\n if (recognizableAsTwentyCentury) {\r\n utcDate.setFullYear(year)\r\n }\r\n var utcFormat = extend({\r\n timeZone: \"UTC\"\r\n }, format);\r\n return formatDateTime(utcDate, utcFormat)\r\n }\r\n return formatDateTime(date, format)\r\n};\r\nvar formattersCache = {};\r\nvar getFormatter = format => {\r\n var key = localizationCoreUtils.locale() + \"/\" + JSON.stringify(format);\r\n if (!formattersCache[key]) {\r\n formattersCache[key] = new Intl.DateTimeFormat(localizationCoreUtils.locale(), format).format\r\n }\r\n return formattersCache[key]\r\n};\r\n\r\nfunction formatDateTime(date, format) {\r\n return getFormatter(format)(date).replace(SYMBOLS_TO_REMOVE_REGEX, \"\").replace(NARROW_NO_BREAK_SPACE_REGEX, \" \")\r\n}\r\nvar formatNumber = number => new Intl.NumberFormat(localizationCoreUtils.locale()).format(number);\r\nvar getAlternativeNumeralsMap = (() => {\r\n var numeralsMapCache = {};\r\n return locale => {\r\n if (!(locale in numeralsMapCache)) {\r\n if (\"0\" === formatNumber(0)) {\r\n numeralsMapCache[locale] = false;\r\n return false\r\n }\r\n numeralsMapCache[locale] = {};\r\n for (var i = 0; i < 10; ++i) {\r\n numeralsMapCache[locale][formatNumber(i)] = i\r\n }\r\n }\r\n return numeralsMapCache[locale]\r\n }\r\n})();\r\nvar normalizeNumerals = dateString => {\r\n var alternativeNumeralsMap = getAlternativeNumeralsMap(localizationCoreUtils.locale());\r\n if (!alternativeNumeralsMap) {\r\n return dateString\r\n }\r\n return dateString.split(\"\").map(sign => sign in alternativeNumeralsMap ? String(alternativeNumeralsMap[sign]) : sign).join(\"\")\r\n};\r\nvar removeLeadingZeroes = str => str.replace(/(\\D)0+(\\d)/g, \"$1$2\");\r\nvar dateStringEquals = (actual, expected) => removeLeadingZeroes(actual) === removeLeadingZeroes(expected);\r\nvar normalizeMonth = text => text.replace(\"d\\u2019\", \"de \");\r\nvar intlFormats = {\r\n day: {\r\n day: \"numeric\"\r\n },\r\n dayofweek: {\r\n weekday: \"long\"\r\n },\r\n longdate: {\r\n weekday: \"long\",\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\"\r\n },\r\n longdatelongtime: {\r\n weekday: \"long\",\r\n year: \"numeric\",\r\n month: \"long\",\r\n day: \"numeric\",\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n second: \"numeric\"\r\n },\r\n longtime: {\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n second: \"numeric\"\r\n },\r\n month: {\r\n month: \"long\"\r\n },\r\n monthandday: {\r\n month: \"long\",\r\n day: \"numeric\"\r\n },\r\n monthandyear: {\r\n year: \"numeric\",\r\n month: \"long\"\r\n },\r\n shortdate: {},\r\n shorttime: {\r\n hour: \"numeric\",\r\n minute: \"numeric\"\r\n },\r\n shortyear: {\r\n year: \"2-digit\"\r\n },\r\n year: {\r\n year: \"numeric\"\r\n }\r\n};\r\nObject.defineProperty(intlFormats, \"shortdateshorttime\", {\r\n get: function() {\r\n var defaultOptions = Intl.DateTimeFormat(localizationCoreUtils.locale()).resolvedOptions();\r\n return {\r\n year: defaultOptions.year,\r\n month: defaultOptions.month,\r\n day: defaultOptions.day,\r\n hour: \"numeric\",\r\n minute: \"numeric\"\r\n }\r\n }\r\n});\r\nvar getIntlFormat = format => \"string\" === typeof format && intlFormats[format.toLowerCase()];\r\nvar monthNameStrategies = {\r\n standalone: function(monthIndex, monthFormat) {\r\n var date = new Date(1999, monthIndex, 13, 1);\r\n var dateString = getIntlFormatter({\r\n month: monthFormat\r\n })(date);\r\n return dateString\r\n },\r\n format: function(monthIndex, monthFormat) {\r\n var date = new Date(0, monthIndex, 13, 1);\r\n var dateString = normalizeMonth(getIntlFormatter({\r\n day: \"numeric\",\r\n month: monthFormat\r\n })(date));\r\n var parts = dateString.split(\" \").filter(part => part.indexOf(\"13\") < 0);\r\n if (1 === parts.length) {\r\n return parts[0]\r\n } else if (2 === parts.length) {\r\n return parts[0].length > parts[1].length ? parts[0] : parts[1]\r\n }\r\n return monthNameStrategies.standalone(monthIndex, monthFormat)\r\n }\r\n};\r\nexport default {\r\n engine: function() {\r\n return \"intl\"\r\n },\r\n getMonthNames: function(format, type) {\r\n var monthFormat = {\r\n wide: \"long\",\r\n abbreviated: \"short\",\r\n narrow: \"narrow\"\r\n } [format || \"wide\"];\r\n type = \"format\" === type ? type : \"standalone\";\r\n return Array.apply(null, new Array(12)).map((_, monthIndex) => monthNameStrategies[type](monthIndex, monthFormat))\r\n },\r\n getDayNames: function(format) {\r\n var result = (format => Array.apply(null, new Array(7)).map((_, dayIndex) => getIntlFormatter({\r\n weekday: format\r\n })(new Date(0, 0, dayIndex))))({\r\n wide: \"long\",\r\n abbreviated: \"short\",\r\n short: \"narrow\",\r\n narrow: \"narrow\"\r\n } [format || \"wide\"]);\r\n return result\r\n },\r\n getPeriodNames: function() {\r\n var hour12Formatter = getIntlFormatter({\r\n hour: \"numeric\",\r\n hour12: true\r\n });\r\n return [1, 13].map(hours => {\r\n var hourNumberText = formatNumber(1);\r\n var timeParts = hour12Formatter(new Date(0, 0, 1, hours)).split(hourNumberText);\r\n if (2 !== timeParts.length) {\r\n return \"\"\r\n }\r\n var biggerPart = timeParts[0].length > timeParts[1].length ? timeParts[0] : timeParts[1];\r\n return biggerPart.trim()\r\n })\r\n },\r\n format: function(date, _format) {\r\n if (!date) {\r\n return\r\n }\r\n if (!_format) {\r\n return date\r\n }\r\n if (\"function\" !== typeof _format && !_format.formatter) {\r\n _format = _format.type || _format\r\n }\r\n var intlFormat = getIntlFormat(_format);\r\n if (intlFormat) {\r\n return getIntlFormatter(intlFormat)(date)\r\n }\r\n var formatType = typeof _format;\r\n if (_format.formatter || \"function\" === formatType || \"string\" === formatType) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n return getIntlFormatter(_format)(date)\r\n },\r\n parse: function(dateString, format) {\r\n var formatter;\r\n if (format && !format.parser && \"string\" === typeof dateString) {\r\n dateString = normalizeMonth(dateString);\r\n formatter = date => normalizeMonth(this.format(date, format))\r\n }\r\n return this.callBase(dateString, formatter || format)\r\n },\r\n _parseDateBySimpleFormat: function(dateString, format) {\r\n dateString = normalizeNumerals(dateString);\r\n var formatParts = this.getFormatParts(format);\r\n var dateParts = dateString.split(/\\D+/).filter(part => part.length > 0);\r\n if (formatParts.length !== dateParts.length) {\r\n return\r\n }\r\n var dateArgs = this._generateDateArgs(formatParts, dateParts);\r\n var constructValidDate = ampmShift => {\r\n var parsedDate = ((dateArgs, ampmShift) => {\r\n var hoursShift = ampmShift ? 12 : 0;\r\n return new Date(dateArgs.year, dateArgs.month, dateArgs.day, (dateArgs.hours + hoursShift) % 24, dateArgs.minutes, dateArgs.seconds)\r\n })(dateArgs, ampmShift);\r\n if (dateStringEquals(normalizeNumerals(this.format(parsedDate, format)), dateString)) {\r\n return parsedDate\r\n }\r\n };\r\n return constructValidDate(false) || constructValidDate(true)\r\n },\r\n _generateDateArgs: function(formatParts, dateParts) {\r\n var currentDate = new Date;\r\n var dateArgs = {\r\n year: currentDate.getFullYear(),\r\n month: currentDate.getMonth(),\r\n day: currentDate.getDate(),\r\n hours: 0,\r\n minutes: 0,\r\n seconds: 0\r\n };\r\n formatParts.forEach((formatPart, index) => {\r\n var datePart = dateParts[index];\r\n var parsed = parseInt(datePart, 10);\r\n if (\"month\" === formatPart) {\r\n parsed -= 1\r\n }\r\n dateArgs[formatPart] = parsed\r\n });\r\n return dateArgs\r\n },\r\n formatUsesMonthName: function(format) {\r\n if (\"object\" === typeof format && !(format.type || format.format)) {\r\n return \"long\" === format.month\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n formatUsesDayName: function(format) {\r\n if (\"object\" === typeof format && !(format.type || format.format)) {\r\n return \"long\" === format.weekday\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n getTimeSeparator: function() {\r\n return normalizeNumerals(formatDateTime(new Date(2001, 1, 1, 11, 11), {\r\n hour: \"numeric\",\r\n minute: \"numeric\",\r\n hour12: false\r\n })).replace(/\\d/g, \"\")\r\n },\r\n getFormatParts: function(format) {\r\n if (\"string\" === typeof format) {\r\n return this.callBase(format)\r\n }\r\n var intlFormat = extend({}, intlFormats[format.toLowerCase()]);\r\n var date = new Date(2001, 2, 4, 5, 6, 7);\r\n var formattedDate = getIntlFormatter(intlFormat)(date);\r\n formattedDate = normalizeNumerals(formattedDate);\r\n return [{\r\n name: \"year\",\r\n value: 1\r\n }, {\r\n name: \"month\",\r\n value: 3\r\n }, {\r\n name: \"day\",\r\n value: 4\r\n }, {\r\n name: \"hours\",\r\n value: 5\r\n }, {\r\n name: \"minutes\",\r\n value: 6\r\n }, {\r\n name: \"seconds\",\r\n value: 7\r\n }].map(part => ({\r\n name: part.name,\r\n index: formattedDate.indexOf(part.value)\r\n })).filter(part => part.index > -1).sort((a, b) => a.index - b.index).map(part => part.name)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/localization/date.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport {\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n getFormatter as getLDMLDateFormatter\r\n} from \"./ldml/date.formatter\";\r\nimport {\r\n getFormat as getLDMLDateFormat\r\n} from \"./ldml/date.format\";\r\nimport {\r\n getParser as getLDMLDateParser\r\n} from \"./ldml/date.parser\";\r\nimport defaultDateNames from \"./default_date_names\";\r\nimport firstDayOfWeekData from \"./cldr-data/first_day_of_week_data\";\r\nimport localizationCore from \"./core\";\r\nimport numberLocalization from \"./number\";\r\nimport intlDateLocalization from \"./intl/date\";\r\nvar DEFAULT_DAY_OF_WEEK_INDEX = 0;\r\nvar hasIntl = \"undefined\" !== typeof Intl;\r\nvar FORMATS_TO_PATTERN_MAP = {\r\n shortdate: \"M/d/y\",\r\n shorttime: \"h:mm a\",\r\n longdate: \"EEEE, MMMM d, y\",\r\n longtime: \"h:mm:ss a\",\r\n monthandday: \"MMMM d\",\r\n monthandyear: \"MMMM y\",\r\n quarterandyear: \"QQQ y\",\r\n day: \"d\",\r\n year: \"y\",\r\n shortdateshorttime: \"M/d/y, h:mm a\",\r\n longdatelongtime: \"EEEE, MMMM d, y, h:mm:ss a\",\r\n month: \"LLLL\",\r\n shortyear: \"yy\",\r\n dayofweek: \"EEEE\",\r\n quarter: \"QQQ\",\r\n hour: \"HH\",\r\n minute: \"mm\",\r\n second: \"ss\",\r\n millisecond: \"SSS\",\r\n \"datetime-local\": \"yyyy-MM-ddTHH':'mm':'ss\"\r\n};\r\nvar possiblePartPatterns = {\r\n year: [\"y\", \"yy\", \"yyyy\"],\r\n day: [\"d\", \"dd\"],\r\n month: [\"M\", \"MM\", \"MMM\", \"MMMM\"],\r\n hours: [\"H\", \"HH\", \"h\", \"hh\", \"ah\"],\r\n minutes: [\"m\", \"mm\"],\r\n seconds: [\"s\", \"ss\"],\r\n milliseconds: [\"S\", \"SS\", \"SSS\"]\r\n};\r\nvar dateLocalization = dependencyInjector({\r\n engine: function() {\r\n return \"base\"\r\n },\r\n _getPatternByFormat: function(format) {\r\n return FORMATS_TO_PATTERN_MAP[format.toLowerCase()]\r\n },\r\n _expandPattern: function(pattern) {\r\n return this._getPatternByFormat(pattern) || pattern\r\n },\r\n formatUsesMonthName: function(format) {\r\n return -1 !== this._expandPattern(format).indexOf(\"MMMM\")\r\n },\r\n formatUsesDayName: function(format) {\r\n return -1 !== this._expandPattern(format).indexOf(\"EEEE\")\r\n },\r\n getFormatParts: function(format) {\r\n var pattern = this._getPatternByFormat(format) || format;\r\n var result = [];\r\n each(pattern.split(/\\W+/), (_, formatPart) => {\r\n each(possiblePartPatterns, (partName, possiblePatterns) => {\r\n if (possiblePatterns.includes(formatPart)) {\r\n result.push(partName)\r\n }\r\n })\r\n });\r\n return result\r\n },\r\n getMonthNames: function(format) {\r\n return defaultDateNames.getMonthNames(format)\r\n },\r\n getDayNames: function(format) {\r\n return defaultDateNames.getDayNames(format)\r\n },\r\n getQuarterNames: function(format) {\r\n return defaultDateNames.getQuarterNames(format)\r\n },\r\n getPeriodNames: function(format) {\r\n return defaultDateNames.getPeriodNames(format)\r\n },\r\n getTimeSeparator: function() {\r\n return \":\"\r\n },\r\n is24HourFormat: function(format) {\r\n var amTime = new Date(2017, 0, 20, 11, 0, 0, 0);\r\n var pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);\r\n var amTimeFormatted = this.format(amTime, format);\r\n var pmTimeFormatted = this.format(pmTime, format);\r\n for (var i = 0; i < amTimeFormatted.length; i++) {\r\n if (amTimeFormatted[i] !== pmTimeFormatted[i]) {\r\n return !isNaN(parseInt(amTimeFormatted[i]))\r\n }\r\n }\r\n },\r\n format: function(date, _format) {\r\n if (!date) {\r\n return\r\n }\r\n if (!_format) {\r\n return date\r\n }\r\n var formatter;\r\n if (\"function\" === typeof _format) {\r\n formatter = _format\r\n } else if (_format.formatter) {\r\n formatter = _format.formatter\r\n } else {\r\n _format = _format.type || _format;\r\n if (isString(_format)) {\r\n _format = FORMATS_TO_PATTERN_MAP[_format.toLowerCase()] || _format;\r\n return numberLocalization.convertDigits(getLDMLDateFormatter(_format, this)(date))\r\n }\r\n }\r\n if (!formatter) {\r\n return\r\n }\r\n return formatter(date)\r\n },\r\n parse: function(text, format) {\r\n var that = this;\r\n var ldmlFormat;\r\n var formatter;\r\n if (!text) {\r\n return\r\n }\r\n if (!format) {\r\n return this.parse(text, \"shortdate\")\r\n }\r\n if (format.parser) {\r\n return format.parser(text)\r\n }\r\n if (\"string\" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {\r\n ldmlFormat = format\r\n } else {\r\n formatter = value => {\r\n var text = that.format(value, format);\r\n return numberLocalization.convertDigits(text, true)\r\n };\r\n try {\r\n ldmlFormat = getLDMLDateFormat(formatter)\r\n } catch (e) {}\r\n }\r\n if (ldmlFormat) {\r\n text = numberLocalization.convertDigits(text, true);\r\n return getLDMLDateParser(ldmlFormat, this)(text)\r\n }\r\n errors.log(\"W0012\");\r\n var result = new Date(text);\r\n if (!result || isNaN(result.getTime())) {\r\n return\r\n }\r\n return result\r\n },\r\n firstDayOfWeekIndex: function() {\r\n var index = localizationCore.getValueByClosestLocale(locale => firstDayOfWeekData[locale]);\r\n return void 0 === index ? DEFAULT_DAY_OF_WEEK_INDEX : index\r\n }\r\n});\r\nif (hasIntl) {\r\n dateLocalization.inject(intlDateLocalization)\r\n}\r\nexport default dateLocalization;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/timeZoneCalculator/types.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var PathTimeZoneConversion;\r\n! function(PathTimeZoneConversion) {\r\n PathTimeZoneConversion.fromSourceToAppointment = \"toAppointment\";\r\n PathTimeZoneConversion.fromAppointmentToSource = \"fromAppointment\";\r\n PathTimeZoneConversion.fromSourceToGrid = \"toGrid\";\r\n PathTimeZoneConversion.fromGridToSource = \"fromGrid\"\r\n}(PathTimeZoneConversion || (PathTimeZoneConversion = {}));\r\n","/**\r\n * DevExtreme (esm/localization/message.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dependencyInjector from \"../core/utils/dependency_injector\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n format as stringFormat\r\n} from \"../core/utils/string\";\r\nimport {\r\n humanize\r\n} from \"../core/utils/inflector\";\r\nimport coreLocalization from \"./core\";\r\nimport {\r\n defaultMessages\r\n} from \"./default_messages\";\r\nvar baseDictionary = extend(true, {}, defaultMessages);\r\nvar getDataByLocale = (localeData, locale) => {\r\n var _Object$entries$find;\r\n return localeData[locale] || (null === locale || void 0 === locale ? void 0 : locale.toLowerCase) && (null === (_Object$entries$find = Object.entries(localeData).find(_ref => {\r\n var [key] = _ref;\r\n return key.toLowerCase() === locale.toLowerCase()\r\n })) || void 0 === _Object$entries$find ? void 0 : _Object$entries$find[1]) || {}\r\n};\r\nvar newMessages = {};\r\nvar messageLocalization = dependencyInjector({\r\n engine: function() {\r\n return \"base\"\r\n },\r\n _dictionary: baseDictionary,\r\n load: function(messages) {\r\n extend(true, this._dictionary, messages)\r\n },\r\n _localizablePrefix: \"@\",\r\n setup: function(localizablePrefix) {\r\n this._localizablePrefix = localizablePrefix\r\n },\r\n localizeString: function(text) {\r\n var that = this;\r\n var regex = new RegExp(\"(^|[^a-zA-Z_0-9\" + that._localizablePrefix + \"-]+)(\" + that._localizablePrefix + \"{1,2})([a-zA-Z_0-9-]+)\", \"g\");\r\n var escapeString = that._localizablePrefix + that._localizablePrefix;\r\n return text.replace(regex, (str, prefix, escape, localizationKey) => {\r\n var defaultResult = that._localizablePrefix + localizationKey;\r\n var result;\r\n if (escape !== escapeString) {\r\n result = that.format(localizationKey)\r\n }\r\n if (!result) {\r\n newMessages[localizationKey] = humanize(localizationKey)\r\n }\r\n return prefix + (result || defaultResult)\r\n })\r\n },\r\n getMessagesByLocales: function() {\r\n return this._dictionary\r\n },\r\n getDictionary: function(onlyNew) {\r\n if (onlyNew) {\r\n return newMessages\r\n }\r\n return extend({}, newMessages, this.getMessagesByLocales()[coreLocalization.locale()])\r\n },\r\n getFormatter: function(key) {\r\n return this._getFormatterBase(key) || this._getFormatterBase(key, \"en\")\r\n },\r\n _getFormatterBase: function(key, locale) {\r\n var message = coreLocalization.getValueByClosestLocale(locale => getDataByLocale(this._dictionary, locale)[key]);\r\n if (message) {\r\n return function() {\r\n var args = 1 === arguments.length && Array.isArray(arguments[0]) ? arguments[0].slice(0) : Array.prototype.slice.call(arguments, 0);\r\n args.unshift(message);\r\n return stringFormat.apply(this, args)\r\n }\r\n }\r\n },\r\n format: function(key) {\r\n var formatter = this.getFormatter(key);\r\n var values = Array.prototype.slice.call(arguments, 1);\r\n return formatter && formatter.apply(this, values) || \"\"\r\n }\r\n});\r\nexport default messageLocalization;\r\n","/**\r\n * DevExtreme (esm/localization/default_messages.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\n// !!! AUTO-GENERATED FILE, DO NOT EDIT\r\nexport var defaultMessages = {\r\n en: {\r\n Yes: \"Yes\",\r\n No: \"No\",\r\n Cancel: \"Cancel\",\r\n Close: \"Close\",\r\n Clear: \"Clear\",\r\n Done: \"Done\",\r\n Loading: \"Loading...\",\r\n Select: \"Select...\",\r\n Search: \"Search\",\r\n Back: \"Back\",\r\n OK: \"OK\",\r\n \"dxCollectionWidget-noDataText\": \"No data to display\",\r\n \"dxDropDownEditor-selectLabel\": \"Select\",\r\n \"validation-required\": \"Required\",\r\n \"validation-required-formatted\": \"{0} is required\",\r\n \"validation-numeric\": \"Value must be a number\",\r\n \"validation-numeric-formatted\": \"{0} must be a number\",\r\n \"validation-range\": \"Value is out of range\",\r\n \"validation-range-formatted\": \"{0} is out of range\",\r\n \"validation-stringLength\": \"The length of the value is not correct\",\r\n \"validation-stringLength-formatted\": \"The length of {0} is not correct\",\r\n \"validation-custom\": \"Value is invalid\",\r\n \"validation-custom-formatted\": \"{0} is invalid\",\r\n \"validation-async\": \"Value is invalid\",\r\n \"validation-async-formatted\": \"{0} is invalid\",\r\n \"validation-compare\": \"Values do not match\",\r\n \"validation-compare-formatted\": \"{0} does not match\",\r\n \"validation-pattern\": \"Value does not match pattern\",\r\n \"validation-pattern-formatted\": \"{0} does not match pattern\",\r\n \"validation-email\": \"Email is invalid\",\r\n \"validation-email-formatted\": \"{0} is invalid\",\r\n \"validation-mask\": \"Value is invalid\",\r\n \"dxLookup-searchPlaceholder\": \"Minimum character number: {0}\",\r\n \"dxList-pullingDownText\": \"Pull down to refresh...\",\r\n \"dxList-pulledDownText\": \"Release to refresh...\",\r\n \"dxList-refreshingText\": \"Refreshing...\",\r\n \"dxList-pageLoadingText\": \"Loading...\",\r\n \"dxList-nextButtonText\": \"More\",\r\n \"dxList-selectAll\": \"Select All\",\r\n \"dxListEditDecorator-delete\": \"Delete\",\r\n \"dxListEditDecorator-more\": \"More\",\r\n \"dxScrollView-pullingDownText\": \"Pull down to refresh...\",\r\n \"dxScrollView-pulledDownText\": \"Release to refresh...\",\r\n \"dxScrollView-refreshingText\": \"Refreshing...\",\r\n \"dxScrollView-reachBottomText\": \"Loading...\",\r\n \"dxDateBox-simulatedDataPickerTitleTime\": \"Select time\",\r\n \"dxDateBox-simulatedDataPickerTitleDate\": \"Select date\",\r\n \"dxDateBox-simulatedDataPickerTitleDateTime\": \"Select date and time\",\r\n \"dxDateBox-validation-datetime\": \"Value must be a date or time\",\r\n \"dxDateRangeBox-invalidStartDateMessage\": \"Start value must be a date\",\r\n \"dxDateRangeBox-invalidEndDateMessage\": \"End value must be a date\",\r\n \"dxDateRangeBox-startDateOutOfRangeMessage\": \"Start date is out of range\",\r\n \"dxDateRangeBox-endDateOutOfRangeMessage\": \"End date is out of range\",\r\n \"dxDateRangeBox-startDateLabel\": \"Start Date\",\r\n \"dxDateRangeBox-endDateLabel\": \"End Date\",\r\n \"dxFileUploader-selectFile\": \"Select a file\",\r\n \"dxFileUploader-dropFile\": \"or Drop a file here\",\r\n \"dxFileUploader-bytes\": \"bytes\",\r\n \"dxFileUploader-kb\": \"kb\",\r\n \"dxFileUploader-Mb\": \"Mb\",\r\n \"dxFileUploader-Gb\": \"Gb\",\r\n \"dxFileUploader-upload\": \"Upload\",\r\n \"dxFileUploader-uploaded\": \"Uploaded\",\r\n \"dxFileUploader-readyToUpload\": \"Ready to upload\",\r\n \"dxFileUploader-uploadAbortedMessage\": \"Upload cancelled\",\r\n \"dxFileUploader-uploadFailedMessage\": \"Upload failed\",\r\n \"dxFileUploader-invalidFileExtension\": \"File type is not allowed\",\r\n \"dxFileUploader-invalidMaxFileSize\": \"File is too large\",\r\n \"dxFileUploader-invalidMinFileSize\": \"File is too small\",\r\n \"dxRangeSlider-ariaFrom\": \"From\",\r\n \"dxRangeSlider-ariaTill\": \"Till\",\r\n \"dxSwitch-switchedOnText\": \"ON\",\r\n \"dxSwitch-switchedOffText\": \"OFF\",\r\n \"dxForm-optionalMark\": \"optional\",\r\n \"dxForm-requiredMessage\": \"{0} is required\",\r\n \"dxNumberBox-invalidValueMessage\": \"Value must be a number\",\r\n \"dxNumberBox-noDataText\": \"No data\",\r\n \"dxDataGrid-emptyHeaderWithColumnChooserText\": \"Use {0} to display columns\",\r\n \"dxDataGrid-emptyHeaderWithGroupPanelText\": \"Drag a column from the group panel here\",\r\n \"dxDataGrid-emptyHeaderWithColumnChooserAndGroupPanelText\": \"Use {0} or drag a column from the group panel\",\r\n \"dxDataGrid-emptyHeaderColumnChooserText\": \"column chooser\",\r\n \"dxDataGrid-columnChooserTitle\": \"Column Chooser\",\r\n \"dxDataGrid-columnChooserEmptyText\": \"Drag a column here to hide it\",\r\n \"dxDataGrid-groupContinuesMessage\": \"Continues on the next page\",\r\n \"dxDataGrid-groupContinuedMessage\": \"Continued from the previous page\",\r\n \"dxDataGrid-groupHeaderText\": \"Group by This Column\",\r\n \"dxDataGrid-ungroupHeaderText\": \"Ungroup\",\r\n \"dxDataGrid-ungroupAllText\": \"Ungroup All\",\r\n \"dxDataGrid-editingEditRow\": \"Edit\",\r\n \"dxDataGrid-editingSaveRowChanges\": \"Save\",\r\n \"dxDataGrid-editingCancelRowChanges\": \"Cancel\",\r\n \"dxDataGrid-editingDeleteRow\": \"Delete\",\r\n \"dxDataGrid-editingUndeleteRow\": \"Undelete\",\r\n \"dxDataGrid-editingConfirmDeleteMessage\": \"Are you sure you want to delete this record?\",\r\n \"dxDataGrid-validationCancelChanges\": \"Cancel changes\",\r\n \"dxDataGrid-groupPanelEmptyText\": \"Drag a column header here to group by that column\",\r\n \"dxDataGrid-noDataText\": \"No data\",\r\n \"dxDataGrid-searchPanelPlaceholder\": \"Search...\",\r\n \"dxDataGrid-filterRowShowAllText\": \"(All)\",\r\n \"dxDataGrid-filterRowResetOperationText\": \"Reset\",\r\n \"dxDataGrid-filterRowOperationEquals\": \"Equals\",\r\n \"dxDataGrid-filterRowOperationNotEquals\": \"Does not equal\",\r\n \"dxDataGrid-filterRowOperationLess\": \"Less than\",\r\n \"dxDataGrid-filterRowOperationLessOrEquals\": \"Less than or equal to\",\r\n \"dxDataGrid-filterRowOperationGreater\": \"Greater than\",\r\n \"dxDataGrid-filterRowOperationGreaterOrEquals\": \"Greater than or equal to\",\r\n \"dxDataGrid-filterRowOperationStartsWith\": \"Starts with\",\r\n \"dxDataGrid-filterRowOperationContains\": \"Contains\",\r\n \"dxDataGrid-filterRowOperationNotContains\": \"Does not contain\",\r\n \"dxDataGrid-filterRowOperationEndsWith\": \"Ends with\",\r\n \"dxDataGrid-filterRowOperationBetween\": \"Between\",\r\n \"dxDataGrid-filterRowOperationBetweenStartText\": \"Start\",\r\n \"dxDataGrid-filterRowOperationBetweenEndText\": \"End\",\r\n \"dxDataGrid-ariaSearchBox\": \"Search box\",\r\n \"dxDataGrid-applyFilterText\": \"Apply filter\",\r\n \"dxDataGrid-trueText\": \"true\",\r\n \"dxDataGrid-falseText\": \"false\",\r\n \"dxDataGrid-sortingAscendingText\": \"Sort Ascending\",\r\n \"dxDataGrid-sortingDescendingText\": \"Sort Descending\",\r\n \"dxDataGrid-sortingClearText\": \"Clear Sorting\",\r\n \"dxDataGrid-editingSaveAllChanges\": \"Save changes\",\r\n \"dxDataGrid-editingCancelAllChanges\": \"Discard changes\",\r\n \"dxDataGrid-editingAddRow\": \"Add a row\",\r\n \"dxDataGrid-summaryMin\": \"Min: {0}\",\r\n \"dxDataGrid-summaryMinOtherColumn\": \"Min of {1} is {0}\",\r\n \"dxDataGrid-summaryMax\": \"Max: {0}\",\r\n \"dxDataGrid-summaryMaxOtherColumn\": \"Max of {1} is {0}\",\r\n \"dxDataGrid-summaryAvg\": \"Avg: {0}\",\r\n \"dxDataGrid-summaryAvgOtherColumn\": \"Avg of {1} is {0}\",\r\n \"dxDataGrid-summarySum\": \"Sum: {0}\",\r\n \"dxDataGrid-summarySumOtherColumn\": \"Sum of {1} is {0}\",\r\n \"dxDataGrid-summaryCount\": \"Count: {0}\",\r\n \"dxDataGrid-columnFixingFix\": \"Fix\",\r\n \"dxDataGrid-columnFixingUnfix\": \"Unfix\",\r\n \"dxDataGrid-columnFixingLeftPosition\": \"To the left\",\r\n \"dxDataGrid-columnFixingRightPosition\": \"To the right\",\r\n \"dxDataGrid-exportTo\": \"Export\",\r\n \"dxDataGrid-exportToExcel\": \"Export to Excel file\",\r\n \"dxDataGrid-exporting\": \"Exporting...\",\r\n \"dxDataGrid-excelFormat\": \"Excel file\",\r\n \"dxDataGrid-selectedRows\": \"Selected rows\",\r\n \"dxDataGrid-exportSelectedRows\": \"Export selected rows to {0}\",\r\n \"dxDataGrid-exportAll\": \"Export all data to {0}\",\r\n \"dxDataGrid-headerFilterLabel\": \"Filter options\",\r\n \"dxDataGrid-headerFilterIndicatorLabel\": \"Show filter options for column '{0}'\",\r\n \"dxDataGrid-headerFilterEmptyValue\": \"(Blanks)\",\r\n \"dxDataGrid-headerFilterOK\": \"OK\",\r\n \"dxDataGrid-headerFilterCancel\": \"Cancel\",\r\n \"dxDataGrid-ariaAdaptiveCollapse\": \"Hide additional data\",\r\n \"dxDataGrid-ariaAdaptiveExpand\": \"Display additional data\",\r\n \"dxDataGrid-ariaColumn\": \"Column\",\r\n \"dxDataGrid-ariaValue\": \"Value\",\r\n \"dxDataGrid-ariaFilterCell\": \"Filter cell\",\r\n \"dxDataGrid-ariaCollapse\": \"Collapse\",\r\n \"dxDataGrid-ariaExpand\": \"Expand\",\r\n \"dxDataGrid-ariaDataGrid\": \"Data grid with {0} rows and {1} columns\",\r\n \"dxDataGrid-ariaSearchInGrid\": \"Search in the data grid\",\r\n \"dxDataGrid-ariaSelectAll\": \"Select all\",\r\n \"dxDataGrid-ariaSelectRow\": \"Select row\",\r\n \"dxDataGrid-ariaToolbar\": \"Data grid toolbar\",\r\n \"dxDataGrid-ariaEditForm\": \"Edit form\",\r\n \"dxDataGrid-filterBuilderPopupTitle\": \"Filter Builder\",\r\n \"dxDataGrid-filterPanelCreateFilter\": \"Create Filter\",\r\n \"dxDataGrid-filterPanelClearFilter\": \"Clear\",\r\n \"dxDataGrid-filterPanelFilterEnabledHint\": \"Enable the filter\",\r\n \"dxTreeList-ariaTreeList\": \"Tree list with {0} rows and {1} columns\",\r\n \"dxTreeList-ariaSearchInGrid\": \"Search in the tree list\",\r\n \"dxTreeList-ariaToolbar\": \"Tree list toolbar\",\r\n \"dxTreeList-editingAddRowToNode\": \"Add\",\r\n \"dxPager-infoText\": \"Page {0} of {1} ({2} items)\",\r\n \"dxPager-pagesCountText\": \"of\",\r\n \"dxPager-pageSize\": \"Items per page: {0}\",\r\n \"dxPager-pageSizesAllText\": \"All\",\r\n \"dxPager-page\": \"Page {0}\",\r\n \"dxPager-prevPage\": \"Previous Page\",\r\n \"dxPager-nextPage\": \"Next Page\",\r\n \"dxPager-ariaLabel\": \"Page Navigation\",\r\n \"dxPager-ariaPageSize\": \"Page size\",\r\n \"dxPager-ariaPageNumber\": \"Page number\",\r\n \"dxPivotGrid-grandTotal\": \"Grand Total\",\r\n \"dxPivotGrid-total\": \"{0} Total\",\r\n \"dxPivotGrid-fieldChooserTitle\": \"Field Chooser\",\r\n \"dxPivotGrid-showFieldChooser\": \"Show Field Chooser\",\r\n \"dxPivotGrid-expandAll\": \"Expand All\",\r\n \"dxPivotGrid-collapseAll\": \"Collapse All\",\r\n \"dxPivotGrid-sortColumnBySummary\": 'Sort \"{0}\" by This Column',\r\n \"dxPivotGrid-sortRowBySummary\": 'Sort \"{0}\" by This Row',\r\n \"dxPivotGrid-removeAllSorting\": \"Remove All Sorting\",\r\n \"dxPivotGrid-dataNotAvailable\": \"N/A\",\r\n \"dxPivotGrid-rowFields\": \"Row Fields\",\r\n \"dxPivotGrid-columnFields\": \"Column Fields\",\r\n \"dxPivotGrid-dataFields\": \"Data Fields\",\r\n \"dxPivotGrid-filterFields\": \"Filter Fields\",\r\n \"dxPivotGrid-allFields\": \"All Fields\",\r\n \"dxPivotGrid-columnFieldArea\": \"Drop Column Fields Here\",\r\n \"dxPivotGrid-dataFieldArea\": \"Drop Data Fields Here\",\r\n \"dxPivotGrid-rowFieldArea\": \"Drop Row Fields Here\",\r\n \"dxPivotGrid-filterFieldArea\": \"Drop Filter Fields Here\",\r\n \"dxScheduler-editorLabelTitle\": \"Subject\",\r\n \"dxScheduler-editorLabelStartDate\": \"Start Date\",\r\n \"dxScheduler-editorLabelEndDate\": \"End Date\",\r\n \"dxScheduler-editorLabelDescription\": \"Description\",\r\n \"dxScheduler-editorLabelRecurrence\": \"Repeat\",\r\n \"dxScheduler-openAppointment\": \"Open appointment\",\r\n \"dxScheduler-recurrenceNever\": \"Never\",\r\n \"dxScheduler-recurrenceMinutely\": \"Every minute\",\r\n \"dxScheduler-recurrenceHourly\": \"Hourly\",\r\n \"dxScheduler-recurrenceDaily\": \"Daily\",\r\n \"dxScheduler-recurrenceWeekly\": \"Weekly\",\r\n \"dxScheduler-recurrenceMonthly\": \"Monthly\",\r\n \"dxScheduler-recurrenceYearly\": \"Yearly\",\r\n \"dxScheduler-recurrenceRepeatEvery\": \"Repeat Every\",\r\n \"dxScheduler-recurrenceRepeatOn\": \"Repeat On\",\r\n \"dxScheduler-recurrenceEnd\": \"End repeat\",\r\n \"dxScheduler-recurrenceAfter\": \"After\",\r\n \"dxScheduler-recurrenceOn\": \"On\",\r\n \"dxScheduler-recurrenceRepeatMinutely\": \"minute(s)\",\r\n \"dxScheduler-recurrenceRepeatHourly\": \"hour(s)\",\r\n \"dxScheduler-recurrenceRepeatDaily\": \"day(s)\",\r\n \"dxScheduler-recurrenceRepeatWeekly\": \"week(s)\",\r\n \"dxScheduler-recurrenceRepeatMonthly\": \"month(s)\",\r\n \"dxScheduler-recurrenceRepeatYearly\": \"year(s)\",\r\n \"dxScheduler-switcherDay\": \"Day\",\r\n \"dxScheduler-switcherWeek\": \"Week\",\r\n \"dxScheduler-switcherWorkWeek\": \"Work Week\",\r\n \"dxScheduler-switcherMonth\": \"Month\",\r\n \"dxScheduler-switcherAgenda\": \"Agenda\",\r\n \"dxScheduler-switcherTimelineDay\": \"Timeline Day\",\r\n \"dxScheduler-switcherTimelineWeek\": \"Timeline Week\",\r\n \"dxScheduler-switcherTimelineWorkWeek\": \"Timeline Work Week\",\r\n \"dxScheduler-switcherTimelineMonth\": \"Timeline Month\",\r\n \"dxScheduler-recurrenceRepeatOnDate\": \"on date\",\r\n \"dxScheduler-recurrenceRepeatCount\": \"occurrence(s)\",\r\n \"dxScheduler-allDay\": \"All day\",\r\n \"dxScheduler-confirmRecurrenceEditMessage\": \"Do you want to edit only this appointment or the whole series?\",\r\n \"dxScheduler-confirmRecurrenceDeleteMessage\": \"Do you want to delete only this appointment or the whole series?\",\r\n \"dxScheduler-confirmRecurrenceEditSeries\": \"Edit series\",\r\n \"dxScheduler-confirmRecurrenceDeleteSeries\": \"Delete series\",\r\n \"dxScheduler-confirmRecurrenceEditOccurrence\": \"Edit appointment\",\r\n \"dxScheduler-confirmRecurrenceDeleteOccurrence\": \"Delete appointment\",\r\n \"dxScheduler-noTimezoneTitle\": \"No timezone\",\r\n \"dxScheduler-moreAppointments\": \"{0} more\",\r\n \"dxCalendar-todayButtonText\": \"Today\",\r\n \"dxCalendar-ariaWidgetName\": \"Calendar\",\r\n \"dxCalendar-ariaHotKeysInfo\": \"To navigate between views, press Control, and then Left Arrow or Right Arrow. To zoom in on a view, press Control, and then Down Arrow. To zoom out, press Control, and then Up Arrow.\",\r\n \"dxColorView-ariaRed\": \"Red\",\r\n \"dxColorView-ariaGreen\": \"Green\",\r\n \"dxColorView-ariaBlue\": \"Blue\",\r\n \"dxColorView-ariaAlpha\": \"Transparency\",\r\n \"dxColorView-ariaHex\": \"Color code\",\r\n \"dxTagBox-selected\": \"{0} selected\",\r\n \"dxTagBox-allSelected\": \"All selected ({0})\",\r\n \"dxTagBox-moreSelected\": \"{0} more\",\r\n \"vizExport-printingButtonText\": \"Print\",\r\n \"vizExport-titleMenuText\": \"Exporting/Printing\",\r\n \"vizExport-exportButtonText\": \"{0} file\",\r\n \"dxFilterBuilder-and\": \"And\",\r\n \"dxFilterBuilder-or\": \"Or\",\r\n \"dxFilterBuilder-notAnd\": \"Not And\",\r\n \"dxFilterBuilder-notOr\": \"Not Or\",\r\n \"dxFilterBuilder-addCondition\": \"Add Condition\",\r\n \"dxFilterBuilder-addGroup\": \"Add Group\",\r\n \"dxFilterBuilder-enterValueText\": \"\",\r\n \"dxFilterBuilder-filterOperationEquals\": \"Equals\",\r\n \"dxFilterBuilder-filterOperationNotEquals\": \"Does not equal\",\r\n \"dxFilterBuilder-filterOperationLess\": \"Is less than\",\r\n \"dxFilterBuilder-filterOperationLessOrEquals\": \"Is less than or equal to\",\r\n \"dxFilterBuilder-filterOperationGreater\": \"Is greater than\",\r\n \"dxFilterBuilder-filterOperationGreaterOrEquals\": \"Is greater than or equal to\",\r\n \"dxFilterBuilder-filterOperationStartsWith\": \"Starts with\",\r\n \"dxFilterBuilder-filterOperationContains\": \"Contains\",\r\n \"dxFilterBuilder-filterOperationNotContains\": \"Does not contain\",\r\n \"dxFilterBuilder-filterOperationEndsWith\": \"Ends with\",\r\n \"dxFilterBuilder-filterOperationIsBlank\": \"Is blank\",\r\n \"dxFilterBuilder-filterOperationIsNotBlank\": \"Is not blank\",\r\n \"dxFilterBuilder-filterOperationBetween\": \"Is between\",\r\n \"dxFilterBuilder-filterOperationAnyOf\": \"Is any of\",\r\n \"dxFilterBuilder-filterOperationNoneOf\": \"Is none of\",\r\n \"dxHtmlEditor-dialogColorCaption\": \"Change Font Color\",\r\n \"dxHtmlEditor-dialogBackgroundCaption\": \"Change Background Color\",\r\n \"dxHtmlEditor-dialogLinkCaption\": \"Add Link\",\r\n \"dxHtmlEditor-dialogLinkUrlField\": \"URL\",\r\n \"dxHtmlEditor-dialogLinkTextField\": \"Text\",\r\n \"dxHtmlEditor-dialogLinkTargetField\": \"Open link in new window\",\r\n \"dxHtmlEditor-dialogImageCaption\": \"Add Image\",\r\n \"dxHtmlEditor-dialogImageUrlField\": \"URL\",\r\n \"dxHtmlEditor-dialogImageAltField\": \"Alternate text\",\r\n \"dxHtmlEditor-dialogImageWidthField\": \"Width (px)\",\r\n \"dxHtmlEditor-dialogImageHeightField\": \"Height (px)\",\r\n \"dxHtmlEditor-dialogInsertTableRowsField\": \"Rows\",\r\n \"dxHtmlEditor-dialogInsertTableColumnsField\": \"Columns\",\r\n \"dxHtmlEditor-dialogInsertTableCaption\": \"Insert Table\",\r\n \"dxHtmlEditor-dialogUpdateImageCaption\": \"Update Image\",\r\n \"dxHtmlEditor-dialogImageUpdateButton\": \"Update\",\r\n \"dxHtmlEditor-dialogImageAddButton\": \"Add\",\r\n \"dxHtmlEditor-dialogImageSpecifyUrl\": \"From the Web\",\r\n \"dxHtmlEditor-dialogImageSelectFile\": \"From This Device\",\r\n \"dxHtmlEditor-dialogImageKeepAspectRatio\": \"Keep Aspect Ratio\",\r\n \"dxHtmlEditor-dialogImageEncodeToBase64\": \"Encode to Base64\",\r\n \"dxHtmlEditor-heading\": \"Heading\",\r\n \"dxHtmlEditor-normalText\": \"Normal text\",\r\n \"dxHtmlEditor-background\": \"Background Color\",\r\n \"dxHtmlEditor-bold\": \"Bold\",\r\n \"dxHtmlEditor-color\": \"Font Color\",\r\n \"dxHtmlEditor-font\": \"Font\",\r\n \"dxHtmlEditor-italic\": \"Italic\",\r\n \"dxHtmlEditor-link\": \"Add Link\",\r\n \"dxHtmlEditor-image\": \"Add Image\",\r\n \"dxHtmlEditor-size\": \"Size\",\r\n \"dxHtmlEditor-strike\": \"Strikethrough\",\r\n \"dxHtmlEditor-subscript\": \"Subscript\",\r\n \"dxHtmlEditor-superscript\": \"Superscript\",\r\n \"dxHtmlEditor-underline\": \"Underline\",\r\n \"dxHtmlEditor-blockquote\": \"Blockquote\",\r\n \"dxHtmlEditor-header\": \"Header\",\r\n \"dxHtmlEditor-increaseIndent\": \"Increase Indent\",\r\n \"dxHtmlEditor-decreaseIndent\": \"Decrease Indent\",\r\n \"dxHtmlEditor-orderedList\": \"Ordered List\",\r\n \"dxHtmlEditor-bulletList\": \"Bullet List\",\r\n \"dxHtmlEditor-alignLeft\": \"Align Left\",\r\n \"dxHtmlEditor-alignCenter\": \"Align Center\",\r\n \"dxHtmlEditor-alignRight\": \"Align Right\",\r\n \"dxHtmlEditor-alignJustify\": \"Align Justify\",\r\n \"dxHtmlEditor-codeBlock\": \"Code Block\",\r\n \"dxHtmlEditor-variable\": \"Add Variable\",\r\n \"dxHtmlEditor-undo\": \"Undo\",\r\n \"dxHtmlEditor-redo\": \"Redo\",\r\n \"dxHtmlEditor-clear\": \"Clear Formatting\",\r\n \"dxHtmlEditor-insertTable\": \"Insert Table\",\r\n \"dxHtmlEditor-insertHeaderRow\": \"Insert Header Row\",\r\n \"dxHtmlEditor-insertRowAbove\": \"Insert Row Above\",\r\n \"dxHtmlEditor-insertRowBelow\": \"Insert Row Below\",\r\n \"dxHtmlEditor-insertColumnLeft\": \"Insert Column Left\",\r\n \"dxHtmlEditor-insertColumnRight\": \"Insert Column Right\",\r\n \"dxHtmlEditor-deleteColumn\": \"Delete Column\",\r\n \"dxHtmlEditor-deleteRow\": \"Delete Row\",\r\n \"dxHtmlEditor-deleteTable\": \"Delete Table\",\r\n \"dxHtmlEditor-cellProperties\": \"Cell Properties\",\r\n \"dxHtmlEditor-tableProperties\": \"Table Properties\",\r\n \"dxHtmlEditor-insert\": \"Insert\",\r\n \"dxHtmlEditor-delete\": \"Delete\",\r\n \"dxHtmlEditor-border\": \"Border\",\r\n \"dxHtmlEditor-style\": \"Style\",\r\n \"dxHtmlEditor-width\": \"Width\",\r\n \"dxHtmlEditor-height\": \"Height\",\r\n \"dxHtmlEditor-borderColor\": \"Color\",\r\n \"dxHtmlEditor-tableBackground\": \"Background\",\r\n \"dxHtmlEditor-dimensions\": \"Dimensions\",\r\n \"dxHtmlEditor-alignment\": \"Alignment\",\r\n \"dxHtmlEditor-horizontal\": \"Horizontal\",\r\n \"dxHtmlEditor-vertical\": \"Vertical\",\r\n \"dxHtmlEditor-paddingVertical\": \"Vertical Padding\",\r\n \"dxHtmlEditor-paddingHorizontal\": \"Horizontal Padding\",\r\n \"dxHtmlEditor-pixels\": \"Pixels\",\r\n \"dxHtmlEditor-list\": \"List\",\r\n \"dxHtmlEditor-ordered\": \"Ordered\",\r\n \"dxHtmlEditor-bullet\": \"Bullet\",\r\n \"dxHtmlEditor-align\": \"Align\",\r\n \"dxHtmlEditor-center\": \"Center\",\r\n \"dxHtmlEditor-left\": \"Left\",\r\n \"dxHtmlEditor-right\": \"Right\",\r\n \"dxHtmlEditor-indent\": \"Indent\",\r\n \"dxHtmlEditor-justify\": \"Justify\",\r\n \"dxFileManager-newDirectoryName\": \"Untitled directory\",\r\n \"dxFileManager-rootDirectoryName\": \"Files\",\r\n \"dxFileManager-errorNoAccess\": \"Access Denied. Operation could not be completed.\",\r\n \"dxFileManager-errorDirectoryExistsFormat\": \"Directory '{0}' already exists.\",\r\n \"dxFileManager-errorFileExistsFormat\": \"File '{0}' already exists.\",\r\n \"dxFileManager-errorFileNotFoundFormat\": \"File '{0}' not found.\",\r\n \"dxFileManager-errorDirectoryNotFoundFormat\": \"Directory '{0}' not found.\",\r\n \"dxFileManager-errorWrongFileExtension\": \"File extension is not allowed.\",\r\n \"dxFileManager-errorMaxFileSizeExceeded\": \"File size exceeds the maximum allowed size.\",\r\n \"dxFileManager-errorInvalidSymbols\": \"This name contains invalid characters.\",\r\n \"dxFileManager-errorDefault\": \"Unspecified error.\",\r\n \"dxFileManager-errorDirectoryOpenFailed\": \"The directory cannot be opened\",\r\n \"dxFileManager-commandCreate\": \"New directory\",\r\n \"dxFileManager-commandRename\": \"Rename\",\r\n \"dxFileManager-commandMove\": \"Move to\",\r\n \"dxFileManager-commandCopy\": \"Copy to\",\r\n \"dxFileManager-commandDelete\": \"Delete\",\r\n \"dxFileManager-commandDownload\": \"Download\",\r\n \"dxFileManager-commandUpload\": \"Upload files\",\r\n \"dxFileManager-commandRefresh\": \"Refresh\",\r\n \"dxFileManager-commandThumbnails\": \"Thumbnails View\",\r\n \"dxFileManager-commandDetails\": \"Details View\",\r\n \"dxFileManager-commandClearSelection\": \"Clear selection\",\r\n \"dxFileManager-commandShowNavPane\": \"Toggle navigation pane\",\r\n \"dxFileManager-dialogDirectoryChooserMoveTitle\": \"Move to\",\r\n \"dxFileManager-dialogDirectoryChooserMoveButtonText\": \"Move\",\r\n \"dxFileManager-dialogDirectoryChooserCopyTitle\": \"Copy to\",\r\n \"dxFileManager-dialogDirectoryChooserCopyButtonText\": \"Copy\",\r\n \"dxFileManager-dialogRenameItemTitle\": \"Rename\",\r\n \"dxFileManager-dialogRenameItemButtonText\": \"Save\",\r\n \"dxFileManager-dialogCreateDirectoryTitle\": \"New directory\",\r\n \"dxFileManager-dialogCreateDirectoryButtonText\": \"Create\",\r\n \"dxFileManager-dialogDeleteItemTitle\": \"Delete\",\r\n \"dxFileManager-dialogDeleteItemButtonText\": \"Delete\",\r\n \"dxFileManager-dialogDeleteItemSingleItemConfirmation\": \"Are you sure you want to delete {0}?\",\r\n \"dxFileManager-dialogDeleteItemMultipleItemsConfirmation\": \"Are you sure you want to delete {0} items?\",\r\n \"dxFileManager-dialogButtonCancel\": \"Cancel\",\r\n \"dxFileManager-editingCreateSingleItemProcessingMessage\": \"Creating a directory inside {0}\",\r\n \"dxFileManager-editingCreateSingleItemSuccessMessage\": \"Created a directory inside {0}\",\r\n \"dxFileManager-editingCreateSingleItemErrorMessage\": \"Directory was not created\",\r\n \"dxFileManager-editingCreateCommonErrorMessage\": \"Directory was not created\",\r\n \"dxFileManager-editingRenameSingleItemProcessingMessage\": \"Renaming an item inside {0}\",\r\n \"dxFileManager-editingRenameSingleItemSuccessMessage\": \"Renamed an item inside {0}\",\r\n \"dxFileManager-editingRenameSingleItemErrorMessage\": \"Item was not renamed\",\r\n \"dxFileManager-editingRenameCommonErrorMessage\": \"Item was not renamed\",\r\n \"dxFileManager-editingDeleteSingleItemProcessingMessage\": \"Deleting an item from {0}\",\r\n \"dxFileManager-editingDeleteMultipleItemsProcessingMessage\": \"Deleting {0} items from {1}\",\r\n \"dxFileManager-editingDeleteSingleItemSuccessMessage\": \"Deleted an item from {0}\",\r\n \"dxFileManager-editingDeleteMultipleItemsSuccessMessage\": \"Deleted {0} items from {1}\",\r\n \"dxFileManager-editingDeleteSingleItemErrorMessage\": \"Item was not deleted\",\r\n \"dxFileManager-editingDeleteMultipleItemsErrorMessage\": \"{0} items were not deleted\",\r\n \"dxFileManager-editingDeleteCommonErrorMessage\": \"Some items were not deleted\",\r\n \"dxFileManager-editingMoveSingleItemProcessingMessage\": \"Moving an item to {0}\",\r\n \"dxFileManager-editingMoveMultipleItemsProcessingMessage\": \"Moving {0} items to {1}\",\r\n \"dxFileManager-editingMoveSingleItemSuccessMessage\": \"Moved an item to {0}\",\r\n \"dxFileManager-editingMoveMultipleItemsSuccessMessage\": \"Moved {0} items to {1}\",\r\n \"dxFileManager-editingMoveSingleItemErrorMessage\": \"Item was not moved\",\r\n \"dxFileManager-editingMoveMultipleItemsErrorMessage\": \"{0} items were not moved\",\r\n \"dxFileManager-editingMoveCommonErrorMessage\": \"Some items were not moved\",\r\n \"dxFileManager-editingCopySingleItemProcessingMessage\": \"Copying an item to {0}\",\r\n \"dxFileManager-editingCopyMultipleItemsProcessingMessage\": \"Copying {0} items to {1}\",\r\n \"dxFileManager-editingCopySingleItemSuccessMessage\": \"Copied an item to {0}\",\r\n \"dxFileManager-editingCopyMultipleItemsSuccessMessage\": \"Copied {0} items to {1}\",\r\n \"dxFileManager-editingCopySingleItemErrorMessage\": \"Item was not copied\",\r\n \"dxFileManager-editingCopyMultipleItemsErrorMessage\": \"{0} items were not copied\",\r\n \"dxFileManager-editingCopyCommonErrorMessage\": \"Some items were not copied\",\r\n \"dxFileManager-editingUploadSingleItemProcessingMessage\": \"Uploading an item to {0}\",\r\n \"dxFileManager-editingUploadMultipleItemsProcessingMessage\": \"Uploading {0} items to {1}\",\r\n \"dxFileManager-editingUploadSingleItemSuccessMessage\": \"Uploaded an item to {0}\",\r\n \"dxFileManager-editingUploadMultipleItemsSuccessMessage\": \"Uploaded {0} items to {1}\",\r\n \"dxFileManager-editingUploadSingleItemErrorMessage\": \"Item was not uploaded\",\r\n \"dxFileManager-editingUploadMultipleItemsErrorMessage\": \"{0} items were not uploaded\",\r\n \"dxFileManager-editingUploadCanceledMessage\": \"Canceled\",\r\n \"dxFileManager-editingDownloadSingleItemErrorMessage\": \"Item was not downloaded\",\r\n \"dxFileManager-editingDownloadMultipleItemsErrorMessage\": \"{0} items were not downloaded\",\r\n \"dxFileManager-listDetailsColumnCaptionName\": \"Name\",\r\n \"dxFileManager-listDetailsColumnCaptionDateModified\": \"Date Modified\",\r\n \"dxFileManager-listDetailsColumnCaptionFileSize\": \"File Size\",\r\n \"dxFileManager-listThumbnailsTooltipTextSize\": \"Size\",\r\n \"dxFileManager-listThumbnailsTooltipTextDateModified\": \"Date Modified\",\r\n \"dxFileManager-notificationProgressPanelTitle\": \"Progress\",\r\n \"dxFileManager-notificationProgressPanelEmptyListText\": \"No operations\",\r\n \"dxFileManager-notificationProgressPanelOperationCanceled\": \"Canceled\",\r\n \"dxDiagram-categoryGeneral\": \"General\",\r\n \"dxDiagram-categoryFlowchart\": \"Flowchart\",\r\n \"dxDiagram-categoryOrgChart\": \"Org Chart\",\r\n \"dxDiagram-categoryContainers\": \"Containers\",\r\n \"dxDiagram-categoryCustom\": \"Custom\",\r\n \"dxDiagram-commandExportToSvg\": \"Export to SVG\",\r\n \"dxDiagram-commandExportToPng\": \"Export to PNG\",\r\n \"dxDiagram-commandExportToJpg\": \"Export to JPEG\",\r\n \"dxDiagram-commandUndo\": \"Undo\",\r\n \"dxDiagram-commandRedo\": \"Redo\",\r\n \"dxDiagram-commandFontName\": \"Font Name\",\r\n \"dxDiagram-commandFontSize\": \"Font Size\",\r\n \"dxDiagram-commandBold\": \"Bold\",\r\n \"dxDiagram-commandItalic\": \"Italic\",\r\n \"dxDiagram-commandUnderline\": \"Underline\",\r\n \"dxDiagram-commandTextColor\": \"Font Color\",\r\n \"dxDiagram-commandLineColor\": \"Line Color\",\r\n \"dxDiagram-commandLineWidth\": \"Line Width\",\r\n \"dxDiagram-commandLineStyle\": \"Line Style\",\r\n \"dxDiagram-commandLineStyleSolid\": \"Solid\",\r\n \"dxDiagram-commandLineStyleDotted\": \"Dotted\",\r\n \"dxDiagram-commandLineStyleDashed\": \"Dashed\",\r\n \"dxDiagram-commandFillColor\": \"Fill Color\",\r\n \"dxDiagram-commandAlignLeft\": \"Align Left\",\r\n \"dxDiagram-commandAlignCenter\": \"Align Center\",\r\n \"dxDiagram-commandAlignRight\": \"Align Right\",\r\n \"dxDiagram-commandConnectorLineType\": \"Connector Line Type\",\r\n \"dxDiagram-commandConnectorLineStraight\": \"Straight\",\r\n \"dxDiagram-commandConnectorLineOrthogonal\": \"Orthogonal\",\r\n \"dxDiagram-commandConnectorLineStart\": \"Connector Line Start\",\r\n \"dxDiagram-commandConnectorLineEnd\": \"Connector Line End\",\r\n \"dxDiagram-commandConnectorLineNone\": \"None\",\r\n \"dxDiagram-commandConnectorLineArrow\": \"Arrow\",\r\n \"dxDiagram-commandFullscreen\": \"Full Screen\",\r\n \"dxDiagram-commandUnits\": \"Units\",\r\n \"dxDiagram-commandPageSize\": \"Page Size\",\r\n \"dxDiagram-commandPageOrientation\": \"Page Orientation\",\r\n \"dxDiagram-commandPageOrientationLandscape\": \"Landscape\",\r\n \"dxDiagram-commandPageOrientationPortrait\": \"Portrait\",\r\n \"dxDiagram-commandPageColor\": \"Page Color\",\r\n \"dxDiagram-commandShowGrid\": \"Show Grid\",\r\n \"dxDiagram-commandSnapToGrid\": \"Snap to Grid\",\r\n \"dxDiagram-commandGridSize\": \"Grid Size\",\r\n \"dxDiagram-commandZoomLevel\": \"Zoom Level\",\r\n \"dxDiagram-commandAutoZoom\": \"Auto Zoom\",\r\n \"dxDiagram-commandFitToContent\": \"Fit to Content\",\r\n \"dxDiagram-commandFitToWidth\": \"Fit to Width\",\r\n \"dxDiagram-commandAutoZoomByContent\": \"Auto Zoom by Content\",\r\n \"dxDiagram-commandAutoZoomByWidth\": \"Auto Zoom by Width\",\r\n \"dxDiagram-commandSimpleView\": \"Simple View\",\r\n \"dxDiagram-commandCut\": \"Cut\",\r\n \"dxDiagram-commandCopy\": \"Copy\",\r\n \"dxDiagram-commandPaste\": \"Paste\",\r\n \"dxDiagram-commandSelectAll\": \"Select All\",\r\n \"dxDiagram-commandDelete\": \"Delete\",\r\n \"dxDiagram-commandBringToFront\": \"Bring to Front\",\r\n \"dxDiagram-commandSendToBack\": \"Send to Back\",\r\n \"dxDiagram-commandLock\": \"Lock\",\r\n \"dxDiagram-commandUnlock\": \"Unlock\",\r\n \"dxDiagram-commandInsertShapeImage\": \"Insert Image...\",\r\n \"dxDiagram-commandEditShapeImage\": \"Change Image...\",\r\n \"dxDiagram-commandDeleteShapeImage\": \"Delete Image\",\r\n \"dxDiagram-commandLayoutLeftToRight\": \"Left-to-right\",\r\n \"dxDiagram-commandLayoutRightToLeft\": \"Right-to-left\",\r\n \"dxDiagram-commandLayoutTopToBottom\": \"Top-to-bottom\",\r\n \"dxDiagram-commandLayoutBottomToTop\": \"Bottom-to-top\",\r\n \"dxDiagram-unitIn\": \"in\",\r\n \"dxDiagram-unitCm\": \"cm\",\r\n \"dxDiagram-unitPx\": \"px\",\r\n \"dxDiagram-dialogButtonOK\": \"OK\",\r\n \"dxDiagram-dialogButtonCancel\": \"Cancel\",\r\n \"dxDiagram-dialogInsertShapeImageTitle\": \"Insert Image\",\r\n \"dxDiagram-dialogEditShapeImageTitle\": \"Change Image\",\r\n \"dxDiagram-dialogEditShapeImageSelectButton\": \"Select image\",\r\n \"dxDiagram-dialogEditShapeImageLabelText\": \"or drop a file here\",\r\n \"dxDiagram-uiExport\": \"Export\",\r\n \"dxDiagram-uiProperties\": \"Properties\",\r\n \"dxDiagram-uiSettings\": \"Settings\",\r\n \"dxDiagram-uiShowToolbox\": \"Show Toolbox\",\r\n \"dxDiagram-uiSearch\": \"Search\",\r\n \"dxDiagram-uiStyle\": \"Style\",\r\n \"dxDiagram-uiLayout\": \"Layout\",\r\n \"dxDiagram-uiLayoutTree\": \"Tree\",\r\n \"dxDiagram-uiLayoutLayered\": \"Layered\",\r\n \"dxDiagram-uiDiagram\": \"Diagram\",\r\n \"dxDiagram-uiText\": \"Text\",\r\n \"dxDiagram-uiObject\": \"Object\",\r\n \"dxDiagram-uiConnector\": \"Connector\",\r\n \"dxDiagram-uiPage\": \"Page\",\r\n \"dxDiagram-shapeText\": \"Text\",\r\n \"dxDiagram-shapeRectangle\": \"Rectangle\",\r\n \"dxDiagram-shapeEllipse\": \"Ellipse\",\r\n \"dxDiagram-shapeCross\": \"Cross\",\r\n \"dxDiagram-shapeTriangle\": \"Triangle\",\r\n \"dxDiagram-shapeDiamond\": \"Diamond\",\r\n \"dxDiagram-shapeHeart\": \"Heart\",\r\n \"dxDiagram-shapePentagon\": \"Pentagon\",\r\n \"dxDiagram-shapeHexagon\": \"Hexagon\",\r\n \"dxDiagram-shapeOctagon\": \"Octagon\",\r\n \"dxDiagram-shapeStar\": \"Star\",\r\n \"dxDiagram-shapeArrowLeft\": \"Left Arrow\",\r\n \"dxDiagram-shapeArrowUp\": \"Up Arrow\",\r\n \"dxDiagram-shapeArrowRight\": \"Right Arrow\",\r\n \"dxDiagram-shapeArrowDown\": \"Down Arrow\",\r\n \"dxDiagram-shapeArrowUpDown\": \"Up Down Arrow\",\r\n \"dxDiagram-shapeArrowLeftRight\": \"Left Right Arrow\",\r\n \"dxDiagram-shapeProcess\": \"Process\",\r\n \"dxDiagram-shapeDecision\": \"Decision\",\r\n \"dxDiagram-shapeTerminator\": \"Terminator\",\r\n \"dxDiagram-shapePredefinedProcess\": \"Predefined Process\",\r\n \"dxDiagram-shapeDocument\": \"Document\",\r\n \"dxDiagram-shapeMultipleDocuments\": \"Multiple Documents\",\r\n \"dxDiagram-shapeManualInput\": \"Manual Input\",\r\n \"dxDiagram-shapePreparation\": \"Preparation\",\r\n \"dxDiagram-shapeData\": \"Data\",\r\n \"dxDiagram-shapeDatabase\": \"Database\",\r\n \"dxDiagram-shapeHardDisk\": \"Hard Disk\",\r\n \"dxDiagram-shapeInternalStorage\": \"Internal Storage\",\r\n \"dxDiagram-shapePaperTape\": \"Paper Tape\",\r\n \"dxDiagram-shapeManualOperation\": \"Manual Operation\",\r\n \"dxDiagram-shapeDelay\": \"Delay\",\r\n \"dxDiagram-shapeStoredData\": \"Stored Data\",\r\n \"dxDiagram-shapeDisplay\": \"Display\",\r\n \"dxDiagram-shapeMerge\": \"Merge\",\r\n \"dxDiagram-shapeConnector\": \"Connector\",\r\n \"dxDiagram-shapeOr\": \"Or\",\r\n \"dxDiagram-shapeSummingJunction\": \"Summing Junction\",\r\n \"dxDiagram-shapeContainerDefaultText\": \"Container\",\r\n \"dxDiagram-shapeVerticalContainer\": \"Vertical Container\",\r\n \"dxDiagram-shapeHorizontalContainer\": \"Horizontal Container\",\r\n \"dxDiagram-shapeCardDefaultText\": \"Person's Name\",\r\n \"dxDiagram-shapeCardWithImageOnLeft\": \"Card with Image on the Left\",\r\n \"dxDiagram-shapeCardWithImageOnTop\": \"Card with Image on the Top\",\r\n \"dxDiagram-shapeCardWithImageOnRight\": \"Card with Image on the Right\",\r\n \"dxGantt-dialogTitle\": \"Title\",\r\n \"dxGantt-dialogStartTitle\": \"Start\",\r\n \"dxGantt-dialogEndTitle\": \"End\",\r\n \"dxGantt-dialogProgressTitle\": \"Progress\",\r\n \"dxGantt-dialogResourcesTitle\": \"Resources\",\r\n \"dxGantt-dialogResourceManagerTitle\": \"Resource Manager\",\r\n \"dxGantt-dialogTaskDetailsTitle\": \"Task Details\",\r\n \"dxGantt-dialogEditResourceListHint\": \"Edit Resource List\",\r\n \"dxGantt-dialogEditNoResources\": \"No resources\",\r\n \"dxGantt-dialogButtonAdd\": \"Add\",\r\n \"dxGantt-contextMenuNewTask\": \"New Task\",\r\n \"dxGantt-contextMenuNewSubtask\": \"New Subtask\",\r\n \"dxGantt-contextMenuDeleteTask\": \"Delete Task\",\r\n \"dxGantt-contextMenuDeleteDependency\": \"Delete Dependency\",\r\n \"dxGantt-dialogTaskDeleteConfirmation\": \"Deleting a task also deletes all its dependencies and subtasks. Are you sure you want to delete this task?\",\r\n \"dxGantt-dialogDependencyDeleteConfirmation\": \"Are you sure you want to delete the dependency from the task?\",\r\n \"dxGantt-dialogResourcesDeleteConfirmation\": \"Deleting a resource also deletes it from tasks to which this resource is assigned. Are you sure you want to delete these resources? Resources: {0}\",\r\n \"dxGantt-dialogConstraintCriticalViolationMessage\": \"The task you are attempting to move is linked to a second task by a dependency relation. This change would conflict with dependency rules. How would you like to proceed?\",\r\n \"dxGantt-dialogConstraintViolationMessage\": \"The task you are attempting to move is linked to a second task by a dependency relation. How would you like to proceed?\",\r\n \"dxGantt-dialogCancelOperationMessage\": \"Cancel the operation\",\r\n \"dxGantt-dialogDeleteDependencyMessage\": \"Delete the dependency\",\r\n \"dxGantt-dialogMoveTaskAndKeepDependencyMessage\": \"Move the task and keep the dependency\",\r\n \"dxGantt-dialogConstraintCriticalViolationSeveralTasksMessage\": \"The task you are attempting to move is linked to another tasks by dependency relations. This change would conflict with dependency rules. How would you like to proceed?\",\r\n \"dxGantt-dialogConstraintViolationSeveralTasksMessage\": \"The task you are attempting to move is linked to another tasks by dependency relations. How would you like to proceed?\",\r\n \"dxGantt-dialogDeleteDependenciesMessage\": \"Delete the dependency relations\",\r\n \"dxGantt-dialogMoveTaskAndKeepDependenciesMessage\": \"Move the task and keep the dependencies\",\r\n \"dxGantt-undo\": \"Undo\",\r\n \"dxGantt-redo\": \"Redo\",\r\n \"dxGantt-expandAll\": \"Expand All\",\r\n \"dxGantt-collapseAll\": \"Collapse All\",\r\n \"dxGantt-addNewTask\": \"Add New Task\",\r\n \"dxGantt-deleteSelectedTask\": \"Delete Selected Task\",\r\n \"dxGantt-zoomIn\": \"Zoom In\",\r\n \"dxGantt-zoomOut\": \"Zoom Out\",\r\n \"dxGantt-fullScreen\": \"Full Screen\",\r\n \"dxGantt-quarter\": \"Q{0}\",\r\n \"dxGantt-sortingAscendingText\": \"Sort Ascending\",\r\n \"dxGantt-sortingDescendingText\": \"Sort Descending\",\r\n \"dxGantt-sortingClearText\": \"Clear Sorting\",\r\n \"dxGantt-showResources\": \"Show Resources\",\r\n \"dxGantt-showDependencies\": \"Show Dependencies\",\r\n \"dxGantt-dialogStartDateValidation\": \"Start date must be after {0}\",\r\n \"dxGantt-dialogEndDateValidation\": \"End date must be after {0}\"\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../../../core/utils/type\";\r\nimport dateUtils from \"../../../../../core/utils/date\";\r\nvar getAppointmentDurationInHours = (startDate, endDate) => (endDate.getTime() - startDate.getTime()) / dateUtils.dateToMilliseconds(\"hour\");\r\nvar appointmentHasShortDayDuration = (startDate, endDate, viewStartDayHour, viewEndDayHour) => {\r\n var appointmentDurationInHours = getAppointmentDurationInHours(startDate, endDate);\r\n var viewDurationInHours = viewEndDayHour - viewStartDayHour;\r\n var startDateHours = startDate.getHours();\r\n var endDateHours = endDate.getHours();\r\n return appointmentDurationInHours >= viewDurationInHours && startDateHours === viewStartDayHour && endDateHours === viewEndDayHour\r\n};\r\nexport var getAppointmentTakesAllDay = (appointmentAdapter, viewStartDayHour, viewEndDayHour, allDayPanelMode) => {\r\n var hasAllDay = () => appointmentAdapter.allDay;\r\n switch (allDayPanelMode) {\r\n case \"hidden\":\r\n return false;\r\n case \"allDay\":\r\n return hasAllDay();\r\n case \"all\":\r\n default:\r\n if (hasAllDay()) {\r\n return true\r\n }\r\n var {\r\n endDate: endDate, startDate: startDate\r\n } = appointmentAdapter;\r\n if (!isDefined(endDate)) {\r\n return false\r\n }\r\n var appointmentDurationInHours = getAppointmentDurationInHours(startDate, endDate);\r\n return appointmentDurationInHours >= 24 || appointmentHasShortDayDuration(startDate, endDate, viewStartDayHour, viewEndDayHour)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/model/untyped_getCurrentView.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"../../../../core/utils/type\";\r\nvar VIEW_TYPES = [\"day\", \"week\", \"workWeek\", \"month\", \"timelineDay\", \"timelineWeek\", \"timelineWorkWeek\", \"timelineMonth\", \"agenda\"];\r\nexport var renovationGetCurrentView = (currentView, views) => {\r\n var currentViewProps = views.find(view => {\r\n var names = isObject(view) ? [view.name, view.type] : [view];\r\n if (names.includes(currentView)) {\r\n return true\r\n }\r\n return false\r\n });\r\n if (void 0 === currentViewProps) {\r\n if (VIEW_TYPES.includes(currentView)) {\r\n currentViewProps = currentView\r\n } else {\r\n [currentViewProps] = views\r\n }\r\n }\r\n return currentViewProps\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/timeZoneCalculator/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../../core/utils/type\";\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n PathTimeZoneConversion\r\n} from \"./types\";\r\nvar MS_IN_MINUTE = 6e4;\r\nvar MS_IN_HOUR = 60 * MS_IN_MINUTE;\r\nexport class TimeZoneCalculator {\r\n constructor(options) {\r\n this.options = options\r\n }\r\n createDate(sourceDate, info) {\r\n var date = new Date(sourceDate);\r\n switch (info.path) {\r\n case PathTimeZoneConversion.fromSourceToAppointment:\r\n return this.getConvertedDate(date, info.appointmentTimeZone, true, false);\r\n case PathTimeZoneConversion.fromAppointmentToSource:\r\n return this.getConvertedDate(date, info.appointmentTimeZone, true, true);\r\n case PathTimeZoneConversion.fromSourceToGrid:\r\n return this.getConvertedDate(date, info.appointmentTimeZone, false, false);\r\n case PathTimeZoneConversion.fromGridToSource:\r\n return this.getConvertedDate(date, info.appointmentTimeZone, false, true);\r\n default:\r\n throw new Error(\"not specified pathTimeZoneConversion\")\r\n }\r\n }\r\n getOffsets(date, appointmentTimezone) {\r\n var clientOffset = -this.getClientOffset(date) / dateUtils.dateToMilliseconds(\"hour\");\r\n var commonOffset = this.getCommonOffset(date);\r\n var appointmentOffset = this.getAppointmentOffset(date, appointmentTimezone);\r\n return {\r\n client: clientOffset,\r\n common: !isDefined(commonOffset) ? clientOffset : commonOffset,\r\n appointment: \"number\" !== typeof appointmentOffset ? clientOffset : appointmentOffset\r\n }\r\n }\r\n getConvertedDateByOffsets(date, clientOffset, targetOffset, isBack) {\r\n var direction = isBack ? -1 : 1;\r\n var resultDate = new Date(date);\r\n resultDate.setMinutes(resultDate.getMinutes() - direction * (60 * clientOffset));\r\n resultDate.setMinutes(resultDate.getMinutes() + direction * (60 * targetOffset));\r\n return new Date(resultDate)\r\n }\r\n getOriginStartDateOffsetInMs(date, timezone, isUTCDate) {\r\n var offsetInHours = this.getOffsetInHours(date, timezone, isUTCDate);\r\n return offsetInHours * MS_IN_HOUR\r\n }\r\n getOffsetInHours(date, timezone, isUTCDate) {\r\n var {\r\n appointment: appointment,\r\n client: client,\r\n common: common\r\n } = this.getOffsets(date, timezone);\r\n if (!!timezone && isUTCDate) {\r\n return appointment - client\r\n }\r\n if (!!timezone && !isUTCDate) {\r\n return appointment - common\r\n }\r\n if (!timezone && isUTCDate) {\r\n return common - client\r\n }\r\n return 0\r\n }\r\n getClientOffset(date) {\r\n return this.options.getClientOffset(date)\r\n }\r\n getCommonOffset(date) {\r\n return this.options.tryGetCommonOffset(date)\r\n }\r\n getAppointmentOffset(date, appointmentTimezone) {\r\n return this.options.tryGetAppointmentOffset(date, appointmentTimezone)\r\n }\r\n getConvertedDate(date, appointmentTimezone, useAppointmentTimeZone, isBack) {\r\n var newDate = new Date(date.getTime());\r\n var offsets = this.getOffsets(newDate, appointmentTimezone);\r\n if (useAppointmentTimeZone && !!appointmentTimezone) {\r\n return this.getConvertedDateByOffsets(date, offsets.client, offsets.appointment, isBack)\r\n }\r\n return this.getConvertedDateByOffsets(date, offsets.client, offsets.common, isBack)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_date_adapter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../core/utils/date\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass DateAdapterCore {\r\n constructor(source) {\r\n this._source = new Date(source.getTime ? source.getTime() : source)\r\n }\r\n get source() {\r\n return this._source\r\n }\r\n result() {\r\n return this._source\r\n }\r\n getTimezoneOffset() {\r\n var format = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;\r\n var value = this._source.getTimezoneOffset();\r\n if (\"minute\" === format) {\r\n return value * toMs(\"minute\")\r\n }\r\n return value\r\n }\r\n getTime() {\r\n return this._source.getTime()\r\n }\r\n setTime(value) {\r\n this._source.setTime(value);\r\n return this\r\n }\r\n addTime(value) {\r\n this._source.setTime(this._source.getTime() + value);\r\n return this\r\n }\r\n setMinutes(value) {\r\n this._source.setMinutes(value);\r\n return this\r\n }\r\n addMinutes(value) {\r\n this._source.setMinutes(this._source.getMinutes() + value);\r\n return this\r\n }\r\n subtractMinutes(value) {\r\n this._source.setMinutes(this._source.getMinutes() - value);\r\n return this\r\n }\r\n}\r\nvar DateAdapter = date => new DateAdapterCore(date);\r\nexport default DateAdapter;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/timezones/m_utils_timezones_data.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../../../core/errors\";\r\nimport {\r\n sign\r\n} from \"../../../core/utils/math\";\r\nimport query from \"../../../data/query\";\r\nimport tzData from \"./timezones_data\";\r\nvar getConvertedUntils = value => value.split(\"|\").map(until => {\r\n if (\"Infinity\" === until) {\r\n return null\r\n }\r\n return 1e3 * parseInt(until, 36)\r\n});\r\nvar parseTimezone = timeZoneConfig => {\r\n var {\r\n offsets: offsets\r\n } = timeZoneConfig;\r\n var {\r\n offsetIndices: offsetIndices\r\n } = timeZoneConfig;\r\n var {\r\n untils: untils\r\n } = timeZoneConfig;\r\n var offsetList = offsets.split(\"|\").map(value => parseInt(value));\r\n var offsetIndexList = offsetIndices.split(\"\").map(value => parseInt(value));\r\n var dateList = getConvertedUntils(untils).map((accumulator = 0, value => accumulator += value));\r\n var accumulator;\r\n return {\r\n offsetList: offsetList,\r\n offsetIndexList: offsetIndexList,\r\n dateList: dateList\r\n }\r\n};\r\nclass TimeZoneCache {\r\n constructor() {\r\n this.map = new Map\r\n }\r\n tryGet(id) {\r\n if (!this.map.get(id)) {\r\n var config = timeZoneDataUtils.getTimezoneById(id);\r\n if (!config) {\r\n return false\r\n }\r\n var timeZoneInfo = parseTimezone(config);\r\n this.map.set(id, timeZoneInfo)\r\n }\r\n return this.map.get(id)\r\n }\r\n}\r\nvar tzCache = new TimeZoneCache;\r\nvar timeZoneDataUtils = {\r\n _tzCache: tzCache,\r\n _timeZones: tzData.zones,\r\n getDisplayedTimeZones(timestamp) {\r\n var timeZones = this._timeZones.map(timezone => {\r\n var timeZoneInfo = parseTimezone(timezone);\r\n var offset = this.getUtcOffset(timeZoneInfo, timestamp);\r\n var title = \"(GMT \".concat(this.formatOffset(offset), \") \").concat(this.formatId(timezone.id));\r\n return {\r\n offset: offset,\r\n title: title,\r\n id: timezone.id\r\n }\r\n });\r\n return query(timeZones).sortBy(\"offset\").toArray()\r\n },\r\n formatOffset(offset) {\r\n var hours = Math.floor(offset);\r\n var minutesInDecimal = offset - hours;\r\n var signString = sign(offset) >= 0 ? \"+\" : \"-\";\r\n var hoursString = \"0\".concat(Math.abs(hours)).slice(-2);\r\n var minutesString = minutesInDecimal > 0 ? \":\".concat(60 * minutesInDecimal) : \":00\";\r\n return signString + hoursString + minutesString\r\n },\r\n formatId: id => id.split(\"/\").join(\" - \").split(\"_\").join(\" \"),\r\n getTimezoneById(id) {\r\n if (!id) {\r\n return\r\n }\r\n var tzList = this._timeZones;\r\n for (var i = 0; i < tzList.length; i++) {\r\n var currentId = tzList[i].id;\r\n if (currentId === id) {\r\n return tzList[i]\r\n }\r\n }\r\n errors.log(\"W0009\", id);\r\n return\r\n },\r\n getTimeZoneOffsetById(id, timestamp) {\r\n var timeZoneInfo = tzCache.tryGet(id);\r\n return timeZoneInfo ? this.getUtcOffset(timeZoneInfo, timestamp) : void 0\r\n },\r\n getTimeZoneDeclarationTuple(id, year) {\r\n var timeZoneInfo = tzCache.tryGet(id);\r\n return timeZoneInfo ? this.getTimeZoneDeclarationTupleCore(timeZoneInfo, year) : []\r\n },\r\n getTimeZoneDeclarationTupleCore(timeZoneInfo, year) {\r\n var {\r\n offsetList: offsetList\r\n } = timeZoneInfo;\r\n var {\r\n offsetIndexList: offsetIndexList\r\n } = timeZoneInfo;\r\n var {\r\n dateList: dateList\r\n } = timeZoneInfo;\r\n var tupleResult = [];\r\n for (var i = 0; i < dateList.length; i++) {\r\n var currentDate = dateList[i];\r\n var currentYear = new Date(currentDate).getFullYear();\r\n if (currentYear === year) {\r\n var offset = offsetList[offsetIndexList[i + 1]];\r\n tupleResult.push({\r\n date: currentDate,\r\n offset: -offset / 60\r\n })\r\n }\r\n if (currentYear > year) {\r\n break\r\n }\r\n }\r\n return tupleResult\r\n },\r\n getUtcOffset(timeZoneInfo, dateTimeStamp) {\r\n var {\r\n offsetList: offsetList\r\n } = timeZoneInfo;\r\n var {\r\n offsetIndexList: offsetIndexList\r\n } = timeZoneInfo;\r\n var {\r\n dateList: dateList\r\n } = timeZoneInfo;\r\n var lastIntervalStartIndex = dateList.length - 1 - 1;\r\n var index = lastIntervalStartIndex;\r\n while (index >= 0 && dateTimeStamp < dateList[index]) {\r\n index--\r\n }\r\n var offset = offsetList[offsetIndexList[index + 1]];\r\n return -offset / 60 || offset\r\n }\r\n};\r\nexport default timeZoneDataUtils;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/timezones/timezones_data.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport default {\r\n zones: [{\r\n id: \"Africa/Abidjan\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Accra\",\r\n untils: \"-r507yk|1e3pak|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|cjvlc|681qo|clq9c|681qo|cjvlc|681qo|cjvlc|681qo|Infinity\",\r\n offsets: \"0.8667|0|-20\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Africa/Addis_Ababa\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Algiers\",\r\n untils: \"-uozn3l|2qx1nl|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|53c00|9idxc0|3i040|51mw0|253uk0|9o2k0|92040|8l3s0|jutc0|4uy840|3rdzw0|46xc00|7x6o0|2xco40|8n180|7x9g0|9d440|kiqg0|9d440|9q2s0|9cyk0|Infinity\",\r\n offsets: \"-9.35|0|-60|-120\",\r\n offsetIndices: \"0121212121212121232321212122321212\"\r\n }, {\r\n id: \"Africa/Asmara\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Asmera\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Bamako\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Bangui\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Banjul\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Bissau\",\r\n untils: \"-u9rek0|wvoyo0|Infinity\",\r\n offsets: \"62.3333|60|0\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Africa/Blantyre\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Brazzaville\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Bujumbura\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Cairo\",\r\n untils: \"-fdls80|40d80|a31g0|7x3w0|a4w40|aqyk0|80ys0|b07w0|7tk40|b07w0|8jhg0|a8fw0|60go40|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|f9x80|3i040|eluk0|462s0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|b5rw0|7m5g0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|aqvs0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7k580|b5xg0|6u7w0|bvus0|6h980|c8tg0|64ak0|cyqs0|5anw0|1jms0|12t80|1w22s0|25p80|1sw40|2vmk0|Infinity\",\r\n offsets: \"-120|-180\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Africa/Casablanca\",\r\n untils: \"-tblt9g|di7nxg|3huk0|51k40|2znuk0|2dp9g0|776k0|8nt2s0|657w0|3ifxg0|3jp80|va040|4qak0|e1ms0|7pp80|cnms0|3afw0|2xi840|xqqk0|bp56s0|4qak0|e1ms0|45x80|d2g40|51ek0|c8tg0|64ak0|e1sc0|47uo0|1leo0|23xc0|asw00|3lmo0|1qyo0|40g00|7x6o0|4mo00|1stc0|4deo0|7x6o0|3ylc0|1stc0|51hc0|7x6o0|3lmo0|1stc0|5reo0|7k800|2vpc0|25s00|64dc0|7k800|2iqo0|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|25s00|g7c00|1stc0|g7c00|25s00|Infinity\",\r\n offsets: \"30.3333|0|-60\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Africa/Ceuta\",\r\n untils: \"-qyiys0|7x3w0|2vt440|8sqs0|ssyk0|8n6s0|9px80|905g0|a2yo0|902o0|k69dc0|657w0|3ifxg0|3jp80|va040|4qak0|e1ms0|7pp80|cnms0|3afw0|2xi840|129us0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Africa/Conakry\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Dakar\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Dar_es_Salaam\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Djibouti\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Douala\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/El_Aaiun\",\r\n untils: \"-isdxk0|m2g0c0|vek0|4qak0|e1ms0|7pp80|cnms0|3afw0|fke5g0|4qak0|e1ms0|45x80|d2g40|51ek0|c8tg0|64ak0|e1sc0|47uo0|1leo0|23xc0|asw00|3lmo0|1qyo0|40g00|7x6o0|4mo00|1stc0|4deo0|7x6o0|3ylc0|1stc0|51hc0|7x6o0|3lmo0|1stc0|5reo0|7k800|2vpc0|25s00|64dc0|7k800|2iqo0|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|1stc0|gkao0|1stc0|g7c00|25s00|g7c00|1stc0|g7c00|25s00|g7c00|25s00|g7c00|1stc0|g7c00|25s00|Infinity\",\r\n offsets: \"52.8|60|0|-60\",\r\n offsetIndices: \"012323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Africa/Freetown\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Gaborone\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Harare\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Johannesburg\",\r\n untils: \"-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity\",\r\n offsets: \"-90|-120|-180\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"Africa/Juba\",\r\n untils: \"-kcrsis|kixuys|8l6k0|a4w40|8n180|a6qs0|8n180|a31g0|8ovw0|a16s0|8qqk0|9zc40|8sl80|9xhg0|8wak0|9ts40|8y580|a4w40|8n180|a31g0|8ovw0|a16s0|8sl80|9xhg0|8ufw0|9vms0|8wak0|9ts40|8y580|a4w40|8ovw0|a16s0|8qqk0|7frw40|Infinity\",\r\n offsets: \"-126.4667|-120|-180\",\r\n offsetIndices: \"01212121212121212121212121212121212\"\r\n }, {\r\n id: \"Africa/Kampala\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Khartoum\",\r\n untils: \"-kcrsow|kixv4w|8l6k0|a4w40|8n180|a6qs0|8n180|a31g0|8ovw0|a16s0|8qqk0|9zc40|8sl80|9xhg0|8wak0|9ts40|8y580|a4w40|8n180|a31g0|8ovw0|a16s0|8sl80|9xhg0|8ufw0|9vms0|8wak0|9ts40|8y580|a4w40|8ovw0|a16s0|8qqk0|7frw40|9ac180|Infinity\",\r\n offsets: \"-130.1333|-120|-180\",\r\n offsetIndices: \"012121212121212121212121212121212121\"\r\n }, {\r\n id: \"Africa/Kigali\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Kinshasa\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Lagos\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Libreville\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Lome\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Luanda\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Lubumbashi\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Lusaka\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Malabo\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Maputo\",\r\n untils: \"-yvtfd8|Infinity\",\r\n offsets: \"-130.3333|-120\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Maseru\",\r\n untils: \"-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity\",\r\n offsets: \"-90|-120|-180\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"Africa/Mbabane\",\r\n untils: \"-yvtdi0|kn7o60|9cyk0|9d440|9cyk0|Infinity\",\r\n offsets: \"-90|-120|-180\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"Africa/Mogadishu\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Monrovia\",\r\n untils: \"-qj6zc4|rl202a|Infinity\",\r\n offsets: \"43.1333|44.5|0\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Africa/Nairobi\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Africa/Ndjamena\",\r\n untils: \"-u9rk4c|zdk5cc|7iak0|Infinity\",\r\n offsets: \"-60.2|-60|-120\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"Africa/Niamey\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Nouakchott\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Ouagadougou\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Porto-Novo\",\r\n untils: \"-q9qbao|Infinity\",\r\n offsets: \"-13.6|-60\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Sao_Tome\",\r\n untils: \"-u9rhc0|1jbm840|irxc0|Infinity\",\r\n offsets: \"36.75|0|-60\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"Africa/Timbuktu\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Africa/Tripoli\",\r\n untils: \"-q3gfrw|gl6ajw|422c0|xado0|4bbo0|wrpg0|4s580|1kdpg0|c05bw0|4mqs0|9et80|9d440|9et80|9eys0|9et80|9mdg0|95jw0|9io40|9cyk0|99es0|9et80|9eys0|9et80|9d440|9et80|b2840|3cf3w0|9kis0|9et80|7vqyw0|75eo0|asw00|Infinity\",\r\n offsets: \"-52.7333|-60|-120\",\r\n offsetIndices: \"012121212121212121212121212122122\"\r\n }, {\r\n id: \"Africa/Tunis\",\r\n untils: \"-uozn3l|enxevl|b5uo0|53c00|u8w00|7x9g0|c8w80|7k800|z3w0|ew40|8bx80|9d440|9nx00|925o0|8l100|gi3440|7k800|b9k00|7vc00|51mw00|5ytc0|9d1c0|9d1c0|b9k00|7thc0|7m0tc0|7tk40|93us0|b5uo0|7k800|b5uo0|7x6o0|asw00|Infinity\",\r\n offsets: \"-9.35|-60|-120\",\r\n offsetIndices: \"0121212121212121212121212121212121\"\r\n }, {\r\n id: \"Africa/Windhoek\",\r\n untils: \"-yvtdi0|kn7o60|9cyk0|oj2nw0|235k00|8lho0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|Infinity\",\r\n offsets: \"-90|-120|-180|-60\",\r\n offsetIndices: \"01211313131313131313131313131313131313131313131313131\"\r\n }, {\r\n id: \"America/Adak\",\r\n untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"660|600|540\",\r\n offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Anchorage\",\r\n untils: \"-ek1qo0|1tyx80|2e400|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"600|540|480\",\r\n offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Anguilla\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Antigua\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Araguaina\",\r\n untils: \"-t85j2o|99k8mo|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|2yl440|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|51udg0|64ak0|Infinity\",\r\n offsets: \"192.8|180|120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Argentina/Buenos_Aires\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323232323232\"\r\n }, {\r\n id: \"America/Argentina/Catamarca\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323132321232\"\r\n }, {\r\n id: \"America/Argentina/ComodRivadavia\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323132321232\"\r\n }, {\r\n id: \"America/Argentina/Cordoba\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323132323232\"\r\n }, {\r\n id: \"America/Argentina/Jujuy\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|c8w80|776k0|ag040|7k2g0|bvus0|776k0|7qcg40|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121232323121323232\"\r\n }, {\r\n id: \"America/Argentina/La_Rioja\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6qik0|3g880|8jbw0|6u7w0|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121232323231232321232\"\r\n }, {\r\n id: \"America/Argentina/Mendoza\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bktk0|71mk0|bqas0|73h80|bvus0|773s0|5unes0|6hes0|1p7mk0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232312121321232\"\r\n }, {\r\n id: \"America/Argentina/Rio_Gallegos\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323232321232\"\r\n }, {\r\n id: \"America/Argentina/Salta\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121232323231323232\"\r\n }, {\r\n id: \"America/Argentina/San_Juan\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6qik0|3g880|8jbw0|6u7w0|bvus0|776k0|5v2840|2txg0|1sgak0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121232323231232321232\"\r\n }, {\r\n id: \"America/Argentina/San_Luis\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|7pp80|b2aw0|71mk0|4qg40|6s8ik0|2txg0|1sgak0|14nw0|2gys0|b5xg0|7k580|b5xg0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121232323121212321212\"\r\n }, {\r\n id: \"America/Argentina/Tucuman\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|mas0|1um2k0|3yik0|b5xg0|7k580|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212323232313232123232\"\r\n }, {\r\n id: \"America/Argentina/Ushuaia\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|5v0dg0|12ys0|1u93w0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323232321232\"\r\n }, {\r\n id: \"America/Aruba\",\r\n untils: \"-u7lckd|rlo7qd|Infinity\",\r\n offsets: \"275.7833|270|240\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"America/Asuncion\",\r\n untils: \"-jy93zk|ldwofk|s4vw0|s6w40|7tek0|b0dg0|7rjw0|b0dg0|7rjw0|b0dg0|9cyk0|9eys0|9et80|9eys0|9cyk0|9eys0|9cyk0|9eys0|9cyk0|9eys0|9et80|9eys0|9cyk0|9eys0|9cyk0|9eys0|9cyk0|9eys0|9et80|9eys0|9cyk0|ahus0|8a2k0|9eys0|9cyk0|9o840|7k580|b7s40|93p80|9gtg0|7nuk0|b42s0|7lzw0|b5xg0|7tek0|b9ms0|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|7kas0|b5rw0|7x9g0|ast80|a31g0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|776k0|biw40|8zzw0|905g0|9px80|905g0|9px80|9d440|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|a31g0|8n180|a31g0|8n180|a31g0|Infinity\",\r\n offsets: \"230.6667|240|180\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Atikokan\",\r\n untils: \"-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"0101111\"\r\n }, {\r\n id: \"America/Atka\",\r\n untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"660|600|540\",\r\n offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Bahia_Banderas\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|asqg0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"421|420|360|480|300\",\r\n offsetIndices: \"0121212131212121212121212121212121212142424242424242424242424242424242424242424242424242424242\"\r\n }, {\r\n id: \"America/Bahia\",\r\n untils: \"-t85kv8|99kaf8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|4irc40|6u7w0|Infinity\",\r\n offsets: \"154.0667|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Barbados\",\r\n untils: \"-o0aiaj|46b400|npv1mj|5rbw0|a31g0|8n180|a31g0|8n180|ag040|84ik0|Infinity\",\r\n offsets: \"238.4833|240|180\",\r\n offsetIndices: \"00121212121\"\r\n }, {\r\n id: \"America/Belem\",\r\n untils: \"-t85j0s|99k8ks|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|Infinity\",\r\n offsets: \"193.9333|180|120\",\r\n offsetIndices: \"012121212121212121212121212121\"\r\n }, {\r\n id: \"America/Belize\",\r\n untils: \"-u52ic0|3edkc0|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|bvte0|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|bvte0|6u9a0|g2t2q0|3e580|4mcys0|2vmk0|Infinity\",\r\n offsets: \"352.8|360|330|300\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121213131\"\r\n }, {\r\n id: \"America/Blanc-Sablon\",\r\n untils: \"-qzp0o0|a2vw0|c5jxg0|1tzdw0|2dnc0|Infinity\",\r\n offsets: \"240|180\",\r\n offsetIndices: \"010110\"\r\n }, {\r\n id: \"America/Boa_Vista\",\r\n untils: \"-t85grk|99k93k|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|62xk40|7k580|biw40|cvw0|Infinity\",\r\n offsets: \"242.6667|240|180\",\r\n offsetIndices: \"0121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Bogota\",\r\n untils: \"-srdoy8|14f1hi8|ha580|Infinity\",\r\n offsets: \"296.2667|300|240\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"America/Boise\",\r\n untils: \"-r0emw0|ast80|7x9g0|ast80|1um840|9s7jw0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|51k40|doik0|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420|360\",\r\n offsetIndices: \"0101012212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Buenos_Aires\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvus0|6u7w0|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323232323232\"\r\n }, {\r\n id: \"America/Cambridge_Bay\",\r\n untils: \"-q3gdc0|bjeec0|1tz5k0|2dvo0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x6o0|ast80|ct40|7kj40|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|420|360|300\",\r\n offsetIndices: \"0122131212121212121212121212121212121212121212233221212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Campo_Grande\",\r\n untils: \"-t85hvw|99ka7w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n offsets: \"218.4667|240|180\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Cancun\",\r\n untils: \"-p1u7c0|vauo00|7ggw40|afuk0|8a840|afuk0|8a840|64ak0|4bms0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|51k40|Infinity\",\r\n offsets: \"347.0667|360|300|240\",\r\n offsetIndices: \"0123232321212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Caracas\",\r\n untils: \"-u7lcxw|rlo83w|meoxm0|4dps00|Infinity\",\r\n offsets: \"267.6667|270|240\",\r\n offsetIndices: \"01212\"\r\n }, {\r\n id: \"America/Catamarca\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|5v42s0|z9g0|1u93w0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323132321232\"\r\n }, {\r\n id: \"America/Cayenne\",\r\n untils: \"-uj7yb4|tcw6r4|Infinity\",\r\n offsets: \"209.3333|240|180\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"America/Cayman\",\r\n untils: \"-w757vc|Infinity\",\r\n offsets: \"319.6|300\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Chicago\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bvus0|776k0|7kas0|b5rw0|9d440|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|7x9g0|dbjw0|8a840|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Chihuahua\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|xes2s0|afuk0|8a840|afuk0|8aaw0|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"424.3333|420|360|300\",\r\n offsetIndices: \"0121212323221212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Coral_Harbour\",\r\n untils: \"-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"0101111\"\r\n }, {\r\n id: \"America/Cordoba\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323132323232\"\r\n }, {\r\n id: \"America/Costa_Rica\",\r\n untils: \"-pjw8fn|ubtl3n|51ek0|doo40|51ek0|5jso40|8drw0|acas0|2xh80|Infinity\",\r\n offsets: \"336.2167|360|300\",\r\n offsetIndices: \"0121212121\"\r\n }, {\r\n id: \"America/Creston\",\r\n untils: \"-rshz80|vbus0|Infinity\",\r\n offsets: \"420|480\",\r\n offsetIndices: \"010\"\r\n }, {\r\n id: \"America/Cuiaba\",\r\n untils: \"-t85hm4|99k9y4|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|w5hg0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n offsets: \"224.3333|240|180\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Curacao\",\r\n untils: \"-u7lckd|rlo7qd|Infinity\",\r\n offsets: \"275.7833|270|240\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"America/Danmarkshavn\",\r\n untils: \"-rvusjk|x8nx3k|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|53hk0|Infinity\",\r\n offsets: \"74.6667|180|120|0\",\r\n offsetIndices: \"01212121212121212121212121212121213\"\r\n }, {\r\n id: \"America/Dawson_Creek\",\r\n untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|69uk0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"0101101010101010101010101010101010101010101010101010101011\"\r\n }, {\r\n id: \"America/Dawson\",\r\n untils: \"-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|465k00|3e2is0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n offsets: \"540|480|420\",\r\n offsetIndices: \"01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Denver\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Detroit\",\r\n untils: \"-xx8dyd|5eraud|dyeyk0|1tzb40|2dq40|1c9440|7x3w0|9rlbxo|71s2c|9d440|9cyk0|2cmdg0|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"332.1833|360|300|240\",\r\n offsetIndices: \"0123323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"America/Dominica\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Edmonton\",\r\n untils: \"-x1yazk|629ink|a2vw0|8n6s0|29ek0|h6lg0|9px80|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|9l0g40|1tz5k0|2dvo0|tj1g0|7x3w0|ctzk40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"453.8667|420|360\",\r\n offsetIndices: \"0121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Eirunepe\",\r\n untils: \"-t85f28|99ka68|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|7hg2s0|2t2t80|Infinity\",\r\n offsets: \"279.4667|300|240\",\r\n offsetIndices: \"0121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/El_Salvador\",\r\n untils: \"-pkm4tc|ymao5c|7k580|b5xg0|7k580|Infinity\",\r\n offsets: \"356.8|360|300\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"America/Ensenada\",\r\n untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"468.0667|420|480\",\r\n offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Fort_Nelson\",\r\n untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"01011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"America/Fort_Wayne\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Fortaleza\",\r\n untils: \"-t85kvc|99kafc|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|puk0|id6s0|6h980|Infinity\",\r\n offsets: \"154|180|120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Glace_Bay\",\r\n untils: \"-z94kwc|89fk8c|a2vw0|c5jxg0|1tzdw0|2dnc0|3y8g40|7x3w0|9pa5g0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"239.8|240|180\",\r\n offsetIndices: \"012122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Godthab\",\r\n untils: \"-rvumf4|x8nqz4|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"206.9333|180|120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Goose_Bay\",\r\n untils: \"-qzp20k|a2vw0|8kjbw0|kzjyk|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|6y2s0|22420|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"210.8667|150.8667|210|150|240|180|120\",\r\n offsetIndices: \"010232323232323233232323232323232323232323232323232323232324545454545454545454545454545454545454545454546454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454\"\r\n }, {\r\n id: \"America/Grand_Turk\",\r\n untils: \"-u85og2|z3brw2|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|18ais0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"307.1667|300|240\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121222121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Grenada\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Guadeloupe\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Guatemala\",\r\n untils: \"-qqqskk|ss0akk|4ofw0|4tidg0|6djw0|3wwas0|8n180|7n5ms0|7x3w0|Infinity\",\r\n offsets: \"362.0667|360|300\",\r\n offsetIndices: \"0121212121\"\r\n }, {\r\n id: \"America/Guayaquil\",\r\n untils: \"-kcr84o|wb620o|3jp80|Infinity\",\r\n offsets: \"314|300|240\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"America/Guyana\",\r\n untils: \"-smcak8|vj4sz8|81rf90|Infinity\",\r\n offsets: \"232.6667|225|180|240\",\r\n offsetIndices: \"0123\"\r\n }, {\r\n id: \"America/Halifax\",\r\n untils: \"-z94k80|777go0|9et80|st9o0|a2vw0|ssyk0|5rbw0|cv1g0|69uk0|c6ys0|6kyk0|ci2s0|67zw0|ci2s0|6w2k0|bu040|7lzw0|bu040|66580|bu040|7lzw0|bu040|64ak0|cls40|5v180|cv1g0|6j3w0|c6ys0|79180|b42s0|7lzw0|b42s0|7yyk0|bu040|64ak0|dbpg0|66580|cls40|5ed80|bu040|7lzw0|b42s0|7lzw0|cjxg0|66580|bh1g0|7lzw0|b42s0|7lzw0|6uj00|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|1cm2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"254.4|240|180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Havana\",\r\n untils: \"-n7762o|1icfyo|69uk0|62s040|4ofw0|e1ms0|51ek0|e1ms0|4ofw0|1fhs40|4ofw0|e1ms0|4ofw0|9s9k40|67zw0|cedg0|6h980|9o840|7yyk0|b5xg0|7k580|bvus0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|8a2k0|ag040|8bx80|ae5g0|8drw0|acas0|9cyk0|9d440|9px80|905g0|9px80|9q2s0|7x3w0|8a840|ast80|7x9g0|ast80|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|905g0|a2vw0|905g0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|8n400|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|7x6o0|1cm000|6uao0|bvs00|779c0|bitc0|6uao0|bvs00|779c0|bvs00|779c0|c8qo0|779c0|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|Infinity\",\r\n offsets: \"329.6|300|240\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Hermosillo\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"443.8667|420|360|480\",\r\n offsetIndices: \"0121212131212121\"\r\n }, {\r\n id: \"America/Indiana/Indianapolis\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Indiana/Knox\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Indiana/Marengo\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|2wsas0|7x3w0|1c9440|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|465h80|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|fvt9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"0101011010101010101010101212121212111212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Indiana/Petersburg\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|501ek0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|sfzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|eu02o0|asw00|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"01010110101010101010101010101010101010101010101010111011212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Indiana/Tell_City\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|501ek0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|1tw580|9d440|9cyk0|9d440|9cvs0|9d440|9cyk0|ihslg0|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"01010110101010101010101010101021211010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Indiana/Vevay\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|4gyis0|7txx80|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|hfzhg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"010101101212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Indiana/Vincennes\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|3fidg0|7x3w0|asys0|7x3w0|b5rw0|7kas0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|2lz980|9cyk0|9d440|9cyk0|ihslg0|asw00|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"01010110101010101010101010101010121211011212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Indiana/Winamac\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|465h80|9cyk0|9d440|9cyk0|ihslg0|asw00|6udg0|c8l40|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"01010110101010101010101010101010101010121211021212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Indianapolis\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Inuvik\",\r\n untils: \"-8ve5c0|6fce80|9q000|71i2w0|ipzw0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|480|360|420\",\r\n offsetIndices: \"0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"America/Iqaluit\",\r\n untils: \"-eb6ao0|1l3h80|2dq40|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7xc80|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|240|300|180|360\",\r\n offsetIndices: \"01123212121212121212121212121212121212121212142212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Jamaica\",\r\n untils: \"-u85og2|wbl182|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|Infinity\",\r\n offsets: \"307.1667|300|240\",\r\n offsetIndices: \"0121212121212121212121\"\r\n }, {\r\n id: \"America/Jujuy\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|c8w80|776k0|ag040|7k2g0|bvus0|776k0|7qcg40|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121232323121323232\"\r\n }, {\r\n id: \"America/Juneau\",\r\n untils: \"-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9d1c0|9d1c0|9cyk0|9d440|9px80|905g0|9px80|1leo0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420|540\",\r\n offsetIndices: \"01101010101010101010101010001010122020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202\"\r\n }, {\r\n id: \"America/Kentucky/Louisville\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|sg5g0|6bp80|a98o40|7x3w0|6w840|1tz8c0|2dsw0|ast9o|1sw2c|21gis0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|4bh80|3j3xc0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"0101010101101010101010101010101010101121212121212111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Kentucky/Monticello\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|bs6g40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Knox_IN\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Kralendijk\",\r\n untils: \"-u7lckd|rlo7qd|Infinity\",\r\n offsets: \"275.7833|270|240\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"America/La_Paz\",\r\n untils: \"-jxzspo|84ik0|Infinity\",\r\n offsets: \"272.6|212.6|240\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"America/Lima\",\r\n untils: \"-w25lpo|fcxjlo|4ml80|93us0|9cyk0|9d440|9cyk0|nw16s0|4ml80|e5c40|4ml80|1fr1g0|4ml80|1yiys0|4ml80|Infinity\",\r\n offsets: \"308.6|300|240\",\r\n offsetIndices: \"0121212121212121\"\r\n }, {\r\n id: \"America/Los_Angeles\",\r\n untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Louisville\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|sg5g0|6bp80|a98o40|7x3w0|6w840|1tz8c0|2dsw0|ast9o|1sw2c|21gis0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|4bh80|3j3xc0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4g00|64dc0|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"0101010101101010101010101010101010101121212121212111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Lower_Princes\",\r\n untils: \"-u7lckd|rlo7qd|Infinity\",\r\n offsets: \"275.7833|270|240\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"America/Maceio\",\r\n untils: \"-t85ldw|99kaxw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|2yl440|64ak0|1wf1g0|7k580|biw40|puk0|id6s0|6h980|Infinity\",\r\n offsets: \"142.8667|180|120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Managua\",\r\n untils: \"-ijh6oo|ka1i0o|xqqk0|24p6s0|53980|dmtg0|53980|60itw0|dq240|53es0|235h80|4beis0|8zzw0|at4c0|7x140|Infinity\",\r\n offsets: \"345.2|360|300\",\r\n offsetIndices: \"0121212121212121\"\r\n }, {\r\n id: \"America/Manaus\",\r\n untils: \"-t85gvw|99k97w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|Infinity\",\r\n offsets: \"240.0667|240|180\",\r\n offsetIndices: \"01212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Marigot\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Martinique\",\r\n untils: \"-umcvcs|zz5x4s|8zzw0|Infinity\",\r\n offsets: \"244.3333|240|180\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"America/Matamoros\",\r\n untils: \"-p1u7c0|ykt480|ast80|3vppg0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"400|360|300\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Mazatlan\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"425.6667|420|360|480\",\r\n offsetIndices: \"0121212131212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Mendoza\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bktk0|71mk0|bqas0|73h80|bvus0|773s0|5unes0|6hes0|1p7mk0|3yik0|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232312121321232\"\r\n }, {\r\n id: \"America/Menominee\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|asys0|7x3w0|a7n9g0|9px80|1at9g0|2396k0|9d1c0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"01010110101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Merida\",\r\n untils: \"-p1u7c0|vauo00|hoyk0|6ys0c0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"358.4667|360|300\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Metlakatla\",\r\n untils: \"-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|gpc840|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|3ylc0|2itg0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420|540\",\r\n offsetIndices: \"01101010101010101010101010101010102020200202020202020202020202020202020202020202\"\r\n }, {\r\n id: \"America/Mexico_City\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|3knek0|776k0|rf440|5t6k0|1evk40|71mk0|30p1g0|8n180|nufxo0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"396.6|420|360|300\",\r\n offsetIndices: \"012121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"America/Miquelon\",\r\n untils: \"-ulmyxk|zzqbdk|3m59g0|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"224.6667|240|180|120\",\r\n offsetIndices: \"012323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"America/Moncton\",\r\n untils: \"-z94i40|89fhg0|a2vw0|7mqqo0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|e1ms0|4ofw0|dmtg0|64ak0|cao40|6fek0|bkqs0|7iak0|6y5k0|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|s36s0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a2lo|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6uiyc|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240|180\",\r\n offsetIndices: \"012121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Monterrey\",\r\n untils: \"-p1u7c0|ykt480|ast80|3vppg0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"401.2667|360|300\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Montevideo\",\r\n untils: \"-w4mll9|67elc0|1s74p9|9et80|9exe0|9czy0|9exe0|9czy0|3ydyq0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7k6m0|9q1e0|9czy0|asxe0|7x5a0|6do20|ppvy0|4mmm0|8g9qq0|901a0|38pe0|2inw0|2nf9g0|8zzw0|1e3s40|9o3y0|q8he0|2kik0|yxhg0|4bh80|s36s0|2vl60|905g0|5rg20|51ek0|weqs0|3yik0|e1ms0|4ofw0|erk40|3yik0|2vs40|gk7w0|41iys0|3wnw0|erk40|4bh80|c8tg0|64ak0|c8tg0|6u7w0|c8tg0|6h980|bvus0|6u7w0|614qs0|9q2s0|a31g0|7x3w0|ag040|8a2k0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|ag040|8a2k0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n offsets: \"224.85|240|180|210|150|120|90\",\r\n offsetIndices: \"001232323232323232323232324242525242525264252525252525252525252525252525252525252525252\"\r\n }, {\r\n id: \"America/Montreal\",\r\n untils: \"-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Montserrat\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Nassau\",\r\n untils: \"-u6m4c6|r7u7s6|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"309.5|300|240\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/New_York\",\r\n untils: \"-r0ev80|ast80|7x9g0|ast80|7x9g0|b5rw0|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tzb40|2dq40|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Nipigon\",\r\n untils: \"-qzoxw0|a2vw0|bfxjw0|pmdk0|1tzb40|2dq40|ewvus0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"010111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Nome\",\r\n untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l6c0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"660|600|540|480\",\r\n offsetIndices: \"011001010101010101010101010101010122323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"America/Noronha\",\r\n untils: \"-t85lzw|99k8rw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity\",\r\n offsets: \"129.6667|120|60\",\r\n offsetIndices: \"0121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/North_Dakota/Beulah\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hc00|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360|300\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/North_Dakota/Center\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a5c0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360|300\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101011212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/North_Dakota/New_Salem\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a5c0|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360|300\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Nuuk\",\r\n untils: \"-rvumf4|x8nqz4|8zrk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"206.9333|180|120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Ojinaga\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|xes2s0|afuk0|8a840|afuk0|8aaw0|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"417.6667|420|360|300\",\r\n offsetIndices: \"0121212323221212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Panama\",\r\n untils: \"-w757vc|Infinity\",\r\n offsets: \"319.6|300\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Pangnirtung\",\r\n untils: \"-pkmlc0|b0ke00|1tzdw0|2dnc0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|asw00|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7xc80|ast80|7x6o0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|240|180|120|300|360\",\r\n offsetIndices: \"012213121212121212121212121212121212114141414154414141414141414141414141414141414141414141414141414141414141414141414141414\"\r\n }, {\r\n id: \"America/Paramaribo\",\r\n untils: \"-usj4g8|cixc0c|5lydbk|kcrm6c|Infinity\",\r\n offsets: \"220.6667|220.8667|220.6|210|180\",\r\n offsetIndices: \"01234\"\r\n }, {\r\n id: \"America/Phoenix\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|zjedo|4olg0|9et80|bs6lmc|9cyk0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"01010101010\"\r\n }, {\r\n id: \"America/Port_of_Spain\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Port-au-Prince\",\r\n untils: \"-rmk9ac|ylcf6c|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8aaw0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|3vpjw0|ast80|7x9g0|ast80|2stv00|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|pkg40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"289|300|240\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Porto_Acre\",\r\n untils: \"-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity\",\r\n offsets: \"271.2|300|240\",\r\n offsetIndices: \"01212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Porto_Velho\",\r\n untils: \"-t85g60|99k8i0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|Infinity\",\r\n offsets: \"255.6|240|180\",\r\n offsetIndices: \"012121212121212121212121212121\"\r\n }, {\r\n id: \"America/Puerto_Rico\",\r\n untils: \"-efsnk0|1ppu40|2dnc0|Infinity\",\r\n offsets: \"240|180\",\r\n offsetIndices: \"0110\"\r\n }, {\r\n id: \"America/Punta_Arenas\",\r\n untils: \"-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|2fnh80|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|Infinity\",\r\n offsets: \"282.7667|300|240|180\",\r\n offsetIndices: \"0102021212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"America/Rainy_River\",\r\n untils: \"-qzov40|a2vw0|bfxjw0|pmdk0|1tz8c0|2dsw0|ewvus0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"010111010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Rankin_Inlet\",\r\n untils: \"-6s8lc0|4c6oo0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|360|240|300\",\r\n offsetIndices: \"012131313131313131313131313131313131313131313331313131313131313131313131313131313131313131313131313131313131313131313131\"\r\n }, {\r\n id: \"America/Recife\",\r\n untils: \"-t85ljc|99kb3c|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity\",\r\n offsets: \"139.6|180|120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Regina\",\r\n untils: \"-xkq9yc|6l1hmc|a2vw0|60enw0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|1b6840|9cyk0|9d440|8zzw0|9q2s0|9cyk0|9q2s0|9cyk0|9d440|9cyk0|66gc0|1tz5k0|2dvo0|a31g0|9cyk0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|tj1g0|9cyk0|9d440|Infinity\",\r\n offsets: \"418.6|420|360\",\r\n offsetIndices: \"012121212121212121212121221212121212121212121212121212\"\r\n }, {\r\n id: \"America/Resolute\",\r\n untils: \"-bnp9c0|97nco0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|360|240|300\",\r\n offsetIndices: \"012131313131313131313131313131313131313131313331313131313331313131313131313131313131313131313131313131313131313131313131\"\r\n }, {\r\n id: \"America/Rio_Branco\",\r\n untils: \"-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity\",\r\n offsets: \"271.2|300|240\",\r\n offsetIndices: \"01212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Rosario\",\r\n untils: \"-px7ys0|5iv8k0|67zw0|a4w40|73h80|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|cls40|66580|cls40|66580|cls40|66580|cls40|67zw0|6a040|hy7w0|6a040|xovw0|3uys0|18nbw0|b0dg0|8ve2k0|3uys0|3yik0|bqas0|71mk0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|7m2qs0|4tzw0|biw40|776k0|bvus0|6u7w0|bvxk0|6u540|bvus0|776k0|7qcg40|3yik0|b5xg0|7k580|Infinity\",\r\n offsets: \"256.8|240|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212123232323132323232\"\r\n }, {\r\n id: \"America/Santa_Isabel\",\r\n untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"468.0667|420|480\",\r\n offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Santarem\",\r\n untils: \"-t85hvc|99ka7c|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|Infinity\",\r\n offsets: \"218.8|240|180\",\r\n offsetIndices: \"0121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Santiago\",\r\n untils: \"-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|229zw0|2gt80|awo40|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n offsets: \"282.7667|300|240|180\",\r\n offsetIndices: \"010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"America/Santo_Domingo\",\r\n untils: \"-j6hz1c|hiw29c|67zw0|1dy840|62ha0|cnle0|4h2m0|elyq0|47ta0|ei9e0|4bim0|eek20|4dda0|ecpe0|dkmtg0|1stc0|Infinity\",\r\n offsets: \"280|300|240|270\",\r\n offsetIndices: \"01213131313131212\"\r\n }, {\r\n id: \"America/Sao_Paulo\",\r\n untils: \"-t85jd8|99k8x8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5k02s0|6onw0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n offsets: \"186.4667|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Scoresbysund\",\r\n untils: \"-rvurxk|x8ntpk|902o0|9cvs0|9cyk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"87.8667|120|60|0\",\r\n offsetIndices: \"0121323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"America/Shiprock\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Sitka\",\r\n untils: \"-ek1w80|1tz2s0|2dyg0|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1leo0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420|540\",\r\n offsetIndices: \"01101010101010101010101010101010122020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202\"\r\n }, {\r\n id: \"America/St_Barthelemy\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/St_Johns\",\r\n untils: \"-ris3ck|8bx80|ar440|a2vw0|9tjs0|53980|dkys0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|7tmw0|1wfuk|8zzw0|a3480|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"210.8667|150.8667|210|150|90\",\r\n offsetIndices: \"01010101010101010101010101010101010102323232323232323323232323232323232323232323232323232323232323232323232323232323232323232323232323232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"America/St_Kitts\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/St_Lucia\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/St_Thomas\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/St_Vincent\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Swift_Current\",\r\n untils: \"-xkq9d4|6l1h14|a2vw0|c5jxg0|1tz5k0|2dvo0|asys0|8n180|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|3yles0|9cyk0|s36s0|9cyk0|9d440|7x3w0|b5xg0|7k580|5j4lg0|Infinity\",\r\n offsets: \"431.3333|420|360\",\r\n offsetIndices: \"012122121212121212121212\"\r\n }, {\r\n id: \"America/Tegucigalpa\",\r\n untils: \"-pfzh6k|yho0ik|7k580|b5xg0|7k580|96x1g0|4qak0|Infinity\",\r\n offsets: \"348.8667|360|300\",\r\n offsetIndices: \"01212121\"\r\n }, {\r\n id: \"America/Thule\",\r\n untils: \"-rvuj9g|12yzilg|9cyk0|9d440|9cyk0|9q2s0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"275.1333|240|180\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Thunder_Bay\",\r\n untils: \"-vbavc0|gr8qs0|1tzb40|2dq40|ctmlg0|9cyk0|9d440|9px80|9d440|9cyk0|s36s0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"0122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"America/Tijuana\",\r\n untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"468.0667|420|480\",\r\n offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Toronto\",\r\n untils: \"-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Tortola\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Vancouver\",\r\n untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"0101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Virgin\",\r\n untils: \"-u6m79w|Infinity\",\r\n offsets: \"246.0667|240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"America/Whitehorse\",\r\n untils: \"-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|tiyo0|6qp440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n offsets: \"540|480|420\",\r\n offsetIndices: \"01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"America/Winnipeg\",\r\n untils: \"-s0s7c0|7k580|tj700|a2vw0|9ok840|6u7w0|2a5hg0|1tz8c0|2dsw0|biw40|7x3w0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b7s40|7tek0|autg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|7x3w0|1cm2s0|7k580|1cm2s0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Yakutat\",\r\n untils: \"-ek1tg0|1tz000|2e180|cawis0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1lbw0|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"540|480\",\r\n offsetIndices: \"01101010101010101010101010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"America/Yellowknife\",\r\n untils: \"-i9m2o0|3pk3o0|1tz5k0|2dvo0|a7n3w0|9q000|7k85k0|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"0|420|360|300\",\r\n offsetIndices: \"012213121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Antarctica/Casey\",\r\n untils: \"-irxc0|lag4o0|73bo0|uz1o0|60l80|2fnh80|pz9g0|Infinity\",\r\n offsets: \"0|-480|-660\",\r\n offsetIndices: \"01212121\"\r\n }, {\r\n id: \"Antarctica/Davis\",\r\n untils: \"-6rmdc0|42jdw0|27wgs0|l8uss0|7eqs0|unmk0|60qs0|Infinity\",\r\n offsets: \"0|-420|-300\",\r\n offsetIndices: \"01012121\"\r\n }, {\r\n id: \"Antarctica/DumontDUrville\",\r\n untils: \"-c05eo0|2mks80|2i72g0|Infinity\",\r\n offsets: \"0|-600\",\r\n offsetIndices: \"0101\"\r\n }, {\r\n id: \"Antarctica/Macquarie\",\r\n untils: \"-rsj4w0|8zzw0|11wqk0|f4kh40|a6p8g0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660|0\",\r\n offsetIndices: \"0102010101010101010101010101010101010101010101010101010101010101010101010101010101010101011\"\r\n }, {\r\n id: \"Antarctica/Mawson\",\r\n untils: \"-8aelc0|t22y80|Infinity\",\r\n offsets: \"0|-360|-300\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Antarctica/McMurdo\",\r\n untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"-690|-750|-720|-780\",\r\n offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Antarctica/Palmer\",\r\n untils: \"-2lxhc0|31ho0|bqas0|71mk0|bqas0|8ovw0|9d440|9px80|9d440|9cyk0|9d440|28t6k0|51ek0|46b6s0|8c2s0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|Infinity\",\r\n offsets: \"0|180|240|120\",\r\n offsetIndices: \"0121212121213121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Antarctica/Rothera\",\r\n untils: \"3lxs00|Infinity\",\r\n offsets: \"0|180\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Antarctica/South_Pole\",\r\n untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"-690|-750|-720|-780\",\r\n offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Antarctica/Syowa\",\r\n untils: \"-6qsqo0|Infinity\",\r\n offsets: \"0|-180\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Antarctica/Troll\",\r\n untils: \"ibruo0|27pg0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-120\",\r\n offsetIndices: \"00101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Antarctica/Vostok\",\r\n untils: \"-6aaao0|Infinity\",\r\n offsets: \"0|-360\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Arctic/Longyearbyen\",\r\n untils: \"-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Aden\",\r\n untils: \"-bwgbbg|Infinity\",\r\n offsets: \"-186.8667|-180\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Almaty\",\r\n untils: \"-nu1a90|37a0d0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|Infinity\",\r\n offsets: \"-307.8|-300|-360|-420\",\r\n offsetIndices: \"012323232323232323232321232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Amman\",\r\n untils: \"-kcrtbk|m566fk|60l80|awo40|7v980|awo40|7v980|ayis0|9gnw0|9b9g0|7v980|autg0|7v980|3e6840|9et80|9io40|9cyk0|9d440|9cyk0|9d440|9px80|ayis0|7rjw0|ag040|8a2k0|9zc40|8drw0|a31g0|8zzw0|9d440|9cyk0|9d440|8n180|ag040|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|epmo0|4deo0|9o5c0|9ew00|9b6o0|9ew00|9d1c0|9d1c0|9d1c0|asw00|7x6o0|afxc0|8n400|9d1c0|9d1c0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|wel80|51k40|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|Infinity\",\r\n offsets: \"-143.7333|-120|-180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Anadyr\",\r\n untils: \"-nu1sv8|379zj8|qi27w0|9et80|is040|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n offsets: \"-709.9333|-720|-780|-840|-660\",\r\n offsetIndices: \"01232121212121212121214121212121212121212121212121212121212141\"\r\n }, {\r\n id: \"Asia/Aqtau\",\r\n untils: \"-nu15b4|379y74|qrh3w0|iruk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-201.0667|-240|-300|-360\",\r\n offsetIndices: \"012323232323232323232123232312121212121212121212\"\r\n }, {\r\n id: \"Asia/Aqtobe\",\r\n untils: \"-nu16l4|379zh4|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|Infinity\",\r\n offsets: \"-228.6667|-240|-300|-360\",\r\n offsetIndices: \"0123232323232323232321232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Ashgabat\",\r\n untils: \"-nu16t8|379zp8|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|Infinity\",\r\n offsets: \"-233.5333|-240|-300|-360\",\r\n offsetIndices: \"0123232323232323232323212\"\r\n }, {\r\n id: \"Asia/Ashkhabad\",\r\n untils: \"-nu16t8|379zp8|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|Infinity\",\r\n offsets: \"-233.5333|-240|-300|-360\",\r\n offsetIndices: \"0123232323232323232323212\"\r\n }, {\r\n id: \"Asia/Atyrau\",\r\n untils: \"-nu15m8|37a1a8|qrh140|iruk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|j3440|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-207.7333|-180|-300|-360|-240\",\r\n offsetIndices: \"01232323232323232323242323232323232324242424242\"\r\n }, {\r\n id: \"Asia/Baghdad\",\r\n untils: \"-r50g80|xkn3w0|7v980|9b9g0|9gnw0|9eys0|9et80|9d440|9b9g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9f1k0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|9ew00|9ew00|9d1c0|9ew00|9d1c0|9ew00|9d1c0|9ew00|Infinity\",\r\n offsets: \"-177.6|-180|-240\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Bahrain\",\r\n untils: \"-q3gmvk|rctnrk|Infinity\",\r\n offsets: \"-206.1333|-240|-180\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Baku\",\r\n untils: \"-nu158c|h4tkwc|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9d1c0|239ew0|asw00|7x3w0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-199.4|-180|-240|-300\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Bangkok\",\r\n untils: \"-pysda4|Infinity\",\r\n offsets: \"-402.0667|-420\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Barnaul\",\r\n untils: \"-q4ljic|5hu6uc|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|38fo0|64og0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n offsets: \"-335|-360|-420|-480\",\r\n offsetIndices: \"0123232323232323232323212323232321212121212121212121212121212121212\"\r\n }, {\r\n id: \"Asia/Beirut\",\r\n untils: \"-pyzew0|aunw0|88dg0|9et80|8yas0|a2vw0|a31g0|7k580|hjqo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|5lhs40|56yk0|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|autg0|7v980|2wxus0|8n180|a4w40|8n180|a4w40|8n180|a4w40|8n180|bs5g0|71mk0|alk40|86d80|a4w40|8n180|a4w40|8n180|a6qs0|80t80|905g0|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|Infinity\",\r\n offsets: \"-120|-180\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Bishkek\",\r\n untils: \"-nu19tc|379zxc|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|h8dc0|bkl80|8n180|a31g0|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|9db20|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|Infinity\",\r\n offsets: \"-298.4|-300|-360|-420\",\r\n offsetIndices: \"012323232323232323232321212121212121212121212121212\"\r\n }, {\r\n id: \"Asia/Brunei\",\r\n untils: \"-mvofy4|3khxs4|Infinity\",\r\n offsets: \"-459.6667|-450|-480\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Calcutta\",\r\n untils: \"-xehava|innm9a|bmfw0|5lxg0|1mn180|Infinity\",\r\n offsets: \"-321.1667|-330|-390\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"Asia/Chita\",\r\n untils: \"-q4cfog|5hkxgg|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnew0|Infinity\",\r\n offsets: \"-453.8667|-480|-540|-600\",\r\n offsetIndices: \"012323232323232323232321232323232323232323232323232323232323232312\"\r\n }, {\r\n id: \"Asia/Choibalsan\",\r\n untils: \"-xmct7c|11sndrc|2qk2k0|9eqg0|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|s6qk0|3nc0c0|9ct00|9d9o0|9ct00|Infinity\",\r\n offsets: \"-458|-420|-480|-600|-540\",\r\n offsetIndices: \"0123434343434343434343434343434343434343434343424242\"\r\n }, {\r\n id: \"Asia/Chongqing\",\r\n untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Chungking\",\r\n untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Colombo\",\r\n untils: \"-xehask|isle6k|cajy0|1mp2u0|qetjw0|7x5a0|4xvqq0|Infinity\",\r\n offsets: \"-319.5333|-330|-360|-390\",\r\n offsetIndices: \"01231321\"\r\n }, {\r\n id: \"Asia/Dacca\",\r\n untils: \"-eqtpow|bmgyw|5lxg0|4qknw0|u4ijy0|a1400|Infinity\",\r\n offsets: \"-353.3333|-390|-330|-360|-420\",\r\n offsetIndices: \"0121343\"\r\n }, {\r\n id: \"Asia/Damascus\",\r\n untils: \"-q3gk20|5k6q0|8n180|a31g0|8n180|a31g0|8n180|a31g0|8zzw0|k4hk40|7yyk0|awo40|7tek0|b0dg0|7v980|awo40|7tek0|alk40|887w0|awo40|7v980|ayis0|7v980|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|7v980|awo40|7v980|awo40|7v980|ayis0|7v980|awo40|6bp80|cg840|6bp80|2eh1g0|8zzw0|9ts40|8zzw0|pvk40|c33w0|7cw40|cjrw0|6zxg0|btuk0|7rpg0|9gnw0|9d440|9cyk0|9et80|9et80|9rxg0|91uk0|92040|9et80|9o840|9et80|9d440|9et80|9eys0|9et80|9b9g0|9gnw0|99es0|9iik0|9d440|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|9eys0|9et80|9d440|9et80|9d440|8y580|9q2s0|b5rw0|7x9g0|aunw0|7ig40|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|Infinity\",\r\n offsets: \"-145.2|-120|-180\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Dhaka\",\r\n untils: \"-eqtpow|bmgyw|5lxg0|4qknw0|u4ijy0|a1400|Infinity\",\r\n offsets: \"-353.3333|-390|-330|-360|-420\",\r\n offsetIndices: \"0121343\"\r\n }, {\r\n id: \"Asia/Dili\",\r\n untils: \"-u9s4l8|fqcu98|hufs00|cpz440|Infinity\",\r\n offsets: \"-502.3333|-480|-540\",\r\n offsetIndices: \"01212\"\r\n }, {\r\n id: \"Asia/Dubai\",\r\n untils: \"-q3gnko|Infinity\",\r\n offsets: \"-221.2|-240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Dushanbe\",\r\n untils: \"-nu18qo|379yuo|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|hp440|Infinity\",\r\n offsets: \"-275.2|-300|-360|-420\",\r\n offsetIndices: \"012323232323232323232321\"\r\n }, {\r\n id: \"Asia/Famagusta\",\r\n untils: \"-p4bqac|rvhy2c|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|8h8w0|leog0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-135.8|-120|-180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Gaza\",\r\n untils: \"-ffv9k0|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|5hoqs0|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|1sns0|3p6is0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|66as0|4vxc0|8n400|a2yo0|8n400|a2yo0|8n400|asw00|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|8n400|a2yo0|8ulg0|97ek0|8y580|9ts40|8hms0|a4qk0|7x3w0|asys0|8a5c0|ahs1o|71mic|bzk5o|69uic|cg840|902o0|9q000|9cyk0|9d440|ast80|7z440|aqyk0|7z6w0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|Infinity\",\r\n offsets: \"-120|-180\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010100101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Harbin\",\r\n untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Hebron\",\r\n untils: \"-ffv9k0|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|5hoqs0|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|1sns0|3p6is0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|66as0|4vxc0|8n400|a2yo0|8n400|a2yo0|8n400|asw00|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|8n400|a2yo0|8ulg0|97ek0|8y580|9ts40|8hms0|a4qk0|82nw0|anes0|8a5c0|afxc0|73h80|bzk5o|69uic|1hs40|1lbw0|9d440|902o0|9q000|9cyk0|9d440|ast80|7z440|aqyk0|7z6w0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|7idc0|b7pc0|7vc00|auqo0|7vc00|auqo0|7vc00|auqo0|7vc00|b7pc0|Infinity\",\r\n offsets: \"-120|-180\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Ho_Chi_Minh\",\r\n untils: \"-x56934|2isioa|gj25iu|15ct80|8so00|tmtk0|4azjw0|2cmao0|8285c0|Infinity\",\r\n offsets: \"-426.6667|-426.5|-420|-480|-540\",\r\n offsetIndices: \"0123423232\"\r\n }, {\r\n id: \"Asia/Hong_Kong\",\r\n untils: \"-y0i0s0|j44dk0|5k000|4d4y0|2195i0|7x3w0|bj320|6uao0|bvs00|7x6o0|9d1c0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|ast80|77c40|biqk0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n offsets: \"-456.7|-480|-540|-510\",\r\n offsetIndices: \"0123212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Hovd\",\r\n untils: \"-xmcoz0|11sncb0|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity\",\r\n offsets: \"-366.6|-360|-420|-480\",\r\n offsetIndices: \"012323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Irkutsk\",\r\n untils: \"-q28gn5|5fh175|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-417.0833|-420|-480|-540\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Istanbul\",\r\n untils: \"-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity\",\r\n offsets: \"-116.9333|-120|-180|-240\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122\"\r\n }, {\r\n id: \"Asia/Jakarta\",\r\n untils: \"-o0bdpc|4lzxc0|4wdzjc|1tu960|1cx860|11jta0|74uc20|Infinity\",\r\n offsets: \"-427.2|-440|-450|-540|-480|-420\",\r\n offsetIndices: \"01232425\"\r\n }, {\r\n id: \"Asia/Jayapura\",\r\n untils: \"-jebm20|66bqe0|a37vy0|Infinity\",\r\n offsets: \"-562.8|-540|-570\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"Asia/Jerusalem\",\r\n untils: \"-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity\",\r\n offsets: \"-140.6667|-120|-180|-240\",\r\n offsetIndices: \"012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Kabul\",\r\n untils: \"-d1pkg0|Infinity\",\r\n offsets: \"-240|-270\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Kamchatka\",\r\n untils: \"-olrupo|3z045o|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n offsets: \"-634.6|-660|-720|-780\",\r\n offsetIndices: \"012323232323232323232321232323232323232323232323232323232323212\"\r\n }, {\r\n id: \"Asia/Karachi\",\r\n untils: \"-wvpb30|im3zt0|1mn180|33xpg0|a63o20|g72qo0|9cyk0|2y85g0|7v980|8hms0|aaak0|Infinity\",\r\n offsets: \"-268.2|-330|-390|-300|-360\",\r\n offsetIndices: \"012133434343\"\r\n }, {\r\n id: \"Asia/Kashgar\",\r\n untils: \"-lx5pjw|Infinity\",\r\n offsets: \"-350.3333|-360\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Kathmandu\",\r\n untils: \"-q3gt4s|yg2lus|Infinity\",\r\n offsets: \"-341.2667|-330|-345\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Katmandu\",\r\n untils: \"-q3gt4s|yg2lus|Infinity\",\r\n offsets: \"-341.2667|-330|-345\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Khandyga\",\r\n untils: \"-q4cjrp|5hl1jp|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|3fx40|4h6s0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|8ql00|1mlho0|Infinity\",\r\n offsets: \"-542.2167|-480|-540|-600|-660\",\r\n offsetIndices: \"0123232323232323232323212323232323232323232323232343434343434343432\"\r\n }, {\r\n id: \"Asia/Kolkata\",\r\n untils: \"-xehava|innm9a|bmfw0|5lxg0|1mn180|Infinity\",\r\n offsets: \"-321.1667|-330|-390\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"Asia/Krasnoyarsk\",\r\n untils: \"-q37l72|5gg8j2|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-371.4333|-360|-420|-480\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Kuala_Lumpur\",\r\n untils: \"-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity\",\r\n offsets: \"-415.4167|-420|-440|-450|-540|-480\",\r\n offsetIndices: \"0123435\"\r\n }, {\r\n id: \"Asia/Kuching\",\r\n untils: \"-mvof3k|3khwxk|1epvy0|4ohqo|e5a9c|4ohqo|e3flc|4ohqo|e3flc|4ohqo|e3flc|4ohqo|e5a9c|4ohqo|e3flc|4ohqo|3ajlc|1v2qk0|Infinity\",\r\n offsets: \"-441.3333|-450|-480|-500|-540\",\r\n offsetIndices: \"0123232323232323242\"\r\n }, {\r\n id: \"Asia/Kuwait\",\r\n untils: \"-bwgbbg|Infinity\",\r\n offsets: \"-186.8667|-180\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Macao\",\r\n untils: \"-y0i2cy|jdvyoy|6onw0|ac580|8fs40|7v980|11luw0|awlc0|7vc00|ac800|bko00|7x6o0|9d1c0|7vc00|asw00|7x6o0|asw00|7x6o0|auqo0|88ao0|asw00|7x6o0|asw00|779c0|bitc0|779c0|bvs00|6uao0|bw1q0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cvs0|9d6w0|9cvs0|9d6w0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n offsets: \"-454.1667|-480|-540|-600\",\r\n offsetIndices: \"012323212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Macau\",\r\n untils: \"-y0i2cy|jdvyoy|6onw0|ac580|8fs40|7v980|11luw0|awlc0|7vc00|ac800|bko00|7x6o0|9d1c0|7vc00|asw00|7x6o0|asw00|7x6o0|auqo0|88ao0|asw00|7x6o0|asw00|779c0|bitc0|779c0|bvs00|6uao0|bw1q0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cvs0|9d6w0|9cvs0|9d6w0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n offsets: \"-454.1667|-480|-540|-600\",\r\n offsetIndices: \"012323212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Magadan\",\r\n untils: \"-nu1nxc|37a05c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|s39k0|Infinity\",\r\n offsets: \"-603.2|-600|-660|-720\",\r\n offsetIndices: \"012323232323232323232321232323232323232323232323232323232323232312\"\r\n }, {\r\n id: \"Asia/Makassar\",\r\n untils: \"-q3gzg0|6p5hc0|4u87w0|1w02k0|Infinity\",\r\n offsets: \"-477.6|-480|-540\",\r\n offsetIndices: \"00121\"\r\n }, {\r\n id: \"Asia/Manila\",\r\n untils: \"-hb5y80|4qak0|2qidg0|1b2d80|4xf440|442k0|cdqdg0|9et80|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"010101010\"\r\n }, {\r\n id: \"Asia/Muscat\",\r\n untils: \"-q3gnko|Infinity\",\r\n offsets: \"-221.2|-240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Nicosia\",\r\n untils: \"-p4bq6g|rvhxyg|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-133.4667|-120|-180\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Novokuznetsk\",\r\n untils: \"-nu36tc|37bu5c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n offsets: \"-348.8|-360|-420|-480\",\r\n offsetIndices: \"012323232323232323232321232323232323232323232323232323232323212\"\r\n }, {\r\n id: \"Asia/Novosibirsk\",\r\n untils: \"-q4do0s|5hmbcs|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|2vh00|6hn40|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|wrpg0|Infinity\",\r\n offsets: \"-331.6667|-360|-420|-480\",\r\n offsetIndices: \"0123232323232323232323212323212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Asia/Omsk\",\r\n untils: \"-q5xmx6|5j6d16|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-293.5|-300|-360|-420\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Oral\",\r\n untils: \"-nu15ic|37a16c|qi2540|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|9d1c0|5reo0|cyo00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-205.4|-180|-300|-360|-240\",\r\n offsetIndices: \"01232323232323232424242424242424242424242424242\"\r\n }, {\r\n id: \"Asia/Phnom_Penh\",\r\n untils: \"-pysda4|Infinity\",\r\n offsets: \"-402.0667|-420\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Pontianak\",\r\n untils: \"-w6piww|cse2o0|4tnu2w|1wkei0|1cx860|11jta0|74uc20|cixam0|Infinity\",\r\n offsets: \"-437.3333|-450|-540|-480|-420\",\r\n offsetIndices: \"001213134\"\r\n }, {\r\n id: \"Asia/Pyongyang\",\r\n untils: \"-w895yc|1yh10c|hk5da0|10ipmo0|1f4qo0|Infinity\",\r\n offsets: \"-503|-510|-540\",\r\n offsetIndices: \"012212\"\r\n }, {\r\n id: \"Asia/Qatar\",\r\n untils: \"-q3gmvk|rctnrk|Infinity\",\r\n offsets: \"-206.1333|-240|-180\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Qostanay\",\r\n untils: \"-nu17s4|37a0o4|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-254.4667|-240|-300|-360\",\r\n offsetIndices: \"012323232323232323232123232323232323232323232323\"\r\n }, {\r\n id: \"Asia/Qyzylorda\",\r\n untils: \"-nu184g|37a10g|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|ohhc0|cyo00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|7osl00|Infinity\",\r\n offsets: \"-261.8667|-240|-300|-360\",\r\n offsetIndices: \"01232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Rangoon\",\r\n untils: \"-q3gv5b|bnjp3b|1kh520|Infinity\",\r\n offsets: \"-384.7833|-390|-540\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"Asia/Riyadh\",\r\n untils: \"-bwgbbg|Infinity\",\r\n offsets: \"-186.8667|-180\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Saigon\",\r\n untils: \"-x56934|2isioa|gj25iu|15ct80|8so00|tmtk0|4azjw0|2cmao0|8285c0|Infinity\",\r\n offsets: \"-426.6667|-426.5|-420|-480|-540\",\r\n offsetIndices: \"0123423232\"\r\n }, {\r\n id: \"Asia/Sakhalin\",\r\n untils: \"-xl87rc|kvnarc|ikvh40|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|iq5g0|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n offsets: \"-570.8|-540|-660|-720|-600\",\r\n offsetIndices: \"01232323232323232323232423232323232424242424242424242424242424242\"\r\n }, {\r\n id: \"Asia/Samarkand\",\r\n untils: \"-nu18eh|37a1ah|qi27w0|s6qk0|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-267.8833|-240|-300|-360\",\r\n offsetIndices: \"01232323232323232323232\"\r\n }, {\r\n id: \"Asia/Seoul\",\r\n untils: \"-w8966g|1yh18g|hkx5a0|1faao0|5cik0|ae5g0|8a2k0|ae5g0|8bx80|c8tg0|6h980|1bj6s0|l3aq0|6j3w0|d2g40|6u7w0|b5xg0|776k0|biw40|776k0|biw40|776k0|biw40|776k0|grs40|dfqxi0|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-507.8667|-510|-540|-600|-570\",\r\n offsetIndices: \"012232323232141414141414123232\"\r\n }, {\r\n id: \"Asia/Shanghai\",\r\n untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Singapore\",\r\n untils: \"-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity\",\r\n offsets: \"-415.4167|-420|-440|-450|-540|-480\",\r\n offsetIndices: \"0123435\"\r\n }, {\r\n id: \"Asia/Srednekolymsk\",\r\n untils: \"-nu1ogs|37a0os|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-614.8667|-600|-660|-720\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Taipei\",\r\n untils: \"-gtzfk0|45slc0|c51c0|75bw0|a31g0|aaak0|9d440|7v980|awo40|7v980|awo40|7v980|awo40|7v980|7tk40|clmk0|7rpg0|b07w0|7rpg0|b07w0|7rpg0|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|cjxg0|69uk0|ci2s0|69uk0|6its40|9et80|9d440|9et80|1yf9g0|4qak0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Asia/Tashkent\",\r\n untils: \"-nu18tz|379yxz|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|Infinity\",\r\n offsets: \"-277.1833|-300|-360|-420\",\r\n offsetIndices: \"012323232323232323232321\"\r\n }, {\r\n id: \"Asia/Tbilisi\",\r\n untils: \"-nu14an|h4tjyn|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9cvs0|9cyk0|9d440|9cyk0|9d440|ipzw0|9cyk0|9q2s0|tivw0|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|4ofw0|6hn40|7k800|Infinity\",\r\n offsets: \"-179.1833|-180|-240|-300\",\r\n offsetIndices: \"0123232323232323232323212121232323232323232323212\"\r\n }, {\r\n id: \"Asia/Tehran\",\r\n untils: \"-s6m6uw|fnolc0|gm3h4w|777y0|b07w0|3pes0|42c20|9cyk0|9gtg0|9kd80|5ja5g0|7avw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|1av440|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|Infinity\",\r\n offsets: \"-205.7333|-210|-240|-300|-270\",\r\n offsetIndices: \"00123214141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141\"\r\n }, {\r\n id: \"Asia/Tel_Aviv\",\r\n untils: \"-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity\",\r\n offsets: \"-140.6667|-120|-180|-240\",\r\n offsetIndices: \"012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Asia/Thimbu\",\r\n untils: \"-bojclo|kxymno|Infinity\",\r\n offsets: \"-358.6|-330|-360\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Thimphu\",\r\n untils: \"-bojclo|kxymno|Infinity\",\r\n offsets: \"-358.6|-330|-360\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Asia/Tokyo\",\r\n untils: \"-bb4900|6uao0|afxc0|8a5c0|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n offsets: \"-540|-600\",\r\n offsetIndices: \"010101010\"\r\n }, {\r\n id: \"Asia/Tomsk\",\r\n untils: \"-q3zbqf|5h7z2f|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|1leo0|97k40|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|tw040|Infinity\",\r\n offsets: \"-339.85|-360|-420|-480\",\r\n offsetIndices: \"0123232323232323232323212323232323232323232323212121212121212121212\"\r\n }, {\r\n id: \"Asia/Ujung_Pandang\",\r\n untils: \"-q3gzg0|6p5hc0|4u87w0|1w02k0|Infinity\",\r\n offsets: \"-477.6|-480|-540\",\r\n offsetIndices: \"00121\"\r\n }, {\r\n id: \"Asia/Ulaanbaatar\",\r\n untils: \"-xmcrsk|11sncck|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity\",\r\n offsets: \"-427.5333|-420|-480|-540\",\r\n offsetIndices: \"012323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Ulan_Bator\",\r\n untils: \"-xmcrsk|11sncck|2qk2k0|9et80|9eys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|1ckdo0|7x3w0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|4fio40|9ct00|9d9o0|9ct00|Infinity\",\r\n offsets: \"-427.5333|-420|-480|-540\",\r\n offsetIndices: \"012323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Urumqi\",\r\n untils: \"-lx5pjw|Infinity\",\r\n offsets: \"-350.3333|-360\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Ust-Nera\",\r\n untils: \"-q4cl6u|5hl2yu|qi27w0|9eno0|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|8ql00|1mlho0|Infinity\",\r\n offsets: \"-572.9|-480|-540|-720|-660|-600\",\r\n offsetIndices: \"012343434343434343434345434343434343434343434343434343434343434345\"\r\n }, {\r\n id: \"Asia/Vientiane\",\r\n untils: \"-pysda4|Infinity\",\r\n offsets: \"-402.0667|-420\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Asia/Vladivostok\",\r\n untils: \"-oligf7|3yqvf7|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-527.5167|-540|-600|-660\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Yakutsk\",\r\n untils: \"-q4cioy|5hl0gy|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-518.9667|-480|-540|-600\",\r\n offsetIndices: \"01232323232323232323232123232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Asia/Yangon\",\r\n untils: \"-q3gv5b|bnjp3b|1kh520|Infinity\",\r\n offsets: \"-384.7833|-390|-540\",\r\n offsetIndices: \"0121\"\r\n }, {\r\n id: \"Asia/Yekaterinburg\",\r\n untils: \"-rx5hw9|1kybx4|5pfyv5|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-242.55|-225.0833|-240|-300|-360\",\r\n offsetIndices: \"012343434343434343434343234343434343434343434343434343434343434343\"\r\n }, {\r\n id: \"Asia/Yerevan\",\r\n untils: \"-nu148o|h4tjwo|ckinw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|iq5g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|11t180|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|Infinity\",\r\n offsets: \"-178|-180|-240|-300\",\r\n offsetIndices: \"0123232323232323232323212121212323232323232323232323232323232\"\r\n }, {\r\n id: \"Atlantic/Azores\",\r\n untils: \"-u9rbs0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5qbjo0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9cyk0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"114.5333|120|60|0\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323233323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Atlantic/Bermuda\",\r\n untils: \"-kvj2fu|n4pr3u|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"259.3|240|180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Atlantic/Canary\",\r\n untils: \"-oytbtc|ctvupc|hhq7s0|905g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"61.6|60|0|-60\",\r\n offsetIndices: \"01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Atlantic/Cape_Verde\",\r\n untils: \"-u9rbs0|g06lc0|1mn180|fpqwc0|Infinity\",\r\n offsets: \"94.0667|120|60\",\r\n offsetIndices: \"01212\"\r\n }, {\r\n id: \"Atlantic/Faeroe\",\r\n untils: \"-wcehew|127keuw|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"27.0667|0|-60\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Atlantic/Faroe\",\r\n untils: \"-wcehew|127keuw|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"27.0667|0|-60\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Atlantic/Jan_Mayen\",\r\n untils: \"-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Atlantic/Madeira\",\r\n untils: \"-u9rek0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5qbjo0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"67.6|60|0|-60\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121232123212321232121212121212121212121212121212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Atlantic/Reykjavik\",\r\n untils: \"-wcwx9c|4rpd9c|ci2s0|69uk0|du840|4xp80|du840|p7bw0|4w040|9bdzw0|9d6w0|64g40|cyl80|64dc0|clpc0|6hc00|bvs00|6uao0|bvs00|6uao0|bvs00|6uao0|c8qo0|6hc00|c8qo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|Infinity\",\r\n offsets: \"88|60|0\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Atlantic/South_Georgia\",\r\n untils: \"Infinity\",\r\n offsets: \"120\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Atlantic/St_Helena\",\r\n untils: \"-u9rgl4|Infinity\",\r\n offsets: \"16.1333|0\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Atlantic/Stanley\",\r\n untils: \"-u63pac|dbvxqc|8zzw0|9q2s0|8zzw0|a31g0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|4xp80|l1pus0|7k580|b5rw0|77c40|biqk0|id6s0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|biqk0|77c40|biqk0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|biqk0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5rw0|7kas0|b5xg0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|77c40|biqk0|77c40|biqk0|77c40|Infinity\",\r\n offsets: \"231.4|240|180|120\",\r\n offsetIndices: \"012121212121212323212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Australia/ACT\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Adelaide\",\r\n untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|7k800|b5uo0|6uao0|c8qo0|779c0|bitc0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-570|-630\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Brisbane\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"01010101010101010\"\r\n }, {\r\n id: \"Australia/Broken_Hill\",\r\n untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-570|-630\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Canberra\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Currie\",\r\n untils: \"-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Darwin\",\r\n untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|Infinity\",\r\n offsets: \"-570|-630\",\r\n offsetIndices: \"010101010\"\r\n }, {\r\n id: \"Australia/Eucla\",\r\n untils: \"-rnstlc|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-525|-585\",\r\n offsetIndices: \"0101010101010101010\"\r\n }, {\r\n id: \"Australia/Hobart\",\r\n untils: \"-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|c9tms0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/LHI\",\r\n untils: \"5tp880|c8uu0|6u7w0|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|777y0|b5w20|7k6m0|biuq0|7k6m0|biuq0|777y0|biuq0|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|7x820|asum0|b5w20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7x5a0|asxe0|7k6m0|b5w20|8a3y0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9pym0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|Infinity\",\r\n offsets: \"-600|-630|-690|-660\",\r\n offsetIndices: \"0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313\"\r\n }, {\r\n id: \"Australia/Lindeman\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"010101010101010101010\"\r\n }, {\r\n id: \"Australia/Lord_Howe\",\r\n untils: \"5tp880|c8uu0|6u7w0|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|777y0|b5w20|7k6m0|biuq0|7k6m0|biuq0|777y0|biuq0|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|7x820|asum0|b5w20|7x5a0|asxe0|7x5a0|asxe0|7x5a0|b5w20|7k6m0|b5w20|7x5a0|asxe0|7k6m0|b5w20|8a3y0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9pym0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9d2q0|9czy0|9q1e0|9czy0|9d2q0|9czy0|9d2q0|Infinity\",\r\n offsets: \"-600|-630|-690|-660\",\r\n offsetIndices: \"0121212121313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313131313\"\r\n }, {\r\n id: \"Australia/Melbourne\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|b5uo0|7x6o0|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/North\",\r\n untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|Infinity\",\r\n offsets: \"-570|-630\",\r\n offsetIndices: \"010101010\"\r\n }, {\r\n id: \"Australia/NSW\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Perth\",\r\n untils: \"-rnsric|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"0101010101010101010\"\r\n }, {\r\n id: \"Australia/Queensland\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|97zuo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"01010101010101010\"\r\n }, {\r\n id: \"Australia/South\",\r\n untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|7k800|b5uo0|6uao0|c8qo0|779c0|bitc0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-570|-630\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Sydney\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Tasmania\",\r\n untils: \"-rsj4w0|8zzw0|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|c9tms0|9d1c0|asw00|6uao0|bvs00|6uao0|bvs00|779c0|bvs00|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|b5uo0|7k800|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|bvs00|7k800|bitc0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x6o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|7x6o0|asw00|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/Victoria\",\r\n untils: \"-rnsx2c|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|b5uo0|7x6o0|bitc0|779c0|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|7x6o0|asw00|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-600|-660\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Australia/West\",\r\n untils: \"-rnsric|49s2c|cxfms0|4h180|9d440|9cyk0|ghf1g0|6hc00|4ir9c0|6hc00|40r400|5eg00|7p9hc0|5reo0|b5uo0|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"0101010101010101010\"\r\n }, {\r\n id: \"Australia/Yancowinna\",\r\n untils: \"-rnsvoc|49s2c|cxfms0|4h180|9d440|9cyk0|9q2s0|8zzw0|eeiqs0|64dc0|clpc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|8a5c0|asw00|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|779c0|b5uo0|7k800|bitc0|7k800|bitc0|779c0|bitc0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|8a5c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-570|-630\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101\"\r\n }, {\r\n id: \"Brazil/Acre\",\r\n untils: \"-t85fg0|99kak0|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|amves0|2t2t80|Infinity\",\r\n offsets: \"271.2|300|240\",\r\n offsetIndices: \"01212121212121212121212121212121\"\r\n }, {\r\n id: \"Brazil/DeNoronha\",\r\n untils: \"-t85lzw|99k8rw|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|514g40|7k580|biw40|cvw0|iq5g0|6h980|Infinity\",\r\n offsets: \"129.6667|120|60\",\r\n offsetIndices: \"0121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Brazil/East\",\r\n untils: \"-t85jd8|99k8x8|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5k02s0|6onw0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|cyqs0|5ed80|dbpg0|64ak0|cyqs0|64ak0|cls40|5rbw0|dbpg0|51ek0|dbpg0|6h980|c8tg0|6h980|c8tg0|64ak0|c8tg0|6u7w0|bxpg0|7iak0|biw40|6u7w0|biw40|7k580|biw40|6u7w0|c8tg0|6h980|dbpg0|5ed80|cls40|64ak0|dfes0|5nmk0|c8tg0|6h980|dbpg0|5rbw0|bvus0|6h980|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6u7w0|c8tg0|64ak0|cls40|64ak0|cls40|6h980|c8tg0|6h980|c8tg0|6h980|c8tg0|6h980|dbpg0|5ed80|Infinity\",\r\n offsets: \"186.4667|180|120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Brazil/West\",\r\n untils: \"-t85gvw|99k97w|9a9c0|9io40|99980|8p65g0|6zuo0|bs2o0|67zw0|cjxg0|69uk0|cjxg0|4ml80|5mf440|49mk0|haas0|316k0|cls40|4ml80|cls40|66580|cls40|67zw0|981s40|6u7w0|biw40|5rbw0|d0lg0|5ed80|2yy2s0|6h980|Infinity\",\r\n offsets: \"240.0667|240|180\",\r\n offsetIndices: \"01212121212121212121212121212121\"\r\n }, {\r\n id: \"Canada/Atlantic\",\r\n untils: \"-z94k80|777go0|9et80|st9o0|a2vw0|ssyk0|5rbw0|cv1g0|69uk0|c6ys0|6kyk0|ci2s0|67zw0|ci2s0|6w2k0|bu040|7lzw0|bu040|66580|bu040|7lzw0|bu040|64ak0|cls40|5v180|cv1g0|6j3w0|c6ys0|79180|b42s0|7lzw0|b42s0|7yyk0|bu040|64ak0|dbpg0|66580|cls40|5ed80|bu040|7lzw0|b42s0|7lzw0|cjxg0|66580|bh1g0|7lzw0|b42s0|7lzw0|6uj00|1tzdw0|2dnc0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|tw040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|1cm2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"254.4|240|180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Canada/Central\",\r\n untils: \"-s0s7c0|7k580|tj700|a2vw0|9ok840|6u7w0|2a5hg0|1tz8c0|2dsw0|biw40|7x3w0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b7s40|7tek0|autg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|7x3w0|1cm2s0|7k580|1cm2s0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|asw00|7x6o0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Canada/Eastern\",\r\n untils: \"-qzoxw0|a2vw0|7yx60|aqzy0|9q8c0|7jzo0|bw0c0|6bp80|cedg0|6h980|c8tg0|6h980|bvus0|776k0|biw40|776k0|biw40|776k0|biw40|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|xjeo0|1tzb40|2dq40|asys0|7x3w0|ast80|7x3w0|asys0|7x3w0|asys0|b5rw0|7xf00|ast80|7x9g0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101011101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Canada/Mountain\",\r\n untils: \"-x1yazk|629ink|a2vw0|8n6s0|29ek0|h6lg0|9px80|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|9l0g40|1tz5k0|2dvo0|tj1g0|7x3w0|ctzk40|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"453.8667|420|360\",\r\n offsetIndices: \"0121212121212122121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Canada/Newfoundland\",\r\n untils: \"-ris3ck|8bx80|ar440|a2vw0|9tjs0|53980|dkys0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|8zzw0|9q2s0|9cyk0|9q2s0|8zzw0|9q2s0|8zzw0|7tmw0|1wfuk|8zzw0|a3480|7k580|b5xg0|7k580|b5xg0|7k580|biw40|776k0|biw40|7k580|b5xg0|7k580|b5xg0|1pb260|2dly0|biw40|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|biw40|7k580|ag040|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a2lo|afuk0|8a840|asqg0|7xc80|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8tec|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"210.8667|150.8667|210|150|90\",\r\n offsetIndices: \"01010101010101010101010101010101010102323232323232323323232323232323232323232323232323232323232323232323232323232323232323232323232323232324232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Canada/Pacific\",\r\n untils: \"-qzopk0|a2vw0|c5jxg0|1tz2s0|2dyg0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"0101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Canada/Saskatchewan\",\r\n untils: \"-xkq9yc|6l1hmc|a2vw0|60enw0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|1b6840|9cyk0|9d440|8zzw0|9q2s0|9cyk0|9q2s0|9cyk0|9d440|9cyk0|66gc0|1tz5k0|2dvo0|a31g0|9cyk0|a31g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|tj1g0|9cyk0|9d440|Infinity\",\r\n offsets: \"418.6|420|360\",\r\n offsetIndices: \"012121212121212121212121221212121212121212121212121212\"\r\n }, {\r\n id: \"Canada/Yukon\",\r\n untils: \"-qzoms0|a2vw0|asys0|882c0|bmiwc0|1tz000|2e180|a7n3w0|9q000|tiyo0|6qp440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|Infinity\",\r\n offsets: \"540|480|420\",\r\n offsetIndices: \"01010110201212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"CET\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Chile/Continental\",\r\n untils: \"-vauawq|3dlssq|157b7a|f4e0q|49hzba|aye0q|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|534ik0|351g0|229zw0|2gt80|awo40|2mg00|b73400|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n offsets: \"282.7667|300|240|180\",\r\n offsetIndices: \"010202121212121212321232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Chile/EasterIsland\",\r\n untils: \"-jhfaew|ivmeuw|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|iq2o0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n offsets: \"437.4667|420|360|300\",\r\n offsetIndices: \"012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"CST6CDT\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Cuba\",\r\n untils: \"-n7762o|1icfyo|69uk0|62s040|4ofw0|e1ms0|51ek0|e1ms0|4ofw0|1fhs40|4ofw0|e1ms0|4ofw0|9s9k40|67zw0|cedg0|6h980|9o840|7yyk0|b5xg0|7k580|bvus0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|8a2k0|ag040|8bx80|ae5g0|8drw0|acas0|9cyk0|9d440|9px80|905g0|9px80|9q2s0|7x3w0|8a840|ast80|7x9g0|ast80|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|8a2k0|ag040|8a2k0|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|905g0|a2vw0|905g0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|8n400|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|8a5c0|afxc0|8a5c0|afxc0|7x6o0|1cm000|6uao0|bvs00|779c0|bitc0|6uao0|bvs00|779c0|bvs00|779c0|c8qo0|779c0|b5uo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|Infinity\",\r\n offsets: \"329.6|300|240\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"EET\",\r\n untils: \"3s9ms0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-120|-180\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Egypt\",\r\n untils: \"-fdls80|40d80|a31g0|7x3w0|a4w40|aqyk0|80ys0|b07w0|7tk40|b07w0|8jhg0|a8fw0|60go40|7el80|awo40|7v980|awqw0|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7tk40|ayd80|7tk40|b07w0|7tk40|ayd80|7tk40|ayd80|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|f9x80|3i040|eluk0|462s0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|b5rw0|7m5g0|awik0|7ves0|awik0|7ves0|ayd80|7ves0|awik0|7ves0|awik0|7ves0|aqvs0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7k580|b5xg0|6u7w0|bvus0|6h980|c8tg0|64ak0|cyqs0|5anw0|1jms0|12t80|1w22s0|25p80|1sw40|2vmk0|Infinity\",\r\n offsets: \"-120|-180\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Eire\",\r\n untils: \"-rzcmlr|6uao0|9pytr|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|3g8800|8a5c0|bvs00|8n400|a2yo0|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"25.35|-34.65|0|-60\",\r\n offsetIndices: \"01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"EST\",\r\n untils: \"Infinity\",\r\n offsets: \"300\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"EST5EDT\",\r\n untils: \"-r0ev80|ast80|7x9g0|ast80|bmtus0|1tzb40|2dq40|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Etc/GMT-0\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-1\",\r\n untils: \"Infinity\",\r\n offsets: \"-60\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-10\",\r\n untils: \"Infinity\",\r\n offsets: \"-600\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-11\",\r\n untils: \"Infinity\",\r\n offsets: \"-660\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-12\",\r\n untils: \"Infinity\",\r\n offsets: \"-720\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-13\",\r\n untils: \"Infinity\",\r\n offsets: \"-780\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-14\",\r\n untils: \"Infinity\",\r\n offsets: \"-840\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-2\",\r\n untils: \"Infinity\",\r\n offsets: \"-120\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-3\",\r\n untils: \"Infinity\",\r\n offsets: \"-180\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-4\",\r\n untils: \"Infinity\",\r\n offsets: \"-240\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-5\",\r\n untils: \"Infinity\",\r\n offsets: \"-300\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-6\",\r\n untils: \"Infinity\",\r\n offsets: \"-360\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-7\",\r\n untils: \"Infinity\",\r\n offsets: \"-420\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-8\",\r\n untils: \"Infinity\",\r\n offsets: \"-480\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT-9\",\r\n untils: \"Infinity\",\r\n offsets: \"-540\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+0\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+1\",\r\n untils: \"Infinity\",\r\n offsets: \"60\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+10\",\r\n untils: \"Infinity\",\r\n offsets: \"600\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+11\",\r\n untils: \"Infinity\",\r\n offsets: \"660\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+12\",\r\n untils: \"Infinity\",\r\n offsets: \"720\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+2\",\r\n untils: \"Infinity\",\r\n offsets: \"120\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+3\",\r\n untils: \"Infinity\",\r\n offsets: \"180\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+4\",\r\n untils: \"Infinity\",\r\n offsets: \"240\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+5\",\r\n untils: \"Infinity\",\r\n offsets: \"300\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+6\",\r\n untils: \"Infinity\",\r\n offsets: \"360\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+7\",\r\n untils: \"Infinity\",\r\n offsets: \"420\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+8\",\r\n untils: \"Infinity\",\r\n offsets: \"480\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT+9\",\r\n untils: \"Infinity\",\r\n offsets: \"540\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/GMT0\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/Greenwich\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/UCT\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/Universal\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/UTC\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Etc/Zulu\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Europe/Amsterdam\",\r\n untils: \"-s0dvkk|7v980|a51o0|7x6o0|a2yo0|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9b6o0|a2yo0|c51c0|6l1c0|902o0|9q000|ci000|682o0|bgyo0|79400|bitc0|779c0|bmio0|7gio0|bbeo0|7eo00|bd9c0|7ctc0|bf400|7ayo0|bvs00|6uao0|bko00|7idc0|b9k00|7gio0|bbeo0|7eo00|bf400|7ayo0|btxc0|21uc0|4uaz8|bitc0|779c0|bko00|7idc0|bd3s0|1aarpc|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-19.5333|-79.5333|-80|-20|-120|-60\",\r\n offsetIndices: \"010101010101010101010101010101010101010101012323234545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545454545\"\r\n }, {\r\n id: \"Europe/Andorra\",\r\n untils: \"-c4xmo0|k3ctg0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Astrakhan\",\r\n untils: \"-nu2zkc|37bv8c|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n offsets: \"-192.2|-180|-240|-300\",\r\n offsetIndices: \"012323232323232323212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Europe/Athens\",\r\n untils: \"-rvv0cg|8bjasg|2vmk0|4hiw40|16ik0|scog0|7lx40|9o2k0|9eys0|4atzw0|6djw0|bplus0|bq800|71uw0|9d1c0|902o0|91xc0|9o5c0|905g0|9qgo0|9akg0|9iik0|99980|9dcg0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-94.8667|-120|-180|-60\",\r\n offsetIndices: \"012121313121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Belfast\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Belgrade\",\r\n untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Berlin\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|2o7w0|6bs00|2txg0|7k800|91xc0|9b9g0|1sqk0|2inw0|51k40|a2yo0|8n400|9q000|902o0|fx91c0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120|-180\",\r\n offsetIndices: \"01010101010101210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Bratislava\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|b5uo0|7vc00|2vs40|4bk00|2vmk0|8n400|a2yo0|8n400|9o5c0|91xc0|fe6000|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120|0\",\r\n offsetIndices: \"01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Brussels\",\r\n untils: \"-ss5uo0|rrx80|7vc00|a4yw0|7x6o0|asw00|7x6o0|2wh40|5omo0|b5uo0|6uao0|cyo00|7ayo0|bko00|7rmo0|a2yo0|a2yo0|8n400|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|90b00|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|4deo0|1a36k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8l9c0|clpc0|79400|fwu800|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0121212101010101010101010101010101010101010101010101212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Bucharest\",\r\n untils: \"-k29zi0|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|kp0dc0|6h980|9q000|905g0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9cvs0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9cyk0|9d440|9cyk0|9q2s0|ast80|7xhs0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-104.4|-120|-180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Budapest\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|a31g0|8n180|autg0|bgvw0|b5jeg0|th9k0|7k800|9q000|9d1c0|9d1c0|awd00|9ew00|7q0c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|a4tc0|9q000|1va2g0|6u7w0|bxpg0|6u7w0|cjxg0|64ak0|cluw0|64g40|br3ek0|905g0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Busingen\",\r\n untils: \"-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Chisinau\",\r\n untils: \"-r2p1bo|70f1to|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|geqo0|ha580|oc8g0|7k800|9q000|9d1c0|7cl00|j3pbw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|25p80|7kdk0|9d1c0|9d1c0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xf00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-115|-104.4|-120|-180|-60|-240\",\r\n offsetIndices: \"012323232323232323232424235353535353535353535323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Copenhagen\",\r\n untils: \"-rzo2w0|75bw0|cbs2w0|1aco80|7k800|9q000|9d1c0|9d1c0|9d1c0|6y000|dbmo0|6bs00|clpc0|51hc0|e1k00|4oio0|giutc0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Dublin\",\r\n untils: \"-rzcmlr|6uao0|9pytr|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|3g8800|8a5c0|bvs00|8n400|a2yo0|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"25.35|-34.65|0|-60\",\r\n offsetIndices: \"01232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Gibraltar\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|d0tp80|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101012121212121010121010101010101010101012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Guernsey\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Helsinki\",\r\n untils: \"-peghyd|ax3tqd|9gqo0|k31s80|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-99.8167|-120|-180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Isle_of_Man\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Istanbul\",\r\n untils: \"-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity\",\r\n offsets: \"-116.9333|-120|-180|-240\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122\"\r\n }, {\r\n id: \"Europe/Jersey\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Kaliningrad\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|el00|z6o0|9kd80|82tg0|i9avw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-60|-120|-180|-240\",\r\n offsetIndices: \"01010101010101121232323232323232322121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Kiev\",\r\n untils: \"-nu11ng|37a03g|5vd6k0|kzv40|7k800|9q000|1oyg0|jipzs0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|51ek0|neqw0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-122.0667|-120|-180|-60|-240\",\r\n offsetIndices: \"0121313242424242424242424242121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Kirov\",\r\n untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-198.8|-180|-240|-300\",\r\n offsetIndices: \"01232323232323232321212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Lisbon\",\r\n untils: \"-u9rhc0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5gyl40|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"36.75|0|-60|-120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212121212121212121212121212121212122323232212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Ljubljana\",\r\n untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/London\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Luxembourg\",\r\n untils: \"-y89550|68l290|75hg0|ast80|796s0|at1k0|7x6o0|3lh40|4zmo0|b6300|6u2c0|cytk0|7at40|bktk0|7rh40|a31g0|a2vw0|8n9k0|8zx40|9q2s0|9et80|9b9g0|a2vw0|8n6s0|9px80|905g0|a2vw0|905g0|a2vw0|8ncc0|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|42ao0|1aeak0|7k800|9q000|9d1c0|8n400|a2yo0|8l9c0|clpc0|79400|fwu800|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-24.6|-60|-120|0\",\r\n offsetIndices: \"0121212131313131313131313131313131313131313131313131212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Madrid\",\r\n untils: \"-qzlus0|8yas0|9cyk0|9eys0|2d2vw0|8sqs0|ssyk0|8n6s0|9px80|905g0|a2yo0|902o0|a2vw0|8n6s0|40lh80|5k2s0|9cyk0|1frw0|7z1c0|j1c80|8a2k0|13yt80|685g0|brzw0|8n6s0|a2vw0|8n6s0|a2vw0|8n6s0|a2vw0|8n6s0|1clx80|7x9g0|cswik0|905g0|9px80|905g0|8zzw0|9d440|9px80|905g0|9q5k0|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"010101010101010101210121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Malta\",\r\n untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9b6o0|8n400|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|9b6o0|9d1c0|ahs00|7m2o0|b45k0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|a4w40|8y580|9q2s0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Mariehamn\",\r\n untils: \"-peghyd|ax3tqd|9gqo0|k31s80|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-99.8167|-120|-180\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Minsk\",\r\n untils: \"-nu113c|379zjc|5r1mk0|pbf40|7k800|9q000|9d1c0|4oac0|j6dmk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|sg2o0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|Infinity\",\r\n offsets: \"-110|-120|-180|-60|-240\",\r\n offsetIndices: \"01213131242424242424242424221212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Europe/Monaco\",\r\n untils: \"-uozn3l|2qx1nl|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|bko00|7rmo0|a2yo0|bvs00|6uao0|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51po0|mdbo0|7x3w0|7x9g0|c8w80|7k800|9q000|9d1c0|9nzs0|922w0|8l9c0|fxlx80|9cyk0|9q5k0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-9.35|0|-60|-120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Moscow\",\r\n untils: \"-rx5dmh|ipzua|97hc0|7yyk0|5i840|d9p80|1jwk7|2cvk0|s8o00|1qvw0|8fpc0|1jms0|is040|412as0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-150.2833|-151.3167|-211.3167|-271.3167|-240|-180|-300|-120\",\r\n offsetIndices: \"012132345464575454545454545454545455754545454545454545454545454545454545454545\"\r\n }, {\r\n id: \"Europe/Nicosia\",\r\n untils: \"-p4bq6g|rvhxyg|9cyk0|b42s0|7nuk0|8yas0|8zzw0|9q2s0|9et80|9b9g0|9cyk0|9q2s0|8zzw0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|9cyk0|9d440|9cyk0|9d440|at4c0|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-133.4667|-120|-180\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Oslo\",\r\n untils: \"-rzayo0|6qfs0|cgcqo0|15tsc0|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|70q5c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|b5uo0|7k800|7law00|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Paris\",\r\n untils: \"-uozn1x|2qx1lx|5luo0|8y800|a4tc0|7vc00|auqo0|7idc0|b7pc0|6sg00|cyo00|7ayo0|bko00|7rmo0|a2yo0|bvs00|6uao0|902o0|9q000|9d1c0|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|9d1c0|9d1c0|902o0|a2yo0|9d1c0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51po0|5p8w0|18rcc0|7k800|9q000|9d1c0|7efo0|29k40|922w0|8l9c0|fxlx80|9cyk0|9q5k0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-9.35|0|-60|-120\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212123232332323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Podgorica\",\r\n untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Prague\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|9d1c0|b5uo0|7vc00|2vs40|4bk00|2vmk0|8n400|a2yo0|8n400|9o5c0|91xc0|fe6000|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120|0\",\r\n offsetIndices: \"01010101010101010201010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Riga\",\r\n untils: \"-qznlky|7x6o0|a4tc0|2mg00|3myns0|7fhlky|gz180|p5v40|7k800|9q000|9d1c0|9d1c0|k7s0|j14ns0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|asw00|7x6o0|asw00|7x6o0|b5uo0|qaao0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-96.5667|-156.5667|-120|-180|-60|-240\",\r\n offsetIndices: \"010102324242435353535353535353323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Rome\",\r\n untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Samara\",\r\n untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|jt1g0|89zs0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|j3440|7k800|Infinity\",\r\n offsets: \"-200.3333|-180|-240|-300\",\r\n offsetIndices: \"0123232323232323232121232323232323232323232323232323232323212\"\r\n }, {\r\n id: \"Europe/San_Marino\",\r\n untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Sarajevo\",\r\n untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Saratov\",\r\n untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|13m040|Infinity\",\r\n offsets: \"-184.3|-180|-240|-300\",\r\n offsetIndices: \"012323232323232321212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Europe/Simferopol\",\r\n untils: \"-nu12ao|37a0qo|5xiyk0|iu340|7k800|9q000|9d1c0|iac0|jajmk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|eeio0|wrjw0|9cyk0|9d440|9cyk0|9d440|1sqk0|7k580|9d440|9cyk0|9q2s0|at4c0|7x9g0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x3w0|asqg0|Infinity\",\r\n offsets: \"-136|-120|-180|-60|-240\",\r\n offsetIndices: \"012131312424242424242424242121212424242212121212121212121212121212121212142\"\r\n }, {\r\n id: \"Europe/Skopje\",\r\n untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Sofia\",\r\n untils: \"-e6dzw0|7k800|9q000|9d1c0|9d1c0|9d440|hqq240|9eys0|9o2k0|92040|9o2k0|90880|9pug0|90b00|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xhs0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-120|-60|-180\",\r\n offsetIndices: \"01010102020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020\"\r\n }, {\r\n id: \"Europe/Stockholm\",\r\n untils: \"-rzo2w0|75hg0|x5bew0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Tallinn\",\r\n untils: \"-r3exx0|3re10|7x6o0|et6g0|ygov0|a1zgd0|ktx80|l94g0|7k800|9q000|9d1c0|8uac0|j27mk0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asys0|7x6o0|b5uo0|19dc00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-99|-60|-120|-180|-240\",\r\n offsetIndices: \"012102321212343434343434343433232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Tirane\",\r\n untils: \"-t85vo8|dt2gw8|18pew0|7k800|m800|g7ot40|7rjw0|autg0|7x3w0|ayis0|7x3w0|b5xg0|7k580|b42s0|7lzw0|b42s0|7lzw0|b42s0|7x3w0|ahus0|7x3w0|b5xg0|7x3w0|a4w40|8jbw0|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-79.3333|-60|-120\",\r\n offsetIndices: \"01212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Tiraspol\",\r\n untils: \"-r2p1bo|70f1to|fj8m0|6w5c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|geqo0|ha580|oc8g0|7k800|9q000|9d1c0|7cl00|j3pbw0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|25p80|7kdk0|9d1c0|9d1c0|9cvs0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|ast80|7xf00|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-115|-104.4|-120|-180|-60|-240\",\r\n offsetIndices: \"012323232323232323232424235353535353535353535323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"Europe/Ulyanovsk\",\r\n untils: \"-qcx400|5q5zo0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9q000|iq5g0|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|qnc40|Infinity\",\r\n offsets: \"-193.6|-180|-240|-300|-120\",\r\n offsetIndices: \"01232323232323232321214121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Europe/Uzhgorod\",\r\n untils: \"-fizzw0|1cm000|7k800|9q000|9d1c0|al900|cnms0|int140|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|eeio0|e1sc0|iprk0|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120|-180|-240\",\r\n offsetIndices: \"010101023232323232323232320121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Vaduz\",\r\n untils: \"-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Vatican\",\r\n untils: \"-rymys0|64ak0|9d440|9et80|88dg0|aunw0|7ig40|b5rw0|8n6s0|9cyk0|aau2s0|18r9k0|7k800|9q000|9d1c0|8l9c0|a4tc0|8j940|9f1k0|afxc0|89zs0|afxc0|7kdk0|b5uo0|979rs0|6h980|cls40|64dc0|clpc0|64dc0|cyo00|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|clpc0|64dc0|c8qo0|6hc00|clpc0|64dc0|clpc0|64dc0|c8qo0|6hc00|clpc0|6hc00|c8qo0|6hc00|9q5k0|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Vienna\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|t6000|8a5c0|a7a800|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|iio0|ivmo0|91xc0|9b6o0|9d1c0|a2yo0|8n400|gfyyg0|8zzw0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Vilnius\",\r\n untils: \"-rns980|1g224o|e75nc|4kqk0|acbs40|gpp40|pits0|7k800|9q000|9d1c0|65zo0|j4vx80|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x9g0|asw00|7x6o0|b5uo0|1s3eo0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-84|-95.6|-60|-120|-180|-240\",\r\n offsetIndices: \"012324323234545454545454545443434343434343434332334343434343434343434343434343434343434343434343434343434343434343434343\"\r\n }, {\r\n id: \"Europe/Volgograd\",\r\n untils: \"-q3cw84|5glrw4|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|iq5g0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|s3400|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|239c40|Infinity\",\r\n offsets: \"-177.6667|-180|-240|-300\",\r\n offsetIndices: \"012323232323232321212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Europe/Warsaw\",\r\n untils: \"-se9yk0|dvyc0|7ves0|a4yw0|7x6o0|asw00|7x6o0|aunw0|7x6o0|1evbs0|9fcwc0|18cao0|7k800|9q000|9d1c0|9gnw0|an980|9kd80|8fs40|922w0|ar1c0|7x6o0|a2yo0|8n400|9q000|902o0|4013w0|64dc0|9d1c0|9d1c0|clpc0|6hc00|9d1c0|9d1c0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|clpc0|64dc0|6j4tc0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-84|-60|-120|-180\",\r\n offsetIndices: \"012121223212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Zagreb\",\r\n untils: \"-ezayw0|swz00|7k800|9q000|9d1c0|9d1c0|b7pc0|6qlc0|jl1hc0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Europe/Zaporozhye\",\r\n untils: \"-nu12hc|37a0xc|5u1180|mc0g0|7k800|9q000|12qg0|jjc7s0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9cvs0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9dcg0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-140|-120|-180|-60|-240\",\r\n offsetIndices: \"01213132424242424242424242422121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Europe/Zurich\",\r\n untils: \"-eyh6o0|7x6o0|asw00|7x6o0|k2zus0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"GB-Eire\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"GB\",\r\n untils: \"-rzcns0|6uao0|9q000|8c000|9o5c0|9ruo0|9b6o0|9ew00|9b6o0|auqo0|88ao0|9ew00|8y800|a2yo0|a2yo0|7k800|asw00|8a5c0|asw00|8n400|a2yo0|8n400|9q000|902o0|afxc0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|9d1c0|a2yo0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|a2yo0|b5uo0|51hc0|mbmk0|51hc0|c8qo0|6hc00|c8qo0|6uao0|bvs00|8n400|a4tc0|5clc0|4bms0|9q000|902o0|8a5c0|1frw0|64dc0|4bms0|6uao0|bvs00|7x6o0|asw00|8n400|9q000|902o0|9q000|9d1c0|9q000|902o0|8n400|9q000|902o0|a2yo0|8n400|afxc0|8n400|9q000|902o0|a2yo0|8n400|a2yo0|8n400|9q000|902o0|902o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|5reo0|1xhuo0|779c0|bitc0|779c0|bitc0|779c0|bitc0|779c0|bitc0|7k800|b5uo0|7k800|b5uo0|7k800|bitc0|779c0|bitc0|779c0|bitc0|7x3w0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60|-120\",\r\n offsetIndices: \"0101010101010101010101010101010101010101010101010121212121210101210101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"GMT-0\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"GMT\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"GMT+0\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"GMT0\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Greenwich\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Hongkong\",\r\n untils: \"-y0i0s0|j44dk0|5k000|4d4y0|2195i0|7x3w0|bj320|6uao0|bvs00|7x6o0|9d1c0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|8a5c0|asw00|7x6o0|ast80|77c40|biqk0|77c40|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|77c40|biqk0|77c40|bvp80|6udg0|bvp80|6udg0|bvp80|77c40|biqk0|77c40|biqk0|8n6s0|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9cyk0|1c9440|8a2k0|Infinity\",\r\n offsets: \"-456.7|-480|-540|-510\",\r\n offsetIndices: \"0123212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"HST\",\r\n untils: \"Infinity\",\r\n offsets: \"600\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Iceland\",\r\n untils: \"-wcwx9c|4rpd9c|ci2s0|69uk0|du840|4xp80|du840|p7bw0|4w040|9bdzw0|9d6w0|64g40|cyl80|64dc0|clpc0|6hc00|bvs00|6uao0|bvs00|6uao0|bvs00|6uao0|c8qo0|6hc00|c8qo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|7x6o0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|asw00|8a5c0|Infinity\",\r\n offsets: \"88|60|0\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Indian/Antananarivo\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Indian/Chagos\",\r\n untils: \"-wvpc2s|1ag64us|Infinity\",\r\n offsets: \"-289.6667|-300|-360\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Indian/Christmas\",\r\n untils: \"Infinity\",\r\n offsets: \"-420\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Indian/Cocos\",\r\n untils: \"Infinity\",\r\n offsets: \"-390\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Indian/Comoro\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Indian/Kerguelen\",\r\n untils: \"-afrs00|Infinity\",\r\n offsets: \"0|-300\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Indian/Mahe\",\r\n untils: \"-x6pjlo|Infinity\",\r\n offsets: \"-221.8|-240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Indian/Maldives\",\r\n untils: \"-57x6y0|Infinity\",\r\n offsets: \"-294|-300\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Indian/Mauritius\",\r\n untils: \"-wvp9bc|13jnu7c|8bx80|dd0wc0|7x3w0|Infinity\",\r\n offsets: \"-230|-240|-300\",\r\n offsetIndices: \"012121\"\r\n }, {\r\n id: \"Indian/Mayotte\",\r\n untils: \"-lnsetg|s8mhg|57v020|afrrb0|Infinity\",\r\n offsets: \"-147.2667|-180|-150|-165\",\r\n offsetIndices: \"01231\"\r\n }, {\r\n id: \"Indian/Reunion\",\r\n untils: \"-uks29s|Infinity\",\r\n offsets: \"-221.8667|-240\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Iran\",\r\n untils: \"-s6m6uw|fnolc0|gm3h4w|777y0|b07w0|3pes0|42c20|9cyk0|9gtg0|9kd80|5ja5g0|7avw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|1av440|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9d440|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|9b9g0|9gnw0|Infinity\",\r\n offsets: \"-205.7333|-210|-240|-300|-270\",\r\n offsetIndices: \"00123214141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141\"\r\n }, {\r\n id: \"Israel\",\r\n untils: \"-r50eig|bp54yg|19f3w0|7rv00|b02c0|7tk40|b07w0|8jhg0|a8lg0|8jhg0|a8ac0|t9s40|56vs0|35700|9b3w0|9gtg0|8jbw0|7tmw0|a6ig0|biyw0|8a5c0|9d1c0|902o0|7x6o0|e1eg0|4ofw0|dzxo0|4q500|doo40|64iw0|auqo0|7i500|8rfms0|51ek0|9q2s0|6u7w0|2khpg0|25s00|1weyo0|5reo0|bxmo0|7x3w0|cls40|5rbw0|bbhg0|7rjw0|asys0|7k580|c8tg0|6h980|ag040|7x3w0|asys0|8a2k0|asys0|8a2k0|ap9g0|80t80|ap9g0|7nuk0|b2840|80t80|9zc40|9iik0|9kis0|93p80|9mdg0|8qqk0|apf00|7x3w0|biw40|8zx40|9io40|8n180|9kis0|9vh80|8ulg0|9px80|9mdg0|8n180|9tuw0|9tmk0|8wg40|9gnw0|99es0|8qqk0|9zc40|9tmk0|8wg40|9gnw0|99es0|8qqk0|acas0|9gnw0|99es0|93p80|9mdg0|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|7tk40|b9h80|7glg0|b9h80|7glg0|b9h80|7glg0|b9h80|7tk40|awik0|7tk40|awik0|Infinity\",\r\n offsets: \"-140.6667|-120|-180|-240\",\r\n offsetIndices: \"012121212121321212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Jamaica\",\r\n untils: \"-u85og2|wbl182|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|Infinity\",\r\n offsets: \"307.1667|300|240\",\r\n offsetIndices: \"0121212121212121212121\"\r\n }, {\r\n id: \"Japan\",\r\n untils: \"-bb4900|6uao0|afxc0|8a5c0|c8qo0|6hc00|c8qo0|6hc00|Infinity\",\r\n offsets: \"-540|-600\",\r\n offsetIndices: \"010101010\"\r\n }, {\r\n id: \"Kwajalein\",\r\n untils: \"-h817w0|27sas0|1hjus0|ddxug0|cgv6k0|Infinity\",\r\n offsets: \"-660|-600|-540|720|-720\",\r\n offsetIndices: \"012034\"\r\n }, {\r\n id: \"Libya\",\r\n untils: \"-q3gfrw|gl6ajw|422c0|xado0|4bbo0|wrpg0|4s580|1kdpg0|c05bw0|4mqs0|9et80|9d440|9et80|9eys0|9et80|9mdg0|95jw0|9io40|9cyk0|99es0|9et80|9eys0|9et80|9d440|9et80|b2840|3cf3w0|9kis0|9et80|7vqyw0|75eo0|asw00|Infinity\",\r\n offsets: \"-52.7333|-60|-120\",\r\n offsetIndices: \"012121212121212121212121212122122\"\r\n }, {\r\n id: \"MET\",\r\n untils: \"-s0e080|7ves0|a4yw0|7x6o0|asw00|7x6o0|b8qdc0|1cm000|7k800|9q000|9d1c0|9d1c0|9d1c0|8l9c0|ggp1c0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-60|-120\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Mexico/BajaNorte\",\r\n untils: \"-p1u1s0|11jrw0|1sns00|1sgdc0|71s40|9cyk0|5iidg0|1q6700|4lfk0|190g40|eluk0|2r4o80|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|84qys0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|77c40|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"468.0667|420|480\",\r\n offsetIndices: \"012121211212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Mexico/BajaSur\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|591h80|3ie2s0|axvpg0|dpgw40|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"425.6667|420|360|480\",\r\n offsetIndices: \"0121212131212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Mexico/General\",\r\n untils: \"-p1u4k0|2u7jw0|1sgdc0|8n400|7thc0|9eys0|3knek0|776k0|rf440|5t6k0|1evk40|71mk0|30p1g0|8n180|nufxo0|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|9q2s0|7k580|9q2s0|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|Infinity\",\r\n offsets: \"396.6|420|360|300\",\r\n offsetIndices: \"012121232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"MST\",\r\n untils: \"Infinity\",\r\n offsets: \"420\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"MST7MDT\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|1tz5k0|2dvo0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Navajo\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"NZ-CHAT\",\r\n untils: \"-ciya10|f1tq90|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"-735|-765|-825\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"NZ\",\r\n untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"-690|-750|-720|-780\",\r\n offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Pacific/Apia\",\r\n untils: \"-usiiv4|kcrmt4|vp3la0|9odo0|902o0|4zbk0|4qog0|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"686.9333|690|660|600|-840|-780\",\r\n offsetIndices: \"01232345454545454545454545454545454545454545454545454545454\"\r\n }, {\r\n id: \"Pacific/Auckland\",\r\n untils: \"-m01p20|64ak0|biw40|7x5a0|asxe0|7x5a0|asxe0|7x5a0|asxe0|8a3y0|afyq0|8a3y0|afyq0|afvy0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|asum0|7x820|b5ta0|7k9e0|b5ta0|7x820|hsl2m0|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"-690|-750|-720|-780\",\r\n offsetIndices: \"01020202020202020202020202023232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Pacific/Bougainville\",\r\n untils: \"-ecsh40|1n05g0|1071c40|Infinity\",\r\n offsets: \"-600|-540|-660\",\r\n offsetIndices: \"0102\"\r\n }, {\r\n id: \"Pacific/Chatham\",\r\n untils: \"-ciya10|f1tq90|5reo0|clpc0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6uao0|c8qo0|6hc00|b5uo0|8a5c0|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|afxc0|8a5c0|afxc0|8a5c0|afxc0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|8n400|a2yo0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|a2yo0|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|902o0|9q000|9d1c0|9q000|902o0|9q000|902o0|Infinity\",\r\n offsets: \"-735|-765|-825\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212\"\r\n }, {\r\n id: \"Pacific/Chuuk\",\r\n untils: \"-su4zs0|29hes0|bkenw0|29fk40|Infinity\",\r\n offsets: \"-600|-540\",\r\n offsetIndices: \"01010\"\r\n }, {\r\n id: \"Pacific/Easter\",\r\n untils: \"-jhfaew|ivmeuw|7k580|c8tg0|6h980|a31g0|7x3w0|asys0|7x3w0|b5xg0|7k580|ag040|8a2k0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|iq2o0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|9cyk0|9d440|7x3w0|asys0|7x3w0|b5xg0|7k580|9q2s0|8zzw0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|a31g0|9px80|9q2s0|7x3w0|b5xg0|7k580|b5xg0|7k580|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|8n180|a31g0|7x3w0|asys0|8zzw0|9q2s0|ast80|5eis0|cyl80|6hes0|c8nw0|6udg0|bvp80|6udg0|vonw0|4olg0|e1h80|4olg0|e1h80|4olg0|c8nw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|b5rw0|7x9g0|ast80|7x9g0|Infinity\",\r\n offsets: \"437.4667|420|360|300\",\r\n offsetIndices: \"012121212121212121212121212123232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323\"\r\n }, {\r\n id: \"Pacific/Efate\",\r\n untils: \"-u964i4|11f4ba4|9cyk0|awo40|7tek0|9q2s0|8zzw0|9q2s0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9q2s0|64ak0|e1ms0|4ofw0|Infinity\",\r\n offsets: \"-673.2667|-660|-720\",\r\n offsetIndices: \"0121212121212121212121\"\r\n }, {\r\n id: \"Pacific/Enderbury\",\r\n untils: \"535io0|7yiqk0|Infinity\",\r\n offsets: \"720|660|-780\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Pacific/Fakaofo\",\r\n untils: \"lx0jw0|Infinity\",\r\n offsets: \"660|-780\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Fiji\",\r\n untils: \"-sa2x4w|17bs00w|64dc0|cyo00|5reo0|53a5c0|64dc0|asw00|6uao0|bvs00|4oio0|e1k00|4oio0|eeio0|4bh80|erk40|3ylc0|erhc0|3ylc0|f4g00|3lmo0|f4g00|3lmo0|f4g00|3lmo0|fheo0|38o00|fheo0|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|f4g00|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|38o00|fheo0|3lmo0|f4g00|3lmo0|Infinity\",\r\n offsets: \"-715.7333|-720|-780\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Pacific/Funafuti\",\r\n untils: \"Infinity\",\r\n offsets: \"-720\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Pacific/Galapagos\",\r\n untils: \"-kcr62o|spdryo|3lsas0|3jp80|Infinity\",\r\n offsets: \"358.4|300|360\",\r\n offsetIndices: \"01212\"\r\n }, {\r\n id: \"Pacific/Gambier\",\r\n untils: \"-tvndoc|Infinity\",\r\n offsets: \"539.8|540\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Guadalcanal\",\r\n untils: \"-tvowac|Infinity\",\r\n offsets: \"-639.8|-660\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Guam\",\r\n untils: \"-en8eg0|1dl9g0|7s1k40|txp80|3frms0|qdrpo|7kgac|3ljw0|c8tg0|6u7w0|bvus0|6u7w0|16uo40|3ljw0|16aas0|4ivxo|cls2c|6h980|c65zw0|Infinity\",\r\n offsets: \"-600|-540|-660\",\r\n offsetIndices: \"01020202020202020200\"\r\n }, {\r\n id: \"Pacific/Honolulu\",\r\n untils: \"-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity\",\r\n offsets: \"630|570|600\",\r\n offsetIndices: \"0101102\"\r\n }, {\r\n id: \"Pacific/Johnston\",\r\n untils: \"-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity\",\r\n offsets: \"630|570|600\",\r\n offsetIndices: \"0101102\"\r\n }, {\r\n id: \"Pacific/Kiritimati\",\r\n untils: \"535eyo|7yirhc|Infinity\",\r\n offsets: \"640|600|-840\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Pacific/Kosrae\",\r\n untils: \"-su52k0|29hhk0|9cmd40|27sas0|29fk40|cm2540|f9l3w0|Infinity\",\r\n offsets: \"-660|-540|-600|-720\",\r\n offsetIndices: \"01021030\"\r\n }, {\r\n id: \"Pacific/Kwajalein\",\r\n untils: \"-h817w0|27sas0|1hjus0|ddxug0|cgv6k0|Infinity\",\r\n offsets: \"-660|-600|-540|720|-720\",\r\n offsetIndices: \"012034\"\r\n }, {\r\n id: \"Pacific/Majuro\",\r\n untils: \"-su52k0|29hhk0|9cmd40|27sas0|1h6w40|deat40|Infinity\",\r\n offsets: \"-660|-540|-600|-720\",\r\n offsetIndices: \"0102103\"\r\n }, {\r\n id: \"Pacific/Marquesas\",\r\n untils: \"-tvncu0|Infinity\",\r\n offsets: \"558|570\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Midway\",\r\n untils: \"-usij20|Infinity\",\r\n offsets: \"682.8|660\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Nauru\",\r\n untils: \"-pjxiws|ba66ys|1kwca0|hfzda0|Infinity\",\r\n offsets: \"-667.6667|-690|-540|-720\",\r\n offsetIndices: \"01213\"\r\n }, {\r\n id: \"Pacific/Niue\",\r\n untils: \"-9wyz6o|ehcj4o|Infinity\",\r\n offsets: \"680|690|660\",\r\n offsetIndices: \"012\"\r\n }, {\r\n id: \"Pacific/Norfolk\",\r\n untils: \"-9x0ps0|cfj8q0|6hc00|l6nk00|239aq0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|Infinity\",\r\n offsets: \"-672|-690|-750|-660|-720\",\r\n offsetIndices: \"012134343434343434343434343434343434343434\"\r\n }, {\r\n id: \"Pacific/Noumea\",\r\n untils: \"-u9645o|ye0ixo|4dbw0|ecqs0|4f6k0|99p700|4oio0|Infinity\",\r\n offsets: \"-665.8|-660|-720\",\r\n offsetIndices: \"01212121\"\r\n }, {\r\n id: \"Pacific/Pago_Pago\",\r\n untils: \"-usij20|Infinity\",\r\n offsets: \"682.8|660\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Palau\",\r\n untils: \"Infinity\",\r\n offsets: \"-540\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Pacific/Pitcairn\",\r\n untils: \"es2cy0|Infinity\",\r\n offsets: \"510|480\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Pohnpei\",\r\n untils: \"-su52k0|29hhk0|9cmd40|27sas0|29fk40|Infinity\",\r\n offsets: \"-660|-540|-600\",\r\n offsetIndices: \"010210\"\r\n }, {\r\n id: \"Pacific/Ponape\",\r\n untils: \"-su52k0|29hhk0|9cmd40|27sas0|29fk40|Infinity\",\r\n offsets: \"-660|-540|-600\",\r\n offsetIndices: \"010210\"\r\n }, {\r\n id: \"Pacific/Port_Moresby\",\r\n untils: \"Infinity\",\r\n offsets: \"-600\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Pacific/Rarotonga\",\r\n untils: \"4mj960|5rbw0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|c8s20|6u9a0|c8s20|6ham0|c8s20|6ham0|c8s20|6ham0|Infinity\",\r\n offsets: \"630|570|600\",\r\n offsetIndices: \"012121212121212121212121212\"\r\n }, {\r\n id: \"Pacific/Saipan\",\r\n untils: \"-en8eg0|1dl9g0|7s1k40|txp80|3frms0|qdrpo|7kgac|3ljw0|c8tg0|6u7w0|bvus0|6u7w0|16uo40|3ljw0|16aas0|4ivxo|cls2c|6h980|c65zw0|Infinity\",\r\n offsets: \"-600|-540|-660\",\r\n offsetIndices: \"01020202020202020200\"\r\n }, {\r\n id: \"Pacific/Samoa\",\r\n untils: \"-usij20|Infinity\",\r\n offsets: \"682.8|660\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Tahiti\",\r\n untils: \"-tvnayw|Infinity\",\r\n offsets: \"598.2667|600\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"Pacific/Tarawa\",\r\n untils: \"Infinity\",\r\n offsets: \"-720\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Pacific/Tongatapu\",\r\n untils: \"-f4vrlc|uo2edc|8fpc0|bvs00|4bh80|eelg0|4bh80|7pmis0|3lmo0|Infinity\",\r\n offsets: \"-740|-780|-840\",\r\n offsetIndices: \"0121212121\"\r\n }, {\r\n id: \"Pacific/Truk\",\r\n untils: \"-su4zs0|29hes0|bkenw0|29fk40|Infinity\",\r\n offsets: \"-600|-540\",\r\n offsetIndices: \"01010\"\r\n }, {\r\n id: \"Pacific/Wake\",\r\n untils: \"Infinity\",\r\n offsets: \"-720\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Pacific/Wallis\",\r\n untils: \"Infinity\",\r\n offsets: \"-720\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Pacific/Yap\",\r\n untils: \"-su4zs0|29hes0|bkenw0|29fk40|Infinity\",\r\n offsets: \"-600|-540\",\r\n offsetIndices: \"01010\"\r\n }, {\r\n id: \"Poland\",\r\n untils: \"-se9yk0|dvyc0|7ves0|a4yw0|7x6o0|asw00|7x6o0|aunw0|7x6o0|1evbs0|9fcwc0|18cao0|7k800|9q000|9d1c0|9gnw0|an980|9kd80|8fs40|922w0|ar1c0|7x6o0|a2yo0|8n400|9q000|902o0|4013w0|64dc0|9d1c0|9d1c0|clpc0|6hc00|9d1c0|9d1c0|c8qo0|6hc00|c8qo0|6hc00|c8qo0|6hc00|clpc0|64dc0|6j4tc0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"-84|-60|-120|-180\",\r\n offsetIndices: \"012121223212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"Portugal\",\r\n untils: \"-u9rhc0|2bufw0|6zxg0|66580|bq800|73k00|bodc0|71pc0|bq800|73k00|bq800|71pc0|bq800|1b2g00|9b6o0|saio0|8n400|9q000|902o0|a2yo0|902o0|a2yo0|8n400|st1c0|8n400|9d1c0|9d1c0|sg2o0|9d1c0|902o0|9q000|a2yo0|8n400|9d1c0|9d1c0|902o0|9q000|a2yo0|b5uo0|51hc0|bitc0|9d1c0|9ew00|88ao0|25p80|5reo0|3lpg0|779c0|1sqk0|6uao0|38qs0|6uao0|25p80|6hc00|38qs0|6uao0|25p80|6hc00|38qs0|8a5c0|9d1c0|9d9o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|s3400|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|5gyl40|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d440|9cyk0|9d440|9d1c0|9d1c0|9d1c0|9d1c0|9d440|9cyk0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"36.75|0|-60|-120\",\r\n offsetIndices: \"012121212121212121212121212121212121212121212321232123212321212121212121212121212121212121212121212121212121212121212121212121212122323232212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"PRC\",\r\n untils: \"-qh00w0|8sl80|asbpg0|6w2k0|7ves0|bxjw0|4mqs0|1vduk0|d4as0|75bw0|a31g0|aaak0|9d440|7v980|awo40|1dx80|j9xpo0|6u7w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010\"\r\n }, {\r\n id: \"PST8PDT\",\r\n untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|b9gdg0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"ROC\",\r\n untils: \"-gtzfk0|45slc0|c51c0|75bw0|a31g0|aaak0|9d440|7v980|awo40|7v980|awo40|7v980|awo40|7v980|7tk40|clmk0|7rpg0|b07w0|7rpg0|b07w0|7rpg0|9et80|9eys0|9et80|9d440|9et80|9d440|9et80|9d440|9et80|cjxg0|69uk0|ci2s0|69uk0|6its40|9et80|9d440|9et80|1yf9g0|4qak0|Infinity\",\r\n offsets: \"-480|-540\",\r\n offsetIndices: \"01010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"ROK\",\r\n untils: \"-w8966g|1yh18g|hkx5a0|1faao0|5cik0|ae5g0|8a2k0|ae5g0|8bx80|c8tg0|6h980|1bj6s0|l3aq0|6j3w0|d2g40|6u7w0|b5xg0|776k0|biw40|776k0|biw40|776k0|biw40|776k0|grs40|dfqxi0|7x6o0|asw00|7x6o0|Infinity\",\r\n offsets: \"-507.8667|-510|-540|-600|-570\",\r\n offsetIndices: \"012232323232141414141414123232\"\r\n }, {\r\n id: \"Singapore\",\r\n untils: \"-xphpwd|eeb94d|4it32o|8n3jc|1v2p60|iy3o60|Infinity\",\r\n offsets: \"-415.4167|-420|-440|-450|-540|-480\",\r\n offsetIndices: \"0123435\"\r\n }, {\r\n id: \"Turkey\",\r\n untils: \"-ux9xew|2wvx6w|7v980|1tjc40|aunw0|88dg0|9et80|8yas0|a2vw0|tzpg0|79180|awo40|7v980|7p4040|4zjw0|2vs40|f4d80|9vms0|1u5ek0|c5440|69uk0|acas0|8n180|a31g0|8n180|9q2s0|8zzw0|a31g0|8zzw0|a31g0|8n180|5md9g0|o9zw0|a6qs0|75bw0|4iwyw0|7x6o0|7kas0|b5rw0|75hg0|bkl80|77c40|biqk0|7x9g0|a2vw0|8n6s0|4iqc0|2nkw80|38l80|kdes0|8qtc0|8a5c0|9ew00|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|902o0|9q000|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7kdk0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7m2o0|b4000|7k800|b5uo0|7x6o0|asw00|7z1c0|ar1c0|7x6o0|bitc0|779c0|8fe80|Infinity\",\r\n offsets: \"-116.9333|-120|-180|-240\",\r\n offsetIndices: \"0121212121212121212121212121212121212121212121223212121212121212121212121212121212121212121212121212121212121212122\"\r\n }, {\r\n id: \"UCT\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"Universal\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"US/Alaska\",\r\n untils: \"-ek1qo0|1tyx80|2e400|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"600|540|480\",\r\n offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"US/Aleutian\",\r\n untils: \"-ek1nw0|1tyug0|2e6s0|b7yik0|12y080|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|1l940|7rs80|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"660|600|540\",\r\n offsetIndices: \"011001010101010101010101010101010111212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"US/Arizona\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|bmtus0|zjedo|4olg0|9et80|bs6lmc|9cyk0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"01010101010\"\r\n }, {\r\n id: \"US/Central\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bvus0|776k0|7kas0|b5rw0|9d440|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|7x9g0|dbjw0|8a840|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"US/East-Indiana\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|baw840|51ek0|6w840|1tz8c0|2dsw0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|19q7w0|asys0|5qonw0|9cyk0|9d440|9cyk0|ihslg0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300|240\",\r\n offsetIndices: \"010101011010101010101010101010121212121212121212121212121212121212121212121212121212121212121212121\"\r\n }, {\r\n id: \"US/Eastern\",\r\n untils: \"-r0ev80|ast80|7x9g0|ast80|7x9g0|b5rw0|905g0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|6w840|1tzb40|2dq40|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"300|240\",\r\n offsetIndices: \"01010101010101010101010101010101010101010101010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"US/Hawaii\",\r\n untils: \"-j50la0|13l00|4jvb00|1tyvu0|2e5e0|votg0|Infinity\",\r\n offsets: \"630|570|600\",\r\n offsetIndices: \"0101102\"\r\n }, {\r\n id: \"US/Indiana-Starke\",\r\n untils: \"-r0esg0|ast80|7x9g0|ast80|bmtus0|1tz8c0|2dsw0|tj1g0|7x3w0|asys0|7x3w0|asys0|7x3w0|b5xg0|7k580|b5xg0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|7x3w0|asys0|9px80|9d440|9cyk0|9d440|7x3w0|asys0|7x3w0|asys0|9cyk0|9d440|9px80|9d440|9cyk0|9d440|s3180|1twas0|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|7j5400|asw00|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"360|300\",\r\n offsetIndices: \"0101011010101010101010101010101010101010101010101010101010101010101010101010101010101010111010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"US/Michigan\",\r\n untils: \"-xx8dyd|5eraud|dyeyk0|1tzb40|2dq40|1c9440|7x3w0|9rlbxo|71s2c|9d440|9cyk0|2cmdg0|9cyk0|3lpg0|f4d80|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"332.1833|360|300|240\",\r\n offsetIndices: \"0123323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232\"\r\n }, {\r\n id: \"US/Mountain\",\r\n untils: \"-r0epo0|ast80|7x9g0|ast80|7x9g0|b5rw0|7kas0|2vmk0|ataw40|1tz5k0|2dvo0|a7n9g0|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"420|360\",\r\n offsetIndices: \"01010101011010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"US/Pacific-New\",\r\n untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"US/Pacific\",\r\n untils: \"-r0emw0|ast80|7x9g0|ast80|bmtus0|1tz2s0|2dyg0|1a3c5o|f2iic|owao0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|902o0|9q000|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|9d440|9cyk0|9d440|9cyk0|3lpg0|f4d80|64g40|clmk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|9d440|9px80|905g0|9px80|9d440|9cyk0|9d440|9cyk0|9d440|9cyk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|8a840|afuk0|8a840|afuk0|8a840|ast80|7x9g0|ast80|7x9g0|ast80|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6udg0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|6hes0|c8nw0|Infinity\",\r\n offsets: \"480|420\",\r\n offsetIndices: \"010101101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"US/Samoa\",\r\n untils: \"-usij20|Infinity\",\r\n offsets: \"682.8|660\",\r\n offsetIndices: \"01\"\r\n }, {\r\n id: \"UTC\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }, {\r\n id: \"W-SU\",\r\n untils: \"-rx5dmh|ipzua|97hc0|7yyk0|5i840|d9p80|1jwk7|2cvk0|s8o00|1qvw0|8fpc0|1jms0|is040|412as0|qi27w0|9et80|9d440|9et80|9d440|9et80|9eys0|9d6w0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d440|5reo0|3ljw0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|1vbzw0|Infinity\",\r\n offsets: \"-150.2833|-151.3167|-211.3167|-271.3167|-240|-180|-300|-120\",\r\n offsetIndices: \"012132345464575454545454545454545455754545454545454545454545454545454545454545\"\r\n }, {\r\n id: \"WET\",\r\n untils: \"3s9ms0|902o0|9q000|9d1c0|9d1c0|9d1c0|9q000|902o0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9d1c0|9q000|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|7x6o0|b5uo0|7k800|b5uo0|7k800|b5uo0|7k800|b5uo0|7x6o0|asw00|7x6o0|asw00|Infinity\",\r\n offsets: \"0|-60\",\r\n offsetIndices: \"010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010\"\r\n }, {\r\n id: \"Zulu\",\r\n untils: \"Infinity\",\r\n offsets: \"0\",\r\n offsetIndices: \"0\"\r\n }]\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_utils_time_zone.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport DateAdapter from \"./m_date_adapter\";\r\nimport timeZoneDataUtils from \"./timezones/m_utils_timezones_data\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar MS_IN_MINUTE = 6e4;\r\nvar createUTCDateWithLocalOffset = date => {\r\n if (!date) {\r\n return null\r\n }\r\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds()))\r\n};\r\nvar createDateFromUTCWithLocalOffset = date => {\r\n var result = DateAdapter(date);\r\n var timezoneOffsetBeforeInMin = result.getTimezoneOffset();\r\n result.addTime(result.getTimezoneOffset(\"minute\"));\r\n result.subtractMinutes(timezoneOffsetBeforeInMin - result.getTimezoneOffset());\r\n return result.source\r\n};\r\nvar getTimeZones = function() {\r\n var date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;\r\n var dateInUTC = createUTCDate(date);\r\n return timeZoneDataUtils.getDisplayedTimeZones(dateInUTC.getTime())\r\n};\r\nvar createUTCDate = date => new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate(), date.getUTCHours(), date.getUTCMinutes()));\r\nvar getTimezoneOffsetChangeInMinutes = (startDate, endDate, updatedStartDate, updatedEndDate) => getDaylightOffset(updatedStartDate, updatedEndDate) - getDaylightOffset(startDate, endDate);\r\nvar getTimezoneOffsetChangeInMs = (startDate, endDate, updatedStartDate, updatedEndDate) => getTimezoneOffsetChangeInMinutes(startDate, endDate, updatedStartDate, updatedEndDate) * toMs(\"minute\");\r\nvar getDaylightOffset = (startDate, endDate) => new Date(startDate).getTimezoneOffset() - new Date(endDate).getTimezoneOffset();\r\nvar getDaylightOffsetInMs = (startDate, endDate) => getDaylightOffset(startDate, endDate) * toMs(\"minute\");\r\nvar calculateTimezoneByValue = function(timezone) {\r\n var date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;\r\n if (\"string\" === typeof timezone) {\r\n var dateUtc = createUTCDate(date);\r\n return timeZoneDataUtils.getTimeZoneOffsetById(timezone, dateUtc.getTime())\r\n }\r\n return timezone\r\n};\r\nvar _getDaylightOffsetByTimezone = (startDate, endDate, timeZone) => calculateTimezoneByValue(timeZone, startDate) - calculateTimezoneByValue(timeZone, endDate);\r\nvar getCorrectedDateByDaylightOffsets = (convertedOriginalStartDate, convertedDate, date, timeZone, startDateTimezone) => {\r\n var daylightOffsetByCommonTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, timeZone);\r\n var daylightOffsetByAppointmentTimezone = _getDaylightOffsetByTimezone(convertedOriginalStartDate, convertedDate, startDateTimezone);\r\n var diff = daylightOffsetByCommonTimezone - daylightOffsetByAppointmentTimezone;\r\n return new Date(date.getTime() - diff * toMs(\"hour\"))\r\n};\r\nvar correctRecurrenceExceptionByTimezone = function(exception, exceptionByStartDate, timeZone, startDateTimeZone) {\r\n var isBackConversion = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n var timezoneOffset = (exception.getTimezoneOffset() - exceptionByStartDate.getTimezoneOffset()) / MINUTES_IN_HOUR;\r\n if (startDateTimeZone) {\r\n timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, startDateTimeZone)\r\n } else if (timeZone) {\r\n timezoneOffset = _getDaylightOffsetByTimezone(exceptionByStartDate, exception, timeZone)\r\n }\r\n return new Date(exception.getTime() + (isBackConversion ? -1 : 1) * timezoneOffset * toMs(\"hour\"))\r\n};\r\nvar isTimezoneChangeInDate = date => {\r\n var startDayDate = new Date(new Date(date).setHours(0, 0, 0, 0));\r\n var endDayDate = new Date(new Date(date).setHours(23, 59, 59, 0));\r\n return startDayDate.getTimezoneOffset() - endDayDate.getTimezoneOffset() !== 0\r\n};\r\nvar getDateWithoutTimezoneChange = date => {\r\n var clonedDate = new Date(date);\r\n if (isTimezoneChangeInDate(clonedDate)) {\r\n var result = new Date(clonedDate);\r\n return new Date(result.setDate(result.getDate() + 1))\r\n }\r\n return clonedDate\r\n};\r\nvar isSameAppointmentDates = (startDate, endDate) => {\r\n endDate = new Date(endDate.getTime() - 1);\r\n return dateUtils.sameDate(startDate, endDate)\r\n};\r\nvar getClientTimezoneOffset = function() {\r\n var date = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;\r\n return date.getTimezoneOffset() * MS_IN_MINUTE\r\n};\r\nvar getDiffBetweenClientTimezoneOffsets = function() {\r\n var firstDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : new Date;\r\n var secondDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;\r\n return getClientTimezoneOffset(firstDate) - getClientTimezoneOffset(secondDate)\r\n};\r\nvar isEqualLocalTimeZone = function(timeZoneName) {\r\n var date = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : new Date;\r\n if (Intl) {\r\n var localTimeZoneName = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n if (localTimeZoneName === timeZoneName) {\r\n return true\r\n }\r\n }\r\n return isEqualLocalTimeZoneByDeclaration(timeZoneName, date)\r\n};\r\nvar hasDSTInLocalTimeZone = () => {\r\n var [startDate, endDate] = getExtremeDates();\r\n return startDate.getTimezoneOffset() !== endDate.getTimezoneOffset()\r\n};\r\nvar isEqualLocalTimeZoneByDeclaration = (timeZoneName, date) => {\r\n var year = date.getFullYear();\r\n var getOffset = date => -date.getTimezoneOffset() / 60;\r\n var getDateAndMoveHourBack = dateStamp => new Date(dateStamp - 36e5);\r\n var configTuple = timeZoneDataUtils.getTimeZoneDeclarationTuple(timeZoneName, year);\r\n var [summerTime, winterTime] = configTuple;\r\n var noDSTInTargetTimeZone = configTuple.length < 2;\r\n if (noDSTInTargetTimeZone) {\r\n var targetTimeZoneOffset = timeZoneDataUtils.getTimeZoneOffsetById(timeZoneName, date);\r\n var localTimeZoneOffset = getOffset(date);\r\n if (targetTimeZoneOffset !== localTimeZoneOffset) {\r\n return false\r\n }\r\n return !hasDSTInLocalTimeZone()\r\n }\r\n var localSummerOffset = getOffset(new Date(summerTime.date));\r\n var localWinterOffset = getOffset(new Date(winterTime.date));\r\n if (localSummerOffset !== summerTime.offset) {\r\n return false\r\n }\r\n if (localSummerOffset === getOffset(getDateAndMoveHourBack(summerTime.date))) {\r\n return false\r\n }\r\n if (localWinterOffset !== winterTime.offset) {\r\n return false\r\n }\r\n if (localWinterOffset === getOffset(getDateAndMoveHourBack(winterTime.date))) {\r\n return false\r\n }\r\n return true\r\n};\r\nvar getExtremeDates = () => {\r\n var nowDate = new Date(Date.now());\r\n var startDate = new Date;\r\n var endDate = new Date;\r\n startDate.setFullYear(nowDate.getFullYear(), 0, 1);\r\n endDate.setFullYear(nowDate.getFullYear(), 6, 1);\r\n return [startDate, endDate]\r\n};\r\nvar setOffsetsToDate = (targetDate, offsetsArray) => {\r\n var newDateMs = offsetsArray.reduce((result, offset) => result + offset, targetDate.getTime());\r\n return new Date(newDateMs)\r\n};\r\nvar utils = {\r\n getDaylightOffset: getDaylightOffset,\r\n getDaylightOffsetInMs: getDaylightOffsetInMs,\r\n getTimezoneOffsetChangeInMinutes: getTimezoneOffsetChangeInMinutes,\r\n getTimezoneOffsetChangeInMs: getTimezoneOffsetChangeInMs,\r\n calculateTimezoneByValue: calculateTimezoneByValue,\r\n getCorrectedDateByDaylightOffsets: getCorrectedDateByDaylightOffsets,\r\n isSameAppointmentDates: isSameAppointmentDates,\r\n correctRecurrenceExceptionByTimezone: correctRecurrenceExceptionByTimezone,\r\n getClientTimezoneOffset: getClientTimezoneOffset,\r\n getDiffBetweenClientTimezoneOffsets: getDiffBetweenClientTimezoneOffsets,\r\n createUTCDateWithLocalOffset: createUTCDateWithLocalOffset,\r\n createDateFromUTCWithLocalOffset: createDateFromUTCWithLocalOffset,\r\n createUTCDate: createUTCDate,\r\n isTimezoneChangeInDate: isTimezoneChangeInDate,\r\n getDateWithoutTimezoneChange: getDateWithoutTimezoneChange,\r\n hasDSTInLocalTimeZone: hasDSTInLocalTimeZone,\r\n isEqualLocalTimeZone: isEqualLocalTimeZone,\r\n isEqualLocalTimeZoneByDeclaration: isEqualLocalTimeZoneByDeclaration,\r\n getTimeZones: getTimeZones,\r\n setOffsetsToDate: setOffsetsToDate\r\n};\r\nexport default utils;\r\n","/**\r\n * DevExtreme (esm/ui/scheduler/utils.timeZone.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport timezoneUtils from \"../../__internal/scheduler/m_utils_time_zone\";\r\nexport default timezoneUtils;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_expression_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nexport var ExpressionUtils = {\r\n getField: (dataAccessors, field, obj) => {\r\n if (!isDefined(dataAccessors.getter[field])) {\r\n return\r\n }\r\n return dataAccessors.getter[field](obj)\r\n },\r\n setField: (dataAccessors, field, obj, value) => {\r\n if (!isDefined(dataAccessors.setter[field])) {\r\n return\r\n }\r\n dataAccessors.setter[field](obj, value);\r\n return obj\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/data_provider/m_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport dateSerialization from \"../../../../core/utils/date_serialization\";\r\nimport timeZoneUtils from \"../../../../ui/scheduler/utils.timeZone\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../../m_expression_utils\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar FULL_DATE_FORMAT = \"yyyyMMddTHHmmss\";\r\nexport var compareDateWithStartDayHour = (startDate, endDate, startDayHour, allDay, severalDays) => {\r\n var startTime = dateUtils.dateTimeFromDecimal(startDayHour);\r\n var result = startDate.getHours() >= startTime.hours && startDate.getMinutes() >= startTime.minutes || endDate.getHours() === startTime.hours && endDate.getMinutes() > startTime.minutes || endDate.getHours() > startTime.hours || severalDays || allDay;\r\n return result\r\n};\r\nexport var compareDateWithEndDayHour = options => {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n viewStartDayHour: viewStartDayHour,\r\n viewEndDayHour: viewEndDayHour,\r\n allDay: allDay,\r\n severalDays: severalDays,\r\n min: min,\r\n max: max,\r\n checkIntersectViewport: checkIntersectViewport\r\n } = options;\r\n var hiddenInterval = (24 - viewEndDayHour + viewStartDayHour) * toMs(\"hour\");\r\n var apptDuration = endDate.getTime() - startDate.getTime();\r\n var delta = (hiddenInterval - apptDuration) / toMs(\"hour\");\r\n var apptStartHour = startDate.getHours();\r\n var apptStartMinutes = startDate.getMinutes();\r\n var result;\r\n var endTime = dateUtils.dateTimeFromDecimal(endDayHour);\r\n var startTime = dateUtils.dateTimeFromDecimal(startDayHour);\r\n var apptIntersectViewport = startDate < max && endDate > min;\r\n result = checkIntersectViewport && apptIntersectViewport || apptStartHour < endTime.hours || apptStartHour === endTime.hours && apptStartMinutes < endTime.minutes || allDay && startDate <= max || severalDays && apptIntersectViewport && (apptStartHour < endTime.hours || 60 * endDate.getHours() + endDate.getMinutes() > 60 * startTime.hours);\r\n if (apptDuration < hiddenInterval) {\r\n if (apptStartHour > endTime.hours && apptStartMinutes > endTime.minutes && delta <= apptStartHour - endDayHour) {\r\n result = false\r\n }\r\n }\r\n return result\r\n};\r\nexport var getAppointmentTakesSeveralDays = adapter => !dateUtils.sameDate(adapter.startDate, adapter.endDate);\r\nexport var _isEndDateWrong = (startDate, endDate) => !endDate || isNaN(endDate.getTime()) || startDate.getTime() > endDate.getTime();\r\nexport var _appointmentPartInInterval = (startDate, endDate, startDayHour, endDayHour) => {\r\n var apptStartDayHour = startDate.getHours();\r\n var apptEndDayHour = endDate.getHours();\r\n return apptStartDayHour <= startDayHour && apptEndDayHour <= endDayHour && apptEndDayHour >= startDayHour || apptEndDayHour >= endDayHour && apptStartDayHour <= endDayHour && apptStartDayHour >= startDayHour\r\n};\r\nexport var getRecurrenceException = (appointmentAdapter, timeZoneCalculator, timeZone) => {\r\n var {\r\n recurrenceException: recurrenceException\r\n } = appointmentAdapter;\r\n if (recurrenceException) {\r\n var exceptions = recurrenceException.split(\",\");\r\n for (var i = 0; i < exceptions.length; i++) {\r\n exceptions[i] = _convertRecurrenceException(exceptions[i], appointmentAdapter.startDate, timeZoneCalculator, timeZone)\r\n }\r\n return exceptions.join()\r\n }\r\n return recurrenceException\r\n};\r\nexport var _convertRecurrenceException = (exceptionString, startDate, timeZoneCalculator, timeZone) => {\r\n exceptionString = exceptionString.replace(/\\s/g, \"\");\r\n var getConvertedToTimeZone = date => timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var exceptionDate = dateSerialization.deserializeDate(exceptionString);\r\n var convertedStartDate = getConvertedToTimeZone(startDate);\r\n var convertedExceptionDate = getConvertedToTimeZone(exceptionDate);\r\n convertedExceptionDate = timeZoneUtils.correctRecurrenceExceptionByTimezone(convertedExceptionDate, convertedStartDate, timeZone);\r\n exceptionString = dateSerialization.serializeDate(convertedExceptionDate, FULL_DATE_FORMAT);\r\n return exceptionString\r\n};\r\nexport var replaceWrongEndDate = (rawAppointment, startDate, endDate, appointmentDuration, dataAccessors) => {\r\n if (_isEndDateWrong(startDate, endDate)) {\r\n var isAllDay = ExpressionUtils.getField(dataAccessors, \"allDay\", rawAppointment);\r\n var calculatedEndDate = ((isAllDay, startDate) => {\r\n if (isAllDay) {\r\n return dateUtils.setToDayEnd(new Date(startDate))\r\n }\r\n return new Date(startDate.getTime() + appointmentDuration * toMs(\"minute\"))\r\n })(isAllDay, startDate);\r\n dataAccessors.setter.endDate(rawAppointment, calculatedEndDate)\r\n }\r\n};\r\nexport var sortAppointmentsByStartDate = (appointments, dataAccessors) => {\r\n appointments.sort((a, b) => {\r\n var firstDate = new Date(ExpressionUtils.getField(dataAccessors, \"startDate\", a.settings || a));\r\n var secondDate = new Date(ExpressionUtils.getField(dataAccessors, \"startDate\", b.settings || b));\r\n return Math.sign(firstDate.getTime() - secondDate.getTime())\r\n })\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.errors.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errorUtils from \"../../core/utils/error\";\r\nimport errors from \"../../core/errors\";\r\nexport default errorUtils(errors.ERROR_MESSAGES, {\r\n E1001: \"Module '{0}'. Controller '{1}' is already registered\",\r\n E1002: \"Module '{0}'. Controller '{1}' does not inherit from DevExpress.ui.dxDataGrid.Controller\",\r\n E1003: \"Module '{0}'. View '{1}' is already registered\",\r\n E1004: \"Module '{0}'. View '{1}' does not inherit from DevExpress.ui.dxDataGrid.View\",\r\n E1005: \"Public method '{0}' is already registered\",\r\n E1006: \"Public method '{0}.{1}' does not exist\",\r\n E1007: \"State storing cannot be provided due to the restrictions of the browser\",\r\n E1010: \"The template does not contain the TextBox widget\",\r\n E1011: 'Items cannot be deleted from the List. Implement the \"remove\" function in the data store',\r\n E1012: \"Editing type '{0}' with the name '{1}' is unsupported\",\r\n E1016: \"Unexpected type of data source is provided for a lookup column\",\r\n E1018: \"The 'collapseAll' method cannot be called if you use a remote data source\",\r\n E1019: \"Search mode '{0}' is unavailable\",\r\n E1020: \"The type cannot be changed after initialization\",\r\n E1021: \"{0} '{1}' you are trying to remove does not exist\",\r\n E1022: 'The \"markers\" option is given an invalid value. Assign an array instead',\r\n E1023: 'The \"routes\" option is given an invalid value. Assign an array instead',\r\n E1025: \"This layout is too complex to render\",\r\n E1026: 'The \"calculateCustomSummary\" function is missing from a field whose \"summaryType\" option is set to \"custom\"',\r\n E1031: \"Unknown subscription in the Scheduler widget: '{0}'\",\r\n E1032: \"Unknown start date in an appointment: '{0}'\",\r\n E1033: \"Unknown step in the date navigator: '{0}'\",\r\n E1034: \"The browser does not implement an API for saving files\",\r\n E1035: \"The editor cannot be created: {0}\",\r\n E1037: \"Invalid structure of grouped data\",\r\n E1038: \"The browser does not support local storages for local web pages\",\r\n E1039: \"A cell's position cannot be calculated\",\r\n E1040: \"The '{0}' key value is not unique within the data array\",\r\n E1041: \"The '{0}' script is referenced after the DevExtreme scripts or not referenced at all\",\r\n E1042: \"{0} requires the key field to be specified\",\r\n E1043: \"Changes cannot be processed due to the incorrectly set key\",\r\n E1044: \"The key field specified by the keyExpr option does not match the key field specified in the data store\",\r\n E1045: \"Editing requires the key field to be specified in the data store\",\r\n E1046: \"The '{0}' key field is not found in data objects\",\r\n E1047: 'The \"{0}\" field is not found in the fields array',\r\n E1048: 'The \"{0}\" operation is not found in the filterOperations array',\r\n E1049: \"Column '{0}': filtering is allowed but the 'dataField' or 'name' option is not specified\",\r\n E1050: \"The validationRules option does not apply to third-party editors defined in the editCellTemplate\",\r\n E1051: 'HtmlEditor\\'s valueType is \"{0}\", but the {0} converter was not imported.',\r\n E1052: '{0} should have the \"dataSource\" option specified',\r\n E1053: 'The \"buttons\" option accepts an array that contains only objects or string values',\r\n E1054: \"All text editor buttons must have names\",\r\n E1055: 'One or several text editor buttons have invalid or non-unique \"name\" values',\r\n E1056: 'The {0} widget does not support buttons of the \"{1}\" type',\r\n E1058: 'The \"startDayHour\" must be earlier than the \"endDayHour\"',\r\n E1059: \"The following column names are not unique: {0}\",\r\n E1060: \"All editable columns must have names\",\r\n W1001: 'The \"key\" option cannot be modified after initialization',\r\n W1002: \"An item with the key '{0}' does not exist\",\r\n W1003: \"A group with the key '{0}' in which you are trying to select items does not exist\",\r\n W1004: \"The item '{0}' you are trying to select in the group '{1}' does not exist\",\r\n W1005: \"Due to column data types being unspecified, data has been loaded twice in order to apply initial filter settings. To resolve this issue, specify data types for all grid columns.\",\r\n W1006: \"The map service returned the following error: '{0}'\",\r\n W1007: \"No item with key {0} was found in the data source, but this key was used as the parent key for item {1}\",\r\n W1008: \"Cannot scroll to the '{0}' date because it does not exist on the current view\",\r\n W1009: \"Searching works only if data is specified using the dataSource option\",\r\n W1010: \"The capability to select all items works with source data of plain structure only\",\r\n W1011: 'The \"keyExpr\" option is not applied when dataSource is not an array',\r\n W1012: \"The '{0}' key field is not found in data objects\",\r\n W1013: 'The \"message\" field in the dialog component was renamed to \"messageHtml\". Change your code correspondingly. In addition, if you used HTML code in the message, make sure that it is secure',\r\n W1014: \"The Floating Action Button exceeds the recommended speed dial action count. If you need to display more speed dial actions, increase the maxSpeedDialActionCount option value in the global config.\",\r\n W1015: 'The \"cellDuration\" should divide the range from the \"startDayHour\" to the \"endDayHour\" into even intervals',\r\n W1016: \"The '{0}' field in the HTML Editor toolbar item configuration was renamed to '{1}'. Please make a corresponding change in your code.\",\r\n W1017: \"The 'key' property is not specified for a lookup data source. Please specify it to prevent requests for the entire dataset when users filter data.\",\r\n W1018: \"Infinite scrolling may not work properly with multiple selection. To use these features together, set 'selection.deferred' to true or set 'selection.selectAllMode' to 'page'.\",\r\n W1019: \"Filter query string exceeds maximum length limit of {0} characters.\",\r\n W1020: \"hideEvent is ignored when the shading property is true\",\r\n W1021: \"The '{0}' is not rendered because none of the DOM elements match the value of the \\\"container\\\" property.\",\r\n W1022: \"{0} JSON parsing error: '{1}'\",\r\n W1023: \"Appointments require unique keys. Otherwise, the agenda view may not work correctly.\",\r\n W1024: \"The client-side export is enabled. Implement the 'onExporting' function.\",\r\n W1025: \"'scrolling.mode' is set to 'virtual' or 'infinite'. Specify the height of the component.\"\r\n});\r\n",null,null,null,null,"/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\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;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"/**\r\n * DevExtreme (esm/__internal/scheduler/m_recurrence.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../../core/errors\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n RRule,\r\n RRuleSet\r\n} from \"rrule\";\r\nimport timeZoneUtils from \"./m_utils_time_zone\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar ruleNames = [\"freq\", \"interval\", \"byday\", \"byweekno\", \"byyearday\", \"bymonth\", \"bymonthday\", \"count\", \"until\", \"byhour\", \"byminute\", \"bysecond\", \"bysetpos\", \"wkst\"];\r\nvar freqNames = [\"DAILY\", \"WEEKLY\", \"MONTHLY\", \"YEARLY\", \"SECONDLY\", \"MINUTELY\", \"HOURLY\"];\r\nvar days = {\r\n SU: 0,\r\n MO: 1,\r\n TU: 2,\r\n WE: 3,\r\n TH: 4,\r\n FR: 5,\r\n SA: 6\r\n};\r\nvar loggedWarnings = [];\r\nvar MS_IN_HOUR = 36e5;\r\nvar MS_IN_DAY = 24 * MS_IN_HOUR;\r\nvar RRULE_BROKEN_TIMEZONES = [\"Etc/GMT-13\", \"MIT\", \"Pacific/Apia\", \"Pacific/Enderbury\", \"Pacific/Tongatapu\", \"Etc/GMT-14\", \"Pacific/Kiritimati\"];\r\nvar recurrence = null;\r\nexport function getRecurrenceProcessor() {\r\n if (!recurrence) {\r\n recurrence = new RecurrenceProcessor\r\n }\r\n return recurrence\r\n}\r\nclass RecurrenceProcessor {\r\n constructor() {\r\n this.rRule = null;\r\n this.rRuleSet = null;\r\n this.validator = new RecurrenceValidator\r\n }\r\n generateDates(options) {\r\n var recurrenceRule = this.evalRecurrenceRule(options.rule);\r\n var {\r\n rule: rule\r\n } = recurrenceRule;\r\n if (!recurrenceRule.isValid || !rule.freq) {\r\n return []\r\n }\r\n var rruleIntervalParams = this._createRruleIntervalParams(options);\r\n this._initializeRRule(options, rruleIntervalParams.startIntervalDate, rule.until);\r\n return this.rRuleSet.between(rruleIntervalParams.minViewDate, rruleIntervalParams.maxViewDate, true).filter(date => date.getTime() + rruleIntervalParams.appointmentDuration >= rruleIntervalParams.minViewTime).map(date => this._convertRruleResult(rruleIntervalParams, options, date))\r\n }\r\n _createRruleIntervalParams(options) {\r\n var {\r\n start: start,\r\n min: min,\r\n max: max,\r\n appointmentTimezoneOffset: appointmentTimezoneOffset\r\n } = options;\r\n var clientOffsets_startDate = timeZoneUtils.getClientTimezoneOffset(start),\r\n clientOffsets_minViewDate = timeZoneUtils.getClientTimezoneOffset(min),\r\n clientOffsets_maxViewDate = timeZoneUtils.getClientTimezoneOffset(max);\r\n var duration = options.end ? options.end.getTime() - options.start.getTime() : 0;\r\n var startIntervalDate = timeZoneUtils.setOffsetsToDate(options.start, [-clientOffsets_startDate, appointmentTimezoneOffset]);\r\n var minViewTime = options.min.getTime() - clientOffsets_minViewDate + appointmentTimezoneOffset;\r\n var minViewDate = new Date(minViewTime - duration);\r\n var maxViewDate = timeZoneUtils.setOffsetsToDate(options.max, [-clientOffsets_maxViewDate, appointmentTimezoneOffset]);\r\n var startDateDSTDifferenceMs = timeZoneUtils.getDiffBetweenClientTimezoneOffsets(options.start, startIntervalDate);\r\n var switchToSummerTime = startDateDSTDifferenceMs < 0;\r\n return {\r\n startIntervalDate: startIntervalDate,\r\n minViewTime: minViewTime,\r\n minViewDate: minViewDate,\r\n maxViewDate: maxViewDate,\r\n startIntervalDateDSTShift: switchToSummerTime ? 0 : startDateDSTDifferenceMs,\r\n appointmentDuration: duration\r\n }\r\n }\r\n _convertRruleResult(rruleIntervalParams, options, rruleDate) {\r\n var convertedBackDate = timeZoneUtils.setOffsetsToDate(rruleDate, [...this._getLocalMachineOffset(rruleDate), -options.appointmentTimezoneOffset, rruleIntervalParams.startIntervalDateDSTShift]);\r\n var convertedDateDSTShift = timeZoneUtils.getDiffBetweenClientTimezoneOffsets(convertedBackDate, rruleDate);\r\n var switchToSummerTime = convertedDateDSTShift < 0;\r\n var resultDate = timeZoneUtils.setOffsetsToDate(convertedBackDate, [convertedDateDSTShift]);\r\n var resultDateDSTShift = timeZoneUtils.getDiffBetweenClientTimezoneOffsets(resultDate, convertedBackDate);\r\n if (resultDateDSTShift && switchToSummerTime) {\r\n return new Date(resultDate.getTime() + resultDateDSTShift)\r\n }\r\n return resultDate\r\n }\r\n _getLocalMachineOffset(rruleDate) {\r\n var machineTimezoneOffset = timeZoneUtils.getClientTimezoneOffset(rruleDate);\r\n var machineTimezoneName = dateUtils.getMachineTimezoneName();\r\n var result = [machineTimezoneOffset];\r\n var isTimezoneOffsetInBrokenRange = machineTimezoneOffset / MS_IN_HOUR <= -13;\r\n var isTimezoneNameInBrokenNames = !machineTimezoneName || RRULE_BROKEN_TIMEZONES.some(timezone => machineTimezoneName.includes(timezone));\r\n if (isTimezoneOffsetInBrokenRange && isTimezoneNameInBrokenNames) {\r\n result.push(-MS_IN_DAY)\r\n }\r\n return result\r\n }\r\n hasRecurrence(options) {\r\n return !!this.generateDates(options).length\r\n }\r\n evalRecurrenceRule(rule) {\r\n var result = {\r\n rule: {},\r\n isValid: false\r\n };\r\n if (rule) {\r\n result.rule = this._parseRecurrenceRule(rule);\r\n result.isValid = this.validator.validateRRule(result.rule, rule)\r\n }\r\n return result\r\n }\r\n isValidRecurrenceRule(rule) {\r\n return this.evalRecurrenceRule(rule).isValid\r\n }\r\n daysFromByDayRule(rule) {\r\n var result = [];\r\n if (rule.byday) {\r\n if (Array.isArray(rule.byday)) {\r\n result = rule.byday\r\n } else {\r\n result = rule.byday.split(\",\")\r\n }\r\n }\r\n return result.map(item => {\r\n var match = item.match(/[A-Za-z]+/);\r\n return !!match && match[0]\r\n }).filter(item => !!item)\r\n }\r\n getAsciiStringByDate(date) {\r\n var currentOffset = date.getTimezoneOffset() * toMs(\"minute\");\r\n var offsetDate = new Date(date.getTime() + currentOffset);\r\n return \"\".concat(offsetDate.getFullYear() + \"0\".concat(offsetDate.getMonth() + 1).slice(-2) + \"0\".concat(offsetDate.getDate()).slice(-2), \"T\").concat(\"0\".concat(offsetDate.getHours()).slice(-2)).concat(\"0\".concat(offsetDate.getMinutes()).slice(-2)).concat(\"0\".concat(offsetDate.getSeconds()).slice(-2), \"Z\")\r\n }\r\n getRecurrenceString(object) {\r\n if (!object || !object.freq) {\r\n return\r\n }\r\n var result = \"\";\r\n for (var field in object) {\r\n var value = object[field];\r\n if (\"interval\" === field && value < 2) {\r\n continue\r\n }\r\n if (\"until\" === field) {\r\n value = this.getAsciiStringByDate(value)\r\n }\r\n result += \"\".concat(field, \"=\").concat(value, \";\")\r\n }\r\n result = result.substring(0, result.length - 1);\r\n return result.toUpperCase()\r\n }\r\n _parseExceptionToRawArray(value) {\r\n return value.match(/(\\d{4})(\\d{2})(\\d{2})(T(\\d{2})(\\d{2})(\\d{2}))?(Z)?/)\r\n }\r\n getDateByAsciiString(exceptionText) {\r\n if (\"string\" !== typeof exceptionText) {\r\n return exceptionText\r\n }\r\n var result = this._parseExceptionToRawArray(exceptionText);\r\n if (!result) {\r\n return null\r\n }\r\n var [year, month, date, hours, minutes, seconds, isUtc] = this._createDateTuple(result);\r\n if (isUtc) {\r\n return new Date(Date.UTC(year, month, date, hours, minutes, seconds))\r\n }\r\n return new Date(year, month, date, hours, minutes, seconds)\r\n }\r\n _dispose() {\r\n if (this.rRuleSet) {\r\n delete this.rRuleSet;\r\n this.rRuleSet = null\r\n }\r\n if (this.rRule) {\r\n delete this.rRule;\r\n this.rRule = null\r\n }\r\n }\r\n _getTimeZoneOffset() {\r\n return (new Date).getTimezoneOffset()\r\n }\r\n _initializeRRule(options, startDateUtc, until) {\r\n var ruleOptions = RRule.parseString(options.rule);\r\n var {\r\n firstDayOfWeek: firstDayOfWeek\r\n } = options;\r\n ruleOptions.dtstart = startDateUtc;\r\n if (!ruleOptions.wkst && firstDayOfWeek) {\r\n ruleOptions.wkst = [6, 0, 1, 2, 3, 4, 5][firstDayOfWeek]\r\n }\r\n if (until) {\r\n ruleOptions.until = timeZoneUtils.setOffsetsToDate(until, [-timeZoneUtils.getClientTimezoneOffset(until), options.appointmentTimezoneOffset])\r\n }\r\n this._createRRule(ruleOptions);\r\n if (options.exception) {\r\n var exceptionStrings = options.exception;\r\n var exceptionDates = exceptionStrings.split(\",\").map(rule => this.getDateByAsciiString(rule));\r\n exceptionDates.forEach(date => {\r\n if (options.getPostProcessedException) {\r\n date = options.getPostProcessedException(date)\r\n }\r\n var utcDate = timeZoneUtils.setOffsetsToDate(date, [-timeZoneUtils.getClientTimezoneOffset(date), options.appointmentTimezoneOffset]);\r\n this.rRuleSet.exdate(utcDate)\r\n })\r\n }\r\n }\r\n _createRRule(ruleOptions) {\r\n this._dispose();\r\n this.rRuleSet = new RRuleSet;\r\n this.rRule = new RRule(ruleOptions);\r\n this.rRuleSet.rrule(this.rRule)\r\n }\r\n _parseRecurrenceRule(recurrence) {\r\n var ruleObject = {};\r\n var ruleParts = recurrence.split(\";\");\r\n for (var i = 0, len = ruleParts.length; i < len; i++) {\r\n var rule = ruleParts[i].split(\"=\");\r\n var ruleName = rule[0].toLowerCase();\r\n var ruleValue = rule[1];\r\n ruleObject[ruleName] = ruleValue\r\n }\r\n var count = parseInt(ruleObject.count);\r\n if (!isNaN(count)) {\r\n ruleObject.count = count\r\n }\r\n if (ruleObject.interval) {\r\n var interval = parseInt(ruleObject.interval);\r\n if (!isNaN(interval)) {\r\n ruleObject.interval = interval\r\n }\r\n } else {\r\n ruleObject.interval = 1\r\n }\r\n if (ruleObject.freq && ruleObject.until) {\r\n ruleObject.until = this.getDateByAsciiString(ruleObject.until)\r\n }\r\n return ruleObject\r\n }\r\n _createDateTuple(parseResult) {\r\n var isUtc = void 0 !== parseResult[8];\r\n parseResult.shift();\r\n if (void 0 === parseResult[3]) {\r\n parseResult.splice(3)\r\n } else {\r\n parseResult.splice(3, 1);\r\n parseResult.splice(6)\r\n }\r\n parseResult[1]--;\r\n parseResult.unshift(null);\r\n return [parseInt(parseResult[1]), parseInt(parseResult[2]), parseInt(parseResult[3]), parseInt(parseResult[4]) || 0, parseInt(parseResult[5]) || 0, parseInt(parseResult[6]) || 0, isUtc]\r\n }\r\n}\r\nclass RecurrenceValidator {\r\n validateRRule(rule, recurrence) {\r\n if (this._brokenRuleNameExists(rule) || !freqNames.includes(rule.freq) || this._wrongCountRule(rule) || this._wrongIntervalRule(rule) || this._wrongDayOfWeek(rule) || this._wrongByMonthDayRule(rule) || this._wrongByMonth(rule) || this._wrongUntilRule(rule)) {\r\n this._logBrokenRule(recurrence);\r\n return false\r\n }\r\n return true\r\n }\r\n _wrongUntilRule(rule) {\r\n var wrongUntil = false;\r\n var {\r\n until: until\r\n } = rule;\r\n if (void 0 !== until && !(until instanceof Date)) {\r\n wrongUntil = true\r\n }\r\n return wrongUntil\r\n }\r\n _wrongCountRule(rule) {\r\n var wrongCount = false;\r\n var {\r\n count: count\r\n } = rule;\r\n if (count && \"string\" === typeof count) {\r\n wrongCount = true\r\n }\r\n return wrongCount\r\n }\r\n _wrongByMonthDayRule(rule) {\r\n var wrongByMonthDay = false;\r\n var byMonthDay = rule.bymonthday;\r\n if (byMonthDay && isNaN(parseInt(byMonthDay))) {\r\n wrongByMonthDay = true\r\n }\r\n return wrongByMonthDay\r\n }\r\n _wrongByMonth(rule) {\r\n var wrongByMonth = false;\r\n var byMonth = rule.bymonth;\r\n if (byMonth && isNaN(parseInt(byMonth))) {\r\n wrongByMonth = true\r\n }\r\n return wrongByMonth\r\n }\r\n _wrongIntervalRule(rule) {\r\n var wrongInterval = false;\r\n var {\r\n interval: interval\r\n } = rule;\r\n if (interval && \"string\" === typeof interval) {\r\n wrongInterval = true\r\n }\r\n return wrongInterval\r\n }\r\n _wrongDayOfWeek(rule) {\r\n var byDay = rule.byday;\r\n var daysByRule = getRecurrenceProcessor().daysFromByDayRule(rule);\r\n var brokenDaysExist = false;\r\n if (\"\" === byDay) {\r\n brokenDaysExist = true\r\n }\r\n each(daysByRule, (_, day) => {\r\n if (!Object.prototype.hasOwnProperty.call(days, day)) {\r\n brokenDaysExist = true;\r\n return false\r\n }\r\n return\r\n });\r\n return brokenDaysExist\r\n }\r\n _brokenRuleNameExists(rule) {\r\n var brokenRuleExists = false;\r\n each(rule, ruleName => {\r\n if (!ruleNames.includes(ruleName)) {\r\n brokenRuleExists = true;\r\n return false\r\n }\r\n return\r\n });\r\n return brokenRuleExists\r\n }\r\n _logBrokenRule(recurrence) {\r\n if (!loggedWarnings.includes(recurrence)) {\r\n errors.log(\"W0006\", recurrence);\r\n loggedWarnings.push(recurrence)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_appointment_adapter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"../../core/utils/object\";\r\nimport errors from \"../../ui/widget/ui.errors\";\r\nimport {\r\n ExpressionUtils\r\n} from \"./m_expression_utils\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"./m_recurrence\";\r\nvar PROPERTY_NAMES = {\r\n startDate: \"startDate\",\r\n endDate: \"endDate\",\r\n allDay: \"allDay\",\r\n text: \"text\",\r\n description: \"description\",\r\n startDateTimeZone: \"startDateTimeZone\",\r\n endDateTimeZone: \"endDateTimeZone\",\r\n recurrenceRule: \"recurrenceRule\",\r\n recurrenceException: \"recurrenceException\",\r\n disabled: \"disabled\"\r\n};\r\nclass AppointmentAdapter {\r\n constructor(rawAppointment, dataAccessors, timeZoneCalculator, options) {\r\n this.rawAppointment = rawAppointment;\r\n this.dataAccessors = dataAccessors;\r\n this.timeZoneCalculator = timeZoneCalculator;\r\n this.options = options\r\n }\r\n get duration() {\r\n return this.endDate ? this.endDate - this.startDate : 0\r\n }\r\n get startDate() {\r\n var result = this.getField(PROPERTY_NAMES.startDate);\r\n return void 0 === result ? result : new Date(result)\r\n }\r\n set startDate(value) {\r\n this.setField(PROPERTY_NAMES.startDate, value)\r\n }\r\n get endDate() {\r\n var result = this.getField(PROPERTY_NAMES.endDate);\r\n return void 0 === result ? result : new Date(result)\r\n }\r\n set endDate(value) {\r\n this.setField(PROPERTY_NAMES.endDate, value)\r\n }\r\n get allDay() {\r\n return this.getField(PROPERTY_NAMES.allDay)\r\n }\r\n set allDay(value) {\r\n this.setField(PROPERTY_NAMES.allDay, value)\r\n }\r\n get text() {\r\n return this.getField(PROPERTY_NAMES.text)\r\n }\r\n set text(value) {\r\n this.setField(PROPERTY_NAMES.text, value)\r\n }\r\n get description() {\r\n return this.getField(PROPERTY_NAMES.description)\r\n }\r\n set description(value) {\r\n this.setField(PROPERTY_NAMES.description, value)\r\n }\r\n get startDateTimeZone() {\r\n return this.getField(PROPERTY_NAMES.startDateTimeZone)\r\n }\r\n get endDateTimeZone() {\r\n return this.getField(PROPERTY_NAMES.endDateTimeZone)\r\n }\r\n get recurrenceRule() {\r\n return this.getField(PROPERTY_NAMES.recurrenceRule)\r\n }\r\n set recurrenceRule(value) {\r\n this.setField(PROPERTY_NAMES.recurrenceRule, value)\r\n }\r\n get recurrenceException() {\r\n return this.getField(PROPERTY_NAMES.recurrenceException)\r\n }\r\n set recurrenceException(value) {\r\n this.setField(PROPERTY_NAMES.recurrenceException, value)\r\n }\r\n get disabled() {\r\n return !!this.getField(PROPERTY_NAMES.disabled)\r\n }\r\n get isRecurrent() {\r\n return getRecurrenceProcessor().isValidRecurrenceRule(this.recurrenceRule)\r\n }\r\n getField(property) {\r\n return ExpressionUtils.getField(this.dataAccessors, property, this.rawAppointment)\r\n }\r\n setField(property, value) {\r\n return ExpressionUtils.setField(this.dataAccessors, property, this.rawAppointment, value)\r\n }\r\n calculateStartDate(pathTimeZoneConversion) {\r\n if (!this.startDate || isNaN(this.startDate.getTime())) {\r\n throw errors.Error(\"E1032\", this.text)\r\n }\r\n return this.calculateDate(this.startDate, this.startDateTimeZone, pathTimeZoneConversion)\r\n }\r\n calculateEndDate(pathTimeZoneConversion) {\r\n return this.calculateDate(this.endDate, this.endDateTimeZone, pathTimeZoneConversion)\r\n }\r\n calculateDate(date, appointmentTimeZone, pathTimeZoneConversion) {\r\n if (!date) {\r\n return\r\n }\r\n return this.timeZoneCalculator.createDate(date, {\r\n appointmentTimeZone: appointmentTimeZone,\r\n path: pathTimeZoneConversion\r\n })\r\n }\r\n clone() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : void 0;\r\n var result = new AppointmentAdapter(deepExtendArraySafe({}, this.rawAppointment), this.dataAccessors, this.timeZoneCalculator, options);\r\n if (null === options || void 0 === options ? void 0 : options.pathTimeZone) {\r\n result.startDate = result.calculateStartDate(options.pathTimeZone);\r\n result.endDate = result.calculateEndDate(options.pathTimeZone)\r\n }\r\n return result\r\n }\r\n source() {\r\n var serializeDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n if (serializeDate) {\r\n var clonedAdapter = this.clone();\r\n clonedAdapter.startDate = this.startDate;\r\n clonedAdapter.endDate = this.endDate;\r\n return clonedAdapter.source()\r\n }\r\n return extend({}, this.rawAppointment)\r\n }\r\n}\r\nexport default AppointmentAdapter;\r\nexport var createAppointmentAdapter = (rawAppointment, dataAccessors, timeZoneCalculator, options) => new AppointmentAdapter(rawAppointment, dataAccessors, timeZoneCalculator, options);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/utils/recurrence/excludeFromRecurrence.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../../../../../__internal/scheduler/m_appointment_adapter\";\r\nimport dateSerialization from \"../../../../../core/utils/date_serialization\";\r\nvar FULL_DATE_FORMAT = \"yyyyMMddTHHmmss\";\r\nvar UTC_FULL_DATE_FORMAT = \"\".concat(FULL_DATE_FORMAT, \"Z\");\r\nvar getSerializedDate = (date, startDate, isAllDay) => {\r\n if (isAllDay) {\r\n date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds())\r\n }\r\n return dateSerialization.serializeDate(date, UTC_FULL_DATE_FORMAT)\r\n};\r\nvar createRecurrenceException = (appointmentAdapter, exceptionDate) => {\r\n var result = [];\r\n if (appointmentAdapter.recurrenceException) {\r\n result.push(appointmentAdapter.recurrenceException)\r\n }\r\n result.push(getSerializedDate(exceptionDate, appointmentAdapter.startDate, appointmentAdapter.allDay));\r\n return result.join()\r\n};\r\nexport var excludeFromRecurrence = (appointment, exceptionDate, dataAccessors, timeZoneCalculator) => {\r\n var appointmentAdapter = createAppointmentAdapter(_extends({}, appointment), dataAccessors, timeZoneCalculator);\r\n appointmentAdapter.recurrenceException = createRecurrenceException(appointmentAdapter, exceptionDate);\r\n return appointmentAdapter\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_classes.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var FIXED_CONTAINER_CLASS = \"dx-scheduler-fixed-appointments\";\r\nexport var REDUCED_APPOINTMENT_CLASS = \"dx-scheduler-appointment-reduced\";\r\nexport var REDUCED_APPOINTMENT_ICON = \"dx-scheduler-appointment-reduced-icon\";\r\nexport var RECURRENCE_APPOINTMENT_CLASS = \"dx-scheduler-appointment-recurrence\";\r\nexport var EMPTY_APPOINTMENT_CLASS = \"dx-scheduler-appointment-empty\";\r\nexport var ALL_DAY_APPOINTMENT_CLASS = \"dx-scheduler-all-day-appointment\";\r\nexport var REDUCED_APPOINTMENT_PARTS_CLASSES = {\r\n head: \"dx-scheduler-appointment-head\",\r\n body: \"dx-scheduler-appointment-body\",\r\n tail: \"dx-scheduler-appointment-tail\"\r\n};\r\nexport var DIRECTION_APPOINTMENT_CLASSES = {\r\n horizontal: \"dx-scheduler-appointment-horizontal\",\r\n vertical: \"dx-scheduler-appointment-vertical\"\r\n};\r\nexport var APPOINTMENT_DRAG_SOURCE_CLASS = \"dx-scheduler-appointment-drag-source\";\r\nexport var APPOINTMENT_ITEM_CLASS = \"dx-scheduler-appointment\";\r\nexport var APPOINTMENT_CONTENT_CLASSES = {\r\n APPOINTMENT_CONTENT_DETAILS: \"dx-scheduler-appointment-content-details\",\r\n RECURRING_ICON: \"dx-scheduler-appointment-recurrence-icon\",\r\n APPOINTMENT_TITLE: \"dx-scheduler-appointment-title\",\r\n APPOINTMENT_DATE: \"dx-scheduler-appointment-content-date\",\r\n ALL_DAY_CONTENT: \"dx-scheduler-appointment-content-allday\",\r\n ITEM: \"dx-scheduler-appointment\",\r\n AGENDA_MARKER: \"dx-scheduler-agenda-appointment-marker\",\r\n AGENDA_RESOURCE_LIST: \"dx-scheduler-appointment-resource-list\",\r\n AGENDA_RESOURCE_LIST_ITEM: \"dx-scheduler-appointment-resource-item\",\r\n AGENDA_RESOURCE_LIST_ITEM_VALUE: \"dx-scheduler-appointment-resource-item-value\"\r\n};\r\nexport var AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS = \"dx-scheduler-last-in-date-agenda-appointment\";\r\nexport var HEADER_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-header-panel-current-time-cell\";\r\nexport var VIRTUAL_CELL_CLASS = \"dx-scheduler-virtual-cell\";\r\nexport var TIME_PANEL_CLASS = \"dx-scheduler-time-panel\";\r\nexport var DATE_TABLE_CLASS = \"dx-scheduler-date-table\";\r\nexport var DATE_TABLE_ROW_CLASS = \"dx-scheduler-date-table-row\";\r\nexport var GROUP_ROW_CLASS = \"dx-scheduler-group-row\";\r\nexport var GROUP_HEADER_CONTENT_CLASS = \"dx-scheduler-group-header-content\";\r\nexport var LAST_GROUP_CELL_CLASS = \"dx-scheduler-last-group-cell\";\r\nexport var FIRST_GROUP_CELL_CLASS = \"dx-scheduler-first-group-cell\";\r\nexport var VERTICAL_GROUP_COUNT_CLASSES = [\"dx-scheduler-group-column-count-one\", \"dx-scheduler-group-column-count-two\", \"dx-scheduler-group-column-count-three\"];\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_constants.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nexport var LIST_ITEM_CLASS = \"dx-list-item\";\r\nexport var APPOINTMENT_SETTINGS_KEY = \"dxAppointmentSettings\";\r\nexport var HORIZONTAL_GROUP_ORIENTATION = \"horizontal\";\r\nexport var VIEWS = {\r\n DAY: \"day\",\r\n WEEK: \"week\",\r\n WORK_WEEK: \"workWeek\",\r\n MONTH: \"month\",\r\n TIMELINE_DAY: \"timelineDay\",\r\n TIMELINE_WEEK: \"timelineWeek\",\r\n TIMELINE_WORK_WEEK: \"timelineWorkWeek\",\r\n TIMELINE_MONTH: \"timelineMonth\",\r\n AGENDA: \"agenda\"\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/array.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"./type\";\r\nimport {\r\n orderEach\r\n} from \"./object\";\r\nimport config from \"../config\";\r\n\r\nfunction createOccurrenceMap(array) {\r\n return array.reduce((map, value) => {\r\n var _map$get;\r\n var count = (null !== (_map$get = map.get(value)) && void 0 !== _map$get ? _map$get : 0) + 1;\r\n map.set(value, count);\r\n return map\r\n }, new Map)\r\n}\r\nexport var wrapToArray = function(item) {\r\n return Array.isArray(item) ? item : [item]\r\n};\r\nexport var getUniqueValues = function(values) {\r\n return [...new Set(values)]\r\n};\r\nexport var getIntersection = function(firstArray, secondArray) {\r\n var toRemoveMap = createOccurrenceMap(secondArray);\r\n return firstArray.filter(value => {\r\n var occurrencesCount = toRemoveMap.get(value);\r\n occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1);\r\n return occurrencesCount\r\n })\r\n};\r\nexport var removeDuplicates = function() {\r\n var from = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n var toRemove = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [];\r\n var toRemoveMap = createOccurrenceMap(toRemove);\r\n return from.filter(value => {\r\n var occurrencesCount = toRemoveMap.get(value);\r\n occurrencesCount && toRemoveMap.set(value, occurrencesCount - 1);\r\n return !occurrencesCount\r\n })\r\n};\r\nexport var normalizeIndexes = function(items, indexPropName, currentItem, needIndexCallback) {\r\n var indexedItems = {};\r\n var {\r\n useLegacyVisibleIndex: useLegacyVisibleIndex\r\n } = config();\r\n var currentIndex = 0;\r\n var shouldUpdateIndex = item => !isDefined(item[indexPropName]) && (!needIndexCallback || needIndexCallback(item));\r\n items.forEach(item => {\r\n var index = item[indexPropName];\r\n if (index >= 0) {\r\n indexedItems[index] = indexedItems[index] || [];\r\n if (item === currentItem) {\r\n indexedItems[index].unshift(item)\r\n } else {\r\n indexedItems[index].push(item)\r\n }\r\n } else {\r\n item[indexPropName] = void 0\r\n }\r\n });\r\n if (!useLegacyVisibleIndex) {\r\n items.forEach(item => {\r\n if (shouldUpdateIndex(item)) {\r\n while (indexedItems[currentIndex]) {\r\n currentIndex++\r\n }\r\n indexedItems[currentIndex] = [item];\r\n currentIndex++\r\n }\r\n })\r\n }\r\n currentIndex = 0;\r\n orderEach(indexedItems, (function(index, items) {\r\n items.forEach(item => {\r\n if (index >= 0) {\r\n item[indexPropName] = currentIndex++\r\n }\r\n })\r\n }));\r\n if (useLegacyVisibleIndex) {\r\n items.forEach(item => {\r\n if (shouldUpdateIndex(item)) {\r\n item[indexPropName] = currentIndex++\r\n }\r\n })\r\n }\r\n};\r\nexport var groupBy = (array, getGroupName) => array.reduce((groupedResult, item) => {\r\n var _groupedResult$groupN;\r\n var groupName = getGroupName(item);\r\n groupedResult[groupName] = null !== (_groupedResult$groupN = groupedResult[groupName]) && void 0 !== _groupedResult$groupN ? _groupedResult$groupN : [];\r\n groupedResult[groupName].push(item);\r\n return groupedResult\r\n}, {});\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/resources/hasResourceValue.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../../core/utils/type\";\r\nimport {\r\n equalByValue\r\n} from \"../../../../core/utils/common\";\r\nexport var hasResourceValue = (resourceValues, itemValue) => isDefined(resourceValues.find(value => equalByValue(value, itemValue)));\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/resources/m_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n wrapToArray\r\n} from \"../../../core/utils/array\";\r\nimport {\r\n equalByValue\r\n} from \"../../../core/utils/common\";\r\nimport {\r\n compileGetter,\r\n compileSetter\r\n} from \"../../../core/utils/data\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"../../../core/utils/object\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n DataSource\r\n} from \"../../../data/data_source/data_source\";\r\nimport {\r\n normalizeDataSourceOptions\r\n} from \"../../../data/data_source/utils\";\r\nimport {\r\n hasResourceValue\r\n} from \"../../../renovation/ui/scheduler/resources/hasResourceValue\";\r\nexport var getValueExpr = resource => resource.valueExpr || \"id\";\r\nexport var getDisplayExpr = resource => resource.displayExpr || \"text\";\r\nexport var getFieldExpr = resource => resource.fieldExpr || resource.field;\r\nexport var getWrappedDataSource = dataSource => {\r\n if (dataSource instanceof DataSource) {\r\n return dataSource\r\n }\r\n var result = _extends(_extends({}, normalizeDataSourceOptions(dataSource)), {\r\n pageSize: 0\r\n });\r\n if (!Array.isArray(dataSource)) {\r\n result.filter = dataSource.filter\r\n }\r\n return new DataSource(result)\r\n};\r\nexport var createResourcesTree = groups => {\r\n var leafIndex = 0;\r\n var make = (group, groupIndex, result, parent) => {\r\n var _a;\r\n result = result || [];\r\n for (var itemIndex = 0; itemIndex < group.items.length; itemIndex++) {\r\n var currentGroupItem = group.items[itemIndex];\r\n var resultItem = {\r\n name: group.name,\r\n value: currentGroupItem.id,\r\n title: currentGroupItem.text,\r\n data: null === (_a = group.data) || void 0 === _a ? void 0 : _a[itemIndex],\r\n children: [],\r\n parent: parent || null\r\n };\r\n var nextGroupIndex = groupIndex + 1;\r\n if (groups[nextGroupIndex]) {\r\n make(groups[nextGroupIndex], nextGroupIndex, resultItem.children, resultItem)\r\n }\r\n if (!resultItem.children.length) {\r\n resultItem.leafIndex = leafIndex;\r\n leafIndex++\r\n }\r\n result.push(resultItem)\r\n }\r\n return result\r\n };\r\n return make(groups[0], 0)\r\n};\r\nexport var getPathToLeaf = (leafIndex, groups) => {\r\n var tree = createResourcesTree(groups);\r\n var findLeafByIndex = (data, index) => {\r\n for (var i = 0; i < data.length; i++) {\r\n if (data[i].leafIndex === index) {\r\n return data[i]\r\n }\r\n var _leaf = findLeafByIndex(data[i].children, index);\r\n if (_leaf) {\r\n return _leaf\r\n }\r\n }\r\n };\r\n var makeBranch = (leaf, result) => {\r\n result = result || [];\r\n result.push(leaf.value);\r\n if (leaf.parent) {\r\n makeBranch(leaf.parent, result)\r\n }\r\n return result\r\n };\r\n var leaf = findLeafByIndex(tree, leafIndex);\r\n return makeBranch(leaf).reverse()\r\n};\r\nexport var getCellGroups = (groupIndex, groups) => {\r\n var result = [];\r\n if (getGroupCount(groups)) {\r\n if (groupIndex < 0) {\r\n return\r\n }\r\n var path = getPathToLeaf(groupIndex, groups);\r\n for (var i = 0; i < groups.length; i++) {\r\n result.push({\r\n name: groups[i].name,\r\n id: path[i]\r\n })\r\n }\r\n }\r\n return result\r\n};\r\nexport var getGroupCount = groups => {\r\n var result = 0;\r\n for (var i = 0, len = groups.length; i < len; i++) {\r\n if (!i) {\r\n result = groups[i].items.length\r\n } else {\r\n result *= groups[i].items.length\r\n }\r\n }\r\n return result\r\n};\r\nexport var getGroupsObjectFromGroupsArray = groupsArray => groupsArray.reduce((currentGroups, _ref) => {\r\n var {\r\n name: name,\r\n id: id\r\n } = _ref;\r\n return _extends(_extends({}, currentGroups), {\r\n [name]: id\r\n })\r\n}, {});\r\nexport var getAllGroups = groups => {\r\n var groupCount = getGroupCount(groups);\r\n return [...new Array(groupCount)].map((_, groupIndex) => {\r\n var groupsArray = getCellGroups(groupIndex, groups);\r\n return getGroupsObjectFromGroupsArray(groupsArray)\r\n })\r\n};\r\nexport var getResourceByField = (fieldName, loadedResources) => {\r\n for (var i = 0; i < loadedResources.length; i++) {\r\n var resource = loadedResources[i];\r\n if (resource.name === fieldName) {\r\n return resource.data\r\n }\r\n }\r\n return []\r\n};\r\nexport var createResourceEditorModel = (resources, loadedResources) => resources.map(resource => {\r\n var dataField = getFieldExpr(resource);\r\n var dataSource = getResourceByField(dataField, loadedResources);\r\n return {\r\n editorOptions: {\r\n dataSource: dataSource.length ? dataSource : getWrappedDataSource(resource.dataSource),\r\n displayExpr: getDisplayExpr(resource),\r\n valueExpr: getValueExpr(resource)\r\n },\r\n dataField: dataField,\r\n editorType: resource.allowMultiple ? \"dxTagBox\" : \"dxSelectBox\",\r\n label: {\r\n text: resource.label || dataField\r\n }\r\n }\r\n});\r\nexport var isResourceMultiple = (resources, resourceField) => {\r\n var resource = resources.find(resource => {\r\n var field = getFieldExpr(resource);\r\n return field === resourceField\r\n });\r\n return !!(null === resource || void 0 === resource ? void 0 : resource.allowMultiple)\r\n};\r\nexport var filterResources = (resources, fields) => resources.filter(resource => {\r\n var field = getFieldExpr(resource);\r\n return fields.indexOf(field) > -1\r\n});\r\nexport var getPaintedResources = (resources, groups) => {\r\n var newGroups = groups || [];\r\n var result = resources.find(resource => resource.useColorAsDefault);\r\n if (result) {\r\n return result\r\n }\r\n var newResources = newGroups.length ? filterResources(resources, newGroups) : resources;\r\n return newResources[newResources.length - 1]\r\n};\r\nexport var getOrLoadResourceItem = (resources, resourceLoaderMap, field, value) => {\r\n var result = new Deferred;\r\n resources.filter(resource => getFieldExpr(resource) === field && isDefined(resource.dataSource)).forEach(resource => {\r\n var wrappedDataSource = getWrappedDataSource(resource.dataSource);\r\n var valueExpr = getValueExpr(resource);\r\n if (!resourceLoaderMap.has(field)) {\r\n resourceLoaderMap.set(field, wrappedDataSource.load())\r\n }\r\n resourceLoaderMap.get(field).done(data => {\r\n var getter = compileGetter(valueExpr);\r\n var filteredData = data.filter(resource => equalByValue(getter(resource), value));\r\n result.resolve(filteredData[0])\r\n }).fail(() => {\r\n resourceLoaderMap.delete(field);\r\n result.reject()\r\n })\r\n });\r\n return result.promise()\r\n};\r\nexport var getDataAccessors = (dataAccessors, fieldName, type) => {\r\n var actions = dataAccessors[type];\r\n return actions[fieldName]\r\n};\r\nexport var groupAppointmentsByResources = function(config, appointments) {\r\n var groups = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [];\r\n var result = {\r\n 0: appointments\r\n };\r\n if (groups.length && config.loadedResources.length) {\r\n result = groupAppointmentsByResourcesCore(config, appointments, config.loadedResources)\r\n }\r\n var totalResourceCount = 0;\r\n config.loadedResources.forEach((resource, index) => {\r\n if (!index) {\r\n totalResourceCount = resource.items.length\r\n } else {\r\n totalResourceCount *= resource.items.length\r\n }\r\n });\r\n for (var index = 0; index < totalResourceCount; index++) {\r\n var key = index.toString();\r\n if (result[key]) {\r\n continue\r\n }\r\n result[key] = []\r\n }\r\n return result\r\n};\r\nexport var groupAppointmentsByResourcesCore = (config, appointments, resources) => {\r\n var tree = createResourcesTree(resources);\r\n var result = {};\r\n appointments.forEach(appointment => {\r\n var treeLeaves = getResourceTreeLeaves((field, action) => getDataAccessors(config.dataAccessors, field, action), tree, appointment);\r\n for (var i = 0; i < treeLeaves.length; i++) {\r\n if (!result[treeLeaves[i]]) {\r\n result[treeLeaves[i]] = []\r\n }\r\n result[treeLeaves[i]].push(deepExtendArraySafe({}, appointment, true))\r\n }\r\n });\r\n return result\r\n};\r\nexport var getResourceTreeLeaves = (getDataAccessors, tree, rawAppointment, result) => {\r\n result = result || [];\r\n for (var i = 0; i < tree.length; i++) {\r\n if (!hasGroupItem(getDataAccessors, rawAppointment, tree[i].name, tree[i].value)) {\r\n continue\r\n }\r\n if (isDefined(tree[i].leafIndex)) {\r\n result.push(tree[i].leafIndex)\r\n }\r\n if (tree[i].children) {\r\n getResourceTreeLeaves(getDataAccessors, tree[i].children, rawAppointment, result)\r\n }\r\n }\r\n return result\r\n};\r\nvar hasGroupItem = (getDataAccessors, rawAppointment, groupName, itemValue) => {\r\n var resourceValue = getDataAccessors(groupName, \"getter\")(rawAppointment);\r\n return hasResourceValue(wrapToArray(resourceValue), itemValue)\r\n};\r\nexport var createReducedResourcesTree = (loadedResources, getDataAccessors, appointments) => {\r\n var tree = createResourcesTree(loadedResources);\r\n return reduceResourcesTree(getDataAccessors, tree, appointments)\r\n};\r\nexport var reduceResourcesTree = (getDataAccessors, tree, existingAppointments, _result) => {\r\n _result = _result ? _result.children : [];\r\n tree.forEach((node, index) => {\r\n var ok = false;\r\n var resourceName = node.name;\r\n var resourceValue = node.value;\r\n var resourceTitle = node.title;\r\n var resourceData = node.data;\r\n var resourceGetter = getDataAccessors(resourceName, \"getter\");\r\n existingAppointments.forEach(appointment => {\r\n if (!ok) {\r\n var resourceFromAppointment = resourceGetter(appointment);\r\n if (Array.isArray(resourceFromAppointment)) {\r\n if (resourceFromAppointment.includes(resourceValue)) {\r\n _result.push({\r\n name: resourceName,\r\n value: resourceValue,\r\n title: resourceTitle,\r\n data: resourceData,\r\n children: []\r\n });\r\n ok = true\r\n }\r\n } else if (resourceFromAppointment === resourceValue) {\r\n _result.push({\r\n name: resourceName,\r\n value: resourceValue,\r\n title: resourceTitle,\r\n data: resourceData,\r\n children: []\r\n });\r\n ok = true\r\n }\r\n }\r\n });\r\n if (ok && node.children && node.children.length) {\r\n reduceResourcesTree(getDataAccessors, node.children, existingAppointments, _result[index])\r\n }\r\n });\r\n return _result\r\n};\r\nexport var getResourcesDataByGroups = (loadedResources, resources, groups) => {\r\n if (!groups || !groups.length) {\r\n return loadedResources\r\n }\r\n var fieldNames = {};\r\n var currentResourcesData = [];\r\n groups.forEach(group => {\r\n each(group, (name, value) => {\r\n fieldNames[name] = value\r\n })\r\n });\r\n var resourceData = loadedResources.filter(_ref2 => {\r\n var {\r\n name: name\r\n } = _ref2;\r\n return isDefined(fieldNames[name])\r\n });\r\n resourceData.forEach(data => currentResourcesData.push(extend({}, data)));\r\n currentResourcesData.forEach(currentResource => {\r\n var {\r\n items: items,\r\n data: data,\r\n name: resourceName\r\n } = currentResource;\r\n var resource = filterResources(resources, [resourceName])[0] || {};\r\n var valueExpr = getValueExpr(resource);\r\n var filteredItems = [];\r\n var filteredData = [];\r\n groups.filter(group => isDefined(group[resourceName])).forEach(group => {\r\n each(group, (name, value) => {\r\n if (!filteredItems.filter(item => item.id === value && item[valueExpr] === name).length) {\r\n var currentItems = items.filter(item => item.id === value);\r\n var currentData = data.filter(item => item[valueExpr] === value);\r\n filteredItems.push(...currentItems);\r\n filteredData.push(...currentData)\r\n }\r\n })\r\n });\r\n currentResource.items = filteredItems;\r\n currentResource.data = filteredData\r\n });\r\n return currentResourcesData\r\n};\r\nexport var setResourceToAppointment = (resources, dataAccessors, appointment, groups) => {\r\n var resourcesSetter = dataAccessors.setter;\r\n for (var name in groups) {\r\n var resourceData = groups[name];\r\n var value = isResourceMultiple(resources, name) ? wrapToArray(resourceData) : resourceData;\r\n resourcesSetter[name](appointment, value)\r\n }\r\n};\r\nexport var getResourceColor = (resources, resourceLoaderMap, field, value) => {\r\n var result = new Deferred;\r\n var resource = filterResources(resources, [field])[0] || {};\r\n var colorExpr = resource.colorExpr || \"color\";\r\n var colorGetter = compileGetter(colorExpr);\r\n getOrLoadResourceItem(resources, resourceLoaderMap, field, value).done(resource => result.resolve(colorGetter(resource))).fail(() => result.reject());\r\n return result.promise()\r\n};\r\nexport var getAppointmentColor = (resourceConfig, appointmentConfig) => {\r\n var {\r\n resources: resources,\r\n dataAccessors: dataAccessors,\r\n loadedResources: loadedResources,\r\n resourceLoaderMap: resourceLoaderMap\r\n } = resourceConfig;\r\n var {\r\n groupIndex: groupIndex,\r\n groups: groups,\r\n itemData: itemData\r\n } = appointmentConfig;\r\n var paintedResources = getPaintedResources(resources || [], groups);\r\n if (paintedResources) {\r\n var field = getFieldExpr(paintedResources);\r\n var cellGroups = getCellGroups(groupIndex, loadedResources);\r\n var resourcesDataAccessors = getDataAccessors(dataAccessors, field, \"getter\");\r\n var resourceValues = wrapToArray(resourcesDataAccessors(itemData));\r\n var groupId = resourceValues[0];\r\n for (var i = 0; i < cellGroups.length; i++) {\r\n if (cellGroups[i].name === field) {\r\n groupId = cellGroups[i].id;\r\n break\r\n }\r\n }\r\n return getResourceColor(resources, resourceLoaderMap, field, groupId)\r\n }\r\n return (new Deferred).resolve().promise()\r\n};\r\nexport var createExpressions = function() {\r\n var resources = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n var result = {\r\n getter: {},\r\n setter: {}\r\n };\r\n resources.forEach(resource => {\r\n var field = getFieldExpr(resource);\r\n result.getter[field] = compileGetter(field);\r\n result.setter[field] = compileSetter(field)\r\n });\r\n return result\r\n};\r\nvar getTransformedResourceData = (resource, data) => {\r\n var valueGetter = compileGetter(getValueExpr(resource));\r\n var displayGetter = compileGetter(getDisplayExpr(resource));\r\n return data.map(item => {\r\n var result = {\r\n id: valueGetter(item),\r\n text: displayGetter(item)\r\n };\r\n if (item.color) {\r\n result.color = item.color\r\n }\r\n return result\r\n })\r\n};\r\nexport var loadResources = (groups, resources, resourceLoaderMap) => {\r\n var result = new Deferred;\r\n var deferreds = [];\r\n var newGroups = groups || [];\r\n var newResources = resources || [];\r\n var loadedResources = [];\r\n filterResources(newResources, newGroups).forEach(resource => {\r\n var deferred = new Deferred;\r\n var name = getFieldExpr(resource);\r\n deferreds.push(deferred);\r\n var dataSourcePromise = getWrappedDataSource(resource.dataSource).load();\r\n resourceLoaderMap.set(name, dataSourcePromise);\r\n dataSourcePromise.done(data => {\r\n var items = getTransformedResourceData(resource, data);\r\n deferred.resolve({\r\n name: name,\r\n items: items,\r\n data: data\r\n })\r\n }).fail(() => deferred.reject())\r\n });\r\n if (!deferreds.length) {\r\n return result.resolve(loadedResources)\r\n }\r\n when.apply(null, deferreds).done((function() {\r\n for (var _len = arguments.length, resources = new Array(_len), _key = 0; _key < _len; _key++) {\r\n resources[_key] = arguments[_key]\r\n }\r\n var hasEmpty = resources.some(r => 0 === r.items.length);\r\n loadedResources = hasEmpty ? [] : resources;\r\n result.resolve(loadedResources)\r\n })).fail(() => result.reject());\r\n return result.promise()\r\n};\r\nexport var getNormalizedResources = (rawAppointment, dataAccessors, resources) => {\r\n var result = {};\r\n each(dataAccessors.resources.getter, fieldName => {\r\n var value = dataAccessors.resources.getter[fieldName](rawAppointment);\r\n if (isDefined(value)) {\r\n var isMultiple = isResourceMultiple(resources, fieldName);\r\n var resourceValue = isMultiple ? wrapToArray(value) : value;\r\n result[fieldName] = resourceValue\r\n }\r\n });\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/utils/combine_classes.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function combineClasses(classesMap) {\r\n return Object.keys(classesMap).filter(p => classesMap[p]).join(\" \")\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/consts.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var VERTICAL_GROUP_ORIENTATION = \"vertical\";\r\nexport var HORIZONTAL_GROUP_ORIENTATION = \"horizontal\";\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n HORIZONTAL_GROUP_ORIENTATION,\r\n VERTICAL_GROUP_ORIENTATION\r\n} from \"../consts\";\r\nexport var getKeyByDateAndGroup = (date, groupIndex) => {\r\n var key = date.getTime();\r\n if (!groupIndex) {\r\n return key.toString()\r\n }\r\n return (key + groupIndex).toString()\r\n};\r\nexport var getKeyByGroup = (groupIndex, isVerticalGrouping) => {\r\n if (isVerticalGrouping && !!groupIndex) {\r\n return groupIndex.toString()\r\n }\r\n return \"0\"\r\n};\r\nexport var addToStyles = (options, style) => {\r\n var nextStyle = null !== style && void 0 !== style ? style : {};\r\n var result = _extends({}, nextStyle);\r\n options.forEach(_ref => {\r\n var {\r\n attr: attr,\r\n value: value\r\n } = _ref;\r\n result[attr] = value || nextStyle[attr]\r\n });\r\n return result\r\n};\r\nexport var addHeightToStyle = (value, style) => {\r\n var height = value ? \"\".concat(value, \"px\") : \"\";\r\n return addToStyles([{\r\n attr: \"height\",\r\n value: height\r\n }], style)\r\n};\r\nexport var addWidthToStyle = (value, style) => {\r\n var width = value ? \"\".concat(value, \"px\") : \"\";\r\n return addToStyles([{\r\n attr: \"width\",\r\n value: width\r\n }], style)\r\n};\r\nexport var getGroupCellClasses = function() {\r\n var isFirstGroupCell = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n var isLastGroupCell = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n var className = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : \"\";\r\n return combineClasses({\r\n \"dx-scheduler-first-group-cell\": isFirstGroupCell,\r\n \"dx-scheduler-last-group-cell\": isLastGroupCell,\r\n [className]: true\r\n })\r\n};\r\nexport var getIsGroupedAllDayPanel = (hasAllDayRow, isVerticalGrouping) => hasAllDayRow && isVerticalGrouping;\r\nexport var isVerticalGroupingApplied = (groups, groupOrientation) => groupOrientation === VERTICAL_GROUP_ORIENTATION && !!groups.length;\r\nexport var isHorizontalGroupingApplied = (groups, groupOrientation) => groupOrientation === HORIZONTAL_GROUP_ORIENTATION && !!groups.length;\r\nexport var isGroupingByDate = (groups, groupOrientation, groupByDate) => {\r\n var isHorizontalGrouping = isHorizontalGroupingApplied(groups, groupOrientation);\r\n return groupByDate && isHorizontalGrouping\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/const.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var VIEWS = {\r\n DAY: \"day\",\r\n WEEK: \"week\",\r\n WORK_WEEK: \"workWeek\",\r\n MONTH: \"month\",\r\n TIMELINE_DAY: \"timelineDay\",\r\n TIMELINE_WEEK: \"timelineWeek\",\r\n TIMELINE_WORK_WEEK: \"timelineWorkWeek\",\r\n TIMELINE_MONTH: \"timelineMonth\",\r\n AGENDA: \"agenda\"\r\n};\r\nexport var TIMELINE_VIEWS = {\r\n timelineDay: true,\r\n timelineWeek: true,\r\n timelineWorkWeek: true,\r\n timelineMonth: true\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../../../../../../../ui/widget/ui.errors\";\r\nimport dateUtils from \"../../../../../../../core/utils/date\";\r\nimport {\r\n isDefined\r\n} from \"../../../../../../../core/utils/type\";\r\nimport dateLocalization from \"../../../../../../../localization/date\";\r\nimport timeZoneUtils from \"../../../../../../../__internal/scheduler/m_utils_time_zone\";\r\nimport {\r\n VERTICAL_GROUP_COUNT_CLASSES\r\n} from \"../../../../../../../__internal/scheduler/m_classes\";\r\nimport {\r\n VIEWS\r\n} from \"../../../../../../../__internal/scheduler/m_constants\";\r\nimport {\r\n getGroupCount\r\n} from \"../../../../../../../__internal/scheduler/resources/m_utils\";\r\nimport {\r\n isVerticalGroupingApplied\r\n} from \"../../../../workspaces/utils\";\r\nimport {\r\n TIMELINE_VIEWS\r\n} from \"./const\";\r\nexport var isDateInRange = (date, startDate, endDate, diff) => diff > 0 ? dateUtils.dateInRange(date, startDate, new Date(endDate.getTime() - 1)) : dateUtils.dateInRange(date, endDate, startDate, \"date\");\r\nexport var setOptionHour = (date, optionHour) => {\r\n var nextDate = new Date(date);\r\n if (!isDefined(optionHour)) {\r\n return nextDate\r\n }\r\n nextDate.setHours(optionHour, optionHour % 1 * 60, 0, 0);\r\n return nextDate\r\n};\r\nexport var getViewStartByOptions = (startDate, currentDate, intervalDuration, startViewDate) => {\r\n if (!startDate) {\r\n return new Date(currentDate)\r\n }\r\n var currentStartDate = dateUtils.trimTime(startViewDate);\r\n var diff = currentStartDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n var endDate = new Date(currentStartDate.getTime() + intervalDuration * diff);\r\n while (!isDateInRange(currentDate, currentStartDate, endDate, diff)) {\r\n currentStartDate = endDate;\r\n endDate = new Date(currentStartDate.getTime() + intervalDuration * diff)\r\n }\r\n return diff > 0 ? currentStartDate : endDate\r\n};\r\nexport var getCalculatedFirstDayOfWeek = firstDayOfWeekOption => isDefined(firstDayOfWeekOption) ? firstDayOfWeekOption : dateLocalization.firstDayOfWeekIndex();\r\nexport var calculateViewStartDate = startDateOption => startDateOption;\r\nexport var calculateCellIndex = (rowIndex, columnIndex, rowCount) => columnIndex * rowCount + rowIndex;\r\nexport var getStartViewDateWithoutDST = (startViewDate, startDayHour) => {\r\n var newStartViewDate = timeZoneUtils.getDateWithoutTimezoneChange(startViewDate);\r\n newStartViewDate.setHours(startDayHour);\r\n return newStartViewDate\r\n};\r\nexport var getHeaderCellText = (headerIndex, date, headerCellTextFormat, getDateForHeaderText, additionalOptions) => {\r\n var validDate = getDateForHeaderText(headerIndex, date, additionalOptions);\r\n return dateLocalization.format(validDate, headerCellTextFormat)\r\n};\r\nexport var validateDayHours = (startDayHour, endDayHour) => {\r\n if (startDayHour >= endDayHour) {\r\n throw errors.Error(\"E1058\")\r\n }\r\n};\r\nexport var getStartViewDateTimeOffset = (startViewDate, startDayHour) => {\r\n var validStartDayHour = Math.floor(startDayHour);\r\n var isDSTChange = timeZoneUtils.isTimezoneChangeInDate(startViewDate);\r\n if (isDSTChange && validStartDayHour !== startViewDate.getHours()) {\r\n return dateUtils.dateToMilliseconds(\"hour\")\r\n }\r\n return 0\r\n};\r\nexport var formatWeekday = date => dateLocalization.getDayNames(\"abbreviated\")[date.getDay()];\r\nexport var formatWeekdayAndDay = date => \"\".concat(formatWeekday(date), \" \").concat(dateLocalization.format(date, \"day\"));\r\nexport var getToday = (indicatorTime, timeZoneCalculator) => {\r\n var todayDate = null !== indicatorTime && void 0 !== indicatorTime ? indicatorTime : new Date;\r\n return (null === timeZoneCalculator || void 0 === timeZoneCalculator ? void 0 : timeZoneCalculator.createDate(todayDate, {\r\n path: \"toGrid\"\r\n })) || todayDate\r\n};\r\nexport var getVerticalGroupCountClass = groups => {\r\n switch (null === groups || void 0 === groups ? void 0 : groups.length) {\r\n case 1:\r\n return VERTICAL_GROUP_COUNT_CLASSES[0];\r\n case 2:\r\n return VERTICAL_GROUP_COUNT_CLASSES[1];\r\n case 3:\r\n return VERTICAL_GROUP_COUNT_CLASSES[2];\r\n default:\r\n return\r\n }\r\n};\r\nexport var isDateAndTimeView = viewType => viewType !== VIEWS.TIMELINE_MONTH && viewType !== VIEWS.MONTH;\r\nexport var isTimelineView = viewType => !!TIMELINE_VIEWS[viewType];\r\nexport var getHorizontalGroupCount = (groups, groupOrientation) => {\r\n var groupCount = getGroupCount(groups) || 1;\r\n var isVerticalGrouping = isVerticalGroupingApplied(groups, groupOrientation);\r\n return isVerticalGrouping ? 1 : groupCount\r\n};\r\nexport var calculateIsGroupedAllDayPanel = (groups, groupOrientation, isAllDayPanelVisible) => isVerticalGroupingApplied(groups, groupOrientation) && isAllDayPanelVisible;\r\nexport var calculateDayDuration = (startDayHour, endDayHour) => endDayHour - startDayHour;\r\nexport var isHorizontalView = viewType => {\r\n switch (viewType) {\r\n case VIEWS.TIMELINE_DAY:\r\n case VIEWS.TIMELINE_WEEK:\r\n case VIEWS.TIMELINE_WORK_WEEK:\r\n case VIEWS.TIMELINE_MONTH:\r\n case VIEWS.MONTH:\r\n return true;\r\n default:\r\n return false\r\n }\r\n};\r\nexport var getTotalCellCountByCompleteData = completeData => completeData[completeData.length - 1].length;\r\nexport var getTotalRowCountByCompleteData = completeData => completeData.length;\r\nexport var getDisplayedCellCount = (displayedCellCount, completeData) => null !== displayedCellCount && void 0 !== displayedCellCount ? displayedCellCount : getTotalCellCountByCompleteData(completeData);\r\nexport var getDisplayedRowCount = (displayedRowCount, completeData) => null !== displayedRowCount && void 0 !== displayedRowCount ? displayedRowCount : getTotalRowCountByCompleteData(completeData);\r\nexport var getCellDuration = (viewType, startDayHour, endDayHour, hoursInterval) => {\r\n switch (viewType) {\r\n case \"month\":\r\n return 36e5 * calculateDayDuration(startDayHour, endDayHour);\r\n case \"timelineMonth\":\r\n return dateUtils.dateToMilliseconds(\"day\");\r\n default:\r\n return 36e5 * hoursInterval\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/action.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport {\r\n getWindow\r\n} from \"./utils/window\";\r\nimport {\r\n isPlainObject,\r\n isFunction\r\n} from \"./utils/type\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nexport default class Action {\r\n constructor(action, config) {\r\n config = config || {};\r\n this._action = action;\r\n this._context = config.context || getWindow();\r\n this._beforeExecute = config.beforeExecute;\r\n this._afterExecute = config.afterExecute;\r\n this._component = config.component;\r\n this._validatingTargetName = config.validatingTargetName;\r\n var excludeValidators = this._excludeValidators = {};\r\n if (config.excludeValidators) {\r\n for (var i = 0; i < config.excludeValidators.length; i++) {\r\n excludeValidators[config.excludeValidators[i]] = true\r\n }\r\n }\r\n }\r\n execute() {\r\n var e = {\r\n action: this._action,\r\n args: Array.prototype.slice.call(arguments),\r\n context: this._context,\r\n component: this._component,\r\n validatingTargetName: this._validatingTargetName,\r\n cancel: false,\r\n handled: false\r\n };\r\n var beforeExecute = this._beforeExecute;\r\n var afterExecute = this._afterExecute;\r\n var argsBag = e.args[0] || {};\r\n if (!this._validateAction(e)) {\r\n return\r\n }\r\n null === beforeExecute || void 0 === beforeExecute ? void 0 : beforeExecute.call(this._context, e);\r\n if (e.cancel) {\r\n return\r\n }\r\n var result = this._executeAction(e);\r\n if (argsBag.cancel) {\r\n return\r\n }\r\n null === afterExecute || void 0 === afterExecute ? void 0 : afterExecute.call(this._context, e);\r\n return result\r\n }\r\n _validateAction(e) {\r\n var excludeValidators = this._excludeValidators;\r\n var {\r\n executors: executors\r\n } = Action;\r\n for (var name in executors) {\r\n if (!excludeValidators[name]) {\r\n var _executor$validate;\r\n var executor = executors[name];\r\n null === (_executor$validate = executor.validate) || void 0 === _executor$validate ? void 0 : _executor$validate.call(executor, e);\r\n if (e.cancel) {\r\n return false\r\n }\r\n }\r\n }\r\n return true\r\n }\r\n _executeAction(e) {\r\n var result;\r\n var {\r\n executors: executors\r\n } = Action;\r\n for (var name in executors) {\r\n var _executor$execute;\r\n var executor = executors[name];\r\n null === (_executor$execute = executor.execute) || void 0 === _executor$execute ? void 0 : _executor$execute.call(executor, e);\r\n if (e.handled) {\r\n result = e.result;\r\n break\r\n }\r\n }\r\n return result\r\n }\r\n static registerExecutor(name, executor) {\r\n if (isPlainObject(name)) {\r\n each(name, Action.registerExecutor);\r\n return\r\n }\r\n Action.executors[name] = executor\r\n }\r\n static unregisterExecutor() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n each(args, (function() {\r\n delete Action.executors[this]\r\n }))\r\n }\r\n}\r\nAction.executors = {};\r\nvar createValidatorByTargetElement = condition => e => {\r\n if (!e.args.length) {\r\n return\r\n }\r\n var args = e.args[0];\r\n var element = args[e.validatingTargetName] || args.element;\r\n if (element && condition($(element))) {\r\n e.cancel = true\r\n }\r\n};\r\nAction.registerExecutor({\r\n disabled: {\r\n validate: createValidatorByTargetElement($target => $target.is(\".dx-state-disabled, .dx-state-disabled *\"))\r\n },\r\n readOnly: {\r\n validate: createValidatorByTargetElement($target => $target.is(\".dx-state-readonly, .dx-state-readonly *:not(.dx-state-independent)\"))\r\n },\r\n undefined: {\r\n execute: e => {\r\n if (!e.action) {\r\n e.result = void 0;\r\n e.handled = true\r\n }\r\n }\r\n },\r\n func: {\r\n execute: e => {\r\n if (isFunction(e.action)) {\r\n e.result = e.action.call(e.context, e.args[0]);\r\n e.handled = true\r\n }\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/element.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar strategy = function(element) {\r\n return element && element.get(0)\r\n};\r\nexport function getPublicElement(element) {\r\n return strategy(element)\r\n}\r\nexport function setPublicElementWrapper(newStrategy) {\r\n strategy = newStrategy\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/browser.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n getNavigator\r\n} from \"./window\";\r\nvar navigator = getNavigator();\r\nvar webkitRegExp = /(webkit)[ /]([\\w.]+)/;\r\nvar mozillaRegExp = /(mozilla)(?:.*? rv:([\\w.]+))/;\r\nvar browserFromUA = ua => {\r\n ua = ua.toLowerCase();\r\n var result = {};\r\n var matches = webkitRegExp.exec(ua) || ua.indexOf(\"compatible\") < 0 && mozillaRegExp.exec(ua) || [];\r\n var browserName = matches[1];\r\n var browserVersion = matches[2];\r\n if (\"webkit\" === browserName) {\r\n result.webkit = true;\r\n if (ua.indexOf(\"chrome\") >= 0 || ua.indexOf(\"crios\") >= 0) {\r\n browserName = \"chrome\";\r\n browserVersion = /(?:chrome|crios)\\/(\\d+\\.\\d+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n } else if (ua.indexOf(\"fxios\") >= 0) {\r\n browserName = \"mozilla\";\r\n browserVersion = /fxios\\/(\\d+\\.\\d+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n } else if (ua.indexOf(\"safari\") >= 0 && /version|phantomjs/.test(ua)) {\r\n browserName = \"safari\";\r\n browserVersion = /(?:version|phantomjs)\\/([0-9.]+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n } else {\r\n browserName = \"unknown\";\r\n browserVersion = /applewebkit\\/([0-9.]+)/.exec(ua);\r\n browserVersion = browserVersion && browserVersion[1]\r\n }\r\n }\r\n if (browserName) {\r\n result[browserName] = true;\r\n result.version = browserVersion\r\n }\r\n return result\r\n};\r\nexport default extend({\r\n _fromUA: browserFromUA\r\n}, browserFromUA(navigator.userAgent));\r\n","/**\r\n * DevExtreme (esm/core/utils/version.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function compare(x, y, maxLevel) {\r\n function normalizeArg(value) {\r\n if (\"string\" === typeof value) {\r\n return value.split(\".\")\r\n }\r\n if (\"number\" === typeof value) {\r\n return [value]\r\n }\r\n return value\r\n }\r\n x = normalizeArg(x);\r\n y = normalizeArg(y);\r\n var length = Math.max(x.length, y.length);\r\n if (isFinite(maxLevel)) {\r\n length = Math.min(length, maxLevel)\r\n }\r\n for (var i = 0; i < length; i++) {\r\n var xItem = parseInt(x[i] || 0, 10);\r\n var yItem = parseInt(y[i] || 0, 10);\r\n if (xItem < yItem) {\r\n return -1\r\n }\r\n if (xItem > yItem) {\r\n return 1\r\n }\r\n }\r\n return 0\r\n}\r\n","/**\r\n * DevExtreme (esm/animation/translator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n data as elementData,\r\n removeData\r\n} from \"../core/element_data\";\r\nimport {\r\n type\r\n} from \"../core/utils/type\";\r\nvar TRANSLATOR_DATA_KEY = \"dxTranslator\";\r\nvar TRANSFORM_MATRIX_REGEX = /matrix(3d)?\\((.+?)\\)/;\r\nvar TRANSLATE_REGEX = /translate(?:3d)?\\((.+?)\\)/;\r\nexport var locate = function($element) {\r\n $element = $($element);\r\n var translate = getTranslate($element);\r\n return {\r\n left: translate.x,\r\n top: translate.y\r\n }\r\n};\r\n\r\nfunction isPercentValue(value) {\r\n return \"string\" === type(value) && \"%\" === value[value.length - 1]\r\n}\r\n\r\nfunction cacheTranslate($element, translate) {\r\n if ($element.length) {\r\n elementData($element.get(0), TRANSLATOR_DATA_KEY, translate)\r\n }\r\n}\r\nexport var clearCache = function($element) {\r\n if ($element.length) {\r\n removeData($element.get(0), TRANSLATOR_DATA_KEY)\r\n }\r\n};\r\nexport var getTranslateCss = function(translate) {\r\n translate.x = translate.x || 0;\r\n translate.y = translate.y || 0;\r\n var xValueString = isPercentValue(translate.x) ? translate.x : translate.x + \"px\";\r\n var yValueString = isPercentValue(translate.y) ? translate.y : translate.y + \"px\";\r\n return \"translate(\" + xValueString + \", \" + yValueString + \")\"\r\n};\r\nexport var getTranslate = function($element) {\r\n var result = $element.length ? elementData($element.get(0), TRANSLATOR_DATA_KEY) : null;\r\n if (!result) {\r\n var transformValue = $element.css(\"transform\") || getTranslateCss({\r\n x: 0,\r\n y: 0\r\n });\r\n var matrix = transformValue.match(TRANSFORM_MATRIX_REGEX);\r\n var is3D = matrix && matrix[1];\r\n if (matrix) {\r\n matrix = matrix[2].split(\",\");\r\n if (\"3d\" === is3D) {\r\n matrix = matrix.slice(12, 15)\r\n } else {\r\n matrix.push(0);\r\n matrix = matrix.slice(4, 7)\r\n }\r\n } else {\r\n matrix = [0, 0, 0]\r\n }\r\n result = {\r\n x: parseFloat(matrix[0]),\r\n y: parseFloat(matrix[1]),\r\n z: parseFloat(matrix[2])\r\n };\r\n cacheTranslate($element, result)\r\n }\r\n return result\r\n};\r\nexport var move = function($element, position) {\r\n $element = $($element);\r\n var left = position.left;\r\n var top = position.top;\r\n var translate;\r\n if (void 0 === left) {\r\n translate = getTranslate($element);\r\n translate.y = top || 0\r\n } else if (void 0 === top) {\r\n translate = getTranslate($element);\r\n translate.x = left || 0\r\n } else {\r\n translate = {\r\n x: left || 0,\r\n y: top || 0,\r\n z: 0\r\n };\r\n cacheTranslate($element, translate)\r\n }\r\n $element.css({\r\n transform: getTranslateCss(translate)\r\n });\r\n if (isPercentValue(left) || isPercentValue(top)) {\r\n clearCache($element)\r\n }\r\n};\r\nexport var resetPosition = function($element, finishTransition) {\r\n $element = $($element);\r\n var originalTransition;\r\n var stylesConfig = {\r\n left: 0,\r\n top: 0,\r\n transform: \"none\"\r\n };\r\n if (finishTransition) {\r\n originalTransition = $element.css(\"transition\");\r\n stylesConfig.transition = \"none\"\r\n }\r\n $element.css(stylesConfig);\r\n clearCache($element);\r\n if (finishTransition) {\r\n $element.get(0).offsetHeight;\r\n $element.css(\"transition\", originalTransition)\r\n }\r\n};\r\nexport var parseTranslate = function(translateString) {\r\n var result = translateString.match(TRANSLATE_REGEX);\r\n if (!result || !result[1]) {\r\n return\r\n }\r\n result = result[1].split(\",\");\r\n result = {\r\n x: parseFloat(result[0]),\r\n y: parseFloat(result[1]),\r\n z: parseFloat(result[2])\r\n };\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/events/utils/add_namespace.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../../core/errors\";\r\nvar addNamespace = (eventNames, namespace) => {\r\n if (!namespace) {\r\n throw errors.Error(\"E0017\")\r\n }\r\n if (Array.isArray(eventNames)) {\r\n return eventNames.map(eventName => addNamespace(eventName, namespace)).join(\" \")\r\n }\r\n if (-1 !== eventNames.indexOf(\" \")) {\r\n return addNamespace(eventNames.split(/\\s+/g), namespace)\r\n }\r\n return \"\".concat(eventNames, \".\").concat(namespace)\r\n};\r\nexport default addNamespace;\r\n","/**\r\n * DevExtreme (esm/ui/widget/selectors.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nvar focusableFn = function(element, tabIndex) {\r\n if (!visible(element)) {\r\n return false\r\n }\r\n var nodeName = element.nodeName.toLowerCase();\r\n var isTabIndexNotNaN = !isNaN(tabIndex);\r\n var isDisabled = element.disabled;\r\n var isDefaultFocus = /^(input|select|textarea|button|object|iframe)$/.test(nodeName);\r\n var isHyperlink = \"a\" === nodeName;\r\n var isFocusable;\r\n var isContentEditable = element.isContentEditable;\r\n if (isDefaultFocus || isContentEditable) {\r\n isFocusable = !isDisabled\r\n } else if (isHyperlink) {\r\n isFocusable = element.href || isTabIndexNotNaN\r\n } else {\r\n isFocusable = isTabIndexNotNaN\r\n }\r\n return isFocusable\r\n};\r\n\r\nfunction visible(element) {\r\n var $element = $(element);\r\n return $element.is(\":visible\") && \"hidden\" !== $element.css(\"visibility\") && \"hidden\" !== $element.parents().css(\"visibility\")\r\n}\r\nexport var focusable = function(index, element) {\r\n return focusableFn(element, $(element).attr(\"tabIndex\"))\r\n};\r\nexport var tabbable = function(index, element) {\r\n var tabIndex = $(element).attr(\"tabIndex\");\r\n return (isNaN(tabIndex) || tabIndex >= 0) && focusableFn(element, tabIndex)\r\n};\r\nexport var focused = function($element) {\r\n var element = $($element).get(0);\r\n return domAdapter.getActiveElement(element) === element\r\n};\r\n","/**\r\n * DevExtreme (esm/events/utils/index.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport mappedAddNamespace from \"./add_namespace\";\r\nimport eventsEngine from \"../core/events_engine\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focused\r\n} from \"../../ui/widget/selectors\";\r\nvar KEY_MAP = {\r\n backspace: \"backspace\",\r\n tab: \"tab\",\r\n enter: \"enter\",\r\n escape: \"escape\",\r\n pageup: \"pageUp\",\r\n pagedown: \"pageDown\",\r\n end: \"end\",\r\n home: \"home\",\r\n arrowleft: \"leftArrow\",\r\n arrowup: \"upArrow\",\r\n arrowright: \"rightArrow\",\r\n arrowdown: \"downArrow\",\r\n delete: \"del\",\r\n \" \": \"space\",\r\n f: \"F\",\r\n a: \"A\",\r\n \"*\": \"asterisk\",\r\n \"-\": \"minus\",\r\n alt: \"alt\",\r\n control: \"control\",\r\n shift: \"shift\"\r\n};\r\nvar LEGACY_KEY_CODES = {\r\n 8: \"backspace\",\r\n 9: \"tab\",\r\n 13: \"enter\",\r\n 27: \"escape\",\r\n 33: \"pageUp\",\r\n 34: \"pageDown\",\r\n 35: \"end\",\r\n 36: \"home\",\r\n 37: \"leftArrow\",\r\n 38: \"upArrow\",\r\n 39: \"rightArrow\",\r\n 40: \"downArrow\",\r\n 46: \"del\",\r\n 32: \"space\",\r\n 70: \"F\",\r\n 65: \"A\",\r\n 106: \"asterisk\",\r\n 109: \"minus\",\r\n 189: \"minus\",\r\n 173: \"minus\",\r\n 16: \"shift\",\r\n 17: \"control\",\r\n 18: \"alt\"\r\n};\r\nvar EVENT_SOURCES_REGEX = {\r\n dx: /^dx/i,\r\n mouse: /(mouse|wheel)/i,\r\n touch: /^touch/i,\r\n keyboard: /^key/i,\r\n pointer: /^(ms)?pointer/i\r\n};\r\nvar fixMethod = e => e;\r\nvar copyEvent = originalEvent => fixMethod(eventsEngine.Event(originalEvent, originalEvent), originalEvent);\r\nvar isDxEvent = e => \"dx\" === eventSource(e);\r\nvar isNativeMouseEvent = e => \"mouse\" === eventSource(e);\r\nvar isNativeTouchEvent = e => \"touch\" === eventSource(e);\r\nexport var eventSource = _ref => {\r\n var {\r\n type: type\r\n } = _ref;\r\n var result = \"other\";\r\n each(EVENT_SOURCES_REGEX, (function(key) {\r\n if (this.test(type)) {\r\n result = key;\r\n return false\r\n }\r\n }));\r\n return result\r\n};\r\nexport var isPointerEvent = e => \"pointer\" === eventSource(e);\r\nexport var isMouseEvent = e => isNativeMouseEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && \"mouse\" === e.pointerType;\r\nexport var isDxMouseWheelEvent = e => e && \"dxmousewheel\" === e.type;\r\nexport var isTouchEvent = e => isNativeTouchEvent(e) || (isPointerEvent(e) || isDxEvent(e)) && \"touch\" === e.pointerType;\r\nexport var isKeyboardEvent = e => \"keyboard\" === eventSource(e);\r\nexport var isFakeClickEvent = _ref2 => {\r\n var {\r\n screenX: screenX,\r\n offsetX: offsetX,\r\n pageX: pageX\r\n } = _ref2;\r\n return 0 === screenX && !offsetX && 0 === pageX\r\n};\r\nexport var eventData = _ref3 => {\r\n var {\r\n pageX: pageX,\r\n pageY: pageY,\r\n timeStamp: timeStamp\r\n } = _ref3;\r\n return {\r\n x: pageX,\r\n y: pageY,\r\n time: timeStamp\r\n }\r\n};\r\nexport var eventDelta = (from, to) => ({\r\n x: to.x - from.x,\r\n y: to.y - from.y,\r\n time: to.time - from.time || 1\r\n});\r\nexport var hasTouches = e => {\r\n var {\r\n originalEvent: originalEvent,\r\n pointers: pointers\r\n } = e;\r\n if (isNativeTouchEvent(e)) {\r\n return (originalEvent.touches || []).length\r\n }\r\n if (isDxEvent(e)) {\r\n return (pointers || []).length\r\n }\r\n return 0\r\n};\r\nvar skipEvents = false;\r\nexport var forceSkipEvents = () => skipEvents = true;\r\nexport var stopEventsSkipping = () => skipEvents = false;\r\nexport var needSkipEvent = e => {\r\n if (skipEvents) {\r\n return true\r\n }\r\n var {\r\n target: target\r\n } = e;\r\n var $target = $(target);\r\n var isContentEditable = (null === target || void 0 === target ? void 0 : target.isContentEditable) || (null === target || void 0 === target ? void 0 : target.hasAttribute(\"contenteditable\"));\r\n var touchInEditable = $target.is(\"input, textarea, select\") || isContentEditable;\r\n if (isDxMouseWheelEvent(e)) {\r\n var isTextArea = $target.is(\"textarea\") && $target.hasClass(\"dx-texteditor-input\");\r\n if (isTextArea || isContentEditable) {\r\n return false\r\n }\r\n var isInputFocused = $target.is(\"input[type='number'], textarea, select\") && $target.is(\":focus\");\r\n return isInputFocused\r\n }\r\n if (isMouseEvent(e)) {\r\n return touchInEditable || e.which > 1\r\n }\r\n if (isTouchEvent(e)) {\r\n return touchInEditable && focused($target)\r\n }\r\n};\r\nexport var setEventFixMethod = func => fixMethod = func;\r\nexport var createEvent = (originalEvent, args) => {\r\n var event = copyEvent(originalEvent);\r\n args && extend(event, args);\r\n return event\r\n};\r\nexport var fireEvent = props => {\r\n var {\r\n originalEvent: originalEvent,\r\n delegateTarget: delegateTarget\r\n } = props;\r\n var event = createEvent(originalEvent, props);\r\n eventsEngine.trigger(delegateTarget || event.target, event);\r\n return event\r\n};\r\nexport var normalizeKeyName = _ref4 => {\r\n var {\r\n key: key,\r\n which: which\r\n } = _ref4;\r\n var normalizedKey = KEY_MAP[null === key || void 0 === key ? void 0 : key.toLowerCase()] || key;\r\n var normalizedKeyFromWhich = LEGACY_KEY_CODES[which];\r\n if (normalizedKeyFromWhich && normalizedKey === key) {\r\n return normalizedKeyFromWhich\r\n } else if (!normalizedKey && which) {\r\n return String.fromCharCode(which)\r\n }\r\n return normalizedKey\r\n};\r\nexport var getChar = _ref5 => {\r\n var {\r\n key: key,\r\n which: which\r\n } = _ref5;\r\n return key || String.fromCharCode(which)\r\n};\r\nexport var addNamespace = mappedAddNamespace;\r\nexport var isCommandKeyPressed = _ref6 => {\r\n var {\r\n ctrlKey: ctrlKey,\r\n metaKey: metaKey\r\n } = _ref6;\r\n return ctrlKey || metaKey\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/emitter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isDxMouseWheelEvent,\r\n hasTouches,\r\n fireEvent\r\n} from \"../utils/index\";\r\nvar Emitter = Class.inherit({\r\n ctor: function(element) {\r\n this._$element = $(element);\r\n this._cancelCallback = Callbacks();\r\n this._acceptCallback = Callbacks()\r\n },\r\n getElement: function() {\r\n return this._$element\r\n },\r\n validate: function(e) {\r\n return !isDxMouseWheelEvent(e)\r\n },\r\n validatePointers: function(e) {\r\n return 1 === hasTouches(e)\r\n },\r\n allowInterruptionByMouseWheel: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n extend(this, data)\r\n },\r\n addCancelCallback: function(callback) {\r\n this._cancelCallback.add(callback)\r\n },\r\n removeCancelCallback: function() {\r\n this._cancelCallback.empty()\r\n },\r\n _cancel: function(e) {\r\n this._cancelCallback.fire(this, e)\r\n },\r\n addAcceptCallback: function(callback) {\r\n this._acceptCallback.add(callback)\r\n },\r\n removeAcceptCallback: function() {\r\n this._acceptCallback.empty()\r\n },\r\n _accept: function(e) {\r\n this._acceptCallback.fire(this, e)\r\n },\r\n _requestAccept: function(e) {\r\n this._acceptRequestEvent = e\r\n },\r\n _forgetAccept: function() {\r\n this._accept(this._acceptRequestEvent);\r\n this._acceptRequestEvent = null\r\n },\r\n start: noop,\r\n move: noop,\r\n end: noop,\r\n cancel: noop,\r\n reset: function() {\r\n if (this._acceptRequestEvent) {\r\n this._accept(this._acceptRequestEvent)\r\n }\r\n },\r\n _fireEvent: function(eventName, e, params) {\r\n var eventData = extend({\r\n type: eventName,\r\n originalEvent: e,\r\n target: this._getEmitterTarget(e),\r\n delegateTarget: this.getElement().get(0)\r\n }, params);\r\n e = fireEvent(eventData);\r\n if (e.cancel) {\r\n this._cancel(e)\r\n }\r\n return e\r\n },\r\n _getEmitterTarget: function(e) {\r\n return (this.delegateSelector ? $(e.target).closest(this.delegateSelector) : this.getElement()).get(0)\r\n },\r\n dispose: noop\r\n});\r\nexport default Emitter;\r\n","/**\r\n * DevExtreme (esm/events/gesture/emitter.gesture.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n styleProp\r\n} from \"../../core/utils/style\";\r\nimport callOnce from \"../../core/utils/call_once\";\r\nimport {\r\n resetActiveElement,\r\n clearSelection\r\n} from \"../../core/utils/dom\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nvar ready = readyCallbacks.add;\r\nimport {\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n needSkipEvent,\r\n createEvent,\r\n eventData,\r\n isDxMouseWheelEvent,\r\n eventDelta,\r\n isTouchEvent\r\n} from \"../utils/index\";\r\nimport Emitter from \"../core/emitter\";\r\nvar abs = Math.abs;\r\nvar SLEEP = 0;\r\nvar INITED = 1;\r\nvar STARTED = 2;\r\nvar TOUCH_BOUNDARY = 10;\r\nvar IMMEDIATE_TOUCH_BOUNDARY = 0;\r\nvar IMMEDIATE_TIMEOUT = 180;\r\nvar supportPointerEvents = function() {\r\n return styleProp(\"pointer-events\")\r\n};\r\nvar setGestureCover = callOnce((function() {\r\n var isDesktop = \"desktop\" === devices.real().deviceType;\r\n if (!supportPointerEvents() || !isDesktop) {\r\n return noop\r\n }\r\n var $cover = $(\"
\").addClass(\"dx-gesture-cover\").css(\"pointerEvents\", \"none\");\r\n eventsEngine.subscribeGlobal($cover, \"dxmousewheel\", (function(e) {\r\n e.preventDefault()\r\n }));\r\n ready((function() {\r\n $cover.appendTo(\"body\")\r\n }));\r\n return function(toggle, cursor) {\r\n $cover.css(\"pointerEvents\", toggle ? \"all\" : \"none\");\r\n toggle && $cover.css(\"cursor\", cursor)\r\n }\r\n}));\r\nvar gestureCover = function(toggle, cursor) {\r\n var gestureCoverStrategy = setGestureCover();\r\n gestureCoverStrategy(toggle, cursor)\r\n};\r\nvar GestureEmitter = Emitter.inherit({\r\n gesture: true,\r\n configure: function(data) {\r\n this.getElement().css(\"msTouchAction\", data.immediate ? \"pinch-zoom\" : \"\");\r\n this.callBase(data)\r\n },\r\n allowInterruptionByMouseWheel: function() {\r\n return this._stage !== STARTED\r\n },\r\n getDirection: function() {\r\n return this.direction\r\n },\r\n _cancel: function() {\r\n this.callBase.apply(this, arguments);\r\n this._toggleGestureCover(false);\r\n this._stage = SLEEP\r\n },\r\n start: function(e) {\r\n if (e._needSkipEvent || needSkipEvent(e)) {\r\n this._cancel(e);\r\n return\r\n }\r\n this._startEvent = createEvent(e);\r\n this._startEventData = eventData(e);\r\n this._stage = INITED;\r\n this._init(e);\r\n this._setupImmediateTimer()\r\n },\r\n _setupImmediateTimer: function() {\r\n var _this$immediateTimeou;\r\n clearTimeout(this._immediateTimer);\r\n this._immediateAccepted = false;\r\n if (!this.immediate) {\r\n return\r\n }\r\n if (0 === this.immediateTimeout) {\r\n this._immediateAccepted = true;\r\n return\r\n }\r\n this._immediateTimer = setTimeout(function() {\r\n this._immediateAccepted = true\r\n }.bind(this), null !== (_this$immediateTimeou = this.immediateTimeout) && void 0 !== _this$immediateTimeou ? _this$immediateTimeou : IMMEDIATE_TIMEOUT)\r\n },\r\n move: function(e) {\r\n if (this._stage === INITED && this._directionConfirmed(e)) {\r\n this._stage = STARTED;\r\n this._resetActiveElement();\r\n this._toggleGestureCover(true);\r\n this._clearSelection(e);\r\n this._adjustStartEvent(e);\r\n this._start(this._startEvent);\r\n if (this._stage === SLEEP) {\r\n return\r\n }\r\n this._requestAccept(e);\r\n this._move(e);\r\n this._forgetAccept()\r\n } else if (this._stage === STARTED) {\r\n this._clearSelection(e);\r\n this._move(e)\r\n }\r\n },\r\n _directionConfirmed: function(e) {\r\n var touchBoundary = this._getTouchBoundary(e);\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n var deltaX = abs(delta.x);\r\n var deltaY = abs(delta.y);\r\n var horizontalMove = this._validateMove(touchBoundary, deltaX, deltaY);\r\n var verticalMove = this._validateMove(touchBoundary, deltaY, deltaX);\r\n var direction = this.getDirection(e);\r\n var bothAccepted = \"both\" === direction && (horizontalMove || verticalMove);\r\n var horizontalAccepted = \"horizontal\" === direction && horizontalMove;\r\n var verticalAccepted = \"vertical\" === direction && verticalMove;\r\n return bothAccepted || horizontalAccepted || verticalAccepted || this._immediateAccepted\r\n },\r\n _validateMove: function(touchBoundary, mainAxis, crossAxis) {\r\n return mainAxis && mainAxis >= touchBoundary && (this.immediate ? mainAxis >= crossAxis : true)\r\n },\r\n _getTouchBoundary: function(e) {\r\n return this.immediate || isDxMouseWheelEvent(e) ? IMMEDIATE_TOUCH_BOUNDARY : TOUCH_BOUNDARY\r\n },\r\n _adjustStartEvent: function(e) {\r\n var touchBoundary = this._getTouchBoundary(e);\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n this._startEvent.pageX += sign(delta.x) * touchBoundary;\r\n this._startEvent.pageY += sign(delta.y) * touchBoundary\r\n },\r\n _resetActiveElement: function() {\r\n if (\"ios\" === devices.real().platform && this.getElement().find(\":focus\").length) {\r\n resetActiveElement()\r\n }\r\n },\r\n _toggleGestureCover: function(toggle) {\r\n this._toggleGestureCoverImpl(toggle)\r\n },\r\n _toggleGestureCoverImpl: function(toggle) {\r\n var isStarted = this._stage === STARTED;\r\n if (isStarted) {\r\n gestureCover(toggle, this.getElement().css(\"cursor\"))\r\n }\r\n },\r\n _clearSelection: function(e) {\r\n if (isDxMouseWheelEvent(e) || isTouchEvent(e)) {\r\n return\r\n }\r\n clearSelection()\r\n },\r\n end: function(e) {\r\n this._toggleGestureCover(false);\r\n if (this._stage === STARTED) {\r\n this._end(e)\r\n } else if (this._stage === INITED) {\r\n this._stop(e)\r\n }\r\n this._stage = SLEEP\r\n },\r\n dispose: function() {\r\n clearTimeout(this._immediateTimer);\r\n this.callBase.apply(this, arguments);\r\n this._toggleGestureCover(false)\r\n },\r\n _init: noop,\r\n _start: noop,\r\n _move: noop,\r\n _stop: noop,\r\n _end: noop\r\n});\r\nGestureEmitter.initialTouchBoundary = TOUCH_BOUNDARY;\r\nGestureEmitter.touchBoundary = function(newBoundary) {\r\n if (isDefined(newBoundary)) {\r\n TOUCH_BOUNDARY = newBoundary;\r\n return\r\n }\r\n return TOUCH_BOUNDARY\r\n};\r\nexport default GestureEmitter;\r\n","/**\r\n * DevExtreme (esm/core/utils/support.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nimport callOnce from \"./call_once\";\r\nimport {\r\n getNavigator,\r\n hasProperty\r\n} from \"./window\";\r\nimport devices from \"../devices\";\r\nimport {\r\n stylePropPrefix,\r\n styleProp\r\n} from \"./style\";\r\nvar {\r\n maxTouchPoints: maxTouchPoints\r\n} = getNavigator();\r\nvar transitionEndEventNames = {\r\n webkitTransition: \"webkitTransitionEnd\",\r\n MozTransition: \"transitionend\",\r\n OTransition: \"oTransitionEnd\",\r\n transition: \"transitionend\"\r\n};\r\nvar supportProp = function(prop) {\r\n return !!styleProp(prop)\r\n};\r\nvar isNativeScrollingSupported = function() {\r\n var {\r\n platform: platform,\r\n mac: isMac\r\n } = devices.real();\r\n var isNativeScrollDevice = \"ios\" === platform || \"android\" === platform || isMac;\r\n return isNativeScrollDevice\r\n};\r\nvar inputType = function(type) {\r\n if (\"text\" === type) {\r\n return true\r\n }\r\n var input = domAdapter.createElement(\"input\");\r\n try {\r\n input.setAttribute(\"type\", type);\r\n input.value = \"wrongValue\";\r\n return !input.value\r\n } catch (e) {\r\n return false\r\n }\r\n};\r\nvar detectTouchEvents = function(hasWindowProperty, maxTouchPoints) {\r\n return (hasWindowProperty(\"ontouchstart\") || !!maxTouchPoints) && !hasWindowProperty(\"callPhantom\")\r\n};\r\nvar detectPointerEvent = function(hasWindowProperty) {\r\n return hasWindowProperty(\"PointerEvent\")\r\n};\r\nvar touchEvents = detectTouchEvents(hasProperty, maxTouchPoints);\r\nvar pointerEvents = detectPointerEvent(hasProperty);\r\nvar touchPointersPresent = !!maxTouchPoints;\r\nexport {\r\n touchEvents,\r\n pointerEvents,\r\n styleProp,\r\n stylePropPrefix,\r\n supportProp,\r\n inputType\r\n};\r\nexport var touch = touchEvents || pointerEvents && touchPointersPresent;\r\nexport var transition = callOnce((function() {\r\n return supportProp(\"transition\")\r\n}));\r\nexport var transitionEndEventName = callOnce((function() {\r\n return transitionEndEventNames[styleProp(\"transition\")]\r\n}));\r\nexport var animation = callOnce((function() {\r\n return supportProp(\"animation\")\r\n}));\r\nexport var nativeScrolling = isNativeScrollingSupported();\r\n","/**\r\n * DevExtreme (esm/events/pointer/base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n addNamespace,\r\n eventSource,\r\n fireEvent\r\n} from \"../utils/index\";\r\nvar POINTER_EVENTS_NAMESPACE = \"dxPointerEvents\";\r\nvar BaseStrategy = Class.inherit({\r\n ctor: function(eventName, originalEvents) {\r\n this._eventName = eventName;\r\n this._originalEvents = addNamespace(originalEvents, POINTER_EVENTS_NAMESPACE);\r\n this._handlerCount = 0;\r\n this.noBubble = this._isNoBubble()\r\n },\r\n _isNoBubble: function() {\r\n var eventName = this._eventName;\r\n return \"dxpointerenter\" === eventName || \"dxpointerleave\" === eventName\r\n },\r\n _handler: function(e) {\r\n var _originalEvent$target;\r\n var delegateTarget = this._getDelegateTarget(e);\r\n var event = {\r\n type: this._eventName,\r\n pointerType: e.pointerType || eventSource(e),\r\n originalEvent: e,\r\n delegateTarget: delegateTarget,\r\n timeStamp: browser.mozilla ? (new Date).getTime() : e.timeStamp\r\n };\r\n var originalEvent = e.originalEvent;\r\n if (null !== originalEvent && void 0 !== originalEvent && null !== (_originalEvent$target = originalEvent.target) && void 0 !== _originalEvent$target && _originalEvent$target.shadowRoot) {\r\n var _originalEvent$path, _originalEvent$compos;\r\n var path = null !== (_originalEvent$path = originalEvent.path) && void 0 !== _originalEvent$path ? _originalEvent$path : null === (_originalEvent$compos = originalEvent.composedPath) || void 0 === _originalEvent$compos ? void 0 : _originalEvent$compos.call(originalEvent);\r\n event.target = path[0]\r\n }\r\n return this._fireEvent(event)\r\n },\r\n _getDelegateTarget: function(e) {\r\n var delegateTarget;\r\n if (this.noBubble) {\r\n delegateTarget = e.delegateTarget\r\n }\r\n return delegateTarget\r\n },\r\n _fireEvent: function(args) {\r\n return fireEvent(args)\r\n },\r\n _setSelector: function(handleObj) {\r\n this._selector = this.noBubble && handleObj ? handleObj.selector : null\r\n },\r\n _getSelector: function() {\r\n return this._selector\r\n },\r\n setup: function() {\r\n return true\r\n },\r\n add: function(element, handleObj) {\r\n if (this._handlerCount <= 0 || this.noBubble) {\r\n element = this.noBubble ? element : domAdapter.getDocument();\r\n this._setSelector(handleObj);\r\n var that = this;\r\n eventsEngine.on(element, this._originalEvents, this._getSelector(), (function(e) {\r\n that._handler(e)\r\n }))\r\n }\r\n if (!this.noBubble) {\r\n this._handlerCount++\r\n }\r\n },\r\n remove: function(handleObj) {\r\n this._setSelector(handleObj);\r\n if (!this.noBubble) {\r\n this._handlerCount--\r\n }\r\n },\r\n teardown: function(element) {\r\n if (this._handlerCount && !this.noBubble) {\r\n return\r\n }\r\n element = this.noBubble ? element : domAdapter.getDocument();\r\n if (this._originalEvents !== \".\" + POINTER_EVENTS_NAMESPACE) {\r\n eventsEngine.off(element, this._originalEvents, this._getSelector())\r\n }\r\n },\r\n dispose: function(element) {\r\n element = this.noBubble ? element : domAdapter.getDocument();\r\n eventsEngine.off(element, this._originalEvents)\r\n }\r\n});\r\nexport default BaseStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/touch.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport BaseStrategy from \"./base\";\r\nvar eventMap = {\r\n dxpointerdown: \"touchstart\",\r\n dxpointermove: \"touchmove\",\r\n dxpointerup: \"touchend\",\r\n dxpointercancel: \"touchcancel\",\r\n dxpointerover: \"\",\r\n dxpointerout: \"\",\r\n dxpointerenter: \"\",\r\n dxpointerleave: \"\"\r\n};\r\nvar normalizeTouchEvent = function(e) {\r\n var pointers = [];\r\n each(e.touches, (function(_, touch) {\r\n pointers.push(extend({\r\n pointerId: touch.identifier\r\n }, touch))\r\n }));\r\n return {\r\n pointers: pointers,\r\n pointerId: e.changedTouches[0].identifier\r\n }\r\n};\r\nvar skipTouchWithSameIdentifier = function(pointerEvent) {\r\n return \"ios\" === devices.real().platform && (\"dxpointerdown\" === pointerEvent || \"dxpointerup\" === pointerEvent)\r\n};\r\nvar TouchStrategy = BaseStrategy.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerId = 0\r\n },\r\n _handler: function(e) {\r\n if (skipTouchWithSameIdentifier(this._eventName)) {\r\n var touch = e.changedTouches[0];\r\n if (this._pointerId === touch.identifier && 0 !== this._pointerId) {\r\n return\r\n }\r\n this._pointerId = touch.identifier\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _fireEvent: function(args) {\r\n return this.callBase(extend(normalizeTouchEvent(args.originalEvent), args))\r\n }\r\n});\r\nTouchStrategy.map = eventMap;\r\nTouchStrategy.normalize = normalizeTouchEvent;\r\nexport default TouchStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/mouse.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport BaseStrategy from \"./base\";\r\nimport Observer from \"./observer\";\r\nvar eventMap = {\r\n dxpointerdown: \"mousedown\",\r\n dxpointermove: \"mousemove\",\r\n dxpointerup: \"mouseup\",\r\n dxpointercancel: \"\",\r\n dxpointerover: \"mouseover\",\r\n dxpointerout: \"mouseout\",\r\n dxpointerenter: \"mouseenter\",\r\n dxpointerleave: \"mouseleave\"\r\n};\r\nvar normalizeMouseEvent = function(e) {\r\n e.pointerId = 1;\r\n return {\r\n pointers: observer.pointers(),\r\n pointerId: 1\r\n }\r\n};\r\nvar observer;\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n if (activated) {\r\n return\r\n }\r\n observer = new Observer(eventMap, (function() {\r\n return true\r\n }));\r\n activated = true\r\n};\r\nvar MouseStrategy = BaseStrategy.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n activateStrategy()\r\n },\r\n _fireEvent: function(args) {\r\n return this.callBase(extend(normalizeMouseEvent(args.originalEvent), args))\r\n }\r\n});\r\nMouseStrategy.map = eventMap;\r\nMouseStrategy.normalize = normalizeMouseEvent;\r\nMouseStrategy.activate = activateStrategy;\r\nMouseStrategy.resetObserver = function() {\r\n observer.reset()\r\n};\r\nexport default MouseStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer/observer.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nvar addEventsListener = function(events, handler) {\r\n readyCallbacks.add((function() {\r\n events.split(\" \").forEach((function(event) {\r\n domAdapter.listen(domAdapter.getDocument(), event, handler, true)\r\n }))\r\n }))\r\n};\r\nvar Observer = function(eventMap, pointerEquals, onPointerAdding) {\r\n onPointerAdding = onPointerAdding || function() {};\r\n var pointers = [];\r\n var getPointerIndex = function(e) {\r\n var index = -1;\r\n each(pointers, (function(i, pointer) {\r\n if (!pointerEquals(e, pointer)) {\r\n return true\r\n }\r\n index = i;\r\n return false\r\n }));\r\n return index\r\n };\r\n var removePointer = function(e) {\r\n var index = getPointerIndex(e);\r\n if (index > -1) {\r\n pointers.splice(index, 1)\r\n }\r\n };\r\n addEventsListener(eventMap.dxpointerdown, (function(e) {\r\n if (-1 === getPointerIndex(e)) {\r\n onPointerAdding(e);\r\n pointers.push(e)\r\n }\r\n }));\r\n addEventsListener(eventMap.dxpointermove, (function(e) {\r\n pointers[getPointerIndex(e)] = e\r\n }));\r\n addEventsListener(eventMap.dxpointerup, removePointer);\r\n addEventsListener(eventMap.dxpointercancel, removePointer);\r\n this.pointers = function() {\r\n return pointers\r\n };\r\n this.reset = function() {\r\n pointers = []\r\n }\r\n};\r\nexport default Observer;\r\n","/**\r\n * DevExtreme (esm/events/pointer/mouse_and_touch.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport BaseStrategy from \"./base\";\r\nimport MouseStrategy from \"./mouse\";\r\nimport TouchStrategy from \"./touch\";\r\nimport {\r\n isMouseEvent\r\n} from \"../utils/index\";\r\nvar eventMap = {\r\n dxpointerdown: \"touchstart mousedown\",\r\n dxpointermove: \"touchmove mousemove\",\r\n dxpointerup: \"touchend mouseup\",\r\n dxpointercancel: \"touchcancel\",\r\n dxpointerover: \"mouseover\",\r\n dxpointerout: \"mouseout\",\r\n dxpointerenter: \"mouseenter\",\r\n dxpointerleave: \"mouseleave\"\r\n};\r\nvar activated = false;\r\nvar activateStrategy = function() {\r\n if (activated) {\r\n return\r\n }\r\n MouseStrategy.activate();\r\n activated = true\r\n};\r\nvar MouseAndTouchStrategy = BaseStrategy.inherit({\r\n EVENT_LOCK_TIMEOUT: 100,\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n activateStrategy()\r\n },\r\n _handler: function(e) {\r\n var isMouse = isMouseEvent(e);\r\n if (!isMouse) {\r\n this._skipNextEvents = true\r\n }\r\n if (isMouse && this._mouseLocked) {\r\n return\r\n }\r\n if (isMouse && this._skipNextEvents) {\r\n this._skipNextEvents = false;\r\n this._mouseLocked = true;\r\n clearTimeout(this._unlockMouseTimer);\r\n var that = this;\r\n this._unlockMouseTimer = setTimeout((function() {\r\n that._mouseLocked = false\r\n }), this.EVENT_LOCK_TIMEOUT);\r\n return\r\n }\r\n return this.callBase(e)\r\n },\r\n _fireEvent: function(args) {\r\n var normalizer = isMouseEvent(args.originalEvent) ? MouseStrategy.normalize : TouchStrategy.normalize;\r\n return this.callBase(extend(normalizer(args.originalEvent), args))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._skipNextEvents = false;\r\n this._mouseLocked = false;\r\n clearTimeout(this._unlockMouseTimer)\r\n }\r\n});\r\nMouseAndTouchStrategy.map = eventMap;\r\nMouseAndTouchStrategy.resetObserver = MouseStrategy.resetObserver;\r\nexport default MouseAndTouchStrategy;\r\n","/**\r\n * DevExtreme (esm/events/pointer.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport * as support from \"../core/utils/support\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport devices from \"../core/devices\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport TouchStrategy from \"./pointer/touch\";\r\nimport MouseStrategy from \"./pointer/mouse\";\r\nimport MouseAndTouchStrategy from \"./pointer/mouse_and_touch\";\r\nvar getStrategy = (support, device) => {\r\n var {\r\n tablet: tablet,\r\n phone: phone\r\n } = device;\r\n if (support.touch && !(tablet || phone)) {\r\n return MouseAndTouchStrategy\r\n }\r\n if (support.touch) {\r\n return TouchStrategy\r\n }\r\n return MouseStrategy\r\n};\r\nvar EventStrategy = getStrategy(support, devices.real());\r\neach(EventStrategy.map, (pointerEvent, originalEvents) => {\r\n registerEvent(pointerEvent, new EventStrategy(pointerEvent, originalEvents))\r\n});\r\nvar pointer = {\r\n down: \"dxpointerdown\",\r\n up: \"dxpointerup\",\r\n move: \"dxpointermove\",\r\n cancel: \"dxpointercancel\",\r\n enter: \"dxpointerenter\",\r\n leave: \"dxpointerleave\",\r\n over: \"dxpointerover\",\r\n out: \"dxpointerout\"\r\n};\r\nexport default pointer;\r\n","/**\r\n * DevExtreme (esm/events/core/wheel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerEvent from \"./event_registrator\";\r\nimport {\r\n addNamespace,\r\n fireEvent\r\n} from \"../utils/index\";\r\nvar EVENT_NAME = \"dxmousewheel\";\r\nvar EVENT_NAMESPACE = \"dxWheel\";\r\nvar NATIVE_EVENT_NAME = \"wheel\";\r\nvar PIXEL_MODE = 0;\r\nvar DELTA_MUTLIPLIER = 30;\r\nvar wheel = {\r\n setup: function(element) {\r\n var $element = $(element);\r\n eventsEngine.on($element, addNamespace(NATIVE_EVENT_NAME, EVENT_NAMESPACE), wheel._wheelHandler.bind(wheel))\r\n },\r\n teardown: function(element) {\r\n eventsEngine.off(element, \".\".concat(EVENT_NAMESPACE))\r\n },\r\n _wheelHandler: function(e) {\r\n var {\r\n deltaMode: deltaMode,\r\n deltaY: deltaY,\r\n deltaX: deltaX,\r\n deltaZ: deltaZ\r\n } = e.originalEvent;\r\n fireEvent({\r\n type: EVENT_NAME,\r\n originalEvent: e,\r\n delta: this._normalizeDelta(deltaY, deltaMode),\r\n deltaX: deltaX,\r\n deltaY: deltaY,\r\n deltaZ: deltaZ,\r\n deltaMode: deltaMode,\r\n pointerType: \"mouse\"\r\n });\r\n e.stopPropagation()\r\n },\r\n _normalizeDelta(delta) {\r\n var deltaMode = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : PIXEL_MODE;\r\n if (deltaMode === PIXEL_MODE) {\r\n return -delta\r\n } else {\r\n return -DELTA_MUTLIPLIER * delta\r\n }\r\n }\r\n};\r\nregisterEvent(EVENT_NAME, wheel);\r\nexport {\r\n EVENT_NAME as name\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/emitter_registrator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport registerEvent from \"./event_registrator\";\r\nimport {\r\n addNamespace,\r\n isMouseEvent\r\n} from \"../utils/index\";\r\nimport pointerEvents from \"../pointer\";\r\nimport {\r\n name as wheelEventName\r\n} from \"./wheel\";\r\nvar MANAGER_EVENT = \"dxEventManager\";\r\nvar EMITTER_DATA = \"dxEmitter\";\r\nvar EventManager = Class.inherit({\r\n ctor: function() {\r\n this._attachHandlers();\r\n this.reset();\r\n this._proxiedCancelHandler = this._cancelHandler.bind(this);\r\n this._proxiedAcceptHandler = this._acceptHandler.bind(this)\r\n },\r\n _attachHandlers: function() {\r\n readyCallbacks.add(function() {\r\n var document = domAdapter.getDocument();\r\n eventsEngine.subscribeGlobal(document, addNamespace(pointerEvents.down, MANAGER_EVENT), this._pointerDownHandler.bind(this));\r\n eventsEngine.subscribeGlobal(document, addNamespace(pointerEvents.move, MANAGER_EVENT), this._pointerMoveHandler.bind(this));\r\n eventsEngine.subscribeGlobal(document, addNamespace([pointerEvents.up, pointerEvents.cancel].join(\" \"), MANAGER_EVENT), this._pointerUpHandler.bind(this));\r\n eventsEngine.subscribeGlobal(document, addNamespace(wheelEventName, MANAGER_EVENT), this._mouseWheelHandler.bind(this))\r\n }.bind(this))\r\n },\r\n _eachEmitter: function(callback) {\r\n var activeEmitters = this._activeEmitters || [];\r\n var i = 0;\r\n while (activeEmitters.length > i) {\r\n var emitter = activeEmitters[i];\r\n if (false === callback(emitter)) {\r\n break\r\n }\r\n if (activeEmitters[i] === emitter) {\r\n i++\r\n }\r\n }\r\n },\r\n _applyToEmitters: function(method, arg) {\r\n this._eachEmitter((function(emitter) {\r\n emitter[method].call(emitter, arg)\r\n }))\r\n },\r\n reset: function() {\r\n this._eachEmitter(this._proxiedCancelHandler);\r\n this._activeEmitters = []\r\n },\r\n resetEmitter: function(emitter) {\r\n this._proxiedCancelHandler(emitter)\r\n },\r\n _pointerDownHandler: function(e) {\r\n if (isMouseEvent(e) && e.which > 1) {\r\n return\r\n }\r\n this._updateEmitters(e)\r\n },\r\n _updateEmitters: function(e) {\r\n if (!this._isSetChanged(e)) {\r\n return\r\n }\r\n this._cleanEmitters(e);\r\n this._fetchEmitters(e)\r\n },\r\n _isSetChanged: function(e) {\r\n var currentSet = this._closestEmitter(e);\r\n var previousSet = this._emittersSet || [];\r\n var setChanged = currentSet.length !== previousSet.length;\r\n each(currentSet, (function(index, emitter) {\r\n setChanged = setChanged || previousSet[index] !== emitter;\r\n return !setChanged\r\n }));\r\n this._emittersSet = currentSet;\r\n return setChanged\r\n },\r\n _closestEmitter: function(e) {\r\n var that = this;\r\n var result = [];\r\n var $element = $(e.target);\r\n\r\n function handleEmitter(_, emitter) {\r\n if (!!emitter && emitter.validatePointers(e) && emitter.validate(e)) {\r\n emitter.addCancelCallback(that._proxiedCancelHandler);\r\n emitter.addAcceptCallback(that._proxiedAcceptHandler);\r\n result.push(emitter)\r\n }\r\n }\r\n while ($element.length) {\r\n var emitters = elementData($element.get(0), EMITTER_DATA) || [];\r\n each(emitters, handleEmitter);\r\n $element = $element.parent()\r\n }\r\n return result\r\n },\r\n _acceptHandler: function(acceptedEmitter, e) {\r\n var that = this;\r\n this._eachEmitter((function(emitter) {\r\n if (emitter !== acceptedEmitter) {\r\n that._cancelEmitter(emitter, e)\r\n }\r\n }))\r\n },\r\n _cancelHandler: function(canceledEmitter, e) {\r\n this._cancelEmitter(canceledEmitter, e)\r\n },\r\n _cancelEmitter: function(emitter, e) {\r\n var activeEmitters = this._activeEmitters;\r\n if (e) {\r\n emitter.cancel(e)\r\n } else {\r\n emitter.reset()\r\n }\r\n emitter.removeCancelCallback();\r\n emitter.removeAcceptCallback();\r\n var emitterIndex = activeEmitters.indexOf(emitter);\r\n if (emitterIndex > -1) {\r\n activeEmitters.splice(emitterIndex, 1)\r\n }\r\n },\r\n _cleanEmitters: function(e) {\r\n this._applyToEmitters(\"end\", e);\r\n this.reset(e)\r\n },\r\n _fetchEmitters: function(e) {\r\n this._activeEmitters = this._emittersSet.slice();\r\n this._applyToEmitters(\"start\", e)\r\n },\r\n _pointerMoveHandler: function(e) {\r\n this._applyToEmitters(\"move\", e)\r\n },\r\n _pointerUpHandler: function(e) {\r\n this._updateEmitters(e)\r\n },\r\n _mouseWheelHandler: function(e) {\r\n if (!this._allowInterruptionByMouseWheel()) {\r\n return\r\n }\r\n e.pointers = [null];\r\n this._pointerDownHandler(e);\r\n this._adjustWheelEvent(e);\r\n this._pointerMoveHandler(e);\r\n e.pointers = [];\r\n this._pointerUpHandler(e)\r\n },\r\n _allowInterruptionByMouseWheel: function() {\r\n var allowInterruption = true;\r\n this._eachEmitter((function(emitter) {\r\n allowInterruption = emitter.allowInterruptionByMouseWheel() && allowInterruption;\r\n return allowInterruption\r\n }));\r\n return allowInterruption\r\n },\r\n _adjustWheelEvent: function(e) {\r\n var closestGestureEmitter = null;\r\n this._eachEmitter((function(emitter) {\r\n if (!emitter.gesture) {\r\n return\r\n }\r\n var direction = emitter.getDirection(e);\r\n if (\"horizontal\" !== direction && !e.shiftKey || \"vertical\" !== direction && e.shiftKey) {\r\n closestGestureEmitter = emitter;\r\n return false\r\n }\r\n }));\r\n if (!closestGestureEmitter) {\r\n return\r\n }\r\n var direction = closestGestureEmitter.getDirection(e);\r\n var verticalGestureDirection = \"both\" === direction && !e.shiftKey || \"vertical\" === direction;\r\n var prop = verticalGestureDirection ? \"pageY\" : \"pageX\";\r\n e[prop] += e.delta\r\n },\r\n isActive: function(element) {\r\n var result = false;\r\n this._eachEmitter((function(emitter) {\r\n result = result || emitter.getElement().is(element)\r\n }));\r\n return result\r\n }\r\n});\r\nvar eventManager = new EventManager;\r\nvar EMITTER_SUBSCRIPTION_DATA = \"dxEmitterSubscription\";\r\nvar registerEmitter = function(emitterConfig) {\r\n var emitterClass = emitterConfig.emitter;\r\n var emitterName = emitterConfig.events[0];\r\n var emitterEvents = emitterConfig.events;\r\n each(emitterEvents, (function(_, eventName) {\r\n registerEvent(eventName, {\r\n noBubble: !emitterConfig.bubble,\r\n setup: function(element) {\r\n var subscriptions = elementData(element, EMITTER_SUBSCRIPTION_DATA) || {};\r\n var emitters = elementData(element, EMITTER_DATA) || {};\r\n var emitter = emitters[emitterName] || new emitterClass(element);\r\n subscriptions[eventName] = true;\r\n emitters[emitterName] = emitter;\r\n elementData(element, EMITTER_DATA, emitters);\r\n elementData(element, EMITTER_SUBSCRIPTION_DATA, subscriptions)\r\n },\r\n add: function(element, handleObj) {\r\n var emitters = elementData(element, EMITTER_DATA);\r\n var emitter = emitters[emitterName];\r\n emitter.configure(extend({\r\n delegateSelector: handleObj.selector\r\n }, handleObj.data), handleObj.type)\r\n },\r\n teardown: function(element) {\r\n var subscriptions = elementData(element, EMITTER_SUBSCRIPTION_DATA);\r\n var emitters = elementData(element, EMITTER_DATA);\r\n var emitter = emitters[emitterName];\r\n delete subscriptions[eventName];\r\n var disposeEmitter = true;\r\n each(emitterEvents, (function(_, eventName) {\r\n disposeEmitter = disposeEmitter && !subscriptions[eventName];\r\n return disposeEmitter\r\n }));\r\n if (disposeEmitter) {\r\n if (eventManager.isActive(element)) {\r\n eventManager.resetEmitter(emitter)\r\n }\r\n emitter && emitter.dispose();\r\n delete emitters[emitterName]\r\n }\r\n }\r\n })\r\n }))\r\n};\r\nexport default registerEmitter;\r\n","/**\r\n * DevExtreme (esm/events/drag.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n data as elementData,\r\n removeData\r\n} from \"../core/element_data\";\r\nimport {\r\n wrapToArray\r\n} from \"../core/utils/array\";\r\nimport * as iteratorUtils from \"../core/utils/iterator\";\r\nimport {\r\n contains\r\n} from \"../core/utils/dom\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n eventData as eData,\r\n fireEvent\r\n} from \"./utils/index\";\r\nimport GestureEmitter from \"./gesture/emitter.gesture\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar DRAG_START_EVENT = \"dxdragstart\";\r\nvar DRAG_EVENT = \"dxdrag\";\r\nvar DRAG_END_EVENT = \"dxdragend\";\r\nvar DRAG_ENTER_EVENT = \"dxdragenter\";\r\nvar DRAG_LEAVE_EVENT = \"dxdragleave\";\r\nvar DROP_EVENT = \"dxdrop\";\r\nvar DX_DRAG_EVENTS_COUNT_KEY = \"dxDragEventsCount\";\r\nvar knownDropTargets = [];\r\nvar knownDropTargetSelectors = [];\r\nvar knownDropTargetConfigs = [];\r\nvar dropTargetRegistration = {\r\n setup: function(element, data) {\r\n var knownDropTarget = knownDropTargets.includes(element);\r\n if (!knownDropTarget) {\r\n knownDropTargets.push(element);\r\n knownDropTargetSelectors.push([]);\r\n knownDropTargetConfigs.push(data || {})\r\n }\r\n },\r\n add: function(element, handleObj) {\r\n var index = knownDropTargets.indexOf(element);\r\n this.updateEventsCounter(element, handleObj.type, 1);\r\n var selector = handleObj.selector;\r\n if (!knownDropTargetSelectors[index].includes(selector)) {\r\n knownDropTargetSelectors[index].push(selector)\r\n }\r\n },\r\n updateEventsCounter: function(element, event, value) {\r\n if ([DRAG_ENTER_EVENT, DRAG_LEAVE_EVENT, DROP_EVENT].indexOf(event) > -1) {\r\n var eventsCount = elementData(element, DX_DRAG_EVENTS_COUNT_KEY) || 0;\r\n elementData(element, DX_DRAG_EVENTS_COUNT_KEY, Math.max(0, eventsCount + value))\r\n }\r\n },\r\n remove: function(element, handleObj) {\r\n this.updateEventsCounter(element, handleObj.type, -1)\r\n },\r\n teardown: function(element) {\r\n var handlersCount = elementData(element, DX_DRAG_EVENTS_COUNT_KEY);\r\n if (!handlersCount) {\r\n var index = knownDropTargets.indexOf(element);\r\n knownDropTargets.splice(index, 1);\r\n knownDropTargetSelectors.splice(index, 1);\r\n knownDropTargetConfigs.splice(index, 1);\r\n removeData(element, DX_DRAG_EVENTS_COUNT_KEY)\r\n }\r\n }\r\n};\r\nregisterEvent(DRAG_ENTER_EVENT, dropTargetRegistration);\r\nregisterEvent(DRAG_LEAVE_EVENT, dropTargetRegistration);\r\nregisterEvent(DROP_EVENT, dropTargetRegistration);\r\nvar getItemDelegatedTargets = function($element) {\r\n var dropTargetIndex = knownDropTargets.indexOf($element.get(0));\r\n var dropTargetSelectors = knownDropTargetSelectors[dropTargetIndex].filter(selector => selector);\r\n var $delegatedTargets = $element.find(dropTargetSelectors.join(\", \"));\r\n if (knownDropTargetSelectors[dropTargetIndex].includes(void 0)) {\r\n $delegatedTargets = $delegatedTargets.add($element)\r\n }\r\n return $delegatedTargets\r\n};\r\nvar getItemConfig = function($element) {\r\n var dropTargetIndex = knownDropTargets.indexOf($element.get(0));\r\n return knownDropTargetConfigs[dropTargetIndex]\r\n};\r\nvar getItemPosition = function(dropTargetConfig, $element) {\r\n if (dropTargetConfig.itemPositionFunc) {\r\n return dropTargetConfig.itemPositionFunc($element)\r\n } else {\r\n return $element.offset()\r\n }\r\n};\r\nvar getItemSize = function(dropTargetConfig, $element) {\r\n if (dropTargetConfig.itemSizeFunc) {\r\n return dropTargetConfig.itemSizeFunc($element)\r\n }\r\n return {\r\n width: $element.get(0).getBoundingClientRect().width,\r\n height: $element.get(0).getBoundingClientRect().height\r\n }\r\n};\r\nvar DragEmitter = GestureEmitter.inherit({\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this.direction = \"both\"\r\n },\r\n _init: function(e) {\r\n this._initEvent = e\r\n },\r\n _start: function(e) {\r\n e = this._fireEvent(DRAG_START_EVENT, this._initEvent);\r\n this._maxLeftOffset = e.maxLeftOffset;\r\n this._maxRightOffset = e.maxRightOffset;\r\n this._maxTopOffset = e.maxTopOffset;\r\n this._maxBottomOffset = e.maxBottomOffset;\r\n if (e.targetElements || null === e.targetElements) {\r\n var dropTargets = wrapToArray(e.targetElements || []);\r\n this._dropTargets = iteratorUtils.map(dropTargets, (function(element) {\r\n return $(element).get(0)\r\n }))\r\n } else {\r\n this._dropTargets = knownDropTargets\r\n }\r\n },\r\n _move: function(e) {\r\n var eventData = eData(e);\r\n var dragOffset = this._calculateOffset(eventData);\r\n e = this._fireEvent(DRAG_EVENT, e, {\r\n offset: dragOffset\r\n });\r\n this._processDropTargets(e);\r\n if (!e._cancelPreventDefault) {\r\n e.preventDefault()\r\n }\r\n },\r\n _calculateOffset: function(eventData) {\r\n return {\r\n x: this._calculateXOffset(eventData),\r\n y: this._calculateYOffset(eventData)\r\n }\r\n },\r\n _calculateXOffset: function(eventData) {\r\n if (\"vertical\" !== this.direction) {\r\n var offset = eventData.x - this._startEventData.x;\r\n return this._fitOffset(offset, this._maxLeftOffset, this._maxRightOffset)\r\n }\r\n return 0\r\n },\r\n _calculateYOffset: function(eventData) {\r\n if (\"horizontal\" !== this.direction) {\r\n var offset = eventData.y - this._startEventData.y;\r\n return this._fitOffset(offset, this._maxTopOffset, this._maxBottomOffset)\r\n }\r\n return 0\r\n },\r\n _fitOffset: function(offset, minOffset, maxOffset) {\r\n if (null != minOffset) {\r\n offset = Math.max(offset, -minOffset)\r\n }\r\n if (null != maxOffset) {\r\n offset = Math.min(offset, maxOffset)\r\n }\r\n return offset\r\n },\r\n _processDropTargets: function(e) {\r\n var target = this._findDropTarget(e);\r\n var sameTarget = target === this._currentDropTarget;\r\n if (!sameTarget) {\r\n this._fireDropTargetEvent(e, DRAG_LEAVE_EVENT);\r\n this._currentDropTarget = target;\r\n this._fireDropTargetEvent(e, DRAG_ENTER_EVENT)\r\n }\r\n },\r\n _fireDropTargetEvent: function(event, eventName) {\r\n if (!this._currentDropTarget) {\r\n return\r\n }\r\n var eventData = {\r\n type: eventName,\r\n originalEvent: event,\r\n draggingElement: this._$element.get(0),\r\n target: this._currentDropTarget\r\n };\r\n fireEvent(eventData)\r\n },\r\n _findDropTarget: function(e) {\r\n var that = this;\r\n var result;\r\n iteratorUtils.each(knownDropTargets, (function(_, target) {\r\n if (!that._checkDropTargetActive(target)) {\r\n return\r\n }\r\n var $target = $(target);\r\n iteratorUtils.each(getItemDelegatedTargets($target), (function(_, delegatedTarget) {\r\n var $delegatedTarget = $(delegatedTarget);\r\n if (that._checkDropTarget(getItemConfig($target), $delegatedTarget, $(result), e)) {\r\n result = delegatedTarget\r\n }\r\n }))\r\n }));\r\n return result\r\n },\r\n _checkDropTargetActive: function(target) {\r\n var active = false;\r\n iteratorUtils.each(this._dropTargets, (function(_, activeTarget) {\r\n active = active || activeTarget === target || contains(activeTarget, target);\r\n return !active\r\n }));\r\n return active\r\n },\r\n _checkDropTarget: function(config, $target, $prevTarget, e) {\r\n var isDraggingElement = $target.get(0) === $(e.target).get(0);\r\n if (isDraggingElement) {\r\n return false\r\n }\r\n var targetPosition = getItemPosition(config, $target);\r\n if (e.pageX < targetPosition.left) {\r\n return false\r\n }\r\n if (e.pageY < targetPosition.top) {\r\n return false\r\n }\r\n var targetSize = getItemSize(config, $target);\r\n if (e.pageX > targetPosition.left + targetSize.width) {\r\n return false\r\n }\r\n if (e.pageY > targetPosition.top + targetSize.height) {\r\n return false\r\n }\r\n if ($prevTarget.length && $prevTarget.closest($target).length) {\r\n return false\r\n }\r\n if (config.checkDropTarget && !config.checkDropTarget($target, e)) {\r\n return false\r\n }\r\n return $target\r\n },\r\n _end: function(e) {\r\n var eventData = eData(e);\r\n this._fireEvent(DRAG_END_EVENT, e, {\r\n offset: this._calculateOffset(eventData)\r\n });\r\n this._fireDropTargetEvent(e, DROP_EVENT);\r\n delete this._currentDropTarget\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: DragEmitter,\r\n events: [DRAG_START_EVENT, DRAG_EVENT, DRAG_END_EVENT]\r\n});\r\nexport {\r\n DRAG_EVENT as move, DRAG_START_EVENT as start, DRAG_END_EVENT as end, DRAG_ENTER_EVENT as enter, DRAG_LEAVE_EVENT as leave, DROP_EVENT as drop\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popup/popup_drag.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n locate,\r\n move\r\n} from \"../../animation/translator\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getOffset,\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n isWindow\r\n} from \"../../core/utils/type\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n start as dragStartEvent,\r\n move as dragMoveEvent,\r\n end as dragEndEvent\r\n} from \"../../events/drag\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nvar KEYBOARD_DRAG_STEP = 5;\r\nclass PopupDrag {\r\n constructor(config) {\r\n this.init(config)\r\n }\r\n init(_ref) {\r\n var {\r\n dragEnabled: dragEnabled,\r\n handle: handle,\r\n draggableElement: draggableElement,\r\n positionController: positionController\r\n } = _ref;\r\n this._positionController = positionController;\r\n this._draggableElement = draggableElement;\r\n this._handle = handle;\r\n this._dragEnabled = dragEnabled;\r\n this.unsubscribe();\r\n if (!dragEnabled) {\r\n return\r\n }\r\n this.subscribe()\r\n }\r\n moveDown(e) {\r\n this._moveTo(KEYBOARD_DRAG_STEP, 0, e)\r\n }\r\n moveUp(e) {\r\n this._moveTo(-KEYBOARD_DRAG_STEP, 0, e)\r\n }\r\n moveLeft(e) {\r\n this._moveTo(0, -KEYBOARD_DRAG_STEP, e)\r\n }\r\n moveRight(e) {\r\n this._moveTo(0, KEYBOARD_DRAG_STEP, e)\r\n }\r\n subscribe() {\r\n var eventNames = this._getEventNames();\r\n eventsEngine.on(this._handle, eventNames.startEventName, e => {\r\n this._dragStartHandler(e)\r\n });\r\n eventsEngine.on(this._handle, eventNames.updateEventName, e => {\r\n this._dragUpdateHandler(e)\r\n });\r\n eventsEngine.on(this._handle, eventNames.endEventName, e => {\r\n this._dragEndHandler(e)\r\n })\r\n }\r\n unsubscribe() {\r\n var eventNames = this._getEventNames();\r\n eventsEngine.off(this._handle, eventNames.startEventName);\r\n eventsEngine.off(this._handle, eventNames.updateEventName);\r\n eventsEngine.off(this._handle, eventNames.endEventName)\r\n }\r\n _getEventNames() {\r\n var startEventName = addNamespace(dragStartEvent, \"overlayDrag\");\r\n var updateEventName = addNamespace(dragMoveEvent, \"overlayDrag\");\r\n var endEventName = addNamespace(dragEndEvent, \"overlayDrag\");\r\n return {\r\n startEventName: startEventName,\r\n updateEventName: updateEventName,\r\n endEventName: endEventName\r\n }\r\n }\r\n _dragStartHandler(e) {\r\n var allowedOffsets = this._getAllowedOffsets();\r\n this._prevOffset = {\r\n x: 0,\r\n y: 0\r\n };\r\n e.targetElements = [];\r\n e.maxTopOffset = allowedOffsets.top;\r\n e.maxBottomOffset = allowedOffsets.bottom;\r\n e.maxLeftOffset = allowedOffsets.left;\r\n e.maxRightOffset = allowedOffsets.right\r\n }\r\n _dragUpdateHandler(e) {\r\n var targetOffset = {\r\n top: e.offset.y - this._prevOffset.y,\r\n left: e.offset.x - this._prevOffset.x\r\n };\r\n this._moveByOffset(targetOffset);\r\n this._prevOffset = e.offset\r\n }\r\n _dragEndHandler(event) {\r\n this._positionController.dragHandled();\r\n this._positionController.detectVisualPositionChange(event)\r\n }\r\n _moveTo(top, left, e) {\r\n if (!this._dragEnabled) {\r\n return\r\n }\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var offset = this._fitOffsetIntoAllowedRange(top, left);\r\n this._moveByOffset(offset);\r\n this._dragEndHandler(e)\r\n }\r\n _fitOffsetIntoAllowedRange(top, left) {\r\n var allowedOffsets = this._getAllowedOffsets();\r\n return {\r\n top: fitIntoRange(top, -allowedOffsets.top, allowedOffsets.bottom),\r\n left: fitIntoRange(left, -allowedOffsets.left, allowedOffsets.right)\r\n }\r\n }\r\n _getContainerDimensions() {\r\n var document = domAdapter.getDocument();\r\n var container = this._positionController.$dragResizeContainer.get(0);\r\n var containerWidth = getOuterWidth(container);\r\n var containerHeight = getOuterHeight(container);\r\n if (isWindow(container)) {\r\n containerHeight = Math.max(document.body.clientHeight, containerHeight);\r\n containerWidth = Math.max(document.body.clientWidth, containerWidth)\r\n }\r\n return {\r\n width: containerWidth,\r\n height: containerHeight\r\n }\r\n }\r\n _getContainerPosition() {\r\n var container = this._positionController.$dragResizeContainer.get(0);\r\n return isWindow(container) ? {\r\n top: 0,\r\n left: 0\r\n } : getOffset(container)\r\n }\r\n _getElementPosition() {\r\n return getOffset(this._draggableElement)\r\n }\r\n _getInnerDelta() {\r\n var containerDimensions = this._getContainerDimensions();\r\n var elementDimensions = this._getElementDimensions();\r\n return {\r\n x: containerDimensions.width - elementDimensions.width,\r\n y: containerDimensions.height - elementDimensions.height\r\n }\r\n }\r\n _getOuterDelta() {\r\n var {\r\n width: width,\r\n height: height\r\n } = this._getElementDimensions();\r\n var outsideDragFactor = this._positionController.outsideDragFactor;\r\n return {\r\n x: width * outsideDragFactor,\r\n y: height * outsideDragFactor\r\n }\r\n }\r\n _getFullDelta() {\r\n var fullDelta = this._getInnerDelta();\r\n var outerDelta = this._getOuterDelta();\r\n return {\r\n x: fullDelta.x + outerDelta.x,\r\n y: fullDelta.y + outerDelta.y\r\n }\r\n }\r\n _getElementDimensions() {\r\n return {\r\n width: this._draggableElement.offsetWidth,\r\n height: this._draggableElement.offsetHeight\r\n }\r\n }\r\n _getAllowedOffsets() {\r\n var fullDelta = this._getFullDelta();\r\n var isDragAllowed = fullDelta.y >= 0 && fullDelta.x >= 0;\r\n if (!isDragAllowed) {\r\n return {\r\n top: 0,\r\n bottom: 0,\r\n left: 0,\r\n right: 0\r\n }\r\n }\r\n var elementPosition = this._getElementPosition();\r\n var containerPosition = this._getContainerPosition();\r\n var outerDelta = this._getOuterDelta();\r\n return {\r\n top: elementPosition.top - containerPosition.top + outerDelta.y,\r\n bottom: -elementPosition.top + containerPosition.top + fullDelta.y,\r\n left: elementPosition.left - containerPosition.left + outerDelta.x,\r\n right: -elementPosition.left + containerPosition.left + fullDelta.x\r\n }\r\n }\r\n _moveByOffset(offset) {\r\n var currentPosition = locate(this._draggableElement);\r\n var newPosition = {\r\n left: currentPosition.left + offset.left,\r\n top: currentPosition.top + offset.top\r\n };\r\n move(this._draggableElement, newPosition)\r\n }\r\n}\r\nexport default PopupDrag;\r\n","/**\r\n * DevExtreme (esm/core/templates/template_engine_registry.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isString\r\n} from \"../utils/type\";\r\nimport errors from \"../errors\";\r\nvar templateEngines = {};\r\nvar currentTemplateEngine;\r\nexport function registerTemplateEngine(name, templateEngine) {\r\n templateEngines[name] = templateEngine\r\n}\r\nexport function setTemplateEngine(templateEngine) {\r\n if (isString(templateEngine)) {\r\n currentTemplateEngine = templateEngines[templateEngine];\r\n if (!currentTemplateEngine) {\r\n throw errors.Error(\"E0020\", templateEngine)\r\n }\r\n } else {\r\n currentTemplateEngine = templateEngine\r\n }\r\n}\r\nexport function getCurrentTemplateEngine() {\r\n return currentTemplateEngine\r\n}\r\n","/**\r\n * DevExtreme (esm/core/options/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../devices\";\r\nimport {\r\n isEmptyObject,\r\n isFunction\r\n} from \"../utils/type\";\r\nimport {\r\n findBestMatches\r\n} from \"../utils/common\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nimport {\r\n compileGetter\r\n} from \"../utils/data\";\r\nvar cachedGetters = {};\r\nexport var convertRulesToOptions = rules => {\r\n var currentDevice = devices.current();\r\n return rules.reduce((options, _ref) => {\r\n var {\r\n device: device,\r\n options: ruleOptions\r\n } = _ref;\r\n var deviceFilter = device || {};\r\n var match = isFunction(deviceFilter) ? deviceFilter(currentDevice) : deviceMatch(currentDevice, deviceFilter);\r\n if (match) {\r\n extend(true, options, ruleOptions)\r\n }\r\n return options\r\n }, {})\r\n};\r\nexport var normalizeOptions = (options, value) => \"string\" !== typeof options ? options : {\r\n [options]: value\r\n};\r\nexport var deviceMatch = (device, filter) => isEmptyObject(filter) || findBestMatches(device, [filter]).length > 0;\r\nexport var getFieldName = fullName => fullName.substr(fullName.lastIndexOf(\".\") + 1);\r\nexport var getParentName = fullName => fullName.substr(0, fullName.lastIndexOf(\".\"));\r\nexport var getNestedOptionValue = function(optionsObject, name) {\r\n cachedGetters[name] = cachedGetters[name] || compileGetter(name);\r\n return cachedGetters[name](optionsObject, {\r\n functionsAsIs: true\r\n })\r\n};\r\nexport var createDefaultOptionRules = function() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n return options\r\n};\r\n","/**\r\n * DevExtreme (esm/core/options/option_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n compileGetter,\r\n compileSetter,\r\n getPathParts\r\n} from \"../utils/data\";\r\nimport {\r\n noop\r\n} from \"../utils/common\";\r\nimport {\r\n equals\r\n} from \"../utils/comparator\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../utils/type\";\r\nimport {\r\n normalizeOptions\r\n} from \"./utils\";\r\nvar cachedGetters = {};\r\nvar cachedSetters = {};\r\nexport class OptionManager {\r\n constructor(options, optionsByReference) {\r\n this._options = options;\r\n this._optionsByReference = optionsByReference;\r\n this._changingCallback;\r\n this._changedCallback;\r\n this._namePreparedCallbacks\r\n }\r\n _setByReference(options, rulesOptions) {\r\n extend(true, options, rulesOptions);\r\n for (var fieldName in this._optionsByReference) {\r\n if (Object.prototype.hasOwnProperty.call(rulesOptions, fieldName)) {\r\n options[fieldName] = rulesOptions[fieldName]\r\n }\r\n }\r\n }\r\n _setPreparedValue(name, value, merge, silent) {\r\n var previousValue = this.get(this._options, name, false);\r\n if (!equals(previousValue, value)) {\r\n var path = getPathParts(name);\r\n !silent && this._changingCallback(name, previousValue, value);\r\n cachedSetters[name] = cachedSetters[name] || compileSetter(name);\r\n cachedSetters[name](this._options, value, {\r\n functionsAsIs: true,\r\n merge: isDefined(merge) ? merge : !this._optionsByReference[name],\r\n unwrapObservables: path.length > 1 && !!this._optionsByReference[path[0]]\r\n });\r\n !silent && this._changedCallback(name, value, previousValue)\r\n }\r\n }\r\n _prepareRelevantNames(options, name, value, silent) {\r\n if (isPlainObject(value)) {\r\n for (var valueName in value) {\r\n this._prepareRelevantNames(options, \"\".concat(name, \".\").concat(valueName), value[valueName])\r\n }\r\n }\r\n this._namePreparedCallbacks(options, name, value, silent)\r\n }\r\n get() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._options;\r\n var name = arguments.length > 1 ? arguments[1] : void 0;\r\n var unwrapObservables = arguments.length > 2 ? arguments[2] : void 0;\r\n cachedGetters[name] = cachedGetters[name] || compileGetter(name);\r\n return cachedGetters[name](options, {\r\n functionsAsIs: true,\r\n unwrapObservables: unwrapObservables\r\n })\r\n }\r\n set(options, value, merge, silent) {\r\n options = normalizeOptions(options, value);\r\n for (var name in options) {\r\n this._prepareRelevantNames(options, name, options[name], silent)\r\n }\r\n for (var _name in options) {\r\n this._setPreparedValue(_name, options[_name], merge, silent)\r\n }\r\n }\r\n onRelevantNamesPrepared(callBack) {\r\n this._namePreparedCallbacks = callBack\r\n }\r\n onChanging(callBack) {\r\n this._changingCallback = callBack\r\n }\r\n onChanged(callBack) {\r\n this._changedCallback = callBack\r\n }\r\n dispose() {\r\n this._changingCallback = noop;\r\n this._changedCallback = noop\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/comparator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../dom_adapter\";\r\nimport {\r\n toComparable\r\n} from \"./data\";\r\nimport {\r\n isRenderer\r\n} from \"./type\";\r\nvar hasNegation = function(oldValue, newValue) {\r\n return 1 / oldValue === 1 / newValue\r\n};\r\nexport var equals = function(oldValue, newValue) {\r\n oldValue = toComparable(oldValue, true);\r\n newValue = toComparable(newValue, true);\r\n if (oldValue && newValue && isRenderer(oldValue) && isRenderer(newValue)) {\r\n return newValue.is(oldValue)\r\n }\r\n var oldValueIsNaN = oldValue !== oldValue;\r\n var newValueIsNaN = newValue !== newValue;\r\n if (oldValueIsNaN && newValueIsNaN) {\r\n return true\r\n }\r\n if (0 === oldValue && 0 === newValue) {\r\n return hasNegation(oldValue, newValue)\r\n }\r\n if (null === oldValue || \"object\" !== typeof oldValue || domAdapter.isElementNode(oldValue)) {\r\n return oldValue === newValue\r\n }\r\n return false\r\n};\r\n","/**\r\n * DevExtreme (esm/core/options/index.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isFunction,\r\n isObject,\r\n type\r\n} from \"../utils/type\";\r\nimport {\r\n equalByValue,\r\n noop\r\n} from \"../utils/common\";\r\nimport {\r\n OptionManager\r\n} from \"./option_manager\";\r\nimport {\r\n getPathParts\r\n} from \"../utils/data\";\r\nimport {\r\n getFieldName,\r\n getParentName,\r\n convertRulesToOptions,\r\n getNestedOptionValue\r\n} from \"./utils\";\r\nimport {\r\n extend\r\n} from \"../utils/extend\";\r\nexport class Options {\r\n constructor(options, defaultOptions, optionsByReference, deprecatedOptions) {\r\n this._deprecatedCallback;\r\n this._startChangeCallback;\r\n this._endChangeCallback;\r\n this._default = defaultOptions;\r\n this._deprecated = deprecatedOptions;\r\n this._deprecatedNames = [];\r\n this._initDeprecatedNames();\r\n this._optionManager = new OptionManager(options, optionsByReference);\r\n this._optionManager.onRelevantNamesPrepared((options, name, value, silent) => this._setRelevantNames(options, name, value, silent));\r\n this._cachedOptions = {};\r\n this._rules = []\r\n }\r\n set _initial(value) {\r\n this._initialOptions = value\r\n }\r\n get _initial() {\r\n if (!this._initialOptions) {\r\n var rulesOptions = this._getByRules(this.silent(\"defaultOptionsRules\"));\r\n this._initialOptions = this._default;\r\n this._optionManager._setByReference(this._initialOptions, rulesOptions)\r\n }\r\n return this._initialOptions\r\n }\r\n _initDeprecatedNames() {\r\n for (var optionName in this._deprecated) {\r\n this._deprecatedNames.push(optionName)\r\n }\r\n }\r\n _getByRules(rules) {\r\n rules = Array.isArray(rules) ? this._rules.concat(rules) : this._rules;\r\n return convertRulesToOptions(rules)\r\n }\r\n _notifyDeprecated(option) {\r\n var info = this._deprecated[option];\r\n if (info) {\r\n this._deprecatedCallback(option, info)\r\n }\r\n }\r\n _setRelevantNames(options, name, value, silent) {\r\n if (name) {\r\n var normalizedName = this._normalizeName(name, silent);\r\n if (normalizedName && normalizedName !== name) {\r\n this._setField(options, normalizedName, value);\r\n this._clearField(options, name)\r\n }\r\n }\r\n }\r\n _setField(options, fullName, value) {\r\n var fieldName = \"\";\r\n var fieldObject = null;\r\n do {\r\n fieldName = fieldName ? \".\".concat(fieldName) : \"\";\r\n fieldName = getFieldName(fullName) + fieldName;\r\n fullName = getParentName(fullName);\r\n fieldObject = fullName ? this._optionManager.get(options, fullName, false) : options\r\n } while (!fieldObject);\r\n fieldObject[fieldName] = value\r\n }\r\n _clearField(options, name) {\r\n delete options[name];\r\n var previousFieldName = getParentName(name);\r\n var fieldObject = previousFieldName ? this._optionManager.get(options, previousFieldName, false) : options;\r\n if (fieldObject) {\r\n delete fieldObject[getFieldName(name)]\r\n }\r\n }\r\n _normalizeName(name, silent) {\r\n if (this._deprecatedNames.length && name) {\r\n for (var i = 0; i < this._deprecatedNames.length; i++) {\r\n if (this._deprecatedNames[i] === name) {\r\n var deprecate = this._deprecated[name];\r\n if (deprecate) {\r\n !silent && this._notifyDeprecated(name);\r\n return deprecate.alias || name\r\n }\r\n }\r\n }\r\n }\r\n return name\r\n }\r\n addRules(rules) {\r\n this._rules = rules.concat(this._rules)\r\n }\r\n applyRules(rules) {\r\n var options = this._getByRules(rules);\r\n this.silent(options)\r\n }\r\n dispose() {\r\n this._deprecatedCallback = noop;\r\n this._startChangeCallback = noop;\r\n this._endChangeCallback = noop;\r\n this._optionManager.dispose()\r\n }\r\n onChanging(callBack) {\r\n this._optionManager.onChanging(callBack)\r\n }\r\n onChanged(callBack) {\r\n this._optionManager.onChanged(callBack)\r\n }\r\n onDeprecated(callBack) {\r\n this._deprecatedCallback = callBack\r\n }\r\n onStartChange(callBack) {\r\n this._startChangeCallback = callBack\r\n }\r\n onEndChange(callBack) {\r\n this._endChangeCallback = callBack\r\n }\r\n isInitial(name) {\r\n var value = this.silent(name);\r\n var initialValue = this.initial(name);\r\n var areFunctions = isFunction(value) && isFunction(initialValue);\r\n return areFunctions ? value.toString() === initialValue.toString() : equalByValue(value, initialValue)\r\n }\r\n initial(name) {\r\n return getNestedOptionValue(this._initial, name)\r\n }\r\n option(options, value) {\r\n var isGetter = arguments.length < 2 && \"object\" !== type(options);\r\n if (isGetter) {\r\n return this._optionManager.get(void 0, this._normalizeName(options))\r\n } else {\r\n this._startChangeCallback();\r\n try {\r\n this._optionManager.set(options, value)\r\n } finally {\r\n this._endChangeCallback()\r\n }\r\n }\r\n }\r\n silent(options, value) {\r\n var isGetter = arguments.length < 2 && \"object\" !== type(options);\r\n if (isGetter) {\r\n return this._optionManager.get(void 0, options, void 0, true)\r\n } else {\r\n this._optionManager.set(options, value, void 0, true)\r\n }\r\n }\r\n reset(name) {\r\n if (name) {\r\n var fullPath = getPathParts(name);\r\n var value = fullPath.reduce((value, field) => value ? value[field] : this.initial(field), null);\r\n var defaultValue = isObject(value) ? _extends({}, value) : value;\r\n this._optionManager.set(name, defaultValue, false)\r\n }\r\n }\r\n getAliasesByName(name) {\r\n return Object.keys(this._deprecated).filter(aliasName => name === this._deprecated[aliasName].alias)\r\n }\r\n isDeprecated(name) {\r\n return Object.prototype.hasOwnProperty.call(this._deprecated, name)\r\n }\r\n cache(name, options) {\r\n var isGetter = arguments.length < 2;\r\n if (isGetter) {\r\n return this._cachedOptions[name]\r\n } else {\r\n this._cachedOptions[name] = extend(this._cachedOptions[name], options)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/postponed_operations.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred,\r\n when\r\n} from \"./utils/deferred\";\r\nimport {\r\n isDefined\r\n} from \"./utils/type\";\r\nexport class PostponedOperations {\r\n constructor() {\r\n this._postponedOperations = {}\r\n }\r\n add(key, fn, postponedPromise) {\r\n if (key in this._postponedOperations) {\r\n postponedPromise && this._postponedOperations[key].promises.push(postponedPromise)\r\n } else {\r\n var completePromise = new Deferred;\r\n this._postponedOperations[key] = {\r\n fn: fn,\r\n completePromise: completePromise,\r\n promises: postponedPromise ? [postponedPromise] : []\r\n }\r\n }\r\n return this._postponedOperations[key].completePromise.promise()\r\n }\r\n callPostponedOperations() {\r\n for (var key in this._postponedOperations) {\r\n var operation = this._postponedOperations[key];\r\n if (isDefined(operation)) {\r\n if (operation.promises && operation.promises.length) {\r\n when(...operation.promises).done(operation.fn).then(operation.completePromise.resolve)\r\n } else {\r\n operation.fn().done(operation.completePromise.resolve)\r\n }\r\n }\r\n }\r\n this._postponedOperations = {}\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/component.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Config from \"./config\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n Options\r\n} from \"./options/index\";\r\nimport {\r\n convertRulesToOptions\r\n} from \"./options/utils\";\r\nimport Class from \"./class\";\r\nimport Action from \"./action\";\r\nimport errors from \"./errors\";\r\nimport Callbacks from \"./utils/callbacks\";\r\nimport {\r\n EventsStrategy\r\n} from \"./events_strategy\";\r\nimport {\r\n name as publicComponentName\r\n} from \"./utils/public_component\";\r\nimport {\r\n PostponedOperations\r\n} from \"./postponed_operations\";\r\nimport {\r\n isFunction,\r\n isPlainObject,\r\n isDefined\r\n} from \"./utils/type\";\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n getPathParts\r\n} from \"./utils/data\";\r\nvar getEventName = actionName => actionName.charAt(2).toLowerCase() + actionName.substr(3);\r\nvar isInnerOption = optionName => 0 === optionName.indexOf(\"_\", 0);\r\nexport var Component = Class.inherit({\r\n _setDeprecatedOptions() {\r\n this._deprecatedOptions = {}\r\n },\r\n _getDeprecatedOptions() {\r\n return this._deprecatedOptions\r\n },\r\n _getDefaultOptions: () => ({\r\n onInitialized: null,\r\n onOptionChanged: null,\r\n onDisposing: null,\r\n defaultOptionsRules: null\r\n }),\r\n _defaultOptionsRules: () => [],\r\n _setOptionsByDevice(rules) {\r\n this._options.applyRules(rules)\r\n },\r\n _convertRulesToOptions: rules => convertRulesToOptions(rules),\r\n _isInitialOptionValue(name) {\r\n return this._options.isInitial(name)\r\n },\r\n _setOptionsByReference() {\r\n this._optionsByReference = {}\r\n },\r\n _getOptionsByReference() {\r\n return this._optionsByReference\r\n },\r\n ctor() {\r\n var options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n var {\r\n _optionChangedCallbacks: _optionChangedCallbacks,\r\n _disposingCallbacks: _disposingCallbacks\r\n } = options;\r\n this.NAME = publicComponentName(this.constructor);\r\n this._eventsStrategy = EventsStrategy.create(this, options.eventsStrategy);\r\n this._updateLockCount = 0;\r\n this._optionChangedCallbacks = _optionChangedCallbacks || Callbacks();\r\n this._disposingCallbacks = _disposingCallbacks || Callbacks();\r\n this.postponedOperations = new PostponedOperations;\r\n this._createOptions(options)\r\n },\r\n _createOptions(options) {\r\n this.beginUpdate();\r\n try {\r\n this._setOptionsByReference();\r\n this._setDeprecatedOptions();\r\n this._options = new Options(this._getDefaultOptions(), this._getDefaultOptions(), this._getOptionsByReference(), this._getDeprecatedOptions());\r\n this._options.onChanging((name, previousValue, value) => this._initialized && this._optionChanging(name, previousValue, value));\r\n this._options.onDeprecated((option, info) => this._logDeprecatedOptionWarning(option, info));\r\n this._options.onChanged((name, value, previousValue) => this._notifyOptionChanged(name, value, previousValue));\r\n this._options.onStartChange(() => this.beginUpdate());\r\n this._options.onEndChange(() => this.endUpdate());\r\n this._options.addRules(this._defaultOptionsRules());\r\n if (options && options.onInitializing) {\r\n options.onInitializing.apply(this, [options])\r\n }\r\n this._setOptionsByDevice(options.defaultOptionsRules);\r\n this._initOptions(options)\r\n } finally {\r\n this.endUpdate()\r\n }\r\n },\r\n _initOptions(options) {\r\n this.option(options)\r\n },\r\n _init() {\r\n this._createOptionChangedAction();\r\n this.on(\"disposing\", args => {\r\n this._disposingCallbacks.fireWith(this, [args])\r\n })\r\n },\r\n _logDeprecatedOptionWarning(option, info) {\r\n var message = info.message || \"Use the '\".concat(info.alias, \"' option instead\");\r\n errors.log(\"W0001\", this.NAME, option, info.since, message)\r\n },\r\n _logDeprecatedComponentWarning(since, alias) {\r\n errors.log(\"W0000\", this.NAME, since, \"Use the '\".concat(alias, \"' widget instead\"))\r\n },\r\n _createOptionChangedAction() {\r\n this._optionChangedAction = this._createActionByOption(\"onOptionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _createDisposingAction() {\r\n this._disposingAction = this._createActionByOption(\"onDisposing\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"onDisposing\":\r\n case \"onInitialized\":\r\n break;\r\n case \"onOptionChanged\":\r\n this._createOptionChangedAction()\r\n }\r\n },\r\n _dispose() {\r\n this._optionChangedCallbacks.empty();\r\n this._createDisposingAction();\r\n this._disposingAction();\r\n this._eventsStrategy.dispose();\r\n this._options.dispose();\r\n this._disposed = true\r\n },\r\n _lockUpdate() {\r\n this._updateLockCount++\r\n },\r\n _unlockUpdate() {\r\n this._updateLockCount = Math.max(this._updateLockCount - 1, 0)\r\n },\r\n _isUpdateAllowed() {\r\n return 0 === this._updateLockCount\r\n },\r\n _isInitializingRequired() {\r\n return !this._initializing && !this._initialized\r\n },\r\n isInitialized() {\r\n return this._initialized\r\n },\r\n _commitUpdate() {\r\n this.postponedOperations.callPostponedOperations();\r\n this._isInitializingRequired() && this._initializeComponent()\r\n },\r\n _initializeComponent() {\r\n this._initializing = true;\r\n try {\r\n this._init()\r\n } finally {\r\n this._initializing = false;\r\n this._lockUpdate();\r\n this._createActionByOption(\"onInitialized\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })();\r\n this._unlockUpdate();\r\n this._initialized = true\r\n }\r\n },\r\n instance() {\r\n return this\r\n },\r\n beginUpdate: function() {\r\n this._lockUpdate()\r\n },\r\n endUpdate: function() {\r\n this._unlockUpdate();\r\n this._isUpdateAllowed() && this._commitUpdate()\r\n },\r\n _optionChanging: noop,\r\n _notifyOptionChanged(option, value, previousValue) {\r\n if (this._initialized) {\r\n var optionNames = [option].concat(this._options.getAliasesByName(option));\r\n for (var i = 0; i < optionNames.length; i++) {\r\n var name = optionNames[i];\r\n var args = {\r\n name: getPathParts(name)[0],\r\n fullName: name,\r\n value: value,\r\n previousValue: previousValue\r\n };\r\n if (!isInnerOption(name)) {\r\n this._optionChangedCallbacks.fireWith(this, [extend(this._defaultActionArgs(), args)]);\r\n this._optionChangedAction(extend({}, args))\r\n }\r\n if (!this._disposed && this._cancelOptionChange !== name) {\r\n this._optionChanged(args)\r\n }\r\n }\r\n }\r\n },\r\n initialOption(name) {\r\n return this._options.initial(name)\r\n },\r\n _defaultActionConfig() {\r\n return {\r\n context: this,\r\n component: this\r\n }\r\n },\r\n _defaultActionArgs() {\r\n return {\r\n component: this\r\n }\r\n },\r\n _createAction(actionSource, config) {\r\n var action;\r\n return e => {\r\n if (!isDefined(e)) {\r\n e = {}\r\n }\r\n if (!isPlainObject(e)) {\r\n e = {\r\n actionValue: e\r\n }\r\n }\r\n action = action || new Action(actionSource, extend({}, config, this._defaultActionConfig()));\r\n return action.execute.call(action, extend(e, this._defaultActionArgs()))\r\n }\r\n },\r\n _createActionByOption(optionName, config) {\r\n var _this = this;\r\n var action;\r\n var eventName;\r\n var actionFunc;\r\n config = extend({}, config);\r\n var result = function() {\r\n if (!eventName) {\r\n config = config || {};\r\n if (\"string\" !== typeof optionName) {\r\n throw errors.Error(\"E0008\")\r\n }\r\n if (0 === optionName.indexOf(\"on\")) {\r\n eventName = getEventName(optionName)\r\n }\r\n actionFunc = _this.option(optionName)\r\n }\r\n if (!action && !actionFunc && !config.beforeExecute && !config.afterExecute && !_this._eventsStrategy.hasEvent(eventName)) {\r\n return\r\n }\r\n if (!action) {\r\n var beforeExecute = config.beforeExecute;\r\n config.beforeExecute = function() {\r\n for (var _len2 = arguments.length, props = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n props[_key2] = arguments[_key2]\r\n }\r\n beforeExecute && beforeExecute.apply(_this, props);\r\n _this._eventsStrategy.fireEvent(eventName, props[0].args)\r\n };\r\n action = _this._createAction(actionFunc, config)\r\n }\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n if (Config().wrapActionsBeforeExecute) {\r\n var beforeActionExecute = _this.option(\"beforeActionExecute\") || noop;\r\n var wrappedAction = beforeActionExecute(_this, action, config) || action;\r\n return wrappedAction.apply(_this, args)\r\n }\r\n return action.apply(_this, args)\r\n };\r\n if (Config().wrapActionsBeforeExecute) {\r\n return result\r\n }\r\n var onActionCreated = this.option(\"onActionCreated\") || noop;\r\n return onActionCreated(this, result, config) || result\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n },\r\n hasActionSubscription: function(actionName) {\r\n return !!this._options.silent(actionName) || this._eventsStrategy.hasEvent(getEventName(actionName))\r\n },\r\n isOptionDeprecated(name) {\r\n return this._options.isDeprecated(name)\r\n },\r\n _setOptionWithoutOptionChange(name, value) {\r\n this._cancelOptionChange = name;\r\n this.option(name, value);\r\n this._cancelOptionChange = false\r\n },\r\n _getOptionValue(name, context) {\r\n var value = this.option(name);\r\n if (isFunction(value)) {\r\n return value.bind(context)()\r\n }\r\n return value\r\n },\r\n option() {\r\n return this._options.option(...arguments)\r\n },\r\n resetOption(name) {\r\n this.beginUpdate();\r\n this._options.reset(name);\r\n this.endUpdate()\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/core/templates/function_template.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport {\r\n normalizeTemplateElement\r\n} from \"../utils/dom\";\r\nexport class FunctionTemplate extends TemplateBase {\r\n constructor(render) {\r\n super();\r\n this._render = render\r\n }\r\n _renderCore(options) {\r\n return normalizeTemplateElement(this._render(options))\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/templates/child_default_template.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nexport class ChildDefaultTemplate extends TemplateBase {\r\n constructor(name) {\r\n super();\r\n this.name = name\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/templates/template.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../renderer\";\r\nimport {\r\n TemplateBase\r\n} from \"./template_base\";\r\nimport {\r\n normalizeTemplateElement\r\n} from \"../utils/dom\";\r\nimport {\r\n getCurrentTemplateEngine,\r\n registerTemplateEngine,\r\n setTemplateEngine\r\n} from \"./template_engine_registry\";\r\nregisterTemplateEngine(\"default\", {\r\n compile: element => normalizeTemplateElement(element),\r\n render: (template, model, index) => template.clone()\r\n});\r\nsetTemplateEngine(\"default\");\r\nexport class Template extends TemplateBase {\r\n constructor(element) {\r\n super();\r\n this._element = element\r\n }\r\n _renderCore(options) {\r\n var transclude = options.transclude;\r\n if (!transclude && !this._compiledTemplate) {\r\n this._compiledTemplate = getCurrentTemplateEngine().compile(this._element)\r\n }\r\n return $(\"
\").append(transclude ? this._element : getCurrentTemplateEngine().render(this._compiledTemplate, options.model, options.index)).contents()\r\n }\r\n source() {\r\n return $(this._element).clone()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/template_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport config from \"../config\";\r\nimport devices from \"../devices\";\r\nimport {\r\n getPublicElement\r\n} from \"../element\";\r\nimport Errors from \"../errors\";\r\nimport $ from \"../renderer\";\r\nimport {\r\n ChildDefaultTemplate\r\n} from \"../templates/child_default_template\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../templates/empty_template\";\r\nimport {\r\n Template\r\n} from \"../templates/template\";\r\nimport {\r\n TemplateBase\r\n} from \"../templates/template_base\";\r\nimport {\r\n groupBy\r\n} from \"./array\";\r\nimport {\r\n findBestMatches\r\n} from \"./common\";\r\nimport {\r\n normalizeTemplateElement\r\n} from \"./dom\";\r\nimport {\r\n extend\r\n} from \"./extend\";\r\nimport {\r\n isFunction,\r\n isRenderer\r\n} from \"./type\";\r\nexport var findTemplates = (element, name) => {\r\n var templates = $(element).contents().filter(\"[\".concat(\"data-options\", '*=\"').concat(name, '\"]'));\r\n return [].slice.call(templates).map(element => {\r\n var optionsString = $(element).attr(\"data-options\") || \"\";\r\n return {\r\n element: element,\r\n options: config().optionsParser(optionsString)[name]\r\n }\r\n }).filter(template => !!template.options)\r\n};\r\nexport var suitableTemplatesByName = rawTemplates => {\r\n var templatesMap = groupBy(rawTemplates, template => template.options.name);\r\n if (templatesMap[void 0]) {\r\n throw Errors.Error(\"E0023\")\r\n }\r\n var result = {};\r\n Object.keys(templatesMap).forEach(name => {\r\n var _findBestMatches$;\r\n var suitableTemplate = null === (_findBestMatches$ = findBestMatches(devices.current(), templatesMap[name], template => template.options)[0]) || void 0 === _findBestMatches$ ? void 0 : _findBestMatches$.element;\r\n if (suitableTemplate) {\r\n result[name] = suitableTemplate\r\n }\r\n });\r\n return result\r\n};\r\nexport var addOneRenderedCall = template => {\r\n var render = template.render.bind(template);\r\n return extend({}, template, {\r\n render(options) {\r\n var templateResult = render(options);\r\n options && options.onRendered && options.onRendered();\r\n return templateResult\r\n }\r\n })\r\n};\r\nexport var addPublicElementNormalization = template => {\r\n var render = template.render.bind(template);\r\n return extend({}, template, {\r\n render(options) {\r\n var $container = $(options.container);\r\n return render(_extends({}, options, {\r\n container: getPublicElement($container)\r\n }))\r\n }\r\n })\r\n};\r\nexport var getNormalizedTemplateArgs = options => {\r\n var args = [];\r\n if (\"model\" in options) {\r\n args.push(options.model)\r\n }\r\n if (\"index\" in options) {\r\n args.push(options.index)\r\n }\r\n args.push(options.container);\r\n return args\r\n};\r\nexport var validateTemplateSource = templateSource => \"string\" === typeof templateSource ? normalizeTemplateElement(templateSource) : templateSource;\r\nexport var templateKey = templateSource => isRenderer(templateSource) && templateSource[0] || templateSource;\r\nexport var defaultCreateElement = element => new Template(element);\r\nexport var acquireIntegrationTemplate = (templateSource, templates, isAsyncTemplate, skipTemplates) => {\r\n var integrationTemplate = null;\r\n if (!skipTemplates || -1 === skipTemplates.indexOf(templateSource)) {\r\n integrationTemplate = templates[templateSource];\r\n if (integrationTemplate && !(integrationTemplate instanceof TemplateBase)) {\r\n if (isFunction(integrationTemplate.render)) {\r\n integrationTemplate = addPublicElementNormalization(integrationTemplate)\r\n }\r\n if (!isAsyncTemplate) {\r\n integrationTemplate = addOneRenderedCall(integrationTemplate)\r\n }\r\n }\r\n }\r\n return integrationTemplate\r\n};\r\nexport var acquireTemplate = (templateSource, createTemplate, templates, isAsyncTemplate, skipTemplates, defaultTemplates) => {\r\n if (null == templateSource) {\r\n return new EmptyTemplate\r\n }\r\n if (templateSource instanceof ChildDefaultTemplate) {\r\n return defaultTemplates[templateSource.name]\r\n }\r\n if (templateSource instanceof TemplateBase) {\r\n return templateSource\r\n }\r\n if (isFunction(templateSource.render) && !isRenderer(templateSource)) {\r\n return isAsyncTemplate ? templateSource : addOneRenderedCall(templateSource)\r\n }\r\n if (templateSource.nodeType || isRenderer(templateSource)) {\r\n return createTemplate($(templateSource))\r\n }\r\n return acquireIntegrationTemplate(templateSource, templates, isAsyncTemplate, skipTemplates) || defaultTemplates[templateSource] || createTemplate(templateSource)\r\n};\r\n","/**\r\n * DevExtreme (esm/core/template_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"./renderer\";\r\nimport {\r\n isDefined,\r\n isFunction,\r\n isRenderer\r\n} from \"./utils/type\";\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n FunctionTemplate\r\n} from \"./templates/function_template\";\r\nimport {\r\n EmptyTemplate\r\n} from \"./templates/empty_template\";\r\nimport {\r\n findTemplates,\r\n suitableTemplatesByName,\r\n templateKey,\r\n getNormalizedTemplateArgs,\r\n validateTemplateSource,\r\n defaultCreateElement,\r\n acquireTemplate\r\n} from \"./utils/template_manager\";\r\nvar TEXT_NODE = 3;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"template\";\r\nvar TEMPLATE_OPTIONS_NAME = \"dxTemplate\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar DX_POLYMORPH_WIDGET_TEMPLATE = new FunctionTemplate(_ref => {\r\n var {\r\n model: model,\r\n parent: parent\r\n } = _ref;\r\n var widgetName = model.widget;\r\n if (!widgetName) {\r\n return $()\r\n }\r\n var widgetElement = $(\"
\");\r\n var widgetOptions = model.options || {};\r\n if (parent) {\r\n parent._createComponent(widgetElement, widgetName, widgetOptions)\r\n } else {\r\n widgetElement[widgetName](widgetOptions)\r\n }\r\n return widgetElement\r\n});\r\nexport class TemplateManager {\r\n constructor(createElement, anonymousTemplateName) {\r\n this._tempTemplates = [];\r\n this._defaultTemplates = {};\r\n this._anonymousTemplateName = anonymousTemplateName || ANONYMOUS_TEMPLATE_NAME;\r\n this._createElement = createElement || defaultCreateElement;\r\n this._createTemplateIfNeeded = this._createTemplateIfNeeded.bind(this)\r\n }\r\n static createDefaultOptions() {\r\n return {\r\n integrationOptions: {\r\n watchMethod: function(fn, callback) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n if (!options.skipImmediate) {\r\n callback(fn())\r\n }\r\n return noop\r\n },\r\n templates: {\r\n \"dx-polymorph-widget\": DX_POLYMORPH_WIDGET_TEMPLATE\r\n },\r\n useDeferUpdateForTemplates: true\r\n }\r\n }\r\n }\r\n get anonymousTemplateName() {\r\n return this._anonymousTemplateName\r\n }\r\n addDefaultTemplates(templates) {\r\n this._defaultTemplates = extend({}, this._defaultTemplates, templates)\r\n }\r\n dispose() {\r\n this._tempTemplates.forEach(tempTemplate => {\r\n tempTemplate.template.dispose && tempTemplate.template.dispose()\r\n });\r\n this._tempTemplates = []\r\n }\r\n extractTemplates($el) {\r\n var templates = this._extractTemplates($el);\r\n var anonymousTemplateMeta = this._extractAnonymousTemplate($el);\r\n return {\r\n templates: templates,\r\n anonymousTemplateMeta: anonymousTemplateMeta\r\n }\r\n }\r\n _extractTemplates($el) {\r\n var templates = findTemplates($el, TEMPLATE_OPTIONS_NAME);\r\n var suitableTemplates = suitableTemplatesByName(templates);\r\n templates.forEach(_ref2 => {\r\n var {\r\n element: element,\r\n options: {\r\n name: name\r\n }\r\n } = _ref2;\r\n if (element === suitableTemplates[name]) {\r\n $(element).addClass(TEMPLATE_WRAPPER_CLASS).detach()\r\n } else {\r\n $(element).remove()\r\n }\r\n });\r\n return Object.keys(suitableTemplates).map(name => ({\r\n name: name,\r\n template: this._createTemplate(suitableTemplates[name])\r\n }))\r\n }\r\n _extractAnonymousTemplate($el) {\r\n var $anonymousTemplate = $el.contents().detach();\r\n var $notJunkTemplateContent = $anonymousTemplate.filter((_, element) => {\r\n var isTextNode = element.nodeType === TEXT_NODE;\r\n var isEmptyText = $(element).text().trim().length < 1;\r\n return !(isTextNode && isEmptyText)\r\n });\r\n return $notJunkTemplateContent.length > 0 ? {\r\n template: this._createTemplate($anonymousTemplate),\r\n name: this._anonymousTemplateName\r\n } : {}\r\n }\r\n _createTemplateIfNeeded(templateSource) {\r\n var cachedTemplate = this._tempTemplates.filter(tempTemplate => tempTemplate.source === templateKey(templateSource))[0];\r\n if (cachedTemplate) {\r\n return cachedTemplate.template\r\n }\r\n var template = this._createTemplate(templateSource);\r\n this._tempTemplates.push({\r\n template: template,\r\n source: templateKey(templateSource)\r\n });\r\n return template\r\n }\r\n _createTemplate(templateSource) {\r\n return this._createElement(validateTemplateSource(templateSource))\r\n }\r\n getTemplate(templateSource, templates, _ref3, context) {\r\n var {\r\n isAsyncTemplate: isAsyncTemplate,\r\n skipTemplates: skipTemplates\r\n } = _ref3;\r\n if (!isFunction(templateSource)) {\r\n return acquireTemplate(templateSource, this._createTemplateIfNeeded, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates)\r\n }\r\n return new FunctionTemplate(options => {\r\n var templateSourceResult = templateSource.apply(context, getNormalizedTemplateArgs(options));\r\n if (!isDefined(templateSourceResult)) {\r\n return new EmptyTemplate\r\n }\r\n var dispose = false;\r\n var template = acquireTemplate(templateSourceResult, templateSource => {\r\n if (templateSource.nodeType || isRenderer(templateSource) && !$(templateSource).is(\"script\")) {\r\n return new FunctionTemplate(() => templateSource)\r\n }\r\n dispose = true;\r\n return this._createTemplate(templateSource)\r\n }, templates, isAsyncTemplate, skipTemplates, this._defaultTemplates);\r\n var result = template.render(options);\r\n dispose && template.dispose && template.dispose();\r\n return result\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/events/core/keyboard_processor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nvar COMPOSITION_START_EVENT = \"compositionstart\";\r\nvar COMPOSITION_END_EVENT = \"compositionend\";\r\nvar KEYDOWN_EVENT = \"keydown\";\r\nvar NAMESPACE = \"KeyboardProcessor\";\r\nvar createKeyDownOptions = e => ({\r\n keyName: normalizeKeyName(e),\r\n key: e.key,\r\n code: e.code,\r\n ctrl: e.ctrlKey,\r\n location: e.location,\r\n metaKey: e.metaKey,\r\n shift: e.shiftKey,\r\n alt: e.altKey,\r\n which: e.which,\r\n originalEvent: e\r\n});\r\nvar KeyboardProcessor = Class.inherit({\r\n _keydown: addNamespace(KEYDOWN_EVENT, NAMESPACE),\r\n _compositionStart: addNamespace(COMPOSITION_START_EVENT, NAMESPACE),\r\n _compositionEnd: addNamespace(COMPOSITION_END_EVENT, NAMESPACE),\r\n ctor: function(options) {\r\n options = options || {};\r\n if (options.element) {\r\n this._element = $(options.element)\r\n }\r\n if (options.focusTarget) {\r\n this._focusTarget = options.focusTarget\r\n }\r\n this._handler = options.handler;\r\n if (this._element) {\r\n this._processFunction = e => {\r\n var focusTargets = $(this._focusTarget).toArray();\r\n var isNotFocusTarget = this._focusTarget && this._focusTarget !== e.target && !focusTargets.includes(e.target);\r\n var shouldSkipProcessing = this._isComposingJustFinished && 229 === e.which || this._isComposing || isNotFocusTarget;\r\n this._isComposingJustFinished = false;\r\n if (!shouldSkipProcessing) {\r\n this.process(e)\r\n }\r\n };\r\n this._toggleProcessingWithContext = this.toggleProcessing.bind(this);\r\n eventsEngine.on(this._element, this._keydown, this._processFunction);\r\n eventsEngine.on(this._element, this._compositionStart, this._toggleProcessingWithContext);\r\n eventsEngine.on(this._element, this._compositionEnd, this._toggleProcessingWithContext)\r\n }\r\n },\r\n dispose: function() {\r\n if (this._element) {\r\n eventsEngine.off(this._element, this._keydown, this._processFunction);\r\n eventsEngine.off(this._element, this._compositionStart, this._toggleProcessingWithContext);\r\n eventsEngine.off(this._element, this._compositionEnd, this._toggleProcessingWithContext)\r\n }\r\n this._element = void 0;\r\n this._handler = void 0\r\n },\r\n process: function(e) {\r\n this._handler(createKeyDownOptions(e))\r\n },\r\n toggleProcessing: function(_ref) {\r\n var {\r\n type: type\r\n } = _ref;\r\n this._isComposing = type === COMPOSITION_START_EVENT;\r\n this._isComposingJustFinished = !this._isComposing\r\n }\r\n});\r\nKeyboardProcessor.createKeyDownOptions = createKeyDownOptions;\r\nexport default KeyboardProcessor;\r\n","/**\r\n * DevExtreme (esm/events/short.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"./core/events_engine\";\r\nimport KeyboardProcessor from \"./core/keyboard_processor\";\r\nimport {\r\n addNamespace as pureAddNamespace\r\n} from \"./utils/index\";\r\n\r\nfunction addNamespace(event, namespace) {\r\n return namespace ? pureAddNamespace(event, namespace) : event\r\n}\r\n\r\nfunction executeAction(action, args) {\r\n return \"function\" === typeof action ? action(args) : action.execute(args)\r\n}\r\nexport var active = {\r\n on: ($el, active, inactive, opts) => {\r\n var {\r\n selector: selector,\r\n showTimeout: showTimeout,\r\n hideTimeout: hideTimeout,\r\n namespace: namespace\r\n } = opts;\r\n eventsEngine.on($el, addNamespace(\"dxactive\", namespace), selector, {\r\n timeout: showTimeout\r\n }, event => executeAction(active, {\r\n event: event,\r\n element: event.currentTarget\r\n }));\r\n eventsEngine.on($el, addNamespace(\"dxinactive\", namespace), selector, {\r\n timeout: hideTimeout\r\n }, event => executeAction(inactive, {\r\n event: event,\r\n element: event.currentTarget\r\n }))\r\n },\r\n off: ($el, _ref) => {\r\n var {\r\n namespace: namespace,\r\n selector: selector\r\n } = _ref;\r\n eventsEngine.off($el, addNamespace(\"dxactive\", namespace), selector);\r\n eventsEngine.off($el, addNamespace(\"dxinactive\", namespace), selector)\r\n }\r\n};\r\nexport var resize = {\r\n on: function($el, resize) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxresize\", namespace), resize)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxresize\", namespace))\r\n }\r\n};\r\nexport var hover = {\r\n on: ($el, start, end, _ref2) => {\r\n var {\r\n selector: selector,\r\n namespace: namespace\r\n } = _ref2;\r\n eventsEngine.on($el, addNamespace(\"dxhoverend\", namespace), selector, event => end(event));\r\n eventsEngine.on($el, addNamespace(\"dxhoverstart\", namespace), selector, event => executeAction(start, {\r\n element: event.target,\r\n event: event\r\n }))\r\n },\r\n off: ($el, _ref3) => {\r\n var {\r\n selector: selector,\r\n namespace: namespace\r\n } = _ref3;\r\n eventsEngine.off($el, addNamespace(\"dxhoverstart\", namespace), selector);\r\n eventsEngine.off($el, addNamespace(\"dxhoverend\", namespace), selector)\r\n }\r\n};\r\nexport var visibility = {\r\n on: ($el, shown, hiding, _ref4) => {\r\n var {\r\n namespace: namespace\r\n } = _ref4;\r\n eventsEngine.on($el, addNamespace(\"dxhiding\", namespace), hiding);\r\n eventsEngine.on($el, addNamespace(\"dxshown\", namespace), shown)\r\n },\r\n off: ($el, _ref5) => {\r\n var {\r\n namespace: namespace\r\n } = _ref5;\r\n eventsEngine.off($el, addNamespace(\"dxhiding\", namespace));\r\n eventsEngine.off($el, addNamespace(\"dxshown\", namespace))\r\n }\r\n};\r\nexport var focus = {\r\n on: ($el, focusIn, focusOut, _ref6) => {\r\n var {\r\n namespace: namespace\r\n } = _ref6;\r\n eventsEngine.on($el, addNamespace(\"focusin\", namespace), focusIn);\r\n eventsEngine.on($el, addNamespace(\"focusout\", namespace), focusOut)\r\n },\r\n off: ($el, _ref7) => {\r\n var {\r\n namespace: namespace\r\n } = _ref7;\r\n eventsEngine.off($el, addNamespace(\"focusin\", namespace));\r\n eventsEngine.off($el, addNamespace(\"focusout\", namespace))\r\n },\r\n trigger: $el => eventsEngine.trigger($el, \"focus\")\r\n};\r\nexport var dxClick = {\r\n on: function($el, click) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"dxclick\", namespace), click)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"dxclick\", namespace))\r\n }\r\n};\r\nexport var click = {\r\n on: function($el, click) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n eventsEngine.on($el, addNamespace(\"click\", namespace), click)\r\n },\r\n off: function($el) {\r\n var {\r\n namespace: namespace\r\n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n eventsEngine.off($el, addNamespace(\"click\", namespace))\r\n }\r\n};\r\nvar index = 0;\r\nvar keyboardProcessors = {};\r\nvar generateListenerId = () => \"keyboardProcessorId\".concat(index++);\r\nexport var keyboard = {\r\n on: (element, focusTarget, handler) => {\r\n var listenerId = generateListenerId();\r\n keyboardProcessors[listenerId] = new KeyboardProcessor({\r\n element: element,\r\n focusTarget: focusTarget,\r\n handler: handler\r\n });\r\n return listenerId\r\n },\r\n off: listenerId => {\r\n if (listenerId && keyboardProcessors[listenerId]) {\r\n keyboardProcessors[listenerId].dispose();\r\n delete keyboardProcessors[listenerId]\r\n }\r\n },\r\n _getProcessor: listenerId => keyboardProcessors[listenerId]\r\n};\r\n","/**\r\n * DevExtreme (esm/core/dom_component.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport config from \"./config\";\r\nimport errors from \"./errors\";\r\nimport windowResizeCallbacks from \"../core/utils/resize_callbacks\";\r\nimport {\r\n Component\r\n} from \"./component\";\r\nimport {\r\n TemplateManager\r\n} from \"./template_manager\";\r\nimport {\r\n attachInstanceToElement,\r\n getInstanceByElement\r\n} from \"./utils/public_component\";\r\nimport {\r\n addShadowDomStyles\r\n} from \"./utils/shadow_dom\";\r\nimport {\r\n cleanDataRecursive\r\n} from \"./element_data\";\r\nimport {\r\n each\r\n} from \"./utils/iterator\";\r\nimport {\r\n extend\r\n} from \"./utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n grep,\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n isString,\r\n isDefined,\r\n isFunction\r\n} from \"./utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n resize as resizeEvent,\r\n visibility as visibilityEvents\r\n} from \"../events/short\";\r\nvar {\r\n abstract: abstract\r\n} = Component;\r\nvar DOMComponent = Component.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n width: void 0,\r\n height: void 0,\r\n rtlEnabled: config().rtlEnabled,\r\n elementAttr: {},\r\n disabled: false,\r\n integrationOptions: {}\r\n }, this._useTemplates() ? TemplateManager.createDefaultOptions() : {})\r\n },\r\n ctor(element, options) {\r\n this._customClass = null;\r\n this._createElement(element);\r\n attachInstanceToElement(this._$element, this, this._dispose);\r\n this.callBase(options)\r\n },\r\n _createElement(element) {\r\n this._$element = $(element)\r\n },\r\n _getSynchronizableOptionsForCreateComponent: () => [\"rtlEnabled\", \"disabled\", \"templatesRenderAsynchronously\"],\r\n _checkFunctionValueDeprecation: function(optionNames) {\r\n if (!this.option(\"_ignoreFunctionValueDeprecation\")) {\r\n optionNames.forEach(optionName => {\r\n if (isFunction(this.option(optionName))) {\r\n errors.log(\"W0017\", optionName)\r\n }\r\n })\r\n }\r\n },\r\n _visibilityChanged: abstract,\r\n _dimensionChanged: abstract,\r\n _init() {\r\n this.callBase();\r\n this._checkFunctionValueDeprecation([\"width\", \"height\", \"maxHeight\", \"maxWidth\", \"minHeight\", \"minWidth\", \"popupHeight\", \"popupWidth\"]);\r\n this._attachWindowResizeCallback();\r\n this._initTemplateManager()\r\n },\r\n _setOptionsByDevice(instanceCustomRules) {\r\n this.callBase([].concat(this.constructor._classCustomRules || [], instanceCustomRules || []))\r\n },\r\n _isInitialOptionValue(name) {\r\n var isCustomOption = this.constructor._classCustomRules && Object.prototype.hasOwnProperty.call(this._convertRulesToOptions(this.constructor._classCustomRules), name);\r\n return !isCustomOption && this.callBase(name)\r\n },\r\n _attachWindowResizeCallback() {\r\n if (this._isDimensionChangeSupported()) {\r\n var windowResizeCallBack = this._windowResizeCallBack = this._dimensionChanged.bind(this);\r\n windowResizeCallbacks.add(windowResizeCallBack)\r\n }\r\n },\r\n _isDimensionChangeSupported() {\r\n return this._dimensionChanged !== abstract\r\n },\r\n _renderComponent() {\r\n this._initMarkup();\r\n hasWindow() && this._render()\r\n },\r\n _initMarkup() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.option() || {};\r\n this._renderElementAttributes();\r\n this._toggleRTLDirection(rtlEnabled);\r\n this._renderVisibilityChange();\r\n this._renderDimensions()\r\n },\r\n _render() {\r\n this._attachVisibilityChangeHandlers();\r\n addShadowDomStyles(this.$element())\r\n },\r\n _renderElementAttributes() {\r\n var {\r\n elementAttr: elementAttr\r\n } = this.option() || {};\r\n var attributes = extend({}, elementAttr);\r\n var classNames = attributes.class;\r\n delete attributes.class;\r\n this.$element().attr(attributes).removeClass(this._customClass).addClass(classNames);\r\n this._customClass = classNames\r\n },\r\n _renderVisibilityChange() {\r\n if (this._isDimensionChangeSupported()) {\r\n this._attachDimensionChangeHandlers()\r\n }\r\n if (this._isVisibilityChangeSupported()) {\r\n var $element = this.$element();\r\n $element.addClass(\"dx-visibility-change-handler\")\r\n }\r\n },\r\n _renderDimensions() {\r\n var $element = this.$element();\r\n var element = $element.get(0);\r\n var width = this._getOptionValue(\"width\", element);\r\n var height = this._getOptionValue(\"height\", element);\r\n if (this._isCssUpdateRequired(element, height, width)) {\r\n $element.css({\r\n width: null === width ? \"\" : width,\r\n height: null === height ? \"\" : height\r\n })\r\n }\r\n },\r\n _isCssUpdateRequired: (element, height, width) => !!(isDefined(width) || isDefined(height) || element.style.width || element.style.height),\r\n _attachDimensionChangeHandlers() {\r\n var $el = this.$element();\r\n var namespace = \"\".concat(this.NAME, \"VisibilityChange\");\r\n resizeEvent.off($el, {\r\n namespace: namespace\r\n });\r\n resizeEvent.on($el, () => this._dimensionChanged(), {\r\n namespace: namespace\r\n })\r\n },\r\n _attachVisibilityChangeHandlers() {\r\n if (this._isVisibilityChangeSupported()) {\r\n var $el = this.$element();\r\n var namespace = \"\".concat(this.NAME, \"VisibilityChange\");\r\n this._isHidden = !this._isVisible();\r\n visibilityEvents.off($el, {\r\n namespace: namespace\r\n });\r\n visibilityEvents.on($el, () => this._checkVisibilityChanged(\"shown\"), () => this._checkVisibilityChanged(\"hiding\"), {\r\n namespace: namespace\r\n })\r\n }\r\n },\r\n _isVisible() {\r\n var $element = this.$element();\r\n return $element.is(\":visible\")\r\n },\r\n _checkVisibilityChanged(action) {\r\n var isVisible = this._isVisible();\r\n if (isVisible) {\r\n if (\"hiding\" === action && !this._isHidden) {\r\n this._visibilityChanged(false);\r\n this._isHidden = true\r\n } else if (\"shown\" === action && this._isHidden) {\r\n this._isHidden = false;\r\n this._visibilityChanged(true)\r\n }\r\n }\r\n },\r\n _isVisibilityChangeSupported() {\r\n return this._visibilityChanged !== abstract && hasWindow()\r\n },\r\n _clean: noop,\r\n _modelByElement() {\r\n var {\r\n modelByElement: modelByElement\r\n } = this.option();\r\n var $element = this.$element();\r\n return modelByElement ? modelByElement($element) : void 0\r\n },\r\n _invalidate() {\r\n if (this._isUpdateAllowed()) {\r\n throw errors.Error(\"E0007\")\r\n }\r\n this._requireRefresh = true\r\n },\r\n _refresh() {\r\n this._clean();\r\n this._renderComponent()\r\n },\r\n _dispose() {\r\n this._templateManager && this._templateManager.dispose();\r\n this.callBase();\r\n this._clean();\r\n this._detachWindowResizeCallback()\r\n },\r\n _detachWindowResizeCallback() {\r\n if (this._isDimensionChangeSupported()) {\r\n windowResizeCallbacks.remove(this._windowResizeCallBack)\r\n }\r\n },\r\n _toggleRTLDirection(rtl) {\r\n var $element = this.$element();\r\n $element.toggleClass(\"dx-rtl\", rtl)\r\n },\r\n _createComponent(element, component) {\r\n var config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var synchronizableOptions = grep(this._getSynchronizableOptionsForCreateComponent(), value => !(value in config));\r\n var {\r\n integrationOptions: integrationOptions\r\n } = this.option();\r\n var {\r\n nestedComponentOptions: nestedComponentOptions\r\n } = this.option();\r\n nestedComponentOptions = nestedComponentOptions || noop;\r\n var nestedComponentConfig = extend({\r\n integrationOptions: integrationOptions\r\n }, nestedComponentOptions(this));\r\n synchronizableOptions.forEach(optionName => nestedComponentConfig[optionName] = this.option(optionName));\r\n this._extendConfig(config, nestedComponentConfig);\r\n var instance = void 0;\r\n if (isString(component)) {\r\n var $element = $(element)[component](config);\r\n instance = $element[component](\"instance\")\r\n } else if (element) {\r\n instance = component.getInstance(element);\r\n if (instance) {\r\n instance.option(config)\r\n } else {\r\n instance = new component(element, config)\r\n }\r\n }\r\n if (instance) {\r\n var optionChangedHandler = _ref => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n if (synchronizableOptions.includes(name)) {\r\n instance.option(name, value)\r\n }\r\n };\r\n this.on(\"optionChanged\", optionChangedHandler);\r\n instance.on(\"disposing\", () => this.off(\"optionChanged\", optionChangedHandler))\r\n }\r\n return instance\r\n },\r\n _extendConfig(config, extendConfig) {\r\n each(extendConfig, (key, value) => {\r\n !Object.prototype.hasOwnProperty.call(config, key) && (config[key] = value)\r\n })\r\n },\r\n _defaultActionConfig() {\r\n var $element = this.$element();\r\n var context = this._modelByElement($element);\r\n return extend(this.callBase(), {\r\n context: context\r\n })\r\n },\r\n _defaultActionArgs() {\r\n var $element = this.$element();\r\n var model = this._modelByElement($element);\r\n var element = this.element();\r\n return extend(this.callBase(), {\r\n element: element,\r\n model: model\r\n })\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this._renderDimensions();\r\n break;\r\n case \"rtlEnabled\":\r\n this._invalidate();\r\n break;\r\n case \"elementAttr\":\r\n this._renderElementAttributes();\r\n break;\r\n case \"disabled\":\r\n case \"integrationOptions\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _removeAttributes(element) {\r\n var attrs = element.attributes;\r\n for (var i = attrs.length - 1; i >= 0; i--) {\r\n var attr = attrs[i];\r\n if (attr) {\r\n var {\r\n name: name\r\n } = attr;\r\n if (!name.indexOf(\"aria-\") || -1 !== name.indexOf(\"dx-\") || \"role\" === name || \"style\" === name || \"tabindex\" === name) {\r\n element.removeAttribute(name)\r\n }\r\n }\r\n }\r\n },\r\n _removeClasses(element) {\r\n element.className = element.className.split(\" \").filter(cssClass => 0 !== cssClass.lastIndexOf(\"dx-\", 0)).join(\" \")\r\n },\r\n _updateDOMComponent(renderRequired) {\r\n if (renderRequired) {\r\n this._renderComponent()\r\n } else if (this._requireRefresh) {\r\n this._requireRefresh = false;\r\n this._refresh()\r\n }\r\n },\r\n endUpdate() {\r\n var renderRequired = this._isInitializingRequired();\r\n this.callBase();\r\n this._isUpdateAllowed() && this._updateDOMComponent(renderRequired)\r\n },\r\n $element() {\r\n return this._$element\r\n },\r\n element() {\r\n var $element = this.$element();\r\n return getPublicElement($element)\r\n },\r\n dispose() {\r\n var element = this.$element().get(0);\r\n cleanDataRecursive(element, true);\r\n element.textContent = \"\";\r\n this._removeAttributes(element);\r\n this._removeClasses(element)\r\n },\r\n resetOption(optionName) {\r\n this.callBase(optionName);\r\n if (\"width\" === optionName || \"height\" === optionName) {\r\n var initialOption = this.initialOption(optionName);\r\n !isDefined(initialOption) && this.$element().css(optionName, \"\")\r\n }\r\n },\r\n _getAnonymousTemplateName() {\r\n return\r\n },\r\n _initTemplateManager() {\r\n if (this._templateManager || !this._useTemplates()) {\r\n return\r\n }\r\n var {\r\n integrationOptions: integrationOptions = {}\r\n } = this.option();\r\n var {\r\n createTemplate: createTemplate\r\n } = integrationOptions;\r\n this._templateManager = new TemplateManager(createTemplate, this._getAnonymousTemplateName());\r\n this._initTemplates()\r\n },\r\n _initTemplates() {\r\n var {\r\n templates: templates,\r\n anonymousTemplateMeta: anonymousTemplateMeta\r\n } = this._templateManager.extractTemplates(this.$element());\r\n var anonymousTemplate = this.option(\"integrationOptions.templates.\".concat(anonymousTemplateMeta.name));\r\n templates.forEach(_ref2 => {\r\n var {\r\n name: name,\r\n template: template\r\n } = _ref2;\r\n this._options.silent(\"integrationOptions.templates.\".concat(name), template)\r\n });\r\n if (anonymousTemplateMeta.name && !anonymousTemplate) {\r\n this._options.silent(\"integrationOptions.templates.\".concat(anonymousTemplateMeta.name), anonymousTemplateMeta.template);\r\n this._options.silent(\"_hasAnonymousTemplateContent\", true)\r\n }\r\n },\r\n _getTemplateByOption(optionName) {\r\n return this._getTemplate(this.option(optionName))\r\n },\r\n _getTemplate(templateSource) {\r\n var templates = this.option(\"integrationOptions.templates\");\r\n var isAsyncTemplate = this.option(\"templatesRenderAsynchronously\");\r\n var skipTemplates = this.option(\"integrationOptions.skipTemplates\");\r\n return this._templateManager.getTemplate(templateSource, templates, {\r\n isAsyncTemplate: isAsyncTemplate,\r\n skipTemplates: skipTemplates\r\n }, this)\r\n },\r\n _saveTemplate(name, template) {\r\n this._setOptionWithoutOptionChange(\"integrationOptions.templates.\" + name, this._templateManager._createTemplate(template))\r\n },\r\n _useTemplates: () => true\r\n});\r\nDOMComponent.getInstance = function(element) {\r\n return getInstanceByElement($(element), this)\r\n};\r\nDOMComponent.defaultOptions = function(rule) {\r\n this._classCustomRules = this._classCustomRules || [];\r\n this._classCustomRules.push(rule)\r\n};\r\nexport default DOMComponent;\r\n","/**\r\n * DevExtreme (esm/ui/resizable.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getOuterWidth,\r\n getOuterHeight,\r\n getInnerWidth,\r\n getInnerHeight,\r\n getWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n pairToObject\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n fitIntoRange,\r\n inRange\r\n} from \"../core/utils/math\";\r\nimport {\r\n isPlainObject,\r\n isFunction,\r\n isWindow\r\n} from \"../core/utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n start as dragEventStart,\r\n move as dragEventMove,\r\n end as dragEventEnd\r\n} from \"../events/drag\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../events/visibility_change\";\r\nvar RESIZABLE = \"dxResizable\";\r\nvar RESIZABLE_CLASS = \"dx-resizable\";\r\nvar RESIZABLE_RESIZING_CLASS = \"dx-resizable-resizing\";\r\nvar RESIZABLE_HANDLE_CLASS = \"dx-resizable-handle\";\r\nvar RESIZABLE_HANDLE_TOP_CLASS = \"dx-resizable-handle-top\";\r\nvar RESIZABLE_HANDLE_BOTTOM_CLASS = \"dx-resizable-handle-bottom\";\r\nvar RESIZABLE_HANDLE_LEFT_CLASS = \"dx-resizable-handle-left\";\r\nvar RESIZABLE_HANDLE_RIGHT_CLASS = \"dx-resizable-handle-right\";\r\nvar RESIZABLE_HANDLE_CORNER_CLASS = \"dx-resizable-handle-corner\";\r\nvar DRAGSTART_START_EVENT_NAME = addNamespace(dragEventStart, RESIZABLE);\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventMove, RESIZABLE);\r\nvar DRAGSTART_END_EVENT_NAME = addNamespace(dragEventEnd, RESIZABLE);\r\nvar SIDE_BORDER_WIDTH_STYLES = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\nvar Resizable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n handles: \"all\",\r\n step: \"1\",\r\n stepPrecision: \"simple\",\r\n area: void 0,\r\n minWidth: 30,\r\n maxWidth: 1 / 0,\r\n minHeight: 30,\r\n maxHeight: 1 / 0,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n roundStepValue: true,\r\n keepAspectRatio: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(RESIZABLE_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderHandles()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderActions()\r\n },\r\n _renderActions: function() {\r\n this._resizeStartAction = this._createActionByOption(\"onResizeStart\");\r\n this._resizeEndAction = this._createActionByOption(\"onResizeEnd\");\r\n this._resizeAction = this._createActionByOption(\"onResize\")\r\n },\r\n _renderHandles: function() {\r\n this._handles = [];\r\n var handles = this.option(\"handles\");\r\n if (\"none\" === handles || !handles) {\r\n return\r\n }\r\n var directions = \"all\" === handles ? [\"top\", \"bottom\", \"left\", \"right\"] : handles.split(\" \");\r\n var activeHandlesMap = {};\r\n each(directions, (index, handleName) => {\r\n activeHandlesMap[handleName] = true;\r\n this._renderHandle(handleName)\r\n });\r\n activeHandlesMap.bottom && activeHandlesMap.right && this._renderHandle(\"corner-bottom-right\");\r\n activeHandlesMap.bottom && activeHandlesMap.left && this._renderHandle(\"corner-bottom-left\");\r\n activeHandlesMap.top && activeHandlesMap.right && this._renderHandle(\"corner-top-right\");\r\n activeHandlesMap.top && activeHandlesMap.left && this._renderHandle(\"corner-top-left\");\r\n this._attachEventHandlers()\r\n },\r\n _renderHandle: function(handleName) {\r\n var $handle = $(\"
\").addClass(RESIZABLE_HANDLE_CLASS).addClass(RESIZABLE_HANDLE_CLASS + \"-\" + handleName).appendTo(this.$element());\r\n this._handles.push($handle)\r\n },\r\n _attachEventHandlers: function() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var handlers = {};\r\n handlers[DRAGSTART_START_EVENT_NAME] = this._dragStartHandler.bind(this);\r\n handlers[DRAGSTART_EVENT_NAME] = this._dragHandler.bind(this);\r\n handlers[DRAGSTART_END_EVENT_NAME] = this._dragEndHandler.bind(this);\r\n this._handles.forEach(handleElement => {\r\n eventsEngine.on(handleElement, handlers, {\r\n direction: \"both\",\r\n immediate: true\r\n })\r\n })\r\n },\r\n _detachEventHandlers: function() {\r\n this._handles.forEach(handleElement => {\r\n eventsEngine.off(handleElement)\r\n })\r\n },\r\n _toggleEventHandlers: function(shouldAttachEvents) {\r\n shouldAttachEvents ? this._attachEventHandlers() : this._detachEventHandlers()\r\n },\r\n _getElementSize: function() {\r\n var $element = this.$element();\r\n return \"border-box\" === $element.css(\"boxSizing\") ? {\r\n width: getOuterWidth($element),\r\n height: getOuterHeight($element)\r\n } : {\r\n width: getWidth($element),\r\n height: getHeight($element)\r\n }\r\n },\r\n _dragStartHandler: function(e) {\r\n var $element = this.$element();\r\n if ($element.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n this._toggleResizingClass(true);\r\n this._movingSides = this._getMovingSides(e);\r\n this._elementLocation = locate($element);\r\n this._elementSize = this._getElementSize();\r\n this._renderDragOffsets(e);\r\n this._resizeStartAction({\r\n event: e,\r\n width: this._elementSize.width,\r\n height: this._elementSize.height,\r\n handles: this._movingSides\r\n });\r\n e.targetElements = null\r\n },\r\n _toggleResizingClass: function(value) {\r\n this.$element().toggleClass(RESIZABLE_RESIZING_CLASS, value)\r\n },\r\n _renderDragOffsets: function(e) {\r\n var area = this._getArea();\r\n if (!area) {\r\n return\r\n }\r\n var $handle = $(e.target).closest(\".\" + RESIZABLE_HANDLE_CLASS);\r\n var handleWidth = getOuterWidth($handle);\r\n var handleHeight = getOuterHeight($handle);\r\n var handleOffset = $handle.offset();\r\n var areaOffset = area.offset;\r\n var scrollOffset = this._getAreaScrollOffset();\r\n e.maxLeftOffset = this._leftMaxOffset = handleOffset.left - areaOffset.left - scrollOffset.scrollX;\r\n e.maxRightOffset = this._rightMaxOffset = areaOffset.left + area.width - handleOffset.left - handleWidth + scrollOffset.scrollX;\r\n e.maxTopOffset = this._topMaxOffset = handleOffset.top - areaOffset.top - scrollOffset.scrollY;\r\n e.maxBottomOffset = this._bottomMaxOffset = areaOffset.top + area.height - handleOffset.top - handleHeight + scrollOffset.scrollY\r\n },\r\n _getBorderWidth: function($element, direction) {\r\n if (isWindow($element.get(0))) {\r\n return 0\r\n }\r\n var borderWidth = $element.css(SIDE_BORDER_WIDTH_STYLES[direction]);\r\n return parseInt(borderWidth) || 0\r\n },\r\n _proportionate: function(direction, value) {\r\n var size = this._elementSize;\r\n var factor = \"x\" === direction ? size.width / size.height : size.height / size.width;\r\n return value * factor\r\n },\r\n _getProportionalDelta: function(_ref) {\r\n var {\r\n x: x,\r\n y: y\r\n } = _ref;\r\n var proportionalY = this._proportionate(\"y\", x);\r\n if (proportionalY >= y) {\r\n return {\r\n x: x,\r\n y: proportionalY\r\n }\r\n }\r\n var proportionalX = this._proportionate(\"x\", y);\r\n if (proportionalX >= x) {\r\n return {\r\n x: proportionalX,\r\n y: y\r\n }\r\n }\r\n return {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n _getDirectionName: function(axis) {\r\n var sides = this._movingSides;\r\n if (\"x\" === axis) {\r\n return sides.left ? \"left\" : \"right\"\r\n } else {\r\n return sides.top ? \"top\" : \"bottom\"\r\n }\r\n },\r\n _fitIntoArea: function(axis, value) {\r\n var _this;\r\n var directionName = this._getDirectionName(axis);\r\n return Math.min(value, null !== (_this = this[\"_\".concat(directionName, \"MaxOffset\")]) && void 0 !== _this ? _this : 1 / 0)\r\n },\r\n _fitDeltaProportionally: function(delta) {\r\n var fittedDelta = _extends({}, delta);\r\n var size = this._elementSize;\r\n var {\r\n minWidth: minWidth,\r\n minHeight: minHeight,\r\n maxWidth: maxWidth,\r\n maxHeight: maxHeight\r\n } = this.option();\r\n var getWidth = () => size.width + fittedDelta.x;\r\n var getHeight = () => size.height + fittedDelta.y;\r\n var isInArea = axis => fittedDelta[axis] === this._fitIntoArea(axis, fittedDelta[axis]);\r\n var isFittedX = () => inRange(getWidth(), minWidth, maxWidth) && isInArea(\"x\");\r\n var isFittedY = () => inRange(getHeight(), minHeight, maxHeight) && isInArea(\"y\");\r\n if (!isFittedX()) {\r\n var x = this._fitIntoArea(\"x\", fitIntoRange(getWidth(), minWidth, maxWidth) - size.width);\r\n fittedDelta = {\r\n x: x,\r\n y: this._proportionate(\"y\", x)\r\n }\r\n }\r\n if (!isFittedY()) {\r\n var y = this._fitIntoArea(\"y\", fitIntoRange(getHeight(), minHeight, maxHeight) - size.height);\r\n fittedDelta = {\r\n x: this._proportionate(\"x\", y),\r\n y: y\r\n }\r\n }\r\n return isFittedX() && isFittedY() ? fittedDelta : {\r\n x: 0,\r\n y: 0\r\n }\r\n },\r\n _fitDelta: function(_ref2) {\r\n var {\r\n x: x,\r\n y: y\r\n } = _ref2;\r\n var size = this._elementSize;\r\n var {\r\n minWidth: minWidth,\r\n minHeight: minHeight,\r\n maxWidth: maxWidth,\r\n maxHeight: maxHeight\r\n } = this.option();\r\n return {\r\n x: fitIntoRange(size.width + x, minWidth, maxWidth) - size.width,\r\n y: fitIntoRange(size.height + y, minHeight, maxHeight) - size.height\r\n }\r\n },\r\n _getDeltaByOffset: function(offset) {\r\n var sides = this._movingSides;\r\n var shouldKeepAspectRatio = this._isCornerHandler(sides) && this.option(\"keepAspectRatio\");\r\n var delta = {\r\n x: offset.x * (sides.left ? -1 : 1),\r\n y: offset.y * (sides.top ? -1 : 1)\r\n };\r\n if (shouldKeepAspectRatio) {\r\n var proportionalDelta = this._getProportionalDelta(delta);\r\n var fittedProportionalDelta = this._fitDeltaProportionally(proportionalDelta);\r\n delta = fittedProportionalDelta\r\n } else {\r\n var fittedDelta = this._fitDelta(delta);\r\n var roundedFittedDelta = this._roundByStep(fittedDelta);\r\n delta = roundedFittedDelta\r\n }\r\n return delta\r\n },\r\n _updatePosition: function(delta, _ref3) {\r\n var {\r\n width: width,\r\n height: height\r\n } = _ref3;\r\n var location = this._elementLocation;\r\n var sides = this._movingSides;\r\n var $element = this.$element();\r\n var elementRect = this._getElementSize();\r\n var offsetTop = delta.y * (sides.top ? -1 : 1) - ((elementRect.height || height) - height);\r\n var offsetLeft = delta.x * (sides.left ? -1 : 1) - ((elementRect.width || width) - width);\r\n move($element, {\r\n top: location.top + (sides.top ? offsetTop : 0),\r\n left: location.left + (sides.left ? offsetLeft : 0)\r\n })\r\n },\r\n _dragHandler: function(e) {\r\n var offset = this._getOffset(e);\r\n var delta = this._getDeltaByOffset(offset);\r\n var dimensions = this._updateDimensions(delta);\r\n this._updatePosition(delta, dimensions);\r\n this._triggerResizeAction(e, dimensions)\r\n },\r\n _updateDimensions: function(delta) {\r\n var isAbsoluteSize = size => \"px\" === size.substring(size.length - 2);\r\n var isStepPrecisionStrict = \"strict\" === this.option(\"stepPrecision\");\r\n var size = this._elementSize;\r\n var width = size.width + delta.x;\r\n var height = size.height + delta.y;\r\n var elementStyle = this.$element().get(0).style;\r\n var shouldRenderWidth = delta.x || isStepPrecisionStrict || isAbsoluteSize(elementStyle.width);\r\n var shouldRenderHeight = delta.y || isStepPrecisionStrict || isAbsoluteSize(elementStyle.height);\r\n if (shouldRenderWidth) {\r\n this.option({\r\n width: width\r\n })\r\n }\r\n if (shouldRenderHeight) {\r\n this.option({\r\n height: height\r\n })\r\n }\r\n return {\r\n width: shouldRenderWidth ? width : size.width,\r\n height: shouldRenderHeight ? height : size.height\r\n }\r\n },\r\n _triggerResizeAction: function(e, _ref4) {\r\n var {\r\n width: width,\r\n height: height\r\n } = _ref4;\r\n this._resizeAction({\r\n event: e,\r\n width: this.option(\"width\") || width,\r\n height: this.option(\"height\") || height,\r\n handles: this._movingSides\r\n });\r\n triggerResizeEvent(this.$element())\r\n },\r\n _isCornerHandler: sides => 0 === Object.values(sides).reduce((xor, value) => xor ^ value, 0),\r\n _getOffset: function(e) {\r\n var offset = e.offset;\r\n var sides = this._movingSides;\r\n if (!sides.left && !sides.right) {\r\n offset.x = 0\r\n }\r\n if (!sides.top && !sides.bottom) {\r\n offset.y = 0\r\n }\r\n return offset\r\n },\r\n _roundByStep: function(delta) {\r\n return \"strict\" === this.option(\"stepPrecision\") ? this._roundStrict(delta) : this._roundNotStrict(delta)\r\n },\r\n _getSteps: function() {\r\n return pairToObject(this.option(\"step\"), !this.option(\"roundStepValue\"))\r\n },\r\n _roundNotStrict: function(delta) {\r\n var steps = this._getSteps();\r\n return {\r\n x: delta.x - delta.x % steps.h,\r\n y: delta.y - delta.y % steps.v\r\n }\r\n },\r\n _roundStrict: function(delta) {\r\n var sides = this._movingSides;\r\n var offset = {\r\n x: delta.x * (sides.left ? -1 : 1),\r\n y: delta.y * (sides.top ? -1 : 1)\r\n };\r\n var steps = this._getSteps();\r\n var location = this._elementLocation;\r\n var size = this._elementSize;\r\n var xPos = sides.left ? location.left : location.left + size.width;\r\n var yPos = sides.top ? location.top : location.top + size.height;\r\n var newXShift = (xPos + offset.x) % steps.h;\r\n var newYShift = (yPos + offset.y) % steps.v;\r\n var sign = Math.sign || (x => {\r\n x = +x;\r\n if (0 === x || isNaN(x)) {\r\n return x\r\n }\r\n return x > 0 ? 1 : -1\r\n });\r\n var separatorOffset = (steps, offset) => (1 + .2 * sign(offset)) % 1 * steps;\r\n var isSmallOffset = (offset, steps) => Math.abs(offset) < .2 * steps;\r\n var newOffsetX = offset.x - newXShift;\r\n var newOffsetY = offset.y - newYShift;\r\n if (newXShift > separatorOffset(steps.h, offset.x)) {\r\n newOffsetX += steps.h\r\n }\r\n if (newYShift > separatorOffset(steps.v, offset.y)) {\r\n newOffsetY += steps.v\r\n }\r\n var roundedOffset_x = (sides.left || sides.right) && !isSmallOffset(offset.x, steps.h) ? newOffsetX : 0,\r\n roundedOffset_y = (sides.top || sides.bottom) && !isSmallOffset(offset.y, steps.v) ? newOffsetY : 0;\r\n return {\r\n x: roundedOffset_x * (sides.left ? -1 : 1),\r\n y: roundedOffset_y * (sides.top ? -1 : 1)\r\n }\r\n },\r\n _getMovingSides: function(e) {\r\n var $target = $(e.target);\r\n var hasCornerTopLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-left\");\r\n var hasCornerTopRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-top-right\");\r\n var hasCornerBottomLeftClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-left\");\r\n var hasCornerBottomRightClass = $target.hasClass(RESIZABLE_HANDLE_CORNER_CLASS + \"-bottom-right\");\r\n return {\r\n top: $target.hasClass(RESIZABLE_HANDLE_TOP_CLASS) || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: $target.hasClass(RESIZABLE_HANDLE_LEFT_CLASS) || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: $target.hasClass(RESIZABLE_HANDLE_BOTTOM_CLASS) || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: $target.hasClass(RESIZABLE_HANDLE_RIGHT_CLASS) || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n },\r\n _getArea: function() {\r\n var area = this.option(\"area\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n if (isPlainObject(area)) {\r\n return this._getAreaFromObject(area)\r\n }\r\n return this._getAreaFromElement(area)\r\n },\r\n _getAreaScrollOffset: function() {\r\n var area = this.option(\"area\");\r\n var isElement = !isFunction(area) && !isPlainObject(area);\r\n var scrollOffset = {\r\n scrollY: 0,\r\n scrollX: 0\r\n };\r\n if (isElement) {\r\n var areaElement = $(area)[0];\r\n if (isWindow(areaElement)) {\r\n scrollOffset.scrollX = areaElement.pageXOffset;\r\n scrollOffset.scrollY = areaElement.pageYOffset\r\n }\r\n }\r\n return scrollOffset\r\n },\r\n _getAreaFromObject: function(area) {\r\n var result = {\r\n width: area.right - area.left,\r\n height: area.bottom - area.top,\r\n offset: {\r\n left: area.left,\r\n top: area.top\r\n }\r\n };\r\n this._correctAreaGeometry(result);\r\n return result\r\n },\r\n _getAreaFromElement: function(area) {\r\n var $area = $(area);\r\n var result;\r\n if ($area.length) {\r\n result = {\r\n width: getInnerWidth($area),\r\n height: getInnerHeight($area),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow($area[0]) ? {} : $area.offset())\r\n };\r\n this._correctAreaGeometry(result, $area)\r\n }\r\n return result\r\n },\r\n _correctAreaGeometry: function(result, $area) {\r\n var areaBorderLeft = $area ? this._getBorderWidth($area, \"left\") : 0;\r\n var areaBorderTop = $area ? this._getBorderWidth($area, \"top\") : 0;\r\n result.offset.left += areaBorderLeft + this._getBorderWidth(this.$element(), \"left\");\r\n result.offset.top += areaBorderTop + this._getBorderWidth(this.$element(), \"top\");\r\n result.width -= getOuterWidth(this.$element()) - getInnerWidth(this.$element());\r\n result.height -= getOuterHeight(this.$element()) - getInnerHeight(this.$element())\r\n },\r\n _dragEndHandler: function(e) {\r\n var $element = this.$element();\r\n this._resizeEndAction({\r\n event: e,\r\n width: getOuterWidth($element),\r\n height: getOuterHeight($element),\r\n handles: this._movingSides\r\n });\r\n this._toggleResizingClass(false)\r\n },\r\n _renderWidth: function(width) {\r\n this.option(\"width\", fitIntoRange(width, this.option(\"minWidth\"), this.option(\"maxWidth\")))\r\n },\r\n _renderHeight: function(height) {\r\n this.option(\"height\", fitIntoRange(height, this.option(\"minHeight\"), this.option(\"maxHeight\")))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n this._toggleEventHandlers(!args.value);\r\n this.callBase(args);\r\n break;\r\n case \"handles\":\r\n this._invalidate();\r\n break;\r\n case \"minWidth\":\r\n case \"maxWidth\":\r\n hasWindow() && this._renderWidth(getOuterWidth(this.$element()));\r\n break;\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n hasWindow() && this._renderHeight(getOuterHeight(this.$element()));\r\n break;\r\n case \"onResize\":\r\n case \"onResizeStart\":\r\n case \"onResizeEnd\":\r\n this._renderActions();\r\n break;\r\n case \"area\":\r\n case \"stepPrecision\":\r\n case \"step\":\r\n case \"roundStepValue\":\r\n case \"keepAspectRatio\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n this.$element().find(\".\" + RESIZABLE_HANDLE_CLASS).remove()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nregisterComponent(RESIZABLE, Resizable);\r\nexport default Resizable;\r\n","/**\r\n * DevExtreme (esm/ui/validation_engine.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../core/class\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n EventsStrategy\r\n} from \"../core/events_strategy\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isDate,\r\n isBoolean,\r\n isObject,\r\n isFunction,\r\n isPromise,\r\n isNumeric\r\n} from \"../core/utils/type\";\r\nimport numberLocalization from \"../localization/number\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport {\r\n fromPromise,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar STATUS = {\r\n valid: \"valid\",\r\n invalid: \"invalid\",\r\n pending: \"pending\"\r\n};\r\nclass BaseRuleValidator {\r\n constructor() {\r\n this.NAME = \"base\"\r\n }\r\n defaultMessage(value) {\r\n return messageLocalization.getFormatter(\"validation-\".concat(this.NAME))(value)\r\n }\r\n defaultFormattedMessage(value) {\r\n return messageLocalization.getFormatter(\"validation-\".concat(this.NAME, \"-formatted\"))(value)\r\n }\r\n _isValueEmpty(value) {\r\n return !rulesValidators.required.validate(value, {})\r\n }\r\n validate(value, rule) {\r\n var valueArray = Array.isArray(value) ? value : [value];\r\n var result = true;\r\n if (valueArray.length) {\r\n valueArray.every(itemValue => {\r\n result = this._validate(itemValue, rule);\r\n return result\r\n })\r\n } else {\r\n result = this._validate(null, rule)\r\n }\r\n return result\r\n }\r\n}\r\nclass RequiredRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"required\"\r\n }\r\n _validate(value, rule) {\r\n if (!isDefined(value)) {\r\n return false\r\n }\r\n if (false === value) {\r\n return false\r\n }\r\n value = String(value);\r\n if (rule.trim || !isDefined(rule.trim)) {\r\n value = value.trim()\r\n }\r\n return \"\" !== value\r\n }\r\n}\r\nclass NumericRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"numeric\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n if (rule.useCultureSettings && isString(value)) {\r\n return !isNaN(numberLocalization.parse(value))\r\n } else {\r\n return isNumeric(value)\r\n }\r\n }\r\n}\r\nclass RangeRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"range\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validNumber = rulesValidators.numeric.validate(value, rule);\r\n var validValue = isDefined(value) && \"\" !== value;\r\n var number = validNumber ? parseFloat(value) : validValue && value.valueOf();\r\n var min = rule.min;\r\n var max = rule.max;\r\n if (!(validNumber || isDate(value)) && !validValue) {\r\n return false\r\n }\r\n if (isDefined(min)) {\r\n if (isDefined(max)) {\r\n return number >= min && number <= max\r\n }\r\n return number >= min\r\n } else if (isDefined(max)) {\r\n return number <= max\r\n } else {\r\n throw errors.Error(\"E0101\")\r\n }\r\n }\r\n}\r\nclass StringLengthRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"stringLength\"\r\n }\r\n _validate(value, rule) {\r\n var _value;\r\n value = String(null !== (_value = value) && void 0 !== _value ? _value : \"\");\r\n if (rule.trim || !isDefined(rule.trim)) {\r\n value = value.trim()\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.range.validate(value.length, extend({}, rule))\r\n }\r\n}\r\nclass CustomRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"custom\"\r\n }\r\n validate(value, rule) {\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && isFunction(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = isFunction(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n extend(params, extraParams)\r\n }\r\n return rule.validationCallback(params)\r\n }\r\n}\r\nclass AsyncRuleValidator extends CustomRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"async\"\r\n }\r\n validate(value, rule) {\r\n if (!isDefined(rule.reevaluate)) {\r\n extend(rule, {\r\n reevaluate: true\r\n })\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var validator = rule.validator;\r\n var dataGetter = validator && isFunction(validator.option) && validator.option(\"dataGetter\");\r\n var extraParams = isFunction(dataGetter) && dataGetter();\r\n var params = {\r\n value: value,\r\n validator: validator,\r\n rule: rule\r\n };\r\n if (extraParams) {\r\n extend(params, extraParams)\r\n }\r\n var callbackResult = rule.validationCallback(params);\r\n if (!isPromise(callbackResult)) {\r\n throw errors.Error(\"E0103\")\r\n }\r\n return this._getWrappedPromise(fromPromise(callbackResult).promise())\r\n }\r\n _getWrappedPromise(promise) {\r\n var deferred = new Deferred;\r\n promise.then((function(res) {\r\n deferred.resolve(res)\r\n }), (function(err) {\r\n var res = {\r\n isValid: false\r\n };\r\n if (isDefined(err)) {\r\n if (isString(err)) {\r\n res.message = err\r\n } else if (isObject(err) && isDefined(err.message) && isString(err.message)) {\r\n res.message = err.message\r\n }\r\n }\r\n deferred.resolve(res)\r\n }));\r\n return deferred.promise()\r\n }\r\n}\r\nclass CompareRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"compare\"\r\n }\r\n _validate(value, rule) {\r\n if (!rule.comparisonTarget) {\r\n throw errors.Error(\"E0102\")\r\n }\r\n if (rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n extend(rule, {\r\n reevaluate: true\r\n });\r\n var otherValue = rule.comparisonTarget();\r\n var type = rule.comparisonType || \"==\";\r\n switch (type) {\r\n case \"==\":\r\n return value == otherValue;\r\n case \"!=\":\r\n return value != otherValue;\r\n case \"===\":\r\n return value === otherValue;\r\n case \"!==\":\r\n return value !== otherValue;\r\n case \">\":\r\n return value > otherValue;\r\n case \">=\":\r\n return value >= otherValue;\r\n case \"<\":\r\n return value < otherValue;\r\n case \"<=\":\r\n return value <= otherValue\r\n }\r\n }\r\n}\r\nclass PatternRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"pattern\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n var pattern = rule.pattern;\r\n if (isString(pattern)) {\r\n pattern = new RegExp(pattern)\r\n }\r\n return pattern.test(value)\r\n }\r\n}\r\nclass EmailRuleValidator extends BaseRuleValidator {\r\n constructor() {\r\n super();\r\n this.NAME = \"email\"\r\n }\r\n _validate(value, rule) {\r\n if (false !== rule.ignoreEmptyValue && this._isValueEmpty(value)) {\r\n return true\r\n }\r\n return rulesValidators.pattern.validate(value, extend({}, rule, {\r\n pattern: /^[\\d\\w._-]+@[\\d\\w._-]+\\.[\\w]+$/i\r\n }))\r\n }\r\n}\r\nvar rulesValidators = {\r\n required: new RequiredRuleValidator,\r\n numeric: new NumericRuleValidator,\r\n range: new RangeRuleValidator,\r\n stringLength: new StringLengthRuleValidator,\r\n custom: new CustomRuleValidator,\r\n async: new AsyncRuleValidator,\r\n compare: new CompareRuleValidator,\r\n pattern: new PatternRuleValidator,\r\n email: new EmailRuleValidator\r\n};\r\nvar GroupConfig = Class.inherit({\r\n ctor(group) {\r\n this.group = group;\r\n this.validators = [];\r\n this._pendingValidators = [];\r\n this._onValidatorStatusChanged = this._onValidatorStatusChanged.bind(this);\r\n this._resetValidationInfo();\r\n this._eventsStrategy = new EventsStrategy(this)\r\n },\r\n validate() {\r\n var result = {\r\n isValid: true,\r\n brokenRules: [],\r\n validators: [],\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n this._unsubscribeFromAllChangeEvents();\r\n this._pendingValidators = [];\r\n this._resetValidationInfo();\r\n each(this.validators, (_, validator) => {\r\n var validatorResult = validator.validate();\r\n result.isValid = result.isValid && validatorResult.isValid;\r\n if (validatorResult.brokenRules) {\r\n result.brokenRules = result.brokenRules.concat(validatorResult.brokenRules)\r\n }\r\n result.validators.push(validator);\r\n if (validatorResult.status === STATUS.pending) {\r\n this._addPendingValidator(validator)\r\n }\r\n this._subscribeToChangeEvents(validator)\r\n });\r\n if (this._pendingValidators.length) {\r\n result.status = STATUS.pending\r\n } else {\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n this._unsubscribeFromAllChangeEvents();\r\n this._raiseValidatedEvent(result)\r\n }\r\n this._updateValidationInfo(result);\r\n return extend({}, this._validationInfo.result)\r\n },\r\n _subscribeToChangeEvents(validator) {\r\n validator.on(\"validating\", this._onValidatorStatusChanged);\r\n validator.on(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromChangeEvents(validator) {\r\n validator.off(\"validating\", this._onValidatorStatusChanged);\r\n validator.off(\"validated\", this._onValidatorStatusChanged)\r\n },\r\n _unsubscribeFromAllChangeEvents() {\r\n each(this.validators, (_, validator) => {\r\n this._unsubscribeFromChangeEvents(validator)\r\n })\r\n },\r\n _updateValidationInfo(result) {\r\n this._validationInfo.result = result;\r\n if (result.status !== STATUS.pending) {\r\n return\r\n }\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n },\r\n _addPendingValidator(validator) {\r\n var foundValidator = grep(this._pendingValidators, (function(val) {\r\n return val === validator\r\n }))[0];\r\n if (!foundValidator) {\r\n this._pendingValidators.push(validator)\r\n }\r\n },\r\n _removePendingValidator(validator) {\r\n var index = this._pendingValidators.indexOf(validator);\r\n if (index >= 0) {\r\n this._pendingValidators.splice(index, 1)\r\n }\r\n },\r\n _orderBrokenRules(brokenRules) {\r\n var orderedRules = [];\r\n each(this.validators, (function(_, validator) {\r\n var foundRules = grep(brokenRules, (function(rule) {\r\n return rule.validator === validator\r\n }));\r\n if (foundRules.length) {\r\n orderedRules = orderedRules.concat(foundRules)\r\n }\r\n }));\r\n return orderedRules\r\n },\r\n _updateBrokenRules(result) {\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n var brokenRules = this._validationInfo.result.brokenRules;\r\n var rules = grep(brokenRules, (function(rule) {\r\n return rule.validator !== result.validator\r\n }));\r\n if (result.brokenRules) {\r\n brokenRules = rules.concat(result.brokenRules)\r\n }\r\n this._validationInfo.result.brokenRules = this._orderBrokenRules(brokenRules)\r\n },\r\n _onValidatorStatusChanged(result) {\r\n if (result.status === STATUS.pending) {\r\n this._addPendingValidator(result.validator);\r\n return\r\n }\r\n this._resolveIfComplete(result)\r\n },\r\n _resolveIfComplete(result) {\r\n this._removePendingValidator(result.validator);\r\n this._updateBrokenRules(result);\r\n if (!this._pendingValidators.length) {\r\n this._unsubscribeFromAllChangeEvents();\r\n if (!this._validationInfo.result) {\r\n return\r\n }\r\n this._validationInfo.result.status = 0 === this._validationInfo.result.brokenRules.length ? STATUS.valid : STATUS.invalid;\r\n this._validationInfo.result.isValid = this._validationInfo.result.status === STATUS.valid;\r\n var res = extend({}, this._validationInfo.result, {\r\n complete: null\r\n });\r\n var deferred = this._validationInfo.deferred;\r\n this._validationInfo.deferred = null;\r\n this._raiseValidatedEvent(res);\r\n deferred && setTimeout(() => {\r\n deferred.resolve(res)\r\n })\r\n }\r\n },\r\n _raiseValidatedEvent(result) {\r\n this._eventsStrategy.fireEvent(\"validated\", [result])\r\n },\r\n _resetValidationInfo() {\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null\r\n }\r\n },\r\n _synchronizeValidationInfo() {\r\n if (this._validationInfo.result) {\r\n this._validationInfo.result.validators = this.validators\r\n }\r\n },\r\n removeRegisteredValidator(validator) {\r\n var index = this.validators.indexOf(validator);\r\n if (index > -1) {\r\n this.validators.splice(index, 1);\r\n this._synchronizeValidationInfo();\r\n this._resolveIfComplete({\r\n validator: validator\r\n })\r\n }\r\n },\r\n registerValidator(validator) {\r\n if (!this.validators.includes(validator)) {\r\n this.validators.push(validator);\r\n this._synchronizeValidationInfo()\r\n }\r\n },\r\n reset() {\r\n each(this.validators, (function(_, validator) {\r\n validator.reset()\r\n }));\r\n this._pendingValidators = [];\r\n this._resetValidationInfo()\r\n },\r\n on(eventName, eventHandler) {\r\n this._eventsStrategy.on(eventName, eventHandler);\r\n return this\r\n },\r\n off(eventName, eventHandler) {\r\n this._eventsStrategy.off(eventName, eventHandler);\r\n return this\r\n }\r\n});\r\nvar ValidationEngine = {\r\n groups: [],\r\n getGroupConfig(group) {\r\n var result = grep(this.groups, (function(config) {\r\n return config.group === group\r\n }));\r\n if (result.length) {\r\n return result[0]\r\n }\r\n },\r\n findGroup($element, model) {\r\n var _$element$data, _$element$data$dxComp;\r\n var hasValidationGroup = null === (_$element$data = $element.data()) || void 0 === _$element$data ? void 0 : null === (_$element$data$dxComp = _$element$data.dxComponents) || void 0 === _$element$data$dxComp ? void 0 : _$element$data$dxComp.includes(\"dxValidationGroup\");\r\n var validationGroup = hasValidationGroup && $element.dxValidationGroup(\"instance\");\r\n if (validationGroup) {\r\n return validationGroup\r\n }\r\n var $dxGroup = $element.parents(\".dx-validationgroup\").first();\r\n if ($dxGroup.length) {\r\n return $dxGroup.dxValidationGroup(\"instance\")\r\n }\r\n return model\r\n },\r\n initGroups() {\r\n this.groups = [];\r\n this.addGroup()\r\n },\r\n addGroup(group) {\r\n var config = this.getGroupConfig(group);\r\n if (!config) {\r\n config = new GroupConfig(group);\r\n this.groups.push(config)\r\n }\r\n return config\r\n },\r\n removeGroup(group) {\r\n var config = this.getGroupConfig(group);\r\n var index = this.groups.indexOf(config);\r\n if (index > -1) {\r\n this.groups.splice(index, 1)\r\n }\r\n return config\r\n },\r\n _setDefaultMessage(info) {\r\n var {\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n } = info;\r\n if (!isDefined(rule.message)) {\r\n if (validator.defaultFormattedMessage && isDefined(name)) {\r\n rule.message = validator.defaultFormattedMessage(name)\r\n } else {\r\n rule.message = validator.defaultMessage()\r\n }\r\n }\r\n },\r\n _addBrokenRule(info) {\r\n var {\r\n result: result,\r\n rule: rule\r\n } = info;\r\n if (!result.brokenRule) {\r\n result.brokenRule = rule\r\n }\r\n if (!result.brokenRules) {\r\n result.brokenRules = []\r\n }\r\n result.brokenRules.push(rule)\r\n },\r\n validate(value, rules, name) {\r\n var _rules$;\r\n var result = {\r\n name: name,\r\n value: value,\r\n brokenRule: null,\r\n brokenRules: null,\r\n isValid: true,\r\n validationRules: rules,\r\n pendingRules: null,\r\n status: STATUS.valid,\r\n complete: null\r\n };\r\n var validator = null === rules || void 0 === rules ? void 0 : null === (_rules$ = rules[0]) || void 0 === _rules$ ? void 0 : _rules$.validator;\r\n var asyncRuleItems = [];\r\n each(rules || [], (_, rule) => {\r\n var ruleValidator = rulesValidators[rule.type];\r\n var ruleValidationResult;\r\n if (ruleValidator) {\r\n if (isDefined(rule.isValid) && rule.value === value && !rule.reevaluate) {\r\n if (!rule.isValid) {\r\n result.isValid = false;\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n });\r\n return false\r\n }\r\n return true\r\n }\r\n rule.value = value;\r\n if (\"async\" === rule.type) {\r\n asyncRuleItems.push({\r\n rule: rule,\r\n ruleValidator: ruleValidator\r\n });\r\n return true\r\n }\r\n ruleValidationResult = ruleValidator.validate(value, rule);\r\n rule.isValid = ruleValidationResult;\r\n if (!ruleValidationResult) {\r\n result.isValid = false;\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: ruleValidator,\r\n name: name\r\n });\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n if (!rule.isValid) {\r\n return false\r\n }\r\n } else {\r\n throw errors.Error(\"E0100\")\r\n }\r\n });\r\n if (result.isValid && !result.brokenRules && asyncRuleItems.length) {\r\n result = this._validateAsyncRules({\r\n value: value,\r\n items: asyncRuleItems,\r\n result: result,\r\n name: name\r\n })\r\n }\r\n this._synchronizeGroupValidationInfo(validator, result);\r\n result.status = result.pendingRules ? STATUS.pending : result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n _synchronizeGroupValidationInfo(validator, result) {\r\n var _result$brokenRules;\r\n if (!validator) {\r\n return\r\n }\r\n var groupConfig = ValidationEngine.getGroupConfig(validator._validationGroup);\r\n groupConfig._updateBrokenRules.call(groupConfig, {\r\n validator: validator,\r\n brokenRules: null !== (_result$brokenRules = result.brokenRules) && void 0 !== _result$brokenRules ? _result$brokenRules : []\r\n })\r\n },\r\n _validateAsyncRules(_ref) {\r\n var {\r\n result: result,\r\n value: value,\r\n items: items,\r\n name: name\r\n } = _ref;\r\n var asyncResults = [];\r\n each(items, (_, item) => {\r\n var validateResult = item.ruleValidator.validate(value, item.rule);\r\n if (!isPromise(validateResult)) {\r\n this._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: this._getPatchedRuleResult(validateResult),\r\n validator: item.ruleValidator,\r\n name: name\r\n })\r\n } else {\r\n if (!result.pendingRules) {\r\n result.pendingRules = []\r\n }\r\n result.pendingRules.push(item.rule);\r\n var asyncResult = validateResult.then(res => {\r\n var ruleResult = this._getPatchedRuleResult(res);\r\n this._updateRuleConfig({\r\n rule: item.rule,\r\n ruleResult: ruleResult,\r\n validator: item.ruleValidator,\r\n name: name\r\n });\r\n return ruleResult\r\n });\r\n asyncResults.push(asyncResult)\r\n }\r\n });\r\n if (asyncResults.length) {\r\n result.complete = Promise.all(asyncResults).then(values => this._getAsyncRulesResult({\r\n result: result,\r\n values: values\r\n }))\r\n }\r\n return result\r\n },\r\n _updateRuleConfig(_ref2) {\r\n var {\r\n rule: rule,\r\n ruleResult: ruleResult,\r\n validator: validator,\r\n name: name\r\n } = _ref2;\r\n rule.isValid = ruleResult.isValid;\r\n if (!ruleResult.isValid) {\r\n if (isDefined(ruleResult.message) && isString(ruleResult.message) && ruleResult.message.length) {\r\n rule.message = ruleResult.message\r\n } else {\r\n this._setDefaultMessage({\r\n rule: rule,\r\n validator: validator,\r\n name: name\r\n })\r\n }\r\n }\r\n },\r\n _getPatchedRuleResult(ruleResult) {\r\n var result;\r\n if (isObject(ruleResult)) {\r\n result = extend({}, ruleResult);\r\n if (!isDefined(result.isValid)) {\r\n result.isValid = true\r\n }\r\n } else {\r\n result = {\r\n isValid: isBoolean(ruleResult) ? ruleResult : true\r\n }\r\n }\r\n return result\r\n },\r\n _getAsyncRulesResult(_ref3) {\r\n var {\r\n values: values,\r\n result: result\r\n } = _ref3;\r\n each(values, (index, val) => {\r\n if (false === val.isValid) {\r\n result.isValid = val.isValid;\r\n var rule = result.pendingRules[index];\r\n this._addBrokenRule({\r\n result: result,\r\n rule: rule\r\n })\r\n }\r\n });\r\n result.pendingRules = null;\r\n result.complete = null;\r\n result.status = result.isValid ? STATUS.valid : STATUS.invalid;\r\n return result\r\n },\r\n registerValidatorInGroup(group, validator) {\r\n var groupConfig = ValidationEngine.addGroup(group);\r\n groupConfig.registerValidator.call(groupConfig, validator)\r\n },\r\n _shouldRemoveGroup(group, validatorsInGroup) {\r\n var isDefaultGroup = void 0 === group;\r\n var isValidationGroupInstance = group && \"dxValidationGroup\" === group.NAME;\r\n return !isDefaultGroup && !isValidationGroupInstance && !validatorsInGroup.length\r\n },\r\n removeRegisteredValidator(group, validator) {\r\n var config = ValidationEngine.getGroupConfig(group);\r\n if (config) {\r\n config.removeRegisteredValidator.call(config, validator);\r\n var validatorsInGroup = config.validators;\r\n if (this._shouldRemoveGroup(group, validatorsInGroup)) {\r\n this.removeGroup(group)\r\n }\r\n }\r\n },\r\n initValidationOptions(options) {\r\n var initedOptions = {};\r\n if (options) {\r\n [\"isValid\", \"validationStatus\", \"validationError\", \"validationErrors\"].forEach(prop => {\r\n if (prop in options) {\r\n extend(initedOptions, this.synchronizeValidationOptions({\r\n name: prop,\r\n value: options[prop]\r\n }, options))\r\n }\r\n })\r\n }\r\n return initedOptions\r\n },\r\n synchronizeValidationOptions(_ref4, options) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref4;\r\n switch (name) {\r\n case \"validationStatus\":\r\n var isValid = value === STATUS.valid || value === STATUS.pending;\r\n return options.isValid !== isValid ? {\r\n isValid: isValid\r\n } : {};\r\n case \"isValid\":\r\n var {\r\n validationStatus: validationStatus\r\n } = options;\r\n var newStatus = validationStatus;\r\n if (value && validationStatus === STATUS.invalid) {\r\n newStatus = STATUS.valid\r\n } else if (!value && validationStatus !== STATUS.invalid) {\r\n newStatus = STATUS.invalid\r\n }\r\n return newStatus !== validationStatus ? {\r\n validationStatus: newStatus\r\n } : {};\r\n case \"validationErrors\":\r\n var validationError = !value || !value.length ? null : value[0];\r\n return options.validationError !== validationError ? {\r\n validationError: validationError\r\n } : {};\r\n case \"validationError\":\r\n var {\r\n validationErrors: validationErrors\r\n } = options;\r\n if (!value && validationErrors) {\r\n return {\r\n validationErrors: null\r\n }\r\n } else if (value && !validationErrors) {\r\n return {\r\n validationErrors: [value]\r\n }\r\n } else if (value && validationErrors && value !== validationErrors[0]) {\r\n validationErrors[0] = value;\r\n return {\r\n validationErrors: validationErrors.slice()\r\n }\r\n }\r\n }\r\n return {}\r\n },\r\n validateGroup(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw errors.Error(\"E0110\")\r\n }\r\n return groupConfig.validate()\r\n },\r\n resetGroup(group) {\r\n var groupConfig = ValidationEngine.getGroupConfig(group);\r\n if (!groupConfig) {\r\n throw errors.Error(\"E0110\")\r\n }\r\n return groupConfig.reset()\r\n }\r\n};\r\nValidationEngine.initGroups();\r\nexport default ValidationEngine;\r\n","var isArray = Array.isArray;\nfunction isStringOrNumber(o) {\n var type = typeof o;\n return type === 'string' || type === 'number';\n}\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isInvalid(o) {\n return o === null || o === false || o === true || o === void 0;\n}\nfunction isFunction(o) {\n return typeof o === 'function';\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isNumber(o) {\n return typeof o === 'number';\n}\nfunction isNull(o) {\n return o === null;\n}\nfunction isUndefined(o) {\n return o === void 0;\n}\nfunction combineFrom(first, second) {\n var out = {};\n if (first) {\n for (var key in first) {\n out[key] = first[key];\n }\n }\n if (second) {\n for (var key$1 in second) {\n out[key$1] = second[key$1];\n }\n }\n return out;\n}\n\n/**\n * Links given data to event as first parameter\n * @param {*} data data to be linked, it will be available in function as first parameter\n * @param {Function} event Function to be called when event occurs\n * @returns {{data: *, event: Function}}\n */\nfunction linkEvent(data, event) {\n if (isFunction(event)) {\n return { data: data, event: event };\n }\n return null; // Return null when event is invalid, to avoid creating unnecessary event handlers\n}\n// object.event should always be function, otherwise its badly created object.\nfunction isLinkEventObject(o) {\n return !isNull(o) && typeof o === 'object';\n}\n\n// We need EMPTY_OBJ defined in one place.\n// Its used for comparison so we cant inline it into shared\nvar EMPTY_OBJ = {};\nvar Fragment = '$F';\nfunction normalizeEventName(name) {\n return name.substr(2).toLowerCase();\n}\nfunction appendChild(parentDOM, dom) {\n parentDOM.appendChild(dom);\n}\nfunction insertOrAppend(parentDOM, newNode, nextNode) {\n if (isNull(nextNode)) {\n appendChild(parentDOM, newNode);\n }\n else {\n parentDOM.insertBefore(newNode, nextNode);\n }\n}\nfunction documentCreateElement(tag, isSVG) {\n if (isSVG) {\n return document.createElementNS('http://www.w3.org/2000/svg', tag);\n }\n return document.createElement(tag);\n}\nfunction replaceChild(parentDOM, newDom, lastDom) {\n parentDOM.replaceChild(newDom, lastDom);\n}\nfunction removeChild(parentDOM, childNode) {\n parentDOM.removeChild(childNode);\n}\nfunction callAll(arrayFn) {\n for (var i = 0; i < arrayFn.length; i++) {\n arrayFn[i]();\n }\n}\nfunction findChildVNode(vNode, startEdge, flags) {\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n return children.$LI;\n }\n if (flags & 8192 /* Fragment */) {\n return vNode.childFlags === 2 /* HasVNodeChildren */ ? children : children[startEdge ? 0 : children.length - 1];\n }\n return children;\n}\nfunction findDOMfromVNode(vNode, startEdge) {\n var flags;\n while (vNode) {\n flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n return vNode.dom;\n }\n vNode = findChildVNode(vNode, startEdge, flags);\n }\n return null;\n}\nfunction removeVNodeDOM(vNode, parentDOM) {\n do {\n var flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n removeChild(parentDOM, vNode.dom);\n return;\n }\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n if (flags & 8 /* ComponentFunction */) {\n vNode = children;\n }\n if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n vNode = children;\n }\n else {\n for (var i = 0, len = children.length; i < len; ++i) {\n removeVNodeDOM(children[i], parentDOM);\n }\n return;\n }\n }\n } while (vNode);\n}\nfunction moveVNodeDOM(vNode, parentDOM, nextNode) {\n do {\n var flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n insertOrAppend(parentDOM, vNode.dom, nextNode);\n return;\n }\n var children = vNode.children;\n if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n if (flags & 8 /* ComponentFunction */) {\n vNode = children;\n }\n if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n vNode = children;\n }\n else {\n for (var i = 0, len = children.length; i < len; ++i) {\n moveVNodeDOM(children[i], parentDOM, nextNode);\n }\n return;\n }\n }\n } while (vNode);\n}\nfunction createDerivedState(instance, nextProps, state) {\n if (instance.constructor.getDerivedStateFromProps) {\n return combineFrom(state, instance.constructor.getDerivedStateFromProps(nextProps, state));\n }\n return state;\n}\nvar renderCheck = {\n v: false\n};\nvar options = {\n componentComparator: null,\n createVNode: null,\n renderComplete: null\n};\nfunction setTextContent(dom, children) {\n dom.textContent = children;\n}\n// Calling this function assumes, nextValue is linkEvent\nfunction isLastValueSameLinkEvent(lastValue, nextValue) {\n return (isLinkEventObject(lastValue) &&\n lastValue.event === nextValue.event &&\n lastValue.data === nextValue.data);\n}\nfunction mergeUnsetProperties(to, from) {\n for (var propName in from) {\n if (isUndefined(to[propName])) {\n to[propName] = from[propName];\n }\n }\n return to;\n}\nfunction safeCall1(method, arg1) {\n return !!isFunction(method) && (method(arg1), true);\n}\n\nvar keyPrefix = '$';\nfunction V(childFlags, children, className, flags, key, props, ref, type) {\n this.childFlags = childFlags;\n this.children = children;\n this.className = className;\n this.dom = null;\n this.flags = flags;\n this.key = key === void 0 ? null : key;\n this.props = props === void 0 ? null : props;\n this.ref = ref === void 0 ? null : ref;\n this.type = type;\n}\nfunction createVNode(flags, type, className, children, childFlags, props, key, ref) {\n var childFlag = childFlags === void 0 ? 1 /* HasInvalidChildren */ : childFlags;\n var vNode = new V(childFlag, children, className, flags, key, props, ref, type);\n if (options.createVNode) {\n options.createVNode(vNode);\n }\n if (childFlag === 0 /* UnknownChildren */) {\n normalizeChildren(vNode, vNode.children);\n }\n return vNode;\n}\nfunction mergeDefaultHooks(flags, type, ref) {\n if (flags & 4 /* ComponentClass */) {\n return ref;\n }\n var defaultHooks = (flags & 32768 /* ForwardRef */ ? type.render : type).defaultHooks;\n if (isNullOrUndef(defaultHooks)) {\n return ref;\n }\n if (isNullOrUndef(ref)) {\n return defaultHooks;\n }\n return mergeUnsetProperties(ref, defaultHooks);\n}\nfunction mergeDefaultProps(flags, type, props) {\n // set default props\n var defaultProps = (flags & 32768 /* ForwardRef */ ? type.render : type).defaultProps;\n if (isNullOrUndef(defaultProps)) {\n return props;\n }\n if (isNullOrUndef(props)) {\n return combineFrom(defaultProps, null);\n }\n return mergeUnsetProperties(props, defaultProps);\n}\nfunction resolveComponentFlags(flags, type) {\n if (flags & 12 /* ComponentKnown */) {\n return flags;\n }\n if (type.prototype && type.prototype.render) {\n return 4 /* ComponentClass */;\n }\n if (type.render) {\n return 32776 /* ForwardRefComponent */;\n }\n return 8 /* ComponentFunction */;\n}\nfunction createComponentVNode(flags, type, props, key, ref) {\n flags = resolveComponentFlags(flags, type);\n var vNode = new V(1 /* HasInvalidChildren */, null, null, flags, key, mergeDefaultProps(flags, type, props), mergeDefaultHooks(flags, type, ref), type);\n if (options.createVNode) {\n options.createVNode(vNode);\n }\n return vNode;\n}\nfunction createTextVNode(text, key) {\n return new V(1 /* HasInvalidChildren */, isNullOrUndef(text) || text === true || text === false ? '' : text, null, 16 /* Text */, key, null, null, null);\n}\nfunction createFragment(children, childFlags, key) {\n var fragment = createVNode(8192 /* Fragment */, 8192 /* Fragment */, null, children, childFlags, null, key, null);\n switch (fragment.childFlags) {\n case 1 /* HasInvalidChildren */:\n fragment.children = createVoidVNode();\n fragment.childFlags = 2 /* HasVNodeChildren */;\n break;\n case 16 /* HasTextChildren */:\n fragment.children = [createTextVNode(children)];\n fragment.childFlags = 4 /* HasNonKeyedChildren */;\n break;\n }\n return fragment;\n}\nfunction normalizeProps(vNode) {\n var props = vNode.props;\n if (props) {\n var flags = vNode.flags;\n if (flags & 481 /* Element */) {\n if (props.children !== void 0 && isNullOrUndef(vNode.children)) {\n normalizeChildren(vNode, props.children);\n }\n if (props.className !== void 0) {\n if (isNullOrUndef(vNode.className)) {\n vNode.className = props.className || null;\n }\n props.className = undefined;\n }\n }\n if (props.key !== void 0) {\n vNode.key = props.key;\n props.key = undefined;\n }\n if (props.ref !== void 0) {\n if (flags & 8 /* ComponentFunction */) {\n vNode.ref = combineFrom(vNode.ref, props.ref);\n }\n else {\n vNode.ref = props.ref;\n }\n props.ref = undefined;\n }\n }\n return vNode;\n}\n/*\n * Fragment is different than normal vNode,\n * because when it needs to be cloned we need to clone its children too\n * But not normalize, because otherwise those possibly get KEY and re-mount\n */\nfunction cloneFragment(vNodeToClone) {\n var oldChildren = vNodeToClone.children;\n var childFlags = vNodeToClone.childFlags;\n return createFragment(childFlags === 2 /* HasVNodeChildren */ ? directClone(oldChildren) : oldChildren.map(directClone), childFlags, vNodeToClone.key);\n}\nfunction directClone(vNodeToClone) {\n var flags = vNodeToClone.flags & -16385 /* ClearInUse */;\n var props = vNodeToClone.props;\n if (flags & 14 /* Component */) {\n if (!isNull(props)) {\n var propsToClone = props;\n props = {};\n for (var key in propsToClone) {\n props[key] = propsToClone[key];\n }\n }\n }\n if ((flags & 8192 /* Fragment */) === 0) {\n return new V(vNodeToClone.childFlags, vNodeToClone.children, vNodeToClone.className, flags, vNodeToClone.key, props, vNodeToClone.ref, vNodeToClone.type);\n }\n return cloneFragment(vNodeToClone);\n}\nfunction createVoidVNode() {\n return createTextVNode('', null);\n}\nfunction createPortal(children, container) {\n var normalizedRoot = normalizeRoot(children);\n return createVNode(1024 /* Portal */, 1024 /* Portal */, null, normalizedRoot, 0 /* UnknownChildren */, null, normalizedRoot.key, container);\n}\nfunction _normalizeVNodes(nodes, result, index, currentKey) {\n for (var len = nodes.length; index < len; index++) {\n var n = nodes[index];\n if (!isInvalid(n)) {\n var newKey = currentKey + keyPrefix + index;\n if (isArray(n)) {\n _normalizeVNodes(n, result, 0, newKey);\n }\n else {\n if (isStringOrNumber(n)) {\n n = createTextVNode(n, newKey);\n }\n else {\n var oldKey = n.key;\n var isPrefixedKey = isString(oldKey) && oldKey[0] === keyPrefix;\n if (n.flags & 81920 /* InUseOrNormalized */ || isPrefixedKey) {\n n = directClone(n);\n }\n n.flags |= 65536 /* Normalized */;\n if (!isPrefixedKey) {\n if (isNull(oldKey)) {\n n.key = newKey;\n }\n else {\n n.key = currentKey + oldKey;\n }\n }\n else if (oldKey.substring(0, currentKey.length) !== currentKey) {\n n.key = currentKey + oldKey;\n }\n }\n result.push(n);\n }\n }\n }\n}\nfunction getFlagsForElementVnode(type) {\n switch (type) {\n case 'svg':\n return 32 /* SvgElement */;\n case 'input':\n return 64 /* InputElement */;\n case 'select':\n return 256 /* SelectElement */;\n case 'textarea':\n return 128 /* TextareaElement */;\n case Fragment:\n return 8192 /* Fragment */;\n default:\n return 1 /* HtmlElement */;\n }\n}\nfunction normalizeChildren(vNode, children) {\n var newChildren;\n var newChildFlags = 1 /* HasInvalidChildren */;\n // Don't change children to match strict equal (===) true in patching\n if (isInvalid(children)) {\n newChildren = children;\n }\n else if (isStringOrNumber(children)) {\n newChildFlags = 16 /* HasTextChildren */;\n newChildren = children;\n }\n else if (isArray(children)) {\n var len = children.length;\n for (var i = 0; i < len; ++i) {\n var n = children[i];\n if (isInvalid(n) || isArray(n)) {\n newChildren = newChildren || children.slice(0, i);\n _normalizeVNodes(children, newChildren, i, '');\n break;\n }\n else if (isStringOrNumber(n)) {\n newChildren = newChildren || children.slice(0, i);\n newChildren.push(createTextVNode(n, keyPrefix + i));\n }\n else {\n var key = n.key;\n var needsCloning = (n.flags & 81920 /* InUseOrNormalized */) > 0;\n var isNullKey = isNull(key);\n var isPrefixed = isString(key) && key[0] === keyPrefix;\n if (needsCloning || isNullKey || isPrefixed) {\n newChildren = newChildren || children.slice(0, i);\n if (needsCloning || isPrefixed) {\n n = directClone(n);\n }\n if (isNullKey || isPrefixed) {\n n.key = keyPrefix + i;\n }\n newChildren.push(n);\n }\n else if (newChildren) {\n newChildren.push(n);\n }\n n.flags |= 65536 /* Normalized */;\n }\n }\n newChildren = newChildren || children;\n if (newChildren.length === 0) {\n newChildFlags = 1 /* HasInvalidChildren */;\n }\n else {\n newChildFlags = 8 /* HasKeyedChildren */;\n }\n }\n else {\n newChildren = children;\n newChildren.flags |= 65536 /* Normalized */;\n if (children.flags & 81920 /* InUseOrNormalized */) {\n newChildren = directClone(children);\n }\n newChildFlags = 2 /* HasVNodeChildren */;\n }\n vNode.children = newChildren;\n vNode.childFlags = newChildFlags;\n return vNode;\n}\nfunction normalizeRoot(input) {\n if (isInvalid(input) || isStringOrNumber(input)) {\n return createTextVNode(input, null);\n }\n if (isArray(input)) {\n return createFragment(input, 0 /* UnknownChildren */, null);\n }\n return input.flags & 16384 /* InUse */ ? directClone(input) : input;\n}\n\nvar xlinkNS = 'http://www.w3.org/1999/xlink';\nvar xmlNS = 'http://www.w3.org/XML/1998/namespace';\nvar namespaces = {\n 'xlink:actuate': xlinkNS,\n 'xlink:arcrole': xlinkNS,\n 'xlink:href': xlinkNS,\n 'xlink:role': xlinkNS,\n 'xlink:show': xlinkNS,\n 'xlink:title': xlinkNS,\n 'xlink:type': xlinkNS,\n 'xml:base': xmlNS,\n 'xml:lang': xmlNS,\n 'xml:space': xmlNS\n};\n\nfunction getDelegatedEventObject(v) {\n return {\n onClick: v,\n onDblClick: v,\n onFocusIn: v,\n onFocusOut: v,\n onKeyDown: v,\n onKeyPress: v,\n onKeyUp: v,\n onMouseDown: v,\n onMouseMove: v,\n onMouseUp: v,\n onTouchEnd: v,\n onTouchMove: v,\n onTouchStart: v\n };\n}\nvar attachedEventCounts = getDelegatedEventObject(0);\nvar attachedEvents = getDelegatedEventObject(null);\nvar syntheticEvents = getDelegatedEventObject(true);\nfunction updateOrAddSyntheticEvent(name, dom) {\n var eventsObject = dom.$EV;\n if (!eventsObject) {\n eventsObject = dom.$EV = getDelegatedEventObject(null);\n }\n if (!eventsObject[name]) {\n if (++attachedEventCounts[name] === 1) {\n attachedEvents[name] = attachEventToDocument(name);\n }\n }\n return eventsObject;\n}\nfunction unmountSyntheticEvent(name, dom) {\n var eventsObject = dom.$EV;\n if (eventsObject && eventsObject[name]) {\n if (--attachedEventCounts[name] === 0) {\n document.removeEventListener(normalizeEventName(name), attachedEvents[name]);\n attachedEvents[name] = null;\n }\n eventsObject[name] = null;\n }\n}\nfunction handleSyntheticEvent(name, lastEvent, nextEvent, dom) {\n if (isFunction(nextEvent)) {\n updateOrAddSyntheticEvent(name, dom)[name] = nextEvent;\n }\n else if (isLinkEventObject(nextEvent)) {\n if (isLastValueSameLinkEvent(lastEvent, nextEvent)) {\n return;\n }\n updateOrAddSyntheticEvent(name, dom)[name] = nextEvent;\n }\n else {\n unmountSyntheticEvent(name, dom);\n }\n}\n// When browsers fully support event.composedPath we could loop it through instead of using parentNode property\nfunction getTargetNode(event) {\n return isFunction(event.composedPath) ? event.composedPath()[0] : event.target;\n}\nfunction dispatchEvents(event, isClick, name, eventData) {\n var dom = getTargetNode(event);\n do {\n // Html Nodes can be nested fe: span inside button in that scenario browser does not handle disabled attribute on parent,\n // because the event listener is on document.body\n // Don't process clicks on disabled elements\n if (isClick && dom.disabled) {\n return;\n }\n var eventsObject = dom.$EV;\n if (eventsObject) {\n var currentEvent = eventsObject[name];\n if (currentEvent) {\n // linkEvent object\n eventData.dom = dom;\n currentEvent.event ? currentEvent.event(currentEvent.data, event) : currentEvent(event);\n if (event.cancelBubble) {\n return;\n }\n }\n }\n dom = dom.parentNode;\n } while (!isNull(dom));\n}\nfunction stopPropagation() {\n this.cancelBubble = true;\n if (!this.immediatePropagationStopped) {\n this.stopImmediatePropagation();\n }\n}\nfunction isDefaultPrevented() {\n return this.defaultPrevented;\n}\nfunction isPropagationStopped() {\n return this.cancelBubble;\n}\nfunction extendEventProperties(event) {\n // Event data needs to be object to save reference to currentTarget getter\n var eventData = {\n dom: document\n };\n event.isDefaultPrevented = isDefaultPrevented;\n event.isPropagationStopped = isPropagationStopped;\n event.stopPropagation = stopPropagation;\n Object.defineProperty(event, 'currentTarget', {\n configurable: true,\n get: function get() {\n return eventData.dom;\n }\n });\n return eventData;\n}\nfunction rootClickEvent(name) {\n return function (event) {\n if (event.button !== 0) {\n // Firefox incorrectly triggers click event for mid/right mouse buttons.\n // This bug has been active for 17 years.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=184051\n event.stopPropagation();\n return;\n }\n dispatchEvents(event, true, name, extendEventProperties(event));\n };\n}\nfunction rootEvent(name) {\n return function (event) {\n dispatchEvents(event, false, name, extendEventProperties(event));\n };\n}\nfunction attachEventToDocument(name) {\n var attachedEvent = name === 'onClick' || name === 'onDblClick' ? rootClickEvent(name) : rootEvent(name);\n document.addEventListener(normalizeEventName(name), attachedEvent);\n return attachedEvent;\n}\n\nfunction isSameInnerHTML(dom, innerHTML) {\n var tempdom = document.createElement('i');\n tempdom.innerHTML = innerHTML;\n return tempdom.innerHTML === dom.innerHTML;\n}\n\nfunction triggerEventListener(props, methodName, e) {\n if (props[methodName]) {\n var listener = props[methodName];\n if (listener.event) {\n listener.event(listener.data, e);\n }\n else {\n listener(e);\n }\n }\n else {\n var nativeListenerName = methodName.toLowerCase();\n if (props[nativeListenerName]) {\n props[nativeListenerName](e);\n }\n }\n}\nfunction createWrappedFunction(methodName, applyValue) {\n var fnMethod = function (e) {\n var vNode = this.$V;\n // If vNode is gone by the time event fires, no-op\n if (!vNode) {\n return;\n }\n var props = vNode.props || EMPTY_OBJ;\n var dom = vNode.dom;\n if (isString(methodName)) {\n triggerEventListener(props, methodName, e);\n }\n else {\n for (var i = 0; i < methodName.length; ++i) {\n triggerEventListener(props, methodName[i], e);\n }\n }\n if (isFunction(applyValue)) {\n var newVNode = this.$V;\n var newProps = newVNode.props || EMPTY_OBJ;\n applyValue(newProps, dom, false, newVNode);\n }\n };\n Object.defineProperty(fnMethod, 'wrapped', {\n configurable: false,\n enumerable: false,\n value: true,\n writable: false\n });\n return fnMethod;\n}\n\nfunction attachEvent(dom, eventName, handler) {\n var previousKey = \"$\" + eventName;\n var previousArgs = dom[previousKey];\n if (previousArgs) {\n if (previousArgs[1].wrapped) {\n return;\n }\n dom.removeEventListener(previousArgs[0], previousArgs[1]);\n dom[previousKey] = null;\n }\n if (isFunction(handler)) {\n dom.addEventListener(eventName, handler);\n dom[previousKey] = [eventName, handler];\n }\n}\n\nfunction isCheckedType(type) {\n return type === 'checkbox' || type === 'radio';\n}\nvar onTextInputChange = createWrappedFunction('onInput', applyValueInput);\nvar wrappedOnChange = createWrappedFunction(['onClick', 'onChange'], applyValueInput);\n/* tslint:disable-next-line:no-empty */\nfunction emptywrapper(event) {\n event.stopPropagation();\n}\nemptywrapper.wrapped = true;\nfunction inputEvents(dom, nextPropsOrEmpty) {\n if (isCheckedType(nextPropsOrEmpty.type)) {\n attachEvent(dom, 'change', wrappedOnChange);\n attachEvent(dom, 'click', emptywrapper);\n }\n else {\n attachEvent(dom, 'input', onTextInputChange);\n }\n}\nfunction applyValueInput(nextPropsOrEmpty, dom) {\n var type = nextPropsOrEmpty.type;\n var value = nextPropsOrEmpty.value;\n var checked = nextPropsOrEmpty.checked;\n var multiple = nextPropsOrEmpty.multiple;\n var defaultValue = nextPropsOrEmpty.defaultValue;\n var hasValue = !isNullOrUndef(value);\n if (type && type !== dom.type) {\n dom.setAttribute('type', type);\n }\n if (!isNullOrUndef(multiple) && multiple !== dom.multiple) {\n dom.multiple = multiple;\n }\n if (!isNullOrUndef(defaultValue) && !hasValue) {\n dom.defaultValue = defaultValue + '';\n }\n if (isCheckedType(type)) {\n if (hasValue) {\n dom.value = value;\n }\n if (!isNullOrUndef(checked)) {\n dom.checked = checked;\n }\n }\n else {\n if (hasValue && dom.value !== value) {\n dom.defaultValue = value;\n dom.value = value;\n }\n else if (!isNullOrUndef(checked)) {\n dom.checked = checked;\n }\n }\n}\n\nfunction updateChildOptions(vNode, value) {\n if (vNode.type === 'option') {\n updateChildOption(vNode, value);\n }\n else {\n var children = vNode.children;\n var flags = vNode.flags;\n if (flags & 4 /* ComponentClass */) {\n updateChildOptions(children.$LI, value);\n }\n else if (flags & 8 /* ComponentFunction */) {\n updateChildOptions(children, value);\n }\n else if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n updateChildOptions(children, value);\n }\n else if (vNode.childFlags & 12 /* MultipleChildren */) {\n for (var i = 0, len = children.length; i < len; ++i) {\n updateChildOptions(children[i], value);\n }\n }\n }\n}\nfunction updateChildOption(vNode, value) {\n var props = vNode.props || EMPTY_OBJ;\n var dom = vNode.dom;\n // we do this as multiple may have changed\n dom.value = props.value;\n if (props.value === value || (isArray(value) && value.indexOf(props.value) !== -1)) {\n dom.selected = true;\n }\n else if (!isNullOrUndef(value) || !isNullOrUndef(props.selected)) {\n dom.selected = props.selected || false;\n }\n}\nvar onSelectChange = createWrappedFunction('onChange', applyValueSelect);\nfunction selectEvents(dom) {\n attachEvent(dom, 'change', onSelectChange);\n}\nfunction applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode) {\n var multiplePropInBoolean = Boolean(nextPropsOrEmpty.multiple);\n if (!isNullOrUndef(nextPropsOrEmpty.multiple) && multiplePropInBoolean !== dom.multiple) {\n dom.multiple = multiplePropInBoolean;\n }\n var index = nextPropsOrEmpty.selectedIndex;\n if (index === -1) {\n dom.selectedIndex = -1;\n }\n var childFlags = vNode.childFlags;\n if (childFlags !== 1 /* HasInvalidChildren */) {\n var value = nextPropsOrEmpty.value;\n if (isNumber(index) && index > -1 && dom.options[index]) {\n value = dom.options[index].value;\n }\n if (mounting && isNullOrUndef(value)) {\n value = nextPropsOrEmpty.defaultValue;\n }\n updateChildOptions(vNode, value);\n }\n}\n\nvar onTextareaInputChange = createWrappedFunction('onInput', applyValueTextArea);\nvar wrappedOnChange$1 = createWrappedFunction('onChange');\nfunction textAreaEvents(dom, nextPropsOrEmpty) {\n attachEvent(dom, 'input', onTextareaInputChange);\n if (nextPropsOrEmpty.onChange) {\n attachEvent(dom, 'change', wrappedOnChange$1);\n }\n}\nfunction applyValueTextArea(nextPropsOrEmpty, dom, mounting) {\n var value = nextPropsOrEmpty.value;\n var domValue = dom.value;\n if (isNullOrUndef(value)) {\n if (mounting) {\n var defaultValue = nextPropsOrEmpty.defaultValue;\n if (!isNullOrUndef(defaultValue) && defaultValue !== domValue) {\n dom.defaultValue = defaultValue;\n dom.value = defaultValue;\n }\n }\n }\n else if (domValue !== value) {\n /* There is value so keep it controlled */\n dom.defaultValue = value;\n dom.value = value;\n }\n}\n\nfunction processElement(flags, vNode, dom, nextPropsOrEmpty, mounting, isControlled) {\n if (flags & 64 /* InputElement */) {\n applyValueInput(nextPropsOrEmpty, dom);\n }\n else if (flags & 256 /* SelectElement */) {\n applyValueSelect(nextPropsOrEmpty, dom, mounting, vNode);\n }\n else if (flags & 128 /* TextareaElement */) {\n applyValueTextArea(nextPropsOrEmpty, dom, mounting);\n }\n if (isControlled) {\n dom.$V = vNode;\n }\n}\nfunction addFormElementEventHandlers(flags, dom, nextPropsOrEmpty) {\n if (flags & 64 /* InputElement */) {\n inputEvents(dom, nextPropsOrEmpty);\n }\n else if (flags & 256 /* SelectElement */) {\n selectEvents(dom);\n }\n else if (flags & 128 /* TextareaElement */) {\n textAreaEvents(dom, nextPropsOrEmpty);\n }\n}\nfunction isControlledFormElement(nextPropsOrEmpty) {\n return nextPropsOrEmpty.type && isCheckedType(nextPropsOrEmpty.type) ? !isNullOrUndef(nextPropsOrEmpty.checked) : !isNullOrUndef(nextPropsOrEmpty.value);\n}\n\nfunction createRef() {\n return {\n current: null\n };\n}\nfunction forwardRef(render) {\n // @ts-ignore\n return {\n render: render\n };\n}\nfunction unmountRef(ref) {\n if (ref) {\n if (!safeCall1(ref, null) && ref.current) {\n ref.current = null;\n }\n }\n}\nfunction mountRef(ref, value, lifecycle) {\n if (ref && (isFunction(ref) || ref.current !== void 0)) {\n lifecycle.push(function () {\n if (!safeCall1(ref, value) && ref.current !== void 0) {\n ref.current = value;\n }\n });\n }\n}\n\nfunction remove(vNode, parentDOM) {\n unmount(vNode);\n removeVNodeDOM(vNode, parentDOM);\n}\nfunction unmount(vNode) {\n var flags = vNode.flags;\n var children = vNode.children;\n var ref;\n if (flags & 481 /* Element */) {\n ref = vNode.ref;\n var props = vNode.props;\n unmountRef(ref);\n var childFlags = vNode.childFlags;\n if (!isNull(props)) {\n var keys = Object.keys(props);\n for (var i = 0, len = keys.length; i < len; i++) {\n var key = keys[i];\n if (syntheticEvents[key]) {\n unmountSyntheticEvent(key, vNode.dom);\n }\n }\n }\n if (childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(children);\n }\n else if (childFlags === 2 /* HasVNodeChildren */) {\n unmount(children);\n }\n }\n else if (children) {\n if (flags & 4 /* ComponentClass */) {\n if (isFunction(children.componentWillUnmount)) {\n children.componentWillUnmount();\n }\n unmountRef(vNode.ref);\n children.$UN = true;\n unmount(children.$LI);\n }\n else if (flags & 8 /* ComponentFunction */) {\n ref = vNode.ref;\n if (!isNullOrUndef(ref) && isFunction(ref.onComponentWillUnmount)) {\n ref.onComponentWillUnmount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ);\n }\n unmount(children);\n }\n else if (flags & 1024 /* Portal */) {\n remove(children, vNode.ref);\n }\n else if (flags & 8192 /* Fragment */) {\n if (vNode.childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(children);\n }\n }\n }\n}\nfunction unmountAllChildren(children) {\n for (var i = 0, len = children.length; i < len; ++i) {\n unmount(children[i]);\n }\n}\nfunction clearDOM(dom) {\n // Optimization for clearing dom\n dom.textContent = '';\n}\nfunction removeAllChildren(dom, vNode, children) {\n unmountAllChildren(children);\n if (vNode.flags & 8192 /* Fragment */) {\n removeVNodeDOM(vNode, dom);\n }\n else {\n clearDOM(dom);\n }\n}\n\nfunction wrapLinkEvent(nextValue) {\n // This variable makes sure there is no \"this\" context in callback\n var ev = nextValue.event;\n return function (e) {\n ev(nextValue.data, e);\n };\n}\nfunction patchEvent(name, lastValue, nextValue, dom) {\n if (isLinkEventObject(nextValue)) {\n if (isLastValueSameLinkEvent(lastValue, nextValue)) {\n return;\n }\n nextValue = wrapLinkEvent(nextValue);\n }\n attachEvent(dom, normalizeEventName(name), nextValue);\n}\n// We are assuming here that we come from patchProp routine\n// -nextAttrValue cannot be null or undefined\nfunction patchStyle(lastAttrValue, nextAttrValue, dom) {\n if (isNullOrUndef(nextAttrValue)) {\n dom.removeAttribute('style');\n return;\n }\n var domStyle = dom.style;\n var style;\n var value;\n if (isString(nextAttrValue)) {\n domStyle.cssText = nextAttrValue;\n return;\n }\n if (!isNullOrUndef(lastAttrValue) && !isString(lastAttrValue)) {\n for (style in nextAttrValue) {\n // do not add a hasOwnProperty check here, it affects performance\n value = nextAttrValue[style];\n if (value !== lastAttrValue[style]) {\n domStyle.setProperty(style, value);\n }\n }\n for (style in lastAttrValue) {\n if (isNullOrUndef(nextAttrValue[style])) {\n domStyle.removeProperty(style);\n }\n }\n }\n else {\n for (style in nextAttrValue) {\n value = nextAttrValue[style];\n domStyle.setProperty(style, value);\n }\n }\n}\nfunction patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom) {\n var lastHtml = (lastValue && lastValue.__html) || '';\n var nextHtml = (nextValue && nextValue.__html) || '';\n if (lastHtml !== nextHtml) {\n if (!isNullOrUndef(nextHtml) && !isSameInnerHTML(dom, nextHtml)) {\n if (!isNull(lastVNode)) {\n if (lastVNode.childFlags & 12 /* MultipleChildren */) {\n unmountAllChildren(lastVNode.children);\n }\n else if (lastVNode.childFlags === 2 /* HasVNodeChildren */) {\n unmount(lastVNode.children);\n }\n lastVNode.children = null;\n lastVNode.childFlags = 1 /* HasInvalidChildren */;\n }\n dom.innerHTML = nextHtml;\n }\n }\n}\nfunction patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode) {\n switch (prop) {\n case 'children':\n case 'childrenType':\n case 'className':\n case 'defaultValue':\n case 'key':\n case 'multiple':\n case 'ref':\n case 'selectedIndex':\n break;\n case 'autoFocus':\n dom.autofocus = !!nextValue;\n break;\n case 'allowfullscreen':\n case 'autoplay':\n case 'capture':\n case 'checked':\n case 'controls':\n case 'default':\n case 'disabled':\n case 'hidden':\n case 'indeterminate':\n case 'loop':\n case 'muted':\n case 'novalidate':\n case 'open':\n case 'readOnly':\n case 'required':\n case 'reversed':\n case 'scoped':\n case 'seamless':\n case 'selected':\n dom[prop] = !!nextValue;\n break;\n case 'defaultChecked':\n case 'value':\n case 'volume':\n if (hasControlledValue && prop === 'value') {\n break;\n }\n var value = isNullOrUndef(nextValue) ? '' : nextValue;\n if (dom[prop] !== value) {\n dom[prop] = value;\n }\n break;\n case 'style':\n patchStyle(lastValue, nextValue, dom);\n break;\n case 'dangerouslySetInnerHTML':\n patchDangerInnerHTML(lastValue, nextValue, lastVNode, dom);\n break;\n default:\n if (syntheticEvents[prop]) {\n handleSyntheticEvent(prop, lastValue, nextValue, dom);\n }\n else if (prop.charCodeAt(0) === 111 && prop.charCodeAt(1) === 110) {\n patchEvent(prop, lastValue, nextValue, dom);\n }\n else if (isNullOrUndef(nextValue)) {\n dom.removeAttribute(prop);\n }\n else if (isSVG && namespaces[prop]) {\n // We optimize for isSVG being false\n // If we end up in this path we can read property again\n dom.setAttributeNS(namespaces[prop], prop, nextValue);\n }\n else {\n dom.setAttribute(prop, nextValue);\n }\n break;\n }\n}\nfunction mountProps(vNode, flags, props, dom, isSVG) {\n var hasControlledValue = false;\n var isFormElement = (flags & 448 /* FormElement */) > 0;\n if (isFormElement) {\n hasControlledValue = isControlledFormElement(props);\n if (hasControlledValue) {\n addFormElementEventHandlers(flags, dom, props);\n }\n }\n for (var prop in props) {\n // do not add a hasOwnProperty check here, it affects performance\n patchProp(prop, null, props[prop], dom, isSVG, hasControlledValue, null);\n }\n if (isFormElement) {\n processElement(flags, vNode, dom, props, true, hasControlledValue);\n }\n}\n\nfunction renderNewInput(instance, props, context) {\n var nextInput = normalizeRoot(instance.render(props, instance.state, context));\n var childContext = context;\n if (isFunction(instance.getChildContext)) {\n childContext = combineFrom(context, instance.getChildContext());\n }\n instance.$CX = childContext;\n return nextInput;\n}\nfunction createClassComponentInstance(vNode, Component, props, context, isSVG, lifecycle) {\n var instance = new Component(props, context);\n var usesNewAPI = (instance.$N = Boolean(Component.getDerivedStateFromProps || instance.getSnapshotBeforeUpdate));\n instance.$SVG = isSVG;\n instance.$L = lifecycle;\n vNode.children = instance;\n instance.$BS = false;\n instance.context = context;\n if (instance.props === EMPTY_OBJ) {\n instance.props = props;\n }\n if (!usesNewAPI) {\n if (isFunction(instance.componentWillMount)) {\n instance.$BR = true;\n instance.componentWillMount();\n var pending = instance.$PS;\n if (!isNull(pending)) {\n var state = instance.state;\n if (isNull(state)) {\n instance.state = pending;\n }\n else {\n for (var key in pending) {\n state[key] = pending[key];\n }\n }\n instance.$PS = null;\n }\n instance.$BR = false;\n }\n }\n else {\n instance.state = createDerivedState(instance, props, instance.state);\n }\n instance.$LI = renderNewInput(instance, props, context);\n return instance;\n}\nfunction renderFunctionalComponent(vNode, context) {\n var props = vNode.props || EMPTY_OBJ;\n return vNode.flags & 32768 /* ForwardRef */ ? vNode.type.render(props, vNode.ref, context) : vNode.type(props, context);\n}\n\nfunction mount(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var flags = (vNode.flags |= 16384 /* InUse */);\n if (flags & 481 /* Element */) {\n mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (flags & 4 /* ComponentClass */) {\n mountClassComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (flags & 8 /* ComponentFunction */) {\n mountFunctionalComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle);\n mountFunctionalComponentCallbacks(vNode, lifecycle);\n }\n else if (flags & 512 /* Void */ || flags & 16 /* Text */) {\n mountText(vNode, parentDOM, nextNode);\n }\n else if (flags & 8192 /* Fragment */) {\n mountFragment(vNode, context, parentDOM, isSVG, nextNode, lifecycle);\n }\n else if (flags & 1024 /* Portal */) {\n mountPortal(vNode, context, parentDOM, nextNode, lifecycle);\n }\n else ;\n}\nfunction mountPortal(vNode, context, parentDOM, nextNode, lifecycle) {\n mount(vNode.children, vNode.ref, context, false, null, lifecycle);\n var placeHolderVNode = createVoidVNode();\n mountText(placeHolderVNode, parentDOM, nextNode);\n vNode.dom = placeHolderVNode.dom;\n}\nfunction mountFragment(vNode, context, parentDOM, isSVG, nextNode, lifecycle) {\n var children = vNode.children;\n var childFlags = vNode.childFlags;\n // When fragment is optimized for multiple children, check if there is no children and change flag to invalid\n // This is the only normalization always done, to keep optimization flags API same for fragments and regular elements\n if (childFlags & 12 /* MultipleChildren */ && children.length === 0) {\n childFlags = vNode.childFlags = 2 /* HasVNodeChildren */;\n children = vNode.children = createVoidVNode();\n }\n if (childFlags === 2 /* HasVNodeChildren */) {\n mount(children, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else {\n mountArrayChildren(children, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n}\nfunction mountText(vNode, parentDOM, nextNode) {\n var dom = (vNode.dom = document.createTextNode(vNode.children));\n if (!isNull(parentDOM)) {\n insertOrAppend(parentDOM, dom, nextNode);\n }\n}\nfunction mountElement(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var flags = vNode.flags;\n var props = vNode.props;\n var className = vNode.className;\n var childFlags = vNode.childFlags;\n var dom = (vNode.dom = documentCreateElement(vNode.type, (isSVG = isSVG || (flags & 32 /* SvgElement */) > 0)));\n var children = vNode.children;\n if (!isNullOrUndef(className) && className !== '') {\n if (isSVG) {\n dom.setAttribute('class', className);\n }\n else {\n dom.className = className;\n }\n }\n if (childFlags === 16 /* HasTextChildren */) {\n setTextContent(dom, children);\n }\n else if (childFlags !== 1 /* HasInvalidChildren */) {\n var childrenIsSVG = isSVG && vNode.type !== 'foreignObject';\n if (childFlags === 2 /* HasVNodeChildren */) {\n if (children.flags & 16384 /* InUse */) {\n vNode.children = children = directClone(children);\n }\n mount(children, dom, context, childrenIsSVG, null, lifecycle);\n }\n else if (childFlags === 8 /* HasKeyedChildren */ || childFlags === 4 /* HasNonKeyedChildren */) {\n mountArrayChildren(children, dom, context, childrenIsSVG, null, lifecycle);\n }\n }\n if (!isNull(parentDOM)) {\n insertOrAppend(parentDOM, dom, nextNode);\n }\n if (!isNull(props)) {\n mountProps(vNode, flags, props, dom, isSVG);\n }\n mountRef(vNode.ref, dom, lifecycle);\n}\nfunction mountArrayChildren(children, dom, context, isSVG, nextNode, lifecycle) {\n for (var i = 0; i < children.length; ++i) {\n var child = children[i];\n if (child.flags & 16384 /* InUse */) {\n children[i] = child = directClone(child);\n }\n mount(child, dom, context, isSVG, nextNode, lifecycle);\n }\n}\nfunction mountClassComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var instance = createClassComponentInstance(vNode, vNode.type, vNode.props || EMPTY_OBJ, context, isSVG, lifecycle);\n mount(instance.$LI, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);\n mountClassComponentCallbacks(vNode.ref, instance, lifecycle);\n}\nfunction mountFunctionalComponent(vNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n mount((vNode.children = normalizeRoot(renderFunctionalComponent(vNode, context))), parentDOM, context, isSVG, nextNode, lifecycle);\n}\nfunction createClassMountCallback(instance) {\n return function () {\n instance.componentDidMount();\n };\n}\nfunction mountClassComponentCallbacks(ref, instance, lifecycle) {\n mountRef(ref, instance, lifecycle);\n if (isFunction(instance.componentDidMount)) {\n lifecycle.push(createClassMountCallback(instance));\n }\n}\nfunction createOnMountCallback(ref, vNode) {\n return function () {\n ref.onComponentDidMount(findDOMfromVNode(vNode, true), vNode.props || EMPTY_OBJ);\n };\n}\nfunction mountFunctionalComponentCallbacks(vNode, lifecycle) {\n var ref = vNode.ref;\n if (!isNullOrUndef(ref)) {\n safeCall1(ref.onComponentWillMount, vNode.props || EMPTY_OBJ);\n if (isFunction(ref.onComponentDidMount)) {\n lifecycle.push(createOnMountCallback(ref, vNode));\n }\n }\n}\n\nfunction replaceWithNewNode(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {\n unmount(lastVNode);\n if ((nextVNode.flags & lastVNode.flags & 2033 /* DOMRef */) !== 0) {\n mount(nextVNode, null, context, isSVG, null, lifecycle);\n // Single DOM operation, when we have dom references available\n replaceChild(parentDOM, nextVNode.dom, lastVNode.dom);\n }\n else {\n mount(nextVNode, parentDOM, context, isSVG, findDOMfromVNode(lastVNode, true), lifecycle);\n removeVNodeDOM(lastVNode, parentDOM);\n }\n}\nfunction patch(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var nextFlags = (nextVNode.flags |= 16384 /* InUse */);\n if (lastVNode.flags !== nextFlags || lastVNode.type !== nextVNode.type || lastVNode.key !== nextVNode.key || nextFlags & 2048 /* ReCreate */) {\n if (lastVNode.flags & 16384 /* InUse */) {\n replaceWithNewNode(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle);\n }\n else {\n // Last vNode is not in use, it has crashed at application level. Just mount nextVNode and ignore last one\n mount(nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (nextFlags & 481 /* Element */) {\n patchElement(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle);\n }\n else if (nextFlags & 4 /* ComponentClass */) {\n patchClassComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (nextFlags & 8 /* ComponentFunction */) {\n patchFunctionalComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n else if (nextFlags & 16 /* Text */) {\n patchText(lastVNode, nextVNode);\n }\n else if (nextFlags & 512 /* Void */) {\n nextVNode.dom = lastVNode.dom;\n }\n else if (nextFlags & 8192 /* Fragment */) {\n patchFragment(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle);\n }\n else {\n patchPortal(lastVNode, nextVNode, context, lifecycle);\n }\n}\nfunction patchSingleTextChild(lastChildren, nextChildren, parentDOM) {\n if (lastChildren !== nextChildren) {\n if (lastChildren !== '') {\n parentDOM.firstChild.nodeValue = nextChildren;\n }\n else {\n setTextContent(parentDOM, nextChildren);\n }\n }\n}\nfunction patchContentEditableChildren(dom, nextChildren) {\n if (dom.textContent !== nextChildren) {\n dom.textContent = nextChildren;\n }\n}\nfunction patchFragment(lastVNode, nextVNode, parentDOM, context, isSVG, lifecycle) {\n var lastChildren = lastVNode.children;\n var nextChildren = nextVNode.children;\n var lastChildFlags = lastVNode.childFlags;\n var nextChildFlags = nextVNode.childFlags;\n var nextNode = null;\n // When fragment is optimized for multiple children, check if there is no children and change flag to invalid\n // This is the only normalization always done, to keep optimization flags API same for fragments and regular elements\n if (nextChildFlags & 12 /* MultipleChildren */ && nextChildren.length === 0) {\n nextChildFlags = nextVNode.childFlags = 2 /* HasVNodeChildren */;\n nextChildren = nextVNode.children = createVoidVNode();\n }\n var nextIsSingle = (nextChildFlags & 2 /* HasVNodeChildren */) !== 0;\n if (lastChildFlags & 12 /* MultipleChildren */) {\n var lastLen = lastChildren.length;\n // We need to know Fragment's edge node when\n if (\n // It uses keyed algorithm\n (lastChildFlags & 8 /* HasKeyedChildren */ && nextChildFlags & 8 /* HasKeyedChildren */) ||\n // It transforms from many to single\n nextIsSingle ||\n // It will append more nodes\n (!nextIsSingle && nextChildren.length > lastLen)) {\n // When fragment has multiple children there is always at least one vNode\n nextNode = findDOMfromVNode(lastChildren[lastLen - 1], false).nextSibling;\n }\n }\n patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lastVNode, lifecycle);\n}\nfunction patchPortal(lastVNode, nextVNode, context, lifecycle) {\n var lastContainer = lastVNode.ref;\n var nextContainer = nextVNode.ref;\n var nextChildren = nextVNode.children;\n patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, lastContainer, context, false, null, lastVNode, lifecycle);\n nextVNode.dom = lastVNode.dom;\n if (lastContainer !== nextContainer && !isInvalid(nextChildren)) {\n var node = nextChildren.dom;\n removeChild(lastContainer, node);\n appendChild(nextContainer, node);\n }\n}\nfunction patchElement(lastVNode, nextVNode, context, isSVG, nextFlags, lifecycle) {\n var dom = (nextVNode.dom = lastVNode.dom);\n var lastProps = lastVNode.props;\n var nextProps = nextVNode.props;\n var isFormElement = false;\n var hasControlledValue = false;\n var nextPropsOrEmpty;\n isSVG = isSVG || (nextFlags & 32 /* SvgElement */) > 0;\n // inlined patchProps -- starts --\n if (lastProps !== nextProps) {\n var lastPropsOrEmpty = lastProps || EMPTY_OBJ;\n nextPropsOrEmpty = nextProps || EMPTY_OBJ;\n if (nextPropsOrEmpty !== EMPTY_OBJ) {\n isFormElement = (nextFlags & 448 /* FormElement */) > 0;\n if (isFormElement) {\n hasControlledValue = isControlledFormElement(nextPropsOrEmpty);\n }\n for (var prop in nextPropsOrEmpty) {\n var lastValue = lastPropsOrEmpty[prop];\n var nextValue = nextPropsOrEmpty[prop];\n if (lastValue !== nextValue) {\n patchProp(prop, lastValue, nextValue, dom, isSVG, hasControlledValue, lastVNode);\n }\n }\n }\n if (lastPropsOrEmpty !== EMPTY_OBJ) {\n for (var prop$1 in lastPropsOrEmpty) {\n if (isNullOrUndef(nextPropsOrEmpty[prop$1]) && !isNullOrUndef(lastPropsOrEmpty[prop$1])) {\n patchProp(prop$1, lastPropsOrEmpty[prop$1], null, dom, isSVG, hasControlledValue, lastVNode);\n }\n }\n }\n }\n var nextChildren = nextVNode.children;\n var nextClassName = nextVNode.className;\n // inlined patchProps -- ends --\n if (lastVNode.className !== nextClassName) {\n if (isNullOrUndef(nextClassName)) {\n dom.removeAttribute('class');\n }\n else if (isSVG) {\n dom.setAttribute('class', nextClassName);\n }\n else {\n dom.className = nextClassName;\n }\n }\n if (nextFlags & 4096 /* ContentEditable */) {\n patchContentEditableChildren(dom, nextChildren);\n }\n else {\n patchChildren(lastVNode.childFlags, nextVNode.childFlags, lastVNode.children, nextChildren, dom, context, isSVG && nextVNode.type !== 'foreignObject', null, lastVNode, lifecycle);\n }\n if (isFormElement) {\n processElement(nextFlags, nextVNode, dom, nextPropsOrEmpty, false, hasControlledValue);\n }\n var nextRef = nextVNode.ref;\n var lastRef = lastVNode.ref;\n if (lastRef !== nextRef) {\n unmountRef(lastRef);\n mountRef(nextRef, dom, lifecycle);\n }\n}\nfunction replaceOneVNodeWithMultipleVNodes(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle) {\n unmount(lastChildren);\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, findDOMfromVNode(lastChildren, true), lifecycle);\n removeVNodeDOM(lastChildren, parentDOM);\n}\nfunction patchChildren(lastChildFlags, nextChildFlags, lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, parentVNode, lifecycle) {\n switch (lastChildFlags) {\n case 2 /* HasVNodeChildren */:\n switch (nextChildFlags) {\n case 2 /* HasVNodeChildren */:\n patch(lastChildren, nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n remove(lastChildren, parentDOM);\n break;\n case 16 /* HasTextChildren */:\n unmount(lastChildren);\n setTextContent(parentDOM, nextChildren);\n break;\n default:\n replaceOneVNodeWithMultipleVNodes(lastChildren, nextChildren, parentDOM, context, isSVG, lifecycle);\n break;\n }\n break;\n case 1 /* HasInvalidChildren */:\n switch (nextChildFlags) {\n case 2 /* HasVNodeChildren */:\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n break;\n case 16 /* HasTextChildren */:\n setTextContent(parentDOM, nextChildren);\n break;\n default:\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n }\n break;\n case 16 /* HasTextChildren */:\n switch (nextChildFlags) {\n case 16 /* HasTextChildren */:\n patchSingleTextChild(lastChildren, nextChildren, parentDOM);\n break;\n case 2 /* HasVNodeChildren */:\n clearDOM(parentDOM);\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n clearDOM(parentDOM);\n break;\n default:\n clearDOM(parentDOM);\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n }\n break;\n default:\n switch (nextChildFlags) {\n case 16 /* HasTextChildren */:\n unmountAllChildren(lastChildren);\n setTextContent(parentDOM, nextChildren);\n break;\n case 2 /* HasVNodeChildren */:\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n mount(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n break;\n case 1 /* HasInvalidChildren */:\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n break;\n default:\n var lastLength = lastChildren.length | 0;\n var nextLength = nextChildren.length | 0;\n // Fast path's for both algorithms\n if (lastLength === 0) {\n if (nextLength > 0) {\n mountArrayChildren(nextChildren, parentDOM, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (nextLength === 0) {\n removeAllChildren(parentDOM, parentVNode, lastChildren);\n }\n else if (nextChildFlags === 8 /* HasKeyedChildren */ && lastChildFlags === 8 /* HasKeyedChildren */) {\n patchKeyedChildren(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, parentVNode, lifecycle);\n }\n else {\n patchNonKeyedChildren(lastChildren, nextChildren, parentDOM, context, isSVG, lastLength, nextLength, nextNode, lifecycle);\n }\n break;\n }\n break;\n }\n}\nfunction createDidUpdate(instance, lastProps, lastState, snapshot, lifecycle) {\n lifecycle.push(function () {\n instance.componentDidUpdate(lastProps, lastState, snapshot);\n });\n}\nfunction updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, force, nextNode, lifecycle) {\n var lastState = instance.state;\n var lastProps = instance.props;\n var usesNewAPI = Boolean(instance.$N);\n var hasSCU = isFunction(instance.shouldComponentUpdate);\n if (usesNewAPI) {\n nextState = createDerivedState(instance, nextProps, nextState !== lastState ? combineFrom(lastState, nextState) : nextState);\n }\n if (force || !hasSCU || (hasSCU && instance.shouldComponentUpdate(nextProps, nextState, context))) {\n if (!usesNewAPI && isFunction(instance.componentWillUpdate)) {\n instance.componentWillUpdate(nextProps, nextState, context);\n }\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = context;\n var snapshot = null;\n var nextInput = renderNewInput(instance, nextProps, context);\n if (usesNewAPI && isFunction(instance.getSnapshotBeforeUpdate)) {\n snapshot = instance.getSnapshotBeforeUpdate(lastProps, lastState);\n }\n patch(instance.$LI, nextInput, parentDOM, instance.$CX, isSVG, nextNode, lifecycle);\n // Dont update Last input, until patch has been succesfully executed\n instance.$LI = nextInput;\n if (isFunction(instance.componentDidUpdate)) {\n createDidUpdate(instance, lastProps, lastState, snapshot, lifecycle);\n }\n }\n else {\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = context;\n }\n}\nfunction patchClassComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var instance = (nextVNode.children = lastVNode.children);\n // If Component has crashed, ignore it to stay functional\n if (isNull(instance)) {\n return;\n }\n instance.$L = lifecycle;\n var nextProps = nextVNode.props || EMPTY_OBJ;\n var nextRef = nextVNode.ref;\n var lastRef = lastVNode.ref;\n var nextState = instance.state;\n if (!instance.$N) {\n if (isFunction(instance.componentWillReceiveProps)) {\n instance.$BR = true;\n instance.componentWillReceiveProps(nextProps, context);\n // If instance component was removed during its own update do nothing.\n if (instance.$UN) {\n return;\n }\n instance.$BR = false;\n }\n if (!isNull(instance.$PS)) {\n nextState = combineFrom(nextState, instance.$PS);\n instance.$PS = null;\n }\n }\n updateClassComponent(instance, nextState, nextProps, parentDOM, context, isSVG, false, nextNode, lifecycle);\n if (lastRef !== nextRef) {\n unmountRef(lastRef);\n mountRef(nextRef, instance, lifecycle);\n }\n}\nfunction patchFunctionalComponent(lastVNode, nextVNode, parentDOM, context, isSVG, nextNode, lifecycle) {\n var shouldUpdate = true;\n var nextProps = nextVNode.props || EMPTY_OBJ;\n var nextRef = nextVNode.ref;\n var lastProps = lastVNode.props;\n var nextHooksDefined = !isNullOrUndef(nextRef);\n var lastInput = lastVNode.children;\n if (nextHooksDefined && isFunction(nextRef.onComponentShouldUpdate)) {\n shouldUpdate = nextRef.onComponentShouldUpdate(lastProps, nextProps);\n }\n if (shouldUpdate !== false) {\n if (nextHooksDefined && isFunction(nextRef.onComponentWillUpdate)) {\n nextRef.onComponentWillUpdate(lastProps, nextProps);\n }\n var nextInput = normalizeRoot(renderFunctionalComponent(nextVNode, context));\n patch(lastInput, nextInput, parentDOM, context, isSVG, nextNode, lifecycle);\n nextVNode.children = nextInput;\n if (nextHooksDefined && isFunction(nextRef.onComponentDidUpdate)) {\n nextRef.onComponentDidUpdate(lastProps, nextProps);\n }\n }\n else {\n nextVNode.children = lastInput;\n }\n}\nfunction patchText(lastVNode, nextVNode) {\n var nextText = nextVNode.children;\n var dom = (nextVNode.dom = lastVNode.dom);\n if (nextText !== lastVNode.children) {\n dom.nodeValue = nextText;\n }\n}\nfunction patchNonKeyedChildren(lastChildren, nextChildren, dom, context, isSVG, lastChildrenLength, nextChildrenLength, nextNode, lifecycle) {\n var commonLength = lastChildrenLength > nextChildrenLength ? nextChildrenLength : lastChildrenLength;\n var i = 0;\n var nextChild;\n var lastChild;\n for (; i < commonLength; ++i) {\n nextChild = nextChildren[i];\n lastChild = lastChildren[i];\n if (nextChild.flags & 16384 /* InUse */) {\n nextChild = nextChildren[i] = directClone(nextChild);\n }\n patch(lastChild, nextChild, dom, context, isSVG, nextNode, lifecycle);\n lastChildren[i] = nextChild;\n }\n if (lastChildrenLength < nextChildrenLength) {\n for (i = commonLength; i < nextChildrenLength; ++i) {\n nextChild = nextChildren[i];\n if (nextChild.flags & 16384 /* InUse */) {\n nextChild = nextChildren[i] = directClone(nextChild);\n }\n mount(nextChild, dom, context, isSVG, nextNode, lifecycle);\n }\n }\n else if (lastChildrenLength > nextChildrenLength) {\n for (i = commonLength; i < lastChildrenLength; ++i) {\n remove(lastChildren[i], dom);\n }\n }\n}\nfunction patchKeyedChildren(a, b, dom, context, isSVG, aLength, bLength, outerEdge, parentVNode, lifecycle) {\n var aEnd = aLength - 1;\n var bEnd = bLength - 1;\n var j = 0;\n var aNode = a[j];\n var bNode = b[j];\n var nextPos;\n var nextNode;\n // Step 1\n // tslint:disable-next-line\n outer: {\n // Sync nodes with the same key at the beginning.\n while (aNode.key === bNode.key) {\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n a[j] = bNode;\n ++j;\n if (j > aEnd || j > bEnd) {\n break outer;\n }\n aNode = a[j];\n bNode = b[j];\n }\n aNode = a[aEnd];\n bNode = b[bEnd];\n // Sync nodes with the same key at the end.\n while (aNode.key === bNode.key) {\n if (bNode.flags & 16384 /* InUse */) {\n b[bEnd] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n a[aEnd] = bNode;\n aEnd--;\n bEnd--;\n if (j > aEnd || j > bEnd) {\n break outer;\n }\n aNode = a[aEnd];\n bNode = b[bEnd];\n }\n }\n if (j > aEnd) {\n if (j <= bEnd) {\n nextPos = bEnd + 1;\n nextNode = nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge;\n while (j <= bEnd) {\n bNode = b[j];\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n ++j;\n mount(bNode, dom, context, isSVG, nextNode, lifecycle);\n }\n }\n }\n else if (j > bEnd) {\n while (j <= aEnd) {\n remove(a[j++], dom);\n }\n }\n else {\n patchKeyedChildrenComplex(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle);\n }\n}\nfunction patchKeyedChildrenComplex(a, b, context, aLength, bLength, aEnd, bEnd, j, dom, isSVG, outerEdge, parentVNode, lifecycle) {\n var aNode;\n var bNode;\n var nextPos;\n var i = 0;\n var aStart = j;\n var bStart = j;\n var aLeft = aEnd - j + 1;\n var bLeft = bEnd - j + 1;\n var sources = new Int32Array(bLeft + 1);\n // Keep track if its possible to remove whole DOM using textContent = '';\n var canRemoveWholeContent = aLeft === aLength;\n var moved = false;\n var pos = 0;\n var patched = 0;\n // When sizes are small, just loop them through\n if (bLength < 4 || (aLeft | bLeft) < 32) {\n for (i = aStart; i <= aEnd; ++i) {\n aNode = a[i];\n if (patched < bLeft) {\n for (j = bStart; j <= bEnd; j++) {\n bNode = b[j];\n if (aNode.key === bNode.key) {\n sources[j - bStart] = i + 1;\n if (canRemoveWholeContent) {\n canRemoveWholeContent = false;\n while (aStart < i) {\n remove(a[aStart++], dom);\n }\n }\n if (pos > j) {\n moved = true;\n }\n else {\n pos = j;\n }\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n ++patched;\n break;\n }\n }\n if (!canRemoveWholeContent && j > bEnd) {\n remove(aNode, dom);\n }\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n }\n else {\n var keyIndex = {};\n // Map keys by their index\n for (i = bStart; i <= bEnd; ++i) {\n keyIndex[b[i].key] = i;\n }\n // Try to patch same keys\n for (i = aStart; i <= aEnd; ++i) {\n aNode = a[i];\n if (patched < bLeft) {\n j = keyIndex[aNode.key];\n if (j !== void 0) {\n if (canRemoveWholeContent) {\n canRemoveWholeContent = false;\n while (i > aStart) {\n remove(a[aStart++], dom);\n }\n }\n sources[j - bStart] = i + 1;\n if (pos > j) {\n moved = true;\n }\n else {\n pos = j;\n }\n bNode = b[j];\n if (bNode.flags & 16384 /* InUse */) {\n b[j] = bNode = directClone(bNode);\n }\n patch(aNode, bNode, dom, context, isSVG, outerEdge, lifecycle);\n ++patched;\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n else if (!canRemoveWholeContent) {\n remove(aNode, dom);\n }\n }\n }\n // fast-path: if nothing patched remove all old and add all new\n if (canRemoveWholeContent) {\n removeAllChildren(dom, parentVNode, a);\n mountArrayChildren(b, dom, context, isSVG, outerEdge, lifecycle);\n }\n else if (moved) {\n var seq = lis_algorithm(sources);\n j = seq.length - 1;\n for (i = bLeft - 1; i >= 0; i--) {\n if (sources[i] === 0) {\n pos = i + bStart;\n bNode = b[pos];\n if (bNode.flags & 16384 /* InUse */) {\n b[pos] = bNode = directClone(bNode);\n }\n nextPos = pos + 1;\n mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle);\n }\n else if (j < 0 || i !== seq[j]) {\n pos = i + bStart;\n bNode = b[pos];\n nextPos = pos + 1;\n moveVNodeDOM(bNode, dom, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge);\n }\n else {\n j--;\n }\n }\n }\n else if (patched !== bLeft) {\n // when patched count doesn't match b length we need to insert those new ones\n // loop backwards so we can use insertBefore\n for (i = bLeft - 1; i >= 0; i--) {\n if (sources[i] === 0) {\n pos = i + bStart;\n bNode = b[pos];\n if (bNode.flags & 16384 /* InUse */) {\n b[pos] = bNode = directClone(bNode);\n }\n nextPos = pos + 1;\n mount(bNode, dom, context, isSVG, nextPos < bLength ? findDOMfromVNode(b[nextPos], true) : outerEdge, lifecycle);\n }\n }\n }\n}\nvar result;\nvar p;\nvar maxLen = 0;\n// https://en.wikipedia.org/wiki/Longest_increasing_subsequence\nfunction lis_algorithm(arr) {\n var arrI = 0;\n var i = 0;\n var j = 0;\n var k = 0;\n var u = 0;\n var v = 0;\n var c = 0;\n var len = arr.length;\n if (len > maxLen) {\n maxLen = len;\n result = new Int32Array(len);\n p = new Int32Array(len);\n }\n for (; i < len; ++i) {\n arrI = arr[i];\n if (arrI !== 0) {\n j = result[k];\n if (arr[j] < arrI) {\n p[i] = j;\n result[++k] = i;\n continue;\n }\n u = 0;\n v = k;\n while (u < v) {\n c = (u + v) >> 1;\n if (arr[result[c]] < arrI) {\n u = c + 1;\n }\n else {\n v = c;\n }\n }\n if (arrI < arr[result[u]]) {\n if (u > 0) {\n p[i] = result[u - 1];\n }\n result[u] = i;\n }\n }\n }\n u = k + 1;\n var seq = new Int32Array(u);\n v = result[u - 1];\n while (u-- > 0) {\n seq[u] = v;\n v = p[v];\n result[u] = 0;\n }\n return seq;\n}\n\nvar hasDocumentAvailable = typeof document !== 'undefined';\nif (hasDocumentAvailable) {\n /*\n * Defining $EV and $V properties on Node.prototype\n * fixes v8 \"wrong map\" de-optimization\n */\n if (window.Node) {\n Node.prototype.$EV = null;\n Node.prototype.$V = null;\n }\n}\nfunction __render(input, parentDOM, callback, context) {\n var lifecycle = [];\n var rootInput = parentDOM.$V;\n renderCheck.v = true;\n if (isNullOrUndef(rootInput)) {\n if (!isNullOrUndef(input)) {\n if (input.flags & 16384 /* InUse */) {\n input = directClone(input);\n }\n mount(input, parentDOM, context, false, null, lifecycle);\n parentDOM.$V = input;\n rootInput = input;\n }\n }\n else {\n if (isNullOrUndef(input)) {\n remove(rootInput, parentDOM);\n parentDOM.$V = null;\n }\n else {\n if (input.flags & 16384 /* InUse */) {\n input = directClone(input);\n }\n patch(rootInput, input, parentDOM, context, false, null, lifecycle);\n rootInput = parentDOM.$V = input;\n }\n }\n callAll(lifecycle);\n renderCheck.v = false;\n if (isFunction(callback)) {\n callback();\n }\n if (isFunction(options.renderComplete)) {\n options.renderComplete(rootInput, parentDOM);\n }\n}\nfunction render(input, parentDOM, callback, context) {\n if ( callback === void 0 ) callback = null;\n if ( context === void 0 ) context = EMPTY_OBJ;\n\n __render(input, parentDOM, callback, context);\n}\nfunction createRenderer(parentDOM) {\n return function renderer(lastInput, nextInput, callback, context) {\n if (!parentDOM) {\n parentDOM = lastInput;\n }\n render(nextInput, parentDOM, callback, context);\n };\n}\n\nvar QUEUE = [];\nvar nextTick = typeof Promise !== 'undefined'\n ? Promise.resolve().then.bind(Promise.resolve())\n : function (a) {\n window.setTimeout(a, 0);\n };\nvar microTaskPending = false;\nfunction queueStateChanges(component, newState, callback, force) {\n var pending = component.$PS;\n if (isFunction(newState)) {\n newState = newState(pending ? combineFrom(component.state, pending) : component.state, component.props, component.context);\n }\n if (isNullOrUndef(pending)) {\n component.$PS = newState;\n }\n else {\n for (var stateKey in newState) {\n pending[stateKey] = newState[stateKey];\n }\n }\n if (!component.$BR) {\n if (!renderCheck.v) {\n if (QUEUE.length === 0) {\n applyState(component, force);\n if (isFunction(callback)) {\n callback.call(component);\n }\n return;\n }\n }\n if (QUEUE.indexOf(component) === -1) {\n QUEUE.push(component);\n }\n if (force) {\n component.$F = true;\n }\n if (!microTaskPending) {\n microTaskPending = true;\n nextTick(rerender);\n }\n if (isFunction(callback)) {\n var QU = component.$QU;\n if (!QU) {\n QU = component.$QU = [];\n }\n QU.push(callback);\n }\n }\n else if (isFunction(callback)) {\n component.$L.push(callback.bind(component));\n }\n}\nfunction callSetStateCallbacks(component) {\n var queue = component.$QU;\n for (var i = 0; i < queue.length; ++i) {\n queue[i].call(component);\n }\n component.$QU = null;\n}\nfunction rerender() {\n var component;\n microTaskPending = false;\n while ((component = QUEUE.shift())) {\n if (!component.$UN) {\n var force = component.$F;\n component.$F = false;\n applyState(component, force);\n if (component.$QU) {\n callSetStateCallbacks(component);\n }\n }\n }\n}\nfunction applyState(component, force) {\n if (force || !component.$BR) {\n var pendingState = component.$PS;\n component.$PS = null;\n var lifecycle = [];\n renderCheck.v = true;\n updateClassComponent(component, combineFrom(component.state, pendingState), component.props, findDOMfromVNode(component.$LI, true).parentNode, component.context, component.$SVG, force, null, lifecycle);\n callAll(lifecycle);\n renderCheck.v = false;\n }\n else {\n component.state = component.$PS;\n component.$PS = null;\n }\n}\nvar Component = function Component(props, context) {\n // Public\n this.state = null;\n // Internal properties\n this.$BR = false; // BLOCK RENDER\n this.$BS = true; // BLOCK STATE\n this.$PS = null; // PENDING STATE (PARTIAL or FULL)\n this.$LI = null; // LAST INPUT\n this.$UN = false; // UNMOUNTED\n this.$CX = null; // CHILDCONTEXT\n this.$QU = null; // QUEUE\n this.$N = false; // Uses new lifecycle API Flag\n this.$L = null; // Current lifecycle of this component\n this.$SVG = false; // Flag to keep track if component is inside SVG tree\n this.$F = false; // Force update flag\n this.props = props || EMPTY_OBJ;\n this.context = context || EMPTY_OBJ; // context should not be mutable\n};\nComponent.prototype.forceUpdate = function forceUpdate (callback) {\n if (this.$UN) {\n return;\n }\n // Do not allow double render during force update\n queueStateChanges(this, {}, callback, true);\n};\nComponent.prototype.setState = function setState (newState, callback) {\n if (this.$UN) {\n return;\n }\n if (!this.$BS) {\n queueStateChanges(this, newState, callback, false);\n }\n};\nComponent.prototype.render = function render (_nextProps, _nextState, _nextContext) {\n return null;\n};\n\nvar version = \"7.4.11\";\n\nexport { Component, EMPTY_OBJ, Fragment, createClassComponentInstance as _CI, normalizeRoot as _HI, mount as _M, mountClassComponentCallbacks as _MCCC, mountElement as _ME, mountFunctionalComponentCallbacks as _MFCC, mountProps as _MP, mountRef as _MR, renderFunctionalComponent as _RFC, __render, createComponentVNode, createFragment, createPortal, createRef, createRenderer, createTextVNode, createVNode, directClone, findDOMfromVNode, forwardRef, getFlagsForElementVnode, linkEvent, normalizeProps, options, render, rerender, version };\n","export const InfernoEffectHost = {\n lockCount: 0,\n lock() {\n this.lockCount++;\n },\n callbacks: [],\n callEffects() {\n this.lockCount--;\n if (this.lockCount < 0) {\n throw new Error('Unexpected Effect Call');\n }\n if (this.lockCount === 0) {\n const effects = this.callbacks;\n this.callbacks = [];\n effects.forEach((callback) => callback());\n }\n },\n};\n","import { Component, findDOMfromVNode } from 'inferno';\nimport { InfernoEffectHost } from './effect_host';\nconst areObjectsEqual = (firstObject, secondObject) => {\n const bothAreObjects = firstObject instanceof Object && secondObject instanceof Object;\n if (!bothAreObjects) {\n return firstObject === secondObject;\n }\n const firstObjectKeys = Object.keys(firstObject);\n const secondObjectKeys = Object.keys(secondObject);\n if (firstObjectKeys.length !== secondObjectKeys.length) {\n return false;\n }\n const hasDifferentElement = firstObjectKeys.some((key) => firstObject[key] !== secondObject[key]);\n return !hasDifferentElement;\n};\nexport class BaseInfernoComponent extends Component {\n constructor() {\n super(...arguments);\n this._pendingContext = this.context;\n }\n componentWillReceiveProps(_, context) {\n this._pendingContext = context !== null && context !== void 0 ? context : {};\n }\n shouldComponentUpdate(nextProps, nextState) {\n return (!areObjectsEqual(this.props, nextProps)\n || !areObjectsEqual(this.state, nextState)\n || !areObjectsEqual(this.context, this._pendingContext));\n }\n}\nexport class InfernoComponent extends BaseInfernoComponent {\n constructor() {\n super(...arguments);\n this._effects = [];\n }\n createEffects() {\n return [];\n }\n updateEffects() { }\n componentWillMount() {\n InfernoEffectHost.lock();\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n componentWillUpdate(_nextProps, _nextState, _context) {\n InfernoEffectHost.lock();\n }\n componentDidMount() {\n InfernoEffectHost.callbacks.push(() => { this._effects = this.createEffects(); });\n InfernoEffectHost.callEffects();\n }\n componentDidUpdate() {\n InfernoEffectHost.callbacks.push(() => this.updateEffects());\n InfernoEffectHost.callEffects();\n }\n destroyEffects() {\n this._effects.forEach((e) => e.dispose());\n }\n componentWillUnmount() {\n this.destroyEffects();\n }\n}\nexport class InfernoWrapperComponent extends InfernoComponent {\n constructor() {\n super(...arguments);\n this.vDomElement = null;\n }\n vDomUpdateClasses() {\n const el = this.vDomElement;\n const currentClasses = el.className.length\n ? el.className.split(' ')\n : [];\n const addedClasses = currentClasses.filter((className) => el.dxClasses.previous.indexOf(className) < 0);\n const removedClasses = el.dxClasses.previous.filter((className) => currentClasses.indexOf(className) < 0);\n addedClasses.forEach((value) => {\n const indexInRemoved = el.dxClasses.removed.indexOf(value);\n if (indexInRemoved > -1) {\n el.dxClasses.removed.splice(indexInRemoved, 1);\n }\n else {\n el.dxClasses.added.push(value);\n }\n });\n removedClasses.forEach((value) => {\n const indexInAdded = el.dxClasses.added.indexOf(value);\n if (indexInAdded > -1) {\n el.dxClasses.added.splice(indexInAdded, 1);\n }\n else {\n el.dxClasses.removed.push(value);\n }\n });\n }\n componentDidMount() {\n const el = findDOMfromVNode(this.$LI, true);\n this.vDomElement = el;\n super.componentDidMount();\n el.dxClasses = el.dxClasses || {\n removed: [], added: [], previous: [],\n };\n el.dxClasses.previous = (el === null || el === void 0 ? void 0 : el.className.length)\n ? el.className.split(' ')\n : [];\n }\n componentDidUpdate() {\n super.componentDidUpdate();\n const el = this.vDomElement;\n if (el !== null) {\n el.dxClasses.added.forEach((className) => el.classList.add(className));\n el.dxClasses.removed.forEach((className) => el.classList.remove(className));\n el.dxClasses.previous = el.className.length\n ? el.className.split(' ')\n : [];\n }\n }\n shouldComponentUpdate(nextProps, nextState) {\n const shouldUpdate = super.shouldComponentUpdate(nextProps, nextState);\n if (shouldUpdate) {\n this.vDomUpdateClasses();\n }\n return shouldUpdate;\n }\n}\n","import { Component } from 'inferno';\nlet contextId = 0;\nexport const createContext = function (defaultValue) {\n const id = contextId++;\n return {\n id,\n defaultValue,\n Provider: class extends Component {\n getChildContext() {\n return Object.assign(Object.assign({}, this.context), { [id]: this.props.value || defaultValue });\n }\n render() {\n return this.props.children;\n }\n },\n };\n};\n","export class InfernoEffect {\n constructor(effect, dependency) {\n this.dependency = dependency;\n this.effect = effect;\n this.destroy = effect();\n }\n update(dependency) {\n const currentDependency = this.dependency;\n if (dependency) {\n this.dependency = dependency;\n }\n if (!dependency || dependency.some((d, i) => currentDependency[i] !== d)) {\n this.dispose();\n this.destroy = this.effect();\n }\n }\n dispose() {\n if (this.destroy) {\n this.destroy();\n }\n }\n}\n","import { rerender as reRender } from 'inferno';\nimport { InfernoEffect } from './effect';\nexport const createReRenderEffect = () => new InfernoEffect(() => {\n reRender();\n}, []);\n","export const ERROR_MSG = 'a runtime error occured! Use Inferno in development environment to find the error.';\nexport function isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nexport function isInvalid(o) {\n return o === null || o === false || o === true || o === void 0;\n}\nexport function isFunction(o) {\n return typeof o === 'function';\n}\nexport function isNull(o) {\n return o === null;\n}\nexport function throwError(message) {\n if (!message) {\n message = ERROR_MSG;\n }\n throw new Error(`Inferno Error: ${message}`);\n}\n","import { _CI, _HI, _M, _MCCC, _ME, _MFCC, _MP, _MR, EMPTY_OBJ, render, _RFC as renderFunctionalComponent, } from 'inferno';\nimport { isFunction, isInvalid, isNull, isNullOrUndef, throwError, } from './shared';\nfunction isSameInnerHTML(dom, innerHTML) {\n const tempdom = document.createElement('i');\n tempdom.innerHTML = innerHTML;\n return tempdom.innerHTML === dom.innerHTML;\n}\nfunction findLastDOMFromVNode(vNode) {\n let flags;\n let children;\n while (vNode) {\n flags = vNode.flags;\n if (flags & 2033 /* DOMRef */) {\n return vNode.dom;\n }\n children = vNode.children;\n if (flags & 8192 /* Fragment */) {\n vNode = vNode.childFlags === 2 /* HasVNodeChildren */ ? children : children[children.length - 1];\n }\n else if (flags & 4 /* ComponentClass */) {\n vNode = children.$LI;\n }\n else {\n vNode = children;\n }\n }\n return null;\n}\nfunction isSamePropsInnerHTML(dom, props) {\n return Boolean(props && props.dangerouslySetInnerHTML && props.dangerouslySetInnerHTML.__html && isSameInnerHTML(dom, props.dangerouslySetInnerHTML.__html));\n}\nfunction hydrateComponent(vNode, parentDOM, dom, context, isSVG, isClass, lifecycle) {\n const type = vNode.type;\n const ref = vNode.ref;\n const props = vNode.props || EMPTY_OBJ;\n let currentNode;\n if (isClass) {\n const instance = _CI(vNode, type, props, context, isSVG, lifecycle);\n const input = instance.$LI;\n currentNode = hydrateVNode(input, parentDOM, dom, instance.$CX, isSVG, lifecycle);\n _MCCC(ref, instance, lifecycle);\n }\n else {\n const input = _HI(renderFunctionalComponent(vNode, context));\n currentNode = hydrateVNode(input, parentDOM, dom, context, isSVG, lifecycle);\n vNode.children = input;\n _MFCC(vNode, lifecycle);\n }\n return currentNode;\n}\nfunction hydrateChildren(parentVNode, parentNode, currentNode, context, isSVG, lifecycle) {\n const childFlags = parentVNode.childFlags;\n const children = parentVNode.children;\n const props = parentVNode.props;\n const flags = parentVNode.flags;\n if (childFlags !== 1 /* HasInvalidChildren */) {\n if (childFlags === 2 /* HasVNodeChildren */) {\n if (isNull(currentNode)) {\n _M(children, parentNode, context, isSVG, null, lifecycle);\n }\n else {\n currentNode = hydrateVNode(children, parentNode, currentNode, context, isSVG, lifecycle);\n currentNode = currentNode ? currentNode.nextSibling : null;\n }\n }\n else if (childFlags === 16 /* HasTextChildren */) {\n if (isNull(currentNode)) {\n parentNode.appendChild(document.createTextNode(children));\n }\n else if (parentNode.childNodes.length !== 1 || currentNode.nodeType !== 3) {\n parentNode.textContent = children;\n }\n else if (currentNode.nodeValue !== children) {\n currentNode.nodeValue = children;\n }\n currentNode = null;\n }\n else if (childFlags & 12 /* MultipleChildren */) {\n let prevVNodeIsTextNode = false;\n for (let i = 0, len = children.length; i < len; ++i) {\n const child = children[i];\n if (isNull(currentNode) || (prevVNodeIsTextNode && (child.flags & 16 /* Text */) > 0)) {\n _M(child, parentNode, context, isSVG, currentNode, lifecycle);\n }\n else {\n currentNode = hydrateVNode(child, parentNode, currentNode, context, isSVG, lifecycle);\n currentNode = currentNode ? currentNode.nextSibling : null;\n }\n prevVNodeIsTextNode = (child.flags & 16 /* Text */) > 0;\n }\n }\n // clear any other DOM nodes, there should be only a single entry for the root\n if ((flags & 8192 /* Fragment */) === 0) {\n let nextSibling = null;\n while (currentNode) {\n nextSibling = currentNode.nextSibling;\n parentNode.removeChild(currentNode);\n currentNode = nextSibling;\n }\n }\n }\n else if (!isNull(parentNode.firstChild) && !isSamePropsInnerHTML(parentNode, props)) {\n parentNode.textContent = ''; // dom has content, but VNode has no children remove everything from DOM\n if (flags & 448 /* FormElement */) {\n // If element is form element, we need to clear defaultValue also\n parentNode.defaultValue = '';\n }\n }\n}\nfunction hydrateElement(vNode, parentDOM, dom, context, isSVG, lifecycle) {\n const props = vNode.props;\n const className = vNode.className;\n const flags = vNode.flags;\n const ref = vNode.ref;\n isSVG = isSVG || (flags & 32 /* SvgElement */) > 0;\n if (dom.nodeType !== 1) {\n _ME(vNode, null, context, isSVG, null, lifecycle);\n parentDOM.replaceChild(vNode.dom, dom);\n }\n else {\n vNode.dom = dom;\n hydrateChildren(vNode, dom, dom.firstChild, context, isSVG, lifecycle);\n if (!isNull(props)) {\n _MP(vNode, flags, props, dom, isSVG);\n }\n if (isNullOrUndef(className)) {\n if (dom.className !== '') {\n dom.removeAttribute('class');\n }\n }\n else if (isSVG) {\n dom.setAttribute('class', className);\n }\n else {\n dom.className = className;\n }\n _MR(ref, dom, lifecycle);\n }\n return vNode.dom;\n}\nfunction hydrateText(vNode, parentDOM, dom) {\n if (dom.nodeType !== 3) {\n parentDOM.replaceChild((vNode.dom = document.createTextNode(vNode.children)), dom);\n }\n else {\n const text = vNode.children;\n if (dom.nodeValue !== text) {\n dom.nodeValue = text;\n }\n vNode.dom = dom;\n }\n return vNode.dom;\n}\nfunction hydrateFragment(vNode, parentDOM, dom, context, isSVG, lifecycle) {\n const children = vNode.children;\n if (vNode.childFlags === 2 /* HasVNodeChildren */) {\n hydrateText(children, parentDOM, dom);\n return children.dom;\n }\n hydrateChildren(vNode, parentDOM, dom, context, isSVG, lifecycle);\n return findLastDOMFromVNode(children[children.length - 1]);\n}\nfunction hydrateVNode(vNode, parentDOM, currentDom, context, isSVG, lifecycle) {\n const flags = (vNode.flags |= 16384 /* InUse */);\n if (flags & 14 /* Component */) {\n return hydrateComponent(vNode, parentDOM, currentDom, context, isSVG, (flags & 4 /* ComponentClass */) > 0, lifecycle);\n }\n if (flags & 481 /* Element */) {\n return hydrateElement(vNode, parentDOM, currentDom, context, isSVG, lifecycle);\n }\n if (flags & 16 /* Text */) {\n return hydrateText(vNode, parentDOM, currentDom);\n }\n if (flags & 512 /* Void */) {\n return (vNode.dom = currentDom);\n }\n if (flags & 8192 /* Fragment */) {\n return hydrateFragment(vNode, parentDOM, currentDom, context, isSVG, lifecycle);\n }\n throwError();\n return null;\n}\nexport function hydrate(input, parentDOM, callback) {\n let dom = parentDOM.firstChild;\n if (isNull(dom)) {\n render(input, parentDOM, callback);\n }\n else {\n const lifecycle = [];\n if (!isInvalid(input)) {\n dom = hydrateVNode(input, parentDOM, dom, {}, false, lifecycle);\n }\n // clear any other DOM nodes, there should be only a single entry for the root\n while (dom && (dom = dom.nextSibling)) {\n parentDOM.removeChild(dom);\n }\n if (lifecycle.length > 0) {\n let listener;\n while ((listener = lifecycle.shift()) !== undefined) {\n listener();\n }\n }\n }\n parentDOM.$V = input;\n if (isFunction(callback)) {\n callback();\n }\n}\n","import { getFlagsForElementVnode, createComponentVNode, createFragment, createVNode } from 'inferno';\n\nfunction isNullOrUndef(o) {\n return o === void 0 || o === null;\n}\nfunction isString(o) {\n return typeof o === 'string';\n}\nfunction isUndefined(o) {\n return o === void 0;\n}\n\nvar componentHooks = {\n onComponentDidMount: 1,\n onComponentDidUpdate: 1,\n onComponentShouldUpdate: 1,\n onComponentWillMount: 1,\n onComponentWillUnmount: 1,\n onComponentWillUpdate: 1\n};\nfunction createElement(type, props, _children) {\n var arguments$1 = arguments;\n var children;\n var ref = null;\n var key = null;\n var className = null;\n var flags = 0;\n var newProps;\n var childLen = arguments.length - 2;\n if (childLen === 1) {\n children = _children;\n }\n else if (childLen > 1) {\n children = [];\n while (childLen-- > 0) {\n children[childLen] = arguments$1[childLen + 2];\n }\n }\n if (isString(type)) {\n flags = getFlagsForElementVnode(type);\n if (!isNullOrUndef(props)) {\n newProps = {};\n for (var prop in props) {\n if (prop === 'className' || prop === 'class') {\n className = props[prop];\n }\n else if (prop === 'key') {\n key = props.key;\n }\n else if (prop === 'children' && isUndefined(children)) {\n children = props.children; // always favour children args over props\n }\n else if (prop === 'ref') {\n ref = props.ref;\n }\n else {\n if (prop === 'contenteditable') {\n flags |= 4096 /* ContentEditable */;\n }\n newProps[prop] = props[prop];\n }\n }\n }\n }\n else {\n flags = 2 /* ComponentUnknown */;\n if (!isUndefined(children)) {\n if (!props) {\n props = {};\n }\n props.children = children;\n }\n if (!isNullOrUndef(props)) {\n newProps = {};\n for (var prop$1 in props) {\n if (prop$1 === 'key') {\n key = props.key;\n }\n else if (prop$1 === 'ref') {\n ref = props.ref;\n }\n else if (componentHooks[prop$1] === 1) {\n if (!ref) {\n ref = {};\n }\n ref[prop$1] = props[prop$1];\n }\n else {\n newProps[prop$1] = props[prop$1];\n }\n }\n }\n return createComponentVNode(flags, type, newProps, key, ref);\n }\n if (flags & 8192 /* Fragment */) {\n return createFragment(childLen === 1 ? [children] : children, 0 /* UnknownChildren */, key);\n }\n return createVNode(flags, type, className, children, 0 /* UnknownChildren */, newProps, key, ref);\n}\n\nexport { createElement };\n","import { render } from 'inferno';\nimport { createElement } from 'inferno-create-element';\nconst getContainer = (props) => { var _a, _b; return ((_a = props.container) === null || _a === void 0 ? void 0 : _a.get(0)) || ((_b = props.item) === null || _b === void 0 ? void 0 : _b.get(0)); };\nexport function renderTemplate(template, props, _component) {\n setTimeout(() => {\n render(createElement(template, props), getContainer(props));\n }, 0);\n}\nexport const hasTemplate = (name, properties, _component) => {\n const value = properties[name];\n return !!value && typeof value !== 'string';\n};\n","const NUMBER_STYLES = new Set([\n 'animationIterationCount',\n 'borderImageOutset',\n 'borderImageSlice',\n 'border-imageWidth',\n 'boxFlex',\n 'boxFlexGroup',\n 'boxOrdinalGroup',\n 'columnCount',\n 'fillOpacity',\n 'flex',\n 'flexGrow',\n 'flexNegative',\n 'flexOrder',\n 'flexPositive',\n 'flexShrink',\n 'floodOpacity',\n 'fontWeight',\n 'gridColumn',\n 'gridRow',\n 'lineClamp',\n 'lineHeight',\n 'opacity',\n 'order',\n 'orphans',\n 'stopOpacity',\n 'strokeDasharray',\n 'strokeDashoffset',\n 'strokeMiterlimit',\n 'strokeOpacity',\n 'strokeWidth',\n 'tabSize',\n 'widows',\n 'zIndex',\n 'zoom',\n]);\nconst isNumeric = (value) => {\n if (typeof value === 'number')\n return true;\n return !Number.isNaN(Number(value));\n};\nconst getNumberStyleValue = (style, value) => (NUMBER_STYLES.has(style) ? value : `${value}px`);\nconst uppercasePattern = /[A-Z]/g;\nconst kebabCase = (str) => str.replace(uppercasePattern, '-$&').toLowerCase();\nexport function normalizeStyles(styles) {\n if (!(styles instanceof Object)) {\n return undefined;\n }\n return Object\n .entries(styles)\n .reduce((acc, [key, value]) => {\n acc[kebabCase(key)] = isNumeric(value)\n ? getNumberStyleValue(key, value)\n : value;\n return acc;\n }, {});\n}\n","/**\r\n * DevExtreme (esm/core/inferno_renderer.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n render as _render\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffectHost,\r\n hydrate\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createElement as _createElement\r\n} from \"inferno-create-element\";\r\nimport domAdapter from \"./dom_adapter\";\r\nimport {\r\n cleanDataRecursive\r\n} from \"./element_data\";\r\nimport injector from \"./utils/dependency_injector\";\r\nvar remove = element => {\r\n var {\r\n parentNode: parentNode\r\n } = element;\r\n if (parentNode) {\r\n var nextSibling = element.nextSibling;\r\n cleanDataRecursive(element);\r\n parentNode.$V = element.$V;\r\n _render(null, parentNode);\r\n parentNode.insertBefore(element, nextSibling);\r\n element.innerHTML = \"\";\r\n delete parentNode.$V\r\n }\r\n delete element.$V\r\n};\r\nexport default injector({\r\n createElement: (component, props) => _createElement(component, props),\r\n remove: remove,\r\n onAfterRender: () => {\r\n InfernoEffectHost.callEffects()\r\n },\r\n onPreRender: () => {\r\n InfernoEffectHost.lock()\r\n },\r\n render: (component, props, container, replace) => {\r\n if (!replace) {\r\n var {\r\n parentNode: parentNode\r\n } = container;\r\n var nextNode = null === container || void 0 === container ? void 0 : container.nextSibling;\r\n var rootNode = domAdapter.createElement(\"div\");\r\n rootNode.appendChild(container);\r\n var mountNode = domAdapter.createDocumentFragment().appendChild(rootNode);\r\n var vNodeAlreadyExists = !!container.$V;\r\n vNodeAlreadyExists && remove(container);\r\n hydrate(_createElement(component, props), mountNode);\r\n container.$V = mountNode.$V;\r\n if (parentNode) {\r\n parentNode.insertBefore(container, nextNode)\r\n }\r\n } else {\r\n _render(_createElement(component, props), container)\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/renovation/utils/shallow_equals.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var shallowEquals = (firstObject, secondObject) => {\r\n if (Object.keys(firstObject).length !== Object.keys(secondObject).length) {\r\n return false\r\n }\r\n return Object.keys(firstObject).every(key => firstObject[key] === secondObject[key])\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/common/template_wrapper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"isEqual\"];\r\nimport {\r\n InfernoComponent,\r\n InfernoEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n findDOMfromVNode\r\n} from \"inferno\";\r\nimport {\r\n replaceWith\r\n} from \"../../../core/utils/dom\";\r\nimport {\r\n shallowEquals\r\n} from \"../../utils/shallow_equals\";\r\nimport $ from \"../../../core/renderer\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\n\r\nfunction isDxElementWrapper(element) {\r\n return !!element.toArray\r\n}\r\nexport function buildTemplateArgs(model, template) {\r\n var _model$data;\r\n var args = {\r\n template: template,\r\n model: _extends({}, model)\r\n };\r\n var _ref = null !== (_model$data = model.data) && void 0 !== _model$data ? _model$data : {},\r\n {\r\n isEqual: isEqual\r\n } = _ref,\r\n data = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n if (isEqual) {\r\n args.model.data = data;\r\n args.isEqual = isEqual\r\n }\r\n return args\r\n}\r\n\r\nfunction renderTemplateContent(props, container) {\r\n var _props$model;\r\n var {\r\n data: data,\r\n index: index\r\n } = null !== (_props$model = props.model) && void 0 !== _props$model ? _props$model : {\r\n data: {}\r\n };\r\n if (data) {\r\n Object.keys(data).forEach(name => {\r\n if (data[name] && domAdapter.isNode(data[name])) {\r\n data[name] = getPublicElement($(data[name]))\r\n }\r\n })\r\n }\r\n var rendered = props.template.render(_extends({\r\n container: container,\r\n transclude: props.transclude\r\n }, {\r\n renovated: props.renovated\r\n }, !props.transclude ? {\r\n model: data\r\n } : {}, !props.transclude && Number.isFinite(index) ? {\r\n index: index\r\n } : {}));\r\n if (void 0 === rendered) {\r\n return []\r\n }\r\n return isDxElementWrapper(rendered) ? rendered.toArray() : [$(rendered).get(0)]\r\n}\r\n\r\nfunction removeDifferentElements(oldChildren, newChildren) {\r\n newChildren.forEach(newElement => {\r\n var hasOldChild = !!oldChildren.find(oldElement => newElement === oldElement);\r\n if (!hasOldChild && newElement.parentNode) {\r\n newElement.parentNode.removeChild(newElement)\r\n }\r\n })\r\n}\r\nexport class TemplateWrapper extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.renderTemplate = this.renderTemplate.bind(this)\r\n }\r\n renderTemplate() {\r\n var node = findDOMfromVNode(this.$LI, true);\r\n if (!(null !== node && void 0 !== node && node.parentNode)) {\r\n return () => {}\r\n }\r\n var container = node.parentNode;\r\n var $container = $(container);\r\n var $oldContainerContent = $container.contents().toArray();\r\n var content = renderTemplateContent(this.props, getPublicElement($container));\r\n replaceWith($(node), $(content));\r\n return () => {\r\n var $actualContainerContent = $(container).contents().toArray();\r\n removeDifferentElements($oldContainerContent, $actualContainerContent);\r\n container.appendChild(node)\r\n }\r\n }\r\n shouldComponentUpdate(nextProps) {\r\n var {\r\n model: model,\r\n template: template\r\n } = this.props;\r\n var {\r\n isEqual: isEqual,\r\n model: nextModel,\r\n template: nextTemplate\r\n } = nextProps;\r\n var equalityComparer = null !== isEqual && void 0 !== isEqual ? isEqual : shallowEquals;\r\n if (template !== nextTemplate) {\r\n return true\r\n }\r\n if (!isDefined(model) || !isDefined(nextModel)) {\r\n return model !== nextModel\r\n }\r\n var {\r\n data: data,\r\n index: index\r\n } = model;\r\n var {\r\n data: nextData,\r\n index: nextIndex\r\n } = nextModel;\r\n if (index !== nextIndex) {\r\n return true\r\n }\r\n return !equalityComparer(data, nextData)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.renderTemplate, [this.props.template, this.props.model])]\r\n }\r\n updateEffects() {\r\n this._effects[0].update([this.props.template, this.props.model])\r\n }\r\n componentWillUnmount() {}\r\n render() {\r\n return null\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/utils/update_props_immutable.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isPlainObject\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n getPathParts\r\n} from \"../../../core/utils/data\";\r\n\r\nfunction cloneObjectValue(value) {\r\n return Array.isArray(value) ? [...value] : _extends({}, value)\r\n}\r\n\r\nfunction cloneObjectProp(value, prevValue, fullNameParts) {\r\n var result = fullNameParts.length > 0 && prevValue && value !== prevValue ? cloneObjectValue(prevValue) : cloneObjectValue(value);\r\n var name = fullNameParts[0];\r\n if (fullNameParts.length > 1) {\r\n result[name] = cloneObjectProp(value[name], null === prevValue || void 0 === prevValue ? void 0 : prevValue[name], fullNameParts.slice(1))\r\n } else if (name) {\r\n if (isPlainObject(value[name])) {\r\n result[name] = cloneObjectValue(value[name])\r\n } else {\r\n result[name] = value[name]\r\n }\r\n }\r\n return result\r\n}\r\nexport function updatePropsImmutable(props, option, name, fullName) {\r\n var currentPropsValue = option[name];\r\n var prevPropsValue = props[name];\r\n var result = props;\r\n if (isPlainObject(currentPropsValue) || name !== fullName && Array.isArray(currentPropsValue)) {\r\n result[name] = cloneObjectProp(currentPropsValue, prevPropsValue, getPathParts(fullName).slice(1))\r\n } else {\r\n result[name] = currentPropsValue\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/events/utils/event_nodes_disposing.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../core/events_engine\";\r\nimport {\r\n removeEvent\r\n} from \"../remove\";\r\n\r\nfunction nodesByEvent(event) {\r\n return event && [event.target, event.delegateTarget, event.relatedTarget, event.currentTarget].filter(node => !!node)\r\n}\r\nexport var subscribeNodesDisposing = (event, callback) => {\r\n eventsEngine.one(nodesByEvent(event), removeEvent, callback)\r\n};\r\nexport var unsubscribeNodesDisposing = (event, callback) => {\r\n eventsEngine.off(nodesByEvent(event), removeEvent, callback)\r\n};\r\n","/**\r\n * DevExtreme (esm/events/click.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport devices from \"../core/devices\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n resetActiveElement\r\n} from \"../core/utils/dom\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../animation/frame\";\r\nimport {\r\n addNamespace,\r\n fireEvent\r\n} from \"./utils/index\";\r\nimport {\r\n subscribeNodesDisposing,\r\n unsubscribeNodesDisposing\r\n} from \"./utils/event_nodes_disposing\";\r\nimport pointerEvents from \"./pointer\";\r\nimport Emitter from \"./core/emitter\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar CLICK_EVENT_NAME = \"dxclick\";\r\nvar misc = {\r\n requestAnimationFrame: requestAnimationFrame,\r\n cancelAnimationFrame: cancelAnimationFrame\r\n};\r\nvar prevented = null;\r\nvar lastFiredEvent = null;\r\nvar onNodeRemove = () => {\r\n lastFiredEvent = null\r\n};\r\nvar clickHandler = function(e) {\r\n var originalEvent = e.originalEvent;\r\n var eventAlreadyFired = lastFiredEvent === originalEvent || originalEvent && originalEvent.DXCLICK_FIRED;\r\n var leftButton = !e.which || 1 === e.which;\r\n if (leftButton && !prevented && !eventAlreadyFired) {\r\n if (originalEvent) {\r\n originalEvent.DXCLICK_FIRED = true\r\n }\r\n unsubscribeNodesDisposing(lastFiredEvent, onNodeRemove);\r\n lastFiredEvent = originalEvent;\r\n subscribeNodesDisposing(lastFiredEvent, onNodeRemove);\r\n fireEvent({\r\n type: CLICK_EVENT_NAME,\r\n originalEvent: e\r\n })\r\n }\r\n};\r\nvar ClickEmitter = Emitter.inherit({\r\n ctor: function(element) {\r\n this.callBase(element);\r\n eventsEngine.on(this.getElement(), \"click\", clickHandler)\r\n },\r\n start: function(e) {\r\n prevented = null\r\n },\r\n cancel: function() {\r\n prevented = true\r\n },\r\n dispose: function() {\r\n eventsEngine.off(this.getElement(), \"click\", clickHandler)\r\n }\r\n});\r\n! function() {\r\n var desktopDevice = devices.real().generic;\r\n if (!desktopDevice) {\r\n var startTarget = null;\r\n var blurPrevented = false;\r\n var document = domAdapter.getDocument();\r\n eventsEngine.subscribeGlobal(document, addNamespace(pointerEvents.down, \"NATIVE_CLICK_FIXER\"), (function(e) {\r\n startTarget = e.target;\r\n blurPrevented = e.isDefaultPrevented()\r\n }));\r\n eventsEngine.subscribeGlobal(document, addNamespace(\"click\", \"NATIVE_CLICK_FIXER\"), (function(e) {\r\n var $target = $(e.target);\r\n if (!blurPrevented && startTarget && !$target.is(startTarget) && !$(startTarget).is(\"label\") && (element = $target, $(element).is(\"input, textarea, select, button ,:focus, :focus *\"))) {\r\n resetActiveElement()\r\n }\r\n var element;\r\n startTarget = null;\r\n blurPrevented = false\r\n }))\r\n }\r\n}();\r\nregisterEmitter({\r\n emitter: ClickEmitter,\r\n bubble: true,\r\n events: [CLICK_EVENT_NAME]\r\n});\r\nexport {\r\n CLICK_EVENT_NAME as name\r\n};\r\n","/**\r\n * DevExtreme (esm/events/core/emitter.feedback.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n contains\r\n} from \"../../core/utils/dom\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n isMouseEvent\r\n} from \"../utils/index\";\r\nimport pointerEvents from \"../pointer\";\r\nimport Emitter from \"./emitter\";\r\nimport registerEmitter from \"./emitter_registrator\";\r\nvar ACTIVE_EVENT_NAME = \"dxactive\";\r\nvar INACTIVE_EVENT_NAME = \"dxinactive\";\r\nvar ACTIVE_TIMEOUT = 30;\r\nvar INACTIVE_TIMEOUT = 400;\r\nvar FeedbackEvent = Class.inherit({\r\n ctor: function(timeout, fire) {\r\n this._timeout = timeout;\r\n this._fire = fire\r\n },\r\n start: function() {\r\n var that = this;\r\n this._schedule((function() {\r\n that.force()\r\n }))\r\n },\r\n _schedule: function(fn) {\r\n this.stop();\r\n this._timer = setTimeout(fn, this._timeout)\r\n },\r\n stop: function() {\r\n clearTimeout(this._timer)\r\n },\r\n force: function() {\r\n if (this._fired) {\r\n return\r\n }\r\n this.stop();\r\n this._fire();\r\n this._fired = true\r\n },\r\n fired: function() {\r\n return this._fired\r\n }\r\n});\r\nvar activeFeedback;\r\nvar FeedbackEmitter = Emitter.inherit({\r\n ctor: function() {\r\n this.callBase.apply(this, arguments);\r\n this._active = new FeedbackEvent(0, noop);\r\n this._inactive = new FeedbackEvent(0, noop)\r\n },\r\n configure: function(data, eventName) {\r\n switch (eventName) {\r\n case ACTIVE_EVENT_NAME:\r\n data.activeTimeout = data.timeout;\r\n break;\r\n case INACTIVE_EVENT_NAME:\r\n data.inactiveTimeout = data.timeout\r\n }\r\n this.callBase(data)\r\n },\r\n start: function(e) {\r\n if (activeFeedback) {\r\n var activeChildExists = contains(this.getElement().get(0), activeFeedback.getElement().get(0));\r\n var childJustActivated = !activeFeedback._active.fired();\r\n if (activeChildExists && childJustActivated) {\r\n this._cancel();\r\n return\r\n }\r\n activeFeedback._inactive.force()\r\n }\r\n activeFeedback = this;\r\n this._initEvents(e);\r\n this._active.start()\r\n },\r\n _initEvents: function(e) {\r\n var that = this;\r\n var eventTarget = this._getEmitterTarget(e);\r\n var mouseEvent = isMouseEvent(e);\r\n var isSimulator = devices.isSimulator();\r\n var deferFeedback = isSimulator || !mouseEvent;\r\n var activeTimeout = ensureDefined(this.activeTimeout, ACTIVE_TIMEOUT);\r\n var inactiveTimeout = ensureDefined(this.inactiveTimeout, INACTIVE_TIMEOUT);\r\n this._active = new FeedbackEvent(deferFeedback ? activeTimeout : 0, (function() {\r\n that._fireEvent(ACTIVE_EVENT_NAME, e, {\r\n target: eventTarget\r\n })\r\n }));\r\n this._inactive = new FeedbackEvent(deferFeedback ? inactiveTimeout : 0, (function() {\r\n that._fireEvent(INACTIVE_EVENT_NAME, e, {\r\n target: eventTarget\r\n });\r\n activeFeedback = null\r\n }))\r\n },\r\n cancel: function(e) {\r\n this.end(e)\r\n },\r\n end: function(e) {\r\n var skipTimers = e.type !== pointerEvents.up;\r\n if (skipTimers) {\r\n this._active.stop()\r\n } else {\r\n this._active.force()\r\n }\r\n this._inactive.start();\r\n if (skipTimers) {\r\n this._inactive.force()\r\n }\r\n },\r\n dispose: function() {\r\n this._active.stop();\r\n this._inactive.stop();\r\n if (activeFeedback === this) {\r\n activeFeedback = null\r\n }\r\n this.callBase()\r\n },\r\n lockInactive: function() {\r\n this._active.force();\r\n this._inactive.stop();\r\n activeFeedback = null;\r\n this._cancel();\r\n return this._inactive.force.bind(this._inactive)\r\n }\r\n});\r\nFeedbackEmitter.lock = function(deferred) {\r\n var lockInactive = activeFeedback ? activeFeedback.lockInactive() : noop;\r\n deferred.done(lockInactive)\r\n};\r\nregisterEmitter({\r\n emitter: FeedbackEmitter,\r\n events: [ACTIVE_EVENT_NAME, INACTIVE_EVENT_NAME]\r\n});\r\nexport var lock = FeedbackEmitter.lock;\r\nexport {\r\n ACTIVE_EVENT_NAME as active, INACTIVE_EVENT_NAME as inactive\r\n};\r\n","/**\r\n * DevExtreme (esm/events/hover.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n removeData,\r\n data as elementData\r\n} from \"../core/element_data\";\r\nimport Class from \"../core/class\";\r\nimport devices from \"../core/devices\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n addNamespace,\r\n isTouchEvent,\r\n fireEvent\r\n} from \"./utils/index\";\r\nimport pointerEvents from \"./pointer\";\r\nvar HOVERSTART_NAMESPACE = \"dxHoverStart\";\r\nvar HOVERSTART = \"dxhoverstart\";\r\nvar POINTERENTER_NAMESPACED_EVENT_NAME = addNamespace(pointerEvents.enter, HOVERSTART_NAMESPACE);\r\nvar HOVEREND_NAMESPACE = \"dxHoverEnd\";\r\nvar HOVEREND = \"dxhoverend\";\r\nvar POINTERLEAVE_NAMESPACED_EVENT_NAME = addNamespace(pointerEvents.leave, HOVEREND_NAMESPACE);\r\nvar Hover = Class.inherit({\r\n noBubble: true,\r\n ctor: function() {\r\n this._handlerArrayKeyPath = this._eventNamespace + \"_HandlerStore\"\r\n },\r\n setup: function(element) {\r\n elementData(element, this._handlerArrayKeyPath, {})\r\n },\r\n add: function(element, handleObj) {\r\n var that = this;\r\n var handler = function(e) {\r\n that._handler(e)\r\n };\r\n eventsEngine.on(element, this._originalEventName, handleObj.selector, handler);\r\n elementData(element, this._handlerArrayKeyPath)[handleObj.guid] = handler\r\n },\r\n _handler: function(e) {\r\n if (isTouchEvent(e) || devices.isSimulator()) {\r\n return\r\n }\r\n fireEvent({\r\n type: this._eventName,\r\n originalEvent: e,\r\n delegateTarget: e.delegateTarget\r\n })\r\n },\r\n remove: function(element, handleObj) {\r\n var handler = elementData(element, this._handlerArrayKeyPath)[handleObj.guid];\r\n eventsEngine.off(element, this._originalEventName, handleObj.selector, handler)\r\n },\r\n teardown: function(element) {\r\n removeData(element, this._handlerArrayKeyPath)\r\n }\r\n});\r\nvar HoverStart = Hover.inherit({\r\n ctor: function() {\r\n this._eventNamespace = HOVERSTART_NAMESPACE;\r\n this._eventName = HOVERSTART;\r\n this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME;\r\n this.callBase()\r\n },\r\n _handler: function(e) {\r\n var pointers = e.pointers || [];\r\n if (!pointers.length) {\r\n this.callBase(e)\r\n }\r\n }\r\n});\r\nvar HoverEnd = Hover.inherit({\r\n ctor: function() {\r\n this._eventNamespace = HOVEREND_NAMESPACE;\r\n this._eventName = HOVEREND;\r\n this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME;\r\n this.callBase()\r\n }\r\n});\r\nregisterEvent(HOVERSTART, new HoverStart);\r\nregisterEvent(HOVEREND, new HoverEnd);\r\nexport {\r\n HOVERSTART as start, HOVEREND as end\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/common/component.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n createRef\r\n} from \"inferno\";\r\nimport KeyboardProcessor from \"../../../events/core/keyboard_processor\";\r\nimport renderer from \"../../../core/inferno_renderer\";\r\nimport $ from \"../../../core/renderer\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport DOMComponent from \"../../../core/dom_component\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n isDefined,\r\n isRenderer,\r\n isString\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n TemplateWrapper,\r\n buildTemplateArgs\r\n} from \"./template_wrapper\";\r\nimport {\r\n updatePropsImmutable\r\n} from \"../utils/update_props_immutable\";\r\nimport \"../../../events/click\";\r\nimport \"../../../events/core/emitter.feedback\";\r\nimport \"../../../events/hover\";\r\nvar setDefaultOptionValue = (options, defaultValueGetter) => name => {\r\n if (Object.prototype.hasOwnProperty.call(options, name) && void 0 === options[name]) {\r\n options[name] = defaultValueGetter(name)\r\n }\r\n};\r\nexport default class ComponentWrapper extends DOMComponent {\r\n constructor(element, options) {\r\n super(element, options);\r\n this._shouldRaiseContentReady = false;\r\n this.validateKeyDownHandler()\r\n }\r\n get _propsInfo() {\r\n return {\r\n allowNull: [],\r\n twoWay: [],\r\n elements: [],\r\n templates: [],\r\n props: []\r\n }\r\n }\r\n validateKeyDownHandler() {\r\n var supportedKeyNames = this.getSupportedKeyNames();\r\n var hasComponentDefaultKeyHandlers = supportedKeyNames.length > 0;\r\n var hasComponentKeyDownMethod = \"function\" === typeof this._viewComponent.prototype.keyDown;\r\n if (hasComponentDefaultKeyHandlers && !hasComponentKeyDownMethod) {\r\n throw Error(\"Component's declaration must have 'keyDown' method.\")\r\n }\r\n }\r\n get viewRef() {\r\n var _this$_viewRef;\r\n return null === (_this$_viewRef = this._viewRef) || void 0 === _this$_viewRef ? void 0 : _this$_viewRef.current\r\n }\r\n _checkContentReadyOption(fullName) {\r\n var contentReadyOptions = this._getContentReadyOptions().reduce((options, name) => {\r\n options[name] = true;\r\n return options\r\n }, {});\r\n this._checkContentReadyOption = optionName => !!contentReadyOptions[optionName];\r\n return this._checkContentReadyOption(fullName)\r\n }\r\n _getContentReadyOptions() {\r\n return [\"rtlEnabled\"]\r\n }\r\n _fireContentReady() {\r\n this._actionsMap.onContentReady({})\r\n }\r\n _getDefaultOptions() {\r\n var viewDefaultProps = this._getViewComponentDefaultProps();\r\n return extend(true, super._getDefaultOptions(), viewDefaultProps, this._propsInfo.twoWay.reduce((options, _ref) => {\r\n var [name, defaultName, eventName] = _ref;\r\n return _extends({}, options, {\r\n [name]: viewDefaultProps[defaultName],\r\n [eventName]: value => this.option(name, value)\r\n })\r\n }, {}), this._propsInfo.templates.reduce((options, name) => _extends({}, options, {\r\n [name]: null\r\n }), {}))\r\n }\r\n _getUnwrappedOption() {\r\n var unwrappedProps = {};\r\n Object.keys(this.option()).forEach(key => {\r\n unwrappedProps[key] = this.option(key)\r\n });\r\n return unwrappedProps\r\n }\r\n _initializeComponent() {\r\n var _this$_templateManage;\r\n super._initializeComponent();\r\n null === (_this$_templateManage = this._templateManager) || void 0 === _this$_templateManage ? void 0 : _this$_templateManage.addDefaultTemplates(this.getDefaultTemplates());\r\n var optionProxy = this._getUnwrappedOption();\r\n this._props = this._optionsWithDefaultTemplates(optionProxy);\r\n this._propsInfo.templates.forEach(template => {\r\n this._componentTemplates[template] = this._createTemplateComponent(this._props[template])\r\n });\r\n Object.keys(this._getActionConfigsFull()).forEach(name => this._addAction(name));\r\n this._viewRef = createRef();\r\n this.defaultKeyHandlers = this._createDefaultKeyHandlers()\r\n }\r\n _initMarkup() {\r\n var props = this.getProps();\r\n this._renderWrapper(props)\r\n }\r\n _renderWrapper(props) {\r\n var containerNode = this.$element()[0];\r\n if (!this._isNodeReplaced) {\r\n renderer.onPreRender()\r\n }\r\n renderer.render(this._viewComponent, props, containerNode, this._isNodeReplaced);\r\n if (!this._isNodeReplaced) {\r\n this._isNodeReplaced = true;\r\n renderer.onAfterRender();\r\n this._shouldRaiseContentReady = true\r\n }\r\n if (this._shouldRaiseContentReady) {\r\n this._fireContentReady();\r\n this._shouldRaiseContentReady = false\r\n }\r\n }\r\n _silent(name, value) {\r\n this._options.silent(name, value)\r\n }\r\n _render() {}\r\n _removeWidget() {\r\n renderer.remove(this.$element()[0])\r\n }\r\n _dispose() {\r\n this._removeWidget();\r\n super._dispose()\r\n }\r\n get elementAttr() {\r\n var element = this.$element()[0];\r\n if (!this._elementAttr) {\r\n var {\r\n attributes: attributes\r\n } = element;\r\n var attrs = Array.from(attributes).filter(attr => {\r\n var _attributes$attr$name;\r\n return !this._propsInfo.templates.includes(attr.name) && (null === (_attributes$attr$name = attributes[attr.name]) || void 0 === _attributes$attr$name ? void 0 : _attributes$attr$name.specified)\r\n }).reduce((result, _ref2) => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref2;\r\n var updatedAttributes = result;\r\n var isDomAttr = name in element;\r\n updatedAttributes[name] = \"\" === value && isDomAttr ? element[name] : value;\r\n return updatedAttributes\r\n }, {});\r\n this._elementAttr = attrs;\r\n this._storedClasses = element.getAttribute(\"class\") || \"\"\r\n }\r\n var elemStyle = element.style;\r\n var style = {};\r\n for (var i = 0; i < elemStyle.length; i += 1) {\r\n style[elemStyle[i]] = elemStyle.getPropertyValue(elemStyle[i])\r\n }\r\n this._elementAttr.style = style;\r\n this._elementAttr.class = this._storedClasses;\r\n return this._elementAttr\r\n }\r\n _getAdditionalActionConfigs() {\r\n return {\r\n onContentReady: {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }\r\n }\r\n }\r\n _getAdditionalProps() {\r\n return []\r\n }\r\n _patchOptionValues(options) {\r\n var {\r\n allowNull: allowNull,\r\n elements: elements,\r\n props: props,\r\n twoWay: twoWay\r\n } = this._propsInfo;\r\n var viewDefaultProps = this._getViewComponentDefaultProps();\r\n var defaultWidgetPropsKeys = Object.keys(viewDefaultProps);\r\n var defaultOptions = this._getDefaultOptions();\r\n var {\r\n children: children,\r\n onKeyboardHandled: onKeyboardHandled,\r\n ref: ref\r\n } = options;\r\n var onKeyDown = onKeyboardHandled ? (_, event_options) => {\r\n onKeyboardHandled(event_options)\r\n } : void 0;\r\n var widgetProps = {\r\n ref: ref,\r\n children: children,\r\n onKeyDown: onKeyDown\r\n };\r\n [...props, ...this._getAdditionalProps()].forEach(propName => {\r\n if (Object.prototype.hasOwnProperty.call(options, propName)) {\r\n widgetProps[propName] = options[propName]\r\n }\r\n });\r\n allowNull.forEach(setDefaultOptionValue(widgetProps, () => null));\r\n defaultWidgetPropsKeys.forEach(setDefaultOptionValue(widgetProps, name => defaultOptions[name]));\r\n twoWay.forEach(_ref3 => {\r\n var [name, defaultName] = _ref3;\r\n setDefaultOptionValue(widgetProps, () => defaultOptions[defaultName])(name)\r\n });\r\n elements.forEach(name => {\r\n if (name in widgetProps) {\r\n var value = widgetProps[name];\r\n if (isRenderer(value)) {\r\n widgetProps[name] = this._patchElementParam(value)\r\n }\r\n }\r\n });\r\n return widgetProps\r\n }\r\n getSupportedKeyNames() {\r\n return []\r\n }\r\n prepareStyleProp(props) {\r\n if (\"string\" === typeof props.style) {\r\n return _extends({}, props, {\r\n style: {},\r\n cssText: props.style\r\n })\r\n }\r\n return props\r\n }\r\n getProps() {\r\n var _this$elementAttr$cla, _elementAttr$class;\r\n var {\r\n elementAttr: elementAttr\r\n } = this.option();\r\n var options = this._patchOptionValues(_extends({}, this._props, {\r\n ref: this._viewRef,\r\n children: this._extractDefaultSlot(),\r\n aria: this._aria\r\n }));\r\n this._propsInfo.templates.forEach(template => {\r\n options[template] = this._componentTemplates[template]\r\n });\r\n return this.prepareStyleProp(_extends({}, options, this.elementAttr, elementAttr, {\r\n className: [...(null !== (_this$elementAttr$cla = this.elementAttr.class) && void 0 !== _this$elementAttr$cla ? _this$elementAttr$cla : \"\").split(\" \"), ...(null !== (_elementAttr$class = null === elementAttr || void 0 === elementAttr ? void 0 : elementAttr.class) && void 0 !== _elementAttr$class ? _elementAttr$class : \"\").split(\" \")].filter((c, i, a) => c && a.indexOf(c) === i).join(\" \").trim(),\r\n class: \"\"\r\n }, this._actionsMap))\r\n }\r\n _getActionConfigs() {\r\n return {}\r\n }\r\n _getActionConfigsFull() {\r\n return _extends({}, this._getActionConfigs(), this._getAdditionalActionConfigs())\r\n }\r\n getDefaultTemplates() {\r\n var defaultTemplates = Object.values(this._templatesInfo);\r\n var result = {};\r\n defaultTemplates.forEach(template => {\r\n result[template] = \"dx-renovation-template-mock\"\r\n });\r\n return result\r\n }\r\n get _templatesInfo() {\r\n return {}\r\n }\r\n _optionsWithDefaultTemplates(options) {\r\n var templateOptions = Object.entries(this._templatesInfo).reduce((result, _ref4) => {\r\n var _options$templateName;\r\n var [templateName, templateValue] = _ref4;\r\n return _extends({}, result, {\r\n [templateName]: null !== (_options$templateName = options[templateName]) && void 0 !== _options$templateName ? _options$templateName : templateValue\r\n })\r\n }, {});\r\n return _extends({}, options, templateOptions)\r\n }\r\n _init() {\r\n super._init();\r\n this.customKeyHandlers = {};\r\n this._actionsMap = {};\r\n this._aria = {};\r\n this._componentTemplates = {}\r\n }\r\n _createDefaultKeyHandlers() {\r\n var result = {};\r\n var keys = this.getSupportedKeyNames();\r\n keys.forEach(key => {\r\n result[key] = e => this.viewRef.keyDown(KeyboardProcessor.createKeyDownOptions(e))\r\n });\r\n return result\r\n }\r\n _addAction(event, actionToAdd) {\r\n var action = actionToAdd;\r\n if (!action) {\r\n var actionByOption = this._createActionByOption(event, this._getActionConfigsFull()[event]);\r\n action = actArgs => {\r\n Object.keys(actArgs).forEach(name => {\r\n if (isDefined(actArgs[name]) && domAdapter.isNode(actArgs[name])) {\r\n actArgs[name] = getPublicElement($(actArgs[name]))\r\n }\r\n });\r\n return actionByOption(actArgs)\r\n }\r\n }\r\n this._actionsMap[event] = action\r\n }\r\n _optionChanged(option) {\r\n var {\r\n fullName: fullName,\r\n name: name,\r\n previousValue: previousValue,\r\n value: value\r\n } = option;\r\n updatePropsImmutable(this._props, this.option(), name, fullName);\r\n if (this._propsInfo.templates.includes(name) && value !== previousValue) {\r\n this._componentTemplates[name] = this._createTemplateComponent(value)\r\n }\r\n if (name && this._getActionConfigsFull()[name]) {\r\n this._addAction(name)\r\n }\r\n this._shouldRaiseContentReady = this._shouldRaiseContentReady || this._checkContentReadyOption(fullName);\r\n super._optionChanged(option);\r\n this._invalidate()\r\n }\r\n _extractDefaultSlot() {\r\n if (this.option(\"_hasAnonymousTemplateContent\")) {\r\n return renderer.createElement(TemplateWrapper, {\r\n template: this._getTemplate(this._templateManager.anonymousTemplateName),\r\n transclude: true,\r\n renovated: true\r\n })\r\n }\r\n return null\r\n }\r\n _createTemplateComponent(templateOption) {\r\n if (!templateOption) {\r\n return\r\n }\r\n var template = this._getTemplate(templateOption);\r\n if (isString(template) && \"dx-renovation-template-mock\" === template) {\r\n return\r\n }\r\n return model => renderer.createElement(TemplateWrapper, buildTemplateArgs(model, template))\r\n }\r\n _wrapKeyDownHandler(initialHandler) {\r\n return options => {\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = options;\r\n var keys = this.customKeyHandlers;\r\n var func = keys[keyName] || keys[which];\r\n if (void 0 !== func) {\r\n var handler = func.bind(this);\r\n var result = handler(originalEvent, options);\r\n if (!result) {\r\n originalEvent.cancel = true;\r\n return originalEvent\r\n }\r\n }\r\n return null === initialHandler || void 0 === initialHandler ? void 0 : initialHandler(originalEvent, options)\r\n }\r\n }\r\n _toPublicElement(element) {\r\n return getPublicElement($(element))\r\n }\r\n _patchElementParam(value) {\r\n try {\r\n var result = $(value);\r\n var element = null === result || void 0 === result ? void 0 : result.get(0);\r\n return null !== element && void 0 !== element && element.nodeType ? element : value\r\n } catch (error) {\r\n return value\r\n }\r\n }\r\n repaint() {\r\n this._isNodeReplaced = false;\r\n this._shouldRaiseContentReady = true;\r\n this._removeWidget();\r\n this._refresh()\r\n }\r\n _supportedKeys() {\r\n return _extends({}, this.defaultKeyHandlers, this.customKeyHandlers)\r\n }\r\n registerKeyHandler(key, handler) {\r\n this.customKeyHandlers[key] = handler\r\n }\r\n setAria(name, value) {\r\n this._aria[name] = value;\r\n this._initMarkup()\r\n }\r\n _getViewComponentDefaultProps() {\r\n return this._viewComponent.defaultProps || {}\r\n }\r\n}\r\nComponentWrapper.IS_RENOVATED_WIDGET = false;\r\nComponentWrapper.IS_RENOVATED_WIDGET = true;\r\n","/**\r\n * DevExtreme (esm/core/utils/icon.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nvar ICON_CLASS = \"dx-icon\";\r\nvar SVG_ICON_CLASS = \"dx-svg-icon\";\r\nexport var getImageSourceType = source => {\r\n if (!source || \"string\" !== typeof source) {\r\n return false\r\n }\r\n if (/^\\s*]*>(.|\\r?\\n)*?<\\/svg>\\s*$/i.test(source)) {\r\n return \"svg\"\r\n }\r\n if (/data:.*base64|\\.|[^<\\s]\\/{1,1}/.test(source)) {\r\n return \"image\"\r\n }\r\n if (/^[\\w-_]+$/.test(source)) {\r\n return \"dxIcon\"\r\n }\r\n if (/^\\s?([\\w-_]\\s?)+$/.test(source)) {\r\n return \"fontIcon\"\r\n }\r\n return false\r\n};\r\nexport var getImageContainer = source => {\r\n switch (getImageSourceType(source)) {\r\n case \"image\":\r\n return $(\"\").attr(\"src\", source).addClass(ICON_CLASS);\r\n case \"fontIcon\":\r\n return $(\"\").addClass(\"\".concat(ICON_CLASS, \" \").concat(source));\r\n case \"dxIcon\":\r\n return $(\"\").addClass(\"\".concat(ICON_CLASS, \" \").concat(ICON_CLASS, \"-\").concat(source));\r\n case \"svg\":\r\n return $(\"\").addClass(\"\".concat(ICON_CLASS, \" \").concat(SVG_ICON_CLASS)).append(source);\r\n default:\r\n return null\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/themes.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../core/utils/size\";\r\nimport devices from \"../core/devices\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n parseHTML\r\n} from \"../core/utils/html_parser\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport readyCallbacks from \"../core/utils/ready_callbacks\";\r\nimport {\r\n value as viewPortValue,\r\n changeCallback,\r\n originalViewPort\r\n} from \"../core/utils/view_port\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n themeReadyCallback\r\n} from \"./themes_callback\";\r\nimport errors from \"./widget/ui.errors\";\r\nvar window = getWindow();\r\nvar ready = readyCallbacks.add;\r\nvar viewPort = viewPortValue;\r\nvar viewPortChanged = changeCallback;\r\nvar initDeferred = new Deferred;\r\nvar DX_LINK_SELECTOR = \"link[rel=dx-theme]\";\r\nvar THEME_ATTR = \"data-theme\";\r\nvar ACTIVE_ATTR = \"data-active\";\r\nvar DX_HAIRLINES_CLASS = \"dx-hairlines\";\r\nvar ANY_THEME = \"any\";\r\nvar context;\r\nvar $activeThemeLink;\r\nvar knownThemes;\r\nvar currentThemeName;\r\nvar pendingThemeName;\r\nvar defaultTimeout = 15e3;\r\nvar THEME_MARKER_PREFIX = \"dx.\";\r\n\r\nfunction readThemeMarker() {\r\n if (!hasWindow()) {\r\n return null\r\n }\r\n var element = $(\"
\", context).addClass(\"dx-theme-marker\").appendTo(context.documentElement);\r\n var result;\r\n try {\r\n result = window.getComputedStyle(element.get(0)).fontFamily;\r\n if (!result) {\r\n return null\r\n }\r\n result = result.replace(/[\"']/g, \"\");\r\n if (result.substr(0, THEME_MARKER_PREFIX.length) !== THEME_MARKER_PREFIX) {\r\n return null\r\n }\r\n return result.substr(THEME_MARKER_PREFIX.length)\r\n } finally {\r\n element.remove()\r\n }\r\n}\r\nexport function waitForThemeLoad(themeName) {\r\n var waitStartTime;\r\n var timerId;\r\n var intervalCleared = true;\r\n pendingThemeName = themeName;\r\n\r\n function handleLoaded() {\r\n pendingThemeName = null;\r\n clearInterval(timerId);\r\n intervalCleared = true;\r\n themeReadyCallback.fire();\r\n themeReadyCallback.empty();\r\n initDeferred.resolve()\r\n }\r\n if (isPendingThemeLoaded() || !defaultTimeout) {\r\n handleLoaded()\r\n } else {\r\n if (!intervalCleared) {\r\n if (pendingThemeName) {\r\n pendingThemeName = themeName\r\n }\r\n return\r\n }\r\n waitStartTime = Date.now();\r\n intervalCleared = false;\r\n timerId = setInterval((function() {\r\n var isLoaded = isPendingThemeLoaded();\r\n var isTimeout = !isLoaded && Date.now() - waitStartTime > defaultTimeout;\r\n if (isTimeout) {\r\n errors.log(\"W0004\", pendingThemeName)\r\n }\r\n if (isLoaded || isTimeout) {\r\n handleLoaded()\r\n }\r\n }), 10)\r\n }\r\n}\r\nexport function isPendingThemeLoaded() {\r\n if (!pendingThemeName) {\r\n return true\r\n }\r\n var anyThemePending = pendingThemeName === ANY_THEME;\r\n if (\"resolved\" === initDeferred.state() && anyThemePending) {\r\n return true\r\n }\r\n var themeMarker = readThemeMarker();\r\n if (themeMarker && anyThemePending) {\r\n return true\r\n }\r\n return themeMarker === pendingThemeName\r\n}\r\n\r\nfunction processMarkup() {\r\n var $allThemeLinks = $(DX_LINK_SELECTOR, context);\r\n if (!$allThemeLinks.length) {\r\n return\r\n }\r\n knownThemes = {};\r\n $activeThemeLink = $(parseHTML(\"\"), context);\r\n $allThemeLinks.each((function() {\r\n var link = $(this, context);\r\n var fullThemeName = link.attr(THEME_ATTR);\r\n var url = link.attr(\"href\");\r\n var isActive = \"true\" === link.attr(ACTIVE_ATTR);\r\n knownThemes[fullThemeName] = {\r\n url: url,\r\n isActive: isActive\r\n }\r\n }));\r\n $allThemeLinks.last().after($activeThemeLink);\r\n $allThemeLinks.remove()\r\n}\r\n\r\nfunction resolveFullThemeName(desiredThemeName) {\r\n var desiredThemeParts = desiredThemeName ? desiredThemeName.split(\".\") : [];\r\n var result = null;\r\n if (knownThemes) {\r\n if (desiredThemeName in knownThemes) {\r\n return desiredThemeName\r\n }\r\n each(knownThemes, (function(knownThemeName, themeData) {\r\n var knownThemeParts = knownThemeName.split(\".\");\r\n if (desiredThemeParts[0] && knownThemeParts[0] !== desiredThemeParts[0]) {\r\n return\r\n }\r\n if (desiredThemeParts[1] && desiredThemeParts[1] !== knownThemeParts[1]) {\r\n return\r\n }\r\n if (desiredThemeParts[2] && desiredThemeParts[2] !== knownThemeParts[2]) {\r\n return\r\n }\r\n if (!result || themeData.isActive) {\r\n result = knownThemeName\r\n }\r\n if (themeData.isActive) {\r\n return false\r\n }\r\n }))\r\n }\r\n return result\r\n}\r\n\r\nfunction initContext(newContext) {\r\n try {\r\n if (newContext !== context) {\r\n knownThemes = null\r\n }\r\n } catch (x) {\r\n knownThemes = null\r\n }\r\n context = newContext\r\n}\r\nexport function init(options) {\r\n options = options || {};\r\n initContext(options.context || domAdapter.getDocument());\r\n if (!context) {\r\n return\r\n }\r\n processMarkup();\r\n currentThemeName = void 0;\r\n current(options)\r\n}\r\nexport function current(options) {\r\n if (!arguments.length) {\r\n currentThemeName = currentThemeName || readThemeMarker();\r\n return currentThemeName\r\n }\r\n detachCssClasses(viewPort());\r\n options = options || {};\r\n if (\"string\" === typeof options) {\r\n options = {\r\n theme: options\r\n }\r\n }\r\n var isAutoInit = options._autoInit;\r\n var loadCallback = options.loadCallback;\r\n var currentThemeData;\r\n currentThemeName = resolveFullThemeName(options.theme || currentThemeName);\r\n if (currentThemeName) {\r\n currentThemeData = knownThemes[currentThemeName]\r\n }\r\n if (loadCallback) {\r\n themeReadyCallback.add(loadCallback)\r\n }\r\n if (currentThemeData) {\r\n $activeThemeLink.attr(\"href\", knownThemes[currentThemeName].url);\r\n if (themeReadyCallback.has() || \"resolved\" !== initDeferred.state() || options._forceTimeout) {\r\n waitForThemeLoad(currentThemeName)\r\n }\r\n } else if (isAutoInit) {\r\n if (hasWindow()) {\r\n waitForThemeLoad(ANY_THEME)\r\n }\r\n themeReadyCallback.fire();\r\n themeReadyCallback.empty()\r\n } else {\r\n throw errors.Error(\"E0021\", currentThemeName)\r\n }\r\n initDeferred.done(() => attachCssClasses(originalViewPort(), currentThemeName))\r\n}\r\n\r\nfunction getCssClasses(themeName) {\r\n themeName = themeName || current();\r\n var result = [];\r\n var themeNameParts = themeName && themeName.split(\".\");\r\n if (themeNameParts) {\r\n result.push(\"dx-theme-\" + themeNameParts[0], \"dx-theme-\" + themeNameParts[0] + \"-typography\");\r\n if (themeNameParts.length > 1) {\r\n result.push(\"dx-color-scheme-\" + themeNameParts[1] + (isMaterial(themeName) ? \"-\" + themeNameParts[2] : \"\"))\r\n }\r\n }\r\n return result\r\n}\r\nvar themeClasses;\r\nexport function attachCssClasses(element, themeName) {\r\n themeClasses = getCssClasses(themeName).join(\" \");\r\n $(element).addClass(themeClasses);\r\n ! function() {\r\n var pixelRatio = hasWindow() && window.devicePixelRatio;\r\n if (!pixelRatio || pixelRatio < 2) {\r\n return\r\n }\r\n var $tester = $(\"
\");\r\n $tester.css(\"border\", \".5px solid transparent\");\r\n $(\"body\").append($tester);\r\n if (1 === getOuterHeight($tester)) {\r\n $(element).addClass(DX_HAIRLINES_CLASS);\r\n themeClasses += \" \" + DX_HAIRLINES_CLASS\r\n }\r\n $tester.remove()\r\n }()\r\n}\r\nexport function detachCssClasses(element) {\r\n $(element).removeClass(themeClasses)\r\n}\r\n\r\nfunction themeReady(callback) {\r\n themeReadyCallback.add(callback)\r\n}\r\n\r\nfunction isTheme(themeRegExp, themeName) {\r\n if (!themeName) {\r\n themeName = currentThemeName || readThemeMarker()\r\n }\r\n return new RegExp(themeRegExp).test(themeName)\r\n}\r\nexport function isMaterial(themeName) {\r\n return isTheme(\"material\", themeName)\r\n}\r\nexport function isGeneric(themeName) {\r\n return isTheme(\"generic\", themeName)\r\n}\r\nexport function isDark(themeName) {\r\n return isTheme(\"dark\", themeName)\r\n}\r\nexport function isCompact(themeName) {\r\n return isTheme(\"compact\", themeName)\r\n}\r\nexport function isWebFontLoaded(text, fontWeight) {\r\n var document = domAdapter.getDocument();\r\n var testElement = document.createElement(\"span\");\r\n testElement.style.position = \"absolute\";\r\n testElement.style.top = \"-9999px\";\r\n testElement.style.left = \"-9999px\";\r\n testElement.style.visibility = \"hidden\";\r\n testElement.style.fontFamily = \"Arial\";\r\n testElement.style.fontSize = \"250px\";\r\n testElement.style.fontWeight = fontWeight;\r\n testElement.innerHTML = text;\r\n document.body.appendChild(testElement);\r\n var etalonFontWidth = testElement.offsetWidth;\r\n testElement.style.fontFamily = \"Roboto, RobotoFallback, Arial\";\r\n var testedFontWidth = testElement.offsetWidth;\r\n testElement.parentNode.removeChild(testElement);\r\n return etalonFontWidth !== testedFontWidth\r\n}\r\nexport function waitWebFont(text, fontWeight) {\r\n return new Promise(resolve => {\r\n var clear = () => {\r\n clearInterval(intervalId);\r\n clearTimeout(timeoutId);\r\n resolve()\r\n };\r\n var intervalId = setInterval(() => {\r\n if (isWebFontLoaded(text, fontWeight)) {\r\n clear()\r\n }\r\n }, 15);\r\n var timeoutId = setTimeout(clear, 2e3)\r\n })\r\n}\r\n\r\nfunction autoInit() {\r\n init({\r\n _autoInit: true,\r\n _forceTimeout: true\r\n });\r\n if ($(DX_LINK_SELECTOR, context).length) {\r\n throw errors.Error(\"E0022\")\r\n }\r\n}\r\nif (hasWindow()) {\r\n autoInit()\r\n} else {\r\n ready(autoInit)\r\n}\r\nviewPortChanged.add((function(viewPort, prevViewPort) {\r\n initDeferred.done((function() {\r\n detachCssClasses(prevViewPort);\r\n attachCssClasses(viewPort)\r\n }))\r\n}));\r\ndevices.changed.add((function() {\r\n init({\r\n _autoInit: true\r\n })\r\n}));\r\nexport {\r\n themeReady as ready\r\n};\r\nexport function resetTheme() {\r\n $activeThemeLink && $activeThemeLink.attr(\"href\", \"about:blank\");\r\n currentThemeName = null;\r\n pendingThemeName = null;\r\n initDeferred = new Deferred\r\n}\r\nexport function initialized(callback) {\r\n initDeferred.done(callback)\r\n}\r\nexport function setDefaultTimeout(timeout) {\r\n defaultTimeout = timeout\r\n}\r\nexport default {\r\n setDefaultTimeout: setDefaultTimeout,\r\n initialized: initialized,\r\n resetTheme: resetTheme,\r\n ready: themeReady,\r\n waitWebFont: waitWebFont,\r\n isWebFontLoaded: isWebFontLoaded,\r\n isCompact: isCompact,\r\n isDark: isDark,\r\n isGeneric: isGeneric,\r\n isMaterial: isMaterial,\r\n detachCssClasses: detachCssClasses,\r\n attachCssClasses: attachCssClasses,\r\n current: current,\r\n waitForThemeLoad: waitForThemeLoad,\r\n isPendingThemeLoaded: isPendingThemeLoaded\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport ValidationEngine from \"../../ui/validation_engine\";\r\nimport Component from \"./common/component\";\r\nimport {\r\n getImageSourceType\r\n} from \"../../core/utils/icon\";\r\nexport default class ButtonWrapper extends Component {\r\n get _validationGroupConfig() {\r\n return ValidationEngine.getGroupConfig(this._findGroup())\r\n }\r\n getDefaultTemplateNames() {\r\n return [\"content\"]\r\n }\r\n getSupportedKeyNames() {\r\n return [\"space\", \"enter\"]\r\n }\r\n getProps() {\r\n var props = super.getProps();\r\n props.onClick = _ref => {\r\n var {\r\n event: event\r\n } = _ref;\r\n this._clickAction({\r\n event: event,\r\n validationGroup: this._validationGroupConfig\r\n })\r\n };\r\n var iconType = getImageSourceType(props.icon);\r\n if (\"svg\" === iconType) {\r\n props.iconTemplate = this._createTemplateComponent(() => props.icon)\r\n }\r\n return props\r\n }\r\n get _templatesInfo() {\r\n return {\r\n template: \"content\"\r\n }\r\n }\r\n _toggleActiveState(_, value) {\r\n var button = this.viewRef;\r\n value ? button.activate() : button.deactivate()\r\n }\r\n _getSubmitAction() {\r\n var needValidate = true;\r\n var validationStatus = \"valid\";\r\n return this._createAction(_ref2 => {\r\n var {\r\n event: event,\r\n submitInput: submitInput\r\n } = _ref2;\r\n if (needValidate) {\r\n var validationGroup = this._validationGroupConfig;\r\n if (void 0 !== validationGroup && \"\" !== validationGroup) {\r\n var validationResult = validationGroup.validate();\r\n validationStatus = validationResult.status;\r\n if (\"pending\" === validationResult.status) {\r\n needValidate = false;\r\n this.option(\"disabled\", true);\r\n validationResult.complete.then(_ref3 => {\r\n var {\r\n status: status\r\n } = _ref3;\r\n this.option(\"disabled\", false);\r\n validationStatus = status;\r\n \"valid\" === validationStatus && submitInput.click();\r\n needValidate = true\r\n })\r\n }\r\n }\r\n }\r\n \"valid\" !== validationStatus && event.preventDefault();\r\n event.stopPropagation()\r\n })\r\n }\r\n _initializeComponent() {\r\n super._initializeComponent();\r\n this._addAction(\"onSubmit\", this._getSubmitAction());\r\n this._clickAction = this._createClickAction()\r\n }\r\n _initMarkup() {\r\n super._initMarkup();\r\n var $content = this.$element().find(\".dx-button-content\");\r\n var $template = $content.children().filter(\".dx-template-wrapper\");\r\n var $input = $content.children().filter(\".dx-button-submit-input\");\r\n if ($template.length) {\r\n $template.addClass(\"dx-button-content\");\r\n $template.append($input);\r\n $content.replaceWith($template)\r\n }\r\n }\r\n _patchOptionValues(options) {\r\n return super._patchOptionValues(_extends({}, options, {\r\n templateData: options._templateData\r\n }))\r\n }\r\n _findGroup() {\r\n var $element = this.$element();\r\n var validationGroup = this.option(\"validationGroup\");\r\n return void 0 !== validationGroup && \"\" !== validationGroup ? validationGroup : ValidationEngine.findGroup($element, this._modelByElement($element))\r\n }\r\n _createClickAction() {\r\n return this._createActionByOption(\"onClick\", {\r\n excludeValidators: [\"readOnly\"]\r\n })\r\n }\r\n _optionChanged(option) {\r\n switch (option.name) {\r\n case \"onClick\":\r\n this._clickAction = this._createClickAction()\r\n }\r\n super._optionChanged(option)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/themes_callback.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Callbacks from \"../core/utils/callbacks\";\r\nexport var themeReadyCallback = Callbacks();\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/icon.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"iconTemplate\", \"position\", \"source\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n getImageSourceType\r\n} from \"../../../core/utils/icon\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n iconClassName: iconClassName,\r\n props: {\r\n iconTemplate: IconTemplate,\r\n source: source\r\n },\r\n sourceType: sourceType\r\n } = _ref;\r\n return createFragment([\"dxIcon\" === sourceType && createVNode(1, \"i\", iconClassName), \"fontIcon\" === sourceType && createVNode(1, \"i\", iconClassName), \"image\" === sourceType && createVNode(1, \"img\", iconClassName, null, 1, {\r\n alt: \"\",\r\n src: source\r\n }), IconTemplate && createVNode(1, \"i\", iconClassName, IconTemplate({}), 0)], 0)\r\n};\r\nexport var IconProps = {\r\n position: \"left\",\r\n source: \"\"\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Icon extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get sourceType() {\r\n return getImageSourceType(this.props.source)\r\n }\r\n get cssClass() {\r\n return \"left\" !== this.props.position ? \"dx-icon-right\" : \"\"\r\n }\r\n get iconClassName() {\r\n var generalClasses = {\r\n \"dx-icon\": true,\r\n [this.cssClass]: !!this.cssClass\r\n };\r\n var {\r\n source: source\r\n } = this.props;\r\n if (\"dxIcon\" === this.sourceType) {\r\n return combineClasses(_extends({}, generalClasses, {\r\n [\"dx-icon-\".concat(source)]: true\r\n }))\r\n }\r\n if (\"fontIcon\" === this.sourceType) {\r\n return combineClasses(_extends({}, generalClasses, {\r\n [String(source)]: !!source\r\n }))\r\n }\r\n if (\"image\" === this.sourceType) {\r\n return combineClasses(generalClasses)\r\n }\r\n if (\"svg\" === this.sourceType) {\r\n return combineClasses(_extends({}, generalClasses, {\r\n \"dx-svg-icon\": true\r\n }))\r\n }\r\n return \"\"\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n iconTemplate: getTemplate(props.iconTemplate)\r\n }),\r\n sourceType: this.sourceType,\r\n cssClass: this.cssClass,\r\n iconClassName: this.iconClassName,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nIcon.defaultProps = IconProps;\r\n","/**\r\n * DevExtreme (esm/ui/widget/utils.ink_ripple.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nvar INKRIPPLE_CLASS = \"dx-inkripple\";\r\nvar INKRIPPLE_WAVE_CLASS = \"dx-inkripple-wave\";\r\nvar INKRIPPLE_SHOWING_CLASS = \"dx-inkripple-showing\";\r\nvar INKRIPPLE_HIDING_CLASS = \"dx-inkripple-hiding\";\r\nvar DEFAULT_WAVE_SIZE_COEFFICIENT = 2;\r\nvar MAX_WAVE_SIZE = 4e3;\r\nvar ANIMATION_DURATION = 300;\r\nvar HOLD_ANIMATION_DURATION = 1e3;\r\nvar DEFAULT_WAVE_INDEX = 0;\r\nexport var initConfig = function() {\r\n var config = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\r\n var {\r\n useHoldAnimation: useHoldAnimation,\r\n waveSizeCoefficient: waveSizeCoefficient,\r\n isCentered: isCentered,\r\n wavesNumber: wavesNumber\r\n } = config;\r\n return {\r\n waveSizeCoefficient: waveSizeCoefficient || DEFAULT_WAVE_SIZE_COEFFICIENT,\r\n isCentered: isCentered || false,\r\n wavesNumber: wavesNumber || 1,\r\n durations: getDurations(null !== useHoldAnimation && void 0 !== useHoldAnimation ? useHoldAnimation : true)\r\n }\r\n};\r\nexport var render = function(args) {\r\n var config = initConfig(args);\r\n return {\r\n showWave: showWave.bind(this, config),\r\n hideWave: hideWave.bind(this, config)\r\n }\r\n};\r\nvar getInkRipple = function(element) {\r\n var result = element.children(\".\" + INKRIPPLE_CLASS);\r\n if (0 === result.length) {\r\n result = $(\"
\").addClass(INKRIPPLE_CLASS).appendTo(element)\r\n }\r\n return result\r\n};\r\nvar getWaves = function(element, wavesNumber) {\r\n var inkRipple = getInkRipple($(element));\r\n var result = inkRipple.children(\".\" + INKRIPPLE_WAVE_CLASS).toArray();\r\n for (var i = result.length; i < wavesNumber; i++) {\r\n var $currentWave = $(\"
\").appendTo(inkRipple).addClass(INKRIPPLE_WAVE_CLASS);\r\n result.push($currentWave[0])\r\n }\r\n return $(result)\r\n};\r\nvar getWaveStyleConfig = function(args, config) {\r\n var element = $(config.element);\r\n var elementWidth = getOuterWidth(element);\r\n var elementHeight = getOuterHeight(element);\r\n var elementDiagonal = parseInt(Math.sqrt(elementWidth * elementWidth + elementHeight * elementHeight));\r\n var waveSize = Math.min(MAX_WAVE_SIZE, parseInt(elementDiagonal * args.waveSizeCoefficient));\r\n var left;\r\n var top;\r\n if (args.isCentered) {\r\n left = (elementWidth - waveSize) / 2;\r\n top = (elementHeight - waveSize) / 2\r\n } else {\r\n var event = config.event;\r\n var position = element.offset();\r\n var x = event.pageX - position.left;\r\n var y = event.pageY - position.top;\r\n left = x - waveSize / 2;\r\n top = y - waveSize / 2\r\n }\r\n return {\r\n left: left,\r\n top: top,\r\n height: waveSize,\r\n width: waveSize\r\n }\r\n};\r\nexport function showWave(args, config) {\r\n var $wave = getWaves(config.element, args.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n args.hidingTimeout && clearTimeout(args.hidingTimeout);\r\n hideSelectedWave($wave);\r\n $wave.css(getWaveStyleConfig(args, config));\r\n args.showingTimeout = setTimeout(showingWaveHandler.bind(this, args, $wave), 0)\r\n}\r\n\r\nfunction showingWaveHandler(args, $wave) {\r\n var durationCss = args.durations.showingScale + \"ms\";\r\n $wave.addClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss)\r\n}\r\n\r\nfunction getDurations(useHoldAnimation) {\r\n return {\r\n showingScale: useHoldAnimation ? HOLD_ANIMATION_DURATION : ANIMATION_DURATION,\r\n hidingScale: ANIMATION_DURATION,\r\n hidingOpacity: ANIMATION_DURATION\r\n }\r\n}\r\n\r\nfunction hideSelectedWave($wave) {\r\n $wave.removeClass(INKRIPPLE_HIDING_CLASS).css(\"transitionDuration\", \"\")\r\n}\r\nexport function hideWave(args, config) {\r\n args.showingTimeout && clearTimeout(args.showingTimeout);\r\n var $wave = getWaves(config.element, config.wavesNumber).eq(config.wave || DEFAULT_WAVE_INDEX);\r\n var durations = args.durations;\r\n var durationCss = durations.hidingScale + \"ms, \" + durations.hidingOpacity + \"ms\";\r\n $wave.addClass(INKRIPPLE_HIDING_CLASS).removeClass(INKRIPPLE_SHOWING_CLASS).css(\"transitionDuration\", durationCss);\r\n var animationDuration = Math.max(durations.hidingScale, durations.hidingOpacity);\r\n args.hidingTimeout = setTimeout(hideSelectedWave.bind(this, $wave), animationDuration)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/ink_ripple.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"config\"];\r\nimport {\r\n createVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n initConfig,\r\n showWave,\r\n hideWave\r\n} from \"../../../ui/widget/utils.ink_ripple\";\r\nexport var viewFunction = model => normalizeProps(createVNode(1, \"div\", \"dx-inkripple\", null, 1, _extends({}, model.restAttributes)));\r\nexport var InkRippleProps = {\r\n config: Object.freeze({})\r\n};\r\nexport class InkRipple extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {};\r\n this.hideWave = this.hideWave.bind(this);\r\n this.showWave = this.showWave.bind(this)\r\n }\r\n get getConfig() {\r\n if (void 0 !== this.__getterCache.getConfig) {\r\n return this.__getterCache.getConfig\r\n }\r\n return this.__getterCache.getConfig = (() => {\r\n var {\r\n config: config\r\n } = this.props;\r\n return initConfig(config)\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n hideWave(opts) {\r\n hideWave(this.getConfig, opts)\r\n }\r\n showWave(opts) {\r\n showWave(this.getConfig, opts)\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.config !== nextProps.config) {\r\n this.__getterCache.getConfig = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n getConfig: this.getConfig,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nInkRipple.defaultProps = InkRippleProps;\r\n","/**\r\n * DevExtreme (esm/events/gesture/emitter.gesture.scroll.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n addNamespace,\r\n isDxMouseWheelEvent,\r\n isMouseEvent,\r\n eventData,\r\n eventDelta\r\n} from \"../../events/utils/index\";\r\nimport GestureEmitter from \"../../events/gesture/emitter.gesture\";\r\nimport registerEmitter from \"../../events/core/emitter_registrator\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nimport devices from \"../../core/devices\";\r\nvar realDevice = devices.real();\r\nvar SCROLL_EVENT = \"scroll\";\r\nvar SCROLL_INIT_EVENT = \"dxscrollinit\";\r\nvar SCROLL_START_EVENT = \"dxscrollstart\";\r\nvar SCROLL_MOVE_EVENT = \"dxscroll\";\r\nvar SCROLL_END_EVENT = \"dxscrollend\";\r\nvar SCROLL_STOP_EVENT = \"dxscrollstop\";\r\nvar SCROLL_CANCEL_EVENT = \"dxscrollcancel\";\r\nvar Locker = Class.inherit(function() {\r\n var NAMESPACED_SCROLL_EVENT = addNamespace(SCROLL_EVENT, \"dxScrollEmitter\");\r\n return {\r\n ctor: function(element) {\r\n this._element = element;\r\n this._locked = false;\r\n this._proxiedScroll = e => {\r\n if (!this._disposed) {\r\n this._scroll(e)\r\n }\r\n };\r\n eventsEngine.on(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n },\r\n _scroll: abstract,\r\n check: function(e, callback) {\r\n if (this._locked) {\r\n callback()\r\n }\r\n },\r\n dispose: function() {\r\n this._disposed = true;\r\n eventsEngine.off(this._element, NAMESPACED_SCROLL_EVENT, this._proxiedScroll)\r\n }\r\n }\r\n}());\r\nvar TimeoutLocker = Locker.inherit({\r\n ctor: function(element, timeout) {\r\n this.callBase(element);\r\n this._timeout = timeout\r\n },\r\n _scroll: function() {\r\n this._prepare();\r\n this._forget()\r\n },\r\n _prepare: function() {\r\n if (this._timer) {\r\n this._clearTimer()\r\n }\r\n this._locked = true\r\n },\r\n _clearTimer: function() {\r\n clearTimeout(this._timer);\r\n this._locked = false;\r\n this._timer = null\r\n },\r\n _forget: function() {\r\n var that = this;\r\n this._timer = setTimeout((function() {\r\n that._clearTimer()\r\n }), this._timeout)\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n this._clearTimer()\r\n }\r\n});\r\nvar WheelLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400);\r\n this._lastWheelDirection = null\r\n },\r\n check: function(e, callback) {\r\n this._checkDirectionChanged(e);\r\n this.callBase(e, callback)\r\n },\r\n _checkDirectionChanged: function(e) {\r\n if (!isDxMouseWheelEvent(e)) {\r\n this._lastWheelDirection = null;\r\n return\r\n }\r\n var direction = e.shiftKey || false;\r\n var directionChange = null !== this._lastWheelDirection && direction !== this._lastWheelDirection;\r\n this._lastWheelDirection = direction;\r\n this._locked = this._locked && !directionChange\r\n }\r\n});\r\nvar PointerLocker = TimeoutLocker.inherit({\r\n ctor: function(element) {\r\n this.callBase(element, 400)\r\n }\r\n});\r\n! function() {\r\n var {\r\n ios: isIos,\r\n android: isAndroid\r\n } = realDevice;\r\n if (!(isIos || isAndroid)) {\r\n return\r\n }\r\n PointerLocker = Locker.inherit({\r\n _scroll: function() {\r\n this._locked = true;\r\n var that = this;\r\n cancelAnimationFrame(this._scrollFrame);\r\n this._scrollFrame = requestAnimationFrame((function() {\r\n that._locked = false\r\n }))\r\n },\r\n check: function(e, callback) {\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame);\r\n var that = this;\r\n var callBase = this.callBase;\r\n this._checkFrame = requestAnimationFrame((function() {\r\n callBase.call(that, e, callback);\r\n that._locked = false\r\n }))\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n cancelAnimationFrame(this._scrollFrame);\r\n cancelAnimationFrame(this._checkFrame)\r\n }\r\n })\r\n}();\r\nvar ScrollEmitter = GestureEmitter.inherit(function() {\r\n var FRAME_DURATION = Math.round(1e3 / 60);\r\n return {\r\n ctor: function(element) {\r\n this.callBase.apply(this, arguments);\r\n this.direction = \"both\";\r\n this._pointerLocker = new PointerLocker(element);\r\n this._wheelLocker = new WheelLocker(element)\r\n },\r\n validate: function() {\r\n return true\r\n },\r\n configure: function(data) {\r\n if (data.scrollTarget) {\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose();\r\n this._pointerLocker = new PointerLocker(data.scrollTarget);\r\n this._wheelLocker = new WheelLocker(data.scrollTarget)\r\n }\r\n this.callBase(data)\r\n },\r\n _init: function(e) {\r\n this._wheelLocker.check(e, function() {\r\n if (isDxMouseWheelEvent(e)) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._pointerLocker.check(e, function() {\r\n var skipCheck = this.isNative && isMouseEvent(e);\r\n if (!isDxMouseWheelEvent(e) && !skipCheck) {\r\n this._accept(e)\r\n }\r\n }.bind(this));\r\n this._fireEvent(SCROLL_INIT_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n move: function(e) {\r\n this.callBase.apply(this, arguments);\r\n e.isScrollingEvent = this.isNative || e.isScrollingEvent\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n this._fireEvent(SCROLL_START_EVENT, e);\r\n this._prevEventData = eventData(e)\r\n },\r\n _move: function(e) {\r\n var currentEventData = eventData(e);\r\n this._fireEvent(SCROLL_MOVE_EVENT, e, {\r\n delta: eventDelta(this._prevEventData, currentEventData)\r\n });\r\n var delta = eventDelta(this._savedEventData, currentEventData);\r\n if (delta.time > 200) {\r\n this._savedEventData = this._prevEventData\r\n }\r\n this._prevEventData = eventData(e)\r\n },\r\n _end: function(e) {\r\n var endEventDelta = eventDelta(this._prevEventData, eventData(e));\r\n var velocity = {\r\n x: 0,\r\n y: 0\r\n };\r\n if (!isDxMouseWheelEvent(e) && endEventDelta.time < 100) {\r\n var delta = eventDelta(this._savedEventData, this._prevEventData);\r\n var velocityMultiplier = FRAME_DURATION / delta.time;\r\n velocity = {\r\n x: delta.x * velocityMultiplier,\r\n y: delta.y * velocityMultiplier\r\n }\r\n }\r\n this._fireEvent(SCROLL_END_EVENT, e, {\r\n velocity: velocity\r\n })\r\n },\r\n _stop: function(e) {\r\n this._fireEvent(SCROLL_STOP_EVENT, e)\r\n },\r\n cancel: function(e) {\r\n this.callBase.apply(this, arguments);\r\n this._fireEvent(SCROLL_CANCEL_EVENT, e)\r\n },\r\n dispose: function() {\r\n this.callBase.apply(this, arguments);\r\n this._pointerLocker.dispose();\r\n this._wheelLocker.dispose()\r\n },\r\n _clearSelection: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _toggleGestureCover: function() {\r\n if (this.isNative) {\r\n return\r\n }\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n}());\r\nregisterEmitter({\r\n emitter: ScrollEmitter,\r\n events: [SCROLL_INIT_EVENT, SCROLL_START_EVENT, SCROLL_MOVE_EVENT, SCROLL_END_EVENT, SCROLL_STOP_EVENT, SCROLL_CANCEL_EVENT]\r\n});\r\nexport default {\r\n init: SCROLL_INIT_EVENT,\r\n start: SCROLL_START_EVENT,\r\n move: SCROLL_MOVE_EVENT,\r\n end: SCROLL_END_EVENT,\r\n stop: SCROLL_STOP_EVENT,\r\n cancel: SCROLL_CANCEL_EVENT,\r\n scroll: SCROLL_EVENT\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/utils/subscribe_to_event.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport * as clickEvent from \"../../events/click\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport scrollEvents from \"../../events/gesture/emitter.gesture.scroll\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nexport function subscribeToEvent(eventName) {\r\n return (element, handler, eventData, namespace) => {\r\n var event = namespace ? addNamespace(eventName, namespace) : eventName;\r\n if (handler) {\r\n eventsEngine.on(element, event, eventData, handler);\r\n return () => {\r\n eventsEngine.off(element, event, handler)\r\n }\r\n }\r\n return\r\n }\r\n}\r\nexport var subscribeToClickEvent = subscribeToEvent(clickEvent.name);\r\nexport var subscribeToScrollEvent = subscribeToEvent(scrollEvents.scroll);\r\nexport var subscribeToScrollInitEvent = subscribeToEvent(scrollEvents.init);\r\nexport var subscribeToDXScrollStartEvent = subscribeToEvent(scrollEvents.start);\r\nexport var subscribeToDXScrollMoveEvent = subscribeToEvent(scrollEvents.move);\r\nexport var subscribeToDXScrollEndEvent = subscribeToEvent(scrollEvents.end);\r\nexport var subscribeToDXScrollStopEvent = subscribeToEvent(scrollEvents.stop);\r\nexport var subscribeToDXScrollCancelEvent = subscribeToEvent(scrollEvents.cancel);\r\nexport var subscribeToDXPointerDownEvent = subscribeToEvent(pointerEvents.down);\r\nexport var subscribeToDXPointerUpEvent = subscribeToEvent(pointerEvents.up);\r\nexport var subscribeToDXPointerMoveEvent = subscribeToEvent(pointerEvents.move);\r\nexport var subscribeToMouseEnterEvent = subscribeToEvent(\"mouseenter\");\r\nexport var subscribeToMouseLeaveEvent = subscribeToEvent(\"mouseleave\");\r\nexport var subscribeToKeyDownEvent = subscribeToEvent(\"keydown\");\r\nexport var subscribeToDxActiveEvent = subscribeToEvent(\"dxactive\");\r\nexport var subscribeToDxInactiveEvent = subscribeToEvent(\"dxinactive\");\r\nexport var subscribeToDxHoverStartEvent = subscribeToEvent(\"dxhoverstart\");\r\nexport var subscribeToDxHoverEndEvent = subscribeToEvent(\"dxhoverend\");\r\nexport var subscribeToDxFocusInEvent = subscribeToEvent(\"focusin\");\r\nexport var subscribeToDxFocusOutEvent = subscribeToEvent(\"focusout\");\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/base_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var BaseWidgetProps = {\r\n className: \"\",\r\n activeStateEnabled: false,\r\n disabled: false,\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n tabIndex: 0,\r\n visible: true\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/common/config_context.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n createContext\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var ConfigContext = createContext(void 0);\r\n","/**\r\n * DevExtreme (esm/renovation/common/config_provider.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"children\", \"rtlEnabled\"];\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n ConfigContext\r\n} from \"./config_context\";\r\nexport var viewFunction = viewModel => viewModel.props.children;\r\nexport var ConfigProviderProps = {};\r\nexport class ConfigProvider extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n getChildContext() {\r\n return _extends({}, this.context, {\r\n [ConfigContext.id]: this.config || ConfigContext.defaultValue\r\n })\r\n }\r\n get config() {\r\n if (void 0 !== this.__getterCache.config) {\r\n return this.__getterCache.config\r\n }\r\n return this.__getterCache.config = (() => ({\r\n rtlEnabled: this.props.rtlEnabled\r\n }))()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.rtlEnabled !== nextProps.rtlEnabled) {\r\n this.__getterCache.config = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n config: this.config,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nConfigProvider.defaultProps = ConfigProviderProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/widget.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"_feedbackHideTimeout\", \"_feedbackShowTimeout\", \"accessKey\", \"activeStateEnabled\", \"activeStateUnit\", \"addWidgetClass\", \"aria\", \"children\", \"className\", \"classes\", \"cssText\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"name\", \"onActive\", \"onClick\", \"onDimensionChanged\", \"onFocusIn\", \"onFocusOut\", \"onHoverEnd\", \"onHoverStart\", \"onInactive\", \"onKeyDown\", \"onRootElementRendered\", \"onVisibilityChange\", \"rootElementRef\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport \"../../../events/click\";\r\nimport \"../../../events/hover\";\r\nimport {\r\n isFunction\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n dxClick,\r\n focus,\r\n keyboard,\r\n resize,\r\n visibility\r\n} from \"../../../events/short\";\r\nimport {\r\n subscribeToDxActiveEvent,\r\n subscribeToDxInactiveEvent,\r\n subscribeToDxHoverStartEvent,\r\n subscribeToDxHoverEndEvent,\r\n subscribeToDxFocusInEvent,\r\n subscribeToDxFocusOutEvent\r\n} from \"../../utils/subscribe_to_event\";\r\nimport {\r\n combineClasses\r\n} from \"../../utils/combine_classes\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n normalizeStyleProp\r\n} from \"../../../core/utils/style\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"./base_props\";\r\nimport {\r\n ConfigContext\r\n} from \"../../common/config_context\";\r\nimport {\r\n ConfigProvider\r\n} from \"../../common/config_provider\";\r\nimport {\r\n resolveRtlEnabled,\r\n resolveRtlEnabledDefinition\r\n} from \"../../utils/resolve_rtl\";\r\nimport resizeCallbacks from \"../../../core/utils/resize_callbacks\";\r\nimport errors from \"../../../core/errors\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nvar DEFAULT_FEEDBACK_HIDE_TIMEOUT = 400;\r\nvar DEFAULT_FEEDBACK_SHOW_TIMEOUT = 30;\r\nvar getAria = args => Object.keys(args).reduce((r, key) => {\r\n if (args[key]) {\r\n return _extends({}, r, {\r\n [\"role\" === key || \"id\" === key ? key : \"aria-\".concat(key)]: String(args[key])\r\n })\r\n }\r\n return r\r\n}, {});\r\nexport var viewFunction = viewModel => {\r\n var widget = normalizeProps(createVNode(1, \"div\", viewModel.cssClasses, viewModel.props.children, 0, _extends({}, viewModel.attributes, {\r\n tabIndex: viewModel.tabIndex,\r\n title: viewModel.props.hint,\r\n style: normalizeStyles(viewModel.styles)\r\n }), null, viewModel.widgetElementRef));\r\n return viewModel.shouldRenderConfigProvider ? createComponentVNode(2, ConfigProvider, {\r\n rtlEnabled: viewModel.rtlEnabled,\r\n children: widget\r\n }) : widget\r\n};\r\nexport var WidgetProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n _feedbackHideTimeout: DEFAULT_FEEDBACK_HIDE_TIMEOUT,\r\n _feedbackShowTimeout: DEFAULT_FEEDBACK_SHOW_TIMEOUT,\r\n cssText: \"\",\r\n aria: Object.freeze({}),\r\n classes: \"\",\r\n name: \"\",\r\n addWidgetClass: true\r\n})));\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class Widget extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.widgetElementRef = infernoCreateRef();\r\n this.state = {\r\n active: false,\r\n focused: false,\r\n hovered: false\r\n };\r\n this.setRootElementRef = this.setRootElementRef.bind(this);\r\n this.activeEffect = this.activeEffect.bind(this);\r\n this.inactiveEffect = this.inactiveEffect.bind(this);\r\n this.clickEffect = this.clickEffect.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.blur = this.blur.bind(this);\r\n this.activate = this.activate.bind(this);\r\n this.deactivate = this.deactivate.bind(this);\r\n this.focusInEffect = this.focusInEffect.bind(this);\r\n this.focusOutEffect = this.focusOutEffect.bind(this);\r\n this.hoverStartEffect = this.hoverStartEffect.bind(this);\r\n this.hoverEndEffect = this.hoverEndEffect.bind(this);\r\n this.keyboardEffect = this.keyboardEffect.bind(this);\r\n this.resizeEffect = this.resizeEffect.bind(this);\r\n this.windowResizeEffect = this.windowResizeEffect.bind(this);\r\n this.visibilityEffect = this.visibilityEffect.bind(this);\r\n this.checkDeprecation = this.checkDeprecation.bind(this);\r\n this.applyCssTextEffect = this.applyCssTextEffect.bind(this)\r\n }\r\n get config() {\r\n if (this.context[ConfigContext.id]) {\r\n return this.context[ConfigContext.id]\r\n }\r\n return ConfigContext.defaultValue\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setRootElementRef, []), new InfernoEffect(this.activeEffect, [this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]), new InfernoEffect(this.inactiveEffect, [this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]), new InfernoEffect(this.clickEffect, [this.props.disabled, this.props.name, this.props.onClick]), new InfernoEffect(this.focusInEffect, [this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]), new InfernoEffect(this.focusOutEffect, [this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]), new InfernoEffect(this.hoverStartEffect, [this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]), new InfernoEffect(this.hoverEndEffect, [this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]), new InfernoEffect(this.keyboardEffect, [this.props.focusStateEnabled, this.props.onKeyDown]), new InfernoEffect(this.resizeEffect, [this.props.name, this.props.onDimensionChanged]), new InfernoEffect(this.windowResizeEffect, [this.props.onDimensionChanged]), new InfernoEffect(this.visibilityEffect, [this.props.name, this.props.onVisibilityChange]), new InfernoEffect(this.checkDeprecation, [this.props.height, this.props.width]), new InfernoEffect(this.applyCssTextEffect, [this.props.cssText]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2, _this$_effects$3, _this$_effects$4, _this$_effects$5, _this$_effects$6, _this$_effects$7, _this$_effects$8, _this$_effects$9, _this$_effects$10, _this$_effects$11, _this$_effects$12, _this$_effects$13;\r\n null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props._feedbackShowTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.disabled, this.props.onActive]);\r\n null === (_this$_effects$2 = this._effects[2]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props._feedbackHideTimeout, this.props.activeStateEnabled, this.props.activeStateUnit, this.props.onInactive, this.state.active]);\r\n null === (_this$_effects$3 = this._effects[3]) || void 0 === _this$_effects$3 ? void 0 : _this$_effects$3.update([this.props.disabled, this.props.name, this.props.onClick]);\r\n null === (_this$_effects$4 = this._effects[4]) || void 0 === _this$_effects$4 ? void 0 : _this$_effects$4.update([this.props.disabled, this.props.focusStateEnabled, this.props.name, this.props.onFocusIn]);\r\n null === (_this$_effects$5 = this._effects[5]) || void 0 === _this$_effects$5 ? void 0 : _this$_effects$5.update([this.props.focusStateEnabled, this.props.name, this.props.onFocusOut, this.state.focused]);\r\n null === (_this$_effects$6 = this._effects[6]) || void 0 === _this$_effects$6 ? void 0 : _this$_effects$6.update([this.props.activeStateUnit, this.props.disabled, this.props.hoverStateEnabled, this.props.onHoverStart, this.state.active]);\r\n null === (_this$_effects$7 = this._effects[7]) || void 0 === _this$_effects$7 ? void 0 : _this$_effects$7.update([this.props.activeStateUnit, this.props.hoverStateEnabled, this.props.onHoverEnd, this.state.hovered]);\r\n null === (_this$_effects$8 = this._effects[8]) || void 0 === _this$_effects$8 ? void 0 : _this$_effects$8.update([this.props.focusStateEnabled, this.props.onKeyDown]);\r\n null === (_this$_effects$9 = this._effects[9]) || void 0 === _this$_effects$9 ? void 0 : _this$_effects$9.update([this.props.name, this.props.onDimensionChanged]);\r\n null === (_this$_effects$10 = this._effects[10]) || void 0 === _this$_effects$10 ? void 0 : _this$_effects$10.update([this.props.onDimensionChanged]);\r\n null === (_this$_effects$11 = this._effects[11]) || void 0 === _this$_effects$11 ? void 0 : _this$_effects$11.update([this.props.name, this.props.onVisibilityChange]);\r\n null === (_this$_effects$12 = this._effects[12]) || void 0 === _this$_effects$12 ? void 0 : _this$_effects$12.update([this.props.height, this.props.width]);\r\n null === (_this$_effects$13 = this._effects[13]) || void 0 === _this$_effects$13 ? void 0 : _this$_effects$13.update([this.props.cssText])\r\n }\r\n setRootElementRef() {\r\n var {\r\n onRootElementRendered: onRootElementRendered,\r\n rootElementRef: rootElementRef\r\n } = this.props;\r\n if (rootElementRef) {\r\n rootElementRef.current = this.widgetElementRef.current\r\n }\r\n null === onRootElementRendered || void 0 === onRootElementRendered ? void 0 : onRootElementRendered(this.widgetElementRef.current)\r\n }\r\n activeEffect() {\r\n var {\r\n _feedbackShowTimeout: _feedbackShowTimeout,\r\n activeStateEnabled: activeStateEnabled,\r\n activeStateUnit: activeStateUnit,\r\n disabled: disabled,\r\n onActive: onActive\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (activeStateEnabled) {\r\n if (!disabled) {\r\n return subscribeToDxActiveEvent(this.widgetElementRef.current, event => {\r\n this.setState(__state_argument => ({\r\n active: true\r\n }));\r\n null === onActive || void 0 === onActive ? void 0 : onActive(event)\r\n }, {\r\n timeout: _feedbackShowTimeout,\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n }\r\n return\r\n }\r\n inactiveEffect() {\r\n var {\r\n _feedbackHideTimeout: _feedbackHideTimeout,\r\n activeStateEnabled: activeStateEnabled,\r\n activeStateUnit: activeStateUnit,\r\n onInactive: onInactive\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (activeStateEnabled) {\r\n return subscribeToDxInactiveEvent(this.widgetElementRef.current, event => {\r\n if (this.state.active) {\r\n this.setState(__state_argument => ({\r\n active: false\r\n }));\r\n null === onInactive || void 0 === onInactive ? void 0 : onInactive(event)\r\n }\r\n }, {\r\n timeout: _feedbackHideTimeout,\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n return\r\n }\r\n clickEffect() {\r\n var {\r\n disabled: disabled,\r\n name: name,\r\n onClick: onClick\r\n } = this.props;\r\n var namespace = name;\r\n if (onClick && !disabled) {\r\n dxClick.on(this.widgetElementRef.current, onClick, {\r\n namespace: namespace\r\n });\r\n return () => dxClick.off(this.widgetElementRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n focusInEffect() {\r\n var {\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n name: name,\r\n onFocusIn: onFocusIn\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"Focus\");\r\n if (focusStateEnabled) {\r\n if (!disabled) {\r\n return subscribeToDxFocusInEvent(this.widgetElementRef.current, event => {\r\n if (!event.isDefaultPrevented()) {\r\n this.setState(__state_argument => ({\r\n focused: true\r\n }));\r\n null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(event)\r\n }\r\n }, null, namespace)\r\n }\r\n }\r\n return\r\n }\r\n focusOutEffect() {\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n name: name,\r\n onFocusOut: onFocusOut\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"Focus\");\r\n if (focusStateEnabled) {\r\n return subscribeToDxFocusOutEvent(this.widgetElementRef.current, event => {\r\n if (!event.isDefaultPrevented() && this.state.focused) {\r\n this.setState(__state_argument => ({\r\n focused: false\r\n }));\r\n null === onFocusOut || void 0 === onFocusOut ? void 0 : onFocusOut(event)\r\n }\r\n }, null, namespace)\r\n }\r\n return\r\n }\r\n hoverStartEffect() {\r\n var {\r\n activeStateUnit: activeStateUnit,\r\n disabled: disabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onHoverStart: onHoverStart\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (hoverStateEnabled) {\r\n if (!disabled) {\r\n return subscribeToDxHoverStartEvent(this.widgetElementRef.current, event => {\r\n !this.state.active && this.setState(__state_argument => ({\r\n hovered: true\r\n }));\r\n null === onHoverStart || void 0 === onHoverStart ? void 0 : onHoverStart(event)\r\n }, {\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n }\r\n return\r\n }\r\n hoverEndEffect() {\r\n var {\r\n activeStateUnit: activeStateUnit,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onHoverEnd: onHoverEnd\r\n } = this.props;\r\n var selector = activeStateUnit;\r\n if (hoverStateEnabled) {\r\n return subscribeToDxHoverEndEvent(this.widgetElementRef.current, event => {\r\n if (this.state.hovered) {\r\n this.setState(__state_argument => ({\r\n hovered: false\r\n }));\r\n null === onHoverEnd || void 0 === onHoverEnd ? void 0 : onHoverEnd(event)\r\n }\r\n }, {\r\n selector: selector\r\n }, \"UIFeedback\")\r\n }\r\n return\r\n }\r\n keyboardEffect() {\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n if (focusStateEnabled && onKeyDown) {\r\n var id = keyboard.on(this.widgetElementRef.current, this.widgetElementRef.current, e => onKeyDown(e));\r\n return () => keyboard.off(id)\r\n }\r\n return\r\n }\r\n resizeEffect() {\r\n var namespace = \"\".concat(this.props.name, \"VisibilityChange\");\r\n var {\r\n onDimensionChanged: onDimensionChanged\r\n } = this.props;\r\n if (onDimensionChanged) {\r\n resize.on(this.widgetElementRef.current, onDimensionChanged, {\r\n namespace: namespace\r\n });\r\n return () => resize.off(this.widgetElementRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n windowResizeEffect() {\r\n var {\r\n onDimensionChanged: onDimensionChanged\r\n } = this.props;\r\n if (onDimensionChanged) {\r\n resizeCallbacks.add(onDimensionChanged);\r\n return () => {\r\n resizeCallbacks.remove(onDimensionChanged)\r\n }\r\n }\r\n return\r\n }\r\n visibilityEffect() {\r\n var {\r\n name: name,\r\n onVisibilityChange: onVisibilityChange\r\n } = this.props;\r\n var namespace = \"\".concat(name, \"VisibilityChange\");\r\n if (onVisibilityChange) {\r\n visibility.on(this.widgetElementRef.current, () => onVisibilityChange(true), () => onVisibilityChange(false), {\r\n namespace: namespace\r\n });\r\n return () => visibility.off(this.widgetElementRef.current, {\r\n namespace: namespace\r\n })\r\n }\r\n return\r\n }\r\n checkDeprecation() {\r\n var {\r\n height: height,\r\n width: width\r\n } = this.props;\r\n if (isFunction(width)) {\r\n errors.log(\"W0017\", \"width\")\r\n }\r\n if (isFunction(height)) {\r\n errors.log(\"W0017\", \"height\")\r\n }\r\n }\r\n applyCssTextEffect() {\r\n var {\r\n cssText: cssText\r\n } = this.props;\r\n if (\"\" !== cssText) {\r\n this.widgetElementRef.current.style.cssText = cssText\r\n }\r\n }\r\n get shouldRenderConfigProvider() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.props;\r\n return resolveRtlEnabledDefinition(rtlEnabled, this.config)\r\n }\r\n get rtlEnabled() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.props;\r\n return resolveRtlEnabled(rtlEnabled, this.config)\r\n }\r\n get attributes() {\r\n var {\r\n aria: aria,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n visible: visible\r\n } = this.props;\r\n var accessKey = focusStateEnabled && !disabled && this.props.accessKey;\r\n return _extends({}, extend({}, accessKey && {\r\n accessKey: accessKey\r\n }), getAria(_extends({}, aria, {\r\n disabled: disabled,\r\n hidden: !visible\r\n })), extend({}, this.restAttributes))\r\n }\r\n get styles() {\r\n var {\r\n height: height,\r\n width: width\r\n } = this.props;\r\n var style = this.restAttributes.style || {};\r\n var computedWidth = normalizeStyleProp(\"width\", isFunction(width) ? width() : width);\r\n var computedHeight = normalizeStyleProp(\"height\", isFunction(height) ? height() : height);\r\n return _extends({}, style, {\r\n height: null !== computedHeight && void 0 !== computedHeight ? computedHeight : style.height,\r\n width: null !== computedWidth && void 0 !== computedWidth ? computedWidth : style.width\r\n })\r\n }\r\n get cssClasses() {\r\n var {\r\n activeStateEnabled: activeStateEnabled,\r\n addWidgetClass: addWidgetClass,\r\n className: className,\r\n classes: classes,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onVisibilityChange: onVisibilityChange,\r\n visible: visible\r\n } = this.props;\r\n var isFocusable = !!focusStateEnabled && !disabled;\r\n var isHoverable = !!hoverStateEnabled && !disabled;\r\n var canBeActive = !!activeStateEnabled && !disabled;\r\n var classesMap = {\r\n \"dx-widget\": !!addWidgetClass,\r\n [String(classes)]: !!classes,\r\n [String(className)]: !!className,\r\n \"dx-state-disabled\": !!disabled,\r\n \"dx-state-invisible\": !visible,\r\n \"dx-state-focused\": !!this.state.focused && isFocusable,\r\n \"dx-state-active\": !!this.state.active && canBeActive,\r\n \"dx-state-hover\": !!this.state.hovered && isHoverable && !this.state.active,\r\n \"dx-rtl\": !!this.rtlEnabled,\r\n \"dx-visibility-change-handler\": !!onVisibilityChange\r\n };\r\n return combineClasses(classesMap)\r\n }\r\n get tabIndex() {\r\n var {\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n tabIndex: tabIndex\r\n } = this.props;\r\n var isFocusable = focusStateEnabled && !disabled;\r\n return isFocusable ? tabIndex : void 0\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n focus.trigger(this.widgetElementRef.current)\r\n }\r\n blur() {\r\n var activeElement = domAdapter.getActiveElement(this.widgetElementRef.current);\r\n if (this.widgetElementRef.current === activeElement) {\r\n activeElement.blur()\r\n }\r\n }\r\n activate() {\r\n this.setState(__state_argument => ({\r\n active: true\r\n }))\r\n }\r\n deactivate() {\r\n this.setState(__state_argument => ({\r\n active: false\r\n }))\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n active: this.state.active,\r\n focused: this.state.focused,\r\n hovered: this.state.hovered,\r\n widgetElementRef: this.widgetElementRef,\r\n config: this.config,\r\n shouldRenderConfigProvider: this.shouldRenderConfigProvider,\r\n rtlEnabled: this.rtlEnabled,\r\n attributes: this.attributes,\r\n styles: this.styles,\r\n cssClasses: this.cssClasses,\r\n tabIndex: this.tabIndex,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nWidget.defaultProps = WidgetProps;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/resolve_rtl.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport globalConfig from \"../../core/config\";\r\nexport function resolveRtlEnabled(rtlProp, config) {\r\n if (void 0 !== rtlProp) {\r\n return rtlProp\r\n }\r\n if (void 0 !== (null === config || void 0 === config ? void 0 : config.rtlEnabled)) {\r\n return config.rtlEnabled\r\n }\r\n return globalConfig().rtlEnabled\r\n}\r\nexport function resolveRtlEnabledDefinition(rtlProp, config) {\r\n var isPropDefined = isDefined(rtlProp);\r\n var onlyGlobalDefined = isDefined(globalConfig().rtlEnabled) && !isPropDefined && !isDefined(null === config || void 0 === config ? void 0 : config.rtlEnabled);\r\n return isPropDefined && rtlProp !== (null === config || void 0 === config ? void 0 : config.rtlEnabled) || onlyGlobalDefined\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"children\", \"className\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"icon\", \"iconPosition\", \"iconTemplate\", \"onClick\", \"onKeyDown\", \"onSubmit\", \"pressed\", \"rtlEnabled\", \"stylingMode\", \"tabIndex\", \"template\", \"templateData\", \"text\", \"type\", \"useInkRipple\", \"useSubmitBehavior\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createDefaultOptionRules,\r\n convertRulesToOptions\r\n} from \"../../core/options/utils\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n isMaterial,\r\n current\r\n} from \"../../ui/themes\";\r\nimport {\r\n click\r\n} from \"../../events/short\";\r\nimport {\r\n combineClasses\r\n} from \"../utils/combine_classes\";\r\nimport {\r\n getImageSourceType\r\n} from \"../../core/utils/icon\";\r\nimport {\r\n camelize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n Icon\r\n} from \"./common/icon\";\r\nimport errors from \"../../core/errors\";\r\nimport {\r\n InkRipple\r\n} from \"./common/ink_ripple\";\r\nimport {\r\n Widget\r\n} from \"./common/widget\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"./common/base_props\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar stylingModes = [\"outlined\", \"text\", \"contained\"];\r\nvar getCssClasses = model => {\r\n var {\r\n icon: icon,\r\n iconPosition: iconPosition,\r\n stylingMode: stylingMode,\r\n text: text,\r\n type: type\r\n } = model;\r\n var isValidStylingMode = stylingMode && stylingModes.includes(stylingMode);\r\n var classesMap = {\r\n \"dx-button\": true,\r\n [\"dx-button-mode-\".concat(isValidStylingMode ? stylingMode : \"contained\")]: true,\r\n [\"dx-button-\".concat(null !== type && void 0 !== type ? type : \"normal\")]: true,\r\n \"dx-button-has-text\": !!text,\r\n \"dx-button-has-icon\": !!icon,\r\n \"dx-button-icon-right\": \"left\" !== iconPosition\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var {\r\n children: children,\r\n iconPosition: iconPosition,\r\n iconTemplate: IconTemplate,\r\n template: ButtonTemplate,\r\n text: text\r\n } = viewModel.props;\r\n var renderText = !viewModel.props.template && !children && \"\" !== text;\r\n var isIconLeft = \"left\" === iconPosition;\r\n var iconComponent = !viewModel.props.template && !children && (viewModel.iconSource || viewModel.props.iconTemplate) && createComponentVNode(2, Icon, {\r\n source: viewModel.iconSource,\r\n position: iconPosition,\r\n iconTemplate: IconTemplate\r\n });\r\n return normalizeProps(createComponentVNode(2, Widget, _extends({\r\n accessKey: viewModel.props.accessKey,\r\n activeStateEnabled: viewModel.props.activeStateEnabled,\r\n aria: viewModel.aria,\r\n className: viewModel.props.className,\r\n classes: viewModel.cssClasses,\r\n disabled: viewModel.props.disabled,\r\n focusStateEnabled: viewModel.props.focusStateEnabled,\r\n height: viewModel.props.height,\r\n hint: viewModel.props.hint,\r\n hoverStateEnabled: viewModel.props.hoverStateEnabled,\r\n onActive: viewModel.onActive,\r\n onClick: viewModel.onWidgetClick,\r\n onInactive: viewModel.onInactive,\r\n onKeyDown: viewModel.keyDown,\r\n rtlEnabled: viewModel.props.rtlEnabled,\r\n tabIndex: viewModel.props.tabIndex,\r\n visible: viewModel.props.visible,\r\n width: viewModel.props.width\r\n }, viewModel.restAttributes, {\r\n children: createVNode(1, \"div\", \"dx-button-content\", [viewModel.props.template && ButtonTemplate({\r\n data: viewModel.buttonTemplateData\r\n }), !viewModel.props.template && children, isIconLeft && iconComponent, renderText && createVNode(1, \"span\", \"dx-button-text\", text, 0), !isIconLeft && iconComponent, viewModel.props.useSubmitBehavior && createVNode(64, \"input\", \"dx-button-submit-input\", null, 1, {\r\n type: \"submit\",\r\n tabIndex: -1\r\n }, null, viewModel.submitInputRef), viewModel.props.useInkRipple && createComponentVNode(2, InkRipple, {\r\n config: viewModel.inkRippleConfig\r\n }, null, viewModel.inkRippleRef)], 0, null, null, viewModel.contentRef)\r\n }), null, viewModel.widgetRef))\r\n};\r\nexport var ButtonProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n icon: \"\",\r\n iconPosition: \"left\",\r\n stylingMode: \"contained\",\r\n text: \"\",\r\n type: \"normal\",\r\n useInkRipple: false,\r\n useSubmitBehavior: false,\r\n templateData: Object.freeze({})\r\n})));\r\nexport var defaultOptionRules = createDefaultOptionRules([{\r\n device: () => \"desktop\" === devices.real().deviceType && !devices.isSimulator(),\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n}, {\r\n device: () => isMaterial(current()),\r\n options: {\r\n useInkRipple: true\r\n }\r\n}]);\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Button extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.contentRef = infernoCreateRef();\r\n this.inkRippleRef = infernoCreateRef();\r\n this.submitInputRef = infernoCreateRef();\r\n this.widgetRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.focus = this.focus.bind(this);\r\n this.activate = this.activate.bind(this);\r\n this.deactivate = this.deactivate.bind(this);\r\n this.submitEffect = this.submitEffect.bind(this);\r\n this.checkDeprecation = this.checkDeprecation.bind(this);\r\n this.onActive = this.onActive.bind(this);\r\n this.onInactive = this.onInactive.bind(this);\r\n this.onWidgetClick = this.onWidgetClick.bind(this);\r\n this.keyDown = this.keyDown.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.submitEffect, [this.props.onSubmit, this.props.useSubmitBehavior]), new InfernoEffect(this.checkDeprecation, [this.props.type]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$, _this$_effects$2;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.onSubmit, this.props.useSubmitBehavior]);\r\n null === (_this$_effects$2 = this._effects[1]) || void 0 === _this$_effects$2 ? void 0 : _this$_effects$2.update([this.props.type])\r\n }\r\n submitEffect() {\r\n var {\r\n onSubmit: onSubmit,\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.props;\r\n if (useSubmitBehavior && onSubmit) {\r\n click.on(this.submitInputRef.current, event => onSubmit({\r\n event: event,\r\n submitInput: this.submitInputRef.current\r\n }), {\r\n namespace: \"UIFeedback\"\r\n });\r\n return () => click.off(this.submitInputRef.current, {\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n return\r\n }\r\n checkDeprecation() {\r\n var {\r\n type: type\r\n } = this.props;\r\n if (\"back\" === type) {\r\n errors.log(\"W0016\", \"type\", \"back\", \"22.2\", \"Use the 'back' icon instead\")\r\n }\r\n }\r\n onActive(event) {\r\n var {\r\n useInkRipple: useInkRipple\r\n } = this.props;\r\n useInkRipple && this.inkRippleRef.current.showWave({\r\n element: this.contentRef.current,\r\n event: event\r\n })\r\n }\r\n onInactive(event) {\r\n var {\r\n useInkRipple: useInkRipple\r\n } = this.props;\r\n useInkRipple && this.inkRippleRef.current.hideWave({\r\n element: this.contentRef.current,\r\n event: event\r\n })\r\n }\r\n onWidgetClick(event) {\r\n var {\r\n onClick: onClick,\r\n useSubmitBehavior: useSubmitBehavior\r\n } = this.props;\r\n null === onClick || void 0 === onClick ? void 0 : onClick({\r\n event: event\r\n });\r\n useSubmitBehavior && this.submitInputRef.current.click()\r\n }\r\n keyDown(e) {\r\n var {\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = e;\r\n var result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e);\r\n if (null !== result && void 0 !== result && result.cancel) {\r\n return result\r\n }\r\n if (\"space\" === keyName || \"space\" === which || \"enter\" === keyName || \"enter\" === which) {\r\n originalEvent.preventDefault();\r\n this.onWidgetClick(originalEvent)\r\n }\r\n return\r\n }\r\n get aria() {\r\n var {\r\n icon: icon,\r\n text: text\r\n } = this.props;\r\n var label = null !== text && void 0 !== text ? text : \"\";\r\n if (!text && icon) {\r\n var iconSource = getImageSourceType(icon);\r\n switch (iconSource) {\r\n case \"image\":\r\n var isPathToImage = !icon.includes(\"base64\") && /^(?!(?:https?:\\/\\/)|(?:ftp:\\/\\/)|(?:www\\.))[^\\s]+$/.test(icon);\r\n label = isPathToImage ? icon.replace(/.+\\/([^.]+)\\..+$/, \"$1\") : \"\";\r\n break;\r\n case \"dxIcon\":\r\n label = messageLocalization.format(camelize(icon, true)) || icon;\r\n break;\r\n case \"fontIcon\":\r\n label = icon;\r\n break;\r\n case \"svg\":\r\n var _titleRegexp$exec$, _titleRegexp$exec;\r\n var title = null !== (_titleRegexp$exec$ = null === (_titleRegexp$exec = /(.*?)<\\/title>/.exec(icon)) || void 0 === _titleRegexp$exec ? void 0 : _titleRegexp$exec[1]) && void 0 !== _titleRegexp$exec$ ? _titleRegexp$exec$ : \"\";\r\n label = title\r\n }\r\n }\r\n return _extends({\r\n role: \"button\"\r\n }, label ? {\r\n label: label\r\n } : {})\r\n }\r\n get cssClasses() {\r\n return getCssClasses(this.props)\r\n }\r\n get iconSource() {\r\n var {\r\n icon: icon,\r\n type: type\r\n } = this.props;\r\n if (icon || \"back\" === type) {\r\n return (null !== icon && void 0 !== icon ? icon : \"\") || \"back\"\r\n }\r\n return \"\"\r\n }\r\n get inkRippleConfig() {\r\n if (void 0 !== this.__getterCache.inkRippleConfig) {\r\n return this.__getterCache.inkRippleConfig\r\n }\r\n return this.__getterCache.inkRippleConfig = (() => {\r\n var {\r\n icon: icon,\r\n text: text,\r\n type: type\r\n } = this.props;\r\n return !text && icon || \"back\" === type ? {\r\n isCentered: true,\r\n useHoldAnimation: false,\r\n waveSizeCoefficient: 1\r\n } : {}\r\n })()\r\n }\r\n get buttonTemplateData() {\r\n var {\r\n icon: icon,\r\n templateData: templateData,\r\n text: text\r\n } = this.props;\r\n return _extends({\r\n icon: icon,\r\n text: text\r\n }, templateData)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n this.widgetRef.current.focus()\r\n }\r\n activate() {\r\n this.widgetRef.current.activate()\r\n }\r\n deactivate() {\r\n this.widgetRef.current.deactivate()\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.icon !== nextProps.icon || this.props.text !== nextProps.text || this.props.type !== nextProps.type) {\r\n this.__getterCache.inkRippleConfig = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n template: getTemplate(props.template),\r\n iconTemplate: getTemplate(props.iconTemplate)\r\n }),\r\n contentRef: this.contentRef,\r\n submitInputRef: this.submitInputRef,\r\n inkRippleRef: this.inkRippleRef,\r\n widgetRef: this.widgetRef,\r\n onActive: this.onActive,\r\n onInactive: this.onInactive,\r\n onWidgetClick: this.onWidgetClick,\r\n keyDown: this.keyDown,\r\n aria: this.aria,\r\n cssClasses: this.cssClasses,\r\n iconSource: this.iconSource,\r\n inkRippleConfig: this.inkRippleConfig,\r\n buttonTemplateData: this.buttonTemplateData,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nButton.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(ButtonProps), Object.getOwnPropertyDescriptors(_extends({}, convertRulesToOptions(defaultOptionRules)))));\r\nvar __defaultOptionRules = [];\r\nexport function defaultOptions(rule) {\r\n __defaultOptionRules.push(rule);\r\n Button.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(Button.defaultProps), Object.getOwnPropertyDescriptors(convertRulesToOptions(defaultOptionRules)), Object.getOwnPropertyDescriptors(convertRulesToOptions(__defaultOptionRules))))\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/button.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport BaseComponent from \"../component_wrapper/button\";\r\nimport {\r\n Button as ButtonComponent,\r\n defaultOptions\r\n} from \"./button\";\r\nexport default class Button extends BaseComponent {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);\r\n return props\r\n }\r\n focus() {\r\n var _this$viewRef;\r\n return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments)\r\n }\r\n activate() {\r\n var _this$viewRef2;\r\n return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.activate(...arguments)\r\n }\r\n deactivate() {\r\n var _this$viewRef3;\r\n return null === (_this$viewRef3 = this.viewRef) || void 0 === _this$viewRef3 ? void 0 : _this$viewRef3.deactivate(...arguments)\r\n }\r\n _getActionConfigs() {\r\n return {\r\n onClick: {\r\n excludeValidators: [\"readOnly\"]\r\n },\r\n onSubmit: {}\r\n }\r\n }\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [\"onSubmit\"],\r\n templates: [\"template\", \"iconTemplate\"],\r\n props: [\"activeStateEnabled\", \"hoverStateEnabled\", \"icon\", \"iconPosition\", \"onClick\", \"onSubmit\", \"pressed\", \"stylingMode\", \"template\", \"iconTemplate\", \"text\", \"type\", \"useInkRipple\", \"useSubmitBehavior\", \"templateData\", \"className\", \"accessKey\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"onKeyDown\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return ButtonComponent\r\n }\r\n}\r\nregisterComponent(\"dxButton\", Button);\r\nButton.defaultOptions = defaultOptions;\r\n","/**\r\n * DevExtreme (esm/ui/button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Widget from \"../renovation/ui/button.j\";\r\nexport default Widget;\r\n","/**\r\n * DevExtreme (esm/animation/easing.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isFunction\r\n} from \"../core/utils/type\";\r\nvar CSS_TRANSITION_EASING_REGEX = /cubic-bezier\\((\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*,\\s*(\\d+(?:\\.\\d+)?)\\)/;\r\nvar TransitionTimingFuncMap = {\r\n linear: \"cubic-bezier(0, 0, 1, 1)\",\r\n swing: \"cubic-bezier(0.445, 0.05, 0.55, 0.95)\",\r\n ease: \"cubic-bezier(0.25, 0.1, 0.25, 1)\",\r\n \"ease-in\": \"cubic-bezier(0.42, 0, 1, 1)\",\r\n \"ease-out\": \"cubic-bezier(0, 0, 0.58, 1)\",\r\n \"ease-in-out\": \"cubic-bezier(0.42, 0, 0.58, 1)\"\r\n};\r\nvar polynomBezier = function(x1, y1, x2, y2) {\r\n var Cx = 3 * x1;\r\n var Bx = 3 * (x2 - x1) - Cx;\r\n var Ax = 1 - Cx - Bx;\r\n var Cy = 3 * y1;\r\n var By = 3 * (y2 - y1) - Cy;\r\n var Ay = 1 - Cy - By;\r\n var bezierX = function(t) {\r\n return t * (Cx + t * (Bx + t * Ax))\r\n };\r\n var derivativeX = function(t) {\r\n return Cx + t * (2 * Bx + 3 * t * Ax)\r\n };\r\n return function(t) {\r\n return function(t) {\r\n return t * (Cy + t * (By + t * Ay))\r\n }(function(t) {\r\n var x = t;\r\n var i = 0;\r\n var z;\r\n while (i < 14) {\r\n z = bezierX(x) - t;\r\n if (Math.abs(z) < .001) {\r\n break\r\n }\r\n x -= z / derivativeX(x);\r\n i++\r\n }\r\n return x\r\n }(t))\r\n }\r\n};\r\nvar easing = {};\r\nexport var convertTransitionTimingFuncToEasing = function(cssTransitionEasing) {\r\n cssTransitionEasing = TransitionTimingFuncMap[cssTransitionEasing] || cssTransitionEasing;\r\n var coeffs = cssTransitionEasing.match(CSS_TRANSITION_EASING_REGEX);\r\n var forceName;\r\n if (!coeffs) {\r\n forceName = \"linear\";\r\n coeffs = TransitionTimingFuncMap[forceName].match(CSS_TRANSITION_EASING_REGEX)\r\n }\r\n coeffs = coeffs.slice(1, 5);\r\n for (var i = 0; i < coeffs.length; i++) {\r\n coeffs[i] = parseFloat(coeffs[i])\r\n }\r\n var easingName = forceName || \"cubicbezier_\" + coeffs.join(\"_\").replace(/\\./g, \"p\");\r\n if (!isFunction(easing[easingName])) {\r\n easing[easingName] = function(x, t, b, c, d) {\r\n return c * polynomBezier(coeffs[0], coeffs[1], coeffs[2], coeffs[3])(t / d) + b\r\n }\r\n }\r\n return easingName\r\n};\r\nexport function setEasing(value) {\r\n easing = value\r\n}\r\nexport function getEasing(name) {\r\n return easing[name]\r\n}\r\n","/**\r\n * DevExtreme (esm/animation/position.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth,\r\n getOuterHeight,\r\n getWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n splitPair,\r\n pairToObject\r\n} from \"../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport {\r\n isWindow,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport browser from \"../core/utils/browser\";\r\nimport {\r\n resetPosition,\r\n move\r\n} from \"./translator\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport devices from \"../core/devices\";\r\nimport {\r\n setStyle\r\n} from \"../core/utils/style\";\r\nvar horzRe = /left|right/;\r\nvar vertRe = /top|bottom/;\r\nvar collisionRe = /fit|flip|none/;\r\nvar scaleRe = /scale\\(.+?\\)/;\r\nvar IS_SAFARI = browser.safari;\r\nvar normalizeAlign = function(raw) {\r\n var result = {\r\n h: \"center\",\r\n v: \"center\"\r\n };\r\n var pair = splitPair(raw);\r\n if (pair) {\r\n each(pair, (function() {\r\n var w = String(this).toLowerCase();\r\n if (horzRe.test(w)) {\r\n result.h = w\r\n } else if (vertRe.test(w)) {\r\n result.v = w\r\n }\r\n }))\r\n }\r\n return result\r\n};\r\nvar normalizeOffset = function(raw, preventRound) {\r\n return pairToObject(raw, preventRound)\r\n};\r\nvar normalizeCollision = function(raw) {\r\n var pair = splitPair(raw);\r\n var h = String(pair && pair[0]).toLowerCase();\r\n var v = String(pair && pair[1]).toLowerCase();\r\n if (!collisionRe.test(h)) {\r\n h = \"none\"\r\n }\r\n if (!collisionRe.test(v)) {\r\n v = h\r\n }\r\n return {\r\n h: h,\r\n v: v\r\n }\r\n};\r\nvar getAlignFactor = function(align) {\r\n switch (align) {\r\n case \"center\":\r\n return .5;\r\n case \"right\":\r\n case \"bottom\":\r\n return 1;\r\n default:\r\n return 0\r\n }\r\n};\r\nvar inverseAlign = function(align) {\r\n switch (align) {\r\n case \"left\":\r\n return \"right\";\r\n case \"right\":\r\n return \"left\";\r\n case \"top\":\r\n return \"bottom\";\r\n case \"bottom\":\r\n return \"top\";\r\n default:\r\n return align\r\n }\r\n};\r\nvar calculateOversize = function(data, bounds) {\r\n var oversize = 0;\r\n if (data.myLocation < bounds.min) {\r\n oversize += bounds.min - data.myLocation\r\n }\r\n if (data.myLocation > bounds.max) {\r\n oversize += data.myLocation - bounds.max\r\n }\r\n return oversize\r\n};\r\nvar collisionSide = function(direction, data, bounds) {\r\n if (data.myLocation < bounds.min) {\r\n return \"h\" === direction ? \"left\" : \"top\"\r\n }\r\n if (data.myLocation > bounds.max) {\r\n return \"h\" === direction ? \"right\" : \"bottom\"\r\n }\r\n return \"none\"\r\n};\r\nvar initMyLocation = function(data) {\r\n data.myLocation = data.atLocation + getAlignFactor(data.atAlign) * data.atSize - getAlignFactor(data.myAlign) * data.mySize + data.offset\r\n};\r\nvar collisionResolvers = {\r\n fit: function(data, bounds) {\r\n var result = false;\r\n if (data.myLocation > bounds.max) {\r\n data.myLocation = bounds.max;\r\n result = true\r\n }\r\n if (data.myLocation < bounds.min) {\r\n data.myLocation = bounds.min;\r\n result = true\r\n }\r\n data.fit = result\r\n },\r\n flip: function(data, bounds) {\r\n data.flip = false;\r\n if (\"center\" === data.myAlign && \"center\" === data.atAlign) {\r\n return\r\n }\r\n if (data.myLocation < bounds.min || data.myLocation > bounds.max) {\r\n var inverseData = extend({}, data, {\r\n myAlign: inverseAlign(data.myAlign),\r\n atAlign: inverseAlign(data.atAlign),\r\n offset: -data.offset\r\n });\r\n initMyLocation(inverseData);\r\n inverseData.oversize = calculateOversize(inverseData, bounds);\r\n if (inverseData.myLocation >= bounds.min && inverseData.myLocation <= bounds.max || data.oversize > inverseData.oversize) {\r\n data.myLocation = inverseData.myLocation;\r\n data.oversize = inverseData.oversize;\r\n data.flip = true\r\n }\r\n }\r\n },\r\n flipfit: function(data, bounds) {\r\n this.flip(data, bounds);\r\n this.fit(data, bounds)\r\n },\r\n none: function(data) {\r\n data.oversize = 0\r\n }\r\n};\r\nvar scrollbarWidth;\r\nvar calculateScrollbarWidth = function() {\r\n var $scrollDiv = $(\"<div>\").css({\r\n width: 100,\r\n height: 100,\r\n overflow: \"scroll\",\r\n position: \"absolute\",\r\n top: -9999\r\n }).appendTo($(\"body\"));\r\n var result = $scrollDiv.get(0).offsetWidth - $scrollDiv.get(0).clientWidth;\r\n $scrollDiv.remove();\r\n scrollbarWidth = result\r\n};\r\nvar defaultPositionResult = {\r\n h: {\r\n location: 0,\r\n flip: false,\r\n fit: false,\r\n oversize: 0\r\n },\r\n v: {\r\n location: 0,\r\n flip: false,\r\n fit: false,\r\n oversize: 0\r\n }\r\n};\r\nvar calculatePosition = function(what, options) {\r\n var $what = $(what);\r\n var currentOffset = $what.offset();\r\n var result = extend(true, {}, defaultPositionResult, {\r\n h: {\r\n location: currentOffset.left\r\n },\r\n v: {\r\n location: currentOffset.top\r\n }\r\n });\r\n if (!options) {\r\n return result\r\n }\r\n var my = normalizeAlign(options.my);\r\n var at = normalizeAlign(options.at);\r\n var of = $(options.of).length && options.of || window;\r\n var offset = normalizeOffset(options.offset, options.precise);\r\n var collision = normalizeCollision(options.collision);\r\n var boundary = options.boundary;\r\n var boundaryOffset = normalizeOffset(options.boundaryOffset, options.precise);\r\n var h = {\r\n mySize: getOuterWidth($what),\r\n myAlign: my.h,\r\n atAlign: at.h,\r\n offset: offset.h,\r\n collision: collision.h,\r\n boundaryOffset: boundaryOffset.h\r\n };\r\n var v = {\r\n mySize: getOuterHeight($what),\r\n myAlign: my.v,\r\n atAlign: at.v,\r\n offset: offset.v,\r\n collision: collision.v,\r\n boundaryOffset: boundaryOffset.v\r\n };\r\n if (of.preventDefault) {\r\n h.atLocation = of.pageX;\r\n v.atLocation = of.pageY;\r\n h.atSize = 0;\r\n v.atSize = 0\r\n } else {\r\n of = $(of);\r\n if (isWindow(of [0])) {\r\n h.atLocation = of.scrollLeft();\r\n v.atLocation = of.scrollTop();\r\n if (\"phone\" === devices.real().deviceType && of [0].visualViewport) {\r\n h.atLocation = Math.max(h.atLocation, of [0].visualViewport.offsetLeft);\r\n v.atLocation = Math.max(v.atLocation, of [0].visualViewport.offsetTop);\r\n h.atSize = of [0].visualViewport.width;\r\n v.atSize = of [0].visualViewport.height\r\n } else {\r\n h.atSize = of [0].innerWidth > of [0].outerWidth ? of [0].innerWidth : getWidth(of);\r\n v.atSize = of [0].innerHeight > of [0].outerHeight || IS_SAFARI ? of [0].innerHeight : getHeight(of)\r\n }\r\n } else if (9 === of [0].nodeType) {\r\n h.atLocation = 0;\r\n v.atLocation = 0;\r\n h.atSize = getWidth(of);\r\n v.atSize = getHeight(of)\r\n } else {\r\n var ofRect = getBoundingRect(of.get(0));\r\n var o = getOffsetWithoutScale(of);\r\n h.atLocation = o.left;\r\n v.atLocation = o.top;\r\n h.atSize = Math.max(ofRect.width, getOuterWidth(of));\r\n v.atSize = Math.max(ofRect.height, getOuterHeight(of))\r\n }\r\n }\r\n initMyLocation(h);\r\n initMyLocation(v);\r\n var bounds = function() {\r\n var win = $(window);\r\n var windowWidth = getWidth(win);\r\n var windowHeight = getHeight(win);\r\n var left = win.scrollLeft();\r\n var top = win.scrollTop();\r\n var documentElement = domAdapter.getDocumentElement();\r\n var hZoomLevel = touch ? documentElement.clientWidth / windowWidth : 1;\r\n var vZoomLevel = touch ? documentElement.clientHeight / windowHeight : 1;\r\n if (void 0 === scrollbarWidth) {\r\n calculateScrollbarWidth()\r\n }\r\n var boundaryWidth = windowWidth;\r\n var boundaryHeight = windowHeight;\r\n if (boundary && !isWindow(boundary)) {\r\n var $boundary = $(boundary);\r\n var boundaryPosition = $boundary.offset();\r\n left = boundaryPosition.left;\r\n top = boundaryPosition.top;\r\n boundaryWidth = getWidth($boundary);\r\n boundaryHeight = getHeight($boundary)\r\n }\r\n return {\r\n h: {\r\n min: left + h.boundaryOffset,\r\n max: left + boundaryWidth / hZoomLevel - h.mySize - h.boundaryOffset\r\n },\r\n v: {\r\n min: top + v.boundaryOffset,\r\n max: top + boundaryHeight / vZoomLevel - v.mySize - v.boundaryOffset\r\n }\r\n }\r\n }();\r\n h.oversize = calculateOversize(h, bounds.h);\r\n v.oversize = calculateOversize(v, bounds.v);\r\n h.collisionSide = collisionSide(\"h\", h, bounds.h);\r\n v.collisionSide = collisionSide(\"v\", v, bounds.v);\r\n if (collisionResolvers[h.collision]) {\r\n collisionResolvers[h.collision](h, bounds.h)\r\n }\r\n if (collisionResolvers[v.collision]) {\r\n collisionResolvers[v.collision](v, bounds.v)\r\n }\r\n var preciser = function(number) {\r\n return options.precise ? number : Math.round(number)\r\n };\r\n extend(true, result, {\r\n h: {\r\n location: preciser(h.myLocation),\r\n oversize: preciser(h.oversize),\r\n fit: h.fit,\r\n flip: h.flip,\r\n collisionSide: h.collisionSide\r\n },\r\n v: {\r\n location: preciser(v.myLocation),\r\n oversize: preciser(v.oversize),\r\n fit: v.fit,\r\n flip: v.flip,\r\n collisionSide: v.collisionSide\r\n },\r\n precise: options.precise\r\n });\r\n return result\r\n};\r\nvar setScaleProperty = function(element, scale, styleAttr, isEmpty) {\r\n var stylePropIsValid = isDefined(element.style) && !domAdapter.isNode(element.style);\r\n var newStyleValue = isEmpty ? styleAttr.replace(scale, \"\") : styleAttr;\r\n if (stylePropIsValid) {\r\n setStyle(element, newStyleValue, false)\r\n } else {\r\n var styleAttributeNode = domAdapter.createAttribute(\"style\");\r\n styleAttributeNode.value = newStyleValue;\r\n element.setAttributeNode(styleAttributeNode)\r\n }\r\n};\r\nvar getOffsetWithoutScale = function getOffsetWithoutScale($startElement) {\r\n var _currentElement$getAt, _style$match;\r\n var $currentElement = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : $startElement;\r\n var currentElement = $currentElement.get(0);\r\n if (!currentElement) {\r\n return $startElement.offset()\r\n }\r\n var style = (null === (_currentElement$getAt = currentElement.getAttribute) || void 0 === _currentElement$getAt ? void 0 : _currentElement$getAt.call(currentElement, \"style\")) || \"\";\r\n var scale = null === (_style$match = style.match(scaleRe)) || void 0 === _style$match ? void 0 : _style$match[0];\r\n var offset;\r\n if (scale) {\r\n setScaleProperty(currentElement, scale, style, true);\r\n offset = getOffsetWithoutScale($startElement, $currentElement.parent());\r\n setScaleProperty(currentElement, scale, style, false)\r\n } else {\r\n offset = getOffsetWithoutScale($startElement, $currentElement.parent())\r\n }\r\n return offset\r\n};\r\nvar position = function(what, options) {\r\n var $what = $(what);\r\n if (!options) {\r\n return $what.offset()\r\n }\r\n resetPosition($what, true);\r\n var offset = getOffsetWithoutScale($what);\r\n var targetPosition = options.h && options.v ? options : calculatePosition($what, options);\r\n var preciser = function(number) {\r\n return options.precise ? number : Math.round(number)\r\n };\r\n move($what, {\r\n left: targetPosition.h.location - preciser(offset.left),\r\n top: targetPosition.v.location - preciser(offset.top)\r\n });\r\n return targetPosition\r\n};\r\nvar offset = function(element) {\r\n element = $(element).get(0);\r\n if (isWindow(element)) {\r\n return null\r\n } else if (element && \"pageY\" in element && \"pageX\" in element) {\r\n return {\r\n top: element.pageY,\r\n left: element.pageX\r\n }\r\n }\r\n return $(element).offset()\r\n};\r\nif (!position.inverseAlign) {\r\n position.inverseAlign = inverseAlign\r\n}\r\nif (!position.normalizeAlign) {\r\n position.normalizeAlign = normalizeAlign\r\n}\r\nexport default {\r\n calculateScrollbarWidth: calculateScrollbarWidth,\r\n calculate: calculatePosition,\r\n setup: position,\r\n offset: offset\r\n};\r\n","/**\r\n * DevExtreme (esm/animation/fx.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nvar window = getWindow();\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport errors from \"../core/errors\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isFunction,\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n getTranslateCss,\r\n parseTranslate,\r\n clearCache,\r\n locate,\r\n getTranslate\r\n} from \"./translator\";\r\nimport {\r\n convertTransitionTimingFuncToEasing,\r\n getEasing\r\n} from \"./easing\";\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"./frame\";\r\nimport {\r\n transitionEndEventName,\r\n transition\r\n} from \"../core/utils/support\";\r\nimport positionUtils from \"./position\";\r\nimport {\r\n removeEvent\r\n} from \"../events/remove\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar removeEventName = addNamespace(removeEvent, \"dxFX\");\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nvar RELATIVE_VALUE_REGEX = /^([+-])=(.*)/i;\r\nvar ANIM_DATA_KEY = \"dxAnimData\";\r\nvar ANIM_QUEUE_KEY = \"dxAnimQueue\";\r\nvar TRANSFORM_PROP = \"transform\";\r\nvar TransitionAnimationStrategy = {\r\n initAnimation: function($element, config) {\r\n $element.css({\r\n transitionProperty: \"none\"\r\n });\r\n if (\"string\" === typeof config.from) {\r\n $element.addClass(config.from)\r\n } else {\r\n setProps($element, config.from)\r\n }\r\n var that = this;\r\n var deferred = new Deferred;\r\n var cleanupWhen = config.cleanupWhen;\r\n config.transitionAnimation = {\r\n deferred: deferred,\r\n finish: function() {\r\n that._finishTransition($element);\r\n if (cleanupWhen) {\r\n when(deferred, cleanupWhen).always((function() {\r\n that._cleanup($element, config)\r\n }))\r\n } else {\r\n that._cleanup($element, config)\r\n }\r\n deferred.resolveWith($element, [config, $element])\r\n }\r\n };\r\n this._completeAnimationCallback($element, config).done((function() {\r\n config.transitionAnimation.finish()\r\n })).fail((function() {\r\n deferred.rejectWith($element, [config, $element])\r\n }));\r\n if (!config.duration) {\r\n config.transitionAnimation.finish()\r\n }\r\n $element.css(\"transform\")\r\n },\r\n animate: function($element, config) {\r\n this._startAnimation($element, config);\r\n return config.transitionAnimation.deferred.promise()\r\n },\r\n _completeAnimationCallback: function($element, config) {\r\n var that = this;\r\n var startTime = Date.now() + config.delay;\r\n var deferred = new Deferred;\r\n var transitionEndFired = new Deferred;\r\n var simulatedTransitionEndFired = new Deferred;\r\n var simulatedEndEventTimer;\r\n var transitionEndEventFullName = transitionEndEventName() + \".dxFX\";\r\n config.transitionAnimation.cleanup = function() {\r\n clearTimeout(simulatedEndEventTimer);\r\n clearTimeout(waitForJSCompleteTimer);\r\n eventsEngine.off($element, transitionEndEventFullName);\r\n eventsEngine.off($element, removeEventName)\r\n };\r\n eventsEngine.one($element, transitionEndEventFullName, (function() {\r\n if (Date.now() - startTime >= config.duration) {\r\n transitionEndFired.reject()\r\n }\r\n }));\r\n eventsEngine.off($element, removeEventName);\r\n eventsEngine.on($element, removeEventName, (function() {\r\n that.stop($element, config);\r\n deferred.reject()\r\n }));\r\n var waitForJSCompleteTimer = setTimeout((function() {\r\n simulatedEndEventTimer = setTimeout((function() {\r\n simulatedTransitionEndFired.reject()\r\n }), config.duration + config.delay + fx._simulatedTransitionEndDelay);\r\n when(transitionEndFired, simulatedTransitionEndFired).fail(function() {\r\n deferred.resolve()\r\n }.bind(this))\r\n }));\r\n return deferred.promise()\r\n },\r\n _startAnimation: function($element, config) {\r\n $element.css({\r\n transitionProperty: \"all\",\r\n transitionDelay: config.delay + \"ms\",\r\n transitionDuration: config.duration + \"ms\",\r\n transitionTimingFunction: config.easing\r\n });\r\n if (\"string\" === typeof config.to) {\r\n $element[0].className += \" \" + config.to\r\n } else if (config.to) {\r\n setProps($element, config.to)\r\n }\r\n },\r\n _finishTransition: function($element) {\r\n $element.css(\"transition\", \"none\")\r\n },\r\n _cleanup: function($element, config) {\r\n config.transitionAnimation.cleanup();\r\n if (\"string\" === typeof config.from) {\r\n $element.removeClass(config.from);\r\n $element.removeClass(config.to)\r\n }\r\n },\r\n stop: function($element, config, jumpToEnd) {\r\n if (!config) {\r\n return\r\n }\r\n if (jumpToEnd) {\r\n config.transitionAnimation.finish()\r\n } else {\r\n if (isPlainObject(config.to)) {\r\n each(config.to, (function(key) {\r\n $element.css(key, $element.css(key))\r\n }))\r\n }\r\n this._finishTransition($element);\r\n this._cleanup($element, config)\r\n }\r\n }\r\n};\r\nvar FrameAnimationStrategy = {\r\n initAnimation: function($element, config) {\r\n setProps($element, config.from)\r\n },\r\n animate: function($element, config) {\r\n var deferred = new Deferred;\r\n var that = this;\r\n if (!config) {\r\n return deferred.reject().promise()\r\n }\r\n each(config.to, (function(prop) {\r\n if (void 0 === config.from[prop]) {\r\n config.from[prop] = that._normalizeValue($element.css(prop))\r\n }\r\n }));\r\n if (config.to[TRANSFORM_PROP]) {\r\n config.from[TRANSFORM_PROP] = that._parseTransform(config.from[TRANSFORM_PROP]);\r\n config.to[TRANSFORM_PROP] = that._parseTransform(config.to[TRANSFORM_PROP])\r\n }\r\n config.frameAnimation = {\r\n to: config.to,\r\n from: config.from,\r\n currentValue: config.from,\r\n easing: convertTransitionTimingFuncToEasing(config.easing),\r\n duration: config.duration,\r\n startTime: (new Date).valueOf(),\r\n finish: function() {\r\n this.currentValue = this.to;\r\n this.draw();\r\n cancelAnimationFrame(config.frameAnimation.animationFrameId);\r\n deferred.resolve()\r\n },\r\n draw: function() {\r\n if (config.draw) {\r\n config.draw(this.currentValue);\r\n return\r\n }\r\n var currentValue = extend({}, this.currentValue);\r\n if (currentValue[TRANSFORM_PROP]) {\r\n currentValue[TRANSFORM_PROP] = map(currentValue[TRANSFORM_PROP], (function(value, prop) {\r\n if (\"translate\" === prop) {\r\n return getTranslateCss(value)\r\n } else if (\"scale\" === prop) {\r\n return \"scale(\" + value + \")\"\r\n } else if (\"rotate\" === prop.substr(0, prop.length - 1)) {\r\n return prop + \"(\" + value + \"deg)\"\r\n }\r\n })).join(\" \")\r\n }\r\n $element.css(currentValue)\r\n }\r\n };\r\n if (config.delay) {\r\n config.frameAnimation.startTime += config.delay;\r\n config.frameAnimation.delayTimeout = setTimeout((function() {\r\n that._startAnimation($element, config)\r\n }), config.delay)\r\n } else {\r\n that._startAnimation($element, config)\r\n }\r\n return deferred.promise()\r\n },\r\n _startAnimation: function($element, config) {\r\n eventsEngine.off($element, removeEventName);\r\n eventsEngine.on($element, removeEventName, (function() {\r\n if (config.frameAnimation) {\r\n cancelAnimationFrame(config.frameAnimation.animationFrameId)\r\n }\r\n }));\r\n this._animationStep($element, config)\r\n },\r\n _parseTransform: function(transformString) {\r\n var result = {};\r\n each(transformString.match(/\\w+\\d*\\w*\\([^)]*\\)\\s*/g), (function(i, part) {\r\n var translateData = parseTranslate(part);\r\n var scaleData = part.match(/scale\\((.+?)\\)/);\r\n var rotateData = part.match(/(rotate.)\\((.+)deg\\)/);\r\n if (translateData) {\r\n result.translate = translateData\r\n }\r\n if (scaleData && scaleData[1]) {\r\n result.scale = parseFloat(scaleData[1])\r\n }\r\n if (rotateData && rotateData[1]) {\r\n result[rotateData[1]] = parseFloat(rotateData[2])\r\n }\r\n }));\r\n return result\r\n },\r\n stop: function($element, config, jumpToEnd) {\r\n var frameAnimation = config && config.frameAnimation;\r\n if (!frameAnimation) {\r\n return\r\n }\r\n cancelAnimationFrame(frameAnimation.animationFrameId);\r\n clearTimeout(frameAnimation.delayTimeout);\r\n if (jumpToEnd) {\r\n frameAnimation.finish()\r\n }\r\n delete config.frameAnimation\r\n },\r\n _animationStep: function($element, config) {\r\n var frameAnimation = config && config.frameAnimation;\r\n if (!frameAnimation) {\r\n return\r\n }\r\n var now = (new Date).valueOf();\r\n if (now >= frameAnimation.startTime + frameAnimation.duration) {\r\n frameAnimation.finish();\r\n return\r\n }\r\n frameAnimation.currentValue = this._calcStepValue(frameAnimation, now - frameAnimation.startTime);\r\n frameAnimation.draw();\r\n var that = this;\r\n frameAnimation.animationFrameId = requestAnimationFrame((function() {\r\n that._animationStep($element, config)\r\n }))\r\n },\r\n _calcStepValue: function(frameAnimation, currentDuration) {\r\n return function calcValueRecursively(from, to) {\r\n var result = Array.isArray(to) ? [] : {};\r\n each(to, (function(propName, endPropValue) {\r\n if (\"string\" === typeof endPropValue && false === parseFloat(endPropValue)) {\r\n return true\r\n }\r\n result[propName] = \"object\" === typeof endPropValue ? calcValueRecursively(from[propName], endPropValue) : function(propName) {\r\n var x = currentDuration / frameAnimation.duration;\r\n var t = currentDuration;\r\n var b = 1 * from[propName];\r\n var c = to[propName] - from[propName];\r\n var d = frameAnimation.duration;\r\n return getEasing(frameAnimation.easing)(x, t, b, c, d)\r\n }(propName)\r\n }));\r\n return result\r\n }(frameAnimation.from, frameAnimation.to)\r\n },\r\n _normalizeValue: function(value) {\r\n var numericValue = parseFloat(value);\r\n if (false === numericValue) {\r\n return value\r\n }\r\n return numericValue\r\n }\r\n};\r\nvar FallbackToNoAnimationStrategy = {\r\n initAnimation: function() {},\r\n animate: function() {\r\n return (new Deferred).resolve().promise()\r\n },\r\n stop: noop,\r\n isSynchronous: true\r\n};\r\nvar getAnimationStrategy = function(config) {\r\n config = config || {};\r\n var animationStrategies = {\r\n transition: transition() ? TransitionAnimationStrategy : FrameAnimationStrategy,\r\n frame: FrameAnimationStrategy,\r\n noAnimation: FallbackToNoAnimationStrategy\r\n };\r\n var strategy = config.strategy || \"transition\";\r\n if (\"css\" === config.type && !transition()) {\r\n strategy = \"noAnimation\"\r\n }\r\n return animationStrategies[strategy]\r\n};\r\nvar baseConfigValidator = function(config, animationType, validate, typeMessage) {\r\n each([\"from\", \"to\"], (function() {\r\n if (!validate(config[this])) {\r\n throw errors.Error(\"E0010\", animationType, this, typeMessage)\r\n }\r\n }))\r\n};\r\nvar isObjectConfigValidator = function(config, animationType) {\r\n return baseConfigValidator(config, animationType, (function(target) {\r\n return isPlainObject(target)\r\n }), \"a plain object\")\r\n};\r\nvar isStringConfigValidator = function(config, animationType) {\r\n return baseConfigValidator(config, animationType, (function(target) {\r\n return \"string\" === typeof target\r\n }), \"a string\")\r\n};\r\nvar CustomAnimationConfigurator = {\r\n setup: function() {}\r\n};\r\nvar CssAnimationConfigurator = {\r\n validateConfig: function(config) {\r\n isStringConfigValidator(config, \"css\")\r\n },\r\n setup: function() {}\r\n};\r\nvar positionAliases = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\"\r\n }\r\n};\r\nvar SlideAnimationConfigurator = {\r\n validateConfig: function(config) {\r\n isObjectConfigValidator(config, \"slide\")\r\n },\r\n setup: function($element, config) {\r\n var location = locate($element);\r\n if (\"slide\" !== config.type) {\r\n var positioningConfig = \"slideIn\" === config.type ? config.from : config.to;\r\n positioningConfig.position = extend({\r\n of: window\r\n }, positionAliases[config.direction]);\r\n setupPosition($element, positioningConfig)\r\n }\r\n this._setUpConfig(location, config.from);\r\n this._setUpConfig(location, config.to);\r\n clearCache($element)\r\n },\r\n _setUpConfig: function(location, config) {\r\n config.left = \"left\" in config ? config.left : \"+=0\";\r\n config.top = \"top\" in config ? config.top : \"+=0\";\r\n this._initNewPosition(location, config)\r\n },\r\n _initNewPosition: function(location, config) {\r\n var position = {\r\n left: config.left,\r\n top: config.top\r\n };\r\n delete config.left;\r\n delete config.top;\r\n var relativeValue = this._getRelativeValue(position.left);\r\n if (void 0 !== relativeValue) {\r\n position.left = relativeValue + location.left\r\n } else {\r\n config.left = 0\r\n }\r\n relativeValue = this._getRelativeValue(position.top);\r\n if (void 0 !== relativeValue) {\r\n position.top = relativeValue + location.top\r\n } else {\r\n config.top = 0\r\n }\r\n config[TRANSFORM_PROP] = getTranslateCss({\r\n x: position.left,\r\n y: position.top\r\n })\r\n },\r\n _getRelativeValue: function(value) {\r\n var relativeValue;\r\n if (\"string\" === typeof value && (relativeValue = RELATIVE_VALUE_REGEX.exec(value))) {\r\n return parseInt(relativeValue[1] + \"1\") * relativeValue[2]\r\n }\r\n }\r\n};\r\nvar FadeAnimationConfigurator = {\r\n setup: function($element, config) {\r\n var _from$opacity, _to$opacity;\r\n var from = config.from;\r\n var to = config.to;\r\n var defaultFromOpacity = \"fadeOut\" === config.type ? 1 : 0;\r\n var defaultToOpacity = \"fadeOut\" === config.type ? 0 : 1;\r\n var fromOpacity = isPlainObject(from) ? String(null !== (_from$opacity = from.opacity) && void 0 !== _from$opacity ? _from$opacity : defaultFromOpacity) : String(from);\r\n var toOpacity = isPlainObject(to) ? String(null !== (_to$opacity = to.opacity) && void 0 !== _to$opacity ? _to$opacity : defaultToOpacity) : String(to);\r\n if (!config.skipElementInitialStyles) {\r\n fromOpacity = $element.css(\"opacity\")\r\n }\r\n switch (config.type) {\r\n case \"fadeIn\":\r\n toOpacity = 1;\r\n break;\r\n case \"fadeOut\":\r\n toOpacity = 0\r\n }\r\n config.from = {\r\n visibility: \"visible\",\r\n opacity: fromOpacity\r\n };\r\n config.to = {\r\n opacity: toOpacity\r\n }\r\n }\r\n};\r\nvar PopAnimationConfigurator = {\r\n validateConfig: function(config) {\r\n isObjectConfigValidator(config, \"pop\")\r\n },\r\n setup: function($element, config) {\r\n var from = config.from;\r\n var to = config.to;\r\n var fromOpacity = \"opacity\" in from ? from.opacity : $element.css(\"opacity\");\r\n var toOpacity = \"opacity\" in to ? to.opacity : 1;\r\n var fromScale = \"scale\" in from ? from.scale : 0;\r\n var toScale = \"scale\" in to ? to.scale : 1;\r\n config.from = {\r\n opacity: fromOpacity\r\n };\r\n var translate = getTranslate($element);\r\n config.from[TRANSFORM_PROP] = this._getCssTransform(translate, fromScale);\r\n config.to = {\r\n opacity: toOpacity\r\n };\r\n config.to[TRANSFORM_PROP] = this._getCssTransform(translate, toScale)\r\n },\r\n _getCssTransform: function(translate, scale) {\r\n return getTranslateCss(translate) + \"scale(\" + scale + \")\"\r\n }\r\n};\r\nvar animationConfigurators = {\r\n custom: CustomAnimationConfigurator,\r\n slide: SlideAnimationConfigurator,\r\n slideIn: SlideAnimationConfigurator,\r\n slideOut: SlideAnimationConfigurator,\r\n fade: FadeAnimationConfigurator,\r\n fadeIn: FadeAnimationConfigurator,\r\n fadeOut: FadeAnimationConfigurator,\r\n pop: PopAnimationConfigurator,\r\n css: CssAnimationConfigurator\r\n};\r\nvar getAnimationConfigurator = function(config) {\r\n var result = animationConfigurators[config.type];\r\n if (!result) {\r\n throw errors.Error(\"E0011\", config.type)\r\n }\r\n return result\r\n};\r\nvar defaultJSConfig = {\r\n type: \"custom\",\r\n from: {},\r\n to: {},\r\n duration: 400,\r\n start: noop,\r\n complete: noop,\r\n easing: \"ease\",\r\n delay: 0\r\n};\r\nvar defaultCssConfig = {\r\n duration: 400,\r\n easing: \"ease\",\r\n delay: 0\r\n};\r\n\r\nfunction setupAnimationOnElement() {\r\n var $element = this.element;\r\n var config = this.config;\r\n setupPosition($element, config.from);\r\n setupPosition($element, config.to);\r\n this.configurator.setup($element, config);\r\n $element.data(ANIM_DATA_KEY, this);\r\n if (fx.off) {\r\n config.duration = 0;\r\n config.delay = 0\r\n }\r\n this.strategy.initAnimation($element, config);\r\n if (config.start) {\r\n var element = getPublicElement($element);\r\n config.start.apply(this, [element, config])\r\n }\r\n}\r\nvar onElementAnimationComplete = function(animation) {\r\n var $element = animation.element;\r\n var config = animation.config;\r\n $element.removeData(ANIM_DATA_KEY);\r\n if (config.complete) {\r\n var element = getPublicElement($element);\r\n config.complete.apply(this, [element, config])\r\n }\r\n animation.deferred.resolveWith(this, [$element, config])\r\n};\r\nvar startAnimationOnElement = function() {\r\n var animation = this;\r\n var $element = animation.element;\r\n var config = animation.config;\r\n animation.isStarted = true;\r\n return animation.strategy.animate($element, config).done((function() {\r\n onElementAnimationComplete(animation)\r\n })).fail((function() {\r\n animation.deferred.rejectWith(this, [$element, config])\r\n }))\r\n};\r\nvar stopAnimationOnElement = function(jumpToEnd) {\r\n var $element = this.element;\r\n var config = this.config;\r\n clearTimeout(this.startTimeout);\r\n if (!this.isStarted) {\r\n this.start()\r\n }\r\n this.strategy.stop($element, config, jumpToEnd)\r\n};\r\nvar scopedRemoveEvent = addNamespace(removeEvent, \"dxFXStartAnimation\");\r\nvar subscribeToRemoveEvent = function(animation) {\r\n eventsEngine.off(animation.element, scopedRemoveEvent);\r\n eventsEngine.on(animation.element, scopedRemoveEvent, (function() {\r\n fx.stop(animation.element)\r\n }));\r\n animation.deferred.always((function() {\r\n eventsEngine.off(animation.element, scopedRemoveEvent)\r\n }))\r\n};\r\nvar createAnimation = function(element, initialConfig) {\r\n var defaultConfig = \"css\" === initialConfig.type ? defaultCssConfig : defaultJSConfig;\r\n var config = extend(true, {}, defaultConfig, initialConfig);\r\n var configurator = getAnimationConfigurator(config);\r\n var strategy = getAnimationStrategy(config);\r\n var animation = {\r\n element: $(element),\r\n config: config,\r\n configurator: configurator,\r\n strategy: strategy,\r\n isSynchronous: strategy.isSynchronous,\r\n setup: setupAnimationOnElement,\r\n start: startAnimationOnElement,\r\n stop: stopAnimationOnElement,\r\n deferred: new Deferred\r\n };\r\n if (isFunction(configurator.validateConfig)) {\r\n configurator.validateConfig(config)\r\n }\r\n subscribeToRemoveEvent(animation);\r\n return animation\r\n};\r\nvar animate = function(element, config) {\r\n var $element = $(element);\r\n if (!$element.length) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n var animation = createAnimation($element, config);\r\n pushInAnimationQueue($element, animation);\r\n return animation.deferred.promise()\r\n};\r\n\r\nfunction pushInAnimationQueue($element, animation) {\r\n var queueData = getAnimQueueData($element);\r\n writeAnimQueueData($element, queueData);\r\n queueData.push(animation);\r\n if (!isAnimating($element)) {\r\n shiftFromAnimationQueue($element, queueData)\r\n }\r\n}\r\n\r\nfunction getAnimQueueData($element) {\r\n return $element.data(ANIM_QUEUE_KEY) || []\r\n}\r\n\r\nfunction writeAnimQueueData($element, queueData) {\r\n $element.data(ANIM_QUEUE_KEY, queueData)\r\n}\r\nvar destroyAnimQueueData = function($element) {\r\n $element.removeData(ANIM_QUEUE_KEY)\r\n};\r\n\r\nfunction isAnimating($element) {\r\n return !!$element.data(ANIM_DATA_KEY)\r\n}\r\n\r\nfunction shiftFromAnimationQueue($element, queueData) {\r\n queueData = getAnimQueueData($element);\r\n if (!queueData.length) {\r\n return\r\n }\r\n var animation = queueData.shift();\r\n if (0 === queueData.length) {\r\n destroyAnimQueueData($element)\r\n }\r\n executeAnimation(animation).done((function() {\r\n if (!isAnimating($element)) {\r\n shiftFromAnimationQueue($element)\r\n }\r\n }))\r\n}\r\n\r\nfunction executeAnimation(animation) {\r\n animation.setup();\r\n if (fx.off || animation.isSynchronous) {\r\n animation.start()\r\n } else {\r\n animation.startTimeout = setTimeout((function() {\r\n animation.start()\r\n }))\r\n }\r\n return animation.deferred.promise()\r\n}\r\n\r\nfunction setupPosition($element, config) {\r\n if (!config || !config.position) {\r\n return\r\n }\r\n var win = $(window);\r\n var left = 0;\r\n var top = 0;\r\n var position = positionUtils.calculate($element, config.position);\r\n var offset = $element.offset();\r\n var currentPosition = $element.position();\r\n if (currentPosition.top > offset.top) {\r\n top = win.scrollTop()\r\n }\r\n if (currentPosition.left > offset.left) {\r\n left = win.scrollLeft()\r\n }\r\n extend(config, {\r\n left: position.h.location - offset.left + currentPosition.left - left,\r\n top: position.v.location - offset.top + currentPosition.top - top\r\n });\r\n delete config.position\r\n}\r\n\r\nfunction setProps($element, props) {\r\n each(props, (function(key, value) {\r\n try {\r\n $element.css(key, isFunction(value) ? value() : value)\r\n } catch (e) {}\r\n }))\r\n}\r\nvar stop = function(element, jumpToEnd) {\r\n var $element = $(element);\r\n var queueData = getAnimQueueData($element);\r\n each(queueData, (function(_, animation) {\r\n animation.config.delay = 0;\r\n animation.config.duration = 0;\r\n animation.isSynchronous = true\r\n }));\r\n if (!isAnimating($element)) {\r\n shiftFromAnimationQueue($element, queueData)\r\n }\r\n var animation = $element.data(ANIM_DATA_KEY);\r\n if (animation) {\r\n animation.stop(jumpToEnd)\r\n }\r\n $element.removeData(ANIM_DATA_KEY);\r\n destroyAnimQueueData($element)\r\n};\r\nvar fx = {\r\n off: false,\r\n animationTypes: animationConfigurators,\r\n animate: animate,\r\n createAnimation: createAnimation,\r\n isAnimating: isAnimating,\r\n stop: stop,\r\n _simulatedTransitionEndDelay: 100\r\n};\r\nexport default fx;\r\n","/**\r\n * DevExtreme (esm/mobile/hide_callback.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var hideCallback = function() {\r\n var callbacks = [];\r\n return {\r\n add: function(callback) {\r\n if (!callbacks.includes(callback)) {\r\n callbacks.push(callback)\r\n }\r\n },\r\n remove: function(callback) {\r\n var indexOfCallback = callbacks.indexOf(callback);\r\n if (-1 !== indexOfCallback) {\r\n callbacks.splice(indexOfCallback, 1)\r\n }\r\n },\r\n fire: function() {\r\n var callback = callbacks.pop();\r\n var result = !!callback;\r\n if (result) {\r\n callback()\r\n }\r\n return result\r\n },\r\n hasCallback: function() {\r\n return callbacks.length > 0\r\n }\r\n }\r\n}();\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.widget.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Action from \"../../core/action\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n active,\r\n focus,\r\n hover,\r\n keyboard\r\n} from \"../../events/short\";\r\nimport {\r\n deferRender,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focusable as focusableSelector\r\n} from \"./selectors\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../../core/utils/version\";\r\nimport \"../../events/click\";\r\nimport \"../../events/core/emitter.feedback\";\r\nimport \"../../events/hover\";\r\n\r\nfunction setAttribute(name, value, target) {\r\n name = \"role\" === name || \"id\" === name ? name : \"aria-\".concat(name);\r\n value = isDefined(value) ? value.toString() : null;\r\n target.attr(name, value)\r\n}\r\nvar Widget = DOMComponent.inherit({\r\n _feedbackHideTimeout: 400,\r\n _feedbackShowTimeout: 30,\r\n _supportedKeys: () => ({}),\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n hoveredElement: null,\r\n isActive: false,\r\n disabled: false,\r\n visible: true,\r\n hint: void 0,\r\n activeStateEnabled: false,\r\n onContentReady: null,\r\n hoverStateEnabled: false,\r\n focusStateEnabled: false,\r\n tabIndex: 0,\r\n accessKey: void 0,\r\n onFocusIn: null,\r\n onFocusOut: null,\r\n onKeyboardHandled: null,\r\n ignoreParentReadOnly: false,\r\n useResizeObserver: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n var device = devices.real();\r\n var platform = device.platform;\r\n var version = device.version;\r\n return \"ios\" === platform && compareVersions(version, \"13.3\") <= 0\r\n },\r\n options: {\r\n useResizeObserver: false\r\n }\r\n }])\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initContentReadyAction()\r\n },\r\n _innerWidgetOptionChanged: function(innerWidget, args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n innerWidget && innerWidget.option(options);\r\n this._options.cache(args.name, options)\r\n },\r\n _bindInnerWidgetOptions(innerWidget, optionsContainer) {\r\n var syncOptions = () => this._options.silent(optionsContainer, extend({}, innerWidget.option()));\r\n syncOptions();\r\n innerWidget.on(\"optionChanged\", syncOptions)\r\n },\r\n _getAriaTarget() {\r\n return this._focusTarget()\r\n },\r\n _initContentReadyAction() {\r\n this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initMarkup() {\r\n var {\r\n disabled: disabled,\r\n visible: visible\r\n } = this.option();\r\n this.$element().addClass(\"dx-widget\");\r\n this._toggleDisabledState(disabled);\r\n this._toggleVisibility(visible);\r\n this._renderHint();\r\n this._isFocusable() && this._renderFocusTarget();\r\n this.callBase()\r\n },\r\n _render() {\r\n this.callBase();\r\n this._renderContent();\r\n this._renderFocusState();\r\n this._attachFeedbackEvents();\r\n this._attachHoverEvents();\r\n this._toggleIndependentState()\r\n },\r\n _renderHint() {\r\n var {\r\n hint: hint\r\n } = this.option();\r\n this.$element().attr(\"title\", hint || null)\r\n },\r\n _renderContent() {\r\n deferRender(() => !this._disposed ? this._renderContentImpl() : void 0).done(() => !this._disposed ? this._fireContentReadyAction() : void 0)\r\n },\r\n _renderContentImpl: noop,\r\n _fireContentReadyAction: deferRenderer((function() {\r\n return this._contentReadyAction()\r\n })),\r\n _dispose() {\r\n this._contentReadyAction = null;\r\n this._detachKeyboardEvents();\r\n this.callBase()\r\n },\r\n _resetActiveState() {\r\n this._toggleActiveState(this._eventBindingTarget(), false)\r\n },\r\n _clean() {\r\n this._cleanFocusState();\r\n this._resetActiveState();\r\n this.callBase();\r\n this.$element().empty()\r\n },\r\n _toggleVisibility(visible) {\r\n this.$element().toggleClass(\"dx-state-invisible\", !visible)\r\n },\r\n _renderFocusState() {\r\n this._attachKeyboardEvents();\r\n if (this._isFocusable()) {\r\n this._renderFocusTarget();\r\n this._attachFocusEvents();\r\n this._renderAccessKey()\r\n }\r\n },\r\n _renderAccessKey() {\r\n var $el = this._focusTarget();\r\n var {\r\n accessKey: accessKey\r\n } = this.option();\r\n $el.attr(\"accesskey\", accessKey)\r\n },\r\n _isFocusable() {\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n disabled: disabled\r\n } = this.option();\r\n return focusStateEnabled && !disabled\r\n },\r\n _eventBindingTarget() {\r\n return this.$element()\r\n },\r\n _focusTarget() {\r\n return this._getActiveElement()\r\n },\r\n _isFocusTarget: function(element) {\r\n var focusTargets = $(this._focusTarget()).toArray();\r\n return focusTargets.includes(element)\r\n },\r\n _findActiveTarget($element) {\r\n return $element.find(this._activeStateUnit).not(\".dx-state-disabled\")\r\n },\r\n _getActiveElement() {\r\n var activeElement = this._eventBindingTarget();\r\n if (this._activeStateUnit) {\r\n return this._findActiveTarget(activeElement)\r\n }\r\n return activeElement\r\n },\r\n _renderFocusTarget() {\r\n var {\r\n tabIndex: tabIndex\r\n } = this.option();\r\n this._focusTarget().attr(\"tabIndex\", tabIndex)\r\n },\r\n _keyboardEventBindingTarget() {\r\n return this._eventBindingTarget()\r\n },\r\n _refreshFocusEvent() {\r\n this._detachFocusEvents();\r\n this._attachFocusEvents()\r\n },\r\n _focusEventTarget() {\r\n return this._focusTarget()\r\n },\r\n _focusInHandler(event) {\r\n if (!event.isDefaultPrevented()) {\r\n this._createActionByOption(\"onFocusIn\", {\r\n beforeExecute: () => this._updateFocusState(event, true),\r\n excludeValidators: [\"readOnly\"]\r\n })({\r\n event: event\r\n })\r\n }\r\n },\r\n _focusOutHandler(event) {\r\n if (!event.isDefaultPrevented()) {\r\n this._createActionByOption(\"onFocusOut\", {\r\n beforeExecute: () => this._updateFocusState(event, false),\r\n excludeValidators: [\"readOnly\", \"disabled\"]\r\n })({\r\n event: event\r\n })\r\n }\r\n },\r\n _updateFocusState(_ref, isFocused) {\r\n var {\r\n target: target\r\n } = _ref;\r\n if (this._isFocusTarget(target)) {\r\n this._toggleFocusClass(isFocused, $(target))\r\n }\r\n },\r\n _toggleFocusClass(isFocused, $element) {\r\n var $focusTarget = $element && $element.length ? $element : this._focusTarget();\r\n $focusTarget.toggleClass(\"dx-state-focused\", isFocused)\r\n },\r\n _hasFocusClass(element) {\r\n var $focusTarget = $(element || this._focusTarget());\r\n return $focusTarget.hasClass(\"dx-state-focused\")\r\n },\r\n _isFocused() {\r\n return this._hasFocusClass()\r\n },\r\n _getKeyboardListeners: () => [],\r\n _attachKeyboardEvents() {\r\n this._detachKeyboardEvents();\r\n var {\r\n focusStateEnabled: focusStateEnabled,\r\n onKeyboardHandled: onKeyboardHandled\r\n } = this.option();\r\n var hasChildListeners = this._getKeyboardListeners().length;\r\n var hasKeyboardEventHandler = !!onKeyboardHandled;\r\n var shouldAttach = focusStateEnabled || hasChildListeners || hasKeyboardEventHandler;\r\n if (shouldAttach) {\r\n this._keyboardListenerId = keyboard.on(this._keyboardEventBindingTarget(), this._focusTarget(), opts => this._keyboardHandler(opts))\r\n }\r\n },\r\n _keyboardHandler(options, onlyChildProcessing) {\r\n if (!onlyChildProcessing) {\r\n var {\r\n originalEvent: originalEvent,\r\n keyName: keyName,\r\n which: which\r\n } = options;\r\n var keys = this._supportedKeys(originalEvent);\r\n var func = keys[keyName] || keys[which];\r\n if (void 0 !== func) {\r\n var handler = func.bind(this);\r\n var result = handler(originalEvent, options);\r\n if (!result) {\r\n return false\r\n }\r\n }\r\n }\r\n var keyboardListeners = this._getKeyboardListeners();\r\n var {\r\n onKeyboardHandled: onKeyboardHandled\r\n } = this.option();\r\n keyboardListeners.forEach(listener => listener && listener._keyboardHandler(options));\r\n onKeyboardHandled && onKeyboardHandled(options);\r\n return true\r\n },\r\n _refreshFocusState() {\r\n this._cleanFocusState();\r\n this._renderFocusState()\r\n },\r\n _cleanFocusState() {\r\n var $element = this._focusTarget();\r\n $element.removeAttr(\"tabIndex\");\r\n this._toggleFocusClass(false);\r\n this._detachFocusEvents();\r\n this._detachKeyboardEvents()\r\n },\r\n _detachKeyboardEvents() {\r\n keyboard.off(this._keyboardListenerId);\r\n this._keyboardListenerId = null\r\n },\r\n _attachHoverEvents() {\r\n var {\r\n hoverStateEnabled: hoverStateEnabled\r\n } = this.option();\r\n var selector = this._activeStateUnit;\r\n var $el = this._eventBindingTarget();\r\n hover.off($el, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n });\r\n if (hoverStateEnabled) {\r\n hover.on($el, new Action(_ref2 => {\r\n var {\r\n event: event,\r\n element: element\r\n } = _ref2;\r\n this._hoverStartHandler(event);\r\n this.option(\"hoveredElement\", $(element))\r\n }, {\r\n excludeValidators: [\"readOnly\"]\r\n }), event => {\r\n this.option(\"hoveredElement\", null);\r\n this._hoverEndHandler(event)\r\n }, {\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n },\r\n _attachFeedbackEvents() {\r\n var {\r\n activeStateEnabled: activeStateEnabled\r\n } = this.option();\r\n var selector = this._activeStateUnit;\r\n var $el = this._eventBindingTarget();\r\n active.off($el, {\r\n namespace: \"UIFeedback\",\r\n selector: selector\r\n });\r\n if (activeStateEnabled) {\r\n active.on($el, new Action(_ref3 => {\r\n var {\r\n event: event,\r\n element: element\r\n } = _ref3;\r\n return this._toggleActiveState($(element), true, event)\r\n }), new Action(_ref4 => {\r\n var {\r\n event: event,\r\n element: element\r\n } = _ref4;\r\n return this._toggleActiveState($(element), false, event)\r\n }, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }), {\r\n showTimeout: this._feedbackShowTimeout,\r\n hideTimeout: this._feedbackHideTimeout,\r\n selector: selector,\r\n namespace: \"UIFeedback\"\r\n })\r\n }\r\n },\r\n _detachFocusEvents() {\r\n var $el = this._focusEventTarget();\r\n focus.off($el, {\r\n namespace: \"\".concat(this.NAME, \"Focus\")\r\n })\r\n },\r\n _attachFocusEvents() {\r\n var $el = this._focusEventTarget();\r\n focus.on($el, e => this._focusInHandler(e), e => this._focusOutHandler(e), {\r\n namespace: \"\".concat(this.NAME, \"Focus\"),\r\n isFocusable: (index, el) => $(el).is(focusableSelector)\r\n })\r\n },\r\n _hoverStartHandler: noop,\r\n _hoverEndHandler: noop,\r\n _toggleActiveState($element, value) {\r\n this.option(\"isActive\", value);\r\n $element.toggleClass(\"dx-state-active\", value)\r\n },\r\n _updatedHover() {\r\n var hoveredElement = this._options.silent(\"hoveredElement\");\r\n this._hover(hoveredElement, hoveredElement)\r\n },\r\n _findHoverTarget($el) {\r\n return $el && $el.closest(this._activeStateUnit || this._eventBindingTarget())\r\n },\r\n _hover($el, $previous) {\r\n var {\r\n hoverStateEnabled: hoverStateEnabled,\r\n disabled: disabled,\r\n isActive: isActive\r\n } = this.option();\r\n $previous = this._findHoverTarget($previous);\r\n $previous && $previous.toggleClass(\"dx-state-hover\", false);\r\n if ($el && hoverStateEnabled && !disabled && !isActive) {\r\n var newHoveredElement = this._findHoverTarget($el);\r\n newHoveredElement && newHoveredElement.toggleClass(\"dx-state-hover\", true)\r\n }\r\n },\r\n _toggleDisabledState(value) {\r\n this.$element().toggleClass(\"dx-state-disabled\", Boolean(value));\r\n this.setAria(\"disabled\", value || void 0)\r\n },\r\n _toggleIndependentState() {\r\n this.$element().toggleClass(\"dx-state-independent\", this.option(\"ignoreParentReadOnly\"))\r\n },\r\n _setWidgetOption(widgetName, args) {\r\n if (!this[widgetName]) {\r\n return\r\n }\r\n if (isPlainObject(args[0])) {\r\n each(args[0], (option, value) => this._setWidgetOption(widgetName, [option, value]));\r\n return\r\n }\r\n var optionName = args[0];\r\n var value = args[1];\r\n if (1 === args.length) {\r\n value = this.option(optionName)\r\n }\r\n var widgetOptionMap = this[\"\".concat(widgetName, \"OptionMap\")];\r\n this[widgetName].option(widgetOptionMap ? widgetOptionMap(optionName) : optionName, value)\r\n },\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n switch (name) {\r\n case \"disabled\":\r\n this._toggleDisabledState(value);\r\n this._updatedHover();\r\n this._refreshFocusState();\r\n break;\r\n case \"hint\":\r\n this._renderHint();\r\n break;\r\n case \"ignoreParentReadOnly\":\r\n this._toggleIndependentState();\r\n break;\r\n case \"activeStateEnabled\":\r\n this._attachFeedbackEvents();\r\n break;\r\n case \"hoverStateEnabled\":\r\n this._attachHoverEvents();\r\n this._updatedHover();\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._refreshFocusState();\r\n break;\r\n case \"onFocusIn\":\r\n case \"onFocusOut\":\r\n case \"useResizeObserver\":\r\n break;\r\n case \"accessKey\":\r\n this._renderAccessKey();\r\n break;\r\n case \"hoveredElement\":\r\n this._hover(value, previousValue);\r\n break;\r\n case \"isActive\":\r\n this._updatedHover();\r\n break;\r\n case \"visible\":\r\n this._toggleVisibility(value);\r\n if (this._isVisibilityChangeSupported()) {\r\n this._checkVisibilityChanged(value ? \"shown\" : \"hiding\")\r\n }\r\n break;\r\n case \"onKeyboardHandled\":\r\n this._attachKeyboardEvents();\r\n break;\r\n case \"onContentReady\":\r\n this._initContentReadyAction();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _isVisible() {\r\n var {\r\n visible: visible\r\n } = this.option();\r\n return this.callBase() && visible\r\n },\r\n beginUpdate() {\r\n this._ready(false);\r\n this.callBase()\r\n },\r\n endUpdate() {\r\n this.callBase();\r\n if (this._initialized) {\r\n this._ready(true)\r\n }\r\n },\r\n _ready(value) {\r\n if (0 === arguments.length) {\r\n return this._isReady\r\n }\r\n this._isReady = value\r\n },\r\n setAria() {\r\n if (!isPlainObject(arguments.length <= 0 ? void 0 : arguments[0])) {\r\n setAttribute(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1], (arguments.length <= 2 ? void 0 : arguments[2]) || this._getAriaTarget())\r\n } else {\r\n var target = (arguments.length <= 1 ? void 0 : arguments[1]) || this._getAriaTarget();\r\n each(arguments.length <= 0 ? void 0 : arguments[0], (name, value) => setAttribute(name, value, target))\r\n }\r\n },\r\n isReady() {\r\n return this._ready()\r\n },\r\n repaint() {\r\n this._refresh()\r\n },\r\n focus() {\r\n focus.trigger(this._focusTarget())\r\n },\r\n registerKeyHandler(key, handler) {\r\n var currentKeys = this._supportedKeys();\r\n this._supportedKeys = () => extend(currentKeys, {\r\n [key]: handler\r\n })\r\n }\r\n});\r\nWidget.getOptionsFromContainer = _ref5 => {\r\n var {\r\n name: name,\r\n fullName: fullName,\r\n value: value\r\n } = _ref5;\r\n var options = {};\r\n if (name === fullName) {\r\n options = value\r\n } else {\r\n var option = fullName.split(\".\").pop();\r\n options[option] = value\r\n }\r\n return options\r\n};\r\nexport default Widget;\r\n","/**\r\n * DevExtreme (esm/ui/overlay/z_index.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nvar baseZIndex = 1500;\r\nvar zIndexStack = [];\r\nexport var base = ZIndex => {\r\n baseZIndex = ensureDefined(ZIndex, baseZIndex);\r\n return baseZIndex\r\n};\r\nexport var create = function() {\r\n var baseIndex = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : baseZIndex;\r\n var length = zIndexStack.length;\r\n var index = (length ? zIndexStack[length - 1] : baseIndex) + 1;\r\n zIndexStack.push(index);\r\n return index\r\n};\r\nexport var remove = zIndex => {\r\n var position = zIndexStack.indexOf(zIndex);\r\n if (position >= 0) {\r\n zIndexStack.splice(position, 1)\r\n }\r\n};\r\nexport var isLastZIndexInStack = zIndex => zIndexStack.length && zIndexStack[zIndexStack.length - 1] === zIndex;\r\nexport var clearStack = () => {\r\n zIndexStack = []\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/widget/swatch_container.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n value\r\n} from \"../../core/utils/view_port\";\r\nvar SWATCH_CONTAINER_CLASS_PREFIX = \"dx-swatch-\";\r\nvar getSwatchContainer = element => {\r\n var $element = $(element);\r\n var swatchContainer = $element.closest('[class^=\"'.concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"], [class*=\" ').concat(SWATCH_CONTAINER_CLASS_PREFIX, '\"]'));\r\n var viewport = value();\r\n if (!swatchContainer.length) {\r\n return viewport\r\n }\r\n var swatchClassRegex = new RegExp(\"(\\\\s|^)(\".concat(SWATCH_CONTAINER_CLASS_PREFIX, \".*?)(\\\\s|$)\"));\r\n var swatchClass = swatchContainer[0].className.match(swatchClassRegex)[2];\r\n var viewportSwatchContainer = viewport.children(\".\" + swatchClass);\r\n if (!viewportSwatchContainer.length) {\r\n viewportSwatchContainer = $(\"<div>\").addClass(swatchClass).appendTo(viewport)\r\n }\r\n return viewportSwatchContainer\r\n};\r\nexport default {\r\n getSwatchContainer: getSwatchContainer\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/overlay/overlay_position_controller.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDefined,\r\n isString,\r\n isWindow,\r\n isEvent\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n resetPosition,\r\n move,\r\n locate\r\n} from \"../../animation/translator\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport swatch from \"../widget/swatch_container\";\r\nvar window = getWindow();\r\nvar OVERLAY_POSITION_ALIASES = {\r\n top: {\r\n my: \"top center\",\r\n at: \"top center\"\r\n },\r\n bottom: {\r\n my: \"bottom center\",\r\n at: \"bottom center\"\r\n },\r\n right: {\r\n my: \"right center\",\r\n at: \"right center\"\r\n },\r\n left: {\r\n my: \"left center\",\r\n at: \"left center\"\r\n },\r\n center: {\r\n my: \"center\",\r\n at: \"center\"\r\n },\r\n \"right bottom\": {\r\n my: \"right bottom\",\r\n at: \"right bottom\"\r\n },\r\n \"right top\": {\r\n my: \"right top\",\r\n at: \"right top\"\r\n },\r\n \"left bottom\": {\r\n my: \"left bottom\",\r\n at: \"left bottom\"\r\n },\r\n \"left top\": {\r\n my: \"left top\",\r\n at: \"left top\"\r\n }\r\n};\r\nvar OVERLAY_DEFAULT_BOUNDARY_OFFSET = {\r\n h: 0,\r\n v: 0\r\n};\r\nclass OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n position: position,\r\n container: container,\r\n visualContainer: visualContainer,\r\n $root: $root,\r\n $content: $content,\r\n $wrapper: $wrapper,\r\n onPositioned: onPositioned,\r\n onVisualPositionChanged: onVisualPositionChanged,\r\n restorePosition: restorePosition,\r\n _fixWrapperPosition: _fixWrapperPosition\r\n } = _ref;\r\n this._props = {\r\n position: position,\r\n container: container,\r\n visualContainer: visualContainer,\r\n restorePosition: restorePosition,\r\n onPositioned: onPositioned,\r\n onVisualPositionChanged: onVisualPositionChanged,\r\n _fixWrapperPosition: _fixWrapperPosition\r\n };\r\n this._$root = $root;\r\n this._$content = $content;\r\n this._$wrapper = $wrapper;\r\n this._$markupContainer = void 0;\r\n this._$visualContainer = void 0;\r\n this._shouldRenderContentInitialPosition = true;\r\n this._visualPosition = void 0;\r\n this._initialPosition = void 0;\r\n this._previousVisualPosition = void 0;\r\n this.updateContainer(container);\r\n this.updatePosition(position);\r\n this.updateVisualContainer(visualContainer)\r\n }\r\n get $container() {\r\n this.updateContainer();\r\n return this._$markupContainer\r\n }\r\n get $visualContainer() {\r\n return this._$visualContainer\r\n }\r\n get position() {\r\n return this._position\r\n }\r\n set fixWrapperPosition(fixWrapperPosition) {\r\n this._props._fixWrapperPosition = fixWrapperPosition;\r\n this.styleWrapperPosition()\r\n }\r\n set restorePosition(restorePosition) {\r\n this._props.restorePosition = restorePosition\r\n }\r\n restorePositionOnNextRender(value) {\r\n this._shouldRenderContentInitialPosition = value || !this._visualPosition\r\n }\r\n openingHandled() {\r\n var shouldRestorePosition = this._props.restorePosition;\r\n this.restorePositionOnNextRender(shouldRestorePosition)\r\n }\r\n updatePosition(positionProp) {\r\n this._props.position = positionProp;\r\n this._position = this._normalizePosition(positionProp);\r\n this.updateVisualContainer()\r\n }\r\n updateContainer() {\r\n var containerProp = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.container;\r\n this._props.container = containerProp;\r\n this._$markupContainer = containerProp ? $(containerProp) : swatch.getSwatchContainer(this._$root);\r\n this.updateVisualContainer(this._props.visualContainer)\r\n }\r\n updateVisualContainer() {\r\n var visualContainer = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._props.visualContainer;\r\n this._props.visualContainer = visualContainer;\r\n this._$visualContainer = this._getVisualContainer()\r\n }\r\n detectVisualPositionChange(event) {\r\n this._updateVisualPositionValue();\r\n this._raisePositionedEvents(event)\r\n }\r\n positionContent() {\r\n if (this._shouldRenderContentInitialPosition) {\r\n this._renderContentInitialPosition()\r\n } else {\r\n move(this._$content, this._visualPosition);\r\n this.detectVisualPositionChange()\r\n }\r\n }\r\n positionWrapper() {\r\n if (this._$visualContainer) {\r\n positionUtils.setup(this._$wrapper, {\r\n my: \"top left\",\r\n at: \"top left\",\r\n of: this._$visualContainer\r\n })\r\n }\r\n }\r\n styleWrapperPosition() {\r\n var useFixed = isWindow(this.$visualContainer.get(0)) || this._props._fixWrapperPosition;\r\n var positionStyle = useFixed ? \"fixed\" : \"absolute\";\r\n this._$wrapper.css(\"position\", positionStyle)\r\n }\r\n _updateVisualPositionValue() {\r\n this._previousVisualPosition = this._visualPosition;\r\n this._visualPosition = locate(this._$content)\r\n }\r\n _renderContentInitialPosition() {\r\n this._renderBoundaryOffset();\r\n resetPosition(this._$content);\r\n var wrapperOverflow = this._$wrapper.css(\"overflow\");\r\n this._$wrapper.css(\"overflow\", \"hidden\");\r\n var resultPosition = positionUtils.setup(this._$content, this._position);\r\n this._$wrapper.css(\"overflow\", wrapperOverflow);\r\n this._initialPosition = resultPosition;\r\n this.detectVisualPositionChange()\r\n }\r\n _raisePositionedEvents(event) {\r\n var previousPosition = this._previousVisualPosition;\r\n var newPosition = this._visualPosition;\r\n var isVisualPositionChanged = (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.top) !== newPosition.top || (null === previousPosition || void 0 === previousPosition ? void 0 : previousPosition.left) !== newPosition.left;\r\n if (isVisualPositionChanged) {\r\n this._props.onVisualPositionChanged({\r\n previousPosition: previousPosition,\r\n position: newPosition,\r\n event: event\r\n })\r\n }\r\n this._props.onPositioned({\r\n position: this._initialPosition\r\n })\r\n }\r\n _renderBoundaryOffset() {\r\n var _this$_position;\r\n var boundaryOffset = null !== (_this$_position = this._position) && void 0 !== _this$_position ? _this$_position : {\r\n boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET\r\n };\r\n this._$content.css(\"margin\", \"\".concat(boundaryOffset.v, \"px \").concat(boundaryOffset.h, \"px\"))\r\n }\r\n _getVisualContainer() {\r\n var _this$_props$position, _this$_props$position2;\r\n var containerProp = this._props.container;\r\n var visualContainerProp = this._props.visualContainer;\r\n var positionOf = isEvent(null === (_this$_props$position = this._props.position) || void 0 === _this$_props$position ? void 0 : _this$_props$position.of) ? this._props.position.of.target : null === (_this$_props$position2 = this._props.position) || void 0 === _this$_props$position2 ? void 0 : _this$_props$position2.of;\r\n if (visualContainerProp) {\r\n return $(visualContainerProp)\r\n }\r\n if (containerProp) {\r\n return $(containerProp)\r\n }\r\n if (positionOf) {\r\n return $(positionOf)\r\n }\r\n return $(window)\r\n }\r\n _normalizePosition(positionProp) {\r\n var defaultPositionConfig = {\r\n boundaryOffset: OVERLAY_DEFAULT_BOUNDARY_OFFSET\r\n };\r\n if (isDefined(positionProp)) {\r\n return extend(true, {}, defaultPositionConfig, this._positionToObject(positionProp))\r\n } else {\r\n return defaultPositionConfig\r\n }\r\n }\r\n _positionToObject(position) {\r\n if (isString(position)) {\r\n return extend({}, OVERLAY_POSITION_ALIASES[position])\r\n }\r\n return position\r\n }\r\n}\r\nexport {\r\n OVERLAY_POSITION_ALIASES,\r\n OverlayPositionController\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/overlay/ui.overlay.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth,\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport fx from \"../../animation/fx\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport devices from \"../../core/devices\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../../core/templates/empty_template\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n contains,\r\n resetActiveElement\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport readyCallbacks from \"../../core/utils/ready_callbacks\";\r\nimport {\r\n isFunction,\r\n isObject,\r\n isPromise,\r\n isWindow\r\n} from \"../../core/utils/type\";\r\nimport {\r\n changeCallback\r\n} from \"../../core/utils/view_port\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport errors from \"../../core/errors\";\r\nimport uiErrors from \"../widget/ui.errors\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n move as dragEventMove\r\n} from \"../../events/drag\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n keyboard\r\n} from \"../../events/short\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n triggerHidingEvent,\r\n triggerResizeEvent,\r\n triggerShownEvent\r\n} from \"../../events/visibility_change\";\r\nimport {\r\n hideCallback as hideTopOverlayCallback\r\n} from \"../../mobile/hide_callback\";\r\nimport {\r\n tabbable\r\n} from \"../widget/selectors\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport * as zIndexPool from \"./z_index\";\r\nimport {\r\n OverlayPositionController,\r\n OVERLAY_POSITION_ALIASES\r\n} from \"./overlay_position_controller\";\r\nvar ready = readyCallbacks.add;\r\nvar window = getWindow();\r\nvar viewPortChanged = changeCallback;\r\nvar OVERLAY_CLASS = \"dx-overlay\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nvar OVERLAY_SHADER_CLASS = \"dx-overlay-shader\";\r\nvar INNER_OVERLAY_CLASS = \"dx-inner-overlay\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar RTL_DIRECTION_CLASS = \"dx-rtl\";\r\nvar OVERLAY_STACK = [];\r\nvar PREVENT_SAFARI_SCROLLING_CLASS = \"dx-prevent-safari-scrolling\";\r\nvar TAB_KEY = \"tab\";\r\nready(() => {\r\n eventsEngine.subscribeGlobal(domAdapter.getDocument(), pointerEvents.down, e => {\r\n for (var i = OVERLAY_STACK.length - 1; i >= 0; i--) {\r\n if (!OVERLAY_STACK[i]._proxiedDocumentDownHandler(e)) {\r\n return\r\n }\r\n }\r\n })\r\n});\r\nvar Overlay = Widget.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n escape: function() {\r\n this.hide()\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n activeStateEnabled: false,\r\n visible: false,\r\n deferRendering: true,\r\n shading: true,\r\n shadingColor: \"\",\r\n wrapperAttr: {},\r\n position: extend({}, OVERLAY_POSITION_ALIASES.center),\r\n width: \"80vw\",\r\n minWidth: null,\r\n maxWidth: null,\r\n height: \"80vh\",\r\n minHeight: null,\r\n maxHeight: null,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 300,\r\n from: {\r\n scale: .55\r\n }\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 300,\r\n from: {\r\n opacity: 1,\r\n scale: 1\r\n },\r\n to: {\r\n opacity: 0,\r\n scale: .55\r\n }\r\n }\r\n },\r\n closeOnOutsideClick: false,\r\n hideOnOutsideClick: false,\r\n copyRootClassesToWrapper: false,\r\n _ignoreCopyRootClassesToWrapperDeprecation: false,\r\n _ignoreElementAttrDeprecation: false,\r\n _ignorePreventScrollEventsDeprecation: false,\r\n onShowing: null,\r\n onShown: null,\r\n onHiding: null,\r\n onHidden: null,\r\n contentTemplate: \"content\",\r\n innerOverlay: false,\r\n restorePosition: true,\r\n container: void 0,\r\n visualContainer: void 0,\r\n hideTopOverlayHandler: () => {\r\n this.hide()\r\n },\r\n hideOnParentScroll: false,\r\n preventScrollEvents: true,\r\n onPositioned: null,\r\n propagateOutsideClick: false,\r\n ignoreChildEvents: true,\r\n _checkParentVisibility: true,\r\n _fixWrapperPosition: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n width: null,\r\n height: null,\r\n animation: null,\r\n _checkParentVisibility: false\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n animation: true\r\n })\r\n },\r\n $wrapper: function() {\r\n return this._$wrapper\r\n },\r\n _eventBindingTarget: function() {\r\n return this._$content\r\n },\r\n _setDeprecatedOptions() {\r\n this.callBase();\r\n extend(this._deprecatedOptions, {\r\n closeOnOutsideClick: {\r\n since: \"22.1\",\r\n alias: \"hideOnOutsideClick\"\r\n }\r\n })\r\n },\r\n ctor: function(element, options) {\r\n this.callBase(element, options);\r\n if (options) {\r\n if (options.copyRootClassesToWrapper && !options._ignoreCopyRootClassesToWrapperDeprecation) {\r\n this._logDeprecatedOptionWarning(\"copyRootClassesToWrapper\", {\r\n since: \"21.2\",\r\n message: 'Use the \"wrapperAttr\" option instead'\r\n })\r\n }\r\n if (options.elementAttr && !options._ignoreElementAttrDeprecation) {\r\n this._logDeprecatedOptionWarning(\"elementAttr\", {\r\n since: \"21.2\",\r\n message: 'Use the \"wrapperAttr\" option instead'\r\n })\r\n }\r\n if (\"preventScrollEvents\" in options && !options._ignorePreventScrollEventsDeprecation) {\r\n this._logDeprecatedPreventScrollEventsInfo()\r\n }\r\n }\r\n },\r\n _logDeprecatedPreventScrollEventsInfo() {\r\n this._logDeprecatedOptionWarning(\"preventScrollEvents\", {\r\n since: \"23.1\",\r\n message: \"If you enable this option, end-users may experience scrolling issues.\"\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initActions();\r\n this._initHideOnOutsideClickHandler();\r\n this._initTabTerminatorHandler();\r\n this._customWrapperClass = null;\r\n this._$wrapper = $(\"<div>\").addClass(OVERLAY_WRAPPER_CLASS);\r\n this._$content = $(\"<div>\").addClass(OVERLAY_CONTENT_CLASS);\r\n this._initInnerOverlayClass();\r\n var $element = this.$element();\r\n if (this.option(\"copyRootClassesToWrapper\")) {\r\n this._$wrapper.addClass($element.attr(\"class\"))\r\n }\r\n $element.addClass(OVERLAY_CLASS);\r\n this._$wrapper.attr(\"data-bind\", \"dxControlsDescendantBindings: true\");\r\n this._toggleViewPortSubscription(true);\r\n this._initHideTopOverlayHandler(this.option(\"hideTopOverlayHandler\"));\r\n this._parentsScrollSubscriptionInfo = {\r\n handler: e => {\r\n this._hideOnParentsScrollHandler(e)\r\n }\r\n };\r\n this.warnPositionAsFunction()\r\n },\r\n warnPositionAsFunction() {\r\n if (isFunction(this.option(\"position\"))) {\r\n errors.log(\"W0018\")\r\n }\r\n },\r\n _initInnerOverlayClass: function() {\r\n this._$content.toggleClass(INNER_OVERLAY_CLASS, this.option(\"innerOverlay\"))\r\n },\r\n _initHideTopOverlayHandler: function(handler) {\r\n this._hideTopOverlayHandler = handler\r\n },\r\n _getActionsList: function() {\r\n return [\"onShowing\", \"onShown\", \"onHiding\", \"onHidden\", \"onPositioned\", \"onVisualPositionChanged\"]\r\n },\r\n _initActions: function() {\r\n this._actions = {};\r\n var actions = this._getActionsList();\r\n each(actions, (_, action) => {\r\n this._actions[action] = this._createActionByOption(action, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n }) || noop\r\n })\r\n },\r\n _initHideOnOutsideClickHandler: function() {\r\n var _this = this;\r\n this._proxiedDocumentDownHandler = function() {\r\n return _this._documentDownHandler(...arguments)\r\n }\r\n },\r\n _initMarkup() {\r\n this.callBase();\r\n this._renderWrapperAttributes();\r\n this._initPositionController()\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._showAnimationProcessing) {\r\n this._stopAnimation()\r\n }\r\n var isAttachedTarget = $(window.document).is(e.target) || contains(window.document, e.target);\r\n var isInnerOverlay = $(e.target).closest(\".\".concat(INNER_OVERLAY_CLASS)).length;\r\n var outsideClick = isAttachedTarget && !isInnerOverlay && !(this._$content.is(e.target) || contains(this._$content.get(0), e.target));\r\n if (outsideClick && this._shouldHideOnOutsideClick(e)) {\r\n this._outsideClickHandler(e)\r\n }\r\n return this.option(\"propagateOutsideClick\")\r\n },\r\n _shouldHideOnOutsideClick: function(e) {\r\n var {\r\n hideOnOutsideClick: hideOnOutsideClick\r\n } = this.option();\r\n if (isFunction(hideOnOutsideClick)) {\r\n return hideOnOutsideClick(e)\r\n }\r\n return hideOnOutsideClick\r\n },\r\n _outsideClickHandler(e) {\r\n if (this.option(\"shading\")) {\r\n e.preventDefault()\r\n }\r\n this.hide()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n content: new EmptyTemplate\r\n });\r\n this.callBase()\r\n },\r\n _isTopOverlay: function() {\r\n var overlayStack = this._overlayStack();\r\n for (var i = overlayStack.length - 1; i >= 0; i--) {\r\n var tabbableElements = overlayStack[i]._findTabbableBounds();\r\n if (tabbableElements.first || tabbableElements.last) {\r\n return overlayStack[i] === this\r\n }\r\n }\r\n return false\r\n },\r\n _overlayStack: function() {\r\n return OVERLAY_STACK\r\n },\r\n _zIndexInitValue: function() {\r\n return Overlay.baseZIndex()\r\n },\r\n _toggleViewPortSubscription: function(toggle) {\r\n var _this2 = this;\r\n viewPortChanged.remove(this._viewPortChangeHandle);\r\n if (toggle) {\r\n this._viewPortChangeHandle = function() {\r\n _this2._viewPortChangeHandler(...arguments)\r\n };\r\n viewPortChanged.add(this._viewPortChangeHandle)\r\n }\r\n },\r\n _viewPortChangeHandler: function() {\r\n this._positionController.updateContainer(this.option(\"container\"));\r\n this._refresh()\r\n },\r\n _renderWrapperAttributes() {\r\n var {\r\n wrapperAttr: wrapperAttr\r\n } = this.option();\r\n var attributes = extend({}, wrapperAttr);\r\n var classNames = attributes.class;\r\n delete attributes.class;\r\n this.$wrapper().attr(attributes).removeClass(this._customWrapperClass).addClass(classNames);\r\n this._customWrapperClass = classNames\r\n },\r\n _renderVisibilityAnimate: function(visible) {\r\n this._stopAnimation();\r\n return visible ? this._show() : this._hide()\r\n },\r\n _getAnimationConfig: function() {\r\n return this._getOptionValue(\"animation\", this)\r\n },\r\n _toggleBodyScroll: noop,\r\n _animateShowing: function() {\r\n var _this$_getAnimationCo, _showAnimation$start, _showAnimation$comple, _this3 = this;\r\n var animation = null !== (_this$_getAnimationCo = this._getAnimationConfig()) && void 0 !== _this$_getAnimationCo ? _this$_getAnimationCo : {};\r\n var showAnimation = this._normalizeAnimation(animation.show, \"to\");\r\n var startShowAnimation = null !== (_showAnimation$start = null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.start) && void 0 !== _showAnimation$start ? _showAnimation$start : noop;\r\n var completeShowAnimation = null !== (_showAnimation$comple = null === showAnimation || void 0 === showAnimation ? void 0 : showAnimation.complete) && void 0 !== _showAnimation$comple ? _showAnimation$comple : noop;\r\n this._animate(showAnimation, (function() {\r\n if (_this3._isAnimationPaused) {\r\n return\r\n }\r\n if (_this3.option(\"focusStateEnabled\")) {\r\n eventsEngine.trigger(_this3._focusTarget(), \"focus\")\r\n }\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n completeShowAnimation.call(_this3, ...args);\r\n _this3._showAnimationProcessing = false;\r\n _this3._isHidden = false;\r\n _this3._actions.onShown();\r\n _this3._toggleSafariScrolling();\r\n _this3._showingDeferred.resolve()\r\n }), (function() {\r\n if (_this3._isAnimationPaused) {\r\n return\r\n }\r\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\r\n args[_key2] = arguments[_key2]\r\n }\r\n startShowAnimation.call(_this3, ...args);\r\n _this3._showAnimationProcessing = true\r\n }))\r\n },\r\n _processShowingHidingCancel: function(cancelArg, applyFunction, cancelFunction) {\r\n if (isPromise(cancelArg)) {\r\n cancelArg.then(shouldCancel => {\r\n if (shouldCancel) {\r\n cancelFunction()\r\n } else {\r\n applyFunction()\r\n }\r\n }).catch(() => applyFunction())\r\n } else {\r\n cancelArg ? cancelFunction() : applyFunction()\r\n }\r\n },\r\n _show: function() {\r\n this._showingDeferred = new Deferred;\r\n this._parentHidden = this._isParentHidden();\r\n this._showingDeferred.done(() => {\r\n delete this._parentHidden\r\n });\r\n if (this._parentHidden) {\r\n this._isHidden = true;\r\n return this._showingDeferred.resolve()\r\n }\r\n if (this._currentVisible) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n this._currentVisible = true;\r\n if (this._isHidingActionCanceled) {\r\n delete this._isHidingActionCanceled;\r\n this._showingDeferred.reject()\r\n } else {\r\n var show = () => {\r\n this._toggleBodyScroll(this.option(\"enableBodyScroll\"));\r\n this._stopAnimation();\r\n this._toggleVisibility(true);\r\n this._$content.css(\"visibility\", \"hidden\");\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, false);\r\n this._updateZIndexStackPosition(true);\r\n this._positionController.openingHandled();\r\n this._renderContent();\r\n var showingArgs = {\r\n cancel: false\r\n };\r\n this._actions.onShowing(showingArgs);\r\n this._processShowingHidingCancel(showingArgs.cancel, () => {\r\n this._$content.css(\"visibility\", \"\");\r\n this._renderVisibility(true);\r\n this._animateShowing()\r\n }, () => {\r\n this._toggleVisibility(false);\r\n this._$content.css(\"visibility\", \"\");\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, true);\r\n this._isShowingActionCanceled = true;\r\n this._moveFromContainer();\r\n this.option(\"visible\", false);\r\n this._showingDeferred.resolve()\r\n })\r\n };\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n this._stopShowTimer();\r\n this._asyncShowTimeout = setTimeout(show)\r\n } else {\r\n show()\r\n }\r\n }\r\n return this._showingDeferred.promise()\r\n },\r\n _normalizeAnimation: function(showHideConfig, direction) {\r\n if (showHideConfig) {\r\n showHideConfig = extend({\r\n type: \"slide\",\r\n skipElementInitialStyles: true\r\n }, showHideConfig);\r\n if (isObject(showHideConfig[direction])) {\r\n extend(showHideConfig[direction], {\r\n position: this._positionController.position\r\n })\r\n }\r\n }\r\n return showHideConfig\r\n },\r\n _animateHiding: function() {\r\n var _this$_getAnimationCo2, _hideAnimation$start, _hideAnimation$comple, _this4 = this;\r\n var animation = null !== (_this$_getAnimationCo2 = this._getAnimationConfig()) && void 0 !== _this$_getAnimationCo2 ? _this$_getAnimationCo2 : {};\r\n var hideAnimation = this._normalizeAnimation(animation.hide, \"from\");\r\n var startHideAnimation = null !== (_hideAnimation$start = null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.start) && void 0 !== _hideAnimation$start ? _hideAnimation$start : noop;\r\n var completeHideAnimation = null !== (_hideAnimation$comple = null === hideAnimation || void 0 === hideAnimation ? void 0 : hideAnimation.complete) && void 0 !== _hideAnimation$comple ? _hideAnimation$comple : noop;\r\n this._animate(hideAnimation, (function() {\r\n var _this4$_actions;\r\n _this4._$content.css(\"pointerEvents\", \"\");\r\n _this4._renderVisibility(false);\r\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\r\n args[_key3] = arguments[_key3]\r\n }\r\n completeHideAnimation.call(_this4, ...args);\r\n _this4._hideAnimationProcessing = false;\r\n null === (_this4$_actions = _this4._actions) || void 0 === _this4$_actions ? void 0 : _this4$_actions.onHidden();\r\n _this4._hidingDeferred.resolve()\r\n }), (function() {\r\n _this4._$content.css(\"pointerEvents\", \"none\");\r\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\r\n args[_key4] = arguments[_key4]\r\n }\r\n startHideAnimation.call(_this4, ...args);\r\n _this4._hideAnimationProcessing = true\r\n }))\r\n },\r\n _hide: function() {\r\n if (!this._currentVisible) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n this._currentVisible = false;\r\n this._hidingDeferred = new Deferred;\r\n var hidingArgs = {\r\n cancel: false\r\n };\r\n if (this._isShowingActionCanceled) {\r\n delete this._isShowingActionCanceled;\r\n this._hidingDeferred.reject()\r\n } else {\r\n this._actions.onHiding(hidingArgs);\r\n this._toggleSafariScrolling();\r\n this._toggleBodyScroll(true);\r\n this._processShowingHidingCancel(hidingArgs.cancel, () => {\r\n this._forceFocusLost();\r\n this._toggleShading(false);\r\n this._toggleSubscriptions(false);\r\n this._stopShowTimer();\r\n this._animateHiding()\r\n }, () => {\r\n this._isHidingActionCanceled = true;\r\n this.option(\"visible\", true);\r\n this._hidingDeferred.resolve()\r\n })\r\n }\r\n return this._hidingDeferred.promise()\r\n },\r\n _forceFocusLost: function() {\r\n var activeElement = domAdapter.getActiveElement();\r\n var shouldResetActiveElement = !!this._$content.find(activeElement).length;\r\n if (shouldResetActiveElement) {\r\n resetActiveElement()\r\n }\r\n },\r\n _animate: function(animation, completeCallback, startCallback) {\r\n if (animation) {\r\n startCallback = startCallback || animation.start || noop;\r\n fx.animate(this._$content, extend({}, animation, {\r\n start: startCallback,\r\n complete: completeCallback\r\n }))\r\n } else {\r\n completeCallback()\r\n }\r\n },\r\n _stopAnimation: function() {\r\n fx.stop(this._$content, true)\r\n },\r\n _renderVisibility: function(visible) {\r\n if (visible && this._isParentHidden()) {\r\n return\r\n }\r\n this._currentVisible = visible;\r\n this._stopAnimation();\r\n if (!visible) {\r\n triggerHidingEvent(this._$content)\r\n }\r\n if (visible) {\r\n this._checkContainerExists();\r\n this._moveToContainer();\r\n this._renderGeometry();\r\n triggerShownEvent(this._$content);\r\n triggerResizeEvent(this._$content)\r\n } else {\r\n this._toggleVisibility(visible);\r\n this._$content.toggleClass(INVISIBLE_STATE_CLASS, !visible);\r\n this._updateZIndexStackPosition(visible);\r\n this._moveFromContainer()\r\n }\r\n this._toggleShading(visible);\r\n this._toggleSubscriptions(visible)\r\n },\r\n _updateZIndexStackPosition: function(pushToStack) {\r\n var overlayStack = this._overlayStack();\r\n var index = overlayStack.indexOf(this);\r\n if (pushToStack) {\r\n if (-1 === index) {\r\n this._zIndex = zIndexPool.create(this._zIndexInitValue());\r\n overlayStack.push(this)\r\n }\r\n this._$wrapper.css(\"zIndex\", this._zIndex);\r\n this._$content.css(\"zIndex\", this._zIndex)\r\n } else if (-1 !== index) {\r\n overlayStack.splice(index, 1);\r\n zIndexPool.remove(this._zIndex)\r\n }\r\n },\r\n _toggleShading: function(visible) {\r\n this._$wrapper.toggleClass(OVERLAY_SHADER_CLASS, visible && this.option(\"shading\"));\r\n this._$wrapper.css(\"backgroundColor\", this.option(\"shading\") ? this.option(\"shadingColor\") : \"\");\r\n this._toggleTabTerminator(visible && this.option(\"shading\"))\r\n },\r\n _initTabTerminatorHandler: function() {\r\n var _this5 = this;\r\n this._proxiedTabTerminatorHandler = function() {\r\n _this5._tabKeyHandler(...arguments)\r\n }\r\n },\r\n _toggleTabTerminator: function(enabled) {\r\n var eventName = addNamespace(\"keydown\", this.NAME);\r\n if (enabled) {\r\n eventsEngine.on(domAdapter.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n } else {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, this._proxiedTabTerminatorHandler)\r\n }\r\n },\r\n _findTabbableBounds: function() {\r\n var $elements = this._$wrapper.find(\"*\");\r\n var elementsCount = $elements.length - 1;\r\n var result = {\r\n first: null,\r\n last: null\r\n };\r\n for (var i = 0; i <= elementsCount; i++) {\r\n if (!result.first && $elements.eq(i).is(tabbable)) {\r\n result.first = $elements.eq(i)\r\n }\r\n if (!result.last && $elements.eq(elementsCount - i).is(tabbable)) {\r\n result.last = $elements.eq(elementsCount - i)\r\n }\r\n if (result.first && result.last) {\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _tabKeyHandler: function(e) {\r\n if (normalizeKeyName(e) !== TAB_KEY || !this._isTopOverlay()) {\r\n return\r\n }\r\n var tabbableElements = this._findTabbableBounds();\r\n var $firstTabbable = tabbableElements.first;\r\n var $lastTabbable = tabbableElements.last;\r\n var isTabOnLast = !e.shiftKey && e.target === $lastTabbable.get(0);\r\n var isShiftTabOnFirst = e.shiftKey && e.target === $firstTabbable.get(0);\r\n var isEmptyTabList = 0 === tabbableElements.length;\r\n var isOutsideTarget = !contains(this._$wrapper.get(0), e.target);\r\n if (isTabOnLast || isShiftTabOnFirst || isEmptyTabList || isOutsideTarget) {\r\n e.preventDefault();\r\n var $focusElement = e.shiftKey ? $lastTabbable : $firstTabbable;\r\n eventsEngine.trigger($focusElement, \"focusin\");\r\n eventsEngine.trigger($focusElement, \"focus\")\r\n }\r\n },\r\n _toggleSubscriptions: function(enabled) {\r\n if (hasWindow()) {\r\n this._toggleHideTopOverlayCallback(enabled);\r\n this._toggleHideOnParentsScrollSubscription(enabled)\r\n }\r\n },\r\n _toggleHideTopOverlayCallback: function(subscribe) {\r\n if (!this._hideTopOverlayHandler) {\r\n return\r\n }\r\n if (subscribe) {\r\n hideTopOverlayCallback.add(this._hideTopOverlayHandler)\r\n } else {\r\n hideTopOverlayCallback.remove(this._hideTopOverlayHandler)\r\n }\r\n },\r\n _toggleHideOnParentsScrollSubscription: function(needSubscribe) {\r\n var _this$_parentsScrollS;\r\n var scrollEvent = addNamespace(\"scroll\", this.NAME);\r\n var {\r\n prevTargets: prevTargets,\r\n handler: handler\r\n } = null !== (_this$_parentsScrollS = this._parentsScrollSubscriptionInfo) && void 0 !== _this$_parentsScrollS ? _this$_parentsScrollS : {};\r\n eventsEngine.off(prevTargets, scrollEvent, handler);\r\n var closeOnScroll = this.option(\"hideOnParentScroll\");\r\n if (needSubscribe && closeOnScroll) {\r\n var $parents = this._hideOnParentScrollTarget().parents();\r\n if (\"desktop\" === devices.real().deviceType) {\r\n $parents = $parents.add(window)\r\n }\r\n eventsEngine.on($parents, scrollEvent, handler);\r\n this._parentsScrollSubscriptionInfo.prevTargets = $parents\r\n }\r\n },\r\n _hideOnParentsScrollHandler: function(e) {\r\n var closeHandled = false;\r\n var closeOnScroll = this.option(\"hideOnParentScroll\");\r\n if (isFunction(closeOnScroll)) {\r\n closeHandled = closeOnScroll(e)\r\n }\r\n if (!closeHandled && !this._showAnimationProcessing) {\r\n this.hide()\r\n }\r\n },\r\n _hideOnParentScrollTarget: function() {\r\n return this._$wrapper\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._appendContentToElement();\r\n this._renderVisibilityAnimate(this.option(\"visible\"))\r\n },\r\n _appendContentToElement: function() {\r\n if (!this._$content.parent().is(this.$element())) {\r\n this._$content.appendTo(this.$element())\r\n }\r\n },\r\n _renderContent: function() {\r\n var shouldDeferRendering = !this._currentVisible && this.option(\"deferRendering\");\r\n var isParentHidden = this.option(\"visible\") && this._isParentHidden();\r\n if (isParentHidden) {\r\n this._isHidden = true;\r\n return\r\n }\r\n if (this._contentAlreadyRendered || shouldDeferRendering) {\r\n return\r\n }\r\n this._contentAlreadyRendered = true;\r\n this._appendContentToElement();\r\n this.callBase()\r\n },\r\n _isParentHidden: function() {\r\n if (!this.option(\"_checkParentVisibility\")) {\r\n return false\r\n }\r\n if (void 0 !== this._parentHidden) {\r\n return this._parentHidden\r\n }\r\n var $parent = this.$element().parent();\r\n if ($parent.is(\":visible\")) {\r\n return false\r\n }\r\n var isHidden = false;\r\n $parent.add($parent.parents()).each((function() {\r\n var $element = $(this);\r\n if (\"none\" === $element.css(\"display\")) {\r\n isHidden = true;\r\n return false\r\n }\r\n }));\r\n return isHidden || !domAdapter.getBody().contains($parent.get(0))\r\n },\r\n _renderContentImpl: function() {\r\n var whenContentRendered = new Deferred;\r\n var contentTemplateOption = this.option(\"contentTemplate\");\r\n var contentTemplate = this._getTemplate(contentTemplateOption);\r\n var transclude = this._templateManager.anonymousTemplateName === contentTemplateOption;\r\n contentTemplate && contentTemplate.render({\r\n container: getPublicElement(this.$content()),\r\n noModel: true,\r\n transclude: transclude,\r\n onRendered: () => {\r\n whenContentRendered.resolve();\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n this._dimensionChanged()\r\n }\r\n }\r\n });\r\n this._toggleWrapperScrollEventsSubscription(this.option(\"preventScrollEvents\"));\r\n whenContentRendered.done(() => {\r\n if (this.option(\"visible\")) {\r\n this._moveToContainer()\r\n }\r\n });\r\n return whenContentRendered.promise()\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n container: container,\r\n visualContainer: visualContainer,\r\n _fixWrapperPosition: _fixWrapperPosition,\r\n restorePosition: restorePosition\r\n } = this.option();\r\n return {\r\n container: container,\r\n visualContainer: visualContainer,\r\n $root: this.$element(),\r\n $content: this._$content,\r\n $wrapper: this._$wrapper,\r\n onPositioned: this._actions.onPositioned,\r\n onVisualPositionChanged: this._actions.onVisualPositionChanged,\r\n restorePosition: restorePosition,\r\n _fixWrapperPosition: _fixWrapperPosition\r\n }\r\n },\r\n _initPositionController() {\r\n this._positionController = new OverlayPositionController(this._getPositionControllerConfig())\r\n },\r\n _toggleWrapperScrollEventsSubscription: function(enabled) {\r\n var eventName = addNamespace(dragEventMove, this.NAME);\r\n eventsEngine.off(this._$wrapper, eventName);\r\n if (enabled) {\r\n eventsEngine.on(this._$wrapper, eventName, {\r\n validate: function() {\r\n return true\r\n },\r\n getDirection: function() {\r\n return \"both\"\r\n },\r\n _toggleGestureCover: function(toggle) {\r\n if (!toggle) {\r\n this._toggleGestureCoverImpl(toggle)\r\n }\r\n },\r\n _clearSelection: noop,\r\n isNative: true\r\n }, e => {\r\n var originalEvent = e.originalEvent.originalEvent;\r\n var {\r\n type: type\r\n } = originalEvent || {};\r\n var isWheel = \"wheel\" === type;\r\n var isMouseMove = \"mousemove\" === type;\r\n var isScrollByWheel = isWheel && !isCommandKeyPressed(e);\r\n e._cancelPreventDefault = true;\r\n if (originalEvent && false !== e.cancelable && (!isMouseMove && !isWheel || isScrollByWheel)) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n },\r\n _moveFromContainer: function() {\r\n this._$content.appendTo(this.$element());\r\n this._$wrapper.detach()\r\n },\r\n _checkContainerExists() {\r\n var $wrapperContainer = this._positionController.$container;\r\n if (void 0 === $wrapperContainer) {\r\n return\r\n }\r\n var containerExists = $wrapperContainer.length > 0;\r\n if (!containerExists) {\r\n uiErrors.log(\"W1021\", this.NAME)\r\n }\r\n },\r\n _moveToContainer: function() {\r\n var $wrapperContainer = this._positionController.$container;\r\n this._$wrapper.appendTo($wrapperContainer);\r\n this._$content.appendTo(this._$wrapper)\r\n },\r\n _renderGeometry: function(options) {\r\n var {\r\n visible: visible\r\n } = this.option();\r\n if (visible && hasWindow()) {\r\n this._stopAnimation();\r\n this._renderGeometryImpl()\r\n }\r\n },\r\n _renderGeometryImpl: function() {\r\n this._positionController.updatePosition(this._getOptionValue(\"position\"));\r\n this._renderWrapper();\r\n this._renderDimensions();\r\n this._renderPosition()\r\n },\r\n _renderPosition() {\r\n this._positionController.positionContent()\r\n },\r\n _isAllWindowCovered: function() {\r\n return isWindow(this._positionController.$visualContainer.get(0)) && this.option(\"shading\")\r\n },\r\n _toggleSafariScrolling: function() {\r\n var visible = this.option(\"visible\");\r\n var $body = $(domAdapter.getBody());\r\n var isIosSafari = \"ios\" === devices.real().platform && browser.safari;\r\n var isAllWindowCovered = this._isAllWindowCovered();\r\n var isScrollingPrevented = $body.hasClass(PREVENT_SAFARI_SCROLLING_CLASS);\r\n var shouldPreventScrolling = !isScrollingPrevented && visible && isAllWindowCovered;\r\n var shouldEnableScrolling = isScrollingPrevented && (!visible || !isAllWindowCovered || this._disposed);\r\n if (isIosSafari) {\r\n if (shouldEnableScrolling) {\r\n $body.removeClass(PREVENT_SAFARI_SCROLLING_CLASS);\r\n window.scrollTo(0, this._cachedBodyScrollTop);\r\n this._cachedBodyScrollTop = void 0\r\n } else if (shouldPreventScrolling) {\r\n this._cachedBodyScrollTop = window.pageYOffset;\r\n $body.addClass(PREVENT_SAFARI_SCROLLING_CLASS)\r\n }\r\n }\r\n },\r\n _renderWrapper: function() {\r\n this._positionController.styleWrapperPosition();\r\n this._renderWrapperDimensions();\r\n this._positionController.positionWrapper()\r\n },\r\n _renderWrapperDimensions: function() {\r\n var $visualContainer = this._positionController.$visualContainer;\r\n var documentElement = domAdapter.getDocumentElement();\r\n var isVisualContainerWindow = isWindow($visualContainer.get(0));\r\n var wrapperWidth = isVisualContainerWindow ? documentElement.clientWidth : getOuterWidth($visualContainer);\r\n var wrapperHeight = isVisualContainerWindow ? window.innerHeight : getOuterHeight($visualContainer);\r\n this._$wrapper.css({\r\n width: wrapperWidth,\r\n height: wrapperHeight\r\n })\r\n },\r\n _renderDimensions: function() {\r\n var content = this._$content.get(0);\r\n this._$content.css({\r\n minWidth: this._getOptionValue(\"minWidth\", content),\r\n maxWidth: this._getOptionValue(\"maxWidth\", content),\r\n minHeight: this._getOptionValue(\"minHeight\", content),\r\n maxHeight: this._getOptionValue(\"maxHeight\", content),\r\n width: this._getOptionValue(\"width\", content),\r\n height: this._getOptionValue(\"height\", content)\r\n })\r\n },\r\n _focusTarget: function() {\r\n return this._$content\r\n },\r\n _attachKeyboardEvents: function() {\r\n this._keyboardListenerId = keyboard.on(this._$content, null, opts => this._keyboardHandler(opts))\r\n },\r\n _keyboardHandler: function(options) {\r\n var e = options.originalEvent;\r\n var $target = $(e.target);\r\n if ($target.is(this._$content) || !this.option(\"ignoreChildEvents\")) {\r\n this.callBase(...arguments)\r\n }\r\n },\r\n _isVisible: function() {\r\n return this.option(\"visible\")\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n if (this.option(\"visible\")) {\r\n this._renderVisibilityAnimate(visible)\r\n }\r\n } else {\r\n this._renderVisibilityAnimate(visible)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderGeometry()\r\n },\r\n _clean: function() {\r\n var options = this.option();\r\n if (!this._contentAlreadyRendered && !options.isRenovated) {\r\n this.$content().empty()\r\n }\r\n this._renderVisibility(false);\r\n this._stopShowTimer();\r\n this._cleanFocusState()\r\n },\r\n _stopShowTimer() {\r\n if (this._asyncShowTimeout) {\r\n clearTimeout(this._asyncShowTimeout)\r\n }\r\n this._asyncShowTimeout = null\r\n },\r\n _dispose: function() {\r\n fx.stop(this._$content, false);\r\n clearTimeout(this._deferShowTimer);\r\n this._toggleViewPortSubscription(false);\r\n this._toggleSubscriptions(false);\r\n this._updateZIndexStackPosition(false);\r\n this._toggleTabTerminator(false);\r\n this._actions = null;\r\n this._parentsScrollSubscriptionInfo = null;\r\n this.callBase();\r\n this._toggleSafariScrolling();\r\n this.option(\"visible\") && zIndexPool.remove(this._zIndex);\r\n this._$wrapper.remove();\r\n this._$content.remove()\r\n },\r\n _toggleRTLDirection: function(rtl) {\r\n this._$content.toggleClass(RTL_DIRECTION_CLASS, rtl)\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n value: value,\r\n name: name\r\n } = args;\r\n if (this._getActionsList().includes(name)) {\r\n this._initActions();\r\n return\r\n }\r\n switch (name) {\r\n case \"animation\":\r\n break;\r\n case \"shading\":\r\n this._toggleShading(this.option(\"visible\"));\r\n this._toggleSafariScrolling();\r\n break;\r\n case \"shadingColor\":\r\n this._toggleShading(this.option(\"visible\"));\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this._renderGeometry();\r\n break;\r\n case \"minWidth\":\r\n case \"maxWidth\":\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n this._renderGeometry();\r\n break;\r\n case \"position\":\r\n this._positionController.updatePosition(this.option(\"position\"));\r\n this._positionController.restorePositionOnNextRender(true);\r\n this._renderGeometry();\r\n this._toggleSafariScrolling();\r\n break;\r\n case \"visible\":\r\n this._renderVisibilityAnimate(value).done(() => {\r\n var _this$_animateDeferre;\r\n return null === (_this$_animateDeferre = this._animateDeferred) || void 0 === _this$_animateDeferre ? void 0 : _this$_animateDeferre.resolveWith(this)\r\n }).fail(() => {\r\n var _this$_animateDeferre2;\r\n return null === (_this$_animateDeferre2 = this._animateDeferred) || void 0 === _this$_animateDeferre2 ? void 0 : _this$_animateDeferre2.reject()\r\n });\r\n break;\r\n case \"container\":\r\n this._positionController.updateContainer(value);\r\n this._invalidate();\r\n this._toggleSafariScrolling();\r\n break;\r\n case \"visualContainer\":\r\n this._positionController.updateVisualContainer(value);\r\n this._renderWrapper();\r\n this._toggleSafariScrolling();\r\n break;\r\n case \"innerOverlay\":\r\n this._initInnerOverlayClass();\r\n break;\r\n case \"deferRendering\":\r\n case \"contentTemplate\":\r\n this._contentAlreadyRendered = false;\r\n this._clean();\r\n this._invalidate();\r\n break;\r\n case \"hideTopOverlayHandler\":\r\n this._toggleHideTopOverlayCallback(false);\r\n this._initHideTopOverlayHandler(value);\r\n this._toggleHideTopOverlayCallback(this.option(\"visible\"));\r\n break;\r\n case \"hideOnParentScroll\":\r\n this._toggleHideOnParentsScrollSubscription(this.option(\"visible\"));\r\n break;\r\n case \"closeOnOutsideClick\":\r\n case \"hideOnOutsideClick\":\r\n case \"propagateOutsideClick\":\r\n break;\r\n case \"rtlEnabled\":\r\n this._contentAlreadyRendered = false;\r\n this.callBase(args);\r\n break;\r\n case \"_fixWrapperPosition\":\r\n this._positionController.fixWrapperPosition = value;\r\n break;\r\n case \"wrapperAttr\":\r\n this._renderWrapperAttributes();\r\n break;\r\n case \"restorePosition\":\r\n this._positionController.restorePosition = value;\r\n break;\r\n case \"preventScrollEvents\":\r\n this._logDeprecatedPreventScrollEventsInfo();\r\n this._toggleWrapperScrollEventsSubscription(value);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n toggle: function(showing) {\r\n showing = void 0 === showing ? !this.option(\"visible\") : showing;\r\n var result = new Deferred;\r\n if (showing === this.option(\"visible\")) {\r\n return result.resolveWith(this, [showing]).promise()\r\n }\r\n var animateDeferred = new Deferred;\r\n this._animateDeferred = animateDeferred;\r\n this.option(\"visible\", showing);\r\n animateDeferred.promise().done(() => {\r\n delete this._animateDeferred;\r\n result.resolveWith(this, [this.option(\"visible\")])\r\n }).fail(() => {\r\n delete this._animateDeferred;\r\n result.reject()\r\n });\r\n return result.promise()\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n show: function() {\r\n return this.toggle(true)\r\n },\r\n hide: function() {\r\n return this.toggle(false)\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content)\r\n },\r\n repaint: function() {\r\n if (this._contentAlreadyRendered) {\r\n this._positionController.restorePositionOnNextRender(true);\r\n this._renderGeometry({\r\n forceStopAnimation: true\r\n });\r\n triggerResizeEvent(this._$content)\r\n } else {\r\n this.callBase()\r\n }\r\n }\r\n});\r\nOverlay.baseZIndex = zIndex => zIndexPool.base(zIndex);\r\nregisterComponent(\"dxOverlay\", Overlay);\r\nexport default Overlay;\r\n","/**\r\n * DevExtreme (esm/ui/collection/item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n attachInstanceToElement,\r\n getInstanceByElement\r\n} from \"../../core/utils/public_component\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar forcibleWatcher = function(watchMethod, fn, callback) {\r\n var filteredCallback = function(value) {\r\n if (oldValue !== value) {\r\n callback(value, oldValue);\r\n oldValue = value\r\n }\r\n };\r\n var oldValue;\r\n return {\r\n dispose: watchMethod(fn, filteredCallback),\r\n force: function() {\r\n filteredCallback(fn())\r\n }\r\n }\r\n};\r\nvar CollectionItem = Class.inherit({\r\n ctor: function($element, options, rawData) {\r\n this._$element = $element;\r\n this._options = options;\r\n this._rawData = rawData;\r\n attachInstanceToElement($element, this, this._dispose);\r\n this._render()\r\n },\r\n _render: function() {\r\n var $placeholder = $(\"<div>\").addClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n this._$element.append($placeholder);\r\n this._watchers = [];\r\n this._renderWatchers()\r\n },\r\n _renderWatchers: function() {\r\n this._startWatcher(\"disabled\", this._renderDisabled.bind(this));\r\n this._startWatcher(\"visible\", this._renderVisible.bind(this))\r\n },\r\n _startWatcher: function(field, render) {\r\n var rawData = this._rawData;\r\n var exprGetter = this._options.fieldGetter(field);\r\n var watcher = forcibleWatcher(this._options.watchMethod(), (function() {\r\n return exprGetter(rawData)\r\n }), function(value, oldValue) {\r\n this._dirty = true;\r\n render(value, oldValue)\r\n }.bind(this));\r\n this._watchers.push(watcher)\r\n },\r\n setDataField: function() {\r\n this._dirty = false;\r\n each(this._watchers, (function(_, watcher) {\r\n watcher.force()\r\n }));\r\n if (this._dirty) {\r\n return true\r\n }\r\n },\r\n _renderDisabled: function(value, oldValue) {\r\n this._$element.toggleClass(DISABLED_STATE_CLASS, !!value);\r\n this._$element.attr(\"aria-disabled\", !!value);\r\n this._updateOwnerFocus(value)\r\n },\r\n _updateOwnerFocus: function(isDisabled) {\r\n var ownerComponent = this._options.owner;\r\n if (ownerComponent && isDisabled) {\r\n ownerComponent._resetItemFocus(this._$element)\r\n }\r\n },\r\n _renderVisible: function(value, oldValue) {\r\n this._$element.toggleClass(INVISIBLE_STATE_CLASS, void 0 !== value && !value)\r\n },\r\n _dispose: function() {\r\n each(this._watchers, (function(_, watcher) {\r\n watcher.dispose()\r\n }))\r\n }\r\n});\r\nCollectionItem.getInstance = function($element) {\r\n return getInstanceByElement($element, this)\r\n};\r\nexport default CollectionItem;\r\n","/**\r\n * DevExtreme (esm/events/hold.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n eventData,\r\n eventDelta\r\n} from \"./utils/index\";\r\nimport Emitter from \"./core/emitter\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar abs = Math.abs;\r\nvar HOLD_EVENT_NAME = \"dxhold\";\r\nvar HOLD_TIMEOUT = 750;\r\nvar TOUCH_BOUNDARY = 5;\r\nvar HoldEmitter = Emitter.inherit({\r\n start: function(e) {\r\n this._startEventData = eventData(e);\r\n this._startTimer(e)\r\n },\r\n _startTimer: function(e) {\r\n var holdTimeout = \"timeout\" in this ? this.timeout : HOLD_TIMEOUT;\r\n this._holdTimer = setTimeout(function() {\r\n this._requestAccept(e);\r\n this._fireEvent(HOLD_EVENT_NAME, e, {\r\n target: e.target\r\n });\r\n this._forgetAccept()\r\n }.bind(this), holdTimeout)\r\n },\r\n move: function(e) {\r\n if (this._touchWasMoved(e)) {\r\n this._cancel(e)\r\n }\r\n },\r\n _touchWasMoved: function(e) {\r\n var delta = eventDelta(this._startEventData, eventData(e));\r\n return abs(delta.x) > TOUCH_BOUNDARY || abs(delta.y) > TOUCH_BOUNDARY\r\n },\r\n end: function() {\r\n this._stopTimer()\r\n },\r\n _stopTimer: function() {\r\n clearTimeout(this._holdTimer)\r\n },\r\n cancel: function() {\r\n this._stopTimer()\r\n },\r\n dispose: function() {\r\n this._stopTimer()\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: HoldEmitter,\r\n bubble: true,\r\n events: [HOLD_EVENT_NAME]\r\n});\r\nexport default {\r\n name: HOLD_EVENT_NAME\r\n};\r\n","/**\r\n * DevExtreme (esm/events/contextmenu.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport devices from \"../core/devices\";\r\nimport Class from \"../core/class\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n addNamespace,\r\n fireEvent,\r\n isMouseEvent\r\n} from \"./utils/index\";\r\nimport holdEvent from \"./hold\";\r\nvar CONTEXTMENU_NAMESPACE = \"dxContexMenu\";\r\nvar CONTEXTMENU_NAMESPACED_EVENT_NAME = addNamespace(\"contextmenu\", CONTEXTMENU_NAMESPACE);\r\nvar HOLD_NAMESPACED_EVENT_NAME = addNamespace(holdEvent.name, CONTEXTMENU_NAMESPACE);\r\nvar CONTEXTMENU_EVENT_NAME = \"dxcontextmenu\";\r\nvar ContextMenu = Class.inherit({\r\n setup: function(element) {\r\n var $element = $(element);\r\n eventsEngine.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));\r\n if (touch || devices.isSimulator()) {\r\n eventsEngine.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))\r\n }\r\n },\r\n _holdHandler: function(e) {\r\n if (isMouseEvent(e) && !devices.isSimulator()) {\r\n return\r\n }\r\n this._fireContextMenu(e)\r\n },\r\n _contextMenuHandler: function(e) {\r\n this._fireContextMenu(e)\r\n },\r\n _fireContextMenu: function(e) {\r\n return fireEvent({\r\n type: CONTEXTMENU_EVENT_NAME,\r\n originalEvent: e\r\n })\r\n },\r\n teardown: function(element) {\r\n eventsEngine.off(element, \".\" + CONTEXTMENU_NAMESPACE)\r\n }\r\n});\r\nregisterEvent(CONTEXTMENU_EVENT_NAME, new ContextMenu);\r\nexport var name = CONTEXTMENU_EVENT_NAME;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ensureDefined,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n findTemplates\r\n} from \"../../core/utils/template_manager\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isPlainObject,\r\n isFunction,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport Action from \"../../core/action\";\r\nimport Guid from \"../../core/guid\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport CollectionWidgetItem from \"./item\";\r\nimport {\r\n focusable\r\n} from \"../widget/selectors\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n name as contextMenuEventName\r\n} from \"../../events/contextmenu\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nvar COLLECTION_CLASS = \"dx-collection\";\r\nvar ITEM_CLASS = \"dx-item\";\r\nvar CONTENT_CLASS_POSTFIX = \"-content\";\r\nvar ITEM_CONTENT_PLACEHOLDER_CLASS = \"dx-item-content-placeholder\";\r\nvar ITEM_DATA_KEY = \"dxItemData\";\r\nvar ITEM_INDEX_KEY = \"dxItemIndex\";\r\nvar ITEM_TEMPLATE_ID_PREFIX = \"tmpl-\";\r\nvar ITEMS_OPTIONS_NAME = \"dxItem\";\r\nvar SELECTED_ITEM_CLASS = \"dx-item-selected\";\r\nvar ITEM_RESPONSE_WAIT_CLASS = \"dx-item-response-wait\";\r\nvar EMPTY_COLLECTION = \"dx-empty-collection\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar ITEM_PATH_REGEX = /^([^.]+\\[\\d+\\]\\.)+([\\w.]+)$/;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"item\";\r\nvar FOCUS_UP = \"up\";\r\nvar FOCUS_DOWN = \"down\";\r\nvar FOCUS_LEFT = \"left\";\r\nvar FOCUS_RIGHT = \"right\";\r\nvar FOCUS_PAGE_UP = \"pageup\";\r\nvar FOCUS_PAGE_DOWN = \"pagedown\";\r\nvar FOCUS_LAST = \"last\";\r\nvar FOCUS_FIRST = \"first\";\r\nvar CollectionWidget = Widget.inherit({\r\n _activeStateUnit: \".\" + ITEM_CLASS,\r\n _supportedKeys: function() {\r\n var move = function(location, e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moveFocus(location, e)\r\n }\r\n };\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n this._enterKeyHandler(e)\r\n },\r\n enter: this._enterKeyHandler,\r\n leftArrow: move.bind(this, FOCUS_LEFT),\r\n rightArrow: move.bind(this, FOCUS_RIGHT),\r\n upArrow: move.bind(this, FOCUS_UP),\r\n downArrow: move.bind(this, FOCUS_DOWN),\r\n pageUp: move.bind(this, FOCUS_UP),\r\n pageDown: move.bind(this, FOCUS_DOWN),\r\n home: move.bind(this, FOCUS_FIRST),\r\n end: move.bind(this, FOCUS_LAST)\r\n })\r\n },\r\n _enterKeyHandler: function(e) {\r\n var $itemElement = $(this.option(\"focusedElement\"));\r\n if (!$itemElement.length) {\r\n return\r\n }\r\n var itemData = this._getItemData($itemElement);\r\n if (null !== itemData && void 0 !== itemData && itemData.onClick) {\r\n this._itemEventHandlerByHandler($itemElement, itemData.onClick, {\r\n event: e\r\n })\r\n }\r\n this._itemClickHandler(extend({}, e, {\r\n target: $itemElement.get(0),\r\n currentTarget: $itemElement.get(0)\r\n }))\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectOnFocus: false,\r\n loopItemFocus: true,\r\n items: [],\r\n itemTemplate: \"item\",\r\n onItemRendered: null,\r\n onItemClick: null,\r\n onItemHold: null,\r\n itemHoldTimeout: 750,\r\n onItemContextMenu: null,\r\n onFocusedItemChanged: null,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n encodeNoDataText: false,\r\n dataSource: null,\r\n _dataController: null,\r\n _itemAttributes: {},\r\n itemTemplateProperty: \"template\",\r\n focusOnSelectedItem: true,\r\n focusedElement: null,\r\n displayExpr: void 0,\r\n disabledExpr: function(data) {\r\n return data ? data.disabled : void 0\r\n },\r\n visibleExpr: function(data) {\r\n return data ? data.visible : void 0\r\n }\r\n })\r\n },\r\n _init: function() {\r\n this._compileDisplayGetter();\r\n this._initDataController();\r\n this.callBase();\r\n this._cleanRenderedItems();\r\n this._refreshDataSource()\r\n },\r\n _compileDisplayGetter: function() {\r\n var displayExpr = this.option(\"displayExpr\");\r\n this._displayGetter = displayExpr ? compileGetter(this.option(\"displayExpr\")) : void 0\r\n },\r\n _initTemplates: function() {\r\n this._initItemsFromMarkup();\r\n this._initDefaultItemTemplate();\r\n this.callBase()\r\n },\r\n _getAnonymousTemplateName: function() {\r\n return ANONYMOUS_TEMPLATE_NAME\r\n },\r\n _initDefaultItemTemplate: function() {\r\n var fieldsMap = this._getFieldsMap();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(function($container, data) {\r\n if (isPlainObject(data)) {\r\n this._prepareDefaultItemTemplate(data, $container)\r\n } else {\r\n if (fieldsMap && isFunction(fieldsMap.text)) {\r\n data = fieldsMap.text(data)\r\n }\r\n $container.text(String(ensureDefined(data, \"\")))\r\n }\r\n }.bind(this), this._getBindableFields(), this.option(\"integrationOptions.watchMethod\"), fieldsMap)\r\n })\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\"]\r\n },\r\n _getFieldsMap: function() {\r\n if (this._displayGetter) {\r\n return {\r\n text: this._displayGetter\r\n }\r\n }\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n if (isDefined(data.text)) {\r\n $container.text(data.text)\r\n }\r\n if (isDefined(data.html)) {\r\n $container.html(data.html)\r\n }\r\n },\r\n _initItemsFromMarkup: function() {\r\n var rawItems = findTemplates(this.$element(), ITEMS_OPTIONS_NAME);\r\n if (!rawItems.length || this.option(\"items\").length) {\r\n return\r\n }\r\n var items = rawItems.map(_ref => {\r\n var {\r\n element: element,\r\n options: options\r\n } = _ref;\r\n var isTemplateRequired = /\\S/.test(element.innerHTML) && !options.template;\r\n if (isTemplateRequired) {\r\n options.template = this._prepareItemTemplate(element)\r\n } else {\r\n $(element).remove()\r\n }\r\n return options\r\n });\r\n this.option(\"items\", items)\r\n },\r\n _prepareItemTemplate: function(item) {\r\n var templateId = ITEM_TEMPLATE_ID_PREFIX + new Guid;\r\n var $template = $(item).detach().clone().removeAttr(\"data-options\").addClass(TEMPLATE_WRAPPER_CLASS);\r\n this._saveTemplate(templateId, $template);\r\n return templateId\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _cleanRenderedItems: function() {\r\n this._renderedItemsCount = 0\r\n },\r\n _focusTarget: function() {\r\n return this.$element()\r\n },\r\n _focusInHandler: function(e) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._isFocusTarget(e.target)) {\r\n return\r\n }\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n if ($focusedElement.length) {\r\n this._setFocusedItem($focusedElement)\r\n } else {\r\n var $activeItem = this._getActiveItem();\r\n if ($activeItem.length) {\r\n this.option(\"focusedElement\", getPublicElement($activeItem))\r\n }\r\n }\r\n },\r\n _focusOutHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n var $target = $(this.option(\"focusedElement\"));\r\n this._updateFocusedItemState($target, false)\r\n },\r\n _findActiveTarget($element) {\r\n return $element.find(this._activeStateUnit)\r\n },\r\n _getActiveItem: function(last) {\r\n var $focusedElement = $(this.option(\"focusedElement\"));\r\n if ($focusedElement.length) {\r\n return $focusedElement\r\n }\r\n var index = this.option(\"focusOnSelectedItem\") ? this.option(\"selectedIndex\") : 0;\r\n var activeElements = this._getActiveElement();\r\n var lastIndex = activeElements.length - 1;\r\n if (index < 0) {\r\n index = last ? lastIndex : 0\r\n }\r\n return activeElements.eq(index)\r\n },\r\n _moveFocus: function(location) {\r\n var $items = this._getAvailableItems();\r\n var $newTarget;\r\n switch (location) {\r\n case FOCUS_PAGE_UP:\r\n case FOCUS_UP:\r\n $newTarget = this._prevItem($items);\r\n break;\r\n case FOCUS_PAGE_DOWN:\r\n case FOCUS_DOWN:\r\n $newTarget = this._nextItem($items);\r\n break;\r\n case FOCUS_RIGHT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._prevItem($items) : this._nextItem($items);\r\n break;\r\n case FOCUS_LEFT:\r\n $newTarget = this.option(\"rtlEnabled\") ? this._nextItem($items) : this._prevItem($items);\r\n break;\r\n case FOCUS_FIRST:\r\n $newTarget = $items.first();\r\n break;\r\n case FOCUS_LAST:\r\n $newTarget = $items.last();\r\n break;\r\n default:\r\n return false\r\n }\r\n if (0 !== $newTarget.length) {\r\n this.option(\"focusedElement\", getPublicElement($newTarget))\r\n }\r\n },\r\n _getVisibleItems: function($itemElements) {\r\n $itemElements = $itemElements || this._itemElements();\r\n return $itemElements.filter(\":visible\")\r\n },\r\n _getAvailableItems: function($itemElements) {\r\n return this._getVisibleItems($itemElements)\r\n },\r\n _prevItem: function($items) {\r\n var $target = this._getActiveItem();\r\n var targetIndex = $items.index($target);\r\n var $last = $items.last();\r\n var $item = $($items[targetIndex - 1]);\r\n var loop = this.option(\"loopItemFocus\");\r\n if (0 === $item.length && loop) {\r\n $item = $last\r\n }\r\n return $item\r\n },\r\n _nextItem: function($items) {\r\n var $target = this._getActiveItem(true);\r\n var targetIndex = $items.index($target);\r\n var $first = $items.first();\r\n var $item = $($items[targetIndex + 1]);\r\n var loop = this.option(\"loopItemFocus\");\r\n if (0 === $item.length && loop) {\r\n $item = $first\r\n }\r\n return $item\r\n },\r\n _selectFocusedItem: function($target) {\r\n this.selectItem($target)\r\n },\r\n _updateFocusedItemState: function(target, isFocused, needCleanItemId) {\r\n var $target = $(target);\r\n if ($target.length) {\r\n this._refreshActiveDescendant();\r\n this._refreshItemId($target, needCleanItemId);\r\n this._toggleFocusClass(isFocused, $target)\r\n }\r\n this._updateParentActiveDescendant()\r\n },\r\n _refreshActiveDescendant: function($target) {\r\n this.setAria(\"activedescendant\", isDefined(this.option(\"focusedElement\")) ? this.getFocusedItemId() : null, $target)\r\n },\r\n _refreshItemId: function($target, needCleanItemId) {\r\n if (!needCleanItemId && this.option(\"focusedElement\")) {\r\n this.setAria(\"id\", this.getFocusedItemId(), $target)\r\n } else {\r\n this.setAria(\"id\", null, $target)\r\n }\r\n },\r\n _isDisabled: $element => $element && \"true\" === $($element).attr(\"aria-disabled\"),\r\n _setFocusedItem: function($target) {\r\n if (!$target || !$target.length) {\r\n return\r\n }\r\n this._updateFocusedItemState($target, true);\r\n this.onFocusedItemChanged(this.getFocusedItemId());\r\n var {\r\n selectOnFocus: selectOnFocus\r\n } = this.option();\r\n var isTargetDisabled = this._isDisabled($target);\r\n if (selectOnFocus && !isTargetDisabled) {\r\n this._selectFocusedItem($target)\r\n }\r\n },\r\n _findItemElementByItem: function(item) {\r\n var result = $();\r\n var that = this;\r\n this.itemElements().each((function() {\r\n var $item = $(this);\r\n if ($item.data(that._itemDataKey()) === item) {\r\n result = $item;\r\n return false\r\n }\r\n }));\r\n return result\r\n },\r\n _getIndexByItem: function(item) {\r\n return this.option(\"items\").indexOf(item)\r\n },\r\n _itemOptionChanged: function(item, property, value, oldValue) {\r\n var $item = this._findItemElementByItem(item);\r\n if (!$item.length) {\r\n return\r\n }\r\n if (!this.constructor.ItemClass.getInstance($item).setDataField(property, value)) {\r\n this._refreshItem($item, item)\r\n }\r\n var isDisabling = \"disabled\" === property && value;\r\n if (isDisabling) {\r\n this._resetItemFocus($item)\r\n }\r\n },\r\n _resetItemFocus($item) {\r\n if ($item.is(this.option(\"focusedElement\"))) {\r\n this.option(\"focusedElement\", null)\r\n }\r\n },\r\n _refreshItem: function($item) {\r\n var itemData = this._getItemData($item);\r\n var index = $item.data(this._itemIndexKey());\r\n this._renderItem(this._renderedItemsCount + index, itemData, null, $item)\r\n },\r\n _updateParentActiveDescendant: noop,\r\n _optionChanged: function(args) {\r\n if (\"items\" === args.name) {\r\n var matches = args.fullName.match(ITEM_PATH_REGEX);\r\n if (matches && matches.length) {\r\n var property = matches[matches.length - 1];\r\n var itemPath = args.fullName.replace(\".\" + property, \"\");\r\n var item = this.option(itemPath);\r\n this._itemOptionChanged(item, property, args.value, args.previousValue);\r\n return\r\n }\r\n }\r\n switch (args.name) {\r\n case \"items\":\r\n case \"_itemAttributes\":\r\n case \"itemTemplateProperty\":\r\n case \"useItemTextAsTitle\":\r\n this._cleanRenderedItems();\r\n this._invalidate();\r\n break;\r\n case \"dataSource\":\r\n this._refreshDataSource();\r\n this._renderEmptyMessage();\r\n break;\r\n case \"noDataText\":\r\n case \"encodeNoDataText\":\r\n this._renderEmptyMessage();\r\n break;\r\n case \"itemTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"onItemRendered\":\r\n this._createItemRenderAction();\r\n break;\r\n case \"onItemClick\":\r\n break;\r\n case \"onItemHold\":\r\n case \"itemHoldTimeout\":\r\n this._attachHoldEvent();\r\n break;\r\n case \"onItemContextMenu\":\r\n this._attachContextMenuEvent();\r\n break;\r\n case \"onFocusedItemChanged\":\r\n this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n break;\r\n case \"selectOnFocus\":\r\n case \"loopItemFocus\":\r\n case \"focusOnSelectedItem\":\r\n break;\r\n case \"focusedElement\":\r\n this._updateFocusedItemState(args.previousValue, false, true);\r\n this._setFocusedItem($(args.value));\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._initDefaultItemTemplate();\r\n this._invalidate();\r\n break;\r\n case \"visibleExpr\":\r\n case \"disabledExpr\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _invalidate: function() {\r\n this.option(\"focusedElement\", null);\r\n return this.callBase.apply(this, arguments)\r\n },\r\n _loadNextPage: function() {\r\n this._expectNextPageLoading();\r\n return this._dataController.loadNextPage()\r\n },\r\n _expectNextPageLoading: function() {\r\n this._startIndexForAppendedItems = 0\r\n },\r\n _expectLastItemLoading: function() {\r\n this._startIndexForAppendedItems = -1\r\n },\r\n _forgetNextPageLoading: function() {\r\n this._startIndexForAppendedItems = null\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n var items = this.option(\"items\");\r\n if (this._initialized && items && this._shouldAppendItems()) {\r\n this._renderedItemsCount = items.length;\r\n if (!this._isLastPage() || -1 !== this._startIndexForAppendedItems) {\r\n this.option().items = items.concat(newItems.slice(this._startIndexForAppendedItems))\r\n }\r\n this._forgetNextPageLoading();\r\n this._refreshContent()\r\n } else {\r\n this.option(\"items\", newItems.slice())\r\n }\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._renderContent()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n this.option(\"items\", this.option(\"items\"))\r\n },\r\n _shouldAppendItems: function() {\r\n return null != this._startIndexForAppendedItems && this._allowDynamicItemsAppend()\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return false\r\n },\r\n _clean: function() {\r\n this._cleanFocusState();\r\n this._cleanItemContainer();\r\n this._inkRipple && delete this._inkRipple;\r\n this._resetActiveState()\r\n },\r\n _cleanItemContainer: function() {\r\n $(this._itemContainer()).empty()\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._itemFocusTimeout)\r\n },\r\n _refresh: function() {\r\n this._cleanRenderedItems();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _itemContainer: function() {\r\n return this.$element()\r\n },\r\n _itemClass: function() {\r\n return ITEM_CLASS\r\n },\r\n _itemContentClass: function() {\r\n return this._itemClass() + CONTENT_CLASS_POSTFIX\r\n },\r\n _selectedItemClass: function() {\r\n return SELECTED_ITEM_CLASS\r\n },\r\n _itemResponseWaitClass: function() {\r\n return ITEM_RESPONSE_WAIT_CLASS\r\n },\r\n _itemSelector: function() {\r\n return \".\" + this._itemClass()\r\n },\r\n _itemDataKey: function() {\r\n return ITEM_DATA_KEY\r\n },\r\n _itemIndexKey: function() {\r\n return ITEM_INDEX_KEY\r\n },\r\n _itemElements: function() {\r\n return this._itemContainer().find(this._itemSelector())\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.onFocusedItemChanged = this._createActionByOption(\"onFocusedItemChanged\");\r\n this.$element().addClass(COLLECTION_CLASS);\r\n this._prepareContent()\r\n },\r\n _prepareContent: deferRenderer((function() {\r\n this._renderContentImpl()\r\n })),\r\n _renderContent: function() {\r\n this._fireContentReadyAction()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._attachContextMenuEvent()\r\n },\r\n _getPointerEvent: () => pointerEvents.down,\r\n _attachClickEvent() {\r\n var itemSelector = this._itemSelector();\r\n var pointerEvent = this._getPointerEvent();\r\n var clickEventNamespace = addNamespace(clickEventName, this.NAME);\r\n var pointerEventNamespace = addNamespace(pointerEvent, this.NAME);\r\n var pointerAction = new Action(args => {\r\n var {\r\n event: event\r\n } = args;\r\n this._itemPointerDownHandler(event)\r\n });\r\n eventsEngine.off(this._itemContainer(), clickEventNamespace, itemSelector);\r\n eventsEngine.off(this._itemContainer(), pointerEventNamespace, itemSelector);\r\n eventsEngine.on(this._itemContainer(), clickEventNamespace, itemSelector, e => this._itemClickHandler(e));\r\n eventsEngine.on(this._itemContainer(), pointerEventNamespace, itemSelector, e => {\r\n pointerAction.execute({\r\n element: $(e.target),\r\n event: e\r\n })\r\n })\r\n },\r\n _itemClickHandler: function(e, args, config) {\r\n this._itemDXEventHandler(e, \"onItemClick\", args, config)\r\n },\r\n _itemPointerDownHandler: function(e) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n this._itemFocusHandler = function() {\r\n clearTimeout(this._itemFocusTimeout);\r\n this._itemFocusHandler = null;\r\n if (e.isDefaultPrevented()) {\r\n return\r\n }\r\n var $target = $(e.target);\r\n var $closestItem = $target.closest(this._itemElements());\r\n var $closestFocusable = this._closestFocusable($target);\r\n if ($closestItem.length && this._isFocusTarget(null === $closestFocusable || void 0 === $closestFocusable ? void 0 : $closestFocusable.get(0))) {\r\n this.option(\"focusedElement\", getPublicElement($closestItem))\r\n }\r\n }.bind(this);\r\n this._itemFocusTimeout = setTimeout(this._forcePointerDownFocus.bind(this))\r\n },\r\n _closestFocusable: function($target) {\r\n if ($target.is(focusable)) {\r\n return $target\r\n } else {\r\n $target = $target.parent();\r\n while ($target.length && !domAdapter.isDocument($target.get(0)) && !domAdapter.isDocumentFragment($target.get(0))) {\r\n if ($target.is(focusable)) {\r\n return $target\r\n }\r\n $target = $target.parent()\r\n }\r\n }\r\n },\r\n _forcePointerDownFocus: function() {\r\n this._itemFocusHandler && this._itemFocusHandler()\r\n },\r\n _updateFocusState: function() {\r\n this.callBase.apply(this, arguments);\r\n this._forcePointerDownFocus()\r\n },\r\n _attachHoldEvent: function() {\r\n var $itemContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n var eventName = addNamespace(holdEvent.name, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, itemSelector);\r\n eventsEngine.on($itemContainer, eventName, itemSelector, {\r\n timeout: this._getHoldTimeout()\r\n }, this._itemHoldHandler.bind(this))\r\n },\r\n _getHoldTimeout: function() {\r\n return this.option(\"itemHoldTimeout\")\r\n },\r\n _shouldFireHoldEvent: function() {\r\n return this.hasActionSubscription(\"onItemHold\")\r\n },\r\n _itemHoldHandler: function(e) {\r\n if (this._shouldFireHoldEvent()) {\r\n this._itemDXEventHandler(e, \"onItemHold\")\r\n } else {\r\n e.cancel = true\r\n }\r\n },\r\n _attachContextMenuEvent: function() {\r\n var $itemContainer = this._itemContainer();\r\n var itemSelector = this._itemSelector();\r\n var eventName = addNamespace(contextMenuEventName, this.NAME);\r\n eventsEngine.off($itemContainer, eventName, itemSelector);\r\n eventsEngine.on($itemContainer, eventName, itemSelector, this._itemContextMenuHandler.bind(this))\r\n },\r\n _shouldFireContextMenuEvent: function() {\r\n return this.hasActionSubscription(\"onItemContextMenu\")\r\n },\r\n _itemContextMenuHandler: function(e) {\r\n if (this._shouldFireContextMenuEvent()) {\r\n this._itemDXEventHandler(e, \"onItemContextMenu\")\r\n } else {\r\n e.cancel = true\r\n }\r\n },\r\n _renderContentImpl: function() {\r\n var items = this.option(\"items\") || [];\r\n if (this._renderedItemsCount) {\r\n this._renderItems(items.slice(this._renderedItemsCount))\r\n } else {\r\n this._renderItems(items)\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (items.length) {\r\n each(items, function(index, itemData) {\r\n this._renderItem(this._renderedItemsCount + index, itemData)\r\n }.bind(this))\r\n }\r\n this._renderEmptyMessage()\r\n },\r\n _renderItem: function(index, itemData, $container, $itemToReplace) {\r\n var _index$item;\r\n var itemIndex = null !== (_index$item = null === index || void 0 === index ? void 0 : index.item) && void 0 !== _index$item ? _index$item : index;\r\n $container = $container || this._itemContainer();\r\n var $itemFrame = this._renderItemFrame(itemIndex, itemData, $container, $itemToReplace);\r\n this._setElementData($itemFrame, itemData, itemIndex);\r\n $itemFrame.attr(this.option(\"_itemAttributes\"));\r\n this._attachItemClickEvent(itemData, $itemFrame);\r\n var $itemContent = this._getItemContent($itemFrame);\r\n var renderContentPromise = this._renderItemContent({\r\n index: itemIndex,\r\n itemData: itemData,\r\n container: getPublicElement($itemContent),\r\n contentClass: this._itemContentClass(),\r\n defaultTemplateName: this.option(\"itemTemplate\")\r\n });\r\n var that = this;\r\n when(renderContentPromise).done((function($itemContent) {\r\n that._postprocessRenderItem({\r\n itemElement: $itemFrame,\r\n itemContent: $itemContent,\r\n itemData: itemData,\r\n itemIndex: itemIndex\r\n });\r\n that._executeItemRenderAction(index, itemData, getPublicElement($itemFrame))\r\n }));\r\n return $itemFrame\r\n },\r\n _getItemContent: function($itemFrame) {\r\n var $itemContent = $itemFrame.find(\".\" + ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n $itemContent.removeClass(ITEM_CONTENT_PLACEHOLDER_CLASS);\r\n return $itemContent\r\n },\r\n _attachItemClickEvent: function(itemData, $itemElement) {\r\n if (!itemData || !itemData.onClick) {\r\n return\r\n }\r\n eventsEngine.on($itemElement, clickEventName, function(e) {\r\n this._itemEventHandlerByHandler($itemElement, itemData.onClick, {\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _renderItemContent: function(args) {\r\n var itemTemplateName = this._getItemTemplateName(args);\r\n var itemTemplate = this._getTemplate(itemTemplateName);\r\n this._addItemContentClasses(args);\r\n var $templateResult = $(this._createItemByTemplate(itemTemplate, args));\r\n if (!$templateResult.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n return args.container\r\n }\r\n return this._renderItemContentByNode(args, $templateResult)\r\n },\r\n _renderItemContentByNode: function(args, $node) {\r\n $(args.container).replaceWith($node);\r\n args.container = getPublicElement($node);\r\n this._addItemContentClasses(args);\r\n return $node\r\n },\r\n _addItemContentClasses: function(args) {\r\n var classes = [ITEM_CLASS + CONTENT_CLASS_POSTFIX, args.contentClass];\r\n $(args.container).addClass(classes.join(\" \"))\r\n },\r\n _appendItemToContainer: function($container, $itemFrame, index) {\r\n $itemFrame.appendTo($container)\r\n },\r\n _renderItemFrame: function(index, itemData, $container, $itemToReplace) {\r\n var $itemFrame = $(\"<div>\");\r\n new this.constructor.ItemClass($itemFrame, this._itemOptions(), itemData || {});\r\n if ($itemToReplace && $itemToReplace.length) {\r\n $itemToReplace.replaceWith($itemFrame)\r\n } else {\r\n this._appendItemToContainer.call(this, $container, $itemFrame, index)\r\n }\r\n if (this.option(\"useItemTextAsTitle\")) {\r\n var displayValue = this._displayGetter ? this._displayGetter(itemData) : itemData;\r\n $itemFrame.attr(\"title\", displayValue)\r\n }\r\n return $itemFrame\r\n },\r\n _itemOptions: function() {\r\n var that = this;\r\n return {\r\n watchMethod: function() {\r\n return that.option(\"integrationOptions.watchMethod\")\r\n },\r\n owner: that,\r\n fieldGetter: function(field) {\r\n var expr = that.option(field + \"Expr\");\r\n var getter = compileGetter(expr);\r\n return getter\r\n }\r\n }\r\n },\r\n _postprocessRenderItem: noop,\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n this._getItemRenderAction()({\r\n itemElement: itemElement,\r\n itemIndex: index,\r\n itemData: itemData\r\n })\r\n },\r\n _setElementData: function(element, data, index) {\r\n element.addClass([ITEM_CLASS, this._itemClass()].join(\" \")).data(this._itemDataKey(), data).data(this._itemIndexKey(), index)\r\n },\r\n _createItemRenderAction: function() {\r\n return this._itemRenderAction = this._createActionByOption(\"onItemRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"],\r\n category: \"rendering\"\r\n })\r\n },\r\n _getItemRenderAction: function() {\r\n return this._itemRenderAction || this._createItemRenderAction()\r\n },\r\n _getItemTemplateName: function(args) {\r\n var data = args.itemData;\r\n var templateProperty = args.templateProperty || this.option(\"itemTemplateProperty\");\r\n var template = data && data[templateProperty];\r\n return template || args.defaultTemplateName\r\n },\r\n _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n return itemTemplate.render({\r\n model: renderArgs.itemData,\r\n container: renderArgs.container,\r\n index: renderArgs.index,\r\n onRendered: this._onItemTemplateRendered(itemTemplate, renderArgs)\r\n })\r\n },\r\n _onItemTemplateRendered: function() {\r\n return noop\r\n },\r\n _emptyMessageContainer: function() {\r\n return this._itemContainer()\r\n },\r\n _renderEmptyMessage: function(items) {\r\n items = items || this.option(\"items\");\r\n var noDataText = this.option(\"noDataText\");\r\n var hideNoData = !noDataText || items && items.length || this._dataController.isLoading();\r\n if (hideNoData && this._$noData) {\r\n this._$noData.remove();\r\n this._$noData = null;\r\n this.setAria(\"label\", void 0)\r\n }\r\n if (!hideNoData) {\r\n this._$noData = this._$noData || $(\"<div>\").addClass(\"dx-empty-message\");\r\n this._$noData.appendTo(this._emptyMessageContainer());\r\n if (this.option(\"encodeNoDataText\")) {\r\n this._$noData.text(noDataText)\r\n } else {\r\n this._$noData.html(noDataText)\r\n }\r\n }\r\n this.$element().toggleClass(EMPTY_COLLECTION, !hideNoData)\r\n },\r\n _itemDXEventHandler: function(dxEvent, handlerOptionName, actionArgs, actionConfig) {\r\n this._itemEventHandler(dxEvent.target, handlerOptionName, extend(actionArgs, {\r\n event: dxEvent\r\n }), actionConfig)\r\n },\r\n _itemEventHandler: function(initiator, handlerOptionName, actionArgs, actionConfig) {\r\n var action = this._createActionByOption(handlerOptionName, extend({\r\n validatingTargetName: \"itemElement\"\r\n }, actionConfig));\r\n return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n },\r\n _itemEventHandlerByHandler: function(initiator, handler, actionArgs, actionConfig) {\r\n var action = this._createAction(handler, extend({\r\n validatingTargetName: \"itemElement\"\r\n }, actionConfig));\r\n return this._itemEventHandlerImpl(initiator, action, actionArgs)\r\n },\r\n _itemEventHandlerImpl: function(initiator, action, actionArgs) {\r\n var $itemElement = this._closestItemElement($(initiator));\r\n var args = extend({}, actionArgs);\r\n return action(extend(actionArgs, this._extendActionArgs($itemElement), args))\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n return {\r\n itemElement: getPublicElement($itemElement),\r\n itemIndex: this._itemElements().index($itemElement),\r\n itemData: this._getItemData($itemElement)\r\n }\r\n },\r\n _closestItemElement: function($element) {\r\n return $($element).closest(this._itemSelector())\r\n },\r\n _getItemData: function(itemElement) {\r\n return $(itemElement).data(this._itemDataKey())\r\n },\r\n _getSummaryItemsWidth: function(items, includeMargin) {\r\n var result = 0;\r\n if (items) {\r\n each(items, (function(_, item) {\r\n result += getOuterWidth(item, includeMargin || false)\r\n }))\r\n }\r\n return result\r\n },\r\n getFocusedItemId: function() {\r\n if (!this._focusedItemId) {\r\n this._focusedItemId = \"dx-\" + new Guid\r\n }\r\n return this._focusedItemId\r\n },\r\n itemElements: function() {\r\n return this._itemElements()\r\n },\r\n itemsContainer: function() {\r\n return this._itemContainer()\r\n }\r\n}).include(DataHelperMixin);\r\nCollectionWidget.ItemClass = CollectionWidgetItem;\r\nexport default CollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n isRenderer\r\n} from \"../../core/utils/type\";\r\nvar abstract = Class.abstract;\r\nvar EditStrategy = Class.inherit({\r\n ctor: function(collectionWidget) {\r\n this._collectionWidget = collectionWidget\r\n },\r\n getIndexByItemData: abstract,\r\n getItemDataByIndex: abstract,\r\n getKeysByItems: abstract,\r\n getItemsByKeys: abstract,\r\n itemsGetter: abstract,\r\n getKeyByIndex: function(index) {\r\n var resultIndex = this._denormalizeItemIndex(index);\r\n return this.getKeysByItems([this.getItemDataByIndex(resultIndex)])[0]\r\n },\r\n _equalKeys: function(key1, key2) {\r\n if (this._collectionWidget._isKeySpecified()) {\r\n return equalByValue(key1, key2)\r\n } else {\r\n return key1 === key2\r\n }\r\n },\r\n beginCache: function() {\r\n this._cache = {}\r\n },\r\n endCache: function() {\r\n this._cache = null\r\n },\r\n getIndexByKey: abstract,\r\n getNormalizedIndex: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return value\r\n }\r\n if (this._isItemIndex(value)) {\r\n return this._normalizeItemIndex(value)\r\n }\r\n if (this._isNode(value)) {\r\n return this._getNormalizedItemIndex(value)\r\n }\r\n return this._normalizeItemIndex(this.getIndexByItemData(value))\r\n },\r\n getIndex: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return this._denormalizeItemIndex(value)\r\n }\r\n if (this._isItemIndex(value)) {\r\n return value\r\n }\r\n if (this._isNode(value)) {\r\n return this._denormalizeItemIndex(this._getNormalizedItemIndex(value))\r\n }\r\n return this.getIndexByItemData(value)\r\n },\r\n getItemElement: function(value) {\r\n if (this._isNormalizedItemIndex(value)) {\r\n return this._getItemByNormalizedIndex(value)\r\n }\r\n if (this._isItemIndex(value)) {\r\n return this._getItemByNormalizedIndex(this._normalizeItemIndex(value))\r\n }\r\n if (this._isNode(value)) {\r\n return $(value)\r\n }\r\n var normalizedItemIndex = this._normalizeItemIndex(this.getIndexByItemData(value));\r\n return this._getItemByNormalizedIndex(normalizedItemIndex)\r\n },\r\n _isNode: el => domAdapter.isNode(el && isRenderer(el) ? el.get(0) : el),\r\n deleteItemAtIndex: abstract,\r\n itemPlacementFunc: function(movingIndex, destinationIndex) {\r\n return this._itemsFromSameParent(movingIndex, destinationIndex) && movingIndex < destinationIndex ? \"after\" : \"before\"\r\n },\r\n moveItemAtIndexToIndex: abstract,\r\n _isNormalizedItemIndex: function(index) {\r\n return \"number\" === typeof index && Math.round(index) === index\r\n },\r\n _isItemIndex: abstract,\r\n _getNormalizedItemIndex: abstract,\r\n _normalizeItemIndex: abstract,\r\n _denormalizeItemIndex: abstract,\r\n _getItemByNormalizedIndex: abstract,\r\n _itemsFromSameParent: abstract\r\n});\r\nexport default EditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.strategy.plain.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport EditStrategy from \"./ui.collection_widget.edit.strategy\";\r\nvar PlainEditStrategy = EditStrategy.inherit({\r\n _getPlainItems: function() {\r\n return this._collectionWidget.option(\"items\") || []\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n if (keyOf) {\r\n return this.getIndexByKey(keyOf(itemData))\r\n } else {\r\n return this._getPlainItems().indexOf(itemData)\r\n }\r\n },\r\n getItemDataByIndex: function(index) {\r\n return this._getPlainItems()[index]\r\n },\r\n deleteItemAtIndex: function(index) {\r\n this._getPlainItems().splice(index, 1)\r\n },\r\n itemsGetter: function() {\r\n return this._getPlainItems()\r\n },\r\n getKeysByItems: function(items) {\r\n var keyOf = this._collectionWidget.keyOf.bind(this._collectionWidget);\r\n var result = items;\r\n if (keyOf) {\r\n result = [];\r\n for (var i = 0; i < items.length; i++) {\r\n result.push(keyOf(items[i]))\r\n }\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key) {\r\n var cache = this._cache;\r\n var keys = cache && cache.keys || this.getKeysByItems(this._getPlainItems());\r\n if (cache && !cache.keys) {\r\n cache.keys = keys\r\n }\r\n if (\"object\" === typeof key) {\r\n for (var i = 0, length = keys.length; i < length; i++) {\r\n if (this._equalKeys(key, keys[i])) {\r\n return i\r\n }\r\n }\r\n } else {\r\n return keys.indexOf(key)\r\n }\r\n return -1\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n return (items || keys).slice()\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._getPlainItems();\r\n var movedItemData = items[movingIndex];\r\n items.splice(movingIndex, 1);\r\n items.splice(destinationIndex, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return \"number\" === typeof index && Math.round(index) === index\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n return this._collectionWidget._itemElements().index(itemElement)\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return index\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return index\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n return index > -1 ? this._collectionWidget._itemElements().eq(index) : null\r\n },\r\n _itemsFromSameParent: function() {\r\n return true\r\n }\r\n});\r\nexport default PlainEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n getKeyHash,\r\n noop,\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default class SelectionStrategy {\r\n constructor(options) {\r\n this.options = options;\r\n this._setOption(\"disabledItemKeys\", []);\r\n this._clearItemKeys()\r\n }\r\n _clearItemKeys() {\r\n this._setOption(\"addedItemKeys\", []);\r\n this._setOption(\"removedItemKeys\", []);\r\n this._setOption(\"removedItems\", []);\r\n this._setOption(\"addedItems\", [])\r\n }\r\n validate() {}\r\n _setOption(name, value) {\r\n this.options[name] = value\r\n }\r\n onSelectionChanged() {\r\n var addedItemKeys = this.options.addedItemKeys;\r\n var removedItemKeys = this.options.removedItemKeys;\r\n var addedItems = this.options.addedItems;\r\n var removedItems = this.options.removedItems;\r\n var selectedItems = this.options.selectedItems;\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n var onSelectionChanged = this.options.onSelectionChanged || noop;\r\n this._clearItemKeys();\r\n onSelectionChanged({\r\n selectedItems: selectedItems,\r\n selectedItemKeys: selectedItemKeys,\r\n addedItemKeys: addedItemKeys,\r\n removedItemKeys: removedItemKeys,\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n }\r\n equalKeys(key1, key2) {\r\n if (this.options.equalByReference) {\r\n if (isObject(key1) && isObject(key2)) {\r\n return key1 === key2\r\n }\r\n }\r\n return equalByValue(key1, key2)\r\n }\r\n getSelectableItems(items) {\r\n return items.filter((function(item) {\r\n return !(null !== item && void 0 !== item && item.disabled)\r\n }))\r\n }\r\n _clearSelection(keys, preserve, isDeselect, isSelectAll) {\r\n keys = keys || [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this.selectedItemKeys(keys, preserve, isDeselect, isSelectAll)\r\n }\r\n _removeTemplateProperty(remoteFilter) {\r\n if (Array.isArray(remoteFilter)) {\r\n return remoteFilter.map(f => this._removeTemplateProperty(f))\r\n }\r\n if (isObject(remoteFilter)) {\r\n delete remoteFilter.template\r\n }\r\n return remoteFilter\r\n }\r\n _loadFilteredData(remoteFilter, localFilter, select, isSelectAll) {\r\n var filterLength = encodeURI(JSON.stringify(this._removeTemplateProperty(remoteFilter))).length;\r\n var needLoadAllData = this.options.maxFilterLengthInRequest && filterLength > this.options.maxFilterLengthInRequest;\r\n var deferred = new Deferred;\r\n var loadOptions = {\r\n filter: needLoadAllData ? void 0 : remoteFilter,\r\n select: needLoadAllData ? this.options.dataFields() : select || this.options.dataFields()\r\n };\r\n if (remoteFilter && 0 === remoteFilter.length) {\r\n deferred.resolve([])\r\n } else {\r\n this.options.load(loadOptions).done((function(items) {\r\n var filteredItems = isPlainObject(items) ? items.data : items;\r\n if (localFilter && !isSelectAll) {\r\n filteredItems = filteredItems.filter(localFilter)\r\n } else if (needLoadAllData) {\r\n filteredItems = dataQuery(filteredItems).filter(remoteFilter).toArray()\r\n }\r\n deferred.resolve(filteredItems)\r\n })).fail(deferred.reject.bind(deferred))\r\n }\r\n return deferred\r\n }\r\n updateSelectedItemKeyHash(keys) {\r\n for (var i = 0; i < keys.length; i++) {\r\n var keyHash = getKeyHash(keys[i]);\r\n if (!isObject(keyHash)) {\r\n this.options.keyHashIndices[keyHash] = this.options.keyHashIndices[keyHash] || [];\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n keyIndices.push(i)\r\n }\r\n }\r\n }\r\n _isAnyItemSelected(items) {\r\n for (var i = 0; i < items.length; i++) {\r\n if (this.options.isItemSelected(items[i])) {\r\n return\r\n }\r\n }\r\n return false\r\n }\r\n _getFullSelectAllState() {\r\n var items = this.options.plainItems();\r\n var dataFilter = this.options.filter();\r\n var selectedItems = this.options.ignoreDisabledItems ? this.options.selectedItems : this.options.selectedItems.filter(item => !(null !== item && void 0 !== item && item.disabled));\r\n if (dataFilter) {\r\n selectedItems = dataQuery(selectedItems).filter(dataFilter).toArray()\r\n }\r\n var selectedItemsLength = selectedItems.length;\r\n var disabledItemsLength = items.length - this.getSelectableItems(items).length;\r\n if (!selectedItemsLength) {\r\n return this._isAnyItemSelected(items)\r\n }\r\n if (selectedItemsLength >= this.options.totalCount() - disabledItemsLength) {\r\n return true\r\n }\r\n return\r\n }\r\n _getVisibleSelectAllState() {\r\n var items = this.getSelectableItems(this.options.plainItems());\r\n var hasSelectedItems = false;\r\n var hasUnselectedItems = false;\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var itemData = this.options.getItemData(item);\r\n var key = this.options.keyOf(itemData);\r\n if (this.options.isSelectableItem(item)) {\r\n if (this.isItemKeySelected(key)) {\r\n hasSelectedItems = true\r\n } else {\r\n hasUnselectedItems = true\r\n }\r\n }\r\n }\r\n if (hasSelectedItems) {\r\n return !hasUnselectedItems ? true : void 0\r\n } else {\r\n return false\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.deferred.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport SelectionStrategy from \"./selection.strategy\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nexport default class DeferredStrategy extends SelectionStrategy {\r\n getSelectedItems() {\r\n return this._loadFilteredData(this.options.selectionFilter)\r\n }\r\n getSelectedItemKeys() {\r\n var d = new Deferred;\r\n var that = this;\r\n var key = this.options.key();\r\n var select = isString(key) ? [key] : key;\r\n this._loadFilteredData(this.options.selectionFilter, null, select).done((function(items) {\r\n var keys = items.map((function(item) {\r\n return that.options.keyOf(item)\r\n }));\r\n d.resolve(keys)\r\n })).fail(d.reject);\r\n return d.promise()\r\n }\r\n selectedItemKeys(keys, preserve, isDeselect, isSelectAll) {\r\n if (isSelectAll) {\r\n var filter = this.options.filter();\r\n var needResetSelectionFilter = !filter || JSON.stringify(filter) === JSON.stringify(this.options.selectionFilter) && isDeselect;\r\n if (needResetSelectionFilter) {\r\n this._setOption(\"selectionFilter\", isDeselect ? [] : null)\r\n } else {\r\n this._addSelectionFilter(isDeselect, filter, isSelectAll)\r\n }\r\n } else {\r\n if (!preserve) {\r\n this._setOption(\"selectionFilter\", [])\r\n }\r\n for (var i = 0; i < keys.length; i++) {\r\n if (isDeselect) {\r\n this.removeSelectedItem(keys[i])\r\n } else {\r\n this.addSelectedItem(keys[i], isSelectAll, !preserve)\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new Deferred).resolve()\r\n }\r\n setSelectedItems(keys) {\r\n this._setOption(\"selectionFilter\", null);\r\n for (var i = 0; i < keys.length; i++) {\r\n this.addSelectedItem(keys[i])\r\n }\r\n }\r\n isItemDataSelected(itemData) {\r\n return this.isItemKeySelected(itemData)\r\n }\r\n isItemKeySelected(itemData) {\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n return !!dataQuery([itemData]).filter(selectionFilter).toArray().length\r\n }\r\n _getKeyExpr() {\r\n var keyField = this.options.key();\r\n if (Array.isArray(keyField) && 1 === keyField.length) {\r\n return keyField[0]\r\n }\r\n return keyField\r\n }\r\n _normalizeKey(key) {\r\n var keyExpr = this.options.key();\r\n if (Array.isArray(keyExpr) && 1 === keyExpr.length) {\r\n return key[keyExpr[0]]\r\n }\r\n return key\r\n }\r\n _getFilterByKey(key) {\r\n var keyField = this._getKeyExpr();\r\n var filter = [keyField, \"=\", this._normalizeKey(key)];\r\n if (Array.isArray(keyField)) {\r\n filter = [];\r\n for (var i = 0; i < keyField.length; i++) {\r\n filter.push([keyField[i], \"=\", key[keyField[i]]]);\r\n if (i !== keyField.length - 1) {\r\n filter.push(\"and\")\r\n }\r\n }\r\n }\r\n return filter\r\n }\r\n addSelectedItem(key, isSelectAll, skipFilter) {\r\n var filter = this._getFilterByKey(key);\r\n this._addSelectionFilter(false, filter, isSelectAll, skipFilter)\r\n }\r\n removeSelectedItem(key) {\r\n var filter = this._getFilterByKey(key);\r\n this._addSelectionFilter(true, filter)\r\n }\r\n validate() {\r\n var key = this.options.key;\r\n if (key && void 0 === key()) {\r\n throw errors.Error(\"E1042\", \"Deferred selection\")\r\n }\r\n }\r\n _findSubFilter(selectionFilter, filter) {\r\n if (!selectionFilter) {\r\n return -1\r\n }\r\n var filterString = JSON.stringify(filter);\r\n for (var index = 0; index < selectionFilter.length; index++) {\r\n var subFilter = selectionFilter[index];\r\n if (subFilter && JSON.stringify(subFilter) === filterString) {\r\n return index\r\n }\r\n }\r\n return -1\r\n }\r\n _isLastSubFilter(selectionFilter, filter) {\r\n if (selectionFilter && filter) {\r\n return this._findSubFilter(selectionFilter, filter) === selectionFilter.length - 1 || 0 === this._findSubFilter([selectionFilter], filter)\r\n }\r\n return false\r\n }\r\n _addFilterOperator(selectionFilter, filterOperator) {\r\n if (selectionFilter.length > 1 && isString(selectionFilter[1]) && selectionFilter[1] !== filterOperator) {\r\n selectionFilter = [selectionFilter]\r\n }\r\n if (selectionFilter.length) {\r\n selectionFilter.push(filterOperator)\r\n }\r\n return selectionFilter\r\n }\r\n _denormalizeFilter(filter) {\r\n if (filter && isString(filter[0])) {\r\n filter = [filter]\r\n }\r\n return filter\r\n }\r\n _isOnlyNegativeFiltersLeft(filters) {\r\n return filters.every((filterItem, i) => {\r\n if (i % 2 === 0) {\r\n return Array.isArray(filterItem) && \"!\" === filterItem[0]\r\n } else {\r\n return \"and\" === filterItem\r\n }\r\n })\r\n }\r\n _addSelectionFilter(isDeselect, filter, isSelectAll, skipFilter) {\r\n var _selectionFilter;\r\n var currentFilter = isDeselect ? [\"!\", filter] : filter;\r\n var currentOperation = isDeselect ? \"and\" : \"or\";\r\n var needAddFilter = true;\r\n var selectionFilter = this.options.selectionFilter || [];\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (null !== (_selectionFilter = selectionFilter) && void 0 !== _selectionFilter && _selectionFilter.length && !skipFilter) {\r\n var removedIndex = this._removeSameFilter(selectionFilter, filter, isDeselect, isSelectAll);\r\n var filterIndex = this._removeSameFilter(selectionFilter, filter, !isDeselect);\r\n var shouldCleanFilter = isDeselect && (-1 !== removedIndex || -1 !== filterIndex) && this._isOnlyNegativeFiltersLeft(selectionFilter);\r\n if (shouldCleanFilter) {\r\n selectionFilter = []\r\n }\r\n var isKeyOperatorsAfterRemoved = this._isKeyFilter(filter) && this._hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex);\r\n needAddFilter = filter.length && !isKeyOperatorsAfterRemoved\r\n }\r\n if (needAddFilter) {\r\n selectionFilter = this._addFilterOperator(selectionFilter, currentOperation);\r\n selectionFilter.push(currentFilter)\r\n }\r\n selectionFilter = this._normalizeFilter(selectionFilter);\r\n this._setOption(\"selectionFilter\", !isDeselect && !selectionFilter.length ? null : selectionFilter)\r\n }\r\n _normalizeFilter(filter) {\r\n if (filter && 1 === filter.length) {\r\n filter = filter[0]\r\n }\r\n return filter\r\n }\r\n _removeFilterByIndex(filter, filterIndex, isSelectAll) {\r\n var operation = filter[1];\r\n if (filterIndex > 0) {\r\n filter.splice(filterIndex - 1, 2)\r\n } else {\r\n filter.splice(filterIndex, 2)\r\n }\r\n if (isSelectAll && \"and\" === operation) {\r\n filter.splice(0, filter.length)\r\n }\r\n }\r\n _isSimpleKeyFilter(filter, key) {\r\n return 3 === filter.length && filter[0] === key && \"=\" === filter[1]\r\n }\r\n _isKeyFilter(filter) {\r\n if (2 === filter.length && \"!\" === filter[0]) {\r\n return this._isKeyFilter(filter[1])\r\n }\r\n var keyField = this._getKeyExpr();\r\n if (Array.isArray(keyField)) {\r\n if (filter.length !== 2 * keyField.length - 1) {\r\n return false\r\n }\r\n for (var i = 0; i < keyField.length; i++) {\r\n if (i > 0 && \"and\" !== filter[2 * i - 1]) {\r\n return false\r\n }\r\n if (!this._isSimpleKeyFilter(filter[2 * i], keyField[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return this._isSimpleKeyFilter(filter, keyField)\r\n }\r\n _hasKeyFiltersOnlyStartingFromIndex(selectionFilter, filterIndex) {\r\n if (filterIndex >= 0) {\r\n for (var i = filterIndex; i < selectionFilter.length; i++) {\r\n if (\"string\" !== typeof selectionFilter[i] && !this._isKeyFilter(selectionFilter[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n return false\r\n }\r\n _removeSameFilter(selectionFilter, filter, inverted, isSelectAll) {\r\n filter = inverted ? [\"!\", filter] : filter;\r\n if (JSON.stringify(filter) === JSON.stringify(selectionFilter)) {\r\n selectionFilter.splice(0, selectionFilter.length);\r\n return 0\r\n }\r\n var filterIndex = this._findSubFilter(selectionFilter, filter);\r\n if (filterIndex >= 0) {\r\n this._removeFilterByIndex(selectionFilter, filterIndex, isSelectAll);\r\n return filterIndex\r\n } else {\r\n for (var i = 0; i < selectionFilter.length; i++) {\r\n if (Array.isArray(selectionFilter[i]) && selectionFilter[i].length > 2) {\r\n var _filterIndex = this._removeSameFilter(selectionFilter[i], filter, false, isSelectAll);\r\n if (_filterIndex >= 0) {\r\n if (!selectionFilter[i].length) {\r\n this._removeFilterByIndex(selectionFilter, i, isSelectAll)\r\n } else if (1 === selectionFilter[i].length) {\r\n selectionFilter[i] = selectionFilter[i][0]\r\n }\r\n return _filterIndex\r\n }\r\n }\r\n }\r\n return -1\r\n }\r\n }\r\n getSelectAllState() {\r\n var filter = this.options.filter();\r\n var selectionFilter = this.options.selectionFilter;\r\n if (!selectionFilter) {\r\n return true\r\n }\r\n if (!selectionFilter.length) {\r\n return false\r\n }\r\n if (!filter || !filter.length) {\r\n return\r\n }\r\n selectionFilter = this._denormalizeFilter(selectionFilter);\r\n if (this._isLastSubFilter(selectionFilter, filter)) {\r\n return true\r\n }\r\n if (this._isLastSubFilter(selectionFilter, [\"!\", filter])) {\r\n return false\r\n }\r\n return\r\n }\r\n loadSelectedItemsWithFilter() {\r\n var componentFilter = this.options.filter();\r\n var selectionFilter = this.options.selectionFilter;\r\n var filter = componentFilter ? [componentFilter, \"and\", selectionFilter] : selectionFilter;\r\n return this._loadFilteredData(filter)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/core/utils/array_compare.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"./type\";\r\nvar getKeyWrapper = function(item, getKey) {\r\n var key = getKey(item);\r\n if (isObject(key)) {\r\n try {\r\n return JSON.stringify(key)\r\n } catch (e) {\r\n return key\r\n }\r\n }\r\n return key\r\n};\r\nvar getSameNewByOld = function(oldItem, newItems, newIndexByKey, getKey) {\r\n var key = getKeyWrapper(oldItem, getKey);\r\n return newItems[newIndexByKey[key]]\r\n};\r\nexport var isKeysEqual = function(oldKeys, newKeys) {\r\n if (oldKeys.length !== newKeys.length) {\r\n return false\r\n }\r\n for (var i = 0; i < newKeys.length; i++) {\r\n if (oldKeys[i] !== newKeys[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n};\r\nexport var findChanges = function(oldItems, newItems, getKey, isItemEquals) {\r\n var oldIndexByKey = {};\r\n var newIndexByKey = {};\r\n var addedCount = 0;\r\n var removeCount = 0;\r\n var result = [];\r\n oldItems.forEach((function(item, index) {\r\n var key = getKeyWrapper(item, getKey);\r\n oldIndexByKey[key] = index\r\n }));\r\n newItems.forEach((function(item, index) {\r\n var key = getKeyWrapper(item, getKey);\r\n newIndexByKey[key] = index\r\n }));\r\n var itemCount = Math.max(oldItems.length, newItems.length);\r\n for (var index = 0; index < itemCount + addedCount; index++) {\r\n var newItem = newItems[index];\r\n var oldNextIndex = index - addedCount + removeCount;\r\n var nextOldItem = oldItems[oldNextIndex];\r\n var isRemoved = !newItem || nextOldItem && !getSameNewByOld(nextOldItem, newItems, newIndexByKey, getKey);\r\n if (isRemoved) {\r\n if (nextOldItem) {\r\n result.push({\r\n type: \"remove\",\r\n key: getKey(nextOldItem),\r\n index: index,\r\n oldItem: nextOldItem\r\n });\r\n removeCount++;\r\n index--\r\n }\r\n } else {\r\n var key = getKeyWrapper(newItem, getKey);\r\n var oldIndex = oldIndexByKey[key];\r\n var oldItem = oldItems[oldIndex];\r\n if (!oldItem) {\r\n addedCount++;\r\n result.push({\r\n type: \"insert\",\r\n data: newItem,\r\n index: index\r\n })\r\n } else if (oldIndex === oldNextIndex) {\r\n if (!isItemEquals(oldItem, newItem)) {\r\n result.push({\r\n type: \"update\",\r\n data: newItem,\r\n key: getKey(newItem),\r\n index: index,\r\n oldItem: oldItem\r\n })\r\n }\r\n } else {\r\n return\r\n }\r\n }\r\n }\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/selection_filter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash,\r\n equalByValue\r\n} from \"./common\";\r\nimport {\r\n isString,\r\n isObject\r\n} from \"./type\";\r\nexport var SelectionFilterCreator = function(selectedItemKeys, isSelectAll) {\r\n this.getLocalFilter = function(keyGetter, equalKeys, equalByReference, keyExpr) {\r\n equalKeys = void 0 === equalKeys ? equalByValue : equalKeys;\r\n return functionFilter.bind(this, equalKeys, keyGetter, equalByReference, keyExpr)\r\n };\r\n this.getExpr = function(keyExpr) {\r\n if (!keyExpr) {\r\n return\r\n }\r\n var filterExpr;\r\n selectedItemKeys.forEach((function(key, index) {\r\n filterExpr = filterExpr || [];\r\n var filterExprPart;\r\n if (index > 0) {\r\n filterExpr.push(isSelectAll ? \"and\" : \"or\")\r\n }\r\n if (isString(keyExpr)) {\r\n filterExprPart = getFilterForPlainKey(keyExpr, key)\r\n } else {\r\n filterExprPart = function(keyExpr, itemKeyValue) {\r\n var filterExpr = [];\r\n for (var i = 0, length = keyExpr.length; i < length; i++) {\r\n var currentKeyExpr = keyExpr[i];\r\n var currentKeyValue = itemKeyValue && itemKeyValue[currentKeyExpr];\r\n var filterExprPart = getFilterForPlainKey(currentKeyExpr, currentKeyValue);\r\n if (!filterExprPart) {\r\n break\r\n }\r\n if (i > 0) {\r\n filterExpr.push(isSelectAll ? \"or\" : \"and\")\r\n }\r\n filterExpr.push(filterExprPart)\r\n }\r\n return filterExpr\r\n }(keyExpr, key)\r\n }\r\n filterExpr.push(filterExprPart)\r\n }));\r\n if (filterExpr && 1 === filterExpr.length) {\r\n filterExpr = filterExpr[0]\r\n }\r\n return filterExpr\r\n };\r\n this.getCombinedFilter = function(keyExpr, dataSourceFilter) {\r\n var forceCombinedFilter = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var filterExpr = this.getExpr(keyExpr);\r\n var combinedFilter = filterExpr;\r\n if ((forceCombinedFilter || isSelectAll) && dataSourceFilter) {\r\n if (filterExpr) {\r\n combinedFilter = [];\r\n combinedFilter.push(filterExpr);\r\n combinedFilter.push(dataSourceFilter)\r\n } else {\r\n combinedFilter = dataSourceFilter\r\n }\r\n }\r\n return combinedFilter\r\n };\r\n var selectedItemKeyHashesMap;\r\n var normalizeKeys = function(keys, keyOf, keyExpr) {\r\n return Array.isArray(keyExpr) ? keys.map(key => keyOf(key)) : keys\r\n };\r\n\r\n function functionFilter(equalKeys, keyOf, equalByReference, keyExpr, item) {\r\n var key = keyOf(item);\r\n var keyHash;\r\n var i;\r\n if (!equalByReference) {\r\n keyHash = getKeyHash(key);\r\n if (!isObject(keyHash)) {\r\n var selectedKeyHashesMap = function(keyOf, keyExpr) {\r\n if (!selectedItemKeyHashesMap) {\r\n selectedItemKeyHashesMap = {};\r\n var normalizedKeys = normalizeKeys(selectedItemKeys, keyOf, keyExpr);\r\n for (var i = 0; i < normalizedKeys.length; i++) {\r\n selectedItemKeyHashesMap[getKeyHash(normalizedKeys[i])] = true\r\n }\r\n }\r\n return selectedItemKeyHashesMap\r\n }(keyOf, keyExpr);\r\n if (selectedKeyHashesMap[keyHash]) {\r\n return !isSelectAll\r\n }\r\n return !!isSelectAll\r\n }\r\n }\r\n for (i = 0; i < selectedItemKeys.length; i++) {\r\n if (equalKeys(selectedItemKeys[i], key)) {\r\n return !isSelectAll\r\n }\r\n }\r\n return !!isSelectAll\r\n }\r\n\r\n function getFilterForPlainKey(keyExpr, keyValue) {\r\n if (void 0 === keyValue) {\r\n return\r\n }\r\n return [keyExpr, isSelectAll ? \"<>\" : \"=\", keyValue]\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.strategy.standard.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getKeyHash\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n removeDuplicates,\r\n getUniqueValues\r\n} from \"../../core/utils/array\";\r\nimport {\r\n isKeysEqual\r\n} from \"../../core/utils/array_compare\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n SelectionFilterCreator\r\n} from \"../../core/utils/selection_filter\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport SelectionStrategy from \"./selection.strategy\";\r\nexport default class StandardStrategy extends SelectionStrategy {\r\n constructor(options) {\r\n super(options);\r\n this._initSelectedItemKeyHash()\r\n }\r\n _initSelectedItemKeyHash() {\r\n this._setOption(\"keyHashIndices\", this.options.equalByReference ? null : {})\r\n }\r\n getSelectedItemKeys() {\r\n return this.options.selectedItemKeys.slice(0)\r\n }\r\n getSelectedItems() {\r\n return this.options.selectedItems.slice(0)\r\n }\r\n _preserveSelectionUpdate(items, isDeselect) {\r\n var keyOf = this.options.keyOf;\r\n var keyIndicesToRemoveMap;\r\n var keyIndex;\r\n var i;\r\n if (!keyOf) {\r\n return\r\n }\r\n var isBatchDeselect = isDeselect && items.length > 1 && !this.options.equalByReference;\r\n if (isBatchDeselect) {\r\n keyIndicesToRemoveMap = {}\r\n }\r\n for (i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n if (isDeselect) {\r\n keyIndex = this.removeSelectedItem(key, keyIndicesToRemoveMap, null === item || void 0 === item ? void 0 : item.disabled);\r\n if (keyIndicesToRemoveMap && keyIndex >= 0) {\r\n keyIndicesToRemoveMap[keyIndex] = true\r\n }\r\n } else {\r\n this.addSelectedItem(key, item)\r\n }\r\n }\r\n if (isBatchDeselect) {\r\n this._batchRemoveSelectedItems(keyIndicesToRemoveMap)\r\n }\r\n }\r\n _batchRemoveSelectedItems(keyIndicesToRemoveMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys.slice(0);\r\n var selectedItems = this.options.selectedItems.slice(0);\r\n this.options.selectedItemKeys.length = 0;\r\n this.options.selectedItems.length = 0;\r\n for (var i = 0; i < selectedItemKeys.length; i++) {\r\n if (!keyIndicesToRemoveMap[i]) {\r\n this.options.selectedItemKeys.push(selectedItemKeys[i]);\r\n this.options.selectedItems.push(selectedItems[i])\r\n }\r\n }\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n }\r\n _loadSelectedItemsCore(keys, isDeselect, isSelectAll, filter) {\r\n var forceCombinedFilter = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n var deferred = new Deferred;\r\n var key = this.options.key();\r\n if (!keys.length && !isSelectAll) {\r\n deferred.resolve([]);\r\n return deferred\r\n }\r\n if (isSelectAll && isDeselect && !filter) {\r\n deferred.resolve(this.getSelectedItems());\r\n return deferred\r\n }\r\n var selectionFilterCreator = new SelectionFilterCreator(keys, isSelectAll);\r\n var combinedFilter = selectionFilterCreator.getCombinedFilter(key, filter, forceCombinedFilter);\r\n var deselectedItems = [];\r\n if (isDeselect) {\r\n var selectedItems = this.options.selectedItems;\r\n deselectedItems = combinedFilter && keys.length !== selectedItems.length ? dataQuery(selectedItems).filter(combinedFilter).toArray() : selectedItems.slice(0)\r\n }\r\n var filteredItems = deselectedItems.length ? deselectedItems : this.options.plainItems(true).filter(this.options.isSelectableItem).map(this.options.getItemData);\r\n var localFilter = selectionFilterCreator.getLocalFilter(this.options.keyOf, this.equalKeys.bind(this), this.options.equalByReference, key);\r\n filteredItems = filteredItems.filter(localFilter);\r\n if (deselectedItems.length || !isSelectAll && filteredItems.length === keys.length) {\r\n deferred.resolve(filteredItems)\r\n } else {\r\n deferred = this._loadFilteredData(combinedFilter, localFilter, null, isSelectAll)\r\n }\r\n return deferred\r\n }\r\n _replaceSelectionUpdate(items) {\r\n var internalKeys = [];\r\n var keyOf = this.options.keyOf;\r\n if (!keyOf) {\r\n return\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var key = keyOf(item);\r\n internalKeys.push(key)\r\n }\r\n this.setSelectedItems(internalKeys, items)\r\n }\r\n _warnOnIncorrectKeys(keys) {\r\n var allowNullValue = this.options.allowNullValue;\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n if ((!allowNullValue || null !== key) && !this.isItemKeySelected(key)) {\r\n errors.log(\"W1002\", key)\r\n }\r\n }\r\n }\r\n _isMultiSelectEnabled() {\r\n var mode = this.options.mode;\r\n return \"all\" === mode || \"multiple\" === mode\r\n }\r\n _requestInProgress() {\r\n var _this$_lastLoadDeferr;\r\n return \"pending\" === (null === (_this$_lastLoadDeferr = this._lastLoadDeferred) || void 0 === _this$_lastLoadDeferr ? void 0 : _this$_lastLoadDeferr.state())\r\n }\r\n _concatRequestsItems(keys, isDeselect, oldRequestItems, updatedKeys) {\r\n var selectedItems;\r\n var deselectedItems = isDeselect ? keys : [];\r\n if (updatedKeys) {\r\n selectedItems = updatedKeys\r\n } else {\r\n selectedItems = removeDuplicates(keys, this.options.selectedItemKeys)\r\n }\r\n return {\r\n addedItems: oldRequestItems.added.concat(selectedItems),\r\n removedItems: oldRequestItems.removed.concat(deselectedItems),\r\n keys: keys\r\n }\r\n }\r\n _collectLastRequestData(keys, isDeselect, isSelectAll, updatedKeys) {\r\n var isDeselectAll = isDeselect && isSelectAll;\r\n var oldRequestItems = {\r\n added: [],\r\n removed: []\r\n };\r\n var multiSelectEnabled = this._isMultiSelectEnabled();\r\n var lastRequestData = multiSelectEnabled ? this._lastRequestData : {};\r\n if (multiSelectEnabled) {\r\n if (this._shouldMergeWithLastRequest) {\r\n if (isDeselectAll) {\r\n this._lastLoadDeferred.reject();\r\n lastRequestData = {}\r\n } else if (!isKeysEqual(keys, this.options.selectedItemKeys)) {\r\n oldRequestItems.added = lastRequestData.addedItems;\r\n oldRequestItems.removed = lastRequestData.removedItems;\r\n if (!isDeselect) {\r\n this._lastLoadDeferred.reject()\r\n }\r\n }\r\n }\r\n lastRequestData = this._concatRequestsItems(keys, isDeselect, oldRequestItems, this._shouldMergeWithLastRequest ? void 0 : updatedKeys)\r\n }\r\n return lastRequestData\r\n }\r\n _updateKeysByLastRequestData(keys, isDeselect, isSelectAll) {\r\n var currentKeys = keys;\r\n if (this._isMultiSelectEnabled() && this._shouldMergeWithLastRequest && !isDeselect && !isSelectAll) {\r\n var _this$_lastRequestDat, _this$_lastRequestDat2;\r\n currentKeys = removeDuplicates(keys.concat(null === (_this$_lastRequestDat = this._lastRequestData) || void 0 === _this$_lastRequestDat ? void 0 : _this$_lastRequestDat.addedItems), null === (_this$_lastRequestDat2 = this._lastRequestData) || void 0 === _this$_lastRequestDat2 ? void 0 : _this$_lastRequestDat2.removedItems);\r\n currentKeys = getUniqueValues(currentKeys)\r\n }\r\n return currentKeys\r\n }\r\n _loadSelectedItems(keys, isDeselect, isSelectAll, updatedKeys) {\r\n var forceCombinedFilter = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n var that = this;\r\n var deferred = new Deferred;\r\n var filter = that.options.filter();\r\n this._shouldMergeWithLastRequest = this._requestInProgress();\r\n this._lastRequestData = this._collectLastRequestData(keys, isDeselect, isSelectAll, updatedKeys);\r\n when(that._lastLoadDeferred).always((function() {\r\n var currentKeys = that._updateKeysByLastRequestData(keys, isDeselect, isSelectAll);\r\n that._shouldMergeWithLastRequest = false;\r\n that._loadSelectedItemsCore(currentKeys, isDeselect, isSelectAll, filter, forceCombinedFilter).done(deferred.resolve).fail(deferred.reject)\r\n }));\r\n that._lastLoadDeferred = deferred;\r\n return deferred\r\n }\r\n selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys) {\r\n var forceCombinedFilter = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : false;\r\n var that = this;\r\n var deferred = that._loadSelectedItems(keys, isDeselect, isSelectAll, updatedKeys, forceCombinedFilter);\r\n deferred.done((function(items) {\r\n if (preserve) {\r\n that._preserveSelectionUpdate(items, isDeselect)\r\n } else {\r\n that._replaceSelectionUpdate(items)\r\n }\r\n that.onSelectionChanged()\r\n }));\r\n return deferred\r\n }\r\n addSelectedItem(key, itemData) {\r\n if (isDefined(itemData) && !this.options.ignoreDisabledItems && itemData.disabled) {\r\n if (-1 === this.options.disabledItemKeys.indexOf(key)) {\r\n this.options.disabledItemKeys.push(key)\r\n }\r\n return\r\n }\r\n var keyHash = this._getKeyHash(key);\r\n if (-1 === this._indexOfSelectedItemKey(keyHash)) {\r\n if (!isObject(keyHash) && this.options.keyHashIndices) {\r\n this.options.keyHashIndices[keyHash] = [this.options.selectedItemKeys.length]\r\n }\r\n this.options.selectedItemKeys.push(key);\r\n this.options.addedItemKeys.push(key);\r\n this.options.addedItems.push(itemData);\r\n this.options.selectedItems.push(itemData)\r\n }\r\n }\r\n _getSelectedIndexByKey(key, ignoreIndicesMap) {\r\n var selectedItemKeys = this.options.selectedItemKeys;\r\n for (var index = 0; index < selectedItemKeys.length; index++) {\r\n if ((!ignoreIndicesMap || !ignoreIndicesMap[index]) && this.equalKeys(selectedItemKeys[index], key)) {\r\n return index\r\n }\r\n }\r\n return -1\r\n }\r\n _getSelectedIndexByHash(key, ignoreIndicesMap) {\r\n var indices = this.options.keyHashIndices[key];\r\n if (indices && indices.length > 1 && ignoreIndicesMap) {\r\n indices = indices.filter((function(index) {\r\n return !ignoreIndicesMap[index]\r\n }))\r\n }\r\n return indices && indices[0] >= 0 ? indices[0] : -1\r\n }\r\n _indexOfSelectedItemKey(key, ignoreIndicesMap) {\r\n var selectedIndex;\r\n if (this.options.equalByReference) {\r\n selectedIndex = this.options.selectedItemKeys.indexOf(key)\r\n } else if (isObject(key)) {\r\n selectedIndex = this._getSelectedIndexByKey(key, ignoreIndicesMap)\r\n } else {\r\n selectedIndex = this._getSelectedIndexByHash(key, ignoreIndicesMap)\r\n }\r\n return selectedIndex\r\n }\r\n _shiftSelectedKeyIndices(keyIndex) {\r\n for (var currentKeyIndex = keyIndex; currentKeyIndex < this.options.selectedItemKeys.length; currentKeyIndex++) {\r\n var currentKey = this.options.selectedItemKeys[currentKeyIndex];\r\n var currentKeyHash = getKeyHash(currentKey);\r\n var currentKeyIndices = this.options.keyHashIndices[currentKeyHash];\r\n if (!currentKeyIndices) {\r\n continue\r\n }\r\n for (var i = 0; i < currentKeyIndices.length; i++) {\r\n if (currentKeyIndices[i] > keyIndex) {\r\n currentKeyIndices[i]--\r\n }\r\n }\r\n }\r\n }\r\n removeSelectedItem(key, keyIndicesToRemoveMap, isDisabled) {\r\n if (!this.options.ignoreDisabledItems && isDisabled) {\r\n return\r\n }\r\n var keyHash = this._getKeyHash(key);\r\n var isBatchDeselect = !!keyIndicesToRemoveMap;\r\n var keyIndex = this._indexOfSelectedItemKey(keyHash, keyIndicesToRemoveMap);\r\n if (keyIndex < 0) {\r\n return keyIndex\r\n }\r\n this.options.removedItemKeys.push(key);\r\n this.options.removedItems.push(this.options.selectedItems[keyIndex]);\r\n if (isBatchDeselect) {\r\n return keyIndex\r\n }\r\n this.options.selectedItemKeys.splice(keyIndex, 1);\r\n this.options.selectedItems.splice(keyIndex, 1);\r\n if (isObject(keyHash) || !this.options.keyHashIndices) {\r\n return keyIndex\r\n }\r\n var keyIndices = this.options.keyHashIndices[keyHash];\r\n if (!keyIndices) {\r\n return keyIndex\r\n }\r\n keyIndices.shift();\r\n if (!keyIndices.length) {\r\n delete this.options.keyHashIndices[keyHash]\r\n }\r\n this._shiftSelectedKeyIndices(keyIndex);\r\n return keyIndex\r\n }\r\n _updateAddedItemKeys(keys, items) {\r\n for (var i = 0; i < keys.length; i++) {\r\n if (!this.isItemKeySelected(keys[i])) {\r\n this.options.addedItemKeys.push(keys[i]);\r\n this.options.addedItems.push(items[i])\r\n }\r\n }\r\n }\r\n _updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems) {\r\n for (var i = 0; i < oldSelectedKeys.length; i++) {\r\n if (!this.isItemKeySelected(oldSelectedKeys[i])) {\r\n this.options.removedItemKeys.push(oldSelectedKeys[i]);\r\n this.options.removedItems.push(oldSelectedItems[i])\r\n }\r\n }\r\n }\r\n _isItemSelectionInProgress(key, checkPending) {\r\n var shouldCheckPending = checkPending && this._lastRequestData && this._requestInProgress();\r\n if (shouldCheckPending) {\r\n var _this$_lastRequestDat3;\r\n var addedItems = null !== (_this$_lastRequestDat3 = this._lastRequestData.addedItems) && void 0 !== _this$_lastRequestDat3 ? _this$_lastRequestDat3 : [];\r\n return addedItems.includes(key)\r\n } else {\r\n return false\r\n }\r\n }\r\n _getKeyHash(key) {\r\n return this.options.equalByReference ? key : getKeyHash(key)\r\n }\r\n setSelectedItems(keys, items) {\r\n this._updateAddedItemKeys(keys, items);\r\n var oldSelectedKeys = this.options.selectedItemKeys;\r\n var oldSelectedItems = this.options.selectedItems;\r\n if (!this.options.equalByReference) {\r\n this._initSelectedItemKeyHash();\r\n this.updateSelectedItemKeyHash(keys)\r\n }\r\n this._setOption(\"selectedItemKeys\", keys);\r\n this._setOption(\"selectedItems\", items);\r\n this._updateRemovedItemKeys(keys, oldSelectedKeys, oldSelectedItems)\r\n }\r\n isItemDataSelected(itemData) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n var key = this.options.keyOf(itemData);\r\n return this.isItemKeySelected(key, options)\r\n }\r\n isItemKeySelected(key) {\r\n var options = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};\r\n var result = this._isItemSelectionInProgress(key, options.checkPending);\r\n if (!result) {\r\n var keyHash = this._getKeyHash(key);\r\n var index = this._indexOfSelectedItemKey(keyHash);\r\n result = -1 !== index\r\n }\r\n return result\r\n }\r\n getSelectAllState(visibleOnly) {\r\n if (visibleOnly) {\r\n return this._getVisibleSelectAllState()\r\n } else {\r\n return this._getFullSelectAllState()\r\n }\r\n }\r\n loadSelectedItemsWithFilter() {\r\n var keyExpr = this.options.key();\r\n var keys = this.getSelectedItemKeys();\r\n var filter = this.options.filter();\r\n if (!keys.length) {\r\n return Deferred().resolve([])\r\n }\r\n var selectionFilterCreator = new SelectionFilterCreator(keys);\r\n var combinedFilter = selectionFilterCreator.getCombinedFilter(keyExpr, filter, true);\r\n return this._loadFilteredData(combinedFilter)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/selection/selection.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport deferredStrategy from \"./selection.strategy.deferred\";\r\nimport standardStrategy from \"./selection.strategy.standard\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nexport default class Selection {\r\n constructor(options) {\r\n this.options = extend(this._getDefaultOptions(), options, {\r\n selectedItemKeys: options.selectedKeys || []\r\n });\r\n this._selectionStrategy = this.options.deferred ? new deferredStrategy(this.options) : new standardStrategy(this.options);\r\n this._focusedItemIndex = -1;\r\n if (!this.options.equalByReference) {\r\n this._selectionStrategy.updateSelectedItemKeyHash(this.options.selectedItemKeys)\r\n }\r\n }\r\n _getDefaultOptions() {\r\n return {\r\n allowNullValue: false,\r\n deferred: false,\r\n equalByReference: false,\r\n mode: \"multiple\",\r\n selectedItems: [],\r\n selectionFilter: [],\r\n maxFilterLengthInRequest: 0,\r\n onSelectionChanged: noop,\r\n key: noop,\r\n keyOf: function(item) {\r\n return item\r\n },\r\n load: function() {\r\n return (new Deferred).resolve([])\r\n },\r\n totalCount: function() {\r\n return -1\r\n },\r\n isSelectableItem: function() {\r\n return true\r\n },\r\n isItemSelected: function() {\r\n return false\r\n },\r\n getItemData: function(item) {\r\n return item\r\n },\r\n dataFields: noop,\r\n filter: noop\r\n }\r\n }\r\n validate() {\r\n this._selectionStrategy.validate()\r\n }\r\n getSelectedItemKeys() {\r\n return this._selectionStrategy.getSelectedItemKeys()\r\n }\r\n getSelectedItems() {\r\n return this._selectionStrategy.getSelectedItems()\r\n }\r\n selectionFilter(value) {\r\n if (void 0 === value) {\r\n return this.options.selectionFilter\r\n }\r\n var filterIsChanged = this.options.selectionFilter !== value && JSON.stringify(this.options.selectionFilter) !== JSON.stringify(value);\r\n this.options.selectionFilter = value;\r\n filterIsChanged && this.onSelectionChanged()\r\n }\r\n setSelection(keys, updatedKeys) {\r\n return this.selectedItemKeys(keys, false, false, false, updatedKeys)\r\n }\r\n select(keys) {\r\n return this.selectedItemKeys(keys, true)\r\n }\r\n deselect(keys) {\r\n return this.selectedItemKeys(keys, true, true)\r\n }\r\n selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys) {\r\n var _keys;\r\n keys = null !== (_keys = keys) && void 0 !== _keys ? _keys : [];\r\n keys = Array.isArray(keys) ? keys : [keys];\r\n this.validate();\r\n return this._selectionStrategy.selectedItemKeys(keys, preserve, isDeselect, isSelectAll, updatedKeys)\r\n }\r\n clearSelection() {\r\n return this.selectedItemKeys([])\r\n }\r\n _addSelectedItem(itemData, key) {\r\n this._selectionStrategy.addSelectedItem(key, itemData)\r\n }\r\n _removeSelectedItem(key) {\r\n this._selectionStrategy.removeSelectedItem(key)\r\n }\r\n _setSelectedItems(keys, items) {\r\n this._selectionStrategy.setSelectedItems(keys, items)\r\n }\r\n onSelectionChanged() {\r\n this._selectionStrategy.onSelectionChanged()\r\n }\r\n changeItemSelection(itemIndex, keys, setFocusOnly) {\r\n var _this$options$allowLo, _this$options;\r\n var isSelectedItemsChanged;\r\n var items = this.options.plainItems();\r\n var item = items[itemIndex];\r\n var deferred;\r\n var allowLoadByRange = null === (_this$options$allowLo = (_this$options = this.options).allowLoadByRange) || void 0 === _this$options$allowLo ? void 0 : _this$options$allowLo.call(_this$options);\r\n var indexOffset;\r\n var focusedItemNotInLoadedRange = false;\r\n var shiftFocusedItemNotInLoadedRange = false;\r\n var itemIsNotInLoadedRange = index => index >= 0 && !items.filter(it => it.loadIndex === index).length;\r\n if (allowLoadByRange && isDefined(item)) {\r\n indexOffset = item.loadIndex - itemIndex;\r\n itemIndex = item.loadIndex;\r\n focusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._focusedItemIndex);\r\n if (isDefined(this._shiftFocusedItemIndex)) {\r\n shiftFocusedItemNotInLoadedRange = itemIsNotInLoadedRange(this._shiftFocusedItemIndex)\r\n }\r\n }\r\n if (!this.isSelectable() || !this.isDataItem(item)) {\r\n return false\r\n }\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n keys = keys || {};\r\n if (keys.shift && \"multiple\" === this.options.mode && this._focusedItemIndex >= 0) {\r\n if (focusedItemNotInLoadedRange || shiftFocusedItemNotInLoadedRange) {\r\n isSelectedItemsChanged = itemIndex !== this._shiftFocusedItemIndex || this._focusedItemIndex !== this._shiftFocusedItemIndex;\r\n if (isSelectedItemsChanged) {\r\n deferred = this.changeItemSelectionWhenShiftKeyInVirtualPaging(itemIndex)\r\n }\r\n } else {\r\n isSelectedItemsChanged = this.changeItemSelectionWhenShiftKeyPressed(itemIndex, items, indexOffset)\r\n }\r\n } else if (keys.control) {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n if (!setFocusOnly) {\r\n var isSelected = this._selectionStrategy.isItemDataSelected(itemData);\r\n if (\"single\" === this.options.mode) {\r\n this.clearSelectedItems()\r\n }\r\n if (isSelected) {\r\n this._removeSelectedItem(itemKey)\r\n } else {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n }\r\n isSelectedItemsChanged = true\r\n } else {\r\n this._resetItemSelectionWhenShiftKeyPressed();\r\n var isKeysEqual = this._selectionStrategy.equalKeys(this.options.selectedItemKeys[0], itemKey);\r\n if (1 !== this.options.selectedItemKeys.length || !isKeysEqual) {\r\n this._setSelectedItems([itemKey], [itemData]);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n if (isSelectedItemsChanged) {\r\n when(deferred).done(() => {\r\n this._focusedItemIndex = itemIndex;\r\n !setFocusOnly && this.onSelectionChanged()\r\n });\r\n return true\r\n }\r\n }\r\n isDataItem(item) {\r\n return this.options.isSelectableItem(item)\r\n }\r\n isSelectable() {\r\n return \"single\" === this.options.mode || \"multiple\" === this.options.mode\r\n }\r\n isItemDataSelected(data) {\r\n return this._selectionStrategy.isItemDataSelected(data, {\r\n checkPending: true\r\n })\r\n }\r\n isItemSelected(arg, options) {\r\n return this._selectionStrategy.isItemKeySelected(arg, options)\r\n }\r\n _resetItemSelectionWhenShiftKeyPressed() {\r\n delete this._shiftFocusedItemIndex\r\n }\r\n _resetFocusedItemIndex() {\r\n this._focusedItemIndex = -1\r\n }\r\n changeItemSelectionWhenShiftKeyInVirtualPaging(loadIndex) {\r\n var loadOptions = this.options.getLoadOptions(loadIndex, this._focusedItemIndex, this._shiftFocusedItemIndex);\r\n var deferred = new Deferred;\r\n var indexOffset = loadOptions.skip;\r\n this.options.load(loadOptions).done(items => {\r\n this.changeItemSelectionWhenShiftKeyPressed(loadIndex, items, indexOffset);\r\n deferred.resolve()\r\n });\r\n return deferred.promise()\r\n }\r\n changeItemSelectionWhenShiftKeyPressed(itemIndex, items, indexOffset) {\r\n var isSelectedItemsChanged = false;\r\n var itemIndexStep;\r\n var indexOffsetDefined = isDefined(indexOffset);\r\n var index = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex;\r\n var keyOf = this.options.keyOf;\r\n var focusedItem = items[index];\r\n var focusedData = this.options.getItemData(focusedItem);\r\n var focusedKey = keyOf(focusedData);\r\n var isFocusedItemSelected = focusedItem && this.isItemDataSelected(focusedData);\r\n if (!isDefined(this._shiftFocusedItemIndex)) {\r\n this._shiftFocusedItemIndex = this._focusedItemIndex\r\n }\r\n var data;\r\n var itemKey;\r\n var startIndex;\r\n var endIndex;\r\n if (this._shiftFocusedItemIndex !== this._focusedItemIndex) {\r\n itemIndexStep = this._focusedItemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n startIndex = indexOffsetDefined ? this._focusedItemIndex - indexOffset : this._focusedItemIndex;\r\n endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex;\r\n for (index = startIndex; index !== endIndex; index += itemIndexStep) {\r\n if (indexOffsetDefined || this.isDataItem(items[index])) {\r\n itemKey = keyOf(this.options.getItemData(items[index]));\r\n this._removeSelectedItem(itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if (itemIndex !== this._shiftFocusedItemIndex) {\r\n itemIndexStep = itemIndex < this._shiftFocusedItemIndex ? 1 : -1;\r\n startIndex = indexOffsetDefined ? itemIndex - indexOffset : itemIndex;\r\n endIndex = indexOffsetDefined ? this._shiftFocusedItemIndex - indexOffset : this._shiftFocusedItemIndex;\r\n for (index = startIndex; index !== endIndex; index += itemIndexStep) {\r\n if (indexOffsetDefined || this.isDataItem(items[index])) {\r\n data = this.options.getItemData(items[index]);\r\n itemKey = keyOf(data);\r\n this._addSelectedItem(data, itemKey);\r\n isSelectedItemsChanged = true\r\n }\r\n }\r\n }\r\n if ((indexOffsetDefined || this.isDataItem(focusedItem)) && !isFocusedItemSelected) {\r\n this._addSelectedItem(focusedData, focusedKey);\r\n isSelectedItemsChanged = true\r\n }\r\n return isSelectedItemsChanged\r\n }\r\n clearSelectedItems() {\r\n this._setSelectedItems([], [])\r\n }\r\n selectAll(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(false)\r\n } else {\r\n return this.selectedItemKeys([], true, false, true)\r\n }\r\n }\r\n deselectAll(isOnePage) {\r\n this._resetFocusedItemIndex();\r\n if (isOnePage) {\r\n return this._onePageSelectAll(true)\r\n } else {\r\n return this.selectedItemKeys([], true, true, true)\r\n }\r\n }\r\n _onePageSelectAll(isDeselect) {\r\n var items = this._selectionStrategy.getSelectableItems(this.options.plainItems());\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (this.isDataItem(item)) {\r\n var itemData = this.options.getItemData(item);\r\n var itemKey = this.options.keyOf(itemData);\r\n var isSelected = this.isItemSelected(itemKey);\r\n if (!isSelected && !isDeselect) {\r\n this._addSelectedItem(itemData, itemKey)\r\n }\r\n if (isSelected && isDeselect) {\r\n this._removeSelectedItem(itemKey)\r\n }\r\n }\r\n }\r\n this.onSelectionChanged();\r\n return (new Deferred).resolve()\r\n }\r\n getSelectAllState(visibleOnly) {\r\n return this._selectionStrategy.getSelectAllState(visibleOnly)\r\n }\r\n loadSelectedItemsWithFilter() {\r\n return this._selectionStrategy.loadSelectedItemsWithFilter()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.edit.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport BaseCollectionWidget from \"./ui.collection_widget.base\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport PlainEditStrategy from \"./ui.collection_widget.edit.strategy.plain\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport {\r\n normalizeLoadResult\r\n} from \"../../data/data_source/utils\";\r\nimport Selection from \"../selection/selection\";\r\nimport {\r\n when,\r\n Deferred,\r\n fromPromise\r\n} from \"../../core/utils/deferred\";\r\nvar ITEM_DELETING_DATA_KEY = \"dxItemDeleting\";\r\nvar NOT_EXISTING_INDEX = -1;\r\nvar indexExists = function(index) {\r\n return index !== NOT_EXISTING_INDEX\r\n};\r\nvar CollectionWidget = BaseCollectionWidget.inherit({\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n selectedItem: true\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectionMode: \"none\",\r\n selectionRequired: false,\r\n selectByClick: true,\r\n selectedItems: [],\r\n selectedItemKeys: [],\r\n maxFilterLengthInRequest: 1500,\r\n keyExpr: null,\r\n selectedIndex: NOT_EXISTING_INDEX,\r\n selectedItem: null,\r\n onSelectionChanged: null,\r\n onItemReordered: null,\r\n onItemDeleting: null,\r\n onItemDeleted: null\r\n })\r\n },\r\n ctor: function(element, options) {\r\n this._userOptions = options || {};\r\n this.callBase(element, options)\r\n },\r\n _init: function() {\r\n this._initEditStrategy();\r\n this.callBase();\r\n this._initKeyGetter();\r\n this._initSelectionModule()\r\n },\r\n _initKeyGetter: function() {\r\n this._keyGetter = compileGetter(this.option(\"keyExpr\"))\r\n },\r\n _getKeysByItems: function(selectedItems) {\r\n return this._editStrategy.getKeysByItems(selectedItems)\r\n },\r\n _getItemsByKeys: function(selectedItemKeys, selectedItems) {\r\n return this._editStrategy.getItemsByKeys(selectedItemKeys, selectedItems)\r\n },\r\n _getKeyByIndex: function(index) {\r\n return this._editStrategy.getKeyByIndex(index)\r\n },\r\n _getIndexByKey: function(key) {\r\n return this._editStrategy.getIndexByKey(key)\r\n },\r\n _getIndexByItemData: function(itemData) {\r\n return this._editStrategy.getIndexByItemData(itemData)\r\n },\r\n _isKeySpecified: function() {\r\n return !!this._dataController.key()\r\n },\r\n _getCombinedFilter: function() {\r\n return this._dataController.filter()\r\n },\r\n key: function() {\r\n if (this.option(\"keyExpr\")) {\r\n return this.option(\"keyExpr\")\r\n }\r\n return this._dataController.key()\r\n },\r\n keyOf: function(item) {\r\n var key = item;\r\n if (this.option(\"keyExpr\")) {\r\n key = this._keyGetter(item)\r\n } else if (this._dataController.store()) {\r\n key = this._dataController.keyOf(item)\r\n }\r\n return key\r\n },\r\n _nullValueSelectionSupported: function() {\r\n return false\r\n },\r\n _initSelectionModule: function() {\r\n var that = this;\r\n var itemsGetter = that._editStrategy.itemsGetter;\r\n this._selection = new Selection({\r\n allowNullValue: this._nullValueSelectionSupported(),\r\n mode: this.option(\"selectionMode\"),\r\n maxFilterLengthInRequest: this.option(\"maxFilterLengthInRequest\"),\r\n equalByReference: !this._isKeySpecified(),\r\n onSelectionChanged: function(args) {\r\n if (args.addedItemKeys.length || args.removedItemKeys.length) {\r\n that.option(\"selectedItems\", that._getItemsByKeys(args.selectedItemKeys, args.selectedItems));\r\n that._updateSelectedItems(args)\r\n }\r\n },\r\n filter: that._getCombinedFilter.bind(that),\r\n totalCount: function() {\r\n var items = that.option(\"items\");\r\n var totalCount = that._dataController.totalCount();\r\n return totalCount >= 0 ? totalCount : that._getItemsCount(items)\r\n },\r\n key: that.key.bind(that),\r\n keyOf: that.keyOf.bind(that),\r\n load: function(options) {\r\n var _dataController$loadO;\r\n var dataController = that._dataController;\r\n options.customQueryParams = null === (_dataController$loadO = dataController.loadOptions()) || void 0 === _dataController$loadO ? void 0 : _dataController$loadO.customQueryParams;\r\n options.userData = dataController.userData();\r\n if (dataController.store()) {\r\n return dataController.loadFromStore(options).done((function(loadResult) {\r\n if (that._disposed) {\r\n return\r\n }\r\n var items = normalizeLoadResult(loadResult).data;\r\n dataController.applyMapFunction(items)\r\n }))\r\n } else {\r\n return (new Deferred).resolve(this.plainItems())\r\n }\r\n },\r\n dataFields: function() {\r\n return that._dataController.select()\r\n },\r\n plainItems: itemsGetter.bind(that._editStrategy)\r\n })\r\n },\r\n _getItemsCount: function(items) {\r\n return items.reduce((itemsCount, item) => itemsCount + (item.items ? this._getItemsCount(item.items) : 1), 0)\r\n },\r\n _initEditStrategy: function() {\r\n var Strategy = PlainEditStrategy;\r\n this._editStrategy = new Strategy(this)\r\n },\r\n _getSelectedItemIndices: function(keys) {\r\n var that = this;\r\n var indices = [];\r\n keys = keys || this._selection.getSelectedItemKeys();\r\n that._editStrategy.beginCache();\r\n each(keys, (function(_, key) {\r\n var selectedIndex = that._getIndexByKey(key);\r\n if (indexExists(selectedIndex)) {\r\n indices.push(selectedIndex)\r\n }\r\n }));\r\n that._editStrategy.endCache();\r\n return indices\r\n },\r\n _initMarkup: function() {\r\n this._rendering = true;\r\n if (!this._dataController.isLoading()) {\r\n this._syncSelectionOptions().done(() => this._normalizeSelectedItems())\r\n }\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._rendering = false\r\n },\r\n _fireContentReadyAction: function() {\r\n this._rendering = false;\r\n this._rendered = true;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _syncSelectionOptions: function(byOption) {\r\n byOption = byOption || this._chooseSelectOption();\r\n var selectedItem;\r\n var selectedIndex;\r\n var selectedItemKeys;\r\n var selectedItems;\r\n switch (byOption) {\r\n case \"selectedIndex\":\r\n selectedItem = this._editStrategy.getItemDataByIndex(this.option(\"selectedIndex\"));\r\n if (isDefined(selectedItem)) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n } else {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItem\", null)\r\n }\r\n break;\r\n case \"selectedItems\":\r\n selectedItems = this.option(\"selectedItems\") || [];\r\n selectedIndex = selectedItems.length ? this._editStrategy.getIndexByItemData(selectedItems[0]) : NOT_EXISTING_INDEX;\r\n if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItems[0]);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems(selectedItems));\r\n break;\r\n case \"selectedItem\":\r\n selectedItem = this.option(\"selectedItem\");\r\n selectedIndex = this._editStrategy.getIndexByItemData(selectedItem);\r\n if (this.option(\"selectionRequired\") && !indexExists(selectedIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n if (isDefined(selectedItem)) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [selectedItem]);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", selectedIndex);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._editStrategy.getKeysByItems([selectedItem]))\r\n } else {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", []);\r\n this._setOptionWithoutOptionChange(\"selectedIndex\", NOT_EXISTING_INDEX)\r\n }\r\n break;\r\n case \"selectedItemKeys\":\r\n selectedItemKeys = this.option(\"selectedItemKeys\");\r\n if (this.option(\"selectionRequired\")) {\r\n var selectedItemIndex = this._getIndexByKey(selectedItemKeys[0]);\r\n if (!indexExists(selectedItemIndex)) {\r\n return this._syncSelectionOptions(\"selectedIndex\")\r\n }\r\n }\r\n return this._selection.setSelection(selectedItemKeys)\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n _chooseSelectOption: function() {\r\n var optionName = \"selectedIndex\";\r\n var isOptionDefined = function(optionName) {\r\n var optionValue = this.option(optionName);\r\n var length = isDefined(optionValue) && optionValue.length;\r\n return length || optionName in this._userOptions\r\n }.bind(this);\r\n if (isOptionDefined(\"selectedItems\")) {\r\n optionName = \"selectedItems\"\r\n } else if (isOptionDefined(\"selectedItem\")) {\r\n optionName = \"selectedItem\"\r\n } else if (isOptionDefined(\"selectedItemKeys\")) {\r\n optionName = \"selectedItemKeys\"\r\n }\r\n return optionName\r\n },\r\n _compareKeys: function(oldKeys, newKeys) {\r\n if (oldKeys.length !== newKeys.length) {\r\n return false\r\n }\r\n for (var i = 0; i < newKeys.length; i++) {\r\n if (oldKeys[i] !== newKeys[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _normalizeSelectedItems: function() {\r\n if (\"none\" === this.option(\"selectionMode\")) {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._syncSelectionOptions(\"selectedItems\")\r\n } else if (\"single\" === this.option(\"selectionMode\")) {\r\n var newSelection = this.option(\"selectedItems\");\r\n if (newSelection.length > 1 || !newSelection.length && this.option(\"selectionRequired\") && this.option(\"items\") && this.option(\"items\").length) {\r\n var currentSelection = this._selection.getSelectedItems();\r\n var normalizedSelection = void 0 === newSelection[0] ? currentSelection[0] : newSelection[0];\r\n if (void 0 === normalizedSelection) {\r\n normalizedSelection = this._editStrategy.itemsGetter()[0]\r\n }\r\n if (this.option(\"grouped\") && normalizedSelection && normalizedSelection.items) {\r\n normalizedSelection.items = [normalizedSelection.items[0]]\r\n }\r\n this._selection.setSelection(this._getKeysByItems([normalizedSelection]));\r\n this._setOptionWithoutOptionChange(\"selectedItems\", [normalizedSelection]);\r\n return this._syncSelectionOptions(\"selectedItems\")\r\n } else {\r\n this._selection.setSelection(this._getKeysByItems(newSelection))\r\n }\r\n } else {\r\n var newKeys = this._getKeysByItems(this.option(\"selectedItems\"));\r\n var oldKeys = this._selection.getSelectedItemKeys();\r\n if (!this._compareKeys(oldKeys, newKeys)) {\r\n this._selection.setSelection(newKeys)\r\n }\r\n }\r\n return (new Deferred).resolve().promise()\r\n },\r\n _itemClickHandler: function(e) {\r\n var itemSelectPromise = (new Deferred).resolve();\r\n var callBase = this.callBase;\r\n this._createAction(function(e) {\r\n var _this$_itemSelectHand;\r\n itemSelectPromise = null !== (_this$_itemSelectHand = this._itemSelectHandler(e.event)) && void 0 !== _this$_itemSelectHand ? _this$_itemSelectHand : itemSelectPromise\r\n }.bind(this), {\r\n validatingTargetName: \"itemElement\"\r\n })({\r\n itemElement: $(e.currentTarget),\r\n event: e\r\n });\r\n itemSelectPromise.always(() => {\r\n callBase.apply(this, arguments)\r\n })\r\n },\r\n _itemSelectHandler: function(e) {\r\n var _itemSelectPromise;\r\n var itemSelectPromise;\r\n if (!this.option(\"selectByClick\")) {\r\n return\r\n }\r\n var $itemElement = e.currentTarget;\r\n if (this.isItemSelected($itemElement)) {\r\n this.unselectItem(e.currentTarget)\r\n } else {\r\n itemSelectPromise = this.selectItem(e.currentTarget)\r\n }\r\n return null === (_itemSelectPromise = itemSelectPromise) || void 0 === _itemSelectPromise ? void 0 : _itemSelectPromise.promise()\r\n },\r\n _selectedItemElement: function(index) {\r\n return this._itemElements().eq(index)\r\n },\r\n _postprocessRenderItem: function(args) {\r\n if (\"none\" !== this.option(\"selectionMode\")) {\r\n var $itemElement = $(args.itemElement);\r\n var normalizedItemIndex = this._editStrategy.getNormalizedIndex($itemElement);\r\n var isItemSelected = this._isItemSelected(normalizedItemIndex);\r\n this._processSelectableItem($itemElement, isItemSelected)\r\n }\r\n },\r\n _processSelectableItem: function($itemElement, isSelected) {\r\n $itemElement.toggleClass(this._selectedItemClass(), isSelected);\r\n this._setAriaSelectionAttribute($itemElement, String(isSelected))\r\n },\r\n _updateSelectedItems: function(args) {\r\n var that = this;\r\n var addedItemKeys = args.addedItemKeys;\r\n var removedItemKeys = args.removedItemKeys;\r\n if (that._rendered && (addedItemKeys.length || removedItemKeys.length)) {\r\n var selectionChangePromise = that._selectionChangePromise;\r\n if (!that._rendering) {\r\n var addedSelection = [];\r\n var normalizedIndex;\r\n var removedSelection = [];\r\n that._editStrategy.beginCache();\r\n for (var i = 0; i < addedItemKeys.length; i++) {\r\n normalizedIndex = that._getIndexByKey(addedItemKeys[i]);\r\n addedSelection.push(normalizedIndex);\r\n that._addSelection(normalizedIndex)\r\n }\r\n for (var _i = 0; _i < removedItemKeys.length; _i++) {\r\n normalizedIndex = that._getIndexByKey(removedItemKeys[_i]);\r\n removedSelection.push(normalizedIndex);\r\n that._removeSelection(normalizedIndex)\r\n }\r\n that._editStrategy.endCache();\r\n that._updateSelection(addedSelection, removedSelection)\r\n }\r\n when(selectionChangePromise).done((function() {\r\n that._fireSelectionChangeEvent(args.addedItems, args.removedItems)\r\n }))\r\n }\r\n },\r\n _fireSelectionChangeEvent: function(addedItems, removedItems) {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })({\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n _updateSelection: noop,\r\n _setAriaSelectionAttribute: function($target, value) {\r\n this.setAria(\"selected\", value, $target)\r\n },\r\n _removeSelection: function(normalizedIndex) {\r\n var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n if (indexExists(normalizedIndex)) {\r\n this._processSelectableItem($itemElement, false);\r\n eventsEngine.triggerHandler($itemElement, \"stateChanged\", false)\r\n }\r\n },\r\n _addSelection: function(normalizedIndex) {\r\n var $itemElement = this._editStrategy.getItemElement(normalizedIndex);\r\n if (indexExists(normalizedIndex)) {\r\n this._processSelectableItem($itemElement, true);\r\n eventsEngine.triggerHandler($itemElement, \"stateChanged\", true)\r\n }\r\n },\r\n _isItemSelected: function(index) {\r\n var key = this._getKeyByIndex(index);\r\n return this._selection.isItemSelected(key, {\r\n checkPending: true\r\n })\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"selectionMode\":\r\n this._invalidate();\r\n break;\r\n case \"dataSource\":\r\n if (!args.value || Array.isArray(args.value) && !args.value.length) {\r\n this.option(\"selectedItemKeys\", [])\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"selectedIndex\":\r\n case \"selectedItem\":\r\n case \"selectedItems\":\r\n case \"selectedItemKeys\":\r\n this._syncSelectionOptions(args.name).done(() => this._normalizeSelectedItems());\r\n break;\r\n case \"keyExpr\":\r\n this._initKeyGetter();\r\n break;\r\n case \"selectionRequired\":\r\n this._normalizeSelectedItems();\r\n break;\r\n case \"selectByClick\":\r\n case \"onSelectionChanged\":\r\n case \"onItemDeleting\":\r\n case \"onItemDeleted\":\r\n case \"onItemReordered\":\r\n case \"maxFilterLengthInRequest\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearSelectedItems: function() {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", []);\r\n this._syncSelectionOptions(\"selectedItems\")\r\n },\r\n _waitDeletingPrepare: function($itemElement) {\r\n if ($itemElement.data(ITEM_DELETING_DATA_KEY)) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n $itemElement.data(ITEM_DELETING_DATA_KEY, true);\r\n var deferred = new Deferred;\r\n var deletingActionArgs = {\r\n cancel: false\r\n };\r\n var deletePromise = this._itemEventHandler($itemElement, \"onItemDeleting\", deletingActionArgs, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n when(deletePromise).always(function(value) {\r\n var deletePromiseExists = !deletePromise;\r\n var deletePromiseResolved = !deletePromiseExists && \"resolved\" === deletePromise.state();\r\n var argumentsSpecified = !!arguments.length;\r\n var shouldDelete = deletePromiseExists || deletePromiseResolved && !argumentsSpecified || deletePromiseResolved && value;\r\n when(fromPromise(deletingActionArgs.cancel)).always((function() {\r\n $itemElement.data(ITEM_DELETING_DATA_KEY, false)\r\n })).done((function(cancel) {\r\n shouldDelete && !cancel ? deferred.resolve() : deferred.reject()\r\n })).fail(deferred.reject)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _deleteItemFromDS: function($item) {\r\n var dataController = this._dataController;\r\n var deferred = new Deferred;\r\n var disabledState = this.option(\"disabled\");\r\n var dataStore = dataController.store();\r\n if (!dataStore) {\r\n return (new Deferred).resolve().promise()\r\n }\r\n if (!dataStore.remove) {\r\n throw errors.Error(\"E1011\")\r\n }\r\n this.option(\"disabled\", true);\r\n dataStore.remove(dataController.keyOf(this._getItemData($item))).done((function(key) {\r\n if (void 0 !== key) {\r\n deferred.resolve()\r\n } else {\r\n deferred.reject()\r\n }\r\n })).fail((function() {\r\n deferred.reject()\r\n }));\r\n deferred.always(function() {\r\n this.option(\"disabled\", disabledState)\r\n }.bind(this));\r\n return deferred\r\n },\r\n _tryRefreshLastPage: function() {\r\n var deferred = new Deferred;\r\n if (this._isLastPage() || this.option(\"grouped\")) {\r\n deferred.resolve()\r\n } else {\r\n this._refreshLastPage().done((function() {\r\n deferred.resolve()\r\n }))\r\n }\r\n return deferred.promise()\r\n },\r\n _refreshLastPage: function() {\r\n this._expectLastItemLoading();\r\n return this._dataController.load()\r\n },\r\n _updateSelectionAfterDelete: function(index) {\r\n var key = this._getKeyByIndex(index);\r\n this._selection.deselect([key])\r\n },\r\n _updateIndicesAfterIndex: function(index) {\r\n var itemElements = this._itemElements();\r\n for (var i = index + 1; i < itemElements.length; i++) {\r\n $(itemElements[i]).data(this._itemIndexKey(), i - 1)\r\n }\r\n },\r\n _simulateOptionChange: function(optionName) {\r\n var optionValue = this.option(optionName);\r\n if (optionValue instanceof DataSource) {\r\n return\r\n }\r\n this._optionChangedAction({\r\n name: optionName,\r\n fullName: optionName,\r\n value: optionValue\r\n })\r\n },\r\n isItemSelected: function(itemElement) {\r\n return this._isItemSelected(this._editStrategy.getNormalizedIndex(itemElement))\r\n },\r\n selectItem: function(itemElement) {\r\n if (\"none\" === this.option(\"selectionMode\")) {\r\n return\r\n }\r\n var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n if (!indexExists(itemIndex)) {\r\n return\r\n }\r\n var key = this._getKeyByIndex(itemIndex);\r\n if (this._selection.isItemSelected(key)) {\r\n return\r\n }\r\n if (\"single\" === this.option(\"selectionMode\")) {\r\n return this._selection.setSelection([key])\r\n } else {\r\n var selectedItemKeys = this.option(\"selectedItemKeys\") || [];\r\n return this._selection.setSelection([...selectedItemKeys, key], [key])\r\n }\r\n },\r\n unselectItem: function(itemElement) {\r\n var itemIndex = this._editStrategy.getNormalizedIndex(itemElement);\r\n if (!indexExists(itemIndex)) {\r\n return\r\n }\r\n var selectedItemKeys = this._selection.getSelectedItemKeys();\r\n if (this.option(\"selectionRequired\") && selectedItemKeys.length <= 1) {\r\n return\r\n }\r\n var key = this._getKeyByIndex(itemIndex);\r\n if (!this._selection.isItemSelected(key, {\r\n checkPending: true\r\n })) {\r\n return\r\n }\r\n this._selection.deselect([key])\r\n },\r\n _deleteItemElementByIndex: function(index) {\r\n this._updateSelectionAfterDelete(index);\r\n this._updateIndicesAfterIndex(index);\r\n this._editStrategy.deleteItemAtIndex(index)\r\n },\r\n _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n var changingOption = this._dataController.getDataSource() ? \"dataSource\" : \"items\";\r\n this._simulateOptionChange(changingOption);\r\n this._itemEventHandler($item, \"onItemDeleted\", deletedActionArgs, {\r\n beforeExecute: function() {\r\n $item.remove()\r\n },\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this._renderEmptyMessage()\r\n },\r\n deleteItem: function(itemElement) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n var index = this._editStrategy.getNormalizedIndex(itemElement);\r\n var itemResponseWaitClass = this._itemResponseWaitClass();\r\n if (indexExists(index)) {\r\n this._waitDeletingPrepare($item).done((function() {\r\n $item.addClass(itemResponseWaitClass);\r\n var deletedActionArgs = that._extendActionArgs($item);\r\n that._deleteItemFromDS($item).done((function() {\r\n that._deleteItemElementByIndex(index);\r\n that._afterItemElementDeleted($item, deletedActionArgs);\r\n that._tryRefreshLastPage().done((function() {\r\n deferred.resolveWith(that)\r\n }))\r\n })).fail((function() {\r\n $item.removeClass(itemResponseWaitClass);\r\n deferred.rejectWith(that)\r\n }))\r\n })).fail((function() {\r\n deferred.rejectWith(that)\r\n }))\r\n } else {\r\n deferred.rejectWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var deferred = new Deferred;\r\n var that = this;\r\n var strategy = this._editStrategy;\r\n var $movingItem = strategy.getItemElement(itemElement);\r\n var $destinationItem = strategy.getItemElement(toItemElement);\r\n var movingIndex = strategy.getNormalizedIndex(itemElement);\r\n var destinationIndex = strategy.getNormalizedIndex(toItemElement);\r\n var changingOption = this._dataController.getDataSource() ? \"dataSource\" : \"items\";\r\n var canMoveItems = indexExists(movingIndex) && indexExists(destinationIndex) && movingIndex !== destinationIndex;\r\n if (canMoveItems) {\r\n deferred.resolveWith(this)\r\n } else {\r\n deferred.rejectWith(this)\r\n }\r\n return deferred.promise().done((function() {\r\n $destinationItem[strategy.itemPlacementFunc(movingIndex, destinationIndex)]($movingItem);\r\n strategy.moveItemAtIndexToIndex(movingIndex, destinationIndex);\r\n this._updateIndicesAfterIndex(movingIndex);\r\n that.option(\"selectedItems\", that._getItemsByKeys(that._selection.getSelectedItemKeys(), that._selection.getSelectedItems()));\r\n if (\"items\" === changingOption) {\r\n that._simulateOptionChange(changingOption)\r\n }\r\n that._itemEventHandler($movingItem, \"onItemReordered\", {\r\n fromIndex: strategy.getIndex(movingIndex),\r\n toIndex: strategy.getIndex(destinationIndex)\r\n }, {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }))\r\n }\r\n});\r\nexport default CollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.async.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport CollectionWidgetEdit from \"./ui.collection_widget.edit\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar AsyncCollectionWidget = CollectionWidgetEdit.inherit({\r\n _initMarkup() {\r\n this._deferredItems = [];\r\n this.callBase()\r\n },\r\n _renderItemContent(args) {\r\n var renderContentDeferred = new Deferred;\r\n var itemDeferred = new Deferred;\r\n this._deferredItems[args.index] = itemDeferred;\r\n var $itemContent = this.callBase.call(this, args);\r\n itemDeferred.done(() => {\r\n renderContentDeferred.resolve($itemContent)\r\n });\r\n return renderContentDeferred.promise()\r\n },\r\n _onItemTemplateRendered: function(itemTemplate, renderArgs) {\r\n return () => {\r\n this._deferredItems[renderArgs.index].resolve()\r\n }\r\n },\r\n _postProcessRenderItems: noop,\r\n _renderItemsAsync() {\r\n var d = new Deferred;\r\n when.apply(this, this._deferredItems).done(() => {\r\n this._postProcessRenderItems();\r\n d.resolve()\r\n });\r\n return d.promise()\r\n },\r\n _clean() {\r\n this.callBase();\r\n this._deferredItems = []\r\n }\r\n});\r\nexport default AsyncCollectionWidget;\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/constants.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var TOOLBAR_CLASS = \"dx-toolbar\";\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/ui.toolbar.base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getOuterWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isMaterial,\r\n waitWebFont\r\n} from \"../themes\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport AsyncCollectionWidget from \"../collection/ui.collection_widget.async\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n TOOLBAR_CLASS\r\n} from \"./constants\";\r\nvar TOOLBAR_BEFORE_CLASS = \"dx-toolbar-before\";\r\nvar TOOLBAR_CENTER_CLASS = \"dx-toolbar-center\";\r\nvar TOOLBAR_AFTER_CLASS = \"dx-toolbar-after\";\r\nvar TOOLBAR_MINI_CLASS = \"dx-toolbar-mini\";\r\nvar TOOLBAR_ITEM_CLASS = \"dx-toolbar-item\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar TOOLBAR_BUTTON_CLASS = \"dx-toolbar-button\";\r\nvar TOOLBAR_ITEMS_CONTAINER_CLASS = \"dx-toolbar-items-container\";\r\nvar TOOLBAR_GROUP_CLASS = \"dx-toolbar-group\";\r\nvar TOOLBAR_COMPACT_CLASS = \"dx-toolbar-compact\";\r\nvar TEXT_BUTTON_MODE = \"text\";\r\nvar DEFAULT_BUTTON_TYPE = \"default\";\r\nvar DEFAULT_DROPDOWNBUTTON_STYLING_MODE = \"contained\";\r\nvar TOOLBAR_ITEM_DATA_KEY = \"dxToolbarItemDataKey\";\r\nvar ANIMATION_TIMEOUT = 15;\r\nclass ToolbarBase extends AsyncCollectionWidget {\r\n _getSynchronizableOptionsForCreateComponent() {\r\n return super._getSynchronizableOptionsForCreateComponent().filter(item => \"disabled\" !== item)\r\n }\r\n _initTemplates() {\r\n super._initTemplates();\r\n var template = new BindableTemplate(function($container, data, rawModel) {\r\n if (isPlainObject(data)) {\r\n var {\r\n text: text,\r\n html: html,\r\n widget: widget\r\n } = data;\r\n if (text) {\r\n $container.text(text).wrapInner(\"<div>\")\r\n }\r\n if (html) {\r\n $container.html(html)\r\n }\r\n if (\"dxDropDownButton\" === widget) {\r\n var _data$options;\r\n data.options = null !== (_data$options = data.options) && void 0 !== _data$options ? _data$options : {};\r\n if (!isDefined(data.options.stylingMode)) {\r\n data.options.stylingMode = this.option(\"useFlatButtons\") ? TEXT_BUTTON_MODE : DEFAULT_DROPDOWNBUTTON_STYLING_MODE\r\n }\r\n }\r\n if (\"dxButton\" === widget) {\r\n if (this.option(\"useFlatButtons\")) {\r\n var _data$options2, _data$options$styling;\r\n data.options = null !== (_data$options2 = data.options) && void 0 !== _data$options2 ? _data$options2 : {};\r\n data.options.stylingMode = null !== (_data$options$styling = data.options.stylingMode) && void 0 !== _data$options$styling ? _data$options$styling : TEXT_BUTTON_MODE\r\n }\r\n if (this.option(\"useDefaultButtons\")) {\r\n var _data$options3, _data$options$type;\r\n data.options = null !== (_data$options3 = data.options) && void 0 !== _data$options3 ? _data$options3 : {};\r\n data.options.type = null !== (_data$options$type = data.options.type) && void 0 !== _data$options$type ? _data$options$type : DEFAULT_BUTTON_TYPE\r\n }\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: rawModel,\r\n parent: this\r\n })\r\n }.bind(this), [\"text\", \"html\", \"widget\", \"options\"], this.option(\"integrationOptions.watchMethod\"));\r\n this._templateManager.addDefaultTemplates({\r\n item: template,\r\n menuItem: template\r\n })\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n renderAs: \"topToolbar\",\r\n grouped: false,\r\n useFlatButtons: false,\r\n useDefaultButtons: false\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n useFlatButtons: true\r\n }\r\n }])\r\n }\r\n _itemContainer() {\r\n return this._$toolbarItemsContainer.find([\".\".concat(TOOLBAR_BEFORE_CLASS), \".\".concat(TOOLBAR_CENTER_CLASS), \".\".concat(TOOLBAR_AFTER_CLASS)].join(\",\"))\r\n }\r\n _itemClass() {\r\n return TOOLBAR_ITEM_CLASS\r\n }\r\n _itemDataKey() {\r\n return TOOLBAR_ITEM_DATA_KEY\r\n }\r\n _dimensionChanged() {\r\n if (this._disposed) {\r\n return\r\n }\r\n this._arrangeItems();\r\n this._applyCompactMode()\r\n }\r\n _initMarkup() {\r\n this._renderToolbar();\r\n this._renderSections();\r\n super._initMarkup()\r\n }\r\n _render() {\r\n super._render();\r\n this._renderItemsAsync();\r\n this._updateDimensionsInMaterial()\r\n }\r\n _postProcessRenderItems() {\r\n this._arrangeItems()\r\n }\r\n _renderToolbar() {\r\n this.$element().addClass(TOOLBAR_CLASS);\r\n this._$toolbarItemsContainer = $(\"<div>\").addClass(TOOLBAR_ITEMS_CONTAINER_CLASS).appendTo(this.$element());\r\n this.setAria(\"role\", \"toolbar\")\r\n }\r\n _renderSections() {\r\n var $container = this._$toolbarItemsContainer;\r\n each([\"before\", \"center\", \"after\"], (_, section) => {\r\n var sectionClass = \"dx-toolbar-\".concat(section);\r\n var $section = $container.find(\".\".concat(sectionClass));\r\n if (!$section.length) {\r\n this[\"_$\".concat(section, \"Section\")] = $(\"<div>\").addClass(sectionClass).appendTo($container)\r\n }\r\n })\r\n }\r\n _arrangeItems(elementWidth) {\r\n var _elementWidth;\r\n elementWidth = null !== (_elementWidth = elementWidth) && void 0 !== _elementWidth ? _elementWidth : getWidth(this.$element());\r\n this._$centerSection.css({\r\n margin: \"0 auto\",\r\n float: \"none\"\r\n });\r\n var beforeRect = getBoundingRect(this._$beforeSection.get(0));\r\n var afterRect = getBoundingRect(this._$afterSection.get(0));\r\n this._alignCenterSection(beforeRect, afterRect, elementWidth);\r\n var $label = this._$toolbarItemsContainer.find(\".\".concat(TOOLBAR_LABEL_CLASS)).eq(0);\r\n var $section = $label.parent();\r\n if (!$label.length) {\r\n return\r\n }\r\n var labelOffset = beforeRect.width ? beforeRect.width : $label.position().left;\r\n var widthBeforeSection = $section.hasClass(TOOLBAR_BEFORE_CLASS) ? 0 : labelOffset;\r\n var widthAfterSection = $section.hasClass(TOOLBAR_AFTER_CLASS) ? 0 : afterRect.width;\r\n var elemsAtSectionWidth = 0;\r\n $section.children().not(\".\".concat(TOOLBAR_LABEL_CLASS)).each((function() {\r\n elemsAtSectionWidth += getOuterWidth(this)\r\n }));\r\n var freeSpace = elementWidth - elemsAtSectionWidth;\r\n var sectionMaxWidth = Math.max(freeSpace - widthBeforeSection - widthAfterSection, 0);\r\n if ($section.hasClass(TOOLBAR_BEFORE_CLASS)) {\r\n this._alignSection(this._$beforeSection, sectionMaxWidth)\r\n } else {\r\n var labelPaddings = getOuterWidth($label) - getWidth($label);\r\n $label.css(\"maxWidth\", sectionMaxWidth - labelPaddings)\r\n }\r\n }\r\n _alignCenterSection(beforeRect, afterRect, elementWidth) {\r\n this._alignSection(this._$centerSection, elementWidth - beforeRect.width - afterRect.width);\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var leftRect = isRTL ? afterRect : beforeRect;\r\n var rightRect = isRTL ? beforeRect : afterRect;\r\n var centerRect = getBoundingRect(this._$centerSection.get(0));\r\n if (leftRect.right > centerRect.left || centerRect.right > rightRect.left) {\r\n this._$centerSection.css({\r\n marginLeft: leftRect.width,\r\n marginRight: rightRect.width,\r\n float: leftRect.width > rightRect.width ? \"none\" : \"right\"\r\n })\r\n }\r\n }\r\n _alignSection($section, maxWidth) {\r\n var $labels = $section.find(\".\".concat(TOOLBAR_LABEL_CLASS));\r\n var labels = $labels.toArray();\r\n maxWidth -= this._getCurrentLabelsPaddings(labels);\r\n var currentWidth = this._getCurrentLabelsWidth(labels);\r\n var difference = Math.abs(currentWidth - maxWidth);\r\n if (maxWidth < currentWidth) {\r\n labels = labels.reverse();\r\n this._alignSectionLabels(labels, difference, false)\r\n } else {\r\n this._alignSectionLabels(labels, difference, true)\r\n }\r\n }\r\n _alignSectionLabels(labels, difference, expanding) {\r\n var getRealLabelWidth = function(label) {\r\n return getBoundingRect(label).width\r\n };\r\n for (var i = 0; i < labels.length; i++) {\r\n var $label = $(labels[i]);\r\n var currentLabelWidth = Math.ceil(getRealLabelWidth(labels[i]));\r\n var labelMaxWidth = void 0;\r\n if (expanding) {\r\n $label.css(\"maxWidth\", \"inherit\")\r\n }\r\n var possibleLabelWidth = Math.ceil(expanding ? getRealLabelWidth(labels[i]) : currentLabelWidth);\r\n if (possibleLabelWidth < difference) {\r\n labelMaxWidth = expanding ? possibleLabelWidth : 0;\r\n difference -= possibleLabelWidth\r\n } else {\r\n labelMaxWidth = expanding ? currentLabelWidth + difference : currentLabelWidth - difference;\r\n $label.css(\"maxWidth\", labelMaxWidth);\r\n break\r\n }\r\n $label.css(\"maxWidth\", labelMaxWidth)\r\n }\r\n }\r\n _applyCompactMode() {\r\n var $element = this.$element();\r\n $element.removeClass(TOOLBAR_COMPACT_CLASS);\r\n if (this.option(\"compactMode\") && this._getSummaryItemsWidth(this.itemElements(), true) > getWidth($element)) {\r\n $element.addClass(TOOLBAR_COMPACT_CLASS)\r\n }\r\n }\r\n _getCurrentLabelsWidth(labels) {\r\n var width = 0;\r\n labels.forEach((function(label, index) {\r\n width += getOuterWidth(label)\r\n }));\r\n return width\r\n }\r\n _getCurrentLabelsPaddings(labels) {\r\n var padding = 0;\r\n labels.forEach((function(label, index) {\r\n padding += getOuterWidth(label) - getWidth(label)\r\n }));\r\n return padding\r\n }\r\n _renderItem(index, item, itemContainer, $after) {\r\n var _item$location, _item$text;\r\n var location = null !== (_item$location = item.location) && void 0 !== _item$location ? _item$location : \"center\";\r\n var container = null !== itemContainer && void 0 !== itemContainer ? itemContainer : this[\"_$\".concat(location, \"Section\")];\r\n var itemHasText = !!(null !== (_item$text = item.text) && void 0 !== _item$text ? _item$text : item.html);\r\n var itemElement = super._renderItem(index, item, container, $after);\r\n itemElement.toggleClass(TOOLBAR_BUTTON_CLASS, !itemHasText).toggleClass(TOOLBAR_LABEL_CLASS, itemHasText).addClass(item.cssClass);\r\n return itemElement\r\n }\r\n _renderGroupedItems() {\r\n each(this.option(\"items\"), (groupIndex, group) => {\r\n var _group$location;\r\n var groupItems = group.items;\r\n var $container = $(\"<div>\").addClass(TOOLBAR_GROUP_CLASS);\r\n var location = null !== (_group$location = group.location) && void 0 !== _group$location ? _group$location : \"center\";\r\n if (!groupItems || !groupItems.length) {\r\n return\r\n }\r\n each(groupItems, (itemIndex, item) => {\r\n this._renderItem(itemIndex, item, $container, null)\r\n });\r\n this._$toolbarItemsContainer.find(\".dx-toolbar-\".concat(location)).append($container)\r\n })\r\n }\r\n _renderItems(items) {\r\n var grouped = this.option(\"grouped\") && items.length && items[0].items;\r\n grouped ? this._renderGroupedItems() : super._renderItems(items)\r\n }\r\n _getToolbarItems() {\r\n var _this$option;\r\n return null !== (_this$option = this.option(\"items\")) && void 0 !== _this$option ? _this$option : []\r\n }\r\n _renderContentImpl() {\r\n var items = this._getToolbarItems();\r\n this.$element().toggleClass(TOOLBAR_MINI_CLASS, 0 === items.length);\r\n if (this._renderedItemsCount) {\r\n this._renderItems(items.slice(this._renderedItemsCount))\r\n } else {\r\n this._renderItems(items)\r\n }\r\n this._applyCompactMode()\r\n }\r\n _renderEmptyMessage() {}\r\n _clean() {\r\n this._$toolbarItemsContainer.children().empty();\r\n this.$element().empty();\r\n delete this._$beforeSection;\r\n delete this._$centerSection;\r\n delete this._$afterSection\r\n }\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n this._arrangeItems()\r\n }\r\n }\r\n _isVisible() {\r\n return getWidth(this.$element()) > 0 && getHeight(this.$element()) > 0\r\n }\r\n _getIndexByItem(item) {\r\n return this._getToolbarItems().indexOf(item)\r\n }\r\n _itemOptionChanged(item, property, value) {\r\n super._itemOptionChanged.apply(this, [item, property, value]);\r\n this._arrangeItems()\r\n }\r\n _optionChanged(_ref) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n switch (name) {\r\n case \"width\":\r\n super._optionChanged.apply(this, arguments);\r\n this._dimensionChanged();\r\n break;\r\n case \"renderAs\":\r\n case \"useFlatButtons\":\r\n case \"useDefaultButtons\":\r\n this._invalidate();\r\n break;\r\n case \"compactMode\":\r\n this._applyCompactMode();\r\n break;\r\n case \"grouped\":\r\n break;\r\n default:\r\n super._optionChanged.apply(this, arguments)\r\n }\r\n }\r\n _dispose() {\r\n super._dispose();\r\n clearTimeout(this._waitParentAnimationTimeout)\r\n }\r\n _updateDimensionsInMaterial() {\r\n if (isMaterial()) {\r\n Promise.all([(() => new Promise(resolve => {\r\n var check = () => {\r\n var readyToResolve = true;\r\n this.$element().parents().each((_, parent) => {\r\n if (fx.isAnimating($(parent))) {\r\n readyToResolve = false;\r\n return false\r\n }\r\n });\r\n if (readyToResolve) {\r\n resolve()\r\n }\r\n return readyToResolve\r\n };\r\n var runCheck = () => {\r\n clearTimeout(this._waitParentAnimationTimeout);\r\n this._waitParentAnimationTimeout = setTimeout(() => check() || runCheck(), ANIMATION_TIMEOUT)\r\n };\r\n runCheck()\r\n }))(), (() => {\r\n var $labels = this.$element().find(\".\".concat(TOOLBAR_LABEL_CLASS));\r\n var promises = [];\r\n $labels.each((_, label) => {\r\n var text = $(label).text();\r\n var fontWeight = $(label).css(\"fontWeight\");\r\n promises.push(waitWebFont(text, fontWeight))\r\n });\r\n return Promise.all(promises)\r\n })()]).then(() => {\r\n this._dimensionChanged()\r\n })\r\n }\r\n }\r\n}\r\nregisterComponent(\"dxToolbarBase\", ToolbarBase);\r\nexport default ToolbarBase;\r\n","/**\r\n * DevExtreme (esm/core/resize_observer.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"./utils/common\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"./utils/window\";\r\nvar window = getWindow();\r\nvar ResizeObserverMock = {\r\n observe: noop,\r\n unobserve: noop,\r\n disconnect: noop\r\n};\r\nclass ResizeObserverSingleton {\r\n constructor() {\r\n if (!hasWindow() || !window.ResizeObserver) {\r\n return ResizeObserverMock\r\n }\r\n this._callbacksMap = new Map;\r\n this._observer = new window.ResizeObserver(entries => {\r\n entries.forEach(entry => {\r\n var _this$_callbacksMap$g;\r\n null === (_this$_callbacksMap$g = this._callbacksMap.get(entry.target)) || void 0 === _this$_callbacksMap$g ? void 0 : _this$_callbacksMap$g(entry)\r\n })\r\n })\r\n }\r\n observe(element, callback) {\r\n this._callbacksMap.set(element, callback);\r\n this._observer.observe(element)\r\n }\r\n unobserve(element) {\r\n this._callbacksMap.delete(element);\r\n this._observer.unobserve(element)\r\n }\r\n disconnect() {\r\n this._callbacksMap.clear();\r\n this._observer.disconnect()\r\n }\r\n}\r\nvar resizeObserverSingleton = new ResizeObserverSingleton;\r\nexport default resizeObserverSingleton;\r\n","/**\r\n * DevExtreme (esm/ui/popup/popup_position_controller.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"fullScreen\", \"forceApplyBindings\", \"dragOutsideBoundary\", \"dragAndResizeArea\", \"outsideDragFactor\"];\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n originalViewPort\r\n} from \"../../core/utils/view_port\";\r\nimport {\r\n OverlayPositionController\r\n} from \"../overlay/overlay_position_controller\";\r\nvar window = getWindow();\r\nclass PopupPositionController extends OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n super(args);\r\n this._props = _extends({}, this._props, {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n });\r\n this._$dragResizeContainer = void 0;\r\n this._updateDragResizeContainer()\r\n }\r\n set fullScreen(fullScreen) {\r\n this._props.fullScreen = fullScreen;\r\n if (fullScreen) {\r\n this._fullScreenEnabled()\r\n } else {\r\n this._fullScreenDisabled()\r\n }\r\n }\r\n get $dragResizeContainer() {\r\n return this._$dragResizeContainer\r\n }\r\n get outsideDragFactor() {\r\n if (this._props.dragOutsideBoundary) {\r\n return 1\r\n }\r\n return this._props.outsideDragFactor\r\n }\r\n set dragAndResizeArea(dragAndResizeArea) {\r\n this._props.dragAndResizeArea = dragAndResizeArea;\r\n this._updateDragResizeContainer()\r\n }\r\n set dragOutsideBoundary(dragOutsideBoundary) {\r\n this._props.dragOutsideBoundary = dragOutsideBoundary;\r\n this._updateDragResizeContainer()\r\n }\r\n set outsideDragFactor(outsideDragFactor) {\r\n this._props.outsideDragFactor = outsideDragFactor\r\n }\r\n updateContainer(containerProp) {\r\n super.updateContainer(containerProp);\r\n this._updateDragResizeContainer()\r\n }\r\n dragHandled() {\r\n this.restorePositionOnNextRender(false)\r\n }\r\n resizeHandled() {\r\n this.restorePositionOnNextRender(false)\r\n }\r\n positionContent() {\r\n if (this._props.fullScreen) {\r\n move(this._$content, {\r\n top: 0,\r\n left: 0\r\n });\r\n this.detectVisualPositionChange()\r\n } else {\r\n var _this$_props$forceApp, _this$_props;\r\n null === (_this$_props$forceApp = (_this$_props = this._props).forceApplyBindings) || void 0 === _this$_props$forceApp ? void 0 : _this$_props$forceApp.call(_this$_props);\r\n super.positionContent()\r\n }\r\n }\r\n _updateDragResizeContainer() {\r\n this._$dragResizeContainer = this._getDragResizeContainer()\r\n }\r\n _getDragResizeContainer() {\r\n if (this._props.dragOutsideBoundary) {\r\n return $(window)\r\n }\r\n if (this._props.dragAndResizeArea) {\r\n return $(this._props.dragAndResizeArea)\r\n }\r\n var isContainerDefined = originalViewPort().get(0) || this._props.container;\r\n return isContainerDefined ? this._$markupContainer : $(window)\r\n }\r\n _getVisualContainer() {\r\n if (this._props.fullScreen) {\r\n return $(window)\r\n }\r\n return super._getVisualContainer()\r\n }\r\n _fullScreenEnabled() {\r\n this.restorePositionOnNextRender(false)\r\n }\r\n _fullScreenDisabled() {\r\n this.restorePositionOnNextRender(true)\r\n }\r\n}\r\nexport {\r\n PopupPositionController\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popup/popup_overflow_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar overflowManagerMock = {\r\n setOverflow: noop,\r\n restoreOverflow: noop\r\n};\r\nexport var createBodyOverflowManager = () => {\r\n if (!hasWindow()) {\r\n return overflowManagerMock\r\n }\r\n var window = getWindow();\r\n var documentElement = domAdapter.getDocument().documentElement;\r\n var body = domAdapter.getBody();\r\n var isIosDevice = \"ios\" === devices.real().platform;\r\n var prevSettings = {\r\n overflow: null,\r\n overflowX: null,\r\n overflowY: null,\r\n paddingRight: null,\r\n position: null,\r\n top: null,\r\n left: null\r\n };\r\n var setBodyPaddingRight = () => {\r\n var scrollBarWidth = window.innerWidth - documentElement.clientWidth;\r\n if (prevSettings.paddingRight || scrollBarWidth <= 0) {\r\n return\r\n }\r\n var paddingRight = window.getComputedStyle(body).getPropertyValue(\"padding-right\");\r\n var computedBodyPaddingRight = parseInt(paddingRight, 10);\r\n prevSettings.paddingRight = computedBodyPaddingRight;\r\n body.style.setProperty(\"padding-right\", \"\".concat(computedBodyPaddingRight + scrollBarWidth, \"px\"))\r\n };\r\n var restoreBodyPaddingRight = () => {\r\n if (!isDefined(prevSettings.paddingRight)) {\r\n return\r\n }\r\n if (prevSettings.paddingRight) {\r\n body.style.setProperty(\"padding-right\", \"\".concat(prevSettings.paddingRight, \"px\"))\r\n } else {\r\n body.style.removeProperty(\"padding-right\")\r\n }\r\n prevSettings.paddingRight = null\r\n };\r\n return {\r\n setOverflow: isIosDevice ? () => {\r\n if (isDefined(prevSettings.position) || \"fixed\" === body.style.position) {\r\n return\r\n }\r\n var {\r\n scrollY: scrollY,\r\n scrollX: scrollX\r\n } = window;\r\n prevSettings.position = body.style.position;\r\n prevSettings.top = body.style.top;\r\n prevSettings.left = body.style.left;\r\n body.style.setProperty(\"position\", \"fixed\");\r\n body.style.setProperty(\"top\", \"\".concat(-scrollY, \"px\"));\r\n body.style.setProperty(\"left\", \"\".concat(-scrollX, \"px\"))\r\n } : () => {\r\n setBodyPaddingRight();\r\n if (prevSettings.overflow || \"hidden\" === body.style.overflow) {\r\n return\r\n }\r\n prevSettings.overflow = body.style.overflow;\r\n prevSettings.overflowX = body.style.overflowX;\r\n prevSettings.overflowY = body.style.overflowY;\r\n body.style.setProperty(\"overflow\", \"hidden\")\r\n },\r\n restoreOverflow: isIosDevice ? () => {\r\n if (!isDefined(prevSettings.position)) {\r\n return\r\n }\r\n var scrollY = -parseInt(body.style.top, 10);\r\n var scrollX = -parseInt(body.style.left, 10);\r\n [\"position\", \"top\", \"left\"].forEach(property => {\r\n if (prevSettings[property]) {\r\n body.style.setProperty(property, prevSettings[property])\r\n } else {\r\n body.style.removeProperty(property)\r\n }\r\n });\r\n window.scrollTo(scrollX, scrollY);\r\n prevSettings.position = null\r\n } : () => {\r\n restoreBodyPaddingRight();\r\n [\"overflow\", \"overflowX\", \"overflowY\"].forEach(property => {\r\n if (!isDefined(prevSettings[property])) {\r\n return\r\n }\r\n var propertyInKebabCase = property.replace(/(X)|(Y)/, symbol => \"-\".concat(symbol.toLowerCase()));\r\n if (prevSettings[property]) {\r\n body.style.setProperty(propertyInKebabCase, prevSettings[property])\r\n } else {\r\n body.style.removeProperty(propertyInKebabCase)\r\n }\r\n prevSettings[property] = null\r\n })\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popup/ui.popup.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../../core/templates/empty_template\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n camelize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getVisibleHeight,\r\n addOffsetToMaxHeight,\r\n addOffsetToMinHeight,\r\n getVerticalOffsets,\r\n getOuterWidth,\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n compare as compareVersions\r\n} from \"../../core/utils/version\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../../events/visibility_change\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport PopupDrag from \"./popup_drag\";\r\nimport Resizable from \"../resizable\";\r\nimport Button from \"../button\";\r\nimport Overlay from \"../overlay/ui.overlay\";\r\nimport {\r\n isMaterial,\r\n current as currentTheme\r\n} from \"../themes\";\r\nimport \"../toolbar/ui.toolbar.base\";\r\nimport resizeObserverSingleton from \"../../core/resize_observer\";\r\nimport * as zIndexPool from \"../overlay/z_index\";\r\nimport {\r\n PopupPositionController\r\n} from \"./popup_position_controller\";\r\nimport {\r\n createBodyOverflowManager\r\n} from \"./popup_overflow_manager\";\r\nimport Guid from \"../../core/guid\";\r\nvar window = getWindow();\r\nvar POPUP_CLASS = \"dx-popup\";\r\nvar POPUP_WRAPPER_CLASS = \"dx-popup-wrapper\";\r\nvar POPUP_FULL_SCREEN_CLASS = \"dx-popup-fullscreen\";\r\nvar POPUP_FULL_SCREEN_WIDTH_CLASS = \"dx-popup-fullscreen-width\";\r\nvar POPUP_NORMAL_CLASS = \"dx-popup-normal\";\r\nvar POPUP_CONTENT_CLASS = \"dx-popup-content\";\r\nvar POPUP_CONTENT_SCROLLABLE_CLASS = \"dx-popup-content-scrollable\";\r\nvar DISABLED_STATE_CLASS = \"dx-state-disabled\";\r\nvar POPUP_DRAGGABLE_CLASS = \"dx-popup-draggable\";\r\nvar POPUP_TITLE_CLASS = \"dx-popup-title\";\r\nvar POPUP_TITLE_CLOSEBUTTON_CLASS = \"dx-closebutton\";\r\nvar POPUP_BOTTOM_CLASS = \"dx-popup-bottom\";\r\nvar POPUP_HAS_CLOSE_BUTTON_CLASS = \"dx-has-close-button\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar POPUP_CONTENT_FLEX_HEIGHT_CLASS = \"dx-popup-flex-height\";\r\nvar POPUP_CONTENT_INHERIT_HEIGHT_CLASS = \"dx-popup-inherit-height\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nvar ALLOWED_TOOLBAR_ITEM_ALIASES = [\"cancel\", \"clear\", \"done\"];\r\nvar BUTTON_DEFAULT_TYPE = \"default\";\r\nvar BUTTON_NORMAL_TYPE = \"normal\";\r\nvar BUTTON_TEXT_MODE = \"text\";\r\nvar BUTTON_CONTAINED_MODE = \"contained\";\r\nvar IS_OLD_SAFARI = browser.safari && compareVersions(browser.version, [11]) < 0;\r\nvar HEIGHT_STRATEGIES = {\r\n static: \"\",\r\n inherit: POPUP_CONTENT_INHERIT_HEIGHT_CLASS,\r\n flex: POPUP_CONTENT_FLEX_HEIGHT_CLASS\r\n};\r\nvar getButtonPlace = name => {\r\n var device = devices.current();\r\n var platform = device.platform;\r\n var toolbar = \"bottom\";\r\n var location = \"before\";\r\n if (\"ios\" === platform) {\r\n switch (name) {\r\n case \"cancel\":\r\n toolbar = \"top\";\r\n break;\r\n case \"clear\":\r\n toolbar = \"top\";\r\n location = \"after\";\r\n break;\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n } else if (\"android\" === platform) {\r\n switch (name) {\r\n case \"cancel\":\r\n case \"done\":\r\n location = \"after\"\r\n }\r\n }\r\n return {\r\n toolbar: toolbar,\r\n location: location\r\n }\r\n};\r\nvar Popup = Overlay.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n upArrow: e => {\r\n var _this$_drag;\r\n null === (_this$_drag = this._drag) || void 0 === _this$_drag ? void 0 : _this$_drag.moveUp(e)\r\n },\r\n downArrow: e => {\r\n var _this$_drag2;\r\n null === (_this$_drag2 = this._drag) || void 0 === _this$_drag2 ? void 0 : _this$_drag2.moveDown(e)\r\n },\r\n leftArrow: e => {\r\n var _this$_drag3;\r\n null === (_this$_drag3 = this._drag) || void 0 === _this$_drag3 ? void 0 : _this$_drag3.moveLeft(e)\r\n },\r\n rightArrow: e => {\r\n var _this$_drag4;\r\n null === (_this$_drag4 = this._drag) || void 0 === _this$_drag4 ? void 0 : _this$_drag4.moveRight(e)\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n fullScreen: false,\r\n title: \"\",\r\n showTitle: true,\r\n titleTemplate: \"title\",\r\n onTitleRendered: null,\r\n dragOutsideBoundary: false,\r\n dragEnabled: false,\r\n dragAndResizeArea: void 0,\r\n enableBodyScroll: true,\r\n outsideDragFactor: 0,\r\n onResizeStart: null,\r\n onResize: null,\r\n onResizeEnd: null,\r\n resizeEnabled: false,\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n bottomTemplate: \"bottom\",\r\n useDefaultToolbarButtons: false,\r\n useFlatToolbarButtons: false,\r\n autoResizeEnabled: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = currentTheme();\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n animation: this._iosAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n animation: this._androidAnimation\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n showCloseButton: true\r\n }\r\n }, {\r\n device: function(_device) {\r\n return \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n dragEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n useDefaultToolbarButtons: true,\r\n useFlatToolbarButtons: true,\r\n showCloseButton: false\r\n }\r\n }])\r\n },\r\n _iosAnimation: {\r\n show: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 400,\r\n from: {\r\n opacity: 1,\r\n position: {\r\n my: \"center\",\r\n at: \"center\"\r\n }\r\n },\r\n to: {\r\n opacity: 1,\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\"\r\n }\r\n }\r\n }\r\n },\r\n _androidAnimation: function() {\r\n return this.option(\"fullScreen\") ? {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: \"30%\",\r\n opacity: 0\r\n },\r\n to: {\r\n top: 0,\r\n opacity: 1\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n top: 0,\r\n opacity: 1\r\n },\r\n to: {\r\n top: \"30%\",\r\n opacity: 0\r\n }\r\n }\r\n } : {\r\n show: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n }\r\n },\r\n _init: function() {\r\n var popupWrapperClassExternal = this.option(\"_wrapperClassExternal\");\r\n var popupWrapperClasses = popupWrapperClassExternal ? \"\".concat(POPUP_WRAPPER_CLASS, \" \").concat(popupWrapperClassExternal) : POPUP_WRAPPER_CLASS;\r\n this.callBase();\r\n this._createBodyOverflowManager();\r\n this._updateResizeCallbackSkipCondition();\r\n this.$element().addClass(POPUP_CLASS);\r\n this.$wrapper().addClass(popupWrapperClasses);\r\n this._$popupContent = this._$content.wrapInner($(\"<div>\").addClass(POPUP_CONTENT_CLASS)).children().eq(0);\r\n this._toggleContentScrollClass();\r\n this.$overlayContent().attr(\"role\", \"dialog\")\r\n },\r\n _render: function() {\r\n var isFullscreen = this.option(\"fullScreen\");\r\n this._toggleFullScreenClass(isFullscreen);\r\n this.callBase()\r\n },\r\n _createBodyOverflowManager: function() {\r\n this._bodyOverflowManager = createBodyOverflowManager()\r\n },\r\n _toggleFullScreenClass: function(value) {\r\n this.$overlayContent().toggleClass(POPUP_FULL_SCREEN_CLASS, value).toggleClass(POPUP_NORMAL_CLASS, !value)\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n title: new EmptyTemplate,\r\n bottom: new EmptyTemplate\r\n })\r\n },\r\n _getActionsList: function() {\r\n return this.callBase().concat([\"onResizeStart\", \"onResize\", \"onResizeEnd\"])\r\n },\r\n _contentResizeHandler: function(entry) {\r\n if (!this._shouldSkipContentResize(entry)) {\r\n this._renderGeometry({\r\n shouldOnlyReposition: true\r\n })\r\n }\r\n },\r\n _doesShowAnimationChangeDimensions: function() {\r\n var animation = this.option(\"animation\");\r\n return [\"to\", \"from\"].some(prop => {\r\n var _animation$show;\r\n var config = null === animation || void 0 === animation ? void 0 : null === (_animation$show = animation.show) || void 0 === _animation$show ? void 0 : _animation$show[prop];\r\n return isObject(config) && (\"width\" in config || \"height\" in config)\r\n })\r\n },\r\n _updateResizeCallbackSkipCondition() {\r\n var doesShowAnimationChangeDimensions = this._doesShowAnimationChangeDimensions();\r\n this._shouldSkipContentResize = entry => doesShowAnimationChangeDimensions && this._showAnimationProcessing || this._areContentDimensionsRendered(entry)\r\n },\r\n _observeContentResize: function(shouldObserve) {\r\n if (!this.option(\"useResizeObserver\")) {\r\n return\r\n }\r\n var contentElement = this._$content.get(0);\r\n if (shouldObserve) {\r\n resizeObserverSingleton.observe(contentElement, entry => {\r\n this._contentResizeHandler(entry)\r\n })\r\n } else {\r\n resizeObserverSingleton.unobserve(contentElement)\r\n }\r\n },\r\n _areContentDimensionsRendered: function(entry) {\r\n var _entry$contentBoxSize, _this$_renderedDimens3, _this$_renderedDimens4;\r\n var contentBox = null === (_entry$contentBoxSize = entry.contentBoxSize) || void 0 === _entry$contentBoxSize ? void 0 : _entry$contentBoxSize[0];\r\n if (contentBox) {\r\n var _this$_renderedDimens, _this$_renderedDimens2;\r\n return parseInt(contentBox.inlineSize, 10) === (null === (_this$_renderedDimens = this._renderedDimensions) || void 0 === _this$_renderedDimens ? void 0 : _this$_renderedDimens.width) && parseInt(contentBox.blockSize, 10) === (null === (_this$_renderedDimens2 = this._renderedDimensions) || void 0 === _this$_renderedDimens2 ? void 0 : _this$_renderedDimens2.height)\r\n }\r\n var contentRect = entry.contentRect;\r\n return parseInt(contentRect.width, 10) === (null === (_this$_renderedDimens3 = this._renderedDimensions) || void 0 === _this$_renderedDimens3 ? void 0 : _this$_renderedDimens3.width) && parseInt(contentRect.height, 10) === (null === (_this$_renderedDimens4 = this._renderedDimensions) || void 0 === _this$_renderedDimens4 ? void 0 : _this$_renderedDimens4.height)\r\n },\r\n _renderContent() {\r\n this.callBase();\r\n this._observeContentResize(true)\r\n },\r\n _renderContentImpl: function() {\r\n this._renderTitle();\r\n this.callBase();\r\n this._renderResize();\r\n this._renderBottom()\r\n },\r\n _renderTitle: function() {\r\n var items = this._getToolbarItems(\"top\");\r\n var {\r\n title: title,\r\n showTitle: showTitle\r\n } = this.option();\r\n if (showTitle && !!title) {\r\n items.unshift({\r\n location: devices.current().ios ? \"center\" : \"before\",\r\n text: title\r\n })\r\n }\r\n if (showTitle || items.length > 0) {\r\n this._$title && this._$title.remove();\r\n var $title = $(\"<div>\").addClass(POPUP_TITLE_CLASS).insertBefore(this.$content());\r\n this._$title = this._renderTemplateByType(\"titleTemplate\", items, $title).addClass(POPUP_TITLE_CLASS);\r\n this._renderDrag();\r\n this._executeTitleRenderAction(this._$title);\r\n this._$title.toggleClass(POPUP_HAS_CLOSE_BUTTON_CLASS, this._hasCloseButton())\r\n } else if (this._$title) {\r\n this._$title.detach()\r\n }\r\n this._toggleAriaLabel()\r\n },\r\n _toggleAriaLabel() {\r\n var _this$_$title;\r\n var {\r\n title: title,\r\n showTitle: showTitle\r\n } = this.option();\r\n var shouldSetAriaLabel = showTitle && !!title;\r\n var titleId = shouldSetAriaLabel ? new Guid : null;\r\n null === (_this$_$title = this._$title) || void 0 === _this$_$title ? void 0 : _this$_$title.find(\".\".concat(TOOLBAR_LABEL_CLASS)).eq(0).attr(\"id\", titleId);\r\n this.$overlayContent().attr(\"aria-labelledby\", titleId)\r\n },\r\n _renderTemplateByType: function(optionName, data, $container, additionalToolbarOptions) {\r\n var {\r\n rtlEnabled: rtlEnabled,\r\n useDefaultToolbarButtons: useDefaultToolbarButtons,\r\n useFlatToolbarButtons: useFlatToolbarButtons,\r\n disabled: disabled\r\n } = this.option();\r\n var template = this._getTemplateByOption(optionName);\r\n var toolbarTemplate = template instanceof EmptyTemplate;\r\n if (toolbarTemplate) {\r\n var integrationOptions = extend({}, this.option(\"integrationOptions\"), {\r\n skipTemplates: [\"content\", \"title\"]\r\n });\r\n var toolbarOptions = extend(additionalToolbarOptions, {\r\n items: data,\r\n rtlEnabled: rtlEnabled,\r\n useDefaultButtons: useDefaultToolbarButtons,\r\n useFlatButtons: useFlatToolbarButtons,\r\n disabled: disabled,\r\n integrationOptions: integrationOptions\r\n });\r\n this._getTemplate(\"dx-polymorph-widget\").render({\r\n container: $container,\r\n model: {\r\n widget: this._getToolbarName(),\r\n options: toolbarOptions\r\n }\r\n });\r\n var $toolbar = $container.children(\"div\");\r\n $container.replaceWith($toolbar);\r\n return $toolbar\r\n } else {\r\n var $result = $(template.render({\r\n container: getPublicElement($container)\r\n }));\r\n if ($result.hasClass(TEMPLATE_WRAPPER_CLASS)) {\r\n $container.replaceWith($result);\r\n $container = $result\r\n }\r\n return $container\r\n }\r\n },\r\n _getToolbarName: function() {\r\n return \"dxToolbarBase\"\r\n },\r\n _renderVisibilityAnimate: function(visible) {\r\n return this.callBase(visible)\r\n },\r\n _hide() {\r\n this._observeContentResize(false);\r\n return this.callBase()\r\n },\r\n _executeTitleRenderAction: function($titleElement) {\r\n this._getTitleRenderAction()({\r\n titleElement: getPublicElement($titleElement)\r\n })\r\n },\r\n _getTitleRenderAction: function() {\r\n return this._titleRenderAction || this._createTitleRenderAction()\r\n },\r\n _createTitleRenderAction: function() {\r\n return this._titleRenderAction = this._createActionByOption(\"onTitleRendered\", {\r\n element: this.element(),\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _getCloseButton: function() {\r\n return {\r\n toolbar: \"top\",\r\n location: \"after\",\r\n template: this._getCloseButtonRenderer()\r\n }\r\n },\r\n _getCloseButtonRenderer: function() {\r\n return (_, __, container) => {\r\n var $button = $(\"<div>\").addClass(POPUP_TITLE_CLOSEBUTTON_CLASS);\r\n this._createComponent($button, Button, {\r\n icon: \"close\",\r\n onClick: this._createToolbarItemAction(void 0),\r\n stylingMode: \"text\",\r\n integrationOptions: {}\r\n });\r\n $(container).append($button)\r\n }\r\n },\r\n _getToolbarItems: function(toolbar) {\r\n var toolbarItems = this.option(\"toolbarItems\");\r\n var toolbarsItems = [];\r\n this._toolbarItemClasses = [];\r\n var currentPlatform = devices.current().platform;\r\n var index = 0;\r\n each(toolbarItems, (_, data) => {\r\n var isShortcut = isDefined(data.shortcut);\r\n var item = isShortcut ? getButtonPlace(data.shortcut) : data;\r\n if (isShortcut && \"ios\" === currentPlatform && index < 2) {\r\n item.toolbar = \"top\";\r\n index++\r\n }\r\n item.toolbar = data.toolbar || item.toolbar || \"top\";\r\n if (item && item.toolbar === toolbar) {\r\n if (isShortcut) {\r\n extend(item, {\r\n location: data.location\r\n }, this._getToolbarItemByAlias(data))\r\n }\r\n var isLTROrder = \"generic\" === currentPlatform;\r\n if (\"done\" === data.shortcut && isLTROrder || \"cancel\" === data.shortcut && !isLTROrder) {\r\n toolbarsItems.unshift(item)\r\n } else {\r\n toolbarsItems.push(item)\r\n }\r\n }\r\n });\r\n if (\"top\" === toolbar && this._hasCloseButton()) {\r\n toolbarsItems.push(this._getCloseButton())\r\n }\r\n return toolbarsItems\r\n },\r\n _hasCloseButton() {\r\n return this.option(\"showCloseButton\") && this.option(\"showTitle\")\r\n },\r\n _getLocalizationKey: itemType => \"done\" === itemType.toLowerCase() ? \"OK\" : camelize(itemType, true),\r\n _getToolbarItemByAlias: function(data) {\r\n var that = this;\r\n var itemType = data.shortcut;\r\n if (!ALLOWED_TOOLBAR_ITEM_ALIASES.includes(itemType)) {\r\n return false\r\n }\r\n var itemConfig = extend({\r\n text: messageLocalization.format(this._getLocalizationKey(itemType)),\r\n onClick: this._createToolbarItemAction(data.onClick),\r\n integrationOptions: {},\r\n type: that.option(\"useDefaultToolbarButtons\") ? BUTTON_DEFAULT_TYPE : BUTTON_NORMAL_TYPE,\r\n stylingMode: that.option(\"useFlatToolbarButtons\") ? BUTTON_TEXT_MODE : BUTTON_CONTAINED_MODE\r\n }, data.options || {});\r\n var itemClass = POPUP_CLASS + \"-\" + itemType;\r\n this._toolbarItemClasses.push(itemClass);\r\n return {\r\n template: function(_, __, container) {\r\n var $toolbarItem = $(\"<div>\").addClass(itemClass).appendTo(container);\r\n that._createComponent($toolbarItem, Button, itemConfig)\r\n }\r\n }\r\n },\r\n _createToolbarItemAction: function(clickAction) {\r\n return this._createAction(clickAction, {\r\n afterExecute: function(e) {\r\n e.component.hide()\r\n }\r\n })\r\n },\r\n _renderBottom: function() {\r\n var items = this._getToolbarItems(\"bottom\");\r\n if (items.length) {\r\n this._$bottom && this._$bottom.remove();\r\n var $bottom = $(\"<div>\").addClass(POPUP_BOTTOM_CLASS).insertAfter(this.$content());\r\n this._$bottom = this._renderTemplateByType(\"bottomTemplate\", items, $bottom, {\r\n compactMode: true\r\n }).addClass(POPUP_BOTTOM_CLASS);\r\n this._toggleClasses()\r\n } else {\r\n this._$bottom && this._$bottom.detach()\r\n }\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(...arguments);\r\n this.$content().toggleClass(DISABLED_STATE_CLASS, Boolean(value))\r\n },\r\n _toggleClasses: function() {\r\n var aliases = ALLOWED_TOOLBAR_ITEM_ALIASES;\r\n each(aliases, (_, alias) => {\r\n var className = POPUP_CLASS + \"-\" + alias;\r\n if (this._toolbarItemClasses.includes(className)) {\r\n this.$wrapper().addClass(className + \"-visible\");\r\n this._$bottom.addClass(className)\r\n } else {\r\n this.$wrapper().removeClass(className + \"-visible\");\r\n this._$bottom.removeClass(className)\r\n }\r\n })\r\n },\r\n _toggleFocusClass(isFocused, $element) {\r\n this.callBase(isFocused, $element);\r\n if (isFocused && !zIndexPool.isLastZIndexInStack(this._zIndex)) {\r\n var zIndex = zIndexPool.create(this._zIndexInitValue());\r\n zIndexPool.remove(this._zIndex);\r\n this._zIndex = zIndex;\r\n this._$wrapper.css(\"zIndex\", zIndex);\r\n this._$content.css(\"zIndex\", zIndex)\r\n }\r\n },\r\n _toggleContentScrollClass() {\r\n var isNativeScrollingEnabled = !this.option(\"preventScrollEvents\");\r\n this.$content().toggleClass(POPUP_CONTENT_SCROLLABLE_CLASS, isNativeScrollingEnabled)\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n } = this.option();\r\n return extend({}, this.callBase(), {\r\n fullScreen: fullScreen,\r\n forceApplyBindings: forceApplyBindings,\r\n dragOutsideBoundary: dragOutsideBoundary,\r\n dragAndResizeArea: dragAndResizeArea,\r\n outsideDragFactor: outsideDragFactor\r\n })\r\n },\r\n _initPositionController() {\r\n this._positionController = new PopupPositionController(this._getPositionControllerConfig())\r\n },\r\n _getDragTarget: function() {\r\n return this.topToolbar()\r\n },\r\n _renderGeometry: function(options) {\r\n var {\r\n visible: visible,\r\n useResizeObserver: useResizeObserver\r\n } = this.option();\r\n if (visible && hasWindow()) {\r\n var isAnimated = this._showAnimationProcessing;\r\n var shouldRepeatAnimation = isAnimated && !(null !== options && void 0 !== options && options.forceStopAnimation) && useResizeObserver;\r\n this._isAnimationPaused = shouldRepeatAnimation || void 0;\r\n this._stopAnimation();\r\n if (null !== options && void 0 !== options && options.shouldOnlyReposition) {\r\n this._renderPosition(false)\r\n } else {\r\n this._renderGeometryImpl(null === options || void 0 === options ? void 0 : options.isDimensionChange)\r\n }\r\n if (shouldRepeatAnimation) {\r\n this._animateShowing();\r\n this._isAnimationPaused = void 0\r\n }\r\n }\r\n },\r\n _cacheDimensions: function() {\r\n if (!this.option(\"useResizeObserver\")) {\r\n return\r\n }\r\n this._renderedDimensions = {\r\n width: parseInt(getWidth(this._$content), 10),\r\n height: parseInt(getHeight(this._$content), 10)\r\n }\r\n },\r\n _renderGeometryImpl: function() {\r\n var isDimensionChange = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n if (!isDimensionChange) {\r\n this._resetContentHeight()\r\n }\r\n this.callBase();\r\n this._cacheDimensions();\r\n this._setContentHeight()\r\n },\r\n _resetContentHeight: function() {\r\n var height = this._getOptionValue(\"height\");\r\n if (\"auto\" === height) {\r\n this.$content().css({\r\n height: \"auto\",\r\n maxHeight: \"none\"\r\n })\r\n }\r\n },\r\n _renderDrag: function() {\r\n var $dragTarget = this._getDragTarget();\r\n var dragEnabled = this.option(\"dragEnabled\");\r\n if (!$dragTarget) {\r\n return\r\n }\r\n var config = {\r\n dragEnabled: dragEnabled,\r\n handle: $dragTarget.get(0),\r\n draggableElement: this._$content.get(0),\r\n positionController: this._positionController\r\n };\r\n if (this._drag) {\r\n this._drag.init(config)\r\n } else {\r\n this._drag = new PopupDrag(config)\r\n }\r\n this.$overlayContent().toggleClass(POPUP_DRAGGABLE_CLASS, dragEnabled)\r\n },\r\n _renderResize: function() {\r\n this._resizable = this._createComponent(this._$content, Resizable, {\r\n handles: this.option(\"resizeEnabled\") ? \"all\" : \"none\",\r\n onResizeEnd: e => {\r\n this._resizeEndHandler(e);\r\n this._observeContentResize(true)\r\n },\r\n onResize: e => {\r\n this._setContentHeight();\r\n this._actions.onResize(e)\r\n },\r\n onResizeStart: e => {\r\n this._observeContentResize(false);\r\n this._actions.onResizeStart(e)\r\n },\r\n minHeight: 100,\r\n minWidth: 100,\r\n area: this._positionController.$dragResizeContainer,\r\n keepAspectRatio: false\r\n })\r\n },\r\n _resizeEndHandler: function(e) {\r\n var width = this._resizable.option(\"width\");\r\n var height = this._resizable.option(\"height\");\r\n width && this._setOptionWithoutOptionChange(\"width\", width);\r\n height && this._setOptionWithoutOptionChange(\"height\", height);\r\n this._cacheDimensions();\r\n this._positionController.resizeHandled();\r\n this._positionController.detectVisualPositionChange(e.event);\r\n this._actions.onResizeEnd(e)\r\n },\r\n _setContentHeight: function() {\r\n (this.option(\"forceApplyBindings\") || noop)();\r\n var overlayContent = this.$overlayContent().get(0);\r\n var currentHeightStrategyClass = this._chooseHeightStrategy(overlayContent);\r\n this.$content().css(this._getHeightCssStyles(currentHeightStrategyClass, overlayContent));\r\n this._setHeightClasses(this.$overlayContent(), currentHeightStrategyClass)\r\n },\r\n _heightStrategyChangeOffset: function(currentHeightStrategyClass, popupVerticalPaddings) {\r\n return currentHeightStrategyClass === HEIGHT_STRATEGIES.flex ? -popupVerticalPaddings : 0\r\n },\r\n _chooseHeightStrategy: function(overlayContent) {\r\n var isAutoWidth = \"auto\" === overlayContent.style.width || \"\" === overlayContent.style.width;\r\n var currentHeightStrategyClass = HEIGHT_STRATEGIES.static;\r\n if (this._isAutoHeight() && this.option(\"autoResizeEnabled\")) {\r\n if (isAutoWidth || IS_OLD_SAFARI) {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.inherit\r\n } else {\r\n currentHeightStrategyClass = HEIGHT_STRATEGIES.flex\r\n }\r\n }\r\n return currentHeightStrategyClass\r\n },\r\n _getHeightCssStyles: function(currentHeightStrategyClass, overlayContent) {\r\n var cssStyles = {};\r\n var contentMaxHeight = this._getOptionValue(\"maxHeight\", overlayContent);\r\n var contentMinHeight = this._getOptionValue(\"minHeight\", overlayContent);\r\n var popupHeightParts = this._splitPopupHeight();\r\n var toolbarsAndVerticalOffsetsHeight = popupHeightParts.header + popupHeightParts.footer + popupHeightParts.contentVerticalOffsets + popupHeightParts.popupVerticalOffsets + this._heightStrategyChangeOffset(currentHeightStrategyClass, popupHeightParts.popupVerticalPaddings);\r\n if (currentHeightStrategyClass === HEIGHT_STRATEGIES.static) {\r\n if (!this._isAutoHeight() || contentMaxHeight || contentMinHeight) {\r\n var overlayHeight = this.option(\"fullScreen\") ? Math.min(getBoundingRect(overlayContent).height, getWindow().innerHeight) : getBoundingRect(overlayContent).height;\r\n var contentHeight = overlayHeight - toolbarsAndVerticalOffsetsHeight;\r\n cssStyles = {\r\n height: Math.max(0, contentHeight),\r\n minHeight: \"auto\",\r\n maxHeight: \"auto\"\r\n }\r\n }\r\n } else {\r\n var container = $(this._positionController.$visualContainer).get(0);\r\n var maxHeightValue = addOffsetToMaxHeight(contentMaxHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n var minHeightValue = addOffsetToMinHeight(contentMinHeight, -toolbarsAndVerticalOffsetsHeight, container);\r\n cssStyles = {\r\n height: \"auto\",\r\n minHeight: minHeightValue,\r\n maxHeight: maxHeightValue\r\n }\r\n }\r\n return cssStyles\r\n },\r\n _setHeightClasses: function($container, currentClass) {\r\n var excessClasses = \"\";\r\n for (var name in HEIGHT_STRATEGIES) {\r\n if (HEIGHT_STRATEGIES[name] !== currentClass) {\r\n excessClasses += \" \" + HEIGHT_STRATEGIES[name]\r\n }\r\n }\r\n $container.removeClass(excessClasses).addClass(currentClass)\r\n },\r\n _isAutoHeight: function() {\r\n return \"auto\" === this.$overlayContent().get(0).style.height\r\n },\r\n _splitPopupHeight: function() {\r\n var topToolbar = this.topToolbar();\r\n var bottomToolbar = this.bottomToolbar();\r\n return {\r\n header: getVisibleHeight(topToolbar && topToolbar.get(0)),\r\n footer: getVisibleHeight(bottomToolbar && bottomToolbar.get(0)),\r\n contentVerticalOffsets: getVerticalOffsets(this.$overlayContent().get(0), true),\r\n popupVerticalOffsets: getVerticalOffsets(this.$content().get(0), true),\r\n popupVerticalPaddings: getVerticalOffsets(this.$content().get(0), false)\r\n }\r\n },\r\n _isAllWindowCovered: function() {\r\n return this.callBase() || this.option(\"fullScreen\")\r\n },\r\n _renderDimensions: function() {\r\n if (this.option(\"fullScreen\")) {\r\n this.$overlayContent().css({\r\n width: \"100%\",\r\n height: \"100%\",\r\n minWidth: \"\",\r\n maxWidth: \"\",\r\n minHeight: \"\",\r\n maxHeight: \"\"\r\n })\r\n } else {\r\n this.callBase()\r\n }\r\n if (hasWindow()) {\r\n this._renderFullscreenWidthClass()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderGeometry({\r\n isDimensionChange: true\r\n })\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._observeContentResize(false)\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n this._toggleBodyScroll(true)\r\n },\r\n _renderFullscreenWidthClass: function() {\r\n this.$overlayContent().toggleClass(POPUP_FULL_SCREEN_WIDTH_CLASS, getOuterWidth(this.$overlayContent()) === getWidth(window))\r\n },\r\n _toggleSafariScrolling() {\r\n if (!this.option(\"enableBodyScroll\")) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _toggleBodyScroll: function(enabled) {\r\n if (!this._bodyOverflowManager) {\r\n return\r\n }\r\n var {\r\n setOverflow: setOverflow,\r\n restoreOverflow: restoreOverflow\r\n } = this._bodyOverflowManager;\r\n if (enabled) {\r\n restoreOverflow()\r\n } else {\r\n setOverflow()\r\n }\r\n },\r\n refreshPosition: function() {\r\n this._renderPosition()\r\n },\r\n _optionChanged: function(args) {\r\n var _this$_resizable2;\r\n var {\r\n value: value,\r\n name: name\r\n } = args;\r\n switch (name) {\r\n case \"disabled\":\r\n this.callBase(args);\r\n this._renderTitle();\r\n this._renderBottom();\r\n break;\r\n case \"animation\":\r\n this._updateResizeCallbackSkipCondition();\r\n break;\r\n case \"enableBodyScroll\":\r\n this._toggleBodyScroll(value);\r\n break;\r\n case \"showTitle\":\r\n case \"title\":\r\n case \"titleTemplate\":\r\n this._renderTitle();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"bottomTemplate\":\r\n this._renderBottom();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"container\":\r\n this.callBase(args);\r\n if (this.option(\"resizeEnabled\")) {\r\n var _this$_resizable;\r\n null === (_this$_resizable = this._resizable) || void 0 === _this$_resizable ? void 0 : _this$_resizable.option(\"area\", this._positionController.$dragResizeContainer)\r\n }\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n null === (_this$_resizable2 = this._resizable) || void 0 === _this$_resizable2 ? void 0 : _this$_resizable2.option(name, value);\r\n break;\r\n case \"onTitleRendered\":\r\n this._createTitleRenderAction(value);\r\n break;\r\n case \"toolbarItems\":\r\n case \"useDefaultToolbarButtons\":\r\n case \"useFlatToolbarButtons\":\r\n var shouldRenderGeometry = !args.fullName.match(/^toolbarItems((\\[\\d+\\])(\\.(options|visible).*)?)?$/);\r\n this._renderTitle();\r\n this._renderBottom();\r\n if (shouldRenderGeometry) {\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent())\r\n }\r\n break;\r\n case \"dragEnabled\":\r\n this._renderDrag();\r\n break;\r\n case \"dragAndResizeArea\":\r\n this._positionController.dragAndResizeArea = value;\r\n if (this.option(\"resizeEnabled\")) {\r\n this._resizable.option(\"area\", this._positionController.$dragResizeContainer)\r\n }\r\n this._positionController.positionContent();\r\n break;\r\n case \"dragOutsideBoundary\":\r\n this._positionController.dragOutsideBoundary = value;\r\n if (this.option(\"resizeEnabled\")) {\r\n this._resizable.option(\"area\", this._positionController.$dragResizeContainer)\r\n }\r\n break;\r\n case \"outsideDragFactor\":\r\n this._positionController.outsideDragFactor = value;\r\n break;\r\n case \"resizeEnabled\":\r\n this._renderResize();\r\n this._renderGeometry();\r\n break;\r\n case \"autoResizeEnabled\":\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"fullScreen\":\r\n this._positionController.fullScreen = value;\r\n this._toggleFullScreenClass(value);\r\n this._toggleSafariScrolling();\r\n this._renderGeometry();\r\n triggerResizeEvent(this.$overlayContent());\r\n break;\r\n case \"showCloseButton\":\r\n this._renderTitle();\r\n break;\r\n case \"preventScrollEvents\":\r\n this.callBase(args);\r\n this._toggleContentScrollClass();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n bottomToolbar: function() {\r\n return this._$bottom\r\n },\r\n topToolbar: function() {\r\n return this._$title\r\n },\r\n $content: function() {\r\n return this._$popupContent\r\n },\r\n content: function() {\r\n return getPublicElement(this.$content())\r\n },\r\n $overlayContent: function() {\r\n return this._$content\r\n }\r\n});\r\nregisterComponent(\"dxPopup\", Popup);\r\nexport default Popup;\r\n","/**\r\n * DevExtreme (esm/ui/dialog.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport Action from \"../core/action\";\r\nimport devices from \"../core/devices\";\r\nimport config from \"../core/config\";\r\nimport Guid from \"../core/guid\";\r\nimport {\r\n resetActiveElement\r\n} from \"../core/utils/dom\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n value as getViewport\r\n} from \"../core/utils/view_port\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport errors from \"./widget/ui.errors\";\r\nimport Popup from \"./popup/ui.popup\";\r\nimport {\r\n ensureDefined\r\n} from \"../core/utils/common\";\r\nvar window = getWindow();\r\nvar DEFAULT_BUTTON = {\r\n text: \"OK\",\r\n onClick: function() {\r\n return true\r\n }\r\n};\r\nvar DX_DIALOG_CLASSNAME = \"dx-dialog\";\r\nvar DX_DIALOG_WRAPPER_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-wrapper\");\r\nvar DX_DIALOG_ROOT_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-root\");\r\nvar DX_DIALOG_CONTENT_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-content\");\r\nvar DX_DIALOG_MESSAGE_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-message\");\r\nvar DX_DIALOG_BUTTONS_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-buttons\");\r\nvar DX_DIALOG_BUTTON_CLASSNAME = \"\".concat(DX_DIALOG_CLASSNAME, \"-button\");\r\nvar DX_BUTTON_CLASSNAME = \"dx-button\";\r\nexport var custom = function(options) {\r\n var _options$title;\r\n var deferred = new Deferred;\r\n options = options || {};\r\n var $element = $(\"<div>\").addClass(DX_DIALOG_CLASSNAME).appendTo(getViewport());\r\n var isMessageDefined = \"message\" in options;\r\n var isMessageHtmlDefined = \"messageHtml\" in options;\r\n if (isMessageDefined) {\r\n errors.log(\"W1013\")\r\n }\r\n var messageHtml = String(isMessageHtmlDefined ? options.messageHtml : options.message);\r\n var messageId = options.title ? null : new Guid;\r\n var $message = $(\"<div>\").addClass(DX_DIALOG_MESSAGE_CLASSNAME).html(messageHtml).attr(\"id\", messageId);\r\n var popupToolbarItems = [];\r\n each(options.buttons || [DEFAULT_BUTTON], (function() {\r\n var action = new Action(this.onClick, {\r\n context: popupInstance\r\n });\r\n popupToolbarItems.push({\r\n toolbar: \"bottom\",\r\n location: devices.current().android ? \"after\" : \"center\",\r\n widget: \"dxButton\",\r\n options: extend({}, this, {\r\n onClick: function() {\r\n var result = action.execute(...arguments);\r\n hide(result)\r\n }\r\n })\r\n })\r\n }));\r\n var popupInstance = new Popup($element, extend({\r\n title: null !== (_options$title = options.title) && void 0 !== _options$title ? _options$title : \"\",\r\n showTitle: ensureDefined(options.showTitle, true),\r\n dragEnabled: ensureDefined(options.dragEnabled, true),\r\n height: \"auto\",\r\n width: options.width,\r\n showCloseButton: options.showCloseButton || false,\r\n ignoreChildEvents: false,\r\n container: $element,\r\n visualContainer: window,\r\n dragAndResizeArea: window,\r\n onContentReady: function(args) {\r\n args.component.$content().addClass(DX_DIALOG_CONTENT_CLASSNAME).append($message);\r\n if (messageId) {\r\n args.component.$overlayContent().attr(\"aria-labelledby\", messageId)\r\n }\r\n },\r\n onShowing: function(e) {\r\n e.component.bottomToolbar().addClass(DX_DIALOG_BUTTONS_CLASSNAME).find(\".\".concat(DX_BUTTON_CLASSNAME)).addClass(DX_DIALOG_BUTTON_CLASSNAME);\r\n resetActiveElement()\r\n },\r\n onShown: function(e) {\r\n var $firstButton = e.component.bottomToolbar().find(\".\".concat(DX_BUTTON_CLASSNAME)).first();\r\n eventsEngine.trigger($firstButton, \"focus\")\r\n },\r\n onHiding: function() {\r\n deferred.reject()\r\n },\r\n onHidden: function(_ref) {\r\n var {\r\n element: element\r\n } = _ref;\r\n $(element).remove()\r\n },\r\n toolbarItems: popupToolbarItems,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 400\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 400,\r\n to: {\r\n opacity: 0,\r\n scale: 0\r\n },\r\n from: {\r\n opacity: 1,\r\n scale: 1\r\n }\r\n }\r\n },\r\n rtlEnabled: config().rtlEnabled,\r\n position: {\r\n boundaryOffset: {\r\n h: 10,\r\n v: 0\r\n }\r\n }\r\n }, options.popupOptions));\r\n popupInstance.$wrapper().addClass(DX_DIALOG_WRAPPER_CLASSNAME);\r\n if (options.position) {\r\n popupInstance.option(\"position\", options.position)\r\n }\r\n popupInstance.$wrapper().addClass(DX_DIALOG_ROOT_CLASSNAME);\r\n\r\n function hide(value) {\r\n deferred.resolve(value);\r\n popupInstance.hide()\r\n }\r\n return {\r\n show: function() {\r\n if (\"phone\" === devices.real().deviceType) {\r\n var isPortrait = getHeight(window) > getWidth(window);\r\n var width = isPortrait ? \"90%\" : \"60%\";\r\n popupInstance.option({\r\n width: width\r\n })\r\n }\r\n popupInstance.show();\r\n return deferred.promise()\r\n },\r\n hide: hide\r\n }\r\n};\r\nexport var alert = function(messageHtml) {\r\n var title = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\";\r\n var showTitle = arguments.length > 2 ? arguments[2] : void 0;\r\n var options = isPlainObject(messageHtml) ? messageHtml : {\r\n title: title,\r\n messageHtml: messageHtml,\r\n showTitle: showTitle,\r\n dragEnabled: showTitle\r\n };\r\n return custom(options).show()\r\n};\r\nexport var confirm = function(messageHtml) {\r\n var title = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : \"\";\r\n var showTitle = arguments.length > 2 ? arguments[2] : void 0;\r\n var options = isPlainObject(messageHtml) ? messageHtml : {\r\n title: title,\r\n messageHtml: messageHtml,\r\n showTitle: showTitle,\r\n buttons: [{\r\n text: messageLocalization.format(\"Yes\"),\r\n onClick: function() {\r\n return true\r\n }\r\n }, {\r\n text: messageLocalization.format(\"No\"),\r\n onClick: function() {\r\n return false\r\n }\r\n }],\r\n dragEnabled: showTitle\r\n };\r\n return custom(options).show()\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/editor/ui.data_expression.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n compileGetter,\r\n toComparable\r\n} from \"../../core/utils/data\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isObject as isObjectType,\r\n isString,\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport {\r\n DataSource\r\n} from \"../../data/data_source/data_source\";\r\nimport ArrayStore from \"../../data/array_store\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar DataExpressionMixin = extend({}, DataHelperMixin, {\r\n _dataExpressionDefaultOptions: function() {\r\n return {\r\n items: [],\r\n dataSource: null,\r\n itemTemplate: \"item\",\r\n value: null,\r\n valueExpr: \"this\",\r\n displayExpr: void 0\r\n }\r\n },\r\n _initDataExpressions: function() {\r\n this._compileValueGetter();\r\n this._compileDisplayGetter();\r\n this._initDynamicTemplates();\r\n this._initDataSource();\r\n this._itemsToDataSource()\r\n },\r\n _itemsToDataSource: function() {\r\n if (!this.option(\"dataSource\")) {\r\n this._dataSource = new DataSource({\r\n store: new ArrayStore(this.option(\"items\")),\r\n pageSize: 0\r\n });\r\n this._initDataController()\r\n }\r\n },\r\n _compileDisplayGetter: function() {\r\n this._displayGetter = compileGetter(this._displayGetterExpr())\r\n },\r\n _displayGetterExpr: function() {\r\n return this.option(\"displayExpr\")\r\n },\r\n _compileValueGetter: function() {\r\n this._valueGetter = compileGetter(this._valueGetterExpr())\r\n },\r\n _valueGetterExpr: function() {\r\n return this.option(\"valueExpr\") || \"this\"\r\n },\r\n _loadValue: function(value) {\r\n var deferred = new Deferred;\r\n value = this._unwrappedValue(value);\r\n if (!isDefined(value)) {\r\n return deferred.reject().promise()\r\n }\r\n this._loadSingle(this._valueGetterExpr(), value).done(function(item) {\r\n this._isValueEquals(this._valueGetter(item), value) ? deferred.resolve(item) : deferred.reject()\r\n }.bind(this)).fail((function() {\r\n deferred.reject()\r\n }));\r\n this._loadValueDeferred = deferred;\r\n return deferred.promise()\r\n },\r\n _rejectValueLoading: function() {\r\n var _this$_loadValueDefer;\r\n null === (_this$_loadValueDefer = this._loadValueDeferred) || void 0 === _this$_loadValueDefer ? void 0 : _this$_loadValueDefer.reject({\r\n shouldSkipCallback: true\r\n })\r\n },\r\n _getCurrentValue: function() {\r\n return this.option(\"value\")\r\n },\r\n _unwrappedValue: function(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this._getCurrentValue();\r\n if (value && this._dataSource && \"this\" === this._valueGetterExpr()) {\r\n value = this._getItemKey(value)\r\n }\r\n return variableWrapper.unwrap(value)\r\n },\r\n _getItemKey: function(value) {\r\n var key = this._dataSource.key();\r\n if (Array.isArray(key)) {\r\n var result = {};\r\n for (var i = 0, n = key.length; i < n; i++) {\r\n result[key[i]] = value[key[i]]\r\n }\r\n return result\r\n }\r\n if (key && \"object\" === typeof value) {\r\n value = value[key]\r\n }\r\n return value\r\n },\r\n _isValueEquals: function(value1, value2) {\r\n var dataSourceKey = this._dataSource && this._dataSource.key();\r\n var result = this._compareValues(value1, value2);\r\n if (!result && dataSourceKey && isDefined(value1) && isDefined(value2)) {\r\n if (Array.isArray(dataSourceKey)) {\r\n result = this._compareByCompositeKey(value1, value2, dataSourceKey)\r\n } else {\r\n result = this._compareByKey(value1, value2, dataSourceKey)\r\n }\r\n }\r\n return result\r\n },\r\n _compareByCompositeKey: function(value1, value2, key) {\r\n var isObject = isObjectType;\r\n if (!isObject(value1) || !isObject(value2)) {\r\n return false\r\n }\r\n for (var i = 0, n = key.length; i < n; i++) {\r\n if (value1[key[i]] !== value2[key[i]]) {\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n _compareByKey: function(value1, value2, key) {\r\n var unwrapObservable = variableWrapper.unwrap;\r\n var valueKey1 = ensureDefined(unwrapObservable(value1[key]), value1);\r\n var valueKey2 = ensureDefined(unwrapObservable(value2[key]), value2);\r\n return this._compareValues(valueKey1, valueKey2)\r\n },\r\n _compareValues: function(value1, value2) {\r\n return toComparable(value1, true) === toComparable(value2, true)\r\n },\r\n _initDynamicTemplates: noop,\r\n _setCollectionWidgetItemTemplate: function() {\r\n this._initDynamicTemplates();\r\n this._setCollectionWidgetOption(\"itemTemplate\", this.option(\"itemTemplate\"))\r\n },\r\n _getCollectionKeyExpr: function() {\r\n var valueExpr = this.option(\"valueExpr\");\r\n var isValueExprField = isString(valueExpr) && \"this\" !== valueExpr || isFunction(valueExpr);\r\n return isValueExprField ? valueExpr : null\r\n },\r\n _dataExpressionOptionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n this._itemsToDataSource();\r\n this._setCollectionWidgetOption(\"items\");\r\n break;\r\n case \"dataSource\":\r\n this._initDataSource();\r\n break;\r\n case \"itemTemplate\":\r\n this._setCollectionWidgetItemTemplate();\r\n break;\r\n case \"valueExpr\":\r\n this._compileValueGetter();\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._initDynamicTemplates();\r\n this._setCollectionWidgetOption(\"displayExpr\")\r\n }\r\n }\r\n});\r\nexport default DataExpressionMixin;\r\n","/**\r\n * DevExtreme (esm/ui/validation_message.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getOuterWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Overlay from \"./overlay/ui.overlay\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n encodeHtml\r\n} from \"../core/utils/string\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../core/utils/position\";\r\nvar INVALID_MESSAGE = \"dx-invalid-message\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar INVALID_MESSAGE_ALWAYS = \"dx-invalid-message-always\";\r\nvar INVALID_MESSAGE_CONTENT = \"dx-invalid-message-content\";\r\nvar VALIDATION_MESSAGE_MIN_WIDTH = 100;\r\nvar ValidationMessage = Overlay.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n integrationOptions: {},\r\n templatesRenderAsynchronously: false,\r\n shading: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n hideOnOutsideClick: false,\r\n animation: null,\r\n visible: true,\r\n propagateOutsideClick: true,\r\n _checkParentVisibility: false,\r\n rtlEnabled: false,\r\n contentTemplate: this._renderInnerHtml,\r\n maxWidth: \"100%\",\r\n container: this.$element(),\r\n target: void 0,\r\n mode: \"auto\",\r\n validationErrors: void 0,\r\n preventScrollEvents: false,\r\n positionSide: \"top\",\r\n boundary: void 0,\r\n offset: {\r\n h: 0,\r\n v: 0\r\n },\r\n contentId: void 0\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this.updateMaxWidth();\r\n this._updatePosition()\r\n },\r\n _initMarkup() {\r\n this.callBase();\r\n this._ensureMessageNotEmpty();\r\n this._updatePositionByTarget();\r\n this._toggleModeClass();\r\n this._updateContentId()\r\n },\r\n _updatePositionByTarget: function() {\r\n var {\r\n target: target\r\n } = this.option();\r\n this.option(\"position.of\", target)\r\n },\r\n _ensureMessageNotEmpty: function() {\r\n this._textMarkup = this._getTextMarkup();\r\n var shouldShowMessage = this.option(\"visible\") && this._textMarkup;\r\n this._toggleVisibilityClasses(shouldShowMessage)\r\n },\r\n _toggleVisibilityClasses: function(visible) {\r\n if (visible) {\r\n this.$element().addClass(INVALID_MESSAGE);\r\n this.$wrapper().addClass(INVALID_MESSAGE)\r\n } else {\r\n this.$element().removeClass(INVALID_MESSAGE);\r\n this.$wrapper().removeClass(INVALID_MESSAGE)\r\n }\r\n },\r\n _updateContentId() {\r\n var {\r\n container: container,\r\n contentId: contentId\r\n } = this.option();\r\n var id = null !== contentId && void 0 !== contentId ? contentId : $(container).attr(\"aria-describedby\");\r\n this.$content().addClass(INVALID_MESSAGE_CONTENT).attr(\"id\", id)\r\n },\r\n _renderInnerHtml(element) {\r\n var $element = element && $(element);\r\n null === $element || void 0 === $element ? void 0 : $element.html(this._textMarkup)\r\n },\r\n _getTextMarkup() {\r\n var _this$option;\r\n var validationErrors = null !== (_this$option = this.option(\"validationErrors\")) && void 0 !== _this$option ? _this$option : [];\r\n var validationErrorMessage = \"\";\r\n validationErrors.forEach(err => {\r\n var _err$message;\r\n var separator = validationErrorMessage ? \"<br />\" : \"\";\r\n validationErrorMessage += separator + encodeHtml(null !== (_err$message = null === err || void 0 === err ? void 0 : err.message) && void 0 !== _err$message ? _err$message : \"\")\r\n });\r\n return validationErrorMessage\r\n },\r\n _toggleModeClass() {\r\n var mode = this.option(\"mode\");\r\n this.$wrapper().toggleClass(INVALID_MESSAGE_AUTO, \"auto\" === mode).toggleClass(INVALID_MESSAGE_ALWAYS, \"always\" === mode)\r\n },\r\n updateMaxWidth() {\r\n var target = this.option(\"target\");\r\n var targetWidth = getOuterWidth(target);\r\n var maxWidth = \"100%\";\r\n if (targetWidth) {\r\n maxWidth = Math.max(targetWidth, VALIDATION_MESSAGE_MIN_WIDTH)\r\n }\r\n this.option({\r\n maxWidth: maxWidth\r\n })\r\n },\r\n _getPositionsArray: function(positionSide, rtlSide) {\r\n switch (positionSide) {\r\n case \"top\":\r\n return [\"\".concat(rtlSide, \" bottom\"), \"\".concat(rtlSide, \" top\")];\r\n case \"left\":\r\n return [\"right\", \"left\"];\r\n case \"right\":\r\n return [\"left\", \"right\"];\r\n default:\r\n return [\"\".concat(rtlSide, \" top\"), \"\".concat(rtlSide, \" bottom\")]\r\n }\r\n },\r\n _updatePosition: function() {\r\n var {\r\n positionSide: positionSide,\r\n rtlEnabled: rtlEnabled,\r\n offset: componentOffset,\r\n boundary: boundary\r\n } = this.option();\r\n var rtlSide = getDefaultAlignment(rtlEnabled);\r\n var positions = this._getPositionsArray(positionSide, rtlSide);\r\n var offset = _extends({}, componentOffset);\r\n this.$element().addClass(\"dx-invalid-message-\".concat(positionSide));\r\n if (rtlEnabled && \"left\" !== positionSide && \"right\" !== positionSide) {\r\n offset.h = -offset.h\r\n }\r\n if (\"top\" === positionSide) {\r\n offset.v = -offset.v\r\n }\r\n if (\"left\" === positionSide) {\r\n offset.h = -offset.h\r\n }\r\n this.option(\"position\", {\r\n offset: offset,\r\n boundary: boundary,\r\n my: positions[0],\r\n at: positions[1],\r\n collision: \"none flip\"\r\n })\r\n },\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n switch (name) {\r\n case \"target\":\r\n this._updatePositionByTarget();\r\n this.updateMaxWidth();\r\n this.callBase(args);\r\n break;\r\n case \"boundary\":\r\n this.option(\"position.boundary\", value);\r\n break;\r\n case \"mode\":\r\n this._toggleModeClass(value);\r\n break;\r\n case \"rtlEnabled\":\r\n case \"offset\":\r\n case \"positionSide\":\r\n this.$element().removeClass(\"dx-invalid-message-\".concat(previousValue));\r\n this._updatePosition();\r\n break;\r\n case \"container\":\r\n this._updateContentId();\r\n this.callBase(args);\r\n break;\r\n case \"contentId\":\r\n this._updateContentId();\r\n break;\r\n case \"validationErrors\":\r\n this._ensureMessageNotEmpty();\r\n this._renderInnerHtml(this.$content());\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxValidationMessage\", ValidationMessage);\r\nexport default ValidationMessage;\r\n","/**\r\n * DevExtreme (esm/ui/editor/editor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n data\r\n} from \"../../core/element_data\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport ValidationEngine from \"../validation_engine\";\r\nimport EventsEngine from \"../../events/core/events_engine\";\r\nimport ValidationMessage from \"../validation_message\";\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n resetActiveElement\r\n} from \"../../core/utils/dom\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar READONLY_STATE_CLASS = \"dx-state-readonly\";\r\nvar INVALID_CLASS = \"dx-invalid\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar VALIDATION_TARGET = \"dx-validation-target\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar READONLY_NAMESPACE = \"editorReadOnly\";\r\nvar ALLOWED_STYLING_MODES = [\"outlined\", \"filled\", \"underlined\"];\r\nvar VALIDATION_MESSAGE_KEYS_MAP = {\r\n validationMessageMode: \"mode\",\r\n validationMessagePosition: \"positionSide\",\r\n validationMessageOffset: \"offset\",\r\n validationBoundary: \"boundary\"\r\n};\r\nvar Editor = Widget.inherit({\r\n ctor: function() {\r\n this.showValidationMessageTimeout = null;\r\n this.validationRequest = Callbacks();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _createElement: function(element) {\r\n this.callBase(element);\r\n var $element = this.$element();\r\n if ($element) {\r\n data($element[0], VALIDATION_TARGET, this)\r\n }\r\n },\r\n _initOptions: function(options) {\r\n this.callBase.apply(this, arguments);\r\n this.option(ValidationEngine.initValidationOptions(options))\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._options.cache(\"validationTooltipOptions\", this.option(\"validationTooltipOptions\"));\r\n var $element = this.$element();\r\n $element.addClass(DX_INVALID_BADGE_CLASS)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: null,\r\n name: \"\",\r\n onValueChanged: null,\r\n readOnly: false,\r\n isValid: true,\r\n validationError: null,\r\n validationErrors: null,\r\n validationStatus: VALIDATION_STATUS_VALID,\r\n validationMessageMode: \"auto\",\r\n validationMessagePosition: \"bottom\",\r\n validationBoundary: void 0,\r\n validationMessageOffset: {\r\n h: 0,\r\n v: 0\r\n },\r\n validationTooltipOptions: {},\r\n _showValidationMessage: true\r\n })\r\n },\r\n _attachKeyboardEvents: function() {\r\n if (!this.option(\"readOnly\")) {\r\n this.callBase()\r\n }\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n validationError: true\r\n })\r\n },\r\n _createValueChangeAction: function() {\r\n this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _suppressValueChangeAction: function() {\r\n this._valueChangeActionSuppressed = true\r\n },\r\n _resumeValueChangeAction: function() {\r\n this._valueChangeActionSuppressed = false\r\n },\r\n _initMarkup: function() {\r\n var _this$option;\r\n this._toggleReadOnlyState();\r\n this._setSubmitElementName(this.option(\"name\"));\r\n this.callBase();\r\n this._renderValidationState();\r\n null === (_this$option = this.option(\"_onMarkupRendered\")) || void 0 === _this$option ? void 0 : _this$option()\r\n },\r\n _raiseValueChangeAction: function(value, previousValue) {\r\n if (!this._valueChangeAction) {\r\n this._createValueChangeAction()\r\n }\r\n this._valueChangeAction(this._valueChangeArgs(value, previousValue))\r\n },\r\n _valueChangeArgs: function(value, previousValue) {\r\n return {\r\n value: value,\r\n previousValue: previousValue,\r\n event: this._valueChangeEventInstance\r\n }\r\n },\r\n _saveValueChangeEvent: function(e) {\r\n this._valueChangeEventInstance = e\r\n },\r\n _focusInHandler: function(e) {\r\n var isValidationMessageShownOnFocus = \"auto\" === this.option(\"validationMessageMode\");\r\n if (this._canValueBeChangedByClick() && isValidationMessageShownOnFocus) {\r\n var _this$_validationMess;\r\n var $validationMessageWrapper = null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.$wrapper();\r\n null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass(INVALID_MESSAGE_AUTO);\r\n clearTimeout(this.showValidationMessageTimeout);\r\n this.showValidationMessageTimeout = setTimeout(() => null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass(INVALID_MESSAGE_AUTO), 150)\r\n }\r\n return this.callBase(e)\r\n },\r\n _canValueBeChangedByClick: function() {\r\n return false\r\n },\r\n _getStylingModePrefix: function() {\r\n return \"dx-editor-\"\r\n },\r\n _renderStylingMode: function() {\r\n var optionValue = this.option(\"stylingMode\");\r\n var prefix = this._getStylingModePrefix();\r\n var allowedStylingClasses = ALLOWED_STYLING_MODES.map(mode => prefix + mode);\r\n allowedStylingClasses.forEach(className => this.$element().removeClass(className));\r\n var stylingModeClass = prefix + optionValue;\r\n if (-1 === allowedStylingClasses.indexOf(stylingModeClass)) {\r\n var defaultOptionValue = this._getDefaultOptions().stylingMode;\r\n var platformOptionValue = this._convertRulesToOptions(this._defaultOptionsRules()).stylingMode;\r\n stylingModeClass = prefix + (platformOptionValue || defaultOptionValue)\r\n }\r\n this.$element().addClass(stylingModeClass)\r\n },\r\n _getValidationErrors: function() {\r\n var validationErrors = this.option(\"validationErrors\");\r\n if (!validationErrors && this.option(\"validationError\")) {\r\n validationErrors = [this.option(\"validationError\")]\r\n }\r\n return validationErrors\r\n },\r\n _disposeValidationMessage: function() {\r\n if (this._$validationMessage) {\r\n this._$validationMessage.remove();\r\n this.setAria(\"describedby\", null);\r\n this._$validationMessage = void 0;\r\n this._validationMessage = void 0\r\n }\r\n },\r\n _toggleValidationClasses: function(isInvalid) {\r\n this.$element().toggleClass(INVALID_CLASS, isInvalid);\r\n this.setAria(VALIDATION_STATUS_INVALID, isInvalid || void 0)\r\n },\r\n _renderValidationState: function() {\r\n var isValid = this.option(\"isValid\") && this.option(\"validationStatus\") !== VALIDATION_STATUS_INVALID;\r\n var validationErrors = this._getValidationErrors();\r\n var $element = this.$element();\r\n this._toggleValidationClasses(!isValid);\r\n if (!hasWindow() || false === this.option(\"_showValidationMessage\")) {\r\n return\r\n }\r\n this._disposeValidationMessage();\r\n if (!isValid && validationErrors) {\r\n var {\r\n validationMessageMode: validationMessageMode,\r\n validationMessageOffset: validationMessageOffset,\r\n validationBoundary: validationBoundary,\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n this._$validationMessage = $(\"<div>\").appendTo($element);\r\n var validationMessageContentId = \"dx-\".concat(new Guid);\r\n this.setAria(\"describedby\", validationMessageContentId);\r\n this._validationMessage = new ValidationMessage(this._$validationMessage, extend({\r\n validationErrors: validationErrors,\r\n rtlEnabled: rtlEnabled,\r\n target: this._getValidationMessageTarget(),\r\n visualContainer: $element,\r\n mode: validationMessageMode,\r\n positionSide: this._getValidationMessagePosition(),\r\n offset: validationMessageOffset,\r\n boundary: validationBoundary,\r\n contentId: validationMessageContentId\r\n }, this._options.cache(\"validationTooltipOptions\")));\r\n this._bindInnerWidgetOptions(this._validationMessage, \"validationTooltipOptions\")\r\n }\r\n },\r\n _getValidationMessagePosition: function() {\r\n return this.option(\"validationMessagePosition\")\r\n },\r\n _getValidationMessageTarget: function() {\r\n return this.$element()\r\n },\r\n _toggleReadOnlyState: function() {\r\n var readOnly = this.option(\"readOnly\");\r\n this._toggleBackspaceHandler(readOnly);\r\n this.$element().toggleClass(READONLY_STATE_CLASS, !!readOnly);\r\n this.setAria(\"readonly\", readOnly || void 0)\r\n },\r\n _toggleBackspaceHandler: function(isReadOnly) {\r\n var $eventTarget = this._keyboardEventBindingTarget();\r\n var eventName = addNamespace(\"keydown\", READONLY_NAMESPACE);\r\n EventsEngine.off($eventTarget, eventName);\r\n if (isReadOnly) {\r\n EventsEngine.on($eventTarget, eventName, e => {\r\n if (\"backspace\" === normalizeKeyName(e)) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n },\r\n _dispose: function() {\r\n var element = this.$element()[0];\r\n data(element, VALIDATION_TARGET, null);\r\n clearTimeout(this.showValidationMessageTimeout);\r\n this._disposeValidationMessage();\r\n this.callBase()\r\n },\r\n _setSubmitElementName: function(name) {\r\n var $submitElement = this._getSubmitElement();\r\n if (!$submitElement) {\r\n return\r\n }\r\n if (name.length > 0) {\r\n $submitElement.attr(\"name\", name)\r\n } else {\r\n $submitElement.removeAttr(\"name\")\r\n }\r\n },\r\n _getSubmitElement: function() {\r\n return null\r\n },\r\n _setValidationMessageOption: function(_ref) {\r\n var _this$_validationMess2;\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n var optionKey = VALIDATION_MESSAGE_KEYS_MAP[name] ? VALIDATION_MESSAGE_KEYS_MAP[name] : name;\r\n null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(optionKey, value)\r\n },\r\n _hasActiveElement: noop,\r\n _optionChanged: function(args) {\r\n var _this$_validationMess3;\r\n switch (args.name) {\r\n case \"onValueChanged\":\r\n this._createValueChangeAction();\r\n break;\r\n case \"readOnly\":\r\n this._toggleReadOnlyState();\r\n this._refreshFocusState();\r\n break;\r\n case \"value\":\r\n if (args.value != args.previousValue) {\r\n this.validationRequest.fire({\r\n value: args.value,\r\n editor: this\r\n })\r\n }\r\n if (!this._valueChangeActionSuppressed) {\r\n this._raiseValueChangeAction(args.value, args.previousValue);\r\n this._saveValueChangeEvent(void 0)\r\n }\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n null === (_this$_validationMess3 = this._validationMessage) || void 0 === _this$_validationMess3 ? void 0 : _this$_validationMess3.updateMaxWidth();\r\n break;\r\n case \"name\":\r\n this._setSubmitElementName(args.value);\r\n break;\r\n case \"isValid\":\r\n case \"validationError\":\r\n case \"validationErrors\":\r\n case \"validationStatus\":\r\n this.option(ValidationEngine.synchronizeValidationOptions(args, this.option()));\r\n this._renderValidationState();\r\n break;\r\n case \"validationBoundary\":\r\n case \"validationMessageMode\":\r\n case \"validationMessagePosition\":\r\n case \"validationMessageOffset\":\r\n this._setValidationMessageOption(args);\r\n break;\r\n case \"rtlEnabled\":\r\n this._setValidationMessageOption(args);\r\n this.callBase(args);\r\n break;\r\n case \"validationTooltipOptions\":\r\n this._innerWidgetOptionChanged(this._validationMessage, args);\r\n break;\r\n case \"_showValidationMessage\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n blur: function() {\r\n if (this._hasActiveElement()) {\r\n resetActiveElement()\r\n }\r\n },\r\n reset: function() {\r\n var defaultOptions = this._getDefaultOptions();\r\n this.option(\"value\", defaultOptions.value)\r\n }\r\n});\r\nEditor.isEditor = instance => instance instanceof Editor;\r\nexport default Editor;\r\n","/**\r\n * DevExtreme (esm/ui/radio_group/radio_group.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n deferRender\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport CollectionWidget from \"../collection/ui.collection_widget.edit\";\r\nimport DataExpressionMixin from \"../editor/ui.data_expression\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar RADIO_BUTTON_CHECKED_CLASS = \"dx-radiobutton-checked\";\r\nvar RADIO_BUTTON_CLASS = \"dx-radiobutton\";\r\nvar RADIO_BUTTON_ICON_CHECKED_CLASS = \"dx-radiobutton-icon-checked\";\r\nvar RADIO_BUTTON_ICON_CLASS = \"dx-radiobutton-icon\";\r\nvar RADIO_BUTTON_ICON_DOT_CLASS = \"dx-radiobutton-icon-dot\";\r\nvar RADIO_GROUP_HORIZONTAL_CLASS = \"dx-radiogroup-horizontal\";\r\nvar RADIO_GROUP_VERTICAL_CLASS = \"dx-radiogroup-vertical\";\r\nvar RADIO_VALUE_CONTAINER_CLASS = \"dx-radio-value-container\";\r\nvar RADIO_GROUP_CLASS = \"dx-radiogroup\";\r\nvar RADIO_FEEDBACK_HIDE_TIMEOUT = 100;\r\nclass RadioCollection extends CollectionWidget {\r\n _focusTarget() {\r\n return this.$element().parent()\r\n }\r\n _nullValueSelectionSupported() {\r\n return true\r\n }\r\n _getDefaultOptions() {\r\n var defaultOptions = super._getDefaultOptions();\r\n return extend(defaultOptions, DataExpressionMixin._dataExpressionDefaultOptions(), {\r\n _itemAttributes: {\r\n role: \"radio\"\r\n }\r\n })\r\n }\r\n _initMarkup() {\r\n super._initMarkup();\r\n deferRender(() => {\r\n this.itemElements().addClass(RADIO_BUTTON_CLASS)\r\n })\r\n }\r\n _keyboardEventBindingTarget() {\r\n return this._focusTarget()\r\n }\r\n _postprocessRenderItem(args) {\r\n var {\r\n itemData: {\r\n html: html\r\n },\r\n itemElement: itemElement\r\n } = args;\r\n if (!html) {\r\n var $radio = $(\"<div>\").addClass(RADIO_BUTTON_ICON_CLASS);\r\n $(\"<div>\").addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo($radio);\r\n var $radioContainer = $(\"<div>\").append($radio).addClass(RADIO_VALUE_CONTAINER_CLASS);\r\n $(itemElement).prepend($radioContainer)\r\n }\r\n super._postprocessRenderItem(args)\r\n }\r\n _processSelectableItem($itemElement, isSelected) {\r\n super._processSelectableItem($itemElement, isSelected);\r\n $itemElement.toggleClass(RADIO_BUTTON_CHECKED_CLASS, isSelected).find(\".\".concat(RADIO_BUTTON_ICON_CLASS)).first().toggleClass(RADIO_BUTTON_ICON_CHECKED_CLASS, isSelected);\r\n this.setAria(\"checked\", isSelected, $itemElement)\r\n }\r\n _refreshContent() {\r\n this._prepareContent();\r\n this._renderContent()\r\n }\r\n _supportedKeys() {\r\n var parent = super._supportedKeys();\r\n return extend({}, parent, {\r\n enter: function(e) {\r\n e.preventDefault();\r\n return parent.enter.apply(this, arguments)\r\n },\r\n space: function(e) {\r\n e.preventDefault();\r\n return parent.space.apply(this, arguments)\r\n }\r\n })\r\n }\r\n _itemElements() {\r\n return this._itemContainer().children(this._itemSelector())\r\n }\r\n _setAriaSelectionAttribute() {}\r\n}\r\nclass RadioGroup extends Editor {\r\n _dataSourceOptions() {\r\n return {\r\n paginate: false\r\n }\r\n }\r\n _defaultOptionsRules() {\r\n var defaultOptionsRules = super._defaultOptionsRules();\r\n return defaultOptionsRules.concat([{\r\n device: {\r\n tablet: true\r\n },\r\n options: {\r\n layout: \"horizontal\"\r\n }\r\n }, {\r\n device: () => \"desktop\" === devices.real().deviceType && !devices.isSimulator(),\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n }\r\n _fireContentReadyAction(force) {\r\n force && super._fireContentReadyAction()\r\n }\r\n _focusTarget() {\r\n return this.$element()\r\n }\r\n _getAriaTarget() {\r\n return this.$element()\r\n }\r\n _getDefaultOptions() {\r\n var defaultOptions = super._getDefaultOptions();\r\n return extend(defaultOptions, extend(DataExpressionMixin._dataExpressionDefaultOptions(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n layout: \"vertical\"\r\n }))\r\n }\r\n _getItemValue(item) {\r\n return this._valueGetter ? this._valueGetter(item) : item.text\r\n }\r\n _getSubmitElement() {\r\n return this._$submitElement\r\n }\r\n _init() {\r\n super._init();\r\n this._activeStateUnit = \".\".concat(RADIO_BUTTON_CLASS);\r\n this._feedbackHideTimeout = RADIO_FEEDBACK_HIDE_TIMEOUT;\r\n this._initDataExpressions()\r\n }\r\n _initMarkup() {\r\n this.$element().addClass(RADIO_GROUP_CLASS);\r\n this._renderSubmitElement();\r\n this.setAria(\"role\", \"radiogroup\");\r\n this._renderRadios();\r\n this._renderLayout();\r\n super._initMarkup()\r\n }\r\n _itemClickHandler(_ref) {\r\n var {\r\n itemElement: itemElement,\r\n event: event,\r\n itemData: itemData\r\n } = _ref;\r\n if (this.itemElements().is(itemElement)) {\r\n var newValue = this._getItemValue(itemData);\r\n if (newValue !== this.option(\"value\")) {\r\n this._saveValueChangeEvent(event);\r\n this.option(\"value\", newValue)\r\n }\r\n }\r\n }\r\n _getSelectedItemKeys() {\r\n var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option(\"value\");\r\n var isNullSelectable = \"this\" !== this.option(\"valueExpr\");\r\n var shouldSelectValue = isNullSelectable && null === value || isDefined(value);\r\n return shouldSelectValue ? [value] : []\r\n }\r\n _setSelection(currentValue) {\r\n var value = this._unwrappedValue(currentValue);\r\n this._setCollectionWidgetOption(\"selectedItemKeys\", this._getSelectedItemKeys(value))\r\n }\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n this._dataExpressionOptionChanged(args);\r\n switch (name) {\r\n case \"dataSource\":\r\n this._invalidate();\r\n break;\r\n case \"focusStateEnabled\":\r\n case \"accessKey\":\r\n case \"tabIndex\":\r\n this._setCollectionWidgetOption(name, value);\r\n break;\r\n case \"disabled\":\r\n super._optionChanged(args);\r\n this._setCollectionWidgetOption(name, value);\r\n break;\r\n case \"valueExpr\":\r\n this._setCollectionWidgetOption(\"keyExpr\", this._getCollectionKeyExpr());\r\n break;\r\n case \"value\":\r\n this._setSelection(value);\r\n this._setSubmitValue(value);\r\n super._optionChanged(args);\r\n break;\r\n case \"items\":\r\n this._setSelection(this.option(\"value\"));\r\n break;\r\n case \"itemTemplate\":\r\n case \"displayExpr\":\r\n break;\r\n case \"layout\":\r\n this._renderLayout();\r\n this._updateItemsSize();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _render() {\r\n super._render();\r\n this._updateItemsSize()\r\n }\r\n _renderLayout() {\r\n var layout = this.option(\"layout\");\r\n var $element = this.$element();\r\n $element.toggleClass(RADIO_GROUP_VERTICAL_CLASS, \"vertical\" === layout);\r\n $element.toggleClass(RADIO_GROUP_HORIZONTAL_CLASS, \"horizontal\" === layout)\r\n }\r\n _renderRadios() {\r\n this._areRadiosCreated = new Deferred;\r\n var $radios = $(\"<div>\").appendTo(this.$element());\r\n var {\r\n displayExpr: displayExpr,\r\n accessKey: accessKey,\r\n focusStateEnabled: focusStateEnabled,\r\n itemTemplate: itemTemplate,\r\n tabIndex: tabIndex\r\n } = this.option();\r\n this._createComponent($radios, RadioCollection, {\r\n onInitialized: _ref2 => {\r\n var {\r\n component: component\r\n } = _ref2;\r\n this._radios = component\r\n },\r\n onContentReady: e => {\r\n this._fireContentReadyAction(true)\r\n },\r\n onItemClick: this._itemClickHandler.bind(this),\r\n displayExpr: displayExpr,\r\n accessKey: accessKey,\r\n dataSource: this._dataSource,\r\n focusStateEnabled: focusStateEnabled,\r\n itemTemplate: itemTemplate,\r\n keyExpr: this._getCollectionKeyExpr(),\r\n noDataText: \"\",\r\n scrollingEnabled: false,\r\n selectByClick: false,\r\n selectionMode: \"single\",\r\n selectedItemKeys: this._getSelectedItemKeys(),\r\n tabIndex: tabIndex\r\n });\r\n this._areRadiosCreated.resolve()\r\n }\r\n _renderSubmitElement() {\r\n this._$submitElement = $(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue()\r\n }\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n extend(this._optionsByReference, {\r\n value: true\r\n })\r\n }\r\n _setSubmitValue(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this.option(\"value\");\r\n var submitValue = \"this\" === this.option(\"valueExpr\") ? this._displayGetter(value) : value;\r\n this._$submitElement.val(submitValue)\r\n }\r\n _setCollectionWidgetOption() {\r\n this._areRadiosCreated.done(this._setWidgetOption.bind(this, \"_radios\", arguments))\r\n }\r\n _updateItemsSize() {\r\n if (\"horizontal\" === this.option(\"layout\")) {\r\n this.itemElements().css(\"height\", \"auto\")\r\n } else {\r\n var itemsCount = this.option(\"items\").length;\r\n this.itemElements().css(\"height\", 100 / itemsCount + \"%\")\r\n }\r\n }\r\n focus() {\r\n var _this$_radios;\r\n null === (_this$_radios = this._radios) || void 0 === _this$_radios ? void 0 : _this$_radios.focus()\r\n }\r\n itemElements() {\r\n var _this$_radios2;\r\n return null === (_this$_radios2 = this._radios) || void 0 === _this$_radios2 ? void 0 : _this$_radios2.itemElements()\r\n }\r\n}\r\nRadioGroup.include(DataExpressionMixin);\r\nregisterComponent(\"dxRadioGroup\", RadioGroup);\r\nexport default RadioGroup;\r\n","/**\r\n * DevExtreme (esm/ui/button_group.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport Widget from \"./widget/ui.widget\";\r\nimport Button from \"./button\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../core/utils/type\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nvar BUTTON_GROUP_CLASS = \"dx-buttongroup\";\r\nvar BUTTON_GROUP_WRAPPER_CLASS = BUTTON_GROUP_CLASS + \"-wrapper\";\r\nvar BUTTON_GROUP_ITEM_CLASS = BUTTON_GROUP_CLASS + \"-item\";\r\nvar BUTTON_GROUP_FIRST_ITEM_CLASS = BUTTON_GROUP_CLASS + \"-first-item\";\r\nvar BUTTON_GROUP_LAST_ITEM_CLASS = BUTTON_GROUP_CLASS + \"-last-item\";\r\nvar BUTTON_GROUP_ITEM_HAS_WIDTH = BUTTON_GROUP_ITEM_CLASS + \"-has-width\";\r\nvar SHAPE_STANDARD_CLASS = \"dx-shape-standard\";\r\nvar ButtonCollection = CollectionWidget.inherit({\r\n _initTemplates() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(($container, data, model) => {\r\n this._prepareItemStyles($container);\r\n var template = this.option(\"buttonTemplate\");\r\n this._createComponent($container, Button, extend({}, model, data, this._getBasicButtonOptions(), {\r\n _templateData: this._hasCustomTemplate(template) ? model : {},\r\n template: model.template || template\r\n }))\r\n }, [\"text\", \"type\", \"icon\", \"disabled\", \"visible\", \"hint\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _getBasicButtonOptions() {\r\n return {\r\n focusStateEnabled: false,\r\n onClick: null,\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n stylingMode: this.option(\"stylingMode\")\r\n }\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n itemTemplateProperty: null\r\n })\r\n },\r\n _hasCustomTemplate(template) {\r\n return isFunction(template) || this.option(\"integrationOptions.templates\")[template]\r\n },\r\n _prepareItemStyles($item) {\r\n var itemIndex = $item.data(\"dxItemIndex\");\r\n 0 === itemIndex && $item.addClass(BUTTON_GROUP_FIRST_ITEM_CLASS);\r\n var items = this.option(\"items\");\r\n items && itemIndex === items.length - 1 && $item.addClass(BUTTON_GROUP_LAST_ITEM_CLASS);\r\n $item.addClass(SHAPE_STANDARD_CLASS)\r\n },\r\n _renderItemContent(args) {\r\n args.container = $(args.container).parent();\r\n return this.callBase(args)\r\n },\r\n _setAriaSelectionAttribute: function($target, value) {\r\n this.setAria(\"pressed\", value, $target)\r\n },\r\n _renderItemContentByNode: function(args, $node) {\r\n args.container = $(args.container.children().first());\r\n return this.callBase(args, $node)\r\n },\r\n _focusTarget() {\r\n return this.$element().parent()\r\n },\r\n _keyboardEventBindingTarget() {\r\n return this._focusTarget()\r\n },\r\n _refreshContent() {\r\n this._prepareContent();\r\n this._renderContent()\r\n },\r\n _itemClass: () => BUTTON_GROUP_ITEM_CLASS,\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n this.callBase(e)\r\n }\r\n});\r\nvar ButtonGroup = Widget.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n focusStateEnabled: true,\r\n selectionMode: \"single\",\r\n selectedItems: [],\r\n selectedItemKeys: [],\r\n stylingMode: \"contained\",\r\n keyExpr: \"text\",\r\n items: [],\r\n buttonTemplate: \"content\",\r\n onSelectionChanged: null,\r\n onItemClick: null\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._createItemClickAction()\r\n },\r\n _createItemClickAction() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n },\r\n _initMarkup() {\r\n this.setAria(\"role\", \"group\");\r\n this.$element().addClass(BUTTON_GROUP_CLASS);\r\n this._renderButtons();\r\n this._syncSelectionOptions();\r\n this.callBase()\r\n },\r\n _fireSelectionChangeEvent: function(addedItems, removedItems) {\r\n this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })({\r\n addedItems: addedItems,\r\n removedItems: removedItems\r\n })\r\n },\r\n _renderButtons() {\r\n var $buttons = $(\"<div>\").addClass(BUTTON_GROUP_WRAPPER_CLASS).appendTo(this.$element());\r\n var selectedItems = this.option(\"selectedItems\");\r\n var options = {\r\n selectionMode: this.option(\"selectionMode\"),\r\n items: this.option(\"items\"),\r\n keyExpr: this.option(\"keyExpr\"),\r\n buttonTemplate: this.option(\"buttonTemplate\"),\r\n scrollingEnabled: false,\r\n selectedItemKeys: this.option(\"selectedItemKeys\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n activeStateEnabled: this.option(\"activeStateEnabled\"),\r\n stylingMode: this.option(\"stylingMode\"),\r\n accessKey: this.option(\"accessKey\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n noDataText: \"\",\r\n selectionRequired: false,\r\n onItemRendered: e => {\r\n var width = this.option(\"width\");\r\n isDefined(width) && $(e.itemElement).addClass(BUTTON_GROUP_ITEM_HAS_WIDTH)\r\n },\r\n onSelectionChanged: e => {\r\n this._syncSelectionOptions();\r\n this._fireSelectionChangeEvent(e.addedItems, e.removedItems)\r\n },\r\n onItemClick: e => {\r\n this._itemClickAction(e)\r\n }\r\n };\r\n if (isDefined(selectedItems) && selectedItems.length) {\r\n options.selectedItems = selectedItems\r\n }\r\n this._buttonsCollection = this._createComponent($buttons, ButtonCollection, options)\r\n },\r\n _syncSelectionOptions() {\r\n this._setOptionWithoutOptionChange(\"selectedItems\", this._buttonsCollection.option(\"selectedItems\"));\r\n this._setOptionWithoutOptionChange(\"selectedItemKeys\", this._buttonsCollection.option(\"selectedItemKeys\"))\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"stylingMode\":\r\n case \"selectionMode\":\r\n case \"keyExpr\":\r\n case \"buttonTemplate\":\r\n case \"items\":\r\n case \"activeStateEnabled\":\r\n case \"focusStateEnabled\":\r\n case \"hoverStateEnabled\":\r\n case \"tabIndex\":\r\n this._invalidate();\r\n break;\r\n case \"selectedItemKeys\":\r\n case \"selectedItems\":\r\n this._buttonsCollection.option(args.name, args.value);\r\n break;\r\n case \"onItemClick\":\r\n this._createItemClickAction();\r\n break;\r\n case \"onSelectionChanged\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._buttonsCollection.itemElements().toggleClass(BUTTON_GROUP_ITEM_HAS_WIDTH, !!args.value);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxButtonGroup\", ButtonGroup);\r\nexport default ButtonGroup;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.mask.parts.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getPatternSetters\r\n} from \"../../localization/ldml/date.parser\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar monthGetter = date => date.getMonth() + 1;\r\nvar monthSetter = (date, value) => {\r\n var day = date.getDate();\r\n var monthLimits = getLimits(\"M\", date);\r\n var newValue = fitIntoRange(parseInt(value), monthLimits.min, monthLimits.max);\r\n date.setMonth(newValue - 1, 1);\r\n var {\r\n min: min,\r\n max: max\r\n } = getLimits(\"dM\", date);\r\n var newDay = fitIntoRange(day, min, max);\r\n date.setDate(newDay)\r\n};\r\nvar PATTERN_GETTERS = {\r\n a: date => date.getHours() < 12 ? 0 : 1,\r\n E: \"getDay\",\r\n y: \"getFullYear\",\r\n M: monthGetter,\r\n L: monthGetter,\r\n d: \"getDate\",\r\n H: \"getHours\",\r\n h: \"getHours\",\r\n m: \"getMinutes\",\r\n s: \"getSeconds\",\r\n S: \"getMilliseconds\"\r\n};\r\nvar PATTERN_SETTERS = extend({}, getPatternSetters(), {\r\n a: (date, value) => {\r\n var hours = date.getHours();\r\n var current = hours >= 12;\r\n if (current === !!parseInt(value)) {\r\n return\r\n }\r\n date.setHours((hours + 12) % 24)\r\n },\r\n d: (date, value) => {\r\n var lastDayInMonth = getLimits(\"dM\", date).max;\r\n if (value > lastDayInMonth) {\r\n date.setMonth(date.getMonth() + 1)\r\n }\r\n date.setDate(value)\r\n },\r\n h: (date, value) => {\r\n var isPM = date.getHours() >= 12;\r\n date.setHours(+value % 12 + (isPM ? 12 : 0))\r\n },\r\n M: monthSetter,\r\n L: monthSetter,\r\n E: (date, value) => {\r\n if (value < 0) {\r\n return\r\n }\r\n date.setDate(date.getDate() - date.getDay() + parseInt(value))\r\n },\r\n y: (date, value) => {\r\n var currentYear = date.getFullYear();\r\n var valueLength = String(value).length;\r\n var maxLimitLength = String(getLimits(\"y\", date).max).length;\r\n var newValue = parseInt(String(currentYear).substr(0, maxLimitLength - valueLength) + value);\r\n date.setFullYear(newValue)\r\n }\r\n});\r\nvar getPatternGetter = patternChar => PATTERN_GETTERS[patternChar] || (() => patternChar);\r\nexport var renderDateParts = (text, regExpInfo) => {\r\n var result = regExpInfo.regexp.exec(text);\r\n var start = 0;\r\n var end = 0;\r\n var sections = [];\r\n var _loop = function() {\r\n start = end;\r\n end = start + result[i].length;\r\n var pattern = regExpInfo.patterns[i - 1].replace(/^'|'$/g, \"\");\r\n var getter = getPatternGetter(pattern[0]);\r\n sections.push({\r\n index: i - 1,\r\n isStub: pattern === result[i],\r\n caret: {\r\n start: start,\r\n end: end\r\n },\r\n pattern: pattern,\r\n text: result[i],\r\n limits: function() {\r\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\r\n args[_key] = arguments[_key]\r\n }\r\n return getLimits(pattern[0], ...args)\r\n },\r\n setter: PATTERN_SETTERS[pattern[0]] || noop,\r\n getter: getter\r\n })\r\n };\r\n for (var i = 1; i < result.length; i++) {\r\n _loop()\r\n }\r\n return sections\r\n};\r\nvar getLimits = (pattern, date, forcedPattern) => {\r\n var limits = {\r\n y: {\r\n min: 0,\r\n max: 9999\r\n },\r\n M: {\r\n min: 1,\r\n max: 12\r\n },\r\n L: {\r\n min: 1,\r\n max: 12\r\n },\r\n d: {\r\n min: 1,\r\n max: 31\r\n },\r\n dM: {\r\n min: 1,\r\n max: new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate()\r\n },\r\n E: {\r\n min: 0,\r\n max: 6\r\n },\r\n H: {\r\n min: 0,\r\n max: 23\r\n },\r\n h: {\r\n min: 0,\r\n max: 12\r\n },\r\n m: {\r\n min: 0,\r\n max: 59\r\n },\r\n s: {\r\n min: 0,\r\n max: 59\r\n },\r\n S: {\r\n min: 0,\r\n max: 999\r\n },\r\n a: {\r\n min: 0,\r\n max: 1\r\n }\r\n };\r\n return limits[forcedPattern || pattern] || limits.getAmPm\r\n};\r\nexport var getDatePartIndexByPosition = (dateParts, position) => {\r\n for (var i = 0; i < dateParts.length; i++) {\r\n var caretInGroup = dateParts[i].caret.end >= position;\r\n if (!dateParts[i].isStub && caretInGroup) {\r\n return i\r\n }\r\n }\r\n return null\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n isDate\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport dateLocalization from \"../../localization/date\";\r\nvar DATE_COMPONENTS = [\"year\", \"day\", \"month\", \"day\"];\r\nvar TIME_COMPONENTS = [\"hours\", \"minutes\", \"seconds\", \"milliseconds\"];\r\nvar ONE_MINUTE = 6e4;\r\nvar ONE_DAY = 60 * ONE_MINUTE * 24;\r\nvar ONE_YEAR = 365 * ONE_DAY;\r\nvar getStringFormat = function(format) {\r\n var formatType = typeof format;\r\n if (\"string\" === formatType) {\r\n return \"format\"\r\n }\r\n if (\"object\" === formatType && void 0 !== format.type) {\r\n return format.type\r\n }\r\n return null\r\n};\r\nvar dateUtils = {\r\n SUPPORTED_FORMATS: [\"date\", \"time\", \"datetime\"],\r\n ONE_MINUTE: ONE_MINUTE,\r\n ONE_DAY: ONE_DAY,\r\n ONE_YEAR: ONE_YEAR,\r\n MIN_DATEVIEW_DEFAULT_DATE: new Date(1900, 0, 1),\r\n MAX_DATEVIEW_DEFAULT_DATE: function() {\r\n var newDate = new Date;\r\n return new Date(newDate.getFullYear() + 50, newDate.getMonth(), newDate.getDate(), 23, 59, 59)\r\n }(),\r\n FORMATS_INFO: {\r\n date: {\r\n getStandardPattern: function() {\r\n return \"yyyy-MM-dd\"\r\n },\r\n components: DATE_COMPONENTS\r\n },\r\n time: {\r\n getStandardPattern: function() {\r\n return \"HH:mm\"\r\n },\r\n components: TIME_COMPONENTS\r\n },\r\n datetime: {\r\n getStandardPattern: function() {\r\n var standardPattern;\r\n ! function() {\r\n var $input = $(\"<input>\").attr(\"type\", \"datetime\");\r\n $input.val(\"2000-01-01T01:01Z\");\r\n if ($input.val()) {\r\n standardPattern = \"yyyy-MM-ddTHH:mmZ\"\r\n }\r\n }();\r\n if (!standardPattern) {\r\n standardPattern = \"yyyy-MM-ddTHH:mm:ssZ\"\r\n }\r\n dateUtils.FORMATS_INFO.datetime.getStandardPattern = function() {\r\n return standardPattern\r\n };\r\n return standardPattern\r\n },\r\n components: [...DATE_COMPONENTS, ...TIME_COMPONENTS]\r\n },\r\n \"datetime-local\": {\r\n getStandardPattern: function() {\r\n return \"yyyy-MM-ddTHH:mm:ss\"\r\n },\r\n components: [...DATE_COMPONENTS, \"hours\", \"minutes\", \"seconds\"]\r\n }\r\n },\r\n FORMATS_MAP: {\r\n date: \"shortdate\",\r\n time: \"shorttime\",\r\n datetime: \"shortdateshorttime\"\r\n },\r\n SUBMIT_FORMATS_MAP: {\r\n date: \"date\",\r\n time: \"time\",\r\n datetime: \"datetime-local\"\r\n },\r\n toStandardDateFormat: function(date, type) {\r\n var pattern = dateUtils.FORMATS_INFO[type].getStandardPattern();\r\n return dateSerialization.serializeDate(date, pattern)\r\n },\r\n fromStandardDateFormat: function(text) {\r\n var date = dateSerialization.dateParser(text);\r\n return isDate(date) ? date : void 0\r\n },\r\n getMaxMonthDay: function(year, month) {\r\n return new Date(year, month + 1, 0).getDate()\r\n },\r\n mergeDates: function(oldValue, newValue, format) {\r\n if (!newValue) {\r\n return newValue || null\r\n }\r\n if (!oldValue || isNaN(oldValue.getTime())) {\r\n var now = new Date(null);\r\n oldValue = new Date(now.getFullYear(), now.getMonth(), now.getDate())\r\n }\r\n var result = new Date(oldValue.valueOf());\r\n var formatInfo = dateUtils.FORMATS_INFO[format];\r\n each(formatInfo.components, (function() {\r\n var componentInfo = dateUtils.DATE_COMPONENTS_INFO[this];\r\n result[componentInfo.setter](newValue[componentInfo.getter]())\r\n }));\r\n return result\r\n },\r\n getLongestCaptionIndex: function(captionArray) {\r\n var longestIndex = 0;\r\n var longestCaptionLength = 0;\r\n var i;\r\n for (i = 0; i < captionArray.length; ++i) {\r\n if (captionArray[i].length > longestCaptionLength) {\r\n longestIndex = i;\r\n longestCaptionLength = captionArray[i].length\r\n }\r\n }\r\n return longestIndex\r\n },\r\n formatUsesMonthName: function(format) {\r\n return dateLocalization.formatUsesMonthName(format)\r\n },\r\n formatUsesDayName: function(format) {\r\n return dateLocalization.formatUsesDayName(format)\r\n },\r\n getLongestDate: function(format, monthNames, dayNames) {\r\n var stringFormat = getStringFormat(format);\r\n var month = 9;\r\n if (!stringFormat || dateUtils.formatUsesMonthName(stringFormat)) {\r\n month = dateUtils.getLongestCaptionIndex(monthNames)\r\n }\r\n var longestDate = new Date(1888, month, 21, 23, 59, 59, 999);\r\n if (!stringFormat || dateUtils.formatUsesDayName(stringFormat)) {\r\n var date = longestDate.getDate() - longestDate.getDay() + dateUtils.getLongestCaptionIndex(dayNames);\r\n longestDate.setDate(date)\r\n }\r\n return longestDate\r\n },\r\n normalizeTime: function(date) {\r\n date.setSeconds(0);\r\n date.setMilliseconds(0)\r\n }\r\n};\r\ndateUtils.DATE_COMPONENTS_INFO = {\r\n year: {\r\n getter: \"getFullYear\",\r\n setter: \"setFullYear\",\r\n formatter: function(value, date) {\r\n var formatDate = new Date(date.getTime());\r\n formatDate.setFullYear(value);\r\n return dateLocalization.format(formatDate, \"yyyy\")\r\n },\r\n startValue: void 0,\r\n endValue: void 0\r\n },\r\n day: {\r\n getter: \"getDate\",\r\n setter: \"setDate\",\r\n formatter: function(value, date) {\r\n var formatDate = new Date(date.getTime());\r\n formatDate.setDate(value);\r\n return dateLocalization.format(formatDate, \"d\")\r\n },\r\n startValue: 1,\r\n endValue: void 0\r\n },\r\n month: {\r\n getter: \"getMonth\",\r\n setter: \"setMonth\",\r\n formatter: function(value) {\r\n return dateLocalization.getMonthNames()[value]\r\n },\r\n startValue: 0,\r\n endValue: 11\r\n },\r\n hours: {\r\n getter: \"getHours\",\r\n setter: \"setHours\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, value), \"hour\")\r\n },\r\n startValue: 0,\r\n endValue: 23\r\n },\r\n minutes: {\r\n getter: \"getMinutes\",\r\n setter: \"setMinutes\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, 0, value), \"minute\")\r\n },\r\n startValue: 0,\r\n endValue: 59\r\n },\r\n seconds: {\r\n getter: \"getSeconds\",\r\n setter: \"setSeconds\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, 0, 0, value), \"second\")\r\n },\r\n startValue: 0,\r\n endValue: 59\r\n },\r\n milliseconds: {\r\n getter: \"getMilliseconds\",\r\n setter: \"setMilliseconds\",\r\n formatter: function(value) {\r\n return dateLocalization.format(new Date(0, 0, 0, 0, 0, 0, value), \"millisecond\")\r\n },\r\n startValue: 0,\r\n endValue: 999\r\n }\r\n};\r\nexport default dateUtils;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/texteditor_button_collection/button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nexport default class TextEditorButton {\r\n constructor(name, editor, options) {\r\n this.instance = null;\r\n this.$container = null;\r\n this.$placeMarker = null;\r\n this.editor = editor;\r\n this.name = name;\r\n this.options = options || {}\r\n }\r\n _addPlaceMarker($container) {\r\n this.$placeMarker = $(\"<div>\").appendTo($container)\r\n }\r\n _addToContainer($element) {\r\n var {\r\n $placeMarker: $placeMarker,\r\n $container: $container\r\n } = this;\r\n $placeMarker ? $placeMarker.replaceWith($element) : $element.appendTo($container)\r\n }\r\n _attachEvents() {\r\n throw \"Not implemented\"\r\n }\r\n _create() {\r\n throw \"Not implemented\"\r\n }\r\n _isRendered() {\r\n return !!this.instance\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor,\r\n options: options\r\n } = this;\r\n return options.visible || !editor.option(\"readOnly\")\r\n }\r\n _isDisabled() {\r\n throw \"Not implemented\"\r\n }\r\n _shouldRender() {\r\n return this._isVisible() && !this._isRendered()\r\n }\r\n dispose() {\r\n var {\r\n instance: instance,\r\n $placeMarker: $placeMarker\r\n } = this;\r\n if (instance) {\r\n instance.dispose ? instance.dispose() : instance.remove();\r\n this.instance = null\r\n }\r\n $placeMarker && $placeMarker.remove()\r\n }\r\n render() {\r\n var $container = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.$container;\r\n this.$container = $container;\r\n if (this._isVisible()) {\r\n var {\r\n instance: instance,\r\n $element: $element\r\n } = this._create();\r\n this.instance = instance;\r\n this._attachEvents(instance, $element)\r\n } else {\r\n this._addPlaceMarker($container)\r\n }\r\n }\r\n update() {\r\n if (this._shouldRender()) {\r\n this.render()\r\n }\r\n return !!this.instance\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport TextEditorButton from \"../text_box/texteditor_button_collection/button\";\r\nimport Button from \"../button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_CLASS = \"dx-dropdowneditor-button\";\r\nvar DROP_DOWN_EDITOR_BUTTON_VISIBLE = \"dx-dropdowneditor-button-visible\";\r\nvar BUTTON_MESSAGE = \"dxDropDownEditor-selectLabel\";\r\nexport default class DropDownButton extends TextEditorButton {\r\n constructor(name, editor, options) {\r\n super(name, editor, options);\r\n this.currentTemplate = null\r\n }\r\n _attachEvents(instance) {\r\n var {\r\n editor: editor\r\n } = this;\r\n instance.option(\"onClick\", e => {\r\n var _editor$_shouldCallOp;\r\n if (null !== (_editor$_shouldCallOp = editor._shouldCallOpenHandler) && void 0 !== _editor$_shouldCallOp && _editor$_shouldCallOp.call(editor)) {\r\n editor._openHandler(e);\r\n return\r\n }!editor.option(\"openOnFieldClick\") && editor._openHandler(e)\r\n });\r\n eventsEngine.on(instance.$element(), \"mousedown\", e => {\r\n if (editor.$element().is(\".dx-state-focused\")) {\r\n e.preventDefault()\r\n }\r\n })\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $element = $(\"<div>\");\r\n var options = this._getOptions();\r\n this._addToContainer($element);\r\n var instance = editor._createComponent($element, Button, extend({}, options, {\r\n elementAttr: {\r\n \"aria-label\": messageLocalization.format(BUTTON_MESSAGE)\r\n }\r\n }));\r\n this._legacyRender(editor.$element(), $element, options.visible);\r\n return {\r\n $element: $element,\r\n instance: instance\r\n }\r\n }\r\n _getOptions() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var visible = this._isVisible();\r\n var isReadOnly = editor.option(\"readOnly\");\r\n var options = {\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n activeStateEnabled: false,\r\n useInkRipple: false,\r\n disabled: isReadOnly,\r\n visible: visible\r\n };\r\n this._addTemplate(options);\r\n return options\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return super._isVisible() && editor.option(\"showDropDownButton\")\r\n }\r\n _legacyRender($editor, $element, isVisible) {\r\n $editor.toggleClass(DROP_DOWN_EDITOR_BUTTON_VISIBLE, isVisible);\r\n if ($element) {\r\n $element.removeClass(\"dx-button\").addClass(DROP_DOWN_EDITOR_BUTTON_CLASS)\r\n }\r\n }\r\n _isSameTemplate() {\r\n return this.editor.option(\"dropDownButtonTemplate\") === this.currentTemplate\r\n }\r\n _addTemplate(options) {\r\n if (!this._isSameTemplate()) {\r\n options.template = this.editor._getTemplateByOption(\"dropDownButtonTemplate\");\r\n this.currentTemplate = this.editor.option(\"dropDownButtonTemplate\")\r\n }\r\n }\r\n update() {\r\n var shouldUpdate = super.update();\r\n if (shouldUpdate) {\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var options = this._getOptions();\r\n null === instance || void 0 === instance ? void 0 : instance.option(options);\r\n this._legacyRender($editor, null === instance || void 0 === instance ? void 0 : instance.$element(), options.visible)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/utils.caret.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport devices from \"../../core/devices\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nvar {\r\n ios: ios,\r\n mac: mac\r\n} = devices.real();\r\nvar isFocusingOnCaretChange = ios || mac;\r\nvar getCaret = function(input) {\r\n var range;\r\n try {\r\n range = {\r\n start: input.selectionStart,\r\n end: input.selectionEnd\r\n }\r\n } catch (e) {\r\n range = {\r\n start: 0,\r\n end: 0\r\n }\r\n }\r\n return range\r\n};\r\nvar setCaret = function(input, position) {\r\n var body = domAdapter.getBody();\r\n if (!body.contains(input) && !body.contains(input.getRootNode().host)) {\r\n return\r\n }\r\n try {\r\n input.selectionStart = position.start;\r\n input.selectionEnd = position.end\r\n } catch (e) {}\r\n};\r\nvar caret = function(input, position) {\r\n var force = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n input = $(input).get(0);\r\n if (!isDefined(position)) {\r\n return getCaret(input)\r\n }\r\n if (!force && isFocusingOnCaretChange && domAdapter.getActiveElement(input) !== input) {\r\n return\r\n }\r\n setCaret(input, position)\r\n};\r\nexport default caret;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.rule.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar EMPTY_CHAR = \" \";\r\nvar BaseMaskRule = Class.inherit({\r\n ctor: function(config) {\r\n this._value = EMPTY_CHAR;\r\n extend(this, config)\r\n },\r\n next: function(rule) {\r\n if (!arguments.length) {\r\n return this._next\r\n }\r\n this._next = rule\r\n },\r\n text: noop,\r\n value: noop,\r\n rawValue: noop,\r\n handle: noop,\r\n _prepareHandlingArgs: function(args, config) {\r\n var _config$str, _config$start, _config$length;\r\n config = config || {};\r\n var handlingProperty = Object.prototype.hasOwnProperty.call(args, \"value\") ? \"value\" : \"text\";\r\n args[handlingProperty] = null !== (_config$str = config.str) && void 0 !== _config$str ? _config$str : args[handlingProperty];\r\n args.start = null !== (_config$start = config.start) && void 0 !== _config$start ? _config$start : args.start;\r\n args.length = null !== (_config$length = config.length) && void 0 !== _config$length ? _config$length : args.length;\r\n args.index = args.index + 1;\r\n return args\r\n },\r\n reset: noop,\r\n clear: noop,\r\n first: function(index) {\r\n index = index || 0;\r\n return this.next().first(index + 1)\r\n },\r\n isAccepted: function() {\r\n return false\r\n },\r\n adjustedCaret: function(caret, isForwardDirection, char) {\r\n return isForwardDirection ? this._adjustedForward(caret, 0, char) : this._adjustedBackward(caret, 0, char)\r\n },\r\n _adjustedForward: noop,\r\n _adjustedBackward: noop,\r\n isValid: noop\r\n});\r\nexport var EmptyMaskRule = BaseMaskRule.inherit({\r\n next: noop,\r\n handle: function() {\r\n return 0\r\n },\r\n text: function() {\r\n return \"\"\r\n },\r\n value: function() {\r\n return \"\"\r\n },\r\n first: function() {\r\n return 0\r\n },\r\n rawValue: function() {\r\n return \"\"\r\n },\r\n adjustedCaret: function() {\r\n return 0\r\n },\r\n isValid: function() {\r\n return true\r\n }\r\n});\r\nexport var MaskRule = BaseMaskRule.inherit({\r\n text: function() {\r\n return (this._value !== EMPTY_CHAR ? this._value : this.maskChar) + this.next().text()\r\n },\r\n value: function() {\r\n return this._value + this.next().value()\r\n },\r\n rawValue: function() {\r\n return this._value + this.next().rawValue()\r\n },\r\n handle: function(args) {\r\n var str = Object.prototype.hasOwnProperty.call(args, \"value\") ? args.value : args.text;\r\n if (!str || !str.length || !args.length) {\r\n return 0\r\n }\r\n if (args.start) {\r\n return this.next().handle(this._prepareHandlingArgs(args, {\r\n start: args.start - 1\r\n }))\r\n }\r\n var char = str[0];\r\n var rest = str.substring(1);\r\n this._tryAcceptChar(char, args);\r\n return this._accepted() ? this.next().handle(this._prepareHandlingArgs(args, {\r\n str: rest,\r\n length: args.length - 1\r\n })) + 1 : this.handle(this._prepareHandlingArgs(args, {\r\n str: rest,\r\n length: args.length - 1\r\n }))\r\n },\r\n clear: function(args) {\r\n this._tryAcceptChar(EMPTY_CHAR, args);\r\n this.next().clear(this._prepareHandlingArgs(args))\r\n },\r\n reset: function() {\r\n this._accepted(false);\r\n this.next().reset()\r\n },\r\n _tryAcceptChar: function(char, args) {\r\n this._accepted(false);\r\n if (!this._isAllowed(char, args)) {\r\n return\r\n }\r\n var acceptedChar = char === EMPTY_CHAR ? this.maskChar : char;\r\n args.fullText = args.fullText.substring(0, args.index) + acceptedChar + args.fullText.substring(args.index + 1);\r\n this._accepted(true);\r\n this._value = char\r\n },\r\n _accepted: function(value) {\r\n if (!arguments.length) {\r\n return !!this._isAccepted\r\n }\r\n this._isAccepted = !!value\r\n },\r\n first: function(index) {\r\n return this._value === EMPTY_CHAR ? index || 0 : this.callBase(index)\r\n },\r\n _isAllowed: function(char, args) {\r\n if (char === EMPTY_CHAR) {\r\n return true\r\n }\r\n return this._isValid(char, args)\r\n },\r\n _isValid: function(char, args) {\r\n var allowedChars = this.allowedChars;\r\n if (allowedChars instanceof RegExp) {\r\n return allowedChars.test(char)\r\n }\r\n if (isFunction(allowedChars)) {\r\n return allowedChars(char, args.index, args.fullText)\r\n }\r\n if (Array.isArray(allowedChars)) {\r\n return allowedChars.includes(char)\r\n }\r\n return allowedChars === char\r\n },\r\n isAccepted: function(caret) {\r\n return 0 === caret ? this._accepted() : this.next().isAccepted(caret - 1)\r\n },\r\n _adjustedForward: function(caret, index, char) {\r\n if (index >= caret) {\r\n return index\r\n }\r\n return this.next()._adjustedForward(caret, index + 1, char) || index + 1\r\n },\r\n _adjustedBackward: function(caret, index) {\r\n if (index >= caret - 1) {\r\n return caret\r\n }\r\n return this.next()._adjustedBackward(caret, index + 1) || index + 1\r\n },\r\n isValid: function(args) {\r\n return this._isValid(this._value, args) && this.next().isValid(this._prepareHandlingArgs(args))\r\n }\r\n});\r\nexport var StubMaskRule = MaskRule.inherit({\r\n value: function() {\r\n return this.next().value()\r\n },\r\n handle: function(args) {\r\n var hasValueProperty = Object.prototype.hasOwnProperty.call(args, \"value\");\r\n var str = hasValueProperty ? args.value : args.text;\r\n if (!str.length || !args.length) {\r\n return 0\r\n }\r\n if (args.start || hasValueProperty) {\r\n return this.next().handle(this._prepareHandlingArgs(args, {\r\n start: args.start && args.start - 1\r\n }))\r\n }\r\n var char = str[0];\r\n var rest = str.substring(1);\r\n this._tryAcceptChar(char);\r\n var nextArgs = this._isAllowed(char) ? this._prepareHandlingArgs(args, {\r\n str: rest,\r\n length: args.length - 1\r\n }) : args;\r\n return this.next().handle(nextArgs) + 1\r\n },\r\n clear: function(args) {\r\n this._accepted(false);\r\n this.next().clear(this._prepareHandlingArgs(args))\r\n },\r\n _tryAcceptChar: function(char) {\r\n this._accepted(this._isValid(char))\r\n },\r\n _isValid: function(char) {\r\n return char === this.maskChar\r\n },\r\n first: function(index) {\r\n index = index || 0;\r\n return this.next().first(index + 1)\r\n },\r\n _adjustedForward: function(caret, index, char) {\r\n if (index >= caret && char === this.maskChar) {\r\n return index\r\n }\r\n if (caret === index + 1 && this._accepted()) {\r\n return caret\r\n }\r\n return this.next()._adjustedForward(caret, index + 1, char)\r\n },\r\n _adjustedBackward: function(caret, index) {\r\n if (index >= caret - 1) {\r\n return 0\r\n }\r\n return this.next()._adjustedBackward(caret, index + 1)\r\n },\r\n isValid: function(args) {\r\n return this.next().isValid(this._prepareHandlingArgs(args))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.clear.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport TextEditorButton from \"./texteditor_button_collection/button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointer from \"../../events/pointer\";\r\nimport {\r\n name as click\r\n} from \"../../events/click\";\r\nvar pointerDown = pointer.down;\r\nvar STATE_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar TEXTEDITOR_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar TEXTEDITOR_CLEAR_ICON_CLASS = \"dx-icon-clear\";\r\nvar TEXTEDITOR_ICON_CLASS = \"dx-icon\";\r\nvar TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS = \"dx-show-clear-button\";\r\nexport default class ClearButton extends TextEditorButton {\r\n _create() {\r\n var $element = $(\"<span>\").addClass(TEXTEDITOR_CLEAR_BUTTON_CLASS).append($(\"<span>\").addClass(TEXTEDITOR_ICON_CLASS).addClass(TEXTEDITOR_CLEAR_ICON_CLASS));\r\n this._addToContainer($element);\r\n this.update(true);\r\n return {\r\n instance: $element,\r\n $element: $element\r\n }\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return editor._isClearButtonVisible()\r\n }\r\n _attachEvents(instance, $button) {\r\n var {\r\n editor: editor\r\n } = this;\r\n var editorName = editor.NAME;\r\n eventsEngine.on($button, addNamespace(pointerDown, editorName), e => {\r\n e.preventDefault();\r\n if (\"mouse\" !== e.pointerType) {\r\n editor._clearValueHandler(e)\r\n }\r\n });\r\n eventsEngine.on($button, addNamespace(click, editorName), e => editor._clearValueHandler(e))\r\n }\r\n _legacyRender($editor, isVisible) {\r\n $editor.toggleClass(TEXTEDITOR_SHOW_CLEAR_BUTTON_CLASS, isVisible)\r\n }\r\n update() {\r\n var rendered = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n !rendered && super.update();\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var isVisible = this._isVisible();\r\n instance && instance.toggleClass(STATE_INVISIBLE_CLASS, !isVisible);\r\n this._legacyRender($editor, isVisible)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/texteditor_button_collection/custom.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport TextEditorButton from \"./button\";\r\nimport Button from \"../../button\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport {\r\n start,\r\n end\r\n} from \"../../../events/hover\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../../events/click\";\r\nvar CUSTOM_BUTTON_HOVERED_CLASS = \"dx-custom-button-hovered\";\r\nexport default class CustomButton extends TextEditorButton {\r\n _attachEvents(instance, $element) {\r\n var {\r\n editor: editor\r\n } = this;\r\n eventsEngine.on($element, start, () => {\r\n editor.$element().addClass(CUSTOM_BUTTON_HOVERED_CLASS)\r\n });\r\n eventsEngine.on($element, end, () => {\r\n editor.$element().removeClass(CUSTOM_BUTTON_HOVERED_CLASS)\r\n });\r\n eventsEngine.on($element, clickEventName, e => {\r\n e.stopPropagation()\r\n })\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $element = $(\"<div>\");\r\n this._addToContainer($element);\r\n var instance = editor._createComponent($element, Button, extend({}, this.options, {\r\n ignoreParentReadOnly: true,\r\n disabled: this._isDisabled(),\r\n integrationOptions: this._prepareIntegrationOptions(editor)\r\n }));\r\n return {\r\n $element: $element,\r\n instance: instance\r\n }\r\n }\r\n _prepareIntegrationOptions(editor) {\r\n return extend({}, editor.option(\"integrationOptions\"), {\r\n skipTemplates: [\"content\"]\r\n })\r\n }\r\n update() {\r\n var isUpdated = super.update();\r\n if (this.instance) {\r\n this.instance.option(\"disabled\", this._isDisabled())\r\n }\r\n return isUpdated\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return editor.option(\"visible\")\r\n }\r\n _isDisabled() {\r\n var isDefinedByUser = void 0 !== this.options.disabled;\r\n if (isDefinedByUser) {\r\n return this.instance ? this.instance.option(\"disabled\") : this.options.disabled\r\n } else {\r\n return this.editor.option(\"readOnly\")\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/texteditor_button_collection/index.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport CustomButton from \"./custom\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport errors from \"../../widget/ui.errors\";\r\nvar TEXTEDITOR_BUTTONS_CONTAINER_CLASS = \"dx-texteditor-buttons-container\";\r\n\r\nfunction checkButtonInfo(buttonInfo) {\r\n (() => {\r\n if (!buttonInfo || \"object\" !== typeof buttonInfo || Array.isArray(buttonInfo)) {\r\n throw errors.Error(\"E1053\")\r\n }\r\n })();\r\n (() => {\r\n if (!(\"name\" in buttonInfo)) {\r\n throw errors.Error(\"E1054\")\r\n }\r\n })();\r\n (() => {\r\n var {\r\n name: name\r\n } = buttonInfo;\r\n if (\"string\" !== typeof name) {\r\n throw errors.Error(\"E1055\")\r\n }\r\n })();\r\n (() => {\r\n var {\r\n location: location\r\n } = buttonInfo;\r\n if (\"location\" in buttonInfo && \"after\" !== location && \"before\" !== location) {\r\n buttonInfo.location = \"after\"\r\n }\r\n })()\r\n}\r\n\r\nfunction checkNamesUniqueness(existingNames, newName) {\r\n if (-1 !== existingNames.indexOf(newName)) {\r\n throw errors.Error(\"E1055\", newName)\r\n }\r\n existingNames.push(newName)\r\n}\r\n\r\nfunction isPredefinedButtonName(name, predefinedButtonsInfo) {\r\n return !!predefinedButtonsInfo.find(info => info.name === name)\r\n}\r\nexport default class TextEditorButtonCollection {\r\n constructor(editor, defaultButtonsInfo) {\r\n this.buttons = [];\r\n this.defaultButtonsInfo = defaultButtonsInfo;\r\n this.editor = editor\r\n }\r\n _compileButtonInfo(buttons) {\r\n var names = [];\r\n return buttons.map(button => {\r\n var isStringButton = \"string\" === typeof button;\r\n if (!isStringButton) {\r\n checkButtonInfo(button)\r\n }\r\n var isDefaultButton = isStringButton || isPredefinedButtonName(button.name, this.defaultButtonsInfo);\r\n if (isDefaultButton) {\r\n var defaultButtonInfo = this.defaultButtonsInfo.find(_ref => {\r\n var {\r\n name: name\r\n } = _ref;\r\n return name === button || name === button.name\r\n });\r\n if (!defaultButtonInfo) {\r\n throw errors.Error(\"E1056\", this.editor.NAME, button)\r\n }\r\n checkNamesUniqueness(names, button);\r\n return defaultButtonInfo\r\n } else {\r\n var {\r\n name: name\r\n } = button;\r\n checkNamesUniqueness(names, name);\r\n return extend(button, {\r\n Ctor: CustomButton\r\n })\r\n }\r\n })\r\n }\r\n _createButton(buttonsInfo) {\r\n var {\r\n Ctor: Ctor,\r\n options: options,\r\n name: name\r\n } = buttonsInfo;\r\n var button = new Ctor(name, this.editor, options);\r\n this.buttons.push(button);\r\n return button\r\n }\r\n _renderButtons(buttons, $container, targetLocation) {\r\n var $buttonsContainer = null;\r\n var buttonsInfo = buttons ? this._compileButtonInfo(buttons) : this.defaultButtonsInfo;\r\n buttonsInfo.forEach(buttonsInfo => {\r\n var {\r\n location: location = \"after\"\r\n } = buttonsInfo;\r\n if (location === targetLocation) {\r\n this._createButton(buttonsInfo).render((() => {\r\n $buttonsContainer = $buttonsContainer || $(\"<div>\").addClass(TEXTEDITOR_BUTTONS_CONTAINER_CLASS);\r\n \"before\" === targetLocation ? $container.prepend($buttonsContainer) : $container.append($buttonsContainer);\r\n return $buttonsContainer\r\n })())\r\n }\r\n });\r\n return $buttonsContainer\r\n }\r\n clean() {\r\n this.buttons.forEach(button => button.dispose());\r\n this.buttons = []\r\n }\r\n getButton(buttonName) {\r\n var button = this.buttons.find(_ref2 => {\r\n var {\r\n name: name\r\n } = _ref2;\r\n return name === buttonName\r\n });\r\n return button && button.instance\r\n }\r\n renderAfterButtons(buttons, $container) {\r\n return this._renderButtons(buttons, $container, \"after\")\r\n }\r\n renderBeforeButtons(buttons, $container) {\r\n return this._renderButtons(buttons, $container, \"before\")\r\n }\r\n updateButtons(names) {\r\n this.buttons.forEach(button => {\r\n if (!names || -1 !== names.indexOf(button.name)) {\r\n button.update()\r\n }\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/load_indicator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n getNavigator\r\n} from \"../core/utils/window\";\r\nvar navigator = getNavigator();\r\nimport {\r\n animation\r\n} from \"../core/utils/support\";\r\nimport {\r\n current,\r\n isMaterial,\r\n isGeneric\r\n} from \"./themes\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport devices from \"../core/devices\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Widget from \"./widget/ui.widget\";\r\nvar LOADINDICATOR_CLASS = \"dx-loadindicator\";\r\nvar LOADINDICATOR_WRAPPER_CLASS = \"dx-loadindicator-wrapper\";\r\nvar LOADINDICATOR_CONTENT_CLASS = \"dx-loadindicator-content\";\r\nvar LOADINDICATOR_ICON_CLASS = \"dx-loadindicator-icon\";\r\nvar LOADINDICATOR_SEGMENT_CLASS = \"dx-loadindicator-segment\";\r\nvar LOADINDICATOR_SEGMENT_INNER_CLASS = \"dx-loadindicator-segment-inner\";\r\nvar LOADINDICATOR_IMAGE_CLASS = \"dx-loadindicator-image\";\r\nvar LoadIndicator = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n indicatorSrc: \"\",\r\n activeStateEnabled: false,\r\n hoverStateEnabled: false,\r\n _animatingSegmentCount: 1,\r\n _animatingSegmentInner: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = current();\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = devices.real();\r\n var obsoleteAndroid = \"android\" === realDevice.platform && !/chrome/i.test(navigator.userAgent);\r\n return obsoleteAndroid\r\n },\r\n options: {\r\n viaImage: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n _animatingSegmentCount: 2,\r\n _animatingSegmentInner: true\r\n }\r\n }, {\r\n device: function() {\r\n return isGeneric(themeName)\r\n },\r\n options: {\r\n _animatingSegmentCount: 7\r\n }\r\n }])\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADINDICATOR_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderWrapper();\r\n this._renderIndicatorContent();\r\n this._renderMarkup()\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = $(\"<div>\").addClass(LOADINDICATOR_WRAPPER_CLASS);\r\n this.$element().append(this._$wrapper)\r\n },\r\n _renderIndicatorContent: function() {\r\n this._$content = $(\"<div>\").addClass(LOADINDICATOR_CONTENT_CLASS);\r\n this._$wrapper.append(this._$content)\r\n },\r\n _renderMarkup: function() {\r\n if (animation() && !this.option(\"viaImage\") && !this.option(\"indicatorSrc\")) {\r\n this._renderMarkupForAnimation()\r\n } else {\r\n this._renderMarkupForImage()\r\n }\r\n },\r\n _renderMarkupForAnimation: function() {\r\n var animatingSegmentInner = this.option(\"_animatingSegmentInner\");\r\n this._$indicator = $(\"<div>\").addClass(LOADINDICATOR_ICON_CLASS);\r\n this._$content.append(this._$indicator);\r\n for (var i = this.option(\"_animatingSegmentCount\"); i >= 0; --i) {\r\n var $segment = $(\"<div>\").addClass(LOADINDICATOR_SEGMENT_CLASS).addClass(LOADINDICATOR_SEGMENT_CLASS + i);\r\n if (animatingSegmentInner) {\r\n $segment.append($(\"<div>\").addClass(LOADINDICATOR_SEGMENT_INNER_CLASS))\r\n }\r\n this._$indicator.append($segment)\r\n }\r\n },\r\n _renderMarkupForImage: function() {\r\n var indicatorSrc = this.option(\"indicatorSrc\");\r\n this._$wrapper.addClass(LOADINDICATOR_IMAGE_CLASS);\r\n if (indicatorSrc) {\r\n this._$wrapper.css(\"backgroundImage\", \"url(\" + indicatorSrc + \")\")\r\n }\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this._updateContentSizeForAnimation()\r\n },\r\n _updateContentSizeForAnimation: function() {\r\n if (!this._$indicator) {\r\n return\r\n }\r\n var width = this.option(\"width\");\r\n var height = this.option(\"height\");\r\n if (width || height) {\r\n width = getWidth(this.$element());\r\n height = getHeight(this.$element());\r\n var minDimension = Math.min(height, width);\r\n this._$wrapper.css({\r\n height: minDimension,\r\n width: minDimension,\r\n fontSize: minDimension\r\n })\r\n }\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._removeMarkupForAnimation();\r\n this._removeMarkupForImage()\r\n },\r\n _removeMarkupForAnimation: function() {\r\n if (!this._$indicator) {\r\n return\r\n }\r\n this._$indicator.remove();\r\n delete this._$indicator\r\n },\r\n _removeMarkupForImage: function() {\r\n this._$wrapper.css(\"backgroundImage\", \"none\")\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"_animatingSegmentCount\":\r\n case \"_animatingSegmentInner\":\r\n case \"indicatorSrc\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxLoadIndicator\", LoadIndicator);\r\nexport default LoadIndicator;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.label.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Guid from \"../../core/guid\";\r\nvar TEXTEDITOR_LABEL_CLASS = \"dx-texteditor-label\";\r\nvar TEXTEDITOR_WITH_LABEL_CLASS = \"dx-texteditor-with-label\";\r\nvar TEXTEDITOR_WITH_FLOATING_LABEL_CLASS = \"dx-texteditor-with-floating-label\";\r\nvar TEXTEDITOR_WITH_BEFORE_BUTTONS_CLASS = \"dx-texteditor-with-before-buttons\";\r\nvar LABEL_BEFORE_CLASS = \"dx-label-before\";\r\nvar LABEL_CLASS = \"dx-label\";\r\nvar LABEL_AFTER_CLASS = \"dx-label-after\";\r\nclass TextEditorLabel {\r\n constructor(_ref) {\r\n var {\r\n $editor: $editor,\r\n text: text,\r\n mode: mode,\r\n mark: mark,\r\n containsButtonsBefore: containsButtonsBefore,\r\n containerWidth: containerWidth,\r\n beforeWidth: beforeWidth\r\n } = _ref;\r\n this._props = {\r\n $editor: $editor,\r\n text: text,\r\n mode: mode,\r\n mark: mark,\r\n containsButtonsBefore: containsButtonsBefore,\r\n containerWidth: containerWidth,\r\n beforeWidth: beforeWidth\r\n };\r\n this._id = \"\".concat(TEXTEDITOR_LABEL_CLASS, \"-\").concat(new Guid);\r\n this._render();\r\n this._toggleMarkupVisibility()\r\n }\r\n _isVisible() {\r\n return !!this._props.text && \"hidden\" !== this._props.mode\r\n }\r\n _render() {\r\n this._$before = $(\"<div>\").addClass(LABEL_BEFORE_CLASS);\r\n this._$labelSpan = $(\"<span>\");\r\n this._$label = $(\"<div>\").addClass(LABEL_CLASS).append(this._$labelSpan);\r\n this._$after = $(\"<div>\").addClass(LABEL_AFTER_CLASS);\r\n this._$root = $(\"<div>\").addClass(TEXTEDITOR_LABEL_CLASS).attr(\"id\", this._id).append(this._$before).append(this._$label).append(this._$after);\r\n this._updateMark();\r\n this._updateText();\r\n this._updateBeforeWidth();\r\n this._updateMaxWidth()\r\n }\r\n _toggleMarkupVisibility() {\r\n var visible = this._isVisible();\r\n this._updateEditorBeforeButtonsClass(visible);\r\n this._updateEditorLabelClass(visible);\r\n visible ? this._$root.appendTo(this._props.$editor) : this._$root.detach()\r\n }\r\n _updateEditorLabelClass(visible) {\r\n this._props.$editor.removeClass(TEXTEDITOR_WITH_FLOATING_LABEL_CLASS).removeClass(TEXTEDITOR_WITH_LABEL_CLASS);\r\n if (visible) {\r\n var labelClass = \"floating\" === this._props.mode ? TEXTEDITOR_WITH_FLOATING_LABEL_CLASS : TEXTEDITOR_WITH_LABEL_CLASS;\r\n this._props.$editor.addClass(labelClass)\r\n }\r\n }\r\n _updateEditorBeforeButtonsClass() {\r\n var visible = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._isVisible();\r\n this._props.$editor.removeClass(TEXTEDITOR_WITH_BEFORE_BUTTONS_CLASS);\r\n if (visible) {\r\n var beforeButtonsClass = this._props.containsButtonsBefore ? TEXTEDITOR_WITH_BEFORE_BUTTONS_CLASS : \"\";\r\n this._props.$editor.addClass(beforeButtonsClass)\r\n }\r\n }\r\n _updateMark() {\r\n this._$labelSpan.attr(\"data-mark\", this._props.mark)\r\n }\r\n _updateText() {\r\n this._$labelSpan.text(this._props.text)\r\n }\r\n _updateBeforeWidth() {\r\n this._$before.css({\r\n width: this._props.beforeWidth\r\n })\r\n }\r\n _updateMaxWidth() {\r\n this._$label.css({\r\n maxWidth: this._props.containerWidth\r\n })\r\n }\r\n $element() {\r\n return this._$root\r\n }\r\n isVisible() {\r\n return this._isVisible()\r\n }\r\n getId() {\r\n if (this._isVisible()) {\r\n return this._id\r\n }\r\n }\r\n updateMode(mode) {\r\n this._props.mode = mode;\r\n this._toggleMarkupVisibility()\r\n }\r\n updateText(text) {\r\n this._props.text = text;\r\n this._updateText();\r\n this._toggleMarkupVisibility()\r\n }\r\n updateMark(mark) {\r\n this._props.mark = mark;\r\n this._updateMark()\r\n }\r\n updateContainsButtonsBefore(containsButtonsBefore) {\r\n this._props.containsButtonsBefore = containsButtonsBefore;\r\n this._updateEditorBeforeButtonsClass()\r\n }\r\n updateBeforeWidth(beforeWidth) {\r\n this._props.beforeWidth = beforeWidth;\r\n this._updateBeforeWidth()\r\n }\r\n updateMaxWidth(containerWidth) {\r\n this._props.containerWidth = containerWidth;\r\n this._updateMaxWidth()\r\n }\r\n}\r\nexport {\r\n TextEditorLabel\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n current,\r\n isMaterial\r\n} from \"../themes\";\r\nimport devices from \"../../core/devices\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n addNamespace,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport ClearButton from \"./ui.text_editor.clear\";\r\nimport TextEditorButtonCollection from \"./texteditor_button_collection/index\";\r\nimport config from \"../../core/config\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n TextEditorLabel\r\n} from \"./ui.text_editor.label\";\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport resizeObserverSingleton from \"../../core/resize_observer\";\r\nimport Guid from \"../../core/guid\";\r\nvar TEXTEDITOR_CLASS = \"dx-texteditor\";\r\nvar TEXTEDITOR_INPUT_CONTAINER_CLASS = \"dx-texteditor-input-container\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar TEXTEDITOR_INPUT_SELECTOR = \".\" + TEXTEDITOR_INPUT_CLASS;\r\nvar TEXTEDITOR_CONTAINER_CLASS = \"dx-texteditor-container\";\r\nvar TEXTEDITOR_BUTTONS_CONTAINER_CLASS = \"dx-texteditor-buttons-container\";\r\nvar TEXTEDITOR_PLACEHOLDER_CLASS = \"dx-placeholder\";\r\nvar TEXTEDITOR_EMPTY_INPUT_CLASS = \"dx-texteditor-empty\";\r\nvar STATE_INVISIBLE_CLASS = \"dx-state-invisible\";\r\nvar TEXTEDITOR_PENDING_INDICATOR_CLASS = \"dx-pending-indicator\";\r\nvar TEXTEDITOR_VALIDATION_PENDING_CLASS = \"dx-validation-pending\";\r\nvar TEXTEDITOR_VALID_CLASS = \"dx-valid\";\r\nvar EVENTS_LIST = [\"KeyDown\", \"KeyPress\", \"KeyUp\", \"Change\", \"Cut\", \"Copy\", \"Paste\", \"Input\"];\r\nvar CONTROL_KEYS = [\"tab\", \"enter\", \"shift\", \"control\", \"alt\", \"escape\", \"pageUp\", \"pageDown\", \"end\", \"home\", \"leftArrow\", \"upArrow\", \"rightArrow\", \"downArrow\"];\r\nvar TextEditorLabelCreator = TextEditorLabel;\r\n\r\nfunction checkButtonsOptionType(buttons) {\r\n if (isDefined(buttons) && !Array.isArray(buttons)) {\r\n throw errors.Error(\"E1053\")\r\n }\r\n}\r\nvar TextEditorBase = Editor.inherit({\r\n ctor: function(_, options) {\r\n if (options) {\r\n checkButtonsOptionType(options.buttons)\r\n }\r\n this._buttonCollection = new TextEditorButtonCollection(this, this._getDefaultButtons());\r\n this._$beforeButtonsContainer = null;\r\n this._$afterButtonsContainer = null;\r\n this._labelContainerElement = null;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n buttons: void 0,\r\n value: \"\",\r\n spellcheck: false,\r\n showClearButton: false,\r\n valueChangeEvent: \"change\",\r\n placeholder: \"\",\r\n inputAttr: {},\r\n onFocusIn: null,\r\n onFocusOut: null,\r\n onKeyDown: null,\r\n onKeyUp: null,\r\n onChange: null,\r\n onInput: null,\r\n onCut: null,\r\n onCopy: null,\r\n onPaste: null,\r\n onEnterKey: null,\r\n mode: \"text\",\r\n hoverStateEnabled: true,\r\n focusStateEnabled: true,\r\n text: void 0,\r\n displayValueFormatter: function(value) {\r\n return isDefined(value) && false !== value ? value : \"\"\r\n },\r\n stylingMode: config().editorStylingMode || \"outlined\",\r\n showValidationMark: true,\r\n label: \"\",\r\n labelMode: \"static\",\r\n labelMark: \"\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n var themeName = current();\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n stylingMode: config().editorStylingMode || \"filled\",\r\n labelMode: \"floating\"\r\n }\r\n }])\r\n },\r\n _getDefaultButtons: function() {\r\n return [{\r\n name: \"clear\",\r\n Ctor: ClearButton\r\n }]\r\n },\r\n _isClearButtonVisible: function() {\r\n return this.option(\"showClearButton\") && !this.option(\"readOnly\")\r\n },\r\n _input: function() {\r\n return this.$element().find(TEXTEDITOR_INPUT_SELECTOR).first()\r\n },\r\n _isFocused: function() {\r\n return focused(this._input()) || this.callBase()\r\n },\r\n _inputWrapper: function() {\r\n return this.$element()\r\n },\r\n _buttonsContainer: function() {\r\n return this._inputWrapper().find(\".\" + TEXTEDITOR_BUTTONS_CONTAINER_CLASS).eq(0)\r\n },\r\n _isControlKey: function(key) {\r\n return -1 !== CONTROL_KEYS.indexOf(key)\r\n },\r\n _renderStylingMode: function() {\r\n this.callBase();\r\n this._updateButtonsStyling(this.option(\"stylingMode\"))\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TEXTEDITOR_CLASS);\r\n this._renderInput();\r\n this._renderStylingMode();\r\n this._renderInputType();\r\n this._renderPlaceholder();\r\n this._renderProps();\r\n this.callBase();\r\n this._renderValue();\r\n this._renderLabel()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._refreshValueChangeEvent();\r\n this._renderEvents();\r\n this._renderEnterKeyAction();\r\n this._renderEmptinessEvent()\r\n },\r\n _renderInput: function() {\r\n this._$buttonsContainer = this._$textEditorContainer = $(\"<div>\").addClass(TEXTEDITOR_CONTAINER_CLASS).appendTo(this.$element());\r\n this._$textEditorInputContainer = $(\"<div>\").addClass(TEXTEDITOR_INPUT_CONTAINER_CLASS).appendTo(this._$textEditorContainer);\r\n this._$textEditorInputContainer.append(this._createInput());\r\n this._renderButtonContainers()\r\n },\r\n _getInputContainer() {\r\n return this._$textEditorInputContainer\r\n },\r\n _renderPendingIndicator: function() {\r\n this.$element().addClass(TEXTEDITOR_VALIDATION_PENDING_CLASS);\r\n var $inputContainer = this._getInputContainer();\r\n var $indicatorElement = $(\"<div>\").addClass(TEXTEDITOR_PENDING_INDICATOR_CLASS).appendTo($inputContainer);\r\n this._pendingIndicator = this._createComponent($indicatorElement, LoadIndicator)\r\n },\r\n _disposePendingIndicator: function() {\r\n if (!this._pendingIndicator) {\r\n return\r\n }\r\n this._pendingIndicator.dispose();\r\n this._pendingIndicator.$element().remove();\r\n this._pendingIndicator = null;\r\n this.$element().removeClass(TEXTEDITOR_VALIDATION_PENDING_CLASS)\r\n },\r\n _renderValidationState: function() {\r\n this.callBase();\r\n var isPending = \"pending\" === this.option(\"validationStatus\");\r\n var $element = this.$element();\r\n if (isPending) {\r\n !this._pendingIndicator && this._renderPendingIndicator();\r\n this._showValidMark = false\r\n } else {\r\n if (\"invalid\" === this.option(\"validationStatus\")) {\r\n this._showValidMark = false\r\n }\r\n if (!this._showValidMark && true === this.option(\"showValidationMark\")) {\r\n this._showValidMark = \"valid\" === this.option(\"validationStatus\") && !!this._pendingIndicator\r\n }\r\n this._disposePendingIndicator()\r\n }\r\n $element.toggleClass(TEXTEDITOR_VALID_CLASS, !!this._showValidMark)\r\n },\r\n _renderButtonContainers: function() {\r\n var buttons = this.option(\"buttons\");\r\n this._$beforeButtonsContainer = this._buttonCollection.renderBeforeButtons(buttons, this._$buttonsContainer);\r\n this._$afterButtonsContainer = this._buttonCollection.renderAfterButtons(buttons, this._$buttonsContainer)\r\n },\r\n _cleanButtonContainers: function() {\r\n var _this$_$beforeButtons, _this$_$afterButtonsC;\r\n null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons.remove();\r\n null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC.remove();\r\n this._buttonCollection.clean()\r\n },\r\n _clean() {\r\n this._buttonCollection.clean();\r\n this._disposePendingIndicator();\r\n this._unobserveLabelContainerResize();\r\n this._$beforeButtonsContainer = null;\r\n this._$afterButtonsContainer = null;\r\n this._$textEditorContainer = null;\r\n this._$buttonsContainer = null;\r\n this.callBase()\r\n },\r\n _createInput: function() {\r\n var $input = $(\"<input>\");\r\n this._applyInputAttributes($input, this.option(\"inputAttr\"));\r\n return $input\r\n },\r\n _setSubmitElementName: function(name) {\r\n var inputAttrName = this.option(\"inputAttr.name\");\r\n return this.callBase(name || inputAttrName || \"\")\r\n },\r\n _applyInputAttributes: function($input, customAttributes) {\r\n var inputAttributes = extend(this._getDefaultAttributes(), customAttributes);\r\n $input.attr(inputAttributes).addClass(TEXTEDITOR_INPUT_CLASS).css(\"minHeight\", this.option(\"height\") ? \"0\" : \"\")\r\n },\r\n _getDefaultAttributes: function() {\r\n var defaultAttributes = {\r\n autocomplete: \"off\"\r\n };\r\n var {\r\n ios: ios,\r\n mac: mac\r\n } = devices.real();\r\n if (ios || mac) {\r\n defaultAttributes.placeholder = \" \"\r\n }\r\n return defaultAttributes\r\n },\r\n _updateButtons: function(names) {\r\n this._buttonCollection.updateButtons(names)\r\n },\r\n _updateButtonsStyling: function(editorStylingMode) {\r\n each(this.option(\"buttons\"), (_, _ref) => {\r\n var {\r\n options: options,\r\n name: buttonName\r\n } = _ref;\r\n if (options && !options.stylingMode && this.option(\"visible\")) {\r\n var buttonInstance = this.getButton(buttonName);\r\n buttonInstance.option && buttonInstance.option(\"stylingMode\", \"underlined\" === editorStylingMode ? \"text\" : \"contained\")\r\n }\r\n })\r\n },\r\n _renderValue: function() {\r\n var renderInputPromise = this._renderInputValue();\r\n return renderInputPromise.promise()\r\n },\r\n _renderInputValue: function(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this.option(\"value\");\r\n var text = this.option(\"text\");\r\n var displayValue = this.option(\"displayValue\");\r\n var displayValueFormatter = this.option(\"displayValueFormatter\");\r\n if (void 0 !== displayValue && null !== value) {\r\n text = displayValueFormatter(displayValue)\r\n } else if (!isDefined(text)) {\r\n text = displayValueFormatter(value)\r\n }\r\n this.option(\"text\", text);\r\n if (this._input().val() !== (isDefined(text) ? text : \"\")) {\r\n this._renderDisplayText(text)\r\n } else {\r\n this._toggleEmptinessEventHandler()\r\n }\r\n return (new Deferred).resolve()\r\n },\r\n _renderDisplayText: function(text) {\r\n this._input().val(text);\r\n this._toggleEmptinessEventHandler()\r\n },\r\n _isValueValid: function() {\r\n if (this._input().length) {\r\n var validity = this._input().get(0).validity;\r\n if (validity) {\r\n return validity.valid\r\n }\r\n }\r\n return true\r\n },\r\n _toggleEmptiness: function(isEmpty) {\r\n this.$element().toggleClass(TEXTEDITOR_EMPTY_INPUT_CLASS, isEmpty);\r\n this._togglePlaceholder(isEmpty)\r\n },\r\n _togglePlaceholder: function(isEmpty) {\r\n this.$element().find(\".\".concat(TEXTEDITOR_PLACEHOLDER_CLASS)).eq(0).toggleClass(STATE_INVISIBLE_CLASS, !isEmpty)\r\n },\r\n _renderProps: function() {\r\n this._toggleReadOnlyState();\r\n this._toggleSpellcheckState();\r\n this._toggleTabIndex()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase.apply(this, arguments);\r\n var $input = this._input();\r\n $input.prop(\"disabled\", value)\r\n },\r\n _toggleTabIndex: function() {\r\n var $input = this._input();\r\n var disabled = this.option(\"disabled\");\r\n var focusStateEnabled = this.option(\"focusStateEnabled\");\r\n if (disabled || !focusStateEnabled) {\r\n $input.attr(\"tabIndex\", -1)\r\n } else {\r\n $input.removeAttr(\"tabIndex\")\r\n }\r\n },\r\n _toggleReadOnlyState: function() {\r\n this._input().prop(\"readOnly\", this._readOnlyPropValue());\r\n this.callBase()\r\n },\r\n _readOnlyPropValue: function() {\r\n return this.option(\"readOnly\")\r\n },\r\n _toggleSpellcheckState: function() {\r\n this._input().prop(\"spellcheck\", this.option(\"spellcheck\"))\r\n },\r\n _unobserveLabelContainerResize: function() {\r\n if (this._labelContainerElement) {\r\n resizeObserverSingleton.unobserve(this._labelContainerElement);\r\n this._labelContainerElement = null\r\n }\r\n },\r\n _getLabelContainer: function() {\r\n return this._input()\r\n },\r\n _getLabelContainerWidth: function() {\r\n return getWidth(this._getLabelContainer())\r\n },\r\n _getLabelBeforeWidth: function() {\r\n var buttonsBeforeWidth = this._$beforeButtonsContainer && getWidth(this._$beforeButtonsContainer);\r\n return null !== buttonsBeforeWidth && void 0 !== buttonsBeforeWidth ? buttonsBeforeWidth : 0\r\n },\r\n _updateLabelWidth: function() {\r\n this._label.updateBeforeWidth(this._getLabelBeforeWidth());\r\n this._label.updateMaxWidth(this._getLabelContainerWidth())\r\n },\r\n _getFieldElement() {\r\n return this._getLabelContainer()\r\n },\r\n _setFieldAria(force) {\r\n var _this$_$placeholder;\r\n var labelId = this._label.getId();\r\n var placeholderId = null === (_this$_$placeholder = this._$placeholder) || void 0 === _this$_$placeholder ? void 0 : _this$_$placeholder.attr(\"id\");\r\n var value = [labelId, placeholderId].filter(Boolean).join(\" \");\r\n if (value || force) {\r\n var aria = {\r\n labelledby: value || void 0\r\n };\r\n this.setAria(aria, this._getFieldElement())\r\n }\r\n },\r\n _renderLabel: function() {\r\n this._unobserveLabelContainerResize();\r\n this._labelContainerElement = $(this._getLabelContainer()).get(0);\r\n var {\r\n label: label,\r\n labelMode: labelMode,\r\n labelMark: labelMark\r\n } = this.option();\r\n var labelConfig = {\r\n $editor: this.$element(),\r\n text: label,\r\n mark: labelMark,\r\n mode: labelMode,\r\n containsButtonsBefore: !!this._$beforeButtonsContainer,\r\n containerWidth: this._getLabelContainerWidth(),\r\n beforeWidth: this._getLabelBeforeWidth()\r\n };\r\n this._label = new TextEditorLabelCreator(labelConfig);\r\n this._setFieldAria();\r\n if (this._labelContainerElement) {\r\n resizeObserverSingleton.observe(this._labelContainerElement, this._updateLabelWidth.bind(this))\r\n }\r\n },\r\n _renderPlaceholder: function() {\r\n this._renderPlaceholderMarkup();\r\n this._attachPlaceholderEvents()\r\n },\r\n _renderPlaceholderMarkup: function() {\r\n if (this._$placeholder) {\r\n this._$placeholder.remove();\r\n this._$placeholder = null\r\n }\r\n var $input = this._input();\r\n var placeholder = this.option(\"placeholder\");\r\n var placeholderAttributes = {\r\n id: placeholder ? \"dx-\".concat(new Guid) : void 0,\r\n \"data-dx_placeholder\": placeholder\r\n };\r\n var $placeholder = this._$placeholder = $(\"<div>\").attr(placeholderAttributes);\r\n $placeholder.insertAfter($input);\r\n $placeholder.addClass(TEXTEDITOR_PLACEHOLDER_CLASS)\r\n },\r\n _attachPlaceholderEvents: function() {\r\n var startEvent = addNamespace(pointerEvents.up, this.NAME);\r\n eventsEngine.on(this._$placeholder, startEvent, () => {\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n });\r\n this._toggleEmptinessEventHandler()\r\n },\r\n _placeholder: function() {\r\n return this._$placeholder || $()\r\n },\r\n _clearValueHandler: function(e) {\r\n var $input = this._input();\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e);\r\n this._clearValue();\r\n !this._isFocused() && eventsEngine.trigger($input, \"focus\");\r\n eventsEngine.trigger($input, \"input\")\r\n },\r\n _clearValue: function() {\r\n this.reset()\r\n },\r\n _renderEvents: function() {\r\n var $input = this._input();\r\n each(EVENTS_LIST, (_, event) => {\r\n if (this.hasActionSubscription(\"on\" + event)) {\r\n var action = this._createActionByOption(\"on\" + event, {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n eventsEngine.on($input, addNamespace(event.toLowerCase(), this.NAME), e => {\r\n if (this._disposed) {\r\n return\r\n }\r\n action({\r\n event: e\r\n })\r\n })\r\n }\r\n })\r\n },\r\n _refreshEvents: function() {\r\n var $input = this._input();\r\n each(EVENTS_LIST, (_, event) => {\r\n eventsEngine.off($input, addNamespace(event.toLowerCase(), this.NAME))\r\n });\r\n this._renderEvents()\r\n },\r\n _keyPressHandler: function() {\r\n this.option(\"text\", this._input().val())\r\n },\r\n _keyDownHandler: function(e) {\r\n var $input = this._input();\r\n var isCtrlEnter = e.ctrlKey && \"enter\" === normalizeKeyName(e);\r\n var isNewValue = $input.val() !== this.option(\"value\");\r\n if (isCtrlEnter && isNewValue) {\r\n eventsEngine.trigger($input, \"change\")\r\n }\r\n },\r\n _getValueChangeEventOptionName: function() {\r\n return \"valueChangeEvent\"\r\n },\r\n _renderValueChangeEvent: function() {\r\n var keyPressEvent = addNamespace(this._renderValueEventName(), \"\".concat(this.NAME, \"TextChange\"));\r\n var valueChangeEvent = addNamespace(this.option(this._getValueChangeEventOptionName()), \"\".concat(this.NAME, \"ValueChange\"));\r\n var keyDownEvent = addNamespace(\"keydown\", \"\".concat(this.NAME, \"TextChange\"));\r\n var $input = this._input();\r\n eventsEngine.on($input, keyPressEvent, this._keyPressHandler.bind(this));\r\n eventsEngine.on($input, valueChangeEvent, this._valueChangeEventHandler.bind(this));\r\n eventsEngine.on($input, keyDownEvent, this._keyDownHandler.bind(this))\r\n },\r\n _cleanValueChangeEvent: function() {\r\n var valueChangeNamespace = \".\".concat(this.NAME, \"ValueChange\");\r\n var textChangeNamespace = \".\".concat(this.NAME, \"TextChange\");\r\n eventsEngine.off(this._input(), valueChangeNamespace);\r\n eventsEngine.off(this._input(), textChangeNamespace)\r\n },\r\n _refreshValueChangeEvent: function() {\r\n this._cleanValueChangeEvent();\r\n this._renderValueChangeEvent()\r\n },\r\n _renderValueEventName: function() {\r\n return \"input change keypress\"\r\n },\r\n _focusTarget: function() {\r\n return this._input()\r\n },\r\n _focusEventTarget: function() {\r\n return this.element()\r\n },\r\n _isInput: function(element) {\r\n return element === this._input().get(0)\r\n },\r\n _preventNestedFocusEvent: function(event) {\r\n if (event.isDefaultPrevented()) {\r\n return true\r\n }\r\n var shouldPrevent = this._isNestedTarget(event.relatedTarget);\r\n if (\"focusin\" === event.type) {\r\n shouldPrevent = shouldPrevent && this._isNestedTarget(event.target) && !this._isInput(event.target)\r\n } else if (!shouldPrevent) {\r\n this._toggleFocusClass(false, this.$element())\r\n }\r\n shouldPrevent && event.preventDefault();\r\n return shouldPrevent\r\n },\r\n _isNestedTarget: function(target) {\r\n return !!this.$element().find(target).length\r\n },\r\n _focusClassTarget: function() {\r\n return this.$element()\r\n },\r\n _focusInHandler: function(event) {\r\n this._preventNestedFocusEvent(event);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _focusOutHandler: function(event) {\r\n this._preventNestedFocusEvent(event);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _toggleFocusClass: function(isFocused, $element) {\r\n this.callBase(isFocused, this._focusClassTarget($element))\r\n },\r\n _hasFocusClass: function(element) {\r\n return this.callBase($(element || this.$element()))\r\n },\r\n _renderEmptinessEvent: function() {\r\n var $input = this._input();\r\n eventsEngine.on($input, \"input blur\", this._toggleEmptinessEventHandler.bind(this))\r\n },\r\n _toggleEmptinessEventHandler: function() {\r\n var text = this._input().val();\r\n var isEmpty = (\"\" === text || null === text) && this._isValueValid();\r\n this._toggleEmptiness(isEmpty)\r\n },\r\n _valueChangeEventHandler: function(e, formattedValue) {\r\n if (this.option(\"readOnly\")) {\r\n return\r\n }\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", arguments.length > 1 ? formattedValue : this._input().val());\r\n this._saveValueChangeEvent(void 0)\r\n },\r\n _renderEnterKeyAction: function() {\r\n this._enterKeyAction = this._createActionByOption(\"onEnterKey\", {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n eventsEngine.off(this._input(), \"keyup.onEnterKey.dxTextEditor\");\r\n eventsEngine.on(this._input(), \"keyup.onEnterKey.dxTextEditor\", this._enterKeyHandlerUp.bind(this))\r\n },\r\n _enterKeyHandlerUp: function(e) {\r\n if (this._disposed) {\r\n return\r\n }\r\n if (\"enter\" === normalizeKeyName(e)) {\r\n this._enterKeyAction({\r\n event: e\r\n })\r\n }\r\n },\r\n _updateValue: function() {\r\n this._options.silent(\"text\", null);\r\n this._renderValue()\r\n },\r\n _dispose: function() {\r\n this._enterKeyAction = void 0;\r\n this.callBase()\r\n },\r\n _getSubmitElement: function() {\r\n return this._input()\r\n },\r\n _hasActiveElement: function() {\r\n return this._input().is(domAdapter.getActiveElement(this._input()[0]))\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n fullName: fullName,\r\n value: value\r\n } = args;\r\n var eventName = name.replace(\"on\", \"\");\r\n if (EVENTS_LIST.includes(eventName)) {\r\n this._refreshEvents();\r\n return\r\n }\r\n switch (name) {\r\n case \"valueChangeEvent\":\r\n this._refreshValueChangeEvent();\r\n this._refreshFocusEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"onValueChanged\":\r\n this._createValueChangeAction();\r\n break;\r\n case \"focusStateEnabled\":\r\n this.callBase(args);\r\n this._toggleTabIndex();\r\n break;\r\n case \"spellcheck\":\r\n this._toggleSpellcheckState();\r\n break;\r\n case \"mode\":\r\n this._renderInputType();\r\n break;\r\n case \"onEnterKey\":\r\n this._renderEnterKeyAction();\r\n break;\r\n case \"placeholder\":\r\n this._renderPlaceholder();\r\n this._setFieldAria(true);\r\n break;\r\n case \"label\":\r\n this._label.updateText(value);\r\n this._setFieldAria(true);\r\n break;\r\n case \"labelMark\":\r\n this._label.updateMark(value);\r\n break;\r\n case \"labelMode\":\r\n this._label.updateMode(value);\r\n this._setFieldAria();\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._label.updateMaxWidth(this._getLabelContainerWidth());\r\n break;\r\n case \"readOnly\":\r\n case \"disabled\":\r\n this._updateButtons();\r\n this.callBase(args);\r\n break;\r\n case \"showClearButton\":\r\n this._updateButtons([\"clear\"]);\r\n break;\r\n case \"text\":\r\n break;\r\n case \"value\":\r\n this._updateValue();\r\n this.callBase(args);\r\n break;\r\n case \"inputAttr\":\r\n this._applyInputAttributes(this._input(), this.option(name));\r\n break;\r\n case \"stylingMode\":\r\n this._renderStylingMode();\r\n this._updateLabelWidth();\r\n break;\r\n case \"buttons\":\r\n if (fullName === name) {\r\n checkButtonsOptionType(value)\r\n }\r\n this._cleanButtonContainers();\r\n this._renderButtonContainers();\r\n this._updateButtonsStyling(this.option(\"stylingMode\"));\r\n this._updateLabelWidth();\r\n this._label.updateContainsButtonsBefore(!!this._$beforeButtonsContainer);\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n if (value && this.option(\"buttons\")) {\r\n this._cleanButtonContainers();\r\n this._renderButtonContainers();\r\n this._updateButtonsStyling(this.option(\"stylingMode\"))\r\n }\r\n break;\r\n case \"displayValueFormatter\":\r\n this._invalidate();\r\n break;\r\n case \"showValidationMark\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _renderInputType: function() {\r\n this._setInputType(this.option(\"mode\"))\r\n },\r\n _setInputType: function(type) {\r\n var input = this._input();\r\n if (\"search\" === type) {\r\n type = \"text\"\r\n }\r\n try {\r\n input.prop(\"type\", type)\r\n } catch (e) {\r\n input.prop(\"type\", \"text\")\r\n }\r\n },\r\n getButton(name) {\r\n return this._buttonCollection.getButton(name)\r\n },\r\n focus: function() {\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n },\r\n reset: function() {\r\n if (this._showValidMark) {\r\n this._showValidMark = false;\r\n this._renderValidationState()\r\n }\r\n var defaultOptions = this._getDefaultOptions();\r\n if (this.option(\"value\") === defaultOptions.value) {\r\n this._options.silent(\"text\", \"\");\r\n this._renderValue()\r\n } else {\r\n this.option(\"value\", defaultOptions.value)\r\n }\r\n },\r\n on: function(eventName, eventHandler) {\r\n var result = this.callBase(eventName, eventHandler);\r\n var event = eventName.charAt(0).toUpperCase() + eventName.substr(1);\r\n if (EVENTS_LIST.indexOf(event) >= 0) {\r\n this._refreshEvents()\r\n }\r\n return result\r\n }\r\n});\r\nexport default TextEditorBase;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport EventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n clipboardText as getClipboardText\r\n} from \"../../core/utils/dom\";\r\nvar MASK_EVENT_NAMESPACE = \"dxMask\";\r\nvar BLUR_EVENT = \"blur beforedeactivate\";\r\nvar EMPTY_CHAR = \" \";\r\nvar DELETE_INPUT_TYPES = [\"deleteContentBackward\", \"deleteSoftLineBackward\", \"deleteContent\", \"deleteHardLineBackward\"];\r\nvar HISTORY_INPUT_TYPES = [\"historyUndo\", \"historyRedo\"];\r\nvar EVENT_NAMES = [\"focusIn\", \"focusOut\", \"input\", \"paste\", \"cut\", \"drop\", \"beforeInput\"];\r\n\r\nfunction getEmptyString(length) {\r\n return EMPTY_CHAR.repeat(length)\r\n}\r\nexport default class MaskStrategy {\r\n constructor(editor) {\r\n this.editor = editor\r\n }\r\n _editorOption() {\r\n return this.editor.option(...arguments)\r\n }\r\n _editorInput() {\r\n return this.editor._input()\r\n }\r\n _editorCaret(newCaret) {\r\n if (!newCaret) {\r\n return this.editor._caret()\r\n }\r\n this.editor._caret(newCaret)\r\n }\r\n _attachChangeEventHandler() {\r\n if (!this._editorOption(\"valueChangeEvent\").split(\" \").includes(\"change\")) {\r\n return\r\n }\r\n var $input = this._editorInput();\r\n var namespace = addNamespace(BLUR_EVENT, MASK_EVENT_NAMESPACE);\r\n EventsEngine.on($input, namespace, e => {\r\n this.editor._changeHandler(e)\r\n })\r\n }\r\n _beforeInputHandler() {\r\n this._previousText = this._editorOption(\"text\");\r\n this._prevCaret = this._editorCaret()\r\n }\r\n _inputHandler(event) {\r\n var {\r\n originalEvent: originalEvent\r\n } = event;\r\n if (!originalEvent) {\r\n return\r\n }\r\n var {\r\n inputType: inputType\r\n } = originalEvent;\r\n if (HISTORY_INPUT_TYPES.includes(inputType)) {\r\n this._handleHistoryInputEvent()\r\n } else if (DELETE_INPUT_TYPES.includes(inputType)) {\r\n this._handleBackwardDeleteInputEvent()\r\n } else {\r\n var currentCaret = this._editorCaret();\r\n if (!currentCaret.end) {\r\n return\r\n }\r\n this._clearSelectedText();\r\n this._autoFillHandler(originalEvent);\r\n this._editorCaret(currentCaret);\r\n this._handleInsertTextInputEvent(originalEvent.data)\r\n }\r\n if (this._editorOption(\"text\") === this._previousText) {\r\n event.stopImmediatePropagation()\r\n }\r\n }\r\n _handleHistoryInputEvent() {\r\n var caret = this._editorCaret();\r\n this._updateEditorMask({\r\n start: caret.start,\r\n length: caret.end - caret.start,\r\n text: \"\"\r\n });\r\n this._editorCaret(this._prevCaret)\r\n }\r\n _handleBackwardDeleteInputEvent() {\r\n this._clearSelectedText();\r\n var caret = this._editorCaret();\r\n this.editor.setForwardDirection();\r\n this.editor._adjustCaret();\r\n var adjustedForwardCaret = this._editorCaret();\r\n if (adjustedForwardCaret.start !== caret.start) {\r\n this.editor.setBackwardDirection();\r\n this.editor._adjustCaret()\r\n }\r\n }\r\n _clearSelectedText() {\r\n var _this$_prevCaret, _this$_prevCaret2;\r\n var length = (null === (_this$_prevCaret = this._prevCaret) || void 0 === _this$_prevCaret ? void 0 : _this$_prevCaret.end) - (null === (_this$_prevCaret2 = this._prevCaret) || void 0 === _this$_prevCaret2 ? void 0 : _this$_prevCaret2.start) || 1;\r\n var caret = this._editorCaret();\r\n if (!this._isAutoFill()) {\r\n this.editor.setBackwardDirection();\r\n this._updateEditorMask({\r\n start: caret.start,\r\n length: length,\r\n text: getEmptyString(length)\r\n })\r\n }\r\n }\r\n _handleInsertTextInputEvent(data) {\r\n var _this$_prevCaret$star, _this$_prevCaret3;\r\n var text = null !== data && void 0 !== data ? data : \"\";\r\n this.editor.setForwardDirection();\r\n var hasValidChars = this._updateEditorMask({\r\n start: null !== (_this$_prevCaret$star = null === (_this$_prevCaret3 = this._prevCaret) || void 0 === _this$_prevCaret3 ? void 0 : _this$_prevCaret3.start) && void 0 !== _this$_prevCaret$star ? _this$_prevCaret$star : 0,\r\n length: text.length || 1,\r\n text: text\r\n });\r\n if (!hasValidChars) {\r\n this._editorCaret(this._prevCaret)\r\n }\r\n }\r\n _updateEditorMask(args) {\r\n var textLength = args.text.length;\r\n var processedCharsCount = this.editor._handleChain(args);\r\n this.editor._displayMask();\r\n if (this.editor.isForwardDirection()) {\r\n var {\r\n start: start,\r\n end: end\r\n } = this._editorCaret();\r\n var correction = processedCharsCount - textLength;\r\n var hasSkippedStub = processedCharsCount > 1;\r\n if (hasSkippedStub && 1 === textLength) {\r\n this._editorCaret({\r\n start: start + correction,\r\n end: end + correction\r\n })\r\n }\r\n this.editor._adjustCaret()\r\n }\r\n return !!processedCharsCount\r\n }\r\n _focusInHandler() {\r\n this.editor._showMaskPlaceholder();\r\n this.editor.setForwardDirection();\r\n if (!this.editor._isValueEmpty() && this._editorOption(\"isValid\")) {\r\n this.editor._adjustCaret()\r\n } else {\r\n var caret = this.editor._maskRulesChain.first();\r\n this._caretTimeout = setTimeout(() => {\r\n this._editorCaret({\r\n start: caret,\r\n end: caret\r\n })\r\n }, 0)\r\n }\r\n }\r\n _focusOutHandler(event) {\r\n this.editor._changeHandler(event);\r\n if (\"onFocus\" === this._editorOption(\"showMaskMode\") && this.editor._isValueEmpty()) {\r\n this._editorOption(\"text\", \"\");\r\n this.editor._renderDisplayText(\"\")\r\n }\r\n }\r\n _delHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n editor._maskKeyHandler(event, () => {\r\n if (!editor._hasSelection()) {\r\n editor._handleKey(EMPTY_CHAR)\r\n }\r\n })\r\n }\r\n _cutHandler(event) {\r\n var caret = this._editorCaret();\r\n var selectedText = this._editorInput().val().substring(caret.start, caret.end);\r\n this.editor._maskKeyHandler(event, () => getClipboardText(event, selectedText))\r\n }\r\n _dropHandler() {\r\n this._clearDragTimer();\r\n this._dragTimer = setTimeout(() => {\r\n var value = this.editor._convertToValue(this._editorInput().val());\r\n this._editorOption(\"value\", value)\r\n })\r\n }\r\n _pasteHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n if (this._editorOption(\"disabled\")) {\r\n return\r\n }\r\n var caret = this._editorCaret();\r\n editor._maskKeyHandler(event, () => {\r\n var pastedText = getClipboardText(event);\r\n var restText = editor._maskRulesChain.text().substring(caret.end);\r\n var accepted = editor._handleChain({\r\n text: pastedText,\r\n start: caret.start,\r\n length: pastedText.length\r\n });\r\n var newCaret = caret.start + accepted;\r\n editor._handleChain({\r\n text: restText,\r\n start: newCaret,\r\n length: restText.length\r\n });\r\n editor._caret({\r\n start: newCaret,\r\n end: newCaret\r\n })\r\n })\r\n }\r\n _autoFillHandler(event) {\r\n var {\r\n editor: editor\r\n } = this;\r\n var inputVal = this._editorInput().val();\r\n this._inputHandlerTimer = setTimeout(() => {\r\n if (this._isAutoFill()) {\r\n editor._maskKeyHandler(event, () => {\r\n editor._handleChain({\r\n text: inputVal,\r\n start: 0,\r\n length: inputVal.length\r\n })\r\n });\r\n editor._validateMask()\r\n }\r\n })\r\n }\r\n _isAutoFill() {\r\n var $input = this._editorInput();\r\n if (browser.webkit) {\r\n var _input$matches;\r\n var input = $input.get(0);\r\n return null !== (_input$matches = null === input || void 0 === input ? void 0 : input.matches(\":-webkit-autofill\")) && void 0 !== _input$matches ? _input$matches : false\r\n }\r\n return false\r\n }\r\n _clearDragTimer() {\r\n clearTimeout(this._dragTimer)\r\n }\r\n getHandler(handlerName) {\r\n return args => {\r\n var _this;\r\n null === (_this = this[\"_\".concat(handlerName, \"Handler\")]) || void 0 === _this ? void 0 : _this.call(this, args)\r\n }\r\n }\r\n attachEvents() {\r\n var $input = this._editorInput();\r\n EVENT_NAMES.forEach(eventName => {\r\n var namespace = addNamespace(eventName.toLowerCase(), MASK_EVENT_NAMESPACE);\r\n EventsEngine.on($input, namespace, this.getHandler(eventName))\r\n });\r\n this._attachChangeEventHandler()\r\n }\r\n detachEvents() {\r\n EventsEngine.off(this._editorInput(), \".\".concat(MASK_EVENT_NAMESPACE))\r\n }\r\n clean() {\r\n this._clearDragTimer();\r\n clearTimeout(this._caretTimeout);\r\n clearTimeout(this._inputHandlerTimer)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.mask.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport caretUtils from \"./utils.caret\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace,\r\n createEvent,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isEmpty\r\n} from \"../../core/utils/string\";\r\nimport {\r\n name as wheelEventName\r\n} from \"../../events/core/wheel\";\r\nimport {\r\n EmptyMaskRule,\r\n StubMaskRule,\r\n MaskRule\r\n} from \"./ui.text_editor.mask.rule\";\r\nimport TextEditorBase from \"./ui.text_editor.base\";\r\nimport MaskStrategy from \"./ui.text_editor.mask.strategy\";\r\nvar stubCaret = function() {\r\n return {}\r\n};\r\nvar caret = caretUtils;\r\nvar EMPTY_CHAR = \" \";\r\nvar ESCAPED_CHAR = \"\\\\\";\r\nvar TEXTEDITOR_MASKED_CLASS = \"dx-texteditor-masked\";\r\nvar FORWARD_DIRECTION = \"forward\";\r\nvar BACKWARD_DIRECTION = \"backward\";\r\nvar DROP_EVENT_NAME = \"drop\";\r\nvar buildInMaskRules = {\r\n 0: /[0-9]/,\r\n 9: /[0-9\\s]/,\r\n \"#\": /[-+0-9\\s]/,\r\n L: function(char) {\r\n return isLiteralChar(char)\r\n },\r\n l: function(char) {\r\n return isLiteralChar(char) || isSpaceChar(char)\r\n },\r\n C: /\\S/,\r\n c: /./,\r\n A: function(char) {\r\n return isLiteralChar(char) || isNumericChar(char)\r\n },\r\n a: function(char) {\r\n return isLiteralChar(char) || isNumericChar(char) || isSpaceChar(char)\r\n }\r\n};\r\n\r\nfunction isNumericChar(char) {\r\n return /[0-9]/.test(char)\r\n}\r\n\r\nfunction isLiteralChar(char) {\r\n var code = char.charCodeAt();\r\n return 64 < code && code < 91 || 96 < code && code < 123 || code > 127\r\n}\r\n\r\nfunction isSpaceChar(char) {\r\n return \" \" === char\r\n}\r\nvar TextEditorMask = TextEditorBase.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n mask: \"\",\r\n maskChar: \"_\",\r\n maskRules: {},\r\n maskInvalidMessage: messageLocalization.format(\"validation-mask\"),\r\n useMaskedValue: false,\r\n showMaskMode: \"always\"\r\n })\r\n },\r\n _supportedKeys: function() {\r\n var that = this;\r\n var keyHandlerMap = {\r\n del: that._maskStrategy.getHandler(\"del\"),\r\n enter: that._changeHandler\r\n };\r\n var result = that.callBase();\r\n each(keyHandlerMap, (function(key, callback) {\r\n var parentHandler = result[key];\r\n result[key] = function(e) {\r\n that.option(\"mask\") && callback.call(that, e);\r\n parentHandler && parentHandler(e)\r\n }\r\n }));\r\n return result\r\n },\r\n _getSubmitElement: function() {\r\n return !this.option(\"mask\") ? this.callBase() : this._$hiddenElement\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initMaskStrategy()\r\n },\r\n _initMaskStrategy: function() {\r\n this._maskStrategy = new MaskStrategy(this)\r\n },\r\n _initMarkup: function() {\r\n this._renderHiddenElement();\r\n this.callBase()\r\n },\r\n _attachMouseWheelEventHandlers: function() {\r\n var hasMouseWheelHandler = this._onMouseWheel !== noop;\r\n if (!hasMouseWheelHandler) {\r\n return\r\n }\r\n var input = this._input();\r\n var eventName = addNamespace(wheelEventName, this.NAME);\r\n var mouseWheelAction = this._createAction(function(e) {\r\n var {\r\n event: event\r\n } = e;\r\n if (focused(input) && !isCommandKeyPressed(event)) {\r\n this._onMouseWheel(event);\r\n event.preventDefault();\r\n event.stopPropagation()\r\n }\r\n }.bind(this));\r\n eventsEngine.off(input, eventName);\r\n eventsEngine.on(input, eventName, (function(e) {\r\n mouseWheelAction({\r\n event: e\r\n })\r\n }))\r\n },\r\n _onMouseWheel: noop,\r\n _useMaskBehavior() {\r\n return Boolean(this.option(\"mask\"))\r\n },\r\n _attachDropEventHandler() {\r\n var useMaskBehavior = this._useMaskBehavior();\r\n if (!useMaskBehavior) {\r\n return\r\n }\r\n var eventName = addNamespace(DROP_EVENT_NAME, this.NAME);\r\n var input = this._input();\r\n eventsEngine.off(input, eventName);\r\n eventsEngine.on(input, eventName, e => e.preventDefault())\r\n },\r\n _render: function() {\r\n this._renderMask();\r\n this.callBase();\r\n this._attachDropEventHandler();\r\n this._attachMouseWheelEventHandlers()\r\n },\r\n _renderHiddenElement: function() {\r\n if (this.option(\"mask\")) {\r\n this._$hiddenElement = $(\"<input>\").attr(\"type\", \"hidden\").appendTo(this._inputWrapper())\r\n }\r\n },\r\n _removeHiddenElement: function() {\r\n this._$hiddenElement && this._$hiddenElement.remove()\r\n },\r\n _renderMask: function() {\r\n this.$element().removeClass(TEXTEDITOR_MASKED_CLASS);\r\n this._maskRulesChain = null;\r\n this._maskStrategy.detachEvents();\r\n if (!this.option(\"mask\")) {\r\n return\r\n }\r\n this.$element().addClass(TEXTEDITOR_MASKED_CLASS);\r\n this._maskStrategy.attachEvents();\r\n this._parseMask();\r\n this._renderMaskedValue()\r\n },\r\n _suppressCaretChanging: function(callback, args) {\r\n caret = stubCaret;\r\n try {\r\n callback.apply(this, args)\r\n } finally {\r\n caret = caretUtils\r\n }\r\n },\r\n _changeHandler: function(e) {\r\n var $input = this._input();\r\n var inputValue = $input.val();\r\n if (inputValue === this._changedValue) {\r\n return\r\n }\r\n this._changedValue = inputValue;\r\n var changeEvent = createEvent(e, {\r\n type: \"change\"\r\n });\r\n eventsEngine.trigger($input, changeEvent)\r\n },\r\n _parseMask: function() {\r\n this._maskRules = extend({}, buildInMaskRules, this.option(\"maskRules\"));\r\n this._maskRulesChain = this._parseMaskRule(0)\r\n },\r\n _parseMaskRule: function(index) {\r\n var mask = this.option(\"mask\");\r\n if (index >= mask.length) {\r\n return new EmptyMaskRule\r\n }\r\n var currentMaskChar = mask[index];\r\n var isEscapedChar = currentMaskChar === ESCAPED_CHAR;\r\n var result = isEscapedChar ? new StubMaskRule({\r\n maskChar: mask[index + 1]\r\n }) : this._getMaskRule(currentMaskChar);\r\n result.next(this._parseMaskRule(index + 1 + isEscapedChar));\r\n return result\r\n },\r\n _getMaskRule: function(pattern) {\r\n var ruleConfig;\r\n each(this._maskRules, (function(rulePattern, allowedChars) {\r\n if (rulePattern === pattern) {\r\n ruleConfig = {\r\n pattern: rulePattern,\r\n allowedChars: allowedChars\r\n };\r\n return false\r\n }\r\n }));\r\n return isDefined(ruleConfig) ? new MaskRule(extend({\r\n maskChar: this.option(\"maskChar\")\r\n }, ruleConfig)) : new StubMaskRule({\r\n maskChar: pattern\r\n })\r\n },\r\n _renderMaskedValue: function() {\r\n if (!this._maskRulesChain) {\r\n return\r\n }\r\n var value = this.option(\"value\") || \"\";\r\n this._maskRulesChain.clear(this._normalizeChainArguments());\r\n var chainArgs = {\r\n length: value.length\r\n };\r\n chainArgs[this._isMaskedValueMode() ? \"text\" : \"value\"] = value;\r\n this._handleChain(chainArgs);\r\n this._displayMask()\r\n },\r\n _replaceSelectedText: function(text, selection, char) {\r\n if (void 0 === char) {\r\n return text\r\n }\r\n var textBefore = text.slice(0, selection.start);\r\n var textAfter = text.slice(selection.end);\r\n var edited = textBefore + char + textAfter;\r\n return edited\r\n },\r\n _isMaskedValueMode: function() {\r\n return this.option(\"useMaskedValue\")\r\n },\r\n _displayMask: function(caret) {\r\n caret = caret || this._caret();\r\n this._renderValue();\r\n this._caret(caret)\r\n },\r\n _isValueEmpty: function() {\r\n return isEmpty(this._value)\r\n },\r\n _shouldShowMask: function() {\r\n var showMaskMode = this.option(\"showMaskMode\");\r\n if (\"onFocus\" === showMaskMode) {\r\n return focused(this._input()) || !this._isValueEmpty()\r\n }\r\n return true\r\n },\r\n _showMaskPlaceholder: function() {\r\n if (this._shouldShowMask()) {\r\n var text = this._maskRulesChain.text();\r\n this.option(\"text\", text);\r\n if (\"onFocus\" === this.option(\"showMaskMode\")) {\r\n this._renderDisplayText(text)\r\n }\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this._maskRulesChain) {\r\n this._showMaskPlaceholder();\r\n if (this._$hiddenElement) {\r\n var value = this._maskRulesChain.value();\r\n var submitElementValue = !isEmpty(value) ? this._getPreparedValue() : \"\";\r\n this._$hiddenElement.val(submitElementValue)\r\n }\r\n }\r\n return this.callBase()\r\n },\r\n _getPreparedValue: function() {\r\n return this._convertToValue().replace(/\\s+$/, \"\")\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (!this._maskRulesChain) {\r\n this.callBase.apply(this, arguments);\r\n return\r\n }\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", this._getPreparedValue())\r\n },\r\n _isControlKeyFired: function(e) {\r\n return this._isControlKey(normalizeKeyName(e)) || isCommandKeyPressed(e)\r\n },\r\n _handleChain: function(args) {\r\n var handledCount = this._maskRulesChain.handle(this._normalizeChainArguments(args));\r\n this._value = this._maskRulesChain.value();\r\n this._textValue = this._maskRulesChain.text();\r\n return handledCount\r\n },\r\n _normalizeChainArguments: function(args) {\r\n args = args || {};\r\n args.index = 0;\r\n args.fullText = this._maskRulesChain.text();\r\n return args\r\n },\r\n _convertToValue: function(text) {\r\n if (this._isMaskedValueMode()) {\r\n text = this._replaceMaskCharWithEmpty(text || this._textValue || \"\")\r\n } else {\r\n text = text || this._value || \"\"\r\n }\r\n return text\r\n },\r\n _replaceMaskCharWithEmpty: function(text) {\r\n return text.replace(new RegExp(this.option(\"maskChar\"), \"g\"), EMPTY_CHAR)\r\n },\r\n _maskKeyHandler: function(e, keyHandler) {\r\n if (this.option(\"readOnly\")) {\r\n return\r\n }\r\n this.setForwardDirection();\r\n e.preventDefault();\r\n this._handleSelection();\r\n var previousText = this._input().val();\r\n var raiseInputEvent = () => {\r\n if (previousText !== this._input().val()) {\r\n eventsEngine.trigger(this._input(), \"input\")\r\n }\r\n };\r\n var handled = keyHandler();\r\n if (handled) {\r\n handled.then(raiseInputEvent)\r\n } else {\r\n this.setForwardDirection();\r\n this._adjustCaret();\r\n this._displayMask();\r\n this._maskRulesChain.reset();\r\n raiseInputEvent()\r\n }\r\n },\r\n _handleKey: function(key, direction) {\r\n this._direction(direction || FORWARD_DIRECTION);\r\n this._adjustCaret(key);\r\n this._handleKeyChain(key);\r\n this._moveCaret()\r\n },\r\n _handleSelection: function() {\r\n if (!this._hasSelection()) {\r\n return\r\n }\r\n var caret = this._caret();\r\n var emptyChars = new Array(caret.end - caret.start + 1).join(EMPTY_CHAR);\r\n this._handleKeyChain(emptyChars)\r\n },\r\n _handleKeyChain: function(chars) {\r\n var caret = this._caret();\r\n var start = this.isForwardDirection() ? caret.start : caret.start - 1;\r\n var end = this.isForwardDirection() ? caret.end : caret.end - 1;\r\n var length = start === end ? 1 : end - start;\r\n this._handleChain({\r\n text: chars,\r\n start: start,\r\n length: length\r\n })\r\n },\r\n _tryMoveCaretBackward: function() {\r\n this.setBackwardDirection();\r\n var currentCaret = this._caret().start;\r\n this._adjustCaret();\r\n return !currentCaret || currentCaret !== this._caret().start\r\n },\r\n _adjustCaret: function(char) {\r\n var caretStart = this._caret().start;\r\n var isForwardDirection = this.isForwardDirection();\r\n var caret = this._maskRulesChain.adjustedCaret(caretStart, isForwardDirection, char);\r\n this._caret({\r\n start: caret,\r\n end: caret\r\n })\r\n },\r\n _moveCaret: function() {\r\n var currentCaret = this._caret().start;\r\n var maskRuleIndex = currentCaret + (this.isForwardDirection() ? 0 : -1);\r\n var caret = this._maskRulesChain.isAccepted(maskRuleIndex) ? currentCaret + (this.isForwardDirection() ? 1 : -1) : currentCaret;\r\n this._caret({\r\n start: caret,\r\n end: caret\r\n })\r\n },\r\n _caret: function(position, force) {\r\n var $input = this._input();\r\n if (!$input.length) {\r\n return\r\n }\r\n if (!arguments.length) {\r\n return caret($input)\r\n }\r\n caret($input, position, force)\r\n },\r\n _hasSelection: function() {\r\n var caret = this._caret();\r\n return caret.start !== caret.end\r\n },\r\n _direction: function(direction) {\r\n if (!arguments.length) {\r\n return this._typingDirection\r\n }\r\n this._typingDirection = direction\r\n },\r\n setForwardDirection: function() {\r\n this._direction(FORWARD_DIRECTION)\r\n },\r\n setBackwardDirection: function() {\r\n this._direction(BACKWARD_DIRECTION)\r\n },\r\n isForwardDirection: function() {\r\n return this._direction() === FORWARD_DIRECTION\r\n },\r\n _clean: function() {\r\n this._maskStrategy && this._maskStrategy.clean();\r\n this.callBase()\r\n },\r\n _validateMask: function() {\r\n if (!this._maskRulesChain) {\r\n return\r\n }\r\n var isValid = isEmpty(this.option(\"value\")) || this._maskRulesChain.isValid(this._normalizeChainArguments());\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: this.option(\"maskInvalidMessage\")\r\n }\r\n })\r\n },\r\n _updateHiddenElement: function() {\r\n this._removeHiddenElement();\r\n if (this.option(\"mask\")) {\r\n this._input().removeAttr(\"name\");\r\n this._renderHiddenElement()\r\n }\r\n this._setSubmitElementName(this.option(\"name\"))\r\n },\r\n _updateMaskOption: function() {\r\n this._updateHiddenElement();\r\n this._renderMask();\r\n this._validateMask()\r\n },\r\n _processEmptyMask: function(mask) {\r\n if (mask) {\r\n return\r\n }\r\n var value = this.option(\"value\");\r\n this.option({\r\n text: value,\r\n isValid: true\r\n });\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n });\r\n this._renderValue()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"mask\":\r\n this._updateMaskOption();\r\n this._processEmptyMask(args.value);\r\n break;\r\n case \"maskChar\":\r\n case \"maskRules\":\r\n case \"useMaskedValue\":\r\n this._updateMaskOption();\r\n break;\r\n case \"value\":\r\n this._renderMaskedValue();\r\n this._validateMask();\r\n this.callBase(args);\r\n this._changedValue = this._input().val();\r\n break;\r\n case \"maskInvalidMessage\":\r\n break;\r\n case \"showMaskMode\":\r\n this.option(\"text\", \"\");\r\n this._renderValue();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default TextEditorMask;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/ui.text_editor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport TextEditorMask from \"./ui.text_editor.mask\";\r\nregisterComponent(\"dxTextEditor\", TextEditorMask);\r\nexport default TextEditorMask;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/text_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport TextEditor from \"./ui.text_editor\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport {\r\n getOuterWidth,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nvar ignoreKeys = [\"backspace\", \"tab\", \"enter\", \"pageUp\", \"pageDown\", \"end\", \"home\", \"leftArrow\", \"rightArrow\", \"downArrow\", \"upArrow\", \"del\"];\r\nvar TEXTBOX_CLASS = \"dx-textbox\";\r\nvar SEARCHBOX_CLASS = \"dx-searchbox\";\r\nvar ICON_CLASS = \"dx-icon\";\r\nvar SEARCH_ICON_CLASS = \"dx-icon-search\";\r\nvar TextBox = TextEditor.inherit({\r\n ctor: function(element, options) {\r\n if (options) {\r\n this._showClearButton = options.showClearButton\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: \"\",\r\n mode: \"text\",\r\n maxLength: null\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TEXTBOX_CLASS);\r\n this.callBase();\r\n this.setAria(\"role\", \"textbox\")\r\n },\r\n _renderInputType: function() {\r\n this.callBase();\r\n this._renderSearchMode()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._toggleMaxLengthProp()\r\n },\r\n _toggleMaxLengthProp: function() {\r\n var maxLength = this._getMaxLength();\r\n if (maxLength && maxLength > 0) {\r\n this._input().attr(\"maxLength\", maxLength)\r\n } else {\r\n this._input().removeAttr(\"maxLength\")\r\n }\r\n },\r\n _renderSearchMode: function() {\r\n var $element = this._$element;\r\n if (\"search\" === this.option(\"mode\")) {\r\n $element.addClass(SEARCHBOX_CLASS);\r\n this._renderSearchIcon();\r\n if (void 0 === this._showClearButton) {\r\n this._showClearButton = this.option(\"showClearButton\");\r\n this.option(\"showClearButton\", true)\r\n }\r\n } else {\r\n $element.removeClass(SEARCHBOX_CLASS);\r\n this._$searchIcon && this._$searchIcon.remove();\r\n this.option(\"showClearButton\", void 0 === this._showClearButton ? this.option(\"showClearButton\") : this._showClearButton);\r\n delete this._showClearButton\r\n }\r\n },\r\n _renderSearchIcon: function() {\r\n var $searchIcon = $(\"<div>\").addClass(ICON_CLASS).addClass(SEARCH_ICON_CLASS);\r\n $searchIcon.prependTo(this._input().parent());\r\n this._$searchIcon = $searchIcon\r\n },\r\n _getLabelContainerWidth: function() {\r\n if (this._$searchIcon) {\r\n var $inputContainer = this._input().parent();\r\n return getWidth($inputContainer) - this._getLabelBeforeWidth()\r\n }\r\n return this.callBase()\r\n },\r\n _getLabelBeforeWidth: function() {\r\n var labelBeforeWidth = this.callBase();\r\n if (this._$searchIcon) {\r\n labelBeforeWidth += getOuterWidth(this._$searchIcon)\r\n }\r\n return labelBeforeWidth\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"maxLength\":\r\n this._toggleMaxLengthProp();\r\n break;\r\n case \"mode\":\r\n this.callBase(args);\r\n this._updateLabelWidth();\r\n break;\r\n case \"mask\":\r\n this.callBase(args);\r\n this._toggleMaxLengthProp();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _onKeyDownCutOffHandler: function(e) {\r\n var actualMaxLength = this._getMaxLength();\r\n if (actualMaxLength && !e.ctrlKey && !this._hasSelection()) {\r\n var $input = $(e.target);\r\n var key = normalizeKeyName(e);\r\n this._cutOffExtraChar($input);\r\n return $input.val().length < actualMaxLength || ignoreKeys.includes(key) || \"\" !== window.getSelection().toString()\r\n } else {\r\n return true\r\n }\r\n },\r\n _onChangeCutOffHandler: function(e) {\r\n var $input = $(e.target);\r\n if (this.option(\"maxLength\")) {\r\n this._cutOffExtraChar($input)\r\n }\r\n },\r\n _cutOffExtraChar: function($input) {\r\n var actualMaxLength = this._getMaxLength();\r\n var textInput = $input.val();\r\n if (actualMaxLength && textInput.length > actualMaxLength) {\r\n $input.val(textInput.substr(0, actualMaxLength))\r\n }\r\n },\r\n _getMaxLength: function() {\r\n var isMaskSpecified = !!this.option(\"mask\");\r\n return isMaskSpecified ? null : this.option(\"maxLength\")\r\n }\r\n});\r\nregisterComponent(\"dxTextBox\", TextBox);\r\nexport default TextBox;\r\n","/**\r\n * DevExtreme (esm/ui/text_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport TextBox from \"./text_box/text_box\";\r\nexport default TextBox;\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar getElementWidth = function($element) {\r\n if (hasWindow()) {\r\n return getOuterWidth($element)\r\n }\r\n};\r\nvar getSizeValue = function(size) {\r\n if (null === size) {\r\n size = void 0\r\n }\r\n if (\"function\" === typeof size) {\r\n size = size()\r\n }\r\n return size\r\n};\r\nexport {\r\n getElementWidth,\r\n getSizeValue\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_editor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../../core/utils/common\";\r\nimport {\r\n focused\r\n} from \"../widget/selectors\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport animationPosition from \"../../animation/position\";\r\nimport {\r\n getDefaultAlignment\r\n} from \"../../core/utils/position\";\r\nimport DropDownButton from \"./ui.drop_down_button\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport TextBox from \"../text_box\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../core/templates/function_template\";\r\nimport Popup from \"../popup/ui.popup\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getElementWidth,\r\n getSizeValue\r\n} from \"./utils\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../../animation/translator\";\r\nvar DROP_DOWN_EDITOR_CLASS = \"dx-dropdowneditor\";\r\nvar DROP_DOWN_EDITOR_INPUT_WRAPPER = \"dx-dropdowneditor-input-wrapper\";\r\nvar DROP_DOWN_EDITOR_BUTTON_ICON = \"dx-dropdowneditor-icon\";\r\nvar DROP_DOWN_EDITOR_OVERLAY = \"dx-dropdowneditor-overlay\";\r\nvar DROP_DOWN_EDITOR_OVERLAY_FLIPPED = \"dx-dropdowneditor-overlay-flipped\";\r\nvar DROP_DOWN_EDITOR_ACTIVE = \"dx-dropdowneditor-active\";\r\nvar DROP_DOWN_EDITOR_FIELD_CLICKABLE = \"dx-dropdowneditor-field-clickable\";\r\nvar DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER = \"dx-dropdowneditor-field-template-wrapper\";\r\nvar isIOs = \"ios\" === devices.current().platform;\r\nvar DropDownEditor = TextBox.inherit({\r\n _supportedKeys: function() {\r\n return extend({}, this.callBase(), {\r\n tab: function(e) {\r\n if (!this.option(\"opened\")) {\r\n return\r\n }\r\n if (\"instantly\" === this.option(\"applyValueMode\")) {\r\n this.close();\r\n return\r\n }\r\n var $focusableElement = e.shiftKey ? this._getLastPopupElement() : this._getFirstPopupElement();\r\n if ($focusableElement) {\r\n eventsEngine.trigger($focusableElement, \"focus\");\r\n $focusableElement.select()\r\n }\r\n e.preventDefault()\r\n },\r\n escape: function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault()\r\n }\r\n this.close();\r\n return true\r\n },\r\n upArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.altKey) {\r\n this.close();\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n downArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (e.altKey) {\r\n this._validatedOpening();\r\n return false\r\n }\r\n }\r\n return true\r\n },\r\n enter: function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault();\r\n this._valueChangeEventHandler(e)\r\n }\r\n return true\r\n }\r\n })\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"dropDown\",\r\n Ctor: DropDownButton\r\n }])\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: null,\r\n onOpened: null,\r\n onClosed: null,\r\n opened: false,\r\n acceptCustomValue: true,\r\n applyValueMode: \"instantly\",\r\n deferRendering: true,\r\n activeStateEnabled: true,\r\n dropDownButtonTemplate: \"dropDownButton\",\r\n fieldTemplate: null,\r\n openOnFieldClick: false,\r\n showDropDownButton: true,\r\n buttons: void 0,\r\n dropDownOptions: {\r\n showTitle: false\r\n },\r\n popupPosition: this._getDefaultPopupPosition(),\r\n onPopupInitialized: null,\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n cancelButtonText: messageLocalization.format(\"Cancel\"),\r\n buttonsLocation: \"default\",\r\n useHiddenSubmitElement: false,\r\n validationMessagePosition: \"auto\"\r\n })\r\n },\r\n _useTemplates: function() {\r\n return true\r\n },\r\n _getDefaultPopupPosition: function(isRtlEnabled) {\r\n var position = getDefaultAlignment(isRtlEnabled);\r\n return {\r\n offset: {\r\n h: 0,\r\n v: -1\r\n },\r\n my: position + \" top\",\r\n at: position + \" bottom\",\r\n collision: \"flip flip\"\r\n }\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n var isGeneric = \"generic\" === _device.platform;\r\n return isGeneric\r\n },\r\n options: {\r\n popupPosition: {\r\n offset: {\r\n v: 0\r\n }\r\n }\r\n }\r\n }])\r\n },\r\n _inputWrapper: function() {\r\n return this.$element().find(\".\" + DROP_DOWN_EDITOR_INPUT_WRAPPER).first()\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initVisibilityActions();\r\n this._initPopupInitializedAction();\r\n this._updatePopupPosition(this.option(\"rtlEnabled\"));\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"))\r\n },\r\n _updatePopupPosition: function(isRtlEnabled) {\r\n var {\r\n my: my,\r\n at: at\r\n } = this._getDefaultPopupPosition(isRtlEnabled);\r\n var currentPosition = this.option(\"popupPosition\");\r\n this.option(\"popupPosition\", extend({}, currentPosition, {\r\n my: my,\r\n at: at\r\n }))\r\n },\r\n _initVisibilityActions: function() {\r\n this._openAction = this._createActionByOption(\"onOpened\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n this._closeAction = this._createActionByOption(\"onClosed\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initPopupInitializedAction: function() {\r\n this._popupInitializedAction = this._createActionByOption(\"onPopupInitialized\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.callBase();\r\n this.$element().addClass(DROP_DOWN_EDITOR_CLASS);\r\n this.setAria(\"role\", \"combobox\")\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderOpenHandler();\r\n this._attachFocusOutHandler();\r\n this._renderOpenedState()\r\n },\r\n _renderContentImpl: function() {\r\n if (!this.option(\"deferRendering\")) {\r\n this._createPopup()\r\n }\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._wrapInput();\r\n this._setDefaultAria()\r\n },\r\n _wrapInput: function() {\r\n this._$container = this.$element().wrapInner($(\"<div>\").addClass(DROP_DOWN_EDITOR_INPUT_WRAPPER)).children().eq(0)\r\n },\r\n _setDefaultAria: function() {\r\n this.setAria({\r\n haspopup: \"true\",\r\n autocomplete: \"list\"\r\n })\r\n },\r\n _readOnlyPropValue: function() {\r\n return !this._isEditable() || this.callBase()\r\n },\r\n _cleanFocusState: function() {\r\n this.callBase();\r\n if (this.option(\"fieldTemplate\")) {\r\n this._detachFocusEvents()\r\n }\r\n },\r\n _getFieldTemplate: function() {\r\n return this.option(\"fieldTemplate\") && this._getTemplateByOption(\"fieldTemplate\")\r\n },\r\n _renderMask: function() {\r\n if (this.option(\"fieldTemplate\")) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _renderField: function() {\r\n var fieldTemplate = this._getFieldTemplate();\r\n fieldTemplate && this._renderTemplatedField(fieldTemplate, this._fieldRenderData())\r\n },\r\n _renderPlaceholder: function() {\r\n var hasFieldTemplate = !!this._getFieldTemplate();\r\n if (!hasFieldTemplate) {\r\n this.callBase()\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._setSubmitValue()\r\n }\r\n var promise = this.callBase();\r\n promise.always(this._renderField.bind(this))\r\n },\r\n _renderTemplatedField: function(fieldTemplate, data) {\r\n var isFocused = focused(this._input());\r\n var $container = this._$container;\r\n this._detachKeyboardEvents();\r\n this._refreshButtonsContainer();\r\n this._detachWrapperContent();\r\n this._detachFocusEvents();\r\n $container.empty();\r\n var $templateWrapper = $(\"<div>\").addClass(DROP_DOWN_EDITOR_FIELD_TEMPLATE_WRAPPER).appendTo($container);\r\n fieldTemplate.render({\r\n model: data,\r\n container: getPublicElement($templateWrapper),\r\n onRendered: () => {\r\n var isRenderedInRoot = !!this.$element().find($templateWrapper).length;\r\n if (!isRenderedInRoot) {\r\n return\r\n }\r\n var $input = this._input();\r\n if (!$input.length) {\r\n throw errors.Error(\"E1010\")\r\n }\r\n this._integrateInput();\r\n isFocused && eventsEngine.trigger($input, \"focus\")\r\n }\r\n });\r\n this._attachWrapperContent($container)\r\n },\r\n _detachWrapperContent() {\r\n var _this$_$submitElement, _this$_$beforeButtons, _this$_$afterButtonsC;\r\n var useHiddenSubmitElement = this.option(\"useHiddenSubmitElement\");\r\n useHiddenSubmitElement && (null === (_this$_$submitElement = this._$submitElement) || void 0 === _this$_$submitElement ? void 0 : _this$_$submitElement.detach());\r\n var beforeButtonsContainerParent = null === (_this$_$beforeButtons = this._$beforeButtonsContainer) || void 0 === _this$_$beforeButtons ? void 0 : _this$_$beforeButtons[0].parentNode;\r\n var afterButtonsContainerParent = null === (_this$_$afterButtonsC = this._$afterButtonsContainer) || void 0 === _this$_$afterButtonsC ? void 0 : _this$_$afterButtonsC[0].parentNode;\r\n null === beforeButtonsContainerParent || void 0 === beforeButtonsContainerParent ? void 0 : beforeButtonsContainerParent.removeChild(this._$beforeButtonsContainer[0]);\r\n null === afterButtonsContainerParent || void 0 === afterButtonsContainerParent ? void 0 : afterButtonsContainerParent.removeChild(this._$afterButtonsContainer[0])\r\n },\r\n _attachWrapperContent($container) {\r\n var _this$_$submitElement2;\r\n var useHiddenSubmitElement = this.option(\"useHiddenSubmitElement\");\r\n $container.prepend(this._$beforeButtonsContainer);\r\n useHiddenSubmitElement && (null === (_this$_$submitElement2 = this._$submitElement) || void 0 === _this$_$submitElement2 ? void 0 : _this$_$submitElement2.appendTo($container));\r\n $container.append(this._$afterButtonsContainer)\r\n },\r\n _refreshButtonsContainer() {\r\n this._$buttonsContainer = this.$element().children().eq(0)\r\n },\r\n _integrateInput: function() {\r\n this._renderFocusState();\r\n this._refreshValueChangeEvent();\r\n this._refreshEvents();\r\n this._refreshEmptinessEvent()\r\n },\r\n _refreshEmptinessEvent: function() {\r\n eventsEngine.off(this._input(), \"input blur\", this._toggleEmptinessEventHandler);\r\n this._renderEmptinessEvent()\r\n },\r\n _fieldRenderData: function() {\r\n return this.option(\"value\")\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n dropDownButton: new FunctionTemplate((function(options) {\r\n var $icon = $(\"<div>\").addClass(DROP_DOWN_EDITOR_BUTTON_ICON);\r\n $(options.container).append($icon)\r\n }))\r\n });\r\n this.callBase()\r\n },\r\n _renderOpenHandler: function() {\r\n var $inputWrapper = this._inputWrapper();\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var openOnFieldClick = this.option(\"openOnFieldClick\");\r\n eventsEngine.off($inputWrapper, eventName);\r\n eventsEngine.on($inputWrapper, eventName, this._getInputClickHandler(openOnFieldClick));\r\n this.$element().toggleClass(DROP_DOWN_EDITOR_FIELD_CLICKABLE, openOnFieldClick);\r\n if (openOnFieldClick) {\r\n this._openOnFieldClickAction = this._createAction(this._openHandler.bind(this))\r\n }\r\n },\r\n _attachFocusOutHandler: function() {\r\n if (isIOs) {\r\n this._detachFocusOutEvents();\r\n eventsEngine.on(this._inputWrapper(), addNamespace(\"focusout\", this.NAME), event => {\r\n var newTarget = event.relatedTarget;\r\n if (newTarget && this.option(\"opened\")) {\r\n var isNewTargetOutside = this._isTargetOutOfComponent(newTarget);\r\n if (isNewTargetOutside) {\r\n this.close()\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _isTargetOutOfComponent: function(newTarget) {\r\n var popupWrapper = this.content ? $(this.content()).closest(\".\".concat(DROP_DOWN_EDITOR_OVERLAY)) : this._$popup;\r\n var isTargetOutsidePopup = 0 === $(newTarget).closest(\".\".concat(DROP_DOWN_EDITOR_OVERLAY), popupWrapper).length;\r\n return isTargetOutsidePopup\r\n },\r\n _detachFocusOutEvents: function() {\r\n isIOs && eventsEngine.off(this._inputWrapper(), addNamespace(\"focusout\", this.NAME))\r\n },\r\n _getInputClickHandler: function(openOnFieldClick) {\r\n return openOnFieldClick ? e => {\r\n this._executeOpenAction(e)\r\n } : e => {\r\n this._focusInput()\r\n }\r\n },\r\n _openHandler: function() {\r\n this._toggleOpenState()\r\n },\r\n _executeOpenAction: function(e) {\r\n this._openOnFieldClickAction({\r\n event: e\r\n })\r\n },\r\n _keyboardEventBindingTarget: function() {\r\n return this._input()\r\n },\r\n _focusInput: function() {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"focusStateEnabled\") && !focused(this._input())) {\r\n this._resetCaretPosition();\r\n eventsEngine.trigger(this._input(), \"focus\")\r\n }\r\n return true\r\n },\r\n _resetCaretPosition: function() {\r\n var ignoreEditable = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : false;\r\n var inputElement = this._input().get(0);\r\n if (inputElement) {\r\n var {\r\n value: value\r\n } = inputElement;\r\n var caretPosition = isDefined(value) && (ignoreEditable || this._isEditable()) ? value.length : 0;\r\n this._caret({\r\n start: caretPosition,\r\n end: caretPosition\r\n }, true)\r\n }\r\n },\r\n _isEditable: function() {\r\n return this.option(\"acceptCustomValue\")\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (!this._focusInput()) {\r\n return\r\n }\r\n if (!this.option(\"readOnly\")) {\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n this.option(\"opened\", isVisible)\r\n }\r\n },\r\n _getControlsAria() {\r\n return this._popup && this._popupContentId\r\n },\r\n _renderOpenedState: function() {\r\n var opened = this.option(\"opened\");\r\n if (opened) {\r\n this._createPopup()\r\n }\r\n this.$element().toggleClass(DROP_DOWN_EDITOR_ACTIVE, opened);\r\n this._setPopupOption(\"visible\", opened);\r\n var arias = {\r\n expanded: opened,\r\n controls: this._getControlsAria()\r\n };\r\n this.setAria(arias);\r\n this.setAria(\"owns\", opened ? this._popupContentId : void 0, this.$element())\r\n },\r\n _createPopup: function() {\r\n if (this._$popup) {\r\n return\r\n }\r\n this._$popup = $(\"<div>\").addClass(DROP_DOWN_EDITOR_OVERLAY).appendTo(this.$element());\r\n this._renderPopup();\r\n this._renderPopupContent()\r\n },\r\n _renderPopupContent: noop,\r\n _renderPopup: function() {\r\n var popupConfig = extend(this._popupConfig(), this._options.cache(\"dropDownOptions\"));\r\n delete popupConfig.closeOnOutsideClick;\r\n if (popupConfig.elementAttr && !Object.keys(popupConfig.elementAttr).length) {\r\n delete popupConfig.elementAttr\r\n }\r\n this._popup = this._createComponent(this._$popup, Popup, popupConfig);\r\n this._popup.on({\r\n showing: this._popupShowingHandler.bind(this),\r\n shown: this._popupShownHandler.bind(this),\r\n hiding: this._popupHidingHandler.bind(this),\r\n hidden: this._popupHiddenHandler.bind(this),\r\n contentReady: this._contentReadyHandler.bind(this)\r\n });\r\n this._contentReadyHandler();\r\n this._setPopupContentId(this._popup.$content());\r\n this._bindInnerWidgetOptions(this._popup, \"dropDownOptions\")\r\n },\r\n _setPopupContentId($popupContent) {\r\n this._popupContentId = \"dx-\" + new Guid;\r\n this.setAria(\"id\", this._popupContentId, $popupContent)\r\n },\r\n _contentReadyHandler: noop,\r\n _popupConfig: function() {\r\n return {\r\n onInitialized: this._popupInitializedHandler(),\r\n position: extend(this.option(\"popupPosition\"), {\r\n of: this.$element()\r\n }),\r\n showTitle: this.option(\"dropDownOptions.showTitle\"),\r\n _ignoreFunctionValueDeprecation: true,\r\n width: () => getElementWidth(this.$element()),\r\n height: \"auto\",\r\n shading: false,\r\n hideOnParentScroll: true,\r\n hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e),\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n duration: 0,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n deferRendering: false,\r\n focusStateEnabled: false,\r\n showCloseButton: false,\r\n dragEnabled: false,\r\n toolbarItems: this._getPopupToolbarItems(),\r\n onPositioned: this._popupPositionedHandler.bind(this),\r\n fullScreen: false,\r\n contentTemplate: null,\r\n _wrapperClassExternal: DROP_DOWN_EDITOR_OVERLAY,\r\n _ignorePreventScrollEventsDeprecation: true\r\n }\r\n },\r\n _popupInitializedHandler: function() {\r\n if (!this.option(\"onPopupInitialized\")) {\r\n return null\r\n }\r\n return e => {\r\n this._popupInitializedAction({\r\n popup: e.component\r\n })\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n if (hasWindow() && !this.$element().is(\":visible\")) {\r\n this.close();\r\n return\r\n }\r\n this._updatePopupWidth()\r\n },\r\n _updatePopupWidth: function() {\r\n var popupWidth = getSizeValue(this.option(\"dropDownOptions.width\"));\r\n if (void 0 === popupWidth) {\r\n this._setPopupOption(\"width\", () => getElementWidth(this.$element()))\r\n }\r\n },\r\n _popupPositionedHandler: function(e) {\r\n var _e$position, _e$position$v;\r\n var {\r\n labelMode: labelMode,\r\n stylingMode: stylingMode\r\n } = this.option();\r\n if (!this._popup) {\r\n return\r\n }\r\n var $popupOverlayContent = this._popup.$overlayContent();\r\n var isOverlayFlipped = null === (_e$position = e.position) || void 0 === _e$position ? void 0 : null === (_e$position$v = _e$position.v) || void 0 === _e$position$v ? void 0 : _e$position$v.flip;\r\n var shouldIndentForLabel = \"hidden\" !== labelMode && \"outlined\" === stylingMode;\r\n if (e.position) {\r\n $popupOverlayContent.toggleClass(DROP_DOWN_EDITOR_OVERLAY_FLIPPED, isOverlayFlipped)\r\n }\r\n if (isOverlayFlipped && shouldIndentForLabel && this._label.isVisible()) {\r\n var $label = this._label.$element();\r\n move($popupOverlayContent, {\r\n top: locate($popupOverlayContent).top - parseInt($label.css(\"fontSize\"))\r\n })\r\n }\r\n },\r\n _popupShowingHandler: noop,\r\n _popupHidingHandler: function() {\r\n this.option(\"opened\", false)\r\n },\r\n _popupShownHandler: function() {\r\n var _this$_validationMess;\r\n this._openAction();\r\n null === (_this$_validationMess = this._validationMessage) || void 0 === _this$_validationMess ? void 0 : _this$_validationMess.option(\"positionSide\", this._getValidationMessagePositionSide())\r\n },\r\n _popupHiddenHandler: function() {\r\n var _this$_validationMess2;\r\n this._closeAction();\r\n null === (_this$_validationMess2 = this._validationMessage) || void 0 === _this$_validationMess2 ? void 0 : _this$_validationMess2.option(\"positionSide\", this._getValidationMessagePositionSide())\r\n },\r\n _getValidationMessagePositionSide: function() {\r\n var validationMessagePosition = this.option(\"validationMessagePosition\");\r\n if (\"auto\" !== validationMessagePosition) {\r\n return validationMessagePosition\r\n }\r\n var positionSide = \"bottom\";\r\n if (this._popup && this._popup.option(\"visible\")) {\r\n var {\r\n top: myTop\r\n } = animationPosition.setup(this.$element());\r\n var {\r\n top: popupTop\r\n } = animationPosition.setup(this._popup.$content());\r\n positionSide = myTop + this.option(\"popupPosition\").offset.v > popupTop ? \"bottom\" : \"top\"\r\n }\r\n return positionSide\r\n },\r\n _closeOutsideDropDownHandler: function(_ref) {\r\n var {\r\n target: target\r\n } = _ref;\r\n var $target = $(target);\r\n var dropDownButton = this.getButton(\"dropDown\");\r\n var $dropDownButton = dropDownButton && dropDownButton.$element();\r\n var isInputClicked = !!$target.closest(this.$element()).length;\r\n var isDropDownButtonClicked = !!$target.closest($dropDownButton).length;\r\n var isOutsideClick = !isInputClicked && !isDropDownButtonClicked;\r\n return isOutsideClick\r\n },\r\n _clean: function() {\r\n delete this._openOnFieldClickAction;\r\n if (this._$popup) {\r\n this._$popup.remove();\r\n delete this._$popup;\r\n delete this._popup\r\n }\r\n this.callBase()\r\n },\r\n _setPopupOption: function(optionName, value) {\r\n this._setWidgetOption(\"_popup\", arguments)\r\n },\r\n _validatedOpening: function() {\r\n if (!this.option(\"readOnly\")) {\r\n this._toggleOpenState(true)\r\n }\r\n },\r\n _getPopupToolbarItems: function() {\r\n return \"useButtons\" === this.option(\"applyValueMode\") ? this._popupToolbarItemsConfig() : []\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-done.dx-button\")\r\n },\r\n _getLastPopupElement: function() {\r\n return this._popup.$wrapper().find(\".dx-popup-cancel.dx-button\")\r\n },\r\n _popupElementTabHandler: function(e) {\r\n var $element = $(e.currentTarget);\r\n if (e.shiftKey && $element.is(this._getFirstPopupElement()) || !e.shiftKey && $element.is(this._getLastPopupElement())) {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n e.preventDefault()\r\n }\r\n },\r\n _popupElementEscHandler: function() {\r\n eventsEngine.trigger(this._input(), \"focus\");\r\n this.close()\r\n },\r\n _popupButtonInitializedHandler: function(e) {\r\n e.component.registerKeyHandler(\"tab\", this._popupElementTabHandler.bind(this));\r\n e.component.registerKeyHandler(\"escape\", this._popupElementEscHandler.bind(this))\r\n },\r\n _popupToolbarItemsConfig: function() {\r\n var buttonsConfig = [{\r\n shortcut: \"done\",\r\n options: {\r\n onClick: this._applyButtonHandler.bind(this),\r\n text: this.option(\"applyButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }, {\r\n shortcut: \"cancel\",\r\n options: {\r\n onClick: this._cancelButtonHandler.bind(this),\r\n text: this.option(\"cancelButtonText\"),\r\n onInitialized: this._popupButtonInitializedHandler.bind(this)\r\n }\r\n }];\r\n return this._applyButtonsLocation(buttonsConfig)\r\n },\r\n _applyButtonsLocation: function(buttonsConfig) {\r\n var buttonsLocation = this.option(\"buttonsLocation\");\r\n var resultConfig = buttonsConfig;\r\n if (\"default\" !== buttonsLocation) {\r\n var position = splitPair(buttonsLocation);\r\n each(resultConfig, (function(_, element) {\r\n extend(element, {\r\n toolbar: position[0],\r\n location: position[1]\r\n })\r\n }))\r\n }\r\n return resultConfig\r\n },\r\n _applyButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _cancelButtonHandler: function() {\r\n this.close();\r\n this.option(\"focusStateEnabled\") && this.focus()\r\n },\r\n _popupOptionChanged: function(args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n this._setPopupOption(options);\r\n var optionsKeys = Object.keys(options);\r\n if (-1 !== optionsKeys.indexOf(\"width\") || -1 !== optionsKeys.indexOf(\"height\")) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _renderSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n this._$submitElement = $(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n }\r\n },\r\n _setSubmitValue: function() {\r\n this._getSubmitElement().val(this.option(\"value\"))\r\n },\r\n _getSubmitElement: function() {\r\n if (this.option(\"useHiddenSubmitElement\")) {\r\n return this._$submitElement\r\n } else {\r\n return this.callBase()\r\n }\r\n },\r\n _dispose: function() {\r\n this._detachFocusOutEvents();\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n var _this$_popup;\r\n switch (args.name) {\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();\r\n break;\r\n case \"opened\":\r\n this._renderOpenedState();\r\n break;\r\n case \"onOpened\":\r\n case \"onClosed\":\r\n this._initVisibilityActions();\r\n break;\r\n case \"onPopupInitialized\":\r\n this._initPopupInitializedAction();\r\n break;\r\n case \"fieldTemplate\":\r\n if (isDefined(args.value)) {\r\n this._renderField()\r\n } else {\r\n this._invalidate()\r\n }\r\n break;\r\n case \"acceptCustomValue\":\r\n case \"openOnFieldClick\":\r\n this._invalidate();\r\n break;\r\n case \"dropDownButtonTemplate\":\r\n case \"showDropDownButton\":\r\n this._updateButtons([\"dropDown\"]);\r\n break;\r\n case \"dropDownOptions\":\r\n this._popupOptionChanged(args);\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"));\r\n break;\r\n case \"popupPosition\":\r\n break;\r\n case \"deferRendering\":\r\n if (hasWindow()) {\r\n this._createPopup()\r\n }\r\n break;\r\n case \"applyValueMode\":\r\n case \"applyButtonText\":\r\n case \"cancelButtonText\":\r\n case \"buttonsLocation\":\r\n this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n break;\r\n case \"useHiddenSubmitElement\":\r\n if (this._$submitElement) {\r\n this._$submitElement.remove();\r\n this._$submitElement = void 0\r\n }\r\n this._renderSubmitElement();\r\n break;\r\n case \"rtlEnabled\":\r\n this._updatePopupPosition(args.value);\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n open: function() {\r\n this.option(\"opened\", true)\r\n },\r\n close: function() {\r\n this.option(\"opened\", false)\r\n },\r\n field: function() {\r\n return getPublicElement(this._input())\r\n },\r\n content: function() {\r\n return this._popup ? this._popup.content() : null\r\n }\r\n});\r\nregisterComponent(\"dxDropDownEditor\", DropDownEditor);\r\nexport default DropDownEditor;\r\n","/**\r\n * DevExtreme (esm/events/swipe.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport {\r\n eventData\r\n} from \"./utils/index\";\r\nimport GestureEmitter from \"./gesture/emitter.gesture\";\r\nimport registerEmitter from \"./core/emitter_registrator\";\r\nvar SWIPE_START_EVENT = \"dxswipestart\";\r\nvar SWIPE_EVENT = \"dxswipe\";\r\nvar SWIPE_END_EVENT = \"dxswipeend\";\r\nvar HorizontalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return getWidth(this.getElement())\r\n },\r\n getBounds: function() {\r\n return [this._maxLeftOffset, this._maxRightOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.x - (this._savedEventData && this._savedEventData.x || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.x - this._tickData.x) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar VerticalStrategy = {\r\n defaultItemSizeFunc: function() {\r\n return getHeight(this.getElement())\r\n },\r\n getBounds: function() {\r\n return [this._maxTopOffset, this._maxBottomOffset]\r\n },\r\n calcOffsetRatio: function(e) {\r\n var endEventData = eventData(e);\r\n return (endEventData.y - (this._savedEventData && this._savedEventData.y || 0)) / this._itemSizeFunc().call(this, e)\r\n },\r\n isFastSwipe: function(e) {\r\n var endEventData = eventData(e);\r\n return this.FAST_SWIPE_SPEED_LIMIT * Math.abs(endEventData.y - this._tickData.y) >= endEventData.time - this._tickData.time\r\n }\r\n};\r\nvar STRATEGIES = {\r\n horizontal: HorizontalStrategy,\r\n vertical: VerticalStrategy\r\n};\r\nvar SwipeEmitter = GestureEmitter.inherit({\r\n TICK_INTERVAL: 300,\r\n FAST_SWIPE_SPEED_LIMIT: 10,\r\n ctor: function(element) {\r\n this.callBase(element);\r\n this.direction = \"horizontal\";\r\n this.elastic = true\r\n },\r\n _getStrategy: function() {\r\n return STRATEGIES[this.direction]\r\n },\r\n _defaultItemSizeFunc: function() {\r\n return this._getStrategy().defaultItemSizeFunc.call(this)\r\n },\r\n _itemSizeFunc: function() {\r\n return this.itemSizeFunc || this._defaultItemSizeFunc\r\n },\r\n _init: function(e) {\r\n this._tickData = eventData(e)\r\n },\r\n _start: function(e) {\r\n this._savedEventData = eventData(e);\r\n e = this._fireEvent(SWIPE_START_EVENT, e);\r\n if (!e.cancel) {\r\n this._maxLeftOffset = e.maxLeftOffset;\r\n this._maxRightOffset = e.maxRightOffset;\r\n this._maxTopOffset = e.maxTopOffset;\r\n this._maxBottomOffset = e.maxBottomOffset\r\n }\r\n },\r\n _move: function(e) {\r\n var strategy = this._getStrategy();\r\n var moveEventData = eventData(e);\r\n var offset = strategy.calcOffsetRatio.call(this, e);\r\n offset = this._fitOffset(offset, this.elastic);\r\n if (moveEventData.time - this._tickData.time > this.TICK_INTERVAL) {\r\n this._tickData = moveEventData\r\n }\r\n this._fireEvent(SWIPE_EVENT, e, {\r\n offset: offset\r\n });\r\n if (false !== e.cancelable) {\r\n e.preventDefault()\r\n }\r\n },\r\n _end: function(e) {\r\n var strategy = this._getStrategy();\r\n var offsetRatio = strategy.calcOffsetRatio.call(this, e);\r\n var isFast = strategy.isFastSwipe.call(this, e);\r\n var startOffset = offsetRatio;\r\n var targetOffset = this._calcTargetOffset(offsetRatio, isFast);\r\n startOffset = this._fitOffset(startOffset, this.elastic);\r\n targetOffset = this._fitOffset(targetOffset, false);\r\n this._fireEvent(SWIPE_END_EVENT, e, {\r\n offset: startOffset,\r\n targetOffset: targetOffset\r\n })\r\n },\r\n _fitOffset: function(offset, elastic) {\r\n var strategy = this._getStrategy();\r\n var bounds = strategy.getBounds.call(this);\r\n if (offset < -bounds[0]) {\r\n return elastic ? (-2 * bounds[0] + offset) / 3 : -bounds[0]\r\n }\r\n if (offset > bounds[1]) {\r\n return elastic ? (2 * bounds[1] + offset) / 3 : bounds[1]\r\n }\r\n return offset\r\n },\r\n _calcTargetOffset: function(offsetRatio, isFast) {\r\n var result;\r\n if (isFast) {\r\n result = Math.ceil(Math.abs(offsetRatio));\r\n if (offsetRatio < 0) {\r\n result = -result\r\n }\r\n } else {\r\n result = Math.round(offsetRatio)\r\n }\r\n return result\r\n }\r\n});\r\nregisterEmitter({\r\n emitter: SwipeEmitter,\r\n events: [SWIPE_START_EVENT, SWIPE_EVENT, SWIPE_END_EVENT]\r\n});\r\nexport {\r\n SWIPE_EVENT as swipe, SWIPE_START_EVENT as start, SWIPE_END_EVENT as end\r\n};\r\n","/**\r\n * DevExtreme (esm/events/gesture/swipeable.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../swipe\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace\r\n} from \"../utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n name\r\n} from \"../../core/utils/public_component\";\r\nvar DX_SWIPEABLE = \"dxSwipeable\";\r\nvar SWIPEABLE_CLASS = \"dx-swipeable\";\r\nvar ACTION_TO_EVENT_MAP = {\r\n onStart: swipeEventStart,\r\n onUpdated: swipeEventSwipe,\r\n onEnd: swipeEventEnd,\r\n onCancel: \"dxswipecancel\"\r\n};\r\nvar IMMEDIATE_TIMEOUT = 180;\r\nvar Swipeable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n elastic: true,\r\n immediate: false,\r\n immediateTimeout: IMMEDIATE_TIMEOUT,\r\n direction: \"horizontal\",\r\n itemSizeFunc: null,\r\n onStart: null,\r\n onUpdated: null,\r\n onEnd: null,\r\n onCancel: null\r\n })\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(SWIPEABLE_CLASS);\r\n this._attachEventHandlers()\r\n },\r\n _attachEventHandlers: function() {\r\n this._detachEventHandlers();\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var NAME = this.NAME;\r\n this._createEventData();\r\n each(ACTION_TO_EVENT_MAP, function(actionName, eventName) {\r\n var action = this._createActionByOption(actionName, {\r\n context: this\r\n });\r\n eventName = addNamespace(eventName, NAME);\r\n eventsEngine.on(this.$element(), eventName, this._eventData, (function(e) {\r\n return action({\r\n event: e\r\n })\r\n }))\r\n }.bind(this))\r\n },\r\n _createEventData: function() {\r\n this._eventData = {\r\n elastic: this.option(\"elastic\"),\r\n itemSizeFunc: this.option(\"itemSizeFunc\"),\r\n direction: this.option(\"direction\"),\r\n immediate: this.option(\"immediate\"),\r\n immediateTimeout: this.option(\"immediateTimeout\")\r\n }\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this.$element(), \".\" + DX_SWIPEABLE)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"disabled\":\r\n case \"onStart\":\r\n case \"onUpdated\":\r\n case \"onEnd\":\r\n case \"onCancel\":\r\n case \"elastic\":\r\n case \"immediate\":\r\n case \"itemSizeFunc\":\r\n case \"direction\":\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"rtlEnabled\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nname(Swipeable, DX_SWIPEABLE);\r\nexport default Swipeable;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.navigator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport Button from \"../button\";\r\nimport {\r\n isMaterial\r\n} from \"../themes\";\r\nvar CALENDAR_NAVIGATOR_CLASS = \"dx-calendar-navigator\";\r\nvar CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS = \"dx-calendar-navigator-previous-month\";\r\nvar CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS = \"dx-calendar-navigator-next-month\";\r\nvar CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS = \"dx-calendar-navigator-previous-view\";\r\nvar CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS = \"dx-calendar-navigator-next-view\";\r\nvar CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS = \"dx-calendar-disabled-navigator-link\";\r\nvar CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS = \"dx-calendar-caption-button\";\r\nvar BUTTON_TEXT_CLASS = \"dx-button-text\";\r\nclass Navigator extends Widget {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n onClick: null,\r\n onCaptionClick: null,\r\n type: \"normal\",\r\n stylingMode: \"outlined\",\r\n text: \"\"\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n type: \"default\",\r\n stylingMode: \"text\"\r\n }\r\n }])\r\n }\r\n _init() {\r\n super._init();\r\n this._initActions()\r\n }\r\n _initActions() {\r\n this._clickAction = this._createActionByOption(\"onClick\");\r\n this._captionClickAction = this._createActionByOption(\"onCaptionClick\")\r\n }\r\n _initMarkup() {\r\n super._initMarkup();\r\n this.$element().addClass(CALENDAR_NAVIGATOR_CLASS);\r\n this._renderButtons();\r\n this._renderCaption()\r\n }\r\n _renderButtons() {\r\n var {\r\n rtlEnabled: rtlEnabled,\r\n type: type,\r\n stylingMode: stylingMode\r\n } = this.option();\r\n this._prevButton = this._createComponent($(\"<div>\"), Button, {\r\n focusStateEnabled: false,\r\n icon: rtlEnabled ? \"chevronright\" : \"chevronleft\",\r\n onClick: e => {\r\n this._clickAction({\r\n direction: -1,\r\n event: e\r\n })\r\n },\r\n type: type,\r\n stylingMode: stylingMode,\r\n integrationOptions: {}\r\n });\r\n var $prevButton = this._prevButton.$element().addClass(CALENDAR_NAVIGATOR_PREVIOUS_VIEW_CLASS).addClass(CALENDAR_NAVIGATOR_PREVIOUS_MONTH_CLASS);\r\n this._nextButton = this._createComponent($(\"<div>\"), Button, {\r\n focusStateEnabled: false,\r\n icon: rtlEnabled ? \"chevronleft\" : \"chevronright\",\r\n onClick: e => {\r\n this._clickAction({\r\n direction: 1,\r\n event: e\r\n })\r\n },\r\n type: type,\r\n stylingMode: stylingMode,\r\n integrationOptions: {}\r\n });\r\n var $nextButton = this._nextButton.$element().addClass(CALENDAR_NAVIGATOR_NEXT_VIEW_CLASS).addClass(CALENDAR_NAVIGATOR_NEXT_MONTH_CLASS);\r\n this._caption = this._createComponent($(\"<div>\").addClass(CALENDAR_NAVIGATOR_CAPTION_BUTTON_CLASS), Button, {\r\n focusStateEnabled: false,\r\n onClick: e => {\r\n this._captionClickAction({\r\n event: e\r\n })\r\n },\r\n type: type,\r\n stylingMode: stylingMode,\r\n template: (_, content) => {\r\n var {\r\n text: text\r\n } = this.option();\r\n var viewCaptionTexts = text.split(\" - \");\r\n viewCaptionTexts.forEach(captionText => {\r\n $(content).append($(\"<span>\").addClass(BUTTON_TEXT_CLASS).text(captionText))\r\n })\r\n },\r\n integrationOptions: {}\r\n });\r\n var $caption = this._caption.$element();\r\n this.$element().append($prevButton, $caption, $nextButton)\r\n }\r\n _renderCaption() {\r\n this._caption.option(\"text\", this.option(\"text\"))\r\n }\r\n toggleButton(buttonPrefix, value) {\r\n var buttonName = \"_\" + buttonPrefix + \"Button\";\r\n var button = this[buttonName];\r\n if (button) {\r\n button.option(\"disabled\", value);\r\n button.$element().toggleClass(CALENDAR_NAVIGATOR_DISABLED_LINK_CLASS, value)\r\n }\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"text\":\r\n this._renderCaption();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n}\r\nexport default Navigator;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.base_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport coreDateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n start as hoverStartEventName\r\n} from \"../../events/hover\";\r\nvar {\r\n abstract: abstract\r\n} = Widget;\r\nvar CALENDAR_OTHER_VIEW_CLASS = \"dx-calendar-other-view\";\r\nvar CALENDAR_CELL_CLASS = \"dx-calendar-cell\";\r\nvar CALENDAR_CELL_START_CLASS = \"dx-calendar-cell-start\";\r\nvar CALENDAR_CELL_END_CLASS = \"dx-calendar-cell-end\";\r\nvar CALENDAR_CELL_START_IN_ROW_CLASS = \"dx-calendar-cell-start-in-row\";\r\nvar CALENDAR_CELL_END_IN_ROW_CLASS = \"dx-calendar-cell-end-in-row\";\r\nvar CALENDAR_WEEK_NUMBER_CELL_CLASS = \"dx-calendar-week-number-cell\";\r\nvar CALENDAR_EMPTY_CELL_CLASS = \"dx-calendar-empty-cell\";\r\nvar CALENDAR_TODAY_CLASS = \"dx-calendar-today\";\r\nvar CALENDAR_SELECTED_DATE_CLASS = \"dx-calendar-selected-date\";\r\nvar CALENDAR_CELL_IN_RANGE_CLASS = \"dx-calendar-cell-in-range\";\r\nvar CALENDAR_CELL_RANGE_HOVER_CLASS = \"dx-calendar-cell-range-hover\";\r\nvar CALENDAR_CELL_RANGE_HOVER_START_CLASS = \"dx-calendar-cell-range-hover-start\";\r\nvar CALENDAR_CELL_RANGE_HOVER_END_CLASS = \"dx-calendar-cell-range-hover-end\";\r\nvar CALENDAR_RANGE_START_DATE_CLASS = \"dx-calendar-range-start-date\";\r\nvar CALENDAR_RANGE_END_DATE_CLASS = \"dx-calendar-range-end-date\";\r\nvar CALENDAR_CONTOURED_DATE_CLASS = \"dx-calendar-contoured-date\";\r\nvar NOT_WEEK_CELL_SELECTOR = \"td:not(.\".concat(CALENDAR_WEEK_NUMBER_CELL_CLASS, \")\");\r\nvar CALENDAR_DXCLICK_EVENT_NAME = addNamespace(clickEventName, \"dxCalendar\");\r\nvar CALENDAR_DXHOVERSTART_EVENT_NAME = addNamespace(hoverStartEventName, \"dxCalendar\");\r\nvar CALENDAR_DATE_VALUE_KEY = \"dxDateValueKey\";\r\nvar BaseView = Widget.inherit({\r\n _getViewName: function() {\r\n return \"base\"\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n date: new Date,\r\n focusStateEnabled: false,\r\n cellTemplate: null,\r\n disabledDates: null,\r\n onCellClick: null,\r\n onCellHover: null,\r\n rowCount: 3,\r\n colCount: 4,\r\n allowValueSelection: true,\r\n _todayDate: () => new Date\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderImpl()\r\n },\r\n _renderImpl: function() {\r\n this.$element().append(this._createTable());\r\n this._createDisabledDatesHandler();\r\n this._renderBody();\r\n this._renderContouredDate();\r\n this._renderValue();\r\n this._renderRange();\r\n this._renderEvents()\r\n },\r\n _createTable: function() {\r\n this._$table = $(\"<table>\");\r\n var localizedWidgetName = messageLocalization.format(\"dxCalendar-ariaWidgetName\");\r\n var localizedHotKeysInfo = messageLocalization.format(\"dxCalendar-ariaHotKeysInfo\");\r\n this.setAria({\r\n label: \"\".concat(localizedWidgetName, \". \").concat(localizedHotKeysInfo),\r\n role: \"grid\"\r\n }, this._$table);\r\n return this._$table\r\n },\r\n _renderBody: function() {\r\n this.$body = $(\"<tbody>\").appendTo(this._$table);\r\n var rowData = {\r\n cellDate: this._getFirstCellData(),\r\n prevCellDate: null\r\n };\r\n for (var rowIndex = 0, rowCount = this.option(\"rowCount\"); rowIndex < rowCount; rowIndex++) {\r\n rowData.row = this._createRow();\r\n for (var colIndex = 0, colCount = this.option(\"colCount\"); colIndex < colCount; colIndex++) {\r\n this._renderCell(rowData, colIndex)\r\n }\r\n this._renderWeekNumberCell(rowData)\r\n }\r\n },\r\n _createRow: function() {\r\n var row = domAdapter.createElement(\"tr\");\r\n this.setAria(\"role\", \"row\", $(row));\r\n this.$body.get(0).appendChild(row);\r\n return row\r\n },\r\n _createCell: function(cellDate, cellIndex) {\r\n var cell = domAdapter.createElement(\"td\");\r\n var $cell = $(cell);\r\n cell.className = this._getClassNameByDate(cellDate, cellIndex);\r\n cell.setAttribute(\"data-value\", dateSerialization.serializeDate(cellDate, coreDateUtils.getShortDateFormat()));\r\n elementData(cell, CALENDAR_DATE_VALUE_KEY, cellDate);\r\n this.setAria({\r\n role: \"gridcell\",\r\n label: this.getCellAriaLabel(cellDate)\r\n }, $cell);\r\n return {\r\n cell: cell,\r\n $cell: $cell\r\n }\r\n },\r\n _renderCell: function(params, cellIndex) {\r\n var {\r\n cellDate: cellDate,\r\n prevCellDate: prevCellDate,\r\n row: row\r\n } = params;\r\n if (prevCellDate) {\r\n coreDateUtils.fixTimezoneGap(prevCellDate, cellDate)\r\n }\r\n params.prevCellDate = cellDate;\r\n var {\r\n cell: cell,\r\n $cell: $cell\r\n } = this._createCell(cellDate, cellIndex);\r\n var cellTemplate = this.option(\"cellTemplate\");\r\n $(row).append(cell);\r\n if (cellTemplate) {\r\n cellTemplate.render(this._prepareCellTemplateData(cellDate, cellIndex, $cell))\r\n } else {\r\n cell.innerHTML = this._getCellText(cellDate)\r\n }\r\n params.cellDate = this._getNextCellData(cellDate)\r\n },\r\n _getClassNameByDate: function(cellDate, cellIndex) {\r\n var className = CALENDAR_CELL_CLASS;\r\n if (this._isTodayCell(cellDate)) {\r\n className += \" \".concat(CALENDAR_TODAY_CLASS)\r\n }\r\n if (this._isDateOutOfRange(cellDate) || this.isDateDisabled(cellDate)) {\r\n className += \" \".concat(CALENDAR_EMPTY_CELL_CLASS)\r\n }\r\n if (this._isOtherView(cellDate)) {\r\n className += \" \".concat(CALENDAR_OTHER_VIEW_CLASS)\r\n }\r\n if (\"range\" === this.option(\"selectionMode\")) {\r\n if (0 === cellIndex) {\r\n className += \" \".concat(CALENDAR_CELL_START_IN_ROW_CLASS)\r\n }\r\n if (cellIndex === this.option(\"colCount\") - 1) {\r\n className += \" \".concat(CALENDAR_CELL_END_IN_ROW_CLASS)\r\n }\r\n if (this._isStartDayOfMonth(cellDate)) {\r\n className += \" \".concat(CALENDAR_CELL_START_CLASS)\r\n }\r\n if (this._isEndDayOfMonth(cellDate)) {\r\n className += \" \".concat(CALENDAR_CELL_END_CLASS)\r\n }\r\n }\r\n return className\r\n },\r\n _prepareCellTemplateData: function(cellDate, cellIndex, $cell) {\r\n var isDateCell = cellDate instanceof Date;\r\n var text = isDateCell ? this._getCellText(cellDate) : cellDate;\r\n var date = isDateCell ? cellDate : void 0;\r\n var view = this._getViewName();\r\n return {\r\n model: {\r\n text: text,\r\n date: date,\r\n view: view\r\n },\r\n container: getPublicElement($cell),\r\n index: cellIndex\r\n }\r\n },\r\n _renderEvents: function() {\r\n this._createCellClickAction();\r\n eventsEngine.off(this._$table, CALENDAR_DXCLICK_EVENT_NAME);\r\n eventsEngine.on(this._$table, CALENDAR_DXCLICK_EVENT_NAME, NOT_WEEK_CELL_SELECTOR, e => {\r\n if (!$(e.currentTarget).hasClass(CALENDAR_EMPTY_CELL_CLASS)) {\r\n this._cellClickAction({\r\n event: e,\r\n value: $(e.currentTarget).data(CALENDAR_DATE_VALUE_KEY)\r\n })\r\n }\r\n });\r\n eventsEngine.off(this._$table, CALENDAR_DXHOVERSTART_EVENT_NAME);\r\n if (\"range\" === this.option(\"selectionMode\")) {\r\n this._createCellHoverAction();\r\n eventsEngine.on(this._$table, CALENDAR_DXHOVERSTART_EVENT_NAME, NOT_WEEK_CELL_SELECTOR, e => {\r\n if (!$(e.currentTarget).hasClass(CALENDAR_EMPTY_CELL_CLASS)) {\r\n this._cellHoverAction({\r\n event: e,\r\n value: $(e.currentTarget).data(CALENDAR_DATE_VALUE_KEY)\r\n })\r\n }\r\n })\r\n }\r\n },\r\n _createCellClickAction: function() {\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\")\r\n },\r\n _createCellHoverAction: function() {\r\n this._cellHoverAction = this._createActionByOption(\"onCellHover\")\r\n },\r\n _createDisabledDatesHandler: function() {\r\n var disabledDates = this.option(\"disabledDates\");\r\n this._disabledDatesHandler = Array.isArray(disabledDates) ? this._getDefaultDisabledDatesHandler(disabledDates) : disabledDates || noop\r\n },\r\n _getDefaultDisabledDatesHandler: function(disabledDates) {\r\n return noop\r\n },\r\n _isTodayCell: abstract,\r\n _isDateOutOfRange: abstract,\r\n isDateDisabled: function(cellDate) {\r\n var dateParts = {\r\n date: cellDate,\r\n view: this._getViewName()\r\n };\r\n return this._disabledDatesHandler(dateParts)\r\n },\r\n _isOtherView: abstract,\r\n _isStartDayOfMonth: abstract,\r\n _isEndDayOfMonth: abstract,\r\n _getCellText: abstract,\r\n _getFirstCellData: abstract,\r\n _getNextCellData: abstract,\r\n _renderContouredDate: function(contouredDate) {\r\n if (!this.option(\"focusStateEnabled\")) {\r\n return\r\n }\r\n contouredDate = contouredDate || this.option(\"contouredDate\");\r\n var $oldContouredCell = this._getContouredCell();\r\n var $newContouredCell = this._getCellByDate(contouredDate);\r\n $oldContouredCell.removeClass(CALENDAR_CONTOURED_DATE_CLASS);\r\n if (contouredDate) {\r\n $newContouredCell.addClass(CALENDAR_CONTOURED_DATE_CLASS)\r\n }\r\n },\r\n _getContouredCell: function() {\r\n return this._$table.find(\".\".concat(CALENDAR_CONTOURED_DATE_CLASS))\r\n },\r\n _renderValue: function() {\r\n if (!this.option(\"allowValueSelection\")) {\r\n return\r\n }\r\n var value = this.option(\"value\");\r\n if (!Array.isArray(value)) {\r\n value = [value]\r\n }\r\n this._updateSelectedClass(value)\r\n },\r\n _updateSelectedClass: function(value) {\r\n var _this$_$selectedCells;\r\n if (this._isRangeMode() && !this._isMonthView()) {\r\n return\r\n }\r\n null === (_this$_$selectedCells = this._$selectedCells) || void 0 === _this$_$selectedCells ? void 0 : _this$_$selectedCells.forEach($cell => {\r\n $cell.removeClass(CALENDAR_SELECTED_DATE_CLASS)\r\n });\r\n this._$selectedCells = value.map(value => this._getCellByDate(value));\r\n this._$selectedCells.forEach($cell => {\r\n $cell.addClass(CALENDAR_SELECTED_DATE_CLASS)\r\n })\r\n },\r\n _renderRange: function() {\r\n var _this$_$rangeCells, _this$_$hoveredRangeC, _this$_$rangeStartHov, _this$_$rangeEndHover, _this$_$rangeStartDat, _this$_$rangeEndDateC, _this$_$rangeStartDat2, _this$_$rangeEndDateC2;\r\n var {\r\n allowValueSelection: allowValueSelection,\r\n value: value,\r\n range: range\r\n } = this.option();\r\n if (!allowValueSelection || !this._isRangeMode() || !this._isMonthView()) {\r\n return\r\n }\r\n null === (_this$_$rangeCells = this._$rangeCells) || void 0 === _this$_$rangeCells ? void 0 : _this$_$rangeCells.forEach($cell => {\r\n $cell.removeClass(CALENDAR_CELL_IN_RANGE_CLASS)\r\n });\r\n null === (_this$_$hoveredRangeC = this._$hoveredRangeCells) || void 0 === _this$_$hoveredRangeC ? void 0 : _this$_$hoveredRangeC.forEach($cell => {\r\n $cell.removeClass(CALENDAR_CELL_RANGE_HOVER_CLASS)\r\n });\r\n null === (_this$_$rangeStartHov = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov ? void 0 : _this$_$rangeStartHov.removeClass(CALENDAR_CELL_RANGE_HOVER_START_CLASS);\r\n null === (_this$_$rangeEndHover = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover ? void 0 : _this$_$rangeEndHover.removeClass(CALENDAR_CELL_RANGE_HOVER_END_CLASS);\r\n null === (_this$_$rangeStartDat = this._$rangeStartDateCell) || void 0 === _this$_$rangeStartDat ? void 0 : _this$_$rangeStartDat.removeClass(CALENDAR_RANGE_START_DATE_CLASS);\r\n null === (_this$_$rangeEndDateC = this._$rangeEndDateCell) || void 0 === _this$_$rangeEndDateC ? void 0 : _this$_$rangeEndDateC.removeClass(CALENDAR_RANGE_END_DATE_CLASS);\r\n this._$rangeCells = range.map(value => this._getCellByDate(value));\r\n this._$rangeStartDateCell = this._getCellByDate(value[0]);\r\n this._$rangeEndDateCell = this._getCellByDate(value[1]);\r\n this._$rangeCells.forEach($cell => {\r\n $cell.addClass(CALENDAR_CELL_IN_RANGE_CLASS)\r\n });\r\n null === (_this$_$rangeStartDat2 = this._$rangeStartDateCell) || void 0 === _this$_$rangeStartDat2 ? void 0 : _this$_$rangeStartDat2.addClass(CALENDAR_RANGE_START_DATE_CLASS);\r\n null === (_this$_$rangeEndDateC2 = this._$rangeEndDateCell) || void 0 === _this$_$rangeEndDateC2 ? void 0 : _this$_$rangeEndDateC2.addClass(CALENDAR_RANGE_END_DATE_CLASS)\r\n },\r\n _renderHoveredRange() {\r\n var _this$_$hoveredRangeC2, _this$_$rangeStartHov2, _this$_$rangeEndHover2, _this$_$rangeStartHov3, _this$_$rangeEndHover3;\r\n var {\r\n allowValueSelection: allowValueSelection,\r\n hoveredRange: hoveredRange\r\n } = this.option();\r\n if (!allowValueSelection || !this._isRangeMode() || !this._isMonthView()) {\r\n return\r\n }\r\n null === (_this$_$hoveredRangeC2 = this._$hoveredRangeCells) || void 0 === _this$_$hoveredRangeC2 ? void 0 : _this$_$hoveredRangeC2.forEach($cell => {\r\n $cell.removeClass(CALENDAR_CELL_RANGE_HOVER_CLASS)\r\n });\r\n null === (_this$_$rangeStartHov2 = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov2 ? void 0 : _this$_$rangeStartHov2.removeClass(CALENDAR_CELL_RANGE_HOVER_START_CLASS);\r\n null === (_this$_$rangeEndHover2 = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover2 ? void 0 : _this$_$rangeEndHover2.removeClass(CALENDAR_CELL_RANGE_HOVER_END_CLASS);\r\n this._$hoveredRangeCells = hoveredRange.map(value => this._getCellByDate(value));\r\n this._$rangeStartHoverCell = this._getCellByDate(hoveredRange[0]);\r\n this._$rangeEndHoverCell = this._getCellByDate(hoveredRange[hoveredRange.length - 1]);\r\n this._$hoveredRangeCells.forEach($cell => {\r\n $cell.addClass(CALENDAR_CELL_RANGE_HOVER_CLASS)\r\n });\r\n null === (_this$_$rangeStartHov3 = this._$rangeStartHoverCell) || void 0 === _this$_$rangeStartHov3 ? void 0 : _this$_$rangeStartHov3.addClass(CALENDAR_CELL_RANGE_HOVER_START_CLASS);\r\n null === (_this$_$rangeEndHover3 = this._$rangeEndHoverCell) || void 0 === _this$_$rangeEndHover3 ? void 0 : _this$_$rangeEndHover3.addClass(CALENDAR_CELL_RANGE_HOVER_END_CLASS)\r\n },\r\n _isMonthView: function() {\r\n return \"month\" === this.option(\"zoomLevel\")\r\n },\r\n _isRangeMode: function() {\r\n return \"range\" === this.option(\"selectionMode\")\r\n },\r\n getCellAriaLabel: function(date) {\r\n return this._getCellText(date)\r\n },\r\n _getFirstAvailableDate: function() {\r\n var date = this.option(\"date\");\r\n var min = this.option(\"min\");\r\n date = coreDateUtils.getViewFirstCellDate(this._getViewName(), date);\r\n return new Date(min && date < min ? min : date)\r\n },\r\n _getCellByDate: abstract,\r\n isBoundary: abstract,\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"value\":\r\n this._renderValue();\r\n break;\r\n case \"range\":\r\n this._renderRange();\r\n break;\r\n case \"hoveredRange\":\r\n this._renderHoveredRange();\r\n break;\r\n case \"contouredDate\":\r\n this._renderContouredDate(value);\r\n break;\r\n case \"onCellClick\":\r\n this._createCellClickAction();\r\n break;\r\n case \"onCellHover\":\r\n this._createCellHoverAction();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n case \"disabledDates\":\r\n case \"cellTemplate\":\r\n case \"selectionMode\":\r\n this._invalidate();\r\n break;\r\n case \"_todayDate\":\r\n this._renderBody();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default BaseView;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.views.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport BaseView from \"./ui.calendar.base_view\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nvar CALENDAR_OTHER_MONTH_CLASS = \"dx-calendar-other-month\";\r\nvar CALENDAR_OTHER_VIEW_CLASS = \"dx-calendar-other-view\";\r\nvar CALENDAR_WEEK_NUMBER_CELL_CLASS = \"dx-calendar-week-number-cell\";\r\nvar Views = {\r\n month: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"month\"\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n firstDayOfWeek: 0,\r\n rowCount: 6,\r\n colCount: 7\r\n })\r\n },\r\n _renderImpl: function() {\r\n this.callBase();\r\n this._renderHeader()\r\n },\r\n _renderBody: function() {\r\n this.callBase();\r\n this._$table.find(\".\".concat(CALENDAR_OTHER_VIEW_CLASS)).addClass(CALENDAR_OTHER_MONTH_CLASS)\r\n },\r\n _renderFocusTarget: noop,\r\n getCellAriaLabel: function(date) {\r\n return dateLocalization.format(date, \"longdate\")\r\n },\r\n _renderHeader: function() {\r\n var $headerRow = $(\"<tr>\");\r\n var $header = $(\"<thead>\").append($headerRow);\r\n this._$table.prepend($header);\r\n for (var colIndex = 0, colCount = this.option(\"colCount\"); colIndex < colCount; colIndex++) {\r\n this._renderHeaderCell(colIndex, $headerRow)\r\n }\r\n if (this.option(\"showWeekNumbers\")) {\r\n this._renderWeekHeaderCell($headerRow)\r\n }\r\n },\r\n _renderHeaderCell: function(cellIndex, $headerRow) {\r\n var {\r\n firstDayOfWeek: firstDayOfWeek\r\n } = this.option();\r\n var {\r\n full: fullCaption,\r\n abbreviated: abbrCaption\r\n } = this._getDayCaption(firstDayOfWeek + cellIndex);\r\n var $cell = $(\"<th>\").attr({\r\n scope: \"col\",\r\n abbr: fullCaption\r\n }).text(abbrCaption);\r\n $headerRow.append($cell)\r\n },\r\n _renderWeekHeaderCell: function($headerRow) {\r\n var $weekNumberHeaderCell = $(\"<th>\").attr({\r\n scope: \"col\",\r\n abbr: \"WeekNumber\",\r\n class: \"dx-week-number-header\"\r\n });\r\n $headerRow.prepend($weekNumberHeaderCell)\r\n },\r\n _renderWeekNumberCell: function(rowData) {\r\n var {\r\n showWeekNumbers: showWeekNumbers,\r\n cellTemplate: cellTemplate\r\n } = this.option();\r\n if (!showWeekNumbers) {\r\n return\r\n }\r\n var weekNumber = this._getWeekNumber(rowData.prevCellDate);\r\n var cell = domAdapter.createElement(\"td\");\r\n var $cell = $(cell);\r\n cell.className = CALENDAR_WEEK_NUMBER_CELL_CLASS;\r\n if (cellTemplate) {\r\n cellTemplate.render(this._prepareCellTemplateData(weekNumber, -1, $cell))\r\n } else {\r\n cell.innerHTML = weekNumber\r\n }\r\n rowData.row.prepend(cell);\r\n this.setAria({\r\n role: \"gridcell\",\r\n label: \"Week \".concat(weekNumber)\r\n }, $cell)\r\n },\r\n _getWeekNumber: function(date) {\r\n var {\r\n weekNumberRule: weekNumberRule,\r\n firstDayOfWeek: firstDayOfWeek\r\n } = this.option();\r\n if (\"auto\" === weekNumberRule) {\r\n return dateUtils.getWeekNumber(date, firstDayOfWeek, 1 === firstDayOfWeek ? \"firstFourDays\" : \"firstDay\")\r\n }\r\n return dateUtils.getWeekNumber(date, firstDayOfWeek, weekNumberRule)\r\n },\r\n getNavigatorCaption: function() {\r\n return dateLocalization.format(this.option(\"date\"), \"monthandyear\")\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameDate(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n var minDate = this.option(\"min\");\r\n var maxDate = this.option(\"max\");\r\n return !dateUtils.dateInRange(cellDate, minDate, maxDate, \"date\")\r\n },\r\n _isOtherView: function(cellDate) {\r\n return cellDate.getMonth() !== this.option(\"date\").getMonth()\r\n },\r\n _isStartDayOfMonth: function(cellDate) {\r\n return dateUtils.sameDate(cellDate, dateUtils.getFirstMonthDate(this.option(\"date\")))\r\n },\r\n _isEndDayOfMonth: function(cellDate) {\r\n return dateUtils.sameDate(cellDate, dateUtils.getLastMonthDate(this.option(\"date\")))\r\n },\r\n _getCellText: function(cellDate) {\r\n return dateLocalization.format(cellDate, \"d\")\r\n },\r\n _getDayCaption: function(day) {\r\n var daysInWeek = this.option(\"colCount\");\r\n var dayIndex = day % daysInWeek;\r\n return {\r\n full: dateLocalization.getDayNames()[dayIndex],\r\n abbreviated: dateLocalization.getDayNames(\"abbreviated\")[dayIndex]\r\n }\r\n },\r\n _getFirstCellData: function() {\r\n var {\r\n firstDayOfWeek: firstDayOfWeek\r\n } = this.option();\r\n var firstDay = dateUtils.getFirstMonthDate(this.option(\"date\"));\r\n var firstMonthDayOffset = firstDayOfWeek - firstDay.getDay();\r\n var daysInWeek = this.option(\"colCount\");\r\n if (firstMonthDayOffset >= 0) {\r\n firstMonthDayOffset -= daysInWeek\r\n }\r\n firstDay.setDate(firstDay.getDate() + firstMonthDayOffset);\r\n return firstDay\r\n },\r\n _getNextCellData: function(date) {\r\n date = new Date(date);\r\n date.setDate(date.getDate() + 1);\r\n return date\r\n },\r\n _getCellByDate: function(date) {\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(date, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameMonthAndYear(date, this.option(\"min\")) || dateUtils.sameMonthAndYear(date, this.option(\"max\"))\r\n },\r\n _getDefaultDisabledDatesHandler: function(disabledDates) {\r\n return function(args) {\r\n var isDisabledDate = disabledDates.some((function(item) {\r\n return dateUtils.sameDate(item, args.date)\r\n }));\r\n if (isDisabledDate) {\r\n return true\r\n }\r\n }\r\n }\r\n }),\r\n year: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"year\"\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameMonthAndYear(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n return !dateUtils.dateInRange(cellDate, dateUtils.getFirstMonthDate(this.option(\"min\")), dateUtils.getLastMonthDate(this.option(\"max\")))\r\n },\r\n _isOtherView: function() {\r\n return false\r\n },\r\n _isStartDayOfMonth: function() {\r\n return false\r\n },\r\n _isEndDayOfMonth: function() {\r\n return false\r\n },\r\n _getCellText: function(cellDate) {\r\n return dateLocalization.getMonthNames(\"abbreviated\")[cellDate.getMonth()]\r\n },\r\n _getFirstCellData: function() {\r\n var currentDate = this.option(\"date\");\r\n var data = new Date(currentDate);\r\n data.setDate(1);\r\n data.setMonth(0);\r\n return data\r\n },\r\n _getNextCellData: function(date) {\r\n date = new Date(date);\r\n date.setMonth(date.getMonth() + 1);\r\n return date\r\n },\r\n _getCellByDate: function(date) {\r\n var foundDate = new Date(date);\r\n foundDate.setDate(1);\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(foundDate, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n getCellAriaLabel: function(date) {\r\n return dateLocalization.format(date, \"monthandyear\")\r\n },\r\n getNavigatorCaption: function() {\r\n return dateLocalization.format(this.option(\"date\"), \"yyyy\")\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameYear(date, this.option(\"min\")) || dateUtils.sameYear(date, this.option(\"max\"))\r\n },\r\n _renderWeekNumberCell: noop\r\n }),\r\n decade: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"decade\"\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameYear(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n return !dateUtils.dateInRange(cellDate.getFullYear(), min && min.getFullYear(), max && max.getFullYear())\r\n },\r\n _isOtherView: function(cellDate) {\r\n var date = new Date(cellDate);\r\n date.setMonth(1);\r\n return !dateUtils.sameDecade(date, this.option(\"date\"))\r\n },\r\n _isStartDayOfMonth: function() {\r\n return false\r\n },\r\n _isEndDayOfMonth: function() {\r\n return false\r\n },\r\n _getCellText: function(cellDate) {\r\n return dateLocalization.format(cellDate, \"yyyy\")\r\n },\r\n _getFirstCellData: function() {\r\n var year = dateUtils.getFirstYearInDecade(this.option(\"date\")) - 1;\r\n return dateUtils.createDateWithFullYear(year, 0, 1)\r\n },\r\n _getNextCellData: function(date) {\r\n date = new Date(date);\r\n date.setFullYear(date.getFullYear() + 1);\r\n return date\r\n },\r\n getNavigatorCaption: function() {\r\n var currentDate = this.option(\"date\");\r\n var firstYearInDecade = dateUtils.getFirstYearInDecade(currentDate);\r\n var startDate = new Date(currentDate);\r\n var endDate = new Date(currentDate);\r\n startDate.setFullYear(firstYearInDecade);\r\n endDate.setFullYear(firstYearInDecade + 9);\r\n return dateLocalization.format(startDate, \"yyyy\") + \"-\" + dateLocalization.format(endDate, \"yyyy\")\r\n },\r\n _isValueOnCurrentView: function(currentDate, value) {\r\n return dateUtils.sameDecade(currentDate, value)\r\n },\r\n _getCellByDate: function(date) {\r\n var foundDate = new Date(date);\r\n foundDate.setDate(1);\r\n foundDate.setMonth(0);\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(foundDate, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameDecade(date, this.option(\"min\")) || dateUtils.sameDecade(date, this.option(\"max\"))\r\n },\r\n _renderWeekNumberCell: noop\r\n }),\r\n century: BaseView.inherit({\r\n _getViewName: function() {\r\n return \"century\"\r\n },\r\n _isTodayCell: function(cellDate) {\r\n var today = this.option(\"_todayDate\")();\r\n return dateUtils.sameDecade(cellDate, today)\r\n },\r\n _isDateOutOfRange: function(cellDate) {\r\n var decade = dateUtils.getFirstYearInDecade(cellDate);\r\n var minDecade = dateUtils.getFirstYearInDecade(this.option(\"min\"));\r\n var maxDecade = dateUtils.getFirstYearInDecade(this.option(\"max\"));\r\n return !dateUtils.dateInRange(decade, minDecade, maxDecade)\r\n },\r\n _isOtherView: function(cellDate) {\r\n var date = new Date(cellDate);\r\n date.setMonth(1);\r\n return !dateUtils.sameCentury(date, this.option(\"date\"))\r\n },\r\n _isStartDayOfMonth: function() {\r\n return false\r\n },\r\n _isEndDayOfMonth: function() {\r\n return false\r\n },\r\n _getCellText: function(cellDate) {\r\n var startDate = dateLocalization.format(cellDate, \"yyyy\");\r\n var endDate = new Date(cellDate);\r\n endDate.setFullYear(endDate.getFullYear() + 9);\r\n return startDate + \" - \" + dateLocalization.format(endDate, \"yyyy\")\r\n },\r\n _getFirstCellData: function() {\r\n var decade = dateUtils.getFirstDecadeInCentury(this.option(\"date\")) - 10;\r\n return dateUtils.createDateWithFullYear(decade, 0, 1)\r\n },\r\n _getNextCellData: function(date) {\r\n date = new Date(date);\r\n date.setFullYear(date.getFullYear() + 10);\r\n return date\r\n },\r\n _getCellByDate: function(date) {\r\n var foundDate = new Date(date);\r\n foundDate.setDate(1);\r\n foundDate.setMonth(0);\r\n foundDate.setFullYear(dateUtils.getFirstYearInDecade(foundDate));\r\n return this._$table.find(\"td[data-value='\".concat(dateSerialization.serializeDate(foundDate, dateUtils.getShortDateFormat()), \"']\"))\r\n },\r\n getNavigatorCaption: function() {\r\n var currentDate = this.option(\"date\");\r\n var firstDecadeInCentury = dateUtils.getFirstDecadeInCentury(currentDate);\r\n var startDate = new Date(currentDate);\r\n var endDate = new Date(currentDate);\r\n startDate.setFullYear(firstDecadeInCentury);\r\n endDate.setFullYear(firstDecadeInCentury + 99);\r\n return dateLocalization.format(startDate, \"yyyy\") + \"-\" + dateLocalization.format(endDate, \"yyyy\")\r\n },\r\n isBoundary: function(date) {\r\n return dateUtils.sameCentury(date, this.option(\"min\")) || dateUtils.sameCentury(date, this.option(\"max\"))\r\n },\r\n _renderWeekNumberCell: noop\r\n })\r\n};\r\nexport default Views;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.selection.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nclass CalendarSelectionStrategy {\r\n constructor(component) {\r\n this.calendar = component\r\n }\r\n dateOption(optionName) {\r\n return this.calendar._dateOption(optionName)\r\n }\r\n dateValue(value, e) {\r\n this.calendar._dateValue(value, e)\r\n }\r\n skipNavigate() {\r\n this.calendar._skipNavigate = true\r\n }\r\n updateAriaSelected(value, previousValue) {\r\n this.calendar._updateAriaSelected(value, previousValue);\r\n if (value[0] && this.calendar.option(\"currentDate\").getTime() === value[0].getTime()) {\r\n this.calendar._updateAriaId(value[0])\r\n }\r\n }\r\n processValueChanged(value, previousValue) {\r\n var _value, _previousValue;\r\n value = (null === (_value = value) || void 0 === _value ? void 0 : _value.map(item => this._convertToDate(item))) || [];\r\n previousValue = (null === (_previousValue = previousValue) || void 0 === _previousValue ? void 0 : _previousValue.map(item => this._convertToDate(item))) || [];\r\n this._updateViewsValue(value);\r\n this.updateAriaSelected(value, previousValue);\r\n if (!this._currentDateChanged) {\r\n this.calendar._initCurrentDate()\r\n }\r\n this._currentDateChanged = false\r\n }\r\n _getLowestDateInArray(dates) {\r\n if (dates.length) {\r\n return new Date(Math.min(...dates))\r\n }\r\n }\r\n _convertToDate(value) {\r\n return this.calendar._convertToDate(value)\r\n }\r\n _isMaxZoomLevel() {\r\n return this.calendar._isMaxZoomLevel()\r\n }\r\n _updateViewsOption(optionName, optionValue) {\r\n this.calendar._updateViewsOption(optionName, optionValue)\r\n }\r\n _updateViewsValue(value) {\r\n this._updateViewsOption(\"value\", value)\r\n }\r\n _updateCurrentDate(value) {\r\n this.calendar.option(\"currentDate\", null !== value && void 0 !== value ? value : new Date)\r\n }\r\n}\r\nexport default CalendarSelectionStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.single.selection.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport CalendarSelectionStrategy from \"./ui.calendar.selection.strategy\";\r\nclass CalendarSingleSelectionStrategy extends CalendarSelectionStrategy {\r\n constructor(component) {\r\n super(component);\r\n this.NAME = \"SingleSelection\"\r\n }\r\n getViewOptions() {\r\n return {\r\n value: this.dateOption(\"value\"),\r\n range: [],\r\n selectionMode: \"single\"\r\n }\r\n }\r\n selectValue(selectedValue, e) {\r\n this.skipNavigate();\r\n this.dateValue(selectedValue, e)\r\n }\r\n updateAriaSelected(value, previousValue) {\r\n var _value, _previousValue;\r\n null !== (_value = value) && void 0 !== _value ? _value : value = [this.dateOption(\"value\")];\r\n null !== (_previousValue = previousValue) && void 0 !== _previousValue ? _previousValue : previousValue = [];\r\n super.updateAriaSelected(value, previousValue)\r\n }\r\n getDefaultCurrentDate() {\r\n return this.dateOption(\"value\")\r\n }\r\n _updateViewsValue(value) {\r\n this._updateViewsOption(\"value\", value[0])\r\n }\r\n}\r\nexport default CalendarSingleSelectionStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.multi.selection.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport CalendarSelectionStrategy from \"./ui.calendar.selection.strategy\";\r\nclass CalendarMultiSelectionStrategy extends CalendarSelectionStrategy {\r\n constructor(component) {\r\n super(component);\r\n this.NAME = \"MultiSelection\"\r\n }\r\n getViewOptions() {\r\n return {\r\n value: this.dateOption(\"values\"),\r\n range: [],\r\n selectionMode: \"multi\"\r\n }\r\n }\r\n selectValue(selectedValue, e) {\r\n var values = [...this.dateOption(\"values\")];\r\n var alreadySelectedIndex = values.findIndex(date => (null === date || void 0 === date ? void 0 : date.toDateString()) === selectedValue.toDateString());\r\n if (alreadySelectedIndex > -1) {\r\n values.splice(alreadySelectedIndex, 1)\r\n } else {\r\n values.push(selectedValue)\r\n }\r\n this.skipNavigate();\r\n this._updateCurrentDate(selectedValue);\r\n this._currentDateChanged = true;\r\n this.dateValue(values, e)\r\n }\r\n updateAriaSelected(value, previousValue) {\r\n var _value, _previousValue;\r\n null !== (_value = value) && void 0 !== _value ? _value : value = this.dateOption(\"values\");\r\n null !== (_previousValue = previousValue) && void 0 !== _previousValue ? _previousValue : previousValue = [];\r\n super.updateAriaSelected(value, previousValue)\r\n }\r\n getDefaultCurrentDate() {\r\n var dates = this.dateOption(\"values\").filter(value => value);\r\n return this._getLowestDateInArray(dates)\r\n }\r\n}\r\nexport default CalendarMultiSelectionStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.range.selection.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport CalendarSelectionStrategy from \"./ui.calendar.selection.strategy\";\r\nvar DAY_INTERVAL = 864e5;\r\nvar RANGE_OFFSET = 120 * DAY_INTERVAL;\r\nclass CalendarRangeSelectionStrategy extends CalendarSelectionStrategy {\r\n constructor(component) {\r\n super(component);\r\n this.NAME = \"RangeSelection\"\r\n }\r\n getViewOptions() {\r\n var value = this._getValues();\r\n var range = this._getDaysInRange(value[0], value[1]);\r\n return {\r\n value: value,\r\n range: range,\r\n selectionMode: \"range\",\r\n onCellHover: this._cellHoverHandler.bind(this)\r\n }\r\n }\r\n selectValue(selectedValue, e) {\r\n var [startDate, endDate] = this._getValues();\r\n this.skipNavigate();\r\n this._updateCurrentDate(selectedValue);\r\n this._currentDateChanged = true;\r\n if (true === this.calendar.option(\"_allowChangeSelectionOrder\")) {\r\n this.calendar._valueSelected = true;\r\n if (\"startDate\" === this.calendar.option(\"_currentSelection\")) {\r\n if (this.calendar._convertToDate(selectedValue) > this.calendar._convertToDate(endDate)) {\r\n this.dateValue([selectedValue, null], e)\r\n } else {\r\n this.dateValue([selectedValue, endDate], e)\r\n }\r\n } else if (this.calendar._convertToDate(selectedValue) >= this.calendar._convertToDate(startDate)) {\r\n this.dateValue([startDate, selectedValue], e)\r\n } else {\r\n this.dateValue([selectedValue, null], e)\r\n }\r\n } else if (!startDate || endDate) {\r\n this.dateValue([selectedValue, null], e)\r\n } else {\r\n this.dateValue(startDate < selectedValue ? [startDate, selectedValue] : [selectedValue, startDate], e)\r\n }\r\n }\r\n updateAriaSelected(value, previousValue) {\r\n var _value, _previousValue;\r\n null !== (_value = value) && void 0 !== _value ? _value : value = this._getValues();\r\n null !== (_previousValue = previousValue) && void 0 !== _previousValue ? _previousValue : previousValue = [];\r\n super.updateAriaSelected(value, previousValue)\r\n }\r\n processValueChanged(value, previousValue) {\r\n super.processValueChanged(value, previousValue);\r\n var range = this._getRange();\r\n this._updateViewsOption(\"range\", range)\r\n }\r\n getDefaultCurrentDate() {\r\n var {\r\n _allowChangeSelectionOrder: _allowChangeSelectionOrder,\r\n _currentSelection: _currentSelection\r\n } = this.calendar.option();\r\n var values = this.dateOption(\"values\");\r\n if (_allowChangeSelectionOrder) {\r\n if (\"startDate\" === _currentSelection && values[0]) {\r\n return values[0]\r\n }\r\n if (\"endDate\" === _currentSelection && values[1]) {\r\n return values[1]\r\n }\r\n }\r\n var dates = values.filter(value => value);\r\n return this._getLowestDateInArray(dates)\r\n }\r\n _getValues() {\r\n var values = this.dateOption(\"values\");\r\n if (!values.length) {\r\n return values\r\n }\r\n var [startDate, endDate] = values;\r\n if (startDate && endDate && startDate > endDate) {\r\n [startDate, endDate] = [endDate, startDate]\r\n }\r\n return [startDate, endDate]\r\n }\r\n _getRange() {\r\n var [startDate, endDate] = this._getValues();\r\n return this._getDaysInRange(startDate, endDate)\r\n }\r\n _getDaysInRange(startDate, endDate) {\r\n if (!startDate || !endDate) {\r\n return []\r\n }\r\n var currentDate = this.calendar.option(\"currentDate\").getTime();\r\n var rangeStartDate = new Date(Math.max(currentDate - RANGE_OFFSET, startDate));\r\n var rangeEndDate = new Date(Math.min(currentDate + RANGE_OFFSET, endDate));\r\n return [...dateUtils.getDatesOfInterval(rangeStartDate, rangeEndDate, DAY_INTERVAL), rangeEndDate]\r\n }\r\n _cellHoverHandler(e) {\r\n var isMaxZoomLevel = this._isMaxZoomLevel();\r\n var [startDate, endDate] = this._getValues();\r\n var {\r\n _allowChangeSelectionOrder: _allowChangeSelectionOrder,\r\n _currentSelection: _currentSelection\r\n } = this.calendar.option();\r\n if (isMaxZoomLevel) {\r\n var skipHoveredRange = _allowChangeSelectionOrder && \"startDate\" === _currentSelection;\r\n if (startDate && !endDate && !skipHoveredRange) {\r\n if (e.value > startDate) {\r\n this._updateViewsOption(\"hoveredRange\", this._getDaysInRange(startDate, e.value));\r\n return\r\n }\r\n } else if (!startDate && endDate && !(_allowChangeSelectionOrder && \"endDate\" === _currentSelection)) {\r\n if (e.value < endDate) {\r\n this._updateViewsOption(\"hoveredRange\", this._getDaysInRange(e.value, endDate));\r\n return\r\n }\r\n } else if (startDate && endDate) {\r\n if (\"startDate\" === _currentSelection && e.value < startDate) {\r\n this._updateViewsOption(\"hoveredRange\", this._getDaysInRange(e.value, startDate));\r\n return\r\n } else if (\"endDate\" === _currentSelection && e.value > endDate) {\r\n this._updateViewsOption(\"hoveredRange\", this._getDaysInRange(endDate, e.value));\r\n return\r\n }\r\n }\r\n this._updateViewsOption(\"hoveredRange\", [])\r\n }\r\n }\r\n}\r\nexport default CalendarRangeSelectionStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/calendar/ui.calendar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isNumeric,\r\n isString,\r\n isFunction,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n inRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Button from \"../button\";\r\nimport Editor from \"../editor/editor\";\r\nimport Swipeable from \"../../events/gesture/swipeable\";\r\nimport Navigator from \"./ui.calendar.navigator\";\r\nimport Views from \"./ui.calendar.views\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport devices from \"../../core/devices\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../core/templates/function_template\";\r\nimport {\r\n isCommandKeyPressed,\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport CalendarSingleSelectionStrategy from \"./ui.calendar.single.selection.strategy\";\r\nimport CalendarMultiSelectionStrategy from \"./ui.calendar.multi.selection.strategy\";\r\nimport CalendarRangeSelectionStrategy from \"./ui.calendar.range.selection.strategy\";\r\nimport {\r\n end as hoverEndEventName\r\n} from \"../../events/hover\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nvar CALENDAR_CLASS = \"dx-calendar\";\r\nvar CALENDAR_BODY_CLASS = \"dx-calendar-body\";\r\nvar CALENDAR_CELL_CLASS = \"dx-calendar-cell\";\r\nvar CALENDAR_FOOTER_CLASS = \"dx-calendar-footer\";\r\nvar CALENDAR_TODAY_BUTTON_CLASS = \"dx-calendar-today-button\";\r\nvar CALENDAR_HAS_FOOTER_CLASS = \"dx-calendar-with-footer\";\r\nvar CALENDAR_VIEWS_WRAPPER_CLASS = \"dx-calendar-views-wrapper\";\r\nvar CALENDAR_VIEW_CLASS = \"dx-calendar-view\";\r\nvar CALENDAR_MULTIVIEW_CLASS = \"dx-calendar-multiview\";\r\nvar CALENDAR_RANGE_CLASS = \"dx-calendar-range\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar GESTURE_COVER_CLASS = \"dx-gesture-cover\";\r\nvar ANIMATION_DURATION_SHOW_VIEW = 250;\r\nvar POP_ANIMATION_FROM = .6;\r\nvar POP_ANIMATION_TO = 1;\r\nvar CALENDAR_INPUT_STANDARD_PATTERN = \"yyyy-MM-dd\";\r\nvar CALENDAR_DATE_VALUE_KEY = \"dxDateValueKey\";\r\nvar CALENDAR_DXHOVEREND_EVENT_NAME = addNamespace(hoverEndEventName, \"dxCalendar\");\r\nvar LEVEL_COMPARE_MAP = {\r\n month: 3,\r\n year: 2,\r\n decade: 1,\r\n century: 0\r\n};\r\nvar ZOOM_LEVEL = {\r\n MONTH: \"month\",\r\n YEAR: \"year\",\r\n DECADE: \"decade\",\r\n CENTURY: \"century\"\r\n};\r\nvar SELECTION_STRATEGIES = {\r\n SingleSelection: CalendarSingleSelectionStrategy,\r\n MultiSelection: CalendarMultiSelectionStrategy,\r\n RangeSelection: CalendarRangeSelectionStrategy\r\n};\r\n\r\nfunction elementHasFocus(element) {\r\n return element.hasClass(FOCUSED_STATE_CLASS)\r\n}\r\nvar Calendar = Editor.inherit({\r\n _activeStateUnit: \".\" + CALENDAR_CELL_CLASS,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n currentDate: new Date,\r\n value: null,\r\n values: [],\r\n dateSerializationFormat: void 0,\r\n min: new Date(1e3, 0),\r\n max: new Date(3e3, 0),\r\n firstDayOfWeek: void 0,\r\n viewsCount: 1,\r\n zoomLevel: ZOOM_LEVEL.MONTH,\r\n maxZoomLevel: ZOOM_LEVEL.MONTH,\r\n minZoomLevel: ZOOM_LEVEL.CENTURY,\r\n selectionMode: \"single\",\r\n showTodayButton: false,\r\n showWeekNumbers: false,\r\n weekNumberRule: \"auto\",\r\n cellTemplate: \"cell\",\r\n disabledDates: null,\r\n onCellClick: null,\r\n onContouredChanged: null,\r\n skipFocusCheck: false,\r\n _todayDate: () => new Date\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n rightArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._waitRenderView(1)\r\n } else {\r\n this._moveCurrentDateByOffset(1 * this._getRtlCorrection())\r\n }\r\n },\r\n leftArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._waitRenderView(-1)\r\n } else {\r\n this._moveCurrentDateByOffset(-1 * this._getRtlCorrection())\r\n }\r\n },\r\n upArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._navigateUp()\r\n } else {\r\n if (fx.isAnimating(this._view.$element())) {\r\n return\r\n }\r\n this._moveCurrentDateByOffset(-1 * this._view.option(\"colCount\"))\r\n }\r\n },\r\n downArrow: function(e) {\r\n e.preventDefault();\r\n if (isCommandKeyPressed(e)) {\r\n this._navigateDown()\r\n } else {\r\n if (fx.isAnimating(this._view.$element())) {\r\n return\r\n }\r\n this._moveCurrentDateByOffset(1 * this._view.option(\"colCount\"))\r\n }\r\n },\r\n home: function(e) {\r\n e.preventDefault();\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var currentDate = this.option(\"currentDate\");\r\n var min = this._dateOption(\"min\");\r\n if (this._view.isDateDisabled(currentDate)) {\r\n return\r\n }\r\n var date = dateUtils.sameView(zoomLevel, currentDate, min) ? min : dateUtils.getViewFirstCellDate(zoomLevel, currentDate);\r\n this._moveToClosestAvailableDate(date)\r\n },\r\n end: function(e) {\r\n e.preventDefault();\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var currentDate = this.option(\"currentDate\");\r\n var max = this._dateOption(\"max\");\r\n if (this._view.isDateDisabled(currentDate)) {\r\n return\r\n }\r\n var date = dateUtils.sameView(zoomLevel, currentDate, max) ? max : dateUtils.getViewLastCellDate(zoomLevel, currentDate);\r\n this._moveToClosestAvailableDate(date)\r\n },\r\n pageUp: function(e) {\r\n e.preventDefault();\r\n this._waitRenderView(-1 * this._getRtlCorrection())\r\n },\r\n pageDown: function(e) {\r\n e.preventDefault();\r\n this._waitRenderView(1 * this._getRtlCorrection())\r\n },\r\n tab: noop,\r\n enter: this._enterKeyHandler\r\n })\r\n },\r\n _enterKeyHandler: function(e) {\r\n if (!this._isMaxZoomLevel()) {\r\n this._navigateDown()\r\n } else if (!this._view.isDateDisabled(this.option(\"currentDate\"))) {\r\n var value = this._updateTimeComponent(this.option(\"currentDate\"));\r\n this._selectionStrategy.selectValue(value, e)\r\n }\r\n },\r\n _getSerializationFormat: function(optionName) {\r\n var value = this.option(optionName || \"value\");\r\n if (this.option(\"dateSerializationFormat\")) {\r\n return this.option(\"dateSerializationFormat\")\r\n }\r\n if (isNumeric(value)) {\r\n return \"number\"\r\n }\r\n if (!isString(value)) {\r\n return\r\n }\r\n return dateSerialization.getDateSerializationFormat(value)\r\n },\r\n _convertToDate: function(value) {\r\n return dateSerialization.deserializeDate(value)\r\n },\r\n _dateValue: function(value, event) {\r\n var optionName = Array.isArray(value) ? \"values\" : \"value\";\r\n if (event) {\r\n if (\"keydown\" === event.type) {\r\n var cellElement = this._view._getContouredCell().get(0);\r\n event.target = cellElement\r\n }\r\n this._saveValueChangeEvent(event)\r\n }\r\n this._dateOption(optionName, value)\r\n },\r\n _dateOption: function(optionName, optionValue) {\r\n if (1 === arguments.length) {\r\n var _this$option;\r\n var values = null !== (_this$option = this.option(\"values\")) && void 0 !== _this$option ? _this$option : [];\r\n return \"values\" === optionName ? values.map(value => this._convertToDate(value)) : this._convertToDate(this.option(optionName))\r\n }\r\n var serializationFormat = this._getSerializationFormat(optionName);\r\n var serializedValue = \"values\" === optionName ? (null === optionValue || void 0 === optionValue ? void 0 : optionValue.map(value => dateSerialization.serializeDate(value, serializationFormat))) || [] : dateSerialization.serializeDate(optionValue, serializationFormat);\r\n this.option(optionName, serializedValue)\r\n },\r\n _shiftDate: function(zoomLevel, date, offset, reverse) {\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.MONTH:\r\n date.setDate(date.getDate() + offset * reverse);\r\n break;\r\n case ZOOM_LEVEL.YEAR:\r\n date.setMonth(date.getMonth() + offset * reverse);\r\n break;\r\n case ZOOM_LEVEL.DECADE:\r\n date.setFullYear(date.getFullYear() + offset * reverse);\r\n break;\r\n case ZOOM_LEVEL.CENTURY:\r\n date.setFullYear(date.getFullYear() + 10 * offset * reverse)\r\n }\r\n },\r\n _moveCurrentDateByOffset: function(offset) {\r\n var baseDate = this.option(\"currentDate\");\r\n var currentDate = new Date(baseDate);\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n this._shiftDate(zoomLevel, currentDate, offset, 1);\r\n var maxDate = this._getMaxDate();\r\n var minDate = this._getMinDate();\r\n var isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, currentDate, baseDate);\r\n var isDateForwardInRange = inRange(currentDate, minDate, maxDate) && isDateForwardInNeighborView;\r\n var dateForward = new Date(currentDate);\r\n while (isDateForwardInRange) {\r\n if (!this._view.isDateDisabled(dateForward)) {\r\n currentDate = dateForward;\r\n break\r\n }\r\n this._shiftDate(zoomLevel, dateForward, offset, 1);\r\n isDateForwardInNeighborView = this._areDatesInNeighborView(zoomLevel, dateForward, baseDate);\r\n isDateForwardInRange = inRange(dateForward, minDate, maxDate) && isDateForwardInNeighborView\r\n }\r\n if (this._view.isDateDisabled(baseDate) || this._view.isDateDisabled(currentDate)) {\r\n this._waitRenderView(offset > 0 ? 1 : -1)\r\n } else {\r\n this._skipNavigate = true;\r\n this.option(\"currentDate\", currentDate)\r\n }\r\n },\r\n _areDatesInSameView(zoomLevel, date1, date2) {\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.MONTH:\r\n return date1.getMonth() === date2.getMonth();\r\n case ZOOM_LEVEL.YEAR:\r\n return date1.getYear() === date2.getYear();\r\n case ZOOM_LEVEL.DECADE:\r\n return parseInt(date1.getYear() / 10) === parseInt(date2.getYear() / 10);\r\n case ZOOM_LEVEL.CENTURY:\r\n return parseInt(date1.getYear() / 100) === parseInt(date2.getYear() / 100)\r\n }\r\n },\r\n _areDatesInNeighborView(zoomLevel, date1, date2) {\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.MONTH:\r\n return (a = date1.getMonth(), b = date2.getMonth(), abs = Math.abs(a - b), Math.min(abs, 12 - abs)) <= 1;\r\n case ZOOM_LEVEL.YEAR:\r\n return Math.abs(date1.getYear() - date2.getYear()) <= 1;\r\n case ZOOM_LEVEL.DECADE:\r\n return Math.abs(date1.getYear() - date2.getYear()) <= 10;\r\n case ZOOM_LEVEL.CENTURY:\r\n return Math.abs(date1.getYear() - date2.getYear()) <= 100\r\n }\r\n var a, b, abs\r\n },\r\n _moveToClosestAvailableDate: function() {\r\n var baseDate = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.option(\"currentDate\");\r\n var currentDate = new Date(baseDate);\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var isCurrentDateAvailable = !this._isDateNotAvailable(currentDate);\r\n var isDateForwardAvailable = isCurrentDateAvailable;\r\n var isDateBackwardAvailable = isCurrentDateAvailable;\r\n var isDateForwardInStartView;\r\n var isDateBackwardInStartView;\r\n var dateForward = new Date(currentDate);\r\n var dateBackward = new Date(currentDate);\r\n do {\r\n if (isDateForwardAvailable) {\r\n currentDate = dateForward;\r\n break\r\n }\r\n if (isDateBackwardAvailable) {\r\n currentDate = dateBackward;\r\n break\r\n }\r\n this._shiftDate(zoomLevel, dateForward, 1, 1);\r\n this._shiftDate(zoomLevel, dateBackward, 1, -1);\r\n isDateForwardInStartView = this._areDatesInSameView(zoomLevel, dateForward, baseDate);\r\n isDateBackwardInStartView = this._areDatesInSameView(zoomLevel, dateBackward, baseDate);\r\n isDateForwardAvailable = isDateForwardInStartView && !this._isDateNotAvailable(dateForward);\r\n isDateBackwardAvailable = isDateBackwardInStartView && !this._isDateNotAvailable(dateBackward)\r\n } while (isDateForwardInStartView || isDateBackwardInStartView);\r\n this.option(\"currentDate\", currentDate)\r\n },\r\n _isDateNotAvailable: function(date) {\r\n var maxDate = this._getMaxDate();\r\n var minDate = this._getMinDate();\r\n return !inRange(date, minDate, maxDate) || this._view.isDateDisabled(date)\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initSelectionStrategy();\r\n this._correctZoomLevel();\r\n this._initCurrentDate();\r\n this._initActions()\r\n },\r\n _initSelectionStrategy: function() {\r\n var strategyName = this._getSelectionStrategyName();\r\n var strategy = SELECTION_STRATEGIES[strategyName];\r\n if (!this._selectionStrategy || this._selectionStrategy.NAME !== strategyName) {\r\n this._selectionStrategy = new strategy(this)\r\n }\r\n },\r\n _refreshSelectionStrategy: function() {\r\n this._initSelectionStrategy();\r\n this._refresh()\r\n },\r\n _getSelectionStrategyName: function() {\r\n var selectionMode = this.option(\"selectionMode\");\r\n switch (selectionMode) {\r\n case \"multi\":\r\n return \"MultiSelection\";\r\n case \"range\":\r\n return \"RangeSelection\";\r\n default:\r\n return \"SingleSelection\"\r\n }\r\n },\r\n _correctZoomLevel: function() {\r\n var minZoomLevel = this.option(\"minZoomLevel\");\r\n var maxZoomLevel = this.option(\"maxZoomLevel\");\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n if (LEVEL_COMPARE_MAP[maxZoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {\r\n return\r\n }\r\n if (LEVEL_COMPARE_MAP[zoomLevel] > LEVEL_COMPARE_MAP[maxZoomLevel]) {\r\n this.option(\"zoomLevel\", maxZoomLevel)\r\n } else if (LEVEL_COMPARE_MAP[zoomLevel] < LEVEL_COMPARE_MAP[minZoomLevel]) {\r\n this.option(\"zoomLevel\", minZoomLevel)\r\n }\r\n },\r\n _initCurrentDate: function() {\r\n var _this$_getNormalizedD;\r\n var currentDate = null !== (_this$_getNormalizedD = this._getNormalizedDate(this._selectionStrategy.getDefaultCurrentDate())) && void 0 !== _this$_getNormalizedD ? _this$_getNormalizedD : this._getNormalizedDate(this.option(\"currentDate\"));\r\n this.option(\"currentDate\", currentDate)\r\n },\r\n _getNormalizedDate: function(date) {\r\n date = dateUtils.normalizeDate(date, this._getMinDate(), this._getMaxDate());\r\n return isDefined(date) ? this._getDate(date) : date\r\n },\r\n _initActions: function() {\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\");\r\n this._onContouredChanged = this._createActionByOption(\"onContouredChanged\")\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n cell: new FunctionTemplate((function(options) {\r\n var data = options.model;\r\n $(options.container).append($(\"<span>\").text(data && data.text || String(data)))\r\n }))\r\n });\r\n this.callBase()\r\n },\r\n _updateCurrentDate: function(date) {\r\n if (fx.isAnimating(this._$viewsWrapper)) {\r\n fx.stop(this._$viewsWrapper, true)\r\n }\r\n var min = this._getMinDate();\r\n var max = this._getMaxDate();\r\n if (min > max) {\r\n this.option(\"currentDate\", new Date);\r\n return\r\n }\r\n var normalizedDate = this._getNormalizedDate(date);\r\n if (date.getTime() !== normalizedDate.getTime()) {\r\n this.option(\"currentDate\", new Date(normalizedDate));\r\n return\r\n }\r\n var offset = this._getViewsOffset(this._view.option(\"date\"), normalizedDate);\r\n if (0 !== offset && !this._isMaxZoomLevel() && this._isOtherViewCellClicked) {\r\n offset = 0\r\n }\r\n if (this._view && 0 !== offset && !this._suppressNavigation) {\r\n if (this._additionalView) {\r\n if (offset > 2 || offset < -1) {\r\n this._refreshViews();\r\n this._setViewContoured(normalizedDate);\r\n this._updateAriaId(normalizedDate);\r\n this._renderNavigator()\r\n } else if (1 === offset && this._skipNavigate) {\r\n this._setViewContoured(normalizedDate);\r\n this._updateAriaId(normalizedDate)\r\n } else {\r\n this._navigate(offset, normalizedDate)\r\n }\r\n } else {\r\n this._navigate(offset, normalizedDate)\r\n }\r\n } else {\r\n this._renderNavigator();\r\n this._setViewContoured(normalizedDate);\r\n this._updateAriaId(normalizedDate)\r\n }\r\n this._skipNavigate = false\r\n },\r\n _isAdditionalViewDate(date) {\r\n if (!this._additionalView) {\r\n return false\r\n }\r\n return date >= this._additionalView._getFirstAvailableDate()\r\n },\r\n _getActiveView: function(date) {\r\n return this._isAdditionalViewDate(date) ? this._additionalView : this._view\r\n },\r\n _setViewContoured: function(date) {\r\n if (this.option(\"skipFocusCheck\") || elementHasFocus(this._focusTarget())) {\r\n var _this$_additionalView;\r\n this._view.option(\"contouredDate\", null);\r\n null === (_this$_additionalView = this._additionalView) || void 0 === _this$_additionalView ? void 0 : _this$_additionalView.option(\"contouredDate\", null);\r\n var view = this._isAdditionalViewDate(date) ? this._additionalView : this._view;\r\n view.option(\"contouredDate\", date)\r\n }\r\n },\r\n _getMinDate: function() {\r\n var _rangeMin = this.option(\"_rangeMin\");\r\n if (_rangeMin) {\r\n return _rangeMin\r\n }\r\n if (this.min) {\r\n return this.min\r\n }\r\n this.min = this._dateOption(\"min\") || new Date(1e3, 0);\r\n return this.min\r\n },\r\n _getMaxDate: function() {\r\n var _rangeMax = this.option(\"_rangeMax\");\r\n if (_rangeMax) {\r\n return _rangeMax\r\n }\r\n if (this.max) {\r\n return this.max\r\n }\r\n this.max = this._dateOption(\"max\") || new Date(3e3, 0);\r\n return this.max\r\n },\r\n _getViewsOffset: function(startDate, endDate) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n if (zoomLevel === ZOOM_LEVEL.MONTH) {\r\n return this._getMonthsOffset(startDate, endDate)\r\n }\r\n var zoomCorrection;\r\n switch (zoomLevel) {\r\n case ZOOM_LEVEL.CENTURY:\r\n zoomCorrection = 100;\r\n break;\r\n case ZOOM_LEVEL.DECADE:\r\n zoomCorrection = 10;\r\n break;\r\n default:\r\n zoomCorrection = 1\r\n }\r\n return parseInt(endDate.getFullYear() / zoomCorrection) - parseInt(startDate.getFullYear() / zoomCorrection)\r\n },\r\n _getMonthsOffset: function(startDate, endDate) {\r\n var yearOffset = endDate.getFullYear() - startDate.getFullYear();\r\n var monthOffset = endDate.getMonth() - startDate.getMonth();\r\n return 12 * yearOffset + monthOffset\r\n },\r\n _waitRenderView: function(offset) {\r\n if (this._alreadyViewRender) {\r\n return\r\n }\r\n this._alreadyViewRender = true;\r\n var date = this._getDateByOffset(offset * this._getRtlCorrection());\r\n this._moveToClosestAvailableDate(date);\r\n this._waitRenderViewTimeout = setTimeout(() => {\r\n this._alreadyViewRender = false\r\n })\r\n },\r\n _getRtlCorrection: function() {\r\n return this.option(\"rtlEnabled\") ? -1 : 1\r\n },\r\n _getDateByOffset: function(offset, date) {\r\n var _date;\r\n date = this._getDate(null !== (_date = date) && void 0 !== _date ? _date : this.option(\"currentDate\"));\r\n var currentDay = date.getDate();\r\n var difference = dateUtils.getDifferenceInMonth(this.option(\"zoomLevel\")) * offset;\r\n date.setDate(1);\r\n date.setMonth(date.getMonth() + difference);\r\n var lastDay = dateUtils.getLastMonthDate(date).getDate();\r\n date.setDate(currentDay > lastDay ? lastDay : currentDay);\r\n return date\r\n },\r\n _focusTarget: function() {\r\n return this.$element()\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.callBase();\r\n var $element = this.$element();\r\n $element.addClass(CALENDAR_CLASS);\r\n $element.toggleClass(CALENDAR_RANGE_CLASS, \"range\" === this.option(\"selectionMode\"));\r\n this._renderBody();\r\n $element.append(this.$body);\r\n this._renderViews();\r\n this._renderEvents();\r\n this._renderNavigator();\r\n $element.prepend(this._navigator.$element());\r\n this._renderSwipeable();\r\n this._renderFooter();\r\n this._selectionStrategy.updateAriaSelected();\r\n this._updateAriaId();\r\n this.setAria(\"role\", \"application\");\r\n this._moveToClosestAvailableDate()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._setViewContoured(this.option(\"currentDate\"))\r\n },\r\n _renderBody: function() {\r\n if (!this._$viewsWrapper) {\r\n this.$body = $(\"<div>\").addClass(CALENDAR_BODY_CLASS);\r\n this._$viewsWrapper = $(\"<div>\").addClass(CALENDAR_VIEWS_WRAPPER_CLASS);\r\n this.$body.append(this._$viewsWrapper)\r\n }\r\n },\r\n _getKeyboardListeners() {\r\n return this.callBase().concat([this._view])\r\n },\r\n _renderViews: function() {\r\n this.$element().addClass(CALENDAR_VIEW_CLASS + \"-\" + this.option(\"zoomLevel\"));\r\n var {\r\n currentDate: currentDate,\r\n viewsCount: viewsCount\r\n } = this.option();\r\n this.$element().toggleClass(CALENDAR_MULTIVIEW_CLASS, viewsCount > 1);\r\n this._view = this._renderSpecificView(currentDate);\r\n if (hasWindow()) {\r\n var beforeDate = this._getDateByOffset(-1, currentDate);\r\n this._beforeView = this._isViewAvailable(beforeDate) ? this._renderSpecificView(beforeDate) : null;\r\n var afterDate = this._getDateByOffset(viewsCount, currentDate);\r\n afterDate.setDate(1);\r\n this._afterView = this._isViewAvailable(afterDate) ? this._renderSpecificView(afterDate) : null\r\n }\r\n if (viewsCount > 1) {\r\n this._additionalView = this._renderSpecificView(this._getDateByOffset(1, currentDate))\r\n }\r\n this._translateViews()\r\n },\r\n _renderSpecificView: function(date) {\r\n var {\r\n zoomLevel: zoomLevel\r\n } = this.option();\r\n var specificView = Views[zoomLevel];\r\n var $view = $(\"<div>\").appendTo(this._$viewsWrapper);\r\n var config = this._viewConfig(date);\r\n var view = this._createComponent($view, specificView, config);\r\n return view\r\n },\r\n _viewConfig: function(date) {\r\n var _this$option2;\r\n var disabledDates = this.option(\"disabledDates\");\r\n disabledDates = isFunction(disabledDates) ? this._injectComponent(disabledDates.bind(this)) : disabledDates;\r\n return _extends({}, this._selectionStrategy.getViewOptions(), {\r\n date: date,\r\n min: this._getMinDate(),\r\n max: this._getMaxDate(),\r\n firstDayOfWeek: null !== (_this$option2 = this.option(\"firstDayOfWeek\")) && void 0 !== _this$option2 ? _this$option2 : dateLocalization.firstDayOfWeekIndex(),\r\n showWeekNumbers: this.option(\"showWeekNumbers\"),\r\n weekNumberRule: this.option(\"weekNumberRule\"),\r\n zoomLevel: this.option(\"zoomLevel\"),\r\n tabIndex: void 0,\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n disabledDates: disabledDates,\r\n onCellClick: this._cellClickHandler.bind(this),\r\n cellTemplate: this._getTemplateByOption(\"cellTemplate\"),\r\n allowValueSelection: this._isMaxZoomLevel(),\r\n _todayDate: this.option(\"_todayDate\")\r\n })\r\n },\r\n _renderEvents() {\r\n eventsEngine.off(this._$viewsWrapper, CALENDAR_DXHOVEREND_EVENT_NAME);\r\n if (\"range\" === this.option(\"selectionMode\")) {\r\n eventsEngine.on(this._$viewsWrapper, CALENDAR_DXHOVEREND_EVENT_NAME, null, e => {\r\n this._updateViewsOption(\"hoveredRange\", [])\r\n })\r\n }\r\n },\r\n _injectComponent: function(func) {\r\n var that = this;\r\n return function(params) {\r\n extend(params, {\r\n component: that\r\n });\r\n return func(params)\r\n }\r\n },\r\n _isViewAvailable: function(date) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var min = dateUtils.getViewMinBoundaryDate(zoomLevel, this._getMinDate());\r\n var max = dateUtils.getViewMaxBoundaryDate(zoomLevel, this._getMaxDate());\r\n return dateUtils.dateInRange(date, min, max)\r\n },\r\n _translateViews: function() {\r\n var {\r\n viewsCount: viewsCount\r\n } = this.option();\r\n move(this._view.$element(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._moveViewElement(this._beforeView, -1);\r\n this._moveViewElement(this._afterView, viewsCount);\r\n this._moveViewElement(this._additionalView, 1)\r\n },\r\n _moveViewElement(view, coefficient) {\r\n view && move(view.$element(), {\r\n left: this._getViewPosition(coefficient),\r\n top: 0\r\n })\r\n },\r\n _getViewPosition: function(coefficient) {\r\n var rtlCorrection = this.option(\"rtlEnabled\") ? -1 : 1;\r\n return 100 * coefficient * rtlCorrection + \"%\"\r\n },\r\n _cellClickHandler: function(e) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var nextView = dateUtils.getViewDown(zoomLevel);\r\n var isMaxZoomLevel = this._isMaxZoomLevel();\r\n if (nextView && !isMaxZoomLevel) {\r\n this._navigateDown(e.event.currentTarget)\r\n } else {\r\n var newValue = this._updateTimeComponent(e.value);\r\n this._selectionStrategy.selectValue(newValue, e.event);\r\n this._cellClickAction(e)\r\n }\r\n },\r\n _updateTimeComponent: function(date) {\r\n var result = new Date(date);\r\n var currentValue = this._dateOption(\"value\");\r\n if (currentValue) {\r\n result.setHours(currentValue.getHours());\r\n result.setMinutes(currentValue.getMinutes());\r\n result.setSeconds(currentValue.getSeconds());\r\n result.setMilliseconds(currentValue.getMilliseconds())\r\n }\r\n return result\r\n },\r\n _isMaxZoomLevel: function() {\r\n return this.option(\"zoomLevel\") === this.option(\"maxZoomLevel\")\r\n },\r\n _navigateDown: function(cell) {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n if (this._isMaxZoomLevel()) {\r\n return\r\n }\r\n var nextView = dateUtils.getViewDown(zoomLevel);\r\n if (!nextView) {\r\n return\r\n }\r\n var newCurrentDate = this._view.option(\"contouredDate\") || this._view.option(\"date\");\r\n if (cell) {\r\n newCurrentDate = $(cell).data(CALENDAR_DATE_VALUE_KEY)\r\n }\r\n this._isOtherViewCellClicked = true;\r\n this.option(\"currentDate\", newCurrentDate);\r\n this.option(\"zoomLevel\", nextView);\r\n this._isOtherViewCellClicked = false;\r\n this._renderNavigator();\r\n this._animateShowView();\r\n this._moveToClosestAvailableDate();\r\n this._setViewContoured(this._getNormalizedDate(this.option(\"currentDate\")))\r\n },\r\n _renderNavigator: function() {\r\n if (!this._navigator) {\r\n this._navigator = new Navigator($(\"<div>\"), this._navigatorConfig())\r\n }\r\n this._navigator.option(\"text\", this._getViewsCaption(this._view, this._additionalView));\r\n this._updateButtonsVisibility()\r\n },\r\n _navigatorConfig: function() {\r\n var {\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n return {\r\n text: this._getViewsCaption(this._view, this._additionalView),\r\n onClick: this._navigatorClickHandler.bind(this),\r\n onCaptionClick: this._navigateUp.bind(this),\r\n rtlEnabled: rtlEnabled\r\n }\r\n },\r\n _navigatorClickHandler: function(e) {\r\n var {\r\n currentDate: currentDate,\r\n viewsCount: viewsCount\r\n } = this.option();\r\n var offset = e.direction;\r\n if (viewsCount > 1) {\r\n var additionalViewActive = this._isAdditionalViewDate(currentDate);\r\n var shouldDoubleOffset = additionalViewActive && offset < 0 || !additionalViewActive && offset > 0;\r\n if (shouldDoubleOffset) {\r\n offset *= 2\r\n }\r\n }\r\n var newCurrentDate = this._getDateByOffset(offset, currentDate);\r\n this._moveToClosestAvailableDate(newCurrentDate)\r\n },\r\n _navigateUp: function() {\r\n var zoomLevel = this.option(\"zoomLevel\");\r\n var nextView = dateUtils.getViewUp(zoomLevel);\r\n if (!nextView || this._isMinZoomLevel(zoomLevel)) {\r\n return\r\n }\r\n this.option(\"zoomLevel\", nextView);\r\n this._renderNavigator();\r\n this._animateShowView();\r\n this._moveToClosestAvailableDate();\r\n this._setViewContoured(this._getNormalizedDate(this.option(\"currentDate\")))\r\n },\r\n _isMinZoomLevel: function(zoomLevel) {\r\n var min = this._getMinDate();\r\n var max = this._getMaxDate();\r\n return dateUtils.sameView(zoomLevel, min, max) || this.option(\"minZoomLevel\") === zoomLevel\r\n },\r\n _updateButtonsVisibility: function() {\r\n this._navigator.toggleButton(\"next\", !isDefined(this._afterView));\r\n this._navigator.toggleButton(\"prev\", !isDefined(this._beforeView))\r\n },\r\n _renderSwipeable: function() {\r\n if (!this._swipeable) {\r\n this._swipeable = this._createComponent(this.$element(), Swipeable, {\r\n onStart: this._swipeStartHandler.bind(this),\r\n onUpdated: this._swipeUpdateHandler.bind(this),\r\n onEnd: this._swipeEndHandler.bind(this),\r\n itemSizeFunc: this._viewWidth.bind(this)\r\n })\r\n }\r\n },\r\n _swipeStartHandler: function(e) {\r\n fx.stop(this._$viewsWrapper, true);\r\n var {\r\n viewsCount: viewsCount\r\n } = this.option();\r\n this._toggleGestureCoverCursor(\"grabbing\");\r\n e.event.maxLeftOffset = this._getRequiredView(\"next\") ? 1 / viewsCount : 0;\r\n e.event.maxRightOffset = this._getRequiredView(\"prev\") ? 1 / viewsCount : 0\r\n },\r\n _toggleGestureCoverCursor: function(cursor) {\r\n $(\".\".concat(GESTURE_COVER_CLASS)).css(\"cursor\", cursor)\r\n },\r\n _getRequiredView: function(name) {\r\n var view;\r\n var isRtl = this.option(\"rtlEnabled\");\r\n if (\"next\" === name) {\r\n view = isRtl ? this._beforeView : this._afterView\r\n } else if (\"prev\" === name) {\r\n view = isRtl ? this._afterView : this._beforeView\r\n }\r\n return view\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n var offset = e.event.offset;\r\n move(this._$viewsWrapper, {\r\n left: offset * this._viewWidth(),\r\n top: 0\r\n });\r\n this._updateNavigatorCaption(offset)\r\n },\r\n _swipeEndHandler: function(e) {\r\n this._toggleGestureCoverCursor(\"auto\");\r\n var {\r\n currentDate: currentDate,\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n var targetOffset = e.event.targetOffset;\r\n var moveOffset = !targetOffset ? 0 : targetOffset / Math.abs(targetOffset);\r\n var isAdditionalViewActive = this._isAdditionalViewDate(currentDate);\r\n var shouldDoubleOffset = isAdditionalViewActive && (rtlEnabled ? -1 === moveOffset : 1 === moveOffset);\r\n if (0 === moveOffset) {\r\n this._animateWrapper(0, ANIMATION_DURATION_SHOW_VIEW);\r\n return\r\n }\r\n var offset = -moveOffset * this._getRtlCorrection() * (shouldDoubleOffset ? 2 : 1);\r\n var date = this._getDateByOffset(offset);\r\n if (this._isDateInInvalidRange(date)) {\r\n if (moveOffset >= 0) {\r\n date = new Date(this._getMinDate())\r\n } else {\r\n date = new Date(this._getMaxDate())\r\n }\r\n }\r\n this.option(\"currentDate\", date)\r\n },\r\n _viewWidth: function() {\r\n if (!this._viewWidthValue) {\r\n this._viewWidthValue = getWidth(this.$element()) / this.option(\"viewsCount\")\r\n }\r\n return this._viewWidthValue\r\n },\r\n _updateNavigatorCaption: function(offset) {\r\n offset *= this._getRtlCorrection();\r\n var isMultiView = this.option(\"viewsCount\") > 1;\r\n var view;\r\n var additionalView;\r\n if (offset > .5 && this._beforeView) {\r\n view = this._beforeView;\r\n additionalView = isMultiView && this._view\r\n } else if (offset < -.5 && this._afterView) {\r\n view = isMultiView ? this._additionalView : this._afterView;\r\n additionalView = isMultiView ? this._afterView : null\r\n } else {\r\n view = this._view;\r\n additionalView = isMultiView ? this._additionalView : null\r\n }\r\n this._navigator.option(\"text\", this._getViewsCaption(view, additionalView))\r\n },\r\n _getViewsCaption: function(view, additionalView) {\r\n var caption = view.getNavigatorCaption();\r\n var {\r\n viewsCount: viewsCount\r\n } = this.option();\r\n if (viewsCount > 1 && additionalView) {\r\n var additionalViewCaption = additionalView.getNavigatorCaption();\r\n caption = \"\".concat(caption, \" - \").concat(additionalViewCaption)\r\n }\r\n return caption\r\n },\r\n _isDateInInvalidRange: function(date) {\r\n if (this._view.isBoundary(date)) {\r\n return\r\n }\r\n var min = this._getMinDate();\r\n var max = this._getMaxDate();\r\n var normalizedDate = dateUtils.normalizeDate(date, min, max);\r\n return normalizedDate === min || normalizedDate === max\r\n },\r\n _renderFooter: function() {\r\n var showTodayButton = this.option(\"showTodayButton\");\r\n if (showTodayButton) {\r\n var $todayButton = this._createComponent($(\"<div>\"), Button, {\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n text: messageLocalization.format(\"dxCalendar-todayButtonText\"),\r\n onClick: args => {\r\n this._toTodayView(args)\r\n },\r\n type: \"default\",\r\n stylingMode: \"text\",\r\n integrationOptions: {}\r\n }).$element().addClass(CALENDAR_TODAY_BUTTON_CLASS);\r\n this._$footer = $(\"<div>\").addClass(CALENDAR_FOOTER_CLASS).append($todayButton);\r\n this.$element().append(this._$footer)\r\n }\r\n this.$element().toggleClass(CALENDAR_HAS_FOOTER_CLASS, showTodayButton)\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue(this.option(\"value\"))\r\n },\r\n _setSubmitValue: function(value) {\r\n var dateValue = this._convertToDate(value);\r\n this._getSubmitElement().val(dateSerialization.serializeDate(dateValue, CALENDAR_INPUT_STANDARD_PATTERN))\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _animateShowView: function() {\r\n fx.stop(this._view.$element(), true);\r\n this._popAnimationView(this._view, POP_ANIMATION_FROM, POP_ANIMATION_TO, ANIMATION_DURATION_SHOW_VIEW);\r\n if (this.option(\"viewsCount\") > 1) {\r\n fx.stop(this._additionalView.$element(), true);\r\n this._popAnimationView(this._additionalView, POP_ANIMATION_FROM, POP_ANIMATION_TO, ANIMATION_DURATION_SHOW_VIEW)\r\n }\r\n },\r\n _popAnimationView: function(view, from, to, duration) {\r\n return fx.animate(view.$element(), {\r\n type: \"pop\",\r\n from: {\r\n scale: from,\r\n opacity: from\r\n },\r\n to: {\r\n scale: to,\r\n opacity: to\r\n },\r\n duration: duration\r\n })\r\n },\r\n _navigate: function(offset, value) {\r\n if (0 !== offset && 1 !== Math.abs(offset) && this._isViewAvailable(value)) {\r\n var newView = this._renderSpecificView(value);\r\n if (offset > 0) {\r\n this._afterView && this._afterView.$element().remove();\r\n this._afterView = newView\r\n } else {\r\n this._beforeView && this._beforeView.$element().remove();\r\n this._beforeView = newView\r\n }\r\n this._translateViews()\r\n }\r\n var rtlCorrection = this._getRtlCorrection();\r\n var offsetSign = offset > 0 ? 1 : offset < 0 ? -1 : 0;\r\n var endPosition = -rtlCorrection * offsetSign * this._viewWidth();\r\n var viewsWrapperPosition = this._$viewsWrapper.position().left;\r\n if (viewsWrapperPosition !== endPosition) {\r\n if (this._preventViewChangeAnimation) {\r\n this._wrapperAnimationEndHandler(offset, value)\r\n } else {\r\n this._animateWrapper(endPosition, ANIMATION_DURATION_SHOW_VIEW).done(this._wrapperAnimationEndHandler.bind(this, offset, value))\r\n }\r\n }\r\n },\r\n _animateWrapper: function(to, duration) {\r\n return fx.animate(this._$viewsWrapper, {\r\n type: \"slide\",\r\n from: {\r\n left: this._$viewsWrapper.position().left\r\n },\r\n to: {\r\n left: to\r\n },\r\n duration: duration\r\n })\r\n },\r\n _getDate: value => new Date(value),\r\n _toTodayView: function(args) {\r\n var today = new Date;\r\n if (this._isMaxZoomLevel()) {\r\n this._selectionStrategy.selectValue(today, args.event);\r\n return\r\n }\r\n this._preventViewChangeAnimation = true;\r\n this.option(\"zoomLevel\", this.option(\"maxZoomLevel\"));\r\n this._selectionStrategy.selectValue(today, args.event);\r\n this._animateShowView();\r\n this._preventViewChangeAnimation = false\r\n },\r\n _wrapperAnimationEndHandler: function(offset, newDate) {\r\n this._rearrangeViews(offset);\r\n this._translateViews();\r\n this._resetLocation();\r\n this._renderNavigator();\r\n this._setViewContoured(newDate);\r\n this._updateAriaId(newDate);\r\n this._selectionStrategy.updateAriaSelected()\r\n },\r\n _rearrangeViews: function(offset) {\r\n var _this$viewToRemoveKey;\r\n if (0 === offset) {\r\n return\r\n }\r\n var {\r\n viewsCount: viewsCount\r\n } = this.option();\r\n var viewOffset;\r\n var viewToCreateKey;\r\n var viewToRemoveKey;\r\n var viewBeforeCreateKey;\r\n var viewAfterRemoveKey;\r\n if (offset < 0) {\r\n viewOffset = 1;\r\n viewToCreateKey = \"_beforeView\";\r\n viewToRemoveKey = \"_afterView\";\r\n viewBeforeCreateKey = \"_view\";\r\n viewAfterRemoveKey = 1 === viewsCount ? \"_view\" : \"_additionalView\"\r\n } else {\r\n viewOffset = -1;\r\n viewToCreateKey = \"_afterView\";\r\n viewToRemoveKey = \"_beforeView\";\r\n viewBeforeCreateKey = 1 === viewsCount ? \"_view\" : \"_additionalView\";\r\n viewAfterRemoveKey = \"_view\"\r\n }\r\n if (!this[viewToCreateKey]) {\r\n return\r\n }\r\n var destinationDate = this[viewToCreateKey].option(\"date\");\r\n null === (_this$viewToRemoveKey = this[viewToRemoveKey]) || void 0 === _this$viewToRemoveKey ? void 0 : _this$viewToRemoveKey.$element().remove();\r\n this[viewToRemoveKey] = this._renderSpecificView(this._getDateByOffset(viewOffset * viewsCount, destinationDate));\r\n this[viewAfterRemoveKey].$element().remove();\r\n if (1 === viewsCount) {\r\n this[viewAfterRemoveKey] = this[viewToCreateKey]\r\n } else {\r\n this[viewAfterRemoveKey] = this[viewBeforeCreateKey];\r\n this[viewBeforeCreateKey] = this[viewToCreateKey]\r\n }\r\n var dateByOffset = this._getDateByOffset(-viewOffset, destinationDate);\r\n this[viewToCreateKey] = this._isViewAvailable(dateByOffset) ? this._renderSpecificView(dateByOffset) : null\r\n },\r\n _resetLocation: function() {\r\n move(this._$viewsWrapper, {\r\n left: 0,\r\n top: 0\r\n })\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n this._clearViewWidthCache();\r\n delete this._$viewsWrapper;\r\n delete this._navigator;\r\n delete this._$footer\r\n },\r\n _clearViewWidthCache: function() {\r\n delete this._viewWidthValue\r\n },\r\n _disposeViews: function() {\r\n this._view.$element().remove();\r\n this._beforeView && this._beforeView.$element().remove();\r\n this._additionalView && this._additionalView.$element().remove();\r\n this._afterView && this._afterView.$element().remove();\r\n delete this._view;\r\n delete this._additionalView;\r\n delete this._beforeView;\r\n delete this._afterView;\r\n delete this._skipNavigate\r\n },\r\n _dispose: function() {\r\n clearTimeout(this._waitRenderViewTimeout);\r\n this.callBase()\r\n },\r\n _refreshViews: function() {\r\n this._resetActiveState();\r\n this._disposeViews();\r\n this._renderViews()\r\n },\r\n _visibilityChanged: function() {\r\n this._translateViews()\r\n },\r\n _focusInHandler: function() {\r\n this.callBase.apply(this, arguments);\r\n this._setViewContoured(this.option(\"currentDate\"))\r\n },\r\n _focusOutHandler: function() {\r\n var _this$_additionalView2;\r\n this.callBase.apply(this, arguments);\r\n this._view.option(\"contouredDate\", null);\r\n null === (_this$_additionalView2 = this._additionalView) || void 0 === _this$_additionalView2 ? void 0 : _this$_additionalView2.option(\"contouredDate\", null)\r\n },\r\n _updateViewsOption: function(optionName, newValue) {\r\n var _this$_additionalView3, _this$_beforeView, _this$_afterView;\r\n this._view.option(optionName, newValue);\r\n null === (_this$_additionalView3 = this._additionalView) || void 0 === _this$_additionalView3 ? void 0 : _this$_additionalView3.option(optionName, newValue);\r\n null === (_this$_beforeView = this._beforeView) || void 0 === _this$_beforeView ? void 0 : _this$_beforeView.option(optionName, newValue);\r\n null === (_this$_afterView = this._afterView) || void 0 === _this$_afterView ? void 0 : _this$_afterView.option(optionName, newValue)\r\n },\r\n _setViewsMinOption: function(min) {\r\n this._restoreViewsMinMaxOptions();\r\n this.option(\"_rangeMin\", this._convertToDate(min));\r\n this._updateViewsOption(\"min\", this._getMinDate())\r\n },\r\n _setViewsMaxOption: function(max) {\r\n this._restoreViewsMinMaxOptions();\r\n this.option(\"_rangeMax\", this._convertToDate(max));\r\n this._updateViewsOption(\"max\", this._getMaxDate())\r\n },\r\n _restoreViewsMinMaxOptions: function() {\r\n this.option({\r\n _rangeMin: null,\r\n _rangeMax: null\r\n });\r\n this._updateViewsOption(\"min\", this._getMinDate());\r\n this._updateViewsOption(\"max\", this._getMaxDate())\r\n },\r\n _updateAriaSelected: function(value, previousValue) {\r\n previousValue.forEach(item => {\r\n this.setAria(\"selected\", void 0, this._view._getCellByDate(item))\r\n });\r\n value.forEach(item => {\r\n this.setAria(\"selected\", true, this._view._getCellByDate(item))\r\n });\r\n if (this.option(\"viewsCount\") > 1) {\r\n previousValue.forEach(item => {\r\n this.setAria(\"selected\", void 0, this._additionalView._getCellByDate(item))\r\n });\r\n value.forEach(item => {\r\n this.setAria(\"selected\", true, this._additionalView._getCellByDate(item))\r\n })\r\n }\r\n },\r\n _updateAriaId: function(value) {\r\n var _value;\r\n value = null !== (_value = value) && void 0 !== _value ? _value : this.option(\"currentDate\");\r\n var ariaId = \"dx-\" + new Guid;\r\n var view = this._getActiveView(value);\r\n var $newCell = view._getCellByDate(value);\r\n this.setAria(\"id\", ariaId, $newCell);\r\n this.setAria(\"activedescendant\", ariaId);\r\n this._onContouredChanged(ariaId)\r\n },\r\n _suppressingNavigation: function(callback, args) {\r\n this._suppressNavigation = true;\r\n callback.apply(this, args);\r\n delete this._suppressNavigation\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n switch (args.name) {\r\n case \"width\":\r\n this.callBase(args);\r\n this._clearViewWidthCache();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this.min = void 0;\r\n this.max = void 0;\r\n this._suppressingNavigation(this._updateCurrentDate, [this.option(\"currentDate\")]);\r\n this._refreshViews();\r\n this._renderNavigator();\r\n break;\r\n case \"selectionMode\":\r\n this._refreshSelectionStrategy();\r\n this._initCurrentDate();\r\n break;\r\n case \"firstDayOfWeek\":\r\n this._refreshViews();\r\n this._updateButtonsVisibility();\r\n break;\r\n case \"currentDate\":\r\n this.setAria(\"id\", void 0, this._view._getCellByDate(previousValue));\r\n this._updateCurrentDate(value);\r\n break;\r\n case \"zoomLevel\":\r\n this.$element().removeClass(CALENDAR_VIEW_CLASS + \"-\" + previousValue);\r\n this._correctZoomLevel();\r\n this._refreshViews();\r\n this._renderNavigator();\r\n this._updateAriaId();\r\n break;\r\n case \"minZoomLevel\":\r\n case \"maxZoomLevel\":\r\n this._correctZoomLevel();\r\n this._updateButtonsVisibility();\r\n break;\r\n case \"value\":\r\n if (\"single\" === this.option(\"selectionMode\")) {\r\n this._selectionStrategy.processValueChanged([value], [previousValue])\r\n }\r\n this._setSubmitValue(value);\r\n this.callBase(args);\r\n break;\r\n case \"values\":\r\n if (\"single\" !== this.option(\"selectionMode\")) {\r\n this._selectionStrategy.processValueChanged(value, previousValue)\r\n }\r\n this._raiseValueChangeAction(value, previousValue);\r\n this._saveValueChangeEvent(void 0);\r\n break;\r\n case \"viewsCount\":\r\n this._refreshViews();\r\n this._renderNavigator();\r\n break;\r\n case \"onCellClick\":\r\n this._view.option(\"onCellClick\", value);\r\n break;\r\n case \"onContouredChanged\":\r\n this._onContouredChanged = this._createActionByOption(\"onContouredChanged\");\r\n break;\r\n case \"disabledDates\":\r\n case \"dateSerializationFormat\":\r\n case \"cellTemplate\":\r\n case \"showTodayButton\":\r\n this._invalidate();\r\n break;\r\n case \"skipFocusCheck\":\r\n break;\r\n case \"_todayDate\":\r\n case \"showWeekNumbers\":\r\n case \"weekNumberRule\":\r\n this._refreshViews();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n getContouredDate: function() {\r\n return this._view.option(\"contouredDate\")\r\n }\r\n});\r\nregisterComponent(\"dxCalendar\", Calendar);\r\nexport default Calendar;\r\n","/**\r\n * DevExtreme (esm/ui/calendar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Calendar from \"./calendar/ui.calendar\";\r\nexport default Calendar;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport dateLocalization from \"../../localization/date\";\r\nvar abstract = Class.abstract;\r\nvar DateBoxStrategy = Class.inherit({\r\n ctor: function(dateBox) {\r\n this.dateBox = dateBox\r\n },\r\n widgetOption: function() {\r\n return this._widget && this._widget.option.apply(this._widget, arguments)\r\n },\r\n _renderWidget: function(element) {\r\n element = element || $(\"<div>\");\r\n this._widget = this._createWidget(element);\r\n this._widget.$element().appendTo(this._getWidgetContainer())\r\n },\r\n _createWidget: function(element) {\r\n var widgetName = this._getWidgetName();\r\n var widgetOptions = this._getWidgetOptions();\r\n return this.dateBox._createComponent(element, widgetName, widgetOptions)\r\n },\r\n _getWidgetOptions: abstract,\r\n _getWidgetName: abstract,\r\n getDefaultOptions: function() {\r\n return {\r\n mode: \"text\"\r\n }\r\n },\r\n getDisplayFormat: abstract,\r\n supportedKeys: noop,\r\n getKeyboardListener: noop,\r\n customizeButtons: noop,\r\n getParsedText: function(text, format) {\r\n var value = dateLocalization.parse(text, format);\r\n return value ? value : dateLocalization.parse(text)\r\n },\r\n renderInputMinMax: noop,\r\n renderOpenedState: function() {\r\n this._updateValue()\r\n },\r\n popupConfig: abstract,\r\n _dimensionChanged: function() {\r\n var _this$_getPopup;\r\n null === (_this$_getPopup = this._getPopup()) || void 0 === _this$_getPopup ? void 0 : _this$_getPopup.repaint()\r\n },\r\n renderPopupContent: function() {\r\n var popup = this._getPopup();\r\n this._renderWidget();\r\n var $popupContent = popup.$content().parent();\r\n eventsEngine.off($popupContent, \"mousedown\");\r\n eventsEngine.on($popupContent, \"mousedown\", this._preventFocusOnPopup.bind(this))\r\n },\r\n getFirstPopupElement: noop,\r\n getLastPopupElement: noop,\r\n _preventFocusOnPopup: function(e) {\r\n e.preventDefault()\r\n },\r\n _getWidgetContainer: function() {\r\n return this._getPopup().$content()\r\n },\r\n _getPopup: function() {\r\n return this.dateBox._popup\r\n },\r\n popupShowingHandler: noop,\r\n popupHiddenHandler: noop,\r\n _updateValue: function() {\r\n this._widget && this._widget.option(\"value\", this.dateBoxValue())\r\n },\r\n useCurrentDateByDefault: noop,\r\n getDefaultDate: function() {\r\n return new Date\r\n },\r\n textChangedHandler: noop,\r\n renderValue: function() {\r\n if (this.dateBox.option(\"opened\")) {\r\n this._updateValue()\r\n }\r\n },\r\n getValue: function() {\r\n return this._widget.option(\"value\")\r\n },\r\n isAdaptivityChanged: function() {\r\n return false\r\n },\r\n dispose: function() {\r\n var popup = this._getPopup();\r\n if (popup) {\r\n popup.$content().empty()\r\n }\r\n },\r\n dateBoxValue: function() {\r\n if (arguments.length) {\r\n return this.dateBox.dateValue.apply(this.dateBox, arguments)\r\n } else {\r\n return this.dateBox.dateOption.apply(this.dateBox, [\"value\"])\r\n }\r\n }\r\n});\r\nexport default DateBoxStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.calendar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Calendar from \"../calendar\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n splitPair\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isFunction,\r\n isEmptyObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar CalendarStrategy = DateBoxStrategy.inherit({\r\n NAME: \"Calendar\",\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n todayButtonText: messageLocalization.format(\"dxCalendar-todayButtonText\")\r\n })\r\n },\r\n supportedKeys: function() {\r\n var homeEndHandler = function(e) {\r\n if (this.option(\"opened\")) {\r\n e.preventDefault();\r\n return true\r\n }\r\n return false\r\n };\r\n return {\r\n rightArrow: function() {\r\n if (this.option(\"opened\")) {\r\n return true\r\n }\r\n },\r\n leftArrow: function() {\r\n if (this.option(\"opened\")) {\r\n return true\r\n }\r\n },\r\n enter: function(e) {\r\n if (this.dateBox.option(\"opened\")) {\r\n e.preventDefault();\r\n if (this._widget.option(\"zoomLevel\") === this._widget.option(\"maxZoomLevel\")) {\r\n var viewValue = this._getContouredValue();\r\n var lastActionElement = this._lastActionElement;\r\n var shouldCloseDropDown = this._closeDropDownByEnter();\r\n if (shouldCloseDropDown && viewValue && \"calendar\" === lastActionElement) {\r\n this.dateBoxValue(viewValue, e)\r\n }\r\n shouldCloseDropDown && this.dateBox.close();\r\n this.dateBox._valueChangeEventHandler(e);\r\n return !shouldCloseDropDown\r\n } else {\r\n return true\r\n }\r\n } else {\r\n this.dateBox._valueChangeEventHandler(e)\r\n }\r\n }.bind(this),\r\n home: homeEndHandler,\r\n end: homeEndHandler\r\n }\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shortdate\"\r\n },\r\n _closeDropDownByEnter: () => true,\r\n _getWidgetName: function() {\r\n return Calendar\r\n },\r\n _getContouredValue: function() {\r\n return this._widget._view.option(\"contouredDate\")\r\n },\r\n getKeyboardListener() {\r\n return this._widget\r\n },\r\n _getWidgetOptions: function() {\r\n var disabledDates = this.dateBox.option(\"disabledDates\");\r\n return extend(this.dateBox.option(\"calendarOptions\"), {\r\n value: this.dateBoxValue() || null,\r\n dateSerializationFormat: null,\r\n min: this.dateBox.dateOption(\"min\"),\r\n max: this.dateBox.dateOption(\"max\"),\r\n onValueChanged: this._valueChangedHandler.bind(this),\r\n onCellClick: this._cellClickHandler.bind(this),\r\n tabIndex: null,\r\n disabledDates: isFunction(disabledDates) ? this._injectComponent(disabledDates.bind(this.dateBox)) : disabledDates,\r\n onContouredChanged: this._refreshActiveDescendant.bind(this),\r\n skipFocusCheck: true\r\n })\r\n },\r\n _injectComponent: function(func) {\r\n var that = this;\r\n return function(params) {\r\n extend(params, {\r\n component: that.dateBox\r\n });\r\n return func(params)\r\n }\r\n },\r\n _refreshActiveDescendant: function(e) {\r\n this._lastActionElement = \"calendar\";\r\n this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n },\r\n _getTodayButtonConfig() {\r\n var buttonsLocation = this.dateBox.option(\"buttonsLocation\");\r\n var isButtonsLocationDefault = \"default\" === buttonsLocation;\r\n var position = isButtonsLocationDefault ? [\"bottom\", \"center\"] : splitPair(buttonsLocation);\r\n return {\r\n widget: \"dxButton\",\r\n toolbar: position[0],\r\n location: \"after\" === position[1] ? \"before\" : position[1],\r\n options: {\r\n onInitialized: function(e) {\r\n e.component.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n }.bind(this),\r\n onClick: args => {\r\n this._widget._toTodayView(args)\r\n },\r\n text: this.dateBox.option(\"todayButtonText\"),\r\n type: \"today\"\r\n }\r\n }\r\n },\r\n _isCalendarVisible: function() {\r\n var {\r\n calendarOptions: calendarOptions\r\n } = this.dateBox.option();\r\n return isEmptyObject(calendarOptions) || false !== calendarOptions.visible\r\n },\r\n _getPopupToolbarItems(toolbarItems) {\r\n var useButtons = \"useButtons\" === this.dateBox.option(\"applyValueMode\");\r\n var shouldRenderTodayButton = useButtons && this._isCalendarVisible();\r\n if (shouldRenderTodayButton) {\r\n var todayButton = this._getTodayButtonConfig();\r\n return [todayButton, ...toolbarItems]\r\n }\r\n return toolbarItems\r\n },\r\n popupConfig: function(_popupConfig) {\r\n return extend(true, _popupConfig, {\r\n position: {\r\n collision: \"flipfit flip\"\r\n },\r\n width: \"auto\"\r\n })\r\n },\r\n _escapeHandler: function() {\r\n this.dateBox.close();\r\n this.dateBox.focus()\r\n },\r\n _valueChangedHandler: function(e) {\r\n var value = e.value;\r\n var prevValue = e.previousValue;\r\n if (dateUtils.sameDate(value, prevValue) && dateUtils.sameHoursAndMinutes(value, prevValue)) {\r\n return\r\n }\r\n if (\"instantly\" === this.dateBox.option(\"applyValueMode\")) {\r\n this.dateBoxValue(this.getValue(), e.event)\r\n }\r\n },\r\n _updateValue: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._widget.option(\"value\", this.dateBoxValue())\r\n },\r\n textChangedHandler: function() {\r\n this._lastActionElement = \"input\";\r\n if (this.dateBox.option(\"opened\") && this._widget) {\r\n this._updateValue(true)\r\n }\r\n },\r\n _cellClickHandler: function(e) {\r\n var dateBox = this.dateBox;\r\n if (\"instantly\" === dateBox.option(\"applyValueMode\")) {\r\n dateBox.option(\"opened\", false);\r\n this.dateBoxValue(this.getValue(), e.event)\r\n }\r\n }\r\n});\r\nexport default CalendarStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/animator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nvar abstract = Class.abstract;\r\nimport {\r\n requestAnimationFrame,\r\n cancelAnimationFrame\r\n} from \"../../animation/frame\";\r\nvar Animator = Class.inherit({\r\n ctor: function() {\r\n this._finished = true;\r\n this._stopped = false;\r\n this._proxiedStepCore = this._stepCore.bind(this)\r\n },\r\n start: function() {\r\n this._stopped = false;\r\n this._finished = false;\r\n this._stepCore()\r\n },\r\n stop: function() {\r\n this._stopped = true;\r\n cancelAnimationFrame(this._stepAnimationFrame)\r\n },\r\n _stepCore: function() {\r\n if (this._isStopped()) {\r\n this._stop();\r\n return\r\n }\r\n if (this._isFinished()) {\r\n this._finished = true;\r\n this._complete();\r\n return\r\n }\r\n this._step();\r\n this._stepAnimationFrame = requestAnimationFrame(this._proxiedStepCore)\r\n },\r\n _step: abstract,\r\n _isFinished: noop,\r\n _stop: noop,\r\n _complete: noop,\r\n _isStopped: function() {\r\n return this._stopped\r\n },\r\n inProgress: function() {\r\n return !(this._stopped || this._finished)\r\n }\r\n});\r\nexport default Animator;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollbar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport readyCallback from \"../../core/utils/ready_callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferRenderer\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nvar SCROLLBAR = \"dxScrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"\".concat(SCROLLABLE_SCROLLBAR_CLASS, \"-active\");\r\nvar SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nvar SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nvar HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar THUMB_MIN_SIZE = 15;\r\nvar SCROLLBAR_VISIBLE = {\r\n onScroll: \"onScroll\",\r\n onHover: \"onHover\",\r\n always: \"always\",\r\n never: \"never\"\r\n};\r\nvar activeScrollbar = null;\r\nvar Scrollbar = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n direction: null,\r\n visible: false,\r\n activeStateEnabled: false,\r\n visibilityMode: SCROLLBAR_VISIBLE.onScroll,\r\n containerSize: 0,\r\n contentSize: 0,\r\n expandable: true,\r\n scaleRatio: 1\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._isHovered = false\r\n },\r\n _initMarkup: function() {\r\n this._renderThumb();\r\n this.callBase()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderDirection();\r\n this._update();\r\n this._attachPointerDownHandler();\r\n this.option(\"hoverStateEnabled\", this._isHoverMode());\r\n this.$element().toggleClass(HOVER_ENABLED_STATE, this.option(\"hoverStateEnabled\"))\r\n },\r\n _renderThumb: function() {\r\n this._$thumb = $(\"<div>\").addClass(SCROLLABLE_SCROLL_CLASS);\r\n $(\"<div>\").addClass(SCROLLABLE_SCROLL_CONTENT_CLASS).appendTo(this._$thumb);\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_CLASS).append(this._$thumb)\r\n },\r\n isThumb: function($element) {\r\n return !!this.$element().find($element).length\r\n },\r\n _isHoverMode: function() {\r\n var visibilityMode = this.option(\"visibilityMode\");\r\n return (visibilityMode === SCROLLBAR_VISIBLE.onHover || visibilityMode === SCROLLBAR_VISIBLE.always) && this.option(\"expandable\")\r\n },\r\n _renderDirection: function() {\r\n var direction = this.option(\"direction\");\r\n this.$element().addClass(\"dx-scrollbar-\" + direction);\r\n this._dimension = direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._prop = direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _attachPointerDownHandler: function() {\r\n eventsEngine.on(this._$thumb, addNamespace(pointerEvents.down, SCROLLBAR), this.feedbackOn.bind(this))\r\n },\r\n feedbackOn: function() {\r\n this.$element().addClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = this\r\n },\r\n feedbackOff: function() {\r\n this.$element().removeClass(SCROLLABLE_SCROLLBAR_ACTIVE_CLASS);\r\n activeScrollbar = null\r\n },\r\n cursorEnter: function() {\r\n this._isHovered = true;\r\n if (this._needScrollbar()) {\r\n this.option(\"visible\", true)\r\n }\r\n },\r\n cursorLeave: function() {\r\n this._isHovered = false;\r\n this.option(\"visible\", false)\r\n },\r\n _renderDimensions: function() {\r\n this._$thumb.css({\r\n width: this.option(\"width\"),\r\n height: this.option(\"height\")\r\n })\r\n },\r\n _toggleVisibility: function(visible) {\r\n if (this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.onScroll) {\r\n this._$thumb.css(\"opacity\")\r\n }\r\n visible = this._adjustVisibility(visible);\r\n this.option().visible = visible;\r\n this._$thumb.toggleClass(\"dx-state-invisible\", !visible)\r\n },\r\n _adjustVisibility: function(visible) {\r\n if (this._baseContainerToContentRatio && !this._needScrollbar()) {\r\n return false\r\n }\r\n switch (this.option(\"visibilityMode\")) {\r\n case SCROLLBAR_VISIBLE.onScroll:\r\n break;\r\n case SCROLLBAR_VISIBLE.onHover:\r\n visible = visible || !!this._isHovered;\r\n break;\r\n case SCROLLBAR_VISIBLE.never:\r\n visible = false;\r\n break;\r\n case SCROLLBAR_VISIBLE.always:\r\n visible = true\r\n }\r\n return visible\r\n },\r\n moveTo: function(location) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n if (isPlainObject(location)) {\r\n location = location[this._prop] || 0\r\n }\r\n var scrollBarLocation = {};\r\n scrollBarLocation[this._prop] = this._calculateScrollBarPosition(location);\r\n move(this._$thumb, scrollBarLocation)\r\n },\r\n _calculateScrollBarPosition: function(location) {\r\n return -location * this._thumbRatio\r\n },\r\n _update: function() {\r\n var containerSize = Math.round(this.option(\"containerSize\"));\r\n var contentSize = Math.round(this.option(\"contentSize\"));\r\n var baseContainerSize = Math.round(this.option(\"baseContainerSize\"));\r\n var baseContentSize = Math.round(this.option(\"baseContentSize\"));\r\n if (isNaN(baseContainerSize)) {\r\n baseContainerSize = containerSize;\r\n baseContentSize = contentSize\r\n }\r\n this._baseContainerToContentRatio = baseContentSize ? baseContainerSize / baseContentSize : baseContainerSize;\r\n this._realContainerToContentRatio = contentSize ? containerSize / contentSize : containerSize;\r\n var thumbSize = Math.round(Math.max(Math.round(containerSize * this._realContainerToContentRatio), THUMB_MIN_SIZE));\r\n this._thumbRatio = (containerSize - thumbSize) / (this.option(\"scaleRatio\") * (contentSize - containerSize));\r\n this.option(this._dimension, thumbSize / this.option(\"scaleRatio\"));\r\n this.$element().css(\"display\", this._needScrollbar() ? \"\" : \"none\")\r\n },\r\n _isHidden: function() {\r\n return this.option(\"visibilityMode\") === SCROLLBAR_VISIBLE.never\r\n },\r\n _needScrollbar: function() {\r\n return !this._isHidden() && this._baseContainerToContentRatio < 1\r\n },\r\n containerToContentRatio: function() {\r\n return this._realContainerToContentRatio\r\n },\r\n _normalizeSize: function(size) {\r\n return isPlainObject(size) ? size[this._dimension] || 0 : size\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n if (this === activeScrollbar) {\r\n activeScrollbar = null\r\n }\r\n eventsEngine.off(this._$thumb, \".\" + SCROLLBAR)\r\n },\r\n _optionChanged: function(args) {\r\n if (this._isHidden()) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"containerSize\":\r\n case \"contentSize\":\r\n this.option()[args.name] = this._normalizeSize(args.value);\r\n this._update();\r\n break;\r\n case \"baseContentSize\":\r\n case \"baseContainerSize\":\r\n this._update();\r\n break;\r\n case \"visibilityMode\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"scaleRatio\":\r\n this._update();\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n update: deferRenderer((function() {\r\n this._adjustVisibility() && this.option(\"visible\", true)\r\n }))\r\n});\r\nreadyCallback.add((function() {\r\n eventsEngine.subscribeGlobal(domAdapter.getDocument(), addNamespace(pointerEvents.up, SCROLLBAR), (function() {\r\n if (activeScrollbar) {\r\n activeScrollbar.feedbackOff()\r\n }\r\n }))\r\n}));\r\nexport default Scrollbar;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.simulated.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n titleize\r\n} from \"../../core/utils/inflector\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n resetPosition,\r\n move,\r\n locate\r\n} from \"../../animation/translator\";\r\nimport Class from \"../../core/class\";\r\nimport Animator from \"./animator\";\r\nimport {\r\n isDxMouseWheelEvent,\r\n addNamespace as addEventNamespace,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n deferUpdate,\r\n deferUpdater,\r\n deferRender,\r\n deferRenderer,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nimport {\r\n when,\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLABLE_SIMULATED = \"dxSimulatedScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_SIMULATED_CURSOR = SCROLLABLE_SIMULATED + \"Cursor\";\r\nvar SCROLLABLE_SIMULATED_KEYBOARD = SCROLLABLE_SIMULATED + \"Keyboard\";\r\nvar SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nvar SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar ACCELERATION = .92;\r\nvar OUT_BOUNDS_ACCELERATION = .5;\r\nvar MIN_VELOCITY_LIMIT = 1;\r\nvar FRAME_DURATION = Math.round(1e3 / 60);\r\nvar SCROLL_LINE_HEIGHT = 40;\r\nvar VALIDATE_WHEEL_TIMEOUT = 500;\r\nvar BOUNCE_MIN_VELOCITY_LIMIT = MIN_VELOCITY_LIMIT / 5;\r\nvar BOUNCE_DURATION = 400;\r\nvar BOUNCE_FRAMES = BOUNCE_DURATION / FRAME_DURATION;\r\nvar BOUNCE_ACCELERATION_SUM = (1 - Math.pow(ACCELERATION, BOUNCE_FRAMES)) / (1 - ACCELERATION);\r\nvar KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\",\r\n TAB: \"tab\"\r\n};\r\nvar InertiaAnimator = Animator.inherit({\r\n ctor: function(scroller) {\r\n this.callBase();\r\n this.scroller = scroller\r\n },\r\n VELOCITY_LIMIT: MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return Math.abs(this.scroller._velocity) <= this.VELOCITY_LIMIT\r\n },\r\n _step: function() {\r\n this.scroller._scrollStep(this.scroller._velocity);\r\n this.scroller._velocity *= this._acceleration()\r\n },\r\n _acceleration: function() {\r\n return this.scroller._inBounds() ? ACCELERATION : OUT_BOUNDS_ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._scrollComplete()\r\n }\r\n});\r\nvar BounceAnimator = InertiaAnimator.inherit({\r\n VELOCITY_LIMIT: BOUNCE_MIN_VELOCITY_LIMIT,\r\n _isFinished: function() {\r\n return this.scroller._crossBoundOnNextStep() || this.callBase()\r\n },\r\n _acceleration: function() {\r\n return ACCELERATION\r\n },\r\n _complete: function() {\r\n this.scroller._move(this.scroller._bounceLocation);\r\n this.callBase()\r\n }\r\n});\r\nexport var Scroller = Class.inherit({\r\n ctor: function(options) {\r\n this._initOptions(options);\r\n this._initAnimators();\r\n this._initScrollbar()\r\n },\r\n _initOptions: function(options) {\r\n this._location = 0;\r\n this._topReached = false;\r\n this._bottomReached = false;\r\n this._axis = options.direction === HORIZONTAL ? \"x\" : \"y\";\r\n this._prop = options.direction === HORIZONTAL ? \"left\" : \"top\";\r\n this._dimension = options.direction === HORIZONTAL ? \"width\" : \"height\";\r\n this._scrollProp = options.direction === HORIZONTAL ? \"scrollLeft\" : \"scrollTop\";\r\n each(options, (optionName, optionValue) => {\r\n this[\"_\" + optionName] = optionValue\r\n })\r\n },\r\n _initAnimators: function() {\r\n this._inertiaAnimator = new InertiaAnimator(this);\r\n this._bounceAnimator = new BounceAnimator(this)\r\n },\r\n _initScrollbar: function() {\r\n this._scrollbar = new Scrollbar($(\"<div>\").appendTo(this._$container), {\r\n direction: this._direction,\r\n visible: this._scrollByThumb,\r\n visibilityMode: this._visibilityModeNormalize(this._scrollbarVisible),\r\n expandable: this._scrollByThumb\r\n });\r\n this._$scrollbar = this._scrollbar.$element()\r\n },\r\n _visibilityModeNormalize: function(mode) {\r\n return true === mode ? \"onScroll\" : false === mode ? \"never\" : mode\r\n },\r\n _scrollStep: function(delta) {\r\n var prevLocation = this._location;\r\n this._location += delta;\r\n this._suppressBounce();\r\n this._move();\r\n if (Math.abs(prevLocation - this._location) < 1) {\r\n return\r\n }\r\n eventsEngine.triggerHandler(this._$container, {\r\n type: \"scroll\"\r\n })\r\n },\r\n _suppressBounce: function() {\r\n if (this._bounceEnabled || this._inBounds(this._location)) {\r\n return\r\n }\r\n this._velocity = 0;\r\n this._location = this._boundLocation()\r\n },\r\n _boundLocation: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return Math.max(Math.min(location, this._maxOffset), this._minOffset)\r\n },\r\n _move: function(location) {\r\n this._location = void 0 !== location ? location * this._getScaleRatio() : this._location;\r\n this._moveContent();\r\n this._moveScrollbar()\r\n },\r\n _moveContent: function() {\r\n var location = this._location;\r\n this._$container[this._scrollProp](-location / this._getScaleRatio());\r\n this._moveContentByTranslator(location)\r\n },\r\n _getScaleRatio: function() {\r\n if (hasWindow() && !this._scaleRatio) {\r\n var element = this._$element.get(0);\r\n var realDimension = this._getRealDimension(element, this._dimension);\r\n var baseDimension = this._getBaseDimension(element, this._dimension);\r\n this._scaleRatio = Math.round(realDimension / baseDimension * 100) / 100\r\n }\r\n return this._scaleRatio || 1\r\n },\r\n _getRealDimension: function(element, dimension) {\r\n return Math.round(getBoundingRect(element)[dimension])\r\n },\r\n _getBaseDimension: function(element, dimension) {\r\n var dimensionName = \"offset\" + titleize(dimension);\r\n return element[dimensionName]\r\n },\r\n _moveContentByTranslator: function(location) {\r\n var translateOffset;\r\n var minOffset = -this._maxScrollPropValue;\r\n if (location > 0) {\r\n translateOffset = location\r\n } else if (location <= minOffset) {\r\n translateOffset = location - minOffset\r\n } else {\r\n translateOffset = location % 1\r\n }\r\n if (this._translateOffset === translateOffset) {\r\n return\r\n }\r\n var targetLocation = {};\r\n targetLocation[this._prop] = translateOffset;\r\n this._translateOffset = translateOffset;\r\n if (0 === translateOffset) {\r\n resetPosition(this._$content);\r\n return\r\n }\r\n move(this._$content, targetLocation)\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._location)\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds()) {\r\n this._hideScrollbar();\r\n if (this._completeDeferred) {\r\n this._completeDeferred.resolve()\r\n }\r\n }\r\n this._scrollToBounds()\r\n },\r\n _scrollToBounds: function() {\r\n if (this._inBounds()) {\r\n return\r\n }\r\n this._bounceAction();\r\n this._setupBounce();\r\n this._bounceAnimator.start()\r\n },\r\n _setupBounce: function() {\r\n var boundLocation = this._bounceLocation = this._boundLocation();\r\n var bounceDistance = boundLocation - this._location;\r\n this._velocity = bounceDistance / BOUNCE_ACCELERATION_SUM\r\n },\r\n _inBounds: function(location) {\r\n location = void 0 !== location ? location : this._location;\r\n return this._boundLocation(location) === location\r\n },\r\n _crossBoundOnNextStep: function() {\r\n var location = this._location;\r\n var nextLocation = location + this._velocity;\r\n return location < this._minOffset && nextLocation >= this._minOffset || location > this._maxOffset && nextLocation <= this._maxOffset\r\n },\r\n _initHandler: function(e) {\r\n this._stopScrolling();\r\n this._prepareThumbScrolling(e)\r\n },\r\n _stopScrolling: deferRenderer((function() {\r\n this._hideScrollbar();\r\n this._inertiaAnimator.stop();\r\n this._bounceAnimator.stop()\r\n })),\r\n _prepareThumbScrolling: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n return\r\n }\r\n var $target = $(e.originalEvent.target);\r\n var scrollbarClicked = this._isScrollbar($target);\r\n if (scrollbarClicked) {\r\n this._moveToMouseLocation(e)\r\n }\r\n this._thumbScrolling = scrollbarClicked || this._isThumb($target);\r\n this._crossThumbScrolling = !this._thumbScrolling && this._isAnyThumbScrolling($target);\r\n if (this._thumbScrolling) {\r\n this._scrollbar.feedbackOn()\r\n }\r\n },\r\n _isThumbScrollingHandler: function($target) {\r\n return this._isThumb($target)\r\n },\r\n _moveToMouseLocation: function(e) {\r\n var mouseLocation = e[\"page\" + this._axis.toUpperCase()] - this._$element.offset()[this._prop];\r\n var location = this._location + mouseLocation / this._containerToContentRatio() - getHeight(this._$container) / 2;\r\n this._scrollStep(-Math.round(location))\r\n },\r\n _startHandler: function() {\r\n this._showScrollbar()\r\n },\r\n _moveHandler: function(delta) {\r\n if (this._crossThumbScrolling) {\r\n return\r\n }\r\n if (this._thumbScrolling) {\r\n delta[this._axis] = -Math.round(delta[this._axis] / this._containerToContentRatio())\r\n }\r\n this._scrollBy(delta)\r\n },\r\n _scrollBy: function(delta) {\r\n delta = delta[this._axis];\r\n if (!this._inBounds()) {\r\n delta *= OUT_BOUNDS_ACCELERATION\r\n }\r\n this._scrollStep(delta)\r\n },\r\n _scrollByHandler: function(delta) {\r\n this._scrollBy(delta);\r\n this._scrollComplete()\r\n },\r\n _containerToContentRatio: function() {\r\n return this._scrollbar.containerToContentRatio()\r\n },\r\n _endHandler: function(velocity) {\r\n this._completeDeferred = new Deferred;\r\n this._velocity = velocity[this._axis];\r\n this._inertiaHandler();\r\n this._resetThumbScrolling();\r\n return this._completeDeferred.promise()\r\n },\r\n _inertiaHandler: function() {\r\n this._suppressInertia();\r\n this._inertiaAnimator.start()\r\n },\r\n _suppressInertia: function() {\r\n if (!this._inertiaEnabled || this._thumbScrolling) {\r\n this._velocity = 0\r\n }\r\n },\r\n _resetThumbScrolling: function() {\r\n this._thumbScrolling = false;\r\n this._crossThumbScrolling = false\r\n },\r\n _stopHandler: function() {\r\n if (this._thumbScrolling) {\r\n this._scrollComplete()\r\n }\r\n this._resetThumbScrolling();\r\n this._scrollToBounds()\r\n },\r\n _disposeHandler: function() {\r\n this._stopScrolling();\r\n this._$scrollbar.remove()\r\n },\r\n _updateHandler: function() {\r\n this._update();\r\n this._moveToBounds()\r\n },\r\n _update: function() {\r\n this._stopScrolling();\r\n return deferUpdate(() => {\r\n this._resetScaleRatio();\r\n this._updateLocation();\r\n this._updateBounds();\r\n this._updateScrollbar();\r\n deferRender(() => {\r\n this._moveScrollbar();\r\n this._scrollbar.update()\r\n })\r\n })\r\n },\r\n _resetScaleRatio: function() {\r\n this._scaleRatio = null\r\n },\r\n _updateLocation: function() {\r\n this._location = (locate(this._$content)[this._prop] - this._$container[this._scrollProp]()) * this._getScaleRatio()\r\n },\r\n _updateBounds: function() {\r\n this._maxOffset = this._getMaxOffset();\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return 0\r\n },\r\n _getMinOffset: function() {\r\n this._maxScrollPropValue = Math.max(this._contentSize() - this._containerSize(), 0);\r\n return -this._maxScrollPropValue\r\n },\r\n _updateScrollbar: deferUpdater((function() {\r\n var containerSize = this._containerSize();\r\n var contentSize = this._contentSize();\r\n var baseContainerSize = this._getBaseDimension(this._$container.get(0), this._dimension);\r\n var baseContentSize = this._getBaseDimension(this._$content.get(0), this._dimension);\r\n deferRender(() => {\r\n this._scrollbar.option({\r\n containerSize: containerSize,\r\n contentSize: contentSize,\r\n baseContainerSize: baseContainerSize,\r\n baseContentSize: baseContentSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n })\r\n })),\r\n _moveToBounds: deferRenderer(deferUpdater(deferRenderer((function() {\r\n var location = this._boundLocation();\r\n var locationChanged = location !== this._location;\r\n this._location = location;\r\n this._move();\r\n if (locationChanged) {\r\n this._scrollAction()\r\n }\r\n })))),\r\n _createActionsHandler: function(actions) {\r\n this._scrollAction = actions.scroll;\r\n this._bounceAction = actions.bounce\r\n },\r\n _showScrollbar: function() {\r\n this._scrollbar.option(\"visible\", true)\r\n },\r\n _hideScrollbar: function() {\r\n this._scrollbar.option(\"visible\", false)\r\n },\r\n _containerSize: function() {\r\n return this._getRealDimension(this._$container.get(0), this._dimension)\r\n },\r\n _contentSize: function() {\r\n var isOverflowHidden = \"hidden\" === this._$content.css(\"overflow\" + this._axis.toUpperCase());\r\n var contentSize = this._getRealDimension(this._$content.get(0), this._dimension);\r\n if (!isOverflowHidden) {\r\n var containerScrollSize = this._$content[0][\"scroll\" + titleize(this._dimension)] * this._getScaleRatio();\r\n contentSize = Math.max(containerScrollSize, contentSize)\r\n }\r\n return contentSize\r\n },\r\n _validateEvent: function(e) {\r\n var $target = $(e.originalEvent.target);\r\n return this._isThumb($target) || this._isScrollbar($target)\r\n },\r\n _isThumb: function($element) {\r\n return this._scrollByThumb && this._scrollbar.isThumb($element)\r\n },\r\n _isScrollbar: function($element) {\r\n return this._scrollByThumb && $element && $element.is(this._$scrollbar)\r\n },\r\n _reachedMin: function() {\r\n return Math.round(this._location - this._minOffset) <= 0\r\n },\r\n _reachedMax: function() {\r\n return Math.round(this._location - this._maxOffset) >= 0\r\n },\r\n _cursorEnterHandler: function() {\r\n this._resetScaleRatio();\r\n this._updateScrollbar();\r\n this._scrollbar.cursorEnter()\r\n },\r\n _cursorLeaveHandler: function() {\r\n this._scrollbar.cursorLeave()\r\n },\r\n dispose: noop\r\n});\r\nvar hoveredScrollable;\r\nvar activeScrollable;\r\nexport var SimulatedStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = $(scrollable.container());\r\n this._$wrapper = scrollable._$wrapper;\r\n this._$content = scrollable.$content();\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable)\r\n },\r\n render: function() {\r\n this._$element.addClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._createScrollers();\r\n if (this.option(\"useKeyboard\")) {\r\n this._$container.prop(\"tabIndex\", 0)\r\n }\r\n this._attachKeyboardHandler();\r\n this._attachCursorHandlers()\r\n },\r\n _createScrollers: function() {\r\n this._scrollers = {};\r\n if (this._isDirection(HORIZONTAL)) {\r\n this._createScroller(HORIZONTAL)\r\n }\r\n if (this._isDirection(VERTICAL)) {\r\n this._createScroller(VERTICAL)\r\n }\r\n this._$element.toggleClass(SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE, \"always\" === this.option(\"showScrollbar\"))\r\n },\r\n _createScroller: function(direction) {\r\n this._scrollers[direction] = new Scroller(this._scrollerOptions(direction))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return {\r\n direction: direction,\r\n $content: this._$content,\r\n $container: this._$container,\r\n $wrapper: this._$wrapper,\r\n $element: this._$element,\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n scrollbarVisible: this.option(\"showScrollbar\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n inertiaEnabled: this.option(\"inertiaEnabled\"),\r\n isAnyThumbScrolling: this._isAnyThumbScrolling.bind(this)\r\n }\r\n },\r\n _applyScaleRatio: function(targetLocation) {\r\n for (var direction in this._scrollers) {\r\n var prop = this._getPropByDirection(direction);\r\n if (isDefined(targetLocation[prop])) {\r\n var scroller = this._scrollers[direction];\r\n targetLocation[prop] *= scroller._getScaleRatio()\r\n }\r\n }\r\n return targetLocation\r\n },\r\n _isAnyThumbScrolling: function($target) {\r\n var result = false;\r\n this._eventHandler(\"isThumbScrolling\", $target).done((function(isThumbScrollingVertical, isThumbScrollingHorizontal) {\r\n result = isThumbScrollingVertical || isThumbScrollingHorizontal\r\n }));\r\n return result\r\n },\r\n handleInit: function(e) {\r\n this._suppressDirections(e);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"init\", e)\r\n },\r\n _suppressDirections: function(e) {\r\n if (isDxMouseWheelEvent(e.originalEvent)) {\r\n this._prepareDirections(true);\r\n return\r\n }\r\n this._prepareDirections();\r\n this._eachScroller((function(scroller, direction) {\r\n var $target = $(e.originalEvent.target);\r\n var isValid = scroller._validateEvent(e) || this.option(\"scrollByContent\") && this._isContent($target);\r\n this._validDirections[direction] = isValid\r\n }))\r\n },\r\n _isContent: function($element) {\r\n return !!$element.closest(this._$element).length\r\n },\r\n _prepareDirections: function(value) {\r\n value = value || false;\r\n this._validDirections = {};\r\n this._validDirections[HORIZONTAL] = value;\r\n this._validDirections[VERTICAL] = value\r\n },\r\n _eachScroller: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollers, (function(direction, scroller) {\r\n callback(scroller, direction)\r\n }))\r\n },\r\n handleStart: function(e) {\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"start\").done(this._startAction)\r\n },\r\n _saveActive: function() {\r\n activeScrollable = this\r\n },\r\n _resetActive: function() {\r\n if (activeScrollable === this) {\r\n activeScrollable = null\r\n }\r\n },\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n this._resetActive();\r\n return\r\n }\r\n this._saveActive();\r\n e.preventDefault && e.preventDefault();\r\n this._adjustDistance(e, e.delta);\r\n this._eventForUserAction = e;\r\n this._eventHandler(\"move\", e.delta)\r\n },\r\n _adjustDistance: function(e, distance) {\r\n distance.x *= this._validDirections[HORIZONTAL];\r\n distance.y *= this._validDirections[VERTICAL];\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n if (devicePixelRatio && isDxMouseWheelEvent(e.originalEvent)) {\r\n distance.x = Math.round(distance.x / devicePixelRatio * 100) / 100;\r\n distance.y = Math.round(distance.y / devicePixelRatio * 100) / 100\r\n }\r\n },\r\n _tryGetDevicePixelRatio: function() {\r\n if (hasWindow()) {\r\n return getWindow().devicePixelRatio\r\n }\r\n },\r\n handleEnd: function(e) {\r\n this._resetActive();\r\n this._refreshCursorState(e.originalEvent && e.originalEvent.target);\r\n this._adjustDistance(e, e.velocity);\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", e.velocity).done(this._endAction)\r\n },\r\n handleCancel: function(e) {\r\n this._resetActive();\r\n this._eventForUserAction = e;\r\n return this._eventHandler(\"end\", {\r\n x: 0,\r\n y: 0\r\n })\r\n },\r\n handleStop: function() {\r\n this._resetActive();\r\n this._eventHandler(\"stop\")\r\n },\r\n handleScroll: function() {\r\n this._updateRtlConfig();\r\n this._scrollAction()\r\n },\r\n _attachKeyboardHandler: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD));\r\n if (!this.option(\"disabled\") && this.option(\"useKeyboard\")) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"keydown\", SCROLLABLE_SIMULATED_KEYBOARD), this._keyDownHandler.bind(this))\r\n }\r\n },\r\n _keyDownHandler: function(e) {\r\n clearTimeout(this._updateHandlerTimeout);\r\n this._updateHandlerTimeout = setTimeout(() => {\r\n if (normalizeKeyName(e) === KEY_CODES.TAB) {\r\n this._eachScroller(scroller => {\r\n scroller._updateHandler()\r\n })\r\n }\r\n });\r\n if (!this._$container.is(domAdapter.getActiveElement(this._$container.get(0)))) {\r\n return\r\n }\r\n var handled = true;\r\n switch (normalizeKeyName(e)) {\r\n case KEY_CODES.DOWN:\r\n this._scrollByLine({\r\n y: 1\r\n });\r\n break;\r\n case KEY_CODES.UP:\r\n this._scrollByLine({\r\n y: -1\r\n });\r\n break;\r\n case KEY_CODES.RIGHT:\r\n this._scrollByLine({\r\n x: 1\r\n });\r\n break;\r\n case KEY_CODES.LEFT:\r\n this._scrollByLine({\r\n x: -1\r\n });\r\n break;\r\n case KEY_CODES.PAGE_DOWN:\r\n this._scrollByPage(1);\r\n break;\r\n case KEY_CODES.PAGE_UP:\r\n this._scrollByPage(-1);\r\n break;\r\n case KEY_CODES.HOME:\r\n this._scrollToHome();\r\n break;\r\n case KEY_CODES.END:\r\n this._scrollToEnd();\r\n break;\r\n default:\r\n handled = false\r\n }\r\n if (handled) {\r\n e.stopPropagation();\r\n e.preventDefault()\r\n }\r\n },\r\n _scrollByLine: function(lines) {\r\n var devicePixelRatio = this._tryGetDevicePixelRatio();\r\n var scrollOffset = SCROLL_LINE_HEIGHT;\r\n if (devicePixelRatio) {\r\n scrollOffset = Math.abs(scrollOffset / devicePixelRatio * 100) / 100\r\n }\r\n this.scrollBy({\r\n top: (lines.y || 0) * -scrollOffset,\r\n left: (lines.x || 0) * -scrollOffset\r\n })\r\n },\r\n _scrollByPage: function(page) {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n var getter = \"width\" === dimension ? getWidth : getHeight;\r\n distance[prop] = page * -getter(this._$container);\r\n this.scrollBy(distance)\r\n },\r\n _dimensionByProp: function(prop) {\r\n return \"left\" === prop ? \"width\" : \"height\"\r\n },\r\n _getPropByDirection: function(direction) {\r\n return direction === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _scrollToHome: function() {\r\n var prop = this._wheelProp();\r\n var distance = {};\r\n distance[prop] = 0;\r\n this._component.scrollTo(distance)\r\n },\r\n _scrollToEnd: function() {\r\n var prop = this._wheelProp();\r\n var dimension = this._dimensionByProp(prop);\r\n var distance = {};\r\n var getter = \"width\" === dimension ? getWidth : getHeight;\r\n distance[prop] = getter(this._$content) - getter(this._$container);\r\n this._component.scrollTo(distance)\r\n },\r\n createActions: function() {\r\n this._startAction = this._createActionHandler(\"onStart\");\r\n this._endAction = this._createActionHandler(\"onEnd\");\r\n this._updateAction = this._createActionHandler(\"onUpdated\");\r\n this._createScrollerActions()\r\n },\r\n _createScrollerActions: function() {\r\n this._scrollAction = this._createActionHandler(\"onScroll\");\r\n this._bounceAction = this._createActionHandler(\"onBounce\");\r\n this._eventHandler(\"createActions\", {\r\n scroll: this._scrollAction,\r\n bounce: this._bounceAction\r\n })\r\n },\r\n _createActionHandler: function(optionName) {\r\n var actionHandler = this._createActionByOption(optionName);\r\n return () => {\r\n actionHandler(extend(this._createActionArgs(), arguments))\r\n }\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n horizontal: scrollerX,\r\n vertical: scrollerY\r\n } = this._scrollers;\r\n var offset = this._getScrollOffset();\r\n this._scrollOffset = {\r\n top: scrollerY && offset.top,\r\n left: scrollerX && offset.left\r\n };\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._scrollOffset,\r\n reachedLeft: scrollerX && scrollerX._reachedMax(),\r\n reachedRight: scrollerX && scrollerX._reachedMin(),\r\n reachedTop: scrollerY && scrollerY._reachedMax(),\r\n reachedBottom: scrollerY && scrollerY._reachedMin()\r\n }\r\n },\r\n _getScrollOffset() {\r\n return {\r\n top: -this.location().top,\r\n left: -this.location().left\r\n }\r\n },\r\n _eventHandler: function(eventName) {\r\n var args = [].slice.call(arguments).slice(1);\r\n var deferreds = map(this._scrollers, scroller => scroller[\"_\" + eventName + \"Handler\"].apply(scroller, args));\r\n return when.apply($, deferreds).promise()\r\n },\r\n location: function() {\r\n var location = locate(this._$content);\r\n location.top -= this._$container.scrollTop();\r\n location.left -= this._$container.scrollLeft();\r\n return location\r\n },\r\n disabledChanged: function() {\r\n this._attachCursorHandlers()\r\n },\r\n _attachCursorHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n if (!this.option(\"disabled\") && this._isHoverMode()) {\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseenter\", SCROLLABLE_SIMULATED_CURSOR), this._cursorEnterHandler.bind(this));\r\n eventsEngine.on(this._$element, addEventNamespace(\"mouseleave\", SCROLLABLE_SIMULATED_CURSOR), this._cursorLeaveHandler.bind(this))\r\n }\r\n },\r\n _isHoverMode: function() {\r\n return \"onHover\" === this.option(\"showScrollbar\")\r\n },\r\n _cursorEnterHandler: function(e) {\r\n e = e || {};\r\n e.originalEvent = e.originalEvent || {};\r\n if (activeScrollable || e.originalEvent._hoverHandled) {\r\n return\r\n }\r\n if (hoveredScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n hoveredScrollable = this;\r\n this._eventHandler(\"cursorEnter\");\r\n e.originalEvent._hoverHandled = true\r\n },\r\n _cursorLeaveHandler: function(e) {\r\n if (hoveredScrollable !== this || activeScrollable === hoveredScrollable) {\r\n return\r\n }\r\n this._eventHandler(\"cursorLeave\");\r\n hoveredScrollable = null;\r\n this._refreshCursorState(e && e.relatedTarget)\r\n },\r\n _refreshCursorState: function(target) {\r\n if (!this._isHoverMode() && (!target || activeScrollable)) {\r\n return\r\n }\r\n var $target = $(target);\r\n var $scrollable = $target.closest(\".\".concat(SCROLLABLE_SIMULATED_CLASS, \":not(.dx-state-disabled)\"));\r\n var targetScrollable = $scrollable.length && $scrollable.data(SCROLLABLE_STRATEGY);\r\n if (hoveredScrollable && hoveredScrollable !== targetScrollable) {\r\n hoveredScrollable._cursorLeaveHandler()\r\n }\r\n if (targetScrollable) {\r\n targetScrollable._cursorEnterHandler()\r\n }\r\n },\r\n update: function() {\r\n var result = this._eventHandler(\"update\").done(this._updateAction);\r\n return when(result, deferUpdate(() => {\r\n var allowedDirections = this._allowedDirections();\r\n deferRender(() => {\r\n var touchDirection = allowedDirections.vertical ? \"pan-x\" : \"\";\r\n touchDirection = allowedDirections.horizontal ? \"pan-y\" : touchDirection;\r\n touchDirection = allowedDirections.vertical && allowedDirections.horizontal ? \"none\" : touchDirection;\r\n this._$container.css(\"touchAction\", touchDirection)\r\n });\r\n return when().promise()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n var bounceEnabled = this.option(\"bounceEnabled\");\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n return {\r\n vertical: verticalScroller && (verticalScroller._minOffset < 0 || bounceEnabled),\r\n horizontal: horizontalScroller && (horizontalScroller._minOffset < 0 || bounceEnabled)\r\n }\r\n },\r\n _updateBounds: function() {\r\n this._scrollers[HORIZONTAL] && this._scrollers[HORIZONTAL]._updateBounds()\r\n },\r\n _isHorizontalAndRtlEnabled: function() {\r\n return this.option(\"rtlEnabled\") && this.option(\"direction\") !== VERTICAL\r\n },\r\n updateRtlPosition: function(needInitializeRtlConfig) {\r\n if (needInitializeRtlConfig) {\r\n this._rtlConfig = {\r\n scrollRight: 0,\r\n clientWidth: this._$container.get(0).clientWidth,\r\n windowPixelRatio: this._getWindowDevicePixelRatio()\r\n }\r\n }\r\n this._updateBounds();\r\n if (this._isHorizontalAndRtlEnabled()) {\r\n var scrollLeft = this._getMaxOffset().left - this._rtlConfig.scrollRight;\r\n if (scrollLeft <= 0) {\r\n scrollLeft = 0;\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left\r\n }\r\n if (this._getScrollOffset().left !== scrollLeft) {\r\n this._rtlConfig.skipUpdating = true;\r\n this._component.scrollTo({\r\n left: scrollLeft\r\n });\r\n this._rtlConfig.skipUpdating = false\r\n }\r\n }\r\n },\r\n _updateRtlConfig: function() {\r\n if (this._isHorizontalAndRtlEnabled() && !this._rtlConfig.skipUpdating) {\r\n var {\r\n clientWidth: clientWidth,\r\n scrollLeft: scrollLeft\r\n } = this._$container.get(0);\r\n var windowPixelRatio = this._getWindowDevicePixelRatio();\r\n if (this._rtlConfig.windowPixelRatio === windowPixelRatio && this._rtlConfig.clientWidth === clientWidth) {\r\n this._rtlConfig.scrollRight = this._getMaxOffset().left - scrollLeft\r\n }\r\n this._rtlConfig.clientWidth = clientWidth;\r\n this._rtlConfig.windowPixelRatio = windowPixelRatio\r\n }\r\n },\r\n _getWindowDevicePixelRatio: function() {\r\n return hasWindow() ? getWindow().devicePixelRatio : 1\r\n },\r\n scrollBy: function(distance) {\r\n var verticalScroller = this._scrollers[VERTICAL];\r\n var horizontalScroller = this._scrollers[HORIZONTAL];\r\n if (verticalScroller) {\r\n distance.top = verticalScroller._boundLocation(distance.top + verticalScroller._location) - verticalScroller._location\r\n }\r\n if (horizontalScroller) {\r\n distance.left = horizontalScroller._boundLocation(distance.left + horizontalScroller._location) - horizontalScroller._location\r\n }\r\n this._prepareDirections(true);\r\n this._startAction();\r\n this._eventHandler(\"scrollBy\", {\r\n x: distance.left,\r\n y: distance.top\r\n });\r\n this._endAction();\r\n this._updateRtlConfig()\r\n },\r\n validate: function(e) {\r\n if (isDxMouseWheelEvent(e) && isCommandKeyPressed(e)) {\r\n return false\r\n }\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (this.option(\"bounceEnabled\")) {\r\n return true\r\n }\r\n return isDxMouseWheelEvent(e) ? this._validateWheel(e) : this._validateMove(e)\r\n },\r\n _validateWheel: function(e) {\r\n var scroller = this._scrollers[this._wheelDirection(e)];\r\n var reachedMin = scroller._reachedMin();\r\n var reachedMax = scroller._reachedMax();\r\n var contentGreaterThanContainer = !reachedMin || !reachedMax;\r\n var locatedNotAtBound = !reachedMin && !reachedMax;\r\n var scrollFromMin = reachedMin && e.delta > 0;\r\n var scrollFromMax = reachedMax && e.delta < 0;\r\n var validated = contentGreaterThanContainer && (locatedNotAtBound || scrollFromMin || scrollFromMax);\r\n validated = validated || void 0 !== this._validateWheelTimer;\r\n if (validated) {\r\n clearTimeout(this._validateWheelTimer);\r\n this._validateWheelTimer = setTimeout(() => {\r\n this._validateWheelTimer = void 0\r\n }, VALIDATE_WHEEL_TIMEOUT)\r\n }\r\n return validated\r\n },\r\n _validateMove: function(e) {\r\n if (!this.option(\"scrollByContent\") && !$(e.target).closest(\".\".concat(SCROLLABLE_SCROLLBAR_CLASS)).length) {\r\n return false\r\n }\r\n return this._allowedDirection()\r\n },\r\n getDirection: function(e) {\r\n return isDxMouseWheelEvent(e) ? this._wheelDirection(e) : this._allowedDirection()\r\n },\r\n _wheelProp: function() {\r\n return this._wheelDirection() === HORIZONTAL ? \"left\" : \"top\"\r\n },\r\n _wheelDirection: function(e) {\r\n switch (this.option(\"direction\")) {\r\n case HORIZONTAL:\r\n return HORIZONTAL;\r\n case VERTICAL:\r\n return VERTICAL;\r\n default:\r\n return e && e.shiftKey ? HORIZONTAL : VERTICAL\r\n }\r\n },\r\n dispose: function() {\r\n this._resetActive();\r\n if (hoveredScrollable === this) {\r\n hoveredScrollable = null\r\n }\r\n this._eventHandler(\"dispose\");\r\n this._detachEventHandlers();\r\n this._$element.removeClass(SCROLLABLE_SIMULATED_CLASS);\r\n this._eventForUserAction = null;\r\n clearTimeout(this._validateWheelTimer);\r\n clearTimeout(this._updateHandlerTimeout)\r\n },\r\n _detachEventHandlers: function() {\r\n eventsEngine.off(this._$element, \".\".concat(SCROLLABLE_SIMULATED_CURSOR));\r\n eventsEngine.off(this._$container, \".\".concat(SCROLLABLE_SIMULATED_KEYBOARD))\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.native.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n isDxMouseWheelEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport devices from \"../../core/devices\";\r\nimport Class from \"../../core/class\";\r\nimport Scrollbar from \"./ui.scrollbar\";\r\nvar SCROLLABLE_NATIVE = \"dxNativeScrollable\";\r\nvar SCROLLABLE_NATIVE_CLASS = \"dx-scrollable-native\";\r\nvar SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nvar SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar HIDE_SCROLLBAR_TIMEOUT = 500;\r\nvar NativeStrategy = Class.inherit({\r\n ctor: function(scrollable) {\r\n this._init(scrollable)\r\n },\r\n _init: function(scrollable) {\r\n this._component = scrollable;\r\n this._$element = scrollable.$element();\r\n this._$container = $(scrollable.container());\r\n this._$content = scrollable.$content();\r\n this._direction = scrollable.option(\"direction\");\r\n this._useSimulatedScrollbar = scrollable.option(\"useSimulatedScrollbar\");\r\n this.option = scrollable.option.bind(scrollable);\r\n this._createActionByOption = scrollable._createActionByOption.bind(scrollable);\r\n this._isLocked = scrollable._isLocked.bind(scrollable);\r\n this._isDirection = scrollable._isDirection.bind(scrollable);\r\n this._allowedDirection = scrollable._allowedDirection.bind(scrollable);\r\n this._getMaxOffset = scrollable._getMaxOffset.bind(scrollable);\r\n this._isRtlNativeStrategy = scrollable._isRtlNativeStrategy.bind(scrollable)\r\n },\r\n render: function() {\r\n var device = devices.real();\r\n var deviceType = device.platform;\r\n this._$element.addClass(SCROLLABLE_NATIVE_CLASS).addClass(SCROLLABLE_NATIVE_CLASS + \"-\" + deviceType).toggleClass(SCROLLABLE_SCROLLBARS_HIDDEN, !this._isScrollbarVisible());\r\n if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {\r\n this._renderScrollbars()\r\n }\r\n },\r\n updateRtlPosition: function(isFirstRender) {\r\n if (isFirstRender && this.option(\"rtlEnabled\")) {\r\n if (this._isScrollbarVisible() && this._useSimulatedScrollbar) {\r\n this._moveScrollbars()\r\n }\r\n }\r\n },\r\n _renderScrollbars: function() {\r\n this._scrollbars = {};\r\n this._hideScrollbarTimeout = 0;\r\n this._$element.addClass(SCROLLABLE_SCROLLBAR_SIMULATED);\r\n this._renderScrollbar(VERTICAL);\r\n this._renderScrollbar(HORIZONTAL)\r\n },\r\n _renderScrollbar: function(direction) {\r\n if (!this._isDirection(direction)) {\r\n return\r\n }\r\n this._scrollbars[direction] = new Scrollbar($(\"<div>\").appendTo(this._$element), {\r\n direction: direction,\r\n expandable: this._component.option(\"scrollByThumb\")\r\n })\r\n },\r\n handleInit: noop,\r\n handleStart: noop,\r\n handleMove: function(e) {\r\n if (this._isLocked()) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._allowedDirection()) {\r\n e.originalEvent.isScrollingEvent = true\r\n }\r\n },\r\n handleEnd: noop,\r\n handleCancel: noop,\r\n handleStop: noop,\r\n _eachScrollbar: function(callback) {\r\n callback = callback.bind(this);\r\n each(this._scrollbars || {}, (function(direction, scrollbar) {\r\n callback(scrollbar, direction)\r\n }))\r\n },\r\n createActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._updateAction = this._createActionByOption(\"onUpdated\")\r\n },\r\n _createActionArgs: function() {\r\n var {\r\n left: left,\r\n top: top\r\n } = this.location();\r\n return {\r\n event: this._eventForUserAction,\r\n scrollOffset: this._getScrollOffset(),\r\n reachedLeft: this._isRtlNativeStrategy() ? this._isReachedRight(-left) : this._isReachedLeft(left),\r\n reachedRight: this._isRtlNativeStrategy() ? this._isReachedLeft(-Math.abs(left)) : this._isReachedRight(left),\r\n reachedTop: this._isDirection(VERTICAL) ? Math.round(top) >= 0 : void 0,\r\n reachedBottom: this._isDirection(VERTICAL) ? Math.round(Math.abs(top) - this._getMaxOffset().top) >= 0 : void 0\r\n }\r\n },\r\n _getScrollOffset: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this.location();\r\n return {\r\n top: -top,\r\n left: this._normalizeOffsetLeft(-left)\r\n }\r\n },\r\n _normalizeOffsetLeft(scrollLeft) {\r\n if (this._isRtlNativeStrategy()) {\r\n return this._getMaxOffset().left + scrollLeft\r\n }\r\n return scrollLeft\r\n },\r\n _isReachedLeft: function(left) {\r\n return this._isDirection(HORIZONTAL) ? Math.round(left) >= 0 : void 0\r\n },\r\n _isReachedRight: function(left) {\r\n return this._isDirection(HORIZONTAL) ? Math.round(Math.abs(left) - this._getMaxOffset().left) >= 0 : void 0\r\n },\r\n _isScrollbarVisible: function() {\r\n var {\r\n showScrollbar: showScrollbar\r\n } = this.option();\r\n return \"never\" !== showScrollbar && false !== showScrollbar\r\n },\r\n handleScroll: function(e) {\r\n this._eventForUserAction = e;\r\n this._moveScrollbars();\r\n this._scrollAction(this._createActionArgs())\r\n },\r\n _moveScrollbars: function() {\r\n var {\r\n top: top,\r\n left: left\r\n } = this._getScrollOffset();\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.moveTo({\r\n top: -top,\r\n left: -left\r\n });\r\n scrollbar.option(\"visible\", true)\r\n }));\r\n this._hideScrollbars()\r\n },\r\n _hideScrollbars: function() {\r\n clearTimeout(this._hideScrollbarTimeout);\r\n this._hideScrollbarTimeout = setTimeout(function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.option(\"visible\", false)\r\n }))\r\n }.bind(this), HIDE_SCROLLBAR_TIMEOUT)\r\n },\r\n location: function() {\r\n return {\r\n left: -this._$container.scrollLeft(),\r\n top: -this._$container.scrollTop()\r\n }\r\n },\r\n disabledChanged: noop,\r\n update: function() {\r\n this._update();\r\n this._updateAction(this._createActionArgs())\r\n },\r\n _update: function() {\r\n this._updateDimensions();\r\n this._updateScrollbars()\r\n },\r\n _updateDimensions: function() {\r\n this._containerSize = {\r\n height: getHeight(this._$container),\r\n width: getWidth(this._$container)\r\n };\r\n this._componentContentSize = {\r\n height: getHeight(this._component.$content()),\r\n width: getWidth(this._component.$content())\r\n };\r\n this._contentSize = {\r\n height: getHeight(this._$content),\r\n width: getWidth(this._$content)\r\n }\r\n },\r\n _updateScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar, direction) {\r\n var dimension = direction === VERTICAL ? \"height\" : \"width\";\r\n scrollbar.option({\r\n containerSize: this._containerSize[dimension],\r\n contentSize: this._componentContentSize[dimension]\r\n });\r\n scrollbar.update()\r\n }))\r\n },\r\n _allowedDirections: function() {\r\n return {\r\n vertical: this._isDirection(VERTICAL) && this._contentSize.height > this._containerSize.height,\r\n horizontal: this._isDirection(HORIZONTAL) && this._contentSize.width > this._containerSize.width\r\n }\r\n },\r\n dispose: function() {\r\n var className = this._$element.get(0).className;\r\n var scrollableNativeRegexp = new RegExp(SCROLLABLE_NATIVE_CLASS + \"\\\\S*\", \"g\");\r\n if (scrollableNativeRegexp.test(className)) {\r\n this._$element.removeClass(className.match(scrollableNativeRegexp).join(\" \"))\r\n }\r\n eventsEngine.off(this._$element, \".\" + SCROLLABLE_NATIVE);\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE_NATIVE);\r\n this._removeScrollbars();\r\n clearTimeout(this._hideScrollbarTimeout)\r\n },\r\n _removeScrollbars: function() {\r\n this._eachScrollbar((function(scrollbar) {\r\n scrollbar.$element().remove()\r\n }))\r\n },\r\n scrollBy: function(distance) {\r\n var location = this.location();\r\n this._$container.scrollTop(Math.round(-location.top - distance.top));\r\n this._$container.scrollLeft(Math.round(-location.left - distance.left))\r\n },\r\n validate: function(e) {\r\n if (this.option(\"disabled\")) {\r\n return false\r\n }\r\n if (isDxMouseWheelEvent(e) && this._isScrolledInMaxDirection(e)) {\r\n return false\r\n }\r\n return !!this._allowedDirection()\r\n },\r\n _isScrolledInMaxDirection(e) {\r\n var container = this._$container.get(0);\r\n var result;\r\n if (e.delta > 0) {\r\n result = e.shiftKey ? !container.scrollLeft : !container.scrollTop\r\n } else if (e.shiftKey) {\r\n result = container.scrollLeft >= this._getMaxOffset().left\r\n } else {\r\n result = container.scrollTop >= this._getMaxOffset().top\r\n }\r\n return result\r\n },\r\n getDirection: function() {\r\n return this._allowedDirection()\r\n }\r\n});\r\nexport default NativeStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.device.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n nativeScrolling,\r\n touch\r\n} from \"../../core/utils/support\";\r\nexport var deviceDependentOptions = function() {\r\n return [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNative: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n bounceEnabled: false,\r\n scrollByThumb: true,\r\n scrollByContent: touch,\r\n showScrollbar: \"onHover\"\r\n }\r\n }]\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/common/consts.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var SCROLL_LINE_HEIGHT = 40;\r\nexport var DIRECTION_VERTICAL = \"vertical\";\r\nexport var DIRECTION_HORIZONTAL = \"horizontal\";\r\nexport var DIRECTION_BOTH = \"both\";\r\nexport var SCROLLABLE_SIMULATED_CLASS = \"dx-scrollable-simulated\";\r\nexport var SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nexport var SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nexport var SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nexport var SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nexport var SCROLLABLE_SCROLLBAR_SIMULATED = \"dx-scrollable-scrollbar-simulated\";\r\nexport var SCROLLABLE_SCROLLBARS_HIDDEN = \"dx-scrollable-scrollbars-hidden\";\r\nexport var SCROLLABLE_SCROLLBARS_ALWAYSVISIBLE = \"dx-scrollable-scrollbars-alwaysvisible\";\r\nexport var SCROLLABLE_SCROLLBAR_CLASS = \"dx-scrollable-scrollbar\";\r\nexport var SCROLLABLE_SCROLLBAR_ACTIVE_CLASS = \"dx-scrollable-scrollbar-active\";\r\nexport var SCROLLABLE_SCROLL_CLASS = \"dx-scrollable-scroll\";\r\nexport var SCROLLABLE_SCROLL_CONTENT_CLASS = \"dx-scrollable-scroll-content\";\r\nexport var HOVER_ENABLED_STATE = \"dx-scrollbar-hoverable\";\r\nexport var SCROLLVIEW_CONTENT_CLASS = \"dx-scrollview-content\";\r\nexport var SCROLLVIEW_TOP_POCKET_CLASS = \"dx-scrollview-top-pocket\";\r\nexport var SCROLLVIEW_PULLDOWN = \"dx-scrollview-pull-down\";\r\nexport var SCROLLVIEW_PULLDOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nexport var SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nexport var SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nexport var SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nexport var SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nexport var SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nexport var PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nexport var SCROLLVIEW_BOTTOM_POCKET_CLASS = \"dx-scrollview-bottom-pocket\";\r\nexport var SCROLLVIEW_REACHBOTTOM_CLASS = \"dx-scrollview-scrollbottom\";\r\nexport var SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = \"dx-scrollview-scrollbottom-indicator\";\r\nexport var SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = \"dx-scrollview-scrollbottom-text\";\r\nexport var TopPocketState = {\r\n STATE_RELEASED: 0,\r\n STATE_READY: 1,\r\n STATE_REFRESHING: 2,\r\n STATE_LOADING: 3,\r\n STATE_TOUCHED: 4,\r\n STATE_PULLED: 5\r\n};\r\nexport var ShowScrollbarMode = {\r\n HOVER: \"onHover\",\r\n ALWAYS: \"always\",\r\n NEVER: \"never\",\r\n SCROLL: \"onScroll\"\r\n};\r\nexport var KEY_CODES = {\r\n PAGE_UP: \"pageUp\",\r\n PAGE_DOWN: \"pageDown\",\r\n END: \"end\",\r\n HOME: \"home\",\r\n LEFT: \"leftArrow\",\r\n UP: \"upArrow\",\r\n RIGHT: \"rightArrow\",\r\n DOWN: \"downArrow\"\r\n};\r\nexport var VALIDATE_WHEEL_TIMEOUT = 500;\r\nexport var HIDE_SCROLLBAR_TIMEOUT = 500;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.old.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getWidth,\r\n getOuterWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport {\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport devices from \"../../core/devices\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport DOMComponent from \"../../core/dom_component\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport scrollEvents from \"../../events/gesture/emitter.gesture.scroll\";\r\nimport {\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"./ui.scrollable.device\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n getElementLocationInternal\r\n} from \"../../renovation/ui/scroll_view/utils/get_element_location_internal\";\r\nvar SCROLLABLE = \"dxScrollable\";\r\nvar SCROLLABLE_STRATEGY = \"dxScrollableStrategy\";\r\nvar SCROLLABLE_CLASS = \"dx-scrollable\";\r\nvar SCROLLABLE_DISABLED_CLASS = \"dx-scrollable-disabled\";\r\nvar SCROLLABLE_CONTAINER_CLASS = \"dx-scrollable-container\";\r\nvar SCROLLABLE_WRAPPER_CLASS = \"dx-scrollable-wrapper\";\r\nvar SCROLLABLE_CONTENT_CLASS = \"dx-scrollable-content\";\r\nvar VERTICAL = \"vertical\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar BOTH = \"both\";\r\nvar Scrollable = DOMComponent.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n disabled: false,\r\n onScroll: null,\r\n direction: VERTICAL,\r\n showScrollbar: \"onScroll\",\r\n useNative: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n onUpdated: null,\r\n onStart: null,\r\n onEnd: null,\r\n onBounce: null,\r\n useSimulatedScrollbar: false,\r\n useKeyboard: true,\r\n inertiaEnabled: true,\r\n updateManually: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return nativeScrolling && \"android\" === devices.real().platform && !browser.mozilla\r\n },\r\n options: {\r\n useSimulatedScrollbar: true\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this.callBase(options);\r\n if (!(\"useSimulatedScrollbar\" in options)) {\r\n this._setUseSimulatedScrollbar()\r\n }\r\n },\r\n _setUseSimulatedScrollbar: function() {\r\n if (!this.initialOption(\"useSimulatedScrollbar\")) {\r\n this.option(\"useSimulatedScrollbar\", !this.option(\"useNative\"))\r\n }\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initScrollableMarkup();\r\n this._locked = false\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.update();\r\n this._updateRtlPosition();\r\n this._savedScrollOffset && this.scrollTo(this._savedScrollOffset);\r\n delete this._savedScrollOffset\r\n } else {\r\n this._savedScrollOffset = this.scrollOffset()\r\n }\r\n },\r\n _initScrollableMarkup: function() {\r\n var $element = this.$element().addClass(SCROLLABLE_CLASS);\r\n var $container = this._$container = $(\"<div>\").addClass(SCROLLABLE_CONTAINER_CLASS);\r\n var $wrapper = this._$wrapper = $(\"<div>\").addClass(SCROLLABLE_WRAPPER_CLASS);\r\n var $content = this._$content = $(\"<div>\").addClass(SCROLLABLE_CONTENT_CLASS);\r\n $content.append($element.contents()).appendTo($container);\r\n $container.appendTo($wrapper);\r\n $wrapper.appendTo($element)\r\n },\r\n _dimensionChanged: function() {\r\n this.update();\r\n this._updateRtlPosition()\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderDirection()\r\n },\r\n _render: function() {\r\n this._renderStrategy();\r\n this._attachEventHandlers();\r\n this._renderDisabledState();\r\n this._createActions();\r\n this.update();\r\n this.callBase();\r\n this._updateRtlPosition(true)\r\n },\r\n _updateRtlPosition: function(needInitializeRtlConfig) {\r\n this._strategy.updateRtlPosition(needInitializeRtlConfig)\r\n },\r\n _getMaxOffset: function() {\r\n var {\r\n scrollWidth: scrollWidth,\r\n clientWidth: clientWidth,\r\n scrollHeight: scrollHeight,\r\n clientHeight: clientHeight\r\n } = $(this.container()).get(0);\r\n return {\r\n left: scrollWidth - clientWidth,\r\n top: scrollHeight - clientHeight\r\n }\r\n },\r\n _attachEventHandlers: function() {\r\n var strategy = this._strategy;\r\n var initEventData = {\r\n getDirection: strategy.getDirection.bind(strategy),\r\n validate: this._validate.bind(this),\r\n isNative: this.option(\"useNative\"),\r\n scrollTarget: this._$container\r\n };\r\n eventsEngine.off(this._$wrapper, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.init, SCROLLABLE), initEventData, this._initHandler.bind(this));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.start, SCROLLABLE), strategy.handleStart.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.move, SCROLLABLE), strategy.handleMove.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.end, SCROLLABLE), strategy.handleEnd.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.cancel, SCROLLABLE), strategy.handleCancel.bind(strategy));\r\n eventsEngine.on(this._$wrapper, addNamespace(scrollEvents.stop, SCROLLABLE), strategy.handleStop.bind(strategy));\r\n eventsEngine.off(this._$container, \".\" + SCROLLABLE);\r\n eventsEngine.on(this._$container, addNamespace(\"scroll\", SCROLLABLE), strategy.handleScroll.bind(strategy))\r\n },\r\n _validate: function(e) {\r\n if (this._isLocked()) {\r\n return false\r\n }\r\n this._updateIfNeed();\r\n return this._moveIsAllowed(e)\r\n },\r\n _moveIsAllowed(e) {\r\n return this._strategy.validate(e)\r\n },\r\n handleMove(e) {\r\n this._strategy.handleMove(e)\r\n },\r\n _prepareDirections(value) {\r\n this._strategy._prepareDirections(value)\r\n },\r\n _initHandler: function() {\r\n var strategy = this._strategy;\r\n strategy.handleInit.apply(strategy, arguments)\r\n },\r\n _renderDisabledState: function() {\r\n this.$element().toggleClass(SCROLLABLE_DISABLED_CLASS, this.option(\"disabled\"));\r\n if (this.option(\"disabled\")) {\r\n this._lock()\r\n } else {\r\n this._unlock()\r\n }\r\n },\r\n _renderDirection: function() {\r\n this.$element().removeClass(\"dx-scrollable-\" + HORIZONTAL).removeClass(\"dx-scrollable-\" + VERTICAL).removeClass(\"dx-scrollable-\" + BOTH).addClass(\"dx-scrollable-\" + this.option(\"direction\"))\r\n },\r\n _renderStrategy: function() {\r\n this._createStrategy();\r\n this._strategy.render();\r\n this.$element().data(SCROLLABLE_STRATEGY, this._strategy)\r\n },\r\n _createStrategy: function() {\r\n this._strategy = this.option(\"useNative\") ? new NativeStrategy(this) : new SimulatedStrategy(this)\r\n },\r\n _createActions: function() {\r\n this._strategy && this._strategy.createActions()\r\n },\r\n _clean: function() {\r\n this._strategy && this._strategy.dispose()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onStart\":\r\n case \"onEnd\":\r\n case \"onUpdated\":\r\n case \"onScroll\":\r\n case \"onBounce\":\r\n this._createActions();\r\n break;\r\n case \"direction\":\r\n this._resetInactiveDirection();\r\n this._invalidate();\r\n break;\r\n case \"useNative\":\r\n this._setUseSimulatedScrollbar();\r\n this._invalidate();\r\n break;\r\n case \"inertiaEnabled\":\r\n case \"scrollByThumb\":\r\n case \"bounceEnabled\":\r\n case \"useKeyboard\":\r\n case \"showScrollbar\":\r\n case \"useSimulatedScrollbar\":\r\n this._invalidate();\r\n break;\r\n case \"disabled\":\r\n this._renderDisabledState();\r\n this._strategy && this._strategy.disabledChanged();\r\n break;\r\n case \"updateManually\":\r\n case \"scrollByContent\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._updateRtlPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _resetInactiveDirection: function() {\r\n var inactiveProp = this._getInactiveProp();\r\n if (!inactiveProp || !hasWindow()) {\r\n return\r\n }\r\n var scrollOffset = this.scrollOffset();\r\n scrollOffset[inactiveProp] = 0;\r\n this.scrollTo(scrollOffset)\r\n },\r\n _getInactiveProp: function() {\r\n var direction = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return \"left\"\r\n }\r\n if (direction === HORIZONTAL) {\r\n return \"top\"\r\n }\r\n },\r\n _location: function() {\r\n return this._strategy.location()\r\n },\r\n _normalizeLocation: function(location) {\r\n if (isPlainObject(location)) {\r\n var left = ensureDefined(location.left, location.x);\r\n var top = ensureDefined(location.top, location.y);\r\n return {\r\n left: isDefined(left) ? -left : void 0,\r\n top: isDefined(top) ? -top : void 0\r\n }\r\n } else {\r\n var direction = this.option(\"direction\");\r\n return {\r\n left: direction !== VERTICAL ? -location : void 0,\r\n top: direction !== HORIZONTAL ? -location : void 0\r\n }\r\n }\r\n },\r\n _isLocked: function() {\r\n return this._locked\r\n },\r\n _lock: function() {\r\n this._locked = true\r\n },\r\n _unlock: function() {\r\n if (!this.option(\"disabled\")) {\r\n this._locked = false\r\n }\r\n },\r\n _isDirection: function(direction) {\r\n var current = this.option(\"direction\");\r\n if (direction === VERTICAL) {\r\n return current !== HORIZONTAL\r\n }\r\n if (direction === HORIZONTAL) {\r\n return current !== VERTICAL\r\n }\r\n return current === direction\r\n },\r\n _updateAllowedDirection: function() {\r\n var allowedDirections = this._strategy._allowedDirections();\r\n if (this._isDirection(BOTH) && allowedDirections.vertical && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = BOTH\r\n } else if (this._isDirection(HORIZONTAL) && allowedDirections.horizontal) {\r\n this._allowedDirectionValue = HORIZONTAL\r\n } else if (this._isDirection(VERTICAL) && allowedDirections.vertical) {\r\n this._allowedDirectionValue = VERTICAL\r\n } else {\r\n this._allowedDirectionValue = null\r\n }\r\n },\r\n _allowedDirection: function() {\r\n return this._allowedDirectionValue\r\n },\r\n $content: function() {\r\n return this._$content\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content)\r\n },\r\n container: function() {\r\n return getPublicElement(this._$container)\r\n },\r\n scrollOffset: function() {\r\n return this._strategy._getScrollOffset()\r\n },\r\n _isRtlNativeStrategy: function() {\r\n var {\r\n useNative: useNative,\r\n rtlEnabled: rtlEnabled\r\n } = this.option();\r\n return useNative && rtlEnabled\r\n },\r\n scrollTop: function() {\r\n return this.scrollOffset().top\r\n },\r\n scrollLeft: function() {\r\n return this.scrollOffset().left\r\n },\r\n clientHeight: function() {\r\n return getHeight(this._$container)\r\n },\r\n scrollHeight: function() {\r\n return getOuterHeight(this.$content())\r\n },\r\n clientWidth: function() {\r\n return getWidth(this._$container)\r\n },\r\n scrollWidth: function() {\r\n return getOuterWidth(this.$content())\r\n },\r\n update: function() {\r\n if (!this._strategy) {\r\n return\r\n }\r\n return when(this._strategy.update()).done(function() {\r\n this._updateAllowedDirection()\r\n }.bind(this))\r\n },\r\n scrollBy: function(distance) {\r\n distance = this._normalizeLocation(distance);\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._updateIfNeed();\r\n this._strategy.scrollBy(distance)\r\n },\r\n scrollTo: function(targetLocation) {\r\n targetLocation = this._normalizeLocation(targetLocation);\r\n this._updateIfNeed();\r\n var location = this._location();\r\n if (!this.option(\"useNative\")) {\r\n targetLocation = this._strategy._applyScaleRatio(targetLocation);\r\n location = this._strategy._applyScaleRatio(location)\r\n }\r\n if (this._isRtlNativeStrategy()) {\r\n location.left = location.left - this._getMaxOffset().left\r\n }\r\n var distance = this._normalizeLocation({\r\n left: location.left - ensureDefined(targetLocation.left, location.left),\r\n top: location.top - ensureDefined(targetLocation.top, location.top)\r\n });\r\n if (!distance.top && !distance.left) {\r\n return\r\n }\r\n this._strategy.scrollBy(distance)\r\n },\r\n scrollToElement: function(element, offset) {\r\n var $element = $(element);\r\n var elementInsideContent = this.$content().find(element).length;\r\n var elementIsInsideContent = $element.parents(\".\" + SCROLLABLE_CLASS).length - $element.parents(\".\" + SCROLLABLE_CONTENT_CLASS).length === 0;\r\n if (!elementInsideContent || !elementIsInsideContent) {\r\n return\r\n }\r\n var scrollPosition = {\r\n top: 0,\r\n left: 0\r\n };\r\n var direction = this.option(\"direction\");\r\n if (direction !== VERTICAL) {\r\n scrollPosition.left = this.getScrollElementPosition($element, HORIZONTAL, offset)\r\n }\r\n if (direction !== HORIZONTAL) {\r\n scrollPosition.top = this.getScrollElementPosition($element, VERTICAL, offset)\r\n }\r\n this.scrollTo(scrollPosition)\r\n },\r\n getScrollElementPosition: function($element, direction, offset) {\r\n var scrollOffset = this.scrollOffset();\r\n return getElementLocationInternal($element.get(0), direction, $(this.container()).get(0), scrollOffset, offset)\r\n },\r\n _updateIfNeed: function() {\r\n if (!this.option(\"updateManually\")) {\r\n this.update()\r\n }\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n isRenovated: function() {\r\n return !!Scrollable.IS_RENOVATED_WIDGET\r\n }\r\n});\r\nregisterComponent(SCROLLABLE, Scrollable);\r\nexport default Scrollable;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_element_location_internal.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n titleize\r\n} from \"../../../../core/utils/inflector\";\r\nimport {\r\n getRelativeOffset\r\n} from \"./get_relative_offset\";\r\nimport {\r\n DIRECTION_VERTICAL,\r\n SCROLLABLE_CONTENT_CLASS\r\n} from \"../common/consts\";\r\nexport function getElementLocationInternal(targetElement, direction, containerElement, scrollOffset, offset) {\r\n var additionalOffset = _extends({\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0\r\n }, offset);\r\n var isVertical = direction === DIRECTION_VERTICAL;\r\n var prop = isVertical ? \"top\" : \"left\";\r\n var inverseProp = isVertical ? \"bottom\" : \"right\";\r\n var dimension = isVertical ? \"height\" : \"width\";\r\n var containerOffsetSize = containerElement[\"offset\".concat(titleize(dimension))];\r\n var containerClientSize = containerElement[\"client\".concat(titleize(dimension))];\r\n var containerSize = containerElement.getBoundingClientRect()[dimension];\r\n var elementSize = targetElement.getBoundingClientRect()[dimension];\r\n var scale = 1;\r\n if (Math.abs(containerSize - containerOffsetSize) > 1) {\r\n scale = containerSize / containerOffsetSize\r\n }\r\n var relativeElementOffset = getRelativeOffset(SCROLLABLE_CONTENT_CLASS, targetElement)[prop] / scale;\r\n var containerScrollOffset = scrollOffset[prop];\r\n var relativeStartOffset = containerScrollOffset - relativeElementOffset + additionalOffset[prop];\r\n var relativeEndOffset = containerScrollOffset - relativeElementOffset - elementSize / scale + containerClientSize - additionalOffset[inverseProp];\r\n if (relativeStartOffset <= 0 && relativeEndOffset >= 0) {\r\n return containerScrollOffset\r\n }\r\n return containerScrollOffset - (Math.abs(relativeStartOffset) > Math.abs(relativeEndOffset) ? relativeEndOffset : relativeStartOffset)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_relative_offset.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function getRelativeOffset(targetElementClass, sourceElement) {\r\n var offset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var element = sourceElement;\r\n while (null !== (_element = element) && void 0 !== _element && _element.offsetParent && !element.classList.contains(targetElementClass)) {\r\n var _element;\r\n var parentElement = element.offsetParent;\r\n var elementRect = element.getBoundingClientRect();\r\n var parentElementRect = parentElement.getBoundingClientRect();\r\n offset.left += elementRect.left - parentElementRect.left;\r\n offset.top += elementRect.top - parentElementRect.top;\r\n element = element.offsetParent\r\n }\r\n return offset\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/scroll_direction.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n DIRECTION_VERTICAL,\r\n DIRECTION_HORIZONTAL,\r\n DIRECTION_BOTH\r\n} from \"../common/consts\";\r\nexport class ScrollDirection {\r\n constructor(direction) {\r\n this.DIRECTION_HORIZONTAL = \"horizontal\";\r\n this.DIRECTION_VERTICAL = \"vertical\";\r\n this.DIRECTION_BOTH = \"both\";\r\n this.direction = null !== direction && void 0 !== direction ? direction : DIRECTION_VERTICAL\r\n }\r\n get isHorizontal() {\r\n return this.direction === DIRECTION_HORIZONTAL || this.direction === DIRECTION_BOTH\r\n }\r\n get isVertical() {\r\n return this.direction === DIRECTION_VERTICAL || this.direction === DIRECTION_BOTH\r\n }\r\n get isBoth() {\r\n return this.direction === DIRECTION_BOTH\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_view_roller.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable.old\";\r\nimport devices from \"../../core/devices\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n resetPosition\r\n} from \"../../animation/translator\";\r\nimport {\r\n convertToLocation\r\n} from \"../../renovation/ui/scroll_view/utils/convert_location\";\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar DATEVIEW_ROLLER_ACTIVE_CLASS = \"dx-state-active\";\r\nvar DATEVIEW_ROLLER_CURRENT_CLASS = \"dx-dateviewroller-current\";\r\nvar DATEVIEW_ROLLER_ITEM_CLASS = \"dx-dateview-item\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_CLASS = \"dx-dateview-item-selected\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS = \"dx-dateview-item-selected-frame\";\r\nvar DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS = \"dx-dateview-item-selected-border\";\r\nclass DateViewRoller extends Scrollable {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n showScrollbar: \"never\",\r\n useNative: false,\r\n selectedIndex: 0,\r\n bounceEnabled: false,\r\n items: [],\r\n showOnClick: false,\r\n onClick: null,\r\n onSelectedIndexChanged: null,\r\n scrollByContent: true\r\n })\r\n }\r\n _init() {\r\n super._init();\r\n this.option(\"onVisibilityChange\", this._visibilityChangedHandler.bind(this));\r\n this.option(\"onEnd\", this._endActionHandler.bind(this))\r\n }\r\n _render() {\r\n super._render();\r\n this._renderSelectedItemFrame();\r\n this.$element().addClass(DATEVIEW_ROLLER_CLASS);\r\n this._renderContainerClick();\r\n this._renderItems();\r\n this._renderSelectedValue();\r\n this._renderItemsClick();\r\n this._renderWheelEvent();\r\n this._renderSelectedIndexChanged()\r\n }\r\n _renderSelectedIndexChanged() {\r\n this._selectedIndexChanged = this._createActionByOption(\"onSelectedIndexChanged\")\r\n }\r\n _renderWheelEvent() {\r\n eventsEngine.on($(this.container()), \"dxmousewheel\", e => {\r\n this._isWheelScrolled = true\r\n })\r\n }\r\n _renderContainerClick() {\r\n if (!this.option(\"showOnClick\")) {\r\n return\r\n }\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var clickAction = this._createActionByOption(\"onClick\");\r\n eventsEngine.off($(this.container()), eventName);\r\n eventsEngine.on($(this.container()), eventName, (function(e) {\r\n clickAction({\r\n event: e\r\n })\r\n }))\r\n }\r\n _renderItems() {\r\n var items = this.option(\"items\") || [];\r\n var $items = $();\r\n $(this.content()).empty();\r\n items.forEach((function(item) {\r\n $items = $items.add($(\"<div>\").addClass(DATEVIEW_ROLLER_ITEM_CLASS).append(item))\r\n }));\r\n $(this.content()).append($items);\r\n this._$items = $items;\r\n this.update()\r\n }\r\n _renderSelectedItemFrame() {\r\n $(\"<div>\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_FRAME_CLASS).append($(\"<div>\").addClass(DATEVIEW_ROLLER_ITEM_SELECTED_BORDER_CLASS)).appendTo($(this.container()))\r\n }\r\n _renderSelectedValue(selectedIndex) {\r\n var index = this._fitIndex(null !== selectedIndex && void 0 !== selectedIndex ? selectedIndex : this.option(\"selectedIndex\"));\r\n this._moveTo({\r\n top: this._getItemPosition(index)\r\n });\r\n this._renderActiveStateItem()\r\n }\r\n _fitIndex(index) {\r\n var items = this.option(\"items\") || [];\r\n var itemCount = items.length;\r\n if (index >= itemCount) {\r\n return itemCount - 1\r\n }\r\n if (index < 0) {\r\n return 0\r\n }\r\n return index\r\n }\r\n _getItemPosition(index) {\r\n return Math.round(this._itemHeight() * index)\r\n }\r\n _renderItemsClick() {\r\n var itemSelector = this._getItemSelector();\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n eventsEngine.off(this.$element(), eventName, itemSelector);\r\n eventsEngine.on(this.$element(), eventName, itemSelector, this._itemClickHandler.bind(this))\r\n }\r\n _getItemSelector() {\r\n return \".\" + DATEVIEW_ROLLER_ITEM_CLASS\r\n }\r\n _itemClickHandler(e) {\r\n this.option(\"selectedIndex\", this._itemElementIndex(e.currentTarget))\r\n }\r\n _itemElementIndex(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n }\r\n _itemElements() {\r\n return this.$element().find(this._getItemSelector())\r\n }\r\n _renderActiveStateItem() {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n each(this._$items, (function(index) {\r\n $(this).toggleClass(DATEVIEW_ROLLER_ITEM_SELECTED_CLASS, selectedIndex === index)\r\n }))\r\n }\r\n _shouldScrollToNeighborItem() {\r\n return \"desktop\" === devices.real().deviceType && this._isWheelScrolled\r\n }\r\n _moveTo(targetLocation) {\r\n var {\r\n top: top,\r\n left: left\r\n } = convertToLocation(targetLocation);\r\n var location = this.scrollOffset();\r\n var delta = {\r\n x: location.left - left,\r\n y: location.top - top\r\n };\r\n if (this._isVisible() && (delta.x || delta.y)) {\r\n this._prepareDirections(true);\r\n if (this._animation && !this._shouldScrollToNeighborItem()) {\r\n var that = this;\r\n fx.stop($(this.content()));\r\n fx.animate($(this.content()), {\r\n duration: 200,\r\n type: \"slide\",\r\n to: {\r\n top: Math.floor(delta.y)\r\n },\r\n complete() {\r\n resetPosition($(that.content()));\r\n that.handleMove({\r\n delta: delta\r\n })\r\n }\r\n });\r\n delete this._animation\r\n } else {\r\n this.handleMove({\r\n delta: delta\r\n })\r\n }\r\n }\r\n }\r\n _validate(e) {\r\n return this._moveIsAllowed(e)\r\n }\r\n _fitSelectedIndexInRange(index) {\r\n var itemsCount = this.option(\"items\").length;\r\n return Math.max(Math.min(index, itemsCount - 1), 0)\r\n }\r\n _isInNullNeighborhood(x) {\r\n return -.1 <= x && x <= .1\r\n }\r\n _getSelectedIndexAfterScroll(currentSelectedIndex) {\r\n var locationTop = this.scrollOffset().top;\r\n var currentSelectedIndexPosition = currentSelectedIndex * this._itemHeight();\r\n var dy = locationTop - currentSelectedIndexPosition;\r\n if (this._isInNullNeighborhood(dy)) {\r\n return currentSelectedIndex\r\n }\r\n var direction = dy > 0 ? 1 : -1;\r\n var newSelectedIndex = this._fitSelectedIndexInRange(currentSelectedIndex + direction);\r\n return newSelectedIndex\r\n }\r\n _getNewSelectedIndex(currentSelectedIndex) {\r\n if (this._shouldScrollToNeighborItem()) {\r\n return this._getSelectedIndexAfterScroll(currentSelectedIndex)\r\n }\r\n this._animation = true;\r\n var ratio = this.scrollOffset().top / this._itemHeight();\r\n return Math.round(ratio)\r\n }\r\n _endActionHandler() {\r\n var currentSelectedIndex = this.option(\"selectedIndex\");\r\n var newSelectedIndex = this._getNewSelectedIndex(currentSelectedIndex);\r\n if (newSelectedIndex === currentSelectedIndex) {\r\n this._renderSelectedValue(newSelectedIndex)\r\n } else {\r\n this.option(\"selectedIndex\", newSelectedIndex)\r\n }\r\n this._isWheelScrolled = false\r\n }\r\n _itemHeight() {\r\n var $item = this._$items.first();\r\n return getHeight($item)\r\n }\r\n _toggleActive(state) {\r\n this.$element().toggleClass(DATEVIEW_ROLLER_ACTIVE_CLASS, state)\r\n }\r\n _isVisible() {\r\n return $(this.container()).is(\":visible\")\r\n }\r\n _fireSelectedIndexChanged(value, previousValue) {\r\n this._selectedIndexChanged({\r\n value: value,\r\n previousValue: previousValue,\r\n event: void 0\r\n })\r\n }\r\n _visibilityChanged(visible) {\r\n super._visibilityChanged(visible);\r\n this._visibilityChangedHandler(visible)\r\n }\r\n _visibilityChangedHandler(visible) {\r\n if (visible) {\r\n this._visibilityTimer = setTimeout(() => {\r\n this._renderSelectedValue(this.option(\"selectedIndex\"))\r\n })\r\n }\r\n this.toggleActiveState(false)\r\n }\r\n toggleActiveState(state) {\r\n this.$element().toggleClass(DATEVIEW_ROLLER_CURRENT_CLASS, state)\r\n }\r\n _refreshSelectedIndex() {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var fitIndex = this._fitIndex(selectedIndex);\r\n if (fitIndex === selectedIndex) {\r\n this._renderActiveStateItem()\r\n } else {\r\n this.option(\"selectedIndex\", fitIndex)\r\n }\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"selectedIndex\":\r\n this._fireSelectedIndexChanged(args.value, args.previousValue);\r\n this._renderSelectedValue(args.value);\r\n break;\r\n case \"items\":\r\n this._renderItems();\r\n this._refreshSelectedIndex();\r\n break;\r\n case \"onClick\":\r\n case \"showOnClick\":\r\n this._renderContainerClick();\r\n break;\r\n case \"onSelectedIndexChanged\":\r\n this._renderSelectedIndexChanged();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _dispose() {\r\n clearTimeout(this._visibilityTimer);\r\n super._dispose()\r\n }\r\n}\r\nregisterComponent(\"dxDateViewRoller\", DateViewRoller);\r\nexport default DateViewRoller;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/convert_location.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../../../../core/utils/type\";\r\nimport {\r\n ensureDefined\r\n} from \"../../../../core/utils/common\";\r\nimport {\r\n ScrollDirection\r\n} from \"./scroll_direction\";\r\nexport function convertToLocation(location, direction) {\r\n if (isPlainObject(location)) {\r\n var left = ensureDefined(location.left, location.x);\r\n var top = ensureDefined(location.top, location.y);\r\n return {\r\n left: isDefined(left) ? left : void 0,\r\n top: isDefined(top) ? top : void 0\r\n }\r\n }\r\n var {\r\n isHorizontal: isHorizontal,\r\n isVertical: isVertical\r\n } = new ScrollDirection(direction);\r\n return {\r\n left: isHorizontal && isDefined(location) ? location : void 0,\r\n top: isVertical && isDefined(location) ? location : void 0\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Editor from \"../editor/editor\";\r\nimport DateViewRoller from \"./ui.date_view_roller\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport uiDateUtils from \"./ui.date_utils\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport dateLocalization from \"../../localization/date\";\r\nvar DATEVIEW_CLASS = \"dx-dateview\";\r\nvar DATEVIEW_COMPACT_CLASS = \"dx-dateview-compact\";\r\nvar DATEVIEW_WRAPPER_CLASS = \"dx-dateview-wrapper\";\r\nvar DATEVIEW_ROLLER_CONTAINER_CLASS = \"dx-dateview-rollers\";\r\nvar DATEVIEW_ROLLER_CLASS = \"dx-dateviewroller\";\r\nvar TYPE = {\r\n date: \"date\",\r\n datetime: \"datetime\",\r\n time: \"time\"\r\n};\r\nvar ROLLER_TYPE = {\r\n year: \"year\",\r\n month: \"month\",\r\n day: \"day\",\r\n hours: \"hours\"\r\n};\r\nvar DateView = Editor.inherit({\r\n _valueOption: function() {\r\n var value = this.option(\"value\");\r\n var date = new Date(value);\r\n return !value || isNaN(date) ? this._getDefaultDate() : date\r\n },\r\n _getDefaultDate: function() {\r\n var date = new Date;\r\n if (this.option(\"type\") === TYPE.date) {\r\n return new Date(date.getFullYear(), date.getMonth(), date.getDate())\r\n }\r\n return date\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n minDate: uiDateUtils.MIN_DATEVIEW_DEFAULT_DATE,\r\n maxDate: uiDateUtils.MAX_DATEVIEW_DEFAULT_DATE,\r\n type: TYPE.date,\r\n value: new Date,\r\n applyCompactClass: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function(_device) {\r\n return \"desktop\" !== _device.deviceType\r\n },\r\n options: {\r\n applyCompactClass: true\r\n }\r\n }])\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(DATEVIEW_CLASS);\r\n this._toggleFormatClasses(this.option(\"type\"));\r\n this._toggleCompactClass()\r\n },\r\n _toggleFormatClasses: function(currentFormat, previousFormat) {\r\n this.$element().addClass(DATEVIEW_CLASS + \"-\" + currentFormat);\r\n previousFormat && this.$element().removeClass(DATEVIEW_CLASS + \"-\" + previousFormat)\r\n },\r\n _toggleCompactClass: function() {\r\n this.$element().toggleClass(DATEVIEW_COMPACT_CLASS, this.option(\"applyCompactClass\"))\r\n },\r\n _wrapper: function() {\r\n return this._$wrapper\r\n },\r\n _renderContentImpl: function() {\r\n this._$wrapper = $(\"<div>\").addClass(DATEVIEW_WRAPPER_CLASS);\r\n this._renderRollers();\r\n this._$wrapper.appendTo(this.$element())\r\n },\r\n _renderRollers: function() {\r\n if (!this._$rollersContainer) {\r\n this._$rollersContainer = $(\"<div>\").addClass(DATEVIEW_ROLLER_CONTAINER_CLASS)\r\n }\r\n this._$rollersContainer.empty();\r\n this._createRollerConfigs();\r\n this._rollers = {};\r\n var that = this;\r\n each(that._rollerConfigs, (function(name) {\r\n var $roller = $(\"<div>\").appendTo(that._$rollersContainer).addClass(DATEVIEW_ROLLER_CLASS + \"-\" + that._rollerConfigs[name].type);\r\n that._rollers[that._rollerConfigs[name].type] = that._createComponent($roller, DateViewRoller, {\r\n items: that._rollerConfigs[name].displayItems,\r\n selectedIndex: that._rollerConfigs[name].selectedIndex,\r\n showScrollbar: \"never\",\r\n scrollByContent: true,\r\n onStart: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(true);\r\n that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n },\r\n onEnd: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(false)\r\n },\r\n onClick: function(e) {\r\n var roller = e.component;\r\n roller._toggleActive(true);\r\n that._setActiveRoller(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"));\r\n roller._toggleActive(false)\r\n },\r\n onSelectedIndexChanged: function(e) {\r\n var roller = e.component;\r\n that._setRollerState(that._rollerConfigs[name], roller.option(\"selectedIndex\"))\r\n }\r\n })\r\n }));\r\n that._$rollersContainer.appendTo(that._wrapper())\r\n },\r\n _createRollerConfigs: function(type) {\r\n var that = this;\r\n type = type || that.option(\"type\");\r\n that._rollerConfigs = {};\r\n dateLocalization.getFormatParts(uiDateUtils.FORMATS_MAP[type]).forEach((function(partName) {\r\n that._createRollerConfig(partName)\r\n }))\r\n },\r\n _createRollerConfig: function(componentName) {\r\n var componentInfo = uiDateUtils.DATE_COMPONENTS_INFO[componentName];\r\n var valueRange = this._calculateRollerConfigValueRange(componentName);\r\n var startValue = valueRange.startValue;\r\n var endValue = valueRange.endValue;\r\n var formatter = componentInfo.formatter;\r\n var curDate = this._getCurrentDate();\r\n var config = {\r\n type: componentName,\r\n setValue: componentInfo.setter,\r\n valueItems: [],\r\n displayItems: [],\r\n getIndex: function(value) {\r\n return value[componentInfo.getter]() - startValue\r\n }\r\n };\r\n for (var i = startValue; i <= endValue; i++) {\r\n config.valueItems.push(i);\r\n config.displayItems.push(formatter(i, curDate))\r\n }\r\n config.selectedIndex = config.getIndex(curDate);\r\n this._rollerConfigs[componentName] = config\r\n },\r\n _setActiveRoller: function(currentRoller) {\r\n var activeRoller = currentRoller && this._rollers[currentRoller.type];\r\n each(this._rollers, (function() {\r\n this.toggleActiveState(this === activeRoller)\r\n }))\r\n },\r\n _updateRollersPosition: function() {\r\n var that = this;\r\n each(this._rollers, (function(type) {\r\n var correctIndex = that._rollerConfigs[type].getIndex(that._getCurrentDate());\r\n this.option(\"selectedIndex\", correctIndex)\r\n }))\r\n },\r\n _setRollerState: function(roller, selectedIndex) {\r\n if (selectedIndex !== roller.selectedIndex) {\r\n var rollerValue = roller.valueItems[selectedIndex];\r\n var setValue = roller.setValue;\r\n var currentValue = new Date(this._getCurrentDate());\r\n var currentDate = currentValue.getDate();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n if (roller.type === ROLLER_TYPE.month) {\r\n currentDate = Math.min(currentDate, uiDateUtils.getMaxMonthDay(currentValue.getFullYear(), rollerValue))\r\n } else if (roller.type === ROLLER_TYPE.year) {\r\n currentDate = Math.min(currentDate, uiDateUtils.getMaxMonthDay(rollerValue, currentValue.getMonth()))\r\n }\r\n currentValue.setDate(currentDate);\r\n currentValue[setValue](rollerValue);\r\n var normalizedDate = dateUtils.normalizeDate(currentValue, minDate, maxDate);\r\n currentValue = uiDateUtils.mergeDates(normalizedDate, currentValue, \"time\");\r\n currentValue = dateUtils.normalizeDate(currentValue, minDate, maxDate);\r\n this.option(\"value\", currentValue);\r\n roller.selectedIndex = selectedIndex\r\n }\r\n if (roller.type === ROLLER_TYPE.year) {\r\n this._refreshRollers()\r\n }\r\n if (roller.type === ROLLER_TYPE.month) {\r\n this._refreshRoller(ROLLER_TYPE.day);\r\n this._refreshRoller(ROLLER_TYPE.hours)\r\n }\r\n },\r\n _refreshRoller: function(rollerType) {\r\n var roller = this._rollers[rollerType];\r\n if (roller) {\r\n this._createRollerConfig(rollerType);\r\n var rollerConfig = this._rollerConfigs[rollerType];\r\n if (rollerType === ROLLER_TYPE.day || rollerConfig.displayItems.toString() !== roller.option(\"items\").toString()) {\r\n roller.option({\r\n items: rollerConfig.displayItems,\r\n selectedIndex: rollerConfig.selectedIndex\r\n })\r\n }\r\n }\r\n },\r\n _getCurrentDate: function() {\r\n var curDate = this._valueOption();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n return dateUtils.normalizeDate(curDate, minDate, maxDate)\r\n },\r\n _calculateRollerConfigValueRange: function(componentName) {\r\n var curDate = this._getCurrentDate();\r\n var minDate = this.option(\"minDate\");\r\n var maxDate = this.option(\"maxDate\");\r\n var minYear = dateUtils.sameYear(curDate, minDate);\r\n var minMonth = minYear && curDate.getMonth() === minDate.getMonth();\r\n var maxYear = dateUtils.sameYear(curDate, maxDate);\r\n var maxMonth = maxYear && curDate.getMonth() === maxDate.getMonth();\r\n var minHour = minMonth && curDate.getDate() === minDate.getDate();\r\n var maxHour = maxMonth && curDate.getDate() === maxDate.getDate();\r\n var componentInfo = uiDateUtils.DATE_COMPONENTS_INFO[componentName];\r\n var startValue = componentInfo.startValue;\r\n var endValue = componentInfo.endValue;\r\n if (componentName === ROLLER_TYPE.year) {\r\n startValue = minDate.getFullYear();\r\n endValue = maxDate.getFullYear()\r\n }\r\n if (componentName === ROLLER_TYPE.month) {\r\n if (minYear) {\r\n startValue = minDate.getMonth()\r\n }\r\n if (maxYear) {\r\n endValue = maxDate.getMonth()\r\n }\r\n }\r\n if (componentName === ROLLER_TYPE.day) {\r\n endValue = uiDateUtils.getMaxMonthDay(curDate.getFullYear(), curDate.getMonth());\r\n if (minYear && minMonth) {\r\n startValue = minDate.getDate()\r\n }\r\n if (maxYear && maxMonth) {\r\n endValue = maxDate.getDate()\r\n }\r\n }\r\n if (componentName === ROLLER_TYPE.hours) {\r\n startValue = minHour ? minDate.getHours() : startValue;\r\n endValue = maxHour ? maxDate.getHours() : endValue\r\n }\r\n return {\r\n startValue: startValue,\r\n endValue: endValue\r\n }\r\n },\r\n _refreshRollers: function() {\r\n this._refreshRoller(ROLLER_TYPE.month);\r\n this._refreshRoller(ROLLER_TYPE.day);\r\n this._refreshRoller(ROLLER_TYPE.hours)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"minDate\":\r\n case \"maxDate\":\r\n case \"type\":\r\n this._renderRollers();\r\n this._toggleFormatClasses(args.value, args.previousValue);\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n if (args.value) {\r\n this._renderRollers()\r\n }\r\n break;\r\n case \"value\":\r\n this.option(\"value\", this._valueOption());\r\n this._refreshRollers();\r\n this._updateRollersPosition();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n delete this._$rollersContainer\r\n }\r\n});\r\nregisterComponent(\"dxDateView\", DateView);\r\nexport default DateView;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.date_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport DateView from \"./ui.date_view\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport {\r\n inputType\r\n} from \"../../core/utils/support\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nimport messageLocalization from \"../../localization/message\";\r\nvar DateViewStrategy = DateBoxStrategy.inherit({\r\n NAME: \"DateView\",\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n openOnFieldClick: true,\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n \"dropDownOptions.showTitle\": true\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || dateUtils.FORMATS_MAP[this.dateBox.option(\"type\")]\r\n },\r\n popupConfig: function(config) {\r\n return {\r\n toolbarItems: this.dateBox._popupToolbarItemsConfig(),\r\n onInitialized: config.onInitialized,\r\n defaultOptionsRules: [{\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n width: 333,\r\n height: 331\r\n }\r\n }, {\r\n device: function(_device) {\r\n var platform = _device.platform;\r\n return \"generic\" === platform || \"ios\" === platform\r\n },\r\n options: {\r\n width: \"auto\",\r\n height: \"auto\"\r\n }\r\n }, {\r\n device: function(_device2) {\r\n var platform = _device2.platform;\r\n var phone = _device2.phone;\r\n return \"generic\" === platform && phone\r\n },\r\n options: {\r\n width: 333,\r\n maxWidth: \"100%\",\r\n maxHeight: \"100%\",\r\n height: \"auto\",\r\n position: {\r\n collision: \"flipfit flip\"\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"ios\",\r\n phone: true\r\n },\r\n options: {\r\n width: \"100%\",\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: window\r\n }\r\n }\r\n }]\r\n }\r\n },\r\n _renderWidget: function() {\r\n if (inputType(this.dateBox.option(\"mode\")) && this.dateBox._isNativeType() || this.dateBox.option(\"readOnly\")) {\r\n if (this._widget) {\r\n this._widget.$element().remove();\r\n this._widget = null\r\n }\r\n return\r\n }\r\n var popup = this._getPopup();\r\n if (this._widget) {\r\n this._widget.option(this._getWidgetOptions())\r\n } else {\r\n var element = $(\"<div>\").appendTo(popup.$content());\r\n this._widget = this._createWidget(element)\r\n }\r\n this._widget.$element().appendTo(this._getWidgetContainer())\r\n },\r\n _getWidgetName: function() {\r\n return DateView\r\n },\r\n renderOpenedState: function() {\r\n this.callBase();\r\n if (this._widget) {\r\n this._widget.option(\"value\", this._widget._getCurrentDate())\r\n }\r\n },\r\n _getWidgetOptions: function() {\r\n return {\r\n value: this.dateBoxValue() || new Date,\r\n type: this.dateBox.option(\"type\"),\r\n minDate: this.dateBox.dateOption(\"min\") || new Date(1900, 0, 1),\r\n maxDate: this.dateBox.dateOption(\"max\") || new Date(Date.now() + 50 * dateUtils.ONE_YEAR),\r\n onDisposing: function() {\r\n this._widget = null\r\n }.bind(this)\r\n }\r\n }\r\n});\r\nexport default DateViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.native.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport {\r\n inputType\r\n} from \"../../core/utils/support\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport devices from \"../../core/devices\";\r\nvar NativeStrategy = DateBoxStrategy.inherit({\r\n NAME: \"Native\",\r\n popupConfig: function(_popupConfig) {\r\n return extend({}, _popupConfig, {\r\n width: \"auto\"\r\n })\r\n },\r\n getParsedText: function(text) {\r\n if (!text) {\r\n return null\r\n }\r\n if (\"datetime\" === this.dateBox.option(\"type\")) {\r\n return new Date(text.replace(/-/g, \"/\").replace(\"T\", \" \").split(\".\")[0])\r\n }\r\n return dateUtils.fromStandardDateFormat(text)\r\n },\r\n renderPopupContent: noop,\r\n _getWidgetName: noop,\r\n _getWidgetOptions: noop,\r\n _getDateBoxType: function() {\r\n var type = this.dateBox.option(\"type\");\r\n if (!dateUtils.SUPPORTED_FORMATS.includes(type)) {\r\n type = \"date\"\r\n } else if (\"datetime\" === type && !inputType(type)) {\r\n type = \"datetime-local\"\r\n }\r\n return type\r\n },\r\n customizeButtons: function() {\r\n var dropDownButton = this.dateBox.getButton(\"dropDown\");\r\n if (devices.real().android && dropDownButton) {\r\n dropDownButton.on(\"click\", function() {\r\n this.dateBox._input().get(0).click()\r\n }.bind(this))\r\n }\r\n },\r\n getDefaultOptions: function() {\r\n return {\r\n mode: this._getDateBoxType()\r\n }\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n var type = this._getDateBoxType();\r\n return displayFormat || dateUtils.FORMATS_MAP[type]\r\n },\r\n renderInputMinMax: function($input) {\r\n $input.attr({\r\n min: dateSerialization.serializeDate(this.dateBox.dateOption(\"min\"), \"yyyy-MM-dd\"),\r\n max: dateSerialization.serializeDate(this.dateBox.dateOption(\"max\"), \"yyyy-MM-dd\")\r\n })\r\n }\r\n});\r\nexport default NativeStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n adjust\r\n} from \"../../core/utils/math\";\r\nvar getRealSeparatorIndex = function(str) {\r\n var quoteBalance = 0;\r\n var separatorCount = 0;\r\n for (var i = 0; i < str.length; ++i) {\r\n if (\"'\" === str[i]) {\r\n quoteBalance++\r\n }\r\n if (\".\" === str[i]) {\r\n ++separatorCount;\r\n if (quoteBalance % 2 === 0) {\r\n return {\r\n occurrence: separatorCount,\r\n index: i\r\n }\r\n }\r\n }\r\n }\r\n return {\r\n occurrence: 1,\r\n index: -1\r\n }\r\n};\r\nvar getNthOccurrence = function(str, c, n) {\r\n var i = -1;\r\n while (n-- && i++ < str.length) {\r\n i = str.indexOf(c, i)\r\n }\r\n return i\r\n};\r\nvar splitByIndex = function(str, index) {\r\n if (-1 === index) {\r\n return [str]\r\n }\r\n return [str.slice(0, index), str.slice(index + 1)]\r\n};\r\nvar adjustPercentValue = function(rawValue, precision) {\r\n return rawValue && adjust(rawValue / 100, precision)\r\n};\r\nexport {\r\n getRealSeparatorIndex,\r\n getNthOccurrence,\r\n splitByIndex,\r\n adjustPercentValue\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.caret.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n escapeRegExp\r\n} from \"../../core/utils/common\";\r\nimport number from \"../../localization/number\";\r\nimport {\r\n getRealSeparatorIndex,\r\n getNthOccurrence,\r\n splitByIndex\r\n} from \"./utils\";\r\nexport var getCaretBoundaries = function(text, format) {\r\n if (\"string\" === typeof format) {\r\n var signParts = format.split(\";\");\r\n var sign = number.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n format = signParts[sign < 0 ? 1 : 0];\r\n format = (str = format, str.replace(/'([^']*)'/g, str => str.split(\"\").map(() => \" \").join(\"\").substr(2)));\r\n var prefixStubLength = /^[^#0.,]*/.exec(format)[0].length;\r\n var postfixStubLength = /[^#0.,]*$/.exec(format)[0].length;\r\n return {\r\n start: prefixStubLength,\r\n end: text.length - postfixStubLength\r\n }\r\n } else {\r\n return {\r\n start: 0,\r\n end: text.length\r\n }\r\n }\r\n var str\r\n};\r\nvar _getDigitCountBeforeIndex = function(index, text) {\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var regExp = new RegExp(\"[^0-9\" + escapeRegExp(decimalSeparator) + \"]\", \"g\");\r\n var textBeforePosition = text.slice(0, index);\r\n return textBeforePosition.replace(regExp, \"\").length\r\n};\r\nvar _reverseText = function(text) {\r\n return text.split(\"\").reverse().join(\"\")\r\n};\r\nvar _getDigitPositionByIndex = function(digitIndex, text) {\r\n if (!digitIndex) {\r\n return -1\r\n }\r\n var regExp = /[0-9]/g;\r\n var counter = 1;\r\n var index = null;\r\n var result = regExp.exec(text);\r\n while (result) {\r\n index = result.index;\r\n if (counter >= digitIndex) {\r\n return index\r\n }\r\n counter++;\r\n result = regExp.exec(text)\r\n }\r\n return null === index ? text.length : index\r\n};\r\nvar _trimNonNumericCharsFromEnd = function(text) {\r\n return text.replace(/[^0-9e]+$/, \"\")\r\n};\r\nexport var getCaretWithOffset = function(caret, offset) {\r\n if (void 0 === caret.start) {\r\n caret = {\r\n start: caret,\r\n end: caret\r\n }\r\n }\r\n return {\r\n start: caret.start + offset,\r\n end: caret.end + offset\r\n }\r\n};\r\nexport var getCaretAfterFormat = function(text, formatted, caret, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var point = number.getDecimalSeparator();\r\n var isSeparatorBasedText = isSeparatorBasedString(text);\r\n var realSeparatorOccurrenceIndex = getRealSeparatorIndex(format).occurrence;\r\n var pointPosition = isSeparatorBasedText ? 0 : getNthOccurrence(text, point, realSeparatorOccurrenceIndex);\r\n var newPointPosition = getNthOccurrence(formatted, point, realSeparatorOccurrenceIndex);\r\n var textParts = splitByIndex(text, pointPosition);\r\n var formattedParts = splitByIndex(formatted, newPointPosition);\r\n var isCaretOnFloat = -1 !== pointPosition && caret.start > pointPosition;\r\n if (isCaretOnFloat) {\r\n var relativeIndex = caret.start - pointPosition - 1;\r\n var digitsBefore = _getDigitCountBeforeIndex(relativeIndex, textParts[1]);\r\n var newPosition = formattedParts[1] ? newPointPosition + 1 + _getDigitPositionByIndex(digitsBefore, formattedParts[1]) + 1 : formatted.length;\r\n return getCaretInBoundaries(newPosition, formatted, format)\r\n } else {\r\n var formattedIntPart = _trimNonNumericCharsFromEnd(formattedParts[0]);\r\n var positionFromEnd = textParts[0].length - caret.start;\r\n var digitsFromEnd = _getDigitCountBeforeIndex(positionFromEnd, _reverseText(textParts[0]));\r\n var newPositionFromEnd = _getDigitPositionByIndex(digitsFromEnd, _reverseText(formattedIntPart));\r\n var newPositionFromBegin = formattedIntPart.length - (newPositionFromEnd + 1);\r\n return getCaretInBoundaries(newPositionFromBegin, formatted, format)\r\n }\r\n};\r\n\r\nfunction isSeparatorBasedString(text) {\r\n return 1 === text.length && !!text.match(/^[,.][0-9]*$/g)\r\n}\r\nexport var isCaretInBoundaries = function(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretInBoundaries(caret, text, format);\r\n return caret.start >= boundaries.start && caret.end <= boundaries.end\r\n};\r\nexport function getCaretInBoundaries(caret, text, format) {\r\n caret = getCaretWithOffset(caret, 0);\r\n var boundaries = getCaretBoundaries(text, format);\r\n var adjustedCaret = {\r\n start: fitIntoRange(caret.start, boundaries.start, boundaries.end),\r\n end: fitIntoRange(caret.end, boundaries.start, boundaries.end)\r\n };\r\n return adjustedCaret\r\n}\r\nexport var getCaretOffset = function(previousText, newText, format) {\r\n var previousBoundaries = getCaretBoundaries(previousText, format);\r\n var newBoundaries = getCaretBoundaries(newText, format);\r\n return newBoundaries.start - previousBoundaries.start\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.spin.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointerEvents from \"../../events/pointer\";\r\nimport {\r\n lock\r\n} from \"../../events/core/emitter.feedback\";\r\nimport holdEvent from \"../../events/hold\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_BUTTON_CLASS = \"dx-numberbox-spin-button\";\r\nvar SPIN_HOLD_DELAY = 100;\r\nvar NUMBER_BOX = \"dxNumberBox\";\r\nvar POINTERUP_EVENT_NAME = addNamespace(pointerEvents.up, NUMBER_BOX);\r\nvar POINTERCANCEL_EVENT_NAME = addNamespace(pointerEvents.cancel, NUMBER_BOX);\r\nvar SpinButton = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n direction: \"up\",\r\n onChange: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n var direction = SPIN_CLASS + \"-\" + this.option(\"direction\");\r\n this.$element().addClass(SPIN_BUTTON_CLASS).addClass(direction);\r\n this._spinIcon = $(\"<div>\").addClass(direction + \"-icon\").appendTo(this.$element())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n var eventName = addNamespace(pointerEvents.down, this.NAME);\r\n var $element = this.$element();\r\n eventsEngine.off($element, eventName);\r\n eventsEngine.on($element, eventName, this._spinDownHandler.bind(this));\r\n this._spinChangeHandler = this._createActionByOption(\"onChange\")\r\n },\r\n _spinDownHandler: function(e) {\r\n e.preventDefault();\r\n this._clearTimer();\r\n eventsEngine.on(this.$element(), holdEvent.name, function() {\r\n this._feedBackDeferred = new Deferred;\r\n lock(this._feedBackDeferred);\r\n this._spinChangeHandler({\r\n event: e\r\n });\r\n this._holdTimer = setInterval(this._spinChangeHandler, SPIN_HOLD_DELAY, {\r\n event: e\r\n })\r\n }.bind(this));\r\n var document = domAdapter.getDocument();\r\n eventsEngine.on(document, POINTERUP_EVENT_NAME, this._clearTimer.bind(this));\r\n eventsEngine.on(document, POINTERCANCEL_EVENT_NAME, this._clearTimer.bind(this));\r\n this._spinChangeHandler({\r\n event: e\r\n })\r\n },\r\n _dispose: function() {\r\n this._clearTimer();\r\n this.callBase()\r\n },\r\n _clearTimer: function() {\r\n eventsEngine.off(this.$element(), holdEvent.name);\r\n var document = domAdapter.getDocument();\r\n eventsEngine.off(document, POINTERUP_EVENT_NAME);\r\n eventsEngine.off(document, POINTERCANCEL_EVENT_NAME);\r\n if (this._feedBackDeferred) {\r\n this._feedBackDeferred.resolve()\r\n }\r\n if (this._holdTimer) {\r\n clearInterval(this._holdTimer)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onChange\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default SpinButton;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.spins.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport TextEditorButton from \"../text_box/texteditor_button_collection/button\";\r\nimport SpinButton from \"./number_box.spin\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport pointer from \"../../events/pointer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar SPIN_CLASS = \"dx-numberbox-spin\";\r\nvar SPIN_CONTAINER_CLASS = \"dx-numberbox-spin-container\";\r\nvar SPIN_TOUCH_FRIENDLY_CLASS = \"dx-numberbox-spin-touch-friendly\";\r\nexport default class SpinButtons extends TextEditorButton {\r\n _attachEvents(instance, $spinContainer) {\r\n var {\r\n editor: editor\r\n } = this;\r\n var eventName = addNamespace(pointer.down, editor.NAME);\r\n var $spinContainerChildren = $spinContainer.children();\r\n var pointerDownAction = editor._createAction(e => editor._spinButtonsPointerDownHandler(e));\r\n eventsEngine.off($spinContainer, eventName);\r\n eventsEngine.on($spinContainer, eventName, e => pointerDownAction({\r\n event: e\r\n }));\r\n SpinButton.getInstance($spinContainerChildren.eq(0)).option(\"onChange\", e => editor._spinUpChangeHandler(e));\r\n SpinButton.getInstance($spinContainerChildren.eq(1)).option(\"onChange\", e => editor._spinDownChangeHandler(e))\r\n }\r\n _create() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var $spinContainer = $(\"<div>\").addClass(SPIN_CONTAINER_CLASS);\r\n var $spinUp = $(\"<div>\").appendTo($spinContainer);\r\n var $spinDown = $(\"<div>\").appendTo($spinContainer);\r\n var options = this._getOptions();\r\n this._addToContainer($spinContainer);\r\n editor._createComponent($spinUp, SpinButton, extend({\r\n direction: \"up\"\r\n }, options));\r\n editor._createComponent($spinDown, SpinButton, extend({\r\n direction: \"down\"\r\n }, options));\r\n this._legacyRender(editor.$element(), this._isTouchFriendly(), options.visible);\r\n return {\r\n instance: $spinContainer,\r\n $element: $spinContainer\r\n }\r\n }\r\n _getOptions() {\r\n var {\r\n editor: editor\r\n } = this;\r\n var visible = this._isVisible();\r\n var disabled = editor.option(\"disabled\");\r\n return {\r\n visible: visible,\r\n disabled: disabled\r\n }\r\n }\r\n _isVisible() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return super._isVisible() && editor.option(\"showSpinButtons\")\r\n }\r\n _isTouchFriendly() {\r\n var {\r\n editor: editor\r\n } = this;\r\n return editor.option(\"showSpinButtons\") && editor.option(\"useLargeSpinButtons\")\r\n }\r\n _legacyRender($editor, isTouchFriendly, isVisible) {\r\n $editor.toggleClass(SPIN_TOUCH_FRIENDLY_CLASS, isTouchFriendly);\r\n $editor.toggleClass(SPIN_CLASS, isVisible)\r\n }\r\n update() {\r\n var shouldUpdate = super.update();\r\n if (shouldUpdate) {\r\n var {\r\n editor: editor,\r\n instance: instance\r\n } = this;\r\n var $editor = editor.$element();\r\n var isVisible = this._isVisible();\r\n var isTouchFriendly = this._isTouchFriendly();\r\n var $spinButtons = instance.children();\r\n var spinUp = SpinButton.getInstance($spinButtons.eq(0));\r\n var spinDown = SpinButton.getInstance($spinButtons.eq(1));\r\n var options = this._getOptions();\r\n spinUp.option(options);\r\n spinDown.option(options);\r\n this._legacyRender($editor, isTouchFriendly, isVisible)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n applyServerDecimalSeparator,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fitIntoRange,\r\n inRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport devices from \"../../core/devices\";\r\nimport browser from \"../../core/utils/browser\";\r\nimport TextEditor from \"../text_box/ui.text_editor\";\r\nimport {\r\n addNamespace,\r\n getChar,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../../events/utils/index\";\r\nimport SpinButtons from \"./number_box.spins\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar math = Math;\r\nvar WIDGET_CLASS = \"dx-numberbox\";\r\nvar FIREFOX_CONTROL_KEYS = [\"tab\", \"del\", \"backspace\", \"leftArrow\", \"rightArrow\", \"home\", \"end\", \"enter\"];\r\nvar FORCE_VALUECHANGE_EVENT_NAMESPACE = \"NumberBoxForceValueChange\";\r\nvar NumberBoxBase = TextEditor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n upArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinUpChangeHandler(e)\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (!isCommandKeyPressed(e)) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._spinDownChangeHandler(e)\r\n }\r\n },\r\n enter: function() {}\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: 0,\r\n min: void 0,\r\n max: void 0,\r\n step: 1,\r\n showSpinButtons: false,\r\n useLargeSpinButtons: true,\r\n mode: \"text\",\r\n invalidValueMessage: messageLocalization.format(\"dxNumberBox-invalidValueMessage\"),\r\n buttons: void 0\r\n })\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _getDefaultButtons: function() {\r\n return this.callBase().concat([{\r\n name: \"spins\",\r\n Ctor: SpinButtons\r\n }])\r\n },\r\n _isSupportInputMode: function() {\r\n var version = parseFloat(browser.version);\r\n return browser.chrome && version >= 66 || browser.safari && version >= 12\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return devices.real().generic && !devices.isSimulator()\r\n },\r\n options: {\r\n useLargeSpinButtons: false\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" !== devices.real().deviceType && !this._isSupportInputMode()\r\n }.bind(this),\r\n options: {\r\n mode: \"number\"\r\n }\r\n }])\r\n },\r\n _initMarkup: function() {\r\n this._renderSubmitElement();\r\n this.$element().addClass(WIDGET_CLASS);\r\n this.callBase()\r\n },\r\n _getDefaultAttributes: function() {\r\n var attributes = this.callBase();\r\n attributes.inputmode = \"decimal\";\r\n return attributes\r\n },\r\n _renderContentImpl: function() {\r\n this.option(\"isValid\") && this._validateValue(this.option(\"value\"));\r\n this.setAria(\"role\", \"spinbutton\")\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element());\r\n this._setSubmitValue(this.option(\"value\"))\r\n },\r\n _setSubmitValue: function(value) {\r\n this._getSubmitElement().val(applyServerDecimalSeparator(value))\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _keyPressHandler: function(e) {\r\n this.callBase(e);\r\n var char = getChar(e);\r\n var isInputCharValid = /[\\d.,eE\\-+]/.test(char);\r\n if (!isInputCharValid) {\r\n var keyName = normalizeKeyName(e);\r\n if (isCommandKeyPressed(e) || keyName && FIREFOX_CONTROL_KEYS.includes(keyName)) {\r\n return\r\n }\r\n e.preventDefault();\r\n return false\r\n }\r\n this._keyPressed = true\r\n },\r\n _onMouseWheel: function(dxEvent) {\r\n dxEvent.delta > 0 ? this._spinValueChange(1, dxEvent) : this._spinValueChange(-1, dxEvent)\r\n },\r\n _renderValue: function() {\r\n var inputValue = this._input().val();\r\n var value = this.option(\"value\");\r\n if (!inputValue.length || Number(inputValue) !== value) {\r\n this._forceValueRender();\r\n this._toggleEmptinessEventHandler()\r\n }\r\n var valueText = isDefined(value) ? null : messageLocalization.format(\"dxNumberBox-noDataText\");\r\n this.setAria({\r\n valuenow: ensureDefined(value, \"\"),\r\n valuetext: valueText\r\n });\r\n this.option(\"text\", this._input().val());\r\n this._updateButtons();\r\n return (new Deferred).resolve()\r\n },\r\n _forceValueRender: function() {\r\n var value = this.option(\"value\");\r\n var number = Number(value);\r\n var formattedValue = isNaN(number) ? \"\" : this._applyDisplayValueFormatter(value);\r\n this._renderDisplayText(formattedValue)\r\n },\r\n _applyDisplayValueFormatter: function(value) {\r\n return this.option(\"displayValueFormatter\")(value)\r\n },\r\n _renderProps: function() {\r\n this._input().prop({\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n step: this.option(\"step\")\r\n });\r\n this.setAria({\r\n valuemin: ensureDefined(this.option(\"min\"), \"\"),\r\n valuemax: ensureDefined(this.option(\"max\"), \"\")\r\n })\r\n },\r\n _spinButtonsPointerDownHandler: function() {\r\n var $input = this._input();\r\n if (!this.option(\"useLargeSpinButtons\") && domAdapter.getActiveElement() !== $input[0]) {\r\n eventsEngine.trigger($input, \"focus\")\r\n }\r\n },\r\n _spinUpChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(1, e.event || e)\r\n }\r\n },\r\n _spinDownChangeHandler: function(e) {\r\n if (!this.option(\"readOnly\")) {\r\n this._spinValueChange(-1, e.event || e)\r\n }\r\n },\r\n _spinValueChange: function(sign, dxEvent) {\r\n var step = parseFloat(this.option(\"step\"));\r\n if (0 === step) {\r\n return\r\n }\r\n var value = parseFloat(this._normalizeInputValue()) || 0;\r\n value = this._correctRounding(value, step * sign);\r\n var min = this.option(\"min\");\r\n var max = this.option(\"max\");\r\n if (isDefined(min)) {\r\n value = Math.max(min, value)\r\n }\r\n if (isDefined(max)) {\r\n value = Math.min(max, value)\r\n }\r\n this._saveValueChangeEvent(dxEvent);\r\n this.option(\"value\", value)\r\n },\r\n _correctRounding: function(value, step) {\r\n var regex = /[,.](.*)/;\r\n var isFloatValue = regex.test(value);\r\n var isFloatStep = regex.test(step);\r\n if (isFloatValue || isFloatStep) {\r\n var valueAccuracy = isFloatValue ? regex.exec(value)[0].length : 0;\r\n var stepAccuracy = isFloatStep ? regex.exec(step)[0].length : 0;\r\n var accuracy = math.max(valueAccuracy, stepAccuracy);\r\n value = this._round(value + step, accuracy);\r\n return value\r\n }\r\n return value + step\r\n },\r\n _round: function(value, precision) {\r\n precision = precision || 0;\r\n var multiplier = Math.pow(10, precision);\r\n value *= multiplier;\r\n value = Math.round(value) / multiplier;\r\n return value\r\n },\r\n _renderValueChangeEvent: function() {\r\n this.callBase();\r\n var forceValueChangeEvent = addNamespace(\"focusout\", FORCE_VALUECHANGE_EVENT_NAMESPACE);\r\n eventsEngine.off(this.element(), forceValueChangeEvent);\r\n eventsEngine.on(this.element(), forceValueChangeEvent, this._forceRefreshInputValue.bind(this))\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (\"number\" === this.option(\"mode\")) {\r\n return\r\n }\r\n var $input = this._input();\r\n var formattedValue = this._applyDisplayValueFormatter(this.option(\"value\"));\r\n $input.val(null);\r\n $input.val(formattedValue)\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var $input = this._input();\r\n var inputValue = this._normalizeText();\r\n var value = this._parseValue(inputValue);\r\n var valueHasDigits = \".\" !== inputValue && \"-\" !== inputValue;\r\n if (this._isValueValid() && !this._validateValue(value)) {\r\n $input.val(this._applyDisplayValueFormatter(value));\r\n return\r\n }\r\n if (valueHasDigits) {\r\n this.callBase(e, isNaN(value) ? null : value)\r\n }\r\n this._applyValueBoundaries(inputValue, value);\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n })\r\n },\r\n _applyValueBoundaries: function(inputValue, parsedValue) {\r\n var isValueIncomplete = this._isValueIncomplete(inputValue);\r\n var isValueCorrect = this._isValueInRange(inputValue);\r\n if (!isValueIncomplete && !isValueCorrect && null !== parsedValue) {\r\n if (Number(inputValue) !== parsedValue) {\r\n this._input().val(this._applyDisplayValueFormatter(parsedValue))\r\n }\r\n }\r\n },\r\n _replaceCommaWithPoint: function(value) {\r\n return value.replace(\",\", \".\")\r\n },\r\n _inputIsInvalid: function() {\r\n var isNumberMode = \"number\" === this.option(\"mode\");\r\n var validityState = this._input().get(0).validity;\r\n return isNumberMode && validityState && validityState.badInput\r\n },\r\n _renderDisplayText: function(text) {\r\n if (this._inputIsInvalid()) {\r\n return\r\n }\r\n this.callBase(text)\r\n },\r\n _isValueIncomplete: function(value) {\r\n return /(^-$)|(^-?\\d*\\.$)|(\\d+e-?$)/i.test(value)\r\n },\r\n _isValueInRange: function(value) {\r\n return inRange(value, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _isNumber: function(value) {\r\n return null !== this._parseValue(value)\r\n },\r\n _validateValue: function(value) {\r\n var inputValue = this._normalizeText();\r\n var isValueValid = this._isValueValid();\r\n var isValid = true;\r\n var isNumber = this._isNumber(inputValue);\r\n if (isNaN(Number(value))) {\r\n isValid = false\r\n }\r\n if (!value && isValueValid) {\r\n isValid = true\r\n } else if (!isNumber && !isValueValid) {\r\n isValid = false\r\n }\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: this.option(\"invalidValueMessage\")\r\n }\r\n });\r\n return isValid\r\n },\r\n _normalizeInputValue: function() {\r\n return this._parseValue(this._normalizeText())\r\n },\r\n _normalizeText: function() {\r\n var value = this._input().val().trim();\r\n return this._replaceCommaWithPoint(value)\r\n },\r\n _parseValue: function(value) {\r\n var number = parseFloat(value);\r\n if (isNaN(number)) {\r\n return null\r\n }\r\n return fitIntoRange(number, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _clearValue: function() {\r\n if (this._inputIsInvalid()) {\r\n this._input().val(\"\");\r\n this._validateValue()\r\n }\r\n this.callBase()\r\n },\r\n reset: function() {\r\n if (null === this.option(\"value\")) {\r\n this.option(\"text\", \"\");\r\n if (this._input().length) {\r\n this._renderValue()\r\n }\r\n } else {\r\n this.option(\"value\", null)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._validateValue(args.value);\r\n this._setSubmitValue(args.value);\r\n this.callBase(args);\r\n this._resumeValueChangeAction();\r\n break;\r\n case \"step\":\r\n this._renderProps();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._renderProps();\r\n this.option(\"value\", this._parseValue(this.option(\"value\")));\r\n break;\r\n case \"showSpinButtons\":\r\n case \"useLargeSpinButtons\":\r\n this._updateButtons([\"spins\"]);\r\n break;\r\n case \"invalidValueMessage\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nexport default NumberBoxBase;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.mask.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isNumeric,\r\n isDefined,\r\n isFunction,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n fitIntoRange,\r\n inRange\r\n} from \"../../core/utils/math\";\r\nimport number from \"../../localization/number\";\r\nimport {\r\n getCaretWithOffset,\r\n isCaretInBoundaries,\r\n getCaretInBoundaries,\r\n getCaretBoundaries,\r\n getCaretAfterFormat,\r\n getCaretOffset\r\n} from \"./number_box.caret\";\r\nimport {\r\n getFormat as getLDMLFormat\r\n} from \"../../localization/ldml/number\";\r\nimport NumberBoxBase from \"./number_box.base\";\r\nimport {\r\n addNamespace,\r\n getChar,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n ensureDefined,\r\n escapeRegExp\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getRealSeparatorIndex,\r\n getNthOccurrence,\r\n splitByIndex,\r\n adjustPercentValue\r\n} from \"./utils\";\r\nvar NUMBER_FORMATTER_NAMESPACE = \"dxNumberFormatter\";\r\nvar MOVE_FORWARD = 1;\r\nvar MOVE_BACKWARD = -1;\r\nvar MINUS = \"-\";\r\nvar MINUS_KEY = \"minus\";\r\nvar INPUT_EVENT = \"input\";\r\nvar CARET_TIMEOUT_DURATION = 0;\r\nvar NumberBoxMask = NumberBoxBase.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n useMaskBehavior: true,\r\n format: null\r\n })\r\n },\r\n _isDeleteKey: function(key) {\r\n return \"del\" === key\r\n },\r\n _supportedKeys: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n return extend(this.callBase(), {\r\n minus: this._revertSign.bind(this),\r\n del: this._removeHandler.bind(this),\r\n backspace: this._removeHandler.bind(this),\r\n leftArrow: this._arrowHandler.bind(this, MOVE_BACKWARD),\r\n rightArrow: this._arrowHandler.bind(this, MOVE_FORWARD),\r\n home: this._moveCaretToBoundaryEventHandler.bind(this, MOVE_FORWARD),\r\n enter: this._updateFormattedValue.bind(this),\r\n end: this._moveCaretToBoundaryEventHandler.bind(this, MOVE_BACKWARD)\r\n })\r\n },\r\n _getTextSeparatorIndex: function(text) {\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var realSeparatorOccurrenceIndex = getRealSeparatorIndex(this.option(\"format\")).occurrence;\r\n return getNthOccurrence(text, decimalSeparator, realSeparatorOccurrenceIndex)\r\n },\r\n _focusInHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n this.clearCaretTimeout();\r\n this._caretTimeout = setTimeout(function() {\r\n this._caretTimeout = void 0;\r\n var caret = this._caret();\r\n if (caret.start === caret.end && this._useMaskBehavior()) {\r\n var text = this._getInputVal();\r\n var decimalSeparatorIndex = this._getTextSeparatorIndex(text);\r\n if (decimalSeparatorIndex >= 0) {\r\n this._caret({\r\n start: decimalSeparatorIndex,\r\n end: decimalSeparatorIndex\r\n })\r\n } else {\r\n this._moveCaretToBoundaryEventHandler(MOVE_BACKWARD, e)\r\n }\r\n }\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n this.callBase(e)\r\n },\r\n _focusOutHandler: function(e) {\r\n var shouldHandleEvent = !this._preventNestedFocusEvent(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = true;\r\n if (this._useMaskBehavior()) {\r\n this._updateFormattedValue()\r\n }\r\n }\r\n this.callBase(e);\r\n if (shouldHandleEvent) {\r\n this._focusOutOccurs = false\r\n }\r\n },\r\n _hasValueBeenChanged(inputValue) {\r\n var format = this._getFormatPattern();\r\n var value = this.option(\"value\");\r\n var formatted = this._format(value, format) || \"\";\r\n return formatted !== inputValue\r\n },\r\n _updateFormattedValue: function() {\r\n var inputValue = this._getInputVal();\r\n if (this._hasValueBeenChanged(inputValue)) {\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this._setTextByParsedValue();\r\n if (this._parsedValue !== this.option(\"value\")) {\r\n eventsEngine.trigger(this._input(), \"change\")\r\n }\r\n }\r\n },\r\n _arrowHandler: function(step, e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this._getInputVal();\r\n var format = this._getFormatPattern();\r\n var nextCaret = getCaretWithOffset(this._caret(), step);\r\n if (!isCaretInBoundaries(nextCaret, text, format)) {\r\n nextCaret = step === MOVE_FORWARD ? nextCaret.end : nextCaret.start;\r\n e.preventDefault();\r\n this._caret(getCaretInBoundaries(nextCaret, text, format))\r\n }\r\n },\r\n _moveCaretToBoundary: function(direction) {\r\n var boundaries = getCaretBoundaries(this._getInputVal(), this._getFormatPattern());\r\n var newCaret = getCaretWithOffset(direction === MOVE_FORWARD ? boundaries.start : boundaries.end, 0);\r\n this._caret(newCaret)\r\n },\r\n _moveCaretToBoundaryEventHandler: function(direction, e) {\r\n if (!this._useMaskBehavior() || e && e.shiftKey) {\r\n return\r\n }\r\n this._moveCaretToBoundary(direction);\r\n e && e.preventDefault()\r\n },\r\n _shouldMoveCaret: function(text, caret) {\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var isDecimalSeparatorNext = text.charAt(caret.end) === decimalSeparator;\r\n var moveToFloat = (this._lastKey === decimalSeparator || \".\" === this._lastKey || \",\" === this._lastKey) && isDecimalSeparatorNext;\r\n return moveToFloat\r\n },\r\n _getInputVal: function() {\r\n return number.convertDigits(this._input().val(), true)\r\n },\r\n _keyboardHandler: function(e) {\r\n this.clearCaretTimeout();\r\n this._lastKey = number.convertDigits(getChar(e), true);\r\n this._lastKeyName = normalizeKeyName(e);\r\n if (!this._shouldHandleKey(e.originalEvent)) {\r\n return this.callBase(e)\r\n }\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var enteredChar = this._lastKeyName === MINUS_KEY ? \"\" : this._lastKey;\r\n var newValue = this._tryParse(normalizedText, caret, enteredChar);\r\n if (this._shouldMoveCaret(normalizedText, caret)) {\r\n this._moveCaret(1);\r\n e.originalEvent.preventDefault()\r\n }\r\n if (void 0 === newValue) {\r\n if (this._lastKeyName !== MINUS_KEY) {\r\n e.originalEvent.preventDefault()\r\n }\r\n } else {\r\n this._parsedValue = newValue\r\n }\r\n return this.callBase(e)\r\n },\r\n _keyPressHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n this.callBase(e)\r\n }\r\n },\r\n _removeHandler: function(e) {\r\n var caret = this._caret();\r\n var text = this._getInputVal();\r\n var start = caret.start;\r\n var end = caret.end;\r\n this._lastKey = getChar(e);\r\n this._lastKeyName = normalizeKeyName(e);\r\n var isDeleteKey = this._isDeleteKey(this._lastKeyName);\r\n var isBackspaceKey = !isDeleteKey;\r\n if (start === end) {\r\n var caretPosition = start;\r\n var canDelete = isBackspaceKey && caretPosition > 0 || isDeleteKey && caretPosition < text.length;\r\n if (canDelete) {\r\n isDeleteKey && end++;\r\n isBackspaceKey && start--\r\n } else {\r\n e.preventDefault();\r\n return\r\n }\r\n }\r\n var char = text.slice(start, end);\r\n if (this._isStub(char)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n if (this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0) {\r\n this._revertSign(e);\r\n this._setTextByParsedValue();\r\n var shouldTriggerInputEvent = this.option(\"valueChangeEvent\").split(\" \").includes(\"input\");\r\n if (shouldTriggerInputEvent) {\r\n eventsEngine.trigger(this._input(), \"input\")\r\n }\r\n }\r\n e.preventDefault();\r\n return\r\n }\r\n var decimalSeparator = number.getDecimalSeparator();\r\n if (char === decimalSeparator) {\r\n var decimalSeparatorIndex = text.indexOf(decimalSeparator);\r\n if (this._isNonStubAfter(decimalSeparatorIndex + 1)) {\r\n this._moveCaret(isDeleteKey ? 1 : -1);\r\n e.preventDefault()\r\n }\r\n return\r\n }\r\n if (end - start < text.length) {\r\n var editedText = this._replaceSelectedText(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n var noDigits = editedText.search(/[0-9]/) < 0;\r\n if (noDigits && this._isValueInRange(0)) {\r\n this._parsedValue = this._parsedValue < 0 || 1 / this._parsedValue === -1 / 0 ? -0 : 0;\r\n return\r\n }\r\n }\r\n var valueAfterRemoving = this._tryParse(text, {\r\n start: start,\r\n end: end\r\n }, \"\");\r\n if (void 0 === valueAfterRemoving) {\r\n e.preventDefault()\r\n } else {\r\n this._parsedValue = valueAfterRemoving\r\n }\r\n },\r\n _isPercentFormat: function() {\r\n var format = this._getFormatPattern();\r\n var noEscapedFormat = format.replace(/'[^']+'/g, \"\");\r\n return -1 !== noEscapedFormat.indexOf(\"%\")\r\n },\r\n _parse: function(text, format) {\r\n var formatOption = this.option(\"format\");\r\n var isCustomParser = isFunction(formatOption.parser);\r\n var parser = isCustomParser ? formatOption.parser : number.parse;\r\n var integerPartStartIndex = 0;\r\n if (!isCustomParser) {\r\n var formatPointIndex = getRealSeparatorIndex(format).index;\r\n var textPointIndex = this._getTextSeparatorIndex(text);\r\n var formatIntegerPartLength = -1 !== formatPointIndex ? formatPointIndex : format.length;\r\n var textIntegerPartLength = -1 !== textPointIndex ? textPointIndex : text.length;\r\n if (textIntegerPartLength > formatIntegerPartLength && -1 === format.indexOf(\"#\")) {\r\n integerPartStartIndex = textIntegerPartLength - formatIntegerPartLength\r\n }\r\n }\r\n text = text.substr(integerPartStartIndex);\r\n return parser(text, format)\r\n },\r\n _format: function(value, format) {\r\n var formatOption = this.option(\"format\");\r\n var customFormatter = (null === formatOption || void 0 === formatOption ? void 0 : formatOption.formatter) || formatOption;\r\n var formatter = isFunction(customFormatter) ? customFormatter : number.format;\r\n var formattedValue = null === value ? \"\" : formatter(value, format);\r\n return formattedValue\r\n },\r\n _getFormatPattern: function() {\r\n if (!this._currentFormat) {\r\n this._updateFormat()\r\n }\r\n return this._currentFormat\r\n },\r\n _updateFormat: function() {\r\n var format = this.option(\"format\");\r\n var isCustomParser = isFunction(null === format || void 0 === format ? void 0 : format.parser);\r\n var isLDMLPattern = isString(format) && (format.indexOf(\"0\") >= 0 || format.indexOf(\"#\") >= 0);\r\n var isExponentialFormat = \"exponential\" === format || \"exponential\" === (null === format || void 0 === format ? void 0 : format.type);\r\n var shouldUseFormatAsIs = isCustomParser || isLDMLPattern || isExponentialFormat;\r\n this._currentFormat = shouldUseFormatAsIs ? format : getLDMLFormat(value => {\r\n var text = this._format(value, format);\r\n return number.convertDigits(text, true)\r\n })\r\n },\r\n _getFormatForSign: function(text) {\r\n var format = this._getFormatPattern();\r\n if (isString(format)) {\r\n var signParts = format.split(\";\");\r\n var sign = number.getSign(text, format);\r\n signParts[1] = signParts[1] || \"-\" + signParts[0];\r\n return sign < 0 ? signParts[1] : signParts[0]\r\n } else {\r\n var _sign = number.getSign(text);\r\n return _sign < 0 ? \"-\" : \"\"\r\n }\r\n },\r\n _removeStubs: function(text, excludeComma) {\r\n var format = this._getFormatForSign(text);\r\n var thousandsSeparator = number.getThousandsSeparator();\r\n var stubs = this._getStubs(format);\r\n var result = text;\r\n if (stubs.length) {\r\n var prefixStubs = stubs[0];\r\n var postfixRegex = new RegExp(\"(\" + escapeRegExp(stubs[1] || \"\") + \")$\", \"g\");\r\n var decoratorsRegex = new RegExp(\"[-\" + escapeRegExp(excludeComma ? \"\" : thousandsSeparator) + \"]\", \"g\");\r\n result = result.replace(prefixStubs, \"\").replace(postfixRegex, \"\").replace(decoratorsRegex, \"\")\r\n }\r\n return result\r\n },\r\n _getStubs: function(format) {\r\n var regExpResult = /[^']([#0.,]+)/g.exec(format);\r\n var pattern = regExpResult && regExpResult[0].trim();\r\n return format.split(pattern).map((function(stub) {\r\n return stub.replace(/'/g, \"\")\r\n }))\r\n },\r\n _truncateToPrecision: function(value, maxPrecision) {\r\n if (isDefined(value)) {\r\n var strValue = value.toString();\r\n var decimalSeparatorIndex = strValue.indexOf(\".\");\r\n if (strValue && decimalSeparatorIndex > -1) {\r\n var parsedValue = parseFloat(strValue.substr(0, decimalSeparatorIndex + maxPrecision + 1));\r\n return isNaN(parsedValue) ? value : parsedValue\r\n }\r\n }\r\n return value\r\n },\r\n _tryParse: function(text, selection, char) {\r\n var editedText = this._replaceSelectedText(text, selection, char);\r\n var format = this._getFormatPattern();\r\n var isTextSelected = selection.start !== selection.end;\r\n var parsedValue = this._getParsedValue(editedText, format);\r\n var maxPrecision = !format.parser && this._getPrecisionLimits(editedText).max;\r\n var isValueChanged = parsedValue !== this._parsedValue;\r\n var decimalSeparator = number.getDecimalSeparator();\r\n var isDecimalPointRestricted = char === decimalSeparator && 0 === maxPrecision;\r\n var isUselessCharRestricted = !isTextSelected && !isValueChanged && char !== MINUS && !this._isValueIncomplete(editedText) && this._isStub(char);\r\n if (isDecimalPointRestricted || isUselessCharRestricted) {\r\n return\r\n }\r\n if (\"\" === this._removeStubs(editedText)) {\r\n parsedValue = Math.abs(0 * this._parsedValue)\r\n }\r\n if (isNaN(parsedValue)) {\r\n return\r\n }\r\n var value = null === parsedValue ? this._parsedValue : parsedValue;\r\n parsedValue = maxPrecision ? this._truncateToPrecision(value, maxPrecision) : parsedValue;\r\n return !format.parser && this._isPercentFormat() ? adjustPercentValue(parsedValue, maxPrecision) : parsedValue\r\n },\r\n _getParsedValue: function(text, format) {\r\n var sign = number.getSign(text, (null === format || void 0 === format ? void 0 : format.formatter) || format);\r\n var textWithoutStubs = this._removeStubs(text, true);\r\n var parsedValue = this._parse(textWithoutStubs, format);\r\n var parsedValueSign = parsedValue < 0 ? -1 : 1;\r\n var parsedValueWithSign = isNumeric(parsedValue) && sign !== parsedValueSign ? sign * parsedValue : parsedValue;\r\n return parsedValueWithSign\r\n },\r\n _isValueIncomplete: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n var caret = this._caret();\r\n var point = number.getDecimalSeparator();\r\n var pointIndex = this._getTextSeparatorIndex(text);\r\n var isCaretOnFloat = pointIndex >= 0 && pointIndex < caret.start;\r\n var textParts = this._removeStubs(text, true).split(point);\r\n if (!isCaretOnFloat || 2 !== textParts.length) {\r\n return false\r\n }\r\n var floatLength = textParts[1].length;\r\n var format = this._getFormatPattern();\r\n var isCustomParser = !!format.parser;\r\n var precision = !isCustomParser && this._getPrecisionLimits(this._getFormatPattern(), text);\r\n var isPrecisionInRange = isCustomParser ? true : inRange(floatLength, precision.min, precision.max);\r\n var endsWithZero = \"0\" === textParts[1].charAt(floatLength - 1);\r\n return isPrecisionInRange && (endsWithZero || !floatLength)\r\n },\r\n _isValueInRange: function(value) {\r\n var min = ensureDefined(this.option(\"min\"), -1 / 0);\r\n var max = ensureDefined(this.option(\"max\"), 1 / 0);\r\n return inRange(value, min, max)\r\n },\r\n _setInputText: function(text) {\r\n var normalizedText = number.convertDigits(text, true);\r\n var newCaret = getCaretAfterFormat(this._getInputVal(), normalizedText, this._caret(), this._getFormatPattern());\r\n this._input().val(text);\r\n this._toggleEmptinessEventHandler();\r\n this._formattedValue = text;\r\n if (!this._focusOutOccurs) {\r\n this._caret(newCaret)\r\n }\r\n },\r\n _useMaskBehavior: function() {\r\n return !!this.option(\"format\") && this.option(\"useMaskBehavior\")\r\n },\r\n _renderInputType: function() {\r\n var isNumberType = \"number\" === this.option(\"mode\");\r\n var isDesktop = \"desktop\" === devices.real().deviceType;\r\n if (this._useMaskBehavior() && isNumberType) {\r\n this._setInputType(isDesktop || this._isSupportInputMode() ? \"text\" : \"tel\")\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _isChar: function(str) {\r\n return isString(str) && 1 === str.length\r\n },\r\n _moveCaret: function(offset) {\r\n if (!offset) {\r\n return\r\n }\r\n var newCaret = getCaretWithOffset(this._caret(), offset);\r\n var adjustedCaret = getCaretInBoundaries(newCaret, this._getInputVal(), this._getFormatPattern());\r\n this._caret(adjustedCaret)\r\n },\r\n _shouldHandleKey: function(e) {\r\n var keyName = normalizeKeyName(e);\r\n var isSpecialChar = isCommandKeyPressed(e) || e.altKey || e.shiftKey || !this._isChar(keyName);\r\n var isMinusKey = keyName === MINUS_KEY;\r\n var useMaskBehavior = this._useMaskBehavior();\r\n return useMaskBehavior && !isSpecialChar && !isMinusKey\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderFormatter()\r\n },\r\n _renderFormatter: function() {\r\n this._clearCache();\r\n this._detachFormatterEvents();\r\n if (this._useMaskBehavior()) {\r\n this._attachFormatterEvents()\r\n }\r\n },\r\n _detachFormatterEvents: function() {\r\n eventsEngine.off(this._input(), \".\" + NUMBER_FORMATTER_NAMESPACE)\r\n },\r\n _isInputFromPaste: function(e) {\r\n var inputType = e.originalEvent && e.originalEvent.inputType;\r\n if (isDefined(inputType)) {\r\n return \"insertFromPaste\" === inputType\r\n } else {\r\n return this._isValuePasted\r\n }\r\n },\r\n _attachFormatterEvents: function() {\r\n var $input = this._input();\r\n eventsEngine.on($input, addNamespace(INPUT_EVENT, NUMBER_FORMATTER_NAMESPACE), function(e) {\r\n this._formatValue(e);\r\n this._isValuePasted = false\r\n }.bind(this));\r\n eventsEngine.on($input, addNamespace(\"dxclick\", NUMBER_FORMATTER_NAMESPACE), function() {\r\n if (!this._caretTimeout) {\r\n this._caretTimeout = setTimeout(function() {\r\n this._caretTimeout = void 0;\r\n this._caret(getCaretInBoundaries(this._caret(), this._getInputVal(), this._getFormatPattern()))\r\n }.bind(this), CARET_TIMEOUT_DURATION)\r\n }\r\n }.bind(this));\r\n eventsEngine.on($input, \"dxdblclick\", function() {\r\n this.clearCaretTimeout()\r\n }.bind(this))\r\n },\r\n clearCaretTimeout: function() {\r\n clearTimeout(this._caretTimeout);\r\n this._caretTimeout = void 0\r\n },\r\n _forceRefreshInputValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase()\r\n }\r\n },\r\n _isNonStubAfter: function(index) {\r\n var text = this._getInputVal().slice(index);\r\n return text && !this._isStub(text, true)\r\n },\r\n _isStub: function(str, isString) {\r\n var escapedDecimalSeparator = escapeRegExp(number.getDecimalSeparator());\r\n var regExpString = \"^[^0-9\" + escapedDecimalSeparator + \"]+$\";\r\n var stubRegExp = new RegExp(regExpString, \"g\");\r\n return stubRegExp.test(str) && (isString || this._isChar(str))\r\n },\r\n _parseValue: function(text) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(text)\r\n }\r\n return this._parsedValue\r\n },\r\n _getPrecisionLimits: function(text) {\r\n var currentFormat = this._getFormatForSign(text);\r\n var realSeparatorIndex = getRealSeparatorIndex(currentFormat).index;\r\n var floatPart = (splitByIndex(currentFormat, realSeparatorIndex)[1] || \"\").replace(/[^#0]/g, \"\");\r\n var minPrecision = floatPart.replace(/^(0*)#*/, \"$1\").length;\r\n var maxPrecision = floatPart.length;\r\n return {\r\n min: minPrecision,\r\n max: maxPrecision\r\n }\r\n },\r\n _revertSign: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var caret = this._caret();\r\n if (caret.start !== caret.end) {\r\n if (normalizeKeyName(e) === MINUS_KEY) {\r\n this._applyRevertedSign(e, caret, true);\r\n return\r\n } else {\r\n this._caret(getCaretInBoundaries(0, this._getInputVal(), this._getFormatPattern()))\r\n }\r\n }\r\n this._applyRevertedSign(e, caret)\r\n },\r\n _applyRevertedSign: function(e, caret, preserveSelectedText) {\r\n var newValue = -1 * ensureDefined(this._parsedValue, null);\r\n if (this._isValueInRange(newValue) || 0 === newValue) {\r\n this._parsedValue = newValue;\r\n if (preserveSelectedText) {\r\n var format = this._getFormatPattern();\r\n var previousText = this._getInputVal();\r\n this._setTextByParsedValue();\r\n e.preventDefault();\r\n var currentText = this._getInputVal();\r\n var offset = getCaretOffset(previousText, currentText, format);\r\n caret = getCaretWithOffset(caret, offset);\r\n var caretInBoundaries = getCaretInBoundaries(caret, currentText, format);\r\n this._caret(caretInBoundaries)\r\n }\r\n }\r\n },\r\n _removeMinusFromText: function(text, caret) {\r\n var isMinusPressed = this._lastKeyName === MINUS_KEY && text.charAt(caret.start - 1) === MINUS;\r\n return isMinusPressed ? this._replaceSelectedText(text, {\r\n start: caret.start - 1,\r\n end: caret.start\r\n }, \"\") : text\r\n },\r\n _setTextByParsedValue: function() {\r\n var format = this._getFormatPattern();\r\n var parsed = this._parseValue();\r\n var formatted = this._format(parsed, format) || \"\";\r\n this._setInputText(formatted)\r\n },\r\n _formatValue: function(e) {\r\n var normalizedText = this._getInputVal();\r\n var caret = this._caret();\r\n var textWithoutMinus = this._removeMinusFromText(normalizedText, caret);\r\n var wasMinusRemoved = textWithoutMinus !== normalizedText;\r\n normalizedText = textWithoutMinus;\r\n if (!this._isInputFromPaste(e) && this._isValueIncomplete(textWithoutMinus)) {\r\n this._formattedValue = normalizedText;\r\n if (wasMinusRemoved) {\r\n this._setTextByParsedValue()\r\n }\r\n return\r\n }\r\n var textWasChanged = number.convertDigits(this._formattedValue, true) !== normalizedText;\r\n if (textWasChanged) {\r\n var value = this._tryParse(normalizedText, caret, \"\");\r\n if (isDefined(value)) {\r\n this._parsedValue = value\r\n }\r\n }\r\n this._setTextByParsedValue()\r\n },\r\n _renderDisplayText: function() {\r\n if (this._useMaskBehavior()) {\r\n this._toggleEmptinessEventHandler()\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _renderValue: function() {\r\n if (this._useMaskBehavior()) {\r\n this._parsedValue = this.option(\"value\");\r\n this._setTextByParsedValue()\r\n }\r\n return this.callBase()\r\n },\r\n _updateParsedValue: function() {\r\n var inputValue = this._getInputVal();\r\n this._parsedValue = this._tryParse(inputValue, this._caret())\r\n },\r\n _adjustParsedValue: function() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var clearedText = this._removeStubs(this._getInputVal());\r\n var parsedValue = clearedText ? this._parseValue() : null;\r\n if (!isNumeric(parsedValue)) {\r\n this._parsedValue = parsedValue;\r\n return\r\n }\r\n this._parsedValue = fitIntoRange(parsedValue, this.option(\"min\"), this.option(\"max\"))\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (!this._useMaskBehavior()) {\r\n return this.callBase(e)\r\n }\r\n var caret = this._caret();\r\n this._saveValueChangeEvent(e);\r\n this._lastKey = null;\r\n this._lastKeyName = null;\r\n this._updateParsedValue();\r\n this._adjustParsedValue();\r\n this.option(\"value\", this._parsedValue);\r\n if (caret) {\r\n this._caret(caret)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"format\":\r\n case \"useMaskBehavior\":\r\n this._renderInputType();\r\n this._updateFormat();\r\n this._renderFormatter();\r\n this._renderValue();\r\n this._refreshValueChangeEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n this._adjustParsedValue();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearCache: function() {\r\n delete this._formattedValue;\r\n delete this._lastKey;\r\n delete this._lastKeyName;\r\n delete this._parsedValue;\r\n delete this._focusOutOccurs;\r\n clearTimeout(this._caretTimeout);\r\n delete this._caretTimeout\r\n },\r\n _clean: function() {\r\n this._clearCache();\r\n this.callBase()\r\n }\r\n});\r\nexport default NumberBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/number_box/number_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport NumberBoxMask from \"./number_box.mask\";\r\nregisterComponent(\"dxNumberBox\", NumberBoxMask);\r\nexport default NumberBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/number_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport NumberBox from \"./number_box/number_box\";\r\nexport default NumberBox;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.strategy.grouped.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport storeHelper from \"../../data/store_helper\";\r\nimport query from \"../../data/query\";\r\nimport EditStrategy from \"../collection/ui.collection_widget.edit.strategy.plain\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar SELECTION_SHIFT = 20;\r\nvar SELECTION_MASK = (1 << SELECTION_SHIFT) - 1;\r\nvar combineIndex = function(indices) {\r\n return (indices.group << SELECTION_SHIFT) + indices.item\r\n};\r\nvar splitIndex = function(combinedIndex) {\r\n return {\r\n group: combinedIndex >> SELECTION_SHIFT,\r\n item: combinedIndex & SELECTION_MASK\r\n }\r\n};\r\nvar GroupedEditStrategy = EditStrategy.inherit({\r\n _groupElements: function() {\r\n return this._collectionWidget._itemContainer().find(\".\" + LIST_GROUP_CLASS)\r\n },\r\n _groupItemElements: function($group) {\r\n return $group.find(\".\" + LIST_ITEM_CLASS)\r\n },\r\n getIndexByItemData: function(itemData) {\r\n var groups = this._collectionWidget.option(\"items\");\r\n var index = false;\r\n if (!itemData) {\r\n return false\r\n }\r\n if (itemData.items && itemData.items.length) {\r\n itemData = itemData.items[0]\r\n }\r\n each(groups, (function(groupIndex, group) {\r\n if (!group.items) {\r\n return false\r\n }\r\n each(group.items, (function(itemIndex, item) {\r\n if (item !== itemData) {\r\n return true\r\n }\r\n index = {\r\n group: groupIndex,\r\n item: itemIndex\r\n };\r\n return false\r\n }));\r\n if (index) {\r\n return false\r\n }\r\n }));\r\n return index\r\n },\r\n getItemDataByIndex: function(index) {\r\n var items = this._collectionWidget.option(\"items\");\r\n if (isNumeric(index)) {\r\n return this.itemsGetter()[index]\r\n }\r\n return index && items[index.group] && items[index.group].items[index.item] || null\r\n },\r\n itemsGetter: function() {\r\n var resultItems = [];\r\n var items = this._collectionWidget.option(\"items\");\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n resultItems = resultItems.concat(items[i].items)\r\n } else {\r\n resultItems.push(items[i])\r\n }\r\n }\r\n return resultItems\r\n },\r\n deleteItemAtIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var itemGroup = this._collectionWidget.option(\"items\")[indices.group].items;\r\n itemGroup.splice(indices.item, 1)\r\n },\r\n getKeysByItems: function(items) {\r\n var plainItems = [];\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n var result = [];\r\n for (i = 0; i < plainItems.length; i++) {\r\n result.push(this._collectionWidget.keyOf(plainItems[i]))\r\n }\r\n return result\r\n },\r\n getIndexByKey: function(key, items) {\r\n var groups = items || this._collectionWidget.option(\"items\");\r\n var index = -1;\r\n var that = this;\r\n each(groups, (function(groupIndex, group) {\r\n if (!group.items) {\r\n return\r\n }\r\n each(group.items, (function(itemIndex, item) {\r\n var itemKey = that._collectionWidget.keyOf(item);\r\n if (that._equalKeys(itemKey, key)) {\r\n index = {\r\n group: groupIndex,\r\n item: itemIndex\r\n };\r\n return false\r\n }\r\n }));\r\n if (-1 !== index) {\r\n return false\r\n }\r\n }));\r\n return index\r\n },\r\n _getGroups: function(items) {\r\n var dataController = this._collectionWidget._dataController;\r\n var group = dataController.group();\r\n if (group) {\r\n return storeHelper.queryByOptions(query(items), {\r\n group: group\r\n }).toArray()\r\n }\r\n return this._collectionWidget.option(\"items\")\r\n },\r\n getItemsByKeys: function(keys, items) {\r\n var result = [];\r\n var groups = this._getGroups(items);\r\n var groupItemByKeyMap = {};\r\n var getItemMeta = key => {\r\n var index = this.getIndexByKey(key, groups);\r\n var group = index && groups[index.group];\r\n if (!group) {\r\n return\r\n }\r\n return {\r\n groupKey: group.key,\r\n item: group.items[index.item]\r\n }\r\n };\r\n each(keys, (function(_, key) {\r\n var itemMeta = getItemMeta(key);\r\n if (!itemMeta) {\r\n return\r\n }\r\n var groupKey = itemMeta.groupKey;\r\n var item = itemMeta.item;\r\n var selectedGroup = groupItemByKeyMap[groupKey];\r\n if (!selectedGroup) {\r\n selectedGroup = {\r\n key: groupKey,\r\n items: []\r\n };\r\n groupItemByKeyMap[groupKey] = selectedGroup;\r\n result.push(selectedGroup)\r\n }\r\n selectedGroup.items.push(item)\r\n }));\r\n return result\r\n },\r\n moveItemAtIndexToIndex: function(movingIndex, destinationIndex) {\r\n var items = this._collectionWidget.option(\"items\");\r\n var movingIndices = splitIndex(movingIndex);\r\n var destinationIndices = splitIndex(destinationIndex);\r\n var movingItemGroup = items[movingIndices.group].items;\r\n var destinationItemGroup = items[destinationIndices.group].items;\r\n var movedItemData = movingItemGroup[movingIndices.item];\r\n movingItemGroup.splice(movingIndices.item, 1);\r\n destinationItemGroup.splice(destinationIndices.item, 0, movedItemData)\r\n },\r\n _isItemIndex: function(index) {\r\n return index && isNumeric(index.group) && isNumeric(index.item)\r\n },\r\n _getNormalizedItemIndex: function(itemElement) {\r\n var $item = $(itemElement);\r\n var $group = $item.closest(\".\" + LIST_GROUP_CLASS);\r\n if (!$group.length) {\r\n return -1\r\n }\r\n return combineIndex({\r\n group: this._groupElements().index($group),\r\n item: this._groupItemElements($group).index($item)\r\n })\r\n },\r\n _normalizeItemIndex: function(index) {\r\n return combineIndex(index)\r\n },\r\n _denormalizeItemIndex: function(index) {\r\n return splitIndex(index)\r\n },\r\n _getItemByNormalizedIndex: function(index) {\r\n var indices = splitIndex(index);\r\n var $group = this._groupElements().eq(indices.group);\r\n return this._groupItemElements($group).eq(indices.item)\r\n },\r\n _itemsFromSameParent: function(firstIndex, secondIndex) {\r\n return splitIndex(firstIndex).group === splitIndex(secondIndex).group\r\n }\r\n});\r\nexport default GroupedEditStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator_registry.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport var registry = {};\r\nexport function register(option, type, decoratorClass) {\r\n var decoratorsRegistry = registry;\r\n var decoratorConfig = {};\r\n decoratorConfig[option] = decoratorsRegistry[option] ? decoratorsRegistry[option] : {};\r\n decoratorConfig[option][type] = decoratorClass;\r\n extend(decoratorsRegistry, decoratorConfig)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.provider.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n registry\r\n} from \"./ui.list.edit.decorator_registry\";\r\nvar editOptionsRegistry = [];\r\nvar registerOption = function(enabledFunc, decoratorTypeFunc, decoratorSubTypeFunc) {\r\n editOptionsRegistry.push({\r\n enabled: enabledFunc,\r\n decoratorType: decoratorTypeFunc,\r\n decoratorSubType: decoratorSubTypeFunc\r\n })\r\n};\r\nregisterOption((function() {\r\n return this.option(\"menuItems\").length\r\n}), (function() {\r\n return \"menu\"\r\n}), (function() {\r\n return this.option(\"menuMode\")\r\n}));\r\nregisterOption((function() {\r\n return !this.option(\"menuItems\").length && this.option(\"allowItemDeleting\")\r\n}), (function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n return \"toggle\" === mode || \"slideButton\" === mode || \"swipe\" === mode || \"static\" === mode ? \"delete\" : \"menu\"\r\n}), (function() {\r\n var mode = this.option(\"itemDeleteMode\");\r\n if (\"slideItem\" === mode) {\r\n mode = \"slide\"\r\n }\r\n return mode\r\n}));\r\nregisterOption((function() {\r\n return \"none\" !== this.option(\"selectionMode\") && this.option(\"showSelectionControls\")\r\n}), (function() {\r\n return \"selection\"\r\n}), (function() {\r\n return \"default\"\r\n}));\r\nregisterOption((function() {\r\n return this.option(\"itemDragging.allowReordering\") || this.option(\"itemDragging.allowDropInsideItem\") || this.option(\"itemDragging.group\")\r\n}), (function() {\r\n return \"reorder\"\r\n}), (function() {\r\n return \"default\"\r\n}));\r\nvar LIST_ITEM_BEFORE_BAG_CLASS = \"dx-list-item-before-bag\";\r\nvar LIST_ITEM_AFTER_BAG_CLASS = \"dx-list-item-after-bag\";\r\nvar DECORATOR_BEFORE_BAG_CREATE_METHOD = \"beforeBag\";\r\nvar DECORATOR_AFTER_BAG_CREATE_METHOD = \"afterBag\";\r\nvar DECORATOR_MODIFY_ELEMENT_METHOD = \"modifyElement\";\r\nvar DECORATOR_AFTER_RENDER_METHOD = \"afterRender\";\r\nvar DECORATOR_GET_EXCLUDED_SELECTORS_METHOD = \"getExcludedSelectors\";\r\nvar EditProvider = Class.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._fetchRequiredDecorators()\r\n },\r\n dispose: function() {\r\n if (this._decorators && this._decorators.length) {\r\n each(this._decorators, (function(_, decorator) {\r\n decorator.dispose()\r\n }))\r\n }\r\n },\r\n _fetchRequiredDecorators: function() {\r\n this._decorators = [];\r\n each(editOptionsRegistry, function(_, option) {\r\n var optionEnabled = option.enabled.call(this._list);\r\n if (optionEnabled) {\r\n var decoratorType = option.decoratorType.call(this._list);\r\n var decoratorSubType = option.decoratorSubType.call(this._list);\r\n var decorator = this._createDecorator(decoratorType, decoratorSubType);\r\n this._decorators.push(decorator)\r\n }\r\n }.bind(this))\r\n },\r\n _createDecorator: function(type, subType) {\r\n var decoratorClass = this._findDecorator(type, subType);\r\n return new decoratorClass(this._list)\r\n },\r\n _findDecorator: function(type, subType) {\r\n var _registry$type;\r\n var foundDecorator = null === (_registry$type = registry[type]) || void 0 === _registry$type ? void 0 : _registry$type[subType];\r\n if (!foundDecorator) {\r\n throw errors.Error(\"E1012\", type, subType)\r\n }\r\n return foundDecorator\r\n },\r\n modifyItemElement: function(args) {\r\n var $itemElement = $(args.itemElement);\r\n var config = {\r\n $itemElement: $itemElement\r\n };\r\n this._prependBeforeBags($itemElement, config);\r\n this._appendAfterBags($itemElement, config);\r\n this._applyDecorators(DECORATOR_MODIFY_ELEMENT_METHOD, config)\r\n },\r\n afterItemsRendered: function() {\r\n this._applyDecorators(DECORATOR_AFTER_RENDER_METHOD)\r\n },\r\n _prependBeforeBags: function($itemElement, config) {\r\n var $beforeBags = this._collectDecoratorsMarkup(DECORATOR_BEFORE_BAG_CREATE_METHOD, config, LIST_ITEM_BEFORE_BAG_CLASS);\r\n $itemElement.prepend($beforeBags)\r\n },\r\n _appendAfterBags: function($itemElement, config) {\r\n var $afterBags = this._collectDecoratorsMarkup(DECORATOR_AFTER_BAG_CREATE_METHOD, config, LIST_ITEM_AFTER_BAG_CLASS);\r\n $itemElement.append($afterBags)\r\n },\r\n _collectDecoratorsMarkup: function(method, config, containerClass) {\r\n var $collector = $(\"<div>\");\r\n each(this._decorators, (function() {\r\n var $container = $(\"<div>\").addClass(containerClass);\r\n this[method](extend({\r\n $container: $container\r\n }, config));\r\n if ($container.children().length) {\r\n $collector.append($container)\r\n }\r\n }));\r\n return $collector.children()\r\n },\r\n _applyDecorators: function(method, config) {\r\n each(this._decorators, (function() {\r\n this[method](config)\r\n }))\r\n },\r\n _handlerExists: function(name) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n if (decorators[i][name] !== noop) {\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _eventHandler: function(name, $itemElement, e) {\r\n if (!this._decorators) {\r\n return false\r\n }\r\n var response = false;\r\n var decorators = this._decorators;\r\n var length = decorators.length;\r\n for (var i = 0; i < length; i++) {\r\n response = decorators[i][name]($itemElement, e);\r\n if (response) {\r\n break\r\n }\r\n }\r\n return response\r\n },\r\n handleClick: function($itemElement, e) {\r\n return this._eventHandler(\"handleClick\", $itemElement, e)\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n return this._eventHandler(\"handleKeyboardEvents\", currentFocusedIndex, moveFocusUp)\r\n },\r\n handleEnterPressing: function(e) {\r\n return this._eventHandler(\"handleEnterPressing\", e)\r\n },\r\n contextMenuHandlerExists: function() {\r\n return this._handlerExists(\"handleContextMenu\")\r\n },\r\n handleContextMenu: function($itemElement, e) {\r\n return this._eventHandler(\"handleContextMenu\", $itemElement, e)\r\n },\r\n getExcludedItemSelectors: function() {\r\n var excludedSelectors = [];\r\n this._applyDecorators(DECORATOR_GET_EXCLUDED_SELECTORS_METHOD, excludedSelectors);\r\n return excludedSelectors.join(\",\")\r\n }\r\n});\r\nexport default EditProvider;\r\n","/**\r\n * DevExtreme (esm/ui/list/item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nvar LIST_ITEM_BADGE_CONTAINER_CLASS = \"dx-list-item-badge-container\";\r\nvar LIST_ITEM_BADGE_CLASS = \"dx-list-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar LIST_ITEM_CHEVRON_CONTAINER_CLASS = \"dx-list-item-chevron-container\";\r\nvar LIST_ITEM_CHEVRON_CLASS = \"dx-list-item-chevron\";\r\nvar ListItem = CollectionWidgetItem.inherit({\r\n _renderWatchers: function() {\r\n this.callBase();\r\n this._startWatcher(\"badge\", this._renderBadge.bind(this));\r\n this._startWatcher(\"showChevron\", this._renderShowChevron.bind(this))\r\n },\r\n _renderBadge: function(badge) {\r\n this._$element.children(\".\" + LIST_ITEM_BADGE_CONTAINER_CLASS).remove();\r\n if (!badge) {\r\n return\r\n }\r\n var $badge = $(\"<div>\").addClass(LIST_ITEM_BADGE_CONTAINER_CLASS).append($(\"<div>\").addClass(LIST_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge));\r\n var $chevron = this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).first();\r\n $chevron.length > 0 ? $badge.insertBefore($chevron) : $badge.appendTo(this._$element)\r\n },\r\n _renderShowChevron: function(showChevron) {\r\n this._$element.children(\".\" + LIST_ITEM_CHEVRON_CONTAINER_CLASS).remove();\r\n if (!showChevron) {\r\n return\r\n }\r\n var $chevronContainer = $(\"<div>\").addClass(LIST_ITEM_CHEVRON_CONTAINER_CLASS);\r\n var $chevron = $(\"<div>\").addClass(LIST_ITEM_CHEVRON_CLASS);\r\n $chevronContainer.append($chevron).appendTo(this._$element)\r\n }\r\n});\r\nexport default ListItem;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.native.pull_down.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar PULLDOWN_RELEASE_TIME = 400;\r\nvar PullDownNativeScrollViewStrategy = NativeStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$refreshingText = scrollView._$refreshingText;\r\n this._$scrollViewContent = $(scrollView.content());\r\n this._$container = $(scrollView.container());\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $image = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"<div>\")).$element();\r\n var $text = this._$pullDownText = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = $(\"<div>\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = $(\"<div>\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = $(\"<div>\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n each(pullDownTextItems, (function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n }))\r\n },\r\n update: function() {\r\n this.callBase();\r\n this._setTopPocketOffset()\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.get(0).clientHeight;\r\n var contentEl = this._$scrollViewContent.get(0);\r\n var containerEl = this._$container.get(0);\r\n this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n _setTopPocketOffset: function() {\r\n this._$topPocket.css({\r\n top: -this._topPocketSize\r\n })\r\n },\r\n handleEnd: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this.callBase();\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_READY) {\r\n this._setPullDownOffset(this._topPocketSize);\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n this._pullDownRefreshTimeout = setTimeout(function() {\r\n this._pullDownRefreshing()\r\n }.bind(this), 400)\r\n }\r\n },\r\n _setPullDownOffset: function(offset) {\r\n move(this._$topPocket, {\r\n top: offset\r\n });\r\n move(this._$scrollViewContent, {\r\n top: offset\r\n })\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = (this._location || 0) - currentLocation;\r\n this._location = currentLocation;\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= this._topPocketSize\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1\r\n },\r\n _reachBottom: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n pullDownEnable: function(enabled) {\r\n if (enabled) {\r\n this._updateDimensions();\r\n this._setTopPocketOffset()\r\n }\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n if (this._state === STATE_LOADING) {\r\n this._state = STATE_RELEASED\r\n }\r\n this._releaseTimeout = setTimeout(function() {\r\n this._setPullDownOffset(0);\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), PULLDOWN_RELEASE_TIME);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nexport default PullDownNativeScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.native.swipe_down.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport {\r\n eventData\r\n} from \"../../events/utils/index\";\r\nimport NativeStrategy from \"./ui.scrollable.native\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nvar SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-refreshing\";\r\nvar PULLDOWN_ICON_CLASS = \"dx-icon-pulldown\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_TOUCHED = 4;\r\nvar STATE_PULLED = 5;\r\nvar SwipeDownNativeScrollViewStrategy = NativeStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$scrollViewContent = $(scrollView.content());\r\n this._$container = $(scrollView.container());\r\n this._initCallbacks();\r\n this._location = 0\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this.callBase();\r\n this._renderPullDown();\r\n this._releaseState()\r\n },\r\n _renderPullDown: function() {\r\n var $loadContainer = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"<div>\")).$element();\r\n this._$icon = $(\"<div>\").addClass(PULLDOWN_ICON_CLASS);\r\n this._$pullDown.empty().append(this._$icon).append($loadContainer.append($loadIndicator))\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._releasePullDown();\r\n this._updateDimensions()\r\n },\r\n _releasePullDown: function() {\r\n this._$pullDown.css({\r\n opacity: 0\r\n })\r\n },\r\n _updateDimensions: function() {\r\n this.callBase();\r\n this._topPocketSize = this._$topPocket.get(0).clientHeight;\r\n var contentEl = this._$scrollViewContent.get(0);\r\n var containerEl = this._$container.get(0);\r\n this._bottomBoundary = Math.max(contentEl.clientHeight - containerEl.clientHeight, 0)\r\n },\r\n _allowedDirections: function() {\r\n var allowedDirections = this.callBase();\r\n allowedDirections.vertical = allowedDirections.vertical || this._pullDownEnabled;\r\n return allowedDirections\r\n },\r\n handleInit: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_RELEASED && 0 === this._location) {\r\n this._startClientY = eventData(e.originalEvent).y;\r\n this._state = STATE_TOUCHED\r\n }\r\n },\r\n handleMove: function(e) {\r\n this.callBase(e);\r\n this._deltaY = eventData(e.originalEvent).y - this._startClientY;\r\n if (this._state === STATE_TOUCHED) {\r\n if (this._pullDownEnabled && this._deltaY > 0) {\r\n this._state = STATE_PULLED\r\n } else {\r\n this._complete()\r\n }\r\n }\r\n if (this._state === STATE_PULLED) {\r\n e.preventDefault();\r\n this._movePullDown()\r\n }\r\n },\r\n _movePullDown: function() {\r\n var pullDownHeight = this._getPullDownHeight();\r\n var top = Math.min(3 * pullDownHeight, this._deltaY + this._getPullDownStartPosition());\r\n var angle = 180 * top / pullDownHeight / 3;\r\n this._$pullDown.css({\r\n opacity: 1\r\n }).toggleClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS, top < pullDownHeight);\r\n move(this._$pullDown, {\r\n top: top\r\n });\r\n this._$icon.css({\r\n transform: \"rotate(\" + angle + \"deg)\"\r\n })\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._state === STATE_PULLED && this._deltaY >= this._getPullDownHeight() - this._getPullDownStartPosition()\r\n },\r\n _getPullDownHeight: function() {\r\n return Math.round(.05 * getOuterHeight(this._$element))\r\n },\r\n _getPullDownStartPosition: function() {\r\n return -Math.round(1.5 * getOuterHeight(this._$pullDown))\r\n },\r\n handleEnd: function() {\r\n if (this._isPullDown()) {\r\n this._pullDownRefreshing()\r\n }\r\n this._complete()\r\n },\r\n handleStop: function() {\r\n this._complete()\r\n },\r\n _complete: function() {\r\n if (this._state === STATE_TOUCHED || this._state === STATE_PULLED) {\r\n this._releaseState()\r\n }\r\n },\r\n handleScroll: function(e) {\r\n this.callBase(e);\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n var currentLocation = this.location().top;\r\n var scrollDelta = this._location - currentLocation;\r\n this._location = currentLocation;\r\n if (scrollDelta > 0 && this._isReachBottom()) {\r\n this._reachBottom()\r\n } else {\r\n this._stateReleased()\r\n }\r\n },\r\n _isReachBottom: function() {\r\n return this._reachBottomEnabled && Math.round(this._bottomBoundary + Math.floor(this._location)) <= 1\r\n },\r\n _reachBottom: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n this._releaseState()\r\n },\r\n _pullDownRefreshing: function() {\r\n this._state = STATE_REFRESHING;\r\n this._pullDownRefreshHandler()\r\n },\r\n _pullDownRefreshHandler: function() {\r\n this._refreshPullDown();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _refreshPullDown: function() {\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS);\r\n move(this._$pullDown, {\r\n top: this._getPullDownHeight()\r\n })\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._$topPocket.toggle(enabled);\r\n this._pullDownEnabled = enabled\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._reachBottomEnabled = enabled\r\n },\r\n pendingRelease: function() {\r\n this._state = STATE_READY\r\n },\r\n release: function() {\r\n var deferred = new Deferred;\r\n this._updateDimensions();\r\n clearTimeout(this._releaseTimeout);\r\n this._releaseTimeout = setTimeout(function() {\r\n this._stateReleased();\r\n this.releaseCallbacks.fire();\r\n this._updateAction();\r\n deferred.resolve()\r\n }.bind(this), 800);\r\n return deferred.promise()\r\n },\r\n dispose: function() {\r\n clearTimeout(this._pullDownRefreshTimeout);\r\n clearTimeout(this._releaseTimeout);\r\n this.callBase()\r\n }\r\n});\r\nexport default SwipeDownNativeScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.simulated.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n executeAsync\r\n} from \"../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nvar math = Math;\r\nimport {\r\n Scroller,\r\n SimulatedStrategy\r\n} from \"./ui.scrollable.simulated\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nvar SCROLLVIEW_PULLDOWN_REFRESHING_CLASS = \"dx-scrollview-pull-down-loading\";\r\nvar SCROLLVIEW_PULLDOWN_READY_CLASS = \"dx-scrollview-pull-down-ready\";\r\nvar SCROLLVIEW_PULLDOWN_IMAGE_CLASS = \"dx-scrollview-pull-down-image\";\r\nvar SCROLLVIEW_PULLDOWN_INDICATOR_CLASS = \"dx-scrollview-pull-down-indicator\";\r\nvar SCROLLVIEW_PULLDOWN_TEXT_CLASS = \"dx-scrollview-pull-down-text\";\r\nvar SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS = \"dx-scrollview-pull-down-text-visible\";\r\nvar STATE_RELEASED = 0;\r\nvar STATE_READY = 1;\r\nvar STATE_REFRESHING = 2;\r\nvar STATE_LOADING = 3;\r\nvar ScrollViewScroller = Scroller.inherit({\r\n ctor: function() {\r\n this._topPocketSize = 0;\r\n this._bottomPocketSize = 0;\r\n this.callBase.apply(this, arguments);\r\n this._initCallbacks();\r\n this._releaseState()\r\n },\r\n _releaseState: function() {\r\n this._state = STATE_RELEASED;\r\n this._refreshPullDownText()\r\n },\r\n _refreshPullDownText: function() {\r\n var that = this;\r\n var pullDownTextItems = [{\r\n element: this._$pullingDownText,\r\n visibleState: STATE_RELEASED\r\n }, {\r\n element: this._$pulledDownText,\r\n visibleState: STATE_READY\r\n }, {\r\n element: this._$refreshingText,\r\n visibleState: STATE_REFRESHING\r\n }];\r\n each(pullDownTextItems, (function(_, item) {\r\n var action = that._state === item.visibleState ? \"addClass\" : \"removeClass\";\r\n item.element[action](SCROLLVIEW_PULLDOWN_VISIBLE_TEXT_CLASS)\r\n }))\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n _updateBounds: function() {\r\n var considerPockets = \"horizontal\" !== this._direction;\r\n if (considerPockets) {\r\n this._topPocketSize = this._$topPocket.get(0).clientHeight;\r\n this._bottomPocketSize = this._$bottomPocket.get(0).clientHeight;\r\n var containerEl = this._$container.get(0);\r\n var contentEl = this._$content.get(0);\r\n this._bottomBoundary = Math.max(contentEl.clientHeight - this._bottomPocketSize - containerEl.clientHeight, 0)\r\n }\r\n this.callBase()\r\n },\r\n _updateScrollbar: function() {\r\n this._scrollbar.option({\r\n containerSize: this._containerSize(),\r\n contentSize: this._contentSize() - this._topPocketSize - this._bottomPocketSize,\r\n scaleRatio: this._getScaleRatio()\r\n })\r\n },\r\n _moveContent: function() {\r\n this.callBase();\r\n if (this._isPullDown()) {\r\n this._pullDownReady()\r\n } else if (this._isReachBottom()) {\r\n this._reachBottomReady()\r\n } else if (this._state !== STATE_RELEASED) {\r\n this._stateReleased()\r\n }\r\n },\r\n _moveScrollbar: function() {\r\n this._scrollbar.moveTo(this._topPocketSize + this._location)\r\n },\r\n _isPullDown: function() {\r\n return this._pullDownEnabled && this._location >= 0\r\n },\r\n _isReachBottom: function() {\r\n var containerEl = this._$container.get(0);\r\n return this._reachBottomEnabled && Math.round(this._bottomBoundary - Math.ceil(containerEl.scrollTop)) <= 1\r\n },\r\n _scrollComplete: function() {\r\n if (this._inBounds() && this._state === STATE_READY) {\r\n this._pullDownRefreshing()\r\n } else if (this._inBounds() && this._state === STATE_LOADING) {\r\n this._reachBottomLoading()\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _reachBottomReady: function() {\r\n if (this._state === STATE_LOADING) {\r\n return\r\n }\r\n this._state = STATE_LOADING;\r\n this._minOffset = this._getMinOffset()\r\n },\r\n _getMaxOffset: function() {\r\n return -this._topPocketSize\r\n },\r\n _getMinOffset: function() {\r\n return math.min(this.callBase(), -this._topPocketSize)\r\n },\r\n _reachBottomLoading: function() {\r\n this.reachBottomCallbacks.fire()\r\n },\r\n _pullDownReady: function() {\r\n if (this._state === STATE_READY) {\r\n return\r\n }\r\n this._state = STATE_READY;\r\n this._maxOffset = 0;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText()\r\n },\r\n _stateReleased: function() {\r\n if (this._state === STATE_RELEASED) {\r\n return\r\n }\r\n this._releaseState();\r\n this._updateBounds();\r\n this._$pullDown.removeClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this.releaseCallbacks.fire()\r\n },\r\n _pullDownRefreshing: function() {\r\n if (this._state === STATE_REFRESHING) {\r\n return\r\n }\r\n this._state = STATE_REFRESHING;\r\n this._$pullDown.addClass(SCROLLVIEW_PULLDOWN_REFRESHING_CLASS).removeClass(SCROLLVIEW_PULLDOWN_READY_CLASS);\r\n this._refreshPullDownText();\r\n this.pullDownCallbacks.fire()\r\n },\r\n _releaseHandler: function() {\r\n if (this._state === STATE_RELEASED) {\r\n this._moveToBounds()\r\n }\r\n this._update();\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this._releaseTask = executeAsync(this._release.bind(this));\r\n return this._releaseTask.promise\r\n },\r\n _release: function() {\r\n this._stateReleased();\r\n this._scrollComplete()\r\n },\r\n _reachBottomEnablingHandler: function(enabled) {\r\n if (this._reachBottomEnabled === enabled) {\r\n return\r\n }\r\n this._reachBottomEnabled = enabled;\r\n this._updateBounds()\r\n },\r\n _pullDownEnablingHandler: function(enabled) {\r\n if (this._pullDownEnabled === enabled) {\r\n return\r\n }\r\n this._pullDownEnabled = enabled;\r\n this._considerTopPocketChange();\r\n this._updateHandler()\r\n },\r\n _considerTopPocketChange: function() {\r\n this._location -= getHeight(this._$topPocket) || -this._topPocketSize;\r\n this._maxOffset = 0;\r\n this._move()\r\n },\r\n _pendingReleaseHandler: function() {\r\n this._state = STATE_READY\r\n },\r\n dispose: function() {\r\n if (this._releaseTask) {\r\n this._releaseTask.abort()\r\n }\r\n this.callBase()\r\n }\r\n});\r\nvar SimulatedScrollViewStrategy = SimulatedStrategy.inherit({\r\n _init: function(scrollView) {\r\n this.callBase(scrollView);\r\n this._$pullDown = scrollView._$pullDown;\r\n this._$topPocket = scrollView._$topPocket;\r\n this._$bottomPocket = scrollView._$bottomPocket;\r\n this._initCallbacks()\r\n },\r\n _initCallbacks: function() {\r\n this.pullDownCallbacks = Callbacks();\r\n this.releaseCallbacks = Callbacks();\r\n this.reachBottomCallbacks = Callbacks()\r\n },\r\n render: function() {\r\n this._renderPullDown();\r\n this.callBase()\r\n },\r\n _renderPullDown: function() {\r\n var $image = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_IMAGE_CLASS);\r\n var $loadContainer = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"<div>\")).$element();\r\n var $text = this._$pullDownText = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_TEXT_CLASS);\r\n this._$pullingDownText = $(\"<div>\").text(this.option(\"pullingDownText\")).appendTo($text);\r\n this._$pulledDownText = $(\"<div>\").text(this.option(\"pulledDownText\")).appendTo($text);\r\n this._$refreshingText = $(\"<div>\").text(this.option(\"refreshingText\")).appendTo($text);\r\n this._$pullDown.empty().append($image).append($loadContainer.append($loadIndicator)).append($text)\r\n },\r\n pullDownEnable: function(enabled) {\r\n this._eventHandler(\"pullDownEnabling\", enabled)\r\n },\r\n reachBottomEnable: function(enabled) {\r\n this._eventHandler(\"reachBottomEnabling\", enabled)\r\n },\r\n _createScroller: function(direction) {\r\n var that = this;\r\n var scroller = that._scrollers[direction] = new ScrollViewScroller(that._scrollerOptions(direction));\r\n scroller.pullDownCallbacks.add((function() {\r\n that.pullDownCallbacks.fire()\r\n }));\r\n scroller.releaseCallbacks.add((function() {\r\n that.releaseCallbacks.fire()\r\n }));\r\n scroller.reachBottomCallbacks.add((function() {\r\n that.reachBottomCallbacks.fire()\r\n }))\r\n },\r\n _scrollerOptions: function(direction) {\r\n return extend(this.callBase(direction), {\r\n $topPocket: this._$topPocket,\r\n $bottomPocket: this._$bottomPocket,\r\n $pullDown: this._$pullDown,\r\n $pullDownText: this._$pullDownText,\r\n $pullingDownText: this._$pullingDownText,\r\n $pulledDownText: this._$pulledDownText,\r\n $refreshingText: this._$refreshingText\r\n })\r\n },\r\n pendingRelease: function() {\r\n this._eventHandler(\"pendingRelease\")\r\n },\r\n release: function() {\r\n return this._eventHandler(\"release\").done(this._updateAction)\r\n },\r\n location: function() {\r\n var location = this.callBase();\r\n location.top += getHeight(this._$topPocket);\r\n return location\r\n },\r\n dispose: function() {\r\n each(this._scrollers, (function() {\r\n this.dispose()\r\n }));\r\n this.callBase()\r\n }\r\n});\r\nexport default SimulatedScrollViewStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scrollable.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Scrollable from \"./ui.scrollable.old\";\r\nexport default Scrollable;\r\n","/**\r\n * DevExtreme (esm/ui/load_panel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../core/utils/common\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport LoadIndicator from \"./load_indicator\";\r\nimport Overlay from \"./overlay/ui.overlay\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n isMaterial\r\n} from \"./themes\";\r\nvar LOADPANEL_CLASS = \"dx-loadpanel\";\r\nvar LOADPANEL_WRAPPER_CLASS = \"dx-loadpanel-wrapper\";\r\nvar LOADPANEL_INDICATOR_CLASS = \"dx-loadpanel-indicator\";\r\nvar LOADPANEL_MESSAGE_CLASS = \"dx-loadpanel-message\";\r\nvar LOADPANEL_CONTENT_CLASS = \"dx-loadpanel-content\";\r\nvar LOADPANEL_CONTENT_WRAPPER_CLASS = \"dx-loadpanel-content-wrapper\";\r\nvar LOADPANEL_PANE_HIDDEN_CLASS = \"dx-loadpanel-pane-hidden\";\r\nvar LoadPanel = Overlay.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n escape: noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n message: messageLocalization.format(\"Loading\"),\r\n width: 222,\r\n height: 90,\r\n animation: null,\r\n showIndicator: true,\r\n indicatorSrc: \"\",\r\n showPane: true,\r\n delay: 0,\r\n templatesRenderAsynchronously: false,\r\n hideTopOverlayHandler: null,\r\n focusStateEnabled: false,\r\n propagateOutsideClick: true,\r\n preventScrollEvents: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n shadingColor: \"transparent\"\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n message: \"\",\r\n width: 60,\r\n height: 60,\r\n maxHeight: 60,\r\n maxWidth: 60\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this.$element().addClass(LOADPANEL_CLASS);\r\n this.$wrapper().addClass(LOADPANEL_WRAPPER_CLASS)\r\n },\r\n _renderContentImpl: function() {\r\n this.callBase();\r\n this.$content().addClass(LOADPANEL_CONTENT_CLASS);\r\n this._$loadPanelContentWrapper = $(\"<div>\").addClass(LOADPANEL_CONTENT_WRAPPER_CLASS);\r\n this._$loadPanelContentWrapper.appendTo(this.$content());\r\n this._togglePaneVisible();\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage()\r\n },\r\n _show: function() {\r\n var delay = this.option(\"delay\");\r\n if (!delay) {\r\n return this.callBase()\r\n }\r\n var deferred = new Deferred;\r\n var callBase = this.callBase.bind(this);\r\n this._clearShowTimeout();\r\n this._showTimeout = setTimeout((function() {\r\n callBase().done((function() {\r\n deferred.resolve()\r\n }))\r\n }), delay);\r\n return deferred.promise()\r\n },\r\n _hide: function() {\r\n this._clearShowTimeout();\r\n return this.callBase()\r\n },\r\n _clearShowTimeout: function() {\r\n clearTimeout(this._showTimeout)\r\n },\r\n _renderMessage: function() {\r\n if (!this._$loadPanelContentWrapper) {\r\n return\r\n }\r\n var message = this.option(\"message\");\r\n if (!message) {\r\n return\r\n }\r\n var $message = $(\"<div>\").addClass(LOADPANEL_MESSAGE_CLASS).text(message);\r\n this._$loadPanelContentWrapper.append($message)\r\n },\r\n _renderLoadIndicator: function() {\r\n if (!this._$loadPanelContentWrapper || !this.option(\"showIndicator\")) {\r\n return\r\n }\r\n if (!this._$indicator) {\r\n this._$indicator = $(\"<div>\").addClass(LOADPANEL_INDICATOR_CLASS).appendTo(this._$loadPanelContentWrapper)\r\n }\r\n this._createComponent(this._$indicator, LoadIndicator, {\r\n indicatorSrc: this.option(\"indicatorSrc\")\r\n })\r\n },\r\n _cleanPreviousContent: function() {\r\n this.$content().find(\".\" + LOADPANEL_MESSAGE_CLASS).remove();\r\n this.$content().find(\".\" + LOADPANEL_INDICATOR_CLASS).remove();\r\n delete this._$indicator\r\n },\r\n _togglePaneVisible: function() {\r\n this.$content().toggleClass(LOADPANEL_PANE_HIDDEN_CLASS, !this.option(\"showPane\"))\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"delay\":\r\n break;\r\n case \"message\":\r\n case \"showIndicator\":\r\n this._cleanPreviousContent();\r\n this._renderLoadIndicator();\r\n this._renderMessage();\r\n break;\r\n case \"showPane\":\r\n this._togglePaneVisible();\r\n break;\r\n case \"indicatorSrc\":\r\n this._renderLoadIndicator();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dispose: function() {\r\n this._clearShowTimeout();\r\n this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxLoadPanel\", LoadPanel);\r\nexport default LoadPanel;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view/ui.scroll_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport PullDownStrategy from \"./ui.scroll_view.native.pull_down\";\r\nimport SwipeDownStrategy from \"./ui.scroll_view.native.swipe_down\";\r\nimport SimulatedStrategy from \"./ui.scroll_view.simulated\";\r\nimport Scrollable from \"./ui.scrollable\";\r\nimport LoadIndicator from \"../load_indicator\";\r\nimport {\r\n isMaterial\r\n} from \"./../themes\";\r\nimport LoadPanel from \"../load_panel\";\r\nvar SCROLLVIEW_CLASS = \"dx-scrollview\";\r\nvar SCROLLVIEW_CONTENT_CLASS = SCROLLVIEW_CLASS + \"-content\";\r\nvar SCROLLVIEW_TOP_POCKET_CLASS = SCROLLVIEW_CLASS + \"-top-pocket\";\r\nvar SCROLLVIEW_BOTTOM_POCKET_CLASS = SCROLLVIEW_CLASS + \"-bottom-pocket\";\r\nvar SCROLLVIEW_PULLDOWN_CLASS = SCROLLVIEW_CLASS + \"-pull-down\";\r\nvar SCROLLVIEW_REACHBOTTOM_CLASS = SCROLLVIEW_CLASS + \"-scrollbottom\";\r\nvar SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-indicator\";\r\nvar SCROLLVIEW_REACHBOTTOM_TEXT_CLASS = SCROLLVIEW_REACHBOTTOM_CLASS + \"-text\";\r\nvar SCROLLVIEW_LOADPANEL = SCROLLVIEW_CLASS + \"-loadpanel\";\r\nvar refreshStrategies = {\r\n pullDown: PullDownStrategy,\r\n swipeDown: SwipeDownStrategy,\r\n simulated: SimulatedStrategy\r\n};\r\nvar isServerSide = !hasWindow();\r\nvar scrollViewServerConfig = {\r\n finishLoading: noop,\r\n release: noop,\r\n refresh: noop,\r\n scrollOffset: () => ({\r\n top: 0,\r\n left: 0\r\n }),\r\n _optionChanged: function(args) {\r\n if (\"onUpdated\" !== args.name) {\r\n return this.callBase.apply(this, arguments)\r\n }\r\n }\r\n};\r\nvar ScrollView = Scrollable.inherit(isServerSide ? scrollViewServerConfig : {\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n pullingDownText: messageLocalization.format(\"dxScrollView-pullingDownText\"),\r\n pulledDownText: messageLocalization.format(\"dxScrollView-pulledDownText\"),\r\n refreshingText: messageLocalization.format(\"dxScrollView-refreshingText\"),\r\n reachBottomText: messageLocalization.format(\"dxScrollView-reachBottomText\"),\r\n onPullDown: null,\r\n onReachBottom: null,\r\n refreshStrategy: \"pullDown\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n var realDevice = devices.real();\r\n return \"android\" === realDevice.platform\r\n },\r\n options: {\r\n refreshStrategy: \"swipeDown\"\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n reachBottomText: \"\"\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._loadingIndicatorEnabled = true\r\n },\r\n _initScrollableMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(SCROLLVIEW_CLASS);\r\n this._initContent();\r\n this._initTopPocket();\r\n this._initBottomPocket();\r\n this._initLoadPanel()\r\n },\r\n _initContent: function() {\r\n var $content = $(\"<div>\").addClass(SCROLLVIEW_CONTENT_CLASS);\r\n this._$content.wrapInner($content)\r\n },\r\n _initTopPocket: function() {\r\n var $topPocket = this._$topPocket = $(\"<div>\").addClass(SCROLLVIEW_TOP_POCKET_CLASS);\r\n var $pullDown = this._$pullDown = $(\"<div>\").addClass(SCROLLVIEW_PULLDOWN_CLASS);\r\n $topPocket.append($pullDown);\r\n this._$content.prepend($topPocket)\r\n },\r\n _initBottomPocket: function() {\r\n var $bottomPocket = this._$bottomPocket = $(\"<div>\").addClass(SCROLLVIEW_BOTTOM_POCKET_CLASS);\r\n var $reachBottom = this._$reachBottom = $(\"<div>\").addClass(SCROLLVIEW_REACHBOTTOM_CLASS);\r\n var $loadContainer = $(\"<div>\").addClass(SCROLLVIEW_REACHBOTTOM_INDICATOR_CLASS);\r\n var $loadIndicator = new LoadIndicator($(\"<div>\")).$element();\r\n var $text = this._$reachBottomText = $(\"<div>\").addClass(SCROLLVIEW_REACHBOTTOM_TEXT_CLASS);\r\n this._updateReachBottomText();\r\n $reachBottom.append($loadContainer.append($loadIndicator)).append($text);\r\n $bottomPocket.append($reachBottom);\r\n this._$content.append($bottomPocket)\r\n },\r\n _initLoadPanel: function() {\r\n var $loadPanelElement = $(\"<div>\").addClass(SCROLLVIEW_LOADPANEL).appendTo(this.$element());\r\n var loadPanelOptions = {\r\n shading: false,\r\n delay: 400,\r\n message: this.option(\"refreshingText\"),\r\n position: {\r\n of: this.$element()\r\n }\r\n };\r\n this._loadPanel = this._createComponent($loadPanelElement, LoadPanel, loadPanelOptions)\r\n },\r\n _updateReachBottomText: function() {\r\n this._$reachBottomText.text(this.option(\"reachBottomText\"))\r\n },\r\n _createStrategy: function() {\r\n var strategyName = this.option(\"useNative\") ? this.option(\"refreshStrategy\") : \"simulated\";\r\n var strategyClass = refreshStrategies[strategyName];\r\n this._strategy = new strategyClass(this);\r\n this._strategy.pullDownCallbacks.add(this._pullDownHandler.bind(this));\r\n this._strategy.releaseCallbacks.add(this._releaseHandler.bind(this));\r\n this._strategy.reachBottomCallbacks.add(this._reachBottomHandler.bind(this))\r\n },\r\n _createActions: function() {\r\n this.callBase();\r\n this._pullDownAction = this._createActionByOption(\"onPullDown\");\r\n this._reachBottomAction = this._createActionByOption(\"onReachBottom\");\r\n this._tryRefreshPocketState()\r\n },\r\n _tryRefreshPocketState: function() {\r\n this._pullDownEnable(this.hasActionSubscription(\"onPullDown\"));\r\n this._reachBottomEnable(this.hasActionSubscription(\"onReachBottom\"))\r\n },\r\n on: function(eventName) {\r\n var result = this.callBase.apply(this, arguments);\r\n if (\"pullDown\" === eventName || \"reachBottom\" === eventName) {\r\n this._tryRefreshPocketState()\r\n }\r\n return result\r\n },\r\n _pullDownEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._pullDownEnabled\r\n }\r\n if (this._$pullDown && this._strategy) {\r\n this._$pullDown.toggle(enabled);\r\n this._strategy.pullDownEnable(enabled);\r\n this._pullDownEnabled = enabled\r\n }\r\n },\r\n _reachBottomEnable: function(enabled) {\r\n if (0 === arguments.length) {\r\n return this._reachBottomEnabled\r\n }\r\n if (this._$reachBottom && this._strategy) {\r\n this._$reachBottom.toggle(enabled);\r\n this._strategy.reachBottomEnable(enabled);\r\n this._reachBottomEnabled = enabled\r\n }\r\n },\r\n _pullDownHandler: function() {\r\n this._loadingIndicator(false);\r\n this._pullDownLoading()\r\n },\r\n _loadingIndicator: function(value) {\r\n if (arguments.length < 1) {\r\n return this._loadingIndicatorEnabled\r\n }\r\n this._loadingIndicatorEnabled = value\r\n },\r\n _pullDownLoading: function() {\r\n this.startLoading();\r\n this._pullDownAction()\r\n },\r\n _reachBottomHandler: function() {\r\n this._loadingIndicator(false);\r\n this._reachBottomLoading()\r\n },\r\n _reachBottomLoading: function() {\r\n this.startLoading();\r\n this._reachBottomAction()\r\n },\r\n _releaseHandler: function() {\r\n this.finishLoading();\r\n this._loadingIndicator(true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"onPullDown\":\r\n case \"onReachBottom\":\r\n this._createActions();\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"refreshStrategy\":\r\n this._invalidate();\r\n break;\r\n case \"reachBottomText\":\r\n this._updateReachBottomText();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n content: function() {\r\n return getPublicElement(this._$content.children().eq(1))\r\n },\r\n release: function(preventReachBottom) {\r\n if (void 0 !== preventReachBottom) {\r\n this.toggleLoading(!preventReachBottom)\r\n }\r\n return this._strategy.release()\r\n },\r\n toggleLoading: function(showOrHide) {\r\n this._reachBottomEnable(showOrHide)\r\n },\r\n refresh: function() {\r\n if (!this.hasActionSubscription(\"onPullDown\")) {\r\n return\r\n }\r\n this._strategy.pendingRelease();\r\n this._pullDownLoading()\r\n },\r\n startLoading: function() {\r\n if (this._loadingIndicator() && this.$element().is(\":visible\")) {\r\n this._loadPanel.show()\r\n }\r\n this._lock()\r\n },\r\n finishLoading: function() {\r\n this._loadPanel.hide();\r\n this._unlock()\r\n },\r\n _dispose: function() {\r\n this._strategy.dispose();\r\n this.callBase();\r\n if (this._loadPanel) {\r\n this._loadPanel.$element().remove()\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxScrollView\", ScrollView);\r\nexport default ScrollView;\r\n","/**\r\n * DevExtreme (esm/ui/scroll_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ScrollView from \"./scroll_view/ui.scroll_view\";\r\nexport default ScrollView;\r\n","/**\r\n * DevExtreme (esm/ui/collection/ui.collection_widget.live_update.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidget from \"./ui.collection_widget.edit\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n update,\r\n insert,\r\n indexByKey\r\n} from \"../../data/array_utils\";\r\nimport {\r\n keysEqual\r\n} from \"../../data/utils\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n findChanges\r\n} from \"../../core/utils/array_compare\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nvar PRIVATE_KEY_FIELD = \"__dx_key__\";\r\nexport default CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n repaintChangesOnly: false\r\n })\r\n },\r\n ctor: function() {\r\n var _this$_dataController;\r\n this.callBase.apply(this, arguments);\r\n this._customizeStoreLoadOptions = e => {\r\n var dataController = this._dataController;\r\n if (dataController.getDataSource() && !this._dataController.isLoaded()) {\r\n this._correctionIndex = 0\r\n }\r\n if (this._correctionIndex && e.storeLoadOptions) {\r\n e.storeLoadOptions.skip += this._correctionIndex\r\n }\r\n }, null === (_this$_dataController = this._dataController) || void 0 === _this$_dataController ? void 0 : _this$_dataController.on(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions)\r\n },\r\n reload: function() {\r\n this._correctionIndex = 0\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._refreshItemsCache();\r\n this._correctionIndex = 0\r\n },\r\n _findItemElementByKey: function(key) {\r\n var result = $();\r\n var keyExpr = this.key();\r\n this.itemElements().each((_, item) => {\r\n var $item = $(item);\r\n var itemData = this._getItemData($item);\r\n if (keyExpr ? keysEqual(keyExpr, this.keyOf(itemData), key) : this._isItemEquals(itemData, key)) {\r\n result = $item;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n _dataSourceChangedHandler: function(newItems, e) {\r\n if (null !== e && void 0 !== e && e.changes) {\r\n this._modifyByChanges(e.changes)\r\n } else {\r\n this.callBase(newItems, e);\r\n this._refreshItemsCache()\r\n }\r\n },\r\n _isItemEquals: function(item1, item2) {\r\n if (item1 && item1[PRIVATE_KEY_FIELD]) {\r\n item1 = item1.data\r\n }\r\n try {\r\n return JSON.stringify(item1) === JSON.stringify(item2)\r\n } catch (e) {\r\n return item1 === item2\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n return this._isItemEquals(item1, item2)\r\n },\r\n _shouldAddNewGroup: function(changes, items) {\r\n var result = false;\r\n if (this.option(\"grouped\")) {\r\n if (!changes.length) {\r\n result = true\r\n }\r\n each(changes, (i, change) => {\r\n if (\"insert\" === change.type) {\r\n result = true;\r\n each(items, (_, item) => {\r\n if (void 0 !== change.data.key && change.data.key === item.key) {\r\n result = false;\r\n return false\r\n }\r\n })\r\n }\r\n })\r\n }\r\n return result\r\n },\r\n _partialRefresh: function() {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var result = findChanges(this._itemsCache, this._editStrategy.itemsGetter(), data => {\r\n if (data && void 0 !== data[PRIVATE_KEY_FIELD]) {\r\n return data[PRIVATE_KEY_FIELD]\r\n }\r\n return this.keyOf(data)\r\n }, this._isItemStrictEquals.bind(this));\r\n if (result && this._itemsCache.length && !this._shouldAddNewGroup(result, this._itemsCache)) {\r\n this._modifyByChanges(result, true);\r\n this._renderEmptyMessage();\r\n return true\r\n } else {\r\n this._refreshItemsCache()\r\n }\r\n }\r\n return false\r\n },\r\n _refreshItemsCache: function() {\r\n if (this.option(\"repaintChangesOnly\")) {\r\n var items = this._editStrategy.itemsGetter();\r\n try {\r\n this._itemsCache = extend(true, [], items);\r\n if (!this.key()) {\r\n this._itemsCache = this._itemsCache.map((itemCache, index) => ({\r\n [PRIVATE_KEY_FIELD]: items[index],\r\n data: itemCache\r\n }))\r\n }\r\n } catch (e) {\r\n this._itemsCache = extend([], items)\r\n }\r\n }\r\n },\r\n _dispose: function() {\r\n this._dataController.off(\"customizeStoreLoadOptions\", this._customizeStoreLoadOptions);\r\n this.callBase()\r\n },\r\n _updateByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n if (isPartialRefresh) {\r\n this._renderItem(change.index, change.data, null, this._findItemElementByKey(change.key))\r\n } else {\r\n var changedItem = items[indexByKey(keyInfo, items, change.key)];\r\n if (changedItem) {\r\n update(keyInfo, items, change.key, change.data).done(() => {\r\n this._renderItem(items.indexOf(changedItem), changedItem, null, this._findItemElementByKey(change.key))\r\n })\r\n }\r\n }\r\n },\r\n _insertByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n when(isPartialRefresh || insert(keyInfo, items, change.data, change.index)).done(() => {\r\n var _change$index;\r\n this._beforeItemElementInserted(change);\r\n var $itemContainer = this._getItemContainer(change.data);\r\n this._renderItem(null !== (_change$index = change.index) && void 0 !== _change$index ? _change$index : items.length, change.data, $itemContainer);\r\n this._afterItemElementInserted();\r\n this._correctionIndex++\r\n })\r\n },\r\n _getItemContainer: function(changeData) {\r\n return this._itemContainer()\r\n },\r\n _updateSelectionAfterRemoveByChange: function(removeIndex) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (selectedIndex > removeIndex) {\r\n this.option(\"selectedIndex\", selectedIndex - 1)\r\n } else if (selectedIndex === removeIndex && 1 === this.option(\"selectedItems\").length) {\r\n this.option(\"selectedItems\", [])\r\n } else {\r\n this._normalizeSelectedItems()\r\n }\r\n },\r\n _beforeItemElementInserted: function(change) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n if (change.index <= selectedIndex) {\r\n this.option(\"selectedIndex\", selectedIndex + 1)\r\n }\r\n },\r\n _afterItemElementInserted: noop,\r\n _removeByChange: function(keyInfo, items, change, isPartialRefresh) {\r\n var index = isPartialRefresh ? change.index : indexByKey(keyInfo, items, change.key);\r\n var removedItem = isPartialRefresh ? change.oldItem : items[index];\r\n if (removedItem) {\r\n var $removedItemElement = this._findItemElementByKey(change.key);\r\n var deletedActionArgs = this._extendActionArgs($removedItemElement);\r\n this._waitDeletingPrepare($removedItemElement).done(() => {\r\n if (isPartialRefresh) {\r\n this._updateIndicesAfterIndex(index - 1);\r\n this._afterItemElementDeleted($removedItemElement, deletedActionArgs);\r\n this._updateSelectionAfterRemoveByChange(index)\r\n } else {\r\n this._deleteItemElementByIndex(index);\r\n this._afterItemElementDeleted($removedItemElement, deletedActionArgs)\r\n }\r\n });\r\n this._correctionIndex--\r\n }\r\n },\r\n _modifyByChanges: function(changes, isPartialRefresh) {\r\n var items = this._editStrategy.itemsGetter();\r\n var keyInfo = {\r\n key: this.key.bind(this),\r\n keyOf: this.keyOf.bind(this)\r\n };\r\n var dataController = this._dataController;\r\n var paginate = dataController.paginate();\r\n var group = dataController.group();\r\n if (paginate || group) {\r\n changes = changes.filter(item => \"insert\" !== item.type || void 0 !== item.index)\r\n }\r\n changes.forEach(change => this[\"_\".concat(change.type, \"ByChange\")](keyInfo, items, change, isPartialRefresh));\r\n this._renderedItemsCount = items.length;\r\n this._refreshItemsCache();\r\n this._fireContentReadyAction()\r\n },\r\n _appendItemToContainer: function($container, $itemFrame, index) {\r\n var nextSiblingElement = $container.children(this._itemSelector()).get(index);\r\n domAdapter.insertElement($container.get(0), $itemFrame.get(0), nextSiblingElement)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"items\":\r\n var isItemsUpdated = this._partialRefresh(args.value);\r\n if (!isItemsUpdated) {\r\n this.callBase(args)\r\n }\r\n break;\r\n case \"dataSource\":\r\n if (!this.option(\"repaintChangesOnly\") || !args.value) {\r\n this.option(\"items\", [])\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"repaintChangesOnly\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\n","/**\r\n * DevExtreme (esm/ui/shared/grouped_data_converter_mixin.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isObject\r\n} from \"../../core/utils/type\";\r\nvar isCorrectStructure = data => Array.isArray(data) && data.every(item => {\r\n var hasTwoFields = 2 === Object.keys(item).length;\r\n var hasCorrectFields = \"key\" in item && \"items\" in item;\r\n return hasTwoFields && hasCorrectFields && Array.isArray(item.items)\r\n});\r\nexport default {\r\n _getSpecificDataSourceOption: function() {\r\n var dataSource = this.option(\"dataSource\");\r\n var hasSimpleItems = false;\r\n var data = {};\r\n if (this._getGroupedOption() && isCorrectStructure(dataSource)) {\r\n data = dataSource.reduce((accumulator, item) => {\r\n var items = item.items.map(innerItem => {\r\n if (!isObject(innerItem)) {\r\n innerItem = {\r\n text: innerItem\r\n };\r\n hasSimpleItems = true\r\n }\r\n if (!(\"key\" in innerItem)) {\r\n innerItem.key = item.key\r\n }\r\n return innerItem\r\n });\r\n return accumulator.concat(items)\r\n }, []);\r\n dataSource = {\r\n store: {\r\n type: \"array\",\r\n data: data\r\n },\r\n group: {\r\n selector: \"key\",\r\n keepInitialKeyOrder: true\r\n }\r\n };\r\n if (hasSimpleItems) {\r\n dataSource.searchExpr = \"text\"\r\n }\r\n }\r\n return dataSource\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_element_style.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n titleize\r\n} from \"../../../../core/utils/inflector\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../../../core/utils/window\";\r\nimport {\r\n toNumber\r\n} from \"../../../utils/type_conversion\";\r\nexport function getElementStyle(el) {\r\n var _getWindow$getCompute, _getWindow;\r\n return el && hasWindow() ? null === (_getWindow$getCompute = (_getWindow = getWindow()).getComputedStyle) || void 0 === _getWindow$getCompute ? void 0 : _getWindow$getCompute.call(_getWindow, el) : null\r\n}\r\nexport function getElementMargin(element, side) {\r\n var style = getElementStyle(element);\r\n return style ? toNumber(style[\"margin\".concat(titleize(side))]) : 0\r\n}\r\nexport function getElementPadding(element, side) {\r\n var style = getElementStyle(element);\r\n return style ? toNumber(style[\"padding\".concat(titleize(side))]) : 0\r\n}\r\nexport function getElementOverflowX(element) {\r\n var style = getElementStyle(element);\r\n return style ? style.overflowX : \"visible\"\r\n}\r\nexport function getElementOverflowY(element) {\r\n var style = getElementStyle(element);\r\n return style ? style.overflowY : \"visible\"\r\n}\r\nexport function getElementTransform(element) {\r\n var style = getElementStyle(element);\r\n return style ? style.transform : \"\"\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/utils/type_conversion.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function toNumber(attribute) {\r\n return attribute ? Number(attribute.replace(\"px\", \"\")) : 0\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n setHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n getImageContainer\r\n} from \"../../core/utils/icon\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n end as swipeEventEnd\r\n} from \"../../events/swipe\";\r\nimport {\r\n nativeScrolling\r\n} from \"../../core/utils/support\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n render\r\n} from \"../widget/utils.ink_ripple\";\r\nimport devices from \"../../core/devices\";\r\nimport ListItem from \"./item\";\r\nimport Button from \"../button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n current,\r\n isMaterial\r\n} from \"../themes\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport ScrollView from \"../scroll_view\";\r\nimport {\r\n deviceDependentOptions\r\n} from \"../scroll_view/ui.scrollable.device\";\r\nimport CollectionWidget from \"../collection/ui.collection_widget.live_update\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport DataConverterMixin from \"../shared/grouped_data_converter_mixin\";\r\nimport {\r\n getElementMargin\r\n} from \"../../renovation/ui/scroll_view/utils/get_element_style\";\r\nimport Guid from \"../../core/guid\";\r\nvar LIST_CLASS = \"dx-list\";\r\nvar LIST_ITEM_CLASS = \"dx-list-item\";\r\nvar LIST_ITEM_SELECTOR = \".\" + LIST_ITEM_CLASS;\r\nvar LIST_ITEM_ICON_CONTAINER_CLASS = \"dx-list-item-icon-container\";\r\nvar LIST_ITEM_ICON_CLASS = \"dx-list-item-icon\";\r\nvar LIST_GROUP_CLASS = \"dx-list-group\";\r\nvar LIST_GROUP_HEADER_CLASS = \"dx-list-group-header\";\r\nvar LIST_GROUP_BODY_CLASS = \"dx-list-group-body\";\r\nvar LIST_COLLAPSIBLE_GROUPS_CLASS = \"dx-list-collapsible-groups\";\r\nvar LIST_GROUP_COLLAPSED_CLASS = \"dx-list-group-collapsed\";\r\nvar LIST_GROUP_HEADER_INDICATOR_CLASS = \"dx-list-group-header-indicator\";\r\nvar LIST_HAS_NEXT_CLASS = \"dx-has-next\";\r\nvar LIST_NEXT_BUTTON_CLASS = \"dx-list-next-button\";\r\nvar WRAP_ITEM_TEXT_CLASS = \"dx-wrap-item-text\";\r\nvar SELECT_ALL_ITEM_SELECTOR = \".dx-list-select-all\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar LIST_FEEDBACK_SHOW_TIMEOUT = 70;\r\nvar groupItemsGetter = compileGetter(\"items\");\r\nvar _scrollView;\r\nexport var ListBase = CollectionWidget.inherit({\r\n _activeStateUnit: [LIST_ITEM_SELECTOR, SELECT_ALL_ITEM_SELECTOR].join(\",\"),\r\n _supportedKeys: function() {\r\n var that = this;\r\n var moveFocusPerPage = function(direction) {\r\n var $item = getEdgeVisibleItem(direction);\r\n var isFocusedItem = $item.is(that.option(\"focusedElement\"));\r\n if (isFocusedItem) {\r\n ! function($item, direction) {\r\n var resultPosition = $item.position().top;\r\n if (\"prev\" === direction) {\r\n resultPosition = $item.position().top - getHeight(that.$element()) + getOuterHeight($item)\r\n }\r\n that.scrollTo(resultPosition)\r\n }($item, direction);\r\n $item = getEdgeVisibleItem(direction)\r\n }\r\n that.option(\"focusedElement\", getPublicElement($item));\r\n that.scrollToItem($item)\r\n };\r\n\r\n function getEdgeVisibleItem(direction) {\r\n var scrollTop = that.scrollTop();\r\n var containerHeight = getHeight(that.$element());\r\n var $item = $(that.option(\"focusedElement\"));\r\n var isItemVisible = true;\r\n if (!$item.length) {\r\n return $()\r\n }\r\n while (isItemVisible) {\r\n var $nextItem = $item[direction]();\r\n if (!$nextItem.length) {\r\n break\r\n }\r\n var nextItemLocation = $nextItem.position().top + getOuterHeight($nextItem) / 2;\r\n isItemVisible = nextItemLocation < containerHeight + scrollTop && nextItemLocation > scrollTop;\r\n if (isItemVisible) {\r\n $item = $nextItem\r\n }\r\n }\r\n return $item\r\n }\r\n return extend(this.callBase(), {\r\n leftArrow: noop,\r\n rightArrow: noop,\r\n pageUp: function() {\r\n moveFocusPerPage(\"prev\");\r\n return false\r\n },\r\n pageDown: function() {\r\n moveFocusPerPage(\"next\");\r\n return false\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n pullRefreshEnabled: false,\r\n scrollingEnabled: true,\r\n selectByClick: true,\r\n showScrollbar: \"onScroll\",\r\n useNativeScrolling: true,\r\n bounceEnabled: true,\r\n scrollByContent: true,\r\n scrollByThumb: false,\r\n pullingDownText: messageLocalization.format(\"dxList-pullingDownText\"),\r\n pulledDownText: messageLocalization.format(\"dxList-pulledDownText\"),\r\n refreshingText: messageLocalization.format(\"dxList-refreshingText\"),\r\n pageLoadingText: messageLocalization.format(\"dxList-pageLoadingText\"),\r\n onScroll: null,\r\n onPullRefresh: null,\r\n onPageLoading: null,\r\n pageLoadMode: \"scrollBottom\",\r\n nextButtonText: messageLocalization.format(\"dxList-nextButtonText\"),\r\n onItemSwipe: null,\r\n grouped: false,\r\n onGroupRendered: null,\r\n collapsibleGroups: false,\r\n groupTemplate: \"group\",\r\n indicateLoading: true,\r\n activeStateEnabled: true,\r\n _itemAttributes: {\r\n role: \"option\"\r\n },\r\n useInkRipple: false,\r\n wrapItemText: false,\r\n _swipeEnabled: true,\r\n showChevronExpr: function(data) {\r\n return data ? data.showChevron : void 0\r\n },\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = current();\r\n return this.callBase().concat(deviceDependentOptions(), [{\r\n device: function() {\r\n return !nativeScrolling\r\n },\r\n options: {\r\n useNativeScrolling: false\r\n }\r\n }, {\r\n device: function(_device) {\r\n return !nativeScrolling && !devices.isSimulator() && \"desktop\" === devices.real().deviceType && \"generic\" === _device.platform\r\n },\r\n options: {\r\n showScrollbar: \"onHover\",\r\n pageLoadMode: \"nextButton\"\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n pullingDownText: \"\",\r\n pulledDownText: \"\",\r\n refreshingText: \"\",\r\n pageLoadingText: \"\",\r\n useInkRipple: true\r\n }\r\n }])\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateLoadingState(true)\r\n }\r\n },\r\n _itemClass: function() {\r\n return LIST_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return LIST_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$container\r\n },\r\n _saveSelectionChangeEvent: function(e) {\r\n this._selectionChangeEventInstance = e\r\n },\r\n _getSelectionChangeEvent: function() {\r\n return this._selectionChangeEventInstance\r\n },\r\n _refreshItemElements: function() {\r\n if (!this.option(\"grouped\")) {\r\n this._itemElementsCache = this._itemContainer().children(this._itemSelector())\r\n } else {\r\n this._itemElementsCache = this._itemContainer().children(\".\" + LIST_GROUP_CLASS).children(\".\" + LIST_GROUP_BODY_CLASS).children(this._itemSelector())\r\n }\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n reorderItem: function(itemElement, toItemElement) {\r\n var promise = this.callBase(itemElement, toItemElement);\r\n return promise.done((function() {\r\n this._refreshItemElements()\r\n }))\r\n },\r\n deleteItem: function(itemElement) {\r\n var promise = this.callBase(itemElement);\r\n return promise.done((function() {\r\n this._refreshItemElements()\r\n }))\r\n },\r\n _itemElements: function() {\r\n return this._itemElementsCache\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n return this.callBase(e)\r\n },\r\n _allowDynamicItemsAppend: function() {\r\n return true\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._dataController.resetDataSourcePageIndex();\r\n this._$container = this.$element();\r\n this._initScrollView();\r\n this._feedbackShowTimeout = LIST_FEEDBACK_SHOW_TIMEOUT;\r\n this._createGroupRenderAction()\r\n },\r\n _scrollBottomMode: function() {\r\n return \"scrollBottom\" === this.option(\"pageLoadMode\")\r\n },\r\n _nextButtonMode: function() {\r\n return \"nextButton\" === this.option(\"pageLoadMode\")\r\n },\r\n _dataSourceOptions: function() {\r\n var scrollBottom = this._scrollBottomMode();\r\n var nextButton = this._nextButtonMode();\r\n return extend(this.callBase(), {\r\n paginate: ensureDefined(scrollBottom || nextButton, true)\r\n })\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _getGroupContainerByIndex: function(groupIndex) {\r\n return this._itemContainer().find(\".\".concat(LIST_GROUP_CLASS)).eq(groupIndex).find(\".\".concat(LIST_GROUP_BODY_CLASS))\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _initScrollView: function() {\r\n var scrollingEnabled = this.option(\"scrollingEnabled\");\r\n var pullRefreshEnabled = scrollingEnabled && this.option(\"pullRefreshEnabled\");\r\n var autoPagingEnabled = scrollingEnabled && this._scrollBottomMode() && !!this._dataController.getDataSource();\r\n this._scrollView = this._createComponent(this.$element(), getScrollView(), {\r\n height: this.option(\"height\"),\r\n width: this.option(\"width\"),\r\n disabled: this.option(\"disabled\") || !scrollingEnabled,\r\n onScroll: this._scrollHandler.bind(this),\r\n onPullDown: pullRefreshEnabled ? this._pullDownHandler.bind(this) : null,\r\n onReachBottom: autoPagingEnabled ? this._scrollBottomHandler.bind(this) : null,\r\n showScrollbar: this.option(\"showScrollbar\"),\r\n useNative: this.option(\"useNativeScrolling\"),\r\n bounceEnabled: this.option(\"bounceEnabled\"),\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n scrollByThumb: this.option(\"scrollByThumb\"),\r\n pullingDownText: this.option(\"pullingDownText\"),\r\n pulledDownText: this.option(\"pulledDownText\"),\r\n refreshingText: this.option(\"refreshingText\"),\r\n reachBottomText: this.option(\"pageLoadingText\"),\r\n useKeyboard: false\r\n });\r\n this._$container = $(this._scrollView.content());\r\n if (this.option(\"wrapItemText\")) {\r\n this._$container.addClass(WRAP_ITEM_TEXT_CLASS)\r\n }\r\n this._createScrollViewActions()\r\n },\r\n _createScrollViewActions: function() {\r\n this._scrollAction = this._createActionByOption(\"onScroll\");\r\n this._pullRefreshAction = this._createActionByOption(\"onPullRefresh\");\r\n this._pageLoadingAction = this._createActionByOption(\"onPageLoading\")\r\n },\r\n _scrollHandler: function(e) {\r\n this._scrollAction && this._scrollAction(e)\r\n },\r\n _initTemplates: function() {\r\n this._templateManager.addDefaultTemplates({\r\n group: new BindableTemplate((function($container, data) {\r\n if (isPlainObject(data)) {\r\n if (data.key) {\r\n $container.text(data.key)\r\n }\r\n } else {\r\n $container.text(String(data))\r\n }\r\n }), [\"key\"], this.option(\"integrationOptions.watchMethod\"))\r\n });\r\n this.callBase()\r\n },\r\n _prepareDefaultItemTemplate: function(data, $container) {\r\n this.callBase(data, $container);\r\n if (data.icon) {\r\n var $icon = getImageContainer(data.icon).addClass(LIST_ITEM_ICON_CLASS);\r\n var $iconContainer = $(\"<div>\").addClass(LIST_ITEM_ICON_CONTAINER_CLASS);\r\n $iconContainer.append($icon);\r\n $container.prepend($iconContainer)\r\n }\r\n },\r\n _getBindableFields: function() {\r\n return [\"text\", \"html\", \"icon\"]\r\n },\r\n _updateLoadingState: function(tryLoadMore) {\r\n var dataController = this._dataController;\r\n var shouldLoadNextPage = this._scrollBottomMode() && tryLoadMore && !dataController.isLoading() && !this._isLastPage();\r\n if (this._shouldContinueLoading(shouldLoadNextPage)) {\r\n this._infiniteDataLoading()\r\n } else {\r\n this._scrollView.release(!shouldLoadNextPage && !dataController.isLoading());\r\n this._toggleNextButton(this._shouldRenderNextButton() && !this._isLastPage());\r\n this._loadIndicationSuppressed(false)\r\n }\r\n },\r\n _shouldRenderNextButton: function() {\r\n return this._nextButtonMode() && this._dataController.isLoaded()\r\n },\r\n _isDataSourceFirstLoadCompleted: function(newValue) {\r\n if (isDefined(newValue)) {\r\n this._isFirstLoadCompleted = newValue\r\n }\r\n return this._isFirstLoadCompleted\r\n },\r\n _dataSourceLoadingChangedHandler: function(isLoading) {\r\n if (this._loadIndicationSuppressed()) {\r\n return\r\n }\r\n if (isLoading && this.option(\"indicateLoading\")) {\r\n this._showLoadingIndicatorTimer = setTimeout(function() {\r\n var isEmpty = !this._itemElements().length;\r\n var shouldIndicateLoading = !isEmpty || this._isDataSourceFirstLoadCompleted();\r\n if (shouldIndicateLoading) {\r\n var _this$_scrollView;\r\n null === (_this$_scrollView = this._scrollView) || void 0 === _this$_scrollView ? void 0 : _this$_scrollView.startLoading()\r\n }\r\n }.bind(this))\r\n } else {\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this._scrollView && this._scrollView.finishLoading()\r\n }\r\n if (!isLoading) {\r\n this._isDataSourceFirstLoadCompleted(false)\r\n }\r\n },\r\n _dataSourceChangedHandler: function() {\r\n if (!this._shouldAppendItems() && hasWindow()) {\r\n this._scrollView && this._scrollView.scrollTo(0)\r\n }\r\n this.callBase.apply(this, arguments);\r\n this._isDataSourceFirstLoadCompleted(true)\r\n },\r\n _refreshContent: function() {\r\n this._prepareContent();\r\n this._fireContentReadyAction()\r\n },\r\n _hideLoadingIfLoadIndicationOff: function() {\r\n if (!this.option(\"indicateLoading\")) {\r\n this._dataSourceLoadingChangedHandler(false)\r\n }\r\n },\r\n _loadIndicationSuppressed: function(value) {\r\n if (!arguments.length) {\r\n return this._isLoadIndicationSuppressed\r\n }\r\n this._isLoadIndicationSuppressed = value\r\n },\r\n _scrollViewIsFull: function() {\r\n var scrollView = this._scrollView;\r\n return !scrollView || getHeight(scrollView.content()) > getHeight(scrollView.container())\r\n },\r\n _pullDownHandler: function(e) {\r\n this._pullRefreshAction(e);\r\n var dataController = this._dataController;\r\n if (dataController.getDataSource() && !dataController.isLoading()) {\r\n this._clearSelectedItems();\r\n dataController.pageIndex(0);\r\n dataController.reload()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _shouldContinueLoading: function(shouldLoadNextPage) {\r\n var _this$_scrollView$scr, _this$_scrollView$scr2;\r\n var isBottomReached = getHeight(this._scrollView.content()) - getHeight(this._scrollView.container()) < (null !== (_this$_scrollView$scr = null === (_this$_scrollView$scr2 = this._scrollView.scrollOffset()) || void 0 === _this$_scrollView$scr2 ? void 0 : _this$_scrollView$scr2.top) && void 0 !== _this$_scrollView$scr ? _this$_scrollView$scr : 0);\r\n return shouldLoadNextPage && (!this._scrollViewIsFull() || isBottomReached)\r\n },\r\n _infiniteDataLoading: function() {\r\n var isElementVisible = this.$element().is(\":visible\");\r\n if (isElementVisible) {\r\n clearTimeout(this._loadNextPageTimer);\r\n this._loadNextPageTimer = setTimeout(() => {\r\n this._loadNextPage()\r\n })\r\n }\r\n },\r\n _scrollBottomHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n var dataController = this._dataController;\r\n if (!dataController.isLoading() && !this._isLastPage()) {\r\n this._loadNextPage()\r\n } else {\r\n this._updateLoadingState()\r\n }\r\n },\r\n _renderItems: function(items) {\r\n if (this.option(\"grouped\")) {\r\n each(items, this._renderGroup.bind(this));\r\n this._attachGroupCollapseEvent();\r\n this._renderEmptyMessage();\r\n if (isMaterial()) {\r\n this.attachGroupHeaderInkRippleEvents()\r\n }\r\n } else {\r\n this.callBase.apply(this, arguments)\r\n }\r\n this._refreshItemElements();\r\n this._updateLoadingState(true)\r\n },\r\n _attachGroupCollapseEvent: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n var collapsibleGroups = this.option(\"collapsibleGroups\");\r\n $element.toggleClass(LIST_COLLAPSIBLE_GROUPS_CLASS, collapsibleGroups);\r\n eventsEngine.off($element, eventName, selector);\r\n if (collapsibleGroups) {\r\n eventsEngine.on($element, eventName, selector, function(e) {\r\n this._createAction(function(e) {\r\n var $group = $(e.event.currentTarget).parent();\r\n this._collapseGroupHandler($group);\r\n if (this.option(\"focusStateEnabled\")) {\r\n this.option(\"focusedElement\", getPublicElement($group.find(\".\" + LIST_ITEM_CLASS).eq(0)))\r\n }\r\n }.bind(this), {\r\n validatingTargetName: \"element\"\r\n })({\r\n event: e\r\n })\r\n }.bind(this))\r\n }\r\n },\r\n _collapseGroupHandler: function($group, toggle) {\r\n var deferred = new Deferred;\r\n if ($group.hasClass(LIST_GROUP_COLLAPSED_CLASS) === toggle) {\r\n return deferred.resolve()\r\n }\r\n var $groupBody = $group.children(\".\" + LIST_GROUP_BODY_CLASS);\r\n var startHeight = getOuterHeight($groupBody);\r\n var endHeight = 0;\r\n if (0 === startHeight) {\r\n setHeight($groupBody, \"auto\");\r\n endHeight = getOuterHeight($groupBody)\r\n }\r\n $group.toggleClass(LIST_GROUP_COLLAPSED_CLASS, toggle);\r\n fx.animate($groupBody, {\r\n type: \"custom\",\r\n from: {\r\n height: startHeight\r\n },\r\n to: {\r\n height: endHeight\r\n },\r\n duration: 200,\r\n complete: function() {\r\n this.updateDimensions();\r\n this._updateLoadingState(true);\r\n deferred.resolve()\r\n }.bind(this)\r\n });\r\n return deferred.promise()\r\n },\r\n _dataSourceLoadErrorHandler: function() {\r\n this._forgetNextPageLoading();\r\n if (this._initialized) {\r\n this._renderEmptyMessage();\r\n this._updateLoadingState()\r\n }\r\n },\r\n _initMarkup: function() {\r\n this._itemElementsCache = $();\r\n this.$element().addClass(LIST_CLASS);\r\n this.callBase();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.setAria({\r\n role: \"group\",\r\n roledescription: \"list\"\r\n }, this.$element());\r\n this._setListAria()\r\n },\r\n _setListAria() {\r\n var {\r\n items: items\r\n } = this.option();\r\n var listArea = null !== items && void 0 !== items && items.length ? {\r\n role: \"listbox\",\r\n label: \"Items\"\r\n } : {\r\n role: void 0,\r\n label: void 0\r\n };\r\n this.setAria(listArea)\r\n },\r\n _focusTarget: function() {\r\n return this._itemContainer()\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render()\r\n },\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n var that = this;\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n if (isMaterial()) {\r\n this._inkRippleTimer = setTimeout((function() {\r\n that._inkRipple.showWave(config)\r\n }), LIST_FEEDBACK_SHOW_TIMEOUT / 2)\r\n } else {\r\n that._inkRipple.showWave(config)\r\n }\r\n } else {\r\n clearTimeout(this._inkRippleTimer);\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _postprocessRenderItem: function(args) {\r\n this._refreshItemElements();\r\n this.callBase.apply(this, arguments);\r\n if (this.option(\"_swipeEnabled\")) {\r\n this._attachSwipeEvent($(args.itemElement))\r\n }\r\n },\r\n _attachSwipeEvent: function($itemElement) {\r\n var endEventName = addNamespace(swipeEventEnd, this.NAME);\r\n eventsEngine.on($itemElement, endEventName, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n this._itemDXEventHandler(e, \"onItemSwipe\", {\r\n direction: e.offset < 0 ? \"left\" : \"right\"\r\n })\r\n },\r\n _nextButtonHandler: function(e) {\r\n this._pageLoadingAction(e);\r\n var dataController = this._dataController;\r\n if (dataController.getDataSource() && !dataController.isLoading()) {\r\n this._scrollView.toggleLoading(true);\r\n this._$nextButton.detach();\r\n this._loadIndicationSuppressed(true);\r\n this._loadNextPage()\r\n }\r\n },\r\n _renderGroup: function(index, group) {\r\n var $groupElement = $(\"<div>\").addClass(LIST_GROUP_CLASS).appendTo(this._itemContainer());\r\n var id = \"dx-\".concat((new Guid).toString());\r\n var groupAria = {\r\n role: \"group\",\r\n labelledby: id\r\n };\r\n this.setAria(groupAria, $groupElement);\r\n var $groupHeaderElement = $(\"<div>\").addClass(LIST_GROUP_HEADER_CLASS).attr(\"id\", id).appendTo($groupElement);\r\n var groupTemplateName = this.option(\"groupTemplate\");\r\n var groupTemplate = this._getTemplate(group.template || groupTemplateName, group, index, $groupHeaderElement);\r\n var renderArgs = {\r\n index: index,\r\n itemData: group,\r\n container: getPublicElement($groupHeaderElement)\r\n };\r\n this._createItemByTemplate(groupTemplate, renderArgs);\r\n if (isMaterial()) {\r\n $(\"<div>\").addClass(LIST_GROUP_HEADER_INDICATOR_CLASS).prependTo($groupHeaderElement)\r\n }\r\n this._renderingGroupIndex = index;\r\n var $groupBody = $(\"<div>\").addClass(LIST_GROUP_BODY_CLASS).appendTo($groupElement);\r\n each(groupItemsGetter(group) || [], function(itemIndex, item) {\r\n this._renderItem({\r\n group: index,\r\n item: itemIndex\r\n }, item, $groupBody)\r\n }.bind(this));\r\n this._groupRenderAction({\r\n groupElement: getPublicElement($groupElement),\r\n groupIndex: index,\r\n groupData: group\r\n })\r\n },\r\n downInkRippleHandler: function(e) {\r\n this._toggleActiveState($(e.currentTarget), true, e)\r\n },\r\n upInkRippleHandler: function(e) {\r\n this._toggleActiveState($(e.currentTarget), false)\r\n },\r\n attachGroupHeaderInkRippleEvents: function() {\r\n var selector = \".\" + LIST_GROUP_HEADER_CLASS;\r\n var $element = this.$element();\r\n this._downInkRippleHandler = this._downInkRippleHandler || this.downInkRippleHandler.bind(this);\r\n this._upInkRippleHandler = this._upInkRippleHandler || this.upInkRippleHandler.bind(this);\r\n var downArguments = [$element, \"dxpointerdown\", selector, this._downInkRippleHandler];\r\n var upArguments = [$element, \"dxpointerup dxpointerout\", selector, this._upInkRippleHandler];\r\n eventsEngine.off(...downArguments);\r\n eventsEngine.on(...downArguments);\r\n eventsEngine.off(...upArguments);\r\n eventsEngine.on(...upArguments)\r\n },\r\n _createGroupRenderAction: function() {\r\n this._groupRenderAction = this._createActionByOption(\"onGroupRendered\")\r\n },\r\n _clean: function() {\r\n clearTimeout(this._inkRippleTimer);\r\n if (this._$nextButton) {\r\n this._$nextButton.remove();\r\n this._$nextButton = null\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _dispose: function() {\r\n this._isDataSourceFirstLoadCompleted(false);\r\n clearTimeout(this._holdTimer);\r\n clearTimeout(this._loadNextPageTimer);\r\n clearTimeout(this._showLoadingIndicatorTimer);\r\n this.callBase()\r\n },\r\n _toggleDisabledState: function(value) {\r\n this.callBase(value);\r\n this._scrollView.option(\"disabled\", value || !this.option(\"scrollingEnabled\"))\r\n },\r\n _toggleNextButton: function(value) {\r\n var dataController = this._dataController;\r\n var $nextButton = this._getNextButton();\r\n this.$element().toggleClass(LIST_HAS_NEXT_CLASS, value);\r\n if (value && dataController.isLoaded()) {\r\n $nextButton.appendTo(this._itemContainer())\r\n }\r\n if (!value) {\r\n $nextButton.detach()\r\n }\r\n },\r\n _getNextButton: function() {\r\n if (!this._$nextButton) {\r\n this._$nextButton = this._createNextButton()\r\n }\r\n return this._$nextButton\r\n },\r\n _createNextButton: function() {\r\n var $result = $(\"<div>\").addClass(LIST_NEXT_BUTTON_CLASS);\r\n var $button = $(\"<div>\").appendTo($result);\r\n this._createComponent($button, Button, {\r\n text: this.option(\"nextButtonText\"),\r\n onClick: this._nextButtonHandler.bind(this),\r\n type: isMaterial() ? \"default\" : void 0,\r\n integrationOptions: {}\r\n });\r\n return $result\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _refresh: function() {\r\n if (!hasWindow()) {\r\n this.callBase()\r\n } else {\r\n var scrollTop = this._scrollView.scrollTop();\r\n this.callBase();\r\n scrollTop && this._scrollView.scrollTo(scrollTop)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"pageLoadMode\":\r\n this._toggleNextButton(args.value);\r\n this._initScrollView();\r\n break;\r\n case \"dataSource\":\r\n this.callBase(args);\r\n this._initScrollView();\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"items\":\r\n this.callBase(args);\r\n this._isDataSourceFirstLoadCompleted(false);\r\n break;\r\n case \"pullingDownText\":\r\n case \"pulledDownText\":\r\n case \"refreshingText\":\r\n case \"pageLoadingText\":\r\n case \"showScrollbar\":\r\n case \"bounceEnabled\":\r\n case \"scrollByContent\":\r\n case \"scrollByThumb\":\r\n case \"useNativeScrolling\":\r\n case \"scrollingEnabled\":\r\n case \"pullRefreshEnabled\":\r\n this._initScrollView();\r\n this._updateLoadingState(true);\r\n break;\r\n case \"nextButtonText\":\r\n case \"onItemSwipe\":\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"onScroll\":\r\n case \"onPullRefresh\":\r\n case \"onPageLoading\":\r\n this._createScrollViewActions();\r\n break;\r\n case \"grouped\":\r\n case \"collapsibleGroups\":\r\n case \"groupTemplate\":\r\n this._invalidate();\r\n break;\r\n case \"wrapItemText\":\r\n this._$container.toggleClass(WRAP_ITEM_TEXT_CLASS, args.value);\r\n break;\r\n case \"onGroupRendered\":\r\n this._createGroupRenderAction();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._scrollView.option(args.name, args.value);\r\n this._scrollView.update();\r\n break;\r\n case \"indicateLoading\":\r\n this._hideLoadingIfLoadIndicationOff();\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n this._scrollView.update();\r\n break;\r\n case \"rtlEnabled\":\r\n this._initScrollView();\r\n this.callBase(args);\r\n break;\r\n case \"showChevronExpr\":\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n case \"_swipeEnabled\":\r\n case \"selectByClick\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _extendActionArgs: function($itemElement) {\r\n if (!this.option(\"grouped\")) {\r\n return this.callBase($itemElement)\r\n }\r\n var $group = $itemElement.closest(\".\" + LIST_GROUP_CLASS);\r\n var $item = $group.find(\".\" + LIST_ITEM_CLASS);\r\n return extend(this.callBase($itemElement), {\r\n itemIndex: {\r\n group: $group.index(),\r\n item: $item.index($itemElement)\r\n }\r\n })\r\n },\r\n expandGroup: function(groupIndex) {\r\n var deferred = new Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, false).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n collapseGroup: function(groupIndex) {\r\n var deferred = new Deferred;\r\n var $group = this._itemContainer().find(\".\" + LIST_GROUP_CLASS).eq(groupIndex);\r\n this._collapseGroupHandler($group, true).done(function() {\r\n deferred.resolveWith(this)\r\n }.bind(this));\r\n return deferred\r\n },\r\n updateDimensions: function() {\r\n var that = this;\r\n var deferred = new Deferred;\r\n if (that._scrollView) {\r\n that._scrollView.update().done((function() {\r\n !that._scrollViewIsFull() && that._updateLoadingState(true);\r\n deferred.resolveWith(that)\r\n }))\r\n } else {\r\n deferred.resolveWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n reload: function() {\r\n this.callBase();\r\n this.scrollTo(0);\r\n this._pullDownHandler()\r\n },\r\n repaint: function() {\r\n this.scrollTo(0);\r\n this.callBase()\r\n },\r\n scrollTop: function() {\r\n return this._scrollView.scrollOffset().top\r\n },\r\n clientHeight: function() {\r\n return this._scrollView.clientHeight()\r\n },\r\n scrollHeight: function() {\r\n return this._scrollView.scrollHeight()\r\n },\r\n scrollBy: function(distance) {\r\n this._scrollView.scrollBy(distance)\r\n },\r\n scrollTo: function(location) {\r\n this._scrollView.scrollTo(location)\r\n },\r\n scrollToItem: function(itemElement) {\r\n var $item = this._editStrategy.getItemElement(itemElement);\r\n var item = null === $item || void 0 === $item ? void 0 : $item.get(0);\r\n this._scrollView.scrollToElement(item, {\r\n bottom: getElementMargin(item, \"bottom\")\r\n })\r\n },\r\n _dimensionChanged: function() {\r\n this.updateDimensions()\r\n }\r\n}).include(DataConverterMixin);\r\nListBase.ItemClass = ListItem;\r\n\r\nfunction getScrollView() {\r\n return _scrollView || ScrollView\r\n}\r\nexport function setScrollView(value) {\r\n _scrollView = value\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isTouchEvent\r\n} from \"../../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport GroupedEditStrategy from \"./ui.list.edit.strategy.grouped\";\r\nimport localizationMessage from \"../../localization/message\";\r\nimport EditProvider from \"./ui.list.edit.provider\";\r\nimport {\r\n ListBase\r\n} from \"./ui.list.base\";\r\nvar LIST_ITEM_SELECTED_CLASS = \"dx-list-item-selected\";\r\nvar LIST_ITEM_RESPONSE_WAIT_CLASS = \"dx-list-item-response-wait\";\r\nvar ListEdit = ListBase.inherit({\r\n _supportedKeys() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var moveFocusedItem = (e, moveUp) => {\r\n var editStrategy = this._editStrategy;\r\n var focusedElement = this.option(\"focusedElement\");\r\n var focusedItemIndex = editStrategy.getNormalizedIndex(focusedElement);\r\n var isLastIndexFocused = focusedItemIndex === this._getLastItemIndex();\r\n if (isLastIndexFocused && this._dataController.isLoading()) {\r\n return\r\n }\r\n if (e.shiftKey && that.option(\"itemDragging.allowReordering\")) {\r\n var nextItemIndex = focusedItemIndex + (moveUp ? -1 : 1);\r\n var $nextItem = editStrategy.getItemElement(nextItemIndex);\r\n this.reorderItem(focusedElement, $nextItem);\r\n this.scrollToItem(focusedElement);\r\n e.preventDefault()\r\n } else {\r\n var editProvider = this._editProvider;\r\n var isInternalMoving = editProvider.handleKeyboardEvents(focusedItemIndex, moveUp);\r\n if (!isInternalMoving) {\r\n moveUp ? parent.upArrow(e) : parent.downArrow(e)\r\n }\r\n }\r\n };\r\n return extend({}, parent, {\r\n del: e => {\r\n if (that.option(\"allowItemDeleting\")) {\r\n e.preventDefault();\r\n that.deleteItem(that.option(\"focusedElement\"))\r\n }\r\n },\r\n upArrow: e => moveFocusedItem(e, true),\r\n downArrow: e => moveFocusedItem(e),\r\n enter: function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.enter.apply(this, arguments)\r\n }\r\n },\r\n space: function(e) {\r\n if (!this._editProvider.handleEnterPressing(e)) {\r\n parent.space.apply(this, arguments)\r\n }\r\n }\r\n })\r\n },\r\n _updateSelection() {\r\n this._editProvider.afterItemsRendered();\r\n this.callBase()\r\n },\r\n _getLastItemIndex() {\r\n return this._itemElements().length - 1\r\n },\r\n _refreshItemElements() {\r\n this.callBase();\r\n var excludedSelectors = this._editProvider.getExcludedItemSelectors();\r\n if (excludedSelectors.length) {\r\n this._itemElementsCache = this._itemElementsCache.not(excludedSelectors)\r\n }\r\n },\r\n _isItemStrictEquals: function(item1, item2) {\r\n var privateKey = item1 && item1.__dx_key__;\r\n if (privateKey && !this.key() && this._selection.isItemSelected(privateKey)) {\r\n return false\r\n }\r\n return this.callBase(item1, item2)\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n showSelectionControls: false,\r\n selectionMode: \"none\",\r\n selectAllMode: \"page\",\r\n onSelectAllValueChanged: null,\r\n selectAllText: localizationMessage.format(\"dxList-selectAll\"),\r\n menuItems: [],\r\n menuMode: \"context\",\r\n allowItemDeleting: false,\r\n itemDeleteMode: \"static\",\r\n itemDragging: {}\r\n })\r\n },\r\n _defaultOptionsRules() {\r\n return this.callBase().concat([{\r\n device: _device => \"ios\" === _device.platform,\r\n options: {\r\n menuMode: \"slide\",\r\n itemDeleteMode: \"slideItem\"\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n itemDeleteMode: \"swipe\"\r\n }\r\n }])\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initEditProvider()\r\n },\r\n _initDataSource() {\r\n this.callBase();\r\n if (!this._isPageSelectAll()) {\r\n this._dataSource && this._dataSource.requireTotalCount(true)\r\n }\r\n },\r\n _isPageSelectAll() {\r\n return \"page\" === this.option(\"selectAllMode\")\r\n },\r\n _initEditProvider() {\r\n this._editProvider = new EditProvider(this)\r\n },\r\n _disposeEditProvider() {\r\n if (this._editProvider) {\r\n this._editProvider.dispose()\r\n }\r\n },\r\n _refreshEditProvider() {\r\n this._disposeEditProvider();\r\n this._initEditProvider()\r\n },\r\n _initEditStrategy() {\r\n if (this.option(\"grouped\")) {\r\n this._editStrategy = new GroupedEditStrategy(this)\r\n } else {\r\n this.callBase()\r\n }\r\n },\r\n _initMarkup() {\r\n this._refreshEditProvider();\r\n this.callBase()\r\n },\r\n _renderItems() {\r\n this.callBase(...arguments);\r\n this._editProvider.afterItemsRendered()\r\n },\r\n _selectedItemClass: () => LIST_ITEM_SELECTED_CLASS,\r\n _itemResponseWaitClass: () => LIST_ITEM_RESPONSE_WAIT_CLASS,\r\n _itemClickHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = this._editProvider.handleClick($itemElement, e);\r\n if (handledByEditProvider) {\r\n return\r\n }\r\n this._saveSelectionChangeEvent(e);\r\n this.callBase(...arguments)\r\n },\r\n _shouldFireContextMenuEvent() {\r\n return this.callBase(...arguments) || this._editProvider.contextMenuHandlerExists()\r\n },\r\n _itemHoldHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = isTouchEvent(e) && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.handledByEditProvider = true;\r\n return\r\n }\r\n this.callBase(...arguments)\r\n },\r\n _getItemContainer: function(changeData) {\r\n if (this.option(\"grouped\")) {\r\n var _this$_editStrategy$g;\r\n var groupIndex = null === (_this$_editStrategy$g = this._editStrategy.getIndexByItemData(changeData)) || void 0 === _this$_editStrategy$g ? void 0 : _this$_editStrategy$g.group;\r\n return this._getGroupContainerByIndex(groupIndex)\r\n } else {\r\n return this.callBase(changeData)\r\n }\r\n },\r\n _itemContextMenuHandler(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n return\r\n }\r\n var handledByEditProvider = !e.handledByEditProvider && this._editProvider.handleContextMenu($itemElement, e);\r\n if (handledByEditProvider) {\r\n e.preventDefault();\r\n return\r\n }\r\n this.callBase(...arguments)\r\n },\r\n _postprocessRenderItem(args) {\r\n this.callBase(...arguments);\r\n this._editProvider.modifyItemElement(args)\r\n },\r\n _clean() {\r\n this._disposeEditProvider();\r\n this.callBase()\r\n },\r\n focusListItem(index) {\r\n var $item = this._editStrategy.getItemElement(index);\r\n this.option(\"focusedElement\", $item);\r\n this.focus();\r\n this.scrollToItem(this.option(\"focusedElement\"))\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"selectAllMode\":\r\n this._initDataSource();\r\n this._dataController.pageIndex(0);\r\n this._dataController.load();\r\n break;\r\n case \"grouped\":\r\n this._clearSelectedItems();\r\n delete this._renderingGroupIndex;\r\n this._initEditStrategy();\r\n this.callBase(args);\r\n break;\r\n case \"showSelectionControls\":\r\n case \"menuItems\":\r\n case \"menuMode\":\r\n case \"allowItemDeleting\":\r\n case \"itemDeleteMode\":\r\n case \"itemDragging\":\r\n case \"selectAllText\":\r\n this._invalidate();\r\n break;\r\n case \"onSelectAllValueChanged\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n selectAll() {\r\n return this._selection.selectAll(this._isPageSelectAll())\r\n },\r\n unselectAll() {\r\n return this._selection.deselectAll(this._isPageSelectAll())\r\n },\r\n isSelectAll() {\r\n return this._selection.getSelectAllState(this._isPageSelectAll())\r\n },\r\n getFlatIndexByItemElement(itemElement) {\r\n return this._itemElements().index(itemElement)\r\n },\r\n getItemElementByFlatIndex(flatIndex) {\r\n var $itemElements = this._itemElements();\r\n if (flatIndex < 0 || flatIndex >= $itemElements.length) {\r\n return $()\r\n }\r\n return $itemElements.eq(flatIndex)\r\n },\r\n getItemByIndex(index) {\r\n return this._editStrategy.getItemDataByIndex(index)\r\n }\r\n});\r\nexport default ListEdit;\r\n","/**\r\n * DevExtreme (esm/ui/widget/ui.search_box_mixin.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n stubComponent\r\n} from \"../../core/utils/stubs\";\r\nvar EditorClass = stubComponent(\"TextBox\");\r\nexport default {\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n searchMode: \"\",\r\n searchExpr: null,\r\n searchValue: \"\",\r\n searchEnabled: false,\r\n searchEditorOptions: {}\r\n })\r\n },\r\n _initMarkup: function() {\r\n this._renderSearch();\r\n this.callBase()\r\n },\r\n _renderSearch: function() {\r\n var $element = this.$element();\r\n var searchEnabled = this.option(\"searchEnabled\");\r\n var searchBoxClassName = this._addWidgetPrefix(\"search\");\r\n var rootElementClassName = this._addWidgetPrefix(\"with-search\");\r\n if (!searchEnabled) {\r\n $element.removeClass(rootElementClassName);\r\n this._removeSearchBox();\r\n return\r\n }\r\n var editorOptions = this._getSearchEditorOptions();\r\n if (this._searchEditor) {\r\n this._searchEditor.option(editorOptions)\r\n } else {\r\n $element.addClass(rootElementClassName);\r\n this._$searchEditorElement = $(\"<div>\").addClass(searchBoxClassName).prependTo($element);\r\n this._searchEditor = this._createComponent(this._$searchEditorElement, EditorClass, editorOptions)\r\n }\r\n },\r\n _removeSearchBox: function() {\r\n this._$searchEditorElement && this._$searchEditorElement.remove();\r\n delete this._$searchEditorElement;\r\n delete this._searchEditor\r\n },\r\n _getSearchEditorOptions: function() {\r\n var that = this;\r\n var userEditorOptions = that.option(\"searchEditorOptions\");\r\n var searchText = messageLocalization.format(\"Search\");\r\n return extend({\r\n mode: \"search\",\r\n placeholder: searchText,\r\n tabIndex: that.option(\"tabIndex\"),\r\n value: that.option(\"searchValue\"),\r\n valueChangeEvent: \"input\",\r\n inputAttr: {\r\n \"aria-label\": searchText\r\n },\r\n onValueChanged: function(e) {\r\n var searchTimeout = that.option(\"searchTimeout\");\r\n that._valueChangeDeferred = new Deferred;\r\n clearTimeout(that._valueChangeTimeout);\r\n that._valueChangeDeferred.done(function() {\r\n this.option(\"searchValue\", e.value)\r\n }.bind(that));\r\n if (e.event && \"input\" === e.event.type && searchTimeout) {\r\n that._valueChangeTimeout = setTimeout((function() {\r\n that._valueChangeDeferred.resolve()\r\n }), searchTimeout)\r\n } else {\r\n that._valueChangeDeferred.resolve()\r\n }\r\n }\r\n }, userEditorOptions)\r\n },\r\n _getAriaTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.callBase()\r\n },\r\n _focusTarget: function() {\r\n if (this.option(\"searchEnabled\")) {\r\n return this._itemContainer(true)\r\n }\r\n return this.callBase()\r\n },\r\n _updateFocusState: function(e, isFocused) {\r\n if (this.option(\"searchEnabled\")) {\r\n this._toggleFocusClass(isFocused, this.$element())\r\n }\r\n this.callBase(e, isFocused)\r\n },\r\n getOperationBySearchMode: function(searchMode) {\r\n return \"equals\" === searchMode ? \"=\" : searchMode\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"searchEnabled\":\r\n case \"searchEditorOptions\":\r\n this._invalidate();\r\n break;\r\n case \"searchExpr\":\r\n case \"searchMode\":\r\n case \"searchValue\":\r\n if (!this._dataSource) {\r\n errors.log(\"W1009\");\r\n return\r\n }\r\n if (\"searchMode\" === args.name) {\r\n this._dataSource.searchOperation(this.getOperationBySearchMode(args.value))\r\n } else {\r\n this._dataSource[args.name](args.value)\r\n }\r\n this._dataSource.load();\r\n break;\r\n case \"searchTimeout\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n focus: function() {\r\n if (!this.option(\"focusedElement\") && this.option(\"searchEnabled\")) {\r\n this._searchEditor && this._searchEditor.focus();\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _cleanAria: function() {\r\n var $element = this.$element();\r\n this.setAria({\r\n role: null,\r\n activedescendant: null\r\n }, $element);\r\n $element.attr(\"tabIndex\", null)\r\n },\r\n _clean() {\r\n this.callBase();\r\n this._cleanAria()\r\n },\r\n _refresh: function() {\r\n if (this._valueChangeDeferred) {\r\n this._valueChangeDeferred.resolve()\r\n }\r\n this.callBase()\r\n },\r\n setEditorClass: function(value) {\r\n EditorClass = value\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/core/utils/stubs.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function stubComponent(componentName) {\r\n return class {\r\n constructor() {\r\n throw new Error(\"Module '\".concat(componentName, \"' not found\"))\r\n }\r\n static getInstance() {}\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.search.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ListEdit from \"./ui.list.edit\";\r\nimport searchBoxMixin from \"../widget/ui.search_box_mixin\";\r\nvar ListSearch = ListEdit.inherit(searchBoxMixin).inherit({\r\n _addWidgetPrefix: function(className) {\r\n return \"dx-list-\" + className\r\n },\r\n _getCombinedFilter: function() {\r\n var dataController = this._dataController;\r\n var storeLoadOptions = {\r\n filter: dataController.filter()\r\n };\r\n dataController.addSearchFilter(storeLoadOptions);\r\n var filter = storeLoadOptions.filter;\r\n return filter\r\n },\r\n _initDataSource: function() {\r\n var value = this.option(\"searchValue\");\r\n var expr = this.option(\"searchExpr\");\r\n var mode = this.option(\"searchMode\");\r\n this.callBase();\r\n var dataController = this._dataController;\r\n value && value.length && dataController.searchValue(value);\r\n mode.length && dataController.searchOperation(searchBoxMixin.getOperationBySearchMode(mode));\r\n expr && dataController.searchExpr(expr)\r\n }\r\n});\r\nexport default ListSearch;\r\n","/**\r\n * DevExtreme (esm/ui/list_light.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ListEdit from \"./list/ui.list.edit.search\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nregisterComponent(\"dxList\", ListEdit);\r\nexport default ListEdit;\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_editor/ui.drop_down_list.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n noop,\r\n ensureDefined,\r\n grep\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isWindow,\r\n isDefined,\r\n isObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport DropDownEditor from \"./ui.drop_down_editor\";\r\nimport List from \"../list_light\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport devices from \"../../core/devices\";\r\nimport dataQuery from \"../../data/query\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport DataExpressionMixin from \"../editor/ui.data_expression\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n ChildDefaultTemplate\r\n} from \"../../core/templates/child_default_template\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport DataConverterMixin from \"../shared/grouped_data_converter_mixin\";\r\nvar LIST_ITEM_SELECTOR = \".dx-list-item\";\r\nvar LIST_ITEM_DATA_KEY = \"dxListItemData\";\r\nvar DROPDOWNLIST_POPUP_WRAPPER_CLASS = \"dx-dropdownlist-popup-wrapper\";\r\nvar SEARCH_EVENT = \"input\";\r\nvar SEARCH_MODES = [\"startswith\", \"contains\", \"endwith\", \"notcontains\"];\r\nvar useCompositionEvents = \"android\" !== devices.real().platform;\r\nvar DropDownList = DropDownEditor.inherit({\r\n _supportedKeys: function() {\r\n var parent = this.callBase();\r\n return extend({}, parent, {\r\n tab: function(e) {\r\n if (this._allowSelectItemByTab()) {\r\n this._saveValueChangeEvent(e);\r\n var $focusedItem = $(this._list.option(\"focusedElement\"));\r\n $focusedItem.length && this._setSelectedElement($focusedItem)\r\n }\r\n parent.tab.apply(this, arguments)\r\n },\r\n space: noop,\r\n home: noop,\r\n end: noop\r\n })\r\n },\r\n _allowSelectItemByTab: function() {\r\n return this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")\r\n },\r\n _setSelectedElement: function($element) {\r\n var value = this._valueGetter(this._list._getItemData($element));\r\n this._setValue(value)\r\n },\r\n _setValue: function(value) {\r\n this.option(\"value\", value)\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), extend(DataExpressionMixin._dataExpressionDefaultOptions(), {\r\n displayValue: void 0,\r\n searchEnabled: false,\r\n searchMode: \"contains\",\r\n searchTimeout: 500,\r\n minSearchLength: 0,\r\n searchExpr: null,\r\n valueChangeEvent: \"input change keyup\",\r\n selectedItem: null,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n encodeNoDataText: false,\r\n onSelectionChanged: null,\r\n onItemClick: noop,\r\n showDataBeforeSearch: false,\r\n grouped: false,\r\n groupTemplate: \"group\",\r\n popupPosition: {\r\n my: \"left top\",\r\n at: \"left bottom\",\r\n offset: {\r\n h: 0,\r\n v: 0\r\n },\r\n collision: \"flip\"\r\n },\r\n wrapItemText: false,\r\n useItemTextAsTitle: false\r\n }))\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n popupPosition: {\r\n offset: {\r\n v: -1\r\n }\r\n }\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom center\"\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n value: true,\r\n selectedItem: true,\r\n displayValue: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initDataExpressions();\r\n this._initActions();\r\n this._setListDataSource();\r\n this._validateSearchMode();\r\n this._clearSelectedItem();\r\n this._initItems()\r\n },\r\n _setListFocusedElementOptionChange: function() {\r\n this._list._updateParentActiveDescendant = this._updateActiveDescendant.bind(this)\r\n },\r\n _initItems: function() {\r\n var items = this.option().items;\r\n if (items && !items.length && this._dataSource) {\r\n this.option().items = this._dataSource.items()\r\n }\r\n },\r\n _initActions: function() {\r\n this._initContentReadyAction();\r\n this._initSelectionChangedAction();\r\n this._initItemClickAction()\r\n },\r\n _initContentReadyAction: function() {\r\n this._contentReadyAction = this._createActionByOption(\"onContentReady\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initSelectionChangedAction: function() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _initItemClickAction: function() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new ChildDefaultTemplate(\"item\")\r\n })\r\n },\r\n _isEditable: function() {\r\n return this.callBase() || this.option(\"searchEnabled\")\r\n },\r\n _saveFocusOnWidget: function(e) {\r\n if (this._list && this._list.initialOption(\"focusStateEnabled\")) {\r\n this._focusInput()\r\n }\r\n },\r\n _fitIntoRange: function(value, start, end) {\r\n if (value > end) {\r\n return start\r\n }\r\n if (value < start) {\r\n return end\r\n }\r\n return value\r\n },\r\n _items: function() {\r\n var items = this._getPlainItems(!this._list && this._dataSource.items());\r\n var availableItems = new dataQuery(items).filter(\"disabled\", \"<>\", true).toArray();\r\n return availableItems\r\n },\r\n _calcNextItem: function(step) {\r\n var items = this._items();\r\n var nextIndex = this._fitIntoRange(this._getSelectedIndex() + step, 0, items.length - 1);\r\n return items[nextIndex]\r\n },\r\n _getSelectedIndex: function() {\r\n var items = this._items();\r\n var selectedItem = this.option(\"selectedItem\");\r\n var result = -1;\r\n each(items, function(index, item) {\r\n if (this._isValueEquals(item, selectedItem)) {\r\n result = index;\r\n return false\r\n }\r\n }.bind(this));\r\n return result\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._updateCustomBoundaryContainer();\r\n this._popup.$wrapper().addClass(this._popupWrapperClass());\r\n var $popupContent = this._popup.$content();\r\n eventsEngine.off($popupContent, \"mouseup\");\r\n eventsEngine.on($popupContent, \"mouseup\", this._saveFocusOnWidget.bind(this))\r\n },\r\n _updateCustomBoundaryContainer: function() {\r\n var customContainer = this.option(\"dropDownOptions.container\");\r\n var $container = customContainer && $(customContainer);\r\n if ($container && $container.length && !isWindow($container.get(0))) {\r\n var $containerWithParents = [].slice.call($container.parents());\r\n $containerWithParents.unshift($container.get(0));\r\n each($containerWithParents, function(i, parent) {\r\n if (parent === $(\"body\").get(0)) {\r\n return false\r\n } else if (\"hidden\" === window.getComputedStyle(parent).overflowY) {\r\n this._$customBoundaryContainer = $(parent);\r\n return false\r\n }\r\n }.bind(this))\r\n }\r\n },\r\n _popupWrapperClass: function() {\r\n return DROPDOWNLIST_POPUP_WRAPPER_CLASS\r\n },\r\n _renderInputValue: function() {\r\n var value = this._getCurrentValue();\r\n this._rejectValueLoading();\r\n return this._loadInputValue(value, this._setSelectedItem.bind(this)).always(this.callBase.bind(this, value))\r\n },\r\n _loadInputValue: function(value, callback) {\r\n return this._loadItem(value).always(callback)\r\n },\r\n _getItemFromPlain: function(value, cache) {\r\n var plainItems;\r\n var selectedItem;\r\n if (cache && \"object\" !== typeof value) {\r\n if (!cache.itemByValue) {\r\n cache.itemByValue = {};\r\n plainItems = this._getPlainItems();\r\n plainItems.forEach((function(item) {\r\n cache.itemByValue[this._valueGetter(item)] = item\r\n }), this)\r\n }\r\n selectedItem = cache.itemByValue[value]\r\n }\r\n if (!selectedItem) {\r\n plainItems = this._getPlainItems();\r\n selectedItem = grep(plainItems, function(item) {\r\n return this._isValueEquals(this._valueGetter(item), value)\r\n }.bind(this))[0]\r\n }\r\n return selectedItem\r\n },\r\n _loadItem: function(value, cache) {\r\n var selectedItem = this._getItemFromPlain(value, cache);\r\n return void 0 !== selectedItem ? (new Deferred).resolve(selectedItem).promise() : this._loadValue(value)\r\n },\r\n _getPlainItems: function(items) {\r\n var plainItems = [];\r\n items = items || this.option(\"items\") || this._dataSource.items() || [];\r\n for (var i = 0; i < items.length; i++) {\r\n if (items[i] && items[i].items) {\r\n plainItems = plainItems.concat(items[i].items)\r\n } else {\r\n plainItems.push(items[i])\r\n }\r\n }\r\n return plainItems\r\n },\r\n _updateActiveDescendant() {\r\n var _this$_list;\r\n var opened = this.option(\"opened\");\r\n var listFocusedItemId = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.getFocusedItemId();\r\n var isElementOnDom = $(\"#\".concat(listFocusedItemId)).length > 0;\r\n var activedescendant = opened && isElementOnDom && listFocusedItemId;\r\n this.setAria({\r\n activedescendant: activedescendant || null\r\n })\r\n },\r\n _setSelectedItem: function(item) {\r\n var displayValue = this._displayValue(item);\r\n this.option(\"selectedItem\", ensureDefined(item, null));\r\n this.option(\"displayValue\", displayValue)\r\n },\r\n _displayValue: function(item) {\r\n return this._displayGetter(item)\r\n },\r\n _refreshSelected: function() {\r\n var cache = {};\r\n this._listItemElements().each(function(_, itemElement) {\r\n var $itemElement = $(itemElement);\r\n var itemValue = this._valueGetter($itemElement.data(LIST_ITEM_DATA_KEY));\r\n var isItemSelected = this._isSelectedValue(itemValue, cache);\r\n if (isItemSelected) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n }.bind(this))\r\n },\r\n _popupShownHandler: function() {\r\n this.callBase();\r\n this._setFocusPolicy()\r\n },\r\n _setFocusPolicy: function() {\r\n if (!this.option(\"focusStateEnabled\") || !this._list) {\r\n return\r\n }\r\n this._list.option(\"focusedElement\", null)\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _validateSearchMode: function() {\r\n var searchMode = this.option(\"searchMode\");\r\n var normalizedSearchMode = searchMode.toLowerCase();\r\n if (!SEARCH_MODES.includes(normalizedSearchMode)) {\r\n throw errors.Error(\"E1019\", searchMode)\r\n }\r\n },\r\n _clearSelectedItem: function() {\r\n this.option(\"selectedItem\", null)\r\n },\r\n _processDataSourceChanging: function() {\r\n this._initDataController();\r\n this._setListOption(\"_dataController\", this._dataController);\r\n this._setListDataSource();\r\n this._renderInputValue().fail(function() {\r\n if (this._isCustomValueAllowed()) {\r\n return\r\n }\r\n this._clearSelectedItem()\r\n }.bind(this))\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"displayCustomValue\")\r\n },\r\n reset: function() {\r\n this.callBase();\r\n this._clearFilter();\r\n this._clearSelectedItem()\r\n },\r\n _listItemElements: function() {\r\n return this._$list ? this._$list.find(LIST_ITEM_SELECTOR) : $()\r\n },\r\n _popupConfig: function() {\r\n return extend(this.callBase(), {\r\n templatesRenderAsynchronously: false,\r\n autoResizeEnabled: false,\r\n maxHeight: this._getMaxHeight.bind(this)\r\n })\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._renderList()\r\n },\r\n _getKeyboardListeners() {\r\n var canListHaveFocus = this._canListHaveFocus();\r\n return this.callBase().concat([!canListHaveFocus && this._list])\r\n },\r\n _renderList: function() {\r\n this._listId = \"dx-\" + (new Guid)._value;\r\n var $list = $(\"<div>\").attr(\"id\", this._listId).appendTo(this._popup.$content());\r\n this._$list = $list;\r\n this._list = this._createComponent($list, List, this._listConfig());\r\n this._refreshList();\r\n this._renderPreventBlurOnListClick();\r\n this._setListFocusedElementOptionChange()\r\n },\r\n _renderPreventBlurOnListClick: function() {\r\n var eventName = addNamespace(\"mousedown\", \"dxDropDownList\");\r\n eventsEngine.off(this._$list, eventName);\r\n eventsEngine.on(this._$list, eventName, e => e.preventDefault())\r\n },\r\n _getControlsAria() {\r\n return this._list && this._listId\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n this._list && this._updateActiveDescendant();\r\n this.setAria(\"owns\", this._popup && this._popupContentId)\r\n },\r\n _setDefaultAria: function() {\r\n this.setAria({\r\n haspopup: \"listbox\",\r\n autocomplete: \"list\"\r\n })\r\n },\r\n _refreshList: function() {\r\n if (this._list && this._shouldRefreshDataSource()) {\r\n this._setListDataSource()\r\n }\r\n },\r\n _shouldRefreshDataSource: function() {\r\n var dataSourceProvided = !!this._list.option(\"dataSource\");\r\n return dataSourceProvided !== this._needPassDataSourceToList()\r\n },\r\n _isDesktopDevice: function() {\r\n return \"desktop\" === devices.real().deviceType\r\n },\r\n _listConfig: function() {\r\n var options = {\r\n selectionMode: \"single\",\r\n _templates: this.option(\"_templates\"),\r\n templateProvider: this.option(\"templateProvider\"),\r\n noDataText: this.option(\"noDataText\"),\r\n encodeNoDataText: this.option(\"encodeNoDataText\"),\r\n grouped: this.option(\"grouped\"),\r\n wrapItemText: this.option(\"wrapItemText\"),\r\n useItemTextAsTitle: this.option(\"useItemTextAsTitle\"),\r\n onContentReady: this._listContentReadyHandler.bind(this),\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n indicateLoading: false,\r\n keyExpr: this._getCollectionKeyExpr(),\r\n displayExpr: this._displayGetterExpr(),\r\n groupTemplate: this.option(\"groupTemplate\"),\r\n onItemClick: this._listItemClickAction.bind(this),\r\n dataSource: this._getDataSource(),\r\n _dataController: this._dataController,\r\n hoverStateEnabled: this._isDesktopDevice() ? this.option(\"hoverStateEnabled\") : false,\r\n focusStateEnabled: this._isDesktopDevice() ? this.option(\"focusStateEnabled\") : false\r\n };\r\n if (!this._canListHaveFocus()) {\r\n options.tabIndex = null\r\n }\r\n return options\r\n },\r\n _canListHaveFocus: () => false,\r\n _getDataSource: function() {\r\n return this._needPassDataSourceToList() ? this._dataSource : null\r\n },\r\n _dataSourceOptions: function() {\r\n return {\r\n paginate: false\r\n }\r\n },\r\n _getGroupedOption: function() {\r\n return this.option(\"grouped\")\r\n },\r\n _dataSourceFromUrlLoadMode: function() {\r\n return \"raw\"\r\n },\r\n _listContentReadyHandler: function() {\r\n this._list = this._list || this._$list.dxList(\"instance\");\r\n if (!this.option(\"deferRendering\")) {\r\n this._refreshSelected()\r\n }\r\n this._updatePopupWidth();\r\n this._updateListDimensions();\r\n this._contentReadyAction()\r\n },\r\n _setListOption: function(optionName, value) {\r\n this._setWidgetOption(\"_list\", arguments)\r\n },\r\n _listItemClickAction: function(e) {\r\n this._listItemClickHandler(e);\r\n this._itemClickAction(e)\r\n },\r\n _listItemClickHandler: noop,\r\n _setListDataSource: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n this._setListOption(\"dataSource\", this._getDataSource());\r\n if (!this._needPassDataSourceToList()) {\r\n this._setListOption(\"items\", [])\r\n }\r\n },\r\n _needPassDataSourceToList: function() {\r\n return this.option(\"showDataBeforeSearch\") || this._isMinSearchLengthExceeded()\r\n },\r\n _isMinSearchLengthExceeded: function() {\r\n return this._searchValue().toString().length >= this.option(\"minSearchLength\")\r\n },\r\n _needClearFilter: function() {\r\n return this._canKeepDataSource() ? false : this._needPassDataSourceToList()\r\n },\r\n _canKeepDataSource: function() {\r\n var isMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n return this._dataController.isLoaded() && this.option(\"showDataBeforeSearch\") && this.option(\"minSearchLength\") && !isMinSearchLengthExceeded && !this._isLastMinSearchLengthExceeded\r\n },\r\n _searchValue: function() {\r\n return this._input().val() || \"\"\r\n },\r\n _getSearchEvent: function() {\r\n return addNamespace(SEARCH_EVENT, this.NAME + \"Search\")\r\n },\r\n _getCompositionStartEvent: function() {\r\n return addNamespace(\"compositionstart\", this.NAME + \"CompositionStart\")\r\n },\r\n _getCompositionEndEvent: function() {\r\n return addNamespace(\"compositionend\", this.NAME + \"CompositionEnd\")\r\n },\r\n _getSetFocusPolicyEvent: function() {\r\n return addNamespace(\"input\", this.NAME + \"FocusPolicy\")\r\n },\r\n _renderEvents: function() {\r\n this.callBase();\r\n eventsEngine.on(this._input(), this._getSetFocusPolicyEvent(), () => {\r\n this._setFocusPolicy()\r\n });\r\n if (this._shouldRenderSearchEvent()) {\r\n eventsEngine.on(this._input(), this._getSearchEvent(), e => {\r\n this._searchHandler(e)\r\n });\r\n if (useCompositionEvents) {\r\n eventsEngine.on(this._input(), this._getCompositionStartEvent(), () => {\r\n this._isTextCompositionInProgress(true)\r\n });\r\n eventsEngine.on(this._input(), this._getCompositionEndEvent(), e => {\r\n this._isTextCompositionInProgress(void 0);\r\n this._searchHandler(e, this._searchValue())\r\n })\r\n }\r\n }\r\n },\r\n _shouldRenderSearchEvent: function() {\r\n return this.option(\"searchEnabled\")\r\n },\r\n _refreshEvents: function() {\r\n eventsEngine.off(this._input(), this._getSearchEvent());\r\n eventsEngine.off(this._input(), this._getSetFocusPolicyEvent());\r\n if (useCompositionEvents) {\r\n eventsEngine.off(this._input(), this._getCompositionStartEvent());\r\n eventsEngine.off(this._input(), this._getCompositionEndEvent())\r\n }\r\n this.callBase()\r\n },\r\n _isTextCompositionInProgress: function(value) {\r\n if (arguments.length) {\r\n this._isTextComposition = value\r\n } else {\r\n return this._isTextComposition\r\n }\r\n },\r\n _searchHandler: function(e, searchValue) {\r\n if (this._isTextCompositionInProgress()) {\r\n return\r\n }\r\n if (!this._isMinSearchLengthExceeded()) {\r\n this._searchCanceled();\r\n return\r\n }\r\n var searchTimeout = this.option(\"searchTimeout\");\r\n if (searchTimeout) {\r\n this._clearSearchTimer();\r\n this._searchTimer = setTimeout(() => {\r\n this._searchDataSource(searchValue)\r\n }, searchTimeout)\r\n } else {\r\n this._searchDataSource(searchValue)\r\n }\r\n },\r\n _searchCanceled: function() {\r\n this._clearSearchTimer();\r\n if (this._needClearFilter()) {\r\n this._filterDataSource(null)\r\n }\r\n this._refreshList()\r\n },\r\n _searchDataSource: function() {\r\n var searchValue = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._searchValue();\r\n this._filterDataSource(searchValue)\r\n },\r\n _filterDataSource: function(searchValue) {\r\n this._clearSearchTimer();\r\n var dataController = this._dataController;\r\n dataController.searchExpr(this.option(\"searchExpr\") || this._displayGetterExpr());\r\n dataController.searchOperation(this.option(\"searchMode\"));\r\n dataController.searchValue(searchValue);\r\n dataController.load().done(this._dataSourceFiltered.bind(this, searchValue))\r\n },\r\n _clearFilter: function() {\r\n var dataController = this._dataController;\r\n dataController.searchValue() && dataController.searchValue(null)\r\n },\r\n _dataSourceFiltered: function() {\r\n this._isLastMinSearchLengthExceeded = this._isMinSearchLengthExceeded();\r\n this._refreshList();\r\n this._refreshPopupVisibility()\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._hasItemsToShow()\r\n },\r\n _refreshPopupVisibility: function() {\r\n if (this.option(\"readOnly\") || !this._searchValue()) {\r\n return\r\n }\r\n var shouldOpenPopup = this._shouldOpenPopup();\r\n if (shouldOpenPopup && !this._isFocused()) {\r\n return\r\n }\r\n this.option(\"opened\", shouldOpenPopup);\r\n if (shouldOpenPopup) {\r\n this._updatePopupWidth();\r\n this._updateListDimensions()\r\n }\r\n },\r\n _dataSourceChangedHandler: function(newItems) {\r\n if (0 === this._dataController.pageIndex()) {\r\n this.option().items = newItems\r\n } else {\r\n this.option().items = this.option().items.concat(newItems)\r\n }\r\n },\r\n _hasItemsToShow: function() {\r\n var dataController = this._dataController;\r\n var resultItems = dataController.items() || [];\r\n var resultAmount = resultItems.length;\r\n var isMinSearchLengthExceeded = this._needPassDataSourceToList();\r\n return !!(isMinSearchLengthExceeded && resultAmount)\r\n },\r\n _clearSearchTimer: function() {\r\n clearTimeout(this._searchTimer);\r\n delete this._searchTimer\r\n },\r\n _popupShowingHandler: function() {\r\n this._updatePopupWidth();\r\n this._updateListDimensions()\r\n },\r\n _dimensionChanged: function() {\r\n this.callBase();\r\n this._updateListDimensions()\r\n },\r\n _needPopupRepaint: function() {\r\n var dataController = this._dataController;\r\n var currentPageIndex = dataController.pageIndex();\r\n var needRepaint = isDefined(this._pageIndex) && currentPageIndex <= this._pageIndex || dataController.isLastPage() && !this._list._scrollViewIsFull();\r\n this._pageIndex = currentPageIndex;\r\n return needRepaint\r\n },\r\n _updateListDimensions: function() {\r\n if (!this._popup) {\r\n return\r\n }\r\n if (this._needPopupRepaint()) {\r\n this._popup.repaint()\r\n }\r\n this._list && this._list.updateDimensions()\r\n },\r\n _getMaxHeight: function() {\r\n var $element = this.$element();\r\n var $customBoundaryContainer = this._$customBoundaryContainer;\r\n var offsetTop = $element.offset().top - ($customBoundaryContainer ? $customBoundaryContainer.offset().top : 0);\r\n var windowHeight = getOuterHeight(window);\r\n var containerHeight = $customBoundaryContainer ? Math.min(getOuterHeight($customBoundaryContainer), windowHeight) : windowHeight;\r\n var maxHeight = Math.max(offsetTop, containerHeight - offsetTop - getOuterHeight($element));\r\n return Math.min(.5 * containerHeight, maxHeight)\r\n },\r\n _clean: function() {\r\n if (this._list) {\r\n delete this._list\r\n }\r\n delete this._isLastMinSearchLengthExceeded;\r\n this.callBase()\r\n },\r\n _dispose: function() {\r\n this._clearSearchTimer();\r\n this.callBase()\r\n },\r\n _setCollectionWidgetOption: function() {\r\n this._setListOption.apply(this, arguments)\r\n },\r\n _setSubmitValue: function() {\r\n var value = this.option(\"value\");\r\n var submitValue = this._shouldUseDisplayValue(value) ? this._displayGetter(value) : value;\r\n this._getSubmitElement().val(submitValue)\r\n },\r\n _shouldUseDisplayValue: function(value) {\r\n return \"this\" === this.option(\"valueExpr\") && isObject(value)\r\n },\r\n _optionChanged: function(args) {\r\n this._dataExpressionOptionChanged(args);\r\n switch (args.name) {\r\n case \"hoverStateEnabled\":\r\n case \"focusStateEnabled\":\r\n this._isDesktopDevice() && this._setListOption(args.name, args.value);\r\n this.callBase(args);\r\n break;\r\n case \"items\":\r\n if (!this.option(\"dataSource\")) {\r\n this._processDataSourceChanging()\r\n }\r\n break;\r\n case \"dataSource\":\r\n this._processDataSourceChanging();\r\n break;\r\n case \"valueExpr\":\r\n this._renderValue();\r\n this._setListOption(\"keyExpr\", this._getCollectionKeyExpr());\r\n break;\r\n case \"displayExpr\":\r\n this._renderValue();\r\n this._setListOption(\"displayExpr\", this._displayGetterExpr());\r\n break;\r\n case \"searchMode\":\r\n this._validateSearchMode();\r\n break;\r\n case \"minSearchLength\":\r\n this._refreshList();\r\n break;\r\n case \"searchEnabled\":\r\n case \"showDataBeforeSearch\":\r\n case \"searchExpr\":\r\n this._invalidate();\r\n break;\r\n case \"onContentReady\":\r\n this._initContentReadyAction();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._initSelectionChangedAction();\r\n break;\r\n case \"onItemClick\":\r\n this._initItemClickAction();\r\n break;\r\n case \"grouped\":\r\n case \"groupTemplate\":\r\n case \"wrapItemText\":\r\n case \"noDataText\":\r\n case \"encodeNoDataText\":\r\n case \"useItemTextAsTitle\":\r\n this._setListOption(args.name);\r\n break;\r\n case \"displayValue\":\r\n this.option(\"text\", args.value);\r\n break;\r\n case \"itemTemplate\":\r\n case \"searchTimeout\":\r\n break;\r\n case \"selectedItem\":\r\n if (args.previousValue !== args.value) {\r\n this._selectionChangedAction({\r\n selectedItem: args.value\r\n })\r\n }\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n}).include(DataExpressionMixin, DataConverterMixin);\r\nregisterComponent(\"dxDropDownList\", DropDownList);\r\nexport default DropDownList;\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/editors/editor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport Component from \"../common/component\";\r\nimport ValidationEngine from \"../../../ui/validation_engine\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n data\r\n} from \"../../../core/element_data\";\r\nimport Callbacks from \"../../../core/utils/callbacks\";\r\nimport OldEditor from \"../../../ui/editor/editor\";\r\nimport {\r\n querySelectorInSameDocument\r\n} from \"../../utils/dom\";\r\nvar INVALID_MESSAGE_AUTO = \"dx-invalid-message-auto\";\r\nvar VALIDATION_TARGET = \"dx-validation-target\";\r\nexport default class Editor extends Component {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onFocusIn = () => {\r\n var isValidationMessageShownOnFocus = \"auto\" === this.option(\"validationMessageMode\");\r\n if (isValidationMessageShownOnFocus) {\r\n var $validationMessageWrapper = $(querySelectorInSameDocument(this.element(), \".dx-invalid-message.dx-overlay-wrapper\"));\r\n null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.removeClass(INVALID_MESSAGE_AUTO);\r\n if (this.showValidationMessageTimeout) {\r\n clearTimeout(this.showValidationMessageTimeout)\r\n }\r\n this.showValidationMessageTimeout = setTimeout(() => {\r\n null === $validationMessageWrapper || void 0 === $validationMessageWrapper ? void 0 : $validationMessageWrapper.addClass(INVALID_MESSAGE_AUTO)\r\n }, 150)\r\n }\r\n };\r\n props.saveValueChangeEvent = e => {\r\n this._valueChangeEventInstance = e\r\n };\r\n return props\r\n }\r\n _createElement(element) {\r\n super._createElement(element);\r\n this.showValidationMessageTimeout = void 0;\r\n this.validationRequest = Callbacks();\r\n data(this.$element()[0], VALIDATION_TARGET, this)\r\n }\r\n _render() {\r\n var _this$option;\r\n null === (_this$option = this.option(\"_onMarkupRendered\")) || void 0 === _this$option ? void 0 : _this$option()\r\n }\r\n _initializeComponent() {\r\n super._initializeComponent();\r\n this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }\r\n _initOptions(options) {\r\n super._initOptions(options);\r\n this.option(ValidationEngine.initValidationOptions(options))\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n validationMessageOffset: {\r\n h: 0,\r\n v: 0\r\n },\r\n validationTooltipOptions: {}\r\n })\r\n }\r\n _bindInnerWidgetOptions(innerWidget, optionsContainer) {\r\n var innerWidgetOptions = extend({}, innerWidget.option());\r\n var syncOptions = () => this._silent(optionsContainer, innerWidgetOptions);\r\n syncOptions();\r\n innerWidget.on(\"optionChanged\", syncOptions)\r\n }\r\n _raiseValidation(value, previousValue) {\r\n var areValuesEmpty = !isDefined(value) && !isDefined(previousValue);\r\n if (value !== previousValue && !areValuesEmpty) {\r\n this.validationRequest.fire({\r\n value: value,\r\n editor: this\r\n })\r\n }\r\n }\r\n _raiseValueChangeAction(value, previousValue) {\r\n var _this$_valueChangeAct;\r\n null === (_this$_valueChangeAct = this._valueChangeAction) || void 0 === _this$_valueChangeAct ? void 0 : _this$_valueChangeAct.call(this, {\r\n element: this.$element(),\r\n previousValue: previousValue,\r\n value: value,\r\n event: this._valueChangeEventInstance\r\n });\r\n this._valueChangeEventInstance = void 0\r\n }\r\n _optionChanged(option) {\r\n var {\r\n name: name,\r\n previousValue: previousValue,\r\n value: value\r\n } = option;\r\n if (name && void 0 !== this._getActionConfigs()[name]) {\r\n this._addAction(name)\r\n }\r\n switch (name) {\r\n case \"value\":\r\n this._raiseValidation(value, previousValue);\r\n this._raiseValueChangeAction(value, previousValue);\r\n break;\r\n case \"onValueChanged\":\r\n this._valueChangeAction = this._createActionByOption(\"onValueChanged\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n });\r\n break;\r\n case \"isValid\":\r\n case \"validationError\":\r\n case \"validationErrors\":\r\n case \"validationStatus\":\r\n this.option(ValidationEngine.synchronizeValidationOptions(option, this.option()))\r\n }\r\n super._optionChanged(option)\r\n }\r\n reset() {\r\n var {\r\n value: value\r\n } = this._getDefaultOptions();\r\n this.option({\r\n value: value\r\n })\r\n }\r\n _dispose() {\r\n super._dispose();\r\n data(this.element(), VALIDATION_TARGET, null);\r\n if (this.showValidationMessageTimeout) {\r\n clearTimeout(this.showValidationMessageTimeout)\r\n }\r\n }\r\n}\r\nvar prevIsEditor = OldEditor.isEditor;\r\nvar newIsEditor = instance => prevIsEditor(instance) || instance instanceof Editor;\r\nEditor.isEditor = newIsEditor;\r\nOldEditor.isEditor = newIsEditor;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/dom.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function querySelectorInSameDocument(el, selector) {\r\n var _el$getRootNode, _el$getRootNode2;\r\n var root = null !== (_el$getRootNode = null === (_el$getRootNode2 = el.getRootNode) || void 0 === _el$getRootNode2 ? void 0 : _el$getRootNode2.call(el)) && void 0 !== _el$getRootNode ? _el$getRootNode : document;\r\n return root.querySelector(selector)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/editors/check_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Editor from \"./editor\";\r\nexport default class CheckBox extends Editor {\r\n _useTemplates() {\r\n return false\r\n }\r\n _isFocused() {\r\n var focusTarget = this.$element()[0];\r\n return focusTarget.classList.contains(\"dx-state-focused\")\r\n }\r\n getSupportedKeyNames() {\r\n return [\"space\"]\r\n }\r\n getProps() {\r\n var props = super.getProps();\r\n if (null !== props.value) {\r\n props.value = Boolean(props.value)\r\n }\r\n return props\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/utils/get_updated_options.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isPlainObject,\r\n type\r\n} from \"../../../../core/utils/type\";\r\nvar defaultNotDeepCopyArrays = [\"dataSource\", \"selectedRowKeys\"];\r\nvar propsToIgnore = {\r\n integrationOptions: true\r\n};\r\n\r\nfunction getDiffItem(key, value, previousValue) {\r\n return {\r\n path: key,\r\n value: value,\r\n previousValue: previousValue\r\n }\r\n}\r\n\r\nfunction compare(resultPaths, item1, item2, key, fullPropName, notDeepCopyArrays) {\r\n if (propsToIgnore[key]) {\r\n return\r\n }\r\n var type1 = type(item1);\r\n var type2 = type(item2);\r\n if (item1 === item2) {\r\n return\r\n }\r\n if (type1 !== type2) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else if (\"object\" === type1) {\r\n if (!isPlainObject(item2)) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else {\r\n var diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays);\r\n resultPaths.push(...diffPaths.map(item => _extends({}, item, {\r\n path: \"\".concat(key, \".\").concat(item.path)\r\n })))\r\n }\r\n } else if (\"array\" === type1) {\r\n var notDeepCopy = notDeepCopyArrays.some(prop => fullPropName.includes(prop));\r\n if (notDeepCopy && item1 !== item2) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else if (item1.length !== item2.length) {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n } else {\r\n var _diffPaths = objectDiffs(item1, item2, fullPropName, notDeepCopyArrays);\r\n [].push.apply(resultPaths, _diffPaths.map(item => _extends({}, item, {\r\n path: \"\".concat(key).concat(item.path)\r\n })))\r\n }\r\n } else {\r\n resultPaths.push(getDiffItem(key, item2, item1))\r\n }\r\n}\r\nvar objectDiffsFiltered = propsEnumerator => (oldProps, props, fullPropName, notDeepCopyArrays) => {\r\n var resultPaths = [];\r\n var processItem = !Array.isArray(oldProps) ? propName => {\r\n compare(resultPaths, oldProps[propName], props[propName], propName, \"\".concat(fullPropName, \".\").concat(propName), notDeepCopyArrays)\r\n } : propName => {\r\n compare(resultPaths, oldProps[propName], props[propName], \"[\".concat(propName, \"]\"), \"\".concat(fullPropName, \".\").concat(propName), notDeepCopyArrays)\r\n };\r\n propsEnumerator(oldProps).forEach(processItem);\r\n Object.keys(props).filter(propName => !Object.prototype.hasOwnProperty.call(oldProps, propName) && oldProps[propName] !== props[propName]).forEach(propName => {\r\n resultPaths.push({\r\n path: propName,\r\n value: props[propName],\r\n previousValue: oldProps[propName]\r\n })\r\n });\r\n return resultPaths\r\n};\r\nvar objectDiffs = objectDiffsFiltered(oldProps => Object.keys(oldProps));\r\nvar reactProps = {\r\n key: true,\r\n ref: true,\r\n children: true,\r\n style: true\r\n};\r\nvar objectDiffsWithoutReactProps = objectDiffsFiltered(prop => Object.keys(prop).filter(p => !reactProps[p]));\r\nexport function getUpdatedOptions(oldProps, props) {\r\n var notDeepCopyArrays = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : defaultNotDeepCopyArrays;\r\n return objectDiffsWithoutReactProps(oldProps, props, \"\", notDeepCopyArrays)\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/dom_component_wrapper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"valueChange\"],\r\n _excluded2 = [\"componentProps\", \"componentType\", \"templateNames\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n renderTemplate,\r\n hasTemplate\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n ConfigContext\r\n} from \"../../common/config_context\";\r\nimport {\r\n getUpdatedOptions\r\n} from \"./utils/get_updated_options\";\r\nvar normalizeProps = props => Object.keys(props).reduce((accumulator, key) => {\r\n if (void 0 !== props[key]) {\r\n accumulator[key] = props[key]\r\n }\r\n return accumulator\r\n}, {});\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n componentProps: {\r\n className: className\r\n }\r\n },\r\n restAttributes: restAttributes,\r\n widgetRef: widgetRef\r\n } = _ref;\r\n return normalizeProps(createVNode(1, \"div\", className, null, 1, _extends({}, restAttributes), null, widgetRef))\r\n};\r\nexport var DomComponentWrapperProps = {};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class DomComponentWrapper extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.widgetRef = infernoCreateRef();\r\n this.getInstance = this.getInstance.bind(this);\r\n this.setupWidget = this.setupWidget.bind(this);\r\n this.updateWidget = this.updateWidget.bind(this)\r\n }\r\n get config() {\r\n if (this.context[ConfigContext.id]) {\r\n return this.context[ConfigContext.id]\r\n }\r\n return ConfigContext.defaultValue\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.setupWidget, []), new InfernoEffect(this.updateWidget, [this.props.componentProps, this.config, this.props.templateNames])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[1]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.componentProps, this.config, this.props.templateNames])\r\n }\r\n setupWidget() {\r\n var componentInstance = new this.props.componentType(this.widgetRef.current, this.properties);\r\n this.instance = componentInstance;\r\n return () => {\r\n componentInstance.dispose();\r\n this.instance = null\r\n }\r\n }\r\n updateWidget() {\r\n var instance = this.getInstance();\r\n if (!instance) {\r\n return\r\n }\r\n var updatedOptions = getUpdatedOptions(this.prevProps || {}, this.properties);\r\n if (updatedOptions.length) {\r\n instance.beginUpdate();\r\n updatedOptions.forEach(_ref2 => {\r\n var {\r\n path: path,\r\n value: value\r\n } = _ref2;\r\n instance.option(path, value)\r\n });\r\n instance.endUpdate()\r\n }\r\n this.prevProps = this.properties\r\n }\r\n get properties() {\r\n var _this$config;\r\n var normalizedProps = normalizeProps(this.props.componentProps);\r\n var {\r\n valueChange: valueChange\r\n } = normalizedProps, restProps = _objectWithoutPropertiesLoose(normalizedProps, _excluded);\r\n var properties = _extends({\r\n rtlEnabled: !!(null !== (_this$config = this.config) && void 0 !== _this$config && _this$config.rtlEnabled),\r\n isRenovated: true\r\n }, restProps);\r\n if (valueChange) {\r\n properties.onValueChanged = _ref3 => {\r\n var {\r\n value: value\r\n } = _ref3;\r\n return valueChange(value)\r\n }\r\n }\r\n var templates = this.props.templateNames;\r\n templates.forEach(name => {\r\n if (hasTemplate(name, properties, this)) {\r\n properties[name] = (item, index, container) => {\r\n renderTemplate(this.props.componentProps[name], {\r\n item: item,\r\n index: index,\r\n container: container\r\n }, this)\r\n }\r\n }\r\n });\r\n return properties\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded2);\r\n return restProps\r\n }\r\n getInstance() {\r\n return this.instance\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n widgetRef: this.widgetRef,\r\n config: this.config,\r\n properties: this.properties,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDomComponentWrapper.defaultProps = DomComponentWrapperProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/overlays/validation_message.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"boundary\", \"className\", \"contentId\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"mode\", \"offset\", \"onClick\", \"onKeyDown\", \"positionSide\", \"rtlEnabled\", \"tabIndex\", \"target\", \"validationErrors\", \"visible\", \"visualContainer\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport LegacyValidationMessage from \"../../../ui/validation_message\";\r\nimport {\r\n DomComponentWrapper\r\n} from \"../common/dom_component_wrapper\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"../common/base_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n componentProps: componentProps,\r\n restAttributes: restAttributes\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, DomComponentWrapper, _extends({\r\n componentType: LegacyValidationMessage,\r\n componentProps: componentProps,\r\n templateNames: []\r\n }, restAttributes)))\r\n};\r\nexport var ValidationMessageProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n mode: \"auto\",\r\n positionSide: \"top\",\r\n offset: Object.freeze({\r\n h: 0,\r\n v: 0\r\n }),\r\n isReactComponentWrapper: true\r\n})));\r\nexport class ValidationMessage extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get componentProps() {\r\n return this.props\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n componentProps: this.componentProps,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nValidationMessage.defaultProps = ValidationMessageProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/common/editor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"aria\", \"children\", \"className\", \"classes\", \"defaultValue\", \"disabled\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"inputAttr\", \"isValid\", \"name\", \"onClick\", \"onFocusIn\", \"onKeyDown\", \"readOnly\", \"rtlEnabled\", \"tabIndex\", \"validationError\", \"validationErrors\", \"validationMessageMode\", \"validationMessagePosition\", \"validationStatus\", \"value\", \"valueChange\", \"visible\", \"width\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport Guid from \"../../../../core/guid\";\r\nimport {\r\n Widget,\r\n WidgetProps\r\n} from \"../../common/widget\";\r\nimport {\r\n BaseWidgetProps\r\n} from \"../../common/base_props\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n ValidationMessage\r\n} from \"../../overlays/validation_message\";\r\nvar getCssClasses = model => {\r\n var {\r\n classes: classes,\r\n isValid: isValid,\r\n readOnly: readOnly\r\n } = model;\r\n var classesMap = {\r\n \"dx-state-readonly\": !!readOnly,\r\n \"dx-invalid\": !isValid,\r\n [\"\".concat(classes)]: !!classes\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var {\r\n aria: aria,\r\n cssClasses: classes,\r\n isValidationMessageVisible: isValidationMessageVisible,\r\n onFocusIn: onFocusIn,\r\n props: {\r\n accessKey: accessKey,\r\n activeStateEnabled: activeStateEnabled,\r\n children: children,\r\n className: className,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n height: height,\r\n hint: hint,\r\n hoverStateEnabled: hoverStateEnabled,\r\n onClick: onClick,\r\n onKeyDown: onKeyDown,\r\n rtlEnabled: rtlEnabled,\r\n tabIndex: tabIndex,\r\n validationMessageMode: validationMessageMode,\r\n validationMessagePosition: validationMessagePosition,\r\n visible: visible,\r\n width: width\r\n },\r\n restAttributes: restAttributes,\r\n rootElementRef: rootElementRef,\r\n validationErrors: validationErrors,\r\n validationMessageGuid: validationMessageGuid,\r\n validationMessageTarget: validationMessageTarget,\r\n widgetRef: widgetRef\r\n } = viewModel;\r\n return normalizeProps(createComponentVNode(2, Widget, _extends({\r\n rootElementRef: rootElementRef,\r\n aria: aria,\r\n classes: classes,\r\n activeStateEnabled: activeStateEnabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n accessKey: accessKey,\r\n className: className,\r\n rtlEnabled: rtlEnabled,\r\n hint: hint,\r\n disabled: disabled,\r\n height: height,\r\n width: width,\r\n onFocusIn: onFocusIn,\r\n onClick: onClick,\r\n onKeyDown: onKeyDown,\r\n tabIndex: tabIndex,\r\n visible: visible\r\n }, restAttributes, {\r\n children: createFragment([children, isValidationMessageVisible && createComponentVNode(2, ValidationMessage, {\r\n validationErrors: validationErrors,\r\n mode: validationMessageMode,\r\n positionSide: validationMessagePosition,\r\n rtlEnabled: rtlEnabled,\r\n target: validationMessageTarget,\r\n boundary: validationMessageTarget,\r\n visualContainer: validationMessageTarget,\r\n contentId: validationMessageGuid\r\n })], 0)\r\n }), null, widgetRef))\r\n};\r\nexport var EditorProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(BaseWidgetProps), Object.getOwnPropertyDescriptors({\r\n readOnly: false,\r\n name: \"\",\r\n validationError: null,\r\n validationErrors: null,\r\n validationMessageMode: \"auto\",\r\n validationMessagePosition: \"bottom\",\r\n validationStatus: \"valid\",\r\n isValid: true,\r\n inputAttr: Object.freeze({}),\r\n defaultValue: null,\r\n valueChange: () => {}\r\n})));\r\nexport var EditorPropsType = {\r\n get readOnly() {\r\n return EditorProps.readOnly\r\n },\r\n get name() {\r\n return EditorProps.name\r\n },\r\n get validationError() {\r\n return EditorProps.validationError\r\n },\r\n get validationErrors() {\r\n return EditorProps.validationErrors\r\n },\r\n get validationMessageMode() {\r\n return EditorProps.validationMessageMode\r\n },\r\n get validationMessagePosition() {\r\n return EditorProps.validationMessagePosition\r\n },\r\n get validationStatus() {\r\n return EditorProps.validationStatus\r\n },\r\n get isValid() {\r\n return EditorProps.isValid\r\n },\r\n get inputAttr() {\r\n return EditorProps.inputAttr\r\n },\r\n get defaultValue() {\r\n return EditorProps.defaultValue\r\n },\r\n get valueChange() {\r\n return EditorProps.valueChange\r\n },\r\n get className() {\r\n return EditorProps.className\r\n },\r\n get activeStateEnabled() {\r\n return EditorProps.activeStateEnabled\r\n },\r\n get disabled() {\r\n return EditorProps.disabled\r\n },\r\n get focusStateEnabled() {\r\n return EditorProps.focusStateEnabled\r\n },\r\n get hoverStateEnabled() {\r\n return EditorProps.hoverStateEnabled\r\n },\r\n get tabIndex() {\r\n return EditorProps.tabIndex\r\n },\r\n get visible() {\r\n return EditorProps.visible\r\n },\r\n get aria() {\r\n return WidgetProps.aria\r\n },\r\n get classes() {\r\n return WidgetProps.classes\r\n }\r\n};\r\nimport {\r\n convertRulesToOptions\r\n} from \"../../../../core/options/utils\";\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class Editor extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.widgetRef = infernoCreateRef();\r\n this.rootElementRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.state = {\r\n validationMessageGuid: \"dx-\".concat(new Guid),\r\n isValidationMessageVisible: false,\r\n value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue\r\n };\r\n this.updateValidationMessageVisibility = this.updateValidationMessageVisibility.bind(this);\r\n this.focus = this.focus.bind(this);\r\n this.blur = this.blur.bind(this);\r\n this.onFocusIn = this.onFocusIn.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateValidationMessageVisibility, [this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.isValid, this.props.validationStatus, this.props.validationError, this.props.validationErrors])\r\n }\r\n updateValidationMessageVisibility() {\r\n this.setState(__state_argument => ({\r\n isValidationMessageVisible: this.shouldShowValidationMessage\r\n }))\r\n }\r\n onFocusIn(event) {\r\n var {\r\n onFocusIn: onFocusIn\r\n } = this.props;\r\n null === onFocusIn || void 0 === onFocusIn ? void 0 : onFocusIn(event)\r\n }\r\n get cssClasses() {\r\n return \"\".concat(getCssClasses(_extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n })))\r\n }\r\n get shouldShowValidationMessage() {\r\n var _this$validationError;\r\n var {\r\n isValid: isValid,\r\n validationStatus: validationStatus\r\n } = this.props;\r\n var validationErrors = null !== (_this$validationError = this.validationErrors) && void 0 !== _this$validationError ? _this$validationError : [];\r\n var isEditorValid = isValid && \"invalid\" !== validationStatus;\r\n return !isEditorValid && validationErrors.length > 0\r\n }\r\n get aria() {\r\n var {\r\n isValid: isValid,\r\n readOnly: readOnly\r\n } = this.props;\r\n var result = {\r\n readonly: readOnly ? \"true\" : \"false\",\r\n invalid: !isValid ? \"true\" : \"false\"\r\n };\r\n if (this.shouldShowValidationMessage) {\r\n result.describedBy = this.state.validationMessageGuid\r\n }\r\n return _extends({}, result, this.props.aria)\r\n }\r\n get validationErrors() {\r\n if (void 0 !== this.__getterCache.validationErrors) {\r\n return this.__getterCache.validationErrors\r\n }\r\n return this.__getterCache.validationErrors = (() => {\r\n var {\r\n validationError: validationError,\r\n validationErrors: validationErrors\r\n } = this.props;\r\n var allValidationErrors = validationErrors && [...validationErrors];\r\n if (!allValidationErrors && validationError) {\r\n allValidationErrors = [_extends({}, validationError)]\r\n }\r\n return allValidationErrors\r\n })()\r\n }\r\n get validationMessageTarget() {\r\n var _this$rootElementRef;\r\n return null === (_this$rootElementRef = this.rootElementRef) || void 0 === _this$rootElementRef ? void 0 : _this$rootElementRef.current\r\n }\r\n get restAttributes() {\r\n var _this$props$value = _extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$value, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n this.widgetRef.current.focus()\r\n }\r\n blur() {\r\n this.widgetRef.current.blur()\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.validationError !== nextProps.validationError || this.props.validationErrors !== nextProps.validationErrors) {\r\n this.__getterCache.validationErrors = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n validationMessageGuid: this.state.validationMessageGuid,\r\n isValidationMessageVisible: this.state.isValidationMessageVisible,\r\n rootElementRef: this.rootElementRef,\r\n widgetRef: this.widgetRef,\r\n onFocusIn: this.onFocusIn,\r\n cssClasses: this.cssClasses,\r\n shouldShowValidationMessage: this.shouldShowValidationMessage,\r\n aria: this.aria,\r\n validationErrors: this.validationErrors,\r\n validationMessageTarget: this.validationMessageTarget,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\n\r\nfunction __processTwoWayProps(defaultProps) {\r\n var twoWayProps = [\"value\"];\r\n return Object.keys(defaultProps).reduce((props, propName) => {\r\n var propValue = defaultProps[propName];\r\n var defaultPropName = twoWayProps.some(p => p === propName) ? \"default\" + propName.charAt(0).toUpperCase() + propName.slice(1) : propName;\r\n props[defaultPropName] = propValue;\r\n return props\r\n }, {})\r\n}\r\nEditor.defaultProps = EditorPropsType;\r\nvar __defaultOptionRules = [];\r\nexport function defaultOptions(rule) {\r\n __defaultOptionRules.push(rule);\r\n Editor.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(Editor.defaultProps), Object.getOwnPropertyDescriptors(__processTwoWayProps(convertRulesToOptions(__defaultOptionRules)))))\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isMaterial,\r\n isCompact,\r\n current\r\n} from \"../../../../ui/themes\";\r\nvar defaultIconSizes = [\r\n [22, 16],\r\n [18, 16]\r\n];\r\nvar defaultFontSizes = [\r\n [\r\n [12, 8],\r\n [20, 18]\r\n ],\r\n [\r\n [16, 10],\r\n [16, 14]\r\n ]\r\n];\r\n\r\nfunction getThemeType() {\r\n var theme = current();\r\n return {\r\n isMaterialTheme: isMaterial(theme),\r\n isCompactTheme: isCompact(theme)\r\n }\r\n}\r\n\r\nfunction getDefaultIconSize() {\r\n var {\r\n isCompactTheme: isCompactTheme,\r\n isMaterialTheme: isMaterialTheme\r\n } = getThemeType();\r\n return defaultIconSizes[+isMaterialTheme][+isCompactTheme]\r\n}\r\n\r\nfunction getDefaultFontSize(isChecked) {\r\n var {\r\n isCompactTheme: isCompactTheme,\r\n isMaterialTheme: isMaterialTheme\r\n } = getThemeType();\r\n return defaultFontSizes[+isChecked][+isMaterialTheme][+isCompactTheme]\r\n}\r\n\r\nfunction getFontSizeByIconSize(iconSize, isChecked) {\r\n var defaultFontSize = getDefaultFontSize(isChecked);\r\n var defaultIconSize = getDefaultIconSize();\r\n var fontToIconSizeRatio = defaultFontSize / defaultIconSize;\r\n return Math.ceil(fontToIconSizeRatio * iconSize)\r\n}\r\nexport {\r\n getDefaultFontSize,\r\n getDefaultIconSize,\r\n getFontSizeByIconSize\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/check_box_icon.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"isChecked\", \"size\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport getElementComputedStyle from \"../../../utils/get_computed_style\";\r\nimport {\r\n hasWindow\r\n} from \"../../../../core/utils/window\";\r\nimport {\r\n normalizeStyleProp\r\n} from \"../../../../core/utils/style\";\r\nimport {\r\n isNumeric as isNumber\r\n} from \"../../../../core/utils/type\";\r\nimport {\r\n getFontSizeByIconSize\r\n} from \"./utils\";\r\nexport var viewFunction = viewModel => {\r\n var {\r\n cssStyles: cssStyles,\r\n elementRef: elementRef\r\n } = viewModel;\r\n return createVNode(1, \"span\", \"dx-checkbox-icon\", null, 1, {\r\n style: normalizeStyles(cssStyles)\r\n }, null, elementRef)\r\n};\r\nexport var CheckBoxIconProps = {\r\n isChecked: false\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class CheckBoxIcon extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.elementRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.updateFontSize = this.updateFontSize.bind(this);\r\n this.setIconFontSize = this.setIconFontSize.bind(this);\r\n this.getIconSize = this.getIconSize.bind(this);\r\n this.getComputedIconSize = this.getComputedIconSize.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateFontSize, [this.props.isChecked, this.props.size])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.isChecked, this.props.size])\r\n }\r\n updateFontSize() {\r\n var {\r\n isChecked: isChecked,\r\n size: size\r\n } = this.props;\r\n if (hasWindow() && size) {\r\n var newIconSize = this.getIconSize(size);\r\n var newFontSize = getFontSizeByIconSize(newIconSize, isChecked);\r\n this.setIconFontSize(newFontSize)\r\n }\r\n }\r\n setIconFontSize(fontSize) {\r\n var element = this.elementRef.current;\r\n element.style.fontSize = \"\".concat(fontSize, \"px\")\r\n }\r\n getIconSize(size) {\r\n if (isNumber(size)) {\r\n return size\r\n }\r\n if (size.endsWith(\"px\")) {\r\n return parseInt(size, 10)\r\n }\r\n return this.getComputedIconSize()\r\n }\r\n getComputedIconSize() {\r\n var element = this.elementRef.current;\r\n var iconComputedStyle = getElementComputedStyle(element);\r\n var computedIconSize = parseInt(null === iconComputedStyle || void 0 === iconComputedStyle ? void 0 : iconComputedStyle.width, 10);\r\n return computedIconSize\r\n }\r\n get cssStyles() {\r\n if (void 0 !== this.__getterCache.cssStyles) {\r\n return this.__getterCache.cssStyles\r\n }\r\n return this.__getterCache.cssStyles = (() => {\r\n var {\r\n size: size\r\n } = this.props;\r\n var width = normalizeStyleProp(\"width\", size);\r\n var height = normalizeStyleProp(\"height\", size);\r\n return {\r\n height: height,\r\n width: width\r\n }\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.size !== nextProps.size) {\r\n this.__getterCache.cssStyles = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n elementRef: this.elementRef,\r\n setIconFontSize: this.setIconFontSize,\r\n getIconSize: this.getIconSize,\r\n getComputedIconSize: this.getComputedIconSize,\r\n cssStyles: this.cssStyles,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nCheckBoxIcon.defaultProps = CheckBoxIconProps;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/get_computed_style.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nexport default function getElementComputedStyle(el) {\r\n var _window$getComputedSt;\r\n var window = getWindow();\r\n return el ? null === (_window$getComputedSt = window.getComputedStyle) || void 0 === _window$getComputedSt ? void 0 : _window$getComputedSt.call(window, el) : null\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/check_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"accessKey\", \"activeStateEnabled\", \"aria\", \"className\", \"defaultValue\", \"disabled\", \"enableThreeStateBehavior\", \"focusStateEnabled\", \"height\", \"hint\", \"hoverStateEnabled\", \"iconSize\", \"inputAttr\", \"isValid\", \"name\", \"onClick\", \"onFocusIn\", \"onKeyDown\", \"readOnly\", \"rtlEnabled\", \"saveValueChangeEvent\", \"tabIndex\", \"text\", \"validationError\", \"validationErrors\", \"validationMessageMode\", \"validationMessagePosition\", \"validationStatus\", \"value\", \"valueChange\", \"visible\", \"width\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport devices from \"../../../../core/devices\";\r\nimport {\r\n Editor,\r\n EditorProps\r\n} from \"../common/editor\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n CheckBoxIcon\r\n} from \"./check_box_icon\";\r\nimport {\r\n WidgetProps\r\n} from \"../../common/widget\";\r\nvar getCssClasses = model => {\r\n var {\r\n text: text,\r\n value: value\r\n } = model;\r\n var checked = value;\r\n var indeterminate = null === checked;\r\n var classesMap = {\r\n \"dx-checkbox\": true,\r\n \"dx-checkbox-checked\": true === checked,\r\n \"dx-checkbox-has-text\": !!text,\r\n \"dx-checkbox-indeterminate\": indeterminate\r\n };\r\n return combineClasses(classesMap)\r\n};\r\nexport var viewFunction = viewModel => {\r\n var {\r\n aria: aria,\r\n cssClasses: classes,\r\n editorRef: editorRef,\r\n keyDown: onKeyDown,\r\n onWidgetClick: onClick,\r\n props: {\r\n accessKey: accessKey,\r\n activeStateEnabled: activeStateEnabled,\r\n className: className,\r\n disabled: disabled,\r\n focusStateEnabled: focusStateEnabled,\r\n height: height,\r\n hint: hint,\r\n hoverStateEnabled: hoverStateEnabled,\r\n iconSize: iconSize,\r\n isValid: isValid,\r\n name: name,\r\n onFocusIn: onFocusIn,\r\n readOnly: readOnly,\r\n rtlEnabled: rtlEnabled,\r\n tabIndex: tabIndex,\r\n text: text,\r\n validationError: validationError,\r\n validationErrors: validationErrors,\r\n validationMessageMode: validationMessageMode,\r\n validationMessagePosition: validationMessagePosition,\r\n validationStatus: validationStatus,\r\n value: value,\r\n visible: visible,\r\n width: width\r\n },\r\n restAttributes: restAttributes\r\n } = viewModel;\r\n return normalizeProps(createComponentVNode(2, Editor, _extends({\r\n aria: aria,\r\n classes: classes,\r\n onClick: onClick,\r\n onKeyDown: onKeyDown,\r\n accessKey: accessKey,\r\n activeStateEnabled: activeStateEnabled,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n className: className,\r\n disabled: disabled,\r\n readOnly: readOnly,\r\n hint: hint,\r\n height: height,\r\n width: width,\r\n rtlEnabled: rtlEnabled,\r\n tabIndex: tabIndex,\r\n visible: visible,\r\n validationError: validationError,\r\n validationErrors: validationErrors,\r\n validationMessageMode: validationMessageMode,\r\n validationMessagePosition: validationMessagePosition,\r\n validationStatus: validationStatus,\r\n isValid: isValid,\r\n onFocusIn: onFocusIn\r\n }, restAttributes, {\r\n children: createFragment([normalizeProps(createVNode(64, \"input\", null, null, 1, _extends({\r\n type: \"hidden\",\r\n value: \"\".concat(value)\r\n }, name && {\r\n name: name\r\n }))), createVNode(1, \"div\", \"dx-checkbox-container\", [createComponentVNode(2, CheckBoxIcon, {\r\n size: iconSize,\r\n isChecked: true === value\r\n }), text && createVNode(1, \"span\", \"dx-checkbox-text\", text, 0)], 0)], 4)\r\n }), null, editorRef))\r\n};\r\nexport var CheckBoxProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(EditorProps), Object.getOwnPropertyDescriptors({\r\n text: \"\",\r\n enableThreeStateBehavior: false,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n get focusStateEnabled() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n defaultValue: false,\r\n valueChange: () => {}\r\n})));\r\nexport var CheckBoxPropsType = {\r\n get text() {\r\n return CheckBoxProps.text\r\n },\r\n get enableThreeStateBehavior() {\r\n return CheckBoxProps.enableThreeStateBehavior\r\n },\r\n get activeStateEnabled() {\r\n return CheckBoxProps.activeStateEnabled\r\n },\r\n get hoverStateEnabled() {\r\n return CheckBoxProps.hoverStateEnabled\r\n },\r\n get focusStateEnabled() {\r\n return CheckBoxProps.focusStateEnabled\r\n },\r\n get defaultValue() {\r\n return CheckBoxProps.defaultValue\r\n },\r\n get valueChange() {\r\n return CheckBoxProps.valueChange\r\n },\r\n get readOnly() {\r\n return CheckBoxProps.readOnly\r\n },\r\n get name() {\r\n return CheckBoxProps.name\r\n },\r\n get validationError() {\r\n return CheckBoxProps.validationError\r\n },\r\n get validationErrors() {\r\n return CheckBoxProps.validationErrors\r\n },\r\n get validationMessageMode() {\r\n return CheckBoxProps.validationMessageMode\r\n },\r\n get validationMessagePosition() {\r\n return CheckBoxProps.validationMessagePosition\r\n },\r\n get validationStatus() {\r\n return CheckBoxProps.validationStatus\r\n },\r\n get isValid() {\r\n return CheckBoxProps.isValid\r\n },\r\n get inputAttr() {\r\n return CheckBoxProps.inputAttr\r\n },\r\n get className() {\r\n return CheckBoxProps.className\r\n },\r\n get disabled() {\r\n return CheckBoxProps.disabled\r\n },\r\n get tabIndex() {\r\n return CheckBoxProps.tabIndex\r\n },\r\n get visible() {\r\n return CheckBoxProps.visible\r\n },\r\n get aria() {\r\n return WidgetProps.aria\r\n }\r\n};\r\nimport {\r\n convertRulesToOptions\r\n} from \"../../../../core/options/utils\";\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class CheckBox extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.editorRef = infernoCreateRef();\r\n this.state = {\r\n value: void 0 !== this.props.value ? this.props.value : this.props.defaultValue\r\n };\r\n this.focus = this.focus.bind(this);\r\n this.blur = this.blur.bind(this);\r\n this.onWidgetClick = this.onWidgetClick.bind(this);\r\n this.keyDown = this.keyDown.bind(this)\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n onWidgetClick(event) {\r\n var {\r\n enableThreeStateBehavior: enableThreeStateBehavior,\r\n readOnly: readOnly,\r\n saveValueChangeEvent: saveValueChangeEvent\r\n } = this.props;\r\n if (!readOnly) {\r\n null === saveValueChangeEvent || void 0 === saveValueChangeEvent ? void 0 : saveValueChangeEvent(event);\r\n if (enableThreeStateBehavior) {\r\n var __newValue;\r\n this.setState(__state_argument => {\r\n __newValue = null === (void 0 !== this.props.value ? this.props.value : __state_argument.value) || (!(void 0 !== this.props.value ? this.props.value : __state_argument.value) ? null : false);\r\n return {\r\n value: __newValue\r\n }\r\n });\r\n this.props.valueChange(__newValue)\r\n } else {\r\n var _newValue;\r\n this.setState(__state_argument => {\r\n var _ref;\r\n _newValue = !(null !== (_ref = void 0 !== this.props.value ? this.props.value : __state_argument.value) && void 0 !== _ref ? _ref : false);\r\n return {\r\n value: _newValue\r\n }\r\n });\r\n this.props.valueChange(_newValue)\r\n }\r\n }\r\n }\r\n keyDown(e) {\r\n var {\r\n onKeyDown: onKeyDown\r\n } = this.props;\r\n var {\r\n keyName: keyName,\r\n originalEvent: originalEvent,\r\n which: which\r\n } = e;\r\n var result = null === onKeyDown || void 0 === onKeyDown ? void 0 : onKeyDown(e);\r\n if (null !== result && void 0 !== result && result.cancel) {\r\n return result\r\n }\r\n if (\"space\" === keyName || \"space\" === which) {\r\n originalEvent.preventDefault();\r\n this.onWidgetClick(originalEvent)\r\n }\r\n return\r\n }\r\n get cssClasses() {\r\n return getCssClasses(_extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }))\r\n }\r\n get aria() {\r\n var checked = true === (void 0 !== this.props.value ? this.props.value : this.state.value);\r\n var indeterminate = null === (void 0 !== this.props.value ? this.props.value : this.state.value);\r\n var result = {\r\n role: \"checkbox\",\r\n checked: indeterminate ? \"mixed\" : \"\".concat(checked)\r\n };\r\n return _extends({}, result, this.props.aria)\r\n }\r\n get restAttributes() {\r\n var _this$props$value = _extends({}, this.props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n restProps = _objectWithoutPropertiesLoose(_this$props$value, _excluded);\r\n return restProps\r\n }\r\n focus() {\r\n this.editorRef.current.focus()\r\n }\r\n blur() {\r\n this.editorRef.current.blur()\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n value: void 0 !== this.props.value ? this.props.value : this.state.value\r\n }),\r\n editorRef: this.editorRef,\r\n onWidgetClick: this.onWidgetClick,\r\n keyDown: this.keyDown,\r\n cssClasses: this.cssClasses,\r\n aria: this.aria,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\n\r\nfunction __processTwoWayProps(defaultProps) {\r\n var twoWayProps = [\"value\"];\r\n return Object.keys(defaultProps).reduce((props, propName) => {\r\n var propValue = defaultProps[propName];\r\n var defaultPropName = twoWayProps.some(p => p === propName) ? \"default\" + propName.charAt(0).toUpperCase() + propName.slice(1) : propName;\r\n props[defaultPropName] = propValue;\r\n return props\r\n }, {})\r\n}\r\nCheckBox.defaultProps = CheckBoxPropsType;\r\nvar __defaultOptionRules = [];\r\nexport function defaultOptions(rule) {\r\n __defaultOptionRules.push(rule);\r\n CheckBox.defaultProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(CheckBox.defaultProps), Object.getOwnPropertyDescriptors(__processTwoWayProps(convertRulesToOptions(__defaultOptionRules)))))\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/editors/check_box/check_box.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../core/component_registrator\";\r\nimport BaseComponent from \"../../../component_wrapper/editors/check_box\";\r\nimport {\r\n CheckBox as CheckBoxComponent,\r\n defaultOptions\r\n} from \"./check_box\";\r\nexport default class CheckBox extends BaseComponent {\r\n getProps() {\r\n var props = super.getProps();\r\n props.onKeyDown = this._wrapKeyDownHandler(props.onKeyDown);\r\n return props\r\n }\r\n focus() {\r\n var _this$viewRef;\r\n return null === (_this$viewRef = this.viewRef) || void 0 === _this$viewRef ? void 0 : _this$viewRef.focus(...arguments)\r\n }\r\n blur() {\r\n var _this$viewRef2;\r\n return null === (_this$viewRef2 = this.viewRef) || void 0 === _this$viewRef2 ? void 0 : _this$viewRef2.blur(...arguments)\r\n }\r\n _getActionConfigs() {\r\n return {\r\n onFocusIn: {},\r\n onClick: {}\r\n }\r\n }\r\n get _propsInfo() {\r\n return {\r\n twoWay: [\r\n [\"value\", \"defaultValue\", \"valueChange\"]\r\n ],\r\n allowNull: [\"defaultValue\", \"validationError\", \"validationErrors\", \"value\"],\r\n elements: [],\r\n templates: [],\r\n props: [\"text\", \"iconSize\", \"enableThreeStateBehavior\", \"activeStateEnabled\", \"hoverStateEnabled\", \"focusStateEnabled\", \"saveValueChangeEvent\", \"defaultValue\", \"valueChange\", \"readOnly\", \"name\", \"validationError\", \"validationErrors\", \"validationMessageMode\", \"validationMessagePosition\", \"validationStatus\", \"isValid\", \"inputAttr\", \"onFocusIn\", \"className\", \"accessKey\", \"disabled\", \"height\", \"hint\", \"onClick\", \"onKeyDown\", \"rtlEnabled\", \"tabIndex\", \"visible\", \"width\", \"aria\", \"value\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return CheckBoxComponent\r\n }\r\n}\r\nregisterComponent(\"dxCheckBox\", CheckBox);\r\nCheckBox.defaultOptions = defaultOptions;\r\n","/**\r\n * DevExtreme (esm/ui/check_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Widget from \"../renovation/ui/editors/check_box/check_box.j\";\r\nexport default Widget;\r\n","/**\r\n * DevExtreme (esm/ui/radio_group/radio_button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport devices from \"../../core/devices\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nvar RADIO_BUTTON_CLASS = \"dx-radiobutton\";\r\nvar RADIO_BUTTON_ICON_CLASS = \"dx-radiobutton-icon\";\r\nvar RADIO_BUTTON_ICON_DOT_CLASS = \"dx-radiobutton-icon-dot\";\r\nvar RADIO_BUTTON_CHECKED_CLASS = \"dx-radiobutton-checked\";\r\nvar RADIO_BUTTON_ICON_CHECKED_CLASS = \"dx-radiobutton-icon-checked\";\r\nvar RadioButton = Editor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n space: function(e) {\r\n e.preventDefault();\r\n this._clickAction({\r\n event: e\r\n })\r\n }\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n value: false\r\n })\r\n },\r\n _canValueBeChangedByClick: function() {\r\n return true\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(RADIO_BUTTON_CLASS)\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._renderIcon();\r\n this._renderCheckedState(this.option(\"value\"));\r\n this._renderClick();\r\n this.setAria(\"role\", \"radio\")\r\n },\r\n _renderIcon: function() {\r\n this._$icon = $(\"<div>\").addClass(RADIO_BUTTON_ICON_CLASS);\r\n $(\"<div>\").addClass(RADIO_BUTTON_ICON_DOT_CLASS).appendTo(this._$icon);\r\n this.$element().append(this._$icon)\r\n },\r\n _renderCheckedState: function(checked) {\r\n this.$element().toggleClass(RADIO_BUTTON_CHECKED_CLASS, checked).find(\".\" + RADIO_BUTTON_ICON_CLASS).toggleClass(RADIO_BUTTON_ICON_CHECKED_CLASS, checked);\r\n this.setAria(\"checked\", checked)\r\n },\r\n _renderClick: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n this._clickAction = this._createAction(function(args) {\r\n this._clickHandler(args.event)\r\n }.bind(this));\r\n eventsEngine.off(this.$element(), eventName);\r\n eventsEngine.on(this.$element(), eventName, function(e) {\r\n this._clickAction({\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _clickHandler: function(e) {\r\n this._saveValueChangeEvent(e);\r\n this.option(\"value\", true)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._renderCheckedState(args.value);\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxRadioButton\", RadioButton);\r\nexport default RadioButton;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport Class from \"../../core/class\";\r\nimport {\r\n start as swipeEventStart,\r\n swipe as swipeEventSwipe,\r\n end as swipeEventEnd\r\n} from \"../../events/swipe\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nvar LIST_EDIT_DECORATOR = \"dxListEditDecorator\";\r\nvar SWIPE_START_EVENT_NAME = addNamespace(swipeEventStart, LIST_EDIT_DECORATOR);\r\nvar SWIPE_UPDATE_EVENT_NAME = addNamespace(swipeEventSwipe, LIST_EDIT_DECORATOR);\r\nvar SWIPE_END_EVENT_NAME = addNamespace(swipeEventEnd, LIST_EDIT_DECORATOR);\r\nvar EditDecorator = Class.inherit({\r\n ctor: function(list) {\r\n this._list = list;\r\n this._init()\r\n },\r\n _init: noop,\r\n _shouldHandleSwipe: false,\r\n _attachSwipeEvent: function(config) {\r\n var swipeConfig = {\r\n itemSizeFunc: function() {\r\n if (this._clearSwipeCache) {\r\n this._itemWidthCache = getWidth(this._list.$element());\r\n this._clearSwipeCache = false\r\n }\r\n return this._itemWidthCache\r\n }.bind(this)\r\n };\r\n eventsEngine.on(config.$itemElement, SWIPE_START_EVENT_NAME, swipeConfig, this._itemSwipeStartHandler.bind(this));\r\n eventsEngine.on(config.$itemElement, SWIPE_UPDATE_EVENT_NAME, this._itemSwipeUpdateHandler.bind(this));\r\n eventsEngine.on(config.$itemElement, SWIPE_END_EVENT_NAME, this._itemSwipeEndHandler.bind(this))\r\n },\r\n _itemSwipeStartHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n if ($itemElement.is(\".dx-state-disabled, .dx-state-disabled *\")) {\r\n e.cancel = true;\r\n return\r\n }\r\n clearTimeout(this._list._inkRippleTimer);\r\n this._swipeStartHandler($itemElement, e)\r\n },\r\n _itemSwipeUpdateHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n this._swipeUpdateHandler($itemElement, e)\r\n },\r\n _itemSwipeEndHandler: function(e) {\r\n var $itemElement = $(e.currentTarget);\r\n this._swipeEndHandler($itemElement, e);\r\n this._clearSwipeCache = true\r\n },\r\n beforeBag: noop,\r\n afterBag: noop,\r\n _commonOptions: function() {\r\n return {\r\n activeStateEnabled: this._list.option(\"activeStateEnabled\"),\r\n hoverStateEnabled: this._list.option(\"hoverStateEnabled\"),\r\n focusStateEnabled: this._list.option(\"focusStateEnabled\")\r\n }\r\n },\r\n modifyElement: function(config) {\r\n if (this._shouldHandleSwipe) {\r\n this._attachSwipeEvent(config);\r\n this._clearSwipeCache = true\r\n }\r\n },\r\n afterRender: noop,\r\n handleClick: noop,\r\n handleKeyboardEvents: noop,\r\n handleEnterPressing: noop,\r\n handleContextMenu: noop,\r\n _swipeStartHandler: noop,\r\n _swipeUpdateHandler: noop,\r\n _swipeEndHandler: noop,\r\n visibilityChange: noop,\r\n getExcludedSelectors: noop,\r\n dispose: noop\r\n});\r\nexport default EditDecorator;\r\n","/**\r\n * DevExtreme (esm/ui/list/ui.list.edit.decorator.selection.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../events/click\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport CheckBox from \"../check_box\";\r\nimport RadioButton from \"../radio_group/radio_button\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport {\r\n register as registerDecorator\r\n} from \"./ui.list.edit.decorator_registry\";\r\nimport EditDecorator from \"./ui.list.edit.decorator\";\r\nvar SELECT_DECORATOR_ENABLED_CLASS = \"dx-list-select-decorator-enabled\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CLASS = \"dx-list-select-all\";\r\nvar SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS = \"dx-list-select-all-checkbox\";\r\nvar SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS = \"dx-list-select-all-label\";\r\nvar SELECT_CHECKBOX_CONTAINER_CLASS = \"dx-list-select-checkbox-container\";\r\nvar SELECT_CHECKBOX_CLASS = \"dx-list-select-checkbox\";\r\nvar SELECT_RADIO_BUTTON_CONTAINER_CLASS = \"dx-list-select-radiobutton-container\";\r\nvar SELECT_RADIO_BUTTON_CLASS = \"dx-list-select-radiobutton\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar CLICK_EVENT_NAME = addNamespace(clickEventName, \"dxListEditDecorator\");\r\nregisterDecorator(\"selection\", \"default\", EditDecorator.inherit({\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectionMode = this._list.option(\"selectionMode\");\r\n this._singleStrategy = \"single\" === selectionMode;\r\n this._containerClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CONTAINER_CLASS : SELECT_CHECKBOX_CONTAINER_CLASS;\r\n this._controlClass = this._singleStrategy ? SELECT_RADIO_BUTTON_CLASS : SELECT_CHECKBOX_CLASS;\r\n this._controlWidget = this._singleStrategy ? RadioButton : CheckBox;\r\n this._list.$element().addClass(SELECT_DECORATOR_ENABLED_CLASS)\r\n },\r\n beforeBag: function(config) {\r\n var $itemElement = config.$itemElement;\r\n var $container = config.$container.addClass(this._containerClass);\r\n var $control = $(\"<div>\").addClass(this._controlClass).appendTo($container);\r\n new this._controlWidget($control, extend(this._commonOptions(), {\r\n value: this._isSelected($itemElement),\r\n elementAttr: {\r\n \"aria-label\": \"Check State\"\r\n },\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false,\r\n onValueChanged: function(e) {\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n this._processCheckedState($itemElement, e.value);\r\n e.event && e.event.stopPropagation()\r\n }.bind(this)\r\n }))\r\n },\r\n modifyElement: function(config) {\r\n this.callBase.apply(this, arguments);\r\n var $itemElement = config.$itemElement;\r\n var control = this._controlWidget.getInstance($itemElement.find(\".\" + this._controlClass));\r\n eventsEngine.on($itemElement, \"stateChanged\", function(e, state) {\r\n control.option(\"value\", state)\r\n }.bind(this))\r\n },\r\n _updateSelectAllState: function() {\r\n if (!this._$selectAll) {\r\n return\r\n }\r\n this._selectAllCheckBox.option(\"value\", this._list.isSelectAll())\r\n },\r\n afterRender: function() {\r\n if (\"all\" !== this._list.option(\"selectionMode\")) {\r\n return\r\n }\r\n if (!this._$selectAll) {\r\n this._renderSelectAll()\r\n } else {\r\n this._updateSelectAllState()\r\n }\r\n },\r\n handleKeyboardEvents: function(currentFocusedIndex, moveFocusUp) {\r\n var moveFocusDown = !moveFocusUp;\r\n var list = this._list;\r\n var $selectAll = this._$selectAll;\r\n var lastItemIndex = list._getLastItemIndex();\r\n var isFocusOutOfList = moveFocusUp && 0 === currentFocusedIndex || moveFocusDown && currentFocusedIndex === lastItemIndex;\r\n var hasSelectAllItem = !!$selectAll;\r\n if (hasSelectAllItem && isFocusOutOfList) {\r\n list.option(\"focusedElement\", $selectAll);\r\n list.scrollToItem(list.option(\"focusedElement\"));\r\n return true\r\n }\r\n return false\r\n },\r\n handleEnterPressing: function(e) {\r\n if (this._$selectAll && this._$selectAll.hasClass(FOCUSED_STATE_CLASS)) {\r\n e.target = this._$selectAll.get(0);\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"));\r\n return true\r\n }\r\n },\r\n _renderSelectAll: function() {\r\n var $selectAll = this._$selectAll = $(\"<div>\").addClass(SELECT_DECORATOR_SELECT_ALL_CLASS);\r\n var list = this._list;\r\n var downArrowHandler = list._supportedKeys().downArrow.bind(list);\r\n this._selectAllCheckBox = list._createComponent($(\"<div>\").addClass(SELECT_DECORATOR_SELECT_ALL_CHECKBOX_CLASS).appendTo($selectAll), CheckBox, {\r\n elementAttr: {\r\n \"aria-label\": \"Select All\"\r\n },\r\n focusStateEnabled: false,\r\n hoverStateEnabled: false\r\n });\r\n this._selectAllCheckBox.registerKeyHandler(\"downArrow\", downArrowHandler);\r\n $(\"<div>\").addClass(SELECT_DECORATOR_SELECT_ALL_LABEL_CLASS).text(this._list.option(\"selectAllText\")).appendTo($selectAll);\r\n this._list.itemsContainer().prepend($selectAll);\r\n this._updateSelectAllState();\r\n this._attachSelectAllHandler()\r\n },\r\n _attachSelectAllHandler: function() {\r\n this._selectAllCheckBox.option(\"onValueChanged\", this._selectAllHandler.bind(this));\r\n eventsEngine.off(this._$selectAll, CLICK_EVENT_NAME);\r\n eventsEngine.on(this._$selectAll, CLICK_EVENT_NAME, this._selectAllClickHandler.bind(this))\r\n },\r\n _selectAllHandler: function(e) {\r\n e.event && e.event.stopPropagation();\r\n var isSelectedAll = this._selectAllCheckBox.option(\"value\");\r\n e.event && this._list._saveSelectionChangeEvent(e.event);\r\n if (true === isSelectedAll) {\r\n this._selectAllItems()\r\n } else if (false === isSelectedAll) {\r\n this._unselectAllItems()\r\n }\r\n this._list._createActionByOption(\"onSelectAllValueChanged\")({\r\n value: isSelectedAll\r\n })\r\n },\r\n _checkSelectAllCapability: function() {\r\n var list = this._list;\r\n var dataController = list._dataController;\r\n if (\"allPages\" === list.option(\"selectAllMode\") && list.option(\"grouped\") && !dataController.group()) {\r\n errors.log(\"W1010\");\r\n return false\r\n }\r\n return true\r\n },\r\n _selectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.selectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _unselectAllItems: function() {\r\n if (!this._checkSelectAllCapability()) {\r\n return\r\n }\r\n this._list._selection.deselectAll(\"page\" === this._list.option(\"selectAllMode\"))\r\n },\r\n _selectAllClickHandler: function(e) {\r\n this._list._saveSelectionChangeEvent(e);\r\n this._selectAllCheckBox.option(\"value\", !this._selectAllCheckBox.option(\"value\"))\r\n },\r\n _isSelected: function($itemElement) {\r\n return this._list.isItemSelected($itemElement)\r\n },\r\n _processCheckedState: function($itemElement, checked) {\r\n if (checked) {\r\n this._list.selectItem($itemElement)\r\n } else {\r\n this._list.unselectItem($itemElement)\r\n }\r\n },\r\n dispose: function() {\r\n this._disposeSelectAll();\r\n this._list.$element().removeClass(SELECT_DECORATOR_ENABLED_CLASS);\r\n this.callBase.apply(this, arguments)\r\n },\r\n _disposeSelectAll: function() {\r\n if (this._$selectAll) {\r\n this._$selectAll.remove();\r\n this._$selectAll = null\r\n }\r\n }\r\n}));\r\n","/**\r\n * DevExtreme (esm/ui/select_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPromise\r\n} from \"../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n Deferred,\r\n fromPromise\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport errors from \"../core/errors\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DropDownList from \"./drop_down_editor/ui.drop_down_list\";\r\nimport \"./list/modules/selection\";\r\nimport {\r\n normalizeKeyName\r\n} from \"../events/utils/index\";\r\nvar DISABLED_STATE_SELECTOR = \".dx-state-disabled\";\r\nvar SELECTBOX_CLASS = \"dx-selectbox\";\r\nvar SELECTBOX_POPUP_CLASS = \"dx-selectbox-popup\";\r\nvar SELECTBOX_CONTAINER_CLASS = \"dx-selectbox-container\";\r\nvar SELECTBOX_POPUP_WRAPPER_CLASS = \"dx-selectbox-popup-wrapper\";\r\nvar SelectBox = DropDownList.inherit({\r\n _supportedKeys: function() {\r\n var that = this;\r\n var parent = this.callBase();\r\n var clearSelectBox = function(e) {\r\n var isEditable = this._isEditable();\r\n if (!isEditable) {\r\n if (this.option(\"showClearButton\")) {\r\n e.preventDefault();\r\n this.reset()\r\n }\r\n } else if (this._valueSubstituted()) {\r\n this._preventFiltering = true\r\n }\r\n this._savedTextRemoveEvent = e;\r\n this._preventSubstitution = true\r\n };\r\n var searchIfNeeded = function() {\r\n if (that.option(\"searchEnabled\") && that._valueSubstituted()) {\r\n that._searchHandler()\r\n }\r\n };\r\n return extend({}, parent, {\r\n tab: function() {\r\n if (this.option(\"opened\") && \"instantly\" === this.option(\"applyValueMode\")) {\r\n this._resetCaretPosition(true)\r\n }\r\n parent.tab && parent.tab.apply(this, arguments);\r\n this._cancelSearchIfNeed()\r\n },\r\n upArrow: function(e) {\r\n if (parent.upArrow.apply(this, arguments)) {\r\n if (!this.option(\"opened\")) {\r\n this._setNextValue(e)\r\n }\r\n return true\r\n }\r\n },\r\n downArrow: function(e) {\r\n if (parent.downArrow.apply(this, arguments)) {\r\n if (!this.option(\"opened\")) {\r\n this._setNextValue(e)\r\n }\r\n return true\r\n }\r\n },\r\n leftArrow: function() {\r\n searchIfNeeded();\r\n parent.leftArrow && parent.leftArrow.apply(this, arguments)\r\n },\r\n rightArrow: function() {\r\n searchIfNeeded();\r\n parent.rightArrow && parent.rightArrow.apply(this, arguments)\r\n },\r\n home: function() {\r\n searchIfNeeded();\r\n parent.home && parent.home.apply(this, arguments)\r\n },\r\n end: function() {\r\n searchIfNeeded();\r\n parent.end && parent.end.apply(this, arguments)\r\n },\r\n escape: function() {\r\n var result = parent.escape && parent.escape.apply(this, arguments);\r\n this._cancelEditing();\r\n return null !== result && void 0 !== result ? result : true\r\n },\r\n enter: function(e) {\r\n var isOpened = this.option(\"opened\");\r\n var inputText = this._input().val().trim();\r\n var isCustomText = inputText && this._list && !this._list.option(\"focusedElement\");\r\n if (!inputText && isDefined(this.option(\"value\")) && this.option(\"allowClearing\")) {\r\n this._saveValueChangeEvent(e);\r\n this.option({\r\n selectedItem: null,\r\n value: null\r\n });\r\n this.close()\r\n } else {\r\n if (this.option(\"acceptCustomValue\")) {\r\n e.preventDefault();\r\n if (isCustomText) {\r\n if (isOpened) {\r\n this._toggleOpenState()\r\n }\r\n this._valueChangeEventHandler(e)\r\n }\r\n return isOpened\r\n }\r\n if (parent.enter && parent.enter.apply(this, arguments)) {\r\n return isOpened\r\n }\r\n }\r\n },\r\n space: function(e) {\r\n var isOpened = this.option(\"opened\");\r\n var isSearchEnabled = this.option(\"searchEnabled\");\r\n var acceptCustomValue = this.option(\"acceptCustomValue\");\r\n if (!isOpened || isSearchEnabled || acceptCustomValue) {\r\n return\r\n }\r\n e.preventDefault();\r\n this._valueChangeEventHandler(e);\r\n return true\r\n },\r\n backspace: clearSelectBox,\r\n del: clearSelectBox\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n placeholder: messageLocalization.format(\"Select\"),\r\n fieldTemplate: null,\r\n customItemCreateEvent: \"change\",\r\n valueChangeEvent: \"change\",\r\n acceptCustomValue: false,\r\n onCustomItemCreating: function(e) {\r\n if (!isDefined(e.customItem)) {\r\n e.customItem = e.text\r\n }\r\n },\r\n showSelectionControls: false,\r\n allowClearing: true,\r\n tooltipEnabled: false,\r\n openOnFieldClick: true,\r\n showDropDownButton: true,\r\n displayCustomValue: false,\r\n useHiddenSubmitElement: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._initCustomItemCreatingAction()\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(SELECTBOX_CLASS);\r\n this._renderTooltip();\r\n this.callBase();\r\n this._$container.addClass(SELECTBOX_CONTAINER_CLASS)\r\n },\r\n _createPopup: function() {\r\n this.callBase();\r\n this._popup.$element().addClass(SELECTBOX_POPUP_CLASS);\r\n this._popup.$overlayContent().attr(\"tabindex\", -1)\r\n },\r\n _popupWrapperClass: function() {\r\n return this.callBase() + \" \" + SELECTBOX_POPUP_WRAPPER_CLASS\r\n },\r\n _setDeprecatedOptions() {\r\n this.callBase();\r\n extend(this._deprecatedOptions, {\r\n valueChangeEvent: {\r\n since: \"22.2\",\r\n alias: \"customItemCreateEvent\"\r\n }\r\n })\r\n },\r\n _cancelEditing: function() {\r\n if (!this.option(\"searchEnabled\") && this._list) {\r\n this._focusListElement(null);\r\n this._updateField(this.option(\"selectedItem\"))\r\n }\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n if (this.option(\"opened\")) {\r\n this._scrollToSelectedItem();\r\n this._focusSelectedElement()\r\n }\r\n },\r\n _focusSelectedElement: function() {\r\n var _items$indexOf;\r\n var searchValue = this._searchValue();\r\n if (!searchValue) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var {\r\n items: items,\r\n selectedItem: selectedItem\r\n } = this.option();\r\n var $listItems = this._list._itemElements();\r\n var index = null !== (_items$indexOf = null === items || void 0 === items ? void 0 : items.indexOf(selectedItem)) && void 0 !== _items$indexOf ? _items$indexOf : -1;\r\n var focusedElement = -1 !== index && !this._isCustomItemSelected() ? $listItems.eq(index) : null;\r\n this._focusListElement(focusedElement)\r\n },\r\n _renderFocusedElement: function() {\r\n if (!this._list) {\r\n return\r\n }\r\n var searchValue = this._searchValue();\r\n if (!searchValue || this.option(\"acceptCustomValue\")) {\r\n this._focusListElement(null);\r\n return\r\n }\r\n var $listItems = this._list._itemElements();\r\n var focusedElement = $listItems.not(DISABLED_STATE_SELECTOR).eq(0);\r\n this._focusListElement(focusedElement)\r\n },\r\n _focusListElement: function(element) {\r\n this._preventInputValueRender = true;\r\n this._list.option(\"focusedElement\", getPublicElement(element));\r\n delete this._preventInputValueRender\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._list && this._list.scrollToItem(this._list.option(\"selectedItem\"))\r\n },\r\n _listContentReadyHandler: function() {\r\n this.callBase();\r\n var isPaginate = this._dataController.paginate();\r\n if (isPaginate && this._needPopupRepaint()) {\r\n return\r\n }\r\n this._scrollToSelectedItem()\r\n },\r\n _renderValue: function() {\r\n this._renderInputValue();\r\n this._setSubmitValue();\r\n return (new Deferred).resolve()\r\n },\r\n _renderInputValue: function() {\r\n return this.callBase().always(function() {\r\n this._renderInputValueAsync()\r\n }.bind(this))\r\n },\r\n _renderInputValueAsync: function() {\r\n this._renderTooltip();\r\n this._renderInputValueImpl().always(function() {\r\n this._refreshSelected()\r\n }.bind(this))\r\n },\r\n _renderInputValueImpl: function() {\r\n this._renderField();\r\n return (new Deferred).resolve()\r\n },\r\n _setNextItem: function(step) {\r\n var item = this._calcNextItem(step);\r\n var value = this._valueGetter(item);\r\n this._setValue(value)\r\n },\r\n _setNextValue: function(e) {\r\n var dataSourceIsLoaded = this._dataController.isLoaded() ? (new Deferred).resolve() : this._dataController.load();\r\n dataSourceIsLoaded.done(function() {\r\n var selectedIndex = this._getSelectedIndex();\r\n var hasPages = this._dataController.pageSize();\r\n var isLastPage = this._dataController.isLastPage();\r\n var isLastItem = selectedIndex === this._items().length - 1;\r\n this._saveValueChangeEvent(e);\r\n var step = \"downArrow\" === normalizeKeyName(e) ? 1 : -1;\r\n if (hasPages && !isLastPage && isLastItem && step > 0) {\r\n if (!this._popup) {\r\n this._createPopup()\r\n }\r\n if (!this._dataController.isLoading()) {\r\n this._list._loadNextPage().done(this._setNextItem.bind(this, step))\r\n }\r\n } else {\r\n this._setNextItem(step)\r\n }\r\n }.bind(this))\r\n },\r\n _setSelectedItem: function(item) {\r\n var isUnknownItem = !this._isCustomValueAllowed() && void 0 === item;\r\n this.callBase(isUnknownItem ? null : item);\r\n if (!isUnknownItem && (!this._isEditable() || this._isCustomItemSelected())) {\r\n this._setListOption(\"selectedItem\", this.option(\"selectedItem\"))\r\n }\r\n },\r\n _isCustomValueAllowed: function() {\r\n return this.option(\"acceptCustomValue\") || this.callBase()\r\n },\r\n _displayValue: function(item) {\r\n item = !isDefined(item) && this._isCustomValueAllowed() ? this.option(\"value\") : item;\r\n return this.callBase(item)\r\n },\r\n _listConfig: function() {\r\n var result = extend(this.callBase(), {\r\n pageLoadMode: \"scrollBottom\",\r\n onSelectionChanged: this._getSelectionChangeHandler(),\r\n selectedItem: this.option(\"selectedItem\"),\r\n onFocusedItemChanged: this._listFocusedItemChangeHandler.bind(this)\r\n });\r\n if (this.option(\"showSelectionControls\")) {\r\n extend(result, {\r\n showSelectionControls: true,\r\n selectByClick: true\r\n })\r\n }\r\n return result\r\n },\r\n _listFocusedItemChangeHandler: function(e) {\r\n if (this._preventInputValueRender) {\r\n return\r\n }\r\n var list = e.component;\r\n var focusedElement = $(list.option(\"focusedElement\"));\r\n var focusedItem = list._getItemData(focusedElement);\r\n this._updateField(focusedItem)\r\n },\r\n _updateField: function(item) {\r\n var fieldTemplate = this._getTemplateByOption(\"fieldTemplate\");\r\n if (!(fieldTemplate && this.option(\"fieldTemplate\"))) {\r\n var text = this._displayGetter(item);\r\n this.option(\"text\", text);\r\n this._renderDisplayText(text);\r\n return\r\n }\r\n this._renderField()\r\n },\r\n _getSelectionChangeHandler: function() {\r\n return this.option(\"showSelectionControls\") ? this._selectionChangeHandler.bind(this) : noop\r\n },\r\n _selectionChangeHandler: function(e) {\r\n each(e.addedItems || [], function(_, addedItem) {\r\n this._setValue(this._valueGetter(addedItem))\r\n }.bind(this))\r\n },\r\n _getActualSearchValue: function() {\r\n return this._dataController.searchValue()\r\n },\r\n _toggleOpenState: function(isVisible) {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n isVisible = arguments.length ? isVisible : !this.option(\"opened\");\r\n if (!isVisible && !this._shouldClearFilter()) {\r\n this._restoreInputText(true)\r\n }\r\n if (this._wasSearch() && isVisible) {\r\n this._wasSearch(false);\r\n var showDataImmediately = this.option(\"showDataBeforeSearch\") || this._isMinSearchLengthExceeded();\r\n if (showDataImmediately && this._dataController.getDataSource()) {\r\n if (this._searchTimer) {\r\n return\r\n }\r\n var searchValue = this._getActualSearchValue();\r\n searchValue && this._wasSearch(true);\r\n this._filterDataSource(searchValue || null)\r\n } else {\r\n this._setListOption(\"items\", [])\r\n }\r\n }\r\n if (isVisible) {\r\n this._scrollToSelectedItem()\r\n }\r\n this.callBase(isVisible)\r\n },\r\n _renderTooltip: function() {\r\n if (this.option(\"tooltipEnabled\")) {\r\n this.$element().attr(\"title\", this.option(\"displayValue\"))\r\n }\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this._updatePopupWidth();\r\n this._updateListDimensions()\r\n },\r\n _isValueEqualInputText: function() {\r\n var initialSelectedItem = this.option(\"selectedItem\");\r\n if (null === initialSelectedItem) {\r\n return false\r\n }\r\n var value = this._displayGetter(initialSelectedItem);\r\n var displayValue = value ? String(value) : \"\";\r\n var inputText = this._searchValue();\r\n return displayValue === inputText\r\n },\r\n _popupHidingHandler: function() {\r\n if (this._isValueEqualInputText()) {\r\n this._cancelEditing()\r\n }\r\n this.callBase()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n if (this._shouldCancelSearch()) {\r\n this._wasSearch(false);\r\n this._searchCanceled();\r\n this._shouldCancelSearch(false)\r\n }\r\n },\r\n _restoreInputText: function(saveEditingValue) {\r\n if (this.option(\"readOnly\")) {\r\n return\r\n }\r\n this._loadItemDeferred && this._loadItemDeferred.always(function() {\r\n var {\r\n acceptCustomValue: acceptCustomValue,\r\n text: text,\r\n selectedItem: initialSelectedItem\r\n } = this.option();\r\n if (acceptCustomValue) {\r\n if (!saveEditingValue && !this._isValueChanging) {\r\n this._updateField(null !== initialSelectedItem && void 0 !== initialSelectedItem ? initialSelectedItem : this._createCustomItem(text));\r\n this._clearFilter()\r\n }\r\n return\r\n }\r\n if (this.option(\"searchEnabled\")) {\r\n if (!this._searchValue() && this.option(\"allowClearing\")) {\r\n this._clearTextValue();\r\n return\r\n }\r\n }\r\n if (this._isValueEqualInputText()) {\r\n return\r\n }\r\n this._renderInputValue().always(function(selectedItem) {\r\n var newSelectedItem = ensureDefined(selectedItem, initialSelectedItem);\r\n this._setSelectedItem(newSelectedItem);\r\n this._updateField(newSelectedItem);\r\n this._clearFilter()\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n _valueChangeEventIncludesBlur: function() {\r\n var valueChangeEvent = this.option(this._getValueChangeEventOptionName());\r\n return valueChangeEvent.includes(\"blur\")\r\n },\r\n _isPreventedFocusOutEvent: function(e) {\r\n return this._preventNestedFocusEvent(e) || this._valueChangeEventIncludesBlur()\r\n },\r\n _focusOutHandler: function(e) {\r\n if (!this._isPreventedFocusOutEvent(e)) {\r\n var isOverlayTarget = this._isOverlayNestedTarget(e.relatedTarget);\r\n if (!isOverlayTarget) {\r\n this._restoreInputText();\r\n this._clearSearchTimer()\r\n }\r\n this._cancelSearchIfNeed(e)\r\n }\r\n e.target = this._input().get(0);\r\n this.callBase(e)\r\n },\r\n _cancelSearchIfNeed: function(e) {\r\n var {\r\n searchEnabled: searchEnabled\r\n } = this.option();\r\n var isOverlayTarget = this._isOverlayNestedTarget(null === e || void 0 === e ? void 0 : e.relatedTarget);\r\n var shouldCancelSearch = this._wasSearch() && searchEnabled && !isOverlayTarget;\r\n if (shouldCancelSearch) {\r\n var _this$_popup;\r\n var isPopupVisible = null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup._hideAnimationProcessing;\r\n this._clearSearchTimer();\r\n if (isPopupVisible) {\r\n this._shouldCancelSearch(true)\r\n } else {\r\n this._wasSearch(false);\r\n this._searchCanceled()\r\n }\r\n }\r\n },\r\n _shouldCancelSearch: function(value) {\r\n if (!arguments.length) {\r\n return this._shouldCancelSearchValue\r\n }\r\n this._shouldCancelSearchValue = value\r\n },\r\n _isOverlayNestedTarget: function(target) {\r\n return !!$(target).closest(\".\".concat(SELECTBOX_POPUP_WRAPPER_CLASS)).length\r\n },\r\n _clearTextValue: function() {\r\n var selectedItem = this.option(\"selectedItem\");\r\n var selectedItemText = this._displayGetter(selectedItem);\r\n var shouldRestoreValue = selectedItem && \"\" !== selectedItemText;\r\n if (shouldRestoreValue) {\r\n if (this._savedTextRemoveEvent) {\r\n this._saveValueChangeEvent(this._savedTextRemoveEvent)\r\n }\r\n this.option(\"value\", null)\r\n }\r\n delete this._savedTextRemoveEvent\r\n },\r\n _shouldOpenPopup: function() {\r\n return this._needPassDataSourceToList() && this._wasSearch()\r\n },\r\n _isFocused: function() {\r\n var activeElement = domAdapter.getActiveElement(this.element());\r\n return this.callBase() && $(activeElement).closest(this._input()).length > 0\r\n },\r\n _getValueChangeEventOptionName: function() {\r\n return \"customItemCreateEvent\"\r\n },\r\n _renderValueChangeEvent: function() {\r\n if (this._isEditable()) {\r\n this.callBase()\r\n }\r\n },\r\n _fieldRenderData: function() {\r\n var $listFocused = this._list && this.option(\"opened\") && $(this._list.option(\"focusedElement\"));\r\n if ($listFocused && $listFocused.length) {\r\n return this._list._getItemData($listFocused)\r\n }\r\n return this.option(\"selectedItem\")\r\n },\r\n _isSelectedValue: function(value) {\r\n return this._isValueEquals(value, this.option(\"value\"))\r\n },\r\n _shouldCloseOnItemClick: function() {\r\n return !(this.option(\"showSelectionControls\") && \"single\" !== this.option(\"selectionMode\"))\r\n },\r\n _listItemClickHandler: function(e) {\r\n var previousValue = this._getCurrentValue();\r\n this._focusListElement($(e.itemElement));\r\n this._saveValueChangeEvent(e.event);\r\n this._completeSelection(this._valueGetter(e.itemData));\r\n if (this._shouldCloseOnItemClick()) {\r\n this.option(\"opened\", false)\r\n }\r\n if (this.option(\"searchEnabled\") && previousValue === this._valueGetter(e.itemData)) {\r\n this._updateField(e.itemData)\r\n }\r\n if (this._shouldClearFilter()) {\r\n this._cancelSearchIfNeed()\r\n }\r\n },\r\n _shouldClearFilter: function() {\r\n return this._wasSearch()\r\n },\r\n _completeSelection: function(value) {\r\n this._setValue(value)\r\n },\r\n _loadItem: function(value, cache) {\r\n var that = this;\r\n var deferred = new Deferred;\r\n this.callBase(value, cache).done(function(item) {\r\n deferred.resolve(item)\r\n }.bind(this)).fail(function(args) {\r\n if (null !== args && void 0 !== args && args.shouldSkipCallback) {\r\n return\r\n }\r\n var selectedItem = that.option(\"selectedItem\");\r\n if (that.option(\"acceptCustomValue\") && value === that._valueGetter(selectedItem)) {\r\n deferred.resolve(selectedItem)\r\n } else {\r\n deferred.reject()\r\n }\r\n }.bind(this));\r\n return deferred.promise()\r\n },\r\n _loadInputValue: function(value, callback) {\r\n this._loadItemDeferred = this._loadItem(value).always(callback);\r\n return this._loadItemDeferred\r\n },\r\n _isCustomItemSelected: function() {\r\n var selectedItem = this.option(\"selectedItem\");\r\n var searchValue = this._searchValue();\r\n var selectedItemText = this._displayGetter(selectedItem);\r\n return !selectedItemText || searchValue !== selectedItemText.toString()\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n if (this.option(\"acceptCustomValue\") && this._isCustomItemSelected() && !this._isValueChanging) {\r\n this._isValueChanging = true;\r\n this._customItemAddedHandler(e)\r\n }\r\n },\r\n _initCustomItemCreatingAction: function() {\r\n this._customItemCreatingAction = this._createActionByOption(\"onCustomItemCreating\")\r\n },\r\n _createCustomItem: function(text) {\r\n var params = {\r\n text: text\r\n };\r\n var actionResult = this._customItemCreatingAction(params);\r\n var item = ensureDefined(actionResult, params.customItem);\r\n if (isDefined(actionResult)) {\r\n errors.log(\"W0015\", \"onCustomItemCreating\", \"customItem\")\r\n }\r\n return item\r\n },\r\n _customItemAddedHandler: function(e) {\r\n var searchValue = this._searchValue();\r\n var item = this._createCustomItem(searchValue);\r\n this._saveValueChangeEvent(e);\r\n if (void 0 === item) {\r\n this._renderValue();\r\n throw errors.Error(\"E0121\")\r\n }\r\n if (isPromise(item)) {\r\n fromPromise(item).done(this._setCustomItem.bind(this)).fail(this._setCustomItem.bind(this, null))\r\n } else {\r\n this._setCustomItem(item)\r\n }\r\n },\r\n _setCustomItem: function(item) {\r\n if (this._disposed) {\r\n return\r\n }\r\n item = item || null;\r\n this.option(\"selectedItem\", item);\r\n this._cancelSearchIfNeed();\r\n this._setValue(this._valueGetter(item));\r\n this._renderDisplayText(this._displayGetter(item));\r\n this._isValueChanging = false\r\n },\r\n _clearValueHandler: function(e) {\r\n this._preventFiltering = true;\r\n this.callBase(e);\r\n this._searchCanceled();\r\n return false\r\n },\r\n _wasSearch: function(value) {\r\n if (!arguments.length) {\r\n return !!this._wasSearchValue\r\n }\r\n this._wasSearchValue = value\r\n },\r\n _searchHandler: function() {\r\n if (this._preventFiltering) {\r\n delete this._preventFiltering;\r\n return\r\n }\r\n if (this._needPassDataSourceToList()) {\r\n this._wasSearch(true)\r\n }\r\n this.callBase(arguments)\r\n },\r\n _dataSourceFiltered: function(searchValue) {\r\n this.callBase();\r\n if (null !== searchValue) {\r\n this._renderInputSubstitution();\r\n this._renderFocusedElement()\r\n }\r\n },\r\n _valueSubstituted: function() {\r\n var input = this._input().get(0);\r\n var currentSearchLength = this._searchValue().length;\r\n var isAllSelected = 0 === input.selectionStart && input.selectionEnd === currentSearchLength;\r\n var inputHasSelection = input.selectionStart !== input.selectionEnd;\r\n var isLastSymbolSelected = currentSearchLength === input.selectionEnd;\r\n return this._wasSearch() && inputHasSelection && !isAllSelected && isLastSymbolSelected && this._shouldSubstitutionBeRendered()\r\n },\r\n _shouldSubstitutionBeRendered: function() {\r\n return !this._preventSubstitution && this.option(\"searchEnabled\") && !this.option(\"acceptCustomValue\") && \"startswith\" === this.option(\"searchMode\")\r\n },\r\n _renderInputSubstitution: function() {\r\n if (!this._shouldSubstitutionBeRendered()) {\r\n delete this._preventSubstitution;\r\n return\r\n }\r\n var item = this._list && this._getPlainItems(this._list.option(\"items\"))[0];\r\n if (!item) {\r\n return\r\n }\r\n var $input = this._input();\r\n var valueLength = $input.val().length;\r\n if (0 === valueLength) {\r\n return\r\n }\r\n var inputElement = $input.get(0);\r\n var displayValue = this._displayGetter(item).toString();\r\n inputElement.value = displayValue;\r\n this._caret({\r\n start: valueLength,\r\n end: displayValue.length\r\n })\r\n },\r\n _dispose: function() {\r\n this._renderInputValueAsync = noop;\r\n delete this._loadItemDeferred;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"customItemCreateEvent\":\r\n this._refreshValueChangeEvent();\r\n this._refreshFocusEvent();\r\n this._refreshEvents();\r\n break;\r\n case \"onCustomItemCreating\":\r\n this._initCustomItemCreatingAction();\r\n break;\r\n case \"tooltipEnabled\":\r\n this._renderTooltip();\r\n break;\r\n case \"displayCustomValue\":\r\n case \"acceptCustomValue\":\r\n case \"showSelectionControls\":\r\n this._invalidate();\r\n break;\r\n case \"allowClearing\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxSelectBox\", SelectBox);\r\nexport default SelectBox;\r\n","/**\r\n * DevExtreme (esm/ui/box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n dasherize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n normalizeStyleProp,\r\n styleProp,\r\n stylePropPrefix,\r\n setStyle\r\n} from \"../core/utils/style\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport CollectionWidgetItem from \"./collection/item\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nvar BOX_CLASS = \"dx-box\";\r\nvar BOX_FLEX_CLASS = \"dx-box-flex\";\r\nvar BOX_ITEM_CLASS = \"dx-box-item\";\r\nvar BOX_ITEM_DATA_KEY = \"dxBoxItemData\";\r\nvar SHRINK = 1;\r\nvar MINSIZE_MAP = {\r\n row: \"minWidth\",\r\n col: \"minHeight\"\r\n};\r\nvar MAXSIZE_MAP = {\r\n row: \"maxWidth\",\r\n col: \"maxHeight\"\r\n};\r\nvar FLEX_JUSTIFY_CONTENT_MAP = {\r\n start: \"flex-start\",\r\n end: \"flex-end\",\r\n center: \"center\",\r\n \"space-between\": \"space-between\",\r\n \"space-around\": \"space-around\"\r\n};\r\nvar FLEX_ALIGN_ITEMS_MAP = {\r\n start: \"flex-start\",\r\n end: \"flex-end\",\r\n center: \"center\",\r\n stretch: \"stretch\"\r\n};\r\nvar FLEX_DIRECTION_MAP = {\r\n row: \"row\",\r\n col: \"column\"\r\n};\r\nvar setFlexProp = (element, prop, value) => {\r\n value = normalizeStyleProp(prop, value);\r\n element.style[styleProp(prop)] = value;\r\n if (!hasWindow()) {\r\n if (\"\" === value || !isDefined(value)) {\r\n return\r\n }\r\n var cssName = dasherize(prop);\r\n var styleExpr = cssName + \": \" + value + \";\";\r\n setStyle(element, styleExpr, false)\r\n }\r\n};\r\nclass BoxItem extends CollectionWidgetItem {\r\n _renderVisible(value, oldValue) {\r\n super._renderVisible(value);\r\n if (isDefined(oldValue)) {\r\n this._options.fireItemStateChangedAction({\r\n name: \"visible\",\r\n state: value,\r\n oldState: oldValue\r\n })\r\n }\r\n }\r\n}\r\nclass LayoutStrategy {\r\n constructor($element, option) {\r\n this._$element = $element;\r\n this._option = option\r\n }\r\n renderBox() {\r\n this._$element.css({\r\n display: stylePropPrefix(\"flexDirection\") + \"flex\"\r\n });\r\n setFlexProp(this._$element.get(0), \"flexDirection\", FLEX_DIRECTION_MAP[this._option(\"direction\")])\r\n }\r\n renderAlign() {\r\n this._$element.css({\r\n justifyContent: this._normalizedAlign()\r\n })\r\n }\r\n _normalizedAlign() {\r\n var align = this._option(\"align\");\r\n return align in FLEX_JUSTIFY_CONTENT_MAP ? FLEX_JUSTIFY_CONTENT_MAP[align] : align\r\n }\r\n renderCrossAlign() {\r\n this._$element.css({\r\n alignItems: this._normalizedCrossAlign()\r\n })\r\n }\r\n _normalizedCrossAlign() {\r\n var crossAlign = this._option(\"crossAlign\");\r\n return crossAlign in FLEX_ALIGN_ITEMS_MAP ? FLEX_ALIGN_ITEMS_MAP[crossAlign] : crossAlign\r\n }\r\n renderItems($items) {\r\n var flexPropPrefix = stylePropPrefix(\"flexDirection\");\r\n var direction = this._option(\"direction\");\r\n each($items, (function() {\r\n var $item = $(this);\r\n var item = $item.data(BOX_ITEM_DATA_KEY);\r\n $item.css({\r\n display: flexPropPrefix + \"flex\"\r\n }).css(MAXSIZE_MAP[direction], item.maxSize || \"none\").css(MINSIZE_MAP[direction], item.minSize || \"0\");\r\n setFlexProp($item.get(0), \"flexBasis\", item.baseSize || 0);\r\n setFlexProp($item.get(0), \"flexGrow\", item.ratio);\r\n setFlexProp($item.get(0), \"flexShrink\", isDefined(item.shrink) ? item.shrink : SHRINK);\r\n $item.children().each((_, itemContent) => {\r\n $(itemContent).css({\r\n width: \"auto\",\r\n height: \"auto\",\r\n display: stylePropPrefix(\"flexDirection\") + \"flex\",\r\n flexBasis: 0\r\n });\r\n setFlexProp(itemContent, \"flexGrow\", 1);\r\n setFlexProp(itemContent, \"flexDirection\", $(itemContent)[0].style.flexDirection || \"column\")\r\n })\r\n }))\r\n }\r\n}\r\nclass Box extends CollectionWidget {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n direction: \"row\",\r\n align: \"start\",\r\n crossAlign: \"stretch\",\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n onItemStateChanged: void 0,\r\n _queue: void 0\r\n })\r\n }\r\n _itemClass() {\r\n return BOX_ITEM_CLASS\r\n }\r\n _itemDataKey() {\r\n return BOX_ITEM_DATA_KEY\r\n }\r\n _itemElements() {\r\n return this._itemContainer().children(this._itemSelector())\r\n }\r\n _init() {\r\n super._init();\r\n this.$element().addClass(BOX_FLEX_CLASS);\r\n this._initLayout();\r\n this._initBoxQueue()\r\n }\r\n _initLayout() {\r\n this._layout = new LayoutStrategy(this.$element(), this.option.bind(this))\r\n }\r\n _initBoxQueue() {\r\n this._queue = this.option(\"_queue\") || []\r\n }\r\n _queueIsNotEmpty() {\r\n return this.option(\"_queue\") ? false : !!this._queue.length\r\n }\r\n _pushItemToQueue($item, config) {\r\n this._queue.push({\r\n $item: $item,\r\n config: config\r\n })\r\n }\r\n _shiftItemFromQueue() {\r\n return this._queue.shift()\r\n }\r\n _initMarkup() {\r\n this.$element().addClass(BOX_CLASS);\r\n this._layout.renderBox();\r\n super._initMarkup();\r\n this._renderAlign();\r\n this._renderActions()\r\n }\r\n _renderActions() {\r\n this._onItemStateChanged = this._createActionByOption(\"onItemStateChanged\")\r\n }\r\n _renderAlign() {\r\n this._layout.renderAlign();\r\n this._layout.renderCrossAlign()\r\n }\r\n _renderItems(items) {\r\n super._renderItems(items);\r\n while (this._queueIsNotEmpty()) {\r\n var item = this._shiftItemFromQueue();\r\n this._createComponent(item.$item, Box, extend({\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n onItemHold: this.option(\"onItemHold\"),\r\n onItemClick: this.option(\"onItemClick\"),\r\n onItemContextMenu: this.option(\"onItemContextMenu\"),\r\n onItemRendered: this.option(\"onItemRendered\"),\r\n _queue: this._queue\r\n }, item.config))\r\n }\r\n this._layout.renderItems(this._itemElements())\r\n }\r\n _renderItemContent(args) {\r\n var $itemNode = args.itemData && args.itemData.node;\r\n if ($itemNode) {\r\n return this._renderItemContentByNode(args, $itemNode)\r\n }\r\n return super._renderItemContent(args)\r\n }\r\n _postprocessRenderItem(args) {\r\n var boxConfig = args.itemData.box;\r\n if (!boxConfig) {\r\n return\r\n }\r\n this._pushItemToQueue(args.itemContent, boxConfig)\r\n }\r\n _createItemByTemplate(itemTemplate, args) {\r\n if (args.itemData.box) {\r\n return itemTemplate.source ? itemTemplate.source() : $()\r\n }\r\n return super._createItemByTemplate(itemTemplate, args)\r\n }\r\n _itemOptionChanged(item, property, value, oldValue) {\r\n if (\"visible\" === property) {\r\n this._onItemStateChanged({\r\n name: property,\r\n state: value,\r\n oldState: false !== oldValue\r\n })\r\n }\r\n super._itemOptionChanged(item, property, value)\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"_queue\":\r\n case \"direction\":\r\n this._invalidate();\r\n break;\r\n case \"align\":\r\n this._layout.renderAlign();\r\n break;\r\n case \"crossAlign\":\r\n this._layout.renderCrossAlign();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _itemOptions() {\r\n var options = super._itemOptions();\r\n options.fireItemStateChangedAction = e => {\r\n this._onItemStateChanged(e)\r\n };\r\n return options\r\n }\r\n}\r\nBox.ItemClass = BoxItem;\r\nregisterComponent(\"dxBox\", Box);\r\nexport default Box;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.time_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Editor from \"../editor/editor\";\r\nimport NumberBox from \"../number_box\";\r\nimport SelectBox from \"../select_box\";\r\nimport Box from \"../box\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nvar TIMEVIEW_CLASS = \"dx-timeview\";\r\nvar TIMEVIEW_CLOCK_CLASS = \"dx-timeview-clock\";\r\nvar TIMEVIEW_FIELD_CLASS = \"dx-timeview-field\";\r\nvar TIMEVIEW_HOURARROW_CLASS = \"dx-timeview-hourarrow\";\r\nvar TIMEVIEW_TIME_SEPARATOR_CLASS = \"dx-timeview-time-separator\";\r\nvar TIMEVIEW_FORMAT12_CLASS = \"dx-timeview-format12\";\r\nvar TIMEVIEW_FORMAT12_AM = -1;\r\nvar TIMEVIEW_FORMAT12_PM = 1;\r\nvar TIMEVIEW_MINUTEARROW_CLASS = \"dx-timeview-minutearrow\";\r\nvar rotateArrow = function($arrow, angle, offset) {\r\n cssRotate($arrow, angle, offset)\r\n};\r\nvar cssRotate = function($arrow, angle, offset) {\r\n $arrow.css(\"transform\", \"rotate(\" + angle + \"deg) translate(0,\" + offset + \"px)\")\r\n};\r\nvar TimeView = Editor.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: new Date(Date.now()),\r\n use24HourFormat: true,\r\n _showClock: true,\r\n _arrowOffset: 5,\r\n stylingMode: void 0\r\n })\r\n },\r\n _getValue: function() {\r\n return this.option(\"value\") || new Date\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(TIMEVIEW_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderBox();\r\n this._updateTime()\r\n },\r\n _renderBox: function() {\r\n var $box = $(\"<div>\").appendTo(this.$element());\r\n var items = [];\r\n if (this.option(\"_showClock\")) {\r\n items.push({\r\n ratio: 1,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: this._renderClock.bind(this)\r\n })\r\n }\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: this._renderField.bind(this)\r\n });\r\n this._createComponent($box, Box, {\r\n height: \"100%\",\r\n width: \"100%\",\r\n direction: \"col\",\r\n items: items\r\n })\r\n },\r\n _renderClock: function(_, __, container) {\r\n this._$hourArrow = $(\"<div>\").addClass(TIMEVIEW_HOURARROW_CLASS);\r\n this._$minuteArrow = $(\"<div>\").addClass(TIMEVIEW_MINUTEARROW_CLASS);\r\n var $container = $(container);\r\n $container.addClass(TIMEVIEW_CLOCK_CLASS).append(this._$hourArrow).append(this._$minuteArrow);\r\n this.setAria(\"role\", \"presentation\", $container)\r\n },\r\n _updateClock: function() {\r\n var time = this._getValue();\r\n var hourArrowAngle = time.getHours() / 12 * 360 + time.getMinutes() / 60 * 30;\r\n var minuteArrowAngle = time.getMinutes() / 60 * 360;\r\n rotateArrow(this._$hourArrow, hourArrowAngle, this.option(\"_arrowOffset\"));\r\n rotateArrow(this._$minuteArrow, minuteArrowAngle, this.option(\"_arrowOffset\"))\r\n },\r\n _getBoxItems: function(is12HourFormat) {\r\n var items = [{\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: () => this._hourBox.$element()\r\n }, {\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: $(\"<div>\").addClass(TIMEVIEW_TIME_SEPARATOR_CLASS).text(dateLocalization.getTimeSeparator())\r\n }, {\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: () => this._minuteBox.$element()\r\n }];\r\n if (is12HourFormat) {\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n template: () => this._format12.$element()\r\n })\r\n }\r\n return items\r\n },\r\n _renderField: function() {\r\n var is12HourFormat = !this.option(\"use24HourFormat\");\r\n this._createHourBox(is12HourFormat);\r\n this._createMinuteBox();\r\n if (is12HourFormat) {\r\n this._createFormat12Box()\r\n }\r\n return this._createComponent($(\"<div>\").addClass(TIMEVIEW_FIELD_CLASS), Box, {\r\n direction: \"row\",\r\n align: \"center\",\r\n crossAlign: \"center\",\r\n items: this._getBoxItems(is12HourFormat)\r\n }).$element()\r\n },\r\n _createHourBox: function(is12HourFormat) {\r\n var editor = this._hourBox = this._createComponent($(\"<div>\"), NumberBox, extend({\r\n min: -1,\r\n max: is12HourFormat ? 13 : 24,\r\n value: this._getValue().getHours(),\r\n onValueChanged: this._onHourBoxValueChanged.bind(this),\r\n onKeyboardHandled: opts => this._keyboardHandler(opts)\r\n }, this._getNumberBoxConfig()));\r\n editor.setAria(\"label\", \"hours\")\r\n },\r\n _isPM: function() {\r\n return !this.option(\"use24HourFormat\") && 1 === this._format12.option(\"value\")\r\n },\r\n _onHourBoxValueChanged: function(_ref) {\r\n var {\r\n value: value,\r\n component: component\r\n } = _ref;\r\n var currentValue = this._getValue();\r\n var newValue = new Date(currentValue);\r\n var newHours = this._convertMaxHourToMin(value);\r\n component.option(\"value\", newHours);\r\n if (this._isPM()) {\r\n newHours += 12\r\n }\r\n newValue.setHours(newHours);\r\n dateUtils.normalizeTime(newValue);\r\n this.option(\"value\", newValue)\r\n },\r\n _convertMaxHourToMin: function(hours) {\r\n var maxHoursValue = this.option(\"use24HourFormat\") ? 24 : 12;\r\n return (maxHoursValue + hours) % maxHoursValue\r\n },\r\n _createMinuteBox: function() {\r\n var editor = this._minuteBox = this._createComponent($(\"<div>\"), NumberBox, extend({\r\n min: -1,\r\n max: 60,\r\n value: this._getValue().getMinutes(),\r\n onKeyboardHandled: opts => this._keyboardHandler(opts),\r\n onValueChanged: _ref2 => {\r\n var {\r\n value: value,\r\n component: component\r\n } = _ref2;\r\n var newMinutes = (60 + value) % 60;\r\n component.option(\"value\", newMinutes);\r\n var time = new Date(this._getValue());\r\n time.setMinutes(newMinutes);\r\n dateUtils.normalizeTime(time);\r\n this.option(\"value\", time)\r\n }\r\n }, this._getNumberBoxConfig()));\r\n editor.setAria(\"label\", \"minutes\")\r\n },\r\n _createFormat12Box: function() {\r\n var periodNames = dateLocalization.getPeriodNames();\r\n var editor = this._format12 = this._createComponent($(\"<div>\").addClass(TIMEVIEW_FORMAT12_CLASS), SelectBox, {\r\n items: [{\r\n value: TIMEVIEW_FORMAT12_AM,\r\n text: periodNames[0]\r\n }, {\r\n value: TIMEVIEW_FORMAT12_PM,\r\n text: periodNames[1]\r\n }],\r\n valueExpr: \"value\",\r\n displayExpr: \"text\",\r\n onKeyboardHandled: opts => this._keyboardHandler(opts),\r\n onValueChanged: _ref3 => {\r\n var {\r\n value: value\r\n } = _ref3;\r\n var hours = this._getValue().getHours();\r\n var time = new Date(this._getValue());\r\n var newHours = (hours + 12 * value) % 24;\r\n time.setHours(newHours);\r\n this.option(\"value\", time)\r\n },\r\n value: this._getValue().getHours() >= 12 ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM,\r\n stylingMode: this.option(\"stylingMode\")\r\n });\r\n editor.setAria(\"label\", \"type\")\r\n },\r\n _refreshFormat12: function() {\r\n if (this.option(\"use24HourFormat\")) {\r\n return\r\n }\r\n var value = this._getValue();\r\n var hours = value.getHours();\r\n var isPM = hours >= 12;\r\n var newValue = isPM ? TIMEVIEW_FORMAT12_PM : TIMEVIEW_FORMAT12_AM;\r\n this._silentEditorValueUpdate(this._format12, newValue)\r\n },\r\n _silentEditorValueUpdate: function(editor, value) {\r\n if (editor) {\r\n editor._suppressValueChangeAction();\r\n editor.option(\"value\", value);\r\n editor._resumeValueChangeAction()\r\n }\r\n },\r\n _getNumberBoxConfig: function() {\r\n return {\r\n showSpinButtons: true,\r\n displayValueFormatter: function(value) {\r\n return (value < 10 ? \"0\" : \"\") + value\r\n },\r\n stylingMode: this.option(\"stylingMode\")\r\n }\r\n },\r\n _normalizeHours: function(hours) {\r\n return this.option(\"use24HourFormat\") ? hours : hours % 12 || 12\r\n },\r\n _updateField: function() {\r\n var hours = this._normalizeHours(this._getValue().getHours());\r\n this._silentEditorValueUpdate(this._hourBox, hours);\r\n this._silentEditorValueUpdate(this._minuteBox, this._getValue().getMinutes());\r\n this._refreshFormat12()\r\n },\r\n _updateTime: function() {\r\n if (this.option(\"_showClock\")) {\r\n this._updateClock()\r\n }\r\n this._updateField()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateTime()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"value\":\r\n this._updateTime();\r\n this.callBase(args);\r\n break;\r\n case \"_arrowOffset\":\r\n break;\r\n case \"use24HourFormat\":\r\n case \"_showClock\":\r\n case \"stylingMode\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxTimeView\", TimeView);\r\nexport default TimeView;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.calendar_with_time.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport CalendarStrategy from \"./ui.date_box.strategy.calendar\";\r\nimport TimeView from \"./ui.time_view\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport Box from \"../box\";\r\nimport uiDateUtils from \"./ui.date_utils\";\r\nvar SHRINK_VIEW_SCREEN_WIDTH = 573;\r\nvar DATEBOX_ADAPTIVITY_MODE_CLASS = \"dx-datebox-adaptivity-mode\";\r\nvar DATEBOX_TIMEVIEW_SIDE_CLASS = \"dx-datebox-datetime-time-side\";\r\nvar CalendarWithTimeStrategy = CalendarStrategy.inherit({\r\n NAME: \"CalendarWithTime\",\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n applyValueMode: \"useButtons\",\r\n buttonsLocation: \"bottom after\",\r\n \"dropDownOptions.showTitle\": false\r\n })\r\n },\r\n _closeDropDownByEnter: function() {\r\n return dateUtils.sameDate(this._getContouredValue(), this.widgetOption(\"value\"))\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shortdateshorttime\"\r\n },\r\n _is24HourFormat: function() {\r\n return dateLocalization.is24HourFormat(this.getDisplayFormat(this.dateBox.option(\"displayFormat\")))\r\n },\r\n _getContouredValue: function() {\r\n var viewDate = this.callBase();\r\n return this._updateDateTime(viewDate)\r\n },\r\n _renderWidget: function() {\r\n this.callBase();\r\n this._timeView = this.dateBox._createComponent($(\"<div>\"), TimeView, {\r\n value: this.dateBoxValue(),\r\n _showClock: !this._isShrinkView(),\r\n use24HourFormat: this._is24HourFormat(),\r\n onValueChanged: this._valueChangedHandler.bind(this),\r\n stylingMode: this.dateBox.option(\"stylingMode\")\r\n });\r\n this._timeView.registerKeyHandler(\"escape\", this._escapeHandler.bind(this))\r\n },\r\n renderOpenedState: function() {\r\n this.callBase();\r\n var popup = this._getPopup();\r\n if (popup) {\r\n popup.$wrapper().toggleClass(DATEBOX_ADAPTIVITY_MODE_CLASS, this._isSmallScreen())\r\n }\r\n clearTimeout(this._repaintTimer);\r\n this._repaintTimer = setTimeout(function() {\r\n this._getPopup() && this._getPopup().repaint()\r\n }.bind(this), 0)\r\n },\r\n isAdaptivityChanged: function() {\r\n var isAdaptiveMode = this._isShrinkView();\r\n var currentAdaptiveMode = this._currentAdaptiveMode;\r\n if (isAdaptiveMode !== currentAdaptiveMode) {\r\n this._currentAdaptiveMode = isAdaptiveMode;\r\n return void 0 !== currentAdaptiveMode\r\n }\r\n return this.callBase()\r\n },\r\n _updateValue: function(preventDefaultValue) {\r\n var date = this.dateBoxValue();\r\n if (!date && !preventDefaultValue) {\r\n date = new Date;\r\n uiDateUtils.normalizeTime(date)\r\n }\r\n this.callBase();\r\n if (this._timeView) {\r\n date && this._timeView.option(\"value\", date);\r\n this._timeView.option(\"use24HourFormat\", this._is24HourFormat())\r\n }\r\n },\r\n _isSmallScreen: function() {\r\n return getWidth(window) <= SHRINK_VIEW_SCREEN_WIDTH\r\n },\r\n _isShrinkView: function() {\r\n return !this.dateBox.option(\"showAnalogClock\") || this.dateBox.option(\"adaptivityEnabled\") && this._isSmallScreen()\r\n },\r\n _getBoxItems: function() {\r\n var items = [{\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n name: \"calendar\"\r\n }];\r\n if (!this._isShrinkView()) {\r\n items.push({\r\n ratio: 0,\r\n shrink: 0,\r\n baseSize: \"auto\",\r\n name: \"time\"\r\n })\r\n }\r\n return items\r\n },\r\n renderPopupContent: function() {\r\n this.callBase();\r\n this._currentAdaptiveMode = this._isShrinkView();\r\n var $popupContent = this._getPopup().$content();\r\n this._box = this.dateBox._createComponent($(\"<div>\").appendTo($popupContent), Box, {\r\n direction: \"row\",\r\n crossAlign: \"stretch\",\r\n items: this._getBoxItems(),\r\n itemTemplate: function(data, i, element) {\r\n var $container = $(\"<div>\");\r\n switch (data.name) {\r\n case \"calendar\":\r\n $container.append(this._widget.$element());\r\n if (this._isShrinkView()) {\r\n this._timeView.$element().addClass(DATEBOX_TIMEVIEW_SIDE_CLASS);\r\n $container.append(this._timeView.$element())\r\n }\r\n break;\r\n case \"time\":\r\n $container.append(this._timeView.$element());\r\n $(element).addClass(DATEBOX_TIMEVIEW_SIDE_CLASS)\r\n }\r\n return $container\r\n }.bind(this)\r\n });\r\n this._attachTabHandler()\r\n },\r\n popupConfig: function(_popupConfig) {\r\n var calendarPopupConfig = this.callBase(_popupConfig);\r\n return extend(calendarPopupConfig, {\r\n width: \"auto\"\r\n })\r\n },\r\n getFirstPopupElement: function() {\r\n return this._timeView._hourBox.$element().find(\"input\")\r\n },\r\n _attachTabHandler: function() {\r\n var dateBox = this.dateBox;\r\n this._timeView._hourBox.registerKeyHandler(\"tab\", (function(e) {\r\n if (e.shiftKey) {\r\n e.preventDefault();\r\n dateBox.focus()\r\n }\r\n }))\r\n },\r\n _preventFocusOnPopup: function(e) {\r\n if (!$(e.target).hasClass(\"dx-texteditor-input\")) {\r\n this.callBase.apply(this, arguments);\r\n if (!this.dateBox._hasFocusClass()) {\r\n this.dateBox.focus()\r\n }\r\n }\r\n },\r\n _updateDateTime: function(date) {\r\n var time = this._timeView.option(\"value\");\r\n date.setHours(time.getHours(), time.getMinutes(), time.getSeconds(), time.getMilliseconds());\r\n return date\r\n },\r\n getValue: function() {\r\n var _this$_widget$option;\r\n var date = null !== (_this$_widget$option = this._widget.option(\"value\")) && void 0 !== _this$_widget$option ? _this$_widget$option : this._widget.getContouredDate();\r\n date = date ? new Date(date) : new Date;\r\n return this._updateDateTime(date)\r\n },\r\n dispose: function() {\r\n clearTimeout(this._removeMinWidthTimer);\r\n clearTimeout(this._repaintTimer);\r\n this.callBase()\r\n }\r\n});\r\nexport default CalendarWithTimeStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.strategy.list.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n getWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport List from \"../list_light\";\r\nimport \"../list/modules/selection\";\r\nimport DateBoxStrategy from \"./ui.date_box.strategy\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport {\r\n isDate\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport dateUtils from \"./ui.date_utils\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n getSizeValue\r\n} from \"../drop_down_editor/utils\";\r\nvar DATE_FORMAT = \"date\";\r\nvar BOUNDARY_VALUES = {\r\n min: new Date(0, 0, 0, 0, 0),\r\n max: new Date(0, 0, 0, 23, 59)\r\n};\r\nvar ListStrategy = DateBoxStrategy.inherit({\r\n NAME: \"List\",\r\n supportedKeys: function() {\r\n return {\r\n tab: function() {\r\n var {\r\n opened: opened,\r\n applyValueMode: applyValueMode\r\n } = this.option();\r\n if (opened && \"instantly\" === applyValueMode) {\r\n this.close()\r\n }\r\n },\r\n space: noop,\r\n home: noop,\r\n end: noop\r\n }\r\n },\r\n getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n applyValueMode: \"instantly\"\r\n })\r\n },\r\n getDisplayFormat: function(displayFormat) {\r\n return displayFormat || \"shorttime\"\r\n },\r\n popupConfig: function(_popupConfig) {\r\n return _popupConfig\r\n },\r\n getValue: function() {\r\n var selectedIndex = this._widget.option(\"selectedIndex\");\r\n if (-1 === selectedIndex) {\r\n return this.dateBox.option(\"value\")\r\n }\r\n var itemData = this._widgetItems[selectedIndex];\r\n return this._getDateByItemData(itemData)\r\n },\r\n useCurrentDateByDefault: function() {\r\n return true\r\n },\r\n getDefaultDate: function() {\r\n return new Date(null)\r\n },\r\n popupShowingHandler: function() {\r\n this.dateBox._dimensionChanged()\r\n },\r\n _renderWidget: function() {\r\n this.callBase();\r\n this._refreshItems()\r\n },\r\n _getWidgetName: function() {\r\n return List\r\n },\r\n _getWidgetOptions: function() {\r\n return {\r\n itemTemplate: this._timeListItemTemplate.bind(this),\r\n onItemClick: this._listItemClickHandler.bind(this),\r\n tabIndex: -1,\r\n onFocusedItemChanged: this._refreshActiveDescendant.bind(this),\r\n selectionMode: \"single\"\r\n }\r\n },\r\n _refreshActiveDescendant: function(e) {\r\n this.dateBox.setAria(\"activedescendant\", \"\");\r\n this.dateBox.setAria(\"activedescendant\", e.actionValue)\r\n },\r\n _refreshItems: function() {\r\n this._widgetItems = this._getTimeListItems();\r\n this._widget.option(\"items\", this._widgetItems)\r\n },\r\n renderOpenedState: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._widget.option(\"focusedElement\", null);\r\n this._setSelectedItemsByValue();\r\n if (this._widget.option(\"templatesRenderAsynchronously\")) {\r\n this._asyncScrollTimeout = setTimeout(this._scrollToSelectedItem.bind(this))\r\n } else {\r\n this._scrollToSelectedItem()\r\n }\r\n },\r\n dispose: function() {\r\n this.callBase();\r\n clearTimeout(this._asyncScrollTimeout)\r\n },\r\n _updateValue: function() {\r\n if (!this._widget) {\r\n return\r\n }\r\n this._refreshItems();\r\n this._setSelectedItemsByValue();\r\n this._scrollToSelectedItem()\r\n },\r\n _setSelectedItemsByValue: function() {\r\n var value = this.dateBoxValue();\r\n var dateIndex = this._getDateIndex(value);\r\n if (-1 === dateIndex) {\r\n this._widget.option(\"selectedItems\", [])\r\n } else {\r\n this._widget.option(\"selectedIndex\", dateIndex)\r\n }\r\n },\r\n _scrollToSelectedItem: function() {\r\n this._widget.scrollToItem(this._widget.option(\"selectedIndex\"))\r\n },\r\n _getDateIndex: function(date) {\r\n var result = -1;\r\n for (var i = 0, n = this._widgetItems.length; i < n; i++) {\r\n if (this._areDatesEqual(date, this._widgetItems[i])) {\r\n result = i;\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _areDatesEqual: function(first, second) {\r\n return isDate(first) && isDate(second) && first.getHours() === second.getHours() && first.getMinutes() === second.getMinutes()\r\n },\r\n _getTimeListItems: function() {\r\n var min = this.dateBox.dateOption(\"min\") || this._getBoundaryDate(\"min\");\r\n var max = this.dateBox.dateOption(\"max\") || this._getBoundaryDate(\"max\");\r\n var value = this.dateBox.dateOption(\"value\") || null;\r\n var delta = max - min;\r\n var minutes = min.getMinutes() % this.dateBox.option(\"interval\");\r\n if (delta < 0) {\r\n return []\r\n }\r\n if (delta > dateUtils.ONE_DAY) {\r\n delta = dateUtils.ONE_DAY\r\n }\r\n if (value - min < dateUtils.ONE_DAY) {\r\n return this._getRangeItems(min, new Date(min), delta)\r\n }\r\n min = this._getBoundaryDate(\"min\");\r\n min.setMinutes(minutes);\r\n if (value && Math.abs(value - max) < dateUtils.ONE_DAY) {\r\n delta = (60 * max.getHours() + Math.abs(max.getMinutes() - minutes)) * dateUtils.ONE_MINUTE\r\n }\r\n return this._getRangeItems(min, new Date(min), delta)\r\n },\r\n _getRangeItems: function(startValue, currentValue, rangeDuration) {\r\n var rangeItems = [];\r\n var interval = this.dateBox.option(\"interval\");\r\n while (currentValue - startValue <= rangeDuration) {\r\n rangeItems.push(new Date(currentValue));\r\n currentValue.setMinutes(currentValue.getMinutes() + interval)\r\n }\r\n return rangeItems\r\n },\r\n _getBoundaryDate: function(boundary) {\r\n var boundaryValue = BOUNDARY_VALUES[boundary];\r\n var currentValue = new Date(ensureDefined(this.dateBox.dateOption(\"value\"), 0));\r\n return new Date(currentValue.getFullYear(), currentValue.getMonth(), currentValue.getDate(), boundaryValue.getHours(), boundaryValue.getMinutes())\r\n },\r\n _timeListItemTemplate: function(itemData) {\r\n var displayFormat = this.dateBox.option(\"displayFormat\");\r\n return dateLocalization.format(itemData, this.getDisplayFormat(displayFormat))\r\n },\r\n _listItemClickHandler: function(e) {\r\n if (\"useButtons\" === this.dateBox.option(\"applyValueMode\")) {\r\n return\r\n }\r\n var date = this._getDateByItemData(e.itemData);\r\n this.dateBox.option(\"opened\", false);\r\n this.dateBoxValue(date, e.event)\r\n },\r\n _getDateByItemData: function(itemData) {\r\n var date = this.dateBox.option(\"value\");\r\n var hours = itemData.getHours();\r\n var minutes = itemData.getMinutes();\r\n var seconds = itemData.getSeconds();\r\n var year = itemData.getFullYear();\r\n var month = itemData.getMonth();\r\n var day = itemData.getDate();\r\n if (date) {\r\n if (this.dateBox.option(\"dateSerializationFormat\")) {\r\n date = dateSerialization.deserializeDate(date)\r\n } else {\r\n date = new Date(date)\r\n }\r\n date.setHours(hours);\r\n date.setMinutes(minutes);\r\n date.setSeconds(seconds);\r\n date.setFullYear(year);\r\n date.setMonth(month);\r\n date.setDate(day)\r\n } else {\r\n date = new Date(year, month, day, hours, minutes, 0, 0)\r\n }\r\n return date\r\n },\r\n getKeyboardListener: function() {\r\n return this._widget\r\n },\r\n _updatePopupHeight: function() {\r\n var dropDownOptionsHeight = getSizeValue(this.dateBox.option(\"dropDownOptions.height\"));\r\n if (void 0 === dropDownOptionsHeight || \"auto\" === dropDownOptionsHeight) {\r\n this.dateBox._setPopupOption(\"height\", \"auto\");\r\n var popupHeight = getOuterHeight(this._widget.$element());\r\n var maxHeight = .45 * getHeight(window);\r\n this.dateBox._setPopupOption(\"height\", Math.min(popupHeight, maxHeight))\r\n }\r\n this.dateBox._timeList && this.dateBox._timeList.updateDimensions()\r\n },\r\n getParsedText: function(text, format) {\r\n var value = this.callBase(text, format);\r\n if (value) {\r\n value = dateUtils.mergeDates(value, new Date(null), DATE_FORMAT)\r\n }\r\n return value\r\n }\r\n});\r\nexport default ListStrategy;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nvar window = getWindow();\r\nimport {\r\n isDate as isDateType,\r\n isString,\r\n isNumeric\r\n} from \"../../core/utils/type\";\r\nimport {\r\n createTextElementHiddenCopy\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n inputType\r\n} from \"../../core/utils/support\";\r\nimport devices from \"../../core/devices\";\r\nimport config from \"../../core/config\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport uiDateUtils from \"./ui.date_utils\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport DropDownEditor from \"../drop_down_editor/ui.drop_down_editor\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Calendar from \"./ui.date_box.strategy.calendar\";\r\nimport DateView from \"./ui.date_box.strategy.date_view\";\r\nimport Native from \"./ui.date_box.strategy.native\";\r\nimport CalendarWithTime from \"./ui.date_box.strategy.calendar_with_time\";\r\nimport List from \"./ui.date_box.strategy.list\";\r\nvar DATEBOX_CLASS = \"dx-datebox\";\r\nvar DX_AUTO_WIDTH_CLASS = \"dx-auto-width\";\r\nvar DX_INVALID_BADGE_CLASS = \"dx-show-invalid-badge\";\r\nvar DX_CLEAR_BUTTON_CLASS = \"dx-clear-button-area\";\r\nvar DATEBOX_WRAPPER_CLASS = \"dx-datebox-wrapper\";\r\nvar DROPDOWNEDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar PICKER_TYPE = {\r\n calendar: \"calendar\",\r\n rollers: \"rollers\",\r\n list: \"list\",\r\n native: \"native\"\r\n};\r\nvar TYPE = {\r\n date: \"date\",\r\n datetime: \"datetime\",\r\n time: \"time\"\r\n};\r\nvar STRATEGY_NAME = {\r\n calendar: \"Calendar\",\r\n dateView: \"DateView\",\r\n native: \"Native\",\r\n calendarWithTime: \"CalendarWithTime\",\r\n list: \"List\"\r\n};\r\nvar STRATEGY_CLASSES = {\r\n Calendar: Calendar,\r\n DateView: DateView,\r\n Native: Native,\r\n CalendarWithTime: CalendarWithTime,\r\n List: List\r\n};\r\nvar DateBox = DropDownEditor.inherit({\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), this._strategy.supportedKeys())\r\n },\r\n _renderButtonContainers: function() {\r\n this.callBase.apply(this, arguments);\r\n this._strategy.customizeButtons()\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n type: \"date\",\r\n showAnalogClock: true,\r\n value: null,\r\n dateSerializationFormat: void 0,\r\n min: void 0,\r\n max: void 0,\r\n displayFormat: null,\r\n interval: 30,\r\n disabledDates: null,\r\n pickerType: PICKER_TYPE.calendar,\r\n invalidDateMessage: messageLocalization.format(\"dxDateBox-validation-datetime\"),\r\n dateOutOfRangeMessage: messageLocalization.format(\"validation-range\"),\r\n applyButtonText: messageLocalization.format(\"OK\"),\r\n adaptivityEnabled: false,\r\n calendarOptions: {},\r\n useHiddenSubmitElement: true,\r\n _showValidationIcon: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n \"dropDownOptions.showTitle\": true\r\n }\r\n }, {\r\n device: {\r\n platform: \"android\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom after\"\r\n }\r\n }, {\r\n device: function() {\r\n var realDevice = devices.real();\r\n var platform = realDevice.platform;\r\n return \"ios\" === platform || \"android\" === platform\r\n },\r\n options: {\r\n pickerType: PICKER_TYPE.native\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\",\r\n deviceType: \"desktop\"\r\n },\r\n options: {\r\n buttonsLocation: \"bottom after\"\r\n }\r\n }])\r\n },\r\n _initOptions: function(options) {\r\n this._userOptions = extend({}, options);\r\n this.callBase(options);\r\n this._updatePickerOptions()\r\n },\r\n _updatePickerOptions: function() {\r\n var pickerType = this.option(\"pickerType\");\r\n var type = this.option(\"type\");\r\n if (pickerType === PICKER_TYPE.list && (type === TYPE.datetime || type === TYPE.date)) {\r\n pickerType = PICKER_TYPE.calendar\r\n }\r\n if (type === TYPE.time && pickerType === PICKER_TYPE.calendar) {\r\n pickerType = PICKER_TYPE.list\r\n }\r\n this.option(\"showDropDownButton\", \"generic\" !== devices.real().platform || pickerType !== PICKER_TYPE.native);\r\n this._pickerType = pickerType\r\n },\r\n _init: function() {\r\n this._initStrategy();\r\n this.option(extend({}, this._strategy.getDefaultOptions(), this._userOptions));\r\n delete this._userOptions;\r\n this.callBase()\r\n },\r\n _toLowerCaseFirstLetter: function(string) {\r\n return string.charAt(0).toLowerCase() + string.substr(1)\r\n },\r\n _initStrategy: function() {\r\n var strategyName = this._getStrategyName(this._getFormatType());\r\n var strategy = STRATEGY_CLASSES[strategyName];\r\n if (!(this._strategy && this._strategy.NAME === strategyName)) {\r\n this._strategy = new strategy(this)\r\n }\r\n },\r\n _getFormatType: function() {\r\n var currentType = this.option(\"type\");\r\n var isTime = /h|m|s/g.test(currentType);\r\n var isDate = /d|M|Y/g.test(currentType);\r\n var type = \"\";\r\n if (isDate) {\r\n type += TYPE.date\r\n }\r\n if (isTime) {\r\n type += TYPE.time\r\n }\r\n return type\r\n },\r\n _getStrategyName: function(type) {\r\n var pickerType = this._pickerType;\r\n if (pickerType === PICKER_TYPE.rollers) {\r\n return STRATEGY_NAME.dateView\r\n } else if (pickerType === PICKER_TYPE.native) {\r\n return STRATEGY_NAME.native\r\n }\r\n if (type === TYPE.date) {\r\n return STRATEGY_NAME.calendar\r\n }\r\n if (type === TYPE.datetime) {\r\n return STRATEGY_NAME.calendarWithTime\r\n }\r\n return STRATEGY_NAME.list\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(DATEBOX_CLASS);\r\n this.callBase();\r\n this._refreshFormatClass();\r\n this._refreshPickerTypeClass();\r\n this._strategy.renderInputMinMax(this._input())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._formatValidationIcon()\r\n },\r\n _renderDimensions: function() {\r\n this.callBase();\r\n this.$element().toggleClass(DX_AUTO_WIDTH_CLASS, !this.option(\"width\"));\r\n this._updatePopupWidth();\r\n this._updatePopupHeight()\r\n },\r\n _dimensionChanged: function() {\r\n this.callBase();\r\n this._updatePopupHeight()\r\n },\r\n _updatePopupHeight: function() {\r\n if (this._popup) {\r\n var _this$_strategy$_upda, _this$_strategy;\r\n null === (_this$_strategy$_upda = (_this$_strategy = this._strategy)._updatePopupHeight) || void 0 === _this$_strategy$_upda ? void 0 : _this$_strategy$_upda.call(_this$_strategy)\r\n }\r\n },\r\n _refreshFormatClass: function() {\r\n var $element = this.$element();\r\n each(TYPE, (function(_, item) {\r\n $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n }));\r\n $element.addClass(DATEBOX_CLASS + \"-\" + this.option(\"type\"))\r\n },\r\n _refreshPickerTypeClass: function() {\r\n var $element = this.$element();\r\n each(PICKER_TYPE, (function(_, item) {\r\n $element.removeClass(DATEBOX_CLASS + \"-\" + item)\r\n }));\r\n $element.addClass(DATEBOX_CLASS + \"-\" + this._pickerType)\r\n },\r\n _formatValidationIcon: function() {\r\n if (!hasWindow()) {\r\n return\r\n }\r\n var inputElement = this._input().get(0);\r\n var isRtlEnabled = this.option(\"rtlEnabled\");\r\n var clearButtonWidth = this._getClearButtonWidth();\r\n var longestElementDimensions = this._getLongestElementDimensions();\r\n var curWidth = parseFloat(window.getComputedStyle(inputElement).width) - clearButtonWidth;\r\n var shouldHideValidationIcon = longestElementDimensions.width > curWidth;\r\n var style = inputElement.style;\r\n this.$element().toggleClass(DX_INVALID_BADGE_CLASS, !shouldHideValidationIcon && this.option(\"_showValidationIcon\"));\r\n if (shouldHideValidationIcon) {\r\n if (void 0 === this._storedPadding) {\r\n this._storedPadding = isRtlEnabled ? longestElementDimensions.leftPadding : longestElementDimensions.rightPadding\r\n }\r\n isRtlEnabled ? style.paddingLeft = 0 : style.paddingRight = 0\r\n } else {\r\n isRtlEnabled ? style.paddingLeft = this._storedPadding + \"px\" : style.paddingRight = this._storedPadding + \"px\"\r\n }\r\n },\r\n _getClearButtonWidth: function() {\r\n var clearButtonWidth = 0;\r\n if (this._isClearButtonVisible() && \"\" === this._input().val()) {\r\n var clearButtonElement = this.$element().find(\".\" + DX_CLEAR_BUTTON_CLASS).get(0);\r\n clearButtonWidth = parseFloat(window.getComputedStyle(clearButtonElement).width)\r\n }\r\n return clearButtonWidth\r\n },\r\n _getLongestElementDimensions: function() {\r\n var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var longestValue = dateLocalization.format(uiDateUtils.getLongestDate(format, dateLocalization.getMonthNames(), dateLocalization.getDayNames()), format);\r\n var $input = this._input();\r\n var inputElement = $input.get(0);\r\n var $longestValueElement = createTextElementHiddenCopy($input, longestValue);\r\n var isPaddingStored = void 0 !== this._storedPadding;\r\n var storedPadding = !isPaddingStored ? 0 : this._storedPadding;\r\n $longestValueElement.appendTo(this.$element());\r\n var elementWidth = parseFloat(window.getComputedStyle($longestValueElement.get(0)).width);\r\n var rightPadding = parseFloat(window.getComputedStyle(inputElement).paddingRight);\r\n var leftPadding = parseFloat(window.getComputedStyle(inputElement).paddingLeft);\r\n var necessaryWidth = elementWidth + leftPadding + rightPadding + storedPadding;\r\n $longestValueElement.remove();\r\n return {\r\n width: necessaryWidth,\r\n leftPadding: leftPadding,\r\n rightPadding: rightPadding\r\n }\r\n },\r\n _getKeyboardListeners() {\r\n return this.callBase().concat([this._strategy && this._strategy.getKeyboardListener()])\r\n },\r\n _renderPopup: function() {\r\n this.callBase();\r\n this._popup.$wrapper().addClass(DATEBOX_WRAPPER_CLASS);\r\n this._renderPopupWrapper()\r\n },\r\n _getPopupToolbarItems() {\r\n var _this$_strategy$_getP, _this$_strategy$_getP2, _this$_strategy2;\r\n var defaultItems = this.callBase();\r\n return null !== (_this$_strategy$_getP = null === (_this$_strategy$_getP2 = (_this$_strategy2 = this._strategy)._getPopupToolbarItems) || void 0 === _this$_strategy$_getP2 ? void 0 : _this$_strategy$_getP2.call(_this$_strategy2, defaultItems)) && void 0 !== _this$_strategy$_getP ? _this$_strategy$_getP : defaultItems\r\n },\r\n _popupConfig: function() {\r\n var popupConfig = this.callBase();\r\n return extend(this._strategy.popupConfig(popupConfig), {\r\n title: this._getPopupTitle(),\r\n dragEnabled: false\r\n })\r\n },\r\n _renderPopupWrapper: function() {\r\n if (!this._popup) {\r\n return\r\n }\r\n var $element = this.$element();\r\n var classPostfixes = extend({}, TYPE, PICKER_TYPE);\r\n each(classPostfixes, function(_, item) {\r\n $element.removeClass(DATEBOX_WRAPPER_CLASS + \"-\" + item)\r\n }.bind(this));\r\n this._popup.$wrapper().addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this.option(\"type\")).addClass(DATEBOX_WRAPPER_CLASS + \"-\" + this._pickerType).addClass(DROPDOWNEDITOR_OVERLAY_CLASS)\r\n },\r\n _renderPopupContent: function() {\r\n this.callBase();\r\n this._strategy.renderPopupContent()\r\n },\r\n _getFirstPopupElement: function() {\r\n return this._strategy.getFirstPopupElement() || this.callBase()\r\n },\r\n _getLastPopupElement: function() {\r\n return this._strategy.getLastPopupElement() || this.callBase()\r\n },\r\n _popupShowingHandler: function() {\r\n this.callBase();\r\n this._strategy.popupShowingHandler()\r\n },\r\n _popupShownHandler: function() {\r\n this.callBase();\r\n this._strategy.renderOpenedState()\r\n },\r\n _popupHiddenHandler: function() {\r\n this.callBase();\r\n this._strategy.renderOpenedState();\r\n this._strategy.popupHiddenHandler()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._formatValidationIcon()\r\n }\r\n },\r\n _clearValueHandler: function(e) {\r\n this.option(\"text\", \"\");\r\n this.callBase(e)\r\n },\r\n _readOnlyPropValue: function() {\r\n if (this._pickerType === PICKER_TYPE.rollers) {\r\n return true\r\n }\r\n var platform = devices.real().platform;\r\n var isCustomValueDisabled = this._isNativeType() && (\"ios\" === platform || \"android\" === platform);\r\n if (isCustomValueDisabled) {\r\n return this.option(\"readOnly\")\r\n }\r\n return this.callBase()\r\n },\r\n _isClearButtonVisible: function() {\r\n return this.callBase() && !this._isNativeType()\r\n },\r\n _renderValue: function() {\r\n var value = this.dateOption(\"value\");\r\n this.option(\"text\", this._getDisplayedText(value));\r\n this._strategy.renderValue();\r\n return this.callBase()\r\n },\r\n _setSubmitValue: function() {\r\n var value = this.dateOption(\"value\");\r\n var dateSerializationFormat = this.option(\"dateSerializationFormat\");\r\n var submitFormat = uiDateUtils.SUBMIT_FORMATS_MAP[this.option(\"type\")];\r\n var submitValue = dateSerializationFormat ? dateSerialization.serializeDate(value, dateSerializationFormat) : uiDateUtils.toStandardDateFormat(value, submitFormat);\r\n this._getSubmitElement().val(submitValue)\r\n },\r\n _getDisplayedText: function(value) {\r\n var mode = this.option(\"mode\");\r\n var displayedText;\r\n if (\"text\" === mode) {\r\n var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n displayedText = dateLocalization.format(value, displayFormat)\r\n } else {\r\n var format = this._getFormatByMode(mode);\r\n if (format) {\r\n displayedText = dateLocalization.format(value, format)\r\n } else {\r\n displayedText = uiDateUtils.toStandardDateFormat(value, mode)\r\n }\r\n }\r\n return displayedText\r\n },\r\n _getFormatByMode: function(mode) {\r\n return inputType(mode) ? null : uiDateUtils.FORMATS_MAP[mode]\r\n },\r\n _valueChangeEventHandler: function(e) {\r\n var {\r\n text: text,\r\n type: type,\r\n validationError: validationError\r\n } = this.option();\r\n var currentValue = this.dateOption(\"value\");\r\n if (text === this._getDisplayedText(currentValue)) {\r\n this._recallInternalValidation(currentValue, validationError);\r\n return\r\n }\r\n var parsedDate = this._getParsedDate(text);\r\n var value = null !== currentValue && void 0 !== currentValue ? currentValue : this._getDateByDefault();\r\n var newValue = uiDateUtils.mergeDates(value, parsedDate, type);\r\n var date = parsedDate && \"time\" === type ? newValue : parsedDate;\r\n if (this._applyInternalValidation(date).isValid) {\r\n var displayedText = this._getDisplayedText(newValue);\r\n if (value && newValue && value.getTime() === newValue.getTime() && displayedText !== text) {\r\n this._renderValue()\r\n } else {\r\n this.dateValue(newValue, e)\r\n }\r\n }\r\n },\r\n _recallInternalValidation(value, validationError) {\r\n if (!validationError || validationError.editorSpecific) {\r\n this._applyInternalValidation(value);\r\n this._applyCustomValidation(value)\r\n }\r\n },\r\n _getDateByDefault: function() {\r\n return this._strategy.useCurrentDateByDefault() && this._strategy.getDefaultDate()\r\n },\r\n _getParsedDate: function(text) {\r\n var displayFormat = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var parsedText = this._strategy.getParsedText(text, displayFormat);\r\n return null !== parsedText && void 0 !== parsedText ? parsedText : void 0\r\n },\r\n _applyInternalValidation(value) {\r\n var text = this.option(\"text\");\r\n var hasText = !!text && null !== value;\r\n var isDate = !!value && isDateType(value) && !isNaN(value.getTime());\r\n var isDateInRange = isDate && dateUtils.dateInRange(value, this.dateOption(\"min\"), this.dateOption(\"max\"), this.option(\"type\"));\r\n var isValid = !hasText && !value || isDateInRange;\r\n var validationMessage = \"\";\r\n if (!isDate) {\r\n validationMessage = this.option(\"invalidDateMessage\")\r\n } else if (!isDateInRange) {\r\n validationMessage = this.option(\"dateOutOfRangeMessage\")\r\n }\r\n this._updateInternalValidationState(isValid, validationMessage);\r\n return {\r\n isValid: isValid,\r\n isDate: isDate\r\n }\r\n },\r\n _updateInternalValidationState(isValid, validationMessage) {\r\n this.option({\r\n isValid: isValid,\r\n validationError: isValid ? null : {\r\n editorSpecific: true,\r\n message: validationMessage\r\n }\r\n })\r\n },\r\n _applyCustomValidation: function(value) {\r\n this.validationRequest.fire({\r\n editor: this,\r\n value: this._serializeDate(value)\r\n })\r\n },\r\n _isValueChanged: function(newValue) {\r\n var oldValue = this.dateOption(\"value\");\r\n var oldTime = oldValue && oldValue.getTime();\r\n var newTime = newValue && newValue.getTime();\r\n return oldTime !== newTime\r\n },\r\n _isTextChanged: function(newValue) {\r\n var oldText = this.option(\"text\");\r\n var newText = newValue && this._getDisplayedText(newValue) || \"\";\r\n return oldText !== newText\r\n },\r\n _renderProps: function() {\r\n this.callBase();\r\n this._input().attr(\"autocomplete\", \"off\")\r\n },\r\n _renderOpenedState: function() {\r\n if (!this._isNativeType()) {\r\n this.callBase()\r\n }\r\n if (this._strategy.isAdaptivityChanged()) {\r\n this._refreshStrategy()\r\n }\r\n },\r\n _getPopupTitle: function() {\r\n var placeholder = this.option(\"placeholder\");\r\n if (placeholder) {\r\n return placeholder\r\n }\r\n var type = this.option(\"type\");\r\n if (type === TYPE.time) {\r\n return messageLocalization.format(\"dxDateBox-simulatedDataPickerTitleTime\")\r\n }\r\n if (type === TYPE.date || type === TYPE.datetime) {\r\n return messageLocalization.format(\"dxDateBox-simulatedDataPickerTitleDate\")\r\n }\r\n return \"\"\r\n },\r\n _refreshStrategy: function() {\r\n this._strategy.dispose();\r\n this._initStrategy();\r\n this.option(this._strategy.getDefaultOptions());\r\n this._refresh()\r\n },\r\n _applyButtonHandler: function(e) {\r\n var value = this._strategy.getValue();\r\n this.dateValue(value, e.event);\r\n this.callBase()\r\n },\r\n _dispose: function() {\r\n var _this$_strategy3;\r\n this.callBase();\r\n null === (_this$_strategy3 = this._strategy) || void 0 === _this$_strategy3 ? void 0 : _this$_strategy3.dispose()\r\n },\r\n _isNativeType: function() {\r\n return this._pickerType === PICKER_TYPE.native\r\n },\r\n _updatePopupTitle: function() {\r\n var _this$_popup;\r\n null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.option(\"title\", this._getPopupTitle())\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"showClearButton\":\r\n case \"buttons\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"pickerType\":\r\n this._updatePickerOptions({\r\n pickerType: args.value\r\n });\r\n this._refreshStrategy();\r\n this._refreshPickerTypeClass();\r\n this._invalidate();\r\n break;\r\n case \"type\":\r\n this._updatePickerOptions({\r\n format: args.value\r\n });\r\n this._refreshStrategy();\r\n this._refreshFormatClass();\r\n this._renderPopupWrapper();\r\n this._formatValidationIcon();\r\n this._updateValue();\r\n break;\r\n case \"placeholder\":\r\n this.callBase.apply(this, arguments);\r\n this._updatePopupTitle();\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n var isValid = this.option(\"isValid\");\r\n this._applyInternalValidation(this.dateOption(\"value\"));\r\n if (!isValid) {\r\n this._applyCustomValidation(this.dateOption(\"value\"))\r\n }\r\n this._invalidate();\r\n break;\r\n case \"dateSerializationFormat\":\r\n case \"interval\":\r\n case \"disabledDates\":\r\n case \"calendarOptions\":\r\n this._invalidate();\r\n break;\r\n case \"displayFormat\":\r\n this.option(\"text\", this._getDisplayedText(this.dateOption(\"value\")));\r\n this._renderInputValue();\r\n break;\r\n case \"text\":\r\n this._strategy.textChangedHandler(args.value);\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"isValid\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"showDropDownButton\":\r\n this._formatValidationIcon();\r\n this.callBase.apply(this, arguments);\r\n break;\r\n case \"readOnly\":\r\n this.callBase.apply(this, arguments);\r\n this._formatValidationIcon();\r\n break;\r\n case \"todayButtonText\":\r\n this._setPopupOption(\"toolbarItems\", this._getPopupToolbarItems());\r\n break;\r\n case \"invalidDateMessage\":\r\n case \"dateOutOfRangeMessage\":\r\n case \"adaptivityEnabled\":\r\n case \"showAnalogClock\":\r\n case \"_showValidationIcon\":\r\n break;\r\n default:\r\n this.callBase.apply(this, arguments)\r\n }\r\n },\r\n _getSerializationFormat: function() {\r\n var value = this.option(\"value\");\r\n if (this.option(\"dateSerializationFormat\") && config().forceIsoDateParsing) {\r\n return this.option(\"dateSerializationFormat\")\r\n }\r\n if (isNumeric(value)) {\r\n return \"number\"\r\n }\r\n if (!isString(value)) {\r\n return\r\n }\r\n return dateSerialization.getDateSerializationFormat(value)\r\n },\r\n _updateValue: function(value) {\r\n this.callBase();\r\n this._applyInternalValidation(null !== value && void 0 !== value ? value : this.dateOption(\"value\"))\r\n },\r\n dateValue: function(value, dxEvent) {\r\n var isValueChanged = this._isValueChanged(value);\r\n if (isValueChanged && dxEvent) {\r\n this._saveValueChangeEvent(dxEvent)\r\n }\r\n if (!isValueChanged) {\r\n if (this._isTextChanged(value)) {\r\n this._updateValue(value)\r\n } else if (\"\" === this.option(\"text\")) {\r\n this._applyCustomValidation(value)\r\n }\r\n }\r\n return this.dateOption(\"value\", value)\r\n },\r\n dateOption: function(optionName, value) {\r\n if (1 === arguments.length) {\r\n return dateSerialization.deserializeDate(this.option(optionName))\r\n }\r\n this.option(optionName, this._serializeDate(value))\r\n },\r\n _serializeDate: function(date) {\r\n var serializationFormat = this._getSerializationFormat();\r\n return dateSerialization.serializeDate(date, serializationFormat)\r\n },\r\n _clearValue: function() {\r\n var value = this.option(\"value\");\r\n this.callBase();\r\n if (null === value) {\r\n this._applyCustomValidation(null)\r\n }\r\n },\r\n reset: function() {\r\n var value = this.option(\"value\");\r\n this.callBase();\r\n if (null === value) {\r\n this._applyInternalValidation(null)\r\n }\r\n }\r\n});\r\nexport default DateBox;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.mask.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n addNamespace,\r\n normalizeKeyName,\r\n isCommandKeyPressed\r\n} from \"../../events/utils/index\";\r\nimport {\r\n isFunction,\r\n isString,\r\n isDate,\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n clipboardText\r\n} from \"../../core/utils/dom\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n fitIntoRange,\r\n inRange,\r\n sign\r\n} from \"../../core/utils/math\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n getDatePartIndexByPosition,\r\n renderDateParts\r\n} from \"./ui.date_box.mask.parts\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport {\r\n getRegExpInfo\r\n} from \"../../localization/ldml/date.parser\";\r\nimport {\r\n getFormat\r\n} from \"../../localization/ldml/date.format\";\r\nimport DateBoxBase from \"./ui.date_box.base\";\r\nimport numberLocalization from \"../../localization/number\";\r\nimport devices from \"../../core/devices\";\r\nimport browser from \"../../core/utils/browser\";\r\nvar MASK_EVENT_NAMESPACE = \"dateBoxMask\";\r\nvar FORWARD = 1;\r\nvar BACKWARD = -1;\r\nvar DateBoxMask = DateBoxBase.inherit({\r\n _supportedKeys(e) {\r\n var originalHandlers = this.callBase(e);\r\n var callOriginalHandler = e => {\r\n var originalHandler = originalHandlers[normalizeKeyName(e)];\r\n return originalHandler && originalHandler.apply(this, [e])\r\n };\r\n var applyHandler = (e, maskHandler) => {\r\n if (this._shouldUseOriginalHandler(e)) {\r\n return callOriginalHandler.apply(this, [e])\r\n } else {\r\n return maskHandler.apply(this, [e])\r\n }\r\n };\r\n return extend({}, originalHandlers, {\r\n del: e => applyHandler(e, event => {\r\n this._revertPart(FORWARD);\r\n this._isAllSelected() || event.preventDefault()\r\n }),\r\n backspace: e => applyHandler(e, event => {\r\n this._revertPart(BACKWARD);\r\n this._isAllSelected() || event.preventDefault()\r\n }),\r\n home: e => applyHandler(e, event => {\r\n this._selectFirstPart();\r\n event.preventDefault()\r\n }),\r\n end: e => applyHandler(e, event => {\r\n this._selectLastPart();\r\n event.preventDefault()\r\n }),\r\n escape: e => applyHandler(e, event => {\r\n this._revertChanges(event)\r\n }),\r\n enter: e => applyHandler(e, () => {\r\n this._enterHandler()\r\n }),\r\n leftArrow: e => applyHandler(e, event => {\r\n this._selectNextPart(BACKWARD);\r\n event.preventDefault()\r\n }),\r\n rightArrow: e => applyHandler(e, event => {\r\n this._selectNextPart(FORWARD);\r\n event.preventDefault()\r\n }),\r\n upArrow: e => applyHandler(e, event => {\r\n this._upDownArrowHandler(FORWARD);\r\n event.preventDefault()\r\n }),\r\n downArrow: e => applyHandler(e, event => {\r\n this._upDownArrowHandler(BACKWARD);\r\n event.preventDefault()\r\n })\r\n })\r\n },\r\n _shouldUseOriginalHandler(e) {\r\n var isNotDeletingInCalendar = this.option(\"opened\") && e && -1 === [\"backspace\", \"del\"].indexOf(normalizeKeyName(e));\r\n return !this._useMaskBehavior() || isNotDeletingInCalendar || e && e.altKey\r\n },\r\n _upDownArrowHandler(step) {\r\n this._setNewDateIfEmpty();\r\n var originalValue = this._getActivePartValue(this._initialMaskValue);\r\n var currentValue = this._getActivePartValue();\r\n var delta = currentValue - originalValue;\r\n this._loadMaskValue(this._initialMaskValue);\r\n this._partIncrease(delta + step, true)\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n useMaskBehavior: false,\r\n emptyDateValue: new Date(2e3, 0, 1, 0, 0, 0)\r\n })\r\n },\r\n _isSingleCharKey(_ref) {\r\n var {\r\n originalEvent: originalEvent,\r\n alt: alt\r\n } = _ref;\r\n var key = originalEvent.data || originalEvent.key;\r\n return \"string\" === typeof key && 1 === key.length && !alt && !isCommandKeyPressed(originalEvent)\r\n },\r\n _isSingleDigitKey(e) {\r\n var _e$originalEvent;\r\n var data = null === (_e$originalEvent = e.originalEvent) || void 0 === _e$originalEvent ? void 0 : _e$originalEvent.data;\r\n return 1 === (null === data || void 0 === data ? void 0 : data.length) && parseInt(data, 10)\r\n },\r\n _useBeforeInputEvent: function() {\r\n return devices.real().android\r\n },\r\n _keyInputHandler(e, key) {\r\n var oldInputValue = this._input().val();\r\n this._processInputKey(key);\r\n e.preventDefault();\r\n var isValueChanged = oldInputValue !== this._input().val();\r\n isValueChanged && eventsEngine.trigger(this._input(), \"input\")\r\n },\r\n _keyboardHandler(e) {\r\n var key = e.originalEvent.key;\r\n var result = this.callBase(e);\r\n if (!this._useMaskBehavior() || this._useBeforeInputEvent()) {\r\n return result\r\n }\r\n if (browser.chrome && \"Process\" === e.key && 0 === e.code.indexOf(\"Digit\")) {\r\n key = e.code.replace(\"Digit\", \"\");\r\n this._processInputKey(key);\r\n this._maskInputHandler = () => {\r\n this._renderSelectedPart()\r\n }\r\n } else if (this._isSingleCharKey(e)) {\r\n this._keyInputHandler(e.originalEvent, key)\r\n }\r\n return result\r\n },\r\n _maskBeforeInputHandler(e) {\r\n this._maskInputHandler = null;\r\n var {\r\n inputType: inputType\r\n } = e.originalEvent;\r\n if (\"insertCompositionText\" === inputType) {\r\n this._maskInputHandler = () => {\r\n this._renderSelectedPart()\r\n }\r\n }\r\n var isBackwardDeletion = \"deleteContentBackward\" === inputType;\r\n var isForwardDeletion = \"deleteContentForward\" === inputType;\r\n if (isBackwardDeletion || isForwardDeletion) {\r\n var direction = isBackwardDeletion ? BACKWARD : FORWARD;\r\n this._maskInputHandler = () => {\r\n this._revertPart();\r\n this._selectNextPart(direction)\r\n }\r\n }\r\n if (!this._useMaskBehavior() || !this._isSingleCharKey(e)) {\r\n return\r\n }\r\n var key = e.originalEvent.data;\r\n this._keyInputHandler(e, key);\r\n return true\r\n },\r\n _keyPressHandler(e) {\r\n var {\r\n originalEvent: event\r\n } = e;\r\n if (\"insertCompositionText\" === (null === event || void 0 === event ? void 0 : event.inputType) && this._isSingleDigitKey(e)) {\r\n this._processInputKey(event.data);\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart()\r\n }\r\n this.callBase(e);\r\n if (this._maskInputHandler) {\r\n this._maskInputHandler();\r\n this._maskInputHandler = null\r\n }\r\n },\r\n _processInputKey(key) {\r\n if (this._isAllSelected()) {\r\n this._activePartIndex = 0\r\n }\r\n this._setNewDateIfEmpty();\r\n if (isNaN(parseInt(key))) {\r\n this._searchString(key)\r\n } else {\r\n this._searchNumber(key)\r\n }\r\n },\r\n _isAllSelected() {\r\n var caret = this._caret();\r\n return caret.end - caret.start === this.option(\"text\").length\r\n },\r\n _getFormatPattern() {\r\n if (this._formatPattern) {\r\n return this._formatPattern\r\n }\r\n var format = this._strategy.getDisplayFormat(this.option(\"displayFormat\"));\r\n var isLDMLPattern = isString(format) && !dateLocalization._getPatternByFormat(format);\r\n if (isLDMLPattern) {\r\n this._formatPattern = format\r\n } else {\r\n this._formatPattern = getFormat((function(value) {\r\n return dateLocalization.format(value, format)\r\n }))\r\n }\r\n return this._formatPattern\r\n },\r\n _setNewDateIfEmpty() {\r\n if (!this._maskValue) {\r\n var value = \"time\" === this.option(\"type\") ? new Date(null) : new Date;\r\n this._maskValue = value;\r\n this._initialMaskValue = value;\r\n this._renderDateParts()\r\n }\r\n },\r\n _partLimitsReached(max) {\r\n var maxLimitLength = String(max).length;\r\n var formatLength = this._getActivePartProp(\"pattern\").length;\r\n var isShortFormat = 1 === formatLength;\r\n var maxSearchLength = isShortFormat ? maxLimitLength : Math.min(formatLength, maxLimitLength);\r\n var isLengthExceeded = this._searchValue.length === maxSearchLength;\r\n var isValueOverflowed = parseInt(this._searchValue + \"0\") > max;\r\n return isLengthExceeded || isValueOverflowed\r\n },\r\n _searchNumber(char) {\r\n var {\r\n max: max\r\n } = this._getActivePartLimits();\r\n var maxLimitLength = String(max).length;\r\n this._searchValue = (this._searchValue + char).substr(-maxLimitLength);\r\n if (isNaN(this._searchValue)) {\r\n this._searchValue = char\r\n }\r\n this._setActivePartValue(this._searchValue);\r\n if (this._partLimitsReached(max)) {\r\n this._selectNextPart(FORWARD)\r\n }\r\n },\r\n _searchString(char) {\r\n if (!isNaN(parseInt(this._getActivePartProp(\"text\")))) {\r\n return\r\n }\r\n var limits = this._getActivePartProp(\"limits\")(this._maskValue);\r\n var startString = this._searchValue + char.toLowerCase();\r\n var endLimit = limits.max - limits.min;\r\n for (var i = 0; i <= endLimit; i++) {\r\n this._loadMaskValue(this._initialMaskValue);\r\n this._partIncrease(i + 1);\r\n if (0 === this._getActivePartProp(\"text\").toLowerCase().indexOf(startString)) {\r\n this._searchValue = startString;\r\n return\r\n }\r\n }\r\n this._setNewDateIfEmpty();\r\n if (this._searchValue) {\r\n this._clearSearchValue();\r\n this._searchString(char)\r\n }\r\n },\r\n _clearSearchValue() {\r\n this._searchValue = \"\"\r\n },\r\n _revertPart: function(direction) {\r\n if (!this._isAllSelected()) {\r\n var actual = this._getActivePartValue(this.option(\"emptyDateValue\"));\r\n this._setActivePartValue(actual);\r\n this._selectNextPart(direction)\r\n }\r\n this._clearSearchValue()\r\n },\r\n _useMaskBehavior() {\r\n return this.option(\"useMaskBehavior\") && \"text\" === this.option(\"mode\")\r\n },\r\n _prepareRegExpInfo() {\r\n this._regExpInfo = getRegExpInfo(this._getFormatPattern(), dateLocalization);\r\n var regexp = this._regExpInfo.regexp;\r\n var source = regexp.source;\r\n var flags = regexp.flags;\r\n var quantifierRegexp = new RegExp(/(\\{[0-9]+,?[0-9]*\\})/);\r\n var convertedSource = source.split(quantifierRegexp).map(sourcePart => quantifierRegexp.test(sourcePart) ? sourcePart : numberLocalization.convertDigits(sourcePart, false)).join(\"\");\r\n this._regExpInfo.regexp = new RegExp(convertedSource, flags)\r\n },\r\n _initMaskState() {\r\n this._activePartIndex = 0;\r\n this._formatPattern = null;\r\n this._prepareRegExpInfo();\r\n this._loadMaskValue()\r\n },\r\n _renderMask() {\r\n this.callBase();\r\n this._detachMaskEvents();\r\n this._clearMaskState();\r\n if (this._useMaskBehavior()) {\r\n this._attachMaskEvents();\r\n this._initMaskState();\r\n this._renderDateParts()\r\n }\r\n },\r\n _renderDateParts() {\r\n if (!this._useMaskBehavior()) {\r\n return\r\n }\r\n var text = this.option(\"text\") || this._getDisplayedText(this._maskValue);\r\n if (text) {\r\n this._dateParts = renderDateParts(text, this._regExpInfo);\r\n if (!this._input().is(\":hidden\")) {\r\n this._selectNextPart()\r\n }\r\n }\r\n },\r\n _detachMaskEvents() {\r\n eventsEngine.off(this._input(), \".\" + MASK_EVENT_NAMESPACE)\r\n },\r\n _attachMaskEvents() {\r\n eventsEngine.on(this._input(), addNamespace(\"dxclick\", MASK_EVENT_NAMESPACE), this._maskClickHandler.bind(this));\r\n eventsEngine.on(this._input(), addNamespace(\"paste\", MASK_EVENT_NAMESPACE), this._maskPasteHandler.bind(this));\r\n eventsEngine.on(this._input(), addNamespace(\"drop\", MASK_EVENT_NAMESPACE), () => {\r\n this._renderSelectedPart()\r\n });\r\n eventsEngine.on(this._input(), addNamespace(\"compositionend\", MASK_EVENT_NAMESPACE), this._maskCompositionEndHandler.bind(this));\r\n if (this._useBeforeInputEvent()) {\r\n eventsEngine.on(this._input(), addNamespace(\"beforeinput\", MASK_EVENT_NAMESPACE), this._maskBeforeInputHandler.bind(this))\r\n }\r\n },\r\n _renderSelectedPart() {\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart()\r\n },\r\n _selectLastPart() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = this._dateParts.length;\r\n this._selectNextPart(BACKWARD)\r\n }\r\n },\r\n _selectFirstPart() {\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = -1;\r\n this._selectNextPart(FORWARD)\r\n }\r\n },\r\n _onMouseWheel(e) {\r\n if (this._useMaskBehavior()) {\r\n this._partIncrease(e.delta > 0 ? FORWARD : BACKWARD, e)\r\n }\r\n },\r\n _selectNextPart() {\r\n var step = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;\r\n if (!this.option(\"text\") || this._disposed) {\r\n return\r\n }\r\n if (step) {\r\n this._initialMaskValue = new Date(this._maskValue)\r\n }\r\n var index = fitIntoRange(this._activePartIndex + step, 0, this._dateParts.length - 1);\r\n if (this._dateParts[index].isStub) {\r\n var isBoundaryIndex = 0 === index && step < 0 || index === this._dateParts.length - 1 && step > 0;\r\n if (!isBoundaryIndex) {\r\n this._selectNextPart(step >= 0 ? step + 1 : step - 1);\r\n return\r\n } else {\r\n index = this._activePartIndex\r\n }\r\n }\r\n if (this._activePartIndex !== index) {\r\n this._clearSearchValue()\r\n }\r\n this._activePartIndex = index;\r\n this._caret(this._getActivePartProp(\"caret\"))\r\n },\r\n _getRealLimitsPattern() {\r\n if (\"d\" === this._getActivePartProp(\"pattern\")[0]) {\r\n return \"dM\"\r\n }\r\n },\r\n _getActivePartLimits(lockOtherParts) {\r\n var limitFunction = this._getActivePartProp(\"limits\");\r\n return limitFunction(this._maskValue, lockOtherParts && this._getRealLimitsPattern())\r\n },\r\n _getActivePartValue(dateValue) {\r\n dateValue = dateValue || this._maskValue;\r\n var getter = this._getActivePartProp(\"getter\");\r\n return isFunction(getter) ? getter(dateValue) : dateValue[getter]()\r\n },\r\n _addLeadingZeroes(value) {\r\n var zeroes = this._searchValue.match(/^0+/);\r\n var limits = this._getActivePartLimits();\r\n var maxLimitLength = String(limits.max).length;\r\n return ((zeroes && zeroes[0] || \"\") + String(value)).substr(-maxLimitLength)\r\n },\r\n _setActivePartValue(value, dateValue) {\r\n dateValue = dateValue || this._maskValue;\r\n var setter = this._getActivePartProp(\"setter\");\r\n var limits = this._getActivePartLimits();\r\n value = inRange(value, limits.min, limits.max) ? value : value % 10;\r\n value = this._addLeadingZeroes(fitIntoRange(value, limits.min, limits.max));\r\n isFunction(setter) ? setter(dateValue, value) : dateValue[setter](value);\r\n this._renderDisplayText(this._getDisplayedText(dateValue));\r\n this._renderDateParts()\r\n },\r\n _getActivePartProp(property) {\r\n if (!this._dateParts || !this._dateParts[this._activePartIndex]) {\r\n return\r\n }\r\n return this._dateParts[this._activePartIndex][property]\r\n },\r\n _loadMaskValue() {\r\n var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.dateOption(\"value\");\r\n this._maskValue = value && new Date(value);\r\n this._initialMaskValue = value && new Date(value)\r\n },\r\n _saveMaskValue() {\r\n var value = this._maskValue && new Date(this._maskValue);\r\n if (value && \"date\" === this.option(\"type\")) {\r\n value.setHours(0, 0, 0, 0)\r\n }\r\n this._initialMaskValue = new Date(value);\r\n this.dateOption(\"value\", value)\r\n },\r\n _revertChanges() {\r\n this._loadMaskValue();\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._renderDateParts()\r\n },\r\n _renderDisplayText(text) {\r\n this.callBase(text);\r\n if (this._useMaskBehavior()) {\r\n this.option(\"text\", text)\r\n }\r\n },\r\n _partIncrease(step, lockOtherParts) {\r\n this._setNewDateIfEmpty();\r\n var {\r\n max: max,\r\n min: min\r\n } = this._getActivePartLimits(lockOtherParts);\r\n var limitDelta = max - min;\r\n if (1 === limitDelta) {\r\n limitDelta++\r\n }\r\n var newValue = step + this._getActivePartValue();\r\n if (newValue > max) {\r\n newValue = this._applyLimits(newValue, {\r\n limitBase: min,\r\n limitClosest: max,\r\n limitDelta: limitDelta\r\n })\r\n } else if (newValue < min) {\r\n newValue = this._applyLimits(newValue, {\r\n limitBase: max,\r\n limitClosest: min,\r\n limitDelta: limitDelta\r\n })\r\n }\r\n this._setActivePartValue(newValue)\r\n },\r\n _applyLimits(newValue, _ref2) {\r\n var {\r\n limitBase: limitBase,\r\n limitClosest: limitClosest,\r\n limitDelta: limitDelta\r\n } = _ref2;\r\n var delta = (newValue - limitClosest) % limitDelta;\r\n return delta ? limitBase + delta - 1 * sign(delta) : limitClosest\r\n },\r\n _maskClickHandler() {\r\n this._loadMaskValue(this._maskValue);\r\n if (this.option(\"text\")) {\r\n this._activePartIndex = getDatePartIndexByPosition(this._dateParts, this._caret().start);\r\n if (!this._isAllSelected()) {\r\n if (isDefined(this._activePartIndex)) {\r\n this._caret(this._getActivePartProp(\"caret\"))\r\n } else {\r\n this._selectLastPart()\r\n }\r\n }\r\n }\r\n },\r\n _maskCompositionEndHandler(e) {\r\n this._input().val(this._getDisplayedText(this._maskValue));\r\n this._selectNextPart();\r\n this._maskInputHandler = () => {\r\n this._renderSelectedPart()\r\n }\r\n },\r\n _maskPasteHandler(e) {\r\n var newText = this._replaceSelectedText(this.option(\"text\"), this._caret(), clipboardText(e));\r\n var date = dateLocalization.parse(newText, this._getFormatPattern());\r\n if (date && this._isDateValid(date)) {\r\n this._maskValue = date;\r\n this._renderDisplayText(this._getDisplayedText(this._maskValue));\r\n this._renderDateParts();\r\n this._selectNextPart()\r\n }\r\n e.preventDefault()\r\n },\r\n _isDateValid: date => isDate(date) && !isNaN(date),\r\n _isValueDirty() {\r\n var value = this.dateOption(\"value\");\r\n return (this._maskValue && this._maskValue.getTime()) !== (value && value.getTime())\r\n },\r\n _fireChangeEvent() {\r\n this._clearSearchValue();\r\n if (this._isValueDirty()) {\r\n eventsEngine.trigger(this._input(), \"change\")\r\n }\r\n },\r\n _enterHandler() {\r\n this._fireChangeEvent();\r\n this._selectNextPart(FORWARD)\r\n },\r\n _focusOutHandler(e) {\r\n var shouldFireChangeEvent = this._useMaskBehavior() && !e.isDefaultPrevented();\r\n if (shouldFireChangeEvent) {\r\n this._fireChangeEvent();\r\n this.callBase(e);\r\n this._selectFirstPart(e)\r\n } else {\r\n this.callBase(e)\r\n }\r\n },\r\n _valueChangeEventHandler(e) {\r\n var text = this.option(\"text\");\r\n if (this._useMaskBehavior()) {\r\n this._saveValueChangeEvent(e);\r\n if (!text) {\r\n this._maskValue = null\r\n } else if (null === this._maskValue) {\r\n this._loadMaskValue(text)\r\n }\r\n this._saveMaskValue()\r\n } else {\r\n this.callBase(e)\r\n }\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"useMaskBehavior\":\r\n this._renderMask();\r\n break;\r\n case \"displayFormat\":\r\n case \"mode\":\r\n this.callBase(args);\r\n this._renderMask();\r\n break;\r\n case \"value\":\r\n this._loadMaskValue();\r\n this.callBase(args);\r\n this._renderDateParts();\r\n break;\r\n case \"emptyDateValue\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clearMaskState() {\r\n this._clearSearchValue();\r\n delete this._dateParts;\r\n delete this._activePartIndex;\r\n delete this._maskValue\r\n },\r\n reset() {\r\n this._clearMaskState();\r\n this._activePartIndex = 0;\r\n this.callBase()\r\n },\r\n _clean() {\r\n this.callBase();\r\n this._detachMaskEvents();\r\n this._clearMaskState()\r\n }\r\n});\r\nexport default DateBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/date_box/ui.date_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport DateBoxMask from \"./ui.date_box.mask\";\r\nregisterComponent(\"dxDateBox\", DateBoxMask);\r\nexport default DateBoxMask;\r\n","/**\r\n * DevExtreme (esm/ui/date_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport DateBox from \"./date_box/ui.date_box\";\r\nexport default DateBox;\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.items_runtime_info.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isString\r\n} from \"../../core/utils/type\";\r\nexport default class FormItemsRunTimeInfo {\r\n constructor() {\r\n this._map = {}\r\n }\r\n _findWidgetInstance(condition) {\r\n var result;\r\n each(this._map, (function(guid, _ref) {\r\n var {\r\n widgetInstance: widgetInstance,\r\n item: item\r\n } = _ref;\r\n if (condition(item)) {\r\n result = widgetInstance;\r\n return false\r\n }\r\n }));\r\n return result\r\n }\r\n _findFieldByCondition(callback, valueExpr) {\r\n var result;\r\n each(this._map, (function(key, value) {\r\n if (callback(value)) {\r\n result = \"guid\" === valueExpr ? key : value[valueExpr];\r\n return false\r\n }\r\n }));\r\n return result\r\n }\r\n clear() {\r\n this._map = {}\r\n }\r\n removeItemsByItems(itemsRunTimeInfo) {\r\n each(itemsRunTimeInfo.getItems(), guid => this.removeItemByKey(guid))\r\n }\r\n removeItemByKey(key) {\r\n delete this._map[key]\r\n }\r\n add(options) {\r\n var key = options.guid || new Guid;\r\n this._map[key] = options;\r\n return key\r\n }\r\n addItemsOrExtendFrom(itemsRunTimeInfo) {\r\n itemsRunTimeInfo.each((key, itemRunTimeInfo) => {\r\n if (this._map[key]) {\r\n if (itemRunTimeInfo.widgetInstance) {\r\n this._map[key].widgetInstance = itemRunTimeInfo.widgetInstance\r\n }\r\n this._map[key].$itemContainer = itemRunTimeInfo.$itemContainer\r\n } else {\r\n this.add({\r\n item: itemRunTimeInfo.item,\r\n widgetInstance: itemRunTimeInfo.widgetInstance,\r\n guid: key,\r\n $itemContainer: itemRunTimeInfo.$itemContainer\r\n })\r\n }\r\n })\r\n }\r\n extendRunTimeItemInfoByKey(key, options) {\r\n if (this._map[key]) {\r\n this._map[key] = extend(this._map[key], options)\r\n }\r\n }\r\n findWidgetInstanceByItem(item) {\r\n return this._findWidgetInstance(storedItem => storedItem === item)\r\n }\r\n findGroupOrTabLayoutManagerByPath(targetPath) {\r\n return this._findFieldByCondition(_ref2 => {\r\n var {\r\n path: path\r\n } = _ref2;\r\n return path === targetPath\r\n }, \"layoutManager\")\r\n }\r\n findKeyByPath(targetPath) {\r\n return this._findFieldByCondition(_ref3 => {\r\n var {\r\n path: path\r\n } = _ref3;\r\n return path === targetPath\r\n }, \"guid\")\r\n }\r\n findWidgetInstanceByName(name) {\r\n return this._findWidgetInstance(item => name === item.name)\r\n }\r\n findWidgetInstanceByDataField(dataField) {\r\n return this._findWidgetInstance(item => dataField === (isString(item) ? item : item.dataField))\r\n }\r\n findItemContainerByItem(item) {\r\n for (var key in this._map) {\r\n if (this._map[key].item === item) {\r\n return this._map[key].$itemContainer\r\n }\r\n }\r\n return null\r\n }\r\n findItemIndexByItem(targetItem) {\r\n return this._findFieldByCondition(_ref4 => {\r\n var {\r\n item: item\r\n } = _ref4;\r\n return item === targetItem\r\n }, \"itemIndex\")\r\n }\r\n findPreparedItemByItem(item) {\r\n return this._findFieldByCondition(_ref5 => {\r\n var {\r\n item: currentItem\r\n } = _ref5;\r\n return currentItem === item\r\n }, \"preparedItem\")\r\n }\r\n getItems() {\r\n return this._map\r\n }\r\n each(handler) {\r\n each(this._map, (function(key, itemRunTimeInfo) {\r\n handler(key, itemRunTimeInfo)\r\n }))\r\n }\r\n removeItemsByPathStartWith(path) {\r\n var keys = Object.keys(this._map);\r\n var filteredKeys = keys.filter(key => {\r\n if (this._map[key].path) {\r\n return this._map[key].path.indexOf(path, 0) > -1\r\n }\r\n return false\r\n });\r\n filteredKeys.forEach(key => this.removeItemByKey(key))\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/multi_view/ui.multi_view.animation.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport fx from \"../../animation/fx\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nexport var _translator = {\r\n move($element, position) {\r\n move($element, {\r\n left: position\r\n })\r\n }\r\n};\r\nexport var animation = {\r\n moveTo($element, position, duration, completeAction) {\r\n fx.animate($element, {\r\n type: \"slide\",\r\n to: {\r\n left: position\r\n },\r\n duration: duration,\r\n complete: completeAction\r\n })\r\n },\r\n complete($element) {\r\n fx.stop($element, true)\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/multi_view.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n locate\r\n} from \"../animation/translator\";\r\nimport {\r\n _translator,\r\n animation\r\n} from \"./multi_view/ui.multi_view.animation\";\r\nimport {\r\n sign\r\n} from \"../core/utils/math\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n noop,\r\n deferRender\r\n} from \"../core/utils/common\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../events/visibility_change\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport devices from \"../core/devices\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.live_update\";\r\nimport Swipeable from \"../events/gesture/swipeable\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar MULTIVIEW_CLASS = \"dx-multiview\";\r\nvar MULTIVIEW_WRAPPER_CLASS = \"dx-multiview-wrapper\";\r\nvar MULTIVIEW_ITEM_CONTAINER_CLASS = \"dx-multiview-item-container\";\r\nvar MULTIVIEW_ITEM_CLASS = \"dx-multiview-item\";\r\nvar MULTIVIEW_ITEM_HIDDEN_CLASS = \"dx-multiview-item-hidden\";\r\nvar MULTIVIEW_ITEM_DATA_KEY = \"dxMultiViewItemData\";\r\nvar MULTIVIEW_ANIMATION_DURATION = 200;\r\nvar toNumber = value => +value;\r\nvar position = $element => locate($element).left;\r\nvar MultiView = CollectionWidget.inherit({\r\n _activeStateUnit: \".\" + MULTIVIEW_ITEM_CLASS,\r\n _supportedKeys: function() {\r\n return extend(this.callBase(), {\r\n pageUp: noop,\r\n pageDown: noop\r\n })\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n selectedIndex: 0,\r\n swipeEnabled: true,\r\n animationEnabled: true,\r\n loop: false,\r\n deferRendering: true,\r\n _itemAttributes: {\r\n role: \"tabpanel\"\r\n },\r\n loopItemFocus: false,\r\n selectOnFocus: true,\r\n selectionMode: \"single\",\r\n selectionRequired: true,\r\n selectByClick: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _itemClass: function() {\r\n return MULTIVIEW_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return MULTIVIEW_ITEM_DATA_KEY\r\n },\r\n _itemContainer: function() {\r\n return this._$itemContainer\r\n },\r\n _itemElements: function() {\r\n return this._itemContainer().children(this._itemSelector())\r\n },\r\n _itemWidth: function() {\r\n if (!this._itemWidthValue) {\r\n this._itemWidthValue = getWidth(this._$wrapper)\r\n }\r\n return this._itemWidthValue\r\n },\r\n _clearItemWidthCache: function() {\r\n delete this._itemWidthValue\r\n },\r\n _itemsCount: function() {\r\n return this.option(\"items\").length\r\n },\r\n _normalizeIndex: function(index) {\r\n var count = this._itemsCount();\r\n if (index < 0) {\r\n index += count\r\n }\r\n if (index >= count) {\r\n index -= count\r\n }\r\n return index\r\n },\r\n _getRTLSignCorrection: function() {\r\n return this.option(\"rtlEnabled\") ? -1 : 1\r\n },\r\n _init: function() {\r\n this.callBase.apply(this, arguments);\r\n var $element = this.$element();\r\n $element.addClass(MULTIVIEW_CLASS);\r\n this._$wrapper = $(\"<div>\").addClass(MULTIVIEW_WRAPPER_CLASS);\r\n this._$wrapper.appendTo($element);\r\n this._$itemContainer = $(\"<div>\").addClass(MULTIVIEW_ITEM_CONTAINER_CLASS);\r\n this._$itemContainer.appendTo(this._$wrapper);\r\n this.option(\"loopItemFocus\", this.option(\"loop\"));\r\n this._findBoundaryIndices();\r\n this._initSwipeable()\r\n },\r\n _initMarkup: function() {\r\n this._deferredItems = [];\r\n this.callBase();\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItemsVisibility(selectedItemIndices[0])\r\n },\r\n _afterItemElementDeleted: function($item, deletedActionArgs) {\r\n this.callBase($item, deletedActionArgs);\r\n if (this._deferredItems) {\r\n this._deferredItems.splice(deletedActionArgs.itemIndex, 1)\r\n }\r\n },\r\n _beforeItemElementInserted: function(change) {\r\n this.callBase.apply(this, arguments);\r\n if (this._deferredItems) {\r\n this._deferredItems.splice(change.index, 0, null)\r\n }\r\n },\r\n _executeItemRenderAction: function(index, itemData, itemElement) {\r\n index = (this.option(\"items\") || []).indexOf(itemData);\r\n this.callBase(index, itemData, itemElement)\r\n },\r\n _renderItemContent: function(args) {\r\n var renderContentDeferred = new Deferred;\r\n var that = this;\r\n var callBase = this.callBase;\r\n var deferred = new Deferred;\r\n deferred.done((function() {\r\n var $itemContent = callBase.call(that, args);\r\n renderContentDeferred.resolve($itemContent)\r\n }));\r\n this._deferredItems[args.index] = deferred;\r\n this.option(\"deferRendering\") || deferred.resolve();\r\n return renderContentDeferred.promise()\r\n },\r\n _render: function() {\r\n this.callBase();\r\n deferRender(() => {\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItems(selectedItemIndices[0])\r\n })\r\n },\r\n _updateItems: function(selectedIndex, newIndex) {\r\n this._updateItemsPosition(selectedIndex, newIndex);\r\n this._updateItemsVisibility(selectedIndex, newIndex)\r\n },\r\n _modifyByChanges: function() {\r\n this.callBase.apply(this, arguments);\r\n var selectedItemIndices = this._getSelectedItemIndices();\r\n this._updateItemsVisibility(selectedItemIndices[0])\r\n },\r\n _updateItemsPosition: function(selectedIndex, newIndex) {\r\n var $itemElements = this._itemElements();\r\n var positionSign = isDefined(newIndex) ? -this._animationDirection(newIndex, selectedIndex) : void 0;\r\n var $selectedItem = $itemElements.eq(selectedIndex);\r\n _translator.move($selectedItem, 0);\r\n if (isDefined(newIndex)) {\r\n _translator.move($itemElements.eq(newIndex), 100 * positionSign + \"%\")\r\n }\r\n },\r\n _updateItemsVisibility: function(selectedIndex, newIndex) {\r\n var $itemElements = this._itemElements();\r\n $itemElements.each(function(itemIndex, item) {\r\n var $item = $(item);\r\n var isHidden = itemIndex !== selectedIndex && itemIndex !== newIndex;\r\n if (!isHidden) {\r\n this._renderSpecificItem(itemIndex)\r\n }\r\n $item.toggleClass(MULTIVIEW_ITEM_HIDDEN_CLASS, isHidden);\r\n this.setAria(\"hidden\", isHidden || void 0, $item)\r\n }.bind(this))\r\n },\r\n _renderSpecificItem: function(index) {\r\n var $item = this._itemElements().eq(index);\r\n var hasItemContent = $item.find(this._itemContentClass()).length > 0;\r\n if (isDefined(index) && !hasItemContent) {\r\n this._deferredItems[index].resolve();\r\n triggerResizeEvent($item)\r\n }\r\n },\r\n _refreshItem: function($item, item) {\r\n this.callBase($item, item);\r\n this._updateItemsVisibility(this.option(\"selectedIndex\"))\r\n },\r\n _setAriaSelectionAttribute: noop,\r\n _updateSelection: function(addedSelection, removedSelection) {\r\n var newIndex = addedSelection[0];\r\n var prevIndex = removedSelection[0];\r\n animation.complete(this._$itemContainer);\r\n this._updateItems(prevIndex, newIndex);\r\n var animationDirection = this._animationDirection(newIndex, prevIndex);\r\n this._animateItemContainer(animationDirection * this._itemWidth(), function() {\r\n _translator.move(this._$itemContainer, 0);\r\n this._updateItems(newIndex);\r\n getWidth(this._$itemContainer)\r\n }.bind(this))\r\n },\r\n _animateItemContainer: function(position, completeCallback) {\r\n var duration = this.option(\"animationEnabled\") ? MULTIVIEW_ANIMATION_DURATION : 0;\r\n animation.moveTo(this._$itemContainer, position, duration, completeCallback)\r\n },\r\n _animationDirection: function(newIndex, prevIndex) {\r\n var containerPosition = position(this._$itemContainer);\r\n var indexDifference = (prevIndex - newIndex) * this._getRTLSignCorrection() * this._getItemFocusLoopSignCorrection();\r\n var isSwipePresent = 0 !== containerPosition;\r\n var directionSignVariable = isSwipePresent ? containerPosition : indexDifference;\r\n return sign(directionSignVariable)\r\n },\r\n _getSwipeDisabledState() {\r\n return !this.option(\"swipeEnabled\") || this._itemsCount() <= 1\r\n },\r\n _initSwipeable() {\r\n this._createComponent(this.$element(), Swipeable, {\r\n disabled: this._getSwipeDisabledState(),\r\n elastic: false,\r\n itemSizeFunc: this._itemWidth.bind(this),\r\n onStart: args => this._swipeStartHandler(args.event),\r\n onUpdated: args => this._swipeUpdateHandler(args.event),\r\n onEnd: args => this._swipeEndHandler(args.event)\r\n })\r\n },\r\n _findBoundaryIndices() {\r\n var _firstIndex2, _lastIndex;\r\n var items = this.option(\"items\");\r\n var firstIndex;\r\n var lastIndex;\r\n items.forEach((item, index) => {\r\n var isDisabled = Boolean(null === item || void 0 === item ? void 0 : item.disabled);\r\n if (!isDisabled) {\r\n var _firstIndex;\r\n null !== (_firstIndex = firstIndex) && void 0 !== _firstIndex ? _firstIndex : firstIndex = index;\r\n lastIndex = index\r\n }\r\n });\r\n this._boundaryIndices = {\r\n firstAvailableIndex: null !== (_firstIndex2 = firstIndex) && void 0 !== _firstIndex2 ? _firstIndex2 : 0,\r\n lastAvailableIndex: null !== (_lastIndex = lastIndex) && void 0 !== _lastIndex ? _lastIndex : items.length - 1,\r\n firstTrueIndex: 0,\r\n lastTrueIndex: items.length - 1\r\n }\r\n },\r\n _swipeStartHandler: function(e) {\r\n animation.complete(this._$itemContainer);\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var loop = this.option(\"loop\");\r\n var {\r\n firstAvailableIndex: firstAvailableIndex,\r\n lastAvailableIndex: lastAvailableIndex\r\n } = this._boundaryIndices;\r\n var rtl = this.option(\"rtlEnabled\");\r\n e.maxLeftOffset = toNumber(loop || (rtl ? selectedIndex > firstAvailableIndex : selectedIndex < lastAvailableIndex));\r\n e.maxRightOffset = toNumber(loop || (rtl ? selectedIndex < lastAvailableIndex : selectedIndex > firstAvailableIndex));\r\n this._swipeDirection = null\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n var offset = e.offset;\r\n var swipeDirection = sign(offset) * this._getRTLSignCorrection();\r\n _translator.move(this._$itemContainer, offset * this._itemWidth());\r\n if (swipeDirection !== this._swipeDirection) {\r\n this._swipeDirection = swipeDirection;\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var newIndex = this._normalizeIndex(selectedIndex - swipeDirection);\r\n this._updateItems(selectedIndex, newIndex)\r\n }\r\n },\r\n _findNextAvailableIndex(index, offset) {\r\n var {\r\n items: items,\r\n loop: loop\r\n } = this.option();\r\n var {\r\n firstAvailableIndex: firstAvailableIndex,\r\n lastAvailableIndex: lastAvailableIndex,\r\n firstTrueIndex: firstTrueIndex,\r\n lastTrueIndex: lastTrueIndex\r\n } = this._boundaryIndices;\r\n var isFirstActive = [firstTrueIndex, firstAvailableIndex].includes(index);\r\n var isLastActive = [lastTrueIndex, lastAvailableIndex].includes(index);\r\n if (loop) {\r\n if (isFirstActive && offset < 0) {\r\n return lastAvailableIndex\r\n } else if (isLastActive && offset > 0) {\r\n return firstAvailableIndex\r\n }\r\n }\r\n for (var i = index + offset; i >= firstAvailableIndex && i <= lastAvailableIndex; i += offset) {\r\n var isDisabled = Boolean(items[i].disabled);\r\n if (!isDisabled) {\r\n return i\r\n }\r\n }\r\n return index\r\n },\r\n _swipeEndHandler: function(e) {\r\n var targetOffset = e.targetOffset * this._getRTLSignCorrection();\r\n if (targetOffset) {\r\n var newSelectedIndex = this._findNextAvailableIndex(this.option(\"selectedIndex\"), -targetOffset);\r\n this.option(\"selectedIndex\", newSelectedIndex);\r\n var $selectedElement = this.itemElements().filter(\".dx-item-selected\");\r\n this.option(\"focusStateEnabled\") && this.option(\"focusedElement\", getPublicElement($selectedElement))\r\n } else {\r\n this._animateItemContainer(0, noop)\r\n }\r\n },\r\n _getItemFocusLoopSignCorrection: function() {\r\n return this._itemFocusLooped ? -1 : 1\r\n },\r\n _moveFocus: function() {\r\n this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = false\r\n },\r\n _prevItem: function($items) {\r\n var $result = this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = $result.is($items.last());\r\n return $result\r\n },\r\n _nextItem: function($items) {\r\n var $result = this.callBase.apply(this, arguments);\r\n this._itemFocusLooped = $result.is($items.first());\r\n return $result\r\n },\r\n _dimensionChanged: function() {\r\n this._clearItemWidthCache()\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _updateSwipeDisabledState() {\r\n var disabled = this._getSwipeDisabledState();\r\n Swipeable.getInstance(this.$element()).option(\"disabled\", disabled)\r\n },\r\n _dispose: function() {\r\n delete this._boundaryIndices;\r\n this.callBase()\r\n },\r\n _optionChanged: function(args) {\r\n var value = args.value;\r\n switch (args.name) {\r\n case \"loop\":\r\n this.option(\"loopItemFocus\", value);\r\n break;\r\n case \"animationEnabled\":\r\n break;\r\n case \"swipeEnabled\":\r\n this._updateSwipeDisabledState();\r\n break;\r\n case \"deferRendering\":\r\n this._invalidate();\r\n break;\r\n case \"items\":\r\n this._updateSwipeDisabledState();\r\n this._findBoundaryIndices();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxMultiView\", MultiView);\r\nexport default MultiView;\r\n","/**\r\n * DevExtreme (esm/ui/tabs/item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nvar TABS_ITEM_BADGE_CLASS = \"dx-tabs-item-badge\";\r\nvar BADGE_CLASS = \"dx-badge\";\r\nvar TabsItem = CollectionWidgetItem.inherit({\r\n _renderWatchers: function() {\r\n this.callBase();\r\n this._startWatcher(\"badge\", this._renderBadge.bind(this))\r\n },\r\n _renderBadge: function(badge) {\r\n this._$element.children(\".\" + BADGE_CLASS).remove();\r\n if (!badge) {\r\n return\r\n }\r\n var $badge = $(\"<div>\").addClass(TABS_ITEM_BADGE_CLASS).addClass(BADGE_CLASS).text(badge);\r\n this._$element.append($badge)\r\n }\r\n});\r\nexport default TabsItem;\r\n","/**\r\n * DevExtreme (esm/ui/tabs/constants.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var TABS_EXPANDED_CLASS = \"dx-tabs-expanded\";\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_scroll_left_max.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function getScrollLeftMax(element) {\r\n return element.scrollWidth - element.clientWidth\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scroll_view/utils/get_boundary_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getScrollLeftMax\r\n} from \"./get_scroll_left_max\";\r\nimport {\r\n getScrollTopMax\r\n} from \"./get_scroll_top_max\";\r\nimport {\r\n ScrollDirection\r\n} from \"./scroll_direction\";\r\nexport function isReachedLeft(scrollOffsetLeft, epsilon) {\r\n return Math.round(scrollOffsetLeft) <= epsilon\r\n}\r\nexport function isReachedRight(element, scrollOffsetLeft, epsilon) {\r\n return Math.round(getScrollLeftMax(element) - scrollOffsetLeft) <= epsilon\r\n}\r\nexport function isReachedTop(scrollOffsetTop, epsilon) {\r\n return Math.round(scrollOffsetTop) <= epsilon\r\n}\r\nexport function isReachedBottom(element, scrollOffsetTop, pocketHeight, epsilon) {\r\n return Math.round(getScrollTopMax(element) - scrollOffsetTop - pocketHeight) <= epsilon\r\n}\r\nexport function getBoundaryProps(direction, scrollOffset, element) {\r\n var pocketHeight = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 0;\r\n var {\r\n left: left,\r\n top: top\r\n } = scrollOffset;\r\n var boundaryProps = {};\r\n var {\r\n isHorizontal: isHorizontal,\r\n isVertical: isVertical\r\n } = new ScrollDirection(direction);\r\n if (isHorizontal) {\r\n boundaryProps.reachedLeft = isReachedLeft(left, 0);\r\n boundaryProps.reachedRight = isReachedRight(element, left, 0)\r\n }\r\n if (isVertical) {\r\n boundaryProps.reachedTop = isReachedTop(top, 0);\r\n boundaryProps.reachedBottom = isReachedBottom(element, top, pocketHeight, 0)\r\n }\r\n return boundaryProps\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/tabs.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getOuterWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport devices from \"../core/devices\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Button from \"./button\";\r\nimport {\r\n render\r\n} from \"./widget/utils.ink_ripple\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isPlainObject\r\n} from \"../core/utils/type\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport TabsItem from \"./tabs/item\";\r\nimport {\r\n TABS_EXPANDED_CLASS\r\n} from \"./tabs/constants\";\r\nimport {\r\n isMaterial,\r\n current as currentTheme\r\n} from \"./themes\";\r\nimport holdEvent from \"../events/hold\";\r\nimport Scrollable from \"./scroll_view/ui.scrollable\";\r\nimport {\r\n default as CollectionWidget\r\n} from \"./collection/ui.collection_widget.live_update\";\r\nimport {\r\n getImageContainer\r\n} from \"../core/utils/icon\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n isReachedLeft,\r\n isReachedRight\r\n} from \"../renovation/ui/scroll_view/utils/get_boundary_props\";\r\nimport {\r\n getScrollLeftMax\r\n} from \"../renovation/ui/scroll_view/utils/get_scroll_left_max\";\r\nvar TABS_CLASS = \"dx-tabs\";\r\nvar TABS_WRAPPER_CLASS = \"dx-tabs-wrapper\";\r\nvar TABS_STRETCHED_CLASS = \"dx-tabs-stretched\";\r\nvar TABS_SCROLLABLE_CLASS = \"dx-tabs-scrollable\";\r\nvar TABS_NAV_BUTTONS_CLASS = \"dx-tabs-nav-buttons\";\r\nvar OVERFLOW_HIDDEN_CLASS = \"dx-overflow-hidden\";\r\nvar TABS_ITEM_CLASS = \"dx-tab\";\r\nvar TABS_ITEM_SELECTED_CLASS = \"dx-tab-selected\";\r\nvar TABS_NAV_BUTTON_CLASS = \"dx-tabs-nav-button\";\r\nvar TABS_LEFT_NAV_BUTTON_CLASS = \"dx-tabs-nav-button-left\";\r\nvar TABS_RIGHT_NAV_BUTTON_CLASS = \"dx-tabs-nav-button-right\";\r\nvar TABS_ITEM_TEXT_CLASS = \"dx-tab-text\";\r\nvar FOCUSED_NEXT_TAB_CLASS = \"dx-focused-next-tab\";\r\nvar TABS_ITEM_DATA_KEY = \"dxTabData\";\r\nvar BUTTON_NEXT_ICON = \"chevronnext\";\r\nvar BUTTON_PREV_ICON = \"chevronprev\";\r\nvar FEEDBACK_HIDE_TIMEOUT = 100;\r\nvar FEEDBACK_DURATION_INTERVAL = 5;\r\nvar FEEDBACK_SCROLL_TIMEOUT = 300;\r\nvar TAB_OFFSET = 30;\r\nvar Tabs = CollectionWidget.inherit({\r\n _activeStateUnit: \".\" + TABS_ITEM_CLASS,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n showNavButtons: true,\r\n scrollByContent: true,\r\n scrollingEnabled: true,\r\n selectionMode: \"single\",\r\n activeStateEnabled: true,\r\n selectionRequired: false,\r\n selectOnFocus: true,\r\n loopItemFocus: false,\r\n useInkRipple: false,\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n },\r\n _itemAttributes: {\r\n role: \"tab\"\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n var themeName = currentTheme();\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" !== devices.real().deviceType\r\n },\r\n options: {\r\n showNavButtons: false\r\n }\r\n }, {\r\n device: {\r\n deviceType: \"desktop\"\r\n },\r\n options: {\r\n scrollByContent: false\r\n }\r\n }, {\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial(themeName)\r\n },\r\n options: {\r\n useInkRipple: true,\r\n selectOnFocus: false\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.setAria(\"role\", \"tablist\");\r\n this.$element().addClass(TABS_CLASS);\r\n this._renderWrapper();\r\n this._renderMultiple();\r\n this._feedbackHideTimeout = FEEDBACK_HIDE_TIMEOUT\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(function($container, data) {\r\n if (isPlainObject(data)) {\r\n this._prepareDefaultItemTemplate(data, $container)\r\n } else {\r\n $container.text(String(data))\r\n }\r\n var $iconElement = getImageContainer(data.icon);\r\n $iconElement && $iconElement.prependTo($container);\r\n $container.wrapInner($(\"<span>\").addClass(TABS_ITEM_TEXT_CLASS))\r\n }.bind(this), [\"text\", \"html\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _createItemByTemplate: function(itemTemplate, renderArgs) {\r\n var {\r\n itemData: itemData,\r\n container: container,\r\n index: index\r\n } = renderArgs;\r\n this._deferredTemplates[index] = new Deferred;\r\n return itemTemplate.render({\r\n model: itemData,\r\n container: container,\r\n index: index,\r\n onRendered: () => this._deferredTemplates[index].resolve()\r\n })\r\n },\r\n _itemClass: function() {\r\n return TABS_ITEM_CLASS\r\n },\r\n _selectedItemClass: function() {\r\n return TABS_ITEM_SELECTED_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return TABS_ITEM_DATA_KEY\r\n },\r\n _initMarkup: function() {\r\n this._deferredTemplates = [];\r\n this.callBase();\r\n this.option(\"useInkRipple\") && this._renderInkRipple();\r\n this.$element().addClass(OVERFLOW_HIDDEN_CLASS)\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._deferRenderScrolling()\r\n },\r\n _deferRenderScrolling() {\r\n when.apply(this, this._deferredTemplates).done(() => this._renderScrolling())\r\n },\r\n _renderScrolling: function() {\r\n var removeClasses = [TABS_STRETCHED_CLASS, TABS_EXPANDED_CLASS, OVERFLOW_HIDDEN_CLASS];\r\n this.$element().removeClass(removeClasses.join(\" \"));\r\n if (this.option(\"scrollingEnabled\") && this._isItemsWidthExceeded()) {\r\n if (!this._scrollable) {\r\n this._renderScrollable();\r\n this._renderNavButtons()\r\n }\r\n var scrollable = this.getScrollable();\r\n scrollable.update();\r\n if (this.option(\"rtlEnabled\")) {\r\n var maxLeftOffset = getScrollLeftMax($(this.getScrollable().container()).get(0));\r\n scrollable.scrollTo({\r\n left: maxLeftOffset\r\n })\r\n }\r\n this._updateNavButtonsVisibility();\r\n this._scrollToItem(this.option(\"selectedItem\"))\r\n }\r\n if (!(this.option(\"scrollingEnabled\") && this._isItemsWidthExceeded())) {\r\n this._cleanScrolling();\r\n if (this._needStretchItems() && !this._isItemsWidthExceeded()) {\r\n this.$element().addClass(TABS_STRETCHED_CLASS)\r\n }\r\n this.$element().removeClass(TABS_NAV_BUTTONS_CLASS).addClass(TABS_EXPANDED_CLASS)\r\n }\r\n },\r\n _isItemsWidthExceeded: function() {\r\n var tabItemsWidth = this._getSummaryItemsWidth(this._getVisibleItems(), true);\r\n return tabItemsWidth - 1 > getWidth(this.$element())\r\n },\r\n _needStretchItems: function() {\r\n var $visibleItems = this._getVisibleItems();\r\n var elementWidth = getWidth(this.$element());\r\n var itemsWidth = [];\r\n each($visibleItems, (_, item) => {\r\n itemsWidth.push(getOuterWidth(item, true))\r\n });\r\n var maxTabWidth = Math.max.apply(null, itemsWidth);\r\n return maxTabWidth >= elementWidth / $visibleItems.length\r\n },\r\n _cleanNavButtons: function() {\r\n if (!this._leftButton || !this._rightButton) {\r\n return\r\n }\r\n this._leftButton.$element().remove();\r\n this._rightButton.$element().remove();\r\n this._leftButton = null;\r\n this._rightButton = null\r\n },\r\n _cleanScrolling: function() {\r\n if (!this._scrollable) {\r\n return\r\n }\r\n this._$wrapper.appendTo(this.$element());\r\n this._scrollable.$element().remove();\r\n this._scrollable = null;\r\n this._cleanNavButtons()\r\n },\r\n _renderInkRipple: function() {\r\n this._inkRipple = render()\r\n },\r\n _getPointerEvent: () => pointerEvents.up,\r\n _toggleActiveState: function($element, value, e) {\r\n this.callBase.apply(this, arguments);\r\n if (!this._inkRipple) {\r\n return\r\n }\r\n var config = {\r\n element: $element,\r\n event: e\r\n };\r\n if (value) {\r\n this._inkRipple.showWave(config)\r\n } else {\r\n this._inkRipple.hideWave(config)\r\n }\r\n },\r\n _renderMultiple: function() {\r\n if (\"multiple\" === this.option(\"selectionMode\")) {\r\n this.option(\"selectOnFocus\", false)\r\n }\r\n },\r\n _renderWrapper: function() {\r\n this._$wrapper = $(\"<div>\").addClass(TABS_WRAPPER_CLASS);\r\n this.$element().append(this._$wrapper)\r\n },\r\n _itemContainer: function() {\r\n return this._$wrapper\r\n },\r\n _renderScrollable: function() {\r\n var $itemContainer = this.$element().wrapInner($(\"<div>\").addClass(TABS_SCROLLABLE_CLASS)).children();\r\n this._scrollable = this._createComponent($itemContainer, Scrollable, {\r\n direction: \"horizontal\",\r\n showScrollbar: \"never\",\r\n useKeyboard: false,\r\n useNative: false,\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n onScroll: () => {\r\n this._updateNavButtonsVisibility()\r\n }\r\n });\r\n this.$element().append(this._scrollable.$element())\r\n },\r\n _scrollToItem: function(itemData) {\r\n if (!this._scrollable) {\r\n return\r\n }\r\n var $item = this._editStrategy.getItemElement(itemData);\r\n this._scrollable.scrollToElement($item)\r\n },\r\n _renderNavButtons: function() {\r\n this.$element().toggleClass(TABS_NAV_BUTTONS_CLASS, this.option(\"showNavButtons\"));\r\n if (!this.option(\"showNavButtons\")) {\r\n return\r\n }\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n this._leftButton = this._createNavButton(-TAB_OFFSET, rtlEnabled ? BUTTON_NEXT_ICON : BUTTON_PREV_ICON);\r\n var $leftButton = this._leftButton.$element();\r\n $leftButton.addClass(TABS_LEFT_NAV_BUTTON_CLASS);\r\n this.$element().prepend($leftButton);\r\n this._rightButton = this._createNavButton(TAB_OFFSET, rtlEnabled ? BUTTON_PREV_ICON : BUTTON_NEXT_ICON);\r\n var $rightButton = this._rightButton.$element();\r\n $rightButton.addClass(TABS_RIGHT_NAV_BUTTON_CLASS);\r\n this.$element().append($rightButton)\r\n },\r\n _updateNavButtonsVisibility: function() {\r\n var scrollable = this.getScrollable();\r\n this._leftButton && this._leftButton.option(\"disabled\", isReachedLeft(scrollable.scrollLeft(), 1));\r\n this._rightButton && this._rightButton.option(\"disabled\", isReachedRight($(scrollable.container()).get(0), scrollable.scrollLeft(), 1))\r\n },\r\n _updateScrollPosition: function(offset, duration) {\r\n this._scrollable.update();\r\n this._scrollable.scrollBy(offset / duration)\r\n },\r\n _createNavButton: function(offset, icon) {\r\n var that = this;\r\n var holdAction = that._createAction((function() {\r\n that._holdInterval = setInterval((function() {\r\n that._updateScrollPosition(offset, FEEDBACK_DURATION_INTERVAL)\r\n }), FEEDBACK_DURATION_INTERVAL)\r\n }));\r\n var holdEventName = addNamespace(holdEvent.name, \"dxNavButton\");\r\n var pointerUpEventName = addNamespace(pointerEvents.up, \"dxNavButton\");\r\n var pointerOutEventName = addNamespace(pointerEvents.out, \"dxNavButton\");\r\n var navButton = this._createComponent($(\"<div>\").addClass(TABS_NAV_BUTTON_CLASS), Button, {\r\n focusStateEnabled: false,\r\n icon: icon,\r\n onClick: function() {\r\n that._updateScrollPosition(offset, 1)\r\n },\r\n integrationOptions: {}\r\n });\r\n var $navButton = navButton.$element();\r\n eventsEngine.on($navButton, holdEventName, {\r\n timeout: FEEDBACK_SCROLL_TIMEOUT\r\n }, function(e) {\r\n holdAction({\r\n event: e\r\n })\r\n }.bind(this));\r\n eventsEngine.on($navButton, pointerUpEventName, (function() {\r\n that._clearInterval()\r\n }));\r\n eventsEngine.on($navButton, pointerOutEventName, (function() {\r\n that._clearInterval()\r\n }));\r\n return navButton\r\n },\r\n _clearInterval: function() {\r\n if (this._holdInterval) {\r\n clearInterval(this._holdInterval)\r\n }\r\n },\r\n _updateSelection: function(addedSelection) {\r\n this._scrollable && this._scrollable.scrollToElement(this.itemElements().eq(addedSelection[0]), {\r\n left: 1,\r\n right: 1\r\n })\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n this._renderScrolling()\r\n },\r\n _itemSelectHandler: function(e) {\r\n if (\"single\" === this.option(\"selectionMode\") && this.isItemSelected(e.currentTarget)) {\r\n return\r\n }\r\n this.callBase(e)\r\n },\r\n _clean: function() {\r\n this._deferredTemplates = [];\r\n this._cleanScrolling();\r\n this.callBase()\r\n },\r\n _toggleFocusedNextClass(index, isNextTabFocused) {\r\n this._itemElements().eq(index).toggleClass(FOCUSED_NEXT_TAB_CLASS, isNextTabFocused)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"useInkRipple\":\r\n case \"scrollingEnabled\":\r\n case \"showNavButtons\":\r\n this._invalidate();\r\n break;\r\n case \"scrollByContent\":\r\n this._scrollable && this._scrollable.option(args.name, args.value);\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"selectionMode\":\r\n this._renderMultiple();\r\n this.callBase(args);\r\n break;\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n case \"focusedElement\":\r\n var {\r\n selectedIndex: selectedIndex\r\n } = this.option();\r\n var currentIndex = $(args.value).index();\r\n if (currentIndex !== selectedIndex) {\r\n this._toggleFocusedNextClass(selectedIndex, currentIndex === selectedIndex + 1)\r\n }\r\n this.callBase(args);\r\n this._scrollToItem(args.value);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _afterItemElementInserted() {\r\n this.callBase();\r\n this._deferRenderScrolling()\r\n },\r\n _afterItemElementDeleted($item, deletedActionArgs) {\r\n this.callBase($item, deletedActionArgs);\r\n this._renderScrolling()\r\n },\r\n getScrollable() {\r\n return this._scrollable\r\n }\r\n});\r\nTabs.ItemClass = TabsItem;\r\nregisterComponent(\"dxTabs\", Tabs);\r\nexport default Tabs;\r\n","/**\r\n * DevExtreme (esm/ui/tab_panel/item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport CollectionWidgetItem from \"../collection/item\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nexport default class TabPanelItem extends CollectionWidgetItem {\r\n _renderWatchers() {\r\n this._startWatcher(\"badge\", noop);\r\n return super._renderWatchers()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/tab_panel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n touch\r\n} from \"../core/utils/support\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport devices from \"../core/devices\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport MultiView from \"./multi_view\";\r\nimport Tabs from \"./tabs\";\r\nimport {\r\n default as TabPanelItem\r\n} from \"./tab_panel/item\";\r\nimport {\r\n getImageContainer\r\n} from \"../core/utils/icon\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nvar TABPANEL_CLASS = \"dx-tabpanel\";\r\nvar TABPANEL_TABS_CLASS = \"dx-tabpanel-tabs\";\r\nvar TABPANEL_CONTAINER_CLASS = \"dx-tabpanel-container\";\r\nvar TABS_ITEM_TEXT_CLASS = \"dx-tab-text\";\r\nvar DISABLED_FOCUSED_TAB_CLASS = \"dx-disabled-focused-tab\";\r\nvar TabPanel = MultiView.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n itemTitleTemplate: \"title\",\r\n hoverStateEnabled: true,\r\n showNavButtons: false,\r\n scrollByContent: true,\r\n scrollingEnabled: true,\r\n onTitleClick: null,\r\n onTitleHold: null,\r\n onTitleRendered: null,\r\n badgeExpr: function(data) {\r\n return data ? data.badge : void 0\r\n }\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return !touch\r\n },\r\n options: {\r\n swipeEnabled: false\r\n }\r\n }, {\r\n device: {\r\n platform: \"generic\"\r\n },\r\n options: {\r\n animationEnabled: false\r\n }\r\n }])\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this.$element().addClass(TABPANEL_CLASS);\r\n this.setAria(\"role\", \"tabpanel\")\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this._createTitleActions();\r\n this._renderLayout()\r\n },\r\n _initTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n title: new BindableTemplate((function($container, data) {\r\n if (isPlainObject(data)) {\r\n var $iconElement = getImageContainer(data.icon);\r\n if ($iconElement) {\r\n $container.append($iconElement)\r\n }\r\n if (isDefined(data.title) && !isPlainObject(data.title)) {\r\n $container.append(domAdapter.createTextNode(data.title))\r\n }\r\n } else if (isDefined(data)) {\r\n $container.text(String(data))\r\n }\r\n $container.wrapInner($(\"<span>\").addClass(TABS_ITEM_TEXT_CLASS))\r\n }), [\"title\", \"icon\"], this.option(\"integrationOptions.watchMethod\"))\r\n })\r\n },\r\n _createTitleActions: function() {\r\n this._createTitleClickAction();\r\n this._createTitleHoldAction();\r\n this._createTitleRenderedAction()\r\n },\r\n _createTitleClickAction: function() {\r\n this._titleClickAction = this._createActionByOption(\"onTitleClick\")\r\n },\r\n _createTitleHoldAction: function() {\r\n this._titleHoldAction = this._createActionByOption(\"onTitleHold\")\r\n },\r\n _createTitleRenderedAction: function() {\r\n this._titleRenderedAction = this._createActionByOption(\"onTitleRendered\")\r\n },\r\n _renderContent: function() {\r\n var that = this;\r\n this.callBase();\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n this._resizeEventTimer = setTimeout((function() {\r\n that._updateLayout()\r\n }), 0)\r\n }\r\n },\r\n _renderLayout: function() {\r\n if (this._tabs) {\r\n this._updateLayout();\r\n return\r\n }\r\n var $element = this.$element();\r\n this._$tabContainer = $(\"<div>\").addClass(TABPANEL_TABS_CLASS).appendTo($element);\r\n var $tabs = $(\"<div>\").appendTo(this._$tabContainer);\r\n this._tabs = this._createComponent($tabs, Tabs, this._tabConfig());\r\n this._$container = $(\"<div>\").addClass(TABPANEL_CONTAINER_CLASS).appendTo($element);\r\n this._$container.append(this._$wrapper);\r\n this._updateLayout()\r\n },\r\n _updateLayout: function() {\r\n if (hasWindow()) {\r\n var tabsHeight = getOuterHeight(this._$tabContainer);\r\n this._$container.css({\r\n marginTop: -tabsHeight,\r\n paddingTop: tabsHeight\r\n })\r\n }\r\n },\r\n _refreshActiveDescendant: function() {\r\n if (!this._tabs) {\r\n return\r\n }\r\n var tabs = this._tabs;\r\n var tabItems = tabs.itemElements();\r\n var $activeTab = $(tabItems[tabs.option(\"selectedIndex\")]);\r\n var id = this.getFocusedItemId();\r\n this.setAria(\"controls\", void 0, $(tabItems));\r\n this.setAria(\"controls\", id, $activeTab)\r\n },\r\n _tabConfig: function() {\r\n return {\r\n selectOnFocus: true,\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n repaintChangesOnly: this.option(\"repaintChangesOnly\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n selectedIndex: this.option(\"selectedIndex\"),\r\n badgeExpr: this.option(\"badgeExpr\"),\r\n onItemClick: this._titleClickAction.bind(this),\r\n onItemHold: this._titleHoldAction.bind(this),\r\n itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n onSelectionChanged: function(e) {\r\n this.option(\"selectedIndex\", e.component.option(\"selectedIndex\"));\r\n this._refreshActiveDescendant()\r\n }.bind(this),\r\n onItemRendered: this._titleRenderedAction.bind(this),\r\n itemTemplate: this._getTemplateByOption(\"itemTitleTemplate\"),\r\n items: this.option(\"items\"),\r\n noDataText: null,\r\n scrollingEnabled: this.option(\"scrollingEnabled\"),\r\n scrollByContent: this.option(\"scrollByContent\"),\r\n showNavButtons: this.option(\"showNavButtons\"),\r\n itemTemplateProperty: \"tabTemplate\",\r\n loopItemFocus: this.option(\"loop\"),\r\n selectionRequired: true,\r\n onOptionChanged: function(args) {\r\n if (\"focusedElement\" === args.name) {\r\n if (args.value) {\r\n var $value = $(args.value);\r\n var $newItem = this._itemElements().eq($value.index());\r\n this.option(\"focusedElement\", getPublicElement($newItem))\r\n } else {\r\n this.option(\"focusedElement\", args.value)\r\n }\r\n }\r\n }.bind(this),\r\n onFocusIn: function(args) {\r\n this._focusInHandler(args.event)\r\n }.bind(this),\r\n onFocusOut: function(args) {\r\n if (!this._isFocusOutHandlerExecuting) {\r\n this._focusOutHandler(args.event)\r\n }\r\n }.bind(this)\r\n }\r\n },\r\n _renderFocusTarget: function() {\r\n this._focusTarget().attr(\"tabIndex\", -1)\r\n },\r\n _toggleWrapperFocusedClass(isFocused) {\r\n this._toggleFocusClass(isFocused, this._$wrapper)\r\n },\r\n _toggleDisabledFocusedClass(isFocused) {\r\n this._focusTarget().toggleClass(DISABLED_FOCUSED_TAB_CLASS, isFocused)\r\n },\r\n _updateFocusState: function(e, isFocused) {\r\n this.callBase(e, isFocused);\r\n var isTabsTarget = e.target === this._tabs._focusTarget().get(0);\r\n var isMultiViewTarget = e.target === this._focusTarget().get(0);\r\n if (isTabsTarget) {\r\n this._toggleFocusClass(isFocused, this._focusTarget())\r\n }\r\n if (isTabsTarget || isMultiViewTarget) {\r\n var isDisabled = this._isDisabled(this.option(\"focusedElement\"));\r\n this._toggleWrapperFocusedClass(isFocused && !isDisabled);\r\n this._toggleDisabledFocusedClass(isFocused && isDisabled)\r\n }\r\n if (isMultiViewTarget) {\r\n this._toggleFocusClass(isFocused, this._tabs.option(\"focusedElement\"))\r\n }\r\n },\r\n _focusOutHandler: function(e) {\r\n this._isFocusOutHandlerExecuting = true;\r\n this.callBase.apply(this, arguments);\r\n this._tabs._focusOutHandler(e);\r\n this._isFocusOutHandlerExecuting = false\r\n },\r\n _setTabsOption: function(name, value) {\r\n if (this._tabs) {\r\n this._tabs.option(name, value)\r\n }\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._tabs._dimensionChanged();\r\n this._updateLayout()\r\n }\r\n },\r\n registerKeyHandler: function(key, handler) {\r\n this.callBase(key, handler);\r\n if (this._tabs) {\r\n this._tabs.registerKeyHandler(key, handler)\r\n }\r\n },\r\n repaint: function() {\r\n this.callBase();\r\n this._tabs.repaint()\r\n },\r\n _optionChanged: function(args) {\r\n var name = args.name;\r\n var value = args.value;\r\n var fullName = args.fullName;\r\n switch (name) {\r\n case \"dataSource\":\r\n this.callBase(args);\r\n break;\r\n case \"items\":\r\n this._setTabsOption(name, this.option(name));\r\n this._updateLayout();\r\n if (!this.option(\"repaintChangesOnly\")) {\r\n this._tabs.repaint()\r\n }\r\n this.callBase(args);\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._tabs.repaint();\r\n break;\r\n case \"selectedIndex\":\r\n case \"selectedItem\":\r\n this._setTabsOption(fullName, value);\r\n this.callBase(args);\r\n if (true === this.option(\"focusStateEnabled\")) {\r\n var selectedIndex = this.option(\"selectedIndex\");\r\n var selectedTabContent = this._itemElements().eq(selectedIndex);\r\n this.option(\"focusedElement\", getPublicElement(selectedTabContent))\r\n }\r\n break;\r\n case \"itemHoldTimeout\":\r\n case \"focusStateEnabled\":\r\n case \"hoverStateEnabled\":\r\n this._setTabsOption(fullName, value);\r\n this.callBase(args);\r\n break;\r\n case \"scrollingEnabled\":\r\n case \"scrollByContent\":\r\n case \"showNavButtons\":\r\n this._setTabsOption(fullName, value);\r\n break;\r\n case \"focusedElement\":\r\n var id = value ? $(value).index() : value;\r\n var newItem = value ? this._tabs._itemElements().eq(id) : value;\r\n this._setTabsOption(\"focusedElement\", getPublicElement(newItem));\r\n var isDisabled = this._isDisabled(value);\r\n this._toggleWrapperFocusedClass(!isDisabled);\r\n this._toggleDisabledFocusedClass(isDisabled);\r\n this.callBase(args);\r\n break;\r\n case \"itemTitleTemplate\":\r\n this._setTabsOption(\"itemTemplate\", this._getTemplateByOption(\"itemTitleTemplate\"));\r\n break;\r\n case \"onTitleClick\":\r\n this._createTitleClickAction();\r\n this._setTabsOption(\"onItemClick\", this._titleClickAction.bind(this));\r\n break;\r\n case \"onTitleHold\":\r\n this._createTitleHoldAction();\r\n this._setTabsOption(\"onItemHold\", this._titleHoldAction.bind(this));\r\n break;\r\n case \"onTitleRendered\":\r\n this._createTitleRenderedAction();\r\n this._setTabsOption(\"onItemRendered\", this._titleRenderedAction.bind(this));\r\n break;\r\n case \"loop\":\r\n this._setTabsOption(\"loopItemFocus\", value);\r\n break;\r\n case \"badgeExpr\":\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _clean: function() {\r\n clearTimeout(this._resizeEventTimer);\r\n this.callBase()\r\n }\r\n});\r\nTabPanel.ItemClass = TabPanelItem;\r\nregisterComponent(\"dxTabPanel\", TabPanel);\r\nexport default TabPanel;\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.item_option_action.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nexport default class ItemOptionAction {\r\n constructor(options) {\r\n this._options = options;\r\n this._itemsRunTimeInfo = this._options.itemsRunTimeInfo\r\n }\r\n findInstance() {\r\n return this._itemsRunTimeInfo.findWidgetInstanceByItem(this._options.item)\r\n }\r\n findItemContainer() {\r\n return this._itemsRunTimeInfo.findItemContainerByItem(this._options.item)\r\n }\r\n findPreparedItem() {\r\n return this._itemsRunTimeInfo.findPreparedItemByItem(this._options.item)\r\n }\r\n tryExecute() {\r\n Class.abstract()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport var createItemPathByIndex = (index, isTabs) => \"\".concat(isTabs ? \"tabs\" : \"items\", \"[\").concat(index, \"]\");\r\nexport var concatPaths = (path1, path2) => {\r\n if (isDefined(path1) && isDefined(path2)) {\r\n return \"\".concat(path1, \".\").concat(path2)\r\n }\r\n return path1 || path2\r\n};\r\nexport var getTextWithoutSpaces = text => text ? text.replace(/\\s/g, \"\") : void 0;\r\nexport var isEqualToDataFieldOrNameOrTitleOrCaption = (item, fieldName) => {\r\n if (item) {\r\n return item.dataField === fieldName || item.name === fieldName || getTextWithoutSpaces(item.title) === fieldName || \"group\" === item.itemType && getTextWithoutSpaces(item.caption) === fieldName\r\n }\r\n return false\r\n};\r\nexport var getFullOptionName = (path, optionName) => \"\".concat(path, \".\").concat(optionName);\r\nexport var getOptionNameFromFullName = fullName => {\r\n var parts = fullName.split(\".\");\r\n return parts[parts.length - 1].replace(/\\[\\d+]/, \"\")\r\n};\r\nexport var tryGetTabPath = fullPath => {\r\n var pathParts = fullPath.split(\".\");\r\n var resultPathParts = [...pathParts];\r\n for (var i = pathParts.length - 1; i >= 0; i--) {\r\n if (isFullPathContainsTabs(pathParts[i])) {\r\n return resultPathParts.join(\".\")\r\n }\r\n resultPathParts.splice(i, 1)\r\n }\r\n return \"\"\r\n};\r\nexport var isFullPathContainsTabs = fullPath => fullPath.indexOf(\"tabs\") > -1;\r\nexport var getItemPath = (items, item, isTabs) => {\r\n var index = items.indexOf(item);\r\n if (index > -1) {\r\n return createItemPathByIndex(index, isTabs)\r\n }\r\n for (var i = 0; i < items.length; i++) {\r\n var targetItem = items[i];\r\n var tabOrGroupItems = targetItem.tabs || targetItem.items;\r\n if (tabOrGroupItems) {\r\n var itemPath = getItemPath(tabOrGroupItems, item, targetItem.tabs);\r\n if (itemPath) {\r\n return concatPaths(createItemPathByIndex(i, isTabs), itemPath)\r\n }\r\n }\r\n }\r\n};\r\nexport function convertToLayoutManagerOptions(_ref) {\r\n var {\r\n form: form,\r\n $formElement: $formElement,\r\n formOptions: formOptions,\r\n items: items,\r\n validationGroup: validationGroup,\r\n extendedLayoutManagerOptions: extendedLayoutManagerOptions,\r\n onFieldDataChanged: onFieldDataChanged,\r\n onContentReady: onContentReady,\r\n onDisposing: onDisposing,\r\n onFieldItemRendered: onFieldItemRendered\r\n } = _ref;\r\n var baseOptions = {\r\n form: form,\r\n items: items,\r\n $formElement: $formElement,\r\n validationGroup: validationGroup,\r\n onFieldDataChanged: onFieldDataChanged,\r\n onContentReady: onContentReady,\r\n onDisposing: onDisposing,\r\n onFieldItemRendered: onFieldItemRendered,\r\n validationBoundary: formOptions.scrollingEnabled ? $formElement : void 0,\r\n scrollingEnabled: formOptions.scrollingEnabled,\r\n showRequiredMark: formOptions.showRequiredMark,\r\n showOptionalMark: formOptions.showOptionalMark,\r\n requiredMark: formOptions.requiredMark,\r\n optionalMark: formOptions.optionalMark,\r\n requiredMessage: formOptions.requiredMessage,\r\n screenByWidth: formOptions.screenByWidth,\r\n layoutData: formOptions.formData,\r\n labelLocation: formOptions.labelLocation,\r\n customizeItem: formOptions.customizeItem,\r\n minColWidth: formOptions.minColWidth,\r\n showColonAfterLabel: formOptions.showColonAfterLabel,\r\n onEditorEnterKey: formOptions.onEditorEnterKey,\r\n labelMode: formOptions.labelMode\r\n };\r\n var result = extend(baseOptions, {\r\n isRoot: extendedLayoutManagerOptions.isRoot,\r\n colCount: extendedLayoutManagerOptions.colCount,\r\n alignItemLabels: extendedLayoutManagerOptions.alignItemLabels,\r\n cssItemClass: extendedLayoutManagerOptions.cssItemClass,\r\n colCountByScreen: extendedLayoutManagerOptions.colCountByScreen,\r\n onLayoutChanged: extendedLayoutManagerOptions.onLayoutChanged,\r\n width: extendedLayoutManagerOptions.width\r\n });\r\n return result\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.item_options_actions.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport ItemOptionAction from \"./ui.form.item_option_action\";\r\nimport {\r\n data\r\n} from \"../../core/element_data\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n getFullOptionName\r\n} from \"./ui.form.utils\";\r\nclass WidgetOptionItemOptionAction extends ItemOptionAction {\r\n tryExecute() {\r\n var {\r\n value: value\r\n } = this._options;\r\n var instance = this.findInstance();\r\n if (instance) {\r\n instance.option(value);\r\n return true\r\n }\r\n return false\r\n }\r\n}\r\nclass TabOptionItemOptionAction extends ItemOptionAction {\r\n tryExecute() {\r\n var tabPanel = this.findInstance();\r\n if (tabPanel) {\r\n var {\r\n optionName: optionName,\r\n item: item,\r\n value: value\r\n } = this._options;\r\n var itemIndex = this._itemsRunTimeInfo.findItemIndexByItem(item);\r\n if (itemIndex >= 0) {\r\n tabPanel.option(getFullOptionName(\"items[\".concat(itemIndex, \"]\"), optionName), value);\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n}\r\nclass SimpleItemTemplateChangedAction extends ItemOptionAction {\r\n tryExecute() {\r\n return false\r\n }\r\n}\r\nclass GroupItemTemplateChangedAction extends ItemOptionAction {\r\n tryExecute() {\r\n var preparedItem = this.findPreparedItem();\r\n if (null != preparedItem && preparedItem._prepareGroupItemTemplate && preparedItem._renderGroupContentTemplate) {\r\n preparedItem._prepareGroupItemTemplate(this._options.item.template);\r\n preparedItem._renderGroupContentTemplate();\r\n return true\r\n }\r\n return false\r\n }\r\n}\r\nclass TabsOptionItemOptionAction extends ItemOptionAction {\r\n tryExecute() {\r\n var tabPanel = this.findInstance();\r\n if (tabPanel) {\r\n var {\r\n value: value\r\n } = this._options;\r\n tabPanel.option(\"dataSource\", value);\r\n return true\r\n }\r\n return false\r\n }\r\n}\r\nclass ValidationRulesItemOptionAction extends ItemOptionAction {\r\n tryExecute() {\r\n var {\r\n item: item\r\n } = this._options;\r\n var instance = this.findInstance();\r\n var validator = instance && data(instance.$element()[0], \"dxValidator\");\r\n if (validator && item) {\r\n var filterRequired = item => \"required\" === item.type;\r\n var oldContainsRequired = (validator.option(\"validationRules\") || []).some(filterRequired);\r\n var newContainsRequired = (item.validationRules || []).some(filterRequired);\r\n if (!oldContainsRequired && !newContainsRequired || oldContainsRequired && newContainsRequired) {\r\n validator.option(\"validationRules\", item.validationRules);\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n}\r\nclass CssClassItemOptionAction extends ItemOptionAction {\r\n tryExecute() {\r\n var $itemContainer = this.findItemContainer();\r\n var {\r\n previousValue: previousValue,\r\n value: value\r\n } = this._options;\r\n if ($itemContainer) {\r\n $itemContainer.removeClass(previousValue).addClass(value);\r\n return true\r\n }\r\n return false\r\n }\r\n}\r\nvar tryCreateItemOptionAction = (optionName, itemActionOptions) => {\r\n switch (optionName) {\r\n case \"editorOptions\":\r\n case \"buttonOptions\":\r\n return new WidgetOptionItemOptionAction(itemActionOptions);\r\n case \"validationRules\":\r\n return new ValidationRulesItemOptionAction(itemActionOptions);\r\n case \"cssClass\":\r\n return new CssClassItemOptionAction(itemActionOptions);\r\n case \"badge\":\r\n case \"disabled\":\r\n case \"icon\":\r\n case \"tabTemplate\":\r\n case \"title\":\r\n return new TabOptionItemOptionAction(extend(itemActionOptions, {\r\n optionName: optionName\r\n }));\r\n case \"tabs\":\r\n return new TabsOptionItemOptionAction(itemActionOptions);\r\n case \"template\":\r\n var _itemActionOptions$it, _itemActionOptions$it2, _itemActionOptions$it3;\r\n var itemType = null !== (_itemActionOptions$it = null === itemActionOptions || void 0 === itemActionOptions ? void 0 : null === (_itemActionOptions$it2 = itemActionOptions.item) || void 0 === _itemActionOptions$it2 ? void 0 : _itemActionOptions$it2.itemType) && void 0 !== _itemActionOptions$it ? _itemActionOptions$it : null === (_itemActionOptions$it3 = itemActionOptions.itemsRunTimeInfo.findPreparedItemByItem(null === itemActionOptions || void 0 === itemActionOptions ? void 0 : itemActionOptions.item)) || void 0 === _itemActionOptions$it3 ? void 0 : _itemActionOptions$it3.itemType;\r\n if (\"simple\" === itemType) {\r\n return new SimpleItemTemplateChangedAction(itemActionOptions)\r\n } else if (\"group\" === itemType) {\r\n return new GroupItemTemplateChangedAction(itemActionOptions)\r\n }\r\n return new TabOptionItemOptionAction(extend(itemActionOptions, {\r\n optionName: optionName\r\n }));\r\n default:\r\n return null\r\n }\r\n};\r\nexport default tryCreateItemOptionAction;\r\n","/**\r\n * DevExtreme (esm/ui/responsive_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n grep,\r\n noop\r\n} from \"../core/utils/common\";\r\nimport {\r\n isDefined,\r\n isPlainObject,\r\n isEmptyObject\r\n} from \"../core/utils/type\";\r\nimport errors from \"./widget/ui.errors\";\r\nimport {\r\n getWindow,\r\n defaultScreenFactorFunc,\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Box from \"./box\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nvar RESPONSIVE_BOX_CLASS = \"dx-responsivebox\";\r\nvar SCREEN_SIZE_CLASS_PREFIX = RESPONSIVE_BOX_CLASS + \"-screen-\";\r\nvar BOX_ITEM_CLASS = \"dx-box-item\";\r\nvar BOX_ITEM_DATA_KEY = \"dxBoxItemData\";\r\nvar HD_SCREEN_WIDTH = 1920;\r\nvar ResponsiveBox = CollectionWidget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n rows: [],\r\n cols: [],\r\n screenByWidth: null,\r\n singleColumnScreen: \"\",\r\n height: \"100%\",\r\n width: \"100%\",\r\n activeStateEnabled: false,\r\n focusStateEnabled: false,\r\n onItemStateChanged: void 0,\r\n onLayoutChanged: null,\r\n currentScreenFactor: void 0\r\n })\r\n },\r\n _init: function() {\r\n if (!this.option(\"screenByWidth\")) {\r\n this._options.silent(\"screenByWidth\", defaultScreenFactorFunc)\r\n }\r\n this.callBase();\r\n this._initLayoutChangedAction()\r\n },\r\n _initLayoutChangedAction: function() {\r\n this._layoutChangedAction = this._createActionByOption(\"onLayoutChanged\", {\r\n excludeValidators: [\"disabled\", \"readonly\"]\r\n })\r\n },\r\n _itemClass: function() {\r\n return BOX_ITEM_CLASS\r\n },\r\n _itemDataKey: function() {\r\n return BOX_ITEM_DATA_KEY\r\n },\r\n _initMarkup: function() {\r\n this.callBase();\r\n this.$element().addClass(RESPONSIVE_BOX_CLASS)\r\n },\r\n _renderItems: function() {\r\n this._setScreenSize();\r\n this._screenItems = this._itemsByScreen();\r\n this._prepareGrid();\r\n this._spreadItems();\r\n this._layoutItems();\r\n this._linkNodeToItem()\r\n },\r\n _itemOptionChanged: function(item) {\r\n var $item = this._findItemElementByItem(item);\r\n if (!$item.length) {\r\n return\r\n }\r\n this._refreshItem($item, item);\r\n this._clearItemNodeTemplates();\r\n this._update(true)\r\n },\r\n _setScreenSize: function() {\r\n var currentScreen = this._getCurrentScreen();\r\n this._removeScreenSizeClass();\r\n this.$element().addClass(SCREEN_SIZE_CLASS_PREFIX + currentScreen);\r\n this.option(\"currentScreenFactor\", currentScreen)\r\n },\r\n _removeScreenSizeClass: function() {\r\n var currentScreenFactor = this.option(\"currentScreenFactor\");\r\n currentScreenFactor && this.$element().removeClass(SCREEN_SIZE_CLASS_PREFIX + currentScreenFactor)\r\n },\r\n _prepareGrid: function() {\r\n var grid = this._grid = [];\r\n this._prepareRowsAndCols();\r\n each(this._rows, function() {\r\n var row = [];\r\n grid.push(row);\r\n each(this._cols, function() {\r\n row.push(this._createEmptyCell())\r\n }.bind(this))\r\n }.bind(this))\r\n },\r\n getSingleColumnRows: function() {\r\n var rows = this.option(\"rows\");\r\n var screenItemsLength = this._screenItems.length;\r\n if (rows.length) {\r\n var filteredRows = this._filterByScreen(rows);\r\n var result = [];\r\n for (var i = 0; i < screenItemsLength; i++) {\r\n var sizeConfig = this._defaultSizeConfig();\r\n if (i < filteredRows.length && isDefined(filteredRows[i].shrink)) {\r\n sizeConfig.shrink = filteredRows[i].shrink\r\n }\r\n result.push(sizeConfig)\r\n }\r\n return result\r\n } else {\r\n return this._defaultSizeConfig(screenItemsLength)\r\n }\r\n },\r\n _prepareRowsAndCols: function() {\r\n if (this._isSingleColumnScreen()) {\r\n this._prepareSingleColumnScreenItems();\r\n this._rows = this.getSingleColumnRows();\r\n this._cols = this._defaultSizeConfig(1)\r\n } else {\r\n this._rows = this._sizesByScreen(this.option(\"rows\"));\r\n this._cols = this._sizesByScreen(this.option(\"cols\"))\r\n }\r\n },\r\n _isSingleColumnScreen: function() {\r\n return this._screenRegExp().test(this.option(\"singleColumnScreen\")) || !this.option(\"rows\").length || !this.option(\"cols\").length\r\n },\r\n _prepareSingleColumnScreenItems: function() {\r\n this._screenItems.sort((function(item1, item2) {\r\n return item1.location.row - item2.location.row || item1.location.col - item2.location.col\r\n }));\r\n each(this._screenItems, (function(index, item) {\r\n extend(item.location, {\r\n row: index,\r\n col: 0,\r\n rowspan: 1,\r\n colspan: 1\r\n })\r\n }))\r\n },\r\n _sizesByScreen: function(sizeConfigs) {\r\n return map(this._filterByScreen(sizeConfigs), function(sizeConfig) {\r\n return extend(this._defaultSizeConfig(), sizeConfig)\r\n }.bind(this))\r\n },\r\n _createDefaultSizeConfig: function() {\r\n return {\r\n ratio: 1,\r\n baseSize: 0,\r\n minSize: 0,\r\n maxSize: 0\r\n }\r\n },\r\n _defaultSizeConfig: function(size) {\r\n var defaultSizeConfig = this._createDefaultSizeConfig();\r\n if (!arguments.length) {\r\n return defaultSizeConfig\r\n }\r\n var result = [];\r\n for (var i = 0; i < size; i++) {\r\n result.push(defaultSizeConfig)\r\n }\r\n return result\r\n },\r\n _filterByScreen: function(items) {\r\n var screenRegExp = this._screenRegExp();\r\n return grep(items, (function(item) {\r\n return !item.screen || screenRegExp.test(item.screen)\r\n }))\r\n },\r\n _screenRegExp: function() {\r\n var screen = this._getCurrentScreen();\r\n return new RegExp(\"(^|\\\\s)\" + screen + \"($|\\\\s)\", \"i\")\r\n },\r\n _getCurrentScreen: function() {\r\n var width = this._screenWidth();\r\n return this.option(\"screenByWidth\")(width)\r\n },\r\n _screenWidth: function() {\r\n return hasWindow() ? getWidth(getWindow()) : HD_SCREEN_WIDTH\r\n },\r\n _createEmptyCell: function() {\r\n return {\r\n item: {},\r\n location: {\r\n colspan: 1,\r\n rowspan: 1\r\n }\r\n }\r\n },\r\n _spreadItems: function() {\r\n each(this._screenItems, function(_, itemInfo) {\r\n var location = itemInfo.location || {};\r\n var itemCol = location.col;\r\n var itemRow = location.row;\r\n var row = this._grid[itemRow];\r\n var itemCell = row && row[itemCol];\r\n this._occupyCells(itemCell, itemInfo)\r\n }.bind(this))\r\n },\r\n _itemsByScreen: function() {\r\n return this.option(\"items\").reduce((result, item) => {\r\n var locations = item.location || {};\r\n locations = isPlainObject(locations) ? [locations] : locations;\r\n this._filterByScreen(locations).forEach(location => {\r\n result.push({\r\n item: item,\r\n location: extend({\r\n rowspan: 1,\r\n colspan: 1\r\n }, location)\r\n })\r\n });\r\n return result\r\n }, [])\r\n },\r\n _occupyCells: function(itemCell, itemInfo) {\r\n if (!itemCell || this._isItemCellOccupied(itemCell, itemInfo)) {\r\n return\r\n }\r\n extend(itemCell, itemInfo);\r\n this._markSpanningCell(itemCell)\r\n },\r\n _isItemCellOccupied: function(itemCell, itemInfo) {\r\n if (!isEmptyObject(itemCell.item)) {\r\n return true\r\n }\r\n var result = false;\r\n this._loopOverSpanning(itemInfo.location, (function(cell) {\r\n result = result || !isEmptyObject(cell.item)\r\n }));\r\n return result\r\n },\r\n _loopOverSpanning: function(location, callback) {\r\n var rowEnd = location.row + location.rowspan - 1;\r\n var colEnd = location.col + location.colspan - 1;\r\n var boundRowEnd = Math.min(rowEnd, this._rows.length - 1);\r\n var boundColEnd = Math.min(colEnd, this._cols.length - 1);\r\n location.rowspan -= rowEnd - boundRowEnd;\r\n location.colspan -= colEnd - boundColEnd;\r\n for (var rowIndex = location.row; rowIndex <= boundRowEnd; rowIndex++) {\r\n for (var colIndex = location.col; colIndex <= boundColEnd; colIndex++) {\r\n if (rowIndex !== location.row || colIndex !== location.col) {\r\n callback(this._grid[rowIndex][colIndex])\r\n }\r\n }\r\n }\r\n },\r\n _markSpanningCell: function(itemCell) {\r\n this._loopOverSpanning(itemCell.location, (function(cell) {\r\n extend(cell, {\r\n item: itemCell.item,\r\n spanningCell: itemCell\r\n })\r\n }))\r\n },\r\n _linkNodeToItem: function() {\r\n each(this._itemElements(), (function(_, itemNode) {\r\n var $item = $(itemNode);\r\n var item = $item.data(BOX_ITEM_DATA_KEY);\r\n if (!item.box) {\r\n item.node = $item.children()\r\n }\r\n }))\r\n },\r\n _layoutItems: function() {\r\n var rowsCount = this._grid.length;\r\n var colsCount = rowsCount && this._grid[0].length;\r\n if (!rowsCount && !colsCount) {\r\n return\r\n }\r\n var result = this._layoutBlock({\r\n direction: \"col\",\r\n row: {\r\n start: 0,\r\n end: rowsCount - 1\r\n },\r\n col: {\r\n start: 0,\r\n end: colsCount - 1\r\n }\r\n });\r\n var rootBox = this._prepareBoxConfig(result.box || {\r\n direction: \"row\",\r\n items: [extend(result, {\r\n ratio: 1\r\n })]\r\n });\r\n extend(rootBox, this._rootBoxConfig(rootBox.items));\r\n this._$root = $(\"<div>\").appendTo(this._itemContainer());\r\n this._createComponent(this._$root, Box, rootBox)\r\n },\r\n _rootBoxConfig: function(items) {\r\n var rootItems = each(items, function(index, item) {\r\n this._needApplyAutoBaseSize(item) && extend(item, {\r\n baseSize: \"auto\"\r\n })\r\n }.bind(this));\r\n return {\r\n width: \"100%\",\r\n height: \"100%\",\r\n items: rootItems,\r\n itemTemplate: this._getTemplateByOption(\"itemTemplate\"),\r\n itemHoldTimeout: this.option(\"itemHoldTimeout\"),\r\n onItemHold: this._createActionByOption(\"onItemHold\"),\r\n onItemClick: this._createActionByOption(\"onItemClick\"),\r\n onItemContextMenu: this._createActionByOption(\"onItemContextMenu\"),\r\n onItemRendered: this._createActionByOption(\"onItemRendered\")\r\n }\r\n },\r\n _needApplyAutoBaseSize: function(item) {\r\n return !item.baseSize && (!item.minSize || \"auto\" === item.minSize) && (!item.maxSize || \"auto\" === item.maxSize)\r\n },\r\n _prepareBoxConfig: function(config) {\r\n return extend(config || {}, {\r\n crossAlign: \"stretch\",\r\n onItemStateChanged: this.option(\"onItemStateChanged\")\r\n })\r\n },\r\n _layoutBlock: function(options) {\r\n if (this._isSingleItem(options)) {\r\n return this._itemByCell(options.row.start, options.col.start)\r\n }\r\n return this._layoutDirection(options)\r\n },\r\n _isSingleItem: function(options) {\r\n var firstCellLocation = this._grid[options.row.start][options.col.start].location;\r\n var isItemRowSpanned = options.row.end - options.row.start === firstCellLocation.rowspan - 1;\r\n var isItemColSpanned = options.col.end - options.col.start === firstCellLocation.colspan - 1;\r\n return isItemRowSpanned && isItemColSpanned\r\n },\r\n _itemByCell: function(rowIndex, colIndex) {\r\n var itemCell = this._grid[rowIndex][colIndex];\r\n return itemCell.spanningCell ? null : itemCell.item\r\n },\r\n _layoutDirection: function(options) {\r\n var items = [];\r\n var direction = options.direction;\r\n var crossDirection = this._crossDirection(direction);\r\n var block;\r\n while (block = this._nextBlock(options)) {\r\n if (this._isBlockIndivisible(options.prevBlockOptions, block)) {\r\n throw errors.Error(\"E1025\")\r\n }\r\n var item = this._layoutBlock({\r\n direction: crossDirection,\r\n row: block.row,\r\n col: block.col,\r\n prevBlockOptions: options\r\n });\r\n if (item) {\r\n extend(item, this._blockSize(block, crossDirection));\r\n items.push(item)\r\n }\r\n options[crossDirection].start = block[crossDirection].end + 1\r\n }\r\n return {\r\n box: this._prepareBoxConfig({\r\n direction: direction,\r\n items: items\r\n })\r\n }\r\n },\r\n _isBlockIndivisible: function(options, block) {\r\n return options && options.col.start === block.col.start && options.col.end === block.col.end && options.row.start === block.row.start && options.row.end === block.row.end\r\n },\r\n _crossDirection: function(direction) {\r\n return \"col\" === direction ? \"row\" : \"col\"\r\n },\r\n _nextBlock: function(options) {\r\n var direction = options.direction;\r\n var crossDirection = this._crossDirection(direction);\r\n var startIndex = options[direction].start;\r\n var endIndex = options[direction].end;\r\n var crossStartIndex = options[crossDirection].start;\r\n if (crossStartIndex > options[crossDirection].end) {\r\n return null\r\n }\r\n var crossSpan = 1;\r\n for (var crossIndex = crossStartIndex; crossIndex < crossStartIndex + crossSpan; crossIndex++) {\r\n var lineCrossSpan = 1;\r\n for (var index = startIndex; index <= endIndex; index++) {\r\n var cell = this._cellByDirection(direction, index, crossIndex);\r\n lineCrossSpan = Math.max(lineCrossSpan, cell.location[crossDirection + \"span\"])\r\n }\r\n var lineCrossEndIndex = crossIndex + lineCrossSpan;\r\n var crossEndIndex = crossStartIndex + crossSpan;\r\n if (lineCrossEndIndex > crossEndIndex) {\r\n crossSpan += lineCrossEndIndex - crossEndIndex\r\n }\r\n }\r\n var result = {};\r\n result[direction] = {\r\n start: startIndex,\r\n end: endIndex\r\n };\r\n result[crossDirection] = {\r\n start: crossStartIndex,\r\n end: crossStartIndex + crossSpan - 1\r\n };\r\n return result\r\n },\r\n _cellByDirection: function(direction, index, crossIndex) {\r\n return \"col\" === direction ? this._grid[crossIndex][index] : this._grid[index][crossIndex]\r\n },\r\n _blockSize: function(block, direction) {\r\n var defaultMinSize = \"row\" === direction ? \"auto\" : 0;\r\n var sizeConfigs = \"row\" === direction ? this._rows : this._cols;\r\n var result = extend(this._createDefaultSizeConfig(), {\r\n ratio: 0\r\n });\r\n for (var index = block[direction].start; index <= block[direction].end; index++) {\r\n var sizeConfig = sizeConfigs[index];\r\n result.ratio += sizeConfig.ratio;\r\n result.baseSize += sizeConfig.baseSize;\r\n result.minSize += sizeConfig.minSize;\r\n result.maxSize += sizeConfig.maxSize;\r\n if (isDefined(sizeConfig.shrink)) {\r\n result.shrink = sizeConfig.shrink\r\n }\r\n }\r\n result.minSize = result.minSize ? result.minSize : defaultMinSize;\r\n result.maxSize = result.maxSize ? result.maxSize : \"auto\";\r\n this._isSingleColumnScreen() && (result.baseSize = \"auto\");\r\n return result\r\n },\r\n _update: function(forceRemoveRoot) {\r\n var $existingRoot = this._$root;\r\n this._renderItems();\r\n if ($existingRoot) {\r\n if (forceRemoveRoot) {\r\n $existingRoot.remove()\r\n } else {\r\n $existingRoot.detach();\r\n this._saveAssistantRoot($existingRoot)\r\n }\r\n }\r\n this._layoutChangedAction()\r\n },\r\n _saveAssistantRoot: function($root) {\r\n this._assistantRoots = this._assistantRoots || [];\r\n this._assistantRoots.push($root)\r\n },\r\n _dispose: function() {\r\n this._clearItemNodeTemplates();\r\n this._cleanUnusedRoots();\r\n this.callBase.apply(this, arguments)\r\n },\r\n _cleanUnusedRoots: function() {\r\n if (!this._assistantRoots) {\r\n return\r\n }\r\n each(this._assistantRoots, (function(_, item) {\r\n $(item).remove()\r\n }))\r\n },\r\n _clearItemNodeTemplates: function() {\r\n each(this.option(\"items\"), (function() {\r\n delete this.node\r\n }))\r\n },\r\n _attachClickEvent: noop,\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"rows\":\r\n case \"cols\":\r\n case \"screenByWidth\":\r\n case \"singleColumnScreen\":\r\n this._clearItemNodeTemplates();\r\n this._invalidate();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._update();\r\n break;\r\n case \"onLayoutChanged\":\r\n this._initLayoutChangedAction();\r\n break;\r\n case \"itemTemplate\":\r\n this._clearItemNodeTemplates();\r\n this.callBase(args);\r\n break;\r\n case \"currentScreenFactor\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n if (this._getCurrentScreen() !== this.option(\"currentScreenFactor\")) {\r\n this._update()\r\n }\r\n },\r\n repaint: function() {\r\n this._update()\r\n }\r\n});\r\nregisterComponent(\"dxResponsiveBox\", ResponsiveBox);\r\nexport default ResponsiveBox;\r\n","/**\r\n * DevExtreme (esm/ui/form/constants.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var WIDGET_CLASS = \"dx-widget\";\r\nexport var FORM_CLASS = \"dx-form\";\r\nexport var FORM_GROUP_CLASS = \"dx-form-group\";\r\nexport var FORM_GROUP_CAPTION_CLASS = \"dx-form-group-caption\";\r\nexport var FORM_FIELD_ITEM_COL_CLASS = \"dx-col-\";\r\nexport var FIELD_ITEM_CLASS = \"dx-field-item\";\r\nexport var LAYOUT_MANAGER_ONE_COLUMN = \"dx-layout-manager-one-col\";\r\nexport var FIELD_ITEM_LABEL_CONTENT_CLASS = \"dx-field-item-label-content\";\r\nexport var FORM_LAYOUT_MANAGER_CLASS = \"dx-layout-manager\";\r\nexport var FIELD_ITEM_LABEL_CLASS = \"dx-field-item-label\";\r\nexport var FIELD_ITEM_CONTENT_CLASS = \"dx-field-item-content\";\r\nexport var SINGLE_COLUMN_ITEM_CONTENT = \"dx-single-column-item-content\";\r\nexport var ROOT_SIMPLE_ITEM_CLASS = \"dx-root-simple-item\";\r\nexport var FORM_GROUP_CONTENT_CLASS = \"dx-form-group-content\";\r\nexport var FIELD_ITEM_CONTENT_HAS_GROUP_CLASS = \"dx-field-item-has-group\";\r\nexport var FIELD_ITEM_CONTENT_HAS_TABS_CLASS = \"dx-field-item-has-tabs\";\r\nexport var FORM_GROUP_WITH_CAPTION_CLASS = \"dx-form-group-with-caption\";\r\nexport var FIELD_ITEM_TAB_CLASS = \"dx-field-item-tab\";\r\nexport var GROUP_COL_COUNT_CLASS = \"dx-group-colcount-\";\r\nexport var GROUP_COL_COUNT_ATTR = \"group-col-count\";\r\nexport var FORM_VALIDATION_SUMMARY = \"dx-form-validation-summary\";\r\nexport var FORM_UNDERLINED_CLASS = \"dx-form-styling-mode-underlined\";\r\nexport var SIMPLE_ITEM_TYPE = \"simple\";\r\n","/**\r\n * DevExtreme (esm/ui/validation/default_adapter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Class from \"../../core/class\";\r\nvar DefaultAdapter = Class.inherit({\r\n ctor(editor, validator) {\r\n this.editor = editor;\r\n this.validator = validator;\r\n this.validationRequestsCallbacks = [];\r\n var handler = args => {\r\n this.validationRequestsCallbacks.forEach(item => item(args))\r\n };\r\n editor.validationRequest.add(handler);\r\n editor.on(\"disposing\", (function() {\r\n editor.validationRequest.remove(handler)\r\n }))\r\n },\r\n getValue() {\r\n return this.editor.option(\"value\")\r\n },\r\n getCurrentValidationError() {\r\n return this.editor.option(\"validationError\")\r\n },\r\n bypass() {\r\n return this.editor.option(\"disabled\")\r\n },\r\n applyValidationResults(params) {\r\n this.editor.option({\r\n validationErrors: params.brokenRules,\r\n validationStatus: params.status\r\n })\r\n },\r\n reset() {\r\n this.editor.reset()\r\n },\r\n focus() {\r\n this.editor.focus()\r\n }\r\n});\r\nexport default DefaultAdapter;\r\n","/**\r\n * DevExtreme (esm/ui/validator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n data as elementData\r\n} from \"../core/element_data\";\r\nimport Callbacks from \"../core/utils/callbacks\";\r\nimport errors from \"./widget/ui.errors\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport DefaultAdapter from \"./validation/default_adapter\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport Guid from \"../core/guid\";\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_STATUS_VALID = \"valid\";\r\nvar VALIDATION_STATUS_INVALID = \"invalid\";\r\nvar VALIDATION_STATUS_PENDING = \"pending\";\r\nvar Validator = DOMComponent.inherit({\r\n _initOptions: function(options) {\r\n this.callBase.apply(this, arguments);\r\n this.option(ValidationEngine.initValidationOptions(options))\r\n },\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n validationRules: []\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initGroupRegistration();\r\n this.focused = Callbacks();\r\n this._initAdapter();\r\n this._validationInfo = {\r\n result: null,\r\n deferred: null,\r\n skipValidation: false\r\n }\r\n },\r\n _initGroupRegistration() {\r\n var group = this._findGroup();\r\n if (!this._groupWasInit) {\r\n this.on(\"disposing\", (function(args) {\r\n ValidationEngine.removeRegisteredValidator(args.component._validationGroup, args.component)\r\n }))\r\n }\r\n if (!this._groupWasInit || this._validationGroup !== group) {\r\n ValidationEngine.removeRegisteredValidator(this._validationGroup, this);\r\n this._groupWasInit = true;\r\n this._validationGroup = group;\r\n ValidationEngine.registerValidatorInGroup(group, this)\r\n }\r\n },\r\n _setOptionsByReference() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n validationGroup: true\r\n })\r\n },\r\n _getEditor() {\r\n var element = this.$element()[0];\r\n return elementData(element, \"dx-validation-target\")\r\n },\r\n _initAdapter() {\r\n var dxStandardEditor = this._getEditor();\r\n var adapter = this.option(\"adapter\");\r\n if (!adapter) {\r\n if (dxStandardEditor) {\r\n adapter = new DefaultAdapter(dxStandardEditor, this);\r\n adapter.validationRequestsCallbacks.push(args => {\r\n if (this._validationInfo.skipValidation) {\r\n return\r\n }\r\n this.validate(args)\r\n });\r\n this.option(\"adapter\", adapter);\r\n return\r\n }\r\n throw errors.Error(\"E0120\")\r\n }\r\n var callbacks = adapter.validationRequestsCallbacks;\r\n if (callbacks) {\r\n callbacks.push(args => {\r\n this.validate(args)\r\n })\r\n }\r\n },\r\n _toggleRTLDirection(isRtl) {\r\n var _this$option$editor$o, _this$option, _this$option$editor;\r\n var rtlEnabled = null !== (_this$option$editor$o = null === (_this$option = this.option(\"adapter\")) || void 0 === _this$option ? void 0 : null === (_this$option$editor = _this$option.editor) || void 0 === _this$option$editor ? void 0 : _this$option$editor.option(\"rtlEnabled\")) && void 0 !== _this$option$editor$o ? _this$option$editor$o : isRtl;\r\n this.callBase(rtlEnabled)\r\n },\r\n _initMarkup() {\r\n this.$element().addClass(VALIDATOR_CLASS);\r\n this.callBase()\r\n },\r\n _render() {\r\n this.callBase();\r\n this._toggleAccessibilityAttributes()\r\n },\r\n _toggleAccessibilityAttributes() {\r\n var dxStandardEditor = this._getEditor();\r\n if (dxStandardEditor) {\r\n var rules = this.option(\"validationRules\") || [];\r\n var isRequired = rules.some(_ref => {\r\n var {\r\n type: type\r\n } = _ref;\r\n return \"required\" === type\r\n }) || null;\r\n if (dxStandardEditor.isInitialized()) {\r\n dxStandardEditor.setAria(\"required\", isRequired)\r\n }\r\n dxStandardEditor.option(\"_onMarkupRendered\", () => {\r\n dxStandardEditor.setAria(\"required\", isRequired)\r\n })\r\n }\r\n },\r\n _visibilityChanged(visible) {\r\n if (visible) {\r\n this._initGroupRegistration()\r\n }\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"validationGroup\":\r\n this._initGroupRegistration();\r\n return;\r\n case \"validationRules\":\r\n this._resetValidationRules();\r\n this._toggleAccessibilityAttributes();\r\n void 0 !== this.option(\"isValid\") && this.validate();\r\n return;\r\n case \"adapter\":\r\n this._initAdapter();\r\n break;\r\n case \"isValid\":\r\n case \"validationStatus\":\r\n this.option(ValidationEngine.synchronizeValidationOptions(args, this.option()));\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getValidationRules() {\r\n if (!this._validationRules) {\r\n this._validationRules = map(this.option(\"validationRules\"), (rule, index) => extend({}, rule, {\r\n validator: this,\r\n index: index\r\n }))\r\n }\r\n return this._validationRules\r\n },\r\n _findGroup() {\r\n var $element = this.$element();\r\n return this.option(\"validationGroup\") || ValidationEngine.findGroup($element, this._modelByElement($element))\r\n },\r\n _resetValidationRules() {\r\n delete this._validationRules\r\n },\r\n validate(args) {\r\n var adapter = this.option(\"adapter\");\r\n var name = this.option(\"name\");\r\n var bypass = adapter.bypass && adapter.bypass();\r\n var value = args && void 0 !== args.value ? args.value : adapter.getValue();\r\n var currentError = adapter.getCurrentValidationError && adapter.getCurrentValidationError();\r\n var rules = this._getValidationRules();\r\n var currentResult = this._validationInfo && this._validationInfo.result;\r\n if (currentResult && currentResult.status === VALIDATION_STATUS_PENDING && currentResult.value === value) {\r\n return extend({}, currentResult)\r\n }\r\n var result;\r\n if (bypass) {\r\n result = {\r\n isValid: true,\r\n status: VALIDATION_STATUS_VALID\r\n }\r\n } else if (currentError && currentError.editorSpecific) {\r\n currentError.validator = this;\r\n result = {\r\n isValid: false,\r\n status: VALIDATION_STATUS_INVALID,\r\n brokenRule: currentError,\r\n brokenRules: [currentError]\r\n }\r\n } else {\r\n result = ValidationEngine.validate(value, rules, name)\r\n }\r\n result.id = (new Guid).toString();\r\n this._applyValidationResult(result, adapter);\r\n result.complete && result.complete.then(res => {\r\n if (res.id === this._validationInfo.result.id) {\r\n this._applyValidationResult(res, adapter)\r\n }\r\n });\r\n return extend({}, this._validationInfo.result)\r\n },\r\n reset() {\r\n var adapter = this.option(\"adapter\");\r\n var result = {\r\n id: null,\r\n isValid: true,\r\n brokenRule: null,\r\n brokenRules: null,\r\n pendingRules: null,\r\n status: VALIDATION_STATUS_VALID,\r\n complete: null\r\n };\r\n this._validationInfo.skipValidation = true;\r\n adapter.reset();\r\n this._validationInfo.skipValidation = false;\r\n this._resetValidationRules();\r\n this._applyValidationResult(result, adapter)\r\n },\r\n _updateValidationResult(result) {\r\n if (!this._validationInfo.result || this._validationInfo.result.id !== result.id) {\r\n var complete = this._validationInfo.deferred && this._validationInfo.result.complete;\r\n this._validationInfo.result = extend({}, result, {\r\n complete: complete\r\n })\r\n } else {\r\n for (var prop in result) {\r\n if (\"id\" !== prop && \"complete\" !== prop) {\r\n this._validationInfo.result[prop] = result[prop]\r\n }\r\n }\r\n }\r\n },\r\n _applyValidationResult(result, adapter) {\r\n var validatedAction = this._createActionByOption(\"onValidated\", {\r\n excludeValidators: [\"readOnly\"]\r\n });\r\n result.validator = this;\r\n this._updateValidationResult(result);\r\n adapter.applyValidationResults && adapter.applyValidationResults(this._validationInfo.result);\r\n this.option({\r\n validationStatus: this._validationInfo.result.status\r\n });\r\n if (this._validationInfo.result.status === VALIDATION_STATUS_PENDING) {\r\n if (!this._validationInfo.deferred) {\r\n this._validationInfo.deferred = new Deferred;\r\n this._validationInfo.result.complete = this._validationInfo.deferred.promise()\r\n }\r\n this._eventsStrategy.fireEvent(\"validating\", [this._validationInfo.result]);\r\n return\r\n }\r\n if (this._validationInfo.result.status !== VALIDATION_STATUS_PENDING) {\r\n validatedAction(result);\r\n if (this._validationInfo.deferred) {\r\n this._validationInfo.deferred.resolve(result);\r\n this._validationInfo.deferred = null\r\n }\r\n }\r\n },\r\n focus() {\r\n var adapter = this.option(\"adapter\");\r\n adapter && adapter.focus && adapter.focus()\r\n },\r\n _useTemplates: function() {\r\n return false\r\n }\r\n});\r\nregisterComponent(\"dxValidator\", Validator);\r\nexport default Validator;\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.layout_manager.utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n captionize\r\n} from \"../../core/utils/inflector\";\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n SIMPLE_ITEM_TYPE\r\n} from \"./constants\";\r\nvar EDITORS_WITH_ARRAY_VALUE = [\"dxTagBox\", \"dxRangeSlider\", \"dxDateRangeBox\"];\r\nexport var EDITORS_WITHOUT_LABELS = [\"dxCalendar\", \"dxCheckBox\", \"dxHtmlEditor\", \"dxRadioGroup\", \"dxRangeSlider\", \"dxSlider\", \"dxSwitch\"];\r\nexport function convertToRenderFieldItemOptions(_ref) {\r\n var {\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList,\r\n formOrLayoutManager: formOrLayoutManager,\r\n createComponentCallback: createComponentCallback,\r\n item: item,\r\n template: template,\r\n labelTemplate: labelTemplate,\r\n name: name,\r\n formLabelLocation: formLabelLocation,\r\n requiredMessageTemplate: requiredMessageTemplate,\r\n validationGroup: validationGroup,\r\n editorValue: editorValue,\r\n canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,\r\n editorValidationBoundary: editorValidationBoundary,\r\n editorStylingMode: editorStylingMode,\r\n showColonAfterLabel: showColonAfterLabel,\r\n managerLabelLocation: managerLabelLocation,\r\n itemId: itemId,\r\n managerMarkOptions: managerMarkOptions,\r\n labelMode: labelMode,\r\n onLabelTemplateRendered: onLabelTemplateRendered\r\n } = _ref;\r\n var isRequired = isDefined(item.isRequired) ? item.isRequired : !!_hasRequiredRuleInSet(item.validationRules);\r\n var isSimpleItem = item.itemType === SIMPLE_ITEM_TYPE;\r\n var helpID = item.helpText ? \"dx-\" + new Guid : null;\r\n var labelOptions = _convertToLabelOptions({\r\n item: item,\r\n id: itemId,\r\n isRequired: isRequired,\r\n managerMarkOptions: managerMarkOptions,\r\n showColonAfterLabel: showColonAfterLabel,\r\n labelLocation: managerLabelLocation,\r\n formLabelMode: labelMode,\r\n labelTemplate: labelTemplate,\r\n onLabelTemplateRendered: onLabelTemplateRendered\r\n });\r\n var needRenderLabel = labelOptions.visible && (labelOptions.text || labelOptions.labelTemplate && isSimpleItem);\r\n var {\r\n location: labelLocation,\r\n labelID: labelID\r\n } = labelOptions;\r\n var labelNeedBaselineAlign = \"top\" !== labelLocation && [\"dxTextArea\", \"dxRadioGroup\", \"dxCalendar\", \"dxHtmlEditor\"].includes(item.editorType);\r\n var editorOptions = _convertToEditorOptions({\r\n editorType: item.editorType,\r\n editorValue: editorValue,\r\n defaultEditorName: item.dataField,\r\n canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,\r\n externalEditorOptions: item.editorOptions,\r\n editorInputId: itemId,\r\n editorValidationBoundary: editorValidationBoundary,\r\n editorStylingMode: editorStylingMode,\r\n formLabelMode: labelMode,\r\n labelText: labelOptions.textWithoutColon,\r\n labelMark: labelOptions.markOptions.showRequiredMark ? String.fromCharCode(160) + labelOptions.markOptions.requiredMark : \"\"\r\n });\r\n var needRenderOptionalMarkAsHelpText = labelOptions.markOptions.showOptionalMark && !labelOptions.visible && \"hidden\" !== editorOptions.labelMode && !isDefined(item.helpText);\r\n var helpText = needRenderOptionalMarkAsHelpText ? labelOptions.markOptions.optionalMark : item.helpText;\r\n return {\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList,\r\n formOrLayoutManager: formOrLayoutManager,\r\n createComponentCallback: createComponentCallback,\r\n labelOptions: labelOptions,\r\n labelNeedBaselineAlign: labelNeedBaselineAlign,\r\n labelLocation: labelLocation,\r\n needRenderLabel: needRenderLabel,\r\n item: item,\r\n isSimpleItem: isSimpleItem,\r\n isRequired: isRequired,\r\n template: template,\r\n helpID: helpID,\r\n labelID: labelID,\r\n name: name,\r\n helpText: helpText,\r\n formLabelLocation: formLabelLocation,\r\n requiredMessageTemplate: requiredMessageTemplate,\r\n validationGroup: validationGroup,\r\n editorOptions: editorOptions\r\n }\r\n}\r\nexport function getLabelMarkText(_ref2) {\r\n var {\r\n showRequiredMark: showRequiredMark,\r\n requiredMark: requiredMark,\r\n showOptionalMark: showOptionalMark,\r\n optionalMark: optionalMark\r\n } = _ref2;\r\n if (!showRequiredMark && !showOptionalMark) {\r\n return \"\"\r\n }\r\n return String.fromCharCode(160) + (showRequiredMark ? requiredMark : optionalMark)\r\n}\r\nexport function convertToLabelMarkOptions(_ref3, isRequired) {\r\n var {\r\n showRequiredMark: showRequiredMark,\r\n requiredMark: requiredMark,\r\n showOptionalMark: showOptionalMark,\r\n optionalMark: optionalMark\r\n } = _ref3;\r\n return {\r\n showRequiredMark: showRequiredMark && isRequired,\r\n requiredMark: requiredMark,\r\n showOptionalMark: showOptionalMark && !isRequired,\r\n optionalMark: optionalMark\r\n }\r\n}\r\n\r\nfunction _convertToEditorOptions(_ref4) {\r\n var {\r\n editorType: editorType,\r\n defaultEditorName: defaultEditorName,\r\n editorValue: editorValue,\r\n canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,\r\n externalEditorOptions: externalEditorOptions,\r\n editorInputId: editorInputId,\r\n editorValidationBoundary: editorValidationBoundary,\r\n editorStylingMode: editorStylingMode,\r\n formLabelMode: formLabelMode,\r\n labelText: labelText,\r\n labelMark: labelMark\r\n } = _ref4;\r\n var editorOptionsWithValue = {};\r\n if (void 0 !== editorValue || canAssignUndefinedValueToEditor) {\r\n editorOptionsWithValue.value = editorValue\r\n }\r\n if (-1 !== EDITORS_WITH_ARRAY_VALUE.indexOf(editorType)) {\r\n editorOptionsWithValue.value = editorOptionsWithValue.value || []\r\n }\r\n var labelMode = null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.labelMode;\r\n if (!isDefined(labelMode)) {\r\n labelMode = \"outside\" === formLabelMode ? \"hidden\" : formLabelMode\r\n }\r\n var stylingMode = (null === externalEditorOptions || void 0 === externalEditorOptions ? void 0 : externalEditorOptions.stylingMode) || editorStylingMode;\r\n var result = extend(true, editorOptionsWithValue, externalEditorOptions, {\r\n inputAttr: {\r\n id: editorInputId\r\n },\r\n validationBoundary: editorValidationBoundary,\r\n stylingMode: stylingMode,\r\n label: labelText,\r\n labelMode: labelMode,\r\n labelMark: labelMark\r\n });\r\n if (externalEditorOptions) {\r\n if (result.dataSource) {\r\n result.dataSource = externalEditorOptions.dataSource\r\n }\r\n if (result.items) {\r\n result.items = externalEditorOptions.items\r\n }\r\n }\r\n if (defaultEditorName && !result.name) {\r\n result.name = defaultEditorName\r\n }\r\n return result\r\n}\r\n\r\nfunction _hasRequiredRuleInSet(rules) {\r\n var hasRequiredRule;\r\n if (rules && rules.length) {\r\n each(rules, (function(index, rule) {\r\n if (\"required\" === rule.type) {\r\n hasRequiredRule = true;\r\n return false\r\n }\r\n }))\r\n }\r\n return hasRequiredRule\r\n}\r\n\r\nfunction _convertToLabelOptions(_ref5) {\r\n var {\r\n item: item,\r\n id: id,\r\n isRequired: isRequired,\r\n managerMarkOptions: managerMarkOptions,\r\n showColonAfterLabel: showColonAfterLabel,\r\n labelLocation: labelLocation,\r\n labelTemplate: labelTemplate,\r\n formLabelMode: formLabelMode,\r\n onLabelTemplateRendered: onLabelTemplateRendered\r\n } = _ref5;\r\n var isEditorWithoutLabels = EDITORS_WITHOUT_LABELS.includes(item.editorType);\r\n var labelOptions = extend({\r\n showColon: showColonAfterLabel,\r\n location: labelLocation,\r\n id: id,\r\n visible: \"outside\" === formLabelMode || isEditorWithoutLabels && \"hidden\" !== formLabelMode,\r\n isRequired: isRequired\r\n }, item ? item.label : {}, {\r\n markOptions: convertToLabelMarkOptions(managerMarkOptions, isRequired),\r\n labelTemplate: labelTemplate,\r\n onLabelTemplateRendered: onLabelTemplateRendered\r\n });\r\n if ([\"dxRadioGroup\", \"dxCheckBox\", \"dxLookup\", \"dxSlider\", \"dxRangeSlider\", \"dxSwitch\", \"dxHtmlEditor\", \"dxDateRangeBox\"].includes(item.editorType)) {\r\n labelOptions.labelID = \"dx-label-\".concat(new Guid)\r\n }\r\n if (!labelOptions.text && item.dataField) {\r\n labelOptions.text = captionize(item.dataField)\r\n }\r\n if (labelOptions.text) {\r\n labelOptions.textWithoutColon = labelOptions.text;\r\n labelOptions.text += labelOptions.showColon ? \":\" : \"\"\r\n }\r\n return labelOptions\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/components/label.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n getLabelMarkText\r\n} from \"../ui.form.layout_manager.utils\";\r\nimport {\r\n FIELD_ITEM_LABEL_CONTENT_CLASS,\r\n FIELD_ITEM_LABEL_CLASS\r\n} from \"../constants\";\r\nexport var GET_LABEL_WIDTH_BY_TEXT_CLASS = \"dx-layout-manager-hidden-label\";\r\nexport var FIELD_ITEM_REQUIRED_MARK_CLASS = \"dx-field-item-required-mark\";\r\nexport var FIELD_ITEM_LABEL_LOCATION_CLASS = \"dx-field-item-label-location-\";\r\nexport var FIELD_ITEM_OPTIONAL_MARK_CLASS = \"dx-field-item-optional-mark\";\r\nexport var FIELD_ITEM_LABEL_TEXT_CLASS = \"dx-field-item-label-text\";\r\nexport function renderLabel(_ref) {\r\n var {\r\n text: text,\r\n id: id,\r\n location: location,\r\n alignment: alignment,\r\n labelID: labelID = null,\r\n markOptions: markOptions = {},\r\n labelTemplate: labelTemplate,\r\n labelTemplateData: labelTemplateData,\r\n onLabelTemplateRendered: onLabelTemplateRendered\r\n } = _ref;\r\n if ((!isDefined(text) || text.length <= 0) && !isDefined(labelTemplate)) {\r\n return null\r\n }\r\n var $label = $(\"<label>\").addClass(FIELD_ITEM_LABEL_CLASS + \" \" + FIELD_ITEM_LABEL_LOCATION_CLASS + location).attr(\"for\", id).attr(\"id\", labelID).css(\"textAlign\", alignment);\r\n var $labelContainer = $(\"<span>\").addClass(FIELD_ITEM_LABEL_CONTENT_CLASS);\r\n var $labelContent = $(\"<span>\").addClass(FIELD_ITEM_LABEL_TEXT_CLASS).text(text);\r\n if (labelTemplate) {\r\n $labelContent = $(\"<div>\").addClass(\"dx-field-item-custom-label-content\");\r\n labelTemplateData.text = text;\r\n labelTemplate.render({\r\n container: getPublicElement($labelContent),\r\n model: labelTemplateData,\r\n onRendered() {\r\n null === onLabelTemplateRendered || void 0 === onLabelTemplateRendered ? void 0 : onLabelTemplateRendered()\r\n }\r\n })\r\n }\r\n return $label.append($labelContainer.append($labelContent, _renderLabelMark(markOptions)))\r\n}\r\n\r\nfunction _renderLabelMark(markOptions) {\r\n var markText = getLabelMarkText(markOptions);\r\n if (\"\" === markText) {\r\n return null\r\n }\r\n return $(\"<span>\").addClass(markOptions.showRequiredMark ? FIELD_ITEM_REQUIRED_MARK_CLASS : FIELD_ITEM_OPTIONAL_MARK_CLASS).text(markText)\r\n}\r\nexport function setLabelWidthByMaxLabelWidth($targetContainer, labelsSelector, labelMarkOptions) {\r\n var FIELD_ITEM_LABEL_CONTENT_CLASS_Selector = \"\".concat(labelsSelector, \" > .\").concat(FIELD_ITEM_LABEL_CLASS, \":not(.\").concat(FIELD_ITEM_LABEL_LOCATION_CLASS, \"top) > .\").concat(FIELD_ITEM_LABEL_CONTENT_CLASS);\r\n var $FIELD_ITEM_LABEL_CONTENT_CLASS_Items = $targetContainer.find(FIELD_ITEM_LABEL_CONTENT_CLASS_Selector);\r\n var FIELD_ITEM_LABEL_CONTENT_CLASS_Length = $FIELD_ITEM_LABEL_CONTENT_CLASS_Items.length;\r\n var labelWidth;\r\n var i;\r\n var maxWidth = 0;\r\n for (i = 0; i < FIELD_ITEM_LABEL_CONTENT_CLASS_Length; i++) {\r\n labelWidth = getLabelWidthByHTML($FIELD_ITEM_LABEL_CONTENT_CLASS_Items[i]);\r\n if (labelWidth > maxWidth) {\r\n maxWidth = labelWidth\r\n }\r\n }\r\n for (i = 0; i < FIELD_ITEM_LABEL_CONTENT_CLASS_Length; i++) {\r\n $FIELD_ITEM_LABEL_CONTENT_CLASS_Items[i].style.width = maxWidth + \"px\"\r\n }\r\n}\r\n\r\nfunction getLabelWidthByHTML(labelContent) {\r\n var result = 0;\r\n var itemsCount = labelContent.children.length;\r\n for (var i = 0; i < itemsCount; i++) {\r\n var child = labelContent.children[i];\r\n result += child.offsetWidth\r\n }\r\n return result\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/components/field_item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../../events/click\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n captionize\r\n} from \"../../../core/utils/inflector\";\r\nimport {\r\n format\r\n} from \"../../../core/utils/string\";\r\nimport {\r\n isMaterial\r\n} from \"../../themes\";\r\nimport errors from \"../../widget/ui.errors\";\r\nimport Validator from \"../../validator\";\r\nimport {\r\n FIELD_ITEM_CONTENT_CLASS\r\n} from \"../constants\";\r\nexport var FLEX_LAYOUT_CLASS = \"dx-flex-layout\";\r\nexport var FIELD_ITEM_OPTIONAL_CLASS = \"dx-field-item-optional\";\r\nexport var FIELD_ITEM_REQUIRED_CLASS = \"dx-field-item-required\";\r\nexport var FIELD_ITEM_CONTENT_WRAPPER_CLASS = \"dx-field-item-content-wrapper\";\r\nexport var FIELD_ITEM_CONTENT_LOCATION_CLASS = \"dx-field-item-content-location-\";\r\nexport var FIELD_ITEM_LABEL_ALIGN_CLASS = \"dx-field-item-label-align\";\r\nexport var FIELD_ITEM_HELP_TEXT_CLASS = \"dx-field-item-help-text\";\r\nexport var LABEL_VERTICAL_ALIGNMENT_CLASS = \"dx-label-v-align\";\r\nexport var LABEL_HORIZONTAL_ALIGNMENT_CLASS = \"dx-label-h-align\";\r\nexport var TOGGLE_CONTROLS_PADDING_CLASS = \"dx-toggle-controls-paddings\";\r\nimport {\r\n renderLabel\r\n} from \"./label\";\r\nvar TEMPLATE_WRAPPER_CLASS = \"dx-template-wrapper\";\r\nvar VALIDATION_TARGET_CLASS = \"dx-validation-target\";\r\nvar INVALID_CLASS = \"dx-invalid\";\r\nexport function renderFieldItem(_ref) {\r\n var {\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList,\r\n formOrLayoutManager: formOrLayoutManager,\r\n createComponentCallback: createComponentCallback,\r\n labelOptions: labelOptions,\r\n labelNeedBaselineAlign: labelNeedBaselineAlign,\r\n labelLocation: labelLocation,\r\n needRenderLabel: needRenderLabel,\r\n formLabelLocation: formLabelLocation,\r\n item: item,\r\n editorOptions: editorOptions,\r\n isSimpleItem: isSimpleItem,\r\n isRequired: isRequired,\r\n template: template,\r\n helpID: helpID,\r\n labelID: labelID,\r\n name: name,\r\n helpText: helpText,\r\n requiredMessageTemplate: requiredMessageTemplate,\r\n validationGroup: validationGroup\r\n } = _ref;\r\n var $rootElement = $(\"<div>\").addClass(rootElementCssClassList.join(\" \")).appendTo($parent);\r\n $rootElement.addClass(isRequired ? FIELD_ITEM_REQUIRED_CLASS : FIELD_ITEM_OPTIONAL_CLASS);\r\n if (isSimpleItem) {\r\n $rootElement.addClass(FLEX_LAYOUT_CLASS)\r\n }\r\n if (isSimpleItem && labelNeedBaselineAlign) {\r\n $rootElement.addClass(FIELD_ITEM_LABEL_ALIGN_CLASS)\r\n }\r\n var $fieldEditorContainer = $(\"<div>\");\r\n $fieldEditorContainer.data(\"dx-form-item\", item);\r\n $fieldEditorContainer.addClass(FIELD_ITEM_CONTENT_CLASS).addClass(FIELD_ITEM_CONTENT_LOCATION_CLASS + {\r\n right: \"left\",\r\n left: \"right\",\r\n top: \"bottom\"\r\n } [formLabelLocation]);\r\n var $label = null;\r\n if (needRenderLabel) {\r\n if (labelOptions.labelTemplate) {\r\n labelOptions.labelTemplateData = getTemplateData(item, editorOptions, formOrLayoutManager)\r\n }\r\n $label = renderLabel(labelOptions)\r\n }\r\n if ($label) {\r\n var {\r\n editorType: editorType\r\n } = item;\r\n $rootElement.append($label);\r\n if (\"top\" === labelLocation || \"left\" === labelLocation) {\r\n $rootElement.append($fieldEditorContainer)\r\n }\r\n if (\"right\" === labelLocation) {\r\n $rootElement.prepend($fieldEditorContainer)\r\n }\r\n if (\"top\" === labelLocation) {\r\n $rootElement.addClass(LABEL_VERTICAL_ALIGNMENT_CLASS)\r\n } else {\r\n $rootElement.addClass(LABEL_HORIZONTAL_ALIGNMENT_CLASS)\r\n }\r\n if (\"dxCheckBox\" === editorType || \"dxSwitch\" === editorType) {\r\n eventsEngine.on($label, clickEventName, (function() {\r\n eventsEngine.trigger($fieldEditorContainer.children(), clickEventName)\r\n }))\r\n }\r\n var isToggleControls = [\"dxCheckBox\", \"dxSwitch\", \"dxRadioGroup\"].includes(editorType);\r\n var labelAlignment = labelOptions.alignment;\r\n var isLabelAlignmentLeft = \"left\" === labelAlignment || !labelAlignment;\r\n var hasNotTemplate = !template;\r\n var isLabelOnTop = \"top\" === labelLocation;\r\n if (hasNotTemplate && isToggleControls && isLabelOnTop && isLabelAlignmentLeft) {\r\n $fieldEditorContainer.addClass(TOGGLE_CONTROLS_PADDING_CLASS)\r\n }\r\n } else {\r\n $rootElement.append($fieldEditorContainer)\r\n }\r\n var widgetInstance;\r\n if (template) {\r\n template.render({\r\n container: getPublicElement($fieldEditorContainer),\r\n model: getTemplateData(item, editorOptions, formOrLayoutManager),\r\n onRendered() {\r\n var $validationTarget = getValidationTarget($fieldEditorContainer);\r\n var validationTargetInstance = tryGetValidationTargetInstance($validationTarget);\r\n subscribeWrapperInvalidClassToggle(validationTargetInstance)\r\n }\r\n })\r\n } else {\r\n var $div = $(\"<div>\").appendTo($fieldEditorContainer);\r\n try {\r\n widgetInstance = createComponentCallback($div, item.editorType, editorOptions);\r\n widgetInstance.setAria(\"describedby\", helpID);\r\n if (labelID) {\r\n widgetInstance.setAria(\"labelledby\", labelID)\r\n }\r\n widgetInstance.setAria(\"required\", isRequired)\r\n } catch (e) {\r\n errors.log(\"E1035\", e.message)\r\n }\r\n }\r\n var $validationTarget = getValidationTarget($fieldEditorContainer);\r\n var validationTargetInstance = $validationTarget && $validationTarget.data(VALIDATION_TARGET_CLASS);\r\n if (validationTargetInstance) {\r\n var isItemHaveCustomLabel = item.label && item.label.text;\r\n var itemName = isItemHaveCustomLabel ? null : name;\r\n var fieldName = isItemHaveCustomLabel ? item.label.text : itemName && captionize(itemName);\r\n var validationRules;\r\n if (isSimpleItem) {\r\n if (item.validationRules) {\r\n validationRules = item.validationRules\r\n } else {\r\n var requiredMessage = format(requiredMessageTemplate, fieldName || \"\");\r\n validationRules = item.isRequired ? [{\r\n type: \"required\",\r\n message: requiredMessage\r\n }] : null\r\n }\r\n }\r\n if (Array.isArray(validationRules) && validationRules.length) {\r\n createComponentCallback($validationTarget, Validator, {\r\n validationRules: validationRules,\r\n validationGroup: validationGroup,\r\n dataGetter: function() {\r\n return {\r\n formItem: item\r\n }\r\n }\r\n })\r\n }\r\n subscribeWrapperInvalidClassToggle(validationTargetInstance)\r\n }\r\n if (helpText && isSimpleItem) {\r\n var $editorParent = $fieldEditorContainer.parent();\r\n $editorParent.append($(\"<div>\").addClass(FIELD_ITEM_CONTENT_WRAPPER_CLASS).append($fieldEditorContainer).append($(\"<div>\").addClass(FIELD_ITEM_HELP_TEXT_CLASS).attr(\"id\", helpID).text(helpText)))\r\n }\r\n return {\r\n $fieldEditorContainer: $fieldEditorContainer,\r\n $rootElement: $rootElement,\r\n widgetInstance: widgetInstance\r\n }\r\n}\r\n\r\nfunction getValidationTarget($fieldEditorContainer) {\r\n var $editor = $fieldEditorContainer.children().first();\r\n return $editor.hasClass(TEMPLATE_WRAPPER_CLASS) ? $editor.children().first() : $editor\r\n}\r\n\r\nfunction tryGetValidationTargetInstance($validationTarget) {\r\n var _$validationTarget$pa, _$validationTarget$pa2;\r\n return (null === $validationTarget || void 0 === $validationTarget ? void 0 : $validationTarget.data(VALIDATION_TARGET_CLASS)) || (null === $validationTarget || void 0 === $validationTarget ? void 0 : null === (_$validationTarget$pa = $validationTarget.parent) || void 0 === _$validationTarget$pa ? void 0 : null === (_$validationTarget$pa2 = _$validationTarget$pa.call($validationTarget)) || void 0 === _$validationTarget$pa2 ? void 0 : _$validationTarget$pa2.data(VALIDATION_TARGET_CLASS))\r\n}\r\n\r\nfunction subscribeWrapperInvalidClassToggle(validationTargetInstance) {\r\n if (validationTargetInstance && isMaterial()) {\r\n var wrapperClass = \".\".concat(FIELD_ITEM_CONTENT_WRAPPER_CLASS);\r\n var toggleInvalidClass = _ref2 => {\r\n var {\r\n element: element,\r\n component: component\r\n } = _ref2;\r\n var {\r\n isValid: isValid,\r\n validationMessageMode: validationMessageMode\r\n } = component.option();\r\n $(element).parents(wrapperClass).toggleClass(INVALID_CLASS, false === isValid && (component._isFocused() || \"always\" === validationMessageMode))\r\n };\r\n validationTargetInstance.on(\"optionChanged\", e => {\r\n if (\"isValid\" !== e.name) {\r\n return\r\n }\r\n toggleInvalidClass(e)\r\n });\r\n validationTargetInstance.on(\"focusIn\", toggleInvalidClass).on(\"focusOut\", toggleInvalidClass).on(\"enterKey\", toggleInvalidClass)\r\n }\r\n}\r\n\r\nfunction getTemplateData(item, editorOptions, formOrLayoutManager) {\r\n return {\r\n dataField: item.dataField,\r\n editorType: item.editorType,\r\n editorOptions: editorOptions,\r\n component: formOrLayoutManager,\r\n name: item.name\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/components/button_item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nvar FIELD_BUTTON_ITEM_CLASS = \"dx-field-button-item\";\r\nexport function renderButtonItem(_ref) {\r\n var {\r\n item: item,\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList,\r\n validationGroup: validationGroup,\r\n createComponentCallback: createComponentCallback\r\n } = _ref;\r\n var $rootElement = $(\"<div>\").appendTo($parent).addClass(rootElementCssClassList.join(\" \")).addClass(FIELD_BUTTON_ITEM_CLASS).css(\"textAlign\", convertAlignmentToTextAlign(item.horizontalAlignment));\r\n $parent.css(\"justifyContent\", convertAlignmentToJustifyContent(item.verticalAlignment));\r\n var $button = $(\"<div>\").appendTo($rootElement);\r\n return {\r\n $rootElement: $rootElement,\r\n buttonInstance: createComponentCallback($button, \"dxButton\", extend({\r\n validationGroup: validationGroup\r\n }, item.buttonOptions))\r\n }\r\n}\r\n\r\nfunction convertAlignmentToTextAlign(horizontalAlignment) {\r\n return isDefined(horizontalAlignment) ? horizontalAlignment : \"right\"\r\n}\r\n\r\nfunction convertAlignmentToJustifyContent(verticalAlignment) {\r\n switch (verticalAlignment) {\r\n case \"center\":\r\n return \"center\";\r\n case \"bottom\":\r\n return \"flex-end\";\r\n default:\r\n return \"flex-start\"\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/components/empty_item.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nexport var FIELD_EMPTY_ITEM_CLASS = \"dx-field-empty-item\";\r\nexport function renderEmptyItem(_ref) {\r\n var {\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList\r\n } = _ref;\r\n return $(\"<div>\").addClass(FIELD_EMPTY_ITEM_CLASS).html(\" \").addClass(rootElementCssClassList.join(\" \")).appendTo($parent)\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.layout_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getWidth\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport {\r\n default as FormItemsRunTimeInfo\r\n} from \"./ui.form.items_runtime_info\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n isDefined,\r\n isEmptyObject,\r\n isFunction,\r\n isObject,\r\n type\r\n} from \"../../core/utils/type\";\r\nimport variableWrapper from \"../../core/utils/variable_wrapper\";\r\nimport {\r\n getCurrentScreenFactor,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n normalizeIndexes\r\n} from \"../../core/utils/array\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport {\r\n removeEvent\r\n} from \"../../events/remove\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport ResponsiveBox from \"../responsive_box\";\r\nimport {\r\n LAYOUT_MANAGER_ONE_COLUMN,\r\n FORM_LAYOUT_MANAGER_CLASS,\r\n SINGLE_COLUMN_ITEM_CONTENT,\r\n ROOT_SIMPLE_ITEM_CLASS,\r\n SIMPLE_ITEM_TYPE,\r\n FIELD_ITEM_CLASS\r\n} from \"./constants\";\r\nimport \"../text_box\";\r\nimport \"../number_box\";\r\nimport \"../check_box\";\r\nimport \"../date_box\";\r\nimport \"../button\";\r\nimport {\r\n renderFieldItem\r\n} from \"./components/field_item\";\r\nimport {\r\n renderButtonItem\r\n} from \"./components/button_item\";\r\nimport {\r\n renderEmptyItem\r\n} from \"./components/empty_item\";\r\nimport {\r\n convertToRenderFieldItemOptions\r\n} from \"./ui.form.layout_manager.utils\";\r\nvar FORM_EDITOR_BY_DEFAULT = \"dxTextBox\";\r\nvar LAYOUT_MANAGER_FIRST_ROW_CLASS = \"dx-first-row\";\r\nvar LAYOUT_MANAGER_LAST_ROW_CLASS = \"dx-last-row\";\r\nvar LAYOUT_MANAGER_FIRST_COL_CLASS = \"dx-first-col\";\r\nvar LAYOUT_MANAGER_LAST_COL_CLASS = \"dx-last-col\";\r\nvar LayoutManager = Widget.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n layoutData: {},\r\n readOnly: false,\r\n colCount: 1,\r\n colCountByScreen: void 0,\r\n labelLocation: \"left\",\r\n onFieldDataChanged: null,\r\n onEditorEnterKey: null,\r\n customizeItem: null,\r\n alignItemLabels: true,\r\n minColWidth: 200,\r\n showRequiredMark: true,\r\n screenByWidth: null,\r\n showOptionalMark: false,\r\n requiredMark: \"*\",\r\n labelMode: \"outside\",\r\n optionalMark: messageLocalization.format(\"dxForm-optionalMark\"),\r\n requiredMessage: messageLocalization.getFormatter(\"dxForm-requiredMessage\")\r\n })\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n layoutData: true,\r\n validationGroup: true\r\n })\r\n },\r\n _init: function() {\r\n var layoutData = this.option(\"layoutData\");\r\n this.callBase();\r\n this._itemWatchers = [];\r\n this._itemsRunTimeInfo = new FormItemsRunTimeInfo;\r\n this._updateReferencedOptions(layoutData);\r\n this._initDataAndItems(layoutData)\r\n },\r\n _dispose: function() {\r\n this.callBase();\r\n this._cleanItemWatchers()\r\n },\r\n _initDataAndItems: function(initialData) {\r\n this._syncDataWithItems();\r\n this._updateItems(initialData)\r\n },\r\n _syncDataWithItems: function() {\r\n var layoutData = this.option(\"layoutData\");\r\n var userItems = this.option(\"items\");\r\n if (isDefined(userItems)) {\r\n userItems.forEach(item => {\r\n if (item.dataField && void 0 === this._getDataByField(item.dataField)) {\r\n var value;\r\n if (item.editorOptions) {\r\n value = item.editorOptions.value\r\n }\r\n if (isDefined(value) || item.dataField in layoutData) {\r\n this._updateFieldValue(item.dataField, value)\r\n }\r\n }\r\n })\r\n }\r\n },\r\n _getDataByField: function(dataField) {\r\n return dataField ? this.option(\"layoutData.\" + dataField) : null\r\n },\r\n _isCheckboxUndefinedStateEnabled: function(_ref) {\r\n var {\r\n allowIndeterminateState: allowIndeterminateState,\r\n editorType: editorType,\r\n dataField: dataField\r\n } = _ref;\r\n if (true === allowIndeterminateState && \"dxCheckBox\" === editorType) {\r\n var nameParts = [\"layoutData\", ...dataField.split(\".\")];\r\n var propertyName = nameParts.pop();\r\n var layoutData = this.option(nameParts.join(\".\"));\r\n return layoutData && propertyName in layoutData\r\n }\r\n return false\r\n },\r\n _updateFieldValue: function(dataField, value) {\r\n var layoutData = this.option(\"layoutData\");\r\n var newValue = value;\r\n if (!variableWrapper.isWrapped(layoutData[dataField]) && isDefined(dataField)) {\r\n this.option(\"layoutData.\" + dataField, newValue)\r\n } else if (variableWrapper.isWritableWrapped(layoutData[dataField])) {\r\n newValue = isFunction(newValue) ? newValue() : newValue;\r\n layoutData[dataField](newValue)\r\n }\r\n this._triggerOnFieldDataChanged({\r\n dataField: dataField,\r\n value: newValue\r\n })\r\n },\r\n _triggerOnFieldDataChanged: function(args) {\r\n this._createActionByOption(\"onFieldDataChanged\")(args)\r\n },\r\n _updateItems: function(layoutData) {\r\n var that = this;\r\n var userItems = this.option(\"items\");\r\n var isUserItemsExist = isDefined(userItems);\r\n var customizeItem = that.option(\"customizeItem\");\r\n var items = isUserItemsExist ? userItems : this._generateItemsByData(layoutData);\r\n if (isDefined(items)) {\r\n var processedItems = [];\r\n each(items, (function(index, item) {\r\n if (that._isAcceptableItem(item)) {\r\n item = that._processItem(item);\r\n customizeItem && customizeItem(item);\r\n if (isObject(item) && false !== variableWrapper.unwrap(item.visible)) {\r\n processedItems.push(item)\r\n }\r\n }\r\n }));\r\n if (!that._itemWatchers.length || !isUserItemsExist) {\r\n that._updateItemWatchers(items)\r\n }\r\n this._setItems(processedItems);\r\n this._sortItems()\r\n }\r\n },\r\n _cleanItemWatchers: function() {\r\n this._itemWatchers.forEach((function(dispose) {\r\n dispose()\r\n }));\r\n this._itemWatchers = []\r\n },\r\n _updateItemWatchers: function(items) {\r\n var that = this;\r\n var watch = that._getWatch();\r\n items.forEach((function(item) {\r\n if (isObject(item) && isDefined(item.visible) && isFunction(watch)) {\r\n that._itemWatchers.push(watch((function() {\r\n return variableWrapper.unwrap(item.visible)\r\n }), (function() {\r\n that._updateItems(that.option(\"layoutData\"));\r\n that.repaint()\r\n }), {\r\n skipImmediate: true\r\n }))\r\n }\r\n }))\r\n },\r\n _generateItemsByData: function(layoutData) {\r\n var result = [];\r\n if (isDefined(layoutData)) {\r\n each(layoutData, (function(dataField) {\r\n result.push({\r\n dataField: dataField\r\n })\r\n }))\r\n }\r\n return result\r\n },\r\n _isAcceptableItem: function(item) {\r\n var itemField = item.dataField || item;\r\n var itemData = this._getDataByField(itemField);\r\n return !(isFunction(itemData) && !variableWrapper.isWrapped(itemData))\r\n },\r\n _processItem: function(item) {\r\n if (\"string\" === typeof item) {\r\n item = {\r\n dataField: item\r\n }\r\n }\r\n if (\"object\" === typeof item && !item.itemType) {\r\n item.itemType = SIMPLE_ITEM_TYPE\r\n }\r\n if (!isDefined(item.editorType) && isDefined(item.dataField)) {\r\n var value = this._getDataByField(item.dataField);\r\n item.editorType = isDefined(value) ? this._getEditorTypeByDataType(type(value)) : FORM_EDITOR_BY_DEFAULT\r\n }\r\n if (\"dxCheckBox\" === item.editorType) {\r\n var _item$allowIndetermin;\r\n item.allowIndeterminateState = null !== (_item$allowIndetermin = item.allowIndeterminateState) && void 0 !== _item$allowIndetermin ? _item$allowIndetermin : true\r\n }\r\n return item\r\n },\r\n _getEditorTypeByDataType: function(dataType) {\r\n switch (dataType) {\r\n case \"number\":\r\n return \"dxNumberBox\";\r\n case \"date\":\r\n return \"dxDateBox\";\r\n case \"boolean\":\r\n return \"dxCheckBox\";\r\n default:\r\n return \"dxTextBox\"\r\n }\r\n },\r\n _sortItems: function() {\r\n normalizeIndexes(this._items, \"visibleIndex\");\r\n this._sortIndexes()\r\n },\r\n _sortIndexes: function() {\r\n this._items.sort((function(itemA, itemB) {\r\n var indexA = itemA.visibleIndex;\r\n var indexB = itemB.visibleIndex;\r\n var result;\r\n if (indexA > indexB) {\r\n result = 1\r\n } else if (indexA < indexB) {\r\n result = -1\r\n } else {\r\n result = 0\r\n }\r\n return result\r\n }))\r\n },\r\n _initMarkup: function() {\r\n this._itemsRunTimeInfo.clear();\r\n this.$element().addClass(FORM_LAYOUT_MANAGER_CLASS);\r\n this.callBase();\r\n this._renderResponsiveBox()\r\n },\r\n _renderResponsiveBox: function() {\r\n var templatesInfo = [];\r\n if (this._items && this._items.length) {\r\n var colCount = this._getColCount();\r\n var $container = $(\"<div>\").appendTo(this.$element());\r\n this._prepareItemsWithMerging(colCount);\r\n var layoutItems = this._generateLayoutItems();\r\n this._responsiveBox = this._createComponent($container, ResponsiveBox, this._getResponsiveBoxConfig(layoutItems, colCount, templatesInfo));\r\n if (!hasWindow()) {\r\n this._renderTemplates(templatesInfo)\r\n }\r\n }\r\n },\r\n _itemStateChangedHandler: function(e) {\r\n this._refresh()\r\n },\r\n _renderTemplates: function(templatesInfo) {\r\n var that = this;\r\n var itemsWithLabelTemplateCount = 0;\r\n templatesInfo.forEach(_ref2 => {\r\n var _item$label;\r\n var {\r\n item: item\r\n } = _ref2;\r\n if (null !== item && void 0 !== item && null !== (_item$label = item.label) && void 0 !== _item$label && _item$label.template) {\r\n itemsWithLabelTemplateCount++\r\n }\r\n });\r\n each(templatesInfo, (function(index, info) {\r\n switch (info.itemType) {\r\n case \"empty\":\r\n renderEmptyItem(info);\r\n break;\r\n case \"button\":\r\n that._renderButtonItem(info);\r\n break;\r\n default:\r\n that._renderFieldItem(info, itemsWithLabelTemplateCount)\r\n }\r\n }))\r\n },\r\n _getResponsiveBoxConfig: function(layoutItems, colCount, templatesInfo) {\r\n var that = this;\r\n var colCountByScreen = that.option(\"colCountByScreen\");\r\n var xsColCount = colCountByScreen && colCountByScreen.xs;\r\n return {\r\n onItemStateChanged: this._itemStateChangedHandler.bind(this),\r\n onLayoutChanged: function() {\r\n var onLayoutChanged = that.option(\"onLayoutChanged\");\r\n var isSingleColumnMode = that.isSingleColumnMode();\r\n if (onLayoutChanged) {\r\n that.$element().toggleClass(LAYOUT_MANAGER_ONE_COLUMN, isSingleColumnMode);\r\n onLayoutChanged(isSingleColumnMode)\r\n }\r\n },\r\n onContentReady: function(e) {\r\n if (hasWindow()) {\r\n that._renderTemplates(templatesInfo)\r\n }\r\n if (that.option(\"onLayoutChanged\")) {\r\n that.$element().toggleClass(LAYOUT_MANAGER_ONE_COLUMN, that.isSingleColumnMode(e.component))\r\n }\r\n },\r\n itemTemplate: function(e, itemData, itemElement) {\r\n if (!e.location) {\r\n return\r\n }\r\n var $itemElement = $(itemElement);\r\n var itemRenderedCountInPreviousRows = e.location.row * colCount;\r\n var item = that._items[e.location.col + itemRenderedCountInPreviousRows];\r\n if (!item) {\r\n return\r\n }\r\n var itemCssClassList = [item.cssClass];\r\n $itemElement.toggleClass(SINGLE_COLUMN_ITEM_CONTENT, that.isSingleColumnMode(this));\r\n if (0 === e.location.row) {\r\n itemCssClassList.push(LAYOUT_MANAGER_FIRST_ROW_CLASS)\r\n }\r\n if (0 === e.location.col) {\r\n itemCssClassList.push(LAYOUT_MANAGER_FIRST_COL_CLASS)\r\n }\r\n if (item.itemType === SIMPLE_ITEM_TYPE && that.option(\"isRoot\")) {\r\n $itemElement.addClass(ROOT_SIMPLE_ITEM_CLASS)\r\n }\r\n var isLastColumn = e.location.col === colCount - 1 || e.location.col + e.location.colspan === colCount;\r\n var rowsCount = that._getRowsCount();\r\n var isLastRow = e.location.row === rowsCount - 1;\r\n if (isLastColumn) {\r\n itemCssClassList.push(LAYOUT_MANAGER_LAST_COL_CLASS)\r\n }\r\n if (isLastRow) {\r\n itemCssClassList.push(LAYOUT_MANAGER_LAST_ROW_CLASS)\r\n }\r\n if (\"empty\" !== item.itemType) {\r\n itemCssClassList.push(FIELD_ITEM_CLASS);\r\n itemCssClassList.push(that.option(\"cssItemClass\"));\r\n if (isDefined(item.col)) {\r\n itemCssClassList.push(\"dx-col-\" + item.col)\r\n }\r\n }\r\n templatesInfo.push({\r\n itemType: item.itemType,\r\n item: item,\r\n $parent: $itemElement,\r\n rootElementCssClassList: itemCssClassList\r\n })\r\n },\r\n cols: that._generateRatio(colCount),\r\n rows: that._generateRatio(that._getRowsCount(), true),\r\n dataSource: layoutItems,\r\n screenByWidth: that.option(\"screenByWidth\"),\r\n singleColumnScreen: xsColCount ? false : \"xs\"\r\n }\r\n },\r\n _getColCount: function() {\r\n var colCount = this.option(\"colCount\");\r\n var colCountByScreen = this.option(\"colCountByScreen\");\r\n if (colCountByScreen) {\r\n var screenFactor = this.option(\"form\").getTargetScreenFactor();\r\n if (!screenFactor) {\r\n screenFactor = hasWindow() ? getCurrentScreenFactor(this.option(\"screenByWidth\")) : \"lg\"\r\n }\r\n colCount = colCountByScreen[screenFactor] || colCount\r\n }\r\n if (\"auto\" === colCount) {\r\n if (this._cashedColCount) {\r\n return this._cashedColCount\r\n }\r\n this._cashedColCount = colCount = this._getMaxColCount()\r\n }\r\n return colCount < 1 ? 1 : colCount\r\n },\r\n _getMaxColCount: function() {\r\n if (!hasWindow()) {\r\n return 1\r\n }\r\n var minColWidth = this.option(\"minColWidth\");\r\n var width = getWidth(this.$element());\r\n var itemsCount = this._items.length;\r\n var maxColCount = Math.floor(width / minColWidth) || 1;\r\n return itemsCount < maxColCount ? itemsCount : maxColCount\r\n },\r\n isCachedColCountObsolete: function() {\r\n return this._cashedColCount && this._getMaxColCount() !== this._cashedColCount\r\n },\r\n _prepareItemsWithMerging: function(colCount) {\r\n var items = this._items.slice(0);\r\n var item;\r\n var itemsMergedByCol;\r\n var result = [];\r\n var j;\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n item = items[i];\r\n result.push(item);\r\n if (this.option(\"alignItemLabels\") || item.alignItemLabels || item.colSpan) {\r\n item.col = this._getColByIndex(result.length - 1, colCount)\r\n }\r\n if (item.colSpan > 1 && item.col + item.colSpan <= colCount) {\r\n itemsMergedByCol = [];\r\n for (j = 0; j < item.colSpan - 1; j++) {\r\n itemsMergedByCol.push({\r\n merged: true\r\n })\r\n }\r\n result = result.concat(itemsMergedByCol)\r\n } else {\r\n delete item.colSpan\r\n }\r\n }\r\n this._setItems(result)\r\n },\r\n _getColByIndex: function(index, colCount) {\r\n return index % colCount\r\n },\r\n _setItems: function(items) {\r\n this._items = items;\r\n this._cashedColCount = null\r\n },\r\n _generateLayoutItems: function() {\r\n var items = this._items;\r\n var colCount = this._getColCount();\r\n var result = [];\r\n var item;\r\n var i;\r\n for (i = 0; i < items.length; i++) {\r\n item = items[i];\r\n if (!item.merged) {\r\n var generatedItem = {\r\n location: {\r\n row: parseInt(i / colCount),\r\n col: this._getColByIndex(i, colCount)\r\n }\r\n };\r\n if (isDefined(item.disabled)) {\r\n generatedItem.disabled = item.disabled\r\n }\r\n if (isDefined(item.visible)) {\r\n generatedItem.visible = item.visible\r\n }\r\n if (isDefined(item.colSpan)) {\r\n generatedItem.location.colspan = item.colSpan\r\n }\r\n if (isDefined(item.rowSpan)) {\r\n generatedItem.location.rowspan = item.rowSpan\r\n }\r\n result.push(generatedItem)\r\n }\r\n }\r\n return result\r\n },\r\n _renderEmptyItem: function($container) {\r\n renderEmptyItem({\r\n $container: $container\r\n })\r\n },\r\n _renderButtonItem: function(_ref3) {\r\n var {\r\n item: item,\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList\r\n } = _ref3;\r\n var {\r\n $rootElement: $rootElement,\r\n buttonInstance: buttonInstance\r\n } = renderButtonItem({\r\n item: item,\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList,\r\n validationGroup: this.option(\"validationGroup\"),\r\n createComponentCallback: this._createComponent.bind(this)\r\n });\r\n this._itemsRunTimeInfo.add({\r\n item: item,\r\n widgetInstance: buttonInstance,\r\n guid: item.guid,\r\n $itemContainer: $rootElement\r\n })\r\n },\r\n _renderFieldItem: function(_ref4, itemsWithLabelTemplateCount) {\r\n var _item$label2, _this$option;\r\n var {\r\n item: item,\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList\r\n } = _ref4;\r\n var editorValue = this._getDataByField(item.dataField);\r\n var canAssignUndefinedValueToEditor = false;\r\n if (void 0 === editorValue) {\r\n var {\r\n allowIndeterminateState: allowIndeterminateState,\r\n editorType: editorType,\r\n dataField: dataField\r\n } = item;\r\n canAssignUndefinedValueToEditor = this._isCheckboxUndefinedStateEnabled({\r\n allowIndeterminateState: allowIndeterminateState,\r\n editorType: editorType,\r\n dataField: dataField\r\n })\r\n }\r\n var name = item.dataField || item.name;\r\n var formOrLayoutManager = this._getFormOrThis();\r\n var {\r\n $fieldEditorContainer: $fieldEditorContainer,\r\n widgetInstance: widgetInstance,\r\n $rootElement: $rootElement\r\n } = renderFieldItem(convertToRenderFieldItemOptions({\r\n $parent: $parent,\r\n rootElementCssClassList: rootElementCssClassList,\r\n item: item,\r\n name: name,\r\n editorValue: editorValue,\r\n canAssignUndefinedValueToEditor: canAssignUndefinedValueToEditor,\r\n formOrLayoutManager: this._getFormOrThis(),\r\n createComponentCallback: this._createComponent.bind(this),\r\n formLabelLocation: this.option(\"labelLocation\"),\r\n requiredMessageTemplate: this.option(\"requiredMessage\"),\r\n validationGroup: this.option(\"validationGroup\"),\r\n editorValidationBoundary: this.option(\"validationBoundary\"),\r\n editorStylingMode: this.option(\"form\") && this.option(\"form\").option(\"stylingMode\"),\r\n showColonAfterLabel: this.option(\"showColonAfterLabel\"),\r\n managerLabelLocation: this.option(\"labelLocation\"),\r\n template: item.template ? this._getTemplate(item.template) : null,\r\n labelTemplate: null !== (_item$label2 = item.label) && void 0 !== _item$label2 && _item$label2.template ? this._getTemplate(item.label.template) : null,\r\n itemId: this.option(\"form\") && this.option(\"form\").getItemID(name),\r\n managerMarkOptions: this._getMarkOptions(),\r\n labelMode: this.option(\"labelMode\"),\r\n onLabelTemplateRendered: () => {\r\n this._incTemplateRenderedCallCount();\r\n if (this._shouldAlignLabelsOnTemplateRendered(formOrLayoutManager, itemsWithLabelTemplateCount)) {\r\n formOrLayoutManager._alignLabels(this, this.isSingleColumnMode(formOrLayoutManager))\r\n }\r\n }\r\n }));\r\n null === (_this$option = this.option(\"onFieldItemRendered\")) || void 0 === _this$option ? void 0 : _this$option();\r\n if (widgetInstance && item.dataField) {\r\n this._bindDataField(widgetInstance, item.dataField, item.editorType, $fieldEditorContainer)\r\n }\r\n this._itemsRunTimeInfo.add({\r\n item: item,\r\n widgetInstance: widgetInstance,\r\n guid: item.guid,\r\n $itemContainer: $rootElement\r\n })\r\n },\r\n _incTemplateRenderedCallCount() {\r\n var _this$_labelTemplateR;\r\n this._labelTemplateRenderedCallCount = (null !== (_this$_labelTemplateR = this._labelTemplateRenderedCallCount) && void 0 !== _this$_labelTemplateR ? _this$_labelTemplateR : 0) + 1\r\n },\r\n _shouldAlignLabelsOnTemplateRendered(formOrLayoutManager, totalItemsWithLabelTemplate) {\r\n return formOrLayoutManager.option(\"templatesRenderAsynchronously\") && this._labelTemplateRenderedCallCount === totalItemsWithLabelTemplate\r\n },\r\n _getMarkOptions: function() {\r\n return {\r\n showRequiredMark: this.option(\"showRequiredMark\"),\r\n requiredMark: this.option(\"requiredMark\"),\r\n showOptionalMark: this.option(\"showOptionalMark\"),\r\n optionalMark: this.option(\"optionalMark\")\r\n }\r\n },\r\n _getFormOrThis: function() {\r\n return this.option(\"form\") || this\r\n },\r\n _bindDataField: function(editorInstance, dataField, editorType, $container) {\r\n var formOrThis = this._getFormOrThis();\r\n editorInstance.on(\"enterKey\", (function(args) {\r\n formOrThis._createActionByOption(\"onEditorEnterKey\")(extend(args, {\r\n dataField: dataField\r\n }))\r\n }));\r\n this._createWatcher(editorInstance, $container, dataField);\r\n this.linkEditorToDataField(editorInstance, dataField, editorType)\r\n },\r\n _createWatcher: function(editorInstance, $container, dataField) {\r\n var that = this;\r\n var watch = that._getWatch();\r\n if (!isFunction(watch)) {\r\n return\r\n }\r\n var dispose = watch((function() {\r\n return that._getDataByField(dataField)\r\n }), (function() {\r\n var fieldValue = that._getDataByField(dataField);\r\n if (\"dxTagBox\" === editorInstance.NAME) {\r\n var editorValue = editorInstance.option(\"value\");\r\n if (fieldValue !== editorValue && function(array1, array2) {\r\n if (!Array.isArray(array1) || !Array.isArray(array2) || array1.length !== array2.length) {\r\n return false\r\n }\r\n for (var i = 0; i < array1.length; i++) {\r\n if (array1[i] !== array2[i]) {\r\n return false\r\n }\r\n }\r\n return true\r\n }(fieldValue, editorValue)) {\r\n return\r\n }\r\n }\r\n editorInstance.option(\"value\", fieldValue)\r\n }), {\r\n deep: true,\r\n skipImmediate: true\r\n });\r\n eventsEngine.on($container, removeEvent, dispose)\r\n },\r\n _getWatch: function() {\r\n if (!isDefined(this._watch)) {\r\n var formInstance = this.option(\"form\");\r\n this._watch = formInstance && formInstance.option(\"integrationOptions.watchMethod\")\r\n }\r\n return this._watch\r\n },\r\n _createComponent: function($editor, type, editorOptions) {\r\n var readOnlyState = this.option(\"readOnly\");\r\n var hasEditorReadOnly = Object.hasOwn(editorOptions, \"readOnly\");\r\n var instance = this.callBase($editor, type, _extends({}, editorOptions, {\r\n readOnly: !hasEditorReadOnly ? readOnlyState : editorOptions.readOnly\r\n }));\r\n var isChangeByForm = false;\r\n instance.on(\"optionChanged\", args => {\r\n if (\"readOnly\" === args.name && !isChangeByForm) {\r\n hasEditorReadOnly = true\r\n }\r\n });\r\n this.on(\"optionChanged\", (function(args) {\r\n if (\"readOnly\" === args.name && !hasEditorReadOnly) {\r\n isChangeByForm = true;\r\n instance.option(args.name, args.value);\r\n isChangeByForm = false\r\n }\r\n }));\r\n return instance\r\n },\r\n _generateRatio: function(count, isAutoSize) {\r\n var result = [];\r\n var ratio;\r\n var i;\r\n for (i = 0; i < count; i++) {\r\n ratio = {\r\n ratio: 1\r\n };\r\n if (isAutoSize) {\r\n ratio.baseSize = \"auto\"\r\n }\r\n result.push(ratio)\r\n }\r\n return result\r\n },\r\n _getRowsCount: function() {\r\n return Math.ceil(this._items.length / this._getColCount())\r\n },\r\n _updateReferencedOptions: function(newLayoutData) {\r\n var layoutData = this.option(\"layoutData\");\r\n if (isObject(layoutData)) {\r\n Object.getOwnPropertyNames(layoutData).forEach(property => delete this._optionsByReference[\"layoutData.\" + property])\r\n }\r\n if (isObject(newLayoutData)) {\r\n Object.getOwnPropertyNames(newLayoutData).forEach(property => this._optionsByReference[\"layoutData.\" + property] = true)\r\n }\r\n },\r\n _resetWidget(instance) {\r\n this._disableEditorValueChangedHandler = true;\r\n instance.reset();\r\n this._disableEditorValueChangedHandler = false;\r\n instance.option(\"isValid\", true)\r\n },\r\n _optionChanged(args) {\r\n if (0 === args.fullName.search(\"layoutData.\")) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"showRequiredMark\":\r\n case \"showOptionalMark\":\r\n case \"requiredMark\":\r\n case \"optionalMark\":\r\n this._cashedRequiredConfig = null;\r\n this._invalidate();\r\n break;\r\n case \"layoutData\":\r\n this._updateReferencedOptions(args.value);\r\n if (this.option(\"items\")) {\r\n if (!isEmptyObject(args.value)) {\r\n this._itemsRunTimeInfo.each((_, itemRunTimeInfo) => {\r\n if (isDefined(itemRunTimeInfo.item)) {\r\n var dataField = itemRunTimeInfo.item.dataField;\r\n if (dataField && isDefined(itemRunTimeInfo.widgetInstance)) {\r\n var valueGetter = compileGetter(dataField);\r\n var dataValue = valueGetter(args.value);\r\n var {\r\n allowIndeterminateState: allowIndeterminateState,\r\n editorType: editorType\r\n } = itemRunTimeInfo.item;\r\n if (void 0 !== dataValue || this._isCheckboxUndefinedStateEnabled({\r\n allowIndeterminateState: allowIndeterminateState,\r\n editorType: editorType,\r\n dataField: dataField\r\n })) {\r\n itemRunTimeInfo.widgetInstance.option(\"value\", dataValue)\r\n } else {\r\n this._resetWidget(itemRunTimeInfo.widgetInstance)\r\n }\r\n }\r\n }\r\n })\r\n }\r\n } else {\r\n this._initDataAndItems(args.value);\r\n this._invalidate()\r\n }\r\n break;\r\n case \"items\":\r\n this._cleanItemWatchers();\r\n this._initDataAndItems(args.value);\r\n this._invalidate();\r\n break;\r\n case \"alignItemLabels\":\r\n case \"labelLocation\":\r\n case \"labelMode\":\r\n case \"requiredMessage\":\r\n this._invalidate();\r\n break;\r\n case \"customizeItem\":\r\n this._updateItems(this.option(\"layoutData\"));\r\n this._invalidate();\r\n break;\r\n case \"colCount\":\r\n case \"colCountByScreen\":\r\n this._resetColCount();\r\n break;\r\n case \"minColWidth\":\r\n if (\"auto\" === this.option(\"colCount\")) {\r\n this._resetColCount()\r\n }\r\n break;\r\n case \"readOnly\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n if (\"auto\" === this.option(\"colCount\")) {\r\n this._resetColCount()\r\n }\r\n break;\r\n case \"onFieldDataChanged\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _resetColCount: function() {\r\n this._cashedColCount = null;\r\n this._invalidate()\r\n },\r\n linkEditorToDataField(editorInstance, dataField) {\r\n this.on(\"optionChanged\", args => {\r\n if (args.fullName === \"layoutData.\".concat(dataField)) {\r\n editorInstance._setOptionWithoutOptionChange(\"value\", args.value)\r\n }\r\n });\r\n editorInstance.on(\"valueChanged\", args => {\r\n var isValueReferenceType = isObject(args.value) || Array.isArray(args.value);\r\n if (!this._disableEditorValueChangedHandler && !(isValueReferenceType && args.value === args.previousValue)) {\r\n this._updateFieldValue(dataField, args.value)\r\n }\r\n })\r\n },\r\n _dimensionChanged: function() {\r\n if (\"auto\" === this.option(\"colCount\") && this.isCachedColCountObsolete()) {\r\n this._eventsStrategy.fireEvent(\"autoColCountChanged\")\r\n }\r\n },\r\n updateData: function(data, value) {\r\n var that = this;\r\n if (isObject(data)) {\r\n each(data, (function(dataField, fieldValue) {\r\n that._updateFieldValue(dataField, fieldValue)\r\n }))\r\n } else if (\"string\" === typeof data) {\r\n that._updateFieldValue(data, value)\r\n }\r\n },\r\n getEditor: function(field) {\r\n return this._itemsRunTimeInfo.findWidgetInstanceByDataField(field) || this._itemsRunTimeInfo.findWidgetInstanceByName(field)\r\n },\r\n isSingleColumnMode: function(component) {\r\n var responsiveBox = this._responsiveBox || component;\r\n if (responsiveBox) {\r\n return responsiveBox.option(\"currentScreenFactor\") === responsiveBox.option(\"singleColumnScreen\")\r\n }\r\n },\r\n getItemsRunTimeInfo: function() {\r\n return this._itemsRunTimeInfo\r\n }\r\n});\r\nregisterComponent(\"dxLayoutManager\", LayoutManager);\r\nexport default LayoutManager;\r\n","/**\r\n * DevExtreme (esm/ui/validation_summary.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n grep\r\n} from \"../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each,\r\n map\r\n} from \"../core/utils/iterator\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport CollectionWidget from \"./collection/ui.collection_widget.edit\";\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nvar ITEM_CLASS = VALIDATION_SUMMARY_CLASS + \"-item\";\r\nvar ITEM_DATA_KEY = VALIDATION_SUMMARY_CLASS + \"-item-data\";\r\nvar ValidationSummary = CollectionWidget.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n focusStateEnabled: false,\r\n noDataText: null\r\n })\r\n },\r\n _setOptionsByReference() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n validationGroup: true\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._initGroupRegistration()\r\n },\r\n _initGroupRegistration() {\r\n var $element = this.$element();\r\n var group = this.option(\"validationGroup\") || ValidationEngine.findGroup($element, this._modelByElement($element));\r\n var groupConfig = ValidationEngine.addGroup(group);\r\n this._unsubscribeGroup();\r\n this._groupWasInit = true;\r\n this._validationGroup = group;\r\n this.groupSubscription = this._groupValidationHandler.bind(this);\r\n groupConfig.on(\"validated\", this.groupSubscription)\r\n },\r\n _unsubscribeGroup() {\r\n var groupConfig = ValidationEngine.getGroupConfig(this._validationGroup);\r\n groupConfig && groupConfig.off(\"validated\", this.groupSubscription)\r\n },\r\n _getOrderedItems(validators, items) {\r\n var orderedItems = [];\r\n each(validators, (function(_, validator) {\r\n var foundItems = grep(items, (function(item) {\r\n if (item.validator === validator) {\r\n return true\r\n }\r\n }));\r\n if (foundItems.length) {\r\n orderedItems = orderedItems.concat(foundItems)\r\n }\r\n }));\r\n return orderedItems\r\n },\r\n _groupValidationHandler(params) {\r\n var items = this._getOrderedItems(params.validators, map(params.brokenRules, (function(rule) {\r\n return {\r\n text: rule.message,\r\n validator: rule.validator,\r\n index: rule.index\r\n }\r\n })));\r\n this.validators = params.validators;\r\n each(this.validators, (_, validator) => {\r\n if (validator._validationSummary !== this) {\r\n var handler = this._itemValidationHandler.bind(this);\r\n validator.on(\"validated\", handler);\r\n validator.on(\"disposing\", (function() {\r\n validator.off(\"validated\", handler);\r\n validator._validationSummary = null;\r\n handler = null\r\n }));\r\n validator._validationSummary = this\r\n }\r\n });\r\n this.option(\"items\", items)\r\n },\r\n _itemValidationHandler(_ref) {\r\n var {\r\n isValid: isValid,\r\n validator: validator,\r\n brokenRules: brokenRules\r\n } = _ref;\r\n var items = this.option(\"items\");\r\n var itemsChanged = false;\r\n var itemIndex = 0;\r\n var _loop = function() {\r\n var item = items[itemIndex];\r\n if (item.validator === validator) {\r\n var foundRule = grep(brokenRules || [], (function(rule) {\r\n return rule.index === item.index\r\n }))[0];\r\n if (isValid || !foundRule) {\r\n items.splice(itemIndex, 1);\r\n itemsChanged = true;\r\n return \"continue\"\r\n }\r\n if (foundRule.message !== item.text) {\r\n item.text = foundRule.message;\r\n itemsChanged = true\r\n }\r\n }\r\n itemIndex++\r\n };\r\n while (itemIndex < items.length) {\r\n var _ret = _loop();\r\n if (\"continue\" === _ret) {\r\n continue\r\n }\r\n }\r\n each(brokenRules, (function(_, rule) {\r\n var foundItem = grep(items, (function(item) {\r\n return item.validator === validator && item.index === rule.index\r\n }))[0];\r\n if (!foundItem) {\r\n items.push({\r\n text: rule.message,\r\n validator: validator,\r\n index: rule.index\r\n });\r\n itemsChanged = true\r\n }\r\n }));\r\n if (itemsChanged) {\r\n items = this._getOrderedItems(this.validators, items);\r\n this.option(\"items\", items)\r\n }\r\n },\r\n _initMarkup() {\r\n this.$element().addClass(VALIDATION_SUMMARY_CLASS);\r\n this.callBase()\r\n },\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"validationGroup\":\r\n this._initGroupRegistration();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _itemClass: () => ITEM_CLASS,\r\n _itemDataKey: () => ITEM_DATA_KEY,\r\n _postprocessRenderItem(params) {\r\n eventsEngine.on(params.itemElement, \"click\", (function() {\r\n params.itemData.validator && params.itemData.validator.focus && params.itemData.validator.focus()\r\n }))\r\n },\r\n _dispose() {\r\n this.callBase();\r\n this._unsubscribeGroup()\r\n },\r\n refreshValidationGroup() {\r\n this._initGroupRegistration()\r\n }\r\n});\r\nregisterComponent(\"dxValidationSummary\", ValidationSummary);\r\nexport default ValidationSummary;\r\n","/**\r\n * DevExtreme (esm/ui/validation_group.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport ValidationSummary from \"./validation_summary\";\r\nimport ValidationEngine from \"./validation_engine\";\r\nimport Validator from \"./validator\";\r\nvar VALIDATION_ENGINE_CLASS = \"dx-validationgroup\";\r\nvar VALIDATOR_CLASS = \"dx-validator\";\r\nvar VALIDATION_SUMMARY_CLASS = \"dx-validationsummary\";\r\nclass ValidationGroup extends DOMComponent {\r\n _getDefaultOptions() {\r\n return super._getDefaultOptions()\r\n }\r\n _init() {\r\n super._init();\r\n ValidationEngine.addGroup(this)\r\n }\r\n _initMarkup() {\r\n var $element = this.$element();\r\n $element.addClass(VALIDATION_ENGINE_CLASS);\r\n $element.find(\".\".concat(VALIDATOR_CLASS)).each((function(_, validatorContainer) {\r\n Validator.getInstance($(validatorContainer))._initGroupRegistration()\r\n }));\r\n $element.find(\".\".concat(VALIDATION_SUMMARY_CLASS)).each((function(_, summaryContainer) {\r\n ValidationSummary.getInstance($(summaryContainer)).refreshValidationGroup()\r\n }));\r\n super._initMarkup()\r\n }\r\n validate() {\r\n return ValidationEngine.validateGroup(this)\r\n }\r\n reset() {\r\n return ValidationEngine.resetGroup(this)\r\n }\r\n _dispose() {\r\n ValidationEngine.removeGroup(this);\r\n this.$element().removeClass(VALIDATION_ENGINE_CLASS);\r\n super._dispose()\r\n }\r\n _useTemplates() {\r\n return false\r\n }\r\n}\r\nregisterComponent(\"dxValidationGroup\", ValidationGroup);\r\nexport default ValidationGroup;\r\n","/**\r\n * DevExtreme (esm/ui/form/ui.form.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport $ from \"../../core/renderer\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport Guid from \"../../core/guid\";\r\nimport {\r\n ensureDefined\r\n} from \"../../core/utils/common\";\r\nimport config from \"../../core/config\";\r\nimport {\r\n isDefined,\r\n isEmptyObject,\r\n isObject,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n triggerResizeEvent,\r\n triggerShownEvent\r\n} from \"../../events/visibility_change\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport Widget from \"../widget/ui.widget\";\r\nimport Editor from \"../editor/editor\";\r\nimport {\r\n defaultScreenFactorFunc,\r\n getCurrentScreenFactor,\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport ValidationEngine from \"../validation_engine\";\r\nimport {\r\n default as FormItemsRunTimeInfo\r\n} from \"./ui.form.items_runtime_info\";\r\nimport TabPanel from \"../tab_panel\";\r\nimport Scrollable from \"../scroll_view/ui.scrollable\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n isMaterial\r\n} from \"../themes\";\r\nimport tryCreateItemOptionAction from \"./ui.form.item_options_actions\";\r\nimport resizeObserverSingleton from \"../../core/resize_observer\";\r\nimport \"./ui.form.layout_manager\";\r\nimport {\r\n concatPaths,\r\n createItemPathByIndex,\r\n getFullOptionName,\r\n getOptionNameFromFullName,\r\n tryGetTabPath,\r\n getTextWithoutSpaces,\r\n isEqualToDataFieldOrNameOrTitleOrCaption,\r\n isFullPathContainsTabs,\r\n getItemPath,\r\n convertToLayoutManagerOptions\r\n} from \"./ui.form.utils\";\r\nimport {\r\n convertToLabelMarkOptions\r\n} from \"./ui.form.layout_manager.utils\";\r\nimport {\r\n setLabelWidthByMaxLabelWidth\r\n} from \"./components/label\";\r\nimport \"../validation_summary\";\r\nimport \"../validation_group\";\r\nimport {\r\n FORM_CLASS,\r\n FIELD_ITEM_CLASS,\r\n FORM_GROUP_CLASS,\r\n FORM_GROUP_CONTENT_CLASS,\r\n FIELD_ITEM_CONTENT_HAS_GROUP_CLASS,\r\n FIELD_ITEM_CONTENT_HAS_TABS_CLASS,\r\n FORM_GROUP_WITH_CAPTION_CLASS,\r\n FORM_GROUP_CAPTION_CLASS,\r\n FIELD_ITEM_TAB_CLASS,\r\n FORM_FIELD_ITEM_COL_CLASS,\r\n GROUP_COL_COUNT_CLASS,\r\n GROUP_COL_COUNT_ATTR,\r\n FIELD_ITEM_CONTENT_CLASS,\r\n FORM_VALIDATION_SUMMARY,\r\n ROOT_SIMPLE_ITEM_CLASS,\r\n FORM_UNDERLINED_CLASS\r\n} from \"./constants\";\r\nimport {\r\n TOOLBAR_CLASS\r\n} from \"../toolbar/constants\";\r\nvar FOCUSED_STATE_CLASS = \"dx-state-focused\";\r\nvar ITEM_OPTIONS_FOR_VALIDATION_UPDATING = [\"items\", \"isRequired\", \"validationRules\", \"visible\"];\r\nvar Form = Widget.inherit({\r\n _init: function() {\r\n this.callBase();\r\n this._cachedColCountOptions = [];\r\n this._itemsRunTimeInfo = new FormItemsRunTimeInfo;\r\n this._groupsColCount = [];\r\n this._attachSyncSubscriptions()\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n formID: \"dx-\" + new Guid,\r\n formData: {},\r\n colCount: 1,\r\n screenByWidth: defaultScreenFactorFunc,\r\n colCountByScreen: void 0,\r\n labelLocation: \"left\",\r\n readOnly: false,\r\n onFieldDataChanged: null,\r\n customizeItem: null,\r\n onEditorEnterKey: null,\r\n minColWidth: 200,\r\n alignItemLabels: true,\r\n alignItemLabelsInAllGroups: true,\r\n alignRootItemLabels: true,\r\n showColonAfterLabel: true,\r\n showRequiredMark: true,\r\n showOptionalMark: false,\r\n requiredMark: \"*\",\r\n optionalMark: messageLocalization.format(\"dxForm-optionalMark\"),\r\n requiredMessage: messageLocalization.getFormatter(\"dxForm-requiredMessage\"),\r\n showValidationSummary: false,\r\n items: void 0,\r\n scrollingEnabled: false,\r\n validationGroup: void 0,\r\n stylingMode: config().editorStylingMode,\r\n labelMode: \"outside\"\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n showColonAfterLabel: false,\r\n labelLocation: \"top\"\r\n }\r\n }])\r\n },\r\n _setOptionsByReference: function() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n formData: true,\r\n validationGroup: true\r\n })\r\n },\r\n _getGroupColCount: function($element) {\r\n return parseInt($element.attr(GROUP_COL_COUNT_ATTR))\r\n },\r\n _applyLabelsWidthByCol: function($container, index) {\r\n var options = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n var labelMarkOptions = arguments.length > 3 ? arguments[3] : void 0;\r\n var fieldItemClass = options.inOneColumn ? FIELD_ITEM_CLASS : FORM_FIELD_ITEM_COL_CLASS + index;\r\n var cssExcludeTabbedSelector = options.excludeTabbed ? \":not(.\".concat(FIELD_ITEM_TAB_CLASS, \")\") : \"\";\r\n setLabelWidthByMaxLabelWidth($container, \".\".concat(fieldItemClass).concat(cssExcludeTabbedSelector), labelMarkOptions);\r\n return\r\n },\r\n _applyLabelsWidth: function($container, excludeTabbed, inOneColumn, colCount, labelMarkOptions) {\r\n colCount = inOneColumn ? 1 : colCount || this._getGroupColCount($container);\r\n var applyLabelsOptions = {\r\n excludeTabbed: excludeTabbed,\r\n inOneColumn: inOneColumn\r\n };\r\n var i;\r\n for (i = 0; i < colCount; i++) {\r\n this._applyLabelsWidthByCol($container, i, applyLabelsOptions, labelMarkOptions)\r\n }\r\n },\r\n _getGroupElementsInColumn: function($container, columnIndex, colCount) {\r\n var cssColCountSelector = isDefined(colCount) ? \".\" + GROUP_COL_COUNT_CLASS + colCount : \"\";\r\n var groupSelector = \".\" + FORM_FIELD_ITEM_COL_CLASS + columnIndex + \" > .\" + FIELD_ITEM_CONTENT_CLASS + \" > .\" + FORM_GROUP_CLASS + cssColCountSelector;\r\n return $container.find(groupSelector)\r\n },\r\n _applyLabelsWidthWithGroups: function($container, colCount, excludeTabbed, labelMarkOptions) {\r\n if (true === this.option(\"alignRootItemLabels\")) {\r\n var $rootSimpleItems = $container.find(\".\".concat(ROOT_SIMPLE_ITEM_CLASS));\r\n for (var colIndex = 0; colIndex < colCount; colIndex++) {\r\n this._applyLabelsWidthByCol($rootSimpleItems, colIndex, excludeTabbed, labelMarkOptions)\r\n }\r\n }\r\n var alignItemLabelsInAllGroups = this.option(\"alignItemLabelsInAllGroups\");\r\n if (alignItemLabelsInAllGroups) {\r\n this._applyLabelsWidthWithNestedGroups($container, colCount, excludeTabbed, labelMarkOptions)\r\n } else {\r\n var $groups = this.$element().find(\".\" + FORM_GROUP_CLASS);\r\n var i;\r\n for (i = 0; i < $groups.length; i++) {\r\n this._applyLabelsWidth($groups.eq(i), excludeTabbed, void 0, void 0, labelMarkOptions)\r\n }\r\n }\r\n },\r\n _applyLabelsWidthWithNestedGroups: function($container, colCount, excludeTabbed, labelMarkOptions) {\r\n var applyLabelsOptions = {\r\n excludeTabbed: excludeTabbed\r\n };\r\n var colIndex;\r\n var groupsColIndex;\r\n var groupColIndex;\r\n var $groupsByCol;\r\n for (colIndex = 0; colIndex < colCount; colIndex++) {\r\n $groupsByCol = this._getGroupElementsInColumn($container, colIndex);\r\n this._applyLabelsWidthByCol($groupsByCol, 0, applyLabelsOptions, labelMarkOptions);\r\n for (groupsColIndex = 0; groupsColIndex < this._groupsColCount.length; groupsColIndex++) {\r\n $groupsByCol = this._getGroupElementsInColumn($container, colIndex, this._groupsColCount[groupsColIndex]);\r\n var groupColCount = this._getGroupColCount($groupsByCol);\r\n for (groupColIndex = 1; groupColIndex < groupColCount; groupColIndex++) {\r\n this._applyLabelsWidthByCol($groupsByCol, groupColIndex, applyLabelsOptions, labelMarkOptions)\r\n }\r\n }\r\n }\r\n },\r\n _labelLocation: function() {\r\n return this.option(\"labelLocation\")\r\n },\r\n _alignLabelsInColumn: function(_ref) {\r\n var {\r\n layoutManager: layoutManager,\r\n inOneColumn: inOneColumn,\r\n $container: $container,\r\n excludeTabbed: excludeTabbed,\r\n items: items\r\n } = _ref;\r\n if (!hasWindow() || \"top\" === this._labelLocation()) {\r\n return\r\n }\r\n var labelMarkOptions = convertToLabelMarkOptions(layoutManager._getMarkOptions());\r\n if (inOneColumn) {\r\n this._applyLabelsWidth($container, excludeTabbed, true, void 0, labelMarkOptions)\r\n } else if (this._checkGrouping(items)) {\r\n this._applyLabelsWidthWithGroups($container, layoutManager._getColCount(), excludeTabbed, labelMarkOptions)\r\n } else {\r\n this._applyLabelsWidth($container, excludeTabbed, false, layoutManager._getColCount(), labelMarkOptions)\r\n }\r\n },\r\n _prepareFormData: function() {\r\n if (!isDefined(this.option(\"formData\"))) {\r\n this.option(\"formData\", {})\r\n }\r\n },\r\n _setStylingModeClass: function() {\r\n if (\"underlined\" === this.option(\"stylingMode\")) {\r\n this.$element().addClass(FORM_UNDERLINED_CLASS)\r\n }\r\n },\r\n _initMarkup: function() {\r\n ValidationEngine.addGroup(this._getValidationGroup());\r\n this._clearCachedInstances();\r\n this._prepareFormData();\r\n this.$element().addClass(FORM_CLASS);\r\n this._setStylingModeClass();\r\n this.callBase();\r\n this.setAria(\"role\", \"form\", this.$element());\r\n if (this.option(\"scrollingEnabled\")) {\r\n this._renderScrollable()\r\n }\r\n this._renderLayout();\r\n this._renderValidationSummary();\r\n this._lastMarkupScreenFactor = this._targetScreenFactor || this._getCurrentScreenFactor();\r\n this._attachResizeObserverSubscription()\r\n },\r\n _attachResizeObserverSubscription: function() {\r\n if (hasWindow()) {\r\n var formRootElement = this.$element().get(0);\r\n resizeObserverSingleton.unobserve(formRootElement);\r\n resizeObserverSingleton.observe(formRootElement, () => {\r\n this._resizeHandler()\r\n })\r\n }\r\n },\r\n _resizeHandler: function() {\r\n if (this._cachedLayoutManagers.length) {\r\n each(this._cachedLayoutManagers, (_, layoutManager) => {\r\n var _layoutManager$option;\r\n null === (_layoutManager$option = layoutManager.option(\"onLayoutChanged\")) || void 0 === _layoutManager$option ? void 0 : _layoutManager$option(layoutManager.isSingleColumnMode())\r\n })\r\n }\r\n },\r\n _getCurrentScreenFactor: function() {\r\n return hasWindow() ? getCurrentScreenFactor(this.option(\"screenByWidth\")) : \"lg\"\r\n },\r\n _clearCachedInstances: function() {\r\n this._itemsRunTimeInfo.clear();\r\n this._cachedLayoutManagers = []\r\n },\r\n _alignLabels: function(layoutManager, inOneColumn) {\r\n this._alignLabelsInColumn({\r\n $container: this.$element(),\r\n layoutManager: layoutManager,\r\n excludeTabbed: true,\r\n items: this.option(\"items\"),\r\n inOneColumn: inOneColumn\r\n });\r\n triggerResizeEvent(this.$element().find(\".\".concat(TOOLBAR_CLASS)))\r\n },\r\n _clean: function() {\r\n this._clearValidationSummary();\r\n this.callBase();\r\n this._groupsColCount = [];\r\n this._cachedColCountOptions = [];\r\n this._lastMarkupScreenFactor = void 0;\r\n resizeObserverSingleton.unobserve(this.$element().get(0))\r\n },\r\n _renderScrollable: function() {\r\n var useNativeScrolling = this.option(\"useNativeScrolling\");\r\n this._scrollable = new Scrollable(this.$element(), {\r\n useNative: !!useNativeScrolling,\r\n useSimulatedScrollbar: !useNativeScrolling,\r\n useKeyboard: false,\r\n direction: \"both\",\r\n bounceEnabled: false\r\n })\r\n },\r\n _getContent: function() {\r\n return this.option(\"scrollingEnabled\") ? $(this._scrollable.content()) : this.$element()\r\n },\r\n _clearValidationSummary: function() {\r\n var _this$_$validationSum;\r\n null === (_this$_$validationSum = this._$validationSummary) || void 0 === _this$_$validationSum ? void 0 : _this$_$validationSum.remove();\r\n this._$validationSummary = void 0;\r\n this._validationSummary = void 0\r\n },\r\n _renderValidationSummary: function() {\r\n this._clearValidationSummary();\r\n if (this.option(\"showValidationSummary\")) {\r\n this._$validationSummary = $(\"<div>\").addClass(FORM_VALIDATION_SUMMARY).appendTo(this._getContent());\r\n this._validationSummary = this._$validationSummary.dxValidationSummary({\r\n validationGroup: this._getValidationGroup()\r\n }).dxValidationSummary(\"instance\")\r\n }\r\n },\r\n _prepareItems(items, parentIsTabbedItem, currentPath, isTabs) {\r\n if (items) {\r\n var result = [];\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n var path = concatPaths(currentPath, createItemPathByIndex(i, isTabs));\r\n var itemRunTimeInfo = {\r\n item: item,\r\n itemIndex: i,\r\n path: path\r\n };\r\n var guid = this._itemsRunTimeInfo.add(itemRunTimeInfo);\r\n if (isString(item)) {\r\n item = {\r\n dataField: item\r\n }\r\n }\r\n if (isObject(item)) {\r\n var preparedItem = _extends({}, item);\r\n itemRunTimeInfo.preparedItem = preparedItem;\r\n preparedItem.guid = guid;\r\n this._tryPrepareGroupItem(preparedItem);\r\n this._tryPrepareTabbedItem(preparedItem, path);\r\n this._tryPrepareItemTemplate(preparedItem);\r\n if (parentIsTabbedItem) {\r\n preparedItem.cssItemClass = FIELD_ITEM_TAB_CLASS\r\n }\r\n if (preparedItem.items) {\r\n preparedItem.items = this._prepareItems(preparedItem.items, parentIsTabbedItem, path)\r\n }\r\n result.push(preparedItem)\r\n } else {\r\n result.push(item)\r\n }\r\n }\r\n return result\r\n }\r\n },\r\n _tryPrepareGroupItem: function(item) {\r\n if (\"group\" === item.itemType) {\r\n item.alignItemLabels = ensureDefined(item.alignItemLabels, true);\r\n item._prepareGroupItemTemplate = itemTemplate => {\r\n if (item.template) {\r\n item.groupContentTemplate = this._getTemplate(itemTemplate)\r\n }\r\n item.template = this._itemGroupTemplate.bind(this, item)\r\n };\r\n item._prepareGroupItemTemplate(item.template)\r\n }\r\n },\r\n _tryPrepareTabbedItem: function(item, path) {\r\n if (\"tabbed\" === item.itemType) {\r\n item.template = this._itemTabbedTemplate.bind(this, item);\r\n item.tabs = this._prepareItems(item.tabs, true, path, true)\r\n }\r\n },\r\n _tryPrepareItemTemplate: function(item) {\r\n if (item.template) {\r\n item.template = this._getTemplate(item.template)\r\n }\r\n },\r\n _checkGrouping: function(items) {\r\n if (items) {\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n if (\"group\" === item.itemType) {\r\n return true\r\n }\r\n }\r\n }\r\n },\r\n _renderLayout: function() {\r\n var that = this;\r\n var items = that.option(\"items\");\r\n var $content = that._getContent();\r\n items = that._prepareItems(items);\r\n that._rootLayoutManager = that._renderLayoutManager($content, this._createLayoutManagerOptions(items, {\r\n isRoot: true,\r\n colCount: that.option(\"colCount\"),\r\n alignItemLabels: that.option(\"alignItemLabels\"),\r\n screenByWidth: this.option(\"screenByWidth\"),\r\n colCountByScreen: this.option(\"colCountByScreen\"),\r\n onLayoutChanged: function(inOneColumn) {\r\n that._alignLabels.bind(that)(that._rootLayoutManager, inOneColumn)\r\n },\r\n onContentReady: function(e) {\r\n that._alignLabels(e.component, e.component.isSingleColumnMode())\r\n }\r\n }))\r\n },\r\n _tryGetItemsForTemplate: function(item) {\r\n return item.items || []\r\n },\r\n _itemTabbedTemplate: function(item, e, $container) {\r\n var _item$tabs;\r\n var $tabPanel = $(\"<div>\").appendTo($container);\r\n var tabPanelOptions = extend({}, item.tabPanelOptions, {\r\n dataSource: item.tabs,\r\n onItemRendered: args => {\r\n var _item$tabPanelOptions, _item$tabPanelOptions2;\r\n null === (_item$tabPanelOptions = item.tabPanelOptions) || void 0 === _item$tabPanelOptions ? void 0 : null === (_item$tabPanelOptions2 = _item$tabPanelOptions.onItemRendered) || void 0 === _item$tabPanelOptions2 ? void 0 : _item$tabPanelOptions2.call(_item$tabPanelOptions, args);\r\n triggerShownEvent(args.itemElement)\r\n },\r\n itemTemplate: (itemData, e, container) => {\r\n var $container = $(container);\r\n var alignItemLabels = ensureDefined(itemData.alignItemLabels, true);\r\n var layoutManager = this._renderLayoutManager($container, this._createLayoutManagerOptions(this._tryGetItemsForTemplate(itemData), {\r\n colCount: itemData.colCount,\r\n alignItemLabels: alignItemLabels,\r\n screenByWidth: this.option(\"screenByWidth\"),\r\n colCountByScreen: itemData.colCountByScreen,\r\n cssItemClass: itemData.cssItemClass,\r\n onLayoutChanged: inOneColumn => {\r\n this._alignLabelsInColumn({\r\n $container: $container,\r\n layoutManager: layoutManager,\r\n items: itemData.items,\r\n inOneColumn: inOneColumn\r\n })\r\n }\r\n }));\r\n if (this._itemsRunTimeInfo) {\r\n this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(itemData.guid, {\r\n layoutManager: layoutManager\r\n })\r\n }\r\n if (alignItemLabels) {\r\n this._alignLabelsInColumn({\r\n $container: $container,\r\n layoutManager: layoutManager,\r\n items: itemData.items,\r\n inOneColumn: layoutManager.isSingleColumnMode()\r\n })\r\n }\r\n }\r\n });\r\n var tryUpdateTabPanelInstance = (items, instance) => {\r\n if (Array.isArray(items)) {\r\n items.forEach(item => this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, {\r\n widgetInstance: instance\r\n }))\r\n }\r\n };\r\n var tabPanel = this._createComponent($tabPanel, TabPanel, tabPanelOptions);\r\n $($container).parent().addClass(FIELD_ITEM_CONTENT_HAS_TABS_CLASS);\r\n tabPanel.on(\"optionChanged\", e => {\r\n if (\"dataSource\" === e.fullName) {\r\n tryUpdateTabPanelInstance(e.value, e.component)\r\n }\r\n });\r\n tryUpdateTabPanelInstance([{\r\n guid: item.guid\r\n }, ...null !== (_item$tabs = item.tabs) && void 0 !== _item$tabs ? _item$tabs : []], tabPanel)\r\n },\r\n _itemGroupTemplate: function(item, options, $container) {\r\n var id = options.editorOptions.inputAttr.id;\r\n var $group = $(\"<div>\").toggleClass(FORM_GROUP_WITH_CAPTION_CLASS, isDefined(item.caption) && item.caption.length).addClass(FORM_GROUP_CLASS).appendTo($container);\r\n var groupAria = {\r\n role: \"group\",\r\n labelledby: id\r\n };\r\n this.setAria(groupAria, $group);\r\n $($container).parent().addClass(FIELD_ITEM_CONTENT_HAS_GROUP_CLASS);\r\n if (item.caption) {\r\n $(\"<span>\").addClass(FORM_GROUP_CAPTION_CLASS).text(item.caption).attr(\"id\", id).appendTo($group)\r\n }\r\n var $groupContent = $(\"<div>\").addClass(FORM_GROUP_CONTENT_CLASS).appendTo($group);\r\n if (item.groupContentTemplate) {\r\n item._renderGroupContentTemplate = () => {\r\n $groupContent.empty();\r\n var data = {\r\n formData: this.option(\"formData\"),\r\n component: this\r\n };\r\n item.groupContentTemplate.render({\r\n model: data,\r\n container: getPublicElement($groupContent)\r\n })\r\n };\r\n item._renderGroupContentTemplate()\r\n } else {\r\n var layoutManager = this._renderLayoutManager($groupContent, this._createLayoutManagerOptions(this._tryGetItemsForTemplate(item), {\r\n colCount: item.colCount,\r\n colCountByScreen: item.colCountByScreen,\r\n alignItemLabels: item.alignItemLabels,\r\n cssItemClass: item.cssItemClass\r\n }));\r\n this._itemsRunTimeInfo && this._itemsRunTimeInfo.extendRunTimeItemInfoByKey(item.guid, {\r\n layoutManager: layoutManager\r\n });\r\n var colCount = layoutManager._getColCount();\r\n if (!this._groupsColCount.includes(colCount)) {\r\n this._groupsColCount.push(colCount)\r\n }\r\n $group.addClass(GROUP_COL_COUNT_CLASS + colCount);\r\n $group.attr(GROUP_COL_COUNT_ATTR, colCount)\r\n }\r\n },\r\n _createLayoutManagerOptions: function(items, extendedLayoutManagerOptions) {\r\n return convertToLayoutManagerOptions({\r\n form: this,\r\n formOptions: this.option(),\r\n $formElement: this.$element(),\r\n items: items,\r\n validationGroup: this._getValidationGroup(),\r\n extendedLayoutManagerOptions: extendedLayoutManagerOptions,\r\n onFieldDataChanged: args => {\r\n if (!this._isDataUpdating) {\r\n this._triggerOnFieldDataChanged(args)\r\n }\r\n },\r\n onContentReady: args => {\r\n this._itemsRunTimeInfo.addItemsOrExtendFrom(args.component._itemsRunTimeInfo);\r\n extendedLayoutManagerOptions.onContentReady && extendedLayoutManagerOptions.onContentReady(args)\r\n },\r\n onDisposing: _ref2 => {\r\n var {\r\n component: component\r\n } = _ref2;\r\n var nestedItemsRunTimeInfo = component.getItemsRunTimeInfo();\r\n this._itemsRunTimeInfo.removeItemsByItems(nestedItemsRunTimeInfo)\r\n },\r\n onFieldItemRendered: () => {\r\n var _this$_validationSumm;\r\n null === (_this$_validationSumm = this._validationSummary) || void 0 === _this$_validationSumm ? void 0 : _this$_validationSumm.refreshValidationGroup()\r\n }\r\n })\r\n },\r\n _renderLayoutManager: function($parent, layoutManagerOptions) {\r\n var baseColCountByScreen = {\r\n lg: layoutManagerOptions.colCount,\r\n md: layoutManagerOptions.colCount,\r\n sm: layoutManagerOptions.colCount,\r\n xs: 1\r\n };\r\n this._cachedColCountOptions.push({\r\n colCountByScreen: extend(baseColCountByScreen, layoutManagerOptions.colCountByScreen)\r\n });\r\n var $element = $(\"<div>\");\r\n $element.appendTo($parent);\r\n var instance = this._createComponent($element, \"dxLayoutManager\", layoutManagerOptions);\r\n instance.on(\"autoColCountChanged\", () => {\r\n this._clearAutoColCountChangedTimeout();\r\n this.autoColCountChangedTimeoutId = setTimeout(() => !this._disposed && this._refresh(), 0)\r\n });\r\n this._cachedLayoutManagers.push(instance);\r\n return instance\r\n },\r\n _getValidationGroup: function() {\r\n return this.option(\"validationGroup\") || this\r\n },\r\n _createComponent: function($element, type, config) {\r\n config = config || {};\r\n this._extendConfig(config, {\r\n readOnly: this.option(\"readOnly\")\r\n });\r\n return this.callBase($element, type, config)\r\n },\r\n _attachSyncSubscriptions: function() {\r\n var that = this;\r\n that.on(\"optionChanged\", (function(args) {\r\n var optionFullName = args.fullName;\r\n if (\"formData\" === optionFullName) {\r\n if (!isDefined(args.value)) {\r\n that._options.silent(\"formData\", args.value = {})\r\n }\r\n that._triggerOnFieldDataChangedByDataSet(args.value)\r\n }\r\n if (that._cachedLayoutManagers.length) {\r\n each(that._cachedLayoutManagers, (function(index, layoutManager) {\r\n if (\"formData\" === optionFullName) {\r\n that._isDataUpdating = true;\r\n layoutManager.option(\"layoutData\", args.value);\r\n that._isDataUpdating = false\r\n }\r\n if (\"readOnly\" === args.name || \"disabled\" === args.name) {\r\n layoutManager.option(optionFullName, args.value)\r\n }\r\n }))\r\n }\r\n }))\r\n },\r\n _optionChanged: function(args) {\r\n var splitFullName = args.fullName.split(\".\");\r\n if (splitFullName.length > 1 && -1 !== splitFullName[0].search(\"items\") && this._itemsOptionChangedHandler(args)) {\r\n return\r\n }\r\n if (splitFullName.length > 1 && -1 !== splitFullName[0].search(\"formData\") && this._formDataOptionChangedHandler(args)) {\r\n return\r\n }\r\n this._defaultOptionChangedHandler(args)\r\n },\r\n _defaultOptionChangedHandler: function(args) {\r\n switch (args.name) {\r\n case \"formData\":\r\n if (!this.option(\"items\")) {\r\n this._invalidate()\r\n } else if (isEmptyObject(args.value)) {\r\n this._resetValues()\r\n }\r\n break;\r\n case \"onFieldDataChanged\":\r\n break;\r\n case \"items\":\r\n case \"colCount\":\r\n case \"onEditorEnterKey\":\r\n case \"labelLocation\":\r\n case \"labelMode\":\r\n case \"alignItemLabels\":\r\n case \"showColonAfterLabel\":\r\n case \"customizeItem\":\r\n case \"alignItemLabelsInAllGroups\":\r\n case \"showRequiredMark\":\r\n case \"showOptionalMark\":\r\n case \"requiredMark\":\r\n case \"optionalMark\":\r\n case \"requiredMessage\":\r\n case \"scrollingEnabled\":\r\n case \"formID\":\r\n case \"colCountByScreen\":\r\n case \"screenByWidth\":\r\n case \"stylingMode\":\r\n this._invalidate();\r\n break;\r\n case \"showValidationSummary\":\r\n this._renderValidationSummary();\r\n break;\r\n case \"minColWidth\":\r\n if (\"auto\" === this.option(\"colCount\")) {\r\n this._invalidate()\r\n }\r\n break;\r\n case \"alignRootItemLabels\":\r\n case \"readOnly\":\r\n break;\r\n case \"width\":\r\n this.callBase(args);\r\n this._rootLayoutManager.option(args.name, args.value);\r\n this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode());\r\n break;\r\n case \"validationGroup\":\r\n ValidationEngine.removeGroup(args.previousValue || this);\r\n this._invalidate();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _itemsOptionChangedHandler: function(args) {\r\n var nameParts = args.fullName.split(\".\");\r\n var value = args.value;\r\n var itemPath = this._getItemPath(nameParts);\r\n var item = this.option(itemPath);\r\n var optionNameWithoutPath = args.fullName.replace(itemPath + \".\", \"\");\r\n var simpleOptionName = optionNameWithoutPath.split(\".\")[0].replace(/\\[\\d+]/, \"\");\r\n var itemAction = this._tryCreateItemOptionAction(simpleOptionName, item, item[simpleOptionName], args.previousValue, itemPath);\r\n var result = this._tryExecuteItemOptionAction(itemAction) || this._tryChangeLayoutManagerItemOption(args.fullName, value);\r\n if (!result && item) {\r\n this._changeItemOption(item, optionNameWithoutPath, value);\r\n var items = this._generateItemsFromData(this.option(\"items\"));\r\n this.option(\"items\", items);\r\n result = true\r\n }\r\n return result\r\n },\r\n _formDataOptionChangedHandler: function(args) {\r\n var nameParts = args.fullName.split(\".\");\r\n var value = args.value;\r\n var dataField = nameParts.slice(1).join(\".\");\r\n var editor = this.getEditor(dataField);\r\n if (editor) {\r\n editor.option(\"value\", value)\r\n } else {\r\n this._triggerOnFieldDataChanged({\r\n dataField: dataField,\r\n value: value\r\n })\r\n }\r\n return true\r\n },\r\n _tryCreateItemOptionAction: function(optionName, item, value, previousValue, itemPath) {\r\n if (\"tabs\" === optionName) {\r\n this._itemsRunTimeInfo.removeItemsByPathStartWith(\"\".concat(itemPath, \".tabs\"));\r\n value = this._prepareItems(value, true, itemPath, true)\r\n }\r\n return tryCreateItemOptionAction(optionName, {\r\n item: item,\r\n value: value,\r\n previousValue: previousValue,\r\n itemsRunTimeInfo: this._itemsRunTimeInfo\r\n })\r\n },\r\n _tryExecuteItemOptionAction: function(action) {\r\n return action && action.tryExecute()\r\n },\r\n _updateValidationGroupAndSummaryIfNeeded: function(fullName) {\r\n var optionName = getOptionNameFromFullName(fullName);\r\n if (ITEM_OPTIONS_FOR_VALIDATION_UPDATING.indexOf(optionName) > -1) {\r\n ValidationEngine.addGroup(this._getValidationGroup());\r\n if (this.option(\"showValidationSummary\")) {\r\n var _this$_validationSumm2;\r\n null === (_this$_validationSumm2 = this._validationSummary) || void 0 === _this$_validationSumm2 ? void 0 : _this$_validationSumm2.refreshValidationGroup()\r\n }\r\n }\r\n },\r\n _setLayoutManagerItemOption(layoutManager, optionName, value, path) {\r\n if (this._updateLockCount > 0) {\r\n !layoutManager._updateLockCount && layoutManager.beginUpdate();\r\n var key = this._itemsRunTimeInfo.findKeyByPath(path);\r\n this.postponedOperations.add(key, () => {\r\n !layoutManager._disposed && layoutManager.endUpdate();\r\n return (new Deferred).resolve()\r\n })\r\n }\r\n var contentReadyHandler = e => {\r\n e.component.off(\"contentReady\", contentReadyHandler);\r\n if (isFullPathContainsTabs(path)) {\r\n var tabPath = tryGetTabPath(path);\r\n var tabLayoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(tabPath);\r\n if (tabLayoutManager) {\r\n this._alignLabelsInColumn({\r\n items: tabLayoutManager.option(\"items\"),\r\n layoutManager: tabLayoutManager,\r\n $container: tabLayoutManager.$element(),\r\n inOneColumn: tabLayoutManager.isSingleColumnMode()\r\n })\r\n }\r\n } else {\r\n this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode())\r\n }\r\n };\r\n layoutManager.on(\"contentReady\", contentReadyHandler);\r\n layoutManager.option(optionName, value);\r\n this._updateValidationGroupAndSummaryIfNeeded(optionName)\r\n },\r\n _tryChangeLayoutManagerItemOption(fullName, value) {\r\n var nameParts = fullName.split(\".\");\r\n var optionName = getOptionNameFromFullName(fullName);\r\n if (\"items\" === optionName && nameParts.length > 1) {\r\n var itemPath = this._getItemPath(nameParts);\r\n var layoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(itemPath);\r\n if (layoutManager) {\r\n this._itemsRunTimeInfo.removeItemsByItems(layoutManager.getItemsRunTimeInfo());\r\n var items = this._prepareItems(value, false, itemPath);\r\n this._setLayoutManagerItemOption(layoutManager, optionName, items, itemPath);\r\n return true\r\n }\r\n } else if (nameParts.length > 2) {\r\n var endPartIndex = nameParts.length - 2;\r\n var _itemPath = this._getItemPath(nameParts.slice(0, endPartIndex));\r\n var _layoutManager = this._itemsRunTimeInfo.findGroupOrTabLayoutManagerByPath(_itemPath);\r\n if (_layoutManager) {\r\n var fullOptionName = getFullOptionName(nameParts[endPartIndex], optionName);\r\n if (\"editorType\" === optionName) {\r\n if (_layoutManager.option(fullOptionName) !== value) {\r\n return false\r\n }\r\n }\r\n if (\"visible\" === optionName) {\r\n var formItems = this.option(getFullOptionName(_itemPath, \"items\"));\r\n if (formItems && formItems.length) {\r\n var layoutManagerItems = _layoutManager.option(\"items\");\r\n formItems.forEach((item, index) => {\r\n var layoutItem = layoutManagerItems[index];\r\n layoutItem.visibleIndex = item.visibleIndex\r\n })\r\n }\r\n }\r\n this._setLayoutManagerItemOption(_layoutManager, fullOptionName, value, _itemPath);\r\n return true\r\n }\r\n }\r\n return false\r\n },\r\n _tryChangeLayoutManagerItemOptions(itemPath, options) {\r\n var result;\r\n this.beginUpdate();\r\n each(options, (optionName, optionValue) => {\r\n result = this._tryChangeLayoutManagerItemOption(getFullOptionName(itemPath, optionName), optionValue);\r\n if (!result) {\r\n return false\r\n }\r\n });\r\n this.endUpdate();\r\n return result\r\n },\r\n _getItemPath: function(nameParts) {\r\n var itemPath = nameParts[0];\r\n var i;\r\n for (i = 1; i < nameParts.length; i++) {\r\n if (-1 !== nameParts[i].search(/items\\[\\d+]|tabs\\[\\d+]/)) {\r\n itemPath += \".\" + nameParts[i]\r\n } else {\r\n break\r\n }\r\n }\r\n return itemPath\r\n },\r\n _triggerOnFieldDataChanged: function(args) {\r\n this._createActionByOption(\"onFieldDataChanged\")(args)\r\n },\r\n _triggerOnFieldDataChangedByDataSet: function(data) {\r\n var that = this;\r\n if (data && isObject(data)) {\r\n each(data, (function(dataField, value) {\r\n that._triggerOnFieldDataChanged({\r\n dataField: dataField,\r\n value: value\r\n })\r\n }))\r\n }\r\n },\r\n _updateFieldValue: function(dataField, value) {\r\n if (isDefined(this.option(\"formData\"))) {\r\n var editor = this.getEditor(dataField);\r\n this.option(\"formData.\" + dataField, value);\r\n if (editor) {\r\n var editorValue = editor.option(\"value\");\r\n if (editorValue !== value) {\r\n editor.option(\"value\", value)\r\n }\r\n }\r\n }\r\n },\r\n _generateItemsFromData: function(items) {\r\n var formData = this.option(\"formData\");\r\n var result = [];\r\n if (!items && isDefined(formData)) {\r\n each(formData, (function(dataField) {\r\n result.push({\r\n dataField: dataField\r\n })\r\n }))\r\n }\r\n if (items) {\r\n each(items, (function(index, item) {\r\n if (isObject(item)) {\r\n result.push(item)\r\n } else {\r\n result.push({\r\n dataField: item\r\n })\r\n }\r\n }))\r\n }\r\n return result\r\n },\r\n _getItemByField: function(field, items) {\r\n var that = this;\r\n var fieldParts = isObject(field) ? field : that._getFieldParts(field);\r\n var fieldName = fieldParts.fieldName;\r\n var fieldPath = fieldParts.fieldPath;\r\n var resultItem;\r\n if (items.length) {\r\n each(items, (function(index, item) {\r\n var itemType = item.itemType;\r\n if (fieldPath.length) {\r\n var path = fieldPath.slice();\r\n item = that._getItemByFieldPath(path, fieldName, item)\r\n } else if (\"group\" === itemType && !(item.caption || item.name) || \"tabbed\" === itemType && !item.name) {\r\n var subItemsField = that._getSubItemField(itemType);\r\n item.items = that._generateItemsFromData(item.items);\r\n item = that._getItemByField({\r\n fieldName: fieldName,\r\n fieldPath: fieldPath\r\n }, item[subItemsField])\r\n }\r\n if (isEqualToDataFieldOrNameOrTitleOrCaption(item, fieldName)) {\r\n resultItem = item;\r\n return false\r\n }\r\n }))\r\n }\r\n return resultItem\r\n },\r\n _getFieldParts: function(field) {\r\n var fieldName = field;\r\n var separatorIndex = fieldName.indexOf(\".\");\r\n var resultPath = [];\r\n while (-1 !== separatorIndex) {\r\n resultPath.push(fieldName.substr(0, separatorIndex));\r\n fieldName = fieldName.substr(separatorIndex + 1);\r\n separatorIndex = fieldName.indexOf(\".\")\r\n }\r\n return {\r\n fieldName: fieldName,\r\n fieldPath: resultPath.reverse()\r\n }\r\n },\r\n _getItemByFieldPath: function(path, fieldName, item) {\r\n var itemType = item.itemType;\r\n var subItemsField = this._getSubItemField(itemType);\r\n var isItemWithSubItems = \"group\" === itemType || \"tabbed\" === itemType || item.title;\r\n var result;\r\n do {\r\n if (isItemWithSubItems) {\r\n var name = item.name || item.caption || item.title;\r\n var isGroupWithName = isDefined(name);\r\n var nameWithoutSpaces = getTextWithoutSpaces(name);\r\n var pathNode = void 0;\r\n item[subItemsField] = this._generateItemsFromData(item[subItemsField]);\r\n if (isGroupWithName) {\r\n pathNode = path.pop()\r\n }\r\n if (!path.length) {\r\n result = this._getItemByField(fieldName, item[subItemsField]);\r\n if (result) {\r\n break\r\n }\r\n }\r\n if (!isGroupWithName || isGroupWithName && nameWithoutSpaces === pathNode) {\r\n if (path.length) {\r\n result = this._searchItemInEverySubItem(path, fieldName, item[subItemsField])\r\n }\r\n }\r\n } else {\r\n break\r\n }\r\n } while (path.length && !isDefined(result));\r\n return result\r\n },\r\n _getSubItemField: function(itemType) {\r\n return \"tabbed\" === itemType ? \"tabs\" : \"items\"\r\n },\r\n _searchItemInEverySubItem: function(path, fieldName, items) {\r\n var that = this;\r\n var result;\r\n each(items, (function(index, groupItem) {\r\n result = that._getItemByFieldPath(path.slice(), fieldName, groupItem);\r\n if (result) {\r\n return false\r\n }\r\n }));\r\n if (!result) {\r\n result = false\r\n }\r\n return result\r\n },\r\n _changeItemOption: function(item, option, value) {\r\n if (isObject(item)) {\r\n item[option] = value\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n var currentScreenFactor = this._getCurrentScreenFactor();\r\n if (this._lastMarkupScreenFactor !== currentScreenFactor) {\r\n if (this._isColCountChanged(this._lastMarkupScreenFactor, currentScreenFactor)) {\r\n this._targetScreenFactor = currentScreenFactor;\r\n this._refresh();\r\n this._targetScreenFactor = void 0\r\n }\r\n this._lastMarkupScreenFactor = currentScreenFactor\r\n }\r\n },\r\n _isColCountChanged: function(oldScreenSize, newScreenSize) {\r\n var isChanged = false;\r\n each(this._cachedColCountOptions, (function(index, item) {\r\n if (item.colCountByScreen[oldScreenSize] !== item.colCountByScreen[newScreenSize]) {\r\n isChanged = true;\r\n return false\r\n }\r\n }));\r\n return isChanged\r\n },\r\n _refresh: function() {\r\n var editorSelector = \".\" + FOCUSED_STATE_CLASS + \" input, .\" + FOCUSED_STATE_CLASS + \" textarea\";\r\n eventsEngine.trigger(this.$element().find(editorSelector), \"change\");\r\n this.callBase()\r\n },\r\n _resetValues: function() {\r\n this._itemsRunTimeInfo.each((function(_, itemRunTimeInfo) {\r\n if (isDefined(itemRunTimeInfo.widgetInstance) && Editor.isEditor(itemRunTimeInfo.widgetInstance)) {\r\n itemRunTimeInfo.widgetInstance.reset();\r\n itemRunTimeInfo.widgetInstance.option(\"isValid\", true)\r\n }\r\n }));\r\n ValidationEngine.resetGroup(this._getValidationGroup())\r\n },\r\n _updateData: function(data, value, isComplexData) {\r\n var that = this;\r\n var _data = isComplexData ? value : data;\r\n if (isObject(_data)) {\r\n each(_data, (function(dataField, fieldValue) {\r\n that._updateData(isComplexData ? data + \".\" + dataField : dataField, fieldValue, isObject(fieldValue))\r\n }))\r\n } else if (isString(data)) {\r\n that._updateFieldValue(data, value)\r\n }\r\n },\r\n registerKeyHandler: function(key, handler) {\r\n this.callBase(key, handler);\r\n this._itemsRunTimeInfo.each((function(_, itemRunTimeInfo) {\r\n if (isDefined(itemRunTimeInfo.widgetInstance)) {\r\n itemRunTimeInfo.widgetInstance.registerKeyHandler(key, handler)\r\n }\r\n }))\r\n },\r\n _focusTarget: function() {\r\n return this.$element().find(\".\" + FIELD_ITEM_CONTENT_CLASS + \" [tabindex]\").first()\r\n },\r\n _visibilityChanged: function() {\r\n this._alignLabels(this._rootLayoutManager, this._rootLayoutManager.isSingleColumnMode())\r\n },\r\n _clearAutoColCountChangedTimeout: function() {\r\n if (this.autoColCountChangedTimeoutId) {\r\n clearTimeout(this.autoColCountChangedTimeoutId);\r\n this.autoColCountChangedTimeoutId = void 0\r\n }\r\n },\r\n _dispose: function() {\r\n this._clearAutoColCountChangedTimeout();\r\n ValidationEngine.removeGroup(this._getValidationGroup());\r\n this.callBase()\r\n },\r\n resetValues: function() {\r\n this._resetValues()\r\n },\r\n updateData: function(data, value) {\r\n this._updateData(data, value)\r\n },\r\n getEditor: function(dataField) {\r\n return this._itemsRunTimeInfo.findWidgetInstanceByDataField(dataField) || this._itemsRunTimeInfo.findWidgetInstanceByName(dataField)\r\n },\r\n getButton: function(name) {\r\n return this._itemsRunTimeInfo.findWidgetInstanceByName(name)\r\n },\r\n updateDimensions: function() {\r\n var that = this;\r\n var deferred = new Deferred;\r\n if (that._scrollable) {\r\n that._scrollable.update().done((function() {\r\n deferred.resolveWith(that)\r\n }))\r\n } else {\r\n deferred.resolveWith(that)\r\n }\r\n return deferred.promise()\r\n },\r\n itemOption: function(id, option, value) {\r\n var items = this._generateItemsFromData(this.option(\"items\"));\r\n var item = this._getItemByField(id, items);\r\n var path = getItemPath(items, item);\r\n if (!item) {\r\n return\r\n }\r\n switch (arguments.length) {\r\n case 1:\r\n return item;\r\n case 3:\r\n var itemAction = this._tryCreateItemOptionAction(option, item, value, item[option], path);\r\n this._changeItemOption(item, option, value);\r\n var fullName = getFullOptionName(path, option);\r\n if (!this._tryExecuteItemOptionAction(itemAction) && !this._tryChangeLayoutManagerItemOption(fullName, value)) {\r\n this.option(\"items\", items)\r\n }\r\n break;\r\n default:\r\n if (isObject(option)) {\r\n if (!this._tryChangeLayoutManagerItemOptions(path, option)) {\r\n var allowUpdateItems;\r\n each(option, (optionName, optionValue) => {\r\n var itemAction = this._tryCreateItemOptionAction(optionName, item, optionValue, item[optionName], path);\r\n this._changeItemOption(item, optionName, optionValue);\r\n if (!allowUpdateItems && !this._tryExecuteItemOptionAction(itemAction)) {\r\n allowUpdateItems = true\r\n }\r\n });\r\n allowUpdateItems && this.option(\"items\", items)\r\n }\r\n }\r\n }\r\n },\r\n validate: function() {\r\n return ValidationEngine.validateGroup(this._getValidationGroup())\r\n },\r\n getItemID: function(name) {\r\n return \"dx_\" + this.option(\"formID\") + \"_\" + (name || new Guid)\r\n },\r\n getTargetScreenFactor: function() {\r\n return this._targetScreenFactor\r\n }\r\n});\r\nregisterComponent(\"dxForm\", Form);\r\nexport default Form;\r\n","/**\r\n * DevExtreme (esm/ui/form.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Form from \"./form/ui.form\";\r\nexport default Form;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_recurrence_editor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport \"../../ui/radio_group\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport Guid from \"../../core/guid\";\r\nimport $ from \"../../core/renderer\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n isDefined\r\n} from \"../../core/utils/type\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n PathTimeZoneConversion\r\n} from \"../../renovation/ui/scheduler/timeZoneCalculator/types\";\r\nimport ButtonGroup from \"../../ui/button_group\";\r\nimport DateBox from \"../../ui/date_box\";\r\nimport Editor from \"../../ui/editor/editor\";\r\nimport Form from \"../../ui/form\";\r\nimport NumberBox from \"../../ui/number_box\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"./m_recurrence\";\r\nvar RECURRENCE_EDITOR = \"dx-recurrence-editor\";\r\nvar LABEL_POSTFIX = \"-label\";\r\nvar WRAPPER_POSTFIX = \"-wrapper\";\r\nvar RECURRENCE_EDITOR_CONTAINER = \"dx-recurrence-editor-container\";\r\nvar REPEAT_END_EDITOR = \"dx-recurrence-repeat-end\";\r\nvar REPEAT_END_TYPE_EDITOR = \"dx-recurrence-radiogroup-repeat-type\";\r\nvar REPEAT_COUNT_EDITOR = \"dx-recurrence-numberbox-repeat-count\";\r\nvar REPEAT_UNTIL_DATE_EDITOR = \"dx-recurrence-datebox-until-date\";\r\nvar RECURRENCE_BUTTON_GROUP = \"dx-recurrence-button-group\";\r\nvar FREQUENCY_EDITOR = \"dx-recurrence-selectbox-freq\";\r\nvar INTERVAL_EDITOR = \"dx-recurrence-numberbox-interval\";\r\nvar REPEAT_ON_EDITOR = \"dx-recurrence-repeat-on\";\r\nvar DAY_OF_MONTH = \"dx-recurrence-numberbox-day-of-month\";\r\nvar MONTH_OF_YEAR = \"dx-recurrence-selectbox-month-of-year\";\r\nvar recurrentEditorNumberBoxWidth = 70;\r\nvar recurrentEditorSelectBoxWidth = 120;\r\nvar defaultRecurrenceTypeIndex = 1;\r\nvar frequenciesMessages = [{\r\n recurrence: \"dxScheduler-recurrenceHourly\",\r\n value: \"hourly\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceDaily\",\r\n value: \"daily\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceWeekly\",\r\n value: \"weekly\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceMonthly\",\r\n value: \"monthly\"\r\n}, {\r\n recurrence: \"dxScheduler-recurrenceYearly\",\r\n value: \"yearly\"\r\n}];\r\nvar frequencies = frequenciesMessages.map(item => ({\r\n text: () => messageLocalization.format(item.recurrence),\r\n value: item.value\r\n}));\r\nvar repeatEndTypes = [{\r\n type: \"never\"\r\n}, {\r\n type: \"until\"\r\n}, {\r\n type: \"count\"\r\n}];\r\nvar days = [\"SU\", \"MO\", \"TU\", \"WE\", \"TH\", \"FR\", \"SA\"];\r\nclass RecurrenceRule {\r\n constructor(rule) {\r\n this._recurrenceProcessor = getRecurrenceProcessor();\r\n this._recurrenceProcessor = getRecurrenceProcessor();\r\n this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(rule).rule\r\n }\r\n makeRules(string) {\r\n this._recurrenceRule = this._recurrenceProcessor.evalRecurrenceRule(string).rule\r\n }\r\n makeRule(field, value) {\r\n if (!value || Array.isArray(value) && !value.length) {\r\n delete this._recurrenceRule[field];\r\n return\r\n }\r\n if (isDefined(field)) {\r\n if (\"until\" === field) {\r\n delete this._recurrenceRule.count\r\n }\r\n if (\"count\" === field) {\r\n delete this._recurrenceRule.until\r\n }\r\n this._recurrenceRule[field] = value\r\n }\r\n }\r\n getRepeatEndRule() {\r\n var rules = this._recurrenceRule;\r\n if (\"count\" in rules) {\r\n return \"count\"\r\n }\r\n if (\"until\" in rules) {\r\n return \"until\"\r\n }\r\n return \"never\"\r\n }\r\n getRecurrenceString() {\r\n return this._recurrenceProcessor.getRecurrenceString(this._recurrenceRule)\r\n }\r\n getRules() {\r\n return this._recurrenceRule\r\n }\r\n getDaysFromByDayRule() {\r\n return this._recurrenceProcessor.daysFromByDayRule(this._recurrenceRule)\r\n }\r\n}\r\nclass RecurrenceEditor extends Editor {\r\n _getDefaultOptions() {\r\n var defaultOptions = super._getDefaultOptions();\r\n return extend(defaultOptions, {\r\n value: null,\r\n startDate: new Date,\r\n firstDayOfWeek: void 0\r\n })\r\n }\r\n _getFirstDayOfWeek() {\r\n var firstDayOfWeek = this.option(\"firstDayOfWeek\");\r\n return isDefined(firstDayOfWeek) ? firstDayOfWeek : dateLocalization.firstDayOfWeekIndex()\r\n }\r\n _createComponent(element, name) {\r\n var config = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};\r\n this._extendConfig(config, {\r\n readOnly: this.option(\"readOnly\")\r\n });\r\n return super._createComponent(element, name, config)\r\n }\r\n _init() {\r\n super._init();\r\n this._recurrenceRule = new RecurrenceRule(this.option(\"value\"))\r\n }\r\n _render() {\r\n super._render();\r\n this.$element().addClass(RECURRENCE_EDITOR);\r\n this._$container = $(\"<div>\").addClass(RECURRENCE_EDITOR_CONTAINER).appendTo(this.$element());\r\n this._prepareEditors();\r\n this._renderEditors(this._$container)\r\n }\r\n getEditorByField(fieldName) {\r\n var editor = this.getRecurrenceForm().getEditor(fieldName);\r\n if (!isDefined(editor)) {\r\n switch (fieldName) {\r\n case \"byday\":\r\n editor = this._weekEditor;\r\n break;\r\n case \"count\":\r\n editor = this._repeatCountEditor;\r\n break;\r\n case \"until\":\r\n editor = this._repeatUntilDate\r\n }\r\n }\r\n return editor\r\n }\r\n _prepareEditors() {\r\n var freq = (this._recurrenceRule.getRules().freq || frequenciesMessages[defaultRecurrenceTypeIndex].value).toLowerCase();\r\n this._editors = [this._createFreqEditor(freq), this._createIntervalEditor(freq), this._createRepeatOnLabel(freq), {\r\n itemType: \"group\",\r\n cssClass: REPEAT_ON_EDITOR,\r\n colCount: 2,\r\n colCountByScreen: {\r\n xs: 2\r\n },\r\n items: this._createRepeatOnEditor(freq)\r\n }, {\r\n itemType: \"group\",\r\n items: this._createRepeatEndEditor()\r\n }];\r\n return this._editors\r\n }\r\n _createFreqEditor(freq) {\r\n return {\r\n dataField: \"freq\",\r\n name: \"FREQ\",\r\n editorType: \"dxSelectBox\",\r\n cssClass: FREQUENCY_EDITOR,\r\n editorOptions: {\r\n items: frequencies,\r\n value: freq,\r\n field: \"freq\",\r\n valueExpr: \"value\",\r\n displayExpr: \"text\",\r\n layout: \"horizontal\",\r\n elementAttr: {\r\n class: FREQUENCY_EDITOR\r\n },\r\n onValueChanged: args => this._valueChangedHandler(args)\r\n },\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-editorLabelRecurrence\")\r\n }\r\n }\r\n }\r\n _createIntervalEditor(freq) {\r\n var interval = this._recurrenceRule.getRules().interval || 1;\r\n return {\r\n itemType: \"group\",\r\n colCount: 2,\r\n cssClass: \"\".concat(INTERVAL_EDITOR).concat(WRAPPER_POSTFIX),\r\n colCountByScreen: {\r\n xs: 2\r\n },\r\n items: [{\r\n dataField: \"interval\",\r\n editorType: \"dxNumberBox\",\r\n editorOptions: {\r\n format: \"#\",\r\n width: recurrentEditorNumberBoxWidth,\r\n min: 1,\r\n field: \"interval\",\r\n value: interval,\r\n showSpinButtons: true,\r\n useLargeSpinButtons: false,\r\n elementAttr: {\r\n class: INTERVAL_EDITOR\r\n },\r\n onValueChanged: args => this._valueChangedHandler(args)\r\n },\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-recurrenceRepeatEvery\")\r\n }\r\n }, {\r\n name: \"intervalLabel\",\r\n cssClass: \"\".concat(INTERVAL_EDITOR).concat(LABEL_POSTFIX),\r\n template: () => messageLocalization.format(\"dxScheduler-recurrenceRepeat\".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase()))\r\n }]\r\n }\r\n }\r\n _createRepeatOnLabel(freq) {\r\n return {\r\n itemType: \"group\",\r\n cssClass: \"\".concat(REPEAT_ON_EDITOR).concat(LABEL_POSTFIX),\r\n items: [{\r\n name: \"repeatOnLabel\",\r\n colSpan: 2,\r\n template: () => messageLocalization.format(\"dxScheduler-recurrenceRepeatOn\"),\r\n visible: freq && \"daily\" !== freq && \"hourly\" !== freq\r\n }]\r\n }\r\n }\r\n _createRepeatOnEditor(freq) {\r\n return [this._createByDayEditor(freq), this._createByMonthEditor(freq), this._createByMonthDayEditor(freq)]\r\n }\r\n _createByDayEditor(freq) {\r\n return {\r\n dataField: \"byday\",\r\n colSpan: 2,\r\n template: (_, itemElement) => {\r\n var firstDayOfWeek = this._getFirstDayOfWeek();\r\n var byDay = this._daysOfWeekByRules();\r\n var localDaysNames = dateLocalization.getDayNames(\"abbreviated\");\r\n var dayNames = days.slice(firstDayOfWeek).concat(days.slice(0, firstDayOfWeek));\r\n var itemsButtonGroup = localDaysNames.slice(firstDayOfWeek).concat(localDaysNames.slice(0, firstDayOfWeek)).map((item, index) => ({\r\n text: item,\r\n key: dayNames[index]\r\n }));\r\n this._$repeatOnWeek = $(\"<div>\").addClass(RECURRENCE_BUTTON_GROUP).appendTo(itemElement);\r\n this._weekEditor = this._createComponent(this._$repeatOnWeek, ButtonGroup, {\r\n items: itemsButtonGroup,\r\n field: \"byday\",\r\n selectionMode: \"multiple\",\r\n selectedItemKeys: byDay,\r\n keyExpr: \"key\",\r\n onSelectionChanged: e => {\r\n var selectedItemKeys = e.component.option(\"selectedItemKeys\");\r\n var selectedKeys = (null === selectedItemKeys || void 0 === selectedItemKeys ? void 0 : selectedItemKeys.length) ? selectedItemKeys : this._getDefaultByDayValue();\r\n this._recurrenceRule.makeRule(\"byday\", selectedKeys);\r\n this._changeEditorValue()\r\n }\r\n })\r\n },\r\n visible: \"weekly\" === freq,\r\n label: {\r\n visible: false\r\n }\r\n }\r\n }\r\n _createByMonthEditor(freq) {\r\n var monthsName = dateLocalization.getMonthNames(\"wide\");\r\n var months = [...Array(12)].map((_, i) => ({\r\n value: \"\".concat(i + 1),\r\n text: monthsName[i]\r\n }));\r\n return {\r\n dataField: \"bymonth\",\r\n editorType: \"dxSelectBox\",\r\n editorOptions: {\r\n field: \"bymonth\",\r\n items: months,\r\n value: this._monthOfYearByRules(),\r\n width: recurrentEditorSelectBoxWidth,\r\n displayExpr: \"text\",\r\n valueExpr: \"value\",\r\n elementAttr: {\r\n class: MONTH_OF_YEAR\r\n },\r\n onValueChanged: args => this._valueChangedHandler(args)\r\n },\r\n visible: \"yearly\" === freq,\r\n label: {\r\n visible: false\r\n }\r\n }\r\n }\r\n _createByMonthDayEditor(freq) {\r\n return {\r\n dataField: \"bymonthday\",\r\n editorType: \"dxNumberBox\",\r\n editorOptions: {\r\n min: 1,\r\n max: 31,\r\n format: \"#\",\r\n width: recurrentEditorNumberBoxWidth,\r\n field: \"bymonthday\",\r\n showSpinButtons: true,\r\n useLargeSpinButtons: false,\r\n value: this._dayOfMonthByRules(),\r\n elementAttr: {\r\n class: DAY_OF_MONTH\r\n },\r\n onValueChanged: args => this._valueChangedHandler(args)\r\n },\r\n visible: \"monthly\" === freq || \"yearly\" === freq,\r\n label: {\r\n visible: false\r\n }\r\n }\r\n }\r\n _createRepeatEndEditor() {\r\n var repeatType = this._recurrenceRule.getRepeatEndRule();\r\n return [{\r\n dataField: \"repeatEnd\",\r\n editorType: \"dxRadioGroup\",\r\n editorOptions: {\r\n items: repeatEndTypes,\r\n value: repeatType,\r\n valueExpr: \"type\",\r\n field: \"repeatEnd\",\r\n itemTemplate: itemData => {\r\n if (\"count\" === itemData.type) {\r\n return this._renderRepeatCountEditor()\r\n }\r\n if (\"until\" === itemData.type) {\r\n return this._renderRepeatUntilEditor()\r\n }\r\n return this._renderDefaultRepeatEnd()\r\n },\r\n layout: \"vertical\",\r\n elementAttr: {\r\n class: REPEAT_END_TYPE_EDITOR\r\n },\r\n onValueChanged: args => this._repeatEndValueChangedHandler(args)\r\n },\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-recurrenceEnd\")\r\n }\r\n }]\r\n }\r\n _renderEditors($container) {\r\n this._recurrenceForm = this._createComponent($container, Form, {\r\n items: this._editors,\r\n showValidationSummary: false,\r\n scrollingEnabled: true,\r\n showColonAfterLabel: false,\r\n labelLocation: \"top\"\r\n });\r\n this._disableRepeatEndParts()\r\n }\r\n _setAriaDescribedBy(editor, $label) {\r\n var labelId = \"label-\".concat(new Guid);\r\n editor.setAria(\"describedby\", labelId);\r\n editor.setAria(\"id\", labelId, $label)\r\n }\r\n getRecurrenceForm() {\r\n return this._recurrenceForm\r\n }\r\n changeValueByVisibility(value) {\r\n if (value) {\r\n if (!this.option(\"value\")) {\r\n this._handleDefaults()\r\n }\r\n } else {\r\n this._recurrenceRule.makeRules(\"\");\r\n this.option(\"value\", \"\")\r\n }\r\n }\r\n _handleDefaults() {\r\n this._recurrenceRule.makeRule(\"freq\", frequenciesMessages[defaultRecurrenceTypeIndex].value);\r\n this._changeEditorValue()\r\n }\r\n _changeEditorValue() {\r\n this.option(\"value\", this._recurrenceRule.getRecurrenceString() || \"\")\r\n }\r\n _daysOfWeekByRules() {\r\n var daysByRule = this._recurrenceRule.getDaysFromByDayRule();\r\n if (!daysByRule.length) {\r\n daysByRule = this._getDefaultByDayValue()\r\n }\r\n return daysByRule\r\n }\r\n _getDefaultByDayValue() {\r\n var startDate = this.option(\"startDate\");\r\n var startDay = startDate.getDay();\r\n return [days[startDay]]\r\n }\r\n _dayOfMonthByRules() {\r\n var dayByRule = this._recurrenceRule.getRules().bymonthday;\r\n if (!dayByRule) {\r\n dayByRule = this.option(\"startDate\").getDate()\r\n }\r\n return dayByRule\r\n }\r\n _monthOfYearByRules() {\r\n var monthByRule = this._recurrenceRule.getRules().bymonth;\r\n if (!monthByRule) {\r\n monthByRule = this.option(\"startDate\").getMonth() + 1\r\n }\r\n return String(monthByRule)\r\n }\r\n _renderDefaultRepeatEnd() {\r\n var $editorTemplate = $(\"<div>\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n $(\"<div>\").text(messageLocalization.format(\"dxScheduler-recurrenceNever\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorTemplate);\r\n return $editorTemplate\r\n }\r\n _repeatEndValueChangedHandler(args) {\r\n var {\r\n value: value\r\n } = args;\r\n this._disableRepeatEndParts(value);\r\n if (\"until\" === value) {\r\n this._recurrenceRule.makeRule(value, this._getUntilValue())\r\n }\r\n if (\"count\" === value) {\r\n this._recurrenceRule.makeRule(value, this._repeatCountEditor.option(\"value\"))\r\n }\r\n if (\"never\" === value) {\r\n this._recurrenceRule.makeRule(\"count\", \"\");\r\n this._recurrenceRule.makeRule(\"until\", \"\")\r\n }\r\n this._changeEditorValue()\r\n }\r\n _disableRepeatEndParts() {\r\n var value = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._recurrenceRule.getRepeatEndRule();\r\n if (\"until\" === value) {\r\n this._repeatCountEditor.option(\"disabled\", true);\r\n this._repeatUntilDate.option(\"disabled\", false)\r\n }\r\n if (\"count\" === value) {\r\n this._repeatCountEditor.option(\"disabled\", false);\r\n this._repeatUntilDate.option(\"disabled\", true)\r\n }\r\n if (\"never\" === value) {\r\n this._repeatCountEditor.option(\"disabled\", true);\r\n this._repeatUntilDate.option(\"disabled\", true)\r\n }\r\n }\r\n _renderRepeatCountEditor() {\r\n var repeatCount = this._recurrenceRule.getRules().count || 1;\r\n var $editorWrapper = $(\"<div>\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n $(\"<div>\").text(messageLocalization.format(\"dxScheduler-recurrenceAfter\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n this._$repeatCountEditor = $(\"<div>\").addClass(REPEAT_COUNT_EDITOR).appendTo($editorWrapper);\r\n $(\"<div>\").text(messageLocalization.format(\"dxScheduler-recurrenceRepeatCount\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n this._repeatCountEditor = this._createComponent(this._$repeatCountEditor, NumberBox, {\r\n field: \"count\",\r\n format: \"#\",\r\n width: recurrentEditorNumberBoxWidth,\r\n min: 1,\r\n showSpinButtons: true,\r\n useLargeSpinButtons: false,\r\n value: repeatCount,\r\n onValueChanged: this._repeatCountValueChangeHandler.bind(this)\r\n });\r\n return $editorWrapper\r\n }\r\n _repeatCountValueChangeHandler(args) {\r\n if (\"count\" === this._recurrenceRule.getRepeatEndRule()) {\r\n var {\r\n value: value\r\n } = args;\r\n this._recurrenceRule.makeRule(\"count\", value);\r\n this._changeEditorValue()\r\n }\r\n }\r\n _formatUntilDate(date) {\r\n if (this._recurrenceRule.getRules().until && dateUtils.sameDate(this._recurrenceRule.getRules().until, date)) {\r\n return date\r\n }\r\n return dateUtils.setToDayEnd(date)\r\n }\r\n _renderRepeatUntilEditor() {\r\n var repeatUntil = this._getUntilValue();\r\n var $editorWrapper = $(\"<div>\").addClass(REPEAT_END_EDITOR + WRAPPER_POSTFIX);\r\n $(\"<div>\").text(messageLocalization.format(\"dxScheduler-recurrenceOn\")).addClass(REPEAT_END_EDITOR + LABEL_POSTFIX).appendTo($editorWrapper);\r\n this._$repeatDateEditor = $(\"<div>\").addClass(REPEAT_UNTIL_DATE_EDITOR).appendTo($editorWrapper);\r\n this._repeatUntilDate = this._createComponent(this._$repeatDateEditor, DateBox, {\r\n field: \"until\",\r\n value: repeatUntil,\r\n type: \"date\",\r\n onValueChanged: this._repeatUntilValueChangeHandler.bind(this),\r\n calendarOptions: {\r\n firstDayOfWeek: this._getFirstDayOfWeek()\r\n },\r\n useMaskBehavior: true\r\n });\r\n return $editorWrapper\r\n }\r\n _repeatUntilValueChangeHandler(args) {\r\n if (\"until\" === this._recurrenceRule.getRepeatEndRule()) {\r\n var dateInTimeZone = this._formatUntilDate(new Date(args.value));\r\n var getStartDateTimeZone = this.option(\"getStartDateTimeZone\");\r\n var appointmentTimeZone = getStartDateTimeZone();\r\n var path = appointmentTimeZone ? PathTimeZoneConversion.fromAppointmentToSource : PathTimeZoneConversion.fromGridToSource;\r\n var dateInLocaleTimeZone = this.option(\"timeZoneCalculator\").createDate(dateInTimeZone, {\r\n path: path,\r\n appointmentTimeZone: appointmentTimeZone\r\n });\r\n this._recurrenceRule.makeRule(\"until\", dateInLocaleTimeZone);\r\n this._changeEditorValue()\r\n }\r\n }\r\n _valueChangedHandler(args) {\r\n var {\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n var field = args.component.option(\"field\");\r\n if (!this.option(\"visible\")) {\r\n this.option(\"value\", \"\")\r\n } else {\r\n this._recurrenceRule.makeRule(field, value);\r\n if (\"freq\" === field) {\r\n this._makeRepeatOnRule(value);\r\n this._changeRepeatOnVisibility(value, previousValue)\r\n }\r\n this._changeEditorValue()\r\n }\r\n }\r\n _makeRepeatOnRule(value) {\r\n if (\"daily\" === value || \"hourly\" === value) {\r\n this._recurrenceRule.makeRule(\"byday\", \"\");\r\n this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n this._recurrenceRule.makeRule(\"bymonthday\", \"\")\r\n }\r\n if (\"weekly\" === value) {\r\n this._recurrenceRule.makeRule(\"byday\", this._daysOfWeekByRules());\r\n this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n this._recurrenceRule.makeRule(\"bymonthday\", \"\")\r\n }\r\n if (\"monthly\" === value) {\r\n this._recurrenceRule.makeRule(\"bymonthday\", this._dayOfMonthByRules());\r\n this._recurrenceRule.makeRule(\"bymonth\", \"\");\r\n this._recurrenceRule.makeRule(\"byday\", \"\")\r\n }\r\n if (\"yearly\" === value) {\r\n this._recurrenceRule.makeRule(\"bymonthday\", this._dayOfMonthByRules());\r\n this._recurrenceRule.makeRule(\"bymonth\", this._monthOfYearByRules());\r\n this._recurrenceRule.makeRule(\"byday\", \"\")\r\n }\r\n }\r\n _optionChanged(args) {\r\n var _a, _b, _c, _d;\r\n switch (args.name) {\r\n case \"readOnly\":\r\n null === (_a = this._recurrenceForm) || void 0 === _a ? void 0 : _a.option(\"readOnly\", args.value);\r\n null === (_b = this._repeatCountEditor) || void 0 === _b ? void 0 : _b.option(\"readOnly\", args.value);\r\n null === (_c = this._weekEditor) || void 0 === _c ? void 0 : _c.option(\"readOnly\", args.value);\r\n null === (_d = this._repeatUntilDate) || void 0 === _d ? void 0 : _d.option(\"readOnly\", args.value);\r\n super._optionChanged(args);\r\n break;\r\n case \"value\":\r\n this._recurrenceRule.makeRules(args.value);\r\n this._changeRepeatIntervalLabel();\r\n this._disableRepeatEndParts();\r\n this._changeEditorsValue(this._recurrenceRule.getRules());\r\n super._optionChanged(args);\r\n break;\r\n case \"startDate\":\r\n this._makeRepeatOnRule(this._recurrenceRule.getRules().freq);\r\n if (isDefined(this._recurrenceRule.getRecurrenceString())) {\r\n this._changeEditorValue()\r\n }\r\n break;\r\n case \"firstDayOfWeek\":\r\n if (this._weekEditor) {\r\n var localDaysNames = dateLocalization.getDayNames(\"abbreviated\");\r\n var dayNames = days.slice(args.value).concat(days.slice(0, args.value));\r\n var itemsButtonGroup = localDaysNames.slice(args.value).concat(localDaysNames.slice(0, args.value)).map((item, index) => ({\r\n text: item,\r\n key: dayNames[index]\r\n }));\r\n this._weekEditor.option(\"items\", itemsButtonGroup)\r\n }\r\n if (this._$repeatDateEditor) {\r\n this._repeatUntilDate.option(\"calendarOptions.firstDayOfWeek\", this._getFirstDayOfWeek())\r\n }\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _changeRepeatOnVisibility(freq, previousFreq) {\r\n if (freq !== previousFreq) {\r\n this._recurrenceForm.itemOption(\"byday\", \"visible\", false);\r\n this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", false);\r\n this._recurrenceForm.itemOption(\"bymonth\", \"visible\", false);\r\n this._recurrenceForm.itemOption(\"repeatOnLabel\", \"visible\", freq && \"daily\" !== freq && \"hourly\" !== freq);\r\n if (\"weekly\" === freq) {\r\n this._recurrenceForm.itemOption(\"byday\", \"visible\", true)\r\n }\r\n if (\"monthly\" === freq) {\r\n this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", true)\r\n }\r\n if (\"yearly\" === freq) {\r\n this._recurrenceForm.itemOption(\"bymonthday\", \"visible\", true);\r\n this._recurrenceForm.itemOption(\"bymonth\", \"visible\", true)\r\n }\r\n }\r\n }\r\n _changeRepeatIntervalLabel() {\r\n var {\r\n freq: freq\r\n } = this._recurrenceRule.getRules();\r\n freq && this._recurrenceForm.itemOption(\"intervalLabel\", \"template\", messageLocalization.format(\"dxScheduler-recurrenceRepeat\".concat(freq.charAt(0).toUpperCase()).concat(freq.substr(1).toLowerCase())))\r\n }\r\n _changeEditorsValue(rules) {\r\n this._recurrenceForm.getEditor(\"freq\").option(\"value\", (rules.freq || frequenciesMessages[defaultRecurrenceTypeIndex].value).toLowerCase());\r\n this._changeDayOfWeekValue();\r\n this._changeDayOfMonthValue();\r\n this._changeMonthOfYearValue();\r\n this._changeIntervalValue(rules.interval);\r\n this._changeRepeatCountValue();\r\n this._changeRepeatEndValue();\r\n this._changeRepeatUntilValue()\r\n }\r\n _changeIntervalValue(value) {\r\n this._recurrenceForm.getEditor(\"interval\").option(\"value\", value || 1)\r\n }\r\n _changeRepeatEndValue() {\r\n var repeatType = this._recurrenceRule.getRepeatEndRule();\r\n this._recurrenceForm.getEditor(\"repeatEnd\").option(\"value\", repeatType)\r\n }\r\n _changeDayOfWeekValue() {\r\n var isEditorVisible = this._recurrenceForm.itemOption(\"byday\").visible;\r\n if (isEditorVisible) {\r\n var _days = this._daysOfWeekByRules();\r\n this.getEditorByField(\"byday\").option(\"selectedItemKeys\", _days)\r\n }\r\n }\r\n _changeDayOfMonthValue() {\r\n var isEditorVisible = this._recurrenceForm.itemOption(\"bymonthday\").visible;\r\n if (isEditorVisible) {\r\n var day = this._dayOfMonthByRules();\r\n this._recurrenceForm.getEditor(\"bymonthday\").option(\"value\", day)\r\n }\r\n }\r\n _changeMonthOfYearValue() {\r\n var isEditorVisible = this._recurrenceForm.itemOption(\"bymonth\").visible;\r\n if (isEditorVisible) {\r\n var month = this._monthOfYearByRules();\r\n this._recurrenceForm.getEditor(\"bymonth\").option(\"value\", month)\r\n }\r\n }\r\n _changeRepeatCountValue() {\r\n var count = this._recurrenceRule.getRules().count || 1;\r\n this._repeatCountEditor.option(\"value\", count)\r\n }\r\n _changeRepeatUntilValue() {\r\n this._repeatUntilDate.option(\"value\", this._getUntilValue())\r\n }\r\n _getUntilValue() {\r\n var untilDate = this._recurrenceRule.getRules().until;\r\n if (!untilDate) {\r\n return this._formatUntilDate(new Date)\r\n }\r\n var getStartDateTimeZone = this.option(\"getStartDateTimeZone\");\r\n var appointmentTimeZone = getStartDateTimeZone();\r\n var path = appointmentTimeZone ? PathTimeZoneConversion.fromSourceToAppointment : PathTimeZoneConversion.fromSourceToGrid;\r\n return this.option(\"timeZoneCalculator\").createDate(untilDate, {\r\n path: path,\r\n appointmentTimeZone: appointmentTimeZone\r\n })\r\n }\r\n toggle() {\r\n this._freqEditor.focus()\r\n }\r\n setAria() {\r\n if (this._switchEditor) {\r\n this._switchEditor.setAria(arguments.length <= 0 ? void 0 : arguments[0], arguments.length <= 1 ? void 0 : arguments[1])\r\n }\r\n }\r\n}\r\nregisterComponent(\"dxRecurrenceEditor\", RecurrenceEditor);\r\nexport default RecurrenceEditor;\r\n","/**\r\n * DevExtreme (esm/ui/text_box/utils.scroll.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isDxMouseWheelEvent\r\n} from \"../../events/utils/index\";\r\nvar allowScroll = function(container, delta, shiftKey) {\r\n var $container = $(container);\r\n var scrollTopPos = shiftKey ? $container.scrollLeft() : $container.scrollTop();\r\n var prop = shiftKey ? \"Width\" : \"Height\";\r\n var scrollSize = $container.prop(\"scroll\".concat(prop));\r\n var clientSize = $container.prop(\"client\".concat(prop));\r\n var scrollBottomPos = scrollSize - clientSize - scrollTopPos | 0;\r\n if (0 === scrollTopPos && 0 === scrollBottomPos) {\r\n return false\r\n }\r\n var isScrollFromTop = 0 === scrollTopPos && delta >= 0;\r\n var isScrollFromBottom = 0 === scrollBottomPos && delta <= 0;\r\n var isScrollFromMiddle = scrollTopPos > 0 && scrollBottomPos > 0;\r\n if (isScrollFromTop || isScrollFromBottom || isScrollFromMiddle) {\r\n return true\r\n }\r\n};\r\nvar prepareScrollData = function(container, validateTarget) {\r\n var $container = $(container);\r\n return {\r\n validate: function(e) {\r\n if (isDxMouseWheelEvent(e) && (eventTarget = e.target, validateTarget ? $(eventTarget).is(container) : true)) {\r\n if (allowScroll($container, -e.delta, e.shiftKey)) {\r\n e._needSkipEvent = true;\r\n return true\r\n }\r\n return false\r\n }\r\n var eventTarget\r\n }\r\n }\r\n};\r\nexport {\r\n allowScroll,\r\n prepareScrollData\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/text_area.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n noop,\r\n ensureDefined\r\n} from \"../core/utils/common\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n addNamespace,\r\n eventData\r\n} from \"../events/utils/index\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport scrollEvents from \"../events/gesture/emitter.gesture.scroll\";\r\nimport {\r\n getVerticalOffsets,\r\n getElementBoxParams,\r\n parseHeight,\r\n getOuterHeight\r\n} from \"../core/utils/size\";\r\nimport {\r\n allowScroll,\r\n prepareScrollData\r\n} from \"./text_box/utils.scroll\";\r\nimport TextBox from \"./text_box\";\r\nvar TEXTAREA_CLASS = \"dx-textarea\";\r\nvar TEXTEDITOR_INPUT_CLASS = \"dx-texteditor-input\";\r\nvar TEXTEDITOR_INPUT_CLASS_AUTO_RESIZE = \"dx-texteditor-input-auto-resize\";\r\nvar TextArea = TextBox.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n spellcheck: true,\r\n minHeight: void 0,\r\n maxHeight: void 0,\r\n autoResizeEnabled: false\r\n })\r\n },\r\n _initMarkup: function() {\r\n this.$element().addClass(TEXTAREA_CLASS);\r\n this.callBase();\r\n this.setAria(\"multiline\", \"true\")\r\n },\r\n _renderContentImpl: function() {\r\n this._updateInputHeight();\r\n this.callBase()\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderScrollHandler()\r\n },\r\n _createInput: function() {\r\n var $input = $(\"<textarea>\");\r\n this._applyInputAttributes($input, this.option(\"inputAttr\"));\r\n this._updateInputAutoResizeAppearance($input);\r\n return $input\r\n },\r\n _applyInputAttributes: function($input, customAttributes) {\r\n $input.attr(customAttributes).addClass(TEXTEDITOR_INPUT_CLASS)\r\n },\r\n _renderScrollHandler: function() {\r\n this._eventY = 0;\r\n var $input = this._input();\r\n var initScrollData = prepareScrollData($input, true);\r\n eventsEngine.on($input, addNamespace(scrollEvents.init, this.NAME), initScrollData, noop);\r\n eventsEngine.on($input, addNamespace(pointerEvents.down, this.NAME), this._pointerDownHandler.bind(this));\r\n eventsEngine.on($input, addNamespace(pointerEvents.move, this.NAME), this._pointerMoveHandler.bind(this))\r\n },\r\n _pointerDownHandler: function(e) {\r\n this._eventY = eventData(e).y\r\n },\r\n _pointerMoveHandler: function(e) {\r\n var currentEventY = eventData(e).y;\r\n var delta = this._eventY - currentEventY;\r\n if (allowScroll(this._input(), delta)) {\r\n e.isScrollingEvent = true;\r\n e.stopPropagation()\r\n }\r\n this._eventY = currentEventY\r\n },\r\n _renderDimensions: function() {\r\n var $element = this.$element();\r\n var element = $element.get(0);\r\n var width = this._getOptionValue(\"width\", element);\r\n var height = this._getOptionValue(\"height\", element);\r\n var minHeight = this.option(\"minHeight\");\r\n var maxHeight = this.option(\"maxHeight\");\r\n $element.css({\r\n minHeight: void 0 !== minHeight ? minHeight : \"\",\r\n maxHeight: void 0 !== maxHeight ? maxHeight : \"\",\r\n width: width,\r\n height: height\r\n })\r\n },\r\n _resetDimensions: function() {\r\n this.$element().css({\r\n height: \"\",\r\n minHeight: \"\",\r\n maxHeight: \"\"\r\n })\r\n },\r\n _renderEvents: function() {\r\n if (this.option(\"autoResizeEnabled\")) {\r\n eventsEngine.on(this._input(), addNamespace(\"input paste\", this.NAME), this._updateInputHeight.bind(this))\r\n }\r\n this.callBase()\r\n },\r\n _refreshEvents: function() {\r\n eventsEngine.off(this._input(), addNamespace(\"input paste\", this.NAME));\r\n this.callBase()\r\n },\r\n _getHeightDifference($input) {\r\n return getVerticalOffsets(this._$element.get(0), false) + getVerticalOffsets(this._$textEditorContainer.get(0), false) + getVerticalOffsets(this._$textEditorInputContainer.get(0), false) + getElementBoxParams(\"height\", getWindow().getComputedStyle($input.get(0))).margin\r\n },\r\n _updateInputHeight: function() {\r\n if (!hasWindow()) {\r\n return\r\n }\r\n var $input = this._input();\r\n var height = this.option(\"height\");\r\n var autoHeightResizing = void 0 === height && this.option(\"autoResizeEnabled\");\r\n var shouldCalculateInputHeight = autoHeightResizing || void 0 === height && this.option(\"minHeight\");\r\n if (!shouldCalculateInputHeight) {\r\n $input.css(\"height\", \"\");\r\n return\r\n }\r\n this._resetDimensions();\r\n this._$element.css(\"height\", getOuterHeight(this._$element));\r\n $input.css(\"height\", 0);\r\n var heightDifference = this._getHeightDifference($input);\r\n this._renderDimensions();\r\n var minHeight = this._getBoundaryHeight(\"minHeight\");\r\n var maxHeight = this._getBoundaryHeight(\"maxHeight\");\r\n var inputHeight = $input[0].scrollHeight;\r\n if (void 0 !== minHeight) {\r\n inputHeight = Math.max(inputHeight, minHeight - heightDifference)\r\n }\r\n if (void 0 !== maxHeight) {\r\n var adjustedMaxHeight = maxHeight - heightDifference;\r\n var needScroll = inputHeight > adjustedMaxHeight;\r\n inputHeight = Math.min(inputHeight, adjustedMaxHeight);\r\n this._updateInputAutoResizeAppearance($input, !needScroll)\r\n }\r\n $input.css(\"height\", inputHeight);\r\n if (autoHeightResizing) {\r\n this._$element.css(\"height\", \"auto\")\r\n }\r\n },\r\n _getBoundaryHeight: function(optionName) {\r\n var boundaryValue = this.option(optionName);\r\n if (isDefined(boundaryValue)) {\r\n return \"number\" === typeof boundaryValue ? boundaryValue : parseHeight(boundaryValue, this.$element().get(0).parentElement, this._$element.get(0))\r\n }\r\n },\r\n _renderInputType: noop,\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this._updateInputHeight()\r\n }\r\n },\r\n _updateInputAutoResizeAppearance: function($input, isAutoResizeEnabled) {\r\n if ($input) {\r\n var autoResizeEnabled = ensureDefined(isAutoResizeEnabled, this.option(\"autoResizeEnabled\"));\r\n $input.toggleClass(TEXTEDITOR_INPUT_CLASS_AUTO_RESIZE, autoResizeEnabled)\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n if (this.option(\"visible\")) {\r\n this._updateInputHeight()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"autoResizeEnabled\":\r\n this._updateInputAutoResizeAppearance(this._input(), args.value);\r\n this._refreshEvents();\r\n this._updateInputHeight();\r\n break;\r\n case \"value\":\r\n case \"height\":\r\n this.callBase(args);\r\n this._updateInputHeight();\r\n break;\r\n case \"minHeight\":\r\n case \"maxHeight\":\r\n this._renderDimensions();\r\n this._updateInputHeight();\r\n break;\r\n case \"visible\":\r\n this.callBase(args);\r\n args.value && this._updateInputHeight();\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxTextArea\", TextArea);\r\nexport default TextArea;\r\n","/**\r\n * DevExtreme (esm/ui/tag_box.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth,\r\n getHeight\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport devices from \"../core/devices\";\r\nimport {\r\n data as elementData\r\n} from \"../core/element_data\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport {\r\n noop,\r\n ensureDefined,\r\n equalByValue\r\n} from \"../core/utils/common\";\r\nimport {\r\n SelectionFilterCreator as FilterCreator\r\n} from \"../core/utils/selection_filter\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n createTextElementHiddenCopy\r\n} from \"../core/utils/dom\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n isDefined,\r\n isObject,\r\n isString\r\n} from \"../core/utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../core/utils/window\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../core/utils/iterator\";\r\nimport {\r\n removeDuplicates,\r\n getIntersection\r\n} from \"../core/utils/array\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport {\r\n addNamespace,\r\n isCommandKeyPressed,\r\n normalizeKeyName\r\n} from \"../events/utils/index\";\r\nimport {\r\n name as clickEvent\r\n} from \"../events/click\";\r\nimport caret from \"./text_box/utils.caret\";\r\nimport {\r\n normalizeLoadResult\r\n} from \"../data/data_source/utils\";\r\nimport Guid from \"../core/guid\";\r\nimport SelectBox from \"./select_box\";\r\nimport {\r\n BindableTemplate\r\n} from \"../core/templates/bindable_template\";\r\nimport {\r\n allowScroll\r\n} from \"./text_box/utils.scroll\";\r\nimport errors from \"./widget/ui.errors\";\r\nvar TAGBOX_TAG_DATA_KEY = \"dxTagData\";\r\nvar TAGBOX_CLASS = \"dx-tagbox\";\r\nvar TAGBOX_TAG_CONTAINER_CLASS = \"dx-tag-container\";\r\nvar TAGBOX_TAG_CLASS = \"dx-tag\";\r\nvar TAGBOX_MULTI_TAG_CLASS = \"dx-tagbox-multi-tag\";\r\nvar TAGBOX_CUSTOM_TAG_CLASS = \"dx-tag-custom\";\r\nvar TAGBOX_TAG_REMOVE_BUTTON_CLASS = \"dx-tag-remove-button\";\r\nvar TAGBOX_ONLY_SELECT_CLASS = \"dx-tagbox-only-select\";\r\nvar TAGBOX_SINGLE_LINE_CLASS = \"dx-tagbox-single-line\";\r\nvar TAGBOX_POPUP_WRAPPER_CLASS = \"dx-tagbox-popup-wrapper\";\r\nvar TAGBOX_TAG_CONTENT_CLASS = \"dx-tag-content\";\r\nvar TAGBOX_DEFAULT_FIELD_TEMPLATE_CLASS = \"dx-tagbox-default-template\";\r\nvar TAGBOX_CUSTOM_FIELD_TEMPLATE_CLASS = \"dx-tagbox-custom-template\";\r\nvar TEXTEDITOR_INPUT_CONTAINER_CLASS = \"dx-texteditor-input-container\";\r\nvar TAGBOX_MOUSE_WHEEL_DELTA_MULTIPLIER = -.3;\r\nvar TagBox = SelectBox.inherit({\r\n _supportedKeys: function() {\r\n var parent = this.callBase();\r\n var sendToList = options => this._list._keyboardHandler(options);\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n return extend({}, parent, {\r\n backspace: function(e) {\r\n if (!this._isCaretAtTheStart()) {\r\n return\r\n }\r\n this._processKeyboardEvent(e);\r\n this._isTagRemoved = true;\r\n var $tagToDelete = this._$focusedTag || this._tagElements().last();\r\n if (this._$focusedTag) {\r\n this._moveTagFocus(\"prev\", true)\r\n }\r\n if (0 === $tagToDelete.length) {\r\n return\r\n }\r\n this._preserveFocusedTag = true;\r\n this._removeTagElement($tagToDelete);\r\n delete this._preserveFocusedTag\r\n },\r\n upArrow: (e, opts) => e.altKey || !this._list ? parent.upArrow.call(this, e) : sendToList(opts),\r\n downArrow: (e, opts) => e.altKey || !this._list ? parent.downArrow.call(this, e) : sendToList(opts),\r\n del: function(e) {\r\n if (!this._$focusedTag || !this._isCaretAtTheStart()) {\r\n return\r\n }\r\n this._processKeyboardEvent(e);\r\n this._isTagRemoved = true;\r\n var $tagToDelete = this._$focusedTag;\r\n this._moveTagFocus(\"next\", true);\r\n this._preserveFocusedTag = true;\r\n this._removeTagElement($tagToDelete);\r\n delete this._preserveFocusedTag\r\n },\r\n enter: function(e, options) {\r\n var isListItemFocused = this._list && null !== this._list.option(\"focusedElement\");\r\n var isCustomItem = this.option(\"acceptCustomValue\") && !isListItemFocused;\r\n if (isCustomItem) {\r\n e.preventDefault();\r\n \"\" !== this._searchValue() && this._customItemAddedHandler(e);\r\n return\r\n }\r\n if (this.option(\"opened\")) {\r\n this._saveValueChangeEvent(e);\r\n sendToList(options);\r\n e.preventDefault()\r\n }\r\n },\r\n space: function(e, options) {\r\n var isOpened = this.option(\"opened\");\r\n var isInputActive = this._shouldRenderSearchEvent();\r\n if (isOpened && !isInputActive) {\r\n this._saveValueChangeEvent(e);\r\n sendToList(options);\r\n e.preventDefault()\r\n }\r\n },\r\n leftArrow: function(e) {\r\n if (!this._isCaretAtTheStart() || this._isEmpty() || this._isEditable() && rtlEnabled && !this._$focusedTag) {\r\n return\r\n }\r\n e.preventDefault();\r\n var direction = rtlEnabled ? \"next\" : \"prev\";\r\n this._moveTagFocus(direction);\r\n !this.option(\"multiline\") && this._scrollContainer(direction)\r\n },\r\n rightArrow: function(e) {\r\n if (!this._isCaretAtTheStart() || this._isEmpty() || this._isEditable() && !rtlEnabled && !this._$focusedTag) {\r\n return\r\n }\r\n e.preventDefault();\r\n var direction = rtlEnabled ? \"prev\" : \"next\";\r\n this._moveTagFocus(direction);\r\n !this.option(\"multiline\") && this._scrollContainer(direction)\r\n }\r\n })\r\n },\r\n _processKeyboardEvent: function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e)\r\n },\r\n _isEmpty: function() {\r\n return 0 === this._getValue().length\r\n },\r\n _updateTagsContainer: function($element) {\r\n this._$tagsContainer = $element.addClass(TAGBOX_TAG_CONTAINER_CLASS)\r\n },\r\n _allowSelectItemByTab: function() {\r\n return false\r\n },\r\n _isCaretAtTheStart: function() {\r\n var position = caret(this._input());\r\n return 0 === position.start && 0 === position.end\r\n },\r\n _updateInputAriaActiveDescendant(id) {\r\n this.setAria(\"activedescendant\", id, this._input())\r\n },\r\n _moveTagFocus: function(direction, clearOnBoundary) {\r\n if (!this._$focusedTag) {\r\n var tagElements = this._tagElements();\r\n this._$focusedTag = \"next\" === direction ? tagElements.first() : tagElements.last();\r\n this._toggleFocusClass(true, this._$focusedTag);\r\n this._updateInputAriaActiveDescendant(this._$focusedTag.attr(\"id\"));\r\n return\r\n }\r\n var $nextFocusedTag = this._$focusedTag[direction](\".\".concat(TAGBOX_TAG_CLASS));\r\n if ($nextFocusedTag.length > 0) {\r\n this._replaceFocusedTag($nextFocusedTag);\r\n this._updateInputAriaActiveDescendant($nextFocusedTag.attr(\"id\"))\r\n } else if (clearOnBoundary || \"next\" === direction && this._isEditable()) {\r\n this._clearTagFocus();\r\n this._updateInputAriaActiveDescendant()\r\n }\r\n },\r\n _replaceFocusedTag: function($nextFocusedTag) {\r\n this._toggleFocusClass(false, this._$focusedTag);\r\n this._$focusedTag = $nextFocusedTag;\r\n this._toggleFocusClass(true, this._$focusedTag)\r\n },\r\n _clearTagFocus: function() {\r\n if (!this._$focusedTag) {\r\n return\r\n }\r\n this._toggleFocusClass(false, this._$focusedTag);\r\n this._updateInputAriaActiveDescendant();\r\n delete this._$focusedTag\r\n },\r\n _focusClassTarget: function($element) {\r\n if ($element && $element.length && $element[0] !== this._focusTarget()[0]) {\r\n return $element\r\n }\r\n return this.callBase()\r\n },\r\n _getLabelContainer: function() {\r\n return this._$tagsContainer\r\n },\r\n _getFieldElement() {\r\n return this._input()\r\n },\r\n _scrollContainer: function(direction) {\r\n if (this.option(\"multiline\") || !hasWindow()) {\r\n return\r\n }\r\n if (!this._$tagsContainer) {\r\n return\r\n }\r\n var scrollPosition = this._getScrollPosition(direction);\r\n this._$tagsContainer.scrollLeft(scrollPosition)\r\n },\r\n _getScrollPosition: function(direction) {\r\n if (\"start\" === direction || \"end\" === direction) {\r\n return this._getBorderPosition(direction)\r\n }\r\n return this._$focusedTag ? this._getFocusedTagPosition(direction) : this._getBorderPosition(\"end\")\r\n },\r\n _getBorderPosition: function(direction) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isScrollLeft = \"end\" === direction ^ rtlEnabled;\r\n var scrollSign = rtlEnabled ? -1 : 1;\r\n return isScrollLeft ^ !rtlEnabled ? 0 : scrollSign * (this._$tagsContainer.get(0).scrollWidth - getOuterWidth(this._$tagsContainer))\r\n },\r\n _getFocusedTagPosition: function(direction) {\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var isScrollLeft = \"next\" === direction ^ rtlEnabled;\r\n var {\r\n left: scrollOffset\r\n } = this._$focusedTag.position();\r\n var scrollLeft = this._$tagsContainer.scrollLeft();\r\n if (isScrollLeft) {\r\n scrollOffset += getOuterWidth(this._$focusedTag, true) - getOuterWidth(this._$tagsContainer)\r\n }\r\n if (isScrollLeft ^ scrollOffset < 0) {\r\n scrollLeft += scrollOffset\r\n }\r\n return scrollLeft\r\n },\r\n _setNextValue: noop,\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n value: [],\r\n showDropDownButton: false,\r\n maxFilterQueryLength: 1500,\r\n tagTemplate: \"tag\",\r\n selectAllText: messageLocalization.format(\"dxList-selectAll\"),\r\n hideSelectedItems: false,\r\n selectedItems: [],\r\n selectAllMode: \"page\",\r\n onSelectAllValueChanged: null,\r\n maxDisplayedTags: void 0,\r\n showMultiTagOnly: true,\r\n onMultiTagPreparing: null,\r\n multiline: true,\r\n useSubmitBehavior: true\r\n })\r\n },\r\n _init: function() {\r\n this.callBase();\r\n this._selectedItems = [];\r\n this._initSelectAllValueChangedAction()\r\n },\r\n _initActions: function() {\r\n this.callBase();\r\n this._initMultiTagPreparingAction()\r\n },\r\n _initMultiTagPreparingAction: function() {\r\n this._multiTagPreparingAction = this._createActionByOption(\"onMultiTagPreparing\", {\r\n beforeExecute: function(e) {\r\n this._multiTagPreparingHandler(e.args[0])\r\n }.bind(this),\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n },\r\n _multiTagPreparingHandler: function(args) {\r\n var {\r\n length: selectedCount\r\n } = this._getValue();\r\n if (!this.option(\"showMultiTagOnly\")) {\r\n args.text = messageLocalization.getFormatter(\"dxTagBox-moreSelected\")(selectedCount - this.option(\"maxDisplayedTags\") + 1)\r\n } else {\r\n args.text = messageLocalization.getFormatter(\"dxTagBox-selected\")(selectedCount)\r\n }\r\n },\r\n _initDynamicTemplates: function() {\r\n this.callBase();\r\n this._templateManager.addDefaultTemplates({\r\n tag: new BindableTemplate(($container, data) => {\r\n var _data$text;\r\n var $tagContent = $(\"<div>\").addClass(TAGBOX_TAG_CONTENT_CLASS);\r\n $(\"<span>\").text(null !== (_data$text = data.text) && void 0 !== _data$text ? _data$text : data).appendTo($tagContent);\r\n $(\"<div>\").addClass(TAGBOX_TAG_REMOVE_BUTTON_CLASS).appendTo($tagContent);\r\n $container.append($tagContent)\r\n }, [\"text\"], this.option(\"integrationOptions.watchMethod\"), {\r\n text: this._displayGetter\r\n })\r\n })\r\n },\r\n _toggleSubmitElement: function(enabled) {\r\n if (enabled) {\r\n this._renderSubmitElement();\r\n this._setSubmitValue()\r\n } else {\r\n this._$submitElement && this._$submitElement.remove();\r\n delete this._$submitElement\r\n }\r\n },\r\n _renderSubmitElement: function() {\r\n if (!this.option(\"useSubmitBehavior\")) {\r\n return\r\n }\r\n this._$submitElement = $(\"<select>\").attr({\r\n multiple: \"multiple\",\r\n \"aria-label\": \"Selected items\"\r\n }).css(\"display\", \"none\").appendTo(this.$element())\r\n },\r\n _setSubmitValue: function() {\r\n if (!this.option(\"useSubmitBehavior\")) {\r\n return\r\n }\r\n var value = this._getValue();\r\n var $options = [];\r\n for (var i = 0, n = value.length; i < n; i++) {\r\n var useDisplayText = this._shouldUseDisplayValue(value[i]);\r\n $options.push($(\"<option>\").val(useDisplayText ? this._displayGetter(value[i]) : value[i]).attr(\"selected\", \"selected\"))\r\n }\r\n this._getSubmitElement().empty().append($options)\r\n },\r\n _initMarkup: function() {\r\n this._tagElementsCache = $();\r\n var isSingleLineMode = !this.option(\"multiline\");\r\n this.$element().addClass(TAGBOX_CLASS).toggleClass(TAGBOX_ONLY_SELECT_CLASS, !(this.option(\"searchEnabled\") || this.option(\"acceptCustomValue\"))).toggleClass(TAGBOX_SINGLE_LINE_CLASS, isSingleLineMode);\r\n this.setAria({\r\n role: \"group\",\r\n roledescription: \"tagbox\"\r\n }, this.$element());\r\n this._initTagTemplate();\r\n this.callBase()\r\n },\r\n _getNewLabelId(actualId, newId, shouldRemove) {\r\n if (!actualId) {\r\n return newId\r\n }\r\n if (shouldRemove) {\r\n if (actualId === newId) {\r\n return\r\n }\r\n return actualId.split(\" \").filter(id => id !== newId).join(\" \")\r\n }\r\n return \"\".concat(actualId, \" \").concat(newId)\r\n },\r\n _updateElementAria(id, shouldRemove) {\r\n var shouldClearLabel = !id;\r\n if (shouldClearLabel) {\r\n this.setAria(\"labelledby\", void 0, this.$element());\r\n return\r\n }\r\n var labelId = this.$element().attr(\"aria-labelledby\");\r\n var newLabelId = this._getNewLabelId(labelId, id, shouldRemove);\r\n this.setAria(\"labelledby\", newLabelId, this.$element())\r\n },\r\n _render: function() {\r\n this.callBase();\r\n this._renderTagRemoveAction();\r\n this._renderSingleLineScroll();\r\n this._scrollContainer(\"start\")\r\n },\r\n _initTagTemplate: function() {\r\n this._tagTemplate = this._getTemplateByOption(\"tagTemplate\")\r\n },\r\n _renderField: function() {\r\n var isDefaultFieldTemplate = !isDefined(this.option(\"fieldTemplate\"));\r\n this.$element().toggleClass(TAGBOX_DEFAULT_FIELD_TEMPLATE_CLASS, isDefaultFieldTemplate).toggleClass(TAGBOX_CUSTOM_FIELD_TEMPLATE_CLASS, !isDefaultFieldTemplate);\r\n this.callBase()\r\n },\r\n _renderTagRemoveAction: function() {\r\n var tagRemoveAction = this._createAction(this._removeTagHandler.bind(this));\r\n var eventName = addNamespace(clickEvent, \"dxTagBoxTagRemove\");\r\n eventsEngine.off(this._$tagsContainer, eventName);\r\n eventsEngine.on(this._$tagsContainer, eventName, \".\".concat(TAGBOX_TAG_REMOVE_BUTTON_CLASS), event => {\r\n tagRemoveAction({\r\n event: event\r\n })\r\n })\r\n },\r\n _renderSingleLineScroll: function() {\r\n var mouseWheelEvent = addNamespace(\"dxmousewheel\", this.NAME);\r\n var $element = this.$element();\r\n var isMultiline = this.option(\"multiline\");\r\n eventsEngine.off($element, mouseWheelEvent);\r\n if (\"desktop\" !== devices.real().deviceType) {\r\n this._$tagsContainer && this._$tagsContainer.css(\"overflowX\", isMultiline ? \"\" : \"auto\");\r\n return\r\n }\r\n if (isMultiline) {\r\n return\r\n }\r\n eventsEngine.on($element, mouseWheelEvent, this._tagContainerMouseWheelHandler.bind(this))\r\n },\r\n _tagContainerMouseWheelHandler: function(e) {\r\n var scrollLeft = this._$tagsContainer.scrollLeft();\r\n var delta = e.delta * TAGBOX_MOUSE_WHEEL_DELTA_MULTIPLIER;\r\n if (!isCommandKeyPressed(e) && allowScroll(this._$tagsContainer, delta, true)) {\r\n this._$tagsContainer.scrollLeft(scrollLeft + delta);\r\n return false\r\n }\r\n },\r\n _renderEvents: function() {\r\n this.callBase();\r\n var input = this._input();\r\n var namespace = addNamespace(\"keydown\", this.NAME);\r\n eventsEngine.on(input, namespace, e => {\r\n var keyName = normalizeKeyName(e);\r\n if (!this._isControlKey(keyName) && this._isEditable()) {\r\n this._clearTagFocus()\r\n }\r\n })\r\n },\r\n _popupWrapperClass: function() {\r\n return this.callBase() + \" \" + TAGBOX_POPUP_WRAPPER_CLASS\r\n },\r\n _renderInput: function() {\r\n this.callBase();\r\n this._renderPreventBlurOnInputClick()\r\n },\r\n _renderPreventBlurOnInputClick: function() {\r\n var eventName = addNamespace(\"mousedown\", \"dxTagBox\");\r\n eventsEngine.off(this._inputWrapper(), eventName);\r\n eventsEngine.on(this._inputWrapper(), eventName, e => {\r\n if (e.target !== this._input()[0] && this._isFocused()) {\r\n e.preventDefault()\r\n }\r\n })\r\n },\r\n _renderInputValueImpl: function() {\r\n return this._renderMultiSelect()\r\n },\r\n _loadInputValue: function() {\r\n return when()\r\n },\r\n _clearTextValue: function() {\r\n this._input().val(\"\");\r\n this._toggleEmptinessEventHandler();\r\n this.option(\"text\", \"\")\r\n },\r\n _focusInHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n this._scrollContainer(\"end\")\r\n }\r\n this.callBase(e)\r\n },\r\n _renderInputValue: function() {\r\n this.option(\"displayValue\", this._searchValue());\r\n return this.callBase()\r\n },\r\n _restoreInputText: function(saveEditingValue) {\r\n if (!saveEditingValue) {\r\n this._clearTextValue()\r\n }\r\n },\r\n _focusOutHandler: function(e) {\r\n if (!this._preventNestedFocusEvent(e)) {\r\n this._clearTagFocus();\r\n this._scrollContainer(\"start\")\r\n }\r\n this.callBase(e)\r\n },\r\n _getFirstPopupElement: function() {\r\n return this.option(\"showSelectionControls\") ? this._list._focusTarget() : this.callBase()\r\n },\r\n _initSelectAllValueChangedAction: function() {\r\n this._selectAllValueChangeAction = this._createActionByOption(\"onSelectAllValueChanged\")\r\n },\r\n _renderList: function() {\r\n this.callBase();\r\n this._setListDataSourceFilter();\r\n if (this.option(\"showSelectionControls\")) {\r\n this._list.registerKeyHandler(\"tab\", e => this._popupElementTabHandler(e));\r\n this._list.registerKeyHandler(\"escape\", e => this._popupElementEscHandler(e))\r\n }\r\n },\r\n _canListHaveFocus: function() {\r\n return \"useButtons\" === this.option(\"applyValueMode\")\r\n },\r\n _listConfig: function() {\r\n var selectionMode = this.option(\"showSelectionControls\") ? \"all\" : \"multiple\";\r\n return extend(this.callBase(), {\r\n selectionMode: selectionMode,\r\n selectAllText: this.option(\"selectAllText\"),\r\n onSelectAllValueChanged: _ref => {\r\n var {\r\n value: value\r\n } = _ref;\r\n this._selectAllValueChangeAction({\r\n value: value\r\n })\r\n },\r\n selectAllMode: this.option(\"selectAllMode\"),\r\n selectedItems: this._selectedItems,\r\n onFocusedItemChanged: null\r\n })\r\n },\r\n _renderMultiSelect: function() {\r\n var d = new Deferred;\r\n this._updateTagsContainer(this._$textEditorInputContainer);\r\n this._renderInputSize();\r\n this._renderTags().done(() => {\r\n this._popup && this._popup.refreshPosition();\r\n d.resolve()\r\n }).fail(d.reject);\r\n return d.promise()\r\n },\r\n _listItemClickHandler: function(e) {\r\n !this.option(\"showSelectionControls\") && this._clearTextValue();\r\n if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n return\r\n }\r\n this.callBase(e);\r\n this._saveValueChangeEvent(void 0)\r\n },\r\n _shouldClearFilter: function() {\r\n var shouldClearFilter = this.callBase();\r\n var showSelectionControls = this.option(\"showSelectionControls\");\r\n return !showSelectionControls && shouldClearFilter\r\n },\r\n _renderInputSize: function() {\r\n var $input = this._input();\r\n var value = $input.val();\r\n var isEmptyInput = isString(value) && value;\r\n var width = \"\";\r\n var size = \"\";\r\n var canTypeText = this.option(\"searchEnabled\") || this.option(\"acceptCustomValue\");\r\n if (isEmptyInput && canTypeText) {\r\n var $calculationElement = createTextElementHiddenCopy($input, value, {\r\n includePaddings: true\r\n });\r\n $calculationElement.insertAfter($input);\r\n width = getOuterWidth($calculationElement) + 5;\r\n $calculationElement.remove()\r\n } else if (!value) {\r\n size = 1\r\n }\r\n $input.css(\"width\", width);\r\n $input.attr(\"size\", size)\r\n },\r\n _renderInputSubstitution: function() {\r\n this.callBase();\r\n this._updateWidgetHeight()\r\n },\r\n _getValue: function() {\r\n return this.option(\"value\") || []\r\n },\r\n _multiTagRequired: function() {\r\n var values = this._getValue();\r\n var maxDisplayedTags = this.option(\"maxDisplayedTags\");\r\n return isDefined(maxDisplayedTags) && values.length > maxDisplayedTags\r\n },\r\n _renderMultiTag: function($input) {\r\n var $tag = $(\"<div>\").addClass(TAGBOX_TAG_CLASS).addClass(TAGBOX_MULTI_TAG_CLASS);\r\n var args = {\r\n multiTagElement: getPublicElement($tag),\r\n selectedItems: this.option(\"selectedItems\")\r\n };\r\n this._multiTagPreparingAction(args);\r\n if (args.cancel) {\r\n return false\r\n }\r\n $tag.data(TAGBOX_TAG_DATA_KEY, args.text);\r\n $tag.insertBefore($input);\r\n this._tagTemplate.render({\r\n model: args.text,\r\n container: getPublicElement($tag)\r\n });\r\n return $tag\r\n },\r\n _getFilter: function(creator) {\r\n var dataSourceFilter = this._dataController.filter();\r\n var filterExpr = creator.getCombinedFilter(this.option(\"valueExpr\"), dataSourceFilter);\r\n var filterQueryLength = encodeURI(JSON.stringify(filterExpr)).length;\r\n var maxFilterQueryLength = this.option(\"maxFilterQueryLength\");\r\n if (filterQueryLength <= maxFilterQueryLength) {\r\n return filterExpr\r\n }\r\n errors.log(\"W1019\", maxFilterQueryLength)\r\n },\r\n _getFilteredItems: function(values) {\r\n var _this$_loadFilteredIt, _this$_list;\r\n null === (_this$_loadFilteredIt = this._loadFilteredItemsPromise) || void 0 === _this$_loadFilteredIt ? void 0 : _this$_loadFilteredIt.reject();\r\n var creator = new FilterCreator(values);\r\n var listSelectedItems = null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list.option(\"selectedItems\");\r\n var isListItemsLoaded = !!listSelectedItems && this._list._dataController.isLoaded();\r\n var selectedItems = listSelectedItems || this.option(\"selectedItems\");\r\n var clientFilterFunction = creator.getLocalFilter(this._valueGetter);\r\n var filteredItems = selectedItems.filter(clientFilterFunction);\r\n var selectedItemsAlreadyLoaded = filteredItems.length === values.length;\r\n var d = new Deferred;\r\n var dataController = this._dataController;\r\n if ((!this._isDataSourceChanged || isListItemsLoaded) && selectedItemsAlreadyLoaded) {\r\n return d.resolve(filteredItems).promise()\r\n } else {\r\n var {\r\n customQueryParams: customQueryParams,\r\n expand: expand,\r\n select: select\r\n } = dataController.loadOptions();\r\n var filter = this._getFilter(creator);\r\n dataController.loadFromStore({\r\n filter: filter,\r\n customQueryParams: customQueryParams,\r\n expand: expand,\r\n select: select\r\n }).done((data, extra) => {\r\n this._isDataSourceChanged = false;\r\n if (this._disposed) {\r\n d.reject();\r\n return\r\n }\r\n var {\r\n data: items\r\n } = normalizeLoadResult(data, extra);\r\n var mappedItems = dataController.applyMapFunction(items);\r\n d.resolve(mappedItems.filter(clientFilterFunction))\r\n }).fail(d.reject);\r\n this._loadFilteredItemsPromise = d;\r\n return d.promise()\r\n }\r\n },\r\n _createTagsData: function(values, filteredItems) {\r\n var items = [];\r\n var cache = {};\r\n var isValueExprSpecified = \"this\" === this._valueGetterExpr();\r\n var filteredValues = {};\r\n filteredItems.forEach(filteredItem => {\r\n var filteredItemValue = isValueExprSpecified ? JSON.stringify(filteredItem) : this._valueGetter(filteredItem);\r\n filteredValues[filteredItemValue] = filteredItem\r\n });\r\n var loadItemPromises = [];\r\n values.forEach((value, index) => {\r\n var currentItem = filteredValues[isValueExprSpecified ? JSON.stringify(value) : value];\r\n if (isValueExprSpecified && !isDefined(currentItem)) {\r\n loadItemPromises.push(this._loadItem(value, cache).always(item => {\r\n var newItem = this._createTagData(items, item, value, index);\r\n items.splice(index, 0, newItem)\r\n }))\r\n } else {\r\n var newItem = this._createTagData(items, currentItem, value, index);\r\n items.splice(index, 0, newItem)\r\n }\r\n });\r\n var d = new Deferred;\r\n when.apply(this, loadItemPromises).always((function() {\r\n d.resolve(items)\r\n }));\r\n return d.promise()\r\n },\r\n _createTagData: function(items, item, value, valueIndex) {\r\n if (isDefined(item)) {\r\n this._selectedItems.push(item);\r\n return item\r\n } else {\r\n var selectedItem = this.option(\"selectedItem\");\r\n var customItem = this._valueGetter(selectedItem) === value ? selectedItem : value;\r\n return customItem\r\n }\r\n },\r\n _isGroupedData: function() {\r\n return this.option(\"grouped\") && !this._dataController.group()\r\n },\r\n _getItemsByValues: function(values) {\r\n var resultItems = [];\r\n values.forEach(function(value) {\r\n var item = this._getItemFromPlain(value);\r\n if (isDefined(item)) {\r\n resultItems.push(item)\r\n }\r\n }.bind(this));\r\n return resultItems\r\n },\r\n _getFilteredGroupedItems: function(values) {\r\n var selectedItems = new Deferred;\r\n if (this._filteredGroupedItemsLoadPromise) {\r\n this._dataController.cancel(this._filteredGroupedItemsLoadPromise.operationId)\r\n }\r\n if (!this._dataController.items().length) {\r\n this._filteredGroupedItemsLoadPromise = this._dataController.load().done(() => {\r\n selectedItems.resolve(this._getItemsByValues(values))\r\n }).fail(() => {\r\n selectedItems.resolve([])\r\n }).always(() => {\r\n this._filteredGroupedItemsLoadPromise = void 0\r\n })\r\n } else {\r\n selectedItems.resolve(this._getItemsByValues(values))\r\n }\r\n return selectedItems.promise()\r\n },\r\n _loadTagsData: function() {\r\n var values = this._getValue();\r\n var tagData = new Deferred;\r\n this._selectedItems = [];\r\n var filteredItemsPromise = this._isGroupedData() ? this._getFilteredGroupedItems(values) : this._getFilteredItems(values);\r\n filteredItemsPromise.done(filteredItems => {\r\n var items = this._createTagsData(values, filteredItems);\r\n items.always((function(data) {\r\n tagData.resolve(data)\r\n }))\r\n }).fail(tagData.reject.bind(this));\r\n return tagData.promise()\r\n },\r\n _renderTags: function() {\r\n var d = new Deferred;\r\n var isPlainDataUsed = false;\r\n if (this._shouldGetItemsFromPlain(this._valuesToUpdate)) {\r\n this._selectedItems = this._getItemsFromPlain(this._valuesToUpdate);\r\n if (this._selectedItems.length === this._valuesToUpdate.length) {\r\n this._renderTagsImpl(this._selectedItems);\r\n isPlainDataUsed = true;\r\n d.resolve()\r\n }\r\n }\r\n if (!isPlainDataUsed) {\r\n this._loadTagsData().done(items => {\r\n if (this._disposed) {\r\n d.reject();\r\n return\r\n }\r\n this._renderTagsImpl(items);\r\n d.resolve()\r\n }).fail(d.reject)\r\n }\r\n return d.promise()\r\n },\r\n _renderTagsImpl: function(items) {\r\n this._renderTagsCore(items);\r\n this._renderEmptyState();\r\n if (!this._preserveFocusedTag) {\r\n this._clearTagFocus()\r\n }\r\n },\r\n _shouldGetItemsFromPlain: function(values) {\r\n return values && this._dataController.isLoaded() && values.length <= this._getPlainItems().length\r\n },\r\n _getItemsFromPlain: function(values) {\r\n var selectedItems = this._getSelectedItemsFromList(values);\r\n var needFilterPlainItems = 0 === selectedItems.length && values.length > 0 || selectedItems.length < values.length;\r\n if (needFilterPlainItems) {\r\n var plainItems = this._getPlainItems();\r\n selectedItems = this._filterSelectedItems(plainItems, values)\r\n }\r\n return selectedItems\r\n },\r\n _getSelectedItemsFromList: function(values) {\r\n var _this$_list2;\r\n var listSelectedItems = null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.option(\"selectedItems\");\r\n var selectedItems = [];\r\n if (values.length === (null === listSelectedItems || void 0 === listSelectedItems ? void 0 : listSelectedItems.length)) {\r\n selectedItems = this._filterSelectedItems(listSelectedItems, values)\r\n }\r\n return selectedItems\r\n },\r\n _filterSelectedItems: function(plainItems, values) {\r\n var selectedItems = plainItems.filter(dataItem => {\r\n var currentValue;\r\n for (var i = 0; i < values.length; i++) {\r\n currentValue = values[i];\r\n if (isObject(currentValue)) {\r\n if (this._isValueEquals(dataItem, currentValue)) {\r\n return true\r\n }\r\n } else if (this._isValueEquals(this._valueGetter(dataItem), currentValue)) {\r\n return true\r\n }\r\n }\r\n return false\r\n }, this);\r\n return selectedItems\r\n },\r\n _integrateInput: function() {\r\n this._isInputReady.resolve();\r\n this.callBase();\r\n var tagsContainer = this.$element().find(\".\".concat(TEXTEDITOR_INPUT_CONTAINER_CLASS));\r\n this._updateTagsContainer(tagsContainer);\r\n this._renderTagRemoveAction()\r\n },\r\n _renderTagsCore: function(items) {\r\n var _this$_isInputReady;\r\n null === (_this$_isInputReady = this._isInputReady) || void 0 === _this$_isInputReady ? void 0 : _this$_isInputReady.reject();\r\n this._isInputReady = new Deferred;\r\n this._renderField();\r\n this.option(\"selectedItems\", this._selectedItems.slice());\r\n this._cleanTags();\r\n if (this._input().length > 0) {\r\n this._isInputReady.resolve()\r\n }\r\n when(this._isInputReady).done(() => {\r\n this._renderTagsElements(items)\r\n })\r\n },\r\n _renderTagsElements(items) {\r\n var $multiTag = this._multiTagRequired() && this._renderMultiTag(this._input());\r\n var showMultiTagOnly = this.option(\"showMultiTagOnly\");\r\n var maxDisplayedTags = this.option(\"maxDisplayedTags\");\r\n items.forEach((item, index) => {\r\n if ($multiTag && showMultiTagOnly || $multiTag && !showMultiTagOnly && index - maxDisplayedTags >= -1) {\r\n return false\r\n }\r\n this._renderTag(item, $multiTag || this._input())\r\n });\r\n if (this._isFocused()) {\r\n this._scrollContainer(\"end\")\r\n }\r\n this._refreshTagElements()\r\n },\r\n _cleanTags: function() {\r\n if (this._multiTagRequired()) {\r\n this._tagElements().remove()\r\n } else {\r\n var $tags = this._tagElements();\r\n var values = this._getValue();\r\n each($tags, (function(_, tag) {\r\n var $tag = $(tag);\r\n var tagData = $tag.data(TAGBOX_TAG_DATA_KEY);\r\n if (!(null !== values && void 0 !== values && values.includes(tagData))) {\r\n $tag.remove()\r\n }\r\n }))\r\n }\r\n this._updateElementAria()\r\n },\r\n _renderEmptyState: function() {\r\n var isEmpty = !(this._getValue().length || this._selectedItems.length || this._searchValue());\r\n this._toggleEmptiness(isEmpty);\r\n this._renderDisplayText()\r\n },\r\n _renderDisplayText: function() {\r\n this._renderInputSize()\r\n },\r\n _refreshTagElements: function() {\r\n this._tagElementsCache = this.$element().find(\".\".concat(TAGBOX_TAG_CLASS))\r\n },\r\n _tagElements: function() {\r\n return this._tagElementsCache\r\n },\r\n _applyTagTemplate: function(item, $tag) {\r\n this._tagTemplate.render({\r\n model: item,\r\n container: getPublicElement($tag)\r\n })\r\n },\r\n _renderTag: function(item, $input) {\r\n var value = this._valueGetter(item);\r\n if (!isDefined(value)) {\r\n return\r\n }\r\n var $tag = this._getTag(value);\r\n var displayValue = this._displayGetter(item);\r\n var itemModel = this._getItemModel(item, displayValue);\r\n if ($tag) {\r\n if (isDefined(displayValue)) {\r\n $tag.empty();\r\n this._applyTagTemplate(itemModel, $tag)\r\n }\r\n $tag.removeClass(TAGBOX_CUSTOM_TAG_CLASS);\r\n this._updateElementAria($tag.attr(\"id\"))\r\n } else {\r\n var tagId = \"dx-\".concat(new Guid);\r\n $tag = this._createTag(value, $input, tagId);\r\n if (isDefined(item)) {\r\n this._applyTagTemplate(itemModel, $tag)\r\n } else {\r\n $tag.addClass(TAGBOX_CUSTOM_TAG_CLASS);\r\n this._applyTagTemplate(value, $tag)\r\n }\r\n this._updateElementAria(tagId)\r\n }\r\n },\r\n _getItemModel: function(item, displayValue) {\r\n if (isObject(item) && isDefined(displayValue)) {\r\n return item\r\n } else {\r\n return ensureDefined(displayValue, \"\")\r\n }\r\n },\r\n _getTag: function(value) {\r\n var $tags = this._tagElements();\r\n var tagsLength = $tags.length;\r\n var result = false;\r\n for (var i = 0; i < tagsLength; i++) {\r\n var $tag = $tags[i];\r\n var tagData = elementData($tag, TAGBOX_TAG_DATA_KEY);\r\n if (value === tagData || equalByValue(value, tagData)) {\r\n result = $($tag);\r\n break\r\n }\r\n }\r\n return result\r\n },\r\n _createTag: function(value, $input, tagId) {\r\n return $(\"<div>\").attr(\"id\", tagId).addClass(TAGBOX_TAG_CLASS).data(TAGBOX_TAG_DATA_KEY, value).insertBefore($input)\r\n },\r\n _toggleEmptinessEventHandler: function() {\r\n this._toggleEmptiness(!this._getValue().length && !this._searchValue().length)\r\n },\r\n _customItemAddedHandler: function(e) {\r\n this.callBase(e);\r\n this._clearTextValue()\r\n },\r\n _removeTagHandler: function(args) {\r\n var e = args.event;\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e);\r\n var $tag = $(e.target).closest(\".\".concat(TAGBOX_TAG_CLASS));\r\n this._removeTagElement($tag)\r\n },\r\n _removeTagElement: function($tag) {\r\n if ($tag.hasClass(TAGBOX_MULTI_TAG_CLASS)) {\r\n if (!this.option(\"showMultiTagOnly\")) {\r\n this.option(\"value\", this._getValue().slice(0, this.option(\"maxDisplayedTags\")))\r\n } else {\r\n this.reset()\r\n }\r\n return\r\n }\r\n var itemValue = $tag.data(TAGBOX_TAG_DATA_KEY);\r\n var itemId = $tag.attr(\"id\");\r\n this._removeTagWithUpdate(itemValue);\r\n this._updateElementAria(itemId, true);\r\n this._refreshTagElements()\r\n },\r\n _updateField: noop,\r\n _removeTagWithUpdate: function(itemValue) {\r\n var value = this._getValue().slice();\r\n this._removeTag(value, itemValue);\r\n this.option(\"value\", value);\r\n if (0 === value.length) {\r\n this._clearTagFocus()\r\n }\r\n },\r\n _getCurrentValue: function() {\r\n return this._lastValue()\r\n },\r\n _selectionChangeHandler: function(e) {\r\n if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n return\r\n }\r\n var value = this._getValue().slice();\r\n each(e.removedItems || [], (_, removedItem) => {\r\n this._removeTag(value, this._valueGetter(removedItem))\r\n });\r\n each(e.addedItems || [], (_, addedItem) => {\r\n this._addTag(value, this._valueGetter(addedItem))\r\n });\r\n this._updateWidgetHeight();\r\n if (!equalByValue(this._list.option(\"selectedItemKeys\"), this.option(\"value\"))) {\r\n var listSelectionChangeEvent = this._list._getSelectionChangeEvent();\r\n listSelectionChangeEvent && this._saveValueChangeEvent(listSelectionChangeEvent);\r\n this.option(\"value\", value)\r\n }\r\n this._list._saveSelectionChangeEvent(void 0)\r\n },\r\n _removeTag: function(value, item) {\r\n var index = this._valueIndex(item, value);\r\n if (index >= 0) {\r\n value.splice(index, 1)\r\n }\r\n },\r\n _addTag: function(value, item) {\r\n var index = this._valueIndex(item);\r\n if (index < 0) {\r\n value.push(item)\r\n }\r\n },\r\n _fieldRenderData: function() {\r\n return this._selectedItems.slice()\r\n },\r\n _completeSelection: function(value) {\r\n if (!this.option(\"showSelectionControls\")) {\r\n this._setValue(value)\r\n }\r\n },\r\n _setValue: function(value) {\r\n if (null === value) {\r\n return\r\n }\r\n var useButtons = \"useButtons\" === this.option(\"applyValueMode\");\r\n var valueIndex = this._valueIndex(value);\r\n var values = (useButtons ? this._list.option(\"selectedItemKeys\") : this._getValue()).slice();\r\n if (valueIndex >= 0) {\r\n values.splice(valueIndex, 1)\r\n } else {\r\n values.push(value)\r\n }\r\n if (\"useButtons\" === this.option(\"applyValueMode\")) {\r\n this._list.option(\"selectedItemKeys\", values)\r\n } else {\r\n this.option(\"value\", values)\r\n }\r\n },\r\n _isSelectedValue: function(value, cache) {\r\n return this._valueIndex(value, null, cache) > -1\r\n },\r\n _valueIndex: function(value, values, cache) {\r\n var result = -1;\r\n if (cache && \"object\" !== typeof value) {\r\n if (!cache.indexByValues) {\r\n cache.indexByValues = {};\r\n values = values || this._getValue();\r\n values.forEach((function(value, index) {\r\n cache.indexByValues[value] = index\r\n }))\r\n }\r\n if (value in cache.indexByValues) {\r\n return cache.indexByValues[value]\r\n }\r\n }\r\n values = values || this._getValue();\r\n each(values, (index, selectedValue) => {\r\n if (this._isValueEquals(value, selectedValue)) {\r\n result = index;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n _lastValue: function() {\r\n var values = this._getValue();\r\n var lastValue = values[values.length - 1];\r\n return null !== lastValue && void 0 !== lastValue ? lastValue : null\r\n },\r\n _shouldRenderSearchEvent: function() {\r\n return this.option(\"searchEnabled\") || this.option(\"acceptCustomValue\")\r\n },\r\n _searchHandler: function(e) {\r\n if (this.option(\"searchEnabled\") && !!e && !this._isTagRemoved) {\r\n this.callBase(arguments);\r\n this._setListDataSourceFilter()\r\n }\r\n this._updateWidgetHeight();\r\n delete this._isTagRemoved\r\n },\r\n _updateWidgetHeight: function() {\r\n var element = this.$element();\r\n var originalHeight = getHeight(element);\r\n this._renderInputSize();\r\n var currentHeight = getHeight(element);\r\n if (this._popup && this.option(\"opened\") && this._isEditable() && currentHeight !== originalHeight) {\r\n this._popup.repaint()\r\n }\r\n },\r\n _refreshSelected: function() {\r\n var _this$_list3;\r\n (null === (_this$_list3 = this._list) || void 0 === _this$_list3 ? void 0 : _this$_list3.getDataSource()) && this._list.option(\"selectedItems\", this._selectedItems)\r\n },\r\n _resetListDataSourceFilter: function() {\r\n var dataController = this._dataController;\r\n delete this._userFilter;\r\n dataController.filter(null);\r\n dataController.reload()\r\n },\r\n _setListDataSourceFilter: function() {\r\n if (!this.option(\"hideSelectedItems\") || !this._list) {\r\n return\r\n }\r\n var dataController = this._dataController;\r\n var valueGetterExpr = this._valueGetterExpr();\r\n if (isString(valueGetterExpr) && \"this\" !== valueGetterExpr) {\r\n var filter = this._dataSourceFilterExpr();\r\n if (void 0 === this._userFilter) {\r\n this._userFilter = dataController.filter() || null\r\n }\r\n this._userFilter && filter.push(this._userFilter);\r\n filter.length ? dataController.filter(filter) : dataController.filter(null)\r\n } else {\r\n dataController.filter(this._dataSourceFilterFunction.bind(this))\r\n }\r\n dataController.load()\r\n },\r\n _dataSourceFilterExpr: function() {\r\n var filter = [];\r\n this._getValue().forEach(value => filter.push([\"!\", [this._valueGetterExpr(), value]]));\r\n return filter\r\n },\r\n _dataSourceFilterFunction: function(itemData) {\r\n var itemValue = this._valueGetter(itemData);\r\n var result = true;\r\n each(this._getValue(), (index, value) => {\r\n if (this._isValueEquals(value, itemValue)) {\r\n result = false;\r\n return false\r\n }\r\n });\r\n return result\r\n },\r\n _dataSourceChangedHandler: function() {\r\n this._isDataSourceChanged = true;\r\n this.callBase.apply(this, arguments)\r\n },\r\n _applyButtonHandler: function(args) {\r\n this._saveValueChangeEvent(args.event);\r\n this.option(\"value\", this._getSortedListValues());\r\n this._clearTextValue();\r\n this.callBase();\r\n this._cancelSearchIfNeed()\r\n },\r\n _getSortedListValues: function() {\r\n var listValues = this._getListValues();\r\n var currentValue = this.option(\"value\") || [];\r\n var existedItems = listValues.length ? getIntersection(currentValue, listValues) : [];\r\n var newItems = existedItems.length ? removeDuplicates(listValues, currentValue) : listValues;\r\n return existedItems.concat(newItems)\r\n },\r\n _getListValues: function() {\r\n if (!this._list) {\r\n return []\r\n }\r\n return this._getPlainItems(this._list.option(\"selectedItems\")).map(item => this._valueGetter(item))\r\n },\r\n _setListDataSource: function() {\r\n var currentValue = this._getValue();\r\n this.callBase();\r\n if (currentValue !== this.option(\"value\")) {\r\n this.option(\"value\", currentValue)\r\n }\r\n this._refreshSelected()\r\n },\r\n _renderOpenedState: function() {\r\n this.callBase();\r\n if (\"useButtons\" === this.option(\"applyValueMode\") && !this.option(\"opened\")) {\r\n this._refreshSelected()\r\n }\r\n },\r\n reset: function() {\r\n this._restoreInputText();\r\n var defaultValue = this._getDefaultOptions().value;\r\n var currentValue = this.option(\"value\");\r\n if (defaultValue && 0 === defaultValue.length && currentValue && defaultValue.length === currentValue.length) {\r\n return\r\n }\r\n this.callBase()\r\n },\r\n _clean: function() {\r\n this.callBase();\r\n delete this._defaultTagTemplate;\r\n delete this._valuesToUpdate;\r\n delete this._tagTemplate\r\n },\r\n _getSelectedItemsDifference(newItems, previousItems) {\r\n if (!newItems.length) {\r\n return {\r\n addedItems: [],\r\n removedItems: previousItems.slice()\r\n }\r\n }\r\n if (!previousItems.length) {\r\n return {\r\n addedItems: newItems.slice(),\r\n removedItems: []\r\n }\r\n }\r\n var previousItemsValuesMap = previousItems.reduce((map, item) => {\r\n var value = this._valueGetter(item);\r\n map[value] = item;\r\n return map\r\n }, {});\r\n var addedItems = [];\r\n newItems.forEach(item => {\r\n var value = this._valueGetter(item);\r\n if (!previousItemsValuesMap[value]) {\r\n addedItems.push(item)\r\n }\r\n delete previousItemsValuesMap[value]\r\n });\r\n return {\r\n addedItems: addedItems,\r\n removedItems: Object.values(previousItemsValuesMap)\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n var {\r\n name: name,\r\n value: value,\r\n previousValue: previousValue\r\n } = args;\r\n switch (name) {\r\n case \"onSelectAllValueChanged\":\r\n this._initSelectAllValueChangedAction();\r\n break;\r\n case \"onMultiTagPreparing\":\r\n this._initMultiTagPreparingAction();\r\n this._renderTags();\r\n break;\r\n case \"hideSelectedItems\":\r\n if (value) {\r\n this._setListDataSourceFilter()\r\n } else {\r\n this._resetListDataSourceFilter()\r\n }\r\n break;\r\n case \"useSubmitBehavior\":\r\n this._toggleSubmitElement(value);\r\n break;\r\n case \"displayExpr\":\r\n this.callBase(args);\r\n this._initTemplates();\r\n this._invalidate();\r\n break;\r\n case \"tagTemplate\":\r\n this._initTagTemplate();\r\n this._invalidate();\r\n break;\r\n case \"selectAllText\":\r\n this._setListOption(\"selectAllText\", this.option(\"selectAllText\"));\r\n break;\r\n case \"readOnly\":\r\n case \"disabled\":\r\n this.callBase(args);\r\n !value && this._refreshEvents();\r\n break;\r\n case \"value\":\r\n this._valuesToUpdate = value;\r\n this.callBase(args);\r\n this._valuesToUpdate = void 0;\r\n this._setListDataSourceFilter();\r\n break;\r\n case \"maxDisplayedTags\":\r\n case \"showMultiTagOnly\":\r\n this._renderTags();\r\n break;\r\n case \"selectAllMode\":\r\n this._setListOption(name, value);\r\n break;\r\n case \"selectedItem\":\r\n break;\r\n case \"selectedItems\":\r\n this._selectionChangedAction(this._getSelectedItemsDifference(value, previousValue));\r\n break;\r\n case \"multiline\":\r\n this.$element().toggleClass(TAGBOX_SINGLE_LINE_CLASS, !value);\r\n this._renderSingleLineScroll();\r\n break;\r\n case \"maxFilterQueryLength\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getActualSearchValue: function() {\r\n return this.callBase() || this._searchValue()\r\n },\r\n _popupHidingHandler: function() {\r\n this.callBase();\r\n this._clearFilter()\r\n }\r\n});\r\nregisterComponent(\"dxTagBox\", TagBox);\r\nexport default TagBox;\r\n","/**\r\n * DevExtreme (esm/ui/switch.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterWidth\r\n} from \"../core/utils/size\";\r\nimport $ from \"../core/renderer\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport devices from \"../core/devices\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport Editor from \"./editor/editor\";\r\nimport {\r\n addNamespace\r\n} from \"../events/utils/index\";\r\nimport {\r\n lock\r\n} from \"../events/core/emitter.feedback\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport fx from \"../animation/fx\";\r\nimport messageLocalization from \"../localization/message\";\r\nimport {\r\n name as clickEventName\r\n} from \"../events/click\";\r\nimport Swipeable from \"../events/gesture/swipeable\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nvar SWITCH_CLASS = \"dx-switch\";\r\nvar SWITCH_WRAPPER_CLASS = SWITCH_CLASS + \"-wrapper\";\r\nvar SWITCH_CONTAINER_CLASS = SWITCH_CLASS + \"-container\";\r\nvar SWITCH_INNER_CLASS = SWITCH_CLASS + \"-inner\";\r\nvar SWITCH_HANDLE_CLASS = SWITCH_CLASS + \"-handle\";\r\nvar SWITCH_ON_VALUE_CLASS = SWITCH_CLASS + \"-on-value\";\r\nvar SWITCH_ON_CLASS = SWITCH_CLASS + \"-on\";\r\nvar SWITCH_OFF_CLASS = SWITCH_CLASS + \"-off\";\r\nvar SWITCH_ANIMATION_DURATION = 100;\r\nvar Switch = Editor.inherit({\r\n _supportedKeys: function() {\r\n var isRTL = this.option(\"rtlEnabled\");\r\n var click = function(e) {\r\n e.preventDefault();\r\n this._clickAction({\r\n event: e\r\n })\r\n };\r\n var move = function(value, e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._saveValueChangeEvent(e);\r\n this._animateValue(value)\r\n };\r\n return extend(this.callBase(), {\r\n space: click,\r\n enter: click,\r\n leftArrow: move.bind(this, isRTL ? true : false),\r\n rightArrow: move.bind(this, isRTL ? false : true)\r\n })\r\n },\r\n _useTemplates: function() {\r\n return false\r\n },\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n hoverStateEnabled: true,\r\n activeStateEnabled: true,\r\n switchedOnText: messageLocalization.format(\"dxSwitch-switchedOnText\"),\r\n switchedOffText: messageLocalization.format(\"dxSwitch-switchedOffText\"),\r\n value: false\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return this.callBase().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }])\r\n },\r\n _feedbackHideTimeout: 0,\r\n _animating: false,\r\n _initMarkup: function() {\r\n this._renderContainers();\r\n this.$element().addClass(SWITCH_CLASS).append(this._$switchWrapper);\r\n this._renderSubmitElement();\r\n this._renderClick();\r\n this.setAria(\"role\", \"button\");\r\n this._renderSwipeable();\r\n this.callBase();\r\n this._renderSwitchInner();\r\n this._renderLabels();\r\n this._renderValue()\r\n },\r\n _getInnerOffset: function(value, offset) {\r\n var ratio = (offset - this._offsetDirection() * Number(!value)) / 2;\r\n return 100 * ratio + \"%\"\r\n },\r\n _getHandleOffset: function(value, offset) {\r\n if (this.option(\"rtlEnabled\")) {\r\n value = !value\r\n }\r\n if (value) {\r\n var calcValue = 100 * -offset - 100;\r\n return calcValue + \"%\"\r\n } else {\r\n return 100 * -offset + \"%\"\r\n }\r\n },\r\n _renderSwitchInner: function() {\r\n this._$switchInner = $(\"<div>\").addClass(SWITCH_INNER_CLASS).appendTo(this._$switchContainer);\r\n this._$handle = $(\"<div>\").addClass(SWITCH_HANDLE_CLASS).appendTo(this._$switchInner)\r\n },\r\n _renderLabels: function() {\r\n this._$labelOn = $(\"<div>\").addClass(SWITCH_ON_CLASS).prependTo(this._$switchInner);\r\n this._$labelOff = $(\"<div>\").addClass(SWITCH_OFF_CLASS).appendTo(this._$switchInner);\r\n this._setLabelsText()\r\n },\r\n _renderContainers: function() {\r\n this._$switchContainer = $(\"<div>\").addClass(SWITCH_CONTAINER_CLASS);\r\n this._$switchWrapper = $(\"<div>\").addClass(SWITCH_WRAPPER_CLASS).append(this._$switchContainer)\r\n },\r\n _renderSwipeable: function() {\r\n this._createComponent(this.$element(), Swipeable, {\r\n elastic: false,\r\n immediate: true,\r\n onStart: this._swipeStartHandler.bind(this),\r\n onUpdated: this._swipeUpdateHandler.bind(this),\r\n onEnd: this._swipeEndHandler.bind(this),\r\n itemSizeFunc: this._getItemSizeFunc.bind(this)\r\n })\r\n },\r\n _getItemSizeFunc: function() {\r\n return getOuterWidth(this._$switchContainer, true) - getBoundingRect(this._$handle.get(0)).width\r\n },\r\n _renderSubmitElement: function() {\r\n this._$submitElement = $(\"<input>\").attr(\"type\", \"hidden\").appendTo(this.$element())\r\n },\r\n _getSubmitElement: function() {\r\n return this._$submitElement\r\n },\r\n _offsetDirection: function() {\r\n return this.option(\"rtlEnabled\") ? -1 : 1\r\n },\r\n _renderPosition: function(state, swipeOffset) {\r\n var innerOffset = this._getInnerOffset(state, swipeOffset);\r\n var handleOffset = this._getHandleOffset(state, swipeOffset);\r\n this._$switchInner.css(\"transform\", \" translateX(\" + innerOffset + \")\");\r\n this._$handle.css(\"transform\", \" translateX(\" + handleOffset + \")\")\r\n },\r\n _validateValue: function() {\r\n var check = this.option(\"value\");\r\n if (\"boolean\" !== typeof check) {\r\n this._options.silent(\"value\", !!check)\r\n }\r\n },\r\n _renderClick: function() {\r\n var eventName = addNamespace(clickEventName, this.NAME);\r\n var $element = this.$element();\r\n this._clickAction = this._createAction(this._clickHandler.bind(this));\r\n eventsEngine.off($element, eventName);\r\n eventsEngine.on($element, eventName, function(e) {\r\n this._clickAction({\r\n event: e\r\n })\r\n }.bind(this))\r\n },\r\n _clickHandler: function(args) {\r\n var e = args.event;\r\n this._saveValueChangeEvent(e);\r\n if (this._animating || this._swiping) {\r\n return\r\n }\r\n this._animateValue(!this.option(\"value\"))\r\n },\r\n _animateValue: function(value) {\r\n var startValue = this.option(\"value\");\r\n var endValue = value;\r\n if (startValue === endValue) {\r\n return\r\n }\r\n this._animating = true;\r\n var fromInnerOffset = this._getInnerOffset(startValue, 0);\r\n var toInnerOffset = this._getInnerOffset(endValue, 0);\r\n var fromHandleOffset = this._getHandleOffset(startValue, 0);\r\n var toHandleOffset = this._getHandleOffset(endValue, 0);\r\n var that = this;\r\n var fromInnerConfig = {};\r\n var toInnerConfig = {};\r\n var fromHandleConfig = {};\r\n var toHandlerConfig = {};\r\n fromInnerConfig.transform = \" translateX(\" + fromInnerOffset + \")\";\r\n toInnerConfig.transform = \" translateX(\" + toInnerOffset + \")\";\r\n fromHandleConfig.transform = \" translateX(\" + fromHandleOffset + \")\";\r\n toHandlerConfig.transform = \" translateX(\" + toHandleOffset + \")\";\r\n this.$element().toggleClass(SWITCH_ON_VALUE_CLASS, endValue);\r\n fx.animate(this._$handle, {\r\n from: fromHandleConfig,\r\n to: toHandlerConfig,\r\n duration: SWITCH_ANIMATION_DURATION\r\n });\r\n fx.animate(this._$switchInner, {\r\n from: fromInnerConfig,\r\n to: toInnerConfig,\r\n duration: SWITCH_ANIMATION_DURATION,\r\n complete: function() {\r\n that._animating = false;\r\n that.option(\"value\", endValue)\r\n }\r\n })\r\n },\r\n _swipeStartHandler: function(e) {\r\n var state = this.option(\"value\");\r\n var rtlEnabled = this.option(\"rtlEnabled\");\r\n var maxOffOffset = rtlEnabled ? 0 : 1;\r\n var maxOnOffset = rtlEnabled ? 1 : 0;\r\n e.event.maxLeftOffset = state ? maxOffOffset : maxOnOffset;\r\n e.event.maxRightOffset = state ? maxOnOffset : maxOffOffset;\r\n this._swiping = true;\r\n this._feedbackDeferred = new Deferred;\r\n lock(this._feedbackDeferred);\r\n this._toggleActiveState(this.$element(), this.option(\"activeStateEnabled\"))\r\n },\r\n _swipeUpdateHandler: function(e) {\r\n this._renderPosition(this.option(\"value\"), e.event.offset)\r\n },\r\n _swipeEndHandler: function(e) {\r\n var that = this;\r\n var offsetDirection = this._offsetDirection();\r\n var toInnerConfig = {};\r\n var toHandleConfig = {};\r\n var innerOffset = this._getInnerOffset(that.option(\"value\"), e.event.targetOffset);\r\n var handleOffset = this._getHandleOffset(that.option(\"value\"), e.event.targetOffset);\r\n toInnerConfig.transform = \" translateX(\" + innerOffset + \")\";\r\n toHandleConfig.transform = \" translateX(\" + handleOffset + \")\";\r\n fx.animate(this._$handle, {\r\n to: toHandleConfig,\r\n duration: SWITCH_ANIMATION_DURATION\r\n });\r\n fx.animate(this._$switchInner, {\r\n to: toInnerConfig,\r\n duration: SWITCH_ANIMATION_DURATION,\r\n complete: function() {\r\n that._swiping = false;\r\n var pos = that.option(\"value\") + offsetDirection * e.event.targetOffset;\r\n that._saveValueChangeEvent(e.event);\r\n that.option(\"value\", Boolean(pos));\r\n that._feedbackDeferred.resolve();\r\n that._toggleActiveState(that.$element(), false)\r\n }\r\n })\r\n },\r\n _renderValue: function() {\r\n this._validateValue();\r\n var val = this.option(\"value\");\r\n this._renderPosition(val, 0);\r\n this.$element().toggleClass(SWITCH_ON_VALUE_CLASS, val);\r\n this._getSubmitElement().val(val);\r\n this.setAria({\r\n pressed: val,\r\n label: val ? this.option(\"switchedOnText\") : this.option(\"switchedOffText\")\r\n })\r\n },\r\n _setLabelsText: function() {\r\n this._$labelOn && this._$labelOn.text(this.option(\"switchedOnText\"));\r\n this._$labelOff && this._$labelOff.text(this.option(\"switchedOffText\"))\r\n },\r\n _visibilityChanged: function(visible) {\r\n if (visible) {\r\n this.repaint()\r\n }\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"width\":\r\n delete this._marginBound;\r\n this._refresh();\r\n break;\r\n case \"switchedOnText\":\r\n case \"switchedOffText\":\r\n this._setLabelsText();\r\n break;\r\n case \"value\":\r\n this._renderValue();\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxSwitch\", Switch);\r\nexport default Switch;\r\n","/**\r\n * DevExtreme (esm/data/data_source.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n DataSource\r\n} from \"./data_source/data_source\";\r\nexport default DataSource;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/utils/semaphore/semaphore.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport class Semaphore {\r\n constructor() {\r\n this.counter = 0\r\n }\r\n isFree() {\r\n return 0 === this.counter\r\n }\r\n take() {\r\n this.counter += 1\r\n }\r\n release() {\r\n this.counter -= 1;\r\n if (this.counter < 0) {\r\n this.counter = 0\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointment_popup/m_form.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport \"../m_recurrence_editor\";\r\nimport \"../../../ui/text_area\";\r\nimport \"../../../ui/tag_box\";\r\nimport \"../../../ui/switch\";\r\nimport \"../../../ui/select_box\";\r\nimport devices from \"../../../core/devices\";\r\nimport $ from \"../../../core/renderer\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport dateSerialization from \"../../../core/utils/date_serialization\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport DataSource from \"../../../data/data_source\";\r\nimport messageLocalization from \"../../../localization/message\";\r\nimport {\r\n Semaphore\r\n} from \"../../../renovation/ui/scheduler/utils/semaphore/semaphore\";\r\nimport Form from \"../../../ui/form\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../m_appointment_adapter\";\r\nimport timeZoneDataUtils from \"../timezones/m_utils_timezones_data\";\r\nvar SCREEN_SIZE_OF_SINGLE_COLUMN = 600;\r\nexport var APPOINTMENT_FORM_GROUP_NAMES = {\r\n Main: \"mainGroup\",\r\n Recurrence: \"recurrenceGroup\"\r\n};\r\nvar getDateWithStartHour = (date, startDayHour) => new Date(new Date(date).setHours(startDayHour));\r\nvar validateAppointmentFormDate = (editor, value, previousValue) => {\r\n var isCurrentDateCorrect = null === value || !!value;\r\n var isPreviousDateCorrect = null === previousValue || !!previousValue;\r\n if (!isCurrentDateCorrect && isPreviousDateCorrect) {\r\n editor.option(\"value\", previousValue)\r\n }\r\n};\r\nvar updateRecurrenceItemVisibility = (recurrenceRuleExpr, value, form) => {\r\n var _a;\r\n form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \"visible\", value);\r\n !value && form.updateData(recurrenceRuleExpr, \"\");\r\n null === (_a = form.getEditor(recurrenceRuleExpr)) || void 0 === _a ? void 0 : _a.changeValueByVisibility(value)\r\n};\r\nvar createDateBoxEditor = (dataField, colSpan, firstDayOfWeek, label, onValueChanged) => ({\r\n editorType: \"dxDateBox\",\r\n dataField: dataField,\r\n colSpan: colSpan,\r\n label: {\r\n text: messageLocalization.format(label)\r\n },\r\n validationRules: [{\r\n type: \"required\"\r\n }],\r\n editorOptions: {\r\n width: \"100%\",\r\n calendarOptions: {\r\n firstDayOfWeek: firstDayOfWeek\r\n },\r\n onValueChanged: onValueChanged,\r\n useMaskBehavior: true\r\n }\r\n});\r\nexport class AppointmentForm {\r\n constructor(scheduler) {\r\n this.scheduler = scheduler;\r\n this.form = null;\r\n this.semaphore = new Semaphore\r\n }\r\n get dxForm() {\r\n return this.form\r\n }\r\n set readOnly(value) {\r\n this.form.option(\"readOnly\", value);\r\n var {\r\n recurrenceRuleExpr: recurrenceRuleExpr\r\n } = this.scheduler.getDataAccessors().expr;\r\n var recurrenceEditor = this.form.getEditor(recurrenceRuleExpr);\r\n null === recurrenceEditor || void 0 === recurrenceEditor ? void 0 : recurrenceEditor.option(\"readOnly\", value)\r\n }\r\n get formData() {\r\n return this.form.option(\"formData\")\r\n }\r\n set formData(value) {\r\n this.form.option(\"formData\", value)\r\n }\r\n create(triggerResize, changeSize, formData) {\r\n var {\r\n allowTimeZoneEditing: allowTimeZoneEditing\r\n } = this.scheduler.getEditingConfig();\r\n var {\r\n expr: expr\r\n } = this.scheduler.getDataAccessors();\r\n var recurrenceEditorVisibility = !!formData[expr.recurrenceRuleExpr];\r\n var colSpan = recurrenceEditorVisibility ? 1 : 2;\r\n var mainItems = [...this._createMainItems(expr, triggerResize, changeSize, allowTimeZoneEditing), ...this.scheduler.createResourceEditorModel()];\r\n changeSize(recurrenceEditorVisibility);\r\n var items = [{\r\n itemType: \"group\",\r\n name: APPOINTMENT_FORM_GROUP_NAMES.Main,\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 1\r\n },\r\n colSpan: colSpan,\r\n items: mainItems\r\n }, {\r\n itemType: \"group\",\r\n name: APPOINTMENT_FORM_GROUP_NAMES.Recurrence,\r\n visible: recurrenceEditorVisibility,\r\n colSpan: colSpan,\r\n items: this._createRecurrenceEditor(expr)\r\n }];\r\n var element = $(\"<div>\");\r\n this.scheduler.createComponent(element, Form, {\r\n items: items,\r\n showValidationSummary: true,\r\n scrollingEnabled: true,\r\n colCount: \"auto\",\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 1\r\n },\r\n formData: formData,\r\n showColonAfterLabel: false,\r\n labelLocation: \"top\",\r\n onInitialized: e => {\r\n this.form = e.component\r\n },\r\n customizeItem: e => {\r\n if (this.form && \"group\" === e.itemType) {\r\n var dataExprs = this.scheduler.getDataAccessors().expr;\r\n var startDate = new Date(this.formData[dataExprs.startDateExpr]);\r\n var endDate = new Date(this.formData[dataExprs.endDateExpr]);\r\n var startTimeZoneEditor = e.items.find(i => i.dataField === dataExprs.startDateTimeZoneExpr);\r\n var endTimeZoneEditor = e.items.find(i => i.dataField === dataExprs.endDateTimeZoneExpr);\r\n if (startTimeZoneEditor) {\r\n startTimeZoneEditor.editorOptions.dataSource = this.createTimeZoneDataSource(startDate)\r\n }\r\n if (endTimeZoneEditor) {\r\n endTimeZoneEditor.editorOptions.dataSource = this.createTimeZoneDataSource(endDate)\r\n }\r\n }\r\n },\r\n screenByWidth: width => width < SCREEN_SIZE_OF_SINGLE_COLUMN || \"desktop\" !== devices.current().deviceType ? \"xs\" : \"lg\"\r\n })\r\n }\r\n createTimeZoneDataSource(date) {\r\n return new DataSource({\r\n store: timeZoneDataUtils.getDisplayedTimeZones(date),\r\n paginate: true,\r\n pageSize: 10\r\n })\r\n }\r\n _createAppointmentAdapter(rawAppointment) {\r\n return createAppointmentAdapter(rawAppointment, this.scheduler.getDataAccessors())\r\n }\r\n _dateBoxValueChanged(args, dateExpr, isNeedCorrect) {\r\n validateAppointmentFormDate(args.component, args.value, args.previousValue);\r\n var value = dateSerialization.deserializeDate(args.value);\r\n var previousValue = dateSerialization.deserializeDate(args.previousValue);\r\n var dateEditor = this.form.getEditor(dateExpr);\r\n var dateValue = dateSerialization.deserializeDate(dateEditor.option(\"value\"));\r\n if (this.semaphore.isFree() && dateValue && value && isNeedCorrect(dateValue, value)) {\r\n var duration = previousValue ? dateValue.getTime() - previousValue.getTime() : 0;\r\n dateEditor.option(\"value\", new Date(value.getTime() + duration))\r\n }\r\n }\r\n _createTimezoneEditor(timeZoneExpr, secondTimeZoneExpr, visibleIndex, colSpan, isMainTimeZone) {\r\n var visible = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : false;\r\n var noTzTitle = messageLocalization.format(\"dxScheduler-noTimezoneTitle\");\r\n return {\r\n dataField: timeZoneExpr,\r\n editorType: \"dxSelectBox\",\r\n visibleIndex: visibleIndex,\r\n colSpan: colSpan,\r\n label: {\r\n text: \" \"\r\n },\r\n editorOptions: {\r\n displayExpr: \"title\",\r\n valueExpr: \"id\",\r\n placeholder: noTzTitle,\r\n searchEnabled: true,\r\n onValueChanged: args => {\r\n var {\r\n form: form\r\n } = this;\r\n var secondTimezoneEditor = form.getEditor(secondTimeZoneExpr);\r\n if (isMainTimeZone) {\r\n secondTimezoneEditor.option(\"value\", args.value)\r\n }\r\n }\r\n },\r\n visible: visible\r\n }\r\n }\r\n _createDateBoxItems(dataExprs, allowTimeZoneEditing) {\r\n var colSpan = allowTimeZoneEditing ? 2 : 1;\r\n var firstDayOfWeek = this.scheduler.getFirstDayOfWeek();\r\n return [createDateBoxEditor(dataExprs.startDateExpr, colSpan, firstDayOfWeek, \"dxScheduler-editorLabelStartDate\", args => {\r\n this._dateBoxValueChanged(args, dataExprs.endDateExpr, (endValue, startValue) => endValue < startValue)\r\n }), this._createTimezoneEditor(dataExprs.startDateTimeZoneExpr, dataExprs.endDateTimeZoneExpr, 1, colSpan, true, allowTimeZoneEditing), createDateBoxEditor(dataExprs.endDateExpr, colSpan, firstDayOfWeek, \"dxScheduler-editorLabelEndDate\", args => {\r\n this._dateBoxValueChanged(args, dataExprs.startDateExpr, (startValue, endValue) => endValue < startValue)\r\n }), this._createTimezoneEditor(dataExprs.endDateTimeZoneExpr, dataExprs.startDateTimeZoneExpr, 3, colSpan, false, allowTimeZoneEditing)]\r\n }\r\n _changeFormItemDateType(itemPath, isAllDay) {\r\n var itemEditorOptions = this.form.itemOption(itemPath).editorOptions;\r\n var type = isAllDay ? \"date\" : \"datetime\";\r\n var newEditorOption = _extends(_extends({}, itemEditorOptions), {\r\n type: type\r\n });\r\n this.form.itemOption(itemPath, \"editorOptions\", newEditorOption)\r\n }\r\n _createMainItems(dataExprs, triggerResize, changeSize, allowTimeZoneEditing) {\r\n return [{\r\n dataField: dataExprs.textExpr,\r\n editorType: \"dxTextBox\",\r\n colSpan: 2,\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-editorLabelTitle\")\r\n }\r\n }, {\r\n itemType: \"group\",\r\n colSpan: 2,\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 1\r\n },\r\n items: this._createDateBoxItems(dataExprs, allowTimeZoneEditing)\r\n }, {\r\n itemType: \"group\",\r\n colSpan: 2,\r\n colCountByScreen: {\r\n lg: 2,\r\n xs: 2\r\n },\r\n items: [{\r\n dataField: dataExprs.allDayExpr,\r\n cssClass: \"dx-appointment-form-switch\",\r\n editorType: \"dxSwitch\",\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-allDay\"),\r\n location: \"right\"\r\n },\r\n editorOptions: {\r\n onValueChanged: args => {\r\n var {\r\n value: value\r\n } = args;\r\n var startDateEditor = this.form.getEditor(dataExprs.startDateExpr);\r\n var endDateEditor = this.form.getEditor(dataExprs.endDateExpr);\r\n var startDate = dateSerialization.deserializeDate(startDateEditor.option(\"value\"));\r\n var endDate = dateSerialization.deserializeDate(endDateEditor.option(\"value\"));\r\n if (this.semaphore.isFree() && startDate) {\r\n if (value) {\r\n var allDayStartDate = dateUtils.trimTime(startDate);\r\n var allDayEndDate = dateUtils.trimTime(endDate);\r\n startDateEditor.option(\"value\", new Date(allDayStartDate));\r\n endDateEditor.option(\"value\", new Date(allDayEndDate))\r\n } else {\r\n var startDateWithStartHour = getDateWithStartHour(startDate, this.scheduler.getStartDayHour());\r\n var endDateWithStartHour = getDateWithStartHour(endDate, this.scheduler.getStartDayHour());\r\n var calculatedEndDate = this.scheduler.getCalculatedEndDate(endDateWithStartHour);\r\n startDateEditor.option(\"value\", startDateWithStartHour);\r\n endDateEditor.option(\"value\", calculatedEndDate)\r\n }\r\n }\r\n var startDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Main, \".\").concat(dataExprs.startDateExpr);\r\n var endDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Main, \".\").concat(dataExprs.endDateExpr);\r\n this._changeFormItemDateType(startDateItemPath, value);\r\n this._changeFormItemDateType(endDateItemPath, value)\r\n }\r\n }\r\n }, {\r\n editorType: \"dxSwitch\",\r\n dataField: \"repeat\",\r\n cssClass: \"dx-appointment-form-switch\",\r\n name: \"visibilityChanged\",\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-editorLabelRecurrence\"),\r\n location: \"right\"\r\n },\r\n editorOptions: {\r\n onValueChanged: args => {\r\n var {\r\n form: form\r\n } = this;\r\n var colSpan = args.value ? 1 : 2;\r\n form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Main, \"colSpan\", colSpan);\r\n form.itemOption(APPOINTMENT_FORM_GROUP_NAMES.Recurrence, \"colSpan\", colSpan);\r\n updateRecurrenceItemVisibility(dataExprs.recurrenceRuleExpr, args.value, form);\r\n changeSize(args.value);\r\n triggerResize()\r\n }\r\n }\r\n }]\r\n }, {\r\n itemType: \"empty\",\r\n colSpan: 2\r\n }, {\r\n dataField: dataExprs.descriptionExpr,\r\n editorType: \"dxTextArea\",\r\n colSpan: 2,\r\n label: {\r\n text: messageLocalization.format(\"dxScheduler-editorLabelDescription\")\r\n }\r\n }, {\r\n itemType: \"empty\",\r\n colSpan: 2\r\n }]\r\n }\r\n _createRecurrenceEditor(dataExprs) {\r\n return [{\r\n dataField: dataExprs.recurrenceRuleExpr,\r\n editorType: \"dxRecurrenceEditor\",\r\n editorOptions: {\r\n firstDayOfWeek: this.scheduler.getFirstDayOfWeek(),\r\n timeZoneCalculator: this.scheduler.getTimeZoneCalculator(),\r\n getStartDateTimeZone: () => this._createAppointmentAdapter(this.formData).startDateTimeZone\r\n },\r\n label: {\r\n text: \" \",\r\n visible: false\r\n }\r\n }]\r\n }\r\n setEditorsType(allDay) {\r\n var {\r\n startDateExpr: startDateExpr,\r\n endDateExpr: endDateExpr\r\n } = this.scheduler.getDataAccessors().expr;\r\n var startDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Main, \".\").concat(startDateExpr);\r\n var endDateItemPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES.Main, \".\").concat(endDateExpr);\r\n var startDateFormItem = this.form.itemOption(startDateItemPath);\r\n var endDateFormItem = this.form.itemOption(endDateItemPath);\r\n if (startDateFormItem && endDateFormItem) {\r\n var startDateEditorOptions = startDateFormItem.editorOptions;\r\n var endDateEditorOptions = endDateFormItem.editorOptions;\r\n startDateEditorOptions.type = endDateEditorOptions.type = allDay ? \"date\" : \"datetime\";\r\n this.form.itemOption(startDateItemPath, \"editorOptions\", startDateEditorOptions);\r\n this.form.itemOption(endDateItemPath, \"editorOptions\", endDateEditorOptions)\r\n }\r\n }\r\n updateRecurrenceEditorStartDate(date, expression) {\r\n var options = {\r\n startDate: date\r\n };\r\n this.setEditorOptions(expression, \"Recurrence\", options)\r\n }\r\n setEditorOptions(name, groupName, options) {\r\n var editorPath = \"\".concat(APPOINTMENT_FORM_GROUP_NAMES[groupName], \".\").concat(name);\r\n var editor = this.form.itemOption(editorPath);\r\n editor && this.form.itemOption(editorPath, \"editorOptions\", extend({}, editor.editorOptions, options))\r\n }\r\n setTimeZoneEditorDataSource(date, path) {\r\n var dataSource = this.createTimeZoneDataSource(date);\r\n this.setEditorOptions(path, \"Main\", {\r\n dataSource: dataSource\r\n })\r\n }\r\n updateFormData(formData) {\r\n this.semaphore.take();\r\n this.form.option(\"formData\", formData);\r\n var dataExprs = this.scheduler.getDataAccessors().expr;\r\n var allDay = formData[dataExprs.allDayExpr];\r\n var startDate = new Date(formData[dataExprs.startDateExpr]);\r\n var endDate = new Date(formData[dataExprs.endDateExpr]);\r\n this.setTimeZoneEditorDataSource(startDate, dataExprs.startDateTimeZoneExpr);\r\n this.setTimeZoneEditorDataSource(endDate, dataExprs.endDateTimeZoneExpr);\r\n this.updateRecurrenceEditorStartDate(startDate, dataExprs.recurrenceRuleExpr);\r\n this.setEditorsType(allDay);\r\n this.semaphore.release()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment_edit_form/popup_config.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport messageLocalization from \"../../../../localization/message\";\r\nimport devices from \"../../../../core/devices\";\r\nimport {\r\n getWidth\r\n} from \"../../../../core/utils/size\";\r\nimport {\r\n getWindow\r\n} from \"../../../../core/utils/window\";\r\nexport var POPUP_WIDTH = {\r\n DEFAULT: 485,\r\n RECURRENCE: 970,\r\n FULLSCREEN: 1e3,\r\n MOBILE: {\r\n DEFAULT: 350,\r\n FULLSCREEN: 500\r\n }\r\n};\r\nexport var defaultAnimation = {\r\n show: {\r\n type: \"pop\",\r\n duration: 300,\r\n from: {\r\n scale: .55\r\n }\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 300,\r\n to: {\r\n opacity: 0,\r\n scale: .55\r\n },\r\n from: {\r\n opacity: 1,\r\n scale: 1\r\n }\r\n }\r\n};\r\nvar isMobile = () => \"desktop\" !== devices.current().deviceType;\r\nvar isIOSPlatform = () => \"ios\" === devices.current().platform;\r\nvar TOOLBAR_LOCATION = {\r\n AFTER: \"after\",\r\n BEFORE: \"before\"\r\n};\r\nvar getButtonsConfig = () => ({\r\n doneButton: {\r\n shortcut: \"done\",\r\n options: {\r\n text: messageLocalization.format(\"Done\")\r\n },\r\n location: TOOLBAR_LOCATION.AFTER\r\n },\r\n cancelButton: {\r\n shortcut: \"cancel\",\r\n location: isIOSPlatform() ? TOOLBAR_LOCATION.BEFORE : TOOLBAR_LOCATION.AFTER\r\n }\r\n});\r\nexport var getPopupToolbarItems = (allowUpdating, doneClick) => {\r\n var result = [];\r\n var buttonsConfig = getButtonsConfig();\r\n if (allowUpdating) {\r\n result.push(_extends({}, buttonsConfig.doneButton, {\r\n onClick: doneClick\r\n }))\r\n }\r\n result.push(buttonsConfig.cancelButton);\r\n return result\r\n};\r\nexport var isPopupFullScreenNeeded = () => {\r\n var window = getWindow();\r\n var width = window && getWidth(window);\r\n if (width) {\r\n return isMobile() ? width < POPUP_WIDTH.MOBILE.FULLSCREEN : width < POPUP_WIDTH.FULLSCREEN\r\n }\r\n return false\r\n};\r\nexport var getMaxWidth = isRecurrence => {\r\n if (isMobile()) {\r\n return POPUP_WIDTH.MOBILE.DEFAULT\r\n }\r\n return isRecurrence ? POPUP_WIDTH.RECURRENCE : POPUP_WIDTH.DEFAULT\r\n};\r\nexport var getPopupSize = isRecurrence => ({\r\n fullScreen: isPopupFullScreenNeeded(),\r\n maxWidth: getMaxWidth(isRecurrence)\r\n});\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_loading.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n value as viewPort\r\n} from \"../../core/utils/view_port\";\r\nimport LoadPanel from \"../../ui/load_panel\";\r\nvar loading = null;\r\nvar createLoadPanel = function(options) {\r\n return new LoadPanel($(\"<div>\").appendTo(options && options.container || viewPort()), options)\r\n};\r\nvar removeLoadPanel = function() {\r\n if (!loading) {\r\n return\r\n }\r\n loading.$element().remove();\r\n loading = null\r\n};\r\nexport function show(options) {\r\n removeLoadPanel();\r\n loading = createLoadPanel(options);\r\n return loading.show()\r\n}\r\nexport function hide() {\r\n if (!loading) {\r\n return (new Deferred).resolve()\r\n }\r\n return loading.hide().done(removeLoadPanel).promise()\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointment_popup/m_popup.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport devices from \"../../../core/devices\";\r\nimport $ from \"../../../core/renderer\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../../core/utils/deferred\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../../../events/visibility_change\";\r\nimport {\r\n getMaxWidth,\r\n getPopupToolbarItems,\r\n isPopupFullScreenNeeded\r\n} from \"../../../renovation/ui/scheduler/appointment_edit_form/popup_config\";\r\nimport Popup from \"../../../ui/popup/ui.popup\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../m_appointment_adapter\";\r\nimport {\r\n hide as hideLoading,\r\n show as showLoading\r\n} from \"../m_loading\";\r\nimport {\r\n getNormalizedResources\r\n} from \"../resources/m_utils\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar APPOINTMENT_POPUP_CLASS = \"dx-scheduler-appointment-popup\";\r\nvar DAY_IN_MS = toMs(\"day\");\r\nvar POPUP_CONFIG = {\r\n height: \"auto\",\r\n maxHeight: \"100%\",\r\n showCloseButton: false,\r\n showTitle: false,\r\n preventScrollEvents: false,\r\n enableBodyScroll: false,\r\n defaultOptionsRules: [{\r\n device: () => devices.current().android,\r\n options: {\r\n showTitle: false\r\n }\r\n }]\r\n};\r\nexport var ACTION_TO_APPOINTMENT = {\r\n CREATE: 0,\r\n UPDATE: 1,\r\n EXCLUDE_FROM_SERIES: 2\r\n};\r\nexport class AppointmentPopup {\r\n constructor(scheduler, form) {\r\n this.scheduler = scheduler;\r\n this.form = form;\r\n this.popup = null;\r\n this.state = {\r\n action: null,\r\n lastEditData: null,\r\n saveChangesLocker: false,\r\n appointment: {\r\n data: null\r\n }\r\n }\r\n }\r\n get visible() {\r\n return this.popup ? this.popup.option(\"visible\") : false\r\n }\r\n show(appointment, config) {\r\n this.state.appointment.data = appointment;\r\n this.state.action = config.action;\r\n this.state.excludeInfo = config.excludeInfo;\r\n if (!this.popup) {\r\n var popupConfig = this._createPopupConfig();\r\n this.popup = this._createPopup(popupConfig)\r\n }\r\n this.popup.option(\"toolbarItems\", getPopupToolbarItems(config.isToolbarVisible, e => this._doneButtonClickHandler(e)));\r\n this.popup.show()\r\n }\r\n hide() {\r\n this.popup.hide()\r\n }\r\n dispose() {\r\n var _a;\r\n null === (_a = this.popup) || void 0 === _a ? void 0 : _a.$element().remove()\r\n }\r\n _createPopup(options) {\r\n var popupElement = $(\"<div>\").addClass(APPOINTMENT_POPUP_CLASS).appendTo(this.scheduler.getElement());\r\n return this.scheduler.createComponent(popupElement, Popup, options)\r\n }\r\n _createPopupConfig() {\r\n return _extends(_extends({}, POPUP_CONFIG), {\r\n onHiding: () => this.scheduler.focus(),\r\n contentTemplate: () => this._createPopupContent(),\r\n onShowing: e => this._onShowing(e),\r\n wrapperAttr: {\r\n class: APPOINTMENT_POPUP_CLASS\r\n }\r\n })\r\n }\r\n _onShowing(e) {\r\n this._updateForm();\r\n var arg = {\r\n form: this.form.dxForm,\r\n popup: this.popup,\r\n appointmentData: this.state.appointment.data,\r\n cancel: false\r\n };\r\n this.scheduler.getAppointmentFormOpening()(arg);\r\n this.scheduler.processActionResult(arg, canceled => {\r\n if (canceled) {\r\n e.cancel = true\r\n } else {\r\n this.updatePopupFullScreenMode()\r\n }\r\n })\r\n }\r\n _createPopupContent() {\r\n this._createForm();\r\n return this.form.dxForm.$element()\r\n }\r\n _createFormData(rawAppointment) {\r\n var appointment = this._createAppointmentAdapter(rawAppointment);\r\n var dataAccessors = this.scheduler.getDataAccessors();\r\n var resources = this.scheduler.getResources();\r\n var normalizedResources = getNormalizedResources(rawAppointment, dataAccessors, resources);\r\n return _extends(_extends(_extends({}, rawAppointment), normalizedResources), {\r\n repeat: !!appointment.recurrenceRule\r\n })\r\n }\r\n _createForm() {\r\n var rawAppointment = this.state.appointment.data;\r\n var formData = this._createFormData(rawAppointment);\r\n this.form.create(this.triggerResize.bind(this), this.changeSize.bind(this), formData)\r\n }\r\n _isReadOnly(rawAppointment) {\r\n var appointment = this._createAppointmentAdapter(rawAppointment);\r\n if (rawAppointment && appointment.disabled) {\r\n return true\r\n }\r\n if (this.state.action === ACTION_TO_APPOINTMENT.CREATE) {\r\n return false\r\n }\r\n return !this.scheduler.getEditingConfig().allowUpdating\r\n }\r\n _createAppointmentAdapter(rawAppointment) {\r\n return createAppointmentAdapter(rawAppointment, this.scheduler.getDataAccessors(), this.scheduler.getTimeZoneCalculator())\r\n }\r\n _updateForm() {\r\n var {\r\n data: data\r\n } = this.state.appointment;\r\n var appointment = this._createAppointmentAdapter(this._createFormData(data));\r\n if (appointment.startDate) {\r\n appointment.startDate = appointment.calculateStartDate(\"toAppointment\")\r\n }\r\n if (appointment.endDate) {\r\n appointment.endDate = appointment.calculateEndDate(\"toAppointment\")\r\n }\r\n var formData = appointment.source();\r\n this.form.readOnly = this._isReadOnly(formData);\r\n this.form.updateFormData(formData)\r\n }\r\n triggerResize() {\r\n if (this.popup) {\r\n triggerResizeEvent(this.popup.$element())\r\n }\r\n }\r\n changeSize(isRecurrence) {\r\n if (this.popup) {\r\n var isFullScreen = isPopupFullScreenNeeded();\r\n var maxWidth = isFullScreen ? \"100%\" : getMaxWidth(isRecurrence);\r\n this.popup.option(\"fullScreen\", isFullScreen);\r\n this.popup.option(\"maxWidth\", maxWidth)\r\n }\r\n }\r\n updatePopupFullScreenMode() {\r\n if (this.form.dxForm) {\r\n var {\r\n formData: formData\r\n } = this.form;\r\n var isRecurrence = formData[this.scheduler.getDataAccessors().expr.recurrenceRuleExpr];\r\n if (this.visible) {\r\n this.changeSize(isRecurrence)\r\n }\r\n }\r\n }\r\n saveChangesAsync(isShowLoadPanel) {\r\n var deferred = new Deferred;\r\n var validation = this.form.dxForm.validate();\r\n isShowLoadPanel && this._showLoadPanel();\r\n when(validation && validation.complete || validation).done(validation => {\r\n if (validation && !validation.isValid) {\r\n hideLoading();\r\n deferred.resolve(false);\r\n return\r\n }\r\n var adapter = this._createAppointmentAdapter(this.form.formData);\r\n var clonedAdapter = adapter.clone({\r\n pathTimeZone: \"fromAppointment\"\r\n });\r\n this._addMissingDSTTime(adapter, clonedAdapter);\r\n var appointment = clonedAdapter.source();\r\n delete appointment.repeat;\r\n switch (this.state.action) {\r\n case ACTION_TO_APPOINTMENT.CREATE:\r\n this.scheduler.addAppointment(appointment).done(deferred.resolve);\r\n break;\r\n case ACTION_TO_APPOINTMENT.UPDATE:\r\n this.scheduler.updateAppointment(this.state.appointment.data, appointment).done(deferred.resolve);\r\n break;\r\n case ACTION_TO_APPOINTMENT.EXCLUDE_FROM_SERIES:\r\n this.scheduler.updateAppointment(this.state.excludeInfo.sourceAppointment, this.state.excludeInfo.updatedAppointment);\r\n this.scheduler.addAppointment(appointment).done(deferred.resolve)\r\n }\r\n deferred.done(() => {\r\n hideLoading();\r\n this.state.lastEditData = appointment\r\n })\r\n });\r\n return deferred.promise()\r\n }\r\n _doneButtonClickHandler(e) {\r\n e.cancel = true;\r\n this.saveEditDataAsync()\r\n }\r\n saveEditDataAsync() {\r\n var deferred = new Deferred;\r\n if (this._tryLockSaveChanges()) {\r\n when(this.saveChangesAsync(true)).done(() => {\r\n if (this.state.lastEditData) {\r\n var adapter = this._createAppointmentAdapter(this.state.lastEditData);\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay\r\n } = adapter;\r\n var startTime = startDate.getTime();\r\n var endTime = endDate.getTime();\r\n var inAllDayRow = allDay || endTime - startTime >= DAY_IN_MS;\r\n var dataAccessors = this.scheduler.getDataAccessors();\r\n var resourceList = this.scheduler.getResources();\r\n var normalizedResources = getNormalizedResources(this.state.lastEditData, dataAccessors, resourceList);\r\n this.scheduler.updateScrollPosition(startDate, normalizedResources, inAllDayRow);\r\n this.state.lastEditData = null\r\n }\r\n this._unlockSaveChanges();\r\n deferred.resolve()\r\n })\r\n }\r\n return deferred.promise()\r\n }\r\n _showLoadPanel() {\r\n var container = this.popup.$overlayContent();\r\n showLoading({\r\n container: container,\r\n position: {\r\n of: container\r\n }\r\n })\r\n }\r\n _tryLockSaveChanges() {\r\n if (false === this.state.saveChangesLocker) {\r\n this.state.saveChangesLocker = true;\r\n return true\r\n }\r\n return false\r\n }\r\n _unlockSaveChanges() {\r\n this.state.saveChangesLocker = false\r\n }\r\n _addMissingDSTTime(formAppointmentAdapter, clonedAppointmentAdapter) {\r\n var timeZoneCalculator = this.scheduler.getTimeZoneCalculator();\r\n clonedAppointmentAdapter.startDate = this._addMissingDSTShiftToDate(timeZoneCalculator, formAppointmentAdapter.startDate, clonedAppointmentAdapter.startDate);\r\n if (clonedAppointmentAdapter.endDate) {\r\n clonedAppointmentAdapter.endDate = this._addMissingDSTShiftToDate(timeZoneCalculator, formAppointmentAdapter.endDate, clonedAppointmentAdapter.endDate)\r\n }\r\n }\r\n _addMissingDSTShiftToDate(timeZoneCalculator, originFormDate, clonedDate) {\r\n var _a, _b;\r\n var originTimezoneShift = null === (_a = timeZoneCalculator.getOffsets(originFormDate)) || void 0 === _a ? void 0 : _a.common;\r\n var clonedTimezoneShift = null === (_b = timeZoneCalculator.getOffsets(clonedDate)) || void 0 === _b ? void 0 : _b.common;\r\n var shiftDifference = originTimezoneShift - clonedTimezoneShift;\r\n return shiftDifference ? new Date(clonedDate.getTime() + shiftDifference * toMs(\"hour\")) : clonedDate\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/utils/filtering/getDatesWithoutTime.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../core/utils/date\";\r\nvar getDatesWithoutTime = (min, max) => {\r\n var newMin = dateUtils.trimTime(min);\r\n var newMax = dateUtils.trimTime(max);\r\n newMax.setDate(newMax.getDate() + 1);\r\n return [newMin, newMax]\r\n};\r\nexport default getDatesWithoutTime;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/utils/filtering/remote.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n equalByValue\r\n} from \"../../../../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../../../../core/utils/extend\";\r\nimport dateSerialization from \"../../../../../core/utils/date_serialization\";\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../../../../core/utils/type\";\r\nimport getDatesWithoutTime from \"./getDatesWithoutTime\";\r\nvar FilterPosition = {\r\n dateFilter: 0,\r\n userFilter: 1\r\n};\r\nclass RemoteFilterCombiner {\r\n constructor(options) {\r\n this.options = options\r\n }\r\n get dataAccessors() {\r\n return this.options.dataAccessors\r\n }\r\n get dataSourceFilter() {\r\n return this.options.dataSourceFilter\r\n }\r\n get dateSerializationFormat() {\r\n return this.options.dateSerializationFormat\r\n }\r\n get forceIsoDateParsing() {\r\n return isDefined(this.options.forceIsoDateParsing) ? this.options.forceIsoDateParsing : true\r\n }\r\n makeDateFilter(min, max) {\r\n var {\r\n endDateExpr: endDateExpr,\r\n recurrenceRuleExpr: recurrenceRuleExpr,\r\n startDateExpr: startDateExpr\r\n } = this.dataAccessors.expr;\r\n var dateFilter = [\r\n [\r\n [endDateExpr, \">=\", min],\r\n [startDateExpr, \"<\", max]\r\n ], \"or\", [recurrenceRuleExpr, \"startswith\", \"freq\"], \"or\", [\r\n [endDateExpr, min],\r\n [startDateExpr, min]\r\n ]\r\n ];\r\n if (!recurrenceRuleExpr) {\r\n dateFilter.splice(1, 2)\r\n }\r\n return dateFilter\r\n }\r\n combineFilters(dateFilter, userFilter) {\r\n var combinedFilter = [];\r\n dateFilter && combinedFilter.push(dateFilter);\r\n userFilter && combinedFilter.push(userFilter);\r\n return this.serializeRemoteFilter(combinedFilter)\r\n }\r\n serializeRemoteFilter(combinedFilter) {\r\n if (!Array.isArray(combinedFilter)) {\r\n return combinedFilter\r\n }\r\n var {\r\n endDateExpr: endDateExpr,\r\n startDateExpr: startDateExpr\r\n } = this.dataAccessors.expr;\r\n var filter = extend([], combinedFilter);\r\n if (isString(filter[0])) {\r\n if (this.forceIsoDateParsing && filter.length > 1) {\r\n if (filter[0] === startDateExpr || filter[0] === endDateExpr) {\r\n var lastFilterValue = filter[filter.length - 1];\r\n filter[filter.length - 1] = dateSerialization.serializeDate(new Date(lastFilterValue), this.dateSerializationFormat)\r\n }\r\n }\r\n }\r\n for (var i = 0; i < filter.length; i += 1) {\r\n filter[i] = this.serializeRemoteFilter(filter[i])\r\n }\r\n return filter\r\n }\r\n getUserFilter(dateFilter) {\r\n if (!this.dataSourceFilter || equalByValue(this.dataSourceFilter, dateFilter)) {\r\n return\r\n }\r\n var containsDateFilter = this.dataSourceFilter.length > 0 && equalByValue(this.dataSourceFilter[FilterPosition.dateFilter], dateFilter);\r\n var userFilter = containsDateFilter ? this.dataSourceFilter[FilterPosition.userFilter] : this.dataSourceFilter;\r\n return userFilter\r\n }\r\n combine(min, max) {\r\n var [trimMin, trimMax] = getDatesWithoutTime(min, max);\r\n var dateFilter = this.makeDateFilter(trimMin, trimMax);\r\n var userFilter = this.getUserFilter(dateFilter);\r\n var combinedFilter = this.combineFilters(dateFilter, userFilter);\r\n return combinedFilter\r\n }\r\n}\r\nvar combineRemoteFilter = options => new RemoteFilterCombiner(options).combine(options.min, options.max);\r\nexport default combineRemoteFilter;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/data_provider/m_appointment_data_source.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n Deferred\r\n} from \"../../../../core/utils/deferred\";\r\nvar STORE_EVENTS = {\r\n updating: \"updating\",\r\n push: \"push\"\r\n};\r\nexport class AppointmentDataSource {\r\n constructor(dataSource) {\r\n this.setDataSource(dataSource);\r\n this._updatedAppointmentKeys = []\r\n }\r\n get keyName() {\r\n var store = this._dataSource.store();\r\n return store.key()\r\n }\r\n get isDataSourceInit() {\r\n return !!this._dataSource\r\n }\r\n _getStoreKey(target) {\r\n var store = this._dataSource.store();\r\n return store.keyOf(target)\r\n }\r\n setDataSource(dataSource) {\r\n this._dataSource = dataSource;\r\n this.cleanState();\r\n this._initStoreChangeHandlers()\r\n }\r\n _initStoreChangeHandlers() {\r\n var dataSource = this._dataSource;\r\n var store = null === dataSource || void 0 === dataSource ? void 0 : dataSource.store();\r\n if (store) {\r\n store.on(STORE_EVENTS.updating, key => {\r\n var keyName = store.key();\r\n if (keyName) {\r\n this._updatedAppointmentKeys.push({\r\n key: keyName,\r\n value: key\r\n })\r\n } else {\r\n this._updatedAppointment = key\r\n }\r\n });\r\n store.on(STORE_EVENTS.push, pushItems => {\r\n var items = dataSource.items();\r\n var keyName = store.key();\r\n pushItems.forEach(pushItem => {\r\n var itemExists = 0 !== items.filter(item => item[keyName] === pushItem.key).length;\r\n if (itemExists) {\r\n this._updatedAppointmentKeys.push({\r\n key: keyName,\r\n value: pushItem.key\r\n })\r\n } else {\r\n var {\r\n data: data\r\n } = pushItem;\r\n data && items.push(data)\r\n }\r\n });\r\n dataSource.load()\r\n })\r\n }\r\n }\r\n getUpdatedAppointment() {\r\n return this._updatedAppointment\r\n }\r\n getUpdatedAppointmentKeys() {\r\n return this._updatedAppointmentKeys\r\n }\r\n cleanState() {\r\n this._updatedAppointment = null;\r\n this._updatedAppointmentKeys = []\r\n }\r\n add(rawAppointment) {\r\n return this._dataSource.store().insert(rawAppointment).done(() => this._dataSource.load())\r\n }\r\n update(target, data) {\r\n var key = this._getStoreKey(target);\r\n var d = new Deferred;\r\n this._dataSource.store().update(key, data).done(result => this._dataSource.load().done(() => d.resolve(result)).fail(d.reject)).fail(d.reject);\r\n return d.promise()\r\n }\r\n remove(rawAppointment) {\r\n var key = this._getStoreKey(rawAppointment);\r\n return this._dataSource.store().remove(key).done(() => this._dataSource.load())\r\n }\r\n destroy() {\r\n var _a;\r\n var store = null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.store();\r\n if (store) {\r\n store.off(STORE_EVENTS.updating);\r\n store.off(STORE_EVENTS.push)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/data_provider/m_appointment_filter.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n wrapToArray\r\n} from \"../../../../core/utils/array\";\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n each,\r\n map\r\n} from \"../../../../core/utils/iterator\";\r\nimport {\r\n isDefined,\r\n isFunction\r\n} from \"../../../../core/utils/type\";\r\nimport query from \"../../../../data/query\";\r\nimport {\r\n getAppointmentTakesAllDay\r\n} from \"../../../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay\";\r\nimport {\r\n hasResourceValue\r\n} from \"../../../../renovation/ui/scheduler/resources/hasResourceValue\";\r\nimport getDatesWithoutTime from \"../../../../renovation/ui/scheduler/utils/filtering/getDatesWithoutTime\";\r\nimport {\r\n isDateAndTimeView as calculateIsDateAndTimeView,\r\n isTimelineView\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../../m_appointment_adapter\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"../../m_recurrence\";\r\nimport {\r\n getResourcesDataByGroups\r\n} from \"../../resources/m_utils\";\r\nimport {\r\n _appointmentPartInInterval,\r\n compareDateWithEndDayHour,\r\n compareDateWithStartDayHour,\r\n getAppointmentTakesSeveralDays,\r\n getRecurrenceException\r\n} from \"./m_utils\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar FilterStrategies = {\r\n virtual: \"virtual\",\r\n standard: \"standard\"\r\n};\r\nexport class AppointmentFilterBaseStrategy {\r\n constructor(options) {\r\n this.options = options;\r\n this.dataAccessors = this.options.dataAccessors;\r\n this._init()\r\n }\r\n get strategyName() {\r\n return FilterStrategies.standard\r\n }\r\n get timeZoneCalculator() {\r\n return this.options.timeZoneCalculator\r\n }\r\n get viewStartDayHour() {\r\n return this.options.startDayHour\r\n }\r\n get viewEndDayHour() {\r\n return this.options.endDayHour\r\n }\r\n get timezone() {\r\n return this.options.timezone\r\n }\r\n get firstDayOfWeek() {\r\n return this.options.firstDayOfWeek\r\n }\r\n get showAllDayPanel() {\r\n return this.options.showAllDayPanel\r\n }\r\n get loadedResources() {\r\n return this._resolveOption(\"loadedResources\")\r\n }\r\n get supportAllDayRow() {\r\n return this._resolveOption(\"supportAllDayRow\")\r\n }\r\n get viewType() {\r\n return this._resolveOption(\"viewType\")\r\n }\r\n get viewDirection() {\r\n return this._resolveOption(\"viewDirection\")\r\n }\r\n get dateRange() {\r\n return this._resolveOption(\"dateRange\")\r\n }\r\n get groupCount() {\r\n return this._resolveOption(\"groupCount\")\r\n }\r\n get viewDataProvider() {\r\n return this._resolveOption(\"viewDataProvider\")\r\n }\r\n get allDayPanelMode() {\r\n return this._resolveOption(\"allDayPanelMode\")\r\n }\r\n _resolveOption(name) {\r\n var result = this.options[name];\r\n return \"function\" === typeof result ? result() : result\r\n }\r\n _init() {\r\n this.setDataAccessors(this.dataAccessors)\r\n }\r\n filter(preparedItems) {\r\n var {\r\n dateRange: dateRange\r\n } = this;\r\n var allDay;\r\n if (!this.showAllDayPanel && this.supportAllDayRow) {\r\n allDay = false\r\n }\r\n return this.filterLoadedAppointments({\r\n startDayHour: this.viewStartDayHour,\r\n endDayHour: this.viewEndDayHour,\r\n viewStartDayHour: this.viewStartDayHour,\r\n viewEndDayHour: this.viewEndDayHour,\r\n min: dateRange[0],\r\n max: dateRange[1],\r\n resources: this.loadedResources,\r\n allDay: allDay,\r\n supportMultiDayAppointments: isTimelineView(this.viewType),\r\n firstDayOfWeek: this.firstDayOfWeek\r\n }, preparedItems)\r\n }\r\n hasAllDayAppointments(filteredItems, preparedItems) {\r\n var adapters = filteredItems.map(item => createAppointmentAdapter(item, this.dataAccessors, this.timeZoneCalculator));\r\n var result = false;\r\n each(adapters, (_, item) => {\r\n if (getAppointmentTakesAllDay(item, this.viewStartDayHour, this.viewEndDayHour, this.allDayPanelMode)) {\r\n result = true;\r\n return false\r\n }\r\n });\r\n return result\r\n }\r\n setDataAccessors(dataAccessors) {\r\n this.dataAccessors = dataAccessors\r\n }\r\n _createAllDayAppointmentFilter(filterOptions) {\r\n var {\r\n viewStartDayHour: viewStartDayHour,\r\n viewEndDayHour: viewEndDayHour\r\n } = filterOptions;\r\n return [\r\n [appointment => getAppointmentTakesAllDay(appointment, viewStartDayHour, viewEndDayHour, this.allDayPanelMode)]\r\n ]\r\n }\r\n _createCombinedFilter(filterOptions) {\r\n var min = new Date(filterOptions.min);\r\n var max = new Date(filterOptions.max);\r\n var {\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n viewStartDayHour: viewStartDayHour,\r\n viewEndDayHour: viewEndDayHour,\r\n resources: resources,\r\n firstDayOfWeek: firstDayOfWeek,\r\n checkIntersectViewport: checkIntersectViewport,\r\n supportMultiDayAppointments: supportMultiDayAppointments\r\n } = filterOptions;\r\n var [trimMin, trimMax] = getDatesWithoutTime(min, max);\r\n var useRecurrence = isDefined(this.dataAccessors.getter.recurrenceRule);\r\n return [\r\n [appointment => {\r\n var _a;\r\n var appointmentVisible = null !== (_a = appointment.visible) && void 0 !== _a ? _a : true;\r\n if (!appointmentVisible) {\r\n return false\r\n }\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n hasRecurrenceRule: hasRecurrenceRule\r\n } = appointment;\r\n if (!hasRecurrenceRule) {\r\n if (!(endDate >= trimMin && startDate < trimMax || dateUtils.sameDate(endDate, trimMin) && dateUtils.sameDate(startDate, trimMin))) {\r\n return false\r\n }\r\n }\r\n var appointmentTakesAllDay = getAppointmentTakesAllDay(appointment, viewStartDayHour, viewEndDayHour, this.allDayPanelMode);\r\n var appointmentTakesSeveralDays = getAppointmentTakesSeveralDays(appointment);\r\n var isAllDay = appointment.allDay;\r\n var isLongAppointment = appointmentTakesSeveralDays || appointmentTakesAllDay;\r\n if ((null === resources || void 0 === resources ? void 0 : resources.length) && !this._filterAppointmentByResources(appointment.rawAppointment, resources)) {\r\n return false\r\n }\r\n if (appointmentTakesAllDay && false === filterOptions.allDay) {\r\n return false\r\n }\r\n if (hasRecurrenceRule) {\r\n var recurrenceException = getRecurrenceException(appointment, this.timeZoneCalculator, this.timezone);\r\n if (!this._filterAppointmentByRRule(_extends(_extends({}, appointment), {\r\n recurrenceException: recurrenceException,\r\n allDay: appointmentTakesAllDay\r\n }), min, max, startDayHour, endDayHour, firstDayOfWeek)) {\r\n return false\r\n }\r\n }\r\n if (!isAllDay && supportMultiDayAppointments && isLongAppointment) {\r\n if (endDate < min && (!useRecurrence || useRecurrence && !hasRecurrenceRule)) {\r\n return false\r\n }\r\n }\r\n if (isDefined(startDayHour) && (!useRecurrence || !filterOptions.isVirtualScrolling)) {\r\n if (!compareDateWithStartDayHour(startDate, endDate, startDayHour, appointmentTakesAllDay, appointmentTakesSeveralDays)) {\r\n return false\r\n }\r\n }\r\n if (isDefined(endDayHour)) {\r\n if (!compareDateWithEndDayHour({\r\n startDate: startDate,\r\n endDate: endDate,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n viewStartDayHour: viewStartDayHour,\r\n viewEndDayHour: viewEndDayHour,\r\n allDay: appointmentTakesAllDay,\r\n severalDays: appointmentTakesSeveralDays,\r\n min: min,\r\n max: max,\r\n checkIntersectViewport: checkIntersectViewport\r\n })) {\r\n return false\r\n }\r\n }\r\n if (!isAllDay && (!isLongAppointment || supportMultiDayAppointments)) {\r\n if (endDate < min && useRecurrence && !hasRecurrenceRule) {\r\n return false\r\n }\r\n }\r\n return true\r\n }]\r\n ]\r\n }\r\n _createAppointmentFilter(filterOptions) {\r\n return this._createCombinedFilter(filterOptions)\r\n }\r\n _filterAppointmentByResources(appointment, resources) {\r\n var checkAppointmentResourceValues = (resourceName, resourceIndex) => {\r\n var resourceGetter = this.dataAccessors.resources.getter[resourceName];\r\n var resource;\r\n if (isFunction(resourceGetter)) {\r\n resource = resourceGetter(appointment)\r\n }\r\n var appointmentResourceValues = wrapToArray(resource);\r\n var resourceData = map(resources[resourceIndex].items, _ref => {\r\n var {\r\n id: id\r\n } = _ref;\r\n return id\r\n });\r\n for (var i = 0; i < appointmentResourceValues.length; i++) {\r\n if (hasResourceValue(resourceData, appointmentResourceValues[i])) {\r\n return true\r\n }\r\n }\r\n return false\r\n };\r\n var result = false;\r\n for (var i = 0; i < resources.length; i++) {\r\n var resourceName = resources[i].name;\r\n result = checkAppointmentResourceValues(resourceName, i);\r\n if (!result) {\r\n return false\r\n }\r\n }\r\n return result\r\n }\r\n _filterAppointmentByRRule(appointment, min, max, startDayHour, endDayHour, firstDayOfWeek) {\r\n var {\r\n recurrenceRule: recurrenceRule\r\n } = appointment;\r\n var {\r\n recurrenceException: recurrenceException\r\n } = appointment;\r\n var {\r\n allDay: allDay\r\n } = appointment;\r\n var result = true;\r\n var appointmentStartDate = appointment.startDate;\r\n var appointmentEndDate = appointment.endDate;\r\n var recurrenceProcessor = getRecurrenceProcessor();\r\n if (allDay || _appointmentPartInInterval(appointmentStartDate, appointmentEndDate, startDayHour, endDayHour)) {\r\n var [trimMin, trimMax] = getDatesWithoutTime(min, max);\r\n min = trimMin;\r\n max = new Date(trimMax.getTime() - toMs(\"minute\"))\r\n }\r\n if (recurrenceRule && !recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {\r\n result = appointmentEndDate > min && appointmentStartDate <= max\r\n }\r\n if (result && recurrenceProcessor.isValidRecurrenceRule(recurrenceRule)) {\r\n result = recurrenceProcessor.hasRecurrence({\r\n rule: recurrenceRule,\r\n exception: recurrenceException,\r\n start: appointmentStartDate,\r\n end: appointmentEndDate,\r\n min: min,\r\n max: max,\r\n firstDayOfWeek: firstDayOfWeek,\r\n appointmentTimezoneOffset: this.timeZoneCalculator.getOriginStartDateOffsetInMs(appointmentStartDate, appointment.startDateTimeZone, false)\r\n })\r\n }\r\n return result\r\n }\r\n filterLoadedAppointments(filterOptions, preparedItems) {\r\n var filteredItems = this.filterPreparedItems(filterOptions, preparedItems);\r\n return filteredItems.map(_ref2 => {\r\n var {\r\n rawAppointment: rawAppointment\r\n } = _ref2;\r\n return rawAppointment\r\n })\r\n }\r\n filterPreparedItems(filterOptions, preparedItems) {\r\n var combinedFilter = this._createAppointmentFilter(filterOptions);\r\n return query(preparedItems).filter(combinedFilter).toArray()\r\n }\r\n filterAllDayAppointments(filterOptions, preparedItems) {\r\n var combinedFilter = this._createAllDayAppointmentFilter(filterOptions);\r\n return query(preparedItems).filter(combinedFilter).toArray().map(_ref3 => {\r\n var {\r\n rawAppointment: rawAppointment\r\n } = _ref3;\r\n return rawAppointment\r\n })\r\n }\r\n}\r\nexport class AppointmentFilterVirtualStrategy extends AppointmentFilterBaseStrategy {\r\n get strategyName() {\r\n return FilterStrategies.virtual\r\n }\r\n get resources() {\r\n return this.options.resources\r\n }\r\n filter(preparedItems) {\r\n var hourMs = toMs(\"hour\");\r\n var isCalculateStartAndEndDayHour = calculateIsDateAndTimeView(this.viewType);\r\n var checkIntersectViewport = isCalculateStartAndEndDayHour && \"horizontal\" === this.viewDirection;\r\n var isAllDayWorkspace = !this.supportAllDayRow;\r\n var showAllDayAppointments = this.showAllDayPanel || isAllDayWorkspace;\r\n var endViewDate = this.viewDataProvider.getLastViewDateByEndDayHour(this.viewEndDayHour);\r\n var filterOptions = [];\r\n var groupsInfo = this.viewDataProvider.getCompletedGroupsInfo();\r\n groupsInfo.forEach(item => {\r\n var {\r\n groupIndex: groupIndex\r\n } = item;\r\n var groupStartDate = item.startDate;\r\n var groupEndDate = new Date(Math.min(item.endDate, endViewDate));\r\n var startDayHour = isCalculateStartAndEndDayHour ? groupStartDate.getHours() : this.viewStartDayHour;\r\n var endDayHour = isCalculateStartAndEndDayHour ? startDayHour + groupStartDate.getMinutes() / 60 + (groupEndDate - groupStartDate) / hourMs : this.viewEndDayHour;\r\n var resources = this._getPrerenderFilterResources(groupIndex);\r\n var hasAllDayPanel = this.viewDataProvider.hasGroupAllDayPanel(groupIndex);\r\n var supportAllDayAppointment = isAllDayWorkspace || !!showAllDayAppointments && hasAllDayPanel;\r\n filterOptions.push({\r\n isVirtualScrolling: true,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n viewStartDayHour: this.viewStartDayHour,\r\n viewEndDayHour: this.viewEndDayHour,\r\n min: groupStartDate,\r\n max: groupEndDate,\r\n supportMultiDayAppointments: isTimelineView(this.viewType),\r\n allDay: supportAllDayAppointment,\r\n resources: resources,\r\n firstDayOfWeek: this.firstDayOfWeek,\r\n checkIntersectViewport: checkIntersectViewport\r\n })\r\n });\r\n return this.filterLoadedAppointments({\r\n filterOptions: filterOptions,\r\n groupCount: this.groupCount\r\n }, preparedItems)\r\n }\r\n filterPreparedItems(_ref4, preparedItems) {\r\n var {\r\n filterOptions: filterOptions,\r\n groupCount: groupCount\r\n } = _ref4;\r\n var combinedFilters = [];\r\n var itemsToFilter = preparedItems;\r\n var needPreFilter = groupCount > 0;\r\n if (needPreFilter) {\r\n itemsToFilter = itemsToFilter.filter(_ref5 => {\r\n var {\r\n rawAppointment: rawAppointment\r\n } = _ref5;\r\n for (var i = 0; i < filterOptions.length; ++i) {\r\n var {\r\n resources: resources\r\n } = filterOptions[i];\r\n if (this._filterAppointmentByResources(rawAppointment, resources)) {\r\n return true\r\n }\r\n }\r\n })\r\n }\r\n filterOptions.forEach(option => {\r\n combinedFilters.length && combinedFilters.push(\"or\");\r\n var filter = this._createAppointmentFilter(option);\r\n combinedFilters.push(filter)\r\n });\r\n return query(itemsToFilter).filter(combinedFilters).toArray()\r\n }\r\n hasAllDayAppointments(adapters, preparedItems) {\r\n return this.filterAllDayAppointments({\r\n viewStartDayHour: this.viewStartDayHour,\r\n viewEndDayHour: this.viewEndDayHour\r\n }, preparedItems).length > 0\r\n }\r\n _getPrerenderFilterResources(groupIndex) {\r\n var cellGroup = this.viewDataProvider.getCellsGroup(groupIndex);\r\n return getResourcesDataByGroups(this.loadedResources, this.resources, [cellGroup])\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/data_provider/m_appointment_data_provider.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport config from \"../../../../core/config\";\r\nimport combineRemoteFilter from \"../../../../renovation/ui/scheduler/utils/filtering/remote\";\r\nimport {\r\n AppointmentDataSource\r\n} from \"./m_appointment_data_source\";\r\nimport {\r\n AppointmentFilterBaseStrategy,\r\n AppointmentFilterVirtualStrategy\r\n} from \"./m_appointment_filter\";\r\nvar FilterStrategies = {\r\n virtual: \"virtual\",\r\n standard: \"standard\"\r\n};\r\nexport class AppointmentDataProvider {\r\n constructor(options) {\r\n this.options = options;\r\n this.dataSource = this.options.dataSource;\r\n this.dataAccessors = this.options.dataAccessors;\r\n this.timeZoneCalculator = this.options.timeZoneCalculator;\r\n this.appointmentDataSource = new AppointmentDataSource(this.dataSource);\r\n this.initFilterStrategy()\r\n }\r\n get keyName() {\r\n return this.appointmentDataSource.keyName\r\n }\r\n get isDataSourceInit() {\r\n return !!this.dataSource\r\n }\r\n get filterStrategyName() {\r\n return this.options.getIsVirtualScrolling() ? FilterStrategies.virtual : FilterStrategies.standard\r\n }\r\n getFilterStrategy() {\r\n if (!this.filterStrategy || this.filterStrategy.strategyName !== this.filterStrategyName) {\r\n this.initFilterStrategy()\r\n }\r\n return this.filterStrategy\r\n }\r\n initFilterStrategy() {\r\n var filterOptions = {\r\n resources: this.options.resources,\r\n dataAccessors: this.dataAccessors,\r\n startDayHour: this.options.startDayHour,\r\n endDayHour: this.options.endDayHour,\r\n showAllDayPanel: this.options.showAllDayPanel,\r\n timeZoneCalculator: this.options.timeZoneCalculator,\r\n loadedResources: this.options.getLoadedResources,\r\n supportAllDayRow: this.options.getSupportAllDayRow,\r\n viewType: this.options.getViewType,\r\n viewDirection: this.options.getViewDirection,\r\n dateRange: this.options.getDateRange,\r\n groupCount: this.options.getGroupCount,\r\n viewDataProvider: this.options.getViewDataProvider,\r\n allDayPanelMode: this.options.allDayPanelMode\r\n };\r\n this.filterStrategy = this.filterStrategyName === FilterStrategies.virtual ? new AppointmentFilterVirtualStrategy(filterOptions) : new AppointmentFilterBaseStrategy(filterOptions)\r\n }\r\n setDataSource(dataSource) {\r\n this.dataSource = dataSource;\r\n this.initFilterStrategy();\r\n this.appointmentDataSource.setDataSource(this.dataSource)\r\n }\r\n updateDataAccessors(dataAccessors) {\r\n this.dataAccessors = dataAccessors;\r\n this.initFilterStrategy()\r\n }\r\n filter(preparedItems) {\r\n return this.getFilterStrategy().filter(preparedItems)\r\n }\r\n filterByDate(min, max, remoteFiltering, dateSerializationFormat) {\r\n if (!this.dataSource || !remoteFiltering) {\r\n return\r\n }\r\n var dataSourceFilter = this.dataSource.filter();\r\n var filter = combineRemoteFilter({\r\n dataSourceFilter: dataSourceFilter,\r\n dataAccessors: this.dataAccessors,\r\n min: min,\r\n max: max,\r\n dateSerializationFormat: dateSerializationFormat,\r\n forceIsoDateParsing: config().forceIsoDateParsing\r\n });\r\n this.dataSource.filter(filter)\r\n }\r\n hasAllDayAppointments(filteredItems, preparedItems) {\r\n return this.getFilterStrategy().hasAllDayAppointments(filteredItems, preparedItems)\r\n }\r\n filterLoadedAppointments(filterOption, preparedItems) {\r\n return this.getFilterStrategy().filterLoadedAppointments(filterOption, preparedItems)\r\n }\r\n calculateAppointmentEndDate(isAllDay, startDate) {\r\n return this.getFilterStrategy().calculateAppointmentEndDate(isAllDay, startDate)\r\n }\r\n cleanState() {\r\n this.appointmentDataSource.cleanState()\r\n }\r\n getUpdatedAppointment() {\r\n return this.appointmentDataSource._updatedAppointment\r\n }\r\n getUpdatedAppointmentKeys() {\r\n return this.appointmentDataSource._updatedAppointmentKeys\r\n }\r\n add(rawAppointment) {\r\n return this.appointmentDataSource.add(rawAppointment)\r\n }\r\n update(target, rawAppointment) {\r\n return this.appointmentDataSource.update(target, rawAppointment)\r\n }\r\n remove(rawAppointment) {\r\n return this.appointmentDataSource.remove(rawAppointment)\r\n }\r\n destroy() {\r\n this.appointmentDataSource.destroy()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/events/double_click.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n closestCommonParent\r\n} from \"../core/utils/dom\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport Class from \"../core/class\";\r\nimport registerEvent from \"./core/event_registrator\";\r\nimport {\r\n name as clickEventName\r\n} from \"./click\";\r\nimport {\r\n addNamespace,\r\n fireEvent\r\n} from \"./utils/index\";\r\nvar DBLCLICK_EVENT_NAME = \"dxdblclick\";\r\nvar DBLCLICK_NAMESPACE = \"dxDblClick\";\r\nvar NAMESPACED_CLICK_EVENT = addNamespace(clickEventName, DBLCLICK_NAMESPACE);\r\nvar DBLCLICK_TIMEOUT = 300;\r\nvar DblClick = Class.inherit({\r\n ctor: function() {\r\n this._handlerCount = 0;\r\n this._forgetLastClick()\r\n },\r\n _forgetLastClick: function() {\r\n this._firstClickTarget = null;\r\n this._lastClickTimeStamp = -DBLCLICK_TIMEOUT\r\n },\r\n add: function() {\r\n if (this._handlerCount <= 0) {\r\n eventsEngine.on(domAdapter.getDocument(), NAMESPACED_CLICK_EVENT, this._clickHandler.bind(this))\r\n }\r\n this._handlerCount++\r\n },\r\n _clickHandler: function(e) {\r\n var timeStamp = e.timeStamp || Date.now();\r\n var timeBetweenClicks = timeStamp - this._lastClickTimeStamp;\r\n var isSimulated = timeBetweenClicks < 0;\r\n var isDouble = !isSimulated && timeBetweenClicks < DBLCLICK_TIMEOUT;\r\n if (isDouble) {\r\n fireEvent({\r\n type: DBLCLICK_EVENT_NAME,\r\n target: closestCommonParent(this._firstClickTarget, e.target),\r\n originalEvent: e\r\n });\r\n this._forgetLastClick()\r\n } else {\r\n this._firstClickTarget = e.target;\r\n this._lastClickTimeStamp = timeStamp\r\n }\r\n },\r\n remove: function() {\r\n this._handlerCount--;\r\n if (this._handlerCount <= 0) {\r\n this._forgetLastClick();\r\n eventsEngine.off(domAdapter.getDocument(), NAMESPACED_CLICK_EVENT)\r\n }\r\n }\r\n});\r\nregisterEvent(DBLCLICK_EVENT_NAME, new DblClick);\r\nexport {\r\n DBLCLICK_EVENT_NAME as name\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/resizable/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isWindow\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getOuterWidth,\r\n getInnerWidth,\r\n getOuterHeight,\r\n getInnerHeight,\r\n getOffset\r\n} from \"../../../core/utils/size\";\r\nexport var borderWidthStyles = {\r\n left: \"borderLeftWidth\",\r\n top: \"borderTopWidth\",\r\n right: \"borderRightWidth\",\r\n bottom: \"borderBottomWidth\"\r\n};\r\n\r\nfunction getBorderWidth(el, direction) {\r\n if (!isWindow(el)) {\r\n var borderWidth = el.style[borderWidthStyles[direction]];\r\n return parseInt(borderWidth, 10) || 0\r\n }\r\n return 0\r\n}\r\nvar correctGeometry = function(area, mainEl) {\r\n var el = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : void 0;\r\n var {\r\n height: height,\r\n offset: offset,\r\n width: width\r\n } = area;\r\n var {\r\n left: left,\r\n top: top\r\n } = offset;\r\n var areaBorderLeft = el ? getBorderWidth(el, \"left\") : 0;\r\n var areaBorderTop = el ? getBorderWidth(el, \"top\") : 0;\r\n return {\r\n width: width - getOuterWidth(mainEl) - getInnerWidth(mainEl),\r\n height: height - getOuterHeight(mainEl) - getInnerHeight(mainEl),\r\n offset: {\r\n left: left + areaBorderLeft + getBorderWidth(mainEl, \"left\"),\r\n top: top + areaBorderTop + getBorderWidth(mainEl, \"top\")\r\n }\r\n }\r\n};\r\nexport var getAreaFromElement = (el, mainEl) => correctGeometry({\r\n width: getInnerWidth(el),\r\n height: getInnerHeight(el),\r\n offset: extend({\r\n top: 0,\r\n left: 0\r\n }, isWindow(el) ? {} : getOffset(el))\r\n}, mainEl, el);\r\nexport var getAreaFromObject = (_ref, mainEl) => {\r\n var {\r\n bottom: bottom,\r\n left: left,\r\n right: right,\r\n top: top\r\n } = _ref;\r\n return correctGeometry({\r\n width: right - left,\r\n height: bottom - top,\r\n offset: {\r\n left: left,\r\n top: top\r\n }\r\n }, mainEl)\r\n};\r\nexport var getMovingSides = el => {\r\n var {\r\n className: className\r\n } = el;\r\n var hasCornerTopLeftClass = className.includes(\"dx-resizable-handle-corner-top-left\");\r\n var hasCornerTopRightClass = className.includes(\"dx-resizable-handle-corner-top-right\");\r\n var hasCornerBottomLeftClass = className.includes(\"dx-resizable-handle-corner-bottom-left\");\r\n var hasCornerBottomRightClass = className.includes(\"dx-resizable-handle-corner-bottom-right\");\r\n return {\r\n top: className.includes(\"dx-resizable-handle-top\") || hasCornerTopLeftClass || hasCornerTopRightClass,\r\n left: className.includes(\"dx-resizable-handle-left\") || hasCornerTopLeftClass || hasCornerBottomLeftClass,\r\n bottom: className.includes(\"dx-resizable-handle-bottom\") || hasCornerBottomLeftClass || hasCornerBottomRightClass,\r\n right: className.includes(\"dx-resizable-handle-right\") || hasCornerTopRightClass || hasCornerBottomRightClass\r\n }\r\n};\r\nexport function getDragOffsets(area, handleEl, areaProp) {\r\n var hWidth = getOuterWidth(handleEl);\r\n var hHeight = getOuterHeight(handleEl);\r\n var hOffset = getOffset(handleEl);\r\n var areaOffset = area.offset;\r\n var isAreaWindow = isWindow(areaProp);\r\n var scrollOffset_scrollX = isAreaWindow ? areaProp.pageXOffset : 0,\r\n scrollOffset_scrollY = isAreaWindow ? areaProp.pageYOffset : 0;\r\n return {\r\n maxLeftOffset: hOffset.left - areaOffset.left - scrollOffset_scrollX,\r\n maxRightOffset: areaOffset.left + area.width - hOffset.left - hWidth + scrollOffset_scrollX,\r\n maxTopOffset: hOffset.top - areaOffset.top - scrollOffset_scrollY,\r\n maxBottomOffset: areaOffset.top + area.height - hOffset.top - hHeight + scrollOffset_scrollY\r\n }\r\n}\r\nexport var filterOffsets = (offset, handleEl) => {\r\n var sides = getMovingSides(handleEl);\r\n var offsetX = !sides.left && !sides.right ? 0 : offset.x;\r\n var offsetY = !sides.top && !sides.bottom ? 0 : offset.y;\r\n return {\r\n x: offsetX,\r\n y: offsetY\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popover/popover_position_controller.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"shading\", \"target\", \"$arrow\"];\r\nimport {\r\n isDefined,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n pairToObject\r\n} from \"../../core/utils/common\";\r\nimport {\r\n borderWidthStyles\r\n} from \"../../renovation/ui/resizable/utils\";\r\nimport {\r\n getWidth,\r\n getHeight\r\n} from \"../../core/utils/size\";\r\nimport {\r\n OverlayPositionController\r\n} from \"../overlay/overlay_position_controller\";\r\nvar WEIGHT_OF_SIDES = {\r\n left: -1,\r\n top: -1,\r\n center: 0,\r\n right: 1,\r\n bottom: 1\r\n};\r\nvar POPOVER_POSITION_ALIASES = {\r\n top: {\r\n my: \"bottom center\",\r\n at: \"top center\",\r\n collision: \"fit flip\"\r\n },\r\n bottom: {\r\n my: \"top center\",\r\n at: \"bottom center\",\r\n collision: \"fit flip\"\r\n },\r\n right: {\r\n my: \"left center\",\r\n at: \"right center\",\r\n collision: \"flip fit\"\r\n },\r\n left: {\r\n my: \"right center\",\r\n at: \"left center\",\r\n collision: \"flip fit\"\r\n }\r\n};\r\nvar POPOVER_DEFAULT_BOUNDARY_OFFSET = {\r\n h: 10,\r\n v: 10\r\n};\r\nclass PopoverPositionController extends OverlayPositionController {\r\n constructor(_ref) {\r\n var {\r\n shading: shading,\r\n target: target,\r\n $arrow: $arrow\r\n } = _ref, args = _objectWithoutPropertiesLoose(_ref, _excluded);\r\n super(args);\r\n this._props = _extends({}, this._props, {\r\n shading: shading,\r\n target: target\r\n });\r\n this._$arrow = $arrow;\r\n this._positionSide = void 0;\r\n this.updatePosition(this._props.position)\r\n }\r\n positionWrapper() {\r\n if (this._props.shading) {\r\n this._$wrapper.css({\r\n top: 0,\r\n left: 0\r\n })\r\n }\r\n }\r\n updateTarget(target) {\r\n this._props.target = target;\r\n this.updatePosition(this._props.position)\r\n }\r\n _renderBoundaryOffset() {}\r\n _getContainerPosition() {\r\n var offset = pairToObject(this._position.offset || \"\");\r\n var {\r\n h: hOffset,\r\n v: vOffset\r\n } = offset;\r\n var isVerticalSide = this._isVerticalSide();\r\n var isHorizontalSide = this._isHorizontalSide();\r\n if (isVerticalSide || isHorizontalSide) {\r\n var isPopoverInside = this._isPopoverInside();\r\n var sign = (isPopoverInside ? -1 : 1) * WEIGHT_OF_SIDES[this._positionSide];\r\n var arrowSize = isVerticalSide ? getHeight(this._$arrow) : getWidth(this._$arrow);\r\n var arrowSizeCorrection = this._getContentBorderWidth(this._positionSide);\r\n var arrowOffset = sign * (arrowSize - arrowSizeCorrection);\r\n isVerticalSide ? vOffset += arrowOffset : hOffset += arrowOffset\r\n }\r\n return extend({}, this._position, {\r\n offset: hOffset + \" \" + vOffset\r\n })\r\n }\r\n _getContentBorderWidth(side) {\r\n var borderWidth = this._$content.css(borderWidthStyles[side]);\r\n return parseInt(borderWidth) || 0\r\n }\r\n _isPopoverInside() {\r\n var my = positionUtils.setup.normalizeAlign(this._position.my);\r\n var at = positionUtils.setup.normalizeAlign(this._position.at);\r\n return my.h === at.h && my.v === at.v\r\n }\r\n _isVerticalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"top\" === side || \"bottom\" === side\r\n }\r\n _isHorizontalSide() {\r\n var side = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._positionSide;\r\n return \"left\" === side || \"right\" === side\r\n }\r\n _getDisplaySide(position) {\r\n var my = positionUtils.setup.normalizeAlign(position.my);\r\n var at = positionUtils.setup.normalizeAlign(position.at);\r\n var weightSign = WEIGHT_OF_SIDES[my.h] === WEIGHT_OF_SIDES[at.h] && WEIGHT_OF_SIDES[my.v] === WEIGHT_OF_SIDES[at.v] ? -1 : 1;\r\n var horizontalWeight = Math.abs(WEIGHT_OF_SIDES[my.h] - weightSign * WEIGHT_OF_SIDES[at.h]);\r\n var verticalWeight = Math.abs(WEIGHT_OF_SIDES[my.v] - weightSign * WEIGHT_OF_SIDES[at.v]);\r\n return horizontalWeight > verticalWeight ? at.h : at.v\r\n }\r\n _normalizePosition(positionProp) {\r\n var defaultPositionConfig = {\r\n of: this._props.target,\r\n boundaryOffset: POPOVER_DEFAULT_BOUNDARY_OFFSET\r\n };\r\n var resultPosition;\r\n if (isDefined(positionProp)) {\r\n resultPosition = extend(true, {}, defaultPositionConfig, this._positionToObject(positionProp))\r\n } else {\r\n resultPosition = defaultPositionConfig\r\n }\r\n this._positionSide = this._getDisplaySide(resultPosition);\r\n return resultPosition\r\n }\r\n _positionToObject(positionProp) {\r\n if (isString(positionProp)) {\r\n return extend({}, POPOVER_POSITION_ALIASES[positionProp])\r\n }\r\n return positionProp\r\n }\r\n}\r\nexport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/popover/ui.popover.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n setWidth,\r\n getHeight,\r\n setHeight\r\n} from \"../../core/utils/size\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport eventsEngine from \"../../events/core/events_engine\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n move\r\n} from \"../../animation/translator\";\r\nimport positionUtils from \"../../animation/position\";\r\nimport {\r\n isObject,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n fitIntoRange\r\n} from \"../../core/utils/math\";\r\nimport {\r\n addNamespace\r\n} from \"../../events/utils/index\";\r\nimport errors from \"../widget/ui.errors\";\r\nimport Popup from \"../popup/ui.popup\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n PopoverPositionController,\r\n POPOVER_POSITION_ALIASES\r\n} from \"./popover_position_controller\";\r\nvar POPOVER_CLASS = \"dx-popover\";\r\nvar POPOVER_WRAPPER_CLASS = \"dx-popover-wrapper\";\r\nvar POPOVER_ARROW_CLASS = \"dx-popover-arrow\";\r\nvar POPOVER_WITHOUT_TITLE_CLASS = \"dx-popover-without-title\";\r\nvar POSITION_FLIP_MAP = {\r\n left: \"right\",\r\n top: \"bottom\",\r\n right: \"left\",\r\n bottom: \"top\",\r\n center: \"center\"\r\n};\r\nvar getEventNameByOption = function(optionValue) {\r\n return isObject(optionValue) ? optionValue.name : optionValue\r\n};\r\nvar getEventName = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return getEventNameByOption(optionValue)\r\n};\r\nvar getEventDelay = function(that, optionName) {\r\n var optionValue = that.option(optionName);\r\n return isObject(optionValue) && optionValue.delay\r\n};\r\nvar attachEvent = function(that, name) {\r\n var {\r\n target: target,\r\n shading: shading,\r\n disabled: disabled,\r\n hideEvent: hideEvent\r\n } = that.option();\r\n var isSelector = isString(target);\r\n var shouldIgnoreHideEvent = shading && \"hide\" === name;\r\n var event = shouldIgnoreHideEvent ? null : getEventName(that, \"\".concat(name, \"Event\"));\r\n if (shouldIgnoreHideEvent && hideEvent) {\r\n errors.log(\"W1020\")\r\n }\r\n if (!event || disabled) {\r\n return\r\n }\r\n var eventName = addNamespace(event, that.NAME);\r\n var action = that._createAction(function() {\r\n var delay = getEventDelay(that, name + \"Event\");\r\n this._clearEventsTimeouts();\r\n if (delay) {\r\n this._timeouts[name] = setTimeout((function() {\r\n that[name]()\r\n }), delay)\r\n } else {\r\n that[name]()\r\n }\r\n }.bind(that), {\r\n validatingTargetName: \"target\"\r\n });\r\n var handler = function(e) {\r\n action({\r\n event: e,\r\n target: $(e.currentTarget)\r\n })\r\n };\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (isSelector) {\r\n that[EVENT_HANDLER_NAME] = handler;\r\n eventsEngine.on(domAdapter.getDocument(), eventName, target, handler)\r\n } else {\r\n var targetElement = getPublicElement($(target));\r\n that[EVENT_HANDLER_NAME] = void 0;\r\n eventsEngine.on(targetElement, eventName, handler)\r\n }\r\n};\r\nvar detachEvent = function(that, target, name, event) {\r\n var eventName = event || getEventName(that, name + \"Event\");\r\n if (!eventName) {\r\n return\r\n }\r\n eventName = addNamespace(eventName, that.NAME);\r\n var EVENT_HANDLER_NAME = \"_\" + name + \"EventHandler\";\r\n if (that[EVENT_HANDLER_NAME]) {\r\n eventsEngine.off(domAdapter.getDocument(), eventName, target, that[EVENT_HANDLER_NAME])\r\n } else {\r\n eventsEngine.off(getPublicElement($(target)), eventName)\r\n }\r\n};\r\nvar Popover = Popup.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n target: void 0,\r\n shading: false,\r\n position: extend({}, POPOVER_POSITION_ALIASES.bottom),\r\n hideOnOutsideClick: true,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n showTitle: false,\r\n width: \"auto\",\r\n height: \"auto\",\r\n dragEnabled: false,\r\n resizeEnabled: false,\r\n fullScreen: false,\r\n hideOnParentScroll: true,\r\n arrowPosition: \"\",\r\n arrowOffset: 0,\r\n _fixWrapperPosition: true\r\n })\r\n },\r\n _defaultOptionsRules: function() {\r\n return [{\r\n device: {\r\n platform: \"ios\"\r\n },\r\n options: {\r\n arrowPosition: {\r\n boundaryOffset: {\r\n h: 20,\r\n v: -10\r\n },\r\n collision: \"fit\"\r\n }\r\n }\r\n }, {\r\n device: function() {\r\n return !hasWindow()\r\n },\r\n options: {\r\n animation: null\r\n }\r\n }]\r\n },\r\n _init: function() {\r\n var _this$option;\r\n this.callBase();\r\n this._renderArrow();\r\n this._timeouts = {};\r\n this.$element().addClass(POPOVER_CLASS);\r\n this.$wrapper().addClass(POPOVER_WRAPPER_CLASS);\r\n var isInteractive = null === (_this$option = this.option(\"toolbarItems\")) || void 0 === _this$option ? void 0 : _this$option.length;\r\n this.setAria(\"role\", isInteractive ? \"dialog\" : \"tooltip\")\r\n },\r\n _render: function() {\r\n this.callBase.apply(this, arguments);\r\n this._detachEvents(this.option(\"target\"));\r\n this._attachEvents()\r\n },\r\n _detachEvents: function(target) {\r\n detachEvent(this, target, \"show\");\r\n detachEvent(this, target, \"hide\")\r\n },\r\n _attachEvents: function() {\r\n attachEvent(this, \"show\");\r\n attachEvent(this, \"hide\")\r\n },\r\n _renderArrow: function() {\r\n this._$arrow = $(\"<div>\").addClass(POPOVER_ARROW_CLASS).prependTo(this.$overlayContent())\r\n },\r\n _documentDownHandler: function(e) {\r\n if (this._isOutsideClick(e)) {\r\n return this.callBase(e)\r\n }\r\n return true\r\n },\r\n _isOutsideClick: function(e) {\r\n return !$(e.target).closest(this.option(\"target\")).length\r\n },\r\n _animate: function(animation) {\r\n if (animation && animation.to && \"object\" === typeof animation.to) {\r\n extend(animation.to, {\r\n position: this._getContainerPosition()\r\n })\r\n }\r\n this.callBase.apply(this, arguments)\r\n },\r\n _stopAnimation: function() {\r\n this.callBase.apply(this, arguments)\r\n },\r\n _renderTitle: function() {\r\n this.$wrapper().toggleClass(POPOVER_WITHOUT_TITLE_CLASS, !this.option(\"showTitle\"));\r\n this.callBase()\r\n },\r\n _renderPosition: function() {\r\n var shouldUpdateDimensions = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n this.callBase();\r\n this._renderOverlayPosition(shouldUpdateDimensions);\r\n this._actions.onPositioned()\r\n },\r\n _renderOverlayPosition: function(shouldUpdateDimensions) {\r\n this._resetOverlayPosition(shouldUpdateDimensions);\r\n this._updateContentSize(shouldUpdateDimensions);\r\n var contentPosition = this._getContainerPosition();\r\n var resultLocation = positionUtils.setup(this.$overlayContent(), contentPosition);\r\n var positionSide = this._getSideByLocation(resultLocation);\r\n this._togglePositionClass(\"dx-position-\" + positionSide);\r\n this._toggleFlippedClass(resultLocation.h.flip, resultLocation.v.flip);\r\n var isArrowVisible = this._isHorizontalSide() || this._isVerticalSide();\r\n if (isArrowVisible) {\r\n this._renderArrowPosition(positionSide)\r\n }\r\n },\r\n _resetOverlayPosition: function(shouldUpdateDimensions) {\r\n this._setContentHeight(shouldUpdateDimensions);\r\n this._togglePositionClass(\"dx-position-\" + this._positionController._positionSide);\r\n move(this.$overlayContent(), {\r\n left: 0,\r\n top: 0\r\n });\r\n this._$arrow.css({\r\n top: \"auto\",\r\n right: \"auto\",\r\n bottom: \"auto\",\r\n left: \"auto\"\r\n })\r\n },\r\n _updateContentSize: function(shouldUpdateDimensions) {\r\n if (!this.$content() || !shouldUpdateDimensions) {\r\n return\r\n }\r\n var containerLocation = positionUtils.calculate(this.$overlayContent(), this._getContainerPosition());\r\n if (containerLocation.h.oversize > 0 && this._isHorizontalSide() && !containerLocation.h.fit) {\r\n var newContainerWidth = getWidth(this.$overlayContent()) - containerLocation.h.oversize;\r\n setWidth(this.$overlayContent(), newContainerWidth)\r\n }\r\n if (containerLocation.v.oversize > 0 && this._isVerticalSide() && !containerLocation.v.fit) {\r\n var newOverlayContentHeight = getHeight(this.$overlayContent()) - containerLocation.v.oversize;\r\n var newPopupContentHeight = getHeight(this.$content()) - containerLocation.v.oversize;\r\n setHeight(this.$overlayContent(), newOverlayContentHeight);\r\n setHeight(this.$content(), newPopupContentHeight)\r\n }\r\n },\r\n _getContainerPosition: function() {\r\n return this._positionController._getContainerPosition()\r\n },\r\n _hideOnParentScrollTarget: function() {\r\n return $(this._positionController._position.of || this.callBase())\r\n },\r\n _getSideByLocation: function(location) {\r\n var isFlippedByVertical = location.v.flip;\r\n var isFlippedByHorizontal = location.h.flip;\r\n return this._isVerticalSide() && isFlippedByVertical || this._isHorizontalSide() && isFlippedByHorizontal || this._isPopoverInside() ? POSITION_FLIP_MAP[this._positionController._positionSide] : this._positionController._positionSide\r\n },\r\n _togglePositionClass: function(positionClass) {\r\n this.$wrapper().removeClass(\"dx-position-left dx-position-right dx-position-top dx-position-bottom\").addClass(positionClass)\r\n },\r\n _toggleFlippedClass: function(isFlippedHorizontal, isFlippedVertical) {\r\n this.$wrapper().toggleClass(\"dx-popover-flipped-horizontal\", isFlippedHorizontal).toggleClass(\"dx-popover-flipped-vertical\", isFlippedVertical)\r\n },\r\n _renderArrowPosition: function(side) {\r\n var arrowRect = getBoundingRect(this._$arrow.get(0));\r\n var arrowFlip = -(this._isVerticalSide(side) ? arrowRect.height : arrowRect.width);\r\n this._$arrow.css(POSITION_FLIP_MAP[side], arrowFlip);\r\n var axis = this._isVerticalSide(side) ? \"left\" : \"top\";\r\n var sizeProperty = this._isVerticalSide(side) ? \"width\" : \"height\";\r\n var $target = $(this._positionController._position.of);\r\n var targetOffset = positionUtils.offset($target) || {\r\n top: 0,\r\n left: 0\r\n };\r\n var contentOffset = positionUtils.offset(this.$overlayContent());\r\n var arrowSize = arrowRect[sizeProperty];\r\n var contentLocation = contentOffset[axis];\r\n var contentSize = getBoundingRect(this.$overlayContent().get(0))[sizeProperty];\r\n var targetLocation = targetOffset[axis];\r\n var targetElement = $target.get(0);\r\n var targetSize = targetElement && !targetElement.preventDefault ? getBoundingRect(targetElement)[sizeProperty] : 0;\r\n var min = Math.max(contentLocation, targetLocation);\r\n var max = Math.min(contentLocation + contentSize, targetLocation + targetSize);\r\n var arrowLocation;\r\n if (\"start\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = min - contentLocation\r\n } else if (\"end\" === this.option(\"arrowPosition\")) {\r\n arrowLocation = max - contentLocation - arrowSize\r\n } else {\r\n arrowLocation = (min + max) / 2 - contentLocation - arrowSize / 2\r\n }\r\n var borderWidth = this._positionController._getContentBorderWidth(side);\r\n var finalArrowLocation = fitIntoRange(arrowLocation - borderWidth + this.option(\"arrowOffset\"), borderWidth, contentSize - arrowSize - 2 * borderWidth);\r\n this._$arrow.css(axis, finalArrowLocation)\r\n },\r\n _isPopoverInside: function() {\r\n return this._positionController._isPopoverInside()\r\n },\r\n _setContentHeight: function(fullUpdate) {\r\n if (fullUpdate) {\r\n this.callBase()\r\n }\r\n },\r\n _getPositionControllerConfig() {\r\n var {\r\n shading: shading,\r\n target: target\r\n } = this.option();\r\n return extend({}, this.callBase(), {\r\n target: target,\r\n shading: shading,\r\n $arrow: this._$arrow\r\n })\r\n },\r\n _initPositionController() {\r\n this._positionController = new PopoverPositionController(this._getPositionControllerConfig())\r\n },\r\n _renderWrapperDimensions: function() {\r\n if (this.option(\"shading\")) {\r\n this.$wrapper().css({\r\n width: \"100%\",\r\n height: \"100%\"\r\n })\r\n }\r\n },\r\n _isVerticalSide: function(side) {\r\n return this._positionController._isVerticalSide(side)\r\n },\r\n _isHorizontalSide: function(side) {\r\n return this._positionController._isHorizontalSide(side)\r\n },\r\n _clearEventTimeout: function(name) {\r\n clearTimeout(this._timeouts[name])\r\n },\r\n _clearEventsTimeouts: function() {\r\n this._clearEventTimeout(\"show\");\r\n this._clearEventTimeout(\"hide\")\r\n },\r\n _clean: function() {\r\n this._detachEvents(this.option(\"target\"));\r\n this.callBase.apply(this, arguments)\r\n },\r\n _optionChanged: function(args) {\r\n switch (args.name) {\r\n case \"arrowPosition\":\r\n case \"arrowOffset\":\r\n this._renderGeometry();\r\n break;\r\n case \"fullScreen\":\r\n if (args.value) {\r\n this.option(\"fullScreen\", false)\r\n }\r\n break;\r\n case \"target\":\r\n args.previousValue && this._detachEvents(args.previousValue);\r\n this._positionController.updateTarget(args.value);\r\n this._invalidate();\r\n break;\r\n case \"showEvent\":\r\n case \"hideEvent\":\r\n var name = args.name.substring(0, 4);\r\n var event = getEventNameByOption(args.previousValue);\r\n this.hide();\r\n detachEvent(this, this.option(\"target\"), name, event);\r\n attachEvent(this, name);\r\n break;\r\n case \"visible\":\r\n this._clearEventTimeout(args.value ? \"show\" : \"hide\");\r\n this.callBase(args);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n show: function(target) {\r\n if (target) {\r\n this.option(\"target\", target)\r\n }\r\n return this.callBase()\r\n }\r\n});\r\nregisterComponent(\"dxPopover\", Popover);\r\nexport default Popover;\r\n","/**\r\n * DevExtreme (esm/ui/tooltip/tooltip.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Guid from \"../../core/guid\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Popover from \"../popover/ui.popover\";\r\nvar TOOLTIP_CLASS = \"dx-tooltip\";\r\nvar TOOLTIP_WRAPPER_CLASS = \"dx-tooltip-wrapper\";\r\nimport {\r\n isWindow\r\n} from \"../../core/utils/type\";\r\nvar Tooltip = Popover.inherit({\r\n _getDefaultOptions: function() {\r\n return extend(this.callBase(), {\r\n toolbarItems: [],\r\n showCloseButton: false,\r\n enableBodyScroll: true,\r\n showTitle: false,\r\n title: null,\r\n titleTemplate: null,\r\n onTitleRendered: null,\r\n bottomTemplate: null,\r\n preventScrollEvents: false,\r\n propagateOutsideClick: true\r\n })\r\n },\r\n _render: function() {\r\n this.$element().addClass(TOOLTIP_CLASS);\r\n this.$wrapper().addClass(TOOLTIP_WRAPPER_CLASS);\r\n this.callBase()\r\n },\r\n _renderContent: function() {\r\n this.callBase();\r\n this._contentId = \"dx-\" + new Guid;\r\n this.$overlayContent().attr({\r\n id: this._contentId\r\n });\r\n this._toggleAriaDescription(true)\r\n },\r\n _toggleAriaDescription: function(showing) {\r\n var $target = $(this.option(\"target\"));\r\n var label = showing ? this._contentId : void 0;\r\n if (!isWindow($target.get(0))) {\r\n this.setAria(\"describedby\", label, $target)\r\n }\r\n }\r\n});\r\nregisterComponent(\"dxTooltip\", Tooltip);\r\nexport default Tooltip;\r\n","/**\r\n * DevExtreme (esm/ui/tooltip/ui.tooltip.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport Tooltip from \"./tooltip\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n value as viewPort\r\n} from \"../../core/utils/view_port\";\r\nvar tooltip = null;\r\nvar removeTooltipElement = null;\r\nvar createTooltip = function(options) {\r\n options = extend({\r\n position: \"top\"\r\n }, options);\r\n var content = options.content;\r\n delete options.content;\r\n var $tooltip = $(\"<div>\").html(content).appendTo(viewPort());\r\n removeTooltipElement = function() {\r\n $tooltip.remove()\r\n };\r\n tooltip = new Tooltip($tooltip, options)\r\n};\r\nvar removeTooltip = function() {\r\n if (!tooltip) {\r\n return\r\n }\r\n removeTooltipElement();\r\n tooltip = null\r\n};\r\nexport function show(options) {\r\n removeTooltip();\r\n createTooltip(options);\r\n return tooltip.show()\r\n}\r\nexport function hide() {\r\n if (!tooltip) {\r\n return (new Deferred).resolve()\r\n }\r\n return tooltip.hide().done(removeTooltip).promise()\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_appointment.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n move\r\n} from \"../../../animation/translator\";\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport DOMComponent from \"../../../core/dom_component\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n Deferred\r\n} from \"../../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport pointerEvents from \"../../../events/pointer\";\r\nimport {\r\n addNamespace\r\n} from \"../../../events/utils/index\";\r\nimport dateLocalization from \"../../../localization/date\";\r\nimport messageLocalization from \"../../../localization/message\";\r\nimport Resizable from \"../../../ui/resizable\";\r\nimport {\r\n hide,\r\n show\r\n} from \"../../../ui/tooltip/ui.tooltip\";\r\nimport {\r\n ALL_DAY_APPOINTMENT_CLASS,\r\n APPOINTMENT_CONTENT_CLASSES,\r\n APPOINTMENT_DRAG_SOURCE_CLASS,\r\n DIRECTION_APPOINTMENT_CLASSES,\r\n EMPTY_APPOINTMENT_CLASS,\r\n RECURRENCE_APPOINTMENT_CLASS,\r\n REDUCED_APPOINTMENT_CLASS,\r\n REDUCED_APPOINTMENT_ICON,\r\n REDUCED_APPOINTMENT_PARTS_CLASSES\r\n} from \"../m_classes\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../m_expression_utils\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"../m_recurrence\";\r\nvar DEFAULT_HORIZONTAL_HANDLES = \"left right\";\r\nvar DEFAULT_VERTICAL_HANDLES = \"top bottom\";\r\nvar REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME = addNamespace(pointerEvents.enter, \"dxSchedulerAppointment\");\r\nvar REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME = addNamespace(pointerEvents.leave, \"dxSchedulerAppointment\");\r\nexport class Appointment extends DOMComponent {\r\n get coloredElement() {\r\n return this.$element()\r\n }\r\n get rawAppointment() {\r\n return this.option(\"data\")\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n data: {},\r\n groupIndex: -1,\r\n groups: [],\r\n geometry: {\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0\r\n },\r\n allowDrag: true,\r\n allowResize: true,\r\n reduced: null,\r\n isCompact: false,\r\n direction: \"vertical\",\r\n resizableConfig: {\r\n keepAspectRatio: false\r\n },\r\n cellHeight: 0,\r\n cellWidth: 0,\r\n isDragSource: false\r\n })\r\n }\r\n notifyObserver(subject, args) {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n observer.fire(subject, args)\r\n }\r\n }\r\n invoke(funcName) {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n return observer.fire.apply(observer, arguments)\r\n }\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"data\":\r\n case \"groupIndex\":\r\n case \"geometry\":\r\n case \"allowDrag\":\r\n case \"allowResize\":\r\n case \"reduced\":\r\n case \"sortedIndex\":\r\n case \"isCompact\":\r\n case \"direction\":\r\n case \"resizableConfig\":\r\n case \"cellHeight\":\r\n case \"cellWidth\":\r\n this._invalidate();\r\n break;\r\n case \"isDragSource\":\r\n this._renderDragSourceClass();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _getHorizontalResizingRule() {\r\n var reducedHandles = {\r\n head: this.option(\"rtlEnabled\") ? \"right\" : \"left\",\r\n body: \"\",\r\n tail: this.option(\"rtlEnabled\") ? \"left\" : \"right\"\r\n };\r\n var getResizableStep = this.option(\"getResizableStep\");\r\n var step = getResizableStep ? getResizableStep() : 0;\r\n return {\r\n handles: this.option(\"reduced\") ? reducedHandles[this.option(\"reduced\")] : DEFAULT_HORIZONTAL_HANDLES,\r\n minHeight: 0,\r\n minWidth: this.invoke(\"getCellWidth\"),\r\n step: step,\r\n roundStepValue: false\r\n }\r\n }\r\n _getVerticalResizingRule() {\r\n var height = Math.round(this.invoke(\"getCellHeight\"));\r\n return {\r\n handles: DEFAULT_VERTICAL_HANDLES,\r\n minWidth: 0,\r\n minHeight: height,\r\n step: height,\r\n roundStepValue: true\r\n }\r\n }\r\n _render() {\r\n super._render();\r\n this._renderAppointmentGeometry();\r\n this._renderEmptyClass();\r\n this._renderReducedAppointment();\r\n this._renderAllDayClass();\r\n this._renderDragSourceClass();\r\n this._renderDirection();\r\n this.$element().data(\"dxAppointmentStartDate\", this.option(\"startDate\"));\r\n var text = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"text\", this.rawAppointment);\r\n this.$element().attr(\"title\", text);\r\n this.$element().attr(\"role\", \"button\");\r\n this._renderRecurrenceClass();\r\n this._renderResizable();\r\n this._setResourceColor()\r\n }\r\n _setResourceColor() {\r\n var appointmentConfig = {\r\n itemData: this.rawAppointment,\r\n groupIndex: this.option(\"groupIndex\"),\r\n groups: this.option(\"groups\")\r\n };\r\n var deferredColor = this.option(\"getAppointmentColor\")(appointmentConfig);\r\n deferredColor.done(color => color && this.coloredElement.css(\"backgroundColor\", color))\r\n }\r\n _renderAppointmentGeometry() {\r\n var geometry = this.option(\"geometry\");\r\n var $element = this.$element();\r\n move($element, {\r\n top: geometry.top,\r\n left: geometry.left\r\n });\r\n $element.css({\r\n width: geometry.width < 0 ? 0 : geometry.width,\r\n height: geometry.height < 0 ? 0 : geometry.height\r\n })\r\n }\r\n _renderEmptyClass() {\r\n var geometry = this.option(\"geometry\");\r\n if (geometry.empty || this.option(\"isCompact\")) {\r\n this.$element().addClass(EMPTY_APPOINTMENT_CLASS)\r\n }\r\n }\r\n _renderReducedAppointment() {\r\n var reducedPart = this.option(\"reduced\");\r\n if (!reducedPart) {\r\n return\r\n }\r\n this.$element().toggleClass(REDUCED_APPOINTMENT_CLASS, true).toggleClass(REDUCED_APPOINTMENT_PARTS_CLASSES[reducedPart], true);\r\n this._renderAppointmentReducedIcon()\r\n }\r\n _renderAppointmentReducedIcon() {\r\n var $icon = $(\"<div>\").addClass(REDUCED_APPOINTMENT_ICON).appendTo(this.$element());\r\n var endDate = this._getEndDate();\r\n var tooltipLabel = messageLocalization.format(\"dxScheduler-editorLabelEndDate\");\r\n var tooltipText = [tooltipLabel, \": \", dateLocalization.format(endDate, \"monthAndDay\"), \", \", dateLocalization.format(endDate, \"year\")].join(\"\");\r\n eventsEngine.off($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME);\r\n eventsEngine.on($icon, REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME, () => {\r\n show({\r\n target: $icon,\r\n content: tooltipText\r\n })\r\n });\r\n eventsEngine.off($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME);\r\n eventsEngine.on($icon, REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME, () => {\r\n hide()\r\n })\r\n }\r\n _getEndDate() {\r\n var result = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"endDate\", this.rawAppointment);\r\n if (result) {\r\n return new Date(result)\r\n }\r\n return result\r\n }\r\n _renderAllDayClass() {\r\n this.$element().toggleClass(ALL_DAY_APPOINTMENT_CLASS, !!this.option(\"allDay\"))\r\n }\r\n _renderDragSourceClass() {\r\n this.$element().toggleClass(APPOINTMENT_DRAG_SOURCE_CLASS, !!this.option(\"isDragSource\"))\r\n }\r\n _renderRecurrenceClass() {\r\n var rule = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"recurrenceRule\", this.rawAppointment);\r\n if (getRecurrenceProcessor().isValidRecurrenceRule(rule)) {\r\n this.$element().addClass(RECURRENCE_APPOINTMENT_CLASS)\r\n }\r\n }\r\n _renderDirection() {\r\n this.$element().addClass(DIRECTION_APPOINTMENT_CLASSES[this.option(\"direction\")])\r\n }\r\n _createResizingConfig() {\r\n var config = \"vertical\" === this.option(\"direction\") ? this._getVerticalResizingRule() : this._getHorizontalResizingRule();\r\n if (!this.invoke(\"isGroupedByDate\")) {\r\n config.stepPrecision = \"strict\"\r\n }\r\n return config\r\n }\r\n _renderResizable() {\r\n if (this.option(\"allowResize\")) {\r\n this._createComponent(this.$element(), Resizable, extend(this._createResizingConfig(), this.option(\"resizableConfig\")))\r\n }\r\n }\r\n _useTemplates() {\r\n return false\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerAppointment\", Appointment);\r\nexport class AgendaAppointment extends Appointment {\r\n get coloredElement() {\r\n return this.$element().find(\".\".concat(APPOINTMENT_CONTENT_CLASSES.AGENDA_MARKER))\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n createPlainResourceListAsync: new Deferred\r\n })\r\n }\r\n _renderResourceList(container, list) {\r\n list.forEach(item => {\r\n var itemContainer = $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST_ITEM).appendTo(container);\r\n $(\"<div>\").text(\"\".concat(item.label, \":\")).appendTo(itemContainer);\r\n $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST_ITEM_VALUE).text(item.values.join(\", \")).appendTo(itemContainer)\r\n })\r\n }\r\n _render() {\r\n super._render();\r\n var createPlainResourceListAsync = this.option(\"createPlainResourceListAsync\");\r\n createPlainResourceListAsync(this.rawAppointment).done(list => {\r\n var parent = this.$element().find(\".\".concat(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS));\r\n var container = $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.AGENDA_RESOURCE_LIST).appendTo(parent);\r\n this._renderResourceList(container, list)\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_appointment_layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport $ from \"../../../core/renderer\";\r\nimport messageLocalization from \"../../../localization/message\";\r\nimport {\r\n APPOINTMENT_CONTENT_CLASSES\r\n} from \"../m_classes\";\r\nvar allDayText = \" \".concat(messageLocalization.format(\"dxScheduler-allDay\"), \": \");\r\nexport var createAppointmentLayout = (formatText, config) => {\r\n var result = $(domAdapter.createDocumentFragment());\r\n $(\"<div>\").text(formatText.text).addClass(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_TITLE).appendTo(result);\r\n if (config.html) {\r\n result.html(config.html)\r\n }\r\n var $contentDetails = $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS).appendTo(result);\r\n $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_DATE).text(formatText.formatDate).appendTo($contentDetails);\r\n config.isRecurrence && $(\"<span>\").addClass(\"\".concat(APPOINTMENT_CONTENT_CLASSES.RECURRING_ICON, \" dx-icon-repeat\")).appendTo(result);\r\n config.isAllDay && $(\"<div>\").text(allDayText).addClass(APPOINTMENT_CONTENT_CLASSES.ALL_DAY_CONTENT).prependTo($contentDetails);\r\n return result\r\n};\r\nexport var createAgendaAppointmentLayout = (formatText, config) => {\r\n var result = $(domAdapter.createDocumentFragment());\r\n var leftLayoutContainer = $(\"<div>\").addClass(\"dx-scheduler-agenda-appointment-left-layout\").appendTo(result);\r\n var rightLayoutContainer = $(\"<div>\").addClass(\"dx-scheduler-agenda-appointment-right-layout\").appendTo(result);\r\n var marker = $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.AGENDA_MARKER).appendTo(leftLayoutContainer);\r\n config.isRecurrence && $(\"<span>\").addClass(\"\".concat(APPOINTMENT_CONTENT_CLASSES.RECURRING_ICON, \" dx-icon-repeat\")).appendTo(marker);\r\n $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_TITLE).text(formatText.text).appendTo(rightLayoutContainer);\r\n var additionalContainer = $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_CONTENT_DETAILS).appendTo(rightLayoutContainer);\r\n $(\"<div>\").addClass(APPOINTMENT_CONTENT_CLASSES.APPOINTMENT_DATE).text(formatText.formatDate).appendTo(additionalContainer);\r\n if (config.isAllDay) {\r\n $(\"<div>\").text(allDayText).addClass(APPOINTMENT_CONTENT_CLASSES.ALL_DAY_CONTENT).prependTo(additionalContainer)\r\n }\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/resizing/m_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar normalizeDate = (options, date, sourceDate, isStartDate) => {\r\n if (!options.considerTime) {\r\n return date\r\n }\r\n var result = new Date(date);\r\n result.setHours(sourceDate.getHours(), sourceDate.getMinutes(), sourceDate.getSeconds());\r\n var {\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n appointmentSettings: {\r\n allDay: allDay\r\n }\r\n } = options;\r\n var minDate = new Date(date);\r\n var maxDate = new Date(date);\r\n minDate.setHours(startDayHour, 0, 0, 0);\r\n maxDate.setHours(endDayHour, 0, 0, 0);\r\n var resultTime = result.getTime();\r\n var isDateOutInterval = isStartDate ? resultTime < minDate.getTime() || resultTime >= maxDate.getTime() : resultTime <= minDate.getTime() || resultTime > maxDate.getTime();\r\n if (isDateOutInterval) {\r\n result = !allDay ? maxDate : minDate\r\n }\r\n return result\r\n};\r\nexport var normalizeStartDate = (options, startDate, sourceStartDate) => normalizeDate(options, startDate, sourceStartDate, true);\r\nexport var normalizeEndDate = (options, endDate, sourceEndDate) => normalizeDate(options, endDate, sourceEndDate, false);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/resizing/m_core.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n normalizeEndDate,\r\n normalizeStartDate\r\n} from \"./m_utils\";\r\nvar getAppointmentLeftCell = options => {\r\n var {\r\n cellHeight: cellHeight,\r\n cellWidth: cellWidth,\r\n viewDataProvider: viewDataProvider,\r\n relativeAppointmentRect: relativeAppointmentRect,\r\n appointmentSettings: appointmentSettings,\r\n rtlEnabled: rtlEnabled\r\n } = options;\r\n var cellRowIndex = Math.floor(relativeAppointmentRect.top / cellHeight);\r\n var cellColumnIndex = Math.round(relativeAppointmentRect.left / cellWidth);\r\n var leftCell = viewDataProvider.getCellData(cellRowIndex, cellColumnIndex, appointmentSettings.allDay, rtlEnabled);\r\n return leftCell\r\n};\r\nvar getDateRangeHorizontal = options => {\r\n var {\r\n cellWidth: cellWidth,\r\n cellCountInRow: cellCountInRow,\r\n relativeAppointmentRect: relativeAppointmentRect,\r\n viewDataProvider: viewDataProvider,\r\n appointmentSettings: appointmentSettings,\r\n handles: handles\r\n } = options;\r\n var appointmentFirstCell = getAppointmentLeftCell(options);\r\n var appointmentCellsAmount = Math.round(relativeAppointmentRect.width / cellWidth);\r\n var appointmentLastCellIndex = appointmentFirstCell.index + (appointmentCellsAmount - 1);\r\n var {\r\n allDay: allDay,\r\n sourceAppointment: sourceAppointment\r\n } = appointmentSettings.info;\r\n if (handles.left) {\r\n var startDate = normalizeStartDate(options, appointmentFirstCell.startDate, sourceAppointment.startDate);\r\n return {\r\n startDate: startDate,\r\n endDate: sourceAppointment.endDate\r\n }\r\n }\r\n var appointmentRowIndex = Math.floor(appointmentLastCellIndex / cellCountInRow);\r\n var appointmentColumnIndex = appointmentLastCellIndex % cellCountInRow;\r\n var appointmentLastCell = viewDataProvider.getCellData(appointmentRowIndex, appointmentColumnIndex, allDay);\r\n var endDate = !options.considerTime ? appointmentLastCell.endDate : appointmentLastCell.startDate;\r\n endDate = normalizeEndDate(options, endDate, sourceAppointment.endDate);\r\n return {\r\n startDate: sourceAppointment.startDate,\r\n endDate: endDate\r\n }\r\n};\r\nvar getDateRangeHorizontalRTL = options => {\r\n var {\r\n viewDataProvider: viewDataProvider,\r\n cellCountInRow: cellCountInRow,\r\n appointmentSettings: appointmentSettings,\r\n handles: handles,\r\n cellWidth: cellWidth,\r\n relativeAppointmentRect: relativeAppointmentRect\r\n } = options;\r\n var appointmentLastCell = getAppointmentLeftCell(options);\r\n var {\r\n allDay: allDay,\r\n sourceAppointment: sourceAppointment\r\n } = appointmentSettings.info;\r\n if (handles.right) {\r\n var appointmentLastCellIndex = appointmentLastCell.index;\r\n var appointmentCellsAmount = Math.round(relativeAppointmentRect.width / cellWidth);\r\n var appointmentFirstCellIndex = appointmentLastCellIndex - appointmentCellsAmount + 1;\r\n var appointmentRowIndex = Math.floor(appointmentLastCellIndex / cellCountInRow);\r\n var appointmentFirstCell = viewDataProvider.getCellData(appointmentRowIndex, appointmentFirstCellIndex, allDay, true);\r\n var startDate = normalizeStartDate(options, appointmentFirstCell.startDate, sourceAppointment.endDate);\r\n return {\r\n startDate: startDate,\r\n endDate: sourceAppointment.endDate\r\n }\r\n }\r\n var endDate = !options.considerTime ? appointmentLastCell.endDate : appointmentLastCell.startDate;\r\n endDate = normalizeEndDate(options, endDate, sourceAppointment.endDate);\r\n return {\r\n startDate: sourceAppointment.startDate,\r\n endDate: endDate\r\n }\r\n};\r\nvar getRelativeAppointmentRect = (appointmentRect, parentAppointmentRect) => {\r\n var left = appointmentRect.left - parentAppointmentRect.left;\r\n var top = appointmentRect.top - parentAppointmentRect.top;\r\n var width = left < 0 ? appointmentRect.width + left : appointmentRect.width;\r\n var height = top < 0 ? appointmentRect.height + top : appointmentRect.height;\r\n return {\r\n left: Math.max(0, left),\r\n top: Math.max(0, top),\r\n width: width,\r\n height: height\r\n }\r\n};\r\nvar getAppointmentCellsInfo = options => {\r\n var {\r\n appointmentSettings: appointmentSettings,\r\n isVerticalGroupedWorkSpace: isVerticalGroupedWorkSpace,\r\n DOMMetaData: DOMMetaData\r\n } = options;\r\n var DOMMetaTable = appointmentSettings.allDay && !isVerticalGroupedWorkSpace ? [DOMMetaData.allDayPanelCellsMeta] : DOMMetaData.dateTableCellsMeta;\r\n var {\r\n positionByMap: positionByMap\r\n } = appointmentSettings;\r\n var {\r\n height: cellHeight,\r\n width: cellWidth\r\n } = DOMMetaTable[positionByMap.rowIndex][positionByMap.columnIndex];\r\n var cellCountInRow = DOMMetaTable[positionByMap.rowIndex].length;\r\n return {\r\n cellWidth: cellWidth,\r\n cellHeight: cellHeight,\r\n cellCountInRow: cellCountInRow\r\n }\r\n};\r\nexport var getAppointmentDateRange = options => {\r\n var {\r\n appointmentSettings: appointmentSettings\r\n } = options;\r\n var relativeAppointmentRect = getRelativeAppointmentRect(options.appointmentRect, options.parentAppointmentRect);\r\n var cellInfo = getAppointmentCellsInfo(options);\r\n var considerTime = !options.isDateAndTimeView || appointmentSettings.allDay;\r\n var extendedOptions = _extends(_extends(_extends({}, options), cellInfo), {\r\n considerTime: considerTime,\r\n relativeAppointmentRect: relativeAppointmentRect\r\n });\r\n return !options.rtlEnabled ? getDateRangeHorizontal(extendedOptions) : getDateRangeHorizontalRTL(extendedOptions)\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_appointment_collection.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../../../animation/translator\";\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport {\r\n data as elementData\r\n} from \"../../../core/element_data\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n wrapToArray\r\n} from \"../../../core/utils/array\";\r\nimport {\r\n grep,\r\n normalizeKey\r\n} from \"../../../core/utils/common\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n deepExtendArraySafe\r\n} from \"../../../core/utils/object\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n setOuterHeight,\r\n setOuterWidth\r\n} from \"../../../core/utils/size\";\r\nimport {\r\n isDeferred,\r\n isDefined,\r\n isPlainObject,\r\n isString\r\n} from \"../../../core/utils/type\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport {\r\n name as dblclickEvent\r\n} from \"../../../events/double_click\";\r\nimport {\r\n addNamespace,\r\n isFakeClickEvent\r\n} from \"../../../events/utils/index\";\r\nimport CollectionWidget from \"../../../ui/collection/ui.collection_widget.edit\";\r\nimport timeZoneUtils from \"../../../ui/scheduler/utils.timeZone\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../m_appointment_adapter\";\r\nimport {\r\n APPOINTMENT_DRAG_SOURCE_CLASS,\r\n APPOINTMENT_ITEM_CLASS\r\n} from \"../m_classes\";\r\nimport {\r\n APPOINTMENT_SETTINGS_KEY\r\n} from \"../m_constants\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../m_expression_utils\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"../m_recurrence\";\r\nimport {\r\n getAppointmentTakesSeveralDays,\r\n sortAppointmentsByStartDate\r\n} from \"./data_provider/m_utils\";\r\nimport {\r\n AgendaAppointment,\r\n Appointment\r\n} from \"./m_appointment\";\r\nimport {\r\n createAgendaAppointmentLayout,\r\n createAppointmentLayout\r\n} from \"./m_appointment_layout\";\r\nimport {\r\n getAppointmentDateRange\r\n} from \"./resizing/m_core\";\r\nvar COMPONENT_CLASS = \"dx-scheduler-scrollable-appointments\";\r\nvar DBLCLICK_EVENT_NAME = addNamespace(dblclickEvent, \"dxSchedulerAppointment\");\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass SchedulerAppointments extends CollectionWidget {\r\n constructor(element, options) {\r\n super(element, options);\r\n this._virtualAppointments = {}\r\n }\r\n get isAgendaView() {\r\n return this.invoke(\"isCurrentViewAgenda\")\r\n }\r\n get isVirtualScrolling() {\r\n return this.invoke(\"isVirtualScrolling\")\r\n }\r\n get appointmentDataProvider() {\r\n return this.option(\"getAppointmentDataProvider\")()\r\n }\r\n option(optionName, value) {\r\n return super.option(...arguments)\r\n }\r\n notifyObserver(subject, args) {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n observer.fire(subject, args)\r\n }\r\n }\r\n invoke(funcName) {\r\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\r\n args[_key - 1] = arguments[_key]\r\n }\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n return observer.fire.apply(observer, arguments)\r\n }\r\n }\r\n _dispose() {\r\n clearTimeout(this._appointmentClickTimeout);\r\n super._dispose()\r\n }\r\n _supportedKeys() {\r\n var parent = super._supportedKeys();\r\n var currentAppointment = this._$currentAppointment;\r\n return extend(parent, {\r\n escape: function() {\r\n var _a, _b, _c;\r\n if (this.resizeOccur) {\r\n this.moveAppointmentBack();\r\n this.resizeOccur = false;\r\n null === (_a = currentAppointment.dxResizable(\"instance\")) || void 0 === _a ? void 0 : _a._detachEventHandlers();\r\n null === (_b = currentAppointment.dxResizable(\"instance\")) || void 0 === _b ? void 0 : _b._attachEventHandlers();\r\n null === (_c = currentAppointment.dxResizable(\"instance\")) || void 0 === _c ? void 0 : _c._toggleResizingClass(false)\r\n }\r\n }.bind(this),\r\n del: function(e) {\r\n if (this.option(\"allowDelete\")) {\r\n e.preventDefault();\r\n var data = this._getItemData(e.target);\r\n this.notifyObserver(\"onDeleteButtonPress\", {\r\n data: data,\r\n target: e.target\r\n })\r\n }\r\n }.bind(this),\r\n tab: function(e) {\r\n var appointments = this._getAccessAppointments();\r\n var focusedAppointment = appointments.filter(\".dx-state-focused\");\r\n var index = focusedAppointment.data(APPOINTMENT_SETTINGS_KEY).sortedIndex;\r\n var lastIndex = appointments.length - 1;\r\n if (index > 0 && e.shiftKey || index < lastIndex && !e.shiftKey) {\r\n e.preventDefault();\r\n e.shiftKey ? index-- : index++;\r\n var $nextAppointment = this._getAppointmentByIndex(index);\r\n this._resetTabIndex($nextAppointment);\r\n eventsEngine.trigger($nextAppointment, \"focus\")\r\n }\r\n }\r\n })\r\n }\r\n _getAppointmentByIndex(sortedIndex) {\r\n var appointments = this._getAccessAppointments();\r\n return appointments.filter((_, $item) => elementData($item, APPOINTMENT_SETTINGS_KEY).sortedIndex === sortedIndex).eq(0)\r\n }\r\n _getAccessAppointments() {\r\n return this._itemElements().filter(\":visible\").not(\".dx-state-disabled\")\r\n }\r\n _resetTabIndex($appointment) {\r\n this._focusTarget().attr(\"tabIndex\", -1);\r\n $appointment.attr(\"tabIndex\", this.option(\"tabIndex\"))\r\n }\r\n _moveFocus() {}\r\n _focusTarget() {\r\n return this._itemElements()\r\n }\r\n _renderFocusTarget() {\r\n var $appointment = this._getAppointmentByIndex(0);\r\n this._resetTabIndex($appointment)\r\n }\r\n _focusInHandler(e) {\r\n super._focusInHandler(e);\r\n this._$currentAppointment = $(e.target);\r\n this.option(\"focusedElement\", getPublicElement($(e.target)))\r\n }\r\n _focusOutHandler(e) {\r\n var $appointment = this._getAppointmentByIndex(0);\r\n this.option(\"focusedElement\", getPublicElement($appointment));\r\n super._focusOutHandler(e)\r\n }\r\n _eventBindingTarget() {\r\n return this._itemContainer()\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n noDataText: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n tabIndex: 0,\r\n fixedContainer: null,\r\n allDayContainer: null,\r\n allowDrag: true,\r\n allowResize: true,\r\n allowAllDayResize: true,\r\n onAppointmentDblClick: null,\r\n _collectorOffset: 0,\r\n groups: [],\r\n resources: []\r\n })\r\n }\r\n _optionChanged(args) {\r\n if (this.option(\"isRenovatedAppointments\")) {\r\n return\r\n }\r\n switch (args.name) {\r\n case \"items\":\r\n this._cleanFocusState();\r\n this._clearDropDownItems();\r\n this._clearDropDownItemsElements();\r\n this._repaintAppointments(args.value);\r\n this._renderDropDownAppointments();\r\n this._attachAppointmentsEvents();\r\n break;\r\n case \"fixedContainer\":\r\n case \"allDayContainer\":\r\n case \"onAppointmentDblClick\":\r\n break;\r\n case \"allowDrag\":\r\n case \"allowResize\":\r\n case \"allowAllDayResize\":\r\n this._invalidate();\r\n break;\r\n case \"focusedElement\":\r\n this._resetTabIndex($(args.value));\r\n super._optionChanged(args);\r\n break;\r\n case \"allowDelete\":\r\n break;\r\n case \"focusStateEnabled\":\r\n this._clearDropDownItemsElements();\r\n this._renderDropDownAppointments();\r\n super._optionChanged(args);\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _isAllDayAppointment(appointment) {\r\n return appointment.settings.length && appointment.settings[0].allDay || false\r\n }\r\n _isRepaintAppointment(appointment) {\r\n return !isDefined(appointment.needRepaint) || true === appointment.needRepaint\r\n }\r\n _isRepaintAll(appointments) {\r\n if (this.isAgendaView) {\r\n return true\r\n }\r\n for (var i = 0; i < appointments.length; i++) {\r\n if (!this._isRepaintAppointment(appointments[i])) {\r\n return false\r\n }\r\n }\r\n return true\r\n }\r\n _applyFragment(fragment, allDay) {\r\n if (fragment.children().length > 0) {\r\n this._getAppointmentContainer(allDay).append(fragment)\r\n }\r\n }\r\n _onEachAppointment(appointment, index, container, isRepaintAll) {\r\n if (true === (null === appointment || void 0 === appointment ? void 0 : appointment.needRemove)) {\r\n this._clearItem(appointment)\r\n } else if (isRepaintAll || this._isRepaintAppointment(appointment)) {\r\n (() => {\r\n appointment.needRepaint = false;\r\n this._clearItem(appointment);\r\n this._renderItem(index, appointment, container)\r\n })()\r\n }\r\n }\r\n _repaintAppointments(appointments) {\r\n this._renderByFragments(($commonFragment, $allDayFragment) => {\r\n var isRepaintAll = this._isRepaintAll(appointments);\r\n if (isRepaintAll) {\r\n this._getAppointmentContainer(true).html(\"\");\r\n this._getAppointmentContainer(false).html(\"\")\r\n }!appointments.length && this._cleanItemContainer();\r\n appointments.forEach((appointment, index) => {\r\n var container = this._isAllDayAppointment(appointment) ? $allDayFragment : $commonFragment;\r\n this._onEachAppointment(appointment, index, container, isRepaintAll)\r\n })\r\n })\r\n }\r\n _renderByFragments(renderFunction) {\r\n if (this.isVirtualScrolling) {\r\n var $commonFragment = $(domAdapter.createDocumentFragment());\r\n var $allDayFragment = $(domAdapter.createDocumentFragment());\r\n renderFunction($commonFragment, $allDayFragment);\r\n this._applyFragment($commonFragment, false);\r\n this._applyFragment($allDayFragment, true)\r\n } else {\r\n renderFunction(this._getAppointmentContainer(false), this._getAppointmentContainer(true))\r\n }\r\n }\r\n _attachAppointmentsEvents() {\r\n this._attachClickEvent();\r\n this._attachHoldEvent();\r\n this._attachContextMenuEvent();\r\n this._attachAppointmentDblClick();\r\n this._renderFocusState();\r\n this._attachFeedbackEvents();\r\n this._attachHoverEvents()\r\n }\r\n _clearItem(item) {\r\n var $items = this._findItemElementByItem(item.itemData);\r\n if (!$items.length) {\r\n return\r\n }\r\n each($items, (_, $item) => {\r\n $item.detach();\r\n $item.remove()\r\n })\r\n }\r\n _clearDropDownItems() {\r\n this._virtualAppointments = {}\r\n }\r\n _clearDropDownItemsElements() {\r\n this.invoke(\"clearCompactAppointments\")\r\n }\r\n _findItemElementByItem(item) {\r\n var result = [];\r\n var that = this;\r\n this.itemElements().each((function() {\r\n var $item = $(this);\r\n if ($item.data(that._itemDataKey()) === item) {\r\n result.push($item)\r\n }\r\n }));\r\n return result\r\n }\r\n _itemClass() {\r\n return APPOINTMENT_ITEM_CLASS\r\n }\r\n _itemContainer() {\r\n var $container = super._itemContainer();\r\n var $result = $container;\r\n var $allDayContainer = this.option(\"allDayContainer\");\r\n if ($allDayContainer) {\r\n $result = $container.add($allDayContainer)\r\n }\r\n return $result\r\n }\r\n _cleanItemContainer() {\r\n super._cleanItemContainer();\r\n var $allDayContainer = this.option(\"allDayContainer\");\r\n if ($allDayContainer) {\r\n $allDayContainer.empty()\r\n }\r\n this._virtualAppointments = {}\r\n }\r\n _clean() {\r\n super._clean();\r\n delete this._$currentAppointment;\r\n delete this._initialSize;\r\n delete this._initialCoordinates\r\n }\r\n _init() {\r\n super._init();\r\n this.$element().addClass(COMPONENT_CLASS);\r\n this._preventSingleAppointmentClick = false\r\n }\r\n _renderAppointmentTemplate($container, appointment, model) {\r\n var config = {\r\n isAllDay: appointment.allDay,\r\n isRecurrence: appointment.recurrenceRule,\r\n html: isPlainObject(appointment) && appointment.html ? appointment.html : void 0\r\n };\r\n var formatText = this.invoke(\"getTextAndFormatDate\", model.appointmentData, this._currentAppointmentSettings.agendaSettings || model.targetedAppointmentData, \"TIME\");\r\n $container.append(this.isAgendaView ? createAgendaAppointmentLayout(formatText, config) : createAppointmentLayout(formatText, config))\r\n }\r\n _executeItemRenderAction(index, itemData, itemElement) {\r\n var action = this._getItemRenderAction();\r\n if (action) {\r\n action(this.invoke(\"mapAppointmentFields\", {\r\n itemData: itemData,\r\n itemElement: itemElement\r\n }))\r\n }\r\n delete this._currentAppointmentSettings\r\n }\r\n _itemClickHandler(e) {\r\n super._itemClickHandler(e, {}, {\r\n afterExecute: function(e) {\r\n this._processItemClick(e.args[0].event)\r\n }.bind(this)\r\n })\r\n }\r\n _processItemClick(e) {\r\n var $target = $(e.currentTarget);\r\n var data = this._getItemData($target);\r\n if (\"keydown\" === e.type || isFakeClickEvent(e)) {\r\n this.notifyObserver(\"showEditAppointmentPopup\", {\r\n data: data,\r\n target: $target\r\n });\r\n return\r\n }\r\n this._appointmentClickTimeout = setTimeout(() => {\r\n if (!this._preventSingleAppointmentClick && domAdapter.getBody().contains($target[0])) {\r\n this.notifyObserver(\"showAppointmentTooltip\", {\r\n data: data,\r\n target: $target\r\n })\r\n }\r\n this._preventSingleAppointmentClick = false\r\n }, 300)\r\n }\r\n _extendActionArgs($itemElement) {\r\n var args = super._extendActionArgs($itemElement);\r\n return this.invoke(\"mapAppointmentFields\", args)\r\n }\r\n _render() {\r\n super._render();\r\n this._attachAppointmentDblClick()\r\n }\r\n _attachAppointmentDblClick() {\r\n var that = this;\r\n var itemSelector = that._itemSelector();\r\n var itemContainer = this._itemContainer();\r\n eventsEngine.off(itemContainer, DBLCLICK_EVENT_NAME, itemSelector);\r\n eventsEngine.on(itemContainer, DBLCLICK_EVENT_NAME, itemSelector, e => {\r\n that._itemDXEventHandler(e, \"onAppointmentDblClick\", {}, {\r\n afterExecute(e) {\r\n that._dblClickHandler(e.args[0].event)\r\n }\r\n })\r\n })\r\n }\r\n _dblClickHandler(e) {\r\n var $targetAppointment = $(e.currentTarget);\r\n var appointmentData = this._getItemData($targetAppointment);\r\n clearTimeout(this._appointmentClickTimeout);\r\n this._preventSingleAppointmentClick = true;\r\n this.notifyObserver(\"showEditAppointmentPopup\", {\r\n data: appointmentData,\r\n target: $targetAppointment\r\n })\r\n }\r\n _renderItem(index, item, container) {\r\n var {\r\n itemData: itemData\r\n } = item;\r\n var $items = [];\r\n for (var i = 0; i < item.settings.length; i++) {\r\n var setting = item.settings[i];\r\n this._currentAppointmentSettings = setting;\r\n var $item = super._renderItem(index, itemData, container);\r\n $item.data(APPOINTMENT_SETTINGS_KEY, setting);\r\n $items.push($item)\r\n }\r\n return $items\r\n }\r\n _getItemContent($itemFrame) {\r\n $itemFrame.data(APPOINTMENT_SETTINGS_KEY, this._currentAppointmentSettings);\r\n var $itemContent = super._getItemContent($itemFrame);\r\n return $itemContent\r\n }\r\n _createItemByTemplate(itemTemplate, renderArgs) {\r\n var {\r\n itemData: itemData,\r\n container: container,\r\n index: index\r\n } = renderArgs;\r\n return itemTemplate.render({\r\n model: {\r\n appointmentData: itemData,\r\n targetedAppointmentData: this.invoke(\"getTargetedAppointmentData\", itemData, $(container).parent())\r\n },\r\n container: container,\r\n index: index\r\n })\r\n }\r\n _getAppointmentContainer(allDay) {\r\n var $allDayContainer = this.option(\"allDayContainer\");\r\n var $container = this.itemsContainer().not($allDayContainer);\r\n if (allDay && $allDayContainer) {\r\n $container = $allDayContainer\r\n }\r\n return $container\r\n }\r\n _postprocessRenderItem(args) {\r\n this._renderAppointment(args.itemElement, this._currentAppointmentSettings)\r\n }\r\n _renderAppointment(element, settings) {\r\n var _a;\r\n element.data(APPOINTMENT_SETTINGS_KEY, settings);\r\n this._applyResourceDataAttr(element);\r\n var rawAppointment = this._getItemData(element);\r\n var geometry = this.invoke(\"getAppointmentGeometry\", settings);\r\n var allowResize = this.option(\"allowResize\") && (!isDefined(settings.skipResizing) || isString(settings.skipResizing));\r\n var allowDrag = this.option(\"allowDrag\");\r\n var {\r\n allDay: allDay\r\n } = settings;\r\n this.invoke(\"setCellDataCacheAlias\", this._currentAppointmentSettings, geometry);\r\n if (settings.virtual) {\r\n var appointmentConfig = {\r\n itemData: rawAppointment,\r\n groupIndex: settings.groupIndex,\r\n groups: this.option(\"groups\")\r\n };\r\n var deferredColor = this.option(\"getAppointmentColor\")(appointmentConfig);\r\n this._processVirtualAppointment(settings, element, rawAppointment, deferredColor)\r\n } else {\r\n var config = {\r\n data: rawAppointment,\r\n groupIndex: settings.groupIndex,\r\n observer: this.option(\"observer\"),\r\n geometry: geometry,\r\n direction: settings.direction || \"vertical\",\r\n allowResize: allowResize,\r\n allowDrag: allowDrag,\r\n allDay: allDay,\r\n reduced: settings.appointmentReduced,\r\n isCompact: settings.isCompact,\r\n startDate: new Date(null === (_a = settings.info) || void 0 === _a ? void 0 : _a.appointment.startDate),\r\n cellWidth: this.invoke(\"getCellWidth\"),\r\n cellHeight: this.invoke(\"getCellHeight\"),\r\n resizableConfig: this._resizableConfig(rawAppointment, settings),\r\n groups: this.option(\"groups\"),\r\n getAppointmentColor: this.option(\"getAppointmentColor\"),\r\n getResourceDataAccessors: this.option(\"getResourceDataAccessors\")\r\n };\r\n if (this.isAgendaView) {\r\n var agendaResourceProcessor = this.option(\"getAgendaResourceProcessor\")();\r\n config.createPlainResourceListAsync = rawAppointment => agendaResourceProcessor.createListAsync(rawAppointment)\r\n }\r\n this._createComponent(element, this.isAgendaView ? AgendaAppointment : Appointment, _extends(_extends({}, config), {\r\n dataAccessors: this.option(\"dataAccessors\"),\r\n getResizableStep: this.option(\"getResizableStep\")\r\n }))\r\n }\r\n }\r\n _applyResourceDataAttr($appointment) {\r\n var dataAccessors = this.option(\"getResourceDataAccessors\")();\r\n var rawAppointment = this._getItemData($appointment);\r\n each(dataAccessors.getter, key => {\r\n var value = dataAccessors.getter[key](rawAppointment);\r\n if (isDefined(value)) {\r\n var prefix = \"data-\".concat(normalizeKey(key.toLowerCase()), \"-\");\r\n wrapToArray(value).forEach(value => $appointment.attr(prefix + normalizeKey(value), true))\r\n }\r\n })\r\n }\r\n _resizableConfig(appointmentData, itemSetting) {\r\n return {\r\n area: this._calculateResizableArea(itemSetting, appointmentData),\r\n onResizeStart: function(e) {\r\n this.resizeOccur = true;\r\n this._$currentAppointment = $(e.element);\r\n if (this.invoke(\"needRecalculateResizableArea\")) {\r\n var updatedArea = this._calculateResizableArea(this._$currentAppointment.data(APPOINTMENT_SETTINGS_KEY), this._$currentAppointment.data(\"dxItemData\"));\r\n e.component.option(\"area\", updatedArea);\r\n e.component._renderDragOffsets(e.event)\r\n }\r\n this._initialSize = {\r\n width: e.width,\r\n height: e.height\r\n };\r\n this._initialCoordinates = locate(this._$currentAppointment)\r\n }.bind(this),\r\n onResizeEnd: function(e) {\r\n this.resizeOccur = false;\r\n this._resizeEndHandler(e)\r\n }.bind(this)\r\n }\r\n }\r\n _calculateResizableArea(itemSetting, appointmentData) {\r\n var area = this.$element().closest(\".dx-scrollable-content\");\r\n return this.invoke(\"getResizableAppointmentArea\", {\r\n coordinates: {\r\n left: itemSetting.left,\r\n top: 0,\r\n groupIndex: itemSetting.groupIndex\r\n },\r\n allDay: itemSetting.allDay\r\n }) || area\r\n }\r\n _resizeEndHandler(e) {\r\n var $element = $(e.element);\r\n var {\r\n allDay: allDay,\r\n info: info\r\n } = $element.data(\"dxAppointmentSettings\");\r\n var sourceAppointment = this._getItemData($element);\r\n var dateRange = {};\r\n if (allDay) {\r\n dateRange = this.resizeAllDay(e)\r\n } else {\r\n var startDate = this._getEndResizeAppointmentStartDate(e, sourceAppointment, info.appointment);\r\n var {\r\n endDate: endDate\r\n } = info.appointment;\r\n dateRange = this._getDateRange(e, startDate, endDate)\r\n }\r\n this.updateResizedAppointment($element, dateRange, this.option(\"dataAccessors\"), this.option(\"timeZoneCalculator\"))\r\n }\r\n resizeAllDay(e) {\r\n var $element = $(e.element);\r\n var timeZoneCalculator = this.option(\"timeZoneCalculator\");\r\n var dataAccessors = this.option(\"dataAccessors\");\r\n return getAppointmentDateRange({\r\n handles: e.handles,\r\n appointmentSettings: $element.data(\"dxAppointmentSettings\"),\r\n isVerticalViewDirection: this.option(\"isVerticalViewDirection\")(),\r\n isVerticalGroupedWorkSpace: this.option(\"isVerticalGroupedWorkSpace\")(),\r\n appointmentRect: getBoundingRect($element[0]),\r\n parentAppointmentRect: getBoundingRect($element.parent()[0]),\r\n viewDataProvider: this.option(\"getViewDataProvider\")(),\r\n isDateAndTimeView: this.option(\"isDateAndTimeView\")(),\r\n startDayHour: this.invoke(\"getStartDayHour\"),\r\n endDayHour: this.invoke(\"getEndDayHour\"),\r\n timeZoneCalculator: timeZoneCalculator,\r\n dataAccessors: dataAccessors,\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n DOMMetaData: this.option(\"getDOMElementsMetaData\")()\r\n })\r\n }\r\n updateResizedAppointment($element, dateRange, dataAccessors, timeZoneCalculator) {\r\n var sourceAppointment = this._getItemData($element);\r\n var modifiedAppointmentAdapter = createAppointmentAdapter(sourceAppointment, dataAccessors, timeZoneCalculator).clone();\r\n modifiedAppointmentAdapter.startDate = new Date(dateRange.startDate);\r\n modifiedAppointmentAdapter.endDate = new Date(dateRange.endDate);\r\n this.notifyObserver(\"updateAppointmentAfterResize\", {\r\n target: sourceAppointment,\r\n data: modifiedAppointmentAdapter.clone({\r\n pathTimeZone: \"fromGrid\"\r\n }).source(),\r\n $appointment: $element\r\n })\r\n }\r\n _getEndResizeAppointmentStartDate(e, rawAppointment, appointmentInfo) {\r\n var timeZoneCalculator = this.option(\"timeZoneCalculator\");\r\n var appointmentAdapter = createAppointmentAdapter(rawAppointment, this.option(\"dataAccessors\"), timeZoneCalculator);\r\n var {\r\n startDate: startDate\r\n } = appointmentInfo;\r\n var recurrenceProcessor = getRecurrenceProcessor();\r\n var {\r\n recurrenceRule: recurrenceRule,\r\n startDateTimeZone: startDateTimeZone\r\n } = appointmentAdapter;\r\n var isAllDay = this.invoke(\"isAllDay\", rawAppointment);\r\n var isRecurrent = recurrenceProcessor.isValidRecurrenceRule(recurrenceRule);\r\n if (!e.handles.top && !isRecurrent && !isAllDay) {\r\n startDate = timeZoneCalculator.createDate(appointmentAdapter.startDate, {\r\n appointmentTimeZone: startDateTimeZone,\r\n path: \"toGrid\"\r\n })\r\n }\r\n return startDate\r\n }\r\n _getDateRange(e, startDate, endDate) {\r\n var itemData = this._getItemData(e.element);\r\n var deltaTime = this.invoke(\"getDeltaTime\", e, this._initialSize, itemData);\r\n var renderingStrategyDirection = this.invoke(\"getRenderingStrategyDirection\");\r\n var isStartDateChanged = false;\r\n var isAllDay = this.invoke(\"isAllDay\", itemData);\r\n var needCorrectDates = this.invoke(\"needCorrectAppointmentDates\") && !isAllDay;\r\n var startTime;\r\n var endTime;\r\n if (\"vertical\" !== renderingStrategyDirection || isAllDay) {\r\n isStartDateChanged = this.option(\"rtlEnabled\") ? e.handles.right : e.handles.left\r\n } else {\r\n isStartDateChanged = e.handles.top\r\n }\r\n if (isStartDateChanged) {\r\n startTime = needCorrectDates ? this._correctStartDateByDelta(startDate, deltaTime) : startDate.getTime() - deltaTime;\r\n startTime += timeZoneUtils.getTimezoneOffsetChangeInMs(startDate, endDate, startTime, endDate);\r\n endTime = endDate.getTime()\r\n } else {\r\n startTime = startDate.getTime();\r\n endTime = needCorrectDates ? this._correctEndDateByDelta(endDate, deltaTime) : endDate.getTime() + deltaTime;\r\n endTime -= timeZoneUtils.getTimezoneOffsetChangeInMs(startDate, endDate, startDate, endTime)\r\n }\r\n return {\r\n startDate: new Date(startTime),\r\n endDate: new Date(endTime)\r\n }\r\n }\r\n _correctEndDateByDelta(endDate, deltaTime) {\r\n var endDayHour = this.invoke(\"getEndDayHour\");\r\n var startDayHour = this.invoke(\"getStartDayHour\");\r\n var result = endDate.getTime() + deltaTime;\r\n var visibleDayDuration = (endDayHour - startDayHour) * toMs(\"hour\");\r\n var daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);\r\n var maxDate = new Date(endDate);\r\n var minDate = new Date(endDate);\r\n minDate.setHours(startDayHour, 0, 0, 0);\r\n maxDate.setHours(endDayHour, 0, 0, 0);\r\n if (result > maxDate.getTime() || result <= minDate.getTime()) {\r\n var tailOfCurrentDay = maxDate.getTime() - endDate.getTime();\r\n var tailOfPrevDays = deltaTime - tailOfCurrentDay;\r\n var correctedEndDate = new Date(endDate).setDate(endDate.getDate() + daysCount);\r\n var lastDay = new Date(correctedEndDate);\r\n lastDay.setHours(startDayHour, 0, 0, 0);\r\n result = lastDay.getTime() + tailOfPrevDays - visibleDayDuration * (daysCount - 1)\r\n }\r\n return result\r\n }\r\n _correctStartDateByDelta(startDate, deltaTime) {\r\n var endDayHour = this.invoke(\"getEndDayHour\");\r\n var startDayHour = this.invoke(\"getStartDayHour\");\r\n var result = startDate.getTime() - deltaTime;\r\n var visibleDayDuration = (endDayHour - startDayHour) * toMs(\"hour\");\r\n var daysCount = deltaTime > 0 ? Math.ceil(deltaTime / visibleDayDuration) : Math.floor(deltaTime / visibleDayDuration);\r\n var maxDate = new Date(startDate);\r\n var minDate = new Date(startDate);\r\n minDate.setHours(startDayHour, 0, 0, 0);\r\n maxDate.setHours(endDayHour, 0, 0, 0);\r\n if (result < minDate.getTime() || result >= maxDate.getTime()) {\r\n var tailOfCurrentDay = startDate.getTime() - minDate.getTime();\r\n var tailOfPrevDays = deltaTime - tailOfCurrentDay;\r\n var firstDay = new Date(startDate.setDate(startDate.getDate() - daysCount));\r\n firstDay.setHours(endDayHour, 0, 0, 0);\r\n result = firstDay.getTime() - tailOfPrevDays + visibleDayDuration * (daysCount - 1)\r\n }\r\n return result\r\n }\r\n _processVirtualAppointment(appointmentSetting, $appointment, appointmentData, color) {\r\n var virtualAppointment = appointmentSetting.virtual;\r\n var virtualGroupIndex = virtualAppointment.index;\r\n if (!isDefined(this._virtualAppointments[virtualGroupIndex])) {\r\n this._virtualAppointments[virtualGroupIndex] = {\r\n coordinates: {\r\n top: virtualAppointment.top,\r\n left: virtualAppointment.left\r\n },\r\n items: {\r\n data: [],\r\n colors: [],\r\n settings: []\r\n },\r\n isAllDay: !!virtualAppointment.isAllDay,\r\n buttonColor: color\r\n }\r\n }\r\n appointmentSetting.targetedAppointmentData = this.invoke(\"getTargetedAppointmentData\", appointmentData, $appointment);\r\n this._virtualAppointments[virtualGroupIndex].items.settings.push(appointmentSetting);\r\n this._virtualAppointments[virtualGroupIndex].items.data.push(appointmentData);\r\n this._virtualAppointments[virtualGroupIndex].items.colors.push(color);\r\n $appointment.remove()\r\n }\r\n _renderContentImpl() {\r\n super._renderContentImpl();\r\n this._renderDropDownAppointments()\r\n }\r\n _renderDropDownAppointments() {\r\n this._renderByFragments(($commonFragment, $allDayFragment) => {\r\n each(this._virtualAppointments, groupIndex => {\r\n var virtualGroup = this._virtualAppointments[groupIndex];\r\n var virtualItems = virtualGroup.items;\r\n var virtualCoordinates = virtualGroup.coordinates;\r\n var $fragment = virtualGroup.isAllDay ? $allDayFragment : $commonFragment;\r\n var {\r\n left: left\r\n } = virtualCoordinates;\r\n var buttonWidth = this.invoke(\"getDropDownAppointmentWidth\", virtualGroup.isAllDay);\r\n var buttonHeight = this.invoke(\"getDropDownAppointmentHeight\");\r\n var rtlOffset = this.option(\"rtlEnabled\") ? buttonWidth : 0;\r\n this.notifyObserver(\"renderCompactAppointments\", {\r\n $container: $fragment,\r\n coordinates: {\r\n top: virtualCoordinates.top,\r\n left: left + rtlOffset\r\n },\r\n items: virtualItems,\r\n buttonColor: virtualGroup.buttonColor,\r\n width: buttonWidth - this.option(\"_collectorOffset\"),\r\n height: buttonHeight,\r\n onAppointmentClick: this.option(\"onItemClick\"),\r\n allowDrag: this.option(\"allowDrag\"),\r\n cellWidth: this.invoke(\"getCellWidth\"),\r\n isCompact: this.invoke(\"isAdaptive\") || this._isGroupCompact(virtualGroup)\r\n })\r\n })\r\n })\r\n }\r\n _isGroupCompact(virtualGroup) {\r\n return !virtualGroup.isAllDay && this.invoke(\"supportCompactDropDownAppointments\")\r\n }\r\n _sortAppointmentsByStartDate(appointments) {\r\n return sortAppointmentsByStartDate(appointments, this.option(\"dataAccessors\"))\r\n }\r\n _processRecurrenceAppointment(appointment, index, skipLongAppointments) {\r\n var recurrenceRule = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"recurrenceRule\", appointment);\r\n var result = {\r\n parts: [],\r\n indexes: []\r\n };\r\n if (recurrenceRule) {\r\n var dates = appointment.settings || appointment;\r\n var startDate = new Date(ExpressionUtils.getField(this.option(\"dataAccessors\"), \"startDate\", dates));\r\n var startDateTimeZone = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"startDateTimeZone\", appointment);\r\n var endDate = new Date(ExpressionUtils.getField(this.option(\"dataAccessors\"), \"endDate\", dates));\r\n var appointmentDuration = endDate.getTime() - startDate.getTime();\r\n var recurrenceException = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"recurrenceException\", appointment);\r\n var startViewDate = this.invoke(\"getStartViewDate\");\r\n var endViewDate = this.invoke(\"getEndViewDate\");\r\n var timezoneCalculator = this.option(\"timeZoneCalculator\");\r\n var recurrentDates = getRecurrenceProcessor().generateDates({\r\n rule: recurrenceRule,\r\n exception: recurrenceException,\r\n start: startDate,\r\n end: endDate,\r\n min: startViewDate,\r\n max: endViewDate,\r\n appointmentTimezoneOffset: timezoneCalculator.getOriginStartDateOffsetInMs(startDate, startDateTimeZone, false)\r\n });\r\n var recurrentDateCount = appointment.settings ? 1 : recurrentDates.length;\r\n for (var i = 0; i < recurrentDateCount; i++) {\r\n var appointmentPart = extend({}, appointment, true);\r\n if (recurrentDates[i]) {\r\n var appointmentSettings = this._applyStartDateToObj(recurrentDates[i], {});\r\n this._applyEndDateToObj(new Date(recurrentDates[i].getTime() + appointmentDuration), appointmentSettings);\r\n appointmentPart.settings = appointmentSettings\r\n } else {\r\n appointmentPart.settings = dates\r\n }\r\n result.parts.push(appointmentPart);\r\n if (!skipLongAppointments) {\r\n this._processLongAppointment(appointmentPart, result)\r\n }\r\n }\r\n result.indexes.push(index)\r\n }\r\n return result\r\n }\r\n _processLongAppointment(appointment, result) {\r\n var parts = this.splitAppointmentByDay(appointment);\r\n var partCount = parts.length;\r\n var endViewDate = this.invoke(\"getEndViewDate\").getTime();\r\n var startViewDate = this.invoke(\"getStartViewDate\").getTime();\r\n var timeZoneCalculator = this.option(\"timeZoneCalculator\");\r\n result = result || {\r\n parts: []\r\n };\r\n if (partCount > 1) {\r\n extend(appointment, parts[0]);\r\n for (var i = 1; i < partCount; i++) {\r\n var startDate = ExpressionUtils.getField(this.option(\"dataAccessors\"), \"startDate\", parts[i].settings).getTime();\r\n startDate = timeZoneCalculator.createDate(startDate, {\r\n path: \"toGrid\"\r\n });\r\n if (startDate < endViewDate && startDate > startViewDate) {\r\n result.parts.push(parts[i])\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n _reduceRecurrenceAppointments(recurrenceIndexes, appointments) {\r\n each(recurrenceIndexes, (i, index) => {\r\n appointments.splice(index - i, 1)\r\n })\r\n }\r\n _combineAppointments(appointments, additionalAppointments) {\r\n if (additionalAppointments.length) {\r\n appointments.push(...additionalAppointments)\r\n }\r\n this._sortAppointmentsByStartDate(appointments)\r\n }\r\n _applyStartDateToObj(startDate, obj) {\r\n ExpressionUtils.setField(this.option(\"dataAccessors\"), \"startDate\", obj, startDate);\r\n return obj\r\n }\r\n _applyEndDateToObj(endDate, obj) {\r\n ExpressionUtils.setField(this.option(\"dataAccessors\"), \"endDate\", obj, endDate);\r\n return obj\r\n }\r\n moveAppointmentBack(dragEvent) {\r\n var $appointment = this._$currentAppointment;\r\n var size = this._initialSize;\r\n var coords = this._initialCoordinates;\r\n if (dragEvent) {\r\n this._removeDragSourceClassFromDraggedAppointment();\r\n if (isDeferred(dragEvent.cancel)) {\r\n dragEvent.cancel.resolve(true)\r\n } else {\r\n dragEvent.cancel = true\r\n }\r\n }\r\n if ($appointment && !dragEvent) {\r\n if (coords) {\r\n move($appointment, coords);\r\n delete this._initialSize\r\n }\r\n if (size) {\r\n setOuterWidth($appointment, size.width);\r\n setOuterHeight($appointment, size.height);\r\n delete this._initialCoordinates\r\n }\r\n }\r\n }\r\n focus() {\r\n if (this._$currentAppointment) {\r\n var focusedElement = getPublicElement(this._$currentAppointment);\r\n this.option(\"focusedElement\", focusedElement);\r\n eventsEngine.trigger(focusedElement, \"focus\")\r\n }\r\n }\r\n splitAppointmentByDay(appointment) {\r\n var dates = appointment.settings || appointment;\r\n var dataAccessors = this.option(\"dataAccessors\");\r\n var originalStartDate = new Date(ExpressionUtils.getField(dataAccessors, \"startDate\", dates));\r\n var startDate = dateUtils.makeDate(originalStartDate);\r\n var endDate = dateUtils.makeDate(ExpressionUtils.getField(dataAccessors, \"endDate\", dates));\r\n var maxAllowedDate = this.invoke(\"getEndViewDate\");\r\n var startDayHour = this.invoke(\"getStartDayHour\");\r\n var endDayHour = this.invoke(\"getEndDayHour\");\r\n var timeZoneCalculator = this.option(\"timeZoneCalculator\");\r\n var adapter = createAppointmentAdapter(appointment, dataAccessors, timeZoneCalculator);\r\n var appointmentIsLong = getAppointmentTakesSeveralDays(adapter);\r\n var result = [];\r\n startDate = timeZoneCalculator.createDate(startDate, {\r\n path: \"toGrid\"\r\n });\r\n endDate = timeZoneCalculator.createDate(endDate, {\r\n path: \"toGrid\"\r\n });\r\n if (startDate.getHours() <= endDayHour && startDate.getHours() >= startDayHour && !appointmentIsLong) {\r\n result.push(this._applyStartDateToObj(new Date(startDate), {\r\n appointmentData: appointment\r\n }));\r\n startDate.setDate(startDate.getDate() + 1)\r\n }\r\n while (appointmentIsLong && startDate.getTime() < endDate.getTime() && startDate < maxAllowedDate) {\r\n var currentStartDate = new Date(startDate);\r\n var currentEndDate = new Date(startDate);\r\n this._checkStartDate(currentStartDate, originalStartDate, startDayHour);\r\n this._checkEndDate(currentEndDate, endDate, endDayHour);\r\n var appointmentData = deepExtendArraySafe({}, appointment, true);\r\n var appointmentSettings = {};\r\n this._applyStartDateToObj(currentStartDate, appointmentSettings);\r\n this._applyEndDateToObj(currentEndDate, appointmentSettings);\r\n appointmentData.settings = appointmentSettings;\r\n result.push(appointmentData);\r\n startDate = dateUtils.trimTime(startDate);\r\n startDate.setDate(startDate.getDate() + 1);\r\n startDate.setHours(startDayHour)\r\n }\r\n return result\r\n }\r\n _checkStartDate(currentDate, originalDate, startDayHour) {\r\n if (!dateUtils.sameDate(currentDate, originalDate) || currentDate.getHours() <= startDayHour) {\r\n currentDate.setHours(startDayHour, 0, 0, 0)\r\n } else {\r\n currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())\r\n }\r\n }\r\n _checkEndDate(currentDate, originalDate, endDayHour) {\r\n if (!dateUtils.sameDate(currentDate, originalDate) || currentDate.getHours() > endDayHour) {\r\n currentDate.setHours(endDayHour, 0, 0, 0)\r\n } else {\r\n currentDate.setHours(originalDate.getHours(), originalDate.getMinutes(), originalDate.getSeconds(), originalDate.getMilliseconds())\r\n }\r\n }\r\n _removeDragSourceClassFromDraggedAppointment() {\r\n var $appointments = this._itemElements().filter(\".\".concat(APPOINTMENT_DRAG_SOURCE_CLASS));\r\n $appointments.each((_, element) => {\r\n var appointmentInstance = $(element).dxSchedulerAppointment(\"instance\");\r\n appointmentInstance.option(\"isDragSource\", false)\r\n })\r\n }\r\n _setDragSourceAppointment(appointment, settings) {\r\n var $appointments = this._findItemElementByItem(appointment);\r\n var {\r\n startDate: startDate,\r\n endDate: endDate\r\n } = settings.info.sourceAppointment;\r\n var {\r\n groupIndex: groupIndex\r\n } = settings;\r\n $appointments.forEach($item => {\r\n var {\r\n info: itemInfo,\r\n groupIndex: itemGroupIndex\r\n } = $item.data(APPOINTMENT_SETTINGS_KEY);\r\n var {\r\n startDate: itemStartDate,\r\n endDate: itemEndDate\r\n } = itemInfo.sourceAppointment;\r\n var appointmentInstance = $item.dxSchedulerAppointment(\"instance\");\r\n var isDragSource = startDate.getTime() === itemStartDate.getTime() && endDate.getTime() === itemEndDate.getTime() && groupIndex === itemGroupIndex;\r\n appointmentInstance.option(\"isDragSource\", isDragSource)\r\n })\r\n }\r\n updateResizableArea() {\r\n var $allResizableElements = this.$element().find(\".dx-scheduler-appointment.dx-resizable\");\r\n var horizontalResizables = grep($allResizableElements, el => {\r\n var $el = $(el);\r\n var resizableInst = $el.dxResizable(\"instance\");\r\n var {\r\n area: area,\r\n handles: handles\r\n } = resizableInst.option();\r\n return (\"right left\" === handles || \"left right\" === handles) && isPlainObject(area)\r\n });\r\n each(horizontalResizables, (_, el) => {\r\n var $el = $(el);\r\n var position = locate($el);\r\n var appointmentData = this._getItemData($el);\r\n var area = this._calculateResizableArea({\r\n left: position.left\r\n }, appointmentData);\r\n $el.dxResizable(\"instance\").option(\"area\", area)\r\n })\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerAppointments\", SchedulerAppointments);\r\nexport default SchedulerAppointments;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n addToStyles\r\n} from \"../workspaces/utils\";\r\nimport messageLocalization from \"../../../../localization/message\";\r\nimport dateLocalization from \"../../../../localization/date\";\r\nvar EditorLabelLocalizationConst = \"dxScheduler-editorLabelEndDate\";\r\nexport var getAppointmentStyles = viewModel => {\r\n var {\r\n geometry: {\r\n height: height,\r\n left: left,\r\n top: top,\r\n width: width\r\n }\r\n } = viewModel;\r\n return addToStyles([{\r\n attr: \"height\",\r\n value: \"\".concat(height || 50, \"px\")\r\n }, {\r\n attr: \"width\",\r\n value: \"\".concat(width || 50, \"px\")\r\n }, {\r\n attr: \"top\",\r\n value: \"\".concat(top, \"px\")\r\n }, {\r\n attr: \"left\",\r\n value: \"\".concat(left, \"px\")\r\n }])\r\n};\r\nexport var getAppointmentKey = geometry => {\r\n var {\r\n height: height,\r\n left: left,\r\n top: top,\r\n width: width\r\n } = geometry;\r\n return \"\".concat(left, \"-\").concat(top, \"-\").concat(width, \"-\").concat(height)\r\n};\r\nexport var getReducedIconTooltipText = endDate => {\r\n var tooltipLabel = messageLocalization.format(EditorLabelLocalizationConst);\r\n if (!endDate) {\r\n return tooltipLabel\r\n }\r\n var date = new Date(endDate);\r\n var monthAndDay = dateLocalization.format(date, \"monthAndDay\");\r\n var year = dateLocalization.format(date, \"year\");\r\n return \"\".concat(tooltipLabel, \": \").concat(monthAndDay, \", \").concat(year)\r\n};\r\nexport var mergeStylesWithColor = (color, styles) => !color ? styles : addToStyles([{\r\n attr: \"backgroundColor\",\r\n value: color\r\n}], styles);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/content/details/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"dateText\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n dateText: dateText\r\n }\r\n } = _ref;\r\n return createVNode(1, \"div\", \"dx-scheduler-appointment-content-details\", createVNode(1, \"div\", \"dx-scheduler-appointment-content-date\", dateText, 0), 2)\r\n};\r\nexport var AppointmentDetailsProps = {\r\n dateText: \"\"\r\n};\r\nexport class AppointmentDetails extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAppointmentDetails.defaultProps = AppointmentDetailsProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/content/title/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"text\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n text: text\r\n }\r\n } = _ref;\r\n return createVNode(1, \"div\", \"dx-scheduler-appointment-title\", text, 0)\r\n};\r\nexport var AppointmentTitleProps = {\r\n text: \"\"\r\n};\r\nexport class AppointmentTitle extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAppointmentTitle.defaultProps = AppointmentTitleProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/content/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"appointmentTemplate\", \"data\", \"dateText\", \"hideReducedIconTooltip\", \"index\", \"isRecurrent\", \"isReduced\", \"showReducedIconTooltip\", \"text\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n AppointmentDetails\r\n} from \"./details/layout\";\r\nimport {\r\n AppointmentTitle\r\n} from \"./title/layout\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n appointmentTemplate: appointmentTemplate,\r\n data: data,\r\n dateText: dateText,\r\n index: index,\r\n isRecurrent: isRecurrent,\r\n isReduced: isReduced,\r\n text: text\r\n },\r\n refReducedIcon: refReducedIcon\r\n } = _ref;\r\n var AppointmentTemplate = appointmentTemplate;\r\n return createVNode(1, \"div\", \"dx-scheduler-appointment-content\", appointmentTemplate ? AppointmentTemplate({\r\n data: data,\r\n index: index\r\n }) : createFragment([createComponentVNode(2, AppointmentTitle, {\r\n text: text\r\n }), createComponentVNode(2, AppointmentDetails, {\r\n dateText: dateText\r\n }), isRecurrent && createVNode(1, \"div\", \"dx-scheduler-appointment-recurrence-icon dx-icon-repeat\"), isReduced && createVNode(1, \"div\", \"dx-scheduler-appointment-reduced-icon\", null, 1, null, null, refReducedIcon)], 0), 0)\r\n};\r\nexport var AppointmentContentProps = {\r\n text: \"\",\r\n dateText: \"\",\r\n isRecurrent: false,\r\n isReduced: false,\r\n index: 0\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class AppointmentContent extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.refReducedIcon = infernoCreateRef();\r\n this.bindHoverEffect = this.bindHoverEffect.bind(this);\r\n this.onReducedIconMouseEnter = this.onReducedIconMouseEnter.bind(this);\r\n this.onReducedIconMouseLeave = this.onReducedIconMouseLeave.bind(this)\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.bindHoverEffect, [this.props.showReducedIconTooltip, this.props.data, this.props.hideReducedIconTooltip])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.showReducedIconTooltip, this.props.data, this.props.hideReducedIconTooltip])\r\n }\r\n bindHoverEffect() {\r\n var _this$refReducedIcon$, _this$refReducedIcon$2;\r\n var onMouseEnter = () => this.onReducedIconMouseEnter();\r\n var onMouseLeave = () => this.onReducedIconMouseLeave();\r\n null === (_this$refReducedIcon$ = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$ ? void 0 : _this$refReducedIcon$.addEventListener(\"mouseenter\", onMouseEnter);\r\n null === (_this$refReducedIcon$2 = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$2 ? void 0 : _this$refReducedIcon$2.addEventListener(\"mouseleave\", onMouseLeave);\r\n return () => {\r\n var _this$refReducedIcon$3, _this$refReducedIcon$4;\r\n null === (_this$refReducedIcon$3 = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$3 ? void 0 : _this$refReducedIcon$3.removeEventListener(\"mouseenter\", onMouseEnter);\r\n null === (_this$refReducedIcon$4 = this.refReducedIcon.current) || void 0 === _this$refReducedIcon$4 ? void 0 : _this$refReducedIcon$4.removeEventListener(\"mouseleave\", onMouseLeave)\r\n }\r\n }\r\n onReducedIconMouseEnter() {\r\n this.props.showReducedIconTooltip({\r\n target: this.refReducedIcon.current,\r\n endDate: this.props.data.appointmentData.endDate\r\n })\r\n }\r\n onReducedIconMouseLeave() {\r\n this.props.hideReducedIconTooltip()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n appointmentTemplate: getTemplate(props.appointmentTemplate)\r\n }),\r\n refReducedIcon: this.refReducedIcon,\r\n onReducedIconMouseEnter: this.onReducedIconMouseEnter,\r\n onReducedIconMouseLeave: this.onReducedIconMouseLeave,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAppointmentContent.defaultProps = AppointmentContentProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/resources/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getAppointmentColor as getDeferredAppointmentColor\r\n} from \"../../../../__internal/scheduler/resources/m_utils\";\r\nexport var getAppointmentColor = (resourceConfig, appointmentConfig) => getDeferredAppointmentColor(_extends({}, resourceConfig, {\r\n dataAccessors: resourceConfig.resourcesDataAccessors\r\n}), appointmentConfig);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointments_context.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n createContext\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var AppointmentsContext = createContext(void 0);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/appointment.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"appointmentTemplate\", \"groups\", \"hideReducedIconTooltip\", \"index\", \"onItemClick\", \"onItemDoubleClick\", \"showReducedIconTooltip\", \"viewModel\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n getAppointmentStyles,\r\n mergeStylesWithColor\r\n} from \"./utils\";\r\nimport {\r\n AppointmentContent\r\n} from \"./content/layout\";\r\nimport {\r\n Widget\r\n} from \"../../common/widget\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n getAppointmentColor\r\n} from \"../resources/utils\";\r\nimport {\r\n AppointmentsContext\r\n} from \"../appointments_context\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n data: data,\r\n dateText: dateText,\r\n isReduced: isReduced,\r\n onItemClick: onItemClick,\r\n props: {\r\n appointmentTemplate: appointmentTemplate,\r\n hideReducedIconTooltip: hideReducedIconTooltip,\r\n index: index,\r\n showReducedIconTooltip: showReducedIconTooltip,\r\n viewModel: {\r\n info: {\r\n isRecurrent: isRecurrent\r\n }\r\n }\r\n },\r\n ref: ref,\r\n styles: styles,\r\n text: text\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, Widget, _extends({\r\n focusStateEnabled: true,\r\n onClick: onItemClick,\r\n rootElementRef: ref,\r\n style: normalizeStyles(styles),\r\n classes: classes,\r\n hint: text\r\n }, {\r\n role: \"button\",\r\n \"data-index\": index\r\n }, {\r\n children: createComponentVNode(2, AppointmentContent, {\r\n text: text,\r\n isReduced: isReduced,\r\n dateText: dateText,\r\n isRecurrent: isRecurrent,\r\n index: index,\r\n data: data,\r\n showReducedIconTooltip: showReducedIconTooltip,\r\n hideReducedIconTooltip: hideReducedIconTooltip,\r\n appointmentTemplate: appointmentTemplate\r\n })\r\n })))\r\n};\r\nexport var AppointmentProps = {\r\n index: 0\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Appointment extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.ref = infernoCreateRef();\r\n this.state = {\r\n color: void 0\r\n };\r\n this.updateStylesEffect = this.updateStylesEffect.bind(this);\r\n this.bindDoubleClickEffect = this.bindDoubleClickEffect.bind(this);\r\n this.onItemClick = this.onItemClick.bind(this);\r\n this.onItemDoubleClick = this.onItemDoubleClick.bind(this)\r\n }\r\n get appointmentsContextValue() {\r\n if (this.context[AppointmentsContext.id]) {\r\n return this.context[AppointmentsContext.id]\r\n }\r\n return AppointmentsContext.defaultValue\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateStylesEffect, [this.props.viewModel, this.appointmentsContextValue, this.props.groups]), new InfernoEffect(this.bindDoubleClickEffect, [])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.viewModel, this.appointmentsContextValue, this.props.groups])\r\n }\r\n updateStylesEffect() {\r\n var _viewModel$info$group;\r\n var {\r\n viewModel: viewModel\r\n } = this.props;\r\n var groupIndex = null !== (_viewModel$info$group = viewModel.info.groupIndex) && void 0 !== _viewModel$info$group ? _viewModel$info$group : 0;\r\n var {\r\n appointment: appointment\r\n } = viewModel;\r\n getAppointmentColor({\r\n resources: this.appointmentsContextValue.resources,\r\n resourceLoaderMap: this.appointmentsContextValue.resourceLoaderMap,\r\n resourcesDataAccessors: this.appointmentsContextValue.dataAccessors.resources,\r\n loadedResources: this.appointmentsContextValue.loadedResources\r\n }, {\r\n itemData: appointment,\r\n groupIndex: groupIndex,\r\n groups: this.props.groups\r\n }).then(color => {\r\n this.setState(__state_argument => ({\r\n color: color\r\n }))\r\n }).catch(() => \"\")\r\n }\r\n bindDoubleClickEffect() {\r\n var _this$ref$current;\r\n var onDoubleClick = () => this.onItemDoubleClick();\r\n null === (_this$ref$current = this.ref.current) || void 0 === _this$ref$current ? void 0 : _this$ref$current.addEventListener(\"dblclick\", onDoubleClick);\r\n return () => {\r\n var _this$ref$current2;\r\n null === (_this$ref$current2 = this.ref.current) || void 0 === _this$ref$current2 ? void 0 : _this$ref$current2.removeEventListener(\"dblclick\", onDoubleClick)\r\n }\r\n }\r\n get appointmentStyles() {\r\n return getAppointmentStyles(this.props.viewModel)\r\n }\r\n get styles() {\r\n return mergeStylesWithColor(this.state.color, this.appointmentStyles)\r\n }\r\n get text() {\r\n return this.props.viewModel.appointment.text\r\n }\r\n get isReduced() {\r\n var {\r\n appointmentReduced: appointmentReduced\r\n } = this.props.viewModel.info;\r\n return !!appointmentReduced\r\n }\r\n get classes() {\r\n var {\r\n focused: focused,\r\n info: {\r\n allDay: allDay,\r\n appointmentReduced: appointmentReduced,\r\n direction: direction,\r\n isRecurrent: isRecurrent\r\n }\r\n } = this.props.viewModel;\r\n var isVerticalDirection = \"vertical\" === direction;\r\n return combineClasses({\r\n \"dx-state-focused\": !!focused,\r\n \"dx-scheduler-appointment\": true,\r\n \"dx-scheduler-appointment-horizontal\": !isVerticalDirection,\r\n \"dx-scheduler-appointment-vertical\": isVerticalDirection,\r\n \"dx-scheduler-appointment-recurrence\": isRecurrent,\r\n \"dx-scheduler-all-day-appointment\": allDay,\r\n \"dx-scheduler-appointment-reduced\": this.isReduced,\r\n \"dx-scheduler-appointment-head\": \"head\" === appointmentReduced,\r\n \"dx-scheduler-appointment-body\": \"body\" === appointmentReduced,\r\n \"dx-scheduler-appointment-tail\": \"tail\" === appointmentReduced\r\n })\r\n }\r\n get dateText() {\r\n return this.props.viewModel.info.dateText\r\n }\r\n get data() {\r\n return {\r\n appointmentData: this.props.viewModel.info.appointment,\r\n targetedAppointmentData: this.props.viewModel.appointment\r\n }\r\n }\r\n onItemClick() {\r\n var e = {\r\n data: [this.props.viewModel],\r\n target: this.ref.current,\r\n index: this.props.index\r\n };\r\n this.props.onItemClick(e)\r\n }\r\n onItemDoubleClick() {\r\n var e = {\r\n data: [this.props.viewModel],\r\n target: this.ref.current,\r\n index: this.props.index\r\n };\r\n this.props.onItemDoubleClick(e)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n appointmentTemplate: getTemplate(props.appointmentTemplate)\r\n }),\r\n color: this.state.color,\r\n ref: this.ref,\r\n appointmentsContextValue: this.appointmentsContextValue,\r\n appointmentStyles: this.appointmentStyles,\r\n styles: this.styles,\r\n text: this.text,\r\n isReduced: this.isReduced,\r\n classes: this.classes,\r\n dateText: this.dateText,\r\n data: this.data,\r\n onItemClick: this.onItemClick,\r\n onItemDoubleClick: this.onItemDoubleClick,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAppointment.defaultProps = AppointmentProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/overflow_indicator/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n addToStyles\r\n} from \"../../workspaces/utils\";\r\nimport {\r\n getAppointmentColor\r\n} from \"../../resources/utils\";\r\nexport var getOverflowIndicatorStyles = viewModel => {\r\n var {\r\n geometry: {\r\n height: height,\r\n left: left,\r\n top: top,\r\n width: width\r\n }\r\n } = viewModel;\r\n var result = addToStyles([{\r\n attr: \"left\",\r\n value: \"\".concat(left, \"px\")\r\n }, {\r\n attr: \"top\",\r\n value: \"\".concat(top, \"px\")\r\n }, {\r\n attr: \"width\",\r\n value: \"\".concat(width, \"px\")\r\n }, {\r\n attr: \"height\",\r\n value: \"\".concat(height, \"px\")\r\n }, {\r\n attr: \"boxShadow\",\r\n value: \"inset \".concat(width, \"px 0 0 0 rgba(0, 0, 0, 0.3)\")\r\n }]);\r\n return result\r\n};\r\nexport var getOverflowIndicatorColor = (color, colors) => !colors.length || 0 === colors.filter(item => item !== color).length ? color : void 0;\r\nexport var getIndicatorColor = (appointmentContext, viewModel, groups) => {\r\n var _viewModel$groupIndex;\r\n var groupIndex = null !== (_viewModel$groupIndex = viewModel.groupIndex) && void 0 !== _viewModel$groupIndex ? _viewModel$groupIndex : 0;\r\n var {\r\n appointment: appointment\r\n } = viewModel.items.settings[0];\r\n return getAppointmentColor({\r\n resources: appointmentContext.resources,\r\n resourceLoaderMap: appointmentContext.resourceLoaderMap,\r\n resourcesDataAccessors: appointmentContext.dataAccessors.resources,\r\n loadedResources: appointmentContext.loadedResources\r\n }, {\r\n itemData: appointment,\r\n groupIndex: groupIndex,\r\n groups: groups\r\n })\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/overflow_indicator/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"groups\", \"overflowIndicatorTemplate\", \"viewModel\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../utils/combine_classes\";\r\nimport {\r\n Button\r\n} from \"../../../button\";\r\nimport {\r\n getIndicatorColor,\r\n getOverflowIndicatorStyles\r\n} from \"./utils\";\r\nimport messageLocalization from \"../../../../../localization/message\";\r\nimport {\r\n AppointmentsContext\r\n} from \"../../appointments_context\";\r\nimport {\r\n mergeStylesWithColor\r\n} from \"../utils\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n data: data,\r\n props: {\r\n overflowIndicatorTemplate: OverflowIndicatorTemplate\r\n },\r\n styles: styles,\r\n text: text\r\n } = _ref;\r\n return createComponentVNode(2, Button, {\r\n style: normalizeStyles(styles),\r\n className: classes,\r\n type: \"default\",\r\n stylingMode: \"contained\",\r\n children: OverflowIndicatorTemplate ? OverflowIndicatorTemplate({\r\n data: data\r\n }) : createVNode(1, \"span\", null, text, 0)\r\n })\r\n};\r\nexport var OverflowIndicatorProps = {};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class OverflowIndicator extends InfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n color: void 0\r\n };\r\n this.updateStylesEffect = this.updateStylesEffect.bind(this)\r\n }\r\n get appointmentsContextValue() {\r\n if (this.context[AppointmentsContext.id]) {\r\n return this.context[AppointmentsContext.id]\r\n }\r\n return AppointmentsContext.defaultValue\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.updateStylesEffect, [this.props.groups, this.props.viewModel, this.appointmentsContextValue])]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.props.groups, this.props.viewModel, this.appointmentsContextValue])\r\n }\r\n updateStylesEffect() {\r\n var {\r\n groups: groups,\r\n viewModel: viewModel\r\n } = this.props;\r\n getIndicatorColor(this.appointmentsContextValue, viewModel, groups).then(color => {\r\n this.setState(__state_argument => ({\r\n color: color\r\n }))\r\n })\r\n }\r\n get data() {\r\n return {\r\n appointmentCount: this.props.viewModel.items.settings.length,\r\n isCompact: this.props.viewModel.isCompact\r\n }\r\n }\r\n get text() {\r\n var {\r\n isCompact: isCompact\r\n } = this.props.viewModel;\r\n var {\r\n appointmentCount: appointmentCount\r\n } = this.data;\r\n if (isCompact) {\r\n return \"\".concat(appointmentCount)\r\n }\r\n var formatter = messageLocalization.getFormatter(\"dxScheduler-moreAppointments\");\r\n return formatter(appointmentCount)\r\n }\r\n get appointmentStyles() {\r\n return getOverflowIndicatorStyles(this.props.viewModel)\r\n }\r\n get styles() {\r\n return mergeStylesWithColor(this.state.color, this.appointmentStyles)\r\n }\r\n get classes() {\r\n return combineClasses({\r\n \"dx-scheduler-appointment-collector\": true,\r\n \"dx-scheduler-appointment-collector-compact\": this.data.isCompact\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n overflowIndicatorTemplate: getTemplate(props.overflowIndicatorTemplate)\r\n }),\r\n color: this.state.color,\r\n appointmentsContextValue: this.appointmentsContextValue,\r\n data: this.data,\r\n text: this.text,\r\n appointmentStyles: this.appointmentStyles,\r\n styles: this.styles,\r\n classes: this.classes,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nOverflowIndicator.defaultProps = OverflowIndicatorProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"isAllDay\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoEffect,\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Appointment\r\n} from \"./appointment\";\r\nimport {\r\n OverflowIndicator\r\n} from \"./overflow_indicator/layout\";\r\nimport {\r\n combineClasses\r\n} from \"../../../utils/combine_classes\";\r\nimport {\r\n AppointmentsContext\r\n} from \"../appointments_context\";\r\nimport {\r\n subscribeToDXPointerDownEvent\r\n} from \"../../../utils/subscribe_to_event\";\r\nvar SELECTOR = {\r\n appointment: \".dx-scheduler-appointment\",\r\n allDay: \"dx-scheduler-all-day-appointment\",\r\n collector: \"dx-scheduler-appointment-collector\"\r\n};\r\nexport var viewFunction = _ref => {\r\n var {\r\n appointments: appointments,\r\n appointmentsContextValue: {\r\n appointmentTemplate: appointmentTemplate,\r\n groups: groups,\r\n hideReducedIconTooltip: hideReducedIconTooltip,\r\n onAppointmentClick: onAppointmentClick,\r\n onAppointmentDoubleClick: onAppointmentDoubleClick,\r\n overflowIndicatorTemplate: overflowIndicatorTemplate,\r\n showReducedIconTooltip: showReducedIconTooltip\r\n },\r\n classes: classes,\r\n layoutRef: layoutRef,\r\n overflowIndicators: overflowIndicators\r\n } = _ref;\r\n return createVNode(1, \"div\", classes, [appointments.map((item, index) => createComponentVNode(2, Appointment, {\r\n viewModel: item,\r\n appointmentTemplate: appointmentTemplate,\r\n index: index,\r\n groups: groups,\r\n onItemClick: onAppointmentClick,\r\n onItemDoubleClick: onAppointmentDoubleClick,\r\n showReducedIconTooltip: showReducedIconTooltip,\r\n hideReducedIconTooltip: hideReducedIconTooltip\r\n }, item.key)), overflowIndicators.map((item, index) => createComponentVNode(2, OverflowIndicator, {\r\n viewModel: item,\r\n groups: groups,\r\n overflowIndicatorTemplate: overflowIndicatorTemplate,\r\n \"data-index\": index\r\n }, item.key))], 0, null, null, layoutRef)\r\n};\r\nexport var AppointmentLayoutProps = {\r\n isAllDay: false\r\n};\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class AppointmentLayout extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.layoutRef = infernoCreateRef();\r\n this.__getterCache = {};\r\n this.pointerEventsEffect = this.pointerEventsEffect.bind(this);\r\n this.onAppointmentPointerDown = this.onAppointmentPointerDown.bind(this)\r\n }\r\n get appointmentsContextValue() {\r\n if (this.context[AppointmentsContext.id]) {\r\n return this.context[AppointmentsContext.id]\r\n }\r\n return AppointmentsContext.defaultValue\r\n }\r\n createEffects() {\r\n return [new InfernoEffect(this.pointerEventsEffect, [this.appointmentsContextValue]), createReRenderEffect()]\r\n }\r\n updateEffects() {\r\n var _this$_effects$;\r\n null === (_this$_effects$ = this._effects[0]) || void 0 === _this$_effects$ ? void 0 : _this$_effects$.update([this.appointmentsContextValue])\r\n }\r\n pointerEventsEffect() {\r\n var disposePointerDown = subscribeToDXPointerDownEvent(this.layoutRef.current, e => this.onAppointmentPointerDown(e));\r\n return () => {\r\n disposePointerDown()\r\n }\r\n }\r\n get classes() {\r\n var {\r\n isAllDay: isAllDay\r\n } = this.props;\r\n return combineClasses({\r\n \"dx-scheduler-scrollable-appointments\": !isAllDay,\r\n \"dx-scheduler-all-day-appointments\": isAllDay\r\n })\r\n }\r\n get appointments() {\r\n if (void 0 !== this.__getterCache.appointments) {\r\n return this.__getterCache.appointments\r\n }\r\n return this.__getterCache.appointments = (() => {\r\n if (this.props.isAllDay) {\r\n return this.appointmentsContextValue.viewModel.allDay\r\n }\r\n return this.appointmentsContextValue.viewModel.regular\r\n })()\r\n }\r\n get overflowIndicators() {\r\n if (void 0 !== this.__getterCache.overflowIndicators) {\r\n return this.__getterCache.overflowIndicators\r\n }\r\n return this.__getterCache.overflowIndicators = (() => {\r\n if (this.props.isAllDay) {\r\n return this.appointmentsContextValue.viewModel.allDayCompact\r\n }\r\n return this.appointmentsContextValue.viewModel.regularCompact\r\n })()\r\n }\r\n onAppointmentPointerDown(e) {\r\n var appointmentElement = e.target.closest(SELECTOR.appointment);\r\n if (appointmentElement) {\r\n var {\r\n index: index\r\n } = appointmentElement.dataset;\r\n var focusedAppointmentIndex = index ? parseInt(index, 10) : -1;\r\n var isAllDay = appointmentElement.classList.contains(SELECTOR.allDay);\r\n var isCompact = appointmentElement.classList.contains(SELECTOR.collector);\r\n var typeMap = {\r\n allDayCompact: isAllDay && isCompact,\r\n allDay: isAllDay && !isCompact,\r\n regularCompact: !isAllDay && isCompact,\r\n regular: !isAllDay && !isCompact\r\n };\r\n var appointmentType = Object.entries(typeMap).filter(item => item[1])[0][0];\r\n this.appointmentsContextValue.updateFocusedAppointment(appointmentType, focusedAppointmentIndex)\r\n }\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.isAllDay !== nextProps.isAllDay || this.context[AppointmentsContext.id] !== context[AppointmentsContext.id]) {\r\n this.__getterCache.appointments = void 0\r\n }\r\n if (this.props.isAllDay !== nextProps.isAllDay || this.context[AppointmentsContext.id] !== context[AppointmentsContext.id]) {\r\n this.__getterCache.overflowIndicators = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n layoutRef: this.layoutRef,\r\n appointmentsContextValue: this.appointmentsContextValue,\r\n classes: this.classes,\r\n appointments: this.appointments,\r\n overflowIndicators: this.overflowIndicators,\r\n onAppointmentPointerDown: this.onAppointmentPointerDown,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAppointmentLayout.defaultProps = AppointmentLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/appointment/layout.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../core/component_registrator\";\r\nimport BaseComponent from \"../../../component_wrapper/common/component\";\r\nimport {\r\n AppointmentLayout as AppointmentLayoutComponent\r\n} from \"./layout\";\r\nexport default class AppointmentLayout extends BaseComponent {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [],\r\n props: [\"isAllDay\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return AppointmentLayoutComponent\r\n }\r\n}\r\nregisterComponent(\"dxAppointmentLayout\", AppointmentLayout);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n compileGetter,\r\n compileSetter\r\n} from \"../../core/utils/data\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getOuterHeight,\r\n setHeight,\r\n setWidth\r\n} from \"../../core/utils/size\";\r\nimport {\r\n APPOINTMENT_SETTINGS_KEY\r\n} from \"./m_constants\";\r\nexport var utils = {\r\n dataAccessors: {\r\n getAppointmentSettings: element => $(element).data(APPOINTMENT_SETTINGS_KEY),\r\n getAppointmentInfo: element => {\r\n var settings = utils.dataAccessors.getAppointmentSettings(element);\r\n return null === settings || void 0 === settings ? void 0 : settings.info\r\n },\r\n create: (fields, currentDataAccessors, forceIsoDateParsing, dateSerializationFormat) => {\r\n var dataAccessors = currentDataAccessors ? _extends({}, currentDataAccessors) : {\r\n getter: {},\r\n setter: {},\r\n expr: {}\r\n };\r\n each(fields, (name, expr) => {\r\n if (expr) {\r\n var getter = compileGetter(expr);\r\n var setter = compileSetter(expr);\r\n var dateGetter;\r\n var dateSetter;\r\n var serializationFormat;\r\n if (field = name, \"startDate\" === field || \"endDate\" === field) {\r\n dateGetter = object => {\r\n var value = getter(object);\r\n if (forceIsoDateParsing) {\r\n value = dateSerialization.deserializeDate(value)\r\n }\r\n return value\r\n };\r\n dateSetter = (object, value) => {\r\n if (dateSerializationFormat) {\r\n serializationFormat = dateSerializationFormat\r\n } else if (forceIsoDateParsing && !serializationFormat) {\r\n var oldValue = getter(object);\r\n serializationFormat = dateSerialization.getDateSerializationFormat(oldValue)\r\n }\r\n var newValue = dateSerialization.serializeDate(value, serializationFormat);\r\n setter(object, newValue)\r\n }\r\n }\r\n dataAccessors.getter[name] = dateGetter || getter;\r\n dataAccessors.setter[name] = dateSetter || setter;\r\n dataAccessors.expr[\"\".concat(name, \"Expr\")] = expr\r\n } else {\r\n delete dataAccessors.getter[name];\r\n delete dataAccessors.setter[name];\r\n delete dataAccessors.expr[\"\".concat(name, \"Expr\")]\r\n }\r\n var field\r\n });\r\n return dataAccessors\r\n }\r\n },\r\n DOM: {\r\n getHeaderHeight: header => header ? header._$element && parseInt(getOuterHeight(header._$element), 10) : 0\r\n },\r\n renovation: {\r\n renderComponent: (widget, parentElement, componentClass, componentName, viewModel) => {\r\n var component = widget[componentName];\r\n if (!component) {\r\n var container = getPublicElement(parentElement);\r\n component = widget._createComponent(container, componentClass, viewModel);\r\n widget[componentName] = component\r\n } else {\r\n var $element = component.$element();\r\n var elementStyle = $element.get(0).style;\r\n var {\r\n height: height\r\n } = elementStyle;\r\n var {\r\n width: width\r\n } = elementStyle;\r\n component.option(viewModel);\r\n if (height) {\r\n setHeight($element, height)\r\n }\r\n if (width) {\r\n setWidth($element, width)\r\n }\r\n }\r\n }\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_render.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport dxrAppointmentLayout from \"../../../renovation/ui/scheduler/appointment/layout.j\";\r\nimport {\r\n utils\r\n} from \"../m_utils\";\r\nexport var renderAppointments = options => {\r\n var {\r\n instance: instance,\r\n $dateTable: $dateTable,\r\n viewModel: viewModel\r\n } = options;\r\n var container = getAppointmentsContainer($dateTable);\r\n utils.renovation.renderComponent(instance, container, dxrAppointmentLayout, \"renovatedAppointments\", viewModel)\r\n};\r\nvar getAppointmentsContainer = $dateTable => {\r\n var container = $(\".dx-appointments-container\");\r\n if (0 === container.length) {\r\n container = $(\"<div>\").addClass(\"dx-appointments-container\").appendTo($dateTable)\r\n }\r\n return container\r\n};\r\n","/**\r\n * DevExtreme (esm/ui/drop_down_button.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport $ from \"../core/renderer\";\r\nimport Widget from \"./widget/ui.widget\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../core/templates/function_template\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport ButtonGroup from \"./button_group\";\r\nimport Popup from \"./popup/ui.popup\";\r\nimport List from \"./list_light\";\r\nimport {\r\n compileGetter\r\n} from \"../core/utils/data\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport {\r\n getImageContainer\r\n} from \"../core/utils/icon\";\r\nimport DataHelperMixin from \"../data_helper\";\r\nimport {\r\n DataSource\r\n} from \"../data/data_source/data_source\";\r\nimport ArrayStore from \"../data/array_store\";\r\nimport {\r\n Deferred\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n isPlainObject,\r\n isDefined\r\n} from \"../core/utils/type\";\r\nimport {\r\n ensureDefined,\r\n noop\r\n} from \"../core/utils/common\";\r\nimport Guid from \"../core/guid\";\r\nimport {\r\n getElementWidth,\r\n getSizeValue\r\n} from \"./drop_down_editor/utils\";\r\nimport messageLocalization from \"../localization/message\";\r\nvar DROP_DOWN_BUTTON_CLASS = \"dx-dropdownbutton\";\r\nvar DROP_DOWN_BUTTON_CONTENT = \"dx-dropdownbutton-content\";\r\nvar DROP_DOWN_BUTTON_ACTION_CLASS = \"dx-dropdownbutton-action\";\r\nvar DROP_DOWN_BUTTON_TOGGLE_CLASS = \"dx-dropdownbutton-toggle\";\r\nvar DROP_DOWN_BUTTON_HAS_ARROW_CLASS = \"dx-dropdownbutton-has-arrow\";\r\nvar DROP_DOWN_BUTTON_POPUP_WRAPPER_CLASS = \"dx-dropdownbutton-popup-wrapper\";\r\nvar DROP_DOWN_EDITOR_OVERLAY_CLASS = \"dx-dropdowneditor-overlay\";\r\nvar DX_BUTTON_CLASS = \"dx-button\";\r\nvar DX_BUTTON_TEXT_CLASS = \"dx-button-text\";\r\nvar DX_ICON_RIGHT_CLASS = \"dx-icon-right\";\r\nvar DropDownButton = Widget.inherit({\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n itemTemplate: \"item\",\r\n keyExpr: \"this\",\r\n displayExpr: void 0,\r\n selectedItem: null,\r\n selectedItemKey: null,\r\n stylingMode: \"outlined\",\r\n deferRendering: true,\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n useSelectMode: false,\r\n splitButton: false,\r\n showArrowIcon: true,\r\n text: \"\",\r\n icon: void 0,\r\n onButtonClick: null,\r\n onSelectionChanged: null,\r\n onItemClick: null,\r\n opened: false,\r\n items: null,\r\n dataSource: null,\r\n focusStateEnabled: true,\r\n hoverStateEnabled: true,\r\n dropDownOptions: {},\r\n dropDownContentTemplate: \"content\",\r\n wrapItemText: false,\r\n useItemTextAsTitle: true,\r\n grouped: false,\r\n groupTemplate: \"group\",\r\n buttonGroupOptions: {}\r\n })\r\n },\r\n _setOptionsByReference() {\r\n this.callBase();\r\n extend(this._optionsByReference, {\r\n selectedItem: true\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._createItemClickAction();\r\n this._createActionClickAction();\r\n this._createSelectionChangedAction();\r\n this._initDataSource();\r\n this._compileKeyGetter();\r\n this._compileDisplayGetter();\r\n this._itemsToDataSource(this.option(\"items\"));\r\n this._options.cache(\"buttonGroupOptions\", this.option(\"buttonGroupOptions\"));\r\n this._options.cache(\"dropDownOptions\", this.option(\"dropDownOptions\"))\r\n },\r\n _initTemplates() {\r\n this._templateManager.addDefaultTemplates({\r\n content: new FunctionTemplate(options => {\r\n var $popupContent = $(options.container);\r\n var $listContainer = $(\"<div>\").appendTo($popupContent);\r\n this._list = this._createComponent($listContainer, List, this._listOptions());\r\n this._list.registerKeyHandler(\"escape\", this._escHandler.bind(this));\r\n this._list.registerKeyHandler(\"tab\", this._escHandler.bind(this));\r\n this._list.registerKeyHandler(\"leftArrow\", this._escHandler.bind(this));\r\n this._list.registerKeyHandler(\"rightArrow\", this._escHandler.bind(this))\r\n })\r\n });\r\n this.callBase()\r\n },\r\n _itemsToDataSource: function(value) {\r\n if (!this._dataSource) {\r\n this._dataSource = new DataSource({\r\n store: new ArrayStore({\r\n key: this._getKey(),\r\n data: value\r\n }),\r\n pageSize: 0\r\n })\r\n }\r\n },\r\n _getKey: function() {\r\n var _this$_dataSource;\r\n var keyExpr = this.option(\"keyExpr\");\r\n var storeKey = null === (_this$_dataSource = this._dataSource) || void 0 === _this$_dataSource ? void 0 : _this$_dataSource.key();\r\n return isDefined(storeKey) && (!isDefined(keyExpr) || \"this\" === keyExpr) ? storeKey : keyExpr\r\n },\r\n _compileKeyGetter() {\r\n this._keyGetter = compileGetter(this._getKey())\r\n },\r\n _compileDisplayGetter() {\r\n this._displayGetter = compileGetter(this.option(\"displayExpr\"))\r\n },\r\n _initMarkup() {\r\n this.callBase();\r\n this.$element().addClass(DROP_DOWN_BUTTON_CLASS);\r\n this._renderButtonGroup();\r\n this._updateArrowClass();\r\n if (isDefined(this.option(\"selectedItemKey\"))) {\r\n this._loadSelectedItem().done(this._updateActionButton.bind(this))\r\n }\r\n },\r\n _renderFocusTarget: noop,\r\n _render() {\r\n if (!this.option(\"deferRendering\") || this.option(\"opened\")) {\r\n this._renderPopup()\r\n }\r\n this.callBase()\r\n },\r\n _renderContentImpl() {\r\n if (this._popup) {\r\n this._renderPopupContent()\r\n }\r\n return this.callBase()\r\n },\r\n _loadSelectedItem() {\r\n var _this$_loadSingleDefe;\r\n null === (_this$_loadSingleDefe = this._loadSingleDeferred) || void 0 === _this$_loadSingleDefe ? void 0 : _this$_loadSingleDefe.reject();\r\n var d = new Deferred;\r\n if (this._list && void 0 !== this._lastSelectedItemData) {\r\n var cachedResult = this.option(\"useSelectMode\") ? this._list.option(\"selectedItem\") : this._lastSelectedItemData;\r\n return d.resolve(cachedResult)\r\n }\r\n this._lastSelectedItemData = void 0;\r\n var selectedItemKey = this.option(\"selectedItemKey\");\r\n this._loadSingle(this._getKey(), selectedItemKey).done(d.resolve).fail(() => {\r\n d.resolve(null)\r\n });\r\n this._loadSingleDeferred = d;\r\n return d.promise()\r\n },\r\n _createActionClickAction() {\r\n this._actionClickAction = this._createActionByOption(\"onButtonClick\")\r\n },\r\n _createSelectionChangedAction() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\")\r\n },\r\n _createItemClickAction() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n },\r\n _fireSelectionChangedAction(_ref) {\r\n var {\r\n previousValue: previousValue,\r\n value: value\r\n } = _ref;\r\n this._selectionChangedAction({\r\n item: value,\r\n previousItem: previousValue\r\n })\r\n },\r\n _fireItemClickAction(_ref2) {\r\n var {\r\n event: event,\r\n itemElement: itemElement,\r\n itemData: itemData\r\n } = _ref2;\r\n return this._itemClickAction({\r\n event: event,\r\n itemElement: itemElement,\r\n itemData: this._actionItem || itemData\r\n })\r\n },\r\n _actionButtonConfig() {\r\n return {\r\n text: this.option(\"text\"),\r\n icon: this.option(\"icon\"),\r\n elementAttr: {\r\n class: DROP_DOWN_BUTTON_ACTION_CLASS\r\n }\r\n }\r\n },\r\n _getButtonGroupItems() {\r\n var items = [];\r\n items.push(this._actionButtonConfig());\r\n if (this.option(\"splitButton\")) {\r\n items.push({\r\n icon: \"spindown\",\r\n elementAttr: {\r\n class: DROP_DOWN_BUTTON_TOGGLE_CLASS\r\n }\r\n })\r\n }\r\n return items\r\n },\r\n _buttonGroupItemClick(_ref3) {\r\n var {\r\n event: event,\r\n itemData: itemData\r\n } = _ref3;\r\n var isActionButton = itemData.elementAttr.class === DROP_DOWN_BUTTON_ACTION_CLASS;\r\n var isToggleButton = itemData.elementAttr.class === DROP_DOWN_BUTTON_TOGGLE_CLASS;\r\n if (isToggleButton) {\r\n this.toggle()\r\n } else if (isActionButton) {\r\n this._actionClickAction({\r\n event: event,\r\n selectedItem: this.option(\"selectedItem\")\r\n });\r\n if (!this.option(\"splitButton\")) {\r\n this.toggle()\r\n }\r\n }\r\n },\r\n _buttonGroupOptions() {\r\n var {\r\n splitButton: splitButton,\r\n showArrowIcon: showArrowIcon,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n stylingMode: stylingMode,\r\n accessKey: accessKey,\r\n tabIndex: tabIndex\r\n } = this.option();\r\n var buttonTemplate = splitButton || !showArrowIcon ? \"content\" : (_ref4, buttonContent) => {\r\n var {\r\n text: text,\r\n icon: icon\r\n } = _ref4;\r\n var $firstIcon = getImageContainer(icon);\r\n var $textContainer = text ? $(\"<span>\").text(text).addClass(DX_BUTTON_TEXT_CLASS) : void 0;\r\n var $secondIcon = getImageContainer(\"spindown\").addClass(DX_ICON_RIGHT_CLASS);\r\n $(buttonContent).append($firstIcon, $textContainer, $secondIcon)\r\n };\r\n return extend({\r\n items: this._getButtonGroupItems(),\r\n onItemClick: this._buttonGroupItemClick.bind(this),\r\n width: \"100%\",\r\n height: \"100%\",\r\n selectionMode: \"none\",\r\n onKeyboardHandled: e => this._keyboardHandler(e),\r\n buttonTemplate: buttonTemplate,\r\n focusStateEnabled: focusStateEnabled,\r\n hoverStateEnabled: hoverStateEnabled,\r\n stylingMode: stylingMode,\r\n accessKey: accessKey,\r\n tabIndex: tabIndex\r\n }, this._options.cache(\"buttonGroupOptions\"))\r\n },\r\n _renderPopupContent() {\r\n var $content = this._popup.$content();\r\n var template = this._getTemplateByOption(\"dropDownContentTemplate\");\r\n $content.empty();\r\n this._popupContentId = \"dx-\" + new Guid;\r\n this.setAria(\"id\", this._popupContentId, $content);\r\n return template.render({\r\n container: getPublicElement($content),\r\n model: this.option(\"items\") || this._dataSource\r\n })\r\n },\r\n _popupOptions() {\r\n var horizontalAlignment = this.option(\"rtlEnabled\") ? \"right\" : \"left\";\r\n return extend({\r\n dragEnabled: false,\r\n focusStateEnabled: false,\r\n deferRendering: this.option(\"deferRendering\"),\r\n hideOnOutsideClick: e => {\r\n var $element = this.$element();\r\n var $buttonClicked = $(e.target).closest(\".\".concat(DROP_DOWN_BUTTON_CLASS));\r\n return !$buttonClicked.is($element)\r\n },\r\n showTitle: false,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n duration: 0,\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n duration: 400,\r\n from: 1,\r\n to: 0\r\n }\r\n },\r\n _ignoreFunctionValueDeprecation: true,\r\n width: () => getElementWidth(this.$element()),\r\n height: \"auto\",\r\n shading: false,\r\n position: {\r\n of: this.$element(),\r\n collision: \"flipfit\",\r\n my: horizontalAlignment + \" top\",\r\n at: horizontalAlignment + \" bottom\"\r\n },\r\n _wrapperClassExternal: DROP_DOWN_EDITOR_OVERLAY_CLASS\r\n }, this._options.cache(\"dropDownOptions\"), {\r\n visible: this.option(\"opened\")\r\n })\r\n },\r\n _listOptions() {\r\n var selectedItemKey = this.option(\"selectedItemKey\");\r\n var useSelectMode = this.option(\"useSelectMode\");\r\n return {\r\n selectionMode: useSelectMode ? \"single\" : \"none\",\r\n wrapItemText: this.option(\"wrapItemText\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n hoverStateEnabled: this.option(\"hoverStateEnabled\"),\r\n useItemTextAsTitle: this.option(\"useItemTextAsTitle\"),\r\n onContentReady: () => this._fireContentReadyAction(),\r\n selectedItemKeys: isDefined(selectedItemKey) && useSelectMode ? [selectedItemKey] : [],\r\n grouped: this.option(\"grouped\"),\r\n groupTemplate: this.option(\"groupTemplate\"),\r\n keyExpr: this._getKey(),\r\n noDataText: this.option(\"noDataText\"),\r\n displayExpr: this.option(\"displayExpr\"),\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n items: this.option(\"items\"),\r\n dataSource: this._dataSource,\r\n onItemClick: e => {\r\n if (!this.option(\"useSelectMode\")) {\r\n this._lastSelectedItemData = e.itemData\r\n }\r\n this.option(\"selectedItemKey\", this._keyGetter(e.itemData));\r\n var actionResult = this._fireItemClickAction(e);\r\n if (false !== actionResult) {\r\n this.toggle(false);\r\n this._buttonGroup.focus()\r\n }\r\n }\r\n }\r\n },\r\n _upDownKeyHandler() {\r\n if (this._popup && this._popup.option(\"visible\") && this._list) {\r\n this._list.focus()\r\n } else {\r\n this.open()\r\n }\r\n return true\r\n },\r\n _escHandler() {\r\n this.close();\r\n this._buttonGroup.focus();\r\n return true\r\n },\r\n _tabHandler() {\r\n this.close();\r\n return true\r\n },\r\n _renderPopup() {\r\n var $popup = $(\"<div>\");\r\n this.$element().append($popup);\r\n this._popup = this._createComponent($popup, Popup, this._popupOptions());\r\n this._popup.$content().addClass(DROP_DOWN_BUTTON_CONTENT);\r\n this._popup.$wrapper().addClass(DROP_DOWN_BUTTON_POPUP_WRAPPER_CLASS);\r\n this._popup.on(\"hiding\", this._popupHidingHandler.bind(this));\r\n this._popup.on(\"showing\", this._popupShowingHandler.bind(this));\r\n this._bindInnerWidgetOptions(this._popup, \"dropDownOptions\")\r\n },\r\n _popupHidingHandler() {\r\n this.option(\"opened\", false);\r\n this._updateAriaAttributes(false)\r\n },\r\n _popupOptionChanged: function(args) {\r\n var options = Widget.getOptionsFromContainer(args);\r\n this._setPopupOption(options);\r\n var optionsKeys = Object.keys(options);\r\n if (-1 !== optionsKeys.indexOf(\"width\") || -1 !== optionsKeys.indexOf(\"height\")) {\r\n this._dimensionChanged()\r\n }\r\n },\r\n _dimensionChanged: function() {\r\n var popupWidth = getSizeValue(this.option(\"dropDownOptions.width\"));\r\n if (void 0 === popupWidth) {\r\n this._setPopupOption(\"width\", () => getElementWidth(this.$element()))\r\n }\r\n },\r\n _setPopupOption: function(optionName, value) {\r\n this._setWidgetOption(\"_popup\", arguments)\r\n },\r\n _popupShowingHandler() {\r\n this.option(\"opened\", true);\r\n this._updateAriaAttributes(true)\r\n },\r\n _setElementAria(value) {\r\n var elementAria = {\r\n owns: value ? this._popupContentId : void 0\r\n };\r\n this.setAria(elementAria, this.$element())\r\n },\r\n _setButtonsAria(value) {\r\n var commonButtonAria = {\r\n expanded: value,\r\n haspopup: \"listbox\"\r\n };\r\n var firstButtonAria = {};\r\n if (!this.option(\"text\")) {\r\n firstButtonAria.label = \"dropdownbutton\"\r\n }\r\n this._getButtons().each((index, $button) => {\r\n if (0 === index) {\r\n this.setAria(_extends({}, firstButtonAria, commonButtonAria), $($button))\r\n } else {\r\n this.setAria(commonButtonAria, $($button))\r\n }\r\n })\r\n },\r\n _updateAriaAttributes(value) {\r\n this._setElementAria(value);\r\n this._setButtonsAria(value)\r\n },\r\n _getButtons() {\r\n return this._buttonGroup.$element().find(\".\".concat(DX_BUTTON_CLASS))\r\n },\r\n _renderButtonGroup() {\r\n var $buttonGroup = this._buttonGroup && this._buttonGroup.$element() || $(\"<div>\");\r\n if (!this._buttonGroup) {\r\n this.$element().append($buttonGroup)\r\n }\r\n this._buttonGroup = this._createComponent($buttonGroup, ButtonGroup, this._buttonGroupOptions());\r\n this._buttonGroup.registerKeyHandler(\"downArrow\", this._upDownKeyHandler.bind(this));\r\n this._buttonGroup.registerKeyHandler(\"tab\", this._tabHandler.bind(this));\r\n this._buttonGroup.registerKeyHandler(\"upArrow\", this._upDownKeyHandler.bind(this));\r\n this._buttonGroup.registerKeyHandler(\"escape\", this._escHandler.bind(this));\r\n this._bindInnerWidgetOptions(this._buttonGroup, \"buttonGroupOptions\");\r\n this._updateAriaAttributes(this.option(\"opened\"))\r\n },\r\n _updateArrowClass() {\r\n var hasArrow = this.option(\"splitButton\") || this.option(\"showArrowIcon\");\r\n this.$element().toggleClass(DROP_DOWN_BUTTON_HAS_ARROW_CLASS, hasArrow)\r\n },\r\n toggle(visible) {\r\n if (!this._popup) {\r\n this._renderPopup();\r\n this._renderContent()\r\n }\r\n return this._popup.toggle(visible)\r\n },\r\n open() {\r\n return this.toggle(true)\r\n },\r\n close() {\r\n return this.toggle(false)\r\n },\r\n _setListOption(name, value) {\r\n this._list && this._list.option(name, value)\r\n },\r\n _getDisplayValue(item) {\r\n var isPrimitiveItem = !isPlainObject(item);\r\n var displayValue = isPrimitiveItem ? item : this._displayGetter(item);\r\n return !isPlainObject(displayValue) ? String(ensureDefined(displayValue, \"\")) : \"\"\r\n },\r\n _updateActionButton(selectedItem) {\r\n if (this.option(\"useSelectMode\")) {\r\n this.option({\r\n text: this._getDisplayValue(selectedItem),\r\n icon: isPlainObject(selectedItem) ? selectedItem.icon : void 0\r\n })\r\n }\r\n this._setOptionWithoutOptionChange(\"selectedItem\", selectedItem);\r\n this._setOptionWithoutOptionChange(\"selectedItemKey\", this._keyGetter(selectedItem))\r\n },\r\n _clean() {\r\n this._list && this._list.$element().remove();\r\n this._popup && this._popup.$element().remove()\r\n },\r\n _selectedItemKeyChanged(value) {\r\n this._setListOption(\"selectedItemKeys\", this.option(\"useSelectMode\") && isDefined(value) ? [value] : []);\r\n var previousItem = this.option(\"selectedItem\");\r\n this._loadSelectedItem().done(selectedItem => {\r\n this._updateActionButton(selectedItem);\r\n if (this._displayGetter(previousItem) !== this._displayGetter(selectedItem)) {\r\n this._fireSelectionChangedAction({\r\n previousValue: previousItem,\r\n value: selectedItem\r\n })\r\n }\r\n })\r\n },\r\n _updateButtonGroup(name, value) {\r\n this._buttonGroup.option(name, value);\r\n this._updateAriaAttributes(this.option(\"opened\"))\r\n },\r\n _actionButtonOptionChanged(_ref5) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref5;\r\n var newConfig = {};\r\n newConfig[name] = value;\r\n this._updateButtonGroup(\"items[0]\", extend({}, this._actionButtonConfig(), newConfig));\r\n this._popup && this._popup.repaint()\r\n },\r\n _selectModeChanged(value) {\r\n if (value) {\r\n this._setListOption(\"selectionMode\", \"single\");\r\n var selectedItemKey = this.option(\"selectedItemKey\");\r\n this._setListOption(\"selectedItemKeys\", isDefined(selectedItemKey) ? [selectedItemKey] : []);\r\n this._selectedItemKeyChanged(this.option(\"selectedItemKey\"))\r\n } else {\r\n this._setListOption(\"selectionMode\", \"none\");\r\n this.option({\r\n selectedItemKey: void 0,\r\n selectedItem: void 0\r\n });\r\n this._actionButtonOptionChanged({\r\n text: this.option(\"text\")\r\n })\r\n }\r\n },\r\n _updateItemCollection(optionName) {\r\n var selectedItemKey = this.option(\"selectedItemKey\");\r\n this._setListOption(\"selectedItem\", null);\r\n this._setWidgetOption(\"_list\", [optionName]);\r\n if (isDefined(selectedItemKey)) {\r\n this._loadSelectedItem().done(selectedItem => {\r\n this._setListOption(\"selectedItemKeys\", [selectedItemKey]);\r\n this._setListOption(\"selectedItem\", selectedItem)\r\n }).fail(error => {\r\n this._setListOption(\"selectedItemKeys\", [])\r\n }).always(this._updateActionButton.bind(this))\r\n }\r\n },\r\n _updateDataSource: function() {\r\n var items = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this._dataSource.items();\r\n this._dataSource = void 0;\r\n this._itemsToDataSource(items);\r\n this._updateKeyExpr()\r\n },\r\n _updateKeyExpr: function() {\r\n this._compileKeyGetter();\r\n this._setListOption(\"keyExpr\", this._getKey())\r\n },\r\n focus: function() {\r\n this._buttonGroup.focus()\r\n },\r\n _optionChanged(args) {\r\n var _this$_popup;\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"useSelectMode\":\r\n this._selectModeChanged(value);\r\n break;\r\n case \"splitButton\":\r\n this._updateArrowClass();\r\n this._renderButtonGroup();\r\n break;\r\n case \"displayExpr\":\r\n this._compileDisplayGetter();\r\n this._setListOption(name, value);\r\n this._updateActionButton(this.option(\"selectedItem\"));\r\n break;\r\n case \"keyExpr\":\r\n this._updateDataSource();\r\n break;\r\n case \"buttonGroupOptions\":\r\n this._innerWidgetOptionChanged(this._buttonGroup, args);\r\n break;\r\n case \"dropDownOptions\":\r\n if (\"dropDownOptions.visible\" === args.fullName) {\r\n break\r\n }\r\n if (void 0 !== args.value.visible) {\r\n delete args.value.visible\r\n }\r\n this._popupOptionChanged(args);\r\n this._innerWidgetOptionChanged(this._popup, args);\r\n break;\r\n case \"opened\":\r\n this.toggle(value);\r\n break;\r\n case \"focusStateEnabled\":\r\n case \"hoverStateEnabled\":\r\n this._setListOption(name, value);\r\n this._updateButtonGroup(name, value);\r\n this.callBase(args);\r\n break;\r\n case \"items\":\r\n this._updateDataSource(this.option(\"items\"));\r\n this._updateItemCollection(name);\r\n break;\r\n case \"dataSource\":\r\n if (Array.isArray(value)) {\r\n this._updateDataSource(this.option(\"dataSource\"))\r\n } else {\r\n this._initDataSource();\r\n this._updateKeyExpr()\r\n }\r\n this._updateItemCollection(name);\r\n break;\r\n case \"icon\":\r\n case \"text\":\r\n this._actionButtonOptionChanged(args);\r\n break;\r\n case \"showArrowIcon\":\r\n this._updateArrowClass();\r\n this._renderButtonGroup();\r\n this._popup && this._popup.repaint();\r\n break;\r\n case \"width\":\r\n case \"height\":\r\n this.callBase(args);\r\n null === (_this$_popup = this._popup) || void 0 === _this$_popup ? void 0 : _this$_popup.repaint();\r\n break;\r\n case \"stylingMode\":\r\n this._updateButtonGroup(name, value);\r\n break;\r\n case \"itemTemplate\":\r\n case \"grouped\":\r\n case \"noDataText\":\r\n case \"groupTemplate\":\r\n case \"wrapItemText\":\r\n case \"useItemTextAsTitle\":\r\n this._setListOption(name, value);\r\n break;\r\n case \"dropDownContentTemplate\":\r\n this._renderContent();\r\n break;\r\n case \"selectedItemKey\":\r\n this._selectedItemKeyChanged(value);\r\n break;\r\n case \"selectedItem\":\r\n break;\r\n case \"onItemClick\":\r\n this._createItemClickAction();\r\n break;\r\n case \"onButtonClick\":\r\n this._createActionClickAction();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._createSelectionChangedAction();\r\n break;\r\n case \"deferRendering\":\r\n this.toggle(this.option(\"opened\"));\r\n break;\r\n case \"tabIndex\":\r\n this._updateButtonGroup(name, value);\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n }\r\n}).include(DataHelperMixin);\r\nregisterComponent(\"dxDropDownButton\", DropDownButton);\r\nexport default DropDownButton;\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/ui.toolbar.utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nvar BUTTON_GROUP_CLASS = \"dx-buttongroup\";\r\nvar TOOLBAR_ITEMS = [\"dxAutocomplete\", \"dxButton\", \"dxCheckBox\", \"dxDateBox\", \"dxMenu\", \"dxSelectBox\", \"dxTabs\", \"dxTextBox\", \"dxButtonGroup\", \"dxDropDownButton\"];\r\nvar getItemInstance = function($element) {\r\n var itemData = $element.data && $element.data();\r\n var dxComponents = itemData && itemData.dxComponents;\r\n var widgetName = dxComponents && dxComponents[0];\r\n return widgetName && itemData[widgetName]\r\n};\r\nexport function toggleItemFocusableElementTabIndex(context, item) {\r\n var _itemData$options;\r\n if (!context) {\r\n return\r\n }\r\n var $item = context._findItemElementByItem(item);\r\n if (!$item.length) {\r\n return\r\n }\r\n var itemData = context._getItemData($item);\r\n var isItemNotFocusable = !!(null !== (_itemData$options = itemData.options) && void 0 !== _itemData$options && _itemData$options.disabled || itemData.disabled || context.option(\"disabled\"));\r\n var {\r\n widget: widget\r\n } = itemData;\r\n if (widget && -1 !== TOOLBAR_ITEMS.indexOf(widget)) {\r\n var $widget = $item.find(widget.toLowerCase().replace(\"dx\", \".dx-\"));\r\n if ($widget.length) {\r\n var _itemInstance$_focusT, _itemData$options2;\r\n var itemInstance = getItemInstance($widget);\r\n if (!itemInstance) {\r\n return\r\n }\r\n var $focusTarget = null === (_itemInstance$_focusT = itemInstance._focusTarget) || void 0 === _itemInstance$_focusT ? void 0 : _itemInstance$_focusT.call(itemInstance);\r\n if (\"dxDropDownButton\" === widget) {\r\n $focusTarget = $focusTarget && $focusTarget.find(\".\".concat(BUTTON_GROUP_CLASS))\r\n } else {\r\n var _$focusTarget;\r\n $focusTarget = null !== (_$focusTarget = $focusTarget) && void 0 !== _$focusTarget ? _$focusTarget : $(itemInstance.element())\r\n }\r\n var tabIndex = null === (_itemData$options2 = itemData.options) || void 0 === _itemData$options2 ? void 0 : _itemData$options2.tabIndex;\r\n if (isItemNotFocusable) {\r\n $focusTarget.attr(\"tabIndex\", -1)\r\n } else {\r\n $focusTarget.attr(\"tabIndex\", null !== tabIndex && void 0 !== tabIndex ? tabIndex : 0)\r\n }\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/strategy/toolbar.multiline.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth,\r\n getOuterWidth\r\n} from \"../../../core/utils/size\";\r\nvar TOOLBAR_LABEL_CLASS = \"dx-toolbar-label\";\r\nexport class MultiLineStrategy {\r\n constructor(toolbar) {\r\n this._toolbar = toolbar\r\n }\r\n _initMarkup() {}\r\n _updateMenuVisibility() {}\r\n _renderMenuItems() {}\r\n _renderItem() {}\r\n _getMenuItems() {}\r\n _getToolbarItems() {\r\n var _this$_toolbar$option;\r\n return null !== (_this$_toolbar$option = this._toolbar.option(\"items\")) && void 0 !== _this$_toolbar$option ? _this$_toolbar$option : []\r\n }\r\n _getItemsWidth() {\r\n return this._toolbar._getSummaryItemsWidth(this._toolbar.itemElements(), true)\r\n }\r\n _arrangeItems() {\r\n var $label = this._toolbar._$toolbarItemsContainer.find(\".\".concat(TOOLBAR_LABEL_CLASS)).eq(0);\r\n if (!$label.length) {\r\n return\r\n }\r\n var elementWidth = getWidth(this._toolbar.$element());\r\n var labelPaddings = getOuterWidth($label) - getWidth($label);\r\n $label.css(\"maxWidth\", elementWidth - labelPaddings)\r\n }\r\n _hideOverflowItems() {}\r\n _dimensionChanged() {}\r\n _itemOptionChanged() {}\r\n _optionChanged() {}\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/internal/ui.toolbar.menu.list.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n ListBase\r\n} from \"../../list/ui.list.base\";\r\nvar TOOLBAR_MENU_ACTION_CLASS = \"dx-toolbar-menu-action\";\r\nvar TOOLBAR_HIDDEN_BUTTON_CLASS = \"dx-toolbar-hidden-button\";\r\nvar TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS = \"dx-toolbar-hidden-button-group\";\r\nvar TOOLBAR_MENU_SECTION_CLASS = \"dx-toolbar-menu-section\";\r\nvar TOOLBAR_MENU_CUSTOM_CLASS = \"dx-toolbar-menu-custom\";\r\nvar TOOLBAR_MENU_LAST_SECTION_CLASS = \"dx-toolbar-menu-last-section\";\r\nvar SCROLLVIEW_CONTENT_CLASS = \"dx-scrollview-content\";\r\nexport default class ToolbarMenuList extends ListBase {\r\n _init() {\r\n super._init();\r\n this._activeStateUnit = \".\".concat(TOOLBAR_MENU_ACTION_CLASS, \":not(.\").concat(TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS, \")\")\r\n }\r\n _initMarkup() {\r\n this._renderSections();\r\n super._initMarkup();\r\n this._setMenuRole()\r\n }\r\n _getSections() {\r\n return this._itemContainer().children()\r\n }\r\n _itemElements() {\r\n return this._getSections().children(this._itemSelector())\r\n }\r\n _renderSections() {\r\n var $container = this._itemContainer();\r\n each([\"before\", \"center\", \"after\", \"menu\"], (_, section) => {\r\n var sectionName = \"_$\".concat(section, \"Section\");\r\n if (!this[sectionName]) {\r\n this[sectionName] = $(\"<div>\").addClass(TOOLBAR_MENU_SECTION_CLASS)\r\n }\r\n this[sectionName].appendTo($container)\r\n })\r\n }\r\n _renderItems() {\r\n super._renderItems.apply(this, arguments);\r\n this._updateSections()\r\n }\r\n _setMenuRole() {\r\n var $menuContainer = this.$element().find(\".\".concat(SCROLLVIEW_CONTENT_CLASS));\r\n $menuContainer.attr(\"role\", \"menu\")\r\n }\r\n _updateSections() {\r\n var $sections = this.$element().find(\".\".concat(TOOLBAR_MENU_SECTION_CLASS));\r\n $sections.removeClass(TOOLBAR_MENU_LAST_SECTION_CLASS);\r\n $sections.not(\":empty\").eq(-1).addClass(TOOLBAR_MENU_LAST_SECTION_CLASS)\r\n }\r\n _renderItem(index, item, itemContainer, $after) {\r\n var _item$location;\r\n var location = null !== (_item$location = item.location) && void 0 !== _item$location ? _item$location : \"menu\";\r\n var $container = this[\"_$\".concat(location, \"Section\")];\r\n var itemElement = super._renderItem(index, item, $container, $after);\r\n if (this._getItemTemplateName({\r\n itemData: item\r\n })) {\r\n itemElement.addClass(TOOLBAR_MENU_CUSTOM_CLASS)\r\n }\r\n if (\"menu\" === location || \"dxButton\" === item.widget || \"dxButtonGroup\" === item.widget || item.isAction) {\r\n itemElement.addClass(TOOLBAR_MENU_ACTION_CLASS)\r\n }\r\n if (\"dxButton\" === item.widget) {\r\n itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_CLASS)\r\n }\r\n if (\"dxButtonGroup\" === item.widget) {\r\n itemElement.addClass(TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS)\r\n }\r\n itemElement.addClass(item.cssClass);\r\n return itemElement\r\n }\r\n _getItemTemplateName(args) {\r\n var template = super._getItemTemplateName(args);\r\n var data = args.itemData;\r\n var menuTemplate = data && data.menuItemTemplate;\r\n return menuTemplate || template\r\n }\r\n _dataSourceOptions() {\r\n return {\r\n paginate: false\r\n }\r\n }\r\n _itemClickHandler(e, args, config) {\r\n if ($(e.target).closest(\".\".concat(TOOLBAR_MENU_ACTION_CLASS)).length) {\r\n super._itemClickHandler(e, args, config)\r\n }\r\n }\r\n _clean() {\r\n this._getSections().empty();\r\n super._clean()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/popup/ui.popup.full.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport \"../toolbar\";\r\nimport Popup from \"../popup/ui.popup\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nexport default class PopupFull extends Popup {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n preventScrollEvents: false\r\n })\r\n }\r\n _getToolbarName() {\r\n return \"dxToolbar\"\r\n }\r\n}\r\nPopupFull.defaultOptions = function(rule) {\r\n Popup.defaultOptions(rule)\r\n};\r\nregisterComponent(\"dxPopup\", PopupFull);\r\n","/**\r\n * DevExtreme (esm/ui/popup.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Popup from \"./popup/ui.popup.full\";\r\nexport default Popup;\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/internal/ui.toolbar.menu.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getOuterHeight\r\n} from \"../../../core/utils/size\";\r\nimport $ from \"../../../core/renderer\";\r\nimport devices from \"../../../core/devices\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport Widget from \"../../widget/ui.widget\";\r\nimport Button from \"../../button\";\r\nimport ToolbarMenuList from \"./ui.toolbar.menu.list\";\r\nimport {\r\n isMaterial\r\n} from \"../../themes\";\r\nimport {\r\n ChildDefaultTemplate\r\n} from \"../../../core/templates/child_default_template\";\r\nimport {\r\n toggleItemFocusableElementTabIndex\r\n} from \"../ui.toolbar.utils\";\r\nimport {\r\n getWindow\r\n} from \"../../../core/utils/window\";\r\nimport \"../../popup\";\r\nvar DROP_DOWN_MENU_CLASS = \"dx-dropdownmenu\";\r\nvar DROP_DOWN_MENU_POPUP_CLASS = \"dx-dropdownmenu-popup\";\r\nvar DROP_DOWN_MENU_POPUP_WRAPPER_CLASS = \"dx-dropdownmenu-popup-wrapper\";\r\nvar DROP_DOWN_MENU_LIST_CLASS = \"dx-dropdownmenu-list\";\r\nvar DROP_DOWN_MENU_BUTTON_CLASS = \"dx-dropdownmenu-button\";\r\nvar POPUP_BOUNDARY_VERTICAL_OFFSET = 10;\r\nvar POPUP_VERTICAL_OFFSET = 3;\r\nexport default class DropDownMenu extends Widget {\r\n _supportedKeys() {\r\n var extension = {};\r\n if (!this.option(\"opened\") || !this._list.option(\"focusedElement\")) {\r\n extension = this._button._supportedKeys()\r\n }\r\n return extend(super._supportedKeys(), extension, {\r\n tab: function() {\r\n this._popup && this._popup.hide()\r\n }\r\n })\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n items: [],\r\n onItemClick: null,\r\n dataSource: null,\r\n itemTemplate: \"item\",\r\n onButtonClick: null,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n opened: false,\r\n onItemRendered: null,\r\n closeOnClick: true,\r\n useInkRipple: false,\r\n container: void 0,\r\n animation: {\r\n show: {\r\n type: \"fade\",\r\n from: 0,\r\n to: 1\r\n },\r\n hide: {\r\n type: \"fade\",\r\n to: 0\r\n }\r\n }\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: function() {\r\n return \"desktop\" === devices.real().deviceType && !devices.isSimulator()\r\n },\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: function() {\r\n return isMaterial()\r\n },\r\n options: {\r\n useInkRipple: true,\r\n animation: {\r\n show: {\r\n type: \"pop\",\r\n duration: 200,\r\n from: {\r\n scale: 0\r\n },\r\n to: {\r\n scale: 1\r\n }\r\n },\r\n hide: {\r\n type: \"pop\",\r\n duration: 200,\r\n from: {\r\n scale: 1\r\n },\r\n to: {\r\n scale: 0\r\n }\r\n }\r\n }\r\n }\r\n }])\r\n }\r\n _init() {\r\n super._init();\r\n this.$element().addClass(DROP_DOWN_MENU_CLASS);\r\n this._initItemClickAction();\r\n this._initButtonClickAction()\r\n }\r\n _initItemClickAction() {\r\n this._itemClickAction = this._createActionByOption(\"onItemClick\")\r\n }\r\n _initButtonClickAction() {\r\n this._buttonClickAction = this._createActionByOption(\"onButtonClick\")\r\n }\r\n _initTemplates() {\r\n this._templateManager.addDefaultTemplates({\r\n content: new ChildDefaultTemplate(\"content\")\r\n });\r\n super._initTemplates()\r\n }\r\n _initMarkup() {\r\n this._renderButton();\r\n super._initMarkup()\r\n }\r\n _render() {\r\n super._render();\r\n this.setAria({\r\n haspopup: true,\r\n expanded: this.option(\"opened\")\r\n })\r\n }\r\n _renderContentImpl() {\r\n if (this.option(\"opened\")) {\r\n this._renderPopup()\r\n }\r\n }\r\n _clean() {\r\n this._cleanFocusState();\r\n this._list && this._list.$element().remove();\r\n this._popup && this._popup.$element().remove();\r\n delete this._list;\r\n delete this._popup\r\n }\r\n _renderButton() {\r\n var $button = this.$element().addClass(DROP_DOWN_MENU_BUTTON_CLASS);\r\n this._button = this._createComponent($button, Button, {\r\n icon: \"overflow\",\r\n template: \"content\",\r\n useInkRipple: this.option(\"useInkRipple\"),\r\n hoverStateEnabled: false,\r\n focusStateEnabled: false,\r\n onClick: e => {\r\n this.option(\"opened\", !this.option(\"opened\"));\r\n this._buttonClickAction(e)\r\n }\r\n })\r\n }\r\n _toggleActiveState($element, value, e) {\r\n this._button._toggleActiveState($element, value, e)\r\n }\r\n _toggleMenuVisibility(opened) {\r\n var state = null !== opened && void 0 !== opened ? opened : !this._popup.option(\"visible\");\r\n if (opened) {\r\n this._renderPopup()\r\n }\r\n this._popup.toggle(state);\r\n this.setAria(\"expanded\", state)\r\n }\r\n _renderPopup() {\r\n if (this._$popup) {\r\n return\r\n }\r\n this._$popup = $(\"<div>\").appendTo(this.$element());\r\n var {\r\n rtlEnabled: rtlEnabled,\r\n container: container,\r\n animation: animation\r\n } = this.option();\r\n this._popup = this._createComponent(this._$popup, \"dxPopup\", {\r\n onInitialized(_ref) {\r\n var {\r\n component: component\r\n } = _ref;\r\n component.$wrapper().addClass(DROP_DOWN_MENU_POPUP_WRAPPER_CLASS).addClass(DROP_DOWN_MENU_POPUP_CLASS)\r\n },\r\n deferRendering: false,\r\n contentTemplate: contentElement => this._renderList(contentElement),\r\n _ignoreFunctionValueDeprecation: true,\r\n maxHeight: () => this._getMaxHeight(),\r\n position: {\r\n my: \"top \".concat(rtlEnabled ? \"left\" : \"right\"),\r\n at: \"bottom \".concat(rtlEnabled ? \"left\" : \"right\"),\r\n collision: \"fit flip\",\r\n offset: {\r\n v: POPUP_VERTICAL_OFFSET\r\n },\r\n of: this.$element()\r\n },\r\n animation: animation,\r\n onOptionChanged: _ref2 => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref2;\r\n if (\"visible\" === name) {\r\n this.option(\"opened\", value)\r\n }\r\n },\r\n container: container,\r\n autoResizeEnabled: false,\r\n height: \"auto\",\r\n width: \"auto\",\r\n hideOnOutsideClick: e => this._closeOutsideDropDownHandler(e),\r\n hideOnParentScroll: true,\r\n shading: false,\r\n dragEnabled: false,\r\n showTitle: false,\r\n fullScreen: false,\r\n _fixWrapperPosition: true\r\n })\r\n }\r\n _getMaxHeight() {\r\n var $element = this.$element();\r\n var offsetTop = $element.offset().top;\r\n var windowHeight = getOuterHeight(getWindow());\r\n var maxHeight = Math.max(offsetTop, windowHeight - offsetTop - getOuterHeight($element));\r\n return Math.min(windowHeight, maxHeight - POPUP_VERTICAL_OFFSET - POPUP_BOUNDARY_VERTICAL_OFFSET)\r\n }\r\n _closeOutsideDropDownHandler(e) {\r\n var isOutsideClick = !$(e.target).closest(this.$element()).length;\r\n return isOutsideClick\r\n }\r\n _renderList(contentElement) {\r\n var $content = $(contentElement);\r\n $content.addClass(DROP_DOWN_MENU_LIST_CLASS);\r\n this._list = this._createComponent($content, ToolbarMenuList, {\r\n dataSource: this._getListDataSource(),\r\n pageLoadMode: \"scrollBottom\",\r\n indicateLoading: false,\r\n noDataText: \"\",\r\n itemTemplate: this.option(\"itemTemplate\"),\r\n onItemClick: e => {\r\n if (this.option(\"closeOnClick\")) {\r\n this.option(\"opened\", false)\r\n }\r\n this._itemClickAction(e)\r\n },\r\n tabIndex: -1,\r\n focusStateEnabled: false,\r\n activeStateEnabled: true,\r\n onItemRendered: this.option(\"onItemRendered\"),\r\n _itemAttributes: {\r\n role: \"menuitem\"\r\n }\r\n })\r\n }\r\n _itemOptionChanged(item, property, value) {\r\n var _this$_list;\r\n null === (_this$_list = this._list) || void 0 === _this$_list ? void 0 : _this$_list._itemOptionChanged(item, property, value);\r\n toggleItemFocusableElementTabIndex(this._list, item)\r\n }\r\n _getListDataSource() {\r\n var _this$option;\r\n return null !== (_this$option = this.option(\"dataSource\")) && void 0 !== _this$option ? _this$option : this.option(\"items\")\r\n }\r\n _setListDataSource() {\r\n var _this$_list2;\r\n null === (_this$_list2 = this._list) || void 0 === _this$_list2 ? void 0 : _this$_list2.option(\"dataSource\", this._getListDataSource());\r\n delete this._deferRendering\r\n }\r\n _getKeyboardListeners() {\r\n return super._getKeyboardListeners().concat([this._list])\r\n }\r\n _toggleVisibility(visible) {\r\n super._toggleVisibility(visible);\r\n this._button.option(\"visible\", visible)\r\n }\r\n _optionChanged(args) {\r\n var _this$_list3, _this$_list4, _this$_list5;\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"items\":\r\n case \"dataSource\":\r\n if (!this.option(\"opened\")) {\r\n this._deferRendering = true\r\n } else {\r\n this._setListDataSource()\r\n }\r\n break;\r\n case \"itemTemplate\":\r\n null === (_this$_list3 = this._list) || void 0 === _this$_list3 ? void 0 : _this$_list3.option(name, this._getTemplate(value));\r\n break;\r\n case \"onItemClick\":\r\n this._initItemClickAction();\r\n break;\r\n case \"onButtonClick\":\r\n this._buttonClickAction();\r\n break;\r\n case \"useInkRipple\":\r\n this._invalidate();\r\n break;\r\n case \"focusStateEnabled\":\r\n null === (_this$_list4 = this._list) || void 0 === _this$_list4 ? void 0 : _this$_list4.option(name, value);\r\n super._optionChanged(args);\r\n break;\r\n case \"onItemRendered\":\r\n null === (_this$_list5 = this._list) || void 0 === _this$_list5 ? void 0 : _this$_list5.option(name, value);\r\n break;\r\n case \"opened\":\r\n if (this._deferRendering) {\r\n this._setListDataSource()\r\n }\r\n this._toggleMenuVisibility(value);\r\n this._updateFocusableItemsTabIndex();\r\n break;\r\n case \"closeOnClick\":\r\n break;\r\n case \"container\":\r\n this._popup && this._popup.option(name, value);\r\n break;\r\n case \"disabled\":\r\n if (this._list) {\r\n this._updateFocusableItemsTabIndex()\r\n }\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _updateFocusableItemsTabIndex() {\r\n this.option(\"items\").forEach(item => toggleItemFocusableElementTabIndex(this._list, item))\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/strategy/toolbar.singleline.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getWidth\r\n} from \"../../../core/utils/size\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n grep,\r\n deferRender\r\n} from \"../../../core/utils/common\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport DropDownMenu from \"../internal/ui.toolbar.menu\";\r\nimport {\r\n compileGetter\r\n} from \"../../../core/utils/data\";\r\nvar INVISIBLE_STATE_CLASS = \"dx-state-invisible\";\r\nvar TOOLBAR_DROP_DOWN_MENU_CONTAINER_CLASS = \"dx-toolbar-menu-container\";\r\nvar TOOLBAR_BUTTON_CLASS = \"dx-toolbar-button\";\r\nvar TOOLBAR_AUTO_HIDE_ITEM_CLASS = \"dx-toolbar-item-auto-hide\";\r\nvar TOOLBAR_HIDDEN_ITEM = \"dx-toolbar-item-invisible\";\r\nexport class SingleLineStrategy {\r\n constructor(toolbar) {\r\n this._toolbar = toolbar\r\n }\r\n _initMarkup() {\r\n deferRender(() => {\r\n this._renderOverflowMenu();\r\n this._renderMenuItems()\r\n })\r\n }\r\n _renderOverflowMenu() {\r\n if (!this._hasVisibleMenuItems()) {\r\n return\r\n }\r\n this._renderMenuButtonContainer();\r\n var $menu = $(\"<div>\").appendTo(this._overflowMenuContainer());\r\n var itemClickAction = this._toolbar._createActionByOption(\"onItemClick\");\r\n var menuItemTemplate = this._toolbar._getTemplateByOption(\"menuItemTemplate\");\r\n this._menu = this._toolbar._createComponent($menu, DropDownMenu, {\r\n disabled: this._toolbar.option(\"disabled\"),\r\n itemTemplate: () => menuItemTemplate,\r\n onItemClick: e => {\r\n itemClickAction(e)\r\n },\r\n container: this._toolbar.option(\"menuContainer\"),\r\n onOptionChanged: _ref => {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n if (\"opened\" === name) {\r\n this._toolbar.option(\"overflowMenuVisible\", value)\r\n }\r\n if (\"items\" === name) {\r\n this._updateMenuVisibility(value)\r\n }\r\n }\r\n })\r\n }\r\n renderMenuItems() {\r\n if (!this._menu) {\r\n this._renderOverflowMenu()\r\n }\r\n this._menu && this._menu.option(\"items\", this._getMenuItems());\r\n if (this._menu && !this._menu.option(\"items\").length) {\r\n this._menu.option(\"opened\", false)\r\n }\r\n }\r\n _renderMenuButtonContainer() {\r\n this._$overflowMenuContainer = $(\"<div>\").appendTo(this._toolbar._$afterSection).addClass(TOOLBAR_BUTTON_CLASS).addClass(TOOLBAR_DROP_DOWN_MENU_CONTAINER_CLASS)\r\n }\r\n _overflowMenuContainer() {\r\n return this._$overflowMenuContainer\r\n }\r\n _updateMenuVisibility(menuItems) {\r\n var items = null !== menuItems && void 0 !== menuItems ? menuItems : this._getMenuItems();\r\n var isMenuVisible = items.length && this._hasVisibleMenuItems(items);\r\n this._toggleMenuVisibility(isMenuVisible)\r\n }\r\n _toggleMenuVisibility(value) {\r\n if (!this._overflowMenuContainer()) {\r\n return\r\n }\r\n this._overflowMenuContainer().toggleClass(INVISIBLE_STATE_CLASS, !value)\r\n }\r\n _renderMenuItems() {\r\n deferRender(() => {\r\n this.renderMenuItems()\r\n })\r\n }\r\n _dimensionChanged() {\r\n this.renderMenuItems()\r\n }\r\n _getToolbarItems() {\r\n var _this$_toolbar$option;\r\n return grep(null !== (_this$_toolbar$option = this._toolbar.option(\"items\")) && void 0 !== _this$_toolbar$option ? _this$_toolbar$option : [], item => !this._toolbar._isMenuItem(item))\r\n }\r\n _getHiddenItems() {\r\n return this._toolbar._itemContainer().children(\".\".concat(TOOLBAR_AUTO_HIDE_ITEM_CLASS, \".\").concat(TOOLBAR_HIDDEN_ITEM)).not(\".\".concat(INVISIBLE_STATE_CLASS))\r\n }\r\n _getMenuItems() {\r\n var _this$_toolbar$option2, _this$_restoreItems;\r\n var menuItems = grep(null !== (_this$_toolbar$option2 = this._toolbar.option(\"items\")) && void 0 !== _this$_toolbar$option2 ? _this$_toolbar$option2 : [], item => this._toolbar._isMenuItem(item));\r\n var $hiddenItems = this._getHiddenItems();\r\n this._restoreItems = null !== (_this$_restoreItems = this._restoreItems) && void 0 !== _this$_restoreItems ? _this$_restoreItems : [];\r\n var overflowItems = [].slice.call($hiddenItems).map(hiddenItem => {\r\n var itemData = this._toolbar._getItemData(hiddenItem);\r\n var $itemContainer = $(hiddenItem);\r\n var $itemMarkup = $itemContainer.children();\r\n return extend({\r\n menuItemTemplate: () => {\r\n this._restoreItems.push({\r\n container: $itemContainer,\r\n item: $itemMarkup\r\n });\r\n var $container = $(\"<div>\").addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS);\r\n return $container.append($itemMarkup)\r\n }\r\n }, itemData)\r\n });\r\n return [...overflowItems, ...menuItems]\r\n }\r\n _hasVisibleMenuItems(items) {\r\n var menuItems = null !== items && void 0 !== items ? items : this._toolbar.option(\"items\");\r\n var result = false;\r\n var optionGetter = compileGetter(\"visible\");\r\n var overflowGetter = compileGetter(\"locateInMenu\");\r\n each(menuItems, (function(index, item) {\r\n var itemVisible = optionGetter(item, {\r\n functionsAsIs: true\r\n });\r\n var itemOverflow = overflowGetter(item, {\r\n functionsAsIs: true\r\n });\r\n if (false !== itemVisible && (\"auto\" === itemOverflow || \"always\" === itemOverflow) || \"menu\" === item.location) {\r\n result = true\r\n }\r\n }));\r\n return result\r\n }\r\n _arrangeItems() {\r\n var _this$_restoreItems2;\r\n this._toolbar._$centerSection.css({\r\n margin: \"0 auto\",\r\n float: \"none\"\r\n });\r\n each(null !== (_this$_restoreItems2 = this._restoreItems) && void 0 !== _this$_restoreItems2 ? _this$_restoreItems2 : [], (function(_, obj) {\r\n $(obj.container).append(obj.item)\r\n }));\r\n this._restoreItems = [];\r\n var elementWidth = getWidth(this._toolbar.$element());\r\n this._hideOverflowItems(elementWidth);\r\n return elementWidth\r\n }\r\n _hideOverflowItems(elementWidth) {\r\n var _elementWidth;\r\n var overflowItems = this._toolbar.$element().find(\".\".concat(TOOLBAR_AUTO_HIDE_ITEM_CLASS));\r\n if (!overflowItems.length) {\r\n return\r\n }\r\n elementWidth = null !== (_elementWidth = elementWidth) && void 0 !== _elementWidth ? _elementWidth : getWidth(this._toolbar.$element());\r\n $(overflowItems).removeClass(TOOLBAR_HIDDEN_ITEM);\r\n var itemsWidth = this._getItemsWidth();\r\n while (overflowItems.length && elementWidth < itemsWidth) {\r\n var $item = overflowItems.eq(-1);\r\n $item.addClass(TOOLBAR_HIDDEN_ITEM);\r\n itemsWidth = this._getItemsWidth();\r\n overflowItems.splice(-1, 1)\r\n }\r\n }\r\n _getItemsWidth() {\r\n return this._toolbar._getSummaryItemsWidth([this._toolbar._$beforeSection, this._toolbar._$centerSection, this._toolbar._$afterSection])\r\n }\r\n _itemOptionChanged(item, property, value) {\r\n if (\"disabled\" === property || \"options.disabled\" === property) {\r\n if (this._toolbar._isMenuItem(item)) {\r\n var _this$_menu;\r\n null === (_this$_menu = this._menu) || void 0 === _this$_menu ? void 0 : _this$_menu._itemOptionChanged(item, property, value);\r\n return\r\n }\r\n }\r\n this.renderMenuItems()\r\n }\r\n _renderItem(item, itemElement) {\r\n if (\"auto\" === item.locateInMenu) {\r\n itemElement.addClass(TOOLBAR_AUTO_HIDE_ITEM_CLASS)\r\n }\r\n }\r\n _optionChanged(name, value) {\r\n var _this$_menu2, _this$_menu3, _this$_menu4, _this$_menu5, _this$_menu6;\r\n switch (name) {\r\n case \"disabled\":\r\n null === (_this$_menu2 = this._menu) || void 0 === _this$_menu2 ? void 0 : _this$_menu2.option(name, value);\r\n break;\r\n case \"overflowMenuVisible\":\r\n null === (_this$_menu3 = this._menu) || void 0 === _this$_menu3 ? void 0 : _this$_menu3.option(\"opened\", value);\r\n break;\r\n case \"onItemClick\":\r\n null === (_this$_menu4 = this._menu) || void 0 === _this$_menu4 ? void 0 : _this$_menu4.option(name, value);\r\n break;\r\n case \"menuContainer\":\r\n null === (_this$_menu5 = this._menu) || void 0 === _this$_menu5 ? void 0 : _this$_menu5.option(\"container\", value);\r\n break;\r\n case \"menuItemTemplate\":\r\n null === (_this$_menu6 = this._menu) || void 0 === _this$_menu6 ? void 0 : _this$_menu6.option(\"itemTemplate\", value)\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/toolbar/ui.toolbar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport ToolbarBase from \"./ui.toolbar.base\";\r\nimport {\r\n toggleItemFocusableElementTabIndex\r\n} from \"./ui.toolbar.utils\";\r\nimport {\r\n MultiLineStrategy\r\n} from \"./strategy/toolbar.multiline\";\r\nimport {\r\n SingleLineStrategy\r\n} from \"./strategy/toolbar.singleline\";\r\nvar TOOLBAR_MULTILINE_CLASS = \"dx-toolbar-multiline\";\r\nvar TOOLBAR_AUTO_HIDE_TEXT_CLASS = \"dx-toolbar-text-auto-hide\";\r\nclass Toolbar extends ToolbarBase {\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n menuItemTemplate: \"menuItem\",\r\n menuContainer: void 0,\r\n overflowMenuVisible: false,\r\n multiline: false\r\n })\r\n }\r\n _isMultiline() {\r\n return this.option(\"multiline\")\r\n }\r\n _dimensionChanged(dimension) {\r\n if (\"height\" === dimension) {\r\n return\r\n }\r\n super._dimensionChanged();\r\n this._layoutStrategy._dimensionChanged()\r\n }\r\n _initMarkup() {\r\n super._initMarkup();\r\n this._updateFocusableItemsTabIndex();\r\n this._layoutStrategy._initMarkup()\r\n }\r\n _renderToolbar() {\r\n super._renderToolbar();\r\n this._renderLayoutStrategy()\r\n }\r\n _itemContainer() {\r\n if (this._isMultiline()) {\r\n return this._$toolbarItemsContainer\r\n }\r\n return super._itemContainer()\r\n }\r\n _renderLayoutStrategy() {\r\n this.$element().toggleClass(TOOLBAR_MULTILINE_CLASS, this._isMultiline());\r\n this._layoutStrategy = this._isMultiline() ? new MultiLineStrategy(this) : new SingleLineStrategy(this)\r\n }\r\n _renderSections() {\r\n if (this._isMultiline()) {\r\n return\r\n }\r\n return super._renderSections()\r\n }\r\n _postProcessRenderItems() {\r\n this._layoutStrategy._hideOverflowItems();\r\n this._layoutStrategy._updateMenuVisibility();\r\n super._postProcessRenderItems();\r\n this._layoutStrategy._renderMenuItems()\r\n }\r\n _renderItem(index, item, itemContainer, $after) {\r\n var itemElement = super._renderItem(index, item, itemContainer, $after);\r\n this._layoutStrategy._renderItem(item, itemElement);\r\n var {\r\n widget: widget,\r\n showText: showText\r\n } = item;\r\n if (\"dxButton\" === widget && \"inMenu\" === showText) {\r\n itemElement.toggleClass(TOOLBAR_AUTO_HIDE_TEXT_CLASS)\r\n }\r\n return itemElement\r\n }\r\n _getItemsWidth() {\r\n return this._layoutStrategy._getItemsWidth()\r\n }\r\n _getMenuItems() {\r\n return this._layoutStrategy._getMenuItems()\r\n }\r\n _getToolbarItems() {\r\n return this._layoutStrategy._getToolbarItems()\r\n }\r\n _arrangeItems() {\r\n if (this.$element().is(\":hidden\")) {\r\n return\r\n }\r\n var elementWidth = this._layoutStrategy._arrangeItems();\r\n if (!this._isMultiline()) {\r\n super._arrangeItems(elementWidth)\r\n }\r\n }\r\n _itemOptionChanged(item, property, value) {\r\n if (!this._isMenuItem(item)) {\r\n super._itemOptionChanged(item, property, value)\r\n }\r\n this._layoutStrategy._itemOptionChanged(item, property, value);\r\n if (\"disabled\" === property || \"options.disabled\" === property) {\r\n toggleItemFocusableElementTabIndex(this, item)\r\n }\r\n if (\"location\" === property) {\r\n this.repaint()\r\n }\r\n }\r\n _updateFocusableItemsTabIndex() {\r\n this._getToolbarItems().forEach(item => toggleItemFocusableElementTabIndex(this, item))\r\n }\r\n _isMenuItem(itemData) {\r\n return \"menu\" === itemData.location || \"always\" === itemData.locateInMenu\r\n }\r\n _isToolbarItem(itemData) {\r\n return void 0 === itemData.location || \"never\" === itemData.locateInMenu\r\n }\r\n _optionChanged(_ref) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n this._layoutStrategy._optionChanged(name, value);\r\n switch (name) {\r\n case \"menuContainer\":\r\n case \"menuItemTemplate\":\r\n case \"overflowMenuVisible\":\r\n break;\r\n case \"multiline\":\r\n this._invalidate();\r\n break;\r\n case \"disabled\":\r\n super._optionChanged.apply(this, arguments);\r\n this._updateFocusableItemsTabIndex();\r\n break;\r\n default:\r\n super._optionChanged.apply(this, arguments)\r\n }\r\n }\r\n updateDimensions() {\r\n this._dimensionChanged()\r\n }\r\n}\r\nregisterComponent(\"dxToolbar\", Toolbar);\r\nexport default Toolbar;\r\n","/**\r\n * DevExtreme (esm/ui/toolbar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Toolbar from \"./toolbar/ui.toolbar\";\r\nexport default Toolbar;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/header/m_calendar.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport devices from \"../../../core/devices\";\r\nimport $ from \"../../../core/renderer\";\r\nimport Calendar from \"../../../ui/calendar\";\r\nimport Popover from \"../../../ui/popover/ui.popover\";\r\nimport Popup from \"../../../ui/popup/ui.popup\";\r\nimport Scrollable from \"../../../ui/scroll_view/ui.scrollable\";\r\nimport Widget from \"../../../ui/widget/ui.widget\";\r\nvar CALENDAR_CLASS = \"dx-scheduler-navigator-calendar\";\r\nvar CALENDAR_POPOVER_CLASS = \"dx-scheduler-navigator-calendar-popover\";\r\nexport default class SchedulerCalendar extends Widget {\r\n show(target) {\r\n if (!this._isMobileLayout()) {\r\n this._overlay.option(\"target\", target)\r\n }\r\n this._overlay.show()\r\n }\r\n hide() {\r\n this._overlay.hide()\r\n }\r\n _keyboardHandler(opts) {\r\n var _a;\r\n null === (_a = this._calendar) || void 0 === _a ? void 0 : _a._keyboardHandler(opts)\r\n }\r\n _init() {\r\n super._init();\r\n this.$element()\r\n }\r\n _render() {\r\n super._render();\r\n this._renderOverlay()\r\n }\r\n _renderOverlay() {\r\n this.$element().addClass(CALENDAR_POPOVER_CLASS);\r\n var isMobileLayout = this._isMobileLayout();\r\n var overlayType = isMobileLayout ? Popup : Popover;\r\n this._overlay = this._createComponent(this.$element(), overlayType, {\r\n contentTemplate: () => this._createOverlayContent(),\r\n onShown: () => this._calendar.focus(),\r\n defaultOptionsRules: [{\r\n device: () => isMobileLayout,\r\n options: {\r\n fullScreen: true,\r\n showCloseButton: false,\r\n toolbarItems: [{\r\n shortcut: \"cancel\"\r\n }]\r\n }\r\n }]\r\n })\r\n }\r\n _createOverlayContent() {\r\n var result = $(\"<div>\").addClass(CALENDAR_CLASS);\r\n this._calendar = this._createComponent(result, Calendar, this._getCalendarOptions());\r\n if (this._isMobileLayout()) {\r\n var scrollable = this._createScrollable(result);\r\n return scrollable.$element()\r\n }\r\n return result\r\n }\r\n _createScrollable(content) {\r\n var result = this._createComponent(\"<div>\", Scrollable, {\r\n direction: \"vertical\"\r\n });\r\n result.$content().append(content);\r\n return result\r\n }\r\n _optionChanged(_ref) {\r\n var {\r\n name: name,\r\n value: value\r\n } = _ref;\r\n var _a;\r\n switch (name) {\r\n case \"value\":\r\n null === (_a = this._calendar) || void 0 === _a ? void 0 : _a.option(\"value\", value)\r\n }\r\n }\r\n _getCalendarOptions() {\r\n return {\r\n value: this.option(\"value\"),\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n onValueChanged: this.option(\"onValueChanged\"),\r\n skipFocusCheck: true,\r\n tabIndex: this.option(\"tabIndex\")\r\n }\r\n }\r\n _isMobileLayout() {\r\n return !devices.current().generic\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerCalendarPopup\", SchedulerCalendar);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/header/m_date_navigator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n isMaterial\r\n} from \"../../../ui/themes\";\r\nvar {\r\n trimTime: trimTime\r\n} = dateUtils;\r\nvar DATE_NAVIGATOR_CLASS = \"dx-scheduler-navigator\";\r\nvar PREVIOUS_BUTTON_CLASS = \"dx-scheduler-navigator-previous\";\r\nvar CALENDAR_BUTTON_CLASS = \"dx-scheduler-navigator-caption\";\r\nvar NEXT_BUTTON_CLASS = \"dx-scheduler-navigator-next\";\r\nvar DIRECTION_LEFT = -1;\r\nvar DIRECTION_RIGHT = 1;\r\nexport var getDateNavigator = (header, item) => {\r\n var items = [getPreviousButtonOptions(header), getCalendarButtonOptions(header), getNextButtonOptions(header)];\r\n var stylingMode = isMaterial() ? \"text\" : \"contained\";\r\n return _extends({\r\n widget: \"dxButtonGroup\",\r\n cssClass: DATE_NAVIGATOR_CLASS,\r\n options: {\r\n items: items,\r\n stylingMode: stylingMode,\r\n selectionMode: \"none\",\r\n onItemClick: e => {\r\n e.itemData.clickHandler(e)\r\n }\r\n }\r\n }, item)\r\n};\r\nvar getPreviousButtonOptions = header => ({\r\n key: \"previous\",\r\n icon: \"chevronprev\",\r\n elementAttr: {\r\n class: PREVIOUS_BUTTON_CLASS\r\n },\r\n clickHandler: () => header._updateDateByDirection(DIRECTION_LEFT),\r\n onContentReady: e => {\r\n var previousButton = e.component;\r\n previousButton.option(\"disabled\", isPreviousButtonDisabled(header));\r\n header._addEvent(\"min\", () => {\r\n previousButton.option(\"disabled\", isPreviousButtonDisabled(header))\r\n });\r\n header._addEvent(\"currentDate\", () => {\r\n previousButton.option(\"disabled\", isPreviousButtonDisabled(header))\r\n });\r\n header._addEvent(\"startViewDate\", () => {\r\n previousButton.option(\"disabled\", isPreviousButtonDisabled(header))\r\n })\r\n }\r\n});\r\nvar getCalendarButtonOptions = header => ({\r\n key: \"calendar\",\r\n text: header.captionText,\r\n elementAttr: {\r\n class: CALENDAR_BUTTON_CLASS\r\n },\r\n clickHandler: e => header._showCalendar(e),\r\n onContentReady: e => {\r\n var calendarButton = e.component;\r\n header._addEvent(\"currentView\", () => {\r\n calendarButton.option(\"text\", header.captionText)\r\n });\r\n header._addEvent(\"currentDate\", () => {\r\n calendarButton.option(\"text\", header.captionText)\r\n });\r\n header._addEvent(\"startViewDate\", () => {\r\n calendarButton.option(\"text\", header.captionText)\r\n });\r\n header._addEvent(\"views\", () => {\r\n calendarButton.option(\"text\", header.captionText)\r\n });\r\n header._addEvent(\"firstDayOfWeek\", () => {\r\n calendarButton.option(\"text\", header.captionText)\r\n })\r\n }\r\n});\r\nvar getNextButtonOptions = header => ({\r\n key: \"next\",\r\n icon: \"chevronnext\",\r\n elementAttr: {\r\n class: NEXT_BUTTON_CLASS\r\n },\r\n clickHandler: () => header._updateDateByDirection(DIRECTION_RIGHT),\r\n onContentReady: e => {\r\n var nextButton = e.component;\r\n nextButton.option(\"disabled\", isNextButtonDisabled(header));\r\n header._addEvent(\"min\", () => {\r\n nextButton.option(\"disabled\", isNextButtonDisabled(header))\r\n });\r\n header._addEvent(\"currentDate\", () => {\r\n nextButton.option(\"disabled\", isNextButtonDisabled(header))\r\n });\r\n header._addEvent(\"startViewDate\", () => {\r\n nextButton.option(\"disabled\", isNextButtonDisabled(header))\r\n })\r\n }\r\n});\r\nvar isPreviousButtonDisabled = header => {\r\n var min = header.option(\"min\");\r\n if (!min) {\r\n return false\r\n }\r\n min = new Date(min);\r\n var caption = header._getCaption();\r\n min = trimTime(min);\r\n var previousDate = header._getNextDate(-1, caption.endDate);\r\n return previousDate < min\r\n};\r\nvar isNextButtonDisabled = header => {\r\n var max = header.option(\"max\");\r\n if (!max) {\r\n return false\r\n }\r\n max = new Date(max);\r\n var caption = header._getCaption();\r\n max = max.setHours(23, 59, 59);\r\n var nextDate = header._getNextDate(1, caption.startDate);\r\n return nextDate > max\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/header/m_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport errors from \"../../../core/errors\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n camelize\r\n} from \"../../../core/utils/inflector\";\r\nimport {\r\n isFunction,\r\n isObject\r\n} from \"../../../core/utils/type\";\r\nimport dateLocalization from \"../../../localization/date\";\r\nimport messageLocalization from \"../../../localization/message\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nvar DAY_FORMAT = \"d\";\r\nvar DAYS_IN_WORK_WEEK = 5;\r\nvar {\r\n correctDateWithUnitBeginning: getPeriodStart,\r\n getFirstWeekDate: getWeekStart,\r\n getLastMonthDay: getLastMonthDay,\r\n addDateInterval: addDateInterval\r\n} = dateUtils;\r\nvar {\r\n format: formatDate\r\n} = dateLocalization;\r\nvar MS_DURATION = {\r\n milliseconds: 1\r\n};\r\nvar DAY_DURATION = {\r\n days: 1\r\n};\r\nvar WEEK_DURATION = {\r\n days: 7\r\n};\r\nvar SATURDAY_INDEX = 6;\r\nvar SUNDAY_INDEX = 0;\r\nvar subMS = date => addDateInterval(date, MS_DURATION, -1);\r\nvar addMS = date => addDateInterval(date, MS_DURATION, 1);\r\nvar nextDay = date => addDateInterval(date, DAY_DURATION, 1);\r\nexport var nextWeek = date => addDateInterval(date, WEEK_DURATION, 1);\r\nvar nextMonth = date => {\r\n var days = getLastMonthDay(date);\r\n return addDateInterval(date, {\r\n days: days\r\n }, 1)\r\n};\r\nvar isWeekend = date => date.getDay() === SATURDAY_INDEX || date.getDay() === SUNDAY_INDEX;\r\nvar getWorkWeekStart = firstDayOfWeek => {\r\n var date = new Date(firstDayOfWeek);\r\n while (isWeekend(date)) {\r\n date = nextDay(date)\r\n }\r\n return date\r\n};\r\nvar getDateAfterWorkWeek = workWeekStart => {\r\n var date = new Date(workWeekStart);\r\n var workDaysCount = 0;\r\n while (workDaysCount < DAYS_IN_WORK_WEEK) {\r\n if (!isWeekend(date)) {\r\n workDaysCount++\r\n }\r\n date = nextDay(date)\r\n }\r\n return date\r\n};\r\nvar nextAgendaStart = (date, agendaDuration) => addDateInterval(date, {\r\n days: agendaDuration\r\n}, 1);\r\nvar getInterval = options => {\r\n var startDate = getIntervalStartDate(options);\r\n var endDate = getIntervalEndDate(startDate, options);\r\n return {\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n};\r\nvar getIntervalStartDate = options => {\r\n var {\r\n date: date,\r\n step: step,\r\n firstDayOfWeek: firstDayOfWeek\r\n } = options;\r\n switch (step) {\r\n case \"day\":\r\n case \"week\":\r\n case \"month\":\r\n return getPeriodStart(date, step, false, firstDayOfWeek);\r\n case \"workWeek\":\r\n var firstWeekDay = getWeekStart(date, firstDayOfWeek);\r\n return getWorkWeekStart(firstWeekDay);\r\n case \"agenda\":\r\n return new Date(date)\r\n }\r\n};\r\nvar getIntervalEndDate = (startDate, options) => {\r\n var {\r\n intervalCount: intervalCount,\r\n step: step,\r\n agendaDuration: agendaDuration\r\n } = options;\r\n var periodStartDate;\r\n var periodEndDate;\r\n var nextPeriodStartDate = new Date(startDate);\r\n for (var i = 0; i < intervalCount; i++) {\r\n periodStartDate = nextPeriodStartDate;\r\n periodEndDate = getPeriodEndDate(periodStartDate, step, agendaDuration);\r\n nextPeriodStartDate = getNextPeriodStartDate(periodEndDate, step)\r\n }\r\n return periodEndDate\r\n};\r\nvar getPeriodEndDate = (currentPeriodStartDate, step, agendaDuration) => {\r\n var date;\r\n switch (step) {\r\n case \"day\":\r\n date = nextDay(currentPeriodStartDate);\r\n break;\r\n case \"week\":\r\n date = nextWeek(currentPeriodStartDate);\r\n break;\r\n case \"month\":\r\n date = nextMonth(currentPeriodStartDate);\r\n break;\r\n case \"workWeek\":\r\n date = getDateAfterWorkWeek(currentPeriodStartDate);\r\n break;\r\n case \"agenda\":\r\n date = nextAgendaStart(currentPeriodStartDate, agendaDuration)\r\n }\r\n return subMS(date)\r\n};\r\nvar getNextPeriodStartDate = (currentPeriodEndDate, step) => {\r\n var date = addMS(currentPeriodEndDate);\r\n if (\"workWeek\" === step) {\r\n while (isWeekend(date)) {\r\n date = nextDay(date)\r\n }\r\n }\r\n return date\r\n};\r\nexport var getNextIntervalDate = (options, direction) => {\r\n var {\r\n date: date,\r\n step: step,\r\n intervalCount: intervalCount,\r\n agendaDuration: agendaDuration\r\n } = options;\r\n var dayDuration;\r\n switch (step) {\r\n case \"day\":\r\n dayDuration = 1 * intervalCount;\r\n break;\r\n case \"week\":\r\n case \"workWeek\":\r\n dayDuration = 7 * intervalCount;\r\n break;\r\n case \"agenda\":\r\n dayDuration = agendaDuration;\r\n break;\r\n case \"month\":\r\n return getNextMonthDate(date, intervalCount, direction)\r\n }\r\n return addDateInterval(date, {\r\n days: dayDuration\r\n }, direction)\r\n};\r\nvar getNextMonthDate = (date, intervalCount, direction) => {\r\n var currentDate = date.getDate();\r\n var currentMonthFirstDate = new Date(new Date(date.getTime()).setDate(1));\r\n var thatMonthFirstDate = new Date(currentMonthFirstDate.setMonth(currentMonthFirstDate.getMonth() + intervalCount * direction));\r\n var thatMonthDuration = getLastMonthDay(thatMonthFirstDate);\r\n var minDate = currentDate < thatMonthDuration ? currentDate : thatMonthDuration;\r\n var currentMonthMinDate = new Date(new Date(date.getTime()).setDate(minDate));\r\n var thatMonthMinDate = new Date(currentMonthMinDate.setMonth(currentMonthMinDate.getMonth() + intervalCount * direction));\r\n return thatMonthMinDate\r\n};\r\nvar getDateMonthFormatter = isShort => {\r\n var monthType = isShort ? \"abbreviated\" : \"wide\";\r\n var months = dateLocalization.getMonthNames(monthType);\r\n return date => {\r\n var day = formatDate(date, \"day\");\r\n var month = months[date.getMonth()];\r\n return \"\".concat(day, \" \").concat(month)\r\n }\r\n};\r\nvar formatMonthYear = date => {\r\n var months = dateLocalization.getMonthNames(\"abbreviated\");\r\n var month = months[date.getMonth()];\r\n var year = formatDate(date, \"year\");\r\n return \"\".concat(month, \" \").concat(year)\r\n};\r\nvar getDateMonthYearFormatter = isShort => date => {\r\n var dateMonthFormat = getDateMonthFormatter(isShort);\r\n var dateMonth = dateMonthFormat(date);\r\n var year = formatDate(date, \"year\");\r\n return \"\".concat(dateMonth, \" \").concat(year)\r\n};\r\nvar getDifferentYearCaption = (startDate, endDate) => {\r\n var firstDateText = formatDate(startDate, getDateMonthYearFormatter(true));\r\n var lastDateDateText = formatDate(endDate, getDateMonthYearFormatter(true));\r\n return \"\".concat(firstDateText, \"-\").concat(lastDateDateText)\r\n};\r\nvar getSameYearCaption = (startDate, endDate, isShort) => {\r\n var isDifferentMonthDates = startDate.getMonth() !== endDate.getMonth();\r\n var useShortFormat = isDifferentMonthDates || isShort;\r\n var firstDateFormat = isDifferentMonthDates ? getDateMonthFormatter(useShortFormat) : DAY_FORMAT;\r\n var firstDateText = formatDate(startDate, firstDateFormat);\r\n var lastDateText = formatDate(endDate, getDateMonthYearFormatter(useShortFormat));\r\n return \"\".concat(firstDateText, \"-\").concat(lastDateText)\r\n};\r\nvar getSameDateCaption = (date, step, isShort) => {\r\n var useShortFormat = \"agenda\" === step ? isShort : false;\r\n var dateMonthFormat = getDateMonthFormatter(useShortFormat);\r\n var dateMonth = dateMonthFormat(date);\r\n var year = formatDate(date, \"year\");\r\n return \"\".concat(dateMonth, \" \").concat(year)\r\n};\r\nvar formatCaptionByMonths = (startDate, endDate, isShort) => {\r\n var isDifferentYears = startDate.getFullYear() !== endDate.getFullYear();\r\n if (isDifferentYears) {\r\n return getDifferentYearCaption(startDate, endDate)\r\n }\r\n return getSameYearCaption(startDate, endDate, isShort)\r\n};\r\nvar formatMonthViewCaption = (startDate, endDate) => {\r\n if (dateUtils.sameMonth(startDate, endDate)) {\r\n return formatDate(startDate, \"monthandyear\")\r\n }\r\n var isSameYear = dateUtils.sameYear(startDate, endDate);\r\n var firstDateText = isSameYear ? dateLocalization.getMonthNames(\"abbreviated\")[startDate.getMonth()] : formatMonthYear(startDate);\r\n var lastDateText = formatMonthYear(endDate);\r\n return \"\".concat(firstDateText, \"-\").concat(lastDateText)\r\n};\r\nvar getCaptionText = (startDate, endDate, isShort, step) => {\r\n if (dateUtils.sameDate(startDate, endDate)) {\r\n return getSameDateCaption(startDate, step, isShort)\r\n }\r\n if (\"month\" === step) {\r\n return formatMonthViewCaption(startDate, endDate)\r\n }\r\n return formatCaptionByMonths(startDate, endDate, isShort)\r\n};\r\nexport var getCaption = (options, isShort, customizationFunction) => {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate\r\n } = getInterval(options);\r\n var text = getCaptionText(startDate, endDate, isShort, options.step);\r\n if (isFunction(customizationFunction)) {\r\n text = customizationFunction({\r\n startDate: startDate,\r\n endDate: endDate,\r\n text: text\r\n })\r\n }\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n text: text\r\n }\r\n};\r\nvar STEP_MAP = {\r\n day: \"day\",\r\n week: \"week\",\r\n workWeek: \"workWeek\",\r\n month: \"month\",\r\n timelineDay: \"day\",\r\n timelineWeek: \"week\",\r\n timelineWorkWeek: \"workWeek\",\r\n timelineMonth: \"month\",\r\n agenda: \"agenda\"\r\n};\r\nexport var getStep = view => STEP_MAP[getViewType(view)];\r\nexport var getViewType = view => {\r\n if (isObject(view) && view.type) {\r\n return view.type\r\n }\r\n return view\r\n};\r\nexport var getViewName = view => {\r\n if (isObject(view)) {\r\n return view.name ? view.name : view.type\r\n }\r\n return view\r\n};\r\nexport var getViewText = view => {\r\n if (view.name) {\r\n return view.name\r\n }\r\n var viewName = camelize(view.type || view, true);\r\n return messageLocalization.format(\"dxScheduler-switcher\".concat(viewName))\r\n};\r\nvar isValidView = view => Object.values(VIEWS).includes(view);\r\nexport var validateViews = views => {\r\n views.forEach(view => {\r\n var viewType = getViewType(view);\r\n if (!isValidView(viewType)) {\r\n errors.log(\"W0008\", viewType)\r\n }\r\n })\r\n};\r\nexport var formatViews = views => {\r\n validateViews(views);\r\n return views.map(view => {\r\n var text = getViewText(view);\r\n var type = getViewType(view);\r\n var name = getViewName(view);\r\n return {\r\n text: text,\r\n name: name,\r\n view: {\r\n text: text,\r\n type: type,\r\n name: name\r\n }\r\n }\r\n })\r\n};\r\nexport var isOneView = (views, selectedView) => 1 === views.length && views[0].name === selectedView;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/header/m_view_switcher.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n formatViews,\r\n getViewName,\r\n isOneView\r\n} from \"./m_utils\";\r\nvar VIEW_SWITCHER_CLASS = \"dx-scheduler-view-switcher\";\r\nvar VIEW_SWITCHER_DROP_DOWN_BUTTON_CLASS = \"dx-scheduler-view-switcher-dropdown-button\";\r\nvar VIEW_SWITCHER_DROP_DOWN_BUTTON_CONTENT_CLASS = \"dx-scheduler-view-switcher-dropdown-button-content\";\r\nvar getViewsAndSelectedView = header => {\r\n var views = formatViews(header.views);\r\n var selectedView = getViewName(header.currentView);\r\n var isSelectedViewInViews = views.some(view => view.name === selectedView);\r\n selectedView = isSelectedViewInViews ? selectedView : void 0;\r\n return {\r\n selectedView: selectedView,\r\n views: views\r\n }\r\n};\r\nexport var getViewSwitcher = (header, item) => {\r\n var {\r\n selectedView: selectedView,\r\n views: views\r\n } = getViewsAndSelectedView(header);\r\n return _extends({\r\n widget: \"dxButtonGroup\",\r\n locateInMenu: \"auto\",\r\n cssClass: VIEW_SWITCHER_CLASS,\r\n options: {\r\n items: views,\r\n keyExpr: \"name\",\r\n selectedItemKeys: [selectedView],\r\n stylingMode: \"contained\",\r\n onItemClick: e => {\r\n var {\r\n view: view\r\n } = e.itemData;\r\n header._updateCurrentView(view)\r\n },\r\n onContentReady: e => {\r\n var viewSwitcher = e.component;\r\n header._addEvent(\"currentView\", view => {\r\n viewSwitcher.option(\"selectedItemKeys\", [getViewName(view)])\r\n })\r\n }\r\n }\r\n }, item)\r\n};\r\nexport var getDropDownViewSwitcher = (header, item) => {\r\n var {\r\n selectedView: selectedView,\r\n views: views\r\n } = getViewsAndSelectedView(header);\r\n var oneView = isOneView(views, selectedView);\r\n return _extends({\r\n widget: \"dxDropDownButton\",\r\n locateInMenu: \"never\",\r\n cssClass: VIEW_SWITCHER_CLASS,\r\n options: {\r\n items: views,\r\n useSelectMode: true,\r\n keyExpr: \"name\",\r\n selectedItemKey: selectedView,\r\n displayExpr: \"text\",\r\n showArrowIcon: !oneView,\r\n elementAttr: {\r\n class: VIEW_SWITCHER_DROP_DOWN_BUTTON_CLASS\r\n },\r\n onItemClick: e => {\r\n var {\r\n view: view\r\n } = e.itemData;\r\n header._updateCurrentView(view)\r\n },\r\n onContentReady: e => {\r\n var viewSwitcher = e.component;\r\n header._addEvent(\"currentView\", view => {\r\n var views = formatViews(header.views);\r\n if (isOneView(views, view)) {\r\n header.repaint()\r\n }\r\n viewSwitcher.option(\"selectedItemKey\", getViewName(view))\r\n })\r\n },\r\n dropDownOptions: {\r\n onShowing: e => {\r\n if (oneView) {\r\n e.cancel = true\r\n }\r\n },\r\n width: \"max-content\",\r\n _wrapperClassExternal: VIEW_SWITCHER_DROP_DOWN_BUTTON_CONTENT_CLASS\r\n }\r\n }\r\n }, item)\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/header/m_header.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport \"../../../ui/button_group\";\r\nimport \"../../../ui/drop_down_button\";\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport devices from \"../../../core/devices\";\r\nimport errors from \"../../../core/errors\";\r\nimport $ from \"../../../core/renderer\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n renovationGetCurrentView\r\n} from \"../../../renovation/ui/scheduler/model/untyped_getCurrentView\";\r\nimport Toolbar from \"../../../ui/toolbar\";\r\nimport Widget from \"../../../ui/widget/ui.widget\";\r\nimport SchedulerCalendar from \"./m_calendar\";\r\nimport {\r\n getDateNavigator\r\n} from \"./m_date_navigator\";\r\nimport {\r\n getCaption,\r\n getNextIntervalDate,\r\n getStep,\r\n getViewName,\r\n getViewType,\r\n nextWeek,\r\n validateViews\r\n} from \"./m_utils\";\r\nimport {\r\n getDropDownViewSwitcher,\r\n getViewSwitcher\r\n} from \"./m_view_switcher\";\r\nvar DEFAULT_ELEMENT = \"defaultElement\";\r\nvar VIEW_SWITCHER = \"viewSwitcher\";\r\nvar DATE_NAVIGATOR = \"dateNavigator\";\r\nvar COMPONENT_CLASS = \"dx-scheduler-header\";\r\nexport class SchedulerHeader extends Widget {\r\n get views() {\r\n return this.option(\"views\")\r\n }\r\n get captionText() {\r\n return this._getCaption().text\r\n }\r\n get intervalOptions() {\r\n var step = getStep(this.currentView);\r\n var intervalCount = this.option(\"intervalCount\");\r\n var firstDayOfWeek = this.option(\"firstDayOfWeek\");\r\n var agendaDuration = this.option(\"agendaDuration\");\r\n return {\r\n step: step,\r\n intervalCount: intervalCount,\r\n firstDayOfWeek: firstDayOfWeek,\r\n agendaDuration: agendaDuration\r\n }\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n _useShortDateFormat: !devices.real().generic || devices.isSimulator()\r\n })\r\n }\r\n _createEventMap() {\r\n this.eventMap = new Map([\r\n [\"currentView\", [view => {\r\n this.currentView = renovationGetCurrentView(getViewName(view), this.option(\"views\"))\r\n }]],\r\n [\"items\", [this.repaint.bind(this)]],\r\n [\"views\", [validateViews]],\r\n [\"currentDate\", [this._getCalendarOptionUpdater(\"date\")]],\r\n [\"min\", [this._getCalendarOptionUpdater(\"min\")]],\r\n [\"max\", [this._getCalendarOptionUpdater(\"max\")]],\r\n [\"tabIndex\", [this.repaint.bind(this)]],\r\n [\"focusStateEnabled\", [this.repaint.bind(this)]],\r\n [\"useDropDownViewSwitcher\", [this.repaint.bind(this)]]\r\n ])\r\n }\r\n _addEvent(name, event) {\r\n if (!this.eventMap.has(name)) {\r\n this.eventMap.set(name, [])\r\n }\r\n var events = this.eventMap.get(name);\r\n this.eventMap.set(name, [...events, event])\r\n }\r\n _optionChanged(args) {\r\n var {\r\n name: name,\r\n value: value\r\n } = args;\r\n if (this.eventMap.has(name)) {\r\n var events = this.eventMap.get(name);\r\n events.forEach(event => {\r\n event(value)\r\n })\r\n }\r\n }\r\n _init() {\r\n super._init();\r\n this._createEventMap();\r\n this.$element().addClass(COMPONENT_CLASS);\r\n this.currentView = renovationGetCurrentView(getViewName(this.option(\"currentView\")), this.option(\"views\"))\r\n }\r\n _render() {\r\n super._render();\r\n this._createEventMap();\r\n this._renderToolbar()\r\n }\r\n _renderToolbar() {\r\n var config = this._createToolbarConfig();\r\n var toolbarElement = $(\"<div>\");\r\n toolbarElement.appendTo(this.$element());\r\n this._toolbar = this._createComponent(toolbarElement, Toolbar, config)\r\n }\r\n _createToolbarConfig() {\r\n var items = this.option(\"items\");\r\n var parsedItems = items.map(element => this._parseItem(element));\r\n return {\r\n items: parsedItems\r\n }\r\n }\r\n _parseItem(item) {\r\n var isDefaultElement = this._isDefaultItem(item);\r\n if (isDefaultElement) {\r\n var defaultElementType = item[DEFAULT_ELEMENT];\r\n switch (defaultElementType) {\r\n case VIEW_SWITCHER:\r\n if (this.option(\"useDropDownViewSwitcher\")) {\r\n return getDropDownViewSwitcher(this, item)\r\n }\r\n return getViewSwitcher(this, item);\r\n case DATE_NAVIGATOR:\r\n this._renderCalendar();\r\n return getDateNavigator(this, item);\r\n default:\r\n errors.log(\"Unknown default element type: \".concat(defaultElementType))\r\n }\r\n }\r\n return item\r\n }\r\n _callEvent(event, arg) {\r\n if (this.eventMap.has(event)) {\r\n var events = this.eventMap.get(event);\r\n events.forEach(event => event(arg))\r\n }\r\n }\r\n _updateCurrentView(view) {\r\n var onCurrentViewChange = this.option(\"onCurrentViewChange\");\r\n onCurrentViewChange(view.name);\r\n this._callEvent(\"currentView\", view)\r\n }\r\n _updateCalendarValueAndCurrentDate(date) {\r\n this._updateCurrentDate(date);\r\n this._calendar.option(\"value\", date)\r\n }\r\n _updateCurrentDate(date) {\r\n var onCurrentDateChange = this.option(\"onCurrentDateChange\");\r\n onCurrentDateChange(date);\r\n this._callEvent(\"currentDate\", date)\r\n }\r\n _renderCalendar() {\r\n this._calendar = this._createComponent(\"<div>\", SchedulerCalendar, {\r\n value: this.option(\"currentDate\"),\r\n min: this.option(\"min\"),\r\n max: this.option(\"max\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n onValueChanged: e => {\r\n this._updateCurrentDate(e.value);\r\n this._calendar.hide()\r\n }\r\n });\r\n this._calendar.$element().appendTo(this.$element())\r\n }\r\n _getCalendarOptionUpdater(name) {\r\n return value => {\r\n if (this._calendar) {\r\n this._calendar.option(name, value)\r\n }\r\n }\r\n }\r\n _getNextDate(direction) {\r\n var initialDate = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null;\r\n var date = null !== initialDate && void 0 !== initialDate ? initialDate : this.option(\"currentDate\");\r\n var options = _extends(_extends({}, this.intervalOptions), {\r\n date: date\r\n });\r\n return getNextIntervalDate(options, direction)\r\n }\r\n _isMonth() {\r\n var {\r\n currentView: currentView\r\n } = this;\r\n return \"month\" === getViewType(currentView)\r\n }\r\n _getDisplayedDate() {\r\n var startViewDate = this.option(\"startViewDate\");\r\n if (this._isMonth()) {\r\n return nextWeek(startViewDate)\r\n }\r\n return new Date(startViewDate)\r\n }\r\n _getCaption() {\r\n var date = this.option(\"currentDate\");\r\n if (this.option(\"startViewDate\")) {\r\n date = this._getDisplayedDate()\r\n }\r\n date = dateUtils.trimTime(date);\r\n var options = _extends(_extends({}, this.intervalOptions), {\r\n date: date\r\n });\r\n var customizationFunction = this.option(\"customizeDateNavigatorText\");\r\n var useShortDateFormat = this.option(\"_useShortDateFormat\");\r\n return getCaption(options, useShortDateFormat, customizationFunction)\r\n }\r\n _updateDateByDirection(direction) {\r\n var date = this._getNextDate(direction);\r\n this._updateCalendarValueAndCurrentDate(date)\r\n }\r\n _showCalendar(e) {\r\n this._calendar.show(e.element)\r\n }\r\n _hideCalendar() {\r\n this._calendar.hide()\r\n }\r\n _isDefaultItem(item) {\r\n return Object.prototype.hasOwnProperty.call(item, DEFAULT_ELEMENT)\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerHeader\", SchedulerHeader);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/model/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var getAppointmentRenderingStrategyName = viewType => {\r\n var {\r\n renderingStrategy: renderingStrategy\r\n } = {\r\n day: {\r\n renderingStrategy: \"vertical\"\r\n },\r\n week: {\r\n renderingStrategy: \"week\"\r\n },\r\n workWeek: {\r\n renderingStrategy: \"week\"\r\n },\r\n month: {\r\n renderingStrategy: \"horizontalMonth\"\r\n },\r\n timelineDay: {\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineWeek: {\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineWorkWeek: {\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineMonth: {\r\n renderingStrategy: \"horizontalMonthLine\"\r\n },\r\n agenda: {\r\n renderingStrategy: \"agenda\"\r\n }\r\n } [viewType];\r\n return renderingStrategy\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_cell_position_calculator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nclass BaseStrategy {\r\n constructor(options) {\r\n this.isVirtualScrolling = false;\r\n this.options = options\r\n }\r\n get DOMMetaData() {\r\n return this.options.DOMMetaData\r\n }\r\n get appointments() {\r\n return this.options.dateSettings\r\n }\r\n get viewDataProvider() {\r\n return this.options.viewDataProvider\r\n }\r\n get positionHelper() {\r\n return this.options.positionHelper\r\n }\r\n get startViewDate() {\r\n return this.options.startViewDate\r\n }\r\n get viewStartDayHour() {\r\n return this.options.viewStartDayHour\r\n }\r\n get viewEndDayHour() {\r\n return this.options.viewEndDayHour\r\n }\r\n get cellDuration() {\r\n return this.options.cellDuration\r\n }\r\n get getPositionShift() {\r\n return this.options.getPositionShiftCallback\r\n }\r\n get groupCount() {\r\n return this.options.groupCount\r\n }\r\n get rtlEnabled() {\r\n return this.options.rtlEnabled\r\n }\r\n get isVerticalGrouping() {\r\n return this.options.isVerticalGroupOrientation\r\n }\r\n get showAllDayPanel() {\r\n return this.options.showAllDayPanel\r\n }\r\n get supportAllDayRow() {\r\n return this.options.supportAllDayRow\r\n }\r\n get isGroupedAllDayPanel() {\r\n return this.options.isGroupedAllDayPanel\r\n }\r\n calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) {\r\n var result = [];\r\n this.appointments.forEach((dateSetting, index) => {\r\n var coordinates = this.getCoordinateInfos({\r\n appointment: dateSetting,\r\n groupIndices: groupIndices,\r\n isAllDayRowAppointment: isAllDayRowAppointment,\r\n isRecurrentAppointment: isRecurrentAppointment\r\n });\r\n coordinates.forEach(item => {\r\n !!item && result.push(this._prepareObject(item, index))\r\n })\r\n });\r\n return result\r\n }\r\n getCoordinateInfos(options) {\r\n var {\r\n appointment: appointment,\r\n isAllDayRowAppointment: isAllDayRowAppointment,\r\n groupIndices: groupIndices,\r\n recurrent: recurrent\r\n } = options;\r\n var {\r\n startDate: startDate\r\n } = appointment;\r\n var groupIndex = !recurrent ? appointment.source.groupIndex : void 0;\r\n return this.getCoordinatesByDateInGroup(startDate, groupIndices, isAllDayRowAppointment, groupIndex)\r\n }\r\n _prepareObject(position, dateSettingIndex) {\r\n position.dateSettingIndex = dateSettingIndex;\r\n return {\r\n coordinates: position,\r\n dateSettingIndex: dateSettingIndex\r\n }\r\n }\r\n getCoordinatesByDate(date, groupIndex, inAllDayRow) {\r\n var validGroupIndex = groupIndex || 0;\r\n var cellInfo = {\r\n groupIndex: validGroupIndex,\r\n startDate: date,\r\n isAllDay: inAllDayRow\r\n };\r\n var positionByMap = this.viewDataProvider.findCellPositionInMap(cellInfo);\r\n if (!positionByMap) {\r\n return\r\n }\r\n var position = this.getCellPosition(positionByMap, inAllDayRow && !this.isVerticalGrouping);\r\n var timeShift = inAllDayRow ? 0 : this.getTimeShift(date);\r\n var shift = this.getPositionShift(timeShift, inAllDayRow);\r\n var horizontalHMax = this.positionHelper.getHorizontalMax(validGroupIndex, date);\r\n var verticalMax = this.positionHelper.getVerticalMax({\r\n groupIndex: validGroupIndex,\r\n isVirtualScrolling: this.isVirtualScrolling,\r\n showAllDayPanel: this.showAllDayPanel,\r\n supportAllDayRow: this.supportAllDayRow,\r\n isGroupedAllDayPanel: this.isGroupedAllDayPanel,\r\n isVerticalGrouping: this.isVerticalGrouping\r\n });\r\n return {\r\n positionByMap: positionByMap,\r\n cellPosition: position.left + shift.cellPosition,\r\n top: position.top + shift.top,\r\n left: position.left + shift.left,\r\n rowIndex: position.rowIndex,\r\n columnIndex: position.columnIndex,\r\n hMax: horizontalHMax,\r\n vMax: verticalMax,\r\n groupIndex: validGroupIndex\r\n }\r\n }\r\n getCoordinatesByDateInGroup(startDate, groupIndices, inAllDayRow, groupIndex) {\r\n var result = [];\r\n if (this.viewDataProvider.isSkippedDate(startDate)) {\r\n return result\r\n }\r\n var validGroupIndices = [groupIndex];\r\n if (!isDefined(groupIndex)) {\r\n validGroupIndices = this.groupCount ? groupIndices : [0]\r\n }\r\n validGroupIndices.forEach(groupIndex => {\r\n var coordinates = this.getCoordinatesByDate(startDate, groupIndex, inAllDayRow);\r\n if (coordinates) {\r\n result.push(coordinates)\r\n }\r\n });\r\n return result\r\n }\r\n getCellPosition(cellCoordinates, isAllDayPanel) {\r\n var {\r\n dateTableCellsMeta: dateTableCellsMeta,\r\n allDayPanelCellsMeta: allDayPanelCellsMeta\r\n } = this.DOMMetaData;\r\n var {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n } = cellCoordinates;\r\n var position = isAllDayPanel ? allDayPanelCellsMeta[columnIndex] : dateTableCellsMeta[rowIndex][columnIndex];\r\n var validPosition = _extends({}, position);\r\n if (this.rtlEnabled) {\r\n validPosition.left += position.width\r\n }\r\n if (validPosition) {\r\n validPosition.rowIndex = cellCoordinates.rowIndex;\r\n validPosition.columnIndex = cellCoordinates.columnIndex\r\n }\r\n return validPosition\r\n }\r\n getTimeShift(date) {\r\n var currentDayStart = new Date(date);\r\n var currentDayEndHour = new Date(new Date(date).setHours(this.viewEndDayHour, 0, 0));\r\n if (date.getTime() <= currentDayEndHour.getTime()) {\r\n currentDayStart.setHours(this.viewStartDayHour, 0, 0, 0)\r\n }\r\n var timeZoneDifference = dateUtils.getTimezonesDifference(date, currentDayStart);\r\n var currentDateTime = date.getTime();\r\n var currentDayStartTime = currentDayStart.getTime();\r\n var minTime = this.startViewDate.getTime();\r\n return currentDateTime > minTime ? (currentDateTime - currentDayStartTime + timeZoneDifference) % this.cellDuration / this.cellDuration : 0\r\n }\r\n}\r\nclass VirtualStrategy extends BaseStrategy {\r\n constructor() {\r\n super(...arguments);\r\n this.isVirtualScrolling = true\r\n }\r\n calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) {\r\n var appointments = isAllDayRowAppointment ? this.appointments : this.appointments.filter(_ref => {\r\n var {\r\n source: source,\r\n startDate: startDate,\r\n endDate: endDate\r\n } = _ref;\r\n return this.viewDataProvider.isGroupIntersectDateInterval(source.groupIndex, startDate, endDate)\r\n });\r\n if (isRecurrentAppointment) {\r\n return this.createRecurrentAppointmentInfos(appointments, isAllDayRowAppointment)\r\n }\r\n return super.calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment)\r\n }\r\n createRecurrentAppointmentInfos(dateSettings, isAllDayRowAppointment) {\r\n var result = [];\r\n dateSettings.forEach((_ref2, index) => {\r\n var {\r\n source: source,\r\n startDate: startDate\r\n } = _ref2;\r\n var coordinate = this.getCoordinatesByDate(startDate, source.groupIndex, isAllDayRowAppointment);\r\n if (coordinate) {\r\n result.push(this._prepareObject(coordinate, index))\r\n }\r\n });\r\n return result\r\n }\r\n}\r\nexport class CellPositionCalculator {\r\n constructor(options) {\r\n this.options = options\r\n }\r\n calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment) {\r\n var strategy = this.options.isVirtualScrolling ? new VirtualStrategy(this.options) : new BaseStrategy(this.options);\r\n return strategy.calculateCellPositions(groupIndices, isAllDayRowAppointment, isRecurrentAppointment)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_text_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport dateLocalization from \"../../../localization/date\";\r\nexport var createFormattedDateText = options => {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n format: format\r\n } = options;\r\n var formatType = format || getFormatType(startDate, endDate, allDay);\r\n return formatDates(startDate, endDate, formatType)\r\n};\r\nexport var getFormatType = (startDate, endDate, isAllDay, isDateAndTimeView) => {\r\n if (isAllDay) {\r\n return \"DATE\"\r\n }\r\n if (isDateAndTimeView && dateUtils.sameDate(startDate, endDate)) {\r\n return \"TIME\"\r\n }\r\n return \"DATETIME\"\r\n};\r\nexport var formatDates = (startDate, endDate, formatType) => {\r\n var isSameDate = startDate.getDate() === endDate.getDate();\r\n switch (formatType) {\r\n case \"DATETIME\":\r\n return [dateLocalization.format(startDate, \"monthandday\"), \" \", dateLocalization.format(startDate, \"shorttime\"), \" - \", isSameDate ? \"\" : \"\".concat(dateLocalization.format(endDate, \"monthandday\"), \" \"), dateLocalization.format(endDate, \"shorttime\")].join(\"\");\r\n case \"TIME\":\r\n return \"\".concat(dateLocalization.format(startDate, \"shorttime\"), \" - \").concat(dateLocalization.format(endDate, \"shorttime\"));\r\n case \"DATE\":\r\n return \"\".concat(dateLocalization.format(startDate, \"monthandday\")).concat(isSameDate ? \"\" : \" - \".concat(dateLocalization.format(endDate, \"monthandday\")))\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_settings_generator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n isEmptyObject\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n isDateAndTimeView\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport timeZoneUtils from \"../../../ui/scheduler/utils.timeZone\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../m_appointment_adapter\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../m_expression_utils\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"../m_recurrence\";\r\nimport {\r\n createResourcesTree,\r\n getDataAccessors,\r\n getGroupCount,\r\n getResourceTreeLeaves\r\n} from \"../resources/m_utils\";\r\nimport {\r\n CellPositionCalculator\r\n} from \"./m_cell_position_calculator\";\r\nimport {\r\n createFormattedDateText\r\n} from \"./m_text_utils\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar APPOINTMENT_DATE_TEXT_FORMAT = \"TIME\";\r\nexport class DateGeneratorBaseStrategy {\r\n constructor(options) {\r\n this.options = options\r\n }\r\n get rawAppointment() {\r\n return this.options.rawAppointment\r\n }\r\n get timeZoneCalculator() {\r\n return this.options.timeZoneCalculator\r\n }\r\n get viewDataProvider() {\r\n return this.options.viewDataProvider\r\n }\r\n get appointmentTakesAllDay() {\r\n return this.options.appointmentTakesAllDay\r\n }\r\n get supportAllDayRow() {\r\n return this.options.supportAllDayRow\r\n }\r\n get isAllDayRowAppointment() {\r\n return this.options.isAllDayRowAppointment\r\n }\r\n get timeZone() {\r\n return this.options.timeZone\r\n }\r\n get dateRange() {\r\n return this.options.dateRange\r\n }\r\n get firstDayOfWeek() {\r\n return this.options.firstDayOfWeek\r\n }\r\n get viewStartDayHour() {\r\n return this.options.viewStartDayHour\r\n }\r\n get viewEndDayHour() {\r\n return this.options.viewEndDayHour\r\n }\r\n get endViewDate() {\r\n return this.options.endViewDate\r\n }\r\n get viewType() {\r\n return this.options.viewType\r\n }\r\n get isGroupedByDate() {\r\n return this.options.isGroupedByDate\r\n }\r\n get isVerticalOrientation() {\r\n return this.options.isVerticalGroupOrientation\r\n }\r\n get dataAccessors() {\r\n return this.options.dataAccessors\r\n }\r\n get loadedResources() {\r\n return this.options.loadedResources\r\n }\r\n get isDateAppointment() {\r\n return !isDateAndTimeView(this.viewType) && this.appointmentTakesAllDay\r\n }\r\n getIntervalDuration() {\r\n return this.appointmentTakesAllDay ? this.options.allDayIntervalDuration : this.options.intervalDuration\r\n }\r\n generate(appointmentAdapter) {\r\n var itemGroupIndices = this._getGroupIndices(this.rawAppointment);\r\n var appointmentList = this._createAppointments(appointmentAdapter, itemGroupIndices);\r\n appointmentList = this._getProcessedByAppointmentTimeZone(appointmentList, appointmentAdapter);\r\n if (this._canProcessNotNativeTimezoneDates(appointmentAdapter)) {\r\n appointmentList = this._getProcessedNotNativeTimezoneDates(appointmentList, appointmentAdapter)\r\n }\r\n var dateSettings = this._createGridAppointmentList(appointmentList, appointmentAdapter);\r\n var firstViewDates = this._getAppointmentsFirstViewDate(dateSettings);\r\n this._fillNormalizedStartDate(dateSettings, firstViewDates);\r\n dateSettings = this._cropAppointmentsByStartDayHour(dateSettings, firstViewDates);\r\n dateSettings = this._fillNormalizedEndDate(dateSettings, this.rawAppointment);\r\n if (this._needSeparateLongParts()) {\r\n dateSettings = this._separateLongParts(dateSettings, appointmentAdapter)\r\n }\r\n var {\r\n isRecurrent: isRecurrent\r\n } = appointmentAdapter;\r\n return {\r\n dateSettings: dateSettings,\r\n itemGroupIndices: itemGroupIndices,\r\n isRecurrent: isRecurrent\r\n }\r\n }\r\n _getProcessedByAppointmentTimeZone(appointmentList, appointment) {\r\n var hasAppointmentTimeZone = !isEmptyObject(appointment.startDateTimeZone) || !isEmptyObject(appointment.endDateTimeZone);\r\n if (hasAppointmentTimeZone) {\r\n var appointmentOffsets = {\r\n startDate: this.timeZoneCalculator.getOffsets(appointment.startDate, appointment.startDateTimeZone),\r\n endDate: this.timeZoneCalculator.getOffsets(appointment.endDate, appointment.endDateTimeZone)\r\n };\r\n appointmentList.forEach(a => {\r\n var sourceOffsets_startDate = this.timeZoneCalculator.getOffsets(a.startDate, appointment.startDateTimeZone),\r\n sourceOffsets_endDate = this.timeZoneCalculator.getOffsets(a.endDate, appointment.endDateTimeZone);\r\n var startDateOffsetDiff = appointmentOffsets.startDate.appointment - sourceOffsets_startDate.appointment;\r\n var endDateOffsetDiff = appointmentOffsets.endDate.appointment - sourceOffsets_endDate.appointment;\r\n if (sourceOffsets_startDate.appointment !== sourceOffsets_startDate.common) {\r\n a.startDate = new Date(a.startDate.getTime() + startDateOffsetDiff * toMs(\"hour\"))\r\n }\r\n if (sourceOffsets_endDate.appointment !== sourceOffsets_endDate.common) {\r\n a.endDate = new Date(a.endDate.getTime() + endDateOffsetDiff * toMs(\"hour\"))\r\n }\r\n })\r\n }\r\n return appointmentList\r\n }\r\n _createAppointments(appointment, groupIndices) {\r\n var appointments = this._createRecurrenceAppointments(appointment, groupIndices);\r\n if (!appointment.isRecurrent && 0 === appointments.length) {\r\n appointments.push({\r\n startDate: appointment.startDate,\r\n endDate: appointment.endDate\r\n })\r\n }\r\n appointments = appointments.map(item => {\r\n var _a;\r\n var resultEndTime = null === (_a = item.endDate) || void 0 === _a ? void 0 : _a.getTime();\r\n if (item.startDate.getTime() === resultEndTime) {\r\n item.endDate.setTime(resultEndTime + toMs(\"minute\"))\r\n }\r\n return _extends(_extends({}, item), {\r\n exceptionDate: new Date(item.startDate)\r\n })\r\n });\r\n return appointments\r\n }\r\n _canProcessNotNativeTimezoneDates(appointment) {\r\n var isTimeZoneSet = !isEmptyObject(this.timeZone);\r\n if (!isTimeZoneSet) {\r\n return false\r\n }\r\n if (!appointment.isRecurrent) {\r\n return false\r\n }\r\n return !timeZoneUtils.isEqualLocalTimeZone(this.timeZone, appointment.startDate)\r\n }\r\n _getProcessedNotNativeDateIfCrossDST(date, offset) {\r\n if (offset < 0) {\r\n var newDate = new Date(date);\r\n var newDateMinusOneHour = new Date(newDate);\r\n newDateMinusOneHour.setHours(newDateMinusOneHour.getHours() - 1);\r\n var newDateOffset = this.timeZoneCalculator.getOffsets(newDate).common;\r\n var newDateMinusOneHourOffset = this.timeZoneCalculator.getOffsets(newDateMinusOneHour).common;\r\n if (newDateOffset !== newDateMinusOneHourOffset) {\r\n return 0\r\n }\r\n }\r\n return offset\r\n }\r\n _getCommonOffset(date) {\r\n return this.timeZoneCalculator.getOffsets(date).common\r\n }\r\n _getProcessedNotNativeTimezoneDates(appointmentList, appointment) {\r\n return appointmentList.map(item => {\r\n var diffStartDateOffset = this._getCommonOffset(appointment.startDate) - this._getCommonOffset(item.startDate);\r\n var diffEndDateOffset = this._getCommonOffset(appointment.endDate) - this._getCommonOffset(item.endDate);\r\n if (0 === diffStartDateOffset && 0 === diffEndDateOffset) {\r\n return item\r\n }\r\n diffStartDateOffset = this._getProcessedNotNativeDateIfCrossDST(item.startDate, diffStartDateOffset);\r\n diffEndDateOffset = this._getProcessedNotNativeDateIfCrossDST(item.endDate, diffEndDateOffset);\r\n var newStartDate = new Date(item.startDate.getTime() + diffStartDateOffset * toMs(\"hour\"));\r\n var newEndDate = new Date(item.endDate.getTime() + diffEndDateOffset * toMs(\"hour\"));\r\n var testNewStartDate = this.timeZoneCalculator.createDate(newStartDate, {\r\n path: \"toGrid\"\r\n });\r\n var testNewEndDate = this.timeZoneCalculator.createDate(newEndDate, {\r\n path: \"toGrid\"\r\n });\r\n if (appointment.duration > testNewEndDate.getTime() - testNewStartDate.getTime()) {\r\n newEndDate = new Date(newStartDate.getTime() + appointment.duration)\r\n }\r\n return _extends(_extends({}, item), {\r\n startDate: newStartDate,\r\n endDate: newEndDate,\r\n exceptionDate: new Date(newStartDate)\r\n })\r\n })\r\n }\r\n _needSeparateLongParts() {\r\n return this.isVerticalOrientation ? this.isGroupedByDate : this.isGroupedByDate && this.appointmentTakesAllDay\r\n }\r\n normalizeEndDateByViewEnd(rawAppointment, endDate) {\r\n var result = new Date(endDate.getTime());\r\n var isAllDay = isDateAndTimeView(this.viewType) && this.appointmentTakesAllDay;\r\n if (!isAllDay) {\r\n var roundedEndViewDate = dateUtils.roundToHour(this.endViewDate);\r\n if (result > roundedEndViewDate) {\r\n result = roundedEndViewDate\r\n }\r\n }\r\n var endDayHour = this.viewEndDayHour;\r\n var allDay = ExpressionUtils.getField(this.dataAccessors, \"allDay\", rawAppointment);\r\n var currentViewEndTime = new Date(new Date(endDate.getTime()).setHours(endDayHour, 0, 0, 0));\r\n if (result.getTime() > currentViewEndTime.getTime() || allDay && result.getHours() < endDayHour) {\r\n result = currentViewEndTime\r\n }\r\n return result\r\n }\r\n _fillNormalizedEndDate(dateSettings, rawAppointment) {\r\n return dateSettings.map(item => {\r\n var {\r\n endDate: endDate\r\n } = item;\r\n var normalizedEndDate = this.normalizeEndDateByViewEnd(rawAppointment, endDate);\r\n return _extends(_extends({}, item), {\r\n normalizedEndDate: normalizedEndDate\r\n })\r\n })\r\n }\r\n _separateLongParts(gridAppointmentList, appointmentAdapter) {\r\n var result = [];\r\n gridAppointmentList.forEach(gridAppointment => {\r\n var maxDate = new Date(this.dateRange[1]);\r\n var {\r\n normalizedEndDate: endDateOfPart\r\n } = gridAppointment;\r\n var longStartDateParts = dateUtils.getDatesOfInterval(gridAppointment.startDate, endDateOfPart, {\r\n milliseconds: this.getIntervalDuration()\r\n });\r\n var list = longStartDateParts.filter(startDatePart => new Date(startDatePart) < maxDate).map(date => {\r\n var endDate = new Date(new Date(date).setMilliseconds(appointmentAdapter.duration));\r\n var normalizedEndDate = this.normalizeEndDateByViewEnd(this.rawAppointment, endDate);\r\n return {\r\n startDate: date,\r\n endDate: endDate,\r\n normalizedEndDate: normalizedEndDate,\r\n source: gridAppointment.source\r\n }\r\n });\r\n result = result.concat(list)\r\n });\r\n return result\r\n }\r\n _createGridAppointmentList(appointmentList, appointmentAdapter) {\r\n return appointmentList.map(source => {\r\n var offsetDifference = appointmentAdapter.startDate.getTimezoneOffset() - source.startDate.getTimezoneOffset();\r\n if (0 !== offsetDifference && this._canProcessNotNativeTimezoneDates(appointmentAdapter)) {\r\n source.startDate = new Date(source.startDate.getTime() + offsetDifference * toMs(\"minute\"));\r\n source.endDate = new Date(source.endDate.getTime() + offsetDifference * toMs(\"minute\"));\r\n source.exceptionDate = new Date(source.startDate)\r\n }\r\n var startDate = this.timeZoneCalculator.createDate(source.startDate, {\r\n path: \"toGrid\"\r\n });\r\n var endDate = this.timeZoneCalculator.createDate(source.endDate, {\r\n path: \"toGrid\"\r\n });\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: appointmentAdapter.allDay || false,\r\n source: source\r\n }\r\n })\r\n }\r\n _createExtremeRecurrenceDates(groupIndex) {\r\n var startViewDate = this.appointmentTakesAllDay ? dateUtils.trimTime(this.dateRange[0]) : this.dateRange[0];\r\n var endViewDateByEndDayHour = this.dateRange[1];\r\n if (this.timeZone) {\r\n startViewDate = this.timeZoneCalculator.createDate(startViewDate, {\r\n path: \"fromGrid\"\r\n });\r\n endViewDateByEndDayHour = this.timeZoneCalculator.createDate(endViewDateByEndDayHour, {\r\n path: \"fromGrid\"\r\n });\r\n var daylightOffset = timeZoneUtils.getDaylightOffsetInMs(startViewDate, endViewDateByEndDayHour);\r\n if (daylightOffset) {\r\n endViewDateByEndDayHour = new Date(endViewDateByEndDayHour.getTime() + daylightOffset)\r\n }\r\n }\r\n return [startViewDate, endViewDateByEndDayHour]\r\n }\r\n _createRecurrenceOptions(appointment, groupIndex) {\r\n var [minRecurrenceDate, maxRecurrenceDate] = this._createExtremeRecurrenceDates(groupIndex);\r\n return {\r\n rule: appointment.recurrenceRule,\r\n exception: appointment.recurrenceException,\r\n min: minRecurrenceDate,\r\n max: maxRecurrenceDate,\r\n firstDayOfWeek: this.firstDayOfWeek,\r\n start: appointment.startDate,\r\n end: appointment.endDate,\r\n appointmentTimezoneOffset: this.timeZoneCalculator.getOriginStartDateOffsetInMs(appointment.startDate, appointment.rawAppointment.startDateTimeZone, true),\r\n getPostProcessedException: date => {\r\n if (isEmptyObject(this.timeZone) || timeZoneUtils.isEqualLocalTimeZone(this.timeZone, date)) {\r\n return date\r\n }\r\n var appointmentOffset = this.timeZoneCalculator.getOffsets(appointment.startDate).common;\r\n var exceptionAppointmentOffset = this.timeZoneCalculator.getOffsets(date).common;\r\n var diff = appointmentOffset - exceptionAppointmentOffset;\r\n diff = this._getProcessedNotNativeDateIfCrossDST(date, diff);\r\n return new Date(date.getTime() - diff * dateUtils.dateToMilliseconds(\"hour\"))\r\n }\r\n }\r\n }\r\n _createRecurrenceAppointments(appointment, groupIndices) {\r\n var {\r\n duration: duration\r\n } = appointment;\r\n var option = this._createRecurrenceOptions(appointment);\r\n var generatedStartDates = getRecurrenceProcessor().generateDates(option);\r\n return generatedStartDates.map(date => {\r\n var utcDate = timeZoneUtils.createUTCDateWithLocalOffset(date);\r\n utcDate.setTime(utcDate.getTime() + duration);\r\n var endDate = timeZoneUtils.createDateFromUTCWithLocalOffset(utcDate);\r\n return {\r\n startDate: new Date(date),\r\n endDate: endDate\r\n }\r\n })\r\n }\r\n _getAppointmentsFirstViewDate(appointments) {\r\n return appointments.map(appointment => this._getAppointmentFirstViewDate(appointment))\r\n }\r\n _fillNormalizedStartDate(appointments, firstViewDates, rawAppointment) {\r\n appointments.forEach((appointment, idx) => {\r\n appointment.startDate = this._getAppointmentResultDate({\r\n appointment: appointment,\r\n rawAppointment: rawAppointment,\r\n startDate: new Date(appointment.startDate),\r\n startDayHour: this.viewStartDayHour,\r\n firstViewDate: firstViewDates[idx]\r\n })\r\n })\r\n }\r\n _cropAppointmentsByStartDayHour(appointments, firstViewDates) {\r\n return appointments.filter((appointment, idx) => {\r\n if (!firstViewDates[idx]) {\r\n return false\r\n }\r\n if (this.appointmentTakesAllDay) {\r\n return true\r\n }\r\n return appointment.endDate > appointment.startDate\r\n })\r\n }\r\n _getAppointmentResultDate(options) {\r\n var {\r\n appointment: appointment,\r\n startDayHour: startDayHour,\r\n firstViewDate: firstViewDate\r\n } = options;\r\n var {\r\n startDate: startDate\r\n } = options;\r\n var resultDate;\r\n if (this.appointmentTakesAllDay) {\r\n resultDate = dateUtils.normalizeDate(startDate, firstViewDate)\r\n } else {\r\n if (startDate < firstViewDate) {\r\n startDate = firstViewDate\r\n }\r\n resultDate = dateUtils.normalizeDate(appointment.startDate, startDate)\r\n }\r\n return !this.isDateAppointment ? dateUtils.roundDateByStartDayHour(resultDate, startDayHour) : resultDate\r\n }\r\n _getAppointmentFirstViewDate(appointment) {\r\n var groupIndex = appointment.source.groupIndex || 0;\r\n var {\r\n startDate: startDate,\r\n endDate: endDate\r\n } = appointment;\r\n if (this.isAllDayRowAppointment || appointment.allDay) {\r\n return this.viewDataProvider.findAllDayGroupCellStartDate(groupIndex, startDate)\r\n }\r\n return this.viewDataProvider.findGroupCellStartDate(groupIndex, startDate, endDate, this.isDateAppointment)\r\n }\r\n _getGroupIndices(rawAppointment) {\r\n var result = [];\r\n if (rawAppointment && this.loadedResources.length) {\r\n var tree = createResourcesTree(this.loadedResources);\r\n result = getResourceTreeLeaves((field, action) => getDataAccessors(this.options.dataAccessors.resources, field, action), tree, rawAppointment)\r\n }\r\n return result\r\n }\r\n}\r\nexport class DateGeneratorVirtualStrategy extends DateGeneratorBaseStrategy {\r\n get groupCount() {\r\n return getGroupCount(this.loadedResources)\r\n }\r\n _createRecurrenceAppointments(appointment, groupIndices) {\r\n var {\r\n duration: duration\r\n } = appointment;\r\n var result = [];\r\n var validGroupIndices = this.groupCount ? groupIndices : [0];\r\n validGroupIndices.forEach(groupIndex => {\r\n var option = this._createRecurrenceOptions(appointment, groupIndex);\r\n var generatedStartDates = getRecurrenceProcessor().generateDates(option);\r\n var recurrentInfo = generatedStartDates.map(date => {\r\n var startDate = new Date(date);\r\n var utcDate = timeZoneUtils.createUTCDateWithLocalOffset(date);\r\n utcDate.setTime(utcDate.getTime() + duration);\r\n var endDate = timeZoneUtils.createDateFromUTCWithLocalOffset(utcDate);\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n groupIndex: groupIndex\r\n }\r\n });\r\n result.push(...recurrentInfo)\r\n });\r\n return result\r\n }\r\n _updateGroupIndices(appointments, groupIndices) {\r\n var result = [];\r\n groupIndices.forEach(groupIndex => {\r\n var groupStartDate = this.viewDataProvider.getGroupStartDate(groupIndex);\r\n if (groupStartDate) {\r\n appointments.forEach(appointment => {\r\n var appointmentCopy = extend({}, appointment);\r\n appointmentCopy.groupIndex = groupIndex;\r\n result.push(appointmentCopy)\r\n })\r\n }\r\n });\r\n return result\r\n }\r\n _getGroupIndices(resources) {\r\n var groupIndices = super._getGroupIndices(resources);\r\n var viewDataGroupIndices = this.viewDataProvider.getGroupIndices();\r\n if (!(null === groupIndices || void 0 === groupIndices ? void 0 : groupIndices.length)) {\r\n groupIndices = [0]\r\n }\r\n return groupIndices.filter(groupIndex => -1 !== viewDataGroupIndices.indexOf(groupIndex))\r\n }\r\n _createAppointments(appointment, groupIndices) {\r\n var appointments = super._createAppointments(appointment, groupIndices);\r\n return !appointment.isRecurrent ? this._updateGroupIndices(appointments, groupIndices) : appointments\r\n }\r\n}\r\nexport class AppointmentSettingsGenerator {\r\n constructor(options) {\r\n this.options = options;\r\n this.appointmentAdapter = createAppointmentAdapter(this.rawAppointment, this.dataAccessors, this.timeZoneCalculator)\r\n }\r\n get rawAppointment() {\r\n return this.options.rawAppointment\r\n }\r\n get dataAccessors() {\r\n return this.options.dataAccessors\r\n }\r\n get timeZoneCalculator() {\r\n return this.options.timeZoneCalculator\r\n }\r\n get isAllDayRowAppointment() {\r\n return this.options.appointmentTakesAllDay && this.options.supportAllDayRow\r\n }\r\n get groups() {\r\n return this.options.groups\r\n }\r\n get dateSettingsStrategy() {\r\n var options = _extends(_extends({}, this.options), {\r\n isAllDayRowAppointment: this.isAllDayRowAppointment\r\n });\r\n return this.options.isVirtualScrolling ? new DateGeneratorVirtualStrategy(options) : new DateGeneratorBaseStrategy(options)\r\n }\r\n create() {\r\n var {\r\n dateSettings: dateSettings,\r\n itemGroupIndices: itemGroupIndices,\r\n isRecurrent: isRecurrent\r\n } = this._generateDateSettings();\r\n var cellPositions = this._calculateCellPositions(dateSettings, itemGroupIndices);\r\n var result = this._prepareAppointmentInfos(dateSettings, cellPositions, isRecurrent);\r\n return result\r\n }\r\n _generateDateSettings() {\r\n return this.dateSettingsStrategy.generate(this.appointmentAdapter)\r\n }\r\n _calculateCellPositions(dateSettings, itemGroupIndices) {\r\n var cellPositionCalculator = new CellPositionCalculator(_extends(_extends({}, this.options), {\r\n dateSettings: dateSettings\r\n }));\r\n return cellPositionCalculator.calculateCellPositions(itemGroupIndices, this.isAllDayRowAppointment, this.appointmentAdapter.isRecurrent)\r\n }\r\n _prepareAppointmentInfos(dateSettings, cellPositions, isRecurrent) {\r\n var infos = [];\r\n cellPositions.forEach(_ref => {\r\n var {\r\n coordinates: coordinates,\r\n dateSettingIndex: dateSettingIndex\r\n } = _ref;\r\n var dateSetting = dateSettings[dateSettingIndex];\r\n var dateText = this._getAppointmentDateText(dateSetting);\r\n var info = {\r\n appointment: dateSetting,\r\n sourceAppointment: dateSetting.source,\r\n dateText: dateText,\r\n isRecurrent: isRecurrent\r\n };\r\n infos.push(_extends(_extends({}, coordinates), {\r\n info: info\r\n }))\r\n });\r\n return infos\r\n }\r\n _getAppointmentDateText(sourceAppointment) {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay\r\n } = sourceAppointment;\r\n return createFormattedDateText({\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n format: APPOINTMENT_DATE_TEXT_FORMAT\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../../core/utils/type\";\r\nvar COLLECTOR_DEFAULT_WIDTH = 24;\r\nvar COLLECTOR_DEFAULT_OFFSET = 3;\r\nvar COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET = 22;\r\nvar APPOINTMENT_MIN_COUNT = 1;\r\nvar APPOINTMENT_DEFAULT_WIDTH = 40;\r\nvar COLLECTOR_WIDTH_IN_PERCENTS = 75;\r\nvar APPOINTMENT_INCREASED_WIDTH = 50;\r\nclass AppointmentPositioningStrategy {\r\n constructor(renderingStrategy) {\r\n this._renderingStrategy = renderingStrategy\r\n }\r\n getDropDownAppointmentWidth(intervalCount, isAllDay) {\r\n if (isAllDay || !isDefined(isAllDay)) {\r\n return COLLECTOR_WIDTH_IN_PERCENTS * this._renderingStrategy.cellWidth / 100\r\n }\r\n return COLLECTOR_DEFAULT_WIDTH\r\n }\r\n getCollectorTopOffset(allDay) {\r\n return COLLECTOR_DEFAULT_OFFSET\r\n }\r\n getCollectorLeftOffset() {\r\n return COLLECTOR_DEFAULT_OFFSET\r\n }\r\n getAppointmentDefaultOffset() {\r\n if (this._renderingStrategy._isCompactTheme()) {\r\n return COMPACT_THEME_APPOINTMENT_DEFAULT_OFFSET\r\n }\r\n return this._renderingStrategy.appointmentOffset\r\n }\r\n getDynamicAppointmentCountPerCell() {\r\n var renderingStrategy = this._renderingStrategy;\r\n var {\r\n cellHeight: cellHeight\r\n } = renderingStrategy;\r\n var allDayCount = Math.floor((cellHeight - renderingStrategy._getAppointmentDefaultOffset()) / renderingStrategy._getAppointmentDefaultHeight()) || this._getAppointmentMinCount();\r\n if (renderingStrategy.allDaySupported()) {\r\n return {\r\n allDay: \"vertical\" === renderingStrategy.groupOrientation ? allDayCount : this._renderingStrategy.appointmentCountPerCell,\r\n simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()\r\n }\r\n }\r\n return allDayCount\r\n }\r\n getDropDownAppointmentHeight() {\r\n return\r\n }\r\n _getAppointmentMinCount() {\r\n return APPOINTMENT_MIN_COUNT\r\n }\r\n _calculateDynamicAppointmentCountPerCell() {\r\n return Math.floor(this._renderingStrategy._getAppointmentMaxWidth() / APPOINTMENT_INCREASED_WIDTH)\r\n }\r\n _getAppointmentDefaultWidth() {\r\n return APPOINTMENT_DEFAULT_WIDTH\r\n }\r\n}\r\nexport default AppointmentPositioningStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_appointments_positioning_strategy_adaptive.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport AppointmentPositioningStrategy from \"./m_appointments_positioning_strategy_base\";\r\nvar COLLECTOR_ADAPTIVE_SIZE = 28;\r\nvar COLLECTOR_ADAPTIVE_BOTTOM_OFFSET = 40;\r\nvar ADAPTIVE_APPOINTMENT_DEFAULT_OFFSET = 35;\r\nvar ADAPTIVE_APPOINTMENT_DEFAULT_WIDTH = 30;\r\nclass AdaptivePositioningStrategy extends AppointmentPositioningStrategy {\r\n getDropDownAppointmentWidth(intervalCount, isAllDay) {\r\n return this.getDropDownButtonAdaptiveSize()\r\n }\r\n getDropDownButtonAdaptiveSize() {\r\n return COLLECTOR_ADAPTIVE_SIZE\r\n }\r\n getCollectorTopOffset(allDay) {\r\n var renderingStrategy = this._renderingStrategy;\r\n if (renderingStrategy.allDaySupported() && allDay) {\r\n return (renderingStrategy.allDayHeight - renderingStrategy.getDropDownButtonAdaptiveSize()) / 2\r\n }\r\n return this._renderingStrategy.cellHeight - COLLECTOR_ADAPTIVE_BOTTOM_OFFSET\r\n }\r\n getCollectorLeftOffset() {\r\n var collectorWidth = this._renderingStrategy.getDropDownAppointmentWidth();\r\n return (this._renderingStrategy.cellWidth - collectorWidth) / 2\r\n }\r\n getAppointmentDefaultOffset() {\r\n return ADAPTIVE_APPOINTMENT_DEFAULT_OFFSET\r\n }\r\n getDynamicAppointmentCountPerCell() {\r\n var renderingStrategy = this._renderingStrategy;\r\n if (renderingStrategy.allDaySupported()) {\r\n return {\r\n allDay: 0,\r\n simple: this._calculateDynamicAppointmentCountPerCell() || this._getAppointmentMinCount()\r\n }\r\n }\r\n return 0\r\n }\r\n getDropDownAppointmentHeight() {\r\n return COLLECTOR_ADAPTIVE_SIZE\r\n }\r\n _getAppointmentMinCount() {\r\n return 0\r\n }\r\n _getAppointmentDefaultWidth() {\r\n var renderingStrategy = this._renderingStrategy;\r\n if (renderingStrategy.allDaySupported()) {\r\n return ADAPTIVE_APPOINTMENT_DEFAULT_WIDTH\r\n }\r\n return super._getAppointmentDefaultWidth()\r\n }\r\n _calculateDynamicAppointmentCountPerCell() {\r\n return Math.floor(this._renderingStrategy._getAppointmentMaxWidth() / this._renderingStrategy._getAppointmentDefaultWidth())\r\n }\r\n}\r\nexport default AdaptivePositioningStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../../core/utils/extend\";\r\nimport {\r\n isNumeric,\r\n isObject\r\n} from \"../../../../core/utils/type\";\r\nimport {\r\n getAppointmentTakesAllDay\r\n} from \"../../../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay\";\r\nimport timeZoneUtils from \"../../../../ui/scheduler/utils.timeZone\";\r\nimport {\r\n current as currentTheme\r\n} from \"../../../../ui/themes\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../../m_appointment_adapter\";\r\nimport {\r\n AppointmentSettingsGenerator\r\n} from \"../m_settings_generator\";\r\nimport AdaptivePositioningStrategy from \"./m_appointments_positioning_strategy_adaptive\";\r\nimport AppointmentPositioningStrategy from \"./m_appointments_positioning_strategy_base\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar APPOINTMENT_MIN_SIZE = 2;\r\nvar APPOINTMENT_DEFAULT_HEIGHT = 20;\r\nvar COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT = 18;\r\nvar DROP_DOWN_BUTTON_ADAPTIVE_SIZE = 28;\r\nvar WEEK_VIEW_COLLECTOR_OFFSET = 5;\r\nvar COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET = 1;\r\nclass BaseRenderingStrategy {\r\n constructor(options) {\r\n this.options = options;\r\n this._initPositioningStrategy()\r\n }\r\n get isAdaptive() {\r\n return this.options.adaptivityEnabled\r\n }\r\n get rtlEnabled() {\r\n return this.options.rtlEnabled\r\n }\r\n get startDayHour() {\r\n return this.options.startDayHour\r\n }\r\n get endDayHour() {\r\n return this.options.endDayHour\r\n }\r\n get maxAppointmentsPerCell() {\r\n return this.options.maxAppointmentsPerCell\r\n }\r\n get cellWidth() {\r\n return this.options.cellWidth\r\n }\r\n get cellHeight() {\r\n return this.options.cellHeight\r\n }\r\n get allDayHeight() {\r\n return this.options.allDayHeight\r\n }\r\n get resizableStep() {\r\n return this.options.resizableStep\r\n }\r\n get isGroupedByDate() {\r\n return this.options.isGroupedByDate\r\n }\r\n get visibleDayDuration() {\r\n return this.options.visibleDayDuration\r\n }\r\n get viewStartDayHour() {\r\n return this.options.viewStartDayHour\r\n }\r\n get viewEndDayHour() {\r\n return this.options.viewEndDayHour\r\n }\r\n get cellDuration() {\r\n return this.options.cellDuration\r\n }\r\n get cellDurationInMinutes() {\r\n return this.options.cellDurationInMinutes\r\n }\r\n get leftVirtualCellCount() {\r\n return this.options.leftVirtualCellCount\r\n }\r\n get topVirtualCellCount() {\r\n return this.options.topVirtualCellCount\r\n }\r\n get positionHelper() {\r\n return this.options.positionHelper\r\n }\r\n get showAllDayPanel() {\r\n return this.options.showAllDayPanel\r\n }\r\n get isGroupedAllDayPanel() {\r\n return this.options.isGroupedAllDayPanel\r\n }\r\n get groupOrientation() {\r\n return this.options.groupOrientation\r\n }\r\n get rowCount() {\r\n return this.options.rowCount\r\n }\r\n get groupCount() {\r\n return this.options.groupCount\r\n }\r\n get currentDate() {\r\n return this.options.currentDate\r\n }\r\n get appointmentCountPerCell() {\r\n return this.options.appointmentCountPerCell\r\n }\r\n get appointmentOffset() {\r\n return this.options.appointmentOffset\r\n }\r\n get allowResizing() {\r\n return this.options.allowResizing\r\n }\r\n get allowAllDayResizing() {\r\n return this.options.allowAllDayResizing\r\n }\r\n get viewDataProvider() {\r\n return this.options.viewDataProvider\r\n }\r\n get dataAccessors() {\r\n return this.options.dataAccessors\r\n }\r\n get timeZoneCalculator() {\r\n return this.options.timeZoneCalculator\r\n }\r\n get intervalCount() {\r\n return this.options.intervalCount\r\n }\r\n get allDayPanelMode() {\r\n return this.options.allDayPanelMode\r\n }\r\n get isVirtualScrolling() {\r\n return this.options.isVirtualScrolling\r\n }\r\n _correctCollectorCoordinatesInAdaptive(coordinates, isAllDay) {\r\n coordinates.top += this.getCollectorTopOffset(isAllDay);\r\n coordinates.left += this.getCollectorLeftOffset()\r\n }\r\n _initPositioningStrategy() {\r\n this._positioningStrategy = this.isAdaptive ? new AdaptivePositioningStrategy(this) : new AppointmentPositioningStrategy(this)\r\n }\r\n getPositioningStrategy() {\r\n return this._positioningStrategy\r\n }\r\n getAppointmentMinSize() {\r\n return APPOINTMENT_MIN_SIZE\r\n }\r\n keepAppointmentSettings() {\r\n return false\r\n }\r\n getDeltaTime(args, initialSize, appointment) {}\r\n getAppointmentGeometry(coordinates) {\r\n return coordinates\r\n }\r\n needCorrectAppointmentDates() {\r\n return true\r\n }\r\n getDirection() {\r\n return \"horizontal\"\r\n }\r\n createTaskPositionMap(items, skipSorting) {\r\n delete this._maxAppointmentCountPerCell;\r\n var length = null === items || void 0 === items ? void 0 : items.length;\r\n if (!length) {\r\n return\r\n }\r\n var map = [];\r\n for (var i = 0; i < length; i++) {\r\n var coordinates = this._getItemPosition(items[i]);\r\n if (coordinates.length && this.rtlEnabled) {\r\n coordinates = this._correctRtlCoordinates(coordinates)\r\n }\r\n coordinates.forEach(item => {\r\n item.leftVirtualCellCount = this.leftVirtualCellCount;\r\n item.topVirtualCellCount = this.topVirtualCellCount;\r\n item.leftVirtualWidth = this.leftVirtualCellCount * this.cellWidth;\r\n item.topVirtualHeight = this.topVirtualCellCount * this.cellHeight\r\n });\r\n map.push(coordinates)\r\n }\r\n var positionArray = this._getSortedPositions(map);\r\n var resultPositions = this._getResultPositions(positionArray);\r\n return this._getExtendedPositionMap(map, resultPositions)\r\n }\r\n _getDeltaWidth(args, initialSize) {\r\n var intervalWidth = this.resizableStep || this.getAppointmentMinSize();\r\n var initialWidth = initialSize.width;\r\n return Math.round((args.width - initialWidth) / intervalWidth)\r\n }\r\n _correctRtlCoordinates(coordinates) {\r\n var width = coordinates[0].width || this._getAppointmentMaxWidth();\r\n coordinates.forEach(coordinate => {\r\n if (!coordinate.appointmentReduced) {\r\n coordinate.left -= width\r\n }\r\n });\r\n return coordinates\r\n }\r\n _getAppointmentMaxWidth() {\r\n return this.cellWidth\r\n }\r\n _getItemPosition(appointment) {\r\n var position = this.generateAppointmentSettings(appointment);\r\n var allDay = this.isAllDay(appointment);\r\n var result = [];\r\n for (var j = 0; j < position.length; j++) {\r\n var height = this.calculateAppointmentHeight(appointment, position[j]);\r\n var width = this.calculateAppointmentWidth(appointment, position[j]);\r\n var resultWidth = width;\r\n var appointmentReduced = null;\r\n var multiWeekAppointmentParts = [];\r\n var initialRowIndex = position[j].rowIndex;\r\n var initialColumnIndex = position[j].columnIndex;\r\n if (this._needVerifyItemSize() || allDay) {\r\n var currentMaxAllowedPosition = position[j].hMax;\r\n if (this.isAppointmentGreaterThan(currentMaxAllowedPosition, {\r\n left: position[j].left,\r\n width: width\r\n })) {\r\n appointmentReduced = \"head\";\r\n initialRowIndex = position[j].rowIndex;\r\n initialColumnIndex = position[j].columnIndex;\r\n resultWidth = this._reduceMultiWeekAppointment(width, {\r\n left: position[j].left,\r\n right: currentMaxAllowedPosition\r\n });\r\n multiWeekAppointmentParts = this._getAppointmentParts({\r\n sourceAppointmentWidth: width,\r\n reducedWidth: resultWidth,\r\n height: height\r\n }, position[j]);\r\n if (this.rtlEnabled) {\r\n position[j].left = currentMaxAllowedPosition\r\n }\r\n }\r\n }\r\n extend(position[j], {\r\n height: height,\r\n width: resultWidth,\r\n allDay: allDay,\r\n rowIndex: initialRowIndex,\r\n columnIndex: initialColumnIndex,\r\n appointmentReduced: appointmentReduced\r\n });\r\n result = this._getAppointmentPartsPosition(multiWeekAppointmentParts, position[j], result)\r\n }\r\n return result\r\n }\r\n _getAppointmentPartsPosition(appointmentParts, position, result) {\r\n if (appointmentParts.length) {\r\n appointmentParts.unshift(position);\r\n result = result.concat(appointmentParts)\r\n } else {\r\n result.push(position)\r\n }\r\n return result\r\n }\r\n getAppointmentSettingsGenerator(rawAppointment) {\r\n return new AppointmentSettingsGenerator(_extends({\r\n rawAppointment: rawAppointment,\r\n appointmentTakesAllDay: this.isAppointmentTakesAllDay(rawAppointment),\r\n getPositionShiftCallback: this.getPositionShift.bind(this)\r\n }, this.options))\r\n }\r\n generateAppointmentSettings(rawAppointment) {\r\n return this.getAppointmentSettingsGenerator(rawAppointment).create()\r\n }\r\n isAppointmentTakesAllDay(rawAppointment) {\r\n var adapter = createAppointmentAdapter(rawAppointment, this.dataAccessors, this.timeZoneCalculator);\r\n return getAppointmentTakesAllDay(adapter, this.viewStartDayHour, this.viewEndDayHour, this.allDayPanelMode)\r\n }\r\n _getAppointmentParts(geometry, settings) {\r\n return []\r\n }\r\n _getCompactAppointmentParts(appointmentWidth) {\r\n var cellWidth = this.cellWidth || this.getAppointmentMinSize();\r\n return Math.round(appointmentWidth / cellWidth)\r\n }\r\n _reduceMultiWeekAppointment(sourceAppointmentWidth, bound) {\r\n if (this.rtlEnabled) {\r\n sourceAppointmentWidth = Math.floor(bound.left - bound.right)\r\n } else {\r\n sourceAppointmentWidth = bound.right - Math.floor(bound.left)\r\n }\r\n return sourceAppointmentWidth\r\n }\r\n calculateAppointmentHeight(appointment, position) {\r\n return 0\r\n }\r\n calculateAppointmentWidth(appointment, position) {\r\n return 0\r\n }\r\n isAppointmentGreaterThan(etalon, comparisonParameters) {\r\n var result = comparisonParameters.left + comparisonParameters.width - etalon;\r\n if (this.rtlEnabled) {\r\n result = etalon + comparisonParameters.width - comparisonParameters.left\r\n }\r\n return result > this.cellWidth / 2\r\n }\r\n isAllDay(appointment) {\r\n return false\r\n }\r\n cropAppointmentWidth(width, cellWidth) {\r\n return this.isGroupedByDate ? cellWidth : width\r\n }\r\n _getSortedPositions(positionList, skipSorting) {\r\n var result = [];\r\n var round = value => Math.round(100 * value) / 100;\r\n var createItem = (rowIndex, columnIndex, top, left, bottom, right, position, allDay) => ({\r\n i: rowIndex,\r\n j: columnIndex,\r\n top: round(top),\r\n left: round(left),\r\n bottom: round(bottom),\r\n right: round(right),\r\n cellPosition: position,\r\n allDay: allDay\r\n });\r\n for (var rowIndex = 0, rowCount = positionList.length; rowIndex < rowCount; rowIndex++) {\r\n for (var columnIndex = 0, cellCount = positionList[rowIndex].length; columnIndex < cellCount; columnIndex++) {\r\n var {\r\n top: top,\r\n left: left,\r\n height: height,\r\n width: width,\r\n cellPosition: cellPosition,\r\n allDay: allDay\r\n } = positionList[rowIndex][columnIndex];\r\n result.push(createItem(rowIndex, columnIndex, top, left, top + height, left + width, cellPosition, allDay))\r\n }\r\n }\r\n return result.sort((a, b) => this._sortCondition(a, b))\r\n }\r\n _sortCondition(a, b) {}\r\n _getConditions(a, b) {\r\n var isSomeEdge = this._isSomeEdge(a, b);\r\n return {\r\n columnCondition: isSomeEdge || this._normalizeCondition(a.left, b.left),\r\n rowCondition: isSomeEdge || this._normalizeCondition(a.top, b.top),\r\n cellPositionCondition: isSomeEdge || this._normalizeCondition(a.cellPosition, b.cellPosition)\r\n }\r\n }\r\n _rowCondition(a, b) {\r\n var conditions = this._getConditions(a, b);\r\n return conditions.columnCondition || conditions.rowCondition\r\n }\r\n _columnCondition(a, b) {\r\n var conditions = this._getConditions(a, b);\r\n return conditions.rowCondition || conditions.columnCondition\r\n }\r\n _isSomeEdge(a, b) {\r\n return a.i === b.i && a.j === b.j\r\n }\r\n _normalizeCondition(first, second) {\r\n var result = first - second;\r\n return Math.abs(result) > 1 ? result : 0\r\n }\r\n _isItemsCross(firstItem, secondItem) {\r\n var areItemsInTheSameTable = !!firstItem.allDay === !!secondItem.allDay;\r\n var areItemsAllDay = firstItem.allDay && secondItem.allDay;\r\n if (areItemsInTheSameTable) {\r\n var orientation = this._getOrientation(areItemsAllDay);\r\n return this._checkItemsCrossing(firstItem, secondItem, orientation)\r\n }\r\n return false\r\n }\r\n _checkItemsCrossing(firstItem, secondItem, orientation) {\r\n var firstItemSide1 = Math.floor(firstItem[orientation[0]]);\r\n var firstItemSide2 = Math.floor(firstItem[orientation[1]]);\r\n var secondItemSide1 = Math.ceil(secondItem[orientation[0]]);\r\n var secondItemSide2 = Math.ceil(secondItem[orientation[1]]);\r\n var isItemCross = Math.abs(firstItem[orientation[2]] - secondItem[orientation[2]]) <= 1;\r\n return isItemCross && (firstItemSide1 <= secondItemSide1 && firstItemSide2 > secondItemSide1 || firstItemSide1 < secondItemSide2 && firstItemSide2 >= secondItemSide2 || firstItemSide1 === secondItemSide1 && firstItemSide2 === secondItemSide2)\r\n }\r\n _getOrientation(isAllDay) {\r\n return isAllDay ? [\"left\", \"right\", \"top\"] : [\"top\", \"bottom\", \"left\"]\r\n }\r\n _getResultPositions(sortedArray) {\r\n var result = [];\r\n var i;\r\n var sortedIndex = 0;\r\n var currentItem;\r\n var indexes;\r\n var itemIndex;\r\n var maxIndexInStack = 0;\r\n var stack = {};\r\n var findFreeIndex = (indexes, index) => {\r\n var isFind = indexes.some(item => item === index);\r\n if (isFind) {\r\n return findFreeIndex(indexes, ++index)\r\n }\r\n return index\r\n };\r\n var createItem = (currentItem, index) => {\r\n var currentIndex = index || 0;\r\n return {\r\n index: currentIndex,\r\n i: currentItem.i,\r\n j: currentItem.j,\r\n left: currentItem.left,\r\n right: currentItem.right,\r\n top: currentItem.top,\r\n bottom: currentItem.bottom,\r\n allDay: currentItem.allDay,\r\n sortedIndex: this._skipSortedIndex(currentIndex) ? null : sortedIndex++\r\n }\r\n };\r\n var startNewStack = currentItem => {\r\n stack.items = [createItem(currentItem)];\r\n stack.left = currentItem.left;\r\n stack.right = currentItem.right;\r\n stack.top = currentItem.top;\r\n stack.bottom = currentItem.bottom;\r\n stack.allDay = currentItem.allDay\r\n };\r\n var pushItemsInResult = items => {\r\n items.forEach(item => {\r\n result.push({\r\n index: item.index,\r\n count: maxIndexInStack + 1,\r\n i: item.i,\r\n j: item.j,\r\n sortedIndex: item.sortedIndex\r\n })\r\n })\r\n };\r\n for (i = 0; i < sortedArray.length; i++) {\r\n currentItem = sortedArray[i];\r\n indexes = [];\r\n if (!stack.items) {\r\n startNewStack(currentItem)\r\n } else if (this._isItemsCross(stack, currentItem)) {\r\n stack.items.forEach(item => {\r\n if (this._isItemsCross(item, currentItem)) {\r\n indexes.push(item.index)\r\n }\r\n });\r\n itemIndex = indexes.length ? findFreeIndex(indexes, 0) : 0;\r\n stack.items.push(createItem(currentItem, itemIndex));\r\n maxIndexInStack = Math.max(itemIndex, maxIndexInStack);\r\n stack.left = Math.min(stack.left, currentItem.left);\r\n stack.right = Math.max(stack.right, currentItem.right);\r\n stack.top = Math.min(stack.top, currentItem.top);\r\n stack.bottom = Math.max(stack.bottom, currentItem.bottom);\r\n stack.allDay = currentItem.allDay\r\n } else {\r\n pushItemsInResult(stack.items);\r\n stack = {};\r\n startNewStack(currentItem);\r\n maxIndexInStack = 0\r\n }\r\n }\r\n if (stack.items) {\r\n pushItemsInResult(stack.items)\r\n }\r\n return result.sort((a, b) => {\r\n var columnCondition = a.j - b.j;\r\n var rowCondition = a.i - b.i;\r\n return rowCondition || columnCondition\r\n })\r\n }\r\n _skipSortedIndex(index) {\r\n return index > this._getMaxAppointmentCountPerCell() - 1\r\n }\r\n _findIndexByKey(arr, iKey, jKey, iValue, jValue) {\r\n var result = 0;\r\n for (var i = 0, len = arr.length; i < len; i++) {\r\n if (arr[i][iKey] === iValue && arr[i][jKey] === jValue) {\r\n result = i;\r\n break\r\n }\r\n }\r\n return result\r\n }\r\n _getExtendedPositionMap(map, positions) {\r\n var positionCounter = 0;\r\n var result = [];\r\n for (var i = 0, mapLength = map.length; i < mapLength; i++) {\r\n var resultString = [];\r\n for (var j = 0, itemLength = map[i].length; j < itemLength; j++) {\r\n map[i][j].index = positions[positionCounter].index;\r\n map[i][j].sortedIndex = positions[positionCounter].sortedIndex;\r\n map[i][j].count = positions[positionCounter++].count;\r\n resultString.push(map[i][j]);\r\n this._checkLongCompactAppointment(map[i][j], resultString)\r\n }\r\n result.push(resultString)\r\n }\r\n return result\r\n }\r\n _checkLongCompactAppointment(item, result) {\r\n this._splitLongCompactAppointment(item, result);\r\n return result\r\n }\r\n _splitLongCompactAppointment(item, result) {\r\n var appointmentCountPerCell = this._getMaxAppointmentCountPerCellByType(item.allDay);\r\n var compactCount = 0;\r\n if (void 0 !== appointmentCountPerCell && item.index > appointmentCountPerCell - 1) {\r\n item.isCompact = true;\r\n compactCount = this._getCompactAppointmentParts(item.width);\r\n for (var k = 1; k < compactCount; k++) {\r\n var compactPart = extend(true, {}, item);\r\n compactPart.left = this._getCompactLeftCoordinate(item.left, k);\r\n compactPart.columnIndex += k;\r\n compactPart.sortedIndex = null;\r\n result.push(compactPart)\r\n }\r\n }\r\n return result\r\n }\r\n _adjustDurationByDaylightDiff(duration, startDate, endDate) {\r\n var daylightDiff = timeZoneUtils.getDaylightOffset(startDate, endDate);\r\n return this._needAdjustDuration(daylightDiff) ? this._calculateDurationByDaylightDiff(duration, daylightDiff) : duration\r\n }\r\n _needAdjustDuration(diff) {\r\n return 0 !== diff\r\n }\r\n _calculateDurationByDaylightDiff(duration, diff) {\r\n return duration + diff * toMs(\"minute\")\r\n }\r\n _getCollectorLeftOffset(isAllDay) {\r\n if (isAllDay || !this.isApplyCompactAppointmentOffset()) {\r\n return 0\r\n }\r\n var dropDownButtonWidth = this.getDropDownAppointmentWidth(this.intervalCount, isAllDay);\r\n var rightOffset = this._isCompactTheme() ? COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET : WEEK_VIEW_COLLECTOR_OFFSET;\r\n return this.cellWidth - dropDownButtonWidth - rightOffset\r\n }\r\n _markAppointmentAsVirtual(coordinates) {\r\n var isAllDay = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n var countFullWidthAppointmentInCell = this._getMaxAppointmentCountPerCellByType(isAllDay);\r\n if (coordinates.count - countFullWidthAppointmentInCell > 0) {\r\n var {\r\n top: top,\r\n left: left\r\n } = coordinates;\r\n var compactRender = this.isAdaptive || !isAllDay && this.supportCompactDropDownAppointments();\r\n coordinates.virtual = {\r\n left: left + this._getCollectorLeftOffset(isAllDay),\r\n top: top,\r\n width: this.getDropDownAppointmentWidth(this.intervalCount, isAllDay),\r\n height: this.getDropDownAppointmentHeight(),\r\n index: this._generateAppointmentCollectorIndex(coordinates, isAllDay),\r\n isAllDay: isAllDay,\r\n groupIndex: coordinates.groupIndex,\r\n isCompact: compactRender\r\n }\r\n }\r\n }\r\n isApplyCompactAppointmentOffset() {\r\n return this.supportCompactDropDownAppointments()\r\n }\r\n supportCompactDropDownAppointments() {\r\n return true\r\n }\r\n _generateAppointmentCollectorIndex(_ref, isAllDay) {\r\n var {\r\n groupIndex: groupIndex,\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n } = _ref;\r\n return \"\".concat(groupIndex, \"-\").concat(rowIndex, \"-\").concat(columnIndex, \"-\").concat(isAllDay)\r\n }\r\n _getMaxAppointmentCountPerCellByType(isAllDay) {\r\n var appointmentCountPerCell = this._getMaxAppointmentCountPerCell();\r\n if (isObject(appointmentCountPerCell)) {\r\n return isAllDay ? appointmentCountPerCell.allDay : appointmentCountPerCell.simple\r\n }\r\n return appointmentCountPerCell\r\n }\r\n getDropDownAppointmentWidth(intervalCount, isAllDay) {\r\n return this.getPositioningStrategy().getDropDownAppointmentWidth(intervalCount, isAllDay)\r\n }\r\n getDropDownAppointmentHeight() {\r\n return this.getPositioningStrategy().getDropDownAppointmentHeight()\r\n }\r\n getDropDownButtonAdaptiveSize() {\r\n return DROP_DOWN_BUTTON_ADAPTIVE_SIZE\r\n }\r\n getCollectorTopOffset(allDay) {\r\n return this.getPositioningStrategy().getCollectorTopOffset(allDay)\r\n }\r\n getCollectorLeftOffset() {\r\n return this.getPositioningStrategy().getCollectorLeftOffset()\r\n }\r\n getAppointmentDataCalculator() {}\r\n getVerticalAppointmentHeight(cellHeight, currentAppointmentCountInCell, maxAppointmentsPerCell) {\r\n var resultMaxAppointmentsPerCell = maxAppointmentsPerCell;\r\n if (isNumeric(this.maxAppointmentsPerCell)) {\r\n var dynamicAppointmentCountPerCell = this._getDynamicAppointmentCountPerCell();\r\n var maxAppointmentCountDisplayedInCell = dynamicAppointmentCountPerCell.allDay || dynamicAppointmentCountPerCell;\r\n var maxAppointmentsCount = Math.max(currentAppointmentCountInCell, maxAppointmentCountDisplayedInCell);\r\n resultMaxAppointmentsPerCell = Math.min(maxAppointmentsCount, maxAppointmentsPerCell)\r\n }\r\n return cellHeight / resultMaxAppointmentsPerCell\r\n }\r\n _customizeCoordinates(coordinates, cellHeight, appointmentCountPerCell, topOffset, isAllDay) {\r\n var {\r\n index: index,\r\n count: count\r\n } = coordinates;\r\n var appointmentHeight = this.getVerticalAppointmentHeight(cellHeight, count, appointmentCountPerCell);\r\n var appointmentTop = coordinates.top + index * appointmentHeight;\r\n var top = appointmentTop + topOffset;\r\n var {\r\n width: width\r\n } = coordinates;\r\n var {\r\n left: left\r\n } = coordinates;\r\n if (coordinates.isCompact) {\r\n this.isAdaptive && this._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay);\r\n this._markAppointmentAsVirtual(coordinates, isAllDay)\r\n }\r\n return {\r\n height: appointmentHeight,\r\n width: width,\r\n top: top,\r\n left: left,\r\n empty: this._isAppointmentEmpty(cellHeight, width)\r\n }\r\n }\r\n _isAppointmentEmpty(height, width) {\r\n return height < this._getAppointmentMinHeight() || width < this._getAppointmentMinWidth()\r\n }\r\n _calculateGeometryConfig(coordinates) {\r\n var overlappingMode = this.maxAppointmentsPerCell;\r\n var offsets = this._getOffsets();\r\n var appointmentDefaultOffset = this._getAppointmentDefaultOffset();\r\n var appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);\r\n var ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);\r\n var maxHeight = this._getMaxHeight();\r\n if (!isNumeric(appointmentCountPerCell)) {\r\n appointmentCountPerCell = coordinates.count;\r\n ratio = (maxHeight - offsets.unlimited) / maxHeight\r\n }\r\n var topOffset = (1 - ratio) * maxHeight;\r\n if (\"auto\" === overlappingMode || isNumeric(overlappingMode)) {\r\n ratio = 1;\r\n maxHeight -= appointmentDefaultOffset;\r\n topOffset = appointmentDefaultOffset\r\n }\r\n return {\r\n height: ratio * maxHeight,\r\n appointmentCountPerCell: appointmentCountPerCell,\r\n offset: topOffset\r\n }\r\n }\r\n _getAppointmentCount(overlappingMode, coordinates) {}\r\n _getDefaultRatio(coordinates, appointmentCountPerCell) {}\r\n _getOffsets() {}\r\n _getMaxHeight() {}\r\n _needVerifyItemSize() {\r\n return false\r\n }\r\n _getMaxAppointmentCountPerCell() {\r\n if (!this._maxAppointmentCountPerCell) {\r\n var overlappingMode = this.maxAppointmentsPerCell;\r\n var appointmentCountPerCell;\r\n if (isNumeric(overlappingMode)) {\r\n appointmentCountPerCell = overlappingMode\r\n }\r\n if (\"auto\" === overlappingMode) {\r\n appointmentCountPerCell = this._getDynamicAppointmentCountPerCell()\r\n }\r\n if (\"unlimited\" === overlappingMode) {\r\n appointmentCountPerCell = void 0\r\n }\r\n this._maxAppointmentCountPerCell = appointmentCountPerCell\r\n }\r\n return this._maxAppointmentCountPerCell\r\n }\r\n _getDynamicAppointmentCountPerCell() {\r\n return this.getPositioningStrategy().getDynamicAppointmentCountPerCell()\r\n }\r\n allDaySupported() {\r\n return false\r\n }\r\n _isCompactTheme() {\r\n return \"compact\" === (currentTheme() || \"\").split(\".\").pop()\r\n }\r\n _getAppointmentDefaultOffset() {\r\n return this.getPositioningStrategy().getAppointmentDefaultOffset()\r\n }\r\n _getAppointmentDefaultHeight() {\r\n return this._getAppointmentHeightByTheme()\r\n }\r\n _getAppointmentMinHeight() {\r\n return this._getAppointmentDefaultHeight()\r\n }\r\n _getAppointmentHeightByTheme() {\r\n return this._isCompactTheme() ? COMPACT_THEME_APPOINTMENT_DEFAULT_HEIGHT : APPOINTMENT_DEFAULT_HEIGHT\r\n }\r\n _getAppointmentDefaultWidth() {\r\n return this.getPositioningStrategy()._getAppointmentDefaultWidth()\r\n }\r\n _getAppointmentMinWidth() {\r\n return this._getAppointmentDefaultWidth()\r\n }\r\n _needVerticalGroupBounds(allDay) {\r\n return false\r\n }\r\n _needHorizontalGroupBounds() {\r\n return false\r\n }\r\n getAppointmentDurationInMs(apptStartDate, apptEndDate, allDay) {\r\n if (allDay) {\r\n var appointmentDuration = apptEndDate.getTime() - apptStartDate.getTime();\r\n var ceilQuantityOfDays = Math.ceil(appointmentDuration / toMs(\"day\"));\r\n return ceilQuantityOfDays * this.visibleDayDuration\r\n }\r\n var msInHour = toMs(\"hour\");\r\n var trimmedStartDate = dateUtils.trimTime(apptStartDate);\r\n var trimmedEndDate = dateUtils.trimTime(apptEndDate);\r\n var deltaDate = trimmedEndDate - trimmedStartDate;\r\n var quantityOfDays = deltaDate / toMs(\"day\") + 1;\r\n var dayVisibleHours = this.endDayHour - this.startDayHour;\r\n var appointmentDayHours = dayVisibleHours * quantityOfDays;\r\n var startHours = (apptStartDate - trimmedStartDate) / msInHour;\r\n var apptStartDelta = Math.max(0, startHours - this.startDayHour);\r\n var endHours = Math.max(0, (apptEndDate - trimmedEndDate) / msInHour - this.startDayHour);\r\n var apptEndDelta = Math.max(0, dayVisibleHours - endHours);\r\n var result = (appointmentDayHours - (apptStartDelta + apptEndDelta)) * msInHour;\r\n return result\r\n }\r\n getPositionShift(timeShift, isAllDay) {\r\n return {\r\n top: timeShift * this.cellHeight,\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n }\r\n}\r\nexport default BaseRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_agenda.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n each\r\n} from \"../../../../core/utils/iterator\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../../m_appointment_adapter\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../../m_expression_utils\";\r\nimport {\r\n groupAppointmentsByResources\r\n} from \"../../resources/m_utils\";\r\nimport {\r\n getAppointmentTakesSeveralDays,\r\n replaceWrongEndDate\r\n} from \"../data_provider/m_utils\";\r\nimport BaseRenderingStrategy from \"./m_strategy_base\";\r\nclass AgendaRenderingStrategy extends BaseRenderingStrategy {\r\n get instance() {\r\n return this.options.instance\r\n }\r\n get agendaDuration() {\r\n return this.options.agendaDuration\r\n }\r\n getAppointmentMinSize() {}\r\n getDeltaTime() {}\r\n keepAppointmentSettings() {\r\n return true\r\n }\r\n getAppointmentGeometry(geometry) {\r\n return geometry\r\n }\r\n groupAppointmentByResources(appointments) {\r\n var groups = this.instance._getCurrentViewOption(\"groups\");\r\n var config = {\r\n loadedResources: this.options.loadedResources,\r\n resources: this.options.resources,\r\n dataAccessors: this.dataAccessors.resources\r\n };\r\n return groupAppointmentsByResources(config, appointments, groups)\r\n }\r\n createTaskPositionMap(appointments) {\r\n var height;\r\n var appointmentsByResources;\r\n this.calculateRows(appointments, this.agendaDuration, this.currentDate);\r\n if (appointments.length) {\r\n height = this.instance.fire(\"getAgendaVerticalStepHeight\");\r\n appointmentsByResources = this.groupAppointmentByResources(appointments);\r\n var groupedAppts = [];\r\n each(appointmentsByResources, (i, appts) => {\r\n var additionalAppointments = [];\r\n var recurrentIndexes = [];\r\n each(appts, (index, appointment) => {\r\n var recurrenceBatch = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index);\r\n var appointmentBatch = null;\r\n if (!recurrenceBatch.indexes.length) {\r\n appointmentBatch = this.instance.getAppointmentsInstance()._processLongAppointment(appointment);\r\n additionalAppointments = additionalAppointments.concat(appointmentBatch.parts)\r\n }\r\n additionalAppointments = additionalAppointments.concat(recurrenceBatch.parts);\r\n recurrentIndexes = recurrentIndexes.concat(recurrenceBatch.indexes)\r\n });\r\n this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(recurrentIndexes, appts);\r\n this.instance.getAppointmentsInstance()._combineAppointments(appts, additionalAppointments);\r\n groupedAppts = groupedAppts.concat(appts)\r\n });\r\n Array.prototype.splice.apply(appointments, [0, appointments.length].concat(groupedAppts))\r\n }\r\n var result = [];\r\n var sortedIndex = 0;\r\n appointments.forEach((appt, index) => {\r\n result.push([{\r\n height: height,\r\n width: \"100%\",\r\n sortedIndex: sortedIndex++,\r\n groupIndex: this._calculateGroupIndex(index, appointmentsByResources),\r\n agendaSettings: appt.settings\r\n }]);\r\n delete appt.settings\r\n });\r\n return result\r\n }\r\n _calculateGroupIndex(apptIndex, appointmentsByResources) {\r\n var resultInd;\r\n var counter = 0;\r\n for (var i in appointmentsByResources) {\r\n var countApptInGroup = appointmentsByResources[i].length;\r\n if (apptIndex >= counter && apptIndex < counter + countApptInGroup) {\r\n resultInd = Number(i);\r\n break\r\n }\r\n counter += countApptInGroup\r\n }\r\n return resultInd\r\n }\r\n _getDeltaWidth(args, initialSize) {}\r\n _getAppointmentMaxWidth() {\r\n return this.cellWidth\r\n }\r\n _needVerifyItemSize() {\r\n return false\r\n }\r\n _getAppointmentParts(geometry, settings) {}\r\n _reduceMultiWeekAppointment() {}\r\n calculateAppointmentHeight() {\r\n return 0\r\n }\r\n calculateAppointmentWidth() {\r\n return 0\r\n }\r\n isAppointmentGreaterThan(etalon, comparisonParameters) {}\r\n isAllDay() {\r\n return false\r\n }\r\n _sortCondition() {}\r\n _rowCondition(a, b) {}\r\n _columnCondition(a, b) {}\r\n _findIndexByKey(arr, iKey, jKey, iValue, jValue) {}\r\n _markAppointmentAsVirtual() {}\r\n getDropDownAppointmentWidth() {}\r\n getCollectorLeftOffset() {}\r\n getCollectorTopOffset() {}\r\n replaceWrongAppointmentEndDate(rawAppointment, startDate, endDate) {\r\n var adapter = createAppointmentAdapter(rawAppointment, this.dataAccessors, this.timeZoneCalculator);\r\n replaceWrongEndDate(adapter, startDate, endDate, this.cellDuration, this.dataAccessors)\r\n }\r\n calculateRows(appointments, agendaDuration, currentDate, needClearSettings) {\r\n this._rows = [];\r\n currentDate = dateUtils.trimTime(new Date(currentDate));\r\n var groupedAppointments = this.groupAppointmentByResources(appointments);\r\n each(groupedAppointments, (_, currentAppointments) => {\r\n var groupResult = [];\r\n var appts = {\r\n indexes: [],\r\n parts: []\r\n };\r\n if (!currentAppointments.length) {\r\n this._rows.push([]);\r\n return true\r\n }\r\n each(currentAppointments, (index, appointment) => {\r\n var startDate = ExpressionUtils.getField(this.dataAccessors, \"startDate\", appointment);\r\n var endDate = ExpressionUtils.getField(this.dataAccessors, \"endDate\", appointment);\r\n this.replaceWrongAppointmentEndDate(appointment, startDate, endDate);\r\n needClearSettings && delete appointment.settings;\r\n var result = this.instance.getAppointmentsInstance()._processRecurrenceAppointment(appointment, index, false);\r\n appts.parts = appts.parts.concat(result.parts);\r\n appts.indexes = appts.indexes.concat(result.indexes)\r\n });\r\n this.instance.getAppointmentsInstance()._reduceRecurrenceAppointments(appts.indexes, currentAppointments);\r\n currentAppointments.push(...appts.parts);\r\n var appointmentCount = currentAppointments.length;\r\n for (var i = 0; i < agendaDuration; i++) {\r\n var day = new Date(currentDate);\r\n day.setMilliseconds(day.getMilliseconds() + 864e5 * i);\r\n if (void 0 === groupResult[i]) {\r\n groupResult[i] = 0\r\n }\r\n for (var j = 0; j < appointmentCount; j++) {\r\n var appointmentData = currentAppointments[j].settings || currentAppointments[j];\r\n var adapter = createAppointmentAdapter(currentAppointments[j], this.dataAccessors, this.timeZoneCalculator);\r\n var appointmentIsLong = getAppointmentTakesSeveralDays(adapter);\r\n var appointmentIsRecurrence = ExpressionUtils.getField(this.dataAccessors, \"recurrenceRule\", currentAppointments[j]);\r\n if (this.instance.fire(\"dayHasAppointment\", day, appointmentData, true) || !appointmentIsRecurrence && appointmentIsLong && this.instance.fire(\"dayHasAppointment\", day, currentAppointments[j], true)) {\r\n groupResult[i] += 1\r\n }\r\n }\r\n }\r\n this._rows.push(groupResult)\r\n });\r\n return this._rows\r\n }\r\n _iterateRow(row, obj, index) {\r\n for (var i = 0; i < row.length; i++) {\r\n obj.counter += row[i];\r\n if (obj.counter >= index) {\r\n obj.indexInRow = i;\r\n break\r\n }\r\n }\r\n }\r\n getDateByIndex(index, rows, startViewDate) {\r\n var obj = {\r\n counter: 0,\r\n indexInRow: 0\r\n };\r\n index++;\r\n for (var i = 0; i < rows.length; i++) {\r\n this._iterateRow(rows[i], obj, index);\r\n if (obj.indexInRow) {\r\n break\r\n }\r\n }\r\n return new Date(new Date(startViewDate).setDate(startViewDate.getDate() + obj.indexInRow))\r\n }\r\n getAppointmentDataCalculator() {\r\n return ($appointment, originalStartDate) => {\r\n var apptIndex = $appointment.index();\r\n var startViewDate = this.instance.getStartViewDate();\r\n var calculatedStartDate = this.getDateByIndex(apptIndex, this._rows, startViewDate);\r\n var wrappedOriginalStartDate = new Date(originalStartDate);\r\n return {\r\n startDate: new Date(calculatedStartDate.setHours(wrappedOriginalStartDate.getHours(), wrappedOriginalStartDate.getMinutes(), wrappedOriginalStartDate.getSeconds(), wrappedOriginalStartDate.getMilliseconds()))\r\n }\r\n }\r\n }\r\n}\r\nexport default AgendaRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../../core/utils/date\";\r\nvar getSkippedHoursInRange = (startDate, endDate, viewDataProvider) => {\r\n var msInHour = dateUtils.dateToMilliseconds(\"hour\");\r\n var startTime = dateUtils.trimTime(startDate).getTime();\r\n var endTime = dateUtils.setToDayEnd(new Date(endDate.getTime() - 1)).getTime();\r\n var allDayIntervalDuration = 24 * msInHour;\r\n var excludedHours = 0;\r\n for (var time = startTime; time < endTime; time += allDayIntervalDuration) {\r\n var checkDate = new Date(time);\r\n if (viewDataProvider.isSkippedDate(checkDate)) {\r\n excludedHours += 24\r\n }\r\n }\r\n return excludedHours\r\n};\r\nexport default getSkippedHoursInRange;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport getSkippedHoursInRange from \"../../../../renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../../m_expression_utils\";\r\nimport BaseAppointmentsStrategy from \"./m_strategy_base\";\r\nvar DEFAULT_APPOINTMENT_HEIGHT = 60;\r\nvar MIN_APPOINTMENT_HEIGHT = 35;\r\nvar DROP_DOWN_BUTTON_OFFSET = 2;\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass HorizontalRenderingStrategy extends BaseAppointmentsStrategy {\r\n _needVerifyItemSize() {\r\n return true\r\n }\r\n calculateAppointmentWidth(appointment, position) {\r\n var cellWidth = this.cellWidth || this.getAppointmentMinSize();\r\n var allDay = ExpressionUtils.getField(this.dataAccessors, \"allDay\", appointment);\r\n var {\r\n startDate: startDate\r\n } = position.info.appointment;\r\n var {\r\n endDate: endDate\r\n } = position.info.appointment;\r\n var {\r\n normalizedEndDate: normalizedEndDate\r\n } = position.info.appointment;\r\n var duration = this.getAppointmentDurationInMs(startDate, normalizedEndDate, allDay);\r\n duration = this._adjustDurationByDaylightDiff(duration, startDate, normalizedEndDate);\r\n var cellDuration = this.cellDurationInMinutes * toMs(\"minute\");\r\n var skippedHours = getSkippedHoursInRange(startDate, endDate, this.viewDataProvider);\r\n var durationInCells = (duration - skippedHours * toMs(\"hour\")) / cellDuration;\r\n var width = this.cropAppointmentWidth(durationInCells * cellWidth, cellWidth);\r\n return width\r\n }\r\n _needAdjustDuration(diff) {\r\n return diff < 0\r\n }\r\n getAppointmentGeometry(coordinates) {\r\n var result = this._customizeAppointmentGeometry(coordinates);\r\n return super.getAppointmentGeometry(result)\r\n }\r\n _customizeAppointmentGeometry(coordinates) {\r\n var config = this._calculateGeometryConfig(coordinates);\r\n return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)\r\n }\r\n _getOffsets() {\r\n return {\r\n unlimited: 0,\r\n auto: 0\r\n }\r\n }\r\n _getCompactLeftCoordinate(itemLeft, index) {\r\n var cellWidth = this.cellWidth || this.getAppointmentMinSize();\r\n return itemLeft + cellWidth * index\r\n }\r\n _getMaxHeight() {\r\n return this.cellHeight || this.getAppointmentMinSize()\r\n }\r\n _getAppointmentCount(overlappingMode, coordinates) {\r\n return this._getMaxAppointmentCountPerCellByType(false)\r\n }\r\n _getAppointmentDefaultHeight() {\r\n return DEFAULT_APPOINTMENT_HEIGHT\r\n }\r\n _getAppointmentMinHeight() {\r\n return MIN_APPOINTMENT_HEIGHT\r\n }\r\n _sortCondition(a, b) {\r\n return this._columnCondition(a, b)\r\n }\r\n _getOrientation() {\r\n return [\"left\", \"right\", \"top\"]\r\n }\r\n getDropDownAppointmentWidth(intervalCount, isAllDay) {\r\n return this.cellWidth - 2 * DROP_DOWN_BUTTON_OFFSET\r\n }\r\n getDeltaTime(args, initialSize) {\r\n var deltaTime;\r\n var deltaWidth = args.width - initialSize.width;\r\n deltaTime = toMs(\"minute\") * Math.round(deltaWidth / this.cellWidth * this.cellDurationInMinutes);\r\n return deltaTime\r\n }\r\n isAllDay(appointmentData) {\r\n return ExpressionUtils.getField(this.dataAccessors, \"allDay\", appointmentData)\r\n }\r\n _isItemsCross(firstItem, secondItem) {\r\n var orientation = this._getOrientation();\r\n return this._checkItemsCrossing(firstItem, secondItem, orientation)\r\n }\r\n getPositionShift(timeShift) {\r\n var positionShift = super.getPositionShift(timeShift);\r\n var left = this.cellWidth * timeShift;\r\n if (this.rtlEnabled) {\r\n left *= -1\r\n }\r\n left += positionShift.left;\r\n return {\r\n top: 0,\r\n left: left,\r\n cellPosition: left\r\n }\r\n }\r\n supportCompactDropDownAppointments() {\r\n return false\r\n }\r\n}\r\nexport default HorizontalRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/helpers/m_position_helper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar getCellSize = DOMMetaData => {\r\n var {\r\n dateTableCellsMeta: dateTableCellsMeta\r\n } = DOMMetaData;\r\n var length = null === dateTableCellsMeta || void 0 === dateTableCellsMeta ? void 0 : dateTableCellsMeta.length;\r\n if (!length) {\r\n return {\r\n width: 0,\r\n height: 0\r\n }\r\n }\r\n var cellIndex = length > 1 ? 1 : 0;\r\n var cellSize = dateTableCellsMeta[cellIndex][0];\r\n return {\r\n width: cellSize.width,\r\n height: cellSize.height\r\n }\r\n};\r\nvar getMaxAllowedHorizontalPosition = (groupIndex, viewDataProvider, rtlEnabled, DOMMetaData) => {\r\n var {\r\n dateTableCellsMeta: dateTableCellsMeta\r\n } = DOMMetaData;\r\n var firstRow = dateTableCellsMeta[0];\r\n if (!firstRow) {\r\n return 0\r\n }\r\n var {\r\n columnIndex: columnIndex\r\n } = viewDataProvider.getLastGroupCellPosition(groupIndex);\r\n var cellPosition = firstRow[columnIndex];\r\n if (!cellPosition) {\r\n return 0\r\n }\r\n return !rtlEnabled ? cellPosition.left + cellPosition.width : cellPosition.left\r\n};\r\nexport var getCellHeight = DOMMetaData => getCellSize(DOMMetaData).height;\r\nexport var getCellWidth = DOMMetaData => getCellSize(DOMMetaData).width;\r\nexport var getAllDayHeight = (showAllDayPanel, isVerticalGrouping, DOMMetaData) => {\r\n if (!showAllDayPanel) {\r\n return 0\r\n }\r\n if (isVerticalGrouping) {\r\n var {\r\n dateTableCellsMeta: dateTableCellsMeta\r\n } = DOMMetaData;\r\n var length = null === dateTableCellsMeta || void 0 === dateTableCellsMeta ? void 0 : dateTableCellsMeta.length;\r\n return length ? dateTableCellsMeta[0][0].height : 0\r\n }\r\n var {\r\n allDayPanelCellsMeta: allDayPanelCellsMeta\r\n } = DOMMetaData;\r\n return (null === allDayPanelCellsMeta || void 0 === allDayPanelCellsMeta ? void 0 : allDayPanelCellsMeta.length) ? allDayPanelCellsMeta[0].height : 0\r\n};\r\nexport var getMaxAllowedPosition = (groupIndex, viewDataProvider, rtlEnabled, DOMMetaData) => {\r\n var validGroupIndex = groupIndex || 0;\r\n return getMaxAllowedHorizontalPosition(validGroupIndex, viewDataProvider, rtlEnabled, DOMMetaData)\r\n};\r\nexport var getGroupWidth = (groupIndex, viewDataProvider, options) => {\r\n var {\r\n isVirtualScrolling: isVirtualScrolling,\r\n rtlEnabled: rtlEnabled,\r\n DOMMetaData: DOMMetaData\r\n } = options;\r\n var cellWidth = getCellWidth(DOMMetaData);\r\n var result = viewDataProvider.getCellCount(options) * cellWidth;\r\n if (isVirtualScrolling) {\r\n var groupedData = viewDataProvider.groupedDataMap.dateTableGroupedMap;\r\n var groupLength = groupedData[groupIndex][0].length;\r\n result = groupLength * cellWidth\r\n }\r\n var position = getMaxAllowedPosition(groupIndex, viewDataProvider, rtlEnabled, DOMMetaData);\r\n var currentPosition = position[groupIndex];\r\n if (currentPosition) {\r\n if (rtlEnabled) {\r\n result = currentPosition - position[groupIndex + 1]\r\n } else if (0 === groupIndex) {\r\n result = currentPosition\r\n } else {\r\n result = currentPosition - position[groupIndex - 1]\r\n }\r\n }\r\n return result\r\n};\r\nexport class PositionHelper {\r\n constructor(options) {\r\n this.options = options;\r\n this.groupStrategy = this.options.isVerticalGrouping ? new GroupStrategyBase(this.options) : new GroupStrategyHorizontal(this.options)\r\n }\r\n get viewDataProvider() {\r\n return this.options.viewDataProvider\r\n }\r\n get rtlEnabled() {\r\n return this.options.rtlEnabled\r\n }\r\n get isGroupedByDate() {\r\n return this.options.isGroupedByDate\r\n }\r\n get groupCount() {\r\n return this.options.groupCount\r\n }\r\n get DOMMetaData() {\r\n return this.options.getDOMMetaDataCallback()\r\n }\r\n getHorizontalMax(groupIndex) {\r\n var getMaxPosition = groupIndex => getMaxAllowedPosition(groupIndex, this.viewDataProvider, this.rtlEnabled, this.DOMMetaData);\r\n if (this.isGroupedByDate) {\r\n var viewPortGroupCount = this.viewDataProvider.getViewPortGroupCount();\r\n return Math.max(getMaxPosition(groupIndex), getMaxPosition(viewPortGroupCount - 1))\r\n }\r\n return getMaxPosition(groupIndex)\r\n }\r\n getResizableStep() {\r\n var cellWidth = getCellWidth(this.DOMMetaData);\r\n if (this.isGroupedByDate) {\r\n return this.groupCount * cellWidth\r\n }\r\n return cellWidth\r\n }\r\n getVerticalMax(options) {\r\n return this.groupStrategy.getVerticalMax(options)\r\n }\r\n getOffsetByAllDayPanel(options) {\r\n return this.groupStrategy.getOffsetByAllDayPanel(options)\r\n }\r\n getGroupTop(options) {\r\n return this.groupStrategy.getGroupTop(options)\r\n }\r\n}\r\nclass GroupStrategyBase {\r\n constructor(options) {\r\n this.options = options\r\n }\r\n get viewDataProvider() {\r\n return this.options.viewDataProvider\r\n }\r\n get isGroupedByDate() {\r\n return this.options.isGroupedByDate\r\n }\r\n get rtlEnabled() {\r\n return this.options.rtlEnabled\r\n }\r\n get groupCount() {\r\n return this.options.groupCount\r\n }\r\n get DOMMetaData() {\r\n return this.options.getDOMMetaDataCallback()\r\n }\r\n getOffsetByAllDayPanel(_ref) {\r\n var {\r\n groupIndex: groupIndex,\r\n supportAllDayRow: supportAllDayRow,\r\n showAllDayPanel: showAllDayPanel\r\n } = _ref;\r\n var result = 0;\r\n if (supportAllDayRow && showAllDayPanel) {\r\n var allDayPanelHeight = getAllDayHeight(showAllDayPanel, true, this.DOMMetaData);\r\n result = allDayPanelHeight * (groupIndex + 1)\r\n }\r\n return result\r\n }\r\n getVerticalMax(options) {\r\n var maxAllowedPosition = this._getMaxAllowedVerticalPosition(_extends(_extends({}, options), {\r\n viewDataProvider: this.viewDataProvider,\r\n rtlEnabled: this.rtlEnabled,\r\n DOMMetaData: this.DOMMetaData\r\n }));\r\n maxAllowedPosition += this.getOffsetByAllDayPanel(options);\r\n return maxAllowedPosition\r\n }\r\n getGroupTop(_ref2) {\r\n var {\r\n groupIndex: groupIndex,\r\n showAllDayPanel: showAllDayPanel,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel\r\n } = _ref2;\r\n var rowCount = this.viewDataProvider.getRowCountInGroup(groupIndex);\r\n var maxVerticalPosition = this._getMaxAllowedVerticalPosition({\r\n groupIndex: groupIndex,\r\n viewDataProvider: this.viewDataProvider,\r\n showAllDayPanel: showAllDayPanel,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n isVerticalGrouping: true,\r\n DOMMetaData: this.DOMMetaData\r\n });\r\n return maxVerticalPosition - getCellHeight(this.DOMMetaData) * rowCount\r\n }\r\n _getAllDayHeight(showAllDayPanel) {\r\n return getAllDayHeight(showAllDayPanel, true, this.DOMMetaData)\r\n }\r\n _getMaxAllowedVerticalPosition(_ref3) {\r\n var {\r\n groupIndex: groupIndex,\r\n showAllDayPanel: showAllDayPanel,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel\r\n } = _ref3;\r\n var {\r\n rowIndex: rowIndex\r\n } = this.viewDataProvider.getLastGroupCellPosition(groupIndex);\r\n var {\r\n dateTableCellsMeta: dateTableCellsMeta\r\n } = this.DOMMetaData;\r\n var lastGroupRow = dateTableCellsMeta[rowIndex];\r\n if (!lastGroupRow) {\r\n return 0\r\n }\r\n var result = lastGroupRow[0].top + lastGroupRow[0].height;\r\n if (isGroupedAllDayPanel) {\r\n result -= (groupIndex + 1) * this._getAllDayHeight(showAllDayPanel)\r\n }\r\n return result\r\n }\r\n}\r\nclass GroupStrategyHorizontal extends GroupStrategyBase {\r\n getOffsetByAllDayPanel() {\r\n return 0\r\n }\r\n getVerticalMax(options) {\r\n var {\r\n isVirtualScrolling: isVirtualScrolling,\r\n groupIndex: groupIndex\r\n } = options;\r\n var correctedGroupIndex = isVirtualScrolling ? groupIndex : 0;\r\n return this._getMaxAllowedVerticalPosition(_extends(_extends({}, options), {\r\n groupIndex: correctedGroupIndex\r\n }))\r\n }\r\n getGroupTop() {\r\n return 0\r\n }\r\n _getAllDayHeight(showAllDayPanel) {\r\n return getAllDayHeight(showAllDayPanel, false, this.DOMMetaData)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month_line.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport query from \"../../../../data/query\";\r\nimport {\r\n sortAppointmentsByStartDate\r\n} from \"../data_provider/m_utils\";\r\nimport HorizontalAppointmentsStrategy from \"./m_strategy_horizontal\";\r\nvar HOURS_IN_DAY = 24;\r\nvar MINUTES_IN_HOUR = 60;\r\nvar MILLISECONDS_IN_MINUTE = 6e4;\r\nvar ZERO_APPOINTMENT_DURATION_IN_DAYS = 1;\r\nclass HorizontalMonthLineRenderingStrategy extends HorizontalAppointmentsStrategy {\r\n calculateAppointmentWidth(appointment, position) {\r\n var startDate = dateUtils.trimTime(position.info.appointment.startDate);\r\n var {\r\n normalizedEndDate: normalizedEndDate\r\n } = position.info.appointment;\r\n var cellWidth = this.cellWidth || this.getAppointmentMinSize();\r\n var duration = Math.ceil(this._getDurationInDays(startDate, normalizedEndDate));\r\n var width = this.cropAppointmentWidth(duration * cellWidth, cellWidth);\r\n if (this.isVirtualScrolling) {\r\n var skippedDays = this.viewDataProvider.getSkippedDaysCount(position.groupIndex, startDate, normalizedEndDate, duration);\r\n width -= skippedDays * cellWidth\r\n }\r\n return width\r\n }\r\n _getDurationInDays(startDate, endDate) {\r\n var adjustedDuration = this._adjustDurationByDaylightDiff(endDate.getTime() - startDate.getTime(), startDate, endDate);\r\n return adjustedDuration / dateUtils.dateToMilliseconds(\"day\") || ZERO_APPOINTMENT_DURATION_IN_DAYS\r\n }\r\n getDeltaTime(args, initialSize) {\r\n return HOURS_IN_DAY * MINUTES_IN_HOUR * MILLISECONDS_IN_MINUTE * this._getDeltaWidth(args, initialSize)\r\n }\r\n isAllDay() {\r\n return false\r\n }\r\n createTaskPositionMap(items, skipSorting) {\r\n if (!skipSorting) {\r\n sortAppointmentsByStartDate(items, this.dataAccessors)\r\n }\r\n return super.createTaskPositionMap(items)\r\n }\r\n _getSortedPositions(map, skipSorting) {\r\n var result = super._getSortedPositions(map);\r\n if (!skipSorting) {\r\n result = query(result).sortBy(\"top\").thenBy(\"left\").thenBy(\"cellPosition\").thenBy(\"i\").toArray()\r\n }\r\n return result\r\n }\r\n needCorrectAppointmentDates() {\r\n return false\r\n }\r\n getPositionShift(timeShift) {\r\n return {\r\n top: 0,\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n }\r\n}\r\nexport default HorizontalMonthLineRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_horizontal_month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n getGroupWidth\r\n} from \"../../workspaces/helpers/m_position_helper\";\r\nimport HorizontalMonthLineRenderingStrategy from \"./m_strategy_horizontal_month_line\";\r\nvar MONTH_APPOINTMENT_HEIGHT_RATIO = .6;\r\nvar MONTH_APPOINTMENT_MIN_OFFSET = 26;\r\nvar MONTH_APPOINTMENT_MAX_OFFSET = 30;\r\nvar MONTH_DROPDOWN_APPOINTMENT_MIN_RIGHT_OFFSET = 36;\r\nvar MONTH_DROPDOWN_APPOINTMENT_MAX_RIGHT_OFFSET = 60;\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass HorizontalMonthRenderingStrategy extends HorizontalMonthLineRenderingStrategy {\r\n get endViewDate() {\r\n return this.options.endViewDate\r\n }\r\n get adaptivityEnabled() {\r\n return this.options.adaptivityEnabled\r\n }\r\n get DOMMetaData() {\r\n return this.options.DOMMetaData\r\n }\r\n _getLeftPosition(settings) {\r\n var fullWeekAppointmentWidth = this.getGroupWidth(settings.groupIndex);\r\n return this._calculateMultiWeekAppointmentLeftOffset(settings.hMax, fullWeekAppointmentWidth)\r\n }\r\n _getChunkCount(fullChunksWidth, firstChunkWidth, weekWidth, settings) {\r\n var {\r\n groupIndex: groupIndex,\r\n info: {\r\n appointment: {\r\n startDate: startDate\r\n }\r\n }\r\n } = settings;\r\n var rawFullChunksWidth = fullChunksWidth - firstChunkWidth + weekWidth;\r\n var allChunksCount = Math.ceil(rawFullChunksWidth / weekWidth);\r\n var viewRowIndex = this._tryGetRowIndexInView(startDate);\r\n if (void 0 !== viewRowIndex) {\r\n var viewChunksCount = this.viewDataProvider.getRowCountInGroup(groupIndex);\r\n var allowedChunksCount = viewChunksCount - viewRowIndex;\r\n return allChunksCount <= allowedChunksCount ? allChunksCount : allowedChunksCount\r\n }\r\n return allChunksCount\r\n }\r\n _tryGetRowIndexInView(positionStartDate) {\r\n var _a;\r\n var columnsCount = this.viewDataProvider.getColumnsCount();\r\n if ((null === (_a = this.options.dataRange) || void 0 === _a ? void 0 : _a.length) < 1 || !columnsCount) {\r\n return\r\n }\r\n var [startViewDate] = this.options.dateRange;\r\n var dayDurationMs = toMs(\"day\");\r\n var timeFromStart = positionStartDate.getTime() - startViewDate.getTime();\r\n return Math.floor(timeFromStart / dayDurationMs / columnsCount)\r\n }\r\n _getChunkWidths(geometry, settings, weekWidth) {\r\n var firstChunkWidth = geometry.reducedWidth;\r\n var fullChunksWidth = Math.floor(geometry.sourceAppointmentWidth);\r\n var widthWithoutFirstChunk = fullChunksWidth - firstChunkWidth;\r\n return [firstChunkWidth, fullChunksWidth, widthWithoutFirstChunk]\r\n }\r\n _getTailChunkSettings(withoutFirstChunkWidth, weekWidth, leftPosition) {\r\n var tailChunkWidth = withoutFirstChunkWidth % weekWidth || weekWidth;\r\n var rtlPosition = leftPosition + (weekWidth - tailChunkWidth);\r\n var tailChunkLeftPosition = this.rtlEnabled ? rtlPosition : leftPosition;\r\n return [tailChunkWidth, tailChunkLeftPosition]\r\n }\r\n _getAppointmentParts(geometry, settings) {\r\n var result = [];\r\n var weekWidth = Math.round(this.getGroupWidth(settings.groupIndex));\r\n var [firstChunkWidth, fullChunksWidth, withoutFirstChunkWidth] = this._getChunkWidths(geometry, settings, weekWidth);\r\n var leftPosition = this._getLeftPosition(settings);\r\n var hasTailChunk = this.endViewDate > settings.info.appointment.endDate;\r\n var chunkCount = this._getChunkCount(fullChunksWidth, firstChunkWidth, weekWidth, settings);\r\n var [tailChunkWidth, tailChunkLeftPosition] = this._getTailChunkSettings(withoutFirstChunkWidth, weekWidth, leftPosition);\r\n for (var chunkIndex = 1; chunkIndex < chunkCount; chunkIndex++) {\r\n var topPosition = settings.top + this.cellHeight * chunkIndex;\r\n var isTailChunk = hasTailChunk && chunkIndex === chunkCount - 1;\r\n result.push(_extends(_extends({}, settings), {\r\n top: topPosition,\r\n left: isTailChunk ? tailChunkLeftPosition : leftPosition,\r\n height: geometry.height,\r\n width: isTailChunk ? tailChunkWidth : weekWidth,\r\n appointmentReduced: isTailChunk ? \"tail\" : \"body\",\r\n rowIndex: ++settings.rowIndex,\r\n columnIndex: 0\r\n }))\r\n }\r\n return result\r\n }\r\n _calculateMultiWeekAppointmentLeftOffset(max, width) {\r\n return this.rtlEnabled ? max : max - width\r\n }\r\n getGroupWidth(groupIndex) {\r\n return getGroupWidth(groupIndex, this.viewDataProvider, {\r\n intervalCount: this.options.intervalCount,\r\n currentDate: this.options.currentDate,\r\n viewType: this.options.viewType,\r\n hoursInterval: this.options.hoursInterval,\r\n startDayHour: this.options.startDayHour,\r\n endDayHour: this.options.endDayHour,\r\n isVirtualScrolling: this.isVirtualScrolling,\r\n rtlEnabled: this.rtlEnabled,\r\n DOMMetaData: this.DOMMetaData\r\n })\r\n }\r\n _getAppointmentDefaultHeight() {\r\n return this._getAppointmentHeightByTheme()\r\n }\r\n _getAppointmentMinHeight() {\r\n return this._getAppointmentDefaultHeight()\r\n }\r\n _columnCondition(a, b) {\r\n var conditions = this._getConditions(a, b);\r\n return conditions.rowCondition || conditions.columnCondition || conditions.cellPositionCondition\r\n }\r\n createTaskPositionMap(items) {\r\n return super.createTaskPositionMap(items, true)\r\n }\r\n _getSortedPositions(map) {\r\n return super._getSortedPositions(map, true)\r\n }\r\n _getDefaultRatio() {\r\n return MONTH_APPOINTMENT_HEIGHT_RATIO\r\n }\r\n _getOffsets() {\r\n return {\r\n unlimited: MONTH_APPOINTMENT_MIN_OFFSET,\r\n auto: MONTH_APPOINTMENT_MAX_OFFSET\r\n }\r\n }\r\n getDropDownAppointmentWidth(intervalCount, isAllDay) {\r\n if (this.adaptivityEnabled) {\r\n return this.getDropDownButtonAdaptiveSize()\r\n }\r\n var offset = intervalCount > 1 ? MONTH_DROPDOWN_APPOINTMENT_MAX_RIGHT_OFFSET : MONTH_DROPDOWN_APPOINTMENT_MIN_RIGHT_OFFSET;\r\n return this.cellWidth - offset\r\n }\r\n needCorrectAppointmentDates() {\r\n return false\r\n }\r\n _needVerticalGroupBounds() {\r\n return false\r\n }\r\n _needHorizontalGroupBounds() {\r\n return true\r\n }\r\n getPositionShift(timeShift) {\r\n return {\r\n cellPosition: timeShift * this.cellWidth,\r\n top: 0,\r\n left: 0\r\n }\r\n }\r\n}\r\nexport default HorizontalMonthRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_vertical.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../../core/utils/extend\";\r\nimport {\r\n roundFloatPart\r\n} from \"../../../../core/utils/math\";\r\nimport {\r\n isNumeric\r\n} from \"../../../../core/utils/type\";\r\nimport {\r\n getAppointmentTakesAllDay\r\n} from \"../../../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay\";\r\nimport getSkippedHoursInRange from \"../../../../renovation/ui/scheduler/view_model/appointments/utils/getSkippedHoursInRange\";\r\nimport timeZoneUtils from \"../../../../ui/scheduler/utils.timeZone\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../../m_appointment_adapter\";\r\nimport {\r\n ExpressionUtils\r\n} from \"../../m_expression_utils\";\r\nimport BaseAppointmentsStrategy from \"./m_strategy_base\";\r\nvar ALLDAY_APPOINTMENT_MIN_VERTICAL_OFFSET = 5;\r\nvar ALLDAY_APPOINTMENT_MAX_VERTICAL_OFFSET = 20;\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass VerticalRenderingStrategy extends BaseAppointmentsStrategy {\r\n getDeltaTime(args, initialSize, appointment) {\r\n var deltaTime = 0;\r\n if (this.isAllDay(appointment)) {\r\n deltaTime = this._getDeltaWidth(args, initialSize) * toMs(\"day\")\r\n } else {\r\n var deltaHeight = args.height - initialSize.height;\r\n deltaTime = toMs(\"minute\") * Math.round(deltaHeight / this.cellHeight * this.cellDurationInMinutes)\r\n }\r\n return deltaTime\r\n }\r\n _correctCollectorCoordinatesInAdaptive(coordinates, isAllDay) {\r\n if (isAllDay) {\r\n super._correctCollectorCoordinatesInAdaptive(coordinates, isAllDay)\r\n } else if (0 === this._getMaxAppointmentCountPerCellByType()) {\r\n var {\r\n cellHeight: cellHeight\r\n } = this;\r\n var {\r\n cellWidth: cellWidth\r\n } = this;\r\n coordinates.top += (cellHeight - this.getDropDownButtonAdaptiveSize()) / 2;\r\n coordinates.left += (cellWidth - this.getDropDownButtonAdaptiveSize()) / 2\r\n }\r\n }\r\n getAppointmentGeometry(coordinates) {\r\n var geometry = null;\r\n if (coordinates.allDay) {\r\n geometry = this._getAllDayAppointmentGeometry(coordinates)\r\n } else {\r\n geometry = this.isAdaptive && coordinates.isCompact ? this._getAdaptiveGeometry(coordinates) : this._getVerticalAppointmentGeometry(coordinates)\r\n }\r\n return super.getAppointmentGeometry(geometry)\r\n }\r\n _getAdaptiveGeometry(coordinates) {\r\n var config = this._calculateGeometryConfig(coordinates);\r\n return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset)\r\n }\r\n _getItemPosition(appointment) {\r\n var allDay = this.isAllDay(appointment);\r\n if (allDay) {\r\n return super._getItemPosition(appointment)\r\n }\r\n var adapter = createAppointmentAdapter(appointment, this.dataAccessors, this.timeZoneCalculator);\r\n var isRecurring = !!adapter.recurrenceRule;\r\n var appointmentStartDate = adapter.calculateStartDate(\"toGrid\");\r\n var appointmentEndDate = adapter.calculateEndDate(\"toGrid\");\r\n var appointmentDuration = appointmentEndDate - appointmentStartDate;\r\n var appointmentBeginInCurrentView = this.options.startViewDate < appointmentStartDate;\r\n var isAppointmentTakesSeveralDays = !timeZoneUtils.isSameAppointmentDates(appointmentStartDate, appointmentEndDate);\r\n var settings = this.generateAppointmentSettings(appointment);\r\n var result = [];\r\n for (var j = 0; j < settings.length; j++) {\r\n var currentSetting = settings[j];\r\n var height = this.calculateAppointmentHeight(appointment, currentSetting);\r\n var width = this.calculateAppointmentWidth(appointment, currentSetting);\r\n var resultHeight = height;\r\n var appointmentReduced = null;\r\n var multiDaysAppointmentParts = [];\r\n var currentMaxAllowedPosition = currentSetting.vMax;\r\n if (this._isMultiViewAppointment(currentSetting, height) || isAppointmentTakesSeveralDays && !isRecurring) {\r\n var trimmedStartDate = dateUtils.trimTime(appointmentStartDate);\r\n var trimmedSettingStartDate = dateUtils.trimTime(currentSetting.info.appointment.startDate);\r\n var reduceHead = trimmedStartDate <= trimmedSettingStartDate || isRecurring;\r\n if (reduceHead) {\r\n resultHeight = this._reduceMultiDayAppointment(height, {\r\n top: currentSetting.top,\r\n bottom: currentMaxAllowedPosition\r\n });\r\n multiDaysAppointmentParts = this._getAppointmentParts({\r\n sourceAppointmentHeight: height,\r\n reducedHeight: resultHeight,\r\n width: width\r\n }, currentSetting)\r\n }\r\n var {\r\n startDate: currentSettingStartDate,\r\n normalizedEndDate: currentSettingNormalizedEndDate\r\n } = currentSetting.info.appointment;\r\n var currentSettingDuration = currentSettingNormalizedEndDate - currentSettingStartDate;\r\n var hasNextParts = currentSettingDuration < appointmentDuration;\r\n appointmentReduced = hasNextParts ? appointmentBeginInCurrentView ? \"head\" : \"body\" : appointmentBeginInCurrentView ? \"head\" : \"tail\"\r\n }\r\n extend(currentSetting, {\r\n height: resultHeight,\r\n width: width,\r\n allDay: allDay,\r\n appointmentReduced: appointmentReduced\r\n });\r\n result = this._getAppointmentPartsPosition(multiDaysAppointmentParts, currentSetting, result)\r\n }\r\n return result\r\n }\r\n _isMultiViewAppointment(_ref, height) {\r\n var {\r\n vMax: vMax,\r\n top: top\r\n } = _ref;\r\n var fullAppointmentHeight = roundFloatPart(height, 2);\r\n var remainingHeight = roundFloatPart(vMax - top, 2);\r\n return fullAppointmentHeight > remainingHeight\r\n }\r\n _reduceMultiDayAppointment(sourceAppointmentHeight, bound) {\r\n return Math.min(sourceAppointmentHeight, bound.bottom - Math.floor(bound.top))\r\n }\r\n _getGroupHeight() {\r\n return this.cellHeight * this.rowCount\r\n }\r\n _getGroupTopOffset(appointmentSettings) {\r\n var {\r\n groupIndex: groupIndex\r\n } = appointmentSettings;\r\n var groupTop = Math.max(0, this.positionHelper.getGroupTop({\r\n groupIndex: groupIndex,\r\n showAllDayPanel: this.showAllDayPanel,\r\n isGroupedAllDayPanel: this.isGroupedAllDayPanel\r\n }));\r\n var allDayPanelOffset = this.positionHelper.getOffsetByAllDayPanel({\r\n groupIndex: groupIndex,\r\n supportAllDayRow: this.allDaySupported(),\r\n showAllDayPanel: this.showAllDayPanel\r\n });\r\n var appointmentGroupTopOffset = appointmentSettings.top - groupTop - allDayPanelOffset;\r\n return appointmentGroupTopOffset\r\n }\r\n _getTailHeight(appointmentGeometry, appointmentSettings) {\r\n if (!this.isVirtualScrolling) {\r\n return appointmentGeometry.sourceAppointmentHeight - appointmentGeometry.reducedHeight\r\n }\r\n var appointmentGroupTopOffset = this._getGroupTopOffset(appointmentSettings);\r\n var {\r\n sourceAppointmentHeight: sourceAppointmentHeight\r\n } = appointmentGeometry;\r\n var groupHeight = this._getGroupHeight();\r\n var tailHeight = appointmentGroupTopOffset + sourceAppointmentHeight - groupHeight;\r\n return tailHeight\r\n }\r\n _getAppointmentParts(appointmentGeometry, appointmentSettings) {\r\n var {\r\n width: width\r\n } = appointmentGeometry;\r\n var result = [];\r\n var currentPartTop = Math.max(0, this.positionHelper.getGroupTop({\r\n groupIndex: appointmentSettings.groupIndex,\r\n showAllDayPanel: this.showAllDayPanel,\r\n isGroupedAllDayPanel: this.isGroupedAllDayPanel\r\n }));\r\n var cellsDiff = this.isGroupedByDate ? this.groupCount : 1;\r\n var offset = this.cellWidth * cellsDiff;\r\n var allDayPanelOffset = this.positionHelper.getOffsetByAllDayPanel({\r\n groupIndex: appointmentSettings.groupIndex,\r\n supportAllDayRow: this.allDaySupported(),\r\n showAllDayPanel: this.showAllDayPanel\r\n });\r\n currentPartTop += allDayPanelOffset;\r\n var minHeight = this.getAppointmentMinSize();\r\n var {\r\n vMax: vMax,\r\n hMax: hMax\r\n } = appointmentSettings;\r\n var hasTailPart = this.options.endViewDate > appointmentSettings.info.appointment.endDate;\r\n var left = Math.round(appointmentSettings.left + offset);\r\n var tailHeight = this._getTailHeight(appointmentGeometry, appointmentSettings);\r\n while (tailHeight > 0 && left < hMax) {\r\n tailHeight = Math.max(minHeight, tailHeight);\r\n var columnIndex = appointmentSettings.columnIndex + cellsDiff;\r\n var height = Math.min(tailHeight, vMax);\r\n result.push(_extends(_extends({}, appointmentSettings), {\r\n top: currentPartTop,\r\n left: left,\r\n height: height,\r\n width: width,\r\n appointmentReduced: \"body\",\r\n rowIndex: 0,\r\n columnIndex: columnIndex\r\n }));\r\n left += offset;\r\n tailHeight -= vMax\r\n }\r\n if (hasTailPart && result.length > 0) {\r\n result[result.length - 1].appointmentReduced = \"tail\"\r\n }\r\n return result\r\n }\r\n _getMinuteHeight() {\r\n return this.cellHeight / this.cellDurationInMinutes\r\n }\r\n _getCompactLeftCoordinate(itemLeft, index) {\r\n var cellWidth = this.cellWidth || this.getAppointmentMinSize();\r\n return itemLeft + (1 + cellWidth) * index\r\n }\r\n _getVerticalAppointmentGeometry(coordinates) {\r\n var config = this._calculateVerticalGeometryConfig(coordinates);\r\n return this._customizeVerticalCoordinates(coordinates, config.width, config.appointmentCountPerCell, config.offset)\r\n }\r\n _customizeVerticalCoordinates(coordinates, width, appointmentCountPerCell, topOffset, isAllDay) {\r\n var appointmentWidth = Math.max(width / appointmentCountPerCell, width / coordinates.count);\r\n var {\r\n height: height\r\n } = coordinates;\r\n var appointmentLeft = coordinates.left + coordinates.index * appointmentWidth;\r\n var {\r\n top: top\r\n } = coordinates;\r\n if (coordinates.isCompact) {\r\n this._markAppointmentAsVirtual(coordinates, isAllDay)\r\n }\r\n return {\r\n height: height,\r\n width: appointmentWidth,\r\n top: top,\r\n left: appointmentLeft,\r\n empty: this._isAppointmentEmpty(height, width)\r\n }\r\n }\r\n _calculateVerticalGeometryConfig(coordinates) {\r\n var overlappingMode = this.maxAppointmentsPerCell;\r\n var offsets = this._getOffsets();\r\n var appointmentDefaultOffset = this._getAppointmentDefaultOffset();\r\n var appointmentCountPerCell = this._getAppointmentCount(overlappingMode, coordinates);\r\n var ratio = this._getDefaultRatio(coordinates, appointmentCountPerCell);\r\n var maxWidth = this._getMaxWidth();\r\n if (!appointmentCountPerCell) {\r\n appointmentCountPerCell = coordinates.count;\r\n ratio = (maxWidth - offsets.unlimited) / maxWidth\r\n }\r\n var topOffset = (1 - ratio) * maxWidth;\r\n if (\"auto\" === overlappingMode || isNumeric(overlappingMode)) {\r\n ratio = 1;\r\n maxWidth -= appointmentDefaultOffset;\r\n topOffset = 0\r\n }\r\n return {\r\n width: ratio * maxWidth,\r\n appointmentCountPerCell: appointmentCountPerCell,\r\n offset: topOffset\r\n }\r\n }\r\n _getMaxWidth() {\r\n return this.cellWidth\r\n }\r\n isAllDay(appointmentData) {\r\n return getAppointmentTakesAllDay(createAppointmentAdapter(appointmentData, this.dataAccessors, this.timeZoneCalculator), this.startDayHour, this.endDayHour, this.allDayPanelMode)\r\n }\r\n _getAppointmentMaxWidth() {\r\n return this.cellWidth - this._getAppointmentDefaultOffset()\r\n }\r\n calculateAppointmentWidth(appointment, position) {\r\n if (!this.isAllDay(appointment)) {\r\n return 0\r\n }\r\n var startDate = dateUtils.trimTime(position.info.appointment.startDate);\r\n var {\r\n normalizedEndDate: normalizedEndDate\r\n } = position.info.appointment;\r\n var cellWidth = this.cellWidth || this.getAppointmentMinSize();\r\n var durationInHours = (normalizedEndDate.getTime() - startDate.getTime()) / toMs(\"hour\");\r\n var skippedHours = getSkippedHoursInRange(position.info.appointment.startDate, position.info.appointment.endDate, this.viewDataProvider);\r\n var width = Math.ceil((durationInHours - skippedHours) / 24) * cellWidth;\r\n width = this.cropAppointmentWidth(width, cellWidth);\r\n return width\r\n }\r\n calculateAppointmentHeight(appointment, position) {\r\n if (this.isAllDay(appointment)) {\r\n return 0\r\n }\r\n var {\r\n startDate: startDate\r\n } = position.info.appointment;\r\n var {\r\n normalizedEndDate: normalizedEndDate\r\n } = position.info.appointment;\r\n var allDay = ExpressionUtils.getField(this.dataAccessors, \"allDay\", appointment);\r\n var duration = this.getAppointmentDurationInMs(startDate, normalizedEndDate, allDay);\r\n var durationInMinutes = this._adjustDurationByDaylightDiff(duration, startDate, normalizedEndDate) / toMs(\"minute\");\r\n var height = durationInMinutes * this._getMinuteHeight();\r\n return height\r\n }\r\n getDirection() {\r\n return \"vertical\"\r\n }\r\n _sortCondition(a, b) {\r\n if (!!a.allDay !== !!b.allDay) {\r\n return a.allDay ? 1 : -1\r\n }\r\n var isAllDay = a.allDay && b.allDay;\r\n return \"vertical\" === this.groupOrientation && isAllDay ? this._columnCondition(a, b) : this._rowCondition(a, b)\r\n }\r\n allDaySupported() {\r\n return true\r\n }\r\n _getAllDayAppointmentGeometry(coordinates) {\r\n var config = this._calculateGeometryConfig(coordinates);\r\n return this._customizeCoordinates(coordinates, config.height, config.appointmentCountPerCell, config.offset, true)\r\n }\r\n _calculateGeometryConfig(coordinates) {\r\n if (!this.allowResizing || !this.allowAllDayResizing) {\r\n coordinates.skipResizing = true\r\n }\r\n var config = super._calculateGeometryConfig(coordinates);\r\n var minAppointmentCountPerCell = Math.min(config.appointmentCountPerCell, this._getDynamicAppointmentCountPerCell().allDay);\r\n if (coordinates.allDay && coordinates.count <= minAppointmentCountPerCell) {\r\n config.offset = 0\r\n }\r\n return config\r\n }\r\n _getAppointmentCount(overlappingMode, coordinates) {\r\n return \"auto\" !== overlappingMode && 1 === coordinates.count && !isNumeric(overlappingMode) ? coordinates.count : this._getMaxAppointmentCountPerCellByType(coordinates.allDay)\r\n }\r\n _getDefaultRatio(coordinates, appointmentCountPerCell) {\r\n return coordinates.count > this.appointmentCountPerCell ? .65 : 1\r\n }\r\n _getOffsets() {\r\n return {\r\n unlimited: ALLDAY_APPOINTMENT_MIN_VERTICAL_OFFSET,\r\n auto: ALLDAY_APPOINTMENT_MAX_VERTICAL_OFFSET\r\n }\r\n }\r\n _getMaxHeight() {\r\n return this.allDayHeight || this.getAppointmentMinSize()\r\n }\r\n _needVerticalGroupBounds(allDay) {\r\n return !allDay\r\n }\r\n _needHorizontalGroupBounds() {\r\n return false\r\n }\r\n getPositionShift(timeShift, isAllDay) {\r\n if (!isAllDay && this.isAdaptive && 0 === this._getMaxAppointmentCountPerCellByType(isAllDay)) {\r\n return {\r\n top: 0,\r\n left: 0,\r\n cellPosition: 0\r\n }\r\n }\r\n return super.getPositionShift(timeShift, isAllDay)\r\n }\r\n}\r\nexport default VerticalRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/rendering_strategies/m_strategy_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport VerticalRenderingStrategy from \"./m_strategy_vertical\";\r\nclass WeekAppointmentRenderingStrategy extends VerticalRenderingStrategy {\r\n isApplyCompactAppointmentOffset() {\r\n if (this.isAdaptive && 0 === this._getMaxAppointmentCountPerCellByType()) {\r\n return false\r\n }\r\n return this.supportCompactDropDownAppointments()\r\n }\r\n}\r\nexport default WeekAppointmentRenderingStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/appointments/m_view_model_generator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n getAppointmentKey\r\n} from \"../../../renovation/ui/scheduler/appointment/utils\";\r\nimport AgendaAppointmentsStrategy from \"./rendering_strategies/m_strategy_agenda\";\r\nimport HorizontalAppointmentsStrategy from \"./rendering_strategies/m_strategy_horizontal\";\r\nimport HorizontalMonthAppointmentsStrategy from \"./rendering_strategies/m_strategy_horizontal_month\";\r\nimport HorizontalMonthLineAppointmentsStrategy from \"./rendering_strategies/m_strategy_horizontal_month_line\";\r\nimport VerticalAppointmentsStrategy from \"./rendering_strategies/m_strategy_vertical\";\r\nimport WeekAppointmentRenderingStrategy from \"./rendering_strategies/m_strategy_week\";\r\nvar RENDERING_STRATEGIES = {\r\n horizontal: HorizontalAppointmentsStrategy,\r\n horizontalMonth: HorizontalMonthAppointmentsStrategy,\r\n horizontalMonthLine: HorizontalMonthLineAppointmentsStrategy,\r\n vertical: VerticalAppointmentsStrategy,\r\n week: WeekAppointmentRenderingStrategy,\r\n agenda: AgendaAppointmentsStrategy\r\n};\r\nexport class AppointmentViewModelGenerator {\r\n initRenderingStrategy(options) {\r\n var RenderingStrategy = RENDERING_STRATEGIES[options.appointmentRenderingStrategyName];\r\n this.renderingStrategy = new RenderingStrategy(options)\r\n }\r\n generate(filteredItems, options) {\r\n var {\r\n isRenovatedAppointments: isRenovatedAppointments\r\n } = options;\r\n var appointments = filteredItems ? filteredItems.slice() : [];\r\n this.initRenderingStrategy(options);\r\n var renderingStrategy = this.getRenderingStrategy();\r\n var positionMap = renderingStrategy.createTaskPositionMap(appointments);\r\n var viewModel = this.postProcess(appointments, positionMap, isRenovatedAppointments);\r\n if (isRenovatedAppointments) {\r\n return this.makeRenovatedViewModels(viewModel, options.supportAllDayRow, options.isVerticalGroupOrientation)\r\n }\r\n return {\r\n positionMap: positionMap,\r\n viewModel: viewModel\r\n }\r\n }\r\n postProcess(filteredItems, positionMap, isRenovatedAppointments) {\r\n var renderingStrategy = this.getRenderingStrategy();\r\n return filteredItems.map((data, index) => {\r\n if (!renderingStrategy.keepAppointmentSettings()) {\r\n delete data.settings\r\n }\r\n var appointmentSettings = positionMap[index];\r\n appointmentSettings.forEach(item => {\r\n item.direction = \"vertical\" === renderingStrategy.getDirection() && !item.allDay ? \"vertical\" : \"horizontal\"\r\n });\r\n var item = {\r\n itemData: data,\r\n settings: appointmentSettings\r\n };\r\n if (!isRenovatedAppointments) {\r\n item.needRepaint = true;\r\n item.needRemove = false\r\n }\r\n return item\r\n })\r\n }\r\n makeRenovatedViewModels(viewModel, supportAllDayRow, isVerticalGrouping) {\r\n var strategy = this.getRenderingStrategy();\r\n var regularViewModels = [];\r\n var allDayViewModels = [];\r\n var compactOptions = [];\r\n var isAllDayPanel = supportAllDayRow && !isVerticalGrouping;\r\n viewModel.forEach(_ref => {\r\n var {\r\n itemData: itemData,\r\n settings: settings\r\n } = _ref;\r\n settings.forEach(options => {\r\n var item = this.prepareViewModel(options, strategy, itemData);\r\n if (options.isCompact) {\r\n compactOptions.push({\r\n compactViewModel: options.virtual,\r\n appointmentViewModel: item\r\n })\r\n } else if (options.allDay && isAllDayPanel) {\r\n allDayViewModels.push(item)\r\n } else {\r\n regularViewModels.push(item)\r\n }\r\n })\r\n });\r\n var compactViewModels = this.prepareCompactViewModels(compactOptions, supportAllDayRow);\r\n var result = _extends({\r\n allDay: allDayViewModels,\r\n regular: regularViewModels\r\n }, compactViewModels);\r\n return result\r\n }\r\n prepareViewModel(options, strategy, itemData) {\r\n var geometry = strategy.getAppointmentGeometry(options);\r\n var viewModel = {\r\n key: getAppointmentKey(geometry),\r\n appointment: itemData,\r\n geometry: _extends(_extends({}, geometry), {\r\n leftVirtualWidth: options.leftVirtualWidth,\r\n topVirtualHeight: options.topVirtualHeight\r\n }),\r\n info: _extends(_extends({}, options.info), {\r\n allDay: options.allDay,\r\n direction: options.direction,\r\n appointmentReduced: options.appointmentReduced,\r\n groupIndex: options.groupIndex\r\n })\r\n };\r\n return viewModel\r\n }\r\n getCompactViewModelFrame(compactViewModel) {\r\n return {\r\n isAllDay: !!compactViewModel.isAllDay,\r\n isCompact: compactViewModel.isCompact,\r\n groupIndex: compactViewModel.groupIndex,\r\n geometry: {\r\n left: compactViewModel.left,\r\n top: compactViewModel.top,\r\n width: compactViewModel.width,\r\n height: compactViewModel.height\r\n },\r\n items: {\r\n colors: [],\r\n data: [],\r\n settings: []\r\n }\r\n }\r\n }\r\n prepareCompactViewModels(compactOptions, supportAllDayRow) {\r\n var regularCompact = {};\r\n var allDayCompact = {};\r\n compactOptions.forEach(_ref2 => {\r\n var {\r\n compactViewModel: compactViewModel,\r\n appointmentViewModel: appointmentViewModel\r\n } = _ref2;\r\n var {\r\n index: index,\r\n isAllDay: isAllDay\r\n } = compactViewModel;\r\n var viewModel = isAllDay && supportAllDayRow ? allDayCompact : regularCompact;\r\n if (!viewModel[index]) {\r\n viewModel[index] = this.getCompactViewModelFrame(compactViewModel)\r\n }\r\n var {\r\n settings: settings,\r\n data: data,\r\n colors: colors\r\n } = viewModel[index].items;\r\n settings.push(appointmentViewModel);\r\n data.push(appointmentViewModel.appointment);\r\n colors.push(appointmentViewModel.info.resourceColor)\r\n });\r\n var toArray = items => Object.keys(items).map(key => _extends({\r\n key: key\r\n }, items[key]));\r\n var allDayViewModels = toArray(allDayCompact);\r\n var regularViewModels = toArray(regularCompact);\r\n return {\r\n allDayCompact: allDayViewModels,\r\n regularCompact: regularViewModels\r\n }\r\n }\r\n getRenderingStrategy() {\r\n return this.renderingStrategy\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_appointments_layout_manager.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n equalByValue\r\n} from \"../../core/utils/common\";\r\nimport {\r\n getAppointmentRenderingStrategyName\r\n} from \"../../renovation/ui/scheduler/model/utils\";\r\nimport {\r\n getCellDuration\r\n} from \"../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n AppointmentViewModelGenerator\r\n} from \"./appointments/m_view_model_generator\";\r\nimport {\r\n getGroupCount\r\n} from \"./resources/m_utils\";\r\nimport {\r\n getAllDayHeight,\r\n getCellHeight,\r\n getCellWidth\r\n} from \"./workspaces/helpers/m_position_helper\";\r\nclass AppointmentLayoutManager {\r\n constructor(instance) {\r\n this.instance = instance;\r\n this.appointmentViewModel = new AppointmentViewModelGenerator\r\n }\r\n get appointmentRenderingStrategyName() {\r\n return getAppointmentRenderingStrategyName(this.instance.currentViewType)\r\n }\r\n getCellDimensions(options) {\r\n if (this.instance._workSpace) {\r\n return {\r\n width: this.instance._workSpace.getCellWidth(),\r\n height: this.instance._workSpace.getCellHeight(),\r\n allDayHeight: this.instance._workSpace.getAllDayHeight()\r\n }\r\n }\r\n return\r\n }\r\n _getRenderingStrategyOptions() {\r\n var workspace = this.instance.getWorkSpace();\r\n var {\r\n virtualScrollingDispatcher: virtualScrollingDispatcher\r\n } = this.instance.getWorkSpace();\r\n var {\r\n cellCountInsideLeftVirtualCell: cellCountInsideLeftVirtualCell,\r\n cellCountInsideTopVirtualRow: cellCountInsideTopVirtualRow\r\n } = virtualScrollingDispatcher;\r\n var groupCount = getGroupCount(this.instance.option(\"loadedResources\"));\r\n var DOMMetaData = workspace.getDOMElementsMetaData();\r\n var allDayHeight = getAllDayHeight(workspace.option(\"showAllDayPanel\"), workspace._isVerticalGroupedWorkSpace(), DOMMetaData);\r\n var rowCount = workspace._getRowCount();\r\n var {\r\n positionHelper: positionHelper,\r\n viewDataProvider: viewDataProvider\r\n } = workspace;\r\n var visibleDayDuration = viewDataProvider.getVisibleDayDuration(workspace.option(\"startDayHour\"), workspace.option(\"endDayHour\"), workspace.option(\"hoursInterval\"));\r\n var cellDuration = getCellDuration(workspace.type, workspace.option(\"startDayHour\"), workspace.option(\"endDayHour\"), workspace.option(\"hoursInterval\"));\r\n return {\r\n resources: this.instance.option(\"resources\"),\r\n loadedResources: this.instance.option(\"loadedResources\"),\r\n getAppointmentColor: this.instance.createGetAppointmentColor(),\r\n dataAccessors: this.instance._dataAccessors,\r\n isRenovatedAppointments: this.instance.option(\"isRenovatedAppointments\"),\r\n appointmentRenderingStrategyName: this.appointmentRenderingStrategyName,\r\n adaptivityEnabled: this.instance.option(\"adaptivityEnabled\"),\r\n rtlEnabled: this.instance.option(\"rtlEnabled\"),\r\n startDayHour: this.instance._getCurrentViewOption(\"startDayHour\"),\r\n endDayHour: this.instance._getCurrentViewOption(\"endDayHour\"),\r\n maxAppointmentsPerCell: this.instance._getCurrentViewOption(\"maxAppointmentsPerCell\"),\r\n currentDate: this.instance.option(\"currentDate\"),\r\n isVirtualScrolling: this.instance.isVirtualScrolling(),\r\n leftVirtualCellCount: cellCountInsideLeftVirtualCell,\r\n topVirtualCellCount: cellCountInsideTopVirtualRow,\r\n intervalCount: workspace.option(\"intervalCount\"),\r\n hoursInterval: workspace.option(\"hoursInterval\"),\r\n showAllDayPanel: workspace.option(\"showAllDayPanel\"),\r\n isGroupedAllDayPanel: workspace.isGroupedAllDayPanel(),\r\n groups: this.instance._getCurrentViewOption(\"groups\"),\r\n groupCount: groupCount,\r\n rowCount: rowCount,\r\n appointmentCountPerCell: this.instance.option(\"_appointmentCountPerCell\"),\r\n appointmentOffset: this.instance.option(\"_appointmentOffset\"),\r\n allowResizing: this.instance._allowResizing(),\r\n allowAllDayResizing: this.instance._allowAllDayResizing(),\r\n startViewDate: workspace.getStartViewDate(),\r\n groupOrientation: workspace._getRealGroupOrientation(),\r\n cellWidth: getCellWidth(DOMMetaData),\r\n cellHeight: getCellHeight(DOMMetaData),\r\n allDayHeight: allDayHeight,\r\n resizableStep: positionHelper.getResizableStep(),\r\n visibleDayDuration: visibleDayDuration,\r\n allDayPanelMode: this.instance._getCurrentViewOption(\"allDayPanelMode\"),\r\n timeZoneCalculator: this.instance.timeZoneCalculator,\r\n timeZone: this.instance.option(\"timeZone\"),\r\n firstDayOfWeek: this.instance.getFirstDayOfWeek(),\r\n viewStartDayHour: this.instance._getCurrentViewOption(\"startDayHour\"),\r\n viewEndDayHour: this.instance._getCurrentViewOption(\"endDayHour\"),\r\n viewType: workspace.type,\r\n endViewDate: workspace.getEndViewDate(),\r\n positionHelper: positionHelper,\r\n isGroupedByDate: workspace.isGroupedByDate(),\r\n cellDuration: cellDuration,\r\n cellDurationInMinutes: workspace.option(\"cellDuration\"),\r\n viewDataProvider: workspace.viewDataProvider,\r\n supportAllDayRow: workspace.supportAllDayRow(),\r\n dateRange: workspace.getDateRange(),\r\n intervalDuration: workspace.getIntervalDuration(),\r\n allDayIntervalDuration: workspace.getIntervalDuration(true),\r\n isVerticalGroupOrientation: workspace.isVerticalOrientation(),\r\n DOMMetaData: DOMMetaData,\r\n instance: this.instance,\r\n agendaDuration: workspace.option(\"agendaDuration\")\r\n }\r\n }\r\n createAppointmentsMap(items) {\r\n var renderingStrategyOptions = this._getRenderingStrategyOptions();\r\n var {\r\n viewModel: viewModel,\r\n positionMap: positionMap\r\n } = this.appointmentViewModel.generate(items, renderingStrategyOptions);\r\n this._positionMap = positionMap;\r\n return viewModel\r\n }\r\n _isDataChanged(data) {\r\n var {\r\n appointmentDataProvider: appointmentDataProvider\r\n } = this.instance;\r\n var updatedData = appointmentDataProvider.getUpdatedAppointment();\r\n return updatedData === data || appointmentDataProvider.getUpdatedAppointmentKeys().some(item => data[item.key] === item.value)\r\n }\r\n _isAppointmentShouldAppear(currentAppointment, sourceAppointment) {\r\n return currentAppointment.needRepaint && sourceAppointment.needRemove\r\n }\r\n _isSettingChanged(settings, sourceSetting) {\r\n if (settings.length !== sourceSetting.length) {\r\n return true\r\n }\r\n var createSettingsToCompare = (settings, index) => {\r\n var currentSetting = settings[index];\r\n var leftVirtualCellCount = currentSetting.leftVirtualCellCount || 0;\r\n var topVirtualCellCount = currentSetting.topVirtualCellCount || 0;\r\n var columnIndex = currentSetting.columnIndex + leftVirtualCellCount;\r\n var rowIndex = currentSetting.rowIndex + topVirtualCellCount;\r\n var hMax = currentSetting.reduced ? currentSetting.hMax : void 0;\r\n var vMax = currentSetting.reduced ? currentSetting.vMax : void 0;\r\n return _extends(_extends({}, currentSetting), {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex,\r\n positionByMap: void 0,\r\n topVirtualCellCount: void 0,\r\n leftVirtualCellCount: void 0,\r\n leftVirtualWidth: void 0,\r\n topVirtualHeight: void 0,\r\n hMax: hMax,\r\n vMax: vMax,\r\n info: {}\r\n })\r\n };\r\n for (var i = 0; i < settings.length; i++) {\r\n var newSettings = createSettingsToCompare(settings, i);\r\n var oldSettings = createSettingsToCompare(sourceSetting, i);\r\n if (oldSettings) {\r\n oldSettings.sortedIndex = newSettings.sortedIndex\r\n }\r\n if (!equalByValue(newSettings, oldSettings)) {\r\n return true\r\n }\r\n }\r\n return false\r\n }\r\n _getAssociatedSourceAppointment(currentAppointment, sourceAppointments) {\r\n for (var i = 0; i < sourceAppointments.length; i++) {\r\n var item = sourceAppointments[i];\r\n if (item.itemData === currentAppointment.itemData) {\r\n return item\r\n }\r\n }\r\n return null\r\n }\r\n _getDeletedAppointments(currentAppointments, sourceAppointments) {\r\n var result = [];\r\n for (var i = 0; i < sourceAppointments.length; i++) {\r\n var sourceAppointment = sourceAppointments[i];\r\n var currentAppointment = this._getAssociatedSourceAppointment(sourceAppointment, currentAppointments);\r\n if (!currentAppointment) {\r\n sourceAppointment.needRemove = true;\r\n result.push(sourceAppointment)\r\n }\r\n }\r\n return result\r\n }\r\n getRepaintedAppointments(currentAppointments, sourceAppointments) {\r\n if (0 === sourceAppointments.length || \"agenda\" === this.appointmentRenderingStrategyName) {\r\n return currentAppointments\r\n }\r\n currentAppointments.forEach(appointment => {\r\n var sourceAppointment = this._getAssociatedSourceAppointment(appointment, sourceAppointments);\r\n if (sourceAppointment) {\r\n var isDataChanged = this._isDataChanged(appointment.itemData);\r\n var isSettingChanged = this._isSettingChanged(appointment.settings, sourceAppointment.settings);\r\n var isAppointmentShouldAppear = this._isAppointmentShouldAppear(appointment, sourceAppointment);\r\n appointment.needRepaint = isDataChanged || isSettingChanged || isAppointmentShouldAppear\r\n }\r\n });\r\n return currentAppointments.concat(this._getDeletedAppointments(currentAppointments, sourceAppointments))\r\n }\r\n getRenderingStrategyInstance() {\r\n var renderingStrategy = this.appointmentViewModel.getRenderingStrategy();\r\n if (!renderingStrategy) {\r\n var options = this._getRenderingStrategyOptions();\r\n this.appointmentViewModel.initRenderingStrategy(options)\r\n }\r\n return this.appointmentViewModel.getRenderingStrategy()\r\n }\r\n}\r\nexport default AppointmentLayoutManager;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_data_structures.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport class AppointmentTooltipInfo {\r\n constructor(appointment) {\r\n var targetedAppointment = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;\r\n var color = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [];\r\n var settings = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : [];\r\n this.appointment = appointment;\r\n this.targetedAppointment = targetedAppointment;\r\n this.color = color;\r\n this.settings = settings\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_compact_appointments_helper.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n locate,\r\n move\r\n} from \"../../animation/translator\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../core/templates/function_template\";\r\nimport {\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n getOverflowIndicatorColor\r\n} from \"../../renovation/ui/scheduler/appointment/overflow_indicator/utils\";\r\nimport Button from \"../../ui/button\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"./m_appointment_adapter\";\r\nimport {\r\n LIST_ITEM_CLASS,\r\n LIST_ITEM_DATA_KEY\r\n} from \"./m_constants\";\r\nimport {\r\n AppointmentTooltipInfo\r\n} from \"./m_data_structures\";\r\nvar APPOINTMENT_COLLECTOR_CLASS = \"dx-scheduler-appointment-collector\";\r\nvar COMPACT_APPOINTMENT_COLLECTOR_CLASS = \"\".concat(APPOINTMENT_COLLECTOR_CLASS, \"-compact\");\r\nvar APPOINTMENT_COLLECTOR_CONTENT_CLASS = \"\".concat(APPOINTMENT_COLLECTOR_CLASS, \"-content\");\r\nvar WEEK_VIEW_COLLECTOR_OFFSET = 5;\r\nvar COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET = 1;\r\nexport class CompactAppointmentsHelper {\r\n constructor(instance) {\r\n this.instance = instance;\r\n this.elements = []\r\n }\r\n render(options) {\r\n var {\r\n isCompact: isCompact,\r\n items: items,\r\n buttonColor: buttonColor\r\n } = options;\r\n var template = this._createTemplate(items.data.length, isCompact);\r\n var button = this._createCompactButton(template, options);\r\n var $button = button.$element();\r\n this._makeBackgroundColor($button, items.colors, buttonColor);\r\n this._makeBackgroundDarker($button);\r\n this.elements.push($button);\r\n $button.data(\"items\", this._createTooltipInfos(items));\r\n return $button\r\n }\r\n clear() {\r\n this.elements.forEach(button => {\r\n button.detach();\r\n button.remove()\r\n });\r\n this.elements = []\r\n }\r\n _createTooltipInfos(items) {\r\n return items.data.map((appointment, index) => {\r\n var _a;\r\n var targetedAdapter = createAppointmentAdapter(appointment, this.instance._dataAccessors, this.instance.timeZoneCalculator).clone();\r\n if ((null === (_a = items.settings) || void 0 === _a ? void 0 : _a.length) > 0) {\r\n var {\r\n info: info\r\n } = items.settings[index];\r\n targetedAdapter.startDate = info.sourceAppointment.startDate;\r\n targetedAdapter.endDate = info.sourceAppointment.endDate\r\n }\r\n return new AppointmentTooltipInfo(appointment, targetedAdapter.source(), items.colors[index], items.settings[index])\r\n })\r\n }\r\n _onButtonClick(e, options) {\r\n var $button = $(e.element);\r\n this.instance.showAppointmentTooltipCore($button, $button.data(\"items\"), this._getExtraOptionsForTooltip(options, $button))\r\n }\r\n _getExtraOptionsForTooltip(options, $appointmentCollector) {\r\n return {\r\n clickEvent: this._clickEvent(options.onAppointmentClick).bind(this),\r\n dragBehavior: options.allowDrag && this._createTooltipDragBehavior($appointmentCollector).bind(this),\r\n dropDownAppointmentTemplate: this.instance.option().dropDownAppointmentTemplate,\r\n isButtonClick: true\r\n }\r\n }\r\n _clickEvent(onAppointmentClick) {\r\n return e => {\r\n var clickEventArgs = this.instance._createEventArgs(e);\r\n onAppointmentClick(clickEventArgs)\r\n }\r\n }\r\n _createTooltipDragBehavior($appointmentCollector) {\r\n return e => {\r\n var $element = $(e.element);\r\n var $schedulerElement = $(this.instance.element());\r\n var workSpace = this.instance.getWorkSpace();\r\n var initialPosition = locate($appointmentCollector);\r\n var options = {\r\n filter: \".\".concat(LIST_ITEM_CLASS),\r\n isSetCursorOffset: true,\r\n initialPosition: initialPosition,\r\n getItemData: itemElement => {\r\n var _a;\r\n return null === (_a = $(itemElement).data(LIST_ITEM_DATA_KEY)) || void 0 === _a ? void 0 : _a.appointment\r\n },\r\n getItemSettings: (_, event) => event.itemSettings\r\n };\r\n workSpace._createDragBehaviorBase($element, $schedulerElement, options)\r\n }\r\n }\r\n _getCollectorOffset(width, cellWidth) {\r\n return cellWidth - width - this._getCollectorRightOffset()\r\n }\r\n _getCollectorRightOffset() {\r\n return this.instance.getRenderingStrategyInstance()._isCompactTheme() ? COMPACT_THEME_WEEK_VIEW_COLLECTOR_OFFSET : WEEK_VIEW_COLLECTOR_OFFSET\r\n }\r\n _makeBackgroundDarker(button) {\r\n button.css(\"boxShadow\", \"inset \".concat(getBoundingRect(button.get(0)).width, \"px 0 0 0 rgba(0, 0, 0, 0.3)\"))\r\n }\r\n _makeBackgroundColor($button, colors, color) {\r\n when.apply(null, colors).done(function() {\r\n this._makeBackgroundColorCore($button, color, [...arguments])\r\n }.bind(this))\r\n }\r\n _makeBackgroundColorCore($button, color, itemColors) {\r\n color && color.done(color => {\r\n var backgroundColor = getOverflowIndicatorColor(color, itemColors);\r\n if (backgroundColor) {\r\n $button.css(\"backgroundColor\", backgroundColor)\r\n }\r\n })\r\n }\r\n _setPosition(element, position) {\r\n move(element, {\r\n top: position.top,\r\n left: position.left\r\n })\r\n }\r\n _createCompactButton(template, options) {\r\n var $button = this._createCompactButtonElement(options);\r\n return this.instance._createComponent($button, Button, {\r\n type: \"default\",\r\n width: options.width,\r\n height: options.height,\r\n onClick: e => this._onButtonClick(e, options),\r\n template: this._renderTemplate(template, options.items, options.isCompact)\r\n })\r\n }\r\n _createCompactButtonElement(_ref) {\r\n var {\r\n isCompact: isCompact,\r\n $container: $container,\r\n coordinates: coordinates\r\n } = _ref;\r\n var result = $(\"<div>\").addClass(APPOINTMENT_COLLECTOR_CLASS).toggleClass(COMPACT_APPOINTMENT_COLLECTOR_CLASS, isCompact).appendTo($container);\r\n this._setPosition(result, coordinates);\r\n return result\r\n }\r\n _renderTemplate(template, items, isCompact) {\r\n return new FunctionTemplate(options => template.render({\r\n model: {\r\n appointmentCount: items.data.length,\r\n isCompact: isCompact\r\n },\r\n container: options.container\r\n }))\r\n }\r\n _createTemplate(count, isCompact) {\r\n this._initButtonTemplate(count, isCompact);\r\n return this.instance._getAppointmentTemplate(\"appointmentCollectorTemplate\")\r\n }\r\n _initButtonTemplate(count, isCompact) {\r\n this.instance._templateManager.addDefaultTemplates({\r\n appointmentCollector: new FunctionTemplate(options => this._createButtonTemplate(count, $(options.container), isCompact))\r\n })\r\n }\r\n _createButtonTemplate(appointmentCount, element, isCompact) {\r\n var text = isCompact ? appointmentCount : messageLocalization.getFormatter(\"dxScheduler-moreAppointments\")(appointmentCount);\r\n return element.append($(\"<span>\").text(text)).addClass(APPOINTMENT_COLLECTOR_CONTENT_CLASS)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_subscribes.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n isPlainObject\r\n} from \"../../core/utils/type\";\r\nimport {\r\n formatDates,\r\n getFormatType\r\n} from \"./appointments/m_text_utils\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"./m_appointment_adapter\";\r\nimport {\r\n AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS\r\n} from \"./m_classes\";\r\nimport {\r\n utils\r\n} from \"./m_utils\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar subscribes = {\r\n isCurrentViewAgenda() {\r\n return \"agenda\" === this.currentViewType\r\n },\r\n currentViewUpdated(currentView) {\r\n this.option(\"currentView\", currentView)\r\n },\r\n currentDateUpdated(date) {\r\n this.option(\"currentDate\", date)\r\n },\r\n getOption(name) {\r\n return this.option(name)\r\n },\r\n getWorkspaceOption(name) {\r\n return this.getWorkSpace().option(name)\r\n },\r\n isVirtualScrolling() {\r\n return this.isVirtualScrolling()\r\n },\r\n setCellDataCacheAlias(appointment, geometry) {\r\n this._workSpace.setCellDataCacheAlias(appointment, geometry)\r\n },\r\n isGroupedByDate() {\r\n return this.getWorkSpace().isGroupedByDate()\r\n },\r\n showAppointmentTooltip(options) {\r\n var targetedAppointment = this.getTargetedAppointment(options.data, options.target);\r\n this.showAppointmentTooltip(options.data, options.target, targetedAppointment)\r\n },\r\n hideAppointmentTooltip() {\r\n this.hideAppointmentTooltip()\r\n },\r\n showEditAppointmentPopup(options) {\r\n var targetedData = this.getTargetedAppointment(options.data, options.target);\r\n this.showAppointmentPopup(options.data, false, targetedData)\r\n },\r\n updateAppointmentAfterResize(options) {\r\n var info = utils.dataAccessors.getAppointmentInfo(options.$appointment);\r\n var {\r\n exceptionDate: exceptionDate\r\n } = info.sourceAppointment;\r\n this._checkRecurringAppointment(options.target, options.data, exceptionDate, () => {\r\n this._updateAppointment(options.target, options.data, (function() {\r\n this._appointments.moveAppointmentBack()\r\n }))\r\n })\r\n },\r\n getUpdatedData(rawAppointment) {\r\n return this._getUpdatedData(rawAppointment)\r\n },\r\n updateAppointmentAfterDrag(_ref) {\r\n var {\r\n event: event,\r\n element: element,\r\n rawAppointment: rawAppointment,\r\n newCellIndex: newCellIndex,\r\n oldCellIndex: oldCellIndex\r\n } = _ref;\r\n var info = utils.dataAccessors.getAppointmentInfo(element);\r\n var appointment = createAppointmentAdapter(rawAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n var targetedAppointment = createAppointmentAdapter(extend({}, rawAppointment, this._getUpdatedData(rawAppointment)), this._dataAccessors, this.timeZoneCalculator);\r\n var targetedRawAppointment = targetedAppointment.source();\r\n var becomeAllDay = targetedAppointment.allDay;\r\n var wasAllDay = appointment.allDay;\r\n var movedBetweenAllDayAndSimple = this._workSpace.supportAllDayRow() && (wasAllDay && !becomeAllDay || !wasAllDay && becomeAllDay);\r\n var isDragAndDropBetweenComponents = event.fromComponent !== event.toComponent;\r\n if (-1 === newCellIndex) {\r\n if (!isDragAndDropBetweenComponents) {\r\n this._appointments.moveAppointmentBack(event)\r\n }\r\n return\r\n }\r\n if (newCellIndex !== oldCellIndex || isDragAndDropBetweenComponents || movedBetweenAllDayAndSimple) {\r\n this._checkRecurringAppointment(rawAppointment, targetedRawAppointment, info.sourceAppointment.exceptionDate, () => {\r\n this._updateAppointment(rawAppointment, targetedRawAppointment, (function() {\r\n this._appointments.moveAppointmentBack(event)\r\n }), event)\r\n }, void 0, void 0, event)\r\n } else {\r\n this._appointments.moveAppointmentBack(event)\r\n }\r\n },\r\n onDeleteButtonPress(options) {\r\n var targetedData = this.getTargetedAppointment(options.data, $(options.target));\r\n this.checkAndDeleteAppointment(options.data, targetedData);\r\n this.hideAppointmentTooltip()\r\n },\r\n getTextAndFormatDate(appointmentRaw, targetedAppointmentRaw, format) {\r\n var appointmentAdapter = createAppointmentAdapter(appointmentRaw, this._dataAccessors, this.timeZoneCalculator);\r\n var targetedAdapter = createAppointmentAdapter(targetedAppointmentRaw || appointmentRaw, this._dataAccessors, this.timeZoneCalculator);\r\n var startDate = this.timeZoneCalculator.createDate(targetedAdapter.startDate, {\r\n path: \"toGrid\"\r\n });\r\n var endDate = this.timeZoneCalculator.createDate(targetedAdapter.endDate, {\r\n path: \"toGrid\"\r\n });\r\n var formatType = format || getFormatType(startDate, endDate, targetedAdapter.allDay, \"month\" !== this.currentViewType);\r\n return {\r\n text: targetedAdapter.text || appointmentAdapter.text,\r\n formatDate: formatDates(startDate, endDate, formatType)\r\n }\r\n },\r\n _createAppointmentTitle(data) {\r\n if (isPlainObject(data)) {\r\n return data.text\r\n }\r\n return String(data)\r\n },\r\n getResizableAppointmentArea(options) {\r\n var {\r\n allDay: allDay\r\n } = options;\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n if (groups && groups.length) {\r\n if (allDay || this.getLayoutManager().getRenderingStrategyInstance()._needHorizontalGroupBounds()) {\r\n var horizontalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);\r\n return {\r\n left: horizontalGroupBounds.left,\r\n right: horizontalGroupBounds.right,\r\n top: 0,\r\n bottom: 0\r\n }\r\n }\r\n if (this.getLayoutManager().getRenderingStrategyInstance()._needVerticalGroupBounds(allDay) && this._workSpace._isVerticalGroupedWorkSpace()) {\r\n var verticalGroupBounds = this._workSpace.getGroupBounds(options.coordinates);\r\n return {\r\n left: 0,\r\n right: 0,\r\n top: verticalGroupBounds.top,\r\n bottom: verticalGroupBounds.bottom\r\n }\r\n }\r\n }\r\n return\r\n },\r\n needRecalculateResizableArea() {\r\n return this.getWorkSpace().needRecalculateResizableArea()\r\n },\r\n getAppointmentGeometry(settings) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getAppointmentGeometry(settings)\r\n },\r\n isAllDay(appointmentData) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().isAllDay(appointmentData)\r\n },\r\n getDeltaTime(e, initialSize, itemData) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getDeltaTime(e, initialSize, itemData)\r\n },\r\n getDropDownAppointmentWidth(isAllDay) {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentWidth(this._getViewCountConfig().intervalCount, isAllDay)\r\n },\r\n getDropDownAppointmentHeight() {\r\n return this.getLayoutManager().getRenderingStrategyInstance().getDropDownAppointmentHeight()\r\n },\r\n getCellWidth() {\r\n return this.getWorkSpace().getCellWidth()\r\n },\r\n getCellHeight() {\r\n return this.getWorkSpace().getCellHeight()\r\n },\r\n getMaxAppointmentCountPerCellByType(isAllDay) {\r\n return this.getRenderingStrategyInstance()._getMaxAppointmentCountPerCellByType(isAllDay)\r\n },\r\n needCorrectAppointmentDates() {\r\n return this.getRenderingStrategyInstance().needCorrectAppointmentDates()\r\n },\r\n getRenderingStrategyDirection() {\r\n return this.getRenderingStrategyInstance().getDirection()\r\n },\r\n updateAppointmentEndDate(options) {\r\n var {\r\n endDate: endDate\r\n } = options;\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var updatedEndDate = endDate;\r\n if (endDate.getHours() >= endDayHour) {\r\n updatedEndDate.setHours(endDayHour, 0, 0, 0)\r\n } else if (!options.isSameDate && startDayHour > 0 && 60 * endDate.getHours() + endDate.getMinutes() < 60 * startDayHour) {\r\n updatedEndDate = new Date(updatedEndDate.getTime() - toMs(\"day\"));\r\n updatedEndDate.setHours(endDayHour, 0, 0, 0)\r\n }\r\n return updatedEndDate\r\n },\r\n renderCompactAppointments(options) {\r\n this._compactAppointmentsHelper.render(options)\r\n },\r\n clearCompactAppointments() {\r\n this._compactAppointmentsHelper.clear()\r\n },\r\n supportCompactDropDownAppointments() {\r\n return this.getLayoutManager().getRenderingStrategyInstance().supportCompactDropDownAppointments()\r\n },\r\n getGroupCount() {\r\n return this._workSpace._getGroupCount()\r\n },\r\n mapAppointmentFields(config) {\r\n var {\r\n itemData: itemData,\r\n itemElement: itemElement,\r\n targetedAppointment: targetedAppointment\r\n } = config;\r\n var targetedData = targetedAppointment || this.getTargetedAppointment(itemData, itemElement);\r\n return {\r\n appointmentData: config.itemData,\r\n appointmentElement: config.itemElement,\r\n targetedAppointmentData: targetedData\r\n }\r\n },\r\n dayHasAppointment(day, appointment, trimTime) {\r\n return this.dayHasAppointment(day, appointment, trimTime)\r\n },\r\n getLayoutManager() {\r\n return this._layoutManager\r\n },\r\n getAgendaVerticalStepHeight() {\r\n return this.getWorkSpace().getAgendaVerticalStepHeight()\r\n },\r\n getAgendaDuration() {\r\n return this._getCurrentViewOption(\"agendaDuration\")\r\n },\r\n getStartViewDate() {\r\n return this.getStartViewDate()\r\n },\r\n getEndViewDate() {\r\n return this.getEndViewDate()\r\n },\r\n forceMaxAppointmentPerCell() {\r\n return this.forceMaxAppointmentPerCell()\r\n },\r\n onAgendaReady(rows) {\r\n var $appts = this.getAppointmentsInstance()._itemElements();\r\n var total = 0;\r\n var applyClass = function(_, count) {\r\n var index = count + total - 1;\r\n $appts.eq(index).addClass(AGENDA_LAST_IN_DATE_APPOINTMENT_CLASS);\r\n total += count\r\n };\r\n for (var i = 0; i < rows.length; i++) {\r\n each(rows[i], applyClass)\r\n }\r\n },\r\n getTimezone() {\r\n return this._getTimezoneOffsetByOption()\r\n },\r\n getTargetedAppointmentData(appointment, element) {\r\n return this.getTargetedAppointment(appointment, element)\r\n },\r\n getEndDayHour() {\r\n return this._workSpace.option(\"endDayHour\") || this.option(\"endDayHour\")\r\n },\r\n getStartDayHour() {\r\n return this._workSpace.option(\"startDayHour\") || this.option(\"startDayHour\")\r\n },\r\n isAdaptive() {\r\n return this.option(\"adaptivityEnabled\")\r\n },\r\n removeDroppableCellClass() {\r\n this._workSpace.removeDroppableCellClass()\r\n }\r\n};\r\nexport default subscribes;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/resources/m_agenda_resource_processor.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n wrapToArray\r\n} from \"../../../core/utils/array\";\r\nimport {\r\n Deferred,\r\n when\r\n} from \"../../../core/utils/deferred\";\r\nimport {\r\n getDisplayExpr,\r\n getFieldExpr,\r\n getValueExpr,\r\n getWrappedDataSource\r\n} from \"./m_utils\";\r\nclass PromiseItem {\r\n constructor(rawAppointment, promise) {\r\n this.rawAppointment = rawAppointment;\r\n this.promise = promise\r\n }\r\n}\r\nexport class AgendaResourceProcessor {\r\n constructor() {\r\n var resourceDeclarations = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n this._resourceDeclarations = resourceDeclarations;\r\n this.isLoaded = false;\r\n this.isLoading = false;\r\n this.resourceMap = new Map;\r\n this.appointmentPromiseQueue = []\r\n }\r\n get resourceDeclarations() {\r\n return this._resourceDeclarations\r\n }\r\n set resourceDeclarations(value) {\r\n this._resourceDeclarations = value;\r\n this.isLoaded = false;\r\n this.isLoading = false;\r\n this.resourceMap.clear();\r\n this.appointmentPromiseQueue = []\r\n }\r\n _pushAllResources() {\r\n this.appointmentPromiseQueue.forEach(_ref => {\r\n var {\r\n promise: promise,\r\n rawAppointment: rawAppointment\r\n } = _ref;\r\n var result = [];\r\n this.resourceMap.forEach((resource, fieldName) => {\r\n var item = {\r\n label: resource.label,\r\n values: []\r\n };\r\n if (fieldName in rawAppointment) {\r\n wrapToArray(rawAppointment[fieldName]).forEach(value => item.values.push(resource.map.get(value)))\r\n }\r\n if (item.values.length) {\r\n result.push(item)\r\n }\r\n });\r\n promise.resolve(result)\r\n });\r\n this.appointmentPromiseQueue = []\r\n }\r\n _onPullResource(fieldName, valueName, displayName, label, items) {\r\n var map = new Map;\r\n items.forEach(item => map.set(item[valueName], item[displayName]));\r\n this.resourceMap.set(fieldName, {\r\n label: label,\r\n map: map\r\n })\r\n }\r\n _hasResourceDeclarations(resources) {\r\n if (0 === resources.length) {\r\n this.appointmentPromiseQueue.forEach(_ref2 => {\r\n var {\r\n promise: promise\r\n } = _ref2;\r\n return promise.resolve([])\r\n });\r\n this.appointmentPromiseQueue = [];\r\n return false\r\n }\r\n return true\r\n }\r\n _tryPullResources(resources, resultAsync) {\r\n if (!this.isLoading) {\r\n this.isLoading = true;\r\n var promises = [];\r\n resources.forEach(resource => {\r\n var promise = (new Deferred).done(items => this._onPullResource(getFieldExpr(resource), getValueExpr(resource), getDisplayExpr(resource), resource.label, items));\r\n promises.push(promise);\r\n var dataSource = getWrappedDataSource(resource.dataSource);\r\n if (dataSource.isLoaded()) {\r\n promise.resolve(dataSource.items())\r\n } else {\r\n dataSource.load().done(list => promise.resolve(list)).fail(() => promise.reject())\r\n }\r\n });\r\n when.apply(null, promises).done(() => {\r\n this.isLoaded = true;\r\n this.isLoading = false;\r\n this._pushAllResources()\r\n }).fail(() => resultAsync.reject())\r\n }\r\n }\r\n initializeState() {\r\n var resourceDeclarations = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];\r\n this.resourceDeclarations = resourceDeclarations\r\n }\r\n createListAsync(rawAppointment) {\r\n var resultAsync = new Deferred;\r\n this.appointmentPromiseQueue.push(new PromiseItem(rawAppointment, resultAsync));\r\n if (this._hasResourceDeclarations(this.resourceDeclarations)) {\r\n if (this.isLoaded) {\r\n this._pushAllResources()\r\n } else {\r\n this._tryPullResources(this.resourceDeclarations, resultAsync)\r\n }\r\n }\r\n return resultAsync.promise()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/ui/tooltip.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Tooltip from \"./tooltip/tooltip\";\r\nexport default Tooltip;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/tooltip_strategies/m_tooltip_strategy_base.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n FunctionTemplate\r\n} from \"../../../core/templates/function_template\";\r\nimport Button from \"../../../ui/button\";\r\nimport List from \"../../../ui/list/ui.list.edit\";\r\nvar TOOLTIP_APPOINTMENT_ITEM = \"dx-tooltip-appointment-item\";\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-content\");\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-content-subject\");\r\nvar TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-content-date\");\r\nvar TOOLTIP_APPOINTMENT_ITEM_MARKER = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-marker\");\r\nvar TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-marker-body\");\r\nvar TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-delete-button-container\");\r\nvar TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON = \"\".concat(TOOLTIP_APPOINTMENT_ITEM, \"-delete-button\");\r\nexport class TooltipStrategyBase {\r\n constructor(options) {\r\n this._tooltip = null;\r\n this._options = options;\r\n this._extraOptions = null\r\n }\r\n show(target, dataList, extraOptions) {\r\n if (this._canShowTooltip(dataList)) {\r\n this.hide();\r\n this._extraOptions = extraOptions;\r\n this._showCore(target, dataList)\r\n }\r\n }\r\n _showCore(target, dataList) {\r\n if (!this._tooltip) {\r\n this._tooltip = this._createTooltip(target, dataList)\r\n } else {\r\n this._shouldUseTarget() && this._tooltip.option(\"target\", target);\r\n this._list.option(\"dataSource\", dataList)\r\n }\r\n this._prepareBeforeVisibleChanged(dataList);\r\n this._tooltip.option(\"visible\", true)\r\n }\r\n _prepareBeforeVisibleChanged(dataList) {}\r\n _getContentTemplate(dataList) {\r\n return container => {\r\n var listElement = $(\"<div>\");\r\n $(container).append(listElement);\r\n this._list = this._createList(listElement, dataList)\r\n }\r\n }\r\n isAlreadyShown(target) {\r\n if (this._tooltip && this._tooltip.option(\"visible\")) {\r\n return this._tooltip.option(\"target\")[0] === target[0]\r\n }\r\n return\r\n }\r\n _onShown() {\r\n this._list.option(\"focusStateEnabled\", this._extraOptions.focusStateEnabled)\r\n }\r\n dispose() {}\r\n hide() {\r\n if (this._tooltip) {\r\n this._tooltip.option(\"visible\", false)\r\n }\r\n }\r\n _shouldUseTarget() {\r\n return true\r\n }\r\n _createTooltip(target, dataList) {}\r\n _canShowTooltip(dataList) {\r\n if (!dataList.length) {\r\n return false\r\n }\r\n return true\r\n }\r\n _createListOption(dataList) {\r\n return {\r\n dataSource: dataList,\r\n onContentReady: this._onListRender.bind(this),\r\n onItemClick: e => this._onListItemClick(e),\r\n onItemContextMenu: this._onListItemContextMenu.bind(this),\r\n itemTemplate: (item, index) => this._renderTemplate(item.appointment, item.targetedAppointment, index, item.color),\r\n _swipeEnabled: false,\r\n pageLoadMode: \"scrollBottom\"\r\n }\r\n }\r\n _onListRender(e) {}\r\n _createTooltipElement(wrapperClass) {\r\n return $(\"<div>\").appendTo(this._options.container).addClass(wrapperClass)\r\n }\r\n _createList(listElement, dataList) {\r\n return this._options.createComponent(listElement, List, this._createListOption(dataList))\r\n }\r\n _renderTemplate(appointment, targetedAppointment, index, color) {\r\n var itemListContent = this._createItemListContent(appointment, targetedAppointment, color);\r\n this._options.addDefaultTemplates({\r\n [this._getItemListTemplateName()]: new FunctionTemplate(options => {\r\n var $container = $(options.container);\r\n $container.append(itemListContent);\r\n return $container\r\n })\r\n });\r\n var template = this._options.getAppointmentTemplate(\"\".concat(this._getItemListTemplateName(), \"Template\"));\r\n return this._createFunctionTemplate(template, appointment, targetedAppointment, index)\r\n }\r\n _createFunctionTemplate(template, appointmentData, targetedAppointmentData, index) {\r\n var isButtonClicked = !!this._extraOptions.isButtonClick;\r\n var isEmptyDropDownAppointmentTemplate = this._isEmptyDropDownAppointmentTemplate();\r\n return new FunctionTemplate(options => template.render({\r\n model: isEmptyDropDownAppointmentTemplate ? {\r\n appointmentData: appointmentData,\r\n targetedAppointmentData: targetedAppointmentData,\r\n isButtonClicked: isButtonClicked\r\n } : appointmentData,\r\n container: options.container,\r\n index: index\r\n }))\r\n }\r\n _getItemListTemplateName() {\r\n return this._isEmptyDropDownAppointmentTemplate() ? \"appointmentTooltip\" : \"dropDownAppointment\"\r\n }\r\n _isEmptyDropDownAppointmentTemplate() {\r\n return !this._extraOptions.dropDownAppointmentTemplate || \"dropDownAppointment\" === this._extraOptions.dropDownAppointmentTemplate\r\n }\r\n _onListItemClick(e) {\r\n this.hide();\r\n this._extraOptions.clickEvent && this._extraOptions.clickEvent(e);\r\n this._options.showAppointmentPopup(e.itemData.appointment, false, e.itemData.targetedAppointment)\r\n }\r\n _onListItemContextMenu(e) {}\r\n _createItemListContent(appointment, targetedAppointment, color) {\r\n var {\r\n editing: editing\r\n } = this._extraOptions;\r\n var $itemElement = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM);\r\n $itemElement.append(this._createItemListMarker(color));\r\n $itemElement.append(this._createItemListInfo(this._options.createFormattedDateText(appointment, targetedAppointment)));\r\n var disabled = this._options.getAppointmentDisabled(appointment);\r\n if (!disabled && (editing && true === editing.allowDeleting || true === editing)) {\r\n $itemElement.append(this._createDeleteButton(appointment, targetedAppointment))\r\n }\r\n return $itemElement\r\n }\r\n _createItemListMarker(color) {\r\n var $marker = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER);\r\n var $markerBody = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY);\r\n $marker.append($markerBody);\r\n color && color.done(value => $markerBody.css(\"background\", value));\r\n return $marker\r\n }\r\n _createItemListInfo(object) {\r\n var result = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT);\r\n var $title = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT).text(object.text);\r\n var $date = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE).text(object.formatDate);\r\n return result.append($title).append($date)\r\n }\r\n _createDeleteButton(appointment, targetedAppointment) {\r\n var $container = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER);\r\n var $deleteButton = $(\"<div>\").addClass(TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON);\r\n $container.append($deleteButton);\r\n this._options.createComponent($deleteButton, Button, {\r\n icon: \"trash\",\r\n stylingMode: \"text\",\r\n onClick: e => {\r\n this.hide();\r\n e.event.stopPropagation();\r\n this._options.checkAndDeleteAppointment(appointment, targetedAppointment)\r\n }\r\n });\r\n return $container\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/tooltip_strategies/m_desktop_tooltip_strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n touch\r\n} from \"../../../core/utils/support\";\r\nimport Tooltip from \"../../../ui/tooltip\";\r\nimport {\r\n TooltipStrategyBase\r\n} from \"./m_tooltip_strategy_base\";\r\nvar APPOINTMENT_TOOLTIP_WRAPPER_CLASS = \"dx-scheduler-appointment-tooltip-wrapper\";\r\nvar MAX_TOOLTIP_HEIGHT = 200;\r\nexport class DesktopTooltipStrategy extends TooltipStrategyBase {\r\n _prepareBeforeVisibleChanged(dataList) {\r\n this._tooltip.option(\"position\", {\r\n my: \"bottom\",\r\n at: \"top\",\r\n boundary: this._getBoundary(dataList),\r\n offset: this._extraOptions.offset,\r\n collision: \"fit flipfit\"\r\n })\r\n }\r\n _getBoundary(dataList) {\r\n return this._options.isAppointmentInAllDayPanel(dataList[0].appointment) ? this._options.container : this._options.getScrollableContainer()\r\n }\r\n _onShown() {\r\n super._onShown();\r\n if (this._extraOptions.isButtonClick) {\r\n this._list.focus();\r\n this._list.option(\"focusedElement\", null)\r\n }\r\n }\r\n _createListOption(target, dataList) {\r\n var result = super._createListOption(target, dataList);\r\n result.showScrollbar = touch ? \"always\" : \"onHover\";\r\n return result\r\n }\r\n _createTooltip(target, dataList) {\r\n var tooltip = this._createTooltipElement(APPOINTMENT_TOOLTIP_WRAPPER_CLASS);\r\n return this._options.createComponent(tooltip, Tooltip, {\r\n target: target,\r\n maxHeight: MAX_TOOLTIP_HEIGHT,\r\n rtlEnabled: this._extraOptions.rtlEnabled,\r\n onShown: this._onShown.bind(this),\r\n contentTemplate: this._getContentTemplate(dataList),\r\n wrapperAttr: {\r\n class: APPOINTMENT_TOOLTIP_WRAPPER_CLASS\r\n }\r\n })\r\n }\r\n _onListRender(e) {\r\n return this._extraOptions.dragBehavior && this._extraOptions.dragBehavior(e)\r\n }\r\n _onListItemContextMenu(e) {\r\n var contextMenuEventArgs = this._options.createEventArgs(e);\r\n this._options.onItemContextMenu(contextMenuEventArgs)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/tooltip_strategies/m_mobile_tooltip_strategy.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getWidth\r\n} from \"../../../core/utils/size\";\r\nimport {\r\n getWindow\r\n} from \"../../../core/utils/window\";\r\nimport Overlay from \"../../../ui/overlay/ui.overlay\";\r\nimport {\r\n TooltipStrategyBase\r\n} from \"./m_tooltip_strategy_base\";\r\nvar SLIDE_PANEL_CLASS_NAME = \"dx-scheduler-overlay-panel\";\r\nvar MAX_TABLET_OVERLAY_HEIGHT_FACTOR = .9;\r\nvar MAX_HEIGHT = {\r\n PHONE: 250,\r\n TABLET: \"90%\",\r\n DEFAULT: \"auto\"\r\n};\r\nvar MAX_WIDTH = {\r\n PHONE: \"100%\",\r\n TABLET: \"80%\"\r\n};\r\nvar animationConfig = {\r\n show: {\r\n type: \"slide\",\r\n duration: 300,\r\n from: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: getWindow()\r\n }\r\n },\r\n to: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: getWindow()\r\n }\r\n }\r\n },\r\n hide: {\r\n type: \"slide\",\r\n duration: 300,\r\n to: {\r\n position: {\r\n my: \"top\",\r\n at: \"bottom\",\r\n of: getWindow()\r\n }\r\n },\r\n from: {\r\n position: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: getWindow()\r\n }\r\n }\r\n }\r\n};\r\nvar createPhoneDeviceConfig = listHeight => ({\r\n shading: false,\r\n width: MAX_WIDTH.PHONE,\r\n height: listHeight > MAX_HEIGHT.PHONE ? MAX_HEIGHT.PHONE : MAX_HEIGHT.DEFAULT,\r\n position: {\r\n my: \"bottom\",\r\n at: \"bottom\",\r\n of: getWindow()\r\n }\r\n});\r\nvar createTabletDeviceConfig = listHeight => {\r\n var currentMaxHeight = getHeight(getWindow()) * MAX_TABLET_OVERLAY_HEIGHT_FACTOR;\r\n return {\r\n shading: true,\r\n width: MAX_WIDTH.TABLET,\r\n height: listHeight > currentMaxHeight ? MAX_HEIGHT.TABLET : MAX_HEIGHT.DEFAULT,\r\n position: {\r\n my: \"center\",\r\n at: \"center\",\r\n of: getWindow()\r\n }\r\n }\r\n};\r\nexport class MobileTooltipStrategy extends TooltipStrategyBase {\r\n _shouldUseTarget() {\r\n return false\r\n }\r\n _onShowing() {\r\n var isTabletWidth = getWidth(getWindow()) > 700;\r\n this._tooltip.option(\"height\", MAX_HEIGHT.DEFAULT);\r\n var listHeight = getOuterHeight(this._list.$element());\r\n this._tooltip.option(isTabletWidth ? createTabletDeviceConfig(listHeight) : createPhoneDeviceConfig(listHeight))\r\n }\r\n _createTooltip(target, dataList) {\r\n var element = this._createTooltipElement(SLIDE_PANEL_CLASS_NAME);\r\n return this._options.createComponent(element, Overlay, {\r\n target: getWindow(),\r\n hideOnOutsideClick: true,\r\n animation: animationConfig,\r\n onShowing: () => this._onShowing(),\r\n onShown: this._onShown.bind(this),\r\n contentTemplate: this._getContentTemplate(dataList),\r\n wrapperAttr: {\r\n class: SLIDE_PANEL_CLASS_NAME\r\n }\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_table_creator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport domAdapter from \"../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../core/element\";\r\nimport {\r\n data as elementData\r\n} from \"../../core/element_data\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n isFunction\r\n} from \"../../core/utils/type\";\r\nvar ROW_SELECTOR = \"tr\";\r\nclass SchedulerTableCreator {\r\n constructor() {\r\n this.VERTICAL = \"vertical\";\r\n this.HORIZONTAL = \"horizontal\"\r\n }\r\n insertAllDayRow(allDayElements, tableBody, index) {\r\n if (allDayElements[index]) {\r\n var row = allDayElements[index].find(ROW_SELECTOR);\r\n if (!row.length) {\r\n row = $(domAdapter.createElement(ROW_SELECTOR));\r\n row.append(allDayElements[index].get(0))\r\n }\r\n tableBody.appendChild(row.get ? row.get(0) : row)\r\n }\r\n }\r\n makeTable(options) {\r\n var _a;\r\n var tableBody = domAdapter.createElement(\"tbody\");\r\n var templateCallbacks = [];\r\n var row;\r\n var rowCountInGroup = options.groupCount ? options.rowCount / options.groupCount : options.rowCount;\r\n var allDayElementIndex = 0;\r\n var {\r\n allDayElements: allDayElements\r\n } = options;\r\n var {\r\n groupIndex: groupIndex\r\n } = options;\r\n var {\r\n rowCount: rowCount\r\n } = options;\r\n $(options.container).append(tableBody);\r\n if (allDayElements) {\r\n this.insertAllDayRow(allDayElements, tableBody, 0);\r\n allDayElementIndex++\r\n }\r\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex++) {\r\n row = domAdapter.createElement(ROW_SELECTOR);\r\n tableBody.appendChild(row);\r\n var isLastRowInGroup = (rowIndex + 1) % rowCountInGroup === 0;\r\n if (options.rowClass) {\r\n row.className = options.rowClass\r\n }\r\n for (var columnIndex = 0; columnIndex < options.cellCount; columnIndex++) {\r\n var td = domAdapter.createElement(\"td\");\r\n row.appendChild(td);\r\n if (options.cellClass) {\r\n if (isFunction(options.cellClass)) {\r\n td.className = options.cellClass(rowIndex, columnIndex)\r\n } else {\r\n td.className = options.cellClass\r\n }\r\n }\r\n var cellDataObject = void 0;\r\n var dataKey = void 0;\r\n var dataValue = void 0;\r\n if (options.getCellData) {\r\n cellDataObject = options.getCellData(td, rowIndex, columnIndex, groupIndex);\r\n dataKey = cellDataObject.key;\r\n dataValue = cellDataObject.value;\r\n dataKey && elementData(td, dataKey, dataValue)\r\n }\r\n null === (_a = options.setAdditionalClasses) || void 0 === _a ? void 0 : _a.call(options, $(td), dataValue);\r\n if (options.cellTemplate && options.cellTemplate.render) {\r\n var additionalTemplateData = options.getTemplateData ? options.getTemplateData(rowIndex) : {};\r\n var templateOptions = {\r\n model: _extends({\r\n text: options.getCellText ? options.getCellText(rowIndex, columnIndex) : \"\",\r\n date: options.getCellDate ? options.getCellDate(rowIndex) : void 0\r\n }, additionalTemplateData),\r\n container: getPublicElement($(td)),\r\n index: rowIndex * options.cellCount + columnIndex\r\n };\r\n if (dataValue) {\r\n if (dataValue.startDate) {\r\n templateOptions.model.startDate = dataValue.startDate\r\n }\r\n if (dataValue.endDate) {\r\n templateOptions.model.endDate = dataValue.endDate\r\n }\r\n if (dataValue.groups) {\r\n templateOptions.model.groups = dataValue.groups\r\n }\r\n if (dataValue.allDay) {\r\n templateOptions.model.allDay = dataValue.allDay\r\n }\r\n }\r\n templateCallbacks.push(options.cellTemplate.render.bind(options.cellTemplate, templateOptions))\r\n } else if (options.getCellText) {\r\n $(\"<div>\").text(options.getCellText(rowIndex, columnIndex)).addClass(options.getCellTextClass).appendTo($(td))\r\n }\r\n }\r\n if (allDayElements && isLastRowInGroup) {\r\n this.insertAllDayRow(allDayElements, tableBody, allDayElementIndex);\r\n allDayElementIndex++\r\n }\r\n }\r\n return templateCallbacks\r\n }\r\n makeGroupedTable(type, groups, cssClasses, cellCount, cellTemplate, rowCount, groupByDate) {\r\n var rows = [];\r\n if (type === this.VERTICAL) {\r\n rows = this._makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount)\r\n } else {\r\n rows = this._makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate)\r\n }\r\n return rows\r\n }\r\n makeGroupedTableFromJSON(type, data, config) {\r\n var table;\r\n var cellStorage = [];\r\n var rowIndex = 0;\r\n config = config || {};\r\n var cellTag = config.cellTag || \"td\";\r\n var childrenField = config.childrenField || \"children\";\r\n var titleField = config.titleField || \"title\";\r\n var {\r\n groupTableClass: groupTableClass\r\n } = config;\r\n var {\r\n groupRowClass: groupRowClass\r\n } = config;\r\n var {\r\n groupCellClass: groupCellClass\r\n } = config;\r\n var {\r\n groupCellCustomContent: groupCellCustomContent\r\n } = config;\r\n\r\n function getChildCount(item) {\r\n if (item[childrenField]) {\r\n return item[childrenField].length\r\n }\r\n return 0\r\n }\r\n\r\n function createCell(text, childCount, index, data) {\r\n var cell = {\r\n element: domAdapter.createElement(cellTag),\r\n childCount: childCount\r\n };\r\n if (groupCellClass) {\r\n cell.element.className = groupCellClass\r\n }\r\n var cellText = domAdapter.createTextNode(text);\r\n if (\"function\" === typeof groupCellCustomContent) {\r\n groupCellCustomContent(cell.element, cellText, index, data)\r\n } else {\r\n cell.element.appendChild(cellText)\r\n }\r\n return cell\r\n }! function() {\r\n table = domAdapter.createElement(\"table\");\r\n if (groupTableClass) {\r\n table.className = groupTableClass\r\n }\r\n }();\r\n ! function generateCells(data) {\r\n for (var i = 0; i < data.length; i++) {\r\n var childCount = getChildCount(data[i]);\r\n var cell = createCell(data[i][titleField], childCount, i, data[i]);\r\n if (!cellStorage[rowIndex]) {\r\n cellStorage[rowIndex] = []\r\n }\r\n cellStorage[rowIndex].push(cell);\r\n if (childCount) {\r\n generateCells(data[i][childrenField])\r\n } else {\r\n rowIndex++\r\n }\r\n }\r\n }(data);\r\n void cellStorage.forEach(cells => {\r\n var row = domAdapter.createElement(ROW_SELECTOR);\r\n if (groupRowClass) {\r\n row.className = groupRowClass\r\n }\r\n var rowspans = [];\r\n for (var i = cells.length - 1; i >= 0; i--) {\r\n var prev = cells[i + 1];\r\n var rowspan = cells[i].childCount;\r\n if (prev && prev.childCount) {\r\n rowspan *= prev.childCount\r\n }\r\n rowspans.push(rowspan)\r\n }\r\n rowspans.reverse();\r\n cells.forEach((cell, index) => {\r\n if (rowspans[index]) {\r\n cell.element.setAttribute(\"rowSpan\", rowspans[index])\r\n }\r\n row.appendChild(cell.element)\r\n });\r\n table.appendChild(row)\r\n });\r\n return table\r\n }\r\n _makeFlexGroupedRowCells(group, repeatCount, cssClasses, cellTemplate) {\r\n var repeatByDate = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1;\r\n var cells = [];\r\n var {\r\n items: items\r\n } = group;\r\n var itemCount = items.length;\r\n for (var i = 0; i < repeatCount * repeatByDate; i++) {\r\n for (var j = 0; j < itemCount; j++) {\r\n var $container = $(\"<div>\");\r\n var cell = {};\r\n if (cellTemplate && cellTemplate.render) {\r\n var templateOptions = {\r\n model: items[j],\r\n container: getPublicElement($container),\r\n index: i * itemCount + j\r\n };\r\n if (group.data) {\r\n templateOptions.model.data = group.data[j]\r\n }\r\n cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)\r\n } else {\r\n $container.text(items[j].text).attr(\"title\", items[j].text).addClass(\"dx-scheduler-group-header-content\");\r\n $container = $(\"<div>\").append($container)\r\n }\r\n var cssClass = isFunction(cssClasses.groupHeaderClass) ? cssClasses.groupHeaderClass(j) : cssClasses.groupHeaderClass;\r\n cell.element = $container.addClass(cssClass);\r\n cells.push(cell)\r\n }\r\n }\r\n return cells\r\n }\r\n _makeVerticalGroupedRows(groups, cssClasses, cellTemplate, rowCount) {\r\n var cellTemplates = [];\r\n var repeatCount = 1;\r\n var cellsArray = [];\r\n var cellIterator = function(cell) {\r\n if (cell.template) {\r\n cellTemplates.push(cell.template)\r\n }\r\n };\r\n for (var i = 0; i < groups.length; i++) {\r\n if (i > 0) {\r\n repeatCount = groups[i - 1].items.length * repeatCount\r\n }\r\n var cells = this._makeFlexGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate);\r\n cells.forEach(cellIterator);\r\n cellsArray.push(cells)\r\n }\r\n var rows = [];\r\n var groupCount = cellsArray.length;\r\n for (var _i = 0; _i < groupCount; _i++) {\r\n rows.push($(\"<div>\").addClass(cssClasses.groupHeaderRowClass))\r\n }\r\n for (var _i2 = groupCount - 1; _i2 >= 0; _i2--) {\r\n var currentColumnLength = cellsArray[_i2].length;\r\n for (var j = 0; j < currentColumnLength; j++) {\r\n rows[_i2].append(cellsArray[_i2][j].element)\r\n }\r\n }\r\n return {\r\n elements: $(\"<div>\").addClass(\"dx-scheduler-group-flex-container\").append(rows),\r\n cellTemplates: cellTemplates\r\n }\r\n }\r\n _makeHorizontalGroupedRows(groups, cssClasses, cellCount, cellTemplate, groupByDate) {\r\n var repeatCount = 1;\r\n var groupCount = groups.length;\r\n var rows = [];\r\n var cellTemplates = [];\r\n var repeatByDate = groupByDate ? cellCount : 1;\r\n var cellIterator = function(cell) {\r\n if (cell.template) {\r\n cellTemplates.push(cell.template)\r\n }\r\n return cell.element\r\n };\r\n for (var i = 0; i < groupCount; i++) {\r\n if (i > 0) {\r\n repeatCount = groups[i - 1].items.length * repeatCount\r\n }\r\n var cells = this._makeGroupedRowCells(groups[i], repeatCount, cssClasses, cellTemplate, repeatByDate);\r\n rows.push($(\"<tr>\").addClass(cssClasses.groupRowClass).append(cells.map(cellIterator)))\r\n }\r\n var maxCellCount = rows[groupCount - 1].find(\"th\").length;\r\n for (var j = 0; j < groupCount; j++) {\r\n var $cell = rows[j].find(\"th\");\r\n var colspan = maxCellCount / $cell.length;\r\n if (!groupByDate) {\r\n colspan *= cellCount\r\n }\r\n if (colspan > 1 && 1 === repeatByDate || groupByDate && groupCount > 1) {\r\n $cell.attr(\"colSpan\", colspan)\r\n }\r\n }\r\n return {\r\n elements: rows,\r\n cellTemplates: cellTemplates\r\n }\r\n }\r\n _makeGroupedRowCells(group, repeatCount, cssClasses, cellTemplate, repeatByDate) {\r\n repeatByDate = repeatByDate || 1;\r\n repeatCount *= repeatByDate;\r\n var cells = [];\r\n var {\r\n items: items\r\n } = group;\r\n var itemCount = items.length;\r\n for (var i = 0; i < repeatCount; i++) {\r\n for (var j = 0; j < itemCount; j++) {\r\n var $container = $(\"<div>\");\r\n var cell = {};\r\n if (cellTemplate && cellTemplate.render) {\r\n var templateOptions = {\r\n model: items[j],\r\n container: getPublicElement($container),\r\n index: i * itemCount + j\r\n };\r\n if (group.data) {\r\n templateOptions.model.data = group.data[j]\r\n }\r\n cell.template = cellTemplate.render.bind(cellTemplate, templateOptions)\r\n } else {\r\n $container.text(items[j].text);\r\n $container = $(\"<div>\").append($container)\r\n }\r\n $container.addClass(cssClasses.groupHeaderContentClass);\r\n var cssClass = void 0;\r\n if (isFunction(cssClasses.groupHeaderClass)) {\r\n cssClass = cssClasses.groupHeaderClass(j)\r\n } else {\r\n cssClass = cssClasses.groupHeaderClass\r\n }\r\n cell.element = $(\"<th>\").addClass(cssClass).append($container);\r\n cells.push(cell)\r\n }\r\n }\r\n return cells\r\n }\r\n}\r\nexport default {\r\n tableCreator: new SchedulerTableCreator\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/common/utils/scroll/getMemoizeScrollTo.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport function getMemoizeScrollTo(getScrollableInstance) {\r\n var instance = getScrollableInstance();\r\n var lastParams = {};\r\n return function(params) {\r\n var force = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n var normalizedParams = {\r\n top: void 0 !== params.top ? Math.ceil(params.top) : void 0,\r\n left: void 0 !== params.left ? Math.ceil(params.left) : void 0\r\n };\r\n var isSameParams = normalizedParams.top === lastParams.top && normalizedParams.left === lastParams.left;\r\n if (!force && isSameParams) {\r\n return\r\n }\r\n lastParams = normalizedParams;\r\n instance.scrollTo(params)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/scheduler/date_table.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport Component from \"../common/component\";\r\nexport class DateTable extends Component {\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n this._optionsByReference = _extends({}, this._optionsByReference, {\r\n dataCellTemplate: true\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/ordinary_cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"children\", \"className\", \"colSpan\", \"styles\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n children: children,\r\n className: className,\r\n colSpan: colSpan,\r\n styles: styles\r\n }\r\n } = _ref;\r\n return createVNode(1, \"td\", className, children, 0, {\r\n style: normalizeStyles(styles),\r\n colSpan: colSpan\r\n })\r\n};\r\nexport var CellProps = {};\r\nexport class OrdinaryCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nOrdinaryCell.defaultProps = CellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/header_cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"children\", \"className\", \"colSpan\", \"styles\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n CellProps\r\n} from \"./ordinary_cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n children: children,\r\n className: className,\r\n colSpan: colSpan,\r\n styles: styles\r\n }\r\n } = _ref;\r\n return createVNode(1, \"th\", className, children, 0, {\r\n style: normalizeStyles(styles),\r\n colSpan: colSpan\r\n })\r\n};\r\nexport class HeaderCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nHeaderCell.defaultProps = CellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/virtual_cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"colSpan\", \"isHeaderCell\", \"width\"];\r\nimport {\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n addWidthToStyle\r\n} from \"../utils\";\r\nimport {\r\n HeaderCell\r\n} from \"./header_cell\";\r\nimport {\r\n OrdinaryCell\r\n} from \"./ordinary_cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n colSpan: colSpan,\r\n isHeaderCell: isHeaderCell\r\n },\r\n style: style\r\n } = _ref;\r\n var Cell = isHeaderCell ? HeaderCell : OrdinaryCell;\r\n return createComponentVNode(2, Cell, {\r\n className: \"dx-scheduler-virtual-cell\",\r\n styles: style,\r\n colSpan: colSpan\r\n })\r\n};\r\nexport var VirtualCellProps = {\r\n width: 0,\r\n isHeaderCell: false\r\n};\r\nexport class VirtualCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get style() {\r\n var {\r\n width: width\r\n } = this.props;\r\n var {\r\n style: style\r\n } = this.restAttributes;\r\n return addWidthToStyle(width, style)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n style: this.style,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nVirtualCell.defaultProps = VirtualCellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/row.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"children\", \"className\", \"isHeaderRow\", \"leftVirtualCellCount\", \"leftVirtualCellWidth\", \"rightVirtualCellCount\", \"rightVirtualCellWidth\", \"styles\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n VirtualCell\r\n} from \"./virtual_cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n hasLeftVirtualCell: hasLeftVirtualCell,\r\n hasRightVirtualCell: hasRightVirtualCell,\r\n props: {\r\n children: children,\r\n className: className,\r\n isHeaderRow: isHeaderRow,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n styles: styles\r\n }\r\n } = _ref;\r\n return createVNode(1, \"tr\", className, [hasLeftVirtualCell && createComponentVNode(2, VirtualCell, {\r\n width: leftVirtualCellWidth,\r\n colSpan: leftVirtualCellCount,\r\n isHeaderCell: isHeaderRow\r\n }), children, hasRightVirtualCell && createComponentVNode(2, VirtualCell, {\r\n width: rightVirtualCellWidth,\r\n colSpan: rightVirtualCellCount,\r\n isHeaderCell: isHeaderRow\r\n })], 0, {\r\n style: normalizeStyles(styles)\r\n })\r\n};\r\nexport var RowProps = {\r\n className: \"\",\r\n leftVirtualCellWidth: 0,\r\n rightVirtualCellWidth: 0,\r\n isHeaderRow: false\r\n};\r\nexport class Row extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get hasLeftVirtualCell() {\r\n var {\r\n leftVirtualCellCount: leftVirtualCellCount\r\n } = this.props;\r\n return !!leftVirtualCellCount\r\n }\r\n get hasRightVirtualCell() {\r\n var {\r\n rightVirtualCellCount: rightVirtualCellCount\r\n } = this.props;\r\n return !!rightVirtualCellCount\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n hasLeftVirtualCell: this.hasLeftVirtualCell,\r\n hasRightVirtualCell: this.hasRightVirtualCell,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nRow.defaultProps = RowProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/virtual_row.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"cellsCount\", \"children\", \"className\", \"height\", \"isHeaderRow\", \"leftVirtualCellCount\", \"leftVirtualCellWidth\", \"rightVirtualCellCount\", \"rightVirtualCellWidth\", \"styles\"];\r\nimport {\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n addHeightToStyle\r\n} from \"../utils\";\r\nimport {\r\n RowProps,\r\n Row\r\n} from \"./row\";\r\nimport {\r\n VirtualCell\r\n} from \"./virtual_cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n props: {\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n rightVirtualCellWidth: rightVirtualCellWidth\r\n },\r\n style: style,\r\n virtualCells: virtualCells\r\n } = _ref;\r\n return createComponentVNode(2, Row, {\r\n styles: style,\r\n className: classes,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n children: virtualCells.map((_, index) => createComponentVNode(2, VirtualCell, null, index.toString()))\r\n })\r\n};\r\nexport var VirtualRowProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(RowProps), Object.getOwnPropertyDescriptors({\r\n leftVirtualCellWidth: 0,\r\n rightVirtualCellWidth: 0,\r\n cellsCount: 1\r\n})));\r\nexport class VirtualRow extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n get style() {\r\n var {\r\n height: height\r\n } = this.props;\r\n var {\r\n style: style\r\n } = this.restAttributes;\r\n return addHeightToStyle(height, style)\r\n }\r\n get classes() {\r\n var {\r\n className: className\r\n } = this.props;\r\n return \"dx-scheduler-virtual-row \".concat(className)\r\n }\r\n get virtualCells() {\r\n if (void 0 !== this.__getterCache.virtualCells) {\r\n return this.__getterCache.virtualCells\r\n }\r\n return this.__getterCache.virtualCells = (() => {\r\n var {\r\n cellsCount: cellsCount\r\n } = this.props;\r\n return [...Array(cellsCount)]\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.cellsCount !== nextProps.cellsCount) {\r\n this.__getterCache.virtualCells = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n style: this.style,\r\n classes: this.classes,\r\n virtualCells: this.virtualCells,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nVirtualRow.defaultProps = VirtualRowProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/table.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"bottomVirtualRowHeight\", \"children\", \"className\", \"height\", \"leftVirtualCellCount\", \"leftVirtualCellWidth\", \"rightVirtualCellCount\", \"rightVirtualCellWidth\", \"tableRef\", \"topVirtualRowHeight\", \"virtualCellsCount\", \"width\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n addHeightToStyle,\r\n addWidthToStyle\r\n} from \"../utils\";\r\nimport {\r\n VirtualRow\r\n} from \"./virtual_row\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n hasBottomVirtualRow: hasBottomVirtualRow,\r\n hasTopVirtualRow: hasTopVirtualRow,\r\n props: {\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n children: children,\r\n className: className,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n tableRef: tableRef,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n virtualCellsCount: virtualCellsCount\r\n },\r\n style: style\r\n } = _ref;\r\n return createVNode(1, \"table\", className, createVNode(1, \"tbody\", null, [hasTopVirtualRow && createComponentVNode(2, VirtualRow, {\r\n height: topVirtualRowHeight,\r\n cellsCount: virtualCellsCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n rightVirtualCellCount: rightVirtualCellCount\r\n }), children, hasBottomVirtualRow && createComponentVNode(2, VirtualRow, {\r\n height: bottomVirtualRowHeight,\r\n cellsCount: virtualCellsCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n rightVirtualCellCount: rightVirtualCellCount\r\n })], 0), 2, {\r\n style: normalizeStyles(style)\r\n }, null, tableRef)\r\n};\r\nexport var TableProps = {\r\n className: \"\",\r\n topVirtualRowHeight: 0,\r\n bottomVirtualRowHeight: 0,\r\n leftVirtualCellWidth: 0,\r\n rightVirtualCellWidth: 0,\r\n virtualCellsCount: 0\r\n};\r\nimport {\r\n createRef as infernoCreateRef\r\n} from \"inferno\";\r\nexport class Table extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.elementRef = infernoCreateRef()\r\n }\r\n get style() {\r\n var {\r\n height: height,\r\n width: width\r\n } = this.props;\r\n var {\r\n style: style\r\n } = this.restAttributes;\r\n var heightAdded = addHeightToStyle(height, style);\r\n return addWidthToStyle(width, heightAdded)\r\n }\r\n get hasTopVirtualRow() {\r\n var {\r\n topVirtualRowHeight: topVirtualRowHeight\r\n } = this.props;\r\n return !!topVirtualRowHeight\r\n }\r\n get hasBottomVirtualRow() {\r\n var {\r\n bottomVirtualRowHeight: bottomVirtualRowHeight\r\n } = this.props;\r\n return !!bottomVirtualRowHeight\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n elementRef: this.elementRef,\r\n style: this.style,\r\n hasTopVirtualRow: this.hasTopVirtualRow,\r\n hasBottomVirtualRow: this.hasBottomVirtualRow,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nTable.defaultProps = TableProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/const.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var DefaultSizes = {\r\n allDayPanelHeight: 25\r\n};\r\nexport var DATE_TABLE_CELL_CLASS = \"dx-scheduler-date-table-cell\";\r\nexport var ALL_DAY_PANEL_CELL_CLASS = \"dx-scheduler-all-day-table-cell\";\r\nexport var DATE_TABLE_ROW_CLASS = \"dx-scheduler-date-table-row\";\r\nexport var ALL_DAY_ROW_CLASS = \"dx-scheduler-all-day-table-row\";\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"allDay\", \"ariaLabel\", \"children\", \"className\", \"contentTemplateProps\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\"];\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n getGroupCellClasses\r\n} from \"../utils\";\r\nexport var viewFunction = viewModel => createVNode(1, \"td\", viewModel.classes, viewModel.props.children, 0, {\r\n \"aria-label\": viewModel.props.ariaLabel\r\n});\r\nexport var CellBaseProps = {\r\n className: \"\",\r\n isFirstGroupCell: false,\r\n isLastGroupCell: false,\r\n startDate: Object.freeze(new Date),\r\n endDate: Object.freeze(new Date),\r\n allDay: false,\r\n text: \"\",\r\n index: 0,\r\n contentTemplateProps: Object.freeze({\r\n data: {},\r\n index: 0\r\n })\r\n};\r\nexport class CellBase extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get classes() {\r\n var {\r\n className: className,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell\r\n } = this.props;\r\n return getGroupCellClasses(isFirstGroupCell, isLastGroupCell, className)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n classes: this.classes,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nCellBase.defaultProps = CellBaseProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"allDay\", \"ariaLabel\", \"children\", \"className\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"firstDayOfMonth\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isFocused\", \"isLastGroupCell\", \"isSelected\", \"otherMonth\", \"startDate\", \"text\", \"today\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n CellBase as Cell,\r\n CellBaseProps\r\n} from \"../cell\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../../utils/combine_classes\";\r\nimport {\r\n DATE_TABLE_CELL_CLASS\r\n} from \"../../const\";\r\nvar ADD_APPOINTMENT_LABEL = \"Add appointment\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n ariaLabel: ariaLabel,\r\n classes: classes,\r\n dataCellTemplateProps: dataCellTemplateProps,\r\n props: {\r\n children: children,\r\n dataCellTemplate: DataCellTemplate,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell\r\n }\r\n } = _ref;\r\n return createComponentVNode(2, Cell, {\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n className: classes,\r\n ariaLabel: ariaLabel,\r\n children: [!DataCellTemplate && children, !!DataCellTemplate && DataCellTemplate({\r\n index: dataCellTemplateProps.index,\r\n data: dataCellTemplateProps.data\r\n })]\r\n })\r\n};\r\nexport var DateTableCellBaseProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(CellBaseProps), Object.getOwnPropertyDescriptors({\r\n otherMonth: false,\r\n today: false,\r\n firstDayOfMonth: false,\r\n isSelected: false,\r\n isFocused: false\r\n})));\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class DateTableCellBase extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n get classes() {\r\n var {\r\n allDay: allDay,\r\n className: className,\r\n isFocused: isFocused,\r\n isSelected: isSelected\r\n } = this.props;\r\n return combineClasses({\r\n \"dx-scheduler-cell-sizes-horizontal\": true,\r\n \"dx-scheduler-cell-sizes-vertical\": !allDay,\r\n [DATE_TABLE_CELL_CLASS]: !allDay,\r\n \"dx-state-focused\": isSelected,\r\n \"dx-scheduler-focused-cell\": isFocused,\r\n [className]: true\r\n })\r\n }\r\n get dataCellTemplateProps() {\r\n if (void 0 !== this.__getterCache.dataCellTemplateProps) {\r\n return this.__getterCache.dataCellTemplateProps\r\n }\r\n return this.__getterCache.dataCellTemplateProps = (() => {\r\n var {\r\n allDay: allDay,\r\n contentTemplateProps: contentTemplateProps,\r\n endDate: endDate,\r\n groupIndex: groupIndex,\r\n groups: groups,\r\n index: index,\r\n startDate: startDate\r\n } = this.props;\r\n return {\r\n data: _extends({\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: groups,\r\n groupIndex: groups ? groupIndex : void 0,\r\n text: \"\",\r\n allDay: !!allDay || void 0\r\n }, contentTemplateProps.data),\r\n index: index\r\n }\r\n })()\r\n }\r\n get ariaLabel() {\r\n return this.props.isSelected ? ADD_APPOINTMENT_LABEL : void 0\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.allDay !== nextProps.allDay || this.props.contentTemplateProps !== nextProps.contentTemplateProps || this.props.endDate !== nextProps.endDate || this.props.groupIndex !== nextProps.groupIndex || this.props.groups !== nextProps.groups || this.props.index !== nextProps.index || this.props.startDate !== nextProps.startDate) {\r\n this.__getterCache.dataCellTemplateProps = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n classes: this.classes,\r\n dataCellTemplateProps: this.dataCellTemplateProps,\r\n ariaLabel: this.ariaLabel,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDateTableCellBase.defaultProps = DateTableCellBaseProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"allDay\", \"ariaLabel\", \"children\", \"className\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"firstDayOfMonth\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isFocused\", \"isLastGroupCell\", \"isSelected\", \"otherMonth\", \"startDate\", \"text\", \"today\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n ALL_DAY_PANEL_CELL_CLASS\r\n} from \"../../../const\";\r\nimport {\r\n DateTableCellBaseProps,\r\n DateTableCellBase\r\n} from \"../cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n className: className,\r\n dataCellTemplate: dataCellTemplate,\r\n endDate: endDate,\r\n groupIndex: groupIndex,\r\n groups: groups,\r\n index: index,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isFocused: isFocused,\r\n isLastGroupCell: isLastGroupCell,\r\n isSelected: isSelected,\r\n startDate: startDate\r\n }\r\n } = _ref;\r\n return createComponentVNode(2, DateTableCellBase, {\r\n className: \"\".concat(ALL_DAY_PANEL_CELL_CLASS, \" \").concat(className),\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: groups,\r\n groupIndex: groupIndex,\r\n allDay: true,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n index: index,\r\n dataCellTemplate: dataCellTemplate,\r\n isSelected: isSelected,\r\n isFocused: isFocused\r\n })\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class AllDayPanelCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAllDayPanelCell.defaultProps = DateTableCellBaseProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table_body.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"dataCellTemplate\", \"isVerticalGroupOrientation\", \"leftVirtualCellCount\", \"leftVirtualCellWidth\", \"rightVirtualCellCount\", \"rightVirtualCellWidth\", \"viewData\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"../../row\";\r\nimport {\r\n AllDayPanelCell as Cell\r\n} from \"./cell\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../../../utils/combine_classes\";\r\nexport var viewFunction = viewModel => createComponentVNode(2, Row, {\r\n leftVirtualCellWidth: viewModel.props.leftVirtualCellWidth,\r\n rightVirtualCellWidth: viewModel.props.rightVirtualCellWidth,\r\n leftVirtualCellCount: viewModel.props.leftVirtualCellCount,\r\n rightVirtualCellCount: viewModel.props.rightVirtualCellCount,\r\n className: viewModel.classes,\r\n children: viewModel.props.viewData.map(_ref => {\r\n var {\r\n endDate: endDate,\r\n groupIndex: cellGroupIndex,\r\n groups: groups,\r\n index: cellIndex,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isFocused: isFocused,\r\n isLastGroupCell: isLastGroupCell,\r\n isSelected: isSelected,\r\n key: key,\r\n startDate: startDate\r\n } = _ref;\r\n return createComponentVNode(2, Cell, {\r\n isFirstGroupCell: !viewModel.props.isVerticalGroupOrientation && isFirstGroupCell,\r\n isLastGroupCell: !viewModel.props.isVerticalGroupOrientation && isLastGroupCell,\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: groups,\r\n groupIndex: cellGroupIndex,\r\n index: cellIndex,\r\n dataCellTemplate: viewModel.props.dataCellTemplate,\r\n isSelected: isSelected,\r\n isFocused: isFocused\r\n }, key)\r\n })\r\n});\r\nexport var AllDayPanelTableBodyProps = {\r\n viewData: Object.freeze([]),\r\n isVerticalGroupOrientation: false,\r\n className: \"\",\r\n leftVirtualCellWidth: 0,\r\n rightVirtualCellWidth: 0\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class AllDayPanelTableBody extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get classes() {\r\n var {\r\n className: className\r\n } = this.props;\r\n return combineClasses({\r\n \"dx-scheduler-all-day-table-row\": true,\r\n [className]: !!className\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n classes: this.classes,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAllDayPanelTableBody.defaultProps = AllDayPanelTableBodyProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/layout_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var LayoutProps = {\r\n viewData: Object.freeze({\r\n groupedData: [],\r\n leftVirtualCellCount: 0,\r\n rightVirtualCellCount: 0,\r\n topVirtualRowCount: 0,\r\n bottomVirtualRowCount: 0\r\n }),\r\n leftVirtualCellWidth: 0,\r\n rightVirtualCellWidth: 0,\r\n topVirtualRowHeight: 0,\r\n bottomVirtualRowHeight: 0,\r\n addDateTableClass: true,\r\n addVerticalSizesClassToRows: true\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"addDateTableClass\", \"addVerticalSizesClassToRows\", \"bottomVirtualRowHeight\", \"dataCellTemplate\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"tableRef\", \"topVirtualRowHeight\", \"viewData\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Table\r\n} from \"../../table\";\r\nimport {\r\n AllDayPanelTableBody\r\n} from \"./table_body\";\r\nimport {\r\n LayoutProps\r\n} from \"../../layout_props\";\r\nimport {\r\n DefaultSizes\r\n} from \"../../../const\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n allDayPanelData: allDayPanelData,\r\n emptyTableHeight: emptyTableHeight,\r\n props: {\r\n dataCellTemplate: dataCellTemplate,\r\n tableRef: tableRef,\r\n viewData: viewData,\r\n width: width\r\n }\r\n } = _ref;\r\n return createComponentVNode(2, Table, {\r\n className: \"dx-scheduler-all-day-table\",\r\n height: emptyTableHeight,\r\n width: width,\r\n tableRef: tableRef,\r\n children: createComponentVNode(2, AllDayPanelTableBody, {\r\n viewData: allDayPanelData,\r\n leftVirtualCellWidth: viewData.leftVirtualCellWidth,\r\n rightVirtualCellWidth: viewData.rightVirtualCellWidth,\r\n leftVirtualCellCount: viewData.leftVirtualCellCount,\r\n rightVirtualCellCount: viewData.rightVirtualCellCount,\r\n dataCellTemplate: dataCellTemplate\r\n })\r\n })\r\n};\r\nexport var AllDayTableProps = LayoutProps;\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class AllDayTable extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get allDayPanelData() {\r\n if (void 0 !== this.__getterCache.allDayPanelData) {\r\n return this.__getterCache.allDayPanelData\r\n }\r\n return this.__getterCache.allDayPanelData = (() => this.props.viewData.groupedData[0].allDayPanel)()\r\n }\r\n get emptyTableHeight() {\r\n return this.allDayPanelData ? void 0 : DefaultSizes.allDayPanelHeight\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n super.componentWillUpdate();\r\n if (this.props.viewData !== nextProps.viewData) {\r\n this.__getterCache.allDayPanelData = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n allDayPanelData: this.allDayPanelData,\r\n emptyTableHeight: this.emptyTableHeight,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAllDayTable.defaultProps = AllDayTableProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../../core/component_registrator\";\r\nimport {\r\n DateTable\r\n} from \"../../../../../../component_wrapper/scheduler/date_table\";\r\nimport {\r\n AllDayTable as AllDayTableComponent\r\n} from \"./table\";\r\nexport default class AllDayTable extends DateTable {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"dataCellTemplate\"],\r\n props: [\"viewData\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"topVirtualRowHeight\", \"bottomVirtualRowHeight\", \"addDateTableClass\", \"addVerticalSizesClassToRows\", \"width\", \"dataCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return AllDayTableComponent\r\n }\r\n}\r\nregisterComponent(\"dxAllDayTable\", AllDayTable);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectDestructuringEmpty from \"@babel/runtime/helpers/esm/objectDestructuringEmpty\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n createVNode\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport messageLocalization from \"../../../../../../../localization/message\";\r\nexport var viewFunction = viewModel => createVNode(1, \"div\", \"dx-scheduler-all-day-title\", viewModel.text, 0);\r\nexport var AllDayPanelTitleProps = {};\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nexport class AllDayPanelTitle extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get text() {\r\n return messageLocalization.format(\"dxScheduler-allDay\")\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _extends({}, (_objectDestructuringEmpty(_this$props), _this$props));\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n text: this.text,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nAllDayPanelTitle.defaultProps = AllDayPanelTitleProps;\r\n","export default function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n}","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../../core/component_registrator\";\r\nimport BaseComponent from \"../../../../../../component_wrapper/common/component\";\r\nimport {\r\n AllDayPanelTitle as AllDayPanelTitleComponent\r\n} from \"./title\";\r\nexport default class AllDayPanelTitle extends BaseComponent {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [],\r\n props: []\r\n }\r\n }\r\n get _viewComponent() {\r\n return AllDayPanelTitleComponent\r\n }\r\n}\r\nregisterComponent(\"dxAllDayPanelTitle\", AllDayPanelTitle);\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/table_body.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"addDateTableClass\", \"addVerticalSizesClassToRows\", \"bottomVirtualRowHeight\", \"cellTemplate\", \"dataCellTemplate\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"topVirtualRowHeight\", \"viewData\", \"width\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"../row\";\r\nimport {\r\n AllDayPanelTableBody\r\n} from \"./all_day_panel/table_body\";\r\nimport {\r\n LayoutProps\r\n} from \"../layout_props\";\r\nimport {\r\n DateTableCellBase\r\n} from \"./cell\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../../utils/combine_classes\";\r\nimport {\r\n DATE_TABLE_ROW_CLASS\r\n} from \"../../const\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n cellTemplate: Cell,\r\n dataCellTemplate: dataCellTemplate,\r\n viewData: viewData\r\n },\r\n rowClasses: rowClasses\r\n } = _ref;\r\n return createFragment(viewData.groupedData.map(_ref2 => {\r\n var {\r\n allDayPanel: allDayPanel,\r\n dateTable: dateTable,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n key: fragmentKey\r\n } = _ref2;\r\n return createFragment([isGroupedAllDayPanel && createComponentVNode(2, AllDayPanelTableBody, {\r\n viewData: allDayPanel,\r\n dataCellTemplate: dataCellTemplate,\r\n isVerticalGroupOrientation: true,\r\n leftVirtualCellWidth: viewData.leftVirtualCellWidth,\r\n rightVirtualCellWidth: viewData.rightVirtualCellWidth,\r\n leftVirtualCellCount: viewData.leftVirtualCellCount,\r\n rightVirtualCellCount: viewData.rightVirtualCellCount\r\n }), dateTable.map(_ref3 => {\r\n var {\r\n cells: cells,\r\n key: rowKey\r\n } = _ref3;\r\n return createComponentVNode(2, Row, {\r\n className: rowClasses,\r\n leftVirtualCellWidth: viewData.leftVirtualCellWidth,\r\n rightVirtualCellWidth: viewData.rightVirtualCellWidth,\r\n leftVirtualCellCount: viewData.leftVirtualCellCount,\r\n rightVirtualCellCount: viewData.rightVirtualCellCount,\r\n children: cells.map(_ref4 => {\r\n var {\r\n endDate: endDate,\r\n firstDayOfMonth: firstDayOfMonth,\r\n groupIndex: cellGroupIndex,\r\n groups: groups,\r\n index: cellIndex,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isFocused: isFocused,\r\n isLastGroupCell: isLastGroupCell,\r\n isSelected: isSelected,\r\n key: key,\r\n otherMonth: otherMonth,\r\n startDate: startDate,\r\n text: text,\r\n today: today\r\n } = _ref4;\r\n return Cell({\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: groups,\r\n groupIndex: cellGroupIndex,\r\n index: cellIndex,\r\n dataCellTemplate: dataCellTemplate,\r\n key: key,\r\n text: text,\r\n today: today,\r\n otherMonth: otherMonth,\r\n firstDayOfMonth: firstDayOfMonth,\r\n isSelected: isSelected,\r\n isFocused: isFocused\r\n })\r\n })\r\n }, rowKey)\r\n })], 0, fragmentKey)\r\n }), 0)\r\n};\r\nexport var DateTableBodyProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(LayoutProps), Object.getOwnPropertyDescriptors({\r\n cellTemplate: DateTableCellBase\r\n})));\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class DateTableBody extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get rowClasses() {\r\n var {\r\n addVerticalSizesClassToRows: addVerticalSizesClassToRows\r\n } = this.props;\r\n return combineClasses({\r\n [DATE_TABLE_ROW_CLASS]: true,\r\n \"dx-scheduler-cell-sizes-vertical\": addVerticalSizesClassToRows\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate),\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n rowClasses: this.rowClasses,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDateTableBody.defaultProps = DateTableBodyProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"addDateTableClass\", \"addVerticalSizesClassToRows\", \"bottomVirtualRowHeight\", \"cellTemplate\", \"dataCellTemplate\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"tableRef\", \"topVirtualRowHeight\", \"viewData\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Table\r\n} from \"../table\";\r\nimport {\r\n DateTableBody\r\n} from \"./table_body\";\r\nimport {\r\n LayoutProps\r\n} from \"../layout_props\";\r\nimport {\r\n DateTableCellBase\r\n} from \"./cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n classes: classes,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n props: {\r\n addVerticalSizesClassToRows: addVerticalSizesClassToRows,\r\n cellTemplate: cellTemplate,\r\n dataCellTemplate: dataCellTemplate,\r\n groupOrientation: groupOrientation,\r\n tableRef: tableRef,\r\n viewData: viewData,\r\n width: width\r\n },\r\n restAttributes: restAttributes,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n virtualCellsCount: virtualCellsCount\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, Table, _extends({}, restAttributes, {\r\n tableRef: tableRef,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n leftVirtualCellCount: viewData.leftVirtualCellCount,\r\n rightVirtualCellCount: viewData.rightVirtualCellCount,\r\n virtualCellsCount: virtualCellsCount,\r\n className: classes,\r\n width: width,\r\n children: createComponentVNode(2, DateTableBody, {\r\n cellTemplate: cellTemplate,\r\n viewData: viewData,\r\n dataCellTemplate: dataCellTemplate,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n groupOrientation: groupOrientation,\r\n addVerticalSizesClassToRows: addVerticalSizesClassToRows\r\n })\r\n })))\r\n};\r\nexport var DateTableLayoutProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(LayoutProps), Object.getOwnPropertyDescriptors({\r\n cellTemplate: DateTableCellBase\r\n})));\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class DateTableLayoutBase extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get classes() {\r\n var {\r\n addDateTableClass: addDateTableClass\r\n } = this.props;\r\n return addDateTableClass ? \"dx-scheduler-date-table\" : void 0\r\n }\r\n get topVirtualRowHeight() {\r\n var _this$props$viewData$;\r\n return null !== (_this$props$viewData$ = this.props.viewData.topVirtualRowHeight) && void 0 !== _this$props$viewData$ ? _this$props$viewData$ : 0\r\n }\r\n get bottomVirtualRowHeight() {\r\n var _this$props$viewData$2;\r\n return null !== (_this$props$viewData$2 = this.props.viewData.bottomVirtualRowHeight) && void 0 !== _this$props$viewData$2 ? _this$props$viewData$2 : 0\r\n }\r\n get leftVirtualCellWidth() {\r\n var _this$props$viewData$3;\r\n return null !== (_this$props$viewData$3 = this.props.viewData.leftVirtualCellWidth) && void 0 !== _this$props$viewData$3 ? _this$props$viewData$3 : 0\r\n }\r\n get rightVirtualCellWidth() {\r\n var _this$props$viewData$4;\r\n return null !== (_this$props$viewData$4 = this.props.viewData.rightVirtualCellWidth) && void 0 !== _this$props$viewData$4 ? _this$props$viewData$4 : 0\r\n }\r\n get virtualCellsCount() {\r\n return this.props.viewData.groupedData[0].dateTable[0].cells.length\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate),\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n classes: this.classes,\r\n topVirtualRowHeight: this.topVirtualRowHeight,\r\n bottomVirtualRowHeight: this.bottomVirtualRowHeight,\r\n leftVirtualCellWidth: this.leftVirtualCellWidth,\r\n rightVirtualCellWidth: this.rightVirtualCellWidth,\r\n virtualCellsCount: this.virtualCellsCount,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDateTableLayoutBase.defaultProps = DateTableLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/date_table/layout.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../core/component_registrator\";\r\nimport {\r\n DateTable\r\n} from \"../../../../../component_wrapper/scheduler/date_table\";\r\nimport {\r\n DateTableLayoutBase as DateTableLayoutBaseComponent\r\n} from \"./layout\";\r\nexport default class DateTableLayoutBase extends DateTable {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"cellTemplate\", \"dataCellTemplate\"],\r\n props: [\"cellTemplate\", \"viewData\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"topVirtualRowHeight\", \"bottomVirtualRowHeight\", \"addDateTableClass\", \"addVerticalSizesClassToRows\", \"width\", \"dataCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return DateTableLayoutBaseComponent\r\n }\r\n}\r\nregisterComponent(\"dxDateTableLayoutBase\", DateTableLayoutBase);\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/scheduler/group_panel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport Component from \"../common/component\";\r\nexport class GroupPanelWrapper extends Component {\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n this._optionsByReference = _extends({}, this._optionsByReference, {\r\n resourceCellTemplate: true\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var GroupPanelBaseProps = {\r\n groupPanelData: Object.freeze({\r\n groupPanelItems: [],\r\n baseColSpan: 1\r\n }),\r\n groupByDate: false\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/cell_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var GroupPanelCellProps = {\r\n id: 0,\r\n text: \"\",\r\n data: Object.freeze({\r\n id: 0\r\n }),\r\n className: \"\"\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"cellTemplate\", \"className\", \"color\", \"data\", \"id\", \"index\", \"text\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n GroupPanelCellProps\r\n} from \"../cell_props\";\r\nexport var viewFunction = viewModel => {\r\n var CellTemplate = viewModel.props.cellTemplate;\r\n return createVNode(1, \"div\", \"dx-scheduler-group-header \".concat(viewModel.props.className), [!!viewModel.props.cellTemplate && CellTemplate({\r\n data: {\r\n data: viewModel.props.data,\r\n id: viewModel.props.id,\r\n color: viewModel.props.color,\r\n text: viewModel.props.text\r\n },\r\n index: viewModel.props.index\r\n }), !viewModel.props.cellTemplate && createVNode(1, \"div\", \"dx-scheduler-group-header-content\", viewModel.props.text, 0)], 0)\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class GroupPanelVerticalCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate)\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nGroupPanelVerticalCell.defaultProps = GroupPanelCellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/row_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nexport var GroupPanelRowProps = {\r\n groupItems: Object.freeze([]),\r\n className: \"\"\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/row.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"cellTemplate\", \"className\", \"groupItems\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n GroupPanelVerticalCell\r\n} from \"./cell\";\r\nimport {\r\n GroupPanelRowProps\r\n} from \"../row_props\";\r\nexport var viewFunction = viewModel => createVNode(1, \"div\", \"dx-scheduler-group-row \".concat(viewModel.props.className), viewModel.props.groupItems.map((_ref, index) => {\r\n var {\r\n color: color,\r\n data: data,\r\n id: id,\r\n key: key,\r\n text: text\r\n } = _ref;\r\n return createComponentVNode(2, GroupPanelVerticalCell, {\r\n text: text,\r\n id: id,\r\n data: data,\r\n index: index,\r\n color: color,\r\n cellTemplate: viewModel.props.cellTemplate\r\n }, key)\r\n}), 0);\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Row extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate)\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nRow.defaultProps = GroupPanelRowProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel_layout_props.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n GroupPanelBaseProps\r\n} from \"./group_panel_props\";\r\nexport var GroupPanelLayoutProps = GroupPanelBaseProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/vertical/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"elementRef\", \"groupByDate\", \"groupPanelData\", \"height\", \"resourceCellTemplate\", \"styles\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n normalizeStyles\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"./row\";\r\nimport {\r\n addHeightToStyle\r\n} from \"../../../utils\";\r\nimport {\r\n GroupPanelLayoutProps\r\n} from \"../group_panel_layout_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n className: className,\r\n elementRef: elementRef,\r\n groupPanelData: groupPanelData,\r\n resourceCellTemplate: resourceCellTemplate\r\n },\r\n style: style\r\n } = _ref;\r\n return createVNode(1, \"div\", className, createVNode(1, \"div\", \"dx-scheduler-group-flex-container\", groupPanelData.groupPanelItems.map(group => createComponentVNode(2, Row, {\r\n groupItems: group,\r\n cellTemplate: resourceCellTemplate\r\n }, group[0].key)), 0), 2, {\r\n style: normalizeStyles(style)\r\n }, null, elementRef)\r\n};\r\nexport var VerticalGroupPanelLayoutProps = GroupPanelLayoutProps;\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class GroupPanelVerticalLayout extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get style() {\r\n var {\r\n height: height,\r\n styles: styles\r\n } = this.props;\r\n return addHeightToStyle(height, styles)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n resourceCellTemplate: getTemplate(props.resourceCellTemplate)\r\n }),\r\n style: this.style,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nGroupPanelVerticalLayout.defaultProps = VerticalGroupPanelLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"cellTemplate\", \"className\", \"colSpan\", \"color\", \"data\", \"id\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"text\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../../../utils/combine_classes\";\r\nimport {\r\n GroupPanelCellProps\r\n} from \"../cell_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n props: {\r\n cellTemplate: CellTemplate,\r\n colSpan: colSpan,\r\n color: color,\r\n data: data,\r\n id: id,\r\n index: index,\r\n text: text\r\n }\r\n } = _ref;\r\n return createVNode(1, \"th\", classes, createVNode(1, \"div\", \"dx-scheduler-group-header-content\", [!!CellTemplate && CellTemplate({\r\n data: {\r\n data: data,\r\n id: id,\r\n color: color,\r\n text: text\r\n },\r\n index: index\r\n }), !CellTemplate && createVNode(1, \"div\", null, text, 0)], 0), 2, {\r\n colSpan: colSpan\r\n })\r\n};\r\nexport var GroupPanelHorizontalCellProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(GroupPanelCellProps), Object.getOwnPropertyDescriptors({\r\n isFirstGroupCell: false,\r\n isLastGroupCell: false,\r\n colSpan: 1\r\n})));\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class GroupPanelHorizontalCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get classes() {\r\n var {\r\n className: className,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell\r\n } = this.props;\r\n return combineClasses({\r\n \"dx-scheduler-group-header\": true,\r\n \"dx-scheduler-first-group-cell\": isFirstGroupCell,\r\n \"dx-scheduler-last-group-cell\": isLastGroupCell,\r\n [className]: !!className\r\n })\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate)\r\n }),\r\n classes: this.classes,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nGroupPanelHorizontalCell.defaultProps = GroupPanelHorizontalCellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/row.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"cellTemplate\", \"className\", \"groupItems\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n GroupPanelHorizontalCell\r\n} from \"./cell\";\r\nimport {\r\n GroupPanelRowProps\r\n} from \"../row_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n cellTemplate: cellTemplate,\r\n className: className,\r\n groupItems: groupItems\r\n }\r\n } = _ref;\r\n return createVNode(1, \"tr\", \"dx-scheduler-group-row \".concat(className), groupItems.map((_ref2, index) => {\r\n var {\r\n colSpan: colSpan,\r\n color: color,\r\n data: data,\r\n id: id,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n key: key,\r\n text: text\r\n } = _ref2;\r\n return createComponentVNode(2, GroupPanelHorizontalCell, {\r\n text: text,\r\n id: id,\r\n data: data,\r\n index: index,\r\n color: color,\r\n colSpan: colSpan,\r\n isFirstGroupCell: !!isFirstGroupCell,\r\n isLastGroupCell: !!isLastGroupCell,\r\n cellTemplate: cellTemplate\r\n }, key)\r\n }), 0)\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class Row extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate)\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nRow.defaultProps = GroupPanelRowProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/horizontal/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"elementRef\", \"groupByDate\", \"groupPanelData\", \"height\", \"resourceCellTemplate\", \"styles\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"./row\";\r\nimport {\r\n GroupPanelLayoutProps\r\n} from \"../group_panel_layout_props\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n groupPanelItems: groupPanelItems,\r\n props: {\r\n resourceCellTemplate: resourceCellTemplate\r\n }\r\n } = _ref;\r\n return createFragment(groupPanelItems.map(group => createComponentVNode(2, Row, {\r\n groupItems: group,\r\n cellTemplate: resourceCellTemplate\r\n }, group[0].key)), 0)\r\n};\r\nexport var HorizontalGroupPanelLayoutProps = GroupPanelLayoutProps;\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class GroupPanelHorizontalLayout extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n get groupPanelItems() {\r\n if (void 0 !== this.__getterCache.groupPanelItems) {\r\n return this.__getterCache.groupPanelItems\r\n }\r\n return this.__getterCache.groupPanelItems = (() => {\r\n var {\r\n groupPanelData: groupPanelData\r\n } = this.props;\r\n var {\r\n baseColSpan: baseColSpan,\r\n groupPanelItems: groupPanelItems\r\n } = groupPanelData;\r\n var colSpans = groupPanelItems.reduceRight((currentColSpans, groupsRow, index) => {\r\n var nextColSpans = currentColSpans;\r\n var currentLevelGroupCount = groupsRow.length;\r\n var previousColSpan = index === groupPanelItems.length - 1 ? baseColSpan : currentColSpans[index + 1];\r\n var previousLevelGroupCount = index === groupPanelItems.length - 1 ? currentLevelGroupCount : groupPanelItems[index + 1].length;\r\n var groupCountDiff = previousLevelGroupCount / currentLevelGroupCount;\r\n nextColSpans[index] = groupCountDiff * previousColSpan;\r\n return nextColSpans\r\n }, [...new Array(groupPanelItems.length)]);\r\n return groupPanelItems.map((groupsRenderRow, index) => {\r\n var colSpan = colSpans[index];\r\n return groupsRenderRow.map(groupItem => _extends({}, groupItem, {\r\n colSpan: colSpan\r\n }))\r\n })\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.groupPanelData !== nextProps.groupPanelData) {\r\n this.__getterCache.groupPanelItems = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n resourceCellTemplate: getTemplate(props.resourceCellTemplate)\r\n }),\r\n groupPanelItems: this.groupPanelItems,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nGroupPanelHorizontalLayout.defaultProps = HorizontalGroupPanelLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"elementRef\", \"groupByDate\", \"groupOrientation\", \"groupPanelData\", \"groups\", \"height\", \"resourceCellTemplate\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n isVerticalGroupingApplied\r\n} from \"../../utils\";\r\nimport {\r\n GroupPanelBaseProps\r\n} from \"./group_panel_props\";\r\nimport {\r\n GroupPanelVerticalLayout\r\n} from \"./vertical/layout\";\r\nimport {\r\n GroupPanelHorizontalLayout\r\n} from \"./horizontal/layout\";\r\nimport {\r\n VERTICAL_GROUP_ORIENTATION\r\n} from \"../../../consts\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n isVerticalLayout: isVerticalLayout,\r\n props: {\r\n className: className,\r\n elementRef: elementRef,\r\n groupPanelData: groupPanelData,\r\n height: height,\r\n resourceCellTemplate: resourceCellTemplate\r\n },\r\n restAttributes: restAttributes\r\n } = _ref;\r\n return isVerticalLayout ? createComponentVNode(2, GroupPanelVerticalLayout, {\r\n height: height,\r\n resourceCellTemplate: resourceCellTemplate,\r\n className: className,\r\n groupPanelData: groupPanelData,\r\n elementRef: elementRef,\r\n styles: restAttributes.style\r\n }) : createComponentVNode(2, GroupPanelHorizontalLayout, {\r\n height: height,\r\n resourceCellTemplate: resourceCellTemplate,\r\n className: className,\r\n groupPanelData: groupPanelData,\r\n elementRef: elementRef,\r\n styles: restAttributes.style\r\n })\r\n};\r\nexport var GroupPanelProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(GroupPanelBaseProps), Object.getOwnPropertyDescriptors({\r\n groups: Object.freeze([]),\r\n groupOrientation: VERTICAL_GROUP_ORIENTATION\r\n})));\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class GroupPanel extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get isVerticalLayout() {\r\n var {\r\n groupOrientation: groupOrientation,\r\n groups: groups\r\n } = this.props;\r\n return isVerticalGroupingApplied(groups, groupOrientation)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n resourceCellTemplate: getTemplate(props.resourceCellTemplate)\r\n }),\r\n isVerticalLayout: this.isVerticalLayout,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nGroupPanel.defaultProps = GroupPanelProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/group_panel/group_panel.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../core/component_registrator\";\r\nimport {\r\n GroupPanelWrapper\r\n} from \"../../../../../component_wrapper/scheduler/group_panel\";\r\nimport {\r\n GroupPanel as GroupPanelComponent\r\n} from \"./group_panel\";\r\nexport default class GroupPanel extends GroupPanelWrapper {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"resourceCellTemplate\"],\r\n props: [\"groups\", \"groupOrientation\", \"groupPanelData\", \"groupByDate\", \"height\", \"className\", \"resourceCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return GroupPanelComponent\r\n }\r\n}\r\nregisterComponent(\"dxGroupPanel\", GroupPanel);\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/scheduler/header_panel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport Component from \"../common/component\";\r\nexport class HeaderPanel extends Component {\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n this._optionsByReference = _extends({}, this._optionsByReference, {\r\n dateHeaderData: true,\r\n resourceCellTemplate: true,\r\n dateCellTemplate: true,\r\n timeCellTemplate: true\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/dateHeaderText.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nvar _excluded = [\"splitText\", \"text\"];\r\nimport {\r\n createVNode,\r\n createFragment\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n splitText: splitText,\r\n text: text\r\n },\r\n textParts: textParts\r\n } = _ref;\r\n return createFragment(splitText ? textParts.map(part => createVNode(1, \"span\", \"dx-scheduler-header-panel-cell-date\", part, 0)) : text, 0)\r\n};\r\nexport var DateHeaderTextProps = {\r\n text: \"\",\r\n splitText: false\r\n};\r\nexport class DateHeaderText extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n get textParts() {\r\n if (void 0 !== this.__getterCache.textParts) {\r\n return this.__getterCache.textParts\r\n }\r\n return this.__getterCache.textParts = (() => {\r\n var {\r\n text: text\r\n } = this.props;\r\n return text ? text.split(\" \") : [\"\"]\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.text !== nextProps.text) {\r\n this.__getterCache.textParts = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props),\r\n textParts: this.textParts,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDateHeaderText.defaultProps = DateHeaderTextProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"allDay\", \"ariaLabel\", \"children\", \"className\", \"colSpan\", \"contentTemplateProps\", \"dateCellTemplate\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"isTimeCellTemplate\", \"isWeekDayCell\", \"splitText\", \"startDate\", \"text\", \"timeCellTemplate\", \"today\"];\r\nimport {\r\n createVNode,\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n CellBaseProps\r\n} from \"../../cell\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../../../utils/combine_classes\";\r\nimport {\r\n getGroupCellClasses\r\n} from \"../../../utils\";\r\nimport {\r\n DateHeaderText\r\n} from \"./dateHeaderText\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n props: {\r\n colSpan: colSpan,\r\n dateCellTemplate: DateCellTemplate,\r\n groupIndex: groupIndex,\r\n groups: groups,\r\n index: index,\r\n isTimeCellTemplate: isTimeCellTemplate,\r\n splitText: splitText,\r\n startDate: startDate,\r\n text: text,\r\n timeCellTemplate: TimeCellTemplate\r\n },\r\n useTemplate: useTemplate\r\n } = _ref;\r\n return createVNode(1, \"th\", classes, useTemplate ? createFragment([isTimeCellTemplate && TimeCellTemplate && TimeCellTemplate({\r\n data: {\r\n date: startDate,\r\n text: text,\r\n groups: groups,\r\n groupIndex: groupIndex\r\n },\r\n index: index\r\n }), !isTimeCellTemplate && DateCellTemplate && DateCellTemplate({\r\n data: {\r\n date: startDate,\r\n text: text,\r\n groups: groups,\r\n groupIndex: groupIndex\r\n },\r\n index: index\r\n })], 0) : createComponentVNode(2, DateHeaderText, {\r\n splitText: splitText,\r\n text: text\r\n }), 0, {\r\n colSpan: colSpan,\r\n title: text\r\n })\r\n};\r\nexport var DateHeaderCellProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(CellBaseProps), Object.getOwnPropertyDescriptors({\r\n today: false,\r\n colSpan: 1,\r\n isWeekDayCell: false,\r\n splitText: false,\r\n isTimeCellTemplate: false\r\n})));\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class DateHeaderCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get classes() {\r\n var {\r\n className: className,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n isWeekDayCell: isWeekDayCell,\r\n today: today\r\n } = this.props;\r\n var cellClasses = combineClasses({\r\n \"dx-scheduler-header-panel-cell\": true,\r\n \"dx-scheduler-cell-sizes-horizontal\": true,\r\n \"dx-scheduler-header-panel-current-time-cell\": today,\r\n \"dx-scheduler-header-panel-week-cell\": isWeekDayCell,\r\n [className]: !!className\r\n });\r\n return getGroupCellClasses(isFirstGroupCell, isLastGroupCell, cellClasses)\r\n }\r\n get useTemplate() {\r\n var {\r\n dateCellTemplate: dateCellTemplate,\r\n isTimeCellTemplate: isTimeCellTemplate,\r\n timeCellTemplate: timeCellTemplate\r\n } = this.props;\r\n return !isTimeCellTemplate && !!dateCellTemplate || isTimeCellTemplate && !!timeCellTemplate\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n timeCellTemplate: getTemplate(props.timeCellTemplate),\r\n dateCellTemplate: getTemplate(props.dateCellTemplate)\r\n }),\r\n classes: this.classes,\r\n useTemplate: this.useTemplate,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDateHeaderCell.defaultProps = DateHeaderCellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/utils/getThemeType.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isMaterial,\r\n isCompact,\r\n current\r\n} from \"../../ui/themes\";\r\nvar getThemeType = () => {\r\n var theme = current();\r\n return {\r\n isCompact: isCompact(theme),\r\n isMaterial: isMaterial(theme)\r\n }\r\n};\r\nexport default getThemeType;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/header_panel/date_header/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"dateCellTemplate\", \"dateHeaderData\", \"groupByDate\", \"groupOrientation\", \"groups\", \"timeCellTemplate\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"../../row\";\r\nimport {\r\n isHorizontalGroupingApplied\r\n} from \"../../../utils\";\r\nimport {\r\n DateHeaderCell\r\n} from \"./cell\";\r\nimport getThemeType from \"../../../../../../utils/getThemeType\";\r\nvar {\r\n isMaterial: isMaterial\r\n} = getThemeType();\r\nexport var viewFunction = _ref => {\r\n var {\r\n isHorizontalGrouping: isHorizontalGrouping,\r\n props: {\r\n dateCellTemplate: dateCellTemplate,\r\n dateHeaderData: dateHeaderData\r\n }\r\n } = _ref;\r\n var {\r\n dataMap: dataMap,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n rightVirtualCellWidth: rightVirtualCellWidth\r\n } = dateHeaderData;\r\n return createFragment(dataMap.map((dateHeaderRow, rowIndex) => createComponentVNode(2, Row, {\r\n className: \"dx-scheduler-header-row\",\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n isHeaderRow: true,\r\n children: dateHeaderRow.map(_ref2 => {\r\n var {\r\n colSpan: colSpan,\r\n endDate: endDate,\r\n groupIndex: groupIndex,\r\n groups: cellGroups,\r\n index: index,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n key: key,\r\n startDate: startDate,\r\n text: text,\r\n today: today\r\n } = _ref2;\r\n return createComponentVNode(2, DateHeaderCell, {\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: isHorizontalGrouping ? cellGroups : void 0,\r\n groupIndex: isHorizontalGrouping ? groupIndex : void 0,\r\n today: today,\r\n index: index,\r\n text: text,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n dateCellTemplate: dateCellTemplate,\r\n colSpan: colSpan,\r\n splitText: isMaterial\r\n }, key)\r\n })\r\n }, rowIndex.toString())), 0)\r\n};\r\nexport var DateHeaderLayoutProps = {\r\n groupOrientation: \"horizontal\",\r\n groupByDate: false,\r\n groups: Object.freeze([])\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class DateHeaderLayout extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get isHorizontalGrouping() {\r\n var {\r\n groupByDate: groupByDate,\r\n groupOrientation: groupOrientation,\r\n groups: groups\r\n } = this.props;\r\n return isHorizontalGroupingApplied(groups, groupOrientation) && !groupByDate\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dateCellTemplate: getTemplate(props.dateCellTemplate),\r\n timeCellTemplate: getTemplate(props.timeCellTemplate)\r\n }),\r\n isHorizontalGrouping: this.isHorizontalGrouping,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nDateHeaderLayout.defaultProps = DateHeaderLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/header_panel/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"dateCellTemplate\", \"dateHeaderData\", \"dateHeaderTemplate\", \"elementRef\", \"groupByDate\", \"groupOrientation\", \"groupPanelData\", \"groups\", \"height\", \"isRenderDateHeader\", \"resourceCellTemplate\", \"timeCellTemplate\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n isHorizontalGroupingApplied\r\n} from \"../../utils\";\r\nimport {\r\n GroupPanel,\r\n GroupPanelProps\r\n} from \"../group_panel/group_panel\";\r\nimport {\r\n DateHeaderLayout\r\n} from \"./date_header/layout\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n isHorizontalGrouping: isHorizontalGrouping,\r\n props: {\r\n dateCellTemplate: dateCellTemplate,\r\n dateHeaderData: dateHeaderData,\r\n dateHeaderTemplate: DateHeader,\r\n groupByDate: groupByDate,\r\n groupOrientation: groupOrientation,\r\n groupPanelData: groupPanelData,\r\n groups: groups,\r\n isRenderDateHeader: isRenderDateHeader,\r\n resourceCellTemplate: resourceCellTemplate,\r\n timeCellTemplate: timeCellTemplate\r\n }\r\n } = _ref;\r\n return createVNode(1, \"thead\", null, [isHorizontalGrouping && !groupByDate && createComponentVNode(2, GroupPanel, {\r\n groupPanelData: groupPanelData,\r\n groups: groups,\r\n groupByDate: groupByDate,\r\n groupOrientation: groupOrientation,\r\n resourceCellTemplate: resourceCellTemplate\r\n }), isRenderDateHeader && DateHeader({\r\n groupByDate: groupByDate,\r\n dateHeaderData: dateHeaderData,\r\n groupOrientation: groupOrientation,\r\n groups: groups,\r\n dateCellTemplate: dateCellTemplate,\r\n timeCellTemplate: timeCellTemplate\r\n }), groupByDate && createComponentVNode(2, GroupPanel, {\r\n groupPanelData: groupPanelData,\r\n groups: groups,\r\n groupByDate: groupByDate,\r\n groupOrientation: groupOrientation,\r\n resourceCellTemplate: resourceCellTemplate\r\n })], 0)\r\n};\r\nexport var HeaderPanelLayoutProps = Object.create(Object.prototype, _extends(Object.getOwnPropertyDescriptors(GroupPanelProps), Object.getOwnPropertyDescriptors({\r\n isRenderDateHeader: true,\r\n dateHeaderTemplate: DateHeaderLayout\r\n})));\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class HeaderPanelLayout extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get isHorizontalGrouping() {\r\n var {\r\n groupOrientation: groupOrientation,\r\n groups: groups\r\n } = this.props;\r\n return isHorizontalGroupingApplied(groups, groupOrientation)\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dateCellTemplate: getTemplate(props.dateCellTemplate),\r\n timeCellTemplate: getTemplate(props.timeCellTemplate),\r\n dateHeaderTemplate: getTemplate(props.dateHeaderTemplate),\r\n resourceCellTemplate: getTemplate(props.resourceCellTemplate)\r\n }),\r\n isHorizontalGrouping: this.isHorizontalGrouping,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nHeaderPanelLayout.defaultProps = HeaderPanelLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/header_panel/layout.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../core/component_registrator\";\r\nimport {\r\n HeaderPanel\r\n} from \"../../../../../component_wrapper/scheduler/header_panel\";\r\nimport {\r\n HeaderPanelLayout as HeaderPanelLayoutComponent\r\n} from \"./layout\";\r\nexport default class HeaderPanelLayout extends HeaderPanel {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"dateCellTemplate\", \"timeCellTemplate\", \"dateHeaderTemplate\", \"resourceCellTemplate\"],\r\n props: [\"dateHeaderData\", \"isRenderDateHeader\", \"dateCellTemplate\", \"timeCellTemplate\", \"dateHeaderTemplate\", \"groups\", \"groupOrientation\", \"groupPanelData\", \"groupByDate\", \"height\", \"className\", \"resourceCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return HeaderPanelLayoutComponent\r\n }\r\n}\r\nregisterComponent(\"dxHeaderPanelLayout\", HeaderPanelLayout);\r\n","/**\r\n * DevExtreme (esm/renovation/component_wrapper/scheduler/time_panel.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport Component from \"../common/component\";\r\nexport class TimePanel extends Component {\r\n _setOptionsByReference() {\r\n super._setOptionsByReference();\r\n this._optionsByReference = _extends({}, this._optionsByReference, {\r\n timeCellTemplate: true\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/time_panel/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"allDay\", \"ariaLabel\", \"children\", \"className\", \"contentTemplateProps\", \"endDate\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isLastGroupCell\", \"startDate\", \"text\", \"timeCellTemplate\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n CellBase as Cell,\r\n CellBaseProps\r\n} from \"../cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n className: className,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n text: text,\r\n timeCellTemplate: TimeCellTemplate\r\n },\r\n timeCellTemplateProps: timeCellTemplateProps\r\n } = _ref;\r\n return createComponentVNode(2, Cell, {\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n className: \"dx-scheduler-time-panel-cell dx-scheduler-cell-sizes-vertical \".concat(className),\r\n children: [!TimeCellTemplate && createVNode(1, \"div\", null, text, 0), !!TimeCellTemplate && TimeCellTemplate({\r\n index: timeCellTemplateProps.index,\r\n data: timeCellTemplateProps.data\r\n })]\r\n })\r\n};\r\nexport var TimePanelCellProps = CellBaseProps;\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class TimePanelCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n get timeCellTemplateProps() {\r\n if (void 0 !== this.__getterCache.timeCellTemplateProps) {\r\n return this.__getterCache.timeCellTemplateProps\r\n }\r\n return this.__getterCache.timeCellTemplateProps = (() => {\r\n var {\r\n groupIndex: groupIndex,\r\n groups: groups,\r\n index: index,\r\n startDate: startDate,\r\n text: text\r\n } = this.props;\r\n return {\r\n data: {\r\n date: startDate,\r\n groups: groups,\r\n groupIndex: groupIndex,\r\n text: text\r\n },\r\n index: index\r\n }\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.groupIndex !== nextProps.groupIndex || this.props.groups !== nextProps.groups || this.props.index !== nextProps.index || this.props.startDate !== nextProps.startDate || this.props.text !== nextProps.text) {\r\n this.__getterCache.timeCellTemplateProps = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n timeCellTemplate: getTemplate(props.timeCellTemplate)\r\n }),\r\n timeCellTemplateProps: this.timeCellTemplateProps,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nTimePanelCell.defaultProps = TimePanelCellProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/time_panel/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"groupOrientation\", \"tableRef\", \"timeCellTemplate\", \"timePanelData\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"../row\";\r\nimport {\r\n TimePanelCell as Cell\r\n} from \"./cell\";\r\nimport {\r\n CellBase\r\n} from \"../cell\";\r\nimport {\r\n Table\r\n} from \"../table\";\r\nimport {\r\n AllDayPanelTitle\r\n} from \"../date_table/all_day_panel/title\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n props: {\r\n tableRef: tableRef,\r\n timeCellTemplate: timeCellTemplate,\r\n timePanelData: timePanelData\r\n },\r\n restAttributes: restAttributes,\r\n topVirtualRowHeight: topVirtualRowHeight\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, Table, _extends({}, restAttributes, {\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n virtualCellsCount: 1,\r\n className: \"dx-scheduler-time-panel\",\r\n tableRef: tableRef,\r\n children: timePanelData.groupedData.map(_ref2 => {\r\n var {\r\n dateTable: dateTable,\r\n groupIndex: groupIndex,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n key: fragmentKey\r\n } = _ref2;\r\n return createFragment([isGroupedAllDayPanel && createComponentVNode(2, Row, {\r\n children: createComponentVNode(2, CellBase, {\r\n className: \"dx-scheduler-time-panel-title-cell\",\r\n children: createComponentVNode(2, AllDayPanelTitle)\r\n })\r\n }), dateTable.map(cell => {\r\n var {\r\n groups: groups,\r\n index: cellIndex,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n key: key,\r\n startDate: startDate,\r\n text: text\r\n } = cell;\r\n return createComponentVNode(2, Row, {\r\n className: \"dx-scheduler-time-panel-row\",\r\n children: createComponentVNode(2, Cell, {\r\n startDate: startDate,\r\n text: text,\r\n groups: groups,\r\n groupIndex: groupIndex,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n index: cellIndex,\r\n timeCellTemplate: timeCellTemplate\r\n })\r\n }, key)\r\n })], 0, fragmentKey)\r\n })\r\n })))\r\n};\r\nexport var TimePanelLayoutProps = {\r\n timePanelData: Object.freeze({\r\n groupedData: [],\r\n leftVirtualCellCount: 0,\r\n rightVirtualCellCount: 0,\r\n topVirtualRowCount: 0,\r\n bottomVirtualRowCount: 0\r\n })\r\n};\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class TimePanelTableLayout extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get topVirtualRowHeight() {\r\n var _this$props$timePanel;\r\n return null !== (_this$props$timePanel = this.props.timePanelData.topVirtualRowHeight) && void 0 !== _this$props$timePanel ? _this$props$timePanel : 0\r\n }\r\n get bottomVirtualRowHeight() {\r\n var _this$props$timePanel2;\r\n return null !== (_this$props$timePanel2 = this.props.timePanelData.bottomVirtualRowHeight) && void 0 !== _this$props$timePanel2 ? _this$props$timePanel2 : 0\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n timeCellTemplate: getTemplate(props.timeCellTemplate)\r\n }),\r\n topVirtualRowHeight: this.topVirtualRowHeight,\r\n bottomVirtualRowHeight: this.bottomVirtualRowHeight,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nTimePanelTableLayout.defaultProps = TimePanelLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/time_panel/layout.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../core/component_registrator\";\r\nimport {\r\n TimePanel\r\n} from \"../../../../../component_wrapper/scheduler/time_panel\";\r\nimport {\r\n TimePanelTableLayout as TimePanelTableLayoutComponent\r\n} from \"./layout\";\r\nexport default class TimePanelTableLayout extends TimePanel {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"timeCellTemplate\"],\r\n props: [\"groupOrientation\", \"timePanelData\", \"timeCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return TimePanelTableLayoutComponent\r\n }\r\n}\r\nregisterComponent(\"dxTimePanelTableLayout\", TimePanelTableLayout);\r\n","/**\r\n * DevExtreme (esm/__internal/m_draggable.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport positionUtils from \"../animation/position\";\r\nimport {\r\n locate,\r\n move\r\n} from \"../animation/translator\";\r\nimport registerComponent from \"../core/component_registrator\";\r\nimport domAdapter from \"../core/dom_adapter\";\r\nimport DOMComponent from \"../core/dom_component\";\r\nimport {\r\n getPublicElement\r\n} from \"../core/element\";\r\nimport $ from \"../core/renderer\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../core/templates/empty_template\";\r\nimport {\r\n noop,\r\n splitPair\r\n} from \"../core/utils/common\";\r\nimport {\r\n Deferred,\r\n fromPromise,\r\n when\r\n} from \"../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../core/utils/extend\";\r\nimport {\r\n dasherize\r\n} from \"../core/utils/inflector\";\r\nimport {\r\n getBoundingRect\r\n} from \"../core/utils/position\";\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getOuterWidth,\r\n getWidth\r\n} from \"../core/utils/size\";\r\nimport {\r\n quadToObject\r\n} from \"../core/utils/string\";\r\nimport {\r\n isFunction,\r\n isNumeric,\r\n isObject\r\n} from \"../core/utils/type\";\r\nimport {\r\n value as viewPort\r\n} from \"../core/utils/view_port\";\r\nimport {\r\n getWindow\r\n} from \"../core/utils/window\";\r\nimport eventsEngine from \"../events/core/events_engine\";\r\nimport {\r\n end as dragEventEnd,\r\n enter as dragEventEnter,\r\n leave as dragEventLeave,\r\n move as dragEventMove,\r\n start as dragEventStart\r\n} from \"../events/drag\";\r\nimport pointerEvents from \"../events/pointer\";\r\nimport {\r\n addNamespace,\r\n needSkipEvent\r\n} from \"../events/utils/index\";\r\nimport Animator from \"../ui/scroll_view/animator\";\r\nvar window = getWindow();\r\nvar KEYDOWN_EVENT = \"keydown\";\r\nvar DRAGGABLE = \"dxDraggable\";\r\nvar DRAGSTART_EVENT_NAME = addNamespace(dragEventStart, DRAGGABLE);\r\nvar DRAG_EVENT_NAME = addNamespace(dragEventMove, DRAGGABLE);\r\nvar DRAGEND_EVENT_NAME = addNamespace(dragEventEnd, DRAGGABLE);\r\nvar DRAG_ENTER_EVENT_NAME = addNamespace(dragEventEnter, DRAGGABLE);\r\nvar DRAGEND_LEAVE_EVENT_NAME = addNamespace(dragEventLeave, DRAGGABLE);\r\nvar POINTERDOWN_EVENT_NAME = addNamespace(pointerEvents.down, DRAGGABLE);\r\nvar KEYDOWN_EVENT_NAME = addNamespace(KEYDOWN_EVENT, DRAGGABLE);\r\nvar CLONE_CLASS = \"clone\";\r\nvar targetDraggable;\r\nvar sourceDraggable;\r\nvar ANONYMOUS_TEMPLATE_NAME = \"content\";\r\nvar getMousePosition = event => ({\r\n x: event.pageX - $(window).scrollLeft(),\r\n y: event.pageY - $(window).scrollTop()\r\n});\r\nvar GESTURE_COVER_CLASS = \"dx-gesture-cover\";\r\nvar OVERLAY_WRAPPER_CLASS = \"dx-overlay-wrapper\";\r\nvar OVERLAY_CONTENT_CLASS = \"dx-overlay-content\";\r\nclass ScrollHelper {\r\n constructor(orientation, component) {\r\n this._$scrollableAtPointer = null;\r\n this._preventScroll = true;\r\n this._component = component;\r\n if (\"vertical\" === orientation) {\r\n this._scrollValue = \"scrollTop\";\r\n this._overFlowAttr = \"overflowY\";\r\n this._sizeAttr = \"height\";\r\n this._scrollSizeProp = \"scrollHeight\";\r\n this._clientSizeProp = \"clientHeight\";\r\n this._limitProps = {\r\n start: \"top\",\r\n end: \"bottom\"\r\n }\r\n } else {\r\n this._scrollValue = \"scrollLeft\";\r\n this._overFlowAttr = \"overflowX\";\r\n this._sizeAttr = \"width\";\r\n this._scrollSizeProp = \"scrollWidth\";\r\n this._clientSizeProp = \"clientWidth\";\r\n this._limitProps = {\r\n start: \"left\",\r\n end: \"right\"\r\n }\r\n }\r\n }\r\n updateScrollable(elements, mousePosition) {\r\n var isScrollableFound = false;\r\n elements.some(element => {\r\n var $element = $(element);\r\n var isTargetOverOverlayWrapper = $element.hasClass(OVERLAY_WRAPPER_CLASS);\r\n var isTargetOverOverlayContent = $element.hasClass(OVERLAY_CONTENT_CLASS);\r\n if (isTargetOverOverlayWrapper || isTargetOverOverlayContent) {\r\n return true\r\n }\r\n isScrollableFound = this._trySetScrollable(element, mousePosition);\r\n return isScrollableFound\r\n });\r\n if (!isScrollableFound) {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0\r\n }\r\n }\r\n isScrolling() {\r\n return !!this._scrollSpeed\r\n }\r\n isScrollable($element) {\r\n return (\"auto\" === $element.css(this._overFlowAttr) || $element.hasClass(\"dx-scrollable-container\")) && $element.prop(this._scrollSizeProp) > Math.ceil(\"width\" === this._sizeAttr ? getWidth($element) : getHeight($element))\r\n }\r\n _trySetScrollable(element, mousePosition) {\r\n var $element = $(element);\r\n var distanceToBorders;\r\n var sensitivity = this._component.option(\"scrollSensitivity\");\r\n var isScrollable = this.isScrollable($element);\r\n if (isScrollable) {\r\n distanceToBorders = this._calculateDistanceToBorders($element, mousePosition);\r\n if (sensitivity > distanceToBorders[this._limitProps.start]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = -this._calculateScrollSpeed(distanceToBorders[this._limitProps.start]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else if (sensitivity > distanceToBorders[this._limitProps.end]) {\r\n if (!this._preventScroll) {\r\n this._scrollSpeed = this._calculateScrollSpeed(distanceToBorders[this._limitProps.end]);\r\n this._$scrollableAtPointer = $element\r\n }\r\n } else {\r\n isScrollable = false;\r\n this._preventScroll = false\r\n }\r\n }\r\n return isScrollable\r\n }\r\n _calculateDistanceToBorders($area, mousePosition) {\r\n var area = $area.get(0);\r\n var areaBoundingRect;\r\n if (area) {\r\n areaBoundingRect = getBoundingRect(area);\r\n return {\r\n left: mousePosition.x - areaBoundingRect.left,\r\n top: mousePosition.y - areaBoundingRect.top,\r\n right: areaBoundingRect.right - mousePosition.x,\r\n bottom: areaBoundingRect.bottom - mousePosition.y\r\n }\r\n }\r\n return {}\r\n }\r\n _calculateScrollSpeed(distance) {\r\n var component = this._component;\r\n var sensitivity = component.option(\"scrollSensitivity\");\r\n var maxSpeed = component.option(\"scrollSpeed\");\r\n return Math.ceil(Math.pow((sensitivity - distance) / sensitivity, 2) * maxSpeed)\r\n }\r\n scrollByStep() {\r\n if (this._$scrollableAtPointer && this._scrollSpeed) {\r\n if (this._$scrollableAtPointer.hasClass(\"dx-scrollable-container\")) {\r\n var $scrollable = this._$scrollableAtPointer.closest(\".dx-scrollable\");\r\n var scrollableInstance = $scrollable.data(\"dxScrollable\") || $scrollable.data(\"dxScrollView\");\r\n if (scrollableInstance) {\r\n var nextScrollPosition = scrollableInstance.scrollOffset()[this._limitProps.start] + this._scrollSpeed;\r\n scrollableInstance.scrollTo({\r\n [this._limitProps.start]: nextScrollPosition\r\n })\r\n }\r\n } else {\r\n var _nextScrollPosition = this._$scrollableAtPointer[this._scrollValue]() + this._scrollSpeed;\r\n this._$scrollableAtPointer[this._scrollValue](_nextScrollPosition)\r\n }\r\n var dragMoveArgs = this._component._dragMoveArgs;\r\n if (dragMoveArgs) {\r\n this._component._dragMoveHandler(dragMoveArgs)\r\n }\r\n }\r\n }\r\n reset() {\r\n this._$scrollableAtPointer = null;\r\n this._scrollSpeed = 0;\r\n this._preventScroll = true\r\n }\r\n isOutsideScrollable($scrollable, event) {\r\n if (!$scrollable) {\r\n return false\r\n }\r\n var scrollableSize = getBoundingRect($scrollable.get(0));\r\n var start = scrollableSize[this._limitProps.start];\r\n var size = scrollableSize[this._sizeAttr];\r\n var mousePosition = getMousePosition(event);\r\n var location = \"width\" === this._sizeAttr ? mousePosition.x : mousePosition.y;\r\n return location < start || location > start + size\r\n }\r\n}\r\nvar ScrollAnimator = Animator.inherit({\r\n ctor(strategy) {\r\n this.callBase();\r\n this._strategy = strategy\r\n },\r\n _step() {\r\n var horizontalScrollHelper = this._strategy._horizontalScrollHelper;\r\n var verticalScrollHelper = this._strategy._verticalScrollHelper;\r\n horizontalScrollHelper && horizontalScrollHelper.scrollByStep();\r\n verticalScrollHelper && verticalScrollHelper.scrollByStep()\r\n }\r\n});\r\nvar Draggable = DOMComponent.inherit({\r\n reset: noop,\r\n dragMove: noop,\r\n dragEnter: noop,\r\n dragLeave: noop,\r\n dragEnd(sourceEvent) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable._fireRemoveEvent(sourceEvent);\r\n return Deferred().resolve()\r\n },\r\n _fireRemoveEvent: noop,\r\n _getDefaultOptions() {\r\n return extend(this.callBase(), {\r\n onDragStart: null,\r\n onDragMove: null,\r\n onDragEnd: null,\r\n onDragEnter: null,\r\n onDragLeave: null,\r\n onDragCancel: null,\r\n onCancelByEsc: false,\r\n onDrop: null,\r\n immediate: true,\r\n dragDirection: \"both\",\r\n boundary: void 0,\r\n boundOffset: 0,\r\n allowMoveByClick: false,\r\n itemData: null,\r\n container: void 0,\r\n dragTemplate: void 0,\r\n contentTemplate: \"content\",\r\n handle: \"\",\r\n filter: \"\",\r\n clone: false,\r\n autoScroll: true,\r\n scrollSpeed: 30,\r\n scrollSensitivity: 60,\r\n group: void 0,\r\n data: void 0\r\n })\r\n },\r\n _setOptionsByReference() {\r\n this.callBase.apply(this, arguments);\r\n extend(this._optionsByReference, {\r\n component: true,\r\n group: true,\r\n itemData: true,\r\n data: true\r\n })\r\n },\r\n _init() {\r\n this.callBase();\r\n this._attachEventHandlers();\r\n this._scrollAnimator = new ScrollAnimator(this);\r\n this._horizontalScrollHelper = new ScrollHelper(\"horizontal\", this);\r\n this._verticalScrollHelper = new ScrollHelper(\"vertical\", this);\r\n this._initScrollTop = 0;\r\n this._initScrollLeft = 0\r\n },\r\n _normalizeCursorOffset(offset) {\r\n if (isObject(offset)) {\r\n offset = {\r\n h: offset.x,\r\n v: offset.y\r\n }\r\n }\r\n offset = splitPair(offset).map(value => parseFloat(value));\r\n return {\r\n left: offset[0],\r\n top: 1 === offset.length ? offset[0] : offset[1]\r\n }\r\n },\r\n _getNormalizedCursorOffset(offset, options) {\r\n if (isFunction(offset)) {\r\n offset = offset.call(this, options)\r\n }\r\n return this._normalizeCursorOffset(offset)\r\n },\r\n _calculateElementOffset(options) {\r\n var elementOffset;\r\n var dragElementOffset;\r\n var {\r\n event: event\r\n } = options;\r\n var $element = $(options.itemElement);\r\n var $dragElement = $(options.dragElement);\r\n var isCloned = this._dragElementIsCloned();\r\n var cursorOffset = this.option(\"cursorOffset\");\r\n var normalizedCursorOffset = {\r\n left: 0,\r\n top: 0\r\n };\r\n var currentLocate = this._initialLocate = locate($dragElement);\r\n if (isCloned || options.initialOffset || cursorOffset) {\r\n elementOffset = options.initialOffset || $element.offset();\r\n if (cursorOffset) {\r\n normalizedCursorOffset = this._getNormalizedCursorOffset(cursorOffset, options);\r\n if (isFinite(normalizedCursorOffset.left)) {\r\n elementOffset.left = event.pageX\r\n }\r\n if (isFinite(normalizedCursorOffset.top)) {\r\n elementOffset.top = event.pageY\r\n }\r\n }\r\n dragElementOffset = $dragElement.offset();\r\n elementOffset.top -= dragElementOffset.top + (normalizedCursorOffset.top || 0) - currentLocate.top;\r\n elementOffset.left -= dragElementOffset.left + (normalizedCursorOffset.left || 0) - currentLocate.left\r\n }\r\n return elementOffset\r\n },\r\n _initPosition(options) {\r\n var $dragElement = $(options.dragElement);\r\n var elementOffset = this._calculateElementOffset(options);\r\n if (elementOffset) {\r\n this._move(elementOffset, $dragElement)\r\n }\r\n this._startPosition = locate($dragElement)\r\n },\r\n _startAnimator() {\r\n if (!this._scrollAnimator.inProgress()) {\r\n this._scrollAnimator.start()\r\n }\r\n },\r\n _stopAnimator() {\r\n this._scrollAnimator.stop()\r\n },\r\n _addWidgetPrefix(className) {\r\n var componentName = this.NAME;\r\n return dasherize(componentName) + (className ? \"-\".concat(className) : \"\")\r\n },\r\n _getItemsSelector() {\r\n return this.option(\"filter\") || \"\"\r\n },\r\n _$content() {\r\n var $element = this.$element();\r\n var $wrapper = $element.children(\".dx-template-wrapper\");\r\n return $wrapper.length ? $wrapper : $element\r\n },\r\n _attachEventHandlers() {\r\n if (this.option(\"disabled\")) {\r\n return\r\n }\r\n var $element = this._$content();\r\n var itemsSelector = this._getItemsSelector();\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n var data = {\r\n direction: this.option(\"dragDirection\"),\r\n immediate: this.option(\"immediate\"),\r\n checkDropTarget: ($target, event) => {\r\n var targetGroup = this.option(\"group\");\r\n var sourceGroup = this._getSourceDraggable().option(\"group\");\r\n var $scrollable = this._getScrollable($target);\r\n if (this._verticalScrollHelper.isOutsideScrollable($scrollable, event) || this._horizontalScrollHelper.isOutsideScrollable($scrollable, event)) {\r\n return false\r\n }\r\n return sourceGroup && sourceGroup === targetGroup\r\n }\r\n };\r\n if (allowMoveByClick) {\r\n $element = this._getArea();\r\n eventsEngine.on($element, POINTERDOWN_EVENT_NAME, data, this._pointerDownHandler.bind(this))\r\n }\r\n if (\">\" === itemsSelector[0]) {\r\n itemsSelector = itemsSelector.slice(1)\r\n }\r\n eventsEngine.on($element, DRAGSTART_EVENT_NAME, itemsSelector, data, this._dragStartHandler.bind(this));\r\n eventsEngine.on($element, DRAG_EVENT_NAME, data, this._dragMoveHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_EVENT_NAME, data, this._dragEndHandler.bind(this));\r\n eventsEngine.on($element, DRAG_ENTER_EVENT_NAME, data, this._dragEnterHandler.bind(this));\r\n eventsEngine.on($element, DRAGEND_LEAVE_EVENT_NAME, data, this._dragLeaveHandler.bind(this));\r\n if (this.option(\"onCancelByEsc\")) {\r\n eventsEngine.on($element, KEYDOWN_EVENT_NAME, this._keydownHandler.bind(this))\r\n }\r\n },\r\n _dragElementIsCloned() {\r\n return this._$dragElement && this._$dragElement.hasClass(this._addWidgetPrefix(CLONE_CLASS))\r\n },\r\n _getDragTemplateArgs($element, $container) {\r\n return {\r\n container: getPublicElement($container),\r\n model: {\r\n itemData: this.option(\"itemData\"),\r\n itemElement: getPublicElement($element)\r\n }\r\n }\r\n },\r\n _createDragElement($element) {\r\n var result = $element;\r\n var clone = this.option(\"clone\");\r\n var $container = this._getContainer();\r\n var template = this.option(\"dragTemplate\");\r\n if (template) {\r\n template = this._getTemplate(template);\r\n result = $(\"<div>\").appendTo($container);\r\n template.render(this._getDragTemplateArgs($element, result))\r\n } else if (clone) {\r\n result = $(\"<div>\").appendTo($container);\r\n $element.clone().css({\r\n width: $element.css(\"width\"),\r\n height: $element.css(\"height\")\r\n }).appendTo(result)\r\n }\r\n return result.toggleClass(this._addWidgetPrefix(CLONE_CLASS), result.get(0) !== $element.get(0)).toggleClass(\"dx-rtl\", this.option(\"rtlEnabled\"))\r\n },\r\n _resetDragElement() {\r\n if (this._dragElementIsCloned()) {\r\n this._$dragElement.remove()\r\n } else {\r\n this._toggleDraggingClass(false)\r\n }\r\n this._$dragElement = null\r\n },\r\n _resetSourceElement() {\r\n this._toggleDragSourceClass(false);\r\n this._$sourceElement = null\r\n },\r\n _detachEventHandlers() {\r\n eventsEngine.off(this._$content(), \".\".concat(DRAGGABLE));\r\n eventsEngine.off(this._getArea(), \".\".concat(DRAGGABLE))\r\n },\r\n _move(position, $element) {\r\n move($element || this._$dragElement, position)\r\n },\r\n _getDraggableElement(e) {\r\n var $sourceElement = this._getSourceElement();\r\n if ($sourceElement) {\r\n return $sourceElement\r\n }\r\n var allowMoveByClick = this.option(\"allowMoveByClick\");\r\n if (allowMoveByClick) {\r\n return this.$element()\r\n }\r\n var $target = $(e && e.target);\r\n var itemsSelector = this._getItemsSelector();\r\n if (\">\" === itemsSelector[0]) {\r\n var $items = this._$content().find(itemsSelector);\r\n if (!$items.is($target)) {\r\n $target = $target.closest($items)\r\n }\r\n }\r\n return $target\r\n },\r\n _getSourceElement() {\r\n var draggable = this._getSourceDraggable();\r\n return draggable._$sourceElement\r\n },\r\n _pointerDownHandler(e) {\r\n if (needSkipEvent(e)) {\r\n return\r\n }\r\n var position = {};\r\n var $element = this.$element();\r\n var dragDirection = this.option(\"dragDirection\");\r\n if (\"horizontal\" === dragDirection || \"both\" === dragDirection) {\r\n position.left = e.pageX - $element.offset().left + locate($element).left - getWidth($element) / 2\r\n }\r\n if (\"vertical\" === dragDirection || \"both\" === dragDirection) {\r\n position.top = e.pageY - $element.offset().top + locate($element).top - getHeight($element) / 2\r\n }\r\n this._move(position, $element);\r\n this._getAction(\"onDragMove\")(this._getEventArgs(e))\r\n },\r\n _isValidElement(event, $element) {\r\n var handle = this.option(\"handle\");\r\n var $target = $(event.originalEvent && event.originalEvent.target);\r\n if (handle && !$target.closest(handle).length) {\r\n return false\r\n }\r\n if (!$element.length) {\r\n return false\r\n }\r\n return !$element.is(\".dx-state-disabled, .dx-state-disabled *\")\r\n },\r\n _dragStartHandler(e) {\r\n var $element = this._getDraggableElement(e);\r\n this.dragInProgress = true;\r\n if (!this._isValidElement(e, $element)) {\r\n e.cancel = true;\r\n return\r\n }\r\n if (this._$sourceElement) {\r\n return\r\n }\r\n var dragStartArgs = this._getDragStartArgs(e, $element);\r\n this._getAction(\"onDragStart\")(dragStartArgs);\r\n if (dragStartArgs.cancel) {\r\n e.cancel = true;\r\n return\r\n }\r\n this.option(\"itemData\", dragStartArgs.itemData);\r\n this._setSourceDraggable();\r\n this._$sourceElement = $element;\r\n var initialOffset = $element.offset();\r\n if (!this._hasClonedDraggable() && this.option(\"autoScroll\")) {\r\n this._initScrollTop = this._getScrollableScrollTop();\r\n this._initScrollLeft = this._getScrollableScrollLeft();\r\n initialOffset = this._getDraggableElementOffset(initialOffset.left, initialOffset.top)\r\n }\r\n var $dragElement = this._$dragElement = this._createDragElement($element);\r\n this._toggleDraggingClass(true);\r\n this._toggleDragSourceClass(true);\r\n this._setGestureCoverCursor($dragElement.children());\r\n var isFixedPosition = \"fixed\" === $dragElement.css(\"position\");\r\n this._initPosition(extend({}, dragStartArgs, {\r\n dragElement: $dragElement.get(0),\r\n initialOffset: isFixedPosition && initialOffset\r\n }));\r\n this._getAction(\"onDraggableElementShown\")(_extends(_extends({}, dragStartArgs), {\r\n dragElement: $dragElement\r\n }));\r\n var $area = this._getArea();\r\n var areaOffset = this._getAreaOffset($area);\r\n var boundOffset = this._getBoundOffset();\r\n var areaWidth = getOuterWidth($area);\r\n var areaHeight = getOuterHeight($area);\r\n var elementWidth = getWidth($dragElement);\r\n var elementHeight = getHeight($dragElement);\r\n var startOffset_left = $dragElement.offset().left - areaOffset.left,\r\n startOffset_top = $dragElement.offset().top - areaOffset.top;\r\n if ($area.length) {\r\n e.maxLeftOffset = startOffset_left - boundOffset.left;\r\n e.maxRightOffset = areaWidth - startOffset_left - elementWidth - boundOffset.right;\r\n e.maxTopOffset = startOffset_top - boundOffset.top;\r\n e.maxBottomOffset = areaHeight - startOffset_top - elementHeight - boundOffset.bottom\r\n }\r\n if (this.option(\"autoScroll\")) {\r\n this._startAnimator()\r\n }\r\n },\r\n _getAreaOffset($area) {\r\n var offset = $area && positionUtils.offset($area);\r\n return offset || {\r\n left: 0,\r\n top: 0\r\n }\r\n },\r\n _toggleDraggingClass(value) {\r\n this._$dragElement && this._$dragElement.toggleClass(this._addWidgetPrefix(\"dragging\"), value)\r\n },\r\n _toggleDragSourceClass(value, $element) {\r\n var $sourceElement = $element || this._$sourceElement;\r\n $sourceElement && $sourceElement.toggleClass(this._addWidgetPrefix(\"source\"), value)\r\n },\r\n _setGestureCoverCursor($element) {\r\n $(\".\".concat(GESTURE_COVER_CLASS)).css(\"cursor\", $element.css(\"cursor\"))\r\n },\r\n _getBoundOffset() {\r\n var boundOffset = this.option(\"boundOffset\");\r\n if (isFunction(boundOffset)) {\r\n boundOffset = boundOffset.call(this)\r\n }\r\n return quadToObject(boundOffset)\r\n },\r\n _getArea() {\r\n var area = this.option(\"boundary\");\r\n if (isFunction(area)) {\r\n area = area.call(this)\r\n }\r\n return $(area)\r\n },\r\n _getContainer() {\r\n var container = this.option(\"container\");\r\n if (void 0 === container) {\r\n container = viewPort()\r\n }\r\n return $(container)\r\n },\r\n _getDraggableElementOffset(initialOffsetX, initialOffsetY) {\r\n var _a, _b, _c, _d;\r\n var initScrollTop = this._initScrollTop;\r\n var initScrollLeft = this._initScrollLeft;\r\n var scrollTop = this._getScrollableScrollTop();\r\n var scrollLeft = this._getScrollableScrollLeft();\r\n var elementPosition = $(this.element()).css(\"position\");\r\n var isFixedPosition = \"fixed\" === elementPosition;\r\n var result = {\r\n left: (null !== (_b = null === (_a = this._startPosition) || void 0 === _a ? void 0 : _a.left) && void 0 !== _b ? _b : 0) + initialOffsetX,\r\n top: (null !== (_d = null === (_c = this._startPosition) || void 0 === _c ? void 0 : _c.top) && void 0 !== _d ? _d : 0) + initialOffsetY\r\n };\r\n if (isFixedPosition || this._hasClonedDraggable()) {\r\n return result\r\n }\r\n return {\r\n left: isNumeric(scrollLeft) ? result.left + scrollLeft - initScrollLeft : result.left,\r\n top: isNumeric(scrollTop) ? result.top + scrollTop - initScrollTop : result.top\r\n }\r\n },\r\n _hasClonedDraggable() {\r\n return this.option(\"clone\") || this.option(\"dragTemplate\")\r\n },\r\n _dragMoveHandler(e) {\r\n this._dragMoveArgs = e;\r\n if (!this._$dragElement) {\r\n e.cancel = true;\r\n return\r\n }\r\n var offset = this._getDraggableElementOffset(e.offset.x, e.offset.y);\r\n this._move(offset);\r\n this._updateScrollable(e);\r\n var eventArgs = this._getEventArgs(e);\r\n this._getAction(\"onDragMove\")(eventArgs);\r\n if (true === eventArgs.cancel) {\r\n return\r\n }\r\n var targetDraggable = this._getTargetDraggable();\r\n targetDraggable.dragMove(e, scrollBy)\r\n },\r\n _updateScrollable(e) {\r\n if (this.option(\"autoScroll\")) {\r\n var mousePosition = getMousePosition(e);\r\n var allObjects = domAdapter.elementsFromPoint(mousePosition.x, mousePosition.y, this.$element().get(0));\r\n this._verticalScrollHelper.updateScrollable(allObjects, mousePosition);\r\n this._horizontalScrollHelper.updateScrollable(allObjects, mousePosition)\r\n }\r\n },\r\n _getScrollable($element) {\r\n var $scrollable;\r\n $element.parents().toArray().some(parent => {\r\n var $parent = $(parent);\r\n if (this._horizontalScrollHelper.isScrollable($parent) || this._verticalScrollHelper.isScrollable($parent)) {\r\n $scrollable = $parent;\r\n return true\r\n }\r\n return false\r\n });\r\n return $scrollable\r\n },\r\n _getScrollableScrollTop() {\r\n var _a, _b;\r\n return null !== (_b = null === (_a = this._getScrollable($(this.element()))) || void 0 === _a ? void 0 : _a.scrollTop()) && void 0 !== _b ? _b : 0\r\n },\r\n _getScrollableScrollLeft() {\r\n var _a, _b;\r\n return null !== (_b = null === (_a = this._getScrollable($(this.element()))) || void 0 === _a ? void 0 : _a.scrollLeft()) && void 0 !== _b ? _b : 0\r\n },\r\n _defaultActionArgs() {\r\n var args = this.callBase.apply(this, arguments);\r\n var component = this.option(\"component\");\r\n if (component) {\r\n args.component = component;\r\n args.element = component.element()\r\n }\r\n return args\r\n },\r\n _getEventArgs(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n var targetDraggable = this._getTargetDraggable();\r\n return {\r\n event: e,\r\n itemData: sourceDraggable.option(\"itemData\"),\r\n itemElement: getPublicElement(sourceDraggable._$sourceElement),\r\n fromComponent: sourceDraggable.option(\"component\") || sourceDraggable,\r\n toComponent: targetDraggable.option(\"component\") || targetDraggable,\r\n fromData: sourceDraggable.option(\"data\"),\r\n toData: targetDraggable.option(\"data\")\r\n }\r\n },\r\n _getDragStartArgs(e, $itemElement) {\r\n var args = this._getEventArgs(e);\r\n return {\r\n event: args.event,\r\n itemData: args.itemData,\r\n itemElement: $itemElement,\r\n fromData: args.fromData\r\n }\r\n },\r\n _revertItemToInitialPosition() {\r\n !this._dragElementIsCloned() && this._move(this._initialLocate, this._$sourceElement)\r\n },\r\n _dragEndHandler(e) {\r\n var d = Deferred();\r\n var dragEndEventArgs = this._getEventArgs(e);\r\n var dropEventArgs = this._getEventArgs(e);\r\n var targetDraggable = this._getTargetDraggable();\r\n var needRevertPosition = true;\r\n this.dragInProgress = false;\r\n try {\r\n this._getAction(\"onDragEnd\")(dragEndEventArgs)\r\n } finally {\r\n when(fromPromise(dragEndEventArgs.cancel)).done(cancel => {\r\n if (!cancel) {\r\n if (targetDraggable !== this) {\r\n targetDraggable._getAction(\"onDrop\")(dropEventArgs)\r\n }\r\n if (!dropEventArgs.cancel) {\r\n needRevertPosition = false;\r\n when(fromPromise(targetDraggable.dragEnd(dragEndEventArgs))).always(d.resolve);\r\n return\r\n }\r\n }\r\n d.resolve()\r\n }).fail(d.resolve);\r\n d.done(() => {\r\n if (needRevertPosition) {\r\n this._revertItemToInitialPosition()\r\n }\r\n this._resetDragOptions(targetDraggable)\r\n })\r\n }\r\n },\r\n _isTargetOverAnotherDraggable(e) {\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (this === sourceDraggable) {\r\n return false\r\n }\r\n var $dragElement = sourceDraggable._$dragElement;\r\n var $sourceDraggableElement = sourceDraggable.$element();\r\n var $targetDraggableElement = this.$element();\r\n var mousePosition = getMousePosition(e);\r\n var elements = domAdapter.elementsFromPoint(mousePosition.x, mousePosition.y, this.element());\r\n var firstWidgetElement = elements.filter(element => {\r\n var $element = $(element);\r\n if ($element.hasClass(this._addWidgetPrefix())) {\r\n return !$element.closest($dragElement).length\r\n }\r\n return false\r\n })[0];\r\n var $sourceElement = this._getSourceElement();\r\n var isTargetOverItself = firstWidgetElement === $sourceDraggableElement.get(0);\r\n var isTargetOverNestedDraggable = $(firstWidgetElement).closest($sourceElement).length;\r\n return !firstWidgetElement || firstWidgetElement === $targetDraggableElement.get(0) && !isTargetOverItself && !isTargetOverNestedDraggable\r\n },\r\n _dragEnterHandler(e) {\r\n this._fireDragEnterEvent(e);\r\n if (this._isTargetOverAnotherDraggable(e)) {\r\n this._setTargetDraggable()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragEnter(e)\r\n },\r\n _dragLeaveHandler(e) {\r\n this._fireDragLeaveEvent(e);\r\n this._resetTargetDraggable();\r\n if (this !== this._getSourceDraggable()) {\r\n this.reset()\r\n }\r\n var sourceDraggable = this._getSourceDraggable();\r\n sourceDraggable.dragLeave(e)\r\n },\r\n _keydownHandler(e) {\r\n if (this.dragInProgress && \"Escape\" === e.key) {\r\n this._keydownEscapeHandler(e)\r\n }\r\n },\r\n _keydownEscapeHandler(e) {\r\n var $sourceElement = this._getSourceElement();\r\n if (!$sourceElement) {\r\n return\r\n }\r\n var dragCancelEventArgs = this._getEventArgs(e);\r\n this._getAction(\"onDragCancel\")(dragCancelEventArgs);\r\n if (dragCancelEventArgs.cancel) {\r\n return\r\n }\r\n this.dragInProgress = false;\r\n null === sourceDraggable || void 0 === sourceDraggable ? void 0 : sourceDraggable._toggleDraggingClass(false);\r\n this._detachEventHandlers();\r\n this._revertItemToInitialPosition();\r\n var targetDraggable = this._getTargetDraggable();\r\n this._resetDragOptions(targetDraggable);\r\n this._attachEventHandlers()\r\n },\r\n _getAction(name) {\r\n return this[\"_\".concat(name, \"Action\")] || this._createActionByOption(name)\r\n },\r\n _getAnonymousTemplateName: () => ANONYMOUS_TEMPLATE_NAME,\r\n _initTemplates() {\r\n if (!this.option(\"contentTemplate\")) {\r\n return\r\n }\r\n this._templateManager.addDefaultTemplates({\r\n content: new EmptyTemplate\r\n });\r\n this.callBase.apply(this, arguments)\r\n },\r\n _render() {\r\n this.callBase();\r\n this.$element().addClass(this._addWidgetPrefix());\r\n var transclude = this._templateManager.anonymousTemplateName === this.option(\"contentTemplate\");\r\n var template = this._getTemplateByOption(\"contentTemplate\");\r\n if (template) {\r\n $(template.render({\r\n container: this.element(),\r\n transclude: transclude\r\n }))\r\n }\r\n },\r\n _optionChanged(args) {\r\n var {\r\n name: name\r\n } = args;\r\n switch (name) {\r\n case \"onDragStart\":\r\n case \"onDragMove\":\r\n case \"onDragEnd\":\r\n case \"onDrop\":\r\n case \"onDragEnter\":\r\n case \"onDragLeave\":\r\n case \"onDragCancel\":\r\n case \"onDraggableElementShown\":\r\n this[\"_\".concat(name, \"Action\")] = this._createActionByOption(name);\r\n break;\r\n case \"dragTemplate\":\r\n case \"contentTemplate\":\r\n case \"container\":\r\n case \"clone\":\r\n break;\r\n case \"allowMoveByClick\":\r\n case \"dragDirection\":\r\n case \"disabled\":\r\n case \"boundary\":\r\n case \"filter\":\r\n case \"immediate\":\r\n this._resetDragElement();\r\n this._detachEventHandlers();\r\n this._attachEventHandlers();\r\n break;\r\n case \"onCancelByEsc\":\r\n this._keydownHandler();\r\n break;\r\n case \"autoScroll\":\r\n this._verticalScrollHelper.reset();\r\n this._horizontalScrollHelper.reset();\r\n break;\r\n case \"scrollSensitivity\":\r\n case \"scrollSpeed\":\r\n case \"boundOffset\":\r\n case \"handle\":\r\n case \"group\":\r\n case \"data\":\r\n case \"itemData\":\r\n break;\r\n default:\r\n this.callBase(args)\r\n }\r\n },\r\n _getTargetDraggable() {\r\n return targetDraggable || this\r\n },\r\n _getSourceDraggable() {\r\n return sourceDraggable || this\r\n },\r\n _setTargetDraggable() {\r\n var currentGroup = this.option(\"group\");\r\n var sourceDraggable = this._getSourceDraggable();\r\n if (currentGroup && currentGroup === sourceDraggable.option(\"group\")) {\r\n targetDraggable = this\r\n }\r\n },\r\n _setSourceDraggable() {\r\n sourceDraggable = this\r\n },\r\n _resetSourceDraggable() {\r\n sourceDraggable = null\r\n },\r\n _resetTargetDraggable() {\r\n targetDraggable = null\r\n },\r\n _resetDragOptions(targetDraggable) {\r\n this.reset();\r\n targetDraggable.reset();\r\n this._stopAnimator();\r\n this._horizontalScrollHelper.reset();\r\n this._verticalScrollHelper.reset();\r\n this._resetDragElement();\r\n this._resetSourceElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable()\r\n },\r\n _dispose() {\r\n this.callBase();\r\n this._detachEventHandlers();\r\n this._resetDragElement();\r\n this._resetTargetDraggable();\r\n this._resetSourceDraggable();\r\n this._$sourceElement = null;\r\n this._stopAnimator()\r\n },\r\n _fireDragEnterEvent(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragEnter\")(args)\r\n },\r\n _fireDragLeaveEvent(sourceEvent) {\r\n var args = this._getEventArgs(sourceEvent);\r\n this._getAction(\"onDragLeave\")(args)\r\n }\r\n});\r\nregisterComponent(DRAGGABLE, Draggable);\r\nexport default Draggable;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/base/m_widget_observer.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Widget from \"../../../ui/widget/ui.widget\";\r\nclass WidgetObserver extends Widget {\r\n notifyObserver(subject, args) {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n observer.fire(subject, args)\r\n }\r\n }\r\n invoke() {\r\n var observer = this.option(\"observer\");\r\n if (observer) {\r\n return observer.fire.apply(observer, arguments)\r\n }\r\n }\r\n}\r\nexport default WidgetObserver;\r\n","/**\r\n * DevExtreme (esm/ui/draggable.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Draggable from \"../__internal/m_draggable\";\r\nexport default Draggable;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_appointment_drag_behavior.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n Deferred\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport Draggable from \"../../ui/draggable\";\r\nimport {\r\n LIST_ITEM_DATA_KEY\r\n} from \"./m_constants\";\r\nimport {\r\n isSchedulerComponent\r\n} from \"./utils/is_scheduler_component\";\r\nvar APPOINTMENT_ITEM_CLASS = \"dx-scheduler-appointment\";\r\nexport default class AppointmentDragBehavior {\r\n constructor(scheduler) {\r\n this.scheduler = scheduler;\r\n this.workspace = this.scheduler._workSpace;\r\n this.appointments = this.scheduler._appointments;\r\n this.initialPosition = {\r\n left: 0,\r\n top: 0\r\n };\r\n this.appointmentInfo = null;\r\n this.dragBetweenComponentsPromise = null\r\n }\r\n isAllDay(appointment) {\r\n return appointment.data(\"dxAppointmentSettings\").allDay\r\n }\r\n onDragStart(e) {\r\n var {\r\n itemSettings: itemSettings,\r\n itemData: itemData,\r\n initialPosition: initialPosition\r\n } = e;\r\n this.initialPosition = initialPosition;\r\n this.appointmentInfo = {\r\n appointment: itemData,\r\n settings: itemSettings\r\n };\r\n this.appointments.notifyObserver(\"hideAppointmentTooltip\")\r\n }\r\n onDragMove(e) {\r\n if (e.fromComponent !== e.toComponent) {\r\n this.appointments.notifyObserver(\"removeDroppableCellClass\")\r\n }\r\n }\r\n getAppointmentElement(e) {\r\n var itemElement = e.event.data && e.event.data.itemElement || e.itemElement;\r\n return $(itemElement)\r\n }\r\n onDragEnd(event) {\r\n var element = this.getAppointmentElement(event);\r\n var rawAppointment = this.appointments._getItemData(element);\r\n var container = this.appointments._getAppointmentContainer(this.isAllDay(element));\r\n container.append(element);\r\n var newCellIndex = this.workspace.getDroppableCellIndex();\r\n var oldCellIndex = this.workspace.getCellIndexByCoordinates(this.initialPosition);\r\n this.appointments.notifyObserver(\"updateAppointmentAfterDrag\", {\r\n event: event,\r\n element: element,\r\n rawAppointment: rawAppointment,\r\n newCellIndex: newCellIndex,\r\n oldCellIndex: oldCellIndex\r\n })\r\n }\r\n onDragCancel() {\r\n this.removeDroppableClasses()\r\n }\r\n getItemData(appointmentElement) {\r\n var dataFromTooltip = $(appointmentElement).data(LIST_ITEM_DATA_KEY);\r\n var itemDataFromTooltip = null === dataFromTooltip || void 0 === dataFromTooltip ? void 0 : dataFromTooltip.appointment;\r\n var itemDataFromGrid = this.appointments._getItemData(appointmentElement);\r\n return itemDataFromTooltip || itemDataFromGrid\r\n }\r\n getItemSettings(appointment) {\r\n var itemData = $(appointment).data(LIST_ITEM_DATA_KEY);\r\n return itemData && itemData.settings || []\r\n }\r\n createDragStartHandler(options, appointmentDragging) {\r\n return e => {\r\n e.itemData = this.getItemData(e.itemElement);\r\n e.itemSettings = this.getItemSettings(e.itemElement);\r\n appointmentDragging.onDragStart && appointmentDragging.onDragStart(e);\r\n if (!e.cancel) {\r\n options.onDragStart(e)\r\n }\r\n }\r\n }\r\n createDragMoveHandler(options, appointmentDragging) {\r\n return e => {\r\n appointmentDragging.onDragMove && appointmentDragging.onDragMove(e);\r\n if (!e.cancel) {\r\n options.onDragMove(e)\r\n }\r\n }\r\n }\r\n createDragEndHandler(options, appointmentDragging) {\r\n return e => {\r\n var updatedData = this.appointments.invoke(\"getUpdatedData\", e.itemData);\r\n this.appointmentInfo = null;\r\n e.toItemData = extend({}, e.itemData, updatedData);\r\n appointmentDragging.onDragEnd && appointmentDragging.onDragEnd(e);\r\n if (!e.cancel) {\r\n options.onDragEnd(e);\r\n if (e.fromComponent !== e.toComponent) {\r\n appointmentDragging.onRemove && appointmentDragging.onRemove(e)\r\n }\r\n }\r\n if (true === e.cancel) {\r\n this.removeDroppableClasses()\r\n }\r\n if (true !== e.cancel && isSchedulerComponent(e.toComponent)) {\r\n var targetDragBehavior = e.toComponent._getDragBehavior();\r\n targetDragBehavior.dragBetweenComponentsPromise = new Deferred\r\n }\r\n }\r\n }\r\n createDropHandler(appointmentDragging) {\r\n return e => {\r\n var updatedData = this.appointments.invoke(\"getUpdatedData\", e.itemData);\r\n e.itemData = extend({}, e.itemData, updatedData);\r\n if (e.fromComponent !== e.toComponent) {\r\n appointmentDragging.onAdd && appointmentDragging.onAdd(e)\r\n }\r\n if (this.dragBetweenComponentsPromise) {\r\n this.dragBetweenComponentsPromise.resolve()\r\n }\r\n }\r\n }\r\n addTo(container, config) {\r\n var appointmentDragging = this.scheduler.option(\"appointmentDragging\") || {};\r\n var options = extend({\r\n component: this.scheduler,\r\n contentTemplate: null,\r\n filter: \".\".concat(APPOINTMENT_ITEM_CLASS),\r\n immediate: false,\r\n onDragStart: this.onDragStart.bind(this),\r\n onDragMove: this.onDragMove.bind(this),\r\n onDragEnd: this.onDragEnd.bind(this),\r\n onDragCancel: this.onDragCancel.bind(this)\r\n }, config);\r\n this.appointments._createComponent(container, Draggable, extend({}, options, appointmentDragging, {\r\n onDragStart: this.createDragStartHandler(options, appointmentDragging),\r\n onDragMove: this.createDragMoveHandler(options, appointmentDragging),\r\n onDragEnd: this.createDragEndHandler(options, appointmentDragging),\r\n onDrop: this.createDropHandler(appointmentDragging),\r\n onCancelByEsc: true\r\n }))\r\n }\r\n updateDragSource(appointment, settings) {\r\n var {\r\n appointmentInfo: appointmentInfo\r\n } = this;\r\n if (appointmentInfo || appointment) {\r\n var currentAppointment = appointment || appointmentInfo.appointment;\r\n var currentSettings = settings || appointmentInfo.settings;\r\n this.appointments._setDragSourceAppointment(currentAppointment, currentSettings)\r\n }\r\n }\r\n removeDroppableClasses() {\r\n this.appointments._removeDragSourceClassFromDraggedAppointment();\r\n this.workspace.removeDroppableCellClass()\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/utils/is_scheduler_component.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nvar schedulerComponentName = \"dxScheduler\";\r\nexport function isSchedulerComponent(component) {\r\n return component.NAME === schedulerComponentName\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/shaders/m_current_time_shader.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nvar DATE_TIME_SHADER_CLASS = \"dx-scheduler-date-time-shader\";\r\nclass CurrentTimeShader {\r\n constructor(_workSpace) {\r\n this._workSpace = _workSpace;\r\n this._$container = this._workSpace._dateTableScrollable.$content()\r\n }\r\n render() {\r\n this.initShaderElements();\r\n this.renderShader();\r\n this._shader.forEach(shader => {\r\n this._$container.append(shader)\r\n })\r\n }\r\n initShaderElements() {\r\n this._$shader = this.createShader();\r\n this._shader = [];\r\n this._shader.push(this._$shader)\r\n }\r\n renderShader() {}\r\n createShader() {\r\n return $(\"<div>\").addClass(DATE_TIME_SHADER_CLASS)\r\n }\r\n clean() {\r\n this._$container && this._$container.find(\".\".concat(DATE_TIME_SHADER_CLASS)).remove()\r\n }\r\n}\r\nexport default CurrentTimeShader;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/shaders/m_current_time_shader_vertical.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n setHeight,\r\n setWidth\r\n} from \"../../../core/utils/size\";\r\nimport CurrentTimeShader from \"./m_current_time_shader\";\r\nvar DATE_TIME_SHADER_ALL_DAY_CLASS = \"dx-scheduler-date-time-shader-all-day\";\r\nvar DATE_TIME_SHADER_TOP_CLASS = \"dx-scheduler-date-time-shader-top\";\r\nvar DATE_TIME_SHADER_BOTTOM_CLASS = \"dx-scheduler-date-time-shader-bottom\";\r\nclass VerticalCurrentTimeShader extends CurrentTimeShader {\r\n renderShader() {\r\n var shaderHeight = this._getShaderHeight();\r\n var maxHeight = this._getShaderMaxHeight();\r\n var isSolidShader = shaderHeight > maxHeight;\r\n if (shaderHeight > maxHeight) {\r\n shaderHeight = maxHeight\r\n }\r\n setHeight(this._$shader, shaderHeight);\r\n var groupCount = this._workSpace._getGroupCount() || 1;\r\n if (this._workSpace.isGroupedByDate()) {\r\n this._renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)\r\n } else {\r\n this._renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader)\r\n }\r\n }\r\n _renderShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) {\r\n for (var i = 0; i < groupCount; i++) {\r\n var shaderWidth = this._getShaderWidth(i);\r\n this._renderTopShader(this._$shader, shaderHeight, shaderWidth, i);\r\n !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, shaderWidth, i);\r\n this._renderAllDayShader(shaderWidth, i)\r\n }\r\n }\r\n _renderGroupedByDateShaderParts(groupCount, shaderHeight, maxHeight, isSolidShader) {\r\n var shaderWidth = this._getShaderWidth(0);\r\n var bottomShaderWidth = shaderWidth - this._workSpace.getCellWidth();\r\n if (shaderHeight < 0) {\r\n shaderHeight = 0;\r\n bottomShaderWidth = shaderWidth\r\n }\r\n this._renderTopShader(this._$shader, shaderHeight, shaderWidth * groupCount, 0);\r\n !isSolidShader && this._renderBottomShader(this._$shader, maxHeight, shaderHeight, bottomShaderWidth * groupCount + this._workSpace.getCellWidth(), 0);\r\n this._renderAllDayShader(shaderWidth * groupCount, 0)\r\n }\r\n _renderTopShader($shader, height, width, i) {\r\n this._$topShader = $(\"<div>\").addClass(DATE_TIME_SHADER_TOP_CLASS);\r\n if (width) {\r\n setWidth(this._$topShader, width)\r\n }\r\n if (height) {\r\n setHeight(this._$topShader, height)\r\n }\r\n this._$topShader.css(\"marginTop\", this._getShaderTopOffset(i));\r\n this._$topShader.css(\"left\", this._getShaderOffset(i, width));\r\n $shader.append(this._$topShader)\r\n }\r\n _renderBottomShader($shader, maxHeight, height, width, i) {\r\n this._$bottomShader = $(\"<div>\").addClass(DATE_TIME_SHADER_BOTTOM_CLASS);\r\n var shaderWidth = height < 0 ? width : width - this._workSpace.getCellWidth();\r\n var shaderHeight = height < 0 ? maxHeight : maxHeight - height;\r\n setWidth(this._$bottomShader, shaderWidth);\r\n setHeight(this._$bottomShader, shaderHeight);\r\n this._$bottomShader.css(\"left\", this._getShaderOffset(i, width - this._workSpace.getCellWidth()));\r\n $shader.append(this._$bottomShader)\r\n }\r\n _renderAllDayShader(shaderWidth, i) {\r\n if (this._workSpace.option(\"showAllDayPanel\")) {\r\n this._$allDayIndicator = $(\"<div>\").addClass(DATE_TIME_SHADER_ALL_DAY_CLASS);\r\n setHeight(this._$allDayIndicator, this._workSpace.getAllDayHeight());\r\n setWidth(this._$allDayIndicator, shaderWidth);\r\n this._$allDayIndicator.css(\"left\", this._getShaderOffset(i, shaderWidth));\r\n this._workSpace._$allDayPanel.prepend(this._$allDayIndicator)\r\n }\r\n }\r\n _getShaderOffset(i, width) {\r\n return this._workSpace.getGroupedStrategy().getShaderOffset(i, width)\r\n }\r\n _getShaderTopOffset(i) {\r\n return this._workSpace.getGroupedStrategy().getShaderTopOffset(i)\r\n }\r\n _getShaderHeight() {\r\n return this._workSpace.getGroupedStrategy().getShaderHeight()\r\n }\r\n _getShaderMaxHeight() {\r\n return this._workSpace.getGroupedStrategy().getShaderMaxHeight()\r\n }\r\n _getShaderWidth(i) {\r\n return this._workSpace.getGroupedStrategy().getShaderWidth(i)\r\n }\r\n clean() {\r\n super.clean();\r\n this._workSpace && this._workSpace._$allDayPanel && this._workSpace._$allDayPanel.find(\".\".concat(DATE_TIME_SHADER_ALL_DAY_CLASS)).remove()\r\n }\r\n}\r\nexport default VerticalCurrentTimeShader;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_cache.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nexport class Cache {\r\n constructor() {\r\n this._cache = new Map\r\n }\r\n get size() {\r\n return this._cache.size\r\n }\r\n clear() {\r\n this._cache.clear()\r\n }\r\n get(name, callback) {\r\n if (!this._cache.has(name) && callback) {\r\n this.set(name, callback())\r\n }\r\n return this._cache.get(name)\r\n }\r\n set(name, value) {\r\n isDefined(value) && this._cache.set(name, value)\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_cells_selection_controller.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n isDateAndTimeView\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nexport class CellsSelectionController {\r\n handleArrowClick(options) {\r\n var {\r\n key: key,\r\n focusedCellPosition: focusedCellPosition,\r\n edgeIndices: edgeIndices,\r\n getCellDataByPosition: getCellDataByPosition,\r\n isAllDayPanelCell: isAllDayPanelCell\r\n } = options;\r\n var nextCellIndices;\r\n switch (key) {\r\n case \"down\":\r\n nextCellIndices = this.getCellFromNextRowPosition(focusedCellPosition, \"next\", edgeIndices);\r\n break;\r\n case \"up\":\r\n nextCellIndices = this.getCellFromNextRowPosition(focusedCellPosition, \"prev\", edgeIndices);\r\n break;\r\n case \"left\":\r\n nextCellIndices = this.getCellFromNextColumnPosition(_extends(_extends({}, options), {\r\n direction: \"prev\"\r\n }));\r\n break;\r\n case \"right\":\r\n nextCellIndices = this.getCellFromNextColumnPosition(_extends(_extends({}, options), {\r\n direction: \"next\"\r\n }))\r\n }\r\n var currentCellData = getCellDataByPosition(nextCellIndices.rowIndex, nextCellIndices.columnIndex, isAllDayPanelCell);\r\n return this.moveToCell(_extends(_extends({}, options), {\r\n currentCellData: currentCellData\r\n }))\r\n }\r\n getCellFromNextRowPosition(focusedCellPosition, direction, edgeIndices) {\r\n var {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n } = focusedCellPosition;\r\n var deltaPosition = \"next\" === direction ? 1 : -1;\r\n var nextRowIndex = rowIndex + deltaPosition;\r\n var validRowIndex = nextRowIndex >= 0 && nextRowIndex <= edgeIndices.lastRowIndex ? nextRowIndex : rowIndex;\r\n return {\r\n columnIndex: columnIndex,\r\n rowIndex: validRowIndex\r\n }\r\n }\r\n getCellFromNextColumnPosition(options) {\r\n var {\r\n focusedCellPosition: focusedCellPosition,\r\n direction: direction,\r\n edgeIndices: edgeIndices,\r\n isRTL: isRTL,\r\n isGroupedByDate: isGroupedByDate,\r\n groupCount: groupCount,\r\n isMultiSelection: isMultiSelection,\r\n viewType: viewType\r\n } = options;\r\n var {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n } = focusedCellPosition;\r\n var {\r\n firstColumnIndex: firstColumnIndex,\r\n lastColumnIndex: lastColumnIndex,\r\n firstRowIndex: firstRowIndex,\r\n lastRowIndex: lastRowIndex\r\n } = edgeIndices;\r\n var step = isGroupedByDate && isMultiSelection ? groupCount : 1;\r\n var sign = isRTL ? -1 : 1;\r\n var deltaColumnIndex = \"next\" === direction ? sign * step : -1 * sign * step;\r\n var nextColumnIndex = columnIndex + deltaColumnIndex;\r\n var isValidColumnIndex = nextColumnIndex >= firstColumnIndex && nextColumnIndex <= lastColumnIndex;\r\n if (isValidColumnIndex) {\r\n return {\r\n columnIndex: nextColumnIndex,\r\n rowIndex: rowIndex\r\n }\r\n }\r\n return isDateAndTimeView(viewType) ? focusedCellPosition : this._processEdgeCell({\r\n nextColumnIndex: nextColumnIndex,\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex,\r\n firstColumnIndex: firstColumnIndex,\r\n lastColumnIndex: lastColumnIndex,\r\n firstRowIndex: firstRowIndex,\r\n lastRowIndex: lastRowIndex,\r\n step: step\r\n })\r\n }\r\n _processEdgeCell(options) {\r\n var {\r\n nextColumnIndex: nextColumnIndex,\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex,\r\n firstColumnIndex: firstColumnIndex,\r\n lastColumnIndex: lastColumnIndex,\r\n firstRowIndex: firstRowIndex,\r\n lastRowIndex: lastRowIndex,\r\n step: step\r\n } = options;\r\n var validColumnIndex = nextColumnIndex;\r\n var validRowIndex = rowIndex;\r\n var isLeftEdgeCell = nextColumnIndex < firstColumnIndex;\r\n var isRightEdgeCell = nextColumnIndex > lastColumnIndex;\r\n if (isLeftEdgeCell) {\r\n var columnIndexInNextRow = lastColumnIndex - (step - columnIndex % step - 1);\r\n var nextRowIndex = rowIndex - 1;\r\n var isValidRowIndex = nextRowIndex >= firstRowIndex;\r\n validRowIndex = isValidRowIndex ? nextRowIndex : rowIndex;\r\n validColumnIndex = isValidRowIndex ? columnIndexInNextRow : columnIndex\r\n }\r\n if (isRightEdgeCell) {\r\n var _columnIndexInNextRow = firstColumnIndex + columnIndex % step;\r\n var _nextRowIndex = rowIndex + 1;\r\n var _isValidRowIndex = _nextRowIndex <= lastRowIndex;\r\n validRowIndex = _isValidRowIndex ? _nextRowIndex : rowIndex;\r\n validColumnIndex = _isValidRowIndex ? _columnIndexInNextRow : columnIndex\r\n }\r\n return {\r\n columnIndex: validColumnIndex,\r\n rowIndex: validRowIndex\r\n }\r\n }\r\n moveToCell(options) {\r\n var {\r\n isMultiSelection: isMultiSelection,\r\n isMultiSelectionAllowed: isMultiSelectionAllowed,\r\n focusedCellData: focusedCellData,\r\n currentCellData: currentCellData\r\n } = options;\r\n var isValidMultiSelection = isMultiSelection && isMultiSelectionAllowed;\r\n var nextFocusedCellData = isValidMultiSelection ? this._getNextCellData(currentCellData, focusedCellData) : currentCellData;\r\n return nextFocusedCellData\r\n }\r\n _getNextCellData(nextFocusedCellData, focusedCellData, isVirtualCell) {\r\n if (isVirtualCell) {\r\n return focusedCellData\r\n }\r\n var isValidNextFocusedCell = this._isValidNextFocusedCell(nextFocusedCellData, focusedCellData);\r\n return isValidNextFocusedCell ? nextFocusedCellData : focusedCellData\r\n }\r\n _isValidNextFocusedCell(nextFocusedCellData, focusedCellData) {\r\n if (!focusedCellData) {\r\n return true\r\n }\r\n var {\r\n groupIndex: groupIndex,\r\n allDay: allDay\r\n } = focusedCellData;\r\n var {\r\n groupIndex: nextGroupIndex,\r\n allDay: nextAllDay\r\n } = nextFocusedCellData;\r\n return groupIndex === nextGroupIndex && allDay === nextAllDay\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/base/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../core/utils/date\";\r\nimport {\r\n getGroupCount as _getGroupCount\r\n} from \"../../../../../__internal/scheduler/resources/m_utils\";\r\nimport {\r\n isHorizontalGroupingApplied,\r\n isVerticalGroupingApplied\r\n} from \"../utils\";\r\nimport {\r\n ALL_DAY_PANEL_CELL_CLASS,\r\n ALL_DAY_ROW_CLASS,\r\n DATE_TABLE_CELL_CLASS,\r\n DATE_TABLE_ROW_CLASS\r\n} from \"../const\";\r\nvar DAY_MS = dateUtils.dateToMilliseconds(\"day\");\r\nvar HOUR_MS = dateUtils.dateToMilliseconds(\"hour\");\r\nexport var DATE_TABLE_MIN_CELL_WIDTH = 75;\r\nexport var getTotalRowCount = (rowCount, groupOrientation, groups, isAllDayPanelVisible) => {\r\n var isVerticalGrouping = isVerticalGroupingApplied(groups, groupOrientation);\r\n var groupCount = _getGroupCount(groups);\r\n var totalRowCount = isVerticalGrouping ? rowCount * groupCount : rowCount;\r\n return isAllDayPanelVisible ? totalRowCount + groupCount : totalRowCount\r\n};\r\nexport var getTotalCellCount = (cellCount, groupOrientation, groups) => {\r\n var isHorizontalGrouping = isHorizontalGroupingApplied(groups, groupOrientation);\r\n var groupCount = _getGroupCount(groups);\r\n return isHorizontalGrouping ? cellCount * groupCount : cellCount\r\n};\r\nexport var getRowCountWithAllDayRow = (rowCount, isAllDayPanelVisible) => isAllDayPanelVisible ? rowCount + 1 : rowCount;\r\nexport var getHiddenInterval = (hoursInterval, cellCountInDay) => {\r\n var visibleInterval = hoursInterval * cellCountInDay * HOUR_MS;\r\n return DAY_MS - visibleInterval\r\n};\r\nexport var createCellElementMetaData = (tableRect, cellRect) => {\r\n var {\r\n bottom: bottom,\r\n height: height,\r\n left: left,\r\n right: right,\r\n top: top,\r\n width: width,\r\n x: x,\r\n y: y\r\n } = cellRect;\r\n return {\r\n right: right,\r\n bottom: bottom,\r\n left: left - tableRect.left,\r\n top: top - tableRect.top,\r\n width: width,\r\n height: height,\r\n x: x,\r\n y: y\r\n }\r\n};\r\nexport var getDateForHeaderText = (_, date) => date;\r\nexport var getDateTableWidth = (scrollableWidth, dateTable, viewDataProvider, workSpaceConfig) => {\r\n var dateTableCell = dateTable.querySelector(\"td:not(.dx-scheduler-virtual-cell)\");\r\n var cellWidth = dateTableCell.getBoundingClientRect().width;\r\n if (cellWidth < DATE_TABLE_MIN_CELL_WIDTH) {\r\n cellWidth = DATE_TABLE_MIN_CELL_WIDTH\r\n }\r\n var cellCount = viewDataProvider.getCellCount(workSpaceConfig);\r\n var totalCellCount = getTotalCellCount(cellCount, workSpaceConfig.groupOrientation, workSpaceConfig.groups);\r\n var minTablesWidth = totalCellCount * cellWidth;\r\n return scrollableWidth < minTablesWidth ? minTablesWidth : scrollableWidth\r\n};\r\nexport var createVirtualScrollingOptions = options => ({\r\n getCellHeight: () => options.cellHeight,\r\n getCellWidth: () => options.cellWidth,\r\n getCellMinWidth: () => DATE_TABLE_MIN_CELL_WIDTH,\r\n isRTL: () => options.rtlEnabled,\r\n getSchedulerHeight: () => options.schedulerHeight,\r\n getSchedulerWidth: () => options.schedulerWidth,\r\n getViewHeight: () => options.viewHeight,\r\n getViewWidth: () => options.viewWidth,\r\n getScrolling: () => options.scrolling,\r\n getScrollableOuterWidth: () => options.scrollableWidth,\r\n getGroupCount: () => _getGroupCount(options.groups),\r\n isVerticalGrouping: () => options.isVerticalGrouping,\r\n getTotalRowCount: () => options.completeRowCount,\r\n getTotalCellCount: () => options.completeColumnCount,\r\n getWindowHeight: () => options.windowHeight,\r\n getWindowWidth: () => options.windowWidth\r\n});\r\nexport var getCellIndices = cell => {\r\n var row = cell.closest(\".\".concat(DATE_TABLE_ROW_CLASS, \", .\").concat(ALL_DAY_ROW_CLASS));\r\n var rowParent = row.parentNode;\r\n var cellParent = cell.parentNode;\r\n var columnIndex = [...Array.from(cellParent.children)].filter(child => child.className.includes(DATE_TABLE_CELL_CLASS) || child.className.includes(ALL_DAY_PANEL_CELL_CLASS)).indexOf(cell);\r\n var rowIndex = [...Array.from(rowParent.children)].filter(child => child.className.includes(DATE_TABLE_ROW_CLASS)).indexOf(row);\r\n return {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n }\r\n};\r\nexport var compareCellsByDateAndIndex = daysAndIndexes => {\r\n var {\r\n date: date,\r\n firstDate: firstDate,\r\n firstIndex: firstIndex,\r\n index: index,\r\n lastDate: lastDate,\r\n lastIndex: lastIndex\r\n } = daysAndIndexes;\r\n if (firstDate === lastDate) {\r\n var validFirstIndex = firstIndex;\r\n var validLastIndex = lastIndex;\r\n if (validFirstIndex > validLastIndex) {\r\n [validFirstIndex, validLastIndex] = [validLastIndex, validFirstIndex]\r\n }\r\n return firstDate === date && index >= validFirstIndex && index <= validLastIndex\r\n }\r\n return date === firstDate && index >= firstIndex || date === lastDate && index <= lastIndex || firstDate < date && date < lastDate\r\n};\r\nvar filterCellsByDateAndIndex = (cellsRow, filterData) => {\r\n var {\r\n firstDate: firstDate,\r\n firstIndex: firstIndex,\r\n lastDate: lastDate,\r\n lastIndex: lastIndex\r\n } = filterData;\r\n var firstDay = dateUtils.trimTime(firstDate).getTime();\r\n var lastDay = dateUtils.trimTime(lastDate).getTime();\r\n return cellsRow.filter(cell => {\r\n var {\r\n index: index,\r\n startDate: startDate\r\n } = cell;\r\n var day = dateUtils.trimTime(startDate).getTime();\r\n var daysAndIndexes = {\r\n date: day,\r\n index: index,\r\n firstDate: firstDay,\r\n firstIndex: firstIndex,\r\n lastDate: lastDay,\r\n lastIndex: lastIndex\r\n };\r\n return compareCellsByDateAndIndex(daysAndIndexes)\r\n })\r\n};\r\nexport var getSelectedCells = (viewDataProvider, firstSelectedCell, lastSelectedCell, isLastSelectedCellAllDay) => {\r\n var firstCell = firstSelectedCell;\r\n var lastCell = lastSelectedCell;\r\n if (firstCell.startDate.getTime() > lastCell.startDate.getTime()) {\r\n [firstCell, lastCell] = [lastCell, firstCell]\r\n }\r\n var {\r\n groupIndex: firstGroupIndex,\r\n index: firstCellIndex,\r\n startDate: firstStartDate\r\n } = firstCell;\r\n var {\r\n index: lastCellIndex,\r\n startDate: lastStartDate\r\n } = lastCell;\r\n var cells = viewDataProvider.getCellsByGroupIndexAndAllDay(null !== firstGroupIndex && void 0 !== firstGroupIndex ? firstGroupIndex : 0, isLastSelectedCellAllDay);\r\n var filteredCells = cells.reduce((selectedCells, cellsRow) => {\r\n var filterData = {\r\n firstDate: firstStartDate,\r\n lastDate: lastStartDate,\r\n firstIndex: firstCellIndex,\r\n lastIndex: lastCellIndex\r\n };\r\n var filteredRow = filterCellsByDateAndIndex(cellsRow, filterData);\r\n selectedCells.push(...filteredRow);\r\n return selectedCells\r\n }, []);\r\n var selectedCells = filteredCells.sort((firstArg, secondArg) => firstArg.startDate.getTime() - secondArg.startDate.getTime());\r\n return selectedCells\r\n};\r\nexport var isCellAllDay = cell => cell.className.includes(ALL_DAY_PANEL_CELL_CLASS);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_cells_selection_state.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getSelectedCells\r\n} from \"../../../renovation/ui/scheduler/workspaces/base/utils\";\r\nexport default class CellsSelectionState {\r\n constructor(_viewDataProvider) {\r\n this._viewDataProvider = _viewDataProvider;\r\n this._focusedCell = null;\r\n this._selectedCells = null;\r\n this._firstSelectedCell = null;\r\n this._prevFocusedCell = null;\r\n this._prevSelectedCells = null\r\n }\r\n get viewDataProvider() {\r\n return this._viewDataProvider\r\n }\r\n get focusedCell() {\r\n var focusedCell = this._focusedCell;\r\n if (!focusedCell) {\r\n return\r\n }\r\n var {\r\n groupIndex: groupIndex,\r\n startDate: startDate,\r\n allDay: allDay\r\n } = focusedCell;\r\n var cellInfo = {\r\n groupIndex: groupIndex,\r\n startDate: startDate,\r\n isAllDay: allDay,\r\n index: focusedCell.index\r\n };\r\n var cellPosition = this.viewDataProvider.findCellPositionInMap(cellInfo);\r\n return {\r\n coordinates: cellPosition,\r\n cellData: focusedCell\r\n }\r\n }\r\n setFocusedCell(rowIndex, columnIndex, isAllDay) {\r\n if (rowIndex >= 0) {\r\n var cell = this._viewDataProvider.getCellData(rowIndex, columnIndex, isAllDay);\r\n this._focusedCell = cell\r\n }\r\n }\r\n setSelectedCells(lastCellCoordinates) {\r\n var firstCellCoordinates = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : void 0;\r\n var viewDataProvider = this._viewDataProvider;\r\n var {\r\n rowIndex: lastRowIndex,\r\n columnIndex: lastColumnIndex,\r\n allDay: isLastCellAllDay\r\n } = lastCellCoordinates;\r\n if (lastRowIndex < 0) {\r\n return\r\n }\r\n var firstCell = firstCellCoordinates ? viewDataProvider.getCellData(firstCellCoordinates.rowIndex, firstCellCoordinates.columnIndex, firstCellCoordinates.allDay) : this._firstSelectedCell;\r\n var lastCell = viewDataProvider.getCellData(lastRowIndex, lastColumnIndex, isLastCellAllDay);\r\n this._firstSelectedCell = firstCell;\r\n this._selectedCells = getSelectedCells(this._viewDataProvider, firstCell, lastCell, isLastCellAllDay)\r\n }\r\n setSelectedCellsByData(selectedCellsData) {\r\n this._selectedCells = selectedCellsData\r\n }\r\n getSelectedCells() {\r\n return this._selectedCells\r\n }\r\n releaseSelectedAndFocusedCells() {\r\n this.releaseSelectedCells();\r\n this.releaseFocusedCell()\r\n }\r\n releaseSelectedCells() {\r\n this._prevSelectedCells = this._selectedCells;\r\n this._prevFirstSelectedCell = this._firstSelectedCell;\r\n this._selectedCells = null;\r\n this._firstSelectedCell = null\r\n }\r\n releaseFocusedCell() {\r\n this._prevFocusedCell = this._focusedCell;\r\n this._focusedCell = null\r\n }\r\n restoreSelectedAndFocusedCells() {\r\n this._selectedCells = this._selectedCells || this._prevSelectedCells;\r\n this._focusedCell = this._focusedCell || this._prevFocusedCell;\r\n this._firstSelectedCell = this._firstSelectedCell || this._prevFirstSelectedCell;\r\n this._prevSelectedCells = null;\r\n this._prevFirstSelectedCell = null;\r\n this._prevFocusedCell = null\r\n }\r\n clearSelectedAndFocusedCells() {\r\n this._prevSelectedCells = null;\r\n this._selectedCells = null;\r\n this._prevFocusedCell = null;\r\n this._focusedCell = null\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_virtual_scrolling.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n getWindow\r\n} from \"../../../core/utils/window\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport {\r\n addNamespace\r\n} from \"../../../events/utils/index\";\r\nvar DEFAULT_CELL_HEIGHT = 50;\r\nvar MIN_CELL_WIDTH = 1;\r\nvar MIN_SCROLL_OFFSET = 10;\r\nvar VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT = 15;\r\nvar DOCUMENT_SCROLL_EVENT_NAMESPACE = addNamespace(\"scroll\", \"dxSchedulerVirtualScrolling\");\r\nvar scrollingOrientations = {\r\n vertical: \"vertical\",\r\n horizontal: \"horizontal\",\r\n both: \"both\",\r\n none: \"none\"\r\n};\r\nvar DefaultScrollingOrientation = scrollingOrientations.both;\r\nexport class VirtualScrollingDispatcher {\r\n constructor(options) {\r\n this.options = options;\r\n if (options) {\r\n this._rowHeight = this.getCellHeight();\r\n this._cellWidth = this.getCellWidth();\r\n this._createVirtualScrollingBase()\r\n }\r\n }\r\n get isRTL() {\r\n return this.options.isRTL()\r\n }\r\n get verticalVirtualScrolling() {\r\n return this._verticalVirtualScrolling\r\n }\r\n set verticalVirtualScrolling(value) {\r\n this._verticalVirtualScrolling = value\r\n }\r\n get horizontalVirtualScrolling() {\r\n return this._horizontalVirtualScrolling\r\n }\r\n set horizontalVirtualScrolling(value) {\r\n this._horizontalVirtualScrolling = value\r\n }\r\n get document() {\r\n return domAdapter.getDocument()\r\n }\r\n get height() {\r\n return this.options.getSchedulerHeight()\r\n }\r\n get width() {\r\n return this.options.getSchedulerWidth()\r\n }\r\n get rowHeight() {\r\n return this._rowHeight\r\n }\r\n set rowHeight(value) {\r\n this._rowHeight = value\r\n }\r\n get outlineCount() {\r\n return this.options.getScrolling().outlineCount\r\n }\r\n get cellWidth() {\r\n return this._cellWidth\r\n }\r\n set cellWidth(value) {\r\n this._cellWidth = value\r\n }\r\n get viewportWidth() {\r\n var width = this.width && this.options.getViewWidth();\r\n return width > 0 ? width : this.options.getWindowWidth()\r\n }\r\n get viewportHeight() {\r\n var height = this.height && this.options.getViewHeight();\r\n return height > 0 ? height : this.options.getWindowHeight()\r\n }\r\n get cellCountInsideTopVirtualRow() {\r\n var _a;\r\n return (null === (_a = this.verticalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemCountBefore) || 0\r\n }\r\n get cellCountInsideLeftVirtualCell() {\r\n var _a;\r\n return (null === (_a = this.horizontalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemCountBefore) || 0\r\n }\r\n get cellCountInsideRightVirtualCell() {\r\n var _a;\r\n return (null === (_a = this.horizontalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemCountAfter) || 0\r\n }\r\n get topVirtualRowsCount() {\r\n return this.cellCountInsideTopVirtualRow > 0 ? 1 : 0\r\n }\r\n get leftVirtualCellsCount() {\r\n var virtualItemsCount = !this.isRTL ? this.cellCountInsideLeftVirtualCell : this.cellCountInsideRightVirtualCell;\r\n return virtualItemsCount > 0 ? 1 : 0\r\n }\r\n get virtualRowOffset() {\r\n var _a;\r\n return (null === (_a = this.verticalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemSizeBefore) || 0\r\n }\r\n get virtualCellOffset() {\r\n var _a;\r\n return (null === (_a = this.horizontalScrollingState) || void 0 === _a ? void 0 : _a.virtualItemSizeBefore) || 0\r\n }\r\n get scrollingState() {\r\n var _a, _b;\r\n return {\r\n vertical: null === (_a = this.verticalVirtualScrolling) || void 0 === _a ? void 0 : _a.state,\r\n horizontal: null === (_b = this.horizontalVirtualScrolling) || void 0 === _b ? void 0 : _b.state\r\n }\r\n }\r\n get verticalScrollingState() {\r\n return this.scrollingState.vertical\r\n }\r\n get horizontalScrollingState() {\r\n return this.scrollingState.horizontal\r\n }\r\n get scrollingOrientation() {\r\n var scrolling = this.options.getScrolling();\r\n if (\"standard\" === scrolling.mode) {\r\n return scrollingOrientations.none\r\n }\r\n return scrolling.orientation || DefaultScrollingOrientation\r\n }\r\n get verticalScrollingAllowed() {\r\n return this.scrollingOrientation === scrollingOrientations.vertical || this.scrollingOrientation === scrollingOrientations.both\r\n }\r\n get horizontalScrollingAllowed() {\r\n return this.scrollingOrientation === scrollingOrientations.horizontal || this.scrollingOrientation === scrollingOrientations.both\r\n }\r\n setViewOptions(options) {\r\n this.options = options;\r\n if (this.verticalVirtualScrolling) {\r\n this.verticalVirtualScrolling.options = options;\r\n this.verticalVirtualScrolling.itemSize = this.rowHeight;\r\n this.verticalVirtualScrolling.viewportSize = this.viewportHeight\r\n }\r\n if (this.horizontalVirtualScrolling) {\r\n this.horizontalVirtualScrolling.options = options;\r\n this.verticalVirtualScrolling.itemSize = this.cellWidth;\r\n this.verticalVirtualScrolling.viewportSize = this.viewportWidth\r\n }\r\n }\r\n getRenderState() {\r\n var _a, _b;\r\n var verticalRenderState = (null === (_a = this.verticalVirtualScrolling) || void 0 === _a ? void 0 : _a.getRenderState()) || {};\r\n var horizontalRenderState = (null === (_b = this.horizontalVirtualScrolling) || void 0 === _b ? void 0 : _b.getRenderState()) || {};\r\n return _extends(_extends({}, verticalRenderState), horizontalRenderState)\r\n }\r\n getCellHeight() {\r\n var cellHeight = this.options.getCellHeight();\r\n var result = cellHeight > 0 ? cellHeight : DEFAULT_CELL_HEIGHT;\r\n return Math.floor(result)\r\n }\r\n getCellWidth() {\r\n var cellWidth = this.options.getCellWidth();\r\n var minCellWidth = this.options.getCellMinWidth();\r\n if (!cellWidth || cellWidth < minCellWidth) {\r\n cellWidth = minCellWidth\r\n }\r\n var result = cellWidth > 0 ? cellWidth : MIN_CELL_WIDTH;\r\n return Math.floor(result)\r\n }\r\n calculateCoordinatesByDataAndPosition(cellData, position, date, isCalculateTime, isVerticalDirectionView) {\r\n var {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n } = position;\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay\r\n } = cellData;\r\n var timeToScroll = date.getTime();\r\n var cellStartTime = startDate.getTime();\r\n var cellEndTime = endDate.getTime();\r\n var scrollInCell = allDay || !isCalculateTime ? 0 : (timeToScroll - cellStartTime) / (cellEndTime - cellStartTime);\r\n var cellWidth = this.getCellWidth();\r\n var rowHeight = this.getCellHeight();\r\n var top = isVerticalDirectionView ? (rowIndex + scrollInCell) * rowHeight : rowIndex * rowHeight;\r\n var left = isVerticalDirectionView ? columnIndex * cellWidth : (columnIndex + scrollInCell) * cellWidth;\r\n if (this.isRTL) {\r\n left = this.options.getScrollableOuterWidth() - left\r\n }\r\n return {\r\n top: top,\r\n left: left\r\n }\r\n }\r\n dispose() {\r\n if (this._onScrollHandler) {\r\n eventsEngine.off(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)\r\n }\r\n }\r\n createVirtualScrolling() {\r\n var isVerticalVirtualScrollingCreated = !!this.verticalVirtualScrolling;\r\n var isHorizontalVirtualScrollingCreated = !!this.horizontalVirtualScrolling;\r\n if (this.verticalScrollingAllowed !== isVerticalVirtualScrollingCreated || this.horizontalScrollingAllowed !== isHorizontalVirtualScrollingCreated) {\r\n this._rowHeight = this.getCellHeight();\r\n this._cellWidth = this.getCellWidth();\r\n this._createVirtualScrollingBase()\r\n }\r\n }\r\n _createVirtualScrollingBase() {\r\n if (this.verticalScrollingAllowed) {\r\n this.verticalVirtualScrolling = new VerticalVirtualScrolling(_extends(_extends({}, this.options), {\r\n viewportHeight: this.viewportHeight,\r\n rowHeight: this.rowHeight,\r\n outlineCount: this.outlineCount\r\n }))\r\n }\r\n if (this.horizontalScrollingAllowed) {\r\n this.horizontalVirtualScrolling = new HorizontalVirtualScrolling(_extends(_extends({}, this.options), {\r\n viewportWidth: this.viewportWidth,\r\n cellWidth: this.cellWidth,\r\n outlineCount: this.outlineCount\r\n }))\r\n }\r\n }\r\n isAttachWindowScrollEvent() {\r\n return (this.horizontalScrollingAllowed || this.verticalScrollingAllowed) && !this.height\r\n }\r\n attachScrollableEvents() {\r\n if (this.isAttachWindowScrollEvent()) {\r\n this._attachWindowScroll()\r\n }\r\n }\r\n _attachWindowScroll() {\r\n var window = getWindow();\r\n this._onScrollHandler = this.options.createAction(() => {\r\n var {\r\n scrollX: scrollX,\r\n scrollY: scrollY\r\n } = window;\r\n if (scrollX >= MIN_SCROLL_OFFSET || scrollY >= MIN_SCROLL_OFFSET) {\r\n this.handleOnScrollEvent({\r\n left: scrollX,\r\n top: scrollY\r\n })\r\n }\r\n });\r\n eventsEngine.on(this.document, DOCUMENT_SCROLL_EVENT_NAMESPACE, this._onScrollHandler)\r\n }\r\n handleOnScrollEvent(scrollPosition) {\r\n var _a, _b, _c, _d;\r\n if (scrollPosition) {\r\n var {\r\n left: left,\r\n top: top\r\n } = scrollPosition;\r\n var verticalStateChanged = isDefined(top) && (null === (_a = this.verticalVirtualScrolling) || void 0 === _a ? void 0 : _a.updateState(top));\r\n var horizontalStateChanged = isDefined(left) && (null === (_b = this.horizontalVirtualScrolling) || void 0 === _b ? void 0 : _b.updateState(left));\r\n if (verticalStateChanged || horizontalStateChanged) {\r\n null === (_d = (_c = this.options).updateRender) || void 0 === _d ? void 0 : _d.call(_c)\r\n }\r\n }\r\n }\r\n updateDimensions(isForce) {\r\n var _a, _b;\r\n var cellHeight = this.getCellHeight();\r\n var needUpdateVertical = this.verticalScrollingAllowed && cellHeight !== this.rowHeight;\r\n if ((needUpdateVertical || isForce) && this.verticalVirtualScrolling) {\r\n this.rowHeight = cellHeight;\r\n this.verticalVirtualScrolling.viewportSize = this.viewportHeight;\r\n this.verticalVirtualScrolling.reinitState(cellHeight, isForce)\r\n }\r\n var cellWidth = this.getCellWidth();\r\n var needUpdateHorizontal = this.horizontalScrollingAllowed && cellWidth !== this.cellWidth;\r\n if ((needUpdateHorizontal || isForce) && this.horizontalVirtualScrolling) {\r\n this.cellWidth = cellWidth;\r\n this.horizontalVirtualScrolling.viewportSize = this.viewportWidth;\r\n this.horizontalVirtualScrolling.reinitState(cellWidth, isForce)\r\n }\r\n if (needUpdateVertical || needUpdateHorizontal) {\r\n null === (_b = (_a = this.options).updateGrid) || void 0 === _b ? void 0 : _b.call(_a)\r\n }\r\n }\r\n}\r\nclass VirtualScrollingBase {\r\n constructor(options) {\r\n this.options = options;\r\n this._state = this.defaultState;\r\n this.viewportSize = this.options.viewportSize;\r\n this._itemSize = this.options.itemSize;\r\n this._position = -1;\r\n this._itemSizeChanged = false;\r\n this.updateState(0)\r\n }\r\n get itemSize() {\r\n return this._itemSize\r\n }\r\n set itemSize(value) {\r\n this._itemSizeChanged = this._itemSize !== value;\r\n this._itemSize = value\r\n }\r\n get state() {\r\n return this._state\r\n }\r\n set state(value) {\r\n this._state = value\r\n }\r\n get startIndex() {\r\n return this.state.startIndex\r\n }\r\n get pageSize() {\r\n return Math.ceil(this.viewportSize / this.itemSize)\r\n }\r\n get outlineCount() {\r\n return isDefined(this.options.outlineCount) ? this.options.outlineCount : Math.floor(this.pageSize / 2)\r\n }\r\n get groupCount() {\r\n return this.options.getGroupCount()\r\n }\r\n get isVerticalGrouping() {\r\n return this.options.isVerticalGrouping()\r\n }\r\n get defaultState() {\r\n return {\r\n prevPosition: 0,\r\n startIndex: -1,\r\n itemCount: 0,\r\n virtualItemCountBefore: 0,\r\n virtualItemCountAfter: 0,\r\n outlineCountBefore: 0,\r\n outlineCountAfter: 0,\r\n virtualItemSizeBefore: 0,\r\n virtualItemSizeAfter: 0,\r\n outlineSizeBefore: 0,\r\n outlineSizeAfter: 0\r\n }\r\n }\r\n get maxScrollPosition() {\r\n return this.getTotalItemCount() * this.itemSize - this.viewportSize\r\n }\r\n get position() {\r\n return this._position\r\n }\r\n set position(value) {\r\n this._position = value\r\n }\r\n needUpdateState(position) {\r\n var {\r\n prevPosition: prevPosition,\r\n startIndex: startIndex\r\n } = this.state;\r\n var isFirstInitialization = startIndex < 0;\r\n if (isFirstInitialization) {\r\n return true\r\n }\r\n var isStartIndexChanged = false;\r\n if (this._validateAndSavePosition(position)) {\r\n if (0 === position || position === this.maxScrollPosition) {\r\n return true\r\n }\r\n var currentPosition = prevPosition;\r\n var currentItemsCount = Math.floor(currentPosition / this.itemSize);\r\n var itemsCount = Math.floor(position / this.itemSize);\r\n isStartIndexChanged = Math.abs(currentItemsCount - itemsCount) >= this.outlineCount\r\n }\r\n return isStartIndexChanged\r\n }\r\n _validateAndSavePosition(position) {\r\n if (!isDefined(position)) {\r\n return false\r\n }\r\n var result = this.position !== position;\r\n this.position = position;\r\n return result\r\n }\r\n _correctPosition(position) {\r\n return position >= 0 ? Math.min(position, this.maxScrollPosition) : -1\r\n }\r\n updateState(position, isForce) {\r\n position = this._correctPosition(position);\r\n if (!this.needUpdateState(position) && !isForce) {\r\n return false\r\n }\r\n var itemsInfoBefore = this._calcItemInfoBefore(position);\r\n var itemsDeltaBefore = this._calcItemDeltaBefore(itemsInfoBefore);\r\n var {\r\n outlineCountAfter: outlineCountAfter,\r\n virtualItemCountAfter: virtualItemCountAfter,\r\n itemCountWithAfter: itemCountWithAfter\r\n } = this._calcItemInfoAfter(itemsDeltaBefore);\r\n var {\r\n virtualItemCountBefore: virtualItemCountBefore,\r\n outlineCountBefore: outlineCountBefore\r\n } = itemsInfoBefore;\r\n var itemCount = outlineCountBefore + itemCountWithAfter + outlineCountAfter;\r\n var itemCountBefore = Math.floor(position / this.itemSize);\r\n this.state.prevPosition = itemCountBefore * this.itemSize;\r\n this.state.startIndex = itemCountBefore - outlineCountBefore;\r\n this.state.virtualItemCountBefore = virtualItemCountBefore;\r\n this.state.outlineCountBefore = outlineCountBefore;\r\n this.state.itemCount = itemCount;\r\n this.state.outlineCountAfter = outlineCountAfter;\r\n this.state.virtualItemCountAfter = virtualItemCountAfter;\r\n this._updateStateCore();\r\n return true\r\n }\r\n reinitState(itemSize, isForceUpdate) {\r\n var {\r\n position: position\r\n } = this;\r\n this.itemSize = itemSize;\r\n this.updateState(0, isForceUpdate);\r\n if (position > 0) {\r\n this.updateState(position, isForceUpdate)\r\n }\r\n }\r\n _calcItemInfoBefore(position) {\r\n var virtualItemCountBefore = Math.floor(position / this.itemSize);\r\n var outlineCountBefore = Math.min(virtualItemCountBefore, this.outlineCount);\r\n virtualItemCountBefore -= outlineCountBefore;\r\n return {\r\n virtualItemCountBefore: virtualItemCountBefore,\r\n outlineCountBefore: outlineCountBefore\r\n }\r\n }\r\n _calcItemDeltaBefore(itemInfoBefore) {\r\n var {\r\n virtualItemCountBefore: virtualItemCountBefore,\r\n outlineCountBefore: outlineCountBefore\r\n } = itemInfoBefore;\r\n var totalItemCount = this.getTotalItemCount();\r\n return totalItemCount - virtualItemCountBefore - outlineCountBefore\r\n }\r\n getTotalItemCount() {\r\n throw \"getTotalItemCount method should be implemented\"\r\n }\r\n getRenderState() {\r\n throw \"getRenderState method should be implemented\"\r\n }\r\n _calcItemInfoAfter(itemsDeltaBefore) {\r\n var itemCountWithAfter = itemsDeltaBefore >= this.pageSize ? this.pageSize : itemsDeltaBefore;\r\n var virtualItemCountAfter = itemsDeltaBefore - itemCountWithAfter;\r\n var outlineCountAfter = virtualItemCountAfter > 0 ? Math.min(virtualItemCountAfter, this.outlineCount) : 0;\r\n if (virtualItemCountAfter > 0) {\r\n virtualItemCountAfter -= outlineCountAfter\r\n }\r\n return {\r\n virtualItemCountAfter: virtualItemCountAfter,\r\n outlineCountAfter: outlineCountAfter,\r\n itemCountWithAfter: itemCountWithAfter\r\n }\r\n }\r\n _updateStateCore() {\r\n var {\r\n state: state\r\n } = this;\r\n var {\r\n virtualItemCountBefore: virtualItemCountBefore\r\n } = state;\r\n var {\r\n virtualItemCountAfter: virtualItemCountAfter\r\n } = state;\r\n var {\r\n outlineCountBefore: outlineCountBefore\r\n } = state;\r\n var {\r\n outlineCountAfter: outlineCountAfter\r\n } = state;\r\n var prevVirtualItemSizeBefore = state.virtualItemSizeBefore;\r\n var prevVirtualItemSizeAfter = state.virtualItemSizeAfter;\r\n var prevOutlineSizeBefore = state.outlineSizeBefore;\r\n var prevOutlineSizeAfter = state.outlineSizeAfter;\r\n var virtualItemSizeBefore = this.itemSize * virtualItemCountBefore;\r\n var virtualItemSizeAfter = this.itemSize * virtualItemCountAfter;\r\n var outlineSizeBefore = this.itemSize * outlineCountBefore;\r\n var outlineSizeAfter = this.itemSize * outlineCountAfter;\r\n var prevVirtualSizeBefore = prevVirtualItemSizeBefore + prevOutlineSizeBefore;\r\n var virtualSizeBefore = virtualItemSizeBefore + outlineSizeBefore;\r\n var prevVirtualSizeAfter = prevVirtualItemSizeAfter + prevOutlineSizeAfter;\r\n var virtualSizeAfter = virtualItemSizeAfter + outlineSizeAfter;\r\n var isAppend = prevVirtualSizeBefore < virtualSizeBefore;\r\n var isPrepend = prevVirtualSizeAfter < virtualSizeAfter;\r\n var needAddItems = this._itemSizeChanged || isAppend || isPrepend;\r\n if (needAddItems) {\r\n this._updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter)\r\n }\r\n }\r\n _updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter) {\r\n var {\r\n state: state\r\n } = this;\r\n state.virtualItemSizeBefore = virtualItemSizeBefore;\r\n state.virtualItemSizeAfter = virtualItemSizeAfter\r\n }\r\n}\r\nclass VerticalVirtualScrolling extends VirtualScrollingBase {\r\n constructor(options) {\r\n super(_extends(_extends({}, options), {\r\n itemSize: options.rowHeight,\r\n viewportSize: options.viewportHeight\r\n }))\r\n }\r\n get prevTopPosition() {\r\n return this.state.prevPosition\r\n }\r\n get rowCount() {\r\n return this.state.itemCount\r\n }\r\n get topVirtualRowCount() {\r\n return this.state.virtualItemCountBefore\r\n }\r\n get bottomVirtualRowCount() {\r\n return this.state.virtualItemCountAfter\r\n }\r\n getTotalItemCount() {\r\n return this.options.getTotalRowCount(this.groupCount, this.isVerticalGrouping)\r\n }\r\n getRenderState() {\r\n return {\r\n topVirtualRowHeight: this.state.virtualItemSizeBefore,\r\n bottomVirtualRowHeight: this.state.virtualItemSizeAfter,\r\n startRowIndex: this.state.startIndex,\r\n rowCount: this.state.itemCount,\r\n startIndex: this.state.startIndex\r\n }\r\n }\r\n}\r\nclass HorizontalVirtualScrolling extends VirtualScrollingBase {\r\n constructor(options) {\r\n super(_extends(_extends({}, options), {\r\n itemSize: options.cellWidth,\r\n viewportSize: options.viewportWidth\r\n }))\r\n }\r\n get isRTL() {\r\n return this.options.isRTL()\r\n }\r\n getTotalItemCount() {\r\n return this.options.getTotalCellCount(this.groupCount, this.isVerticalGrouping)\r\n }\r\n getRenderState() {\r\n return {\r\n leftVirtualCellWidth: this.state.virtualItemSizeBefore,\r\n rightVirtualCellWidth: this.state.virtualItemSizeAfter,\r\n startCellIndex: this.state.startIndex,\r\n cellCount: this.state.itemCount,\r\n cellWidth: this.itemSize\r\n }\r\n }\r\n _updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter) {\r\n if (!this.isRTL) {\r\n super._updateStateVirtualItems(virtualItemSizeBefore, virtualItemSizeAfter)\r\n } else {\r\n var {\r\n state: state\r\n } = this;\r\n state.virtualItemSizeAfter = virtualItemSizeBefore;\r\n state.virtualItemSizeBefore = virtualItemSizeAfter;\r\n state.startIndex = this.getTotalItemCount() - this.startIndex - this.state.itemCount\r\n }\r\n }\r\n}\r\nexport class VirtualScrollingRenderer {\r\n constructor(_workspace) {\r\n this._workspace = _workspace;\r\n this._renderAppointmentTimeoutID = null\r\n }\r\n getRenderTimeout() {\r\n return this._workspace.option(\"isRenovatedAppointments\") ? -1 : VIRTUAL_APPOINTMENTS_RENDER_TIMEOUT\r\n }\r\n get workspace() {\r\n return this._workspace\r\n }\r\n updateRender() {\r\n this._renderGrid();\r\n this._renderAppointments()\r\n }\r\n _renderGrid() {\r\n this.workspace.renderWorkSpace(false)\r\n }\r\n _renderAppointments() {\r\n var renderTimeout = this.getRenderTimeout();\r\n if (renderTimeout >= 0) {\r\n clearTimeout(this._renderAppointmentTimeoutID);\r\n this._renderAppointmentTimeoutID = setTimeout(() => this.workspace.updateAppointments(), renderTimeout)\r\n } else {\r\n this.workspace.updateAppointments()\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_horizontal.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n FIRST_GROUP_CELL_CLASS,\r\n LAST_GROUP_CELL_CLASS\r\n} from \"../m_classes\";\r\nclass HorizontalGroupedStrategy {\r\n constructor(_workSpace) {\r\n this._workSpace = _workSpace\r\n }\r\n prepareCellIndexes(cellCoordinates, groupIndex, inAllDay) {\r\n var groupByDay = this._workSpace.isGroupedByDate();\r\n if (!groupByDay) {\r\n return {\r\n rowIndex: cellCoordinates.rowIndex,\r\n columnIndex: cellCoordinates.columnIndex + groupIndex * this._workSpace._getCellCount()\r\n }\r\n }\r\n return {\r\n rowIndex: cellCoordinates.rowIndex,\r\n columnIndex: cellCoordinates.columnIndex * this._workSpace._getGroupCount() + groupIndex\r\n }\r\n }\r\n getGroupIndex(rowIndex, columnIndex) {\r\n var groupByDay = this._workSpace.isGroupedByDate();\r\n var groupCount = this._workSpace._getGroupCount();\r\n if (groupByDay) {\r\n return columnIndex % groupCount\r\n }\r\n return Math.floor(columnIndex / this._workSpace._getCellCount())\r\n }\r\n calculateHeaderCellRepeatCount() {\r\n return this._workSpace._getGroupCount() || 1\r\n }\r\n insertAllDayRowsIntoDateTable() {\r\n return false\r\n }\r\n getTotalCellCount(groupCount) {\r\n groupCount = groupCount || 1;\r\n return this._workSpace._getCellCount() * groupCount\r\n }\r\n getTotalRowCount() {\r\n return this._workSpace._getRowCount()\r\n }\r\n calculateTimeCellRepeatCount() {\r\n return 1\r\n }\r\n getWorkSpaceMinWidth() {\r\n return getBoundingRect(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth()\r\n }\r\n getAllDayOffset() {\r\n return this._workSpace.getAllDayHeight()\r\n }\r\n getGroupCountClass(groups) {\r\n return\r\n }\r\n getLeftOffset() {\r\n return this._workSpace.getTimePanelWidth()\r\n }\r\n _createGroupBoundOffset(startCell, endCell, cellWidth) {\r\n var extraOffset = cellWidth / 2;\r\n var startOffset = startCell ? startCell.offset().left - extraOffset : 0;\r\n var endOffset = endCell ? endCell.offset().left + cellWidth + extraOffset : 0;\r\n return {\r\n left: startOffset,\r\n right: endOffset,\r\n top: 0,\r\n bottom: 0\r\n }\r\n }\r\n _getGroupedByDateBoundOffset($cells, cellWidth) {\r\n var lastCellIndex = $cells.length - 1;\r\n var startCell = $cells.eq(0);\r\n var endCell = $cells.eq(lastCellIndex);\r\n return this._createGroupBoundOffset(startCell, endCell, cellWidth)\r\n }\r\n getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates, groupedDataMap) {\r\n if (this._workSpace.isGroupedByDate()) {\r\n return this._getGroupedByDateBoundOffset($cells, cellWidth)\r\n }\r\n var startCell;\r\n var endCell;\r\n var cellIndex = this._workSpace.getCellIndexByCoordinates(coordinates);\r\n var groupIndex = coordinates.groupIndex || Math.floor(cellIndex / cellCount);\r\n var currentCellGroup = groupedDataMap.dateTableGroupedMap[groupIndex];\r\n if (currentCellGroup) {\r\n var groupRowLength = currentCellGroup[0].length;\r\n var groupStartPosition = currentCellGroup[0][0].position;\r\n var groupEndPosition = currentCellGroup[0][groupRowLength - 1].position;\r\n startCell = $cells.eq(groupStartPosition.columnIndex);\r\n endCell = $cells.eq(groupEndPosition.columnIndex)\r\n }\r\n return this._createGroupBoundOffset(startCell, endCell, cellWidth)\r\n }\r\n shiftIndicator($indicator, height, rtlOffset, groupIndex) {\r\n var offset = this._getIndicatorOffset(groupIndex);\r\n var horizontalOffset = rtlOffset ? rtlOffset - offset : offset;\r\n $indicator.css(\"left\", horizontalOffset);\r\n $indicator.css(\"top\", height)\r\n }\r\n _getIndicatorOffset(groupIndex) {\r\n var groupByDay = this._workSpace.isGroupedByDate();\r\n return groupByDay ? this._calculateGroupByDateOffset(groupIndex) : this._calculateOffset(groupIndex)\r\n }\r\n _calculateOffset(groupIndex) {\r\n var indicatorStartPosition = this._workSpace.getIndicatorOffset(groupIndex);\r\n var offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex;\r\n return indicatorStartPosition + offset\r\n }\r\n _calculateGroupByDateOffset(groupIndex) {\r\n return this._workSpace.getIndicatorOffset(0) * this._workSpace._getGroupCount() + this._workSpace.getRoundedCellWidth(groupIndex - 1, 0) * groupIndex\r\n }\r\n getShaderOffset(i, width) {\r\n var offset = this._workSpace._getCellCount() * this._workSpace.getRoundedCellWidth(i - 1) * i;\r\n return this._workSpace.option(\"rtlEnabled\") ? getBoundingRect(this._workSpace._dateTableScrollable.$content().get(0)).width - offset - this._workSpace.getTimePanelWidth() - width : offset\r\n }\r\n getShaderTopOffset(i) {\r\n return -this.getShaderMaxHeight() * (i > 0 ? 1 : 0)\r\n }\r\n getShaderHeight() {\r\n var height = this._workSpace.getIndicationHeight();\r\n return height\r\n }\r\n getShaderMaxHeight() {\r\n return getBoundingRect(this._workSpace._dateTableScrollable.$content().get(0)).height\r\n }\r\n getShaderWidth(i) {\r\n return this._workSpace.getIndicationWidth(i)\r\n }\r\n getScrollableScrollTop(allDay) {\r\n return !allDay ? this._workSpace.getScrollable().scrollTop() : 0\r\n }\r\n addAdditionalGroupCellClasses(cellClass, index, i, j) {\r\n var applyUnconditionally = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : false;\r\n cellClass = this._addLastGroupCellClass(cellClass, index, applyUnconditionally);\r\n return this._addFirstGroupCellClass(cellClass, index, applyUnconditionally)\r\n }\r\n _addLastGroupCellClass(cellClass, index, applyUnconditionally) {\r\n if (applyUnconditionally) {\r\n return \"\".concat(cellClass, \" \").concat(LAST_GROUP_CELL_CLASS)\r\n }\r\n var groupByDate = this._workSpace.isGroupedByDate();\r\n if (groupByDate) {\r\n if (index % this._workSpace._getGroupCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(LAST_GROUP_CELL_CLASS)\r\n }\r\n } else if (index % this._workSpace._getCellCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(LAST_GROUP_CELL_CLASS)\r\n }\r\n return cellClass\r\n }\r\n _addFirstGroupCellClass(cellClass, index, applyUnconditionally) {\r\n if (applyUnconditionally) {\r\n return \"\".concat(cellClass, \" \").concat(FIRST_GROUP_CELL_CLASS)\r\n }\r\n var groupByDate = this._workSpace.isGroupedByDate();\r\n if (groupByDate) {\r\n if ((index - 1) % this._workSpace._getGroupCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(FIRST_GROUP_CELL_CLASS)\r\n }\r\n } else if ((index - 1) % this._workSpace._getCellCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(FIRST_GROUP_CELL_CLASS)\r\n }\r\n return cellClass\r\n }\r\n}\r\nexport default HorizontalGroupedStrategy;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_grouped_strategy_vertical.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n calculateDayDuration,\r\n getVerticalGroupCountClass\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n FIRST_GROUP_CELL_CLASS,\r\n LAST_GROUP_CELL_CLASS\r\n} from \"../m_classes\";\r\nimport {\r\n Cache\r\n} from \"./m_cache\";\r\nvar DATE_HEADER_OFFSET = 10;\r\nvar WORK_SPACE_BORDER = 1;\r\nclass VerticalGroupedStrategy {\r\n constructor(_workSpace) {\r\n this._workSpace = _workSpace;\r\n this.cache = new Cache\r\n }\r\n prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow) {\r\n var rowIndex = cellCoordinates.rowIndex + groupIndex * this._workSpace._getRowCount();\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n rowIndex += groupIndex;\r\n if (!inAllDayRow) {\r\n rowIndex += 1\r\n }\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: cellCoordinates.columnIndex\r\n }\r\n }\r\n getGroupIndex(rowIndex) {\r\n return Math.floor(rowIndex / this._workSpace._getRowCount())\r\n }\r\n calculateHeaderCellRepeatCount() {\r\n return 1\r\n }\r\n insertAllDayRowsIntoDateTable() {\r\n return this._workSpace.option(\"showAllDayPanel\")\r\n }\r\n getTotalCellCount() {\r\n return this._workSpace._getCellCount()\r\n }\r\n getTotalRowCount() {\r\n return this._workSpace._getRowCount() * this._workSpace._getGroupCount()\r\n }\r\n calculateTimeCellRepeatCount() {\r\n return this._workSpace._getGroupCount() || 1\r\n }\r\n getWorkSpaceMinWidth() {\r\n var minWidth = this._workSpace._getWorkSpaceWidth();\r\n var workspaceContainerWidth = getBoundingRect(this._workSpace.$element().get(0)).width - this._workSpace.getTimePanelWidth() - this._workSpace.getGroupTableWidth() - 2 * WORK_SPACE_BORDER;\r\n if (minWidth < workspaceContainerWidth) {\r\n minWidth = workspaceContainerWidth\r\n }\r\n return minWidth\r\n }\r\n getAllDayOffset() {\r\n return 0\r\n }\r\n getGroupCountClass(groups) {\r\n return getVerticalGroupCountClass(groups)\r\n }\r\n getLeftOffset() {\r\n return this._workSpace.getTimePanelWidth() + this._workSpace.getGroupTableWidth()\r\n }\r\n getGroupBoundsOffset(groupIndex, _ref) {\r\n var [$firstCell, $lastCell] = _ref;\r\n return this.cache.get(\"groupBoundsOffset\".concat(groupIndex), () => {\r\n var startDayHour = this._workSpace.option(\"startDayHour\");\r\n var endDayHour = this._workSpace.option(\"endDayHour\");\r\n var hoursInterval = this._workSpace.option(\"hoursInterval\");\r\n var dayHeight = calculateDayDuration(startDayHour, endDayHour) / hoursInterval * this._workSpace.getCellHeight();\r\n var scrollTop = this.getScrollableScrollTop();\r\n var topOffset = groupIndex * dayHeight + getBoundingRect(this._workSpace._$thead.get(0)).height + this._workSpace.option(\"getHeaderHeight\")() + DATE_HEADER_OFFSET - scrollTop;\r\n if (this._workSpace.option(\"showAllDayPanel\") && this._workSpace.supportAllDayRow()) {\r\n topOffset += this._workSpace.getCellHeight() * (groupIndex + 1)\r\n }\r\n var bottomOffset = topOffset + dayHeight;\r\n var {\r\n left: left\r\n } = $firstCell.getBoundingClientRect();\r\n var {\r\n right: right\r\n } = $lastCell.getBoundingClientRect();\r\n this._groupBoundsOffset = {\r\n left: left,\r\n right: right,\r\n top: topOffset,\r\n bottom: bottomOffset\r\n };\r\n return this._groupBoundsOffset\r\n })\r\n }\r\n shiftIndicator($indicator, height, rtlOffset, i) {\r\n var offset = this._workSpace.getIndicatorOffset(0);\r\n var tableOffset = this._workSpace.option(\"crossScrollingEnabled\") ? 0 : this._workSpace.getGroupTableWidth();\r\n var horizontalOffset = rtlOffset ? rtlOffset - offset : offset;\r\n var verticalOffset = this._workSpace._getRowCount() * this._workSpace.getCellHeight() * i;\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n verticalOffset += this._workSpace.getAllDayHeight() * (i + 1)\r\n }\r\n $indicator.css(\"left\", horizontalOffset + tableOffset);\r\n $indicator.css(\"top\", height + verticalOffset)\r\n }\r\n getShaderOffset(i, width) {\r\n var offset = this._workSpace.option(\"crossScrollingEnabled\") ? 0 : this._workSpace.getGroupTableWidth();\r\n return this._workSpace.option(\"rtlEnabled\") ? getBoundingRect(this._$container.get(0)).width - offset - this._workSpace.getWorkSpaceLeftOffset() - width : offset\r\n }\r\n getShaderTopOffset(i) {\r\n return 0\r\n }\r\n getShaderHeight() {\r\n var height = this._workSpace.getIndicationHeight();\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n height += this._workSpace.getCellHeight()\r\n }\r\n return height\r\n }\r\n getShaderMaxHeight() {\r\n var height = this._workSpace._getRowCount() * this._workSpace.getCellHeight();\r\n if (this._workSpace.supportAllDayRow() && this._workSpace.option(\"showAllDayPanel\")) {\r\n height += this._workSpace.getCellHeight()\r\n }\r\n return height\r\n }\r\n getShaderWidth() {\r\n return this._workSpace.getIndicationWidth(0)\r\n }\r\n getScrollableScrollTop() {\r\n return this._workSpace.getScrollable().scrollTop()\r\n }\r\n addAdditionalGroupCellClasses(cellClass, index, i, j) {\r\n cellClass = this._addLastGroupCellClass(cellClass, i + 1);\r\n return this._addFirstGroupCellClass(cellClass, i + 1)\r\n }\r\n _addLastGroupCellClass(cellClass, index) {\r\n if (index % this._workSpace._getRowCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(LAST_GROUP_CELL_CLASS)\r\n }\r\n return cellClass\r\n }\r\n _addFirstGroupCellClass(cellClass, index) {\r\n if ((index - 1) % this._workSpace._getRowCount() === 0) {\r\n return \"\".concat(cellClass, \" \").concat(FIRST_GROUP_CELL_CLASS)\r\n }\r\n return cellClass\r\n }\r\n}\r\nexport default VerticalGroupedStrategy;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/group_panel/utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar extendGroupItemsForGroupingByDate = (groupRenderItems, columnCountPerGroup) => [...new Array(columnCountPerGroup)].reduce((currentGroupItems, _, index) => groupRenderItems.map((groupsRow, rowIndex) => {\r\n var currentRow = currentGroupItems[rowIndex] || [];\r\n return [...currentRow, ...groupsRow.map((item, columnIndex) => _extends({}, item, {\r\n key: \"\".concat(item.key, \"_group_by_date_\").concat(index),\r\n isFirstGroupCell: 0 === columnIndex,\r\n isLastGroupCell: columnIndex === groupsRow.length - 1\r\n }))]\r\n}), []);\r\nexport var getGroupPanelData = (groups, columnCountPerGroup, groupByDate, baseColSpan) => {\r\n var repeatCount = 1;\r\n var groupPanelItems = groups.map(group => {\r\n var result = [];\r\n var {\r\n data: data,\r\n items: items,\r\n name: resourceName\r\n } = group;\r\n var _loop = function(iterator) {\r\n result.push(...items.map((_ref, index) => {\r\n var {\r\n color: color,\r\n id: id,\r\n text: text\r\n } = _ref;\r\n return {\r\n id: id,\r\n text: text,\r\n color: color,\r\n key: \"\".concat(iterator, \"_\").concat(resourceName, \"_\").concat(id),\r\n resourceName: resourceName,\r\n data: null === data || void 0 === data ? void 0 : data[index]\r\n }\r\n }))\r\n };\r\n for (var iterator = 0; iterator < repeatCount; iterator += 1) {\r\n _loop(iterator)\r\n }\r\n repeatCount *= items.length;\r\n return result\r\n });\r\n if (groupByDate) {\r\n groupPanelItems = extendGroupItemsForGroupingByDate(groupPanelItems, columnCountPerGroup)\r\n }\r\n return {\r\n groupPanelItems: groupPanelItems,\r\n baseColSpan: baseColSpan\r\n }\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_date_header_data_generator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar __rest = this && this.__rest || function(s, e) {\r\n var t = {};\r\n for (var p in s) {\r\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {\r\n t[p] = s[p]\r\n }\r\n }\r\n if (null != s && \"function\" === typeof Object.getOwnPropertySymbols) {\r\n var i = 0;\r\n for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {\r\n t[p[i]] = s[p[i]]\r\n }\r\n }\r\n }\r\n return t\r\n};\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n formatWeekdayAndDay,\r\n getDisplayedCellCount,\r\n getHeaderCellText,\r\n getHorizontalGroupCount,\r\n getTotalCellCountByCompleteData\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n getGroupCount\r\n} from \"../../resources/m_utils\";\r\nexport class DateHeaderDataGenerator {\r\n constructor(_viewDataGenerator) {\r\n this._viewDataGenerator = _viewDataGenerator\r\n }\r\n getCompleteDateHeaderMap(options, completeViewDataMap) {\r\n var {\r\n isGenerateWeekDaysHeaderData: isGenerateWeekDaysHeaderData\r\n } = options;\r\n var result = [];\r\n if (isGenerateWeekDaysHeaderData) {\r\n var weekDaysRow = this._generateWeekDaysHeaderRowMap(options, completeViewDataMap);\r\n result.push(weekDaysRow)\r\n }\r\n var dateRow = this._generateHeaderDateRow(options, completeViewDataMap);\r\n result.push(dateRow);\r\n return result\r\n }\r\n _generateWeekDaysHeaderRowMap(options, completeViewDataMap) {\r\n var {\r\n isGroupedByDate: isGroupedByDate,\r\n groups: groups,\r\n groupOrientation: groupOrientation,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval,\r\n isHorizontalGrouping: isHorizontalGrouping,\r\n intervalCount: intervalCount\r\n } = options;\r\n var cellCountInDay = this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval);\r\n var horizontalGroupCount = getHorizontalGroupCount(groups, groupOrientation);\r\n var index = completeViewDataMap[0][0].allDay ? 1 : 0;\r\n var colSpan = isGroupedByDate ? horizontalGroupCount * cellCountInDay : cellCountInDay;\r\n var groupCount = getGroupCount(groups);\r\n var datesRepeatCount = isHorizontalGrouping && !isGroupedByDate ? groupCount : 1;\r\n var daysInGroup = this._viewDataGenerator.daysInInterval * intervalCount;\r\n var daysInView = daysInGroup * datesRepeatCount;\r\n var weekDaysRow = [];\r\n for (var dayIndex = 0; dayIndex < daysInView; dayIndex += 1) {\r\n var cell = completeViewDataMap[index][dayIndex * colSpan];\r\n weekDaysRow.push(_extends(_extends({}, cell), {\r\n colSpan: colSpan,\r\n text: formatWeekdayAndDay(cell.startDate),\r\n isFirstGroupCell: false,\r\n isLastGroupCell: false\r\n }))\r\n }\r\n return weekDaysRow\r\n }\r\n _generateHeaderDateRow(options, completeViewDataMap) {\r\n var {\r\n today: today,\r\n isGroupedByDate: isGroupedByDate,\r\n groupOrientation: groupOrientation,\r\n groups: groups,\r\n headerCellTextFormat: headerCellTextFormat,\r\n getDateForHeaderText: getDateForHeaderText,\r\n interval: interval,\r\n startViewDate: startViewDate,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval,\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType\r\n } = options;\r\n var horizontalGroupCount = getHorizontalGroupCount(groups, groupOrientation);\r\n var index = completeViewDataMap[0][0].allDay ? 1 : 0;\r\n var colSpan = isGroupedByDate ? horizontalGroupCount : 1;\r\n var isVerticalGrouping = \"vertical\" === groupOrientation;\r\n var cellCountInGroupRow = this._viewDataGenerator.getCellCount({\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n hoursInterval: hoursInterval,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour\r\n });\r\n var cellCountInDay = this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval);\r\n var slicedByColumnsData = isGroupedByDate ? completeViewDataMap[index].filter((_, columnIndex) => columnIndex % horizontalGroupCount === 0) : completeViewDataMap[index];\r\n return slicedByColumnsData.map((_a, index) => {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell\r\n } = _a, restProps = __rest(_a, [\"startDate\", \"endDate\", \"isFirstGroupCell\", \"isLastGroupCell\"]);\r\n var text = getHeaderCellText(index % cellCountInGroupRow, startDate, headerCellTextFormat, getDateForHeaderText, {\r\n interval: interval,\r\n startViewDate: startViewDate,\r\n startDayHour: startDayHour,\r\n cellCountInDay: cellCountInDay\r\n });\r\n return _extends(_extends({}, restProps), {\r\n startDate: startDate,\r\n text: text,\r\n today: dateUtils.sameDate(startDate, today),\r\n colSpan: colSpan,\r\n isFirstGroupCell: isGroupedByDate || isFirstGroupCell && !isVerticalGrouping,\r\n isLastGroupCell: isGroupedByDate || isLastGroupCell && !isVerticalGrouping\r\n })\r\n })\r\n }\r\n generateDateHeaderData(completeDateHeaderMap, completeViewDataMap, options) {\r\n var {\r\n isGenerateWeekDaysHeaderData: isGenerateWeekDaysHeaderData,\r\n cellWidth: cellWidth,\r\n isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval,\r\n isMonthDateHeader: isMonthDateHeader\r\n } = options;\r\n var dataMap = [];\r\n var weekDayRowConfig = {};\r\n var validCellWidth = cellWidth || 0;\r\n if (isGenerateWeekDaysHeaderData) {\r\n weekDayRowConfig = this._generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, this._viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval), 0, validCellWidth);\r\n dataMap.push(weekDayRowConfig.dateRow)\r\n }\r\n var datesRowConfig = this._generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, 1, isGenerateWeekDaysHeaderData ? 1 : 0, validCellWidth);\r\n dataMap.push(datesRowConfig.dateRow);\r\n return {\r\n dataMap: dataMap,\r\n leftVirtualCellWidth: isProvideVirtualCellsWidth ? datesRowConfig.leftVirtualCellWidth : void 0,\r\n rightVirtualCellWidth: isProvideVirtualCellsWidth ? datesRowConfig.rightVirtualCellWidth : void 0,\r\n leftVirtualCellCount: datesRowConfig.leftVirtualCellCount,\r\n rightVirtualCellCount: datesRowConfig.rightVirtualCellCount,\r\n weekDayLeftVirtualCellWidth: weekDayRowConfig.leftVirtualCellWidth,\r\n weekDayRightVirtualCellWidth: weekDayRowConfig.rightVirtualCellWidth,\r\n weekDayLeftVirtualCellCount: weekDayRowConfig.leftVirtualCellCount,\r\n weekDayRightVirtualCellCount: weekDayRowConfig.rightVirtualCellCount,\r\n isMonthDateHeader: isMonthDateHeader\r\n }\r\n }\r\n _generateDateHeaderDataRow(options, completeDateHeaderMap, completeViewDataMap, baseColSpan, rowIndex, cellWidth) {\r\n var {\r\n startCellIndex: startCellIndex,\r\n cellCount: cellCount,\r\n isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,\r\n groups: groups,\r\n groupOrientation: groupOrientation,\r\n isGroupedByDate: isGroupedByDate\r\n } = options;\r\n var horizontalGroupCount = getHorizontalGroupCount(groups, groupOrientation);\r\n var colSpan = isGroupedByDate ? horizontalGroupCount * baseColSpan : baseColSpan;\r\n var leftVirtualCellCount = Math.floor(startCellIndex / colSpan);\r\n var displayedCellCount = getDisplayedCellCount(cellCount, completeViewDataMap);\r\n var actualCellCount = Math.ceil((startCellIndex + displayedCellCount) / colSpan);\r\n var totalCellCount = getTotalCellCountByCompleteData(completeViewDataMap);\r\n var dateRow = completeDateHeaderMap[rowIndex].slice(leftVirtualCellCount, actualCellCount);\r\n var finalLeftVirtualCellCount = leftVirtualCellCount * colSpan;\r\n var finalLeftVirtualCellWidth = finalLeftVirtualCellCount * cellWidth;\r\n var finalRightVirtualCellCount = totalCellCount - actualCellCount * colSpan;\r\n var finalRightVirtualCellWidth = finalRightVirtualCellCount * cellWidth;\r\n return {\r\n dateRow: dateRow,\r\n leftVirtualCellCount: finalLeftVirtualCellCount,\r\n leftVirtualCellWidth: isProvideVirtualCellsWidth ? finalLeftVirtualCellWidth : void 0,\r\n rightVirtualCellCount: finalRightVirtualCellCount,\r\n rightVirtualCellWidth: isProvideVirtualCellsWidth ? finalRightVirtualCellWidth : void 0\r\n }\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_grouped_data_map_provider.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n isDateAndTimeView\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nexport class GroupedDataMapProvider {\r\n constructor(viewDataGenerator, viewDataMap, completeViewDataMap, viewOptions) {\r\n this.groupedDataMap = viewDataGenerator.generateGroupedDataMap(viewDataMap);\r\n this.completeViewDataMap = completeViewDataMap;\r\n this._viewOptions = viewOptions\r\n }\r\n getGroupStartDate(groupIndex) {\r\n var firstRow = this.getFirstGroupRow(groupIndex);\r\n if (firstRow) {\r\n var {\r\n startDate: startDate\r\n } = firstRow[0].cellData;\r\n return startDate\r\n }\r\n }\r\n getGroupEndDate(groupIndex) {\r\n var lastRow = this.getLastGroupRow(groupIndex);\r\n if (lastRow) {\r\n var lastColumnIndex = lastRow.length - 1;\r\n var {\r\n cellData: cellData\r\n } = lastRow[lastColumnIndex];\r\n var {\r\n endDate: endDate\r\n } = cellData;\r\n return endDate\r\n }\r\n }\r\n findGroupCellStartDate(groupIndex, startDate, endDate, isFindByDate) {\r\n var groupData = this.getGroupFromDateTableGroupMap(groupIndex);\r\n var checkCellStartDate = (rowIndex, columnIndex) => {\r\n var {\r\n cellData: cellData\r\n } = groupData[rowIndex][columnIndex];\r\n var {\r\n startDate: secondMin,\r\n endDate: secondMax\r\n } = cellData;\r\n if (isFindByDate) {\r\n secondMin = dateUtils.trimTime(secondMin);\r\n secondMax = dateUtils.setToDayEnd(secondMin)\r\n }\r\n if (dateUtils.intervalsOverlap({\r\n firstMin: startDate,\r\n firstMax: endDate,\r\n secondMin: secondMin,\r\n secondMax: secondMax\r\n })) {\r\n return secondMin\r\n }\r\n };\r\n var startDateVerticalSearch = (() => {\r\n var cellCount = groupData[0].length;\r\n for (var columnIndex = 0; columnIndex < cellCount; ++columnIndex) {\r\n for (var rowIndex = 0; rowIndex < groupData.length; ++rowIndex) {\r\n var result = checkCellStartDate(rowIndex, columnIndex);\r\n if (result) {\r\n return result\r\n }\r\n }\r\n }\r\n })();\r\n var startDateHorizontalSearch = (() => {\r\n for (var rowIndex = 0; rowIndex < groupData.length; ++rowIndex) {\r\n var row = groupData[rowIndex];\r\n for (var columnIndex = 0; columnIndex < row.length; ++columnIndex) {\r\n var result = checkCellStartDate(rowIndex, columnIndex);\r\n if (result) {\r\n return result\r\n }\r\n }\r\n }\r\n })();\r\n return startDateVerticalSearch > startDateHorizontalSearch ? startDateHorizontalSearch : startDateVerticalSearch\r\n }\r\n findAllDayGroupCellStartDate(groupIndex, startDate) {\r\n var groupStartDate = this.getGroupStartDate(groupIndex);\r\n return groupStartDate > startDate ? groupStartDate : startDate\r\n }\r\n findCellPositionInMap(cellInfo) {\r\n var {\r\n groupIndex: groupIndex,\r\n startDate: startDate,\r\n isAllDay: isAllDay,\r\n index: index\r\n } = cellInfo;\r\n var startTime = isAllDay ? dateUtils.trimTime(startDate).getTime() : startDate.getTime();\r\n var isStartDateInCell = cellData => {\r\n if (!isDateAndTimeView(this._viewOptions.viewType)) {\r\n return dateUtils.sameDate(startDate, cellData.startDate)\r\n }\r\n var cellStartTime = cellData.startDate.getTime();\r\n var cellEndTime = cellData.endDate.getTime();\r\n return isAllDay ? cellData.allDay && startTime >= cellStartTime && startTime <= cellEndTime : startTime >= cellStartTime && startTime < cellEndTime\r\n };\r\n var {\r\n allDayPanelGroupedMap: allDayPanelGroupedMap,\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n var rows = isAllDay && !this._viewOptions.isVerticalGrouping ? allDayPanelGroupedMap[groupIndex] ? [allDayPanelGroupedMap[groupIndex]] : [] : dateTableGroupedMap[groupIndex] || [];\r\n for (var rowIndex = 0; rowIndex < rows.length; ++rowIndex) {\r\n var row = rows[rowIndex];\r\n for (var columnIndex = 0; columnIndex < row.length; ++columnIndex) {\r\n var cell = row[columnIndex];\r\n var {\r\n cellData: cellData\r\n } = cell;\r\n if (this._isSameGroupIndexAndIndex(cellData, groupIndex, index)) {\r\n if (isStartDateInCell(cellData)) {\r\n return cell.position\r\n }\r\n }\r\n }\r\n }\r\n return\r\n }\r\n _isSameGroupIndexAndIndex(cellData, groupIndex, index) {\r\n return cellData.groupIndex === groupIndex && (void 0 === index || cellData.index === index)\r\n }\r\n getCellsGroup(groupIndex) {\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n var groupData = dateTableGroupedMap[groupIndex];\r\n if (groupData) {\r\n var {\r\n cellData: cellData\r\n } = groupData[0][0];\r\n return cellData.groups\r\n }\r\n }\r\n getCompletedGroupsInfo() {\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n return dateTableGroupedMap.map(groupData => {\r\n var firstCell = groupData[0][0];\r\n var {\r\n allDay: allDay,\r\n groupIndex: groupIndex\r\n } = firstCell.cellData;\r\n return {\r\n allDay: allDay,\r\n groupIndex: groupIndex,\r\n startDate: this.getGroupStartDate(groupIndex),\r\n endDate: this.getGroupEndDate(groupIndex)\r\n }\r\n }).filter(_ref => {\r\n var {\r\n startDate: startDate\r\n } = _ref;\r\n return !!startDate\r\n })\r\n }\r\n getGroupIndices() {\r\n return this.getCompletedGroupsInfo().map(_ref2 => {\r\n var {\r\n groupIndex: groupIndex\r\n } = _ref2;\r\n return groupIndex\r\n })\r\n }\r\n getGroupFromDateTableGroupMap(groupIndex) {\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n return dateTableGroupedMap[groupIndex]\r\n }\r\n getFirstGroupRow(groupIndex) {\r\n var groupedData = this.getGroupFromDateTableGroupMap(groupIndex);\r\n if (groupedData) {\r\n var {\r\n cellData: cellData\r\n } = groupedData[0][0];\r\n return !cellData.allDay ? groupedData[0] : groupedData[1]\r\n }\r\n }\r\n getLastGroupRow(groupIndex) {\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n var groupedData = dateTableGroupedMap[groupIndex];\r\n if (groupedData) {\r\n var lastRowIndex = groupedData.length - 1;\r\n return groupedData[lastRowIndex]\r\n }\r\n }\r\n getLastGroupCellPosition(groupIndex) {\r\n var groupRow = this.getLastGroupRow(groupIndex);\r\n return null === groupRow || void 0 === groupRow ? void 0 : groupRow[(null === groupRow || void 0 === groupRow ? void 0 : groupRow.length) - 1].position\r\n }\r\n getRowCountInGroup(groupIndex) {\r\n var groupRow = this.getLastGroupRow(groupIndex);\r\n var cellAmount = groupRow.length;\r\n var lastCellData = groupRow[cellAmount - 1].cellData;\r\n var lastCellIndex = lastCellData.index;\r\n return (lastCellIndex + 1) / groupRow.length\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../../../core/utils/date\";\r\nimport dateLocalization from \"../../../../../../../localization/date\";\r\nimport {\r\n getCalculatedFirstDayOfWeek,\r\n getStartViewDateTimeOffset,\r\n getViewStartByOptions,\r\n setOptionHour\r\n} from \"./base\";\r\nimport timeZoneUtils from \"../../../../../../../__internal/scheduler/m_utils_time_zone\";\r\nexport var getIntervalDuration = intervalCount => 7 * dateUtils.dateToMilliseconds(\"day\") * intervalCount;\r\nexport var getValidStartDate = (startDate, firstDayOfWeek) => startDate ? dateUtils.getFirstWeekDate(startDate, firstDayOfWeek) : void 0;\r\nexport var calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration, firstDayOfWeekOption) => {\r\n var firstDayOfWeek = getCalculatedFirstDayOfWeek(firstDayOfWeekOption);\r\n var viewStart = getViewStartByOptions(startDate, currentDate, intervalDuration, getValidStartDate(startDate, firstDayOfWeek));\r\n var firstViewDate = dateUtils.getFirstWeekDate(viewStart, firstDayOfWeek);\r\n return setOptionHour(firstViewDate, startDayHour)\r\n};\r\nexport var calculateViewStartDate = (startDateOption, firstDayOfWeek) => {\r\n var validFirstDayOfWeek = null !== firstDayOfWeek && void 0 !== firstDayOfWeek ? firstDayOfWeek : dateLocalization.firstDayOfWeekIndex();\r\n return dateUtils.getFirstWeekDate(startDateOption, validFirstDayOfWeek)\r\n};\r\nvar getTimeCellDate = (rowIndex, date, startViewDate, cellDuration, startDayHour) => {\r\n if (!timeZoneUtils.isTimezoneChangeInDate(date)) {\r\n return date\r\n }\r\n var startViewDateWithoutDST = timeZoneUtils.getDateWithoutTimezoneChange(startViewDate);\r\n var result = new Date(startViewDateWithoutDST);\r\n var timeCellDuration = Math.round(cellDuration);\r\n var startViewDateOffset = getStartViewDateTimeOffset(startViewDate, startDayHour);\r\n result.setMilliseconds(result.getMilliseconds() + timeCellDuration * rowIndex - startViewDateOffset);\r\n return result\r\n};\r\nexport var getTimePanelCellText = (rowIndex, date, startViewDate, cellDuration, startDayHour) => {\r\n if (rowIndex % 2 === 0) {\r\n var validDate = getTimeCellDate(rowIndex, date, startViewDate, cellDuration, startDayHour);\r\n return dateLocalization.format(validDate, \"shorttime\")\r\n }\r\n return \"\"\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_time_panel_data_generator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar __rest = this && this.__rest || function(s, e) {\r\n var t = {};\r\n for (var p in s) {\r\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {\r\n t[p] = s[p]\r\n }\r\n }\r\n if (null != s && \"function\" === typeof Object.getOwnPropertySymbols) {\r\n var i = 0;\r\n for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {\r\n t[p[i]] = s[p[i]]\r\n }\r\n }\r\n }\r\n return t\r\n};\r\nimport {\r\n getDisplayedRowCount\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n getTimePanelCellText\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/week\";\r\nimport {\r\n getIsGroupedAllDayPanel,\r\n getKeyByGroup\r\n} from \"../../../../renovation/ui/scheduler/workspaces/utils\";\r\nexport class TimePanelDataGenerator {\r\n constructor(_viewDataGenerator) {\r\n this._viewDataGenerator = _viewDataGenerator\r\n }\r\n getCompleteTimePanelMap(options, completeViewDataMap) {\r\n var {\r\n startViewDate: startViewDate,\r\n cellDuration: cellDuration,\r\n startDayHour: startDayHour,\r\n isVerticalGrouping: isVerticalGrouping,\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n hoursInterval: hoursInterval,\r\n endDayHour: endDayHour\r\n } = options;\r\n var rowCountInGroup = this._viewDataGenerator.getRowCount({\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n hoursInterval: hoursInterval,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour\r\n });\r\n var cellCountInGroupRow = this._viewDataGenerator.getCellCount({\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n hoursInterval: hoursInterval,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour\r\n });\r\n var allDayRowsCount = 0;\r\n return completeViewDataMap.map((row, index) => {\r\n var _a = row[0],\r\n {\r\n allDay: allDay,\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: groups,\r\n groupIndex: groupIndex,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n index: cellIndex\r\n } = _a,\r\n restCellProps = __rest(_a, [\"allDay\", \"startDate\", \"endDate\", \"groups\", \"groupIndex\", \"isFirstGroupCell\", \"isLastGroupCell\", \"index\"]);\r\n if (allDay) {\r\n allDayRowsCount += 1\r\n }\r\n var timeIndex = (index - allDayRowsCount) % rowCountInGroup;\r\n return _extends(_extends({}, restCellProps), {\r\n startDate: startDate,\r\n allDay: allDay,\r\n text: getTimePanelCellText(timeIndex, startDate, startViewDate, cellDuration, startDayHour),\r\n groups: isVerticalGrouping ? groups : void 0,\r\n groupIndex: isVerticalGrouping ? groupIndex : void 0,\r\n isFirstGroupCell: isVerticalGrouping && isFirstGroupCell,\r\n isLastGroupCell: isVerticalGrouping && isLastGroupCell,\r\n index: Math.floor(cellIndex / cellCountInGroupRow)\r\n })\r\n })\r\n }\r\n generateTimePanelData(completeTimePanelMap, options) {\r\n var {\r\n startRowIndex: startRowIndex,\r\n rowCount: rowCount,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n isVerticalGrouping: isVerticalGrouping,\r\n isAllDayPanelVisible: isAllDayPanelVisible\r\n } = options;\r\n var indexDifference = isVerticalGrouping || !isAllDayPanelVisible ? 0 : 1;\r\n var correctedStartRowIndex = startRowIndex + indexDifference;\r\n var displayedRowCount = getDisplayedRowCount(rowCount, completeTimePanelMap);\r\n var timePanelMap = completeTimePanelMap.slice(correctedStartRowIndex, correctedStartRowIndex + displayedRowCount);\r\n var timePanelData = {\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel\r\n };\r\n var {\r\n previousGroupedData: groupedData\r\n } = this._generateTimePanelDataFromMap(timePanelMap, isVerticalGrouping);\r\n timePanelData.groupedData = groupedData;\r\n return timePanelData\r\n }\r\n _generateTimePanelDataFromMap(timePanelMap, isVerticalGrouping) {\r\n return timePanelMap.reduce((_ref, cellData) => {\r\n var {\r\n previousGroupIndex: previousGroupIndex,\r\n previousGroupedData: previousGroupedData\r\n } = _ref;\r\n var currentGroupIndex = cellData.groupIndex;\r\n if (currentGroupIndex !== previousGroupIndex) {\r\n previousGroupedData.push({\r\n dateTable: [],\r\n isGroupedAllDayPanel: getIsGroupedAllDayPanel(!!cellData.allDay, isVerticalGrouping),\r\n groupIndex: currentGroupIndex,\r\n key: getKeyByGroup(currentGroupIndex, isVerticalGrouping)\r\n })\r\n }\r\n if (cellData.allDay) {\r\n previousGroupedData[previousGroupedData.length - 1].allDayPanel = cellData\r\n } else {\r\n previousGroupedData[previousGroupedData.length - 1].dateTable.push(cellData)\r\n }\r\n return {\r\n previousGroupIndex: currentGroupIndex,\r\n previousGroupedData: previousGroupedData\r\n }\r\n }, {\r\n previousGroupIndex: -1,\r\n previousGroupedData: []\r\n })\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_generator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n calculateCellIndex,\r\n calculateDayDuration,\r\n getDisplayedCellCount,\r\n getDisplayedRowCount,\r\n getStartViewDateWithoutDST,\r\n getTotalCellCountByCompleteData,\r\n getTotalRowCountByCompleteData,\r\n isHorizontalView\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n getIsGroupedAllDayPanel,\r\n getKeyByGroup\r\n} from \"../../../../renovation/ui/scheduler/workspaces/utils\";\r\nimport {\r\n HORIZONTAL_GROUP_ORIENTATION\r\n} from \"../../m_constants\";\r\nimport {\r\n getAllGroups,\r\n getGroupCount\r\n} from \"../../resources/m_utils\";\r\nvar HOUR_MS = dateUtils.dateToMilliseconds(\"hour\");\r\nvar DAY_MS = dateUtils.dateToMilliseconds(\"day\");\r\nexport class ViewDataGenerator {\r\n constructor() {\r\n this.daysInInterval = 1;\r\n this.isWorkView = false;\r\n this.tableAllDay = false\r\n }\r\n isSkippedDate(date) {\r\n return false\r\n }\r\n _calculateStartViewDate(options) {}\r\n getStartViewDate(options) {\r\n return this._calculateStartViewDate(options)\r\n }\r\n getCompleteViewDataMap(options) {\r\n var {\r\n groups: groups,\r\n isGroupedByDate: isGroupedByDate,\r\n isHorizontalGrouping: isHorizontalGrouping,\r\n isVerticalGrouping: isVerticalGrouping,\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval\r\n } = options;\r\n this._setVisibilityDates(options);\r\n this.setHiddenInterval(startDayHour, endDayHour, hoursInterval);\r\n var groupsList = getAllGroups(groups);\r\n var cellCountInGroupRow = this.getCellCount({\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval\r\n });\r\n var rowCountInGroup = this.getRowCount({\r\n intervalCount: intervalCount,\r\n currentDate: currentDate,\r\n viewType: viewType,\r\n hoursInterval: hoursInterval,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour\r\n });\r\n var viewDataMap = [];\r\n var allDayPanelData = this._generateAllDayPanelData(options, rowCountInGroup, cellCountInGroupRow);\r\n var viewCellsData = this._generateViewCellsData(options, rowCountInGroup, cellCountInGroupRow);\r\n allDayPanelData && viewDataMap.push(allDayPanelData);\r\n viewDataMap.push(...viewCellsData);\r\n if (isHorizontalGrouping && !isGroupedByDate) {\r\n viewDataMap = this._transformViewDataMapForHorizontalGrouping(viewDataMap, groupsList)\r\n }\r\n if (isVerticalGrouping) {\r\n viewDataMap = this._transformViewDataMapForVerticalGrouping(viewDataMap, groupsList)\r\n }\r\n if (isGroupedByDate) {\r\n viewDataMap = this._transformViewDataMapForGroupingByDate(viewDataMap, groupsList)\r\n }\r\n var completeViewDataMap = this._addKeysToCells(viewDataMap);\r\n return completeViewDataMap\r\n }\r\n _transformViewDataMapForHorizontalGrouping(viewDataMap, groupsList) {\r\n var result = viewDataMap.map(row => row.slice());\r\n groupsList.slice(1).forEach((groups, index) => {\r\n var groupIndex = index + 1;\r\n viewDataMap.forEach((row, rowIndex) => {\r\n var nextGroupRow = row.map(cellData => _extends(_extends({}, cellData), {\r\n groups: groups,\r\n groupIndex: groupIndex\r\n }));\r\n result[rowIndex].push(...nextGroupRow)\r\n })\r\n });\r\n return result\r\n }\r\n _transformViewDataMapForVerticalGrouping(viewDataMap, groupsList) {\r\n var result = viewDataMap.map(row => row.slice());\r\n groupsList.slice(1).forEach((groups, index) => {\r\n var groupIndex = index + 1;\r\n var nextGroupMap = viewDataMap.map(cellsRow => {\r\n var nextRow = cellsRow.map(cellData => _extends(_extends({}, cellData), {\r\n groupIndex: groupIndex,\r\n groups: groups\r\n }));\r\n return nextRow\r\n });\r\n result.push(...nextGroupMap)\r\n });\r\n return result\r\n }\r\n _transformViewDataMapForGroupingByDate(viewDataMap, groupsList) {\r\n var correctedGroupList = groupsList.slice(1);\r\n var correctedGroupCount = correctedGroupList.length;\r\n var result = viewDataMap.map(cellsRow => {\r\n var groupedByDateCellsRow = cellsRow.reduce((currentRow, cell) => {\r\n var rowWithCurrentCell = [...currentRow, _extends(_extends({}, cell), {\r\n isFirstGroupCell: true,\r\n isLastGroupCell: 0 === correctedGroupCount\r\n }), ...correctedGroupList.map((groups, index) => _extends(_extends({}, cell), {\r\n groups: groups,\r\n groupIndex: index + 1,\r\n isFirstGroupCell: false,\r\n isLastGroupCell: index === correctedGroupCount - 1\r\n }))];\r\n return rowWithCurrentCell\r\n }, []);\r\n return groupedByDateCellsRow\r\n });\r\n return result\r\n }\r\n _addKeysToCells(viewDataMap) {\r\n var totalColumnCount = viewDataMap[0].length;\r\n var {\r\n currentViewDataMap: result\r\n } = viewDataMap.reduce((_ref, row, rowIndex) => {\r\n var {\r\n allDayPanelsCount: allDayPanelsCount,\r\n currentViewDataMap: currentViewDataMap\r\n } = _ref;\r\n var isAllDay = row[0].allDay;\r\n var keyBase = (rowIndex - allDayPanelsCount) * totalColumnCount;\r\n var currentAllDayPanelsCount = isAllDay ? allDayPanelsCount + 1 : allDayPanelsCount;\r\n currentViewDataMap[rowIndex].forEach((cell, columnIndex) => {\r\n cell.key = keyBase + columnIndex\r\n });\r\n return {\r\n allDayPanelsCount: currentAllDayPanelsCount,\r\n currentViewDataMap: currentViewDataMap\r\n }\r\n }, {\r\n allDayPanelsCount: 0,\r\n currentViewDataMap: viewDataMap\r\n });\r\n return result\r\n }\r\n generateViewDataMap(completeViewDataMap, options) {\r\n var {\r\n rowCount: rowCount,\r\n startCellIndex: startCellIndex,\r\n startRowIndex: startRowIndex,\r\n cellCount: cellCount,\r\n isVerticalGrouping: isVerticalGrouping,\r\n isAllDayPanelVisible: isAllDayPanelVisible\r\n } = options;\r\n var sliceCells = (row, rowIndex, startIndex, count) => {\r\n var sliceToIndex = void 0 !== count ? startIndex + count : void 0;\r\n return row.slice(startIndex, sliceToIndex).map((cellData, columnIndex) => ({\r\n cellData: cellData,\r\n position: {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }))\r\n };\r\n var correctedStartRowIndex = startRowIndex;\r\n var allDayPanelMap = [];\r\n if (this._isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible)) {\r\n correctedStartRowIndex++;\r\n allDayPanelMap = sliceCells(completeViewDataMap[0], 0, startCellIndex, cellCount)\r\n }\r\n var displayedRowCount = getDisplayedRowCount(rowCount, completeViewDataMap);\r\n var dateTableMap = completeViewDataMap.slice(correctedStartRowIndex, correctedStartRowIndex + displayedRowCount).map((row, rowIndex) => sliceCells(row, rowIndex, startCellIndex, cellCount));\r\n return {\r\n allDayPanelMap: allDayPanelMap,\r\n dateTableMap: dateTableMap\r\n }\r\n }\r\n _isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible) {\r\n return !isVerticalGrouping && isAllDayPanelVisible\r\n }\r\n getViewDataFromMap(completeViewDataMap, viewDataMap, options) {\r\n var {\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n cellCount: cellCount,\r\n rowCount: rowCount,\r\n startRowIndex: startRowIndex,\r\n startCellIndex: startCellIndex,\r\n isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n isVerticalGrouping: isVerticalGrouping,\r\n isAllDayPanelVisible: isAllDayPanelVisible\r\n } = options;\r\n var {\r\n allDayPanelMap: allDayPanelMap,\r\n dateTableMap: dateTableMap\r\n } = viewDataMap;\r\n var {\r\n groupedData: groupedData\r\n } = dateTableMap.reduce((_ref2, cellsRow) => {\r\n var {\r\n previousGroupIndex: previousGroupIndex,\r\n groupedData: groupedData\r\n } = _ref2;\r\n var cellDataRow = cellsRow.map(_ref3 => {\r\n var {\r\n cellData: cellData\r\n } = _ref3;\r\n return cellData\r\n });\r\n var firstCell = cellDataRow[0];\r\n var isAllDayRow = firstCell.allDay;\r\n var currentGroupIndex = firstCell.groupIndex;\r\n if (currentGroupIndex !== previousGroupIndex) {\r\n groupedData.push({\r\n dateTable: [],\r\n isGroupedAllDayPanel: getIsGroupedAllDayPanel(!!isAllDayRow, isVerticalGrouping),\r\n groupIndex: currentGroupIndex,\r\n key: getKeyByGroup(currentGroupIndex, isVerticalGrouping)\r\n })\r\n }\r\n if (isAllDayRow) {\r\n groupedData[groupedData.length - 1].allDayPanel = cellDataRow\r\n } else {\r\n groupedData[groupedData.length - 1].dateTable.push({\r\n cells: cellDataRow,\r\n key: cellDataRow[0].key - startCellIndex\r\n })\r\n }\r\n return {\r\n groupedData: groupedData,\r\n previousGroupIndex: currentGroupIndex\r\n }\r\n }, {\r\n previousGroupIndex: -1,\r\n groupedData: []\r\n });\r\n if (this._isStandaloneAllDayPanel(isVerticalGrouping, isAllDayPanelVisible)) {\r\n groupedData[0].allDayPanel = allDayPanelMap.map(_ref4 => {\r\n var {\r\n cellData: cellData\r\n } = _ref4;\r\n return cellData\r\n })\r\n }\r\n var totalCellCount = getTotalCellCountByCompleteData(completeViewDataMap);\r\n var totalRowCount = getTotalRowCountByCompleteData(completeViewDataMap);\r\n var displayedCellCount = getDisplayedCellCount(cellCount, completeViewDataMap);\r\n var displayedRowCount = getDisplayedRowCount(rowCount, completeViewDataMap);\r\n return {\r\n groupedData: groupedData,\r\n topVirtualRowHeight: topVirtualRowHeight,\r\n bottomVirtualRowHeight: bottomVirtualRowHeight,\r\n leftVirtualCellWidth: isProvideVirtualCellsWidth ? leftVirtualCellWidth : void 0,\r\n rightVirtualCellWidth: isProvideVirtualCellsWidth ? rightVirtualCellWidth : void 0,\r\n isGroupedAllDayPanel: isGroupedAllDayPanel,\r\n leftVirtualCellCount: startCellIndex,\r\n rightVirtualCellCount: void 0 === cellCount ? 0 : totalCellCount - startCellIndex - displayedCellCount,\r\n topVirtualRowCount: startRowIndex,\r\n bottomVirtualRowCount: totalRowCount - startRowIndex - displayedRowCount\r\n }\r\n }\r\n _generateViewCellsData(options, rowCount, cellCountInGroupRow) {\r\n var viewCellsData = [];\r\n for (var rowIndex = 0; rowIndex < rowCount; rowIndex += 1) {\r\n viewCellsData.push(this._generateCellsRow(options, false, rowIndex, rowCount, cellCountInGroupRow))\r\n }\r\n return viewCellsData\r\n }\r\n _generateAllDayPanelData(options, rowCount, columnCount) {\r\n if (!options.isAllDayPanelVisible) {\r\n return null\r\n }\r\n return this._generateCellsRow(options, true, 0, rowCount, columnCount)\r\n }\r\n _generateCellsRow(options, allDay, rowIndex, rowCount, columnCount) {\r\n var cellsRow = [];\r\n for (var columnIndex = 0; columnIndex < columnCount; ++columnIndex) {\r\n var cellDataValue = this.getCellData(rowIndex, columnIndex, options, allDay);\r\n cellDataValue.index = rowIndex * columnCount + columnIndex;\r\n cellDataValue.isFirstGroupCell = this._isFirstGroupCell(rowIndex, columnIndex, options, rowCount, columnCount);\r\n cellDataValue.isLastGroupCell = this._isLastGroupCell(rowIndex, columnIndex, options, rowCount, columnCount);\r\n cellsRow.push(cellDataValue)\r\n }\r\n return cellsRow\r\n }\r\n getCellData(rowIndex, columnIndex, options, allDay) {\r\n return allDay ? this.prepareAllDayCellData(options, rowIndex, columnIndex) : this.prepareCellData(options, rowIndex, columnIndex)\r\n }\r\n prepareCellData(options, rowIndex, columnIndex) {\r\n var {\r\n groups: groups,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n interval: interval,\r\n hoursInterval: hoursInterval\r\n } = options;\r\n var groupsList = getAllGroups(groups);\r\n var startDate = this.getDateByCellIndices(options, rowIndex, columnIndex, this.getCellCountInDay(startDayHour, endDayHour, hoursInterval));\r\n var endDate = this.calculateEndDate(startDate, interval, endDayHour);\r\n var data = {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: this.tableAllDay,\r\n groupIndex: 0\r\n };\r\n if (groupsList.length > 0) {\r\n data.groups = groupsList[0]\r\n }\r\n return data\r\n }\r\n prepareAllDayCellData(options, rowIndex, columnIndex) {\r\n var data = this.prepareCellData(options, rowIndex, columnIndex);\r\n var startDate = dateUtils.trimTime(data.startDate);\r\n return _extends(_extends({}, data), {\r\n startDate: startDate,\r\n endDate: startDate,\r\n allDay: true\r\n })\r\n }\r\n getDateByCellIndices(options, rowIndex, columnIndex, cellCountInDay) {\r\n var {\r\n startViewDate: startViewDate\r\n } = options;\r\n var {\r\n startDayHour: startDayHour,\r\n interval: interval,\r\n firstDayOfWeek: firstDayOfWeek,\r\n intervalCount: intervalCount\r\n } = options;\r\n var isStartViewDateDuringDST = startViewDate.getHours() !== Math.floor(startDayHour);\r\n if (isStartViewDateDuringDST) {\r\n var dateWithCorrectHours = getStartViewDateWithoutDST(startViewDate, startDayHour);\r\n startViewDate = new Date(dateWithCorrectHours - dateUtils.dateToMilliseconds(\"day\"))\r\n }\r\n var columnCountBase = this.getCellCount(options);\r\n var rowCountBase = this.getRowCount(options);\r\n var cellIndex = this._calculateCellIndex(rowIndex, columnIndex, rowCountBase, columnCountBase);\r\n var millisecondsOffset = this.getMillisecondsOffset(cellIndex, interval, cellCountInDay);\r\n var offsetByCount = this.isWorkView ? this.getTimeOffsetByColumnIndex(columnIndex, this.getFirstDayOfWeek(firstDayOfWeek), columnCountBase, intervalCount) : 0;\r\n var startViewDateTime = startViewDate.getTime();\r\n var currentDate = new Date(startViewDateTime + millisecondsOffset + offsetByCount);\r\n var timeZoneDifference = isStartViewDateDuringDST ? 0 : dateUtils.getTimezonesDifference(startViewDate, currentDate);\r\n currentDate.setTime(currentDate.getTime() + timeZoneDifference);\r\n return currentDate\r\n }\r\n getMillisecondsOffset(cellIndex, interval, cellCountInDay) {\r\n var dayIndex = Math.floor(cellIndex / cellCountInDay);\r\n var realHiddenInterval = dayIndex * this.hiddenInterval;\r\n return interval * cellIndex + realHiddenInterval\r\n }\r\n getTimeOffsetByColumnIndex(columnIndex, firstDayOfWeek, columnCount, intervalCount) {\r\n var firstDayOfWeekDiff = Math.max(0, firstDayOfWeek - 1);\r\n var columnsInWeek = columnCount / intervalCount;\r\n var weekendCount = Math.floor((columnIndex + firstDayOfWeekDiff) / columnsInWeek);\r\n return DAY_MS * weekendCount * 2\r\n }\r\n calculateEndDate(startDate, interval, endDayHour) {\r\n var result = new Date(startDate);\r\n result.setMilliseconds(result.getMilliseconds() + Math.round(interval));\r\n return result\r\n }\r\n _calculateCellIndex(rowIndex, columnIndex, rowCount, columnCountBase) {\r\n return calculateCellIndex(rowIndex, columnIndex, rowCount)\r\n }\r\n generateGroupedDataMap(viewDataMap) {\r\n var {\r\n allDayPanelMap: allDayPanelMap,\r\n dateTableMap: dateTableMap\r\n } = viewDataMap;\r\n var {\r\n previousGroupedDataMap: dateTableGroupedMap\r\n } = dateTableMap.reduce((previousOptions, cellsRow) => {\r\n var {\r\n previousGroupedDataMap: previousGroupedDataMap,\r\n previousRowIndex: previousRowIndex,\r\n previousGroupIndex: previousGroupIndex\r\n } = previousOptions;\r\n var {\r\n groupIndex: currentGroupIndex\r\n } = cellsRow[0].cellData;\r\n var currentRowIndex = currentGroupIndex === previousGroupIndex ? previousRowIndex + 1 : 0;\r\n cellsRow.forEach(cell => {\r\n var {\r\n groupIndex: groupIndex\r\n } = cell.cellData;\r\n if (!previousGroupedDataMap[groupIndex]) {\r\n previousGroupedDataMap[groupIndex] = []\r\n }\r\n if (!previousGroupedDataMap[groupIndex][currentRowIndex]) {\r\n previousGroupedDataMap[groupIndex][currentRowIndex] = []\r\n }\r\n previousGroupedDataMap[groupIndex][currentRowIndex].push(cell)\r\n });\r\n return {\r\n previousGroupedDataMap: previousGroupedDataMap,\r\n previousRowIndex: currentRowIndex,\r\n previousGroupIndex: currentGroupIndex\r\n }\r\n }, {\r\n previousGroupedDataMap: [],\r\n previousRowIndex: -1,\r\n previousGroupIndex: -1\r\n });\r\n var allDayPanelGroupedMap = [];\r\n null === allDayPanelMap || void 0 === allDayPanelMap ? void 0 : allDayPanelMap.forEach(cell => {\r\n var {\r\n groupIndex: groupIndex\r\n } = cell.cellData;\r\n if (!allDayPanelGroupedMap[groupIndex]) {\r\n allDayPanelGroupedMap[groupIndex] = []\r\n }\r\n allDayPanelGroupedMap[groupIndex].push(cell)\r\n });\r\n return {\r\n allDayPanelGroupedMap: allDayPanelGroupedMap,\r\n dateTableGroupedMap: dateTableGroupedMap\r\n }\r\n }\r\n _isFirstGroupCell(rowIndex, columnIndex, options, rowCount, columnCount) {\r\n var {\r\n groupOrientation: groupOrientation,\r\n groups: groups,\r\n isGroupedByDate: isGroupedByDate\r\n } = options;\r\n var groupCount = getGroupCount(groups);\r\n if (isGroupedByDate) {\r\n return columnIndex % groupCount === 0\r\n }\r\n if (groupOrientation === HORIZONTAL_GROUP_ORIENTATION) {\r\n return columnIndex % columnCount === 0\r\n }\r\n return rowIndex % rowCount === 0\r\n }\r\n _isLastGroupCell(rowIndex, columnIndex, options, rowCount, columnCount) {\r\n var {\r\n groupOrientation: groupOrientation,\r\n groups: groups,\r\n isGroupedByDate: isGroupedByDate\r\n } = options;\r\n var groupCount = getGroupCount(groups);\r\n if (isGroupedByDate) {\r\n return (columnIndex + 1) % groupCount === 0\r\n }\r\n if (groupOrientation === HORIZONTAL_GROUP_ORIENTATION) {\r\n return (columnIndex + 1) % columnCount === 0\r\n }\r\n return (rowIndex + 1) % rowCount === 0\r\n }\r\n markSelectedAndFocusedCells(viewDataMap, renderOptions) {\r\n var {\r\n selectedCells: selectedCells,\r\n focusedCell: focusedCell\r\n } = renderOptions;\r\n if (!selectedCells && !focusedCell) {\r\n return viewDataMap\r\n }\r\n var {\r\n allDayPanelMap: allDayPanelMap,\r\n dateTableMap: dateTableMap\r\n } = viewDataMap;\r\n var nextDateTableMap = dateTableMap.map(row => this._markSelectedAndFocusedCellsInRow(row, selectedCells, focusedCell));\r\n var nextAllDayMap = this._markSelectedAndFocusedCellsInRow(allDayPanelMap, selectedCells, focusedCell);\r\n return {\r\n allDayPanelMap: nextAllDayMap,\r\n dateTableMap: nextDateTableMap\r\n }\r\n }\r\n _markSelectedAndFocusedCellsInRow(dataRow, selectedCells, focusedCell) {\r\n return dataRow.map(cell => {\r\n var {\r\n index: index,\r\n groupIndex: groupIndex,\r\n allDay: allDay,\r\n startDate: startDate\r\n } = cell.cellData;\r\n var indexInSelectedCells = selectedCells.findIndex(_ref5 => {\r\n var {\r\n index: selectedCellIndex,\r\n groupIndex: selectedCellGroupIndex,\r\n allDay: selectedCellAllDay,\r\n startDate: selectedCellStartDate\r\n } = _ref5;\r\n return groupIndex === selectedCellGroupIndex && (index === selectedCellIndex || void 0 === selectedCellIndex && startDate.getTime() === selectedCellStartDate.getTime()) && !!allDay === !!selectedCellAllDay\r\n });\r\n var isFocused = !!focusedCell && index === focusedCell.cellData.index && groupIndex === focusedCell.cellData.groupIndex && allDay === focusedCell.cellData.allDay;\r\n if (!isFocused && -1 === indexInSelectedCells) {\r\n return cell\r\n }\r\n return _extends(_extends({}, cell), {\r\n cellData: _extends(_extends({}, cell.cellData), {\r\n isSelected: indexInSelectedCells > -1,\r\n isFocused: isFocused\r\n })\r\n })\r\n })\r\n }\r\n getInterval(hoursInterval) {\r\n return hoursInterval * HOUR_MS\r\n }\r\n _getIntervalDuration(intervalCount) {\r\n return dateUtils.dateToMilliseconds(\"day\") * intervalCount\r\n }\r\n _setVisibilityDates(options) {}\r\n getCellCountInDay(startDayHour, endDayHour, hoursInterval) {\r\n var result = calculateDayDuration(startDayHour, endDayHour) / hoursInterval;\r\n return Math.ceil(result)\r\n }\r\n getCellCount(options) {\r\n var {\r\n intervalCount: intervalCount,\r\n viewType: viewType,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval\r\n } = options;\r\n var cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval);\r\n var columnCountInDay = isHorizontalView(viewType) ? cellCountInDay : 1;\r\n return this.daysInInterval * intervalCount * columnCountInDay\r\n }\r\n getRowCount(options) {\r\n var {\r\n viewType: viewType,\r\n startDayHour: startDayHour,\r\n endDayHour: endDayHour,\r\n hoursInterval: hoursInterval\r\n } = options;\r\n var cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval);\r\n var rowCountInDay = !isHorizontalView(viewType) ? cellCountInDay : 1;\r\n return rowCountInDay\r\n }\r\n setHiddenInterval(startDayHour, endDayHour, hoursInterval) {\r\n this.hiddenInterval = DAY_MS - this.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval)\r\n }\r\n getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) {\r\n var cellCountInDay = this.getCellCountInDay(startDayHour, endDayHour, hoursInterval);\r\n return hoursInterval * cellCountInDay * HOUR_MS\r\n }\r\n getFirstDayOfWeek(firstDayOfWeekOption) {\r\n return firstDayOfWeekOption\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_day.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n calculateStartViewDate\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/day\";\r\nimport {\r\n ViewDataGenerator\r\n} from \"./m_view_data_generator\";\r\nexport class ViewDataGeneratorDay extends ViewDataGenerator {\r\n _calculateStartViewDate(options) {\r\n return calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount))\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/day.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getViewStartByOptions,\r\n setOptionHour\r\n} from \"./base\";\r\nexport var calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration) => {\r\n var firstViewDate = getViewStartByOptions(startDate, currentDate, intervalDuration, startDate);\r\n return setOptionHour(firstViewDate, startDayHour)\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../../../core/utils/date\";\r\nimport dateLocalization from \"../../../../../../../localization/date\";\r\nimport {\r\n getCalculatedFirstDayOfWeek,\r\n isDateInRange,\r\n setOptionHour\r\n} from \"./base\";\r\nexport var getViewStartByOptions = (startDate, currentDate, intervalCount, startViewDate) => {\r\n if (!startDate) {\r\n return new Date(currentDate)\r\n }\r\n var currentStartDate = new Date(startViewDate);\r\n var validStartViewDate = new Date(startViewDate);\r\n var diff = currentStartDate.getTime() <= currentDate.getTime() ? 1 : -1;\r\n var endDate = new Date(new Date(validStartViewDate.setMonth(validStartViewDate.getMonth() + diff * intervalCount)));\r\n while (!isDateInRange(currentDate, currentStartDate, endDate, diff)) {\r\n currentStartDate = new Date(endDate);\r\n if (diff > 0) {\r\n currentStartDate.setDate(1)\r\n }\r\n endDate = new Date(new Date(endDate.setMonth(endDate.getMonth() + diff * intervalCount)))\r\n }\r\n return diff > 0 ? currentStartDate : endDate\r\n};\r\nexport var calculateStartViewDate = (currentDate, startDayHour, startDate, intervalCount, firstDayOfWeekOption) => {\r\n var viewStart = getViewStartByOptions(startDate, currentDate, intervalCount, dateUtils.getFirstMonthDate(startDate));\r\n var firstMonthDate = dateUtils.getFirstMonthDate(viewStart);\r\n var firstDayOfWeek = getCalculatedFirstDayOfWeek(firstDayOfWeekOption);\r\n var firstViewDate = dateUtils.getFirstWeekDate(firstMonthDate, firstDayOfWeek);\r\n return setOptionHour(firstViewDate, startDayHour)\r\n};\r\nexport var calculateCellIndex = (rowIndex, columnIndex, _, columnCount) => rowIndex * columnCount + columnIndex;\r\nexport var isFirstCellInMonthWithIntervalCount = (cellDate, intervalCount) => 1 === cellDate.getDate() && intervalCount > 1;\r\nexport var getCellText = (date, intervalCount) => {\r\n if (isFirstCellInMonthWithIntervalCount(date, intervalCount)) {\r\n var monthName = dateLocalization.getMonthNames(\"abbreviated\")[date.getMonth()];\r\n return [monthName, dateLocalization.format(date, \"day\")].join(\" \")\r\n }\r\n return dateLocalization.format(date, \"dd\")\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport dateLocalization from \"../../../../localization/date\";\r\nimport {\r\n getToday,\r\n setOptionHour\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n calculateCellIndex,\r\n calculateStartViewDate,\r\n getCellText,\r\n getViewStartByOptions,\r\n isFirstCellInMonthWithIntervalCount\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/month\";\r\nimport {\r\n calculateAlignedWeeksBetweenDates\r\n} from \"./m_utils\";\r\nimport {\r\n ViewDataGenerator\r\n} from \"./m_view_data_generator\";\r\nvar DAY_IN_MILLISECONDS = dateUtils.dateToMilliseconds(\"day\");\r\nvar DAYS_IN_WEEK = 7;\r\nexport class ViewDataGeneratorMonth extends ViewDataGenerator {\r\n constructor() {\r\n super(...arguments);\r\n this.tableAllDay = void 0\r\n }\r\n getCellData(rowIndex, columnIndex, options, allDay) {\r\n var data = super.getCellData(rowIndex, columnIndex, options, false);\r\n var {\r\n startDate: startDate\r\n } = data;\r\n var {\r\n indicatorTime: indicatorTime,\r\n timeZoneCalculator: timeZoneCalculator,\r\n intervalCount: intervalCount\r\n } = options;\r\n data.today = this.isCurrentDate(startDate, indicatorTime, timeZoneCalculator);\r\n data.otherMonth = this.isOtherMonth(startDate, this._minVisibleDate, this._maxVisibleDate);\r\n data.firstDayOfMonth = isFirstCellInMonthWithIntervalCount(startDate, intervalCount);\r\n data.text = getCellText(startDate, intervalCount);\r\n return data\r\n }\r\n isCurrentDate(date, indicatorTime, timeZoneCalculator) {\r\n return dateUtils.sameDate(date, getToday(indicatorTime, timeZoneCalculator))\r\n }\r\n isOtherMonth(cellDate, minDate, maxDate) {\r\n return !dateUtils.dateInRange(cellDate, minDate, maxDate, \"date\")\r\n }\r\n _calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount) {\r\n return calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount)\r\n }\r\n calculateEndDate(startDate, interval, endDayHour) {\r\n return setOptionHour(startDate, endDayHour)\r\n }\r\n getInterval() {\r\n return DAY_IN_MILLISECONDS\r\n }\r\n _calculateStartViewDate(options) {\r\n return calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, options.intervalCount, this.getFirstDayOfWeek(options.firstDayOfWeek))\r\n }\r\n _setVisibilityDates(options) {\r\n var {\r\n intervalCount: intervalCount,\r\n startDate: startDate,\r\n currentDate: currentDate\r\n } = options;\r\n var firstMonthDate = dateUtils.getFirstMonthDate(startDate);\r\n var viewStart = getViewStartByOptions(startDate, currentDate, intervalCount, firstMonthDate);\r\n this._minVisibleDate = new Date(viewStart.setDate(1));\r\n var nextMonthDate = new Date(viewStart.setMonth(viewStart.getMonth() + intervalCount));\r\n this._maxVisibleDate = new Date(nextMonthDate.setDate(0))\r\n }\r\n getCellCount() {\r\n return DAYS_IN_WEEK\r\n }\r\n getRowCount(options) {\r\n var _a;\r\n var startDate = new Date(options.currentDate);\r\n startDate.setDate(1);\r\n var endDate = new Date(startDate);\r\n endDate.setMonth(endDate.getMonth() + options.intervalCount);\r\n endDate.setDate(0);\r\n return calculateAlignedWeeksBetweenDates(startDate, endDate, null !== (_a = options.firstDayOfWeek) && void 0 !== _a ? _a : dateLocalization.firstDayOfWeekIndex())\r\n }\r\n getCellCountInDay() {\r\n return 1\r\n }\r\n setHiddenInterval() {\r\n this.hiddenInterval = 0\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_utils.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n VIEWS\r\n} from \"../../m_constants\";\r\nimport {\r\n ViewDataGenerator\r\n} from \"./m_view_data_generator\";\r\nimport {\r\n ViewDataGeneratorDay\r\n} from \"./m_view_data_generator_day\";\r\nimport {\r\n ViewDataGeneratorMonth\r\n} from \"./m_view_data_generator_month\";\r\nimport {\r\n ViewDataGeneratorTimelineMonth\r\n} from \"./m_view_data_generator_timeline_month\";\r\nimport {\r\n ViewDataGeneratorWeek\r\n} from \"./m_view_data_generator_week\";\r\nimport {\r\n ViewDataGeneratorWorkWeek\r\n} from \"./m_view_data_generator_work_week\";\r\nvar DAYS_IN_WEEK = 7;\r\nvar MS_IN_DAY = 864e5;\r\nexport var getViewDataGeneratorByViewType = viewType => {\r\n switch (viewType) {\r\n case VIEWS.MONTH:\r\n return new ViewDataGeneratorMonth;\r\n case VIEWS.TIMELINE_MONTH:\r\n return new ViewDataGeneratorTimelineMonth;\r\n case VIEWS.DAY:\r\n case VIEWS.TIMELINE_DAY:\r\n return new ViewDataGeneratorDay;\r\n case VIEWS.WEEK:\r\n case VIEWS.TIMELINE_WEEK:\r\n return new ViewDataGeneratorWeek;\r\n case VIEWS.WORK_WEEK:\r\n case VIEWS.TIMELINE_WORK_WEEK:\r\n return new ViewDataGeneratorWorkWeek;\r\n default:\r\n return new ViewDataGenerator\r\n }\r\n};\r\nexport function alignToFirstDayOfWeek(date, firstDayOfWeek) {\r\n var newDate = new Date(date);\r\n var dayDiff = newDate.getDay() - firstDayOfWeek;\r\n if (dayDiff < 0) {\r\n dayDiff += DAYS_IN_WEEK\r\n }\r\n newDate.setDate(newDate.getDate() - dayDiff);\r\n return newDate\r\n}\r\nexport function alignToLastDayOfWeek(date, firstDayOfWeek) {\r\n var newDate = alignToFirstDayOfWeek(date, firstDayOfWeek);\r\n newDate.setDate(newDate.getDate() + DAYS_IN_WEEK - 1);\r\n return newDate\r\n}\r\nexport function calculateDaysBetweenDates(fromDate, toDate) {\r\n var msDiff = dateUtils.trimTime(toDate).getTime() - dateUtils.trimTime(fromDate).getTime();\r\n return Math.round(msDiff / MS_IN_DAY) + 1\r\n}\r\nexport function calculateAlignedWeeksBetweenDates(fromDate, toDate, firstDayOfWeek) {\r\n var alignedFromDate = alignToFirstDayOfWeek(fromDate, firstDayOfWeek);\r\n var alignedToDate = alignToLastDayOfWeek(toDate, firstDayOfWeek);\r\n var weekCount = calculateDaysBetweenDates(alignedFromDate, alignedToDate) / DAYS_IN_WEEK;\r\n return Math.max(weekCount, 6)\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_timeline_month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n setOptionHour\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n calculateCellIndex\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/month\";\r\nimport {\r\n calculateStartViewDate\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/timeline_month\";\r\nimport {\r\n ViewDataGenerator\r\n} from \"./m_view_data_generator\";\r\nvar DAY_IN_MILLISECONDS = dateUtils.dateToMilliseconds(\"day\");\r\nexport class ViewDataGeneratorTimelineMonth extends ViewDataGenerator {\r\n _calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount) {\r\n return calculateCellIndex(rowIndex, columnIndex, rowCount, columnCount)\r\n }\r\n calculateEndDate(startDate, interval, endDayHour) {\r\n return setOptionHour(startDate, endDayHour)\r\n }\r\n getInterval() {\r\n return DAY_IN_MILLISECONDS\r\n }\r\n _calculateStartViewDate(options) {\r\n return calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, options.intervalCount)\r\n }\r\n getCellCount(options) {\r\n var {\r\n intervalCount: intervalCount,\r\n currentDate: currentDate\r\n } = options;\r\n var cellCount = 0;\r\n for (var i = 1; i <= intervalCount; i++) {\r\n cellCount += new Date(currentDate.getFullYear(), currentDate.getMonth() + i, 0).getDate()\r\n }\r\n return cellCount\r\n }\r\n setHiddenInterval() {\r\n this.hiddenInterval = 0\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/timeline_month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../../../core/utils/date\";\r\nimport {\r\n setOptionHour\r\n} from \"./base\";\r\nimport {\r\n getViewStartByOptions\r\n} from \"./month\";\r\nexport var calculateStartViewDate = (currentDate, startDayHour, startDate, intervalCount) => {\r\n var firstViewDate = dateUtils.getFirstMonthDate(getViewStartByOptions(startDate, currentDate, intervalCount, dateUtils.getFirstMonthDate(startDate)));\r\n return setOptionHour(firstViewDate, startDayHour)\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n calculateStartViewDate,\r\n getIntervalDuration\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/week\";\r\nimport {\r\n ViewDataGenerator\r\n} from \"./m_view_data_generator\";\r\nexport class ViewDataGeneratorWeek extends ViewDataGenerator {\r\n constructor() {\r\n super(...arguments);\r\n this.daysInInterval = 7\r\n }\r\n _getIntervalDuration(intervalCount) {\r\n return getIntervalDuration(intervalCount)\r\n }\r\n _calculateStartViewDate(options) {\r\n return calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount), this.getFirstDayOfWeek(options.firstDayOfWeek))\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/work_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport dateUtils from \"../../../../../../../core/utils/date\";\r\nimport {\r\n getViewStartByOptions,\r\n setOptionHour\r\n} from \"./base\";\r\nimport {\r\n getValidStartDate\r\n} from \"./week\";\r\nvar SATURDAY_INDEX = 6;\r\nvar SUNDAY_INDEX = 0;\r\nvar MONDAY_INDEX = 1;\r\nvar DAYS_IN_WEEK = 7;\r\nexport var isDataOnWeekend = date => {\r\n var day = date.getDay();\r\n return day === SATURDAY_INDEX || day === SUNDAY_INDEX\r\n};\r\nexport var getWeekendsCount = days => 2 * Math.floor(days / 7);\r\nexport var calculateStartViewDate = (currentDate, startDayHour, startDate, intervalDuration, firstDayOfWeek) => {\r\n var viewStart = getViewStartByOptions(startDate, currentDate, intervalDuration, getValidStartDate(startDate, firstDayOfWeek));\r\n var firstViewDate = dateUtils.getFirstWeekDate(viewStart, firstDayOfWeek);\r\n if (isDataOnWeekend(firstViewDate)) {\r\n var currentDay = firstViewDate.getDay();\r\n var distance = (MONDAY_INDEX + DAYS_IN_WEEK - currentDay) % 7;\r\n firstViewDate.setDate(firstViewDate.getDate() + distance)\r\n }\r\n return setOptionHour(firstViewDate, startDayHour)\r\n};\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_generator_work_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n calculateStartViewDate,\r\n isDataOnWeekend\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/work_week\";\r\nimport {\r\n ViewDataGeneratorWeek\r\n} from \"./m_view_data_generator_week\";\r\nexport class ViewDataGeneratorWorkWeek extends ViewDataGeneratorWeek {\r\n constructor() {\r\n super(...arguments);\r\n this.daysInInterval = 5;\r\n this.isWorkView = true\r\n }\r\n isSkippedDate(date) {\r\n return isDataOnWeekend(date)\r\n }\r\n _calculateStartViewDate(options) {\r\n return calculateStartViewDate(options.currentDate, options.startDayHour, options.startDate, this._getIntervalDuration(options.intervalCount), this.getFirstDayOfWeek(options.firstDayOfWeek))\r\n }\r\n getFirstDayOfWeek(firstDayOfWeekOption) {\r\n return firstDayOfWeekOption || 0\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/view_model/m_view_data_provider.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar __rest = this && this.__rest || function(s, e) {\r\n var t = {};\r\n for (var p in s) {\r\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) {\r\n t[p] = s[p]\r\n }\r\n }\r\n if (null != s && \"function\" === typeof Object.getOwnPropertySymbols) {\r\n var i = 0;\r\n for (p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) {\r\n t[p[i]] = s[p[i]]\r\n }\r\n }\r\n }\r\n return t\r\n};\r\nimport dateUtils from \"../../../../core/utils/date\";\r\nimport {\r\n getGroupPanelData\r\n} from \"../../../../renovation/ui/scheduler/view_model/group_panel/utils\";\r\nimport {\r\n calculateIsGroupedAllDayPanel\r\n} from \"../../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n isGroupingByDate,\r\n isHorizontalGroupingApplied,\r\n isVerticalGroupingApplied\r\n} from \"../../../../renovation/ui/scheduler/workspaces/utils\";\r\nimport timeZoneUtils from \"../../m_utils_time_zone\";\r\nimport {\r\n DateHeaderDataGenerator\r\n} from \"./m_date_header_data_generator\";\r\nimport {\r\n GroupedDataMapProvider\r\n} from \"./m_grouped_data_map_provider\";\r\nimport {\r\n TimePanelDataGenerator\r\n} from \"./m_time_panel_data_generator\";\r\nimport {\r\n getViewDataGeneratorByViewType\r\n} from \"./m_utils\";\r\nexport default class ViewDataProvider {\r\n constructor(viewType) {\r\n this.viewDataGenerator = getViewDataGeneratorByViewType(viewType);\r\n this.viewData = {};\r\n this.completeViewDataMap = [];\r\n this.completeDateHeaderMap = [];\r\n this.viewDataMap = {};\r\n this._groupedDataMapProvider = null\r\n }\r\n get groupedDataMap() {\r\n return this._groupedDataMapProvider.groupedDataMap\r\n }\r\n get hiddenInterval() {\r\n return this.viewDataGenerator.hiddenInterval\r\n }\r\n isSkippedDate(date) {\r\n return this.viewDataGenerator.isSkippedDate(date)\r\n }\r\n update(options, isGenerateNewViewData) {\r\n this.viewDataGenerator = getViewDataGeneratorByViewType(options.viewType);\r\n var {\r\n viewDataGenerator: viewDataGenerator\r\n } = this;\r\n var dateHeaderDataGenerator = new DateHeaderDataGenerator(viewDataGenerator);\r\n var timePanelDataGenerator = new TimePanelDataGenerator(viewDataGenerator);\r\n var renderOptions = this._transformRenderOptions(options);\r\n renderOptions.interval = this.viewDataGenerator.getInterval(renderOptions.hoursInterval);\r\n this._options = renderOptions;\r\n if (isGenerateNewViewData) {\r\n this.completeViewDataMap = viewDataGenerator.getCompleteViewDataMap(renderOptions);\r\n this.completeDateHeaderMap = dateHeaderDataGenerator.getCompleteDateHeaderMap(renderOptions, this.completeViewDataMap);\r\n if (renderOptions.isGenerateTimePanelData) {\r\n this.completeTimePanelMap = timePanelDataGenerator.getCompleteTimePanelMap(renderOptions, this.completeViewDataMap)\r\n }\r\n }\r\n this.viewDataMap = viewDataGenerator.generateViewDataMap(this.completeViewDataMap, renderOptions);\r\n this.updateViewData(renderOptions);\r\n this._groupedDataMapProvider = new GroupedDataMapProvider(this.viewDataGenerator, this.viewDataMap, this.completeViewDataMap, {\r\n isVerticalGrouping: renderOptions.isVerticalGrouping,\r\n viewType: renderOptions.viewType\r\n });\r\n this.dateHeaderData = dateHeaderDataGenerator.generateDateHeaderData(this.completeDateHeaderMap, this.completeViewDataMap, renderOptions);\r\n if (renderOptions.isGenerateTimePanelData) {\r\n this.timePanelData = timePanelDataGenerator.generateTimePanelData(this.completeTimePanelMap, renderOptions)\r\n }\r\n }\r\n createGroupedDataMapProvider() {\r\n this._groupedDataMapProvider = new GroupedDataMapProvider(this.viewDataGenerator, this.viewDataMap, this.completeViewDataMap, {\r\n isVerticalGrouping: this._options.isVerticalGrouping,\r\n viewType: this._options.viewType\r\n })\r\n }\r\n updateViewData(options) {\r\n var renderOptions = this._transformRenderOptions(options);\r\n this.viewDataMapWithSelection = this.viewDataGenerator.markSelectedAndFocusedCells(this.viewDataMap, renderOptions);\r\n this.viewData = this.viewDataGenerator.getViewDataFromMap(this.completeViewDataMap, this.viewDataMapWithSelection, renderOptions)\r\n }\r\n _transformRenderOptions(renderOptions) {\r\n var {\r\n groups: groups,\r\n groupOrientation: groupOrientation,\r\n groupByDate: groupByDate,\r\n isAllDayPanelVisible: isAllDayPanelVisible\r\n } = renderOptions, restOptions = __rest(renderOptions, [\"groups\", \"groupOrientation\", \"groupByDate\", \"isAllDayPanelVisible\"]);\r\n return _extends(_extends({}, restOptions), {\r\n startViewDate: this.viewDataGenerator._calculateStartViewDate(renderOptions),\r\n isVerticalGrouping: isVerticalGroupingApplied(groups, groupOrientation),\r\n isHorizontalGrouping: isHorizontalGroupingApplied(groups, groupOrientation),\r\n isGroupedByDate: isGroupingByDate(groups, groupOrientation, groupByDate),\r\n isGroupedAllDayPanel: calculateIsGroupedAllDayPanel(groups, groupOrientation, isAllDayPanelVisible),\r\n groups: groups,\r\n groupOrientation: groupOrientation,\r\n isAllDayPanelVisible: isAllDayPanelVisible\r\n })\r\n }\r\n getGroupPanelData(options) {\r\n var renderOptions = this._transformRenderOptions(options);\r\n if (renderOptions.groups.length > 0) {\r\n var cellCount = this.getCellCount(renderOptions);\r\n return getGroupPanelData(renderOptions.groups, cellCount, renderOptions.isGroupedByDate, renderOptions.isGroupedByDate ? 1 : cellCount)\r\n }\r\n return\r\n }\r\n getGroupStartDate(groupIndex) {\r\n return this._groupedDataMapProvider.getGroupStartDate(groupIndex)\r\n }\r\n getGroupEndDate(groupIndex) {\r\n return this._groupedDataMapProvider.getGroupEndDate(groupIndex)\r\n }\r\n findGroupCellStartDate(groupIndex, startDate, endDate) {\r\n var isFindByDate = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : false;\r\n return this._groupedDataMapProvider.findGroupCellStartDate(groupIndex, startDate, endDate, isFindByDate)\r\n }\r\n findAllDayGroupCellStartDate(groupIndex, startDate) {\r\n return this._groupedDataMapProvider.findAllDayGroupCellStartDate(groupIndex, startDate)\r\n }\r\n findCellPositionInMap(cellInfo) {\r\n return this._groupedDataMapProvider.findCellPositionInMap(cellInfo)\r\n }\r\n hasAllDayPanel() {\r\n var {\r\n viewData: viewData\r\n } = this.viewDataMap;\r\n var {\r\n allDayPanel: allDayPanel\r\n } = viewData.groupedData[0];\r\n return !viewData.isGroupedAllDayPanel && (null === allDayPanel || void 0 === allDayPanel ? void 0 : allDayPanel.length) > 0\r\n }\r\n getCellsGroup(groupIndex) {\r\n return this._groupedDataMapProvider.getCellsGroup(groupIndex)\r\n }\r\n getCompletedGroupsInfo() {\r\n return this._groupedDataMapProvider.getCompletedGroupsInfo()\r\n }\r\n getGroupIndices() {\r\n return this._groupedDataMapProvider.getGroupIndices()\r\n }\r\n getLastGroupCellPosition(groupIndex) {\r\n return this._groupedDataMapProvider.getLastGroupCellPosition(groupIndex)\r\n }\r\n getRowCountInGroup(groupIndex) {\r\n return this._groupedDataMapProvider.getRowCountInGroup(groupIndex)\r\n }\r\n getCellData(rowIndex, columnIndex, isAllDay, rtlEnabled) {\r\n var row = isAllDay && !this._options.isVerticalGrouping ? this.viewDataMap.allDayPanelMap : this.viewDataMap.dateTableMap[rowIndex];\r\n var actualColumnIndex = !rtlEnabled ? columnIndex : row.length - 1 - columnIndex;\r\n var {\r\n cellData: cellData\r\n } = row[actualColumnIndex];\r\n return cellData\r\n }\r\n getCellsByGroupIndexAndAllDay(groupIndex, allDay) {\r\n var rowsPerGroup = this._getRowCountWithAllDayRows();\r\n var isShowAllDayPanel = this._options.isAllDayPanelVisible;\r\n var firstRowInGroup = this._options.isVerticalGrouping ? groupIndex * rowsPerGroup : 0;\r\n var lastRowInGroup = this._options.isVerticalGrouping ? (groupIndex + 1) * rowsPerGroup - 1 : rowsPerGroup;\r\n var correctedFirstRow = isShowAllDayPanel && !allDay ? firstRowInGroup + 1 : firstRowInGroup;\r\n var correctedLastRow = allDay ? correctedFirstRow : lastRowInGroup;\r\n return this.completeViewDataMap.slice(correctedFirstRow, correctedLastRow + 1).map(row => row.filter(_ref => {\r\n var {\r\n groupIndex: currentGroupIndex\r\n } = _ref;\r\n return groupIndex === currentGroupIndex\r\n }))\r\n }\r\n getCellCountWithGroup(groupIndex) {\r\n var rowIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n return dateTableGroupedMap.filter((_, index) => index <= groupIndex).reduce((previous, row) => previous + row[rowIndex].length, 0)\r\n }\r\n hasGroupAllDayPanel(groupIndex) {\r\n var _a, _b;\r\n if (this._options.isVerticalGrouping) {\r\n return !!(null === (_a = this.groupedDataMap.dateTableGroupedMap[groupIndex]) || void 0 === _a ? void 0 : _a[0][0].cellData.allDay)\r\n }\r\n return (null === (_b = this.groupedDataMap.allDayPanelGroupedMap[groupIndex]) || void 0 === _b ? void 0 : _b.length) > 0\r\n }\r\n isGroupIntersectDateInterval(groupIndex, startDate, endDate) {\r\n var groupStartDate = this.getGroupStartDate(groupIndex);\r\n var groupEndDate = this.getGroupEndDate(groupIndex);\r\n return startDate < groupEndDate && endDate > groupStartDate\r\n }\r\n findGlobalCellPosition(date) {\r\n var groupIndex = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var {\r\n completeViewDataMap: completeViewDataMap\r\n } = this;\r\n var showAllDayPanel = this._options.isAllDayPanelVisible;\r\n for (var rowIndex = 0; rowIndex < completeViewDataMap.length; rowIndex += 1) {\r\n var currentRow = completeViewDataMap[rowIndex];\r\n for (var columnIndex = 0; columnIndex < currentRow.length; columnIndex += 1) {\r\n var cellData = currentRow[columnIndex];\r\n var {\r\n startDate: currentStartDate,\r\n endDate: currentEndDate,\r\n groupIndex: currentGroupIndex,\r\n allDay: currentAllDay\r\n } = cellData;\r\n if (groupIndex === currentGroupIndex && allDay === !!currentAllDay && this._compareDatesAndAllDay(date, currentStartDate, currentEndDate, allDay)) {\r\n return {\r\n position: {\r\n columnIndex: columnIndex,\r\n rowIndex: showAllDayPanel && !this._options.isVerticalGrouping ? rowIndex - 1 : rowIndex\r\n },\r\n cellData: cellData\r\n }\r\n }\r\n }\r\n }\r\n return\r\n }\r\n _compareDatesAndAllDay(date, cellStartDate, cellEndDate, allDay) {\r\n var time = date.getTime();\r\n var trimmedTime = dateUtils.trimTime(date).getTime();\r\n var cellStartTime = cellStartDate.getTime();\r\n var cellEndTime = cellEndDate.getTime();\r\n return !allDay && time >= cellStartTime && time < cellEndTime || allDay && trimmedTime === cellStartTime\r\n }\r\n getSkippedDaysCount(groupIndex, startDate, endDate, daysCount) {\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this._groupedDataMapProvider.groupedDataMap;\r\n var groupedData = dateTableGroupedMap[groupIndex];\r\n var includedDays = 0;\r\n for (var rowIndex = 0; rowIndex < groupedData.length; rowIndex += 1) {\r\n for (var columnIndex = 0; columnIndex < groupedData[rowIndex].length; columnIndex += 1) {\r\n var cell = groupedData[rowIndex][columnIndex].cellData;\r\n if (startDate.getTime() < cell.endDate.getTime() && endDate.getTime() > cell.startDate.getTime()) {\r\n includedDays += 1\r\n }\r\n }\r\n }\r\n var lastCell = groupedData[groupedData.length - 1][groupedData[0].length - 1].cellData;\r\n var lastCellStart = dateUtils.trimTime(lastCell.startDate);\r\n var daysAfterView = Math.floor((endDate.getTime() - lastCellStart.getTime()) / dateUtils.dateToMilliseconds(\"day\"));\r\n var deltaDays = daysAfterView > 0 ? daysAfterView : 0;\r\n return daysCount - includedDays - deltaDays\r\n }\r\n getColumnsCount() {\r\n var {\r\n dateTableMap: dateTableMap\r\n } = this.viewDataMap;\r\n return dateTableMap ? dateTableMap[0].length : 0\r\n }\r\n getViewEdgeIndices(isAllDayPanel) {\r\n if (isAllDayPanel) {\r\n return {\r\n firstColumnIndex: 0,\r\n lastColumnIndex: this.viewDataMap.allDayPanelMap.length - 1,\r\n firstRowIndex: 0,\r\n lastRowIndex: 0\r\n }\r\n }\r\n return {\r\n firstColumnIndex: 0,\r\n lastColumnIndex: this.viewDataMap.dateTableMap[0].length - 1,\r\n firstRowIndex: 0,\r\n lastRowIndex: this.viewDataMap.dateTableMap.length - 1\r\n }\r\n }\r\n getGroupEdgeIndices(groupIndex, isAllDay) {\r\n var groupedDataMap = this.groupedDataMap.dateTableGroupedMap[groupIndex];\r\n var cellsCount = groupedDataMap[0].length;\r\n var rowsCount = groupedDataMap.length;\r\n var firstColumnIndex = groupedDataMap[0][0].position.columnIndex;\r\n var lastColumnIndex = groupedDataMap[0][cellsCount - 1].position.columnIndex;\r\n if (isAllDay) {\r\n return {\r\n firstColumnIndex: firstColumnIndex,\r\n lastColumnIndex: lastColumnIndex,\r\n firstRowIndex: 0,\r\n lastRowIndex: 0\r\n }\r\n }\r\n return {\r\n firstColumnIndex: firstColumnIndex,\r\n lastColumnIndex: lastColumnIndex,\r\n firstRowIndex: groupedDataMap[0][0].position.rowIndex,\r\n lastRowIndex: groupedDataMap[rowsCount - 1][0].position.rowIndex\r\n }\r\n }\r\n isSameCell(firstCellData, secondCellData) {\r\n var {\r\n startDate: firstStartDate,\r\n groupIndex: firstGroupIndex,\r\n allDay: firstAllDay,\r\n index: firstIndex\r\n } = firstCellData;\r\n var {\r\n startDate: secondStartDate,\r\n groupIndex: secondGroupIndex,\r\n allDay: secondAllDay,\r\n index: secondIndex\r\n } = secondCellData;\r\n return firstStartDate.getTime() === secondStartDate.getTime() && firstGroupIndex === secondGroupIndex && firstAllDay === secondAllDay && firstIndex === secondIndex\r\n }\r\n getLastViewDate() {\r\n var {\r\n completeViewDataMap: completeViewDataMap\r\n } = this;\r\n var rowsCount = completeViewDataMap.length - 1;\r\n return completeViewDataMap[rowsCount][completeViewDataMap[rowsCount].length - 1].endDate\r\n }\r\n getStartViewDate() {\r\n return this._options.startViewDate\r\n }\r\n getIntervalDuration(intervalCount) {\r\n return this.viewDataGenerator._getIntervalDuration(intervalCount)\r\n }\r\n getLastCellEndDate() {\r\n return new Date(this.getLastViewDate().getTime() - dateUtils.dateToMilliseconds(\"minute\"))\r\n }\r\n getLastViewDateByEndDayHour(endDayHour) {\r\n var lastCellEndDate = this.getLastCellEndDate();\r\n var endTime = dateUtils.dateTimeFromDecimal(endDayHour);\r\n var endDateOfLastViewCell = new Date(lastCellEndDate.setHours(endTime.hours, endTime.minutes));\r\n return this._adjustEndDateByDaylightDiff(lastCellEndDate, endDateOfLastViewCell)\r\n }\r\n _adjustEndDateByDaylightDiff(startDate, endDate) {\r\n var daylightDiff = timeZoneUtils.getDaylightOffsetInMs(startDate, endDate);\r\n var endDateOfLastViewCell = new Date(endDate.getTime() - daylightDiff);\r\n return new Date(endDateOfLastViewCell.getTime() - dateUtils.dateToMilliseconds(\"minute\"))\r\n }\r\n getCellCountInDay(startDayHour, endDayHour, hoursInterval) {\r\n return this.viewDataGenerator.getCellCountInDay(startDayHour, endDayHour, hoursInterval)\r\n }\r\n getCellCount(options) {\r\n return this.viewDataGenerator.getCellCount(options)\r\n }\r\n getRowCount(options) {\r\n return this.viewDataGenerator.getRowCount(options)\r\n }\r\n getVisibleDayDuration(startDayHour, endDayHour, hoursInterval) {\r\n return this.viewDataGenerator.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval)\r\n }\r\n _getRowCountWithAllDayRows() {\r\n var allDayRowCount = this._options.isAllDayPanelVisible ? 1 : 0;\r\n return this.getRowCount(this._options) + allDayRowCount\r\n }\r\n getFirstDayOfWeek(firstDayOfWeekOption) {\r\n return this.viewDataGenerator.getFirstDayOfWeek(firstDayOfWeekOption)\r\n }\r\n setViewOptions(options) {\r\n this._options = this._transformRenderOptions(options)\r\n }\r\n getViewOptions() {\r\n return this._options\r\n }\r\n getViewPortGroupCount() {\r\n var {\r\n dateTableGroupedMap: dateTableGroupedMap\r\n } = this.groupedDataMap;\r\n return (null === dateTableGroupedMap || void 0 === dateTableGroupedMap ? void 0 : dateTableGroupedMap.length) || 0\r\n }\r\n}\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n locate,\r\n resetPosition\r\n} from \"../../../animation/translator\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport {\r\n compileGetter\r\n} from \"../../../core/utils/data\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n getHeight,\r\n getOuterHeight,\r\n getOuterWidth,\r\n getWidth,\r\n setOuterHeight,\r\n setWidth\r\n} from \"../../../core/utils/size\";\r\nimport {\r\n isDefined\r\n} from \"../../../core/utils/type\";\r\nimport {\r\n getWindow,\r\n hasWindow\r\n} from \"../../../core/utils/window\";\r\nimport {\r\n name as clickEventName\r\n} from \"../../../events/click\";\r\nimport {\r\n name as contextMenuEventName\r\n} from \"../../../events/contextmenu\";\r\nimport eventsEngine from \"../../../events/core/events_engine\";\r\nimport {\r\n drop as dragEventDrop,\r\n enter as dragEventEnter,\r\n leave as dragEventLeave\r\n} from \"../../../events/drag\";\r\nimport pointerEvents from \"../../../events/pointer\";\r\nimport {\r\n addNamespace,\r\n isMouseEvent\r\n} from \"../../../events/utils/index\";\r\nimport messageLocalization from \"../../../localization/message\";\r\nimport {\r\n getMemoizeScrollTo\r\n} from \"../../../renovation/ui/common/utils/scroll/getMemoizeScrollTo\";\r\nimport {\r\n calculateIsGroupedAllDayPanel,\r\n calculateViewStartDate,\r\n getCellDuration,\r\n getStartViewDateTimeOffset,\r\n getViewStartByOptions,\r\n isDateAndTimeView,\r\n validateDayHours\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport Scrollable from \"../../../ui/scroll_view/ui.scrollable\";\r\nimport errors from \"../../../ui/widget/ui.errors\";\r\nimport dxrAllDayPanelTable from \"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/table.j\";\r\nimport dxrAllDayPanelTitle from \"../../../renovation/ui/scheduler/workspaces/base/date_table/all_day_panel/title.j\";\r\nimport dxrDateTableLayout from \"../../../renovation/ui/scheduler/workspaces/base/date_table/layout.j\";\r\nimport dxrGroupPanel from \"../../../renovation/ui/scheduler/workspaces/base/group_panel/group_panel.j\";\r\nimport dxrDateHeader from \"../../../renovation/ui/scheduler/workspaces/base/header_panel/layout.j\";\r\nimport dxrTimePanelTableLayout from \"../../../renovation/ui/scheduler/workspaces/base/time_panel/layout.j\";\r\nimport WidgetObserver from \"../base/m_widget_observer\";\r\nimport AppointmentDragBehavior from \"../m_appointment_drag_behavior\";\r\nimport {\r\n DATE_TABLE_CLASS,\r\n DATE_TABLE_ROW_CLASS,\r\n FIXED_CONTAINER_CLASS,\r\n GROUP_HEADER_CONTENT_CLASS,\r\n GROUP_ROW_CLASS,\r\n TIME_PANEL_CLASS,\r\n VERTICAL_GROUP_COUNT_CLASSES,\r\n VIRTUAL_CELL_CLASS\r\n} from \"../m_classes\";\r\nimport {\r\n APPOINTMENT_SETTINGS_KEY\r\n} from \"../m_constants\";\r\nimport tableCreatorModule from \"../m_table_creator\";\r\nimport {\r\n utils\r\n} from \"../m_utils\";\r\nimport {\r\n createResourcesTree,\r\n getCellGroups,\r\n getGroupCount,\r\n getGroupsObjectFromGroupsArray\r\n} from \"../resources/m_utils\";\r\nimport VerticalShader from \"../shaders/m_current_time_shader_vertical\";\r\nimport {\r\n getAllDayHeight,\r\n getCellHeight,\r\n getCellWidth,\r\n getMaxAllowedPosition,\r\n PositionHelper\r\n} from \"./helpers/m_position_helper\";\r\nimport {\r\n Cache\r\n} from \"./m_cache\";\r\nimport {\r\n CellsSelectionController\r\n} from \"./m_cells_selection_controller\";\r\nimport CellsSelectionState from \"./m_cells_selection_state\";\r\nimport {\r\n VirtualScrollingDispatcher,\r\n VirtualScrollingRenderer\r\n} from \"./m_virtual_scrolling\";\r\nimport HorizontalGroupedStrategy from \"./m_work_space_grouped_strategy_horizontal\";\r\nimport VerticalGroupedStrategy from \"./m_work_space_grouped_strategy_vertical\";\r\nimport ViewDataProvider from \"./view_model/m_view_data_provider\";\r\nvar {\r\n tableCreator: tableCreator\r\n} = tableCreatorModule;\r\nvar DRAGGING_MOUSE_FAULT = 10;\r\nvar {\r\n abstract: abstract\r\n} = WidgetObserver;\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar COMPONENT_CLASS = \"dx-scheduler-work-space\";\r\nvar GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-grouped\";\r\nvar VERTICAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-vertical-grouped\";\r\nvar WORKSPACE_VERTICAL_GROUP_TABLE_CLASS = \"dx-scheduler-work-space-vertical-group-table\";\r\nvar WORKSPACE_WITH_BOTH_SCROLLS_CLASS = \"dx-scheduler-work-space-both-scrollbar\";\r\nvar WORKSPACE_WITH_COUNT_CLASS = \"dx-scheduler-work-space-count\";\r\nvar WORKSPACE_WITH_GROUP_BY_DATE_CLASS = \"dx-scheduler-work-space-group-by-date\";\r\nvar WORKSPACE_WITH_ODD_CELLS_CLASS = \"dx-scheduler-work-space-odd-cells\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar ALL_DAY_PANEL_CLASS = \"dx-scheduler-all-day-panel\";\r\nvar ALL_DAY_TABLE_CLASS = \"dx-scheduler-all-day-table\";\r\nvar ALL_DAY_CONTAINER_CLASS = \"dx-scheduler-all-day-appointments\";\r\nvar ALL_DAY_TITLE_CLASS = \"dx-scheduler-all-day-title\";\r\nvar ALL_DAY_TABLE_CELL_CLASS = \"dx-scheduler-all-day-table-cell\";\r\nvar ALL_DAY_TABLE_ROW_CLASS = \"dx-scheduler-all-day-table-row\";\r\nvar WORKSPACE_WITH_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day\";\r\nvar WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS = \"dx-scheduler-work-space-all-day-collapsed\";\r\nvar WORKSPACE_WITH_MOUSE_SELECTION_CLASS = \"dx-scheduler-work-space-mouse-selection\";\r\nvar HORIZONTAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-horizontal\";\r\nvar VERTICAL_SIZES_CLASS = \"dx-scheduler-cell-sizes-vertical\";\r\nvar HEADER_PANEL_CLASS = \"dx-scheduler-header-panel\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar GROUP_HEADER_CLASS = \"dx-scheduler-group-header\";\r\nvar DATE_TABLE_CELL_CLASS = \"dx-scheduler-date-table-cell\";\r\nvar DATE_TABLE_FOCUSED_CELL_CLASS = \"dx-scheduler-focused-cell\";\r\nvar VIRTUAL_ROW_CLASS = \"dx-scheduler-virtual-row\";\r\nvar DATE_TABLE_DROPPABLE_CELL_CLASS = \"dx-scheduler-date-table-droppable-cell\";\r\nvar SCHEDULER_HEADER_SCROLLABLE_CLASS = \"dx-scheduler-header-scrollable\";\r\nvar SCHEDULER_SIDEBAR_SCROLLABLE_CLASS = \"dx-scheduler-sidebar-scrollable\";\r\nvar SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS = \"dx-scheduler-date-table-scrollable\";\r\nvar SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME = addNamespace(pointerEvents.down, \"dxSchedulerWorkSpace\");\r\nvar DragEventNames = {\r\n ENTER: addNamespace(dragEventEnter, \"dxSchedulerDateTable\"),\r\n DROP: addNamespace(dragEventDrop, \"dxSchedulerDateTable\"),\r\n LEAVE: addNamespace(dragEventLeave, \"dxSchedulerDateTable\")\r\n};\r\nvar SCHEDULER_CELL_DXCLICK_EVENT_NAME = addNamespace(clickEventName, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME = addNamespace(pointerEvents.down, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME = addNamespace(pointerEvents.up, \"dxSchedulerDateTable\");\r\nvar SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME = addNamespace(pointerEvents.move, \"dxSchedulerDateTable\");\r\nvar CELL_DATA = \"dxCellData\";\r\nvar DATE_TABLE_MIN_CELL_WIDTH = 75;\r\nvar DAY_MS = toMs(\"day\");\r\nvar HOUR_MS = toMs(\"hour\");\r\nvar DRAG_AND_DROP_SELECTOR = \".\".concat(DATE_TABLE_CLASS, \" td, .\").concat(ALL_DAY_TABLE_CLASS, \" td\");\r\nvar CELL_SELECTOR = \".\".concat(DATE_TABLE_CELL_CLASS, \", .\").concat(ALL_DAY_TABLE_CELL_CLASS);\r\nvar CELL_INDEX_CALCULATION_EPSILON = .05;\r\nclass SchedulerWorkSpace extends WidgetObserver {\r\n constructor() {\r\n super(...arguments);\r\n this.viewDirection = \"vertical\"\r\n }\r\n get type() {\r\n return \"\"\r\n }\r\n get viewDataProvider() {\r\n if (!this._viewDataProvider) {\r\n this._viewDataProvider = new ViewDataProvider(this.type)\r\n }\r\n return this._viewDataProvider\r\n }\r\n get cache() {\r\n if (!this._cache) {\r\n this._cache = new Cache\r\n }\r\n return this._cache\r\n }\r\n get cellsSelectionState() {\r\n if (!this._cellsSelectionState) {\r\n this._cellsSelectionState = new CellsSelectionState(this.viewDataProvider);\r\n var selectedCellsOption = this.option(\"selectedCellData\");\r\n if ((null === selectedCellsOption || void 0 === selectedCellsOption ? void 0 : selectedCellsOption.length) > 0) {\r\n var validSelectedCells = selectedCellsOption.map(selectedCell => {\r\n var {\r\n groups: groups\r\n } = selectedCell;\r\n if (!groups || 0 === this._getGroupCount()) {\r\n return _extends(_extends({}, selectedCell), {\r\n groupIndex: 0\r\n })\r\n }\r\n var groupIndex = this._getGroupIndexByResourceId(groups);\r\n return _extends(_extends({}, selectedCell), {\r\n groupIndex: groupIndex\r\n })\r\n });\r\n this._cellsSelectionState.setSelectedCellsByData(validSelectedCells)\r\n }\r\n }\r\n return this._cellsSelectionState\r\n }\r\n get cellsSelectionController() {\r\n if (!this._cellsSelectionController) {\r\n this._cellsSelectionController = new CellsSelectionController\r\n }\r\n return this._cellsSelectionController\r\n }\r\n get isAllDayPanelVisible() {\r\n return this._isShowAllDayPanel() && this.supportAllDayRow()\r\n }\r\n get verticalGroupTableClass() {\r\n return WORKSPACE_VERTICAL_GROUP_TABLE_CLASS\r\n }\r\n get renovatedHeaderPanelComponent() {\r\n return dxrDateHeader\r\n }\r\n get timeZoneCalculator() {\r\n return this.option(\"timeZoneCalculator\")\r\n }\r\n get isDefaultDraggingMode() {\r\n return \"default\" === this.option(\"draggingMode\")\r\n }\r\n _supportedKeys() {\r\n var clickHandler = function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var selectedCells = this.cellsSelectionState.getSelectedCells();\r\n if (null === selectedCells || void 0 === selectedCells ? void 0 : selectedCells.length) {\r\n var selectedCellsElement = selectedCells.map(cellData => this._getCellByData(cellData)).filter(cell => !!cell);\r\n e.target = selectedCellsElement;\r\n this._showPopup = true;\r\n this._cellClickAction({\r\n event: e,\r\n cellElement: $(selectedCellsElement),\r\n cellData: selectedCells[0]\r\n })\r\n }\r\n };\r\n var onArrowPressed = (e, key) => {\r\n var _a;\r\n e.preventDefault();\r\n e.stopPropagation();\r\n var focusedCellData = null === (_a = this.cellsSelectionState.focusedCell) || void 0 === _a ? void 0 : _a.cellData;\r\n if (focusedCellData) {\r\n var isAllDayPanelCell = focusedCellData.allDay && !this._isVerticalGroupedWorkSpace();\r\n var isMultiSelection = e.shiftKey;\r\n var isMultiSelectionAllowed = this.option(\"allowMultipleCellSelection\");\r\n var isRTL = this._isRTL();\r\n var groupCount = this._getGroupCount();\r\n var isGroupedByDate = this.isGroupedByDate();\r\n var isHorizontalGrouping = this._isHorizontalGroupedWorkSpace();\r\n var focusedCellPosition = this.viewDataProvider.findCellPositionInMap(_extends(_extends({}, focusedCellData), {\r\n isAllDay: focusedCellData.allDay\r\n }));\r\n var edgeIndices = isHorizontalGrouping && isMultiSelection && !isGroupedByDate ? this.viewDataProvider.getGroupEdgeIndices(focusedCellData.groupIndex, isAllDayPanelCell) : this.viewDataProvider.getViewEdgeIndices(isAllDayPanelCell);\r\n var nextCellData = this.cellsSelectionController.handleArrowClick({\r\n focusedCellPosition: focusedCellPosition,\r\n edgeIndices: edgeIndices,\r\n isRTL: isRTL,\r\n isGroupedByDate: isGroupedByDate,\r\n groupCount: groupCount,\r\n isMultiSelection: isMultiSelection,\r\n isMultiSelectionAllowed: isMultiSelectionAllowed,\r\n viewType: this.type,\r\n key: key,\r\n getCellDataByPosition: this.viewDataProvider.getCellData.bind(this.viewDataProvider),\r\n isAllDayPanelCell: isAllDayPanelCell,\r\n focusedCellData: focusedCellData\r\n });\r\n this._processNextSelectedCell(nextCellData, focusedCellData, isMultiSelection && isMultiSelectionAllowed)\r\n }\r\n };\r\n return extend(super._supportedKeys(), {\r\n enter: clickHandler,\r\n space: clickHandler,\r\n downArrow: e => {\r\n onArrowPressed(e, \"down\")\r\n },\r\n upArrow: e => {\r\n onArrowPressed(e, \"up\")\r\n },\r\n rightArrow: e => {\r\n onArrowPressed(e, \"right\")\r\n },\r\n leftArrow: e => {\r\n onArrowPressed(e, \"left\")\r\n }\r\n })\r\n }\r\n _isRTL() {\r\n return this.option(\"rtlEnabled\")\r\n }\r\n _moveToCell($cell, isMultiSelection) {\r\n if (!isDefined($cell) || !$cell.length) {\r\n return\r\n }\r\n var isMultiSelectionAllowed = this.option(\"allowMultipleCellSelection\");\r\n var currentCellData = this._getFullCellData($cell);\r\n var focusedCellData = this.cellsSelectionState.focusedCell.cellData;\r\n var nextFocusedCellData = this.cellsSelectionController.moveToCell({\r\n isMultiSelection: isMultiSelection,\r\n isMultiSelectionAllowed: isMultiSelectionAllowed,\r\n currentCellData: currentCellData,\r\n focusedCellData: focusedCellData,\r\n isVirtualCell: $cell.hasClass(VIRTUAL_CELL_CLASS)\r\n });\r\n this._processNextSelectedCell(nextFocusedCellData, focusedCellData, isMultiSelectionAllowed && isMultiSelection)\r\n }\r\n _processNextSelectedCell(nextCellData, focusedCellData, isMultiSelection) {\r\n var nextCellPosition = this.viewDataProvider.findCellPositionInMap({\r\n startDate: nextCellData.startDate,\r\n groupIndex: nextCellData.groupIndex,\r\n isAllDay: nextCellData.allDay,\r\n index: nextCellData.index\r\n });\r\n if (!this.viewDataProvider.isSameCell(focusedCellData, nextCellData)) {\r\n var $cell = nextCellData.allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(nextCellPosition.columnIndex) : this._dom_getDateCell(nextCellPosition);\r\n var isNextCellAllDay = nextCellData.allDay;\r\n this._setSelectedCellsStateAndUpdateSelection(isNextCellAllDay, nextCellPosition, isMultiSelection, $cell);\r\n this._dateTableScrollable.scrollToElement($cell)\r\n }\r\n }\r\n _setSelectedCellsStateAndUpdateSelection(isAllDay, cellPosition, isMultiSelection, $nextFocusedCell) {\r\n var nextCellCoordinates = {\r\n rowIndex: cellPosition.rowIndex,\r\n columnIndex: cellPosition.columnIndex,\r\n allDay: isAllDay\r\n };\r\n this.cellsSelectionState.setFocusedCell(nextCellCoordinates.rowIndex, nextCellCoordinates.columnIndex, isAllDay);\r\n if (isMultiSelection) {\r\n this.cellsSelectionState.setSelectedCells(nextCellCoordinates)\r\n } else {\r\n this.cellsSelectionState.setSelectedCells(nextCellCoordinates, nextCellCoordinates)\r\n }\r\n this.updateCellsSelection();\r\n this._updateSelectedCellDataOption(this.cellsSelectionState.getSelectedCells(), $nextFocusedCell)\r\n }\r\n _hasAllDayClass($cell) {\r\n return $cell.hasClass(ALL_DAY_TABLE_CELL_CLASS)\r\n }\r\n _focusInHandler(e) {\r\n if ($(e.target).is(this._focusTarget()) && false !== this._isCellClick) {\r\n delete this._isCellClick;\r\n delete this._contextMenuHandled;\r\n super._focusInHandler.apply(this, arguments);\r\n this.cellsSelectionState.restoreSelectedAndFocusedCells();\r\n if (!this.cellsSelectionState.focusedCell) {\r\n var cellCoordinates = {\r\n columnIndex: 0,\r\n rowIndex: 0,\r\n allDay: this._isVerticalGroupedWorkSpace() && this.isAllDayPanelVisible\r\n };\r\n this.cellsSelectionState.setFocusedCell(cellCoordinates.rowIndex, cellCoordinates.columnIndex, cellCoordinates.allDay);\r\n this.cellsSelectionState.setSelectedCells(cellCoordinates, cellCoordinates)\r\n }\r\n this.updateCellsSelection();\r\n this._updateSelectedCellDataOption(this.cellsSelectionState.getSelectedCells())\r\n }\r\n }\r\n _focusOutHandler() {\r\n super._focusOutHandler.apply(this, arguments);\r\n if (!this._contextMenuHandled && !this._disposed) {\r\n this.cellsSelectionState.releaseSelectedAndFocusedCells();\r\n this.viewDataProvider.updateViewData(this.generateRenderOptions());\r\n this.updateCellsSelection()\r\n }\r\n }\r\n _focusTarget() {\r\n return this.$element()\r\n }\r\n _isVerticalGroupedWorkSpace() {\r\n var _a;\r\n return !!(null === (_a = this.option(\"groups\")) || void 0 === _a ? void 0 : _a.length) && \"vertical\" === this.option(\"groupOrientation\")\r\n }\r\n _isHorizontalGroupedWorkSpace() {\r\n var _a;\r\n return !!(null === (_a = this.option(\"groups\")) || void 0 === _a ? void 0 : _a.length) && \"horizontal\" === this.option(\"groupOrientation\")\r\n }\r\n _isWorkSpaceWithCount() {\r\n return this.option(\"intervalCount\") > 1\r\n }\r\n _isWorkspaceWithOddCells() {\r\n return .5 === this.option(\"hoursInterval\") && !this.isVirtualScrolling()\r\n }\r\n _getRealGroupOrientation() {\r\n return this._isVerticalGroupedWorkSpace() ? \"vertical\" : \"horizontal\"\r\n }\r\n createRAllDayPanelElements() {\r\n this._$allDayPanel = $(\"<div>\").addClass(ALL_DAY_PANEL_CLASS);\r\n this._$allDayTitle = $(\"<div>\").appendTo(this._$headerPanelEmptyCell)\r\n }\r\n _dateTableScrollableConfig() {\r\n var config = {\r\n useKeyboard: false,\r\n bounceEnabled: false,\r\n updateManually: true,\r\n onScroll: () => {\r\n var _a;\r\n null === (_a = this._groupedStrategy.cache) || void 0 === _a ? void 0 : _a.clear()\r\n }\r\n };\r\n if (this._needCreateCrossScrolling()) {\r\n config = extend(config, this._createCrossScrollingConfig(config))\r\n }\r\n if (this.isVirtualScrolling() && (this.virtualScrollingDispatcher.horizontalScrollingAllowed || this.virtualScrollingDispatcher.height)) {\r\n var currentOnScroll = config.onScroll;\r\n config = _extends(_extends({}, config), {\r\n onScroll: e => {\r\n null === currentOnScroll || void 0 === currentOnScroll ? void 0 : currentOnScroll(e);\r\n this.virtualScrollingDispatcher.handleOnScrollEvent(null === e || void 0 === e ? void 0 : e.scrollOffset)\r\n }\r\n })\r\n }\r\n return config\r\n }\r\n _createCrossScrollingConfig(_ref) {\r\n var {\r\n onScroll: _onScroll\r\n } = _ref;\r\n return {\r\n direction: \"both\",\r\n onScroll: event => {\r\n null === _onScroll || void 0 === _onScroll ? void 0 : _onScroll();\r\n this._scrollSync.sidebar({\r\n top: event.scrollOffset.top\r\n });\r\n this._scrollSync.header({\r\n left: event.scrollOffset.left\r\n })\r\n },\r\n onEnd: () => {\r\n this.option(\"onScrollEnd\")()\r\n }\r\n }\r\n }\r\n _headerScrollableConfig() {\r\n return {\r\n useKeyboard: false,\r\n showScrollbar: \"never\",\r\n direction: \"horizontal\",\r\n useNative: false,\r\n updateManually: true,\r\n bounceEnabled: false,\r\n onScroll: event => {\r\n this._scrollSync.dateTable({\r\n left: event.scrollOffset.left\r\n })\r\n }\r\n }\r\n }\r\n _visibilityChanged(visible) {\r\n this.cache.clear();\r\n if (visible) {\r\n this._updateGroupTableHeight()\r\n }\r\n if (visible && this._needCreateCrossScrolling()) {\r\n this._setTableSizes()\r\n }\r\n }\r\n _setTableSizes() {\r\n this.cache.clear();\r\n this._attachTableClasses();\r\n var cellWidth = this.getCellWidth();\r\n if (cellWidth < this.getCellMinWidth()) {\r\n cellWidth = this.getCellMinWidth()\r\n }\r\n var minWidth = this.getWorkSpaceMinWidth();\r\n var groupCount = this._getGroupCount();\r\n var totalCellCount = this._getTotalCellCount(groupCount);\r\n var width = cellWidth * totalCellCount;\r\n if (width < minWidth) {\r\n width = minWidth\r\n }\r\n setWidth(this._$headerPanel, width);\r\n setWidth(this._$dateTable, width);\r\n if (this._$allDayTable) {\r\n setWidth(this._$allDayTable, width)\r\n }\r\n this._attachHeaderTableClasses();\r\n this._updateGroupTableHeight();\r\n this._updateScrollable()\r\n }\r\n getWorkSpaceMinWidth() {\r\n return this._groupedStrategy.getWorkSpaceMinWidth()\r\n }\r\n _dimensionChanged() {\r\n if (!this._isVisible()) {\r\n return\r\n }\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._setTableSizes()\r\n }\r\n this.updateHeaderEmptyCellWidth();\r\n this._updateScrollable();\r\n this.cache.clear()\r\n }\r\n _needCreateCrossScrolling() {\r\n return this.option(\"crossScrollingEnabled\")\r\n }\r\n _getElementClass() {\r\n return noop()\r\n }\r\n _getRowCount() {\r\n return this.viewDataProvider.getRowCount({\r\n intervalCount: this.option(\"intervalCount\"),\r\n currentDate: this.option(\"currentDate\"),\r\n viewType: this.type,\r\n hoursInterval: this.option(\"hoursInterval\"),\r\n startDayHour: this.option(\"startDayHour\"),\r\n endDayHour: this.option(\"endDayHour\")\r\n })\r\n }\r\n _getCellCount() {\r\n return this.viewDataProvider.getCellCount({\r\n intervalCount: this.option(\"intervalCount\"),\r\n currentDate: this.option(\"currentDate\"),\r\n viewType: this.type,\r\n hoursInterval: this.option(\"hoursInterval\"),\r\n startDayHour: this.option(\"startDayHour\"),\r\n endDayHour: this.option(\"endDayHour\")\r\n })\r\n }\r\n isRenovatedRender() {\r\n return this.renovatedRenderSupported() && this.option(\"renovateRender\")\r\n }\r\n _isVirtualModeOn() {\r\n return \"virtual\" === this.option(\"scrolling.mode\")\r\n }\r\n isVirtualScrolling() {\r\n return this.isRenovatedRender() && this._isVirtualModeOn()\r\n }\r\n _initVirtualScrolling() {\r\n if (this.virtualScrollingDispatcher) {\r\n this.virtualScrollingDispatcher.dispose();\r\n this.virtualScrollingDispatcher = null\r\n }\r\n this.virtualScrollingDispatcher = new VirtualScrollingDispatcher(this._getVirtualScrollingDispatcherOptions());\r\n this.virtualScrollingDispatcher.attachScrollableEvents();\r\n this.renderer = new VirtualScrollingRenderer(this)\r\n }\r\n onDataSourceChanged(argument) {}\r\n isGroupedAllDayPanel() {\r\n return calculateIsGroupedAllDayPanel(this.option(\"groups\"), this.option(\"groupOrientation\"), this.isAllDayPanelVisible)\r\n }\r\n generateRenderOptions(isProvideVirtualCellsWidth) {\r\n var _a;\r\n var groupCount = this._getGroupCount();\r\n var groupOrientation = groupCount > 0 ? this.option(\"groupOrientation\") : this._getDefaultGroupStrategy();\r\n var options = _extends({\r\n groupByDate: this.option(\"groupByDate\"),\r\n startRowIndex: 0,\r\n startCellIndex: 0,\r\n groupOrientation: groupOrientation,\r\n today: null === (_a = this._getToday) || void 0 === _a ? void 0 : _a.call(this),\r\n groups: this.option(\"groups\"),\r\n isProvideVirtualCellsWidth: isProvideVirtualCellsWidth,\r\n isAllDayPanelVisible: this.isAllDayPanelVisible,\r\n selectedCells: this.cellsSelectionState.getSelectedCells(),\r\n focusedCell: this.cellsSelectionState.focusedCell,\r\n headerCellTextFormat: this._getFormat(),\r\n getDateForHeaderText: (_, date) => date,\r\n startDayHour: this.option(\"startDayHour\"),\r\n endDayHour: this.option(\"endDayHour\"),\r\n cellDuration: this.getCellDuration(),\r\n viewType: this.type,\r\n intervalCount: this.option(\"intervalCount\"),\r\n hoursInterval: this.option(\"hoursInterval\"),\r\n currentDate: this.option(\"currentDate\"),\r\n startDate: this.option(\"startDate\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\")\r\n }, this.virtualScrollingDispatcher.getRenderState());\r\n return options\r\n }\r\n renovatedRenderSupported() {\r\n return true\r\n }\r\n _updateGroupTableHeight() {\r\n if (this._isVerticalGroupedWorkSpace() && hasWindow()) {\r\n this._setHorizontalGroupHeaderCellsHeight()\r\n }\r\n }\r\n updateHeaderEmptyCellWidth() {\r\n if (hasWindow() && this._isRenderHeaderPanelEmptyCell()) {\r\n var timePanelWidth = this.getTimePanelWidth();\r\n var groupPanelWidth = this.getGroupTableWidth();\r\n this._$headerPanelEmptyCell.css(\"width\", timePanelWidth + groupPanelWidth)\r\n }\r\n }\r\n _isGroupsSpecified(resources) {\r\n var _a;\r\n return (null === (_a = this.option(\"groups\")) || void 0 === _a ? void 0 : _a.length) && resources\r\n }\r\n _getGroupIndexByResourceId(id) {\r\n var groups = this.option(\"groups\");\r\n var resourceTree = createResourcesTree(groups);\r\n if (!resourceTree.length) {\r\n return 0\r\n }\r\n return this._getGroupIndexRecursively(resourceTree, id)\r\n }\r\n _getGroupIndexRecursively(resourceTree, id) {\r\n var currentKey = resourceTree[0].name;\r\n var currentValue = id[currentKey];\r\n return resourceTree.reduce((prevIndex, _ref2) => {\r\n var {\r\n leafIndex: leafIndex,\r\n value: value,\r\n children: children\r\n } = _ref2;\r\n var areValuesEqual = currentValue === value;\r\n if (areValuesEqual && void 0 !== leafIndex) {\r\n return leafIndex\r\n }\r\n if (areValuesEqual) {\r\n return this._getGroupIndexRecursively(children, id)\r\n }\r\n return prevIndex\r\n }, 0)\r\n }\r\n _getViewStartByOptions() {\r\n return getViewStartByOptions(this.option(\"startDate\"), this.option(\"currentDate\"), this._getIntervalDuration(), this.option(\"startDate\") ? this._calculateViewStartDate() : void 0)\r\n }\r\n _getIntervalDuration() {\r\n return this.viewDataProvider.getIntervalDuration(this.option(\"intervalCount\"))\r\n }\r\n _getHeaderDate() {\r\n return this.getStartViewDate()\r\n }\r\n _calculateViewStartDate() {\r\n return calculateViewStartDate(this.option(\"startDate\"))\r\n }\r\n _firstDayOfWeek() {\r\n return this.viewDataProvider.getFirstDayOfWeek(this.option(\"firstDayOfWeek\"))\r\n }\r\n _attachEvents() {\r\n this._createSelectionChangedAction();\r\n this._attachClickEvent();\r\n this._attachContextMenuEvent()\r\n }\r\n _attachClickEvent() {\r\n var that = this;\r\n var pointerDownAction = this._createAction(e => {\r\n that._pointerDownHandler(e.event)\r\n });\r\n this._createCellClickAction();\r\n var cellSelector = \".\".concat(DATE_TABLE_CELL_CLASS, \",.\").concat(ALL_DAY_TABLE_CELL_CLASS);\r\n var $element = this.$element();\r\n eventsEngine.off($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME);\r\n eventsEngine.off($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME);\r\n eventsEngine.on($element, SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME, e => {\r\n if (isMouseEvent(e) && e.which > 1) {\r\n e.preventDefault();\r\n return\r\n }\r\n pointerDownAction({\r\n event: e\r\n })\r\n });\r\n eventsEngine.on($element, SCHEDULER_CELL_DXCLICK_EVENT_NAME, cellSelector, e => {\r\n var $cell = $(e.target);\r\n that._cellClickAction({\r\n event: e,\r\n cellElement: getPublicElement($cell),\r\n cellData: that.getCellData($cell)\r\n })\r\n })\r\n }\r\n _createCellClickAction() {\r\n this._cellClickAction = this._createActionByOption(\"onCellClick\", {\r\n afterExecute: e => this._cellClickHandler(e.args[0].event)\r\n })\r\n }\r\n _createSelectionChangedAction() {\r\n this._selectionChangedAction = this._createActionByOption(\"onSelectionChanged\")\r\n }\r\n _cellClickHandler(argument) {\r\n if (this._showPopup) {\r\n delete this._showPopup;\r\n this._handleSelectedCellsClick()\r\n }\r\n }\r\n _pointerDownHandler(e) {\r\n var $target = $(e.target);\r\n if (!$target.hasClass(DATE_TABLE_CELL_CLASS) && !$target.hasClass(ALL_DAY_TABLE_CELL_CLASS)) {\r\n this._isCellClick = false;\r\n return\r\n }\r\n this._isCellClick = true;\r\n if ($target.hasClass(DATE_TABLE_FOCUSED_CELL_CLASS)) {\r\n this._showPopup = true\r\n } else {\r\n var cellCoordinates = this._getCoordinatesByCell($target);\r\n var isAllDayCell = this._hasAllDayClass($target);\r\n this._setSelectedCellsStateAndUpdateSelection(isAllDayCell, cellCoordinates, false, $target)\r\n }\r\n }\r\n _handleSelectedCellsClick() {\r\n var selectedCells = this.cellsSelectionState.getSelectedCells();\r\n var firstCellData = selectedCells[0];\r\n var lastCellData = selectedCells[selectedCells.length - 1];\r\n var result = {\r\n startDate: firstCellData.startDate,\r\n endDate: lastCellData.endDate\r\n };\r\n if (void 0 !== lastCellData.allDay) {\r\n result.allDay = lastCellData.allDay\r\n }\r\n this.option(\"onSelectedCellsClick\")(result, lastCellData.groups)\r\n }\r\n _attachContextMenuEvent() {\r\n this._createContextMenuAction();\r\n var cellSelector = \".\".concat(DATE_TABLE_CELL_CLASS, \",.\").concat(ALL_DAY_TABLE_CELL_CLASS);\r\n var $element = this.$element();\r\n var eventName = addNamespace(contextMenuEventName, this.NAME);\r\n eventsEngine.off($element, eventName, cellSelector);\r\n eventsEngine.on($element, eventName, cellSelector, this._contextMenuHandler.bind(this))\r\n }\r\n _contextMenuHandler(e) {\r\n var $cell = $(e.target);\r\n this._contextMenuAction({\r\n event: e,\r\n cellElement: getPublicElement($cell),\r\n cellData: this.getCellData($cell)\r\n });\r\n this._contextMenuHandled = true\r\n }\r\n _createContextMenuAction() {\r\n this._contextMenuAction = this._createActionByOption(\"onCellContextMenu\")\r\n }\r\n _getGroupHeaderContainer() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n return this._$groupTable\r\n }\r\n return this._$thead\r\n }\r\n _getDateHeaderContainer() {\r\n return this._$thead\r\n }\r\n _getCalculateHeaderCellRepeatCount() {\r\n return this._groupedStrategy.calculateHeaderCellRepeatCount()\r\n }\r\n _updateScrollable() {\r\n var _a, _b;\r\n this._dateTableScrollable.update();\r\n null === (_a = this._headerScrollable) || void 0 === _a ? void 0 : _a.update();\r\n null === (_b = this._sidebarScrollable) || void 0 === _b ? void 0 : _b.update()\r\n }\r\n _getTimePanelRowCount() {\r\n return this._getCellCountInDay()\r\n }\r\n _getCellCountInDay() {\r\n var hoursInterval = this.option(\"hoursInterval\");\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n return this.viewDataProvider.getCellCountInDay(startDayHour, endDayHour, hoursInterval)\r\n }\r\n _getTotalCellCount(groupCount) {\r\n return this._groupedStrategy.getTotalCellCount(groupCount)\r\n }\r\n _getTotalRowCount(groupCount, includeAllDayPanelRows) {\r\n var result = this._groupedStrategy.getTotalRowCount(groupCount);\r\n if (includeAllDayPanelRows && this.isAllDayPanelVisible) {\r\n result += groupCount\r\n }\r\n return result\r\n }\r\n _getGroupIndex(rowIndex, columnIndex) {\r\n return this._groupedStrategy.getGroupIndex(rowIndex, columnIndex)\r\n }\r\n calculateEndDate(startDate) {\r\n var {\r\n viewDataGenerator: viewDataGenerator\r\n } = this.viewDataProvider;\r\n return viewDataGenerator.calculateEndDate(startDate, viewDataGenerator.getInterval(this.option(\"hoursInterval\")), this.option(\"endDayHour\"))\r\n }\r\n _getGroupCount() {\r\n return getGroupCount(this.option(\"groups\"))\r\n }\r\n _attachTablesEvents() {\r\n var element = this.$element();\r\n this._attachDragEvents(element);\r\n this._attachPointerEvents(element)\r\n }\r\n _detachDragEvents(element) {\r\n eventsEngine.off(element, DragEventNames.ENTER);\r\n eventsEngine.off(element, DragEventNames.LEAVE);\r\n eventsEngine.off(element, DragEventNames.DROP)\r\n }\r\n _attachDragEvents(element) {\r\n this._detachDragEvents(element);\r\n eventsEngine.on(element, DragEventNames.ENTER, DRAG_AND_DROP_SELECTOR, {\r\n checkDropTarget: (target, event) => !this._isOutsideScrollable(target, event)\r\n }, e => {\r\n if (!this.preventDefaultDragging) {\r\n this.removeDroppableCellClass();\r\n $(e.target).addClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n }\r\n });\r\n eventsEngine.on(element, DragEventNames.LEAVE, () => {\r\n if (!this.preventDefaultDragging) {\r\n this.removeDroppableCellClass()\r\n }\r\n });\r\n eventsEngine.on(element, DragEventNames.DROP, DRAG_AND_DROP_SELECTOR, () => {\r\n var _a, _b;\r\n if (!this.dragBehavior) {\r\n return\r\n }\r\n if (!(null === (_a = this.dragBehavior) || void 0 === _a ? void 0 : _a.dragBetweenComponentsPromise)) {\r\n this.dragBehavior.removeDroppableClasses();\r\n return\r\n }\r\n null === (_b = this.dragBehavior.dragBetweenComponentsPromise) || void 0 === _b ? void 0 : _b.then(() => {\r\n this.dragBehavior.removeDroppableClasses()\r\n })\r\n })\r\n }\r\n _attachPointerEvents(element) {\r\n var isPointerDown = false;\r\n eventsEngine.off(element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME);\r\n eventsEngine.off(element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME);\r\n eventsEngine.on(element, SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME, DRAG_AND_DROP_SELECTOR, e => {\r\n if (isMouseEvent(e) && 1 === e.which) {\r\n isPointerDown = true;\r\n this.$element().addClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS);\r\n eventsEngine.off(domAdapter.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n eventsEngine.on(domAdapter.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME, () => {\r\n isPointerDown = false;\r\n this.$element().removeClass(WORKSPACE_WITH_MOUSE_SELECTION_CLASS)\r\n })\r\n }\r\n });\r\n eventsEngine.on(element, SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME, DRAG_AND_DROP_SELECTOR, e => {\r\n if (isPointerDown && this._dateTableScrollable && !this._dateTableScrollable.option(\"scrollByContent\")) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this._moveToCell($(e.target), true)\r\n }\r\n })\r\n }\r\n _getFormat() {\r\n return abstract()\r\n }\r\n getWorkArea() {\r\n return this._$dateTableContainer\r\n }\r\n getScrollable() {\r\n return this._dateTableScrollable\r\n }\r\n getScrollableScrollTop() {\r\n return this._dateTableScrollable.scrollTop()\r\n }\r\n getGroupedScrollableScrollTop(allDay) {\r\n return this._groupedStrategy.getScrollableScrollTop(allDay)\r\n }\r\n getScrollableScrollLeft() {\r\n return this._dateTableScrollable.scrollLeft()\r\n }\r\n getScrollableOuterWidth() {\r\n return this._dateTableScrollable.scrollWidth()\r\n }\r\n getScrollableContainer() {\r\n return $(this._dateTableScrollable.container())\r\n }\r\n getHeaderPanelHeight() {\r\n return this._$headerPanel && getOuterHeight(this._$headerPanel, true)\r\n }\r\n getTimePanelWidth() {\r\n return this._$timePanel && getBoundingRect(this._$timePanel.get(0)).width\r\n }\r\n getGroupTableWidth() {\r\n return this._$groupTable ? getOuterWidth(this._$groupTable) : 0\r\n }\r\n getWorkSpaceLeftOffset() {\r\n return this._groupedStrategy.getLeftOffset()\r\n }\r\n _getCellCoordinatesByIndex(index) {\r\n var columnIndex = Math.floor(index / this._getRowCount());\r\n var rowIndex = index - this._getRowCount() * columnIndex;\r\n return {\r\n columnIndex: columnIndex,\r\n rowIndex: rowIndex\r\n }\r\n }\r\n _getDateGenerationOptions() {\r\n var _a;\r\n return {\r\n startDayHour: this.option(\"startDayHour\"),\r\n endDayHour: this.option(\"endDayHour\"),\r\n isWorkView: this.viewDataProvider.viewDataGenerator.isWorkView,\r\n interval: null === (_a = this.viewDataProvider.viewDataGenerator) || void 0 === _a ? void 0 : _a.getInterval(this.option(\"hoursInterval\")),\r\n startViewDate: this.getStartViewDate(),\r\n firstDayOfWeek: this._firstDayOfWeek()\r\n }\r\n }\r\n _getIntervalBetween(currentDate, allDay) {\r\n var firstViewDate = this.getStartViewDate();\r\n var startDayTime = this.option(\"startDayHour\") * HOUR_MS;\r\n var timeZoneOffset = dateUtils.getTimezonesDifference(firstViewDate, currentDate);\r\n var fullInterval = currentDate.getTime() - firstViewDate.getTime() - timeZoneOffset;\r\n var days = this._getDaysOfInterval(fullInterval, startDayTime);\r\n var weekendsCount = this._getWeekendsCount(days);\r\n var result = (days - weekendsCount) * DAY_MS;\r\n if (!allDay) {\r\n var {\r\n hiddenInterval: hiddenInterval\r\n } = this.viewDataProvider;\r\n var visibleDayDuration = this.getVisibleDayDuration();\r\n result = fullInterval - days * hiddenInterval - weekendsCount * visibleDayDuration\r\n }\r\n return result\r\n }\r\n _getWeekendsCount(argument) {\r\n return 0\r\n }\r\n _getDaysOfInterval(fullInterval, startDayTime) {\r\n return Math.floor((fullInterval + startDayTime) / DAY_MS)\r\n }\r\n _updateIndex(index) {\r\n return index * this._getRowCount()\r\n }\r\n _getDroppableCell() {\r\n return this._getDateTables().find(\".\".concat(DATE_TABLE_DROPPABLE_CELL_CLASS))\r\n }\r\n _getWorkSpaceWidth() {\r\n return this.cache.get(\"workspaceWidth\", () => {\r\n if (this._needCreateCrossScrolling()) {\r\n return getBoundingRect(this._$dateTable.get(0)).width\r\n }\r\n var totalWidth = getBoundingRect(this.$element().get(0)).width;\r\n var timePanelWidth = this.getTimePanelWidth();\r\n var groupTableWidth = this.getGroupTableWidth();\r\n return totalWidth - timePanelWidth - groupTableWidth\r\n })\r\n }\r\n _getCellByCoordinates(cellCoordinates, groupIndex, inAllDayRow) {\r\n var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex, inAllDayRow);\r\n return this._dom_getDateCell(indexes)\r\n }\r\n _dom_getDateCell(position) {\r\n return this._$dateTable.find(\"tr:not(.\".concat(VIRTUAL_ROW_CLASS, \")\")).eq(position.rowIndex).find(\"td:not(.\".concat(VIRTUAL_CELL_CLASS, \")\")).eq(position.columnIndex)\r\n }\r\n _dom_getAllDayPanelCell(columnIndex) {\r\n return this._$allDayPanel.find(\"tr\").eq(0).find(\"td\").eq(columnIndex)\r\n }\r\n _getCells(allDay, direction) {\r\n var cellClass = allDay ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n if (\"vertical\" === direction) {\r\n var result = [];\r\n for (var i = 1;; i++) {\r\n var cells = this.$element().find(\"tr .\".concat(cellClass, \":nth-child(\").concat(i, \")\"));\r\n if (!cells.length) {\r\n break\r\n }\r\n result = result.concat(cells.toArray())\r\n }\r\n return $(result)\r\n }\r\n return this.$element().find(\".\".concat(cellClass))\r\n }\r\n _getFirstAndLastDataTableCell() {\r\n var selector = this.isVirtualScrolling() ? \".\".concat(DATE_TABLE_CELL_CLASS, \", .\").concat(VIRTUAL_CELL_CLASS) : \".\".concat(DATE_TABLE_CELL_CLASS);\r\n var $cells = this.$element().find(selector);\r\n return [$cells[0], $cells[$cells.length - 1]]\r\n }\r\n _getAllCells(allDay) {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n return this._$dateTable.find(\"td:not(.\".concat(VIRTUAL_CELL_CLASS, \")\"))\r\n }\r\n var cellClass = allDay && this.supportAllDayRow() ? ALL_DAY_TABLE_CELL_CLASS : DATE_TABLE_CELL_CLASS;\r\n return this.$element().find(\".\".concat(cellClass))\r\n }\r\n _setHorizontalGroupHeaderCellsHeight() {\r\n var {\r\n height: height\r\n } = getBoundingRect(this._$dateTable.get(0));\r\n setOuterHeight(this._$groupTable, height)\r\n }\r\n _getGroupHeaderCells() {\r\n return this.$element().find(\".\".concat(GROUP_HEADER_CLASS))\r\n }\r\n _getScrollCoordinates(hours, minutes, date, groupIndex, allDay) {\r\n var currentDate = date || new Date(this.option(\"currentDate\"));\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n if (hours < startDayHour) {\r\n hours = startDayHour\r\n }\r\n if (hours >= endDayHour) {\r\n hours = endDayHour - 1\r\n }\r\n currentDate.setHours(hours, minutes, 0, 0);\r\n var cell = this.viewDataProvider.findGlobalCellPosition(currentDate, groupIndex, allDay);\r\n var {\r\n position: position,\r\n cellData: cellData\r\n } = cell;\r\n return this.virtualScrollingDispatcher.calculateCoordinatesByDataAndPosition(cellData, position, currentDate, isDateAndTimeView(this.type), \"vertical\" === this.viewDirection)\r\n }\r\n _isOutsideScrollable(target, event) {\r\n var $dateTableScrollableElement = this._dateTableScrollable.$element();\r\n var scrollableSize = getBoundingRect($dateTableScrollableElement.get(0));\r\n var window = getWindow();\r\n var isTargetInAllDayPanel = !$(target).closest($dateTableScrollableElement).length;\r\n var isOutsideHorizontalScrollable = event.pageX < scrollableSize.left || event.pageX > scrollableSize.left + scrollableSize.width + (window.scrollX || 0);\r\n var isOutsideVerticalScrollable = event.pageY < scrollableSize.top || event.pageY > scrollableSize.top + scrollableSize.height + (window.scrollY || 0);\r\n if (isTargetInAllDayPanel && !isOutsideHorizontalScrollable) {\r\n return false\r\n }\r\n return isOutsideVerticalScrollable || isOutsideHorizontalScrollable\r\n }\r\n setCellDataCache(cellCoordinates, groupIndex, $cell) {\r\n var key = JSON.stringify({\r\n rowIndex: cellCoordinates.rowIndex,\r\n columnIndex: cellCoordinates.columnIndex,\r\n groupIndex: groupIndex\r\n });\r\n this.cache.set(key, this.getCellData($cell))\r\n }\r\n setCellDataCacheAlias(appointment, geometry) {\r\n var key = JSON.stringify({\r\n rowIndex: appointment.rowIndex,\r\n columnIndex: appointment.columnIndex,\r\n groupIndex: appointment.groupIndex\r\n });\r\n var aliasKey = JSON.stringify({\r\n top: geometry.top,\r\n left: geometry.left\r\n });\r\n this.cache.set(aliasKey, this.cache.get(key))\r\n }\r\n supportAllDayRow() {\r\n return true\r\n }\r\n keepOriginalHours() {\r\n return false\r\n }\r\n _filterCellDataFields(cellData) {\r\n return extend(true, {}, {\r\n startDate: cellData.startDate,\r\n endDate: cellData.endDate,\r\n groups: cellData.groups,\r\n groupIndex: cellData.groupIndex,\r\n allDay: cellData.allDay\r\n })\r\n }\r\n getCellData($cell) {\r\n var cellData = this._getFullCellData($cell) || {};\r\n return this._filterCellDataFields(cellData)\r\n }\r\n _getFullCellData($cell) {\r\n var currentCell = $cell[0];\r\n if (currentCell) {\r\n return this._getDataByCell($cell)\r\n }\r\n return\r\n }\r\n _getVirtualRowOffset() {\r\n return this.virtualScrollingDispatcher.virtualRowOffset\r\n }\r\n _getVirtualCellOffset() {\r\n return this.virtualScrollingDispatcher.virtualCellOffset\r\n }\r\n _getDataByCell($cell) {\r\n var rowIndex = $cell.parent().index() - this.virtualScrollingDispatcher.topVirtualRowsCount;\r\n var columnIndex = $cell.index() - this.virtualScrollingDispatcher.leftVirtualCellsCount;\r\n var {\r\n viewDataProvider: viewDataProvider\r\n } = this;\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n var cellData = viewDataProvider.getCellData(rowIndex, columnIndex, isAllDayCell);\r\n return cellData || void 0\r\n }\r\n isGroupedByDate() {\r\n return this.option(\"groupByDate\") && this._isHorizontalGroupedWorkSpace() && this._getGroupCount() > 0\r\n }\r\n getCellIndexByDate(date, inAllDayRow) {\r\n var {\r\n viewDataGenerator: viewDataGenerator\r\n } = this.viewDataProvider;\r\n var timeInterval = inAllDayRow ? 864e5 : viewDataGenerator.getInterval(this.option(\"hoursInterval\"));\r\n var startViewDateOffset = getStartViewDateTimeOffset(this.getStartViewDate(), this.option(\"startDayHour\"));\r\n var dateTimeStamp = this._getIntervalBetween(date, inAllDayRow) + startViewDateOffset;\r\n var index = Math.floor(dateTimeStamp / timeInterval);\r\n if (inAllDayRow) {\r\n index = this._updateIndex(index)\r\n }\r\n if (index < 0) {\r\n index = 0\r\n }\r\n return index\r\n }\r\n getDroppableCellIndex() {\r\n var $droppableCell = this._getDroppableCell();\r\n var $row = $droppableCell.parent();\r\n var rowIndex = $row.index();\r\n return rowIndex * $row.find(\"td\").length + $droppableCell.index()\r\n }\r\n getDataByDroppableCell() {\r\n var cellData = this.getCellData($(this._getDroppableCell()));\r\n var {\r\n allDay: allDay\r\n } = cellData;\r\n var {\r\n startDate: startDate\r\n } = cellData;\r\n var {\r\n endDate: endDate\r\n } = cellData;\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groups: cellData.groups\r\n }\r\n }\r\n getDateRange() {\r\n return [this.getStartViewDate(), this.getEndViewDateByEndDayHour()]\r\n }\r\n getCellMinWidth() {\r\n return DATE_TABLE_MIN_CELL_WIDTH\r\n }\r\n getRoundedCellWidth(groupIndex, startIndex, cellCount) {\r\n if (groupIndex < 0 || !hasWindow()) {\r\n return 0\r\n }\r\n var $row = this.$element().find(\".\".concat(DATE_TABLE_ROW_CLASS)).eq(0);\r\n var width = 0;\r\n var $cells = $row.find(\".\".concat(DATE_TABLE_CELL_CLASS));\r\n var totalCellCount = this._getCellCount() * groupIndex;\r\n cellCount = cellCount || this._getCellCount();\r\n if (!isDefined(startIndex)) {\r\n startIndex = totalCellCount\r\n }\r\n for (var i = startIndex; i < totalCellCount + cellCount; i++) {\r\n var element = $($cells).eq(i).get(0);\r\n var elementWidth = element ? getBoundingRect(element).width : 0;\r\n width += elementWidth\r\n }\r\n return width / (totalCellCount + cellCount - startIndex)\r\n }\r\n getCellWidth() {\r\n return getCellWidth(this.getDOMElementsMetaData())\r\n }\r\n getCellHeight() {\r\n return getCellHeight(this.getDOMElementsMetaData())\r\n }\r\n getAllDayHeight() {\r\n return getAllDayHeight(this.option(\"showAllDayPanel\"), this._isVerticalGroupedWorkSpace(), this.getDOMElementsMetaData())\r\n }\r\n getMaxAllowedPosition(groupIndex) {\r\n return getMaxAllowedPosition(groupIndex, this.viewDataProvider, this.option(\"rtlEnabled\"), this.getDOMElementsMetaData())\r\n }\r\n getAllDayOffset() {\r\n return this._groupedStrategy.getAllDayOffset()\r\n }\r\n getCellIndexByCoordinates(coordinates, allDay) {\r\n var cellCount = this._getTotalCellCount(this._getGroupCount());\r\n var cellWidth = this.getCellWidth();\r\n var cellHeight = allDay ? this.getAllDayHeight() : this.getCellHeight();\r\n var topIndex = Math.floor(Math.floor(coordinates.top) / Math.floor(cellHeight));\r\n var leftIndex = coordinates.left / cellWidth;\r\n leftIndex = Math.floor(leftIndex + CELL_INDEX_CALCULATION_EPSILON);\r\n if (this._isRTL()) {\r\n leftIndex = cellCount - leftIndex - 1\r\n }\r\n return cellCount * topIndex + leftIndex\r\n }\r\n getStartViewDate() {\r\n return this.viewDataProvider.getStartViewDate()\r\n }\r\n getEndViewDate() {\r\n return this.viewDataProvider.getLastCellEndDate()\r\n }\r\n getEndViewDateByEndDayHour() {\r\n return this.viewDataProvider.getLastViewDateByEndDayHour(this.option(\"endDayHour\"))\r\n }\r\n getCellDuration() {\r\n return getCellDuration(this.type, this.option(\"startDayHour\"), this.option(\"endDayHour\"), this.option(\"hoursInterval\"))\r\n }\r\n getIntervalDuration(allDay) {\r\n return allDay ? toMs(\"day\") : this.getCellDuration()\r\n }\r\n getVisibleDayDuration() {\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n var hoursInterval = this.option(\"hoursInterval\");\r\n return this.viewDataProvider.getVisibleDayDuration(startDayHour, endDayHour, hoursInterval)\r\n }\r\n getGroupBounds(coordinates) {\r\n var groupBounds = this._groupedStrategy instanceof VerticalGroupedStrategy ? this.getGroupBoundsVertical(coordinates.groupIndex) : this.getGroupBoundsHorizontal(coordinates);\r\n return this._isRTL() ? this.getGroupBoundsRtlCorrection(groupBounds) : groupBounds\r\n }\r\n getGroupBoundsVertical(groupIndex) {\r\n var $firstAndLastCells = this._getFirstAndLastDataTableCell();\r\n return this._groupedStrategy.getGroupBoundsOffset(groupIndex, $firstAndLastCells)\r\n }\r\n getGroupBoundsHorizontal(coordinates) {\r\n var cellCount = this._getCellCount();\r\n var $cells = this._getCells();\r\n var cellWidth = this.getCellWidth();\r\n var {\r\n groupedDataMap: groupedDataMap\r\n } = this.viewDataProvider;\r\n return this._groupedStrategy.getGroupBoundsOffset(cellCount, $cells, cellWidth, coordinates, groupedDataMap)\r\n }\r\n getGroupBoundsRtlCorrection(groupBounds) {\r\n var cellWidth = this.getCellWidth();\r\n return _extends(_extends({}, groupBounds), {\r\n left: groupBounds.right - 2 * cellWidth,\r\n right: groupBounds.left + 2 * cellWidth\r\n })\r\n }\r\n needRecalculateResizableArea() {\r\n return this._isVerticalGroupedWorkSpace() && 0 !== this.getScrollable().scrollTop()\r\n }\r\n getCellDataByCoordinates(coordinates, allDay) {\r\n var key = JSON.stringify({\r\n top: coordinates.top,\r\n left: coordinates.left\r\n });\r\n return this.cache.get(key, () => {\r\n var $cells = this._getCells(allDay);\r\n var cellIndex = this.getCellIndexByCoordinates(coordinates, allDay);\r\n var $cell = $cells.eq(cellIndex);\r\n return this.getCellData($cell)\r\n })\r\n }\r\n getVisibleBounds() {\r\n var result = {};\r\n var $scrollable = this.getScrollable().$element();\r\n var cellHeight = this.getCellHeight();\r\n var scrolledCellCount = this.getScrollableScrollTop() / cellHeight;\r\n var totalCellCount = scrolledCellCount + getHeight($scrollable) / cellHeight;\r\n result.top = {\r\n hours: Math.floor(scrolledCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n minutes: scrolledCellCount % 2 ? 30 : 0\r\n };\r\n result.bottom = {\r\n hours: Math.floor(totalCellCount * this.option(\"hoursInterval\")) + this.option(\"startDayHour\"),\r\n minutes: Math.floor(totalCellCount) % 2 ? 30 : 0\r\n };\r\n return result\r\n }\r\n updateScrollPosition(date, groups) {\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var newDate = this.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var inAllDayRow = allDay && this.isAllDayPanelVisible;\r\n if (this.needUpdateScrollPosition(newDate, groups, inAllDayRow)) {\r\n this.scrollTo(newDate, groups, inAllDayRow, false)\r\n }\r\n }\r\n needUpdateScrollPosition(date, groups, inAllDayRow) {\r\n var cells = this._getCellsInViewport(inAllDayRow);\r\n var groupIndex = this._isGroupsSpecified(groups) ? this._getGroupIndexByResourceId(groups) : 0;\r\n var time = date.getTime();\r\n var trimmedTime = dateUtils.trimTime(date).getTime();\r\n return cells.reduce((currentResult, cell) => {\r\n var {\r\n startDate: cellStartDate,\r\n endDate: cellEndDate,\r\n groupIndex: cellGroupIndex\r\n } = this.getCellData(cell);\r\n var cellStartTime = cellStartDate.getTime();\r\n var cellEndTime = cellEndDate.getTime();\r\n if ((!inAllDayRow && cellStartTime <= time && time < cellEndTime || inAllDayRow && trimmedTime === cellStartTime) && groupIndex === cellGroupIndex) {\r\n return false\r\n }\r\n return currentResult\r\n }, true)\r\n }\r\n _getCellsInViewport(inAllDayRow) {\r\n var $scrollable = this.getScrollable().$element();\r\n var cellHeight = this.getCellHeight();\r\n var cellWidth = this.getCellWidth();\r\n var totalColumnCount = this._getTotalCellCount(this._getGroupCount());\r\n var scrollableScrollTop = this.getScrollableScrollTop();\r\n var scrollableScrollLeft = this.getScrollableScrollLeft();\r\n var fullScrolledRowCount = scrollableScrollTop / cellHeight - this.virtualScrollingDispatcher.topVirtualRowsCount;\r\n var scrolledRowCount = Math.floor(fullScrolledRowCount);\r\n if (scrollableScrollTop % cellHeight !== 0) {\r\n scrolledRowCount += 1\r\n }\r\n var fullScrolledColumnCount = scrollableScrollLeft / cellWidth;\r\n var scrolledColumnCount = Math.floor(fullScrolledColumnCount);\r\n if (scrollableScrollLeft % cellWidth !== 0) {\r\n scrolledColumnCount += 1\r\n }\r\n var rowCount = Math.floor(fullScrolledRowCount + getHeight($scrollable) / cellHeight);\r\n var columnCount = Math.floor(fullScrolledColumnCount + getWidth($scrollable) / cellWidth);\r\n var $cells = this._getAllCells(inAllDayRow);\r\n var result = [];\r\n $cells.each((function(index) {\r\n var $cell = $(this);\r\n var columnIndex = index % totalColumnCount;\r\n var rowIndex = index / totalColumnCount;\r\n if (scrolledColumnCount <= columnIndex && columnIndex < columnCount && scrolledRowCount <= rowIndex && rowIndex < rowCount) {\r\n result.push($cell)\r\n }\r\n }));\r\n return result\r\n }\r\n scrollToTime(hours, minutes, date) {\r\n if (!this._isValidScrollDate(date)) {\r\n return\r\n }\r\n var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n var scrollable = this.getScrollable();\r\n scrollable.scrollBy({\r\n top: coordinates.top - scrollable.scrollTop(),\r\n left: 0\r\n })\r\n }\r\n scrollTo(date, groups) {\r\n var allDay = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : false;\r\n var throwWarning = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : true;\r\n if (!this._isValidScrollDate(date, throwWarning)) {\r\n return\r\n }\r\n var groupIndex = this._getGroupCount() && groups ? this._getGroupIndexByResourceId(groups) : 0;\r\n var isScrollToAllDay = allDay && this.isAllDayPanelVisible;\r\n var coordinates = this._getScrollCoordinates(date.getHours(), date.getMinutes(), date, groupIndex, isScrollToAllDay);\r\n var scrollable = this.getScrollable();\r\n var $scrollable = scrollable.$element();\r\n var cellWidth = this.getCellWidth();\r\n var offset = this.option(\"rtlEnabled\") ? cellWidth : 0;\r\n var scrollableHeight = getHeight($scrollable);\r\n var scrollableWidth = getWidth($scrollable);\r\n var cellHeight = this.getCellHeight();\r\n var xShift = (scrollableWidth - cellWidth) / 2;\r\n var yShift = (scrollableHeight - cellHeight) / 2;\r\n var left = coordinates.left - scrollable.scrollLeft() - xShift - offset;\r\n var top = coordinates.top - scrollable.scrollTop() - yShift;\r\n if (isScrollToAllDay && !this._isVerticalGroupedWorkSpace()) {\r\n top = 0\r\n }\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n setTimeout(() => {\r\n scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n })\r\n } else {\r\n scrollable.scrollBy({\r\n left: left,\r\n top: top\r\n })\r\n }\r\n }\r\n _isValidScrollDate(date) {\r\n var throwWarning = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : true;\r\n var min = this.getStartViewDate();\r\n var max = this.getEndViewDate();\r\n if (date < min || date > max) {\r\n throwWarning && errors.log(\"W1008\", date);\r\n return false\r\n }\r\n return true\r\n }\r\n needApplyCollectorOffset() {\r\n return false\r\n }\r\n removeDroppableCellClass($cellElement) {\r\n var $cell = $cellElement || this._getDroppableCell();\r\n null === $cell || void 0 === $cell ? void 0 : $cell.removeClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n }\r\n _getCoordinatesByCell($cell) {\r\n var columnIndex = $cell.index() - this.virtualScrollingDispatcher.leftVirtualCellsCount;\r\n var rowIndex = $cell.parent().index();\r\n var isAllDayCell = this._hasAllDayClass($cell);\r\n var isVerticalGrouping = this._isVerticalGroupedWorkSpace();\r\n if (!(isAllDayCell && !isVerticalGrouping)) {\r\n rowIndex -= this.virtualScrollingDispatcher.topVirtualRowsCount\r\n }\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n _isShowAllDayPanel() {\r\n return this.option(\"showAllDayPanel\")\r\n }\r\n _getTimePanelCells() {\r\n return this.$element().find(\".\".concat(TIME_PANEL_CELL_CLASS))\r\n }\r\n _getRDateTableProps() {\r\n return {\r\n viewData: this.viewDataProvider.viewData,\r\n dataCellTemplate: this.option(\"dataCellTemplate\"),\r\n addDateTableClass: !this.option(\"crossScrollingEnabled\") || this.isVirtualScrolling(),\r\n groupOrientation: this.option(\"groupOrientation\"),\r\n addVerticalSizesClassToRows: false\r\n }\r\n }\r\n _updateSelectedCellDataOption(selectedCellData, $nextFocusedCell) {\r\n var correctedSelectedCellData = selectedCellData.map(_ref3 => {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groupIndex: groupIndex,\r\n groups: groups\r\n } = _ref3;\r\n return {\r\n startDate: startDate,\r\n endDate: endDate,\r\n allDay: allDay,\r\n groupIndex: groupIndex,\r\n groups: groups\r\n }\r\n });\r\n this.option(\"selectedCellData\", correctedSelectedCellData);\r\n this._selectionChangedAction({\r\n selectedCellData: correctedSelectedCellData\r\n })\r\n }\r\n _getCellByData(cellData) {\r\n var {\r\n startDate: startDate,\r\n groupIndex: groupIndex,\r\n allDay: allDay,\r\n index: index\r\n } = cellData;\r\n var position = this.viewDataProvider.findCellPositionInMap({\r\n startDate: startDate,\r\n groupIndex: groupIndex,\r\n isAllDay: allDay,\r\n index: index\r\n });\r\n if (!position) {\r\n return\r\n }\r\n return allDay && !this._isVerticalGroupedWorkSpace() ? this._dom_getAllDayPanelCell(position.columnIndex) : this._dom_getDateCell(position)\r\n }\r\n getDOMElementsMetaData() {\r\n return this.cache.get(\"cellElementsMeta\", () => ({\r\n dateTableCellsMeta: this._getDateTableDOMElementsInfo(),\r\n allDayPanelCellsMeta: this._getAllDayPanelDOMElementsInfo()\r\n }))\r\n }\r\n _getDateTableDOMElementsInfo() {\r\n var dateTableCells = this._getAllCells(false);\r\n if (!dateTableCells.length || !hasWindow()) {\r\n return [\r\n [{}]\r\n ]\r\n }\r\n var dateTable = this._getDateTable();\r\n var dateTableRect = getBoundingRect(dateTable.get(0));\r\n var columnsCount = this.viewDataProvider.getColumnsCount();\r\n var result = [];\r\n dateTableCells.each((index, cell) => {\r\n var rowIndex = Math.floor(index / columnsCount);\r\n if (result.length === rowIndex) {\r\n result.push([])\r\n }\r\n this._addCellMetaData(result[rowIndex], cell, dateTableRect)\r\n });\r\n return result\r\n }\r\n _getAllDayPanelDOMElementsInfo() {\r\n var result = [];\r\n if (this.isAllDayPanelVisible && !this._isVerticalGroupedWorkSpace() && hasWindow()) {\r\n var allDayCells = this._getAllCells(true);\r\n if (!allDayCells.length) {\r\n return [{}]\r\n }\r\n var allDayAppointmentContainer = this._$allDayPanel;\r\n var allDayPanelRect = getBoundingRect(allDayAppointmentContainer.get(0));\r\n allDayCells.each((_, cell) => {\r\n this._addCellMetaData(result, cell, allDayPanelRect)\r\n })\r\n }\r\n return result\r\n }\r\n _addCellMetaData(cellMetaDataArray, cell, parentRect) {\r\n var cellRect = getBoundingRect(cell);\r\n cellMetaDataArray.push({\r\n left: cellRect.left - parentRect.left,\r\n top: cellRect.top - parentRect.top,\r\n width: cellRect.width,\r\n height: cellRect.height\r\n })\r\n }\r\n _oldRender_getAllDayCellData(groupIndex) {\r\n return (cell, rowIndex, columnIndex) => {\r\n var validColumnIndex = columnIndex % this._getCellCount();\r\n var options = this._getDateGenerationOptions(true);\r\n var startDate = this.viewDataProvider.viewDataGenerator.getDateByCellIndices(options, rowIndex, validColumnIndex, this._getCellCountInDay());\r\n startDate = dateUtils.trimTime(startDate);\r\n var validGroupIndex = groupIndex || 0;\r\n if (this.isGroupedByDate()) {\r\n validGroupIndex = Math.floor(columnIndex % this._getGroupCount())\r\n } else if (this._isHorizontalGroupedWorkSpace()) {\r\n validGroupIndex = Math.floor(columnIndex / this._getCellCount())\r\n }\r\n var data = {\r\n startDate: startDate,\r\n endDate: startDate,\r\n allDay: true,\r\n groupIndex: validGroupIndex\r\n };\r\n var groupsArray = getCellGroups(validGroupIndex, this.option(\"groups\"));\r\n if (groupsArray.length) {\r\n data.groups = getGroupsObjectFromGroupsArray(groupsArray)\r\n }\r\n return {\r\n key: CELL_DATA,\r\n value: data\r\n }\r\n }\r\n }\r\n renderRWorkSpace(componentsToRender) {\r\n var components = null !== componentsToRender && void 0 !== componentsToRender ? componentsToRender : {\r\n header: true,\r\n timePanel: true,\r\n dateTable: true,\r\n allDayPanel: true\r\n };\r\n components.header && this.renderRHeaderPanel();\r\n components.timePanel && this.renderRTimeTable();\r\n components.dateTable && this.renderRDateTable();\r\n components.allDayPanel && this.renderRAllDayPanel()\r\n }\r\n renderRDateTable() {\r\n utils.renovation.renderComponent(this, this._$dateTable, dxrDateTableLayout, \"renovatedDateTable\", this._getRDateTableProps())\r\n }\r\n renderRGroupPanel() {\r\n var _a;\r\n var options = {\r\n groups: this.option(\"groups\"),\r\n groupOrientation: this.option(\"groupOrientation\"),\r\n groupByDate: this.isGroupedByDate(),\r\n resourceCellTemplate: this.option(\"resourceCellTemplate\"),\r\n className: this.verticalGroupTableClass,\r\n groupPanelData: this.viewDataProvider.getGroupPanelData(this.generateRenderOptions())\r\n };\r\n if (null === (_a = this.option(\"groups\")) || void 0 === _a ? void 0 : _a.length) {\r\n this._attachGroupCountClass();\r\n utils.renovation.renderComponent(this, this._getGroupHeaderContainer(), dxrGroupPanel, \"renovatedGroupPanel\", options)\r\n } else {\r\n this._detachGroupCountClass()\r\n }\r\n }\r\n renderRAllDayPanel() {\r\n var _a;\r\n var visible = this.isAllDayPanelVisible && !this.isGroupedAllDayPanel();\r\n if (visible) {\r\n this._toggleAllDayVisibility(false);\r\n var options = _extends({\r\n viewData: this.viewDataProvider.viewData,\r\n dataCellTemplate: this.option(\"dataCellTemplate\"),\r\n startCellIndex: 0\r\n }, (null === (_a = this.virtualScrollingDispatcher.horizontalVirtualScrolling) || void 0 === _a ? void 0 : _a.getRenderState()) || {});\r\n utils.renovation.renderComponent(this, this._$allDayTable, dxrAllDayPanelTable, \"renovatedAllDayPanel\", options);\r\n utils.renovation.renderComponent(this, this._$allDayTitle, dxrAllDayPanelTitle, \"renovatedAllDayPanelTitle\", {})\r\n }\r\n this._toggleAllDayVisibility(true)\r\n }\r\n renderRTimeTable() {\r\n utils.renovation.renderComponent(this, this._$timePanel, dxrTimePanelTableLayout, \"renovatedTimePanel\", {\r\n timePanelData: this.viewDataProvider.timePanelData,\r\n timeCellTemplate: this.option(\"timeCellTemplate\"),\r\n groupOrientation: this.option(\"groupOrientation\")\r\n })\r\n }\r\n renderRHeaderPanel() {\r\n var isRenderDateHeader = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n var _a;\r\n if (null === (_a = this.option(\"groups\")) || void 0 === _a ? void 0 : _a.length) {\r\n this._attachGroupCountClass()\r\n } else {\r\n this._detachGroupCountClass()\r\n }\r\n utils.renovation.renderComponent(this, this._$thead, this.renovatedHeaderPanelComponent, \"renovatedHeaderPanel\", {\r\n dateHeaderData: this.viewDataProvider.dateHeaderData,\r\n groupPanelData: this.viewDataProvider.getGroupPanelData(this.generateRenderOptions()),\r\n dateCellTemplate: this.option(\"dateCellTemplate\"),\r\n timeCellTemplate: this.option(\"timeCellTemplate\"),\r\n groups: this.option(\"groups\"),\r\n groupByDate: this.isGroupedByDate(),\r\n groupOrientation: this.option(\"groupOrientation\"),\r\n resourceCellTemplate: this.option(\"resourceCellTemplate\"),\r\n isRenderDateHeader: isRenderDateHeader\r\n })\r\n }\r\n initDragBehavior(scheduler) {\r\n if (!this.dragBehavior && scheduler) {\r\n this.dragBehavior = new AppointmentDragBehavior(scheduler);\r\n var $rootElement = $(scheduler.element());\r\n this._createDragBehavior(this.getWorkArea(), $rootElement);\r\n this._createDragBehavior(this._$allDayPanel, $rootElement)\r\n }\r\n }\r\n _createDragBehavior($targetElement, $rootElement) {\r\n var options = {\r\n getItemData: (itemElement, appointments) => appointments._getItemData(itemElement),\r\n getItemSettings: $itemElement => $itemElement.data(APPOINTMENT_SETTINGS_KEY)\r\n };\r\n this._createDragBehaviorBase($targetElement, $rootElement, options)\r\n }\r\n _createDragBehaviorBase(targetElement, rootElement, options) {\r\n var container = this.$element().find(\".\".concat(FIXED_CONTAINER_CLASS));\r\n this.dragBehavior.addTo(targetElement, createDragBehaviorConfig(container, rootElement, this.isDefaultDraggingMode, this.dragBehavior, () => {\r\n if (!this.isDefaultDraggingMode) {\r\n this.preventDefaultDragging = false\r\n }\r\n }, () => {\r\n if (!this.isDefaultDraggingMode) {\r\n this.preventDefaultDragging = true\r\n }\r\n }, () => this._getDroppableCell(), () => this._getDateTables(), () => this.removeDroppableCellClass(), () => this.getCellWidth(), options))\r\n }\r\n _isRenderHeaderPanelEmptyCell() {\r\n return this._isVerticalGroupedWorkSpace()\r\n }\r\n _dispose() {\r\n super._dispose();\r\n this.virtualScrollingDispatcher.dispose()\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n currentDate: new Date,\r\n intervalCount: 1,\r\n startDate: null,\r\n firstDayOfWeek: void 0,\r\n startDayHour: 0,\r\n endDayHour: 24,\r\n hoursInterval: .5,\r\n activeStateEnabled: true,\r\n hoverStateEnabled: true,\r\n groups: [],\r\n showAllDayPanel: true,\r\n allDayExpanded: false,\r\n onCellClick: null,\r\n crossScrollingEnabled: false,\r\n dataCellTemplate: null,\r\n timeCellTemplate: null,\r\n resourceCellTemplate: null,\r\n dateCellTemplate: null,\r\n allowMultipleCellSelection: true,\r\n indicatorTime: new Date,\r\n indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n shadeUntilCurrentTime: true,\r\n groupOrientation: \"horizontal\",\r\n selectedCellData: [],\r\n groupByDate: false,\r\n scrolling: {\r\n mode: \"standard\"\r\n },\r\n allDayPanelMode: \"all\",\r\n renovateRender: true,\r\n height: void 0,\r\n draggingMode: \"outlook\",\r\n onScrollEnd: () => {},\r\n getHeaderHeight: void 0,\r\n onRenderAppointments: () => {},\r\n onShowAllDayPanel: () => {},\r\n onSelectedCellsClick: () => {},\r\n timeZoneCalculator: void 0,\r\n schedulerHeight: void 0,\r\n schedulerWidth: void 0\r\n })\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"startDayHour\":\r\n validateDayHours(args.value, this.option(\"endDayHour\"));\r\n this._cleanWorkSpace();\r\n break;\r\n case \"endDayHour\":\r\n validateDayHours(this.option(\"startDayHour\"), args.value);\r\n this._cleanWorkSpace();\r\n break;\r\n case \"dateCellTemplate\":\r\n case \"resourceCellTemplate\":\r\n case \"dataCellTemplate\":\r\n case \"timeCellTemplate\":\r\n case \"hoursInterval\":\r\n case \"firstDayOfWeek\":\r\n case \"currentDate\":\r\n case \"startDate\":\r\n this._cleanWorkSpace();\r\n break;\r\n case \"groups\":\r\n this._cleanView();\r\n this._removeAllDayElements();\r\n this._initGrouping();\r\n this.repaint();\r\n break;\r\n case \"groupOrientation\":\r\n this._initGroupedStrategy();\r\n this._createAllDayPanelElements();\r\n this._removeAllDayElements();\r\n this._cleanWorkSpace();\r\n this._toggleGroupByDateClass();\r\n break;\r\n case \"showAllDayPanel\":\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._cleanView();\r\n this._removeAllDayElements();\r\n this._initGrouping();\r\n this.repaint()\r\n } else if (!this.isRenovatedRender()) {\r\n this._toggleAllDayVisibility(true)\r\n } else {\r\n this.renderWorkSpace()\r\n }\r\n break;\r\n case \"allDayExpanded\":\r\n this._changeAllDayVisibility();\r\n this._attachTablesEvents();\r\n this._updateScrollable();\r\n break;\r\n case \"onSelectionChanged\":\r\n this._createSelectionChangedAction();\r\n break;\r\n case \"onCellClick\":\r\n this._createCellClickAction();\r\n break;\r\n case \"onCellContextMenu\":\r\n this._attachContextMenuEvent();\r\n break;\r\n case \"intervalCount\":\r\n this._cleanWorkSpace();\r\n this._toggleWorkSpaceCountClass();\r\n break;\r\n case \"groupByDate\":\r\n this._cleanWorkSpace();\r\n this._toggleGroupByDateClass();\r\n break;\r\n case \"crossScrollingEnabled\":\r\n this._toggleHorizontalScrollClass();\r\n this._dateTableScrollable.option(this._dateTableScrollableConfig());\r\n break;\r\n case \"allDayPanelMode\":\r\n this.updateShowAllDayPanel();\r\n this.updateAppointments();\r\n break;\r\n case \"width\":\r\n super._optionChanged(args);\r\n this._dimensionChanged();\r\n break;\r\n case \"timeZoneCalculator\":\r\n case \"allowMultipleCellSelection\":\r\n case \"selectedCellData\":\r\n break;\r\n case \"renovateRender\":\r\n case \"scrolling\":\r\n this.repaint();\r\n break;\r\n case \"schedulerHeight\":\r\n case \"schedulerWidth\":\r\n this.virtualScrollingDispatcher.updateDimensions(true);\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n updateShowAllDayPanel() {\r\n var isHiddenAllDayPanel = \"hidden\" === this.option(\"allDayPanelMode\");\r\n this.option(\"onShowAllDayPanel\")(!isHiddenAllDayPanel)\r\n }\r\n _getVirtualScrollingDispatcherOptions() {\r\n return {\r\n getCellHeight: this.getCellHeight.bind(this),\r\n getCellWidth: this.getCellWidth.bind(this),\r\n getCellMinWidth: this.getCellMinWidth.bind(this),\r\n isRTL: this._isRTL.bind(this),\r\n getSchedulerHeight: () => this.option(\"schedulerHeight\"),\r\n getSchedulerWidth: () => this.option(\"schedulerWidth\"),\r\n getViewHeight: () => this.$element().height ? this.$element().height() : getHeight(this.$element()),\r\n getViewWidth: () => this.$element().width ? this.$element().width() : getWidth(this.$element()),\r\n getWindowHeight: () => getWindow().innerHeight,\r\n getWindowWidth: () => getWindow().innerWidth,\r\n getScrolling: () => this.option(\"scrolling\"),\r\n getScrollableOuterWidth: this.getScrollableOuterWidth.bind(this),\r\n getScrollable: this.getScrollable.bind(this),\r\n createAction: this._createAction.bind(this),\r\n updateRender: this.updateRender.bind(this),\r\n updateGrid: this.updateGrid.bind(this),\r\n getGroupCount: this._getGroupCount.bind(this),\r\n isVerticalGrouping: this._isVerticalGroupedWorkSpace.bind(this),\r\n getTotalRowCount: this._getTotalRowCount.bind(this),\r\n getTotalCellCount: this._getTotalCellCount.bind(this)\r\n }\r\n }\r\n _cleanWorkSpace() {\r\n this._cleanView();\r\n this._toggleGroupedClass();\r\n this._toggleWorkSpaceWithOddCells();\r\n this.virtualScrollingDispatcher.updateDimensions(true);\r\n this._renderView();\r\n this.option(\"crossScrollingEnabled\") && this._setTableSizes();\r\n this.cache.clear()\r\n }\r\n _init() {\r\n this._scrollSync = {};\r\n this._viewDataProvider = null;\r\n this._cellsSelectionState = null;\r\n this._activeStateUnit = CELL_SELECTOR;\r\n super._init();\r\n this._initGrouping();\r\n this._toggleHorizontalScrollClass();\r\n this._toggleWorkSpaceCountClass();\r\n this._toggleGroupByDateClass();\r\n this._toggleWorkSpaceWithOddCells();\r\n this.$element().addClass(COMPONENT_CLASS).addClass(this._getElementClass())\r\n }\r\n _initPositionHelper() {\r\n this.positionHelper = new PositionHelper({\r\n key: this.option(\"key\"),\r\n viewDataProvider: this.viewDataProvider,\r\n viewStartDayHour: this.option(\"startDayHour\"),\r\n viewEndDayHour: this.option(\"endDayHour\"),\r\n cellDuration: this.getCellDuration(),\r\n groupedStrategy: this._groupedStrategy,\r\n isGroupedByDate: this.isGroupedByDate(),\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n startViewDate: this.getStartViewDate(),\r\n isVerticalGrouping: this._isVerticalGroupedWorkSpace(),\r\n groupCount: this._getGroupCount(),\r\n isVirtualScrolling: this.isVirtualScrolling(),\r\n getDOMMetaDataCallback: this.getDOMElementsMetaData.bind(this)\r\n })\r\n }\r\n _initGrouping() {\r\n this._initGroupedStrategy();\r\n this._toggleGroupingDirectionClass();\r\n this._toggleGroupByDateClass()\r\n }\r\n isVerticalOrientation() {\r\n var _a;\r\n var orientation = (null === (_a = this.option(\"groups\")) || void 0 === _a ? void 0 : _a.length) ? this.option(\"groupOrientation\") : this._getDefaultGroupStrategy();\r\n return \"vertical\" === orientation\r\n }\r\n _initGroupedStrategy() {\r\n var Strategy = this.isVerticalOrientation() ? VerticalGroupedStrategy : HorizontalGroupedStrategy;\r\n this._groupedStrategy = new Strategy(this)\r\n }\r\n _getDefaultGroupStrategy() {\r\n return \"horizontal\"\r\n }\r\n _toggleHorizontalScrollClass() {\r\n this.$element().toggleClass(WORKSPACE_WITH_BOTH_SCROLLS_CLASS, this.option(\"crossScrollingEnabled\"))\r\n }\r\n _toggleGroupByDateClass() {\r\n this.$element().toggleClass(WORKSPACE_WITH_GROUP_BY_DATE_CLASS, this.isGroupedByDate())\r\n }\r\n _toggleWorkSpaceCountClass() {\r\n this.$element().toggleClass(WORKSPACE_WITH_COUNT_CLASS, this._isWorkSpaceWithCount())\r\n }\r\n _toggleWorkSpaceWithOddCells() {\r\n this.$element().toggleClass(WORKSPACE_WITH_ODD_CELLS_CLASS, this._isWorkspaceWithOddCells())\r\n }\r\n _toggleGroupingDirectionClass() {\r\n this.$element().toggleClass(VERTICAL_GROUPED_WORKSPACE_CLASS, this._isVerticalGroupedWorkSpace())\r\n }\r\n _getDateTableCellClass(rowIndex, columnIndex) {\r\n var cellClass = \"\".concat(DATE_TABLE_CELL_CLASS, \" \").concat(HORIZONTAL_SIZES_CLASS, \" \").concat(VERTICAL_SIZES_CLASS);\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, columnIndex + 1, rowIndex, columnIndex)\r\n }\r\n _getGroupHeaderClass(i) {\r\n var cellClass = GROUP_HEADER_CLASS;\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1)\r\n }\r\n _initWorkSpaceUnits() {\r\n this._$headerPanelContainer = $(\"<div>\").addClass(\"dx-scheduler-header-panel-container\");\r\n this._$headerTablesContainer = $(\"<div>\").addClass(\"dx-scheduler-header-tables-container\");\r\n this._$headerPanel = $(\"<table>\");\r\n this._$thead = $(\"<thead>\").appendTo(this._$headerPanel);\r\n this._$headerPanelEmptyCell = $(\"<div>\").addClass(\"dx-scheduler-header-panel-empty-cell\");\r\n this._$allDayTable = $(\"<table>\");\r\n this._$fixedContainer = $(\"<div>\").addClass(FIXED_CONTAINER_CLASS);\r\n this._$allDayContainer = $(\"<div>\").addClass(ALL_DAY_CONTAINER_CLASS);\r\n this._$dateTableScrollableContent = $(\"<div>\").addClass(\"dx-scheduler-date-table-scrollable-content\");\r\n this._$sidebarScrollableContent = $(\"<div>\").addClass(\"dx-scheduler-side-bar-scrollable-content\");\r\n this._initAllDayPanelElements();\r\n if (this.isRenovatedRender()) {\r\n this.createRAllDayPanelElements()\r\n } else {\r\n this._createAllDayPanelElements()\r\n }\r\n this._$timePanel = $(\"<table>\").addClass(TIME_PANEL_CLASS);\r\n this._$dateTable = $(\"<table>\");\r\n this._$dateTableContainer = $(\"<div>\").addClass(\"dx-scheduler-date-table-container\");\r\n this._$groupTable = $(\"<div>\").addClass(WORKSPACE_VERTICAL_GROUP_TABLE_CLASS)\r\n }\r\n _initAllDayPanelElements() {\r\n this._allDayTitles = [];\r\n this._allDayTables = [];\r\n this._allDayPanels = []\r\n }\r\n _initDateTableScrollable() {\r\n var $dateTableScrollable = $(\"<div>\").addClass(SCHEDULER_DATE_TABLE_SCROLLABLE_CLASS);\r\n this._dateTableScrollable = this._createComponent($dateTableScrollable, Scrollable, this._dateTableScrollableConfig());\r\n this._scrollSync.dateTable = getMemoizeScrollTo(() => this._dateTableScrollable)\r\n }\r\n _createWorkSpaceElements() {\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._createWorkSpaceScrollableElements()\r\n } else {\r\n this._createWorkSpaceStaticElements()\r\n }\r\n }\r\n _createWorkSpaceStaticElements() {\r\n var _a;\r\n this._$dateTableContainer.append(this._$dateTable);\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._$dateTableContainer.append(this._$allDayContainer);\r\n this._$dateTableScrollableContent.append(this._$groupTable, this._$timePanel, this._$dateTableContainer);\r\n this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);\r\n this._$headerTablesContainer.append(this._$headerPanel)\r\n } else {\r\n this._$dateTableScrollableContent.append(this._$timePanel, this._$dateTableContainer);\r\n this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);\r\n this._$headerTablesContainer.append(this._$headerPanel, this._$allDayPanel);\r\n null === (_a = this._$allDayPanel) || void 0 === _a ? void 0 : _a.append(this._$allDayContainer, this._$allDayTable)\r\n }\r\n this._appendHeaderPanelEmptyCellIfNecessary();\r\n this._$headerPanelContainer.append(this._$headerTablesContainer);\r\n this.$element().append(this._$fixedContainer, this._$headerPanelContainer, this._dateTableScrollable.$element())\r\n }\r\n _createWorkSpaceScrollableElements() {\r\n var _a;\r\n this.$element().append(this._$fixedContainer);\r\n this._$flexContainer = $(\"<div>\").addClass(\"dx-scheduler-work-space-flex-container\");\r\n this._createHeaderScrollable();\r\n this._headerScrollable.$content().append(this._$headerPanel);\r\n this._appendHeaderPanelEmptyCellIfNecessary();\r\n this._$headerPanelContainer.append(this._$headerTablesContainer);\r\n this.$element().append(this._$headerPanelContainer);\r\n this.$element().append(this._$flexContainer);\r\n this._createSidebarScrollable();\r\n this._$flexContainer.append(this._dateTableScrollable.$element());\r\n this._$dateTableContainer.append(this._$dateTable);\r\n this._$dateTableScrollableContent.append(this._$dateTableContainer);\r\n this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._$dateTableContainer.append(this._$allDayContainer);\r\n this._$sidebarScrollableContent.append(this._$groupTable, this._$timePanel)\r\n } else {\r\n this._headerScrollable.$content().append(this._$allDayPanel);\r\n null === (_a = this._$allDayPanel) || void 0 === _a ? void 0 : _a.append(this._$allDayContainer, this._$allDayTable);\r\n this._$sidebarScrollableContent.append(this._$timePanel)\r\n }\r\n this._sidebarScrollable.$content().append(this._$sidebarScrollableContent)\r\n }\r\n _appendHeaderPanelEmptyCellIfNecessary() {\r\n this._isRenderHeaderPanelEmptyCell() && this._$headerPanelContainer.append(this._$headerPanelEmptyCell)\r\n }\r\n _createHeaderScrollable() {\r\n var $headerScrollable = $(\"<div>\").addClass(SCHEDULER_HEADER_SCROLLABLE_CLASS).appendTo(this._$headerTablesContainer);\r\n this._headerScrollable = this._createComponent($headerScrollable, Scrollable, this._headerScrollableConfig());\r\n this._scrollSync.header = getMemoizeScrollTo(() => this._headerScrollable)\r\n }\r\n _createSidebarScrollable() {\r\n var $timePanelScrollable = $(\"<div>\").addClass(SCHEDULER_SIDEBAR_SCROLLABLE_CLASS).appendTo(this._$flexContainer);\r\n this._sidebarScrollable = this._createComponent($timePanelScrollable, Scrollable, {\r\n useKeyboard: false,\r\n showScrollbar: \"never\",\r\n direction: \"vertical\",\r\n useNative: false,\r\n updateManually: true,\r\n bounceEnabled: false,\r\n onScroll: event => {\r\n this._scrollSync.dateTable({\r\n top: event.scrollOffset.top\r\n })\r\n }\r\n });\r\n this._scrollSync.sidebar = getMemoizeScrollTo(() => this._sidebarScrollable)\r\n }\r\n _attachTableClasses() {\r\n this._addTableClass(this._$dateTable, DATE_TABLE_CLASS);\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n var groupCount = this._getGroupCount();\r\n for (var i = 0; i < groupCount; i++) {\r\n this._addTableClass(this._allDayTables[i], ALL_DAY_TABLE_CLASS)\r\n }\r\n } else if (!this.isRenovatedRender()) {\r\n this._addTableClass(this._$allDayTable, ALL_DAY_TABLE_CLASS)\r\n }\r\n }\r\n _attachHeaderTableClasses() {\r\n this._addTableClass(this._$headerPanel, HEADER_PANEL_CLASS)\r\n }\r\n _addTableClass($el, className) {\r\n $el && !$el.hasClass(className) && $el.addClass(className)\r\n }\r\n _initMarkup() {\r\n this.cache.clear();\r\n this._initWorkSpaceUnits();\r\n this._initVirtualScrolling();\r\n this._initDateTableScrollable();\r\n this._createWorkSpaceElements();\r\n super._initMarkup();\r\n if (!this.option(\"crossScrollingEnabled\")) {\r\n this._attachTableClasses();\r\n this._attachHeaderTableClasses()\r\n }\r\n this._toggleGroupedClass();\r\n this._renderView();\r\n this._attachEvents()\r\n }\r\n _render() {\r\n super._render();\r\n this._renderDateTimeIndication();\r\n this._setIndicationUpdateInterval()\r\n }\r\n _toggleGroupedClass() {\r\n this.$element().toggleClass(GROUPED_WORKSPACE_CLASS, this._getGroupCount() > 0)\r\n }\r\n _renderView() {\r\n if (this.isRenovatedRender()) {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this.renderRGroupPanel()\r\n }\r\n } else {\r\n this._applyCellTemplates(this._renderGroupHeader())\r\n }\r\n this.renderWorkSpace();\r\n if (this.isRenovatedRender()) {\r\n this.virtualScrollingDispatcher.updateDimensions()\r\n }\r\n this._updateGroupTableHeight();\r\n this.updateHeaderEmptyCellWidth();\r\n this._shader = new VerticalShader(this)\r\n }\r\n updateCellsSelection() {\r\n var renderOptions = this.generateRenderOptions();\r\n this.viewDataProvider.updateViewData(renderOptions);\r\n this.renderRWorkSpace({\r\n timePanel: true,\r\n dateTable: true,\r\n allDayPanel: true\r\n })\r\n }\r\n _renderDateTimeIndication() {\r\n return noop()\r\n }\r\n _setIndicationUpdateInterval() {\r\n return noop()\r\n }\r\n _refreshDateTimeIndication() {\r\n return noop()\r\n }\r\n _detachGroupCountClass() {\r\n [...VERTICAL_GROUP_COUNT_CLASSES].forEach(className => {\r\n this.$element().removeClass(className)\r\n })\r\n }\r\n _attachGroupCountClass() {\r\n var className = this._groupedStrategy.getGroupCountClass(this.option(\"groups\"));\r\n this.$element().addClass(className)\r\n }\r\n _getDateHeaderTemplate() {\r\n return this.option(\"dateCellTemplate\")\r\n }\r\n _toggleAllDayVisibility(isUpdateScrollable) {\r\n var showAllDayPanel = this._isShowAllDayPanel();\r\n this.$element().toggleClass(WORKSPACE_WITH_ALL_DAY_CLASS, showAllDayPanel);\r\n this._changeAllDayVisibility();\r\n isUpdateScrollable && this._updateScrollable()\r\n }\r\n _changeAllDayVisibility() {\r\n this.cache.clear();\r\n this.$element().toggleClass(WORKSPACE_WITH_COLLAPSED_ALL_DAY_CLASS, !this.option(\"allDayExpanded\") && this._isShowAllDayPanel())\r\n }\r\n _getDateTables() {\r\n return this._$dateTable.add(this._$allDayTable)\r\n }\r\n _getDateTable() {\r\n return this._$dateTable\r\n }\r\n _removeAllDayElements() {\r\n this._$allDayTable && this._$allDayTable.remove();\r\n this._$allDayTitle && this._$allDayTitle.remove()\r\n }\r\n _cleanView() {\r\n var _a, _b, _c;\r\n this.cache.clear();\r\n this._cleanTableWidths();\r\n this.cellsSelectionState.clearSelectedAndFocusedCells();\r\n if (!this.isRenovatedRender()) {\r\n this._$thead.empty();\r\n this._$dateTable.empty();\r\n this._$timePanel.empty();\r\n this._$groupTable.empty();\r\n null === (_a = this._$allDayTable) || void 0 === _a ? void 0 : _a.empty();\r\n null === (_b = this._$sidebarTable) || void 0 === _b ? void 0 : _b.empty()\r\n }\r\n null === (_c = this._shader) || void 0 === _c ? void 0 : _c.clean();\r\n delete this._interval\r\n }\r\n _clean() {\r\n eventsEngine.off(domAdapter.getDocument(), SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME);\r\n this._disposeRenovatedComponents();\r\n super._clean()\r\n }\r\n _cleanTableWidths() {\r\n this._$headerPanel.css(\"width\", \"\");\r\n this._$dateTable.css(\"width\", \"\");\r\n this._$allDayTable && this._$allDayTable.css(\"width\", \"\")\r\n }\r\n _disposeRenovatedComponents() {\r\n var _a, _b, _c, _d, _e;\r\n null === (_a = this.renovatedAllDayPanel) || void 0 === _a ? void 0 : _a.dispose();\r\n this.renovatedAllDayPanel = void 0;\r\n null === (_b = this.renovatedDateTable) || void 0 === _b ? void 0 : _b.dispose();\r\n this.renovatedDateTable = void 0;\r\n null === (_c = this.renovatedTimePanel) || void 0 === _c ? void 0 : _c.dispose();\r\n this.renovatedTimePanel = void 0;\r\n null === (_d = this.renovatedGroupPanel) || void 0 === _d ? void 0 : _d.dispose();\r\n this.renovatedGroupPanel = void 0;\r\n null === (_e = this.renovatedHeaderPanel) || void 0 === _e ? void 0 : _e.dispose();\r\n this.renovatedHeaderPanel = void 0\r\n }\r\n getGroupedStrategy() {\r\n return this._groupedStrategy\r\n }\r\n getFixedContainer() {\r\n return this._$fixedContainer\r\n }\r\n getAllDayContainer() {\r\n return this._$allDayContainer\r\n }\r\n updateRender() {\r\n this.renderer.updateRender()\r\n }\r\n updateGrid() {\r\n this.renderer._renderGrid()\r\n }\r\n updateAppointments() {\r\n var _a;\r\n this.option(\"onRenderAppointments\")();\r\n null === (_a = this.dragBehavior) || void 0 === _a ? void 0 : _a.updateDragSource()\r\n }\r\n _createAllDayPanelElements() {\r\n var groupCount = this._getGroupCount();\r\n if (this._isVerticalGroupedWorkSpace() && 0 !== groupCount) {\r\n for (var i = 0; i < groupCount; i++) {\r\n var $allDayTitle = $(\"<div>\").addClass(ALL_DAY_TITLE_CLASS).text(messageLocalization.format(\"dxScheduler-allDay\"));\r\n this._allDayTitles.push($allDayTitle);\r\n this._$allDayTable = $(\"<table>\");\r\n this._allDayTables.push(this._$allDayTable);\r\n this._$allDayPanel = $(\"<div>\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable);\r\n this._allDayPanels.push(this._$allDayPanel)\r\n }\r\n } else {\r\n this._$allDayTitle = $(\"<div>\").addClass(ALL_DAY_TITLE_CLASS).text(messageLocalization.format(\"dxScheduler-allDay\")).appendTo(this.$element());\r\n this._$allDayTable = $(\"<table>\");\r\n this._$allDayPanel = $(\"<div>\").addClass(ALL_DAY_PANEL_CLASS).append(this._$allDayTable)\r\n }\r\n }\r\n renderWorkSpace() {\r\n var isGenerateNewViewData = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : true;\r\n this.cache.clear();\r\n this.viewDataProvider.update(this.generateRenderOptions(), isGenerateNewViewData);\r\n if (this.isRenovatedRender()) {\r\n this.renderRWorkSpace()\r\n } else {\r\n this._renderDateHeader();\r\n this._renderTimePanel();\r\n this._renderGroupAllDayPanel();\r\n this._renderDateTable();\r\n this._renderAllDayPanel()\r\n }\r\n this._initPositionHelper()\r\n }\r\n _renderGroupHeader() {\r\n var $container = this._getGroupHeaderContainer();\r\n var groupCount = this._getGroupCount();\r\n var cellTemplates = [];\r\n if (groupCount) {\r\n var groupRows = this._makeGroupRows(this.option(\"groups\"), this.option(\"groupByDate\"));\r\n this._attachGroupCountClass();\r\n $container.append(groupRows.elements);\r\n cellTemplates = groupRows.cellTemplates\r\n } else {\r\n this._detachGroupCountClass()\r\n }\r\n return cellTemplates\r\n }\r\n _applyCellTemplates(templates) {\r\n null === templates || void 0 === templates ? void 0 : templates.forEach(template => {\r\n template()\r\n })\r\n }\r\n _makeGroupRows(groups, groupByDate) {\r\n var tableCreatorStrategy = this._isVerticalGroupedWorkSpace() ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n groupHeaderRowClass: GROUP_ROW_CLASS,\r\n groupRowClass: GROUP_ROW_CLASS,\r\n groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n groupHeaderContentClass: GROUP_HEADER_CONTENT_CLASS\r\n }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getGroupCount(), groupByDate)\r\n }\r\n _renderDateHeader() {\r\n var container = this._getDateHeaderContainer();\r\n var $headerRow = $(\"<tr>\").addClass(HEADER_ROW_CLASS);\r\n var count = this._getCellCount();\r\n var cellTemplate = this._getDateHeaderTemplate();\r\n var repeatCount = this._getCalculateHeaderCellRepeatCount();\r\n var templateCallbacks = [];\r\n var groupByDate = this.isGroupedByDate();\r\n if (!groupByDate) {\r\n for (var rowIndex = 0; rowIndex < repeatCount; rowIndex++) {\r\n for (var columnIndex = 0; columnIndex < count; columnIndex++) {\r\n var templateIndex = rowIndex * count + columnIndex;\r\n this._renderDateHeaderTemplate($headerRow, columnIndex, templateIndex, cellTemplate, templateCallbacks)\r\n }\r\n }\r\n container.append($headerRow)\r\n } else {\r\n var colSpan = groupByDate ? this._getGroupCount() : 1;\r\n for (var _columnIndex = 0; _columnIndex < count; _columnIndex++) {\r\n var _templateIndex = _columnIndex * repeatCount;\r\n var cellElement = this._renderDateHeaderTemplate($headerRow, _columnIndex, _templateIndex, cellTemplate, templateCallbacks);\r\n cellElement.attr(\"colSpan\", colSpan)\r\n }\r\n container.prepend($headerRow)\r\n }\r\n this._applyCellTemplates(templateCallbacks);\r\n return $headerRow\r\n }\r\n _renderDateHeaderTemplate(container, panelCellIndex, templateIndex, cellTemplate, templateCallbacks) {\r\n var validTemplateIndex = this.isGroupedByDate() ? Math.floor(templateIndex / this._getGroupCount()) : templateIndex;\r\n var {\r\n completeDateHeaderMap: completeDateHeaderMap\r\n } = this.viewDataProvider;\r\n var {\r\n text: text,\r\n startDate: date\r\n } = completeDateHeaderMap[completeDateHeaderMap.length - 1][validTemplateIndex];\r\n var $cell = $(\"<th>\").addClass(this._getHeaderPanelCellClass(panelCellIndex)).attr(\"title\", text);\r\n if (null === cellTemplate || void 0 === cellTemplate ? void 0 : cellTemplate.render) {\r\n templateCallbacks.push(cellTemplate.render.bind(cellTemplate, {\r\n model: _extends({\r\n text: text,\r\n date: date\r\n }, this._getGroupsForDateHeaderTemplate(templateIndex)),\r\n index: templateIndex,\r\n container: getPublicElement($cell)\r\n }))\r\n } else {\r\n $cell.text(text)\r\n }\r\n container.append($cell);\r\n return $cell\r\n }\r\n _getGroupsForDateHeaderTemplate(templateIndex) {\r\n var indexMultiplier = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;\r\n var groupIndex;\r\n var groups;\r\n if (this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate()) {\r\n groupIndex = this._getGroupIndex(0, templateIndex * indexMultiplier);\r\n var groupsArray = getCellGroups(groupIndex, this.option(\"groups\"));\r\n groups = getGroupsObjectFromGroupsArray(groupsArray)\r\n }\r\n return {\r\n groups: groups,\r\n groupIndex: groupIndex\r\n }\r\n }\r\n _getHeaderPanelCellClass(i) {\r\n var cellClass = \"\".concat(HEADER_PANEL_CELL_CLASS, \" \").concat(HORIZONTAL_SIZES_CLASS);\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i + 1, void 0, void 0, this.isGroupedByDate())\r\n }\r\n _renderAllDayPanel(index) {\r\n var cellCount = this._getCellCount();\r\n if (!this._isVerticalGroupedWorkSpace()) {\r\n cellCount *= this._getGroupCount() || 1\r\n }\r\n var cellTemplates = this._renderTableBody({\r\n container: this._allDayPanels.length ? getPublicElement(this._allDayTables[index]) : getPublicElement(this._$allDayTable),\r\n rowCount: 1,\r\n cellCount: cellCount,\r\n cellClass: this._getAllDayPanelCellClass.bind(this),\r\n rowClass: ALL_DAY_TABLE_ROW_CLASS,\r\n cellTemplate: this.option(\"dataCellTemplate\"),\r\n getCellData: this._oldRender_getAllDayCellData(index),\r\n groupIndex: index\r\n }, true);\r\n this._toggleAllDayVisibility(true);\r\n this._applyCellTemplates(cellTemplates)\r\n }\r\n _renderGroupAllDayPanel() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n var groupCount = this._getGroupCount();\r\n for (var i = 0; i < groupCount; i++) {\r\n this._renderAllDayPanel(i)\r\n }\r\n }\r\n }\r\n _getAllDayPanelCellClass(i, j) {\r\n var cellClass = \"\".concat(ALL_DAY_TABLE_CELL_CLASS, \" \").concat(HORIZONTAL_SIZES_CLASS);\r\n return this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, j + 1)\r\n }\r\n _renderTimePanel() {\r\n var repeatCount = this._groupedStrategy.calculateTimeCellRepeatCount();\r\n var getData = (rowIndex, field) => {\r\n var allDayPanelsCount = 0;\r\n if (this.isAllDayPanelVisible) {\r\n allDayPanelsCount = 1\r\n }\r\n if (this.isGroupedAllDayPanel()) {\r\n allDayPanelsCount = Math.ceil((rowIndex + 1) / this._getRowCount())\r\n }\r\n var validRowIndex = rowIndex + allDayPanelsCount;\r\n return this.viewDataProvider.completeTimePanelMap[validRowIndex][field]\r\n };\r\n this._renderTableBody({\r\n container: getPublicElement(this._$timePanel),\r\n rowCount: this._getTimePanelRowCount() * repeatCount,\r\n cellCount: 1,\r\n cellClass: this._getTimeCellClass.bind(this),\r\n rowClass: TIME_PANEL_ROW_CLASS,\r\n cellTemplate: this.option(\"timeCellTemplate\"),\r\n getCellText: rowIndex => getData(rowIndex, \"text\"),\r\n getCellDate: rowIndex => getData(rowIndex, \"startDate\"),\r\n groupCount: this._getGroupCount(),\r\n allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayTitles : void 0,\r\n getTemplateData: (rowIndex => {\r\n if (!this._isVerticalGroupedWorkSpace()) {\r\n return {}\r\n }\r\n var groupIndex = this._getGroupIndex(rowIndex, 0);\r\n var groupsArray = getCellGroups(groupIndex, this.option(\"groups\"));\r\n var groups = getGroupsObjectFromGroupsArray(groupsArray);\r\n return {\r\n groupIndex: groupIndex,\r\n groups: groups\r\n }\r\n }).bind(this)\r\n })\r\n }\r\n _getTimeCellClass(i) {\r\n var cellClass = \"\".concat(TIME_PANEL_CELL_CLASS, \" \").concat(VERTICAL_SIZES_CLASS);\r\n return this._isVerticalGroupedWorkSpace() ? this._groupedStrategy.addAdditionalGroupCellClasses(cellClass, i, i) : cellClass\r\n }\r\n _renderDateTable() {\r\n var groupCount = this._getGroupCount();\r\n this._renderTableBody({\r\n container: getPublicElement(this._$dateTable),\r\n rowCount: this._getTotalRowCount(groupCount),\r\n cellCount: this._getTotalCellCount(groupCount),\r\n cellClass: this._getDateTableCellClass.bind(this),\r\n rowClass: DATE_TABLE_ROW_CLASS,\r\n cellTemplate: this.option(\"dataCellTemplate\"),\r\n getCellData: (_, rowIndex, columnIndex) => {\r\n var isGroupedAllDayPanel = this.isGroupedAllDayPanel();\r\n var validRowIndex = rowIndex;\r\n if (isGroupedAllDayPanel) {\r\n var rowCount = this._getRowCount();\r\n var allDayPanelsCount = Math.ceil(rowIndex / rowCount);\r\n validRowIndex += allDayPanelsCount\r\n }\r\n var {\r\n cellData: cellData\r\n } = this.viewDataProvider.viewDataMap.dateTableMap[validRowIndex][columnIndex];\r\n return {\r\n value: this._filterCellDataFields(cellData),\r\n fullValue: cellData,\r\n key: CELL_DATA\r\n }\r\n },\r\n allDayElements: this._insertAllDayRowsIntoDateTable() ? this._allDayPanels : void 0,\r\n groupCount: groupCount,\r\n groupByDate: this.option(\"groupByDate\")\r\n })\r\n }\r\n _insertAllDayRowsIntoDateTable() {\r\n return this._groupedStrategy.insertAllDayRowsIntoDateTable()\r\n }\r\n _renderTableBody(options, delayCellTemplateRendering) {\r\n var result = [];\r\n if (!delayCellTemplateRendering) {\r\n this._applyCellTemplates(tableCreator.makeTable(options))\r\n } else {\r\n result = tableCreator.makeTable(options)\r\n }\r\n return result\r\n }\r\n}\r\nvar createDragBehaviorConfig = (container, rootElement, isDefaultDraggingMode, dragBehavior, enableDefaultDragging, disableDefaultDragging, getDroppableCell, getDateTables, removeDroppableCellClass, getCellWidth, options) => {\r\n var state = {\r\n dragElement: void 0,\r\n itemData: void 0\r\n };\r\n var isItemDisabled = () => {\r\n var {\r\n itemData: itemData\r\n } = state;\r\n if (itemData) {\r\n var getter = compileGetter(\"disabled\");\r\n return getter(itemData)\r\n }\r\n return true\r\n };\r\n var cursorOffset = options.isSetCursorOffset ? () => {\r\n var $dragElement = $(state.dragElement);\r\n return {\r\n x: getWidth($dragElement) / 2,\r\n y: getHeight($dragElement) / 2\r\n }\r\n } : void 0;\r\n return {\r\n container: container,\r\n dragTemplate: () => state.dragElement,\r\n onDragStart: e => {\r\n if (!isDefaultDraggingMode) {\r\n disableDefaultDragging()\r\n }\r\n var canceled = e.cancel;\r\n var {\r\n event: event\r\n } = e;\r\n var $itemElement = $(e.itemElement);\r\n var appointments = e.component._appointments;\r\n state.itemData = options.getItemData(e.itemElement, appointments);\r\n var settings = options.getItemSettings($itemElement, e);\r\n var {\r\n initialPosition: initialPosition\r\n } = options;\r\n if (!isItemDisabled()) {\r\n event.data = event.data || {};\r\n if (!canceled) {\r\n if (!settings.isCompact) {\r\n dragBehavior.updateDragSource(state.itemData, settings)\r\n }\r\n state.dragElement = ((itemData, settings, appointments) => {\r\n var appointmentIndex = appointments.option(\"items\").length;\r\n settings.isCompact = false;\r\n settings.virtual = false;\r\n var items = appointments._renderItem(appointmentIndex, {\r\n itemData: itemData,\r\n settings: [settings]\r\n });\r\n return items[0]\r\n })(state.itemData, settings, appointments);\r\n event.data.itemElement = state.dragElement;\r\n event.data.initialPosition = null !== initialPosition && void 0 !== initialPosition ? initialPosition : locate($(state.dragElement));\r\n event.data.itemData = state.itemData;\r\n event.data.itemSettings = settings;\r\n dragBehavior.onDragStart(event.data);\r\n resetPosition($(state.dragElement))\r\n }\r\n }\r\n },\r\n onDragMove: () => {\r\n if (isDefaultDraggingMode) {\r\n return\r\n }\r\n var elements = (() => {\r\n var appointmentWidth = getWidth(state.dragElement);\r\n var cellWidth = getCellWidth();\r\n var isWideAppointment = appointmentWidth > cellWidth;\r\n var isNarrowAppointment = appointmentWidth <= DRAGGING_MOUSE_FAULT;\r\n var dragElementContainer = $(state.dragElement).parent();\r\n var boundingRect = getBoundingRect(dragElementContainer.get(0));\r\n var newX = boundingRect.left;\r\n var newY = boundingRect.top;\r\n if (isWideAppointment) {\r\n return domAdapter.elementsFromPoint(newX + DRAGGING_MOUSE_FAULT, newY + DRAGGING_MOUSE_FAULT)\r\n }\r\n if (isNarrowAppointment) {\r\n return domAdapter.elementsFromPoint(newX, newY)\r\n }\r\n return domAdapter.elementsFromPoint(newX + appointmentWidth / 2, newY + DRAGGING_MOUSE_FAULT)\r\n })();\r\n var isMoveUnderControl = !!elements.find(el => el === rootElement.get(0));\r\n var dateTables = getDateTables();\r\n var droppableCell = elements.find(el => {\r\n var {\r\n classList: classList\r\n } = el;\r\n var isCurrentSchedulerElement = 1 === dateTables.find(el).length;\r\n return isCurrentSchedulerElement && (classList.contains(DATE_TABLE_CELL_CLASS) || classList.contains(ALL_DAY_TABLE_CELL_CLASS))\r\n });\r\n if (droppableCell) {\r\n if (!getDroppableCell().is(droppableCell)) {\r\n removeDroppableCellClass()\r\n }\r\n $(droppableCell).addClass(DATE_TABLE_DROPPABLE_CELL_CLASS)\r\n } else if (!isMoveUnderControl) {\r\n removeDroppableCellClass()\r\n }\r\n },\r\n onDragEnd: e => {\r\n var _a;\r\n if (!isDefaultDraggingMode) {\r\n enableDefaultDragging()\r\n }\r\n if (!isItemDisabled()) {\r\n dragBehavior.onDragEnd(e)\r\n }\r\n null === (_a = state.dragElement) || void 0 === _a ? void 0 : _a.remove();\r\n removeDroppableCellClass()\r\n },\r\n cursorOffset: cursorOffset,\r\n filter: options.filter\r\n }\r\n};\r\nexport default SchedulerWorkSpace;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_agenda.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport domAdapter from \"../../../core/dom_adapter\";\r\nimport {\r\n getPublicElement\r\n} from \"../../../core/element\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../../core/utils/iterator\";\r\nimport {\r\n setHeight,\r\n setOuterHeight\r\n} from \"../../../core/utils/size\";\r\nimport dateLocalization from \"../../../localization/date\";\r\nimport {\r\n calculateStartViewDate\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/agenda\";\r\nimport {\r\n formatWeekday,\r\n getVerticalGroupCountClass\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n DATE_TABLE_CLASS,\r\n DATE_TABLE_ROW_CLASS,\r\n GROUP_HEADER_CONTENT_CLASS,\r\n GROUP_ROW_CLASS,\r\n TIME_PANEL_CLASS\r\n} from \"../m_classes\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport tableCreatorModule from \"../m_table_creator\";\r\nimport {\r\n createReducedResourcesTree,\r\n getDataAccessors,\r\n getPathToLeaf\r\n} from \"../resources/m_utils\";\r\nimport WorkSpace from \"./m_work_space\";\r\nvar {\r\n tableCreator: tableCreator\r\n} = tableCreatorModule;\r\nvar AGENDA_CLASS = \"dx-scheduler-agenda\";\r\nvar AGENDA_DATE_CLASS = \"dx-scheduler-agenda-date\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar TIME_PANEL_ROW_CLASS = \"dx-scheduler-time-panel-row\";\r\nvar TIME_PANEL_CELL_CLASS = \"dx-scheduler-time-panel-cell\";\r\nvar NODATA_CONTAINER_CLASS = \"dx-scheduler-agenda-nodata\";\r\nvar LAST_ROW_CLASS = \"dx-scheduler-date-table-last-row\";\r\nvar INNER_CELL_MARGIN = 5;\r\nvar OUTER_CELL_MARGIN = 20;\r\nclass SchedulerAgenda extends WorkSpace {\r\n get type() {\r\n return VIEWS.AGENDA\r\n }\r\n get renderingStrategy() {\r\n return this.invoke(\"getLayoutManager\").getRenderingStrategyInstance()\r\n }\r\n get appointmentDataProvider() {\r\n return this.option(\"getAppointmentDataProvider\")()\r\n }\r\n getStartViewDate() {\r\n return this._startViewDate\r\n }\r\n _init() {\r\n super._init();\r\n this._activeStateUnit = void 0\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n agendaDuration: 7,\r\n rowHeight: 60,\r\n noDataText: \"\"\r\n })\r\n }\r\n _optionChanged(args) {\r\n var {\r\n name: name\r\n } = args;\r\n var {\r\n value: value\r\n } = args;\r\n switch (name) {\r\n case \"agendaDuration\":\r\n break;\r\n case \"noDataText\":\r\n case \"rowHeight\":\r\n this._recalculateAgenda(this._rows);\r\n break;\r\n case \"groups\":\r\n if (!value || !value.length) {\r\n if (this._$groupTable) {\r\n this._$groupTable.remove();\r\n this._$groupTable = null;\r\n this._detachGroupCountClass()\r\n }\r\n } else if (!this._$groupTable) {\r\n this._initGroupTable();\r\n this._dateTableScrollable.$content().prepend(this._$groupTable)\r\n }\r\n super._optionChanged(args);\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _renderFocusState() {\r\n return noop()\r\n }\r\n _renderFocusTarget() {\r\n return noop()\r\n }\r\n _cleanFocusState() {\r\n return noop()\r\n }\r\n supportAllDayRow() {\r\n return false\r\n }\r\n _isVerticalGroupedWorkSpace() {\r\n return false\r\n }\r\n _getElementClass() {\r\n return AGENDA_CLASS\r\n }\r\n _calculateStartViewDate() {\r\n return calculateStartViewDate(this.option(\"currentDate\"), this.option(\"startDayHour\"))\r\n }\r\n _getRowCount() {\r\n return this.option(\"agendaDuration\")\r\n }\r\n _getCellCount() {\r\n return 1\r\n }\r\n _getTimePanelRowCount() {\r\n return this.option(\"agendaDuration\")\r\n }\r\n _renderAllDayPanel() {\r\n return noop()\r\n }\r\n _toggleAllDayVisibility() {\r\n return noop()\r\n }\r\n _initWorkSpaceUnits() {\r\n this._initGroupTable();\r\n this._$timePanel = $(\"<table>\").addClass(TIME_PANEL_CLASS);\r\n this._$dateTable = $(\"<table>\").addClass(DATE_TABLE_CLASS);\r\n this._$dateTableScrollableContent = $(\"<div>\").addClass(\"dx-scheduler-date-table-scrollable-content\");\r\n this._$dateTableContainer = $(\"<div>\").addClass(\"dx-scheduler-date-table-container\")\r\n }\r\n _initGroupTable() {\r\n var groups = this.option(\"groups\");\r\n if (groups && groups.length) {\r\n this._$groupTable = $(\"<table>\").addClass(GROUP_TABLE_CLASS)\r\n }\r\n }\r\n _renderView() {\r\n this._startViewDate = this._calculateStartViewDate();\r\n this._rows = [];\r\n this._initPositionHelper()\r\n }\r\n _recalculateAgenda(rows) {\r\n var cellTemplates = [];\r\n this._cleanView();\r\n if (this._rowsIsEmpty(rows)) {\r\n this._renderNoData();\r\n return\r\n }\r\n this._rows = rows;\r\n if (this._$groupTable) {\r\n cellTemplates = this._renderGroupHeader();\r\n this._setGroupHeaderCellsHeight()\r\n }\r\n this._renderTimePanel();\r\n this._renderDateTable();\r\n this.invoke(\"onAgendaReady\", rows);\r\n this._applyCellTemplates(cellTemplates);\r\n this._dateTableScrollable.update()\r\n }\r\n _renderNoData() {\r\n this._$noDataContainer = $(\"<div>\").addClass(NODATA_CONTAINER_CLASS).html(this.option(\"noDataText\"));\r\n this._dateTableScrollable.$content().append(this._$noDataContainer)\r\n }\r\n _setTableSizes() {\r\n return noop()\r\n }\r\n _toggleHorizontalScrollClass() {\r\n return noop()\r\n }\r\n _createCrossScrollingConfig(argument) {\r\n return noop()\r\n }\r\n _setGroupHeaderCellsHeight() {\r\n var $cells = this._getGroupHeaderCells().filter((_, element) => !element.getAttribute(\"rowSpan\"));\r\n var rows = this._removeEmptyRows(this._rows);\r\n if (!rows.length) {\r\n return\r\n }\r\n for (var i = 0; i < $cells.length; i++) {\r\n var $cellContent = $cells.eq(i).find(\".dx-scheduler-group-header-content\");\r\n setOuterHeight($cellContent, this._getGroupRowHeight(rows[i]))\r\n }\r\n }\r\n _rowsIsEmpty(rows) {\r\n var result = true;\r\n for (var i = 0; i < rows.length; i++) {\r\n var groupRow = rows[i];\r\n for (var j = 0; j < groupRow.length; j++) {\r\n if (groupRow[j]) {\r\n result = false;\r\n break\r\n }\r\n }\r\n }\r\n return result\r\n }\r\n _attachGroupCountClass() {\r\n var className = getVerticalGroupCountClass(this.option(\"groups\"));\r\n this.$element().addClass(className)\r\n }\r\n _removeEmptyRows(rows) {\r\n var result = [];\r\n for (var i = 0; i < rows.length; i++) {\r\n if (rows[i].length && !(data = rows[i], !data.some(value => value > 0))) {\r\n result.push(rows[i])\r\n }\r\n }\r\n var data;\r\n return result\r\n }\r\n _getGroupHeaderContainer() {\r\n return this._$groupTable\r\n }\r\n _makeGroupRows() {\r\n var tree = createReducedResourcesTree(this.option(\"loadedResources\"), (field, action) => getDataAccessors(this.option(\"getResourceDataAccessors\")(), field, action), this.option(\"getFilteredItems\")());\r\n var cellTemplate = this.option(\"resourceCellTemplate\");\r\n var getGroupHeaderContentClass = GROUP_HEADER_CONTENT_CLASS;\r\n var cellTemplates = [];\r\n var table = tableCreator.makeGroupedTableFromJSON(tableCreator.VERTICAL, tree, {\r\n cellTag: \"th\",\r\n groupTableClass: GROUP_TABLE_CLASS,\r\n groupRowClass: GROUP_ROW_CLASS,\r\n groupCellClass: this._getGroupHeaderClass(),\r\n groupCellCustomContent(cell, cellTextElement, index, data) {\r\n var container = domAdapter.createElement(\"div\");\r\n container.className = getGroupHeaderContentClass;\r\n if (cellTemplate && cellTemplate.render) {\r\n cellTemplates.push(cellTemplate.render.bind(cellTemplate, {\r\n model: {\r\n data: data.data,\r\n id: data.value,\r\n color: data.color,\r\n text: cellTextElement.textContent\r\n },\r\n container: getPublicElement($(container)),\r\n index: index\r\n }))\r\n } else {\r\n var contentWrapper = domAdapter.createElement(\"div\");\r\n contentWrapper.appendChild(cellTextElement);\r\n container.appendChild(contentWrapper)\r\n }\r\n cell.appendChild(container)\r\n },\r\n cellTemplate: cellTemplate\r\n });\r\n return {\r\n elements: $(table).find(\".\".concat(GROUP_ROW_CLASS)),\r\n cellTemplates: cellTemplates\r\n }\r\n }\r\n _cleanView() {\r\n this._$dateTable.empty();\r\n this._$timePanel.empty();\r\n if (this._$groupTable) {\r\n this._$groupTable.empty()\r\n }\r\n if (this._$noDataContainer) {\r\n this._$noDataContainer.empty();\r\n this._$noDataContainer.remove();\r\n delete this._$noDataContainer\r\n }\r\n }\r\n _createWorkSpaceElements() {\r\n this._createWorkSpaceStaticElements()\r\n }\r\n _createWorkSpaceStaticElements() {\r\n this._$dateTableContainer.append(this._$dateTable);\r\n this._dateTableScrollable.$content().append(this._$dateTableScrollableContent);\r\n if (this._$groupTable) {\r\n this._$dateTableScrollableContent.prepend(this._$groupTable)\r\n }\r\n this._$dateTableScrollableContent.append(this._$timePanel, this._$dateTableContainer);\r\n this.$element().append(this._dateTableScrollable.$element())\r\n }\r\n _renderDateTable() {\r\n this._renderTableBody({\r\n container: getPublicElement(this._$dateTable),\r\n rowClass: DATE_TABLE_ROW_CLASS,\r\n cellClass: this._getDateTableCellClass()\r\n })\r\n }\r\n _attachTablesEvents() {\r\n return noop()\r\n }\r\n _attachEvents() {\r\n return noop()\r\n }\r\n _cleanCellDataCache() {\r\n return noop()\r\n }\r\n isIndicationAvailable() {\r\n return false\r\n }\r\n _prepareCellTemplateOptions(text, date, rowIndex, $cell) {\r\n var groupsOpt = this.option(\"groups\");\r\n var groups = {};\r\n var isGroupedView = !!groupsOpt.length;\r\n var path = isGroupedView && getPathToLeaf(rowIndex, groupsOpt) || [];\r\n path.forEach((resourceValue, resourceIndex) => {\r\n var resourceName = groupsOpt[resourceIndex].name;\r\n groups[resourceName] = resourceValue\r\n });\r\n var groupIndex = isGroupedView ? this._getGroupIndexByResourceId(groups) : void 0;\r\n return {\r\n model: {\r\n text: text,\r\n date: date,\r\n groups: groups,\r\n groupIndex: groupIndex\r\n },\r\n container: getPublicElement($cell),\r\n index: rowIndex\r\n }\r\n }\r\n _renderTableBody(options, delayCellTemplateRendering) {\r\n var cellTemplates = [];\r\n var cellTemplateOpt = options.cellTemplate;\r\n this._$rows = [];\r\n var i;\r\n var fillTableBody = function(rowIndex, rowSize) {\r\n if (rowSize) {\r\n var date;\r\n var cellDateNumber;\r\n var cellDayName;\r\n var $row = $(\"<tr>\");\r\n var $td = $(\"<td>\");\r\n setHeight($td, this._getRowHeight(rowSize));\r\n if (options.getStartDate) {\r\n date = options.getStartDate && options.getStartDate(rowIndex);\r\n cellDateNumber = dateLocalization.format(date, \"d\");\r\n cellDayName = dateLocalization.format(date, formatWeekday)\r\n }\r\n if (cellTemplateOpt && cellTemplateOpt.render) {\r\n var templateOptions = this._prepareCellTemplateOptions(\"\".concat(cellDateNumber, \" \").concat(cellDayName), date, i, $td);\r\n cellTemplates.push(cellTemplateOpt.render.bind(cellTemplateOpt, templateOptions))\r\n } else if (cellDateNumber && cellDayName) {\r\n $td.addClass(AGENDA_DATE_CLASS).text(\"\".concat(cellDateNumber, \" \").concat(cellDayName))\r\n }\r\n if (options.rowClass) {\r\n $row.addClass(options.rowClass)\r\n }\r\n if (options.cellClass) {\r\n $td.addClass(options.cellClass)\r\n }\r\n $row.append($td);\r\n this._$rows.push($row)\r\n }\r\n }.bind(this);\r\n for (i = 0; i < this._rows.length; i++) {\r\n each(this._rows[i], fillTableBody);\r\n this._setLastRowClass()\r\n }\r\n $(options.container).append($(\"<tbody>\").append(this._$rows));\r\n this._applyCellTemplates(cellTemplates)\r\n }\r\n _setLastRowClass() {\r\n if (this._rows.length > 1 && this._$rows.length) {\r\n var $lastRow = this._$rows[this._$rows.length - 1];\r\n $lastRow.addClass(LAST_ROW_CLASS)\r\n }\r\n }\r\n _renderTimePanel() {\r\n this._renderTableBody({\r\n container: getPublicElement(this._$timePanel),\r\n rowCount: this._getTimePanelRowCount(),\r\n cellCount: 1,\r\n rowClass: TIME_PANEL_ROW_CLASS,\r\n cellClass: TIME_PANEL_CELL_CLASS,\r\n cellTemplate: this.option(\"dateCellTemplate\"),\r\n getStartDate: this._getTimePanelStartDate.bind(this)\r\n })\r\n }\r\n _getTimePanelStartDate(rowIndex) {\r\n var current = new Date(this.option(\"currentDate\"));\r\n var cellDate = new Date(current.setDate(current.getDate() + rowIndex));\r\n return cellDate\r\n }\r\n _getRowHeight(rowSize) {\r\n var baseHeight = this.option(\"rowHeight\");\r\n var innerOffset = (rowSize - 1) * INNER_CELL_MARGIN;\r\n return rowSize ? baseHeight * rowSize + innerOffset + OUTER_CELL_MARGIN : 0\r\n }\r\n _getGroupRowHeight(groupRows) {\r\n if (!groupRows) {\r\n return\r\n }\r\n var result = 0;\r\n for (var i = 0; i < groupRows.length; i++) {\r\n result += this._getRowHeight(groupRows[i])\r\n }\r\n return result\r\n }\r\n _calculateRows(appointments) {\r\n return this.renderingStrategy.calculateRows(appointments, this.option(\"agendaDuration\"), this.option(\"currentDate\"))\r\n }\r\n onDataSourceChanged(appointments) {\r\n super.onDataSourceChanged();\r\n this._renderView();\r\n var rows = this._calculateRows(appointments);\r\n this._recalculateAgenda(rows)\r\n }\r\n getAgendaVerticalStepHeight() {\r\n return this.option(\"rowHeight\")\r\n }\r\n getEndViewDate() {\r\n var currentDate = new Date(this.option(\"currentDate\"));\r\n var agendaDuration = this.option(\"agendaDuration\");\r\n currentDate.setHours(this.option(\"endDayHour\"));\r\n var result = currentDate.setDate(currentDate.getDate() + agendaDuration - 1) - 6e4;\r\n return new Date(result)\r\n }\r\n getEndViewDateByEndDayHour() {\r\n return this.getEndViewDate()\r\n }\r\n getCellDataByCoordinates() {\r\n return {\r\n startDate: null,\r\n endDate: null\r\n }\r\n }\r\n updateScrollPosition(date) {\r\n var newDate = this.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var bounds = this.getVisibleBounds();\r\n var startDateHour = newDate.getHours();\r\n var startDateMinutes = newDate.getMinutes();\r\n if (this.needUpdateScrollPosition(startDateHour, startDateMinutes, bounds, newDate)) {\r\n this.scrollToTime(startDateHour, startDateMinutes, newDate)\r\n }\r\n }\r\n needUpdateScrollPosition(hours, minutes, bounds, newData) {\r\n var isUpdateNeeded = false;\r\n if (hours < bounds.top.hours || hours > bounds.bottom.hours) {\r\n isUpdateNeeded = true\r\n }\r\n if (hours === bounds.top.hours && minutes < bounds.top.minutes) {\r\n isUpdateNeeded = true\r\n }\r\n if (hours === bounds.bottom.hours && minutes > bounds.top.minutes) {\r\n isUpdateNeeded = true\r\n }\r\n return isUpdateNeeded\r\n }\r\n renovatedRenderSupported() {\r\n return false\r\n }\r\n _setSelectedCellsByCellData() {}\r\n _getIntervalDuration() {\r\n return dateUtils.dateToMilliseconds(\"day\") * this.option(\"intervalCount\")\r\n }\r\n getDOMElementsMetaData() {\r\n return {\r\n dateTableCellsMeta: [\r\n [{}]\r\n ],\r\n allDayPanelCellsMeta: [{}]\r\n }\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerAgenda\", SchedulerAgenda);\r\nexport default SchedulerAgenda;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/agenda.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n setOptionHour\r\n} from \"./base\";\r\nexport var calculateStartViewDate = (currentDate, startDayHour) => {\r\n var validCurrentDate = new Date(currentDate);\r\n return setOptionHour(validCurrentDate, startDayHour)\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/view_model/to_test/views/utils/timeline_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport timeZoneUtils from \"../../../../../../../__internal/scheduler/m_utils_time_zone\";\r\nimport {\r\n getStartViewDateWithoutDST\r\n} from \"./base\";\r\nexport var getDateForHeaderText = (index, date, options) => {\r\n if (!timeZoneUtils.isTimezoneChangeInDate(date)) {\r\n return date\r\n }\r\n var {\r\n cellCountInDay: cellCountInDay,\r\n interval: interval,\r\n startDayHour: startDayHour,\r\n startViewDate: startViewDate\r\n } = options;\r\n var result = getStartViewDateWithoutDST(startViewDate, startDayHour);\r\n var validIndex = index % cellCountInDay;\r\n result.setTime(result.getTime() + validIndex * interval);\r\n return result\r\n};\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/timeline/header_panel/date_header/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"dateCellTemplate\", \"dateHeaderData\", \"groupByDate\", \"groupOrientation\", \"groups\", \"timeCellTemplate\"];\r\nimport {\r\n createFragment,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n Fragment\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n Row\r\n} from \"../../../base/row\";\r\nimport {\r\n isHorizontalGroupingApplied\r\n} from \"../../../utils\";\r\nimport {\r\n DateHeaderCell\r\n} from \"../../../base/header_panel/date_header/cell\";\r\nimport {\r\n DateHeaderLayoutProps\r\n} from \"../../../base/header_panel/date_header/layout\";\r\nimport getThemeType from \"../../../../../../utils/getThemeType\";\r\nvar {\r\n isMaterial: isMaterial\r\n} = getThemeType();\r\nexport var viewFunction = _ref => {\r\n var {\r\n isHorizontalGrouping: isHorizontalGrouping,\r\n props: {\r\n dateCellTemplate: dateCellTemplate,\r\n dateHeaderData: dateHeaderData,\r\n timeCellTemplate: timeCellTemplate\r\n }\r\n } = _ref;\r\n var {\r\n dataMap: dataMap,\r\n isMonthDateHeader: isMonthDateHeader,\r\n leftVirtualCellCount: leftVirtualCellCount,\r\n leftVirtualCellWidth: leftVirtualCellWidth,\r\n rightVirtualCellCount: rightVirtualCellCount,\r\n rightVirtualCellWidth: rightVirtualCellWidth,\r\n weekDayLeftVirtualCellCount: weekDayLeftVirtualCellCount,\r\n weekDayLeftVirtualCellWidth: weekDayLeftVirtualCellWidth,\r\n weekDayRightVirtualCellCount: weekDayRightVirtualCellCount,\r\n weekDayRightVirtualCellWidth: weekDayRightVirtualCellWidth\r\n } = dateHeaderData;\r\n return createFragment(dataMap.map((dateHeaderRow, rowIndex) => {\r\n var rowsCount = dataMap.length;\r\n var isTimeCellTemplate = rowsCount - 1 === rowIndex;\r\n var isWeekDayRow = rowsCount > 1 && 0 === rowIndex;\r\n var splitText = isMaterial && (isMonthDateHeader || isWeekDayRow);\r\n var validLeftVirtualCellCount = leftVirtualCellCount;\r\n var validRightVirtualCellCount = rightVirtualCellCount;\r\n var validRightVirtualCellWidth = rightVirtualCellWidth;\r\n var validLeftVirtualCellWidth = leftVirtualCellWidth;\r\n if (isWeekDayRow) {\r\n validLeftVirtualCellCount = weekDayLeftVirtualCellCount;\r\n validRightVirtualCellCount = weekDayRightVirtualCellCount;\r\n validRightVirtualCellWidth = weekDayRightVirtualCellWidth;\r\n validLeftVirtualCellWidth = weekDayLeftVirtualCellWidth\r\n }\r\n return createComponentVNode(2, Row, {\r\n className: \"dx-scheduler-header-row\",\r\n leftVirtualCellWidth: validLeftVirtualCellWidth,\r\n leftVirtualCellCount: validLeftVirtualCellCount,\r\n rightVirtualCellWidth: validRightVirtualCellWidth,\r\n rightVirtualCellCount: validRightVirtualCellCount,\r\n children: dateHeaderRow.map(_ref2 => {\r\n var {\r\n colSpan: colSpan,\r\n endDate: endDate,\r\n groupIndex: groupIndex,\r\n groups: cellGroups,\r\n index: index,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n key: key,\r\n startDate: startDate,\r\n text: text,\r\n today: today\r\n } = _ref2;\r\n return createComponentVNode(2, DateHeaderCell, {\r\n startDate: startDate,\r\n endDate: endDate,\r\n groups: isHorizontalGrouping ? cellGroups : void 0,\r\n groupIndex: isHorizontalGrouping ? groupIndex : void 0,\r\n today: today,\r\n index: index,\r\n text: text,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n isWeekDayCell: isWeekDayRow,\r\n colSpan: colSpan,\r\n splitText: splitText,\r\n dateCellTemplate: dateCellTemplate,\r\n timeCellTemplate: timeCellTemplate,\r\n isTimeCellTemplate: isTimeCellTemplate\r\n }, key)\r\n })\r\n }, rowIndex.toString())\r\n }), 0)\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class TimelineDateHeaderLayout extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n get isHorizontalGrouping() {\r\n var {\r\n groupByDate: groupByDate,\r\n groupOrientation: groupOrientation,\r\n groups: groups\r\n } = this.props;\r\n return isHorizontalGroupingApplied(groups, groupOrientation) && !groupByDate\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dateCellTemplate: getTemplate(props.dateCellTemplate),\r\n timeCellTemplate: getTemplate(props.timeCellTemplate)\r\n }),\r\n isHorizontalGrouping: this.isHorizontalGrouping,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nTimelineDateHeaderLayout.defaultProps = DateHeaderLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/timeline/header_panel/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"className\", \"dateCellTemplate\", \"dateHeaderData\", \"dateHeaderTemplate\", \"elementRef\", \"groupByDate\", \"groupOrientation\", \"groupPanelData\", \"groups\", \"height\", \"isRenderDateHeader\", \"resourceCellTemplate\", \"timeCellTemplate\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n HeaderPanelLayout,\r\n HeaderPanelLayoutProps\r\n} from \"../../base/header_panel/layout\";\r\nimport {\r\n TimelineDateHeaderLayout\r\n} from \"./date_header/layout\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n dateCellTemplate: dateCellTemplate,\r\n dateHeaderData: dateHeaderData,\r\n groupByDate: groupByDate,\r\n groupOrientation: groupOrientation,\r\n groupPanelData: groupPanelData,\r\n groups: groups,\r\n isRenderDateHeader: isRenderDateHeader,\r\n resourceCellTemplate: resourceCellTemplate,\r\n timeCellTemplate: timeCellTemplate\r\n }\r\n } = _ref;\r\n return createComponentVNode(2, HeaderPanelLayout, {\r\n dateHeaderTemplate: TimelineDateHeaderLayout,\r\n dateHeaderData: dateHeaderData,\r\n groupPanelData: groupPanelData,\r\n groupByDate: groupByDate,\r\n groups: groups,\r\n groupOrientation: groupOrientation,\r\n isRenderDateHeader: isRenderDateHeader,\r\n resourceCellTemplate: resourceCellTemplate,\r\n dateCellTemplate: dateCellTemplate,\r\n timeCellTemplate: timeCellTemplate\r\n })\r\n};\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class TimelineHeaderPanelLayout extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dateCellTemplate: getTemplate(props.dateCellTemplate),\r\n timeCellTemplate: getTemplate(props.timeCellTemplate),\r\n dateHeaderTemplate: getTemplate(props.dateHeaderTemplate),\r\n resourceCellTemplate: getTemplate(props.resourceCellTemplate)\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nTimelineHeaderPanelLayout.defaultProps = HeaderPanelLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/timeline/header_panel/layout.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../core/component_registrator\";\r\nimport {\r\n HeaderPanel\r\n} from \"../../../../../component_wrapper/scheduler/header_panel\";\r\nimport {\r\n TimelineHeaderPanelLayout as TimelineHeaderPanelLayoutComponent\r\n} from \"./layout\";\r\nexport default class TimelineHeaderPanelLayout extends HeaderPanel {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"dateCellTemplate\", \"timeCellTemplate\", \"dateHeaderTemplate\", \"resourceCellTemplate\"],\r\n props: [\"dateHeaderData\", \"isRenderDateHeader\", \"dateCellTemplate\", \"timeCellTemplate\", \"dateHeaderTemplate\", \"groups\", \"groupOrientation\", \"groupPanelData\", \"groupByDate\", \"height\", \"className\", \"resourceCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return TimelineHeaderPanelLayoutComponent\r\n }\r\n}\r\nregisterComponent(\"dxTimelineHeaderPanelLayout\", TimelineHeaderPanelLayout);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/shaders/m_current_time_shader_horizontal.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n setWidth\r\n} from \"../../../core/utils/size\";\r\nimport CurrentTimeShader from \"./m_current_time_shader\";\r\nclass HorizontalCurrentTimeShader extends CurrentTimeShader {\r\n renderShader() {\r\n var groupCount = this._workSpace._isHorizontalGroupedWorkSpace() ? this._workSpace._getGroupCount() : 1;\r\n for (var i = 0; i < groupCount; i += 1) {\r\n var isFirstShader = 0 === i;\r\n var $shader = isFirstShader ? this._$shader : this.createShader();\r\n if (this._workSpace.isGroupedByDate()) {\r\n this._customizeGroupedByDateShader($shader, i)\r\n } else {\r\n this._customizeShader($shader, i)\r\n }!isFirstShader && this._shader.push($shader)\r\n }\r\n }\r\n _customizeShader($shader, groupIndex) {\r\n var shaderWidth = this._workSpace.getIndicationWidth();\r\n this._applyShaderWidth($shader, shaderWidth);\r\n if (groupIndex >= 1) {\r\n var workSpace = this._workSpace;\r\n var indicationWidth = workSpace._getCellCount() * workSpace.getCellWidth();\r\n $shader.css(\"left\", indicationWidth)\r\n } else {\r\n $shader.css(\"left\", 0)\r\n }\r\n }\r\n _applyShaderWidth($shader, width) {\r\n var maxWidth = getBoundingRect(this._$container.get(0)).width;\r\n if (width > maxWidth) {\r\n width = maxWidth\r\n }\r\n if (width > 0) {\r\n setWidth($shader, width)\r\n }\r\n }\r\n _customizeGroupedByDateShader($shader, groupIndex) {\r\n var cellCount = this._workSpace.getIndicationCellCount();\r\n var integerPart = Math.floor(cellCount);\r\n var fractionPart = cellCount - integerPart;\r\n var isFirstShaderPart = 0 === groupIndex;\r\n var workSpace = this._workSpace;\r\n var shaderWidth = isFirstShaderPart ? workSpace.getIndicationWidth() : fractionPart * workSpace.getCellWidth();\r\n var shaderLeft;\r\n this._applyShaderWidth($shader, shaderWidth);\r\n if (isFirstShaderPart) {\r\n shaderLeft = workSpace._getCellCount() * workSpace.getCellWidth() * groupIndex\r\n } else {\r\n shaderLeft = workSpace.getCellWidth() * integerPart * workSpace._getGroupCount() + groupIndex * workSpace.getCellWidth()\r\n }\r\n $shader.css(\"left\", shaderLeft)\r\n }\r\n}\r\nexport default HorizontalCurrentTimeShader;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_indicator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport $ from \"../../../core/renderer\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n setWidth\r\n} from \"../../../core/utils/size\";\r\nimport {\r\n hasWindow\r\n} from \"../../../core/utils/window\";\r\nimport {\r\n getToday\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n HEADER_CURRENT_TIME_CELL_CLASS\r\n} from \"../m_classes\";\r\nimport timezoneUtils from \"../m_utils_time_zone\";\r\nimport SchedulerWorkSpace from \"./m_work_space\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nvar SCHEDULER_DATE_TIME_INDICATOR_CLASS = \"dx-scheduler-date-time-indicator\";\r\nvar TIME_PANEL_CURRENT_TIME_CELL_CLASS = \"dx-scheduler-time-panel-current-time-cell\";\r\nclass SchedulerWorkSpaceIndicator extends SchedulerWorkSpace {\r\n _getToday() {\r\n return getToday(this.option(\"indicatorTime\"), this.timeZoneCalculator)\r\n }\r\n isIndicationOnView() {\r\n if (this.option(\"showCurrentTimeIndicator\")) {\r\n var today = this._getToday();\r\n var endViewDate = dateUtils.trimTime(this.getEndViewDate());\r\n return dateUtils.dateInRange(today, this.getStartViewDate(), new Date(endViewDate.getTime() + toMs(\"day\")))\r\n }\r\n return false\r\n }\r\n isIndicationAvailable() {\r\n if (!hasWindow()) {\r\n return false\r\n }\r\n var today = this._getToday();\r\n return today >= dateUtils.trimTime(new Date(this.getStartViewDate()))\r\n }\r\n isIndicatorVisible() {\r\n var today = this._getToday();\r\n var endViewDate = new Date(this.getEndViewDate().getTime() + toMs(\"minute\") - 1);\r\n var firstViewDate = new Date(this.getStartViewDate());\r\n firstViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n endViewDate.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n return dateUtils.dateInRange(today, firstViewDate, endViewDate)\r\n }\r\n _renderDateTimeIndication() {\r\n if (this.isIndicationAvailable()) {\r\n if (this.option(\"shadeUntilCurrentTime\")) {\r\n this._shader.render()\r\n }\r\n if (this.isIndicationOnView() && this.isIndicatorVisible()) {\r\n var groupCount = this._getGroupCount() || 1;\r\n var $container = this._dateTableScrollable.$content();\r\n var height = this.getIndicationHeight();\r\n var rtlOffset = this._getRtlOffset(this.getCellWidth());\r\n this._renderIndicator(height, rtlOffset, $container, groupCount);\r\n this._setCurrentTimeCells()\r\n }\r\n }\r\n }\r\n _renderIndicator(height, rtlOffset, $container, groupCount) {\r\n var groupedByDate = this.isGroupedByDate();\r\n var repeatCount = groupedByDate ? 1 : groupCount;\r\n for (var i = 0; i < repeatCount; i++) {\r\n var $indicator = this._createIndicator($container);\r\n setWidth($indicator, groupedByDate ? this.getCellWidth() * groupCount : this.getCellWidth());\r\n this._groupedStrategy.shiftIndicator($indicator, height, rtlOffset, i)\r\n }\r\n }\r\n _createIndicator($container) {\r\n var $indicator = $(\"<div>\").addClass(SCHEDULER_DATE_TIME_INDICATOR_CLASS);\r\n $container.append($indicator);\r\n return $indicator\r\n }\r\n _getRtlOffset(width) {\r\n return this.option(\"rtlEnabled\") ? getBoundingRect(this._dateTableScrollable.$content().get(0)).width - this.getTimePanelWidth() - width : 0\r\n }\r\n _setIndicationUpdateInterval() {\r\n if (!this.option(\"showCurrentTimeIndicator\") || 0 === this.option(\"indicatorUpdateInterval\")) {\r\n return\r\n }\r\n this._clearIndicatorUpdateInterval();\r\n this._indicatorInterval = setInterval(() => {\r\n this._refreshDateTimeIndication()\r\n }, this.option(\"indicatorUpdateInterval\"))\r\n }\r\n _clearIndicatorUpdateInterval() {\r\n if (this._indicatorInterval) {\r\n clearInterval(this._indicatorInterval);\r\n delete this._indicatorInterval\r\n }\r\n }\r\n _isVerticalShader() {\r\n return true\r\n }\r\n getIndicationWidth(groupIndex) {\r\n var maxWidth = this.getCellWidth() * this._getCellCount();\r\n var difference = this._getIndicatorDuration();\r\n if (difference > this._getCellCount()) {\r\n difference = this._getCellCount()\r\n }\r\n var width = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n return maxWidth < width ? maxWidth : width\r\n }\r\n getIndicatorOffset(groupIndex) {\r\n var difference = this._getIndicatorDuration() - 1;\r\n var offset = difference * this.getRoundedCellWidth(groupIndex, groupIndex * this._getCellCount(), difference);\r\n return offset\r\n }\r\n _getIndicatorDuration() {\r\n var today = this._getToday();\r\n var firstViewDate = new Date(this.getStartViewDate());\r\n var timeDiff = today.getTime() - firstViewDate.getTime();\r\n if (\"workWeek\" === this.option(\"type\")) {\r\n timeDiff -= this._getWeekendsCount(Math.round(timeDiff / toMs(\"day\"))) * toMs(\"day\")\r\n }\r\n return Math.ceil((timeDiff + 1) / toMs(\"day\"))\r\n }\r\n getIndicationHeight() {\r\n var today = timezoneUtils.getDateWithoutTimezoneChange(this._getToday());\r\n var cellHeight = this.getCellHeight();\r\n var date = new Date(this.getStartViewDate());\r\n if (this.isIndicationOnView()) {\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate())\r\n }\r\n var duration = today.getTime() - date.getTime();\r\n var cellCount = duration / this.getCellDuration();\r\n return cellCount * cellHeight\r\n }\r\n _dispose() {\r\n this._clearIndicatorUpdateInterval();\r\n super._dispose.apply(this, arguments)\r\n }\r\n _refreshDateTimeIndication() {\r\n var _a;\r\n this._cleanDateTimeIndicator();\r\n this._cleanCurrentTimeCells();\r\n null === (_a = this._shader) || void 0 === _a ? void 0 : _a.clean();\r\n this._renderDateTimeIndication()\r\n }\r\n _setCurrentTimeCells() {\r\n var timePanelCells = this._getTimePanelCells();\r\n var currentTimeCellIndices = this._getCurrentTimePanelCellIndices();\r\n currentTimeCellIndices.forEach(timePanelCellIndex => {\r\n timePanelCells.eq(timePanelCellIndex).addClass(TIME_PANEL_CURRENT_TIME_CELL_CLASS)\r\n })\r\n }\r\n _isCurrentTimeHeaderCell(headerIndex) {\r\n if (this.isIndicationOnView()) {\r\n var {\r\n completeDateHeaderMap: completeDateHeaderMap\r\n } = this.viewDataProvider;\r\n var date = completeDateHeaderMap[completeDateHeaderMap.length - 1][headerIndex].startDate;\r\n return dateUtils.sameDate(date, this._getToday())\r\n }\r\n return false\r\n }\r\n _getHeaderPanelCellClass(i) {\r\n var cellClass = super._getHeaderPanelCellClass(i);\r\n if (this._isCurrentTimeHeaderCell(i)) {\r\n return \"\".concat(cellClass, \" \").concat(HEADER_CURRENT_TIME_CELL_CLASS)\r\n }\r\n return cellClass\r\n }\r\n _cleanView() {\r\n super._cleanView();\r\n this._cleanDateTimeIndicator()\r\n }\r\n _dimensionChanged() {\r\n super._dimensionChanged();\r\n this._refreshDateTimeIndication()\r\n }\r\n _cleanDateTimeIndicator() {\r\n this.$element().find(\".\".concat(SCHEDULER_DATE_TIME_INDICATOR_CLASS)).remove()\r\n }\r\n _cleanCurrentTimeCells() {\r\n this.$element().find(\".\".concat(TIME_PANEL_CURRENT_TIME_CELL_CLASS)).removeClass(TIME_PANEL_CURRENT_TIME_CELL_CLASS)\r\n }\r\n _cleanWorkSpace() {\r\n super._cleanWorkSpace();\r\n this._renderDateTimeIndication();\r\n this._setIndicationUpdateInterval()\r\n }\r\n _optionChanged(args) {\r\n switch (args.name) {\r\n case \"showCurrentTimeIndicator\":\r\n case \"indicatorTime\":\r\n this._cleanWorkSpace();\r\n break;\r\n case \"indicatorUpdateInterval\":\r\n this._setIndicationUpdateInterval();\r\n break;\r\n case \"showAllDayPanel\":\r\n case \"allDayExpanded\":\r\n case \"crossScrollingEnabled\":\r\n super._optionChanged(args);\r\n this._refreshDateTimeIndication();\r\n break;\r\n case \"shadeUntilCurrentTime\":\r\n this._refreshDateTimeIndication();\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n showCurrentTimeIndicator: true,\r\n indicatorTime: new Date,\r\n indicatorUpdateInterval: 5 * toMs(\"minute\"),\r\n shadeUntilCurrentTime: true\r\n })\r\n }\r\n _getCurrentTimePanelCellIndices() {\r\n var rowCountPerGroup = this._getTimePanelRowCount();\r\n var today = this._getToday();\r\n var index = this.getCellIndexByDate(today);\r\n var {\r\n rowIndex: currentTimeRowIndex\r\n } = this._getCellCoordinatesByIndex(index);\r\n if (void 0 === currentTimeRowIndex) {\r\n return []\r\n }\r\n var cellIndices;\r\n if (0 === currentTimeRowIndex) {\r\n cellIndices = [currentTimeRowIndex]\r\n } else {\r\n cellIndices = currentTimeRowIndex % 2 === 0 ? [currentTimeRowIndex - 1, currentTimeRowIndex] : [currentTimeRowIndex, currentTimeRowIndex + 1]\r\n }\r\n var verticalGroupCount = this._isVerticalGroupedWorkSpace() ? this._getGroupCount() : 1;\r\n return [...new Array(verticalGroupCount)].reduce((currentIndices, _, groupIndex) => [...currentIndices, ...cellIndices.map(cellIndex => rowCountPerGroup * groupIndex + cellIndex)], [])\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerWorkSpace\", SchedulerWorkSpaceIndicator);\r\nexport default SchedulerWorkSpaceIndicator;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_timeline.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport $ from \"../../../core/renderer\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n extend\r\n} from \"../../../core/utils/extend\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n getOuterHeight,\r\n getOuterWidth,\r\n setHeight\r\n} from \"../../../core/utils/size\";\r\nimport {\r\n hasWindow\r\n} from \"../../../core/utils/window\";\r\nimport {\r\n formatWeekdayAndDay\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n getDateForHeaderText\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/timeline_week\";\r\nimport dxrTimelineDateHeader from \"../../../renovation/ui/scheduler/workspaces/timeline/header_panel/layout.j\";\r\nimport {\r\n GROUP_HEADER_CONTENT_CLASS,\r\n GROUP_ROW_CLASS,\r\n HEADER_CURRENT_TIME_CELL_CLASS\r\n} from \"../m_classes\";\r\nimport tableCreatorModule from \"../m_table_creator\";\r\nimport timezoneUtils from \"../m_utils_time_zone\";\r\nimport HorizontalShader from \"../shaders/m_current_time_shader_horizontal\";\r\nimport SchedulerWorkSpace from \"./m_work_space_indicator\";\r\nvar {\r\n tableCreator: tableCreator\r\n} = tableCreatorModule;\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline\";\r\nvar GROUP_TABLE_CLASS = \"dx-scheduler-group-table\";\r\nvar HORIZONTAL_GROUPED_WORKSPACE_CLASS = \"dx-scheduler-work-space-horizontal-grouped\";\r\nvar HEADER_PANEL_CELL_CLASS = \"dx-scheduler-header-panel-cell\";\r\nvar HEADER_PANEL_WEEK_CELL_CLASS = \"dx-scheduler-header-panel-week-cell\";\r\nvar HEADER_ROW_CLASS = \"dx-scheduler-header-row\";\r\nvar HORIZONTAL = \"horizontal\";\r\nvar DATE_TABLE_CELL_BORDER = 1;\r\nvar DATE_TABLE_HEADER_MARGIN = 10;\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass SchedulerTimeline extends SchedulerWorkSpace {\r\n constructor() {\r\n super(...arguments);\r\n this.viewDirection = \"horizontal\"\r\n }\r\n get verticalGroupTableClass() {\r\n return GROUP_TABLE_CLASS\r\n }\r\n get renovatedHeaderPanelComponent() {\r\n return dxrTimelineDateHeader\r\n }\r\n getGroupTableWidth() {\r\n return this._$sidebarTable ? getOuterWidth(this._$sidebarTable) : 0\r\n }\r\n _getTotalRowCount(groupCount) {\r\n if (this._isHorizontalGroupedWorkSpace()) {\r\n return this._getRowCount()\r\n }\r\n groupCount = groupCount || 1;\r\n return this._getRowCount() * groupCount\r\n }\r\n _getFormat() {\r\n return \"shorttime\"\r\n }\r\n _getWorkSpaceHeight() {\r\n if (this.option(\"crossScrollingEnabled\") && hasWindow()) {\r\n return getBoundingRect(this._$dateTable.get(0)).height\r\n }\r\n return getBoundingRect(this.$element().get(0)).height\r\n }\r\n _dateTableScrollableConfig() {\r\n var config = super._dateTableScrollableConfig();\r\n var timelineConfig = {\r\n direction: HORIZONTAL\r\n };\r\n return this.option(\"crossScrollingEnabled\") ? config : extend(config, timelineConfig)\r\n }\r\n _needCreateCrossScrolling() {\r\n return true\r\n }\r\n _headerScrollableConfig() {\r\n var config = super._headerScrollableConfig();\r\n return extend(config, {\r\n scrollByContent: true\r\n })\r\n }\r\n supportAllDayRow() {\r\n return false\r\n }\r\n _getGroupHeaderContainer() {\r\n if (this._isHorizontalGroupedWorkSpace()) {\r\n return this._$thead\r\n }\r\n return this._$sidebarTable\r\n }\r\n _insertAllDayRowsIntoDateTable() {\r\n return false\r\n }\r\n _needRenderWeekHeader() {\r\n return false\r\n }\r\n _incrementDate(date) {\r\n date.setDate(date.getDate() + 1)\r\n }\r\n getIndicationCellCount() {\r\n var timeDiff = this._getTimeDiff();\r\n return this._calculateDurationInCells(timeDiff)\r\n }\r\n _getTimeDiff() {\r\n var today = this._getToday();\r\n var date = this._getIndicationFirstViewDate();\r\n var startViewDate = this.getStartViewDate();\r\n var dayLightOffset = timezoneUtils.getDaylightOffsetInMs(startViewDate, today);\r\n if (dayLightOffset) {\r\n today = new Date(today.getTime() + dayLightOffset)\r\n }\r\n return today.getTime() - date.getTime()\r\n }\r\n _calculateDurationInCells(timeDiff) {\r\n var today = this._getToday();\r\n var differenceInDays = Math.floor(timeDiff / toMs(\"day\"));\r\n var duration = (timeDiff - differenceInDays * toMs(\"day\") - this.option(\"startDayHour\") * toMs(\"hour\")) / this.getCellDuration();\r\n if (today.getHours() > this.option(\"endDayHour\")) {\r\n duration = this._getCellCountInDay()\r\n }\r\n if (duration < 0) {\r\n duration = 0\r\n }\r\n return differenceInDays * this._getCellCountInDay() + duration\r\n }\r\n getIndicationWidth() {\r\n if (this.isGroupedByDate()) {\r\n var cellCount = this.getIndicationCellCount();\r\n var integerPart = Math.floor(cellCount);\r\n var fractionPart = cellCount - integerPart;\r\n return this.getCellWidth() * (integerPart * this._getGroupCount() + fractionPart)\r\n }\r\n return this.getIndicationCellCount() * this.getCellWidth()\r\n }\r\n _isVerticalShader() {\r\n return false\r\n }\r\n _isCurrentTimeHeaderCell() {\r\n return false\r\n }\r\n _setTableSizes() {\r\n var minHeight = this._getWorkSpaceMinHeight();\r\n setHeight(this._$sidebarTable, minHeight);\r\n setHeight(this._$dateTable, minHeight);\r\n super._setTableSizes();\r\n this.virtualScrollingDispatcher.updateDimensions()\r\n }\r\n _getWorkSpaceMinHeight() {\r\n var minHeight = this._getWorkSpaceHeight();\r\n var workspaceContainerHeight = getOuterHeight(this.$element(), true) - this.getHeaderPanelHeight() - 2 * DATE_TABLE_CELL_BORDER - DATE_TABLE_HEADER_MARGIN;\r\n if (minHeight < workspaceContainerHeight) {\r\n minHeight = workspaceContainerHeight\r\n }\r\n return minHeight\r\n }\r\n _getCellCoordinatesByIndex(index) {\r\n return {\r\n columnIndex: index % this._getCellCount(),\r\n rowIndex: 0\r\n }\r\n }\r\n _getCellByCoordinates(cellCoordinates, groupIndex) {\r\n var indexes = this._groupedStrategy.prepareCellIndexes(cellCoordinates, groupIndex);\r\n return this._$dateTable.find(\"tr\").eq(indexes.rowIndex).find(\"td\").eq(indexes.columnIndex)\r\n }\r\n _getWorkSpaceWidth() {\r\n return getOuterWidth(this._$dateTable, true)\r\n }\r\n _getIndicationFirstViewDate() {\r\n return dateUtils.trimTime(new Date(this.getStartViewDate()))\r\n }\r\n _getIntervalBetween(currentDate, allDay) {\r\n var startDayHour = this.option(\"startDayHour\");\r\n var endDayHour = this.option(\"endDayHour\");\r\n var firstViewDate = this.getStartViewDate();\r\n var firstViewDateTime = firstViewDate.getTime();\r\n var hiddenInterval = (24 - endDayHour + startDayHour) * toMs(\"hour\");\r\n var timeZoneOffset = dateUtils.getTimezonesDifference(firstViewDate, currentDate);\r\n var apptStart = currentDate.getTime();\r\n var fullInterval = apptStart - firstViewDateTime - timeZoneOffset;\r\n var fullDays = Math.floor(fullInterval / toMs(\"day\"));\r\n var tailDuration = fullInterval - fullDays * toMs(\"day\");\r\n var tailDelta = 0;\r\n var cellCount = this._getCellCountInDay() * (fullDays - this._getWeekendsCount(fullDays));\r\n var gapBeforeAppt = apptStart - dateUtils.trimTime(new Date(currentDate)).getTime();\r\n var result = cellCount * this.option(\"hoursInterval\") * toMs(\"hour\");\r\n if (!allDay) {\r\n if (currentDate.getHours() < startDayHour) {\r\n tailDelta = tailDuration - hiddenInterval + gapBeforeAppt\r\n } else if (currentDate.getHours() >= startDayHour && currentDate.getHours() < endDayHour) {\r\n tailDelta = tailDuration\r\n } else if (currentDate.getHours() >= startDayHour && currentDate.getHours() >= endDayHour) {\r\n tailDelta = tailDuration - (gapBeforeAppt - endDayHour * toMs(\"hour\"))\r\n } else if (!fullDays) {\r\n result = fullInterval\r\n }\r\n result += tailDelta\r\n }\r\n return result\r\n }\r\n _getWeekendsCount(argument) {\r\n return 0\r\n }\r\n getAllDayContainer() {\r\n return null\r\n }\r\n getTimePanelWidth() {\r\n return 0\r\n }\r\n getIntervalDuration(allDay) {\r\n return this.getCellDuration()\r\n }\r\n getCellMinWidth() {\r\n return 0\r\n }\r\n getWorkSpaceLeftOffset() {\r\n return 0\r\n }\r\n scrollToTime(hours, minutes, date) {\r\n var coordinates = this._getScrollCoordinates(hours, minutes, date);\r\n var scrollable = this.getScrollable();\r\n var offset = this.option(\"rtlEnabled\") ? getBoundingRect(this.getScrollableContainer().get(0)).width : 0;\r\n if (this.option(\"templatesRenderAsynchronously\")) {\r\n setTimeout(() => {\r\n scrollable.scrollBy({\r\n left: coordinates.left - scrollable.scrollLeft() - offset,\r\n top: 0\r\n })\r\n })\r\n } else {\r\n scrollable.scrollBy({\r\n left: coordinates.left - scrollable.scrollLeft() - offset,\r\n top: 0\r\n })\r\n }\r\n }\r\n renderRAllDayPanel() {}\r\n renderRTimeTable() {}\r\n _renderGroupAllDayPanel() {}\r\n generateRenderOptions(argument) {\r\n var options = super.generateRenderOptions(true);\r\n return _extends(_extends({}, options), {\r\n isGenerateWeekDaysHeaderData: this._needRenderWeekHeader(),\r\n getDateForHeaderText: getDateForHeaderText\r\n })\r\n }\r\n _init() {\r\n super._init();\r\n this.$element().addClass(TIMELINE_CLASS);\r\n this._$sidebarTable = $(\"<div>\").addClass(GROUP_TABLE_CLASS)\r\n }\r\n _getDefaultGroupStrategy() {\r\n return \"vertical\"\r\n }\r\n _toggleGroupingDirectionClass() {\r\n this.$element().toggleClass(HORIZONTAL_GROUPED_WORKSPACE_CLASS, this._isHorizontalGroupedWorkSpace())\r\n }\r\n _getDefaultOptions() {\r\n return extend(super._getDefaultOptions(), {\r\n groupOrientation: \"vertical\"\r\n })\r\n }\r\n _createWorkSpaceElements() {\r\n this._createWorkSpaceScrollableElements()\r\n }\r\n _toggleAllDayVisibility() {\r\n return noop()\r\n }\r\n _changeAllDayVisibility() {\r\n return noop()\r\n }\r\n _getDateHeaderTemplate() {\r\n return this.option(\"timeCellTemplate\")\r\n }\r\n _renderView() {\r\n var groupCellTemplates;\r\n if (!this.isRenovatedRender()) {\r\n groupCellTemplates = this._renderGroupHeader()\r\n }\r\n this.renderWorkSpace();\r\n if (this.isRenovatedRender()) {\r\n this.virtualScrollingDispatcher.updateDimensions()\r\n }\r\n this._shader = new HorizontalShader(this);\r\n this._$sidebarTable.appendTo(this._sidebarScrollable.$content());\r\n if (this.isRenovatedRender() && this._isVerticalGroupedWorkSpace()) {\r\n this.renderRGroupPanel()\r\n }\r\n this.updateHeaderEmptyCellWidth();\r\n this._applyCellTemplates(groupCellTemplates)\r\n }\r\n _setHorizontalGroupHeaderCellsHeight() {\r\n return noop()\r\n }\r\n _setCurrentTimeCells() {\r\n var timePanelCells = this._getTimePanelCells();\r\n var currentTimeCellIndices = this._getCurrentTimePanelCellIndices();\r\n currentTimeCellIndices.forEach(timePanelCellIndex => {\r\n timePanelCells.eq(timePanelCellIndex).addClass(HEADER_CURRENT_TIME_CELL_CLASS)\r\n })\r\n }\r\n _cleanCurrentTimeCells() {\r\n this.$element().find(\".\".concat(HEADER_CURRENT_TIME_CELL_CLASS)).removeClass(HEADER_CURRENT_TIME_CELL_CLASS)\r\n }\r\n _getTimePanelCells() {\r\n return this.$element().find(\".\".concat(HEADER_PANEL_CELL_CLASS, \":not(.\").concat(HEADER_PANEL_WEEK_CELL_CLASS, \")\"))\r\n }\r\n _getCurrentTimePanelCellIndices() {\r\n var columnCountPerGroup = this._getCellCount();\r\n var today = this._getToday();\r\n var index = this.getCellIndexByDate(today);\r\n var {\r\n columnIndex: currentTimeColumnIndex\r\n } = this._getCellCoordinatesByIndex(index);\r\n if (void 0 === currentTimeColumnIndex) {\r\n return []\r\n }\r\n var horizontalGroupCount = this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate() ? this._getGroupCount() : 1;\r\n return [...new Array(horizontalGroupCount)].map((_, groupIndex) => columnCountPerGroup * groupIndex + currentTimeColumnIndex)\r\n }\r\n _renderTimePanel() {\r\n return noop()\r\n }\r\n _renderAllDayPanel() {\r\n return noop()\r\n }\r\n _createAllDayPanelElements() {\r\n return noop()\r\n }\r\n _renderDateHeader() {\r\n var $headerRow = super._renderDateHeader();\r\n if (this._needRenderWeekHeader()) {\r\n var firstViewDate = new Date(this.getStartViewDate());\r\n var currentDate = new Date(firstViewDate);\r\n var $cells = [];\r\n var groupCount = this._getGroupCount();\r\n var cellCountInDay = this._getCellCountInDay();\r\n var colSpan = this.isGroupedByDate() ? cellCountInDay * groupCount : cellCountInDay;\r\n var cellTemplate = this.option(\"dateCellTemplate\");\r\n var horizontalGroupCount = this._isHorizontalGroupedWorkSpace() && !this.isGroupedByDate() ? groupCount : 1;\r\n var cellsInGroup = this.viewDataProvider.viewDataGenerator.daysInInterval * this.option(\"intervalCount\");\r\n var cellsCount = cellsInGroup * horizontalGroupCount;\r\n for (var templateIndex = 0; templateIndex < cellsCount; templateIndex++) {\r\n var $th = $(\"<th>\");\r\n var text = formatWeekdayAndDay(currentDate);\r\n if (cellTemplate) {\r\n var templateOptions = {\r\n model: _extends({\r\n text: text,\r\n date: new Date(currentDate)\r\n }, this._getGroupsForDateHeaderTemplate(templateIndex, colSpan)),\r\n container: $th,\r\n index: templateIndex\r\n };\r\n cellTemplate.render(templateOptions)\r\n } else {\r\n $th.text(text)\r\n }\r\n $th.addClass(HEADER_PANEL_CELL_CLASS).addClass(HEADER_PANEL_WEEK_CELL_CLASS).attr(\"colSpan\", colSpan);\r\n $cells.push($th);\r\n if (templateIndex % cellsInGroup === cellsInGroup - 1) {\r\n currentDate = new Date(firstViewDate)\r\n } else {\r\n this._incrementDate(currentDate)\r\n }\r\n }\r\n var $row = $(\"<tr>\").addClass(HEADER_ROW_CLASS).append($cells);\r\n $headerRow.before($row)\r\n }\r\n }\r\n _renderIndicator(height, rtlOffset, $container, groupCount) {\r\n var $indicator;\r\n var width = this.getIndicationWidth();\r\n if (\"vertical\" === this.option(\"groupOrientation\")) {\r\n $indicator = this._createIndicator($container);\r\n setHeight($indicator, getBoundingRect($container.get(0)).height);\r\n $indicator.css(\"left\", rtlOffset ? rtlOffset - width : width)\r\n } else {\r\n for (var i = 0; i < groupCount; i++) {\r\n var offset = this.isGroupedByDate() ? i * this.getCellWidth() : this._getCellCount() * this.getCellWidth() * i;\r\n $indicator = this._createIndicator($container);\r\n setHeight($indicator, getBoundingRect($container.get(0)).height);\r\n $indicator.css(\"left\", rtlOffset ? rtlOffset - width - offset : width + offset)\r\n }\r\n }\r\n }\r\n _makeGroupRows(groups, groupByDate) {\r\n var tableCreatorStrategy = \"vertical\" === this.option(\"groupOrientation\") ? tableCreator.VERTICAL : tableCreator.HORIZONTAL;\r\n return tableCreator.makeGroupedTable(tableCreatorStrategy, groups, {\r\n groupRowClass: GROUP_ROW_CLASS,\r\n groupHeaderRowClass: GROUP_ROW_CLASS,\r\n groupHeaderClass: this._getGroupHeaderClass.bind(this),\r\n groupHeaderContentClass: GROUP_HEADER_CONTENT_CLASS\r\n }, this._getCellCount() || 1, this.option(\"resourceCellTemplate\"), this._getTotalRowCount(this._getGroupCount()), groupByDate)\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerTimeline\", SchedulerTimeline);\r\nexport default SchedulerTimeline;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_timeline_day.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerTimeline from \"./m_timeline\";\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-day\";\r\nclass SchedulerTimelineDay extends SchedulerTimeline {\r\n get type() {\r\n return VIEWS.TIMELINE_DAY\r\n }\r\n _getElementClass() {\r\n return TIMELINE_CLASS\r\n }\r\n _needRenderWeekHeader() {\r\n return this._isWorkSpaceWithCount()\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerTimelineDay\", SchedulerTimelineDay);\r\nexport default SchedulerTimelineDay;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_timeline_month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n formatWeekdayAndDay\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n getViewStartByOptions\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/month\";\r\nimport dxrDateHeader from \"../../../renovation/ui/scheduler/workspaces/base/header_panel/layout.j\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerTimeline from \"./m_timeline\";\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-month\";\r\nclass SchedulerTimelineMonth extends SchedulerTimeline {\r\n constructor() {\r\n super(...arguments);\r\n this.viewDirection = \"horizontal\"\r\n }\r\n get type() {\r\n return VIEWS.TIMELINE_MONTH\r\n }\r\n get renovatedHeaderPanelComponent() {\r\n return dxrDateHeader\r\n }\r\n _renderView() {\r\n super._renderView();\r\n this._updateScrollable()\r\n }\r\n _getElementClass() {\r\n return TIMELINE_CLASS\r\n }\r\n _getDateHeaderTemplate() {\r\n return this.option(\"dateCellTemplate\")\r\n }\r\n _calculateDurationInCells(timeDiff) {\r\n return timeDiff / this.getCellDuration()\r\n }\r\n isIndicatorVisible() {\r\n return true\r\n }\r\n _getFormat() {\r\n return formatWeekdayAndDay\r\n }\r\n _getIntervalBetween(currentDate) {\r\n var firstViewDate = this.getStartViewDate();\r\n var timeZoneOffset = dateUtils.getTimezonesDifference(firstViewDate, currentDate);\r\n return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n }\r\n _getViewStartByOptions() {\r\n return getViewStartByOptions(this.option(\"startDate\"), this.option(\"currentDate\"), this.option(\"intervalCount\"), dateUtils.getFirstMonthDate(this.option(\"startDate\")))\r\n }\r\n generateRenderOptions() {\r\n var options = super.generateRenderOptions(true);\r\n return _extends(_extends({}, options), {\r\n getDateForHeaderText: (_, date) => date\r\n })\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerTimelineMonth\", SchedulerTimelineMonth);\r\nexport default SchedulerTimelineMonth;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_timeline_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerTimeline from \"./m_timeline\";\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-week\";\r\nexport default class SchedulerTimelineWeek extends SchedulerTimeline {\r\n get type() {\r\n return VIEWS.TIMELINE_WEEK\r\n }\r\n _getElementClass() {\r\n return TIMELINE_CLASS\r\n }\r\n _getHeaderPanelCellWidth($headerRow) {\r\n return getBoundingRect($headerRow.children().first().get(0)).width\r\n }\r\n _needRenderWeekHeader() {\r\n return true\r\n }\r\n _incrementDate(date) {\r\n date.setDate(date.getDate() + 1)\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerTimelineWeek\", SchedulerTimelineWeek);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_timeline_work_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n getWeekendsCount\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/work_week\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerTimelineWeek from \"./m_timeline_week\";\r\nvar TIMELINE_CLASS = \"dx-scheduler-timeline-work-week\";\r\nvar LAST_DAY_WEEK_INDEX = 5;\r\nclass SchedulerTimelineWorkWeek extends SchedulerTimelineWeek {\r\n get type() {\r\n return VIEWS.TIMELINE_WORK_WEEK\r\n }\r\n constructor() {\r\n super(...arguments);\r\n this._getWeekendsCount = getWeekendsCount\r\n }\r\n _getElementClass() {\r\n return TIMELINE_CLASS\r\n }\r\n _incrementDate(date) {\r\n var day = date.getDay();\r\n if (day === LAST_DAY_WEEK_INDEX) {\r\n date.setDate(date.getDate() + 2)\r\n }\r\n super._incrementDate(date)\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerTimelineWorkWeek\", SchedulerTimelineWorkWeek);\r\nexport default SchedulerTimelineWorkWeek;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_vertical.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport {\r\n formatWeekdayAndDay\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport SchedulerWorkSpaceIndicator from \"./m_work_space_indicator\";\r\nclass SchedulerWorkspaceVertical extends SchedulerWorkSpaceIndicator {\r\n _getFormat() {\r\n return formatWeekdayAndDay\r\n }\r\n generateRenderOptions() {\r\n var options = super.generateRenderOptions();\r\n return _extends(_extends({}, options), {\r\n isGenerateTimePanelData: true\r\n })\r\n }\r\n _isRenderHeaderPanelEmptyCell() {\r\n return true\r\n }\r\n}\r\nexport default SchedulerWorkspaceVertical;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_day.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerWorkSpaceVertical from \"./m_work_space_vertical\";\r\nvar DAY_CLASS = \"dx-scheduler-work-space-day\";\r\nclass SchedulerWorkSpaceDay extends SchedulerWorkSpaceVertical {\r\n get type() {\r\n return VIEWS.DAY\r\n }\r\n _getElementClass() {\r\n return DAY_CLASS\r\n }\r\n _renderDateHeader() {\r\n return 1 === this.option(\"intervalCount\") ? null : super._renderDateHeader()\r\n }\r\n renderRHeaderPanel() {\r\n if (1 === this.option(\"intervalCount\")) {\r\n super.renderRHeaderPanel(false)\r\n } else {\r\n super.renderRHeaderPanel(true)\r\n }\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerWorkSpaceDay\", SchedulerWorkSpaceDay);\r\nexport default SchedulerWorkSpaceDay;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/month/date_table/cell.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"allDay\", \"ariaLabel\", \"children\", \"className\", \"contentTemplateProps\", \"dataCellTemplate\", \"endDate\", \"firstDayOfMonth\", \"groupIndex\", \"groups\", \"index\", \"isFirstGroupCell\", \"isFocused\", \"isLastGroupCell\", \"isSelected\", \"otherMonth\", \"startDate\", \"text\", \"today\"];\r\nimport {\r\n createVNode,\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n BaseInfernoComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n combineClasses\r\n} from \"../../../../../utils/combine_classes\";\r\nimport {\r\n DateTableCellBase,\r\n DateTableCellBaseProps\r\n} from \"../../base/date_table/cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n classes: classes,\r\n contentTemplateProps: contentTemplateProps,\r\n props: {\r\n dataCellTemplate: dataCellTemplate,\r\n endDate: endDate,\r\n groupIndex: groupIndex,\r\n groups: groups,\r\n index: index,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isFocused: isFocused,\r\n isLastGroupCell: isLastGroupCell,\r\n isSelected: isSelected,\r\n startDate: startDate,\r\n text: text\r\n }\r\n } = _ref;\r\n return createComponentVNode(2, DateTableCellBase, {\r\n className: classes,\r\n dataCellTemplate: dataCellTemplate,\r\n startDate: startDate,\r\n endDate: endDate,\r\n text: text,\r\n groups: groups,\r\n groupIndex: groupIndex,\r\n index: index,\r\n isFirstGroupCell: isFirstGroupCell,\r\n isLastGroupCell: isLastGroupCell,\r\n isSelected: isSelected,\r\n isFocused: isFocused,\r\n contentTemplateProps: contentTemplateProps,\r\n children: createVNode(1, \"div\", \"dx-scheduler-date-table-cell-text\", text, 0)\r\n })\r\n};\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class MonthDateTableCell extends BaseInfernoComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n this.__getterCache = {}\r\n }\r\n get classes() {\r\n var {\r\n className: className,\r\n firstDayOfMonth: firstDayOfMonth,\r\n otherMonth: otherMonth,\r\n today: today\r\n } = this.props;\r\n return combineClasses({\r\n \"dx-scheduler-date-table-other-month\": !!otherMonth,\r\n \"dx-scheduler-date-table-current-date\": !!today,\r\n \"dx-scheduler-date-table-first-of-month\": !!firstDayOfMonth,\r\n [className]: !!className\r\n })\r\n }\r\n get contentTemplateProps() {\r\n if (void 0 !== this.__getterCache.contentTemplateProps) {\r\n return this.__getterCache.contentTemplateProps\r\n }\r\n return this.__getterCache.contentTemplateProps = (() => {\r\n var {\r\n index: index,\r\n text: text\r\n } = this.props;\r\n return {\r\n data: {\r\n text: text\r\n },\r\n index: index\r\n }\r\n })()\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n componentWillUpdate(nextProps, nextState, context) {\r\n if (this.props.index !== nextProps.index || this.props.text !== nextProps.text) {\r\n this.__getterCache.contentTemplateProps = void 0\r\n }\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n classes: this.classes,\r\n contentTemplateProps: this.contentTemplateProps,\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nMonthDateTableCell.defaultProps = DateTableCellBaseProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/month/date_table/layout.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nvar _excluded = [\"addDateTableClass\", \"addVerticalSizesClassToRows\", \"bottomVirtualRowHeight\", \"cellTemplate\", \"dataCellTemplate\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"tableRef\", \"topVirtualRowHeight\", \"viewData\", \"width\"];\r\nimport {\r\n createComponentVNode,\r\n normalizeProps\r\n} from \"inferno\";\r\nimport {\r\n InfernoWrapperComponent\r\n} from \"@devextreme/runtime/inferno\";\r\nimport {\r\n DateTableLayoutBase,\r\n DateTableLayoutProps\r\n} from \"../../base/date_table/layout\";\r\nimport {\r\n MonthDateTableCell\r\n} from \"./cell\";\r\nexport var viewFunction = _ref => {\r\n var {\r\n props: {\r\n addDateTableClass: addDateTableClass,\r\n addVerticalSizesClassToRows: addVerticalSizesClassToRows,\r\n dataCellTemplate: dataCellTemplate,\r\n groupOrientation: groupOrientation,\r\n tableRef: tableRef,\r\n viewData: viewData,\r\n width: width\r\n },\r\n restAttributes: restAttributes\r\n } = _ref;\r\n return normalizeProps(createComponentVNode(2, DateTableLayoutBase, _extends({\r\n viewData: viewData,\r\n groupOrientation: groupOrientation,\r\n addDateTableClass: addDateTableClass,\r\n dataCellTemplate: dataCellTemplate,\r\n cellTemplate: MonthDateTableCell,\r\n tableRef: tableRef,\r\n addVerticalSizesClassToRows: addVerticalSizesClassToRows,\r\n width: width\r\n }, restAttributes)))\r\n};\r\nimport {\r\n createReRenderEffect\r\n} from \"@devextreme/runtime/inferno\";\r\nvar getTemplate = TemplateProp => TemplateProp && (TemplateProp.defaultProps ? props => normalizeProps(createComponentVNode(2, TemplateProp, _extends({}, props))) : TemplateProp);\r\nexport class MonthDateTableLayout extends InfernoWrapperComponent {\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n createEffects() {\r\n return [createReRenderEffect()]\r\n }\r\n get restAttributes() {\r\n var _this$props = this.props,\r\n restProps = _objectWithoutPropertiesLoose(_this$props, _excluded);\r\n return restProps\r\n }\r\n render() {\r\n var props = this.props;\r\n return viewFunction({\r\n props: _extends({}, props, {\r\n cellTemplate: getTemplate(props.cellTemplate),\r\n dataCellTemplate: getTemplate(props.dataCellTemplate)\r\n }),\r\n restAttributes: this.restAttributes\r\n })\r\n }\r\n}\r\nMonthDateTableLayout.defaultProps = DateTableLayoutProps;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/workspaces/month/date_table/layout.j.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../../../../core/component_registrator\";\r\nimport {\r\n DateTable\r\n} from \"../../../../../component_wrapper/scheduler/date_table\";\r\nimport {\r\n MonthDateTableLayout as MonthDateTableLayoutComponent\r\n} from \"./layout\";\r\nexport default class MonthDateTableLayout extends DateTable {\r\n get _propsInfo() {\r\n return {\r\n twoWay: [],\r\n allowNull: [],\r\n elements: [],\r\n templates: [\"cellTemplate\", \"dataCellTemplate\"],\r\n props: [\"cellTemplate\", \"viewData\", \"groupOrientation\", \"leftVirtualCellWidth\", \"rightVirtualCellWidth\", \"topVirtualRowHeight\", \"bottomVirtualRowHeight\", \"addDateTableClass\", \"addVerticalSizesClassToRows\", \"width\", \"dataCellTemplate\"]\r\n }\r\n }\r\n get _viewComponent() {\r\n return MonthDateTableLayoutComponent\r\n }\r\n}\r\nregisterComponent(\"dxMonthDateTableLayout\", MonthDateTableLayout);\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_month.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n noop\r\n} from \"../../../core/utils/common\";\r\nimport dateUtils from \"../../../core/utils/date\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../../core/utils/position\";\r\nimport {\r\n hasWindow\r\n} from \"../../../core/utils/window\";\r\nimport {\r\n formatWeekday\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n getCellText,\r\n getViewStartByOptions\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/month\";\r\nimport dxrMonthDateTableLayout from \"../../../renovation/ui/scheduler/workspaces/month/date_table/layout.j\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport {\r\n utils\r\n} from \"../m_utils\";\r\nimport SchedulerWorkSpace from \"./m_work_space_indicator\";\r\nvar MONTH_CLASS = \"dx-scheduler-work-space-month\";\r\nvar DATE_TABLE_CURRENT_DATE_CLASS = \"dx-scheduler-date-table-current-date\";\r\nvar DATE_TABLE_CELL_TEXT_CLASS = \"dx-scheduler-date-table-cell-text\";\r\nvar DATE_TABLE_FIRST_OF_MONTH_CLASS = \"dx-scheduler-date-table-first-of-month\";\r\nvar DATE_TABLE_OTHER_MONTH_DATE_CLASS = \"dx-scheduler-date-table-other-month\";\r\nvar toMs = dateUtils.dateToMilliseconds;\r\nclass SchedulerWorkSpaceMonth extends SchedulerWorkSpace {\r\n get type() {\r\n return VIEWS.MONTH\r\n }\r\n _getElementClass() {\r\n return MONTH_CLASS\r\n }\r\n _getFormat() {\r\n return formatWeekday\r\n }\r\n _getIntervalBetween(currentDate) {\r\n var firstViewDate = this.getStartViewDate();\r\n var timeZoneOffset = dateUtils.getTimezonesDifference(firstViewDate, currentDate);\r\n return currentDate.getTime() - (firstViewDate.getTime() - 36e5 * this.option(\"startDayHour\")) - timeZoneOffset\r\n }\r\n _getDateGenerationOptions() {\r\n return _extends(_extends({}, super._getDateGenerationOptions()), {\r\n cellCountInDay: 1\r\n })\r\n }\r\n getCellWidth() {\r\n return this.cache.get(\"cellWidth\", () => {\r\n var averageWidth = 0;\r\n var cells = this._getCells().slice(0, 7);\r\n cells.each((index, element) => {\r\n averageWidth += hasWindow() ? getBoundingRect(element).width : 0\r\n });\r\n return 0 === cells.length ? void 0 : averageWidth / 7\r\n })\r\n }\r\n _insertAllDayRowsIntoDateTable() {\r\n return false\r\n }\r\n _getCellCoordinatesByIndex(index) {\r\n var rowIndex = Math.floor(index / this._getCellCount());\r\n var columnIndex = index - this._getCellCount() * rowIndex;\r\n return {\r\n rowIndex: rowIndex,\r\n columnIndex: columnIndex\r\n }\r\n }\r\n _needCreateCrossScrolling() {\r\n return this.option(\"crossScrollingEnabled\") || this._isVerticalGroupedWorkSpace()\r\n }\r\n _getViewStartByOptions() {\r\n return getViewStartByOptions(this.option(\"startDate\"), this.option(\"currentDate\"), this.option(\"intervalCount\"), dateUtils.getFirstMonthDate(this.option(\"startDate\")))\r\n }\r\n _updateIndex(index) {\r\n return index\r\n }\r\n isIndicationAvailable() {\r\n return false\r\n }\r\n getIntervalDuration() {\r\n return toMs(\"day\")\r\n }\r\n getTimePanelWidth() {\r\n return 0\r\n }\r\n supportAllDayRow() {\r\n return false\r\n }\r\n keepOriginalHours() {\r\n return true\r\n }\r\n getWorkSpaceLeftOffset() {\r\n return 0\r\n }\r\n needApplyCollectorOffset() {\r\n return true\r\n }\r\n _getHeaderDate() {\r\n return this._getViewStartByOptions()\r\n }\r\n scrollToTime() {\r\n return noop()\r\n }\r\n renderRAllDayPanel() {}\r\n renderRTimeTable() {}\r\n renderRDateTable() {\r\n utils.renovation.renderComponent(this, this._$dateTable, dxrMonthDateTableLayout, \"renovatedDateTable\", this._getRDateTableProps())\r\n }\r\n _createWorkSpaceElements() {\r\n if (this._isVerticalGroupedWorkSpace()) {\r\n this._createWorkSpaceScrollableElements()\r\n } else {\r\n super._createWorkSpaceElements()\r\n }\r\n }\r\n _toggleAllDayVisibility() {\r\n return noop()\r\n }\r\n _changeAllDayVisibility() {\r\n return noop()\r\n }\r\n _renderTimePanel() {\r\n return noop()\r\n }\r\n _renderAllDayPanel() {\r\n return noop()\r\n }\r\n _setMonthClassesToCell($cell, data) {\r\n $cell.toggleClass(DATE_TABLE_CURRENT_DATE_CLASS, data.isCurrentDate).toggleClass(DATE_TABLE_FIRST_OF_MONTH_CLASS, data.firstDayOfMonth).toggleClass(DATE_TABLE_OTHER_MONTH_DATE_CLASS, data.otherMonth)\r\n }\r\n _createAllDayPanelElements() {}\r\n _renderTableBody(options) {\r\n options.getCellText = (rowIndex, columnIndex) => {\r\n var date = this.viewDataProvider.completeViewDataMap[rowIndex][columnIndex].startDate;\r\n return getCellText(date, this.option(\"intervalCount\"))\r\n };\r\n options.getCellTextClass = DATE_TABLE_CELL_TEXT_CLASS;\r\n options.setAdditionalClasses = this._setMonthClassesToCell.bind(this);\r\n super._renderTableBody(options)\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerWorkSpaceMonth\", SchedulerWorkSpaceMonth);\r\nexport default SchedulerWorkSpaceMonth;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n calculateViewStartDate\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/week\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerWorkSpaceVertical from \"./m_work_space_vertical\";\r\nvar WEEK_CLASS = \"dx-scheduler-work-space-week\";\r\nclass SchedulerWorkSpaceWeek extends SchedulerWorkSpaceVertical {\r\n get type() {\r\n return VIEWS.WEEK\r\n }\r\n _getElementClass() {\r\n return WEEK_CLASS\r\n }\r\n _calculateViewStartDate() {\r\n return calculateViewStartDate(this.option(\"startDate\"), this._firstDayOfWeek())\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerWorkSpaceWeek\", SchedulerWorkSpaceWeek);\r\nexport default SchedulerWorkSpaceWeek;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/workspaces/m_work_space_work_week.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport registerComponent from \"../../../core/component_registrator\";\r\nimport {\r\n getWeekendsCount\r\n} from \"../../../renovation/ui/scheduler/view_model/to_test/views/utils/work_week\";\r\nimport {\r\n VIEWS\r\n} from \"../m_constants\";\r\nimport SchedulerWorkSpaceWeek from \"./m_work_space_week\";\r\nvar WORK_WEEK_CLASS = \"dx-scheduler-work-space-work-week\";\r\nclass SchedulerWorkSpaceWorkWeek extends SchedulerWorkSpaceWeek {\r\n get type() {\r\n return VIEWS.WORK_WEEK\r\n }\r\n constructor() {\r\n super(...arguments);\r\n this._getWeekendsCount = getWeekendsCount\r\n }\r\n _getElementClass() {\r\n return WORK_WEEK_CLASS\r\n }\r\n}\r\nregisterComponent(\"dxSchedulerWorkSpaceWorkWeek\", SchedulerWorkSpaceWorkWeek);\r\nexport default SchedulerWorkSpaceWorkWeek;\r\n","/**\r\n * DevExtreme (esm/__internal/scheduler/m_scheduler.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\r\nimport registerComponent from \"../../core/component_registrator\";\r\nimport config from \"../../core/config\";\r\nimport devices from \"../../core/devices\";\r\nimport $ from \"../../core/renderer\";\r\nimport {\r\n BindableTemplate\r\n} from \"../../core/templates/bindable_template\";\r\nimport {\r\n EmptyTemplate\r\n} from \"../../core/templates/empty_template\";\r\nimport Callbacks from \"../../core/utils/callbacks\";\r\nimport {\r\n noop\r\n} from \"../../core/utils/common\";\r\nimport {\r\n compileGetter\r\n} from \"../../core/utils/data\";\r\nimport dateUtils from \"../../core/utils/date\";\r\nimport dateSerialization from \"../../core/utils/date_serialization\";\r\nimport {\r\n Deferred,\r\n fromPromise,\r\n when\r\n} from \"../../core/utils/deferred\";\r\nimport {\r\n extend\r\n} from \"../../core/utils/extend\";\r\nimport {\r\n each\r\n} from \"../../core/utils/iterator\";\r\nimport {\r\n getBoundingRect\r\n} from \"../../core/utils/position\";\r\nimport {\r\n isDeferred,\r\n isDefined,\r\n isEmptyObject,\r\n isFunction,\r\n isObject,\r\n isPromise,\r\n isString\r\n} from \"../../core/utils/type\";\r\nimport {\r\n hasWindow\r\n} from \"../../core/utils/window\";\r\nimport DataHelperMixin from \"../../data_helper\";\r\nimport {\r\n triggerResizeEvent\r\n} from \"../../events/visibility_change\";\r\nimport dateLocalization from \"../../localization/date\";\r\nimport messageLocalization from \"../../localization/message\";\r\nimport {\r\n getAppointmentTakesAllDay\r\n} from \"../../renovation/ui/scheduler/appointment/utils/getAppointmentTakesAllDay\";\r\nimport {\r\n renovationGetCurrentView\r\n} from \"../../renovation/ui/scheduler/model/untyped_getCurrentView\";\r\nimport {\r\n createTimeZoneCalculator\r\n} from \"../../renovation/ui/scheduler/timeZoneCalculator/createTimeZoneCalculator\";\r\nimport {\r\n getPreparedDataItems\r\n} from \"../../renovation/ui/scheduler/utils/data\";\r\nimport {\r\n excludeFromRecurrence\r\n} from \"../../renovation/ui/scheduler/utils/recurrence/excludeFromRecurrence\";\r\nimport {\r\n isDateAndTimeView as _isDateAndTimeView,\r\n isTimelineView,\r\n validateDayHours\r\n} from \"../../renovation/ui/scheduler/view_model/to_test/views/utils/base\";\r\nimport {\r\n custom as customDialog\r\n} from \"../../ui/dialog\";\r\nimport {\r\n isMaterial\r\n} from \"../../ui/themes\";\r\nimport errors from \"../../ui/widget/ui.errors\";\r\nimport Widget from \"../../ui/widget/ui.widget\";\r\nimport {\r\n AppointmentForm\r\n} from \"./appointment_popup/m_form\";\r\nimport {\r\n ACTION_TO_APPOINTMENT,\r\n AppointmentPopup\r\n} from \"./appointment_popup/m_popup\";\r\nimport {\r\n AppointmentDataProvider\r\n} from \"./appointments/data_provider/m_appointment_data_provider\";\r\nimport AppointmentCollection from \"./appointments/m_appointment_collection\";\r\nimport {\r\n renderAppointments\r\n} from \"./appointments/m_render\";\r\nimport {\r\n SchedulerHeader\r\n} from \"./header/m_header\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"./m_appointment_adapter\";\r\nimport AppointmentLayoutManager from \"./m_appointments_layout_manager\";\r\nimport {\r\n CompactAppointmentsHelper\r\n} from \"./m_compact_appointments_helper\";\r\nimport {\r\n AppointmentTooltipInfo\r\n} from \"./m_data_structures\";\r\nimport {\r\n ExpressionUtils\r\n} from \"./m_expression_utils\";\r\nimport {\r\n hide as hideLoading,\r\n show as showLoading\r\n} from \"./m_loading\";\r\nimport {\r\n getRecurrenceProcessor\r\n} from \"./m_recurrence\";\r\nimport subscribes from \"./m_subscribes\";\r\nimport {\r\n utils\r\n} from \"./m_utils\";\r\nimport timeZoneUtils from \"./m_utils_time_zone\";\r\nimport {\r\n AgendaResourceProcessor\r\n} from \"./resources/m_agenda_resource_processor\";\r\nimport {\r\n createExpressions,\r\n createResourceEditorModel as _createResourceEditorModel,\r\n getAppointmentColor,\r\n getCellGroups,\r\n loadResources,\r\n setResourceToAppointment\r\n} from \"./resources/m_utils\";\r\nimport {\r\n DesktopTooltipStrategy\r\n} from \"./tooltip_strategies/m_desktop_tooltip_strategy\";\r\nimport {\r\n MobileTooltipStrategy\r\n} from \"./tooltip_strategies/m_mobile_tooltip_strategy\";\r\nimport SchedulerAgenda from \"./workspaces/m_agenda\";\r\nimport SchedulerTimelineDay from \"./workspaces/m_timeline_day\";\r\nimport SchedulerTimelineMonth from \"./workspaces/m_timeline_month\";\r\nimport SchedulerTimelineWeek from \"./workspaces/m_timeline_week\";\r\nimport SchedulerTimelineWorkWeek from \"./workspaces/m_timeline_work_week\";\r\nimport SchedulerWorkSpaceDay from \"./workspaces/m_work_space_day\";\r\nimport SchedulerWorkSpaceMonth from \"./workspaces/m_work_space_month\";\r\nimport SchedulerWorkSpaceWeek from \"./workspaces/m_work_space_week\";\r\nimport SchedulerWorkSpaceWorkWeek from \"./workspaces/m_work_space_work_week\";\r\nvar MINUTES_IN_HOUR = 60;\r\nvar DEFAULT_AGENDA_DURATION = 7;\r\nvar WIDGET_CLASS = \"dx-scheduler\";\r\nvar WIDGET_SMALL_CLASS = \"\".concat(WIDGET_CLASS, \"-small\");\r\nvar WIDGET_ADAPTIVE_CLASS = \"\".concat(WIDGET_CLASS, \"-adaptive\");\r\nvar WIDGET_READONLY_CLASS = \"\".concat(WIDGET_CLASS, \"-readonly\");\r\nvar WIDGET_SMALL_WIDTH = 400;\r\nvar FULL_DATE_FORMAT = \"yyyyMMddTHHmmss\";\r\nvar UTC_FULL_DATE_FORMAT = \"\".concat(FULL_DATE_FORMAT, \"Z\");\r\nvar DEFAULT_APPOINTMENT_TEMPLATE_NAME = \"item\";\r\nvar DEFAULT_APPOINTMENT_COLLECTOR_TEMPLATE_NAME = \"appointmentCollector\";\r\nvar DEFAULT_DROP_DOWN_APPOINTMENT_TEMPLATE_NAME = \"dropDownAppointment\";\r\nvar VIEWS_CONFIG = {\r\n day: {\r\n workSpace: SchedulerWorkSpaceDay,\r\n renderingStrategy: \"vertical\"\r\n },\r\n week: {\r\n workSpace: SchedulerWorkSpaceWeek,\r\n renderingStrategy: \"vertical\"\r\n },\r\n workWeek: {\r\n workSpace: SchedulerWorkSpaceWorkWeek,\r\n renderingStrategy: \"vertical\"\r\n },\r\n month: {\r\n workSpace: SchedulerWorkSpaceMonth,\r\n renderingStrategy: \"horizontalMonth\"\r\n },\r\n timelineDay: {\r\n workSpace: SchedulerTimelineDay,\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineWeek: {\r\n workSpace: SchedulerTimelineWeek,\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineWorkWeek: {\r\n workSpace: SchedulerTimelineWorkWeek,\r\n renderingStrategy: \"horizontal\"\r\n },\r\n timelineMonth: {\r\n workSpace: SchedulerTimelineMonth,\r\n renderingStrategy: \"horizontalMonthLine\"\r\n },\r\n agenda: {\r\n workSpace: SchedulerAgenda,\r\n renderingStrategy: \"agenda\"\r\n }\r\n};\r\nvar StoreEventNames = {\r\n ADDING: \"onAppointmentAdding\",\r\n ADDED: \"onAppointmentAdded\",\r\n DELETING: \"onAppointmentDeleting\",\r\n DELETED: \"onAppointmentDeleted\",\r\n UPDATING: \"onAppointmentUpdating\",\r\n UPDATED: \"onAppointmentUpdated\"\r\n};\r\nvar RECURRENCE_EDITING_MODE = {\r\n SERIES: \"editSeries\",\r\n OCCURENCE: \"editOccurence\",\r\n CANCEL: \"cancel\"\r\n};\r\nclass Scheduler extends Widget {\r\n _getDefaultOptions() {\r\n var defaultOptions = extend(super._getDefaultOptions(), {\r\n views: [\"day\", \"week\"],\r\n currentView: \"day\",\r\n currentDate: dateUtils.trimTime(new Date),\r\n min: void 0,\r\n max: void 0,\r\n dateSerializationFormat: void 0,\r\n firstDayOfWeek: void 0,\r\n groups: [],\r\n resources: [],\r\n loadedResources: [],\r\n resourceLoaderMap: new Map,\r\n dataSource: null,\r\n customizeDateNavigatorText: void 0,\r\n appointmentTemplate: DEFAULT_APPOINTMENT_TEMPLATE_NAME,\r\n dropDownAppointmentTemplate: DEFAULT_DROP_DOWN_APPOINTMENT_TEMPLATE_NAME,\r\n appointmentCollectorTemplate: DEFAULT_APPOINTMENT_COLLECTOR_TEMPLATE_NAME,\r\n dataCellTemplate: null,\r\n timeCellTemplate: null,\r\n resourceCellTemplate: null,\r\n dateCellTemplate: null,\r\n startDayHour: 0,\r\n endDayHour: 24,\r\n editing: {\r\n allowAdding: true,\r\n allowDeleting: true,\r\n allowDragging: true,\r\n allowResizing: true,\r\n allowUpdating: true,\r\n allowTimeZoneEditing: false\r\n },\r\n showAllDayPanel: true,\r\n showCurrentTimeIndicator: true,\r\n shadeUntilCurrentTime: false,\r\n indicatorUpdateInterval: 3e5,\r\n indicatorTime: void 0,\r\n recurrenceEditMode: \"dialog\",\r\n cellDuration: 30,\r\n maxAppointmentsPerCell: \"auto\",\r\n selectedCellData: [],\r\n groupByDate: false,\r\n onAppointmentRendered: null,\r\n onAppointmentClick: null,\r\n onAppointmentDblClick: null,\r\n onAppointmentContextMenu: null,\r\n onCellClick: null,\r\n onCellContextMenu: null,\r\n onAppointmentAdding: null,\r\n onAppointmentAdded: null,\r\n onAppointmentUpdating: null,\r\n onAppointmentUpdated: null,\r\n onAppointmentDeleting: null,\r\n onAppointmentDeleted: null,\r\n onAppointmentFormOpening: null,\r\n onAppointmentTooltipShowing: null,\r\n appointmentTooltipTemplate: \"appointmentTooltip\",\r\n appointmentPopupTemplate: \"appointmentPopup\",\r\n crossScrollingEnabled: false,\r\n useDropDownViewSwitcher: false,\r\n startDateExpr: \"startDate\",\r\n endDateExpr: \"endDate\",\r\n textExpr: \"text\",\r\n descriptionExpr: \"description\",\r\n allDayExpr: \"allDay\",\r\n recurrenceRuleExpr: \"recurrenceRule\",\r\n recurrenceExceptionExpr: \"recurrenceException\",\r\n disabledExpr: \"disabled\",\r\n remoteFiltering: false,\r\n timeZone: \"\",\r\n startDateTimeZoneExpr: \"startDateTimeZone\",\r\n endDateTimeZoneExpr: \"endDateTimeZone\",\r\n noDataText: messageLocalization.format(\"dxCollectionWidget-noDataText\"),\r\n adaptivityEnabled: false,\r\n allowMultipleCellSelection: true,\r\n scrolling: {\r\n mode: \"standard\"\r\n },\r\n allDayPanelMode: \"all\",\r\n renovateRender: true,\r\n _draggingMode: \"outlook\",\r\n _appointmentTooltipOffset: {\r\n x: 0,\r\n y: 0\r\n },\r\n _appointmentTooltipButtonsPosition: \"bottom\",\r\n _appointmentTooltipOpenButtonText: messageLocalization.format(\"dxScheduler-openAppointment\"),\r\n _appointmentCountPerCell: 2,\r\n _collectorOffset: 0,\r\n _appointmentOffset: 26,\r\n toolbar: [{\r\n location: \"before\",\r\n defaultElement: \"dateNavigator\"\r\n }, {\r\n location: \"after\",\r\n defaultElement: \"viewSwitcher\"\r\n }]\r\n });\r\n return extend(true, defaultOptions, {\r\n integrationOptions: {\r\n useDeferUpdateForTemplates: false\r\n }\r\n })\r\n }\r\n get filteredItems() {\r\n if (!this._filteredItems) {\r\n this._filteredItems = []\r\n }\r\n return this._filteredItems\r\n }\r\n set filteredItems(value) {\r\n this._filteredItems = value\r\n }\r\n get preparedItems() {\r\n if (!this._preparedItems) {\r\n this._preparedItems = []\r\n }\r\n return this._preparedItems\r\n }\r\n set preparedItems(value) {\r\n this._preparedItems = value\r\n }\r\n get currentView() {\r\n return renovationGetCurrentView(this.option(\"currentView\"), this.option(\"views\"))\r\n }\r\n get currentViewType() {\r\n return isObject(this.currentView) ? this.currentView.type : this.currentView\r\n }\r\n get timeZoneCalculator() {\r\n if (!this._timeZoneCalculator) {\r\n this._timeZoneCalculator = createTimeZoneCalculator(this.option(\"timeZone\"))\r\n }\r\n return this._timeZoneCalculator\r\n }\r\n _setDeprecatedOptions() {\r\n super._setDeprecatedOptions();\r\n extend(this._deprecatedOptions, {\r\n dropDownAppointmentTemplate: {\r\n since: \"19.2\",\r\n message: \"appointmentTooltipTemplate\"\r\n }\r\n })\r\n }\r\n _defaultOptionsRules() {\r\n return super._defaultOptionsRules().concat([{\r\n device: () => \"desktop\" === devices.real().deviceType && !devices.isSimulator(),\r\n options: {\r\n focusStateEnabled: true\r\n }\r\n }, {\r\n device: () => !devices.current().generic,\r\n options: {\r\n useDropDownViewSwitcher: true,\r\n editing: {\r\n allowDragging: false,\r\n allowResizing: false\r\n }\r\n }\r\n }, {\r\n device: () => isMaterial(),\r\n options: {\r\n useDropDownViewSwitcher: true,\r\n dateCellTemplate(data, index, element) {\r\n var {\r\n text: text\r\n } = data;\r\n text.split(\" \").forEach((text, index) => {\r\n var span = $(\"<span>\").text(text).addClass(\"dx-scheduler-header-panel-cell-date\");\r\n $(element).append(span);\r\n if (!index) {\r\n $(element).append(\" \")\r\n }\r\n })\r\n },\r\n _appointmentTooltipOffset: {\r\n x: 0,\r\n y: 11\r\n },\r\n _appointmentTooltipButtonsPosition: \"top\",\r\n _appointmentTooltipOpenButtonText: null,\r\n _appointmentCountPerCell: 1,\r\n _collectorOffset: 20,\r\n _appointmentOffset: 30\r\n }\r\n }])\r\n }\r\n _postponeDataSourceLoading(promise) {\r\n this.postponedOperations.add(\"_reloadDataSource\", this._reloadDataSource.bind(this), promise)\r\n }\r\n _postponeResourceLoading() {\r\n var whenLoaded = this.postponedOperations.add(\"loadResources\", () => {\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n return loadResources(groups, this.option(\"resources\"), this.option(\"resourceLoaderMap\"))\r\n });\r\n var resolveCallbacks = new Deferred;\r\n whenLoaded.done(resources => {\r\n this.option(\"loadedResources\", resources);\r\n resolveCallbacks.resolve(resources)\r\n });\r\n this._postponeDataSourceLoading(whenLoaded);\r\n return resolveCallbacks.promise()\r\n }\r\n _optionChanged(args) {\r\n var _a, _b, _c, _d;\r\n var {\r\n value: value\r\n } = args;\r\n var {\r\n name: name\r\n } = args;\r\n switch (args.name) {\r\n case \"customizeDateNavigatorText\":\r\n this._updateOption(\"header\", name, value);\r\n break;\r\n case \"firstDayOfWeek\":\r\n this._updateOption(\"workSpace\", name, value);\r\n this._updateOption(\"header\", name, value);\r\n break;\r\n case \"currentDate\":\r\n value = this._dateOption(name);\r\n value = dateUtils.trimTime(new Date(value));\r\n this.option(\"selectedCellData\", []);\r\n this._workSpace.option(name, new Date(value));\r\n null === (_a = this._header) || void 0 === _a ? void 0 : _a.option(name, new Date(value));\r\n null === (_b = this._header) || void 0 === _b ? void 0 : _b.option(\"startViewDate\", this.getStartViewDate());\r\n this._appointments.option(\"items\", []);\r\n this._filterAppointmentsByDate();\r\n this._postponeDataSourceLoading();\r\n break;\r\n case \"dataSource\":\r\n this._initDataSource();\r\n this.appointmentDataProvider.setDataSource(this._dataSource);\r\n this._postponeResourceLoading().done(() => {\r\n this._filterAppointmentsByDate();\r\n this._updateOption(\"workSpace\", \"showAllDayPanel\", this.option(\"showAllDayPanel\"))\r\n });\r\n break;\r\n case \"min\":\r\n case \"max\":\r\n value = this._dateOption(name);\r\n this._updateOption(\"header\", name, new Date(value));\r\n this._updateOption(\"workSpace\", name, new Date(value));\r\n break;\r\n case \"views\":\r\n if (this._getCurrentViewOptions()) {\r\n this.repaint()\r\n } else {\r\n null === (_c = this._header) || void 0 === _c ? void 0 : _c.option(name, value)\r\n }\r\n break;\r\n case \"useDropDownViewSwitcher\":\r\n null === (_d = this._header) || void 0 === _d ? void 0 : _d.option(name, value);\r\n break;\r\n case \"currentView\":\r\n this._validateDayHours();\r\n this._validateCellDuration();\r\n this._appointments.option({\r\n items: [],\r\n allowDrag: this._allowDragging(),\r\n allowResize: this._allowResizing(),\r\n itemTemplate: this._getAppointmentTemplate(\"appointmentTemplate\")\r\n });\r\n this._postponeResourceLoading().done(resources => {\r\n var _a;\r\n this._refreshWorkSpace(resources);\r\n null === (_a = this._header) || void 0 === _a ? void 0 : _a.option(this._headerConfig());\r\n this._filterAppointmentsByDate();\r\n this._appointments.option(\"allowAllDayResize\", \"day\" !== value)\r\n });\r\n this.postponedOperations.callPostponedOperations();\r\n break;\r\n case \"appointmentTemplate\":\r\n this._appointments.option(\"itemTemplate\", value);\r\n break;\r\n case \"dateCellTemplate\":\r\n case \"resourceCellTemplate\":\r\n case \"dataCellTemplate\":\r\n case \"timeCellTemplate\":\r\n this.repaint();\r\n break;\r\n case \"groups\":\r\n this._postponeResourceLoading().done(resources => {\r\n this._refreshWorkSpace(resources);\r\n this._filterAppointmentsByDate()\r\n });\r\n break;\r\n case \"resources\":\r\n this._dataAccessors.resources = createExpressions(this.option(\"resources\"));\r\n this.agendaResourceProcessor.initializeState(this.option(\"resources\"));\r\n this.updateInstances();\r\n this._postponeResourceLoading().done(resources => {\r\n this._appointments.option(\"items\", []);\r\n this._refreshWorkSpace(resources);\r\n this._filterAppointmentsByDate();\r\n this._createAppointmentPopupForm()\r\n });\r\n break;\r\n case \"startDayHour\":\r\n case \"endDayHour\":\r\n this._validateDayHours();\r\n this.updateInstances();\r\n this._appointments.option(\"items\", []);\r\n this._updateOption(\"workSpace\", name, value);\r\n this._appointments.repaint();\r\n this._filterAppointmentsByDate();\r\n this._postponeDataSourceLoading();\r\n break;\r\n case StoreEventNames.ADDING:\r\n case StoreEventNames.ADDED:\r\n case StoreEventNames.UPDATING:\r\n case StoreEventNames.UPDATED:\r\n case StoreEventNames.DELETING:\r\n case StoreEventNames.DELETED:\r\n case \"onAppointmentFormOpening\":\r\n case \"onAppointmentTooltipShowing\":\r\n this._actions[name] = this._createActionByOption(name);\r\n break;\r\n case \"onAppointmentRendered\":\r\n this._appointments.option(\"onItemRendered\", this._getAppointmentRenderedAction());\r\n break;\r\n case \"onAppointmentClick\":\r\n this._appointments.option(\"onItemClick\", this._createActionByOption(name));\r\n break;\r\n case \"onAppointmentDblClick\":\r\n this._appointments.option(name, this._createActionByOption(name));\r\n break;\r\n case \"onAppointmentContextMenu\":\r\n this._appointments.option(\"onItemContextMenu\", this._createActionByOption(name));\r\n this._appointmentTooltip._options.onItemContextMenu = this._createActionByOption(name);\r\n break;\r\n case \"noDataText\":\r\n case \"allowMultipleCellSelection\":\r\n case \"selectedCellData\":\r\n case \"accessKey\":\r\n case \"onCellClick\":\r\n case \"onCellContextMenu\":\r\n this._workSpace.option(name, value);\r\n break;\r\n case \"crossScrollingEnabled\":\r\n this._postponeResourceLoading().done(resources => {\r\n this._appointments.option(\"items\", []);\r\n this._refreshWorkSpace(resources);\r\n if (this._readyToRenderAppointments) {\r\n this._appointments.option(\"items\", this._getAppointmentsToRepaint())\r\n }\r\n });\r\n break;\r\n case \"cellDuration\":\r\n this._validateCellDuration();\r\n this._updateOption(\"workSpace\", name, value);\r\n this._appointments.option(\"items\", []);\r\n if (this._readyToRenderAppointments) {\r\n this._updateOption(\"workSpace\", \"hoursInterval\", value / 60);\r\n this._appointments.option(\"items\", this._getAppointmentsToRepaint())\r\n }\r\n break;\r\n case \"tabIndex\":\r\n case \"focusStateEnabled\":\r\n this._updateOption(\"header\", name, value);\r\n this._updateOption(\"workSpace\", name, value);\r\n this._appointments.option(name, value);\r\n super._optionChanged(args);\r\n break;\r\n case \"width\":\r\n this._updateOption(\"header\", name, value);\r\n if (this.option(\"crossScrollingEnabled\")) {\r\n this._updateOption(\"workSpace\", \"width\", value)\r\n }\r\n this._updateOption(\"workSpace\", \"schedulerWidth\", value);\r\n super._optionChanged(args);\r\n this._dimensionChanged(null, true);\r\n break;\r\n case \"height\":\r\n super._optionChanged(args);\r\n this._dimensionChanged(null, true);\r\n this._updateOption(\"workSpace\", \"schedulerHeight\", value);\r\n break;\r\n case \"editing\":\r\n this._initEditing();\r\n var editing = this._editing;\r\n this._bringEditingModeToAppointments(editing);\r\n this.hideAppointmentTooltip();\r\n this._cleanPopup();\r\n break;\r\n case \"showAllDayPanel\":\r\n this.updateInstances();\r\n this.repaint();\r\n break;\r\n case \"showCurrentTimeIndicator\":\r\n case \"indicatorTime\":\r\n case \"indicatorUpdateInterval\":\r\n case \"shadeUntilCurrentTime\":\r\n case \"groupByDate\":\r\n this._updateOption(\"workSpace\", name, value);\r\n this.repaint();\r\n break;\r\n case \"appointmentDragging\":\r\n case \"appointmentTooltipTemplate\":\r\n case \"appointmentPopupTemplate\":\r\n case \"recurrenceEditMode\":\r\n case \"remoteFiltering\":\r\n case \"timeZone\":\r\n this.updateInstances();\r\n this.repaint();\r\n break;\r\n case \"dropDownAppointmentTemplate\":\r\n case \"appointmentCollectorTemplate\":\r\n case \"_appointmentTooltipOffset\":\r\n case \"_appointmentTooltipButtonsPosition\":\r\n case \"_appointmentTooltipOpenButtonText\":\r\n case \"_appointmentCountPerCell\":\r\n case \"_collectorOffset\":\r\n case \"_appointmentOffset\":\r\n this.repaint();\r\n break;\r\n case \"dateSerializationFormat\":\r\n case \"maxAppointmentsPerCell\":\r\n break;\r\n case \"startDateExpr\":\r\n case \"endDateExpr\":\r\n case \"startDateTimeZoneExpr\":\r\n case \"endDateTimeZoneExpr\":\r\n case \"textExpr\":\r\n case \"descriptionExpr\":\r\n case \"allDayExpr\":\r\n case \"recurrenceRuleExpr\":\r\n case \"recurrenceExceptionExpr\":\r\n case \"disabledExpr\":\r\n this._updateExpression(name, value);\r\n this.appointmentDataProvider.updateDataAccessors(this._dataAccessors);\r\n this._initAppointmentTemplate();\r\n this.repaint();\r\n break;\r\n case \"adaptivityEnabled\":\r\n this._toggleAdaptiveClass();\r\n this.repaint();\r\n break;\r\n case \"scrolling\":\r\n this.option(\"crossScrollingEnabled\", this._isHorizontalVirtualScrolling() || this.option(\"crossScrollingEnabled\"));\r\n this._updateOption(\"workSpace\", args.fullName, value);\r\n break;\r\n case \"allDayPanelMode\":\r\n this._updateOption(\"workSpace\", args.fullName, value);\r\n break;\r\n case \"renovateRender\":\r\n this._updateOption(\"workSpace\", name, value);\r\n break;\r\n case \"_draggingMode\":\r\n this._workSpace.option(\"draggingMode\", value);\r\n break;\r\n case \"toolbar\":\r\n this._header ? this._header.option(\"items\", value) : this.repaint();\r\n break;\r\n case \"loadedResources\":\r\n case \"resourceLoaderMap\":\r\n break;\r\n default:\r\n super._optionChanged(args)\r\n }\r\n }\r\n _dateOption(optionName) {\r\n var optionValue = this._getCurrentViewOption(optionName);\r\n return dateSerialization.deserializeDate(optionValue)\r\n }\r\n _getSerializationFormat(optionName) {\r\n var value = this._getCurrentViewOption(optionName);\r\n if (\"number\" === typeof value) {\r\n return \"number\"\r\n }\r\n if (!isString(value)) {\r\n return\r\n }\r\n return dateSerialization.getDateSerializationFormat(value)\r\n }\r\n _bringEditingModeToAppointments(editing) {\r\n var editingConfig = {\r\n allowDelete: editing.allowUpdating && editing.allowDeleting\r\n };\r\n if (!this._isAgenda()) {\r\n editingConfig.allowDrag = editing.allowDragging;\r\n editingConfig.allowResize = editing.allowResizing;\r\n editingConfig.allowAllDayResize = editing.allowResizing && this._supportAllDayResizing()\r\n }\r\n this._appointments.option(editingConfig);\r\n this.repaint()\r\n }\r\n _isAgenda() {\r\n return \"agenda\" === this.getLayoutManager().appointmentRenderingStrategyName\r\n }\r\n _allowDragging() {\r\n return this._editing.allowDragging && !this._isAgenda()\r\n }\r\n _allowResizing() {\r\n return this._editing.allowResizing && !this._isAgenda()\r\n }\r\n _allowAllDayResizing() {\r\n return this._editing.allowResizing && this._supportAllDayResizing()\r\n }\r\n _supportAllDayResizing() {\r\n return \"day\" !== this.currentViewType || this.currentView.intervalCount > 1\r\n }\r\n _isAllDayExpanded() {\r\n return this.option(\"showAllDayPanel\") && this.appointmentDataProvider.hasAllDayAppointments(this.filteredItems, this.preparedItems)\r\n }\r\n _getTimezoneOffsetByOption(date) {\r\n return timeZoneUtils.calculateTimezoneByValue(this.option(\"timeZone\"), date)\r\n }\r\n _filterAppointmentsByDate() {\r\n var dateRange = this._workSpace.getDateRange();\r\n var startDate = this.timeZoneCalculator.createDate(dateRange[0], {\r\n path: \"fromGrid\"\r\n });\r\n var endDate = this.timeZoneCalculator.createDate(dateRange[1], {\r\n path: \"fromGrid\"\r\n });\r\n this.appointmentDataProvider.filterByDate(startDate, endDate, this.option(\"remoteFiltering\"), this.option(\"dateSerializationFormat\"))\r\n }\r\n _reloadDataSource() {\r\n var result = new Deferred;\r\n if (this._dataSource) {\r\n this._dataSource.load().done(() => {\r\n hideLoading();\r\n this._fireContentReadyAction(result)\r\n }).fail(() => {\r\n hideLoading();\r\n result.reject()\r\n });\r\n this._dataSource.isLoading() && showLoading({\r\n container: this.$element(),\r\n position: {\r\n of: this.$element()\r\n }\r\n })\r\n } else {\r\n this._fireContentReadyAction(result)\r\n }\r\n return result.promise()\r\n }\r\n _fireContentReadyAction(result) {\r\n var _a;\r\n var contentReadyBase = super._fireContentReadyAction.bind(this);\r\n var fireContentReady = () => {\r\n contentReadyBase();\r\n null === result || void 0 === result ? void 0 : result.resolve()\r\n };\r\n if (this._workSpaceRecalculation) {\r\n null === (_a = this._workSpaceRecalculation) || void 0 === _a ? void 0 : _a.done(() => {\r\n fireContentReady()\r\n })\r\n } else {\r\n fireContentReady()\r\n }\r\n }\r\n _dimensionChanged(value) {\r\n var isForce = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : false;\r\n var isFixedHeight = \"number\" === typeof this.option(\"height\");\r\n var isFixedWidth = \"number\" === typeof this.option(\"width\");\r\n if (!this._isVisible()) {\r\n return\r\n }\r\n this._toggleSmallClass();\r\n var workspace = this.getWorkSpace();\r\n if (!this._isAgenda() && this.filteredItems && workspace) {\r\n if (isForce || !isFixedHeight || !isFixedWidth) {\r\n workspace.option(\"allDayExpanded\", this._isAllDayExpanded());\r\n workspace._dimensionChanged();\r\n var appointments = this.getLayoutManager().createAppointmentsMap(this.filteredItems);\r\n this._appointments.option(\"items\", appointments)\r\n }\r\n }\r\n this.hideAppointmentTooltip();\r\n this._appointmentPopup.triggerResize();\r\n this._appointmentPopup.updatePopupFullScreenMode()\r\n }\r\n _clean() {\r\n this._cleanPopup();\r\n super._clean()\r\n }\r\n _toggleSmallClass() {\r\n var {\r\n width: width\r\n } = getBoundingRect(this.$element().get(0));\r\n this.$element().toggleClass(WIDGET_SMALL_CLASS, width < WIDGET_SMALL_WIDTH)\r\n }\r\n _toggleAdaptiveClass() {\r\n this.$element().toggleClass(WIDGET_ADAPTIVE_CLASS, this.option(\"adaptivityEnabled\"))\r\n }\r\n _visibilityChanged(visible) {\r\n visible && this._dimensionChanged(null, true)\r\n }\r\n _dataSourceOptions() {\r\n return {\r\n paginate: false\r\n }\r\n }\r\n _initAllDayPanel() {\r\n if (\"hidden\" === this.option(\"allDayPanelMode\")) {\r\n this.option(\"showAllDayPanel\", false)\r\n }\r\n }\r\n _init() {\r\n this._initExpressions({\r\n startDate: this.option(\"startDateExpr\"),\r\n endDate: this.option(\"endDateExpr\"),\r\n startDateTimeZone: this.option(\"startDateTimeZoneExpr\"),\r\n endDateTimeZone: this.option(\"endDateTimeZoneExpr\"),\r\n allDay: this.option(\"allDayExpr\"),\r\n text: this.option(\"textExpr\"),\r\n description: this.option(\"descriptionExpr\"),\r\n recurrenceRule: this.option(\"recurrenceRuleExpr\"),\r\n recurrenceException: this.option(\"recurrenceExceptionExpr\"),\r\n disabled: this.option(\"disabledExpr\")\r\n });\r\n super._init();\r\n this._initAllDayPanel();\r\n this._initDataSource();\r\n this._customizeDataSourceLoadOptions();\r\n this.$element().addClass(WIDGET_CLASS);\r\n this._initEditing();\r\n this.updateInstances();\r\n this._initActions();\r\n this._compactAppointmentsHelper = new CompactAppointmentsHelper(this);\r\n this._asyncTemplatesTimers = [];\r\n this._dataSourceLoadedCallback = Callbacks();\r\n this._subscribes = subscribes;\r\n this.agendaResourceProcessor = new AgendaResourceProcessor(this.option(\"resources\"))\r\n }\r\n createAppointmentDataProvider() {\r\n var _a;\r\n null === (_a = this.appointmentDataProvider) || void 0 === _a ? void 0 : _a.destroy();\r\n this.appointmentDataProvider = new AppointmentDataProvider({\r\n dataSource: this._dataSource,\r\n dataAccessors: this._dataAccessors,\r\n timeZoneCalculator: this.timeZoneCalculator,\r\n dateSerializationFormat: this.option(\"dateSerializationFormat\"),\r\n resources: this.option(\"resources\"),\r\n startDayHour: this._getCurrentViewOption(\"startDayHour\"),\r\n endDayHour: this._getCurrentViewOption(\"endDayHour\"),\r\n appointmentDuration: this._getCurrentViewOption(\"cellDuration\"),\r\n allDayPanelMode: this._getCurrentViewOption(\"allDayPanelMode\"),\r\n showAllDayPanel: this.option(\"showAllDayPanel\"),\r\n getLoadedResources: () => this.option(\"loadedResources\"),\r\n getIsVirtualScrolling: () => this.isVirtualScrolling(),\r\n getSupportAllDayRow: () => this._workSpace.supportAllDayRow(),\r\n getViewType: () => this._workSpace.type,\r\n getViewDirection: () => this._workSpace.viewDirection,\r\n getDateRange: () => this._workSpace.getDateRange(),\r\n getGroupCount: () => this._workSpace._getGroupCount(),\r\n getViewDataProvider: () => this._workSpace.viewDataProvider\r\n })\r\n }\r\n updateInstances() {\r\n this._timeZoneCalculator = null;\r\n if (this.getWorkSpace()) {\r\n this.createAppointmentDataProvider()\r\n }\r\n }\r\n _customizeDataSourceLoadOptions() {\r\n var _a;\r\n null === (_a = this._dataSource) || void 0 === _a ? void 0 : _a.on(\"customizeStoreLoadOptions\", _ref => {\r\n var {\r\n storeLoadOptions: storeLoadOptions\r\n } = _ref;\r\n storeLoadOptions.startDate = this.getStartViewDate();\r\n storeLoadOptions.endDate = this.getEndViewDate()\r\n })\r\n }\r\n _initTemplates() {\r\n this._initAppointmentTemplate();\r\n this._templateManager.addDefaultTemplates({\r\n appointmentTooltip: new EmptyTemplate,\r\n dropDownAppointment: new EmptyTemplate\r\n });\r\n super._initTemplates()\r\n }\r\n _initAppointmentTemplate() {\r\n var {\r\n expr: expr\r\n } = this._dataAccessors;\r\n var createGetter = property => compileGetter(\"appointmentData.\".concat(property));\r\n var getDate = getter => data => {\r\n var value = getter(data);\r\n if (value instanceof Date) {\r\n return value.valueOf()\r\n }\r\n return value\r\n };\r\n this._templateManager.addDefaultTemplates({\r\n item: new BindableTemplate(($container, data, model) => this.getAppointmentsInstance()._renderAppointmentTemplate($container, data, model), [\"html\", \"text\", \"startDate\", \"endDate\", \"allDay\", \"description\", \"recurrenceRule\", \"recurrenceException\", \"startDateTimeZone\", \"endDateTimeZone\"], this.option(\"integrationOptions.watchMethod\"), {\r\n text: createGetter(expr.textExpr),\r\n startDate: getDate(createGetter(expr.startDateExpr)),\r\n endDate: getDate(createGetter(expr.endDateExpr)),\r\n startDateTimeZone: createGetter(expr.startDateTimeZoneExpr),\r\n endDateTimeZone: createGetter(expr.endDateTimeZoneExpr),\r\n allDay: createGetter(expr.allDayExpr),\r\n recurrenceRule: createGetter(expr.recurrenceRuleExpr)\r\n })\r\n })\r\n }\r\n _renderContent() {\r\n this._renderContentImpl()\r\n }\r\n _updatePreparedItems(items) {\r\n this.preparedItems = getPreparedDataItems(items, this._dataAccessors, this._getCurrentViewOption(\"cellDuration\"), this.timeZoneCalculator)\r\n }\r\n _dataSourceChangedHandler(result) {\r\n if (this._readyToRenderAppointments) {\r\n this._workSpaceRecalculation.done(() => {\r\n this._updatePreparedItems(result);\r\n this._renderAppointments();\r\n this.getWorkSpace().onDataSourceChanged(this.filteredItems)\r\n })\r\n }\r\n }\r\n isVirtualScrolling() {\r\n var _a;\r\n var workspace = this.getWorkSpace();\r\n if (workspace) {\r\n return workspace.isVirtualScrolling()\r\n }\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n var scrolling = this.option(\"scrolling\");\r\n return \"virtual\" === (null === scrolling || void 0 === scrolling ? void 0 : scrolling.mode) || \"virtual\" === (null === (_a = null === currentViewOptions || void 0 === currentViewOptions ? void 0 : currentViewOptions.scrolling) || void 0 === _a ? void 0 : _a.mode)\r\n }\r\n _filterAppointments() {\r\n this.filteredItems = this.appointmentDataProvider.filter(this.preparedItems)\r\n }\r\n _renderAppointments() {\r\n var workspace = this.getWorkSpace();\r\n this._filterAppointments();\r\n workspace.option(\"allDayExpanded\", this._isAllDayExpanded());\r\n var viewModel = [];\r\n if (this._isVisible()) {\r\n viewModel = this._getAppointmentsToRepaint()\r\n }\r\n if (this.option(\"isRenovatedAppointments\")) {\r\n renderAppointments({\r\n instance: this,\r\n $dateTable: this.getWorkSpace()._getDateTable(),\r\n viewModel: viewModel\r\n })\r\n } else {\r\n this._appointments.option(\"items\", viewModel)\r\n }\r\n this.appointmentDataProvider.cleanState()\r\n }\r\n _getAppointmentsToRepaint() {\r\n var layoutManager = this.getLayoutManager();\r\n var appointmentsMap = layoutManager.createAppointmentsMap(this.filteredItems);\r\n if (this.option(\"isRenovatedAppointments\")) {\r\n var appointmentTemplate = this.option(\"appointmentTemplate\") !== DEFAULT_APPOINTMENT_TEMPLATE_NAME ? this.option(\"appointmentTemplate\") : void 0;\r\n return {\r\n appointments: appointmentsMap,\r\n appointmentTemplate: appointmentTemplate\r\n }\r\n }\r\n return layoutManager.getRepaintedAppointments(appointmentsMap, this.getAppointmentsInstance().option(\"items\"))\r\n }\r\n _initExpressions(fields) {\r\n this._dataAccessors = utils.dataAccessors.create(fields, this._dataAccessors, config().forceIsoDateParsing, this.option(\"dateSerializationFormat\"));\r\n this._dataAccessors.resources = createExpressions(this.option(\"resources\"))\r\n }\r\n _updateExpression(name, value) {\r\n var exprObj = {};\r\n exprObj[name.replace(\"Expr\", \"\")] = value;\r\n this._initExpressions(exprObj)\r\n }\r\n getResourceDataAccessors() {\r\n return this._dataAccessors.resources\r\n }\r\n _initEditing() {\r\n var editing = this.option(\"editing\");\r\n this._editing = {\r\n allowAdding: !!editing,\r\n allowUpdating: !!editing,\r\n allowDeleting: !!editing,\r\n allowResizing: !!editing,\r\n allowDragging: !!editing\r\n };\r\n if (isObject(editing)) {\r\n this._editing = extend(this._editing, editing)\r\n }\r\n this._editing.allowDragging = this._editing.allowDragging && this._editing.allowUpdating;\r\n this._editing.allowResizing = this._editing.allowResizing && this._editing.allowUpdating;\r\n this.$element().toggleClass(WIDGET_READONLY_CLASS, this._isReadOnly())\r\n }\r\n _isReadOnly() {\r\n var result = true;\r\n var editing = this._editing;\r\n for (var prop in editing) {\r\n if (Object.prototype.hasOwnProperty.call(editing, prop)) {\r\n result = result && !editing[prop]\r\n }\r\n }\r\n return result\r\n }\r\n _dispose() {\r\n var _a;\r\n this._appointmentTooltip && this._appointmentTooltip.dispose();\r\n null === (_a = this._recurrenceDialog) || void 0 === _a ? void 0 : _a.hide(RECURRENCE_EDITING_MODE.CANCEL);\r\n this.hideAppointmentPopup();\r\n this.hideAppointmentTooltip();\r\n this._asyncTemplatesTimers.forEach(clearTimeout);\r\n this._asyncTemplatesTimers = [];\r\n super._dispose()\r\n }\r\n _initActions() {\r\n this._actions = {\r\n onAppointmentAdding: this._createActionByOption(StoreEventNames.ADDING),\r\n onAppointmentAdded: this._createActionByOption(StoreEventNames.ADDED),\r\n onAppointmentUpdating: this._createActionByOption(StoreEventNames.UPDATING),\r\n onAppointmentUpdated: this._createActionByOption(StoreEventNames.UPDATED),\r\n onAppointmentDeleting: this._createActionByOption(StoreEventNames.DELETING),\r\n onAppointmentDeleted: this._createActionByOption(StoreEventNames.DELETED),\r\n onAppointmentFormOpening: this._createActionByOption(\"onAppointmentFormOpening\"),\r\n onAppointmentTooltipShowing: this._createActionByOption(\"onAppointmentTooltipShowing\")\r\n }\r\n }\r\n _getAppointmentRenderedAction() {\r\n return this._createActionByOption(\"onAppointmentRendered\", {\r\n excludeValidators: [\"disabled\", \"readOnly\"]\r\n })\r\n }\r\n _renderFocusTarget() {\r\n return noop()\r\n }\r\n _initMarkup() {\r\n super._initMarkup();\r\n this._validateDayHours();\r\n this._validateCellDuration();\r\n this._renderMainContainer();\r\n this._renderHeader();\r\n this._layoutManager = new AppointmentLayoutManager(this);\r\n this._appointments = this._createComponent(\"<div>\", AppointmentCollection, this._appointmentsConfig());\r\n this._appointments.option(\"itemTemplate\", this._getAppointmentTemplate(\"appointmentTemplate\"));\r\n this._appointmentTooltip = new(this.option(\"adaptivityEnabled\") ? MobileTooltipStrategy : DesktopTooltipStrategy)(this._getAppointmentTooltipOptions());\r\n this._createAppointmentPopupForm();\r\n if (this._isDataSourceLoaded() || this._isDataSourceLoading()) {\r\n this._initMarkupCore(this.option(\"loadedResources\"));\r\n this._dataSourceChangedHandler(this._dataSource.items());\r\n this._fireContentReadyAction()\r\n } else {\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n loadResources(groups, this.option(\"resources\"), this.option(\"resourceLoaderMap\")).done(resources => {\r\n this.option(\"loadedResources\", resources);\r\n this._initMarkupCore(resources);\r\n this._reloadDataSource()\r\n })\r\n }\r\n }\r\n _createAppointmentPopupForm() {\r\n var _a, _b;\r\n if (this._appointmentForm) {\r\n null === (_a = this._appointmentForm.form) || void 0 === _a ? void 0 : _a.dispose()\r\n }\r\n this._appointmentForm = this.createAppointmentForm();\r\n null === (_b = this._appointmentPopup) || void 0 === _b ? void 0 : _b.dispose();\r\n this._appointmentPopup = this.createAppointmentPopup(this._appointmentForm)\r\n }\r\n _renderMainContainer() {\r\n this._mainContainer = $(\"<div>\").addClass(\"dx-scheduler-container\");\r\n this.$element().append(this._mainContainer)\r\n }\r\n createAppointmentForm() {\r\n var scheduler = {\r\n createResourceEditorModel: () => _createResourceEditorModel(this.option(\"resources\"), this.option(\"loadedResources\")),\r\n getDataAccessors: () => this._dataAccessors,\r\n createComponent: (element, component, options) => this._createComponent(element, component, options),\r\n getEditingConfig: () => this._editing,\r\n getFirstDayOfWeek: () => this.option(\"firstDayOfWeek\"),\r\n getStartDayHour: () => this.option(\"startDayHour\"),\r\n getCalculatedEndDate: date => this._workSpace.calculateEndDate(date),\r\n getTimeZoneCalculator: () => this.timeZoneCalculator\r\n };\r\n return new AppointmentForm(scheduler)\r\n }\r\n createAppointmentPopup(form) {\r\n var scheduler = {\r\n getElement: () => this.$element(),\r\n createComponent: (element, component, options) => this._createComponent(element, component, options),\r\n focus: () => this.focus(),\r\n getResources: () => this.option(\"resources\"),\r\n getEditingConfig: () => this._editing,\r\n getTimeZoneCalculator: () => this.timeZoneCalculator,\r\n getDataAccessors: () => this._dataAccessors,\r\n getAppointmentFormOpening: () => this._actions.onAppointmentFormOpening,\r\n processActionResult: (arg, canceled) => this._processActionResult(arg, canceled),\r\n addAppointment: appointment => this.addAppointment(appointment),\r\n updateAppointment: (sourceAppointment, updatedAppointment) => this.updateAppointment(sourceAppointment, updatedAppointment),\r\n updateScrollPosition: (startDate, resourceItem, inAllDayRow) => {\r\n this._workSpace.updateScrollPosition(startDate, resourceItem, inAllDayRow)\r\n }\r\n };\r\n return new AppointmentPopup(scheduler, form)\r\n }\r\n _getAppointmentTooltipOptions() {\r\n return {\r\n createComponent: this._createComponent.bind(this),\r\n container: this.$element(),\r\n getScrollableContainer: this.getWorkSpaceScrollableContainer.bind(this),\r\n addDefaultTemplates: this._templateManager.addDefaultTemplates.bind(this._templateManager),\r\n getAppointmentTemplate: this._getAppointmentTemplate.bind(this),\r\n showAppointmentPopup: this.showAppointmentPopup.bind(this),\r\n checkAndDeleteAppointment: this.checkAndDeleteAppointment.bind(this),\r\n isAppointmentInAllDayPanel: this.isAppointmentInAllDayPanel.bind(this),\r\n createFormattedDateText: (appointment, targetedAppointment, format) => this.fire(\"getTextAndFormatDate\", appointment, targetedAppointment, format),\r\n getAppointmentDisabled: appointment => createAppointmentAdapter(appointment, this._dataAccessors, this.timeZoneCalculator).disabled,\r\n onItemContextMenu: this._createActionByOption(\"onAppointmentContextMenu\"),\r\n createEventArgs: this._createEventArgs.bind(this)\r\n }\r\n }\r\n _createEventArgs(e) {\r\n var config = {\r\n itemData: e.itemData.appointment,\r\n itemElement: e.itemElement,\r\n targetedAppointment: e.itemData.targetedAppointment\r\n };\r\n return extend({}, this.fire(\"mapAppointmentFields\", config), {\r\n component: e.component,\r\n element: e.element,\r\n event: e.event,\r\n model: e.model\r\n })\r\n }\r\n checkAndDeleteAppointment(appointment, targetedAppointment) {\r\n var targetedAdapter = createAppointmentAdapter(targetedAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n var deletingOptions = this.fireOnAppointmentDeleting(appointment, targetedAdapter);\r\n this._checkRecurringAppointment(appointment, targetedAppointment, targetedAdapter.startDate, () => {\r\n this.processDeleteAppointment(appointment, deletingOptions)\r\n }, true)\r\n }\r\n _getExtraAppointmentTooltipOptions() {\r\n return {\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n editing: this.option(\"editing\"),\r\n offset: this.option(\"_appointmentTooltipOffset\")\r\n }\r\n }\r\n isAppointmentInAllDayPanel(appointmentData) {\r\n var workSpace = this._workSpace;\r\n var itTakesAllDay = this.appointmentTakesAllDay(appointmentData);\r\n return itTakesAllDay && workSpace.supportAllDayRow() && workSpace.option(\"showAllDayPanel\")\r\n }\r\n _initMarkupCore(resources) {\r\n this._readyToRenderAppointments = hasWindow();\r\n this._workSpace && this._cleanWorkspace();\r\n this._renderWorkSpace(resources);\r\n this._appointments.option({\r\n fixedContainer: this._workSpace.getFixedContainer(),\r\n allDayContainer: this._workSpace.getAllDayContainer()\r\n });\r\n this._waitAsyncTemplate(() => {\r\n var _a;\r\n return null === (_a = this._workSpaceRecalculation) || void 0 === _a ? void 0 : _a.resolve()\r\n });\r\n this.createAppointmentDataProvider();\r\n this._filterAppointmentsByDate();\r\n this._validateKeyFieldIfAgendaExist()\r\n }\r\n _isDataSourceLoaded() {\r\n return this._dataSource && this._dataSource.isLoaded()\r\n }\r\n _render() {\r\n var _a;\r\n this._toggleSmallClass();\r\n this._toggleAdaptiveClass();\r\n null === (_a = this.getWorkSpace()) || void 0 === _a ? void 0 : _a.updateHeaderEmptyCellWidth();\r\n super._render()\r\n }\r\n _renderHeader() {\r\n if (0 !== this.option(\"toolbar\").length) {\r\n var $header = $(\"<div>\").appendTo(this._mainContainer);\r\n this._header = this._createComponent($header, SchedulerHeader, this._headerConfig())\r\n }\r\n }\r\n _headerConfig() {\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n var countConfig = this._getViewCountConfig();\r\n var result = extend({\r\n firstDayOfWeek: this.getFirstDayOfWeek(),\r\n currentView: this.option(\"currentView\"),\r\n isAdaptive: this.option(\"adaptivityEnabled\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n useDropDownViewSwitcher: this.option(\"useDropDownViewSwitcher\"),\r\n customizeDateNavigatorText: this.option(\"customizeDateNavigatorText\"),\r\n agendaDuration: currentViewOptions.agendaDuration || DEFAULT_AGENDA_DURATION\r\n }, currentViewOptions);\r\n result.intervalCount = countConfig.intervalCount;\r\n result.views = this.option(\"views\");\r\n result.min = new Date(this._dateOption(\"min\"));\r\n result.max = new Date(this._dateOption(\"max\"));\r\n result.currentDate = dateUtils.trimTime(new Date(this._dateOption(\"currentDate\")));\r\n result.onCurrentViewChange = name => {\r\n this.option(\"currentView\", name)\r\n };\r\n result.onCurrentDateChange = date => {\r\n this.option(\"currentDate\", date)\r\n };\r\n result.items = this.option(\"toolbar\");\r\n result.startViewDate = this.getStartViewDate();\r\n result.todayDate = () => {\r\n var result = this.timeZoneCalculator.createDate(new Date, {\r\n path: \"toGrid\"\r\n });\r\n return result\r\n };\r\n return result\r\n }\r\n _appointmentsConfig() {\r\n var config = {\r\n getResources: () => this.option(\"resources\"),\r\n getResourceDataAccessors: this.getResourceDataAccessors.bind(this),\r\n getAgendaResourceProcessor: () => this.agendaResourceProcessor,\r\n getAppointmentColor: this.createGetAppointmentColor(),\r\n getAppointmentDataProvider: () => this.appointmentDataProvider,\r\n dataAccessors: this._dataAccessors,\r\n observer: this,\r\n onItemRendered: this._getAppointmentRenderedAction(),\r\n onItemClick: this._createActionByOption(\"onAppointmentClick\"),\r\n onItemContextMenu: this._createActionByOption(\"onAppointmentContextMenu\"),\r\n onAppointmentDblClick: this._createActionByOption(\"onAppointmentDblClick\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n allowDrag: this._allowDragging(),\r\n allowDelete: this._editing.allowUpdating && this._editing.allowDeleting,\r\n allowResize: this._allowResizing(),\r\n allowAllDayResize: this._allowAllDayResizing(),\r\n rtlEnabled: this.option(\"rtlEnabled\"),\r\n currentView: this.currentView,\r\n groups: this._getCurrentViewOption(\"groups\"),\r\n isRenovatedAppointments: this.option(\"isRenovatedAppointments\"),\r\n timeZoneCalculator: this.timeZoneCalculator,\r\n getResizableStep: () => this._workSpace ? this._workSpace.positionHelper.getResizableStep() : 0,\r\n getDOMElementsMetaData: () => {\r\n var _a;\r\n return null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.getDOMElementsMetaData()\r\n },\r\n getViewDataProvider: () => {\r\n var _a;\r\n return null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.viewDataProvider\r\n },\r\n isVerticalViewDirection: () => \"vertical\" === this.getRenderingStrategyInstance().getDirection(),\r\n isVerticalGroupedWorkSpace: () => this._workSpace._isVerticalGroupedWorkSpace(),\r\n isDateAndTimeView: () => _isDateAndTimeView(this._workSpace.type),\r\n onContentReady: () => {\r\n var _a;\r\n null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.option(\"allDayExpanded\", this._isAllDayExpanded())\r\n }\r\n };\r\n return config\r\n }\r\n getCollectorOffset() {\r\n if (this._workSpace.needApplyCollectorOffset() && !this.option(\"adaptivityEnabled\")) {\r\n return this.option(\"_collectorOffset\")\r\n }\r\n return 0\r\n }\r\n getAppointmentDurationInMinutes() {\r\n return this._getCurrentViewOption(\"cellDuration\")\r\n }\r\n _getCurrentViewType() {\r\n return this.currentViewType\r\n }\r\n _renderWorkSpace(groups) {\r\n var _a;\r\n this._readyToRenderAppointments && this._toggleSmallClass();\r\n var $workSpace = $(\"<div>\").appendTo(this._mainContainer);\r\n var countConfig = this._getViewCountConfig();\r\n var workSpaceComponent = VIEWS_CONFIG[this._getCurrentViewType()].workSpace;\r\n var workSpaceConfig = this._workSpaceConfig(groups, countConfig);\r\n this._workSpace = this._createComponent($workSpace, workSpaceComponent, workSpaceConfig);\r\n this._allowDragging() && this._workSpace.initDragBehavior(this, this._all);\r\n this._workSpace._attachTablesEvents();\r\n this._workSpace.getWorkArea().append(this._appointments.$element());\r\n this._recalculateWorkspace();\r\n countConfig.startDate && (null === (_a = this._header) || void 0 === _a ? void 0 : _a.option(\"currentDate\", this._workSpace._getHeaderDate()));\r\n this._appointments.option(\"_collectorOffset\", this.getCollectorOffset())\r\n }\r\n _getViewCountConfig() {\r\n var currentView = this.option(\"currentView\");\r\n var view = this._getViewByName(currentView);\r\n var viewCount = view && view.intervalCount || 1;\r\n var startDate = view && view.startDate || null;\r\n return {\r\n intervalCount: viewCount,\r\n startDate: startDate\r\n }\r\n }\r\n _getViewByName(name) {\r\n var views = this.option(\"views\");\r\n for (var i = 0; i < views.length; i++) {\r\n if (views[i].name === name || views[i].type === name || views[i] === name) {\r\n return views[i]\r\n }\r\n }\r\n }\r\n _recalculateWorkspace() {\r\n this._workSpaceRecalculation = new Deferred;\r\n this._waitAsyncTemplate(() => {\r\n triggerResizeEvent(this._workSpace.$element());\r\n this._workSpace._refreshDateTimeIndication()\r\n })\r\n }\r\n _workSpaceConfig(groups, countConfig) {\r\n var _a;\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n var scrolling = this.option(\"scrolling\");\r\n var isVirtualScrolling = \"virtual\" === scrolling.mode || \"virtual\" === (null === (_a = currentViewOptions.scrolling) || void 0 === _a ? void 0 : _a.mode);\r\n var horizontalVirtualScrollingAllowed = isVirtualScrolling && (!isDefined(scrolling.orientation) || [\"horizontal\", \"both\"].filter(item => {\r\n var _a;\r\n return scrolling.orientation === item || (null === (_a = currentViewOptions.scrolling) || void 0 === _a ? void 0 : _a.orientation) === item\r\n }).length > 0);\r\n var crossScrollingEnabled = this.option(\"crossScrollingEnabled\") || horizontalVirtualScrollingAllowed || isTimelineView(this.currentViewType);\r\n var result = extend({\r\n resources: this.option(\"resources\"),\r\n loadedResources: this.option(\"loadedResources\"),\r\n getFilteredItems: () => this.filteredItems,\r\n getResourceDataAccessors: this.getResourceDataAccessors.bind(this),\r\n noDataText: this.option(\"noDataText\"),\r\n firstDayOfWeek: this.option(\"firstDayOfWeek\"),\r\n startDayHour: this.option(\"startDayHour\"),\r\n endDayHour: this.option(\"endDayHour\"),\r\n tabIndex: this.option(\"tabIndex\"),\r\n accessKey: this.option(\"accessKey\"),\r\n focusStateEnabled: this.option(\"focusStateEnabled\"),\r\n cellDuration: this.option(\"cellDuration\"),\r\n showAllDayPanel: this.option(\"showAllDayPanel\"),\r\n showCurrentTimeIndicator: this.option(\"showCurrentTimeIndicator\"),\r\n indicatorTime: this.option(\"indicatorTime\"),\r\n indicatorUpdateInterval: this.option(\"indicatorUpdateInterval\"),\r\n shadeUntilCurrentTime: this.option(\"shadeUntilCurrentTime\"),\r\n allDayExpanded: this._appointments.option(\"items\"),\r\n crossScrollingEnabled: crossScrollingEnabled,\r\n dataCellTemplate: this.option(\"dataCellTemplate\"),\r\n timeCellTemplate: this.option(\"timeCellTemplate\"),\r\n resourceCellTemplate: this.option(\"resourceCellTemplate\"),\r\n dateCellTemplate: this.option(\"dateCellTemplate\"),\r\n allowMultipleCellSelection: this.option(\"allowMultipleCellSelection\"),\r\n selectedCellData: this.option(\"selectedCellData\"),\r\n onSelectionChanged: args => {\r\n this.option(\"selectedCellData\", args.selectedCellData)\r\n },\r\n groupByDate: this._getCurrentViewOption(\"groupByDate\"),\r\n scrolling: scrolling,\r\n draggingMode: this.option(\"_draggingMode\"),\r\n timeZoneCalculator: this.timeZoneCalculator,\r\n schedulerHeight: this.option(\"height\"),\r\n schedulerWidth: this.option(\"width\"),\r\n allDayPanelMode: this.option(\"allDayPanelMode\"),\r\n onSelectedCellsClick: this.showAddAppointmentPopup.bind(this),\r\n onRenderAppointments: this._renderAppointments.bind(this),\r\n onShowAllDayPanel: value => this.option(\"showAllDayPanel\", value),\r\n getHeaderHeight: () => utils.DOM.getHeaderHeight(this._header),\r\n onScrollEnd: () => this._appointments.updateResizableArea(),\r\n renovateRender: this._isRenovatedRender(isVirtualScrolling),\r\n isRenovatedAppointments: this.option(\"isRenovatedAppointments\")\r\n }, currentViewOptions);\r\n result.observer = this;\r\n result.intervalCount = countConfig.intervalCount;\r\n result.startDate = countConfig.startDate;\r\n result.groups = groups;\r\n result.onCellClick = this._createActionByOption(\"onCellClick\");\r\n result.onCellContextMenu = this._createActionByOption(\"onCellContextMenu\");\r\n result.currentDate = dateUtils.trimTime(new Date(this._dateOption(\"currentDate\")));\r\n result.hoursInterval = result.cellDuration / 60;\r\n result.allDayExpanded = false;\r\n result.dataCellTemplate = result.dataCellTemplate ? this._getTemplate(result.dataCellTemplate) : null;\r\n result.timeCellTemplate = result.timeCellTemplate ? this._getTemplate(result.timeCellTemplate) : null;\r\n result.resourceCellTemplate = result.resourceCellTemplate ? this._getTemplate(result.resourceCellTemplate) : null;\r\n result.dateCellTemplate = result.dateCellTemplate ? this._getTemplate(result.dateCellTemplate) : null;\r\n result.getAppointmentDataProvider = () => this.appointmentDataProvider;\r\n return result\r\n }\r\n _isRenovatedRender(isVirtualScrolling) {\r\n return this.option(\"renovateRender\") && hasWindow() || isVirtualScrolling\r\n }\r\n _waitAsyncTemplate(callback) {\r\n if (this._options.silent(\"templatesRenderAsynchronously\")) {\r\n var timer = setTimeout(() => {\r\n callback();\r\n clearTimeout(timer)\r\n });\r\n this._asyncTemplatesTimers.push(timer)\r\n } else {\r\n callback()\r\n }\r\n }\r\n _getCurrentViewOptions() {\r\n return this.currentView\r\n }\r\n _getCurrentViewOption(optionName) {\r\n if (this.currentView && void 0 !== this.currentView[optionName]) {\r\n return this.currentView[optionName]\r\n }\r\n return this.option(optionName)\r\n }\r\n _getAppointmentTemplate(optionName) {\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n if (currentViewOptions && currentViewOptions[optionName]) {\r\n return this._getTemplate(currentViewOptions[optionName])\r\n }\r\n return this._getTemplateByOption(optionName)\r\n }\r\n _updateOption(viewName, optionName, value) {\r\n var currentViewOptions = this._getCurrentViewOptions();\r\n if (!currentViewOptions || !isDefined(currentViewOptions[optionName])) {\r\n this[\"_\".concat(viewName)].option(optionName, value)\r\n }\r\n }\r\n _refreshWorkSpace(groups) {\r\n this._cleanWorkspace();\r\n delete this._workSpace;\r\n this._renderWorkSpace(groups);\r\n if (this._readyToRenderAppointments) {\r\n this._appointments.option({\r\n fixedContainer: this._workSpace.getFixedContainer(),\r\n allDayContainer: this._workSpace.getAllDayContainer()\r\n });\r\n this._waitAsyncTemplate(() => this._workSpaceRecalculation.resolve())\r\n }\r\n }\r\n _cleanWorkspace() {\r\n this._appointments.$element().detach();\r\n this._workSpace._dispose();\r\n this._workSpace.$element().remove();\r\n this.option(\"selectedCellData\", [])\r\n }\r\n getWorkSpaceScrollable() {\r\n return this._workSpace.getScrollable()\r\n }\r\n getWorkSpaceScrollableContainer() {\r\n return this._workSpace.getScrollableContainer()\r\n }\r\n getWorkSpace() {\r\n return this._workSpace\r\n }\r\n getHeader() {\r\n return this._header\r\n }\r\n _cleanPopup() {\r\n var _a;\r\n null === (_a = this._appointmentPopup) || void 0 === _a ? void 0 : _a.dispose()\r\n }\r\n _checkRecurringAppointment(rawAppointment, singleAppointment, exceptionDate, callback, isDeleted, isPopupEditing, dragEvent, recurrenceEditMode) {\r\n var recurrenceRule = ExpressionUtils.getField(this._dataAccessors, \"recurrenceRule\", rawAppointment);\r\n if (!getRecurrenceProcessor().evalRecurrenceRule(recurrenceRule).isValid || !this._editing.allowUpdating) {\r\n callback();\r\n return\r\n }\r\n var editMode = recurrenceEditMode || this.option(\"recurrenceEditMode\");\r\n switch (editMode) {\r\n case \"series\":\r\n callback();\r\n break;\r\n case \"occurrence\":\r\n this._excludeAppointmentFromSeries(rawAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent);\r\n break;\r\n default:\r\n if (dragEvent) {\r\n dragEvent.cancel = new Deferred\r\n }\r\n this._showRecurrenceChangeConfirm(isDeleted).done(editingMode => {\r\n editingMode === RECURRENCE_EDITING_MODE.SERIES && callback();\r\n editingMode === RECURRENCE_EDITING_MODE.OCCURENCE && this._excludeAppointmentFromSeries(rawAppointment, singleAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent)\r\n }).fail(() => this._appointments.moveAppointmentBack(dragEvent))\r\n }\r\n }\r\n _excludeAppointmentFromSeries(rawAppointment, newRawAppointment, exceptionDate, isDeleted, isPopupEditing, dragEvent) {\r\n var appointment = excludeFromRecurrence(rawAppointment, exceptionDate, this._dataAccessors, this._timeZoneCalculator);\r\n var singleRawAppointment = _extends({}, newRawAppointment);\r\n delete singleRawAppointment[this._dataAccessors.expr.recurrenceExceptionExpr];\r\n delete singleRawAppointment[this._dataAccessors.expr.recurrenceRuleExpr];\r\n var keyPropertyName = this.appointmentDataProvider.keyName;\r\n delete singleRawAppointment[keyPropertyName];\r\n var canCreateNewAppointment = !isDeleted && !isPopupEditing;\r\n if (canCreateNewAppointment) {\r\n this.addAppointment(singleRawAppointment)\r\n }\r\n if (isPopupEditing) {\r\n this._appointmentPopup.show(singleRawAppointment, {\r\n isToolbarVisible: true,\r\n action: ACTION_TO_APPOINTMENT.EXCLUDE_FROM_SERIES,\r\n excludeInfo: {\r\n sourceAppointment: rawAppointment,\r\n updatedAppointment: appointment.source()\r\n }\r\n });\r\n this._editAppointmentData = rawAppointment\r\n } else {\r\n this._updateAppointment(rawAppointment, appointment.source(), () => {\r\n this._appointments.moveAppointmentBack(dragEvent)\r\n }, dragEvent)\r\n }\r\n }\r\n _createRecurrenceException(appointment, exceptionDate) {\r\n var result = [];\r\n if (appointment.recurrenceException) {\r\n result.push(appointment.recurrenceException)\r\n }\r\n result.push(this._getSerializedDate(exceptionDate, appointment.startDate, appointment.allDay));\r\n return result.join()\r\n }\r\n _getSerializedDate(date, startDate, isAllDay) {\r\n isAllDay && date.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds(), startDate.getMilliseconds());\r\n return dateSerialization.serializeDate(date, UTC_FULL_DATE_FORMAT)\r\n }\r\n _showRecurrenceChangeConfirm(isDeleted) {\r\n var message = messageLocalization.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteMessage\" : \"dxScheduler-confirmRecurrenceEditMessage\");\r\n var seriesText = messageLocalization.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteSeries\" : \"dxScheduler-confirmRecurrenceEditSeries\");\r\n var occurrenceText = messageLocalization.format(isDeleted ? \"dxScheduler-confirmRecurrenceDeleteOccurrence\" : \"dxScheduler-confirmRecurrenceEditOccurrence\");\r\n this._recurrenceDialog = customDialog({\r\n messageHtml: message,\r\n showCloseButton: true,\r\n showTitle: true,\r\n buttons: [{\r\n text: seriesText,\r\n onClick: () => RECURRENCE_EDITING_MODE.SERIES\r\n }, {\r\n text: occurrenceText,\r\n onClick: () => RECURRENCE_EDITING_MODE.OCCURENCE\r\n }],\r\n popupOptions: {\r\n wrapperAttr: {\r\n class: \"dx-dialog\"\r\n }\r\n }\r\n });\r\n return this._recurrenceDialog.show()\r\n }\r\n _getUpdatedData(rawAppointment) {\r\n var getConvertedFromGrid = date => date ? this.timeZoneCalculator.createDate(date, {\r\n path: \"fromGrid\"\r\n }) : void 0;\r\n var isValidDate = date => !isNaN(new Date(date).getTime());\r\n var targetCell = this.getTargetCellData();\r\n var appointment = createAppointmentAdapter(rawAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n var cellStartDate = getConvertedFromGrid(targetCell.startDate);\r\n var cellEndDate = getConvertedFromGrid(targetCell.endDate);\r\n var appointmentStartDate = new Date(appointment.startDate);\r\n var appointmentEndDate = new Date(appointment.endDate);\r\n var resultedStartDate = cellStartDate || appointmentStartDate;\r\n if (!isValidDate(appointmentStartDate)) {\r\n appointmentStartDate = resultedStartDate\r\n }\r\n if (!isValidDate(appointmentEndDate)) {\r\n appointmentEndDate = cellEndDate\r\n }\r\n var duration = appointmentEndDate.getTime() - appointmentStartDate.getTime();\r\n var isKeepAppointmentHours = this._workSpace.keepOriginalHours() && isValidDate(appointment.startDate) && isValidDate(cellStartDate);\r\n if (isKeepAppointmentHours) {\r\n var {\r\n trimTime: trimTime\r\n } = dateUtils;\r\n var startDate = this.timeZoneCalculator.createDate(appointment.startDate, {\r\n path: \"toGrid\"\r\n });\r\n var timeInMs = startDate.getTime() - trimTime(startDate).getTime();\r\n resultedStartDate = new Date(trimTime(targetCell.startDate).getTime() + timeInMs);\r\n resultedStartDate = this.timeZoneCalculator.createDate(resultedStartDate, {\r\n path: \"fromGrid\"\r\n })\r\n }\r\n var result = createAppointmentAdapter({}, this._dataAccessors, this.timeZoneCalculator);\r\n if (void 0 !== targetCell.allDay) {\r\n result.allDay = targetCell.allDay\r\n }\r\n result.startDate = resultedStartDate;\r\n var resultedEndDate = new Date(resultedStartDate.getTime() + duration);\r\n if (this.appointmentTakesAllDay(rawAppointment) && !result.allDay && this._workSpace.supportAllDayRow()) {\r\n resultedEndDate = this._workSpace.calculateEndDate(resultedStartDate)\r\n }\r\n if (appointment.allDay && !this._workSpace.supportAllDayRow() && !this._workSpace.keepOriginalHours()) {\r\n var dateCopy = new Date(resultedStartDate);\r\n dateCopy.setHours(0);\r\n resultedEndDate = new Date(dateCopy.getTime() + duration);\r\n if (0 !== resultedEndDate.getHours()) {\r\n resultedEndDate.setHours(this._getCurrentViewOption(\"endDayHour\"))\r\n }\r\n }\r\n var timeZoneOffset = timeZoneUtils.getTimezoneOffsetChangeInMs(appointmentStartDate, appointmentEndDate, resultedStartDate, resultedEndDate);\r\n result.endDate = new Date(resultedEndDate.getTime() - timeZoneOffset);\r\n var rawResult = result.source();\r\n setResourceToAppointment(this.option(\"resources\"), this.getResourceDataAccessors(), rawResult, targetCell.groups);\r\n return rawResult\r\n }\r\n getTargetedAppointment(appointment, element) {\r\n var settings = utils.dataAccessors.getAppointmentSettings(element);\r\n var info = utils.dataAccessors.getAppointmentInfo(element);\r\n var appointmentIndex = $(element).data(this._appointments._itemIndexKey());\r\n var adapter = createAppointmentAdapter(appointment, this._dataAccessors, this.timeZoneCalculator);\r\n var targetedAdapter = adapter.clone();\r\n if (this._isAgenda() && adapter.isRecurrent) {\r\n var {\r\n agendaSettings: agendaSettings\r\n } = settings;\r\n targetedAdapter.startDate = ExpressionUtils.getField(this._dataAccessors, \"startDate\", agendaSettings);\r\n targetedAdapter.endDate = ExpressionUtils.getField(this._dataAccessors, \"endDate\", agendaSettings)\r\n } else if (settings) {\r\n targetedAdapter.startDate = info ? info.sourceAppointment.startDate : adapter.startDate;\r\n targetedAdapter.endDate = info ? info.sourceAppointment.endDate : adapter.endDate\r\n }\r\n var rawTargetedAppointment = targetedAdapter.source();\r\n if (element) {\r\n this.setTargetedAppointmentResources(rawTargetedAppointment, element, appointmentIndex)\r\n }\r\n if (info) {\r\n rawTargetedAppointment.displayStartDate = new Date(info.appointment.startDate);\r\n rawTargetedAppointment.displayEndDate = new Date(info.appointment.endDate)\r\n }\r\n return rawTargetedAppointment\r\n }\r\n subscribe(subject, action) {\r\n this._subscribes[subject] = subscribes[subject] = action\r\n }\r\n fire(subject) {\r\n var callback = this._subscribes[subject];\r\n var args = Array.prototype.slice.call(arguments);\r\n if (!isFunction(callback)) {\r\n throw errors.Error(\"E1031\", subject)\r\n }\r\n return callback.apply(this, args.slice(1))\r\n }\r\n getTargetCellData() {\r\n return this._workSpace.getDataByDroppableCell()\r\n }\r\n _updateAppointment(target, rawAppointment, onUpdatePrevented, dragEvent) {\r\n var updatingOptions = {\r\n newData: rawAppointment,\r\n oldData: extend({}, target),\r\n cancel: false\r\n };\r\n var performFailAction = function(err) {\r\n if (onUpdatePrevented) {\r\n onUpdatePrevented.call(this)\r\n }\r\n if (err && \"Error\" === err.name) {\r\n throw err\r\n }\r\n }.bind(this);\r\n this._actions[StoreEventNames.UPDATING](updatingOptions);\r\n if (dragEvent && !isDeferred(dragEvent.cancel)) {\r\n dragEvent.cancel = new Deferred\r\n }\r\n return this._processActionResult(updatingOptions, (function(canceled) {\r\n var deferred = new Deferred;\r\n if (!canceled) {\r\n this._expandAllDayPanel(rawAppointment);\r\n try {\r\n deferred = this.appointmentDataProvider.update(target, rawAppointment).done(() => {\r\n dragEvent && dragEvent.cancel.resolve(false)\r\n }).always(storeAppointment => this._onDataPromiseCompleted(StoreEventNames.UPDATED, storeAppointment)).fail(() => performFailAction())\r\n } catch (err) {\r\n performFailAction(err);\r\n deferred.resolve()\r\n }\r\n } else {\r\n performFailAction();\r\n deferred.resolve()\r\n }\r\n return deferred.promise()\r\n }))\r\n }\r\n _processActionResult(actionOptions, callback) {\r\n var deferred = new Deferred;\r\n var resolveCallback = callbackResult => {\r\n when(fromPromise(callbackResult)).always(deferred.resolve)\r\n };\r\n if (isPromise(actionOptions.cancel)) {\r\n when(fromPromise(actionOptions.cancel)).always(cancel => {\r\n if (!isDefined(cancel)) {\r\n cancel = \"rejected\" === actionOptions.cancel.state()\r\n }\r\n resolveCallback(callback.call(this, cancel))\r\n })\r\n } else {\r\n resolveCallback(callback.call(this, actionOptions.cancel))\r\n }\r\n return deferred.promise()\r\n }\r\n _expandAllDayPanel(appointment) {\r\n if (!this._isAllDayExpanded() && this.appointmentTakesAllDay(appointment)) {\r\n this._workSpace.option(\"allDayExpanded\", true)\r\n }\r\n }\r\n _onDataPromiseCompleted(handlerName, storeAppointment, appointment) {\r\n var args = {\r\n appointmentData: appointment || storeAppointment\r\n };\r\n if (storeAppointment instanceof Error) {\r\n args.error = storeAppointment\r\n } else {\r\n this._appointmentPopup.visible && this._appointmentPopup.hide()\r\n }\r\n this._actions[handlerName](args);\r\n this._fireContentReadyAction()\r\n }\r\n getAppointmentsInstance() {\r\n return this._appointments\r\n }\r\n getLayoutManager() {\r\n return this._layoutManager\r\n }\r\n getRenderingStrategyInstance() {\r\n return this.getLayoutManager().getRenderingStrategyInstance()\r\n }\r\n getActions() {\r\n return this._actions\r\n }\r\n appointmentTakesAllDay(rawAppointment) {\r\n var appointment = createAppointmentAdapter(rawAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n return getAppointmentTakesAllDay(appointment, this._getCurrentViewOption(\"startDayHour\"), this._getCurrentViewOption(\"endDayHour\"), this._getCurrentViewOption(\"allDayPanelMode\"))\r\n }\r\n dayHasAppointment(day, rawAppointment, trimTime) {\r\n var getConvertedToTimeZone = date => this.timeZoneCalculator.createDate(date, {\r\n path: \"toGrid\"\r\n });\r\n var appointment = createAppointmentAdapter(rawAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n var startDate = new Date(appointment.startDate);\r\n var endDate = new Date(appointment.endDate);\r\n startDate = getConvertedToTimeZone(startDate);\r\n endDate = getConvertedToTimeZone(endDate);\r\n if (day.getTime() === endDate.getTime()) {\r\n return startDate.getTime() === endDate.getTime()\r\n }\r\n if (trimTime) {\r\n day = dateUtils.trimTime(day);\r\n startDate = dateUtils.trimTime(startDate);\r\n endDate = dateUtils.trimTime(endDate)\r\n }\r\n var dayTimeStamp = day.getTime();\r\n var startDateTimeStamp = startDate.getTime();\r\n var endDateTimeStamp = endDate.getTime();\r\n return startDateTimeStamp <= dayTimeStamp && dayTimeStamp <= endDateTimeStamp\r\n }\r\n setTargetedAppointmentResources(rawAppointment, element, appointmentIndex) {\r\n var groups = this._getCurrentViewOption(\"groups\");\r\n if (null === groups || void 0 === groups ? void 0 : groups.length) {\r\n var resourcesSetter = this.getResourceDataAccessors().setter;\r\n var workSpace = this._workSpace;\r\n var getGroups;\r\n var setResourceCallback;\r\n if (this._isAgenda()) {\r\n getGroups = function() {\r\n var apptSettings = this.getLayoutManager()._positionMap[appointmentIndex];\r\n return getCellGroups(apptSettings[0].groupIndex, this.getWorkSpace().option(\"groups\"))\r\n };\r\n setResourceCallback = function(_, group) {\r\n resourcesSetter[group.name](rawAppointment, group.id)\r\n }\r\n } else {\r\n getGroups = function() {\r\n var setting = utils.dataAccessors.getAppointmentSettings(element) || {};\r\n return workSpace.getCellDataByCoordinates({\r\n left: setting.left,\r\n top: setting.top\r\n }).groups\r\n };\r\n setResourceCallback = function(field, value) {\r\n resourcesSetter[field](rawAppointment, value)\r\n }\r\n }\r\n each(getGroups.call(this), setResourceCallback)\r\n }\r\n }\r\n getStartViewDate() {\r\n var _a;\r\n return null === (_a = this._workSpace) || void 0 === _a ? void 0 : _a.getStartViewDate()\r\n }\r\n getEndViewDate() {\r\n return this._workSpace.getEndViewDate()\r\n }\r\n showAddAppointmentPopup(cellData, cellGroups) {\r\n var appointmentAdapter = createAppointmentAdapter({}, this._dataAccessors, this.timeZoneCalculator);\r\n appointmentAdapter.allDay = cellData.allDay;\r\n appointmentAdapter.startDate = this.timeZoneCalculator.createDate(cellData.startDate, {\r\n path: \"fromGrid\"\r\n });\r\n appointmentAdapter.endDate = this.timeZoneCalculator.createDate(cellData.endDate, {\r\n path: \"fromGrid\"\r\n });\r\n var resultAppointment = extend(appointmentAdapter.source(), cellGroups);\r\n this.showAppointmentPopup(resultAppointment, true)\r\n }\r\n showAppointmentPopup(rawAppointment, createNewAppointment, rawTargetedAppointment) {\r\n var newRawTargetedAppointment = _extends({}, rawTargetedAppointment);\r\n if (newRawTargetedAppointment) {\r\n delete newRawTargetedAppointment.displayStartDate;\r\n delete newRawTargetedAppointment.displayEndDate\r\n }\r\n var appointment = createAppointmentAdapter(newRawTargetedAppointment || rawAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n var newTargetedAppointment = extend({}, rawAppointment, newRawTargetedAppointment);\r\n var isCreateAppointment = null !== createNewAppointment && void 0 !== createNewAppointment ? createNewAppointment : isEmptyObject(rawAppointment);\r\n if (isEmptyObject(rawAppointment)) {\r\n rawAppointment = this.createPopupAppointment()\r\n }\r\n if (isCreateAppointment) {\r\n delete this._editAppointmentData;\r\n this._editing.allowAdding && this._appointmentPopup.show(rawAppointment, {\r\n isToolbarVisible: true,\r\n action: ACTION_TO_APPOINTMENT.CREATE\r\n })\r\n } else {\r\n this._checkRecurringAppointment(rawAppointment, newTargetedAppointment, appointment.startDate, () => {\r\n this._editAppointmentData = rawAppointment;\r\n this._appointmentPopup.show(rawAppointment, {\r\n isToolbarVisible: this._editing.allowUpdating,\r\n action: ACTION_TO_APPOINTMENT.UPDATE\r\n })\r\n }, false, true)\r\n }\r\n }\r\n createPopupAppointment() {\r\n var result = {};\r\n var toMs = dateUtils.dateToMilliseconds;\r\n var startDate = new Date(this.option(\"currentDate\"));\r\n var endDate = new Date(startDate.getTime() + this.option(\"cellDuration\") * toMs(\"minute\"));\r\n ExpressionUtils.setField(this._dataAccessors, \"startDate\", result, startDate);\r\n ExpressionUtils.setField(this._dataAccessors, \"endDate\", result, endDate);\r\n return result\r\n }\r\n hideAppointmentPopup(saveChanges) {\r\n var _a;\r\n if (null === (_a = this._appointmentPopup) || void 0 === _a ? void 0 : _a.visible) {\r\n saveChanges && this._appointmentPopup.saveChangesAsync();\r\n this._appointmentPopup.hide()\r\n }\r\n }\r\n showAppointmentTooltip(appointment, element, targetedAppointment) {\r\n if (appointment) {\r\n var settings = utils.dataAccessors.getAppointmentSettings(element);\r\n var appointmentConfig = {\r\n itemData: targetedAppointment || appointment,\r\n groupIndex: null === settings || void 0 === settings ? void 0 : settings.groupIndex,\r\n groups: this.option(\"groups\")\r\n };\r\n var _getAppointmentColor = this.createGetAppointmentColor();\r\n var deferredColor = _getAppointmentColor(appointmentConfig);\r\n var info = new AppointmentTooltipInfo(appointment, targetedAppointment, deferredColor);\r\n this.showAppointmentTooltipCore(element, [info])\r\n }\r\n }\r\n createGetAppointmentColor() {\r\n return appointmentConfig => {\r\n var resourceConfig = {\r\n resources: this.option(\"resources\"),\r\n dataAccessors: this.getResourceDataAccessors(),\r\n loadedResources: this.option(\"loadedResources\"),\r\n resourceLoaderMap: this.option(\"resourceLoaderMap\")\r\n };\r\n return getAppointmentColor(resourceConfig, appointmentConfig)\r\n }\r\n }\r\n showAppointmentTooltipCore(target, data, options) {\r\n var arg = {\r\n cancel: false,\r\n appointments: data.map(item => {\r\n var result = {\r\n appointmentData: item.appointment,\r\n currentAppointmentData: _extends({}, item.targetedAppointment),\r\n color: item.color\r\n };\r\n if (item.settings.info) {\r\n var {\r\n startDate: startDate,\r\n endDate: endDate\r\n } = item.settings.info.appointment;\r\n result.currentAppointmentData.displayStartDate = startDate;\r\n result.currentAppointmentData.displayEndDate = endDate\r\n }\r\n return result\r\n }),\r\n targetElement: target\r\n };\r\n this._createActionByOption(\"onAppointmentTooltipShowing\")(arg);\r\n if (this._appointmentTooltip.isAlreadyShown(target)) {\r\n this.hideAppointmentTooltip()\r\n } else {\r\n this._processActionResult(arg, canceled => {\r\n !canceled && this._appointmentTooltip.show(target, data, _extends(_extends({}, this._getExtraAppointmentTooltipOptions()), options))\r\n })\r\n }\r\n }\r\n hideAppointmentTooltip() {\r\n this._appointmentTooltip && this._appointmentTooltip.hide()\r\n }\r\n scrollToTime(hours, minutes, date) {\r\n errors.log(\"W0002\", \"dxScheduler\", \"scrollToTime\", \"21.1\", 'Use the \"scrollTo\" method instead');\r\n this._workSpace.scrollToTime(hours, minutes, date)\r\n }\r\n scrollTo(date, groups, allDay) {\r\n this._workSpace.scrollTo(date, groups, allDay)\r\n }\r\n _isHorizontalVirtualScrolling() {\r\n var scrolling = this.option(\"scrolling\");\r\n var {\r\n orientation: orientation,\r\n mode: mode\r\n } = scrolling;\r\n var isVirtualScrolling = \"virtual\" === mode;\r\n return isVirtualScrolling && (\"horizontal\" === orientation || \"both\" === orientation)\r\n }\r\n addAppointment(rawAppointment) {\r\n var appointment = createAppointmentAdapter(rawAppointment, this._dataAccessors, this.timeZoneCalculator);\r\n appointment.text = appointment.text || \"\";\r\n var serializedAppointment = appointment.source(true);\r\n var addingOptions = {\r\n appointmentData: serializedAppointment,\r\n cancel: false\r\n };\r\n this._actions[StoreEventNames.ADDING](addingOptions);\r\n return this._processActionResult(addingOptions, canceled => {\r\n if (canceled) {\r\n return (new Deferred).resolve()\r\n }\r\n this._expandAllDayPanel(serializedAppointment);\r\n return this.appointmentDataProvider.add(serializedAppointment).always(storeAppointment => this._onDataPromiseCompleted(StoreEventNames.ADDED, storeAppointment))\r\n })\r\n }\r\n updateAppointment(target, appointment) {\r\n return this._updateAppointment(target, appointment)\r\n }\r\n deleteAppointment(rawAppointment) {\r\n var deletingOptions = this.fireOnAppointmentDeleting(rawAppointment);\r\n this.processDeleteAppointment(rawAppointment, deletingOptions)\r\n }\r\n fireOnAppointmentDeleting(rawAppointment, targetedAppointmentData) {\r\n var deletingOptions = {\r\n appointmentData: rawAppointment,\r\n targetedAppointmentData: targetedAppointmentData,\r\n cancel: false\r\n };\r\n this._actions[StoreEventNames.DELETING](deletingOptions);\r\n return deletingOptions\r\n }\r\n processDeleteAppointment(rawAppointment, deletingOptions) {\r\n this._processActionResult(deletingOptions, (function(canceled) {\r\n if (!canceled) {\r\n this.appointmentDataProvider.remove(rawAppointment).always(storeAppointment => this._onDataPromiseCompleted(StoreEventNames.DELETED, storeAppointment, rawAppointment))\r\n }\r\n }))\r\n }\r\n deleteRecurrence(appointment, date, recurrenceEditMode) {\r\n this._checkRecurringAppointment(appointment, {}, date, () => {\r\n this.processDeleteAppointment(appointment, {\r\n cancel: false\r\n })\r\n }, true, false, null, recurrenceEditMode)\r\n }\r\n focus() {\r\n if (this._editAppointmentData) {\r\n this._appointments.focus()\r\n } else {\r\n this._workSpace.focus()\r\n }\r\n }\r\n getFirstDayOfWeek() {\r\n return isDefined(this.option(\"firstDayOfWeek\")) ? this.option(\"firstDayOfWeek\") : dateLocalization.firstDayOfWeekIndex()\r\n }\r\n _validateKeyFieldIfAgendaExist() {\r\n if (!this.appointmentDataProvider.isDataSourceInit) {\r\n return\r\n }\r\n var hasAgendaView = !!this._getViewByName(\"agenda\");\r\n var isKeyExist = !!this.appointmentDataProvider.keyName;\r\n if (hasAgendaView && !isKeyExist) {\r\n errors.log(\"W1023\")\r\n }\r\n }\r\n _validateCellDuration() {\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var cellDuration = this._getCurrentViewOption(\"cellDuration\");\r\n if ((endDayHour - startDayHour) * MINUTES_IN_HOUR % cellDuration !== 0) {\r\n errors.log(\"W1015\")\r\n }\r\n }\r\n _validateDayHours() {\r\n var startDayHour = this._getCurrentViewOption(\"startDayHour\");\r\n var endDayHour = this._getCurrentViewOption(\"endDayHour\");\r\n validateDayHours(startDayHour, endDayHour)\r\n }\r\n _getDragBehavior() {\r\n return this._workSpace.dragBehavior\r\n }\r\n}\r\nScheduler.include(DataHelperMixin);\r\nregisterComponent(\"dxScheduler\", Scheduler);\r\nexport default Scheduler;\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/timeZoneCalculator/createTimeZoneCalculator.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n TimeZoneCalculator\r\n} from \"./utils\";\r\nimport timeZoneUtils from \"../../../../__internal/scheduler/m_utils_time_zone\";\r\nexport var createTimeZoneCalculator = currentTimeZone => new TimeZoneCalculator({\r\n getClientOffset: date => timeZoneUtils.getClientTimezoneOffset(date),\r\n tryGetCommonOffset: date => timeZoneUtils.calculateTimezoneByValue(currentTimeZone, date),\r\n tryGetAppointmentOffset: (date, appointmentTimezone) => timeZoneUtils.calculateTimezoneByValue(appointmentTimezone, date)\r\n});\r\n","/**\r\n * DevExtreme (esm/renovation/ui/scheduler/utils/data.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport {\r\n replaceWrongEndDate\r\n} from \"../../../../__internal/scheduler/appointments/data_provider/m_utils\";\r\nimport {\r\n createAppointmentAdapter\r\n} from \"../../../../__internal/scheduler/m_appointment_adapter\";\r\nimport {\r\n isDefined\r\n} from \"../../../../core/utils/type\";\r\nvar RECURRENCE_FREQ = \"freq\";\r\nexport var getPreparedDataItems = (dataItems, dataAccessors, cellDurationInMinutes, timeZoneCalculator) => {\r\n var result = [];\r\n null === dataItems || void 0 === dataItems ? void 0 : dataItems.forEach(rawAppointment => {\r\n var _recurrenceRule$match;\r\n var startDate = new Date(dataAccessors.getter.startDate(rawAppointment));\r\n var endDate = new Date(dataAccessors.getter.endDate(rawAppointment));\r\n replaceWrongEndDate(rawAppointment, startDate, endDate, cellDurationInMinutes, dataAccessors);\r\n var adapter = createAppointmentAdapter(rawAppointment, dataAccessors, timeZoneCalculator);\r\n var comparableStartDate = adapter.startDate && adapter.calculateStartDate(\"toGrid\");\r\n var comparableEndDate = adapter.endDate && adapter.calculateEndDate(\"toGrid\");\r\n var regex = new RegExp(RECURRENCE_FREQ, \"gi\");\r\n var recurrenceRule = adapter.recurrenceRule;\r\n var hasRecurrenceRule = !!(null !== recurrenceRule && void 0 !== recurrenceRule && null !== (_recurrenceRule$match = recurrenceRule.match(regex)) && void 0 !== _recurrenceRule$match && _recurrenceRule$match.length);\r\n var visible = isDefined(rawAppointment.visible) ? !!rawAppointment.visible : true;\r\n if (comparableStartDate && comparableEndDate) {\r\n result.push({\r\n allDay: !!adapter.allDay,\r\n startDate: comparableStartDate,\r\n startDateTimeZone: rawAppointment.startDateTimeZone,\r\n endDate: comparableEndDate,\r\n endDateTimeZone: rawAppointment.endDateTimeZone,\r\n recurrenceRule: adapter.recurrenceRule,\r\n recurrenceException: adapter.recurrenceException,\r\n hasRecurrenceRule: hasRecurrenceRule,\r\n visible: visible,\r\n rawAppointment: rawAppointment\r\n })\r\n }\r\n });\r\n return result\r\n};\r\nexport var resolveDataItems = options => Array.isArray(options) ? options : options.data;\r\n","/**\r\n * DevExtreme (esm/ui/scheduler.js)\r\n * Version: 23.1.6\r\n * Build date: Fri Oct 13 2023\r\n *\r\n * Copyright (c) 2012 - 2023 Developer Express Inc. ALL RIGHTS RESERVED\r\n * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/\r\n */\r\nimport Scheduler from \"./scheduler/ui.scheduler\";\r\nexport default Scheduler;\r\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var 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 empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\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 */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee 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 `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee 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 all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\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 */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\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 * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\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 */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\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 */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\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 */\n function 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 `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\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 */\n function 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 `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\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 */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\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 */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\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 */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\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 */\n function 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 */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\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 */\n function 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 /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\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 */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var 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. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\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 */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\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 */\n function 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 --this.size;\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 */\n function 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 */\n function 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 */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\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 */\n function mapCacheClear() {\n this.size = 0;\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 */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\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 */\n function 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 */\n function 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 */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\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 */\n function 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 */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\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 */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\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 */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\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 */\n function 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 */\n function 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 */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\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 */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\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 */\n function 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 * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\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 */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` 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 */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\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 */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\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 */\n var baseForRight = createBaseFor(true);\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 */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` 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 */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\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 */\n function baseGet(object, path) {\n path = castPath(path, object);\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 `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` 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 */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\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 */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\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 {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_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, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, 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 */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\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 */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(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 */\n function 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 */\n function 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 `_.keysIn` 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 */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\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 */\n function 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 */\n function 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 */\n function 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, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\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 */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\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 * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\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 */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection 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 */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\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 */\n function 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 (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\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 * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\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 * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\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 */\n function 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 */\n function 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 an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\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 */\n function 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 */\n function 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 * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_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 (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, 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 & COMPARE_PARTIAL_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 |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, 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 {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(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 // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\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, bitmask, customizer, 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 * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : 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 */\n function 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 */\n function 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 */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\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 */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((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 = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\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 * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\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 */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\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 || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\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 */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\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 */\n function 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 */\n function 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 a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\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 */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\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 */\n function 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 */\n function 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 */\n function 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 * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\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 */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\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 */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.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 */\n function 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 convert.\n * @returns {string} Returns the source code.\n */\n function 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 * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\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 {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\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|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\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 {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\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 */\n function 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 an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\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 `clear`, `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 */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && 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) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '<p>' + func(text) + '</p>';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '<p>fred, barney, & pebbles</p>'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\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 */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= 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 */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\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 */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\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 */\n function 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 */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or 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 boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` 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 date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\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 DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('<body>');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\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 empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.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 * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\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 * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\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 an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\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 finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(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 */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\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 integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\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 */\n function 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 */\n function isObject(value) {\n var type = typeof value;\n return value != null && (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 */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\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 `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\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 native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\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 `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\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 nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\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 number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` 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 regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\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 safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\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 */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(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 */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.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 `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is 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 convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\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 convert.\n * @returns {string} Returns the converted 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 */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\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 */\n function 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 property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\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 = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\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 */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` 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 of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\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 */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\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 * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\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 values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<b><%- value %></b>');\n * compiled({ 'value': '<script>' });\n * // => '<b><script></b>'\n *\n * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the internal `print` function in \"evaluate\" delimiters.\n * var compiled = _.template('<% print(\"hello \" + user); %>!');\n * compiled({ 'user': 'barney' });\n * // => 'hello barney!'\n *\n * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n * // Disable support by replacing the \"interpolate\" delimiter.\n * var compiled = _.template('hello ${ user }!');\n * compiled({ 'user': 'pebbles' });\n * // => 'hello pebbles!'\n *\n * // Use backslashes to treat delimiters as plain text.\n * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n * compiled({ 'value': 'ignored' });\n * // => '<%- value %>'\n *\n * // Use the `imports` option to import `jQuery` as `jq`.\n * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n * compiled({ 'users': ['fred', 'barney'] });\n * // => '<li>fred</li><li>barney</li>'\n *\n * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n * compiled(data);\n * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n *\n * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n * compiled.source;\n * // => function(data) {\n * // var __t, __p = '';\n * // __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n * // return __p;\n * // }\n *\n * // Use custom template delimiters.\n * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n * var compiled = _.template('hello {{ user }}!');\n * compiled({ 'user': 'mustache' });\n * // => 'hello mustache!'\n *\n * // Use the `source` property to inline compiled templates for meaningful\n * // line numbers in error messages and stack traces.\n * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n * var JST = {\\\n * \"main\": ' + _.template(mainText).source + '\\\n * };\\\n * ');\n */\n function template(string, options, guard) {\n // Based on John Resig's `tmpl` implementation\n // (http://ejohn.org/blog/javascript-micro-templating/)\n // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n var settings = lodash.templateSettings;\n\n if (guard && isIterateeCall(string, options, guard)) {\n options = undefined;\n }\n string = toString(string);\n options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n importsKeys = keys(imports),\n importsValues = baseValues(imports, importsKeys);\n\n var isEscaping,\n isEvaluating,\n index = 0,\n interpolate = options.interpolate || reNoMatch,\n source = \"__p += '\";\n\n // Compile the regexp to match each delimiter.\n var reDelimiters = RegExp(\n (options.escape || reNoMatch).source + '|' +\n interpolate.source + '|' +\n (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n (options.evaluate || reNoMatch).source + '|$'\n , 'g');\n\n // Use a sourceURL for easier debugging.\n // The sourceURL gets injected into the source that's eval-ed, so be careful\n // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n // and escape the comment, thus injecting code that gets evaled.\n var sourceURL = '//# sourceURL=' +\n (hasOwnProperty.call(options, 'sourceURL')\n ? (options.sourceURL + '').replace(/\\s/g, ' ')\n : ('lodash.templateSources[' + (++templateCounter) + ']')\n ) + '\\n';\n\n string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n interpolateValue || (interpolateValue = esTemplateValue);\n\n // Escape characters that can't be included in string literals.\n source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n // Replace delimiters with snippets.\n if (escapeValue) {\n isEscaping = true;\n source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n }\n if (evaluateValue) {\n isEvaluating = true;\n source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n }\n if (interpolateValue) {\n source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n }\n index = offset + match.length;\n\n // The JS engine embedded in Adobe products needs `match` returned in\n // order to produce the correct `offset` value.\n return match;\n });\n\n source += \"';\\n\";\n\n // If `variable` is not specified wrap a with-statement around the generated\n // code to add the data object to the top of the scope chain.\n var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n if (!variable) {\n source = 'with (obj) {\\n' + source + '\\n}\\n';\n }\n // Throw an error if a forbidden character was found in `variable`, to prevent\n // potential command injection attacks.\n else if (reForbiddenIdentifierChars.test(variable)) {\n throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n }\n\n // Cleanup code by stripping empty strings.\n source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n .replace(reEmptyStringMiddle, '$1')\n .replace(reEmptyStringTrailing, '$1;');\n\n // Frame code as the function body.\n source = 'function(' + (variable || 'obj') + ') {\\n' +\n (variable\n ? ''\n : 'obj || (obj = {});\\n'\n ) +\n \"var __t, __p = ''\" +\n (isEscaping\n ? ', __e = _.escape'\n : ''\n ) +\n (isEvaluating\n ? ', __j = Array.prototype.join;\\n' +\n \"function print() { __p += __j.call(arguments, '') }\\n\"\n : ';\\n'\n ) +\n source +\n 'return __p\\n}';\n\n var result = attempt(function() {\n return Function(importsKeys, sourceURL + 'return ' + source)\n .apply(undefined, importsValues);\n });\n\n // Provide the compiled function's source by its `toString` method or\n // the `source` property as a convenience for inlining compiled templates.\n result.source = source;\n if (isError(result)) {\n throw result;\n }\n return result;\n }\n\n /**\n * Converts `string`, as a whole, to lower case just like\n * [String#toLowerCase](https://mdn.io/toLowerCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.toLower('--Foo-Bar--');\n * // => '--foo-bar--'\n *\n * _.toLower('fooBar');\n * // => 'foobar'\n *\n * _.toLower('__FOO_BAR__');\n * // => '__foo_bar__'\n */\n function toLower(value) {\n return toString(value).toLowerCase();\n }\n\n /**\n * Converts `string`, as a whole, to upper case just like\n * [String#toUpperCase](https://mdn.io/toUpperCase).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.toUpper('--foo-bar--');\n * // => '--FOO-BAR--'\n *\n * _.toUpper('fooBar');\n * // => 'FOOBAR'\n *\n * _.toUpper('__foo_bar__');\n * // => '__FOO_BAR__'\n */\n function toUpper(value) {\n return toString(value).toUpperCase();\n }\n\n /**\n * Removes leading and trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trim(' abc ');\n * // => 'abc'\n *\n * _.trim('-_-abc-_-', '_-');\n * // => 'abc'\n *\n * _.map([' foo ', ' bar '], _.trim);\n * // => ['foo', 'bar']\n */\n function trim(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return baseTrim(string);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n chrSymbols = stringToArray(chars),\n start = charsStartIndex(strSymbols, chrSymbols),\n end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n return castSlice(strSymbols, start, end).join('');\n }\n\n /**\n * Removes trailing whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimEnd(' abc ');\n * // => ' abc'\n *\n * _.trimEnd('-_-abc-_-', '_-');\n * // => '-_-abc'\n */\n function trimEnd(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.slice(0, trimmedEndIndex(string) + 1);\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n return castSlice(strSymbols, 0, end).join('');\n }\n\n /**\n * Removes leading whitespace or specified characters from `string`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to trim.\n * @param {string} [chars=whitespace] The characters to trim.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the trimmed string.\n * @example\n *\n * _.trimStart(' abc ');\n * // => 'abc '\n *\n * _.trimStart('-_-abc-_-', '_-');\n * // => 'abc-_-'\n */\n function trimStart(string, chars, guard) {\n string = toString(string);\n if (string && (guard || chars === undefined)) {\n return string.replace(reTrimStart, '');\n }\n if (!string || !(chars = baseToString(chars))) {\n return string;\n }\n var strSymbols = stringToArray(string),\n start = charsStartIndex(strSymbols, stringToArray(chars));\n\n return castSlice(strSymbols, start).join('');\n }\n\n /**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\n function truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n }\n\n /**\n * The inverse of `_.escape`; this method converts the HTML entities\n * `&`, `<`, `>`, `"`, and `'` in `string` to\n * their corresponding characters.\n *\n * **Note:** No other HTML entities are unescaped. To unescape additional\n * HTML entities use a third-party library like [_he_](https://mths.be/he).\n *\n * @static\n * @memberOf _\n * @since 0.6.0\n * @category String\n * @param {string} [string=''] The string to unescape.\n * @returns {string} Returns the unescaped string.\n * @example\n *\n * _.unescape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function unescape(string) {\n string = toString(string);\n return (string && reHasEscapedHtml.test(string))\n ? string.replace(reEscapedHtml, unescapeHtmlChar)\n : string;\n }\n\n /**\n * Converts `string`, as space separated words, to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the upper cased string.\n * @example\n *\n * _.upperCase('--foo-bar');\n * // => 'FOO BAR'\n *\n * _.upperCase('fooBar');\n * // => 'FOO BAR'\n *\n * _.upperCase('__foo_bar__');\n * // => 'FOO BAR'\n */\n var upperCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toUpperCase();\n });\n\n /**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\n var upperFirst = createCaseFirst('toUpperCase');\n\n /**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\n function words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Attempts to invoke `func`, returning either the result or the caught error\n * object. Any additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Function} func The function to attempt.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {*} Returns the `func` result or error object.\n * @example\n *\n * // Avoid throwing errors for invalid selectors.\n * var elements = _.attempt(function(selector) {\n * return document.querySelectorAll(selector);\n * }, '>_>');\n *\n * if (_.isError(elements)) {\n * elements = [];\n * }\n */\n var attempt = baseRest(function(func, args) {\n try {\n return apply(func, undefined, args);\n } catch (e) {\n return isError(e) ? e : new Error(e);\n }\n });\n\n /**\n * Binds methods of an object to the object itself, overwriting the existing\n * method.\n *\n * **Note:** This method doesn't set the \"length\" property of bound functions.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Object} object The object to bind and assign the bound methods to.\n * @param {...(string|string[])} methodNames The object method names to bind.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var view = {\n * 'label': 'docs',\n * 'click': function() {\n * console.log('clicked ' + this.label);\n * }\n * };\n *\n * _.bindAll(view, ['click']);\n * jQuery(element).on('click', view.click);\n * // => Logs 'clicked docs' when clicked.\n */\n var bindAll = flatRest(function(object, methodNames) {\n arrayEach(methodNames, function(key) {\n key = toKey(key);\n baseAssignValue(object, key, bind(object[key], object));\n });\n return object;\n });\n\n /**\n * Creates a function that iterates over `pairs` and invokes the corresponding\n * function of the first predicate to return truthy. The predicate-function\n * pairs are invoked with the `this` binding and arguments of the created\n * function.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Array} pairs The predicate-function pairs.\n * @returns {Function} Returns the new composite function.\n * @example\n *\n * var func = _.cond([\n * [_.matches({ 'a': 1 }), _.constant('matches A')],\n * [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n * [_.stubTrue, _.constant('no match')]\n * ]);\n *\n * func({ 'a': 1, 'b': 2 });\n * // => 'matches A'\n *\n * func({ 'a': 0, 'b': 1 });\n * // => 'matches B'\n *\n * func({ 'a': '1', 'b': '2' });\n * // => 'no match'\n */\n function cond(pairs) {\n var length = pairs == null ? 0 : pairs.length,\n toIteratee = getIteratee();\n\n pairs = !length ? [] : arrayMap(pairs, function(pair) {\n if (typeof pair[1] != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return [toIteratee(pair[0]), pair[1]];\n });\n\n return baseRest(function(args) {\n var index = -1;\n while (++index < length) {\n var pair = pairs[index];\n if (apply(pair[0], this, args)) {\n return apply(pair[1], this, args);\n }\n }\n });\n }\n\n /**\n * Creates a function that invokes the predicate properties of `source` with\n * the corresponding property values of a given object, returning `true` if\n * all predicates return truthy, else `false`.\n *\n * **Note:** The created function is equivalent to `_.conformsTo` with\n * `source` partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 2, 'b': 1 },\n * { 'a': 1, 'b': 2 }\n * ];\n *\n * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n * // => [{ 'a': 1, 'b': 2 }]\n */\n function conforms(source) {\n return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\n function constant(value) {\n return function() {\n return value;\n };\n }\n\n /**\n * Checks `value` to determine whether a default value should be returned in\n * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n * or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Util\n * @param {*} value The value to check.\n * @param {*} defaultValue The default value.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * _.defaultTo(1, 10);\n * // => 1\n *\n * _.defaultTo(undefined, 10);\n * // => 10\n */\n function defaultTo(value, defaultValue) {\n return (value == null || value !== value) ? defaultValue : value;\n }\n\n /**\n * Creates a function that returns the result of invoking the given functions\n * with the `this` binding of the created function, where each successive\n * invocation is supplied the return value of the previous.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flowRight\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flow([_.add, square]);\n * addSquare(1, 2);\n * // => 9\n */\n var flow = createFlow();\n\n /**\n * This method is like `_.flow` except that it creates a function that\n * invokes the given functions from right to left.\n *\n * @static\n * @since 3.0.0\n * @memberOf _\n * @category Util\n * @param {...(Function|Function[])} [funcs] The functions to invoke.\n * @returns {Function} Returns the new composite function.\n * @see _.flow\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var addSquare = _.flowRight([square, _.add]);\n * addSquare(1, 2);\n * // => 9\n */\n var flowRight = createFlow(true);\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 */\n function identity(value) {\n return value;\n }\n\n /**\n * Creates a function that invokes `func` with the arguments of the created\n * function. If `func` is a property name, the created function returns the\n * property value for a given element. If `func` is an array or object, the\n * created function returns `true` for elements that contain the equivalent\n * source properties, otherwise it returns `false`.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Util\n * @param {*} [func=_.identity] The value to convert to a callback.\n * @returns {Function} Returns the callback.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, _.iteratee(['user', 'fred']));\n * // => [{ 'user': 'fred', 'age': 40 }]\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, _.iteratee('user'));\n * // => ['barney', 'fred']\n *\n * // Create custom iteratee shorthands.\n * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n * return !_.isRegExp(func) ? iteratee(func) : function(string) {\n * return func.test(string);\n * };\n * });\n *\n * _.filter(['abc', 'def'], /ef/);\n * // => ['def']\n */\n function iteratee(func) {\n return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between a given\n * object and `source`, returning `true` if the given object has equivalent\n * property values, else `false`.\n *\n * **Note:** The created function is equivalent to `_.isMatch` with `source`\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matches(source) {\n return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that performs a partial deep comparison between the\n * value at `path` of a given object to `srcValue`, returning `true` if the\n * object value is equivalent, else `false`.\n *\n * **Note:** Partial comparisons will match empty array and empty object\n * `srcValue` values against any array or object value, respectively. See\n * `_.isEqual` for a list of supported value comparisons.\n *\n * **Note:** Multiple values can be checked by combining several matchers\n * using `_.overSome`\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Util\n * @param {Array|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 * @example\n *\n * var objects = [\n * { 'a': 1, 'b': 2, 'c': 3 },\n * { 'a': 4, 'b': 5, 'c': 6 }\n * ];\n *\n * _.find(objects, _.matchesProperty('a', 4));\n * // => { 'a': 4, 'b': 5, 'c': 6 }\n *\n * // Checking for several possible values\n * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n */\n function matchesProperty(path, srcValue) {\n return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n }\n\n /**\n * Creates a function that invokes the method at `path` of a given object.\n * Any additional arguments are provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': _.constant(2) } },\n * { 'a': { 'b': _.constant(1) } }\n * ];\n *\n * _.map(objects, _.method('a.b'));\n * // => [2, 1]\n *\n * _.map(objects, _.method(['a', 'b']));\n * // => [2, 1]\n */\n var method = baseRest(function(path, args) {\n return function(object) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * The opposite of `_.method`; this method creates a function that invokes\n * the method at a given path of `object`. Any additional arguments are\n * provided to the invoked method.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Util\n * @param {Object} object The object to query.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {Function} Returns the new invoker function.\n * @example\n *\n * var array = _.times(3, _.constant),\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n * // => [2, 0]\n */\n var methodOf = baseRest(function(object, args) {\n return function(path) {\n return baseInvoke(object, path, args);\n };\n });\n\n /**\n * Adds all own enumerable string keyed function properties of a source\n * object to the destination object. If `object` is a function, then methods\n * are added to its prototype as well.\n *\n * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n * avoid conflicts caused by modifying the original.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {Function|Object} [object=lodash] The destination object.\n * @param {Object} source The object of functions to add.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n * @returns {Function|Object} Returns `object`.\n * @example\n *\n * function vowels(string) {\n * return _.filter(string, function(v) {\n * return /[aeiou]/i.test(v);\n * });\n * }\n *\n * _.mixin({ 'vowels': vowels });\n * _.vowels('fred');\n * // => ['e']\n *\n * _('fred').vowels().value();\n * // => ['e']\n *\n * _.mixin({ 'vowels': vowels }, { 'chain': false });\n * _('fred').vowels();\n * // => ['e']\n */\n function mixin(object, source, options) {\n var props = keys(source),\n methodNames = baseFunctions(source, props);\n\n if (options == null &&\n !(isObject(source) && (methodNames.length || !props.length))) {\n options = source;\n source = object;\n object = this;\n methodNames = baseFunctions(source, keys(source));\n }\n var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n isFunc = isFunction(object);\n\n arrayEach(methodNames, function(methodName) {\n var func = source[methodName];\n object[methodName] = func;\n if (isFunc) {\n object.prototype[methodName] = function() {\n var chainAll = this.__chain__;\n if (chain || chainAll) {\n var result = object(this.__wrapped__),\n actions = result.__actions__ = copyArray(this.__actions__);\n\n actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n result.__chain__ = chainAll;\n return result;\n }\n return func.apply(object, arrayPush([this.value()], arguments));\n };\n }\n });\n\n return object;\n }\n\n /**\n * Reverts the `_` variable to its previous value and returns a reference to\n * the `lodash` function.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @returns {Function} Returns the `lodash` function.\n * @example\n *\n * var lodash = _.noConflict();\n */\n function noConflict() {\n if (root._ === this) {\n root._ = oldDash;\n }\n return this;\n }\n\n /**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\n function noop() {\n // No operation performed.\n }\n\n /**\n * Creates a function that gets the argument at index `n`. If `n` is negative,\n * the nth argument from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [n=0] The index of the argument to return.\n * @returns {Function} Returns the new pass-thru function.\n * @example\n *\n * var func = _.nthArg(1);\n * func('a', 'b', 'c', 'd');\n * // => 'b'\n *\n * var func = _.nthArg(-2);\n * func('a', 'b', 'c', 'd');\n * // => 'c'\n */\n function nthArg(n) {\n n = toInteger(n);\n return baseRest(function(args) {\n return baseNth(args, n);\n });\n }\n\n /**\n * Creates a function that invokes `iteratees` with the arguments it receives\n * and returns their results.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to invoke.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.over([Math.max, Math.min]);\n *\n * func(1, 2, 3, 4);\n * // => [4, 1]\n */\n var over = createOver(arrayMap);\n\n /**\n * Creates a function that checks if **all** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overEvery([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => false\n *\n * func(NaN);\n * // => false\n */\n var overEvery = createOver(arrayEvery);\n\n /**\n * Creates a function that checks if **any** of the `predicates` return\n * truthy when invoked with the arguments it receives.\n *\n * Following shorthands are possible for providing predicates.\n * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {...(Function|Function[])} [predicates=[_.identity]]\n * The predicates to check.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var func = _.overSome([Boolean, isFinite]);\n *\n * func('1');\n * // => true\n *\n * func(null);\n * // => true\n *\n * func(NaN);\n * // => false\n *\n * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n */\n var overSome = createOver(arraySome);\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 */\n function property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n }\n\n /**\n * The opposite of `_.property`; this method creates a function that returns\n * the value at a given path of `object`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Util\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var array = [0, 1, 2],\n * object = { 'a': array, 'b': array, 'c': array };\n *\n * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n * // => [2, 0]\n *\n * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n * // => [2, 0]\n */\n function propertyOf(object) {\n return function(path) {\n return object == null ? undefined : baseGet(object, path);\n };\n }\n\n /**\n * Creates an array of numbers (positive and/or negative) progressing from\n * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n * `start` is specified without an `end` or `step`. If `end` is not specified,\n * it's set to `start` with `start` then set to `0`.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.rangeRight\n * @example\n *\n * _.range(4);\n * // => [0, 1, 2, 3]\n *\n * _.range(-4);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 5);\n * // => [1, 2, 3, 4]\n *\n * _.range(0, 20, 5);\n * // => [0, 5, 10, 15]\n *\n * _.range(0, -4, -1);\n * // => [0, -1, -2, -3]\n *\n * _.range(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.range(0);\n * // => []\n */\n var range = createRange();\n\n /**\n * This method is like `_.range` except that it populates values in\n * descending order.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @param {number} [step=1] The value to increment or decrement by.\n * @returns {Array} Returns the range of numbers.\n * @see _.inRange, _.range\n * @example\n *\n * _.rangeRight(4);\n * // => [3, 2, 1, 0]\n *\n * _.rangeRight(-4);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 5);\n * // => [4, 3, 2, 1]\n *\n * _.rangeRight(0, 20, 5);\n * // => [15, 10, 5, 0]\n *\n * _.rangeRight(0, -4, -1);\n * // => [-3, -2, -1, 0]\n *\n * _.rangeRight(1, 4, 0);\n * // => [1, 1, 1]\n *\n * _.rangeRight(0);\n * // => []\n */\n var rangeRight = createRange(true);\n\n /**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\n function stubArray() {\n return [];\n }\n\n /**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\n function stubFalse() {\n return false;\n }\n\n /**\n * This method returns a new empty object.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Object} Returns the new empty object.\n * @example\n *\n * var objects = _.times(2, _.stubObject);\n *\n * console.log(objects);\n * // => [{}, {}]\n *\n * console.log(objects[0] === objects[1]);\n * // => false\n */\n function stubObject() {\n return {};\n }\n\n /**\n * This method returns an empty string.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {string} Returns the empty string.\n * @example\n *\n * _.times(2, _.stubString);\n * // => ['', '']\n */\n function stubString() {\n return '';\n }\n\n /**\n * This method returns `true`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `true`.\n * @example\n *\n * _.times(2, _.stubTrue);\n * // => [true, true]\n */\n function stubTrue() {\n return true;\n }\n\n /**\n * Invokes the iteratee `n` times, returning an array of the results of\n * each invocation. The iteratee is invoked with one argument; (index).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.times(3, String);\n * // => ['0', '1', '2']\n *\n * _.times(4, _.constant(0));\n * // => [0, 0, 0, 0]\n */\n function times(n, iteratee) {\n n = toInteger(n);\n if (n < 1 || n > MAX_SAFE_INTEGER) {\n return [];\n }\n var index = MAX_ARRAY_LENGTH,\n length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n iteratee = getIteratee(iteratee);\n n -= MAX_ARRAY_LENGTH;\n\n var result = baseTimes(length, iteratee);\n while (++index < n) {\n iteratee(index);\n }\n return result;\n }\n\n /**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\n function toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n }\n\n /**\n * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {string} [prefix=''] The value to prefix the ID with.\n * @returns {string} Returns the unique ID.\n * @example\n *\n * _.uniqueId('contact_');\n * // => 'contact_104'\n *\n * _.uniqueId();\n * // => '105'\n */\n function uniqueId(prefix) {\n var id = ++idCounter;\n return toString(prefix) + id;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Adds two numbers.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {number} augend The first number in an addition.\n * @param {number} addend The second number in an addition.\n * @returns {number} Returns the total.\n * @example\n *\n * _.add(6, 4);\n * // => 10\n */\n var add = createMathOperation(function(augend, addend) {\n return augend + addend;\n }, 0);\n\n /**\n * Computes `number` rounded up to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round up.\n * @param {number} [precision=0] The precision to round up to.\n * @returns {number} Returns the rounded up number.\n * @example\n *\n * _.ceil(4.006);\n * // => 5\n *\n * _.ceil(6.004, 2);\n * // => 6.01\n *\n * _.ceil(6040, -2);\n * // => 6100\n */\n var ceil = createRound('ceil');\n\n /**\n * Divide two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} dividend The first number in a division.\n * @param {number} divisor The second number in a division.\n * @returns {number} Returns the quotient.\n * @example\n *\n * _.divide(6, 4);\n * // => 1.5\n */\n var divide = createMathOperation(function(dividend, divisor) {\n return dividend / divisor;\n }, 1);\n\n /**\n * Computes `number` rounded down to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round down.\n * @param {number} [precision=0] The precision to round down to.\n * @returns {number} Returns the rounded down number.\n * @example\n *\n * _.floor(4.006);\n * // => 4\n *\n * _.floor(0.046, 2);\n * // => 0.04\n *\n * _.floor(4060, -2);\n * // => 4000\n */\n var floor = createRound('floor');\n\n /**\n * Computes the maximum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * _.max([4, 2, 8, 6]);\n * // => 8\n *\n * _.max([]);\n * // => undefined\n */\n function max(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseGt)\n : undefined;\n }\n\n /**\n * This method is like `_.max` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the maximum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.maxBy(objects, function(o) { return o.n; });\n * // => { 'n': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.maxBy(objects, 'n');\n * // => { 'n': 2 }\n */\n function maxBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n : undefined;\n }\n\n /**\n * Computes the mean of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the mean.\n * @example\n *\n * _.mean([4, 2, 8, 6]);\n * // => 5\n */\n function mean(array) {\n return baseMean(array, identity);\n }\n\n /**\n * This method is like `_.mean` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be averaged.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the mean.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.meanBy(objects, function(o) { return o.n; });\n * // => 5\n *\n * // The `_.property` iteratee shorthand.\n * _.meanBy(objects, 'n');\n * // => 5\n */\n function meanBy(array, iteratee) {\n return baseMean(array, getIteratee(iteratee, 2));\n }\n\n /**\n * Computes the minimum value of `array`. If `array` is empty or falsey,\n * `undefined` is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * _.min([4, 2, 8, 6]);\n * // => 2\n *\n * _.min([]);\n * // => undefined\n */\n function min(array) {\n return (array && array.length)\n ? baseExtremum(array, identity, baseLt)\n : undefined;\n }\n\n /**\n * This method is like `_.min` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * the value is ranked. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {*} Returns the minimum value.\n * @example\n *\n * var objects = [{ 'n': 1 }, { 'n': 2 }];\n *\n * _.minBy(objects, function(o) { return o.n; });\n * // => { 'n': 1 }\n *\n * // The `_.property` iteratee shorthand.\n * _.minBy(objects, 'n');\n * // => { 'n': 1 }\n */\n function minBy(array, iteratee) {\n return (array && array.length)\n ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n : undefined;\n }\n\n /**\n * Multiply two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Math\n * @param {number} multiplier The first number in a multiplication.\n * @param {number} multiplicand The second number in a multiplication.\n * @returns {number} Returns the product.\n * @example\n *\n * _.multiply(6, 4);\n * // => 24\n */\n var multiply = createMathOperation(function(multiplier, multiplicand) {\n return multiplier * multiplicand;\n }, 1);\n\n /**\n * Computes `number` rounded to `precision`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Math\n * @param {number} number The number to round.\n * @param {number} [precision=0] The precision to round to.\n * @returns {number} Returns the rounded number.\n * @example\n *\n * _.round(4.006);\n * // => 4\n *\n * _.round(4.006, 2);\n * // => 4.01\n *\n * _.round(4060, -2);\n * // => 4100\n */\n var round = createRound('round');\n\n /**\n * Subtract two numbers.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {number} minuend The first number in a subtraction.\n * @param {number} subtrahend The second number in a subtraction.\n * @returns {number} Returns the difference.\n * @example\n *\n * _.subtract(6, 4);\n * // => 2\n */\n var subtract = createMathOperation(function(minuend, subtrahend) {\n return minuend - subtrahend;\n }, 0);\n\n /**\n * Computes the sum of the values in `array`.\n *\n * @static\n * @memberOf _\n * @since 3.4.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @returns {number} Returns the sum.\n * @example\n *\n * _.sum([4, 2, 8, 6]);\n * // => 20\n */\n function sum(array) {\n return (array && array.length)\n ? baseSum(array, identity)\n : 0;\n }\n\n /**\n * This method is like `_.sum` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the value to be summed.\n * The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Math\n * @param {Array} array The array to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the sum.\n * @example\n *\n * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n *\n * _.sumBy(objects, function(o) { return o.n; });\n * // => 20\n *\n * // The `_.property` iteratee shorthand.\n * _.sumBy(objects, 'n');\n * // => 20\n */\n function sumBy(array, iteratee) {\n return (array && array.length)\n ? baseSum(array, getIteratee(iteratee, 2))\n : 0;\n }\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return wrapped values in chain sequences.\n lodash.after = after;\n lodash.ary = ary;\n lodash.assign = assign;\n lodash.assignIn = assignIn;\n lodash.assignInWith = assignInWith;\n lodash.assignWith = assignWith;\n lodash.at = at;\n lodash.before = before;\n lodash.bind = bind;\n lodash.bindAll = bindAll;\n lodash.bindKey = bindKey;\n lodash.castArray = castArray;\n lodash.chain = chain;\n lodash.chunk = chunk;\n lodash.compact = compact;\n lodash.concat = concat;\n lodash.cond = cond;\n lodash.conforms = conforms;\n lodash.constant = constant;\n lodash.countBy = countBy;\n lodash.create = create;\n lodash.curry = curry;\n lodash.curryRight = curryRight;\n lodash.debounce = debounce;\n lodash.defaults = defaults;\n lodash.defaultsDeep = defaultsDeep;\n lodash.defer = defer;\n lodash.delay = delay;\n lodash.difference = difference;\n lodash.differenceBy = differenceBy;\n lodash.differenceWith = differenceWith;\n lodash.drop = drop;\n lodash.dropRight = dropRight;\n lodash.dropRightWhile = dropRightWhile;\n lodash.dropWhile = dropWhile;\n lodash.fill = fill;\n lodash.filter = filter;\n lodash.flatMap = flatMap;\n lodash.flatMapDeep = flatMapDeep;\n lodash.flatMapDepth = flatMapDepth;\n lodash.flatten = flatten;\n lodash.flattenDeep = flattenDeep;\n lodash.flattenDepth = flattenDepth;\n lodash.flip = flip;\n lodash.flow = flow;\n lodash.flowRight = flowRight;\n lodash.fromPairs = fromPairs;\n lodash.functions = functions;\n lodash.functionsIn = functionsIn;\n lodash.groupBy = groupBy;\n lodash.initial = initial;\n lodash.intersection = intersection;\n lodash.intersectionBy = intersectionBy;\n lodash.intersectionWith = intersectionWith;\n lodash.invert = invert;\n lodash.invertBy = invertBy;\n lodash.invokeMap = invokeMap;\n lodash.iteratee = iteratee;\n lodash.keyBy = keyBy;\n lodash.keys = keys;\n lodash.keysIn = keysIn;\n lodash.map = map;\n lodash.mapKeys = mapKeys;\n lodash.mapValues = mapValues;\n lodash.matches = matches;\n lodash.matchesProperty = matchesProperty;\n lodash.memoize = memoize;\n lodash.merge = merge;\n lodash.mergeWith = mergeWith;\n lodash.method = method;\n lodash.methodOf = methodOf;\n lodash.mixin = mixin;\n lodash.negate = negate;\n lodash.nthArg = nthArg;\n lodash.omit = omit;\n lodash.omitBy = omitBy;\n lodash.once = once;\n lodash.orderBy = orderBy;\n lodash.over = over;\n lodash.overArgs = overArgs;\n lodash.overEvery = overEvery;\n lodash.overSome = overSome;\n lodash.partial = partial;\n lodash.partialRight = partialRight;\n lodash.partition = partition;\n lodash.pick = pick;\n lodash.pickBy = pickBy;\n lodash.property = property;\n lodash.propertyOf = propertyOf;\n lodash.pull = pull;\n lodash.pullAll = pullAll;\n lodash.pullAllBy = pullAllBy;\n lodash.pullAllWith = pullAllWith;\n lodash.pullAt = pullAt;\n lodash.range = range;\n lodash.rangeRight = rangeRight;\n lodash.rearg = rearg;\n lodash.reject = reject;\n lodash.remove = remove;\n lodash.rest = rest;\n lodash.reverse = reverse;\n lodash.sampleSize = sampleSize;\n lodash.set = set;\n lodash.setWith = setWith;\n lodash.shuffle = shuffle;\n lodash.slice = slice;\n lodash.sortBy = sortBy;\n lodash.sortedUniq = sortedUniq;\n lodash.sortedUniqBy = sortedUniqBy;\n lodash.split = split;\n lodash.spread = spread;\n lodash.tail = tail;\n lodash.take = take;\n lodash.takeRight = takeRight;\n lodash.takeRightWhile = takeRightWhile;\n lodash.takeWhile = takeWhile;\n lodash.tap = tap;\n lodash.throttle = throttle;\n lodash.thru = thru;\n lodash.toArray = toArray;\n lodash.toPairs = toPairs;\n lodash.toPairsIn = toPairsIn;\n lodash.toPath = toPath;\n lodash.toPlainObject = toPlainObject;\n lodash.transform = transform;\n lodash.unary = unary;\n lodash.union = union;\n lodash.unionBy = unionBy;\n lodash.unionWith = unionWith;\n lodash.uniq = uniq;\n lodash.uniqBy = uniqBy;\n lodash.uniqWith = uniqWith;\n lodash.unset = unset;\n lodash.unzip = unzip;\n lodash.unzipWith = unzipWith;\n lodash.update = update;\n lodash.updateWith = updateWith;\n lodash.values = values;\n lodash.valuesIn = valuesIn;\n lodash.without = without;\n lodash.words = words;\n lodash.wrap = wrap;\n lodash.xor = xor;\n lodash.xorBy = xorBy;\n lodash.xorWith = xorWith;\n lodash.zip = zip;\n lodash.zipObject = zipObject;\n lodash.zipObjectDeep = zipObjectDeep;\n lodash.zipWith = zipWith;\n\n // Add aliases.\n lodash.entries = toPairs;\n lodash.entriesIn = toPairsIn;\n lodash.extend = assignIn;\n lodash.extendWith = assignInWith;\n\n // Add methods to `lodash.prototype`.\n mixin(lodash, lodash);\n\n /*------------------------------------------------------------------------*/\n\n // Add methods that return unwrapped values in chain sequences.\n lodash.add = add;\n lodash.attempt = attempt;\n lodash.camelCase = camelCase;\n lodash.capitalize = capitalize;\n lodash.ceil = ceil;\n lodash.clamp = clamp;\n lodash.clone = clone;\n lodash.cloneDeep = cloneDeep;\n lodash.cloneDeepWith = cloneDeepWith;\n lodash.cloneWith = cloneWith;\n lodash.conformsTo = conformsTo;\n lodash.deburr = deburr;\n lodash.defaultTo = defaultTo;\n lodash.divide = divide;\n lodash.endsWith = endsWith;\n lodash.eq = eq;\n lodash.escape = escape;\n lodash.escapeRegExp = escapeRegExp;\n lodash.every = every;\n lodash.find = find;\n lodash.findIndex = findIndex;\n lodash.findKey = findKey;\n lodash.findLast = findLast;\n lodash.findLastIndex = findLastIndex;\n lodash.findLastKey = findLastKey;\n lodash.floor = floor;\n lodash.forEach = forEach;\n lodash.forEachRight = forEachRight;\n lodash.forIn = forIn;\n lodash.forInRight = forInRight;\n lodash.forOwn = forOwn;\n lodash.forOwnRight = forOwnRight;\n lodash.get = get;\n lodash.gt = gt;\n lodash.gte = gte;\n lodash.has = has;\n lodash.hasIn = hasIn;\n lodash.head = head;\n lodash.identity = identity;\n lodash.includes = includes;\n lodash.indexOf = indexOf;\n lodash.inRange = inRange;\n lodash.invoke = invoke;\n lodash.isArguments = isArguments;\n lodash.isArray = isArray;\n lodash.isArrayBuffer = isArrayBuffer;\n lodash.isArrayLike = isArrayLike;\n lodash.isArrayLikeObject = isArrayLikeObject;\n lodash.isBoolean = isBoolean;\n lodash.isBuffer = isBuffer;\n lodash.isDate = isDate;\n lodash.isElement = isElement;\n lodash.isEmpty = isEmpty;\n lodash.isEqual = isEqual;\n lodash.isEqualWith = isEqualWith;\n lodash.isError = isError;\n lodash.isFinite = isFinite;\n lodash.isFunction = isFunction;\n lodash.isInteger = isInteger;\n lodash.isLength = isLength;\n lodash.isMap = isMap;\n lodash.isMatch = isMatch;\n lodash.isMatchWith = isMatchWith;\n lodash.isNaN = isNaN;\n lodash.isNative = isNative;\n lodash.isNil = isNil;\n lodash.isNull = isNull;\n lodash.isNumber = isNumber;\n lodash.isObject = isObject;\n lodash.isObjectLike = isObjectLike;\n lodash.isPlainObject = isPlainObject;\n lodash.isRegExp = isRegExp;\n lodash.isSafeInteger = isSafeInteger;\n lodash.isSet = isSet;\n lodash.isString = isString;\n lodash.isSymbol = isSymbol;\n lodash.isTypedArray = isTypedArray;\n lodash.isUndefined = isUndefined;\n lodash.isWeakMap = isWeakMap;\n lodash.isWeakSet = isWeakSet;\n lodash.join = join;\n lodash.kebabCase = kebabCase;\n lodash.last = last;\n lodash.lastIndexOf = lastIndexOf;\n lodash.lowerCase = lowerCase;\n lodash.lowerFirst = lowerFirst;\n lodash.lt = lt;\n lodash.lte = lte;\n lodash.max = max;\n lodash.maxBy = maxBy;\n lodash.mean = mean;\n lodash.meanBy = meanBy;\n lodash.min = min;\n lodash.minBy = minBy;\n lodash.stubArray = stubArray;\n lodash.stubFalse = stubFalse;\n lodash.stubObject = stubObject;\n lodash.stubString = stubString;\n lodash.stubTrue = stubTrue;\n lodash.multiply = multiply;\n lodash.nth = nth;\n lodash.noConflict = noConflict;\n lodash.noop = noop;\n lodash.now = now;\n lodash.pad = pad;\n lodash.padEnd = padEnd;\n lodash.padStart = padStart;\n lodash.parseInt = parseInt;\n lodash.random = random;\n lodash.reduce = reduce;\n lodash.reduceRight = reduceRight;\n lodash.repeat = repeat;\n lodash.replace = replace;\n lodash.result = result;\n lodash.round = round;\n lodash.runInContext = runInContext;\n lodash.sample = sample;\n lodash.size = size;\n lodash.snakeCase = snakeCase;\n lodash.some = some;\n lodash.sortedIndex = sortedIndex;\n lodash.sortedIndexBy = sortedIndexBy;\n lodash.sortedIndexOf = sortedIndexOf;\n lodash.sortedLastIndex = sortedLastIndex;\n lodash.sortedLastIndexBy = sortedLastIndexBy;\n lodash.sortedLastIndexOf = sortedLastIndexOf;\n lodash.startCase = startCase;\n lodash.startsWith = startsWith;\n lodash.subtract = subtract;\n lodash.sum = sum;\n lodash.sumBy = sumBy;\n lodash.template = template;\n lodash.times = times;\n lodash.toFinite = toFinite;\n lodash.toInteger = toInteger;\n lodash.toLength = toLength;\n lodash.toLower = toLower;\n lodash.toNumber = toNumber;\n lodash.toSafeInteger = toSafeInteger;\n lodash.toString = toString;\n lodash.toUpper = toUpper;\n lodash.trim = trim;\n lodash.trimEnd = trimEnd;\n lodash.trimStart = trimStart;\n lodash.truncate = truncate;\n lodash.unescape = unescape;\n lodash.uniqueId = uniqueId;\n lodash.upperCase = upperCase;\n lodash.upperFirst = upperFirst;\n\n // Add aliases.\n lodash.each = forEach;\n lodash.eachRight = forEachRight;\n lodash.first = head;\n\n mixin(lodash, (function() {\n var source = {};\n baseForOwn(lodash, function(func, methodName) {\n if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n source[methodName] = func;\n }\n });\n return source;\n }()), { 'chain': false });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The semantic version number.\n *\n * @static\n * @memberOf _\n * @type {string}\n */\n lodash.VERSION = VERSION;\n\n // Assign default placeholders.\n arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n lodash[methodName].placeholder = lodash;\n });\n\n // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n arrayEach(['drop', 'take'], function(methodName, index) {\n LazyWrapper.prototype[methodName] = function(n) {\n n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n var result = (this.__filtered__ && !index)\n ? new LazyWrapper(this)\n : this.clone();\n\n if (result.__filtered__) {\n result.__takeCount__ = nativeMin(n, result.__takeCount__);\n } else {\n result.__views__.push({\n 'size': nativeMin(n, MAX_ARRAY_LENGTH),\n 'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n });\n }\n return result;\n };\n\n LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n return this.reverse()[methodName](n).reverse();\n };\n });\n\n // Add `LazyWrapper` methods that accept an `iteratee` value.\n arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n var type = index + 1,\n isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n LazyWrapper.prototype[methodName] = function(iteratee) {\n var result = this.clone();\n result.__iteratees__.push({\n 'iteratee': getIteratee(iteratee, 3),\n 'type': type\n });\n result.__filtered__ = result.__filtered__ || isFilter;\n return result;\n };\n });\n\n // Add `LazyWrapper` methods for `_.head` and `_.last`.\n arrayEach(['head', 'last'], function(methodName, index) {\n var takeName = 'take' + (index ? 'Right' : '');\n\n LazyWrapper.prototype[methodName] = function() {\n return this[takeName](1).value()[0];\n };\n });\n\n // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n arrayEach(['initial', 'tail'], function(methodName, index) {\n var dropName = 'drop' + (index ? '' : 'Right');\n\n LazyWrapper.prototype[methodName] = function() {\n return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n };\n });\n\n LazyWrapper.prototype.compact = function() {\n return this.filter(identity);\n };\n\n LazyWrapper.prototype.find = function(predicate) {\n return this.filter(predicate).head();\n };\n\n LazyWrapper.prototype.findLast = function(predicate) {\n return this.reverse().find(predicate);\n };\n\n LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n if (typeof path == 'function') {\n return new LazyWrapper(this);\n }\n return this.map(function(value) {\n return baseInvoke(value, path, args);\n });\n });\n\n LazyWrapper.prototype.reject = function(predicate) {\n return this.filter(negate(getIteratee(predicate)));\n };\n\n LazyWrapper.prototype.slice = function(start, end) {\n start = toInteger(start);\n\n var result = this;\n if (result.__filtered__ && (start > 0 || end < 0)) {\n return new LazyWrapper(result);\n }\n if (start < 0) {\n result = result.takeRight(-start);\n } else if (start) {\n result = result.drop(start);\n }\n if (end !== undefined) {\n end = toInteger(end);\n result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n }\n return result;\n };\n\n LazyWrapper.prototype.takeRightWhile = function(predicate) {\n return this.reverse().takeWhile(predicate).reverse();\n };\n\n LazyWrapper.prototype.toArray = function() {\n return this.take(MAX_ARRAY_LENGTH);\n };\n\n // Add `LazyWrapper` methods to `lodash.prototype`.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n isTaker = /^(?:head|last)$/.test(methodName),\n lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n retUnwrapped = isTaker || /^find/.test(methodName);\n\n if (!lodashFunc) {\n return;\n }\n lodash.prototype[methodName] = function() {\n var value = this.__wrapped__,\n args = isTaker ? [1] : arguments,\n isLazy = value instanceof LazyWrapper,\n iteratee = args[0],\n useLazy = isLazy || isArray(value);\n\n var interceptor = function(value) {\n var result = lodashFunc.apply(lodash, arrayPush([value], args));\n return (isTaker && chainAll) ? result[0] : result;\n };\n\n if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n isLazy = useLazy = false;\n }\n var chainAll = this.__chain__,\n isHybrid = !!this.__actions__.length,\n isUnwrapped = retUnwrapped && !chainAll,\n onlyLazy = isLazy && !isHybrid;\n\n if (!retUnwrapped && useLazy) {\n value = onlyLazy ? value : new LazyWrapper(this);\n var result = func.apply(value, args);\n result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n return new LodashWrapper(result, chainAll);\n }\n if (isUnwrapped && onlyLazy) {\n return func.apply(this, args);\n }\n result = this.thru(interceptor);\n return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n };\n });\n\n // Add `Array` methods to `lodash.prototype`.\n arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n var func = arrayProto[methodName],\n chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n lodash.prototype[methodName] = function() {\n var args = arguments;\n if (retUnwrapped && !this.__chain__) {\n var value = this.value();\n return func.apply(isArray(value) ? value : [], args);\n }\n return this[chainName](function(value) {\n return func.apply(isArray(value) ? value : [], args);\n });\n };\n });\n\n // Map minified method names to their real names.\n baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n var lodashFunc = lodash[methodName];\n if (lodashFunc) {\n var key = lodashFunc.name + '';\n if (!hasOwnProperty.call(realNames, key)) {\n realNames[key] = [];\n }\n realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n }\n });\n\n realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n 'name': 'wrapper',\n 'func': undefined\n }];\n\n // Add methods to `LazyWrapper`.\n LazyWrapper.prototype.clone = lazyClone;\n LazyWrapper.prototype.reverse = lazyReverse;\n LazyWrapper.prototype.value = lazyValue;\n\n // Add chain sequence methods to the `lodash` wrapper.\n lodash.prototype.at = wrapperAt;\n lodash.prototype.chain = wrapperChain;\n lodash.prototype.commit = wrapperCommit;\n lodash.prototype.next = wrapperNext;\n lodash.prototype.plant = wrapperPlant;\n lodash.prototype.reverse = wrapperReverse;\n lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n // Add lazy aliases.\n lodash.prototype.first = lodash.prototype.head;\n\n if (symIterator) {\n lodash.prototype[symIterator] = wrapperToIterator;\n }\n return lodash;\n });\n\n /*--------------------------------------------------------------------------*/\n\n // Export lodash.\n var _ = runInContext();\n\n // Some AMD build optimizers, like r.js, check for condition patterns like:\n if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n // Expose Lodash on the global object to prevent errors when Lodash is\n // loaded by a script tag in the presence of an AMD loader.\n // See http://requirejs.org/docs/errors.html#mismatch for more details.\n // Use `_.noConflict` to remove Lodash from the global object.\n root._ = _;\n\n // Define as an anonymous module so, through path mapping, it can be\n // referenced as the \"underscore\" module.\n define(function() {\n return _;\n });\n }\n // Check for `exports` after `define` in case a build optimizer adds it.\n else if (freeModule) {\n // Export for Node.js.\n (freeModule.exports = _)._ = _;\n // Export for CommonJS support.\n freeExports._ = _;\n }\n else {\n // Export to the global object.\n root._ = _;\n }\n}.call(this));\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n TIME: 'HH:mm', // <input type=\"time\" />\n TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n MONTH: 'YYYY-MM', // <input type=\"month\" />\n };\n\n return hooks;\n\n})));\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar React = require('react');\nvar React__default = _interopDefault(React);\n\nvar UAParser = require('ua-parser-js/dist/ua-parser.min');\n\nvar ClientUAInstance = new UAParser();\nvar browser = ClientUAInstance.getBrowser();\nvar cpu = ClientUAInstance.getCPU();\nvar device = ClientUAInstance.getDevice();\nvar engine = ClientUAInstance.getEngine();\nvar os = ClientUAInstance.getOS();\nvar ua = ClientUAInstance.getUA();\nvar setUa = function setUa(userAgentString) {\n return ClientUAInstance.setUA(userAgentString);\n};\nvar parseUserAgent = function parseUserAgent(userAgent) {\n if (!userAgent) {\n console.error('No userAgent string was provided');\n return;\n }\n\n var UserAgentInstance = new UAParser(userAgent);\n return {\n UA: UserAgentInstance,\n browser: UserAgentInstance.getBrowser(),\n cpu: UserAgentInstance.getCPU(),\n device: UserAgentInstance.getDevice(),\n engine: UserAgentInstance.getEngine(),\n os: UserAgentInstance.getOS(),\n ua: UserAgentInstance.getUA(),\n setUserAgent: function setUserAgent(userAgentString) {\n return UserAgentInstance.setUA(userAgentString);\n }\n };\n};\n\nvar UAHelper = /*#__PURE__*/Object.freeze({\n ClientUAInstance: ClientUAInstance,\n browser: browser,\n cpu: cpu,\n device: device,\n engine: engine,\n os: os,\n ua: ua,\n setUa: setUa,\n parseUserAgent: parseUserAgent\n});\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar DeviceTypes = {\n Mobile: 'mobile',\n Tablet: 'tablet',\n SmartTv: 'smarttv',\n Console: 'console',\n Wearable: 'wearable',\n Embedded: 'embedded',\n Browser: undefined\n};\nvar BrowserTypes = {\n Chrome: 'Chrome',\n Firefox: 'Firefox',\n Opera: 'Opera',\n Yandex: 'Yandex',\n Safari: 'Safari',\n InternetExplorer: 'Internet Explorer',\n Edge: 'Edge',\n Chromium: 'Chromium',\n Ie: 'IE',\n MobileSafari: 'Mobile Safari',\n EdgeChromium: 'Edge Chromium',\n MIUI: 'MIUI Browser',\n SamsungBrowser: 'Samsung Browser'\n};\nvar OsTypes = {\n IOS: 'iOS',\n Android: 'Android',\n WindowsPhone: 'Windows Phone',\n Windows: 'Windows',\n MAC_OS: 'Mac OS'\n};\nvar InitialDeviceTypes = {\n isMobile: false,\n isTablet: false,\n isBrowser: false,\n isSmartTV: false,\n isConsole: false,\n isWearable: false\n};\n\nvar checkDeviceType = function checkDeviceType(type) {\n switch (type) {\n case DeviceTypes.Mobile:\n return {\n isMobile: true\n };\n\n case DeviceTypes.Tablet:\n return {\n isTablet: true\n };\n\n case DeviceTypes.SmartTv:\n return {\n isSmartTV: true\n };\n\n case DeviceTypes.Console:\n return {\n isConsole: true\n };\n\n case DeviceTypes.Wearable:\n return {\n isWearable: true\n };\n\n case DeviceTypes.Browser:\n return {\n isBrowser: true\n };\n\n case DeviceTypes.Embedded:\n return {\n isEmbedded: true\n };\n\n default:\n return InitialDeviceTypes;\n }\n};\nvar setUserAgent = function setUserAgent(userAgent) {\n return setUa(userAgent);\n};\nvar setDefaults = function setDefaults(p) {\n var d = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'none';\n return p ? p : d;\n};\nvar getNavigatorInstance = function getNavigatorInstance() {\n if (typeof window !== 'undefined') {\n if (window.navigator || navigator) {\n return window.navigator || navigator;\n }\n }\n\n return false;\n};\nvar isIOS13Check = function isIOS13Check(type) {\n var nav = getNavigatorInstance();\n return nav && nav.platform && (nav.platform.indexOf(type) !== -1 || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1 && !window.MSStream);\n};\n\nvar browserPayload = function browserPayload(isBrowser, browser, engine, os, ua) {\n return {\n isBrowser: isBrowser,\n browserMajorVersion: setDefaults(browser.major),\n browserFullVersion: setDefaults(browser.version),\n browserName: setDefaults(browser.name),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar mobilePayload = function mobilePayload(type, device, os, ua) {\n return _objectSpread2({}, type, {\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n os: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n ua: setDefaults(ua)\n });\n};\nvar smartTvPayload = function smartTvPayload(isSmartTV, engine, os, ua) {\n return {\n isSmartTV: isSmartTV,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar consolePayload = function consolePayload(isConsole, engine, os, ua) {\n return {\n isConsole: isConsole,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar wearablePayload = function wearablePayload(isWearable, engine, os, ua) {\n return {\n isWearable: isWearable,\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\nvar embeddedPayload = function embeddedPayload(isEmbedded, device, engine, os, ua) {\n return {\n isEmbedded: isEmbedded,\n vendor: setDefaults(device.vendor),\n model: setDefaults(device.model),\n engineName: setDefaults(engine.name),\n engineVersion: setDefaults(engine.version),\n osName: setDefaults(os.name),\n osVersion: setDefaults(os.version),\n userAgent: setDefaults(ua)\n };\n};\n\nfunction deviceDetect(userAgent) {\n var _ref = userAgent ? parseUserAgent(userAgent) : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n engine = _ref.engine,\n os = _ref.os,\n ua = _ref.ua;\n\n var type = checkDeviceType(device.type);\n var isBrowser = type.isBrowser,\n isMobile = type.isMobile,\n isTablet = type.isTablet,\n isSmartTV = type.isSmartTV,\n isConsole = type.isConsole,\n isWearable = type.isWearable,\n isEmbedded = type.isEmbedded;\n\n if (isBrowser) {\n return browserPayload(isBrowser, browser, engine, os, ua);\n }\n\n if (isSmartTV) {\n return smartTvPayload(isSmartTV, engine, os, ua);\n }\n\n if (isConsole) {\n return consolePayload(isConsole, engine, os, ua);\n }\n\n if (isMobile) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isTablet) {\n return mobilePayload(type, device, os, ua);\n }\n\n if (isWearable) {\n return wearablePayload(isWearable, engine, os, ua);\n }\n\n if (isEmbedded) {\n return embeddedPayload(isEmbedded, device, engine, os, ua);\n }\n}\n\nvar isMobileType = function isMobileType(_ref) {\n var type = _ref.type;\n return type === DeviceTypes.Mobile;\n};\nvar isTabletType = function isTabletType(_ref2) {\n var type = _ref2.type;\n return type === DeviceTypes.Tablet;\n};\nvar isMobileAndTabletType = function isMobileAndTabletType(_ref3) {\n var type = _ref3.type;\n return type === DeviceTypes.Mobile || type === DeviceTypes.Tablet;\n};\nvar isSmartTVType = function isSmartTVType(_ref4) {\n var type = _ref4.type;\n return type === DeviceTypes.SmartTv;\n};\nvar isBrowserType = function isBrowserType(_ref5) {\n var type = _ref5.type;\n return type === DeviceTypes.Browser;\n};\nvar isWearableType = function isWearableType(_ref6) {\n var type = _ref6.type;\n return type === DeviceTypes.Wearable;\n};\nvar isConsoleType = function isConsoleType(_ref7) {\n var type = _ref7.type;\n return type === DeviceTypes.Console;\n};\nvar isEmbeddedType = function isEmbeddedType(_ref8) {\n var type = _ref8.type;\n return type === DeviceTypes.Embedded;\n};\nvar getMobileVendor = function getMobileVendor(_ref9) {\n var vendor = _ref9.vendor;\n return setDefaults(vendor);\n};\nvar getMobileModel = function getMobileModel(_ref10) {\n var model = _ref10.model;\n return setDefaults(model);\n};\nvar getDeviceType = function getDeviceType(_ref11) {\n var type = _ref11.type;\n return setDefaults(type, 'browser');\n}; // os types\n\nvar isAndroidType = function isAndroidType(_ref12) {\n var name = _ref12.name;\n return name === OsTypes.Android;\n};\nvar isWindowsType = function isWindowsType(_ref13) {\n var name = _ref13.name;\n return name === OsTypes.Windows;\n};\nvar isMacOsType = function isMacOsType(_ref14) {\n var name = _ref14.name;\n return name === OsTypes.MAC_OS;\n};\nvar isWinPhoneType = function isWinPhoneType(_ref15) {\n var name = _ref15.name;\n return name === OsTypes.WindowsPhone;\n};\nvar isIOSType = function isIOSType(_ref16) {\n var name = _ref16.name;\n return name === OsTypes.IOS;\n};\nvar getOsVersion = function getOsVersion(_ref17) {\n var version = _ref17.version;\n return setDefaults(version);\n};\nvar getOsName = function getOsName(_ref18) {\n var name = _ref18.name;\n return setDefaults(name);\n}; // browser types\n\nvar isChromeType = function isChromeType(_ref19) {\n var name = _ref19.name;\n return name === BrowserTypes.Chrome;\n};\nvar isFirefoxType = function isFirefoxType(_ref20) {\n var name = _ref20.name;\n return name === BrowserTypes.Firefox;\n};\nvar isChromiumType = function isChromiumType(_ref21) {\n var name = _ref21.name;\n return name === BrowserTypes.Chromium;\n};\nvar isEdgeType = function isEdgeType(_ref22) {\n var name = _ref22.name;\n return name === BrowserTypes.Edge;\n};\nvar isYandexType = function isYandexType(_ref23) {\n var name = _ref23.name;\n return name === BrowserTypes.Yandex;\n};\nvar isSafariType = function isSafariType(_ref24) {\n var name = _ref24.name;\n return name === BrowserTypes.Safari || name === BrowserTypes.MobileSafari;\n};\nvar isMobileSafariType = function isMobileSafariType(_ref25) {\n var name = _ref25.name;\n return name === BrowserTypes.MobileSafari;\n};\nvar isOperaType = function isOperaType(_ref26) {\n var name = _ref26.name;\n return name === BrowserTypes.Opera;\n};\nvar isIEType = function isIEType(_ref27) {\n var name = _ref27.name;\n return name === BrowserTypes.InternetExplorer || name === BrowserTypes.Ie;\n};\nvar isMIUIType = function isMIUIType(_ref28) {\n var name = _ref28.name;\n return name === BrowserTypes.MIUI;\n};\nvar isSamsungBrowserType = function isSamsungBrowserType(_ref29) {\n var name = _ref29.name;\n return name === BrowserTypes.SamsungBrowser;\n};\nvar getBrowserFullVersion = function getBrowserFullVersion(_ref30) {\n var version = _ref30.version;\n return setDefaults(version);\n};\nvar getBrowserVersion = function getBrowserVersion(_ref31) {\n var major = _ref31.major;\n return setDefaults(major);\n};\nvar getBrowserName = function getBrowserName(_ref32) {\n var name = _ref32.name;\n return setDefaults(name);\n}; // engine types\n\nvar getEngineName = function getEngineName(_ref33) {\n var name = _ref33.name;\n return setDefaults(name);\n};\nvar getEngineVersion = function getEngineVersion(_ref34) {\n var version = _ref34.version;\n return setDefaults(version);\n};\nvar isElectronType = function isElectronType() {\n var nav = getNavigatorInstance();\n var ua = nav && nav.userAgent && nav.userAgent.toLowerCase();\n return typeof ua === 'string' ? /electron/.test(ua) : false;\n};\nvar isEdgeChromiumType = function isEdgeChromiumType(ua) {\n return typeof ua === 'string' && ua.indexOf('Edg/') !== -1;\n};\nvar getIOS13 = function getIOS13() {\n var nav = getNavigatorInstance();\n return nav && (/iPad|iPhone|iPod/.test(nav.platform) || nav.platform === 'MacIntel' && nav.maxTouchPoints > 1) && !window.MSStream;\n};\nvar getIPad13 = function getIPad13() {\n return isIOS13Check('iPad');\n};\nvar getIphone13 = function getIphone13() {\n return isIOS13Check('iPhone');\n};\nvar getIPod13 = function getIPod13() {\n return isIOS13Check('iPod');\n};\nvar getUseragent = function getUseragent(userAg) {\n return setDefaults(userAg);\n};\n\nfunction buildSelectorsObject(options) {\n var _ref = options ? options : UAHelper,\n device = _ref.device,\n browser = _ref.browser,\n os = _ref.os,\n engine = _ref.engine,\n ua = _ref.ua;\n\n return {\n isSmartTV: isSmartTVType(device),\n isConsole: isConsoleType(device),\n isWearable: isWearableType(device),\n isEmbedded: isEmbeddedType(device),\n isMobileSafari: isMobileSafariType(browser) || getIPad13(),\n isChromium: isChromiumType(browser),\n isMobile: isMobileAndTabletType(device) || getIPad13(),\n isMobileOnly: isMobileType(device),\n isTablet: isTabletType(device) || getIPad13(),\n isBrowser: isBrowserType(device),\n isDesktop: isBrowserType(device),\n isAndroid: isAndroidType(os),\n isWinPhone: isWinPhoneType(os),\n isIOS: isIOSType(os) || getIPad13(),\n isChrome: isChromeType(browser),\n isFirefox: isFirefoxType(browser),\n isSafari: isSafariType(browser),\n isOpera: isOperaType(browser),\n isIE: isIEType(browser),\n osVersion: getOsVersion(os),\n osName: getOsName(os),\n fullBrowserVersion: getBrowserFullVersion(browser),\n browserVersion: getBrowserVersion(browser),\n browserName: getBrowserName(browser),\n mobileVendor: getMobileVendor(device),\n mobileModel: getMobileModel(device),\n engineName: getEngineName(engine),\n engineVersion: getEngineVersion(engine),\n getUA: getUseragent(ua),\n isEdge: isEdgeType(browser) || isEdgeChromiumType(ua),\n isYandex: isYandexType(browser),\n deviceType: getDeviceType(device),\n isIOS13: getIOS13(),\n isIPad13: getIPad13(),\n isIPhone13: getIphone13(),\n isIPod13: getIPod13(),\n isElectron: isElectronType(),\n isEdgeChromium: isEdgeChromiumType(ua),\n isLegacyEdge: isEdgeType(browser) && !isEdgeChromiumType(ua),\n isWindows: isWindowsType(os),\n isMacOs: isMacOsType(os),\n isMIUI: isMIUIType(browser),\n isSamsungBrowser: isSamsungBrowserType(browser)\n };\n}\n\nvar isSmartTV = isSmartTVType(device);\nvar isConsole = isConsoleType(device);\nvar isWearable = isWearableType(device);\nvar isEmbedded = isEmbeddedType(device);\nvar isMobileSafari = isMobileSafariType(browser) || getIPad13();\nvar isChromium = isChromiumType(browser);\nvar isMobile = isMobileAndTabletType(device) || getIPad13();\nvar isMobileOnly = isMobileType(device);\nvar isTablet = isTabletType(device) || getIPad13();\nvar isBrowser = isBrowserType(device);\nvar isDesktop = isBrowserType(device);\nvar isAndroid = isAndroidType(os);\nvar isWinPhone = isWinPhoneType(os);\nvar isIOS = isIOSType(os) || getIPad13();\nvar isChrome = isChromeType(browser);\nvar isFirefox = isFirefoxType(browser);\nvar isSafari = isSafariType(browser);\nvar isOpera = isOperaType(browser);\nvar isIE = isIEType(browser);\nvar osVersion = getOsVersion(os);\nvar osName = getOsName(os);\nvar fullBrowserVersion = getBrowserFullVersion(browser);\nvar browserVersion = getBrowserVersion(browser);\nvar browserName = getBrowserName(browser);\nvar mobileVendor = getMobileVendor(device);\nvar mobileModel = getMobileModel(device);\nvar engineName = getEngineName(engine);\nvar engineVersion = getEngineVersion(engine);\nvar getUA = getUseragent(ua);\nvar isEdge = isEdgeType(browser) || isEdgeChromiumType(ua);\nvar isYandex = isYandexType(browser);\nvar deviceType = getDeviceType(device);\nvar isIOS13 = getIOS13();\nvar isIPad13 = getIPad13();\nvar isIPhone13 = getIphone13();\nvar isIPod13 = getIPod13();\nvar isElectron = isElectronType();\nvar isEdgeChromium = isEdgeChromiumType(ua);\nvar isLegacyEdge = isEdgeType(browser) && !isEdgeChromiumType(ua);\nvar isWindows = isWindowsType(os);\nvar isMacOs = isMacOsType(os);\nvar isMIUI = isMIUIType(browser);\nvar isSamsungBrowser = isSamsungBrowserType(browser);\nvar getSelectorsByUserAgent = function getSelectorsByUserAgent(userAgent) {\n if (!userAgent || typeof userAgent !== 'string') {\n console.error('No valid user agent string was provided');\n return;\n }\n\n var _UAHelper$parseUserAg = parseUserAgent(userAgent),\n device = _UAHelper$parseUserAg.device,\n browser = _UAHelper$parseUserAg.browser,\n os = _UAHelper$parseUserAg.os,\n engine = _UAHelper$parseUserAg.engine,\n ua = _UAHelper$parseUserAg.ua;\n\n return buildSelectorsObject({\n device: device,\n browser: browser,\n os: os,\n engine: engine,\n ua: ua\n });\n};\n\nvar AndroidView = function AndroidView(_ref) {\n var renderWithFragment = _ref.renderWithFragment,\n children = _ref.children,\n props = _objectWithoutProperties(_ref, [\"renderWithFragment\", \"children\"]);\n\n return isAndroid ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar BrowserView = function BrowserView(_ref2) {\n var renderWithFragment = _ref2.renderWithFragment,\n children = _ref2.children,\n props = _objectWithoutProperties(_ref2, [\"renderWithFragment\", \"children\"]);\n\n return isBrowser ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IEView = function IEView(_ref3) {\n var renderWithFragment = _ref3.renderWithFragment,\n children = _ref3.children,\n props = _objectWithoutProperties(_ref3, [\"renderWithFragment\", \"children\"]);\n\n return isIE ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar IOSView = function IOSView(_ref4) {\n var renderWithFragment = _ref4.renderWithFragment,\n children = _ref4.children,\n props = _objectWithoutProperties(_ref4, [\"renderWithFragment\", \"children\"]);\n\n return isIOS ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileView = function MobileView(_ref5) {\n var renderWithFragment = _ref5.renderWithFragment,\n children = _ref5.children,\n props = _objectWithoutProperties(_ref5, [\"renderWithFragment\", \"children\"]);\n\n return isMobile ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar TabletView = function TabletView(_ref6) {\n var renderWithFragment = _ref6.renderWithFragment,\n children = _ref6.children,\n props = _objectWithoutProperties(_ref6, [\"renderWithFragment\", \"children\"]);\n\n return isTablet ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WinPhoneView = function WinPhoneView(_ref7) {\n var renderWithFragment = _ref7.renderWithFragment,\n children = _ref7.children,\n props = _objectWithoutProperties(_ref7, [\"renderWithFragment\", \"children\"]);\n\n return isWinPhone ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar MobileOnlyView = function MobileOnlyView(_ref8) {\n var renderWithFragment = _ref8.renderWithFragment,\n children = _ref8.children,\n viewClassName = _ref8.viewClassName,\n style = _ref8.style,\n props = _objectWithoutProperties(_ref8, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\"]);\n\n return isMobileOnly ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar SmartTVView = function SmartTVView(_ref9) {\n var renderWithFragment = _ref9.renderWithFragment,\n children = _ref9.children,\n props = _objectWithoutProperties(_ref9, [\"renderWithFragment\", \"children\"]);\n\n return isSmartTV ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar ConsoleView = function ConsoleView(_ref10) {\n var renderWithFragment = _ref10.renderWithFragment,\n children = _ref10.children,\n props = _objectWithoutProperties(_ref10, [\"renderWithFragment\", \"children\"]);\n\n return isConsole ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar WearableView = function WearableView(_ref11) {\n var renderWithFragment = _ref11.renderWithFragment,\n children = _ref11.children,\n props = _objectWithoutProperties(_ref11, [\"renderWithFragment\", \"children\"]);\n\n return isWearable ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\nvar CustomView = function CustomView(_ref12) {\n var renderWithFragment = _ref12.renderWithFragment,\n children = _ref12.children,\n viewClassName = _ref12.viewClassName,\n style = _ref12.style,\n condition = _ref12.condition,\n props = _objectWithoutProperties(_ref12, [\"renderWithFragment\", \"children\", \"viewClassName\", \"style\", \"condition\"]);\n\n return condition ? renderWithFragment ? React__default.createElement(React.Fragment, null, children) : React__default.createElement(\"div\", props, children) : null;\n};\n\nfunction withOrientationChange(WrappedComponent) {\n return /*#__PURE__*/function (_React$Component) {\n _inherits(_class, _React$Component);\n\n function _class(props) {\n var _this;\n\n _classCallCheck(this, _class);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(_class).call(this, props));\n _this.isEventListenerAdded = false;\n _this.handleOrientationChange = _this.handleOrientationChange.bind(_assertThisInitialized(_this));\n _this.onOrientationChange = _this.onOrientationChange.bind(_assertThisInitialized(_this));\n _this.onPageLoad = _this.onPageLoad.bind(_assertThisInitialized(_this));\n _this.state = {\n isLandscape: false,\n isPortrait: false\n };\n return _this;\n }\n\n _createClass(_class, [{\n key: \"handleOrientationChange\",\n value: function handleOrientationChange() {\n if (!this.isEventListenerAdded) {\n this.isEventListenerAdded = true;\n }\n\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n this.setState({\n isPortrait: orientation === 0,\n isLandscape: orientation === 90\n });\n }\n }, {\n key: \"onOrientationChange\",\n value: function onOrientationChange() {\n this.handleOrientationChange();\n }\n }, {\n key: \"onPageLoad\",\n value: function onPageLoad() {\n this.handleOrientationChange();\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n if (!this.isEventListenerAdded) {\n this.handleOrientationChange();\n window.addEventListener(\"load\", this.onPageLoad, false);\n } else {\n window.removeEventListener(\"load\", this.onPageLoad, false);\n }\n\n window.addEventListener(\"resize\", this.onOrientationChange, false);\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n window.removeEventListener(\"resize\", this.onOrientationChange, false);\n }\n }, {\n key: \"render\",\n value: function render() {\n return React__default.createElement(WrappedComponent, _extends({}, this.props, {\n isLandscape: this.state.isLandscape,\n isPortrait: this.state.isPortrait\n }));\n }\n }]);\n\n return _class;\n }(React__default.Component);\n}\n\nfunction useMobileOrientation() {\n var _useState = React.useState(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n return {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n }),\n _useState2 = _slicedToArray(_useState, 2),\n state = _useState2[0],\n setState = _useState2[1];\n\n var handleOrientationChange = React.useCallback(function () {\n var orientation = window.innerWidth > window.innerHeight ? 90 : 0;\n var next = {\n isPortrait: orientation === 0,\n isLandscape: orientation === 90,\n orientation: orientation === 0 ? 'portrait' : 'landscape'\n };\n state.orientation !== next.orientation && setState(next);\n }, [state.orientation]);\n React.useEffect(function () {\n if ((typeof window === \"undefined\" ? \"undefined\" : _typeof(window)) !== undefined && isMobile) {\n handleOrientationChange();\n window.addEventListener(\"load\", handleOrientationChange, false);\n window.addEventListener(\"resize\", handleOrientationChange, false);\n }\n\n return function () {\n window.removeEventListener(\"resize\", handleOrientationChange, false);\n window.removeEventListener(\"load\", handleOrientationChange, false);\n };\n }, [handleOrientationChange]);\n return state;\n}\n\nfunction useDeviceData(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n return parseUserAgent(hookUserAgent);\n}\n\nfunction useDeviceSelectors(userAgent) {\n var hookUserAgent = userAgent ? userAgent : window.navigator.userAgent;\n var deviceData = useDeviceData(hookUserAgent);\n var selectors = buildSelectorsObject(deviceData);\n return [selectors, deviceData];\n}\n\nexports.AndroidView = AndroidView;\nexports.BrowserTypes = BrowserTypes;\nexports.BrowserView = BrowserView;\nexports.ConsoleView = ConsoleView;\nexports.CustomView = CustomView;\nexports.IEView = IEView;\nexports.IOSView = IOSView;\nexports.MobileOnlyView = MobileOnlyView;\nexports.MobileView = MobileView;\nexports.OsTypes = OsTypes;\nexports.SmartTVView = SmartTVView;\nexports.TabletView = TabletView;\nexports.WearableView = WearableView;\nexports.WinPhoneView = WinPhoneView;\nexports.browserName = browserName;\nexports.browserVersion = browserVersion;\nexports.deviceDetect = deviceDetect;\nexports.deviceType = deviceType;\nexports.engineName = engineName;\nexports.engineVersion = engineVersion;\nexports.fullBrowserVersion = fullBrowserVersion;\nexports.getSelectorsByUserAgent = getSelectorsByUserAgent;\nexports.getUA = getUA;\nexports.isAndroid = isAndroid;\nexports.isBrowser = isBrowser;\nexports.isChrome = isChrome;\nexports.isChromium = isChromium;\nexports.isConsole = isConsole;\nexports.isDesktop = isDesktop;\nexports.isEdge = isEdge;\nexports.isEdgeChromium = isEdgeChromium;\nexports.isElectron = isElectron;\nexports.isEmbedded = isEmbedded;\nexports.isFirefox = isFirefox;\nexports.isIE = isIE;\nexports.isIOS = isIOS;\nexports.isIOS13 = isIOS13;\nexports.isIPad13 = isIPad13;\nexports.isIPhone13 = isIPhone13;\nexports.isIPod13 = isIPod13;\nexports.isLegacyEdge = isLegacyEdge;\nexports.isMIUI = isMIUI;\nexports.isMacOs = isMacOs;\nexports.isMobile = isMobile;\nexports.isMobileOnly = isMobileOnly;\nexports.isMobileSafari = isMobileSafari;\nexports.isOpera = isOpera;\nexports.isSafari = isSafari;\nexports.isSamsungBrowser = isSamsungBrowser;\nexports.isSmartTV = isSmartTV;\nexports.isTablet = isTablet;\nexports.isWearable = isWearable;\nexports.isWinPhone = isWinPhone;\nexports.isWindows = isWindows;\nexports.isYandex = isYandex;\nexports.mobileModel = mobileModel;\nexports.mobileVendor = mobileVendor;\nexports.osName = osName;\nexports.osVersion = osVersion;\nexports.parseUserAgent = parseUserAgent;\nexports.setUserAgent = setUserAgent;\nexports.useDeviceData = useDeviceData;\nexports.useDeviceSelectors = useDeviceSelectors;\nexports.useMobileOrientation = useMobileOrientation;\nexports.withOrientationChange = withOrientationChange;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;function Lg(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}var Mg=Uf(null),Ng=null,Og=null,Pg=null;function Qg(){Pg=Og=Ng=null}function Rg(a){var b=Mg.current;E(Mg);a._currentValue=b}\nfunction Sg(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}function Tg(a,b){Ng=a;Pg=Og=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(Ug=!0),a.firstContext=null)}\nfunction Vg(a){var b=a._currentValue;if(Pg!==a)if(a={context:a,memoizedValue:b,next:null},null===Og){if(null===Ng)throw Error(p(308));Og=a;Ng.dependencies={lanes:0,firstContext:a}}else Og=Og.next=a;return b}var Wg=null;function Xg(a){null===Wg?Wg=[a]:Wg.push(a)}function Yg(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,Xg(b)):(c.next=e.next,e.next=c);b.interleaved=c;return Zg(a,d)}\nfunction Zg(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var $g=!1;function ah(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction bh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function ch(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction dh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return Zg(a,c)}e=d.interleaved;null===e?(b.next=b,Xg(d)):(b.next=e.next,e.next=b);d.interleaved=b;return Zg(a,c)}function eh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction fh(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction gh(a,b,c,d){var e=a.updateQueue;$g=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:$g=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);hh|=g;a.lanes=g;a.memoizedState=q}}\nfunction ih(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var jh=(new aa.Component).refs;function kh(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar nh={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=L(),e=lh(a),f=ch(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=dh(a,f,e);null!==b&&(mh(b,a,e,d),eh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=L(),d=\nlh(a),e=ch(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=dh(a,e,d);null!==b&&(mh(b,a,d,c),eh(b,a,d))}};function oh(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction ph(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=Vg(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=nh;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction qh(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&nh.enqueueReplaceState(b,b.state,null)}\nfunction rh(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs=jh;ah(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=Vg(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(kh(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&nh.enqueueReplaceState(e,e.state,null),gh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}\nfunction sh(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;b===jh&&(b=e.refs={});null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction th(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function uh(a){var b=a._init;return b(a._payload)}\nfunction vh(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=wh(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=xh(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&uh(f)===b.type))return d=e(b,c.props),d.ref=sh(a,b,c),d.return=a,d;d=yh(c.type,c.key,c.props,null,a.mode,d);d.ref=sh(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=zh(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Ah(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=xh(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=yh(b.type,b.key,b.props,null,a.mode,c),\nc.ref=sh(a,null,b),c.return=a,c;case wa:return b=zh(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Ah(b,a.mode,c,null),b.return=a,b;th(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);th(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);th(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;a<Nh.length;a++)Nh[a]._workInProgressVersionPrimary=null;Nh.length=0}var Ph=ua.ReactCurrentDispatcher,Qh=ua.ReactCurrentBatchConfig,Rh=0,N=null,O=null,P=null,Sh=!1,Th=!1,Uh=0,Vh=0;function Q(){throw Error(p(321));}function Wh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Xh(a,b,c,d,e,f){Rh=f;N=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Ph.current=null===a||null===a.memoizedState?Yh:Zh;a=c(d,e);if(Th){f=0;do{Th=!1;Uh=0;if(25<=f)throw Error(p(301));f+=1;P=O=null;b.updateQueue=null;Ph.current=$h;a=c(d,e)}while(Th)}Ph.current=ai;b=null!==O&&null!==O.next;Rh=0;P=O=N=null;Sh=!1;if(b)throw Error(p(300));return a}function bi(){var a=0!==Uh;Uh=0;return a}\nfunction ci(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function di(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(p(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction ei(a,b){return\"function\"===typeof b?b(a):b}\nfunction fi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Rh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;N.lanes|=m;hh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(Ug=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,N.lanes|=f,hh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction gi(a){var b=di(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(Ug=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function hi(){}\nfunction ii(a,b){var c=N,d=di(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,Ug=!0);d=d.queue;ji(ki.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==P&&P.memoizedState.tag&1){c.flags|=2048;li(9,mi.bind(null,c,d,e,b),void 0,null);if(null===R)throw Error(p(349));0!==(Rh&30)||ni(c,b,e)}return e}function ni(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction mi(a,b,c,d){b.value=c;b.getSnapshot=d;oi(b)&&pi(a)}function ki(a,b,c){return c(function(){oi(b)&&pi(a)})}function oi(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function pi(a){var b=Zg(a,1);null!==b&&mh(b,a,1,-1)}\nfunction qi(a){var b=ci();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:ei,lastRenderedState:a};b.queue=a;a=a.dispatch=ri.bind(null,N,a);return[b.memoizedState,a]}\nfunction li(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null,stores:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function si(){return di().memoizedState}function ti(a,b,c,d){var e=ci();N.flags|=a;e.memoizedState=li(1|b,c,void 0,void 0===d?null:d)}\nfunction ui(a,b,c,d){var e=di();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&Wh(d,g.deps)){e.memoizedState=li(b,c,f,d);return}}N.flags|=a;e.memoizedState=li(1|b,c,f,d)}function vi(a,b){return ti(8390656,8,a,b)}function ji(a,b){return ui(2048,8,a,b)}function wi(a,b){return ui(4,2,a,b)}function xi(a,b){return ui(4,4,a,b)}\nfunction yi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function zi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ui(4,4,yi.bind(null,b,a),c)}function Ai(){}function Bi(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Ci(a,b){var c=di();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Wh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Di(a,b,c){if(0===(Rh&21))return a.baseState&&(a.baseState=!1,Ug=!0),a.memoizedState=c;He(c,b)||(c=yc(),N.lanes|=c,hh|=c,a.baseState=!0);return b}function Ei(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Vh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Zh={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:fi,useRef:si,useState:function(){return fi(ei)},\nuseDebugValue:Ai,useDeferredValue:function(a){var b=di();return Di(b,O.memoizedState,a)},useTransition:function(){var a=fi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1},$h={readContext:Vg,useCallback:Bi,useContext:Vg,useEffect:ji,useImperativeHandle:zi,useInsertionEffect:wi,useLayoutEffect:xi,useMemo:Ci,useReducer:gi,useRef:si,useState:function(){return gi(ei)},useDebugValue:Ai,useDeferredValue:function(a){var b=di();return null===\nO?b.memoizedState=a:Di(b,O.memoizedState,a)},useTransition:function(){var a=gi(ei)[0],b=di().memoizedState;return[a,b]},useMutableSource:hi,useSyncExternalStore:ii,useId:Fi,unstable_isNewReconciler:!1};function Ki(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}function Li(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}\nfunction Mi(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Ni=\"function\"===typeof WeakMap?WeakMap:Map;function Oi(a,b,c){c=ch(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Pi||(Pi=!0,Qi=d);Mi(a,b)};return c}\nfunction Ri(a,b,c){c=ch(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Mi(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Mi(a,b);\"function\"!==typeof d&&(null===Si?Si=new Set([this]):Si.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Ti(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Ni;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ui.bind(null,a,b,c),b.then(a,a))}function Vi(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Wi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=ch(-1,1),b.tag=2,dh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Xi=ua.ReactCurrentOwner,Ug=!1;function Yi(a,b,c,d){b.child=null===a?Ch(b,null,c,d):Bh(b,a.child,c,d)}\nfunction Zi(a,b,c,d,e){c=c.render;var f=b.ref;Tg(b,e);d=Xh(a,b,c,d,f,e);c=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&c&&vg(b);b.flags|=1;Yi(a,b,d,e);return b.child}\nfunction aj(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!bj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,cj(a,b,f,d,e);a=yh(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return $i(a,b,e)}b.flags|=1;a=wh(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction cj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(Ug=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(Ug=!0);else return b.lanes=a.lanes,$i(a,b,e)}return dj(a,b,c,d,e)}\nfunction ej(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(fj,gj),gj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(fj,gj),gj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(fj,gj);gj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(fj,gj),gj|=d;Yi(a,b,e,c);return b.child}function hj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function dj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);Tg(b,e);c=Xh(a,b,c,d,f,e);d=bi();if(null!==a&&!Ug)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,$i(a,b,e);I&&d&&vg(b);b.flags|=1;Yi(a,b,c,e);return b.child}\nfunction ij(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;Tg(b,e);if(null===b.stateNode)jj(a,b),ph(b,c,d),rh(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=Vg(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&qh(b,g,d,l);$g=!1;var r=b.memoizedState;g.state=r;gh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||$g?(\"function\"===typeof m&&(kh(b,c,m,d),k=b.memoizedState),(h=$g||oh(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;bh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Lg(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=Vg(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&qh(b,g,d,k);$g=!1;r=b.memoizedState;g.state=r;gh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||$g?(\"function\"===typeof y&&(kh(b,c,y,d),n=b.memoizedState),(l=$g||oh(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return kj(a,b,c,d,f,e)}\nfunction kj(a,b,c,d,e,f){hj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),$i(a,b,f);d=b.stateNode;Xi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Bh(b,a.child,null,f),b.child=Bh(b,null,h,f)):Yi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function lj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);Ih(a,b.containerInfo)}\nfunction mj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Yi(a,b,c,d);return b.child}var nj={dehydrated:null,treeContext:null,retryLane:0};function oj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction pj(a,b,c){var d=b.pendingProps,e=M.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(M,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=qj(g,d,0,null),a=Ah(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=oj(c),b.memoizedState=nj,a):rj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return sj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=wh(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=wh(h,f):(f=Ah(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?oj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=nj;return d}f=a.child;a=f.sibling;d=wh(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction rj(a,b){b=qj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function tj(a,b,c,d){null!==d&&Jg(d);Bh(b,a.child,null,c);a=rj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction sj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Li(Error(p(422))),tj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=qj({mode:\"visible\",children:d.children},e,0,null);f=Ah(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Bh(b,a.child,null,g);b.child.memoizedState=oj(g);b.memoizedState=nj;return f}if(0===(b.mode&1))return tj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Li(f,d,void 0);return tj(a,b,g,d)}h=0!==(g&a.childLanes);if(Ug||h){d=R;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,Zg(a,e),mh(d,a,e,-1))}uj();d=Li(Error(p(421)));return tj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=vj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=rj(b,d.children);b.flags|=4096;return b}function wj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);Sg(a.return,b,c)}\nfunction xj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction yj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Yi(a,b,d.children,c);d=M.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&wj(a,c,b);else if(19===a.tag)wj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(M,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Mh(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);xj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Mh(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}xj(b,!0,c,null,f);break;case \"together\":xj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction jj(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function $i(a,b,c){null!==a&&(b.dependencies=a.dependencies);hh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=wh(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=wh(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction zj(a,b,c){switch(b.tag){case 3:lj(b);Ig();break;case 5:Kh(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:Ih(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Mg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(M,M.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return pj(a,b,c);G(M,M.current&1);a=$i(a,b,c);return null!==a?a.sibling:null}G(M,M.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return yj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(M,M.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,ej(a,b,c)}return $i(a,b,c)}var Aj,Bj,Cj,Dj;\nAj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Bj=function(){};\nCj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;Hh(Eh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Dj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Ej(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Fj(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;Jh();E(Wf);E(H);Oh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Gj(zg),zg=null));Bj(a,b);S(b);return null;case 5:Lh(b);var e=Hh(Gh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Cj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Dj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=Hh(Gh.current);Hh(Eh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(M);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Gj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(M.current&1)?0===T&&(T=3):uj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return Jh(),\nBj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return Rg(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(M);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Ej(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Mh(a);if(null!==g){b.flags|=128;Ej(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(M,M.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Hj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Yj=!1;break a;case 3:X=h.stateNode.containerInfo;Yj=!0;break a;case 4:X=h.stateNode.containerInfo;Yj=!0;break a}h=h.return}if(null===X)throw Error(p(160));ak(f,g,e);X=null;Yj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)ek(b,a),b=b.sibling}\nfunction ek(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:dk(b,a);fk(a);if(d&4){try{Qj(3,a,a.return),Rj(3,a)}catch(t){W(a,a.return,t)}try{Qj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);break;case 5:dk(b,a);fk(a);d&512&&null!==c&&Mj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:dk(b,a);fk(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:dk(b,a);fk(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:dk(b,a);fk(a);break;case 13:dk(b,a);fk(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(gk=B()));d&4&&bk(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,dk(b,a),U=l):dk(b,a);fk(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Qj(4,r,r.return);break;case 1:Mj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Mj(r,r.return);break;case 22:if(null!==r.memoizedState){hk(q);continue}}null!==y?(y.return=r,V=y):hk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:dk(b,a);fk(a);d&4&&bk(a);break;case 21:break;default:dk(b,\na),fk(a)}}function fk(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Uj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Vj(a);Xj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Vj(a);Wj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function ik(a,b,c){V=a;jk(a,b,c)}\nfunction jk(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Kj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Kj;var l=U;Kj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?kk(e):null!==k?(k.return=g,V=k):kk(e);for(;null!==f;)V=f,jk(f,b,c),f=f.sibling;V=e;Kj=h;U=l}lk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):lk(a,b,c)}}\nfunction lk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Rj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Lg(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&ih(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}ih(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Sj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function hk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction kk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Rj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Sj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Sj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar mk=Math.ceil,nk=ua.ReactCurrentDispatcher,ok=ua.ReactCurrentOwner,pk=ua.ReactCurrentBatchConfig,K=0,R=null,Y=null,Z=0,gj=0,fj=Uf(0),T=0,qk=null,hh=0,rk=0,sk=0,tk=null,uk=null,gk=0,Hj=Infinity,vk=null,Pi=!1,Qi=null,Si=null,wk=!1,xk=null,yk=0,zk=0,Ak=null,Bk=-1,Ck=0;function L(){return 0!==(K&6)?B():-1!==Bk?Bk:Bk=B()}\nfunction lh(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Ck&&(Ck=yc()),Ck;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function mh(a,b,c,d){if(50<zk)throw zk=0,Ak=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==R)a===R&&(0===(K&2)&&(rk|=c),4===T&&Dk(a,Z)),Ek(a,d),1===c&&0===K&&0===(b.mode&1)&&(Hj=B()+500,fg&&jg())}\nfunction Ek(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===R?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Fk.bind(null,a)):hg(Fk.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Gk(c,Hk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Hk(a,b){Bk=-1;Ck=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Ik()&&a.callbackNode!==c)return null;var d=uc(a,a===R?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Jk(a,d);else{b=d;var e=K;K|=2;var f=Kk();if(R!==a||Z!==b)vk=null,Hj=B()+500,Lk(a,b);do try{Mk();break}catch(h){Nk(a,h)}while(1);Qg();nk.current=f;K=e;null!==Y?b=0:(R=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Ok(a,e)));if(1===b)throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;if(6===b)Dk(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Pk(e)&&(b=Jk(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Ok(a,f))),1===b))throw c=qk,Lk(a,0),Dk(a,d),Ek(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Qk(a,uk,vk);break;case 3:Dk(a,d);if((d&130023424)===d&&(b=gk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){L();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),b);break}Qk(a,uk,vk);break;case 4:Dk(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Qk.bind(null,a,uk,vk),d);break}Qk(a,uk,vk);break;case 5:Qk(a,uk,vk);break;default:throw Error(p(329));}}}Ek(a,B());return a.callbackNode===c?Hk.bind(null,a):null}\nfunction Ok(a,b){var c=tk;a.current.memoizedState.isDehydrated&&(Lk(a,b).flags|=256);a=Jk(a,b);2!==a&&(b=uk,uk=c,null!==b&&Gj(b));return a}function Gj(a){null===uk?uk=a:uk.push.apply(uk,a)}\nfunction Pk(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Dk(a,b){b&=~sk;b&=~rk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Fk(a){if(0!==(K&6))throw Error(p(327));Ik();var b=uc(a,0);if(0===(b&1))return Ek(a,B()),null;var c=Jk(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Ok(a,d))}if(1===c)throw c=qk,Lk(a,0),Dk(a,b),Ek(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Qk(a,uk,vk);Ek(a,B());return null}\nfunction Rk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Hj=B()+500,fg&&jg())}}function Sk(a){null!==xk&&0===xk.tag&&0===(K&6)&&Ik();var b=K;K|=1;var c=pk.transition,d=C;try{if(pk.transition=null,C=1,a)return a()}finally{C=d,pk.transition=c,K=b,0===(K&6)&&jg()}}function Ij(){gj=fj.current;E(fj)}\nfunction Lk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:Jh();E(Wf);E(H);Oh();break;case 5:Lh(d);break;case 4:Jh();break;case 13:E(M);break;case 19:E(M);break;case 10:Rg(d.type._context);break;case 22:case 23:Ij()}c=c.return}R=a;Y=a=wh(a.current,null);Z=gj=b;T=0;qk=null;sk=rk=hh=0;uk=tk=null;if(null!==Wg){for(b=\n0;b<Wg.length;b++)if(c=Wg[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}Wg=null}return a}\nfunction Nk(a,b){do{var c=Y;try{Qg();Ph.current=ai;if(Sh){for(var d=N.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Sh=!1}Rh=0;P=O=N=null;Th=!1;Uh=0;ok.current=null;if(null===c||null===c.return){T=1;qk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Vi(g);if(null!==y){y.flags&=-257;Wi(y,g,h,f,b);y.mode&1&&Ti(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Ti(f,l,b);uj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Vi(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Wi(J,g,h,f,b);Jg(Ki(k,h));break a}}f=k=Ki(k,h);4!==T&&(T=2);null===tk?tk=[f]:tk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Oi(f,k,b);fh(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Si||!Si.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Ri(f,h,b);fh(f,F);break a}}f=f.return}while(null!==f)}Tk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Kk(){var a=nk.current;nk.current=ai;return null===a?ai:a}\nfunction uj(){if(0===T||3===T||2===T)T=4;null===R||0===(hh&268435455)&&0===(rk&268435455)||Dk(R,Z)}function Jk(a,b){var c=K;K|=2;var d=Kk();if(R!==a||Z!==b)vk=null,Lk(a,b);do try{Uk();break}catch(e){Nk(a,e)}while(1);Qg();K=c;nk.current=d;if(null!==Y)throw Error(p(261));R=null;Z=0;return T}function Uk(){for(;null!==Y;)Vk(Y)}function Mk(){for(;null!==Y&&!cc();)Vk(Y)}function Vk(a){var b=Wk(a.alternate,a,gj);a.memoizedProps=a.pendingProps;null===b?Tk(a):Y=b;ok.current=null}\nfunction Tk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Fj(c,b,gj),null!==c){Y=c;return}}else{c=Jj(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Qk(a,b,c){var d=C,e=pk.transition;try{pk.transition=null,C=1,Xk(a,b,c,d)}finally{pk.transition=e,C=d}return null}\nfunction Xk(a,b,c,d){do Ik();while(null!==xk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===R&&(Y=R=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||wk||(wk=!0,Gk(hc,function(){Ik();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=pk.transition;pk.transition=null;\nvar g=C;C=1;var h=K;K|=4;ok.current=null;Pj(a,c);ek(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;ik(c,a,e);dc();K=h;C=g;pk.transition=f}else a.current=c;wk&&(wk=!1,xk=a,yk=e);f=a.pendingLanes;0===f&&(Si=null);mc(c.stateNode,d);Ek(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Pi)throw Pi=!1,a=Qi,Qi=null,a;0!==(yk&1)&&0!==a.tag&&Ik();f=a.pendingLanes;0!==(f&1)?a===Ak?zk++:(zk=0,Ak=a):zk=0;jg();return null}\nfunction Ik(){if(null!==xk){var a=Dc(yk),b=pk.transition,c=C;try{pk.transition=null;C=16>a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Qj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Tj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Qj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Rj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,pk.transition=b}}return!1}function Yk(a,b,c){b=Ki(c,b);b=Oi(a,b,1);a=dh(a,b,1);b=L();null!==a&&(Ac(a,1,b),Ek(a,b))}\nfunction W(a,b,c){if(3===a.tag)Yk(a,a,c);else for(;null!==b;){if(3===b.tag){Yk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Si||!Si.has(d))){a=Ki(c,a);a=Ri(b,a,1);b=dh(b,a,1);a=L();null!==b&&(Ac(b,1,a),Ek(b,a));break}}b=b.return}}\nfunction Ui(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=L();a.pingedLanes|=a.suspendedLanes&c;R===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction el(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction fl(a,b,c,d,e,f,g,h,k){a=cl(c,d,!0,a,e,f,g,h,k);a.context=el(null);c=a.current;d=L();e=lh(c);f=ch(d,e);f.callback=void 0!==b&&null!==b?b:null;dh(c,f,e);a.current.lanes=e;Ac(a,e,d);Ek(a,d);return a}function gl(a,b,c,d){var e=b.current,f=L(),g=lh(e);c=el(c);null===b.context?b.context=c:b.pendingContext=c;b=ch(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=dh(e,b,g);null!==a&&(mh(a,e,g,f),eh(a,e,g));return g}\nfunction hl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function il(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function jl(a,b){il(a,b);(a=a.alternate)&&il(a,b)}function kl(){return null}var ll=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ml(a){this._internalRoot=a}\nnl.prototype.render=ml.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));gl(a,b,null,null)};nl.prototype.unmount=ml.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Sk(function(){gl(null,a,null,null)});b[uf]=null}};function nl(a){this._internalRoot=a}\nnl.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function pl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function ql(){}\nfunction rl(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=hl(g);f.call(a)}}var g=fl(b,d,a,0,null,!1,!1,\"\",ql);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Sk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=hl(k);h.call(a)}}var k=cl(a,0,!1,null,null,!1,!1,\"\",ql);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Sk(function(){gl(b,k,c,d)});return k}\nfunction sl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=hl(g);h.call(a)}}gl(b,g,a,e)}else g=rl(c,b,a,e,d);return hl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Ek(b,B()),0===(K&6)&&(Hj=B()+500,jg()))}break;case 13:Sk(function(){var b=Zg(a,1);if(null!==b){var c=L();mh(b,a,1,c)}}),jl(a,1)}};\nFc=function(a){if(13===a.tag){var b=Zg(a,134217728);if(null!==b){var c=L();mh(b,a,134217728,c)}jl(a,134217728)}};Gc=function(a){if(13===a.tag){var b=lh(a),c=Zg(a,b);if(null!==c){var d=L();mh(c,a,b,d)}jl(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Rk;Hb=Sk;\nvar tl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Rk]},ul={findFiberByHostInstance:Wc,bundleType:0,version:\"18.2.0\",rendererPackageName:\"react-dom\"};\nvar vl={bundleType:ul.bundleType,version:ul.version,rendererPackageName:ul.rendererPackageName,rendererConfig:ul.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:ul.findFiberByHostInstance||\nkl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.2.0-next-9e3b772b8-20220608\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var wl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!wl.isDisabled&&wl.supportsFiber)try{kc=wl.inject(vl),lc=wl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=tl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!ol(b))throw Error(p(200));return dl(a,b,null,c)};exports.createRoot=function(a,b){if(!ol(a))throw Error(p(299));var c=!1,d=\"\",e=ll;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=cl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ml(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Sk(a)};exports.hydrate=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!ol(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=ll;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=fl(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new nl(b)};exports.render=function(a,b,c){if(!pl(b))throw Error(p(200));return sl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!pl(a))throw Error(p(40));return a._reactRootContainer?(Sk(function(){sl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Rk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!pl(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return sl(a,b,c,!1,d)};exports.version=\"18.2.0-next-9e3b772b8-20220608\";\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var FocusManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(FocusManager, _Subscribable);\n\n function FocusManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onFocus) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onFocus();\n }; // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = FocusManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (focused) {\n if (typeof focused === 'boolean') {\n _this2.setFocused(focused);\n } else {\n _this2.onFocus();\n }\n });\n };\n\n _proto.setFocused = function setFocused(focused) {\n this.focused = focused;\n\n if (focused) {\n this.onFocus();\n }\n };\n\n _proto.onFocus = function onFocus() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isFocused = function isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n };\n\n return FocusManager;\n}(Subscribable);\nexport var focusManager = new FocusManager();","import { isCancelable } from './retryer';\nimport { getAbortController } from './utils';\nexport function infiniteQueryBehavior() {\n return {\n onFetch: function onFetch(context) {\n context.fetchFn = function () {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n var refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n var fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n var pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n var isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n var isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n var oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n var oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n var abortController = getAbortController();\n var abortSignal = abortController == null ? void 0 : abortController.signal;\n var newPageParams = oldPageParams;\n var cancelled = false; // Get query function\n\n var queryFn = context.options.queryFn || function () {\n return Promise.reject('Missing queryFn');\n };\n\n var buildNewPages = function buildNewPages(pages, param, page, previous) {\n newPageParams = previous ? [param].concat(newPageParams) : [].concat(newPageParams, [param]);\n return previous ? [page].concat(pages) : [].concat(pages, [page]);\n }; // Create function to fetch a page\n\n\n var fetchPage = function fetchPage(pages, manual, param, previous) {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n\n var queryFnContext = {\n queryKey: context.queryKey,\n signal: abortSignal,\n pageParam: param,\n meta: context.meta\n };\n var queryFnResult = queryFn(queryFnContext);\n var promise = Promise.resolve(queryFnResult).then(function (page) {\n return buildNewPages(pages, param, page, previous);\n });\n\n if (isCancelable(queryFnResult)) {\n var promiseAsAny = promise;\n promiseAsAny.cancel = queryFnResult.cancel;\n }\n\n return promise;\n };\n\n var promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n var manual = typeof pageParam !== 'undefined';\n var param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n var _manual = typeof pageParam !== 'undefined';\n\n var _param = _manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n\n promise = fetchPage(oldPages, _manual, _param, true);\n } // Refetch pages\n else {\n (function () {\n newPageParams = [];\n var manual = typeof context.options.getNextPageParam === 'undefined';\n var shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n var _loop = function _loop(i) {\n promise = promise.then(function (pages) {\n var shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n if (shouldFetchNextPage) {\n var _param2 = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n\n return fetchPage(pages, manual, _param2);\n }\n\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n };\n\n for (var i = 1; i < oldPages.length; i++) {\n _loop(i);\n }\n })();\n }\n\n var finalPromise = promise.then(function (pages) {\n return {\n pages: pages,\n pageParams: newPageParams\n };\n });\n var finalPromiseAsAny = finalPromise;\n\n finalPromiseAsAny.cancel = function () {\n cancelled = true;\n abortController == null ? void 0 : abortController.abort();\n\n if (isCancelable(promise)) {\n promise.cancel();\n }\n };\n\n return finalPromise;\n };\n }\n };\n}\nexport function getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nexport function getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n var nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nexport function hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n var previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n}","// TYPES\n// FUNCTIONS\nvar logger = console;\nexport function getLogger() {\n return logger;\n}\nexport function setLogger(newLogger) {\n logger = newLogger;\n}","import { scheduleMicrotask } from './utils'; // TYPES\n\n// CLASS\nexport var NotifyManager = /*#__PURE__*/function () {\n function NotifyManager() {\n this.queue = [];\n this.transactions = 0;\n\n this.notifyFn = function (callback) {\n callback();\n };\n\n this.batchNotifyFn = function (callback) {\n callback();\n };\n }\n\n var _proto = NotifyManager.prototype;\n\n _proto.batch = function batch(callback) {\n var result;\n this.transactions++;\n\n try {\n result = callback();\n } finally {\n this.transactions--;\n\n if (!this.transactions) {\n this.flush();\n }\n }\n\n return result;\n };\n\n _proto.schedule = function schedule(callback) {\n var _this = this;\n\n if (this.transactions) {\n this.queue.push(callback);\n } else {\n scheduleMicrotask(function () {\n _this.notifyFn(callback);\n });\n }\n }\n /**\n * All calls to the wrapped function will be batched.\n */\n ;\n\n _proto.batchCalls = function batchCalls(callback) {\n var _this2 = this;\n\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.schedule(function () {\n callback.apply(void 0, args);\n });\n };\n };\n\n _proto.flush = function flush() {\n var _this3 = this;\n\n var queue = this.queue;\n this.queue = [];\n\n if (queue.length) {\n scheduleMicrotask(function () {\n _this3.batchNotifyFn(function () {\n queue.forEach(function (callback) {\n _this3.notifyFn(callback);\n });\n });\n });\n }\n }\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n ;\n\n _proto.setNotifyFunction = function setNotifyFunction(fn) {\n this.notifyFn = fn;\n }\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n ;\n\n _proto.setBatchNotifyFunction = function setBatchNotifyFunction(fn) {\n this.batchNotifyFn = fn;\n };\n\n return NotifyManager;\n}(); // SINGLETON\n\nexport var notifyManager = new NotifyManager();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { Subscribable } from './subscribable';\nimport { isServer } from './utils';\nexport var OnlineManager = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(OnlineManager, _Subscribable);\n\n function OnlineManager() {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n\n _this.setup = function (onOnline) {\n var _window;\n\n if (!isServer && ((_window = window) == null ? void 0 : _window.addEventListener)) {\n var listener = function listener() {\n return onOnline();\n }; // Listen to online\n\n\n window.addEventListener('online', listener, false);\n window.addEventListener('offline', listener, false);\n return function () {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener);\n window.removeEventListener('offline', listener);\n };\n }\n };\n\n return _this;\n }\n\n var _proto = OnlineManager.prototype;\n\n _proto.onSubscribe = function onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n };\n\n _proto.setEventListener = function setEventListener(setup) {\n var _this$cleanup2,\n _this2 = this;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(function (online) {\n if (typeof online === 'boolean') {\n _this2.setOnline(online);\n } else {\n _this2.onOnline();\n }\n });\n };\n\n _proto.setOnline = function setOnline(online) {\n this.online = online;\n\n if (online) {\n this.onOnline();\n }\n };\n\n _proto.onOnline = function onOnline() {\n this.listeners.forEach(function (listener) {\n listener();\n });\n };\n\n _proto.isOnline = function isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n };\n\n return OnlineManager;\n}(Subscribable);\nexport var onlineManager = new OnlineManager();","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getAbortController, functionalUpdate, isValidTimeout, noop, replaceEqualDeep, timeUntilStale, ensureQueryKeyArray } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { getLogger } from './logger';\nimport { Retryer, isCancelledError } from './retryer'; // TYPES\n\n// CLASS\nexport var Query = /*#__PURE__*/function () {\n function Query(config) {\n this.abortSignalConsumed = false;\n this.hadObservers = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || this.getDefaultState(this.options);\n this.state = this.initialState;\n this.meta = config.meta;\n this.scheduleGc();\n }\n\n var _proto = Query.prototype;\n\n _proto.setOptions = function setOptions(options) {\n var _this$options$cacheTi;\n\n this.options = _extends({}, this.defaultOptions, options);\n this.meta = options == null ? void 0 : options.meta; // Default to 5 minutes if not cache time is set\n\n this.cacheTime = Math.max(this.cacheTime || 0, (_this$options$cacheTi = this.options.cacheTime) != null ? _this$options$cacheTi : 5 * 60 * 1000);\n };\n\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n\n _proto.scheduleGc = function scheduleGc() {\n var _this = this;\n\n this.clearGcTimeout();\n\n if (isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(function () {\n _this.optionalRemove();\n }, this.cacheTime);\n }\n };\n\n _proto.clearGcTimeout = function clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n };\n\n _proto.optionalRemove = function optionalRemove() {\n if (!this.observers.length) {\n if (this.state.isFetching) {\n if (this.hadObservers) {\n this.scheduleGc();\n }\n } else {\n this.cache.remove(this);\n }\n }\n };\n\n _proto.setData = function setData(updater, options) {\n var _this$options$isDataE, _this$options;\n\n var prevData = this.state.data; // Get the new data\n\n var data = functionalUpdate(updater, prevData); // Use prev data if an isDataEqual function is defined and returns `true`\n\n if ((_this$options$isDataE = (_this$options = this.options).isDataEqual) == null ? void 0 : _this$options$isDataE.call(_this$options, prevData, data)) {\n data = prevData;\n } else if (this.options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n data = replaceEqualDeep(prevData, data);\n } // Set data and mark it as cached\n\n\n this.dispatch({\n data: data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt\n });\n return data;\n };\n\n _proto.setState = function setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state: state,\n setStateOptions: setStateOptions\n });\n };\n\n _proto.cancel = function cancel(options) {\n var _this$retryer;\n\n var promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(noop).catch(noop) : Promise.resolve();\n };\n\n _proto.destroy = function destroy() {\n this.clearGcTimeout();\n this.cancel({\n silent: true\n });\n };\n\n _proto.reset = function reset() {\n this.destroy();\n this.setState(this.initialState);\n };\n\n _proto.isActive = function isActive() {\n return this.observers.some(function (observer) {\n return observer.options.enabled !== false;\n });\n };\n\n _proto.isFetching = function isFetching() {\n return this.state.isFetching;\n };\n\n _proto.isStale = function isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(function (observer) {\n return observer.getCurrentResult().isStale;\n });\n };\n\n _proto.isStaleByTime = function isStaleByTime(staleTime) {\n if (staleTime === void 0) {\n staleTime = 0;\n }\n\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !timeUntilStale(this.state.dataUpdatedAt, staleTime);\n };\n\n _proto.onFocus = function onFocus() {\n var _this$retryer2;\n\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnWindowFocus();\n });\n\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n };\n\n _proto.onOnline = function onOnline() {\n var _this$retryer3;\n\n var observer = this.observers.find(function (x) {\n return x.shouldFetchOnReconnect();\n });\n\n if (observer) {\n observer.refetch();\n } // Continue fetch if currently paused\n\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n this.hadObservers = true; // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer: observer\n });\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.retryer.isTransportCancelable || this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n\n if (this.cacheTime) {\n this.scheduleGc();\n } else {\n this.cache.remove(this);\n }\n }\n\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer: observer\n });\n }\n };\n\n _proto.getObserversCount = function getObserversCount() {\n return this.observers.length;\n };\n\n _proto.invalidate = function invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n };\n\n _proto.fetch = function fetch(options, fetchOptions) {\n var _this2 = this,\n _this$options$behavio,\n _context$fetchOptions,\n _abortController$abor;\n\n if (this.state.isFetching) {\n if (this.state.dataUpdatedAt && (fetchOptions == null ? void 0 : fetchOptions.cancelRefetch)) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n\n if (!this.options.queryFn) {\n var observer = this.observers.find(function (x) {\n return x.options.queryFn;\n });\n\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n\n var queryKey = ensureQueryKeyArray(this.queryKey);\n var abortController = getAbortController(); // Create query function context\n\n var queryFnContext = {\n queryKey: queryKey,\n pageParam: undefined,\n meta: this.meta\n };\n Object.defineProperty(queryFnContext, 'signal', {\n enumerable: true,\n get: function get() {\n if (abortController) {\n _this2.abortSignalConsumed = true;\n return abortController.signal;\n }\n\n return undefined;\n }\n }); // Create fetch function\n\n var fetchFn = function fetchFn() {\n if (!_this2.options.queryFn) {\n return Promise.reject('Missing queryFn');\n }\n\n _this2.abortSignalConsumed = false;\n return _this2.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n\n var context = {\n fetchOptions: fetchOptions,\n options: this.options,\n queryKey: queryKey,\n state: this.state,\n fetchFn: fetchFn,\n meta: this.meta\n };\n\n if ((_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch) {\n var _this$options$behavio2;\n\n (_this$options$behavio2 = this.options.behavior) == null ? void 0 : _this$options$behavio2.onFetch(context);\n } // Store state in case the current fetch needs to be reverted\n\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (!this.state.isFetching || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n } // Try to fetch the data\n\n\n this.retryer = new Retryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : (_abortController$abor = abortController.abort) == null ? void 0 : _abortController$abor.bind(abortController),\n onSuccess: function onSuccess(data) {\n _this2.setData(data); // Notify cache callback\n\n\n _this2.cache.config.onSuccess == null ? void 0 : _this2.cache.config.onSuccess(data, _this2); // Remove query after fetching if cache time is 0\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onError: function onError(error) {\n // Optimistically update state if needed\n if (!(isCancelledError(error) && error.silent)) {\n _this2.dispatch({\n type: 'error',\n error: error\n });\n }\n\n if (!isCancelledError(error)) {\n // Notify cache callback\n _this2.cache.config.onError == null ? void 0 : _this2.cache.config.onError(error, _this2); // Log error\n\n getLogger().error(error);\n } // Remove query after fetching if cache time is 0\n\n\n if (_this2.cacheTime === 0) {\n _this2.optionalRemove();\n }\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay\n });\n this.promise = this.retryer.promise;\n return this.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = this.reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onQueryUpdate(action);\n });\n\n _this3.cache.notify({\n query: _this3,\n type: 'queryUpdated',\n action: action\n });\n });\n };\n\n _proto.getDefaultState = function getDefaultState(options) {\n var data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n var hasInitialData = typeof options.initialData !== 'undefined';\n var initialDataUpdatedAt = hasInitialData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n var hasData = typeof data !== 'undefined';\n return {\n data: data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchMeta: null,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: hasData ? 'success' : 'idle'\n };\n };\n\n _proto.reducer = function reducer(state, action) {\n var _action$meta, _action$dataUpdatedAt;\n\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n fetchFailureCount: state.fetchFailureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'fetch':\n return _extends({}, state, {\n fetchFailureCount: 0,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n isFetching: true,\n isPaused: false\n }, !state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n fetchFailureCount: 0,\n isFetching: false,\n isInvalidated: false,\n isPaused: false,\n status: 'success'\n });\n\n case 'error':\n var error = action.error;\n\n if (isCancelledError(error) && error.revert && this.revertState) {\n return _extends({}, this.revertState);\n }\n\n return _extends({}, state, {\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n isFetching: false,\n isPaused: false,\n status: 'error'\n });\n\n case 'invalidate':\n return _extends({}, state, {\n isInvalidated: true\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n };\n\n return Query;\n}();","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { hashQueryKeyByOptions, matchQuery, parseFilterArgs } from './utils';\nimport { Query } from './query';\nimport { notifyManager } from './notifyManager';\nimport { Subscribable } from './subscribable';\n// CLASS\nexport var QueryCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryCache, _Subscribable);\n\n function QueryCache(config) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.queries = [];\n _this.queriesMap = {};\n return _this;\n }\n\n var _proto = QueryCache.prototype;\n\n _proto.build = function build(client, options, state) {\n var _options$queryHash;\n\n var queryKey = options.queryKey;\n var queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : hashQueryKeyByOptions(queryKey, options);\n var query = this.get(queryHash);\n\n if (!query) {\n query = new Query({\n cache: this,\n queryKey: queryKey,\n queryHash: queryHash,\n options: client.defaultQueryOptions(options),\n state: state,\n defaultOptions: client.getQueryDefaults(queryKey),\n meta: options.meta\n });\n this.add(query);\n }\n\n return query;\n };\n\n _proto.add = function add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'queryAdded',\n query: query\n });\n }\n };\n\n _proto.remove = function remove(query) {\n var queryInMap = this.queriesMap[query.queryHash];\n\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(function (x) {\n return x !== query;\n });\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n\n this.notify({\n type: 'queryRemoved',\n query: query\n });\n }\n };\n\n _proto.clear = function clear() {\n var _this2 = this;\n\n notifyManager.batch(function () {\n _this2.queries.forEach(function (query) {\n _this2.remove(query);\n });\n });\n };\n\n _proto.get = function get(queryHash) {\n return this.queriesMap[queryHash];\n };\n\n _proto.getAll = function getAll() {\n return this.queries;\n };\n\n _proto.find = function find(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.queries.find(function (query) {\n return matchQuery(filters, query);\n });\n };\n\n _proto.findAll = function findAll(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n\n return Object.keys(filters).length > 0 ? this.queries.filter(function (query) {\n return matchQuery(filters, query);\n }) : this.queries;\n };\n\n _proto.notify = function notify(event) {\n var _this3 = this;\n\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(event);\n });\n });\n };\n\n _proto.onFocus = function onFocus() {\n var _this4 = this;\n\n notifyManager.batch(function () {\n _this4.queries.forEach(function (query) {\n query.onFocus();\n });\n });\n };\n\n _proto.onOnline = function onOnline() {\n var _this5 = this;\n\n notifyManager.batch(function () {\n _this5.queries.forEach(function (query) {\n query.onOnline();\n });\n });\n };\n\n return QueryCache;\n}(Subscribable);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { getLogger } from './logger';\nimport { notifyManager } from './notifyManager';\nimport { Retryer } from './retryer';\nimport { noop } from './utils'; // TYPES\n\n// CLASS\nexport var Mutation = /*#__PURE__*/function () {\n function Mutation(config) {\n this.options = _extends({}, config.defaultOptions, config.options);\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.meta = config.meta;\n }\n\n var _proto = Mutation.prototype;\n\n _proto.setState = function setState(state) {\n this.dispatch({\n type: 'setState',\n state: state\n });\n };\n\n _proto.addObserver = function addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer);\n }\n };\n\n _proto.removeObserver = function removeObserver(observer) {\n this.observers = this.observers.filter(function (x) {\n return x !== observer;\n });\n };\n\n _proto.cancel = function cancel() {\n if (this.retryer) {\n this.retryer.cancel();\n return this.retryer.promise.then(noop).catch(noop);\n }\n\n return Promise.resolve();\n };\n\n _proto.continue = function _continue() {\n if (this.retryer) {\n this.retryer.continue();\n return this.retryer.promise;\n }\n\n return this.execute();\n };\n\n _proto.execute = function execute() {\n var _this = this;\n\n var data;\n var restored = this.state.status === 'loading';\n var promise = Promise.resolve();\n\n if (!restored) {\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n });\n promise = promise.then(function () {\n // Notify cache callback\n _this.mutationCache.config.onMutate == null ? void 0 : _this.mutationCache.config.onMutate(_this.state.variables, _this);\n }).then(function () {\n return _this.options.onMutate == null ? void 0 : _this.options.onMutate(_this.state.variables);\n }).then(function (context) {\n if (context !== _this.state.context) {\n _this.dispatch({\n type: 'loading',\n context: context,\n variables: _this.state.variables\n });\n }\n });\n }\n\n return promise.then(function () {\n return _this.executeMutation();\n }).then(function (result) {\n data = result; // Notify cache callback\n\n _this.mutationCache.config.onSuccess == null ? void 0 : _this.mutationCache.config.onSuccess(data, _this.state.variables, _this.state.context, _this);\n }).then(function () {\n return _this.options.onSuccess == null ? void 0 : _this.options.onSuccess(data, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(data, null, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'success',\n data: data\n });\n\n return data;\n }).catch(function (error) {\n // Notify cache callback\n _this.mutationCache.config.onError == null ? void 0 : _this.mutationCache.config.onError(error, _this.state.variables, _this.state.context, _this); // Log error\n\n getLogger().error(error);\n return Promise.resolve().then(function () {\n return _this.options.onError == null ? void 0 : _this.options.onError(error, _this.state.variables, _this.state.context);\n }).then(function () {\n return _this.options.onSettled == null ? void 0 : _this.options.onSettled(undefined, error, _this.state.variables, _this.state.context);\n }).then(function () {\n _this.dispatch({\n type: 'error',\n error: error\n });\n\n throw error;\n });\n });\n };\n\n _proto.executeMutation = function executeMutation() {\n var _this2 = this,\n _this$options$retry;\n\n this.retryer = new Retryer({\n fn: function fn() {\n if (!_this2.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return _this2.options.mutationFn(_this2.state.variables);\n },\n onFail: function onFail() {\n _this2.dispatch({\n type: 'failed'\n });\n },\n onPause: function onPause() {\n _this2.dispatch({\n type: 'pause'\n });\n },\n onContinue: function onContinue() {\n _this2.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay\n });\n return this.retryer.promise;\n };\n\n _proto.dispatch = function dispatch(action) {\n var _this3 = this;\n\n this.state = reducer(this.state, action);\n notifyManager.batch(function () {\n _this3.observers.forEach(function (observer) {\n observer.onMutationUpdate(action);\n });\n\n _this3.mutationCache.notify(_this3);\n });\n };\n\n return Mutation;\n}();\nexport function getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n case 'failed':\n return _extends({}, state, {\n failureCount: state.failureCount + 1\n });\n\n case 'pause':\n return _extends({}, state, {\n isPaused: true\n });\n\n case 'continue':\n return _extends({}, state, {\n isPaused: false\n });\n\n case 'loading':\n return _extends({}, state, {\n context: action.context,\n data: undefined,\n error: null,\n isPaused: false,\n status: 'loading',\n variables: action.variables\n });\n\n case 'success':\n return _extends({}, state, {\n data: action.data,\n error: null,\n status: 'success',\n isPaused: false\n });\n\n case 'error':\n return _extends({}, state, {\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n isPaused: false,\n status: 'error'\n });\n\n case 'setState':\n return _extends({}, state, action.state);\n\n default:\n return state;\n }\n}","import _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { notifyManager } from './notifyManager';\nimport { Mutation } from './mutation';\nimport { matchMutation, noop } from './utils';\nimport { Subscribable } from './subscribable'; // TYPES\n\n// CLASS\nexport var MutationCache = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(MutationCache, _Subscribable);\n\n function MutationCache(config) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.config = config || {};\n _this.mutations = [];\n _this.mutationId = 0;\n return _this;\n }\n\n var _proto = MutationCache.prototype;\n\n _proto.build = function build(client, options, state) {\n var mutation = new Mutation({\n mutationCache: this,\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state: state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined,\n meta: options.meta\n });\n this.add(mutation);\n return mutation;\n };\n\n _proto.add = function add(mutation) {\n this.mutations.push(mutation);\n this.notify(mutation);\n };\n\n _proto.remove = function remove(mutation) {\n this.mutations = this.mutations.filter(function (x) {\n return x !== mutation;\n });\n mutation.cancel();\n this.notify(mutation);\n };\n\n _proto.clear = function clear() {\n var _this2 = this;\n\n notifyManager.batch(function () {\n _this2.mutations.forEach(function (mutation) {\n _this2.remove(mutation);\n });\n });\n };\n\n _proto.getAll = function getAll() {\n return this.mutations;\n };\n\n _proto.find = function find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.mutations.find(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n\n _proto.findAll = function findAll(filters) {\n return this.mutations.filter(function (mutation) {\n return matchMutation(filters, mutation);\n });\n };\n\n _proto.notify = function notify(mutation) {\n var _this3 = this;\n\n notifyManager.batch(function () {\n _this3.listeners.forEach(function (listener) {\n listener(mutation);\n });\n });\n };\n\n _proto.onFocus = function onFocus() {\n this.resumePausedMutations();\n };\n\n _proto.onOnline = function onOnline() {\n this.resumePausedMutations();\n };\n\n _proto.resumePausedMutations = function resumePausedMutations() {\n var pausedMutations = this.mutations.filter(function (x) {\n return x.state.isPaused;\n });\n return notifyManager.batch(function () {\n return pausedMutations.reduce(function (promise, mutation) {\n return promise.then(function () {\n return mutation.continue().catch(noop);\n });\n }, Promise.resolve());\n });\n };\n\n return MutationCache;\n}(Subscribable);","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { hashQueryKey, noop, parseFilterArgs, parseQueryArgs, partialMatchKey, hashQueryKeyByOptions } from './utils';\nimport { QueryCache } from './queryCache';\nimport { MutationCache } from './mutationCache';\nimport { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { notifyManager } from './notifyManager';\nimport { infiniteQueryBehavior } from './infiniteQueryBehavior';\n// CLASS\nexport var QueryClient = /*#__PURE__*/function () {\n function QueryClient(config) {\n if (config === void 0) {\n config = {};\n }\n\n this.queryCache = config.queryCache || new QueryCache();\n this.mutationCache = config.mutationCache || new MutationCache();\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n }\n\n var _proto = QueryClient.prototype;\n\n _proto.mount = function mount() {\n var _this = this;\n\n this.unsubscribeFocus = focusManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onFocus();\n\n _this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.subscribe(function () {\n if (focusManager.isFocused() && onlineManager.isOnline()) {\n _this.mutationCache.onOnline();\n\n _this.queryCache.onOnline();\n }\n });\n };\n\n _proto.unmount = function unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n };\n\n _proto.isFetching = function isFetching(arg1, arg2) {\n var _parseFilterArgs = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs[0];\n\n filters.fetching = true;\n return this.queryCache.findAll(filters).length;\n };\n\n _proto.isMutating = function isMutating(filters) {\n return this.mutationCache.findAll(_extends({}, filters, {\n fetching: true\n })).length;\n };\n\n _proto.getQueryData = function getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n };\n\n _proto.getQueriesData = function getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref) {\n var queryKey = _ref.queryKey,\n state = _ref.state;\n var data = state.data;\n return [queryKey, data];\n });\n };\n\n _proto.setQueryData = function setQueryData(queryKey, updater, options) {\n var parsedOptions = parseQueryArgs(queryKey);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(updater, options);\n };\n\n _proto.setQueriesData = function setQueriesData(queryKeyOrFilters, updater, options) {\n var _this2 = this;\n\n return notifyManager.batch(function () {\n return _this2.getQueryCache().findAll(queryKeyOrFilters).map(function (_ref2) {\n var queryKey = _ref2.queryKey;\n return [queryKey, _this2.setQueryData(queryKey, updater, options)];\n });\n });\n };\n\n _proto.getQueryState = function getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n };\n\n _proto.removeQueries = function removeQueries(arg1, arg2) {\n var _parseFilterArgs2 = parseFilterArgs(arg1, arg2),\n filters = _parseFilterArgs2[0];\n\n var queryCache = this.queryCache;\n notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n queryCache.remove(query);\n });\n });\n };\n\n _proto.resetQueries = function resetQueries(arg1, arg2, arg3) {\n var _this3 = this;\n\n var _parseFilterArgs3 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs3[0],\n options = _parseFilterArgs3[1];\n\n var queryCache = this.queryCache;\n\n var refetchFilters = _extends({}, filters, {\n active: true\n });\n\n return notifyManager.batch(function () {\n queryCache.findAll(filters).forEach(function (query) {\n query.reset();\n });\n return _this3.refetchQueries(refetchFilters, options);\n });\n };\n\n _proto.cancelQueries = function cancelQueries(arg1, arg2, arg3) {\n var _this4 = this;\n\n var _parseFilterArgs4 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs4[0],\n _parseFilterArgs4$ = _parseFilterArgs4[1],\n cancelOptions = _parseFilterArgs4$ === void 0 ? {} : _parseFilterArgs4$;\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n\n var promises = notifyManager.batch(function () {\n return _this4.queryCache.findAll(filters).map(function (query) {\n return query.cancel(cancelOptions);\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n\n _proto.invalidateQueries = function invalidateQueries(arg1, arg2, arg3) {\n var _ref3,\n _filters$refetchActiv,\n _filters$refetchInact,\n _this5 = this;\n\n var _parseFilterArgs5 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs5[0],\n options = _parseFilterArgs5[1];\n\n var refetchFilters = _extends({}, filters, {\n // if filters.refetchActive is not provided and filters.active is explicitly false,\n // e.g. invalidateQueries({ active: false }), we don't want to refetch active queries\n active: (_ref3 = (_filters$refetchActiv = filters.refetchActive) != null ? _filters$refetchActiv : filters.active) != null ? _ref3 : true,\n inactive: (_filters$refetchInact = filters.refetchInactive) != null ? _filters$refetchInact : false\n });\n\n return notifyManager.batch(function () {\n _this5.queryCache.findAll(filters).forEach(function (query) {\n query.invalidate();\n });\n\n return _this5.refetchQueries(refetchFilters, options);\n });\n };\n\n _proto.refetchQueries = function refetchQueries(arg1, arg2, arg3) {\n var _this6 = this;\n\n var _parseFilterArgs6 = parseFilterArgs(arg1, arg2, arg3),\n filters = _parseFilterArgs6[0],\n options = _parseFilterArgs6[1];\n\n var promises = notifyManager.batch(function () {\n return _this6.queryCache.findAll(filters).map(function (query) {\n return query.fetch(undefined, _extends({}, options, {\n meta: {\n refetchPage: filters == null ? void 0 : filters.refetchPage\n }\n }));\n });\n });\n var promise = Promise.all(promises).then(noop);\n\n if (!(options == null ? void 0 : options.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n };\n\n _proto.fetchQuery = function fetchQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n var defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n\n var query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n };\n\n _proto.prefetchQuery = function prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n\n _proto.fetchInfiniteQuery = function fetchInfiniteQuery(arg1, arg2, arg3) {\n var parsedOptions = parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n };\n\n _proto.prefetchInfiniteQuery = function prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(noop).catch(noop);\n };\n\n _proto.cancelMutations = function cancelMutations() {\n var _this7 = this;\n\n var promises = notifyManager.batch(function () {\n return _this7.mutationCache.getAll().map(function (mutation) {\n return mutation.cancel();\n });\n });\n return Promise.all(promises).then(noop).catch(noop);\n };\n\n _proto.resumePausedMutations = function resumePausedMutations() {\n return this.getMutationCache().resumePausedMutations();\n };\n\n _proto.executeMutation = function executeMutation(options) {\n return this.mutationCache.build(this, options).execute();\n };\n\n _proto.getQueryCache = function getQueryCache() {\n return this.queryCache;\n };\n\n _proto.getMutationCache = function getMutationCache() {\n return this.mutationCache;\n };\n\n _proto.getDefaultOptions = function getDefaultOptions() {\n return this.defaultOptions;\n };\n\n _proto.setDefaultOptions = function setDefaultOptions(options) {\n this.defaultOptions = options;\n };\n\n _proto.setQueryDefaults = function setQueryDefaults(queryKey, options) {\n var result = this.queryDefaults.find(function (x) {\n return hashQueryKey(queryKey) === hashQueryKey(x.queryKey);\n });\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey: queryKey,\n defaultOptions: options\n });\n }\n };\n\n _proto.getQueryDefaults = function getQueryDefaults(queryKey) {\n var _this$queryDefaults$f;\n\n return queryKey ? (_this$queryDefaults$f = this.queryDefaults.find(function (x) {\n return partialMatchKey(queryKey, x.queryKey);\n })) == null ? void 0 : _this$queryDefaults$f.defaultOptions : undefined;\n };\n\n _proto.setMutationDefaults = function setMutationDefaults(mutationKey, options) {\n var result = this.mutationDefaults.find(function (x) {\n return hashQueryKey(mutationKey) === hashQueryKey(x.mutationKey);\n });\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey: mutationKey,\n defaultOptions: options\n });\n }\n };\n\n _proto.getMutationDefaults = function getMutationDefaults(mutationKey) {\n var _this$mutationDefault;\n\n return mutationKey ? (_this$mutationDefault = this.mutationDefaults.find(function (x) {\n return partialMatchKey(mutationKey, x.mutationKey);\n })) == null ? void 0 : _this$mutationDefault.defaultOptions : undefined;\n };\n\n _proto.defaultQueryOptions = function defaultQueryOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n\n var defaultedOptions = _extends({}, this.defaultOptions.queries, this.getQueryDefaults(options == null ? void 0 : options.queryKey), options, {\n _defaulted: true\n });\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n }\n\n return defaultedOptions;\n };\n\n _proto.defaultQueryObserverOptions = function defaultQueryObserverOptions(options) {\n return this.defaultQueryOptions(options);\n };\n\n _proto.defaultMutationOptions = function defaultMutationOptions(options) {\n if (options == null ? void 0 : options._defaulted) {\n return options;\n }\n\n return _extends({}, this.defaultOptions.mutations, this.getMutationDefaults(options == null ? void 0 : options.mutationKey), options, {\n _defaulted: true\n });\n };\n\n _proto.clear = function clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n };\n\n return QueryClient;\n}();","import { focusManager } from './focusManager';\nimport { onlineManager } from './onlineManager';\nimport { sleep } from './utils';\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * Math.pow(2, failureCount), 30000);\n}\n\nexport function isCancelable(value) {\n return typeof (value == null ? void 0 : value.cancel) === 'function';\n}\nexport var CancelledError = function CancelledError(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n};\nexport function isCancelledError(value) {\n return value instanceof CancelledError;\n} // CLASS\n\nexport var Retryer = function Retryer(config) {\n var _this = this;\n\n var cancelRetry = false;\n var cancelFn;\n var continueFn;\n var promiseResolve;\n var promiseReject;\n this.abort = config.abort;\n\n this.cancel = function (cancelOptions) {\n return cancelFn == null ? void 0 : cancelFn(cancelOptions);\n };\n\n this.cancelRetry = function () {\n cancelRetry = true;\n };\n\n this.continueRetry = function () {\n cancelRetry = false;\n };\n\n this.continue = function () {\n return continueFn == null ? void 0 : continueFn();\n };\n\n this.failureCount = 0;\n this.isPaused = false;\n this.isResolved = false;\n this.isTransportCancelable = false;\n this.promise = new Promise(function (outerResolve, outerReject) {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n var resolve = function resolve(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n var reject = function reject(value) {\n if (!_this.isResolved) {\n _this.isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n var pause = function pause() {\n return new Promise(function (continueResolve) {\n continueFn = continueResolve;\n _this.isPaused = true;\n config.onPause == null ? void 0 : config.onPause();\n }).then(function () {\n continueFn = undefined;\n _this.isPaused = false;\n config.onContinue == null ? void 0 : config.onContinue();\n });\n }; // Create loop function\n\n\n var run = function run() {\n // Do nothing if already resolved\n if (_this.isResolved) {\n return;\n }\n\n var promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n } // Create callback to cancel this fetch\n\n\n cancelFn = function cancelFn(cancelOptions) {\n if (!_this.isResolved) {\n reject(new CancelledError(cancelOptions));\n _this.abort == null ? void 0 : _this.abort(); // Cancel transport if supported\n\n if (isCancelable(promiseOrValue)) {\n try {\n promiseOrValue.cancel();\n } catch (_unused) {}\n }\n }\n }; // Check if the transport layer support cancellation\n\n\n _this.isTransportCancelable = isCancelable(promiseOrValue);\n Promise.resolve(promiseOrValue).then(resolve).catch(function (error) {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (_this.isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n var retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n var retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n var delay = typeof retryDelay === 'function' ? retryDelay(_this.failureCount, error) : retryDelay;\n var shouldRetry = retry === true || typeof retry === 'number' && _this.failureCount < retry || typeof retry === 'function' && retry(_this.failureCount, error);\n\n if (cancelRetry || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n _this.failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(_this.failureCount, error); // Delay\n\n sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(function () {\n if (!focusManager.isFocused() || !onlineManager.isOnline()) {\n return pause();\n }\n }).then(function () {\n if (cancelRetry) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n run();\n};","export var Subscribable = /*#__PURE__*/function () {\n function Subscribable() {\n this.listeners = [];\n }\n\n var _proto = Subscribable.prototype;\n\n _proto.subscribe = function subscribe(listener) {\n var _this = this;\n\n var callback = listener || function () {\n return undefined;\n };\n\n this.listeners.push(callback);\n this.onSubscribe();\n return function () {\n _this.listeners = _this.listeners.filter(function (x) {\n return x !== callback;\n });\n\n _this.onUnsubscribe();\n };\n };\n\n _proto.hasListeners = function hasListeners() {\n return this.listeners.length > 0;\n };\n\n _proto.onSubscribe = function onSubscribe() {// Do nothing\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {// Do nothing\n };\n\n return Subscribable;\n}();","import _extends from \"@babel/runtime/helpers/esm/extends\";\n// TYPES\n// UTILS\nexport var isServer = typeof window === 'undefined';\nexport function noop() {\n return undefined;\n}\nexport function functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nexport function isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nexport function ensureQueryKeyArray(value) {\n return Array.isArray(value) ? value : [value];\n}\nexport function difference(array1, array2) {\n return array1.filter(function (x) {\n return array2.indexOf(x) === -1;\n });\n}\nexport function replaceAt(array, index, value) {\n var copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nexport function timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nexport function parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n queryKey: arg1,\n queryFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n queryKey: arg1\n });\n}\nexport function parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return _extends({}, arg3, {\n mutationKey: arg1,\n mutationFn: arg2\n });\n }\n\n return _extends({}, arg2, {\n mutationKey: arg1\n });\n }\n\n if (typeof arg1 === 'function') {\n return _extends({}, arg2, {\n mutationFn: arg1\n });\n }\n\n return _extends({}, arg1);\n}\nexport function parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [_extends({}, arg2, {\n queryKey: arg1\n }), arg3] : [arg1 || {}, arg2];\n}\nexport function parseMutationFilterArgs(arg1, arg2) {\n return isQueryKey(arg1) ? _extends({}, arg2, {\n mutationKey: arg1\n }) : arg1;\n}\nexport function mapQueryStatusFilter(active, inactive) {\n if (active === true && inactive === true || active == null && inactive == null) {\n return 'all';\n } else if (active === false && inactive === false) {\n return 'none';\n } else {\n // At this point, active|inactive can only be true|false or false|true\n // so, when only one value is provided, the missing one has to be the negated value\n var isActive = active != null ? active : !inactive;\n return isActive ? 'active' : 'inactive';\n }\n}\nexport function matchQuery(filters, query) {\n var active = filters.active,\n exact = filters.exact,\n fetching = filters.fetching,\n inactive = filters.inactive,\n predicate = filters.predicate,\n queryKey = filters.queryKey,\n stale = filters.stale;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n var queryStatusFilter = mapQueryStatusFilter(active, inactive);\n\n if (queryStatusFilter === 'none') {\n return false;\n } else if (queryStatusFilter !== 'all') {\n var isActive = query.isActive();\n\n if (queryStatusFilter === 'active' && !isActive) {\n return false;\n }\n\n if (queryStatusFilter === 'inactive' && isActive) {\n return false;\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetching === 'boolean' && query.isFetching() !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nexport function matchMutation(filters, mutation) {\n var exact = filters.exact,\n fetching = filters.fetching,\n predicate = filters.predicate,\n mutationKey = filters.mutationKey;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nexport function hashQueryKeyByOptions(queryKey, options) {\n var hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n */\n\nexport function hashQueryKey(queryKey) {\n var asArray = ensureQueryKeyArray(queryKey);\n return stableValueHash(asArray);\n}\n/**\n * Hashes the value into a stable hash.\n */\n\nexport function stableValueHash(value) {\n return JSON.stringify(value, function (_, val) {\n return isPlainObject(val) ? Object.keys(val).sort().reduce(function (result, key) {\n result[key] = val[key];\n return result;\n }, {}) : val;\n });\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nexport function partialMatchKey(a, b) {\n return partialDeepEqual(ensureQueryKeyArray(a), ensureQueryKeyArray(b));\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nexport function partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(function (key) {\n return !partialDeepEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nexport function replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n var array = Array.isArray(a) && Array.isArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n var aSize = array ? a.length : Object.keys(a).length;\n var bItems = array ? b : Object.keys(b);\n var bSize = bItems.length;\n var copy = array ? [] : {};\n var equalItems = 0;\n\n for (var i = 0; i < bSize; i++) {\n var key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nexport function shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (var key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nexport function isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n var ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n var prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nexport function isQueryKey(value) {\n return typeof value === 'string' || Array.isArray(value);\n}\nexport function isError(value) {\n return value instanceof Error;\n}\nexport function sleep(timeout) {\n return new Promise(function (resolve) {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nexport function scheduleMicrotask(callback) {\n Promise.resolve().then(callback).catch(function (error) {\n return setTimeout(function () {\n throw error;\n });\n });\n}\nexport function getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n}","import ReactDOM from 'react-dom';\nexport var unstable_batchedUpdates = ReactDOM.unstable_batchedUpdates;","import { notifyManager } from '../core';\nimport { unstable_batchedUpdates } from './reactBatchedUpdates';\nnotifyManager.setBatchNotifyFunction(unstable_batchedUpdates);","export var logger = console;","import { setLogger } from '../core';\nimport { logger } from './logger';\nsetLogger(logger);","import React from 'react';\nvar defaultContext = /*#__PURE__*/React.createContext(undefined);\nvar QueryClientSharingContext = /*#__PURE__*/React.createContext(false); // if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(contextSharing) {\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nexport var useQueryClient = function useQueryClient() {\n var queryClient = React.useContext(getQueryClientContext(React.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nexport var QueryClientProvider = function QueryClientProvider(_ref) {\n var client = _ref.client,\n _ref$contextSharing = _ref.contextSharing,\n contextSharing = _ref$contextSharing === void 0 ? false : _ref$contextSharing,\n children = _ref.children;\n React.useEffect(function () {\n client.mount();\n return function () {\n client.unmount();\n };\n }, [client]);\n var Context = getQueryClientContext(contextSharing);\n return /*#__PURE__*/React.createElement(QueryClientSharingContext.Provider, {\n value: contextSharing\n }, /*#__PURE__*/React.createElement(Context.Provider, {\n value: client\n }, children));\n};","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { isServer, isValidTimeout, noop, replaceEqualDeep, shallowEqualObjects, timeUntilStale } from './utils';\nimport { notifyManager } from './notifyManager';\nimport { focusManager } from './focusManager';\nimport { Subscribable } from './subscribable';\nimport { getLogger } from './logger';\nimport { isCancelledError } from './retryer';\nexport var QueryObserver = /*#__PURE__*/function (_Subscribable) {\n _inheritsLoose(QueryObserver, _Subscribable);\n\n function QueryObserver(client, options) {\n var _this;\n\n _this = _Subscribable.call(this) || this;\n _this.client = client;\n _this.options = options;\n _this.trackedProps = [];\n _this.selectError = null;\n\n _this.bindMethods();\n\n _this.setOptions(options);\n\n return _this;\n }\n\n var _proto = QueryObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n };\n\n _proto.onSubscribe = function onSubscribe() {\n if (this.listeners.length === 1) {\n this.currentQuery.addObserver(this);\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n\n this.updateTimers();\n }\n };\n\n _proto.onUnsubscribe = function onUnsubscribe() {\n if (!this.listeners.length) {\n this.destroy();\n }\n };\n\n _proto.shouldFetchOnReconnect = function shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n };\n\n _proto.shouldFetchOnWindowFocus = function shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n };\n\n _proto.destroy = function destroy() {\n this.listeners = [];\n this.clearTimers();\n this.currentQuery.removeObserver(this);\n };\n\n _proto.setOptions = function setOptions(options, notifyOptions) {\n var prevOptions = this.options;\n var prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryObserverOptions(options);\n\n if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n throw new Error('Expected enabled to be a boolean');\n } // Keep previous query key if the user does not supply one\n\n\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n\n this.updateQuery();\n var mounted = this.hasListeners(); // Fetch if there are subscribers\n\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n } // Update result\n\n\n this.updateResult(notifyOptions); // Update stale interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n\n var nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n };\n\n _proto.getOptimisticResult = function getOptimisticResult(options) {\n var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n return this.createResult(query, defaultedOptions);\n };\n\n _proto.getCurrentResult = function getCurrentResult() {\n return this.currentResult;\n };\n\n _proto.trackResult = function trackResult(result, defaultedOptions) {\n var _this2 = this;\n\n var trackedResult = {};\n\n var trackProp = function trackProp(key) {\n if (!_this2.trackedProps.includes(key)) {\n _this2.trackedProps.push(key);\n }\n };\n\n Object.keys(result).forEach(function (key) {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: function get() {\n trackProp(key);\n return result[key];\n }\n });\n });\n\n if (defaultedOptions.useErrorBoundary || defaultedOptions.suspense) {\n trackProp('error');\n }\n\n return trackedResult;\n };\n\n _proto.getNextResult = function getNextResult(options) {\n var _this3 = this;\n\n return new Promise(function (resolve, reject) {\n var unsubscribe = _this3.subscribe(function (result) {\n if (!result.isFetching) {\n unsubscribe();\n\n if (result.isError && (options == null ? void 0 : options.throwOnError)) {\n reject(result.error);\n } else {\n resolve(result);\n }\n }\n });\n });\n };\n\n _proto.getCurrentQuery = function getCurrentQuery() {\n return this.currentQuery;\n };\n\n _proto.remove = function remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n };\n\n _proto.refetch = function refetch(options) {\n return this.fetch(_extends({}, options, {\n meta: {\n refetchPage: options == null ? void 0 : options.refetchPage\n }\n }));\n };\n\n _proto.fetchOptimistic = function fetchOptimistic(options) {\n var _this4 = this;\n\n var defaultedOptions = this.client.defaultQueryObserverOptions(options);\n var query = this.client.getQueryCache().build(this.client, defaultedOptions);\n return query.fetch().then(function () {\n return _this4.createResult(query, defaultedOptions);\n });\n };\n\n _proto.fetch = function fetch(fetchOptions) {\n var _this5 = this;\n\n return this.executeFetch(fetchOptions).then(function () {\n _this5.updateResult();\n\n return _this5.currentResult;\n });\n };\n\n _proto.executeFetch = function executeFetch(fetchOptions) {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery(); // Fetch\n\n var promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n if (!(fetchOptions == null ? void 0 : fetchOptions.throwOnError)) {\n promise = promise.catch(noop);\n }\n\n return promise;\n };\n\n _proto.updateStaleTimeout = function updateStaleTimeout() {\n var _this6 = this;\n\n this.clearStaleTimeout();\n\n if (isServer || this.currentResult.isStale || !isValidTimeout(this.options.staleTime)) {\n return;\n }\n\n var time = timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n\n var timeout = time + 1;\n this.staleTimeoutId = setTimeout(function () {\n if (!_this6.currentResult.isStale) {\n _this6.updateResult();\n }\n }, timeout);\n };\n\n _proto.computeRefetchInterval = function computeRefetchInterval() {\n var _this$options$refetch;\n\n return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n };\n\n _proto.updateRefetchInterval = function updateRefetchInterval(nextInterval) {\n var _this7 = this;\n\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n\n if (isServer || this.options.enabled === false || !isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n\n this.refetchIntervalId = setInterval(function () {\n if (_this7.options.refetchIntervalInBackground || focusManager.isFocused()) {\n _this7.executeFetch();\n }\n }, this.currentRefetchInterval);\n };\n\n _proto.updateTimers = function updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n };\n\n _proto.clearTimers = function clearTimers() {\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n };\n\n _proto.clearStaleTimeout = function clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n };\n\n _proto.clearRefetchInterval = function clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n };\n\n _proto.createResult = function createResult(query, options) {\n var prevQuery = this.currentQuery;\n var prevOptions = this.options;\n var prevResult = this.currentResult;\n var prevResultState = this.currentResultState;\n var prevResultOptions = this.currentResultOptions;\n var queryChange = query !== prevQuery;\n var queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n var prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n var state = query.state;\n var dataUpdatedAt = state.dataUpdatedAt,\n error = state.error,\n errorUpdatedAt = state.errorUpdatedAt,\n isFetching = state.isFetching,\n status = state.status;\n var isPreviousData = false;\n var isPlaceholderData = false;\n var data; // Optimistically set result in fetching state if needed\n\n if (options.optimisticResults) {\n var mounted = this.hasListeners();\n var fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n var fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n if (fetchOnMount || fetchOptionally) {\n isFetching = true;\n\n if (!dataUpdatedAt) {\n status = 'loading';\n }\n }\n } // Keep previous data if needed\n\n\n if (options.keepPreviousData && !state.dataUpdateCount && (prevQueryResult == null ? void 0 : prevQueryResult.isSuccess) && status !== 'error') {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n\n if (options.structuralSharing !== false) {\n data = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, data);\n }\n\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n getLogger().error(selectError);\n this.selectError = selectError;\n }\n }\n } // Use query data\n else {\n data = state.data;\n } // Show placeholder data if needed\n\n\n if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && (status === 'loading' || status === 'idle')) {\n var placeholderData; // Memoize placeholder data\n\n if ((prevResult == null ? void 0 : prevResult.isPlaceholderData) && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData);\n\n if (options.structuralSharing !== false) {\n placeholderData = replaceEqualDeep(prevResult == null ? void 0 : prevResult.data, placeholderData);\n }\n\n this.selectError = null;\n } catch (selectError) {\n getLogger().error(selectError);\n this.selectError = selectError;\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success';\n data = placeholderData;\n isPlaceholderData = true;\n }\n }\n\n if (this.selectError) {\n error = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = 'error';\n }\n\n var result = {\n status: status,\n isLoading: status === 'loading',\n isSuccess: status === 'success',\n isError: status === 'error',\n isIdle: status === 'idle',\n data: data,\n dataUpdatedAt: dataUpdatedAt,\n error: error,\n errorUpdatedAt: errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching: isFetching,\n isRefetching: isFetching && status !== 'loading',\n isLoadingError: status === 'error' && state.dataUpdatedAt === 0,\n isPlaceholderData: isPlaceholderData,\n isPreviousData: isPreviousData,\n isRefetchError: status === 'error' && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n };\n\n _proto.shouldNotifyListeners = function shouldNotifyListeners(result, prevResult) {\n if (!prevResult) {\n return true;\n }\n\n var _this$options = this.options,\n notifyOnChangeProps = _this$options.notifyOnChangeProps,\n notifyOnChangePropsExclusions = _this$options.notifyOnChangePropsExclusions;\n\n if (!notifyOnChangeProps && !notifyOnChangePropsExclusions) {\n return true;\n }\n\n if (notifyOnChangeProps === 'tracked' && !this.trackedProps.length) {\n return true;\n }\n\n var includedProps = notifyOnChangeProps === 'tracked' ? this.trackedProps : notifyOnChangeProps;\n return Object.keys(result).some(function (key) {\n var typedKey = key;\n var changed = result[typedKey] !== prevResult[typedKey];\n var isIncluded = includedProps == null ? void 0 : includedProps.some(function (x) {\n return x === key;\n });\n var isExcluded = notifyOnChangePropsExclusions == null ? void 0 : notifyOnChangePropsExclusions.some(function (x) {\n return x === key;\n });\n return changed && !isExcluded && (!includedProps || isIncluded);\n });\n };\n\n _proto.updateResult = function updateResult(notifyOptions) {\n var prevResult = this.currentResult;\n this.currentResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options; // Only notify if something has changed\n\n if (shallowEqualObjects(this.currentResult, prevResult)) {\n return;\n } // Determine which callbacks to trigger\n\n\n var defaultNotifyOptions = {\n cache: true\n };\n\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && this.shouldNotifyListeners(this.currentResult, prevResult)) {\n defaultNotifyOptions.listeners = true;\n }\n\n this.notify(_extends({}, defaultNotifyOptions, notifyOptions));\n };\n\n _proto.updateQuery = function updateQuery() {\n var query = this.client.getQueryCache().build(this.client, this.options);\n\n if (query === this.currentQuery) {\n return;\n }\n\n var prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n };\n\n _proto.onQueryUpdate = function onQueryUpdate(action) {\n var notifyOptions = {};\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error' && !isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n\n this.updateResult(notifyOptions);\n\n if (this.hasListeners()) {\n this.updateTimers();\n }\n };\n\n _proto.notify = function notify(notifyOptions) {\n var _this8 = this;\n\n notifyManager.batch(function () {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n _this8.options.onSuccess == null ? void 0 : _this8.options.onSuccess(_this8.currentResult.data);\n _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(_this8.currentResult.data, null);\n } else if (notifyOptions.onError) {\n _this8.options.onError == null ? void 0 : _this8.options.onError(_this8.currentResult.error);\n _this8.options.onSettled == null ? void 0 : _this8.options.onSettled(undefined, _this8.currentResult.error);\n } // Then trigger the listeners\n\n\n if (notifyOptions.listeners) {\n _this8.listeners.forEach(function (listener) {\n listener(_this8.currentResult);\n });\n } // Then the cache listeners\n\n\n if (notifyOptions.cache) {\n _this8.client.getQueryCache().notify({\n query: _this8.currentQuery,\n type: 'observerResultsUpdated'\n });\n }\n });\n };\n\n return QueryObserver;\n}(Subscribable);\n\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n var value = typeof field === 'function' ? field(query) : field;\n return value === 'always' || value !== false && isStale(query, options);\n }\n\n return false;\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport { QueryObserver } from './queryObserver';\nimport { hasNextPage, hasPreviousPage, infiniteQueryBehavior } from './infiniteQueryBehavior';\nexport var InfiniteQueryObserver = /*#__PURE__*/function (_QueryObserver) {\n _inheritsLoose(InfiniteQueryObserver, _QueryObserver);\n\n // Type override\n // Type override\n // Type override\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n function InfiniteQueryObserver(client, options) {\n return _QueryObserver.call(this, client, options) || this;\n }\n\n var _proto = InfiniteQueryObserver.prototype;\n\n _proto.bindMethods = function bindMethods() {\n _QueryObserver.prototype.bindMethods.call(this);\n\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n };\n\n _proto.setOptions = function setOptions(options, notifyOptions) {\n _QueryObserver.prototype.setOptions.call(this, _extends({}, options, {\n behavior: infiniteQueryBehavior()\n }), notifyOptions);\n };\n\n _proto.getOptimisticResult = function getOptimisticResult(options) {\n options.behavior = infiniteQueryBehavior();\n return _QueryObserver.prototype.getOptimisticResult.call(this, options);\n };\n\n _proto.fetchNextPage = function fetchNextPage(options) {\n var _options$cancelRefetc;\n\n return this.fetch({\n // TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617)\n cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,\n throwOnError: options == null ? void 0 : options.throwOnError,\n meta: {\n fetchMore: {\n direction: 'forward',\n pageParam: options == null ? void 0 : options.pageParam\n }\n }\n });\n };\n\n _proto.fetchPreviousPage = function fetchPreviousPage(options) {\n var _options$cancelRefetc2;\n\n return this.fetch({\n // TODO consider removing `?? true` in future breaking change, to be consistent with `refetch` API (see https://github.com/tannerlinsley/react-query/issues/2617)\n cancelRefetch: (_options$cancelRefetc2 = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc2 : true,\n throwOnError: options == null ? void 0 : options.throwOnError,\n meta: {\n fetchMore: {\n direction: 'backward',\n pageParam: options == null ? void 0 : options.pageParam\n }\n }\n });\n };\n\n _proto.createResult = function createResult(query, options) {\n var _state$data, _state$data2, _state$fetchMeta, _state$fetchMeta$fetc, _state$fetchMeta2, _state$fetchMeta2$fet;\n\n var state = query.state;\n\n var result = _QueryObserver.prototype.createResult.call(this, query, options);\n\n return _extends({}, result, {\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: hasNextPage(options, (_state$data = state.data) == null ? void 0 : _state$data.pages),\n hasPreviousPage: hasPreviousPage(options, (_state$data2 = state.data) == null ? void 0 : _state$data2.pages),\n isFetchingNextPage: state.isFetching && ((_state$fetchMeta = state.fetchMeta) == null ? void 0 : (_state$fetchMeta$fetc = _state$fetchMeta.fetchMore) == null ? void 0 : _state$fetchMeta$fetc.direction) === 'forward',\n isFetchingPreviousPage: state.isFetching && ((_state$fetchMeta2 = state.fetchMeta) == null ? void 0 : (_state$fetchMeta2$fet = _state$fetchMeta2.fetchMore) == null ? void 0 : _state$fetchMeta2$fet.direction) === 'backward'\n });\n };\n\n return InfiniteQueryObserver;\n}(QueryObserver);","import React from 'react'; // CONTEXT\n\nfunction createValue() {\n var _isReset = false;\n return {\n clearReset: function clearReset() {\n _isReset = false;\n },\n reset: function reset() {\n _isReset = true;\n },\n isReset: function isReset() {\n return _isReset;\n }\n };\n}\n\nvar QueryErrorResetBoundaryContext = /*#__PURE__*/React.createContext(createValue()); // HOOK\n\nexport var useQueryErrorResetBoundary = function useQueryErrorResetBoundary() {\n return React.useContext(QueryErrorResetBoundaryContext);\n}; // COMPONENT\n\nexport var QueryErrorResetBoundary = function QueryErrorResetBoundary(_ref) {\n var children = _ref.children;\n var value = React.useMemo(function () {\n return createValue();\n }, []);\n return /*#__PURE__*/React.createElement(QueryErrorResetBoundaryContext.Provider, {\n value: value\n }, typeof children === 'function' ? children(value) : children);\n};","import React from 'react';\nimport { notifyManager } from '../core/notifyManager';\nimport { useQueryErrorResetBoundary } from './QueryErrorResetBoundary';\nimport { useQueryClient } from './QueryClientProvider';\nimport { shouldThrowError } from './utils';\nexport function useBaseQuery(options, Observer) {\n var mountedRef = React.useRef(false);\n\n var _React$useState = React.useState(0),\n forceUpdate = _React$useState[1];\n\n var queryClient = useQueryClient();\n var errorResetBoundary = useQueryErrorResetBoundary();\n var defaultedOptions = queryClient.defaultQueryObserverOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n defaultedOptions.optimisticResults = true; // Include callbacks in batch renders\n\n if (defaultedOptions.onError) {\n defaultedOptions.onError = notifyManager.batchCalls(defaultedOptions.onError);\n }\n\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000;\n } // Set cache time to 1 if the option has been set to 0\n // when using suspense to prevent infinite loop of fetches\n\n\n if (defaultedOptions.cacheTime === 0) {\n defaultedOptions.cacheTime = 1;\n }\n }\n\n if (defaultedOptions.suspense || defaultedOptions.useErrorBoundary) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n defaultedOptions.retryOnMount = false;\n }\n }\n\n var _React$useState2 = React.useState(function () {\n return new Observer(queryClient, defaultedOptions);\n }),\n observer = _React$useState2[0];\n\n var result = observer.getOptimisticResult(defaultedOptions);\n React.useEffect(function () {\n mountedRef.current = true;\n errorResetBoundary.clearReset();\n var unsubscribe = observer.subscribe(notifyManager.batchCalls(function () {\n if (mountedRef.current) {\n forceUpdate(function (x) {\n return x + 1;\n });\n }\n })); // Update result to make sure we did not miss any query updates\n // between creating the observer and subscribing to it.\n\n observer.updateResult();\n return function () {\n mountedRef.current = false;\n unsubscribe();\n };\n }, [errorResetBoundary, observer]);\n React.useEffect(function () {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]); // Handle suspense\n\n if (defaultedOptions.suspense && result.isLoading) {\n throw observer.fetchOptimistic(defaultedOptions).then(function (_ref) {\n var data = _ref.data;\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n }).catch(function (error) {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n });\n } // Handle error boundary\n\n\n if (result.isError && !errorResetBoundary.isReset() && !result.isFetching && shouldThrowError(defaultedOptions.suspense, defaultedOptions.useErrorBoundary, [result.error, observer.getCurrentQuery()])) {\n throw result.error;\n } // Handle result property usage tracking\n\n\n if (defaultedOptions.notifyOnChangeProps === 'tracked') {\n result = observer.trackResult(result, defaultedOptions);\n }\n\n return result;\n}","export function shouldThrowError(suspense, _useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary.apply(void 0, params);\n } // Allow useErrorBoundary to override suspense's throwing behavior\n\n\n if (typeof _useErrorBoundary === 'boolean') return _useErrorBoundary; // If suspense is enabled default to throwing errors\n\n return !!suspense;\n}","import { InfiniteQueryObserver } from '../core/infiniteQueryObserver';\nimport { parseQueryArgs } from '../core/utils';\nimport { useBaseQuery } from './useBaseQuery'; // HOOK\n\nexport function useInfiniteQuery(arg1, arg2, arg3) {\n var options = parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery(options, InfiniteQueryObserver);\n}","module.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=4)}([function(e,t,n){e.exports=n(2)()},function(e,t){e.exports=require(\"react\")},function(e,t,n){\"use strict\";var r=n(3);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var c=new Error(\"Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types\");throw c.name=\"Invariant Violation\",c}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},function(e,t,n){\"use strict\";e.exports=\"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED\"},function(e,t,n){\"use strict\";n.r(t),n.d(t,\"FacebookLoginButton\",(function(){return F})),n.d(t,\"GoogleLoginButton\",(function(){return V})),n.d(t,\"GithubLoginButton\",(function(){return R})),n.d(t,\"TwitterLoginButton\",(function(){return Y})),n.d(t,\"AmazonLoginButton\",(function(){return J})),n.d(t,\"InstagramLoginButton\",(function(){return Z})),n.d(t,\"LinkedInLoginButton\",(function(){return Q})),n.d(t,\"MicrosoftLoginButton\",(function(){return ee})),n.d(t,\"BufferLoginButton\",(function(){return re})),n.d(t,\"TelegramLoginButton\",(function(){return ie})),n.d(t,\"AppleLoginButton\",(function(){return ue})),n.d(t,\"DiscordLoginButton\",(function(){return pe})),n.d(t,\"OktaLoginButton\",(function(){return ge})),n.d(t,\"SlackLoginButton\",(function(){return ye})),n.d(t,\"YahooLoginButton\",(function(){return Ee})),n.d(t,\"createButton\",(function(){return M})),n.d(t,\"createSvgIcon\",(function(){return S})),n.d(t,\"ZaloLoginButton\",(function(){return ke})),n.d(t,\"TikTokLoginButton\",(function(){return Te})),n.d(t,\"MetamaskLoginButton\",(function(){return Se}));var r={};n.r(r),n.d(r,\"FacebookLoginButton\",(function(){return F})),n.d(r,\"GoogleLoginButton\",(function(){return V})),n.d(r,\"GithubLoginButton\",(function(){return R})),n.d(r,\"TwitterLoginButton\",(function(){return Y})),n.d(r,\"AmazonLoginButton\",(function(){return J})),n.d(r,\"InstagramLoginButton\",(function(){return Z})),n.d(r,\"LinkedInLoginButton\",(function(){return Q})),n.d(r,\"MicrosoftLoginButton\",(function(){return ee})),n.d(r,\"BufferLoginButton\",(function(){return re})),n.d(r,\"TelegramLoginButton\",(function(){return ie})),n.d(r,\"AppleLoginButton\",(function(){return ue})),n.d(r,\"DiscordLoginButton\",(function(){return pe})),n.d(r,\"OktaLoginButton\",(function(){return ge})),n.d(r,\"SlackLoginButton\",(function(){return ye})),n.d(r,\"YahooLoginButton\",(function(){return Ee})),n.d(r,\"createButton\",(function(){return M})),n.d(r,\"createSvgIcon\",(function(){return S})),n.d(r,\"ZaloLoginButton\",(function(){return ke})),n.d(r,\"TikTokLoginButton\",(function(){return Te})),n.d(r,\"MetamaskLoginButton\",(function(){return Se}));var o=n(1),a=n.n(o),i=n(0),c=n.n(i),l=function(e){var t=e.name,n=e.size,r=e.format;return a.a.createElement(\"i\",{className:r(t),style:{fontSize:n}})};l.propTypes={format:c.a.func,name:c.a.string.isRequired,size:c.a.oneOfType([c.a.string,c.a.number]).isRequired},l.defaultProps={format:function(e){return\"demo-icon icon-\".concat(e)},size:26};var u=l,s=function(e){var t=e.type,n=e.size,r=e.format,o=e.color,i=void 0===o?\"#FFFFFF\":o;return\"string\"==typeof t?a.a.createElement(u,{format:r,name:t,size:n}):a.a.createElement(t,{size:n,color:i})};s.propTypes={format:c.a.func,size:c.a.oneOfType([c.a.number,c.a.string]),type:c.a.oneOfType([c.a.string,c.a.node,c.a.func]),color:c.a.string};var f=s;function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){d(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function d(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function g(e){return(g=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function m(){return(m=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}function v(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function y(e,t){return(y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function b(e){var t=function(){if(\"undefined\"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if(\"function\"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=E(e);if(t){var o=E(this).constructor;n=Reflect.construct(r,arguments,o)}else n=r.apply(this,arguments);return w(this,n)}}function w(e,t){return!t||\"object\"!==g(t)&&\"function\"!=typeof t?function(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}(e):t}function E(e){return(E=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}var O=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&y(e,t)}(i,e);var t,n,r,o=b(i);function i(e){var t;return function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,i),(t=o.call(this,e)).state={focused:!1,hovered:!1},t.handleMouseEnter=function(){t.setState({hovered:!0}),\"function\"==typeof t.props.onMouseEnter&&t.props.onMouseEnter()},t.handleMouseLeave=function(){t.setState({hovered:!1}),\"function\"==typeof t.props.onMouseLeave&&t.props.onMouseLeave()},t.handleFocus=function(){t.setState({focused:!0})},t.handleBlur=function(){t.setState({focused:!1})},t.handleClick=function(e){\"function\"==typeof t.props.onClick&&t.props.onClick(e)},t}return t=i,(n=[{key:\"render\",value:function(){var e=this.props,t=e.activeStyle,n=e.align,r=e.text,o=e.children,i=void 0===o?r:o,c=e.className,l=e.icon,u=e.iconFormat,s=e.iconSize,p=e.iconColor,h=void 0===p?\"#FFFFFF\":p,d=e.preventActiveStyles,g=e.size,v=e.style,y=e.disabled,b=this.state,w=b.focused,E=b.hovered,O=k(z.button,{activeStyle:d?v:t,customStyle:v,active:E||w,size:g});return a.a.createElement(\"button\",m({type:\"button\",style:O,onClick:this.handleClick,onMouseEnter:this.handleMouseEnter,onMouseLeave:this.handleMouseLeave,onFocus:this.handleFocus,onBlur:this.handleBlur},{className:c},{disabled:y}),a.a.createElement(\"div\",{style:z.flex},!x(s)&&a.a.createElement(\"div\",{style:{display:\"flex\",justifyContent:\"center\",minWidth:s}},a.a.createElement(f,{type:l,size:s,format:u,color:h})),!x(s)&&a.a.createElement(\"div\",{style:z.divider}),a.a.createElement(\"div\",{style:{textAlign:n,width:\"100%\"}},i)))}}])&&v(t.prototype,n),r&&v(t,r),i}(o.Component),x=function(e){return\"0\"===e||\"0px\"===e||0===e},k=function(e,t){var n=t.size,r=t.customStyle,o=t.active,a=t.activeStyle;return h(h(h({},e),{},{height:n},r),o&&a)};O.propTypes={activeStyle:c.a.object,align:c.a.oneOf([\"left\",\"right\",\"center\"]),children:c.a.node,className:c.a.string,icon:c.a.oneOfType([c.a.string,c.a.node,c.a.func]),iconFormat:c.a.func,iconSize:c.a.string,iconColor:c.a.string,onClick:c.a.func,onMouseEnter:c.a.func,onMouseLeave:c.a.func,preventActiveStyles:c.a.bool,size:c.a.string,style:c.a.object,text:c.a.string,disabled:c.a.bool},O.defaultProps={align:\"left\",iconSize:\"26px\",preventActiveStyles:!1,size:\"50px\"};var z={button:{display:\"block\",border:0,borderRadius:3,boxShadow:\"rgba(0, 0, 0, 0.5) 0 1px 2px\",color:\"#ffffff\",cursor:\"pointer\",fontSize:\"19px\",margin:\"5px\",width:\"calc(100% - 10px)\",overflow:\"hidden\",padding:\"0 10px\",userSelect:\"none\"},divider:{width:\"10px\"},flex:{alignItems:\"center\",display:\"flex\",height:\"100%\"}};function L(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function T(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?L(Object(n),!0).forEach((function(t){C(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):L(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function C(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var M=function(e){return function(t){var n=T(T(T({activeStyle:T(T({},e.activeStyle),t.activeStyle)},e),t),{},{style:T(T({},e.style),t.style)});return a.a.createElement(O,n)}};function j(){return(j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}var S=function e(t){return function(n){var r=n.size,o=n.color;if(\"string\"==typeof t){return e((function(e){return a.a.createElement(\"img\",j({src:t},e))}))}return a.a.createElement(t,{width:r,height:r,color:o})}},B={activeStyle:{background:\"#293e69\"},icon:S(H),style:{background:\"#3b5998\"},text:\"Log in with Facebook\"},F=M(B);function H(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,viewBox:\"0 0 90 90\"},a.a.createElement(\"g\",null,a.a.createElement(\"path\",{d:\"M90,15.001C90,7.119,82.884,0,75,0H15C7.116,0,0,7.119,0,15.001v59.998 C0,82.881,7.116,90,15.001,90H45V56H34V41h11v-5.844C45,25.077,52.568,16,61.875,16H74v15H61.875C60.548,31,59,32.611,59,35.024V41 h15v15H59v34h16c7.884,0,15-7.119,15-15.001V15.001z\",fill:r})))}H.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var P={activeStyle:{background:\"#EFF0EE\"},icon:S(_),style:{background:\"white\",color:\"black\"},text:\"Log in with Google\"},V=M(P);function _(e){var t=e.width,n=e.height;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 64 64\",width:t,height:n},a.a.createElement(\"linearGradient\",{id:\"95yY7w43Oj6n2vH63j6HJb\",x1:\"29.401\",x2:\"29.401\",y1:\"4.064\",y2:\"106.734\",gradientTransform:\"matrix(1 0 0 -1 0 66)\",gradientUnits:\"userSpaceOnUse\"},a.a.createElement(\"stop\",{offset:\"0\",stopColor:\"#ff5840\"}),a.a.createElement(\"stop\",{offset:\".007\",stopColor:\"#ff5840\"}),a.a.createElement(\"stop\",{offset:\".989\",stopColor:\"#fa528c\"}),a.a.createElement(\"stop\",{offset:\"1\",stopColor:\"#fa528c\"})),a.a.createElement(\"path\",{fill:\"url(#95yY7w43Oj6n2vH63j6HJb)\",d:\"M47.46,15.5l-1.37,1.48c-1.34,1.44-3.5,1.67-5.15,0.6c-2.71-1.75-6.43-3.13-11-2.37\\tc-4.94,0.83-9.17,3.85-11.64, 7.97l-8.03-6.08C14.99,9.82,23.2,5,32.5,5c5,0,9.94,1.56,14.27,4.46\\tC48.81,10.83,49.13,13.71,47.46,15.5z\"}),a.a.createElement(\"linearGradient\",{id:\"95yY7w43Oj6n2vH63j6HJc\",x1:\"12.148\",x2:\"12.148\",y1:\".872\",y2:\"47.812\",gradientTransform:\"matrix(1 0 0 -1 0 66)\",gradientUnits:\"userSpaceOnUse\"},a.a.createElement(\"stop\",{offset:\"0\",stopColor:\"#feaa53\"}),a.a.createElement(\"stop\",{offset:\".612\",stopColor:\"#ffcd49\"}),a.a.createElement(\"stop\",{offset:\"1\",stopColor:\"#ffde44\"})),a.a.createElement(\"path\",{fill:\"url(#95yY7w43Oj6n2vH63j6HJc)\",d:\"M16.01,30.91c-0.09,2.47,0.37,4.83,1.27,6.96l-8.21,6.05c-1.35-2.51-2.3-5.28-2.75-8.22\\tc-1.06-6.88,0.54-13.38, 3.95-18.6l8.03,6.08C16.93,25.47,16.1,28.11,16.01,30.91z\"}),a.a.createElement(\"linearGradient\",{id:\"95yY7w43Oj6n2vH63j6HJd\",x1:\"29.76\",x2:\"29.76\",y1:\"32.149\",y2:\"-6.939\",gradientTransform:\"matrix(1 0 0 -1 0 66)\",gradientUnits:\"userSpaceOnUse\"},a.a.createElement(\"stop\",{offset:\"0\",stopColor:\"#42d778\"}),a.a.createElement(\"stop\",{offset:\".428\",stopColor:\"#3dca76\"}),a.a.createElement(\"stop\",{offset:\"1\",stopColor:\"#34b171\"})),a.a.createElement(\"path\",{fill:\"url(#95yY7w43Oj6n2vH63j6HJd)\",d:\"M50.45,51.28c-4.55,4.07-10.61,6.57-17.36,6.71C22.91,58.2,13.66,52.53,9.07,43.92l8.21-6.05\\tC19.78,43.81, 25.67,48,32.5,48c3.94,0,7.52-1.28,10.33-3.44L50.45,51.28z\"}),a.a.createElement(\"linearGradient\",{id:\"95yY7w43Oj6n2vH63j6HJe\",x1:\"46\",x2:\"46\",y1:\"3.638\",y2:\"35.593\",gradientTransform:\"matrix(1 0 0 -1 0 66)\",gradientUnits:\"userSpaceOnUse\"},a.a.createElement(\"stop\",{offset:\"0\",stopColor:\"#155cde\"}),a.a.createElement(\"stop\",{offset:\".278\",stopColor:\"#1f7fe5\"}),a.a.createElement(\"stop\",{offset:\".569\",stopColor:\"#279ceb\"}),a.a.createElement(\"stop\",{offset:\".82\",stopColor:\"#2cafef\"}),a.a.createElement(\"stop\",{offset:\"1\",stopColor:\"#2eb5f0\"})),a.a.createElement(\"path\",{fill:\"url(#95yY7w43Oj6n2vH63j6HJe)\",d:\"M59,31.97c0.01,7.73-3.26,14.58-8.55,19.31l-7.62-6.72c2.1-1.61,3.77-3.71,4.84-6.15 c0.29-0.66-0.2-1.41-0.92-1.41H37c-2.21,0-4-1.79-4-4v-2c0-2.21,1.79-4,4-4h17C56.75,27,59,29.22,59,31.97z\"}))}_.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var D={activeStyle:{background:\"#555555\"},icon:S(A),style:{background:\"#333333\"},text:\"Log in with GitHub\"},R=M(D);function A(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{fill:r,role:\"img\",viewBox:\"0 0 24 24\",width:t,height:n,xmlns:\"http://www.w3.org/2000/svg\"},a.a.createElement(\"path\",{d:\"M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"}))}A.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var I={activeStyle:{background:\"#3b82da\"},icon:S(G),style:{background:\"#5aa4eb\"},text:\"Log in with Twitter\"},Y=M(I);function G(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,viewBox:\"0 0 24 24\"},a.a.createElement(\"path\",{fill:r,d:\"M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z\"}))}G.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var U={activeStyle:{background:\"#ff9f23\"},icon:S(N),style:{background:\"#f9ae32\"},text:\"Log in with Amazon\"},J=M(U);function N(e){var t=e.width,n=void 0===t?24:t,r=e.height,o=void 0===r?24:r,i=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:i,width:n,height:o,viewBox:\"0 0 24 24\"},a.a.createElement(\"path\",{d:\"M13.958 10.09c0 1.232.029 2.256-.591 3.351-.502.891-1.301 1.438-2.186 1.438-1.214 0-1.922-.924-1.922-2.292 0-2.692 2.415-3.182 4.7-3.182v.685zm3.186 7.705c-.209.189-.512.201-.745.074-1.052-.872-1.238-1.276-1.814-2.106-1.734 1.767-2.962 2.297-5.209 2.297-2.66 0-4.731-1.641-4.731-4.925 0-2.565 1.391-4.309 3.37-5.164 1.715-.754 4.11-.891 5.942-1.095v-.41c0-.753.06-1.642-.383-2.294-.385-.579-1.124-.82-1.775-.82-1.205 0-2.277.618-2.54 1.897-.054.285-.261.567-.549.582l-3.061-.333c-.259-.056-.548-.266-.472-.66.704-3.716 4.06-4.838 7.066-4.838 1.537 0 3.547.41 4.758 1.574 1.538 1.436 1.392 3.352 1.392 5.438v4.923c0 1.481.616 2.13 1.192 2.929.204.287.247.63-.01.839-.647.541-1.794 1.537-2.423 2.099l-.008-.007zm3.559 1.988c-2.748 1.472-5.735 2.181-8.453 2.181-4.027 0-7.927-1.393-11.081-3.706-.277-.202-.481.154-.251.416 2.925 3.326 6.786 5.326 11.076 5.326 3.061 0 6.614-1.214 9.066-3.494.406-.377.058-.945-.357-.723zm.67 2.216c-.091.227.104.32.31.147 1.339-1.12 1.685-3.466 1.411-3.804-.272-.336-2.612-.626-4.04.377-.22.154-.182.367.062.337.805-.096 2.595-.312 2.913.098.319.41-.355 2.094-.656 2.845z\",fillRule:\"evenodd\",clipRule:\"evenodd\"}))}N.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var W={activeStyle:{background:\"linear-gradient(to right, rgb(214, 146, 60) 0%, rgb(160, 11, 143) 50%, rgb(56, 10, 115) 100%)\"},icon:S(q),style:{background:\"linear-gradient(to right, rgb(236, 146, 35) 0%, rgb(177, 42, 160) 50%, rgb(105, 14, 224) 100%)\"},text:\"Log in with Instagram\"},Z=M(W);function q(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,viewBox:\"0 0 169.063 169.063\"},a.a.createElement(\"g\",{fill:r},a.a.createElement(\"path\",{d:\"M122.406,0H46.654C20.929,0,0,20.93,0,46.655v75.752c0,25.726,20.929,46.655,46.654,46.655h75.752 c25.727,0,46.656-20.93,46.656-46.655V46.655C169.063,20.93,148.133,0,122.406,0z M154.063,122.407 c0,17.455-14.201,31.655-31.656,31.655H46.654C29.2,154.063,15,139.862,15,122.407V46.655C15,29.201,29.2,15,46.654,15h75.752 c17.455,0,31.656,14.201,31.656,31.655V122.407z\"}),a.a.createElement(\"path\",{d:\"M84.531,40.97c-24.021,0-43.563,19.542-43.563,43.563c0,24.02,19.542,43.561,43.563,43.561s43.563-19.541,43.563-43.561 C128.094,60.512,108.552,40.97,84.531,40.97z M84.531,113.093c-15.749,0-28.563-12.812-28.563-28.561 c0-15.75,12.813-28.563,28.563-28.563s28.563,12.813,28.563,28.563C113.094,100.281,100.28,113.093,84.531,113.093z\"}),a.a.createElement(\"path\",{d:\"M129.921,28.251c-2.89,0-5.729,1.17-7.77,3.22c-2.051,2.04-3.23,4.88-3.23,7.78c0,2.891,1.18,5.73,3.23,7.78 c2.04,2.04,4.88,3.22,7.77,3.22c2.9,0,5.73-1.18,7.78-3.22c2.05-2.05,3.22-4.89,3.22-7.78c0-2.9-1.17-5.74-3.22-7.78 C135.661,29.421,132.821,28.251,129.921,28.251z\"})))}q.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var K={activeStyle:{background:\"rgb(7, 112, 169)\"},icon:S(X),style:{background:\"rgb(26, 129, 185)\"},text:\"Log in with LinkedIn\"},Q=M(K);function X(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,viewBox:\"0 0 430.117 430.117\"},a.a.createElement(\"g\",null,a.a.createElement(\"path\",{d:\"M430.117,261.543V420.56h-92.188V272.193c0-37.271-13.334-62.707-46.703-62.707 c-25.473,0-40.632,17.142-47.301,33.724c-2.432,5.928-3.058,14.179-3.058,22.477V420.56h-92.219c0,0,1.242-251.285,0-277.32h92.21 v39.309c-0.187,0.294-0.43,0.611-0.606,0.896h0.606v-0.896c12.251-18.869,34.13-45.824,83.102-45.824 C384.633,136.724,430.117,176.361,430.117,261.543z M52.183,9.558C20.635,9.558,0,30.251,0,57.463 c0,26.619,20.038,47.94,50.959,47.94h0.616c32.159,0,52.159-21.317,52.159-47.94C103.128,30.251,83.734,9.558,52.183,9.558z M5.477,420.56h92.184v-277.32H5.477V420.56z\",fill:r})))}X.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var $={activeStyle:{background:\"#555555\"},icon:S(te),style:{background:\"#333333\"},text:\"Log in with Microsoft\"},ee=M($);function te(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,fill:r,x:\"0px\",y:\"0px\",viewBox:\"0 0 48 48\"},a.a.createElement(\"path\",{fill:\"#ff5722\",d:\"M6 6H22V22H6z\",transform:\"rotate(-180 14 14)\"}),a.a.createElement(\"path\",{fill:\"#4caf50\",d:\"M26 6H42V22H26z\",transform:\"rotate(-180 34 14)\"}),a.a.createElement(\"path\",{fill:\"#ffc107\",d:\"M26 26H42V42H26z\",transform:\"rotate(-180 34 34)\"}),a.a.createElement(\"path\",{fill:\"#03a9f4\",d:\"M6 26H22V42H6z\",transform:\"rotate(-180 14 34)\"}))}te.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var ne={activeStyle:{background:\"#1171BB\"},icon:S(oe),style:{background:\"#168EEA\"},text:\"Log in with Buffer\"},re=M(ne);function oe(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{\"aria-labelledby\":\"simpleicons-buffer-icon\",role:\"img\",viewBox:\"0 0 24 24\",width:t,height:n,xmlns:\"http://www.w3.org/2000/svg\"},a.a.createElement(\"path\",{d:\"M23.784 18.24c.287.142.287.267 0 .374l-11.357 5.223c-.287.145-.57.145-.854 0L.213 18.614c-.284-.107-.284-.232 0-.375l2.722-1.23c.284-.14.57-.14.852 0l7.787 3.573c.285.14.57.14.854 0l7.787-3.574c.283-.14.568-.14.852 0l2.717 1.23zm0-6.454c.287.143.287.285 0 .426L12.427 17.44c-.287.104-.57.104-.854 0L.213 12.21c-.284-.143-.284-.284 0-.426l2.722-1.227c.284-.144.57-.144.852 0l7.787 3.57c.285.144.57.144.854 0l7.787-3.57c.283-.144.568-.144.852 0l2.717 1.226zM.214 5.76c-.285-.143-.285-.267 0-.375L11.574.16c.283-.14.57-.14.852 0l11.358 5.23c.287.107.287.232 0 .375l-11.357 5.223c-.287.143-.57.143-.854 0L.213 5.76z\",fill:r}))}oe.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var ae={activeStyle:{background:\"#0088cc\"},icon:S(ce),style:{background:\"#54a9eb\"},text:\"Log in with Telegram\"},ie=M(ae);function ce(e){var t=e.width,n=e.height;e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 240 240\",width:t,height:n,style:{transform:\"scale(1.5)\"}},a.a.createElement(\"defs\",null,a.a.createElement(\"linearGradient\",{id:\"b\",x1:\".66\",x2:\".851\",y1:\".437\",y2:\".802\"},a.a.createElement(\"stop\",{offset:\"0\",stopColor:\"#eff7fc\"}),a.a.createElement(\"stop\",{offset:\"1\",stopColor:\"#fff\"}))),a.a.createElement(\"circle\",{cx:\"120\",cy:\"120\",r:\"120\",fill:\"url(#a)\"}),a.a.createElement(\"path\",{fill:\"#c8daea\",d:\"M98 175c-3.888 0-3.227-1.468-4.568-5.17L82 132.207 170 80\"}),a.a.createElement(\"path\",{fill:\"#a9c9dd\",d:\"M98 175c3 0 4.325-1.372 6-3l16-15.558-19.958-12.035\"}),a.a.createElement(\"path\",{fill:\"url(#b)\",d:\"M100.04 144.41l48.36 35.729c5.519 3.045 9.501 1.468 10.876-5.123l19.685-92.763c2.015-8.08-3.08-11.746-8.36-9.349l-115.59 44.571c-7.89 3.165-7.843 7.567-1.438 9.528l29.663 9.259 68.673-43.325c3.242-1.966 6.218-.91 3.776 1.258\"}))}ce.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var le={activeStyle:{background:\"#3333331c\"},icon:S(se),style:{background:\"#FFFFFF\",color:\"#000000\"},text:\"Log in with Apple\"},ue=M(le);function se(e){var t=e.width,n=e.height;e.color;return a.a.createElement(\"svg\",{width:t,height:n,viewBox:\"0 0 56 56\",style:{transform:\"scale(2.5)\"},version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\"},a.a.createElement(\"g\",{stroke:\"none\",strokeWidth:\"1\",fill:\"none\",fillRule:\"evenodd\"},a.a.createElement(\"path\",{d:\"M28.2226562,20.3846154 C29.0546875,20.3846154 30.0976562,19.8048315 30.71875,19.0317864 C31.28125,18.3312142 31.6914062,17.352829 31.6914062,16.3744437 C31.6914062,16.2415766 31.6796875,16.1087095 31.65625,16 C30.7304687,16.0362365 29.6171875,16.640178 28.9492187,17.4494596 C28.421875,18.06548 27.9414062,19.0317864 27.9414062,20.0222505 C27.9414062,20.1671964 27.9648438,20.3121424 27.9765625,20.3604577 C28.0351562,20.3725366 28.1289062,20.3846154 28.2226562,20.3846154 Z M25.2929688,35 C26.4296875,35 26.9335938,34.214876 28.3515625,34.214876 C29.7929688,34.214876 30.109375,34.9758423 31.375,34.9758423 C32.6171875,34.9758423 33.4492188,33.792117 34.234375,32.6325493 C35.1132812,31.3038779 35.4765625,29.9993643 35.5,29.9389701 C35.4179688,29.9148125 33.0390625,28.9122695 33.0390625,26.0979021 C33.0390625,23.6579784 34.9140625,22.5588048 35.0195312,22.474253 C33.7773438,20.6382708 31.890625,20.5899555 31.375,20.5899555 C29.9804688,20.5899555 28.84375,21.4596313 28.1289062,21.4596313 C27.3554688,21.4596313 26.3359375,20.6382708 25.1289062,20.6382708 C22.8320312,20.6382708 20.5,22.5950413 20.5,26.2911634 C20.5,28.5861411 21.3671875,31.013986 22.4335938,32.5842339 C23.3476562,33.9129053 24.1445312,35 25.2929688,35 Z\",fill:\"#000000\",fillRule:\"nonzero\"})))}se.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var fe={activeStyle:{background:\"#697ec4\"},icon:S(he),style:{background:\"#7289DA\"},text:\"Log in with Discord\"},pe=M(fe);function he(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{role:\"img\",viewBox:\"0 0 24 24\",xmlns:\"http://www.w3.org/2000/svg\",fill:r,width:t,height:n},a.a.createElement(\"title\",null,\"Discord icon\"),a.a.createElement(\"path\",{d:\"M20.222 0c1.406 0 2.54 1.137 2.607 2.475V24l-2.677-2.273-1.47-1.338-1.604-1.398.67 2.205H3.71c-1.402 0-2.54-1.065-2.54-2.476V2.48C1.17 1.142 2.31.003 3.715.003h16.5L20.222 0zm-6.118 5.683h-.03l-.202.2c2.073.6 3.076 1.537 3.076 1.537-1.336-.668-2.54-1.002-3.744-1.137-.87-.135-1.74-.064-2.475 0h-.2c-.47 0-1.47.2-2.81.735-.467.203-.735.336-.735.336s1.002-1.002 3.21-1.537l-.135-.135s-1.672-.064-3.477 1.27c0 0-1.805 3.144-1.805 7.02 0 0 1 1.74 3.743 1.806 0 0 .4-.533.805-1.002-1.54-.468-2.14-1.404-2.14-1.404s.134.066.335.2h.06c.03 0 .044.015.06.03v.006c.016.016.03.03.06.03.33.136.66.27.93.4.466.202 1.065.403 1.8.536.93.135 1.996.2 3.21 0 .6-.135 1.2-.267 1.8-.535.39-.2.87-.4 1.397-.737 0 0-.6.936-2.205 1.404.33.466.795 1 .795 1 2.744-.06 3.81-1.8 3.87-1.726 0-3.87-1.815-7.02-1.815-7.02-1.635-1.214-3.165-1.26-3.435-1.26l.056-.02zm.168 4.413c.703 0 1.27.6 1.27 1.335 0 .74-.57 1.34-1.27 1.34-.7 0-1.27-.6-1.27-1.334.002-.74.573-1.338 1.27-1.338zm-4.543 0c.7 0 1.266.6 1.266 1.335 0 .74-.57 1.34-1.27 1.34-.7 0-1.27-.6-1.27-1.334 0-.74.57-1.338 1.27-1.338z\"}))}he.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var de={activeStyle:{background:\"#f5f5f5\"},icon:S(me),style:{background:\"white\",color:\"black\"},text:\"Log in with Okta\"},ge=M(de);function me(e){var t=e.width,n=void 0===t?24:t,r=e.height,o=void 0===r?24:r;return a.a.createElement(\"svg\",{version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",x:\"0px\",y:\"0px\",viewBox:\"0 0 400 134.7\",width:n,height:o},a.a.createElement(\"g\",null,a.a.createElement(\"g\",null,a.a.createElement(\"path\",{fill:\"#007DC1\",d:\"M50.3,33.8C22.5,33.8,0,56.3,0,84.1s22.5,50.3,50.3,50.3s50.3-22.5,50.3-50.3S78.1,33.8,50.3,33.8z M50.3,109.3c-13.9,0-25.2-11.3-25.2-25.2s11.3-25.2,25.2-25.2s25.2,11.3,25.2,25.2S64.2,109.3,50.3,109.3z\"})),a.a.createElement(\"path\",{fill:\"#007DC1\",d:\"M138.7,101c0-4,4.8-5.9,7.6-3.1c12.6,12.8,33.4,34.8,33.5,34.9c0.3,0.3,0.6,0.8,1.8,1.2 c0.5,0.2,1.3,0.2,2.2,0.2l22.7,0c4.1,0,5.3-4.7,3.4-7.1l-37.6-38.5l-2-2c-4.3-5.1-3.8-7.1,1.1-12.3L201.2,41c1.9-2.4,0.7-7-3.5-7 h-20.6c-0.8,0-1.4,0-2,0.2c-1.2,0.4-1.7,0.8-2,1.2c-0.1,0.1-16.6,17.9-26.8,28.8c-2.8,3-7.8,1-7.8-3.1l0-57.1c0-2.9-2.4-4-4.3-4 h-16.8c-2.9,0-4.3,1.9-4.3,3.6v126.6c0,2.9,2.4,3.7,4.4,3.7h16.8c2.6,0,4.3-1.9,4.3-3.8v-1.3V101z\"}),a.a.createElement(\"path\",{fill:\"#007DC1\",d:\"M275.9,129.6l-1.8-16.8c-0.2-2.3-2.4-3.9-4.7-3.5c-1.3,0.2-2.6,0.3-3.9,0.3c-13.4,0-24.3-10.5-25.1-23.8 c0-0.4,0-0.9,0-1.4V63.8c0-2.7,2-4.9,4.7-4.9l22.5,0c1.6,0,4-1.4,4-4.3V38.7c0-3.1-2-4.7-3.8-4.7h-22.7c-2.6,0-4.7-1.9-4.8-4.5 l0-25.5c0-1.6-1.2-4-4.3-4h-16.7c-2.1,0-4.1,1.3-4.1,3.9c0,0,0,81.5,0,81.9c0.7,27.2,23,48.9,50.3,48.9c2.3,0,4.5-0.2,6.7-0.5 C274.6,133.9,276.2,131.9,275.9,129.6z\"})),a.a.createElement(\"g\",null,a.a.createElement(\"path\",{fill:\"#007DC1\",d:\"M397.1,108.5c-14.2,0-16.4-5.1-16.4-24.2c0-0.1,0-0.1,0-0.2l0-45.9c0-1.6-1.2-4.3-4.4-4.3h-16.8 c-2.1,0-4.4,1.7-4.4,4.3l0,2.1c-7.3-4.2-15.8-6.6-24.8-6.6c-27.8,0-50.3,22.5-50.3,50.3c0,27.8,22.5,50.3,50.3,50.3 c12.5,0,23.9-4.6,32.7-12.1c4.7,7.2,12.3,12,24.2,12.1c2,0,12.8,0.4,12.8-4.7v-17.9C400,110.2,398.8,108.5,397.1,108.5z M330.4,109.3c-13.9,0-25.2-11.3-25.2-25.2c0-13.9,11.3-25.2,25.2-25.2c13.9,0,25.2,11.3,25.2,25.2 C355.5,98,344.2,109.3,330.4,109.3z\"})))}me.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var ve={activeStyle:{background:\"#f5f5f5\"},icon:S(be),style:{background:\"white\",color:\"black\"},text:\"Log in with Slack\"},ye=M(ve);function be(e){var t=e.width,n=void 0===t?24:t,r=e.height,o=void 0===r?24:r,i=e.color;return a.a.createElement(\"svg\",{enableBackground:\"new 0 0 2447.6 2452.5\",viewBox:\"0 0 2447.6 2452.5\",fill:i,width:n,height:o,xmlns:\"http://www.w3.org/2000/svg\"},a.a.createElement(\"g\",{clipRule:\"evenodd\",fillRule:\"evenodd\"},a.a.createElement(\"path\",{d:\"m897.4 0c-135.3.1-244.8 109.9-244.7 245.2-.1 135.3 109.5 245.1 244.8 245.2h244.8v-245.1c.1-135.3-109.5-245.1-244.9-245.3.1 0 .1 0 0 0m0 654h-652.6c-135.3.1-244.9 109.9-244.8 245.2-.2 135.3 109.4 245.1 244.7 245.3h652.7c135.3-.1 244.9-109.9 244.8-245.2.1-135.4-109.5-245.2-244.8-245.3z\",fill:\"#36c5f0\"}),a.a.createElement(\"path\",{d:\"m2447.6 899.2c.1-135.3-109.5-245.1-244.8-245.2-135.3.1-244.9 109.9-244.8 245.2v245.3h244.8c135.3-.1 244.9-109.9 244.8-245.3zm-652.7 0v-654c.1-135.2-109.4-245-244.7-245.2-135.3.1-244.9 109.9-244.8 245.2v654c-.2 135.3 109.4 245.1 244.7 245.3 135.3-.1 244.9-109.9 244.8-245.3z\",fill:\"#2eb67d\"}),a.a.createElement(\"path\",{d:\"m1550.1 2452.5c135.3-.1 244.9-109.9 244.8-245.2.1-135.3-109.5-245.1-244.8-245.2h-244.8v245.2c-.1 135.2 109.5 245 244.8 245.2zm0-654.1h652.7c135.3-.1 244.9-109.9 244.8-245.2.2-135.3-109.4-245.1-244.7-245.3h-652.7c-135.3.1-244.9 109.9-244.8 245.2-.1 135.4 109.4 245.2 244.7 245.3z\",fill:\"#ecb22e\"}),a.a.createElement(\"path\",{d:\"m0 1553.2c-.1 135.3 109.5 245.1 244.8 245.2 135.3-.1 244.9-109.9 244.8-245.2v-245.2h-244.8c-135.3.1-244.9 109.9-244.8 245.2zm652.7 0v654c-.2 135.3 109.4 245.1 244.7 245.3 135.3-.1 244.9-109.9 244.8-245.2v-653.9c.2-135.3-109.4-245.1-244.7-245.3-135.4 0-244.9 109.8-244.8 245.1 0 0 0 .1 0 0\",fill:\"#e01e5a\"})))}be.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string]),color:c.a.string};var we={activeStyle:{background:\"#ac3ade\"},icon:S(Oe),style:{background:\"#720E9E\"},text:\"Log in with Yahoo\"},Ee=M(we);function Oe(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",x:\"0px\",y:\"0px\",viewBox:\"0 0 291.319 291.319\",xstyle:\"enable-background:new 0 0 291.319 291.319;\",xmlSpace:\"preserve\",fill:r,width:t,height:n},a.a.createElement(\"g\",null,a.a.createElement(\"path\",{fill:\"transparent\",d:\"M145.659,0c80.45,0,145.66,65.219,145.66,145.66c0,80.45-65.21,145.659-145.66,145.659 S0,226.109,0,145.66C0,65.219,65.21,0,145.659,0z\"}),a.a.createElement(\"path\",{fill:\"#FFFFFF\",d:\"M212.353,114.98l0.155-0.027l4.825-5.371l-0.237-0.018l0.51-0.801h-67.595l2.604,9.249h18.444 l-31.044,28.722c-6.336-9.24-21.184-30.479-31.544-46.411h19.254v-6.555l0.264-1.884l-0.264-0.036v-0.765H54.631v9.24H77.49 c8.876,7.328,47.358,54.049,48.76,58.51c0.564,4.179,1.366,28.841-0.291,30.698c-1.994,2.868-22.814,1.32-26.483,1.593 l-0.137,9.058c6.7,0.2,26.801-0.009,33.584-0.009c13.364,0,36.77-0.346,40.065-0.082l0.41-8.576l-26.901-0.401 c-0.564-3.887-1.183-28.422-0.619-31.098c2.54-7.765,43.816-39.902,48.059-41.112l3.997-0.901h12.472 C210.405,118.002,212.353,114.98,212.353,114.98z M202.266,179.079l11.689,0.892l13.628-49.979 c-2.276-0.082-22.95-1.93-25.636-2.431L202.266,179.079z M200.245,187.091l0.064,12.208l5.917,0.492l6.391,0.446l1.875-11.944 l-6.737-0.31C207.756,187.983,200.245,187.091,200.245,187.091z\"})))}Oe.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var xe={activeStyle:{background:\"#008FF3\"},icon:S(ze),style:{background:\"#0573ff\"},text:\"Log in with Zalo\"},ke=M(xe);function ze(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,viewBox:\"0 0 24 24\"},a.a.createElement(\"path\",{fill:r,d:\"M12.49 10.2722v-.4496h1.3467v6.3218h-.7704a.576.576 0 01-.5763-.5729l-.0006.0005a3.273 3.273 0 01-1.9372.6321c-1.8138 0-3.2844-1.4697-3.2844-3.2823 0-1.8125 1.4706-3.2822 3.2844-3.2822a3.273 3.273 0 011.9372.6321l.0006.0005zM6.9188 7.7896v.205c0 .3823-.051.6944-.2995 1.0605l-.03.0343c-.0542.0615-.1815.206-.2421.2843L2.024 14.8h4.8948v.7682a.5764.5764 0 01-.5767.5761H0v-.3622c0-.4436.1102-.6414.2495-.8476L4.8582 9.23H.1922V7.7896h6.7266zm8.5513 8.3548a.4805.4805 0 01-.4803-.4798v-7.875h1.4416v8.3548H15.47zM20.6934 9.6C22.52 9.6 24 11.0807 24 12.9044c0 1.8252-1.4801 3.306-3.3066 3.306-1.8264 0-3.3066-1.4808-3.3066-3.306 0-1.8237 1.4802-3.3044 3.3066-3.3044zm-10.1412 5.253c1.0675 0 1.9324-.8645 1.9324-1.9312 0-1.065-.865-1.9295-1.9324-1.9295s-1.9324.8644-1.9324 1.9295c0 1.0667.865 1.9312 1.9324 1.9312zm10.1412-.0033c1.0737 0 1.945-.8707 1.945-1.9453 0-1.073-.8713-1.9436-1.945-1.9436-1.0753 0-1.945.8706-1.945 1.9436 0 1.0746.8697 1.9453 1.945 1.9453z\"}))}ze.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var Le={activeStyle:{background:\"#333333\"},icon:S(Ce),style:{background:\"#000000\",color:\"#FFFFFF\"},text:\"Log in with TikTok\"},Te=M(Le);function Ce(e){var t=e.width,n=e.height,r=e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",width:t,height:n,fill:r,viewBox:\"0 0 512 512\"},a.a.createElement(\"path\",{d:\"M412.19 118.66a109.27 109.27 0 01-9.45-5.5 132.87 132.87 0 01-24.27-20.62c-18.1-20.71-24.86-41.72-27.35-56.43h.1C349.14 23.9 350 16 350.13 16h-82.44v318.78c0 4.28 0 8.51-.18 12.69 0 .52-.05 1-.08 1.56 0 .23 0 .47-.05.71v.18a70 70 0 01-35.22 55.56 68.8 68.8 0 01-34.11 9c-38.41 0-69.54-31.32-69.54-70s31.13-70 69.54-70a68.9 68.9 0 0121.41 3.39l.1-83.94a153.14 153.14 0 00-118 34.52 161.79 161.79 0 00-35.3 43.53c-3.48 6-16.61 30.11-18.2 69.24-1 22.21 5.67 45.22 8.85 54.73v.2c2 5.6 9.75 24.71 22.38 40.82A167.53 167.53 0 00115 470.66v-.2l.2.2c39.91 27.12 84.16 25.34 84.16 25.34 7.66-.31 33.32 0 62.46-13.81 32.32-15.31 50.72-38.12 50.72-38.12a158.46 158.46 0 0027.64-45.93c7.46-19.61 9.95-43.13 9.95-52.53V176.49c1 .6 14.32 9.41 14.32 9.41s19.19 12.3 49.13 20.31c21.48 5.7 50.42 6.9 50.42 6.9v-81.84c-10.14 1.1-30.73-2.1-51.81-12.61z\"}))}function Me(){return(Me=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e}).apply(this,arguments)}Ce.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};var je={activeStyle:{background:\"#eeeeee\"},icon:S(Be),style:{background:\"#ffffff\",color:\"#333333\"},text:\"Log in with Metamask\"},Se=M(je);function Be(e){e.width,e.height,e.color;return a.a.createElement(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",x:\"0\",y:\"0\",version:\"1.1\",viewBox:\"0 0 318.6 318.6\",xmlSpace:\"preserve\"},a.a.createElement(\"path\",{fill:\"#e2761b\",stroke:\"#e2761b\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M274.1 35.5l-99.5 73.9L193 65.8z\"}),a.a.createElement(\"path\",Me({d:\"M44.4 35.5l98.7 74.6-17.5-44.3zm193.9 171.3l-26.5 40.6 56.7 15.6 16.3-55.3zm-204.4.9L50.1 263l56.7-15.6-26.5-40.6z\"},Fe)),a.a.createElement(\"path\",Me({d:\"M103.6 138.2l-15.8 23.9 56.3 2.5-2-60.5zm111.3 0l-39-34.8-1.3 61.2 56.2-2.5zM106.8 247.4l33.8-16.5-29.2-22.8zm71.1-16.5l33.9 16.5-4.7-39.3z\"},Fe)),a.a.createElement(\"path\",{fill:\"#d7c1b3\",stroke:\"#d7c1b3\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M211.8 247.4l-33.9-16.5 2.7 22.1-.3 9.3zm-105 0l31.5 14.9-.2-9.3 2.5-22.1z\"}),a.a.createElement(\"path\",{fill:\"#233447\",stroke:\"#233447\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M138.8 193.5l-28.2-8.3 19.9-9.1zm40.9 0l8.3-17.4 20 9.1z\"}),a.a.createElement(\"path\",{fill:\"#cd6116\",stroke:\"#cd6116\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M106.8 247.4l4.8-40.6-31.3.9zM207 206.8l4.8 40.6 26.5-39.7zm23.8-44.7l-56.2 2.5 5.2 28.9 8.3-17.4 20 9.1zm-120.2 23.1l20-9.1 8.2 17.4 5.3-28.9-56.3-2.5z\"}),a.a.createElement(\"path\",{fill:\"#e4751f\",stroke:\"#e4751f\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M87.8 162.1l23.6 46-.8-22.9zm120.3 23.1l-1 22.9 23.7-46zm-64-20.6l-5.3 28.9 6.6 34.1 1.5-44.9zm30.5 0l-2.7 18 1.2 45 6.7-34.1z\"}),a.a.createElement(\"path\",Me({d:\"M179.8 193.5l-6.7 34.1 4.8 3.3 29.2-22.8 1-22.9zm-69.2-8.3l.8 22.9 29.2 22.8 4.8-3.3-6.6-34.1z\"},He)),a.a.createElement(\"path\",{fill:\"#c0ad9e\",stroke:\"#c0ad9e\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M180.3 262.3l.3-9.3-2.5-2.2h-37.7l-2.3 2.2.2 9.3-31.5-14.9 11 9 22.3 15.5h38.3l22.4-15.5 11-9z\"}),a.a.createElement(\"path\",{fill:\"#161616\",stroke:\"#161616\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M177.9 230.9l-4.8-3.3h-27.7l-4.8 3.3-2.5 22.1 2.3-2.2h37.7l2.5 2.2z\"}),a.a.createElement(\"path\",{fill:\"#763d16\",stroke:\"#763d16\",strokeLinecap:\"round\",strokeLinejoin:\"round\",d:\"M278.3 114.2l8.5-40.8-12.7-37.9-96.2 71.4 37 31.3 52.3 15.3 11.6-13.5-5-3.6 8-7.3-6.2-4.8 8-6.1zM31.8 73.4l8.5 40.8-5.4 4 8 6.1-6.1 4.8 8 7.3-5 3.6 11.5 13.5 52.3-15.3 37-31.3-96.2-71.4z\"}),a.a.createElement(\"path\",Me({d:\"M267.2 153.5l-52.3-15.3 15.9 23.9-23.7 46 31.2-.4h46.5zm-163.6-15.3l-52.3 15.3-17.4 54.2h46.4l31.1.4-23.6-46zm71 26.4l3.3-57.7 15.2-41.1h-67.5l15 41.1 3.5 57.7 1.2 18.2.1 44.8h27.7l.2-44.8z\"},He)))}var Fe={fill:\"#e4761b\",stroke:\"#e4761b\",strokeLinecap:\"round\",strokeLinejoin:\"round\"},He={fill:\"#f6851b\",stroke:\"#f6851b\",strokeLinecap:\"round\",strokeLinejoin:\"round\"};Be.propTypes={width:c.a.oneOfType([c.a.number,c.a.string]),height:c.a.oneOfType([c.a.number,c.a.string])};t.default=r}]);","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};exports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;\nexports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=function(){throw Error(\"act(...) is not supported in production builds of React.\");};\nexports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};exports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};\nexports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};exports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};\nexports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.2.0\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/* UAParser.js v1.0.35\n Copyright © 2012-2021 Faisal Salman <f@faisalman.com>\n MIT License */\n(function(window,undefined){\"use strict\";var LIBVERSION=\"1.0.35\",EMPTY=\"\",UNKNOWN=\"?\",FUNC_TYPE=\"function\",UNDEF_TYPE=\"undefined\",OBJ_TYPE=\"object\",STR_TYPE=\"string\",MAJOR=\"major\",MODEL=\"model\",NAME=\"name\",TYPE=\"type\",VENDOR=\"vendor\",VERSION=\"version\",ARCHITECTURE=\"architecture\",CONSOLE=\"console\",MOBILE=\"mobile\",TABLET=\"tablet\",SMARTTV=\"smarttv\",WEARABLE=\"wearable\",EMBEDDED=\"embedded\",UA_MAX_LENGTH=350;var AMAZON=\"Amazon\",APPLE=\"Apple\",ASUS=\"ASUS\",BLACKBERRY=\"BlackBerry\",BROWSER=\"Browser\",CHROME=\"Chrome\",EDGE=\"Edge\",FIREFOX=\"Firefox\",GOOGLE=\"Google\",HUAWEI=\"Huawei\",LG=\"LG\",MICROSOFT=\"Microsoft\",MOTOROLA=\"Motorola\",OPERA=\"Opera\",SAMSUNG=\"Samsung\",SHARP=\"Sharp\",SONY=\"Sony\",VIERA=\"Viera\",XIAOMI=\"Xiaomi\",ZEBRA=\"Zebra\",FACEBOOK=\"Facebook\",CHROMIUM_OS=\"Chromium OS\",MAC_OS=\"Mac OS\";var extend=function(regexes,extensions){var mergedRegexes={};for(var i in regexes){if(extensions[i]&&extensions[i].length%2===0){mergedRegexes[i]=extensions[i].concat(regexes[i])}else{mergedRegexes[i]=regexes[i]}}return mergedRegexes},enumerize=function(arr){var enums={};for(var i=0;i<arr.length;i++){enums[arr[i].toUpperCase()]=arr[i]}return enums},has=function(str1,str2){return typeof str1===STR_TYPE?lowerize(str2).indexOf(lowerize(str1))!==-1:false},lowerize=function(str){return str.toLowerCase()},majorize=function(version){return typeof version===STR_TYPE?version.replace(/[^\\d\\.]/g,EMPTY).split(\".\")[0]:undefined},trim=function(str,len){if(typeof str===STR_TYPE){str=str.replace(/^\\s\\s*/,EMPTY);return typeof len===UNDEF_TYPE?str:str.substring(0,UA_MAX_LENGTH)}};var rgxMapper=function(ua,arrays){var i=0,j,k,p,q,matches,match;while(i<arrays.length&&!matches){var regex=arrays[i],props=arrays[i+1];j=k=0;while(j<regex.length&&!matches){if(!regex[j]){break}matches=regex[j++].exec(ua);if(!!matches){for(p=0;p<props.length;p++){match=matches[++k];q=props[p];if(typeof q===OBJ_TYPE&&q.length>0){if(q.length===2){if(typeof q[1]==FUNC_TYPE){this[q[0]]=q[1].call(this,match)}else{this[q[0]]=q[1]}}else if(q.length===3){if(typeof q[1]===FUNC_TYPE&&!(q[1].exec&&q[1].test)){this[q[0]]=match?q[1].call(this,match,q[2]):undefined}else{this[q[0]]=match?match.replace(q[1],q[2]):undefined}}else if(q.length===4){this[q[0]]=match?q[3].call(this,match.replace(q[1],q[2])):undefined}}else{this[q]=match?match:undefined}}}}i+=2}},strMapper=function(str,map){for(var i in map){if(typeof map[i]===OBJ_TYPE&&map[i].length>0){for(var j=0;j<map[i].length;j++){if(has(map[i][j],str)){return i===UNKNOWN?undefined:i}}}else if(has(map[i],str)){return i===UNKNOWN?undefined:i}}return str};var oldSafariMap={\"1.0\":\"/8\",1.2:\"/1\",1.3:\"/3\",\"2.0\":\"/412\",\"2.0.2\":\"/416\",\"2.0.3\":\"/417\",\"2.0.4\":\"/419\",\"?\":\"/\"},windowsVersionMap={ME:\"4.90\",\"NT 3.11\":\"NT3.51\",\"NT 4.0\":\"NT4.0\",2e3:\"NT 5.0\",XP:[\"NT 5.1\",\"NT 5.2\"],Vista:\"NT 6.0\",7:\"NT 6.1\",8:\"NT 6.2\",8.1:\"NT 6.3\",10:[\"NT 6.4\",\"NT 10.0\"],RT:\"ARM\"};var regexes={browser:[[/\\b(?:crmo|crios)\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Chrome\"]],[/edg(?:e|ios|a)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Edge\"]],[/(opera mini)\\/([-\\w\\.]+)/i,/(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,/(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i],[NAME,VERSION],[/opios[\\/ ]+([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Mini\"]],[/\\bopr\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA]],[/(kindle)\\/([\\w\\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\\/ ]?([\\w\\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\\/ ]?([\\w\\.]*)/i,/(ba?idubrowser)[\\/ ]?([\\w\\.]+)/i,/(?:ms|\\()(ie) ([\\w\\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\\/([-\\w\\.]+)/i,/(heytap|ovi)browser\\/([\\d\\.]+)/i,/(weibo)__([\\d\\.]+)/i],[NAME,VERSION],[/(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i],[VERSION,[NAME,\"UC\"+BROWSER]],[/microm.+\\bqbcore\\/([\\w\\.]+)/i,/\\bqbcore\\/([\\w\\.]+).+microm/i],[VERSION,[NAME,\"WeChat(Win) Desktop\"]],[/micromessenger\\/([\\w\\.]+)/i],[VERSION,[NAME,\"WeChat\"]],[/konqueror\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Konqueror\"]],[/trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i],[VERSION,[NAME,\"IE\"]],[/ya(?:search)?browser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Yandex\"]],[/(avast|avg)\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 Secure \"+BROWSER],VERSION],[/\\bfocus\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" Focus\"]],[/\\bopt\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Touch\"]],[/coc_coc\\w+\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Coc Coc\"]],[/dolfin\\/([\\w\\.]+)/i],[VERSION,[NAME,\"Dolphin\"]],[/coast\\/([\\w\\.]+)/i],[VERSION,[NAME,OPERA+\" Coast\"]],[/miuibrowser\\/([\\w\\.]+)/i],[VERSION,[NAME,\"MIUI \"+BROWSER]],[/fxios\\/([-\\w\\.]+)/i],[VERSION,[NAME,FIREFOX]],[/\\bqihu|(qi?ho?o?|360)browser/i],[[NAME,\"360 \"+BROWSER]],[/(oculus|samsung|sailfish|huawei)browser\\/([\\w\\.]+)/i],[[NAME,/(.+)/,\"$1 \"+BROWSER],VERSION],[/(comodo_dragon)\\/([\\w\\.]+)/i],[[NAME,/_/g,\" \"],VERSION],[/(electron)\\/([\\w\\.]+) safari/i,/(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\\/ ]?([\\w\\.]+)/i],[NAME,VERSION],[/(metasr)[\\/ ]?([\\w\\.]+)/i,/(lbbrowser)/i,/\\[(linkedin)app\\]/i],[NAME],[/((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i],[[NAME,FACEBOOK],VERSION],[/(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,/(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,/safari (line)\\/([\\w\\.]+)/i,/\\b(line)\\/([\\w\\.]+)\\/iab/i,/(chromium|instagram)[\\/ ]([-\\w\\.]+)/i],[NAME,VERSION],[/\\bgsa\\/([\\w\\.]+) .*safari\\//i],[VERSION,[NAME,\"GSA\"]],[/musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i],[VERSION,[NAME,\"TikTok\"]],[/headlesschrome(?:\\/([\\w\\.]+)| )/i],[VERSION,[NAME,CHROME+\" Headless\"]],[/ wv\\).+(chrome)\\/([\\w\\.]+)/i],[[NAME,CHROME+\" WebView\"],VERSION],[/droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i],[VERSION,[NAME,\"Android \"+BROWSER]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i],[NAME,VERSION],[/version\\/([\\w\\.\\,]+) .*mobile\\/\\w+ (safari)/i],[VERSION,[NAME,\"Mobile Safari\"]],[/version\\/([\\w(\\.|\\,)]+) .*(mobile ?safari|safari)/i],[VERSION,NAME],[/webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i],[NAME,[VERSION,strMapper,oldSafariMap]],[/(webkit|khtml)\\/([\\w\\.]+)/i],[NAME,VERSION],[/(navigator|netscape\\d?)\\/([-\\w\\.]+)/i],[[NAME,\"Netscape\"],VERSION],[/mobile vr; rv:([\\w\\.]+)\\).+firefox/i],[VERSION,[NAME,FIREFOX+\" Reality\"]],[/ekiohf.+(flow)\\/([\\w\\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\\/ ]?([\\w\\.\\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,/(firefox)\\/([\\w\\.]+)/i,/(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,/(links) \\(([\\w\\.]+)/i,/panasonic;(viera)/i],[NAME,VERSION],[/(cobalt)\\/([\\w\\.]+)/i],[NAME,[VERSION,/master.|lts./,\"\"]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\\)]/i],[[ARCHITECTURE,\"amd64\"]],[/(ia32(?=;))/i],[[ARCHITECTURE,lowerize]],[/((?:i[346]|x)86)[;\\)]/i],[[ARCHITECTURE,\"ia32\"]],[/\\b(aarch64|arm(v?8e?l?|_?64))\\b/i],[[ARCHITECTURE,\"arm64\"]],[/\\b(arm(?:v[67])?ht?n?[fl]p?)\\b/i],[[ARCHITECTURE,\"armhf\"]],[/windows (ce|mobile); ppc;/i],[[ARCHITECTURE,\"arm\"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\\))/i],[[ARCHITECTURE,/ower/,EMPTY,lowerize]],[/(sun4\\w)[;\\)]/i],[[ARCHITECTURE,\"sparc\"]],[/((?:avr32|ia64(?=;))|68k(?=\\))|\\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\\b|pa-risc)/i],[[ARCHITECTURE,lowerize]]],device:[[/\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,TABLET]],[/\\b((?:s[cgp]h|gt|sm)-\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,/samsung[- ]([-\\w]+)/i,/sec-(sgh\\w+)/i],[MODEL,[VENDOR,SAMSUNG],[TYPE,MOBILE]],[/(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i],[MODEL,[VENDOR,APPLE],[TYPE,MOBILE]],[/\\((ipad);[-\\w\\),; ]+apple/i,/applecoremedia\\/[\\w\\.]+ \\((ipad)/i,/\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i],[MODEL,[VENDOR,APPLE],[TYPE,TABLET]],[/(macintosh);/i],[MODEL,[VENDOR,APPLE]],[/\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i],[MODEL,[VENDOR,SHARP],[TYPE,MOBILE]],[/\\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\\d{2})\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,TABLET]],[/(?:huawei|honor)([-\\w ]+)[;\\)]/i,/\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i],[MODEL,[VENDOR,HUAWEI],[TYPE,MOBILE]],[/\\b(poco[\\w ]+)(?: bui|\\))/i,/\\b; (\\w+) build\\/hm\\1/i,/\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,/\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,/\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,MOBILE]],[/\\b(mi[-_ ]?(?:pad)(?:[\\w_ ]+))(?: bui|\\))/i],[[MODEL,/_/g,\" \"],[VENDOR,XIAOMI],[TYPE,TABLET]],[/; (\\w+) bui.+ oppo/i,/\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i],[MODEL,[VENDOR,\"OPPO\"],[TYPE,MOBILE]],[/vivo (\\w+)(?: bui|\\))/i,/\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i],[MODEL,[VENDOR,\"Vivo\"],[TYPE,MOBILE]],[/\\b(rmx[12]\\d{3})(?: bui|;|\\))/i],[MODEL,[VENDOR,\"Realme\"],[TYPE,MOBILE]],[/\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,/\\bmot(?:orola)?[- ](\\w*)/i,/((?:moto[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i],[MODEL,[VENDOR,MOTOROLA],[TYPE,MOBILE]],[/\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i],[MODEL,[VENDOR,MOTOROLA],[TYPE,TABLET]],[/((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i],[MODEL,[VENDOR,LG],[TYPE,TABLET]],[/(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,/\\blg[-e;\\/ ]+((?!browser|netcast|android tv)\\w+)/i,/\\blg-?([\\d\\w]+) bui/i],[MODEL,[VENDOR,LG],[TYPE,MOBILE]],[/(ideatab[-\\w ]+)/i,/lenovo ?(s[56]000[-\\w]+|tab(?:[\\w ]+)|yt[-\\d\\w]{6}|tb[-\\d\\w]{6})/i],[MODEL,[VENDOR,\"Lenovo\"],[TYPE,TABLET]],[/(?:maemo|nokia).*(n900|lumia \\d+)/i,/nokia[-_ ]?([-\\w\\.]*)/i],[[MODEL,/_/g,\" \"],[VENDOR,\"Nokia\"],[TYPE,MOBILE]],[/(pixel c)\\b/i],[MODEL,[VENDOR,GOOGLE],[TYPE,TABLET]],[/droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i],[MODEL,[VENDOR,GOOGLE],[TYPE,MOBILE]],[/droid.+ (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-a\\w[4-7][12])(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i],[MODEL,[VENDOR,SONY],[TYPE,MOBILE]],[/sony tablet [ps]/i,/\\b(?:sony)?sgp\\w+(?: bui|\\))/i],[[MODEL,\"Xperia Tablet\"],[VENDOR,SONY],[TYPE,TABLET]],[/ (kb2005|in20[12]5|be20[12][59])\\b/i,/(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i],[MODEL,[VENDOR,\"OnePlus\"],[TYPE,MOBILE]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\\))/i,/(kf[a-z]+)( bui|\\)).+silk\\//i],[MODEL,[VENDOR,AMAZON],[TYPE,TABLET]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i],[[MODEL,/(.+)/g,\"Fire Phone $1\"],[VENDOR,AMAZON],[TYPE,MOBILE]],[/(playbook);[-\\w\\),; ]+(rim)/i],[MODEL,VENDOR,[TYPE,TABLET]],[/\\b((?:bb[a-f]|st[hv])100-\\d)/i,/\\(bb10; (\\w+)/i],[MODEL,[VENDOR,BLACKBERRY],[TYPE,MOBILE]],[/(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i],[MODEL,[VENDOR,ASUS],[TYPE,TABLET]],[/ (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i],[MODEL,[VENDOR,ASUS],[TYPE,MOBILE]],[/(nexus 9)/i],[MODEL,[VENDOR,\"HTC\"],[TYPE,TABLET]],[/(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,/(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i],[VENDOR,[MODEL,/_/g,\" \"],[TYPE,MOBILE]],[/droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i],[MODEL,[VENDOR,\"Acer\"],[TYPE,TABLET]],[/droid.+; (m[1-5] note) bui/i,/\\bmz-([-\\w]{2,})/i],[MODEL,[VENDOR,\"Meizu\"],[TYPE,MOBILE]],[/(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\\w]*)/i,/(hp) ([\\w ]+\\w)/i,/(asus)-?(\\w+)/i,/(microsoft); (lumia[\\w ]+)/i,/(lenovo)[-_ ]?([-\\w]+)/i,/(jolla)/i,/(oppo) ?([\\w ]+) bui/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kobo)\\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\\/([\\w\\.]+)/i,/(nook)[\\w ]+build\\/(\\w+)/i,/(dell) (strea[kpr\\d ]*[\\dko])/i,/(le[- ]+pan)[- ]+(\\w{1,9}) bui/i,/(trinity)[- ]*(t\\d{3}) bui/i,/(gigaset)[- ]+(q\\w{1,9}) bui/i,/(vodafone) ([\\w ]+)(?:\\)| bui)/i],[VENDOR,MODEL,[TYPE,TABLET]],[/(surface duo)/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,TABLET]],[/droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i],[MODEL,[VENDOR,\"Fairphone\"],[TYPE,MOBILE]],[/(u304aa)/i],[MODEL,[VENDOR,\"AT&T\"],[TYPE,MOBILE]],[/\\bsie-(\\w*)/i],[MODEL,[VENDOR,\"Siemens\"],[TYPE,MOBILE]],[/\\b(rct\\w+) b/i],[MODEL,[VENDOR,\"RCA\"],[TYPE,TABLET]],[/\\b(venue[\\d ]{2,7}) b/i],[MODEL,[VENDOR,\"Dell\"],[TYPE,TABLET]],[/\\b(q(?:mv|ta)\\w+) b/i],[MODEL,[VENDOR,\"Verizon\"],[TYPE,TABLET]],[/\\b(?:barnes[& ]+noble |bn[rt])([\\w\\+ ]*) b/i],[MODEL,[VENDOR,\"Barnes & Noble\"],[TYPE,TABLET]],[/\\b(tm\\d{3}\\w+) b/i],[MODEL,[VENDOR,\"NuVision\"],[TYPE,TABLET]],[/\\b(k88) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,TABLET]],[/\\b(nx\\d{3}j) b/i],[MODEL,[VENDOR,\"ZTE\"],[TYPE,MOBILE]],[/\\b(gen\\d{3}) b.+49h/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,MOBILE]],[/\\b(zur\\d{3}) b/i],[MODEL,[VENDOR,\"Swiss\"],[TYPE,TABLET]],[/\\b((zeki)?tb.*\\b) b/i],[MODEL,[VENDOR,\"Zeki\"],[TYPE,TABLET]],[/\\b([yr]\\d{2}) b/i,/\\b(dragon[- ]+touch |dt)(\\w{5}) b/i],[[VENDOR,\"Dragon Touch\"],MODEL,[TYPE,TABLET]],[/\\b(ns-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"Insignia\"],[TYPE,TABLET]],[/\\b((nxa|next)-?\\w{0,9}) b/i],[MODEL,[VENDOR,\"NextBook\"],[TYPE,TABLET]],[/\\b(xtreme\\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[VENDOR,\"Voice\"],MODEL,[TYPE,MOBILE]],[/\\b(lvtel\\-)?(v1[12]) b/i],[[VENDOR,\"LvTel\"],MODEL,[TYPE,MOBILE]],[/\\b(ph-1) /i],[MODEL,[VENDOR,\"Essential\"],[TYPE,MOBILE]],[/\\b(v(100md|700na|7011|917g).*\\b) b/i],[MODEL,[VENDOR,\"Envizen\"],[TYPE,TABLET]],[/\\b(trio[-\\w\\. ]+) b/i],[MODEL,[VENDOR,\"MachSpeed\"],[TYPE,TABLET]],[/\\btu_(1491) b/i],[MODEL,[VENDOR,\"Rotor\"],[TYPE,TABLET]],[/(shield[\\w ]+) b/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,TABLET]],[/(sprint) (\\w+)/i],[VENDOR,MODEL,[TYPE,MOBILE]],[/(kin\\.[onetw]{3})/i],[[MODEL,/\\./g,\" \"],[VENDOR,MICROSOFT],[TYPE,MOBILE]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,TABLET]],[/droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,MOBILE]],[/smart-tv.+(samsung)/i],[VENDOR,[TYPE,SMARTTV]],[/hbbtv.+maple;(\\d+)/i],[[MODEL,/^/,\"SmartTV\"],[VENDOR,SAMSUNG],[TYPE,SMARTTV]],[/(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i],[[VENDOR,LG],[TYPE,SMARTTV]],[/(apple) ?tv/i],[VENDOR,[MODEL,APPLE+\" TV\"],[TYPE,SMARTTV]],[/crkey/i],[[MODEL,CHROME+\"cast\"],[VENDOR,GOOGLE],[TYPE,SMARTTV]],[/droid.+aft(\\w)( bui|\\))/i],[MODEL,[VENDOR,AMAZON],[TYPE,SMARTTV]],[/\\(dtv[\\);].+(aquos)/i,/(aquos-tv[\\w ]+)\\)/i],[MODEL,[VENDOR,SHARP],[TYPE,SMARTTV]],[/(bravia[\\w ]+)( bui|\\))/i],[MODEL,[VENDOR,SONY],[TYPE,SMARTTV]],[/(mitv-\\w{5}) bui/i],[MODEL,[VENDOR,XIAOMI],[TYPE,SMARTTV]],[/Hbbtv.*(technisat) (.*);/i],[VENDOR,MODEL,[TYPE,SMARTTV]],[/\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,/hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i],[[VENDOR,trim],[MODEL,trim],[TYPE,SMARTTV]],[/\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i],[[TYPE,SMARTTV]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[VENDOR,MODEL,[TYPE,CONSOLE]],[/droid.+; (shield) bui/i],[MODEL,[VENDOR,\"Nvidia\"],[TYPE,CONSOLE]],[/(playstation [345portablevi]+)/i],[MODEL,[VENDOR,SONY],[TYPE,CONSOLE]],[/\\b(xbox(?: one)?(?!; xbox))[\\); ]/i],[MODEL,[VENDOR,MICROSOFT],[TYPE,CONSOLE]],[/((pebble))app/i],[VENDOR,MODEL,[TYPE,WEARABLE]],[/(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i],[MODEL,[VENDOR,APPLE],[TYPE,WEARABLE]],[/droid.+; (glass) \\d/i],[MODEL,[VENDOR,GOOGLE],[TYPE,WEARABLE]],[/droid.+; (wt63?0{2,3})\\)/i],[MODEL,[VENDOR,ZEBRA],[TYPE,WEARABLE]],[/(quest( 2| pro)?)/i],[MODEL,[VENDOR,FACEBOOK],[TYPE,WEARABLE]],[/(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i],[VENDOR,[TYPE,EMBEDDED]],[/(aeobc)\\b/i],[MODEL,[VENDOR,AMAZON],[TYPE,EMBEDDED]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+? mobile safari/i],[MODEL,[TYPE,MOBILE]],[/droid .+?; ([^;]+?)(?: bui|\\) applew).+?(?! mobile) safari/i],[MODEL,[TYPE,TABLET]],[/\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i],[[TYPE,TABLET]],[/(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i],[[TYPE,MOBILE]],[/(android[-\\w\\. ]{0,9});.+buil/i],[MODEL,[VENDOR,\"Generic\"]]],engine:[[/windows.+ edge\\/([\\w\\.]+)/i],[VERSION,[NAME,EDGE+\"HTML\"]],[/webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i],[VERSION,[NAME,\"Blink\"]],[/(presto)\\/([\\w\\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\\/([\\w\\.]+)/i,/ekioh(flow)\\/([\\w\\.]+)/i,/(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,/(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,/\\b(libweb)/i],[NAME,VERSION],[/rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i],[VERSION,NAME]],os:[[/microsoft (windows) (vista|xp)/i],[NAME,VERSION],[/(windows) nt 6\\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\\/ ]?([\\d\\.\\w ]*)/i,/(windows)[\\/ ]?([ntce\\d\\. ]+\\w)(?!.+xbox)/i],[NAME,[VERSION,strMapper,windowsVersionMap]],[/(win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i],[[NAME,\"Windows\"],[VERSION,strMapper,windowsVersionMap]],[/ip[honead]{2,4}\\b(?:.*os ([\\w]+) like mac|; opera)/i,/ios;fbsv\\/([\\d\\.]+)/i,/cfnetwork\\/.+darwin/i],[[VERSION,/_/g,\".\"],[NAME,\"iOS\"]],[/(mac os x) ?([\\w\\. ]*)/i,/(macintosh|mac_powerpc\\b)(?!.+haiku)/i],[[NAME,MAC_OS],[VERSION,/_/g,\".\"]],[/droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i],[VERSION,NAME],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\\/ ]?([\\w\\.]*)/i,/(blackberry)\\w*\\/([\\w\\.]*)/i,/(tizen|kaios)[\\/ ]([\\w\\.]+)/i,/\\((series40);/i],[NAME,VERSION],[/\\(bb(10);/i],[VERSION,[NAME,BLACKBERRY]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\\/ ]?([\\w\\.]*)/i],[VERSION,[NAME,\"Symbian\"]],[/mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i],[VERSION,[NAME,FIREFOX+\" OS\"]],[/web0s;.+rt(tv)/i,/\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i],[VERSION,[NAME,\"webOS\"]],[/watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i],[VERSION,[NAME,\"watchOS\"]],[/crkey\\/([\\d\\.]+)/i],[VERSION,[NAME,CHROME+\"cast\"]],[/(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i],[[NAME,CHROMIUM_OS],VERSION],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\\/(\\d+\\.[\\w\\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\\);]+)/i,/\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,/(mint)[\\/\\(\\) ]?(\\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,/(hurd|linux) ?([\\w\\.]*)/i,/(gnu) ?([\\w\\.]*)/i,/\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i,/(haiku) (\\w+)/i],[NAME,VERSION],[/(sunos) ?([\\w\\.\\d]*)/i],[[NAME,\"Solaris\"],VERSION],[/((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,/(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,/\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\\w\\.]*)/i],[NAME,VERSION]]};var UAParser=function(ua,extensions){if(typeof ua===OBJ_TYPE){extensions=ua;ua=undefined}if(!(this instanceof UAParser)){return new UAParser(ua,extensions).getResult()}var _navigator=typeof window!==UNDEF_TYPE&&window.navigator?window.navigator:undefined;var _ua=ua||(_navigator&&_navigator.userAgent?_navigator.userAgent:EMPTY);var _uach=_navigator&&_navigator.userAgentData?_navigator.userAgentData:undefined;var _rgxmap=extensions?extend(regexes,extensions):regexes;var _isSelfNav=_navigator&&_navigator.userAgent==_ua;this.getBrowser=function(){var _browser={};_browser[NAME]=undefined;_browser[VERSION]=undefined;rgxMapper.call(_browser,_ua,_rgxmap.browser);_browser[MAJOR]=majorize(_browser[VERSION]);if(_isSelfNav&&_navigator&&_navigator.brave&&typeof _navigator.brave.isBrave==FUNC_TYPE){_browser[NAME]=\"Brave\"}return _browser};this.getCPU=function(){var _cpu={};_cpu[ARCHITECTURE]=undefined;rgxMapper.call(_cpu,_ua,_rgxmap.cpu);return _cpu};this.getDevice=function(){var _device={};_device[VENDOR]=undefined;_device[MODEL]=undefined;_device[TYPE]=undefined;rgxMapper.call(_device,_ua,_rgxmap.device);if(_isSelfNav&&!_device[TYPE]&&_uach&&_uach.mobile){_device[TYPE]=MOBILE}if(_isSelfNav&&_device[MODEL]==\"Macintosh\"&&_navigator&&typeof _navigator.standalone!==UNDEF_TYPE&&_navigator.maxTouchPoints&&_navigator.maxTouchPoints>2){_device[MODEL]=\"iPad\";_device[TYPE]=TABLET}return _device};this.getEngine=function(){var _engine={};_engine[NAME]=undefined;_engine[VERSION]=undefined;rgxMapper.call(_engine,_ua,_rgxmap.engine);return _engine};this.getOS=function(){var _os={};_os[NAME]=undefined;_os[VERSION]=undefined;rgxMapper.call(_os,_ua,_rgxmap.os);if(_isSelfNav&&!_os[NAME]&&_uach&&_uach.platform!=\"Unknown\"){_os[NAME]=_uach.platform.replace(/chrome os/i,CHROMIUM_OS).replace(/macos/i,MAC_OS)}return _os};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return _ua};this.setUA=function(ua){_ua=typeof ua===STR_TYPE&&ua.length>UA_MAX_LENGTH?trim(ua,UA_MAX_LENGTH):ua;return this};this.setUA(_ua);return this};UAParser.VERSION=LIBVERSION;UAParser.BROWSER=enumerize([NAME,VERSION,MAJOR]);UAParser.CPU=enumerize([ARCHITECTURE]);UAParser.DEVICE=enumerize([MODEL,VENDOR,TYPE,CONSOLE,MOBILE,SMARTTV,TABLET,WEARABLE,EMBEDDED]);UAParser.ENGINE=UAParser.OS=enumerize([NAME,VERSION]);if(typeof exports!==UNDEF_TYPE){if(typeof module!==UNDEF_TYPE&&module.exports){exports=module.exports=UAParser}exports.UAParser=UAParser}else{if(typeof define===FUNC_TYPE&&define.amd){define(function(){return UAParser})}else if(typeof window!==UNDEF_TYPE){window.UAParser=UAParser}}var $=typeof window!==UNDEF_TYPE&&(window.jQuery||window.Zepto);if($&&!$.ua){var parser=new UAParser;$.ua=parser.getResult();$.ua.get=function(){return parser.getUA()};$.ua.set=function(ua){parser.setUA(ua);var result=parser.getResult();for(var prop in result){$.ua[prop]=result[prop]}}}})(typeof window===\"object\"?window:this);","// extracted by mini-css-extract-plugin\nexport default {};","// extracted by mini-css-extract-plugin\nexport default {};","// extracted by mini-css-extract-plugin\nexport default {};","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n var F = function F() {};\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n };\n }\n return _get.apply(this, arguments);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n return keys;\n}\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n });\n }\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event));\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking) {\n db.addEventListener('versionchange', (event) => blocking(event.oldVersion, event.newVersion, event));\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.addEventListener('blocked', (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event));\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ComponentContainer,\n ComponentType,\n Provider,\n Name\n} from '@firebase/component';\nimport { PlatformLoggerService, VersionService } from './types';\n\nexport class PlatformLoggerServiceImpl implements PlatformLoggerService {\n constructor(private readonly container: ComponentContainer) {}\n // In initial implementation, this will be called by installations on\n // auth token refresh, and installations will send this string.\n getPlatformInfoString(): string {\n const providers = this.container.getProviders();\n // Loop through providers and get library/version pairs from any that are\n // version components.\n return providers\n .map(provider => {\n if (isVersionServiceProvider(provider)) {\n const service = provider.getImmediate() as VersionService;\n return `${service.library}/${service.version}`;\n } else {\n return null;\n }\n })\n .filter(logString => logString)\n .join(' ');\n }\n}\n/**\n *\n * @param provider check if this provider provides a VersionService\n *\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\n * provides VersionService. The provider is not necessarily a 'app-version'\n * provider.\n */\nfunction isVersionServiceProvider(provider: Provider<Name>): boolean {\n const component = provider.getComponent();\n return component?.type === ComponentType.VERSION;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger } from '@firebase/logger';\n\nexport const logger = new Logger('@firebase/app');\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { name as appName } from '../package.json';\nimport { name as appCompatName } from '../../app-compat/package.json';\nimport { name as analyticsCompatName } from '../../../packages/analytics-compat/package.json';\nimport { name as analyticsName } from '../../../packages/analytics/package.json';\nimport { name as appCheckCompatName } from '../../../packages/app-check-compat/package.json';\nimport { name as appCheckName } from '../../../packages/app-check/package.json';\nimport { name as authName } from '../../../packages/auth/package.json';\nimport { name as authCompatName } from '../../../packages/auth-compat/package.json';\nimport { name as databaseName } from '../../../packages/database/package.json';\nimport { name as databaseCompatName } from '../../../packages/database-compat/package.json';\nimport { name as functionsName } from '../../../packages/functions/package.json';\nimport { name as functionsCompatName } from '../../../packages/functions-compat/package.json';\nimport { name as installationsName } from '../../../packages/installations/package.json';\nimport { name as installationsCompatName } from '../../../packages/installations-compat/package.json';\nimport { name as messagingName } from '../../../packages/messaging/package.json';\nimport { name as messagingCompatName } from '../../../packages/messaging-compat/package.json';\nimport { name as performanceName } from '../../../packages/performance/package.json';\nimport { name as performanceCompatName } from '../../../packages/performance-compat/package.json';\nimport { name as remoteConfigName } from '../../../packages/remote-config/package.json';\nimport { name as remoteConfigCompatName } from '../../../packages/remote-config-compat/package.json';\nimport { name as storageName } from '../../../packages/storage/package.json';\nimport { name as storageCompatName } from '../../../packages/storage-compat/package.json';\nimport { name as firestoreName } from '../../../packages/firestore/package.json';\nimport { name as firestoreCompatName } from '../../../packages/firestore-compat/package.json';\nimport { name as packageName } from '../../../packages/firebase/package.json';\n\n/**\n * The default app name\n *\n * @internal\n */\nexport const DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\nexport const PLATFORM_LOG_STRING = {\n [appName]: 'fire-core',\n [appCompatName]: 'fire-core-compat',\n [analyticsName]: 'fire-analytics',\n [analyticsCompatName]: 'fire-analytics-compat',\n [appCheckName]: 'fire-app-check',\n [appCheckCompatName]: 'fire-app-check-compat',\n [authName]: 'fire-auth',\n [authCompatName]: 'fire-auth-compat',\n [databaseName]: 'fire-rtdb',\n [databaseCompatName]: 'fire-rtdb-compat',\n [functionsName]: 'fire-fn',\n [functionsCompatName]: 'fire-fn-compat',\n [installationsName]: 'fire-iid',\n [installationsCompatName]: 'fire-iid-compat',\n [messagingName]: 'fire-fcm',\n [messagingCompatName]: 'fire-fcm-compat',\n [performanceName]: 'fire-perf',\n [performanceCompatName]: 'fire-perf-compat',\n [remoteConfigName]: 'fire-rc',\n [remoteConfigCompatName]: 'fire-rc-compat',\n [storageName]: 'fire-gcs',\n [storageCompatName]: 'fire-gcs-compat',\n [firestoreName]: 'fire-fst',\n [firestoreCompatName]: 'fire-fst-compat',\n 'fire-js': 'fire-js', // Platform identifier for JS SDK.\n [packageName]: 'fire-js-all'\n} as const;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp } from './public-types';\nimport { Component, Provider, Name } from '@firebase/component';\nimport { logger } from './logger';\nimport { DEFAULT_ENTRY_NAME } from './constants';\nimport { FirebaseAppImpl } from './firebaseApp';\n\n/**\n * @internal\n */\nexport const _apps = new Map<string, FirebaseApp>();\n\n/**\n * Registered components.\n *\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const _components = new Map<string, Component<any>>();\n\n/**\n * @param component - the component being added to this app's container\n *\n * @internal\n */\nexport function _addComponent<T extends Name>(\n app: FirebaseApp,\n component: Component<T>\n): void {\n try {\n (app as FirebaseAppImpl).container.addComponent(component);\n } catch (e) {\n logger.debug(\n `Component ${component.name} failed to register with FirebaseApp ${app.name}`,\n e\n );\n }\n}\n\n/**\n *\n * @internal\n */\nexport function _addOrOverwriteComponent(\n app: FirebaseApp,\n component: Component\n): void {\n (app as FirebaseAppImpl).container.addOrOverwriteComponent(component);\n}\n\n/**\n *\n * @param component - the component to register\n * @returns whether or not the component is registered successfully\n *\n * @internal\n */\nexport function _registerComponent<T extends Name>(\n component: Component<T>\n): boolean {\n const componentName = component.name;\n if (_components.has(componentName)) {\n logger.debug(\n `There were multiple attempts to register component ${componentName}.`\n );\n\n return false;\n }\n\n _components.set(componentName, component);\n\n // add the component to existing app instances\n for (const app of _apps.values()) {\n _addComponent(app as FirebaseAppImpl, component);\n }\n\n return true;\n}\n\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n *\n * @returns the provider for the service with the matching name\n *\n * @internal\n */\nexport function _getProvider<T extends Name>(\n app: FirebaseApp,\n name: T\n): Provider<T> {\n const heartbeatController = (app as FirebaseAppImpl).container\n .getProvider('heartbeat')\n .getImmediate({ optional: true });\n if (heartbeatController) {\n void heartbeatController.triggerHeartbeat();\n }\n return (app as FirebaseAppImpl).container.getProvider(name);\n}\n\n/**\n *\n * @param app - FirebaseApp instance\n * @param name - service name\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\n *\n * @internal\n */\nexport function _removeServiceInstance<T extends Name>(\n app: FirebaseApp,\n name: T,\n instanceIdentifier: string = DEFAULT_ENTRY_NAME\n): void {\n _getProvider(app, name).clearInstance(instanceIdentifier);\n}\n\n/**\n * Test only\n *\n * @internal\n */\nexport function _clearComponents(): void {\n _components.clear();\n}\n\n/**\n * Exported in order to be used in app-compat package\n */\nexport { DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nexport const enum AppError {\n NO_APP = 'no-app',\n BAD_APP_NAME = 'bad-app-name',\n DUPLICATE_APP = 'duplicate-app',\n APP_DELETED = 'app-deleted',\n NO_OPTIONS = 'no-options',\n INVALID_APP_ARGUMENT = 'invalid-app-argument',\n INVALID_LOG_ARGUMENT = 'invalid-log-argument',\n IDB_OPEN = 'idb-open',\n IDB_GET = 'idb-get',\n IDB_WRITE = 'idb-set',\n IDB_DELETE = 'idb-delete'\n}\n\nconst ERRORS: ErrorMap<AppError> = {\n [AppError.NO_APP]:\n \"No Firebase App '{$appName}' has been created - \" +\n 'call initializeApp() first',\n [AppError.BAD_APP_NAME]: \"Illegal App name: '{$appName}\",\n [AppError.DUPLICATE_APP]:\n \"Firebase App named '{$appName}' already exists with different options or config\",\n [AppError.APP_DELETED]: \"Firebase App named '{$appName}' already deleted\",\n [AppError.NO_OPTIONS]:\n 'Need to provide options, when not being deployed to hosting via source.',\n [AppError.INVALID_APP_ARGUMENT]:\n 'firebase.{$appName}() takes either no argument or a ' +\n 'Firebase App instance.',\n [AppError.INVALID_LOG_ARGUMENT]:\n 'First argument to `onLog` must be null or a function.',\n [AppError.IDB_OPEN]:\n 'Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.IDB_GET]:\n 'Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.IDB_WRITE]:\n 'Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.',\n [AppError.IDB_DELETE]:\n 'Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}.'\n};\n\ninterface ErrorParams {\n [AppError.NO_APP]: { appName: string };\n [AppError.BAD_APP_NAME]: { appName: string };\n [AppError.DUPLICATE_APP]: { appName: string };\n [AppError.APP_DELETED]: { appName: string };\n [AppError.INVALID_APP_ARGUMENT]: { appName: string };\n [AppError.IDB_OPEN]: { originalErrorMessage?: string };\n [AppError.IDB_GET]: { originalErrorMessage?: string };\n [AppError.IDB_WRITE]: { originalErrorMessage?: string };\n [AppError.IDB_DELETE]: { originalErrorMessage?: string };\n}\n\nexport const ERROR_FACTORY = new ErrorFactory<AppError, ErrorParams>(\n 'app',\n 'Firebase',\n ERRORS\n);\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseOptions,\n FirebaseAppSettings\n} from './public-types';\nimport {\n ComponentContainer,\n Component,\n ComponentType\n} from '@firebase/component';\nimport { ERROR_FACTORY, AppError } from './errors';\n\nexport class FirebaseAppImpl implements FirebaseApp {\n private readonly _options: FirebaseOptions;\n private readonly _name: string;\n /**\n * Original config values passed in as a constructor parameter.\n * It is only used to compare with another config object to support idempotent initializeApp().\n *\n * Updating automaticDataCollectionEnabled on the App instance will not change its value in _config.\n */\n private readonly _config: Required<FirebaseAppSettings>;\n private _automaticDataCollectionEnabled: boolean;\n private _isDeleted = false;\n private readonly _container: ComponentContainer;\n\n constructor(\n options: FirebaseOptions,\n config: Required<FirebaseAppSettings>,\n container: ComponentContainer\n ) {\n this._options = { ...options };\n this._config = { ...config };\n this._name = config.name;\n this._automaticDataCollectionEnabled =\n config.automaticDataCollectionEnabled;\n this._container = container;\n this.container.addComponent(\n new Component('app', () => this, ComponentType.PUBLIC)\n );\n }\n\n get automaticDataCollectionEnabled(): boolean {\n this.checkDestroyed();\n return this._automaticDataCollectionEnabled;\n }\n\n set automaticDataCollectionEnabled(val: boolean) {\n this.checkDestroyed();\n this._automaticDataCollectionEnabled = val;\n }\n\n get name(): string {\n this.checkDestroyed();\n return this._name;\n }\n\n get options(): FirebaseOptions {\n this.checkDestroyed();\n return this._options;\n }\n\n get config(): Required<FirebaseAppSettings> {\n this.checkDestroyed();\n return this._config;\n }\n\n get container(): ComponentContainer {\n return this._container;\n }\n\n get isDeleted(): boolean {\n return this._isDeleted;\n }\n\n set isDeleted(val: boolean) {\n this._isDeleted = val;\n }\n\n /**\n * This function will throw an Error if the App has already been deleted -\n * use before performing API actions on the App.\n */\n private checkDestroyed(): void {\n if (this.isDeleted) {\n throw ERROR_FACTORY.create(AppError.APP_DELETED, { appName: this._name });\n }\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FirebaseApp,\n FirebaseOptions,\n FirebaseAppSettings\n} from './public-types';\nimport { DEFAULT_ENTRY_NAME, PLATFORM_LOG_STRING } from './constants';\nimport { ERROR_FACTORY, AppError } from './errors';\nimport {\n ComponentContainer,\n Component,\n Name,\n ComponentType\n} from '@firebase/component';\nimport { version } from '../../firebase/package.json';\nimport { FirebaseAppImpl } from './firebaseApp';\nimport { _apps, _components, _registerComponent } from './internal';\nimport { logger } from './logger';\nimport {\n LogLevelString,\n setLogLevel as setLogLevelImpl,\n LogCallback,\n LogOptions,\n setUserLogHandler\n} from '@firebase/logger';\nimport { deepEqual, getDefaultAppConfig } from '@firebase/util';\n\nexport { FirebaseError } from '@firebase/util';\n\n/**\n * The current SDK version.\n *\n * @public\n */\nexport const SDK_VERSION = version;\n\n/**\n * Creates and initializes a {@link @firebase/app#FirebaseApp} instance.\n *\n * See\n * {@link\n * https://firebase.google.com/docs/web/setup#add_firebase_to_your_app\n * | Add Firebase to your app} and\n * {@link\n * https://firebase.google.com/docs/web/setup#multiple-projects\n * | Initialize multiple projects} for detailed documentation.\n *\n * @example\n * ```javascript\n *\n * // Initialize default app\n * // Retrieve your own options values by adding a web app on\n * // https://console.firebase.google.com\n * initializeApp({\n * apiKey: \"AIza....\", // Auth / General Use\n * authDomain: \"YOUR_APP.firebaseapp.com\", // Auth with popup/redirect\n * databaseURL: \"https://YOUR_APP.firebaseio.com\", // Realtime Database\n * storageBucket: \"YOUR_APP.appspot.com\", // Storage\n * messagingSenderId: \"123456789\" // Cloud Messaging\n * });\n * ```\n *\n * @example\n * ```javascript\n *\n * // Initialize another app\n * const otherApp = initializeApp({\n * databaseURL: \"https://<OTHER_DATABASE_NAME>.firebaseio.com\",\n * storageBucket: \"<OTHER_STORAGE_BUCKET>.appspot.com\"\n * }, \"otherApp\");\n * ```\n *\n * @param options - Options to configure the app's services.\n * @param name - Optional name of the app to initialize. If no name\n * is provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The initialized app.\n *\n * @public\n */\nexport function initializeApp(\n options: FirebaseOptions,\n name?: string\n): FirebaseApp;\n/**\n * Creates and initializes a FirebaseApp instance.\n *\n * @param options - Options to configure the app's services.\n * @param config - FirebaseApp Configuration\n *\n * @public\n */\nexport function initializeApp(\n options: FirebaseOptions,\n config?: FirebaseAppSettings\n): FirebaseApp;\n/**\n * Creates and initializes a FirebaseApp instance.\n *\n * @public\n */\nexport function initializeApp(): FirebaseApp;\nexport function initializeApp(\n _options?: FirebaseOptions,\n rawConfig = {}\n): FirebaseApp {\n let options = _options;\n\n if (typeof rawConfig !== 'object') {\n const name = rawConfig;\n rawConfig = { name };\n }\n\n const config: Required<FirebaseAppSettings> = {\n name: DEFAULT_ENTRY_NAME,\n automaticDataCollectionEnabled: false,\n ...rawConfig\n };\n const name = config.name;\n\n if (typeof name !== 'string' || !name) {\n throw ERROR_FACTORY.create(AppError.BAD_APP_NAME, {\n appName: String(name)\n });\n }\n\n options ||= getDefaultAppConfig();\n\n if (!options) {\n throw ERROR_FACTORY.create(AppError.NO_OPTIONS);\n }\n\n const existingApp = _apps.get(name) as FirebaseAppImpl;\n if (existingApp) {\n // return the existing app if options and config deep equal the ones in the existing app.\n if (\n deepEqual(options, existingApp.options) &&\n deepEqual(config, existingApp.config)\n ) {\n return existingApp;\n } else {\n throw ERROR_FACTORY.create(AppError.DUPLICATE_APP, { appName: name });\n }\n }\n\n const container = new ComponentContainer(name);\n for (const component of _components.values()) {\n container.addComponent(component);\n }\n\n const newApp = new FirebaseAppImpl(options, config, container);\n\n _apps.set(name, newApp);\n\n return newApp;\n}\n\n/**\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\n *\n * When called with no arguments, the default app is returned. When an app name\n * is provided, the app corresponding to that name is returned.\n *\n * An exception is thrown if the app being retrieved has not yet been\n * initialized.\n *\n * @example\n * ```javascript\n * // Return the default app\n * const app = getApp();\n * ```\n *\n * @example\n * ```javascript\n * // Return a named app\n * const otherApp = getApp(\"otherApp\");\n * ```\n *\n * @param name - Optional name of the app to return. If no name is\n * provided, the default is `\"[DEFAULT]\"`.\n *\n * @returns The app corresponding to the provided app name.\n * If no app name is provided, the default app is returned.\n *\n * @public\n */\nexport function getApp(name: string = DEFAULT_ENTRY_NAME): FirebaseApp {\n const app = _apps.get(name);\n if (!app && name === DEFAULT_ENTRY_NAME && getDefaultAppConfig()) {\n return initializeApp();\n }\n if (!app) {\n throw ERROR_FACTORY.create(AppError.NO_APP, { appName: name });\n }\n\n return app;\n}\n\n/**\n * A (read-only) array of all initialized apps.\n * @public\n */\nexport function getApps(): FirebaseApp[] {\n return Array.from(_apps.values());\n}\n\n/**\n * Renders this app unusable and frees the resources of all associated\n * services.\n *\n * @example\n * ```javascript\n * deleteApp(app)\n * .then(function() {\n * console.log(\"App deleted successfully\");\n * })\n * .catch(function(error) {\n * console.log(\"Error deleting app:\", error);\n * });\n * ```\n *\n * @public\n */\nexport async function deleteApp(app: FirebaseApp): Promise<void> {\n const name = app.name;\n if (_apps.has(name)) {\n _apps.delete(name);\n await Promise.all(\n (app as FirebaseAppImpl).container\n .getProviders()\n .map(provider => provider.delete())\n );\n (app as FirebaseAppImpl).isDeleted = true;\n }\n}\n\n/**\n * Registers a library's name and version for platform logging purposes.\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\n * @param version - Current version of that library.\n * @param variant - Bundle variant, e.g., node, rn, etc.\n *\n * @public\n */\nexport function registerVersion(\n libraryKeyOrName: string,\n version: string,\n variant?: string\n): void {\n // TODO: We can use this check to whitelist strings when/if we set up\n // a good whitelist system.\n let library = PLATFORM_LOG_STRING[libraryKeyOrName] ?? libraryKeyOrName;\n if (variant) {\n library += `-${variant}`;\n }\n const libraryMismatch = library.match(/\\s|\\//);\n const versionMismatch = version.match(/\\s|\\//);\n if (libraryMismatch || versionMismatch) {\n const warning = [\n `Unable to register library \"${library}\" with version \"${version}\":`\n ];\n if (libraryMismatch) {\n warning.push(\n `library name \"${library}\" contains illegal characters (whitespace or \"/\")`\n );\n }\n if (libraryMismatch && versionMismatch) {\n warning.push('and');\n }\n if (versionMismatch) {\n warning.push(\n `version name \"${version}\" contains illegal characters (whitespace or \"/\")`\n );\n }\n logger.warn(warning.join(' '));\n return;\n }\n _registerComponent(\n new Component(\n `${library}-version` as Name,\n () => ({ library, version }),\n ComponentType.VERSION\n )\n );\n}\n\n/**\n * Sets log handler for all Firebase SDKs.\n * @param logCallback - An optional custom log handler that executes user code whenever\n * the Firebase SDK makes a logging call.\n *\n * @public\n */\nexport function onLog(\n logCallback: LogCallback | null,\n options?: LogOptions\n): void {\n if (logCallback !== null && typeof logCallback !== 'function') {\n throw ERROR_FACTORY.create(AppError.INVALID_LOG_ARGUMENT);\n }\n setUserLogHandler(logCallback, options);\n}\n\n/**\n * Sets log level for all Firebase SDKs.\n *\n * All of the log types above the current log level are captured (i.e. if\n * you set the log level to `info`, errors are logged, but `debug` and\n * `verbose` logs are not).\n *\n * @public\n */\nexport function setLogLevel(logLevel: LogLevelString): void {\n setLogLevelImpl(logLevel);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\nimport { DBSchema, openDB, IDBPDatabase } from 'idb';\nimport { AppError, ERROR_FACTORY } from './errors';\nimport { FirebaseApp } from './public-types';\nimport { HeartbeatsInIndexedDB } from './types';\nimport { logger } from './logger';\n\nconst DB_NAME = 'firebase-heartbeat-database';\nconst DB_VERSION = 1;\nconst STORE_NAME = 'firebase-heartbeat-store';\n\ninterface AppDB extends DBSchema {\n 'firebase-heartbeat-store': {\n key: string;\n value: HeartbeatsInIndexedDB;\n };\n}\n\nlet dbPromise: Promise<IDBPDatabase<AppDB>> | null = null;\nfunction getDbPromise(): Promise<IDBPDatabase<AppDB>> {\n if (!dbPromise) {\n dbPromise = openDB<AppDB>(DB_NAME, DB_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n db.createObjectStore(STORE_NAME);\n }\n }\n }).catch(e => {\n throw ERROR_FACTORY.create(AppError.IDB_OPEN, {\n originalErrorMessage: e.message\n });\n });\n }\n return dbPromise;\n}\n\nexport async function readHeartbeatsFromIndexedDB(\n app: FirebaseApp\n): Promise<HeartbeatsInIndexedDB | undefined> {\n try {\n const db = await getDbPromise();\n const result = await db\n .transaction(STORE_NAME)\n .objectStore(STORE_NAME)\n .get(computeKey(app));\n return result;\n } catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n } else {\n const idbGetError = ERROR_FACTORY.create(AppError.IDB_GET, {\n originalErrorMessage: (e as Error)?.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\n\nexport async function writeHeartbeatsToIndexedDB(\n app: FirebaseApp,\n heartbeatObject: HeartbeatsInIndexedDB\n): Promise<void> {\n try {\n const db = await getDbPromise();\n const tx = db.transaction(STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(STORE_NAME);\n await objectStore.put(heartbeatObject, computeKey(app));\n await tx.done;\n } catch (e) {\n if (e instanceof FirebaseError) {\n logger.warn(e.message);\n } else {\n const idbGetError = ERROR_FACTORY.create(AppError.IDB_WRITE, {\n originalErrorMessage: (e as Error)?.message\n });\n logger.warn(idbGetError.message);\n }\n }\n}\n\nfunction computeKey(app: FirebaseApp): string {\n return `${app.name}!${app.options.appId}`;\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ComponentContainer } from '@firebase/component';\nimport {\n base64urlEncodeWithoutPadding,\n isIndexedDBAvailable,\n validateIndexedDBOpenable\n} from '@firebase/util';\nimport {\n readHeartbeatsFromIndexedDB,\n writeHeartbeatsToIndexedDB\n} from './indexeddb';\nimport { FirebaseApp } from './public-types';\nimport {\n HeartbeatsByUserAgent,\n HeartbeatService,\n HeartbeatsInIndexedDB,\n HeartbeatStorage,\n SingleDateHeartbeat\n} from './types';\n\nconst MAX_HEADER_BYTES = 1024;\n// 30 days\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\n\nexport class HeartbeatServiceImpl implements HeartbeatService {\n /**\n * The persistence layer for heartbeats\n * Leave public for easier testing.\n */\n _storage: HeartbeatStorageImpl;\n\n /**\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\n * the header string.\n * Stores one record per date. This will be consolidated into the standard\n * format of one record per user agent string before being sent as a header.\n * Populated from indexedDB when the controller is instantiated and should\n * be kept in sync with indexedDB.\n * Leave public for easier testing.\n */\n _heartbeatsCache: HeartbeatsInIndexedDB | null = null;\n\n /**\n * the initialization promise for populating heartbeatCache.\n * If getHeartbeatsHeader() is called before the promise resolves\n * (hearbeatsCache == null), it should wait for this promise\n * Leave public for easier testing.\n */\n _heartbeatsCachePromise: Promise<HeartbeatsInIndexedDB>;\n constructor(private readonly container: ComponentContainer) {\n const app = this.container.getProvider('app').getImmediate();\n this._storage = new HeartbeatStorageImpl(app);\n this._heartbeatsCachePromise = this._storage.read().then(result => {\n this._heartbeatsCache = result;\n return result;\n });\n }\n\n /**\n * Called to report a heartbeat. The function will generate\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\n * to IndexedDB.\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\n * already logged, subsequent calls to this function in the same day will be ignored.\n */\n async triggerHeartbeat(): Promise<void> {\n const platformLogger = this.container\n .getProvider('platform-logger')\n .getImmediate();\n\n // This is the \"Firebase user agent\" string from the platform logger\n // service, not the browser user agent.\n const agent = platformLogger.getPlatformInfoString();\n const date = getUTCDateString();\n if (this._heartbeatsCache === null) {\n this._heartbeatsCache = await this._heartbeatsCachePromise;\n }\n // Do not store a heartbeat if one is already stored for this day\n // or if a header has already been sent today.\n if (\n this._heartbeatsCache.lastSentHeartbeatDate === date ||\n this._heartbeatsCache.heartbeats.some(\n singleDateHeartbeat => singleDateHeartbeat.date === date\n )\n ) {\n return;\n } else {\n // There is no entry for this date. Create one.\n this._heartbeatsCache.heartbeats.push({ date, agent });\n }\n // Remove entries older than 30 days.\n this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(\n singleDateHeartbeat => {\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\n const now = Date.now();\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\n }\n );\n return this._storage.overwrite(this._heartbeatsCache);\n }\n\n /**\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\n * It also clears all heartbeats from memory as well as in IndexedDB.\n *\n * NOTE: Consuming product SDKs should not send the header if this method\n * returns an empty string.\n */\n async getHeartbeatsHeader(): Promise<string> {\n if (this._heartbeatsCache === null) {\n await this._heartbeatsCachePromise;\n }\n // If it's still null or the array is empty, there is no data to send.\n if (\n this._heartbeatsCache === null ||\n this._heartbeatsCache.heartbeats.length === 0\n ) {\n return '';\n }\n const date = getUTCDateString();\n // Extract as many heartbeats from the cache as will fit under the size limit.\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(\n this._heartbeatsCache.heartbeats\n );\n const headerString = base64urlEncodeWithoutPadding(\n JSON.stringify({ version: 2, heartbeats: heartbeatsToSend })\n );\n // Store last sent date to prevent another being logged/sent for the same day.\n this._heartbeatsCache.lastSentHeartbeatDate = date;\n if (unsentEntries.length > 0) {\n // Store any unsent entries if they exist.\n this._heartbeatsCache.heartbeats = unsentEntries;\n // This seems more likely than emptying the array (below) to lead to some odd state\n // since the cache isn't empty and this will be called again on the next request,\n // and is probably safest if we await it.\n await this._storage.overwrite(this._heartbeatsCache);\n } else {\n this._heartbeatsCache.heartbeats = [];\n // Do not wait for this, to reduce latency.\n void this._storage.overwrite(this._heartbeatsCache);\n }\n return headerString;\n }\n}\n\nfunction getUTCDateString(): string {\n const today = new Date();\n // Returns date format 'YYYY-MM-DD'\n return today.toISOString().substring(0, 10);\n}\n\nexport function extractHeartbeatsForHeader(\n heartbeatsCache: SingleDateHeartbeat[],\n maxSize = MAX_HEADER_BYTES\n): {\n heartbeatsToSend: HeartbeatsByUserAgent[];\n unsentEntries: SingleDateHeartbeat[];\n} {\n // Heartbeats grouped by user agent in the standard format to be sent in\n // the header.\n const heartbeatsToSend: HeartbeatsByUserAgent[] = [];\n // Single date format heartbeats that are not sent.\n let unsentEntries = heartbeatsCache.slice();\n for (const singleDateHeartbeat of heartbeatsCache) {\n // Look for an existing entry with the same user agent.\n const heartbeatEntry = heartbeatsToSend.find(\n hb => hb.agent === singleDateHeartbeat.agent\n );\n if (!heartbeatEntry) {\n // If no entry for this user agent exists, create one.\n heartbeatsToSend.push({\n agent: singleDateHeartbeat.agent,\n dates: [singleDateHeartbeat.date]\n });\n if (countBytes(heartbeatsToSend) > maxSize) {\n // If the header would exceed max size, remove the added heartbeat\n // entry and stop adding to the header.\n heartbeatsToSend.pop();\n break;\n }\n } else {\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\n // If the header would exceed max size, remove the added date\n // and stop adding to the header.\n if (countBytes(heartbeatsToSend) > maxSize) {\n heartbeatEntry.dates.pop();\n break;\n }\n }\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\n // quota and the loop breaks early.)\n unsentEntries = unsentEntries.slice(1);\n }\n return {\n heartbeatsToSend,\n unsentEntries\n };\n}\n\nexport class HeartbeatStorageImpl implements HeartbeatStorage {\n private _canUseIndexedDBPromise: Promise<boolean>;\n constructor(public app: FirebaseApp) {\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\n }\n async runIndexedDBEnvironmentCheck(): Promise<boolean> {\n if (!isIndexedDBAvailable()) {\n return false;\n } else {\n return validateIndexedDBOpenable()\n .then(() => true)\n .catch(() => false);\n }\n }\n /**\n * Read all heartbeats.\n */\n async read(): Promise<HeartbeatsInIndexedDB> {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return { heartbeats: [] };\n } else {\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\n return idbHeartbeatObject || { heartbeats: [] };\n }\n }\n // overwrite the storage with the provided heartbeats\n async overwrite(heartbeatsObject: HeartbeatsInIndexedDB): Promise<void> {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n } else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate:\n heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: heartbeatsObject.heartbeats\n });\n }\n }\n // add heartbeats\n async add(heartbeatsObject: HeartbeatsInIndexedDB): Promise<void> {\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\n if (!canUseIndexedDB) {\n return;\n } else {\n const existingHeartbeatsObject = await this.read();\n return writeHeartbeatsToIndexedDB(this.app, {\n lastSentHeartbeatDate:\n heartbeatsObject.lastSentHeartbeatDate ??\n existingHeartbeatsObject.lastSentHeartbeatDate,\n heartbeats: [\n ...existingHeartbeatsObject.heartbeats,\n ...heartbeatsObject.heartbeats\n ]\n });\n }\n }\n}\n\n/**\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\n * in a platform logging header JSON object, stringified, and converted\n * to base 64.\n */\nexport function countBytes(heartbeatsCache: HeartbeatsByUserAgent[]): number {\n // base64 has a restricted set of characters, all of which should be 1 byte.\n return base64urlEncodeWithoutPadding(\n // heartbeatsCache wrapper properties\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })\n ).length;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Component, ComponentType } from '@firebase/component';\nimport { PlatformLoggerServiceImpl } from './platformLoggerService';\nimport { name, version } from '../package.json';\nimport { _registerComponent } from './internal';\nimport { registerVersion } from './api';\nimport { HeartbeatServiceImpl } from './heartbeatService';\n\nexport function registerCoreComponents(variant?: string): void {\n _registerComponent(\n new Component(\n 'platform-logger',\n container => new PlatformLoggerServiceImpl(container),\n ComponentType.PRIVATE\n )\n );\n _registerComponent(\n new Component(\n 'heartbeat',\n container => new HeartbeatServiceImpl(container),\n ComponentType.PRIVATE\n )\n );\n\n // Register `app` package.\n registerVersion(name, version, variant);\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n // Register platform SDK identifier (no version).\n registerVersion('fire-js', '');\n}\n","/**\n * Firebase App\n *\n * @remarks This package coordinates the communication between the different Firebase components\n * @packageDocumentation\n */\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerCoreComponents } from './registerCoreComponents';\n\nexport * from './api';\nexport * from './internal';\nexport * from './public-types';\n\nregisterCoreComponents('__RUNTIME_ENV__');\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n InstantiationMode,\n InstanceFactory,\n ComponentType,\n Dictionary,\n Name,\n onInstanceCreatedCallback\n} from './types';\n\n/**\n * Component for service name T, e.g. `auth`, `auth-internal`\n */\nexport class Component<T extends Name = Name> {\n multipleInstances = false;\n /**\n * Properties to be added to the service namespace\n */\n serviceProps: Dictionary = {};\n\n instantiationMode = InstantiationMode.LAZY;\n\n onInstanceCreated: onInstanceCreatedCallback<T> | null = null;\n\n /**\n *\n * @param name The public service name, e.g. app, auth, firestore, database\n * @param instanceFactory Service factory responsible for creating the public interface\n * @param type whether the service provided by the component is public or private\n */\n constructor(\n readonly name: T,\n readonly instanceFactory: InstanceFactory<T>,\n readonly type: ComponentType\n ) {}\n\n setInstantiationMode(mode: InstantiationMode): this {\n this.instantiationMode = mode;\n return this;\n }\n\n setMultipleInstances(multipleInstances: boolean): this {\n this.multipleInstances = multipleInstances;\n return this;\n }\n\n setServiceProps(props: Dictionary): this {\n this.serviceProps = props;\n return this;\n }\n\n setInstanceCreatedCallback(callback: onInstanceCreatedCallback<T>): this {\n this.onInstanceCreated = callback;\n return this;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const DEFAULT_ENTRY_NAME = '[DEFAULT]';\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Deferred } from '@firebase/util';\nimport { ComponentContainer } from './component_container';\nimport { DEFAULT_ENTRY_NAME } from './constants';\nimport {\n InitializeOptions,\n InstantiationMode,\n Name,\n NameServiceMapping,\n OnInitCallBack\n} from './types';\nimport { Component } from './component';\n\n/**\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\n * NameServiceMapping[T] is an alias for the type of the instance\n */\nexport class Provider<T extends Name> {\n private component: Component<T> | null = null;\n private readonly instances: Map<string, NameServiceMapping[T]> = new Map();\n private readonly instancesDeferred: Map<\n string,\n Deferred<NameServiceMapping[T]>\n > = new Map();\n private readonly instancesOptions: Map<string, Record<string, unknown>> =\n new Map();\n private onInitCallbacks: Map<string, Set<OnInitCallBack<T>>> = new Map();\n\n constructor(\n private readonly name: T,\n private readonly container: ComponentContainer\n ) {}\n\n /**\n * @param identifier A provider can provide mulitple instances of a service\n * if this.component.multipleInstances is true.\n */\n get(identifier?: string): Promise<NameServiceMapping[T]> {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\n const deferred = new Deferred<NameServiceMapping[T]>();\n this.instancesDeferred.set(normalizedIdentifier, deferred);\n\n if (\n this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()\n ) {\n // initialize the service if it can be auto-initialized\n try {\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n if (instance) {\n deferred.resolve(instance);\n }\n } catch (e) {\n // when the instance factory throws an exception during get(), it should not cause\n // a fatal error. We just return the unresolved promise in this case.\n }\n }\n }\n\n return this.instancesDeferred.get(normalizedIdentifier)!.promise;\n }\n\n /**\n *\n * @param options.identifier A provider can provide mulitple instances of a service\n * if this.component.multipleInstances is true.\n * @param options.optional If optional is false or not provided, the method throws an error when\n * the service is not immediately available.\n * If optional is true, the method returns null if the service is not immediately available.\n */\n getImmediate(options: {\n identifier?: string;\n optional: true;\n }): NameServiceMapping[T] | null;\n getImmediate(options?: {\n identifier?: string;\n optional?: false;\n }): NameServiceMapping[T];\n getImmediate(options?: {\n identifier?: string;\n optional?: boolean;\n }): NameServiceMapping[T] | null {\n // if multipleInstances is not supported, use the default name\n const normalizedIdentifier = this.normalizeInstanceIdentifier(\n options?.identifier\n );\n const optional = options?.optional ?? false;\n\n if (\n this.isInitialized(normalizedIdentifier) ||\n this.shouldAutoInitialize()\n ) {\n try {\n return this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n });\n } catch (e) {\n if (optional) {\n return null;\n } else {\n throw e;\n }\n }\n } else {\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\n if (optional) {\n return null;\n } else {\n throw Error(`Service ${this.name} is not available`);\n }\n }\n }\n\n getComponent(): Component<T> | null {\n return this.component;\n }\n\n setComponent(component: Component<T>): void {\n if (component.name !== this.name) {\n throw Error(\n `Mismatching Component ${component.name} for Provider ${this.name}.`\n );\n }\n\n if (this.component) {\n throw Error(`Component for ${this.name} has already been provided`);\n }\n\n this.component = component;\n\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\n if (!this.shouldAutoInitialize()) {\n return;\n }\n\n // if the service is eager, initialize the default instance\n if (isComponentEager(component)) {\n try {\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\n } catch (e) {\n // when the instance factory for an eager Component throws an exception during the eager\n // initialization, it should not cause a fatal error.\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\n // a fatal error in this case?\n }\n }\n\n // Create service instances for the pending promises and resolve them\n // NOTE: if this.multipleInstances is false, only the default instance will be created\n // and all promises with resolve with it regardless of the identifier.\n for (const [\n instanceIdentifier,\n instanceDeferred\n ] of this.instancesDeferred.entries()) {\n const normalizedIdentifier =\n this.normalizeInstanceIdentifier(instanceIdentifier);\n\n try {\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier\n })!;\n instanceDeferred.resolve(instance);\n } catch (e) {\n // when the instance factory throws an exception, it should not cause\n // a fatal error. We just leave the promise unresolved.\n }\n }\n }\n\n clearInstance(identifier: string = DEFAULT_ENTRY_NAME): void {\n this.instancesDeferred.delete(identifier);\n this.instancesOptions.delete(identifier);\n this.instances.delete(identifier);\n }\n\n // app.delete() will call this method on every provider to delete the services\n // TODO: should we mark the provider as deleted?\n async delete(): Promise<void> {\n const services = Array.from(this.instances.values());\n\n await Promise.all([\n ...services\n .filter(service => 'INTERNAL' in service) // legacy services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => (service as any).INTERNAL!.delete()),\n ...services\n .filter(service => '_delete' in service) // modularized services\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .map(service => (service as any)._delete())\n ]);\n }\n\n isComponentSet(): boolean {\n return this.component != null;\n }\n\n isInitialized(identifier: string = DEFAULT_ENTRY_NAME): boolean {\n return this.instances.has(identifier);\n }\n\n getOptions(identifier: string = DEFAULT_ENTRY_NAME): Record<string, unknown> {\n return this.instancesOptions.get(identifier) || {};\n }\n\n initialize(opts: InitializeOptions = {}): NameServiceMapping[T] {\n const { options = {} } = opts;\n const normalizedIdentifier = this.normalizeInstanceIdentifier(\n opts.instanceIdentifier\n );\n if (this.isInitialized(normalizedIdentifier)) {\n throw Error(\n `${this.name}(${normalizedIdentifier}) has already been initialized`\n );\n }\n\n if (!this.isComponentSet()) {\n throw Error(`Component ${this.name} has not been registered yet`);\n }\n\n const instance = this.getOrInitializeService({\n instanceIdentifier: normalizedIdentifier,\n options\n })!;\n\n // resolve any pending promise waiting for the service instance\n for (const [\n instanceIdentifier,\n instanceDeferred\n ] of this.instancesDeferred.entries()) {\n const normalizedDeferredIdentifier =\n this.normalizeInstanceIdentifier(instanceIdentifier);\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\n instanceDeferred.resolve(instance);\n }\n }\n\n return instance;\n }\n\n /**\n *\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\n *\n * @param identifier An optional instance identifier\n * @returns a function to unregister the callback\n */\n onInit(callback: OnInitCallBack<T>, identifier?: string): () => void {\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\n const existingCallbacks =\n this.onInitCallbacks.get(normalizedIdentifier) ??\n new Set<OnInitCallBack<T>>();\n existingCallbacks.add(callback);\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\n\n const existingInstance = this.instances.get(normalizedIdentifier);\n if (existingInstance) {\n callback(existingInstance, normalizedIdentifier);\n }\n\n return () => {\n existingCallbacks.delete(callback);\n };\n }\n\n /**\n * Invoke onInit callbacks synchronously\n * @param instance the service instance`\n */\n private invokeOnInitCallbacks(\n instance: NameServiceMapping[T],\n identifier: string\n ): void {\n const callbacks = this.onInitCallbacks.get(identifier);\n if (!callbacks) {\n return;\n }\n for (const callback of callbacks) {\n try {\n callback(instance, identifier);\n } catch {\n // ignore errors in the onInit callback\n }\n }\n }\n\n private getOrInitializeService({\n instanceIdentifier,\n options = {}\n }: {\n instanceIdentifier: string;\n options?: Record<string, unknown>;\n }): NameServiceMapping[T] | null {\n let instance = this.instances.get(instanceIdentifier);\n if (!instance && this.component) {\n instance = this.component.instanceFactory(this.container, {\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\n options\n });\n this.instances.set(instanceIdentifier, instance);\n this.instancesOptions.set(instanceIdentifier, options);\n\n /**\n * Invoke onInit listeners.\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\n * while onInit listeners are registered by consumers of the provider.\n */\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\n\n /**\n * Order is important\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\n * makes `isInitialized()` return true.\n */\n if (this.component.onInstanceCreated) {\n try {\n this.component.onInstanceCreated(\n this.container,\n instanceIdentifier,\n instance\n );\n } catch {\n // ignore errors in the onInstanceCreatedCallback\n }\n }\n }\n\n return instance || null;\n }\n\n private normalizeInstanceIdentifier(\n identifier: string = DEFAULT_ENTRY_NAME\n ): string {\n if (this.component) {\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\n } else {\n return identifier; // assume multiple instances are supported before the component is provided.\n }\n }\n\n private shouldAutoInitialize(): boolean {\n return (\n !!this.component &&\n this.component.instantiationMode !== InstantiationMode.EXPLICIT\n );\n }\n}\n\n// undefined should be passed to the service factory for the default instance\nfunction normalizeIdentifierForFactory(identifier: string): string | undefined {\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\n}\n\nfunction isComponentEager<T extends Name>(component: Component<T>): boolean {\n return component.instantiationMode === InstantiationMode.EAGER;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Provider } from './provider';\nimport { Component } from './component';\nimport { Name } from './types';\n\n/**\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\n */\nexport class ComponentContainer {\n private readonly providers = new Map<string, Provider<Name>>();\n\n constructor(private readonly name: string) {}\n\n /**\n *\n * @param component Component being added\n * @param overwrite When a component with the same name has already been registered,\n * if overwrite is true: overwrite the existing component with the new component and create a new\n * provider with the new component. It can be useful in tests where you want to use different mocks\n * for different tests.\n * if overwrite is false: throw an exception\n */\n addComponent<T extends Name>(component: Component<T>): void {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n throw new Error(\n `Component ${component.name} has already been registered with ${this.name}`\n );\n }\n\n provider.setComponent(component);\n }\n\n addOrOverwriteComponent<T extends Name>(component: Component<T>): void {\n const provider = this.getProvider(component.name);\n if (provider.isComponentSet()) {\n // delete the existing provider from the container, so we can register the new component\n this.providers.delete(component.name);\n }\n\n this.addComponent(component);\n }\n\n /**\n * getProvider provides a type safe interface where it can only be called with a field name\n * present in NameServiceMapping interface.\n *\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\n * themselves.\n */\n getProvider<T extends Name>(name: T): Provider<T> {\n if (this.providers.has(name)) {\n return this.providers.get(name) as unknown as Provider<T>;\n }\n\n // create a Provider for a service that hasn't registered with Firebase\n const provider = new Provider<T>(name, this);\n this.providers.set(name, provider as unknown as Provider<Name>);\n\n return provider as Provider<T>;\n }\n\n getProviders(): Array<Provider<Name>> {\n return Array.from(this.providers.values());\n }\n}\n","/**\n * @license\n * Copyright 2017 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type LogLevelString =\n | 'debug'\n | 'verbose'\n | 'info'\n | 'warn'\n | 'error'\n | 'silent';\n\nexport interface LogOptions {\n level: LogLevelString;\n}\n\nexport type LogCallback = (callbackParams: LogCallbackParams) => void;\n\nexport interface LogCallbackParams {\n level: LogLevelString;\n message: string;\n args: unknown[];\n type: string;\n}\n\n/**\n * A container for all of the Logger instances\n */\nexport const instances: Logger[] = [];\n\n/**\n * The JS SDK supports 5 log levels and also allows a user the ability to\n * silence the logs altogether.\n *\n * The order is a follows:\n * DEBUG < VERBOSE < INFO < WARN < ERROR\n *\n * All of the log types above the current log level will be captured (i.e. if\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\n * `VERBOSE` logs will not)\n */\nexport enum LogLevel {\n DEBUG,\n VERBOSE,\n INFO,\n WARN,\n ERROR,\n SILENT\n}\n\nconst levelStringToEnum: { [key in LogLevelString]: LogLevel } = {\n 'debug': LogLevel.DEBUG,\n 'verbose': LogLevel.VERBOSE,\n 'info': LogLevel.INFO,\n 'warn': LogLevel.WARN,\n 'error': LogLevel.ERROR,\n 'silent': LogLevel.SILENT\n};\n\n/**\n * The default log level\n */\nconst defaultLogLevel: LogLevel = LogLevel.INFO;\n\n/**\n * We allow users the ability to pass their own log handler. We will pass the\n * type of log, the current log level, and any other arguments passed (i.e. the\n * messages that the user wants to log) to this function.\n */\nexport type LogHandler = (\n loggerInstance: Logger,\n logType: LogLevel,\n ...args: unknown[]\n) => void;\n\n/**\n * By default, `console.debug` is not displayed in the developer console (in\n * chrome). To avoid forcing users to have to opt-in to these logs twice\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\n * logs to the `console.log` function.\n */\nconst ConsoleMethod = {\n [LogLevel.DEBUG]: 'log',\n [LogLevel.VERBOSE]: 'log',\n [LogLevel.INFO]: 'info',\n [LogLevel.WARN]: 'warn',\n [LogLevel.ERROR]: 'error'\n};\n\n/**\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\n * messages on to their corresponding console counterparts (if the log method\n * is supported by the current log level)\n */\nconst defaultLogHandler: LogHandler = (instance, logType, ...args): void => {\n if (logType < instance.logLevel) {\n return;\n }\n const now = new Date().toISOString();\n const method = ConsoleMethod[logType as keyof typeof ConsoleMethod];\n if (method) {\n console[method as 'log' | 'info' | 'warn' | 'error'](\n `[${now}] ${instance.name}:`,\n ...args\n );\n } else {\n throw new Error(\n `Attempted to log a message with an invalid logType (value: ${logType})`\n );\n }\n};\n\nexport class Logger {\n /**\n * Gives you an instance of a Logger to capture messages according to\n * Firebase's logging scheme.\n *\n * @param name The name that the logs will be associated with\n */\n constructor(public name: string) {\n /**\n * Capture the current instance for later use\n */\n instances.push(this);\n }\n\n /**\n * The log level of the given Logger instance.\n */\n private _logLevel = defaultLogLevel;\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n set logLevel(val: LogLevel) {\n if (!(val in LogLevel)) {\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\n }\n this._logLevel = val;\n }\n\n // Workaround for setter/getter having to be the same type.\n setLogLevel(val: LogLevel | LogLevelString): void {\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\n }\n\n /**\n * The main (internal) log handler for the Logger instance.\n * Can be set to a new function in internal package code but not by user.\n */\n private _logHandler: LogHandler = defaultLogHandler;\n get logHandler(): LogHandler {\n return this._logHandler;\n }\n set logHandler(val: LogHandler) {\n if (typeof val !== 'function') {\n throw new TypeError('Value assigned to `logHandler` must be a function');\n }\n this._logHandler = val;\n }\n\n /**\n * The optional, additional, user-defined log handler for the Logger instance.\n */\n private _userLogHandler: LogHandler | null = null;\n get userLogHandler(): LogHandler | null {\n return this._userLogHandler;\n }\n set userLogHandler(val: LogHandler | null) {\n this._userLogHandler = val;\n }\n\n /**\n * The functions below are all based on the `console` interface\n */\n\n debug(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\n this._logHandler(this, LogLevel.DEBUG, ...args);\n }\n log(...args: unknown[]): void {\n this._userLogHandler &&\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\n this._logHandler(this, LogLevel.VERBOSE, ...args);\n }\n info(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\n this._logHandler(this, LogLevel.INFO, ...args);\n }\n warn(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\n this._logHandler(this, LogLevel.WARN, ...args);\n }\n error(...args: unknown[]): void {\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\n this._logHandler(this, LogLevel.ERROR, ...args);\n }\n}\n\nexport function setLogLevel(level: LogLevelString | LogLevel): void {\n instances.forEach(inst => {\n inst.setLogLevel(level);\n });\n}\n\nexport function setUserLogHandler(\n logCallback: LogCallback | null,\n options?: LogOptions\n): void {\n for (const instance of instances) {\n let customLogLevel: LogLevel | null = null;\n if (options && options.level) {\n customLogLevel = levelStringToEnum[options.level];\n }\n if (logCallback === null) {\n instance.userLogHandler = null;\n } else {\n instance.userLogHandler = (\n instance: Logger,\n level: LogLevel,\n ...args: unknown[]\n ) => {\n const message = args\n .map(arg => {\n if (arg == null) {\n return null;\n } else if (typeof arg === 'string') {\n return arg;\n } else if (typeof arg === 'number' || typeof arg === 'boolean') {\n return arg.toString();\n } else if (arg instanceof Error) {\n return arg.message;\n } else {\n try {\n return JSON.stringify(arg);\n } catch (ignored) {\n return null;\n }\n }\n })\n .filter(arg => arg)\n .join(' ');\n if (level >= (customLogLevel ?? instance.logLevel)) {\n logCallback({\n level: LogLevel[level].toLowerCase() as LogLevelString,\n message,\n args,\n type: instance.name\n });\n }\n };\n }\n }\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar 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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(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}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { RecaptchaParameters } from '../../model/public_types';\nimport { GetRecaptchaConfigResponse } from '../../api/authentication/recaptcha';\n\n// reCAPTCHA v2 interface\nexport interface Recaptcha {\n render: (container: HTMLElement, parameters: RecaptchaParameters) => number;\n getResponse: (id: number) => string;\n execute: (id: number) => unknown;\n reset: (id: number) => unknown;\n}\n\nexport function isV2(\n grecaptcha: Recaptcha | GreCAPTCHA | undefined\n): grecaptcha is Recaptcha {\n return (\n grecaptcha !== undefined &&\n (grecaptcha as Recaptcha).getResponse !== undefined\n );\n}\n\n// reCAPTCHA Enterprise & v3 shared interface\nexport interface GreCAPTCHATopLevel extends GreCAPTCHA {\n enterprise: GreCAPTCHA;\n}\n\n// reCAPTCHA Enterprise interface\nexport interface GreCAPTCHA {\n ready: (callback: () => void) => void;\n execute: (siteKey: string, options: { action: string }) => Promise<string>;\n render: (\n container: string | HTMLElement,\n parameters: GreCAPTCHARenderOption\n ) => string;\n}\n\nexport interface GreCAPTCHARenderOption {\n sitekey: string;\n size: 'invisible';\n}\n\nexport function isEnterprise(\n grecaptcha: Recaptcha | GreCAPTCHA | undefined\n): grecaptcha is GreCAPTCHATopLevel {\n return (\n grecaptcha !== undefined &&\n (grecaptcha as GreCAPTCHATopLevel).enterprise !== undefined\n );\n}\n\n// TODO(chuanr): Replace this with the AuthWindow after resolving the dependency issue in Node.js env.\ndeclare global {\n interface Window {\n grecaptcha?: Recaptcha | GreCAPTCHATopLevel;\n }\n}\n\nexport class RecaptchaConfig {\n /**\n * The reCAPTCHA site key.\n */\n siteKey: string = '';\n\n /**\n * The reCAPTCHA enablement status of the {@link EmailAuthProvider} for the current tenant.\n */\n emailPasswordEnabled: boolean = false;\n\n constructor(response: GetRecaptchaConfigResponse) {\n if (response.recaptchaKey === undefined) {\n throw new Error('recaptchaKey undefined');\n }\n // Example response.recaptchaKey: \"projects/proj123/keys/sitekey123\"\n this.siteKey = response.recaptchaKey.split('/')[3];\n this.emailPasswordEnabled = response.recaptchaEnforcementState.some(\n enforcementState =>\n enforcementState.provider === 'EMAIL_PASSWORD_PROVIDER' &&\n enforcementState.enforcementState !== 'OFF'\n );\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorMap, User } from '../model/public_types';\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nimport { IdTokenMfaResponse } from '../api/authentication/mfa';\nimport { AppName } from '../model/auth';\nimport { AuthCredential } from './credentials';\n\n/**\n * Enumeration of Firebase Auth error codes.\n *\n * @internal\n */\nexport const enum AuthErrorCode {\n ADMIN_ONLY_OPERATION = 'admin-restricted-operation',\n ARGUMENT_ERROR = 'argument-error',\n APP_NOT_AUTHORIZED = 'app-not-authorized',\n APP_NOT_INSTALLED = 'app-not-installed',\n CAPTCHA_CHECK_FAILED = 'captcha-check-failed',\n CODE_EXPIRED = 'code-expired',\n CORDOVA_NOT_READY = 'cordova-not-ready',\n CORS_UNSUPPORTED = 'cors-unsupported',\n CREDENTIAL_ALREADY_IN_USE = 'credential-already-in-use',\n CREDENTIAL_MISMATCH = 'custom-token-mismatch',\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN = 'requires-recent-login',\n DEPENDENT_SDK_INIT_BEFORE_AUTH = 'dependent-sdk-initialized-before-auth',\n DYNAMIC_LINK_NOT_ACTIVATED = 'dynamic-link-not-activated',\n EMAIL_CHANGE_NEEDS_VERIFICATION = 'email-change-needs-verification',\n EMAIL_EXISTS = 'email-already-in-use',\n EMULATOR_CONFIG_FAILED = 'emulator-config-failed',\n EXPIRED_OOB_CODE = 'expired-action-code',\n EXPIRED_POPUP_REQUEST = 'cancelled-popup-request',\n INTERNAL_ERROR = 'internal-error',\n INVALID_API_KEY = 'invalid-api-key',\n INVALID_APP_CREDENTIAL = 'invalid-app-credential',\n INVALID_APP_ID = 'invalid-app-id',\n INVALID_AUTH = 'invalid-user-token',\n INVALID_AUTH_EVENT = 'invalid-auth-event',\n INVALID_CERT_HASH = 'invalid-cert-hash',\n INVALID_CODE = 'invalid-verification-code',\n INVALID_CONTINUE_URI = 'invalid-continue-uri',\n INVALID_CORDOVA_CONFIGURATION = 'invalid-cordova-configuration',\n INVALID_CUSTOM_TOKEN = 'invalid-custom-token',\n INVALID_DYNAMIC_LINK_DOMAIN = 'invalid-dynamic-link-domain',\n INVALID_EMAIL = 'invalid-email',\n INVALID_EMULATOR_SCHEME = 'invalid-emulator-scheme',\n INVALID_IDP_RESPONSE = 'invalid-credential',\n INVALID_MESSAGE_PAYLOAD = 'invalid-message-payload',\n INVALID_MFA_SESSION = 'invalid-multi-factor-session',\n INVALID_OAUTH_CLIENT_ID = 'invalid-oauth-client-id',\n INVALID_OAUTH_PROVIDER = 'invalid-oauth-provider',\n INVALID_OOB_CODE = 'invalid-action-code',\n INVALID_ORIGIN = 'unauthorized-domain',\n INVALID_PASSWORD = 'wrong-password',\n INVALID_PERSISTENCE = 'invalid-persistence-type',\n INVALID_PHONE_NUMBER = 'invalid-phone-number',\n INVALID_PROVIDER_ID = 'invalid-provider-id',\n INVALID_RECIPIENT_EMAIL = 'invalid-recipient-email',\n INVALID_SENDER = 'invalid-sender',\n INVALID_SESSION_INFO = 'invalid-verification-id',\n INVALID_TENANT_ID = 'invalid-tenant-id',\n LOGIN_BLOCKED = 'login-blocked',\n MFA_INFO_NOT_FOUND = 'multi-factor-info-not-found',\n MFA_REQUIRED = 'multi-factor-auth-required',\n MISSING_ANDROID_PACKAGE_NAME = 'missing-android-pkg-name',\n MISSING_APP_CREDENTIAL = 'missing-app-credential',\n MISSING_AUTH_DOMAIN = 'auth-domain-config-required',\n MISSING_CODE = 'missing-verification-code',\n MISSING_CONTINUE_URI = 'missing-continue-uri',\n MISSING_IFRAME_START = 'missing-iframe-start',\n MISSING_IOS_BUNDLE_ID = 'missing-ios-bundle-id',\n MISSING_OR_INVALID_NONCE = 'missing-or-invalid-nonce',\n MISSING_MFA_INFO = 'missing-multi-factor-info',\n MISSING_MFA_SESSION = 'missing-multi-factor-session',\n MISSING_PHONE_NUMBER = 'missing-phone-number',\n MISSING_PASSWORD = 'missing-password',\n MISSING_SESSION_INFO = 'missing-verification-id',\n MODULE_DESTROYED = 'app-deleted',\n NEED_CONFIRMATION = 'account-exists-with-different-credential',\n NETWORK_REQUEST_FAILED = 'network-request-failed',\n NULL_USER = 'null-user',\n NO_AUTH_EVENT = 'no-auth-event',\n NO_SUCH_PROVIDER = 'no-such-provider',\n OPERATION_NOT_ALLOWED = 'operation-not-allowed',\n OPERATION_NOT_SUPPORTED = 'operation-not-supported-in-this-environment',\n POPUP_BLOCKED = 'popup-blocked',\n POPUP_CLOSED_BY_USER = 'popup-closed-by-user',\n PROVIDER_ALREADY_LINKED = 'provider-already-linked',\n QUOTA_EXCEEDED = 'quota-exceeded',\n REDIRECT_CANCELLED_BY_USER = 'redirect-cancelled-by-user',\n REDIRECT_OPERATION_PENDING = 'redirect-operation-pending',\n REJECTED_CREDENTIAL = 'rejected-credential',\n SECOND_FACTOR_ALREADY_ENROLLED = 'second-factor-already-in-use',\n SECOND_FACTOR_LIMIT_EXCEEDED = 'maximum-second-factor-count-exceeded',\n TENANT_ID_MISMATCH = 'tenant-id-mismatch',\n TIMEOUT = 'timeout',\n TOKEN_EXPIRED = 'user-token-expired',\n TOO_MANY_ATTEMPTS_TRY_LATER = 'too-many-requests',\n UNAUTHORIZED_DOMAIN = 'unauthorized-continue-uri',\n UNSUPPORTED_FIRST_FACTOR = 'unsupported-first-factor',\n UNSUPPORTED_PERSISTENCE = 'unsupported-persistence-type',\n UNSUPPORTED_TENANT_OPERATION = 'unsupported-tenant-operation',\n UNVERIFIED_EMAIL = 'unverified-email',\n USER_CANCELLED = 'user-cancelled',\n USER_DELETED = 'user-not-found',\n USER_DISABLED = 'user-disabled',\n USER_MISMATCH = 'user-mismatch',\n USER_SIGNED_OUT = 'user-signed-out',\n WEAK_PASSWORD = 'weak-password',\n WEB_STORAGE_UNSUPPORTED = 'web-storage-unsupported',\n ALREADY_INITIALIZED = 'already-initialized',\n RECAPTCHA_NOT_ENABLED = 'recaptcha-not-enabled',\n MISSING_RECAPTCHA_TOKEN = 'missing-recaptcha-token',\n INVALID_RECAPTCHA_TOKEN = 'invalid-recaptcha-token',\n INVALID_RECAPTCHA_ACTION = 'invalid-recaptcha-action',\n MISSING_CLIENT_TYPE = 'missing-client-type',\n MISSING_RECAPTCHA_VERSION = 'missing-recaptcha-version',\n INVALID_RECAPTCHA_VERSION = 'invalid-recaptcha-version',\n INVALID_REQ_TYPE = 'invalid-req-type',\n UNSUPPORTED_PASSWORD_POLICY_SCHEMA_VERSION = 'unsupported-password-policy-schema-version',\n PASSWORD_DOES_NOT_MEET_REQUIREMENTS = 'password-does-not-meet-requirements'\n}\n\nfunction _debugErrorMap(): ErrorMap<AuthErrorCode> {\n return {\n [AuthErrorCode.ADMIN_ONLY_OPERATION]:\n 'This operation is restricted to administrators only.',\n [AuthErrorCode.ARGUMENT_ERROR]: '',\n [AuthErrorCode.APP_NOT_AUTHORIZED]:\n \"This app, identified by the domain where it's hosted, is not \" +\n 'authorized to use Firebase Authentication with the provided API key. ' +\n 'Review your key configuration in the Google API console.',\n [AuthErrorCode.APP_NOT_INSTALLED]:\n 'The requested mobile application corresponding to the identifier (' +\n 'Android package name or iOS bundle ID) provided is not installed on ' +\n 'this device.',\n [AuthErrorCode.CAPTCHA_CHECK_FAILED]:\n 'The reCAPTCHA response token provided is either invalid, expired, ' +\n 'already used or the domain associated with it does not match the list ' +\n 'of whitelisted domains.',\n [AuthErrorCode.CODE_EXPIRED]:\n 'The SMS code has expired. Please re-send the verification code to try ' +\n 'again.',\n [AuthErrorCode.CORDOVA_NOT_READY]: 'Cordova framework is not ready.',\n [AuthErrorCode.CORS_UNSUPPORTED]: 'This browser is not supported.',\n [AuthErrorCode.CREDENTIAL_ALREADY_IN_USE]:\n 'This credential is already associated with a different user account.',\n [AuthErrorCode.CREDENTIAL_MISMATCH]:\n 'The custom token corresponds to a different audience.',\n [AuthErrorCode.CREDENTIAL_TOO_OLD_LOGIN_AGAIN]:\n 'This operation is sensitive and requires recent authentication. Log in ' +\n 'again before retrying this request.',\n [AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH]:\n 'Another Firebase SDK was initialized and is trying to use Auth before Auth is ' +\n 'initialized. Please be sure to call `initializeAuth` or `getAuth` before ' +\n 'starting any other Firebase SDK.',\n [AuthErrorCode.DYNAMIC_LINK_NOT_ACTIVATED]:\n 'Please activate Dynamic Links in the Firebase Console and agree to the terms and ' +\n 'conditions.',\n [AuthErrorCode.EMAIL_CHANGE_NEEDS_VERIFICATION]:\n 'Multi-factor users must always have a verified email.',\n [AuthErrorCode.EMAIL_EXISTS]:\n 'The email address is already in use by another account.',\n [AuthErrorCode.EMULATOR_CONFIG_FAILED]:\n 'Auth instance has already been used to make a network call. Auth can ' +\n 'no longer be configured to use the emulator. Try calling ' +\n '\"connectAuthEmulator()\" sooner.',\n [AuthErrorCode.EXPIRED_OOB_CODE]: 'The action code has expired.',\n [AuthErrorCode.EXPIRED_POPUP_REQUEST]:\n 'This operation has been cancelled due to another conflicting popup being opened.',\n [AuthErrorCode.INTERNAL_ERROR]: 'An internal AuthError has occurred.',\n [AuthErrorCode.INVALID_APP_CREDENTIAL]:\n 'The phone verification request contains an invalid application verifier.' +\n ' The reCAPTCHA token response is either invalid or expired.',\n [AuthErrorCode.INVALID_APP_ID]:\n 'The mobile app identifier is not registed for the current project.',\n [AuthErrorCode.INVALID_AUTH]:\n \"This user's credential isn't valid for this project. This can happen \" +\n \"if the user's token has been tampered with, or if the user isn't for \" +\n 'the project associated with this API key.',\n [AuthErrorCode.INVALID_AUTH_EVENT]: 'An internal AuthError has occurred.',\n [AuthErrorCode.INVALID_CODE]:\n 'The SMS verification code used to create the phone auth credential is ' +\n 'invalid. Please resend the verification code sms and be sure to use the ' +\n 'verification code provided by the user.',\n [AuthErrorCode.INVALID_CONTINUE_URI]:\n 'The continue URL provided in the request is invalid.',\n [AuthErrorCode.INVALID_CORDOVA_CONFIGURATION]:\n 'The following Cordova plugins must be installed to enable OAuth sign-in: ' +\n 'cordova-plugin-buildinfo, cordova-universal-links-plugin, ' +\n 'cordova-plugin-browsertab, cordova-plugin-inappbrowser and ' +\n 'cordova-plugin-customurlscheme.',\n [AuthErrorCode.INVALID_CUSTOM_TOKEN]:\n 'The custom token format is incorrect. Please check the documentation.',\n [AuthErrorCode.INVALID_DYNAMIC_LINK_DOMAIN]:\n 'The provided dynamic link domain is not configured or authorized for the current project.',\n [AuthErrorCode.INVALID_EMAIL]: 'The email address is badly formatted.',\n [AuthErrorCode.INVALID_EMULATOR_SCHEME]:\n 'Emulator URL must start with a valid scheme (http:// or https://).',\n [AuthErrorCode.INVALID_API_KEY]:\n 'Your API key is invalid, please check you have copied it correctly.',\n [AuthErrorCode.INVALID_CERT_HASH]:\n 'The SHA-1 certificate hash provided is invalid.',\n [AuthErrorCode.INVALID_IDP_RESPONSE]:\n 'The supplied auth credential is malformed or has expired.',\n [AuthErrorCode.INVALID_MESSAGE_PAYLOAD]:\n 'The email template corresponding to this action contains invalid characters in its message. ' +\n 'Please fix by going to the Auth email templates section in the Firebase Console.',\n [AuthErrorCode.INVALID_MFA_SESSION]:\n 'The request does not contain a valid proof of first factor successful sign-in.',\n [AuthErrorCode.INVALID_OAUTH_PROVIDER]:\n 'EmailAuthProvider is not supported for this operation. This operation ' +\n 'only supports OAuth providers.',\n [AuthErrorCode.INVALID_OAUTH_CLIENT_ID]:\n 'The OAuth client ID provided is either invalid or does not match the ' +\n 'specified API key.',\n [AuthErrorCode.INVALID_ORIGIN]:\n 'This domain is not authorized for OAuth operations for your Firebase ' +\n 'project. Edit the list of authorized domains from the Firebase console.',\n [AuthErrorCode.INVALID_OOB_CODE]:\n 'The action code is invalid. This can happen if the code is malformed, ' +\n 'expired, or has already been used.',\n [AuthErrorCode.INVALID_PASSWORD]:\n 'The password is invalid or the user does not have a password.',\n [AuthErrorCode.INVALID_PERSISTENCE]:\n 'The specified persistence type is invalid. It can only be local, session or none.',\n [AuthErrorCode.INVALID_PHONE_NUMBER]:\n 'The format of the phone number provided is incorrect. Please enter the ' +\n 'phone number in a format that can be parsed into E.164 format. E.164 ' +\n 'phone numbers are written in the format [+][country code][subscriber ' +\n 'number including area code].',\n [AuthErrorCode.INVALID_PROVIDER_ID]:\n 'The specified provider ID is invalid.',\n [AuthErrorCode.INVALID_RECIPIENT_EMAIL]:\n 'The email corresponding to this action failed to send as the provided ' +\n 'recipient email address is invalid.',\n [AuthErrorCode.INVALID_SENDER]:\n 'The email template corresponding to this action contains an invalid sender email or name. ' +\n 'Please fix by going to the Auth email templates section in the Firebase Console.',\n [AuthErrorCode.INVALID_SESSION_INFO]:\n 'The verification ID used to create the phone auth credential is invalid.',\n [AuthErrorCode.INVALID_TENANT_ID]:\n \"The Auth instance's tenant ID is invalid.\",\n [AuthErrorCode.LOGIN_BLOCKED]:\n 'Login blocked by user-provided method: {$originalMessage}',\n [AuthErrorCode.MISSING_ANDROID_PACKAGE_NAME]:\n 'An Android Package Name must be provided if the Android App is required to be installed.',\n [AuthErrorCode.MISSING_AUTH_DOMAIN]:\n 'Be sure to include authDomain when calling firebase.initializeApp(), ' +\n 'by following the instructions in the Firebase console.',\n [AuthErrorCode.MISSING_APP_CREDENTIAL]:\n 'The phone verification request is missing an application verifier ' +\n 'assertion. A reCAPTCHA response token needs to be provided.',\n [AuthErrorCode.MISSING_CODE]:\n 'The phone auth credential was created with an empty SMS verification code.',\n [AuthErrorCode.MISSING_CONTINUE_URI]:\n 'A continue URL must be provided in the request.',\n [AuthErrorCode.MISSING_IFRAME_START]: 'An internal AuthError has occurred.',\n [AuthErrorCode.MISSING_IOS_BUNDLE_ID]:\n 'An iOS Bundle ID must be provided if an App Store ID is provided.',\n [AuthErrorCode.MISSING_OR_INVALID_NONCE]:\n 'The request does not contain a valid nonce. This can occur if the ' +\n 'SHA-256 hash of the provided raw nonce does not match the hashed nonce ' +\n 'in the ID token payload.',\n [AuthErrorCode.MISSING_PASSWORD]: 'A non-empty password must be provided',\n [AuthErrorCode.MISSING_MFA_INFO]:\n 'No second factor identifier is provided.',\n [AuthErrorCode.MISSING_MFA_SESSION]:\n 'The request is missing proof of first factor successful sign-in.',\n [AuthErrorCode.MISSING_PHONE_NUMBER]:\n 'To send verification codes, provide a phone number for the recipient.',\n [AuthErrorCode.MISSING_SESSION_INFO]:\n 'The phone auth credential was created with an empty verification ID.',\n [AuthErrorCode.MODULE_DESTROYED]:\n 'This instance of FirebaseApp has been deleted.',\n [AuthErrorCode.MFA_INFO_NOT_FOUND]:\n 'The user does not have a second factor matching the identifier provided.',\n [AuthErrorCode.MFA_REQUIRED]:\n 'Proof of ownership of a second factor is required to complete sign-in.',\n [AuthErrorCode.NEED_CONFIRMATION]:\n 'An account already exists with the same email address but different ' +\n 'sign-in credentials. Sign in using a provider associated with this ' +\n 'email address.',\n [AuthErrorCode.NETWORK_REQUEST_FAILED]:\n 'A network AuthError (such as timeout, interrupted connection or unreachable host) has occurred.',\n [AuthErrorCode.NO_AUTH_EVENT]: 'An internal AuthError has occurred.',\n [AuthErrorCode.NO_SUCH_PROVIDER]:\n 'User was not linked to an account with the given provider.',\n [AuthErrorCode.NULL_USER]:\n 'A null user object was provided as the argument for an operation which ' +\n 'requires a non-null user object.',\n [AuthErrorCode.OPERATION_NOT_ALLOWED]:\n 'The given sign-in provider is disabled for this Firebase project. ' +\n 'Enable it in the Firebase console, under the sign-in method tab of the ' +\n 'Auth section.',\n [AuthErrorCode.OPERATION_NOT_SUPPORTED]:\n 'This operation is not supported in the environment this application is ' +\n 'running on. \"location.protocol\" must be http, https or chrome-extension' +\n ' and web storage must be enabled.',\n [AuthErrorCode.POPUP_BLOCKED]:\n 'Unable to establish a connection with the popup. It may have been blocked by the browser.',\n [AuthErrorCode.POPUP_CLOSED_BY_USER]:\n 'The popup has been closed by the user before finalizing the operation.',\n [AuthErrorCode.PROVIDER_ALREADY_LINKED]:\n 'User can only be linked to one identity for the given provider.',\n [AuthErrorCode.QUOTA_EXCEEDED]:\n \"The project's quota for this operation has been exceeded.\",\n [AuthErrorCode.REDIRECT_CANCELLED_BY_USER]:\n 'The redirect operation has been cancelled by the user before finalizing.',\n [AuthErrorCode.REDIRECT_OPERATION_PENDING]:\n 'A redirect sign-in operation is already pending.',\n [AuthErrorCode.REJECTED_CREDENTIAL]:\n 'The request contains malformed or mismatching credentials.',\n [AuthErrorCode.SECOND_FACTOR_ALREADY_ENROLLED]:\n 'The second factor is already enrolled on this account.',\n [AuthErrorCode.SECOND_FACTOR_LIMIT_EXCEEDED]:\n 'The maximum allowed number of second factors on a user has been exceeded.',\n [AuthErrorCode.TENANT_ID_MISMATCH]:\n \"The provided tenant ID does not match the Auth instance's tenant ID\",\n [AuthErrorCode.TIMEOUT]: 'The operation has timed out.',\n [AuthErrorCode.TOKEN_EXPIRED]:\n \"The user's credential is no longer valid. The user must sign in again.\",\n [AuthErrorCode.TOO_MANY_ATTEMPTS_TRY_LATER]:\n 'We have blocked all requests from this device due to unusual activity. ' +\n 'Try again later.',\n [AuthErrorCode.UNAUTHORIZED_DOMAIN]:\n 'The domain of the continue URL is not whitelisted. Please whitelist ' +\n 'the domain in the Firebase console.',\n [AuthErrorCode.UNSUPPORTED_FIRST_FACTOR]:\n 'Enrolling a second factor or signing in with a multi-factor account requires sign-in with a supported first factor.',\n [AuthErrorCode.UNSUPPORTED_PERSISTENCE]:\n 'The current environment does not support the specified persistence type.',\n [AuthErrorCode.UNSUPPORTED_TENANT_OPERATION]:\n 'This operation is not supported in a multi-tenant context.',\n [AuthErrorCode.UNVERIFIED_EMAIL]:\n 'The operation requires a verified email.',\n [AuthErrorCode.USER_CANCELLED]:\n 'The user did not grant your application the permissions it requested.',\n [AuthErrorCode.USER_DELETED]:\n 'There is no user record corresponding to this identifier. The user may ' +\n 'have been deleted.',\n [AuthErrorCode.USER_DISABLED]:\n 'The user account has been disabled by an administrator.',\n [AuthErrorCode.USER_MISMATCH]:\n 'The supplied credentials do not correspond to the previously signed in user.',\n [AuthErrorCode.USER_SIGNED_OUT]: '',\n [AuthErrorCode.WEAK_PASSWORD]:\n 'The password must be 6 characters long or more.',\n [AuthErrorCode.WEB_STORAGE_UNSUPPORTED]:\n 'This browser is not supported or 3rd party cookies and data may be disabled.',\n [AuthErrorCode.ALREADY_INITIALIZED]:\n 'initializeAuth() has already been called with ' +\n 'different options. To avoid this error, call initializeAuth() with the ' +\n 'same options as when it was originally called, or call getAuth() to return the' +\n ' already initialized instance.',\n [AuthErrorCode.MISSING_RECAPTCHA_TOKEN]:\n 'The reCAPTCHA token is missing when sending request to the backend.',\n [AuthErrorCode.INVALID_RECAPTCHA_TOKEN]:\n 'The reCAPTCHA token is invalid when sending request to the backend.',\n [AuthErrorCode.INVALID_RECAPTCHA_ACTION]:\n 'The reCAPTCHA action is invalid when sending request to the backend.',\n [AuthErrorCode.RECAPTCHA_NOT_ENABLED]:\n 'reCAPTCHA Enterprise integration is not enabled for this project.',\n [AuthErrorCode.MISSING_CLIENT_TYPE]:\n 'The reCAPTCHA client type is missing when sending request to the backend.',\n [AuthErrorCode.MISSING_RECAPTCHA_VERSION]:\n 'The reCAPTCHA version is missing when sending request to the backend.',\n [AuthErrorCode.INVALID_REQ_TYPE]: 'Invalid request parameters.',\n [AuthErrorCode.INVALID_RECAPTCHA_VERSION]:\n 'The reCAPTCHA version is invalid when sending request to the backend.',\n [AuthErrorCode.UNSUPPORTED_PASSWORD_POLICY_SCHEMA_VERSION]:\n 'The password policy received from the backend uses a schema version that is not supported by this version of the Firebase SDK.',\n [AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS]:\n 'The password does not meet the requirements.'\n };\n}\n\nexport interface ErrorMapRetriever extends AuthErrorMap {\n (): ErrorMap<AuthErrorCode>;\n}\n\nfunction _prodErrorMap(): ErrorMap<AuthErrorCode> {\n // We will include this one message in the prod error map since by the very\n // nature of this error, developers will never be able to see the message\n // using the debugErrorMap (which is installed during auth initialization).\n return {\n [AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH]:\n 'Another Firebase SDK was initialized and is trying to use Auth before Auth is ' +\n 'initialized. Please be sure to call `initializeAuth` or `getAuth` before ' +\n 'starting any other Firebase SDK.'\n } as ErrorMap<AuthErrorCode>;\n}\n\n/**\n * A verbose error map with detailed descriptions for most error codes.\n *\n * See discussion at {@link AuthErrorMap}\n *\n * @public\n */\nexport const debugErrorMap: AuthErrorMap = _debugErrorMap;\n\n/**\n * A minimal error map with all verbose error messages stripped.\n *\n * See discussion at {@link AuthErrorMap}\n *\n * @public\n */\nexport const prodErrorMap: AuthErrorMap = _prodErrorMap;\n\nexport interface NamedErrorParams {\n appName: AppName;\n credential?: AuthCredential;\n email?: string;\n phoneNumber?: string;\n tenantId?: string;\n user?: User;\n _serverResponse?: object;\n}\n\n/**\n * @internal\n */\ntype GenericAuthErrorParams = {\n [key in Exclude<\n AuthErrorCode,\n | AuthErrorCode.ARGUMENT_ERROR\n | AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH\n | AuthErrorCode.INTERNAL_ERROR\n | AuthErrorCode.MFA_REQUIRED\n | AuthErrorCode.NO_AUTH_EVENT\n | AuthErrorCode.OPERATION_NOT_SUPPORTED\n >]: {\n appName?: AppName;\n email?: string;\n phoneNumber?: string;\n message?: string;\n };\n};\n\n/**\n * @internal\n */\nexport interface AuthErrorParams extends GenericAuthErrorParams {\n [AuthErrorCode.ARGUMENT_ERROR]: { appName?: AppName };\n [AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH]: { appName?: AppName };\n [AuthErrorCode.INTERNAL_ERROR]: { appName?: AppName };\n [AuthErrorCode.LOGIN_BLOCKED]: {\n appName?: AppName;\n originalMessage?: string;\n };\n [AuthErrorCode.OPERATION_NOT_SUPPORTED]: { appName?: AppName };\n [AuthErrorCode.NO_AUTH_EVENT]: { appName?: AppName };\n [AuthErrorCode.MFA_REQUIRED]: {\n appName: AppName;\n _serverResponse: IdTokenMfaResponse;\n };\n [AuthErrorCode.INVALID_CORDOVA_CONFIGURATION]: {\n appName: AppName;\n missingPlugin?: string;\n };\n}\n\nexport const _DEFAULT_AUTH_ERROR_FACTORY = new ErrorFactory<\n AuthErrorCode,\n AuthErrorParams\n>('auth', 'Firebase', _prodErrorMap());\n\n/**\n * A map of potential `Auth` error codes, for easier comparison with errors\n * thrown by the SDK.\n *\n * @remarks\n * Note that you can't tree-shake individual keys\n * in the map, so by using the map you might substantially increase your\n * bundle size.\n *\n * @public\n */\nexport const AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY = {\n ADMIN_ONLY_OPERATION: 'auth/admin-restricted-operation',\n ARGUMENT_ERROR: 'auth/argument-error',\n APP_NOT_AUTHORIZED: 'auth/app-not-authorized',\n APP_NOT_INSTALLED: 'auth/app-not-installed',\n CAPTCHA_CHECK_FAILED: 'auth/captcha-check-failed',\n CODE_EXPIRED: 'auth/code-expired',\n CORDOVA_NOT_READY: 'auth/cordova-not-ready',\n CORS_UNSUPPORTED: 'auth/cors-unsupported',\n CREDENTIAL_ALREADY_IN_USE: 'auth/credential-already-in-use',\n CREDENTIAL_MISMATCH: 'auth/custom-token-mismatch',\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN: 'auth/requires-recent-login',\n DEPENDENT_SDK_INIT_BEFORE_AUTH: 'auth/dependent-sdk-initialized-before-auth',\n DYNAMIC_LINK_NOT_ACTIVATED: 'auth/dynamic-link-not-activated',\n EMAIL_CHANGE_NEEDS_VERIFICATION: 'auth/email-change-needs-verification',\n EMAIL_EXISTS: 'auth/email-already-in-use',\n EMULATOR_CONFIG_FAILED: 'auth/emulator-config-failed',\n EXPIRED_OOB_CODE: 'auth/expired-action-code',\n EXPIRED_POPUP_REQUEST: 'auth/cancelled-popup-request',\n INTERNAL_ERROR: 'auth/internal-error',\n INVALID_API_KEY: 'auth/invalid-api-key',\n INVALID_APP_CREDENTIAL: 'auth/invalid-app-credential',\n INVALID_APP_ID: 'auth/invalid-app-id',\n INVALID_AUTH: 'auth/invalid-user-token',\n INVALID_AUTH_EVENT: 'auth/invalid-auth-event',\n INVALID_CERT_HASH: 'auth/invalid-cert-hash',\n INVALID_CODE: 'auth/invalid-verification-code',\n INVALID_CONTINUE_URI: 'auth/invalid-continue-uri',\n INVALID_CORDOVA_CONFIGURATION: 'auth/invalid-cordova-configuration',\n INVALID_CUSTOM_TOKEN: 'auth/invalid-custom-token',\n INVALID_DYNAMIC_LINK_DOMAIN: 'auth/invalid-dynamic-link-domain',\n INVALID_EMAIL: 'auth/invalid-email',\n INVALID_EMULATOR_SCHEME: 'auth/invalid-emulator-scheme',\n INVALID_IDP_RESPONSE: 'auth/invalid-credential',\n INVALID_MESSAGE_PAYLOAD: 'auth/invalid-message-payload',\n INVALID_MFA_SESSION: 'auth/invalid-multi-factor-session',\n INVALID_OAUTH_CLIENT_ID: 'auth/invalid-oauth-client-id',\n INVALID_OAUTH_PROVIDER: 'auth/invalid-oauth-provider',\n INVALID_OOB_CODE: 'auth/invalid-action-code',\n INVALID_ORIGIN: 'auth/unauthorized-domain',\n INVALID_PASSWORD: 'auth/wrong-password',\n INVALID_PERSISTENCE: 'auth/invalid-persistence-type',\n INVALID_PHONE_NUMBER: 'auth/invalid-phone-number',\n INVALID_PROVIDER_ID: 'auth/invalid-provider-id',\n INVALID_RECIPIENT_EMAIL: 'auth/invalid-recipient-email',\n INVALID_SENDER: 'auth/invalid-sender',\n INVALID_SESSION_INFO: 'auth/invalid-verification-id',\n INVALID_TENANT_ID: 'auth/invalid-tenant-id',\n MFA_INFO_NOT_FOUND: 'auth/multi-factor-info-not-found',\n MFA_REQUIRED: 'auth/multi-factor-auth-required',\n MISSING_ANDROID_PACKAGE_NAME: 'auth/missing-android-pkg-name',\n MISSING_APP_CREDENTIAL: 'auth/missing-app-credential',\n MISSING_AUTH_DOMAIN: 'auth/auth-domain-config-required',\n MISSING_CODE: 'auth/missing-verification-code',\n MISSING_CONTINUE_URI: 'auth/missing-continue-uri',\n MISSING_IFRAME_START: 'auth/missing-iframe-start',\n MISSING_IOS_BUNDLE_ID: 'auth/missing-ios-bundle-id',\n MISSING_OR_INVALID_NONCE: 'auth/missing-or-invalid-nonce',\n MISSING_MFA_INFO: 'auth/missing-multi-factor-info',\n MISSING_MFA_SESSION: 'auth/missing-multi-factor-session',\n MISSING_PHONE_NUMBER: 'auth/missing-phone-number',\n MISSING_SESSION_INFO: 'auth/missing-verification-id',\n MODULE_DESTROYED: 'auth/app-deleted',\n NEED_CONFIRMATION: 'auth/account-exists-with-different-credential',\n NETWORK_REQUEST_FAILED: 'auth/network-request-failed',\n NULL_USER: 'auth/null-user',\n NO_AUTH_EVENT: 'auth/no-auth-event',\n NO_SUCH_PROVIDER: 'auth/no-such-provider',\n OPERATION_NOT_ALLOWED: 'auth/operation-not-allowed',\n OPERATION_NOT_SUPPORTED: 'auth/operation-not-supported-in-this-environment',\n POPUP_BLOCKED: 'auth/popup-blocked',\n POPUP_CLOSED_BY_USER: 'auth/popup-closed-by-user',\n PROVIDER_ALREADY_LINKED: 'auth/provider-already-linked',\n QUOTA_EXCEEDED: 'auth/quota-exceeded',\n REDIRECT_CANCELLED_BY_USER: 'auth/redirect-cancelled-by-user',\n REDIRECT_OPERATION_PENDING: 'auth/redirect-operation-pending',\n REJECTED_CREDENTIAL: 'auth/rejected-credential',\n SECOND_FACTOR_ALREADY_ENROLLED: 'auth/second-factor-already-in-use',\n SECOND_FACTOR_LIMIT_EXCEEDED: 'auth/maximum-second-factor-count-exceeded',\n TENANT_ID_MISMATCH: 'auth/tenant-id-mismatch',\n TIMEOUT: 'auth/timeout',\n TOKEN_EXPIRED: 'auth/user-token-expired',\n TOO_MANY_ATTEMPTS_TRY_LATER: 'auth/too-many-requests',\n UNAUTHORIZED_DOMAIN: 'auth/unauthorized-continue-uri',\n UNSUPPORTED_FIRST_FACTOR: 'auth/unsupported-first-factor',\n UNSUPPORTED_PERSISTENCE: 'auth/unsupported-persistence-type',\n UNSUPPORTED_TENANT_OPERATION: 'auth/unsupported-tenant-operation',\n UNVERIFIED_EMAIL: 'auth/unverified-email',\n USER_CANCELLED: 'auth/user-cancelled',\n USER_DELETED: 'auth/user-not-found',\n USER_DISABLED: 'auth/user-disabled',\n USER_MISMATCH: 'auth/user-mismatch',\n USER_SIGNED_OUT: 'auth/user-signed-out',\n WEAK_PASSWORD: 'auth/weak-password',\n WEB_STORAGE_UNSUPPORTED: 'auth/web-storage-unsupported',\n ALREADY_INITIALIZED: 'auth/already-initialized',\n RECAPTCHA_NOT_ENABLED: 'auth/recaptcha-not-enabled',\n MISSING_RECAPTCHA_TOKEN: 'auth/missing-recaptcha-token',\n INVALID_RECAPTCHA_TOKEN: 'auth/invalid-recaptcha-token',\n INVALID_RECAPTCHA_ACTION: 'auth/invalid-recaptcha-action',\n MISSING_CLIENT_TYPE: 'auth/missing-client-type',\n MISSING_RECAPTCHA_VERSION: 'auth/missing-recaptcha-version',\n INVALID_RECAPTCHA_VERSION: 'auth/invalid-recaptcha-version',\n INVALID_REQ_TYPE: 'auth/invalid-req-type'\n} as const;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger, LogLevel } from '@firebase/logger';\nimport { SDK_VERSION } from '@firebase/app';\n\nexport { LogLevel };\n\nconst logClient = new Logger('@firebase/auth');\n\n// Helper methods are needed because variables can't be exported as read/write\nexport function _getLogLevel(): LogLevel {\n return logClient.logLevel;\n}\n\nexport function _setLogLevel(newLevel: LogLevel): void {\n logClient.logLevel = newLevel;\n}\n\nexport function _logDebug(msg: string, ...args: string[]): void {\n if (logClient.logLevel <= LogLevel.DEBUG) {\n logClient.debug(`Auth (${SDK_VERSION}): ${msg}`, ...args);\n }\n}\n\nexport function _logWarn(msg: string, ...args: string[]): void {\n if (logClient.logLevel <= LogLevel.WARN) {\n logClient.warn(`Auth (${SDK_VERSION}): ${msg}`, ...args);\n }\n}\n\nexport function _logError(msg: string, ...args: string[]): void {\n if (logClient.logLevel <= LogLevel.ERROR) {\n logClient.error(`Auth (${SDK_VERSION}): ${msg}`, ...args);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Auth } from '../../model/public_types';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { AuthInternal } from '../../model/auth';\nimport {\n _DEFAULT_AUTH_ERROR_FACTORY,\n AuthErrorCode,\n AuthErrorParams,\n prodErrorMap,\n ErrorMapRetriever\n} from '../errors';\nimport { _logError } from './log';\n\ntype AuthErrorListParams<K> = K extends keyof AuthErrorParams\n ? [AuthErrorParams[K]]\n : [];\ntype LessAppName<K extends AuthErrorCode> = Omit<AuthErrorParams[K], 'appName'>;\n\n/**\n * Unconditionally fails, throwing a developer facing INTERNAL_ERROR\n *\n * @example\n * ```javascript\n * fail(auth, AuthErrorCode.MFA_REQUIRED); // Error: the MFA_REQUIRED error needs more params than appName\n * fail(auth, AuthErrorCode.MFA_REQUIRED, {serverResponse}); // Compiles\n * fail(AuthErrorCode.INTERNAL_ERROR); // Compiles; internal error does not need appName\n * fail(AuthErrorCode.USER_DELETED); // Error: USER_DELETED requires app name\n * fail(auth, AuthErrorCode.USER_DELETED); // Compiles; USER_DELETED _only_ needs app name\n * ```\n *\n * @param appName App name for tagging the error\n * @throws FirebaseError\n */\nexport function _fail<K extends AuthErrorCode>(\n code: K,\n ...data: {} extends AuthErrorParams[K]\n ? [AuthErrorParams[K]?]\n : [AuthErrorParams[K]]\n): never;\nexport function _fail<K extends AuthErrorCode>(\n auth: Auth,\n code: K,\n ...data: {} extends LessAppName<K> ? [LessAppName<K>?] : [LessAppName<K>]\n): never;\nexport function _fail<K extends AuthErrorCode>(\n authOrCode: Auth | K,\n ...rest: unknown[]\n): never {\n throw createErrorInternal(authOrCode, ...rest);\n}\n\nexport function _createError<K extends AuthErrorCode>(\n code: K,\n ...data: {} extends AuthErrorParams[K]\n ? [AuthErrorParams[K]?]\n : [AuthErrorParams[K]]\n): FirebaseError;\nexport function _createError<K extends AuthErrorCode>(\n auth: Auth,\n code: K,\n ...data: {} extends LessAppName<K> ? [LessAppName<K>?] : [LessAppName<K>]\n): FirebaseError;\nexport function _createError<K extends AuthErrorCode>(\n authOrCode: Auth | K,\n ...rest: unknown[]\n): FirebaseError {\n return createErrorInternal(authOrCode, ...rest);\n}\n\nexport function _errorWithCustomMessage(\n auth: Auth,\n code: AuthErrorCode,\n message: string\n): FirebaseError {\n const errorMap = {\n ...(prodErrorMap as ErrorMapRetriever)(),\n [code]: message\n };\n const factory = new ErrorFactory<AuthErrorCode, AuthErrorParams>(\n 'auth',\n 'Firebase',\n errorMap\n );\n return factory.create(code, {\n appName: auth.name\n });\n}\n\nexport function _assertInstanceOf(\n auth: Auth,\n object: object,\n instance: unknown\n): void {\n const constructorInstance = instance as { new (...args: unknown[]): unknown };\n if (!(object instanceof constructorInstance)) {\n if (constructorInstance.name !== object.constructor.name) {\n _fail(auth, AuthErrorCode.ARGUMENT_ERROR);\n }\n\n throw _errorWithCustomMessage(\n auth,\n AuthErrorCode.ARGUMENT_ERROR,\n `Type of ${object.constructor.name} does not match expected instance.` +\n `Did you pass a reference from a different Auth SDK?`\n );\n }\n}\n\nfunction createErrorInternal<K extends AuthErrorCode>(\n authOrCode: Auth | K,\n ...rest: unknown[]\n): FirebaseError {\n if (typeof authOrCode !== 'string') {\n const code = rest[0] as K;\n const fullParams = [...rest.slice(1)] as AuthErrorListParams<K>;\n if (fullParams[0]) {\n fullParams[0].appName = authOrCode.name;\n }\n\n return (authOrCode as AuthInternal)._errorFactory.create(\n code,\n ...fullParams\n );\n }\n\n return _DEFAULT_AUTH_ERROR_FACTORY.create(\n authOrCode,\n ...(rest as AuthErrorListParams<K>)\n );\n}\n\nexport function _assert<K extends AuthErrorCode>(\n assertion: unknown,\n code: K,\n ...data: {} extends AuthErrorParams[K]\n ? [AuthErrorParams[K]?]\n : [AuthErrorParams[K]]\n): asserts assertion;\nexport function _assert<K extends AuthErrorCode>(\n assertion: unknown,\n auth: Auth,\n code: K,\n ...data: {} extends LessAppName<K> ? [LessAppName<K>?] : [LessAppName<K>]\n): asserts assertion;\nexport function _assert<K extends AuthErrorCode>(\n assertion: unknown,\n authOrCode: Auth | K,\n ...rest: unknown[]\n): asserts assertion {\n if (!assertion) {\n throw createErrorInternal(authOrCode, ...rest);\n }\n}\n\n// We really do want to accept literally any function type here\n// eslint-disable-next-line @typescript-eslint/ban-types\ntype TypeExpectation = Function | string | MapType;\n\ninterface MapType extends Record<string, TypeExpectation | Optional> {}\n\nclass Optional {\n constructor(readonly type: TypeExpectation) {}\n}\n\nexport function opt(type: TypeExpectation): Optional {\n return new Optional(type);\n}\n\n/**\n * Asserts the runtime types of arguments. The 'expected' field can be one of\n * a class, a string (representing a \"typeof\" call), or a record map of name\n * to type. Furthermore, the opt() function can be used to mark a field as\n * optional. For example:\n *\n * function foo(auth: Auth, profile: {displayName?: string}, update = false) {\n * assertTypes(arguments, [AuthImpl, {displayName: opt('string')}, opt('boolean')]);\n * }\n *\n * opt() can be used for any type:\n * function foo(auth?: Auth) {\n * assertTypes(arguments, [opt(AuthImpl)]);\n * }\n *\n * The string types can be or'd together, and you can use \"null\" as well (note\n * that typeof null === 'object'; this is an edge case). For example:\n *\n * function foo(profile: {displayName?: string | null}) {\n * assertTypes(arguments, [{displayName: opt('string|null')}]);\n * }\n *\n * @param args\n * @param expected\n */\nexport function assertTypes(\n args: Omit<IArguments, 'callee'>,\n ...expected: Array<TypeExpectation | Optional>\n): void {\n if (args.length > expected.length) {\n _fail(AuthErrorCode.ARGUMENT_ERROR, {});\n }\n\n for (let i = 0; i < expected.length; i++) {\n let expect = expected[i];\n const arg = args[i];\n\n if (expect instanceof Optional) {\n // If the arg is undefined, then it matches \"optional\" and we can move to\n // the next arg\n if (typeof arg === 'undefined') {\n continue;\n }\n expect = expect.type;\n }\n\n if (typeof expect === 'string') {\n // Handle the edge case for null because typeof null === 'object'\n if (expect.includes('null') && arg === null) {\n continue;\n }\n\n const required = expect.split('|');\n _assert(required.includes(typeof arg), AuthErrorCode.ARGUMENT_ERROR, {});\n } else if (typeof expect === 'object') {\n // Recursively check record arguments\n const record = arg as Record<string, unknown>;\n const map = expect as MapType;\n const keys = Object.keys(expect);\n\n assertTypes(\n keys.map(k => record[k]),\n ...keys.map(k => map[k])\n );\n } else {\n _assert(arg instanceof expect, AuthErrorCode.ARGUMENT_ERROR, {});\n }\n }\n}\n\n/**\n * Unconditionally fails, throwing an internal error with the given message.\n *\n * @param failure type of failure encountered\n * @throws Error\n */\nexport function debugFail(failure: string): never {\n // Log the failure in addition to throw an exception, just in case the\n // exception is swallowed.\n const message = `INTERNAL ASSERTION FAILED: ` + failure;\n _logError(message);\n\n // NOTE: We don't use FirebaseError here because these are internal failures\n // that cannot be handled by the user. (Also it would create a circular\n // dependency between the error and assert modules which doesn't work.)\n throw new Error(message);\n}\n\n/**\n * Fails if the given assertion condition is false, throwing an Error with the\n * given message if it did.\n *\n * @param assertion\n * @param message\n */\nexport function debugAssert(\n assertion: unknown,\n message: string\n): asserts assertion {\n if (!assertion) {\n debugFail(message);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function _getCurrentUrl(): string {\n return (typeof self !== 'undefined' && self.location?.href) || '';\n}\n\nexport function _isHttpOrHttps(): boolean {\n return _getCurrentScheme() === 'http:' || _getCurrentScheme() === 'https:';\n}\n\nexport function _getCurrentScheme(): string | null {\n return (typeof self !== 'undefined' && self.location?.protocol) || null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isMobileCordova, isReactNative } from '@firebase/util';\nimport { _isOnline } from './navigator';\nimport { debugAssert } from './assert';\n\nexport const enum DelayMin {\n OFFLINE = 5000\n}\n\n/**\n * A structure to help pick between a range of long and short delay durations\n * depending on the current environment. In general, the long delay is used for\n * mobile environments whereas short delays are used for desktop environments.\n */\nexport class Delay {\n // The default value for the offline delay timeout in ms.\n\n private readonly isMobile: boolean;\n constructor(\n private readonly shortDelay: number,\n private readonly longDelay: number\n ) {\n // Internal error when improperly initialized.\n debugAssert(\n longDelay > shortDelay,\n 'Short delay should be less than long delay!'\n );\n this.isMobile = isMobileCordova() || isReactNative();\n }\n\n get(): number {\n if (!_isOnline()) {\n // Pick the shorter timeout.\n return Math.min(DelayMin.OFFLINE, this.shortDelay);\n }\n // If running in a mobile environment, return the long delay, otherwise\n // return the short delay.\n // This could be improved in the future to dynamically change based on other\n // variables instead of just reading the current environment.\n return this.isMobile ? this.longDelay : this.shortDelay;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isBrowserExtension } from '@firebase/util';\nimport { _isHttpOrHttps } from './location';\n\n/**\n * Determine whether the browser is working online\n */\nexport function _isOnline(): boolean {\n if (\n typeof navigator !== 'undefined' &&\n navigator &&\n 'onLine' in navigator &&\n typeof navigator.onLine === 'boolean' &&\n // Apply only for traditional web apps and Chrome extensions.\n // This is especially true for Cordova apps which have unreliable\n // navigator.onLine behavior unless cordova-plugin-network-information is\n // installed which overwrites the native navigator.onLine value and\n // defines navigator.connection.\n (_isHttpOrHttps() || isBrowserExtension() || 'connection' in navigator)\n ) {\n return navigator.onLine;\n }\n // If we can't determine the state, assume it is online.\n return true;\n}\n\nexport function _getUserLanguage(): string | null {\n if (typeof navigator === 'undefined') {\n return null;\n }\n const navigatorLanguage: NavigatorLanguage = navigator;\n return (\n // Most reliable, but only supported in Chrome/Firefox.\n (navigatorLanguage.languages && navigatorLanguage.languages[0]) ||\n // Supported in most browsers, but returns the language of the browser\n // UI, not the language set in browser settings.\n navigatorLanguage.language ||\n // Couldn't determine language.\n null\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ConfigInternal } from '../../model/auth';\nimport { debugAssert } from './assert';\n\nexport function _emulatorUrl(config: ConfigInternal, path?: string): string {\n debugAssert(config.emulator, 'Emulator should always be set here');\n const { url } = config.emulator;\n\n if (!path) {\n return url;\n }\n\n return `${url}${path.startsWith('/') ? path.slice(1) : path}`;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { debugFail } from './assert';\n\nexport class FetchProvider {\n private static fetchImpl: typeof fetch | null;\n private static headersImpl: typeof Headers | null;\n private static responseImpl: typeof Response | null;\n\n static initialize(\n fetchImpl: typeof fetch,\n headersImpl?: typeof Headers,\n responseImpl?: typeof Response\n ): void {\n this.fetchImpl = fetchImpl;\n if (headersImpl) {\n this.headersImpl = headersImpl;\n }\n if (responseImpl) {\n this.responseImpl = responseImpl;\n }\n }\n\n static fetch(): typeof fetch {\n if (this.fetchImpl) {\n return this.fetchImpl;\n }\n if (typeof self !== 'undefined' && 'fetch' in self) {\n return self.fetch;\n }\n debugFail(\n 'Could not find fetch implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill'\n );\n }\n\n static headers(): typeof Headers {\n if (this.headersImpl) {\n return this.headersImpl;\n }\n if (typeof self !== 'undefined' && 'Headers' in self) {\n return self.Headers;\n }\n debugFail(\n 'Could not find Headers implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill'\n );\n }\n\n static response(): typeof Response {\n if (this.responseImpl) {\n return this.responseImpl;\n }\n if (typeof self !== 'undefined' && 'Response' in self) {\n return self.Response;\n }\n debugFail(\n 'Could not find Response implementation, make sure you call FetchProvider.initialize() with an appropriate polyfill'\n );\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../core/errors';\n\n/**\n * Errors that can be returned by the backend\n */\nexport const enum ServerError {\n ADMIN_ONLY_OPERATION = 'ADMIN_ONLY_OPERATION',\n BLOCKING_FUNCTION_ERROR_RESPONSE = 'BLOCKING_FUNCTION_ERROR_RESPONSE',\n CAPTCHA_CHECK_FAILED = 'CAPTCHA_CHECK_FAILED',\n CORS_UNSUPPORTED = 'CORS_UNSUPPORTED',\n CREDENTIAL_MISMATCH = 'CREDENTIAL_MISMATCH',\n CREDENTIAL_TOO_OLD_LOGIN_AGAIN = 'CREDENTIAL_TOO_OLD_LOGIN_AGAIN',\n DYNAMIC_LINK_NOT_ACTIVATED = 'DYNAMIC_LINK_NOT_ACTIVATED',\n EMAIL_CHANGE_NEEDS_VERIFICATION = 'EMAIL_CHANGE_NEEDS_VERIFICATION',\n EMAIL_EXISTS = 'EMAIL_EXISTS',\n EMAIL_NOT_FOUND = 'EMAIL_NOT_FOUND',\n EXPIRED_OOB_CODE = 'EXPIRED_OOB_CODE',\n FEDERATED_USER_ID_ALREADY_LINKED = 'FEDERATED_USER_ID_ALREADY_LINKED',\n INVALID_APP_CREDENTIAL = 'INVALID_APP_CREDENTIAL',\n INVALID_APP_ID = 'INVALID_APP_ID',\n INVALID_CERT_HASH = 'INVALID_CERT_HASH',\n INVALID_CODE = 'INVALID_CODE',\n INVALID_CONTINUE_URI = 'INVALID_CONTINUE_URI',\n INVALID_CUSTOM_TOKEN = 'INVALID_CUSTOM_TOKEN',\n INVALID_DYNAMIC_LINK_DOMAIN = 'INVALID_DYNAMIC_LINK_DOMAIN',\n INVALID_EMAIL = 'INVALID_EMAIL',\n INVALID_ID_TOKEN = 'INVALID_ID_TOKEN',\n INVALID_IDP_RESPONSE = 'INVALID_IDP_RESPONSE',\n INVALID_IDENTIFIER = 'INVALID_IDENTIFIER',\n INVALID_MESSAGE_PAYLOAD = 'INVALID_MESSAGE_PAYLOAD',\n INVALID_MFA_PENDING_CREDENTIAL = 'INVALID_MFA_PENDING_CREDENTIAL',\n INVALID_OAUTH_CLIENT_ID = 'INVALID_OAUTH_CLIENT_ID',\n INVALID_OOB_CODE = 'INVALID_OOB_CODE',\n INVALID_PASSWORD = 'INVALID_PASSWORD',\n INVALID_PENDING_TOKEN = 'INVALID_PENDING_TOKEN',\n INVALID_PHONE_NUMBER = 'INVALID_PHONE_NUMBER',\n INVALID_PROVIDER_ID = 'INVALID_PROVIDER_ID',\n INVALID_RECIPIENT_EMAIL = 'INVALID_RECIPIENT_EMAIL',\n INVALID_SENDER = 'INVALID_SENDER',\n INVALID_SESSION_INFO = 'INVALID_SESSION_INFO',\n INVALID_TEMPORARY_PROOF = 'INVALID_TEMPORARY_PROOF',\n INVALID_TENANT_ID = 'INVALID_TENANT_ID',\n MFA_ENROLLMENT_NOT_FOUND = 'MFA_ENROLLMENT_NOT_FOUND',\n MISSING_ANDROID_PACKAGE_NAME = 'MISSING_ANDROID_PACKAGE_NAME',\n MISSING_APP_CREDENTIAL = 'MISSING_APP_CREDENTIAL',\n MISSING_CODE = 'MISSING_CODE',\n MISSING_CONTINUE_URI = 'MISSING_CONTINUE_URI',\n MISSING_CUSTOM_TOKEN = 'MISSING_CUSTOM_TOKEN',\n MISSING_IOS_BUNDLE_ID = 'MISSING_IOS_BUNDLE_ID',\n MISSING_MFA_ENROLLMENT_ID = 'MISSING_MFA_ENROLLMENT_ID',\n MISSING_MFA_PENDING_CREDENTIAL = 'MISSING_MFA_PENDING_CREDENTIAL',\n MISSING_OOB_CODE = 'MISSING_OOB_CODE',\n MISSING_OR_INVALID_NONCE = 'MISSING_OR_INVALID_NONCE',\n MISSING_PASSWORD = 'MISSING_PASSWORD',\n MISSING_REQ_TYPE = 'MISSING_REQ_TYPE',\n MISSING_PHONE_NUMBER = 'MISSING_PHONE_NUMBER',\n MISSING_SESSION_INFO = 'MISSING_SESSION_INFO',\n OPERATION_NOT_ALLOWED = 'OPERATION_NOT_ALLOWED',\n PASSWORD_LOGIN_DISABLED = 'PASSWORD_LOGIN_DISABLED',\n QUOTA_EXCEEDED = 'QUOTA_EXCEEDED',\n RESET_PASSWORD_EXCEED_LIMIT = 'RESET_PASSWORD_EXCEED_LIMIT',\n REJECTED_CREDENTIAL = 'REJECTED_CREDENTIAL',\n SECOND_FACTOR_EXISTS = 'SECOND_FACTOR_EXISTS',\n SECOND_FACTOR_LIMIT_EXCEEDED = 'SECOND_FACTOR_LIMIT_EXCEEDED',\n SESSION_EXPIRED = 'SESSION_EXPIRED',\n TENANT_ID_MISMATCH = 'TENANT_ID_MISMATCH',\n TOKEN_EXPIRED = 'TOKEN_EXPIRED',\n TOO_MANY_ATTEMPTS_TRY_LATER = 'TOO_MANY_ATTEMPTS_TRY_LATER',\n UNSUPPORTED_FIRST_FACTOR = 'UNSUPPORTED_FIRST_FACTOR',\n UNSUPPORTED_TENANT_OPERATION = 'UNSUPPORTED_TENANT_OPERATION',\n UNAUTHORIZED_DOMAIN = 'UNAUTHORIZED_DOMAIN',\n UNVERIFIED_EMAIL = 'UNVERIFIED_EMAIL',\n USER_CANCELLED = 'USER_CANCELLED',\n USER_DISABLED = 'USER_DISABLED',\n USER_NOT_FOUND = 'USER_NOT_FOUND',\n WEAK_PASSWORD = 'WEAK_PASSWORD',\n RECAPTCHA_NOT_ENABLED = 'RECAPTCHA_NOT_ENABLED',\n MISSING_RECAPTCHA_TOKEN = 'MISSING_RECAPTCHA_TOKEN',\n INVALID_RECAPTCHA_TOKEN = 'INVALID_RECAPTCHA_TOKEN',\n INVALID_RECAPTCHA_ACTION = 'INVALID_RECAPTCHA_ACTION',\n MISSING_CLIENT_TYPE = 'MISSING_CLIENT_TYPE',\n MISSING_RECAPTCHA_VERSION = 'MISSING_RECAPTCHA_VERSION',\n INVALID_RECAPTCHA_VERSION = 'INVALID_RECAPTCHA_VERSION',\n INVALID_REQ_TYPE = 'INVALID_REQ_TYPE',\n PASSWORD_DOES_NOT_MEET_REQUIREMENTS = 'PASSWORD_DOES_NOT_MEET_REQUIREMENTS'\n}\n\n/**\n * API Response in the event of an error\n */\nexport interface JsonError {\n error: {\n code: number;\n message: string;\n errors?: [\n {\n message: ServerError;\n domain: string;\n reason: string;\n }\n ];\n };\n}\n\n/**\n * Type definition for a map from server errors to developer visible errors\n */\nexport declare type ServerErrorMap<ApiError extends string> = {\n readonly [K in ApiError]: AuthErrorCode;\n};\n\n/**\n * Map from errors returned by the server to errors to developer visible errors\n */\nexport const SERVER_ERROR_MAP: Partial<ServerErrorMap<ServerError>> = {\n // Custom token errors.\n [ServerError.CREDENTIAL_MISMATCH]: AuthErrorCode.CREDENTIAL_MISMATCH,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_CUSTOM_TOKEN]: AuthErrorCode.INTERNAL_ERROR,\n\n // Create Auth URI errors.\n [ServerError.INVALID_IDENTIFIER]: AuthErrorCode.INVALID_EMAIL,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_CONTINUE_URI]: AuthErrorCode.INTERNAL_ERROR,\n\n // Sign in with email and password errors (some apply to sign up too).\n [ServerError.INVALID_PASSWORD]: AuthErrorCode.INVALID_PASSWORD,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_PASSWORD]: AuthErrorCode.MISSING_PASSWORD,\n\n // Sign up with email and password errors.\n [ServerError.EMAIL_EXISTS]: AuthErrorCode.EMAIL_EXISTS,\n [ServerError.PASSWORD_LOGIN_DISABLED]: AuthErrorCode.OPERATION_NOT_ALLOWED,\n\n // Verify assertion for sign in with credential errors:\n [ServerError.INVALID_IDP_RESPONSE]: AuthErrorCode.INVALID_IDP_RESPONSE,\n [ServerError.INVALID_PENDING_TOKEN]: AuthErrorCode.INVALID_IDP_RESPONSE,\n [ServerError.FEDERATED_USER_ID_ALREADY_LINKED]:\n AuthErrorCode.CREDENTIAL_ALREADY_IN_USE,\n\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_REQ_TYPE]: AuthErrorCode.INTERNAL_ERROR,\n\n // Send Password reset email errors:\n [ServerError.EMAIL_NOT_FOUND]: AuthErrorCode.USER_DELETED,\n [ServerError.RESET_PASSWORD_EXCEED_LIMIT]:\n AuthErrorCode.TOO_MANY_ATTEMPTS_TRY_LATER,\n\n [ServerError.EXPIRED_OOB_CODE]: AuthErrorCode.EXPIRED_OOB_CODE,\n [ServerError.INVALID_OOB_CODE]: AuthErrorCode.INVALID_OOB_CODE,\n // This can only happen if the SDK sends a bad request.\n [ServerError.MISSING_OOB_CODE]: AuthErrorCode.INTERNAL_ERROR,\n\n // Operations that require ID token in request:\n [ServerError.CREDENTIAL_TOO_OLD_LOGIN_AGAIN]:\n AuthErrorCode.CREDENTIAL_TOO_OLD_LOGIN_AGAIN,\n [ServerError.INVALID_ID_TOKEN]: AuthErrorCode.INVALID_AUTH,\n [ServerError.TOKEN_EXPIRED]: AuthErrorCode.TOKEN_EXPIRED,\n [ServerError.USER_NOT_FOUND]: AuthErrorCode.TOKEN_EXPIRED,\n\n // Other errors.\n [ServerError.TOO_MANY_ATTEMPTS_TRY_LATER]:\n AuthErrorCode.TOO_MANY_ATTEMPTS_TRY_LATER,\n [ServerError.PASSWORD_DOES_NOT_MEET_REQUIREMENTS]:\n AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS,\n\n // Phone Auth related errors.\n [ServerError.INVALID_CODE]: AuthErrorCode.INVALID_CODE,\n [ServerError.INVALID_SESSION_INFO]: AuthErrorCode.INVALID_SESSION_INFO,\n [ServerError.INVALID_TEMPORARY_PROOF]: AuthErrorCode.INVALID_IDP_RESPONSE,\n [ServerError.MISSING_SESSION_INFO]: AuthErrorCode.MISSING_SESSION_INFO,\n [ServerError.SESSION_EXPIRED]: AuthErrorCode.CODE_EXPIRED,\n\n // Other action code errors when additional settings passed.\n // MISSING_CONTINUE_URI is getting mapped to INTERNAL_ERROR above.\n // This is OK as this error will be caught by client side validation.\n [ServerError.MISSING_ANDROID_PACKAGE_NAME]:\n AuthErrorCode.MISSING_ANDROID_PACKAGE_NAME,\n [ServerError.UNAUTHORIZED_DOMAIN]: AuthErrorCode.UNAUTHORIZED_DOMAIN,\n\n // getProjectConfig errors when clientId is passed.\n [ServerError.INVALID_OAUTH_CLIENT_ID]: AuthErrorCode.INVALID_OAUTH_CLIENT_ID,\n\n // User actions (sign-up or deletion) disabled errors.\n [ServerError.ADMIN_ONLY_OPERATION]: AuthErrorCode.ADMIN_ONLY_OPERATION,\n\n // Multi factor related errors.\n [ServerError.INVALID_MFA_PENDING_CREDENTIAL]:\n AuthErrorCode.INVALID_MFA_SESSION,\n [ServerError.MFA_ENROLLMENT_NOT_FOUND]: AuthErrorCode.MFA_INFO_NOT_FOUND,\n [ServerError.MISSING_MFA_ENROLLMENT_ID]: AuthErrorCode.MISSING_MFA_INFO,\n [ServerError.MISSING_MFA_PENDING_CREDENTIAL]:\n AuthErrorCode.MISSING_MFA_SESSION,\n [ServerError.SECOND_FACTOR_EXISTS]:\n AuthErrorCode.SECOND_FACTOR_ALREADY_ENROLLED,\n [ServerError.SECOND_FACTOR_LIMIT_EXCEEDED]:\n AuthErrorCode.SECOND_FACTOR_LIMIT_EXCEEDED,\n\n // Blocking functions related errors.\n [ServerError.BLOCKING_FUNCTION_ERROR_RESPONSE]: AuthErrorCode.INTERNAL_ERROR,\n\n // Recaptcha related errors.\n [ServerError.RECAPTCHA_NOT_ENABLED]: AuthErrorCode.RECAPTCHA_NOT_ENABLED,\n [ServerError.MISSING_RECAPTCHA_TOKEN]: AuthErrorCode.MISSING_RECAPTCHA_TOKEN,\n [ServerError.INVALID_RECAPTCHA_TOKEN]: AuthErrorCode.INVALID_RECAPTCHA_TOKEN,\n [ServerError.INVALID_RECAPTCHA_ACTION]:\n AuthErrorCode.INVALID_RECAPTCHA_ACTION,\n [ServerError.MISSING_CLIENT_TYPE]: AuthErrorCode.MISSING_CLIENT_TYPE,\n [ServerError.MISSING_RECAPTCHA_VERSION]:\n AuthErrorCode.MISSING_RECAPTCHA_VERSION,\n [ServerError.INVALID_RECAPTCHA_VERSION]:\n AuthErrorCode.INVALID_RECAPTCHA_VERSION,\n [ServerError.INVALID_REQ_TYPE]: AuthErrorCode.INVALID_REQ_TYPE\n};\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError, querystring } from '@firebase/util';\n\nimport { AuthErrorCode, NamedErrorParams } from '../core/errors';\nimport {\n _createError,\n _errorWithCustomMessage,\n _fail\n} from '../core/util/assert';\nimport { Delay } from '../core/util/delay';\nimport { _emulatorUrl } from '../core/util/emulator';\nimport { FetchProvider } from '../core/util/fetch_provider';\nimport { Auth } from '../model/public_types';\nimport { AuthInternal, ConfigInternal } from '../model/auth';\nimport { IdTokenResponse, TaggedWithTokenResponse } from '../model/id_token';\nimport { IdTokenMfaResponse } from './authentication/mfa';\nimport { SERVER_ERROR_MAP, ServerError, ServerErrorMap } from './errors';\n\nexport const enum HttpMethod {\n POST = 'POST',\n GET = 'GET'\n}\n\nexport const enum HttpHeader {\n CONTENT_TYPE = 'Content-Type',\n X_FIREBASE_LOCALE = 'X-Firebase-Locale',\n X_CLIENT_VERSION = 'X-Client-Version',\n X_FIREBASE_GMPID = 'X-Firebase-gmpid',\n X_FIREBASE_CLIENT = 'X-Firebase-Client',\n X_FIREBASE_APP_CHECK = 'X-Firebase-AppCheck'\n}\n\nexport const enum Endpoint {\n CREATE_AUTH_URI = '/v1/accounts:createAuthUri',\n DELETE_ACCOUNT = '/v1/accounts:delete',\n RESET_PASSWORD = '/v1/accounts:resetPassword',\n SIGN_UP = '/v1/accounts:signUp',\n SIGN_IN_WITH_CUSTOM_TOKEN = '/v1/accounts:signInWithCustomToken',\n SIGN_IN_WITH_EMAIL_LINK = '/v1/accounts:signInWithEmailLink',\n SIGN_IN_WITH_IDP = '/v1/accounts:signInWithIdp',\n SIGN_IN_WITH_PASSWORD = '/v1/accounts:signInWithPassword',\n SIGN_IN_WITH_PHONE_NUMBER = '/v1/accounts:signInWithPhoneNumber',\n SEND_VERIFICATION_CODE = '/v1/accounts:sendVerificationCode',\n SEND_OOB_CODE = '/v1/accounts:sendOobCode',\n SET_ACCOUNT_INFO = '/v1/accounts:update',\n GET_ACCOUNT_INFO = '/v1/accounts:lookup',\n GET_RECAPTCHA_PARAM = '/v1/recaptchaParams',\n START_MFA_ENROLLMENT = '/v2/accounts/mfaEnrollment:start',\n FINALIZE_MFA_ENROLLMENT = '/v2/accounts/mfaEnrollment:finalize',\n START_MFA_SIGN_IN = '/v2/accounts/mfaSignIn:start',\n FINALIZE_MFA_SIGN_IN = '/v2/accounts/mfaSignIn:finalize',\n WITHDRAW_MFA = '/v2/accounts/mfaEnrollment:withdraw',\n GET_PROJECT_CONFIG = '/v1/projects',\n GET_RECAPTCHA_CONFIG = '/v2/recaptchaConfig',\n GET_PASSWORD_POLICY = '/v2/passwordPolicy'\n}\n\nexport const enum RecaptchaClientType {\n WEB = 'CLIENT_TYPE_WEB',\n ANDROID = 'CLIENT_TYPE_ANDROID',\n IOS = 'CLIENT_TYPE_IOS'\n}\n\nexport const enum RecaptchaVersion {\n ENTERPRISE = 'RECAPTCHA_ENTERPRISE'\n}\n\nexport const enum RecaptchaActionName {\n SIGN_IN_WITH_PASSWORD = 'signInWithPassword',\n GET_OOB_CODE = 'getOobCode',\n SIGN_UP_PASSWORD = 'signUpPassword'\n}\n\nexport const DEFAULT_API_TIMEOUT_MS = new Delay(30_000, 60_000);\n\nexport function _addTidIfNecessary<T extends { tenantId?: string }>(\n auth: Auth,\n request: T\n): T {\n if (auth.tenantId && !request.tenantId) {\n return {\n ...request,\n tenantId: auth.tenantId\n };\n }\n return request;\n}\n\nexport async function _performApiRequest<T, V>(\n auth: Auth,\n method: HttpMethod,\n path: Endpoint,\n request?: T,\n customErrorMap: Partial<ServerErrorMap<ServerError>> = {}\n): Promise<V> {\n return _performFetchWithErrorHandling(auth, customErrorMap, async () => {\n let body = {};\n let params = {};\n if (request) {\n if (method === HttpMethod.GET) {\n params = request;\n } else {\n body = {\n body: JSON.stringify(request)\n };\n }\n }\n\n const query = querystring({\n key: auth.config.apiKey,\n ...params\n }).slice(1);\n\n const headers = await (auth as AuthInternal)._getAdditionalHeaders();\n headers[HttpHeader.CONTENT_TYPE] = 'application/json';\n\n if (auth.languageCode) {\n headers[HttpHeader.X_FIREBASE_LOCALE] = auth.languageCode;\n }\n\n return FetchProvider.fetch()(\n _getFinalTarget(auth, auth.config.apiHost, path, query),\n {\n method,\n headers,\n referrerPolicy: 'no-referrer',\n ...body\n }\n );\n });\n}\n\nexport async function _performFetchWithErrorHandling<V>(\n auth: Auth,\n customErrorMap: Partial<ServerErrorMap<ServerError>>,\n fetchFn: () => Promise<Response>\n): Promise<V> {\n (auth as AuthInternal)._canInitEmulator = false;\n const errorMap = { ...SERVER_ERROR_MAP, ...customErrorMap };\n try {\n const networkTimeout = new NetworkTimeout<Response>(auth);\n const response: Response = await Promise.race<Promise<Response>>([\n fetchFn(),\n networkTimeout.promise\n ]);\n\n // If we've reached this point, the fetch succeeded and the networkTimeout\n // didn't throw; clear the network timeout delay so that Node won't hang\n networkTimeout.clearNetworkTimeout();\n\n const json = await response.json();\n if ('needConfirmation' in json) {\n throw _makeTaggedError(auth, AuthErrorCode.NEED_CONFIRMATION, json);\n }\n\n if (response.ok && !('errorMessage' in json)) {\n return json;\n } else {\n const errorMessage = response.ok ? json.errorMessage : json.error.message;\n const [serverErrorCode, serverErrorMessage] = errorMessage.split(' : ');\n if (serverErrorCode === ServerError.FEDERATED_USER_ID_ALREADY_LINKED) {\n throw _makeTaggedError(\n auth,\n AuthErrorCode.CREDENTIAL_ALREADY_IN_USE,\n json\n );\n } else if (serverErrorCode === ServerError.EMAIL_EXISTS) {\n throw _makeTaggedError(auth, AuthErrorCode.EMAIL_EXISTS, json);\n } else if (serverErrorCode === ServerError.USER_DISABLED) {\n throw _makeTaggedError(auth, AuthErrorCode.USER_DISABLED, json);\n }\n const authError =\n errorMap[serverErrorCode as ServerError] ||\n (serverErrorCode\n .toLowerCase()\n .replace(/[_\\s]+/g, '-') as unknown as AuthErrorCode);\n if (serverErrorMessage) {\n throw _errorWithCustomMessage(auth, authError, serverErrorMessage);\n } else {\n _fail(auth, authError);\n }\n }\n } catch (e) {\n if (e instanceof FirebaseError) {\n throw e;\n }\n // Changing this to a different error code will log user out when there is a network error\n // because we treat any error other than NETWORK_REQUEST_FAILED as token is invalid.\n // https://github.com/firebase/firebase-js-sdk/blob/4fbc73610d70be4e0852e7de63a39cb7897e8546/packages/auth/src/core/auth/auth_impl.ts#L309-L316\n _fail(auth, AuthErrorCode.NETWORK_REQUEST_FAILED, { 'message': String(e) });\n }\n}\n\nexport async function _performSignInRequest<T, V extends IdTokenResponse>(\n auth: Auth,\n method: HttpMethod,\n path: Endpoint,\n request?: T,\n customErrorMap: Partial<ServerErrorMap<ServerError>> = {}\n): Promise<V> {\n const serverResponse = (await _performApiRequest<T, V | IdTokenMfaResponse>(\n auth,\n method,\n path,\n request,\n customErrorMap\n )) as V;\n if ('mfaPendingCredential' in serverResponse) {\n _fail(auth, AuthErrorCode.MFA_REQUIRED, {\n _serverResponse: serverResponse\n });\n }\n\n return serverResponse;\n}\n\nexport function _getFinalTarget(\n auth: Auth,\n host: string,\n path: string,\n query: string\n): string {\n const base = `${host}${path}?${query}`;\n\n if (!(auth as AuthInternal).config.emulator) {\n return `${auth.config.apiScheme}://${base}`;\n }\n\n return _emulatorUrl(auth.config as ConfigInternal, base);\n}\n\nclass NetworkTimeout<T> {\n // Node timers and browser timers are fundamentally incompatible, but we\n // don't care about the value here\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private timer: any | null = null;\n readonly promise = new Promise<T>((_, reject) => {\n this.timer = setTimeout(() => {\n return reject(\n _createError(this.auth, AuthErrorCode.NETWORK_REQUEST_FAILED)\n );\n }, DEFAULT_API_TIMEOUT_MS.get());\n });\n\n clearNetworkTimeout(): void {\n clearTimeout(this.timer);\n }\n\n constructor(private readonly auth: Auth) {}\n}\n\ninterface PotentialResponse extends IdTokenResponse {\n email?: string;\n phoneNumber?: string;\n}\n\nexport function _makeTaggedError(\n auth: Auth,\n code: AuthErrorCode,\n response: PotentialResponse\n): FirebaseError {\n const errorParams: NamedErrorParams = {\n appName: auth.name\n };\n\n if (response.email) {\n errorParams.email = response.email;\n }\n if (response.phoneNumber) {\n errorParams.phoneNumber = response.phoneNumber;\n }\n\n const error = _createError(auth, code, errorParams);\n\n // We know customData is defined on error because errorParams is defined\n (error.customData! as TaggedWithTokenResponse)._tokenResponse = response;\n return error;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n RecaptchaClientType,\n RecaptchaVersion,\n _performApiRequest,\n _addTidIfNecessary\n} from '../index';\nimport { Auth } from '../../model/public_types';\n\ninterface GetRecaptchaParamResponse {\n recaptchaSiteKey?: string;\n}\n\nexport async function getRecaptchaParams(auth: Auth): Promise<string> {\n return (\n (\n await _performApiRequest<void, GetRecaptchaParamResponse>(\n auth,\n HttpMethod.GET,\n Endpoint.GET_RECAPTCHA_PARAM\n )\n ).recaptchaSiteKey || ''\n );\n}\n\n// The following functions are for reCAPTCHA enterprise integration.\ninterface GetRecaptchaConfigRequest {\n tenantId?: string;\n clientType?: RecaptchaClientType;\n version?: RecaptchaVersion;\n}\n\ninterface RecaptchaEnforcementState {\n provider: string;\n enforcementState: string;\n}\n\nexport interface GetRecaptchaConfigResponse {\n recaptchaKey: string;\n recaptchaEnforcementState: RecaptchaEnforcementState[];\n}\n\nexport async function getRecaptchaConfig(\n auth: Auth,\n request: GetRecaptchaConfigRequest\n): Promise<GetRecaptchaConfigResponse> {\n return _performApiRequest<\n GetRecaptchaConfigRequest,\n GetRecaptchaConfigResponse\n >(\n auth,\n HttpMethod.GET,\n Endpoint.GET_RECAPTCHA_CONFIG,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Endpoint, HttpMethod, _performApiRequest } from '../index';\nimport { MfaEnrollment } from './mfa';\nimport { Auth } from '../../model/public_types';\n\nexport interface DeleteAccountRequest {\n idToken: string;\n}\n\nexport async function deleteAccount(\n auth: Auth,\n request: DeleteAccountRequest\n): Promise<void> {\n return _performApiRequest<DeleteAccountRequest, void>(\n auth,\n HttpMethod.POST,\n Endpoint.DELETE_ACCOUNT,\n request\n );\n}\n\nexport interface ProviderUserInfo {\n providerId: string;\n rawId?: string;\n email?: string;\n displayName?: string;\n photoUrl?: string;\n phoneNumber?: string;\n}\n\nexport interface DeleteLinkedAccountsRequest {\n idToken: string;\n deleteProvider: string[];\n}\n\nexport interface DeleteLinkedAccountsResponse {\n providerUserInfo: ProviderUserInfo[];\n}\n\nexport async function deleteLinkedAccounts(\n auth: Auth,\n request: DeleteLinkedAccountsRequest\n): Promise<DeleteLinkedAccountsResponse> {\n return _performApiRequest<\n DeleteLinkedAccountsRequest,\n DeleteLinkedAccountsResponse\n >(auth, HttpMethod.POST, Endpoint.SET_ACCOUNT_INFO, request);\n}\n\nexport interface APIUserInfo {\n localId?: string;\n displayName?: string;\n photoUrl?: string;\n email?: string;\n emailVerified?: boolean;\n phoneNumber?: string;\n lastLoginAt?: number;\n createdAt?: number;\n tenantId?: string;\n passwordHash?: string;\n providerUserInfo?: ProviderUserInfo[];\n mfaInfo?: MfaEnrollment[];\n}\n\nexport interface GetAccountInfoRequest {\n idToken: string;\n}\n\nexport interface GetAccountInfoResponse {\n users: APIUserInfo[];\n}\n\nexport async function getAccountInfo(\n auth: Auth,\n request: GetAccountInfoRequest\n): Promise<GetAccountInfoResponse> {\n return _performApiRequest<GetAccountInfoRequest, GetAccountInfoResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.GET_ACCOUNT_INFO,\n request\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function utcTimestampToDateString(\n utcTimestamp?: string | number\n): string | undefined {\n if (!utcTimestamp) {\n return undefined;\n }\n try {\n // Convert to date object.\n const date = new Date(Number(utcTimestamp));\n // Test date is valid.\n if (!isNaN(date.getTime())) {\n // Convert to UTC date string.\n return date.toUTCString();\n }\n } catch (e) {\n // Do nothing. undefined will be returned.\n }\n return undefined;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IdTokenResult, ParsedToken, User } from '../../model/public_types';\nimport { base64Decode, getModularInstance } from '@firebase/util';\n\nimport { UserInternal } from '../../model/user';\nimport { _assert } from '../util/assert';\nimport { _logError } from '../util/log';\nimport { utcTimestampToDateString } from '../util/time';\nimport { AuthErrorCode } from '../errors';\n\n/**\n * Returns a JSON Web Token (JWT) used to identify the user to a Firebase service.\n *\n * @remarks\n * Returns the current token if it has not expired or if it will not expire in the next five\n * minutes. Otherwise, this will refresh the token and return a new one.\n *\n * @param user - The user.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nexport function getIdToken(user: User, forceRefresh = false): Promise<string> {\n return getModularInstance(user).getIdToken(forceRefresh);\n}\n\n/**\n * Returns a deserialized JSON Web Token (JWT) used to identify the user to a Firebase service.\n *\n * @remarks\n * Returns the current token if it has not expired or if it will not expire in the next five\n * minutes. Otherwise, this will refresh the token and return a new one.\n *\n * @param user - The user.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nexport async function getIdTokenResult(\n user: User,\n forceRefresh = false\n): Promise<IdTokenResult> {\n const userInternal = getModularInstance(user) as UserInternal;\n const token = await userInternal.getIdToken(forceRefresh);\n const claims = _parseToken(token);\n\n _assert(\n claims && claims.exp && claims.auth_time && claims.iat,\n userInternal.auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n const firebase =\n typeof claims.firebase === 'object' ? claims.firebase : undefined;\n\n const signInProvider: string | undefined = firebase?.['sign_in_provider'];\n\n return {\n claims,\n token,\n authTime: utcTimestampToDateString(\n secondsStringToMilliseconds(claims.auth_time)\n )!,\n issuedAtTime: utcTimestampToDateString(\n secondsStringToMilliseconds(claims.iat)\n )!,\n expirationTime: utcTimestampToDateString(\n secondsStringToMilliseconds(claims.exp)\n )!,\n signInProvider: signInProvider || null,\n signInSecondFactor: firebase?.['sign_in_second_factor'] || null\n };\n}\n\nfunction secondsStringToMilliseconds(seconds: string): number {\n return Number(seconds) * 1000;\n}\n\nexport function _parseToken(token: string): ParsedToken | null {\n const [algorithm, payload, signature] = token.split('.');\n if (\n algorithm === undefined ||\n payload === undefined ||\n signature === undefined\n ) {\n _logError('JWT malformed, contained fewer than 3 sections');\n return null;\n }\n\n try {\n const decoded = base64Decode(payload);\n if (!decoded) {\n _logError('Failed to decode base64 JWT payload');\n return null;\n }\n return JSON.parse(decoded);\n } catch (e) {\n _logError(\n 'Caught error parsing JWT payload as JSON',\n (e as Error)?.toString()\n );\n return null;\n }\n}\n\n/**\n * Extract expiresIn TTL from a token by subtracting the expiration from the issuance.\n */\nexport function _tokenExpiresIn(token: string): number {\n const parsedToken = _parseToken(token);\n _assert(parsedToken, AuthErrorCode.INTERNAL_ERROR);\n _assert(typeof parsedToken.exp !== 'undefined', AuthErrorCode.INTERNAL_ERROR);\n _assert(typeof parsedToken.iat !== 'undefined', AuthErrorCode.INTERNAL_ERROR);\n return Number(parsedToken.exp) - Number(parsedToken.iat);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\n\nimport { UserInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\n\nexport async function _logoutIfInvalidated<T>(\n user: UserInternal,\n promise: Promise<T>,\n bypassAuthState = false\n): Promise<T> {\n if (bypassAuthState) {\n return promise;\n }\n try {\n return await promise;\n } catch (e) {\n if (e instanceof FirebaseError && isUserInvalidated(e)) {\n if (user.auth.currentUser === user) {\n await user.auth.signOut();\n }\n }\n\n throw e;\n }\n}\n\nfunction isUserInvalidated({ code }: FirebaseError): boolean {\n return (\n code === `auth/${AuthErrorCode.USER_DISABLED}` ||\n code === `auth/${AuthErrorCode.TOKEN_EXPIRED}`\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\nimport { UserInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\n\n// Refresh the token five minutes before expiration\nexport const enum Duration {\n OFFSET = 5 * 1000 * 60,\n RETRY_BACKOFF_MIN = 30 * 1000,\n RETRY_BACKOFF_MAX = 16 * 60 * 1000\n}\n\nexport class ProactiveRefresh {\n private isRunning = false;\n\n // Node timers and browser timers return fundamentally different types.\n // We don't actually care what the value is but TS won't accept unknown and\n // we can't cast properly in both environments.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private timerId: any | null = null;\n private errorBackoff = Duration.RETRY_BACKOFF_MIN;\n\n constructor(private readonly user: UserInternal) {}\n\n _start(): void {\n if (this.isRunning) {\n return;\n }\n\n this.isRunning = true;\n this.schedule();\n }\n\n _stop(): void {\n if (!this.isRunning) {\n return;\n }\n\n this.isRunning = false;\n if (this.timerId !== null) {\n clearTimeout(this.timerId);\n }\n }\n\n private getInterval(wasError: boolean): number {\n if (wasError) {\n const interval = this.errorBackoff;\n this.errorBackoff = Math.min(\n this.errorBackoff * 2,\n Duration.RETRY_BACKOFF_MAX\n );\n return interval;\n } else {\n // Reset the error backoff\n this.errorBackoff = Duration.RETRY_BACKOFF_MIN;\n const expTime = this.user.stsTokenManager.expirationTime ?? 0;\n const interval = expTime - Date.now() - Duration.OFFSET;\n\n return Math.max(0, interval);\n }\n }\n\n private schedule(wasError = false): void {\n if (!this.isRunning) {\n // Just in case...\n return;\n }\n\n const interval = this.getInterval(wasError);\n this.timerId = setTimeout(async () => {\n await this.iteration();\n }, interval);\n }\n\n private async iteration(): Promise<void> {\n try {\n await this.user.getIdToken(true);\n } catch (e) {\n // Only retry on network errors\n if (\n (e as FirebaseError)?.code ===\n `auth/${AuthErrorCode.NETWORK_REQUEST_FAILED}`\n ) {\n this.schedule(/* wasError */ true);\n }\n\n return;\n }\n this.schedule();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserMetadata as UserMetadataType } from '../../model/public_types';\n\nimport { utcTimestampToDateString } from '../util/time';\n\nexport class UserMetadata implements UserMetadataType {\n creationTime?: string;\n lastSignInTime?: string;\n\n constructor(\n private createdAt?: string | number,\n private lastLoginAt?: string | number\n ) {\n this._initializeTime();\n }\n\n private _initializeTime(): void {\n this.lastSignInTime = utcTimestampToDateString(this.lastLoginAt);\n this.creationTime = utcTimestampToDateString(this.createdAt);\n }\n\n _copy(metadata: UserMetadata): void {\n this.createdAt = metadata.createdAt;\n this.lastLoginAt = metadata.lastLoginAt;\n this._initializeTime();\n }\n\n toJSON(): object {\n return {\n createdAt: this.createdAt,\n lastLoginAt: this.lastLoginAt\n };\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { User, UserInfo } from '../../model/public_types';\n\nimport {\n getAccountInfo,\n ProviderUserInfo\n} from '../../api/account_management/account';\nimport { UserInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { UserMetadata } from './user_metadata';\nimport { getModularInstance } from '@firebase/util';\n\nexport async function _reloadWithoutSaving(user: UserInternal): Promise<void> {\n const auth = user.auth;\n const idToken = await user.getIdToken();\n const response = await _logoutIfInvalidated(\n user,\n getAccountInfo(auth, { idToken })\n );\n\n _assert(response?.users.length, auth, AuthErrorCode.INTERNAL_ERROR);\n\n const coreAccount = response.users[0];\n\n user._notifyReloadListener(coreAccount);\n\n const newProviderData = coreAccount.providerUserInfo?.length\n ? extractProviderData(coreAccount.providerUserInfo)\n : [];\n\n const providerData = mergeProviderData(user.providerData, newProviderData);\n\n // Preserves the non-nonymous status of the stored user, even if no more\n // credentials (federated or email/password) are linked to the user. If\n // the user was previously anonymous, then use provider data to update.\n // On the other hand, if it was not anonymous before, it should never be\n // considered anonymous now.\n const oldIsAnonymous = user.isAnonymous;\n const newIsAnonymous =\n !(user.email && coreAccount.passwordHash) && !providerData?.length;\n const isAnonymous = !oldIsAnonymous ? false : newIsAnonymous;\n\n const updates: Partial<UserInternal> = {\n uid: coreAccount.localId,\n displayName: coreAccount.displayName || null,\n photoURL: coreAccount.photoUrl || null,\n email: coreAccount.email || null,\n emailVerified: coreAccount.emailVerified || false,\n phoneNumber: coreAccount.phoneNumber || null,\n tenantId: coreAccount.tenantId || null,\n providerData,\n metadata: new UserMetadata(coreAccount.createdAt, coreAccount.lastLoginAt),\n isAnonymous\n };\n\n Object.assign(user, updates);\n}\n\n/**\n * Reloads user account data, if signed in.\n *\n * @param user - The user.\n *\n * @public\n */\nexport async function reload(user: User): Promise<void> {\n const userInternal: UserInternal = getModularInstance(user) as UserInternal;\n await _reloadWithoutSaving(userInternal);\n\n // Even though the current user hasn't changed, update\n // current user will trigger a persistence update w/ the\n // new info.\n await userInternal.auth._persistUserIfCurrent(userInternal);\n userInternal.auth._notifyListenersIfCurrent(userInternal);\n}\n\nfunction mergeProviderData(\n original: UserInfo[],\n newData: UserInfo[]\n): UserInfo[] {\n const deduped = original.filter(\n o => !newData.some(n => n.providerId === o.providerId)\n );\n return [...deduped, ...newData];\n}\n\nfunction extractProviderData(providers: ProviderUserInfo[]): UserInfo[] {\n return providers.map(({ providerId, ...provider }) => {\n return {\n providerId,\n uid: provider.rawId || '',\n displayName: provider.displayName || null,\n email: provider.email || null,\n phoneNumber: provider.phoneNumber || null,\n photoURL: provider.photoUrl || null\n };\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable camelcase */\n\nimport { querystring } from '@firebase/util';\n\nimport {\n _getFinalTarget,\n _performFetchWithErrorHandling,\n HttpMethod,\n HttpHeader\n} from '../index';\nimport { FetchProvider } from '../../core/util/fetch_provider';\nimport { Auth } from '../../model/public_types';\nimport { AuthInternal } from '../../model/auth';\n\nexport const enum Endpoint {\n TOKEN = '/v1/token'\n}\n\n/** The server responses with snake_case; we convert to camelCase */\ninterface RequestStsTokenServerResponse {\n access_token: string;\n expires_in: string;\n refresh_token: string;\n}\n\nexport interface RequestStsTokenResponse {\n accessToken: string;\n expiresIn: string;\n refreshToken: string;\n}\n\nexport async function requestStsToken(\n auth: Auth,\n refreshToken: string\n): Promise<RequestStsTokenResponse> {\n const response =\n await _performFetchWithErrorHandling<RequestStsTokenServerResponse>(\n auth,\n {},\n async () => {\n const body = querystring({\n 'grant_type': 'refresh_token',\n 'refresh_token': refreshToken\n }).slice(1);\n const { tokenApiHost, apiKey } = auth.config;\n const url = _getFinalTarget(\n auth,\n tokenApiHost,\n Endpoint.TOKEN,\n `key=${apiKey}`\n );\n\n const headers = await (auth as AuthInternal)._getAdditionalHeaders();\n headers[HttpHeader.CONTENT_TYPE] = 'application/x-www-form-urlencoded';\n\n return FetchProvider.fetch()(url, {\n method: HttpMethod.POST,\n headers,\n body\n });\n }\n );\n\n // The response comes back in snake_case. Convert to camel:\n return {\n accessToken: response.access_token,\n expiresIn: response.expires_in,\n refreshToken: response.refresh_token\n };\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FinalizeMfaResponse } from '../../api/authentication/mfa';\nimport { requestStsToken } from '../../api/authentication/token';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthErrorCode } from '../errors';\nimport { PersistedBlob } from '../persistence';\nimport { _assert, debugFail } from '../util/assert';\nimport { _tokenExpiresIn } from './id_token_result';\n\n/**\n * The number of milliseconds before the official expiration time of a token\n * to refresh that token, to provide a buffer for RPCs to complete.\n */\nexport const enum Buffer {\n TOKEN_REFRESH = 30_000\n}\n\n/**\n * We need to mark this class as internal explicitly to exclude it in the public typings, because\n * it references AuthInternal which has a circular dependency with UserInternal.\n *\n * @internal\n */\nexport class StsTokenManager {\n refreshToken: string | null = null;\n accessToken: string | null = null;\n expirationTime: number | null = null;\n\n get isExpired(): boolean {\n return (\n !this.expirationTime ||\n Date.now() > this.expirationTime - Buffer.TOKEN_REFRESH\n );\n }\n\n updateFromServerResponse(\n response: IdTokenResponse | FinalizeMfaResponse\n ): void {\n _assert(response.idToken, AuthErrorCode.INTERNAL_ERROR);\n _assert(\n typeof response.idToken !== 'undefined',\n AuthErrorCode.INTERNAL_ERROR\n );\n _assert(\n typeof response.refreshToken !== 'undefined',\n AuthErrorCode.INTERNAL_ERROR\n );\n const expiresIn =\n 'expiresIn' in response && typeof response.expiresIn !== 'undefined'\n ? Number(response.expiresIn)\n : _tokenExpiresIn(response.idToken);\n this.updateTokensAndExpiration(\n response.idToken,\n response.refreshToken,\n expiresIn\n );\n }\n\n async getToken(\n auth: AuthInternal,\n forceRefresh = false\n ): Promise<string | null> {\n _assert(\n !this.accessToken || this.refreshToken,\n auth,\n AuthErrorCode.TOKEN_EXPIRED\n );\n\n if (!forceRefresh && this.accessToken && !this.isExpired) {\n return this.accessToken;\n }\n\n if (this.refreshToken) {\n await this.refresh(auth, this.refreshToken!);\n return this.accessToken;\n }\n\n return null;\n }\n\n clearRefreshToken(): void {\n this.refreshToken = null;\n }\n\n private async refresh(auth: AuthInternal, oldToken: string): Promise<void> {\n const { accessToken, refreshToken, expiresIn } = await requestStsToken(\n auth,\n oldToken\n );\n this.updateTokensAndExpiration(\n accessToken,\n refreshToken,\n Number(expiresIn)\n );\n }\n\n private updateTokensAndExpiration(\n accessToken: string,\n refreshToken: string,\n expiresInSec: number\n ): void {\n this.refreshToken = refreshToken || null;\n this.accessToken = accessToken || null;\n this.expirationTime = Date.now() + expiresInSec * 1000;\n }\n\n static fromJSON(appName: string, object: PersistedBlob): StsTokenManager {\n const { refreshToken, accessToken, expirationTime } = object;\n\n const manager = new StsTokenManager();\n if (refreshToken) {\n _assert(typeof refreshToken === 'string', AuthErrorCode.INTERNAL_ERROR, {\n appName\n });\n manager.refreshToken = refreshToken;\n }\n if (accessToken) {\n _assert(typeof accessToken === 'string', AuthErrorCode.INTERNAL_ERROR, {\n appName\n });\n manager.accessToken = accessToken;\n }\n if (expirationTime) {\n _assert(\n typeof expirationTime === 'number',\n AuthErrorCode.INTERNAL_ERROR,\n {\n appName\n }\n );\n manager.expirationTime = expirationTime;\n }\n return manager;\n }\n\n toJSON(): object {\n return {\n refreshToken: this.refreshToken,\n accessToken: this.accessToken,\n expirationTime: this.expirationTime\n };\n }\n\n _assign(stsTokenManager: StsTokenManager): void {\n this.accessToken = stsTokenManager.accessToken;\n this.refreshToken = stsTokenManager.refreshToken;\n this.expirationTime = stsTokenManager.expirationTime;\n }\n\n _clone(): StsTokenManager {\n return Object.assign(new StsTokenManager(), this.toJSON());\n }\n\n _performRefresh(): never {\n return debugFail('not implemented');\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IdTokenResult } from '../../model/public_types';\nimport { NextFn } from '@firebase/util';\n\nimport {\n APIUserInfo,\n deleteAccount\n} from '../../api/account_management/account';\nimport { FinalizeMfaResponse } from '../../api/authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport {\n MutableUserInfo,\n UserInternal,\n UserParameters\n} from '../../model/user';\nimport { AuthErrorCode } from '../errors';\nimport { PersistedBlob } from '../persistence';\nimport { _assert } from '../util/assert';\nimport { getIdTokenResult } from './id_token_result';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { ProactiveRefresh } from './proactive_refresh';\nimport { _reloadWithoutSaving, reload } from './reload';\nimport { StsTokenManager } from './token_manager';\nimport { UserMetadata } from './user_metadata';\nimport { ProviderId } from '../../model/enums';\n\nfunction assertStringOrUndefined(\n assertion: unknown,\n appName: string\n): asserts assertion is string | undefined {\n _assert(\n typeof assertion === 'string' || typeof assertion === 'undefined',\n AuthErrorCode.INTERNAL_ERROR,\n { appName }\n );\n}\n\nexport class UserImpl implements UserInternal {\n // For the user object, provider is always Firebase.\n readonly providerId = ProviderId.FIREBASE;\n stsTokenManager: StsTokenManager;\n // Last known accessToken so we know when it changes\n private accessToken: string | null;\n\n uid: string;\n auth: AuthInternal;\n emailVerified: boolean;\n isAnonymous: boolean;\n tenantId: string | null;\n readonly metadata: UserMetadata;\n providerData: MutableUserInfo[];\n\n // Optional fields from UserInfo\n displayName: string | null;\n email: string | null;\n phoneNumber: string | null;\n photoURL: string | null;\n\n _redirectEventId?: string;\n private readonly proactiveRefresh = new ProactiveRefresh(this);\n\n constructor({ uid, auth, stsTokenManager, ...opt }: UserParameters) {\n this.uid = uid;\n this.auth = auth;\n this.stsTokenManager = stsTokenManager;\n this.accessToken = stsTokenManager.accessToken;\n this.displayName = opt.displayName || null;\n this.email = opt.email || null;\n this.emailVerified = opt.emailVerified || false;\n this.phoneNumber = opt.phoneNumber || null;\n this.photoURL = opt.photoURL || null;\n this.isAnonymous = opt.isAnonymous || false;\n this.tenantId = opt.tenantId || null;\n this.providerData = opt.providerData ? [...opt.providerData] : [];\n this.metadata = new UserMetadata(\n opt.createdAt || undefined,\n opt.lastLoginAt || undefined\n );\n }\n\n async getIdToken(forceRefresh?: boolean): Promise<string> {\n const accessToken = await _logoutIfInvalidated(\n this,\n this.stsTokenManager.getToken(this.auth, forceRefresh)\n );\n _assert(accessToken, this.auth, AuthErrorCode.INTERNAL_ERROR);\n\n if (this.accessToken !== accessToken) {\n this.accessToken = accessToken;\n await this.auth._persistUserIfCurrent(this);\n this.auth._notifyListenersIfCurrent(this);\n }\n\n return accessToken;\n }\n\n getIdTokenResult(forceRefresh?: boolean): Promise<IdTokenResult> {\n return getIdTokenResult(this, forceRefresh);\n }\n\n reload(): Promise<void> {\n return reload(this);\n }\n\n private reloadUserInfo: APIUserInfo | null = null;\n private reloadListener: NextFn<APIUserInfo> | null = null;\n\n _assign(user: UserInternal): void {\n if (this === user) {\n return;\n }\n _assert(this.uid === user.uid, this.auth, AuthErrorCode.INTERNAL_ERROR);\n this.displayName = user.displayName;\n this.photoURL = user.photoURL;\n this.email = user.email;\n this.emailVerified = user.emailVerified;\n this.phoneNumber = user.phoneNumber;\n this.isAnonymous = user.isAnonymous;\n this.tenantId = user.tenantId;\n this.providerData = user.providerData.map(userInfo => ({ ...userInfo }));\n this.metadata._copy(user.metadata);\n this.stsTokenManager._assign(user.stsTokenManager);\n }\n\n _clone(auth: AuthInternal): UserInternal {\n const newUser = new UserImpl({\n ...this,\n auth,\n stsTokenManager: this.stsTokenManager._clone()\n });\n newUser.metadata._copy(this.metadata);\n return newUser;\n }\n\n _onReload(callback: NextFn<APIUserInfo>): void {\n // There should only ever be one listener, and that is a single instance of MultiFactorUser\n _assert(!this.reloadListener, this.auth, AuthErrorCode.INTERNAL_ERROR);\n this.reloadListener = callback;\n if (this.reloadUserInfo) {\n this._notifyReloadListener(this.reloadUserInfo);\n this.reloadUserInfo = null;\n }\n }\n\n _notifyReloadListener(userInfo: APIUserInfo): void {\n if (this.reloadListener) {\n this.reloadListener(userInfo);\n } else {\n // If no listener is subscribed yet, save the result so it's available when they do subscribe\n this.reloadUserInfo = userInfo;\n }\n }\n\n _startProactiveRefresh(): void {\n this.proactiveRefresh._start();\n }\n\n _stopProactiveRefresh(): void {\n this.proactiveRefresh._stop();\n }\n\n async _updateTokensIfNecessary(\n response: IdTokenResponse | FinalizeMfaResponse,\n reload = false\n ): Promise<void> {\n let tokensRefreshed = false;\n if (\n response.idToken &&\n response.idToken !== this.stsTokenManager.accessToken\n ) {\n this.stsTokenManager.updateFromServerResponse(response);\n tokensRefreshed = true;\n }\n\n if (reload) {\n await _reloadWithoutSaving(this);\n }\n\n await this.auth._persistUserIfCurrent(this);\n if (tokensRefreshed) {\n this.auth._notifyListenersIfCurrent(this);\n }\n }\n\n async delete(): Promise<void> {\n const idToken = await this.getIdToken();\n await _logoutIfInvalidated(this, deleteAccount(this.auth, { idToken }));\n this.stsTokenManager.clearRefreshToken();\n\n // TODO: Determine if cancellable-promises are necessary to use in this class so that delete()\n // cancels pending actions...\n\n return this.auth.signOut();\n }\n\n toJSON(): PersistedBlob {\n return {\n uid: this.uid,\n email: this.email || undefined,\n emailVerified: this.emailVerified,\n displayName: this.displayName || undefined,\n isAnonymous: this.isAnonymous,\n photoURL: this.photoURL || undefined,\n phoneNumber: this.phoneNumber || undefined,\n tenantId: this.tenantId || undefined,\n providerData: this.providerData.map(userInfo => ({ ...userInfo })),\n stsTokenManager: this.stsTokenManager.toJSON(),\n // Redirect event ID must be maintained in case there is a pending\n // redirect event.\n _redirectEventId: this._redirectEventId,\n ...this.metadata.toJSON(),\n\n // Required for compatibility with the legacy SDK (go/firebase-auth-sdk-persistence-parsing):\n apiKey: this.auth.config.apiKey,\n appName: this.auth.name\n // Missing authDomain will be tolerated by the legacy SDK.\n // stsTokenManager.apiKey isn't actually required (despite the legacy SDK persisting it).\n };\n }\n\n get refreshToken(): string {\n return this.stsTokenManager.refreshToken || '';\n }\n\n static _fromJSON(auth: AuthInternal, object: PersistedBlob): UserInternal {\n const displayName = object.displayName ?? undefined;\n const email = object.email ?? undefined;\n const phoneNumber = object.phoneNumber ?? undefined;\n const photoURL = object.photoURL ?? undefined;\n const tenantId = object.tenantId ?? undefined;\n const _redirectEventId = object._redirectEventId ?? undefined;\n const createdAt = object.createdAt ?? undefined;\n const lastLoginAt = object.lastLoginAt ?? undefined;\n const {\n uid,\n emailVerified,\n isAnonymous,\n providerData,\n stsTokenManager: plainObjectTokenManager\n } = object;\n\n _assert(uid && plainObjectTokenManager, auth, AuthErrorCode.INTERNAL_ERROR);\n\n const stsTokenManager = StsTokenManager.fromJSON(\n this.name,\n plainObjectTokenManager as PersistedBlob\n );\n\n _assert(typeof uid === 'string', auth, AuthErrorCode.INTERNAL_ERROR);\n assertStringOrUndefined(displayName, auth.name);\n assertStringOrUndefined(email, auth.name);\n _assert(\n typeof emailVerified === 'boolean',\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n _assert(\n typeof isAnonymous === 'boolean',\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n assertStringOrUndefined(phoneNumber, auth.name);\n assertStringOrUndefined(photoURL, auth.name);\n assertStringOrUndefined(tenantId, auth.name);\n assertStringOrUndefined(_redirectEventId, auth.name);\n assertStringOrUndefined(createdAt, auth.name);\n assertStringOrUndefined(lastLoginAt, auth.name);\n const user = new UserImpl({\n uid,\n auth,\n email,\n emailVerified,\n displayName,\n isAnonymous,\n photoURL,\n phoneNumber,\n tenantId,\n stsTokenManager,\n createdAt,\n lastLoginAt\n });\n\n if (providerData && Array.isArray(providerData)) {\n user.providerData = providerData.map(userInfo => ({ ...userInfo }));\n }\n\n if (_redirectEventId) {\n user._redirectEventId = _redirectEventId;\n }\n\n return user;\n }\n\n /**\n * Initialize a User from an idToken server response\n * @param auth\n * @param idTokenResponse\n */\n static async _fromIdTokenResponse(\n auth: AuthInternal,\n idTokenResponse: IdTokenResponse,\n isAnonymous: boolean = false\n ): Promise<UserInternal> {\n const stsTokenManager = new StsTokenManager();\n stsTokenManager.updateFromServerResponse(idTokenResponse);\n\n // Initialize the Firebase Auth user.\n const user = new UserImpl({\n uid: idTokenResponse.localId,\n auth,\n stsTokenManager,\n isAnonymous\n });\n\n // Updates the user info and data and resolves with a user instance.\n await _reloadWithoutSaving(user);\n return user;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { debugAssert } from './assert';\n\n/**\n * Our API has a lot of one-off constants that are used to do things.\n * Unfortunately we can't export these as classes instantiated directly since\n * the constructor may side effect and therefore can't be proven to be safely\n * culled. Instead, we export these classes themselves as a lowerCamelCase\n * constant, and instantiate them under the hood.\n */\nexport interface SingletonInstantiator<T> {\n new (): T;\n}\n\nconst instanceCache: Map<unknown, unknown> = new Map();\n\nexport function _getInstance<T>(cls: unknown): T {\n debugAssert(cls instanceof Function, 'Expected a class definition');\n let instance = instanceCache.get(cls) as T | undefined;\n\n if (instance) {\n debugAssert(\n instance instanceof cls,\n 'Instance stored in cache mismatched with class'\n );\n return instance;\n }\n\n instance = new (cls as SingletonInstantiator<T>)();\n instanceCache.set(cls, instance);\n return instance;\n}\n\nexport function _clearInstanceMap(): void {\n instanceCache.clear();\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\n\nimport {\n PersistenceInternal,\n PersistenceType,\n PersistenceValue,\n StorageEventListener\n} from '../persistence';\n\nexport class InMemoryPersistence implements PersistenceInternal {\n static type: 'NONE' = 'NONE';\n readonly type = PersistenceType.NONE;\n storage: Record<string, PersistenceValue> = {};\n\n async _isAvailable(): Promise<boolean> {\n return true;\n }\n\n async _set(key: string, value: PersistenceValue): Promise<void> {\n this.storage[key] = value;\n }\n\n async _get<T extends PersistenceValue>(key: string): Promise<T | null> {\n const value = this.storage[key];\n return value === undefined ? null : (value as T);\n }\n\n async _remove(key: string): Promise<void> {\n delete this.storage[key];\n }\n\n _addListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for in-memory storage since it cannot be shared across windows/workers\n return;\n }\n\n _removeListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for in-memory storage since it cannot be shared across windows/workers\n return;\n }\n}\n\n/**\n * An implementation of {@link Persistence} of type 'NONE'.\n *\n * @public\n */\nexport const inMemoryPersistence: Persistence = InMemoryPersistence;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ApiKey, AppName, AuthInternal } from '../../model/auth';\nimport { UserInternal } from '../../model/user';\nimport { PersistedBlob, PersistenceInternal } from '../persistence';\nimport { UserImpl } from '../user/user_impl';\nimport { _getInstance } from '../util/instantiator';\nimport { inMemoryPersistence } from './in_memory';\n\nexport const enum KeyName {\n AUTH_USER = 'authUser',\n AUTH_EVENT = 'authEvent',\n REDIRECT_USER = 'redirectUser',\n PERSISTENCE_USER = 'persistence'\n}\nexport const enum Namespace {\n PERSISTENCE = 'firebase'\n}\n\nexport function _persistenceKeyName(\n key: string,\n apiKey: ApiKey,\n appName: AppName\n): string {\n return `${Namespace.PERSISTENCE}:${key}:${apiKey}:${appName}`;\n}\n\nexport class PersistenceUserManager {\n private readonly fullUserKey: string;\n private readonly fullPersistenceKey: string;\n private readonly boundEventHandler: () => void;\n\n private constructor(\n public persistence: PersistenceInternal,\n private readonly auth: AuthInternal,\n private readonly userKey: string\n ) {\n const { config, name } = this.auth;\n this.fullUserKey = _persistenceKeyName(this.userKey, config.apiKey, name);\n this.fullPersistenceKey = _persistenceKeyName(\n KeyName.PERSISTENCE_USER,\n config.apiKey,\n name\n );\n this.boundEventHandler = auth._onStorageEvent.bind(auth);\n this.persistence._addListener(this.fullUserKey, this.boundEventHandler);\n }\n\n setCurrentUser(user: UserInternal): Promise<void> {\n return this.persistence._set(this.fullUserKey, user.toJSON());\n }\n\n async getCurrentUser(): Promise<UserInternal | null> {\n const blob = await this.persistence._get<PersistedBlob>(this.fullUserKey);\n return blob ? UserImpl._fromJSON(this.auth, blob) : null;\n }\n\n removeCurrentUser(): Promise<void> {\n return this.persistence._remove(this.fullUserKey);\n }\n\n savePersistenceForRedirect(): Promise<void> {\n return this.persistence._set(\n this.fullPersistenceKey,\n this.persistence.type\n );\n }\n\n async setPersistence(newPersistence: PersistenceInternal): Promise<void> {\n if (this.persistence === newPersistence) {\n return;\n }\n\n const currentUser = await this.getCurrentUser();\n await this.removeCurrentUser();\n\n this.persistence = newPersistence;\n\n if (currentUser) {\n return this.setCurrentUser(currentUser);\n }\n }\n\n delete(): void {\n this.persistence._removeListener(this.fullUserKey, this.boundEventHandler);\n }\n\n static async create(\n auth: AuthInternal,\n persistenceHierarchy: PersistenceInternal[],\n userKey = KeyName.AUTH_USER\n ): Promise<PersistenceUserManager> {\n if (!persistenceHierarchy.length) {\n return new PersistenceUserManager(\n _getInstance(inMemoryPersistence),\n auth,\n userKey\n );\n }\n\n // Eliminate any persistences that are not available\n const availablePersistences = (\n await Promise.all(\n persistenceHierarchy.map(async persistence => {\n if (await persistence._isAvailable()) {\n return persistence;\n }\n return undefined;\n })\n )\n ).filter(persistence => persistence) as PersistenceInternal[];\n\n // Fall back to the first persistence listed, or in memory if none available\n let selectedPersistence =\n availablePersistences[0] ||\n _getInstance<PersistenceInternal>(inMemoryPersistence);\n\n const key = _persistenceKeyName(userKey, auth.config.apiKey, auth.name);\n\n // Pull out the existing user, setting the chosen persistence to that\n // persistence if the user exists.\n let userToMigrate: UserInternal | null = null;\n // Note, here we check for a user in _all_ persistences, not just the\n // ones deemed available. If we can migrate a user out of a broken\n // persistence, we will (but only if that persistence supports migration).\n for (const persistence of persistenceHierarchy) {\n try {\n const blob = await persistence._get<PersistedBlob>(key);\n if (blob) {\n const user = UserImpl._fromJSON(auth, blob); // throws for unparsable blob (wrong format)\n if (persistence !== selectedPersistence) {\n userToMigrate = user;\n }\n selectedPersistence = persistence;\n break;\n }\n } catch {}\n }\n\n // If we find the user in a persistence that does support migration, use\n // that migration path (of only persistences that support migration)\n const migrationHierarchy = availablePersistences.filter(\n p => p._shouldAllowMigration\n );\n\n // If the persistence does _not_ allow migration, just finish off here\n if (\n !selectedPersistence._shouldAllowMigration ||\n !migrationHierarchy.length\n ) {\n return new PersistenceUserManager(selectedPersistence, auth, userKey);\n }\n\n selectedPersistence = migrationHierarchy[0];\n if (userToMigrate) {\n // This normally shouldn't throw since chosenPersistence.isAvailable() is true, but if it does\n // we'll just let it bubble to surface the error.\n await selectedPersistence._set(key, userToMigrate.toJSON());\n }\n\n // Attempt to clear the key in other persistences but ignore errors. This helps prevent issues\n // such as users getting stuck with a previous account after signing out and refreshing the tab.\n await Promise.all(\n persistenceHierarchy.map(async persistence => {\n if (persistence !== selectedPersistence) {\n try {\n await persistence._remove(key);\n } catch {}\n }\n })\n );\n return new PersistenceUserManager(selectedPersistence, auth, userKey);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isIE, getUA } from '@firebase/util';\n\ninterface NavigatorStandalone extends Navigator {\n standalone?: unknown;\n}\n\ninterface Document {\n documentMode?: number;\n}\n\n/**\n * Enums for Browser name.\n */\nexport const enum BrowserName {\n ANDROID = 'Android',\n BLACKBERRY = 'Blackberry',\n EDGE = 'Edge',\n FIREFOX = 'Firefox',\n IE = 'IE',\n IEMOBILE = 'IEMobile',\n OPERA = 'Opera',\n OTHER = 'Other',\n CHROME = 'Chrome',\n SAFARI = 'Safari',\n SILK = 'Silk',\n WEBOS = 'Webos'\n}\n\n/**\n * Determine the browser for the purposes of reporting usage to the API\n */\nexport function _getBrowserName(userAgent: string): BrowserName | string {\n const ua = userAgent.toLowerCase();\n if (ua.includes('opera/') || ua.includes('opr/') || ua.includes('opios/')) {\n return BrowserName.OPERA;\n } else if (_isIEMobile(ua)) {\n // Windows phone IEMobile browser.\n return BrowserName.IEMOBILE;\n } else if (ua.includes('msie') || ua.includes('trident/')) {\n return BrowserName.IE;\n } else if (ua.includes('edge/')) {\n return BrowserName.EDGE;\n } else if (_isFirefox(ua)) {\n return BrowserName.FIREFOX;\n } else if (ua.includes('silk/')) {\n return BrowserName.SILK;\n } else if (_isBlackBerry(ua)) {\n // Blackberry browser.\n return BrowserName.BLACKBERRY;\n } else if (_isWebOS(ua)) {\n // WebOS default browser.\n return BrowserName.WEBOS;\n } else if (_isSafari(ua)) {\n return BrowserName.SAFARI;\n } else if (\n (ua.includes('chrome/') || _isChromeIOS(ua)) &&\n !ua.includes('edge/')\n ) {\n return BrowserName.CHROME;\n } else if (_isAndroid(ua)) {\n // Android stock browser.\n return BrowserName.ANDROID;\n } else {\n // Most modern browsers have name/version at end of user agent string.\n const re = /([a-zA-Z\\d\\.]+)\\/[a-zA-Z\\d\\.]*$/;\n const matches = userAgent.match(re);\n if (matches?.length === 2) {\n return matches[1];\n }\n }\n return BrowserName.OTHER;\n}\n\nexport function _isFirefox(ua = getUA()): boolean {\n return /firefox\\//i.test(ua);\n}\n\nexport function _isSafari(userAgent = getUA()): boolean {\n const ua = userAgent.toLowerCase();\n return (\n ua.includes('safari/') &&\n !ua.includes('chrome/') &&\n !ua.includes('crios/') &&\n !ua.includes('android')\n );\n}\n\nexport function _isChromeIOS(ua = getUA()): boolean {\n return /crios\\//i.test(ua);\n}\n\nexport function _isIEMobile(ua = getUA()): boolean {\n return /iemobile/i.test(ua);\n}\n\nexport function _isAndroid(ua = getUA()): boolean {\n return /android/i.test(ua);\n}\n\nexport function _isBlackBerry(ua = getUA()): boolean {\n return /blackberry/i.test(ua);\n}\n\nexport function _isWebOS(ua = getUA()): boolean {\n return /webos/i.test(ua);\n}\n\nexport function _isIOS(ua = getUA()): boolean {\n return (\n /iphone|ipad|ipod/i.test(ua) ||\n (/macintosh/i.test(ua) && /mobile/i.test(ua))\n );\n}\n\nexport function _isIOS7Or8(ua = getUA()): boolean {\n return (\n /(iPad|iPhone|iPod).*OS 7_\\d/i.test(ua) ||\n /(iPad|iPhone|iPod).*OS 8_\\d/i.test(ua)\n );\n}\n\nexport function _isIOSStandalone(ua = getUA()): boolean {\n return _isIOS(ua) && !!(window.navigator as NavigatorStandalone)?.standalone;\n}\n\nexport function _isIE10(): boolean {\n return isIE() && (document as Document).documentMode === 10;\n}\n\nexport function _isMobileBrowser(ua: string = getUA()): boolean {\n // TODO: implement getBrowserName equivalent for OS.\n return (\n _isIOS(ua) ||\n _isAndroid(ua) ||\n _isWebOS(ua) ||\n _isBlackBerry(ua) ||\n /windows phone/i.test(ua) ||\n _isIEMobile(ua)\n );\n}\n\nexport function _isIframe(): boolean {\n try {\n // Check that the current window is not the top window.\n // If so, return true.\n return !!(window && window !== window.top);\n } catch (e) {\n return false;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SDK_VERSION } from '@firebase/app';\nimport { _getBrowserName } from './browser';\nimport { getUA } from '@firebase/util';\n\nexport const enum ClientImplementation {\n CORE = 'JsCore'\n}\n\n/**\n * @internal\n */\nexport const enum ClientPlatform {\n BROWSER = 'Browser',\n NODE = 'Node',\n REACT_NATIVE = 'ReactNative',\n CORDOVA = 'Cordova',\n WORKER = 'Worker'\n}\n\n/*\n * Determine the SDK version string\n */\nexport function _getClientVersion(\n clientPlatform: ClientPlatform,\n frameworks: readonly string[] = []\n): string {\n let reportedPlatform: string;\n switch (clientPlatform) {\n case ClientPlatform.BROWSER:\n // In a browser environment, report the browser name.\n reportedPlatform = _getBrowserName(getUA());\n break;\n case ClientPlatform.WORKER:\n // Technically a worker runs from a browser but we need to differentiate a\n // worker from a browser.\n // For example: Chrome-Worker/JsCore/4.9.1/FirebaseCore-web.\n reportedPlatform = `${_getBrowserName(getUA())}-${clientPlatform}`;\n break;\n default:\n reportedPlatform = clientPlatform;\n }\n const reportedFrameworks = frameworks.length\n ? frameworks.join(',')\n : 'FirebaseCore-web'; /* default value if no other framework is used */\n return `${reportedPlatform}/${ClientImplementation.CORE}/${SDK_VERSION}/${reportedFrameworks}`;\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthInternal } from '../../model/auth';\nimport { Unsubscribe, User } from '../../model/public_types';\nimport { AuthErrorCode } from '../errors';\n\ninterface MiddlewareEntry {\n (user: User | null): Promise<void>;\n onAbort?: () => void;\n}\n\nexport class AuthMiddlewareQueue {\n private readonly queue: MiddlewareEntry[] = [];\n\n constructor(private readonly auth: AuthInternal) {}\n\n pushCallback(\n callback: (user: User | null) => void | Promise<void>,\n onAbort?: () => void\n ): Unsubscribe {\n // The callback could be sync or async. Wrap it into a\n // function that is always async.\n const wrappedCallback: MiddlewareEntry = (\n user: User | null\n ): Promise<void> =>\n new Promise((resolve, reject) => {\n try {\n const result = callback(user);\n // Either resolve with existing promise or wrap a non-promise\n // return value into a promise.\n resolve(result);\n } catch (e) {\n // Sync callback throws.\n reject(e);\n }\n });\n // Attach the onAbort if present\n wrappedCallback.onAbort = onAbort;\n this.queue.push(wrappedCallback);\n\n const index = this.queue.length - 1;\n return () => {\n // Unsubscribe. Replace with no-op. Do not remove from array, or it will disturb\n // indexing of other elements.\n this.queue[index] = () => Promise.resolve();\n };\n }\n\n async runMiddleware(nextUser: User | null): Promise<void> {\n if (this.auth.currentUser === nextUser) {\n return;\n }\n\n // While running the middleware, build a temporary stack of onAbort\n // callbacks to call if one middleware callback rejects.\n\n const onAbortStack: Array<() => void> = [];\n try {\n for (const beforeStateCallback of this.queue) {\n await beforeStateCallback(nextUser);\n\n // Only push the onAbort if the callback succeeds\n if (beforeStateCallback.onAbort) {\n onAbortStack.push(beforeStateCallback.onAbort);\n }\n }\n } catch (e) {\n // Run all onAbort, with separate try/catch to ignore any errors and\n // continue\n onAbortStack.reverse();\n for (const onAbort of onAbortStack) {\n try {\n onAbort();\n } catch (_) {\n /* swallow error */\n }\n }\n\n throw this.auth._errorFactory.create(AuthErrorCode.LOGIN_BLOCKED, {\n originalMessage: (e as Error)?.message\n });\n }\n }\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n _performApiRequest,\n Endpoint,\n HttpMethod,\n _addTidIfNecessary\n} from '../index';\nimport { Auth } from '../../model/public_types';\n\n/**\n * Request object for fetching the password policy.\n */\nexport interface GetPasswordPolicyRequest {\n tenantId?: string;\n}\n\n/**\n * Response object for fetching the password policy.\n */\nexport interface GetPasswordPolicyResponse {\n customStrengthOptions: {\n minPasswordLength?: number;\n maxPasswordLength?: number;\n containsLowercaseCharacter?: boolean;\n containsUppercaseCharacter?: boolean;\n containsNumericCharacter?: boolean;\n containsNonAlphanumericCharacter?: boolean;\n };\n allowedNonAlphanumericCharacters?: string[];\n enforcementState: string;\n forceUpgradeOnSignin?: boolean;\n schemaVersion: number;\n}\n\n/**\n * Fetches the password policy for the currently set tenant or the project if no tenant is set.\n *\n * @param auth Auth object.\n * @param request Password policy request.\n * @returns Password policy response.\n */\nexport async function _getPasswordPolicy(\n auth: Auth,\n request: GetPasswordPolicyRequest = {}\n): Promise<GetPasswordPolicyResponse> {\n return _performApiRequest<\n GetPasswordPolicyRequest,\n GetPasswordPolicyResponse\n >(\n auth,\n HttpMethod.GET,\n Endpoint.GET_PASSWORD_POLICY,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2023 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GetPasswordPolicyResponse } from '../../api/password_policy/get_password_policy';\nimport {\n PasswordPolicyCustomStrengthOptions,\n PasswordPolicyInternal,\n PasswordValidationStatusInternal\n} from '../../model/password_policy';\nimport { PasswordValidationStatus } from '../../model/public_types';\n\n// Minimum min password length enforced by the backend, even if no minimum length is set.\nconst MINIMUM_MIN_PASSWORD_LENGTH = 6;\n\n/**\n * Stores password policy requirements and provides password validation against the policy.\n *\n * @internal\n */\nexport class PasswordPolicyImpl implements PasswordPolicyInternal {\n readonly customStrengthOptions: PasswordPolicyCustomStrengthOptions;\n readonly allowedNonAlphanumericCharacters: string;\n readonly enforcementState: string;\n readonly forceUpgradeOnSignin: boolean;\n readonly schemaVersion: number;\n\n constructor(response: GetPasswordPolicyResponse) {\n // Only include custom strength options defined in the response.\n const responseOptions = response.customStrengthOptions;\n this.customStrengthOptions = {};\n // TODO: Remove once the backend is updated to include the minimum min password length instead of undefined when there is no minimum length set.\n this.customStrengthOptions.minPasswordLength =\n responseOptions.minPasswordLength ?? MINIMUM_MIN_PASSWORD_LENGTH;\n if (responseOptions.maxPasswordLength) {\n this.customStrengthOptions.maxPasswordLength =\n responseOptions.maxPasswordLength;\n }\n if (responseOptions.containsLowercaseCharacter !== undefined) {\n this.customStrengthOptions.containsLowercaseLetter =\n responseOptions.containsLowercaseCharacter;\n }\n if (responseOptions.containsUppercaseCharacter !== undefined) {\n this.customStrengthOptions.containsUppercaseLetter =\n responseOptions.containsUppercaseCharacter;\n }\n if (responseOptions.containsNumericCharacter !== undefined) {\n this.customStrengthOptions.containsNumericCharacter =\n responseOptions.containsNumericCharacter;\n }\n if (responseOptions.containsNonAlphanumericCharacter !== undefined) {\n this.customStrengthOptions.containsNonAlphanumericCharacter =\n responseOptions.containsNonAlphanumericCharacter;\n }\n\n this.enforcementState = response.enforcementState;\n if (this.enforcementState === 'ENFORCEMENT_STATE_UNSPECIFIED') {\n this.enforcementState = 'OFF';\n }\n\n // Use an empty string if no non-alphanumeric characters are specified in the response.\n this.allowedNonAlphanumericCharacters =\n response.allowedNonAlphanumericCharacters?.join('') ?? '';\n\n this.forceUpgradeOnSignin = response.forceUpgradeOnSignin ?? false;\n this.schemaVersion = response.schemaVersion;\n }\n\n validatePassword(password: string): PasswordValidationStatus {\n const status: PasswordValidationStatusInternal = {\n isValid: true,\n passwordPolicy: this\n };\n\n // Check the password length and character options.\n this.validatePasswordLengthOptions(password, status);\n this.validatePasswordCharacterOptions(password, status);\n\n // Combine the status into single isValid property.\n status.isValid &&= status.meetsMinPasswordLength ?? true;\n status.isValid &&= status.meetsMaxPasswordLength ?? true;\n status.isValid &&= status.containsLowercaseLetter ?? true;\n status.isValid &&= status.containsUppercaseLetter ?? true;\n status.isValid &&= status.containsNumericCharacter ?? true;\n status.isValid &&= status.containsNonAlphanumericCharacter ?? true;\n\n return status;\n }\n\n /**\n * Validates that the password meets the length options for the policy.\n *\n * @param password Password to validate.\n * @param status Validation status.\n */\n private validatePasswordLengthOptions(\n password: string,\n status: PasswordValidationStatusInternal\n ): void {\n const minPasswordLength = this.customStrengthOptions.minPasswordLength;\n const maxPasswordLength = this.customStrengthOptions.maxPasswordLength;\n if (minPasswordLength) {\n status.meetsMinPasswordLength = password.length >= minPasswordLength;\n }\n if (maxPasswordLength) {\n status.meetsMaxPasswordLength = password.length <= maxPasswordLength;\n }\n }\n\n /**\n * Validates that the password meets the character options for the policy.\n *\n * @param password Password to validate.\n * @param status Validation status.\n */\n private validatePasswordCharacterOptions(\n password: string,\n status: PasswordValidationStatusInternal\n ): void {\n // Assign statuses for requirements even if the password is an empty string.\n this.updatePasswordCharacterOptionsStatuses(\n status,\n /* containsLowercaseCharacter= */ false,\n /* containsUppercaseCharacter= */ false,\n /* containsNumericCharacter= */ false,\n /* containsNonAlphanumericCharacter= */ false\n );\n\n let passwordChar;\n for (let i = 0; i < password.length; i++) {\n passwordChar = password.charAt(i);\n this.updatePasswordCharacterOptionsStatuses(\n status,\n /* containsLowercaseCharacter= */ passwordChar >= 'a' &&\n passwordChar <= 'z',\n /* containsUppercaseCharacter= */ passwordChar >= 'A' &&\n passwordChar <= 'Z',\n /* containsNumericCharacter= */ passwordChar >= '0' &&\n passwordChar <= '9',\n /* containsNonAlphanumericCharacter= */ this.allowedNonAlphanumericCharacters.includes(\n passwordChar\n )\n );\n }\n }\n\n /**\n * Updates the running validation status with the statuses for the character options.\n * Expected to be called each time a character is processed to update each option status\n * based on the current character.\n *\n * @param status Validation status.\n * @param containsLowercaseCharacter Whether the character is a lowercase letter.\n * @param containsUppercaseCharacter Whether the character is an uppercase letter.\n * @param containsNumericCharacter Whether the character is a numeric character.\n * @param containsNonAlphanumericCharacter Whether the character is a non-alphanumeric character.\n */\n private updatePasswordCharacterOptionsStatuses(\n status: PasswordValidationStatusInternal,\n containsLowercaseCharacter: boolean,\n containsUppercaseCharacter: boolean,\n containsNumericCharacter: boolean,\n containsNonAlphanumericCharacter: boolean\n ): void {\n if (this.customStrengthOptions.containsLowercaseLetter) {\n status.containsLowercaseLetter ||= containsLowercaseCharacter;\n }\n if (this.customStrengthOptions.containsUppercaseLetter) {\n status.containsUppercaseLetter ||= containsUppercaseCharacter;\n }\n if (this.customStrengthOptions.containsNumericCharacter) {\n status.containsNumericCharacter ||= containsNumericCharacter;\n }\n if (this.customStrengthOptions.containsNonAlphanumericCharacter) {\n status.containsNonAlphanumericCharacter ||=\n containsNonAlphanumericCharacter;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _FirebaseService, FirebaseApp } from '@firebase/app';\nimport { Provider } from '@firebase/component';\nimport { AppCheckInternalComponentName } from '@firebase/app-check-interop-types';\nimport {\n Auth,\n AuthErrorMap,\n AuthSettings,\n EmulatorConfig,\n NextOrObserver,\n Persistence,\n PopupRedirectResolver,\n User,\n UserCredential,\n CompleteFn,\n ErrorFn,\n NextFn,\n Unsubscribe,\n PasswordValidationStatus\n} from '../../model/public_types';\nimport {\n createSubscribe,\n ErrorFactory,\n FirebaseError,\n getModularInstance,\n Observer,\n Subscribe\n} from '@firebase/util';\n\nimport { AuthInternal, ConfigInternal } from '../../model/auth';\nimport { PopupRedirectResolverInternal } from '../../model/popup_redirect';\nimport { UserInternal } from '../../model/user';\nimport {\n AuthErrorCode,\n AuthErrorParams,\n ErrorMapRetriever,\n _DEFAULT_AUTH_ERROR_FACTORY\n} from '../errors';\nimport { PersistenceInternal } from '../persistence';\nimport {\n KeyName,\n PersistenceUserManager\n} from '../persistence/persistence_user_manager';\nimport { _reloadWithoutSaving } from '../user/reload';\nimport { _assert } from '../util/assert';\nimport { _getInstance } from '../util/instantiator';\nimport { _getUserLanguage } from '../util/navigator';\nimport { _getClientVersion } from '../util/version';\nimport { HttpHeader } from '../../api';\nimport { AuthMiddlewareQueue } from './middleware';\nimport { RecaptchaConfig } from '../../platform_browser/recaptcha/recaptcha';\nimport { _logWarn } from '../util/log';\nimport { _getPasswordPolicy } from '../../api/password_policy/get_password_policy';\nimport { PasswordPolicyInternal } from '../../model/password_policy';\nimport { PasswordPolicyImpl } from './password_policy_impl';\n\ninterface AsyncAction {\n (): Promise<void>;\n}\n\nexport const enum DefaultConfig {\n TOKEN_API_HOST = 'securetoken.googleapis.com',\n API_HOST = 'identitytoolkit.googleapis.com',\n API_SCHEME = 'https'\n}\n\nexport class AuthImpl implements AuthInternal, _FirebaseService {\n currentUser: User | null = null;\n emulatorConfig: EmulatorConfig | null = null;\n private operations = Promise.resolve();\n private persistenceManager?: PersistenceUserManager;\n private redirectPersistenceManager?: PersistenceUserManager;\n private authStateSubscription = new Subscription<User>(this);\n private idTokenSubscription = new Subscription<User>(this);\n private readonly beforeStateQueue = new AuthMiddlewareQueue(this);\n private redirectUser: UserInternal | null = null;\n private isProactiveRefreshEnabled = false;\n private readonly EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION: number = 1;\n\n // Any network calls will set this to true and prevent subsequent emulator\n // initialization\n _canInitEmulator = true;\n _isInitialized = false;\n _deleted = false;\n _initializationPromise: Promise<void> | null = null;\n _popupRedirectResolver: PopupRedirectResolverInternal | null = null;\n _errorFactory: ErrorFactory<AuthErrorCode, AuthErrorParams> =\n _DEFAULT_AUTH_ERROR_FACTORY;\n _agentRecaptchaConfig: RecaptchaConfig | null = null;\n _tenantRecaptchaConfigs: Record<string, RecaptchaConfig> = {};\n _projectPasswordPolicy: PasswordPolicyInternal | null = null;\n _tenantPasswordPolicies: Record<string, PasswordPolicyInternal> = {};\n readonly name: string;\n\n // Tracks the last notified UID for state change listeners to prevent\n // repeated calls to the callbacks. Undefined means it's never been\n // called, whereas null means it's been called with a signed out user\n private lastNotifiedUid: string | null | undefined = undefined;\n\n languageCode: string | null = null;\n tenantId: string | null = null;\n settings: AuthSettings = { appVerificationDisabledForTesting: false };\n\n constructor(\n public readonly app: FirebaseApp,\n private readonly heartbeatServiceProvider: Provider<'heartbeat'>,\n private readonly appCheckServiceProvider: Provider<AppCheckInternalComponentName>,\n public readonly config: ConfigInternal\n ) {\n this.name = app.name;\n this.clientVersion = config.sdkClientVersion;\n }\n\n _initializeWithPersistence(\n persistenceHierarchy: PersistenceInternal[],\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise<void> {\n if (popupRedirectResolver) {\n this._popupRedirectResolver = _getInstance(popupRedirectResolver);\n }\n\n // Have to check for app deletion throughout initialization (after each\n // promise resolution)\n this._initializationPromise = this.queue(async () => {\n if (this._deleted) {\n return;\n }\n\n this.persistenceManager = await PersistenceUserManager.create(\n this,\n persistenceHierarchy\n );\n\n if (this._deleted) {\n return;\n }\n\n // Initialize the resolver early if necessary (only applicable to web:\n // this will cause the iframe to load immediately in certain cases)\n if (this._popupRedirectResolver?._shouldInitProactively) {\n // If this fails, don't halt auth loading\n try {\n await this._popupRedirectResolver._initialize(this);\n } catch (e) {\n /* Ignore the error */\n }\n }\n\n await this.initializeCurrentUser(popupRedirectResolver);\n this.lastNotifiedUid = this.currentUser?.uid || null;\n\n if (this._deleted) {\n return;\n }\n\n this._isInitialized = true;\n });\n\n return this._initializationPromise;\n }\n\n /**\n * If the persistence is changed in another window, the user manager will let us know\n */\n async _onStorageEvent(): Promise<void> {\n if (this._deleted) {\n return;\n }\n\n const user = await this.assertedPersistence.getCurrentUser();\n\n if (!this.currentUser && !user) {\n // No change, do nothing (was signed out and remained signed out).\n return;\n }\n\n // If the same user is to be synchronized.\n if (this.currentUser && user && this.currentUser.uid === user.uid) {\n // Data update, simply copy data changes.\n this._currentUser._assign(user);\n // If tokens changed from previous user tokens, this will trigger\n // notifyAuthListeners_.\n await this.currentUser.getIdToken();\n return;\n }\n\n // Update current Auth state. Either a new login or logout.\n // Skip blocking callbacks, they should not apply to a change in another tab.\n await this._updateCurrentUser(user, /* skipBeforeStateCallbacks */ true);\n }\n\n private async initializeCurrentUser(\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise<void> {\n // First check to see if we have a pending redirect event.\n const previouslyStoredUser =\n (await this.assertedPersistence.getCurrentUser()) as UserInternal | null;\n let futureCurrentUser = previouslyStoredUser;\n let needsTocheckMiddleware = false;\n if (popupRedirectResolver && this.config.authDomain) {\n await this.getOrInitRedirectPersistenceManager();\n const redirectUserEventId = this.redirectUser?._redirectEventId;\n const storedUserEventId = futureCurrentUser?._redirectEventId;\n const result = await this.tryRedirectSignIn(popupRedirectResolver);\n\n // If the stored user (i.e. the old \"currentUser\") has a redirectId that\n // matches the redirect user, then we want to initially sign in with the\n // new user object from result.\n // TODO(samgho): More thoroughly test all of this\n if (\n (!redirectUserEventId || redirectUserEventId === storedUserEventId) &&\n result?.user\n ) {\n futureCurrentUser = result.user as UserInternal;\n needsTocheckMiddleware = true;\n }\n }\n\n // If no user in persistence, there is no current user. Set to null.\n if (!futureCurrentUser) {\n return this.directlySetCurrentUser(null);\n }\n\n if (!futureCurrentUser._redirectEventId) {\n // This isn't a redirect link operation, we can reload and bail.\n // First though, ensure that we check the middleware is happy.\n if (needsTocheckMiddleware) {\n try {\n await this.beforeStateQueue.runMiddleware(futureCurrentUser);\n } catch (e) {\n futureCurrentUser = previouslyStoredUser;\n // We know this is available since the bit is only set when the\n // resolver is available\n this._popupRedirectResolver!._overrideRedirectResult(this, () =>\n Promise.reject(e)\n );\n }\n }\n\n if (futureCurrentUser) {\n return this.reloadAndSetCurrentUserOrClear(futureCurrentUser);\n } else {\n return this.directlySetCurrentUser(null);\n }\n }\n\n _assert(this._popupRedirectResolver, this, AuthErrorCode.ARGUMENT_ERROR);\n await this.getOrInitRedirectPersistenceManager();\n\n // If the redirect user's event ID matches the current user's event ID,\n // DO NOT reload the current user, otherwise they'll be cleared from storage.\n // This is important for the reauthenticateWithRedirect() flow.\n if (\n this.redirectUser &&\n this.redirectUser._redirectEventId === futureCurrentUser._redirectEventId\n ) {\n return this.directlySetCurrentUser(futureCurrentUser);\n }\n\n return this.reloadAndSetCurrentUserOrClear(futureCurrentUser);\n }\n\n private async tryRedirectSignIn(\n redirectResolver: PopupRedirectResolver\n ): Promise<UserCredential | null> {\n // The redirect user needs to be checked (and signed in if available)\n // during auth initialization. All of the normal sign in and link/reauth\n // flows call back into auth and push things onto the promise queue. We\n // need to await the result of the redirect sign in *inside the promise\n // queue*. This presents a problem: we run into deadlock. See:\n // ┌> [Initialization] ─────┐\n // ┌> [<other queue tasks>] │\n // └─ [getRedirectResult] <─┘\n // where [] are tasks on the queue and arrows denote awaits\n // Initialization will never complete because it's waiting on something\n // that's waiting for initialization to complete!\n //\n // Instead, this method calls getRedirectResult() (stored in\n // _completeRedirectFn) with an optional parameter that instructs all of\n // the underlying auth operations to skip anything that mutates auth state.\n\n let result: UserCredential | null = null;\n try {\n // We know this._popupRedirectResolver is set since redirectResolver\n // is passed in. The _completeRedirectFn expects the unwrapped extern.\n result = await this._popupRedirectResolver!._completeRedirectFn(\n this,\n redirectResolver,\n true\n );\n } catch (e) {\n // Swallow any errors here; the code can retrieve them in\n // getRedirectResult().\n await this._setRedirectUser(null);\n }\n\n return result;\n }\n\n private async reloadAndSetCurrentUserOrClear(\n user: UserInternal\n ): Promise<void> {\n try {\n await _reloadWithoutSaving(user);\n } catch (e) {\n if (\n (e as FirebaseError)?.code !==\n `auth/${AuthErrorCode.NETWORK_REQUEST_FAILED}`\n ) {\n // Something's wrong with the user's token. Log them out and remove\n // them from storage\n return this.directlySetCurrentUser(null);\n }\n }\n\n return this.directlySetCurrentUser(user);\n }\n\n useDeviceLanguage(): void {\n this.languageCode = _getUserLanguage();\n }\n\n async _delete(): Promise<void> {\n this._deleted = true;\n }\n\n async updateCurrentUser(userExtern: User | null): Promise<void> {\n // The public updateCurrentUser method needs to make a copy of the user,\n // and also check that the project matches\n const user = userExtern\n ? (getModularInstance(userExtern) as UserInternal)\n : null;\n if (user) {\n _assert(\n user.auth.config.apiKey === this.config.apiKey,\n this,\n AuthErrorCode.INVALID_AUTH\n );\n }\n return this._updateCurrentUser(user && user._clone(this));\n }\n\n async _updateCurrentUser(\n user: User | null,\n skipBeforeStateCallbacks: boolean = false\n ): Promise<void> {\n if (this._deleted) {\n return;\n }\n if (user) {\n _assert(\n this.tenantId === user.tenantId,\n this,\n AuthErrorCode.TENANT_ID_MISMATCH\n );\n }\n\n if (!skipBeforeStateCallbacks) {\n await this.beforeStateQueue.runMiddleware(user);\n }\n\n return this.queue(async () => {\n await this.directlySetCurrentUser(user as UserInternal | null);\n this.notifyAuthListeners();\n });\n }\n\n async signOut(): Promise<void> {\n // Run first, to block _setRedirectUser() if any callbacks fail.\n await this.beforeStateQueue.runMiddleware(null);\n // Clear the redirect user when signOut is called\n if (this.redirectPersistenceManager || this._popupRedirectResolver) {\n await this._setRedirectUser(null);\n }\n\n // Prevent callbacks from being called again in _updateCurrentUser, as\n // they were already called in the first line.\n return this._updateCurrentUser(null, /* skipBeforeStateCallbacks */ true);\n }\n\n setPersistence(persistence: Persistence): Promise<void> {\n return this.queue(async () => {\n await this.assertedPersistence.setPersistence(_getInstance(persistence));\n });\n }\n\n _getRecaptchaConfig(): RecaptchaConfig | null {\n if (this.tenantId == null) {\n return this._agentRecaptchaConfig;\n } else {\n return this._tenantRecaptchaConfigs[this.tenantId];\n }\n }\n\n async validatePassword(password: string): Promise<PasswordValidationStatus> {\n if (!this._getPasswordPolicyInternal()) {\n await this._updatePasswordPolicy();\n }\n\n // Password policy will be defined after fetching.\n const passwordPolicy: PasswordPolicyInternal =\n this._getPasswordPolicyInternal()!;\n\n // Check that the policy schema version is supported by the SDK.\n // TODO: Update this logic to use a max supported policy schema version once we have multiple schema versions.\n if (\n passwordPolicy.schemaVersion !==\n this.EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION\n ) {\n return Promise.reject(\n this._errorFactory.create(\n AuthErrorCode.UNSUPPORTED_PASSWORD_POLICY_SCHEMA_VERSION,\n {}\n )\n );\n }\n\n return passwordPolicy.validatePassword(password);\n }\n\n _getPasswordPolicyInternal(): PasswordPolicyInternal | null {\n if (this.tenantId === null) {\n return this._projectPasswordPolicy;\n } else {\n return this._tenantPasswordPolicies[this.tenantId];\n }\n }\n\n async _updatePasswordPolicy(): Promise<void> {\n const response = await _getPasswordPolicy(this);\n\n const passwordPolicy: PasswordPolicyInternal = new PasswordPolicyImpl(\n response\n );\n\n if (this.tenantId === null) {\n this._projectPasswordPolicy = passwordPolicy;\n } else {\n this._tenantPasswordPolicies[this.tenantId] = passwordPolicy;\n }\n }\n\n _getPersistence(): string {\n return this.assertedPersistence.persistence.type;\n }\n\n _updateErrorMap(errorMap: AuthErrorMap): void {\n this._errorFactory = new ErrorFactory<AuthErrorCode, AuthErrorParams>(\n 'auth',\n 'Firebase',\n (errorMap as ErrorMapRetriever)()\n );\n }\n\n onAuthStateChanged(\n nextOrObserver: NextOrObserver<User>,\n error?: ErrorFn,\n completed?: CompleteFn\n ): Unsubscribe {\n return this.registerStateListener(\n this.authStateSubscription,\n nextOrObserver,\n error,\n completed\n );\n }\n\n beforeAuthStateChanged(\n callback: (user: User | null) => void | Promise<void>,\n onAbort?: () => void\n ): Unsubscribe {\n return this.beforeStateQueue.pushCallback(callback, onAbort);\n }\n\n onIdTokenChanged(\n nextOrObserver: NextOrObserver<User>,\n error?: ErrorFn,\n completed?: CompleteFn\n ): Unsubscribe {\n return this.registerStateListener(\n this.idTokenSubscription,\n nextOrObserver,\n error,\n completed\n );\n }\n\n authStateReady(): Promise<void> {\n return new Promise((resolve, reject) => {\n if (this.currentUser) {\n resolve();\n } else {\n const unsubscribe = this.onAuthStateChanged(() => {\n unsubscribe();\n resolve();\n }, reject);\n }\n });\n }\n\n toJSON(): object {\n return {\n apiKey: this.config.apiKey,\n authDomain: this.config.authDomain,\n appName: this.name,\n currentUser: this._currentUser?.toJSON()\n };\n }\n\n async _setRedirectUser(\n user: UserInternal | null,\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise<void> {\n const redirectManager = await this.getOrInitRedirectPersistenceManager(\n popupRedirectResolver\n );\n return user === null\n ? redirectManager.removeCurrentUser()\n : redirectManager.setCurrentUser(user);\n }\n\n private async getOrInitRedirectPersistenceManager(\n popupRedirectResolver?: PopupRedirectResolver\n ): Promise<PersistenceUserManager> {\n if (!this.redirectPersistenceManager) {\n const resolver: PopupRedirectResolverInternal | null =\n (popupRedirectResolver && _getInstance(popupRedirectResolver)) ||\n this._popupRedirectResolver;\n _assert(resolver, this, AuthErrorCode.ARGUMENT_ERROR);\n this.redirectPersistenceManager = await PersistenceUserManager.create(\n this,\n [_getInstance(resolver._redirectPersistence)],\n KeyName.REDIRECT_USER\n );\n this.redirectUser =\n await this.redirectPersistenceManager.getCurrentUser();\n }\n\n return this.redirectPersistenceManager;\n }\n\n async _redirectUserForId(id: string): Promise<UserInternal | null> {\n // Make sure we've cleared any pending persistence actions if we're not in\n // the initializer\n if (this._isInitialized) {\n await this.queue(async () => {});\n }\n\n if (this._currentUser?._redirectEventId === id) {\n return this._currentUser;\n }\n\n if (this.redirectUser?._redirectEventId === id) {\n return this.redirectUser;\n }\n\n return null;\n }\n\n async _persistUserIfCurrent(user: UserInternal): Promise<void> {\n if (user === this.currentUser) {\n return this.queue(async () => this.directlySetCurrentUser(user));\n }\n }\n\n /** Notifies listeners only if the user is current */\n _notifyListenersIfCurrent(user: UserInternal): void {\n if (user === this.currentUser) {\n this.notifyAuthListeners();\n }\n }\n\n _key(): string {\n return `${this.config.authDomain}:${this.config.apiKey}:${this.name}`;\n }\n\n _startProactiveRefresh(): void {\n this.isProactiveRefreshEnabled = true;\n if (this.currentUser) {\n this._currentUser._startProactiveRefresh();\n }\n }\n\n _stopProactiveRefresh(): void {\n this.isProactiveRefreshEnabled = false;\n if (this.currentUser) {\n this._currentUser._stopProactiveRefresh();\n }\n }\n\n /** Returns the current user cast as the internal type */\n get _currentUser(): UserInternal {\n return this.currentUser as UserInternal;\n }\n\n private notifyAuthListeners(): void {\n if (!this._isInitialized) {\n return;\n }\n\n this.idTokenSubscription.next(this.currentUser);\n\n const currentUid = this.currentUser?.uid ?? null;\n if (this.lastNotifiedUid !== currentUid) {\n this.lastNotifiedUid = currentUid;\n this.authStateSubscription.next(this.currentUser);\n }\n }\n\n private registerStateListener(\n subscription: Subscription<User>,\n nextOrObserver: NextOrObserver<User>,\n error?: ErrorFn,\n completed?: CompleteFn\n ): Unsubscribe {\n if (this._deleted) {\n return () => {};\n }\n\n const cb =\n typeof nextOrObserver === 'function'\n ? nextOrObserver\n : nextOrObserver.next.bind(nextOrObserver);\n\n let isUnsubscribed = false;\n\n const promise = this._isInitialized\n ? Promise.resolve()\n : this._initializationPromise;\n _assert(promise, this, AuthErrorCode.INTERNAL_ERROR);\n // The callback needs to be called asynchronously per the spec.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n promise.then(() => {\n if (isUnsubscribed) {\n return;\n }\n cb(this.currentUser);\n });\n\n if (typeof nextOrObserver === 'function') {\n const unsubscribe = subscription.addObserver(\n nextOrObserver,\n error,\n completed\n );\n return () => {\n isUnsubscribed = true;\n unsubscribe();\n };\n } else {\n const unsubscribe = subscription.addObserver(nextOrObserver);\n return () => {\n isUnsubscribed = true;\n unsubscribe();\n };\n }\n }\n\n /**\n * Unprotected (from race conditions) method to set the current user. This\n * should only be called from within a queued callback. This is necessary\n * because the queue shouldn't rely on another queued callback.\n */\n private async directlySetCurrentUser(\n user: UserInternal | null\n ): Promise<void> {\n if (this.currentUser && this.currentUser !== user) {\n this._currentUser._stopProactiveRefresh();\n }\n if (user && this.isProactiveRefreshEnabled) {\n user._startProactiveRefresh();\n }\n\n this.currentUser = user;\n\n if (user) {\n await this.assertedPersistence.setCurrentUser(user);\n } else {\n await this.assertedPersistence.removeCurrentUser();\n }\n }\n\n private queue(action: AsyncAction): Promise<void> {\n // In case something errors, the callback still should be called in order\n // to keep the promise chain alive\n this.operations = this.operations.then(action, action);\n return this.operations;\n }\n\n private get assertedPersistence(): PersistenceUserManager {\n _assert(this.persistenceManager, this, AuthErrorCode.INTERNAL_ERROR);\n return this.persistenceManager;\n }\n\n private frameworks: string[] = [];\n private clientVersion: string;\n _logFramework(framework: string): void {\n if (!framework || this.frameworks.includes(framework)) {\n return;\n }\n this.frameworks.push(framework);\n\n // Sort alphabetically so that \"FirebaseCore-web,FirebaseUI-web\" and\n // \"FirebaseUI-web,FirebaseCore-web\" aren't viewed as different.\n this.frameworks.sort();\n this.clientVersion = _getClientVersion(\n this.config.clientPlatform,\n this._getFrameworks()\n );\n }\n _getFrameworks(): readonly string[] {\n return this.frameworks;\n }\n async _getAdditionalHeaders(): Promise<Record<string, string>> {\n // Additional headers on every request\n const headers: Record<string, string> = {\n [HttpHeader.X_CLIENT_VERSION]: this.clientVersion\n };\n\n if (this.app.options.appId) {\n headers[HttpHeader.X_FIREBASE_GMPID] = this.app.options.appId;\n }\n\n // If the heartbeat service exists, add the heartbeat string\n const heartbeatsHeader = await this.heartbeatServiceProvider\n .getImmediate({\n optional: true\n })\n ?.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers[HttpHeader.X_FIREBASE_CLIENT] = heartbeatsHeader;\n }\n\n // If the App Check service exists, add the App Check token in the headers\n const appCheckToken = await this._getAppCheckToken();\n if (appCheckToken) {\n headers[HttpHeader.X_FIREBASE_APP_CHECK] = appCheckToken;\n }\n\n return headers;\n }\n\n async _getAppCheckToken(): Promise<string | undefined> {\n const appCheckTokenResult = await this.appCheckServiceProvider\n .getImmediate({ optional: true })\n ?.getToken();\n if (appCheckTokenResult?.error) {\n // Context: appCheck.getToken() will never throw even if an error happened.\n // In the error case, a dummy token will be returned along with an error field describing\n // the error. In general, we shouldn't care about the error condition and just use\n // the token (actual or dummy) to send requests.\n _logWarn(\n `Error while retrieving App Check token: ${appCheckTokenResult.error}`\n );\n }\n return appCheckTokenResult?.token;\n }\n}\n\n/**\n * Method to be used to cast down to our private implmentation of Auth.\n * It will also handle unwrapping from the compat type if necessary\n *\n * @param auth Auth object passed in from developer\n */\nexport function _castAuth(auth: Auth): AuthInternal {\n return getModularInstance(auth) as AuthInternal;\n}\n\n/** Helper class to wrap subscriber logic */\nclass Subscription<T> {\n private observer: Observer<T | null> | null = null;\n readonly addObserver: Subscribe<T | null> = createSubscribe(\n observer => (this.observer = observer)\n );\n\n constructor(readonly auth: AuthInternal) {}\n\n get next(): NextFn<T | null> {\n _assert(this.observer, this.auth, AuthErrorCode.INTERNAL_ERROR);\n return this.observer.next.bind(this.observer);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../core/errors';\nimport { _createError } from '../core/util/assert';\n\nfunction getScriptParentElement(): HTMLDocument | HTMLHeadElement {\n return document.getElementsByTagName('head')?.[0] ?? document;\n}\n\nexport function _loadJS(url: string): Promise<Event> {\n // TODO: consider adding timeout support & cancellation\n return new Promise((resolve, reject) => {\n const el = document.createElement('script');\n el.setAttribute('src', url);\n el.onload = resolve;\n el.onerror = e => {\n const error = _createError(AuthErrorCode.INTERNAL_ERROR);\n error.customData = e as unknown as Record<string, unknown>;\n reject(error);\n };\n el.type = 'text/javascript';\n el.charset = 'UTF-8';\n getScriptParentElement().appendChild(el);\n });\n}\n\nexport function _generateCallbackName(prefix: string): string {\n return `__${prefix}${Math.floor(Math.random() * 1000000)}`;\n}\n","/* eslint-disable @typescript-eslint/no-require-imports */\n/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isEnterprise, RecaptchaConfig } from './recaptcha';\nimport { getRecaptchaConfig } from '../../api/authentication/recaptcha';\nimport {\n RecaptchaClientType,\n RecaptchaVersion,\n RecaptchaActionName\n} from '../../api';\n\nimport { Auth } from '../../model/public_types';\nimport { AuthInternal } from '../../model/auth';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport * as jsHelpers from '../load_js';\n\nconst RECAPTCHA_ENTERPRISE_URL =\n 'https://www.google.com/recaptcha/enterprise.js?render=';\n\nexport const RECAPTCHA_ENTERPRISE_VERIFIER_TYPE = 'recaptcha-enterprise';\nexport const FAKE_TOKEN = 'NO_RECAPTCHA';\n\nexport class RecaptchaEnterpriseVerifier {\n /**\n * Identifies the type of application verifier (e.g. \"recaptcha-enterprise\").\n */\n readonly type = RECAPTCHA_ENTERPRISE_VERIFIER_TYPE;\n\n private readonly auth: AuthInternal;\n\n /**\n *\n * @param authExtern - The corresponding Firebase {@link Auth} instance.\n *\n */\n constructor(authExtern: Auth) {\n this.auth = _castAuth(authExtern);\n }\n\n /**\n * Executes the verification process.\n *\n * @returns A Promise for a token that can be used to assert the validity of a request.\n */\n async verify(\n action: string = 'verify',\n forceRefresh = false\n ): Promise<string> {\n async function retrieveSiteKey(auth: AuthInternal): Promise<string> {\n if (!forceRefresh) {\n if (auth.tenantId == null && auth._agentRecaptchaConfig != null) {\n return auth._agentRecaptchaConfig.siteKey;\n }\n if (\n auth.tenantId != null &&\n auth._tenantRecaptchaConfigs[auth.tenantId] !== undefined\n ) {\n return auth._tenantRecaptchaConfigs[auth.tenantId].siteKey;\n }\n }\n\n return new Promise<string>(async (resolve, reject) => {\n getRecaptchaConfig(auth, {\n clientType: RecaptchaClientType.WEB,\n version: RecaptchaVersion.ENTERPRISE\n })\n .then(response => {\n if (response.recaptchaKey === undefined) {\n reject(new Error('recaptcha Enterprise site key undefined'));\n } else {\n const config = new RecaptchaConfig(response);\n if (auth.tenantId == null) {\n auth._agentRecaptchaConfig = config;\n } else {\n auth._tenantRecaptchaConfigs[auth.tenantId] = config;\n }\n return resolve(config.siteKey);\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n\n function retrieveRecaptchaToken(\n siteKey: string,\n resolve: (value: string | PromiseLike<string>) => void,\n reject: (reason?: unknown) => void\n ): void {\n const grecaptcha = window.grecaptcha;\n if (isEnterprise(grecaptcha)) {\n grecaptcha.enterprise.ready(() => {\n grecaptcha.enterprise\n .execute(siteKey, { action })\n .then(token => {\n resolve(token);\n })\n .catch(() => {\n resolve(FAKE_TOKEN);\n });\n });\n } else {\n reject(Error('No reCAPTCHA enterprise script loaded.'));\n }\n }\n\n return new Promise<string>((resolve, reject) => {\n retrieveSiteKey(this.auth)\n .then(siteKey => {\n if (!forceRefresh && isEnterprise(window.grecaptcha)) {\n retrieveRecaptchaToken(siteKey, resolve, reject);\n } else {\n if (typeof window === 'undefined') {\n reject(\n new Error('RecaptchaVerifier is only supported in browser')\n );\n return;\n }\n jsHelpers\n ._loadJS(RECAPTCHA_ENTERPRISE_URL + siteKey)\n .then(() => {\n retrieveRecaptchaToken(siteKey, resolve, reject);\n })\n .catch(error => {\n reject(error);\n });\n }\n })\n .catch(error => {\n reject(error);\n });\n });\n }\n}\n\nexport async function injectRecaptchaFields<T>(\n auth: AuthInternal,\n request: T,\n action: RecaptchaActionName,\n captchaResp = false\n): Promise<T> {\n const verifier = new RecaptchaEnterpriseVerifier(auth);\n let captchaResponse;\n try {\n captchaResponse = await verifier.verify(action);\n } catch (error) {\n captchaResponse = await verifier.verify(action, true);\n }\n const newRequest = { ...request };\n if (!captchaResp) {\n Object.assign(newRequest, { captchaResponse });\n } else {\n Object.assign(newRequest, { 'captchaResp': captchaResponse });\n }\n Object.assign(newRequest, { 'clientType': RecaptchaClientType.WEB });\n Object.assign(newRequest, {\n 'recaptchaVersion': RecaptchaVersion.ENTERPRISE\n });\n return newRequest;\n}\n\nexport async function _initializeRecaptchaConfig(auth: Auth): Promise<void> {\n const authInternal = _castAuth(auth);\n\n const response = await getRecaptchaConfig(authInternal, {\n clientType: RecaptchaClientType.WEB,\n version: RecaptchaVersion.ENTERPRISE\n });\n\n const config = new RecaptchaConfig(response);\n if (authInternal.tenantId == null) {\n authInternal._agentRecaptchaConfig = config;\n } else {\n authInternal._tenantRecaptchaConfigs[authInternal.tenantId] = config;\n }\n\n if (config.emailPasswordEnabled) {\n const verifier = new RecaptchaEnterpriseVerifier(authInternal);\n void verifier.verify();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getProvider, FirebaseApp } from '@firebase/app';\nimport { deepEqual } from '@firebase/util';\nimport { Auth, Dependencies } from '../../model/public_types';\n\nimport { AuthErrorCode } from '../errors';\nimport { PersistenceInternal } from '../persistence';\nimport { _fail } from '../util/assert';\nimport { _getInstance } from '../util/instantiator';\nimport { AuthImpl } from './auth_impl';\n\n/**\n * Initializes an {@link Auth} instance with fine-grained control over\n * {@link Dependencies}.\n *\n * @remarks\n *\n * This function allows more control over the {@link Auth} instance than\n * {@link getAuth}. `getAuth` uses platform-specific defaults to supply\n * the {@link Dependencies}. In general, `getAuth` is the easiest way to\n * initialize Auth and works for most use cases. Use `initializeAuth` if you\n * need control over which persistence layer is used, or to minimize bundle\n * size if you're not using either `signInWithPopup` or `signInWithRedirect`.\n *\n * For example, if your app only uses anonymous accounts and you only want\n * accounts saved for the current session, initialize `Auth` with:\n *\n * ```js\n * const auth = initializeAuth(app, {\n * persistence: browserSessionPersistence,\n * popupRedirectResolver: undefined,\n * });\n * ```\n *\n * @public\n */\nexport function initializeAuth(app: FirebaseApp, deps?: Dependencies): Auth {\n const provider = _getProvider(app, 'auth');\n\n if (provider.isInitialized()) {\n const auth = provider.getImmediate() as AuthImpl;\n const initialOptions = provider.getOptions() as Dependencies;\n if (deepEqual(initialOptions, deps ?? {})) {\n return auth;\n } else {\n _fail(auth, AuthErrorCode.ALREADY_INITIALIZED);\n }\n }\n\n const auth = provider.initialize({ options: deps }) as AuthImpl;\n\n return auth;\n}\n\nexport function _initializeAuthInstance(\n auth: AuthImpl,\n deps?: Dependencies\n): void {\n const persistence = deps?.persistence || [];\n const hierarchy = (\n Array.isArray(persistence) ? persistence : [persistence]\n ).map<PersistenceInternal>(_getInstance);\n if (deps?.errorMap) {\n auth._updateErrorMap(deps.errorMap);\n }\n\n // This promise is intended to float; auth initialization happens in the\n // background, meanwhile the auth object may be used by the app.\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n auth._initializeWithPersistence(hierarchy, deps?.popupRedirectResolver);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Auth } from '../../model/public_types';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { _castAuth } from './auth_impl';\n\n/**\n * Changes the {@link Auth} instance to communicate with the Firebase Auth Emulator, instead of production\n * Firebase Auth services.\n *\n * @remarks\n * This must be called synchronously immediately following the first call to\n * {@link initializeAuth}. Do not use with production credentials as emulator\n * traffic is not encrypted.\n *\n *\n * @example\n * ```javascript\n * connectAuthEmulator(auth, 'http://127.0.0.1:9099', { disableWarnings: true });\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param url - The URL at which the emulator is running (eg, 'http://localhost:9099').\n * @param options - Optional. `options.disableWarnings` defaults to `false`. Set it to\n * `true` to disable the warning banner attached to the DOM.\n *\n * @public\n */\nexport function connectAuthEmulator(\n auth: Auth,\n url: string,\n options?: { disableWarnings: boolean }\n): void {\n const authInternal = _castAuth(auth);\n _assert(\n authInternal._canInitEmulator,\n authInternal,\n AuthErrorCode.EMULATOR_CONFIG_FAILED\n );\n\n _assert(\n /^https?:\\/\\//.test(url),\n authInternal,\n AuthErrorCode.INVALID_EMULATOR_SCHEME\n );\n\n const disableWarnings = !!options?.disableWarnings;\n\n const protocol = extractProtocol(url);\n const { host, port } = extractHostAndPort(url);\n const portStr = port === null ? '' : `:${port}`;\n\n // Always replace path with \"/\" (even if input url had no path at all, or had a different one).\n authInternal.config.emulator = { url: `${protocol}//${host}${portStr}/` };\n authInternal.settings.appVerificationDisabledForTesting = true;\n authInternal.emulatorConfig = Object.freeze({\n host,\n port,\n protocol: protocol.replace(':', ''),\n options: Object.freeze({ disableWarnings })\n });\n\n if (!disableWarnings) {\n emitEmulatorWarning();\n }\n}\n\nfunction extractProtocol(url: string): string {\n const protocolEnd = url.indexOf(':');\n return protocolEnd < 0 ? '' : url.substr(0, protocolEnd + 1);\n}\n\nfunction extractHostAndPort(url: string): {\n host: string;\n port: number | null;\n} {\n const protocol = extractProtocol(url);\n const authority = /(\\/\\/)?([^?#/]+)/.exec(url.substr(protocol.length)); // Between // and /, ? or #.\n if (!authority) {\n return { host: '', port: null };\n }\n const hostAndPort = authority[2].split('@').pop() || ''; // Strip out \"username:password@\".\n const bracketedIPv6 = /^(\\[[^\\]]+\\])(:|$)/.exec(hostAndPort);\n if (bracketedIPv6) {\n const host = bracketedIPv6[1];\n return { host, port: parsePort(hostAndPort.substr(host.length + 1)) };\n } else {\n const [host, port] = hostAndPort.split(':');\n return { host, port: parsePort(port) };\n }\n}\n\nfunction parsePort(portStr: string): number | null {\n if (!portStr) {\n return null;\n }\n const port = Number(portStr);\n if (isNaN(port)) {\n return null;\n }\n return port;\n}\n\nfunction emitEmulatorWarning(): void {\n function attachBanner(): void {\n const el = document.createElement('p');\n const sty = el.style;\n el.innerText =\n 'Running in emulator mode. Do not use with production credentials.';\n sty.position = 'fixed';\n sty.width = '100%';\n sty.backgroundColor = '#ffffff';\n sty.border = '.1em solid #000000';\n sty.color = '#b50000';\n sty.bottom = '0px';\n sty.left = '0px';\n sty.margin = '0px';\n sty.zIndex = '10000';\n sty.textAlign = 'center';\n el.classList.add('firebase-emulator-warning');\n document.body.appendChild(el);\n }\n\n if (typeof console !== 'undefined' && typeof console.info === 'function') {\n console.info(\n 'WARNING: You are using the Auth Emulator,' +\n ' which is intended for local testing only. Do not use with' +\n ' production credentials.'\n );\n }\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n if (document.readyState === 'loading') {\n window.addEventListener('DOMContentLoaded', attachBanner);\n } else {\n attachBanner();\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { debugFail } from '../util/assert';\n\n/**\n * Interface that represents the credentials returned by an {@link AuthProvider}.\n *\n * @remarks\n * Implementations specify the details about each auth provider's credential requirements.\n *\n * @public\n */\nexport class AuthCredential {\n /** @internal */\n protected constructor(\n /**\n * The authentication provider ID for the credential.\n *\n * @remarks\n * For example, 'facebook.com', or 'google.com'.\n */\n readonly providerId: string,\n /**\n * The authentication sign in method for the credential.\n *\n * @remarks\n * For example, {@link SignInMethod}.EMAIL_PASSWORD, or\n * {@link SignInMethod}.EMAIL_LINK. This corresponds to the sign-in method\n * identifier as returned in {@link fetchSignInMethodsForEmail}.\n */\n readonly signInMethod: string\n ) {}\n\n /**\n * Returns a JSON-serializable representation of this object.\n *\n * @returns a JSON-serializable representation of this object.\n */\n toJSON(): object {\n return debugFail('not implemented');\n }\n\n /** @internal */\n _getIdTokenResponse(_auth: AuthInternal): Promise<PhoneOrOauthTokenResponse> {\n return debugFail('not implemented');\n }\n /** @internal */\n _linkToIdToken(\n _auth: AuthInternal,\n _idToken: string\n ): Promise<IdTokenResponse> {\n return debugFail('not implemented');\n }\n /** @internal */\n _getReauthenticationResolver(_auth: AuthInternal): Promise<IdTokenResponse> {\n return debugFail('not implemented');\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionCodeOperation, Auth } from '../../model/public_types';\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performApiRequest\n} from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { MfaEnrollment } from './mfa';\n\nexport interface ResetPasswordRequest {\n oobCode: string;\n newPassword?: string;\n tenantId?: string;\n}\n\nexport interface ResetPasswordResponse {\n email: string;\n newEmail?: string;\n requestType?: ActionCodeOperation;\n mfaInfo?: MfaEnrollment;\n}\n\nexport async function resetPassword(\n auth: Auth,\n request: ResetPasswordRequest\n): Promise<ResetPasswordResponse> {\n return _performApiRequest<ResetPasswordRequest, ResetPasswordResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.RESET_PASSWORD,\n _addTidIfNecessary(auth, request)\n );\n}\nexport interface UpdateEmailPasswordRequest {\n idToken: string;\n returnSecureToken?: boolean;\n email?: string;\n password?: string;\n}\n\nexport interface UpdateEmailPasswordResponse extends IdTokenResponse {}\n\nexport async function updateEmailPassword(\n auth: Auth,\n request: UpdateEmailPasswordRequest\n): Promise<UpdateEmailPasswordResponse> {\n return _performApiRequest<\n UpdateEmailPasswordRequest,\n UpdateEmailPasswordResponse\n >(auth, HttpMethod.POST, Endpoint.SET_ACCOUNT_INFO, request);\n}\n\nexport interface ApplyActionCodeRequest {\n oobCode: string;\n tenantId?: string;\n}\n\nexport interface ApplyActionCodeResponse {}\n\nexport async function applyActionCode(\n auth: Auth,\n request: ApplyActionCodeRequest\n): Promise<ApplyActionCodeResponse> {\n return _performApiRequest<ApplyActionCodeRequest, ApplyActionCodeResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.SET_ACCOUNT_INFO,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionCodeOperation, Auth } from '../../model/public_types';\n\nimport {\n Endpoint,\n HttpMethod,\n RecaptchaClientType,\n RecaptchaVersion,\n _addTidIfNecessary,\n _performApiRequest,\n _performSignInRequest\n} from '../index';\nimport { IdToken, IdTokenResponse } from '../../model/id_token';\n\nexport interface SignInWithPasswordRequest {\n returnSecureToken?: boolean;\n email: string;\n password: string;\n tenantId?: string;\n captchaResponse?: string;\n clientType?: RecaptchaClientType;\n recaptchaVersion?: RecaptchaVersion;\n}\n\nexport interface SignInWithPasswordResponse extends IdTokenResponse {\n email: string;\n displayName: string;\n}\n\nexport async function signInWithPassword(\n auth: Auth,\n request: SignInWithPasswordRequest\n): Promise<SignInWithPasswordResponse> {\n return _performSignInRequest<\n SignInWithPasswordRequest,\n SignInWithPasswordResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PASSWORD,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface GetOobCodeRequest {\n email?: string; // Everything except VERIFY_AND_CHANGE_EMAIL\n continueUrl?: string;\n iOSBundleId?: string;\n iosAppStoreId?: string;\n androidPackageName?: string;\n androidInstallApp?: boolean;\n androidMinimumVersionCode?: string;\n canHandleCodeInApp?: boolean;\n dynamicLinkDomain?: string;\n tenantId?: string;\n targetProjectid?: string;\n}\n\nexport interface VerifyEmailRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.VERIFY_EMAIL;\n idToken: IdToken;\n}\n\nexport interface PasswordResetRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.PASSWORD_RESET;\n email: string;\n captchaResp?: string;\n clientType?: RecaptchaClientType;\n recaptchaVersion?: RecaptchaVersion;\n}\n\nexport interface EmailSignInRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.EMAIL_SIGNIN;\n email: string;\n captchaResp?: string;\n clientType?: RecaptchaClientType;\n recaptchaVersion?: RecaptchaVersion;\n}\n\nexport interface VerifyAndChangeEmailRequest extends GetOobCodeRequest {\n requestType: ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL;\n idToken: IdToken;\n newEmail: string;\n}\n\ninterface GetOobCodeResponse {\n email: string;\n}\n\nexport interface VerifyEmailResponse extends GetOobCodeResponse {}\nexport interface PasswordResetResponse extends GetOobCodeResponse {}\nexport interface EmailSignInResponse extends GetOobCodeResponse {}\nexport interface VerifyAndChangeEmailResponse extends GetOobCodeRequest {}\n\nasync function sendOobCode(\n auth: Auth,\n request: GetOobCodeRequest\n): Promise<GetOobCodeResponse> {\n return _performApiRequest<GetOobCodeRequest, GetOobCodeResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.SEND_OOB_CODE,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport async function sendEmailVerification(\n auth: Auth,\n request: VerifyEmailRequest\n): Promise<VerifyEmailResponse> {\n return sendOobCode(auth, request);\n}\n\nexport async function sendPasswordResetEmail(\n auth: Auth,\n request: PasswordResetRequest\n): Promise<PasswordResetResponse> {\n return sendOobCode(auth, request);\n}\n\nexport async function sendSignInLinkToEmail(\n auth: Auth,\n request: EmailSignInRequest\n): Promise<EmailSignInResponse> {\n return sendOobCode(auth, request);\n}\n\nexport async function verifyAndChangeEmail(\n auth: Auth,\n request: VerifyAndChangeEmailRequest\n): Promise<VerifyAndChangeEmailResponse> {\n return sendOobCode(auth, request);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n _performSignInRequest,\n Endpoint,\n HttpMethod,\n _addTidIfNecessary\n} from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface SignInWithEmailLinkRequest {\n email: string;\n oobCode: string;\n tenantId?: string;\n}\n\nexport interface SignInWithEmailLinkResponse extends IdTokenResponse {\n email: string;\n isNewUser: boolean;\n}\n\nexport async function signInWithEmailLink(\n auth: Auth,\n request: SignInWithEmailLinkRequest\n): Promise<SignInWithEmailLinkResponse> {\n return _performSignInRequest<\n SignInWithEmailLinkRequest,\n SignInWithEmailLinkResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_EMAIL_LINK,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface SignInWithEmailLinkForLinkingRequest\n extends SignInWithEmailLinkRequest {\n idToken: string;\n}\n\nexport async function signInWithEmailLinkForLinking(\n auth: Auth,\n request: SignInWithEmailLinkForLinkingRequest\n): Promise<SignInWithEmailLinkResponse> {\n return _performSignInRequest<\n SignInWithEmailLinkForLinkingRequest,\n SignInWithEmailLinkResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_EMAIL_LINK,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\nimport { updateEmailPassword } from '../../api/account_management/email_and_password';\nimport {\n signInWithPassword,\n SignInWithPasswordRequest\n} from '../../api/authentication/email_and_password';\nimport {\n signInWithEmailLink,\n signInWithEmailLinkForLinking\n} from '../../api/authentication/email_link';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthErrorCode } from '../errors';\nimport { _fail } from '../util/assert';\nimport { AuthCredential } from './auth_credential';\nimport { injectRecaptchaFields } from '../../platform_browser/recaptcha/recaptcha_enterprise_verifier';\nimport { RecaptchaActionName, RecaptchaClientType } from '../../api';\n/**\n * Interface that represents the credentials returned by {@link EmailAuthProvider} for\n * {@link ProviderId}.PASSWORD\n *\n * @remarks\n * Covers both {@link SignInMethod}.EMAIL_PASSWORD and\n * {@link SignInMethod}.EMAIL_LINK.\n *\n * @public\n */\nexport class EmailAuthCredential extends AuthCredential {\n /** @internal */\n private constructor(\n /** @internal */\n readonly _email: string,\n /** @internal */\n readonly _password: string,\n signInMethod: SignInMethod,\n /** @internal */\n readonly _tenantId: string | null = null\n ) {\n super(ProviderId.PASSWORD, signInMethod);\n }\n\n /** @internal */\n static _fromEmailAndPassword(\n email: string,\n password: string\n ): EmailAuthCredential {\n return new EmailAuthCredential(\n email,\n password,\n SignInMethod.EMAIL_PASSWORD\n );\n }\n\n /** @internal */\n static _fromEmailAndCode(\n email: string,\n oobCode: string,\n tenantId: string | null = null\n ): EmailAuthCredential {\n return new EmailAuthCredential(\n email,\n oobCode,\n SignInMethod.EMAIL_LINK,\n tenantId\n );\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n return {\n email: this._email,\n password: this._password,\n signInMethod: this.signInMethod,\n tenantId: this._tenantId\n };\n }\n\n /**\n * Static method to deserialize a JSON representation of an object into an {@link AuthCredential}.\n *\n * @param json - Either `object` or the stringified representation of the object. When string is\n * provided, `JSON.parse` would be called first.\n *\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\n */\n static fromJSON(json: object | string): EmailAuthCredential | null {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n if (obj?.email && obj?.password) {\n if (obj.signInMethod === SignInMethod.EMAIL_PASSWORD) {\n return this._fromEmailAndPassword(obj.email, obj.password);\n } else if (obj.signInMethod === SignInMethod.EMAIL_LINK) {\n return this._fromEmailAndCode(obj.email, obj.password, obj.tenantId);\n }\n }\n return null;\n }\n\n /** @internal */\n async _getIdTokenResponse(auth: AuthInternal): Promise<IdTokenResponse> {\n switch (this.signInMethod) {\n case SignInMethod.EMAIL_PASSWORD:\n const request: SignInWithPasswordRequest = {\n returnSecureToken: true,\n email: this._email,\n password: this._password,\n clientType: RecaptchaClientType.WEB\n };\n if (auth._getRecaptchaConfig()?.emailPasswordEnabled) {\n const requestWithRecaptcha = await injectRecaptchaFields(\n auth,\n request,\n RecaptchaActionName.SIGN_IN_WITH_PASSWORD\n );\n return signInWithPassword(auth, requestWithRecaptcha);\n } else {\n return signInWithPassword(auth, request).catch(async error => {\n if (\n error.code === `auth/${AuthErrorCode.MISSING_RECAPTCHA_TOKEN}`\n ) {\n console.log(\n 'Sign-in with email address and password is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-in flow.'\n );\n const requestWithRecaptcha = await injectRecaptchaFields(\n auth,\n request,\n RecaptchaActionName.SIGN_IN_WITH_PASSWORD\n );\n return signInWithPassword(auth, requestWithRecaptcha);\n } else {\n return Promise.reject(error);\n }\n });\n }\n case SignInMethod.EMAIL_LINK:\n return signInWithEmailLink(auth, {\n email: this._email,\n oobCode: this._password\n });\n default:\n _fail(auth, AuthErrorCode.INTERNAL_ERROR);\n }\n }\n\n /** @internal */\n async _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise<IdTokenResponse> {\n switch (this.signInMethod) {\n case SignInMethod.EMAIL_PASSWORD:\n return updateEmailPassword(auth, {\n idToken,\n returnSecureToken: true,\n email: this._email,\n password: this._password\n });\n case SignInMethod.EMAIL_LINK:\n return signInWithEmailLinkForLinking(auth, {\n idToken,\n email: this._email,\n oobCode: this._password\n });\n default:\n _fail(auth, AuthErrorCode.INTERNAL_ERROR);\n }\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise<IdTokenResponse> {\n return this._getIdTokenResponse(auth);\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performSignInRequest\n} from '../index';\nimport { IdToken, IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface SignInWithIdpRequest {\n requestUri: string;\n postBody?: string;\n sessionId?: string;\n tenantId?: string;\n returnSecureToken: boolean;\n returnIdpCredential?: boolean;\n idToken?: IdToken;\n autoCreate?: boolean;\n pendingToken?: string;\n}\n\n/**\n * @internal\n */\nexport interface SignInWithIdpResponse extends IdTokenResponse {\n oauthAccessToken?: string;\n oauthTokenSecret?: string;\n nonce?: string;\n oauthIdToken?: string;\n pendingToken?: string;\n}\n\nexport async function signInWithIdp(\n auth: Auth,\n request: SignInWithIdpRequest\n): Promise<SignInWithIdpResponse> {\n return _performSignInRequest<SignInWithIdpRequest, SignInWithIdpResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_IDP,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { querystring } from '@firebase/util';\n\nimport {\n signInWithIdp,\n SignInWithIdpRequest\n} from '../../api/authentication/idp';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthErrorCode } from '../errors';\nimport { _fail } from '../util/assert';\nimport { AuthCredential } from './auth_credential';\n\nconst IDP_REQUEST_URI = 'http://localhost';\n\nexport interface OAuthCredentialParams {\n // OAuth 2 uses either id token or access token\n idToken?: string | null;\n accessToken?: string | null;\n\n // These fields are used with OAuth 1\n oauthToken?: string;\n secret?: string;\n oauthTokenSecret?: string;\n\n // Nonce is only set if pendingToken is not present\n nonce?: string;\n pendingToken?: string;\n\n // Utilities\n providerId: string;\n signInMethod: string;\n}\n\n/**\n * Represents the OAuth credentials returned by an {@link OAuthProvider}.\n *\n * @remarks\n * Implementations specify the details about each auth provider's credential requirements.\n *\n * @public\n */\nexport class OAuthCredential extends AuthCredential {\n /**\n * The OAuth ID token associated with the credential if it belongs to an OIDC provider,\n * such as `google.com`.\n * @readonly\n */\n idToken?: string;\n /**\n * The OAuth access token associated with the credential if it belongs to an\n * {@link OAuthProvider}, such as `facebook.com`, `twitter.com`, etc.\n * @readonly\n */\n accessToken?: string;\n /**\n * The OAuth access token secret associated with the credential if it belongs to an OAuth 1.0\n * provider, such as `twitter.com`.\n * @readonly\n */\n secret?: string;\n\n private nonce?: string;\n private pendingToken: string | null = null;\n\n /** @internal */\n static _fromParams(params: OAuthCredentialParams): OAuthCredential {\n const cred = new OAuthCredential(params.providerId, params.signInMethod);\n\n if (params.idToken || params.accessToken) {\n // OAuth 2 and either ID token or access token.\n if (params.idToken) {\n cred.idToken = params.idToken;\n }\n\n if (params.accessToken) {\n cred.accessToken = params.accessToken;\n }\n\n // Add nonce if available and no pendingToken is present.\n if (params.nonce && !params.pendingToken) {\n cred.nonce = params.nonce;\n }\n\n if (params.pendingToken) {\n cred.pendingToken = params.pendingToken;\n }\n } else if (params.oauthToken && params.oauthTokenSecret) {\n // OAuth 1 and OAuth token with token secret\n cred.accessToken = params.oauthToken;\n cred.secret = params.oauthTokenSecret;\n } else {\n _fail(AuthErrorCode.ARGUMENT_ERROR);\n }\n\n return cred;\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n return {\n idToken: this.idToken,\n accessToken: this.accessToken,\n secret: this.secret,\n nonce: this.nonce,\n pendingToken: this.pendingToken,\n providerId: this.providerId,\n signInMethod: this.signInMethod\n };\n }\n\n /**\n * Static method to deserialize a JSON representation of an object into an\n * {@link AuthCredential}.\n *\n * @param json - Input can be either Object or the stringified representation of the object.\n * When string is provided, JSON.parse would be called first.\n *\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\n */\n static fromJSON(json: string | object): OAuthCredential | null {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n const { providerId, signInMethod, ...rest }: OAuthCredentialParams = obj;\n if (!providerId || !signInMethod) {\n return null;\n }\n\n const cred = new OAuthCredential(providerId, signInMethod);\n cred.idToken = rest.idToken || undefined;\n cred.accessToken = rest.accessToken || undefined;\n cred.secret = rest.secret;\n cred.nonce = rest.nonce;\n cred.pendingToken = rest.pendingToken || null;\n return cred;\n }\n\n /** @internal */\n _getIdTokenResponse(auth: AuthInternal): Promise<IdTokenResponse> {\n const request = this.buildRequest();\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise<IdTokenResponse> {\n const request = this.buildRequest();\n request.idToken = idToken;\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise<IdTokenResponse> {\n const request = this.buildRequest();\n request.autoCreate = false;\n return signInWithIdp(auth, request);\n }\n\n private buildRequest(): SignInWithIdpRequest {\n const request: SignInWithIdpRequest = {\n requestUri: IDP_REQUEST_URI,\n returnSecureToken: true\n };\n\n if (this.pendingToken) {\n request.pendingToken = this.pendingToken;\n } else {\n const postBody: Record<string, string> = {};\n if (this.idToken) {\n postBody['id_token'] = this.idToken;\n }\n if (this.accessToken) {\n postBody['access_token'] = this.accessToken;\n }\n if (this.secret) {\n postBody['oauth_token_secret'] = this.secret;\n }\n\n postBody['providerId'] = this.providerId;\n if (this.nonce && !this.pendingToken) {\n postBody['nonce'] = this.nonce;\n }\n\n request.postBody = querystring(postBody);\n }\n\n return request;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _makeTaggedError,\n _performApiRequest,\n _performSignInRequest\n} from '../index';\nimport { AuthErrorCode } from '../../core/errors';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { ServerError, ServerErrorMap } from '../errors';\nimport { Auth } from '../../model/public_types';\n\nexport interface SendPhoneVerificationCodeRequest {\n phoneNumber: string;\n recaptchaToken: string;\n tenantId?: string;\n}\n\nexport interface SendPhoneVerificationCodeResponse {\n sessionInfo: string;\n}\n\nexport async function sendPhoneVerificationCode(\n auth: Auth,\n request: SendPhoneVerificationCodeRequest\n): Promise<SendPhoneVerificationCodeResponse> {\n return _performApiRequest<\n SendPhoneVerificationCodeRequest,\n SendPhoneVerificationCodeResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SEND_VERIFICATION_CODE,\n _addTidIfNecessary(auth, request)\n );\n}\n\n/**\n * @internal\n */\nexport interface SignInWithPhoneNumberRequest {\n temporaryProof?: string;\n phoneNumber?: string;\n sessionInfo?: string;\n code?: string;\n tenantId?: string;\n}\n\nexport interface LinkWithPhoneNumberRequest\n extends SignInWithPhoneNumberRequest {\n idToken: string;\n}\n\n/**\n * @internal\n */\nexport interface SignInWithPhoneNumberResponse extends IdTokenResponse {\n temporaryProof?: string;\n phoneNumber?: string;\n}\n\nexport async function signInWithPhoneNumber(\n auth: Auth,\n request: SignInWithPhoneNumberRequest\n): Promise<SignInWithPhoneNumberResponse> {\n return _performSignInRequest<\n SignInWithPhoneNumberRequest,\n SignInWithPhoneNumberResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PHONE_NUMBER,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport async function linkWithPhoneNumber(\n auth: Auth,\n request: LinkWithPhoneNumberRequest\n): Promise<SignInWithPhoneNumberResponse> {\n const response = await _performSignInRequest<\n LinkWithPhoneNumberRequest,\n SignInWithPhoneNumberResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PHONE_NUMBER,\n _addTidIfNecessary(auth, request)\n );\n if (response.temporaryProof) {\n throw _makeTaggedError(auth, AuthErrorCode.NEED_CONFIRMATION, response);\n }\n return response;\n}\n\ninterface VerifyPhoneNumberForExistingRequest\n extends SignInWithPhoneNumberRequest {\n operation: 'REAUTH';\n}\n\nconst VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_: Partial<\n ServerErrorMap<ServerError>\n> = {\n [ServerError.USER_NOT_FOUND]: AuthErrorCode.USER_DELETED\n};\n\nexport async function verifyPhoneNumberForExisting(\n auth: Auth,\n request: SignInWithPhoneNumberRequest\n): Promise<SignInWithPhoneNumberResponse> {\n const apiRequest: VerifyPhoneNumberForExistingRequest = {\n ...request,\n operation: 'REAUTH'\n };\n return _performSignInRequest<\n VerifyPhoneNumberForExistingRequest,\n SignInWithPhoneNumberResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_PHONE_NUMBER,\n _addTidIfNecessary(auth, apiRequest),\n VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport {\n linkWithPhoneNumber,\n signInWithPhoneNumber,\n SignInWithPhoneNumberRequest,\n verifyPhoneNumberForExisting\n} from '../../api/authentication/sms';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthCredential } from './auth_credential';\n\nexport interface PhoneAuthCredentialParameters {\n verificationId?: string;\n verificationCode?: string;\n phoneNumber?: string;\n temporaryProof?: string;\n}\n\n/**\n * Represents the credentials returned by {@link PhoneAuthProvider}.\n *\n * @public\n */\nexport class PhoneAuthCredential extends AuthCredential {\n private constructor(private readonly params: PhoneAuthCredentialParameters) {\n super(ProviderId.PHONE, SignInMethod.PHONE);\n }\n\n /** @internal */\n static _fromVerification(\n verificationId: string,\n verificationCode: string\n ): PhoneAuthCredential {\n return new PhoneAuthCredential({ verificationId, verificationCode });\n }\n\n /** @internal */\n static _fromTokenResponse(\n phoneNumber: string,\n temporaryProof: string\n ): PhoneAuthCredential {\n return new PhoneAuthCredential({ phoneNumber, temporaryProof });\n }\n\n /** @internal */\n _getIdTokenResponse(auth: AuthInternal): Promise<PhoneOrOauthTokenResponse> {\n return signInWithPhoneNumber(auth, this._makeVerificationRequest());\n }\n\n /** @internal */\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise<IdTokenResponse> {\n return linkWithPhoneNumber(auth, {\n idToken,\n ...this._makeVerificationRequest()\n });\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise<IdTokenResponse> {\n return verifyPhoneNumberForExisting(auth, this._makeVerificationRequest());\n }\n\n /** @internal */\n _makeVerificationRequest(): SignInWithPhoneNumberRequest {\n const { temporaryProof, phoneNumber, verificationId, verificationCode } =\n this.params;\n if (temporaryProof && phoneNumber) {\n return { temporaryProof, phoneNumber };\n }\n\n return {\n sessionInfo: verificationId,\n code: verificationCode\n };\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n const obj: Record<string, string> = {\n providerId: this.providerId\n };\n if (this.params.phoneNumber) {\n obj.phoneNumber = this.params.phoneNumber;\n }\n if (this.params.temporaryProof) {\n obj.temporaryProof = this.params.temporaryProof;\n }\n if (this.params.verificationCode) {\n obj.verificationCode = this.params.verificationCode;\n }\n if (this.params.verificationId) {\n obj.verificationId = this.params.verificationId;\n }\n\n return obj;\n }\n\n /** Generates a phone credential based on a plain object or a JSON string. */\n static fromJSON(json: object | string): PhoneAuthCredential | null {\n if (typeof json === 'string') {\n json = JSON.parse(json);\n }\n\n const { verificationId, verificationCode, phoneNumber, temporaryProof } =\n json as { [key: string]: string };\n if (\n !verificationCode &&\n !verificationId &&\n !phoneNumber &&\n !temporaryProof\n ) {\n return null;\n }\n\n return new PhoneAuthCredential({\n verificationId,\n verificationCode,\n phoneNumber,\n temporaryProof\n });\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { extractQuerystring, querystringDecode } from '@firebase/util';\nimport { ActionCodeOperation } from '../model/public_types';\nimport { AuthErrorCode } from './errors';\nimport { _assert } from './util/assert';\n\n/**\n * Enums for fields in URL query string.\n *\n * @enum {string}\n */\nconst enum QueryField {\n API_KEY = 'apiKey',\n CODE = 'oobCode',\n CONTINUE_URL = 'continueUrl',\n LANGUAGE_CODE = 'languageCode',\n MODE = 'mode',\n TENANT_ID = 'tenantId'\n}\n\n/**\n * Maps the mode string in action code URL to Action Code Info operation.\n *\n * @param mode\n */\nfunction parseMode(mode: string | null): ActionCodeOperation | null {\n switch (mode) {\n case 'recoverEmail':\n return ActionCodeOperation.RECOVER_EMAIL;\n case 'resetPassword':\n return ActionCodeOperation.PASSWORD_RESET;\n case 'signIn':\n return ActionCodeOperation.EMAIL_SIGNIN;\n case 'verifyEmail':\n return ActionCodeOperation.VERIFY_EMAIL;\n case 'verifyAndChangeEmail':\n return ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL;\n case 'revertSecondFactorAddition':\n return ActionCodeOperation.REVERT_SECOND_FACTOR_ADDITION;\n default:\n return null;\n }\n}\n\n/**\n * Helper to parse FDL links\n *\n * @param url\n */\nfunction parseDeepLink(url: string): string {\n const link = querystringDecode(extractQuerystring(url))['link'];\n\n // Double link case (automatic redirect).\n const doubleDeepLink = link\n ? querystringDecode(extractQuerystring(link))['deep_link_id']\n : null;\n // iOS custom scheme links.\n const iOSDeepLink = querystringDecode(extractQuerystring(url))[\n 'deep_link_id'\n ];\n const iOSDoubleDeepLink = iOSDeepLink\n ? querystringDecode(extractQuerystring(iOSDeepLink))['link']\n : null;\n return iOSDoubleDeepLink || iOSDeepLink || doubleDeepLink || link || url;\n}\n\n/**\n * A utility class to parse email action URLs such as password reset, email verification,\n * email link sign in, etc.\n *\n * @public\n */\nexport class ActionCodeURL {\n /**\n * The API key of the email action link.\n */\n readonly apiKey: string;\n /**\n * The action code of the email action link.\n */\n readonly code: string;\n /**\n * The continue URL of the email action link. Null if not provided.\n */\n readonly continueUrl: string | null;\n /**\n * The language code of the email action link. Null if not provided.\n */\n readonly languageCode: string | null;\n /**\n * The action performed by the email action link. It returns from one of the types from\n * {@link ActionCodeInfo}\n */\n readonly operation: string;\n /**\n * The tenant ID of the email action link. Null if the email action is from the parent project.\n */\n readonly tenantId: string | null;\n\n /**\n * @param actionLink - The link from which to extract the URL.\n * @returns The {@link ActionCodeURL} object, or null if the link is invalid.\n *\n * @internal\n */\n constructor(actionLink: string) {\n const searchParams = querystringDecode(extractQuerystring(actionLink));\n const apiKey = searchParams[QueryField.API_KEY] ?? null;\n const code = searchParams[QueryField.CODE] ?? null;\n const operation = parseMode(searchParams[QueryField.MODE] ?? null);\n // Validate API key, code and mode.\n _assert(apiKey && code && operation, AuthErrorCode.ARGUMENT_ERROR);\n this.apiKey = apiKey;\n this.operation = operation;\n this.code = code;\n this.continueUrl = searchParams[QueryField.CONTINUE_URL] ?? null;\n this.languageCode = searchParams[QueryField.LANGUAGE_CODE] ?? null;\n this.tenantId = searchParams[QueryField.TENANT_ID] ?? null;\n }\n\n /**\n * Parses the email action link string and returns an {@link ActionCodeURL} if the link is valid,\n * otherwise returns null.\n *\n * @param link - The email action link string.\n * @returns The {@link ActionCodeURL} object, or null if the link is invalid.\n *\n * @public\n */\n static parseLink(link: string): ActionCodeURL | null {\n const actionLink = parseDeepLink(link);\n try {\n return new ActionCodeURL(actionLink);\n } catch {\n return null;\n }\n }\n}\n\n/**\n * Parses the email action link string and returns an {@link ActionCodeURL} if\n * the link is valid, otherwise returns null.\n *\n * @public\n */\nexport function parseActionCodeURL(link: string): ActionCodeURL | null {\n return ActionCodeURL.parseLink(link);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ProviderId, SignInMethod } from '../../model/enums';\nimport { AuthProvider } from '../../model/public_types';\n\nimport { ActionCodeURL } from '../action_code_url';\nimport { EmailAuthCredential } from '../credentials/email';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\n\n/**\n * Provider for generating {@link EmailAuthCredential}.\n *\n * @public\n */\nexport class EmailAuthProvider implements AuthProvider {\n /**\n * Always set to {@link ProviderId}.PASSWORD, even for email link.\n */\n static readonly PROVIDER_ID: 'password' = ProviderId.PASSWORD;\n /**\n * Always set to {@link SignInMethod}.EMAIL_PASSWORD.\n */\n static readonly EMAIL_PASSWORD_SIGN_IN_METHOD: 'password' =\n SignInMethod.EMAIL_PASSWORD;\n /**\n * Always set to {@link SignInMethod}.EMAIL_LINK.\n */\n static readonly EMAIL_LINK_SIGN_IN_METHOD: 'emailLink' =\n SignInMethod.EMAIL_LINK;\n /**\n * Always set to {@link ProviderId}.PASSWORD, even for email link.\n */\n readonly providerId = EmailAuthProvider.PROVIDER_ID;\n\n /**\n * Initialize an {@link AuthCredential} using an email and password.\n *\n * @example\n * ```javascript\n * const authCredential = EmailAuthProvider.credential(email, password);\n * const userCredential = await signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * ```javascript\n * const userCredential = await signInWithEmailAndPassword(auth, email, password);\n * ```\n *\n * @param email - Email address.\n * @param password - User account password.\n * @returns The auth provider credential.\n */\n static credential(email: string, password: string): EmailAuthCredential {\n return EmailAuthCredential._fromEmailAndPassword(email, password);\n }\n\n /**\n * Initialize an {@link AuthCredential} using an email and an email link after a sign in with\n * email link operation.\n *\n * @example\n * ```javascript\n * const authCredential = EmailAuthProvider.credentialWithLink(auth, email, emailLink);\n * const userCredential = await signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * ```javascript\n * await sendSignInLinkToEmail(auth, email);\n * // Obtain emailLink from user.\n * const userCredential = await signInWithEmailLink(auth, email, emailLink);\n * ```\n *\n * @param auth - The {@link Auth} instance used to verify the link.\n * @param email - Email address.\n * @param emailLink - Sign-in email link.\n * @returns - The auth provider credential.\n */\n static credentialWithLink(\n email: string,\n emailLink: string\n ): EmailAuthCredential {\n const actionCodeUrl = ActionCodeURL.parseLink(emailLink);\n _assert(actionCodeUrl, AuthErrorCode.ARGUMENT_ERROR);\n\n return EmailAuthCredential._fromEmailAndCode(\n email,\n actionCodeUrl.code,\n actionCodeUrl.tenantId\n );\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthProvider } from '../../model/public_types';\n\n/**\n * Map of OAuth Custom Parameters.\n *\n * @public\n */\nexport type CustomParameters = Record<string, string>;\n\n/**\n * The base class for all Federated providers (OAuth (including OIDC), SAML).\n *\n * This class is not meant to be instantiated directly.\n *\n * @public\n */\nexport abstract class FederatedAuthProvider implements AuthProvider {\n /** @internal */\n defaultLanguageCode: string | null = null;\n /** @internal */\n private customParameters: CustomParameters = {};\n\n /**\n * Constructor for generic OAuth providers.\n *\n * @param providerId - Provider for which credentials should be generated.\n */\n constructor(readonly providerId: string) {}\n\n /**\n * Set the language gode.\n *\n * @param languageCode - language code\n */\n setDefaultLanguage(languageCode: string | null): void {\n this.defaultLanguageCode = languageCode;\n }\n\n /**\n * Sets the OAuth custom parameters to pass in an OAuth request for popup and redirect sign-in\n * operations.\n *\n * @remarks\n * For a detailed list, check the reserved required OAuth 2.0 parameters such as `client_id`,\n * `redirect_uri`, `scope`, `response_type`, and `state` are not allowed and will be ignored.\n *\n * @param customOAuthParameters - The custom OAuth parameters to pass in the OAuth request.\n */\n setCustomParameters(customOAuthParameters: CustomParameters): AuthProvider {\n this.customParameters = customOAuthParameters;\n return this;\n }\n\n /**\n * Retrieve the current list of {@link CustomParameters}.\n */\n getCustomParameters(): CustomParameters {\n return this.customParameters;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthProvider, UserCredential } from '../../model/public_types';\n\nimport { _assert } from '../util/assert';\nimport { AuthErrorCode } from '../errors';\n\nimport { OAuthCredential, OAuthCredentialParams } from '../credentials/oauth';\nimport { UserCredentialInternal } from '../../model/user';\nimport { FirebaseError } from '@firebase/util';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { SignInWithIdpResponse } from '../../../internal';\nimport { FederatedAuthProvider } from './federated';\n\n/**\n * Defines the options for initializing an {@link OAuthCredential}.\n *\n * @remarks\n * For ID tokens with nonce claim, the raw nonce has to also be provided.\n *\n * @public\n */\nexport interface OAuthCredentialOptions {\n /**\n * The OAuth ID token used to initialize the {@link OAuthCredential}.\n */\n idToken?: string;\n /**\n * The OAuth access token used to initialize the {@link OAuthCredential}.\n */\n accessToken?: string;\n /**\n * The raw nonce associated with the ID token.\n *\n * @remarks\n * It is required when an ID token with a nonce field is provided. The SHA-256 hash of the\n * raw nonce must match the nonce field in the ID token.\n */\n rawNonce?: string;\n}\n\n/**\n * Common code to all OAuth providers. This is separate from the\n * {@link OAuthProvider} so that child providers (like\n * {@link GoogleAuthProvider}) don't inherit the `credential` instance method.\n * Instead, they rely on a static `credential` method.\n */\nexport abstract class BaseOAuthProvider\n extends FederatedAuthProvider\n implements AuthProvider\n{\n /** @internal */\n private scopes: string[] = [];\n\n /**\n * Add an OAuth scope to the credential.\n *\n * @param scope - Provider OAuth scope to add.\n */\n addScope(scope: string): AuthProvider {\n // If not already added, add scope to list.\n if (!this.scopes.includes(scope)) {\n this.scopes.push(scope);\n }\n return this;\n }\n\n /**\n * Retrieve the current list of OAuth scopes.\n */\n getScopes(): string[] {\n return [...this.scopes];\n }\n}\n\n/**\n * Provider for generating generic {@link OAuthCredential}.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new OAuthProvider('google.com');\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('profile');\n * provider.addScope('email');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a OAuth Access Token for the provider.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new OAuthProvider('google.com');\n * provider.addScope('profile');\n * provider.addScope('email');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a OAuth Access Token for the provider.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * ```\n * @public\n */\nexport class OAuthProvider extends BaseOAuthProvider {\n /**\n * Creates an {@link OAuthCredential} from a JSON string or a plain object.\n * @param json - A plain object or a JSON string\n */\n static credentialFromJSON(json: object | string): OAuthCredential {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n _assert(\n 'providerId' in obj && 'signInMethod' in obj,\n AuthErrorCode.ARGUMENT_ERROR\n );\n return OAuthCredential._fromParams(obj);\n }\n\n /**\n * Creates a {@link OAuthCredential} from a generic OAuth provider's access token or ID token.\n *\n * @remarks\n * The raw nonce is required when an ID token with a nonce field is provided. The SHA-256 hash of\n * the raw nonce must match the nonce field in the ID token.\n *\n * @example\n * ```javascript\n * // `googleUser` from the onsuccess Google Sign In callback.\n * // Initialize a generate OAuth provider with a `google.com` providerId.\n * const provider = new OAuthProvider('google.com');\n * const credential = provider.credential({\n * idToken: googleUser.getAuthResponse().id_token,\n * });\n * const result = await signInWithCredential(credential);\n * ```\n *\n * @param params - Either the options object containing the ID token, access token and raw nonce\n * or the ID token string.\n */\n credential(params: OAuthCredentialOptions): OAuthCredential {\n return this._credential({ ...params, nonce: params.rawNonce });\n }\n\n /** An internal credential method that accepts more permissive options */\n private _credential(\n params: Omit<OAuthCredentialParams, 'signInMethod' | 'providerId'>\n ): OAuthCredential {\n _assert(params.idToken || params.accessToken, AuthErrorCode.ARGUMENT_ERROR);\n // For OAuthCredential, sign in method is same as providerId.\n return OAuthCredential._fromParams({\n ...params,\n providerId: this.providerId,\n signInMethod: this.providerId\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return OAuthProvider.oauthCredentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return OAuthProvider.oauthCredentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static oauthCredentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n\n const {\n oauthIdToken,\n oauthAccessToken,\n oauthTokenSecret,\n pendingToken,\n nonce,\n providerId\n } = tokenResponse as SignInWithIdpResponse;\n if (\n !oauthAccessToken &&\n !oauthTokenSecret &&\n !oauthIdToken &&\n !pendingToken\n ) {\n return null;\n }\n\n if (!providerId) {\n return null;\n }\n\n try {\n return new OAuthProvider(providerId)._credential({\n idToken: oauthIdToken,\n accessToken: oauthAccessToken,\n nonce,\n pendingToken\n });\n } catch (e) {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.FACEBOOK.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('user_birthday');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = FacebookAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new FacebookAuthProvider();\n * provider.addScope('user_birthday');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = FacebookAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * ```\n *\n * @public\n */\nexport class FacebookAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.FACEBOOK. */\n static readonly FACEBOOK_SIGN_IN_METHOD: 'facebook.com' =\n SignInMethod.FACEBOOK;\n /** Always set to {@link ProviderId}.FACEBOOK. */\n static readonly PROVIDER_ID: 'facebook.com' = ProviderId.FACEBOOK;\n\n constructor() {\n super(ProviderId.FACEBOOK);\n }\n\n /**\n * Creates a credential for Facebook.\n *\n * @example\n * ```javascript\n * // `event` from the Facebook auth.authResponseChange callback.\n * const credential = FacebookAuthProvider.credential(event.authResponse.accessToken);\n * const result = await signInWithCredential(credential);\n * ```\n *\n * @param accessToken - Facebook access token.\n */\n static credential(accessToken: string): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: FacebookAuthProvider.PROVIDER_ID,\n signInMethod: FacebookAuthProvider.FACEBOOK_SIGN_IN_METHOD,\n accessToken\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return FacebookAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return FacebookAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse || !('oauthAccessToken' in tokenResponse)) {\n return null;\n }\n\n if (!tokenResponse.oauthAccessToken) {\n return null;\n }\n\n try {\n return FacebookAuthProvider.credential(tokenResponse.oauthAccessToken);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { SignInWithIdpResponse } from '../../api/authentication/idp';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an an {@link OAuthCredential} for {@link ProviderId}.GOOGLE.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new GoogleAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('profile');\n * provider.addScope('email');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Google Access Token.\n * const credential = GoogleAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new GoogleAuthProvider();\n * provider.addScope('profile');\n * provider.addScope('email');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Google Access Token.\n * const credential = GoogleAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * ```\n *\n * @public\n */\nexport class GoogleAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.GOOGLE. */\n static readonly GOOGLE_SIGN_IN_METHOD: 'google.com' = SignInMethod.GOOGLE;\n /** Always set to {@link ProviderId}.GOOGLE. */\n static readonly PROVIDER_ID: 'google.com' = ProviderId.GOOGLE;\n\n constructor() {\n super(ProviderId.GOOGLE);\n this.addScope('profile');\n }\n\n /**\n * Creates a credential for Google. At least one of ID token and access token is required.\n *\n * @example\n * ```javascript\n * // \\`googleUser\\` from the onsuccess Google Sign In callback.\n * const credential = GoogleAuthProvider.credential(googleUser.getAuthResponse().id_token);\n * const result = await signInWithCredential(credential);\n * ```\n *\n * @param idToken - Google ID token.\n * @param accessToken - Google access token.\n */\n static credential(\n idToken?: string | null,\n accessToken?: string | null\n ): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: GoogleAuthProvider.PROVIDER_ID,\n signInMethod: GoogleAuthProvider.GOOGLE_SIGN_IN_METHOD,\n idToken,\n accessToken\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return GoogleAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return GoogleAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n\n const { oauthIdToken, oauthAccessToken } =\n tokenResponse as SignInWithIdpResponse;\n if (!oauthIdToken && !oauthAccessToken) {\n // This could be an oauth 1 credential or a phone credential\n return null;\n }\n\n try {\n return GoogleAuthProvider.credential(oauthIdToken, oauthAccessToken);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.GITHUB.\n *\n * @remarks\n * GitHub requires an OAuth 2.0 redirect, so you can either handle the redirect directly, or use\n * the {@link signInWithPopup} handler:\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new GithubAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * provider.addScope('repo');\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Github Access Token.\n * const credential = GithubAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new GithubAuthProvider();\n * provider.addScope('repo');\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Github Access Token.\n * const credential = GithubAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * ```\n * @public\n */\nexport class GithubAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.GITHUB. */\n static readonly GITHUB_SIGN_IN_METHOD: 'github.com' = SignInMethod.GITHUB;\n /** Always set to {@link ProviderId}.GITHUB. */\n static readonly PROVIDER_ID: 'github.com' = ProviderId.GITHUB;\n\n constructor() {\n super(ProviderId.GITHUB);\n }\n\n /**\n * Creates a credential for Github.\n *\n * @param accessToken - Github access token.\n */\n static credential(accessToken: string): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: GithubAuthProvider.PROVIDER_ID,\n signInMethod: GithubAuthProvider.GITHUB_SIGN_IN_METHOD,\n accessToken\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return GithubAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return GithubAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse || !('oauthAccessToken' in tokenResponse)) {\n return null;\n }\n\n if (!tokenResponse.oauthAccessToken) {\n return null;\n }\n\n try {\n return GithubAuthProvider.credential(tokenResponse.oauthAccessToken);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Represents the SAML credentials returned by an {@link SAMLAuthProvider}.\n *\n * @public\n */\n\nimport {\n signInWithIdp,\n SignInWithIdpRequest\n} from '../../api/authentication/idp';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { AuthCredential } from './auth_credential';\n\nconst IDP_REQUEST_URI = 'http://localhost';\n\n/**\n * @public\n */\nexport class SAMLAuthCredential extends AuthCredential {\n /** @internal */\n private constructor(\n providerId: string,\n private readonly pendingToken: string\n ) {\n super(providerId, providerId);\n }\n\n /** @internal */\n _getIdTokenResponse(auth: AuthInternal): Promise<IdTokenResponse> {\n const request = this.buildRequest();\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise<IdTokenResponse> {\n const request = this.buildRequest();\n request.idToken = idToken;\n return signInWithIdp(auth, request);\n }\n\n /** @internal */\n _getReauthenticationResolver(auth: AuthInternal): Promise<IdTokenResponse> {\n const request = this.buildRequest();\n request.autoCreate = false;\n return signInWithIdp(auth, request);\n }\n\n /** {@inheritdoc AuthCredential.toJSON} */\n toJSON(): object {\n return {\n signInMethod: this.signInMethod,\n providerId: this.providerId,\n pendingToken: this.pendingToken\n };\n }\n\n /**\n * Static method to deserialize a JSON representation of an object into an\n * {@link AuthCredential}.\n *\n * @param json - Input can be either Object or the stringified representation of the object.\n * When string is provided, JSON.parse would be called first.\n *\n * @returns If the JSON input does not represent an {@link AuthCredential}, null is returned.\n */\n static fromJSON(json: string | object): SAMLAuthCredential | null {\n const obj = typeof json === 'string' ? JSON.parse(json) : json;\n const { providerId, signInMethod, pendingToken }: Record<string, string> =\n obj;\n if (\n !providerId ||\n !signInMethod ||\n !pendingToken ||\n providerId !== signInMethod\n ) {\n return null;\n }\n\n return new SAMLAuthCredential(providerId, pendingToken);\n }\n\n /**\n * Helper static method to avoid exposing the constructor to end users.\n *\n * @internal\n */\n static _create(providerId: string, pendingToken: string): SAMLAuthCredential {\n return new SAMLAuthCredential(providerId, pendingToken);\n }\n\n private buildRequest(): SignInWithIdpRequest {\n return {\n requestUri: IDP_REQUEST_URI,\n returnSecureToken: true,\n pendingToken: this.pendingToken\n };\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @license\n * Copyright 2020 Twitter LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential } from '../../model/public_types';\nimport { FirebaseError } from '@firebase/util';\n\nimport { SignInWithIdpResponse } from '../../api/authentication/idp';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { UserCredentialInternal } from '../../model/user';\nimport { OAuthCredential } from '../credentials/oauth';\nimport { BaseOAuthProvider } from './oauth';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link OAuthCredential} for {@link ProviderId}.TWITTER.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new TwitterAuthProvider();\n * // Start a sign in process for an unauthenticated user.\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Twitter Access Token and Secret.\n * const credential = TwitterAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * const secret = credential.secret;\n * }\n * ```\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new TwitterAuthProvider();\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Twitter Access Token and Secret.\n * const credential = TwitterAuthProvider.credentialFromResult(result);\n * const token = credential.accessToken;\n * const secret = credential.secret;\n * ```\n *\n * @public\n */\nexport class TwitterAuthProvider extends BaseOAuthProvider {\n /** Always set to {@link SignInMethod}.TWITTER. */\n static readonly TWITTER_SIGN_IN_METHOD: 'twitter.com' = SignInMethod.TWITTER;\n /** Always set to {@link ProviderId}.TWITTER. */\n static readonly PROVIDER_ID: 'twitter.com' = ProviderId.TWITTER;\n\n constructor() {\n super(ProviderId.TWITTER);\n }\n\n /**\n * Creates a credential for Twitter.\n *\n * @param token - Twitter access token.\n * @param secret - Twitter secret.\n */\n static credential(token: string, secret: string): OAuthCredential {\n return OAuthCredential._fromParams({\n providerId: TwitterAuthProvider.PROVIDER_ID,\n signInMethod: TwitterAuthProvider.TWITTER_SIGN_IN_METHOD,\n oauthToken: token,\n oauthTokenSecret: secret\n });\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link UserCredential}.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): OAuthCredential | null {\n return TwitterAuthProvider.credentialFromTaggedObject(\n userCredential as UserCredentialInternal\n );\n }\n\n /**\n * Used to extract the underlying {@link OAuthCredential} from a {@link AuthError} which was\n * thrown during a sign-in, link, or reauthenticate operation.\n *\n * @param userCredential - The user credential.\n */\n static credentialFromError(error: FirebaseError): OAuthCredential | null {\n return TwitterAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): OAuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n const { oauthAccessToken, oauthTokenSecret } =\n tokenResponse as SignInWithIdpResponse;\n if (!oauthAccessToken || !oauthTokenSecret) {\n return null;\n }\n\n try {\n return TwitterAuthProvider.credential(oauthAccessToken, oauthTokenSecret);\n } catch {\n return null;\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n RecaptchaClientType,\n RecaptchaVersion,\n _addTidIfNecessary,\n _performSignInRequest\n} from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface SignUpRequest {\n returnSecureToken?: boolean;\n email?: string;\n password?: string;\n tenantId?: string;\n captchaResponse?: string;\n clientType?: RecaptchaClientType;\n recaptchaVersion?: RecaptchaVersion;\n}\n\nexport interface SignUpResponse extends IdTokenResponse {\n displayName?: string;\n email?: string;\n}\n\nexport async function signUp(\n auth: Auth,\n request: SignUpRequest\n): Promise<SignUpResponse> {\n return _performSignInRequest<SignUpRequest, SignUpResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_UP,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { UserImpl } from './user_impl';\nimport { AuthInternal } from '../../model/auth';\nimport { OperationType, ProviderId } from '../../model/enums';\n\ninterface UserCredentialParams {\n readonly user: UserInternal;\n readonly providerId: ProviderId | string | null;\n readonly _tokenResponse?: PhoneOrOauthTokenResponse;\n readonly operationType: OperationType;\n}\n\nexport class UserCredentialImpl\n implements UserCredentialInternal, UserCredentialParams\n{\n readonly user: UserInternal;\n readonly providerId: ProviderId | string | null;\n readonly _tokenResponse: PhoneOrOauthTokenResponse | undefined;\n readonly operationType: OperationType;\n\n constructor(params: UserCredentialParams) {\n this.user = params.user;\n this.providerId = params.providerId;\n this._tokenResponse = params._tokenResponse;\n this.operationType = params.operationType;\n }\n\n static async _fromIdTokenResponse(\n auth: AuthInternal,\n operationType: OperationType,\n idTokenResponse: IdTokenResponse,\n isAnonymous: boolean = false\n ): Promise<UserCredentialInternal> {\n const user = await UserImpl._fromIdTokenResponse(\n auth,\n idTokenResponse,\n isAnonymous\n );\n const providerId = providerIdForResponse(idTokenResponse);\n const userCred = new UserCredentialImpl({\n user,\n providerId,\n _tokenResponse: idTokenResponse,\n operationType\n });\n return userCred;\n }\n\n static async _forOperation(\n user: UserInternal,\n operationType: OperationType,\n response: PhoneOrOauthTokenResponse\n ): Promise<UserCredentialImpl> {\n await user._updateTokensIfNecessary(response, /* reload */ true);\n const providerId = providerIdForResponse(response);\n return new UserCredentialImpl({\n user,\n providerId,\n _tokenResponse: response,\n operationType\n });\n }\n}\n\nfunction providerIdForResponse(\n response: IdTokenResponse\n): ProviderId | string | null {\n if (response.providerId) {\n return response.providerId;\n }\n\n if ('phoneNumber' in response) {\n return ProviderId.PHONE;\n }\n\n return null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Auth, UserCredential } from '../../model/public_types';\nimport { signUp } from '../../api/authentication/sign_up';\nimport { UserInternal } from '../../model/user';\nimport { UserCredentialImpl } from '../user/user_credential_impl';\nimport { _castAuth } from '../auth/auth_impl';\nimport { OperationType } from '../../model/enums';\n\n/**\n * Asynchronously signs in as an anonymous user.\n *\n * @remarks\n * If there is already an anonymous user signed in, that user will be returned; otherwise, a\n * new anonymous user identity will be created and returned.\n *\n * @param auth - The {@link Auth} instance.\n *\n * @public\n */\nexport async function signInAnonymously(auth: Auth): Promise<UserCredential> {\n const authInternal = _castAuth(auth);\n await authInternal._initializationPromise;\n if (authInternal.currentUser?.isAnonymous) {\n // If an anonymous user is already signed in, no need to sign them in again.\n return new UserCredentialImpl({\n user: authInternal.currentUser as UserInternal,\n providerId: null,\n operationType: OperationType.SIGN_IN\n });\n }\n const response = await signUp(authInternal, {\n returnSecureToken: true\n });\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(\n authInternal,\n OperationType.SIGN_IN,\n response,\n true\n );\n await authInternal._updateCurrentUser(userCredential.user);\n return userCredential;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MultiFactorError as MultiFactorErrorPublic } from '../model/public_types';\nimport { FirebaseError } from '@firebase/util';\nimport { AuthInternal } from '../model/auth';\nimport { IdTokenResponse } from '../model/id_token';\nimport { AuthErrorCode } from '../core/errors';\nimport { UserInternal } from '../model/user';\nimport { AuthCredential } from '../core/credentials';\nimport { IdTokenMfaResponse } from '../api/authentication/mfa';\nimport { OperationType } from '../model/enums';\n\nexport type MultiFactorErrorData = MultiFactorErrorPublic['customData'] & {\n _serverResponse: IdTokenMfaResponse;\n};\n\nexport class MultiFactorError\n extends FirebaseError\n implements MultiFactorErrorPublic\n{\n readonly customData: MultiFactorErrorData;\n\n private constructor(\n auth: AuthInternal,\n error: FirebaseError,\n readonly operationType: OperationType,\n readonly user?: UserInternal\n ) {\n super(error.code, error.message);\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n Object.setPrototypeOf(this, MultiFactorError.prototype);\n this.customData = {\n appName: auth.name,\n tenantId: auth.tenantId ?? undefined,\n _serverResponse: error.customData!._serverResponse as IdTokenMfaResponse,\n operationType\n };\n }\n\n static _fromErrorAndOperation(\n auth: AuthInternal,\n error: FirebaseError,\n operationType: OperationType,\n user?: UserInternal\n ): MultiFactorError {\n return new MultiFactorError(auth, error, operationType, user);\n }\n}\n\nexport function _processCredentialSavingMfaContextIfNecessary(\n auth: AuthInternal,\n operationType: OperationType,\n credential: AuthCredential,\n user?: UserInternal\n): Promise<IdTokenResponse> {\n const idTokenProvider =\n operationType === OperationType.REAUTHENTICATE\n ? credential._getReauthenticationResolver(auth)\n : credential._getIdTokenResponse(auth);\n\n return idTokenProvider.catch(error => {\n if (error.code === `auth/${AuthErrorCode.MFA_REQUIRED}`) {\n throw MultiFactorError._fromErrorAndOperation(\n auth,\n error,\n operationType,\n user\n );\n }\n\n throw error;\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ProviderAssociatedObject {\n providerId?: string;\n}\n\n/**\n * Takes a set of UserInfo provider data and converts it to a set of names\n */\nexport function providerDataAsNames<T extends ProviderAssociatedObject>(\n providerData: T[]\n): Set<string> {\n return new Set(\n providerData\n .map(({ providerId }) => providerId)\n .filter(pid => !!pid) as string[]\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { User } from '../../model/public_types';\n\nimport { deleteLinkedAccounts } from '../../api/account_management/account';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { providerDataAsNames } from '../util/providers';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { _reloadWithoutSaving } from './reload';\nimport { UserCredentialImpl } from './user_credential_impl';\nimport { getModularInstance } from '@firebase/util';\nimport { OperationType, ProviderId } from '../../model/enums';\n\n/**\n * Unlinks a provider from a user account.\n *\n * @param user - The user.\n * @param providerId - The provider to unlink.\n *\n * @public\n */\nexport async function unlink(user: User, providerId: string): Promise<User> {\n const userInternal = getModularInstance(user) as UserInternal;\n await _assertLinkedStatus(true, userInternal, providerId);\n const { providerUserInfo } = await deleteLinkedAccounts(userInternal.auth, {\n idToken: await userInternal.getIdToken(),\n deleteProvider: [providerId]\n });\n\n const providersLeft = providerDataAsNames(providerUserInfo || []);\n\n userInternal.providerData = userInternal.providerData.filter(pd =>\n providersLeft.has(pd.providerId)\n );\n if (!providersLeft.has(ProviderId.PHONE)) {\n userInternal.phoneNumber = null;\n }\n\n await userInternal.auth._persistUserIfCurrent(userInternal);\n return userInternal;\n}\n\nexport async function _link(\n user: UserInternal,\n credential: AuthCredential,\n bypassAuthState = false\n): Promise<UserCredentialInternal> {\n const response = await _logoutIfInvalidated(\n user,\n credential._linkToIdToken(user.auth, await user.getIdToken()),\n bypassAuthState\n );\n return UserCredentialImpl._forOperation(user, OperationType.LINK, response);\n}\n\nexport async function _assertLinkedStatus(\n expected: boolean,\n user: UserInternal,\n provider: string\n): Promise<void> {\n await _reloadWithoutSaving(user);\n const providerIds = providerDataAsNames(user.providerData);\n\n const code =\n expected === false\n ? AuthErrorCode.PROVIDER_ALREADY_LINKED\n : AuthErrorCode.NO_SUCH_PROVIDER;\n _assert(providerIds.has(provider) === expected, user.auth, code);\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\nimport { _processCredentialSavingMfaContextIfNecessary } from '../../mfa/mfa_error';\nimport { OperationType } from '../../model/enums';\nimport { UserInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { AuthErrorCode } from '../errors';\nimport { _assert, _fail } from '../util/assert';\nimport { _parseToken } from './id_token_result';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { UserCredentialImpl } from './user_credential_impl';\n\nexport async function _reauthenticate(\n user: UserInternal,\n credential: AuthCredential,\n bypassAuthState = false\n): Promise<UserCredentialImpl> {\n const { auth } = user;\n const operationType = OperationType.REAUTHENTICATE;\n\n try {\n const response = await _logoutIfInvalidated(\n user,\n _processCredentialSavingMfaContextIfNecessary(\n auth,\n operationType,\n credential,\n user\n ),\n bypassAuthState\n );\n _assert(response.idToken, auth, AuthErrorCode.INTERNAL_ERROR);\n const parsed = _parseToken(response.idToken);\n _assert(parsed, auth, AuthErrorCode.INTERNAL_ERROR);\n\n const { sub: localId } = parsed;\n _assert(user.uid === localId, auth, AuthErrorCode.USER_MISMATCH);\n\n return UserCredentialImpl._forOperation(user, operationType, response);\n } catch (e) {\n // Convert user deleted error into user mismatch\n if ((e as FirebaseError)?.code === `auth/${AuthErrorCode.USER_DELETED}`) {\n _fail(auth, AuthErrorCode.USER_MISMATCH);\n }\n throw e;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { UserCredential, Auth, User } from '../../model/public_types';\n\nimport { _processCredentialSavingMfaContextIfNecessary } from '../../mfa/mfa_error';\nimport { AuthInternal } from '../../model/auth';\nimport { UserInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { _assertLinkedStatus, _link } from '../user/link_unlink';\nimport { _reauthenticate } from '../user/reauthenticate';\nimport { UserCredentialImpl } from '../user/user_credential_impl';\nimport { _castAuth } from '../auth/auth_impl';\nimport { getModularInstance } from '@firebase/util';\nimport { OperationType } from '../../model/enums';\n\nexport async function _signInWithCredential(\n auth: AuthInternal,\n credential: AuthCredential,\n bypassAuthState = false\n): Promise<UserCredential> {\n const operationType = OperationType.SIGN_IN;\n const response = await _processCredentialSavingMfaContextIfNecessary(\n auth,\n operationType,\n credential\n );\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(\n auth,\n operationType,\n response\n );\n\n if (!bypassAuthState) {\n await auth._updateCurrentUser(userCredential.user);\n }\n return userCredential;\n}\n\n/**\n * Asynchronously signs in with the given credentials.\n *\n * @remarks\n * An {@link AuthProvider} can be used to generate the credential.\n *\n * @param auth - The {@link Auth} instance.\n * @param credential - The auth credential.\n *\n * @public\n */\nexport async function signInWithCredential(\n auth: Auth,\n credential: AuthCredential\n): Promise<UserCredential> {\n return _signInWithCredential(_castAuth(auth), credential);\n}\n\n/**\n * Links the user account with the given credentials.\n *\n * @remarks\n * An {@link AuthProvider} can be used to generate the credential.\n *\n * @param user - The user.\n * @param credential - The auth credential.\n *\n * @public\n */\nexport async function linkWithCredential(\n user: User,\n credential: AuthCredential\n): Promise<UserCredential> {\n const userInternal = getModularInstance(user) as UserInternal;\n\n await _assertLinkedStatus(false, userInternal, credential.providerId);\n\n return _link(userInternal, credential);\n}\n\n/**\n * Re-authenticates a user using a fresh credential.\n *\n * @remarks\n * Use before operations such as {@link updatePassword} that require tokens from recent sign-in\n * attempts. This method can be used to recover from a `CREDENTIAL_TOO_OLD_LOGIN_AGAIN` error\n * or a `TOKEN_EXPIRED` error.\n *\n * @param user - The user.\n * @param credential - The auth credential.\n *\n * @public\n */\nexport async function reauthenticateWithCredential(\n user: User,\n credential: AuthCredential\n): Promise<UserCredential> {\n return _reauthenticate(getModularInstance(user) as UserInternal, credential);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performSignInRequest\n} from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface SignInWithCustomTokenRequest {\n token: string;\n returnSecureToken: boolean;\n tenantId?: string;\n}\n\nexport interface SignInWithCustomTokenResponse extends IdTokenResponse {}\n\nexport async function signInWithCustomToken(\n auth: Auth,\n request: SignInWithCustomTokenRequest\n): Promise<SignInWithCustomTokenResponse> {\n return _performSignInRequest<\n SignInWithCustomTokenRequest,\n SignInWithCustomTokenResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.SIGN_IN_WITH_CUSTOM_TOKEN,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Auth, UserCredential } from '../../model/public_types';\n\nimport { signInWithCustomToken as getIdTokenResponse } from '../../api/authentication/custom_token';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { UserCredentialImpl } from '../user/user_credential_impl';\nimport { _castAuth } from '../auth/auth_impl';\nimport { OperationType } from '../../model/enums';\n\n/**\n * Asynchronously signs in using a custom token.\n *\n * @remarks\n * Custom tokens are used to integrate Firebase Auth with existing auth systems, and must\n * be generated by an auth backend using the\n * {@link https://firebase.google.com/docs/reference/admin/node/admin.auth.Auth#createcustomtoken | createCustomToken}\n * method in the {@link https://firebase.google.com/docs/auth/admin | Admin SDK} .\n *\n * Fails with an error if the token is invalid, expired, or not accepted by the Firebase Auth service.\n *\n * @param auth - The {@link Auth} instance.\n * @param customToken - The custom token to sign in with.\n *\n * @public\n */\nexport async function signInWithCustomToken(\n auth: Auth,\n customToken: string\n): Promise<UserCredential> {\n const authInternal = _castAuth(auth);\n const response: IdTokenResponse = await getIdTokenResponse(authInternal, {\n token: customToken,\n returnSecureToken: true\n });\n const cred = await UserCredentialImpl._fromIdTokenResponse(\n authInternal,\n OperationType.SIGN_IN,\n response\n );\n await authInternal._updateCurrentUser(cred.user);\n return cred;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionCodeSettings, Auth } from '../../model/public_types';\n\nimport { GetOobCodeRequest } from '../../api/authentication/email_and_password';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\n\nexport function _setActionCodeSettingsOnRequest(\n auth: Auth,\n request: GetOobCodeRequest,\n actionCodeSettings: ActionCodeSettings\n): void {\n _assert(\n actionCodeSettings.url?.length > 0,\n auth,\n AuthErrorCode.INVALID_CONTINUE_URI\n );\n _assert(\n typeof actionCodeSettings.dynamicLinkDomain === 'undefined' ||\n actionCodeSettings.dynamicLinkDomain.length > 0,\n auth,\n AuthErrorCode.INVALID_DYNAMIC_LINK_DOMAIN\n );\n\n request.continueUrl = actionCodeSettings.url;\n request.dynamicLinkDomain = actionCodeSettings.dynamicLinkDomain;\n request.canHandleCodeInApp = actionCodeSettings.handleCodeInApp;\n\n if (actionCodeSettings.iOS) {\n _assert(\n actionCodeSettings.iOS.bundleId.length > 0,\n auth,\n AuthErrorCode.MISSING_IOS_BUNDLE_ID\n );\n request.iOSBundleId = actionCodeSettings.iOS.bundleId;\n }\n\n if (actionCodeSettings.android) {\n _assert(\n actionCodeSettings.android.packageName.length > 0,\n auth,\n AuthErrorCode.MISSING_ANDROID_PACKAGE_NAME\n );\n request.androidInstallApp = actionCodeSettings.android.installApp;\n request.androidMinimumVersionCode =\n actionCodeSettings.android.minimumVersion;\n request.androidPackageName = actionCodeSettings.android.packageName;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ActionCodeInfo,\n ActionCodeOperation,\n ActionCodeSettings,\n Auth,\n UserCredential\n} from '../../model/public_types';\n\nimport * as account from '../../api/account_management/email_and_password';\nimport * as authentication from '../../api/authentication/email_and_password';\nimport { signUp, SignUpRequest } from '../../api/authentication/sign_up';\nimport { MultiFactorInfoImpl } from '../../mfa/mfa_info';\nimport { EmailAuthProvider } from '../providers/email';\nimport { UserCredentialImpl } from '../user/user_credential_impl';\nimport { _assert } from '../util/assert';\nimport { _setActionCodeSettingsOnRequest } from './action_code_settings';\nimport { signInWithCredential } from './credential';\nimport { _castAuth } from '../auth/auth_impl';\nimport { AuthErrorCode } from '../errors';\nimport { getModularInstance } from '@firebase/util';\nimport { OperationType } from '../../model/enums';\nimport { injectRecaptchaFields } from '../../platform_browser/recaptcha/recaptcha_enterprise_verifier';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { RecaptchaActionName, RecaptchaClientType } from '../../api';\n\n/**\n * Updates the password policy cached in the {@link Auth} instance if a policy is already\n * cached for the project or tenant.\n *\n * @remarks\n * We only fetch the password policy if the password did not meet policy requirements and\n * there is an existing policy cached. A developer must call validatePassword at least\n * once for the cache to be automatically updated.\n *\n * @param auth - The {@link Auth} instance.\n *\n * @private\n */\nasync function recachePasswordPolicy(auth: Auth): Promise<void> {\n const authInternal = _castAuth(auth);\n if (authInternal._getPasswordPolicyInternal()) {\n await authInternal._updatePasswordPolicy();\n }\n}\n\n/**\n * Sends a password reset email to the given email address.\n *\n * @remarks\n * To complete the password reset, call {@link confirmPasswordReset} with the code supplied in\n * the email sent to the user, along with the new password specified by the user.\n *\n * @example\n * ```javascript\n * const actionCodeSettings = {\n * url: 'https://www.example.com/?email=user@example.com',\n * iOS: {\n * bundleId: 'com.example.ios'\n * },\n * android: {\n * packageName: 'com.example.android',\n * installApp: true,\n * minimumVersion: '12'\n * },\n * handleCodeInApp: true\n * };\n * await sendPasswordResetEmail(auth, 'user@example.com', actionCodeSettings);\n * // Obtain code from user.\n * await confirmPasswordReset('user@example.com', code);\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param email - The user's email address.\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\n *\n * @public\n */\nexport async function sendPasswordResetEmail(\n auth: Auth,\n email: string,\n actionCodeSettings?: ActionCodeSettings\n): Promise<void> {\n const authInternal = _castAuth(auth);\n const request: authentication.PasswordResetRequest = {\n requestType: ActionCodeOperation.PASSWORD_RESET,\n email,\n clientType: RecaptchaClientType.WEB\n };\n if (authInternal._getRecaptchaConfig()?.emailPasswordEnabled) {\n const requestWithRecaptcha = await injectRecaptchaFields(\n authInternal,\n request,\n RecaptchaActionName.GET_OOB_CODE,\n true\n );\n if (actionCodeSettings) {\n _setActionCodeSettingsOnRequest(\n authInternal,\n requestWithRecaptcha,\n actionCodeSettings\n );\n }\n await authentication.sendPasswordResetEmail(\n authInternal,\n requestWithRecaptcha\n );\n } else {\n if (actionCodeSettings) {\n _setActionCodeSettingsOnRequest(\n authInternal,\n request,\n actionCodeSettings\n );\n }\n await authentication\n .sendPasswordResetEmail(authInternal, request)\n .catch(async error => {\n if (error.code === `auth/${AuthErrorCode.MISSING_RECAPTCHA_TOKEN}`) {\n console.log(\n 'Password resets are protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the password reset flow.'\n );\n const requestWithRecaptcha = await injectRecaptchaFields(\n authInternal,\n request,\n RecaptchaActionName.GET_OOB_CODE,\n true\n );\n if (actionCodeSettings) {\n _setActionCodeSettingsOnRequest(\n authInternal,\n requestWithRecaptcha,\n actionCodeSettings\n );\n }\n await authentication.sendPasswordResetEmail(\n authInternal,\n requestWithRecaptcha\n );\n } else {\n return Promise.reject(error);\n }\n });\n }\n}\n\n/**\n * Completes the password reset process, given a confirmation code and new password.\n *\n * @param auth - The {@link Auth} instance.\n * @param oobCode - A confirmation code sent to the user.\n * @param newPassword - The new password.\n *\n * @public\n */\nexport async function confirmPasswordReset(\n auth: Auth,\n oobCode: string,\n newPassword: string\n): Promise<void> {\n await account\n .resetPassword(getModularInstance(auth), {\n oobCode,\n newPassword\n })\n .catch(async error => {\n if (\n error.code ===\n `auth/${AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS}`\n ) {\n void recachePasswordPolicy(auth);\n }\n\n throw error;\n });\n // Do not return the email.\n}\n\n/**\n * Applies a verification code sent to the user by email or other out-of-band mechanism.\n *\n * @param auth - The {@link Auth} instance.\n * @param oobCode - A verification code sent to the user.\n *\n * @public\n */\nexport async function applyActionCode(\n auth: Auth,\n oobCode: string\n): Promise<void> {\n await account.applyActionCode(getModularInstance(auth), { oobCode });\n}\n\n/**\n * Checks a verification code sent to the user by email or other out-of-band mechanism.\n *\n * @returns metadata about the code.\n *\n * @param auth - The {@link Auth} instance.\n * @param oobCode - A verification code sent to the user.\n *\n * @public\n */\nexport async function checkActionCode(\n auth: Auth,\n oobCode: string\n): Promise<ActionCodeInfo> {\n const authModular = getModularInstance(auth);\n const response = await account.resetPassword(authModular, { oobCode });\n\n // Email could be empty only if the request type is EMAIL_SIGNIN or\n // VERIFY_AND_CHANGE_EMAIL.\n // New email should not be empty if the request type is\n // VERIFY_AND_CHANGE_EMAIL.\n // Multi-factor info could not be empty if the request type is\n // REVERT_SECOND_FACTOR_ADDITION.\n const operation = response.requestType;\n _assert(operation, authModular, AuthErrorCode.INTERNAL_ERROR);\n switch (operation) {\n case ActionCodeOperation.EMAIL_SIGNIN:\n break;\n case ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL:\n _assert(response.newEmail, authModular, AuthErrorCode.INTERNAL_ERROR);\n break;\n case ActionCodeOperation.REVERT_SECOND_FACTOR_ADDITION:\n _assert(response.mfaInfo, authModular, AuthErrorCode.INTERNAL_ERROR);\n // fall through\n default:\n _assert(response.email, authModular, AuthErrorCode.INTERNAL_ERROR);\n }\n\n // The multi-factor info for revert second factor addition\n let multiFactorInfo: MultiFactorInfoImpl | null = null;\n if (response.mfaInfo) {\n multiFactorInfo = MultiFactorInfoImpl._fromServerResponse(\n _castAuth(authModular),\n response.mfaInfo\n );\n }\n\n return {\n data: {\n email:\n (response.requestType === ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL\n ? response.newEmail\n : response.email) || null,\n previousEmail:\n (response.requestType === ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL\n ? response.email\n : response.newEmail) || null,\n multiFactorInfo\n },\n operation\n };\n}\n\n/**\n * Checks a password reset code sent to the user by email or other out-of-band mechanism.\n *\n * @returns the user's email address if valid.\n *\n * @param auth - The {@link Auth} instance.\n * @param code - A verification code sent to the user.\n *\n * @public\n */\nexport async function verifyPasswordResetCode(\n auth: Auth,\n code: string\n): Promise<string> {\n const { data } = await checkActionCode(getModularInstance(auth), code);\n // Email should always be present since a code was sent to it\n return data.email!;\n}\n\n/**\n * Creates a new user account associated with the specified email address and password.\n *\n * @remarks\n * On successful creation of the user account, this user will also be signed in to your application.\n *\n * User account creation can fail if the account already exists or the password is invalid.\n *\n * Note: The email address acts as a unique identifier for the user and enables an email-based\n * password reset. This function will create a new user account and set the initial user password.\n *\n * @param auth - The {@link Auth} instance.\n * @param email - The user's email address.\n * @param password - The user's chosen password.\n *\n * @public\n */\nexport async function createUserWithEmailAndPassword(\n auth: Auth,\n email: string,\n password: string\n): Promise<UserCredential> {\n const authInternal = _castAuth(auth);\n const request: SignUpRequest = {\n returnSecureToken: true,\n email,\n password,\n clientType: RecaptchaClientType.WEB\n };\n let signUpResponse: Promise<IdTokenResponse>;\n if (authInternal._getRecaptchaConfig()?.emailPasswordEnabled) {\n const requestWithRecaptcha = await injectRecaptchaFields(\n authInternal,\n request,\n RecaptchaActionName.SIGN_UP_PASSWORD\n );\n signUpResponse = signUp(authInternal, requestWithRecaptcha);\n } else {\n signUpResponse = signUp(authInternal, request).catch(async error => {\n if (error.code === `auth/${AuthErrorCode.MISSING_RECAPTCHA_TOKEN}`) {\n console.log(\n 'Sign-up is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-up flow.'\n );\n const requestWithRecaptcha = await injectRecaptchaFields(\n authInternal,\n request,\n RecaptchaActionName.SIGN_UP_PASSWORD\n );\n return signUp(authInternal, requestWithRecaptcha);\n }\n\n throw error;\n });\n }\n\n const response = await signUpResponse.catch(error => {\n if (\n error.code === `auth/${AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS}`\n ) {\n void recachePasswordPolicy(auth);\n }\n\n throw error;\n });\n\n const userCredential = await UserCredentialImpl._fromIdTokenResponse(\n authInternal,\n OperationType.SIGN_IN,\n response\n );\n await authInternal._updateCurrentUser(userCredential.user);\n\n return userCredential;\n}\n\n/**\n * Asynchronously signs in using an email and password.\n *\n * @remarks\n * Fails with an error if the email address and password do not match.\n *\n * Note: The user's password is NOT the password used to access the user's email account. The\n * email address serves as a unique identifier for the user, and the password is used to access\n * the user's account in your Firebase project. See also: {@link createUserWithEmailAndPassword}.\n *\n * @param auth - The {@link Auth} instance.\n * @param email - The users email address.\n * @param password - The users password.\n *\n * @public\n */\nexport function signInWithEmailAndPassword(\n auth: Auth,\n email: string,\n password: string\n): Promise<UserCredential> {\n return signInWithCredential(\n getModularInstance(auth),\n EmailAuthProvider.credential(email, password)\n ).catch(async error => {\n if (\n error.code === `auth/${AuthErrorCode.PASSWORD_DOES_NOT_MEET_REQUIREMENTS}`\n ) {\n void recachePasswordPolicy(auth);\n }\n\n throw error;\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ActionCodeOperation,\n ActionCodeSettings,\n Auth,\n UserCredential\n} from '../../model/public_types';\n\nimport * as api from '../../api/authentication/email_and_password';\nimport { ActionCodeURL } from '../action_code_url';\nimport { EmailAuthProvider } from '../providers/email';\nimport { _getCurrentUrl } from '../util/location';\nimport { _setActionCodeSettingsOnRequest } from './action_code_settings';\nimport { signInWithCredential } from './credential';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { getModularInstance } from '@firebase/util';\nimport { _castAuth } from '../auth/auth_impl';\nimport { injectRecaptchaFields } from '../../platform_browser/recaptcha/recaptcha_enterprise_verifier';\nimport { RecaptchaActionName, RecaptchaClientType } from '../../api';\n\n/**\n * Sends a sign-in email link to the user with the specified email.\n *\n * @remarks\n * The sign-in operation has to always be completed in the app unlike other out of band email\n * actions (password reset and email verifications). This is because, at the end of the flow,\n * the user is expected to be signed in and their Auth state persisted within the app.\n *\n * To complete sign in with the email link, call {@link signInWithEmailLink} with the email\n * address and the email link supplied in the email sent to the user.\n *\n * @example\n * ```javascript\n * const actionCodeSettings = {\n * url: 'https://www.example.com/?email=user@example.com',\n * iOS: {\n * bundleId: 'com.example.ios'\n * },\n * android: {\n * packageName: 'com.example.android',\n * installApp: true,\n * minimumVersion: '12'\n * },\n * handleCodeInApp: true\n * };\n * await sendSignInLinkToEmail(auth, 'user@example.com', actionCodeSettings);\n * // Obtain emailLink from the user.\n * if(isSignInWithEmailLink(auth, emailLink)) {\n * await signInWithEmailLink(auth, 'user@example.com', emailLink);\n * }\n * ```\n *\n * @param authInternal - The {@link Auth} instance.\n * @param email - The user's email address.\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\n *\n * @public\n */\nexport async function sendSignInLinkToEmail(\n auth: Auth,\n email: string,\n actionCodeSettings: ActionCodeSettings\n): Promise<void> {\n const authInternal = _castAuth(auth);\n const request: api.EmailSignInRequest = {\n requestType: ActionCodeOperation.EMAIL_SIGNIN,\n email,\n clientType: RecaptchaClientType.WEB\n };\n function setActionCodeSettings(\n request: api.EmailSignInRequest,\n actionCodeSettings: ActionCodeSettings\n ): void {\n _assert(\n actionCodeSettings.handleCodeInApp,\n authInternal,\n AuthErrorCode.ARGUMENT_ERROR\n );\n if (actionCodeSettings) {\n _setActionCodeSettingsOnRequest(\n authInternal,\n request,\n actionCodeSettings\n );\n }\n }\n if (authInternal._getRecaptchaConfig()?.emailPasswordEnabled) {\n const requestWithRecaptcha = await injectRecaptchaFields(\n authInternal,\n request,\n RecaptchaActionName.GET_OOB_CODE,\n true\n );\n setActionCodeSettings(requestWithRecaptcha, actionCodeSettings);\n await api.sendSignInLinkToEmail(authInternal, requestWithRecaptcha);\n } else {\n setActionCodeSettings(request, actionCodeSettings);\n await api\n .sendSignInLinkToEmail(authInternal, request)\n .catch(async error => {\n if (error.code === `auth/${AuthErrorCode.MISSING_RECAPTCHA_TOKEN}`) {\n console.log(\n 'Email link sign-in is protected by reCAPTCHA for this project. Automatically triggering the reCAPTCHA flow and restarting the sign-in flow.'\n );\n const requestWithRecaptcha = await injectRecaptchaFields(\n authInternal,\n request,\n RecaptchaActionName.GET_OOB_CODE,\n true\n );\n setActionCodeSettings(requestWithRecaptcha, actionCodeSettings);\n await api.sendSignInLinkToEmail(authInternal, requestWithRecaptcha);\n } else {\n return Promise.reject(error);\n }\n });\n }\n}\n\n/**\n * Checks if an incoming link is a sign-in with email link suitable for {@link signInWithEmailLink}.\n *\n * @param auth - The {@link Auth} instance.\n * @param emailLink - The link sent to the user's email address.\n *\n * @public\n */\nexport function isSignInWithEmailLink(auth: Auth, emailLink: string): boolean {\n const actionCodeUrl = ActionCodeURL.parseLink(emailLink);\n return actionCodeUrl?.operation === ActionCodeOperation.EMAIL_SIGNIN;\n}\n\n/**\n * Asynchronously signs in using an email and sign-in email link.\n *\n * @remarks\n * If no link is passed, the link is inferred from the current URL.\n *\n * Fails with an error if the email address is invalid or OTP in email link expires.\n *\n * Note: Confirm the link is a sign-in email link before calling this method firebase.auth.Auth.isSignInWithEmailLink.\n *\n * @example\n * ```javascript\n * const actionCodeSettings = {\n * url: 'https://www.example.com/?email=user@example.com',\n * iOS: {\n * bundleId: 'com.example.ios'\n * },\n * android: {\n * packageName: 'com.example.android',\n * installApp: true,\n * minimumVersion: '12'\n * },\n * handleCodeInApp: true\n * };\n * await sendSignInLinkToEmail(auth, 'user@example.com', actionCodeSettings);\n * // Obtain emailLink from the user.\n * if(isSignInWithEmailLink(auth, emailLink)) {\n * await signInWithEmailLink(auth, 'user@example.com', emailLink);\n * }\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param email - The user's email address.\n * @param emailLink - The link sent to the user's email address.\n *\n * @public\n */\nexport async function signInWithEmailLink(\n auth: Auth,\n email: string,\n emailLink?: string\n): Promise<UserCredential> {\n const authModular = getModularInstance(auth);\n const credential = EmailAuthProvider.credentialWithLink(\n email,\n emailLink || _getCurrentUrl()\n );\n // Check if the tenant ID in the email link matches the tenant ID on Auth\n // instance.\n _assert(\n credential._tenantId === (authModular.tenantId || null),\n authModular,\n AuthErrorCode.TENANT_ID_MISMATCH\n );\n return signInWithCredential(authModular, credential);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ActionCodeOperation,\n ActionCodeSettings,\n Auth,\n User\n} from '../../model/public_types';\n\nimport {\n createAuthUri,\n CreateAuthUriRequest\n} from '../../api/authentication/create_auth_uri';\nimport * as api from '../../api/authentication/email_and_password';\nimport { UserInternal } from '../../model/user';\nimport { _getCurrentUrl, _isHttpOrHttps } from '../util/location';\nimport { _setActionCodeSettingsOnRequest } from './action_code_settings';\nimport { getModularInstance } from '@firebase/util';\n\n/**\n * Gets the list of possible sign in methods for the given email address.\n *\n * @remarks\n * This is useful to differentiate methods of sign-in for the same provider, eg.\n * {@link EmailAuthProvider} which has 2 methods of sign-in,\n * {@link SignInMethod}.EMAIL_PASSWORD and\n * {@link SignInMethod}.EMAIL_LINK.\n *\n * @param auth - The {@link Auth} instance.\n * @param email - The user's email address.\n *\n * @public\n */\nexport async function fetchSignInMethodsForEmail(\n auth: Auth,\n email: string\n): Promise<string[]> {\n // createAuthUri returns an error if continue URI is not http or https.\n // For environments like Cordova, Chrome extensions, native frameworks, file\n // systems, etc, use http://localhost as continue URL.\n const continueUri = _isHttpOrHttps() ? _getCurrentUrl() : 'http://localhost';\n const request: CreateAuthUriRequest = {\n identifier: email,\n continueUri\n };\n\n const { signinMethods } = await createAuthUri(\n getModularInstance(auth),\n request\n );\n\n return signinMethods || [];\n}\n\n/**\n * Sends a verification email to a user.\n *\n * @remarks\n * The verification process is completed by calling {@link applyActionCode}.\n *\n * @example\n * ```javascript\n * const actionCodeSettings = {\n * url: 'https://www.example.com/?email=user@example.com',\n * iOS: {\n * bundleId: 'com.example.ios'\n * },\n * android: {\n * packageName: 'com.example.android',\n * installApp: true,\n * minimumVersion: '12'\n * },\n * handleCodeInApp: true\n * };\n * await sendEmailVerification(user, actionCodeSettings);\n * // Obtain code from the user.\n * await applyActionCode(auth, code);\n * ```\n *\n * @param user - The user.\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\n *\n * @public\n */\nexport async function sendEmailVerification(\n user: User,\n actionCodeSettings?: ActionCodeSettings | null\n): Promise<void> {\n const userInternal = getModularInstance(user) as UserInternal;\n const idToken = await user.getIdToken();\n const request: api.VerifyEmailRequest = {\n requestType: ActionCodeOperation.VERIFY_EMAIL,\n idToken\n };\n if (actionCodeSettings) {\n _setActionCodeSettingsOnRequest(\n userInternal.auth,\n request,\n actionCodeSettings\n );\n }\n\n const { email } = await api.sendEmailVerification(userInternal.auth, request);\n\n if (email !== user.email) {\n await user.reload();\n }\n}\n\n/**\n * Sends a verification email to a new email address.\n *\n * @remarks\n * The user's email will be updated to the new one after being verified.\n *\n * If you have a custom email action handler, you can complete the verification process by calling\n * {@link applyActionCode}.\n *\n * @example\n * ```javascript\n * const actionCodeSettings = {\n * url: 'https://www.example.com/?email=user@example.com',\n * iOS: {\n * bundleId: 'com.example.ios'\n * },\n * android: {\n * packageName: 'com.example.android',\n * installApp: true,\n * minimumVersion: '12'\n * },\n * handleCodeInApp: true\n * };\n * await verifyBeforeUpdateEmail(user, 'newemail@example.com', actionCodeSettings);\n * // Obtain code from the user.\n * await applyActionCode(auth, code);\n * ```\n *\n * @param user - The user.\n * @param newEmail - The new email address to be verified before update.\n * @param actionCodeSettings - The {@link ActionCodeSettings}.\n *\n * @public\n */\nexport async function verifyBeforeUpdateEmail(\n user: User,\n newEmail: string,\n actionCodeSettings?: ActionCodeSettings | null\n): Promise<void> {\n const userInternal = getModularInstance(user) as UserInternal;\n const idToken = await user.getIdToken();\n const request: api.VerifyAndChangeEmailRequest = {\n requestType: ActionCodeOperation.VERIFY_AND_CHANGE_EMAIL,\n idToken,\n newEmail\n };\n if (actionCodeSettings) {\n _setActionCodeSettingsOnRequest(\n userInternal.auth,\n request,\n actionCodeSettings\n );\n }\n\n const { email } = await api.verifyAndChangeEmail(userInternal.auth, request);\n\n if (email !== user.email) {\n // If the local copy of the email on user is outdated, reload the\n // user.\n await user.reload();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Endpoint, HttpMethod, _performApiRequest } from '../index';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { Auth } from '../../model/public_types';\n\nexport interface UpdateProfileRequest {\n idToken: string;\n displayName?: string | null;\n photoUrl?: string | null;\n returnSecureToken: boolean;\n}\n\nexport interface UpdateProfileResponse extends IdTokenResponse {\n displayName?: string | null;\n photoUrl?: string | null;\n}\n\nexport async function updateProfile(\n auth: Auth,\n request: UpdateProfileRequest\n): Promise<UpdateProfileResponse> {\n return _performApiRequest<UpdateProfileRequest, UpdateProfileResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.SET_ACCOUNT_INFO,\n request\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { User } from '../../model/public_types';\n\nimport {\n updateEmailPassword as apiUpdateEmailPassword,\n UpdateEmailPasswordRequest\n} from '../../api/account_management/email_and_password';\nimport { updateProfile as apiUpdateProfile } from '../../api/account_management/profile';\nimport { UserInternal } from '../../model/user';\nimport { _logoutIfInvalidated } from './invalidation';\nimport { getModularInstance } from '@firebase/util';\nimport { ProviderId } from '../../model/enums';\n\n/**\n * Updates a user's profile data.\n *\n * @param user - The user.\n * @param profile - The profile's `displayName` and `photoURL` to update.\n *\n * @public\n */\nexport async function updateProfile(\n user: User,\n {\n displayName,\n photoURL: photoUrl\n }: { displayName?: string | null; photoURL?: string | null }\n): Promise<void> {\n if (displayName === undefined && photoUrl === undefined) {\n return;\n }\n\n const userInternal = getModularInstance(user) as UserInternal;\n const idToken = await userInternal.getIdToken();\n const profileRequest = {\n idToken,\n displayName,\n photoUrl,\n returnSecureToken: true\n };\n const response = await _logoutIfInvalidated(\n userInternal,\n apiUpdateProfile(userInternal.auth, profileRequest)\n );\n\n userInternal.displayName = response.displayName || null;\n userInternal.photoURL = response.photoUrl || null;\n\n // Update the password provider as well\n const passwordProvider = userInternal.providerData.find(\n ({ providerId }) => providerId === ProviderId.PASSWORD\n );\n if (passwordProvider) {\n passwordProvider.displayName = userInternal.displayName;\n passwordProvider.photoURL = userInternal.photoURL;\n }\n\n await userInternal._updateTokensIfNecessary(response);\n}\n\n/**\n * Updates the user's email address.\n *\n * @remarks\n * An email will be sent to the original email address (if it was set) that allows to revoke the\n * email address change, in order to protect them from account hijacking.\n *\n * Important: this is a security sensitive operation that requires the user to have recently signed\n * in. If this requirement isn't met, ask the user to authenticate again and then call\n * {@link reauthenticateWithCredential}.\n *\n * @param user - The user.\n * @param newEmail - The new email address.\n *\n * @public\n */\nexport function updateEmail(user: User, newEmail: string): Promise<void> {\n return updateEmailOrPassword(\n getModularInstance(user) as UserInternal,\n newEmail,\n null\n );\n}\n\n/**\n * Updates the user's password.\n *\n * @remarks\n * Important: this is a security sensitive operation that requires the user to have recently signed\n * in. If this requirement isn't met, ask the user to authenticate again and then call\n * {@link reauthenticateWithCredential}.\n *\n * @param user - The user.\n * @param newPassword - The new password.\n *\n * @public\n */\nexport function updatePassword(user: User, newPassword: string): Promise<void> {\n return updateEmailOrPassword(\n getModularInstance(user) as UserInternal,\n null,\n newPassword\n );\n}\n\nasync function updateEmailOrPassword(\n user: UserInternal,\n email: string | null,\n password: string | null\n): Promise<void> {\n const { auth } = user;\n const idToken = await user.getIdToken();\n const request: UpdateEmailPasswordRequest = {\n idToken,\n returnSecureToken: true\n };\n\n if (email) {\n request.email = email;\n }\n\n if (password) {\n request.password = password;\n }\n\n const response = await _logoutIfInvalidated(\n user,\n apiUpdateEmailPassword(auth, request)\n );\n await user._updateTokensIfNecessary(response, /* reload */ true);\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AdditionalUserInfo, UserCredential } from '../../model/public_types';\nimport { IdTokenResponse, IdTokenResponseKind } from '../../model/id_token';\nimport { _parseToken } from './id_token_result';\nimport { UserCredentialInternal } from '../../model/user';\nimport { ProviderId } from '../../model/enums';\n\n/**\n * Parse the `AdditionalUserInfo` from the ID token response.\n *\n */\nexport function _fromIdTokenResponse(\n idTokenResponse?: IdTokenResponse\n): AdditionalUserInfo | null {\n if (!idTokenResponse) {\n return null;\n }\n const { providerId } = idTokenResponse;\n const profile = idTokenResponse.rawUserInfo\n ? JSON.parse(idTokenResponse.rawUserInfo)\n : {};\n const isNewUser =\n idTokenResponse.isNewUser ||\n idTokenResponse.kind === IdTokenResponseKind.SignupNewUser;\n if (!providerId && idTokenResponse?.idToken) {\n const signInProvider = _parseToken(idTokenResponse.idToken)?.firebase?.[\n 'sign_in_provider'\n ];\n if (signInProvider) {\n const filteredProviderId =\n signInProvider !== ProviderId.ANONYMOUS &&\n signInProvider !== ProviderId.CUSTOM\n ? (signInProvider as ProviderId)\n : null;\n // Uses generic class in accordance with the legacy SDK.\n return new GenericAdditionalUserInfo(isNewUser, filteredProviderId);\n }\n }\n if (!providerId) {\n return null;\n }\n switch (providerId) {\n case ProviderId.FACEBOOK:\n return new FacebookAdditionalUserInfo(isNewUser, profile);\n case ProviderId.GITHUB:\n return new GithubAdditionalUserInfo(isNewUser, profile);\n case ProviderId.GOOGLE:\n return new GoogleAdditionalUserInfo(isNewUser, profile);\n case ProviderId.TWITTER:\n return new TwitterAdditionalUserInfo(\n isNewUser,\n profile,\n idTokenResponse.screenName || null\n );\n case ProviderId.CUSTOM:\n case ProviderId.ANONYMOUS:\n return new GenericAdditionalUserInfo(isNewUser, null);\n default:\n return new GenericAdditionalUserInfo(isNewUser, providerId, profile);\n }\n}\n\nclass GenericAdditionalUserInfo implements AdditionalUserInfo {\n constructor(\n readonly isNewUser: boolean,\n readonly providerId: ProviderId | string | null,\n readonly profile: Record<string, unknown> = {}\n ) {}\n}\n\nclass FederatedAdditionalUserInfoWithUsername extends GenericAdditionalUserInfo {\n constructor(\n isNewUser: boolean,\n providerId: ProviderId,\n profile: Record<string, unknown>,\n readonly username: string | null\n ) {\n super(isNewUser, providerId, profile);\n }\n}\n\nclass FacebookAdditionalUserInfo extends GenericAdditionalUserInfo {\n constructor(isNewUser: boolean, profile: Record<string, unknown>) {\n super(isNewUser, ProviderId.FACEBOOK, profile);\n }\n}\n\nclass GithubAdditionalUserInfo extends FederatedAdditionalUserInfoWithUsername {\n constructor(isNewUser: boolean, profile: Record<string, unknown>) {\n super(\n isNewUser,\n ProviderId.GITHUB,\n profile,\n typeof profile?.login === 'string' ? profile?.login : null\n );\n }\n}\n\nclass GoogleAdditionalUserInfo extends GenericAdditionalUserInfo {\n constructor(isNewUser: boolean, profile: Record<string, unknown>) {\n super(isNewUser, ProviderId.GOOGLE, profile);\n }\n}\n\nclass TwitterAdditionalUserInfo extends FederatedAdditionalUserInfoWithUsername {\n constructor(\n isNewUser: boolean,\n profile: Record<string, unknown>,\n screenName: string | null\n ) {\n super(isNewUser, ProviderId.TWITTER, profile, screenName);\n }\n}\n\n/**\n * Extracts provider specific {@link AdditionalUserInfo} for the given credential.\n *\n * @param userCredential - The user credential.\n *\n * @public\n */\nexport function getAdditionalUserInfo(\n userCredential: UserCredential\n): AdditionalUserInfo | null {\n const { user, _tokenResponse } = userCredential as UserCredentialInternal;\n if (user.isAnonymous && !_tokenResponse) {\n // Handle the special case where signInAnonymously() gets called twice.\n // No network call is made so there's nothing to actually fill this in\n return {\n providerId: null,\n isNewUser: false,\n profile: null\n };\n }\n\n return _fromIdTokenResponse(_tokenResponse);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getModularInstance } from '@firebase/util';\nimport {\n Auth,\n NextOrObserver,\n Persistence,\n User,\n CompleteFn,\n ErrorFn,\n Unsubscribe,\n PasswordValidationStatus\n} from '../model/public_types';\nimport { _initializeRecaptchaConfig } from '../platform_browser/recaptcha/recaptcha_enterprise_verifier';\nimport { _castAuth } from '../core/auth/auth_impl';\n\nexport {\n debugErrorMap,\n prodErrorMap,\n AUTH_ERROR_CODES_MAP_DO_NOT_USE_INTERNALLY as AuthErrorCodes\n} from './errors';\n\n// Non-optional auth methods.\n/**\n * Changes the type of persistence on the {@link Auth} instance for the currently saved\n * `Auth` session and applies this type of persistence for future sign-in requests, including\n * sign-in with redirect requests.\n *\n * @remarks\n * This makes it easy for a user signing in to specify whether their session should be\n * remembered or not. It also makes it easier to never persist the `Auth` state for applications\n * that are shared by other users or have sensitive data.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * setPersistence(auth, browserSessionPersistence);\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param persistence - The {@link Persistence} to use.\n * @returns A `Promise` that resolves once the persistence change has completed\n *\n * @public\n */\nexport function setPersistence(\n auth: Auth,\n persistence: Persistence\n): Promise<void> {\n return getModularInstance(auth).setPersistence(persistence);\n}\n\n/**\n * Loads the reCAPTCHA configuration into the `Auth` instance.\n *\n * @remarks\n * This will load the reCAPTCHA config, which indicates whether the reCAPTCHA\n * verification flow should be triggered for each auth provider, into the\n * current Auth session.\n *\n * If initializeRecaptchaConfig() is not invoked, the auth flow will always start\n * without reCAPTCHA verification. If the provider is configured to require reCAPTCHA\n * verification, the SDK will transparently load the reCAPTCHA config and restart the\n * auth flows.\n *\n * Thus, by calling this optional method, you will reduce the latency of future auth flows.\n * Loading the reCAPTCHA config early will also enhance the signal collected by reCAPTCHA.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * initializeRecaptchaConfig(auth);\n * ```\n *\n * @param auth - The {@link Auth} instance.\n *\n * @public\n */\nexport function initializeRecaptchaConfig(auth: Auth): Promise<void> {\n return _initializeRecaptchaConfig(auth);\n}\n\n/**\n * Validates the password against the password policy configured for the project or tenant.\n *\n * @remarks\n * If no tenant ID is set on the `Auth` instance, then this method will use the password\n * policy configured for the project. Otherwise, this method will use the policy configured\n * for the tenant. If a password policy has not been configured, then the default policy\n * configured for all projects will be used.\n *\n * If an auth flow fails because a submitted password does not meet the password policy\n * requirements and this method has previously been called, then this method will use the\n * most recent policy available when called again.\n *\n * @example\n * ```javascript\n * validatePassword(auth, 'some-password');\n * ```\n *\n * @param auth The {@link Auth} instance.\n * @param password The password to validate.\n *\n * @public\n */\nexport async function validatePassword(\n auth: Auth,\n password: string\n): Promise<PasswordValidationStatus> {\n const authInternal = _castAuth(auth);\n return authInternal.validatePassword(password);\n}\n\n/**\n * Adds an observer for changes to the signed-in user's ID token.\n *\n * @remarks\n * This includes sign-in, sign-out, and token refresh events.\n * This will not be triggered automatically upon ID token expiration. Use {@link User.getIdToken} to refresh the ID token.\n *\n * @param auth - The {@link Auth} instance.\n * @param nextOrObserver - callback triggered on change.\n * @param error - Deprecated. This callback is never triggered. Errors\n * on signing in/out can be caught in promises returned from\n * sign-in/sign-out functions.\n * @param completed - Deprecated. This callback is never triggered.\n *\n * @public\n */\nexport function onIdTokenChanged(\n auth: Auth,\n nextOrObserver: NextOrObserver<User>,\n error?: ErrorFn,\n completed?: CompleteFn\n): Unsubscribe {\n return getModularInstance(auth).onIdTokenChanged(\n nextOrObserver,\n error,\n completed\n );\n}\n/**\n * Adds a blocking callback that runs before an auth state change\n * sets a new user.\n *\n * @param auth - The {@link Auth} instance.\n * @param callback - callback triggered before new user value is set.\n * If this throws, it blocks the user from being set.\n * @param onAbort - callback triggered if a later `beforeAuthStateChanged()`\n * callback throws, allowing you to undo any side effects.\n */\nexport function beforeAuthStateChanged(\n auth: Auth,\n callback: (user: User | null) => void | Promise<void>,\n onAbort?: () => void\n): Unsubscribe {\n return getModularInstance(auth).beforeAuthStateChanged(callback, onAbort);\n}\n/**\n * Adds an observer for changes to the user's sign-in state.\n *\n * @remarks\n * To keep the old behavior, see {@link onIdTokenChanged}.\n *\n * @param auth - The {@link Auth} instance.\n * @param nextOrObserver - callback triggered on change.\n * @param error - Deprecated. This callback is never triggered. Errors\n * on signing in/out can be caught in promises returned from\n * sign-in/sign-out functions.\n * @param completed - Deprecated. This callback is never triggered.\n *\n * @public\n */\nexport function onAuthStateChanged(\n auth: Auth,\n nextOrObserver: NextOrObserver<User>,\n error?: ErrorFn,\n completed?: CompleteFn\n): Unsubscribe {\n return getModularInstance(auth).onAuthStateChanged(\n nextOrObserver,\n error,\n completed\n );\n}\n/**\n * Sets the current language to the default device/browser preference.\n *\n * @param auth - The {@link Auth} instance.\n *\n * @public\n */\nexport function useDeviceLanguage(auth: Auth): void {\n getModularInstance(auth).useDeviceLanguage();\n}\n/**\n * Asynchronously sets the provided user as {@link Auth.currentUser} on the\n * {@link Auth} instance.\n *\n * @remarks\n * A new instance copy of the user provided will be made and set as currentUser.\n *\n * This will trigger {@link onAuthStateChanged} and {@link onIdTokenChanged} listeners\n * like other sign in methods.\n *\n * The operation fails with an error if the user to be updated belongs to a different Firebase\n * project.\n *\n * @param auth - The {@link Auth} instance.\n * @param user - The new {@link User}.\n *\n * @public\n */\nexport function updateCurrentUser(\n auth: Auth,\n user: User | null\n): Promise<void> {\n return getModularInstance(auth).updateCurrentUser(user);\n}\n/**\n * Signs out the current user.\n *\n * @param auth - The {@link Auth} instance.\n *\n * @public\n */\nexport function signOut(auth: Auth): Promise<void> {\n return getModularInstance(auth).signOut();\n}\n\nexport { initializeAuth } from './auth/initialize';\nexport { connectAuthEmulator } from './auth/emulator';\n\n// credentials\nexport { AuthCredential } from './credentials';\nexport { EmailAuthCredential } from './credentials/email';\nexport { OAuthCredential } from './credentials/oauth';\nexport { PhoneAuthCredential } from './credentials/phone';\n\n// persistence\nexport { inMemoryPersistence } from './persistence/in_memory';\n\n// providers\nexport { EmailAuthProvider } from './providers/email';\nexport { FacebookAuthProvider } from './providers/facebook';\nexport { CustomParameters } from './providers/federated';\nexport { GoogleAuthProvider } from './providers/google';\nexport { GithubAuthProvider } from './providers/github';\nexport { OAuthProvider, OAuthCredentialOptions } from './providers/oauth';\nexport { SAMLAuthProvider } from './providers/saml';\nexport { TwitterAuthProvider } from './providers/twitter';\n\n// strategies\nexport { signInAnonymously } from './strategies/anonymous';\nexport {\n signInWithCredential,\n linkWithCredential,\n reauthenticateWithCredential\n} from './strategies/credential';\nexport { signInWithCustomToken } from './strategies/custom_token';\nexport {\n sendPasswordResetEmail,\n confirmPasswordReset,\n applyActionCode,\n checkActionCode,\n verifyPasswordResetCode,\n createUserWithEmailAndPassword,\n signInWithEmailAndPassword\n} from './strategies/email_and_password';\nexport {\n sendSignInLinkToEmail,\n isSignInWithEmailLink,\n signInWithEmailLink\n} from './strategies/email_link';\nexport {\n fetchSignInMethodsForEmail,\n sendEmailVerification,\n verifyBeforeUpdateEmail\n} from './strategies/email';\n\n// core\nexport { ActionCodeURL, parseActionCodeURL } from './action_code_url';\n\n// user\nexport {\n updateProfile,\n updateEmail,\n updatePassword\n} from './user/account_info';\nexport { getIdToken, getIdTokenResult } from './user/id_token_result';\nexport { unlink } from './user/link_unlink';\nexport { getAdditionalUserInfo } from './user/additional_user_info';\n\n// Non-optional user methods.\nexport { reload } from './user/reload';\n/**\n * Deletes and signs out the user.\n *\n * @remarks\n * Important: this is a security-sensitive operation that requires the user to have recently\n * signed in. If this requirement isn't met, ask the user to authenticate again and then call\n * {@link reauthenticateWithCredential}.\n *\n * @param user - The user.\n *\n * @public\n */\nexport async function deleteUser(user: User): Promise<void> {\n return getModularInstance(user).delete();\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Endpoint,\n HttpMethod,\n _addTidIfNecessary,\n _performApiRequest\n} from '../index';\nimport { SignInWithPhoneNumberRequest } from '../authentication/sms';\nimport { FinalizeMfaResponse } from '../authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\n\n/**\n * MFA Info as returned by the API.\n */\ninterface BaseMfaEnrollment {\n mfaEnrollmentId: string;\n enrolledAt: number;\n displayName?: string;\n}\n\n/**\n * An MFA provided by SMS verification.\n */\nexport interface PhoneMfaEnrollment extends BaseMfaEnrollment {\n phoneInfo: string;\n}\n\n/**\n * An MFA provided by TOTP (Time-based One Time Password).\n */\nexport interface TotpMfaEnrollment extends BaseMfaEnrollment {}\n\n/**\n * MfaEnrollment can be any subtype of BaseMfaEnrollment, currently only PhoneMfaEnrollment and TotpMfaEnrollment are supported.\n */\nexport type MfaEnrollment = PhoneMfaEnrollment | TotpMfaEnrollment;\n\nexport interface StartPhoneMfaEnrollmentRequest {\n idToken: string;\n phoneEnrollmentInfo: {\n phoneNumber: string;\n recaptchaToken: string;\n };\n tenantId?: string;\n}\n\nexport interface StartPhoneMfaEnrollmentResponse {\n phoneSessionInfo: {\n sessionInfo: string;\n };\n}\n\nexport function startEnrollPhoneMfa(\n auth: AuthInternal,\n request: StartPhoneMfaEnrollmentRequest\n): Promise<StartPhoneMfaEnrollmentResponse> {\n return _performApiRequest<\n StartPhoneMfaEnrollmentRequest,\n StartPhoneMfaEnrollmentResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.START_MFA_ENROLLMENT,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface FinalizePhoneMfaEnrollmentRequest {\n idToken: string;\n phoneVerificationInfo: SignInWithPhoneNumberRequest;\n displayName?: string | null;\n tenantId?: string;\n}\n\nexport interface FinalizePhoneMfaEnrollmentResponse\n extends FinalizeMfaResponse {}\n\nexport function finalizeEnrollPhoneMfa(\n auth: AuthInternal,\n request: FinalizePhoneMfaEnrollmentRequest\n): Promise<FinalizePhoneMfaEnrollmentResponse> {\n return _performApiRequest<\n FinalizePhoneMfaEnrollmentRequest,\n FinalizePhoneMfaEnrollmentResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.FINALIZE_MFA_ENROLLMENT,\n _addTidIfNecessary(auth, request)\n );\n}\nexport interface StartTotpMfaEnrollmentRequest {\n idToken: string;\n totpEnrollmentInfo: {};\n tenantId?: string;\n}\n\nexport interface StartTotpMfaEnrollmentResponse {\n totpSessionInfo: {\n sharedSecretKey: string;\n verificationCodeLength: number;\n hashingAlgorithm: string;\n periodSec: number;\n sessionInfo: string;\n finalizeEnrollmentTime: number;\n };\n}\n\nexport function startEnrollTotpMfa(\n auth: AuthInternal,\n request: StartTotpMfaEnrollmentRequest\n): Promise<StartTotpMfaEnrollmentResponse> {\n return _performApiRequest<\n StartTotpMfaEnrollmentRequest,\n StartTotpMfaEnrollmentResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.START_MFA_ENROLLMENT,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface TotpVerificationInfo {\n sessionInfo: string;\n verificationCode: string;\n}\nexport interface FinalizeTotpMfaEnrollmentRequest {\n idToken: string;\n totpVerificationInfo: TotpVerificationInfo;\n displayName?: string | null;\n tenantId?: string;\n}\n\nexport interface FinalizeTotpMfaEnrollmentResponse\n extends FinalizeMfaResponse {}\n\nexport function finalizeEnrollTotpMfa(\n auth: AuthInternal,\n request: FinalizeTotpMfaEnrollmentRequest\n): Promise<FinalizeTotpMfaEnrollmentResponse> {\n return _performApiRequest<\n FinalizeTotpMfaEnrollmentRequest,\n FinalizeTotpMfaEnrollmentResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.FINALIZE_MFA_ENROLLMENT,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface WithdrawMfaRequest {\n idToken: string;\n mfaEnrollmentId: string;\n tenantId?: string;\n}\n\nexport interface WithdrawMfaResponse extends FinalizeMfaResponse {}\n\nexport function withdrawMfa(\n auth: AuthInternal,\n request: WithdrawMfaRequest\n): Promise<WithdrawMfaResponse> {\n return _performApiRequest<WithdrawMfaRequest, WithdrawMfaResponse>(\n auth,\n HttpMethod.POST,\n Endpoint.WITHDRAW_MFA,\n _addTidIfNecessary(auth, request)\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n MultiFactorAssertion,\n MultiFactorInfo,\n MultiFactorSession,\n MultiFactorUser,\n User\n} from '../model/public_types';\n\nimport { withdrawMfa } from '../api/account_management/mfa';\nimport { _logoutIfInvalidated } from '../core/user/invalidation';\nimport { UserInternal } from '../model/user';\nimport { MultiFactorAssertionImpl } from './mfa_assertion';\nimport { MultiFactorInfoImpl } from './mfa_info';\nimport { MultiFactorSessionImpl } from './mfa_session';\nimport { getModularInstance } from '@firebase/util';\n\nexport class MultiFactorUserImpl implements MultiFactorUser {\n enrolledFactors: MultiFactorInfo[] = [];\n\n private constructor(readonly user: UserInternal) {\n user._onReload(userInfo => {\n if (userInfo.mfaInfo) {\n this.enrolledFactors = userInfo.mfaInfo.map(enrollment =>\n MultiFactorInfoImpl._fromServerResponse(user.auth, enrollment)\n );\n }\n });\n }\n\n static _fromUser(user: UserInternal): MultiFactorUserImpl {\n return new MultiFactorUserImpl(user);\n }\n\n async getSession(): Promise<MultiFactorSession> {\n return MultiFactorSessionImpl._fromIdtoken(\n await this.user.getIdToken(),\n this.user\n );\n }\n\n async enroll(\n assertionExtern: MultiFactorAssertion,\n displayName?: string | null\n ): Promise<void> {\n const assertion = assertionExtern as MultiFactorAssertionImpl;\n const session = (await this.getSession()) as MultiFactorSessionImpl;\n const finalizeMfaResponse = await _logoutIfInvalidated(\n this.user,\n assertion._process(this.user.auth, session, displayName)\n );\n // New tokens will be issued after enrollment of the new second factors.\n // They need to be updated on the user.\n await this.user._updateTokensIfNecessary(finalizeMfaResponse);\n // The user needs to be reloaded to get the new multi-factor information\n // from server. USER_RELOADED event will be triggered and `enrolledFactors`\n // will be updated.\n return this.user.reload();\n }\n\n async unenroll(infoOrUid: MultiFactorInfo | string): Promise<void> {\n const mfaEnrollmentId =\n typeof infoOrUid === 'string' ? infoOrUid : infoOrUid.uid;\n const idToken = await this.user.getIdToken();\n try {\n const idTokenResponse = await _logoutIfInvalidated(\n this.user,\n withdrawMfa(this.user.auth, {\n idToken,\n mfaEnrollmentId\n })\n );\n // Remove the second factor from the user's list.\n this.enrolledFactors = this.enrolledFactors.filter(\n ({ uid }) => uid !== mfaEnrollmentId\n );\n // Depending on whether the backend decided to revoke the user's session,\n // the tokenResponse may be empty. If the tokens were not updated (and they\n // are now invalid), reloading the user will discover this and invalidate\n // the user's state accordingly.\n await this.user._updateTokensIfNecessary(idTokenResponse);\n await this.user.reload();\n } catch (e) {\n throw e;\n }\n }\n}\n\nconst multiFactorUserCache = new WeakMap<User, MultiFactorUser>();\n\n/**\n * The {@link MultiFactorUser} corresponding to the user.\n *\n * @remarks\n * This is used to access all multi-factor properties and operations related to the user.\n *\n * @param user - The user.\n *\n * @public\n */\nexport function multiFactor(user: User): MultiFactorUser {\n const userModular = getModularInstance(user);\n if (!multiFactorUserCache.has(userModular)) {\n multiFactorUserCache.set(\n userModular,\n MultiFactorUserImpl._fromUser(userModular as UserInternal)\n );\n }\n return multiFactorUserCache.get(userModular)!;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { Persistence } from '../../model/public_types';\n\nexport const enum PersistenceType {\n SESSION = 'SESSION',\n LOCAL = 'LOCAL',\n NONE = 'NONE'\n}\n\nexport type PersistedBlob = Record<string, unknown>;\n\nexport interface Instantiator<T> {\n (blob: PersistedBlob): T;\n}\n\nexport type PersistenceValue = PersistedBlob | string;\n\nexport const STORAGE_AVAILABLE_KEY = '__sak';\n\nexport interface StorageEventListener {\n (value: PersistenceValue | null): void;\n}\n\nexport interface PersistenceInternal extends Persistence {\n type: PersistenceType;\n _isAvailable(): Promise<boolean>;\n _set(key: string, value: PersistenceValue): Promise<void>;\n _get<T extends PersistenceValue>(key: string): Promise<T | null>;\n _remove(key: string): Promise<void>;\n _addListener(key: string, listener: StorageEventListener): void;\n _removeListener(key: string, listener: StorageEventListener): void;\n // Should this persistence allow migration up the chosen hierarchy?\n _shouldAllowMigration?: boolean;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n PersistenceValue,\n STORAGE_AVAILABLE_KEY,\n PersistenceType\n} from '../../core/persistence';\n\n// There are two different browser persistence types: local and session.\n// Both have the same implementation but use a different underlying storage\n// object.\n\nexport abstract class BrowserPersistenceClass {\n protected constructor(\n protected readonly storageRetriever: () => Storage,\n readonly type: PersistenceType\n ) {}\n\n _isAvailable(): Promise<boolean> {\n try {\n if (!this.storage) {\n return Promise.resolve(false);\n }\n this.storage.setItem(STORAGE_AVAILABLE_KEY, '1');\n this.storage.removeItem(STORAGE_AVAILABLE_KEY);\n return Promise.resolve(true);\n } catch {\n return Promise.resolve(false);\n }\n }\n\n _set(key: string, value: PersistenceValue): Promise<void> {\n this.storage.setItem(key, JSON.stringify(value));\n return Promise.resolve();\n }\n\n _get<T extends PersistenceValue>(key: string): Promise<T | null> {\n const json = this.storage.getItem(key);\n return Promise.resolve(json ? JSON.parse(json) : null);\n }\n\n _remove(key: string): Promise<void> {\n this.storage.removeItem(key);\n return Promise.resolve();\n }\n\n protected get storage(): Storage {\n return this.storageRetriever();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\n\nimport { getUA } from '@firebase/util';\nimport {\n _isSafari,\n _isIOS,\n _isIframe,\n _isMobileBrowser,\n _isIE10\n} from '../../core/util/browser';\nimport {\n PersistenceInternal as InternalPersistence,\n PersistenceType,\n PersistenceValue,\n StorageEventListener\n} from '../../core/persistence';\nimport { BrowserPersistenceClass } from './browser';\n\nfunction _iframeCannotSyncWebStorage(): boolean {\n const ua = getUA();\n return _isSafari(ua) || _isIOS(ua);\n}\n\n// The polling period in case events are not supported\nexport const _POLLING_INTERVAL_MS = 1000;\n\n// The IE 10 localStorage cross tab synchronization delay in milliseconds\nconst IE10_LOCAL_STORAGE_SYNC_DELAY = 10;\n\nclass BrowserLocalPersistence\n extends BrowserPersistenceClass\n implements InternalPersistence\n{\n static type: 'LOCAL' = 'LOCAL';\n\n constructor() {\n super(() => window.localStorage, PersistenceType.LOCAL);\n }\n\n private readonly boundEventHandler = (\n event: StorageEvent,\n poll?: boolean\n ): void => this.onStorageEvent(event, poll);\n private readonly listeners: Record<string, Set<StorageEventListener>> = {};\n private readonly localCache: Record<string, string | null> = {};\n // setTimeout return value is platform specific\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private pollTimer: any | null = null;\n\n // Safari or iOS browser and embedded in an iframe.\n private readonly safariLocalStorageNotSynced =\n _iframeCannotSyncWebStorage() && _isIframe();\n // Whether to use polling instead of depending on window events\n private readonly fallbackToPolling = _isMobileBrowser();\n readonly _shouldAllowMigration = true;\n\n private forAllChangedKeys(\n cb: (key: string, oldValue: string | null, newValue: string | null) => void\n ): void {\n // Check all keys with listeners on them.\n for (const key of Object.keys(this.listeners)) {\n // Get value from localStorage.\n const newValue = this.storage.getItem(key);\n const oldValue = this.localCache[key];\n // If local map value does not match, trigger listener with storage event.\n // Differentiate this simulated event from the real storage event.\n if (newValue !== oldValue) {\n cb(key, oldValue, newValue);\n }\n }\n }\n\n private onStorageEvent(event: StorageEvent, poll = false): void {\n // Key would be null in some situations, like when localStorage is cleared\n if (!event.key) {\n this.forAllChangedKeys(\n (key: string, _oldValue: string | null, newValue: string | null) => {\n this.notifyListeners(key, newValue);\n }\n );\n return;\n }\n\n const key = event.key;\n\n // Check the mechanism how this event was detected.\n // The first event will dictate the mechanism to be used.\n if (poll) {\n // Environment detects storage changes via polling.\n // Remove storage event listener to prevent possible event duplication.\n this.detachListener();\n } else {\n // Environment detects storage changes via storage event listener.\n // Remove polling listener to prevent possible event duplication.\n this.stopPolling();\n }\n\n // Safari embedded iframe. Storage event will trigger with the delta\n // changes but no changes will be applied to the iframe localStorage.\n if (this.safariLocalStorageNotSynced) {\n // Get current iframe page value.\n const storedValue = this.storage.getItem(key);\n // Value not synchronized, synchronize manually.\n if (event.newValue !== storedValue) {\n if (event.newValue !== null) {\n // Value changed from current value.\n this.storage.setItem(key, event.newValue);\n } else {\n // Current value deleted.\n this.storage.removeItem(key);\n }\n } else if (this.localCache[key] === event.newValue && !poll) {\n // Already detected and processed, do not trigger listeners again.\n return;\n }\n }\n\n const triggerListeners = (): void => {\n // Keep local map up to date in case storage event is triggered before\n // poll.\n const storedValue = this.storage.getItem(key);\n if (!poll && this.localCache[key] === storedValue) {\n // Real storage event which has already been detected, do nothing.\n // This seems to trigger in some IE browsers for some reason.\n return;\n }\n this.notifyListeners(key, storedValue);\n };\n\n const storedValue = this.storage.getItem(key);\n if (\n _isIE10() &&\n storedValue !== event.newValue &&\n event.newValue !== event.oldValue\n ) {\n // IE 10 has this weird bug where a storage event would trigger with the\n // correct key, oldValue and newValue but localStorage.getItem(key) does\n // not yield the updated value until a few milliseconds. This ensures\n // this recovers from that situation.\n setTimeout(triggerListeners, IE10_LOCAL_STORAGE_SYNC_DELAY);\n } else {\n triggerListeners();\n }\n }\n\n private notifyListeners(key: string, value: string | null): void {\n this.localCache[key] = value;\n const listeners = this.listeners[key];\n if (listeners) {\n for (const listener of Array.from(listeners)) {\n listener(value ? JSON.parse(value) : value);\n }\n }\n }\n\n private startPolling(): void {\n this.stopPolling();\n\n this.pollTimer = setInterval(() => {\n this.forAllChangedKeys(\n (key: string, oldValue: string | null, newValue: string | null) => {\n this.onStorageEvent(\n new StorageEvent('storage', {\n key,\n oldValue,\n newValue\n }),\n /* poll */ true\n );\n }\n );\n }, _POLLING_INTERVAL_MS);\n }\n\n private stopPolling(): void {\n if (this.pollTimer) {\n clearInterval(this.pollTimer);\n this.pollTimer = null;\n }\n }\n\n private attachListener(): void {\n window.addEventListener('storage', this.boundEventHandler);\n }\n\n private detachListener(): void {\n window.removeEventListener('storage', this.boundEventHandler);\n }\n\n _addListener(key: string, listener: StorageEventListener): void {\n if (Object.keys(this.listeners).length === 0) {\n // Whether browser can detect storage event when it had already been pushed to the background.\n // This may happen in some mobile browsers. A localStorage change in the foreground window\n // will not be detected in the background window via the storage event.\n // This was detected in iOS 7.x mobile browsers\n if (this.fallbackToPolling) {\n this.startPolling();\n } else {\n this.attachListener();\n }\n }\n if (!this.listeners[key]) {\n this.listeners[key] = new Set();\n // Populate the cache to avoid spuriously triggering on first poll.\n this.localCache[key] = this.storage.getItem(key);\n }\n this.listeners[key].add(listener);\n }\n\n _removeListener(key: string, listener: StorageEventListener): void {\n if (this.listeners[key]) {\n this.listeners[key].delete(listener);\n\n if (this.listeners[key].size === 0) {\n delete this.listeners[key];\n }\n }\n\n if (Object.keys(this.listeners).length === 0) {\n this.detachListener();\n this.stopPolling();\n }\n }\n\n // Update local cache on base operations:\n\n async _set(key: string, value: PersistenceValue): Promise<void> {\n await super._set(key, value);\n this.localCache[key] = JSON.stringify(value);\n }\n\n async _get<T extends PersistenceValue>(key: string): Promise<T | null> {\n const value = await super._get<T>(key);\n this.localCache[key] = JSON.stringify(value);\n return value;\n }\n\n async _remove(key: string): Promise<void> {\n await super._remove(key);\n delete this.localCache[key];\n }\n}\n\n/**\n * An implementation of {@link Persistence} of type `LOCAL` using `localStorage`\n * for the underlying storage.\n *\n * @public\n */\nexport const browserLocalPersistence: Persistence = BrowserLocalPersistence;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\n\nimport {\n PersistenceInternal as InternalPersistence,\n PersistenceType,\n StorageEventListener\n} from '../../core/persistence';\nimport { BrowserPersistenceClass } from './browser';\n\nclass BrowserSessionPersistence\n extends BrowserPersistenceClass\n implements InternalPersistence\n{\n static type: 'SESSION' = 'SESSION';\n\n constructor() {\n super(() => window.sessionStorage, PersistenceType.SESSION);\n }\n\n _addListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for session storage since it cannot be shared across windows\n return;\n }\n\n _removeListener(_key: string, _listener: StorageEventListener): void {\n // Listeners are not supported for session storage since it cannot be shared across windows\n return;\n }\n}\n\n/**\n * An implementation of {@link Persistence} of `SESSION` using `sessionStorage`\n * for the underlying storage.\n *\n * @public\n */\nexport const browserSessionPersistence: Persistence = BrowserSessionPersistence;\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** TODO: remove this once tslib has a polyfill for Promise.allSettled */\ninterface PromiseFulfilledResult<T> {\n fulfilled: true;\n value: T;\n}\n\ninterface PromiseRejectedResult {\n fulfilled: false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n reason: any;\n}\n\nexport type PromiseSettledResult<T> =\n | PromiseFulfilledResult<T>\n | PromiseRejectedResult;\n\n/**\n * Shim for Promise.allSettled, note the slightly different format of `fulfilled` vs `status`.\n *\n * @param promises - Array of promises to wait on.\n */\nexport function _allSettled<T>(\n promises: Array<Promise<T>>\n): Promise<Array<PromiseSettledResult<T>>> {\n return Promise.all(\n promises.map(async promise => {\n try {\n const value = await promise;\n return {\n fulfilled: true,\n value\n } as PromiseFulfilledResult<T>;\n } catch (reason) {\n return {\n fulfilled: false,\n reason\n } as PromiseRejectedResult;\n }\n })\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ReceiverHandler,\n _EventType,\n _ReceiverResponse,\n SenderMessageEvent,\n _Status,\n _SenderRequest\n} from './index';\nimport { _allSettled } from './promise';\n\n/**\n * Interface class for receiving messages.\n *\n */\nexport class Receiver {\n private static readonly receivers: Receiver[] = [];\n private readonly boundEventHandler: EventListener;\n\n private readonly handlersMap: {\n // Typescript doesn't have existential types :(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [eventType: string]: Set<ReceiverHandler<any, any>>;\n } = {};\n\n constructor(private readonly eventTarget: EventTarget) {\n this.boundEventHandler = this.handleEvent.bind(this);\n }\n\n /**\n * Obtain an instance of a Receiver for a given event target, if none exists it will be created.\n *\n * @param eventTarget - An event target (such as window or self) through which the underlying\n * messages will be received.\n */\n static _getInstance(eventTarget: EventTarget): Receiver {\n // The results are stored in an array since objects can't be keys for other\n // objects. In addition, setting a unique property on an event target as a\n // hash map key may not be allowed due to CORS restrictions.\n const existingInstance = this.receivers.find(receiver =>\n receiver.isListeningto(eventTarget)\n );\n if (existingInstance) {\n return existingInstance;\n }\n const newInstance = new Receiver(eventTarget);\n this.receivers.push(newInstance);\n return newInstance;\n }\n\n private isListeningto(eventTarget: EventTarget): boolean {\n return this.eventTarget === eventTarget;\n }\n\n /**\n * Fans out a MessageEvent to the appropriate listeners.\n *\n * @remarks\n * Sends an {@link Status.ACK} upon receipt and a {@link Status.DONE} once all handlers have\n * finished processing.\n *\n * @param event - The MessageEvent.\n *\n */\n private async handleEvent<\n T extends _ReceiverResponse,\n S extends _SenderRequest\n >(event: Event): Promise<void> {\n const messageEvent = event as MessageEvent<SenderMessageEvent<S>>;\n const { eventId, eventType, data } = messageEvent.data;\n\n const handlers: Set<ReceiverHandler<T, S>> | undefined =\n this.handlersMap[eventType];\n if (!handlers?.size) {\n return;\n }\n\n messageEvent.ports[0].postMessage({\n status: _Status.ACK,\n eventId,\n eventType\n });\n\n const promises = Array.from(handlers).map(async handler =>\n handler(messageEvent.origin, data)\n );\n const response = await _allSettled(promises);\n messageEvent.ports[0].postMessage({\n status: _Status.DONE,\n eventId,\n eventType,\n response\n });\n }\n\n /**\n * Subscribe an event handler for a particular event.\n *\n * @param eventType - Event name to subscribe to.\n * @param eventHandler - The event handler which should receive the events.\n *\n */\n _subscribe<T extends _ReceiverResponse, S extends _SenderRequest>(\n eventType: _EventType,\n eventHandler: ReceiverHandler<T, S>\n ): void {\n if (Object.keys(this.handlersMap).length === 0) {\n this.eventTarget.addEventListener('message', this.boundEventHandler);\n }\n\n if (!this.handlersMap[eventType]) {\n this.handlersMap[eventType] = new Set();\n }\n\n this.handlersMap[eventType].add(eventHandler);\n }\n\n /**\n * Unsubscribe an event handler from a particular event.\n *\n * @param eventType - Event name to unsubscribe from.\n * @param eventHandler - Optinoal event handler, if none provided, unsubscribe all handlers on this event.\n *\n */\n _unsubscribe<T extends _ReceiverResponse, S extends _SenderRequest>(\n eventType: _EventType,\n eventHandler?: ReceiverHandler<T, S>\n ): void {\n if (this.handlersMap[eventType] && eventHandler) {\n this.handlersMap[eventType].delete(eventHandler);\n }\n if (!eventHandler || this.handlersMap[eventType].size === 0) {\n delete this.handlersMap[eventType];\n }\n\n if (Object.keys(this.handlersMap).length === 0) {\n this.eventTarget.removeEventListener('message', this.boundEventHandler);\n }\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function _generateEventId(prefix = '', digits = 10): string {\n let random = '';\n for (let i = 0; i < digits; i++) {\n random += Math.floor(Math.random() * 10);\n }\n return prefix + random;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _generateEventId } from '../../core/util/event_id';\nimport {\n _SenderRequest,\n _EventType,\n ReceiverMessageEvent,\n _MessageError,\n SenderMessageEvent,\n _Status,\n _ReceiverMessageResponse,\n _ReceiverResponse,\n _TimeoutDuration\n} from './index';\n\ninterface MessageHandler {\n messageChannel: MessageChannel;\n onMessage: EventListenerOrEventListenerObject;\n}\n\n/**\n * Interface for sending messages and waiting for a completion response.\n *\n */\nexport class Sender {\n private readonly handlers = new Set<MessageHandler>();\n\n constructor(private readonly target: ServiceWorker) {}\n\n /**\n * Unsubscribe the handler and remove it from our tracking Set.\n *\n * @param handler - The handler to unsubscribe.\n */\n private removeMessageHandler(handler: MessageHandler): void {\n if (handler.messageChannel) {\n handler.messageChannel.port1.removeEventListener(\n 'message',\n handler.onMessage\n );\n handler.messageChannel.port1.close();\n }\n this.handlers.delete(handler);\n }\n\n /**\n * Send a message to the Receiver located at {@link target}.\n *\n * @remarks\n * We'll first wait a bit for an ACK , if we get one we will wait significantly longer until the\n * receiver has had a chance to fully process the event.\n *\n * @param eventType - Type of event to send.\n * @param data - The payload of the event.\n * @param timeout - Timeout for waiting on an ACK from the receiver.\n *\n * @returns An array of settled promises from all the handlers that were listening on the receiver.\n */\n async _send<T extends _ReceiverResponse, S extends _SenderRequest>(\n eventType: _EventType,\n data: S,\n timeout = _TimeoutDuration.ACK\n ): Promise<_ReceiverMessageResponse<T>> {\n const messageChannel =\n typeof MessageChannel !== 'undefined' ? new MessageChannel() : null;\n if (!messageChannel) {\n throw new Error(_MessageError.CONNECTION_UNAVAILABLE);\n }\n // Node timers and browser timers return fundamentally different types.\n // We don't actually care what the value is but TS won't accept unknown and\n // we can't cast properly in both environments.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n let completionTimer: any;\n let handler: MessageHandler;\n return new Promise<_ReceiverMessageResponse<T>>((resolve, reject) => {\n const eventId = _generateEventId('', 20);\n messageChannel.port1.start();\n const ackTimer = setTimeout(() => {\n reject(new Error(_MessageError.UNSUPPORTED_EVENT));\n }, timeout);\n handler = {\n messageChannel,\n onMessage(event: Event): void {\n const messageEvent = event as MessageEvent<ReceiverMessageEvent<T>>;\n if (messageEvent.data.eventId !== eventId) {\n return;\n }\n switch (messageEvent.data.status) {\n case _Status.ACK:\n // The receiver should ACK first.\n clearTimeout(ackTimer);\n completionTimer = setTimeout(() => {\n reject(new Error(_MessageError.TIMEOUT));\n }, _TimeoutDuration.COMPLETION);\n break;\n case _Status.DONE:\n // Once the receiver's handlers are finished we will get the results.\n clearTimeout(completionTimer);\n resolve(messageEvent.data.response);\n break;\n default:\n clearTimeout(ackTimer);\n clearTimeout(completionTimer);\n reject(new Error(_MessageError.INVALID_RESPONSE));\n break;\n }\n }\n };\n this.handlers.add(handler);\n messageChannel.port1.addEventListener('message', handler.onMessage);\n this.target.postMessage(\n {\n eventType,\n eventId,\n data\n } as SenderMessageEvent<S>,\n [messageChannel.port2]\n );\n }).finally(() => {\n if (handler) {\n this.removeMessageHandler(handler);\n }\n });\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Recaptcha, GreCAPTCHATopLevel } from './recaptcha/recaptcha';\n\n/**\n * A specialized window type that melds the normal window type plus the\n * various bits we need. The three different blocks that are &'d together\n * cant be defined in the same block together.\n */\nexport type AuthWindow = {\n // Standard window types\n [T in keyof Window]: Window[T];\n} & {\n // Any known / named properties we want to add\n grecaptcha?: Recaptcha | GreCAPTCHATopLevel;\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n ___jsl?: Record<string, any>;\n gapi?: typeof gapi;\n} & {\n // A final catch-all for callbacks (which will have random names) that\n // we will stick on the window.\n [callback: string]: (...args: unknown[]) => void;\n};\n\n/**\n * Lazy accessor for window, since the compat layer won't tree shake this out,\n * we need to make sure not to mess with window unless we have to\n */\nexport function _window(): AuthWindow {\n return window as unknown as AuthWindow;\n}\n\nexport function _setWindowLocation(url: string): void {\n _window().location.href = url;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _window } from '../auth_window';\n\nexport function _isWorker(): boolean {\n return (\n typeof _window()['WorkerGlobalScope'] !== 'undefined' &&\n typeof _window()['importScripts'] === 'function'\n );\n}\n\nexport async function _getActiveServiceWorker(): Promise<ServiceWorker | null> {\n if (!navigator?.serviceWorker) {\n return null;\n }\n try {\n const registration = await navigator.serviceWorker.ready;\n return registration.active;\n } catch {\n return null;\n }\n}\n\nexport function _getServiceWorkerController(): ServiceWorker | null {\n return navigator?.serviceWorker?.controller || null;\n}\n\nexport function _getWorkerGlobalScope(): ServiceWorker | null {\n return _isWorker() ? (self as unknown as ServiceWorker) : null;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Persistence } from '../../model/public_types';\nimport {\n PersistedBlob,\n PersistenceInternal as InternalPersistence,\n PersistenceType,\n PersistenceValue,\n StorageEventListener,\n STORAGE_AVAILABLE_KEY\n} from '../../core/persistence/';\nimport {\n _EventType,\n _PingResponse,\n KeyChangedResponse,\n KeyChangedRequest,\n PingRequest,\n _TimeoutDuration\n} from '../messagechannel/index';\nimport { Receiver } from '../messagechannel/receiver';\nimport { Sender } from '../messagechannel/sender';\nimport {\n _isWorker,\n _getActiveServiceWorker,\n _getServiceWorkerController,\n _getWorkerGlobalScope\n} from '../util/worker';\n\nexport const DB_NAME = 'firebaseLocalStorageDb';\nconst DB_VERSION = 1;\nconst DB_OBJECTSTORE_NAME = 'firebaseLocalStorage';\nconst DB_DATA_KEYPATH = 'fbase_key';\n\ninterface DBObject {\n [DB_DATA_KEYPATH]: string;\n value: PersistedBlob;\n}\n\n/**\n * Promise wrapper for IDBRequest\n *\n * Unfortunately we can't cleanly extend Promise<T> since promises are not callable in ES6\n *\n */\nclass DBPromise<T> {\n constructor(private readonly request: IDBRequest) {}\n\n toPromise(): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n this.request.addEventListener('success', () => {\n resolve(this.request.result);\n });\n this.request.addEventListener('error', () => {\n reject(this.request.error);\n });\n });\n }\n}\n\nfunction getObjectStore(db: IDBDatabase, isReadWrite: boolean): IDBObjectStore {\n return db\n .transaction([DB_OBJECTSTORE_NAME], isReadWrite ? 'readwrite' : 'readonly')\n .objectStore(DB_OBJECTSTORE_NAME);\n}\n\nexport async function _clearDatabase(db: IDBDatabase): Promise<void> {\n const objectStore = getObjectStore(db, true);\n return new DBPromise<void>(objectStore.clear()).toPromise();\n}\n\nexport function _deleteDatabase(): Promise<void> {\n const request = indexedDB.deleteDatabase(DB_NAME);\n return new DBPromise<void>(request).toPromise();\n}\n\nexport function _openDatabase(): Promise<IDBDatabase> {\n const request = indexedDB.open(DB_NAME, DB_VERSION);\n return new Promise((resolve, reject) => {\n request.addEventListener('error', () => {\n reject(request.error);\n });\n\n request.addEventListener('upgradeneeded', () => {\n const db = request.result;\n\n try {\n db.createObjectStore(DB_OBJECTSTORE_NAME, { keyPath: DB_DATA_KEYPATH });\n } catch (e) {\n reject(e);\n }\n });\n\n request.addEventListener('success', async () => {\n const db: IDBDatabase = request.result;\n // Strange bug that occurs in Firefox when multiple tabs are opened at the\n // same time. The only way to recover seems to be deleting the database\n // and re-initializing it.\n // https://github.com/firebase/firebase-js-sdk/issues/634\n\n if (!db.objectStoreNames.contains(DB_OBJECTSTORE_NAME)) {\n // Need to close the database or else you get a `blocked` event\n db.close();\n await _deleteDatabase();\n resolve(await _openDatabase());\n } else {\n resolve(db);\n }\n });\n });\n}\n\nexport async function _putObject(\n db: IDBDatabase,\n key: string,\n value: PersistenceValue | string\n): Promise<void> {\n const request = getObjectStore(db, true).put({\n [DB_DATA_KEYPATH]: key,\n value\n });\n return new DBPromise<void>(request).toPromise();\n}\n\nasync function getObject(\n db: IDBDatabase,\n key: string\n): Promise<PersistedBlob | null> {\n const request = getObjectStore(db, false).get(key);\n const data = await new DBPromise<DBObject | undefined>(request).toPromise();\n return data === undefined ? null : data.value;\n}\n\nexport function _deleteObject(db: IDBDatabase, key: string): Promise<void> {\n const request = getObjectStore(db, true).delete(key);\n return new DBPromise<void>(request).toPromise();\n}\n\nexport const _POLLING_INTERVAL_MS = 800;\nexport const _TRANSACTION_RETRY_COUNT = 3;\n\nclass IndexedDBLocalPersistence implements InternalPersistence {\n static type: 'LOCAL' = 'LOCAL';\n\n type = PersistenceType.LOCAL;\n db?: IDBDatabase;\n readonly _shouldAllowMigration = true;\n\n private readonly listeners: Record<string, Set<StorageEventListener>> = {};\n private readonly localCache: Record<string, PersistenceValue | null> = {};\n // setTimeout return value is platform specific\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private pollTimer: any | null = null;\n private pendingWrites = 0;\n\n private receiver: Receiver | null = null;\n private sender: Sender | null = null;\n private serviceWorkerReceiverAvailable = false;\n private activeServiceWorker: ServiceWorker | null = null;\n // Visible for testing only\n readonly _workerInitializationPromise: Promise<void>;\n\n constructor() {\n // Fire & forget the service worker registration as it may never resolve\n this._workerInitializationPromise =\n this.initializeServiceWorkerMessaging().then(\n () => {},\n () => {}\n );\n }\n\n async _openDb(): Promise<IDBDatabase> {\n if (this.db) {\n return this.db;\n }\n this.db = await _openDatabase();\n return this.db;\n }\n\n async _withRetries<T>(op: (db: IDBDatabase) => Promise<T>): Promise<T> {\n let numAttempts = 0;\n\n while (true) {\n try {\n const db = await this._openDb();\n return await op(db);\n } catch (e) {\n if (numAttempts++ > _TRANSACTION_RETRY_COUNT) {\n throw e;\n }\n if (this.db) {\n this.db.close();\n this.db = undefined;\n }\n // TODO: consider adding exponential backoff\n }\n }\n }\n\n /**\n * IndexedDB events do not propagate from the main window to the worker context. We rely on a\n * postMessage interface to send these events to the worker ourselves.\n */\n private async initializeServiceWorkerMessaging(): Promise<void> {\n return _isWorker() ? this.initializeReceiver() : this.initializeSender();\n }\n\n /**\n * As the worker we should listen to events from the main window.\n */\n private async initializeReceiver(): Promise<void> {\n this.receiver = Receiver._getInstance(_getWorkerGlobalScope()!);\n // Refresh from persistence if we receive a KeyChanged message.\n this.receiver._subscribe(\n _EventType.KEY_CHANGED,\n async (_origin: string, data: KeyChangedRequest) => {\n const keys = await this._poll();\n return {\n keyProcessed: keys.includes(data.key)\n };\n }\n );\n // Let the sender know that we are listening so they give us more timeout.\n this.receiver._subscribe(\n _EventType.PING,\n async (_origin: string, _data: PingRequest) => {\n return [_EventType.KEY_CHANGED];\n }\n );\n }\n\n /**\n * As the main window, we should let the worker know when keys change (set and remove).\n *\n * @remarks\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerContainer/ready | ServiceWorkerContainer.ready}\n * may not resolve.\n */\n private async initializeSender(): Promise<void> {\n // Check to see if there's an active service worker.\n this.activeServiceWorker = await _getActiveServiceWorker();\n if (!this.activeServiceWorker) {\n return;\n }\n this.sender = new Sender(this.activeServiceWorker);\n // Ping the service worker to check what events they can handle.\n const results = await this.sender._send<_PingResponse, PingRequest>(\n _EventType.PING,\n {},\n _TimeoutDuration.LONG_ACK\n );\n if (!results) {\n return;\n }\n if (\n results[0]?.fulfilled &&\n results[0]?.value.includes(_EventType.KEY_CHANGED)\n ) {\n this.serviceWorkerReceiverAvailable = true;\n }\n }\n\n /**\n * Let the worker know about a changed key, the exact key doesn't technically matter since the\n * worker will just trigger a full sync anyway.\n *\n * @remarks\n * For now, we only support one service worker per page.\n *\n * @param key - Storage key which changed.\n */\n private async notifyServiceWorker(key: string): Promise<void> {\n if (\n !this.sender ||\n !this.activeServiceWorker ||\n _getServiceWorkerController() !== this.activeServiceWorker\n ) {\n return;\n }\n try {\n await this.sender._send<KeyChangedResponse, KeyChangedRequest>(\n _EventType.KEY_CHANGED,\n { key },\n // Use long timeout if receiver has previously responded to a ping from us.\n this.serviceWorkerReceiverAvailable\n ? _TimeoutDuration.LONG_ACK\n : _TimeoutDuration.ACK\n );\n } catch {\n // This is a best effort approach. Ignore errors.\n }\n }\n\n async _isAvailable(): Promise<boolean> {\n try {\n if (!indexedDB) {\n return false;\n }\n const db = await _openDatabase();\n await _putObject(db, STORAGE_AVAILABLE_KEY, '1');\n await _deleteObject(db, STORAGE_AVAILABLE_KEY);\n return true;\n } catch {}\n return false;\n }\n\n private async _withPendingWrite(write: () => Promise<void>): Promise<void> {\n this.pendingWrites++;\n try {\n await write();\n } finally {\n this.pendingWrites--;\n }\n }\n\n async _set(key: string, value: PersistenceValue): Promise<void> {\n return this._withPendingWrite(async () => {\n await this._withRetries((db: IDBDatabase) => _putObject(db, key, value));\n this.localCache[key] = value;\n return this.notifyServiceWorker(key);\n });\n }\n\n async _get<T extends PersistenceValue>(key: string): Promise<T | null> {\n const obj = (await this._withRetries((db: IDBDatabase) =>\n getObject(db, key)\n )) as T;\n this.localCache[key] = obj;\n return obj;\n }\n\n async _remove(key: string): Promise<void> {\n return this._withPendingWrite(async () => {\n await this._withRetries((db: IDBDatabase) => _deleteObject(db, key));\n delete this.localCache[key];\n return this.notifyServiceWorker(key);\n });\n }\n\n private async _poll(): Promise<string[]> {\n // TODO: check if we need to fallback if getAll is not supported\n const result = await this._withRetries((db: IDBDatabase) => {\n const getAllRequest = getObjectStore(db, false).getAll();\n return new DBPromise<DBObject[] | null>(getAllRequest).toPromise();\n });\n\n if (!result) {\n return [];\n }\n\n // If we have pending writes in progress abort, we'll get picked up on the next poll\n if (this.pendingWrites !== 0) {\n return [];\n }\n\n const keys = [];\n const keysInResult = new Set();\n for (const { fbase_key: key, value } of result) {\n keysInResult.add(key);\n if (JSON.stringify(this.localCache[key]) !== JSON.stringify(value)) {\n this.notifyListeners(key, value as PersistenceValue);\n keys.push(key);\n }\n }\n for (const localKey of Object.keys(this.localCache)) {\n if (this.localCache[localKey] && !keysInResult.has(localKey)) {\n // Deleted\n this.notifyListeners(localKey, null);\n keys.push(localKey);\n }\n }\n return keys;\n }\n\n private notifyListeners(\n key: string,\n newValue: PersistenceValue | null\n ): void {\n this.localCache[key] = newValue;\n const listeners = this.listeners[key];\n if (listeners) {\n for (const listener of Array.from(listeners)) {\n listener(newValue);\n }\n }\n }\n\n private startPolling(): void {\n this.stopPolling();\n\n this.pollTimer = setInterval(\n async () => this._poll(),\n _POLLING_INTERVAL_MS\n );\n }\n\n private stopPolling(): void {\n if (this.pollTimer) {\n clearInterval(this.pollTimer);\n this.pollTimer = null;\n }\n }\n\n _addListener(key: string, listener: StorageEventListener): void {\n if (Object.keys(this.listeners).length === 0) {\n this.startPolling();\n }\n if (!this.listeners[key]) {\n this.listeners[key] = new Set();\n // Populate the cache to avoid spuriously triggering on first poll.\n void this._get(key); // This can happen in the background async and we can return immediately.\n }\n this.listeners[key].add(listener);\n }\n\n _removeListener(key: string, listener: StorageEventListener): void {\n if (this.listeners[key]) {\n this.listeners[key].delete(listener);\n\n if (this.listeners[key].size === 0) {\n delete this.listeners[key];\n }\n }\n\n if (Object.keys(this.listeners).length === 0) {\n this.stopPolling();\n }\n }\n}\n\n/**\n * An implementation of {@link Persistence} of type `LOCAL` using `indexedDB`\n * for the underlying storage.\n *\n * @public\n */\nexport const indexedDBLocalPersistence: Persistence = IndexedDBLocalPersistence;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n _performApiRequest,\n Endpoint,\n HttpMethod,\n _addTidIfNecessary\n} from '../index';\nimport { Auth } from '../../model/public_types';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { MfaEnrollment } from '../account_management/mfa';\nimport { SignInWithIdpResponse } from './idp';\nimport {\n SignInWithPhoneNumberRequest,\n SignInWithPhoneNumberResponse\n} from './sms';\n\nexport interface FinalizeMfaResponse {\n idToken: string;\n refreshToken: string;\n}\n\n/**\n * @internal\n */\nexport interface IdTokenMfaResponse extends IdTokenResponse {\n mfaPendingCredential?: string;\n mfaInfo?: MfaEnrollment[];\n}\n\nexport interface StartPhoneMfaSignInRequest {\n mfaPendingCredential: string;\n mfaEnrollmentId: string;\n phoneSignInInfo: {\n recaptchaToken: string;\n };\n tenantId?: string;\n}\n\nexport interface StartPhoneMfaSignInResponse {\n phoneResponseInfo: {\n sessionInfo: string;\n };\n}\n\nexport function startSignInPhoneMfa(\n auth: Auth,\n request: StartPhoneMfaSignInRequest\n): Promise<StartPhoneMfaSignInResponse> {\n return _performApiRequest<\n StartPhoneMfaSignInRequest,\n StartPhoneMfaSignInResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.START_MFA_SIGN_IN,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport interface FinalizePhoneMfaSignInRequest {\n mfaPendingCredential: string;\n phoneVerificationInfo: SignInWithPhoneNumberRequest;\n tenantId?: string;\n}\n\n// TOTP MFA Sign in only has a finalize phase. Phone MFA has a start phase to initiate sending an\n// SMS and a finalize phase to complete sign in. With TOTP, the user already has the OTP in the\n// TOTP/Authenticator app.\nexport interface FinalizeTotpMfaSignInRequest {\n mfaPendingCredential: string;\n totpVerificationInfo: { verificationCode: string };\n tenantId?: string;\n mfaEnrollmentId: string;\n}\n\nexport interface FinalizePhoneMfaSignInResponse extends FinalizeMfaResponse {}\n\nexport interface FinalizeTotpMfaSignInResponse extends FinalizeMfaResponse {}\n\nexport function finalizeSignInPhoneMfa(\n auth: Auth,\n request: FinalizePhoneMfaSignInRequest\n): Promise<FinalizePhoneMfaSignInResponse> {\n return _performApiRequest<\n FinalizePhoneMfaSignInRequest,\n FinalizePhoneMfaSignInResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.FINALIZE_MFA_SIGN_IN,\n _addTidIfNecessary(auth, request)\n );\n}\n\nexport function finalizeSignInTotpMfa(\n auth: Auth,\n request: FinalizeTotpMfaSignInRequest\n): Promise<FinalizeTotpMfaSignInResponse> {\n return _performApiRequest<\n FinalizeTotpMfaSignInRequest,\n FinalizeTotpMfaSignInResponse\n >(\n auth,\n HttpMethod.POST,\n Endpoint.FINALIZE_MFA_SIGN_IN,\n _addTidIfNecessary(auth, request)\n );\n}\n\n/**\n * @internal\n */\nexport type PhoneOrOauthTokenResponse =\n | SignInWithPhoneNumberResponse\n | SignInWithIdpResponse\n | IdTokenResponse;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert } from '../../core/util/assert';\nimport { AuthInternal } from '../../model/auth';\nimport { RecaptchaParameters } from '../../model/public_types';\nimport {\n Recaptcha,\n GreCAPTCHATopLevel,\n GreCAPTCHARenderOption,\n GreCAPTCHA\n} from './recaptcha';\n\nexport const _SOLVE_TIME_MS = 500;\nexport const _EXPIRATION_TIME_MS = 60_000;\nexport const _WIDGET_ID_START = 1_000_000_000_000;\n\nexport interface Widget {\n getResponse: () => string | null;\n delete: () => void;\n execute: () => void;\n}\n\nexport class MockReCaptcha implements Recaptcha {\n private counter = _WIDGET_ID_START;\n _widgets = new Map<number, Widget>();\n\n constructor(private readonly auth: AuthInternal) {}\n\n render(\n container: string | HTMLElement,\n parameters?: RecaptchaParameters\n ): number {\n const id = this.counter;\n this._widgets.set(\n id,\n new MockWidget(container, this.auth.name, parameters || {})\n );\n this.counter++;\n return id;\n }\n\n reset(optWidgetId?: number): void {\n const id = optWidgetId || _WIDGET_ID_START;\n void this._widgets.get(id)?.delete();\n this._widgets.delete(id);\n }\n\n getResponse(optWidgetId?: number): string {\n const id = optWidgetId || _WIDGET_ID_START;\n return this._widgets.get(id)?.getResponse() || '';\n }\n\n async execute(optWidgetId?: number | string): Promise<string> {\n const id: number = (optWidgetId as number) || _WIDGET_ID_START;\n void this._widgets.get(id)?.execute();\n return '';\n }\n}\n\nexport class MockGreCAPTCHATopLevel implements GreCAPTCHATopLevel {\n enterprise: GreCAPTCHA = new MockGreCAPTCHA();\n ready(callback: () => void): void {\n callback();\n }\n\n execute(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _siteKey: string,\n _options: { action: string }\n ): Promise<string> {\n return Promise.resolve('token');\n }\n render(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _container: string | HTMLElement,\n _parameters: GreCAPTCHARenderOption\n ): string {\n return '';\n }\n}\n\nexport class MockGreCAPTCHA implements GreCAPTCHA {\n ready(callback: () => void): void {\n callback();\n }\n\n execute(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _siteKey: string,\n _options: { action: string }\n ): Promise<string> {\n return Promise.resolve('token');\n }\n render(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _container: string | HTMLElement,\n _parameters: GreCAPTCHARenderOption\n ): string {\n return '';\n }\n}\n\nexport class MockWidget {\n private readonly container: HTMLElement;\n private readonly isVisible: boolean;\n private timerId: number | null = null;\n private deleted = false;\n private responseToken: string | null = null;\n private readonly clickHandler = (): void => {\n this.execute();\n };\n\n constructor(\n containerOrId: string | HTMLElement,\n appName: string,\n private readonly params: RecaptchaParameters\n ) {\n const container =\n typeof containerOrId === 'string'\n ? document.getElementById(containerOrId)\n : containerOrId;\n _assert(container, AuthErrorCode.ARGUMENT_ERROR, { appName });\n\n this.container = container;\n this.isVisible = this.params.size !== 'invisible';\n if (this.isVisible) {\n this.execute();\n } else {\n this.container.addEventListener('click', this.clickHandler);\n }\n }\n\n getResponse(): string | null {\n this.checkIfDeleted();\n return this.responseToken;\n }\n\n delete(): void {\n this.checkIfDeleted();\n this.deleted = true;\n if (this.timerId) {\n clearTimeout(this.timerId);\n this.timerId = null;\n }\n this.container.removeEventListener('click', this.clickHandler);\n }\n\n execute(): void {\n this.checkIfDeleted();\n if (this.timerId) {\n return;\n }\n\n this.timerId = window.setTimeout(() => {\n this.responseToken = generateRandomAlphaNumericString(50);\n const { callback, 'expired-callback': expiredCallback } = this.params;\n if (callback) {\n try {\n callback(this.responseToken);\n } catch (e) {}\n }\n\n this.timerId = window.setTimeout(() => {\n this.timerId = null;\n this.responseToken = null;\n if (expiredCallback) {\n try {\n expiredCallback();\n } catch (e) {}\n }\n\n if (this.isVisible) {\n this.execute();\n }\n }, _EXPIRATION_TIME_MS);\n }, _SOLVE_TIME_MS);\n }\n\n private checkIfDeleted(): void {\n if (this.deleted) {\n throw new Error('reCAPTCHA mock was already deleted!');\n }\n }\n}\n\nfunction generateRandomAlphaNumericString(len: number): string {\n const chars = [];\n const allowedChars =\n '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n for (let i = 0; i < len; i++) {\n chars.push(\n allowedChars.charAt(Math.floor(Math.random() * allowedChars.length))\n );\n }\n return chars.join('');\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { querystring } from '@firebase/util';\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert, _createError } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport * as jsHelpers from '../load_js';\nimport { Recaptcha, isV2 } from './recaptcha';\nimport { MockReCaptcha } from './recaptcha_mock';\n\n// ReCaptcha will load using the same callback, so the callback function needs\n// to be kept around\nexport const _JSLOAD_CALLBACK = jsHelpers._generateCallbackName('rcb');\nconst NETWORK_TIMEOUT_DELAY = new Delay(30000, 60000);\nconst RECAPTCHA_BASE = 'https://www.google.com/recaptcha/api.js?';\n\n/**\n * We need to mark this interface as internal explicitly to exclude it in the public typings, because\n * it references AuthInternal which has a circular dependency with UserInternal.\n *\n * @internal\n */\nexport interface ReCaptchaLoader {\n load(auth: AuthInternal, hl?: string): Promise<Recaptcha>;\n clearedOneInstance(): void;\n}\n\n/**\n * Loader for the GReCaptcha library. There should only ever be one of this.\n */\nexport class ReCaptchaLoaderImpl implements ReCaptchaLoader {\n private hostLanguage = '';\n private counter = 0;\n /**\n * Check for `render()` method. `window.grecaptcha` will exist if the Enterprise\n * version of the ReCAPTCHA script was loaded by someone else (e.g. App Check) but\n * `window.grecaptcha.render()` will not. Another load will add it.\n */\n private readonly librarySeparatelyLoaded = !!_window().grecaptcha?.render;\n\n load(auth: AuthInternal, hl = ''): Promise<Recaptcha> {\n _assert(isHostLanguageValid(hl), auth, AuthErrorCode.ARGUMENT_ERROR);\n\n if (this.shouldResolveImmediately(hl) && isV2(_window().grecaptcha)) {\n return Promise.resolve(_window().grecaptcha! as Recaptcha);\n }\n return new Promise<Recaptcha>((resolve, reject) => {\n const networkTimeout = _window().setTimeout(() => {\n reject(_createError(auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n }, NETWORK_TIMEOUT_DELAY.get());\n\n _window()[_JSLOAD_CALLBACK] = () => {\n _window().clearTimeout(networkTimeout);\n delete _window()[_JSLOAD_CALLBACK];\n\n const recaptcha = _window().grecaptcha as Recaptcha;\n\n if (!recaptcha || !isV2(recaptcha)) {\n reject(_createError(auth, AuthErrorCode.INTERNAL_ERROR));\n return;\n }\n\n // Wrap the greptcha render function so that we know if the developer has\n // called it separately\n const render = recaptcha.render;\n recaptcha.render = (container, params) => {\n const widgetId = render(container, params);\n this.counter++;\n return widgetId;\n };\n\n this.hostLanguage = hl;\n resolve(recaptcha);\n };\n\n const url = `${RECAPTCHA_BASE}?${querystring({\n onload: _JSLOAD_CALLBACK,\n render: 'explicit',\n hl\n })}`;\n\n jsHelpers._loadJS(url).catch(() => {\n clearTimeout(networkTimeout);\n reject(_createError(auth, AuthErrorCode.INTERNAL_ERROR));\n });\n });\n }\n\n clearedOneInstance(): void {\n this.counter--;\n }\n\n private shouldResolveImmediately(hl: string): boolean {\n // We can resolve immediately if:\n // • grecaptcha is already defined AND (\n // 1. the requested language codes are the same OR\n // 2. there exists already a ReCaptcha on the page\n // 3. the library was already loaded by the app\n // In cases (2) and (3), we _can't_ reload as it would break the recaptchas\n // that are already in the page\n return (\n !!_window().grecaptcha?.render &&\n (hl === this.hostLanguage ||\n this.counter > 0 ||\n this.librarySeparatelyLoaded)\n );\n }\n}\n\nfunction isHostLanguageValid(hl: string): boolean {\n return hl.length <= 6 && /^\\s*[a-zA-Z0-9\\-]*\\s*$/.test(hl);\n}\n\nexport class MockReCaptchaLoaderImpl implements ReCaptchaLoader {\n async load(auth: AuthInternal): Promise<Recaptcha> {\n return new MockReCaptcha(auth);\n }\n\n clearedOneInstance(): void {}\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Auth, RecaptchaParameters } from '../../model/public_types';\nimport { getRecaptchaParams } from '../../api/authentication/recaptcha';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert } from '../../core/util/assert';\nimport { _isHttpOrHttps } from '../../core/util/location';\nimport { ApplicationVerifierInternal } from '../../model/application_verifier';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport { _isWorker } from '../util/worker';\nimport { Recaptcha } from './recaptcha';\nimport {\n MockReCaptchaLoaderImpl,\n ReCaptchaLoader,\n ReCaptchaLoaderImpl\n} from './recaptcha_loader';\n\nexport const RECAPTCHA_VERIFIER_TYPE = 'recaptcha';\n\nconst DEFAULT_PARAMS: RecaptchaParameters = {\n theme: 'light',\n type: 'image'\n};\n\ntype TokenCallback = (token: string) => void;\n\n/**\n * An {@link https://www.google.com/recaptcha/ | reCAPTCHA}-based application verifier.\n *\n * @remarks\n * `RecaptchaVerifier` does not work in a Node.js environment.\n *\n * @public\n */\nexport class RecaptchaVerifier implements ApplicationVerifierInternal {\n /**\n * The application verifier type.\n *\n * @remarks\n * For a reCAPTCHA verifier, this is 'recaptcha'.\n */\n readonly type = RECAPTCHA_VERIFIER_TYPE;\n private destroyed = false;\n private widgetId: number | null = null;\n private readonly container: HTMLElement;\n private readonly isInvisible: boolean;\n private readonly tokenChangeListeners = new Set<TokenCallback>();\n private renderPromise: Promise<number> | null = null;\n private readonly auth: AuthInternal;\n\n /** @internal */\n readonly _recaptchaLoader: ReCaptchaLoader;\n private recaptcha: Recaptcha | null = null;\n\n /**\n * @param authExtern - The corresponding Firebase {@link Auth} instance.\n *\n * @param containerOrId - The reCAPTCHA container parameter.\n *\n * @remarks\n * This has different meaning depending on whether the reCAPTCHA is hidden or visible. For a\n * visible reCAPTCHA the container must be empty. If a string is used, it has to correspond to\n * an element ID. The corresponding element must also must be in the DOM at the time of\n * initialization.\n *\n * @param parameters - The optional reCAPTCHA parameters.\n *\n * @remarks\n * Check the reCAPTCHA docs for a comprehensive list. All parameters are accepted except for\n * the sitekey. Firebase Auth backend provisions a reCAPTCHA for each project and will\n * configure this upon rendering. For an invisible reCAPTCHA, a size key must have the value\n * 'invisible'.\n */\n constructor(\n authExtern: Auth,\n containerOrId: HTMLElement | string,\n private readonly parameters: RecaptchaParameters = {\n ...DEFAULT_PARAMS\n }\n ) {\n this.auth = _castAuth(authExtern);\n this.isInvisible = this.parameters.size === 'invisible';\n _assert(\n typeof document !== 'undefined',\n this.auth,\n AuthErrorCode.OPERATION_NOT_SUPPORTED\n );\n const container =\n typeof containerOrId === 'string'\n ? document.getElementById(containerOrId)\n : containerOrId;\n _assert(container, this.auth, AuthErrorCode.ARGUMENT_ERROR);\n\n this.container = container;\n this.parameters.callback = this.makeTokenCallback(this.parameters.callback);\n\n this._recaptchaLoader = this.auth.settings.appVerificationDisabledForTesting\n ? new MockReCaptchaLoaderImpl()\n : new ReCaptchaLoaderImpl();\n\n this.validateStartingState();\n // TODO: Figure out if sdk version is needed\n }\n\n /**\n * Waits for the user to solve the reCAPTCHA and resolves with the reCAPTCHA token.\n *\n * @returns A Promise for the reCAPTCHA token.\n */\n async verify(): Promise<string> {\n this.assertNotDestroyed();\n const id = await this.render();\n const recaptcha = this.getAssertedRecaptcha();\n\n const response = recaptcha.getResponse(id);\n if (response) {\n return response;\n }\n\n return new Promise<string>(resolve => {\n const tokenChange = (token: string): void => {\n if (!token) {\n return; // Ignore token expirations.\n }\n this.tokenChangeListeners.delete(tokenChange);\n resolve(token);\n };\n\n this.tokenChangeListeners.add(tokenChange);\n if (this.isInvisible) {\n recaptcha.execute(id);\n }\n });\n }\n\n /**\n * Renders the reCAPTCHA widget on the page.\n *\n * @returns A Promise that resolves with the reCAPTCHA widget ID.\n */\n render(): Promise<number> {\n try {\n this.assertNotDestroyed();\n } catch (e) {\n // This method returns a promise. Since it's not async (we want to return the\n // _same_ promise if rendering is still occurring), the API surface should\n // reject with the error rather than just throw\n return Promise.reject(e);\n }\n\n if (this.renderPromise) {\n return this.renderPromise;\n }\n\n this.renderPromise = this.makeRenderPromise().catch(e => {\n this.renderPromise = null;\n throw e;\n });\n\n return this.renderPromise;\n }\n\n /** @internal */\n _reset(): void {\n this.assertNotDestroyed();\n if (this.widgetId !== null) {\n this.getAssertedRecaptcha().reset(this.widgetId);\n }\n }\n\n /**\n * Clears the reCAPTCHA widget from the page and destroys the instance.\n */\n clear(): void {\n this.assertNotDestroyed();\n this.destroyed = true;\n this._recaptchaLoader.clearedOneInstance();\n if (!this.isInvisible) {\n this.container.childNodes.forEach(node => {\n this.container.removeChild(node);\n });\n }\n }\n\n private validateStartingState(): void {\n _assert(!this.parameters.sitekey, this.auth, AuthErrorCode.ARGUMENT_ERROR);\n _assert(\n this.isInvisible || !this.container.hasChildNodes(),\n this.auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n _assert(\n typeof document !== 'undefined',\n this.auth,\n AuthErrorCode.OPERATION_NOT_SUPPORTED\n );\n }\n\n private makeTokenCallback(\n existing: TokenCallback | string | undefined\n ): TokenCallback {\n return token => {\n this.tokenChangeListeners.forEach(listener => listener(token));\n if (typeof existing === 'function') {\n existing(token);\n } else if (typeof existing === 'string') {\n const globalFunc = _window()[existing];\n if (typeof globalFunc === 'function') {\n globalFunc(token);\n }\n }\n };\n }\n\n private assertNotDestroyed(): void {\n _assert(!this.destroyed, this.auth, AuthErrorCode.INTERNAL_ERROR);\n }\n\n private async makeRenderPromise(): Promise<number> {\n await this.init();\n if (!this.widgetId) {\n let container = this.container;\n if (!this.isInvisible) {\n const guaranteedEmpty = document.createElement('div');\n container.appendChild(guaranteedEmpty);\n container = guaranteedEmpty;\n }\n\n this.widgetId = this.getAssertedRecaptcha().render(\n container,\n this.parameters\n );\n }\n\n return this.widgetId;\n }\n\n private async init(): Promise<void> {\n _assert(\n _isHttpOrHttps() && !_isWorker(),\n this.auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n\n await domReady();\n this.recaptcha = await this._recaptchaLoader.load(\n this.auth,\n this.auth.languageCode || undefined\n );\n\n const siteKey = await getRecaptchaParams(this.auth);\n _assert(siteKey, this.auth, AuthErrorCode.INTERNAL_ERROR);\n this.parameters.sitekey = siteKey;\n }\n\n private getAssertedRecaptcha(): Recaptcha {\n _assert(this.recaptcha, this.auth, AuthErrorCode.INTERNAL_ERROR);\n return this.recaptcha;\n }\n}\n\nfunction domReady(): Promise<void> {\n let resolver: (() => void) | null = null;\n return new Promise<void>(resolve => {\n if (document.readyState === 'complete') {\n resolve();\n return;\n }\n\n // Document not ready, wait for load before resolving.\n // Save resolver, so we can remove listener in case it was externally\n // cancelled.\n resolver = () => resolve();\n window.addEventListener('load', resolver);\n }).catch(e => {\n if (resolver) {\n window.removeEventListener('load', resolver);\n }\n\n throw e;\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ApplicationVerifier,\n Auth,\n ConfirmationResult,\n PhoneInfoOptions,\n User,\n UserCredential\n} from '../../model/public_types';\n\nimport { startEnrollPhoneMfa } from '../../api/account_management/mfa';\nimport { startSignInPhoneMfa } from '../../api/authentication/mfa';\nimport { sendPhoneVerificationCode } from '../../api/authentication/sms';\nimport { ApplicationVerifierInternal } from '../../model/application_verifier';\nimport { PhoneAuthCredential } from '../../core/credentials/phone';\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assertLinkedStatus, _link } from '../../core/user/link_unlink';\nimport { _assert } from '../../core/util/assert';\nimport { AuthInternal } from '../../model/auth';\nimport {\n linkWithCredential,\n reauthenticateWithCredential,\n signInWithCredential\n} from '../../core/strategies/credential';\nimport {\n MultiFactorSessionImpl,\n MultiFactorSessionType\n} from '../../mfa/mfa_session';\nimport { UserInternal } from '../../model/user';\nimport { RECAPTCHA_VERIFIER_TYPE } from '../recaptcha/recaptcha_verifier';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { getModularInstance } from '@firebase/util';\nimport { ProviderId } from '../../model/enums';\n\ninterface OnConfirmationCallback {\n (credential: PhoneAuthCredential): Promise<UserCredential>;\n}\n\nclass ConfirmationResultImpl implements ConfirmationResult {\n constructor(\n readonly verificationId: string,\n private readonly onConfirmation: OnConfirmationCallback\n ) {}\n\n confirm(verificationCode: string): Promise<UserCredential> {\n const authCredential = PhoneAuthCredential._fromVerification(\n this.verificationId,\n verificationCode\n );\n return this.onConfirmation(authCredential);\n }\n}\n\n/**\n * Asynchronously signs in using a phone number.\n *\n * @remarks\n * This method sends a code via SMS to the given\n * phone number, and returns a {@link ConfirmationResult}. After the user\n * provides the code sent to their phone, call {@link ConfirmationResult.confirm}\n * with the code to sign the user in.\n *\n * For abuse prevention, this method also requires a {@link ApplicationVerifier}.\n * This SDK includes a reCAPTCHA-based implementation, {@link RecaptchaVerifier}.\n * This function can work on other platforms that do not support the\n * {@link RecaptchaVerifier} (like React Native), but you need to use a\n * third-party {@link ApplicationVerifier} implementation.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // 'recaptcha-container' is the ID of an element in the DOM.\n * const applicationVerifier = new firebase.auth.RecaptchaVerifier('recaptcha-container');\n * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\n * // Obtain a verificationCode from the user.\n * const credential = await confirmationResult.confirm(verificationCode);\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\n * @param appVerifier - The {@link ApplicationVerifier}.\n *\n * @public\n */\nexport async function signInWithPhoneNumber(\n auth: Auth,\n phoneNumber: string,\n appVerifier: ApplicationVerifier\n): Promise<ConfirmationResult> {\n const authInternal = _castAuth(auth);\n const verificationId = await _verifyPhoneNumber(\n authInternal,\n phoneNumber,\n getModularInstance(appVerifier as ApplicationVerifierInternal)\n );\n return new ConfirmationResultImpl(verificationId, cred =>\n signInWithCredential(authInternal, cred)\n );\n}\n\n/**\n * Links the user account with the given phone number.\n *\n * @remarks\n * This method does not work in a Node.js environment.\n *\n * @param user - The user.\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\n * @param appVerifier - The {@link ApplicationVerifier}.\n *\n * @public\n */\nexport async function linkWithPhoneNumber(\n user: User,\n phoneNumber: string,\n appVerifier: ApplicationVerifier\n): Promise<ConfirmationResult> {\n const userInternal = getModularInstance(user) as UserInternal;\n await _assertLinkedStatus(false, userInternal, ProviderId.PHONE);\n const verificationId = await _verifyPhoneNumber(\n userInternal.auth,\n phoneNumber,\n getModularInstance(appVerifier as ApplicationVerifierInternal)\n );\n return new ConfirmationResultImpl(verificationId, cred =>\n linkWithCredential(userInternal, cred)\n );\n}\n\n/**\n * Re-authenticates a user using a fresh phone credential.\n *\n * @remarks\n * Use before operations such as {@link updatePassword} that require tokens from recent sign-in attempts.\n *\n * This method does not work in a Node.js environment.\n *\n * @param user - The user.\n * @param phoneNumber - The user's phone number in E.164 format (e.g. +16505550101).\n * @param appVerifier - The {@link ApplicationVerifier}.\n *\n * @public\n */\nexport async function reauthenticateWithPhoneNumber(\n user: User,\n phoneNumber: string,\n appVerifier: ApplicationVerifier\n): Promise<ConfirmationResult> {\n const userInternal = getModularInstance(user) as UserInternal;\n const verificationId = await _verifyPhoneNumber(\n userInternal.auth,\n phoneNumber,\n getModularInstance(appVerifier as ApplicationVerifierInternal)\n );\n return new ConfirmationResultImpl(verificationId, cred =>\n reauthenticateWithCredential(userInternal, cred)\n );\n}\n\n/**\n * Returns a verification ID to be used in conjunction with the SMS code that is sent.\n *\n */\nexport async function _verifyPhoneNumber(\n auth: AuthInternal,\n options: PhoneInfoOptions | string,\n verifier: ApplicationVerifierInternal\n): Promise<string> {\n const recaptchaToken = await verifier.verify();\n\n try {\n _assert(\n typeof recaptchaToken === 'string',\n auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n _assert(\n verifier.type === RECAPTCHA_VERIFIER_TYPE,\n auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n\n let phoneInfoOptions: PhoneInfoOptions;\n\n if (typeof options === 'string') {\n phoneInfoOptions = {\n phoneNumber: options\n };\n } else {\n phoneInfoOptions = options;\n }\n\n if ('session' in phoneInfoOptions) {\n const session = phoneInfoOptions.session as MultiFactorSessionImpl;\n\n if ('phoneNumber' in phoneInfoOptions) {\n _assert(\n session.type === MultiFactorSessionType.ENROLL,\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n const response = await startEnrollPhoneMfa(auth, {\n idToken: session.credential,\n phoneEnrollmentInfo: {\n phoneNumber: phoneInfoOptions.phoneNumber,\n recaptchaToken\n }\n });\n return response.phoneSessionInfo.sessionInfo;\n } else {\n _assert(\n session.type === MultiFactorSessionType.SIGN_IN,\n auth,\n AuthErrorCode.INTERNAL_ERROR\n );\n const mfaEnrollmentId =\n phoneInfoOptions.multiFactorHint?.uid ||\n phoneInfoOptions.multiFactorUid;\n _assert(mfaEnrollmentId, auth, AuthErrorCode.MISSING_MFA_INFO);\n const response = await startSignInPhoneMfa(auth, {\n mfaPendingCredential: session.credential,\n mfaEnrollmentId,\n phoneSignInInfo: {\n recaptchaToken\n }\n });\n return response.phoneResponseInfo.sessionInfo;\n }\n } else {\n const { sessionInfo } = await sendPhoneVerificationCode(auth, {\n phoneNumber: phoneInfoOptions.phoneNumber,\n recaptchaToken\n });\n return sessionInfo;\n }\n } finally {\n verifier._reset();\n }\n}\n\n/**\n * Updates the user's phone number.\n *\n * @remarks\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```\n * // 'recaptcha-container' is the ID of an element in the DOM.\n * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);\n * // Obtain the verificationCode from the user.\n * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * await updatePhoneNumber(user, phoneCredential);\n * ```\n *\n * @param user - The user.\n * @param credential - A credential authenticating the new phone number.\n *\n * @public\n */\nexport async function updatePhoneNumber(\n user: User,\n credential: PhoneAuthCredential\n): Promise<void> {\n await _link(getModularInstance(user) as UserInternal, credential);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Auth,\n PhoneInfoOptions,\n ApplicationVerifier,\n UserCredential\n} from '../../model/public_types';\n\nimport { SignInWithPhoneNumberResponse } from '../../api/authentication/sms';\nimport { ApplicationVerifierInternal as ApplicationVerifierInternal } from '../../model/application_verifier';\nimport { AuthInternal as AuthInternal } from '../../model/auth';\nimport { UserCredentialInternal as UserCredentialInternal } from '../../model/user';\nimport { PhoneAuthCredential } from '../../core/credentials/phone';\nimport { _verifyPhoneNumber } from '../strategies/phone';\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { AuthCredential } from '../../core';\nimport { FirebaseError, getModularInstance } from '@firebase/util';\nimport { TaggedWithTokenResponse } from '../../model/id_token';\nimport { ProviderId, SignInMethod } from '../../model/enums';\n\n/**\n * Provider for generating an {@link PhoneAuthCredential}.\n *\n * @remarks\n * `PhoneAuthProvider` does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // 'recaptcha-container' is the ID of an element in the DOM.\n * const applicationVerifier = new RecaptchaVerifier('recaptcha-container');\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber('+16505550101', applicationVerifier);\n * // Obtain the verificationCode from the user.\n * const phoneCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * const userCredential = await signInWithCredential(auth, phoneCredential);\n * ```\n *\n * @public\n */\nexport class PhoneAuthProvider {\n /** Always set to {@link ProviderId}.PHONE. */\n static readonly PROVIDER_ID: 'phone' = ProviderId.PHONE;\n /** Always set to {@link SignInMethod}.PHONE. */\n static readonly PHONE_SIGN_IN_METHOD: 'phone' = SignInMethod.PHONE;\n\n /** Always set to {@link ProviderId}.PHONE. */\n readonly providerId = PhoneAuthProvider.PROVIDER_ID;\n private readonly auth: AuthInternal;\n\n /**\n * @param auth - The Firebase {@link Auth} instance in which sign-ins should occur.\n *\n */\n constructor(auth: Auth) {\n this.auth = _castAuth(auth);\n }\n\n /**\n *\n * Starts a phone number authentication flow by sending a verification code to the given phone\n * number.\n *\n * @example\n * ```javascript\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber(phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * const userCredential = await signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * An alternative flow is provided using the `signInWithPhoneNumber` method.\n * ```javascript\n * const confirmationResult = signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const userCredential = confirmationResult.confirm(verificationCode);\n * ```\n *\n * @param phoneInfoOptions - The user's {@link PhoneInfoOptions}. The phone number should be in\n * E.164 format (e.g. +16505550101).\n * @param applicationVerifier - For abuse prevention, this method also requires a\n * {@link ApplicationVerifier}. This SDK includes a reCAPTCHA-based implementation,\n * {@link RecaptchaVerifier}.\n *\n * @returns A Promise for a verification ID that can be passed to\n * {@link PhoneAuthProvider.credential} to identify this flow..\n */\n verifyPhoneNumber(\n phoneOptions: PhoneInfoOptions | string,\n applicationVerifier: ApplicationVerifier\n ): Promise<string> {\n return _verifyPhoneNumber(\n this.auth,\n phoneOptions,\n getModularInstance(applicationVerifier as ApplicationVerifierInternal)\n );\n }\n\n /**\n * Creates a phone auth credential, given the verification ID from\n * {@link PhoneAuthProvider.verifyPhoneNumber} and the code that was sent to the user's\n * mobile device.\n *\n * @example\n * ```javascript\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = provider.verifyPhoneNumber(phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const authCredential = PhoneAuthProvider.credential(verificationId, verificationCode);\n * const userCredential = signInWithCredential(auth, authCredential);\n * ```\n *\n * @example\n * An alternative flow is provided using the `signInWithPhoneNumber` method.\n * ```javascript\n * const confirmationResult = await signInWithPhoneNumber(auth, phoneNumber, applicationVerifier);\n * // Obtain verificationCode from the user.\n * const userCredential = await confirmationResult.confirm(verificationCode);\n * ```\n *\n * @param verificationId - The verification ID returned from {@link PhoneAuthProvider.verifyPhoneNumber}.\n * @param verificationCode - The verification code sent to the user's mobile device.\n *\n * @returns The auth provider credential.\n */\n static credential(\n verificationId: string,\n verificationCode: string\n ): PhoneAuthCredential {\n return PhoneAuthCredential._fromVerification(\n verificationId,\n verificationCode\n );\n }\n\n /**\n * Generates an {@link AuthCredential} from a {@link UserCredential}.\n * @param userCredential - The user credential.\n */\n static credentialFromResult(\n userCredential: UserCredential\n ): AuthCredential | null {\n const credential = userCredential as UserCredentialInternal;\n return PhoneAuthProvider.credentialFromTaggedObject(credential);\n }\n\n /**\n * Returns an {@link AuthCredential} when passed an error.\n *\n * @remarks\n *\n * This method works for errors like\n * `auth/account-exists-with-different-credentials`. This is useful for\n * recovering when attempting to set a user's phone number but the number\n * in question is already tied to another account. For example, the following\n * code tries to update the current user's phone number, and if that\n * fails, links the user with the account associated with that number:\n *\n * ```js\n * const provider = new PhoneAuthProvider(auth);\n * const verificationId = await provider.verifyPhoneNumber(number, verifier);\n * try {\n * const code = ''; // Prompt the user for the verification code\n * await updatePhoneNumber(\n * auth.currentUser,\n * PhoneAuthProvider.credential(verificationId, code));\n * } catch (e) {\n * if ((e as FirebaseError)?.code === 'auth/account-exists-with-different-credential') {\n * const cred = PhoneAuthProvider.credentialFromError(e);\n * await linkWithCredential(auth.currentUser, cred);\n * }\n * }\n *\n * // At this point, auth.currentUser.phoneNumber === number.\n * ```\n *\n * @param error - The error to generate a credential from.\n */\n static credentialFromError(error: FirebaseError): AuthCredential | null {\n return PhoneAuthProvider.credentialFromTaggedObject(\n (error.customData || {}) as TaggedWithTokenResponse\n );\n }\n\n private static credentialFromTaggedObject({\n _tokenResponse: tokenResponse\n }: TaggedWithTokenResponse): AuthCredential | null {\n if (!tokenResponse) {\n return null;\n }\n const { phoneNumber, temporaryProof } =\n tokenResponse as SignInWithPhoneNumberResponse;\n if (phoneNumber && temporaryProof) {\n return PhoneAuthCredential._fromTokenResponse(\n phoneNumber,\n temporaryProof\n );\n }\n return null;\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PopupRedirectResolver } from '../../model/public_types';\nimport { AuthInternal } from '../../model/auth';\nimport { PopupRedirectResolverInternal } from '../../model/popup_redirect';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from './assert';\nimport { _getInstance } from './instantiator';\n\n/**\n * Chooses a popup/redirect resolver to use. This prefers the override (which\n * is directly passed in), and falls back to the property set on the auth\n * object. If neither are available, this function errors w/ an argument error.\n */\nexport function _withDefaultResolver(\n auth: AuthInternal,\n resolverOverride: PopupRedirectResolver | undefined\n): PopupRedirectResolverInternal {\n if (resolverOverride) {\n return _getInstance(resolverOverride);\n }\n\n _assert(auth._popupRedirectResolver, auth, AuthErrorCode.ARGUMENT_ERROR);\n\n return auth._popupRedirectResolver;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n signInWithIdp,\n SignInWithIdpRequest\n} from '../../api/authentication/idp';\nimport { PhoneOrOauthTokenResponse } from '../../api/authentication/mfa';\nimport { AuthInternal } from '../../model/auth';\nimport { IdTokenResponse } from '../../model/id_token';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { AuthCredential } from '../credentials';\nimport { _link as _linkUser } from '../user/link_unlink';\nimport { _reauthenticate } from '../user/reauthenticate';\nimport { _assert } from '../util/assert';\nimport { _signInWithCredential } from './credential';\nimport { AuthErrorCode } from '../errors';\nimport { ProviderId } from '../../model/enums';\n\nexport interface IdpTaskParams {\n auth: AuthInternal;\n requestUri: string;\n sessionId?: string;\n tenantId?: string;\n postBody?: string;\n pendingToken?: string;\n user?: UserInternal;\n bypassAuthState?: boolean;\n}\n\nexport type IdpTask = (\n params: IdpTaskParams\n) => Promise<UserCredentialInternal>;\n\nclass IdpCredential extends AuthCredential {\n constructor(readonly params: IdpTaskParams) {\n super(ProviderId.CUSTOM, ProviderId.CUSTOM);\n }\n\n _getIdTokenResponse(auth: AuthInternal): Promise<PhoneOrOauthTokenResponse> {\n return signInWithIdp(auth, this._buildIdpRequest());\n }\n\n _linkToIdToken(\n auth: AuthInternal,\n idToken: string\n ): Promise<IdTokenResponse> {\n return signInWithIdp(auth, this._buildIdpRequest(idToken));\n }\n\n _getReauthenticationResolver(auth: AuthInternal): Promise<IdTokenResponse> {\n return signInWithIdp(auth, this._buildIdpRequest());\n }\n\n private _buildIdpRequest(idToken?: string): SignInWithIdpRequest {\n const request: SignInWithIdpRequest = {\n requestUri: this.params.requestUri,\n sessionId: this.params.sessionId,\n postBody: this.params.postBody,\n tenantId: this.params.tenantId,\n pendingToken: this.params.pendingToken,\n returnSecureToken: true,\n returnIdpCredential: true\n };\n\n if (idToken) {\n request.idToken = idToken;\n }\n\n return request;\n }\n}\n\nexport function _signIn(\n params: IdpTaskParams\n): Promise<UserCredentialInternal> {\n return _signInWithCredential(\n params.auth,\n new IdpCredential(params),\n params.bypassAuthState\n ) as Promise<UserCredentialInternal>;\n}\n\nexport function _reauth(\n params: IdpTaskParams\n): Promise<UserCredentialInternal> {\n const { auth, user } = params;\n _assert(user, auth, AuthErrorCode.INTERNAL_ERROR);\n return _reauthenticate(\n user,\n new IdpCredential(params),\n params.bypassAuthState\n );\n}\n\nexport async function _link(\n params: IdpTaskParams\n): Promise<UserCredentialInternal> {\n const { auth, user } = params;\n _assert(user, auth, AuthErrorCode.INTERNAL_ERROR);\n return _linkUser(user, new IdpCredential(params), params.bypassAuthState);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\n\nimport {\n AuthEvent,\n AuthEventConsumer,\n AuthEventType,\n EventManager,\n PopupRedirectResolverInternal\n} from '../../model/popup_redirect';\nimport { UserInternal, UserCredentialInternal } from '../../model/user';\nimport { AuthErrorCode } from '../errors';\nimport { debugAssert, _fail } from '../util/assert';\nimport {\n _link,\n _reauth,\n _signIn,\n IdpTask,\n IdpTaskParams\n} from '../strategies/idp';\nimport { AuthInternal } from '../../model/auth';\n\ninterface PendingPromise {\n resolve: (cred: UserCredentialInternal | null) => void;\n reject: (error: Error) => void;\n}\n\n/**\n * Popup event manager. Handles the popup's entire lifecycle; listens to auth\n * events\n */\nexport abstract class AbstractPopupRedirectOperation\n implements AuthEventConsumer\n{\n private pendingPromise: PendingPromise | null = null;\n private eventManager: EventManager | null = null;\n readonly filter: AuthEventType[];\n\n abstract eventId: string | null;\n\n constructor(\n protected readonly auth: AuthInternal,\n filter: AuthEventType | AuthEventType[],\n protected readonly resolver: PopupRedirectResolverInternal,\n protected user?: UserInternal,\n protected readonly bypassAuthState = false\n ) {\n this.filter = Array.isArray(filter) ? filter : [filter];\n }\n\n abstract onExecution(): Promise<void>;\n\n execute(): Promise<UserCredentialInternal | null> {\n return new Promise<UserCredentialInternal | null>(\n async (resolve, reject) => {\n this.pendingPromise = { resolve, reject };\n\n try {\n this.eventManager = await this.resolver._initialize(this.auth);\n await this.onExecution();\n this.eventManager.registerConsumer(this);\n } catch (e) {\n this.reject(e as Error);\n }\n }\n );\n }\n\n async onAuthEvent(event: AuthEvent): Promise<void> {\n const { urlResponse, sessionId, postBody, tenantId, error, type } = event;\n if (error) {\n this.reject(error);\n return;\n }\n\n const params: IdpTaskParams = {\n auth: this.auth,\n requestUri: urlResponse!,\n sessionId: sessionId!,\n tenantId: tenantId || undefined,\n postBody: postBody || undefined,\n user: this.user,\n bypassAuthState: this.bypassAuthState\n };\n\n try {\n this.resolve(await this.getIdpTask(type)(params));\n } catch (e) {\n this.reject(e as Error);\n }\n }\n\n onError(error: FirebaseError): void {\n this.reject(error);\n }\n\n private getIdpTask(type: AuthEventType): IdpTask {\n switch (type) {\n case AuthEventType.SIGN_IN_VIA_POPUP:\n case AuthEventType.SIGN_IN_VIA_REDIRECT:\n return _signIn;\n case AuthEventType.LINK_VIA_POPUP:\n case AuthEventType.LINK_VIA_REDIRECT:\n return _link;\n case AuthEventType.REAUTH_VIA_POPUP:\n case AuthEventType.REAUTH_VIA_REDIRECT:\n return _reauth;\n default:\n _fail(this.auth, AuthErrorCode.INTERNAL_ERROR);\n }\n }\n\n protected resolve(cred: UserCredentialInternal | null): void {\n debugAssert(this.pendingPromise, 'Pending promise was never set');\n this.pendingPromise.resolve(cred);\n this.unregisterAndCleanUp();\n }\n\n protected reject(error: Error): void {\n debugAssert(this.pendingPromise, 'Pending promise was never set');\n this.pendingPromise.reject(error);\n this.unregisterAndCleanUp();\n }\n\n private unregisterAndCleanUp(): void {\n if (this.eventManager) {\n this.eventManager.unregisterConsumer(this);\n }\n\n this.pendingPromise = null;\n this.cleanUp();\n }\n\n abstract cleanUp(): void;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Auth,\n AuthProvider,\n PopupRedirectResolver,\n User,\n UserCredential\n} from '../../model/public_types';\n\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { AuthErrorCode } from '../../core/errors';\nimport {\n _assert,\n debugAssert,\n _createError,\n _assertInstanceOf\n} from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { _generateEventId } from '../../core/util/event_id';\nimport { AuthInternal } from '../../model/auth';\nimport {\n AuthEventType,\n PopupRedirectResolverInternal\n} from '../../model/popup_redirect';\nimport { UserInternal } from '../../model/user';\nimport { _withDefaultResolver } from '../../core/util/resolver';\nimport { AuthPopup } from '../util/popup';\nimport { AbstractPopupRedirectOperation } from '../../core/strategies/abstract_popup_redirect_operation';\nimport { FederatedAuthProvider } from '../../core/providers/federated';\nimport { getModularInstance } from '@firebase/util';\n\n/*\n * The event timeout is the same on mobile and desktop, no need for Delay. Set this to 8s since\n * blocking functions can take upto 7s to complete sign in, as documented in:\n * https://cloud.google.com/identity-platform/docs/blocking-functions#understanding_blocking_functions\n * https://firebase.google.com/docs/auth/extend-with-blocking-functions#understanding_blocking_functions\n */\nexport const enum _Timeout {\n AUTH_EVENT = 8000\n}\nexport const _POLL_WINDOW_CLOSE_TIMEOUT = new Delay(2000, 10000);\n\n/**\n * Authenticates a Firebase client using a popup-based OAuth authentication flow.\n *\n * @remarks\n * If succeeds, returns the signed in user along with the provider's credential. If sign in was\n * unsuccessful, returns an error object containing additional information about the error.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new FacebookAuthProvider();\n * const result = await signInWithPopup(auth, provider);\n *\n * // The signed-in user info.\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function signInWithPopup(\n auth: Auth,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<UserCredential> {\n const authInternal = _castAuth(auth);\n _assertInstanceOf(auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(authInternal, resolver);\n const action = new PopupOperation(\n authInternal,\n AuthEventType.SIGN_IN_VIA_POPUP,\n provider,\n resolverInternal\n );\n return action.executeNotNull();\n}\n\n/**\n * Reauthenticates the current user with the specified {@link OAuthProvider} using a pop-up based\n * OAuth flow.\n *\n * @remarks\n * If the reauthentication is successful, the returned result will contain the user and the\n * provider's credential.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using a popup.\n * const provider = new FacebookAuthProvider();\n * const result = await signInWithPopup(auth, provider);\n * // Reauthenticate using a popup.\n * await reauthenticateWithPopup(result.user, provider);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function reauthenticateWithPopup(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<UserCredential> {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n const action = new PopupOperation(\n userInternal.auth,\n AuthEventType.REAUTH_VIA_POPUP,\n provider,\n resolverInternal,\n userInternal\n );\n return action.executeNotNull();\n}\n\n/**\n * Links the authenticated provider to the user account using a pop-up based OAuth flow.\n *\n * @remarks\n * If the linking is successful, the returned result will contain the user and the provider's credential.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using some other provider.\n * const result = await signInWithEmailAndPassword(auth, email, password);\n * // Link using a popup.\n * const provider = new FacebookAuthProvider();\n * await linkWithPopup(result.user, provider);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function linkWithPopup(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<UserCredential> {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n\n const action = new PopupOperation(\n userInternal.auth,\n AuthEventType.LINK_VIA_POPUP,\n provider,\n resolverInternal,\n userInternal\n );\n return action.executeNotNull();\n}\n\n/**\n * Popup event manager. Handles the popup's entire lifecycle; listens to auth\n * events\n *\n */\nclass PopupOperation extends AbstractPopupRedirectOperation {\n // Only one popup is ever shown at once. The lifecycle of the current popup\n // can be managed / cancelled by the constructor.\n private static currentPopupAction: PopupOperation | null = null;\n private authWindow: AuthPopup | null = null;\n private pollId: number | null = null;\n\n constructor(\n auth: AuthInternal,\n filter: AuthEventType,\n private readonly provider: AuthProvider,\n resolver: PopupRedirectResolverInternal,\n user?: UserInternal\n ) {\n super(auth, filter, resolver, user);\n if (PopupOperation.currentPopupAction) {\n PopupOperation.currentPopupAction.cancel();\n }\n\n PopupOperation.currentPopupAction = this;\n }\n\n async executeNotNull(): Promise<UserCredential> {\n const result = await this.execute();\n _assert(result, this.auth, AuthErrorCode.INTERNAL_ERROR);\n return result;\n }\n\n async onExecution(): Promise<void> {\n debugAssert(\n this.filter.length === 1,\n 'Popup operations only handle one event'\n );\n const eventId = _generateEventId();\n this.authWindow = await this.resolver._openPopup(\n this.auth,\n this.provider,\n this.filter[0], // There's always one, see constructor\n eventId\n );\n this.authWindow.associatedEvent = eventId;\n\n // Check for web storage support and origin validation _after_ the popup is\n // loaded. These operations are slow (~1 second or so) Rather than\n // waiting on them before opening the window, optimistically open the popup\n // and check for storage support at the same time. If storage support is\n // not available, this will cause the whole thing to reject properly. It\n // will also close the popup, but since the promise has already rejected,\n // the popup closed by user poll will reject into the void.\n this.resolver._originValidation(this.auth).catch(e => {\n this.reject(e);\n });\n\n this.resolver._isIframeWebStorageSupported(this.auth, isSupported => {\n if (!isSupported) {\n this.reject(\n _createError(this.auth, AuthErrorCode.WEB_STORAGE_UNSUPPORTED)\n );\n }\n });\n\n // Handle user closure. Notice this does *not* use await\n this.pollUserCancellation();\n }\n\n get eventId(): string | null {\n return this.authWindow?.associatedEvent || null;\n }\n\n cancel(): void {\n this.reject(_createError(this.auth, AuthErrorCode.EXPIRED_POPUP_REQUEST));\n }\n\n cleanUp(): void {\n if (this.authWindow) {\n this.authWindow.close();\n }\n\n if (this.pollId) {\n window.clearTimeout(this.pollId);\n }\n\n this.authWindow = null;\n this.pollId = null;\n PopupOperation.currentPopupAction = null;\n }\n\n private pollUserCancellation(): void {\n const poll = (): void => {\n if (this.authWindow?.window?.closed) {\n // Make sure that there is sufficient time for whatever action to\n // complete. The window could have closed but the sign in network\n // call could still be in flight. This is specifically true for\n // Firefox or if the opener is in an iframe, in which case the oauth\n // helper closes the popup.\n this.pollId = window.setTimeout(() => {\n this.pollId = null;\n this.reject(\n _createError(this.auth, AuthErrorCode.POPUP_CLOSED_BY_USER)\n );\n }, _Timeout.AUTH_EVENT);\n return;\n }\n\n this.pollId = window.setTimeout(poll, _POLL_WINDOW_CLOSE_TIMEOUT.get());\n };\n\n poll();\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthInternal } from '../../model/auth';\nimport {\n AuthEvent,\n AuthEventType,\n PopupRedirectResolverInternal\n} from '../../model/popup_redirect';\nimport { UserCredentialInternal } from '../../model/user';\nimport { PersistenceInternal } from '../persistence';\nimport { _persistenceKeyName } from '../persistence/persistence_user_manager';\nimport { _getInstance } from '../util/instantiator';\nimport { AbstractPopupRedirectOperation } from './abstract_popup_redirect_operation';\n\nconst PENDING_REDIRECT_KEY = 'pendingRedirect';\n\n// We only get one redirect outcome for any one auth, so just store it\n// in here.\nconst redirectOutcomeMap: Map<\n string,\n () => Promise<UserCredentialInternal | null>\n> = new Map();\n\nexport class RedirectAction extends AbstractPopupRedirectOperation {\n eventId = null;\n\n constructor(\n auth: AuthInternal,\n resolver: PopupRedirectResolverInternal,\n bypassAuthState = false\n ) {\n super(\n auth,\n [\n AuthEventType.SIGN_IN_VIA_REDIRECT,\n AuthEventType.LINK_VIA_REDIRECT,\n AuthEventType.REAUTH_VIA_REDIRECT,\n AuthEventType.UNKNOWN\n ],\n resolver,\n undefined,\n bypassAuthState\n );\n }\n\n /**\n * Override the execute function; if we already have a redirect result, then\n * just return it.\n */\n async execute(): Promise<UserCredentialInternal | null> {\n let readyOutcome = redirectOutcomeMap.get(this.auth._key());\n if (!readyOutcome) {\n try {\n const hasPendingRedirect = await _getAndClearPendingRedirectStatus(\n this.resolver,\n this.auth\n );\n const result = hasPendingRedirect ? await super.execute() : null;\n readyOutcome = () => Promise.resolve(result);\n } catch (e) {\n readyOutcome = () => Promise.reject(e);\n }\n\n redirectOutcomeMap.set(this.auth._key(), readyOutcome);\n }\n\n // If we're not bypassing auth state, the ready outcome should be set to\n // null.\n if (!this.bypassAuthState) {\n redirectOutcomeMap.set(this.auth._key(), () => Promise.resolve(null));\n }\n\n return readyOutcome();\n }\n\n async onAuthEvent(event: AuthEvent): Promise<void> {\n if (event.type === AuthEventType.SIGN_IN_VIA_REDIRECT) {\n return super.onAuthEvent(event);\n } else if (event.type === AuthEventType.UNKNOWN) {\n // This is a sentinel value indicating there's no pending redirect\n this.resolve(null);\n return;\n }\n\n if (event.eventId) {\n const user = await this.auth._redirectUserForId(event.eventId);\n if (user) {\n this.user = user;\n return super.onAuthEvent(event);\n } else {\n this.resolve(null);\n }\n }\n }\n\n async onExecution(): Promise<void> {}\n\n cleanUp(): void {}\n}\n\nexport async function _getAndClearPendingRedirectStatus(\n resolver: PopupRedirectResolverInternal,\n auth: AuthInternal\n): Promise<boolean> {\n const key = pendingRedirectKey(auth);\n const persistence = resolverPersistence(resolver);\n if (!(await persistence._isAvailable())) {\n return false;\n }\n const hasPendingRedirect = (await persistence._get(key)) === 'true';\n await persistence._remove(key);\n return hasPendingRedirect;\n}\n\nexport async function _setPendingRedirectStatus(\n resolver: PopupRedirectResolverInternal,\n auth: AuthInternal\n): Promise<void> {\n return resolverPersistence(resolver)._set(pendingRedirectKey(auth), 'true');\n}\n\nexport function _clearRedirectOutcomes(): void {\n redirectOutcomeMap.clear();\n}\n\nexport function _overrideRedirectResult(\n auth: AuthInternal,\n result: () => Promise<UserCredentialInternal | null>\n): void {\n redirectOutcomeMap.set(auth._key(), result);\n}\n\nfunction resolverPersistence(\n resolver: PopupRedirectResolverInternal\n): PersistenceInternal {\n return _getInstance(resolver._redirectPersistence);\n}\n\nfunction pendingRedirectKey(auth: AuthInternal): string {\n return _persistenceKeyName(\n PENDING_REDIRECT_KEY,\n auth.config.apiKey,\n auth.name\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Auth,\n AuthProvider,\n PopupRedirectResolver,\n User,\n UserCredential\n} from '../../model/public_types';\n\nimport { _castAuth } from '../../core/auth/auth_impl';\nimport { _assertLinkedStatus } from '../../core/user/link_unlink';\nimport { _assertInstanceOf } from '../../core/util/assert';\nimport { _generateEventId } from '../../core/util/event_id';\nimport { AuthEventType } from '../../model/popup_redirect';\nimport { UserInternal } from '../../model/user';\nimport { _withDefaultResolver } from '../../core/util/resolver';\nimport {\n RedirectAction,\n _setPendingRedirectStatus\n} from '../../core/strategies/redirect';\nimport { FederatedAuthProvider } from '../../core/providers/federated';\nimport { getModularInstance } from '@firebase/util';\n\n/**\n * Authenticates a Firebase client using a full-page redirect flow.\n *\n * @remarks\n * To handle the results and errors for this operation, refer to {@link getRedirectResult}.\n * Follow the {@link https://firebase.google.com/docs/auth/web/redirect-best-practices\n * | best practices} when using {@link signInWithRedirect}.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * // You can add additional scopes to the provider:\n * provider.addScope('user_birthday');\n * // Start a sign in process for an unauthenticated user.\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * }\n * // As this API can be used for sign-in, linking and reauthentication,\n * // check the operationType to determine what triggered this redirect\n * // operation.\n * const operationType = result.operationType;\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport function signInWithRedirect(\n auth: Auth,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<never> {\n return _signInWithRedirect(auth, provider, resolver) as Promise<never>;\n}\n\nexport async function _signInWithRedirect(\n auth: Auth,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<void | never> {\n const authInternal = _castAuth(auth);\n _assertInstanceOf(auth, provider, FederatedAuthProvider);\n // Wait for auth initialization to complete, this will process pending redirects and clear the\n // PENDING_REDIRECT_KEY in persistence. This should be completed before starting a new\n // redirect and creating a PENDING_REDIRECT_KEY entry.\n await authInternal._initializationPromise;\n const resolverInternal = _withDefaultResolver(authInternal, resolver);\n await _setPendingRedirectStatus(resolverInternal, authInternal);\n\n return resolverInternal._openRedirect(\n authInternal,\n provider,\n AuthEventType.SIGN_IN_VIA_REDIRECT\n );\n}\n\n/**\n * Reauthenticates the current user with the specified {@link OAuthProvider} using a full-page redirect flow.\n * @remarks\n * To handle the results and errors for this operation, refer to {@link getRedirectResult}.\n * Follow the {@link https://firebase.google.com/docs/auth/web/redirect-best-practices\n * | best practices} when using {@link reauthenticateWithRedirect}.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * const result = await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * // Reauthenticate using a redirect.\n * await reauthenticateWithRedirect(result.user, provider);\n * // This will again trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport function reauthenticateWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<never> {\n return _reauthenticateWithRedirect(\n user,\n provider,\n resolver\n ) as Promise<never>;\n}\nexport async function _reauthenticateWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<void | never> {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n // Wait for auth initialization to complete, this will process pending redirects and clear the\n // PENDING_REDIRECT_KEY in persistence. This should be completed before starting a new\n // redirect and creating a PENDING_REDIRECT_KEY entry.\n await userInternal.auth._initializationPromise;\n // Allow the resolver to error before persisting the redirect user\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n await _setPendingRedirectStatus(resolverInternal, userInternal.auth);\n\n const eventId = await prepareUserForRedirect(userInternal);\n return resolverInternal._openRedirect(\n userInternal.auth,\n provider,\n AuthEventType.REAUTH_VIA_REDIRECT,\n eventId\n );\n}\n\n/**\n * Links the {@link OAuthProvider} to the user account using a full-page redirect flow.\n * @remarks\n * To handle the results and errors for this operation, refer to {@link getRedirectResult}.\n * Follow the {@link https://firebase.google.com/docs/auth/web/redirect-best-practices\n * | best practices} when using {@link linkWithRedirect}.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using some other provider.\n * const result = await signInWithEmailAndPassword(auth, email, password);\n * // Link using a redirect.\n * const provider = new FacebookAuthProvider();\n * await linkWithRedirect(result.user, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * ```\n *\n * @param user - The user.\n * @param provider - The provider to authenticate. The provider has to be an {@link OAuthProvider}.\n * Non-OAuth providers like {@link EmailAuthProvider} will throw an error.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport function linkWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<never> {\n return _linkWithRedirect(user, provider, resolver) as Promise<never>;\n}\nexport async function _linkWithRedirect(\n user: User,\n provider: AuthProvider,\n resolver?: PopupRedirectResolver\n): Promise<void | never> {\n const userInternal = getModularInstance(user) as UserInternal;\n _assertInstanceOf(userInternal.auth, provider, FederatedAuthProvider);\n // Wait for auth initialization to complete, this will process pending redirects and clear the\n // PENDING_REDIRECT_KEY in persistence. This should be completed before starting a new\n // redirect and creating a PENDING_REDIRECT_KEY entry.\n await userInternal.auth._initializationPromise;\n // Allow the resolver to error before persisting the redirect user\n const resolverInternal = _withDefaultResolver(userInternal.auth, resolver);\n await _assertLinkedStatus(false, userInternal, provider.providerId);\n await _setPendingRedirectStatus(resolverInternal, userInternal.auth);\n\n const eventId = await prepareUserForRedirect(userInternal);\n return resolverInternal._openRedirect(\n userInternal.auth,\n provider,\n AuthEventType.LINK_VIA_REDIRECT,\n eventId\n );\n}\n\n/**\n * Returns a {@link UserCredential} from the redirect-based sign-in flow.\n *\n * @remarks\n * If sign-in succeeded, returns the signed in user. If sign-in was unsuccessful, fails with an\n * error. If no redirect operation was called, returns `null`.\n *\n * This method does not work in a Node.js environment.\n *\n * @example\n * ```javascript\n * // Sign in using a redirect.\n * const provider = new FacebookAuthProvider();\n * // You can add additional scopes to the provider:\n * provider.addScope('user_birthday');\n * // Start a sign in process for an unauthenticated user.\n * await signInWithRedirect(auth, provider);\n * // This will trigger a full page redirect away from your app\n *\n * // After returning from the redirect when your app initializes you can obtain the result\n * const result = await getRedirectResult(auth);\n * if (result) {\n * // This is the signed-in user\n * const user = result.user;\n * // This gives you a Facebook Access Token.\n * const credential = provider.credentialFromResult(auth, result);\n * const token = credential.accessToken;\n * }\n * // As this API can be used for sign-in, linking and reauthentication,\n * // check the operationType to determine what triggered this redirect\n * // operation.\n * const operationType = result.operationType;\n * ```\n *\n * @param auth - The {@link Auth} instance.\n * @param resolver - An instance of {@link PopupRedirectResolver}, optional\n * if already supplied to {@link initializeAuth} or provided by {@link getAuth}.\n *\n * @public\n */\nexport async function getRedirectResult(\n auth: Auth,\n resolver?: PopupRedirectResolver\n): Promise<UserCredential | null> {\n await _castAuth(auth)._initializationPromise;\n return _getRedirectResult(auth, resolver, false);\n}\n\nexport async function _getRedirectResult(\n auth: Auth,\n resolverExtern?: PopupRedirectResolver,\n bypassAuthState = false\n): Promise<UserCredential | null> {\n const authInternal = _castAuth(auth);\n const resolver = _withDefaultResolver(authInternal, resolverExtern);\n const action = new RedirectAction(authInternal, resolver, bypassAuthState);\n const result = await action.execute();\n\n if (result && !bypassAuthState) {\n delete result.user._redirectEventId;\n await authInternal._persistUserIfCurrent(result.user as UserInternal);\n await authInternal._setRedirectUser(null, resolverExtern);\n }\n\n return result;\n}\n\nasync function prepareUserForRedirect(user: UserInternal): Promise<string> {\n const eventId = _generateEventId(`${user.uid}:::`);\n user._redirectEventId = eventId;\n await user.auth._setRedirectUser(user);\n await user.auth._persistUserIfCurrent(user);\n return eventId;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AuthEvent,\n AuthEventConsumer,\n AuthEventType,\n EventManager\n} from '../../model/popup_redirect';\nimport { AuthErrorCode } from '../errors';\nimport { AuthInternal } from '../../model/auth';\nimport { _createError } from '../util/assert';\n\n// The amount of time to store the UIDs of seen events; this is\n// set to 10 min by default\nconst EVENT_DUPLICATION_CACHE_DURATION_MS = 10 * 60 * 1000;\n\nexport class AuthEventManager implements EventManager {\n private readonly cachedEventUids: Set<string> = new Set();\n private readonly consumers: Set<AuthEventConsumer> = new Set();\n protected queuedRedirectEvent: AuthEvent | null = null;\n protected hasHandledPotentialRedirect = false;\n private lastProcessedEventTime = Date.now();\n\n constructor(private readonly auth: AuthInternal) {}\n\n registerConsumer(authEventConsumer: AuthEventConsumer): void {\n this.consumers.add(authEventConsumer);\n\n if (\n this.queuedRedirectEvent &&\n this.isEventForConsumer(this.queuedRedirectEvent, authEventConsumer)\n ) {\n this.sendToConsumer(this.queuedRedirectEvent, authEventConsumer);\n this.saveEventToCache(this.queuedRedirectEvent);\n this.queuedRedirectEvent = null;\n }\n }\n\n unregisterConsumer(authEventConsumer: AuthEventConsumer): void {\n this.consumers.delete(authEventConsumer);\n }\n\n onEvent(event: AuthEvent): boolean {\n // Check if the event has already been handled\n if (this.hasEventBeenHandled(event)) {\n return false;\n }\n\n let handled = false;\n this.consumers.forEach(consumer => {\n if (this.isEventForConsumer(event, consumer)) {\n handled = true;\n this.sendToConsumer(event, consumer);\n this.saveEventToCache(event);\n }\n });\n\n if (this.hasHandledPotentialRedirect || !isRedirectEvent(event)) {\n // If we've already seen a redirect before, or this is a popup event,\n // bail now\n return handled;\n }\n\n this.hasHandledPotentialRedirect = true;\n\n // If the redirect wasn't handled, hang on to it\n if (!handled) {\n this.queuedRedirectEvent = event;\n handled = true;\n }\n\n return handled;\n }\n\n private sendToConsumer(event: AuthEvent, consumer: AuthEventConsumer): void {\n if (event.error && !isNullRedirectEvent(event)) {\n const code =\n (event.error.code?.split('auth/')[1] as AuthErrorCode) ||\n AuthErrorCode.INTERNAL_ERROR;\n consumer.onError(_createError(this.auth, code));\n } else {\n consumer.onAuthEvent(event);\n }\n }\n\n private isEventForConsumer(\n event: AuthEvent,\n consumer: AuthEventConsumer\n ): boolean {\n const eventIdMatches =\n consumer.eventId === null ||\n (!!event.eventId && event.eventId === consumer.eventId);\n return consumer.filter.includes(event.type) && eventIdMatches;\n }\n\n private hasEventBeenHandled(event: AuthEvent): boolean {\n if (\n Date.now() - this.lastProcessedEventTime >=\n EVENT_DUPLICATION_CACHE_DURATION_MS\n ) {\n this.cachedEventUids.clear();\n }\n\n return this.cachedEventUids.has(eventUid(event));\n }\n\n private saveEventToCache(event: AuthEvent): void {\n this.cachedEventUids.add(eventUid(event));\n this.lastProcessedEventTime = Date.now();\n }\n}\n\nfunction eventUid(e: AuthEvent): string {\n return [e.type, e.eventId, e.sessionId, e.tenantId].filter(v => v).join('-');\n}\n\nfunction isNullRedirectEvent({ type, error }: AuthEvent): boolean {\n return (\n type === AuthEventType.UNKNOWN &&\n error?.code === `auth/${AuthErrorCode.NO_AUTH_EVENT}`\n );\n}\n\nfunction isRedirectEvent(event: AuthEvent): boolean {\n switch (event.type) {\n case AuthEventType.SIGN_IN_VIA_REDIRECT:\n case AuthEventType.LINK_VIA_REDIRECT:\n case AuthEventType.REAUTH_VIA_REDIRECT:\n return true;\n case AuthEventType.UNKNOWN:\n return isNullRedirectEvent(event);\n default:\n return false;\n }\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _performApiRequest, Endpoint, HttpMethod } from '../index';\nimport { Auth } from '../../model/public_types';\n\nexport interface GetProjectConfigRequest {\n androidPackageName?: string;\n iosBundleId?: string;\n}\n\nexport interface GetProjectConfigResponse {\n authorizedDomains: string[];\n}\n\nexport async function _getProjectConfig(\n auth: Auth,\n request: GetProjectConfigRequest = {}\n): Promise<GetProjectConfigResponse> {\n return _performApiRequest<GetProjectConfigRequest, GetProjectConfigResponse>(\n auth,\n HttpMethod.GET,\n Endpoint.GET_PROJECT_CONFIG,\n request\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getProjectConfig } from '../../api/project_config/get_project_config';\nimport { AuthInternal } from '../../model/auth';\nimport { AuthErrorCode } from '../errors';\nimport { _fail } from './assert';\nimport { _getCurrentUrl } from './location';\n\nconst IP_ADDRESS_REGEX = /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/;\nconst HTTP_REGEX = /^https?/;\n\nexport async function _validateOrigin(auth: AuthInternal): Promise<void> {\n // Skip origin validation if we are in an emulated environment\n if (auth.config.emulator) {\n return;\n }\n\n const { authorizedDomains } = await _getProjectConfig(auth);\n\n for (const domain of authorizedDomains) {\n try {\n if (matchDomain(domain)) {\n return;\n }\n } catch {\n // Do nothing if there's a URL error; just continue searching\n }\n }\n\n // In the old SDK, this error also provides helpful messages.\n _fail(auth, AuthErrorCode.INVALID_ORIGIN);\n}\n\nfunction matchDomain(expected: string): boolean {\n const currentUrl = _getCurrentUrl();\n const { protocol, hostname } = new URL(currentUrl);\n if (expected.startsWith('chrome-extension://')) {\n const ceUrl = new URL(expected);\n\n if (ceUrl.hostname === '' && hostname === '') {\n // For some reason we're not parsing chrome URLs properly\n return (\n protocol === 'chrome-extension:' &&\n expected.replace('chrome-extension://', '') ===\n currentUrl.replace('chrome-extension://', '')\n );\n }\n\n return protocol === 'chrome-extension:' && ceUrl.hostname === hostname;\n }\n\n if (!HTTP_REGEX.test(protocol)) {\n return false;\n }\n\n if (IP_ADDRESS_REGEX.test(expected)) {\n // The domain has to be exactly equal to the pattern, as an IP domain will\n // only contain the IP, no extra character.\n return hostname === expected;\n }\n\n // Dots in pattern should be escaped.\n const escapedDomainPattern = expected.replace(/\\./g, '\\\\.');\n // Non ip address domains.\n // domain.com = *.domain.com OR domain.com\n const re = new RegExp(\n '^(.+\\\\.' + escapedDomainPattern + '|' + escapedDomainPattern + ')$',\n 'i'\n );\n return re.test(hostname);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _createError } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport * as js from '../load_js';\n\nconst NETWORK_TIMEOUT = new Delay(30000, 60000);\n\n/**\n * Reset unlaoded GApi modules. If gapi.load fails due to a network error,\n * it will stop working after a retrial. This is a hack to fix this issue.\n */\nfunction resetUnloadedGapiModules(): void {\n // Clear last failed gapi.load state to force next gapi.load to first\n // load the failed gapi.iframes module.\n // Get gapix.beacon context.\n const beacon = _window().___jsl;\n // Get current hint.\n if (beacon?.H) {\n // Get gapi hint.\n for (const hint of Object.keys(beacon.H)) {\n // Requested modules.\n beacon.H[hint].r = beacon.H[hint].r || [];\n // Loaded modules.\n beacon.H[hint].L = beacon.H[hint].L || [];\n // Set requested modules to a copy of the loaded modules.\n beacon.H[hint].r = [...beacon.H[hint].L];\n // Clear pending callbacks.\n if (beacon.CP) {\n for (let i = 0; i < beacon.CP.length; i++) {\n // Remove all failed pending callbacks.\n beacon.CP[i] = null;\n }\n }\n }\n }\n}\n\nfunction loadGapi(auth: AuthInternal): Promise<gapi.iframes.Context> {\n return new Promise<gapi.iframes.Context>((resolve, reject) => {\n // Function to run when gapi.load is ready.\n function loadGapiIframe(): void {\n // The developer may have tried to previously run gapi.load and failed.\n // Run this to fix that.\n resetUnloadedGapiModules();\n gapi.load('gapi.iframes', {\n callback: () => {\n resolve(gapi.iframes.getContext());\n },\n ontimeout: () => {\n // The above reset may be sufficient, but having this reset after\n // failure ensures that if the developer calls gapi.load after the\n // connection is re-established and before another attempt to embed\n // the iframe, it would work and would not be broken because of our\n // failed attempt.\n // Timeout when gapi.iframes.Iframe not loaded.\n resetUnloadedGapiModules();\n reject(_createError(auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n },\n timeout: NETWORK_TIMEOUT.get()\n });\n }\n\n if (_window().gapi?.iframes?.Iframe) {\n // If gapi.iframes.Iframe available, resolve.\n resolve(gapi.iframes.getContext());\n } else if (!!_window().gapi?.load) {\n // Gapi loader ready, load gapi.iframes.\n loadGapiIframe();\n } else {\n // Create a new iframe callback when this is called so as not to overwrite\n // any previous defined callback. This happens if this method is called\n // multiple times in parallel and could result in the later callback\n // overwriting the previous one. This would end up with a iframe\n // timeout.\n const cbName = js._generateCallbackName('iframefcb');\n // GApi loader not available, dynamically load platform.js.\n _window()[cbName] = () => {\n // GApi loader should be ready.\n if (!!gapi.load) {\n loadGapiIframe();\n } else {\n // Gapi loader failed, throw error.\n reject(_createError(auth, AuthErrorCode.NETWORK_REQUEST_FAILED));\n }\n };\n // Load GApi loader.\n return js\n ._loadJS(`https://apis.google.com/js/api.js?onload=${cbName}`)\n .catch(e => reject(e));\n }\n }).catch(error => {\n // Reset cached promise to allow for retrial.\n cachedGApiLoader = null;\n throw error;\n });\n}\n\nlet cachedGApiLoader: Promise<gapi.iframes.Context> | null = null;\nexport function _loadGapi(auth: AuthInternal): Promise<gapi.iframes.Context> {\n cachedGApiLoader = cachedGApiLoader || loadGapi(auth);\n return cachedGApiLoader;\n}\n\nexport function _resetLoader(): void {\n cachedGApiLoader = null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SDK_VERSION } from '@firebase/app';\nimport { querystring } from '@firebase/util';\nimport { DefaultConfig } from '../../../internal';\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert, _createError } from '../../core/util/assert';\nimport { Delay } from '../../core/util/delay';\nimport { _emulatorUrl } from '../../core/util/emulator';\nimport { AuthInternal } from '../../model/auth';\nimport { _window } from '../auth_window';\nimport * as gapiLoader from './gapi';\n\nconst PING_TIMEOUT = new Delay(5000, 15000);\nconst IFRAME_PATH = '__/auth/iframe';\nconst EMULATED_IFRAME_PATH = 'emulator/auth/iframe';\n\nconst IFRAME_ATTRIBUTES = {\n style: {\n position: 'absolute',\n top: '-100px',\n width: '1px',\n height: '1px'\n },\n 'aria-hidden': 'true',\n tabindex: '-1'\n};\n\n// Map from apiHost to endpoint ID for passing into iframe. In current SDK, apiHost can be set to\n// anything (not from a list of endpoints with IDs as in legacy), so this is the closest we can get.\nconst EID_FROM_APIHOST = new Map([\n [DefaultConfig.API_HOST, 'p'], // production\n ['staging-identitytoolkit.sandbox.googleapis.com', 's'], // staging\n ['test-identitytoolkit.sandbox.googleapis.com', 't'] // test\n]);\n\nfunction getIframeUrl(auth: AuthInternal): string {\n const config = auth.config;\n _assert(config.authDomain, auth, AuthErrorCode.MISSING_AUTH_DOMAIN);\n const url = config.emulator\n ? _emulatorUrl(config, EMULATED_IFRAME_PATH)\n : `https://${auth.config.authDomain}/${IFRAME_PATH}`;\n\n const params: Record<string, string> = {\n apiKey: config.apiKey,\n appName: auth.name,\n v: SDK_VERSION\n };\n const eid = EID_FROM_APIHOST.get(auth.config.apiHost);\n if (eid) {\n params.eid = eid;\n }\n const frameworks = auth._getFrameworks();\n if (frameworks.length) {\n params.fw = frameworks.join(',');\n }\n return `${url}?${querystring(params).slice(1)}`;\n}\n\nexport async function _openIframe(\n auth: AuthInternal\n): Promise<gapi.iframes.Iframe> {\n const context = await gapiLoader._loadGapi(auth);\n const gapi = _window().gapi;\n _assert(gapi, auth, AuthErrorCode.INTERNAL_ERROR);\n return context.open(\n {\n where: document.body,\n url: getIframeUrl(auth),\n messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER,\n attributes: IFRAME_ATTRIBUTES,\n dontclear: true\n },\n (iframe: gapi.iframes.Iframe) =>\n new Promise(async (resolve, reject) => {\n await iframe.restyle({\n // Prevent iframe from closing on mouse out.\n setHideOnLeave: false\n });\n\n const networkError = _createError(\n auth,\n AuthErrorCode.NETWORK_REQUEST_FAILED\n );\n // Confirm iframe is correctly loaded.\n // To fallback on failure, set a timeout.\n const networkErrorTimer = _window().setTimeout(() => {\n reject(networkError);\n }, PING_TIMEOUT.get());\n // Clear timer and resolve pending iframe ready promise.\n function clearTimerAndResolve(): void {\n _window().clearTimeout(networkErrorTimer);\n resolve(iframe);\n }\n // This returns an IThenable. However the reject part does not call\n // when the iframe is not loaded.\n iframe.ping(clearTimerAndResolve).then(clearTimerAndResolve, () => {\n reject(networkError);\n });\n })\n );\n}\n","/**\n * @license\n * Copyright 2020 Google LLC.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getUA } from '@firebase/util';\n\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert } from '../../core/util/assert';\nimport {\n _isChromeIOS,\n _isFirefox,\n _isIOSStandalone\n} from '../../core/util/browser';\nimport { AuthInternal } from '../../model/auth';\n\nconst BASE_POPUP_OPTIONS = {\n location: 'yes',\n resizable: 'yes',\n statusbar: 'yes',\n toolbar: 'no'\n};\n\nconst DEFAULT_WIDTH = 500;\nconst DEFAULT_HEIGHT = 600;\nconst TARGET_BLANK = '_blank';\n\nconst FIREFOX_EMPTY_URL = 'http://localhost';\n\nexport class AuthPopup {\n associatedEvent: string | null = null;\n\n constructor(readonly window: Window | null) {}\n\n close(): void {\n if (this.window) {\n try {\n this.window.close();\n } catch (e) {}\n }\n }\n}\n\nexport function _open(\n auth: AuthInternal,\n url?: string,\n name?: string,\n width = DEFAULT_WIDTH,\n height = DEFAULT_HEIGHT\n): AuthPopup {\n const top = Math.max((window.screen.availHeight - height) / 2, 0).toString();\n const left = Math.max((window.screen.availWidth - width) / 2, 0).toString();\n let target = '';\n\n const options: { [key: string]: string } = {\n ...BASE_POPUP_OPTIONS,\n width: width.toString(),\n height: height.toString(),\n top,\n left\n };\n\n // Chrome iOS 7 and 8 is returning an undefined popup win when target is\n // specified, even though the popup is not necessarily blocked.\n const ua = getUA().toLowerCase();\n\n if (name) {\n target = _isChromeIOS(ua) ? TARGET_BLANK : name;\n }\n\n if (_isFirefox(ua)) {\n // Firefox complains when invalid URLs are popped out. Hacky way to bypass.\n url = url || FIREFOX_EMPTY_URL;\n // Firefox disables by default scrolling on popup windows, which can create\n // issues when the user has many Google accounts, for instance.\n options.scrollbars = 'yes';\n }\n\n const optionsString = Object.entries(options).reduce(\n (accum, [key, value]) => `${accum}${key}=${value},`,\n ''\n );\n\n if (_isIOSStandalone(ua) && target !== '_self') {\n openAsNewWindowIOS(url || '', target);\n return new AuthPopup(null);\n }\n\n // about:blank getting sanitized causing browsers like IE/Edge to display\n // brief error message before redirecting to handler.\n const newWin = window.open(url || '', target, optionsString);\n _assert(newWin, auth, AuthErrorCode.POPUP_BLOCKED);\n\n // Flaky on IE edge, encapsulate with a try and catch.\n try {\n newWin.focus();\n } catch (e) {}\n\n return new AuthPopup(newWin);\n}\n\nfunction openAsNewWindowIOS(url: string, target: string): void {\n const el = document.createElement('a');\n el.href = url;\n el.target = target;\n const click = document.createEvent('MouseEvent');\n click.initMouseEvent(\n 'click',\n true,\n true,\n window,\n 1,\n 0,\n 0,\n 0,\n 0,\n false,\n false,\n false,\n false,\n 1,\n null\n );\n el.dispatchEvent(click);\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SDK_VERSION } from '@firebase/app';\nimport { AuthProvider } from '../../model/public_types';\nimport { ApiKey, AppName, AuthInternal } from '../../model/auth';\nimport { AuthEventType } from '../../model/popup_redirect';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from './assert';\nimport { isEmpty, querystring } from '@firebase/util';\nimport { _emulatorUrl } from './emulator';\nimport { FederatedAuthProvider } from '../providers/federated';\nimport { BaseOAuthProvider } from '../providers/oauth';\n\n/**\n * URL for Authentication widget which will initiate the OAuth handshake\n *\n * @internal\n */\nconst WIDGET_PATH = '__/auth/handler';\n\n/**\n * URL for emulated environment\n *\n * @internal\n */\nconst EMULATOR_WIDGET_PATH = 'emulator/auth/handler';\n\n/**\n * Fragment name for the App Check token that gets passed to the widget\n *\n * @internal\n */\nconst FIREBASE_APP_CHECK_FRAGMENT_ID = encodeURIComponent('fac');\n\n// eslint-disable-next-line @typescript-eslint/consistent-type-definitions\ntype WidgetParams = {\n apiKey: ApiKey;\n appName: AppName;\n authType: AuthEventType;\n redirectUrl?: string;\n v: string;\n providerId?: string;\n scopes?: string;\n customParameters?: string;\n eventId?: string;\n tid?: string;\n} & { [key: string]: string | undefined };\n\nexport async function _getRedirectUrl(\n auth: AuthInternal,\n provider: AuthProvider,\n authType: AuthEventType,\n redirectUrl?: string,\n eventId?: string,\n additionalParams?: Record<string, string>\n): Promise<string> {\n _assert(auth.config.authDomain, auth, AuthErrorCode.MISSING_AUTH_DOMAIN);\n _assert(auth.config.apiKey, auth, AuthErrorCode.INVALID_API_KEY);\n\n const params: WidgetParams = {\n apiKey: auth.config.apiKey,\n appName: auth.name,\n authType,\n redirectUrl,\n v: SDK_VERSION,\n eventId\n };\n\n if (provider instanceof FederatedAuthProvider) {\n provider.setDefaultLanguage(auth.languageCode);\n params.providerId = provider.providerId || '';\n if (!isEmpty(provider.getCustomParameters())) {\n params.customParameters = JSON.stringify(provider.getCustomParameters());\n }\n\n // TODO set additionalParams from the provider as well?\n for (const [key, value] of Object.entries(additionalParams || {})) {\n params[key] = value;\n }\n }\n\n if (provider instanceof BaseOAuthProvider) {\n const scopes = provider.getScopes().filter(scope => scope !== '');\n if (scopes.length > 0) {\n params.scopes = scopes.join(',');\n }\n }\n\n if (auth.tenantId) {\n params.tid = auth.tenantId;\n }\n\n // TODO: maybe set eid as endipointId\n // TODO: maybe set fw as Frameworks.join(\",\")\n\n const paramsDict = params as Record<string, string | number>;\n for (const key of Object.keys(paramsDict)) {\n if (paramsDict[key] === undefined) {\n delete paramsDict[key];\n }\n }\n\n // Sets the App Check token to pass to the widget\n const appCheckToken = await auth._getAppCheckToken();\n const appCheckTokenFragment = appCheckToken\n ? `#${FIREBASE_APP_CHECK_FRAGMENT_ID}=${encodeURIComponent(appCheckToken)}`\n : '';\n\n // Start at index 1 to skip the leading '&' in the query string\n return `${getHandlerBase(auth)}?${querystring(paramsDict).slice(\n 1\n )}${appCheckTokenFragment}`;\n}\n\nfunction getHandlerBase({ config }: AuthInternal): string {\n if (!config.emulator) {\n return `https://${config.authDomain}/${WIDGET_PATH}`;\n }\n\n return _emulatorUrl(config, EMULATOR_WIDGET_PATH);\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AuthProvider, PopupRedirectResolver } from '../model/public_types';\n\nimport { AuthEventManager } from '../core/auth/auth_event_manager';\nimport { AuthErrorCode } from '../core/errors';\nimport { _assert, debugAssert, _fail } from '../core/util/assert';\nimport { _generateEventId } from '../core/util/event_id';\nimport { _getCurrentUrl } from '../core/util/location';\nimport { _validateOrigin } from '../core/util/validate_origin';\nimport { AuthInternal } from '../model/auth';\nimport {\n AuthEventType,\n EventManager,\n GapiAuthEvent,\n GapiOutcome,\n PopupRedirectResolverInternal\n} from '../model/popup_redirect';\nimport { _setWindowLocation } from './auth_window';\nimport { _openIframe } from './iframe/iframe';\nimport { browserSessionPersistence } from './persistence/session_storage';\nimport { _open, AuthPopup } from './util/popup';\nimport { _getRedirectResult } from './strategies/redirect';\nimport { _getRedirectUrl } from '../core/util/handler';\nimport { _isIOS, _isMobileBrowser, _isSafari } from '../core/util/browser';\nimport { _overrideRedirectResult } from '../core/strategies/redirect';\n\n/**\n * The special web storage event\n *\n */\nconst WEB_STORAGE_SUPPORT_KEY = 'webStorageSupport';\n\ninterface WebStorageSupportMessage extends gapi.iframes.Message {\n [index: number]: Record<string, boolean>;\n}\n\ninterface ManagerOrPromise {\n manager?: EventManager;\n promise?: Promise<EventManager>;\n}\n\nclass BrowserPopupRedirectResolver implements PopupRedirectResolverInternal {\n private readonly eventManagers: Record<string, ManagerOrPromise> = {};\n private readonly iframes: Record<string, gapi.iframes.Iframe> = {};\n private readonly originValidationPromises: Record<string, Promise<void>> = {};\n\n readonly _redirectPersistence = browserSessionPersistence;\n\n // Wrapping in async even though we don't await anywhere in order\n // to make sure errors are raised as promise rejections\n async _openPopup(\n auth: AuthInternal,\n provider: AuthProvider,\n authType: AuthEventType,\n eventId?: string\n ): Promise<AuthPopup> {\n debugAssert(\n this.eventManagers[auth._key()]?.manager,\n '_initialize() not called before _openPopup()'\n );\n\n const url = await _getRedirectUrl(\n auth,\n provider,\n authType,\n _getCurrentUrl(),\n eventId\n );\n return _open(auth, url, _generateEventId());\n }\n\n async _openRedirect(\n auth: AuthInternal,\n provider: AuthProvider,\n authType: AuthEventType,\n eventId?: string\n ): Promise<never> {\n await this._originValidation(auth);\n const url = await _getRedirectUrl(\n auth,\n provider,\n authType,\n _getCurrentUrl(),\n eventId\n );\n _setWindowLocation(url);\n return new Promise(() => {});\n }\n\n _initialize(auth: AuthInternal): Promise<EventManager> {\n const key = auth._key();\n if (this.eventManagers[key]) {\n const { manager, promise } = this.eventManagers[key];\n if (manager) {\n return Promise.resolve(manager);\n } else {\n debugAssert(promise, 'If manager is not set, promise should be');\n return promise;\n }\n }\n\n const promise = this.initAndGetManager(auth);\n this.eventManagers[key] = { promise };\n\n // If the promise is rejected, the key should be removed so that the\n // operation can be retried later.\n promise.catch(() => {\n delete this.eventManagers[key];\n });\n\n return promise;\n }\n\n private async initAndGetManager(auth: AuthInternal): Promise<EventManager> {\n const iframe = await _openIframe(auth);\n const manager = new AuthEventManager(auth);\n iframe.register<GapiAuthEvent>(\n 'authEvent',\n (iframeEvent: GapiAuthEvent | null) => {\n _assert(iframeEvent?.authEvent, auth, AuthErrorCode.INVALID_AUTH_EVENT);\n // TODO: Consider splitting redirect and popup events earlier on\n\n const handled = manager.onEvent(iframeEvent.authEvent);\n return { status: handled ? GapiOutcome.ACK : GapiOutcome.ERROR };\n },\n gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\n );\n\n this.eventManagers[auth._key()] = { manager };\n this.iframes[auth._key()] = iframe;\n return manager;\n }\n\n _isIframeWebStorageSupported(\n auth: AuthInternal,\n cb: (supported: boolean) => unknown\n ): void {\n const iframe = this.iframes[auth._key()];\n iframe.send<gapi.iframes.Message, WebStorageSupportMessage>(\n WEB_STORAGE_SUPPORT_KEY,\n { type: WEB_STORAGE_SUPPORT_KEY },\n result => {\n const isSupported = result?.[0]?.[WEB_STORAGE_SUPPORT_KEY];\n if (isSupported !== undefined) {\n cb(!!isSupported);\n }\n\n _fail(auth, AuthErrorCode.INTERNAL_ERROR);\n },\n gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER\n );\n }\n\n _originValidation(auth: AuthInternal): Promise<void> {\n const key = auth._key();\n if (!this.originValidationPromises[key]) {\n this.originValidationPromises[key] = _validateOrigin(auth);\n }\n\n return this.originValidationPromises[key];\n }\n\n get _shouldInitProactively(): boolean {\n // Mobile browsers and Safari need to optimistically initialize\n return _isMobileBrowser() || _isSafari() || _isIOS();\n }\n\n _completeRedirectFn = _getRedirectResult;\n\n _overrideRedirectResult = _overrideRedirectResult;\n}\n\n/**\n * An implementation of {@link PopupRedirectResolver} suitable for browser\n * based applications.\n *\n * @remarks\n * This method does not work in a Node.js environment.\n *\n * @public\n */\nexport const browserPopupRedirectResolver: PopupRedirectResolver =\n BrowserPopupRedirectResolver;\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { FactorId, MultiFactorAssertion } from '../model/public_types';\nimport { debugFail } from '../core/util/assert';\nimport { MultiFactorSessionImpl, MultiFactorSessionType } from './mfa_session';\nimport { FinalizeMfaResponse } from '../api/authentication/mfa';\nimport { AuthInternal } from '../model/auth';\n\nexport abstract class MultiFactorAssertionImpl implements MultiFactorAssertion {\n protected constructor(readonly factorId: FactorId) {}\n\n _process(\n auth: AuthInternal,\n session: MultiFactorSessionImpl,\n displayName?: string | null\n ): Promise<FinalizeMfaResponse> {\n switch (session.type) {\n case MultiFactorSessionType.ENROLL:\n return this._finalizeEnroll(auth, session.credential, displayName);\n case MultiFactorSessionType.SIGN_IN:\n return this._finalizeSignIn(auth, session.credential);\n default:\n return debugFail('unexpected MultiFactorSessionType');\n }\n }\n\n abstract _finalizeEnroll(\n auth: AuthInternal,\n idToken: string,\n displayName?: string | null\n ): Promise<FinalizeMfaResponse>;\n abstract _finalizeSignIn(\n auth: AuthInternal,\n mfaPendingCredential: string\n ): Promise<FinalizeMfaResponse>;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n FactorId,\n PhoneMultiFactorAssertion\n} from '../../../model/public_types';\n\nimport { MultiFactorAssertionImpl } from '../../../mfa/mfa_assertion';\nimport { AuthInternal } from '../../../model/auth';\nimport { finalizeEnrollPhoneMfa } from '../../../api/account_management/mfa';\nimport { PhoneAuthCredential } from '../../../core/credentials/phone';\nimport {\n finalizeSignInPhoneMfa,\n FinalizeMfaResponse\n} from '../../../api/authentication/mfa';\n\n/**\n * {@inheritdoc PhoneMultiFactorAssertion}\n *\n * @public\n */\nexport class PhoneMultiFactorAssertionImpl\n extends MultiFactorAssertionImpl\n implements PhoneMultiFactorAssertion\n{\n private constructor(private readonly credential: PhoneAuthCredential) {\n super(FactorId.PHONE);\n }\n\n /** @internal */\n static _fromCredential(\n credential: PhoneAuthCredential\n ): PhoneMultiFactorAssertionImpl {\n return new PhoneMultiFactorAssertionImpl(credential);\n }\n\n /** @internal */\n _finalizeEnroll(\n auth: AuthInternal,\n idToken: string,\n displayName?: string | null\n ): Promise<FinalizeMfaResponse> {\n return finalizeEnrollPhoneMfa(auth, {\n idToken,\n displayName,\n phoneVerificationInfo: this.credential._makeVerificationRequest()\n });\n }\n\n /** @internal */\n _finalizeSignIn(\n auth: AuthInternal,\n mfaPendingCredential: string\n ): Promise<FinalizeMfaResponse> {\n return finalizeSignInPhoneMfa(auth, {\n mfaPendingCredential,\n phoneVerificationInfo: this.credential._makeVerificationRequest()\n });\n }\n}\n\n/**\n * Provider for generating a {@link PhoneMultiFactorAssertion}.\n *\n * @public\n */\nexport class PhoneMultiFactorGenerator {\n private constructor() {}\n\n /**\n * Provides a {@link PhoneMultiFactorAssertion} to confirm ownership of the phone second factor.\n *\n * @remarks\n * This method does not work in a Node.js environment.\n *\n * @param phoneAuthCredential - A credential provided by {@link PhoneAuthProvider.credential}.\n * @returns A {@link PhoneMultiFactorAssertion} which can be used with\n * {@link MultiFactorResolver.resolveSignIn}\n */\n static assertion(credential: PhoneAuthCredential): PhoneMultiFactorAssertion {\n return PhoneMultiFactorAssertionImpl._fromCredential(credential);\n }\n\n /**\n * The identifier of the phone second factor: `phone`.\n */\n static FACTOR_ID = 'phone';\n}\n","/**\n * @license\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n TotpMultiFactorAssertion,\n MultiFactorSession,\n FactorId\n} from '../../model/public_types';\nimport { AuthInternal } from '../../model/auth';\nimport {\n finalizeEnrollTotpMfa,\n startEnrollTotpMfa,\n StartTotpMfaEnrollmentResponse,\n TotpVerificationInfo\n} from '../../api/account_management/mfa';\nimport {\n FinalizeMfaResponse,\n finalizeSignInTotpMfa\n} from '../../api/authentication/mfa';\nimport { MultiFactorAssertionImpl } from '../../mfa/mfa_assertion';\nimport { MultiFactorSessionImpl } from '../mfa_session';\nimport { AuthErrorCode } from '../../core/errors';\nimport { _assert } from '../../core/util/assert';\n\n/**\n * Provider for generating a {@link TotpMultiFactorAssertion}.\n *\n * @public\n */\nexport class TotpMultiFactorGenerator {\n /**\n * Provides a {@link TotpMultiFactorAssertion} to confirm ownership of\n * the TOTP (time-based one-time password) second factor.\n * This assertion is used to complete enrollment in TOTP second factor.\n *\n * @param secret A {@link TotpSecret} containing the shared secret key and other TOTP parameters.\n * @param oneTimePassword One-time password from TOTP App.\n * @returns A {@link TotpMultiFactorAssertion} which can be used with\n * {@link MultiFactorUser.enroll}.\n */\n static assertionForEnrollment(\n secret: TotpSecret,\n oneTimePassword: string\n ): TotpMultiFactorAssertion {\n return TotpMultiFactorAssertionImpl._fromSecret(secret, oneTimePassword);\n }\n\n /**\n * Provides a {@link TotpMultiFactorAssertion} to confirm ownership of the TOTP second factor.\n * This assertion is used to complete signIn with TOTP as the second factor.\n *\n * @param enrollmentId identifies the enrolled TOTP second factor.\n * @param oneTimePassword One-time password from TOTP App.\n * @returns A {@link TotpMultiFactorAssertion} which can be used with\n * {@link MultiFactorResolver.resolveSignIn}.\n */\n static assertionForSignIn(\n enrollmentId: string,\n oneTimePassword: string\n ): TotpMultiFactorAssertion {\n return TotpMultiFactorAssertionImpl._fromEnrollmentId(\n enrollmentId,\n oneTimePassword\n );\n }\n\n /**\n * Returns a promise to {@link TotpSecret} which contains the TOTP shared secret key and other parameters.\n * Creates a TOTP secret as part of enrolling a TOTP second factor.\n * Used for generating a QR code URL or inputting into a TOTP app.\n * This method uses the auth instance corresponding to the user in the multiFactorSession.\n *\n * @param session The {@link MultiFactorSession} that the user is part of.\n * @returns A promise to {@link TotpSecret}.\n */\n static async generateSecret(\n session: MultiFactorSession\n ): Promise<TotpSecret> {\n const mfaSession = session as MultiFactorSessionImpl;\n _assert(\n typeof mfaSession.user?.auth !== 'undefined',\n AuthErrorCode.INTERNAL_ERROR\n );\n const response = await startEnrollTotpMfa(mfaSession.user.auth, {\n idToken: mfaSession.credential,\n totpEnrollmentInfo: {}\n });\n return TotpSecret._fromStartTotpMfaEnrollmentResponse(\n response,\n mfaSession.user.auth\n );\n }\n\n /**\n * The identifier of the TOTP second factor: `totp`.\n */\n static FACTOR_ID: 'totp' = FactorId.TOTP;\n}\n\nexport class TotpMultiFactorAssertionImpl\n extends MultiFactorAssertionImpl\n implements TotpMultiFactorAssertion\n{\n constructor(\n readonly otp: string,\n readonly enrollmentId?: string,\n readonly secret?: TotpSecret\n ) {\n super(FactorId.TOTP);\n }\n\n /** @internal */\n static _fromSecret(\n secret: TotpSecret,\n otp: string\n ): TotpMultiFactorAssertionImpl {\n return new TotpMultiFactorAssertionImpl(otp, undefined, secret);\n }\n\n /** @internal */\n static _fromEnrollmentId(\n enrollmentId: string,\n otp: string\n ): TotpMultiFactorAssertionImpl {\n return new TotpMultiFactorAssertionImpl(otp, enrollmentId);\n }\n\n /** @internal */\n async _finalizeEnroll(\n auth: AuthInternal,\n idToken: string,\n displayName?: string | null\n ): Promise<FinalizeMfaResponse> {\n _assert(\n typeof this.secret !== 'undefined',\n auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n return finalizeEnrollTotpMfa(auth, {\n idToken,\n displayName,\n totpVerificationInfo: this.secret._makeTotpVerificationInfo(this.otp)\n });\n }\n\n /** @internal */\n async _finalizeSignIn(\n auth: AuthInternal,\n mfaPendingCredential: string\n ): Promise<FinalizeMfaResponse> {\n _assert(\n this.enrollmentId !== undefined && this.otp !== undefined,\n auth,\n AuthErrorCode.ARGUMENT_ERROR\n );\n const totpVerificationInfo = { verificationCode: this.otp };\n return finalizeSignInTotpMfa(auth, {\n mfaPendingCredential,\n mfaEnrollmentId: this.enrollmentId,\n totpVerificationInfo\n });\n }\n}\n\n/**\n * Provider for generating a {@link TotpMultiFactorAssertion}.\n *\n * Stores the shared secret key and other parameters to generate time-based OTPs.\n * Implements methods to retrieve the shared secret key and generate a QR code URL.\n * @public\n */\nexport class TotpSecret {\n /**\n * Shared secret key/seed used for enrolling in TOTP MFA and generating OTPs.\n */\n readonly secretKey: string;\n /**\n * Hashing algorithm used.\n */\n readonly hashingAlgorithm: string;\n /**\n * Length of the one-time passwords to be generated.\n */\n readonly codeLength: number;\n /**\n * The interval (in seconds) when the OTP codes should change.\n */\n readonly codeIntervalSeconds: number;\n /**\n * The timestamp (UTC string) by which TOTP enrollment should be completed.\n */\n // This can be used by callers to show a countdown of when to enter OTP code by.\n readonly enrollmentCompletionDeadline: string;\n\n // The public members are declared outside the constructor so the docs can be generated.\n private constructor(\n secretKey: string,\n hashingAlgorithm: string,\n codeLength: number,\n codeIntervalSeconds: number,\n enrollmentCompletionDeadline: string,\n private readonly sessionInfo: string,\n private readonly auth: AuthInternal\n ) {\n this.secretKey = secretKey;\n this.hashingAlgorithm = hashingAlgorithm;\n this.codeLength = codeLength;\n this.codeIntervalSeconds = codeIntervalSeconds;\n this.enrollmentCompletionDeadline = enrollmentCompletionDeadline;\n }\n\n /** @internal */\n static _fromStartTotpMfaEnrollmentResponse(\n response: StartTotpMfaEnrollmentResponse,\n auth: AuthInternal\n ): TotpSecret {\n return new TotpSecret(\n response.totpSessionInfo.sharedSecretKey,\n response.totpSessionInfo.hashingAlgorithm,\n response.totpSessionInfo.verificationCodeLength,\n response.totpSessionInfo.periodSec,\n new Date(response.totpSessionInfo.finalizeEnrollmentTime).toUTCString(),\n response.totpSessionInfo.sessionInfo,\n auth\n );\n }\n\n /** @internal */\n _makeTotpVerificationInfo(otp: string): TotpVerificationInfo {\n return { sessionInfo: this.sessionInfo, verificationCode: otp };\n }\n\n /**\n * Returns a QR code URL as described in\n * https://github.com/google/google-authenticator/wiki/Key-Uri-Format\n * This can be displayed to the user as a QR code to be scanned into a TOTP app like Google Authenticator.\n * If the optional parameters are unspecified, an accountName of <userEmail> and issuer of <firebaseAppName> are used.\n *\n * @param accountName the name of the account/app along with a user identifier.\n * @param issuer issuer of the TOTP (likely the app name).\n * @returns A QR code URL string.\n */\n generateQrCodeUrl(accountName?: string, issuer?: string): string {\n let useDefaults = false;\n if (_isEmptyString(accountName) || _isEmptyString(issuer)) {\n useDefaults = true;\n }\n if (useDefaults) {\n if (_isEmptyString(accountName)) {\n accountName = this.auth.currentUser?.email || 'unknownuser';\n }\n if (_isEmptyString(issuer)) {\n issuer = this.auth.name;\n }\n }\n return `otpauth://totp/${issuer}:${accountName}?secret=${this.secretKey}&issuer=${issuer}&algorithm=${this.hashingAlgorithm}&digits=${this.codeLength}`;\n }\n}\n\n/** @internal */\nfunction _isEmptyString(input?: string): boolean {\n return typeof input === 'undefined' || input?.length === 0;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Unsubscribe } from '@firebase/util';\nimport { FirebaseAuthInternal } from '@firebase/auth-interop-types';\n\nimport { AuthInternal } from '../../model/auth';\nimport { UserInternal } from '../../model/user';\nimport { _assert } from '../util/assert';\nimport { AuthErrorCode } from '../errors';\n\ninterface TokenListener {\n (tok: string | null): unknown;\n}\n\nexport class AuthInterop implements FirebaseAuthInternal {\n private readonly internalListeners: Map<TokenListener, Unsubscribe> =\n new Map();\n\n constructor(private readonly auth: AuthInternal) {}\n\n getUid(): string | null {\n this.assertAuthConfigured();\n return this.auth.currentUser?.uid || null;\n }\n\n async getToken(\n forceRefresh?: boolean\n ): Promise<{ accessToken: string } | null> {\n this.assertAuthConfigured();\n await this.auth._initializationPromise;\n if (!this.auth.currentUser) {\n return null;\n }\n\n const accessToken = await this.auth.currentUser.getIdToken(forceRefresh);\n return { accessToken };\n }\n\n addAuthTokenListener(listener: TokenListener): void {\n this.assertAuthConfigured();\n if (this.internalListeners.has(listener)) {\n return;\n }\n\n const unsubscribe = this.auth.onIdTokenChanged(user => {\n listener(\n (user as UserInternal | null)?.stsTokenManager.accessToken || null\n );\n });\n this.internalListeners.set(listener, unsubscribe);\n this.updateProactiveRefresh();\n }\n\n removeAuthTokenListener(listener: TokenListener): void {\n this.assertAuthConfigured();\n const unsubscribe = this.internalListeners.get(listener);\n if (!unsubscribe) {\n return;\n }\n\n this.internalListeners.delete(listener);\n unsubscribe();\n this.updateProactiveRefresh();\n }\n\n private assertAuthConfigured(): void {\n _assert(\n this.auth._initializationPromise,\n AuthErrorCode.DEPENDENT_SDK_INIT_BEFORE_AUTH\n );\n }\n\n private updateProactiveRefresh(): void {\n if (this.internalListeners.size > 0) {\n this.auth._startProactiveRefresh();\n } else {\n this.auth._stopProactiveRefresh();\n }\n }\n}\n","/**\n * @license\n * Copyright 2021 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp, getApp, _getProvider } from '@firebase/app';\n\nimport {\n initializeAuth,\n beforeAuthStateChanged,\n onIdTokenChanged,\n connectAuthEmulator\n} from '..';\nimport { registerAuth } from '../core/auth/register';\nimport { ClientPlatform } from '../core/util/version';\nimport { browserLocalPersistence } from './persistence/local_storage';\nimport { browserSessionPersistence } from './persistence/session_storage';\nimport { indexedDBLocalPersistence } from './persistence/indexed_db';\nimport { browserPopupRedirectResolver } from './popup_redirect';\nimport { Auth, User } from '../model/public_types';\nimport { getDefaultEmulatorHost, getExperimentalSetting } from '@firebase/util';\n\nconst DEFAULT_ID_TOKEN_MAX_AGE = 5 * 60;\nconst authIdTokenMaxAge =\n getExperimentalSetting('authIdTokenMaxAge') || DEFAULT_ID_TOKEN_MAX_AGE;\n\nlet lastPostedIdToken: string | undefined | null = null;\n\nconst mintCookieFactory = (url: string) => async (user: User | null) => {\n const idTokenResult = user && (await user.getIdTokenResult());\n const idTokenAge =\n idTokenResult &&\n (new Date().getTime() - Date.parse(idTokenResult.issuedAtTime)) / 1_000;\n if (idTokenAge && idTokenAge > authIdTokenMaxAge) {\n return;\n }\n // Specifically trip null => undefined when logged out, to delete any existing cookie\n const idToken = idTokenResult?.token;\n if (lastPostedIdToken === idToken) {\n return;\n }\n lastPostedIdToken = idToken;\n await fetch(url, {\n method: idToken ? 'POST' : 'DELETE',\n headers: idToken\n ? {\n 'Authorization': `Bearer ${idToken}`\n }\n : {}\n });\n};\n\n/**\n * Returns the Auth instance associated with the provided {@link @firebase/app#FirebaseApp}.\n * If no instance exists, initializes an Auth instance with platform-specific default dependencies.\n *\n * @param app - The Firebase App.\n *\n * @public\n */\nexport function getAuth(app: FirebaseApp = getApp()): Auth {\n const provider = _getProvider(app, 'auth');\n\n if (provider.isInitialized()) {\n return provider.getImmediate();\n }\n\n const auth = initializeAuth(app, {\n popupRedirectResolver: browserPopupRedirectResolver,\n persistence: [\n indexedDBLocalPersistence,\n browserLocalPersistence,\n browserSessionPersistence\n ]\n });\n\n const authTokenSyncUrl = getExperimentalSetting('authTokenSyncURL');\n if (authTokenSyncUrl) {\n const mintCookie = mintCookieFactory(authTokenSyncUrl);\n beforeAuthStateChanged(auth, mintCookie, () =>\n mintCookie(auth.currentUser)\n );\n onIdTokenChanged(auth, user => mintCookie(user));\n }\n\n const authEmulatorHost = getDefaultEmulatorHost('auth');\n if (authEmulatorHost) {\n connectAuthEmulator(auth, `http://${authEmulatorHost}`);\n }\n\n return auth;\n}\n\nregisterAuth(ClientPlatform.BROWSER);\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _registerComponent, registerVersion } from '@firebase/app';\nimport {\n Component,\n ComponentType,\n InstantiationMode\n} from '@firebase/component';\n\nimport { name, version } from '../../../package.json';\nimport { AuthErrorCode } from '../errors';\nimport { _assert } from '../util/assert';\nimport { _getClientVersion, ClientPlatform } from '../util/version';\nimport { _castAuth, AuthImpl, DefaultConfig } from './auth_impl';\nimport { AuthInterop } from './firebase_internal';\nimport { ConfigInternal } from '../../model/auth';\nimport { Dependencies } from '../../model/public_types';\nimport { _initializeAuthInstance } from './initialize';\n\nexport const enum _ComponentName {\n AUTH = 'auth',\n AUTH_INTERNAL = 'auth-internal'\n}\n\nfunction getVersionForPlatform(\n clientPlatform: ClientPlatform\n): string | undefined {\n switch (clientPlatform) {\n case ClientPlatform.NODE:\n return 'node';\n case ClientPlatform.REACT_NATIVE:\n return 'rn';\n case ClientPlatform.WORKER:\n return 'webworker';\n case ClientPlatform.CORDOVA:\n return 'cordova';\n default:\n return undefined;\n }\n}\n\n/** @internal */\nexport function registerAuth(clientPlatform: ClientPlatform): void {\n _registerComponent(\n new Component(\n _ComponentName.AUTH,\n (container, { options: deps }: { options?: Dependencies }) => {\n const app = container.getProvider('app').getImmediate()!;\n const heartbeatServiceProvider =\n container.getProvider<'heartbeat'>('heartbeat');\n const appCheckServiceProvider =\n container.getProvider<'app-check-internal'>('app-check-internal');\n const { apiKey, authDomain } = app.options;\n\n _assert(\n apiKey && !apiKey.includes(':'),\n AuthErrorCode.INVALID_API_KEY,\n { appName: app.name }\n );\n\n const config: ConfigInternal = {\n apiKey,\n authDomain,\n clientPlatform,\n apiHost: DefaultConfig.API_HOST,\n tokenApiHost: DefaultConfig.TOKEN_API_HOST,\n apiScheme: DefaultConfig.API_SCHEME,\n sdkClientVersion: _getClientVersion(clientPlatform)\n };\n\n const authInstance = new AuthImpl(\n app,\n heartbeatServiceProvider,\n appCheckServiceProvider,\n config\n );\n _initializeAuthInstance(authInstance, deps);\n\n return authInstance;\n },\n ComponentType.PUBLIC\n )\n /**\n * Auth can only be initialized by explicitly calling getAuth() or initializeAuth()\n * For why we do this, See go/firebase-next-auth-init\n */\n .setInstantiationMode(InstantiationMode.EXPLICIT)\n /**\n * Because all firebase products that depend on auth depend on auth-internal directly,\n * we need to initialize auth-internal after auth is initialized to make it available to other firebase products.\n */\n .setInstanceCreatedCallback(\n (container, _instanceIdentifier, _instance) => {\n const authInternalProvider = container.getProvider(\n _ComponentName.AUTH_INTERNAL\n );\n authInternalProvider.initialize();\n }\n )\n );\n\n _registerComponent(\n new Component(\n _ComponentName.AUTH_INTERNAL,\n container => {\n const auth = _castAuth(\n container.getProvider(_ComponentName.AUTH).getImmediate()!\n );\n return (auth => new AuthInterop(auth))(auth);\n },\n ComponentType.PRIVATE\n ).setInstantiationMode(InstantiationMode.EXPLICIT)\n );\n\n registerVersion(name, version, getVersionForPlatform(clientPlatform));\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"849\":\"012b212c\",\"965\":\"dfb15dc9\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"frontend:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkfrontend\"] = self[\"webpackChunkfrontend\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","import * as React from \"react\";\nimport type { History, Location } from \"history\";\nimport { Action as NavigationType } from \"history\";\n\nimport type { RouteMatch } from \"./router\";\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport type Navigator = Pick<History, \"go\" | \"push\" | \"replace\" | \"createHref\">;\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\ninterface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n","import type { Location, Path, To } from \"history\";\nimport { parsePath } from \"history\";\n\nexport function invariant(cond: any, message: string): asserts cond {\n if (!cond) throw new Error(message);\n}\n\nexport function warning(cond: any, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\nexport function warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n\ntype ParamParseFailed = { failed: true };\n\ntype ParamParseSegment<Segment extends string> =\n // Check here if there exists a forward slash in the string.\n Segment extends `${infer LeftSegment}/${infer RightSegment}`\n ? // If there is a forward slash, then attempt to parse each side of the\n // forward slash.\n ParamParseSegment<LeftSegment> extends infer LeftResult\n ? ParamParseSegment<RightSegment> extends infer RightResult\n ? LeftResult extends string\n ? // If the left side is successfully parsed as a param, then check if\n // the right side can be successfully parsed as well. If both sides\n // can be parsed, then the result is a union of the two sides\n // (read: \"foo\" | \"bar\").\n RightResult extends string\n ? LeftResult | RightResult\n : LeftResult\n : // If the left side is not successfully parsed as a param, then check\n // if only the right side can be successfully parse as a param. If it\n // can, then the result is just right, else it's a failure.\n RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If the left side didn't parse into a param, then just check the right\n // side.\n ParamParseSegment<RightSegment> extends infer RightResult\n ? RightResult extends string\n ? RightResult\n : ParamParseFailed\n : ParamParseFailed\n : // If there's no forward slash, then check if this segment starts with a\n // colon. If it does, then this is a dynamic segment, so the result is\n // just the remainder of the string. Otherwise, it's a failure.\n Segment extends `:${infer Remaining}`\n ? Remaining\n : ParamParseFailed;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n ParamParseSegment<Segment> extends string\n ? ParamParseSegment<Segment>\n : string;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport interface RouteObject {\n caseSensitive?: boolean;\n children?: RouteObject[];\n element?: React.ReactNode;\n index?: boolean;\n path?: string;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/docs/en/v6/api#generatepath\n */\nexport function generatePath(path: string, params: Params = {}): string {\n return path\n .replace(/:(\\w+)/g, (_, key) => {\n invariant(params[key] != null, `Missing \":${key}\" param`);\n return params[key]!;\n })\n .replace(/\\/*\\*$/, (_) =>\n params[\"*\"] == null ? \"\" : params[\"*\"].replace(/^\\/*/, \"/\")\n );\n}\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface RouteMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObject;\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchroutes\n */\nexport function matchRoutes(\n routes: RouteObject[],\n locationArg: Partial<Location> | string,\n basename = \"/\"\n): RouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(branches[i], pathname);\n }\n\n return matches;\n}\n\ninterface RouteMeta {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObject;\n}\n\ninterface RouteBranch {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes(\n routes: RouteObject[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n routes.forEach((route, index) => {\n let meta: RouteMeta = {\n relativePath: route.path || \"\",\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({ path, score: computeScore(path, route.index), routesMeta });\n });\n\n return branches;\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<ParamKey extends string = string>(\n branch: RouteBranch,\n pathname: string\n): RouteMatch<ParamKey>[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: RouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params<ParamKey>;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/docs/en/v6/api#matchpath\n */\nexport function matchPath<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(\n pattern: PathPattern<Path> | Path,\n pathname: string\n): PathMatch<ParamKey> | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce<Mutable<Params>>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else {\n regexpSource += end\n ? \"\\\\/*$\" // When matching to the end, ignore trailing slashes\n : // Otherwise, match a word boundary or a proceeding /. The word boundary restricts\n // parent routes to matching only their own words and nothing more, e.g. parent\n // route \"/home\" should not match \"/home2\".\n // Additionally, allow paths starting with `.`, `-`, `~`, and url-encoded entities,\n // but do not consume the character in the matched path so they can match against\n // nested paths.\n \"(?:(?=[.~-]|%[0-9A-F]{2})|\\\\b|\\\\/|$)\";\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/docs/en/v6/api#resolvepath\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string\n): Path {\n let to = typeof toArg === \"string\" ? parsePath(toArg) : toArg;\n let toPathname = toArg === \"\" || to.pathname === \"\" ? \"/\" : to.pathname;\n\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `<Link to>` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n let from: string;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how <a href> works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original to value had one.\n if (\n toPathname &&\n toPathname !== \"/\" &&\n toPathname.endsWith(\"/\") &&\n !path.pathname.endsWith(\"/\")\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n let nextChar = pathname.charAt(basename.length);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(basename.length) || \"/\";\n}\n\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\nconst normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\nconst normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n","import * as React from \"react\";\nimport type { Location, Path, To } from \"history\";\nimport { Action as NavigationType, parsePath } from \"history\";\n\nimport { LocationContext, NavigationContext, RouteContext } from \"./context\";\nimport type {\n ParamParseKey,\n Params,\n PathMatch,\n PathPattern,\n RouteMatch,\n RouteObject,\n} from \"./router\";\nimport {\n getToPathname,\n invariant,\n joinPaths,\n matchPath,\n matchRoutes,\n resolveTo,\n warning,\n warningOnce,\n} from \"./router\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usehref\n */\nexport function useHref(to: To): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to);\n\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n let toPathname = getToPathname(to);\n let endsWithSlash = toPathname != null && toPathname.endsWith(\"/\");\n joinedPathname =\n pathname === \"/\"\n ? basename + (endsWithSlash ? \"/\" : \"\")\n : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useinroutercontext\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/docs/en/v6/api#uselocation\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns true if the URL for the given \"to\" value matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usematch\n */\nexport function useMatch<\n ParamKey extends ParamParseKey<Path>,\n Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath<ParamKey, Path>(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname\n );\n\n if (basename !== \"/\") {\n path.pathname = joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/docs/en/v6/api#useoutletcontext\n */\nexport function useOutletContext<Context = unknown>(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useoutlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useparams\n */\nexport function useParams<\n ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useresolvedpath\n */\nexport function useResolvedPath(to: To): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n matches.map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () => resolveTo(to, JSON.parse(routePathnamesJson), locationPathname),\n [to, routePathnamesJson, locationPathname]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/docs/en/v6/api#useroutes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different <Routes> under a <Route>\n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // <Routes>\n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // <Route path=\"blog\" element={<Blog />} />\n // <Route path=\"blog/feed\" element={<BlogFeed />} />\n // </Routes>\n //\n // function Blog() {\n // return (\n // <Routes>\n // <Route path=\"post/:id\" element={<Post />} />\n // </Routes>\n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n\n return _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([parentPathnameBase, match.pathname]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([parentPathnameBase, match.pathnameBase]),\n })\n ),\n parentMatches\n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = []\n): React.ReactElement | null {\n if (matches == null) return null;\n\n return matches.reduceRight((outlet, match, index) => {\n return (\n <RouteContext.Provider\n children={\n match.route.element !== undefined ? match.route.element : outlet\n }\n value={{\n outlet,\n matches: parentMatches.concat(matches.slice(0, index + 1)),\n }}\n />\n );\n }, null as React.ReactElement | null);\n}\n","import * as React from \"react\";\nimport type { InitialEntry, Location, MemoryHistory, To } from \"history\";\nimport {\n Action as NavigationType,\n createMemoryHistory,\n parsePath,\n} from \"history\";\n\nimport { LocationContext, NavigationContext, Navigator } from \"./context\";\nimport {\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\nimport type { RouteMatch, RouteObject } from \"./router\";\nimport { invariant, normalizePathname, stripBasename, warning } from \"./router\";\n\nexport interface MemoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/docs/en/v6/api#memoryrouter\n */\nexport function MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n let historyRef = React.useRef<MemoryHistory>();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({ initialEntries, initialIndex });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface NavigateProps {\n to: To;\n replace?: boolean;\n state?: any;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/docs/en/v6/api#navigate\n */\nexport function Navigate({ to, replace, state }: NavigateProps): null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n\n warning(\n !React.useContext(NavigationContext).static,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n `This is a no-op, but you should modify your code so the <Navigate> is ` +\n `only ever rendered in response to some user interaction or state change.`\n );\n\n let navigate = useNavigate();\n React.useEffect(() => {\n navigate(to, { replace, state });\n });\n\n return null;\n}\n\nexport interface OutletProps {\n context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/docs/en/v6/api#outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n return useOutlet(props.context);\n}\n\nexport interface RouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: boolean;\n path?: string;\n}\n\nexport interface PathRouteProps {\n caseSensitive?: boolean;\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n index?: false;\n path: string;\n}\n\nexport interface LayoutRouteProps {\n children?: React.ReactNode;\n element?: React.ReactNode | null;\n}\n\nexport interface IndexRouteProps {\n element?: React.ReactNode | null;\n index: true;\n}\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/docs/en/v6/api#route\n */\nexport function Route(\n _props: PathRouteProps | LayoutRouteProps | IndexRouteProps\n): React.ReactElement | null {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, ` +\n `never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\n\nexport interface RouterProps {\n basename?: string;\n children?: React.ReactNode;\n location: Partial<Location> | string;\n navigationType?: NavigationType;\n navigator: Navigator;\n static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/docs/en/v6/api#router\n */\nexport function Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = NavigationType.Pop,\n navigator,\n static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>.` +\n ` You should never have more than one in your app.`\n );\n\n let basename = normalizePathname(basenameProp);\n let navigationContext = React.useMemo(\n () => ({ basename, navigator, static: staticProp }),\n [basename, navigator, staticProp]\n );\n\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\",\n } = locationProp;\n\n let location = React.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n\n if (trailingPathname == null) {\n return null;\n }\n\n return {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key,\n };\n }, [basename, pathname, search, hash, state, key]);\n\n warning(\n location != null,\n `<Router basename=\"${basename}\"> is not able to match the URL ` +\n `\"${pathname}${search}${hash}\" because it does not start with the ` +\n `basename, so the <Router> won't render anything.`\n );\n\n if (location == null) {\n return null;\n }\n\n return (\n <NavigationContext.Provider value={navigationContext}>\n <LocationContext.Provider\n children={children}\n value={{ location, navigationType }}\n />\n </NavigationContext.Provider>\n );\n}\n\nexport interface RoutesProps {\n children?: React.ReactNode;\n location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/docs/en/v6/api#routes\n */\nexport function Routes({\n children,\n location,\n}: RoutesProps): React.ReactElement | null {\n return useRoutes(createRoutesFromChildren(children), location);\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/docs/en/v6/api#createroutesfromchildren\n */\nexport function createRoutesFromChildren(\n children: React.ReactNode\n): RouteObject[] {\n let routes: RouteObject[] = [];\n\n React.Children.forEach(children, (element) => {\n if (!React.isValidElement(element)) {\n // Ignore non-elements. This allows people to more easily inline\n // conditionals in their route config.\n return;\n }\n\n if (element.type === React.Fragment) {\n // Transparently support React.Fragment and its children.\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children)\n );\n return;\n }\n\n invariant(\n element.type === Route,\n `[${\n typeof element.type === \"string\" ? element.type : element.type.name\n }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n\n let route: RouteObject = {\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n index: element.props.index,\n path: element.props.path,\n };\n\n if (element.props.children) {\n route.children = createRoutesFromChildren(element.props.children);\n }\n\n routes.push(route);\n });\n\n return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n matches: RouteMatch[] | null\n): React.ReactElement | null {\n return _renderMatches(matches);\n}\n","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef<BrowserHistory>();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef<HashHistory>();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n <Router\n basename={basename}\n children={children}\n location={state.location}\n navigationType={state.action}\n navigator={history}\n />\n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n <a\n {...rest}\n href={href}\n onClick={handleClick}\n ref={ref}\n target={target}\n />\n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for <NavLink />s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n <Link\n {...rest}\n aria-current={ariaCurrent}\n className={className}\n ref={ref}\n style={style}\n to={to}\n >\n {typeof children === \"function\" ? children({ isActive }) : children}\n </Link>\n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent<E, MouseEvent>) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular <a> will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record<string, string | string[]>\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","// Inspired by https://github.com/material-components/material-components-ios/blob/bca36107405594d5b7b16265a5b0ed698f85a5ee/components/Elevation/src/UIColor%2BMaterialElevation.m#L61\nconst getOverlayAlpha = elevation => {\n let alphaValue;\n if (elevation < 1) {\n alphaValue = 5.11916 * elevation ** 2;\n } else {\n alphaValue = 4.5 * Math.log(elevation + 1) + 2;\n }\n return (alphaValue / 100).toFixed(2);\n};\nexport default getOverlayAlpha;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPaperUtilityClass(slot) {\n return generateUtilityClass('MuiPaper', slot);\n}\nconst paperClasses = generateUtilityClasses('MuiPaper', ['root', 'rounded', 'outlined', 'elevation', 'elevation0', 'elevation1', 'elevation2', 'elevation3', 'elevation4', 'elevation5', 'elevation6', 'elevation7', 'elevation8', 'elevation9', 'elevation10', 'elevation11', 'elevation12', 'elevation13', 'elevation14', 'elevation15', 'elevation16', 'elevation17', 'elevation18', 'elevation19', 'elevation20', 'elevation21', 'elevation22', 'elevation23', 'elevation24']);\nexport default paperClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"component\", \"elevation\", \"square\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport getOverlayAlpha from '../styles/getOverlayAlpha';\nimport useThemeProps from '../styles/useThemeProps';\nimport useTheme from '../styles/useTheme';\nimport { getPaperUtilityClass } from './paperClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n square,\n elevation,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, !square && 'rounded', variant === 'elevation' && `elevation${elevation}`]\n };\n return composeClasses(slots, getPaperUtilityClass, classes);\n};\nconst PaperRoot = styled('div', {\n name: 'MuiPaper',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], !ownerState.square && styles.rounded, ownerState.variant === 'elevation' && styles[`elevation${ownerState.elevation}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$vars$overlays;\n return _extends({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n color: (theme.vars || theme).palette.text.primary,\n transition: theme.transitions.create('box-shadow')\n }, !ownerState.square && {\n borderRadius: theme.shape.borderRadius\n }, ownerState.variant === 'outlined' && {\n border: `1px solid ${(theme.vars || theme).palette.divider}`\n }, ownerState.variant === 'elevation' && _extends({\n boxShadow: (theme.vars || theme).shadows[ownerState.elevation]\n }, !theme.vars && theme.palette.mode === 'dark' && {\n backgroundImage: `linear-gradient(${alpha('#fff', getOverlayAlpha(ownerState.elevation))}, ${alpha('#fff', getOverlayAlpha(ownerState.elevation))})`\n }, theme.vars && {\n backgroundImage: (_theme$vars$overlays = theme.vars.overlays) == null ? void 0 : _theme$vars$overlays[ownerState.elevation]\n }));\n});\nconst Paper = /*#__PURE__*/React.forwardRef(function Paper(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPaper'\n });\n const {\n className,\n component = 'div',\n elevation = 1,\n square = false,\n variant = 'elevation'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n elevation,\n square,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const theme = useTheme();\n if (theme.shadows[elevation] === undefined) {\n console.error([`MUI: The elevation provided <Paper elevation={${elevation}}> is not available in the theme.`, `Please make sure that \\`theme.shadows[${elevation}]\\` is defined.`].join('\\n'));\n }\n }\n return /*#__PURE__*/_jsx(PaperRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Paper.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Shadow depth, corresponds to `dp` in the spec.\n * It accepts values between 0 and 24 inclusive.\n * @default 1\n */\n elevation: chainPropTypes(integerPropType, props => {\n const {\n elevation,\n variant\n } = props;\n if (elevation > 0 && variant === 'outlined') {\n return new Error(`MUI: Combining \\`elevation={${elevation}}\\` with \\`variant=\"${variant}\"\\` has no effect. Either use \\`elevation={0}\\` or use a different \\`variant\\`.`);\n }\n return null;\n }),\n /**\n * If `true`, rounded corners are disabled.\n * @default false\n */\n square: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'elevation'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['elevation', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Paper;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAppBarUtilityClass(slot) {\n return generateUtilityClass('MuiAppBar', slot);\n}\nconst appBarClasses = generateUtilityClasses('MuiAppBar', ['root', 'positionFixed', 'positionAbsolute', 'positionSticky', 'positionStatic', 'positionRelative', 'colorDefault', 'colorPrimary', 'colorSecondary', 'colorInherit', 'colorTransparent']);\nexport default appBarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"enableColorOnDark\", \"position\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport { getAppBarUtilityClass } from './appBarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n position,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, `position${capitalize(position)}`]\n };\n return composeClasses(slots, getAppBarUtilityClass, classes);\n};\n\n// var2 is the fallback.\n// Ex. var1: 'var(--a)', var2: 'var(--b)'; return: 'var(--a, var(--b))'\nconst joinVars = (var1, var2) => var1 ? `${var1 == null ? void 0 : var1.replace(')', '')}, ${var2})` : var2;\nconst AppBarRoot = styled(Paper, {\n name: 'MuiAppBar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const backgroundColorDefault = theme.palette.mode === 'light' ? theme.palette.grey[100] : theme.palette.grey[900];\n return _extends({\n display: 'flex',\n flexDirection: 'column',\n width: '100%',\n boxSizing: 'border-box',\n // Prevent padding issue with the Modal and fixed positioned AppBar.\n flexShrink: 0\n }, ownerState.position === 'fixed' && {\n position: 'fixed',\n zIndex: (theme.vars || theme).zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0,\n '@media print': {\n // Prevent the app bar to be visible on each printed page.\n position: 'absolute'\n }\n }, ownerState.position === 'absolute' && {\n position: 'absolute',\n zIndex: (theme.vars || theme).zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0\n }, ownerState.position === 'sticky' && {\n // ⚠️ sticky is not supported by IE11.\n position: 'sticky',\n zIndex: (theme.vars || theme).zIndex.appBar,\n top: 0,\n left: 'auto',\n right: 0\n }, ownerState.position === 'static' && {\n position: 'static'\n }, ownerState.position === 'relative' && {\n position: 'relative'\n }, !theme.vars && _extends({}, ownerState.color === 'default' && {\n backgroundColor: backgroundColorDefault,\n color: theme.palette.getContrastText(backgroundColorDefault)\n }, ownerState.color && ownerState.color !== 'default' && ownerState.color !== 'inherit' && ownerState.color !== 'transparent' && {\n backgroundColor: theme.palette[ownerState.color].main,\n color: theme.palette[ownerState.color].contrastText\n }, ownerState.color === 'inherit' && {\n color: 'inherit'\n }, theme.palette.mode === 'dark' && !ownerState.enableColorOnDark && {\n backgroundColor: null,\n color: null\n }, ownerState.color === 'transparent' && _extends({\n backgroundColor: 'transparent',\n color: 'inherit'\n }, theme.palette.mode === 'dark' && {\n backgroundImage: 'none'\n })), theme.vars && _extends({}, ownerState.color === 'default' && {\n '--AppBar-background': ownerState.enableColorOnDark ? theme.vars.palette.AppBar.defaultBg : joinVars(theme.vars.palette.AppBar.darkBg, theme.vars.palette.AppBar.defaultBg),\n '--AppBar-color': ownerState.enableColorOnDark ? theme.vars.palette.text.primary : joinVars(theme.vars.palette.AppBar.darkColor, theme.vars.palette.text.primary)\n }, ownerState.color && !ownerState.color.match(/^(default|inherit|transparent)$/) && {\n '--AppBar-background': ownerState.enableColorOnDark ? theme.vars.palette[ownerState.color].main : joinVars(theme.vars.palette.AppBar.darkBg, theme.vars.palette[ownerState.color].main),\n '--AppBar-color': ownerState.enableColorOnDark ? theme.vars.palette[ownerState.color].contrastText : joinVars(theme.vars.palette.AppBar.darkColor, theme.vars.palette[ownerState.color].contrastText)\n }, {\n backgroundColor: 'var(--AppBar-background)',\n color: ownerState.color === 'inherit' ? 'inherit' : 'var(--AppBar-color)'\n }, ownerState.color === 'transparent' && {\n backgroundImage: 'none',\n backgroundColor: 'transparent',\n color: 'inherit'\n }));\n});\nconst AppBar = /*#__PURE__*/React.forwardRef(function AppBar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAppBar'\n });\n const {\n className,\n color = 'primary',\n enableColorOnDark = false,\n position = 'fixed'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n position,\n enableColorOnDark\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(AppBarRoot, _extends({\n square: true,\n component: \"header\",\n ownerState: ownerState,\n elevation: 4,\n className: clsx(classes.root, className, position === 'fixed' && 'mui-fixed'),\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? AppBar.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'inherit', 'primary', 'secondary', 'transparent']), PropTypes.string]),\n /**\n * If true, the `color` prop is applied in dark mode.\n * @default false\n */\n enableColorOnDark: PropTypes.bool,\n /**\n * The positioning type. The behavior of the different options is described\n * [in the MDN web docs](https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Positioning).\n * Note: `sticky` is not universally supported and will fall back to `static` when unavailable.\n * @default 'fixed'\n */\n position: PropTypes.oneOf(['absolute', 'fixed', 'relative', 'static', 'sticky']),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default AppBar;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"sx\"];\nimport { isPlainObject } from '@mui/utils';\nimport defaultSxConfig from './defaultSxConfig';\nconst splitProps = props => {\n var _props$theme$unstable, _props$theme;\n const result = {\n systemProps: {},\n otherProps: {}\n };\n const config = (_props$theme$unstable = props == null ? void 0 : (_props$theme = props.theme) == null ? void 0 : _props$theme.unstable_sxConfig) != null ? _props$theme$unstable : defaultSxConfig;\n Object.keys(props).forEach(prop => {\n if (config[prop]) {\n result.systemProps[prop] = props[prop];\n } else {\n result.otherProps[prop] = props[prop];\n }\n });\n return result;\n};\nexport default function extendSxProp(props) {\n const {\n sx: inSx\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n systemProps,\n otherProps\n } = splitProps(other);\n let finalSx;\n if (Array.isArray(inSx)) {\n finalSx = [systemProps, ...inSx];\n } else if (typeof inSx === 'function') {\n finalSx = (...args) => {\n const result = inSx(...args);\n if (!isPlainObject(result)) {\n return systemProps;\n }\n return _extends({}, systemProps, result);\n };\n } else {\n finalSx = _extends({}, systemProps, inSx);\n }\n return _extends({}, otherProps, {\n sx: finalSx\n });\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTypographyUtilityClass(slot) {\n return generateUtilityClass('MuiTypography', slot);\n}\nconst typographyClasses = generateUtilityClasses('MuiTypography', ['root', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'subtitle1', 'subtitle2', 'body1', 'body2', 'inherit', 'button', 'caption', 'overline', 'alignLeft', 'alignRight', 'alignCenter', 'alignJustify', 'noWrap', 'gutterBottom', 'paragraph']);\nexport default typographyClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"align\", \"className\", \"component\", \"gutterBottom\", \"noWrap\", \"paragraph\", \"variant\", \"variantMapping\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_extendSxProp as extendSxProp } from '@mui/system';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getTypographyUtilityClass } from './typographyClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n align,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, ownerState.align !== 'inherit' && `align${capitalize(align)}`, gutterBottom && 'gutterBottom', noWrap && 'noWrap', paragraph && 'paragraph']\n };\n return composeClasses(slots, getTypographyUtilityClass, classes);\n};\nexport const TypographyRoot = styled('span', {\n name: 'MuiTypography',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.variant && styles[ownerState.variant], ownerState.align !== 'inherit' && styles[`align${capitalize(ownerState.align)}`], ownerState.noWrap && styles.noWrap, ownerState.gutterBottom && styles.gutterBottom, ownerState.paragraph && styles.paragraph];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0\n}, ownerState.variant && theme.typography[ownerState.variant], ownerState.align !== 'inherit' && {\n textAlign: ownerState.align\n}, ownerState.noWrap && {\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap'\n}, ownerState.gutterBottom && {\n marginBottom: '0.35em'\n}, ownerState.paragraph && {\n marginBottom: 16\n}));\nconst defaultVariantMapping = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n subtitle1: 'h6',\n subtitle2: 'h6',\n body1: 'p',\n body2: 'p',\n inherit: 'p'\n};\n\n// TODO v6: deprecate these color values in v5.x and remove the transformation in v6\nconst colorTransformations = {\n primary: 'primary.main',\n textPrimary: 'text.primary',\n secondary: 'secondary.main',\n textSecondary: 'text.secondary',\n error: 'error.main'\n};\nconst transformDeprecatedColors = color => {\n return colorTransformations[color] || color;\n};\nconst Typography = /*#__PURE__*/React.forwardRef(function Typography(inProps, ref) {\n const themeProps = useThemeProps({\n props: inProps,\n name: 'MuiTypography'\n });\n const color = transformDeprecatedColors(themeProps.color);\n const props = extendSxProp(_extends({}, themeProps, {\n color\n }));\n const {\n align = 'inherit',\n className,\n component,\n gutterBottom = false,\n noWrap = false,\n paragraph = false,\n variant = 'body1',\n variantMapping = defaultVariantMapping\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n align,\n color,\n className,\n component,\n gutterBottom,\n noWrap,\n paragraph,\n variant,\n variantMapping\n });\n const Component = component || (paragraph ? 'p' : variantMapping[variant] || defaultVariantMapping[variant]) || 'span';\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(TypographyRoot, _extends({\n as: Component,\n ref: ref,\n ownerState: ownerState,\n className: clsx(classes.root, className)\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Typography.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Set the text-align on the component.\n * @default 'inherit'\n */\n align: PropTypes.oneOf(['center', 'inherit', 'justify', 'left', 'right']),\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the text will have a bottom margin.\n * @default false\n */\n gutterBottom: PropTypes.bool,\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n * @default false\n */\n noWrap: PropTypes.bool,\n /**\n * If `true`, the element will be a paragraph element.\n * @default false\n */\n paragraph: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Applies the theme typography styles.\n * @default 'body1'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['body1', 'body2', 'button', 'caption', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'inherit', 'overline', 'subtitle1', 'subtitle2']), PropTypes.string]),\n /**\n * The component maps the variant prop to a range of different HTML element types.\n * For instance, subtitle1 to `<h6>`.\n * If you wish to change that mapping, you can provide your own.\n * Alternatively, you can use the `component` prop.\n * @default {\n * h1: 'h1',\n * h2: 'h2',\n * h3: 'h3',\n * h4: 'h4',\n * h5: 'h5',\n * h6: 'h6',\n * subtitle1: 'h6',\n * subtitle2: 'h6',\n * body1: 'p',\n * body2: 'p',\n * inherit: 'p',\n * }\n */\n variantMapping: PropTypes /* @typescript-to-proptypes-ignore */.object\n} : void 0;\nexport default Typography;","/**\n * Determines if a given element is a DOM element name (i.e. not a React component).\n */\nexport default function isHostComponent(element) {\n return typeof element === 'string';\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport isHostComponent from './isHostComponent';\n\n/**\n * Type of the ownerState based on the type of an element it applies to.\n * This resolves to the provided OwnerState for React components and `undefined` for host components.\n * Falls back to `OwnerState | undefined` when the exact type can't be determined in development time.\n */\n\n/**\n * Appends the ownerState object to the props, merging with the existing one if necessary.\n *\n * @param elementType Type of the element that owns the `existingProps`. If the element is a DOM node or undefined, `ownerState` is not applied.\n * @param otherProps Props of the element.\n * @param ownerState\n */\nexport default function appendOwnerState(elementType, otherProps, ownerState) {\n if (elementType === undefined || isHostComponent(elementType)) {\n return otherProps;\n }\n return _extends({}, otherProps, {\n ownerState: _extends({}, otherProps.ownerState, ownerState)\n });\n}","import * as React from 'react';\nimport { useTheme as useThemeSystem } from '@mui/system';\nimport defaultTheme from './defaultTheme';\nexport default function useTheme() {\n const theme = useThemeSystem(defaultTheme);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useDebugValue(theme);\n }\n return theme;\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { forceReflow } from './utils/reflow';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * <Transition in={inProp} timeout={duration}>\n * {state => (\n * <div style={{\n * ...defaultStyle,\n * ...transitionStyles[state]\n * }}>\n * I'm a fade Transition!\n * </div>\n * )}\n * </Transition>\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n * <div>\n * <Transition in={inProp} timeout={500}>\n * {state => (\n * // ...\n * )}\n * </Transition>\n * <button onClick={() => setInProp(true)}>\n * Click to Enter\n * </button>\n * </div>\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n if (this.props.unmountOnExit || this.props.mountOnEnter) {\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this); // https://github.com/reactjs/react-transition-group/pull/749\n // With unmountOnExit or mountOnEnter, the enter animation should happen at the transition between `exited` and `entering`.\n // To make the animation happen, we have to separate each rendering and avoid being processed as batched.\n\n if (node) forceReflow(node);\n }\n\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * <Transition in={this.state.in} timeout={150}>\n * {state => (\n * <MyComponent className={`fade fade-${state}`} />\n * )}\n * </Transition>\n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `<CSSTransition>` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","export var forceReflow = function forceReflow(node) {\n return node.scrollTop;\n};","export const reflow = node => node.scrollTop;\nexport function getTransitionProps(props, options) {\n var _style$transitionDura, _style$transitionTimi;\n const {\n timeout,\n easing,\n style = {}\n } = props;\n return {\n duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === 'number' ? timeout : timeout[options.mode] || 0,\n easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === 'object' ? easing[options.mode] : easing,\n delay: style.transitionDelay\n };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef } from '@mui/utils';\nimport { Transition } from 'react-transition-group';\nimport useTheme from '../styles/useTheme';\nimport { getTransitionProps, reflow } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getScale(value) {\n return `scale(${value}, ${value ** 2})`;\n}\nconst styles = {\n entering: {\n opacity: 1,\n transform: getScale(1)\n },\n entered: {\n opacity: 1,\n transform: 'none'\n }\n};\n\n/*\n TODO v6: remove\n Conditionally apply a workaround for the CSS transition bug in Safari 15.4 / WebKit browsers.\n */\nconst isWebKit154 = typeof navigator !== 'undefined' && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\\/)15(.|_)4/i.test(navigator.userAgent);\n\n/**\n * The Grow transition is used by the [Tooltip](/material-ui/react-tooltip/) and\n * [Popover](/material-ui/react-popover/) components.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Grow = /*#__PURE__*/React.forwardRef(function Grow(props, ref) {\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = 'auto',\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const timer = React.useRef();\n const autoTimeout = React.useRef();\n const theme = useTheme();\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay,\n easing: transitionTimingFunction\n })].join(',');\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const {\n duration: transitionDuration,\n delay,\n easing: transitionTimingFunction\n } = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n let duration;\n if (timeout === 'auto') {\n duration = theme.transitions.getAutoHeightDuration(node.clientHeight);\n autoTimeout.current = duration;\n } else {\n duration = transitionDuration;\n }\n node.style.transition = [theme.transitions.create('opacity', {\n duration,\n delay\n }), theme.transitions.create('transform', {\n duration: isWebKit154 ? duration : duration * 0.666,\n delay: isWebKit154 ? delay : delay || duration * 0.333,\n easing: transitionTimingFunction\n })].join(',');\n node.style.opacity = 0;\n node.style.transform = getScale(0.75);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (timeout === 'auto') {\n timer.current = setTimeout(next, autoTimeout.current || 0);\n }\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n React.useEffect(() => {\n return () => {\n clearTimeout(timer.current);\n };\n }, []);\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: nodeRef,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout === 'auto' ? null : timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n transform: getScale(0.75),\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Grow.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n *\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n timeout: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nGrow.muiSupportAuto = true;\nexport default Grow;","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { exactProp, HTMLElementType, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef, unstable_setRef as setRef } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\n\n/**\n * Portals provide a first-class way to render children into a DOM node\n * that exists outside the DOM hierarchy of the parent component.\n *\n * Demos:\n *\n * - [Portal](https://mui.com/base/react-portal/)\n *\n * API:\n *\n * - [Portal API](https://mui.com/base/api/portal/)\n */\nconst Portal = /*#__PURE__*/React.forwardRef(function Portal(props, ref) {\n const {\n children,\n container,\n disablePortal = false\n } = props;\n const [mountNode, setMountNode] = React.useState(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef( /*#__PURE__*/React.isValidElement(children) ? children.ref : null, ref);\n useEnhancedEffect(() => {\n if (!disablePortal) {\n setMountNode(getContainer(container) || document.body);\n }\n }, [container, disablePortal]);\n useEnhancedEffect(() => {\n if (mountNode && !disablePortal) {\n setRef(ref, mountNode);\n return () => {\n setRef(ref, null);\n };\n }\n return undefined;\n }, [ref, mountNode, disablePortal]);\n if (disablePortal) {\n if ( /*#__PURE__*/React.isValidElement(children)) {\n const newProps = {\n ref: handleRef\n };\n return /*#__PURE__*/React.cloneElement(children, newProps);\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: children\n });\n }\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : mountNode\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Portal.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The children to render into the `container`.\n */\n children: PropTypes.node,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n Portal['propTypes' + ''] = exactProp(Portal.propTypes);\n}\nexport default Portal;","import generateUtilityClass from '../generateUtilityClass';\nimport generateUtilityClasses from '../generateUtilityClasses';\nexport function getPopperUnstyledUtilityClass(slot) {\n return generateUtilityClass('MuiPopper', slot);\n}\nconst popperUnstyledClasses = generateUtilityClasses('MuiPopper', ['root']);\nexport default popperUnstyledClasses;","/**\n * Removes event handlers from the given object.\n * A field is considered an event handler if it is a function with a name beginning with `on`.\n *\n * @param object Object to remove event handlers from.\n * @returns Object with event handlers removed.\n */\nexport default function omitEventHandlers(object) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => !(prop.match(/^on[A-Z]/) && typeof object[prop] === 'function')).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport clsx from 'clsx';\nimport extractEventHandlers from './extractEventHandlers';\nimport omitEventHandlers from './omitEventHandlers';\n/**\n * Merges the slot component internal props (usually coming from a hook)\n * with the externally provided ones.\n *\n * The merge order is (the latter overrides the former):\n * 1. The internal props (specified as a getter function to work with get*Props hook result)\n * 2. Additional props (specified internally on an unstyled component)\n * 3. External props specified on the owner component. These should only be used on a root slot.\n * 4. External props specified in the `slotProps.*` prop.\n * 5. The `className` prop - combined from all the above.\n * @param parameters\n * @returns\n */\nexport default function mergeSlotProps(parameters) {\n const {\n getSlotProps,\n additionalProps,\n externalSlotProps,\n externalForwardedProps,\n className\n } = parameters;\n if (!getSlotProps) {\n // The simpler case - getSlotProps is not defined, so no internal event handlers are defined,\n // so we can simply merge all the props without having to worry about extracting event handlers.\n const joinedClasses = clsx(externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className, className, additionalProps == null ? void 0 : additionalProps.className);\n const mergedStyle = _extends({}, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, additionalProps, externalForwardedProps, externalSlotProps);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: undefined\n };\n }\n\n // In this case, getSlotProps is responsible for calling the external event handlers.\n // We don't need to include them in the merged props because of this.\n\n const eventHandlers = extractEventHandlers(_extends({}, externalForwardedProps, externalSlotProps));\n const componentsPropsWithoutEventHandlers = omitEventHandlers(externalSlotProps);\n const otherPropsWithoutEventHandlers = omitEventHandlers(externalForwardedProps);\n const internalSlotProps = getSlotProps(eventHandlers);\n\n // The order of classes is important here.\n // Emotion (that we use in libraries consuming MUI Base) depends on this order\n // to properly override style. It requires the most important classes to be last\n // (see https://github.com/mui/material-ui/pull/33205) for the related discussion.\n const joinedClasses = clsx(internalSlotProps == null ? void 0 : internalSlotProps.className, additionalProps == null ? void 0 : additionalProps.className, className, externalForwardedProps == null ? void 0 : externalForwardedProps.className, externalSlotProps == null ? void 0 : externalSlotProps.className);\n const mergedStyle = _extends({}, internalSlotProps == null ? void 0 : internalSlotProps.style, additionalProps == null ? void 0 : additionalProps.style, externalForwardedProps == null ? void 0 : externalForwardedProps.style, externalSlotProps == null ? void 0 : externalSlotProps.style);\n const props = _extends({}, internalSlotProps, additionalProps, otherPropsWithoutEventHandlers, componentsPropsWithoutEventHandlers);\n if (joinedClasses.length > 0) {\n props.className = joinedClasses;\n }\n if (Object.keys(mergedStyle).length > 0) {\n props.style = mergedStyle;\n }\n return {\n props,\n internalRef: internalSlotProps.ref\n };\n}","/**\n * Extracts event handlers from a given object.\n * A prop is considered an event handler if it is a function and its name starts with `on`.\n *\n * @param object An object to extract event handlers from.\n * @param excludeKeys An array of keys to exclude from the returned object.\n */\nexport default function extractEventHandlers(object, excludeKeys = []) {\n if (object === undefined) {\n return {};\n }\n const result = {};\n Object.keys(object).filter(prop => prop.match(/^on[A-Z]/) && typeof object[prop] === 'function' && !excludeKeys.includes(prop)).forEach(prop => {\n result[prop] = object[prop];\n });\n return result;\n}","/**\n * If `componentProps` is a function, calls it with the provided `ownerState`.\n * Otherwise, just returns `componentProps`.\n */\nexport default function resolveComponentProps(componentProps, ownerState) {\n if (typeof componentProps === 'function') {\n return componentProps(ownerState);\n }\n return componentProps;\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"elementType\", \"externalSlotProps\", \"ownerState\"];\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport appendOwnerState from './appendOwnerState';\nimport mergeSlotProps from './mergeSlotProps';\nimport resolveComponentProps from './resolveComponentProps';\n/**\n * @ignore - do not document.\n * Builds the props to be passed into the slot of an unstyled component.\n * It merges the internal props of the component with the ones supplied by the user, allowing to customize the behavior.\n * If the slot component is not a host component, it also merges in the `ownerState`.\n *\n * @param parameters.getSlotProps - A function that returns the props to be passed to the slot component.\n */\nexport default function useSlotProps(parameters) {\n var _parameters$additiona;\n const {\n elementType,\n externalSlotProps,\n ownerState\n } = parameters,\n rest = _objectWithoutPropertiesLoose(parameters, _excluded);\n const resolvedComponentsProps = resolveComponentProps(externalSlotProps, ownerState);\n const {\n props: mergedProps,\n internalRef\n } = mergeSlotProps(_extends({}, rest, {\n externalSlotProps: resolvedComponentsProps\n }));\n const ref = useForkRef(internalRef, resolvedComponentsProps == null ? void 0 : resolvedComponentsProps.ref, (_parameters$additiona = parameters.additionalProps) == null ? void 0 : _parameters$additiona.ref);\n const props = appendOwnerState(elementType, _extends({}, mergedProps, {\n ref\n }), ownerState);\n return props;\n}","import * as React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultContextValue = {\n disableDefaultClasses: false\n};\nconst ClassNameConfiguratorContext = /*#__PURE__*/React.createContext(defaultContextValue);\n/**\n * @ignore - internal hook.\n *\n * Wraps the `generateUtilityClass` function and controls how the classes are generated.\n * Currently it only affects whether the classes are applied or not.\n *\n * @returns Function to be called with the `generateUtilityClass` function specific to a component to generate the classes.\n */\nexport function useClassNamesOverride(generateUtilityClass) {\n const {\n disableDefaultClasses\n } = React.useContext(ClassNameConfiguratorContext);\n return slot => {\n if (disableDefaultClasses) {\n return '';\n }\n return generateUtilityClass(slot);\n };\n}\n\n/**\n * Allows to configure the components within to not apply any built-in classes.\n */\nexport default function ClassNameConfigurator(props) {\n const {\n disableDefaultClasses,\n children\n } = props;\n const contextValue = React.useMemo(() => ({\n disableDefaultClasses: disableDefaultClasses != null ? disableDefaultClasses : false\n }), [disableDefaultClasses]);\n return /*#__PURE__*/_jsx(ClassNameConfiguratorContext.Provider, {\n value: contextValue,\n children: children\n });\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"anchorEl\", \"children\", \"component\", \"direction\", \"disablePortal\", \"modifiers\", \"open\", \"ownerState\", \"placement\", \"popperOptions\", \"popperRef\", \"slotProps\", \"slots\", \"TransitionProps\"],\n _excluded2 = [\"anchorEl\", \"children\", \"container\", \"direction\", \"disablePortal\", \"keepMounted\", \"modifiers\", \"open\", \"placement\", \"popperOptions\", \"popperRef\", \"style\", \"transition\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport { chainPropTypes, HTMLElementType, refType, unstable_ownerDocument as ownerDocument, unstable_useEnhancedEffect as useEnhancedEffect, unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { createPopper } from '@popperjs/core';\nimport PropTypes from 'prop-types';\nimport composeClasses from '../composeClasses';\nimport Portal from '../Portal';\nimport { getPopperUnstyledUtilityClass } from './popperUnstyledClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction flipPlacement(placement, direction) {\n if (direction === 'ltr') {\n return placement;\n }\n switch (placement) {\n case 'bottom-end':\n return 'bottom-start';\n case 'bottom-start':\n return 'bottom-end';\n case 'top-end':\n return 'top-start';\n case 'top-start':\n return 'top-end';\n default:\n return placement;\n }\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nfunction isHTMLElement(element) {\n return element.nodeType !== undefined;\n}\nfunction isVirtualElement(element) {\n return !isHTMLElement(element);\n}\nconst useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, useClassNamesOverride(getPopperUnstyledUtilityClass));\n};\nconst defaultPopperOptions = {};\nconst PopperTooltip = /*#__PURE__*/React.forwardRef(function PopperTooltip(props, ref) {\n var _ref;\n const {\n anchorEl,\n children,\n component,\n direction,\n disablePortal,\n modifiers,\n open,\n ownerState,\n placement: initialPlacement,\n popperOptions,\n popperRef: popperRefProp,\n slotProps = {},\n slots = {},\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const tooltipRef = React.useRef(null);\n const ownRef = useForkRef(tooltipRef, ref);\n const popperRef = React.useRef(null);\n const handlePopperRef = useForkRef(popperRef, popperRefProp);\n const handlePopperRefRef = React.useRef(handlePopperRef);\n useEnhancedEffect(() => {\n handlePopperRefRef.current = handlePopperRef;\n }, [handlePopperRef]);\n React.useImperativeHandle(popperRefProp, () => popperRef.current, []);\n const rtlPlacement = flipPlacement(initialPlacement, direction);\n /**\n * placement initialized from prop but can change during lifetime if modifiers.flip.\n * modifiers.flip is essentially a flip for controlled/uncontrolled behavior\n */\n const [placement, setPlacement] = React.useState(rtlPlacement);\n const [resolvedAnchorElement, setResolvedAnchorElement] = React.useState(resolveAnchorEl(anchorEl));\n React.useEffect(() => {\n if (popperRef.current) {\n popperRef.current.forceUpdate();\n }\n });\n React.useEffect(() => {\n if (anchorEl) {\n setResolvedAnchorElement(resolveAnchorEl(anchorEl));\n }\n }, [anchorEl]);\n useEnhancedEffect(() => {\n if (!resolvedAnchorElement || !open) {\n return undefined;\n }\n const handlePopperUpdate = data => {\n setPlacement(data.placement);\n };\n if (process.env.NODE_ENV !== 'production') {\n if (resolvedAnchorElement && isHTMLElement(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {\n const box = resolvedAnchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n }\n let popperModifiers = [{\n name: 'preventOverflow',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'flip',\n options: {\n altBoundary: disablePortal\n }\n }, {\n name: 'onUpdate',\n enabled: true,\n phase: 'afterWrite',\n fn: ({\n state\n }) => {\n handlePopperUpdate(state);\n }\n }];\n if (modifiers != null) {\n popperModifiers = popperModifiers.concat(modifiers);\n }\n if (popperOptions && popperOptions.modifiers != null) {\n popperModifiers = popperModifiers.concat(popperOptions.modifiers);\n }\n const popper = createPopper(resolvedAnchorElement, tooltipRef.current, _extends({\n placement: rtlPlacement\n }, popperOptions, {\n modifiers: popperModifiers\n }));\n handlePopperRefRef.current(popper);\n return () => {\n popper.destroy();\n handlePopperRefRef.current(null);\n };\n }, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);\n const childProps = {\n placement: placement\n };\n if (TransitionProps !== null) {\n childProps.TransitionProps = TransitionProps;\n }\n const classes = useUtilityClasses();\n const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n role: 'tooltip',\n ref: ownRef\n },\n ownerState: _extends({}, props, ownerState),\n className: classes.root\n });\n return /*#__PURE__*/_jsx(Root, _extends({}, rootProps, {\n children: typeof children === 'function' ? children(childProps) : children\n }));\n});\n\n/**\n * Poppers rely on the 3rd party library [Popper.js](https://popper.js.org/docs/v2/) for positioning.\n *\n * Demos:\n *\n * - [Unstyled Popper](https://mui.com/base/react-popper/)\n *\n * API:\n *\n * - [PopperUnstyled API](https://mui.com/base/api/popper-unstyled/)\n */\nconst PopperUnstyled = /*#__PURE__*/React.forwardRef(function PopperUnstyled(props, ref) {\n const {\n anchorEl,\n children,\n container: containerProp,\n direction = 'ltr',\n disablePortal = false,\n keepMounted = false,\n modifiers,\n open,\n placement = 'bottom',\n popperOptions = defaultPopperOptions,\n popperRef,\n style,\n transition = false,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const [exited, setExited] = React.useState(true);\n const handleEnter = () => {\n setExited(false);\n };\n const handleExited = () => {\n setExited(true);\n };\n if (!keepMounted && !open && (!transition || exited)) {\n return null;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n let container;\n if (containerProp) {\n container = containerProp;\n } else if (anchorEl) {\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n container = resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;\n }\n const display = !open && keepMounted && (!transition || exited) ? 'none' : undefined;\n const transitionProps = transition ? {\n in: open,\n onEnter: handleEnter,\n onExited: handleExited\n } : undefined;\n return /*#__PURE__*/_jsx(Portal, {\n disablePortal: disablePortal,\n container: container,\n children: /*#__PURE__*/_jsx(PopperTooltip, _extends({\n anchorEl: anchorEl,\n direction: direction,\n disablePortal: disablePortal,\n modifiers: modifiers,\n ref: ref,\n open: transition ? !exited : open,\n placement: placement,\n popperOptions: popperOptions,\n popperRef: popperRef,\n slotProps: slotProps,\n slots: slots\n }, other, {\n style: _extends({\n // Prevents scroll issue, waiting for Popper.js to add this style once initiated.\n position: 'fixed',\n // Fix Popper.js display issue\n top: 0,\n left: 0,\n display\n }, style),\n TransitionProps: transitionProps,\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? PopperUnstyled.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]), props => {\n if (props.open) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && isHTMLElement(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== 'function' || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'It should be an HTML element instance or a virtualElement ', '(https://popper.js.org/docs/v2/virtual-elements/).'].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * Direction of the text.\n * @default 'ltr'\n */\n direction: PropTypes.oneOf(['ltr', 'rtl']),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default PopperUnstyled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"components\", \"componentsProps\", \"slots\", \"slotProps\"];\nimport PopperUnstyled from '@mui/base/PopperUnstyled';\nimport { useThemeWithoutDefault as useTheme } from '@mui/system';\nimport { HTMLElementType, refType } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport * as React from 'react';\nimport { styled, useThemeProps } from '../styles';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst PopperRoot = styled(PopperUnstyled, {\n name: 'MuiPopper',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n *\n * Demos:\n *\n * - [Autocomplete](https://mui.com/material-ui/react-autocomplete/)\n * - [Menu](https://mui.com/material-ui/react-menu/)\n * - [Popper](https://mui.com/material-ui/react-popper/)\n *\n * API:\n *\n * - [Popper API](https://mui.com/material-ui/api/popper/)\n */\nconst Popper = /*#__PURE__*/React.forwardRef(function Popper(inProps, ref) {\n var _slots$root;\n const theme = useTheme();\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopper'\n });\n const {\n components,\n componentsProps,\n slots,\n slotProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;\n return /*#__PURE__*/_jsx(PopperRoot, _extends({\n direction: theme == null ? void 0 : theme.direction,\n slots: {\n root: RootComponent\n },\n slotProps: slotProps != null ? slotProps : componentsProps\n }, other, {\n ref: ref\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popper.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),\n * or a function that returns either.\n * It's used to set the position of the popper.\n * The return value will passed as the reference object of the Popper instance.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.object, PropTypes.func]),\n /**\n * Popper render function or node.\n */\n children: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.node, PropTypes.func]),\n /**\n * @ignore\n */\n component: PropTypes /* @typescript-to-proptypes-ignore */.elementType,\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Popper.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Popper.js is based on a \"plugin-like\" architecture,\n * most of its features are fully encapsulated \"modifiers\".\n *\n * A modifier is a function that is called each time Popper.js needs to\n * compute the position of the popper.\n * For this reason, modifiers should be very performant to avoid bottlenecks.\n * To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).\n */\n modifiers: PropTypes.arrayOf(PropTypes.shape({\n data: PropTypes.object,\n effect: PropTypes.func,\n enabled: PropTypes.bool,\n fn: PropTypes.func,\n name: PropTypes.any,\n options: PropTypes.object,\n phase: PropTypes.oneOf(['afterMain', 'afterRead', 'afterWrite', 'beforeMain', 'beforeRead', 'beforeWrite', 'main', 'read', 'write']),\n requires: PropTypes.arrayOf(PropTypes.string),\n requiresIfExists: PropTypes.arrayOf(PropTypes.string)\n })),\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n ownerState: PropTypes.any,\n /**\n * Popper placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.\n * @default {}\n */\n popperOptions: PropTypes.shape({\n modifiers: PropTypes.array,\n onFirstUpdate: PropTypes.func,\n placement: PropTypes.oneOf(['auto-end', 'auto-start', 'auto', 'bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n strategy: PropTypes.oneOf(['absolute', 'fixed'])\n }),\n /**\n * A ref that points to the used popper instance.\n */\n popperRef: refType,\n /**\n * The props used for each slot inside the Popper.\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Popper.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Help supporting a react-transition-group/Transition component.\n * @default false\n */\n transition: PropTypes.bool\n} : void 0;\nexport default Popper;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTooltipUtilityClass(slot) {\n return generateUtilityClass('MuiTooltip', slot);\n}\nconst tooltipClasses = generateUtilityClasses('MuiTooltip', ['popper', 'popperInteractive', 'popperArrow', 'popperClose', 'tooltip', 'tooltipArrow', 'touch', 'tooltipPlacementLeft', 'tooltipPlacementRight', 'tooltipPlacementTop', 'tooltipPlacementBottom', 'arrow']);\nexport default tooltipClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"arrow\", \"children\", \"classes\", \"components\", \"componentsProps\", \"describeChild\", \"disableFocusListener\", \"disableHoverListener\", \"disableInteractive\", \"disableTouchListener\", \"enterDelay\", \"enterNextDelay\", \"enterTouchDelay\", \"followCursor\", \"id\", \"leaveDelay\", \"leaveTouchDelay\", \"onClose\", \"onOpen\", \"open\", \"placement\", \"PopperComponent\", \"PopperProps\", \"slotProps\", \"slots\", \"title\", \"TransitionComponent\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, appendOwnerState } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Grow from '../Grow';\nimport Popper from '../Popper';\nimport useEventCallback from '../utils/useEventCallback';\nimport useForkRef from '../utils/useForkRef';\nimport useId from '../utils/useId';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useControlled from '../utils/useControlled';\nimport tooltipClasses, { getTooltipUtilityClass } from './tooltipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction round(value) {\n return Math.round(value * 1e5) / 1e5;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableInteractive,\n arrow,\n touch,\n placement\n } = ownerState;\n const slots = {\n popper: ['popper', !disableInteractive && 'popperInteractive', arrow && 'popperArrow'],\n tooltip: ['tooltip', arrow && 'tooltipArrow', touch && 'touch', `tooltipPlacement${capitalize(placement.split('-')[0])}`],\n arrow: ['arrow']\n };\n return composeClasses(slots, getTooltipUtilityClass, classes);\n};\nconst TooltipPopper = styled(Popper, {\n name: 'MuiTooltip',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.popper, !ownerState.disableInteractive && styles.popperInteractive, ownerState.arrow && styles.popperArrow, !ownerState.open && styles.popperClose];\n }\n})(({\n theme,\n ownerState,\n open\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.tooltip,\n pointerEvents: 'none'\n}, !ownerState.disableInteractive && {\n pointerEvents: 'auto'\n}, !open && {\n pointerEvents: 'none'\n}, ownerState.arrow && {\n [`&[data-popper-placement*=\"bottom\"] .${tooltipClasses.arrow}`]: {\n top: 0,\n marginTop: '-0.71em',\n '&::before': {\n transformOrigin: '0 100%'\n }\n },\n [`&[data-popper-placement*=\"top\"] .${tooltipClasses.arrow}`]: {\n bottom: 0,\n marginBottom: '-0.71em',\n '&::before': {\n transformOrigin: '100% 0'\n }\n },\n [`&[data-popper-placement*=\"right\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n left: 0,\n marginLeft: '-0.71em'\n } : {\n right: 0,\n marginRight: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '100% 100%'\n }\n }),\n [`&[data-popper-placement*=\"left\"] .${tooltipClasses.arrow}`]: _extends({}, !ownerState.isRtl ? {\n right: 0,\n marginRight: '-0.71em'\n } : {\n left: 0,\n marginLeft: '-0.71em'\n }, {\n height: '1em',\n width: '0.71em',\n '&::before': {\n transformOrigin: '0 0'\n }\n })\n}));\nconst TooltipTooltip = styled('div', {\n name: 'MuiTooltip',\n slot: 'Tooltip',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.tooltip, ownerState.touch && styles.touch, ownerState.arrow && styles.tooltipArrow, styles[`tooltipPlacement${capitalize(ownerState.placement.split('-')[0])}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.92),\n borderRadius: (theme.vars || theme).shape.borderRadius,\n color: (theme.vars || theme).palette.common.white,\n fontFamily: theme.typography.fontFamily,\n padding: '4px 8px',\n fontSize: theme.typography.pxToRem(11),\n maxWidth: 300,\n margin: 2,\n wordWrap: 'break-word',\n fontWeight: theme.typography.fontWeightMedium\n}, ownerState.arrow && {\n position: 'relative',\n margin: 0\n}, ownerState.touch && {\n padding: '8px 16px',\n fontSize: theme.typography.pxToRem(14),\n lineHeight: `${round(16 / 14)}em`,\n fontWeight: theme.typography.fontWeightRegular\n}, {\n [`.${tooltipClasses.popper}[data-popper-placement*=\"left\"] &`]: _extends({\n transformOrigin: 'right center'\n }, !ownerState.isRtl ? _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n }) : _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"right\"] &`]: _extends({\n transformOrigin: 'left center'\n }, !ownerState.isRtl ? _extends({\n marginLeft: '14px'\n }, ownerState.touch && {\n marginLeft: '24px'\n }) : _extends({\n marginRight: '14px'\n }, ownerState.touch && {\n marginRight: '24px'\n })),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"top\"] &`]: _extends({\n transformOrigin: 'center bottom',\n marginBottom: '14px'\n }, ownerState.touch && {\n marginBottom: '24px'\n }),\n [`.${tooltipClasses.popper}[data-popper-placement*=\"bottom\"] &`]: _extends({\n transformOrigin: 'center top',\n marginTop: '14px'\n }, ownerState.touch && {\n marginTop: '24px'\n })\n}));\nconst TooltipArrow = styled('span', {\n name: 'MuiTooltip',\n slot: 'Arrow',\n overridesResolver: (props, styles) => styles.arrow\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n position: 'absolute',\n width: '1em',\n height: '0.71em' /* = width / sqrt(2) = (length of the hypotenuse) */,\n boxSizing: 'border-box',\n color: theme.vars ? theme.vars.palette.Tooltip.bg : alpha(theme.palette.grey[700], 0.9),\n '&::before': {\n content: '\"\"',\n margin: 'auto',\n display: 'block',\n width: '100%',\n height: '100%',\n backgroundColor: 'currentColor',\n transform: 'rotate(45deg)'\n }\n}));\nlet hystersisOpen = false;\nlet hystersisTimer = null;\nlet cursorPosition = {\n x: 0,\n y: 0\n};\nexport function testReset() {\n hystersisOpen = false;\n clearTimeout(hystersisTimer);\n}\nfunction composeEventHandler(handler, eventHandler) {\n return event => {\n if (eventHandler) {\n eventHandler(event);\n }\n handler(event);\n };\n}\n\n// TODO v6: Remove PopperComponent, PopperProps, TransitionComponent and TransitionProps.\nconst Tooltip = /*#__PURE__*/React.forwardRef(function Tooltip(inProps, ref) {\n var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTooltip'\n });\n const {\n arrow = false,\n children,\n components = {},\n componentsProps = {},\n describeChild = false,\n disableFocusListener = false,\n disableHoverListener = false,\n disableInteractive: disableInteractiveProp = false,\n disableTouchListener = false,\n enterDelay = 100,\n enterNextDelay = 0,\n enterTouchDelay = 700,\n followCursor = false,\n id: idProp,\n leaveDelay = 0,\n leaveTouchDelay = 1500,\n onClose,\n onOpen,\n open: openProp,\n placement = 'bottom',\n PopperComponent: PopperComponentProp,\n PopperProps = {},\n slotProps = {},\n slots = {},\n title,\n TransitionComponent: TransitionComponentProp = Grow,\n TransitionProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const [childNode, setChildNode] = React.useState();\n const [arrowRef, setArrowRef] = React.useState(null);\n const ignoreNonTouchEvents = React.useRef(false);\n const disableInteractive = disableInteractiveProp || followCursor;\n const closeTimer = React.useRef();\n const enterTimer = React.useRef();\n const leaveTimer = React.useRef();\n const touchTimer = React.useRef();\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: 'Tooltip',\n state: 'open'\n });\n let open = openState;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const {\n current: isControlled\n } = React.useRef(openProp !== undefined);\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && childNode.disabled && !isControlled && title !== '' && childNode.tagName.toLowerCase() === 'button') {\n console.error(['MUI: You are providing a disabled `button` child to the Tooltip component.', 'A disabled element does not fire events.', \"Tooltip needs to listen to the child element's events to display the title.\", '', 'Add a simple wrapper element, such as a `span`.'].join('\\n'));\n }\n }, [title, childNode, isControlled]);\n }\n const id = useId(idProp);\n const prevUserSelect = React.useRef();\n const stopTouchInteraction = React.useCallback(() => {\n if (prevUserSelect.current !== undefined) {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n prevUserSelect.current = undefined;\n }\n clearTimeout(touchTimer.current);\n }, []);\n React.useEffect(() => {\n return () => {\n clearTimeout(closeTimer.current);\n clearTimeout(enterTimer.current);\n clearTimeout(leaveTimer.current);\n stopTouchInteraction();\n };\n }, [stopTouchInteraction]);\n const handleOpen = event => {\n clearTimeout(hystersisTimer);\n hystersisOpen = true;\n\n // The mouseover event will trigger for every nested element in the tooltip.\n // We can skip rerendering when the tooltip is already open.\n // We are using the mouseover event instead of the mouseenter event to fix a hide/show issue.\n setOpenState(true);\n if (onOpen && !open) {\n onOpen(event);\n }\n };\n const handleClose = useEventCallback(\n /**\n * @param {React.SyntheticEvent | Event} event\n */\n event => {\n clearTimeout(hystersisTimer);\n hystersisTimer = setTimeout(() => {\n hystersisOpen = false;\n }, 800 + leaveDelay);\n setOpenState(false);\n if (onClose && open) {\n onClose(event);\n }\n clearTimeout(closeTimer.current);\n closeTimer.current = setTimeout(() => {\n ignoreNonTouchEvents.current = false;\n }, theme.transitions.duration.shortest);\n });\n const handleEnter = event => {\n if (ignoreNonTouchEvents.current && event.type !== 'touchstart') {\n return;\n }\n\n // Remove the title ahead of time.\n // We don't want to wait for the next render commit.\n // We would risk displaying two tooltips at the same time (native + this one).\n if (childNode) {\n childNode.removeAttribute('title');\n }\n clearTimeout(enterTimer.current);\n clearTimeout(leaveTimer.current);\n if (enterDelay || hystersisOpen && enterNextDelay) {\n enterTimer.current = setTimeout(() => {\n handleOpen(event);\n }, hystersisOpen ? enterNextDelay : enterDelay);\n } else {\n handleOpen(event);\n }\n };\n const handleLeave = event => {\n clearTimeout(enterTimer.current);\n clearTimeout(leaveTimer.current);\n leaveTimer.current = setTimeout(() => {\n handleClose(event);\n }, leaveDelay);\n };\n const {\n isFocusVisibleRef,\n onBlur: handleBlurVisible,\n onFocus: handleFocusVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n // We don't necessarily care about the focusVisible state (which is safe to access via ref anyway).\n // We just need to re-render the Tooltip if the focus-visible state changes.\n const [, setChildIsFocusVisible] = React.useState(false);\n const handleBlur = event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setChildIsFocusVisible(false);\n handleLeave(event);\n }\n };\n const handleFocus = event => {\n // Workaround for https://github.com/facebook/react/issues/7769\n // The autoFocus of React might trigger the event before the componentDidMount.\n // We need to account for this eventuality.\n if (!childNode) {\n setChildNode(event.currentTarget);\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setChildIsFocusVisible(true);\n handleEnter(event);\n }\n };\n const detectTouchStart = event => {\n ignoreNonTouchEvents.current = true;\n const childrenProps = children.props;\n if (childrenProps.onTouchStart) {\n childrenProps.onTouchStart(event);\n }\n };\n const handleMouseOver = handleEnter;\n const handleMouseLeave = handleLeave;\n const handleTouchStart = event => {\n detectTouchStart(event);\n clearTimeout(leaveTimer.current);\n clearTimeout(closeTimer.current);\n stopTouchInteraction();\n prevUserSelect.current = document.body.style.WebkitUserSelect;\n // Prevent iOS text selection on long-tap.\n document.body.style.WebkitUserSelect = 'none';\n touchTimer.current = setTimeout(() => {\n document.body.style.WebkitUserSelect = prevUserSelect.current;\n handleEnter(event);\n }, enterTouchDelay);\n };\n const handleTouchEnd = event => {\n if (children.props.onTouchEnd) {\n children.props.onTouchEnd(event);\n }\n stopTouchInteraction();\n clearTimeout(leaveTimer.current);\n leaveTimer.current = setTimeout(() => {\n handleClose(event);\n }, leaveTouchDelay);\n };\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n\n /**\n * @param {KeyboardEvent} nativeEvent\n */\n function handleKeyDown(nativeEvent) {\n // IE11, Edge (prior to using Bink?) use 'Esc'\n if (nativeEvent.key === 'Escape' || nativeEvent.key === 'Esc') {\n handleClose(nativeEvent);\n }\n }\n document.addEventListener('keydown', handleKeyDown);\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [handleClose, open]);\n const handleRef = useForkRef(children.ref, focusVisibleRef, setChildNode, ref);\n\n // There is no point in displaying an empty tooltip.\n if (!title && title !== 0) {\n open = false;\n }\n const popperRef = React.useRef();\n const handleMouseMove = event => {\n const childrenProps = children.props;\n if (childrenProps.onMouseMove) {\n childrenProps.onMouseMove(event);\n }\n cursorPosition = {\n x: event.clientX,\n y: event.clientY\n };\n if (popperRef.current) {\n popperRef.current.update();\n }\n };\n const nameOrDescProps = {};\n const titleIsString = typeof title === 'string';\n if (describeChild) {\n nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;\n nameOrDescProps['aria-describedby'] = open ? id : null;\n } else {\n nameOrDescProps['aria-label'] = titleIsString ? title : null;\n nameOrDescProps['aria-labelledby'] = open && !titleIsString ? id : null;\n }\n const childrenProps = _extends({}, nameOrDescProps, other, children.props, {\n className: clsx(other.className, children.props.className),\n onTouchStart: detectTouchStart,\n ref: handleRef\n }, followCursor ? {\n onMouseMove: handleMouseMove\n } : {});\n if (process.env.NODE_ENV !== 'production') {\n childrenProps['data-mui-internal-clone-element'] = true;\n\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (childNode && !childNode.getAttribute('data-mui-internal-clone-element')) {\n console.error(['MUI: The `children` component of the Tooltip is not forwarding its props correctly.', 'Please make sure that props are spread on the same element that the ref is applied to.'].join('\\n'));\n }\n }, [childNode]);\n }\n const interactiveWrapperListeners = {};\n if (!disableTouchListener) {\n childrenProps.onTouchStart = handleTouchStart;\n childrenProps.onTouchEnd = handleTouchEnd;\n }\n if (!disableHoverListener) {\n childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);\n childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);\n if (!disableInteractive) {\n interactiveWrapperListeners.onMouseOver = handleMouseOver;\n interactiveWrapperListeners.onMouseLeave = handleMouseLeave;\n }\n }\n if (!disableFocusListener) {\n childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);\n childrenProps.onBlur = composeEventHandler(handleBlur, childrenProps.onBlur);\n if (!disableInteractive) {\n interactiveWrapperListeners.onFocus = handleFocus;\n interactiveWrapperListeners.onBlur = handleBlur;\n }\n }\n if (process.env.NODE_ENV !== 'production') {\n if (children.props.title) {\n console.error(['MUI: You have provided a `title` prop to the child of <Tooltip />.', `Remove this title prop \\`${children.props.title}\\` or the Tooltip component.`].join('\\n'));\n }\n }\n const popperOptions = React.useMemo(() => {\n var _PopperProps$popperOp;\n let tooltipModifiers = [{\n name: 'arrow',\n enabled: Boolean(arrowRef),\n options: {\n element: arrowRef,\n padding: 4\n }\n }];\n if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {\n tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);\n }\n return _extends({}, PopperProps.popperOptions, {\n modifiers: tooltipModifiers\n });\n }, [arrowRef, PopperProps]);\n const ownerState = _extends({}, props, {\n isRtl,\n arrow,\n disableInteractive,\n placement,\n PopperComponentProp,\n touch: ignoreNonTouchEvents.current\n });\n const classes = useUtilityClasses(ownerState);\n const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;\n const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow;\n const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;\n const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;\n const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {\n className: clsx(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)\n }), ownerState);\n const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);\n const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {\n className: clsx(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)\n }), ownerState);\n const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {\n className: clsx(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)\n }), ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/React.cloneElement(children, childrenProps), /*#__PURE__*/_jsx(PopperComponent, _extends({\n as: PopperComponentProp != null ? PopperComponentProp : Popper,\n placement: placement,\n anchorEl: followCursor ? {\n getBoundingClientRect: () => ({\n top: cursorPosition.y,\n left: cursorPosition.x,\n right: cursorPosition.x,\n bottom: cursorPosition.y,\n width: 0,\n height: 0\n })\n } : childNode,\n popperRef: popperRef,\n open: childNode ? open : false,\n id: id,\n transition: true\n }, interactiveWrapperListeners, popperProps, {\n popperOptions: popperOptions,\n children: ({\n TransitionProps: TransitionPropsInner\n }) => /*#__PURE__*/_jsx(TransitionComponent, _extends({\n timeout: theme.transitions.duration.shorter\n }, TransitionPropsInner, transitionProps, {\n children: /*#__PURE__*/_jsxs(TooltipComponent, _extends({}, tooltipProps, {\n children: [title, arrow ? /*#__PURE__*/_jsx(ArrowComponent, _extends({}, tooltipArrowProps, {\n ref: setArrowRef\n })) : null]\n }))\n }))\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Tooltip.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, adds an arrow to the tooltip.\n * @default false\n */\n arrow: PropTypes.bool,\n /**\n * Tooltip reference element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Arrow: PropTypes.elementType,\n Popper: PropTypes.elementType,\n Tooltip: PropTypes.elementType,\n Transition: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * Set to `true` if the `title` acts as an accessible description.\n * By default the `title` acts as an accessible label for the child.\n * @default false\n */\n describeChild: PropTypes.bool,\n /**\n * Do not respond to focus-visible events.\n * @default false\n */\n disableFocusListener: PropTypes.bool,\n /**\n * Do not respond to hover events.\n * @default false\n */\n disableHoverListener: PropTypes.bool,\n /**\n * Makes a tooltip not interactive, i.e. it will close when the user\n * hovers over the tooltip before the `leaveDelay` is expired.\n * @default false\n */\n disableInteractive: PropTypes.bool,\n /**\n * Do not respond to long press touch events.\n * @default false\n */\n disableTouchListener: PropTypes.bool,\n /**\n * The number of milliseconds to wait before showing the tooltip.\n * This prop won't impact the enter touch delay (`enterTouchDelay`).\n * @default 100\n */\n enterDelay: PropTypes.number,\n /**\n * The number of milliseconds to wait before showing the tooltip when one was already recently opened.\n * @default 0\n */\n enterNextDelay: PropTypes.number,\n /**\n * The number of milliseconds a user must touch the element before showing the tooltip.\n * @default 700\n */\n enterTouchDelay: PropTypes.number,\n /**\n * If `true`, the tooltip follow the cursor over the wrapped element.\n * @default false\n */\n followCursor: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id: PropTypes.string,\n /**\n * The number of milliseconds to wait before hiding the tooltip.\n * This prop won't impact the leave touch delay (`leaveTouchDelay`).\n * @default 0\n */\n leaveDelay: PropTypes.number,\n /**\n * The number of milliseconds after the user stops touching an element before hiding the tooltip.\n * @default 1500\n */\n leaveTouchDelay: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be open.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * Tooltip placement.\n * @default 'bottom'\n */\n placement: PropTypes.oneOf(['bottom-end', 'bottom-start', 'bottom', 'left-end', 'left-start', 'left', 'right-end', 'right-start', 'right', 'top-end', 'top-start', 'top']),\n /**\n * The component used for the popper.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Popper`](/material-ui/api/popper/) element.\n * @default {}\n */\n PopperProps: PropTypes.object,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n arrow: PropTypes.object,\n popper: PropTypes.object,\n tooltip: PropTypes.object,\n transition: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n arrow: PropTypes.elementType,\n popper: PropTypes.elementType,\n tooltip: PropTypes.elementType,\n transition: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Tooltip title. Zero-length titles string, undefined, null and false are never displayed.\n */\n title: PropTypes.node,\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Tooltip;","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `<TransitionGroup>` component manages a set of transition components\n * (`<Transition>` and `<CSSTransition>`) in a list. Like with the transition\n * components, `<TransitionGroup>` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the `<TransitionGroup>`.\n *\n * Note that `<TransitionGroup>` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `<TransitionGroup>` renders a `<div>` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `<div>` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `<Transition>` components, that are toggled `in` and out as they\n * leave. the `<TransitionGroup>` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `<Transition>` as\n * with our `<Fade>` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","import { createElement, useContext, useRef, Fragment } from 'react';\nimport '@emotion/cache';\nimport { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext } from './emotion-element-6a883da9.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-6a883da9.browser.esm.js';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport 'hoist-non-react-statics';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.10.6\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": \"./macro.js\"\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.js\",\n\t\t\"macro.d.ts\",\n\t\t\"macro.js.flow\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.10.6\",\n\t\t\"@emotion/cache\": \"^11.10.5\",\n\t\t\"@emotion/serialize\": \"^1.1.1\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.0\",\n\t\t\"@emotion/utils\": \"^1.2.0\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.0\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.10.6\",\n\t\t\"@emotion/css-prettifier\": \"1.1.1\",\n\t\t\"@emotion/server\": \"11.10.0\",\n\t\t\"@emotion/styled\": \"11.10.6\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": \"./macro.js\"\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, useContext(ThemeContext));\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other <Global/>s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from <ClassNames/> component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n var rules = useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n var res = insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/createElement(Fragment, null, /*#__PURE__*/createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction Ripple(props) {\n const {\n className,\n classes,\n pulsate = false,\n rippleX,\n rippleY,\n rippleSize,\n in: inProp,\n onExited,\n timeout\n } = props;\n const [leaving, setLeaving] = React.useState(false);\n const rippleClassName = clsx(className, classes.ripple, classes.rippleVisible, pulsate && classes.ripplePulsate);\n const rippleStyles = {\n width: rippleSize,\n height: rippleSize,\n top: -(rippleSize / 2) + rippleY,\n left: -(rippleSize / 2) + rippleX\n };\n const childClassName = clsx(classes.child, leaving && classes.childLeaving, pulsate && classes.childPulsate);\n if (!inProp && !leaving) {\n setLeaving(true);\n }\n React.useEffect(() => {\n if (!inProp && onExited != null) {\n // react-transition-group#onExited\n const timeoutId = setTimeout(onExited, timeout);\n return () => {\n clearTimeout(timeoutId);\n };\n }\n return undefined;\n }, [onExited, inProp, timeout]);\n return /*#__PURE__*/_jsx(\"span\", {\n className: rippleClassName,\n style: rippleStyles,\n children: /*#__PURE__*/_jsx(\"span\", {\n className: childClassName\n })\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? Ripple.propTypes = {\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n className: PropTypes.string,\n /**\n * @ignore - injected from TransitionGroup\n */\n in: PropTypes.bool,\n /**\n * @ignore - injected from TransitionGroup\n */\n onExited: PropTypes.func,\n /**\n * If `true`, the ripple pulsates, typically indicating the keyboard focus state of an element.\n */\n pulsate: PropTypes.bool,\n /**\n * Diameter of the ripple.\n */\n rippleSize: PropTypes.number,\n /**\n * Horizontal position of the ripple center.\n */\n rippleX: PropTypes.number,\n /**\n * Vertical position of the ripple center.\n */\n rippleY: PropTypes.number,\n /**\n * exit delay\n */\n timeout: PropTypes.number.isRequired\n} : void 0;\nexport default Ripple;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTouchRippleUtilityClass(slot) {\n return generateUtilityClass('MuiTouchRipple', slot);\n}\nconst touchRippleClasses = generateUtilityClasses('MuiTouchRipple', ['root', 'ripple', 'rippleVisible', 'ripplePulsate', 'child', 'childLeaving', 'childPulsate']);\nexport default touchRippleClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"center\", \"classes\", \"className\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { TransitionGroup } from 'react-transition-group';\nimport clsx from 'clsx';\nimport { keyframes } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Ripple from './Ripple';\nimport touchRippleClasses from './touchRippleClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst DURATION = 550;\nexport const DELAY_RIPPLE = 80;\nconst enterKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n`));\nconst exitKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n`));\nconst pulsateKeyframe = keyframes(_t3 || (_t3 = _`\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n`));\nexport const TouchRippleRoot = styled('span', {\n name: 'MuiTouchRipple',\n slot: 'Root'\n})({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n zIndex: 0,\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit'\n});\n\n// This `styled()` function invokes keyframes. `styled-components` only supports keyframes\n// in string templates. Do not convert these styles in JS object as it will break.\nexport const TouchRippleRipple = styled(Ripple, {\n name: 'MuiTouchRipple',\n slot: 'Ripple'\n})(_t4 || (_t4 = _`\n opacity: 0;\n position: absolute;\n\n &.${0} {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n &.${0} {\n animation-duration: ${0}ms;\n }\n\n & .${0} {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & .${0} {\n opacity: 0;\n animation-name: ${0};\n animation-duration: ${0}ms;\n animation-timing-function: ${0};\n }\n\n & .${0} {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ${0};\n animation-duration: 2500ms;\n animation-timing-function: ${0};\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n`), touchRippleClasses.rippleVisible, enterKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.ripplePulsate, ({\n theme\n}) => theme.transitions.duration.shorter, touchRippleClasses.child, touchRippleClasses.childLeaving, exitKeyframe, DURATION, ({\n theme\n}) => theme.transitions.easing.easeInOut, touchRippleClasses.childPulsate, pulsateKeyframe, ({\n theme\n}) => theme.transitions.easing.easeInOut);\n\n/**\n * @ignore - internal component.\n *\n * TODO v5: Make private\n */\nconst TouchRipple = /*#__PURE__*/React.forwardRef(function TouchRipple(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTouchRipple'\n });\n const {\n center: centerProp = false,\n classes = {},\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [ripples, setRipples] = React.useState([]);\n const nextKey = React.useRef(0);\n const rippleCallback = React.useRef(null);\n React.useEffect(() => {\n if (rippleCallback.current) {\n rippleCallback.current();\n rippleCallback.current = null;\n }\n }, [ripples]);\n\n // Used to filter out mouse emulated events on mobile.\n const ignoringMouseDown = React.useRef(false);\n // We use a timer in order to only show the ripples for touch \"click\" like events.\n // We don't want to display the ripple for touch scroll events.\n const startTimer = React.useRef(null);\n\n // This is the hook called once the previous timeout is ready.\n const startTimerCommit = React.useRef(null);\n const container = React.useRef(null);\n React.useEffect(() => {\n return () => {\n clearTimeout(startTimer.current);\n };\n }, []);\n const startCommit = React.useCallback(params => {\n const {\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n } = params;\n setRipples(oldRipples => [...oldRipples, /*#__PURE__*/_jsx(TouchRippleRipple, {\n classes: {\n ripple: clsx(classes.ripple, touchRippleClasses.ripple),\n rippleVisible: clsx(classes.rippleVisible, touchRippleClasses.rippleVisible),\n ripplePulsate: clsx(classes.ripplePulsate, touchRippleClasses.ripplePulsate),\n child: clsx(classes.child, touchRippleClasses.child),\n childLeaving: clsx(classes.childLeaving, touchRippleClasses.childLeaving),\n childPulsate: clsx(classes.childPulsate, touchRippleClasses.childPulsate)\n },\n timeout: DURATION,\n pulsate: pulsate,\n rippleX: rippleX,\n rippleY: rippleY,\n rippleSize: rippleSize\n }, nextKey.current)]);\n nextKey.current += 1;\n rippleCallback.current = cb;\n }, [classes]);\n const start = React.useCallback((event = {}, options = {}, cb = () => {}) => {\n const {\n pulsate = false,\n center = centerProp || options.pulsate,\n fakeElement = false // For test purposes\n } = options;\n if ((event == null ? void 0 : event.type) === 'mousedown' && ignoringMouseDown.current) {\n ignoringMouseDown.current = false;\n return;\n }\n if ((event == null ? void 0 : event.type) === 'touchstart') {\n ignoringMouseDown.current = true;\n }\n const element = fakeElement ? null : container.current;\n const rect = element ? element.getBoundingClientRect() : {\n width: 0,\n height: 0,\n left: 0,\n top: 0\n };\n\n // Get the size of the ripple\n let rippleX;\n let rippleY;\n let rippleSize;\n if (center || event === undefined || event.clientX === 0 && event.clientY === 0 || !event.clientX && !event.touches) {\n rippleX = Math.round(rect.width / 2);\n rippleY = Math.round(rect.height / 2);\n } else {\n const {\n clientX,\n clientY\n } = event.touches && event.touches.length > 0 ? event.touches[0] : event;\n rippleX = Math.round(clientX - rect.left);\n rippleY = Math.round(clientY - rect.top);\n }\n if (center) {\n rippleSize = Math.sqrt((2 * rect.width ** 2 + rect.height ** 2) / 3);\n\n // For some reason the animation is broken on Mobile Chrome if the size is even.\n if (rippleSize % 2 === 0) {\n rippleSize += 1;\n }\n } else {\n const sizeX = Math.max(Math.abs((element ? element.clientWidth : 0) - rippleX), rippleX) * 2 + 2;\n const sizeY = Math.max(Math.abs((element ? element.clientHeight : 0) - rippleY), rippleY) * 2 + 2;\n rippleSize = Math.sqrt(sizeX ** 2 + sizeY ** 2);\n }\n\n // Touche devices\n if (event != null && event.touches) {\n // check that this isn't another touchstart due to multitouch\n // otherwise we will only clear a single timer when unmounting while two\n // are running\n if (startTimerCommit.current === null) {\n // Prepare the ripple effect.\n startTimerCommit.current = () => {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n };\n // Delay the execution of the ripple effect.\n startTimer.current = setTimeout(() => {\n if (startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n }\n }, DELAY_RIPPLE); // We have to make a tradeoff with this value.\n }\n } else {\n startCommit({\n pulsate,\n rippleX,\n rippleY,\n rippleSize,\n cb\n });\n }\n }, [centerProp, startCommit]);\n const pulsate = React.useCallback(() => {\n start({}, {\n pulsate: true\n });\n }, [start]);\n const stop = React.useCallback((event, cb) => {\n clearTimeout(startTimer.current);\n\n // The touch interaction occurs too quickly.\n // We still want to show ripple effect.\n if ((event == null ? void 0 : event.type) === 'touchend' && startTimerCommit.current) {\n startTimerCommit.current();\n startTimerCommit.current = null;\n startTimer.current = setTimeout(() => {\n stop(event, cb);\n });\n return;\n }\n startTimerCommit.current = null;\n setRipples(oldRipples => {\n if (oldRipples.length > 0) {\n return oldRipples.slice(1);\n }\n return oldRipples;\n });\n rippleCallback.current = cb;\n }, []);\n React.useImperativeHandle(ref, () => ({\n pulsate,\n start,\n stop\n }), [pulsate, start, stop]);\n return /*#__PURE__*/_jsx(TouchRippleRoot, _extends({\n className: clsx(touchRippleClasses.root, classes.root, className),\n ref: container\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionGroup, {\n component: null,\n exit: true,\n children: ripples\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TouchRipple.propTypes = {\n /**\n * If `true`, the ripple starts at the center of the component\n * rather than at the point of interaction.\n */\n center: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string\n} : void 0;\nexport default TouchRipple;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getButtonBaseUtilityClass(slot) {\n return generateUtilityClass('MuiButtonBase', slot);\n}\nconst buttonBaseClasses = generateUtilityClasses('MuiButtonBase', ['root', 'disabled', 'focusVisible']);\nexport default buttonBaseClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"action\", \"centerRipple\", \"children\", \"className\", \"component\", \"disabled\", \"disableRipple\", \"disableTouchRipple\", \"focusRipple\", \"focusVisibleClassName\", \"LinkComponent\", \"onBlur\", \"onClick\", \"onContextMenu\", \"onDragLeave\", \"onFocus\", \"onFocusVisible\", \"onKeyDown\", \"onKeyUp\", \"onMouseDown\", \"onMouseLeave\", \"onMouseUp\", \"onTouchEnd\", \"onTouchMove\", \"onTouchStart\", \"tabIndex\", \"TouchRippleProps\", \"touchRippleRef\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { elementTypeAcceptingRef, refType } from '@mui/utils';\nimport composeClasses from '@mui/base/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport useEventCallback from '../utils/useEventCallback';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport TouchRipple from './TouchRipple';\nimport buttonBaseClasses, { getButtonBaseUtilityClass } from './buttonBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n focusVisible,\n focusVisibleClassName,\n classes\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', focusVisible && 'focusVisible']\n };\n const composedClasses = composeClasses(slots, getButtonBaseUtilityClass, classes);\n if (focusVisible && focusVisibleClassName) {\n composedClasses.root += ` ${focusVisibleClassName}`;\n }\n return composedClasses;\n};\nexport const ButtonBaseRoot = styled('button', {\n name: 'MuiButtonBase',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n boxSizing: 'border-box',\n WebkitTapHighlightColor: 'transparent',\n backgroundColor: 'transparent',\n // Reset default value\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n border: 0,\n margin: 0,\n // Remove the margin in Safari\n borderRadius: 0,\n padding: 0,\n // Remove the padding in Firefox\n cursor: 'pointer',\n userSelect: 'none',\n verticalAlign: 'middle',\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n textDecoration: 'none',\n // So we take precedent over the style of a native <a /> element.\n color: 'inherit',\n '&::-moz-focus-inner': {\n borderStyle: 'none' // Remove Firefox dotted outline.\n },\n\n [`&.${buttonBaseClasses.disabled}`]: {\n pointerEvents: 'none',\n // Disable link interactions\n cursor: 'default'\n },\n '@media print': {\n colorAdjust: 'exact'\n }\n});\n\n/**\n * `ButtonBase` contains as few styles as possible.\n * It aims to be a simple building block for creating a button.\n * It contains a load of style reset and some focus/ripple logic.\n */\nconst ButtonBase = /*#__PURE__*/React.forwardRef(function ButtonBase(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiButtonBase'\n });\n const {\n action,\n centerRipple = false,\n children,\n className,\n component = 'button',\n disabled = false,\n disableRipple = false,\n disableTouchRipple = false,\n focusRipple = false,\n LinkComponent = 'a',\n onBlur,\n onClick,\n onContextMenu,\n onDragLeave,\n onFocus,\n onFocusVisible,\n onKeyDown,\n onKeyUp,\n onMouseDown,\n onMouseLeave,\n onMouseUp,\n onTouchEnd,\n onTouchMove,\n onTouchStart,\n tabIndex = 0,\n TouchRippleProps,\n touchRippleRef,\n type\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const buttonRef = React.useRef(null);\n const rippleRef = React.useRef(null);\n const handleRippleRef = useForkRef(rippleRef, touchRippleRef);\n const {\n isFocusVisibleRef,\n onFocus: handleFocusVisible,\n onBlur: handleBlurVisible,\n ref: focusVisibleRef\n } = useIsFocusVisible();\n const [focusVisible, setFocusVisible] = React.useState(false);\n if (disabled && focusVisible) {\n setFocusVisible(false);\n }\n React.useImperativeHandle(action, () => ({\n focusVisible: () => {\n setFocusVisible(true);\n buttonRef.current.focus();\n }\n }), []);\n const [mountedState, setMountedState] = React.useState(false);\n React.useEffect(() => {\n setMountedState(true);\n }, []);\n const enableTouchRipple = mountedState && !disableRipple && !disabled;\n React.useEffect(() => {\n if (focusVisible && focusRipple && !disableRipple && mountedState) {\n rippleRef.current.pulsate();\n }\n }, [disableRipple, focusRipple, focusVisible, mountedState]);\n function useRippleHandler(rippleAction, eventCallback, skipRippleAction = disableTouchRipple) {\n return useEventCallback(event => {\n if (eventCallback) {\n eventCallback(event);\n }\n const ignore = skipRippleAction;\n if (!ignore && rippleRef.current) {\n rippleRef.current[rippleAction](event);\n }\n return true;\n });\n }\n const handleMouseDown = useRippleHandler('start', onMouseDown);\n const handleContextMenu = useRippleHandler('stop', onContextMenu);\n const handleDragLeave = useRippleHandler('stop', onDragLeave);\n const handleMouseUp = useRippleHandler('stop', onMouseUp);\n const handleMouseLeave = useRippleHandler('stop', event => {\n if (focusVisible) {\n event.preventDefault();\n }\n if (onMouseLeave) {\n onMouseLeave(event);\n }\n });\n const handleTouchStart = useRippleHandler('start', onTouchStart);\n const handleTouchEnd = useRippleHandler('stop', onTouchEnd);\n const handleTouchMove = useRippleHandler('stop', onTouchMove);\n const handleBlur = useRippleHandler('stop', event => {\n handleBlurVisible(event);\n if (isFocusVisibleRef.current === false) {\n setFocusVisible(false);\n }\n if (onBlur) {\n onBlur(event);\n }\n }, false);\n const handleFocus = useEventCallback(event => {\n // Fix for https://github.com/facebook/react/issues/7769\n if (!buttonRef.current) {\n buttonRef.current = event.currentTarget;\n }\n handleFocusVisible(event);\n if (isFocusVisibleRef.current === true) {\n setFocusVisible(true);\n if (onFocusVisible) {\n onFocusVisible(event);\n }\n }\n if (onFocus) {\n onFocus(event);\n }\n });\n const isNonNativeButton = () => {\n const button = buttonRef.current;\n return component && component !== 'button' && !(button.tagName === 'A' && button.href);\n };\n\n /**\n * IE11 shim for https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/repeat\n */\n const keydownRef = React.useRef(false);\n const handleKeyDown = useEventCallback(event => {\n // Check if key is already down to avoid repeats being counted as multiple activations\n if (focusRipple && !keydownRef.current && focusVisible && rippleRef.current && event.key === ' ') {\n keydownRef.current = true;\n rippleRef.current.stop(event, () => {\n rippleRef.current.start(event);\n });\n }\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === ' ') {\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (event.target === event.currentTarget && isNonNativeButton() && event.key === 'Enter' && !disabled) {\n event.preventDefault();\n if (onClick) {\n onClick(event);\n }\n }\n });\n const handleKeyUp = useEventCallback(event => {\n // calling preventDefault in keyUp on a <button> will not dispatch a click event if Space is pressed\n // https://codesandbox.io/s/button-keyup-preventdefault-dn7f0\n if (focusRipple && event.key === ' ' && rippleRef.current && focusVisible && !event.defaultPrevented) {\n keydownRef.current = false;\n rippleRef.current.stop(event, () => {\n rippleRef.current.pulsate(event);\n });\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n\n // Keyboard accessibility for non interactive elements\n if (onClick && event.target === event.currentTarget && isNonNativeButton() && event.key === ' ' && !event.defaultPrevented) {\n onClick(event);\n }\n });\n let ComponentProp = component;\n if (ComponentProp === 'button' && (other.href || other.to)) {\n ComponentProp = LinkComponent;\n }\n const buttonProps = {};\n if (ComponentProp === 'button') {\n buttonProps.type = type === undefined ? 'button' : type;\n buttonProps.disabled = disabled;\n } else {\n if (!other.href && !other.to) {\n buttonProps.role = 'button';\n }\n if (disabled) {\n buttonProps['aria-disabled'] = disabled;\n }\n }\n const handleRef = useForkRef(ref, focusVisibleRef, buttonRef);\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (enableTouchRipple && !rippleRef.current) {\n console.error(['MUI: The `component` prop provided to ButtonBase is invalid.', 'Please make sure the children prop is rendered in this custom component.'].join('\\n'));\n }\n }, [enableTouchRipple]);\n }\n const ownerState = _extends({}, props, {\n centerRipple,\n component,\n disabled,\n disableRipple,\n disableTouchRipple,\n focusRipple,\n tabIndex,\n focusVisible\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(ButtonBaseRoot, _extends({\n as: ComponentProp,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n onBlur: handleBlur,\n onClick: onClick,\n onContextMenu: handleContextMenu,\n onFocus: handleFocus,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onMouseDown: handleMouseDown,\n onMouseLeave: handleMouseLeave,\n onMouseUp: handleMouseUp,\n onDragLeave: handleDragLeave,\n onTouchEnd: handleTouchEnd,\n onTouchMove: handleTouchMove,\n onTouchStart: handleTouchStart,\n ref: handleRef,\n tabIndex: disabled ? -1 : tabIndex,\n type: type\n }, buttonProps, other, {\n children: [children, enableTouchRipple ?\n /*#__PURE__*/\n /* TouchRipple is only needed client-side, x2 boost on the server. */\n _jsx(TouchRipple, _extends({\n ref: handleRippleRef,\n center: centerRipple\n }, TouchRippleProps)) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ButtonBase.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A ref for imperative actions.\n * It currently only supports `focusVisible()` action.\n */\n action: refType,\n /**\n * If `true`, the ripples are centered.\n * They won't start at the cursor interaction position.\n * @default false\n */\n centerRipple: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: elementTypeAcceptingRef,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If `true`, the touch ripple effect is disabled.\n * @default false\n */\n disableTouchRipple: PropTypes.bool,\n /**\n * If `true`, the base button will have a keyboard focus ripple.\n * @default false\n */\n focusRipple: PropTypes.bool,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n href: PropTypes /* @typescript-to-proptypes-ignore */.any,\n /**\n * The component used to render a link when the `href` prop is provided.\n * @default 'a'\n */\n LinkComponent: PropTypes.elementType,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onContextMenu: PropTypes.func,\n /**\n * @ignore\n */\n onDragLeave: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * @ignore\n */\n onMouseDown: PropTypes.func,\n /**\n * @ignore\n */\n onMouseLeave: PropTypes.func,\n /**\n * @ignore\n */\n onMouseUp: PropTypes.func,\n /**\n * @ignore\n */\n onTouchEnd: PropTypes.func,\n /**\n * @ignore\n */\n onTouchMove: PropTypes.func,\n /**\n * @ignore\n */\n onTouchStart: PropTypes.func,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @default 0\n */\n tabIndex: PropTypes.number,\n /**\n * Props applied to the `TouchRipple` element.\n */\n TouchRippleProps: PropTypes.object,\n /**\n * A ref that points to the `TouchRipple` element.\n */\n touchRippleRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({\n current: PropTypes.shape({\n pulsate: PropTypes.func.isRequired,\n start: PropTypes.func.isRequired,\n stop: PropTypes.func.isRequired\n })\n })]),\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string])\n} : void 0;\nexport default ButtonBase;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getIconButtonUtilityClass(slot) {\n return generateUtilityClass('MuiIconButton', slot);\n}\nconst iconButtonClasses = generateUtilityClasses('MuiIconButton', ['root', 'disabled', 'colorInherit', 'colorPrimary', 'colorSecondary', 'colorError', 'colorInfo', 'colorSuccess', 'colorWarning', 'edgeStart', 'edgeEnd', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default iconButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"edge\", \"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"size\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport iconButtonClasses, { getIconButtonUtilityClass } from './iconButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disabled,\n color,\n edge,\n size\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', color !== 'default' && `color${capitalize(color)}`, edge && `edge${capitalize(edge)}`, `size${capitalize(size)}`]\n };\n return composeClasses(slots, getIconButtonUtilityClass, classes);\n};\nconst IconButtonRoot = styled(ButtonBase, {\n name: 'MuiIconButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], ownerState.edge && styles[`edge${capitalize(ownerState.edge)}`], styles[`size${capitalize(ownerState.size)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n textAlign: 'center',\n flex: '0 0 auto',\n fontSize: theme.typography.pxToRem(24),\n padding: 8,\n borderRadius: '50%',\n overflow: 'visible',\n // Explicitly set the default value to solve a bug on IE11.\n color: (theme.vars || theme).palette.action.active,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shortest\n })\n}, !ownerState.disableRipple && {\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }\n}, ownerState.edge === 'start' && {\n marginLeft: ownerState.size === 'small' ? -3 : -12\n}, ownerState.edge === 'end' && {\n marginRight: ownerState.size === 'small' ? -3 : -12\n}), ({\n theme,\n ownerState\n}) => {\n var _palette;\n const palette = (_palette = (theme.vars || theme).palette) == null ? void 0 : _palette[ownerState.color];\n return _extends({}, ownerState.color === 'inherit' && {\n color: 'inherit'\n }, ownerState.color !== 'inherit' && ownerState.color !== 'default' && _extends({\n color: palette == null ? void 0 : palette.main\n }, !ownerState.disableRipple && {\n '&:hover': _extends({}, palette && {\n backgroundColor: theme.vars ? `rgba(${palette.mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(palette.main, theme.palette.action.hoverOpacity)\n }, {\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n })\n }), ownerState.size === 'small' && {\n padding: 5,\n fontSize: theme.typography.pxToRem(18)\n }, ownerState.size === 'large' && {\n padding: 12,\n fontSize: theme.typography.pxToRem(28)\n }, {\n [`&.${iconButtonClasses.disabled}`]: {\n backgroundColor: 'transparent',\n color: (theme.vars || theme).palette.action.disabled\n }\n });\n});\n\n/**\n * Refer to the [Icons](/material-ui/icons/) section of the documentation\n * regarding the available icon options.\n */\nconst IconButton = /*#__PURE__*/React.forwardRef(function IconButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiIconButton'\n });\n const {\n edge = false,\n children,\n className,\n color = 'default',\n disabled = false,\n disableFocusRipple = false,\n size = 'medium'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n edge,\n color,\n disabled,\n disableFocusRipple,\n size\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(IconButtonRoot, _extends({\n className: clsx(classes.root, className),\n centerRipple: true,\n focusRipple: !disableFocusRipple,\n disabled: disabled,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? IconButton.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The icon to display.\n */\n children: chainPropTypes(PropTypes.node, props => {\n const found = React.Children.toArray(props.children).some(child => /*#__PURE__*/React.isValidElement(child) && child.props.onClick);\n if (found) {\n return new Error(['MUI: You are providing an onClick event listener to a child of a button element.', 'Prefer applying it to the IconButton directly.', 'This guarantees that the whole <button> will be responsive to click events.'].join('\\n'));\n }\n return null;\n }),\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'default'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If given, uses a negative margin to counteract the padding on one\n * side (this is often helpful for aligning the left or right\n * side of the icon with content above or below, without ruining the border\n * size and shape).\n * @default false\n */\n edge: PropTypes.oneOf(['end', 'start', false]),\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default IconButton;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\"\n}), 'Person');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAvatarUtilityClass(slot) {\n return generateUtilityClass('MuiAvatar', slot);\n}\nconst avatarClasses = generateUtilityClasses('MuiAvatar', ['root', 'colorDefault', 'circular', 'rounded', 'square', 'img', 'fallback']);\nexport default avatarClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"alt\", \"children\", \"className\", \"component\", \"imgProps\", \"sizes\", \"src\", \"srcSet\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Person from '../internal/svg-icons/Person';\nimport { getAvatarUtilityClass } from './avatarClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n colorDefault\n } = ownerState;\n const slots = {\n root: ['root', variant, colorDefault && 'colorDefault'],\n img: ['img'],\n fallback: ['fallback']\n };\n return composeClasses(slots, getAvatarUtilityClass, classes);\n};\nconst AvatarRoot = styled('div', {\n name: 'MuiAvatar',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.colorDefault && styles.colorDefault];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexShrink: 0,\n width: 40,\n height: 40,\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(20),\n lineHeight: 1,\n borderRadius: '50%',\n overflow: 'hidden',\n userSelect: 'none'\n}, ownerState.variant === 'rounded' && {\n borderRadius: (theme.vars || theme).shape.borderRadius\n}, ownerState.variant === 'square' && {\n borderRadius: 0\n}, ownerState.colorDefault && _extends({\n color: (theme.vars || theme).palette.background.default\n}, theme.vars ? {\n backgroundColor: theme.vars.palette.Avatar.defaultBg\n} : {\n backgroundColor: theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[600]\n})));\nconst AvatarImg = styled('img', {\n name: 'MuiAvatar',\n slot: 'Img',\n overridesResolver: (props, styles) => styles.img\n})({\n width: '100%',\n height: '100%',\n textAlign: 'center',\n // Handle non-square image. The property isn't supported by IE11.\n objectFit: 'cover',\n // Hide alt text.\n color: 'transparent',\n // Hide the image broken icon, only works on Chrome.\n textIndent: 10000\n});\nconst AvatarFallback = styled(Person, {\n name: 'MuiAvatar',\n slot: 'Fallback',\n overridesResolver: (props, styles) => styles.fallback\n})({\n width: '75%',\n height: '75%'\n});\nfunction useLoaded({\n crossOrigin,\n referrerPolicy,\n src,\n srcSet\n}) {\n const [loaded, setLoaded] = React.useState(false);\n React.useEffect(() => {\n if (!src && !srcSet) {\n return undefined;\n }\n setLoaded(false);\n let active = true;\n const image = new Image();\n image.onload = () => {\n if (!active) {\n return;\n }\n setLoaded('loaded');\n };\n image.onerror = () => {\n if (!active) {\n return;\n }\n setLoaded('error');\n };\n image.crossOrigin = crossOrigin;\n image.referrerPolicy = referrerPolicy;\n image.src = src;\n if (srcSet) {\n image.srcset = srcSet;\n }\n return () => {\n active = false;\n };\n }, [crossOrigin, referrerPolicy, src, srcSet]);\n return loaded;\n}\nconst Avatar = /*#__PURE__*/React.forwardRef(function Avatar(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAvatar'\n });\n const {\n alt,\n children: childrenProp,\n className,\n component = 'div',\n imgProps,\n sizes,\n src,\n srcSet,\n variant = 'circular'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n let children = null;\n\n // Use a hook instead of onError on the img element to support server-side rendering.\n const loaded = useLoaded(_extends({}, imgProps, {\n src,\n srcSet\n }));\n const hasImg = src || srcSet;\n const hasImgNotFailing = hasImg && loaded !== 'error';\n const ownerState = _extends({}, props, {\n colorDefault: !hasImgNotFailing,\n component,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n if (hasImgNotFailing) {\n children = /*#__PURE__*/_jsx(AvatarImg, _extends({\n alt: alt,\n src: src,\n srcSet: srcSet,\n sizes: sizes,\n ownerState: ownerState,\n className: classes.img\n }, imgProps));\n } else if (childrenProp != null) {\n children = childrenProp;\n } else if (hasImg && alt) {\n children = alt[0];\n } else {\n children = /*#__PURE__*/_jsx(AvatarFallback, {\n ownerState: ownerState,\n className: classes.fallback\n });\n }\n return /*#__PURE__*/_jsx(AvatarRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Avatar.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Used in combination with `src` or `srcSet` to\n * provide an alt attribute for the rendered `img` element.\n */\n alt: PropTypes.string,\n /**\n * Used to render icon or text elements inside the Avatar if `src` is not set.\n * This can be an element, or just a string.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#attributes) applied to the `img` element if the component is used to display an image.\n * It can be used to listen for the loading error event.\n */\n imgProps: PropTypes.object,\n /**\n * The `sizes` attribute for the `img` element.\n */\n sizes: PropTypes.string,\n /**\n * The `src` attribute for the `img` element.\n */\n src: PropTypes.string,\n /**\n * The `srcSet` attribute for the `img` element.\n * Use this attribute for responsive image display.\n */\n srcSet: PropTypes.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The shape of the avatar.\n * @default 'circular'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rounded', 'square']), PropTypes.string])\n} : void 0;\nexport default Avatar;","import * as React from 'react';\n\n/**\n * @ignore - internal component.\n */\nconst ListContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ListContext.displayName = 'ListContext';\n}\nexport default ListContext;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListUtilityClass(slot) {\n return generateUtilityClass('MuiList', slot);\n}\nconst listClasses = generateUtilityClasses('MuiList', ['root', 'padding', 'dense', 'subheader']);\nexport default listClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"dense\", \"disablePadding\", \"subheader\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from './ListContext';\nimport { getListUtilityClass } from './listClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePadding,\n dense,\n subheader\n } = ownerState;\n const slots = {\n root: ['root', !disablePadding && 'padding', dense && 'dense', subheader && 'subheader']\n };\n return composeClasses(slots, getListUtilityClass, classes);\n};\nconst ListRoot = styled('ul', {\n name: 'MuiList',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.disablePadding && styles.padding, ownerState.dense && styles.dense, ownerState.subheader && styles.subheader];\n }\n})(({\n ownerState\n}) => _extends({\n listStyle: 'none',\n margin: 0,\n padding: 0,\n position: 'relative'\n}, !ownerState.disablePadding && {\n paddingTop: 8,\n paddingBottom: 8\n}, ownerState.subheader && {\n paddingTop: 0\n}));\nconst List = /*#__PURE__*/React.forwardRef(function List(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiList'\n });\n const {\n children,\n className,\n component = 'ul',\n dense = false,\n disablePadding = false,\n subheader\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useMemo(() => ({\n dense\n }), [dense]);\n const ownerState = _extends({}, props, {\n component,\n dense,\n disablePadding\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: context,\n children: /*#__PURE__*/_jsxs(ListRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [subheader, children]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? List.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used for\n * the list and list items.\n * The prop is available to descendant components as the `dense` context.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * If `true`, vertical padding is removed from the list.\n * @default false\n */\n disablePadding: PropTypes.bool,\n /**\n * The content of the subheader, normally `ListSubheader`.\n */\n subheader: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default List;","// A change of the browser zoom change the scrollbar size.\n// Credit https://github.com/twbs/bootstrap/blob/488fd8afc535ca3a6ad4dc581f5e89217b6a36ac/js/src/util/scrollbar.js#L14-L18\nexport default function getScrollbarSize(doc) {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = doc.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n}","import { unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\nexport default getScrollbarSize;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n let text = nextFocus.innerText;\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n text = text.trim().toLowerCase();\n if (text.length === 0) {\n return false;\n }\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return false;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return true;\n }\n }\n return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/api/menu/) component if you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n const {\n // private\n // eslint-disable-next-line react/prop-types\n actions,\n autoFocus = false,\n autoFocusItem = false,\n children,\n className,\n disabledItemsFocusable = false,\n disableListWrap = false,\n onKeyDown,\n variant = 'selectedMenu'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const listRef = React.useRef(null);\n const textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(() => {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, () => ({\n adjustStyleForScrollbar: (containerElement, theme) => {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n const noExplicitWidth = !listRef.current.style.width;\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n const scrollbarSize = `${getScrollbarSize(ownerDocument(containerElement))}px`;\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n }\n return listRef.current;\n }\n }), []);\n const handleKeyDown = event => {\n const list = listRef.current;\n const key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n const currentFocus = ownerDocument(list).activeElement;\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n const criteria = textCriteriaRef.current;\n const lowerKey = key.toLowerCase();\n const currTime = performance.now();\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleRef = useForkRef(listRef, ref);\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.forEach(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n activeItemIndex += 1;\n if (activeItemIndex >= children.length) {\n // there are no focusable items within the list.\n activeItemIndex = -1;\n }\n }\n });\n const items = React.Children.map(children, (child, index) => {\n if (index === activeItemIndex) {\n const newChildProps = {};\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n return child;\n });\n return /*#__PURE__*/_jsx(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other, {\n children: items\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n * @default false\n */\n autoFocusItem: PropTypes.bool,\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the menu items will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","import { unstable_ownerWindow as ownerWindow, unstable_ownerDocument as ownerDocument, unstable_getScrollbarSize as getScrollbarSize } from '@mui/utils';\n// Is a vertical scrollbar displayed?\nfunction isOverflowing(container) {\n const doc = ownerDocument(container);\n if (doc.body === container) {\n return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;\n }\n return container.scrollHeight > container.clientHeight;\n}\nexport function ariaHidden(element, show) {\n if (show) {\n element.setAttribute('aria-hidden', 'true');\n } else {\n element.removeAttribute('aria-hidden');\n }\n}\nfunction getPaddingRight(element) {\n return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;\n}\nfunction isAriaHiddenForbiddenOnElement(element) {\n // The forbidden HTML tags are the ones from ARIA specification that\n // can be children of body and can't have aria-hidden attribute.\n // cf. https://www.w3.org/TR/html-aria/#docconformance\n const forbiddenTagNames = ['TEMPLATE', 'SCRIPT', 'STYLE', 'LINK', 'MAP', 'META', 'NOSCRIPT', 'PICTURE', 'COL', 'COLGROUP', 'PARAM', 'SLOT', 'SOURCE', 'TRACK'];\n const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;\n const isInputHidden = element.tagName === 'INPUT' && element.getAttribute('type') === 'hidden';\n return isForbiddenTagName || isInputHidden;\n}\nfunction ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {\n const blacklist = [mountElement, currentElement, ...elementsToExclude];\n [].forEach.call(container.children, element => {\n const isNotExcludedElement = blacklist.indexOf(element) === -1;\n const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);\n if (isNotExcludedElement && isNotForbiddenElement) {\n ariaHidden(element, show);\n }\n });\n}\nfunction findIndexOf(items, callback) {\n let idx = -1;\n items.some((item, index) => {\n if (callback(item)) {\n idx = index;\n return true;\n }\n return false;\n });\n return idx;\n}\nfunction handleContainer(containerInfo, props) {\n const restoreStyle = [];\n const container = containerInfo.container;\n if (!props.disableScrollLock) {\n if (isOverflowing(container)) {\n // Compute the size before applying overflow hidden to avoid any scroll jumps.\n const scrollbarSize = getScrollbarSize(ownerDocument(container));\n restoreStyle.push({\n value: container.style.paddingRight,\n property: 'padding-right',\n el: container\n });\n // Use computed style, here to get the real padding to add our scrollbar width.\n container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;\n\n // .mui-fixed is a global helper.\n const fixedElements = ownerDocument(container).querySelectorAll('.mui-fixed');\n [].forEach.call(fixedElements, element => {\n restoreStyle.push({\n value: element.style.paddingRight,\n property: 'padding-right',\n el: element\n });\n element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;\n });\n }\n let scrollContainer;\n if (container.parentNode instanceof DocumentFragment) {\n scrollContainer = ownerDocument(container).body;\n } else {\n // Improve Gatsby support\n // https://css-tricks.com/snippets/css/force-vertical-scrollbar/\n const parent = container.parentElement;\n const containerWindow = ownerWindow(container);\n scrollContainer = (parent == null ? void 0 : parent.nodeName) === 'HTML' && containerWindow.getComputedStyle(parent).overflowY === 'scroll' ? parent : container;\n }\n\n // Block the scroll even if no scrollbar is visible to account for mobile keyboard\n // screensize shrink.\n restoreStyle.push({\n value: scrollContainer.style.overflow,\n property: 'overflow',\n el: scrollContainer\n }, {\n value: scrollContainer.style.overflowX,\n property: 'overflow-x',\n el: scrollContainer\n }, {\n value: scrollContainer.style.overflowY,\n property: 'overflow-y',\n el: scrollContainer\n });\n scrollContainer.style.overflow = 'hidden';\n }\n const restore = () => {\n restoreStyle.forEach(({\n value,\n el,\n property\n }) => {\n if (value) {\n el.style.setProperty(property, value);\n } else {\n el.style.removeProperty(property);\n }\n });\n };\n return restore;\n}\nfunction getHiddenSiblings(container) {\n const hiddenSiblings = [];\n [].forEach.call(container.children, element => {\n if (element.getAttribute('aria-hidden') === 'true') {\n hiddenSiblings.push(element);\n }\n });\n return hiddenSiblings;\n}\n/**\n * @ignore - do not document.\n *\n * Proper state management for containers and the modals in those containers.\n * Simplified, but inspired by react-overlay's ModalManager class.\n * Used by the Modal to ensure proper styling of containers.\n */\nexport default class ModalManager {\n constructor() {\n this.containers = void 0;\n this.modals = void 0;\n this.modals = [];\n this.containers = [];\n }\n add(modal, container) {\n let modalIndex = this.modals.indexOf(modal);\n if (modalIndex !== -1) {\n return modalIndex;\n }\n modalIndex = this.modals.length;\n this.modals.push(modal);\n\n // If the modal we are adding is already in the DOM.\n if (modal.modalRef) {\n ariaHidden(modal.modalRef, false);\n }\n const hiddenSiblings = getHiddenSiblings(container);\n ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);\n const containerIndex = findIndexOf(this.containers, item => item.container === container);\n if (containerIndex !== -1) {\n this.containers[containerIndex].modals.push(modal);\n return modalIndex;\n }\n this.containers.push({\n modals: [modal],\n container,\n restore: null,\n hiddenSiblings\n });\n return modalIndex;\n }\n mount(modal, props) {\n const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n const containerInfo = this.containers[containerIndex];\n if (!containerInfo.restore) {\n containerInfo.restore = handleContainer(containerInfo, props);\n }\n }\n remove(modal, ariaHiddenState = true) {\n const modalIndex = this.modals.indexOf(modal);\n if (modalIndex === -1) {\n return modalIndex;\n }\n const containerIndex = findIndexOf(this.containers, item => item.modals.indexOf(modal) !== -1);\n const containerInfo = this.containers[containerIndex];\n containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);\n this.modals.splice(modalIndex, 1);\n\n // If that was the last modal in a container, clean up the container.\n if (containerInfo.modals.length === 0) {\n // The modal might be closed before it had the chance to be mounted in the DOM.\n if (containerInfo.restore) {\n containerInfo.restore();\n }\n if (modal.modalRef) {\n // In case the modal wasn't in the DOM yet.\n ariaHidden(modal.modalRef, ariaHiddenState);\n }\n ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);\n this.containers.splice(containerIndex, 1);\n } else {\n // Otherwise make sure the next top modal is visible to a screen reader.\n const nextTop = containerInfo.modals[containerInfo.modals.length - 1];\n // as soon as a modal is adding its modalRef is undefined. it can't set\n // aria-hidden because the dom element doesn't exist either\n // when modal was unmounted before modalRef gets null\n if (nextTop.modalRef) {\n ariaHidden(nextTop.modalRef, false);\n }\n }\n return modalIndex;\n }\n isTopModal(modal) {\n return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;\n }\n}","/* eslint-disable consistent-return, jsx-a11y/no-noninteractive-tabindex */\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { exactProp, elementAcceptingRef, unstable_useForkRef as useForkRef, unstable_ownerDocument as ownerDocument } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n// Inspired by https://github.com/focus-trap/tabbable\nconst candidatesSelector = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable=\"false\"])'].join(',');\nfunction getTabIndex(node) {\n const tabindexAttr = parseInt(node.getAttribute('tabindex') || '', 10);\n if (!Number.isNaN(tabindexAttr)) {\n return tabindexAttr;\n }\n\n // Browsers do not return `tabIndex` correctly for contentEditable nodes;\n // https://bugs.chromium.org/p/chromium/issues/detail?id=661108&q=contenteditable%20tabindex&can=2\n // so if they don't have a tabindex attribute specifically set, assume it's 0.\n // in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default\n // `tabIndex` of -1 when the 'tabindex' attribute isn't specified in the DOM,\n // yet they are still part of the regular tab order; in FF, they get a default\n // `tabIndex` of 0; since Chrome still puts those elements in the regular tab\n // order, consider their tab index to be 0.\n if (node.contentEditable === 'true' || (node.nodeName === 'AUDIO' || node.nodeName === 'VIDEO' || node.nodeName === 'DETAILS') && node.getAttribute('tabindex') === null) {\n return 0;\n }\n return node.tabIndex;\n}\nfunction isNonTabbableRadio(node) {\n if (node.tagName !== 'INPUT' || node.type !== 'radio') {\n return false;\n }\n if (!node.name) {\n return false;\n }\n const getRadio = selector => node.ownerDocument.querySelector(`input[type=\"radio\"]${selector}`);\n let roving = getRadio(`[name=\"${node.name}\"]:checked`);\n if (!roving) {\n roving = getRadio(`[name=\"${node.name}\"]`);\n }\n return roving !== node;\n}\nfunction isNodeMatchingSelectorFocusable(node) {\n if (node.disabled || node.tagName === 'INPUT' && node.type === 'hidden' || isNonTabbableRadio(node)) {\n return false;\n }\n return true;\n}\nfunction defaultGetTabbable(root) {\n const regularTabNodes = [];\n const orderedTabNodes = [];\n Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {\n const nodeTabIndex = getTabIndex(node);\n if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {\n return;\n }\n if (nodeTabIndex === 0) {\n regularTabNodes.push(node);\n } else {\n orderedTabNodes.push({\n documentOrder: i,\n tabIndex: nodeTabIndex,\n node: node\n });\n }\n });\n return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map(a => a.node).concat(regularTabNodes);\n}\nfunction defaultIsEnabled() {\n return true;\n}\n\n/**\n * Utility component that locks focus inside the component.\n *\n * Demos:\n *\n * - [Focus Trap](https://mui.com/base/react-focus-trap/)\n *\n * API:\n *\n * - [FocusTrap API](https://mui.com/base/api/focus-trap/)\n */\nfunction FocusTrap(props) {\n const {\n children,\n disableAutoFocus = false,\n disableEnforceFocus = false,\n disableRestoreFocus = false,\n getTabbable = defaultGetTabbable,\n isEnabled = defaultIsEnabled,\n open\n } = props;\n const ignoreNextEnforceFocus = React.useRef(false);\n const sentinelStart = React.useRef(null);\n const sentinelEnd = React.useRef(null);\n const nodeToRestore = React.useRef(null);\n const reactFocusEventTarget = React.useRef(null);\n // This variable is useful when disableAutoFocus is true.\n // It waits for the active element to move into the component to activate.\n const activated = React.useRef(false);\n const rootRef = React.useRef(null);\n // @ts-expect-error TODO upstream fix\n const handleRef = useForkRef(children.ref, rootRef);\n const lastKeydown = React.useRef(null);\n React.useEffect(() => {\n // We might render an empty child.\n if (!open || !rootRef.current) {\n return;\n }\n activated.current = !disableAutoFocus;\n }, [disableAutoFocus, open]);\n React.useEffect(() => {\n // We might render an empty child.\n if (!open || !rootRef.current) {\n return;\n }\n const doc = ownerDocument(rootRef.current);\n if (!rootRef.current.contains(doc.activeElement)) {\n if (!rootRef.current.hasAttribute('tabIndex')) {\n if (process.env.NODE_ENV !== 'production') {\n console.error(['MUI: The modal content node does not accept focus.', 'For the benefit of assistive technologies, ' + 'the tabIndex of the node is being set to \"-1\".'].join('\\n'));\n }\n rootRef.current.setAttribute('tabIndex', '-1');\n }\n if (activated.current) {\n rootRef.current.focus();\n }\n }\n return () => {\n // restoreLastFocus()\n if (!disableRestoreFocus) {\n // In IE11 it is possible for document.activeElement to be null resulting\n // in nodeToRestore.current being null.\n // Not all elements in IE11 have a focus method.\n // Once IE11 support is dropped the focus() call can be unconditional.\n if (nodeToRestore.current && nodeToRestore.current.focus) {\n ignoreNextEnforceFocus.current = true;\n nodeToRestore.current.focus();\n }\n nodeToRestore.current = null;\n }\n };\n // Missing `disableRestoreFocus` which is fine.\n // We don't support changing that prop on an open FocusTrap\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open]);\n React.useEffect(() => {\n // We might render an empty child.\n if (!open || !rootRef.current) {\n return;\n }\n const doc = ownerDocument(rootRef.current);\n const contain = nativeEvent => {\n const {\n current: rootElement\n } = rootRef;\n\n // Cleanup functions are executed lazily in React 17.\n // Contain can be called between the component being unmounted and its cleanup function being run.\n if (rootElement === null) {\n return;\n }\n if (!doc.hasFocus() || disableEnforceFocus || !isEnabled() || ignoreNextEnforceFocus.current) {\n ignoreNextEnforceFocus.current = false;\n return;\n }\n if (!rootElement.contains(doc.activeElement)) {\n // if the focus event is not coming from inside the children's react tree, reset the refs\n if (nativeEvent && reactFocusEventTarget.current !== nativeEvent.target || doc.activeElement !== reactFocusEventTarget.current) {\n reactFocusEventTarget.current = null;\n } else if (reactFocusEventTarget.current !== null) {\n return;\n }\n if (!activated.current) {\n return;\n }\n let tabbable = [];\n if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {\n tabbable = getTabbable(rootRef.current);\n }\n if (tabbable.length > 0) {\n var _lastKeydown$current, _lastKeydown$current2;\n const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === 'Tab');\n const focusNext = tabbable[0];\n const focusPrevious = tabbable[tabbable.length - 1];\n if (typeof focusNext !== 'string' && typeof focusPrevious !== 'string') {\n if (isShiftTab) {\n focusPrevious.focus();\n } else {\n focusNext.focus();\n }\n }\n } else {\n rootElement.focus();\n }\n }\n };\n const loopFocus = nativeEvent => {\n lastKeydown.current = nativeEvent;\n if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== 'Tab') {\n return;\n }\n\n // Make sure the next tab starts from the right place.\n // doc.activeElement refers to the origin.\n if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {\n // We need to ignore the next contain as\n // it will try to move the focus back to the rootRef element.\n ignoreNextEnforceFocus.current = true;\n if (sentinelEnd.current) {\n sentinelEnd.current.focus();\n }\n }\n };\n doc.addEventListener('focusin', contain);\n doc.addEventListener('keydown', loopFocus, true);\n\n // With Edge, Safari and Firefox, no focus related events are fired when the focused area stops being a focused area.\n // e.g. https://bugzilla.mozilla.org/show_bug.cgi?id=559561.\n // Instead, we can look if the active element was restored on the BODY element.\n //\n // The whatwg spec defines how the browser should behave but does not explicitly mention any events:\n // https://html.spec.whatwg.org/multipage/interaction.html#focus-fixup-rule.\n const interval = setInterval(() => {\n if (doc.activeElement && doc.activeElement.tagName === 'BODY') {\n contain(null);\n }\n }, 50);\n return () => {\n clearInterval(interval);\n doc.removeEventListener('focusin', contain);\n doc.removeEventListener('keydown', loopFocus, true);\n };\n }, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);\n const onFocus = event => {\n if (nodeToRestore.current === null) {\n nodeToRestore.current = event.relatedTarget;\n }\n activated.current = true;\n reactFocusEventTarget.current = event.target;\n const childrenPropsHandler = children.props.onFocus;\n if (childrenPropsHandler) {\n childrenPropsHandler(event);\n }\n };\n const handleFocusSentinel = event => {\n if (nodeToRestore.current === null) {\n nodeToRestore.current = event.relatedTarget;\n }\n activated.current = true;\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"div\", {\n tabIndex: open ? 0 : -1,\n onFocus: handleFocusSentinel,\n ref: sentinelStart,\n \"data-testid\": \"sentinelStart\"\n }), /*#__PURE__*/React.cloneElement(children, {\n ref: handleRef,\n onFocus\n }), /*#__PURE__*/_jsx(\"div\", {\n tabIndex: open ? 0 : -1,\n onFocus: handleFocusSentinel,\n ref: sentinelEnd,\n \"data-testid\": \"sentinelEnd\"\n })]\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? FocusTrap.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A single child content element.\n */\n children: elementAcceptingRef,\n /**\n * If `true`, the focus trap will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any focus trap children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the focus trap less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the focus trap will not prevent focus from leaving the focus trap while open.\n *\n * Generally this should never be set to `true` as it makes the focus trap less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, the focus trap will not restore focus to previously focused element once\n * focus trap is hidden or unmounted.\n * @default false\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.\n * For instance, you can provide the \"tabbable\" npm dependency.\n * @param {HTMLElement} root\n */\n getTabbable: PropTypes.func,\n /**\n * This prop extends the `open` prop.\n * It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.\n * This prop should be memoized.\n * It can be used to support multiple focus trap mounted at the same time.\n * @default function defaultIsEnabled(): boolean {\n * return true;\n * }\n */\n isEnabled: PropTypes.func,\n /**\n * If `true`, focus is locked.\n */\n open: PropTypes.bool.isRequired\n} : void 0;\nif (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line\n FocusTrap['propTypes' + ''] = exactProp(FocusTrap.propTypes);\n}\nexport default FocusTrap;","import generateUtilityClasses from '../generateUtilityClasses';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getModalUtilityClass(slot) {\n return generateUtilityClass('MuiModal', slot);\n}\nconst modalUnstyledClasses = generateUtilityClasses('MuiModal', ['root', 'hidden', 'backdrop']);\nexport default modalUnstyledClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"closeAfterTransition\", \"component\", \"container\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"manager\", \"onBackdropClick\", \"onClose\", \"onKeyDown\", \"open\", \"onTransitionEnter\", \"onTransitionExited\", \"slotProps\", \"slots\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { elementAcceptingRef, HTMLElementType, unstable_ownerDocument as ownerDocument, unstable_useForkRef as useForkRef, unstable_createChainedFunction as createChainedFunction, unstable_useEventCallback as useEventCallback } from '@mui/utils';\nimport composeClasses from '../composeClasses';\nimport Portal from '../Portal';\nimport ModalManager, { ariaHidden } from './ModalManager';\nimport FocusTrap from '../FocusTrap';\nimport { getModalUtilityClass } from './modalUnstyledClasses';\nimport { useSlotProps } from '../utils';\nimport { useClassNamesOverride } from '../utils/ClassNameConfigurator';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n open,\n exited\n } = ownerState;\n const slots = {\n root: ['root', !open && exited && 'hidden'],\n backdrop: ['backdrop']\n };\n return composeClasses(slots, useClassNamesOverride(getModalUtilityClass));\n};\nfunction getContainer(container) {\n return typeof container === 'function' ? container() : container;\n}\nfunction getHasTransition(children) {\n return children ? children.props.hasOwnProperty('in') : false;\n}\n\n// A modal manager used to track and manage the state of open Modals.\n// Modals don't open on the server so this won't conflict with concurrent requests.\nconst defaultManager = new ModalManager();\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * * [Dialog](https://mui.com/material-ui/api/dialog/)\n * * [Drawer](https://mui.com/material-ui/api/drawer/)\n * * [Menu](https://mui.com/material-ui/api/menu/)\n * * [Popover](https://mui.com/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](https://mui.com/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n *\n * Demos:\n *\n * - [Unstyled Modal](https://mui.com/base/react-modal/)\n *\n * API:\n *\n * - [ModalUnstyled API](https://mui.com/base/api/modal-unstyled/)\n */\nconst ModalUnstyled = /*#__PURE__*/React.forwardRef(function ModalUnstyled(props, forwardedRef) {\n var _props$ariaHidden, _ref;\n const {\n children,\n closeAfterTransition = false,\n component,\n container,\n disableAutoFocus = false,\n disableEnforceFocus = false,\n disableEscapeKeyDown = false,\n disablePortal = false,\n disableRestoreFocus = false,\n disableScrollLock = false,\n hideBackdrop = false,\n keepMounted = false,\n // private\n manager = defaultManager,\n onBackdropClick,\n onClose,\n onKeyDown,\n open,\n onTransitionEnter,\n onTransitionExited,\n slotProps = {},\n slots = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [exited, setExited] = React.useState(!open);\n const modal = React.useRef({});\n const mountNodeRef = React.useRef(null);\n const modalRef = React.useRef(null);\n const handleRef = useForkRef(modalRef, forwardedRef);\n const hasTransition = getHasTransition(children);\n const ariaHiddenProp = (_props$ariaHidden = props['aria-hidden']) != null ? _props$ariaHidden : true;\n const getDoc = () => ownerDocument(mountNodeRef.current);\n const getModal = () => {\n modal.current.modalRef = modalRef.current;\n modal.current.mountNode = mountNodeRef.current;\n return modal.current;\n };\n const handleMounted = () => {\n manager.mount(getModal(), {\n disableScrollLock\n });\n\n // Fix a bug on Chrome where the scroll isn't initially 0.\n if (modalRef.current) {\n modalRef.current.scrollTop = 0;\n }\n };\n const handleOpen = useEventCallback(() => {\n const resolvedContainer = getContainer(container) || getDoc().body;\n manager.add(getModal(), resolvedContainer);\n\n // The element was already mounted.\n if (modalRef.current) {\n handleMounted();\n }\n });\n const isTopModal = React.useCallback(() => manager.isTopModal(getModal()), [manager]);\n const handlePortalRef = useEventCallback(node => {\n mountNodeRef.current = node;\n if (!node || !modalRef.current) {\n return;\n }\n if (open && isTopModal()) {\n handleMounted();\n } else {\n ariaHidden(modalRef.current, ariaHiddenProp);\n }\n });\n const handleClose = React.useCallback(() => {\n manager.remove(getModal(), ariaHiddenProp);\n }, [manager, ariaHiddenProp]);\n React.useEffect(() => {\n return () => {\n handleClose();\n };\n }, [handleClose]);\n React.useEffect(() => {\n if (open) {\n handleOpen();\n } else if (!hasTransition || !closeAfterTransition) {\n handleClose();\n }\n }, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);\n const ownerState = _extends({}, props, {\n closeAfterTransition,\n disableAutoFocus,\n disableEnforceFocus,\n disableEscapeKeyDown,\n disablePortal,\n disableRestoreFocus,\n disableScrollLock,\n exited,\n hideBackdrop,\n keepMounted\n });\n const classes = useUtilityClasses(ownerState);\n const handleEnter = () => {\n setExited(false);\n if (onTransitionEnter) {\n onTransitionEnter();\n }\n };\n const handleExited = () => {\n setExited(true);\n if (onTransitionExited) {\n onTransitionExited();\n }\n if (closeAfterTransition) {\n handleClose();\n }\n };\n const handleBackdropClick = event => {\n if (event.target !== event.currentTarget) {\n return;\n }\n if (onBackdropClick) {\n onBackdropClick(event);\n }\n if (onClose) {\n onClose(event, 'backdropClick');\n }\n };\n const handleKeyDown = event => {\n if (onKeyDown) {\n onKeyDown(event);\n }\n\n // The handler doesn't take event.defaultPrevented into account:\n //\n // event.preventDefault() is meant to stop default behaviors like\n // clicking a checkbox to check it, hitting a button to submit a form,\n // and hitting left arrow to move the cursor in a text input etc.\n // Only special HTML elements have these default behaviors.\n if (event.key !== 'Escape' || !isTopModal()) {\n return;\n }\n if (!disableEscapeKeyDown) {\n // Swallow the event, in case someone is listening for the escape key on the body.\n event.stopPropagation();\n if (onClose) {\n onClose(event, 'escapeKeyDown');\n }\n }\n };\n const childProps = {};\n if (children.props.tabIndex === undefined) {\n childProps.tabIndex = '-1';\n }\n\n // It's a Transition like component\n if (hasTransition) {\n childProps.onEnter = createChainedFunction(handleEnter, children.props.onEnter);\n childProps.onExited = createChainedFunction(handleExited, children.props.onExited);\n }\n const Root = (_ref = component != null ? component : slots.root) != null ? _ref : 'div';\n const rootProps = useSlotProps({\n elementType: Root,\n externalSlotProps: slotProps.root,\n externalForwardedProps: other,\n additionalProps: {\n ref: handleRef,\n role: 'presentation',\n onKeyDown: handleKeyDown\n },\n className: classes.root,\n ownerState\n });\n const BackdropComponent = slots.backdrop;\n const backdropProps = useSlotProps({\n elementType: BackdropComponent,\n externalSlotProps: slotProps.backdrop,\n additionalProps: {\n 'aria-hidden': true,\n onClick: handleBackdropClick,\n open\n },\n className: classes.backdrop,\n ownerState\n });\n if (!keepMounted && !open && (!hasTransition || exited)) {\n return null;\n }\n return /*#__PURE__*/_jsx(Portal\n // @ts-expect-error TODO: include ref to MUI Base Portal props\n , {\n ref: handlePortalRef,\n container: container,\n disablePortal: disablePortal,\n children: /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, {\n children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/_jsx(BackdropComponent, _extends({}, backdropProps)) : null, /*#__PURE__*/_jsx(FocusTrap, {\n disableEnforceFocus: disableEnforceFocus,\n disableAutoFocus: disableAutoFocus,\n disableRestoreFocus: disableRestoreFocus,\n isEnabled: isTopModal,\n open: open,\n children: /*#__PURE__*/React.cloneElement(children, childProps)\n })]\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? ModalUnstyled.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * When set to true the Modal waits until a nested Transition is completed before closing.\n * @default false\n */\n closeAfterTransition: PropTypes.bool,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true`, the modal will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the modal will not prevent focus from leaving the modal while open.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, hitting escape will not fire the `onClose` callback.\n * @default false\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * If `true`, the modal will not restore focus to previously focused element once\n * modal is hidden or unmounted.\n * @default false\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Disable the scroll lock behavior.\n * @default false\n */\n disableScrollLock: PropTypes.bool,\n /**\n * If `true`, the backdrop is not rendered.\n * @default false\n */\n hideBackdrop: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Modal.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The props used for each slot inside the Modal.\n * @default {}\n */\n slotProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Modal.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n backdrop: PropTypes.elementType,\n root: PropTypes.elementType\n })\n} : void 0;\nexport default ModalUnstyled;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"addEndListener\", \"appear\", \"children\", \"easing\", \"in\", \"onEnter\", \"onEntered\", \"onEntering\", \"onExit\", \"onExited\", \"onExiting\", \"style\", \"timeout\", \"TransitionComponent\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Transition } from 'react-transition-group';\nimport { elementAcceptingRef } from '@mui/utils';\nimport useTheme from '../styles/useTheme';\nimport { reflow, getTransitionProps } from '../transitions/utils';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst styles = {\n entering: {\n opacity: 1\n },\n entered: {\n opacity: 1\n }\n};\n\n/**\n * The Fade transition is used by the [Modal](/material-ui/react-modal/) component.\n * It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally.\n */\nconst Fade = /*#__PURE__*/React.forwardRef(function Fade(props, ref) {\n const theme = useTheme();\n const defaultTimeout = {\n enter: theme.transitions.duration.enteringScreen,\n exit: theme.transitions.duration.leavingScreen\n };\n const {\n addEndListener,\n appear = true,\n children,\n easing,\n in: inProp,\n onEnter,\n onEntered,\n onEntering,\n onExit,\n onExited,\n onExiting,\n style,\n timeout = defaultTimeout,\n // eslint-disable-next-line react/prop-types\n TransitionComponent = Transition\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const enableStrictModeCompat = true;\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(nodeRef, children.ref, ref);\n const normalizedTransitionCallback = callback => maybeIsAppearing => {\n if (callback) {\n const node = nodeRef.current;\n\n // onEnterXxx and onExitXxx callbacks have a different arguments.length value.\n if (maybeIsAppearing === undefined) {\n callback(node);\n } else {\n callback(node, maybeIsAppearing);\n }\n }\n };\n const handleEntering = normalizedTransitionCallback(onEntering);\n const handleEnter = normalizedTransitionCallback((node, isAppearing) => {\n reflow(node); // So the animation always start from the start.\n\n const transitionProps = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'enter'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n if (onEnter) {\n onEnter(node, isAppearing);\n }\n });\n const handleEntered = normalizedTransitionCallback(onEntered);\n const handleExiting = normalizedTransitionCallback(onExiting);\n const handleExit = normalizedTransitionCallback(node => {\n const transitionProps = getTransitionProps({\n style,\n timeout,\n easing\n }, {\n mode: 'exit'\n });\n node.style.webkitTransition = theme.transitions.create('opacity', transitionProps);\n node.style.transition = theme.transitions.create('opacity', transitionProps);\n if (onExit) {\n onExit(node);\n }\n });\n const handleExited = normalizedTransitionCallback(onExited);\n const handleAddEndListener = next => {\n if (addEndListener) {\n // Old call signature before `react-transition-group` implemented `nodeRef`\n addEndListener(nodeRef.current, next);\n }\n };\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: appear,\n in: inProp,\n nodeRef: enableStrictModeCompat ? nodeRef : undefined,\n onEnter: handleEnter,\n onEntered: handleEntered,\n onEntering: handleEntering,\n onExit: handleExit,\n onExited: handleExited,\n onExiting: handleExiting,\n addEndListener: handleAddEndListener,\n timeout: timeout\n }, other, {\n children: (state, childProps) => {\n return /*#__PURE__*/React.cloneElement(children, _extends({\n style: _extends({\n opacity: 0,\n visibility: state === 'exited' && !inProp ? 'hidden' : undefined\n }, styles[state], style, children.props.style),\n ref: handleRef\n }, childProps));\n }\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Fade.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Add a custom transition end trigger. Called with the transitioning DOM\n * node and a done callback. Allows for more fine grained transition end\n * logic. Note: Timeouts are still used as a fallback if provided.\n */\n addEndListener: PropTypes.func,\n /**\n * Perform the enter transition when it first mounts if `in` is also `true`.\n * Set this to `false` to disable this behavior.\n * @default true\n */\n appear: PropTypes.bool,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * The transition timing function.\n * You may specify a single easing or a object containing enter and exit values.\n */\n easing: PropTypes.oneOfType([PropTypes.shape({\n enter: PropTypes.string,\n exit: PropTypes.string\n }), PropTypes.string]),\n /**\n * If `true`, the component will transition in.\n */\n in: PropTypes.bool,\n /**\n * @ignore\n */\n onEnter: PropTypes.func,\n /**\n * @ignore\n */\n onEntered: PropTypes.func,\n /**\n * @ignore\n */\n onEntering: PropTypes.func,\n /**\n * @ignore\n */\n onExit: PropTypes.func,\n /**\n * @ignore\n */\n onExited: PropTypes.func,\n /**\n * @ignore\n */\n onExiting: PropTypes.func,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n * @default {\n * enter: theme.transitions.duration.enteringScreen,\n * exit: theme.transitions.duration.leavingScreen,\n * }\n */\n timeout: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Fade;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBackdropUtilityClass(slot) {\n return generateUtilityClass('MuiBackdrop', slot);\n}\nconst backdropClasses = generateUtilityClasses('MuiBackdrop', ['root', 'invisible']);\nexport default backdropClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"components\", \"componentsProps\", \"invisible\", \"open\", \"slotProps\", \"slots\", \"TransitionComponent\", \"transitionDuration\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Fade from '../Fade';\nimport { getBackdropUtilityClass } from './backdropClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n invisible\n } = ownerState;\n const slots = {\n root: ['root', invisible && 'invisible']\n };\n return composeClasses(slots, getBackdropUtilityClass, classes);\n};\nconst BackdropRoot = styled('div', {\n name: 'MuiBackdrop',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.invisible && styles.invisible];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'fixed',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n right: 0,\n bottom: 0,\n top: 0,\n left: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n WebkitTapHighlightColor: 'transparent'\n}, ownerState.invisible && {\n backgroundColor: 'transparent'\n}));\nconst Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(inProps, ref) {\n var _slotProps$root, _ref, _slots$root;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiBackdrop'\n });\n const {\n children,\n className,\n component = 'div',\n components = {},\n componentsProps = {},\n invisible = false,\n open,\n slotProps = {},\n slots = {},\n TransitionComponent = Fade,\n transitionDuration\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n invisible\n });\n const classes = useUtilityClasses(ownerState);\n const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;\n return /*#__PURE__*/_jsx(TransitionComponent, _extends({\n in: open,\n timeout: transitionDuration\n }, other, {\n children: /*#__PURE__*/_jsx(BackdropRoot, _extends({\n \"aria-hidden\": true\n }, rootSlotProps, {\n as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,\n className: clsx(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),\n ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),\n classes: classes,\n ref: ref,\n children: children\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Backdrop.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * If `true`, the backdrop is invisible.\n * It can be used when rendering a popover or a custom select component.\n * @default false\n */\n invisible: PropTypes.bool,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Fade\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * The duration for the transition, in milliseconds.\n * You may specify a single timeout for all transitions, or individually with an object.\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })])\n} : void 0;\nexport default Backdrop;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"BackdropComponent\", \"BackdropProps\", \"classes\", \"className\", \"closeAfterTransition\", \"children\", \"component\", \"components\", \"componentsProps\", \"disableAutoFocus\", \"disableEnforceFocus\", \"disableEscapeKeyDown\", \"disablePortal\", \"disableRestoreFocus\", \"disableScrollLock\", \"hideBackdrop\", \"keepMounted\", \"slotProps\", \"slots\", \"theme\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ModalUnstyled, { modalUnstyledClasses } from '@mui/base/ModalUnstyled';\nimport { isHostComponent, resolveComponentProps } from '@mui/base/utils';\nimport { elementAcceptingRef, HTMLElementType } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Backdrop from '../Backdrop';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const modalClasses = modalUnstyledClasses;\nconst ModalRoot = styled('div', {\n name: 'MuiModal',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.open && ownerState.exited && styles.hidden];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'fixed',\n zIndex: (theme.vars || theme).zIndex.modal,\n right: 0,\n bottom: 0,\n top: 0,\n left: 0\n}, !ownerState.open && ownerState.exited && {\n visibility: 'hidden'\n}));\nconst ModalBackdrop = styled(Backdrop, {\n name: 'MuiModal',\n slot: 'Backdrop',\n overridesResolver: (props, styles) => {\n return styles.backdrop;\n }\n})({\n zIndex: -1\n});\n\n/**\n * Modal is a lower-level construct that is leveraged by the following components:\n *\n * - [Dialog](/material-ui/api/dialog/)\n * - [Drawer](/material-ui/api/drawer/)\n * - [Menu](/material-ui/api/menu/)\n * - [Popover](/material-ui/api/popover/)\n *\n * If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component\n * rather than directly using Modal.\n *\n * This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals).\n */\nconst Modal = /*#__PURE__*/React.forwardRef(function Modal(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;\n const props = useThemeProps({\n name: 'MuiModal',\n props: inProps\n });\n const {\n BackdropComponent = ModalBackdrop,\n BackdropProps,\n classes,\n className,\n closeAfterTransition = false,\n children,\n component,\n components = {},\n componentsProps = {},\n disableAutoFocus = false,\n disableEnforceFocus = false,\n disableEscapeKeyDown = false,\n disablePortal = false,\n disableRestoreFocus = false,\n disableScrollLock = false,\n hideBackdrop = false,\n keepMounted = false,\n slotProps,\n slots,\n // eslint-disable-next-line react/prop-types\n theme\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [exited, setExited] = React.useState(true);\n const commonProps = {\n closeAfterTransition,\n disableAutoFocus,\n disableEnforceFocus,\n disableEscapeKeyDown,\n disablePortal,\n disableRestoreFocus,\n disableScrollLock,\n hideBackdrop,\n keepMounted\n };\n const ownerState = _extends({}, props, commonProps, {\n exited\n });\n const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;\n const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;\n const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;\n const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;\n return /*#__PURE__*/_jsx(ModalUnstyled, _extends({\n slots: {\n root: RootSlot,\n backdrop: BackdropSlot\n },\n slotProps: {\n root: () => _extends({}, resolveComponentProps(rootSlotProps, ownerState), !isHostComponent(RootSlot) && {\n as: component,\n theme\n }, {\n className: clsx(className, rootSlotProps == null ? void 0 : rootSlotProps.className, classes == null ? void 0 : classes.root, !ownerState.open && ownerState.exited && (classes == null ? void 0 : classes.hidden))\n }),\n backdrop: () => _extends({}, BackdropProps, resolveComponentProps(backdropSlotProps, ownerState), {\n className: clsx(backdropSlotProps == null ? void 0 : backdropSlotProps.className, classes == null ? void 0 : classes.backdrop)\n })\n },\n onTransitionEnter: () => setExited(false),\n onTransitionExited: () => setExited(true),\n ref: ref\n }, other, commonProps, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Modal.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A backdrop component. This prop enables custom backdrop rendering.\n * @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.\n * Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.\n * @default styled(Backdrop, {\n * name: 'MuiModal',\n * slot: 'Backdrop',\n * overridesResolver: (props, styles) => {\n * return styles.backdrop;\n * },\n * })({\n * zIndex: -1,\n * })\n */\n BackdropComponent: PropTypes.elementType,\n /**\n * Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.\n * @deprecated Use `slotProps.backdrop` instead.\n */\n BackdropProps: PropTypes.object,\n /**\n * A single child content element.\n */\n children: elementAcceptingRef.isRequired,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * When set to true the Modal waits until a nested Transition is completed before closing.\n * @default false\n */\n closeAfterTransition: PropTypes.bool,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Backdrop: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * An HTML element or function that returns one.\n * The `container` will have the portal children appended to it.\n *\n * By default, it uses the body of the top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true`, the modal will not automatically shift focus to itself when it opens, and\n * replace it to the last focused element when it closes.\n * This also works correctly with any modal children that have the `disableAutoFocus` prop.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableAutoFocus: PropTypes.bool,\n /**\n * If `true`, the modal will not prevent focus from leaving the modal while open.\n *\n * Generally this should never be set to `true` as it makes the modal less\n * accessible to assistive technologies, like screen readers.\n * @default false\n */\n disableEnforceFocus: PropTypes.bool,\n /**\n * If `true`, hitting escape will not fire the `onClose` callback.\n * @default false\n */\n disableEscapeKeyDown: PropTypes.bool,\n /**\n * The `children` will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * If `true`, the modal will not restore focus to previously focused element once\n * modal is hidden or unmounted.\n * @default false\n */\n disableRestoreFocus: PropTypes.bool,\n /**\n * Disable the scroll lock behavior.\n * @default false\n */\n disableScrollLock: PropTypes.bool,\n /**\n * If `true`, the backdrop is not rendered.\n * @default false\n */\n hideBackdrop: PropTypes.bool,\n /**\n * Always keep the children in the DOM.\n * This prop can be useful in SEO situation or\n * when you want to maximize the responsiveness of the Modal.\n * @default false\n */\n keepMounted: PropTypes.bool,\n /**\n * Callback fired when the backdrop is clicked.\n * @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.\n */\n onBackdropClick: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * The props used for each slot inside the Modal.\n * @default {}\n */\n slotProps: PropTypes.shape({\n backdrop: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n root: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside the Modal.\n * Either a string to use a HTML element or a component.\n * @default {}\n */\n slots: PropTypes.shape({\n backdrop: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Modal;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getPopoverUtilityClass(slot) {\n return generateUtilityClass('MuiPopover', slot);\n}\nconst popoverClasses = generateUtilityClasses('MuiPopover', ['root', 'paper']);\nexport default popoverClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n _excluded2 = [\"action\", \"anchorEl\", \"anchorOrigin\", \"anchorPosition\", \"anchorReference\", \"children\", \"className\", \"container\", \"elevation\", \"marginThreshold\", \"open\", \"PaperProps\", \"transformOrigin\", \"TransitionComponent\", \"transitionDuration\", \"TransitionProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { chainPropTypes, integerPropType, elementTypeAcceptingRef, refType, HTMLElementType } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport debounce from '../utils/debounce';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport useForkRef from '../utils/useForkRef';\nimport Grow from '../Grow';\nimport Modal from '../Modal';\nimport Paper from '../Paper';\nimport { getPopoverUtilityClass } from './popoverClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function getOffsetTop(rect, vertical) {\n let offset = 0;\n if (typeof vertical === 'number') {\n offset = vertical;\n } else if (vertical === 'center') {\n offset = rect.height / 2;\n } else if (vertical === 'bottom') {\n offset = rect.height;\n }\n return offset;\n}\nexport function getOffsetLeft(rect, horizontal) {\n let offset = 0;\n if (typeof horizontal === 'number') {\n offset = horizontal;\n } else if (horizontal === 'center') {\n offset = rect.width / 2;\n } else if (horizontal === 'right') {\n offset = rect.width;\n }\n return offset;\n}\nfunction getTransformOriginValue(transformOrigin) {\n return [transformOrigin.horizontal, transformOrigin.vertical].map(n => typeof n === 'number' ? `${n}px` : n).join(' ');\n}\nfunction resolveAnchorEl(anchorEl) {\n return typeof anchorEl === 'function' ? anchorEl() : anchorEl;\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper']\n };\n return composeClasses(slots, getPopoverUtilityClass, classes);\n};\nconst PopoverRoot = styled(Modal, {\n name: 'MuiPopover',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst PopoverPaper = styled(Paper, {\n name: 'MuiPopover',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})({\n position: 'absolute',\n overflowY: 'auto',\n overflowX: 'hidden',\n // So we see the popover when it's empty.\n // It's most likely on issue on userland.\n minWidth: 16,\n minHeight: 16,\n maxWidth: 'calc(100% - 32px)',\n maxHeight: 'calc(100% - 32px)',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n});\nconst Popover = /*#__PURE__*/React.forwardRef(function Popover(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiPopover'\n });\n const {\n action,\n anchorEl,\n anchorOrigin = {\n vertical: 'top',\n horizontal: 'left'\n },\n anchorPosition,\n anchorReference = 'anchorEl',\n children,\n className,\n container: containerProp,\n elevation = 8,\n marginThreshold = 16,\n open,\n PaperProps = {},\n transformOrigin = {\n vertical: 'top',\n horizontal: 'left'\n },\n TransitionComponent = Grow,\n transitionDuration: transitionDurationProp = 'auto',\n TransitionProps: {\n onEntering\n } = {}\n } = props,\n TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const paperRef = React.useRef();\n const handlePaperRef = useForkRef(paperRef, PaperProps.ref);\n const ownerState = _extends({}, props, {\n anchorOrigin,\n anchorReference,\n elevation,\n marginThreshold,\n PaperProps,\n transformOrigin,\n TransitionComponent,\n transitionDuration: transitionDurationProp,\n TransitionProps\n });\n const classes = useUtilityClasses(ownerState);\n\n // Returns the top/left offset of the position\n // to attach to on the anchor element (or body if none is provided)\n const getAnchorOffset = React.useCallback(() => {\n if (anchorReference === 'anchorPosition') {\n if (process.env.NODE_ENV !== 'production') {\n if (!anchorPosition) {\n console.error('MUI: You need to provide a `anchorPosition` prop when using ' + '<Popover anchorReference=\"anchorPosition\" />.');\n }\n }\n return anchorPosition;\n }\n const resolvedAnchorEl = resolveAnchorEl(anchorEl);\n\n // If an anchor element wasn't provided, just use the parent body element of this Popover\n const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument(paperRef.current).body;\n const anchorRect = anchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'production') {\n const box = anchorElement.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n console.warn(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n }\n return {\n top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),\n left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)\n };\n }, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);\n\n // Returns the base transform origin using the element\n const getTransformOrigin = React.useCallback(elemRect => {\n return {\n vertical: getOffsetTop(elemRect, transformOrigin.vertical),\n horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)\n };\n }, [transformOrigin.horizontal, transformOrigin.vertical]);\n const getPositioningStyle = React.useCallback(element => {\n const elemRect = {\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n\n // Get the transform origin point on the element itself\n const elemTransformOrigin = getTransformOrigin(elemRect);\n if (anchorReference === 'none') {\n return {\n top: null,\n left: null,\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n }\n\n // Get the offset of the anchoring element\n const anchorOffset = getAnchorOffset();\n\n // Calculate element positioning\n let top = anchorOffset.top - elemTransformOrigin.vertical;\n let left = anchorOffset.left - elemTransformOrigin.horizontal;\n const bottom = top + elemRect.height;\n const right = left + elemRect.width;\n\n // Use the parent window of the anchorEl if provided\n const containerWindow = ownerWindow(resolveAnchorEl(anchorEl));\n\n // Window thresholds taking required margin into account\n const heightThreshold = containerWindow.innerHeight - marginThreshold;\n const widthThreshold = containerWindow.innerWidth - marginThreshold;\n\n // Check if the vertical axis needs shifting\n if (top < marginThreshold) {\n const diff = top - marginThreshold;\n top -= diff;\n elemTransformOrigin.vertical += diff;\n } else if (bottom > heightThreshold) {\n const diff = bottom - heightThreshold;\n top -= diff;\n elemTransformOrigin.vertical += diff;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {\n console.error(['MUI: The popover component is too tall.', `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, 'Please consider adding a `max-height` to improve the user-experience.'].join('\\n'));\n }\n }\n\n // Check if the horizontal axis needs shifting\n if (left < marginThreshold) {\n const diff = left - marginThreshold;\n left -= diff;\n elemTransformOrigin.horizontal += diff;\n } else if (right > widthThreshold) {\n const diff = right - widthThreshold;\n left -= diff;\n elemTransformOrigin.horizontal += diff;\n }\n return {\n top: `${Math.round(top)}px`,\n left: `${Math.round(left)}px`,\n transformOrigin: getTransformOriginValue(elemTransformOrigin)\n };\n }, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);\n const [isPositioned, setIsPositioned] = React.useState(open);\n const setPositioningStyles = React.useCallback(() => {\n const element = paperRef.current;\n if (!element) {\n return;\n }\n const positioning = getPositioningStyle(element);\n if (positioning.top !== null) {\n element.style.top = positioning.top;\n }\n if (positioning.left !== null) {\n element.style.left = positioning.left;\n }\n element.style.transformOrigin = positioning.transformOrigin;\n setIsPositioned(true);\n }, [getPositioningStyle]);\n const handleEntering = (element, isAppearing) => {\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n setPositioningStyles();\n };\n const handleExited = () => {\n setIsPositioned(false);\n };\n React.useEffect(() => {\n if (open) {\n setPositioningStyles();\n }\n });\n React.useImperativeHandle(action, () => open ? {\n updatePosition: () => {\n setPositioningStyles();\n }\n } : null, [open, setPositioningStyles]);\n React.useEffect(() => {\n if (!open) {\n return undefined;\n }\n const handleResize = debounce(() => {\n setPositioningStyles();\n });\n const containerWindow = ownerWindow(anchorEl);\n containerWindow.addEventListener('resize', handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n };\n }, [anchorEl, open, setPositioningStyles]);\n let transitionDuration = transitionDurationProp;\n if (transitionDurationProp === 'auto' && !TransitionComponent.muiSupportAuto) {\n transitionDuration = undefined;\n }\n\n // If the container prop is provided, use that\n // If the anchorEl prop is provided, use its parent body element as the container\n // If neither are provided let the Modal take care of choosing the container\n const container = containerProp || (anchorEl ? ownerDocument(resolveAnchorEl(anchorEl)).body : undefined);\n return /*#__PURE__*/_jsx(PopoverRoot, _extends({\n BackdropProps: {\n invisible: true\n },\n className: clsx(classes.root, className),\n container: container,\n open: open,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(TransitionComponent, _extends({\n appear: true,\n in: open,\n onEntering: handleEntering,\n onExited: handleExited,\n timeout: transitionDuration\n }, TransitionProps, {\n children: /*#__PURE__*/_jsx(PopoverPaper, _extends({\n elevation: elevation\n }, PaperProps, {\n ref: handlePaperRef,\n className: clsx(classes.paper, PaperProps.className)\n }, isPositioned ? undefined : {\n style: _extends({}, PaperProps.style, {\n opacity: 0\n })\n }, {\n ownerState: ownerState,\n children: children\n }))\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Popover.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * A ref for imperative actions.\n * It currently only supports updatePosition() action.\n */\n action: refType,\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the position of the popover.\n */\n anchorEl: chainPropTypes(PropTypes.oneOfType([HTMLElementType, PropTypes.func]), props => {\n if (props.open && (!props.anchorReference || props.anchorReference === 'anchorEl')) {\n const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);\n if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {\n const box = resolvedAnchorEl.getBoundingClientRect();\n if (process.env.NODE_ENV !== 'test' && box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', 'The anchor element should be part of the document layout.', \"Make sure the element is present in the document or that it's not display none.\"].join('\\n'));\n }\n } else {\n return new Error(['MUI: The `anchorEl` prop provided to the component is invalid.', `It should be an Element instance but it's \\`${resolvedAnchorEl}\\` instead.`].join('\\n'));\n }\n }\n return null;\n }),\n /**\n * This is the point on the anchor where the popover's\n * `anchorEl` will attach to. This is not used when the\n * anchorReference is 'anchorPosition'.\n *\n * Options:\n * vertical: [top, center, bottom];\n * horizontal: [left, center, right].\n * @default {\n * vertical: 'top',\n * horizontal: 'left',\n * }\n */\n anchorOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n }),\n /**\n * This is the position that may be used to set the position of the popover.\n * The coordinates are relative to the application's client area.\n */\n anchorPosition: PropTypes.shape({\n left: PropTypes.number.isRequired,\n top: PropTypes.number.isRequired\n }),\n /**\n * This determines which anchor prop to refer to when setting\n * the position of the popover.\n * @default 'anchorEl'\n */\n anchorReference: PropTypes.oneOf(['anchorEl', 'anchorPosition', 'none']),\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * An HTML element, component instance, or function that returns either.\n * The `container` will passed to the Modal component.\n *\n * By default, it uses the body of the anchorEl's top-level document object,\n * so it's simply `document.body` most of the time.\n */\n container: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * The elevation of the popover.\n * @default 8\n */\n elevation: integerPropType,\n /**\n * Specifies how close to the edge of the window the popover can appear.\n * @default 16\n */\n marginThreshold: PropTypes.number,\n /**\n * Callback fired when the component requests to be closed.\n * The `reason` parameter can optionally be used to control the response to `onClose`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * Props applied to the [`Paper`](/material-ui/api/paper/) element.\n * @default {}\n */\n PaperProps: PropTypes /* @typescript-to-proptypes-ignore */.shape({\n component: elementTypeAcceptingRef\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * This is the point on the popover which\n * will attach to the anchor's origin.\n *\n * Options:\n * vertical: [top, center, bottom, x(px)];\n * horizontal: [left, center, right, x(px)].\n * @default {\n * vertical: 'top',\n * horizontal: 'left',\n * }\n */\n transformOrigin: PropTypes.shape({\n horizontal: PropTypes.oneOfType([PropTypes.oneOf(['center', 'left', 'right']), PropTypes.number]).isRequired,\n vertical: PropTypes.oneOfType([PropTypes.oneOf(['bottom', 'center', 'top']), PropTypes.number]).isRequired\n }),\n /**\n * The component used for the transition.\n * [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.\n * @default Grow\n */\n TransitionComponent: PropTypes.elementType,\n /**\n * Set to 'auto' to automatically calculate transition time based on height.\n * @default 'auto'\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: PropTypes.object\n} : void 0;\nexport default Popover;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuUtilityClass(slot) {\n return generateUtilityClass('MuiMenu', slot);\n}\nconst menuClasses = generateUtilityClasses('MuiMenu', ['root', 'paper', 'list']);\nexport default menuClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onEntering\"],\n _excluded2 = [\"autoFocus\", \"children\", \"disableAutoFocusItem\", \"MenuListProps\", \"onClose\", \"open\", \"PaperProps\", \"PopoverClasses\", \"transitionDuration\", \"TransitionProps\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { HTMLElementType } from '@mui/utils';\nimport MenuList from '../MenuList';\nimport Paper from '../Paper';\nimport Popover from '../Popover';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useTheme from '../styles/useTheme';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getMenuUtilityClass } from './menuClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst RTL_ORIGIN = {\n vertical: 'top',\n horizontal: 'right'\n};\nconst LTR_ORIGIN = {\n vertical: 'top',\n horizontal: 'left'\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n paper: ['paper'],\n list: ['list']\n };\n return composeClasses(slots, getMenuUtilityClass, classes);\n};\nconst MenuRoot = styled(Popover, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenu',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\nconst MenuPaper = styled(Paper, {\n name: 'MuiMenu',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})({\n // specZ: The maximum height of a simple menu should be one or more rows less than the view\n // height. This ensures a tapable area outside of the simple menu with which to dismiss\n // the menu.\n maxHeight: 'calc(100% - 96px)',\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch'\n});\nconst MenuMenuList = styled(MenuList, {\n name: 'MuiMenu',\n slot: 'List',\n overridesResolver: (props, styles) => styles.list\n})({\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0\n});\nconst Menu = /*#__PURE__*/React.forwardRef(function Menu(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMenu'\n });\n const {\n autoFocus = true,\n children,\n disableAutoFocusItem = false,\n MenuListProps = {},\n onClose,\n open,\n PaperProps = {},\n PopoverClasses,\n transitionDuration = 'auto',\n TransitionProps: {\n onEntering\n } = {},\n variant = 'selectedMenu'\n } = props,\n TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded),\n other = _objectWithoutPropertiesLoose(props, _excluded2);\n const theme = useTheme();\n const isRtl = theme.direction === 'rtl';\n const ownerState = _extends({}, props, {\n autoFocus,\n disableAutoFocusItem,\n MenuListProps,\n onEntering,\n PaperProps,\n transitionDuration,\n TransitionProps,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const autoFocusItem = autoFocus && !disableAutoFocusItem && open;\n const menuListActionsRef = React.useRef(null);\n const handleEntering = (element, isAppearing) => {\n if (menuListActionsRef.current) {\n menuListActionsRef.current.adjustStyleForScrollbar(element, theme);\n }\n if (onEntering) {\n onEntering(element, isAppearing);\n }\n };\n const handleListKeyDown = event => {\n if (event.key === 'Tab') {\n event.preventDefault();\n if (onClose) {\n onClose(event, 'tabKeyDown');\n }\n }\n };\n\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n let activeItemIndex = -1;\n // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n React.Children.map(children, (child, index) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n return /*#__PURE__*/_jsx(MenuRoot, _extends({\n onClose: onClose,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: isRtl ? 'right' : 'left'\n },\n transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,\n PaperProps: _extends({\n as: MenuPaper\n }, PaperProps, {\n classes: _extends({}, PaperProps.classes, {\n root: classes.paper\n })\n }),\n className: classes.root,\n open: open,\n ref: ref,\n transitionDuration: transitionDuration,\n TransitionProps: _extends({\n onEntering: handleEntering\n }, TransitionProps),\n ownerState: ownerState\n }, other, {\n classes: PopoverClasses,\n children: /*#__PURE__*/_jsx(MenuMenuList, _extends({\n onKeyDown: handleListKeyDown,\n actions: menuListActionsRef,\n autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),\n autoFocusItem: autoFocusItem,\n variant: variant\n }, MenuListProps, {\n className: clsx(classes.list, MenuListProps.className),\n children: children\n }))\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Menu.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * An HTML element, or a function that returns one.\n * It's used to set the position of the menu.\n */\n anchorEl: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([HTMLElementType, PropTypes.func]),\n /**\n * If `true` (Default) will focus the `[role=\"menu\"]` if no focusable child is found. Disabled\n * children are not focusable. If you set this prop to `false` focus will be placed\n * on the parent modal container. This has severe accessibility implications\n * and should only be considered if you manage focus otherwise.\n * @default true\n */\n autoFocus: PropTypes.bool,\n /**\n * Menu contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * When opening the menu will not focus the active item but the `[role=\"menu\"]`\n * unless `autoFocus` is also set to `false`. Not using the default means not\n * following WAI-ARIA authoring practices. Please be considerate about possible\n * accessibility implications.\n * @default false\n */\n disableAutoFocusItem: PropTypes.bool,\n /**\n * Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.\n * @default {}\n */\n MenuListProps: PropTypes.object,\n /**\n * Callback fired when the component requests to be closed.\n *\n * @param {object} event The event source of the callback.\n * @param {string} reason Can be: `\"escapeKeyDown\"`, `\"backdropClick\"`, `\"tabKeyDown\"`.\n */\n onClose: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n PaperProps: PropTypes.object,\n /**\n * `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.\n */\n PopoverClasses: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The length of the transition in `ms`, or 'auto'\n * @default 'auto'\n */\n transitionDuration: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.number, PropTypes.shape({\n appear: PropTypes.number,\n enter: PropTypes.number,\n exit: PropTypes.number\n })]),\n /**\n * Props applied to the transition element.\n * By default, the element is based on this [`Transition`](http://reactcommunity.org/react-transition-group/transition/) component.\n * @default {}\n */\n TransitionProps: PropTypes.object,\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus.\n * @default 'selectedMenu'\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default Menu;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getDividerUtilityClass(slot) {\n return generateUtilityClass('MuiDivider', slot);\n}\nconst dividerClasses = generateUtilityClasses('MuiDivider', ['root', 'absolute', 'fullWidth', 'inset', 'middle', 'flexItem', 'light', 'vertical', 'withChildren', 'withChildrenVertical', 'textAlignRight', 'textAlignLeft', 'wrapper', 'wrapperVertical']);\nexport default dividerClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemIconUtilityClass(slot) {\n return generateUtilityClass('MuiListItemIcon', slot);\n}\nconst listItemIconClasses = generateUtilityClasses('MuiListItemIcon', ['root', 'alignItemsFlexStart']);\nexport default listItemIconClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListItemTextUtilityClass(slot) {\n return generateUtilityClass('MuiListItemText', slot);\n}\nconst listItemTextClasses = generateUtilityClasses('MuiListItemText', ['root', 'multiline', 'dense', 'inset', 'primary', 'secondary']);\nexport default listItemTextClasses;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getMenuItemUtilityClass(slot) {\n return generateUtilityClass('MuiMenuItem', slot);\n}\nconst menuItemClasses = generateUtilityClasses('MuiMenuItem', ['root', 'focusVisible', 'dense', 'disabled', 'divider', 'gutters', 'selected']);\nexport default menuItemClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"autoFocus\", \"component\", \"dense\", \"divider\", \"disableGutters\", \"focusVisibleClassName\", \"role\", \"tabIndex\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ListContext from '../List/ListContext';\nimport ButtonBase from '../ButtonBase';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport useForkRef from '../utils/useForkRef';\nimport { dividerClasses } from '../Divider';\nimport { listItemIconClasses } from '../ListItemIcon';\nimport { listItemTextClasses } from '../ListItemText';\nimport menuItemClasses, { getMenuItemUtilityClass } from './menuItemClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport const overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.dense && styles.dense, ownerState.divider && styles.divider, !ownerState.disableGutters && styles.gutters];\n};\nconst useUtilityClasses = ownerState => {\n const {\n disabled,\n dense,\n divider,\n disableGutters,\n selected,\n classes\n } = ownerState;\n const slots = {\n root: ['root', dense && 'dense', disabled && 'disabled', !disableGutters && 'gutters', divider && 'divider', selected && 'selected']\n };\n const composedClasses = composeClasses(slots, getMenuItemUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst MenuItemRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiMenuItem',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body1, {\n display: 'flex',\n justifyContent: 'flex-start',\n alignItems: 'center',\n position: 'relative',\n textDecoration: 'none',\n minHeight: 48,\n paddingTop: 6,\n paddingBottom: 6,\n boxSizing: 'border-box',\n whiteSpace: 'nowrap'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.divider && {\n borderBottom: `1px solid ${(theme.vars || theme).palette.divider}`,\n backgroundClip: 'padding-box'\n}, {\n '&:hover': {\n textDecoration: 'none',\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${menuItemClasses.selected}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n },\n [`&.${menuItemClasses.selected}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity)\n }\n },\n [`&.${menuItemClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`&.${menuItemClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity\n },\n [`& + .${dividerClasses.root}`]: {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n },\n [`& + .${dividerClasses.inset}`]: {\n marginLeft: 52\n },\n [`& .${listItemTextClasses.root}`]: {\n marginTop: 0,\n marginBottom: 0\n },\n [`& .${listItemTextClasses.inset}`]: {\n paddingLeft: 36\n },\n [`& .${listItemIconClasses.root}`]: {\n minWidth: 36\n }\n}, !ownerState.dense && {\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n }\n}, ownerState.dense && _extends({\n minHeight: 32,\n // https://m2.material.io/components/menus#specs > Dense\n paddingTop: 4,\n paddingBottom: 4\n}, theme.typography.body2, {\n [`& .${listItemIconClasses.root} svg`]: {\n fontSize: '1.25rem'\n }\n})));\nconst MenuItem = /*#__PURE__*/React.forwardRef(function MenuItem(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiMenuItem'\n });\n const {\n autoFocus = false,\n component = 'li',\n dense = false,\n divider = false,\n disableGutters = false,\n focusVisibleClassName,\n role = 'menuitem',\n tabIndex: tabIndexProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const context = React.useContext(ListContext);\n const childContext = React.useMemo(() => ({\n dense: dense || context.dense || false,\n disableGutters\n }), [context.dense, dense, disableGutters]);\n const menuItemRef = React.useRef(null);\n useEnhancedEffect(() => {\n if (autoFocus) {\n if (menuItemRef.current) {\n menuItemRef.current.focus();\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('MUI: Unable to set focus to a MenuItem whose component has not been rendered.');\n }\n }\n }, [autoFocus]);\n const ownerState = _extends({}, props, {\n dense: childContext.dense,\n divider,\n disableGutters\n });\n const classes = useUtilityClasses(props);\n const handleRef = useForkRef(menuItemRef, ref);\n let tabIndex;\n if (!props.disabled) {\n tabIndex = tabIndexProp !== undefined ? tabIndexProp : -1;\n }\n return /*#__PURE__*/_jsx(ListContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(MenuItemRoot, _extends({\n ref: handleRef,\n role: role,\n tabIndex: tabIndex,\n component: component,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n className: clsx(classes.root, className)\n }, other, {\n ownerState: ownerState,\n classes: classes\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuItem.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the list item is focused during the first mount.\n * Focus will also be triggered if the value changes from false to true.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, compact vertical padding designed for keyboard and mouse input is used.\n * The prop defaults to the value inherited from the parent Menu component.\n * @default false\n */\n dense: PropTypes.bool,\n /**\n * @ignore\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the left and right padding is removed.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, a 1px light border is added to the bottom of the menu item.\n * @default false\n */\n divider: PropTypes.bool,\n /**\n * This prop can help identify which element has keyboard focus.\n * The class name will be applied when the element gains the focus through keyboard interaction.\n * It's a polyfill for the [CSS :focus-visible selector](https://drafts.csswg.org/selectors-4/#the-focus-visible-pseudo).\n * The rationale for using this feature [is explained here](https://github.com/WICG/focus-visible/blob/HEAD/explainer.md).\n * A [polyfill can be used](https://github.com/WICG/focus-visible) to apply a `focus-visible` class to other components\n * if needed.\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * If `true`, the component is selected.\n * @default false\n */\n selected: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @default 0\n */\n tabIndex: PropTypes.number\n} : void 0;\nexport default MenuItem;","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { registerVersion } from '@firebase/app';\nimport { name, version } from '../package.json';\n\nregisterVersion(name, version, 'app');\nexport * from '@firebase/app';\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { version } from '../../package.json';\n\nexport const PENDING_TIMEOUT_MS = 10000;\n\nexport const PACKAGE_VERSION = `w:${version}`;\nexport const INTERNAL_AUTH_VERSION = 'FIS_v2';\n\nexport const INSTALLATIONS_API_URL =\n 'https://firebaseinstallations.googleapis.com/v1';\n\nexport const TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\n\nexport const SERVICE = 'installations';\nexport const SERVICE_NAME = 'Installations';\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { SERVICE, SERVICE_NAME } from './constants';\n\nexport const enum ErrorCode {\n MISSING_APP_CONFIG_VALUES = 'missing-app-config-values',\n NOT_REGISTERED = 'not-registered',\n INSTALLATION_NOT_FOUND = 'installation-not-found',\n REQUEST_FAILED = 'request-failed',\n APP_OFFLINE = 'app-offline',\n DELETE_PENDING_REGISTRATION = 'delete-pending-registration'\n}\n\nconst ERROR_DESCRIPTION_MAP: { readonly [key in ErrorCode]: string } = {\n [ErrorCode.MISSING_APP_CONFIG_VALUES]:\n 'Missing App configuration value: \"{$valueName}\"',\n [ErrorCode.NOT_REGISTERED]: 'Firebase Installation is not registered.',\n [ErrorCode.INSTALLATION_NOT_FOUND]: 'Firebase Installation not found.',\n [ErrorCode.REQUEST_FAILED]:\n '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\n [ErrorCode.APP_OFFLINE]: 'Could not process request. Application offline.',\n [ErrorCode.DELETE_PENDING_REGISTRATION]:\n \"Can't delete installation while there is a pending registration request.\"\n};\n\ninterface ErrorParams {\n [ErrorCode.MISSING_APP_CONFIG_VALUES]: {\n valueName: string;\n };\n [ErrorCode.REQUEST_FAILED]: {\n requestName: string;\n [index: string]: string | number; // to make Typescript 3.8 happy\n } & ServerErrorData;\n}\n\nexport const ERROR_FACTORY = new ErrorFactory<ErrorCode, ErrorParams>(\n SERVICE,\n SERVICE_NAME,\n ERROR_DESCRIPTION_MAP\n);\n\nexport interface ServerErrorData {\n serverCode: number;\n serverMessage: string;\n serverStatus: string;\n}\n\nexport type ServerError = FirebaseError & { customData: ServerErrorData };\n\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\nexport function isServerError(error: unknown): error is ServerError {\n return (\n error instanceof FirebaseError &&\n error.code.includes(ErrorCode.REQUEST_FAILED)\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseError } from '@firebase/util';\nimport { GenerateAuthTokenResponse } from '../interfaces/api-response';\nimport {\n CompletedAuthToken,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport {\n INSTALLATIONS_API_URL,\n INTERNAL_AUTH_VERSION\n} from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\nimport { AppConfig } from '../interfaces/installation-impl';\n\nexport function getInstallationsEndpoint({ projectId }: AppConfig): string {\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\n}\n\nexport function extractAuthTokenInfoFromResponse(\n response: GenerateAuthTokenResponse\n): CompletedAuthToken {\n return {\n token: response.token,\n requestStatus: RequestStatus.COMPLETED,\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\n creationTime: Date.now()\n };\n}\n\nexport async function getErrorFromResponse(\n requestName: string,\n response: Response\n): Promise<FirebaseError> {\n const responseJson: ErrorResponse = await response.json();\n const errorData = responseJson.error;\n return ERROR_FACTORY.create(ErrorCode.REQUEST_FAILED, {\n requestName,\n serverCode: errorData.code,\n serverMessage: errorData.message,\n serverStatus: errorData.status\n });\n}\n\nexport function getHeaders({ apiKey }: AppConfig): Headers {\n return new Headers({\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'x-goog-api-key': apiKey\n });\n}\n\nexport function getHeadersWithAuth(\n appConfig: AppConfig,\n { refreshToken }: RegisteredInstallationEntry\n): Headers {\n const headers = getHeaders(appConfig);\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\n return headers;\n}\n\nexport interface ErrorResponse {\n error: {\n code: number;\n message: string;\n status: string;\n };\n}\n\n/**\n * Calls the passed in fetch wrapper and returns the response.\n * If the returned response has a status of 5xx, re-runs the function once and\n * returns the response.\n */\nexport async function retryIfServerError(\n fn: () => Promise<Response>\n): Promise<Response> {\n const result = await fn();\n\n if (result.status >= 500 && result.status < 600) {\n // Internal Server Error. Retry request.\n return fn();\n }\n\n return result;\n}\n\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn: string): number {\n // This works because the server will never respond with fractions of a second.\n return Number(responseExpiresIn.replace('s', '000'));\n}\n\nfunction getAuthorizationHeader(refreshToken: string): string {\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CreateInstallationResponse } from '../interfaces/api-response';\nimport {\n InProgressInstallationEntry,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport { INTERNAL_AUTH_VERSION, PACKAGE_VERSION } from '../util/constants';\nimport {\n extractAuthTokenInfoFromResponse,\n getErrorFromResponse,\n getHeaders,\n getInstallationsEndpoint,\n retryIfServerError\n} from './common';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\n\nexport async function createInstallationRequest(\n { appConfig, heartbeatServiceProvider }: FirebaseInstallationsImpl,\n { fid }: InProgressInstallationEntry\n): Promise<RegisteredInstallationEntry> {\n const endpoint = getInstallationsEndpoint(appConfig);\n\n const headers = getHeaders(appConfig);\n\n // If heartbeat service exists, add the heartbeat string to the header.\n const heartbeatService = heartbeatServiceProvider.getImmediate({\n optional: true\n });\n if (heartbeatService) {\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers.append('x-firebase-client', heartbeatsHeader);\n }\n }\n\n const body = {\n fid,\n authVersion: INTERNAL_AUTH_VERSION,\n appId: appConfig.appId,\n sdkVersion: PACKAGE_VERSION\n };\n\n const request: RequestInit = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue: CreateInstallationResponse = await response.json();\n const registeredInstallationEntry: RegisteredInstallationEntry = {\n fid: responseValue.fid || fid,\n registrationStatus: RequestStatus.COMPLETED,\n refreshToken: responseValue.refreshToken,\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\n };\n return registeredInstallationEntry;\n } else {\n throw await getErrorFromResponse('Create Installation', response);\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** Returns a promise that resolves after given time passes. */\nexport function sleep(ms: number): Promise<void> {\n return new Promise<void>(resolve => {\n setTimeout(resolve, ms);\n });\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { bufferToBase64UrlSafe } from './buffer-to-base64-url-safe';\n\nexport const VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\nexport const INVALID_FID = '';\n\n/**\n * Generates a new FID using random values from Web Crypto API.\n * Returns an empty string if FID generation fails for any reason.\n */\nexport function generateFid(): string {\n try {\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\n // bytes. our implementation generates a 17 byte array instead.\n const fidByteArray = new Uint8Array(17);\n const crypto =\n self.crypto || (self as unknown as { msCrypto: Crypto }).msCrypto;\n crypto.getRandomValues(fidByteArray);\n\n // Replace the first 4 random bits with the constant FID header of 0b0111.\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\n\n const fid = encode(fidByteArray);\n\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\n } catch {\n // FID generation errored\n return INVALID_FID;\n }\n}\n\n/** Converts a FID Uint8Array to a base64 string representation. */\nfunction encode(fidByteArray: Uint8Array): string {\n const b64String = bufferToBase64UrlSafe(fidByteArray);\n\n // Remove the 23rd character that was added because of the extra 4 bits at the\n // end of our 17 byte array, and the '=' padding.\n return b64String.substr(0, 22);\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport function bufferToBase64UrlSafe(array: Uint8Array): string {\n const b64 = btoa(String.fromCharCode(...array));\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AppConfig } from '../interfaces/installation-impl';\n\n/** Returns a string key that can be used to identify the app. */\nexport function getKey(appConfig: AppConfig): string {\n return `${appConfig.appName}!${appConfig.appId}`;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getKey } from '../util/get-key';\nimport { AppConfig } from '../interfaces/installation-impl';\nimport { IdChangeCallbackFn } from '../api';\n\nconst fidChangeCallbacks: Map<string, Set<IdChangeCallbackFn>> = new Map();\n\n/**\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\n * change to other tabs.\n */\nexport function fidChanged(appConfig: AppConfig, fid: string): void {\n const key = getKey(appConfig);\n\n callFidChangeCallbacks(key, fid);\n broadcastFidChange(key, fid);\n}\n\nexport function addCallback(\n appConfig: AppConfig,\n callback: IdChangeCallbackFn\n): void {\n // Open the broadcast channel if it's not already open,\n // to be able to listen to change events from other tabs.\n getBroadcastChannel();\n\n const key = getKey(appConfig);\n\n let callbackSet = fidChangeCallbacks.get(key);\n if (!callbackSet) {\n callbackSet = new Set();\n fidChangeCallbacks.set(key, callbackSet);\n }\n callbackSet.add(callback);\n}\n\nexport function removeCallback(\n appConfig: AppConfig,\n callback: IdChangeCallbackFn\n): void {\n const key = getKey(appConfig);\n\n const callbackSet = fidChangeCallbacks.get(key);\n\n if (!callbackSet) {\n return;\n }\n\n callbackSet.delete(callback);\n if (callbackSet.size === 0) {\n fidChangeCallbacks.delete(key);\n }\n\n // Close broadcast channel if there are no more callbacks.\n closeBroadcastChannel();\n}\n\nfunction callFidChangeCallbacks(key: string, fid: string): void {\n const callbacks = fidChangeCallbacks.get(key);\n if (!callbacks) {\n return;\n }\n\n for (const callback of callbacks) {\n callback(fid);\n }\n}\n\nfunction broadcastFidChange(key: string, fid: string): void {\n const channel = getBroadcastChannel();\n if (channel) {\n channel.postMessage({ key, fid });\n }\n closeBroadcastChannel();\n}\n\nlet broadcastChannel: BroadcastChannel | null = null;\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\nfunction getBroadcastChannel(): BroadcastChannel | null {\n if (!broadcastChannel && 'BroadcastChannel' in self) {\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\n broadcastChannel.onmessage = e => {\n callFidChangeCallbacks(e.data.key, e.data.fid);\n };\n }\n return broadcastChannel;\n}\n\nfunction closeBroadcastChannel(): void {\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\n broadcastChannel.close();\n broadcastChannel = null;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DBSchema, IDBPDatabase, openDB } from 'idb';\nimport { AppConfig } from '../interfaces/installation-impl';\nimport { InstallationEntry } from '../interfaces/installation-entry';\nimport { getKey } from '../util/get-key';\nimport { fidChanged } from './fid-changed';\n\nconst DATABASE_NAME = 'firebase-installations-database';\nconst DATABASE_VERSION = 1;\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\n\ninterface InstallationsDB extends DBSchema {\n 'firebase-installations-store': {\n key: string;\n value: InstallationEntry | undefined;\n };\n}\n\nlet dbPromise: Promise<IDBPDatabase<InstallationsDB>> | null = null;\nfunction getDbPromise(): Promise<IDBPDatabase<InstallationsDB>> {\n if (!dbPromise) {\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\n upgrade: (db, oldVersion) => {\n // We don't use 'break' in this switch statement, the fall-through\n // behavior is what we want, because if there are multiple versions between\n // the old version and the current version, we want ALL the migrations\n // that correspond to those versions to run, not only the last one.\n // eslint-disable-next-line default-case\n switch (oldVersion) {\n case 0:\n db.createObjectStore(OBJECT_STORE_NAME);\n }\n }\n });\n }\n return dbPromise;\n}\n\n/** Gets record(s) from the objectStore that match the given key. */\nexport async function get(\n appConfig: AppConfig\n): Promise<InstallationEntry | undefined> {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n return db\n .transaction(OBJECT_STORE_NAME)\n .objectStore(OBJECT_STORE_NAME)\n .get(key) as Promise<InstallationEntry>;\n}\n\n/** Assigns or overwrites the record for the given key with the given value. */\nexport async function set<ValueType extends InstallationEntry>(\n appConfig: AppConfig,\n value: ValueType\n): Promise<ValueType> {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\n const oldValue = (await objectStore.get(key)) as InstallationEntry;\n await objectStore.put(value, key);\n await tx.done;\n\n if (!oldValue || oldValue.fid !== value.fid) {\n fidChanged(appConfig, value.fid);\n }\n\n return value;\n}\n\n/** Removes record(s) from the objectStore that match the given key. */\nexport async function remove(appConfig: AppConfig): Promise<void> {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\n await tx.done;\n}\n\n/**\n * Atomically updates a record with the result of updateFn, which gets\n * called with the current value. If newValue is undefined, the record is\n * deleted instead.\n * @return Updated value\n */\nexport async function update<ValueType extends InstallationEntry | undefined>(\n appConfig: AppConfig,\n updateFn: (previousValue: InstallationEntry | undefined) => ValueType\n): Promise<ValueType> {\n const key = getKey(appConfig);\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n const store = tx.objectStore(OBJECT_STORE_NAME);\n const oldValue: InstallationEntry | undefined = (await store.get(\n key\n )) as InstallationEntry;\n const newValue = updateFn(oldValue);\n\n if (newValue === undefined) {\n await store.delete(key);\n } else {\n await store.put(newValue, key);\n }\n await tx.done;\n\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\n fidChanged(appConfig, newValue.fid);\n }\n\n return newValue;\n}\n\nexport async function clear(): Promise<void> {\n const db = await getDbPromise();\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\n await tx.objectStore(OBJECT_STORE_NAME).clear();\n await tx.done;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createInstallationRequest } from '../functions/create-installation-request';\nimport {\n AppConfig,\n FirebaseInstallationsImpl\n} from '../interfaces/installation-impl';\nimport {\n InProgressInstallationEntry,\n InstallationEntry,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport { PENDING_TIMEOUT_MS } from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode, isServerError } from '../util/errors';\nimport { sleep } from '../util/sleep';\nimport { generateFid, INVALID_FID } from './generate-fid';\nimport { remove, set, update } from './idb-manager';\n\nexport interface InstallationEntryWithRegistrationPromise {\n installationEntry: InstallationEntry;\n /** Exist iff the installationEntry is not registered. */\n registrationPromise?: Promise<RegisteredInstallationEntry>;\n}\n\n/**\n * Updates and returns the InstallationEntry from the database.\n * Also triggers a registration request if it is necessary and possible.\n */\nexport async function getInstallationEntry(\n installations: FirebaseInstallationsImpl\n): Promise<InstallationEntryWithRegistrationPromise> {\n let registrationPromise: Promise<RegisteredInstallationEntry> | undefined;\n\n const installationEntry = await update(installations.appConfig, oldEntry => {\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\n const entryWithPromise = triggerRegistrationIfNecessary(\n installations,\n installationEntry\n );\n registrationPromise = entryWithPromise.registrationPromise;\n return entryWithPromise.installationEntry;\n });\n\n if (installationEntry.fid === INVALID_FID) {\n // FID generation failed. Waiting for the FID from the server.\n return { installationEntry: await registrationPromise! };\n }\n\n return {\n installationEntry,\n registrationPromise\n };\n}\n\n/**\n * Creates a new Installation Entry if one does not exist.\n * Also clears timed out pending requests.\n */\nfunction updateOrCreateInstallationEntry(\n oldEntry: InstallationEntry | undefined\n): InstallationEntry {\n const entry: InstallationEntry = oldEntry || {\n fid: generateFid(),\n registrationStatus: RequestStatus.NOT_STARTED\n };\n\n return clearTimedOutRequest(entry);\n}\n\n/**\n * If the Firebase Installation is not registered yet, this will trigger the\n * registration and return an InProgressInstallationEntry.\n *\n * If registrationPromise does not exist, the installationEntry is guaranteed\n * to be registered.\n */\nfunction triggerRegistrationIfNecessary(\n installations: FirebaseInstallationsImpl,\n installationEntry: InstallationEntry\n): InstallationEntryWithRegistrationPromise {\n if (installationEntry.registrationStatus === RequestStatus.NOT_STARTED) {\n if (!navigator.onLine) {\n // Registration required but app is offline.\n const registrationPromiseWithError = Promise.reject(\n ERROR_FACTORY.create(ErrorCode.APP_OFFLINE)\n );\n return {\n installationEntry,\n registrationPromise: registrationPromiseWithError\n };\n }\n\n // Try registering. Change status to IN_PROGRESS.\n const inProgressEntry: InProgressInstallationEntry = {\n fid: installationEntry.fid,\n registrationStatus: RequestStatus.IN_PROGRESS,\n registrationTime: Date.now()\n };\n const registrationPromise = registerInstallation(\n installations,\n inProgressEntry\n );\n return { installationEntry: inProgressEntry, registrationPromise };\n } else if (\n installationEntry.registrationStatus === RequestStatus.IN_PROGRESS\n ) {\n return {\n installationEntry,\n registrationPromise: waitUntilFidRegistration(installations)\n };\n } else {\n return { installationEntry };\n }\n}\n\n/** This will be executed only once for each new Firebase Installation. */\nasync function registerInstallation(\n installations: FirebaseInstallationsImpl,\n installationEntry: InProgressInstallationEntry\n): Promise<RegisteredInstallationEntry> {\n try {\n const registeredInstallationEntry = await createInstallationRequest(\n installations,\n installationEntry\n );\n return set(installations.appConfig, registeredInstallationEntry);\n } catch (e) {\n if (isServerError(e) && e.customData.serverCode === 409) {\n // Server returned a \"FID can not be used\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n } else {\n // Registration failed. Set FID as not registered.\n await set(installations.appConfig, {\n fid: installationEntry.fid,\n registrationStatus: RequestStatus.NOT_STARTED\n });\n }\n throw e;\n }\n}\n\n/** Call if FID registration is pending in another request. */\nasync function waitUntilFidRegistration(\n installations: FirebaseInstallationsImpl\n): Promise<RegisteredInstallationEntry> {\n // Unfortunately, there is no way of reliably observing when a value in\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\n // so we need to poll.\n\n let entry: InstallationEntry = await updateInstallationRequest(\n installations.appConfig\n );\n while (entry.registrationStatus === RequestStatus.IN_PROGRESS) {\n // createInstallation request still in progress.\n await sleep(100);\n\n entry = await updateInstallationRequest(installations.appConfig);\n }\n\n if (entry.registrationStatus === RequestStatus.NOT_STARTED) {\n // The request timed out or failed in a different call. Try again.\n const { installationEntry, registrationPromise } =\n await getInstallationEntry(installations);\n\n if (registrationPromise) {\n return registrationPromise;\n } else {\n // if there is no registrationPromise, entry is registered.\n return installationEntry as RegisteredInstallationEntry;\n }\n }\n\n return entry;\n}\n\n/**\n * Called only if there is a CreateInstallation request in progress.\n *\n * Updates the InstallationEntry in the DB based on the status of the\n * CreateInstallation request.\n *\n * Returns the updated InstallationEntry.\n */\nfunction updateInstallationRequest(\n appConfig: AppConfig\n): Promise<InstallationEntry> {\n return update(appConfig, oldEntry => {\n if (!oldEntry) {\n throw ERROR_FACTORY.create(ErrorCode.INSTALLATION_NOT_FOUND);\n }\n return clearTimedOutRequest(oldEntry);\n });\n}\n\nfunction clearTimedOutRequest(entry: InstallationEntry): InstallationEntry {\n if (hasInstallationRequestTimedOut(entry)) {\n return {\n fid: entry.fid,\n registrationStatus: RequestStatus.NOT_STARTED\n };\n }\n\n return entry;\n}\n\nfunction hasInstallationRequestTimedOut(\n installationEntry: InstallationEntry\n): boolean {\n return (\n installationEntry.registrationStatus === RequestStatus.IN_PROGRESS &&\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now()\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { GenerateAuthTokenResponse } from '../interfaces/api-response';\nimport {\n CompletedAuthToken,\n RegisteredInstallationEntry\n} from '../interfaces/installation-entry';\nimport { PACKAGE_VERSION } from '../util/constants';\nimport {\n extractAuthTokenInfoFromResponse,\n getErrorFromResponse,\n getHeadersWithAuth,\n getInstallationsEndpoint,\n retryIfServerError\n} from './common';\nimport {\n FirebaseInstallationsImpl,\n AppConfig\n} from '../interfaces/installation-impl';\n\nexport async function generateAuthTokenRequest(\n { appConfig, heartbeatServiceProvider }: FirebaseInstallationsImpl,\n installationEntry: RegisteredInstallationEntry\n): Promise<CompletedAuthToken> {\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\n\n const headers = getHeadersWithAuth(appConfig, installationEntry);\n\n // If heartbeat service exists, add the heartbeat string to the header.\n const heartbeatService = heartbeatServiceProvider.getImmediate({\n optional: true\n });\n if (heartbeatService) {\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\n if (heartbeatsHeader) {\n headers.append('x-firebase-client', heartbeatsHeader);\n }\n }\n\n const body = {\n installation: {\n sdkVersion: PACKAGE_VERSION,\n appId: appConfig.appId\n }\n };\n\n const request: RequestInit = {\n method: 'POST',\n headers,\n body: JSON.stringify(body)\n };\n\n const response = await retryIfServerError(() => fetch(endpoint, request));\n if (response.ok) {\n const responseValue: GenerateAuthTokenResponse = await response.json();\n const completedAuthToken: CompletedAuthToken =\n extractAuthTokenInfoFromResponse(responseValue);\n return completedAuthToken;\n } else {\n throw await getErrorFromResponse('Generate Auth Token', response);\n }\n}\n\nfunction getGenerateAuthTokenEndpoint(\n appConfig: AppConfig,\n { fid }: RegisteredInstallationEntry\n): string {\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { generateAuthTokenRequest } from '../functions/generate-auth-token-request';\nimport {\n AppConfig,\n FirebaseInstallationsImpl\n} from '../interfaces/installation-impl';\nimport {\n AuthToken,\n CompletedAuthToken,\n InProgressAuthToken,\n InstallationEntry,\n RegisteredInstallationEntry,\n RequestStatus\n} from '../interfaces/installation-entry';\nimport { PENDING_TIMEOUT_MS, TOKEN_EXPIRATION_BUFFER } from '../util/constants';\nimport { ERROR_FACTORY, ErrorCode, isServerError } from '../util/errors';\nimport { sleep } from '../util/sleep';\nimport { remove, set, update } from './idb-manager';\n\n/**\n * Returns a valid authentication token for the installation. Generates a new\n * token if one doesn't exist, is expired or about to expire.\n *\n * Should only be called if the Firebase Installation is registered.\n */\nexport async function refreshAuthToken(\n installations: FirebaseInstallationsImpl,\n forceRefresh = false\n): Promise<CompletedAuthToken> {\n let tokenPromise: Promise<CompletedAuthToken> | undefined;\n const entry = await update(installations.appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(ErrorCode.NOT_REGISTERED);\n }\n\n const oldAuthToken = oldEntry.authToken;\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\n // There is a valid token in the DB.\n return oldEntry;\n } else if (oldAuthToken.requestStatus === RequestStatus.IN_PROGRESS) {\n // There already is a token request in progress.\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\n return oldEntry;\n } else {\n // No token or token expired.\n if (!navigator.onLine) {\n throw ERROR_FACTORY.create(ErrorCode.APP_OFFLINE);\n }\n\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\n return inProgressEntry;\n }\n });\n\n const authToken = tokenPromise\n ? await tokenPromise\n : (entry.authToken as CompletedAuthToken);\n return authToken;\n}\n\n/**\n * Call only if FID is registered and Auth Token request is in progress.\n *\n * Waits until the current pending request finishes. If the request times out,\n * tries once in this thread as well.\n */\nasync function waitUntilAuthTokenRequest(\n installations: FirebaseInstallationsImpl,\n forceRefresh: boolean\n): Promise<CompletedAuthToken> {\n // Unfortunately, there is no way of reliably observing when a value in\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\n // so we need to poll.\n\n let entry = await updateAuthTokenRequest(installations.appConfig);\n while (entry.authToken.requestStatus === RequestStatus.IN_PROGRESS) {\n // generateAuthToken still in progress.\n await sleep(100);\n\n entry = await updateAuthTokenRequest(installations.appConfig);\n }\n\n const authToken = entry.authToken;\n if (authToken.requestStatus === RequestStatus.NOT_STARTED) {\n // The request timed out or failed in a different call. Try again.\n return refreshAuthToken(installations, forceRefresh);\n } else {\n return authToken;\n }\n}\n\n/**\n * Called only if there is a GenerateAuthToken request in progress.\n *\n * Updates the InstallationEntry in the DB based on the status of the\n * GenerateAuthToken request.\n *\n * Returns the updated InstallationEntry.\n */\nfunction updateAuthTokenRequest(\n appConfig: AppConfig\n): Promise<RegisteredInstallationEntry> {\n return update(appConfig, oldEntry => {\n if (!isEntryRegistered(oldEntry)) {\n throw ERROR_FACTORY.create(ErrorCode.NOT_REGISTERED);\n }\n\n const oldAuthToken = oldEntry.authToken;\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\n return {\n ...oldEntry,\n authToken: { requestStatus: RequestStatus.NOT_STARTED }\n };\n }\n\n return oldEntry;\n });\n}\n\nasync function fetchAuthTokenFromServer(\n installations: FirebaseInstallationsImpl,\n installationEntry: RegisteredInstallationEntry\n): Promise<CompletedAuthToken> {\n try {\n const authToken = await generateAuthTokenRequest(\n installations,\n installationEntry\n );\n const updatedInstallationEntry: RegisteredInstallationEntry = {\n ...installationEntry,\n authToken\n };\n await set(installations.appConfig, updatedInstallationEntry);\n return authToken;\n } catch (e) {\n if (\n isServerError(e) &&\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)\n ) {\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\n // Generate a new ID next time.\n await remove(installations.appConfig);\n } else {\n const updatedInstallationEntry: RegisteredInstallationEntry = {\n ...installationEntry,\n authToken: { requestStatus: RequestStatus.NOT_STARTED }\n };\n await set(installations.appConfig, updatedInstallationEntry);\n }\n throw e;\n }\n}\n\nfunction isEntryRegistered(\n installationEntry: InstallationEntry | undefined\n): installationEntry is RegisteredInstallationEntry {\n return (\n installationEntry !== undefined &&\n installationEntry.registrationStatus === RequestStatus.COMPLETED\n );\n}\n\nfunction isAuthTokenValid(authToken: AuthToken): boolean {\n return (\n authToken.requestStatus === RequestStatus.COMPLETED &&\n !isAuthTokenExpired(authToken)\n );\n}\n\nfunction isAuthTokenExpired(authToken: CompletedAuthToken): boolean {\n const now = Date.now();\n return (\n now < authToken.creationTime ||\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER\n );\n}\n\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\nfunction makeAuthTokenRequestInProgressEntry(\n oldEntry: RegisteredInstallationEntry\n): RegisteredInstallationEntry {\n const inProgressAuthToken: InProgressAuthToken = {\n requestStatus: RequestStatus.IN_PROGRESS,\n requestTime: Date.now()\n };\n return {\n ...oldEntry,\n authToken: inProgressAuthToken\n };\n}\n\nfunction hasAuthTokenRequestTimedOut(authToken: AuthToken): boolean {\n return (\n authToken.requestStatus === RequestStatus.IN_PROGRESS &&\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now()\n );\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInstallationEntry } from '../helpers/get-installation-entry';\nimport { refreshAuthToken } from '../helpers/refresh-auth-token';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\nimport { Installations } from '../interfaces/public-types';\n\n/**\n * Creates a Firebase Installation if there isn't one for the app and\n * returns the Installation ID.\n * @param installations - The `Installations` instance.\n *\n * @public\n */\nexport async function getId(installations: Installations): Promise<string> {\n const installationsImpl = installations as FirebaseInstallationsImpl;\n const { installationEntry, registrationPromise } = await getInstallationEntry(\n installationsImpl\n );\n\n if (registrationPromise) {\n registrationPromise.catch(console.error);\n } else {\n // If the installation is already registered, update the authentication\n // token if needed.\n refreshAuthToken(installationsImpl).catch(console.error);\n }\n\n return installationEntry.fid;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getInstallationEntry } from '../helpers/get-installation-entry';\nimport { refreshAuthToken } from '../helpers/refresh-auth-token';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\nimport { Installations } from '../interfaces/public-types';\n\n/**\n * Returns a Firebase Installations auth token, identifying the current\n * Firebase Installation.\n * @param installations - The `Installations` instance.\n * @param forceRefresh - Force refresh regardless of token expiration.\n *\n * @public\n */\nexport async function getToken(\n installations: Installations,\n forceRefresh = false\n): Promise<string> {\n const installationsImpl = installations as FirebaseInstallationsImpl;\n await completeInstallationRegistration(installationsImpl);\n\n // At this point we either have a Registered Installation in the DB, or we've\n // already thrown an error.\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\n return authToken.token;\n}\n\nasync function completeInstallationRegistration(\n installations: FirebaseInstallationsImpl\n): Promise<void> {\n const { registrationPromise } = await getInstallationEntry(installations);\n\n if (registrationPromise) {\n // A createInstallation request is in progress. Wait until it finishes.\n await registrationPromise;\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FirebaseApp, FirebaseOptions } from '@firebase/app';\nimport { FirebaseError } from '@firebase/util';\nimport { AppConfig } from '../interfaces/installation-impl';\nimport { ERROR_FACTORY, ErrorCode } from '../util/errors';\n\nexport function extractAppConfig(app: FirebaseApp): AppConfig {\n if (!app || !app.options) {\n throw getMissingValueError('App Configuration');\n }\n\n if (!app.name) {\n throw getMissingValueError('App Name');\n }\n\n // Required app config keys\n const configKeys: Array<keyof FirebaseOptions> = [\n 'projectId',\n 'apiKey',\n 'appId'\n ];\n\n for (const keyName of configKeys) {\n if (!app.options[keyName]) {\n throw getMissingValueError(keyName);\n }\n }\n\n return {\n appName: app.name,\n projectId: app.options.projectId!,\n apiKey: app.options.apiKey!,\n appId: app.options.appId!\n };\n}\n\nfunction getMissingValueError(valueName: string): FirebaseError {\n return ERROR_FACTORY.create(ErrorCode.MISSING_APP_CONFIG_VALUES, {\n valueName\n });\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _registerComponent, _getProvider } from '@firebase/app';\nimport {\n Component,\n ComponentType,\n InstanceFactory,\n ComponentContainer\n} from '@firebase/component';\nimport { getId, getToken } from '../api/index';\nimport { _FirebaseInstallationsInternal } from '../interfaces/public-types';\nimport { FirebaseInstallationsImpl } from '../interfaces/installation-impl';\nimport { extractAppConfig } from '../helpers/extract-app-config';\n\nconst INSTALLATIONS_NAME = 'installations';\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\n\nconst publicFactory: InstanceFactory<'installations'> = (\n container: ComponentContainer\n) => {\n const app = container.getProvider('app').getImmediate();\n // Throws if app isn't configured properly.\n const appConfig = extractAppConfig(app);\n const heartbeatServiceProvider = _getProvider(app, 'heartbeat');\n\n const installationsImpl: FirebaseInstallationsImpl = {\n app,\n appConfig,\n heartbeatServiceProvider,\n _delete: () => Promise.resolve()\n };\n return installationsImpl;\n};\n\nconst internalFactory: InstanceFactory<'installations-internal'> = (\n container: ComponentContainer\n) => {\n const app = container.getProvider('app').getImmediate();\n // Internal FIS instance relies on public FIS instance.\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\n\n const installationsInternal: _FirebaseInstallationsInternal = {\n getId: () => getId(installations),\n getToken: (forceRefresh?: boolean) => getToken(installations, forceRefresh)\n };\n return installationsInternal;\n};\n\nexport function registerInstallations(): void {\n _registerComponent(\n new Component(INSTALLATIONS_NAME, publicFactory, ComponentType.PUBLIC)\n );\n _registerComponent(\n new Component(\n INSTALLATIONS_NAME_INTERNAL,\n internalFactory,\n ComponentType.PRIVATE\n )\n );\n}\n","/**\n * Firebase Installations\n *\n * @packageDocumentation\n */\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerInstallations } from './functions/config';\nimport { registerVersion } from '@firebase/app';\nimport { name, version } from '../package.json';\n\nexport * from './api';\nexport * from './interfaces/public-types';\n\nregisterInstallations();\nregisterVersion(name, version);\n// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\nregisterVersion(name, version, '__BUILD_TARGET__');\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Type constant for Firebase Analytics.\n */\nexport const ANALYTICS_TYPE = 'analytics';\n\n// Key to attach FID to in gtag params.\nexport const GA_FID_KEY = 'firebase_id';\nexport const ORIGIN_KEY = 'origin';\n\nexport const FETCH_TIMEOUT_MILLIS = 60 * 1000;\n\nexport const DYNAMIC_CONFIG_URL =\n 'https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig';\n\nexport const GTAG_URL = 'https://www.googletagmanager.com/gtag/js';\n\nexport const enum GtagCommand {\n EVENT = 'event',\n SET = 'set',\n CONFIG = 'config',\n CONSENT = 'consent',\n GET = 'get'\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Logger } from '@firebase/logger';\n\nexport const logger = new Logger('@firebase/analytics');\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ErrorFactory, ErrorMap } from '@firebase/util';\n\nexport const enum AnalyticsError {\n ALREADY_EXISTS = 'already-exists',\n ALREADY_INITIALIZED = 'already-initialized',\n ALREADY_INITIALIZED_SETTINGS = 'already-initialized-settings',\n INTEROP_COMPONENT_REG_FAILED = 'interop-component-reg-failed',\n INVALID_ANALYTICS_CONTEXT = 'invalid-analytics-context',\n INDEXEDDB_UNAVAILABLE = 'indexeddb-unavailable',\n FETCH_THROTTLE = 'fetch-throttle',\n CONFIG_FETCH_FAILED = 'config-fetch-failed',\n NO_API_KEY = 'no-api-key',\n NO_APP_ID = 'no-app-id',\n NO_CLIENT_ID = 'no-client-id',\n INVALID_GTAG_RESOURCE = 'invalid-gtag-resource'\n}\n\nconst ERRORS: ErrorMap<AnalyticsError> = {\n [AnalyticsError.ALREADY_EXISTS]:\n 'A Firebase Analytics instance with the appId {$id} ' +\n ' already exists. ' +\n 'Only one Firebase Analytics instance can be created for each appId.',\n [AnalyticsError.ALREADY_INITIALIZED]:\n 'initializeAnalytics() cannot be called again with different options than those ' +\n 'it was initially called with. It can be called again with the same options to ' +\n 'return the existing instance, or getAnalytics() can be used ' +\n 'to get a reference to the already-intialized instance.',\n [AnalyticsError.ALREADY_INITIALIZED_SETTINGS]:\n 'Firebase Analytics has already been initialized.' +\n 'settings() must be called before initializing any Analytics instance' +\n 'or it will have no effect.',\n [AnalyticsError.INTEROP_COMPONENT_REG_FAILED]:\n 'Firebase Analytics Interop Component failed to instantiate: {$reason}',\n [AnalyticsError.INVALID_ANALYTICS_CONTEXT]:\n 'Firebase Analytics is not supported in this environment. ' +\n 'Wrap initialization of analytics in analytics.isSupported() ' +\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\n [AnalyticsError.INDEXEDDB_UNAVAILABLE]:\n 'IndexedDB unavailable or restricted in this environment. ' +\n 'Wrap initialization of analytics in analytics.isSupported() ' +\n 'to prevent initialization in unsupported environments. Details: {$errorInfo}',\n [AnalyticsError.FETCH_THROTTLE]:\n 'The config fetch request timed out while in an exponential backoff state.' +\n ' Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.',\n [AnalyticsError.CONFIG_FETCH_FAILED]:\n 'Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}',\n [AnalyticsError.NO_API_KEY]:\n 'The \"apiKey\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\n 'contain a valid API key.',\n [AnalyticsError.NO_APP_ID]:\n 'The \"appId\" field is empty in the local Firebase config. Firebase Analytics requires this field to' +\n 'contain a valid app ID.',\n [AnalyticsError.NO_CLIENT_ID]: 'The \"client_id\" field is empty.',\n [AnalyticsError.INVALID_GTAG_RESOURCE]:\n 'Trusted Types detected an invalid gtag resource: {$gtagURL}.'\n};\n\ninterface ErrorParams {\n [AnalyticsError.ALREADY_EXISTS]: { id: string };\n [AnalyticsError.INTEROP_COMPONENT_REG_FAILED]: { reason: Error };\n [AnalyticsError.FETCH_THROTTLE]: { throttleEndTimeMillis: number };\n [AnalyticsError.CONFIG_FETCH_FAILED]: {\n httpStatus: number;\n responseMessage: string;\n };\n [AnalyticsError.INVALID_ANALYTICS_CONTEXT]: { errorInfo: string };\n [AnalyticsError.INDEXEDDB_UNAVAILABLE]: { errorInfo: string };\n [AnalyticsError.INVALID_GTAG_RESOURCE]: { gtagURL: string };\n}\n\nexport const ERROR_FACTORY = new ErrorFactory<AnalyticsError, ErrorParams>(\n 'analytics',\n 'Analytics',\n ERRORS\n);\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n CustomParams,\n ControlParams,\n EventParams,\n ConsentSettings\n} from './public-types';\nimport { DynamicConfig, DataLayer, Gtag, MinimalDynamicConfig } from './types';\nimport { GtagCommand, GTAG_URL } from './constants';\nimport { logger } from './logger';\nimport { AnalyticsError, ERROR_FACTORY } from './errors';\n\n// Possible parameter types for gtag 'event' and 'config' commands\ntype GtagConfigOrEventParams = ControlParams & EventParams & CustomParams;\n\n/**\n * Verifies and creates a TrustedScriptURL.\n */\nexport function createGtagTrustedTypesScriptURL(url: string): string {\n if (!url.startsWith(GTAG_URL)) {\n const err = ERROR_FACTORY.create(AnalyticsError.INVALID_GTAG_RESOURCE, {\n gtagURL: url\n });\n logger.warn(err.message);\n return '';\n }\n return url;\n}\n\n/**\n * Makeshift polyfill for Promise.allSettled(). Resolves when all promises\n * have either resolved or rejected.\n *\n * @param promises Array of promises to wait for.\n */\nexport function promiseAllSettled<T>(\n promises: Array<Promise<T>>\n): Promise<T[]> {\n return Promise.all(promises.map(promise => promise.catch(e => e)));\n}\n\n/**\n * Creates a TrustedTypePolicy object that implements the rules passed as policyOptions.\n *\n * @param policyName A string containing the name of the policy\n * @param policyOptions Object containing implementations of instance methods for TrustedTypesPolicy, see {@link https://developer.mozilla.org/en-US/docs/Web/API/TrustedTypePolicy#instance_methods\n * | the TrustedTypePolicy reference documentation}.\n */\nexport function createTrustedTypesPolicy(\n policyName: string,\n policyOptions: Partial<TrustedTypePolicyOptions>\n): Partial<TrustedTypePolicy> | undefined {\n // Create a TrustedTypes policy that we can use for updating src\n // properties\n let trustedTypesPolicy: Partial<TrustedTypePolicy> | undefined;\n if (window.trustedTypes) {\n trustedTypesPolicy = window.trustedTypes.createPolicy(\n policyName,\n policyOptions\n );\n }\n return trustedTypesPolicy;\n}\n\n/**\n * Inserts gtag script tag into the page to asynchronously download gtag.\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\n */\nexport function insertScriptTag(\n dataLayerName: string,\n measurementId: string\n): void {\n const trustedTypesPolicy = createTrustedTypesPolicy(\n 'firebase-js-sdk-policy',\n {\n createScriptURL: createGtagTrustedTypesScriptURL\n }\n );\n\n const script = document.createElement('script');\n // We are not providing an analyticsId in the URL because it would trigger a `page_view`\n // without fid. We will initialize ga-id using gtag (config) command together with fid.\n\n const gtagScriptURL = `${GTAG_URL}?l=${dataLayerName}&id=${measurementId}`;\n (script.src as string | TrustedScriptURL) = trustedTypesPolicy\n ? (trustedTypesPolicy as TrustedTypePolicy)?.createScriptURL(gtagScriptURL)\n : gtagScriptURL;\n\n script.async = true;\n document.head.appendChild(script);\n}\n\n/**\n * Get reference to, or create, global datalayer.\n * @param dataLayerName Name of datalayer (most often the default, \"_dataLayer\").\n */\nexport function getOrCreateDataLayer(dataLayerName: string): DataLayer {\n // Check for existing dataLayer and create if needed.\n let dataLayer: DataLayer = [];\n if (Array.isArray(window[dataLayerName])) {\n dataLayer = window[dataLayerName] as DataLayer;\n } else {\n window[dataLayerName] = dataLayer;\n }\n return dataLayer;\n}\n\n/**\n * Wrapped gtag logic when gtag is called with 'config' command.\n *\n * @param gtagCore Basic gtag function that just appends to dataLayer.\n * @param initializationPromisesMap Map of appIds to their initialization promises.\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\n * @param measurementId GA Measurement ID to set config for.\n * @param gtagParams Gtag config params to set.\n */\nasync function gtagOnConfig(\n gtagCore: Gtag,\n initializationPromisesMap: { [appId: string]: Promise<string> },\n dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n >,\n measurementIdToAppId: { [measurementId: string]: string },\n measurementId: string,\n gtagParams?: ControlParams & EventParams & CustomParams\n): Promise<void> {\n // If config is already fetched, we know the appId and can use it to look up what FID promise we\n /// are waiting for, and wait only on that one.\n const correspondingAppId = measurementIdToAppId[measurementId as string];\n try {\n if (correspondingAppId) {\n await initializationPromisesMap[correspondingAppId];\n } else {\n // If config is not fetched yet, wait for all configs (we don't know which one we need) and\n // find the appId (if any) corresponding to this measurementId. If there is one, wait on\n // that appId's initialization promise. If there is none, promise resolves and gtag\n // call goes through.\n const dynamicConfigResults = await promiseAllSettled(\n dynamicConfigPromisesList\n );\n const foundConfig = dynamicConfigResults.find(\n config => config.measurementId === measurementId\n );\n if (foundConfig) {\n await initializationPromisesMap[foundConfig.appId];\n }\n }\n } catch (e) {\n logger.error(e);\n }\n gtagCore(GtagCommand.CONFIG, measurementId, gtagParams);\n}\n\n/**\n * Wrapped gtag logic when gtag is called with 'event' command.\n *\n * @param gtagCore Basic gtag function that just appends to dataLayer.\n * @param initializationPromisesMap Map of appIds to their initialization promises.\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\n * @param measurementId GA Measurement ID to log event to.\n * @param gtagParams Params to log with this event.\n */\nasync function gtagOnEvent(\n gtagCore: Gtag,\n initializationPromisesMap: { [appId: string]: Promise<string> },\n dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n >,\n measurementId: string,\n gtagParams?: ControlParams & EventParams & CustomParams\n): Promise<void> {\n try {\n let initializationPromisesToWaitFor: Array<Promise<string>> = [];\n\n // If there's a 'send_to' param, check if any ID specified matches\n // an initializeIds() promise we are waiting for.\n if (gtagParams && gtagParams['send_to']) {\n let gaSendToList: string | string[] = gtagParams['send_to'];\n // Make it an array if is isn't, so it can be dealt with the same way.\n if (!Array.isArray(gaSendToList)) {\n gaSendToList = [gaSendToList];\n }\n // Checking 'send_to' fields requires having all measurement ID results back from\n // the dynamic config fetch.\n const dynamicConfigResults = await promiseAllSettled(\n dynamicConfigPromisesList\n );\n for (const sendToId of gaSendToList) {\n // Any fetched dynamic measurement ID that matches this 'send_to' ID\n const foundConfig = dynamicConfigResults.find(\n config => config.measurementId === sendToId\n );\n const initializationPromise =\n foundConfig && initializationPromisesMap[foundConfig.appId];\n if (initializationPromise) {\n initializationPromisesToWaitFor.push(initializationPromise);\n } else {\n // Found an item in 'send_to' that is not associated\n // directly with an FID, possibly a group. Empty this array,\n // exit the loop early, and let it get populated below.\n initializationPromisesToWaitFor = [];\n break;\n }\n }\n }\n\n // This will be unpopulated if there was no 'send_to' field , or\n // if not all entries in the 'send_to' field could be mapped to\n // a FID. In these cases, wait on all pending initialization promises.\n if (initializationPromisesToWaitFor.length === 0) {\n initializationPromisesToWaitFor = Object.values(\n initializationPromisesMap\n );\n }\n\n // Run core gtag function with args after all relevant initialization\n // promises have been resolved.\n await Promise.all(initializationPromisesToWaitFor);\n // Workaround for http://b/141370449 - third argument cannot be undefined.\n gtagCore(GtagCommand.EVENT, measurementId, gtagParams || {});\n } catch (e) {\n logger.error(e);\n }\n}\n\n/**\n * Wraps a standard gtag function with extra code to wait for completion of\n * relevant initialization promises before sending requests.\n *\n * @param gtagCore Basic gtag function that just appends to dataLayer.\n * @param initializationPromisesMap Map of appIds to their initialization promises.\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\n */\nfunction wrapGtag(\n gtagCore: Gtag,\n /**\n * Allows wrapped gtag calls to wait on whichever intialization promises are required,\n * depending on the contents of the gtag params' `send_to` field, if any.\n */\n initializationPromisesMap: { [appId: string]: Promise<string> },\n /**\n * Wrapped gtag calls sometimes require all dynamic config fetches to have returned\n * before determining what initialization promises (which include FIDs) to wait for.\n */\n dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n >,\n /**\n * Wrapped gtag config calls can narrow down which initialization promise (with FID)\n * to wait for if the measurementId is already fetched, by getting the corresponding appId,\n * which is the key for the initialization promises map.\n */\n measurementIdToAppId: { [measurementId: string]: string }\n): Gtag {\n /**\n * Wrapper around gtag that ensures FID is sent with gtag calls.\n * @param command Gtag command type.\n * @param idOrNameOrParams Measurement ID if command is EVENT/CONFIG, params if command is SET.\n * @param gtagParams Params if event is EVENT/CONFIG.\n */\n async function gtagWrapper(\n command: 'config' | 'set' | 'event' | 'consent' | 'get' | string,\n ...args: unknown[]\n ): Promise<void> {\n try {\n // If event, check that relevant initialization promises have completed.\n if (command === GtagCommand.EVENT) {\n const [measurementId, gtagParams] = args;\n // If EVENT, second arg must be measurementId.\n await gtagOnEvent(\n gtagCore,\n initializationPromisesMap,\n dynamicConfigPromisesList,\n measurementId as string,\n gtagParams as GtagConfigOrEventParams\n );\n } else if (command === GtagCommand.CONFIG) {\n const [measurementId, gtagParams] = args;\n // If CONFIG, second arg must be measurementId.\n await gtagOnConfig(\n gtagCore,\n initializationPromisesMap,\n dynamicConfigPromisesList,\n measurementIdToAppId,\n measurementId as string,\n gtagParams as GtagConfigOrEventParams\n );\n } else if (command === GtagCommand.CONSENT) {\n const [gtagParams] = args;\n gtagCore(GtagCommand.CONSENT, 'update', gtagParams as ConsentSettings);\n } else if (command === GtagCommand.GET) {\n const [measurementId, fieldName, callback] = args;\n gtagCore(\n GtagCommand.GET,\n measurementId as string,\n fieldName as string,\n callback as (...args: unknown[]) => void\n );\n } else if (command === GtagCommand.SET) {\n const [customParams] = args;\n // If SET, second arg must be params.\n gtagCore(GtagCommand.SET, customParams as CustomParams);\n } else {\n gtagCore(command, ...args);\n }\n } catch (e) {\n logger.error(e);\n }\n }\n return gtagWrapper as Gtag;\n}\n\n/**\n * Creates global gtag function or wraps existing one if found.\n * This wrapped function attaches Firebase instance ID (FID) to gtag 'config' and\n * 'event' calls that belong to the GAID associated with this Firebase instance.\n *\n * @param initializationPromisesMap Map of appIds to their initialization promises.\n * @param dynamicConfigPromisesList Array of dynamic config fetch promises.\n * @param measurementIdToAppId Map of GA measurementIDs to corresponding Firebase appId.\n * @param dataLayerName Name of global GA datalayer array.\n * @param gtagFunctionName Name of global gtag function (\"gtag\" if not user-specified).\n */\nexport function wrapOrCreateGtag(\n initializationPromisesMap: { [appId: string]: Promise<string> },\n dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n >,\n measurementIdToAppId: { [measurementId: string]: string },\n dataLayerName: string,\n gtagFunctionName: string\n): {\n gtagCore: Gtag;\n wrappedGtag: Gtag;\n} {\n // Create a basic core gtag function\n let gtagCore: Gtag = function (..._args: unknown[]) {\n // Must push IArguments object, not an array.\n (window[dataLayerName] as DataLayer).push(arguments);\n };\n\n // Replace it with existing one if found\n if (\n window[gtagFunctionName] &&\n typeof window[gtagFunctionName] === 'function'\n ) {\n // @ts-ignore\n gtagCore = window[gtagFunctionName];\n }\n\n window[gtagFunctionName] = wrapGtag(\n gtagCore,\n initializationPromisesMap,\n dynamicConfigPromisesList,\n measurementIdToAppId\n );\n\n return {\n gtagCore,\n wrappedGtag: window[gtagFunctionName] as Gtag\n };\n}\n\n/**\n * Returns the script tag in the DOM matching both the gtag url pattern\n * and the provided data layer name.\n */\nexport function findGtagScriptOnPage(\n dataLayerName: string\n): HTMLScriptElement | null {\n const scriptTags = window.document.getElementsByTagName('script');\n for (const tag of Object.values(scriptTags)) {\n if (\n tag.src &&\n tag.src.includes(GTAG_URL) &&\n tag.src.includes(dataLayerName)\n ) {\n return tag;\n }\n }\n return null;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Most logic is copied from packages/remote-config/src/client/retrying_client.ts\n */\n\nimport { FirebaseApp } from '@firebase/app';\nimport { DynamicConfig, ThrottleMetadata, MinimalDynamicConfig } from './types';\nimport { FirebaseError, calculateBackoffMillis } from '@firebase/util';\nimport { AnalyticsError, ERROR_FACTORY } from './errors';\nimport { DYNAMIC_CONFIG_URL, FETCH_TIMEOUT_MILLIS } from './constants';\nimport { logger } from './logger';\n\n// App config fields needed by analytics.\nexport interface AppFields {\n appId: string;\n apiKey: string;\n measurementId?: string;\n}\n\n/**\n * Backoff factor for 503 errors, which we want to be conservative about\n * to avoid overloading servers. Each retry interval will be\n * BASE_INTERVAL_MILLIS * LONG_RETRY_FACTOR ^ retryCount, so the second one\n * will be ~30 seconds (with fuzzing).\n */\nexport const LONG_RETRY_FACTOR = 30;\n\n/**\n * Base wait interval to multiplied by backoffFactor^backoffCount.\n */\nconst BASE_INTERVAL_MILLIS = 1000;\n\n/**\n * Stubbable retry data storage class.\n */\nclass RetryData {\n constructor(\n public throttleMetadata: { [appId: string]: ThrottleMetadata } = {},\n public intervalMillis: number = BASE_INTERVAL_MILLIS\n ) {}\n\n getThrottleMetadata(appId: string): ThrottleMetadata {\n return this.throttleMetadata[appId];\n }\n\n setThrottleMetadata(appId: string, metadata: ThrottleMetadata): void {\n this.throttleMetadata[appId] = metadata;\n }\n\n deleteThrottleMetadata(appId: string): void {\n delete this.throttleMetadata[appId];\n }\n}\n\nconst defaultRetryData = new RetryData();\n\n/**\n * Set GET request headers.\n * @param apiKey App API key.\n */\nfunction getHeaders(apiKey: string): Headers {\n return new Headers({\n Accept: 'application/json',\n 'x-goog-api-key': apiKey\n });\n}\n\n/**\n * Fetches dynamic config from backend.\n * @param app Firebase app to fetch config for.\n */\nexport async function fetchDynamicConfig(\n appFields: AppFields\n): Promise<DynamicConfig> {\n const { appId, apiKey } = appFields;\n const request: RequestInit = {\n method: 'GET',\n headers: getHeaders(apiKey)\n };\n const appUrl = DYNAMIC_CONFIG_URL.replace('{app-id}', appId);\n const response = await fetch(appUrl, request);\n if (response.status !== 200 && response.status !== 304) {\n let errorMessage = '';\n try {\n // Try to get any error message text from server response.\n const jsonResponse = (await response.json()) as {\n error?: { message?: string };\n };\n if (jsonResponse.error?.message) {\n errorMessage = jsonResponse.error.message;\n }\n } catch (_ignored) {}\n throw ERROR_FACTORY.create(AnalyticsError.CONFIG_FETCH_FAILED, {\n httpStatus: response.status,\n responseMessage: errorMessage\n });\n }\n return response.json();\n}\n\n/**\n * Fetches dynamic config from backend, retrying if failed.\n * @param app Firebase app to fetch config for.\n */\nexport async function fetchDynamicConfigWithRetry(\n app: FirebaseApp,\n // retryData and timeoutMillis are parameterized to allow passing a different value for testing.\n retryData: RetryData = defaultRetryData,\n timeoutMillis?: number\n): Promise<DynamicConfig | MinimalDynamicConfig> {\n const { appId, apiKey, measurementId } = app.options;\n\n if (!appId) {\n throw ERROR_FACTORY.create(AnalyticsError.NO_APP_ID);\n }\n\n if (!apiKey) {\n if (measurementId) {\n return {\n measurementId,\n appId\n };\n }\n throw ERROR_FACTORY.create(AnalyticsError.NO_API_KEY);\n }\n\n const throttleMetadata: ThrottleMetadata = retryData.getThrottleMetadata(\n appId\n ) || {\n backoffCount: 0,\n throttleEndTimeMillis: Date.now()\n };\n\n const signal = new AnalyticsAbortSignal();\n\n setTimeout(\n async () => {\n // Note a very low delay, eg < 10ms, can elapse before listeners are initialized.\n signal.abort();\n },\n timeoutMillis !== undefined ? timeoutMillis : FETCH_TIMEOUT_MILLIS\n );\n\n return attemptFetchDynamicConfigWithRetry(\n { appId, apiKey, measurementId },\n throttleMetadata,\n signal,\n retryData\n );\n}\n\n/**\n * Runs one retry attempt.\n * @param appFields Necessary app config fields.\n * @param throttleMetadata Ongoing metadata to determine throttling times.\n * @param signal Abort signal.\n */\nasync function attemptFetchDynamicConfigWithRetry(\n appFields: AppFields,\n { throttleEndTimeMillis, backoffCount }: ThrottleMetadata,\n signal: AnalyticsAbortSignal,\n retryData: RetryData = defaultRetryData // for testing\n): Promise<DynamicConfig | MinimalDynamicConfig> {\n const { appId, measurementId } = appFields;\n // Starts with a (potentially zero) timeout to support resumption from stored state.\n // Ensures the throttle end time is honored if the last attempt timed out.\n // Note the SDK will never make a request if the fetch timeout expires at this point.\n try {\n await setAbortableTimeout(signal, throttleEndTimeMillis);\n } catch (e) {\n if (measurementId) {\n logger.warn(\n `Timed out fetching this Firebase app's measurement ID from the server.` +\n ` Falling back to the measurement ID ${measurementId}` +\n ` provided in the \"measurementId\" field in the local Firebase config. [${\n (e as Error)?.message\n }]`\n );\n return { appId, measurementId };\n }\n throw e;\n }\n\n try {\n const response = await fetchDynamicConfig(appFields);\n\n // Note the SDK only clears throttle state if response is success or non-retriable.\n retryData.deleteThrottleMetadata(appId);\n\n return response;\n } catch (e) {\n const error = e as Error;\n if (!isRetriableError(error)) {\n retryData.deleteThrottleMetadata(appId);\n if (measurementId) {\n logger.warn(\n `Failed to fetch this Firebase app's measurement ID from the server.` +\n ` Falling back to the measurement ID ${measurementId}` +\n ` provided in the \"measurementId\" field in the local Firebase config. [${error?.message}]`\n );\n return { appId, measurementId };\n } else {\n throw e;\n }\n }\n\n const backoffMillis =\n Number(error?.customData?.httpStatus) === 503\n ? calculateBackoffMillis(\n backoffCount,\n retryData.intervalMillis,\n LONG_RETRY_FACTOR\n )\n : calculateBackoffMillis(backoffCount, retryData.intervalMillis);\n\n // Increments backoff state.\n const throttleMetadata = {\n throttleEndTimeMillis: Date.now() + backoffMillis,\n backoffCount: backoffCount + 1\n };\n\n // Persists state.\n retryData.setThrottleMetadata(appId, throttleMetadata);\n logger.debug(`Calling attemptFetch again in ${backoffMillis} millis`);\n\n return attemptFetchDynamicConfigWithRetry(\n appFields,\n throttleMetadata,\n signal,\n retryData\n );\n }\n}\n\n/**\n * Supports waiting on a backoff by:\n *\n * <ul>\n * <li>Promisifying setTimeout, so we can set a timeout in our Promise chain</li>\n * <li>Listening on a signal bus for abort events, just like the Fetch API</li>\n * <li>Failing in the same way the Fetch API fails, so timing out a live request and a throttled\n * request appear the same.</li>\n * </ul>\n *\n * <p>Visible for testing.\n */\nfunction setAbortableTimeout(\n signal: AnalyticsAbortSignal,\n throttleEndTimeMillis: number\n): Promise<void> {\n return new Promise((resolve, reject) => {\n // Derives backoff from given end time, normalizing negative numbers to zero.\n const backoffMillis = Math.max(throttleEndTimeMillis - Date.now(), 0);\n\n const timeout = setTimeout(resolve, backoffMillis);\n\n // Adds listener, rather than sets onabort, because signal is a shared object.\n signal.addEventListener(() => {\n clearTimeout(timeout);\n // If the request completes before this timeout, the rejection has no effect.\n reject(\n ERROR_FACTORY.create(AnalyticsError.FETCH_THROTTLE, {\n throttleEndTimeMillis\n })\n );\n });\n });\n}\n\ntype RetriableError = FirebaseError & { customData: { httpStatus: string } };\n\n/**\n * Returns true if the {@link Error} indicates a fetch request may succeed later.\n */\nfunction isRetriableError(e: Error): e is RetriableError {\n if (!(e instanceof FirebaseError) || !e.customData) {\n return false;\n }\n\n // Uses string index defined by ErrorData, which FirebaseError implements.\n const httpStatus = Number(e.customData['httpStatus']);\n\n return (\n httpStatus === 429 ||\n httpStatus === 500 ||\n httpStatus === 503 ||\n httpStatus === 504\n );\n}\n\n/**\n * Shims a minimal AbortSignal (copied from Remote Config).\n *\n * <p>AbortController's AbortSignal conveniently decouples fetch timeout logic from other aspects\n * of networking, such as retries. Firebase doesn't use AbortController enough to justify a\n * polyfill recommendation, like we do with the Fetch API, but this minimal shim can easily be\n * swapped out if/when we do.\n */\nexport class AnalyticsAbortSignal {\n listeners: Array<() => void> = [];\n addEventListener(listener: () => void): void {\n this.listeners.push(listener);\n }\n abort(): void {\n this.listeners.forEach(listener => listener());\n }\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnalyticsCallOptions,\n CustomParams,\n ControlParams,\n EventParams,\n ConsentSettings\n} from './public-types';\nimport { Gtag } from './types';\nimport { GtagCommand } from './constants';\nimport { AnalyticsError, ERROR_FACTORY } from './errors';\n\n/**\n * Event parameters to set on 'gtag' during initialization.\n */\nexport let defaultEventParametersForInit: CustomParams | undefined;\n\n/**\n * Logs an analytics event through the Firebase SDK.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param eventName Google Analytics event name, choose from standard list or use a custom string.\n * @param eventParams Analytics event parameters.\n */\nexport async function logEvent(\n gtagFunction: Gtag,\n initializationPromise: Promise<string>,\n eventName: string,\n eventParams?: EventParams,\n options?: AnalyticsCallOptions\n): Promise<void> {\n if (options && options.global) {\n gtagFunction(GtagCommand.EVENT, eventName, eventParams);\n return;\n } else {\n const measurementId = await initializationPromise;\n const params: EventParams | ControlParams = {\n ...eventParams,\n 'send_to': measurementId\n };\n gtagFunction(GtagCommand.EVENT, eventName, params);\n }\n}\n\n/**\n * Set screen_name parameter for this Google Analytics ID.\n *\n * @deprecated Use {@link logEvent} with `eventName` as 'screen_view' and add relevant `eventParams`.\n * See {@link https://firebase.google.com/docs/analytics/screenviews | Track Screenviews}.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param screenName Screen name string to set.\n */\nexport async function setCurrentScreen(\n gtagFunction: Gtag,\n initializationPromise: Promise<string>,\n screenName: string | null,\n options?: AnalyticsCallOptions\n): Promise<void> {\n if (options && options.global) {\n gtagFunction(GtagCommand.SET, { 'screen_name': screenName });\n return Promise.resolve();\n } else {\n const measurementId = await initializationPromise;\n gtagFunction(GtagCommand.CONFIG, measurementId, {\n update: true,\n 'screen_name': screenName\n });\n }\n}\n\n/**\n * Set user_id parameter for this Google Analytics ID.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param id User ID string to set\n */\nexport async function setUserId(\n gtagFunction: Gtag,\n initializationPromise: Promise<string>,\n id: string | null,\n options?: AnalyticsCallOptions\n): Promise<void> {\n if (options && options.global) {\n gtagFunction(GtagCommand.SET, { 'user_id': id });\n return Promise.resolve();\n } else {\n const measurementId = await initializationPromise;\n gtagFunction(GtagCommand.CONFIG, measurementId, {\n update: true,\n 'user_id': id\n });\n }\n}\n\n/**\n * Set all other user properties other than user_id and screen_name.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n * @param properties Map of user properties to set\n */\nexport async function setUserProperties(\n gtagFunction: Gtag,\n initializationPromise: Promise<string>,\n properties: CustomParams,\n options?: AnalyticsCallOptions\n): Promise<void> {\n if (options && options.global) {\n const flatProperties: { [key: string]: unknown } = {};\n for (const key of Object.keys(properties)) {\n // use dot notation for merge behavior in gtag.js\n flatProperties[`user_properties.${key}`] = properties[key];\n }\n gtagFunction(GtagCommand.SET, flatProperties);\n return Promise.resolve();\n } else {\n const measurementId = await initializationPromise;\n gtagFunction(GtagCommand.CONFIG, measurementId, {\n update: true,\n 'user_properties': properties\n });\n }\n}\n\n/**\n * Retrieves a unique Google Analytics identifier for the web client.\n * See {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/config#client_id | client_id}.\n *\n * @param gtagFunction Wrapped gtag function that waits for fid to be set before sending an event\n */\nexport async function internalGetGoogleAnalyticsClientId(\n gtagFunction: Gtag,\n initializationPromise: Promise<string>\n): Promise<string> {\n const measurementId = await initializationPromise;\n return new Promise((resolve, reject) => {\n gtagFunction(\n GtagCommand.GET,\n measurementId,\n 'client_id',\n (clientId: string) => {\n if (!clientId) {\n reject(ERROR_FACTORY.create(AnalyticsError.NO_CLIENT_ID));\n }\n resolve(clientId);\n }\n );\n });\n}\n\n/**\n * Set whether collection is enabled for this ID.\n *\n * @param enabled If true, collection is enabled for this ID.\n */\nexport async function setAnalyticsCollectionEnabled(\n initializationPromise: Promise<string>,\n enabled: boolean\n): Promise<void> {\n const measurementId = await initializationPromise;\n window[`ga-disable-${measurementId}`] = !enabled;\n}\n\n/**\n * Consent parameters to default to during 'gtag' initialization.\n */\nexport let defaultConsentSettingsForInit: ConsentSettings | undefined;\n\n/**\n * Sets the variable {@link defaultConsentSettingsForInit} for use in the initialization of\n * analytics.\n *\n * @param consentSettings Maps the applicable end user consent state for gtag.js.\n */\nexport function _setConsentDefaultForInit(\n consentSettings?: ConsentSettings\n): void {\n defaultConsentSettingsForInit = consentSettings;\n}\n\n/**\n * Sets the variable `defaultEventParametersForInit` for use in the initialization of\n * analytics.\n *\n * @param customParams Any custom params the user may pass to gtag.js.\n */\nexport function _setDefaultEventParametersForInit(\n customParams?: CustomParams\n): void {\n defaultEventParametersForInit = customParams;\n}\n","/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DynamicConfig, Gtag, MinimalDynamicConfig } from './types';\nimport { GtagCommand, GA_FID_KEY, ORIGIN_KEY } from './constants';\nimport { _FirebaseInstallationsInternal } from '@firebase/installations';\nimport { fetchDynamicConfigWithRetry } from './get-config';\nimport { logger } from './logger';\nimport { FirebaseApp } from '@firebase/app';\nimport {\n isIndexedDBAvailable,\n validateIndexedDBOpenable\n} from '@firebase/util';\nimport { ERROR_FACTORY, AnalyticsError } from './errors';\nimport { findGtagScriptOnPage, insertScriptTag } from './helpers';\nimport { AnalyticsSettings } from './public-types';\nimport {\n defaultConsentSettingsForInit,\n _setConsentDefaultForInit,\n defaultEventParametersForInit,\n _setDefaultEventParametersForInit\n} from './functions';\n\nasync function validateIndexedDB(): Promise<boolean> {\n if (!isIndexedDBAvailable()) {\n logger.warn(\n ERROR_FACTORY.create(AnalyticsError.INDEXEDDB_UNAVAILABLE, {\n errorInfo: 'IndexedDB is not available in this environment.'\n }).message\n );\n return false;\n } else {\n try {\n await validateIndexedDBOpenable();\n } catch (e) {\n logger.warn(\n ERROR_FACTORY.create(AnalyticsError.INDEXEDDB_UNAVAILABLE, {\n errorInfo: (e as Error)?.toString()\n }).message\n );\n return false;\n }\n }\n return true;\n}\n\n/**\n * Initialize the analytics instance in gtag.js by calling config command with fid.\n *\n * NOTE: We combine analytics initialization and setting fid together because we want fid to be\n * part of the `page_view` event that's sent during the initialization\n * @param app Firebase app\n * @param gtagCore The gtag function that's not wrapped.\n * @param dynamicConfigPromisesList Array of all dynamic config promises.\n * @param measurementIdToAppId Maps measurementID to appID.\n * @param installations _FirebaseInstallationsInternal instance.\n *\n * @returns Measurement ID.\n */\nexport async function _initializeAnalytics(\n app: FirebaseApp,\n dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n >,\n measurementIdToAppId: { [key: string]: string },\n installations: _FirebaseInstallationsInternal,\n gtagCore: Gtag,\n dataLayerName: string,\n options?: AnalyticsSettings\n): Promise<string> {\n const dynamicConfigPromise = fetchDynamicConfigWithRetry(app);\n // Once fetched, map measurementIds to appId, for ease of lookup in wrapped gtag function.\n dynamicConfigPromise\n .then(config => {\n measurementIdToAppId[config.measurementId] = config.appId;\n if (\n app.options.measurementId &&\n config.measurementId !== app.options.measurementId\n ) {\n logger.warn(\n `The measurement ID in the local Firebase config (${app.options.measurementId})` +\n ` does not match the measurement ID fetched from the server (${config.measurementId}).` +\n ` To ensure analytics events are always sent to the correct Analytics property,` +\n ` update the` +\n ` measurement ID field in the local config or remove it from the local config.`\n );\n }\n })\n .catch(e => logger.error(e));\n // Add to list to track state of all dynamic config promises.\n dynamicConfigPromisesList.push(dynamicConfigPromise);\n\n const fidPromise: Promise<string | undefined> = validateIndexedDB().then(\n envIsValid => {\n if (envIsValid) {\n return installations.getId();\n } else {\n return undefined;\n }\n }\n );\n\n const [dynamicConfig, fid] = await Promise.all([\n dynamicConfigPromise,\n fidPromise\n ]);\n\n // Detect if user has already put the gtag <script> tag on this page with the passed in\n // data layer name.\n if (!findGtagScriptOnPage(dataLayerName)) {\n insertScriptTag(dataLayerName, dynamicConfig.measurementId);\n }\n\n // Detects if there are consent settings that need to be configured.\n if (defaultConsentSettingsForInit) {\n gtagCore(GtagCommand.CONSENT, 'default', defaultConsentSettingsForInit);\n _setConsentDefaultForInit(undefined);\n }\n\n // This command initializes gtag.js and only needs to be called once for the entire web app,\n // but since it is idempotent, we can call it multiple times.\n // We keep it together with other initialization logic for better code structure.\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (gtagCore as any)('js', new Date());\n // User config added first. We don't want users to accidentally overwrite\n // base Firebase config properties.\n const configProperties: Record<string, unknown> = options?.config ?? {};\n\n // guard against developers accidentally setting properties with prefix `firebase_`\n configProperties[ORIGIN_KEY] = 'firebase';\n configProperties.update = true;\n\n if (fid != null) {\n configProperties[GA_FID_KEY] = fid;\n }\n\n // It should be the first config command called on this GA-ID\n // Initialize this GA-ID and set FID on it using the gtag config API.\n // Note: This will trigger a page_view event unless 'send_page_view' is set to false in\n // `configProperties`.\n gtagCore(GtagCommand.CONFIG, dynamicConfig.measurementId, configProperties);\n\n // Detects if there is data that will be set on every event logged from the SDK.\n if (defaultEventParametersForInit) {\n gtagCore(GtagCommand.SET, defaultEventParametersForInit);\n _setDefaultEventParametersForInit(undefined);\n }\n\n return dynamicConfig.measurementId;\n}\n","/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SettingsOptions, Analytics, AnalyticsSettings } from './public-types';\nimport { Gtag, DynamicConfig, MinimalDynamicConfig } from './types';\nimport { getOrCreateDataLayer, wrapOrCreateGtag } from './helpers';\nimport { AnalyticsError, ERROR_FACTORY } from './errors';\nimport { _FirebaseInstallationsInternal } from '@firebase/installations';\nimport { areCookiesEnabled, isBrowserExtension } from '@firebase/util';\nimport { _initializeAnalytics } from './initialize-analytics';\nimport { logger } from './logger';\nimport { FirebaseApp, _FirebaseService } from '@firebase/app';\n\n/**\n * Analytics Service class.\n */\nexport class AnalyticsService implements Analytics, _FirebaseService {\n constructor(public app: FirebaseApp) {}\n _delete(): Promise<void> {\n delete initializationPromisesMap[this.app.options.appId!];\n return Promise.resolve();\n }\n}\n\n/**\n * Maps appId to full initialization promise. Wrapped gtag calls must wait on\n * all or some of these, depending on the call's `send_to` param and the status\n * of the dynamic config fetches (see below).\n */\nexport let initializationPromisesMap: {\n [appId: string]: Promise<string>; // Promise contains measurement ID string.\n} = {};\n\n/**\n * List of dynamic config fetch promises. In certain cases, wrapped gtag calls\n * wait on all these to be complete in order to determine if it can selectively\n * wait for only certain initialization (FID) promises or if it must wait for all.\n */\nlet dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n> = [];\n\n/**\n * Maps fetched measurementIds to appId. Populated when the app's dynamic config\n * fetch completes. If already populated, gtag config calls can use this to\n * selectively wait for only this app's initialization promise (FID) instead of all\n * initialization promises.\n */\nconst measurementIdToAppId: { [measurementId: string]: string } = {};\n\n/**\n * Name for window global data layer array used by GA: defaults to 'dataLayer'.\n */\nlet dataLayerName: string = 'dataLayer';\n\n/**\n * Name for window global gtag function used by GA: defaults to 'gtag'.\n */\nlet gtagName: string = 'gtag';\n\n/**\n * Reproduction of standard gtag function or reference to existing\n * gtag function on window object.\n */\nlet gtagCoreFunction: Gtag;\n\n/**\n * Wrapper around gtag function that ensures FID is sent with all\n * relevant event and config calls.\n */\nexport let wrappedGtagFunction: Gtag;\n\n/**\n * Flag to ensure page initialization steps (creation or wrapping of\n * dataLayer and gtag script) are only run once per page load.\n */\nlet globalInitDone: boolean = false;\n\n/**\n * For testing\n * @internal\n */\nexport function resetGlobalVars(\n newGlobalInitDone = false,\n newInitializationPromisesMap = {},\n newDynamicPromises = []\n): void {\n globalInitDone = newGlobalInitDone;\n initializationPromisesMap = newInitializationPromisesMap;\n dynamicConfigPromisesList = newDynamicPromises;\n dataLayerName = 'dataLayer';\n gtagName = 'gtag';\n}\n\n/**\n * For testing\n * @internal\n */\nexport function getGlobalVars(): {\n initializationPromisesMap: { [appId: string]: Promise<string> };\n dynamicConfigPromisesList: Array<\n Promise<DynamicConfig | MinimalDynamicConfig>\n >;\n} {\n return {\n initializationPromisesMap,\n dynamicConfigPromisesList\n };\n}\n\n/**\n * Configures Firebase Analytics to use custom `gtag` or `dataLayer` names.\n * Intended to be used if `gtag.js` script has been installed on\n * this page independently of Firebase Analytics, and is using non-default\n * names for either the `gtag` function or for `dataLayer`.\n * Must be called before calling `getAnalytics()` or it won't\n * have any effect.\n *\n * @public\n *\n * @param options - Custom gtag and dataLayer names.\n */\nexport function settings(options: SettingsOptions): void {\n if (globalInitDone) {\n throw ERROR_FACTORY.create(AnalyticsError.ALREADY_INITIALIZED);\n }\n if (options.dataLayerName) {\n dataLayerName = options.dataLayerName;\n }\n if (options.gtagName) {\n gtagName = options.gtagName;\n }\n}\n\n/**\n * Returns true if no environment mismatch is found.\n * If environment mismatches are found, throws an INVALID_ANALYTICS_CONTEXT\n * error that also lists details for each mismatch found.\n */\nfunction warnOnBrowserContextMismatch(): void {\n const mismatchedEnvMessages = [];\n if (isBrowserExtension()) {\n mismatchedEnvMessages.push('This is a browser extension environment.');\n }\n if (!areCookiesEnabled()) {\n mismatchedEnvMessages.push('Cookies are not available.');\n }\n if (mismatchedEnvMessages.length > 0) {\n const details = mismatchedEnvMessages\n .map((message, index) => `(${index + 1}) ${message}`)\n .join(' ');\n const err = ERROR_FACTORY.create(AnalyticsError.INVALID_ANALYTICS_CONTEXT, {\n errorInfo: details\n });\n logger.warn(err.message);\n }\n}\n\n/**\n * Analytics instance factory.\n * @internal\n */\nexport function factory(\n app: FirebaseApp,\n installations: _FirebaseInstallationsInternal,\n options?: AnalyticsSettings\n): AnalyticsService {\n warnOnBrowserContextMismatch();\n const appId = app.options.appId;\n if (!appId) {\n throw ERROR_FACTORY.create(AnalyticsError.NO_APP_ID);\n }\n if (!app.options.apiKey) {\n if (app.options.measurementId) {\n logger.warn(\n `The \"apiKey\" field is empty in the local Firebase config. This is needed to fetch the latest` +\n ` measurement ID for this Firebase app. Falling back to the measurement ID ${app.options.measurementId}` +\n ` provided in the \"measurementId\" field in the local Firebase config.`\n );\n } else {\n throw ERROR_FACTORY.create(AnalyticsError.NO_API_KEY);\n }\n }\n if (initializationPromisesMap[appId] != null) {\n throw ERROR_FACTORY.create(AnalyticsError.ALREADY_EXISTS, {\n id: appId\n });\n }\n\n if (!globalInitDone) {\n // Steps here should only be done once per page: creation or wrapping\n // of dataLayer and global gtag function.\n\n getOrCreateDataLayer(dataLayerName);\n\n const { wrappedGtag, gtagCore } = wrapOrCreateGtag(\n initializationPromisesMap,\n dynamicConfigPromisesList,\n measurementIdToAppId,\n dataLayerName,\n gtagName\n );\n wrappedGtagFunction = wrappedGtag;\n gtagCoreFunction = gtagCore;\n\n globalInitDone = true;\n }\n // Async but non-blocking.\n // This map reflects the completion state of all promises for each appId.\n initializationPromisesMap[appId] = _initializeAnalytics(\n app,\n dynamicConfigPromisesList,\n measurementIdToAppId,\n installations,\n gtagCoreFunction,\n dataLayerName,\n options\n );\n\n const analyticsInstance: AnalyticsService = new AnalyticsService(app);\n\n return analyticsInstance;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable camelcase */\n/**\n * @license\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { _getProvider, FirebaseApp, getApp } from '@firebase/app';\nimport {\n Analytics,\n AnalyticsCallOptions,\n AnalyticsSettings,\n ConsentSettings,\n CustomParams,\n EventNameString,\n EventParams\n} from './public-types';\nimport { Provider } from '@firebase/component';\nimport {\n isIndexedDBAvailable,\n validateIndexedDBOpenable,\n areCookiesEnabled,\n isBrowserExtension,\n getModularInstance,\n deepEqual\n} from '@firebase/util';\nimport { ANALYTICS_TYPE, GtagCommand } from './constants';\nimport {\n AnalyticsService,\n initializationPromisesMap,\n wrappedGtagFunction\n} from './factory';\nimport { logger } from './logger';\nimport {\n logEvent as internalLogEvent,\n setCurrentScreen as internalSetCurrentScreen,\n setUserId as internalSetUserId,\n setUserProperties as internalSetUserProperties,\n setAnalyticsCollectionEnabled as internalSetAnalyticsCollectionEnabled,\n _setConsentDefaultForInit,\n _setDefaultEventParametersForInit,\n internalGetGoogleAnalyticsClientId\n} from './functions';\nimport { ERROR_FACTORY, AnalyticsError } from './errors';\n\nexport { settings } from './factory';\n\ndeclare module '@firebase/component' {\n interface NameServiceMapping {\n [ANALYTICS_TYPE]: AnalyticsService;\n }\n}\n\n/**\n * Returns an {@link Analytics} instance for the given app.\n *\n * @public\n *\n * @param app - The {@link @firebase/app#FirebaseApp} to use.\n */\nexport function getAnalytics(app: FirebaseApp = getApp()): Analytics {\n app = getModularInstance(app);\n // Dependencies\n const analyticsProvider: Provider<'analytics'> = _getProvider(\n app,\n ANALYTICS_TYPE\n );\n\n if (analyticsProvider.isInitialized()) {\n return analyticsProvider.getImmediate();\n }\n\n return initializeAnalytics(app);\n}\n\n/**\n * Returns an {@link Analytics} instance for the given app.\n *\n * @public\n *\n * @param app - The {@link @firebase/app#FirebaseApp} to use.\n */\nexport function initializeAnalytics(\n app: FirebaseApp,\n options: AnalyticsSettings = {}\n): Analytics {\n // Dependencies\n const analyticsProvider: Provider<'analytics'> = _getProvider(\n app,\n ANALYTICS_TYPE\n );\n if (analyticsProvider.isInitialized()) {\n const existingInstance = analyticsProvider.getImmediate();\n if (deepEqual(options, analyticsProvider.getOptions())) {\n return existingInstance;\n } else {\n throw ERROR_FACTORY.create(AnalyticsError.ALREADY_INITIALIZED);\n }\n }\n const analyticsInstance = analyticsProvider.initialize({ options });\n return analyticsInstance;\n}\n\n/**\n * This is a public static method provided to users that wraps four different checks:\n *\n * 1. Check if it's not a browser extension environment.\n * 2. Check if cookies are enabled in current browser.\n * 3. Check if IndexedDB is supported by the browser environment.\n * 4. Check if the current browser context is valid for using `IndexedDB.open()`.\n *\n * @public\n *\n */\nexport async function isSupported(): Promise<boolean> {\n if (isBrowserExtension()) {\n return false;\n }\n if (!areCookiesEnabled()) {\n return false;\n }\n if (!isIndexedDBAvailable()) {\n return false;\n }\n\n try {\n const isDBOpenable: boolean = await validateIndexedDBOpenable();\n return isDBOpenable;\n } catch (error) {\n return false;\n }\n}\n\n/**\n * Use gtag `config` command to set `screen_name`.\n *\n * @public\n *\n * @deprecated Use {@link logEvent} with `eventName` as 'screen_view' and add relevant `eventParams`.\n * See {@link https://firebase.google.com/docs/analytics/screenviews | Track Screenviews}.\n *\n * @param analyticsInstance - The {@link Analytics} instance.\n * @param screenName - Screen name to set.\n */\nexport function setCurrentScreen(\n analyticsInstance: Analytics,\n screenName: string,\n options?: AnalyticsCallOptions\n): void {\n analyticsInstance = getModularInstance(analyticsInstance);\n internalSetCurrentScreen(\n wrappedGtagFunction,\n initializationPromisesMap[analyticsInstance.app.options.appId!],\n screenName,\n options\n ).catch(e => logger.error(e));\n}\n\n/**\n * Retrieves a unique Google Analytics identifier for the web client.\n * See {@link https://developers.google.com/analytics/devguides/collection/ga4/reference/config#client_id | client_id}.\n *\n * @public\n *\n * @param app - The {@link @firebase/app#FirebaseApp} to use.\n */\nexport async function getGoogleAnalyticsClientId(\n analyticsInstance: Analytics\n): Promise<string> {\n analyticsInstance = getModularInstance(analyticsInstance);\n return internalGetGoogleAnalyticsClientId(\n wrappedGtagFunction,\n initializationPromisesMap[analyticsInstance.app.options.appId!]\n );\n}\n\n/**\n * Use gtag `config` command to set `user_id`.\n *\n * @public\n *\n * @param analyticsInstance - The {@link Analytics} instance.\n * @param id - User ID to set.\n */\nexport function setUserId(\n analyticsInstance: Analytics,\n id: string | null,\n options?: AnalyticsCallOptions\n): void {\n analyticsInstance = getModularInstance(analyticsInstance);\n internalSetUserId(\n wrappedGtagFunction,\n initializationPromisesMap[analyticsInstance.app.options.appId!],\n id,\n options\n ).catch(e => logger.error(e));\n}\n\n/**\n * Use gtag `config` command to set all params specified.\n *\n * @public\n */\nexport function setUserProperties(\n analyticsInstance: Analytics,\n properties: CustomParams,\n options?: AnalyticsCallOptions\n): void {\n analyticsInstance = getModularInstance(analyticsInstance);\n internalSetUserProperties(\n wrappedGtagFunction,\n initializationPromisesMap[analyticsInstance.app.options.appId!],\n properties,\n options\n ).catch(e => logger.error(e));\n}\n\n/**\n * Sets whether Google Analytics collection is enabled for this app on this device.\n * Sets global `window['ga-disable-analyticsId'] = true;`\n *\n * @public\n *\n * @param analyticsInstance - The {@link Analytics} instance.\n * @param enabled - If true, enables collection, if false, disables it.\n */\nexport function setAnalyticsCollectionEnabled(\n analyticsInstance: Analytics,\n enabled: boolean\n): void {\n analyticsInstance = getModularInstance(analyticsInstance);\n internalSetAnalyticsCollectionEnabled(\n initializationPromisesMap[analyticsInstance.app.options.appId!],\n enabled\n ).catch(e => logger.error(e));\n}\n\n/**\n * Adds data that will be set on every event logged from the SDK, including automatic ones.\n * With gtag's \"set\" command, the values passed persist on the current page and are passed with\n * all subsequent events.\n * @public\n * @param customParams - Any custom params the user may pass to gtag.js.\n */\nexport function setDefaultEventParameters(customParams: CustomParams): void {\n // Check if reference to existing gtag function on window object exists\n if (wrappedGtagFunction) {\n wrappedGtagFunction(GtagCommand.SET, customParams);\n } else {\n _setDefaultEventParametersForInit(customParams);\n }\n}\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'add_payment_info',\n eventParams?: {\n coupon?: EventParams['coupon'];\n currency?: EventParams['currency'];\n items?: EventParams['items'];\n payment_type?: EventParams['payment_type'];\n value?: EventParams['value'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'add_shipping_info',\n eventParams?: {\n coupon?: EventParams['coupon'];\n currency?: EventParams['currency'];\n items?: EventParams['items'];\n shipping_tier?: EventParams['shipping_tier'];\n value?: EventParams['value'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'add_to_cart' | 'add_to_wishlist' | 'remove_from_cart',\n eventParams?: {\n currency?: EventParams['currency'];\n value?: EventParams['value'];\n items?: EventParams['items'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'begin_checkout',\n eventParams?: {\n currency?: EventParams['currency'];\n coupon?: EventParams['coupon'];\n value?: EventParams['value'];\n items?: EventParams['items'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'checkout_progress',\n eventParams?: {\n currency?: EventParams['currency'];\n coupon?: EventParams['coupon'];\n value?: EventParams['value'];\n items?: EventParams['items'];\n checkout_step?: EventParams['checkout_step'];\n checkout_option?: EventParams['checkout_option'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * See\n * {@link https://developers.google.com/analytics/devguides/collection/ga4/exceptions\n * | Measure exceptions}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'exception',\n eventParams?: {\n description?: EventParams['description'];\n fatal?: EventParams['fatal'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'generate_lead',\n eventParams?: {\n value?: EventParams['value'];\n currency?: EventParams['currency'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'login',\n eventParams?: {\n method?: EventParams['method'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * See\n * {@link https://developers.google.com/analytics/devguides/collection/ga4/page-view\n * | Page views}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'page_view',\n eventParams?: {\n page_title?: string;\n page_location?: string;\n page_path?: string;\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'purchase' | 'refund',\n eventParams?: {\n value?: EventParams['value'];\n currency?: EventParams['currency'];\n transaction_id: EventParams['transaction_id'];\n tax?: EventParams['tax'];\n shipping?: EventParams['shipping'];\n items?: EventParams['items'];\n coupon?: EventParams['coupon'];\n affiliation?: EventParams['affiliation'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * See {@link https://firebase.google.com/docs/analytics/screenviews\n * | Track Screenviews}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'screen_view',\n eventParams?: {\n firebase_screen: EventParams['firebase_screen'];\n firebase_screen_class: EventParams['firebase_screen_class'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'search' | 'view_search_results',\n eventParams?: {\n search_term?: EventParams['search_term'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'select_content',\n eventParams?: {\n content_type?: EventParams['content_type'];\n item_id?: EventParams['item_id'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'select_item',\n eventParams?: {\n items?: EventParams['items'];\n item_list_name?: EventParams['item_list_name'];\n item_list_id?: EventParams['item_list_id'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'select_promotion' | 'view_promotion',\n eventParams?: {\n items?: EventParams['items'];\n promotion_id?: EventParams['promotion_id'];\n promotion_name?: EventParams['promotion_name'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'set_checkout_option',\n eventParams?: {\n checkout_step?: EventParams['checkout_step'];\n checkout_option?: EventParams['checkout_option'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'share',\n eventParams?: {\n method?: EventParams['method'];\n content_type?: EventParams['content_type'];\n item_id?: EventParams['item_id'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'sign_up',\n eventParams?: {\n method?: EventParams['method'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'timing_complete',\n eventParams?: {\n name: string;\n value: number;\n event_category?: string;\n event_label?: string;\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'view_cart' | 'view_item',\n eventParams?: {\n currency?: EventParams['currency'];\n items?: EventParams['items'];\n value?: EventParams['value'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: 'view_item_list',\n eventParams?: {\n items?: EventParams['items'];\n item_list_name?: EventParams['item_list_name'];\n item_list_id?: EventParams['item_list_id'];\n [key: string]: any;\n },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * @public\n * List of recommended event parameters can be found in\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n */\nexport function logEvent<T extends string>(\n analyticsInstance: Analytics,\n eventName: CustomEventName<T>,\n eventParams?: { [key: string]: any },\n options?: AnalyticsCallOptions\n): void;\n\n/**\n * Sends a Google Analytics event with given `eventParams`. This method\n * automatically associates this logged event with this Firebase web\n * app instance on this device.\n * List of official event parameters can be found in the gtag.js\n * reference documentation:\n * {@link https://developers.google.com/gtagjs/reference/ga4-events\n * | the GA4 reference documentation}.\n *\n * @public\n */\nexport function logEvent(\n analyticsInstance: Analytics,\n eventName: string,\n eventParams?: EventParams,\n options?: AnalyticsCallOptions\n): void {\n analyticsInstance = getModularInstance(analyticsInstance);\n internalLogEvent(\n wrappedGtagFunction,\n initializationPromisesMap[analyticsInstance.app.options.appId!],\n eventName,\n eventParams,\n options\n ).catch(e => logger.error(e));\n}\n\n/**\n * Any custom event name string not in the standard list of recommended\n * event names.\n * @public\n */\nexport type CustomEventName<T> = T extends EventNameString ? never : T;\n\n/**\n * Sets the applicable end user consent state for this web app across all gtag references once\n * Firebase Analytics is initialized.\n *\n * Use the {@link ConsentSettings} to specify individual consent type values. By default consent\n * types are set to \"granted\".\n * @public\n * @param consentSettings - Maps the applicable end user consent state for gtag.js.\n */\nexport function setConsent(consentSettings: ConsentSettings): void {\n // Check if reference to existing gtag function on window object exists\n if (wrappedGtagFunction) {\n wrappedGtagFunction(GtagCommand.CONSENT, 'update', consentSettings);\n } else {\n _setConsentDefaultForInit(consentSettings);\n }\n}\n","/**\n * Firebase Analytics\n *\n * @packageDocumentation\n */\n\n/**\n * @license\n * Copyright 2019 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { registerVersion, _registerComponent } from '@firebase/app';\nimport { FirebaseAnalyticsInternal } from '@firebase/analytics-interop-types';\nimport { factory } from './factory';\nimport { ANALYTICS_TYPE } from './constants';\nimport {\n Component,\n ComponentType,\n ComponentContainer,\n InstanceFactoryOptions\n} from '@firebase/component';\nimport { ERROR_FACTORY, AnalyticsError } from './errors';\nimport { logEvent } from './api';\nimport { name, version } from '../package.json';\nimport { AnalyticsCallOptions } from './public-types';\nimport '@firebase/installations';\n\ndeclare global {\n interface Window {\n [key: string]: unknown;\n }\n}\n\nfunction registerAnalytics(): void {\n _registerComponent(\n new Component(\n ANALYTICS_TYPE,\n (container, { options: analyticsOptions }: InstanceFactoryOptions) => {\n // getImmediate for FirebaseApp will always succeed\n const app = container.getProvider('app').getImmediate();\n const installations = container\n .getProvider('installations-internal')\n .getImmediate();\n\n return factory(app, installations, analyticsOptions);\n },\n ComponentType.PUBLIC\n )\n );\n\n _registerComponent(\n new Component('analytics-internal', internalFactory, ComponentType.PRIVATE)\n );\n\n registerVersion(name, version);\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\n registerVersion(name, version, '__BUILD_TARGET__');\n\n function internalFactory(\n container: ComponentContainer\n ): FirebaseAnalyticsInternal {\n try {\n const analytics = container.getProvider(ANALYTICS_TYPE).getImmediate();\n return {\n logEvent: (\n eventName: string,\n eventParams?: { [key: string]: unknown },\n options?: AnalyticsCallOptions\n ) => logEvent(analytics, eventName, eventParams, options)\n };\n } catch (e) {\n throw ERROR_FACTORY.create(AnalyticsError.INTEROP_COMPONENT_REG_FAILED, {\n reason: e as Error\n });\n }\n }\n}\n\nregisterAnalytics();\n\nexport * from './api';\nexport * from './public-types';\n","// Import the functions you need from the SDKs you need\r\nimport { initializeApp } from \"firebase/app\";\r\nimport { getAnalytics } from \"firebase/analytics\";\r\nimport { GoogleAuthProvider, getAuth, signInWithPopup, createUserWithEmailAndPassword, signInWithEmailAndPassword, setPersistence, browserLocalPersistence, indexedDBLocalPersistence, initializeAuth, OAuthProvider } from \"firebase/auth\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\nimport { getApp } from 'firebase/app';\r\n\r\nconst firebaseConfig = {\r\n apiKey: process.env.REACT_APP_API_KEY,\r\n authDomain: process.env.REACT_APP_AUTH_DOMAIN,\r\n projectId: process.env.REACT_APP_PROJECT_ID,\r\n storageBucket: process.env.REACT_APP_STORAGE_BUCKET,\r\n messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,\r\n appId: process.env.REACT_APP_APP_ID,\r\n measurementId: process.env.REACT_APP_MEASUREMENT_ID\r\n};\r\n\r\n// Initialize Firebase\r\nconst app = initializeApp(firebaseConfig);\r\n\r\nexport const getFirebaseAuth = async () => {\r\n if (Capacitor.isNativePlatform()) {\r\n return initializeAuth(getApp(), {\r\n persistence: indexedDBLocalPersistence,\r\n });\r\n } else {\r\n return getAuth();\r\n }\r\n};\r\n\r\nconst provider = new GoogleAuthProvider();\r\nconst appleProvider = new OAuthProvider('apple.com')\r\n\r\nexport const auth = getAuth(getApp());\r\nsetPersistence(auth, Capacitor.isNativePlatform() ? indexedDBLocalPersistence : browserLocalPersistence);\r\n\r\nexport const signInWithGoogle = async () => signInWithPopup(auth, provider)\r\nexport const signInWithApple = async () => signInWithPopup(auth, appleProvider)\r\n\r\nexport const loginWithEmail = async (email, password) => signInWithEmailAndPassword(auth, email, password)\r\nexport const signupWithEmail = async (email, password) => createUserWithEmailAndPassword(auth, email, password)\r\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n target[key] = source[key];\n }\n }\n return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n read: function (value) {\n if (value[0] === '\"') {\n value = value.slice(1, -1);\n }\n return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n },\n write: function (value) {\n return encodeURIComponent(value).replace(\n /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n decodeURIComponent\n )\n }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n function set (name, value, attributes) {\n if (typeof document === 'undefined') {\n return\n }\n\n attributes = assign({}, defaultAttributes, attributes);\n\n if (typeof attributes.expires === 'number') {\n attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n }\n if (attributes.expires) {\n attributes.expires = attributes.expires.toUTCString();\n }\n\n name = encodeURIComponent(name)\n .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n .replace(/[()]/g, escape);\n\n var stringifiedAttributes = '';\n for (var attributeName in attributes) {\n if (!attributes[attributeName]) {\n continue\n }\n\n stringifiedAttributes += '; ' + attributeName;\n\n if (attributes[attributeName] === true) {\n continue\n }\n\n // Considers RFC 6265 section 5.2:\n // ...\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n // Consume the characters of the unparsed-attributes up to,\n // not including, the first %x3B (\";\") character.\n // ...\n stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n }\n\n return (document.cookie =\n name + '=' + converter.write(value, name) + stringifiedAttributes)\n }\n\n function get (name) {\n if (typeof document === 'undefined' || (arguments.length && !name)) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n var cookies = document.cookie ? document.cookie.split('; ') : [];\n var jar = {};\n for (var i = 0; i < cookies.length; i++) {\n var parts = cookies[i].split('=');\n var value = parts.slice(1).join('=');\n\n try {\n var found = decodeURIComponent(parts[0]);\n jar[found] = converter.read(value, found);\n\n if (name === found) {\n break\n }\n } catch (e) {}\n }\n\n return name ? jar[name] : jar\n }\n\n return Object.create(\n {\n set,\n get,\n remove: function (name, attributes) {\n set(\n name,\n '',\n assign({}, attributes, {\n expires: -1\n })\n );\n },\n withAttributes: function (attributes) {\n return init(this.converter, assign({}, this.attributes, attributes))\n },\n withConverter: function (converter) {\n return init(assign({}, this.converter, converter), this.attributes)\n }\n },\n {\n attributes: { value: Object.freeze(defaultAttributes) },\n converter: { value: Object.freeze(converter) }\n }\n )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import { registerPlugin } from '@capacitor/core';\n\nimport type { PreferencesPlugin } from './definitions';\n\nconst Preferences = registerPlugin<PreferencesPlugin>('Preferences', {\n web: () => import('./web').then(m => new m.PreferencesWeb()),\n});\n\nexport * from './definitions';\nexport { Preferences };\n","import Cookies from \"js-cookie\"\r\nimport { isMobile } from \"react-device-detect\"\r\nimport { Preferences } from '@capacitor/preferences';\r\nimport { Capacitor } from \"@capacitor/core\";\r\n\r\nexport const getToken = async () => {\r\n if (Capacitor.isNativePlatform()) {\r\n const { value } = await Preferences.get({ key: 'jwt' });\r\n return `Bearer ${value}`\r\n } else {\r\n return `Bearer ${Cookies.get('jwt')}`\r\n }\r\n}\r\n\r\nexport const getUserId = async () => {\r\n if (Capacitor.isNativePlatform()) {\r\n const { value } = await Preferences.get({ key: 'userId' });\r\n return value\r\n } else {\r\n return Cookies.get('userId')\r\n }\r\n}\r\n\r\nexport const getPhotoUrl = async () => {\r\n const { value } = await Preferences.get({ key: 'photoUrl' });\r\n if (value) sessionStorage.setItem('photoUrl', value)\r\n}\r\nexport const getRoutineStatePref = async () => {\r\n const { value } = await Preferences.get({ key: 'routineState' });\r\n return value ? value : null\r\n}\r\n\r\n\r\nexport const setUserId = async (userId: string) => {\r\n await Preferences.set({\r\n key: 'userId',\r\n value: userId\r\n });\r\n}\r\n\r\nexport const setToken = async (token: string) => {\r\n await Preferences.set({\r\n key: 'jwt',\r\n value: token\r\n });\r\n}\r\n\r\nexport const setPhotoUrl = async (photoUrl: string) => {\r\n await Preferences.set({\r\n key: 'photoUrl',\r\n value: photoUrl\r\n });\r\n}\r\n\r\nexport const setRoutineStatePref = async (routineState: string) => {\r\n await Preferences.set({\r\n key: 'routineState',\r\n value: routineState\r\n });\r\n localStorage.setItem('routineState', 'true')\r\n}\r\n\r\nexport const removeAllPref = async () => {\r\n await Preferences.remove({ key: 'jwt' })\r\n await Preferences.remove({ key: 'userId' })\r\n await Preferences.remove({ key: 'photoUrl' })\r\n await Preferences.remove({ key: 'routineState' })\r\n}\r\nexport const deleteRoutineStatePref = async () => {\r\n await Preferences.remove({ key: 'routineState' })\r\n}","const niceErrors = {\n 0: `Invalid value for configuration 'enforceActions', expected 'never', 'always' or 'observed'`,\n 1(annotationType, key: PropertyKey) {\n return `Cannot apply '${annotationType}' to '${key.toString()}': Field not found.`\n },\n /*\n 2(prop) {\n return `invalid decorator for '${prop.toString()}'`\n },\n 3(prop) {\n return `Cannot decorate '${prop.toString()}': action can only be used on properties with a function value.`\n },\n 4(prop) {\n return `Cannot decorate '${prop.toString()}': computed can only be used on getter properties.`\n },\n */\n 5: \"'keys()' can only be used on observable objects, arrays, sets and maps\",\n 6: \"'values()' can only be used on observable objects, arrays, sets and maps\",\n 7: \"'entries()' can only be used on observable objects, arrays and maps\",\n 8: \"'set()' can only be used on observable objects, arrays and maps\",\n 9: \"'remove()' can only be used on observable objects, arrays and maps\",\n 10: \"'has()' can only be used on observable objects, arrays and maps\",\n 11: \"'get()' can only be used on observable objects, arrays and maps\",\n 12: `Invalid annotation`,\n 13: `Dynamic observable objects cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 14: \"Intercept handlers should return nothing or a change object\",\n 15: `Observable arrays cannot be frozen. If you're passing observables to 3rd party component/function that calls Object.freeze, pass copy instead: toJS(observable)`,\n 16: `Modification exception: the internal structure of an observable array was changed.`,\n 17(index, length) {\n return `[mobx.array] Index out of bounds, ${index} is larger than ${length}`\n },\n 18: \"mobx.map requires Map polyfill for the current browser. Check babel-polyfill or core-js/es6/map.js\",\n 19(other) {\n return \"Cannot initialize from classes that inherit from Map: \" + other.constructor.name\n },\n 20(other) {\n return \"Cannot initialize map from \" + other\n },\n 21(dataStructure) {\n return `Cannot convert to map from '${dataStructure}'`\n },\n 22: \"mobx.set requires Set polyfill for the current browser. Check babel-polyfill or core-js/es6/set.js\",\n 23: \"It is not possible to get index atoms from arrays\",\n 24(thing) {\n return \"Cannot obtain administration from \" + thing\n },\n 25(property, name) {\n return `the entry '${property}' does not exist in the observable map '${name}'`\n },\n 26: \"please specify a property\",\n 27(property, name) {\n return `no observable property '${property.toString()}' found on the observable object '${name}'`\n },\n 28(thing) {\n return \"Cannot obtain atom from \" + thing\n },\n 29: \"Expecting some object\",\n 30: \"invalid action stack. did you forget to finish an action?\",\n 31: \"missing option for computed: get\",\n 32(name, derivation) {\n return `Cycle detected in computation ${name}: ${derivation}`\n },\n 33(name) {\n return `The setter of computed value '${name}' is trying to update itself. Did you intend to update an _observable_ value, instead of the computed property?`\n },\n 34(name) {\n return `[ComputedValue '${name}'] It is not possible to assign a new value to a computed value.`\n },\n 35: \"There are multiple, different versions of MobX active. Make sure MobX is loaded only once or use `configure({ isolateGlobalState: true })`\",\n 36: \"isolateGlobalState should be called before MobX is running any reactions\",\n 37(method) {\n return `[mobx] \\`observableArray.${method}()\\` mutates the array in-place, which is not allowed inside a derivation. Use \\`array.slice().${method}()\\` instead`\n },\n 38: \"'ownKeys()' can only be used on observable objects\",\n 39: \"'defineProperty()' can only be used on observable objects\"\n} as const\n\nconst errors: typeof niceErrors = __DEV__ ? niceErrors : ({} as any)\n\nexport function die(error: string | keyof typeof errors, ...args: any[]): never {\n if (__DEV__) {\n let e: any = typeof error === \"string\" ? error : errors[error]\n if (typeof e === \"function\") e = e.apply(null, args as any)\n throw new Error(`[MobX] ${e}`)\n }\n throw new Error(\n typeof error === \"number\"\n ? `[MobX] minified error nr: ${error}${\n args.length ? \" \" + args.map(String).join(\",\") : \"\"\n }. Find the full error at: https://github.com/mobxjs/mobx/blob/main/packages/mobx/src/errors.ts`\n : `[MobX] ${error}`\n )\n}\n","declare const window: any\ndeclare const self: any\n\nconst mockGlobal = {}\n\nexport function getGlobal() {\n if (typeof globalThis !== \"undefined\") {\n return globalThis\n }\n if (typeof window !== \"undefined\") {\n return window\n }\n if (typeof global !== \"undefined\") {\n return global\n }\n if (typeof self !== \"undefined\") {\n return self\n }\n return mockGlobal\n}\n","import { globalState, die } from \"../internal\"\n\n// We shorten anything used > 5 times\nexport const assign = Object.assign\nexport const getDescriptor = Object.getOwnPropertyDescriptor\nexport const defineProperty = Object.defineProperty\nexport const objectPrototype = Object.prototype\n\nexport const EMPTY_ARRAY = []\nObject.freeze(EMPTY_ARRAY)\n\nexport const EMPTY_OBJECT = {}\nObject.freeze(EMPTY_OBJECT)\n\nexport interface Lambda {\n (): void\n name?: string\n}\n\nconst hasProxy = typeof Proxy !== \"undefined\"\nconst plainObjectString = Object.toString()\n\nexport function assertProxies() {\n if (!hasProxy) {\n die(\n __DEV__\n ? \"`Proxy` objects are not available in the current environment. Please configure MobX to enable a fallback implementation.`\"\n : \"Proxy not available\"\n )\n }\n}\n\nexport function warnAboutProxyRequirement(msg: string) {\n if (__DEV__ && globalState.verifyProxies) {\n die(\n \"MobX is currently configured to be able to run in ES5 mode, but in ES5 MobX won't be able to \" +\n msg\n )\n }\n}\n\nexport function getNextId() {\n return ++globalState.mobxGuid\n}\n\n/**\n * Makes sure that the provided function is invoked at most once.\n */\nexport function once(func: Lambda): Lambda {\n let invoked = false\n return function () {\n if (invoked) {\n return\n }\n invoked = true\n return (func as any).apply(this, arguments)\n }\n}\n\nexport const noop = () => {}\n\nexport function isFunction(fn: any): fn is Function {\n return typeof fn === \"function\"\n}\n\nexport function isString(value: any): value is string {\n return typeof value === \"string\"\n}\n\nexport function isStringish(value: any): value is string | number | symbol {\n const t = typeof value\n switch (t) {\n case \"string\":\n case \"symbol\":\n case \"number\":\n return true\n }\n return false\n}\n\nexport function isObject(value: any): value is Object {\n return value !== null && typeof value === \"object\"\n}\n\nexport function isPlainObject(value: any) {\n if (!isObject(value)) {\n return false\n }\n const proto = Object.getPrototypeOf(value)\n if (proto == null) {\n return true\n }\n const protoConstructor = Object.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n return (\n typeof protoConstructor === \"function\" && protoConstructor.toString() === plainObjectString\n )\n}\n\n// https://stackoverflow.com/a/37865170\nexport function isGenerator(obj: any): boolean {\n const constructor = obj?.constructor\n if (!constructor) {\n return false\n }\n if (\n \"GeneratorFunction\" === constructor.name ||\n \"GeneratorFunction\" === constructor.displayName\n ) {\n return true\n }\n return false\n}\n\nexport function addHiddenProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: true,\n configurable: true,\n value\n })\n}\n\nexport function addHiddenFinalProp(object: any, propName: PropertyKey, value: any) {\n defineProperty(object, propName, {\n enumerable: false,\n writable: false,\n configurable: true,\n value\n })\n}\n\nexport function createInstanceofPredicate<T>(\n name: string,\n theClass: new (...args: any[]) => T\n): (x: any) => x is T {\n const propName = \"isMobX\" + name\n theClass.prototype[propName] = true\n return function (x) {\n return isObject(x) && x[propName] === true\n } as any\n}\n\nexport function isES6Map(thing: any): thing is Map<any, any> {\n return thing instanceof Map\n}\n\nexport function isES6Set(thing: any): thing is Set<any> {\n return thing instanceof Set\n}\n\nconst hasGetOwnPropertySymbols = typeof Object.getOwnPropertySymbols !== \"undefined\"\n\n/**\n * Returns the following: own enumerable keys and symbols.\n */\nexport function getPlainObjectKeys(object: any) {\n const keys = Object.keys(object)\n // Not supported in IE, so there are not going to be symbol props anyway...\n if (!hasGetOwnPropertySymbols) {\n return keys\n }\n const symbols = Object.getOwnPropertySymbols(object)\n if (!symbols.length) {\n return keys\n }\n return [...keys, ...symbols.filter(s => objectPrototype.propertyIsEnumerable.call(object, s))]\n}\n\n// From Immer utils\n// Returns all own keys, including non-enumerable and symbolic\nexport const ownKeys: (target: any) => Array<string | symbol> =\n typeof Reflect !== \"undefined\" && Reflect.ownKeys\n ? Reflect.ownKeys\n : hasGetOwnPropertySymbols\n ? obj => Object.getOwnPropertyNames(obj).concat(Object.getOwnPropertySymbols(obj) as any)\n : /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport function stringifyKey(key: any): string {\n if (typeof key === \"string\") {\n return key\n }\n if (typeof key === \"symbol\") {\n return key.toString()\n }\n return new String(key).toString()\n}\n\nexport function toPrimitive(value: any) {\n return value === null ? null : typeof value === \"object\" ? \"\" + value : value\n}\n\nexport function hasProp(target: Object, prop: PropertyKey): boolean {\n return objectPrototype.hasOwnProperty.call(target, prop)\n}\n\n// From Immer utils\nexport const getOwnPropertyDescriptors =\n Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(target: any) {\n // Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n const res: any = {}\n // Note: without polyfill for ownKeys, symbols won't be picked up\n ownKeys(target).forEach(key => {\n res[key] = getDescriptor(target, key)\n })\n return res\n }\n","import { Annotation, addHiddenProp, AnnotationsMap, hasProp, die, isOverride } from \"../internal\"\n\nexport const storedAnnotationsSymbol = Symbol(\"mobx-stored-annotations\")\n\n/**\n * Creates a function that acts as\n * - decorator\n * - annotation object\n */\nexport function createDecoratorAnnotation(annotation: Annotation): PropertyDecorator & Annotation {\n function decorator(target, property) {\n storeAnnotation(target, property, annotation)\n }\n return Object.assign(decorator, annotation)\n}\n\n/**\n * Stores annotation to prototype,\n * so it can be inspected later by `makeObservable` called from constructor\n */\nexport function storeAnnotation(prototype: any, key: PropertyKey, annotation: Annotation) {\n if (!hasProp(prototype, storedAnnotationsSymbol)) {\n addHiddenProp(prototype, storedAnnotationsSymbol, {\n // Inherit annotations\n ...prototype[storedAnnotationsSymbol]\n })\n }\n // @override must override something\n if (__DEV__ && isOverride(annotation) && !hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n die(\n `'${fieldName}' is decorated with 'override', ` +\n `but no such decorated member was found on prototype.`\n )\n }\n // Cannot re-decorate\n assertNotDecorated(prototype, annotation, key)\n\n // Ignore override\n if (!isOverride(annotation)) {\n prototype[storedAnnotationsSymbol][key] = annotation\n }\n}\n\nfunction assertNotDecorated(prototype: object, annotation: Annotation, key: PropertyKey) {\n if (__DEV__ && !isOverride(annotation) && hasProp(prototype[storedAnnotationsSymbol], key)) {\n const fieldName = `${prototype.constructor.name}.prototype.${key.toString()}`\n const currentAnnotationType = prototype[storedAnnotationsSymbol][key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '@${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already decorated with '@${currentAnnotationType}'.` +\n `\\nRe-decorating fields is not allowed.` +\n `\\nUse '@override' decorator for methods overridden by subclass.`\n )\n }\n}\n\n/**\n * Collects annotations from prototypes and stores them on target (instance)\n */\nexport function collectStoredAnnotations(target): AnnotationsMap<any, any> {\n if (!hasProp(target, storedAnnotationsSymbol)) {\n if (__DEV__ && !target[storedAnnotationsSymbol]) {\n die(\n `No annotations were passed to makeObservable, but no decorated members have been found either`\n )\n }\n // We need a copy as we will remove annotation from the list once it's applied.\n addHiddenProp(target, storedAnnotationsSymbol, { ...target[storedAnnotationsSymbol] })\n }\n return target[storedAnnotationsSymbol]\n}\n","import {\n die,\n Annotation,\n hasProp,\n createDecoratorAnnotation,\n ObservableObjectAdministration,\n MakeResult\n} from \"../internal\"\n\nconst OVERRIDE = \"override\"\n\nexport const override: Annotation & PropertyDecorator = createDecoratorAnnotation({\n annotationType_: OVERRIDE,\n make_,\n extend_\n})\n\nexport function isOverride(annotation: Annotation): boolean {\n return annotation.annotationType_ === OVERRIDE\n}\n\nfunction make_(adm: ObservableObjectAdministration, key): MakeResult {\n // Must not be plain object\n if (__DEV__ && adm.isPlainObject_) {\n die(\n `Cannot apply '${this.annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${this.annotationType_}' cannot be used on plain objects.`\n )\n }\n // Must override something\n if (__DEV__ && !hasProp(adm.appliedAnnotations_!, key)) {\n die(\n `'${adm.name_}.${key.toString()}' is annotated with '${this.annotationType_}', ` +\n `but no such annotated member was found on prototype.`\n )\n }\n return MakeResult.Cancel\n}\n\nfunction extend_(adm, key, descriptor, proxyTrap): boolean {\n die(`'${this.annotationType_}' can only be used with 'makeObservable'`)\n}\n","import {\n IDerivationState_,\n IObservable,\n IDerivation,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n noop,\n onBecomeObserved,\n onBecomeUnobserved,\n propagateChanged,\n reportObserved,\n startBatch,\n Lambda,\n globalState\n} from \"../internal\"\n\nexport const $mobx = Symbol(\"mobx administration\")\n\nexport interface IAtom extends IObservable {\n reportObserved(): boolean\n reportChanged()\n}\n\nexport class Atom implements IAtom {\n isPendingUnobservation_ = false // for effective unobserving. BaseAtom has true, for extra optimization, so its onBecomeUnobserved never gets called, because it's not needed\n isBeingObserved_ = false\n observers_ = new Set<IDerivation>()\n\n diffValue_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.NOT_TRACKING_\n /**\n * Create a new atom. For debugging purposes it is recommended to give it a name.\n * The onBecomeObserved and onBecomeUnobserved callbacks can be used for resource management.\n */\n constructor(public name_ = __DEV__ ? \"Atom@\" + getNextId() : \"Atom\") {}\n\n // onBecomeObservedListeners\n public onBOL: Set<Lambda> | undefined\n // onBecomeUnobservedListeners\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Invoke this method to notify mobx that your atom has been used somehow.\n * Returns true if there is currently a reactive context.\n */\n public reportObserved(): boolean {\n return reportObserved(this)\n }\n\n /**\n * Invoke this method _after_ this method has changed to signal mobx that all its observers should invalidate.\n */\n public reportChanged() {\n startBatch()\n propagateChanged(this)\n // We could update state version only at the end of batch,\n // but we would still have to switch some global flag here to signal a change.\n globalState.stateVersion =\n globalState.stateVersion < Number.MAX_SAFE_INTEGER\n ? globalState.stateVersion + 1\n : Number.MIN_SAFE_INTEGER\n endBatch()\n }\n\n toString() {\n return this.name_\n }\n}\n\nexport const isAtom = createInstanceofPredicate(\"Atom\", Atom)\n\nexport function createAtom(\n name: string,\n onBecomeObservedHandler: () => void = noop,\n onBecomeUnobservedHandler: () => void = noop\n): IAtom {\n const atom = new Atom(name)\n // default `noop` listener will not initialize the hook Set\n if (onBecomeObservedHandler !== noop) {\n onBecomeObserved(atom, onBecomeObservedHandler)\n }\n\n if (onBecomeUnobservedHandler !== noop) {\n onBecomeUnobserved(atom, onBecomeUnobservedHandler)\n }\n return atom\n}\n","import {\n IComputedValue,\n IObservable,\n IObservableArray,\n Lambda,\n ObservableMap,\n getAtom,\n ObservableSet,\n isFunction,\n IObservableValue\n} from \"../internal\"\n\nconst ON_BECOME_OBSERVED = \"onBO\"\nconst ON_BECOME_UNOBSERVED = \"onBUO\"\n\nexport function onBecomeObserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeObserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_OBSERVED, thing, arg2, arg3)\n}\n\nexport function onBecomeUnobserved(\n value:\n | IObservable\n | IComputedValue<any>\n | IObservableArray<any>\n | ObservableMap<any, any>\n | ObservableSet<any>\n | IObservableValue<any>,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved<K, V = any>(\n value: ObservableMap<K, V> | Object,\n property: K,\n listener: Lambda\n): Lambda\nexport function onBecomeUnobserved(thing, arg2, arg3?): Lambda {\n return interceptHook(ON_BECOME_UNOBSERVED, thing, arg2, arg3)\n}\n\nfunction interceptHook(hook: \"onBO\" | \"onBUO\", thing, arg2, arg3) {\n const atom: IObservable =\n typeof arg3 === \"function\" ? getAtom(thing, arg2) : (getAtom(thing) as any)\n const cb = isFunction(arg3) ? arg3 : arg2\n const listenersKey = `${hook}L` as \"onBOL\" | \"onBUOL\"\n\n if (atom[listenersKey]) {\n atom[listenersKey]!.add(cb)\n } else {\n atom[listenersKey] = new Set<Lambda>([cb])\n }\n\n return function () {\n const hookListeners = atom[listenersKey]\n if (hookListeners) {\n hookListeners.delete(cb)\n if (hookListeners.size === 0) {\n delete atom[listenersKey]\n }\n }\n }\n}\n","import { deepEqual } from \"../internal\"\n\nexport interface IEqualsComparer<T> {\n (a: T, b: T): boolean\n}\n\nfunction identityComparer(a: any, b: any): boolean {\n return a === b\n}\n\nfunction structuralComparer(a: any, b: any): boolean {\n return deepEqual(a, b)\n}\n\nfunction shallowComparer(a: any, b: any): boolean {\n return deepEqual(a, b, 1)\n}\n\nfunction defaultComparer(a: any, b: any): boolean {\n if (Object.is) {\n return Object.is(a, b)\n }\n\n return a === b ? a !== 0 || 1 / a === 1 / b : a !== a && b !== b\n}\n\nexport const comparer = {\n identity: identityComparer,\n structural: structuralComparer,\n default: defaultComparer,\n shallow: shallowComparer\n}\n","import {\n deepEqual,\n isES6Map,\n isES6Set,\n isObservable,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n isPlainObject,\n observable,\n die,\n isAction,\n autoAction,\n flow,\n isFlow,\n isGenerator\n} from \"../internal\"\n\nexport interface IEnhancer<T> {\n (newValue: T, oldValue: T | undefined, name: string): T\n}\n\nexport function deepEnhancer(v, _, name) {\n // it is an observable already, done\n if (isObservable(v)) {\n return v\n }\n\n // something that can be converted and mutated?\n if (Array.isArray(v)) {\n return observable.array(v, { name })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name })\n }\n if (typeof v === \"function\" && !isAction(v) && !isFlow(v)) {\n if (isGenerator(v)) {\n return flow(v)\n } else {\n return autoAction(name, v)\n }\n }\n return v\n}\n\nexport function shallowEnhancer(v, _, name): any {\n if (v === undefined || v === null) {\n return v\n }\n if (isObservableObject(v) || isObservableArray(v) || isObservableMap(v) || isObservableSet(v)) {\n return v\n }\n if (Array.isArray(v)) {\n return observable.array(v, { name, deep: false })\n }\n if (isPlainObject(v)) {\n return observable.object(v, undefined, { name, deep: false })\n }\n if (isES6Map(v)) {\n return observable.map(v, { name, deep: false })\n }\n if (isES6Set(v)) {\n return observable.set(v, { name, deep: false })\n }\n\n if (__DEV__) {\n die(\n \"The shallow modifier / decorator can only used in combination with arrays, objects, maps and sets\"\n )\n }\n}\n\nexport function referenceEnhancer(newValue?) {\n // never turn into an observable\n return newValue\n}\n\nexport function refStructEnhancer(v, oldValue): any {\n if (__DEV__ && isObservable(v)) {\n die(`observable.struct should not be used with observable values`)\n }\n if (deepEqual(v, oldValue)) {\n return oldValue\n }\n return v\n}\n","import {\n ObservableObjectAdministration,\n createAction,\n isAction,\n defineProperty,\n die,\n isFunction,\n Annotation,\n globalState,\n MakeResult\n} from \"../internal\"\n\nexport function createActionAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // bound\n if (this.options_?.bound) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Break\n }\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n if (isAction(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor, false)\n defineProperty(source, key, actionDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const actionDescriptor = createActionDescriptor(adm, this, key, descriptor)\n return adm.defineProperty_(key, actionDescriptor, proxyTrap)\n}\n\nfunction assertActionDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a function value.`\n )\n }\n}\n\nexport function createActionDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n) {\n assertActionDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n if (annotation.options_?.bound) {\n value = value.bind(adm.proxy_ ?? adm.target_)\n }\n return {\n value: createAction(\n annotation.options_?.name ?? key.toString(),\n value,\n annotation.options_?.autoAction ?? false,\n // https://github.com/mobxjs/mobx/discussions/3140\n annotation.options_?.bound ? adm.proxy_ ?? adm.target_ : undefined\n ),\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import {\n ObservableObjectAdministration,\n Annotation,\n defineProperty,\n die,\n flow,\n isFlow,\n isFunction,\n globalState,\n MakeResult,\n hasProp\n} from \"../internal\"\n\nexport function createFlowAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // own\n if (source === adm.target_) {\n return this.extend_(adm, key, descriptor, false) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // prototype\n // bound - must annotate protos to support super.flow()\n if (this.options_?.bound && (!hasProp(adm.target_, key) || !isFlow(adm.target_[key]))) {\n if (this.extend_(adm, key, descriptor, false) === null) {\n return MakeResult.Cancel\n }\n }\n if (isFlow(descriptor.value)) {\n // A prototype could have been annotated already by other constructor,\n // rest of the proto chain must be annotated already\n return MakeResult.Break\n }\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, false, false)\n defineProperty(source, key, flowDescriptor)\n return MakeResult.Continue\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n const flowDescriptor = createFlowDescriptor(adm, this, key, descriptor, this.options_?.bound)\n return adm.defineProperty_(key, flowDescriptor, proxyTrap)\n}\n\nfunction assertFlowDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { value }: PropertyDescriptor\n) {\n if (__DEV__ && !isFunction(value)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on properties with a generator function value.`\n )\n }\n}\n\nfunction createFlowDescriptor(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n bound: boolean,\n // provides ability to disable safeDescriptors for prototypes\n safeDescriptors: boolean = globalState.safeDescriptors\n): PropertyDescriptor {\n assertFlowDescriptor(adm, annotation, key, descriptor)\n let { value } = descriptor\n // In case of flow.bound, the descriptor can be from already annotated prototype\n if (!isFlow(value)) {\n value = flow(value)\n }\n if (bound) {\n // We do not keep original function around, so we bind the existing flow\n value = value.bind(adm.proxy_ ?? adm.target_)\n // This is normally set by `flow`, but `bind` returns new function...\n value.isMobXFlow = true\n }\n return {\n value,\n // Non-configurable for classes\n // prevents accidental field redefinition in subclass\n configurable: safeDescriptors ? adm.isPlainObject_ : true,\n // https://github.com/mobxjs/mobx/pull/2641#issuecomment-737292058\n enumerable: false,\n // Non-obsevable, therefore non-writable\n // Also prevents rewriting in subclass constructor\n writable: safeDescriptors ? false : true\n }\n}\n","import { ObservableObjectAdministration, die, Annotation, MakeResult } from \"../internal\"\n\nexport function createComputedAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertComputedDescriptor(adm, this, key, descriptor)\n return adm.defineComputedProperty_(\n key,\n {\n ...this.options_,\n get: descriptor.get,\n set: descriptor.set\n },\n proxyTrap\n )\n}\n\nfunction assertComputedDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n { get }: PropertyDescriptor\n) {\n if (__DEV__ && !get) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' can only be used on getter(+setter) properties.`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n deepEnhancer,\n die,\n Annotation,\n MakeResult\n} from \"../internal\"\n\nexport function createObservableAnnotation(name: string, options?: object): Annotation {\n return {\n annotationType_: name,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n): MakeResult {\n return this.extend_(adm, key, descriptor, false) === null ? MakeResult.Cancel : MakeResult.Break\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n assertObservableDescriptor(adm, this, key, descriptor)\n return adm.defineObservableProperty_(\n key,\n descriptor.value,\n this.options_?.enhancer ?? deepEnhancer,\n proxyTrap\n )\n}\n\nfunction assertObservableDescriptor(\n adm: ObservableObjectAdministration,\n { annotationType_ }: Annotation,\n key: PropertyKey,\n descriptor: PropertyDescriptor\n) {\n if (__DEV__ && !(\"value\" in descriptor)) {\n die(\n `Cannot apply '${annotationType_}' to '${adm.name_}.${key.toString()}':` +\n `\\n'${annotationType_}' cannot be used on getter/setter properties`\n )\n }\n}\n","import {\n ObservableObjectAdministration,\n observable,\n Annotation,\n defineProperty,\n createAction,\n globalState,\n flow,\n computed,\n autoAction,\n isGenerator,\n MakeResult\n} from \"../internal\"\n\nconst AUTO = \"true\"\n\nexport const autoAnnotation: Annotation = createAutoAnnotation()\n\nexport function createAutoAnnotation(options?: object): Annotation {\n return {\n annotationType_: AUTO,\n options_: options,\n make_,\n extend_\n }\n}\n\nfunction make_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n source: object\n): MakeResult {\n // getter -> computed\n if (descriptor.get) {\n return computed.make_(adm, key, descriptor, source)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.make_\n const set = createAction(key.toString(), descriptor.set) as (v: any) => void\n // own\n if (source === adm.target_) {\n return adm.defineProperty_(key, {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set\n }) === null\n ? MakeResult.Cancel\n : MakeResult.Continue\n }\n // proto\n defineProperty(source, key, {\n configurable: true,\n set\n })\n return MakeResult.Continue\n }\n // function on proto -> autoAction/flow\n if (source !== adm.target_ && typeof descriptor.value === \"function\") {\n if (isGenerator(descriptor.value)) {\n const flowAnnotation = this.options_?.autoBind ? flow.bound : flow\n return flowAnnotation.make_(adm, key, descriptor, source)\n }\n const actionAnnotation = this.options_?.autoBind ? autoAction.bound : autoAction\n return actionAnnotation.make_(adm, key, descriptor, source)\n }\n // other -> observable\n // Copy props from proto as well, see test:\n // \"decorate should work with Object.create\"\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n return observableAnnotation.make_(adm, key, descriptor, source)\n}\n\nfunction extend_(\n adm: ObservableObjectAdministration,\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean\n): boolean | null {\n // getter -> computed\n if (descriptor.get) {\n return computed.extend_(adm, key, descriptor, proxyTrap)\n }\n // lone setter -> action setter\n if (descriptor.set) {\n // TODO make action applicable to setter and delegate to action.extend_\n return adm.defineProperty_(\n key,\n {\n configurable: globalState.safeDescriptors ? adm.isPlainObject_ : true,\n set: createAction(key.toString(), descriptor.set) as (v: any) => void\n },\n proxyTrap\n )\n }\n // other -> observable\n // if function respect autoBind option\n if (typeof descriptor.value === \"function\" && this.options_?.autoBind) {\n descriptor.value = descriptor.value.bind(adm.proxy_ ?? adm.target_)\n }\n let observableAnnotation = this.options_?.deep === false ? observable.ref : observable\n return observableAnnotation.extend_(adm, key, descriptor, proxyTrap)\n}\n","import {\n IEnhancer,\n IEqualsComparer,\n IObservableArray,\n IObservableMapInitialValues,\n IObservableSetInitialValues,\n IObservableValue,\n ObservableMap,\n ObservableSet,\n ObservableValue,\n asDynamicObservableObject,\n createObservableArray,\n deepEnhancer,\n extendObservable,\n isES6Map,\n isES6Set,\n isObservable,\n isPlainObject,\n referenceEnhancer,\n Annotation,\n shallowEnhancer,\n refStructEnhancer,\n AnnotationsMap,\n asObservableObject,\n storeAnnotation,\n createDecoratorAnnotation,\n createLegacyArray,\n globalState,\n assign,\n isStringish,\n createObservableAnnotation,\n createAutoAnnotation\n} from \"../internal\"\n\nexport const OBSERVABLE = \"observable\"\nexport const OBSERVABLE_REF = \"observable.ref\"\nexport const OBSERVABLE_SHALLOW = \"observable.shallow\"\nexport const OBSERVABLE_STRUCT = \"observable.struct\"\n\nexport type CreateObservableOptions = {\n name?: string\n equals?: IEqualsComparer<any>\n deep?: boolean\n defaultDecorator?: Annotation\n proxy?: boolean\n autoBind?: boolean\n}\n\n// Predefined bags of create observable options, to avoid allocating temporarily option objects\n// in the majority of cases\nexport const defaultCreateObservableOptions: CreateObservableOptions = {\n deep: true,\n name: undefined,\n defaultDecorator: undefined,\n proxy: true\n}\nObject.freeze(defaultCreateObservableOptions)\n\nexport function asCreateObservableOptions(thing: any): CreateObservableOptions {\n return thing || defaultCreateObservableOptions\n}\n\nconst observableAnnotation = createObservableAnnotation(OBSERVABLE)\nconst observableRefAnnotation = createObservableAnnotation(OBSERVABLE_REF, {\n enhancer: referenceEnhancer\n})\nconst observableShallowAnnotation = createObservableAnnotation(OBSERVABLE_SHALLOW, {\n enhancer: shallowEnhancer\n})\nconst observableStructAnnotation = createObservableAnnotation(OBSERVABLE_STRUCT, {\n enhancer: refStructEnhancer\n})\nconst observableDecoratorAnnotation = createDecoratorAnnotation(observableAnnotation)\n\nexport function getEnhancerFromOptions(options: CreateObservableOptions): IEnhancer<any> {\n return options.deep === true\n ? deepEnhancer\n : options.deep === false\n ? referenceEnhancer\n : getEnhancerFromAnnotation(options.defaultDecorator)\n}\n\nexport function getAnnotationFromOptions(\n options?: CreateObservableOptions\n): Annotation | undefined {\n return options ? options.defaultDecorator ?? createAutoAnnotation(options) : undefined\n}\n\nexport function getEnhancerFromAnnotation(annotation?: Annotation): IEnhancer<any> {\n return !annotation ? deepEnhancer : annotation.options_?.enhancer ?? deepEnhancer\n}\n\n/**\n * Turns an object, array or function into a reactive structure.\n * @param v the value which should become observable.\n */\nfunction createObservable(v: any, arg2?: any, arg3?: any) {\n // @observable someProp;\n if (isStringish(arg2)) {\n storeAnnotation(v, arg2, observableAnnotation)\n return\n }\n\n // already observable - ignore\n if (isObservable(v)) {\n return v\n }\n\n // plain object\n if (isPlainObject(v)) {\n return observable.object(v, arg2, arg3)\n }\n\n // Array\n if (Array.isArray(v)) {\n return observable.array(v, arg2)\n }\n\n // Map\n if (isES6Map(v)) {\n return observable.map(v, arg2)\n }\n\n // Set\n if (isES6Set(v)) {\n return observable.set(v, arg2)\n }\n\n // other object - ignore\n if (typeof v === \"object\" && v !== null) {\n return v\n }\n\n // anything else\n return observable.box(v, arg2)\n}\nassign(createObservable, observableDecoratorAnnotation)\n\nexport interface IObservableValueFactory {\n <T>(value: T, options?: CreateObservableOptions): IObservableValue<T>\n <T>(value?: T, options?: CreateObservableOptions): IObservableValue<T | undefined>\n}\n\nexport interface IObservableFactory extends Annotation, PropertyDecorator {\n <T = any>(value: T[], options?: CreateObservableOptions): IObservableArray<T>\n <T = any>(value: Set<T>, options?: CreateObservableOptions): ObservableSet<T>\n <K = any, V = any>(value: Map<K, V>, options?: CreateObservableOptions): ObservableMap<K, V>\n <T extends object>(\n value: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T\n\n box: IObservableValueFactory\n array: <T = any>(initialValues?: T[], options?: CreateObservableOptions) => IObservableArray<T>\n set: <T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ) => ObservableSet<T>\n map: <K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ) => ObservableMap<K, V>\n object: <T = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ) => T\n\n /**\n * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts.\n */\n ref: Annotation & PropertyDecorator\n /**\n * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure\n */\n shallow: Annotation & PropertyDecorator\n deep: Annotation & PropertyDecorator\n struct: Annotation & PropertyDecorator\n}\n\nconst observableFactories: IObservableFactory = {\n box<T = any>(value: T, options?: CreateObservableOptions): IObservableValue<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableValue(value, getEnhancerFromOptions(o), o.name, true, o.equals)\n },\n array<T = any>(initialValues?: T[], options?: CreateObservableOptions): IObservableArray<T> {\n const o = asCreateObservableOptions(options)\n return (\n globalState.useProxies === false || o.proxy === false\n ? createLegacyArray\n : createObservableArray\n )(initialValues, getEnhancerFromOptions(o), o.name)\n },\n map<K = any, V = any>(\n initialValues?: IObservableMapInitialValues<K, V>,\n options?: CreateObservableOptions\n ): ObservableMap<K, V> {\n const o = asCreateObservableOptions(options)\n return new ObservableMap<K, V>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n set<T = any>(\n initialValues?: IObservableSetInitialValues<T>,\n options?: CreateObservableOptions\n ): ObservableSet<T> {\n const o = asCreateObservableOptions(options)\n return new ObservableSet<T>(initialValues, getEnhancerFromOptions(o), o.name)\n },\n object<T extends object = any>(\n props: T,\n decorators?: AnnotationsMap<T, never>,\n options?: CreateObservableOptions\n ): T {\n return extendObservable(\n globalState.useProxies === false || options?.proxy === false\n ? asObservableObject({}, options)\n : asDynamicObservableObject({}, options),\n props,\n decorators\n )\n },\n ref: createDecoratorAnnotation(observableRefAnnotation),\n shallow: createDecoratorAnnotation(observableShallowAnnotation),\n deep: observableDecoratorAnnotation,\n struct: createDecoratorAnnotation(observableStructAnnotation)\n} as any\n\n// eslint-disable-next-line\nexport var observable: IObservableFactory = assign(createObservable, observableFactories)\n","import {\n $mobx,\n IIsObservableObject,\n ObservableObjectAdministration,\n warnAboutProxyRequirement,\n assertProxies,\n die,\n isStringish,\n globalState,\n CreateObservableOptions,\n asObservableObject\n} from \"../internal\"\n\nfunction getAdm(target): ObservableObjectAdministration {\n return target[$mobx]\n}\n\n// Optimization: we don't need the intermediate objects and could have a completely custom administration for DynamicObjects,\n// and skip either the internal values map, or the base object with its property descriptors!\nconst objectProxyTraps: ProxyHandler<any> = {\n has(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"detect new properties using the 'in' operator. Use 'has' from 'mobx' instead.\"\n )\n }\n return getAdm(target).has_(name)\n },\n get(target: IIsObservableObject, name: PropertyKey): any {\n return getAdm(target).get_(name)\n },\n set(target: IIsObservableObject, name: PropertyKey, value: any): boolean {\n if (!isStringish(name)) {\n return false\n }\n if (__DEV__ && !getAdm(target).values_.has(name)) {\n warnAboutProxyRequirement(\n \"add a new observable property through direct assignment. Use 'set' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).set_(name, value, true) ?? true\n },\n deleteProperty(target: IIsObservableObject, name: PropertyKey): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"delete properties from an observable object. Use 'remove' from 'mobx' instead.\"\n )\n }\n if (!isStringish(name)) {\n return false\n }\n // null (intercepted) -> true (success)\n return getAdm(target).delete_(name, true) ?? true\n },\n defineProperty(\n target: IIsObservableObject,\n name: PropertyKey,\n descriptor: PropertyDescriptor\n ): boolean {\n if (__DEV__) {\n warnAboutProxyRequirement(\n \"define property on an observable object. Use 'defineProperty' from 'mobx' instead.\"\n )\n }\n // null (intercepted) -> true (success)\n return getAdm(target).defineProperty_(name, descriptor) ?? true\n },\n ownKeys(target: IIsObservableObject): ArrayLike<string | symbol> {\n if (__DEV__ && globalState.trackingDerivation) {\n warnAboutProxyRequirement(\n \"iterate keys to detect added / removed properties. Use 'keys' from 'mobx' instead.\"\n )\n }\n return getAdm(target).ownKeys_()\n },\n preventExtensions(target) {\n die(13)\n }\n}\n\nexport function asDynamicObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n assertProxies()\n target = asObservableObject(target, options)\n return (target[$mobx].proxy_ ??= new Proxy(target, objectProxyTraps))\n}\n","import {\n ComputedValue,\n IComputedValueOptions,\n Annotation,\n storeAnnotation,\n createDecoratorAnnotation,\n isStringish,\n isPlainObject,\n isFunction,\n die,\n IComputedValue,\n createComputedAnnotation,\n comparer\n} from \"../internal\"\n\nexport const COMPUTED = \"computed\"\nexport const COMPUTED_STRUCT = \"computed.struct\"\n\nexport interface IComputedFactory extends Annotation, PropertyDecorator {\n // @computed(opts)\n <T>(options: IComputedValueOptions<T>): Annotation & PropertyDecorator\n // computed(fn, opts)\n <T>(func: () => T, options?: IComputedValueOptions<T>): IComputedValue<T>\n\n struct: Annotation & PropertyDecorator\n}\n\nconst computedAnnotation = createComputedAnnotation(COMPUTED)\nconst computedStructAnnotation = createComputedAnnotation(COMPUTED_STRUCT, {\n equals: comparer.structural\n})\n\n/**\n * Decorator for class properties: @computed get value() { return expr; }.\n * For legacy purposes also invokable as ES5 observable created: `computed(() => expr)`;\n */\nexport const computed: IComputedFactory = function computed(arg1, arg2) {\n if (isStringish(arg2)) {\n // @computed\n return storeAnnotation(arg1, arg2, computedAnnotation)\n }\n if (isPlainObject(arg1)) {\n // @computed({ options })\n return createDecoratorAnnotation(createComputedAnnotation(COMPUTED, arg1))\n }\n\n // computed(expr, options?)\n if (__DEV__) {\n if (!isFunction(arg1)) {\n die(\"First argument to `computed` should be an expression.\")\n }\n if (isFunction(arg2)) {\n die(\n \"A setter as second argument is no longer supported, use `{ set: fn }` option instead\"\n )\n }\n }\n const opts: IComputedValueOptions<any> = isPlainObject(arg2) ? arg2 : {}\n opts.get = arg1\n opts.name ||= arg1.name || \"\" /* for generated name */\n\n return new ComputedValue(opts)\n} as any\n\nObject.assign(computed, computedAnnotation)\n\ncomputed.struct = createDecoratorAnnotation(computedStructAnnotation)\n","import {\n IDerivation,\n endBatch,\n globalState,\n isSpyEnabled,\n spyReportEnd,\n spyReportStart,\n startBatch,\n untrackedEnd,\n untrackedStart,\n isFunction,\n allowStateReadsStart,\n allowStateReadsEnd,\n ACTION,\n EMPTY_ARRAY,\n die,\n getDescriptor,\n defineProperty\n} from \"../internal\"\n\n// we don't use globalState for these in order to avoid possible issues with multiple\n// mobx versions\nlet currentActionId = 0\nlet nextActionId = 1\nconst isFunctionNameConfigurable = getDescriptor(() => {}, \"name\")?.configurable ?? false\n\n// we can safely recycle this object\nconst tmpNameDescriptor: PropertyDescriptor = {\n value: \"action\",\n configurable: true,\n writable: false,\n enumerable: false\n}\n\nexport function createAction(\n actionName: string,\n fn: Function,\n autoAction: boolean = false,\n ref?: Object\n): Function {\n if (__DEV__) {\n if (!isFunction(fn)) {\n die(\"`action` can only be invoked on functions\")\n }\n if (typeof actionName !== \"string\" || !actionName) {\n die(`actions should have valid names, got: '${actionName}'`)\n }\n }\n function res() {\n return executeAction(actionName, autoAction, fn, ref || this, arguments)\n }\n res.isMobxAction = true\n if (isFunctionNameConfigurable) {\n tmpNameDescriptor.value = actionName\n defineProperty(res, \"name\", tmpNameDescriptor)\n }\n return res\n}\n\nexport function executeAction(\n actionName: string,\n canRunAsDerivation: boolean,\n fn: Function,\n scope?: any,\n args?: IArguments\n) {\n const runInfo = _startAction(actionName, canRunAsDerivation, scope, args)\n try {\n return fn.apply(scope, args)\n } catch (err) {\n runInfo.error_ = err\n throw err\n } finally {\n _endAction(runInfo)\n }\n}\n\nexport interface IActionRunInfo {\n prevDerivation_: IDerivation | null\n prevAllowStateChanges_: boolean\n prevAllowStateReads_: boolean\n notifySpy_: boolean\n startTime_: number\n error_?: any\n parentActionId_: number\n actionId_: number\n runAsAction_?: boolean\n}\n\nexport function _startAction(\n actionName: string,\n canRunAsDerivation: boolean, // true for autoAction\n scope: any,\n args?: IArguments\n): IActionRunInfo {\n const notifySpy_ = __DEV__ && isSpyEnabled() && !!actionName\n let startTime_: number = 0\n if (__DEV__ && notifySpy_) {\n startTime_ = Date.now()\n const flattenedArgs = args ? Array.from(args) : EMPTY_ARRAY\n spyReportStart({\n type: ACTION,\n name: actionName,\n object: scope,\n arguments: flattenedArgs\n })\n }\n const prevDerivation_ = globalState.trackingDerivation\n const runAsAction = !canRunAsDerivation || !prevDerivation_\n startBatch()\n let prevAllowStateChanges_ = globalState.allowStateChanges // by default preserve previous allow\n if (runAsAction) {\n untrackedStart()\n prevAllowStateChanges_ = allowStateChangesStart(true)\n }\n const prevAllowStateReads_ = allowStateReadsStart(true)\n const runInfo = {\n runAsAction_: runAsAction,\n prevDerivation_,\n prevAllowStateChanges_,\n prevAllowStateReads_,\n notifySpy_,\n startTime_,\n actionId_: nextActionId++,\n parentActionId_: currentActionId\n }\n currentActionId = runInfo.actionId_\n return runInfo\n}\n\nexport function _endAction(runInfo: IActionRunInfo) {\n if (currentActionId !== runInfo.actionId_) {\n die(30)\n }\n currentActionId = runInfo.parentActionId_\n\n if (runInfo.error_ !== undefined) {\n globalState.suppressReactionErrors = true\n }\n allowStateChangesEnd(runInfo.prevAllowStateChanges_)\n allowStateReadsEnd(runInfo.prevAllowStateReads_)\n endBatch()\n if (runInfo.runAsAction_) {\n untrackedEnd(runInfo.prevDerivation_)\n }\n if (__DEV__ && runInfo.notifySpy_) {\n spyReportEnd({ time: Date.now() - runInfo.startTime_ })\n }\n globalState.suppressReactionErrors = false\n}\n\nexport function allowStateChanges<T>(allowStateChanges: boolean, func: () => T): T {\n const prev = allowStateChangesStart(allowStateChanges)\n try {\n return func()\n } finally {\n allowStateChangesEnd(prev)\n }\n}\n\nexport function allowStateChangesStart(allowStateChanges: boolean) {\n const prev = globalState.allowStateChanges\n globalState.allowStateChanges = allowStateChanges\n return prev\n}\n\nexport function allowStateChangesEnd(prev: boolean) {\n globalState.allowStateChanges = prev\n}\n","import {\n Atom,\n IEnhancer,\n IInterceptable,\n IEqualsComparer,\n IInterceptor,\n IListenable,\n Lambda,\n checkIfStateModificationsAreAllowed,\n comparer,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReport,\n spyReportEnd,\n spyReportStart,\n toPrimitive,\n globalState,\n IUNCHANGED,\n UPDATE\n} from \"../internal\"\n\nexport interface IValueWillChange<T> {\n object: IObservableValue<T>\n type: \"update\"\n newValue: T\n}\n\nexport type IValueDidChange<T = any> = {\n type: \"update\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\nexport type IBoxDidChange<T = any> =\n | {\n type: \"create\"\n observableKind: \"value\"\n object: IObservableValue<T>\n debugObjectName: string\n newValue: T\n }\n | IValueDidChange<T>\n\nexport interface IObservableValue<T> {\n get(): T\n set(value: T): void\n}\n\nconst CREATE = \"create\"\n\nexport class ObservableValue<T>\n extends Atom\n implements IObservableValue<T>, IInterceptable<IValueWillChange<T>>, IListenable\n{\n hasUnreportedChange_ = false\n interceptors_\n changeListeners_\n value_\n dehancer: any\n\n constructor(\n value: T,\n public enhancer: IEnhancer<T>,\n public name_ = __DEV__ ? \"ObservableValue@\" + getNextId() : \"ObservableValue\",\n notifySpy = true,\n private equals: IEqualsComparer<any> = comparer.default\n ) {\n super(name_)\n this.value_ = enhancer(value, undefined, name_)\n if (__DEV__ && notifySpy && isSpyEnabled()) {\n // only notify spy if this is a stand-alone observable\n spyReport({\n type: CREATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue: \"\" + this.value_\n })\n }\n }\n\n private dehanceValue(value: T): T {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n public set(newValue: T) {\n const oldValue = this.value_\n newValue = this.prepareNewValue_(newValue) as any\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n if (__DEV__ && notifySpy) {\n spyReportStart({\n type: UPDATE,\n object: this,\n observableKind: \"value\",\n debugObjectName: this.name_,\n newValue,\n oldValue\n })\n }\n this.setNewValue_(newValue)\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private prepareNewValue_(newValue): T | IUNCHANGED {\n checkIfStateModificationsAreAllowed(this)\n if (hasInterceptors(this)) {\n const change = interceptChange<IValueWillChange<T>>(this, {\n object: this,\n type: UPDATE,\n newValue\n })\n if (!change) {\n return globalState.UNCHANGED\n }\n newValue = change.newValue\n }\n // apply modifier\n newValue = this.enhancer(newValue, this.value_, this.name_)\n return this.equals(this.value_, newValue) ? globalState.UNCHANGED : newValue\n }\n\n setNewValue_(newValue: T) {\n const oldValue = this.value_\n this.value_ = newValue\n this.reportChanged()\n if (hasListeners(this)) {\n notifyListeners(this, {\n type: UPDATE,\n object: this,\n newValue,\n oldValue\n })\n }\n }\n\n public get(): T {\n this.reportObserved()\n return this.dehanceValue(this.value_)\n }\n\n intercept_(handler: IInterceptor<IValueWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n observe_(listener: (change: IValueDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n if (fireImmediately) {\n listener({\n observableKind: \"value\",\n debugObjectName: this.name_,\n object: this,\n type: UPDATE,\n newValue: this.value_,\n oldValue: undefined\n })\n }\n return registerListener(this, listener)\n }\n\n raw() {\n // used by MST ot get undehanced value\n return this.value_\n }\n\n toJSON() {\n return this.get()\n }\n\n toString() {\n return `${this.name_}[${this.value_}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isObservableValue = createInstanceofPredicate(\"ObservableValue\", ObservableValue) as (\n x: any\n) => x is IObservableValue<any>\n","import {\n CaughtException,\n IDerivation,\n IDerivationState_,\n IEqualsComparer,\n IObservable,\n Lambda,\n TraceMode,\n autorun,\n clearObserving,\n comparer,\n createAction,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n propagateChangeConfirmed,\n propagateMaybeChanged,\n reportObserved,\n shouldCompute,\n spyReport,\n startBatch,\n toPrimitive,\n trackDerivedFunction,\n untrackedEnd,\n untrackedStart,\n UPDATE,\n die,\n allowStateChangesStart,\n allowStateChangesEnd\n} from \"../internal\"\n\nexport interface IComputedValue<T> {\n get(): T\n set(value: T): void\n}\n\nexport interface IComputedValueOptions<T> {\n get?: () => T\n set?: (value: T) => void\n name?: string\n equals?: IEqualsComparer<T>\n context?: any\n requiresReaction?: boolean\n keepAlive?: boolean\n}\n\nexport type IComputedDidChange<T = any> = {\n type: \"update\"\n observableKind: \"computed\"\n object: unknown\n debugObjectName: string\n newValue: T\n oldValue: T | undefined\n}\n\n/**\n * A node in the state dependency root that observes other nodes, and can be observed itself.\n *\n * ComputedValue will remember the result of the computation for the duration of the batch, or\n * while being observed.\n *\n * During this time it will recompute only when one of its direct dependencies changed,\n * but only when it is being accessed with `ComputedValue.get()`.\n *\n * Implementation description:\n * 1. First time it's being accessed it will compute and remember result\n * give back remembered result until 2. happens\n * 2. First time any deep dependency change, propagate POSSIBLY_STALE to all observers, wait for 3.\n * 3. When it's being accessed, recompute if any shallow dependency changed.\n * if result changed: propagate STALE to all observers, that were POSSIBLY_STALE from the last step.\n * go to step 2. either way\n *\n * If at any point it's outside batch and it isn't observed: reset everything and go to 1.\n */\nexport class ComputedValue<T> implements IObservable, IComputedValue<T>, IDerivation {\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_ = null // during tracking it's an array with new observed observers\n isBeingObserved_ = false\n isPendingUnobservation_: boolean = false\n observers_ = new Set<IDerivation>()\n diffValue_ = 0\n runId_ = 0\n lastAccessedBy_ = 0\n lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n unboundDepsCount_ = 0\n protected value_: T | undefined | CaughtException = new CaughtException(null)\n name_: string\n triggeredBy_?: string\n isComputing_: boolean = false // to check for cycles\n isRunningSetter_: boolean = false\n derivation: () => T // N.B: unminified as it is used by MST\n setter_?: (value: T) => void\n isTracing_: TraceMode = TraceMode.NONE\n scope_: Object | undefined\n private equals_: IEqualsComparer<any>\n private requiresReaction_: boolean | undefined\n keepAlive_: boolean\n\n /**\n * Create a new computed value based on a function expression.\n *\n * The `name` property is for debug purposes only.\n *\n * The `equals` property specifies the comparer function to use to determine if a newly produced\n * value differs from the previous value. Two comparers are provided in the library; `defaultComparer`\n * compares based on identity comparison (===), and `structuralComparer` deeply compares the structure.\n * Structural comparison can be convenient if you always produce a new aggregated object and\n * don't want to notify observers if it is structurally the same.\n * This is useful for working with vectors, mouse coordinates etc.\n */\n constructor(options: IComputedValueOptions<T>) {\n if (!options.get) {\n die(31)\n }\n this.derivation = options.get!\n this.name_ = options.name || (__DEV__ ? \"ComputedValue@\" + getNextId() : \"ComputedValue\")\n if (options.set) {\n this.setter_ = createAction(\n __DEV__ ? this.name_ + \"-setter\" : \"ComputedValue-setter\",\n options.set\n ) as any\n }\n this.equals_ =\n options.equals ||\n ((options as any).compareStructural || (options as any).struct\n ? comparer.structural\n : comparer.default)\n this.scope_ = options.context\n this.requiresReaction_ = options.requiresReaction\n this.keepAlive_ = !!options.keepAlive\n }\n\n onBecomeStale_() {\n propagateMaybeChanged(this)\n }\n\n public onBOL: Set<Lambda> | undefined\n public onBUOL: Set<Lambda> | undefined\n\n public onBO() {\n if (this.onBOL) {\n this.onBOL.forEach(listener => listener())\n }\n }\n\n public onBUO() {\n if (this.onBUOL) {\n this.onBUOL.forEach(listener => listener())\n }\n }\n\n /**\n * Returns the current value of this computed value.\n * Will evaluate its computation first if needed.\n */\n public get(): T {\n if (this.isComputing_) {\n die(32, this.name_, this.derivation)\n }\n if (\n globalState.inBatch === 0 &&\n // !globalState.trackingDerivatpion &&\n this.observers_.size === 0 &&\n !this.keepAlive_\n ) {\n if (shouldCompute(this)) {\n this.warnAboutUntrackedRead_()\n startBatch() // See perf test 'computed memoization'\n this.value_ = this.computeValue_(false)\n endBatch()\n }\n } else {\n reportObserved(this)\n if (shouldCompute(this)) {\n let prevTrackingContext = globalState.trackingContext\n if (this.keepAlive_ && !prevTrackingContext) {\n globalState.trackingContext = this\n }\n if (this.trackAndCompute()) {\n propagateChangeConfirmed(this)\n }\n globalState.trackingContext = prevTrackingContext\n }\n }\n const result = this.value_!\n\n if (isCaughtException(result)) {\n throw result.cause\n }\n return result\n }\n\n public set(value: T) {\n if (this.setter_) {\n if (this.isRunningSetter_) {\n die(33, this.name_)\n }\n this.isRunningSetter_ = true\n try {\n this.setter_.call(this.scope_, value)\n } finally {\n this.isRunningSetter_ = false\n }\n } else {\n die(34, this.name_)\n }\n }\n\n trackAndCompute(): boolean {\n // N.B: unminified as it is used by MST\n const oldValue = this.value_\n const wasSuspended =\n /* see #1208 */ this.dependenciesState_ === IDerivationState_.NOT_TRACKING_\n const newValue = this.computeValue_(true)\n\n const changed =\n wasSuspended ||\n isCaughtException(oldValue) ||\n isCaughtException(newValue) ||\n !this.equals_(oldValue, newValue)\n\n if (changed) {\n this.value_ = newValue\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n object: this.scope_,\n type: \"update\",\n oldValue,\n newValue\n } as IComputedDidChange)\n }\n }\n\n return changed\n }\n\n computeValue_(track: boolean) {\n this.isComputing_ = true\n // don't allow state changes during computation\n const prev = allowStateChangesStart(false)\n let res: T | CaughtException\n if (track) {\n res = trackDerivedFunction(this, this.derivation, this.scope_)\n } else {\n if (globalState.disableErrorBoundaries === true) {\n res = this.derivation.call(this.scope_)\n } else {\n try {\n res = this.derivation.call(this.scope_)\n } catch (e) {\n res = new CaughtException(e)\n }\n }\n }\n allowStateChangesEnd(prev)\n this.isComputing_ = false\n return res\n }\n\n suspend_() {\n if (!this.keepAlive_) {\n clearObserving(this)\n this.value_ = undefined // don't hold on to computed value!\n if (__DEV__ && this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' was suspended and it will recompute on the next access.`\n )\n }\n }\n }\n\n observe_(listener: (change: IComputedDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n let firstTime = true\n let prevValue: T | undefined = undefined\n return autorun(() => {\n // TODO: why is this in a different place than the spyReport() function? in all other observables it's called in the same place\n let newValue = this.get()\n if (!firstTime || fireImmediately) {\n const prevU = untrackedStart()\n listener({\n observableKind: \"computed\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n newValue,\n oldValue: prevValue\n })\n untrackedEnd(prevU)\n }\n firstTime = false\n prevValue = newValue\n })\n }\n\n warnAboutUntrackedRead_() {\n if (!__DEV__) {\n return\n }\n if (this.isTracing_ !== TraceMode.NONE) {\n console.log(\n `[mobx.trace] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n if (\n typeof this.requiresReaction_ === \"boolean\"\n ? this.requiresReaction_\n : globalState.computedRequiresReaction\n ) {\n console.warn(\n `[mobx] Computed value '${this.name_}' is being read outside a reactive context. Doing a full recompute.`\n )\n }\n }\n\n toString() {\n return `${this.name_}[${this.derivation.toString()}]`\n }\n\n valueOf(): T {\n return toPrimitive(this.get())\n }\n\n [Symbol.toPrimitive]() {\n return this.valueOf()\n }\n}\n\nexport const isComputedValue = createInstanceofPredicate(\"ComputedValue\", ComputedValue)\n","import {\n IAtom,\n IDepTreeNode,\n IObservable,\n addObserver,\n globalState,\n isComputedValue,\n removeObserver\n} from \"../internal\"\n\nexport enum IDerivationState_ {\n // before being run or (outside batch and not being observed)\n // at this point derivation is not holding any data about dependency tree\n NOT_TRACKING_ = -1,\n // no shallow dependency changed since last computation\n // won't recalculate derivation\n // this is what makes mobx fast\n UP_TO_DATE_ = 0,\n // some deep dependency changed, but don't know if shallow dependency changed\n // will require to check first if UP_TO_DATE or POSSIBLY_STALE\n // currently only ComputedValue will propagate POSSIBLY_STALE\n //\n // having this state is second big optimization:\n // don't have to recompute on every dependency change, but only when it's needed\n POSSIBLY_STALE_ = 1,\n // A shallow dependency has changed since last computation and the derivation\n // will need to recompute when it's needed next.\n STALE_ = 2\n}\n\nexport enum TraceMode {\n NONE,\n LOG,\n BREAK\n}\n\n/**\n * A derivation is everything that can be derived from the state (all the atoms) in a pure manner.\n * See https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n */\nexport interface IDerivation extends IDepTreeNode {\n observing_: IObservable[]\n newObserving_: null | IObservable[]\n dependenciesState_: IDerivationState_\n /**\n * Id of the current run of a derivation. Each time the derivation is tracked\n * this number is increased by one. This number is globally unique\n */\n runId_: number\n /**\n * amount of dependencies used by the derivation in this run, which has not been bound yet.\n */\n unboundDepsCount_: number\n onBecomeStale_(): void\n isTracing_: TraceMode\n\n /**\n * warn if the derivation has no dependencies after creation/update\n */\n requiresObservable_?: boolean\n}\n\nexport class CaughtException {\n constructor(public cause: any) {\n // Empty\n }\n}\n\nexport function isCaughtException(e: any): e is CaughtException {\n return e instanceof CaughtException\n}\n\n/**\n * Finds out whether any dependency of the derivation has actually changed.\n * If dependenciesState is 1 then it will recalculate dependencies,\n * if any dependency changed it will propagate it by changing dependenciesState to 2.\n *\n * By iterating over the dependencies in the same order that they were reported and\n * stopping on the first change, all the recalculations are only called for ComputedValues\n * that will be tracked by derivation. That is because we assume that if the first x\n * dependencies of the derivation doesn't change then the derivation should run the same way\n * up until accessing x-th dependency.\n */\nexport function shouldCompute(derivation: IDerivation): boolean {\n switch (derivation.dependenciesState_) {\n case IDerivationState_.UP_TO_DATE_:\n return false\n case IDerivationState_.NOT_TRACKING_:\n case IDerivationState_.STALE_:\n return true\n case IDerivationState_.POSSIBLY_STALE_: {\n // state propagation can occur outside of action/reactive context #2195\n const prevAllowStateReads = allowStateReadsStart(true)\n const prevUntracked = untrackedStart() // no need for those computeds to be reported, they will be picked up in trackDerivedFunction.\n const obs = derivation.observing_,\n l = obs.length\n for (let i = 0; i < l; i++) {\n const obj = obs[i]\n if (isComputedValue(obj)) {\n if (globalState.disableErrorBoundaries) {\n obj.get()\n } else {\n try {\n obj.get()\n } catch (e) {\n // we are not interested in the value *or* exception at this moment, but if there is one, notify all\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n // if ComputedValue `obj` actually changed it will be computed and propagated to its observers.\n // and `derivation` is an observer of `obj`\n // invariantShouldCompute(derivation)\n if ((derivation.dependenciesState_ as any) === IDerivationState_.STALE_) {\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return true\n }\n }\n }\n changeDependenciesStateTo0(derivation)\n untrackedEnd(prevUntracked)\n allowStateReadsEnd(prevAllowStateReads)\n return false\n }\n }\n}\n\nexport function isComputingDerivation() {\n return globalState.trackingDerivation !== null // filter out actions inside computations\n}\n\nexport function checkIfStateModificationsAreAllowed(atom: IAtom) {\n if (!__DEV__) {\n return\n }\n const hasObservers = atom.observers_.size > 0\n // Should not be possible to change observed state outside strict mode, except during initialization, see #563\n if (\n !globalState.allowStateChanges &&\n (hasObservers || globalState.enforceActions === \"always\")\n ) {\n console.warn(\n \"[MobX] \" +\n (globalState.enforceActions\n ? \"Since strict-mode is enabled, changing (observed) observable values without using an action is not allowed. Tried to modify: \"\n : \"Side effects like changing state are not allowed at this point. Are you trying to modify state from, for example, a computed value or the render function of a React component? You can wrap side effects in 'runInAction' (or decorate functions with 'action') if needed. Tried to modify: \") +\n atom.name_\n )\n }\n}\n\nexport function checkIfStateReadsAreAllowed(observable: IObservable) {\n if (__DEV__ && !globalState.allowStateReads && globalState.observableRequiresReaction) {\n console.warn(\n `[mobx] Observable '${observable.name_}' being read outside a reactive context.`\n )\n }\n}\n\n/**\n * Executes the provided function `f` and tracks which observables are being accessed.\n * The tracking information is stored on the `derivation` object and the derivation is registered\n * as observer of any of the accessed observables.\n */\nexport function trackDerivedFunction<T>(derivation: IDerivation, f: () => T, context: any) {\n const prevAllowStateReads = allowStateReadsStart(true)\n // pre allocate array allocation + room for variation in deps\n // array will be trimmed by bindDependencies\n changeDependenciesStateTo0(derivation)\n derivation.newObserving_ = new Array(derivation.observing_.length + 100)\n derivation.unboundDepsCount_ = 0\n derivation.runId_ = ++globalState.runId\n const prevTracking = globalState.trackingDerivation\n globalState.trackingDerivation = derivation\n globalState.inBatch++\n let result\n if (globalState.disableErrorBoundaries === true) {\n result = f.call(context)\n } else {\n try {\n result = f.call(context)\n } catch (e) {\n result = new CaughtException(e)\n }\n }\n globalState.inBatch--\n globalState.trackingDerivation = prevTracking\n bindDependencies(derivation)\n\n warnAboutDerivationWithoutDependencies(derivation)\n allowStateReadsEnd(prevAllowStateReads)\n return result\n}\n\nfunction warnAboutDerivationWithoutDependencies(derivation: IDerivation) {\n if (!__DEV__) {\n return\n }\n\n if (derivation.observing_.length !== 0) {\n return\n }\n\n if (\n typeof derivation.requiresObservable_ === \"boolean\"\n ? derivation.requiresObservable_\n : globalState.reactionRequiresObservable\n ) {\n console.warn(\n `[mobx] Derivation '${derivation.name_}' is created/updated without reading any observable value.`\n )\n }\n}\n\n/**\n * diffs newObserving with observing.\n * update observing to be newObserving with unique observables\n * notify observers that become observed/unobserved\n */\nfunction bindDependencies(derivation: IDerivation) {\n // invariant(derivation.dependenciesState !== IDerivationState.NOT_TRACKING, \"INTERNAL ERROR bindDependencies expects derivation.dependenciesState !== -1\");\n const prevObserving = derivation.observing_\n const observing = (derivation.observing_ = derivation.newObserving_!)\n let lowestNewObservingDerivationState = IDerivationState_.UP_TO_DATE_\n\n // Go through all new observables and check diffValue: (this list can contain duplicates):\n // 0: first occurrence, change to 1 and keep it\n // 1: extra occurrence, drop it\n let i0 = 0,\n l = derivation.unboundDepsCount_\n for (let i = 0; i < l; i++) {\n const dep = observing[i]\n if (dep.diffValue_ === 0) {\n dep.diffValue_ = 1\n if (i0 !== i) {\n observing[i0] = dep\n }\n i0++\n }\n\n // Upcast is 'safe' here, because if dep is IObservable, `dependenciesState` will be undefined,\n // not hitting the condition\n if ((dep as any as IDerivation).dependenciesState_ > lowestNewObservingDerivationState) {\n lowestNewObservingDerivationState = (dep as any as IDerivation).dependenciesState_\n }\n }\n observing.length = i0\n\n derivation.newObserving_ = null // newObserving shouldn't be needed outside tracking (statement moved down to work around FF bug, see #614)\n\n // Go through all old observables and check diffValue: (it is unique after last bindDependencies)\n // 0: it's not in new observables, unobserve it\n // 1: it keeps being observed, don't want to notify it. change to 0\n l = prevObserving.length\n while (l--) {\n const dep = prevObserving[l]\n if (dep.diffValue_ === 0) {\n removeObserver(dep, derivation)\n }\n dep.diffValue_ = 0\n }\n\n // Go through all new observables and check diffValue: (now it should be unique)\n // 0: it was set to 0 in last loop. don't need to do anything.\n // 1: it wasn't observed, let's observe it. set back to 0\n while (i0--) {\n const dep = observing[i0]\n if (dep.diffValue_ === 1) {\n dep.diffValue_ = 0\n addObserver(dep, derivation)\n }\n }\n\n // Some new observed derivations may become stale during this derivation computation\n // so they have had no chance to propagate staleness (#916)\n if (lowestNewObservingDerivationState !== IDerivationState_.UP_TO_DATE_) {\n derivation.dependenciesState_ = lowestNewObservingDerivationState\n derivation.onBecomeStale_()\n }\n}\n\nexport function clearObserving(derivation: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR clearObserving should be called only inside batch\");\n const obs = derivation.observing_\n derivation.observing_ = []\n let i = obs.length\n while (i--) {\n removeObserver(obs[i], derivation)\n }\n\n derivation.dependenciesState_ = IDerivationState_.NOT_TRACKING_\n}\n\nexport function untracked<T>(action: () => T): T {\n const prev = untrackedStart()\n try {\n return action()\n } finally {\n untrackedEnd(prev)\n }\n}\n\nexport function untrackedStart(): IDerivation | null {\n const prev = globalState.trackingDerivation\n globalState.trackingDerivation = null\n return prev\n}\n\nexport function untrackedEnd(prev: IDerivation | null) {\n globalState.trackingDerivation = prev\n}\n\nexport function allowStateReadsStart(allowStateReads: boolean) {\n const prev = globalState.allowStateReads\n globalState.allowStateReads = allowStateReads\n return prev\n}\n\nexport function allowStateReadsEnd(prev: boolean) {\n globalState.allowStateReads = prev\n}\n\n/**\n * needed to keep `lowestObserverState` correct. when changing from (2 or 1) to 0\n *\n */\nexport function changeDependenciesStateTo0(derivation: IDerivation) {\n if (derivation.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n return\n }\n derivation.dependenciesState_ = IDerivationState_.UP_TO_DATE_\n\n const obs = derivation.observing_\n let i = obs.length\n while (i--) {\n obs[i].lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n}\n","import {\n Lambda,\n ComputedValue,\n IDependencyTree,\n IDerivation,\n IDerivationState_,\n TraceMode,\n getDependencyTree,\n globalState,\n runReactions,\n checkIfStateReadsAreAllowed\n} from \"../internal\"\n\nexport interface IDepTreeNode {\n name_: string\n observing_?: IObservable[]\n}\n\nexport interface IObservable extends IDepTreeNode {\n diffValue_: number\n /**\n * Id of the derivation *run* that last accessed this observable.\n * If this id equals the *run* id of the current derivation,\n * the dependency is already established\n */\n lastAccessedBy_: number\n isBeingObserved_: boolean\n\n lowestObserverState_: IDerivationState_ // Used to avoid redundant propagations\n isPendingUnobservation_: boolean // Used to push itself to global.pendingUnobservations at most once per batch.\n\n observers_: Set<IDerivation>\n\n onBUO(): void\n onBO(): void\n\n onBUOL: Set<Lambda> | undefined\n onBOL: Set<Lambda> | undefined\n}\n\nexport function hasObservers(observable: IObservable): boolean {\n return observable.observers_ && observable.observers_.size > 0\n}\n\nexport function getObservers(observable: IObservable): Set<IDerivation> {\n return observable.observers_\n}\n\n// function invariantObservers(observable: IObservable) {\n// const list = observable.observers\n// const map = observable.observersIndexes\n// const l = list.length\n// for (let i = 0; i < l; i++) {\n// const id = list[i].__mapid\n// if (i) {\n// invariant(map[id] === i, \"INTERNAL ERROR maps derivation.__mapid to index in list\") // for performance\n// } else {\n// invariant(!(id in map), \"INTERNAL ERROR observer on index 0 shouldn't be held in map.\") // for performance\n// }\n// }\n// invariant(\n// list.length === 0 || Object.keys(map).length === list.length - 1,\n// \"INTERNAL ERROR there is no junk in map\"\n// )\n// }\nexport function addObserver(observable: IObservable, node: IDerivation) {\n // invariant(node.dependenciesState !== -1, \"INTERNAL ERROR, can add only dependenciesState !== -1\");\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR add already added node\");\n // invariantObservers(observable);\n\n observable.observers_.add(node)\n if (observable.lowestObserverState_ > node.dependenciesState_) {\n observable.lowestObserverState_ = node.dependenciesState_\n }\n\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR didn't add node\");\n}\n\nexport function removeObserver(observable: IObservable, node: IDerivation) {\n // invariant(globalState.inBatch > 0, \"INTERNAL ERROR, remove should be called only inside batch\");\n // invariant(observable._observers.indexOf(node) !== -1, \"INTERNAL ERROR remove already removed node\");\n // invariantObservers(observable);\n observable.observers_.delete(node)\n if (observable.observers_.size === 0) {\n // deleting last observer\n queueForUnobservation(observable)\n }\n // invariantObservers(observable);\n // invariant(observable._observers.indexOf(node) === -1, \"INTERNAL ERROR remove already removed node2\");\n}\n\nexport function queueForUnobservation(observable: IObservable) {\n if (observable.isPendingUnobservation_ === false) {\n // invariant(observable._observers.length === 0, \"INTERNAL ERROR, should only queue for unobservation unobserved observables\");\n observable.isPendingUnobservation_ = true\n globalState.pendingUnobservations.push(observable)\n }\n}\n\n/**\n * Batch starts a transaction, at least for purposes of memoizing ComputedValues when nothing else does.\n * During a batch `onBecomeUnobserved` will be called at most once per observable.\n * Avoids unnecessary recalculations.\n */\nexport function startBatch() {\n globalState.inBatch++\n}\n\nexport function endBatch() {\n if (--globalState.inBatch === 0) {\n runReactions()\n // the batch is actually about to finish, all unobserving should happen here.\n const list = globalState.pendingUnobservations\n for (let i = 0; i < list.length; i++) {\n const observable = list[i]\n observable.isPendingUnobservation_ = false\n if (observable.observers_.size === 0) {\n if (observable.isBeingObserved_) {\n // if this observable had reactive observers, trigger the hooks\n observable.isBeingObserved_ = false\n observable.onBUO()\n }\n if (observable instanceof ComputedValue) {\n // computed values are automatically teared down when the last observer leaves\n // this process happens recursively, this computed might be the last observabe of another, etc..\n observable.suspend_()\n }\n }\n }\n globalState.pendingUnobservations = []\n }\n}\n\nexport function reportObserved(observable: IObservable): boolean {\n checkIfStateReadsAreAllowed(observable)\n\n const derivation = globalState.trackingDerivation\n if (derivation !== null) {\n /**\n * Simple optimization, give each derivation run an unique id (runId)\n * Check if last time this observable was accessed the same runId is used\n * if this is the case, the relation is already known\n */\n if (derivation.runId_ !== observable.lastAccessedBy_) {\n observable.lastAccessedBy_ = derivation.runId_\n // Tried storing newObserving, or observing, or both as Set, but performance didn't come close...\n derivation.newObserving_![derivation.unboundDepsCount_++] = observable\n if (!observable.isBeingObserved_ && globalState.trackingContext) {\n observable.isBeingObserved_ = true\n observable.onBO()\n }\n }\n return observable.isBeingObserved_\n } else if (observable.observers_.size === 0 && globalState.inBatch > 0) {\n queueForUnobservation(observable)\n }\n\n return false\n}\n\n// function invariantLOS(observable: IObservable, msg: string) {\n// // it's expensive so better not run it in produciton. but temporarily helpful for testing\n// const min = getObservers(observable).reduce((a, b) => Math.min(a, b.dependenciesState), 2)\n// if (min >= observable.lowestObserverState) return // <- the only assumption about `lowestObserverState`\n// throw new Error(\n// \"lowestObserverState is wrong for \" +\n// msg +\n// \" because \" +\n// min +\n// \" < \" +\n// observable.lowestObserverState\n// )\n// }\n\n/**\n * NOTE: current propagation mechanism will in case of self reruning autoruns behave unexpectedly\n * It will propagate changes to observers from previous run\n * It's hard or maybe impossible (with reasonable perf) to get it right with current approach\n * Hopefully self reruning autoruns aren't a feature people should depend on\n * Also most basic use cases should be ok\n */\n\n// Called by Atom when its value changes\nexport function propagateChanged(observable: IObservable) {\n // invariantLOS(observable, \"changed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n // Ideally we use for..of here, but the downcompiled version is really slow...\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n d.onBecomeStale_()\n }\n d.dependenciesState_ = IDerivationState_.STALE_\n })\n // invariantLOS(observable, \"changed end\");\n}\n\n// Called by ComputedValue when it recalculate and its value changed\nexport function propagateChangeConfirmed(observable: IObservable) {\n // invariantLOS(observable, \"confirmed start\");\n if (observable.lowestObserverState_ === IDerivationState_.STALE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.POSSIBLY_STALE_) {\n d.dependenciesState_ = IDerivationState_.STALE_\n if (__DEV__ && d.isTracing_ !== TraceMode.NONE) {\n logTraceInfo(d, observable)\n }\n } else if (\n d.dependenciesState_ === IDerivationState_.UP_TO_DATE_ // this happens during computing of `d`, just keep lowestObserverState up to date.\n ) {\n observable.lowestObserverState_ = IDerivationState_.UP_TO_DATE_\n }\n })\n // invariantLOS(observable, \"confirmed end\");\n}\n\n// Used by computed when its dependency changed, but we don't wan't to immediately recompute.\nexport function propagateMaybeChanged(observable: IObservable) {\n // invariantLOS(observable, \"maybe start\");\n if (observable.lowestObserverState_ !== IDerivationState_.UP_TO_DATE_) {\n return\n }\n observable.lowestObserverState_ = IDerivationState_.POSSIBLY_STALE_\n\n observable.observers_.forEach(d => {\n if (d.dependenciesState_ === IDerivationState_.UP_TO_DATE_) {\n d.dependenciesState_ = IDerivationState_.POSSIBLY_STALE_\n d.onBecomeStale_()\n }\n })\n // invariantLOS(observable, \"maybe end\");\n}\n\nfunction logTraceInfo(derivation: IDerivation, observable: IObservable) {\n console.log(\n `[mobx.trace] '${derivation.name_}' is invalidated due to a change in: '${observable.name_}'`\n )\n if (derivation.isTracing_ === TraceMode.BREAK) {\n const lines = []\n printDepTree(getDependencyTree(derivation), lines, 1)\n\n // prettier-ignore\n new Function(\n`debugger;\n/*\nTracing '${derivation.name_}'\n\nYou are entering this break point because derivation '${derivation.name_}' is being traced and '${observable.name_}' is now forcing it to update.\nJust follow the stacktrace you should now see in the devtools to see precisely what piece of your code is causing this update\nThe stackframe you are looking for is at least ~6-8 stack-frames up.\n\n${derivation instanceof ComputedValue ? derivation.derivation.toString().replace(/[*]\\//g, \"/\") : \"\"}\n\nThe dependencies for this derivation are:\n\n${lines.join(\"\\n\")}\n*/\n `)()\n }\n}\n\nfunction printDepTree(tree: IDependencyTree, lines: string[], depth: number) {\n if (lines.length >= 1000) {\n lines.push(\"(and many more)\")\n return\n }\n lines.push(`${\"\\t\".repeat(depth - 1)}${tree.name}`)\n if (tree.dependencies) {\n tree.dependencies.forEach(child => printDepTree(child, lines, depth + 1))\n }\n}\n","import { IDerivation, IObservable, Reaction, die, getGlobal } from \"../internal\"\nimport { ComputedValue } from \"./computedvalue\"\n\n/**\n * These values will persist if global state is reset\n */\nconst persistentKeys: (keyof MobXGlobals)[] = [\n \"mobxGuid\",\n \"spyListeners\",\n \"enforceActions\",\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"allowStateReads\",\n \"disableErrorBoundaries\",\n \"runId\",\n \"UNCHANGED\",\n \"useProxies\"\n]\n\nexport type IUNCHANGED = {}\n\nexport class MobXGlobals {\n /**\n * MobXGlobals version.\n * MobX compatiblity with other versions loaded in memory as long as this version matches.\n * It indicates that the global state still stores similar information\n *\n * N.B: this version is unrelated to the package version of MobX, and is only the version of the\n * internal state storage of MobX, and can be the same across many different package versions\n */\n version = 6\n\n /**\n * globally unique token to signal unchanged\n */\n UNCHANGED: IUNCHANGED = {}\n\n /**\n * Currently running derivation\n */\n trackingDerivation: IDerivation | null = null\n\n /**\n * Currently running reaction. This determines if we currently have a reactive context.\n * (Tracking derivation is also set for temporal tracking of computed values inside actions,\n * but trackingReaction can only be set by a form of Reaction)\n */\n trackingContext: Reaction | ComputedValue<any> | null = null\n\n /**\n * Each time a derivation is tracked, it is assigned a unique run-id\n */\n runId = 0\n\n /**\n * 'guid' for general purpose. Will be persisted amongst resets.\n */\n mobxGuid = 0\n\n /**\n * Are we in a batch block? (and how many of them)\n */\n inBatch: number = 0\n\n /**\n * Observables that don't have observers anymore, and are about to be\n * suspended, unless somebody else accesses it in the same batch\n *\n * @type {IObservable[]}\n */\n pendingUnobservations: IObservable[] = []\n\n /**\n * List of scheduled, not yet executed, reactions.\n */\n pendingReactions: Reaction[] = []\n\n /**\n * Are we currently processing reactions?\n */\n isRunningReactions = false\n\n /**\n * Is it allowed to change observables at this point?\n * In general, MobX doesn't allow that when running computations and React.render.\n * To ensure that those functions stay pure.\n */\n allowStateChanges = false\n\n /**\n * Is it allowed to read observables at this point?\n * Used to hold the state needed for `observableRequiresReaction`\n */\n allowStateReads = true\n\n /**\n * If strict mode is enabled, state changes are by default not allowed\n */\n enforceActions: boolean | \"always\" = true\n\n /**\n * Spy callbacks\n */\n spyListeners: { (change: any): void }[] = []\n\n /**\n * Globally attached error handlers that react specifically to errors in reactions\n */\n globalReactionErrorHandlers: ((error: any, derivation: IDerivation) => void)[] = []\n\n /**\n * Warn if computed values are accessed outside a reactive context\n */\n computedRequiresReaction = false\n\n /**\n * (Experimental)\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable = false\n\n /**\n * (Experimental)\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction = false\n\n /*\n * Don't catch and rethrow exceptions. This is useful for inspecting the state of\n * the stack when an exception occurs while debugging.\n */\n disableErrorBoundaries = false\n\n /*\n * If true, we are already handling an exception in an action. Any errors in reactions should be suppressed, as\n * they are not the cause, see: https://github.com/mobxjs/mobx/issues/1836\n */\n suppressReactionErrors = false\n\n useProxies = true\n /*\n * print warnings about code that would fail if proxies weren't available\n */\n verifyProxies = false\n\n /**\n * False forces all object's descriptors to\n * writable: true\n * configurable: true\n */\n safeDescriptors = true\n\n /**\n * Changes with each state update, used by useSyncExternalStore\n */\n stateVersion = Number.MIN_SAFE_INTEGER\n}\n\nlet canMergeGlobalState = true\nlet isolateCalled = false\n\nexport let globalState: MobXGlobals = (function () {\n let global = getGlobal()\n if (global.__mobxInstanceCount > 0 && !global.__mobxGlobals) {\n canMergeGlobalState = false\n }\n if (global.__mobxGlobals && global.__mobxGlobals.version !== new MobXGlobals().version) {\n canMergeGlobalState = false\n }\n\n if (!canMergeGlobalState) {\n // Because this is a IIFE we need to let isolateCalled a chance to change\n // so we run it after the event loop completed at least 1 iteration\n setTimeout(() => {\n if (!isolateCalled) {\n die(35)\n }\n }, 1)\n return new MobXGlobals()\n } else if (global.__mobxGlobals) {\n global.__mobxInstanceCount += 1\n if (!global.__mobxGlobals.UNCHANGED) {\n global.__mobxGlobals.UNCHANGED = {}\n } // make merge backward compatible\n return global.__mobxGlobals\n } else {\n global.__mobxInstanceCount = 1\n return (global.__mobxGlobals = new MobXGlobals())\n }\n})()\n\nexport function isolateGlobalState() {\n if (\n globalState.pendingReactions.length ||\n globalState.inBatch ||\n globalState.isRunningReactions\n ) {\n die(36)\n }\n isolateCalled = true\n if (canMergeGlobalState) {\n let global = getGlobal()\n if (--global.__mobxInstanceCount === 0) {\n global.__mobxGlobals = undefined\n }\n globalState = new MobXGlobals()\n }\n}\n\nexport function getGlobalState(): any {\n return globalState\n}\n\n/**\n * For testing purposes only; this will break the internal state of existing observables,\n * but can be used to get back at a stable state after throwing errors\n */\nexport function resetGlobalState() {\n const defaultGlobals = new MobXGlobals()\n for (let key in defaultGlobals) {\n if (persistentKeys.indexOf(key as any) === -1) {\n globalState[key] = defaultGlobals[key]\n }\n }\n globalState.allowStateChanges = !globalState.enforceActions\n}\n","import {\n $mobx,\n IDerivation,\n IDerivationState_,\n IObservable,\n Lambda,\n TraceMode,\n clearObserving,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n globalState,\n isCaughtException,\n isSpyEnabled,\n shouldCompute,\n spyReport,\n spyReportEnd,\n spyReportStart,\n startBatch,\n trace,\n trackDerivedFunction\n} from \"../internal\"\n\n/**\n * Reactions are a special kind of derivations. Several things distinguishes them from normal reactive computations\n *\n * 1) They will always run, whether they are used by other computations or not.\n * This means that they are very suitable for triggering side effects like logging, updating the DOM and making network requests.\n * 2) They are not observable themselves\n * 3) They will always run after any 'normal' derivations\n * 4) They are allowed to change the state and thereby triggering themselves again, as long as they make sure the state propagates to a stable state in a reasonable amount of iterations.\n *\n * The state machine of a Reaction is as follows:\n *\n * 1) after creating, the reaction should be started by calling `runReaction` or by scheduling it (see also `autorun`)\n * 2) the `onInvalidate` handler should somehow result in a call to `this.track(someFunction)`\n * 3) all observables accessed in `someFunction` will be observed by this reaction.\n * 4) as soon as some of the dependencies has changed the Reaction will be rescheduled for another run (after the current mutation or transaction). `isScheduled` will yield true once a dependency is stale and during this period\n * 5) `onInvalidate` will be called, and we are back at step 1.\n *\n */\n\nexport interface IReactionPublic {\n dispose(): void\n trace(enterBreakPoint?: boolean): void\n}\n\nexport interface IReactionDisposer {\n (): void\n $mobx: Reaction\n}\n\nexport class Reaction implements IDerivation, IReactionPublic {\n observing_: IObservable[] = [] // nodes we are looking at. Our value depends on these nodes\n newObserving_: IObservable[] = []\n dependenciesState_ = IDerivationState_.NOT_TRACKING_\n diffValue_ = 0\n runId_ = 0\n unboundDepsCount_ = 0\n isDisposed_ = false\n isScheduled_ = false\n isTrackPending_ = false\n isRunning_ = false\n isTracing_: TraceMode = TraceMode.NONE\n\n constructor(\n public name_: string = __DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\",\n private onInvalidate_: () => void,\n private errorHandler_?: (error: any, derivation: IDerivation) => void,\n public requiresObservable_?\n ) {}\n\n onBecomeStale_() {\n this.schedule_()\n }\n\n schedule_() {\n if (!this.isScheduled_) {\n this.isScheduled_ = true\n globalState.pendingReactions.push(this)\n runReactions()\n }\n }\n\n isScheduled() {\n return this.isScheduled_\n }\n\n /**\n * internal, use schedule() if you intend to kick off a reaction\n */\n runReaction_() {\n if (!this.isDisposed_) {\n startBatch()\n this.isScheduled_ = false\n const prev = globalState.trackingContext\n globalState.trackingContext = this\n if (shouldCompute(this)) {\n this.isTrackPending_ = true\n\n try {\n this.onInvalidate_()\n if (__DEV__ && this.isTrackPending_ && isSpyEnabled()) {\n // onInvalidate didn't trigger track right away..\n spyReport({\n name: this.name_,\n type: \"scheduled-reaction\"\n })\n }\n } catch (e) {\n this.reportExceptionInDerivation_(e)\n }\n }\n globalState.trackingContext = prev\n endBatch()\n }\n }\n\n track(fn: () => void) {\n if (this.isDisposed_) {\n return\n // console.warn(\"Reaction already disposed\") // Note: Not a warning / error in mobx 4 either\n }\n startBatch()\n const notify = isSpyEnabled()\n let startTime\n if (__DEV__ && notify) {\n startTime = Date.now()\n spyReportStart({\n name: this.name_,\n type: \"reaction\"\n })\n }\n this.isRunning_ = true\n const prevReaction = globalState.trackingContext // reactions could create reactions...\n globalState.trackingContext = this\n const result = trackDerivedFunction(this, fn, undefined)\n globalState.trackingContext = prevReaction\n this.isRunning_ = false\n this.isTrackPending_ = false\n if (this.isDisposed_) {\n // disposed during last run. Clean up everything that was bound after the dispose call.\n clearObserving(this)\n }\n if (isCaughtException(result)) {\n this.reportExceptionInDerivation_(result.cause)\n }\n if (__DEV__ && notify) {\n spyReportEnd({\n time: Date.now() - startTime\n })\n }\n endBatch()\n }\n\n reportExceptionInDerivation_(error: any) {\n if (this.errorHandler_) {\n this.errorHandler_(error, this)\n return\n }\n\n if (globalState.disableErrorBoundaries) {\n throw error\n }\n\n const message = __DEV__\n ? `[mobx] Encountered an uncaught exception that was thrown by a reaction or observer component, in: '${this}'`\n : `[mobx] uncaught error in '${this}'`\n if (!globalState.suppressReactionErrors) {\n console.error(message, error)\n /** If debugging brought you here, please, read the above message :-). Tnx! */\n } else if (__DEV__) { console.warn(`[mobx] (error in reaction '${this.name_}' suppressed, fix error of causing action below)`) } // prettier-ignore\n\n if (__DEV__ && isSpyEnabled()) {\n spyReport({\n type: \"error\",\n name: this.name_,\n message,\n error: \"\" + error\n })\n }\n\n globalState.globalReactionErrorHandlers.forEach(f => f(error, this))\n }\n\n dispose() {\n if (!this.isDisposed_) {\n this.isDisposed_ = true\n if (!this.isRunning_) {\n // if disposed while running, clean up later. Maybe not optimal, but rare case\n startBatch()\n clearObserving(this)\n endBatch()\n }\n }\n }\n\n getDisposer_(): IReactionDisposer {\n const r = this.dispose.bind(this) as IReactionDisposer\n r[$mobx] = this\n return r\n }\n\n toString() {\n return `Reaction[${this.name_}]`\n }\n\n trace(enterBreakPoint: boolean = false) {\n trace(this, enterBreakPoint)\n }\n}\n\nexport function onReactionError(handler: (error: any, derivation: IDerivation) => void): Lambda {\n globalState.globalReactionErrorHandlers.push(handler)\n return () => {\n const idx = globalState.globalReactionErrorHandlers.indexOf(handler)\n if (idx >= 0) {\n globalState.globalReactionErrorHandlers.splice(idx, 1)\n }\n }\n}\n\n/**\n * Magic number alert!\n * Defines within how many times a reaction is allowed to re-trigger itself\n * until it is assumed that this is gonna be a never ending loop...\n */\nconst MAX_REACTION_ITERATIONS = 100\n\nlet reactionScheduler: (fn: () => void) => void = f => f()\n\nexport function runReactions() {\n // Trampolining, if runReactions are already running, new reactions will be picked up\n if (globalState.inBatch > 0 || globalState.isRunningReactions) {\n return\n }\n reactionScheduler(runReactionsHelper)\n}\n\nfunction runReactionsHelper() {\n globalState.isRunningReactions = true\n const allReactions = globalState.pendingReactions\n let iterations = 0\n\n // While running reactions, new reactions might be triggered.\n // Hence we work with two variables and check whether\n // we converge to no remaining reactions after a while.\n while (allReactions.length > 0) {\n if (++iterations === MAX_REACTION_ITERATIONS) {\n console.error(\n __DEV__\n ? `Reaction doesn't converge to a stable state after ${MAX_REACTION_ITERATIONS} iterations.` +\n ` Probably there is a cycle in the reactive function: ${allReactions[0]}`\n : `[mobx] cycle in reaction: ${allReactions[0]}`\n )\n allReactions.splice(0) // clear reactions\n }\n let remainingReactions = allReactions.splice(0)\n for (let i = 0, l = remainingReactions.length; i < l; i++) {\n remainingReactions[i].runReaction_()\n }\n }\n globalState.isRunningReactions = false\n}\n\nexport const isReaction = createInstanceofPredicate(\"Reaction\", Reaction)\n\nexport function setReactionScheduler(fn: (f: () => void) => void) {\n const baseScheduler = reactionScheduler\n reactionScheduler = f => fn(() => baseScheduler(f))\n}\n","import { TraceMode, die, getAtom, globalState } from \"../internal\"\n\nexport function trace(thing?: any, prop?: string, enterBreakPoint?: boolean): void\nexport function trace(thing?: any, enterBreakPoint?: boolean): void\nexport function trace(enterBreakPoint?: boolean): void\nexport function trace(...args: any[]): void {\n if (!__DEV__) {\n die(`trace() is not available in production builds`)\n }\n let enterBreakPoint = false\n if (typeof args[args.length - 1] === \"boolean\") {\n enterBreakPoint = args.pop()\n }\n const derivation = getAtomFromArgs(args)\n if (!derivation) {\n return die(\n `'trace(break?)' can only be used inside a tracked computed value or a Reaction. Consider passing in the computed value or reaction explicitly`\n )\n }\n if (derivation.isTracing_ === TraceMode.NONE) {\n console.log(`[mobx.trace] '${derivation.name_}' tracing enabled`)\n }\n derivation.isTracing_ = enterBreakPoint ? TraceMode.BREAK : TraceMode.LOG\n}\n\nfunction getAtomFromArgs(args): any {\n switch (args.length) {\n case 0:\n return globalState.trackingDerivation\n case 1:\n return getAtom(args[0])\n case 2:\n return getAtom(args[0], args[1])\n }\n}\n","import {\n createAction,\n executeAction,\n Annotation,\n storeAnnotation,\n die,\n isFunction,\n isStringish,\n createDecoratorAnnotation,\n createActionAnnotation\n} from \"../internal\"\n\nexport const ACTION = \"action\"\nexport const ACTION_BOUND = \"action.bound\"\nexport const AUTOACTION = \"autoAction\"\nexport const AUTOACTION_BOUND = \"autoAction.bound\"\n\nconst DEFAULT_ACTION_NAME = \"<unnamed action>\"\n\nconst actionAnnotation = createActionAnnotation(ACTION)\nconst actionBoundAnnotation = createActionAnnotation(ACTION_BOUND, {\n bound: true\n})\nconst autoActionAnnotation = createActionAnnotation(AUTOACTION, {\n autoAction: true\n})\nconst autoActionBoundAnnotation = createActionAnnotation(AUTOACTION_BOUND, {\n autoAction: true,\n bound: true\n})\n\nexport interface IActionFactory extends Annotation, PropertyDecorator {\n // nameless actions\n <T extends Function | undefined | null>(fn: T): T\n // named actions\n <T extends Function | undefined | null>(name: string, fn: T): T\n\n // named decorator\n (customName: string): PropertyDecorator & Annotation\n\n // decorator (name no longer supported)\n bound: Annotation & PropertyDecorator\n}\n\nfunction createActionFactory(autoAction: boolean): IActionFactory {\n const res: IActionFactory = function action(arg1, arg2?): any {\n // action(fn() {})\n if (isFunction(arg1)) {\n return createAction(arg1.name || DEFAULT_ACTION_NAME, arg1, autoAction)\n }\n // action(\"name\", fn() {})\n if (isFunction(arg2)) {\n return createAction(arg1, arg2, autoAction)\n }\n // @action\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, autoAction ? autoActionAnnotation : actionAnnotation)\n }\n // action(\"name\") & @action(\"name\")\n if (isStringish(arg1)) {\n return createDecoratorAnnotation(\n createActionAnnotation(autoAction ? AUTOACTION : ACTION, {\n name: arg1,\n autoAction\n })\n )\n }\n\n if (__DEV__) {\n die(\"Invalid arguments for `action`\")\n }\n } as IActionFactory\n return res\n}\n\nexport const action: IActionFactory = createActionFactory(false)\nObject.assign(action, actionAnnotation)\nexport const autoAction: IActionFactory = createActionFactory(true)\nObject.assign(autoAction, autoActionAnnotation)\n\naction.bound = createDecoratorAnnotation(actionBoundAnnotation)\nautoAction.bound = createDecoratorAnnotation(autoActionBoundAnnotation)\n\nexport function runInAction<T>(fn: () => T): T {\n return executeAction(fn.name || DEFAULT_ACTION_NAME, false, fn, this, undefined)\n}\n\nexport function isAction(thing: any) {\n return isFunction(thing) && thing.isMobxAction === true\n}\n","import {\n EMPTY_OBJECT,\n IEqualsComparer,\n IReactionDisposer,\n IReactionPublic,\n Lambda,\n Reaction,\n action,\n comparer,\n getNextId,\n isAction,\n isFunction,\n isPlainObject,\n die,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IAutorunOptions {\n delay?: number\n name?: string\n /**\n * Experimental.\n * Warns if the view doesn't track observables\n */\n requiresObservable?: boolean\n scheduler?: (callback: () => void) => any\n onError?: (error: any) => void\n}\n\n/**\n * Creates a named reactive view and keeps it alive, so that the view is always\n * updated if one of the dependencies changes, even when the view is not further used by something else.\n * @param view The reactive view\n * @returns disposer function, which can be used to stop the view from being updated in the future.\n */\nexport function autorun(\n view: (r: IReactionPublic) => any,\n opts: IAutorunOptions = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(view)) {\n die(\"Autorun expects a function as first argument\")\n }\n if (isAction(view)) {\n die(\"Autorun does not accept actions since actions are untrackable\")\n }\n }\n\n const name: string =\n opts?.name ?? (__DEV__ ? (view as any).name || \"Autorun@\" + getNextId() : \"Autorun\")\n const runSync = !opts.scheduler && !opts.delay\n let reaction: Reaction\n\n if (runSync) {\n // normal autorun\n reaction = new Reaction(\n name,\n function (this: Reaction) {\n this.track(reactionRunner)\n },\n opts.onError,\n opts.requiresObservable\n )\n } else {\n const scheduler = createSchedulerFromOptions(opts)\n // debounced autorun\n let isScheduled = false\n\n reaction = new Reaction(\n name,\n () => {\n if (!isScheduled) {\n isScheduled = true\n scheduler(() => {\n isScheduled = false\n if (!reaction.isDisposed_) {\n reaction.track(reactionRunner)\n }\n })\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n }\n\n function reactionRunner() {\n view(reaction)\n }\n\n reaction.schedule_()\n return reaction.getDisposer_()\n}\n\nexport type IReactionOptions<T, FireImmediately extends boolean> = IAutorunOptions & {\n fireImmediately?: FireImmediately\n equals?: IEqualsComparer<T>\n}\n\nconst run = (f: Lambda) => f()\n\nfunction createSchedulerFromOptions(opts: IAutorunOptions) {\n return opts.scheduler\n ? opts.scheduler\n : opts.delay\n ? (f: Lambda) => setTimeout(f, opts.delay!)\n : run\n}\n\nexport function reaction<T, FireImmediately extends boolean = false>(\n expression: (r: IReactionPublic) => T,\n effect: (\n arg: T,\n prev: FireImmediately extends true ? T | undefined : T,\n r: IReactionPublic\n ) => void,\n opts: IReactionOptions<T, FireImmediately> = EMPTY_OBJECT\n): IReactionDisposer {\n if (__DEV__) {\n if (!isFunction(expression) || !isFunction(effect)) {\n die(\"First and second argument to reaction should be functions\")\n }\n if (!isPlainObject(opts)) {\n die(\"Third argument of reactions should be an object\")\n }\n }\n const name = opts.name ?? (__DEV__ ? \"Reaction@\" + getNextId() : \"Reaction\")\n const effectAction = action(\n name,\n opts.onError ? wrapErrorHandler(opts.onError, effect) : effect\n )\n const runSync = !opts.scheduler && !opts.delay\n const scheduler = createSchedulerFromOptions(opts)\n\n let firstTime = true\n let isScheduled = false\n let value: T\n let oldValue: T | undefined\n\n const equals: IEqualsComparer<T> = (opts as any).compareStructural\n ? comparer.structural\n : opts.equals || comparer.default\n\n const r = new Reaction(\n name,\n () => {\n if (firstTime || runSync) {\n reactionRunner()\n } else if (!isScheduled) {\n isScheduled = true\n scheduler!(reactionRunner)\n }\n },\n opts.onError,\n opts.requiresObservable\n )\n\n function reactionRunner() {\n isScheduled = false\n if (r.isDisposed_) {\n return\n }\n let changed: boolean = false\n r.track(() => {\n const nextValue = allowStateChanges(false, () => expression(r))\n changed = firstTime || !equals(value, nextValue)\n oldValue = value\n value = nextValue\n })\n\n // This casting is nesessary as TS cannot infer proper type in current funciton implementation\n type OldValue = FireImmediately extends true ? T | undefined : T\n if (firstTime && opts.fireImmediately!) {\n effectAction(value, oldValue as OldValue, r)\n } else if (!firstTime && changed) {\n effectAction(value, oldValue as OldValue, r)\n }\n firstTime = false\n }\n\n r.schedule_()\n return r.getDisposer_()\n}\n\nfunction wrapErrorHandler(errorHandler, baseFn) {\n return function () {\n try {\n return baseFn.apply(this, arguments)\n } catch (e) {\n errorHandler.call(this, e)\n }\n }\n}\n","import { globalState, isolateGlobalState, setReactionScheduler } from \"../internal\"\n\nconst NEVER = \"never\"\nconst ALWAYS = \"always\"\nconst OBSERVED = \"observed\"\n// const IF_AVAILABLE = \"ifavailable\"\n\nexport function configure(options: {\n enforceActions?: \"never\" | \"always\" | \"observed\"\n computedRequiresReaction?: boolean\n /**\n * Warn if you try to create to derivation / reactive context without accessing any observable.\n */\n reactionRequiresObservable?: boolean\n /**\n * Warn if observables are accessed outside a reactive context\n */\n observableRequiresReaction?: boolean\n isolateGlobalState?: boolean\n disableErrorBoundaries?: boolean\n safeDescriptors?: boolean\n reactionScheduler?: (f: () => void) => void\n useProxies?: \"always\" | \"never\" | \"ifavailable\"\n}): void {\n if (options.isolateGlobalState === true) {\n isolateGlobalState()\n }\n const { useProxies, enforceActions } = options\n if (useProxies !== undefined) {\n globalState.useProxies =\n useProxies === ALWAYS\n ? true\n : useProxies === NEVER\n ? false\n : typeof Proxy !== \"undefined\"\n }\n if (useProxies === \"ifavailable\") {\n globalState.verifyProxies = true\n }\n if (enforceActions !== undefined) {\n const ea = enforceActions === ALWAYS ? ALWAYS : enforceActions === OBSERVED\n globalState.enforceActions = ea\n globalState.allowStateChanges = ea === true || ea === ALWAYS ? false : true\n }\n ;[\n \"computedRequiresReaction\",\n \"reactionRequiresObservable\",\n \"observableRequiresReaction\",\n \"disableErrorBoundaries\",\n \"safeDescriptors\"\n ].forEach(key => {\n if (key in options) {\n globalState[key] = !!options[key]\n }\n })\n globalState.allowStateReads = !globalState.observableRequiresReaction\n if (__DEV__ && globalState.disableErrorBoundaries === true) {\n console.warn(\n \"WARNING: Debug feature only. MobX will NOT recover from errors when `disableErrorBoundaries` is enabled.\"\n )\n }\n if (options.reactionScheduler) {\n setReactionScheduler(options.reactionScheduler)\n }\n}\n","import {\n CreateObservableOptions,\n isObservableMap,\n AnnotationsMap,\n startBatch,\n endBatch,\n asObservableObject,\n isPlainObject,\n ObservableObjectAdministration,\n isObservable,\n die,\n getOwnPropertyDescriptors,\n $mobx,\n ownKeys\n} from \"../internal\"\n\nexport function extendObservable<A extends Object, B extends Object>(\n target: A,\n properties: B,\n annotations?: AnnotationsMap<B, never>,\n options?: CreateObservableOptions\n): A & B {\n if (__DEV__) {\n if (arguments.length > 4) {\n die(\"'extendObservable' expected 2-4 arguments\")\n }\n if (typeof target !== \"object\") {\n die(\"'extendObservable' expects an object as first argument\")\n }\n if (isObservableMap(target)) {\n die(\"'extendObservable' should not be used on maps, use map.merge instead\")\n }\n if (!isPlainObject(properties)) {\n die(`'extendObservable' only accepts plain objects as second argument`)\n }\n if (isObservable(properties) || isObservable(annotations)) {\n die(`Extending an object with another observable (object) is not supported`)\n }\n }\n // Pull descriptors first, so we don't have to deal with props added by administration ($mobx)\n const descriptors = getOwnPropertyDescriptors(properties)\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n ownKeys(descriptors).forEach(key => {\n adm.extend_(\n key,\n descriptors[key as any],\n // must pass \"undefined\" for { key: undefined }\n !annotations ? true : key in annotations ? annotations[key] : true\n )\n })\n } finally {\n endBatch()\n }\n return target as any\n}\n","import { IDepTreeNode, getAtom, getObservers, hasObservers } from \"../internal\"\n\nexport interface IDependencyTree {\n name: string\n dependencies?: IDependencyTree[]\n}\n\nexport interface IObserverTree {\n name: string\n observers?: IObserverTree[]\n}\n\nexport function getDependencyTree(thing: any, property?: string): IDependencyTree {\n return nodeToDependencyTree(getAtom(thing, property))\n}\n\nfunction nodeToDependencyTree(node: IDepTreeNode): IDependencyTree {\n const result: IDependencyTree = {\n name: node.name_\n }\n if (node.observing_ && node.observing_.length > 0) {\n result.dependencies = unique(node.observing_).map(nodeToDependencyTree)\n }\n return result\n}\n\nexport function getObserverTree(thing: any, property?: string): IObserverTree {\n return nodeToObserverTree(getAtom(thing, property))\n}\n\nfunction nodeToObserverTree(node: IDepTreeNode): IObserverTree {\n const result: IObserverTree = {\n name: node.name_\n }\n if (hasObservers(node as any)) {\n result.observers = Array.from(<any>getObservers(node as any)).map(<any>nodeToObserverTree)\n }\n return result\n}\n\nfunction unique<T>(list: T[]): T[] {\n return Array.from(new Set(list))\n}\n","import {\n action,\n noop,\n die,\n isFunction,\n Annotation,\n isStringish,\n storeAnnotation,\n createFlowAnnotation,\n createDecoratorAnnotation\n} from \"../internal\"\n\nexport const FLOW = \"flow\"\n\nlet generatorId = 0\n\nexport function FlowCancellationError() {\n this.message = \"FLOW_CANCELLED\"\n}\nFlowCancellationError.prototype = Object.create(Error.prototype)\n\nexport function isFlowCancellationError(error: Error) {\n return error instanceof FlowCancellationError\n}\n\nexport type CancellablePromise<T> = Promise<T> & { cancel(): void }\n\ninterface Flow extends Annotation, PropertyDecorator {\n <R, Args extends any[]>(\n generator: (...args: Args) => Generator<any, R, any> | AsyncGenerator<any, R, any>\n ): (...args: Args) => CancellablePromise<R>\n bound: Annotation & PropertyDecorator\n}\n\nconst flowAnnotation = createFlowAnnotation(\"flow\")\nconst flowBoundAnnotation = createFlowAnnotation(\"flow.bound\", { bound: true })\n\nexport const flow: Flow = Object.assign(\n function flow(arg1, arg2?) {\n // @flow\n if (isStringish(arg2)) {\n return storeAnnotation(arg1, arg2, flowAnnotation)\n }\n // flow(fn)\n if (__DEV__ && arguments.length !== 1) {\n die(`Flow expects single argument with generator function`)\n }\n const generator = arg1\n const name = generator.name || \"<unnamed flow>\"\n\n // Implementation based on https://github.com/tj/co/blob/master/index.js\n const res = function () {\n const ctx = this\n const args = arguments\n const runId = ++generatorId\n const gen = action(`${name} - runid: ${runId} - init`, generator).apply(ctx, args)\n let rejector: (error: any) => void\n let pendingPromise: CancellablePromise<any> | undefined = undefined\n\n const promise = new Promise(function (resolve, reject) {\n let stepId = 0\n rejector = reject\n\n function onFulfilled(res: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.next\n ).call(gen, res)\n } catch (e) {\n return reject(e)\n }\n\n next(ret)\n }\n\n function onRejected(err: any) {\n pendingPromise = undefined\n let ret\n try {\n ret = action(\n `${name} - runid: ${runId} - yield ${stepId++}`,\n gen.throw!\n ).call(gen, err)\n } catch (e) {\n return reject(e)\n }\n next(ret)\n }\n\n function next(ret: any) {\n if (isFunction(ret?.then)) {\n // an async iterator\n ret.then(next, reject)\n return\n }\n if (ret.done) {\n return resolve(ret.value)\n }\n pendingPromise = Promise.resolve(ret.value) as any\n return pendingPromise!.then(onFulfilled, onRejected)\n }\n\n onFulfilled(undefined) // kick off the process\n }) as any\n\n promise.cancel = action(`${name} - runid: ${runId} - cancel`, function () {\n try {\n if (pendingPromise) {\n cancelPromise(pendingPromise)\n }\n // Finally block can return (or yield) stuff..\n const res = gen.return!(undefined as any)\n // eat anything that promise would do, it's cancelled!\n const yieldedPromise = Promise.resolve(res.value)\n yieldedPromise.then(noop, noop)\n cancelPromise(yieldedPromise) // maybe it can be cancelled :)\n // reject our original promise\n rejector(new FlowCancellationError())\n } catch (e) {\n rejector(e) // there could be a throwing finally block\n }\n })\n return promise\n }\n res.isMobXFlow = true\n return res\n } as any,\n flowAnnotation\n)\n\nflow.bound = createDecoratorAnnotation(flowBoundAnnotation)\n\nfunction cancelPromise(promise) {\n if (isFunction(promise.cancel)) {\n promise.cancel()\n }\n}\n\nexport function flowResult<T>(\n result: T\n): T extends Generator<any, infer R, any>\n ? CancellablePromise<R>\n : T extends CancellablePromise<any>\n ? T\n : never {\n return result as any // just tricking TypeScript :)\n}\n\nexport function isFlow(fn: any): boolean {\n return fn?.isMobXFlow === true\n}\n","import {\n $mobx,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n die,\n isStringish\n} from \"../internal\"\n\nfunction _isObservable(value, property?: PropertyKey): boolean {\n if (!value) {\n return false\n }\n if (property !== undefined) {\n if (__DEV__ && (isObservableMap(value) || isObservableArray(value))) {\n return die(\n \"isObservable(object, propertyName) is not supported for arrays and maps. Use map.has or array.length instead.\"\n )\n }\n if (isObservableObject(value)) {\n return value[$mobx].values_.has(property)\n }\n return false\n }\n // For first check, see #701\n return (\n isObservableObject(value) ||\n !!value[$mobx] ||\n isAtom(value) ||\n isReaction(value) ||\n isComputedValue(value)\n )\n}\n\nexport function isObservable(value: any): boolean {\n if (__DEV__ && arguments.length !== 1) {\n die(\n `isObservable expects only 1 argument. Use isObservableProp to inspect the observability of a property`\n )\n }\n return _isObservable(value)\n}\n\nexport function isObservableProp(value: any, propName: PropertyKey): boolean {\n if (__DEV__ && !isStringish(propName)) {\n return die(`expected a property name as second argument`)\n }\n return _isObservable(value, propName)\n}\n","import {\n isObservable,\n isObservableArray,\n isObservableValue,\n isObservableMap,\n isObservableSet,\n isComputedValue,\n die,\n apiOwnKeys,\n objectPrototype\n} from \"../internal\"\n\nfunction cache<K, V>(map: Map<any, any>, key: K, value: V): V {\n map.set(key, value)\n return value\n}\n\nfunction toJSHelper(source, __alreadySeen: Map<any, any>) {\n if (\n source == null ||\n typeof source !== \"object\" ||\n source instanceof Date ||\n !isObservable(source)\n ) {\n return source\n }\n\n if (isObservableValue(source) || isComputedValue(source)) {\n return toJSHelper(source.get(), __alreadySeen)\n }\n if (__alreadySeen.has(source)) {\n return __alreadySeen.get(source)\n }\n if (isObservableArray(source)) {\n const res = cache(__alreadySeen, source, new Array(source.length))\n source.forEach((value, idx) => {\n res[idx] = toJSHelper(value, __alreadySeen)\n })\n return res\n }\n if (isObservableSet(source)) {\n const res = cache(__alreadySeen, source, new Set())\n source.forEach(value => {\n res.add(toJSHelper(value, __alreadySeen))\n })\n return res\n }\n if (isObservableMap(source)) {\n const res = cache(__alreadySeen, source, new Map())\n source.forEach((value, key) => {\n res.set(key, toJSHelper(value, __alreadySeen))\n })\n return res\n } else {\n // must be observable object\n const res = cache(__alreadySeen, source, {})\n apiOwnKeys(source).forEach((key: any) => {\n if (objectPrototype.propertyIsEnumerable.call(source, key)) {\n res[key] = toJSHelper(source[key], __alreadySeen)\n }\n })\n return res\n }\n}\n\n/**\n * Recursively converts an observable to it's non-observable native counterpart.\n * It does NOT recurse into non-observables, these are left as they are, even if they contain observables.\n * Computed and other non-enumerable properties are completely ignored.\n * Complex scenarios require custom solution, eg implementing `toJSON` or using `serializr` lib.\n */\nexport function toJS<T>(source: T, options?: any): T {\n if (__DEV__ && options) {\n die(\"toJS no longer supports options\")\n }\n return toJSHelper(source, new Map())\n}\n","import {\n $mobx,\n IIsObservableObject,\n IObservableArray,\n ObservableMap,\n ObservableSet,\n ObservableObjectAdministration,\n endBatch,\n isObservableArray,\n isObservableMap,\n isObservableSet,\n isObservableObject,\n startBatch,\n die\n} from \"../internal\"\n\nexport function keys<K>(map: ObservableMap<K, any>): ReadonlyArray<K>\nexport function keys<T>(ar: IObservableArray<T>): ReadonlyArray<number>\nexport function keys<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function keys<T extends Object>(obj: T): ReadonlyArray<PropertyKey>\nexport function keys(obj: any): any {\n if (isObservableObject(obj)) {\n return (\n (obj as any as IIsObservableObject)[$mobx] as ObservableObjectAdministration\n ).keys_()\n }\n if (isObservableMap(obj) || isObservableSet(obj)) {\n return Array.from(obj.keys())\n }\n if (isObservableArray(obj)) {\n return obj.map((_, index) => index)\n }\n die(5)\n}\n\nexport function values<K, T>(map: ObservableMap<K, T>): ReadonlyArray<T>\nexport function values<T>(set: ObservableSet<T>): ReadonlyArray<T>\nexport function values<T>(ar: IObservableArray<T>): ReadonlyArray<T>\nexport function values<T = any>(obj: T): ReadonlyArray<T extends object ? T[keyof T] : any>\nexport function values(obj: any): string[] {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => obj[key])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => obj.get(key))\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.values())\n }\n if (isObservableArray(obj)) {\n return obj.slice()\n }\n die(6)\n}\n\nexport function entries<K, T>(map: ObservableMap<K, T>): ReadonlyArray<[K, T]>\nexport function entries<T>(set: ObservableSet<T>): ReadonlyArray<[T, T]>\nexport function entries<T>(ar: IObservableArray<T>): ReadonlyArray<[number, T]>\nexport function entries<T = any>(\n obj: T\n): ReadonlyArray<[string, T extends object ? T[keyof T] : any]>\nexport function entries(obj: any): any {\n if (isObservableObject(obj)) {\n return keys(obj).map(key => [key, obj[key]])\n }\n if (isObservableMap(obj)) {\n return keys(obj).map(key => [key, obj.get(key)])\n }\n if (isObservableSet(obj)) {\n return Array.from(obj.entries())\n }\n if (isObservableArray(obj)) {\n return obj.map((key, index) => [index, key])\n }\n die(7)\n}\n\nexport function set<V>(obj: ObservableMap<PropertyKey, V>, values: { [key: string]: V })\nexport function set<K, V>(obj: ObservableMap<K, V>, key: K, value: V)\nexport function set<T>(obj: ObservableSet<T>, value: T)\nexport function set<T>(obj: IObservableArray<T>, index: number, value: T)\nexport function set<T extends Object>(obj: T, values: { [key: string]: any })\nexport function set<T extends Object>(obj: T, key: PropertyKey, value: any)\nexport function set(obj: any, key: any, value?: any): void {\n if (arguments.length === 2 && !isObservableSet(obj)) {\n startBatch()\n const values = key\n try {\n for (let key in values) {\n set(obj, key, values[key])\n }\n } finally {\n endBatch()\n }\n return\n }\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].set_(key, value)\n } else if (isObservableMap(obj)) {\n obj.set(key, value)\n } else if (isObservableSet(obj)) {\n obj.add(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n if (key < 0) {\n die(`Invalid index: '${key}'`)\n }\n startBatch()\n if (key >= obj.length) {\n obj.length = key + 1\n }\n obj[key] = value\n endBatch()\n } else {\n die(8)\n }\n}\n\nexport function remove<K, V>(obj: ObservableMap<K, V>, key: K)\nexport function remove<T>(obj: ObservableSet<T>, key: T)\nexport function remove<T>(obj: IObservableArray<T>, index: number)\nexport function remove<T extends Object>(obj: T, key: string)\nexport function remove(obj: any, key: any): void {\n if (isObservableObject(obj)) {\n ;(obj as any as IIsObservableObject)[$mobx].delete_(key)\n } else if (isObservableMap(obj)) {\n obj.delete(key)\n } else if (isObservableSet(obj)) {\n obj.delete(key)\n } else if (isObservableArray(obj)) {\n if (typeof key !== \"number\") {\n key = parseInt(key, 10)\n }\n obj.splice(key, 1)\n } else {\n die(9)\n }\n}\n\nexport function has<K>(obj: ObservableMap<K, any>, key: K): boolean\nexport function has<T>(obj: ObservableSet<T>, key: T): boolean\nexport function has<T>(obj: IObservableArray<T>, index: number): boolean\nexport function has<T extends Object>(obj: T, key: string): boolean\nexport function has(obj: any, key: any): boolean {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].has_(key)\n } else if (isObservableMap(obj)) {\n return obj.has(key)\n } else if (isObservableSet(obj)) {\n return obj.has(key)\n } else if (isObservableArray(obj)) {\n return key >= 0 && key < obj.length\n }\n die(10)\n}\n\nexport function get<K, V>(obj: ObservableMap<K, V>, key: K): V | undefined\nexport function get<T>(obj: IObservableArray<T>, index: number): T | undefined\nexport function get<T extends Object>(obj: T, key: string): any\nexport function get(obj: any, key: any): any {\n if (!has(obj, key)) {\n return undefined\n }\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].get_(key)\n } else if (isObservableMap(obj)) {\n return obj.get(key)\n } else if (isObservableArray(obj)) {\n return obj[key]\n }\n die(11)\n}\n\nexport function apiDefineProperty(obj: Object, key: PropertyKey, descriptor: PropertyDescriptor) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].defineProperty_(key, descriptor)\n }\n die(39)\n}\n\nexport function apiOwnKeys(obj: Object) {\n if (isObservableObject(obj)) {\n return (obj as any as IIsObservableObject)[$mobx].ownKeys_()\n }\n die(38)\n}\n","import { endBatch, startBatch } from \"../internal\"\n\n/**\n * During a transaction no views are updated until the end of the transaction.\n * The transaction will be run synchronously nonetheless.\n *\n * @param action a function that updates some reactive state\n * @returns any value that was returned by the 'action' parameter.\n */\nexport function transaction<T>(action: () => T, thisArg = undefined): T {\n startBatch()\n try {\n return action.apply(thisArg)\n } finally {\n endBatch()\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart, die } from \"../internal\"\n\nexport type IInterceptor<T> = (change: T) => T | null\n\nexport interface IInterceptable<T> {\n interceptors_: IInterceptor<T>[] | undefined\n}\n\nexport function hasInterceptors(interceptable: IInterceptable<any>) {\n return interceptable.interceptors_ !== undefined && interceptable.interceptors_.length > 0\n}\n\nexport function registerInterceptor<T>(\n interceptable: IInterceptable<T>,\n handler: IInterceptor<T>\n): Lambda {\n const interceptors = interceptable.interceptors_ || (interceptable.interceptors_ = [])\n interceptors.push(handler)\n return once(() => {\n const idx = interceptors.indexOf(handler)\n if (idx !== -1) {\n interceptors.splice(idx, 1)\n }\n })\n}\n\nexport function interceptChange<T>(\n interceptable: IInterceptable<T | null>,\n change: T | null\n): T | null {\n const prevU = untrackedStart()\n try {\n // Interceptor can modify the array, copy it to avoid concurrent modification, see #1950\n const interceptors = [...(interceptable.interceptors_ || [])]\n for (let i = 0, l = interceptors.length; i < l; i++) {\n change = interceptors[i](change)\n if (change && !(change as any).type) {\n die(14)\n }\n if (!change) {\n break\n }\n }\n return change\n } finally {\n untrackedEnd(prevU)\n }\n}\n","import { Lambda, once, untrackedEnd, untrackedStart } from \"../internal\"\n\nexport interface IListenable {\n changeListeners_: Function[] | undefined\n}\n\nexport function hasListeners(listenable: IListenable) {\n return listenable.changeListeners_ !== undefined && listenable.changeListeners_.length > 0\n}\n\nexport function registerListener(listenable: IListenable, handler: Function): Lambda {\n const listeners = listenable.changeListeners_ || (listenable.changeListeners_ = [])\n listeners.push(handler)\n return once(() => {\n const idx = listeners.indexOf(handler)\n if (idx !== -1) {\n listeners.splice(idx, 1)\n }\n })\n}\n\nexport function notifyListeners<T>(listenable: IListenable, change: T) {\n const prevU = untrackedStart()\n let listeners = listenable.changeListeners_\n if (!listeners) {\n return\n }\n listeners = listeners.slice()\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](change)\n }\n untrackedEnd(prevU)\n}\n","import {\n $mobx,\n asObservableObject,\n AnnotationsMap,\n endBatch,\n startBatch,\n CreateObservableOptions,\n ObservableObjectAdministration,\n collectStoredAnnotations,\n isPlainObject,\n isObservableObject,\n die,\n ownKeys,\n extendObservable,\n addHiddenProp,\n storedAnnotationsSymbol\n} from \"../internal\"\n\n// Hack based on https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-322267089\n// We need this, because otherwise, AdditionalKeys is going to be inferred to be any\n// set of superfluous keys. But, we rather want to get a compile error unless AdditionalKeys is\n// _explicity_ passed as generic argument\n// Fixes: https://github.com/mobxjs/mobx/issues/2325#issuecomment-691070022\ntype NoInfer<T> = [T][T extends any ? 0 : never]\n\nexport function makeObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n annotations?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n startBatch()\n try {\n if (__DEV__ && annotations && target[storedAnnotationsSymbol]) {\n die(\n `makeObservable second arg must be nullish when using decorators. Mixing @decorator syntax with annotations is not supported.`\n )\n }\n // Default to decorators\n annotations ??= collectStoredAnnotations(target)\n\n // Annotate\n ownKeys(annotations).forEach(key => adm.make_(key, annotations![key]))\n } finally {\n endBatch()\n }\n return target\n}\n\n// proto[keysSymbol] = new Set<PropertyKey>()\nconst keysSymbol = Symbol(\"mobx-keys\")\n\nexport function makeAutoObservable<T extends object, AdditionalKeys extends PropertyKey = never>(\n target: T,\n overrides?: AnnotationsMap<T, NoInfer<AdditionalKeys>>,\n options?: CreateObservableOptions\n): T {\n if (__DEV__) {\n if (!isPlainObject(target) && !isPlainObject(Object.getPrototypeOf(target))) {\n die(`'makeAutoObservable' can only be used for classes that don't have a superclass`)\n }\n if (isObservableObject(target)) {\n die(`makeAutoObservable can only be used on objects not already made observable`)\n }\n }\n\n // Optimization: avoid visiting protos\n // Assumes that annotation.make_/.extend_ works the same for plain objects\n if (isPlainObject(target)) {\n return extendObservable(target, target, overrides, options)\n }\n\n const adm: ObservableObjectAdministration = asObservableObject(target, options)[$mobx]\n\n // Optimization: cache keys on proto\n // Assumes makeAutoObservable can be called only once per object and can't be used in subclass\n if (!target[keysSymbol]) {\n const proto = Object.getPrototypeOf(target)\n const keys = new Set([...ownKeys(target), ...ownKeys(proto)])\n keys.delete(\"constructor\")\n keys.delete($mobx)\n addHiddenProp(proto, keysSymbol, keys)\n }\n\n startBatch()\n try {\n target[keysSymbol].forEach(key =>\n adm.make_(\n key,\n // must pass \"undefined\" for { key: undefined }\n !overrides ? true : key in overrides ? overrides[key] : true\n )\n )\n } finally {\n endBatch()\n }\n return target\n}\n","import {\n $mobx,\n Atom,\n EMPTY_ARRAY,\n IAtom,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n addHiddenFinalProp,\n checkIfStateModificationsAreAllowed,\n createInstanceofPredicate,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isSpyEnabled,\n notifyListeners,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n allowStateChangesStart,\n allowStateChangesEnd,\n assertProxies,\n reserveArrayBuffer,\n hasProp,\n die,\n globalState\n} from \"../internal\"\n\nconst SPLICE = \"splice\"\nexport const UPDATE = \"update\"\nexport const MAX_SPLICE_SIZE = 10000 // See e.g. https://github.com/mobxjs/mobx/issues/859\n\nexport interface IObservableArray<T = any> extends Array<T> {\n spliceWithArray(index: number, deleteCount?: number, newItems?: T[]): T[]\n clear(): T[]\n replace(newItems: T[]): T[]\n remove(value: T): boolean\n toJSON(): T[]\n}\n\ninterface IArrayBaseChange<T> {\n object: IObservableArray<T>\n observableKind: \"array\"\n debugObjectName: string\n index: number\n}\n\nexport type IArrayDidChange<T = any> = IArrayUpdate<T> | IArraySplice<T>\n\nexport interface IArrayUpdate<T = any> extends IArrayBaseChange<T> {\n type: \"update\"\n newValue: T\n oldValue: T\n}\n\nexport interface IArraySplice<T = any> extends IArrayBaseChange<T> {\n type: \"splice\"\n added: T[]\n addedCount: number\n removed: T[]\n removedCount: number\n}\n\nexport interface IArrayWillChange<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"update\"\n newValue: T\n}\n\nexport interface IArrayWillSplice<T = any> {\n object: IObservableArray<T>\n index: number\n type: \"splice\"\n added: T[]\n removedCount: number\n}\n\nconst arrayTraps = {\n get(target, name) {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === $mobx) {\n return adm\n }\n if (name === \"length\") {\n return adm.getArrayLength_()\n }\n if (typeof name === \"string\" && !isNaN(name as any)) {\n return adm.get_(parseInt(name))\n }\n if (hasProp(arrayExtensions, name)) {\n return arrayExtensions[name]\n }\n return target[name]\n },\n set(target, name, value): boolean {\n const adm: ObservableArrayAdministration = target[$mobx]\n if (name === \"length\") {\n adm.setArrayLength_(value)\n }\n if (typeof name === \"symbol\" || isNaN(name)) {\n target[name] = value\n } else {\n // numeric string\n adm.set_(parseInt(name), value)\n }\n return true\n },\n preventExtensions() {\n die(15)\n }\n}\n\nexport class ObservableArrayAdministration\n implements IInterceptable<IArrayWillChange<any> | IArrayWillSplice<any>>, IListenable\n{\n atom_: IAtom\n readonly values_: any[] = [] // this is the prop that gets proxied, so can't replace it!\n interceptors_\n changeListeners_\n enhancer_: (newV: any, oldV: any | undefined) => any\n dehancer: any\n proxy_!: IObservableArray<any>\n lastKnownLength_ = 0\n\n constructor(\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n enhancer: IEnhancer<any>,\n public owned_: boolean,\n public legacyMode_: boolean\n ) {\n this.atom_ = new Atom(name)\n this.enhancer_ = (newV, oldV) =>\n enhancer(newV, oldV, __DEV__ ? name + \"[..]\" : \"ObservableArray[..]\")\n }\n\n dehanceValue_(value: any): any {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n dehanceValues_(values: any[]): any[] {\n if (this.dehancer !== undefined && values.length > 0) {\n return values.map(this.dehancer) as any\n }\n return values\n }\n\n intercept_(handler: IInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>): Lambda {\n return registerInterceptor<IArrayWillChange<any> | IArrayWillSplice<any>>(this, handler)\n }\n\n observe_(\n listener: (changeData: IArrayDidChange<any>) => void,\n fireImmediately = false\n ): Lambda {\n if (fireImmediately) {\n listener(<IArraySplice<any>>{\n observableKind: \"array\",\n object: this.proxy_ as any,\n debugObjectName: this.atom_.name_,\n type: \"splice\",\n index: 0,\n added: this.values_.slice(),\n addedCount: this.values_.length,\n removed: [],\n removedCount: 0\n })\n }\n return registerListener(this, listener)\n }\n\n getArrayLength_(): number {\n this.atom_.reportObserved()\n return this.values_.length\n }\n\n setArrayLength_(newLength: number) {\n if (typeof newLength !== \"number\" || isNaN(newLength) || newLength < 0) {\n die(\"Out of range: \" + newLength)\n }\n let currentLength = this.values_.length\n if (newLength === currentLength) {\n return\n } else if (newLength > currentLength) {\n const newItems = new Array(newLength - currentLength)\n for (let i = 0; i < newLength - currentLength; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n this.spliceWithArray_(currentLength, 0, newItems)\n } else {\n this.spliceWithArray_(newLength, currentLength - newLength)\n }\n }\n\n updateArrayLength_(oldLength: number, delta: number) {\n if (oldLength !== this.lastKnownLength_) {\n die(16)\n }\n this.lastKnownLength_ += delta\n if (this.legacyMode_ && delta > 0) {\n reserveArrayBuffer(oldLength + delta + 1)\n }\n }\n\n spliceWithArray_(index: number, deleteCount?: number, newItems?: any[]): any[] {\n checkIfStateModificationsAreAllowed(this.atom_)\n const length = this.values_.length\n\n if (index === undefined) {\n index = 0\n } else if (index > length) {\n index = length\n } else if (index < 0) {\n index = Math.max(0, length + index)\n }\n\n if (arguments.length === 1) {\n deleteCount = length - index\n } else if (deleteCount === undefined || deleteCount === null) {\n deleteCount = 0\n } else {\n deleteCount = Math.max(0, Math.min(deleteCount, length - index))\n }\n\n if (newItems === undefined) {\n newItems = EMPTY_ARRAY\n }\n\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillSplice<any>>(this as any, {\n object: this.proxy_ as any,\n type: SPLICE,\n index,\n removedCount: deleteCount,\n added: newItems\n })\n if (!change) {\n return EMPTY_ARRAY\n }\n deleteCount = change.removedCount\n newItems = change.added\n }\n\n newItems =\n newItems.length === 0 ? newItems : newItems.map(v => this.enhancer_(v, undefined))\n if (this.legacyMode_ || __DEV__) {\n const lengthDelta = newItems.length - deleteCount\n this.updateArrayLength_(length, lengthDelta) // checks if internal array wasn't modified\n }\n const res = this.spliceItemsIntoValues_(index, deleteCount, newItems)\n\n if (deleteCount !== 0 || newItems.length !== 0) {\n this.notifyArraySplice_(index, newItems, res)\n }\n return this.dehanceValues_(res)\n }\n\n spliceItemsIntoValues_(index: number, deleteCount: number, newItems: any[]): any[] {\n if (newItems.length < MAX_SPLICE_SIZE) {\n return this.values_.splice(index, deleteCount, ...newItems)\n } else {\n // The items removed by the splice\n const res = this.values_.slice(index, index + deleteCount)\n // The items that that should remain at the end of the array\n let oldItems = this.values_.slice(index + deleteCount)\n // New length is the previous length + addition count - deletion count\n this.values_.length += newItems.length - deleteCount\n for (let i = 0; i < newItems.length; i++) {\n this.values_[index + i] = newItems[i]\n }\n for (let i = 0; i < oldItems.length; i++) {\n this.values_[index + newItems.length + i] = oldItems[i]\n }\n return res\n }\n }\n\n notifyArrayChildUpdate_(index: number, newValue: any, oldValue: any) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArrayDidChange | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n type: UPDATE,\n debugObjectName: this.atom_.name_,\n index,\n newValue,\n oldValue\n } as const)\n : null\n\n // The reason why this is on right hand side here (and not above), is this way the uglifier will drop it, but it won't\n // cause any runtime overhead in development mode without NODE_ENV set, unless spying is enabled\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n notifyArraySplice_(index: number, added: any[], removed: any[]) {\n const notifySpy = !this.owned_ && isSpyEnabled()\n const notify = hasListeners(this)\n const change: IArraySplice | null =\n notify || notifySpy\n ? ({\n observableKind: \"array\",\n object: this.proxy_,\n debugObjectName: this.atom_.name_,\n type: SPLICE,\n index,\n removed,\n added,\n removedCount: removed.length,\n addedCount: added.length\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n this.atom_.reportChanged()\n // conform: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/observe\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get_(index: number): any | undefined {\n if (this.legacyMode_ && index >= this.values_.length) {\n console.warn(\n __DEV__\n ? `[mobx.array] Attempt to read an array index (${index}) that is out of bounds (${this.values_.length}). Please check length first. Out of bound indices will not be tracked by MobX`\n : `[mobx] Out of bounds read: ${index}`\n )\n return undefined\n }\n this.atom_.reportObserved()\n return this.dehanceValue_(this.values_[index])\n }\n\n set_(index: number, newValue: any) {\n const values = this.values_\n if (this.legacyMode_ && index > values.length) {\n // out of bounds\n die(17, index, values.length)\n }\n if (index < values.length) {\n // update at index in range\n checkIfStateModificationsAreAllowed(this.atom_)\n const oldValue = values[index]\n if (hasInterceptors(this)) {\n const change = interceptChange<IArrayWillChange<any>>(this as any, {\n type: UPDATE,\n object: this.proxy_ as any, // since \"this\" is the real array we need to pass its proxy\n index,\n newValue\n })\n if (!change) {\n return\n }\n newValue = change.newValue\n }\n newValue = this.enhancer_(newValue, oldValue)\n const changed = newValue !== oldValue\n if (changed) {\n values[index] = newValue\n this.notifyArrayChildUpdate_(index, newValue, oldValue)\n }\n } else {\n // For out of bound index, we don't create an actual sparse array,\n // but rather fill the holes with undefined (same as setArrayLength_).\n // This could be considered a bug.\n const newItems = new Array(index + 1 - values.length)\n for (let i = 0; i < newItems.length - 1; i++) {\n newItems[i] = undefined\n } // No Array.fill everywhere...\n newItems[newItems.length - 1] = newValue\n this.spliceWithArray_(values.length, 0, newItems)\n }\n }\n}\n\nexport function createObservableArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n): IObservableArray<T> {\n assertProxies()\n const adm = new ObservableArrayAdministration(name, enhancer, owned, false)\n addHiddenFinalProp(adm.values_, $mobx, adm)\n const proxy = new Proxy(adm.values_, arrayTraps) as any\n adm.proxy_ = proxy\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n adm.spliceWithArray_(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n return proxy\n}\n\n// eslint-disable-next-line\nexport var arrayExtensions = {\n clear(): any[] {\n return this.splice(0)\n },\n\n replace(newItems: any[]) {\n const adm: ObservableArrayAdministration = this[$mobx]\n return adm.spliceWithArray_(0, adm.values_.length, newItems)\n },\n\n // Used by JSON.stringify\n toJSON(): any[] {\n return this.slice()\n },\n\n /*\n * functions that do alter the internal structure of the array, (based on lib.es6.d.ts)\n * since these functions alter the inner structure of the array, the have side effects.\n * Because the have side effects, they should not be used in computed function,\n * and for that reason the do not call dependencyState.notifyObserved\n */\n splice(index: number, deleteCount?: number, ...newItems: any[]): any[] {\n const adm: ObservableArrayAdministration = this[$mobx]\n switch (arguments.length) {\n case 0:\n return []\n case 1:\n return adm.spliceWithArray_(index)\n case 2:\n return adm.spliceWithArray_(index, deleteCount)\n }\n return adm.spliceWithArray_(index, deleteCount, newItems)\n },\n\n spliceWithArray(index: number, deleteCount?: number, newItems?: any[]): any[] {\n return (this[$mobx] as ObservableArrayAdministration).spliceWithArray_(\n index,\n deleteCount,\n newItems\n )\n },\n\n push(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(adm.values_.length, 0, items)\n return adm.values_.length\n },\n\n pop() {\n return this.splice(Math.max(this[$mobx].values_.length - 1, 0), 1)[0]\n },\n\n shift() {\n return this.splice(0, 1)[0]\n },\n\n unshift(...items: any[]): number {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.spliceWithArray_(0, 0, items)\n return adm.values_.length\n },\n\n reverse(): any[] {\n // reverse by default mutates in place before returning the result\n // which makes it both a 'derivation' and a 'mutation'.\n if (globalState.trackingDerivation) {\n die(37, \"reverse\")\n }\n this.replace(this.slice().reverse())\n return this\n },\n\n sort(): any[] {\n // sort by default mutates in place before returning the result\n // which goes against all good practices. Let's not change the array in place!\n if (globalState.trackingDerivation) {\n die(37, \"sort\")\n }\n const copy = this.slice()\n copy.sort.apply(copy, arguments)\n this.replace(copy)\n return this\n },\n\n remove(value: any): boolean {\n const adm: ObservableArrayAdministration = this[$mobx]\n const idx = adm.dehanceValues_(adm.values_).indexOf(value)\n if (idx > -1) {\n this.splice(idx, 1)\n return true\n }\n return false\n }\n}\n\n/**\n * Wrap function from prototype\n * Without this, everything works as well, but this works\n * faster as everything works on unproxied values\n */\naddArrayExtension(\"concat\", simpleFunc)\naddArrayExtension(\"flat\", simpleFunc)\naddArrayExtension(\"includes\", simpleFunc)\naddArrayExtension(\"indexOf\", simpleFunc)\naddArrayExtension(\"join\", simpleFunc)\naddArrayExtension(\"lastIndexOf\", simpleFunc)\naddArrayExtension(\"slice\", simpleFunc)\naddArrayExtension(\"toString\", simpleFunc)\naddArrayExtension(\"toLocaleString\", simpleFunc)\n// map\naddArrayExtension(\"every\", mapLikeFunc)\naddArrayExtension(\"filter\", mapLikeFunc)\naddArrayExtension(\"find\", mapLikeFunc)\naddArrayExtension(\"findIndex\", mapLikeFunc)\naddArrayExtension(\"flatMap\", mapLikeFunc)\naddArrayExtension(\"forEach\", mapLikeFunc)\naddArrayExtension(\"map\", mapLikeFunc)\naddArrayExtension(\"some\", mapLikeFunc)\n// reduce\naddArrayExtension(\"reduce\", reduceLikeFunc)\naddArrayExtension(\"reduceRight\", reduceLikeFunc)\n\nfunction addArrayExtension(funcName, funcFactory) {\n if (typeof Array.prototype[funcName] === \"function\") {\n arrayExtensions[funcName] = funcFactory(funcName)\n }\n}\n\n// Report and delegate to dehanced array\nfunction simpleFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction mapLikeFunc(funcName) {\n return function (callback, thisArg) {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n return dehancedValues[funcName]((element, index) => {\n return callback.call(thisArg, element, index, this)\n })\n }\n}\n\n// Make sure callbacks recieve correct array arg #2326\nfunction reduceLikeFunc(funcName) {\n return function () {\n const adm: ObservableArrayAdministration = this[$mobx]\n adm.atom_.reportObserved()\n const dehancedValues = adm.dehanceValues_(adm.values_)\n // #2432 - reduce behavior depends on arguments.length\n const callback = arguments[0]\n arguments[0] = (accumulator, currentValue, index) => {\n return callback(accumulator, currentValue, index, this)\n }\n return dehancedValues[funcName].apply(dehancedValues, arguments)\n }\n}\n\nconst isObservableArrayAdministration = createInstanceofPredicate(\n \"ObservableArrayAdministration\",\n ObservableArrayAdministration\n)\n\nexport function isObservableArray(thing): thing is IObservableArray<any> {\n return isObject(thing) && isObservableArrayAdministration(thing[$mobx])\n}\n","import { IComputedDidChange } from \"./computedvalue\"\nimport { IValueDidChange, IBoxDidChange } from \"./../types/observablevalue\"\nimport { IObjectDidChange } from \"./../types/observableobject\"\nimport { IArrayDidChange } from \"./../types/observablearray\"\nimport { Lambda, globalState, once, ISetDidChange, IMapDidChange } from \"../internal\"\n\nexport function isSpyEnabled() {\n return __DEV__ && !!globalState.spyListeners.length\n}\n\nexport type PureSpyEvent =\n | { type: \"action\"; name: string; object: unknown; arguments: unknown[] }\n | { type: \"scheduled-reaction\"; name: string }\n | { type: \"reaction\"; name: string }\n | { type: \"error\"; name: string; message: string; error: string }\n | IComputedDidChange<unknown>\n | IObjectDidChange<unknown>\n | IArrayDidChange<unknown>\n | IMapDidChange<unknown, unknown>\n | ISetDidChange<unknown>\n | IValueDidChange<unknown>\n | IBoxDidChange<unknown>\n | { type: \"report-end\"; spyReportEnd: true; time?: number }\n\ntype SpyEvent = PureSpyEvent & { spyReportStart?: true }\n\nexport function spyReport(event: SpyEvent) {\n if (!__DEV__) {\n return\n } // dead code elimination can do the rest\n if (!globalState.spyListeners.length) {\n return\n }\n const listeners = globalState.spyListeners\n for (let i = 0, l = listeners.length; i < l; i++) {\n listeners[i](event)\n }\n}\n\nexport function spyReportStart(event: PureSpyEvent) {\n if (!__DEV__) {\n return\n }\n const change = { ...event, spyReportStart: true as const }\n spyReport(change)\n}\n\nconst END_EVENT: SpyEvent = { type: \"report-end\", spyReportEnd: true }\n\nexport function spyReportEnd(change?: { time?: number }) {\n if (!__DEV__) {\n return\n }\n if (change) {\n spyReport({ ...change, type: \"report-end\", spyReportEnd: true })\n } else {\n spyReport(END_EVENT)\n }\n}\n\nexport function spy(listener: (change: SpyEvent) => void): Lambda {\n if (!__DEV__) {\n console.warn(`[mobx.spy] Is a no-op in production builds`)\n return function () {}\n } else {\n globalState.spyListeners.push(listener)\n return once(() => {\n globalState.spyListeners = globalState.spyListeners.filter(l => l !== listener)\n })\n }\n}\n","import {\n $mobx,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n Lambda,\n ObservableValue,\n checkIfStateModificationsAreAllowed,\n createAtom,\n createInstanceofPredicate,\n deepEnhancer,\n getNextId,\n getPlainObjectKeys,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isES6Map,\n isPlainObject,\n isSpyEnabled,\n makeIterable,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n stringifyKey,\n transaction,\n untracked,\n onBecomeUnobserved,\n globalState,\n die,\n isFunction,\n UPDATE,\n IAtom,\n PureSpyEvent,\n allowStateChanges\n} from \"../internal\"\n\nexport interface IKeyValueMap<V = any> {\n [key: string]: V\n}\n\nexport type IMapEntry<K = any, V = any> = [K, V]\nexport type IReadonlyMapEntry<K = any, V = any> = readonly [K, V]\nexport type IMapEntries<K = any, V = any> = IMapEntry<K, V>[]\nexport type IReadonlyMapEntries<K = any, V = any> = IReadonlyMapEntry<K, V>[]\n\nexport type IMapDidChange<K = any, V = any> = { observableKind: \"map\"; debugObjectName: string } & (\n | {\n object: ObservableMap<K, V>\n name: K // actual the key or index, but this is based on the ancient .observe proposal for consistency\n type: \"update\"\n newValue: V\n oldValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"add\"\n newValue: V\n }\n | {\n object: ObservableMap<K, V>\n name: K\n type: \"delete\"\n oldValue: V\n }\n)\n\nexport interface IMapWillChange<K = any, V = any> {\n object: ObservableMap<K, V>\n type: \"update\" | \"add\" | \"delete\"\n name: K\n newValue?: V\n}\n\nconst ObservableMapMarker = {}\n\nexport const ADD = \"add\"\nexport const DELETE = \"delete\"\n\nexport type IObservableMapInitialValues<K = any, V = any> =\n | IMapEntries<K, V>\n | IReadonlyMapEntries<K, V>\n | IKeyValueMap<V>\n | Map<K, V>\n\n// just extend Map? See also https://gist.github.com/nestharus/13b4d74f2ef4a2f4357dbd3fc23c1e54\n// But: https://github.com/mobxjs/mobx/issues/1556\nexport class ObservableMap<K = any, V = any>\n implements Map<K, V>, IInterceptable<IMapWillChange<K, V>>, IListenable {\n [$mobx] = ObservableMapMarker\n data_: Map<K, ObservableValue<V>>\n hasMap_: Map<K, ObservableValue<boolean>> // hasMap, not hashMap >-).\n keysAtom_: IAtom\n interceptors_\n changeListeners_\n dehancer: any\n\n constructor(\n initialData?: IObservableMapInitialValues<K, V>,\n public enhancer_: IEnhancer<V> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableMap@\" + getNextId() : \"ObservableMap\"\n ) {\n if (!isFunction(Map)) {\n die(18)\n }\n this.keysAtom_ = createAtom(__DEV__ ? `${this.name_}.keys()` : \"ObservableMap.keys()\")\n this.data_ = new Map()\n this.hasMap_ = new Map()\n allowStateChanges(true, () => {\n this.merge(initialData)\n })\n }\n\n private has_(key: K): boolean {\n return this.data_.has(key)\n }\n\n has(key: K): boolean {\n if (!globalState.trackingDerivation) {\n return this.has_(key)\n }\n\n let entry = this.hasMap_.get(key)\n if (!entry) {\n const newEntry = (entry = new ObservableValue(\n this.has_(key),\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableMap.key?\",\n false\n ))\n this.hasMap_.set(key, newEntry)\n onBecomeUnobserved(newEntry, () => this.hasMap_.delete(key))\n }\n\n return entry.get()\n }\n\n set(key: K, value: V) {\n const hasKey = this.has_(key)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: hasKey ? UPDATE : ADD,\n object: this,\n newValue: value,\n name: key\n })\n if (!change) {\n return this\n }\n value = change.newValue!\n }\n if (hasKey) {\n this.updateValue_(key, value)\n } else {\n this.addValue_(key, value)\n }\n return this\n }\n\n delete(key: K): boolean {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<IMapWillChange<K, V>>(this, {\n type: DELETE,\n object: this,\n name: key\n })\n if (!change) {\n return false\n }\n }\n if (this.has_(key)) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: (<any>this.data_.get(key)).value_,\n name: key\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n transaction(() => {\n this.keysAtom_.reportChanged()\n this.hasMap_.get(key)?.setNewValue_(false)\n const observable = this.data_.get(key)!\n observable.setNewValue_(undefined as any)\n this.data_.delete(key)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n private updateValue_(key: K, newValue: V | undefined) {\n const observable = this.data_.get(key)!\n newValue = (observable as any).prepareNewValue_(newValue) as V\n if (newValue !== globalState.UNCHANGED) {\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: UPDATE,\n object: this,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n observable.setNewValue_(newValue as V)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n }\n\n private addValue_(key: K, newValue: V) {\n checkIfStateModificationsAreAllowed(this.keysAtom_)\n transaction(() => {\n const observable = new ObservableValue(\n newValue,\n this.enhancer_,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}` : \"ObservableMap.key\",\n false\n )\n this.data_.set(key, observable)\n newValue = (observable as any).value_ // value might have been changed\n this.hasMap_.get(key)?.setNewValue_(true)\n this.keysAtom_.reportChanged()\n })\n const notifySpy = isSpyEnabled()\n const notify = hasListeners(this)\n const change: IMapDidChange<K, V> | null =\n notify || notifySpy\n ? {\n observableKind: \"map\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n name: key,\n newValue\n }\n : null\n if (__DEV__ && notifySpy) {\n spyReportStart(change! as PureSpyEvent)\n } // TODO fix type\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n get(key: K): V | undefined {\n if (this.has(key)) {\n return this.dehanceValue_(this.data_.get(key)!.get())\n }\n return this.dehanceValue_(undefined)\n }\n\n private dehanceValue_<X extends V | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n keys(): IterableIterator<K> {\n this.keysAtom_.reportObserved()\n return this.data_.keys()\n }\n\n values(): IterableIterator<V> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : self.get(value)\n }\n }\n })\n }\n\n entries(): IterableIterator<IMapEntry<K, V>> {\n const self = this\n const keys = this.keys()\n return makeIterable({\n next() {\n const { done, value } = keys.next()\n return {\n done,\n value: done ? (undefined as any) : ([value, self.get(value)!] as [K, V])\n }\n }\n })\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n forEach(callback: (value: V, key: K, object: Map<K, V>) => void, thisArg?) {\n for (const [key, value] of this) {\n callback.call(thisArg, value, key, this)\n }\n }\n\n /** Merge another object into this object, returns this. */\n merge(other?: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n if (isObservableMap(other)) {\n other = new Map(other)\n }\n transaction(() => {\n if (isPlainObject(other)) {\n getPlainObjectKeys(other).forEach((key: any) =>\n this.set(key as K, (other as IKeyValueMap)[key])\n )\n } else if (Array.isArray(other)) {\n other.forEach(([key, value]) => this.set(key, value))\n } else if (isES6Map(other)) {\n if (other.constructor !== Map) {\n die(19, other)\n }\n other.forEach((value, key) => this.set(key, value))\n } else if (other !== null && other !== undefined) {\n die(20, other)\n }\n })\n return this\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const key of this.keys()) {\n this.delete(key)\n }\n })\n })\n }\n\n replace(values: IObservableMapInitialValues<K, V>): ObservableMap<K, V> {\n // Implementation requirements:\n // - respect ordering of replacement map\n // - allow interceptors to run and potentially prevent individual operations\n // - don't recreate observables that already exist in original map (so we don't destroy existing subscriptions)\n // - don't _keysAtom.reportChanged if the keys of resulting map are indentical (order matters!)\n // - note that result map may differ from replacement map due to the interceptors\n transaction(() => {\n // Convert to map so we can do quick key lookups\n const replacementMap = convertToMap(values)\n const orderedData = new Map()\n // Used for optimization\n let keysReportChangedCalled = false\n // Delete keys that don't exist in replacement map\n // if the key deletion is prevented by interceptor\n // add entry at the beginning of the result map\n for (const key of this.data_.keys()) {\n // Concurrently iterating/deleting keys\n // iterator should handle this correctly\n if (!replacementMap.has(key)) {\n const deleted = this.delete(key)\n // Was the key removed?\n if (deleted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n } else {\n // Delete prevented by interceptor\n const value = this.data_.get(key)\n orderedData.set(key, value)\n }\n }\n }\n // Merge entries\n for (const [key, value] of replacementMap.entries()) {\n // We will want to know whether a new key is added\n const keyExisted = this.data_.has(key)\n // Add or update value\n this.set(key, value)\n // The addition could have been prevent by interceptor\n if (this.data_.has(key)) {\n // The update could have been prevented by interceptor\n // and also we want to preserve existing values\n // so use value from _data map (instead of replacement map)\n const value = this.data_.get(key)\n orderedData.set(key, value)\n // Was a new key added?\n if (!keyExisted) {\n // _keysAtom.reportChanged() was already called\n keysReportChangedCalled = true\n }\n }\n }\n // Check for possible key order change\n if (!keysReportChangedCalled) {\n if (this.data_.size !== orderedData.size) {\n // If size differs, keys are definitely modified\n this.keysAtom_.reportChanged()\n } else {\n const iter1 = this.data_.keys()\n const iter2 = orderedData.keys()\n let next1 = iter1.next()\n let next2 = iter2.next()\n while (!next1.done) {\n if (next1.value !== next2.value) {\n this.keysAtom_.reportChanged()\n break\n }\n next1 = iter1.next()\n next2 = iter2.next()\n }\n }\n }\n // Use correctly ordered map\n this.data_ = orderedData\n })\n return this\n }\n\n get size(): number {\n this.keysAtom_.reportObserved()\n return this.data_.size\n }\n\n toString(): string {\n return \"[object ObservableMap]\"\n }\n\n toJSON(): [K, V][] {\n return Array.from(this)\n }\n\n get [Symbol.toStringTag]() {\n return \"Map\"\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(listener: (changes: IMapDidChange<K, V>) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with maps.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<IMapWillChange<K, V>>): Lambda {\n return registerInterceptor(this, handler)\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableMap = createInstanceofPredicate(\"ObservableMap\", ObservableMap) as (\n thing: any\n) => thing is ObservableMap<any, any>\n\nfunction convertToMap(dataStructure: any): Map<any, any> {\n if (isES6Map(dataStructure) || isObservableMap(dataStructure)) {\n return dataStructure\n } else if (Array.isArray(dataStructure)) {\n return new Map(dataStructure)\n } else if (isPlainObject(dataStructure)) {\n const map = new Map()\n for (const key in dataStructure) {\n map.set(key, dataStructure[key])\n }\n return map\n } else {\n return die(21, dataStructure)\n }\n}\n","import {\n $mobx,\n createAtom,\n deepEnhancer,\n getNextId,\n IEnhancer,\n isSpyEnabled,\n hasListeners,\n IListenable,\n registerListener,\n Lambda,\n spyReportStart,\n notifyListeners,\n spyReportEnd,\n createInstanceofPredicate,\n hasInterceptors,\n interceptChange,\n IInterceptable,\n IInterceptor,\n registerInterceptor,\n checkIfStateModificationsAreAllowed,\n untracked,\n makeIterable,\n transaction,\n isES6Set,\n IAtom,\n DELETE,\n ADD,\n die,\n isFunction\n} from \"../internal\"\n\nconst ObservableSetMarker = {}\n\nexport type IObservableSetInitialValues<T> = Set<T> | readonly T[]\n\nexport type ISetDidChange<T = any> =\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"add\"\n newValue: T\n }\n | {\n object: ObservableSet<T>\n observableKind: \"set\"\n debugObjectName: string\n type: \"delete\"\n oldValue: T\n }\n\nexport type ISetWillChange<T = any> =\n | {\n type: \"delete\"\n object: ObservableSet<T>\n oldValue: T\n }\n | {\n type: \"add\"\n object: ObservableSet<T>\n newValue: T\n }\n\nexport class ObservableSet<T = any> implements Set<T>, IInterceptable<ISetWillChange>, IListenable {\n [$mobx] = ObservableSetMarker\n private data_: Set<any> = new Set()\n atom_: IAtom\n changeListeners_\n interceptors_\n dehancer: any\n enhancer_: (newV: any, oldV: any | undefined) => any\n\n constructor(\n initialData?: IObservableSetInitialValues<T>,\n enhancer: IEnhancer<T> = deepEnhancer,\n public name_ = __DEV__ ? \"ObservableSet@\" + getNextId() : \"ObservableSet\"\n ) {\n if (!isFunction(Set)) {\n die(22)\n }\n this.atom_ = createAtom(this.name_)\n this.enhancer_ = (newV, oldV) => enhancer(newV, oldV, name_)\n if (initialData) {\n this.replace(initialData)\n }\n }\n\n private dehanceValue_<X extends T | undefined>(value: X): X {\n if (this.dehancer !== undefined) {\n return this.dehancer(value)\n }\n return value\n }\n\n clear() {\n transaction(() => {\n untracked(() => {\n for (const value of this.data_.values()) {\n this.delete(value)\n }\n })\n })\n }\n\n forEach(callbackFn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any) {\n for (const value of this) {\n callbackFn.call(thisArg, value, value, this)\n }\n }\n\n get size() {\n this.atom_.reportObserved()\n return this.data_.size\n }\n\n add(value: T) {\n checkIfStateModificationsAreAllowed(this.atom_)\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: ADD,\n object: this,\n newValue: value\n })\n if (!change) {\n return this\n }\n // ideally, value = change.value would be done here, so that values can be\n // changed by interceptor. Same applies for other Set and Map api's.\n }\n if (!this.has(value)) {\n transaction(() => {\n this.data_.add(this.enhancer_(value, undefined))\n this.atom_.reportChanged()\n })\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: ADD,\n object: this,\n newValue: value\n }\n : null\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n }\n\n return this\n }\n\n delete(value: T) {\n if (hasInterceptors(this)) {\n const change = interceptChange<ISetWillChange<T>>(this, {\n type: DELETE,\n object: this,\n oldValue: value\n })\n if (!change) {\n return false\n }\n }\n if (this.has(value)) {\n const notifySpy = __DEV__ && isSpyEnabled()\n const notify = hasListeners(this)\n const change =\n notify || notifySpy\n ? <ISetDidChange<T>>{\n observableKind: \"set\",\n debugObjectName: this.name_,\n type: DELETE,\n object: this,\n oldValue: value\n }\n : null\n\n if (notifySpy && __DEV__) {\n spyReportStart(change!)\n }\n transaction(() => {\n this.atom_.reportChanged()\n this.data_.delete(value)\n })\n if (notify) {\n notifyListeners(this, change)\n }\n if (notifySpy && __DEV__) {\n spyReportEnd()\n }\n return true\n }\n return false\n }\n\n has(value: T) {\n this.atom_.reportObserved()\n return this.data_.has(this.dehanceValue_(value))\n }\n\n entries() {\n let nextIndex = 0\n const keys = Array.from(this.keys())\n const values = Array.from(this.values())\n return makeIterable<[T, T]>({\n next() {\n const index = nextIndex\n nextIndex += 1\n return index < values.length\n ? { value: [keys[index], values[index]], done: false }\n : { done: true }\n }\n } as any)\n }\n\n keys(): IterableIterator<T> {\n return this.values()\n }\n\n values(): IterableIterator<T> {\n this.atom_.reportObserved()\n const self = this\n let nextIndex = 0\n const observableValues = Array.from(this.data_.values())\n return makeIterable<T>({\n next() {\n return nextIndex < observableValues.length\n ? { value: self.dehanceValue_(observableValues[nextIndex++]), done: false }\n : { done: true }\n }\n } as any)\n }\n\n replace(other: ObservableSet<T> | IObservableSetInitialValues<T>): ObservableSet<T> {\n if (isObservableSet(other)) {\n other = new Set(other)\n }\n\n transaction(() => {\n if (Array.isArray(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (isES6Set(other)) {\n this.clear()\n other.forEach(value => this.add(value))\n } else if (other !== null && other !== undefined) {\n die(\"Cannot initialize set from \" + other)\n }\n })\n\n return this\n }\n observe_(listener: (changes: ISetDidChange<T>) => void, fireImmediately?: boolean): Lambda {\n // ... 'fireImmediately' could also be true?\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support fireImmediately=true in combination with sets.\")\n }\n return registerListener(this, listener)\n }\n\n intercept_(handler: IInterceptor<ISetWillChange<T>>): Lambda {\n return registerInterceptor(this, handler)\n }\n\n toJSON(): T[] {\n return Array.from(this)\n }\n\n toString(): string {\n return \"[object ObservableSet]\"\n }\n\n [Symbol.iterator]() {\n return this.values()\n }\n\n get [Symbol.toStringTag]() {\n return \"Set\"\n }\n}\n\n// eslint-disable-next-line\nexport var isObservableSet = createInstanceofPredicate(\"ObservableSet\", ObservableSet) as (\n thing: any\n) => thing is ObservableSet<any>\n","import {\n CreateObservableOptions,\n getAnnotationFromOptions,\n propagateChanged,\n isAnnotation,\n $mobx,\n Atom,\n Annotation,\n ComputedValue,\n IAtom,\n IComputedValueOptions,\n IEnhancer,\n IInterceptable,\n IListenable,\n Lambda,\n ObservableValue,\n addHiddenProp,\n createInstanceofPredicate,\n endBatch,\n getNextId,\n hasInterceptors,\n hasListeners,\n interceptChange,\n isObject,\n isPlainObject,\n isSpyEnabled,\n notifyListeners,\n referenceEnhancer,\n registerInterceptor,\n registerListener,\n spyReportEnd,\n spyReportStart,\n startBatch,\n stringifyKey,\n globalState,\n ADD,\n UPDATE,\n die,\n hasProp,\n getDescriptor,\n storedAnnotationsSymbol,\n ownKeys,\n isOverride,\n defineProperty,\n autoAnnotation,\n getAdministration,\n getDebugName,\n objectPrototype,\n MakeResult\n} from \"../internal\"\n\nconst descriptorCache = Object.create(null)\n\nexport type IObjectDidChange<T = any> = {\n observableKind: \"object\"\n name: PropertyKey\n object: T\n debugObjectName: string\n} & (\n | {\n type: \"add\"\n newValue: any\n }\n | {\n type: \"update\"\n oldValue: any\n newValue: any\n }\n | {\n type: \"remove\"\n oldValue: any\n }\n)\n\nexport type IObjectWillChange<T = any> =\n | {\n object: T\n type: \"update\" | \"add\"\n name: PropertyKey\n newValue: any\n }\n | {\n object: T\n type: \"remove\"\n name: PropertyKey\n }\n\nconst REMOVE = \"remove\"\n\nexport class ObservableObjectAdministration\n implements IInterceptable<IObjectWillChange>, IListenable\n{\n keysAtom_: IAtom\n changeListeners_\n interceptors_\n proxy_: any\n isPlainObject_: boolean\n appliedAnnotations_?: object\n private pendingKeys_: undefined | Map<PropertyKey, ObservableValue<boolean>>\n\n constructor(\n public target_: any,\n public values_ = new Map<PropertyKey, ObservableValue<any> | ComputedValue<any>>(),\n public name_: string,\n // Used anytime annotation is not explicitely provided\n public defaultAnnotation_: Annotation = autoAnnotation\n ) {\n this.keysAtom_ = new Atom(__DEV__ ? `${this.name_}.keys` : \"ObservableObject.keys\")\n // Optimization: we use this frequently\n this.isPlainObject_ = isPlainObject(this.target_)\n if (__DEV__ && !isAnnotation(this.defaultAnnotation_)) {\n die(`defaultAnnotation must be valid annotation`)\n }\n if (__DEV__) {\n // Prepare structure for tracking which fields were already annotated\n this.appliedAnnotations_ = {}\n }\n }\n\n getObservablePropValue_(key: PropertyKey): any {\n return this.values_.get(key)!.get()\n }\n\n setObservablePropValue_(key: PropertyKey, newValue): boolean | null {\n const observable = this.values_.get(key)\n if (observable instanceof ComputedValue) {\n observable.set(newValue)\n return true\n }\n\n // intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n type: UPDATE,\n object: this.proxy_ || this.target_,\n name: key,\n newValue\n })\n if (!change) {\n return null\n }\n newValue = (change as any).newValue\n }\n newValue = (observable as any).prepareNewValue_(newValue)\n\n // notify spy & observers\n if (newValue !== globalState.UNCHANGED) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? {\n type: UPDATE,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n oldValue: (observable as any).value_,\n name: key,\n newValue\n }\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n ;(observable as ObservableValue<any>).setNewValue_(newValue)\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n return true\n }\n\n get_(key: PropertyKey): any {\n if (globalState.trackingDerivation && !hasProp(this.target_, key)) {\n // Key doesn't exist yet, subscribe for it in case it's added later\n this.has_(key)\n }\n return this.target_[key]\n }\n\n /**\n * @param {PropertyKey} key\n * @param {any} value\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n set_(key: PropertyKey, value: any, proxyTrap: boolean = false): boolean | null {\n // Don't use .has(key) - we care about own\n if (hasProp(this.target_, key)) {\n // Existing prop\n if (this.values_.has(key)) {\n // Observable (can be intercepted)\n return this.setObservablePropValue_(key, value)\n } else if (proxyTrap) {\n // Non-observable - proxy\n return Reflect.set(this.target_, key, value)\n } else {\n // Non-observable\n this.target_[key] = value\n return true\n }\n } else {\n // New prop\n return this.extend_(\n key,\n { value, enumerable: true, writable: true, configurable: true },\n this.defaultAnnotation_,\n proxyTrap\n )\n }\n }\n\n // Trap for \"in\"\n has_(key: PropertyKey): boolean {\n if (!globalState.trackingDerivation) {\n // Skip key subscription outside derivation\n return key in this.target_\n }\n this.pendingKeys_ ||= new Map()\n let entry = this.pendingKeys_.get(key)\n if (!entry) {\n entry = new ObservableValue(\n key in this.target_,\n referenceEnhancer,\n __DEV__ ? `${this.name_}.${stringifyKey(key)}?` : \"ObservableObject.key?\",\n false\n )\n this.pendingKeys_.set(key, entry)\n }\n return entry.get()\n }\n\n /**\n * @param {PropertyKey} key\n * @param {Annotation|boolean} annotation true - use default annotation, false - ignore prop\n */\n make_(key: PropertyKey, annotation: Annotation | boolean): void {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return\n }\n assertAnnotable(this, annotation, key)\n if (!(key in this.target_)) {\n // Throw on missing key, except for decorators:\n // Decorator annotations are collected from whole prototype chain.\n // When called from super() some props may not exist yet.\n // However we don't have to worry about missing prop,\n // because the decorator must have been applied to something.\n if (this.target_[storedAnnotationsSymbol]?.[key]) {\n return // will be annotated by subclass constructor\n } else {\n die(1, annotation.annotationType_, `${this.name_}.${key.toString()}`)\n }\n }\n let source = this.target_\n while (source && source !== objectPrototype) {\n const descriptor = getDescriptor(source, key)\n if (descriptor) {\n const outcome = annotation.make_(this, key, descriptor, source)\n if (outcome === MakeResult.Cancel) {\n return\n }\n if (outcome === MakeResult.Break) {\n break\n }\n }\n source = Object.getPrototypeOf(source)\n }\n recordAnnotationApplied(this, annotation, key)\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {Annotation|boolean} annotation true - use default annotation, false - copy as is\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n extend_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n annotation: Annotation | boolean,\n proxyTrap: boolean = false\n ): boolean | null {\n if (annotation === true) {\n annotation = this.defaultAnnotation_\n }\n if (annotation === false) {\n return this.defineProperty_(key, descriptor, proxyTrap)\n }\n assertAnnotable(this, annotation, key)\n const outcome = annotation.extend_(this, key, descriptor, proxyTrap)\n if (outcome) {\n recordAnnotationApplied(this, annotation, key)\n }\n return outcome\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n defineProperty_(\n key: PropertyKey,\n descriptor: PropertyDescriptor,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: descriptor.value\n })\n if (!change) {\n return null\n }\n const { newValue } = change as any\n if (descriptor.value !== newValue) {\n descriptor = {\n ...descriptor,\n value: newValue\n }\n }\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n // Notify\n this.notifyPropertyAddition_(key, descriptor.value)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineObservableProperty_(\n key: PropertyKey,\n value: any,\n enhancer: IEnhancer<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: value\n })\n if (!change) {\n return null\n }\n value = (change as any).newValue\n }\n\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: true,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n const observable = new ObservableValue(\n value,\n enhancer,\n __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\",\n false\n )\n\n this.values_.set(key, observable)\n\n // Notify (value possibly changed by ObservableValue)\n this.notifyPropertyAddition_(key, observable.value_)\n } finally {\n endBatch()\n }\n return true\n }\n\n // If original descriptor becomes relevant, move this to annotation directly\n defineComputedProperty_(\n key: PropertyKey,\n options: IComputedValueOptions<any>,\n proxyTrap: boolean = false\n ): boolean | null {\n try {\n startBatch()\n\n // Delete\n const deleteOutcome = this.delete_(key)\n if (!deleteOutcome) {\n // Failure or intercepted\n return deleteOutcome\n }\n\n // ADD interceptor\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: ADD,\n newValue: undefined\n })\n if (!change) {\n return null\n }\n }\n options.name ||= __DEV__ ? `${this.name_}.${key.toString()}` : \"ObservableObject.key\"\n options.context = this.proxy_ || this.target_\n const cachedDescriptor = getCachedObservablePropDescriptor(key)\n const descriptor = {\n configurable: globalState.safeDescriptors ? this.isPlainObject_ : true,\n enumerable: false,\n get: cachedDescriptor.get,\n set: cachedDescriptor.set\n }\n\n // Define\n if (proxyTrap) {\n if (!Reflect.defineProperty(this.target_, key, descriptor)) {\n return false\n }\n } else {\n defineProperty(this.target_, key, descriptor)\n }\n\n this.values_.set(key, new ComputedValue(options))\n\n // Notify\n this.notifyPropertyAddition_(key, undefined)\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * @param {PropertyKey} key\n * @param {PropertyDescriptor} descriptor\n * @param {boolean} proxyTrap whether it's called from proxy trap\n * @returns {boolean|null} true on success, false on failure (proxyTrap + non-configurable), null when cancelled by interceptor\n */\n delete_(key: PropertyKey, proxyTrap: boolean = false): boolean | null {\n // No such prop\n if (!hasProp(this.target_, key)) {\n return true\n }\n\n // Intercept\n if (hasInterceptors(this)) {\n const change = interceptChange<IObjectWillChange>(this, {\n object: this.proxy_ || this.target_,\n name: key,\n type: REMOVE\n })\n // Cancelled\n if (!change) {\n return null\n }\n }\n\n // Delete\n try {\n startBatch()\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n const observable = this.values_.get(key)\n // Value needed for spies/listeners\n let value = undefined\n // Optimization: don't pull the value unless we will need it\n if (!observable && (notify || notifySpy)) {\n value = getDescriptor(this.target_, key)?.value\n }\n // delete prop (do first, may fail)\n if (proxyTrap) {\n if (!Reflect.deleteProperty(this.target_, key)) {\n return false\n }\n } else {\n delete this.target_[key]\n }\n // Allow re-annotating this field\n if (__DEV__) {\n delete this.appliedAnnotations_![key]\n }\n // Clear observable\n if (observable) {\n this.values_.delete(key)\n // for computed, value is undefined\n if (observable instanceof ObservableValue) {\n value = observable.value_\n }\n // Notify: autorun(() => obj[key]), see #1796\n propagateChanged(observable)\n }\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n\n // Notify \"has\" observers\n // \"in\" as it may still exist in proto\n this.pendingKeys_?.get(key)?.set(key in this.target_)\n\n // Notify spies/listeners\n if (notify || notifySpy) {\n const change: IObjectDidChange = {\n type: REMOVE,\n observableKind: \"object\",\n object: this.proxy_ || this.target_,\n debugObjectName: this.name_,\n oldValue: value,\n name: key\n }\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n } finally {\n endBatch()\n }\n return true\n }\n\n /**\n * Observes this object. Triggers for the events 'add', 'update' and 'delete'.\n * See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe\n * for callback details\n */\n observe_(callback: (changes: IObjectDidChange) => void, fireImmediately?: boolean): Lambda {\n if (__DEV__ && fireImmediately === true) {\n die(\"`observe` doesn't support the fire immediately property for observable objects.\")\n }\n return registerListener(this, callback)\n }\n\n intercept_(handler): Lambda {\n return registerInterceptor(this, handler)\n }\n\n notifyPropertyAddition_(key: PropertyKey, value: any) {\n const notify = hasListeners(this)\n const notifySpy = __DEV__ && isSpyEnabled()\n if (notify || notifySpy) {\n const change: IObjectDidChange | null =\n notify || notifySpy\n ? ({\n type: ADD,\n observableKind: \"object\",\n debugObjectName: this.name_,\n object: this.proxy_ || this.target_,\n name: key,\n newValue: value\n } as const)\n : null\n\n if (__DEV__ && notifySpy) {\n spyReportStart(change!)\n }\n if (notify) {\n notifyListeners(this, change)\n }\n if (__DEV__ && notifySpy) {\n spyReportEnd()\n }\n }\n\n this.pendingKeys_?.get(key)?.set(true)\n\n // Notify \"keys/entries/values\" observers\n this.keysAtom_.reportChanged()\n }\n\n ownKeys_(): ArrayLike<string | symbol> {\n this.keysAtom_.reportObserved()\n return ownKeys(this.target_)\n }\n\n keys_(): PropertyKey[] {\n // Returns enumerable && own, but unfortunately keysAtom will report on ANY key change.\n // There is no way to distinguish between Object.keys(object) and Reflect.ownKeys(object) - both are handled by ownKeys trap.\n // We can either over-report in Object.keys(object) or under-report in Reflect.ownKeys(object)\n // We choose to over-report in Object.keys(object), because:\n // - typically it's used with simple data objects\n // - when symbolic/non-enumerable keys are relevant Reflect.ownKeys works as expected\n this.keysAtom_.reportObserved()\n return Object.keys(this.target_)\n }\n}\n\nexport interface IIsObservableObject {\n $mobx: ObservableObjectAdministration\n}\n\nexport function asObservableObject(\n target: any,\n options?: CreateObservableOptions\n): IIsObservableObject {\n if (__DEV__ && options && isObservableObject(target)) {\n die(`Options can't be provided for already observable objects.`)\n }\n\n if (hasProp(target, $mobx)) {\n if (__DEV__ && !(getAdministration(target) instanceof ObservableObjectAdministration)) {\n die(\n `Cannot convert '${getDebugName(target)}' into observable object:` +\n `\\nThe target is already observable of different type.` +\n `\\nExtending builtins is not supported.`\n )\n }\n return target\n }\n\n if (__DEV__ && !Object.isExtensible(target)) {\n die(\"Cannot make the designated object observable; it is not extensible\")\n }\n\n const name =\n options?.name ??\n (__DEV__\n ? `${\n isPlainObject(target) ? \"ObservableObject\" : target.constructor.name\n }@${getNextId()}`\n : \"ObservableObject\")\n\n const adm = new ObservableObjectAdministration(\n target,\n new Map(),\n String(name),\n getAnnotationFromOptions(options)\n )\n\n addHiddenProp(target, $mobx, adm)\n\n return target\n}\n\nconst isObservableObjectAdministration = createInstanceofPredicate(\n \"ObservableObjectAdministration\",\n ObservableObjectAdministration\n)\n\nfunction getCachedObservablePropDescriptor(key) {\n return (\n descriptorCache[key] ||\n (descriptorCache[key] = {\n get() {\n return this[$mobx].getObservablePropValue_(key)\n },\n set(value) {\n return this[$mobx].setObservablePropValue_(key, value)\n }\n })\n )\n}\n\nexport function isObservableObject(thing: any): boolean {\n if (isObject(thing)) {\n return isObservableObjectAdministration((thing as any)[$mobx])\n }\n return false\n}\n\nexport function recordAnnotationApplied(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n if (__DEV__) {\n adm.appliedAnnotations_![key] = annotation\n }\n // Remove applied decorator annotation so we don't try to apply it again in subclass constructor\n delete adm.target_[storedAnnotationsSymbol]?.[key]\n}\n\nfunction assertAnnotable(\n adm: ObservableObjectAdministration,\n annotation: Annotation,\n key: PropertyKey\n) {\n // Valid annotation\n if (__DEV__ && !isAnnotation(annotation)) {\n die(`Cannot annotate '${adm.name_}.${key.toString()}': Invalid annotation.`)\n }\n\n /*\n // Configurable, not sealed, not frozen\n // Possibly not needed, just a little better error then the one thrown by engine.\n // Cases where this would be useful the most (subclass field initializer) are not interceptable by this.\n if (__DEV__) {\n const configurable = getDescriptor(adm.target_, key)?.configurable\n const frozen = Object.isFrozen(adm.target_)\n const sealed = Object.isSealed(adm.target_)\n if (!configurable || frozen || sealed) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const requestedAnnotationType = annotation.annotationType_\n let error = `Cannot apply '${requestedAnnotationType}' to '${fieldName}':`\n if (frozen) {\n error += `\\nObject is frozen.`\n }\n if (sealed) {\n error += `\\nObject is sealed.`\n }\n if (!configurable) {\n error += `\\nproperty is not configurable.`\n // Mention only if caused by us to avoid confusion\n if (hasProp(adm.appliedAnnotations!, key)) {\n error += `\\nTo prevent accidental re-definition of a field by a subclass, `\n error += `all annotated fields of non-plain objects (classes) are not configurable.`\n }\n }\n die(error)\n }\n }\n */\n\n // Not annotated\n if (__DEV__ && !isOverride(annotation) && hasProp(adm.appliedAnnotations_!, key)) {\n const fieldName = `${adm.name_}.${key.toString()}`\n const currentAnnotationType = adm.appliedAnnotations_![key].annotationType_\n const requestedAnnotationType = annotation.annotationType_\n die(\n `Cannot apply '${requestedAnnotationType}' to '${fieldName}':` +\n `\\nThe field is already annotated with '${currentAnnotationType}'.` +\n `\\nRe-annotating fields is not allowed.` +\n `\\nUse 'override' annotation for methods overridden by subclass.`\n )\n }\n}\n","import {\n getNextId,\n addHiddenFinalProp,\n allowStateChangesStart,\n allowStateChangesEnd,\n makeIterable,\n addHiddenProp,\n ObservableArrayAdministration,\n $mobx,\n arrayExtensions,\n IEnhancer,\n isObservableArray,\n IObservableArray,\n defineProperty\n} from \"../internal\"\n\n// Bug in safari 9.* (or iOS 9 safari mobile). See #364\nconst ENTRY_0 = createArrayEntryDescriptor(0)\n\nconst safariPrototypeSetterInheritanceBug = (() => {\n let v = false\n const p = {}\n Object.defineProperty(p, \"0\", {\n set: () => {\n v = true\n }\n })\n Object.create(p)[\"0\"] = 1\n return v === false\n})()\n\n/**\n * This array buffer contains two lists of properties, so that all arrays\n * can recycle their property definitions, which significantly improves performance of creating\n * properties on the fly.\n */\nlet OBSERVABLE_ARRAY_BUFFER_SIZE = 0\n\n// Typescript workaround to make sure ObservableArray extends Array\nclass StubArray {}\nfunction inherit(ctor, proto) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(ctor.prototype, proto)\n } else if (ctor.prototype.__proto__ !== undefined) {\n ctor.prototype.__proto__ = proto\n } else {\n ctor.prototype = proto\n }\n}\ninherit(StubArray, Array.prototype)\n\n// Weex proto freeze protection was here,\n// but it is unclear why the hack is need as MobX never changed the prototype\n// anyway, so removed it in V6\n\nclass LegacyObservableArray<T> extends StubArray {\n constructor(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name = __DEV__ ? \"ObservableArray@\" + getNextId() : \"ObservableArray\",\n owned = false\n ) {\n super()\n\n const adm = new ObservableArrayAdministration(name, enhancer, owned, true)\n adm.proxy_ = this as any\n addHiddenFinalProp(this, $mobx, adm)\n\n if (initialValues && initialValues.length) {\n const prev = allowStateChangesStart(true)\n // @ts-ignore\n this.spliceWithArray(0, 0, initialValues)\n allowStateChangesEnd(prev)\n }\n\n if (safariPrototypeSetterInheritanceBug) {\n // Seems that Safari won't use numeric prototype setter untill any * numeric property is\n // defined on the instance. After that it works fine, even if this property is deleted.\n Object.defineProperty(this, \"0\", ENTRY_0)\n }\n }\n\n concat(...arrays: T[][]): T[] {\n ;(this[$mobx] as ObservableArrayAdministration).atom_.reportObserved()\n return Array.prototype.concat.apply(\n (this as any).slice(),\n //@ts-ignore\n arrays.map(a => (isObservableArray(a) ? a.slice() : a))\n )\n }\n\n get length(): number {\n return (this[$mobx] as ObservableArrayAdministration).getArrayLength_()\n }\n\n set length(newLength: number) {\n ;(this[$mobx] as ObservableArrayAdministration).setArrayLength_(newLength)\n }\n\n get [Symbol.toStringTag]() {\n return \"Array\"\n }\n\n [Symbol.iterator]() {\n const self = this\n let nextIndex = 0\n return makeIterable({\n next() {\n return nextIndex < self.length\n ? { value: self[nextIndex++], done: false }\n : { done: true, value: undefined }\n }\n })\n }\n}\n\nObject.entries(arrayExtensions).forEach(([prop, fn]) => {\n if (prop !== \"concat\") {\n addHiddenProp(LegacyObservableArray.prototype, prop, fn)\n }\n})\n\nfunction createArrayEntryDescriptor(index: number) {\n return {\n enumerable: false,\n configurable: true,\n get: function () {\n return this[$mobx].get_(index)\n },\n set: function (value) {\n this[$mobx].set_(index, value)\n }\n }\n}\n\nfunction createArrayBufferItem(index: number) {\n defineProperty(LegacyObservableArray.prototype, \"\" + index, createArrayEntryDescriptor(index))\n}\n\nexport function reserveArrayBuffer(max: number) {\n if (max > OBSERVABLE_ARRAY_BUFFER_SIZE) {\n for (let index = OBSERVABLE_ARRAY_BUFFER_SIZE; index < max + 100; index++) {\n createArrayBufferItem(index)\n }\n OBSERVABLE_ARRAY_BUFFER_SIZE = max\n }\n}\n\nreserveArrayBuffer(1000)\n\nexport function createLegacyArray<T>(\n initialValues: T[] | undefined,\n enhancer: IEnhancer<T>,\n name?: string\n): IObservableArray<T> {\n return new LegacyObservableArray(initialValues, enhancer, name) as any\n}\n","import { isAction } from \"../api/action\"\nimport {\n $mobx,\n IDepTreeNode,\n isAtom,\n isComputedValue,\n isObservableArray,\n isObservableMap,\n isObservableObject,\n isReaction,\n isObservableSet,\n die,\n isFunction\n} from \"../internal\"\n\nexport function getAtom(thing: any, property?: PropertyKey): IDepTreeNode {\n if (typeof thing === \"object\" && thing !== null) {\n if (isObservableArray(thing)) {\n if (property !== undefined) {\n die(23)\n }\n return (thing as any)[$mobx].atom_\n }\n if (isObservableSet(thing)) {\n return thing.atom_\n }\n if (isObservableMap(thing)) {\n if (property === undefined) {\n return thing.keysAtom_\n }\n const observable = thing.data_.get(property) || thing.hasMap_.get(property)\n if (!observable) {\n die(25, property, getDebugName(thing))\n }\n return observable\n }\n if (property && !thing[$mobx]) {\n thing[property]\n } // See #1072\n if (isObservableObject(thing)) {\n if (!property) {\n return die(26)\n }\n const observable = (thing as any)[$mobx].values_.get(property)\n if (!observable) {\n die(27, property, getDebugName(thing))\n }\n return observable\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n } else if (isFunction(thing)) {\n if (isReaction(thing[$mobx])) {\n // disposer function\n return thing[$mobx]\n }\n }\n die(28)\n}\n\nexport function getAdministration(thing: any, property?: string) {\n if (!thing) {\n die(29)\n }\n if (property !== undefined) {\n return getAdministration(getAtom(thing, property))\n }\n if (isAtom(thing) || isComputedValue(thing) || isReaction(thing)) {\n return thing\n }\n if (isObservableMap(thing) || isObservableSet(thing)) {\n return thing\n }\n if (thing[$mobx]) {\n return thing[$mobx]\n }\n die(24, thing)\n}\n\nexport function getDebugName(thing: any, property?: string): string {\n let named\n if (property !== undefined) {\n named = getAtom(thing, property)\n } else if (isAction(thing)) {\n return thing.name\n } else if (isObservableObject(thing) || isObservableMap(thing) || isObservableSet(thing)) {\n named = getAdministration(thing)\n } else {\n // valid for arrays as well\n named = getAtom(thing)\n }\n return named.name_\n}\n","import {\n isES6Map,\n isObservableArray,\n isObservableMap,\n isES6Set,\n isObservableSet,\n hasProp,\n isFunction,\n objectPrototype\n} from \"../internal\"\n\ndeclare const Symbol\nconst toString = objectPrototype.toString\n\nexport function deepEqual(a: any, b: any, depth: number = -1): boolean {\n return eq(a, b, depth)\n}\n\n// Copied from https://github.com/jashkenas/underscore/blob/5c237a7c682fb68fd5378203f0bf22dce1624854/underscore.js#L1186-L1289\n// Internal recursive comparison function for `isEqual`.\nfunction eq(a: any, b: any, depth: number, aStack?: any[], bStack?: any[]) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](http://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) {\n return a !== 0 || 1 / a === 1 / b\n }\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) {\n return false\n }\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) {\n return b !== b\n }\n // Exhaust primitive checks\n const type = typeof a\n if (type !== \"function\" && type !== \"object\" && typeof b != \"object\") {\n return false\n }\n\n // Compare `[[Class]]` names.\n const className = toString.call(a)\n if (className !== toString.call(b)) {\n return false\n }\n switch (className) {\n // Strings, numbers, regular expressions, dates, and booleans are compared by value.\n case \"[object RegExp]\":\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case \"[object String]\":\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return \"\" + a === \"\" + b\n case \"[object Number]\":\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) {\n return +b !== +b\n }\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b\n case \"[object Date]\":\n case \"[object Boolean]\":\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b\n case \"[object Symbol]\":\n return (\n typeof Symbol !== \"undefined\" && Symbol.valueOf.call(a) === Symbol.valueOf.call(b)\n )\n case \"[object Map]\":\n case \"[object Set]\":\n // Maps and Sets are unwrapped to arrays of entry-pairs, adding an incidental level.\n // Hide this extra level by increasing the depth.\n if (depth >= 0) {\n depth++\n }\n break\n }\n // Unwrap any wrapped objects.\n a = unwrap(a)\n b = unwrap(b)\n\n const areArrays = className === \"[object Array]\"\n if (!areArrays) {\n if (typeof a != \"object\" || typeof b != \"object\") {\n return false\n }\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n const aCtor = a.constructor,\n bCtor = b.constructor\n if (\n aCtor !== bCtor &&\n !(\n isFunction(aCtor) &&\n aCtor instanceof aCtor &&\n isFunction(bCtor) &&\n bCtor instanceof bCtor\n ) &&\n \"constructor\" in a &&\n \"constructor\" in b\n ) {\n return false\n }\n }\n\n if (depth === 0) {\n return false\n } else if (depth < 0) {\n depth = -1\n }\n\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || []\n bStack = bStack || []\n let length = aStack.length\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) {\n return bStack[length] === b\n }\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a)\n bStack.push(b)\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length\n if (length !== b.length) {\n return false\n }\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], depth - 1, aStack, bStack)) {\n return false\n }\n }\n } else {\n // Deep compare objects.\n const keys = Object.keys(a)\n let key\n length = keys.length\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (Object.keys(b).length !== length) {\n return false\n }\n while (length--) {\n // Deep compare each member\n key = keys[length]\n if (!(hasProp(b, key) && eq(a[key], b[key], depth - 1, aStack, bStack))) {\n return false\n }\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop()\n bStack.pop()\n return true\n}\n\nfunction unwrap(a: any) {\n if (isObservableArray(a)) {\n return a.slice()\n }\n if (isES6Map(a) || isObservableMap(a)) {\n return Array.from(a.entries())\n }\n if (isES6Set(a) || isObservableSet(a)) {\n return Array.from(a.entries())\n }\n return a\n}\n","export function makeIterable<T>(iterator: Iterator<T>): IterableIterator<T> {\n iterator[Symbol.iterator] = getSelf\n return iterator as any\n}\n\nfunction getSelf() {\n return this\n}\n","/**\n * (c) Michel Weststrate 2015 - 2020\n * MIT Licensed\n *\n * Welcome to the mobx sources! To get a global overview of how MobX internally works,\n * this is a good place to start:\n * https://medium.com/@mweststrate/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254#.xvbh6qd74\n *\n * Source folders:\n * ===============\n *\n * - api/ Most of the public static methods exposed by the module can be found here.\n * - core/ Implementation of the MobX algorithm; atoms, derivations, reactions, dependency trees, optimizations. Cool stuff can be found here.\n * - types/ All the magic that is need to have observable objects, arrays and values is in this folder. Including the modifiers like `asFlat`.\n * - utils/ Utility stuff.\n *\n */\nimport { die } from \"./errors\"\nimport { getGlobal } from \"./utils/global\"\n;[\"Symbol\", \"Map\", \"Set\"].forEach(m => {\n let g = getGlobal()\n if (typeof g[m] === \"undefined\") {\n die(`MobX requires global '${m}' to be available or polyfilled`)\n }\n})\n\nimport { spy, getDebugName, $mobx } from \"./internal\"\n\nexport {\n IObservable,\n IDepTreeNode,\n Reaction,\n IReactionPublic,\n IReactionDisposer,\n untracked,\n IAtom,\n createAtom,\n spy,\n IComputedValue,\n IEqualsComparer,\n comparer,\n IEnhancer,\n IInterceptable,\n IInterceptor,\n IListenable,\n IObjectWillChange,\n IObjectDidChange,\n isObservableObject,\n IValueDidChange,\n IValueWillChange,\n IObservableValue,\n isObservableValue as isBoxedObservable,\n IObservableArray,\n IArrayWillChange,\n IArrayWillSplice,\n IArraySplice,\n IArrayUpdate,\n IArrayDidChange,\n isObservableArray,\n IKeyValueMap,\n ObservableMap,\n IMapEntries,\n IMapEntry,\n IMapWillChange,\n IMapDidChange,\n isObservableMap,\n IObservableMapInitialValues,\n ObservableSet,\n isObservableSet,\n ISetDidChange,\n ISetWillChange,\n IObservableSetInitialValues,\n transaction,\n observable,\n IObservableFactory,\n CreateObservableOptions,\n computed,\n IComputedFactory,\n isObservable,\n isObservableProp,\n isComputed,\n isComputedProp,\n extendObservable,\n observe,\n intercept,\n autorun,\n IAutorunOptions,\n reaction,\n IReactionOptions,\n when,\n IWhenOptions,\n action,\n isAction,\n runInAction,\n IActionFactory,\n keys,\n values,\n entries,\n set,\n remove,\n has,\n get,\n apiOwnKeys as ownKeys,\n apiDefineProperty as defineProperty,\n configure,\n onBecomeObserved,\n onBecomeUnobserved,\n flow,\n isFlow,\n flowResult,\n FlowCancellationError,\n isFlowCancellationError,\n toJS,\n trace,\n IObserverTree,\n IDependencyTree,\n getDependencyTree,\n getObserverTree,\n resetGlobalState as _resetGlobalState,\n getGlobalState as _getGlobalState,\n getDebugName,\n getAtom,\n getAdministration as _getAdministration,\n allowStateChanges as _allowStateChanges,\n runInAction as _allowStateChangesInsideComputed, // This has become the default behavior in Mobx 6\n Lambda,\n $mobx,\n isComputingDerivation as _isComputingDerivation,\n onReactionError,\n interceptReads as _interceptReads,\n IComputedValueOptions,\n IActionRunInfo,\n _startAction,\n _endAction,\n allowStateReadsStart as _allowStateReadsStart,\n allowStateReadsEnd as _allowStateReadsEnd,\n makeObservable,\n makeAutoObservable,\n autoAction as _autoAction,\n AnnotationsMap,\n AnnotationMapEntry,\n override\n} from \"./internal\"\n\n// Devtools support\ndeclare const __MOBX_DEVTOOLS_GLOBAL_HOOK__: { injectMobx: (any) => void }\nif (typeof __MOBX_DEVTOOLS_GLOBAL_HOOK__ === \"object\") {\n // See: https://github.com/andykog/mobx-devtools/\n __MOBX_DEVTOOLS_GLOBAL_HOOK__.injectMobx({\n spy,\n extras: {\n getDebugName\n },\n $mobx\n })\n}\n","import { makeAutoObservable } from 'mobx';\r\n\r\nclass MobileSelectedStore {\r\n currentlySelected: number = 1;\r\n fromProgressPage: boolean = false;\r\n\r\n constructor() {\r\n makeAutoObservable(this);\r\n // get the route from the url and set the currently selected\r\n const url = window.location.href.split('/').pop();\r\n if (url === 'routine') {\r\n this.currentlySelected = 0\r\n }\r\n else if (url === '') {\r\n this.currentlySelected = 1\r\n }\r\n else if (url === 'progress') {\r\n this.currentlySelected = 2\r\n }\r\n\r\n }\r\n\r\n setCurrentlySelected(newValue: number) {\r\n this.currentlySelected = newValue;\r\n }\r\n setFromProgressPage(newValue: boolean) {\r\n this.fromProgressPage = newValue;\r\n }\r\n}\r\n\r\nconst mobileSelectedStore = new MobileSelectedStore();\r\nexport default mobileSelectedStore;\r\n","import { makeObservable } from \"mobx\"\nimport { useState } from \"react\"\n\nif (!useState) {\n throw new Error(\"mobx-react-lite requires React with Hooks support\")\n}\nif (!makeObservable) {\n throw new Error(\"mobx-react-lite@3 requires mobx at least version 6 to be available\")\n}\n","import { configure } from \"mobx\"\n\nexport function defaultNoopBatch(callback: () => void) {\n callback()\n}\n\nexport function observerBatching(reactionScheduler: any) {\n if (!reactionScheduler) {\n reactionScheduler = defaultNoopBatch\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[MobX] Failed to get unstable_batched updates from react-dom / react-native\"\n )\n }\n }\n configure({ reactionScheduler })\n}\n\nexport const isObserverBatched = () => {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\"[MobX] Deprecated\")\n }\n\n return true\n}\n","import { getDependencyTree, Reaction } from \"mobx\"\n\nexport function printDebugValue(v: Reaction) {\n return getDependencyTree(v)\n}\n","export declare class FinalizationRegistryType<T> {\n constructor(finalize: (value: T) => void)\n register(target: object, value: T, token?: object): void\n unregister(token: object): void\n}\n\ndeclare const FinalizationRegistry: typeof FinalizationRegistryType | undefined\n\nexport const REGISTRY_FINALIZE_AFTER = 10_000\nexport const REGISTRY_SWEEP_INTERVAL = 10_000\n\nexport class TimerBasedFinalizationRegistry<T> implements FinalizationRegistryType<T> {\n private registrations: Map<unknown, { value: T; registeredAt: number }> = new Map()\n private sweepTimeout: ReturnType<typeof setTimeout> | undefined\n\n constructor(private readonly finalize: (value: T) => void) {}\n\n // Token is actually required with this impl\n register(target: object, value: T, token?: object) {\n this.registrations.set(token, {\n value,\n registeredAt: Date.now()\n })\n this.scheduleSweep()\n }\n\n unregister(token: unknown) {\n this.registrations.delete(token)\n }\n\n // Bound so it can be used directly as setTimeout callback.\n sweep = (maxAge = REGISTRY_FINALIZE_AFTER) => {\n // cancel timeout so we can force sweep anytime\n clearTimeout(this.sweepTimeout)\n this.sweepTimeout = undefined\n\n const now = Date.now()\n this.registrations.forEach((registration, token) => {\n if (now - registration.registeredAt >= maxAge) {\n this.finalize(registration.value)\n this.registrations.delete(token)\n }\n })\n\n if (this.registrations.size > 0) {\n this.scheduleSweep()\n }\n }\n\n // Bound so it can be exported directly as clearTimers test utility.\n finalizeAllImmediately = () => {\n this.sweep(0)\n }\n\n private scheduleSweep() {\n if (this.sweepTimeout === undefined) {\n this.sweepTimeout = setTimeout(this.sweep, REGISTRY_SWEEP_INTERVAL)\n }\n }\n}\n\nexport const UniversalFinalizationRegistry =\n typeof FinalizationRegistry !== \"undefined\"\n ? FinalizationRegistry\n : TimerBasedFinalizationRegistry\n","import { Reaction } from \"mobx\"\nimport { UniversalFinalizationRegistry } from \"./UniversalFinalizationRegistry\"\n\nexport const observerFinalizationRegistry = new UniversalFinalizationRegistry(\n (adm: { reaction: Reaction | null }) => {\n adm.reaction?.dispose()\n adm.reaction = null\n }\n)\n","let globalIsUsingStaticRendering = false\n\nexport function enableStaticRendering(enable: boolean) {\n globalIsUsingStaticRendering = enable\n}\n\nexport function isUsingStaticRendering(): boolean {\n return globalIsUsingStaticRendering\n}\n","import { Reaction } from \"mobx\"\nimport React from \"react\"\nimport { printDebugValue } from \"./utils/printDebugValue\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\nimport { isUsingStaticRendering } from \"./staticRendering\"\n\nfunction observerComponentNameFor(baseComponentName: string) {\n return `observer${baseComponentName}`\n}\n\ntype ObserverAdministration = {\n /** The Reaction created during first render, which may be leaked */\n reaction: Reaction | null\n\n /**\n * Whether the component has yet completed mounting (for us, whether\n * its useEffect has run)\n */\n mounted: boolean\n\n /**\n * Whether the observables that the component is tracking changed between\n * the first render and the first useEffect.\n */\n changedBeforeMount: boolean\n}\n\n/**\n * We use class to make it easier to detect in heap snapshots by name\n */\nclass ObjectToBeRetainedByReact {}\n\nfunction objectToBeRetainedByReactFactory() {\n return new ObjectToBeRetainedByReact()\n}\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (isUsingStaticRendering()) {\n return fn()\n }\n\n const [objectRetainedByReact] = React.useState(objectToBeRetainedByReactFactory)\n // Force update, see #2982\n const [, setState] = React.useState()\n const forceUpdate = () => setState([] as any)\n\n // StrictMode/ConcurrentMode/Suspense may mean that our component is\n // rendered and abandoned multiple times, so we need to track leaked\n // Reactions.\n const admRef = React.useRef<ObserverAdministration | null>(null)\n\n if (!admRef.current) {\n // First render\n admRef.current = {\n reaction: null,\n mounted: false,\n changedBeforeMount: false\n }\n }\n\n const adm = admRef.current!\n\n if (!adm.reaction) {\n // First render or component was not committed and reaction was disposed by registry\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // Observable has changed, meaning we want to re-render\n // BUT if we're a component that hasn't yet got to the useEffect()\n // stage, we might be a component that _started_ to render, but\n // got dropped, and we don't want to make state changes then.\n // (It triggers warnings in StrictMode, for a start.)\n if (adm.mounted) {\n // We have reached useEffect(), so we're mounted, and can trigger an update\n forceUpdate()\n } else {\n // We haven't yet reached useEffect(), so we'll need to trigger a re-render\n // when (and if) useEffect() arrives.\n adm.changedBeforeMount = true\n }\n })\n\n observerFinalizationRegistry.register(objectRetainedByReact, adm, adm)\n }\n\n React.useDebugValue(adm.reaction, printDebugValue)\n\n React.useEffect(() => {\n observerFinalizationRegistry.unregister(adm)\n\n adm.mounted = true\n\n if (adm.reaction) {\n if (adm.changedBeforeMount) {\n // Got a change before mount, force an update\n adm.changedBeforeMount = false\n forceUpdate()\n }\n } else {\n // The reaction we set up in our render has been disposed.\n // This can be due to bad timings of renderings, e.g. our\n // component was paused for a _very_ long time, and our\n // reaction got cleaned up\n\n // Re-create the reaction\n adm.reaction = new Reaction(observerComponentNameFor(baseComponentName), () => {\n // We've definitely already been mounted at this point\n forceUpdate()\n })\n forceUpdate()\n }\n\n return () => {\n adm.reaction!.dispose()\n adm.reaction = null\n adm.mounted = false\n adm.changedBeforeMount = false\n }\n }, [])\n\n // render the original component, but have the\n // reaction track the observables, so that rendering\n // can be invalidated (see above) once a dependency changes\n let rendering!: T\n let exception\n adm.reaction.track(() => {\n try {\n rendering = fn()\n } catch (e) {\n exception = e\n }\n })\n\n if (exception) {\n throw exception // re-throw any exceptions caught during rendering\n }\n\n return rendering\n}\n","import { forwardRef, memo } from \"react\"\n\nimport { isUsingStaticRendering } from \"./staticRendering\"\nimport { useObserver } from \"./useObserver\"\n\nlet warnObserverOptionsDeprecated = true\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof forwardRef === \"function\" && forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof memo === \"function\" && memo((props: any) => null)[\"$$typeof\"]\n\nexport interface IObserverOptions {\n readonly forwardRef?: boolean\n}\n\nexport function observer<P extends object, TRef = {}>(\n baseComponent: React.ForwardRefRenderFunction<TRef, P>,\n options: IObserverOptions & { forwardRef: true }\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object, TRef = {}>(\n baseComponent: React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n >\n): React.MemoExoticComponent<\n React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>\n>\n\nexport function observer<P extends object>(\n baseComponent: React.FunctionComponent<P>,\n options?: IObserverOptions\n): React.FunctionComponent<P>\n\nexport function observer<\n C extends React.FunctionComponent<any> | React.ForwardRefRenderFunction<any>,\n Options extends IObserverOptions\n>(\n baseComponent: C,\n options?: Options\n): Options extends { forwardRef: true }\n ? C extends React.ForwardRefRenderFunction<infer TRef, infer P>\n ? C &\n React.MemoExoticComponent<\n React.ForwardRefExoticComponent<\n React.PropsWithoutRef<P> & React.RefAttributes<TRef>\n >\n >\n : never /* forwardRef set for a non forwarding component */\n : C & { displayName: string }\n\n// n.b. base case is not used for actual typings or exported in the typing files\nexport function observer<P extends object, TRef = {}>(\n baseComponent:\n | React.ForwardRefRenderFunction<TRef, P>\n | React.FunctionComponent<P>\n | React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<TRef>>,\n // TODO remove in next major\n options?: IObserverOptions\n) {\n if (process.env.NODE_ENV !== \"production\" && warnObserverOptionsDeprecated && options) {\n warnObserverOptionsDeprecated = false\n console.warn(\n `[mobx-react-lite] \\`observer(fn, { forwardRef: true })\\` is deprecated, use \\`observer(React.forwardRef(fn))\\``\n )\n }\n\n if (ReactMemoSymbol && baseComponent[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\n `[mobx-react-lite] You are trying to use \\`observer\\` on a function component wrapped in either another \\`observer\\` or \\`React.memo\\`. The observer already applies 'React.memo' for you.`\n )\n }\n\n // The working of observer is explained step by step in this talk: https://www.youtube.com/watch?v=cPF4iBedoF0&feature=youtu.be&t=1307\n if (isUsingStaticRendering()) {\n return baseComponent\n }\n\n let useForwardRef = options?.forwardRef ?? false\n let render = baseComponent\n\n const baseComponentName = baseComponent.displayName || baseComponent.name\n\n // If already wrapped with forwardRef, unwrap,\n // so we can patch render and apply memo\n if (ReactForwardRefSymbol && baseComponent[\"$$typeof\"] === ReactForwardRefSymbol) {\n useForwardRef = true\n render = baseComponent[\"render\"]\n if (typeof render !== \"function\") {\n throw new Error(\n `[mobx-react-lite] \\`render\\` property of ForwardRef was not a function`\n )\n }\n }\n\n let observerComponent = (props: any, ref: React.Ref<TRef>) => {\n return useObserver(() => render(props, ref), baseComponentName)\n }\n\n // Don't set `displayName` for anonymous components,\n // so the `displayName` can be customized by user, see #3192.\n if (baseComponentName !== \"\") {\n ;(observerComponent as React.FunctionComponent).displayName = baseComponentName\n }\n\n // Support legacy context: `contextTypes` must be applied before `memo`\n if ((baseComponent as any).contextTypes) {\n ;(observerComponent as React.FunctionComponent).contextTypes = (\n baseComponent as any\n ).contextTypes\n }\n\n if (useForwardRef) {\n // `forwardRef` must be applied prior `memo`\n // `forwardRef(observer(cmp))` throws:\n // \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...))\"\n observerComponent = forwardRef(observerComponent)\n }\n\n // memo; we are not interested in deep updates\n // in props; we assume that if deep objects are changed,\n // this is in observables, which would have been tracked anyway\n observerComponent = memo(observerComponent)\n\n copyStaticProperties(baseComponent, observerComponent)\n\n if (\"production\" !== process.env.NODE_ENV) {\n Object.defineProperty(observerComponent, \"contextTypes\", {\n set() {\n throw new Error(\n `[mobx-react-lite] \\`${\n this.displayName || this.type?.displayName || \"Component\"\n }.contextTypes\\` must be set before applying \\`observer\\`.`\n )\n }\n })\n }\n\n return observerComponent\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList: any = {\n $$typeof: true,\n render: true,\n compare: true,\n type: true,\n // Don't redefine `displayName`,\n // it's defined as getter-setter pair on `memo` (see #3192).\n displayName: true\n}\n\nfunction copyStaticProperties(base: any, target: any) {\n Object.keys(base).forEach(key => {\n if (!hoistBlackList[key]) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n","import \"./utils/assertEnvironment\"\n\nimport { unstable_batchedUpdates as batch } from \"./utils/reactBatchedUpdates\"\nimport { observerBatching } from \"./utils/observerBatching\"\nimport { useDeprecated } from \"./utils/utils\"\nimport { useObserver as useObserverOriginal } from \"./useObserver\"\nimport { enableStaticRendering } from \"./staticRendering\"\nimport { observerFinalizationRegistry } from \"./utils/observerFinalizationRegistry\"\n\nobserverBatching(batch)\n\nexport { isUsingStaticRendering, enableStaticRendering } from \"./staticRendering\"\nexport { observer, IObserverOptions } from \"./observer\"\nexport { Observer } from \"./ObserverComponent\"\nexport { useLocalObservable } from \"./useLocalObservable\"\nexport { useLocalStore } from \"./useLocalStore\"\nexport { useAsObservableSource } from \"./useAsObservableSource\"\n\nexport const clearTimers = observerFinalizationRegistry[\"finalizeAllImmediately\"] ?? (() => {})\n\nexport function useObserver<T>(fn: () => T, baseComponentName: string = \"observed\"): T {\n if (\"production\" !== process.env.NODE_ENV) {\n useDeprecated(\n \"[mobx-react-lite] 'useObserver(fn)' is deprecated. Use `<Observer>{fn}</Observer>` instead, or wrap the entire component in `observer`.\"\n )\n }\n return useObserverOriginal(fn, baseComponentName)\n}\n\nexport { isObserverBatched, observerBatching } from \"./utils/observerBatching\"\n\nexport function useStaticRendering(enable: boolean) {\n if (\"production\" !== process.env.NODE_ENV) {\n console.warn(\n \"[mobx-react-lite] 'useStaticRendering' is deprecated, use 'enableStaticRendering' instead\"\n )\n }\n enableStaticRendering(enable)\n}\n","import { registerPlugin } from '@capacitor/core';\n\nimport type { FirebaseAuthenticationPlugin } from './definitions';\n\nconst FirebaseAuthentication = registerPlugin<FirebaseAuthenticationPlugin>(\n 'FirebaseAuthentication',\n {\n web: () => import('./web').then(m => new m.FirebaseAuthenticationWeb()),\n },\n);\n\nexport * from './definitions';\nexport { FirebaseAuthentication };\n","import React, { useEffect, useState } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport FitnessCenterIcon from '@mui/icons-material/FitnessCenter';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { Typography, AppBar, Tooltip, IconButton, Avatar, Menu, MenuItem } from '@mui/material';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport AccountCircle from '@mui/icons-material/AccountCircle';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { onAuthStateChanged, User } from 'firebase/auth';\r\nimport { auth } from '../../libs/firebase';\r\nimport Cookies from 'js-cookie';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { getPhotoUrl, removeAllPref } from '../../utils/mobileStorage';\r\nimport ArrowBackIcon from '@mui/icons-material/ArrowBack';\r\nimport mobileSelectedStore from '../../store/mobileSelectedStore';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { FirebaseAuthentication } from '@capacitor-firebase/authentication';\r\n\r\n\r\nconst Container = styled(AppBar)`\r\n height: ${Capacitor.getPlatform() === 'ios' ? '' : '60px'};\r\n background-color: #192633;\r\n border-bottom: 2px solid;\r\n border-color: #38444D;\r\n display: flex;\r\n overflow-y: hidden;\r\n overflow-x: hidden;\r\n \r\n`\r\nconst Wrapper = styled.div`\r\n height: ${Capacitor.getPlatform() === 'ios' ? '' : '60px'};\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n margin-top: env(safe-area-inset-top);\r\n`\r\n\r\nconst Center = styled.div`\r\n flex: 2.5;\r\n margin-left: 10px;\r\n display: flex; \r\n flex-direction: row; \r\n align-items: center;\r\n \r\n`\r\nconst Logo = styled(Typography)`\r\n font-weight: bold;\r\n color: white;\r\n padding-left: 4%;\r\n white-space: nowrap; \r\n :hover{\r\n text-decoration: underline;\r\n text-decoration-color: #2C3640;\r\n background-color: #2C3640;\r\n }\r\n`\r\nconst MobileLogo = styled(Typography)`\r\n font-weight: bold;\r\n color: white;\r\n padding-left: 4%;\r\n white-space: nowrap; \r\n`\r\n\r\nconst Right = styled.div`\r\n flex: 0.5;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n`\r\n\r\nconst MenuItems = styled.div` \r\n cursor: pointer;\r\n margin-right: ${isMobile ? '5px' : '20px'};\r\n`\r\nconst MobileTopBar = (props: any) => {\r\n const navigate = useNavigate()\r\n const [anchorElUser, setAnchorElUser] = useState<null | HTMLElement>(null);\r\n const [displayArrow, setDisplayArrow] = useState(false)\r\n const [photoUrl, setPhotoUrl] = useState(sessionStorage.getItem('photoUrl') || '')\r\n useEffect(() => {\r\n const getPhoto = async () => {\r\n if (!sessionStorage.getItem('photoUrl')) {\r\n await getPhotoUrl()\r\n setPhotoUrl(sessionStorage.getItem('photoUrl') || '')\r\n }\r\n }\r\n getPhoto()\r\n const url = window.location.href.split('/').pop();\r\n if (url === 'loggedroutine') {\r\n setDisplayArrow(true)\r\n }\r\n else if (url === '1' || url === '2' || url === '3' || url === '4' || url === '5' || url === '6' || url === '7') {\r\n setDisplayArrow(true)\r\n } else {\r\n setDisplayArrow(false)\r\n }\r\n\r\n }, [])\r\n\r\n const handleOpenUserMenu = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorElUser(event.currentTarget);\r\n };\r\n\r\n const handleCloseUserMenu = () => {\r\n setAnchorElUser(null);\r\n };\r\n\r\n const handleExitButton = () => {\r\n localStorage.removeItem('routineState')\r\n //check url\r\n const url = window.location.href.split('/').pop();\r\n if (mobileSelectedStore.fromProgressPage) {\r\n mobileSelectedStore.setCurrentlySelected(2)\r\n mobileSelectedStore.setFromProgressPage(false)\r\n }\r\n else if (url === 'loggedroutine') {\r\n mobileSelectedStore.setCurrentlySelected(1)\r\n }\r\n else if (url === '1' || url === '2' || url === '3' || url === '4' || url === '5' || url === '6' || url === '7') {\r\n mobileSelectedStore.setCurrentlySelected(0)\r\n }\r\n navigate(-1)\r\n }\r\n\r\n const handleLogout = async () => {\r\n if (Capacitor.isNativePlatform()) {\r\n await removeAllPref()\r\n sessionStorage.clear()\r\n localStorage.removeItem('routineState')\r\n mobileSelectedStore.setCurrentlySelected(1)\r\n await FirebaseAuthentication.signOut()\r\n }\r\n else {\r\n\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n //clear storage \r\n sessionStorage.clear()\r\n mobileSelectedStore.setCurrentlySelected(1)\r\n localStorage.removeItem('routineState')\r\n await auth.signOut()\r\n }\r\n navigate('/login')\r\n }\r\n return (\r\n <>\r\n <Container position='static'>\r\n <Wrapper>\r\n <Center>\r\n {displayArrow && <ArrowBackIcon onClick={handleExitButton} />}\r\n {\r\n isMobile\r\n ? <MobileLogo variant={'h5'}>{props.title}</MobileLogo>\r\n : <Logo variant={'h5'}>{props.title}</Logo>\r\n }\r\n </Center>\r\n <Right>\r\n <MenuItems>\r\n <Tooltip title=\"Open settings\">\r\n <IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>\r\n {photoUrl ?\r\n <Avatar src={photoUrl} imgProps={{ referrerPolicy: \"no-referrer\" }} sx={{ width: isMobile ? '30px' : '40px', height: isMobile ? '30px' : '40px' }} />\r\n : <AccountCircle sx={{ color: 'white' }} />}\r\n </IconButton>\r\n </Tooltip>\r\n <Menu\r\n sx={{ mt: '45px' }}\r\n id=\"menu-appbar\"\r\n anchorEl={anchorElUser}\r\n anchorOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n keepMounted\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n open={Boolean(anchorElUser)}\r\n onClose={handleCloseUserMenu}\r\n >\r\n <MenuItem onClick={handleLogout}>\r\n <Typography textAlign=\"center\">Logout</Typography>\r\n </MenuItem>\r\n </Menu>\r\n </MenuItems>\r\n </Right>\r\n </Wrapper>\r\n </Container >\r\n </>\r\n )\r\n}\r\n\r\nexport default observer(MobileTopBar)","import React, { useEffect, useState } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport FitnessCenterIcon from '@mui/icons-material/FitnessCenter';\r\nimport { Link, useNavigate } from 'react-router-dom';\r\nimport { Typography, AppBar, Tooltip, IconButton, Avatar, Menu, MenuItem } from '@mui/material';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport AccountCircle from '@mui/icons-material/AccountCircle';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { onAuthStateChanged, User } from 'firebase/auth';\r\nimport { auth } from '../libs/firebase';\r\nimport Cookies from 'js-cookie';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { getPhotoUrl, removeAllPref } from '../utils/mobileStorage';\r\nimport { Preferences } from '@capacitor/preferences';\r\nimport MobileTopBar from './Mobile/MobileTopBar';\r\n\r\nconst Container = styled(AppBar)`\r\n height: 60px;\r\n background-color: #192633;\r\n border-bottom: 2px solid;\r\n border-color: #38444D;\r\n display: flex;\r\n overflow-y: hidden;\r\n overflow-x: hidden;\r\n`\r\nconst Wrapper = styled.div`\r\n height: 60px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n`\r\n\r\nconst Left = styled.div`\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n`\r\nconst RoutineText = styled(Typography)`\r\n cursor: pointer;\r\n color:white;\r\n padding-left: 5px;\r\n`\r\nconst WeightIconContainer = styled.div`\r\n display: flex;\r\n margin-left: 20px;\r\n :hover{\r\n text-decoration: underline;\r\n text-decoration-color: #2C3640;\r\n background-color: #2C3640;\r\n }\r\n`\r\n\r\nconst SearchIconContainer = styled.div`\r\n display: flex;\r\n margin-right: 20px;\r\n :hover{\r\n text-decoration: underline;\r\n text-decoration-color: #2C3640;\r\n background-color: #2C3640;\r\n }\r\n`\r\n\r\nconst Center = styled.div`\r\n flex: 1;\r\n text-align: center;\r\n`\r\nconst Logo = styled(Typography)`\r\n font-weight: bold;\r\n color: white;\r\n padding-left: 2%;\r\n :hover{\r\n text-decoration: underline;\r\n text-decoration-color: #2C3640;\r\n background-color: #2C3640;\r\n }\r\n`\r\nconst Right = styled.div`\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n`\r\n\r\nconst MenuItems = styled.div` \r\n cursor: pointer;\r\n margin-right: 20px;\r\n`\r\nconst Navbar = (props: any) => {\r\n const navigate = useNavigate()\r\n const [anchorElUser, setAnchorElUser] = useState<null | HTMLElement>(null);\r\n\r\n const handleOpenUserMenu = (event: React.MouseEvent<HTMLElement>) => {\r\n setAnchorElUser(event.currentTarget);\r\n };\r\n\r\n const handleCloseUserMenu = () => {\r\n setAnchorElUser(null);\r\n };\r\n\r\n const handleLogout = async () => {\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n //clear storage \r\n sessionStorage.clear()\r\n await auth.signOut()\r\n navigate('/login')\r\n }\r\n return (\r\n <>\r\n {\r\n isMobile ?\r\n <>\r\n <MobileTopBar title={props.title} />\r\n </>\r\n :\r\n <>\r\n <Container position='static'>\r\n <Wrapper>\r\n <Left>\r\n <WeightIconContainer>\r\n <Link to=\"/routine\" style={{ textDecoration: 'none', alignItems: 'center', display: 'flex' }}>\r\n <div className=\"d-none d-md-block\">\r\n <FitnessCenterIcon color=\"primary\" sx={{ fontSize: 25, marginTop: '3px' }} />\r\n </div>\r\n <RoutineText variant={'h6'}>Routine</RoutineText>\r\n </Link>\r\n </WeightIconContainer>\r\n </Left>\r\n <Center>\r\n <Link to=\"/\">\r\n <Logo variant={'h4'}>Swole</Logo>\r\n </Link>\r\n </Center>\r\n <Right>\r\n <SearchIconContainer>\r\n <Link to='/progress' style={{ textDecoration: 'none', alignItems: 'center', display: 'flex' }}>\r\n {\r\n <>\r\n <div className=\"d-none d-md-block\">\r\n <SearchIcon sx={{ fontSize: 25, marginTop: '5px' }} />\r\n </div>\r\n <RoutineText variant='h6'>Progress</RoutineText>\r\n </>\r\n }\r\n </Link>\r\n </SearchIconContainer>\r\n <MenuItems>\r\n <Tooltip title=\"Open settings\">\r\n <IconButton onClick={handleOpenUserMenu} sx={{ p: 0 }}>\r\n {Cookies.get('photoUrl') ? <Avatar src={Cookies.get('photoUrl')} imgProps={{ referrerPolicy: \"no-referrer\" }} sx={{ width: '40px', height: '40px' }} /> : <AccountCircle sx={{ color: 'white' }} />}\r\n </IconButton>\r\n </Tooltip>\r\n <Menu\r\n sx={{ mt: '45px' }}\r\n id=\"menu-appbar\"\r\n anchorEl={anchorElUser}\r\n anchorOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n keepMounted\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n open={Boolean(anchorElUser)}\r\n onClose={handleCloseUserMenu}\r\n >\r\n <MenuItem onClick={handleLogout}>\r\n <Typography textAlign=\"center\">Logout</Typography>\r\n </MenuItem>\r\n {/* <MenuItem onClick={handleCloseUserMenu}>\r\n <Typography textAlign=\"center\">{user?.name ? user?.name : 'User'}</Typography>\r\n </MenuItem> */}\r\n </Menu>\r\n </MenuItems>\r\n </Right>\r\n </Wrapper>\r\n </Container>\r\n </>\r\n }\r\n </>\r\n\r\n )\r\n}\r\n\r\nexport default Navbar","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object<any, any>} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array<boolean>}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array<any>} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object<any, any>} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object<string, any>} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array<String|Number>} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object<string, any>} params - The parameters to be converted to a FormData object.\n * @param {Object<string, any>} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array<any>} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object<string, any> | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"<scheme>://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData)) {\n if (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv) {\n requestHeaders.setContentType(false); // Let the browser set it\n } else {\n requestHeaders.setContentType('multipart/form-data;', false); // mobile/desktop app frameworks\n }\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.4.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import { Capacitor } from '@capacitor/core';\r\nimport { Config } from './types';\r\n\r\nconst config: Config = {\r\n urls: [/localhost:\\d+/],\r\n backend: {\r\n url: (Capacitor.isNativePlatform() && Capacitor.getPlatform() === 'android') ? 'http://10.0.2.2:8000/v1/' : 'http://localhost:8000/v1/',\r\n //url: 'http://ec2-3-82-60-24.compute-1.amazonaws.com:8000/v1/',\r\n },\r\n logout: {\r\n url: 'http://localhost:3000/login',\r\n },\r\n cookieSecure: false,\r\n};\r\n\r\nexport default config;\r\n","import localConfig from './local';\r\nimport prodConfig from './production';\r\n\r\ntype Environment = 'development' | 'production';\r\n\r\nconst configs = {\r\n development: localConfig,\r\n production: prodConfig,\r\n};\r\n\r\nconst env = process.env.REACT_APP_NODE_ENV;\r\nexport default env ? configs[env as Environment] : localConfig;\r\n","import { Config } from './types';\r\n\r\nconst config: Config = {\r\n urls: [/localhost:\\d+/],\r\n backend: {\r\n url: 'https://api.letsgetswole.com/v1/',\r\n },\r\n logout: {\r\n url: 'https://www.letsgetswole.com/login',\r\n },\r\n cookieSecure: true,\r\n};\r\n\r\nexport default config;\r\n","import { User } from \"firebase/auth\";\r\nimport { auth } from \"../libs/firebase\";\r\nimport { FirebaseAuthentication } from '@capacitor-firebase/authentication'\r\nimport { Capacitor } from \"@capacitor/core\";\r\n\r\nconst waitForAuthInit = async () => {\r\n let unsubscribe;\r\n await new Promise<void>((resolve) => {\r\n unsubscribe = auth.onAuthStateChanged((_) => resolve());\r\n });\r\n (await unsubscribe!)();\r\n}\r\n\r\nconst getCurrentUser = async (): Promise<any> => {\r\n try {\r\n if (Capacitor.isNativePlatform()) {\r\n return await FirebaseAuthentication.getCurrentUser()\r\n } else {\r\n await waitForAuthInit()\r\n return await auth.currentUser\r\n }\r\n } catch (err: any) {\r\n return null\r\n }\r\n}\r\n\r\n\r\nexport default getCurrentUser","import Cookies from \"js-cookie\";\r\nimport { auth } from \"../libs/firebase\";\r\nimport config from \"../config\";\r\nimport getCurrentUser from \"./GetCurrentUser\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\nimport { FirebaseAuthentication } from \"@capacitor-firebase/authentication\";\r\nimport { removeAllPref } from \"./mobileStorage\";\r\nimport mobileSelectedStore from \"../store/mobileSelectedStore\";\r\nimport { useNavigate } from \"react-router-dom\";\r\n\r\nconst ErrorConfig = async (error: any) => {\r\n const navigate = useNavigate()\r\n if (error.response && error.response.status === 401) {\r\n Cookies.remove('jwt');\r\n Cookies.remove('userId');\r\n try {\r\n const user = await getCurrentUser()\r\n let token: string\r\n if (Capacitor.isNativePlatform()) {\r\n const result = await FirebaseAuthentication.getIdToken()\r\n token = result?.token\r\n } else {\r\n token = await user?.getIdToken();\r\n }\r\n if (token && auth.currentUser) {\r\n Cookies.set('jwt', token, { expires: 30, secure: config.cookieSecure });\r\n Cookies.set('userId', auth.currentUser.uid, { expires: 30, secure: config.cookieSecure });\r\n window.location.reload()\r\n }\r\n } catch (err) {\r\n // await auth.signOut();\r\n await removeAllPref()\r\n sessionStorage.clear()\r\n localStorage.removeItem('routineState')\r\n mobileSelectedStore.setCurrentlySelected(1)\r\n await FirebaseAuthentication.signOut()\r\n console.log(err)\r\n navigate('/login')\r\n }\r\n\r\n } else {\r\n // Handle other errors here\r\n console.error(error);\r\n\r\n }\r\n}\r\n\r\nexport default ErrorConfig;\r\n","import { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport config from '../config';\r\nimport getCurrentUser from \"../utils/GetCurrentUser\";\r\nimport Cookies from 'js-cookie';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { Preferences } from '@capacitor/preferences';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { FirebaseAuthentication } from '@capacitor-firebase/authentication';\r\nimport { getToken, getUserId } from '../utils/mobileStorage';\r\n/*\r\n in component: const { data, loading } = useGet<type expected from response>('/hello')\r\n*/\r\n\r\nexport async function checkCookies() {\r\n if (Capacitor.isNativePlatform()) {\r\n const user = await getCurrentUser()\r\n const userId = user?.user.uid\r\n const token = await FirebaseAuthentication.getIdToken({ forceRefresh: true })\r\n if (token.token && userId) {\r\n await Preferences.set({\r\n key: 'userId',\r\n value: userId,\r\n });\r\n await Preferences.set({\r\n key: 'jwt',\r\n value: token.token,\r\n });\r\n }\r\n }\r\n else if (Cookies.get('jwt') === undefined || Cookies.get('userId') === undefined) {\r\n const user = await getCurrentUser()\r\n const userId = user?.uid\r\n const token = await user?.getIdToken(true)\r\n if (token && userId) {\r\n Cookies.set('jwt', token, { expires: (1 / 24), secure: config.cookieSecure });\r\n Cookies.set('userId', userId, { expires: (1 / 24), secure: config.cookieSecure });\r\n }\r\n }\r\n}\r\n\r\n\r\nfunction useGet<T>(url: string) {\r\n const [loading, setLoading] = useState(true);\r\n const [reponseData, setReponseData] = useState<T>();\r\n\r\n const get = async () => {\r\n const res = await axios.get(config.backend.url + url);\r\n setReponseData(res.data as T);\r\n setLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n get();\r\n }, []);\r\n\r\n return {\r\n loading,\r\n reponseData,\r\n };\r\n}\r\n\r\nexport function UsePost<T>() {\r\n const [loading, setLoading] = useState(true);\r\n const [postData, setPostData] = useState<any>();\r\n\r\n const callPost = async (url: string, data: object) => {\r\n await checkCookies()\r\n\r\n const dataWithUserId = {\r\n ...data,\r\n userId: await getUserId()\r\n }\r\n try {\r\n const res = await axios.post(config.backend.url + url, dataWithUserId, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n setPostData(res.data.data);\r\n } catch (err) {\r\n console.log(err)\r\n }\r\n setLoading(false);\r\n };\r\n\r\n return {\r\n postLoading: loading,\r\n postData,\r\n callPost\r\n };\r\n}\r\n\r\nexport function UsePut<T>() {\r\n const [loading, setLoading] = useState(true);\r\n const [reponseData, setReponseData] = useState<any>();\r\n const callPut = async (url: string, data: object) => {\r\n await checkCookies()\r\n\r\n const dataWithUserId = {\r\n ...data,\r\n userId: await getUserId()\r\n }\r\n\r\n try {\r\n const res = await axios.put(config.backend.url + url, dataWithUserId, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n });\r\n if (res.data) {\r\n setReponseData(res.data);\r\n }\r\n\r\n } catch (err: any) {\r\n console.log(err)\r\n }\r\n setLoading(false);\r\n\r\n }\r\n\r\n return {\r\n putLoading: loading,\r\n putResponse: reponseData,\r\n callPut\r\n }\r\n}\r\n\r\nfunction useDelete<T>(url: string, data: object) {\r\n const [loading, setLoading] = useState(true);\r\n const [reponseData, setReponseData] = useState<T>();\r\n\r\n const callDelete = async () => {\r\n const res = await axios.post(config.backend.url + url, data);\r\n setReponseData(res.data as T);\r\n setLoading(false);\r\n };\r\n\r\n useEffect(() => {\r\n callDelete();\r\n }, []);\r\n\r\n return {\r\n loading,\r\n reponseData,\r\n };\r\n}\r\n","import axios from \"axios\";\r\nimport config from \"../config\";\r\nimport { makeAutoObservable, runInAction, toJS } from \"mobx\";\r\nimport type DailyRoutine from \"../types/DailyRoutine\";\r\nimport LoggedRoutine from \"../types/Logged/LoggedRoutine\";\r\nimport Cookies from \"js-cookie\";\r\nimport ErrorConfig from \"../utils/ErrorConfig\";\r\nimport { checkCookies } from \"../libs/api\";\r\nimport { getToken, getUserId } from \"../utils/mobileStorage\";\r\n\r\nclass LoggedRoutineStore {\r\n loggedRoutine: LoggedRoutine[] = [];\r\n constructor() {\r\n makeAutoObservable(this);\r\n //this.fetchRoutines();\r\n }\r\n\r\n async fetchRoutines() {\r\n try {\r\n await checkCookies()\r\n const todayDate = new Date();\r\n const data = {\r\n userId: await getUserId(),\r\n date: todayDate\r\n }\r\n const res = await axios.post(config.backend.url + 'loggedWorkout/search/date', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n });\r\n runInAction(() => {\r\n this.loggedRoutine = res.data?.data?.LoggedWorkouts;\r\n })\r\n }\r\n\r\n\r\n catch (e: any) {\r\n ErrorConfig(e);\r\n const errorMessage = e?.response?.data?.error?.message;\r\n console.log(errorMessage);\r\n }\r\n\r\n }\r\n}\r\n\r\nconst loggedRoutineStore = new LoggedRoutineStore();\r\nexport default loggedRoutineStore;","import axios from \"axios\";\r\nimport config from \"../config\";\r\nimport { makeAutoObservable, runInAction, toJS } from \"mobx\";\r\nimport type DailyRoutine from \"../types/DailyRoutine\";\r\nimport type WorkoutRoutine from \"../types/WorkoutRoutine\";\r\nimport Cookies from \"js-cookie\";\r\nimport ErrorConfig from \"../utils/ErrorConfig\";\r\nimport { checkCookies } from \"../libs/api\";\r\nimport { getToken, getUserId } from \"../utils/mobileStorage\";\r\n\r\nclass WorkoutRoutineStore {\r\n workoutRoutine: WorkoutRoutine[] = [];\r\n dailyRoutines: DailyRoutine[] = [];\r\n constructor() {\r\n makeAutoObservable(this);\r\n }\r\n\r\n async fetchRoutines() {\r\n try {\r\n await checkCookies()\r\n const fetchData = {\r\n userId: await getUserId()\r\n //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991'\r\n }\r\n const res = await axios.post(config.backend.url + 'workoutRoutine/get', fetchData, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n });\r\n runInAction(() => {\r\n this.workoutRoutine = res.data?.data?.result;\r\n this.dailyRoutines = res.data?.data?.result[0]?.workoutDay || [];\r\n\r\n // this.dailyRoutines = res.data?.data?.result[0].workoutDay;\r\n })\r\n }\r\n catch (e: any) {\r\n ErrorConfig(e);\r\n const errorMessage = e?.response?.data?.error?.message;\r\n console.log(errorMessage);\r\n }\r\n }\r\n\r\n getWorkoutRoutine() {\r\n return this.workoutRoutine;\r\n }\r\n getDailyRoutines() {\r\n return this.dailyRoutines;\r\n }\r\n}\r\n\r\n\r\nconst workoutRoutineStore = new WorkoutRoutineStore();\r\nexport default workoutRoutineStore;\r\n","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"disableShrink\", \"size\", \"style\", \"thickness\", \"value\", \"variant\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { keyframes, css } from '@mui/system';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getCircularProgressUtilityClass } from './circularProgressClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes(_t || (_t = _`\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`));\nconst circularDashKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n`));\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color,\n disableShrink\n } = ownerState;\n const slots = {\n root: ['root', variant, `color${capitalize(color)}`],\n svg: ['svg'],\n circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n };\n return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n name: 'MuiCircularProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n display: 'inline-block'\n}, ownerState.variant === 'determinate' && {\n transition: theme.transitions.create('transform')\n}, ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main\n}), ({\n ownerState\n}) => ownerState.variant === 'indeterminate' && css(_t3 || (_t3 = _`\n animation: ${0} 1.4s linear infinite;\n `), circularRotateKeyframe));\nconst CircularProgressSVG = styled('svg', {\n name: 'MuiCircularProgress',\n slot: 'Svg',\n overridesResolver: (props, styles) => styles.svg\n})({\n display: 'block' // Keeps the progress centered\n});\n\nconst CircularProgressCircle = styled('circle', {\n name: 'MuiCircularProgress',\n slot: 'Circle',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n stroke: 'currentColor'\n}, ownerState.variant === 'determinate' && {\n transition: theme.transitions.create('stroke-dashoffset')\n}, ownerState.variant === 'indeterminate' && {\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n}), ({\n ownerState\n}) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink && css(_t4 || (_t4 = _`\n animation: ${0} 1.4s ease-in-out infinite;\n `), circularDashKeyframe));\n\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCircularProgress'\n });\n const {\n className,\n color = 'primary',\n disableShrink = false,\n size = 40,\n style,\n thickness = 3.6,\n value = 0,\n variant = 'indeterminate'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n disableShrink,\n size,\n thickness,\n value,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const circleStyle = {};\n const rootStyle = {};\n const rootProps = {};\n if (variant === 'determinate') {\n const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n rootStyle.transform = 'rotate(-90deg)';\n }\n return /*#__PURE__*/_jsx(CircularProgressRoot, _extends({\n className: clsx(classes.root, className),\n style: _extends({\n width: size,\n height: size\n }, rootStyle, style),\n ownerState: ownerState,\n ref: ref,\n role: \"progressbar\"\n }, rootProps, other, {\n children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n className: classes.svg,\n ownerState: ownerState,\n viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n className: classes.circle,\n style: circleStyle,\n ownerState: ownerState,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n * @default false\n */\n disableShrink: chainPropTypes(PropTypes.bool, props => {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n return null;\n }),\n /**\n * The size of the component.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, e.g '3rem'.\n * @default 40\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The thickness of the circle.\n * @default 3.6\n */\n thickness: PropTypes.number,\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","// import { ViewState } from '@devexpress/dx-react-scheduler';\r\n// import {\r\n// Scheduler, WeekView, Appointments, ViewSwitcher,\r\n// Toolbar,\r\n// MonthView,\r\n// DateNavigator,\r\n// TodayButton,\r\n// Resources,\r\n// DayView,\r\n// } from '@devexpress/dx-react-scheduler-material-ui';\r\nimport { useEffect, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport loggedRoutineStore from '../../store/loggedRoutineStore';\r\nimport workoutRoutineStore from '../../store/workoutRoutineStore';\r\nimport { observer } from 'mobx-react-lite';\r\nimport { set, toJS } from 'mobx';\r\nimport LoggedRoutine from '../../types/Logged/LoggedRoutine';\r\nimport axios from 'axios';\r\nimport config from '../../config';\r\nimport { useAuth0 } from '@auth0/auth0-react';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { CircularProgress } from '@mui/material';\r\nimport Cookies from 'js-cookie';\r\nimport { checkCookies } from '../../libs/api';\r\nimport { deleteRoutineStatePref, getPhotoUrl, getToken, getUserId } from '../../utils/mobileStorage';\r\nimport Scheduler, { Resource } from 'devextreme-react/scheduler';\r\n// import 'devextreme/dist/css/dx.material.blue.light.css';\r\n// import 'devextreme/dist/css/dx.material.blue.light.compact.css';\r\nimport { ViewType } from 'devextreme/ui/scheduler';\r\n// import './calenderStyle.css'\r\nif (isMobile) {\r\n require('devextreme/dist/css/dx.material.blue.light.compact.css');\r\n require('./calenderStyle.css')\r\n} else {\r\n require('devextreme/dist/css/dx.material.blue.light.css');\r\n require('./calenderStyle.css')\r\n}\r\n\r\nconst resources = [{\r\n fieldName: 'type',\r\n title: 'Type',\r\n instances: [\r\n { id: 'dailyRoutine', text: 'DailyRoutine', color: ' #192633' },\r\n { id: 'loggedRoutine', text: 'LoggedRoutine', color: '#50C878' },\r\n { id: 'todayRoutine', text: 'TodayRoutine', color: '#FFB940' },\r\n { id: 'restDay', text: 'restDay', color: '#444444c0' },\r\n ],\r\n}];\r\n\r\n\r\nconst resourcesData = [\r\n {\r\n text: 'DailyRoutine',\r\n id: 1,\r\n color: '#192633',\r\n }, {\r\n text: 'LoggedRoutine',\r\n id: 2,\r\n color: '#50C878',\r\n }, {\r\n text: 'TodayRoutine',\r\n id: 3,\r\n color: '#FFB940',\r\n }, {\r\n text: 'restDay',\r\n id: 4,\r\n color: '#444444c0',\r\n },\r\n];\r\n\r\n\r\nconst CalenderComponent = () => {\r\n // const { isLoading } = useAuth0()\r\n const [isDataloading, setIsDataLoading] = useState(true);\r\n const [calenderData, setCalenderData] = useState([])\r\n const [currentDate, setCurrentDate] = useState(new Date())\r\n const [currentViewName, setCurrentViewName] = useState(sessionStorage.getItem('viewState') || (isMobile ? 'day' : 'week'))\r\n const [currentDateFromHistory, setCurrentDateFromHistory] = useState(sessionStorage.getItem('currentDate') || currentDate)\r\n\r\n const [dailyRoutinesFetched, setDailyRoutinesFetched] = useState(false)\r\n\r\n const navigate = useNavigate();\r\n const moment = require('moment');\r\n const defaultDate = new Date()\r\n\r\n useEffect(() => {\r\n localStorage.removeItem('routineState')\r\n const fetch = async () => {\r\n setIsDataLoading(true)\r\n await Promise.all([\r\n deleteRoutineStatePref(),\r\n getPhotoUrl(),\r\n workoutRoutineStore.fetchRoutines(),\r\n loggedRoutineStore.fetchRoutines(),\r\n ])\r\n //setDailyRoutinesFetched(true)\r\n createSchedulerData(loggedRoutineStore.loggedRoutine)\r\n if (sessionStorage.getItem('currentDate') !== null) {\r\n handleDateClick(new Date(sessionStorage.getItem('currentDate')!))\r\n }\r\n setIsDataLoading(false)\r\n }\r\n fetch()\r\n }, [])\r\n // }, [dailyRoutinesFetched])\r\n\r\n // const handleAppointmentClick = (data: any) => {\r\n // navigate(`/loggedroutine`, { state: data });\r\n // }\r\n\r\n const createSchedulerData = (loggedRoutines: LoggedRoutine[]) => {\r\n const schedulerData: any = [];\r\n const excludeDate: any = [];\r\n const dayOfWeekArray: string[] = []\r\n setIsDataLoading(true)\r\n for (const workout of loggedRoutines) {\r\n //get date and set its time to match calender ticker\r\n const startDate = moment(workout.futureDate).hour(9).minute(0).second(0).millisecond(0);\r\n const endDate = moment(startDate).hour(20).minute(0).second(0).millisecond(0);\r\n\r\n // const startDate = moment(workout.futureDate).startOf('day');\r\n // const endDate = moment(startDate).endOf('day');\r\n\r\n const startDateISO = startDate.format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n const endDateISO = endDate.format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n\r\n const schedulerItem = {\r\n startDate: startDateISO,\r\n endDate: endDateISO,\r\n allDay: false,\r\n // title: workout.title,\r\n text: workout.title,\r\n routineState: toJS(workout),\r\n // type: startDate.isSame(moment(), 'day') ? 'todayRoutine' : 'loggedRoutine'\r\n typeId: startDate.isSame(moment(), 'day') ? [3] : [2]\r\n };\r\n excludeDate.push(startDate)\r\n schedulerData.push(schedulerItem);\r\n }\r\n for (const workout of workoutRoutineStore.dailyRoutines) {\r\n //ignore null days of week\r\n if (workout.dayOfWeek === null) continue\r\n dayOfWeekArray.push(workout.dayOfWeek)\r\n //get day of week and get its next occurance and set its time to match ticker\r\n const startDate = moment().day(workout.dayOfWeek).hour(9).minute(0).second(0).millisecond(0);\r\n const endDate = moment(startDate).hour(20).minute(0).second(0).millisecond(0);\r\n\r\n //check if startDate and endDate are before current date if they are add 7 to them\r\n if (startDate.isBefore(moment(), 'day')) {\r\n startDate.add(7, 'days');\r\n endDate.add(7, 'days');\r\n }\r\n\r\n let startDateISO = startDate.format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n let endDateISO = endDate.format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n //check if startDate is today and if it is not in excludeDate array make a single instance and make its type to todayRoutine\r\n if (startDate.isSame(moment(), 'day') && !excludeDate.some((date: any) => startDate.isSame(date, 'day'))) {\r\n const newSchedulerItem = {\r\n startDate: startDateISO,\r\n endDate: endDateISO,\r\n allDay: false,\r\n // title: workout.title,\r\n text: workout.title,\r\n recurrenceException: excludeDate.map((date: any) => moment.utc(date).format(\"YYYYMMDDTHHmmss[Z]\")).join(', '),\r\n routineState: toJS(workout),\r\n // type: 'todayRoutine'\r\n typeId: [3]\r\n }\r\n excludeDate.push(startDateISO)\r\n schedulerData.push(newSchedulerItem);\r\n startDateISO = startDate.add(7, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n endDateISO = endDate.add(7, 'days').format('YYYY-MM-DDTHH:mm:ss.SSSZ');;\r\n }\r\n //add the dailyRoutine to the schedulerData\r\n const schedulerItem = {\r\n startDate: startDateISO,\r\n endDate: endDateISO,\r\n allDay: false,\r\n // title: workout.title,\r\n text: workout.title,\r\n recurrenceRule: `FREQ=WEEKLY;BYDAY=${workout.dayOfWeek.substring(0, 2)}`,\r\n recurrenceException: excludeDate.map((date: any) => moment.utc(date).format(\"YYYYMMDDTHHmmss[Z]\")).join(', '),\r\n routineState: toJS(workout),\r\n // type: 'dailyRoutine'\r\n typeId: [1]\r\n };\r\n schedulerData.push(schedulerItem);\r\n\r\n }\r\n //Create the rest days by checking if the day of week is not in the dayOfWeekArray\r\n const allDaysOfWeek = ['MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY', 'SUNDAY'];\r\n const restDays = allDaysOfWeek.filter(day => !dayOfWeekArray.includes(day));\r\n for (const restDay of restDays) {\r\n //get day of week and get its next occurance and set its time to match ticker\r\n const startDate = moment().day(restDay).hour(9).minute(0).second(0).millisecond(0);\r\n const endDate = moment(startDate).hour(20).minute(0).second(0).millisecond(0);\r\n\r\n //check if startDate and endDate are before current date if they are add 7 to them\r\n if (startDate.isBefore(moment(), 'day')) {\r\n startDate.add(7, 'days');\r\n endDate.add(7, 'days');\r\n }\r\n\r\n const startDateISO = startDate.format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n const endDateISO = endDate.format('YYYY-MM-DDTHH:mm:ss.SSSZ');\r\n\r\n\r\n const schedulerItem = {\r\n startDate: startDateISO,\r\n endDate: endDateISO,\r\n allDay: false,\r\n // title: 'Rest Day',\r\n text: 'Rest Day',\r\n recurrenceRule: `FREQ=WEEKLY;BYDAY=${restDay.substring(0, 2)}`,\r\n recurrenceException: excludeDate.map((date: any) => moment.utc(date).format(\"YYYYMMDDTHHmmss[Z]\")).join(', '),\r\n // type: 'restDay'\r\n typeId: [4]\r\n };\r\n schedulerData.push(schedulerItem);\r\n\r\n }\r\n setCalenderData(schedulerData)\r\n setIsDataLoading(false)\r\n }\r\n\r\n const handleDateClick = async (date: Date) => {\r\n setCurrentDateFromHistory(date)\r\n sessionStorage.setItem('currentDate', date.toISOString())\r\n //check currentDate compared to date range, if the date doesnt have the same month of currentDate refetch loggedWorkouts\r\n if (date.getMonth() !== currentDate.getMonth()) {\r\n if (date.getMonth() === defaultDate.getMonth()) {\r\n createSchedulerData(loggedRoutineStore.loggedRoutine)\r\n setCurrentDate(date)\r\n }\r\n else {\r\n try {\r\n await checkCookies();\r\n const currentDate = new Date(date);\r\n //get current month and year\r\n const currentMonth = currentDate.getMonth();\r\n const currentYear = currentDate.getFullYear();\r\n\r\n // Adjust the year and month if current month is Jan\r\n const prevMonth = currentMonth === 0 ? 12 : currentMonth;\r\n const prevYear = currentMonth === 0 ? currentYear - 1 : currentYear;\r\n // Adjust the year and month if current month is Dec\r\n const nextMonth = currentMonth === 11 ? 0 : currentMonth + 1;\r\n const nextYear = currentMonth === 11 ? currentYear + 1 : currentYear;\r\n\r\n //create start and end date\r\n const startDate = new Date(`${prevYear}-${(prevMonth)}`);\r\n const endDate = new Date(nextYear, nextMonth + 1, 0);\r\n const data = {\r\n userId: await getUserId(),\r\n startDate: startDate,\r\n endDate: endDate\r\n }\r\n const res = await axios.post(config.backend.url + 'loggedWorkout/search/date', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n });\r\n const loggedRoutines = res.data?.data?.LoggedWorkouts\r\n createSchedulerData(loggedRoutines)\r\n }\r\n catch (e: any) {\r\n console.log(e)\r\n }\r\n setCurrentDate(date)\r\n }\r\n }\r\n }\r\n const styleTitle = (props: any) => {\r\n const isWeekView = props.type === 'vertical'\r\n const styled = isWeekView ? { fontSize: '22px', textAlign: 'center' } : { fontSize: '16px', textAlign: 'center' }\r\n // if (isWeekView) {\r\n // return (<Appointments.AppointmentContent\r\n // {...props}\r\n // style={styled}\r\n // >\r\n // <div className=\"VerticalAppointment-recurringContainer\">\r\n // <div className=\"VerticalAppointment-title\">{props.data.title}</div>\r\n // </div>\r\n // {props.data.rRule &&\r\n // < div className=\"VerticalAppointment-imageContainer\">\r\n // <svg className=\"MuiSvgIcon-root MuiSvgIcon-fontSizeMedium VerticalAppointment-image css-i4bv87-MuiSvgIcon-root\" focusable=\"false\" aria-hidden=\"true\" viewBox=\"0 0 24 24\" data-testid=\"RepeatIcon\">\r\n // <path d=\"M7 7h10v3l4-4-4-4v3H5v6h2V7zm10 10H7v-3l-4 4 4 4v-3h12v-6h-2v4z\"></path>\r\n // </svg>\r\n // </div>\r\n // }\r\n // </Appointments.AppointmentContent >)\r\n // }\r\n // return (<Appointments.AppointmentContent\r\n // {...props}\r\n // style={styled} />\r\n // )\r\n }\r\n\r\n // const handleViewChange = (viewName: any) => {\r\n // setCurrentViewName(viewName)\r\n // sessionStorage.setItem('viewState', viewName)\r\n // //clear out stored date if view is changed\r\n // setCurrentDateFromHistory(new Date())\r\n // sessionStorage.removeItem('currentDate')\r\n // handleDateClick(new Date())\r\n\r\n // }\r\n\r\n const handleAppointmentClick = (data: any) => {\r\n navigate(`/loggedroutine`, { state: data.targetedAppointmentData });\r\n }\r\n\r\n const EmptyTimeScale = () => null;\r\n\r\n const handleViewChange = (value: any) => {\r\n setCurrentViewName(value)\r\n sessionStorage.setItem('viewState', value)\r\n //clear out stored date if view is changed\r\n setCurrentDateFromHistory(new Date())\r\n sessionStorage.removeItem('currentDate')\r\n handleDateClick(new Date())\r\n\r\n };\r\n\r\n return (\r\n <>\r\n {isDataloading ?\r\n <div style={{ position: 'absolute', top: '15%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n // <div style={{ height: isMobile ? '100%' : '100vh', flexFlow: 'column', display: 'flex', paddingBottom: isMobile ? '56px' : '' }}>\r\n // <div style={{ height: currentViewName === 'Month' ? '695px' : '' }}>\r\n // {/* // <Scheduler data={calenderData} >\r\n // // <ViewState currentViewName={currentViewName} currentDate={currentDateFromHistory} onCurrentDateChange={handleDateClick} onCurrentViewNameChange={handleViewChange} />\r\n // // <DayView\r\n // // startDayHour={9} endDayHour={20}\r\n // // timeScaleLayoutComponent={EmptyTimeScale}\r\n // // timeScaleLabelComponent={EmptyTimeScale}\r\n // // timeScaleTickCellComponent={EmptyTimeScale}\r\n // // />\r\n\r\n // // <WeekView\r\n // // startDayHour={9} endDayHour={20}\r\n // // timeScaleLayoutComponent={EmptyTimeScale}\r\n // // timeScaleLabelComponent={EmptyTimeScale}\r\n // // timeScaleTickCellComponent={EmptyTimeScale}\r\n // // />\r\n // // <MonthView />\r\n // // <Toolbar />\r\n // // <ViewSwitcher />\r\n // // <DateNavigator />\r\n // // <TodayButton />\r\n // // <Appointments\r\n // // appointmentComponent={(props) => {\r\n // // return <Appointments.Appointment\r\n // // {...props}\r\n // // onClick={(e) => handleAppointmentClick(props.data)}\r\n // // />\r\n // // }}\r\n // // appointmentContentComponent={styleTitle}\r\n // // />\r\n // // <Resources data={resources} />\r\n // // </Scheduler> */}\r\n // </div>\r\n // <div style={{ backgroundColor: '#192633', flexGrow: '1' }} />\r\n // </div>\r\n <>\r\n <div style={{ height: isMobile ? '100%' : '100vh', flexFlow: 'column', display: 'flex', paddingBottom: isMobile ? '56px' : '' }}>\r\n <div style={{ height: currentViewName === 'Month' ? '695px' : '' }}>\r\n <Scheduler\r\n className={`base ${currentViewName === 'Week' ? '' : 'hide-time-panel'} ${currentViewName === 'month' ? 'month-view-title' : 'all-view-title'} ${(currentViewName === 'day' && isMobile) ? 'width-full-view' : ''} `}\r\n views={views as ViewType[]}\r\n currentView={currentViewName as ViewType}\r\n dataSource={calenderData}\r\n currentDate={currentDateFromHistory}\r\n // adaptivityEnabled={isMobile && true}\r\n onCurrentViewChange={handleViewChange}\r\n height={1000}\r\n startDayHour={9}\r\n showAllDayPanel={false}\r\n onAppointmentClick={handleAppointmentClick}\r\n editing={false}\r\n onCurrentDateChange={handleDateClick}\r\n >\r\n <Resource\r\n fieldExpr=\"typeId\"\r\n allowMultiple={true}\r\n dataSource={resourcesData}\r\n label=\"Type\"\r\n />\r\n </Scheduler>\r\n </div>\r\n <div style={{ backgroundColor: '#192633', flexGrow: '1' }} />\r\n </div>\r\n </>\r\n }\r\n </>\r\n\r\n );\r\n}\r\n\r\nconst views = ['day', isMobile ? {\r\n type: 'agenda',\r\n name: 'Week',\r\n} : 'week', 'month'];\r\n\r\n\r\nexport default observer(CalenderComponent);","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBottomNavigationActionUtilityClass(slot) {\n return generateUtilityClass('MuiBottomNavigationAction', slot);\n}\nconst bottomNavigationActionClasses = generateUtilityClasses('MuiBottomNavigationAction', ['root', 'iconOnly', 'selected', 'label']);\nexport default bottomNavigationActionClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"icon\", \"label\", \"onChange\", \"onClick\", \"selected\", \"showLabel\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport bottomNavigationActionClasses, { getBottomNavigationActionUtilityClass } from './bottomNavigationActionClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n showLabel,\n selected\n } = ownerState;\n const slots = {\n root: ['root', !showLabel && !selected && 'iconOnly', selected && 'selected'],\n label: ['label', !showLabel && !selected && 'iconOnly', selected && 'selected']\n };\n return composeClasses(slots, getBottomNavigationActionUtilityClass, classes);\n};\nconst BottomNavigationActionRoot = styled(ButtonBase, {\n name: 'MuiBottomNavigationAction',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, !ownerState.showLabel && !ownerState.selected && styles.iconOnly];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n transition: theme.transitions.create(['color', 'padding-top'], {\n duration: theme.transitions.duration.short\n }),\n padding: '0px 12px',\n minWidth: 80,\n maxWidth: 168,\n color: (theme.vars || theme).palette.text.secondary,\n flexDirection: 'column',\n flex: '1'\n}, !ownerState.showLabel && !ownerState.selected && {\n paddingTop: 14\n}, !ownerState.showLabel && !ownerState.selected && !ownerState.label && {\n paddingTop: 0\n}, {\n [`&.${bottomNavigationActionClasses.selected}`]: {\n color: (theme.vars || theme).palette.primary.main\n }\n}));\nconst BottomNavigationActionLabel = styled('span', {\n name: 'MuiBottomNavigationAction',\n slot: 'Label',\n overridesResolver: (props, styles) => styles.label\n})(({\n theme,\n ownerState\n}) => _extends({\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(12),\n opacity: 1,\n transition: 'font-size 0.2s, opacity 0.2s',\n transitionDelay: '0.1s'\n}, !ownerState.showLabel && !ownerState.selected && {\n opacity: 0,\n transitionDelay: '0s'\n}, {\n [`&.${bottomNavigationActionClasses.selected}`]: {\n fontSize: theme.typography.pxToRem(14)\n }\n}));\nconst BottomNavigationAction = /*#__PURE__*/React.forwardRef(function BottomNavigationAction(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiBottomNavigationAction'\n });\n const {\n className,\n icon,\n label,\n onChange,\n onClick,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n const handleChange = event => {\n if (onChange) {\n onChange(event, value);\n }\n if (onClick) {\n onClick(event);\n }\n };\n return /*#__PURE__*/_jsxs(BottomNavigationActionRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n focusRipple: true,\n onClick: handleChange,\n ownerState: ownerState\n }, other, {\n children: [icon, /*#__PURE__*/_jsx(BottomNavigationActionLabel, {\n className: classes.label,\n ownerState: ownerState,\n children: label\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? BottomNavigationAction.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display.\n */\n icon: PropTypes.node,\n /**\n * The label element.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * If `true`, the `BottomNavigationAction` will show its label.\n * By default, only the selected `BottomNavigationAction`\n * inside `BottomNavigation` will show its label.\n *\n * The prop defaults to the value (`false`) inherited from the parent BottomNavigation component.\n */\n showLabel: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * You can provide your own value. Otherwise, we fallback to the child position index.\n */\n value: PropTypes.any\n} : void 0;\nexport default BottomNavigationAction;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getBottomNavigationUtilityClass(slot) {\n return generateUtilityClass('MuiBottomNavigation', slot);\n}\nconst bottomNavigationClasses = generateUtilityClasses('MuiBottomNavigation', ['root']);\nexport default bottomNavigationClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"component\", \"onChange\", \"showLabels\", \"value\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getBottomNavigationUtilityClass } from './bottomNavigationClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getBottomNavigationUtilityClass, classes);\n};\nconst BottomNavigationRoot = styled('div', {\n name: 'MuiBottomNavigation',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n display: 'flex',\n justifyContent: 'center',\n height: 56,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst BottomNavigation = /*#__PURE__*/React.forwardRef(function BottomNavigation(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiBottomNavigation'\n });\n const {\n children,\n className,\n component = 'div',\n onChange,\n showLabels = false,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n showLabels\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(BottomNavigationRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: React.Children.map(children, (child, childIndex) => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The BottomNavigation component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n const childValue = child.props.value === undefined ? childIndex : child.props.value;\n return /*#__PURE__*/React.cloneElement(child, {\n selected: childValue === value,\n showLabel: child.props.showLabel !== undefined ? child.props.showLabel : showLabels,\n value: childValue,\n onChange\n });\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? BottomNavigation.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {any} value We default to the index of the child.\n */\n onChange: PropTypes.func,\n /**\n * If `true`, all `BottomNavigationAction`s will show their labels.\n * By default, only the selected `BottomNavigationAction` will show its label.\n * @default false\n */\n showLabels: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the currently selected `BottomNavigationAction`.\n */\n value: PropTypes.any\n} : void 0;\nexport default BottomNavigation;","import { useEffect, useState } from \"react\";\r\nimport { styled, BottomNavigation, BottomNavigationAction, Paper } from \"@mui/material\";\r\nimport CalendarMonthIcon from '@mui/icons-material/CalendarMonth';\r\nimport SearchIcon from '@mui/icons-material/Search';\r\nimport FitnessCenterIcon from '@mui/icons-material/FitnessCenter';\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport mobileSelectedStore from \"../../store/mobileSelectedStore\";\r\nimport { observer } from \"mobx-react-lite\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\n\r\nconst StyledNavAction = styled(BottomNavigationAction)({\r\n color: 'grey',\r\n \"&.Mui-focusVisible\": {\r\n outline: \"none\",\r\n },\r\n \"&:focus\": {\r\n outline: \"none\",\r\n },\r\n '&.Mui-selected': {\r\n color: 'white'\r\n }\r\n\r\n})\r\n\r\nconst MobileBottomBar = observer(() => {\r\n const navigate = useNavigate()\r\n\r\n const handleChange = (event: React.SyntheticEvent, newValue: number) => {\r\n mobileSelectedStore.setCurrentlySelected(newValue)\r\n if (newValue === 0) {\r\n navigate('/routine')\r\n } else if (newValue === 1) {\r\n navigate('/')\r\n } else if (newValue === 2) {\r\n navigate('/progress')\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <Paper sx={{ position: 'fixed', bottom: 0, left: 0, right: 0, zIndex: '9999', bgcolor: '#192633', borderRadius: 0 }} elevation={3}>\r\n <BottomNavigation showLabels value={mobileSelectedStore.currentlySelected} onChange={handleChange} sx={{ bgcolor: '#192633', position: 'relative', marginBottom: Capacitor.getPlatform() === 'ios' ? 'env(safe-area-inset-bottom)' : '10px' }}>\r\n <StyledNavAction icon={<FitnessCenterIcon fontSize=\"small\" />} label=\"Routine\" />\r\n <StyledNavAction icon={<CalendarMonthIcon fontSize=\"small\" />} label=\"Calendar\" />\r\n <StyledNavAction icon={<SearchIcon fontSize=\"small\" />} label=\"Progress\" />\r\n </BottomNavigation>\r\n </Paper >\r\n </>\r\n )\r\n})\r\n\r\nexport default MobileBottomBar","import React from 'react'\r\nimport Navbar from '../components/Navbar';\r\nimport CalenderComponent from '../components/calender/CalenderComponent';\r\nimport MobileBottomBar from '../components/Mobile/MobileBottomBar';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\nconst HomePage = (props: any) => {\r\n return (\r\n <>\r\n <Navbar title={'Swole'} />\r\n <CalenderComponent />\r\n {isMobile && <MobileBottomBar />}\r\n {/* {Capacitor.isNativePlatform() && <MobileBottomBar currentSelected={props.currentSelected} setCurrentSelected={props.setCurrentSelected} />} */}\r\n </>\r\n )\r\n}\r\n\r\nexport default HomePage; ","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getButtonUtilityClass(slot) {\n return generateUtilityClass('MuiButton', slot);\n}\nconst buttonClasses = generateUtilityClasses('MuiButton', ['root', 'text', 'textInherit', 'textPrimary', 'textSecondary', 'textSuccess', 'textError', 'textInfo', 'textWarning', 'outlined', 'outlinedInherit', 'outlinedPrimary', 'outlinedSecondary', 'outlinedSuccess', 'outlinedError', 'outlinedInfo', 'outlinedWarning', 'contained', 'containedInherit', 'containedPrimary', 'containedSecondary', 'containedSuccess', 'containedError', 'containedInfo', 'containedWarning', 'disableElevation', 'focusVisible', 'disabled', 'colorInherit', 'textSizeSmall', 'textSizeMedium', 'textSizeLarge', 'outlinedSizeSmall', 'outlinedSizeMedium', 'outlinedSizeLarge', 'containedSizeSmall', 'containedSizeMedium', 'containedSizeLarge', 'sizeMedium', 'sizeSmall', 'sizeLarge', 'fullWidth', 'startIcon', 'endIcon', 'iconSizeSmall', 'iconSizeMedium', 'iconSizeLarge']);\nexport default buttonClasses;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst ButtonGroupContext = /*#__PURE__*/React.createContext({});\nif (process.env.NODE_ENV !== 'production') {\n ButtonGroupContext.displayName = 'ButtonGroupContext';\n}\nexport default ButtonGroupContext;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"color\", \"component\", \"className\", \"disabled\", \"disableElevation\", \"disableFocusRipple\", \"endIcon\", \"focusVisibleClassName\", \"fullWidth\", \"size\", \"startIcon\", \"type\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { internal_resolveProps as resolveProps } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport buttonClasses, { getButtonUtilityClass } from './buttonClasses';\nimport ButtonGroupContext from '../ButtonGroup/ButtonGroupContext';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n color,\n disableElevation,\n fullWidth,\n size,\n variant,\n classes\n } = ownerState;\n const slots = {\n root: ['root', variant, `${variant}${capitalize(color)}`, `size${capitalize(size)}`, `${variant}Size${capitalize(size)}`, color === 'inherit' && 'colorInherit', disableElevation && 'disableElevation', fullWidth && 'fullWidth'],\n label: ['label'],\n startIcon: ['startIcon', `iconSize${capitalize(size)}`],\n endIcon: ['endIcon', `iconSize${capitalize(size)}`]\n };\n const composedClasses = composeClasses(slots, getButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst commonIconStyles = ownerState => _extends({}, ownerState.size === 'small' && {\n '& > *:nth-of-type(1)': {\n fontSize: 18\n }\n}, ownerState.size === 'medium' && {\n '& > *:nth-of-type(1)': {\n fontSize: 20\n }\n}, ownerState.size === 'large' && {\n '& > *:nth-of-type(1)': {\n fontSize: 22\n }\n});\nconst ButtonRoot = styled(ButtonBase, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color)}`], styles[`size${capitalize(ownerState.size)}`], styles[`${ownerState.variant}Size${capitalize(ownerState.size)}`], ownerState.color === 'inherit' && styles.colorInherit, ownerState.disableElevation && styles.disableElevation, ownerState.fullWidth && styles.fullWidth];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _theme$palette$getCon, _theme$palette;\n return _extends({}, theme.typography.button, {\n minWidth: 64,\n padding: '6px 16px',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color', 'color'], {\n duration: theme.transitions.duration.short\n }),\n '&:hover': _extends({\n textDecoration: 'none',\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n }, ownerState.variant === 'contained' && {\n backgroundColor: (theme.vars || theme).palette.grey.A100,\n boxShadow: (theme.vars || theme).shadows[4],\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n boxShadow: (theme.vars || theme).shadows[2],\n backgroundColor: (theme.vars || theme).palette.grey[300]\n }\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }\n }),\n '&:active': _extends({}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[8]\n }),\n [`&.${buttonClasses.focusVisible}`]: _extends({}, ownerState.variant === 'contained' && {\n boxShadow: (theme.vars || theme).shadows[6]\n }),\n [`&.${buttonClasses.disabled}`]: _extends({\n color: (theme.vars || theme).palette.action.disabled\n }, ownerState.variant === 'outlined' && {\n border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n }, ownerState.variant === 'contained' && {\n color: (theme.vars || theme).palette.action.disabled,\n boxShadow: (theme.vars || theme).shadows[0],\n backgroundColor: (theme.vars || theme).palette.action.disabledBackground\n })\n }, ownerState.variant === 'text' && {\n padding: '6px 8px'\n }, ownerState.variant === 'text' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main\n }, ownerState.variant === 'outlined' && {\n padding: '5px 15px',\n border: '1px solid currentColor'\n }, ownerState.variant === 'outlined' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].main,\n border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${alpha(theme.palette[ownerState.color].main, 0.5)}`\n }, ownerState.variant === 'contained' && {\n color: theme.vars ?\n // this is safe because grey does not change between default light/dark mode\n theme.vars.palette.text.primary : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),\n backgroundColor: (theme.vars || theme).palette.grey[300],\n boxShadow: (theme.vars || theme).shadows[2]\n }, ownerState.variant === 'contained' && ownerState.color !== 'inherit' && {\n color: (theme.vars || theme).palette[ownerState.color].contrastText,\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main\n }, ownerState.color === 'inherit' && {\n color: 'inherit',\n borderColor: 'currentColor'\n }, ownerState.size === 'small' && ownerState.variant === 'text' && {\n padding: '4px 5px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'text' && {\n padding: '8px 11px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.size === 'small' && ownerState.variant === 'outlined' && {\n padding: '3px 9px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'outlined' && {\n padding: '7px 21px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.size === 'small' && ownerState.variant === 'contained' && {\n padding: '4px 10px',\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && ownerState.variant === 'contained' && {\n padding: '8px 22px',\n fontSize: theme.typography.pxToRem(15)\n }, ownerState.fullWidth && {\n width: '100%'\n });\n}, ({\n ownerState\n}) => ownerState.disableElevation && {\n boxShadow: 'none',\n '&:hover': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.focusVisible}`]: {\n boxShadow: 'none'\n },\n '&:active': {\n boxShadow: 'none'\n },\n [`&.${buttonClasses.disabled}`]: {\n boxShadow: 'none'\n }\n});\nconst ButtonStartIcon = styled('span', {\n name: 'MuiButton',\n slot: 'StartIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.startIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: 8,\n marginLeft: -4\n}, ownerState.size === 'small' && {\n marginLeft: -2\n}, commonIconStyles(ownerState)));\nconst ButtonEndIcon = styled('span', {\n name: 'MuiButton',\n slot: 'EndIcon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.endIcon, styles[`iconSize${capitalize(ownerState.size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inherit',\n marginRight: -4,\n marginLeft: 8\n}, ownerState.size === 'small' && {\n marginRight: -2\n}, commonIconStyles(ownerState)));\nconst Button = /*#__PURE__*/React.forwardRef(function Button(inProps, ref) {\n // props priority: `inProps` > `contextProps` > `themeDefaultProps`\n const contextProps = React.useContext(ButtonGroupContext);\n const resolvedProps = resolveProps(contextProps, inProps);\n const props = useThemeProps({\n props: resolvedProps,\n name: 'MuiButton'\n });\n const {\n children,\n color = 'primary',\n component = 'button',\n className,\n disabled = false,\n disableElevation = false,\n disableFocusRipple = false,\n endIcon: endIconProp,\n focusVisibleClassName,\n fullWidth = false,\n size = 'medium',\n startIcon: startIconProp,\n type,\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n disableElevation,\n disableFocusRipple,\n fullWidth,\n size,\n type,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const startIcon = startIconProp && /*#__PURE__*/_jsx(ButtonStartIcon, {\n className: classes.startIcon,\n ownerState: ownerState,\n children: startIconProp\n });\n const endIcon = endIconProp && /*#__PURE__*/_jsx(ButtonEndIcon, {\n className: classes.endIcon,\n ownerState: ownerState,\n children: endIconProp\n });\n return /*#__PURE__*/_jsxs(ButtonRoot, _extends({\n ownerState: ownerState,\n className: clsx(contextProps.className, classes.root, className),\n component: component,\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n focusVisibleClassName: clsx(classes.focusVisible, focusVisibleClassName),\n ref: ref,\n type: type\n }, other, {\n classes: classes,\n children: [startIcon, children, endIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Button.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['inherit', 'primary', 'secondary', 'success', 'error', 'info', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, no elevation is used.\n * @default false\n */\n disableElevation: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * Element placed after the children.\n */\n endIcon: PropTypes.node,\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n /**\n * If `true`, the button will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The URL to link to when the button is clicked.\n * If defined, an `a` element will be used as the root node.\n */\n href: PropTypes.string,\n /**\n * The size of the component.\n * `small` is equivalent to the dense button styling.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * Element placed before the children.\n */\n startIcon: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @ignore\n */\n type: PropTypes.oneOfType([PropTypes.oneOf(['button', 'reset', 'submit']), PropTypes.string]),\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default Button;","import * as React from 'react';\nconst usePreviousProps = value => {\n const ref = React.useRef({});\n React.useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n};\nexport default usePreviousProps;","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/* eslint-disable no-constant-condition */\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n const {\n ignoreAccents = true,\n ignoreCase = true,\n limit,\n matchFrom = 'any',\n stringify,\n trim = false\n } = config;\n return (options, {\n inputValue,\n getOptionLabel\n }) => {\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n const filteredOptions = !input ? options : options.filter(option => {\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n var _listboxRef$current$p;\n return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport default function useAutocomplete(props) {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_classNamePrefix = 'Mui',\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n componentName = 'useAutocomplete',\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled: disabledProp,\n disabledItemsFocusable = false,\n disableListWrap = false,\n filterOptions = defaultFilterOptions,\n filterSelectedOptions = false,\n freeSolo = false,\n getOptionDisabled,\n getOptionLabel: getOptionLabelProp = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n id: idProp,\n includeInputInList = false,\n inputValue: inputValueProp,\n isOptionEqualToValue = (option, value) => option === value,\n multiple = false,\n onChange,\n onClose,\n onHighlightChange,\n onInputChange,\n onOpen,\n open: openProp,\n openOnFocus = false,\n options,\n readOnly = false,\n selectOnFocus = !props.freeSolo,\n value: valueProp\n } = props;\n const id = useId(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = option => {\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n }\n return String(optionLabel);\n }\n return optionLabel;\n };\n const ignoreFocus = React.useRef(false);\n const firstFocus = React.useRef(true);\n const inputRef = React.useRef(null);\n const listboxRef = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [focusedTag, setFocusedTag] = React.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = React.useRef(defaultHighlighted);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n });\n const [focused, setFocused] = React.useState(false);\n const resetInputValue = React.useCallback((event, newValue) => {\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) {\n return;\n }\n let newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValueState(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n const [open, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n });\n const [inputPristine, setInputPristine] = React.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n getOptionLabel\n }) : [];\n const previousProps = usePreviousProps({\n filteredOptions,\n value\n });\n React.useEffect(() => {\n const valueChange = value !== previousProps.value;\n if (focused && !valueChange) {\n return;\n }\n\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) {\n return;\n }\n resetInputValue(null, value);\n }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n if (missingValue.length > 0) {\n console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n const focusTag = useEventCallback(tagToFocus => {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }\n });\n\n // Ensure the focusedTag is never inconsistent\n React.useEffect(() => {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === filteredOptions.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n if (option && !option.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const setHighlightedIndex = useEventCallback(({\n event,\n index,\n reason = 'auto'\n }) => {\n highlightedIndexRef.current = index;\n\n // does the index exist?\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n if (prev) {\n prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n }\n const listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n\n // \"No results\"\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) {\n return;\n }\n option.classList.add(`${unstable_classNamePrefix}-focused`);\n if (reason === 'keyboard') {\n option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n }\n\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n //\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse') {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n const changeHighlightedIndex = useEventCallback(({\n event,\n diff,\n direction = 'next',\n reason = 'auto'\n }) => {\n if (!popupOpen) {\n return;\n }\n const getNextIndex = () => {\n const maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason,\n event\n });\n\n // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option;\n\n // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n const checkHighlightedOptionExists = () => {\n const isSameValue = (value1, value2) => {\n const label1 = value1 ? getOptionLabel(value1) : '';\n const label2 = value2 ? getOptionLabel(value2) : '';\n return label1 === label2;\n };\n if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n if (previousHighlightedOption) {\n const previousHighlightedOptionExists = filteredOptions.some(option => {\n return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n });\n if (previousHighlightedOptionExists) {\n return true;\n }\n }\n }\n return false;\n };\n const syncHighlightedIndex = React.useCallback(() => {\n if (!popupOpen) {\n return;\n }\n\n // Check if the previously highlighted option still exists in the updated filtered options list and if the value hasn't changed\n // If it exists and the value hasn't changed, return, otherwise continue execution\n if (checkHighlightedOptionExists()) {\n return;\n }\n const valueItem = multiple ? value[0] : value;\n\n // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n }\n\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current];\n\n // Keep the current highlighted index if possible\n if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n return;\n }\n const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n }\n\n // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n }\n\n // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n });\n // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n filteredOptions.length,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n const handleListboxRef = useEventCallback(node => {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n } else {\n console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n }\n }\n }, [componentName]);\n }\n React.useEffect(() => {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n const handleOpen = event => {\n if (open) {\n return;\n }\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n const handleClose = (event, reason) => {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n const handleValue = (event, newValue, reason, details) => {\n if (multiple) {\n if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n return;\n }\n } else if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValueState(newValue);\n };\n const isTouch = React.useRef(false);\n const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n if (matches.length > 1) {\n console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n }\n }\n const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'removeOption';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option\n });\n if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const handleFocusTag = (event, direction) => {\n if (!multiple) {\n return;\n }\n if (inputValue === '') {\n handleClose(event, 'toggleInput');\n }\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = event => {\n ignoreFocus.current = true;\n setInputValueState('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n const handleKeyDown = other => event => {\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n if (event.defaultMuiPrevented) {\n return;\n }\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n\n // Wait until IME is settled.\n if (event.which !== 229) {\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'selectOption');\n\n // Move the selection to the end.\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n case 'Delete':\n if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n const index = focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n default:\n }\n }\n };\n const handleFocus = event => {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n const handleBlur = event => {\n // Ignore the event when using the scrollbar with IE11\n if (unstable_isActiveElementInListbox(listboxRef)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n const handleInputChange = event => {\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n const handleOptionMouseOver = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'mouse'\n });\n };\n const handleOptionTouchStart = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'touch'\n });\n isTouch.current = true;\n };\n const handleOptionClick = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'selectOption');\n isTouch.current = false;\n };\n const handleTagDelete = index => event => {\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n };\n const handlePopupIndicator = event => {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n };\n\n // Prevent input blur when interacting with the combobox\n const handleMouseDown = event => {\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n };\n\n // Focus the input when interacting with the combobox\n const handleClick = () => {\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n const handleInputMouseDown = event => {\n if (inputValue === '' || !open) {\n handlePopupIndicator(event);\n }\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index) => {\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index,\n group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n if (disabledProp && focused) {\n handleBlur();\n }\n return {\n getRootProps: (other = {}) => _extends({\n 'aria-owns': listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: () => ({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: () => ({\n id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperativeley so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n 'aria-expanded': listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false',\n role: 'combobox',\n disabled: disabledProp\n }),\n getClearProps: () => ({\n tabIndex: -1,\n onClick: handleClear\n }),\n getPopupIndicatorProps: () => ({\n tabIndex: -1,\n onClick: handlePopupIndicator\n }),\n getTagProps: ({\n index\n }) => _extends({\n key: index,\n 'data-tag-index': index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: () => ({\n role: 'listbox',\n id: `${id}-listbox`,\n 'aria-labelledby': `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: event => {\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({\n index,\n option\n }) => {\n const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: getOptionLabel(option),\n tabIndex: -1,\n role: 'option',\n id: `${id}-option-${index}`,\n onMouseOver: handleOptionMouseOver,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id,\n inputValue,\n value,\n dirty,\n expanded: popupOpen && anchorEl,\n popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl,\n setAnchorEl,\n focusedTag,\n groupedOptions\n };\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z\"\n}), 'Cancel');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getChipUtilityClass(slot) {\n return generateUtilityClass('MuiChip', slot);\n}\nconst chipClasses = generateUtilityClasses('MuiChip', ['root', 'sizeSmall', 'sizeMedium', 'colorError', 'colorInfo', 'colorPrimary', 'colorSecondary', 'colorSuccess', 'colorWarning', 'disabled', 'clickable', 'clickableColorPrimary', 'clickableColorSecondary', 'deletable', 'deletableColorPrimary', 'deletableColorSecondary', 'outlined', 'filled', 'outlinedPrimary', 'outlinedSecondary', 'filledPrimary', 'filledSecondary', 'avatar', 'avatarSmall', 'avatarMedium', 'avatarColorPrimary', 'avatarColorSecondary', 'icon', 'iconSmall', 'iconMedium', 'iconColorPrimary', 'iconColorSecondary', 'label', 'labelSmall', 'labelMedium', 'deleteIcon', 'deleteIconSmall', 'deleteIconMedium', 'deleteIconColorPrimary', 'deleteIconColorSecondary', 'deleteIconOutlinedColorPrimary', 'deleteIconOutlinedColorSecondary', 'deleteIconFilledColorPrimary', 'deleteIconFilledColorSecondary', 'focusVisible']);\nexport default chipClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"avatar\", \"className\", \"clickable\", \"color\", \"component\", \"deleteIcon\", \"disabled\", \"icon\", \"label\", \"onClick\", \"onDelete\", \"onKeyDown\", \"onKeyUp\", \"size\", \"variant\", \"tabIndex\", \"skipFocusWhenDisabled\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport CancelIcon from '../internal/svg-icons/Cancel';\nimport useForkRef from '../utils/useForkRef';\nimport unsupportedProp from '../utils/unsupportedProp';\nimport capitalize from '../utils/capitalize';\nimport ButtonBase from '../ButtonBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport chipClasses, { getChipUtilityClass } from './chipClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disabled,\n size,\n color,\n iconColor,\n onDelete,\n clickable,\n variant\n } = ownerState;\n const slots = {\n root: ['root', variant, disabled && 'disabled', `size${capitalize(size)}`, `color${capitalize(color)}`, clickable && 'clickable', clickable && `clickableColor${capitalize(color)}`, onDelete && 'deletable', onDelete && `deletableColor${capitalize(color)}`, `${variant}${capitalize(color)}`],\n label: ['label', `label${capitalize(size)}`],\n avatar: ['avatar', `avatar${capitalize(size)}`, `avatarColor${capitalize(color)}`],\n icon: ['icon', `icon${capitalize(size)}`, `iconColor${capitalize(iconColor)}`],\n deleteIcon: ['deleteIcon', `deleteIcon${capitalize(size)}`, `deleteIconColor${capitalize(color)}`, `deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n };\n return composeClasses(slots, getChipUtilityClass, classes);\n};\nconst ChipRoot = styled('div', {\n name: 'MuiChip',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n color,\n iconColor,\n clickable,\n onDelete,\n size,\n variant\n } = ownerState;\n return [{\n [`& .${chipClasses.avatar}`]: styles.avatar\n }, {\n [`& .${chipClasses.avatar}`]: styles[`avatar${capitalize(size)}`]\n }, {\n [`& .${chipClasses.avatar}`]: styles[`avatarColor${capitalize(color)}`]\n }, {\n [`& .${chipClasses.icon}`]: styles.icon\n }, {\n [`& .${chipClasses.icon}`]: styles[`icon${capitalize(size)}`]\n }, {\n [`& .${chipClasses.icon}`]: styles[`iconColor${capitalize(iconColor)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles.deleteIcon\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(size)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIconColor${capitalize(color)}`]\n }, {\n [`& .${chipClasses.deleteIcon}`]: styles[`deleteIcon${capitalize(variant)}Color${capitalize(color)}`]\n }, styles.root, styles[`size${capitalize(size)}`], styles[`color${capitalize(color)}`], clickable && styles.clickable, clickable && color !== 'default' && styles[`clickableColor${capitalize(color)})`], onDelete && styles.deletable, onDelete && color !== 'default' && styles[`deletableColor${capitalize(color)}`], styles[variant], styles[`${variant}${capitalize(color)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const deleteIconColor = alpha(theme.palette.text.primary, 0.26);\n const textColor = theme.palette.mode === 'light' ? theme.palette.grey[700] : theme.palette.grey[300];\n return _extends({\n maxWidth: '100%',\n fontFamily: theme.typography.fontFamily,\n fontSize: theme.typography.pxToRem(13),\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n height: 32,\n color: (theme.vars || theme).palette.text.primary,\n backgroundColor: (theme.vars || theme).palette.action.selected,\n borderRadius: 32 / 2,\n whiteSpace: 'nowrap',\n transition: theme.transitions.create(['background-color', 'box-shadow']),\n // label will inherit this from root, then `clickable` class overrides this for both\n cursor: 'default',\n // We disable the focus ring for mouse, touch and keyboard users.\n outline: 0,\n textDecoration: 'none',\n border: 0,\n // Remove `button` border\n padding: 0,\n // Remove `button` padding\n verticalAlign: 'middle',\n boxSizing: 'border-box',\n [`&.${chipClasses.disabled}`]: {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 5,\n marginRight: -6,\n width: 24,\n height: 24,\n color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,\n fontSize: theme.typography.pxToRem(12)\n },\n [`& .${chipClasses.avatarColorPrimary}`]: {\n color: (theme.vars || theme).palette.primary.contrastText,\n backgroundColor: (theme.vars || theme).palette.primary.dark\n },\n [`& .${chipClasses.avatarColorSecondary}`]: {\n color: (theme.vars || theme).palette.secondary.contrastText,\n backgroundColor: (theme.vars || theme).palette.secondary.dark\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 4,\n marginRight: -4,\n width: 18,\n height: 18,\n fontSize: theme.typography.pxToRem(10)\n },\n [`& .${chipClasses.icon}`]: _extends({\n marginLeft: 5,\n marginRight: -6\n }, ownerState.size === 'small' && {\n fontSize: 18,\n marginLeft: 4,\n marginRight: -4\n }, ownerState.iconColor === ownerState.color && _extends({\n color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor\n }, ownerState.color !== 'default' && {\n color: 'inherit'\n })),\n [`& .${chipClasses.deleteIcon}`]: _extends({\n WebkitTapHighlightColor: 'transparent',\n color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : deleteIconColor,\n fontSize: 22,\n cursor: 'pointer',\n margin: '0 5px 0 -6px',\n '&:hover': {\n color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : alpha(deleteIconColor, 0.4)\n }\n }, ownerState.size === 'small' && {\n fontSize: 16,\n marginRight: 4,\n marginLeft: -4\n }, ownerState.color !== 'default' && {\n color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : alpha(theme.palette[ownerState.color].contrastText, 0.7),\n '&:hover, &:active': {\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n }\n })\n }, ownerState.size === 'small' && {\n height: 24\n }, ownerState.color !== 'default' && {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].main,\n color: (theme.vars || theme).palette[ownerState.color].contrastText\n }, ownerState.onDelete && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }, ownerState.onDelete && ownerState.color !== 'default' && {\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n }\n });\n}, ({\n theme,\n ownerState\n}) => _extends({}, ownerState.clickable && {\n userSelect: 'none',\n WebkitTapHighlightColor: 'transparent',\n cursor: 'pointer',\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n },\n '&:active': {\n boxShadow: (theme.vars || theme).shadows[1]\n }\n}, ownerState.clickable && ownerState.color !== 'default' && {\n [`&:hover, &.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette[ownerState.color].dark\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.variant === 'outlined' && {\n backgroundColor: 'transparent',\n border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === 'light' ? theme.palette.grey[400] : theme.palette.grey[700]}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n [`& .${chipClasses.avatar}`]: {\n marginLeft: 4\n },\n [`& .${chipClasses.avatarSmall}`]: {\n marginLeft: 2\n },\n [`& .${chipClasses.icon}`]: {\n marginLeft: 4\n },\n [`& .${chipClasses.iconSmall}`]: {\n marginLeft: 2\n },\n [`& .${chipClasses.deleteIcon}`]: {\n marginRight: 5\n },\n [`& .${chipClasses.deleteIconSmall}`]: {\n marginRight: 3\n }\n}, ownerState.variant === 'outlined' && ownerState.color !== 'default' && {\n color: (theme.vars || theme).palette[ownerState.color].main,\n border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7)}`,\n [`&.${chipClasses.clickable}:hover`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)\n },\n [`&.${chipClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : alpha(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)\n },\n [`& .${chipClasses.deleteIcon}`]: {\n color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : alpha(theme.palette[ownerState.color].main, 0.7),\n '&:hover, &:active': {\n color: (theme.vars || theme).palette[ownerState.color].main\n }\n }\n}));\nconst ChipLabel = styled('span', {\n name: 'MuiChip',\n slot: 'Label',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n size\n } = ownerState;\n return [styles.label, styles[`label${capitalize(size)}`]];\n }\n})(({\n ownerState\n}) => _extends({\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n paddingLeft: 12,\n paddingRight: 12,\n whiteSpace: 'nowrap'\n}, ownerState.size === 'small' && {\n paddingLeft: 8,\n paddingRight: 8\n}));\nfunction isDeleteKeyboardEvent(keyboardEvent) {\n return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';\n}\n\n/**\n * Chips represent complex entities in small blocks, such as a contact.\n */\nconst Chip = /*#__PURE__*/React.forwardRef(function Chip(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiChip'\n });\n const {\n avatar: avatarProp,\n className,\n clickable: clickableProp,\n color = 'default',\n component: ComponentProp,\n deleteIcon: deleteIconProp,\n disabled = false,\n icon: iconProp,\n label,\n onClick,\n onDelete,\n onKeyDown,\n onKeyUp,\n size = 'medium',\n variant = 'filled',\n tabIndex,\n skipFocusWhenDisabled = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const chipRef = React.useRef(null);\n const handleRef = useForkRef(chipRef, ref);\n const handleDeleteIconClick = event => {\n // Stop the event from bubbling up to the `Chip`\n event.stopPropagation();\n if (onDelete) {\n onDelete(event);\n }\n };\n const handleKeyDown = event => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {\n // Will be handled in keyUp, otherwise some browsers\n // might init navigation\n event.preventDefault();\n }\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n const handleKeyUp = event => {\n // Ignore events from children of `Chip`.\n if (event.currentTarget === event.target) {\n if (onDelete && isDeleteKeyboardEvent(event)) {\n onDelete(event);\n } else if (event.key === 'Escape' && chipRef.current) {\n chipRef.current.blur();\n }\n }\n if (onKeyUp) {\n onKeyUp(event);\n }\n };\n const clickable = clickableProp !== false && onClick ? true : clickableProp;\n const component = clickable || onDelete ? ButtonBase : ComponentProp || 'div';\n const ownerState = _extends({}, props, {\n component,\n disabled,\n size,\n color,\n iconColor: /*#__PURE__*/React.isValidElement(iconProp) ? iconProp.props.color || color : color,\n onDelete: !!onDelete,\n clickable,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const moreProps = component === ButtonBase ? _extends({\n component: ComponentProp || 'div',\n focusVisibleClassName: classes.focusVisible\n }, onDelete && {\n disableRipple: true\n }) : {};\n let deleteIcon = null;\n if (onDelete) {\n deleteIcon = deleteIconProp && /*#__PURE__*/React.isValidElement(deleteIconProp) ? /*#__PURE__*/React.cloneElement(deleteIconProp, {\n className: clsx(deleteIconProp.props.className, classes.deleteIcon),\n onClick: handleDeleteIconClick\n }) : /*#__PURE__*/_jsx(CancelIcon, {\n className: clsx(classes.deleteIcon),\n onClick: handleDeleteIconClick\n });\n }\n let avatar = null;\n if (avatarProp && /*#__PURE__*/React.isValidElement(avatarProp)) {\n avatar = /*#__PURE__*/React.cloneElement(avatarProp, {\n className: clsx(classes.avatar, avatarProp.props.className)\n });\n }\n let icon = null;\n if (iconProp && /*#__PURE__*/React.isValidElement(iconProp)) {\n icon = /*#__PURE__*/React.cloneElement(iconProp, {\n className: clsx(classes.icon, iconProp.props.className)\n });\n }\n if (process.env.NODE_ENV !== 'production') {\n if (avatar && icon) {\n console.error('MUI: The Chip component can not handle the avatar ' + 'and the icon prop at the same time. Pick one.');\n }\n }\n return /*#__PURE__*/_jsxs(ChipRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n disabled: clickable && disabled ? true : undefined,\n onClick: onClick,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n ref: handleRef,\n tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,\n ownerState: ownerState\n }, moreProps, other, {\n children: [avatar || icon, /*#__PURE__*/_jsx(ChipLabel, {\n className: clsx(classes.label),\n ownerState: ownerState,\n children: label\n }), deleteIcon]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Chip.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The Avatar element to display.\n */\n avatar: PropTypes.element,\n /**\n * This prop isn't supported.\n * Use the `component` prop if you need to change the children structure.\n */\n children: unsupportedProp,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the chip will appear clickable, and will raise when pressed,\n * even if the onClick prop is not defined.\n * If `false`, the chip will not appear clickable, even if onClick prop is defined.\n * This can be used, for example,\n * along with the component prop to indicate an anchor Chip is clickable.\n * Note: this controls the UI and does not affect the onClick event.\n */\n clickable: PropTypes.bool,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'default'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Override the default delete icon element. Shown only if `onDelete` is set.\n */\n deleteIcon: PropTypes.element,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * Icon element.\n */\n icon: PropTypes.element,\n /**\n * The content of the component.\n */\n label: PropTypes.node,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * Callback fired when the delete icon is clicked.\n * If set, the delete icon will be shown.\n */\n onDelete: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * If `true`, allows the disabled chip to escape focus.\n * If `false`, allows the disabled chip to receive focus.\n * @default false\n */\n skipFocusWhenDisabled: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * @ignore\n */\n tabIndex: PropTypes.number,\n /**\n * The variant to use.\n * @default 'filled'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined']), PropTypes.string])\n} : void 0;\nexport default Chip;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputBaseUtilityClass(slot) {\n return generateUtilityClass('MuiInputBase', slot);\n}\nconst inputBaseClasses = generateUtilityClasses('MuiInputBase', ['root', 'formControl', 'focused', 'disabled', 'adornedStart', 'adornedEnd', 'error', 'sizeSmall', 'multiline', 'colorSecondary', 'fullWidth', 'hiddenLabel', 'readOnly', 'input', 'inputSizeSmall', 'inputMultiline', 'inputTypeSearch', 'inputAdornedStart', 'inputAdornedEnd', 'inputHiddenLabel']);\nexport default inputBaseClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getInputUtilityClass(slot) {\n return generateUtilityClass('MuiInput', slot);\n}\nconst inputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiInput', ['root', 'underline', 'input']));\nexport default inputClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getOutlinedInputUtilityClass(slot) {\n return generateUtilityClass('MuiOutlinedInput', slot);\n}\nconst outlinedInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiOutlinedInput', ['root', 'notchedOutline', 'input']));\nexport default outlinedInputClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nimport { inputBaseClasses } from '../InputBase';\nexport function getFilledInputUtilityClass(slot) {\n return generateUtilityClass('MuiFilledInput', slot);\n}\nconst filledInputClasses = _extends({}, inputBaseClasses, generateUtilityClasses('MuiFilledInput', ['root', 'underline', 'input']));\nexport default filledInputClasses;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n *\n * Alias to `Clear`.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"\n}), 'Close');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M7 10l5 5 5-5z\"\n}), 'ArrowDropDown');","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes, integerPropType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, useAutocomplete, createFilterOptions } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})(({\n ownerState\n}) => _extends({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n }\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${autocompleteClasses.tag}`]: _extends({\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n }, ownerState.size === 'small' && {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }),\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 6px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 6px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: _extends({\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n }, ownerState.inputFocused && {\n opacity: 1\n })\n}));\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: 'calc(50% - 14px)' // Center vertically\n});\n\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})(({\n ownerState\n}) => _extends({\n padding: 2,\n marginRight: -2\n}, ownerState.popupOpen && {\n transform: 'rotate(180deg)'\n}));\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n zIndex: (theme.vars || theme).zIndex.modal\n}, ownerState.disablePortal && {\n position: 'absolute'\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => /*#__PURE__*/_jsx(\"li\", _extends({}, props2, {\n children: getOptionLabel(option)\n }));\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n });\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsxs(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }) : null, groupedOptions.length === 0 && !freeSolo && !loading ? /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }) : null, groupedOptions.length > 0 ? /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, getListboxProps(), ListboxProps, {\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })) : null]\n }))\n })) : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the portion of the selected suggestion that has not been typed by the user,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default <ClearIcon fontSize=\"small\" />\n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set to `true` if you want to help the user enter a new value.\n * Set to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @param {T[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {T[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {T} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {T} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {T} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {T} option The option to test.\n * @param {T} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T|T[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {T} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default <ArrowDropDownIcon />\n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {T} option The option to render.\n * @param {object} state The state of the component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {T[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport styled from '@mui/styled-engine';\nimport styleFunctionSx, { extendSxProp } from './styleFunctionSx';\nimport useTheme from './useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function createBox(options = {}) {\n const {\n themeId,\n defaultTheme,\n defaultClassName = 'MuiBox-root',\n generateClassName\n } = options;\n const BoxRoot = styled('div', {\n shouldForwardProp: prop => prop !== 'theme' && prop !== 'sx' && prop !== 'as'\n })(styleFunctionSx);\n const Box = /*#__PURE__*/React.forwardRef(function Box(inProps, ref) {\n const theme = useTheme(defaultTheme);\n const _extendSxProp = extendSxProp(inProps),\n {\n className,\n component = 'div'\n } = _extendSxProp,\n other = _objectWithoutPropertiesLoose(_extendSxProp, _excluded);\n return /*#__PURE__*/_jsx(BoxRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(className, generateClassName ? generateClassName(defaultClassName) : defaultClassName),\n theme: themeId ? theme[themeId] || theme : theme\n }, other));\n });\n return Box;\n}","import { createBox } from '@mui/system';\nimport PropTypes from 'prop-types';\nimport { unstable_ClassNameGenerator as ClassNameGenerator } from '../className';\nimport { createTheme } from '../styles';\nconst defaultTheme = createTheme();\nconst Box = createBox({\n defaultTheme,\n defaultClassName: 'MuiBox-root',\n generateClassName: ClassNameGenerator.generate\n});\nprocess.env.NODE_ENV !== \"production\" ? Box.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Box;","import createStyled from './createStyled';\nconst styled = createStyled();\nexport default styled;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"component\", \"direction\", \"spacing\", \"divider\", \"children\", \"className\", \"useFlexGap\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge, unstable_composeClasses as composeClasses, unstable_generateUtilityClass as generateUtilityClass } from '@mui/utils';\nimport systemStyled from '../styled';\nimport useThemePropsSystem from '../useThemeProps';\nimport { extendSxProp } from '../styleFunctionSx';\nimport createTheme from '../createTheme';\nimport { handleBreakpoints, mergeBreakpointsInOrder, resolveBreakpointValues } from '../breakpoints';\nimport { createUnarySpacing, getValue } from '../spacing';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\n// widening Theme to any so that the consumer can own the theme structure.\nconst defaultCreateStyledComponent = systemStyled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n});\nfunction useThemePropsDefault(props) {\n return useThemePropsSystem({\n props,\n name: 'MuiStack',\n defaultTheme\n });\n}\n\n/**\n * Return an array with the separator React element interspersed between\n * each React node of the input children.\n *\n * > joinChildren([1,2,3], 0)\n * [1,0,2,0,3]\n */\nfunction joinChildren(children, separator) {\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n return childrenArray.reduce((output, child, index) => {\n output.push(child);\n if (index < childrenArray.length - 1) {\n output.push( /*#__PURE__*/React.cloneElement(separator, {\n key: `separator-${index}`\n }));\n }\n return output;\n }, []);\n}\nconst getSideFromDirection = direction => {\n return {\n row: 'Left',\n 'row-reverse': 'Right',\n column: 'Top',\n 'column-reverse': 'Bottom'\n }[direction];\n};\nexport const style = ({\n ownerState,\n theme\n}) => {\n let styles = _extends({\n display: 'flex',\n flexDirection: 'column'\n }, handleBreakpoints({\n theme\n }, resolveBreakpointValues({\n values: ownerState.direction,\n breakpoints: theme.breakpoints.values\n }), propValue => ({\n flexDirection: propValue\n })));\n if (ownerState.spacing) {\n const transformer = createUnarySpacing(theme);\n const base = Object.keys(theme.breakpoints.values).reduce((acc, breakpoint) => {\n if (typeof ownerState.spacing === 'object' && ownerState.spacing[breakpoint] != null || typeof ownerState.direction === 'object' && ownerState.direction[breakpoint] != null) {\n acc[breakpoint] = true;\n }\n return acc;\n }, {});\n const directionValues = resolveBreakpointValues({\n values: ownerState.direction,\n base\n });\n const spacingValues = resolveBreakpointValues({\n values: ownerState.spacing,\n base\n });\n if (typeof directionValues === 'object') {\n Object.keys(directionValues).forEach((breakpoint, index, breakpoints) => {\n const directionValue = directionValues[breakpoint];\n if (!directionValue) {\n const previousDirectionValue = index > 0 ? directionValues[breakpoints[index - 1]] : 'column';\n directionValues[breakpoint] = previousDirectionValue;\n }\n });\n }\n const styleFromPropValue = (propValue, breakpoint) => {\n if (ownerState.useFlexGap) {\n return {\n gap: getValue(transformer, propValue)\n };\n }\n return {\n '& > :not(style) + :not(style)': {\n margin: 0,\n [`margin${getSideFromDirection(breakpoint ? directionValues[breakpoint] : ownerState.direction)}`]: getValue(transformer, propValue)\n }\n };\n };\n styles = deepmerge(styles, handleBreakpoints({\n theme\n }, spacingValues, styleFromPropValue));\n }\n styles = mergeBreakpointsInOrder(theme.breakpoints, styles);\n return styles;\n};\nexport default function createStack(options = {}) {\n const {\n // This will allow adding custom styled fn (for example for custom sx style function)\n createStyledComponent = defaultCreateStyledComponent,\n useThemeProps = useThemePropsDefault,\n componentName = 'MuiStack'\n } = options;\n const useUtilityClasses = () => {\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, slot => generateUtilityClass(componentName, slot), {});\n };\n const StackRoot = createStyledComponent(style);\n const Stack = /*#__PURE__*/React.forwardRef(function Grid(inProps, ref) {\n const themeProps = useThemeProps(inProps);\n const props = extendSxProp(themeProps); // `color` type conflicts with html color attribute.\n const {\n component = 'div',\n direction = 'column',\n spacing = 0,\n divider,\n children,\n className,\n useFlexGap = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = {\n direction,\n spacing,\n useFlexGap\n };\n const classes = useUtilityClasses();\n return /*#__PURE__*/_jsx(StackRoot, _extends({\n as: component,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n children: divider ? joinChildren(children, divider) : children\n }));\n });\n process.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n children: PropTypes.node,\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n divider: PropTypes.node,\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n } : void 0;\n return Stack;\n}","import PropTypes from 'prop-types';\nimport { createStack } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nconst Stack = createStack({\n createStyledComponent: styled('div', {\n name: 'MuiStack',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n }),\n useThemeProps: inProps => useThemeProps({\n props: inProps,\n name: 'MuiStack'\n })\n});\nprocess.env.NODE_ENV !== \"production\" ? Stack.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Defines the `flex-direction` style property.\n * It is applied for all screen sizes.\n * @default 'column'\n */\n direction: PropTypes.oneOfType([PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row']), PropTypes.arrayOf(PropTypes.oneOf(['column-reverse', 'column', 'row-reverse', 'row'])), PropTypes.object]),\n /**\n * Add an element between each child.\n */\n divider: PropTypes.node,\n /**\n * Defines the space between immediate children.\n * @default 0\n */\n spacing: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])), PropTypes.number, PropTypes.object, PropTypes.string]),\n /**\n * The system prop, which allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Stack;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"absolute\", \"children\", \"className\", \"component\", \"flexItem\", \"light\", \"orientation\", \"role\", \"textAlign\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getDividerUtilityClass } from './dividerClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n absolute,\n children,\n classes,\n flexItem,\n light,\n orientation,\n textAlign,\n variant\n } = ownerState;\n const slots = {\n root: ['root', absolute && 'absolute', variant, light && 'light', orientation === 'vertical' && 'vertical', flexItem && 'flexItem', children && 'withChildren', children && orientation === 'vertical' && 'withChildrenVertical', textAlign === 'right' && orientation !== 'vertical' && 'textAlignRight', textAlign === 'left' && orientation !== 'vertical' && 'textAlignLeft'],\n wrapper: ['wrapper', orientation === 'vertical' && 'wrapperVertical']\n };\n return composeClasses(slots, getDividerUtilityClass, classes);\n};\nconst DividerRoot = styled('div', {\n name: 'MuiDivider',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.absolute && styles.absolute, styles[ownerState.variant], ownerState.light && styles.light, ownerState.orientation === 'vertical' && styles.vertical, ownerState.flexItem && styles.flexItem, ownerState.children && styles.withChildren, ownerState.children && ownerState.orientation === 'vertical' && styles.withChildrenVertical, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && styles.textAlignRight, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && styles.textAlignLeft];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n margin: 0,\n // Reset browser default style.\n flexShrink: 0,\n borderWidth: 0,\n borderStyle: 'solid',\n borderColor: (theme.vars || theme).palette.divider,\n borderBottomWidth: 'thin'\n}, ownerState.absolute && {\n position: 'absolute',\n bottom: 0,\n left: 0,\n width: '100%'\n}, ownerState.light && {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.dividerChannel} / 0.08)` : alpha(theme.palette.divider, 0.08)\n}, ownerState.variant === 'inset' && {\n marginLeft: 72\n}, ownerState.variant === 'middle' && ownerState.orientation === 'horizontal' && {\n marginLeft: theme.spacing(2),\n marginRight: theme.spacing(2)\n}, ownerState.variant === 'middle' && ownerState.orientation === 'vertical' && {\n marginTop: theme.spacing(1),\n marginBottom: theme.spacing(1)\n}, ownerState.orientation === 'vertical' && {\n height: '100%',\n borderBottomWidth: 0,\n borderRightWidth: 'thin'\n}, ownerState.flexItem && {\n alignSelf: 'stretch',\n height: 'auto'\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && {\n display: 'flex',\n whiteSpace: 'nowrap',\n textAlign: 'center',\n border: 0,\n '&::before, &::after': {\n position: 'relative',\n width: '100%',\n borderTop: `thin solid ${(theme.vars || theme).palette.divider}`,\n top: '50%',\n content: '\"\"',\n transform: 'translateY(50%)'\n }\n}), ({\n theme,\n ownerState\n}) => _extends({}, ownerState.children && ownerState.orientation === 'vertical' && {\n flexDirection: 'column',\n '&::before, &::after': {\n height: '100%',\n top: '0%',\n left: '50%',\n borderTop: 0,\n borderLeft: `thin solid ${(theme.vars || theme).palette.divider}`,\n transform: 'translateX(0%)'\n }\n}), ({\n ownerState\n}) => _extends({}, ownerState.textAlign === 'right' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '90%'\n },\n '&::after': {\n width: '10%'\n }\n}, ownerState.textAlign === 'left' && ownerState.orientation !== 'vertical' && {\n '&::before': {\n width: '10%'\n },\n '&::after': {\n width: '90%'\n }\n}));\nconst DividerWrapper = styled('span', {\n name: 'MuiDivider',\n slot: 'Wrapper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.wrapper, ownerState.orientation === 'vertical' && styles.wrapperVertical];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'inline-block',\n paddingLeft: `calc(${theme.spacing(1)} * 1.2)`,\n paddingRight: `calc(${theme.spacing(1)} * 1.2)`\n}, ownerState.orientation === 'vertical' && {\n paddingTop: `calc(${theme.spacing(1)} * 1.2)`,\n paddingBottom: `calc(${theme.spacing(1)} * 1.2)`\n}));\nconst Divider = /*#__PURE__*/React.forwardRef(function Divider(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiDivider'\n });\n const {\n absolute = false,\n children,\n className,\n component = children ? 'div' : 'hr',\n flexItem = false,\n light = false,\n orientation = 'horizontal',\n role = component !== 'hr' ? 'separator' : undefined,\n textAlign = 'center',\n variant = 'fullWidth'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n absolute,\n component,\n flexItem,\n light,\n orientation,\n role,\n textAlign,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(DividerRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n role: role,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: children ? /*#__PURE__*/_jsx(DividerWrapper, {\n className: classes.wrapper,\n ownerState: ownerState,\n children: children\n }) : null\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Divider.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * Absolutely position the element.\n * @default false\n */\n absolute: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, a vertical divider will have the correct height when used in flex container.\n * (By default, a vertical divider will have a calculated height of `0px` if it is the child of a flex container.)\n * @default false\n */\n flexItem: PropTypes.bool,\n /**\n * If `true`, the divider will have a lighter color.\n * @default false\n */\n light: PropTypes.bool,\n /**\n * The component orientation.\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * @ignore\n */\n role: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The text alignment.\n * @default 'center'\n */\n textAlign: PropTypes.oneOf(['center', 'left', 'right']),\n /**\n * The variant to use.\n * @default 'fullWidth'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['fullWidth', 'inset', 'middle']), PropTypes.string])\n} : void 0;\nexport default Divider;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst FormControlContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n FormControlContext.displayName = 'FormControlContext';\n}\nexport default FormControlContext;","import * as React from 'react';\nimport FormControlContext from './FormControlContext';\nexport default function useFormControl() {\n return React.useContext(FormControlContext);\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputAdornmentUtilityClass(slot) {\n return generateUtilityClass('MuiInputAdornment', slot);\n}\nconst inputAdornmentClasses = generateUtilityClasses('MuiInputAdornment', ['root', 'filled', 'standard', 'outlined', 'positionStart', 'positionEnd', 'disablePointerEvents', 'hiddenLabel', 'sizeSmall']);\nexport default inputAdornmentClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disablePointerEvents\", \"disableTypography\", \"position\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport Typography from '../Typography';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport inputAdornmentClasses, { getInputAdornmentUtilityClass } from './inputAdornmentClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst overridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`position${capitalize(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePointerEvents,\n hiddenLabel,\n position,\n size,\n variant\n } = ownerState;\n const slots = {\n root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${capitalize(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${capitalize(size)}`]\n };\n return composeClasses(slots, getInputAdornmentUtilityClass, classes);\n};\nconst InputAdornmentRoot = styled('div', {\n name: 'MuiInputAdornment',\n slot: 'Root',\n overridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'flex',\n height: '0.01em',\n // Fix IE11 flexbox alignment. To remove at some point.\n maxHeight: '2em',\n alignItems: 'center',\n whiteSpace: 'nowrap',\n color: (theme.vars || theme).palette.action.active\n}, ownerState.variant === 'filled' && {\n // Styles applied to the root element if `variant=\"filled\"`.\n [`&.${inputAdornmentClasses.positionStart}&:not(.${inputAdornmentClasses.hiddenLabel})`]: {\n marginTop: 16\n }\n}, ownerState.position === 'start' && {\n // Styles applied to the root element if `position=\"start\"`.\n marginRight: 8\n}, ownerState.position === 'end' && {\n // Styles applied to the root element if `position=\"end\"`.\n marginLeft: 8\n}, ownerState.disablePointerEvents === true && {\n // Styles applied to the root element if `disablePointerEvents={true}`.\n pointerEvents: 'none'\n}));\nconst InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputAdornment'\n });\n const {\n children,\n className,\n component = 'div',\n disablePointerEvents = false,\n disableTypography = false,\n position,\n variant: variantProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl() || {};\n let variant = variantProp;\n if (variantProp && muiFormControl.variant) {\n if (process.env.NODE_ENV !== 'production') {\n if (variantProp === muiFormControl.variant) {\n console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');\n }\n }\n }\n if (muiFormControl && !variant) {\n variant = muiFormControl.variant;\n }\n const ownerState = _extends({}, props, {\n hiddenLabel: muiFormControl.hiddenLabel,\n size: muiFormControl.size,\n disablePointerEvents,\n position,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(InputAdornmentRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/_jsx(Typography, {\n color: \"text.secondary\",\n children: children\n }) : /*#__PURE__*/_jsxs(React.Fragment, {\n children: [position === 'start' ? /* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : null, children]\n })\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputAdornment.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component, normally an `IconButton` or string.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Disable pointer events on the root.\n * This allows for the content of the adornment to focus the `input` on click.\n * @default false\n */\n disablePointerEvents: PropTypes.bool,\n /**\n * If children is a string then disable wrapping in a Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The position this adornment should appear relative to the `Input`.\n */\n position: PropTypes.oneOf(['end', 'start']).isRequired,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * Note: If you are using the `TextField` component or the `FormControl` component\n * you do not have to set this manually.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputAdornment;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardUtilityClass(slot) {\n return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardUtilityClass, classes);\n};\nconst CardRoot = styled(Paper, {\n name: 'MuiCard',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n overflow: 'hidden'\n };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCard'\n });\n const {\n className,\n raised = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n raised\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardRoot, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : undefined,\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the card will use raised styling.\n * @default false\n */\n raised: chainPropTypes(PropTypes.bool, props => {\n if (props.raised && props.variant === 'outlined') {\n return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n }\n return null;\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"onChange\", \"maxRows\", \"minRows\", \"style\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport { unstable_debounce as debounce, unstable_useForkRef as useForkRef, unstable_useEnhancedEffect as useEnhancedEffect, unstable_ownerWindow as ownerWindow } from '@mui/utils';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction getStyleValue(value) {\n return parseInt(value, 10) || 0;\n}\nconst styles = {\n shadow: {\n // Visibility needed to hide the extra text area on iPads\n visibility: 'hidden',\n // Remove from the content flow\n position: 'absolute',\n // Ignore the scrollbar width\n overflow: 'hidden',\n height: 0,\n top: 0,\n left: 0,\n // Create a new layer, increase the isolation of the computed values\n transform: 'translateZ(0)'\n }\n};\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflow;\n}\n\n/**\n *\n * Demos:\n *\n * - [Textarea Autosize](https://mui.com/base/react-textarea-autosize/)\n * - [Textarea Autosize](https://mui.com/material-ui/react-textarea-autosize/)\n *\n * API:\n *\n * - [TextareaAutosize API](https://mui.com/base/api/textarea-autosize/)\n */\nconst TextareaAutosize = /*#__PURE__*/React.forwardRef(function TextareaAutosize(props, ref) {\n const {\n onChange,\n maxRows,\n minRows = 1,\n style,\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef(null);\n const handleRef = useForkRef(ref, inputRef);\n const shadowRef = React.useRef(null);\n const renders = React.useRef(0);\n const [state, setState] = React.useState({\n outerHeightStyle: 0\n });\n const getUpdatedState = React.useCallback(() => {\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n const computedStyle = containerWindow.getComputedStyle(input);\n\n // If input's width is shrunk and it's not visible, don't sync height.\n if (computedStyle.width === '0px') {\n return {\n outerHeightStyle: 0\n };\n }\n const inputShallow = shadowRef.current;\n inputShallow.style.width = computedStyle.width;\n inputShallow.value = input.value || props.placeholder || 'x';\n if (inputShallow.value.slice(-1) === '\\n') {\n // Certain fonts which overflow the line height will cause the textarea\n // to report a different scrollHeight depending on whether the last line\n // is empty. Make it non-empty to avoid this issue.\n inputShallow.value += ' ';\n }\n const boxSizing = computedStyle.boxSizing;\n const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);\n const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);\n\n // The height of the inner content\n const innerHeight = inputShallow.scrollHeight;\n\n // Measure height of a textarea with a single row\n inputShallow.value = 'x';\n const singleRowHeight = inputShallow.scrollHeight;\n\n // The height of the outer content\n let outerHeight = innerHeight;\n if (minRows) {\n outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);\n }\n if (maxRows) {\n outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);\n }\n outerHeight = Math.max(outerHeight, singleRowHeight);\n\n // Take the box sizing into account for applying this value as a style.\n const outerHeightStyle = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);\n const overflow = Math.abs(outerHeight - innerHeight) <= 1;\n return {\n outerHeightStyle,\n overflow\n };\n }, [maxRows, minRows, props.placeholder]);\n const updateState = (prevState, newState) => {\n const {\n outerHeightStyle,\n overflow\n } = newState;\n // Need a large enough difference to update the height.\n // This prevents infinite rendering loop.\n if (renders.current < 20 && (outerHeightStyle > 0 && Math.abs((prevState.outerHeightStyle || 0) - outerHeightStyle) > 1 || prevState.overflow !== overflow)) {\n renders.current += 1;\n return {\n overflow,\n outerHeightStyle\n };\n }\n if (process.env.NODE_ENV !== 'production') {\n if (renders.current === 20) {\n console.error(['MUI: Too many re-renders. The layout is unstable.', 'TextareaAutosize limits the number of renders to prevent an infinite loop.'].join('\\n'));\n }\n }\n return prevState;\n };\n const syncHeight = React.useCallback(() => {\n const newState = getUpdatedState();\n if (isEmpty(newState)) {\n return;\n }\n setState(prevState => {\n return updateState(prevState, newState);\n });\n }, [getUpdatedState]);\n const syncHeightWithFlushSycn = () => {\n const newState = getUpdatedState();\n if (isEmpty(newState)) {\n return;\n }\n\n // In React 18, state updates in a ResizeObserver's callback are happening after the paint which causes flickering\n // when doing some visual updates in it. Using flushSync ensures that the dom will be painted after the states updates happen\n // Related issue - https://github.com/facebook/react/issues/24331\n ReactDOM.flushSync(() => {\n setState(prevState => {\n return updateState(prevState, newState);\n });\n });\n };\n React.useEffect(() => {\n const handleResize = debounce(() => {\n renders.current = 0;\n\n // If the TextareaAutosize component is replaced by Suspense with a fallback, the last\n // ResizeObserver's handler that runs because of the change in the layout is trying to\n // access a dom node that is no longer there (as the fallback component is being shown instead).\n // See https://github.com/mui/material-ui/issues/32640\n if (inputRef.current) {\n syncHeightWithFlushSycn();\n }\n });\n let resizeObserver;\n const input = inputRef.current;\n const containerWindow = ownerWindow(input);\n containerWindow.addEventListener('resize', handleResize);\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(handleResize);\n resizeObserver.observe(input);\n }\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener('resize', handleResize);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n });\n useEnhancedEffect(() => {\n syncHeight();\n });\n React.useEffect(() => {\n renders.current = 0;\n }, [value]);\n const handleChange = event => {\n renders.current = 0;\n if (!isControlled) {\n syncHeight();\n }\n if (onChange) {\n onChange(event);\n }\n };\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(\"textarea\", _extends({\n value: value,\n onChange: handleChange,\n ref: handleRef\n // Apply the rows prop to get a \"correct\" first SSR paint\n ,\n rows: minRows,\n style: _extends({\n height: state.outerHeightStyle,\n // Need a large enough difference to allow scrolling.\n // This prevents infinite rendering loop.\n overflow: state.overflow ? 'hidden' : undefined\n }, style)\n }, other)), /*#__PURE__*/_jsx(\"textarea\", {\n \"aria-hidden\": true,\n className: props.className,\n readOnly: true,\n ref: shadowRef,\n tabIndex: -1,\n style: _extends({}, styles.shadow, style, {\n padding: 0\n })\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? TextareaAutosize.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Maximum number of rows to display.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display.\n * @default 1\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n placeholder: PropTypes.string,\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * @ignore\n */\n value: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.number, PropTypes.string])\n} : void 0;\nexport default TextareaAutosize;","export default function formControlState({\n props,\n states,\n muiFormControl\n}) {\n return states.reduce((acc, state) => {\n acc[state] = props[state];\n if (muiFormControl) {\n if (typeof props[state] === 'undefined') {\n acc[state] = muiFormControl[state];\n }\n }\n return acc;\n }, {});\n}","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { Global } from '@emotion/react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction isEmpty(obj) {\n return obj === undefined || obj === null || Object.keys(obj).length === 0;\n}\nexport default function GlobalStyles(props) {\n const {\n styles,\n defaultTheme = {}\n } = props;\n const globalStyles = typeof styles === 'function' ? themeInput => styles(isEmpty(themeInput) ? defaultTheme : themeInput) : styles;\n return /*#__PURE__*/_jsx(Global, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes = {\n defaultTheme: PropTypes.object,\n styles: PropTypes.oneOfType([PropTypes.array, PropTypes.string, PropTypes.object, PropTypes.func])\n} : void 0;","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as MuiGlobalStyles } from '@mui/styled-engine';\nimport useTheme from '../useTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles({\n styles,\n themeId,\n defaultTheme = {}\n}) {\n const upperTheme = useTheme(defaultTheme);\n const globalStyles = typeof styles === 'function' ? styles(themeId ? upperTheme[themeId] || upperTheme : upperTheme) : styles;\n return /*#__PURE__*/_jsx(MuiGlobalStyles, {\n styles: globalStyles\n });\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit TypeScript types and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore\n */\n defaultTheme: PropTypes.object,\n /**\n * @ignore\n */\n styles: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.array, PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.string, PropTypes.bool]),\n /**\n * @ignore\n */\n themeId: PropTypes.string\n} : void 0;\nexport default GlobalStyles;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlobalStyles as SystemGlobalStyles } from '@mui/system';\nimport defaultTheme from '../styles/defaultTheme';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction GlobalStyles(props) {\n return /*#__PURE__*/_jsx(SystemGlobalStyles, _extends({}, props, {\n defaultTheme: defaultTheme\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? GlobalStyles.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The styles you want to apply globally.\n */\n styles: PropTypes.oneOfType([PropTypes.func, PropTypes.number, PropTypes.object, PropTypes.shape({\n __emotion_styles: PropTypes.any.isRequired\n }), PropTypes.string, PropTypes.bool])\n} : void 0;\nexport default GlobalStyles;","// Supports determination of isControlled().\n// Controlled input accepts its current value as a prop.\n//\n// @see https://facebook.github.io/react/docs/forms.html#controlled-components\n// @param value\n// @returns {boolean} true if string (including '') or number (including zero)\nexport function hasValue(value) {\n return value != null && !(Array.isArray(value) && value.length === 0);\n}\n\n// Determine if field is empty or filled.\n// Response determines if label is presented above field or as placeholder.\n//\n// @param obj\n// @param SSR\n// @returns {boolean} False when not present or empty string.\n// True when any number or string with length.\nexport function isFilled(obj, SSR = false) {\n return obj && (hasValue(obj.value) && obj.value !== '' || SSR && hasValue(obj.defaultValue) && obj.defaultValue !== '');\n}\n\n// Determine if an Input is adorned on start.\n// It's corresponding to the left with LTR.\n//\n// @param obj\n// @returns {boolean} False when no adornments.\n// True when adorned at the start.\nexport function isAdornedStart(obj) {\n return obj.startAdornment;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nconst _excluded = [\"aria-describedby\", \"autoComplete\", \"autoFocus\", \"className\", \"color\", \"components\", \"componentsProps\", \"defaultValue\", \"disabled\", \"disableInjectingGlobalStyles\", \"endAdornment\", \"error\", \"fullWidth\", \"id\", \"inputComponent\", \"inputProps\", \"inputRef\", \"margin\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onClick\", \"onFocus\", \"onKeyDown\", \"onKeyUp\", \"placeholder\", \"readOnly\", \"renderSuffix\", \"rows\", \"size\", \"slotProps\", \"slots\", \"startAdornment\", \"type\", \"value\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType, elementTypeAcceptingRef } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses, isHostComponent, TextareaAutosize } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport FormControlContext from '../FormControl/FormControlContext';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport useEnhancedEffect from '../utils/useEnhancedEffect';\nimport GlobalStyles from '../GlobalStyles';\nimport { isFilled } from './utils';\nimport inputBaseClasses, { getInputBaseUtilityClass } from './inputBaseClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nexport const rootOverridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.formControl && styles.formControl, ownerState.startAdornment && styles.adornedStart, ownerState.endAdornment && styles.adornedEnd, ownerState.error && styles.error, ownerState.size === 'small' && styles.sizeSmall, ownerState.multiline && styles.multiline, ownerState.color && styles[`color${capitalize(ownerState.color)}`], ownerState.fullWidth && styles.fullWidth, ownerState.hiddenLabel && styles.hiddenLabel];\n};\nexport const inputOverridesResolver = (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.input, ownerState.size === 'small' && styles.inputSizeSmall, ownerState.multiline && styles.inputMultiline, ownerState.type === 'search' && styles.inputTypeSearch, ownerState.startAdornment && styles.inputAdornedStart, ownerState.endAdornment && styles.inputAdornedEnd, ownerState.hiddenLabel && styles.inputHiddenLabel];\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disabled,\n error,\n endAdornment,\n focused,\n formControl,\n fullWidth,\n hiddenLabel,\n multiline,\n readOnly,\n size,\n startAdornment,\n type\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', fullWidth && 'fullWidth', focused && 'focused', formControl && 'formControl', size === 'small' && 'sizeSmall', multiline && 'multiline', startAdornment && 'adornedStart', endAdornment && 'adornedEnd', hiddenLabel && 'hiddenLabel', readOnly && 'readOnly'],\n input: ['input', disabled && 'disabled', type === 'search' && 'inputTypeSearch', multiline && 'inputMultiline', size === 'small' && 'inputSizeSmall', hiddenLabel && 'inputHiddenLabel', startAdornment && 'inputAdornedStart', endAdornment && 'inputAdornedEnd', readOnly && 'readOnly']\n };\n return composeClasses(slots, getInputBaseUtilityClass, classes);\n};\nexport const InputBaseRoot = styled('div', {\n name: 'MuiInputBase',\n slot: 'Root',\n overridesResolver: rootOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({}, theme.typography.body1, {\n color: (theme.vars || theme).palette.text.primary,\n lineHeight: '1.4375em',\n // 23px\n boxSizing: 'border-box',\n // Prevent padding issue with fullWidth.\n position: 'relative',\n cursor: 'text',\n display: 'inline-flex',\n alignItems: 'center',\n [`&.${inputBaseClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled,\n cursor: 'default'\n }\n}, ownerState.multiline && _extends({\n padding: '4px 0 5px'\n}, ownerState.size === 'small' && {\n paddingTop: 1\n}), ownerState.fullWidth && {\n width: '100%'\n}));\nexport const InputBaseComponent = styled('input', {\n name: 'MuiInputBase',\n slot: 'Input',\n overridesResolver: inputOverridesResolver\n})(({\n theme,\n ownerState\n}) => {\n const light = theme.palette.mode === 'light';\n const placeholder = _extends({\n color: 'currentColor'\n }, theme.vars ? {\n opacity: theme.vars.opacity.inputPlaceholder\n } : {\n opacity: light ? 0.42 : 0.5\n }, {\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.shorter\n })\n });\n const placeholderHidden = {\n opacity: '0 !important'\n };\n const placeholderVisible = theme.vars ? {\n opacity: theme.vars.opacity.inputPlaceholder\n } : {\n opacity: light ? 0.42 : 0.5\n };\n return _extends({\n font: 'inherit',\n letterSpacing: 'inherit',\n color: 'currentColor',\n padding: '4px 0 5px',\n border: 0,\n boxSizing: 'content-box',\n background: 'none',\n height: '1.4375em',\n // Reset 23pxthe native input line-height\n margin: 0,\n // Reset for Safari\n WebkitTapHighlightColor: 'transparent',\n display: 'block',\n // Make the flex item shrink with Firefox\n minWidth: 0,\n width: '100%',\n // Fix IE11 width issue\n animationName: 'mui-auto-fill-cancel',\n animationDuration: '10ms',\n '&::-webkit-input-placeholder': placeholder,\n '&::-moz-placeholder': placeholder,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholder,\n // IE11\n '&::-ms-input-placeholder': placeholder,\n // Edge\n '&:focus': {\n outline: 0\n },\n // Reset Firefox invalid required input style\n '&:invalid': {\n boxShadow: 'none'\n },\n '&::-webkit-search-decoration': {\n // Remove the padding when type=search.\n WebkitAppearance: 'none'\n },\n // Show and hide the placeholder logic\n [`label[data-shrink=false] + .${inputBaseClasses.formControl} &`]: {\n '&::-webkit-input-placeholder': placeholderHidden,\n '&::-moz-placeholder': placeholderHidden,\n // Firefox 19+\n '&:-ms-input-placeholder': placeholderHidden,\n // IE11\n '&::-ms-input-placeholder': placeholderHidden,\n // Edge\n '&:focus::-webkit-input-placeholder': placeholderVisible,\n '&:focus::-moz-placeholder': placeholderVisible,\n // Firefox 19+\n '&:focus:-ms-input-placeholder': placeholderVisible,\n // IE11\n '&:focus::-ms-input-placeholder': placeholderVisible // Edge\n },\n\n [`&.${inputBaseClasses.disabled}`]: {\n opacity: 1,\n // Reset iOS opacity\n WebkitTextFillColor: (theme.vars || theme).palette.text.disabled // Fix opacity Safari bug\n },\n\n '&:-webkit-autofill': {\n animationDuration: '5000s',\n animationName: 'mui-auto-fill'\n }\n }, ownerState.size === 'small' && {\n paddingTop: 1\n }, ownerState.multiline && {\n height: 'auto',\n resize: 'none',\n padding: 0,\n paddingTop: 0\n }, ownerState.type === 'search' && {\n // Improve type search style.\n MozAppearance: 'textfield'\n });\n});\nconst inputGlobalStyles = /*#__PURE__*/_jsx(GlobalStyles, {\n styles: {\n '@keyframes mui-auto-fill': {\n from: {\n display: 'block'\n }\n },\n '@keyframes mui-auto-fill-cancel': {\n from: {\n display: 'block'\n }\n }\n }\n});\n\n/**\n * `InputBase` contains as few styles as possible.\n * It aims to be a simple building block for creating an input.\n * It contains a load of style reset and some state logic.\n */\nconst InputBase = /*#__PURE__*/React.forwardRef(function InputBase(inProps, ref) {\n var _slotProps$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInputBase'\n });\n const {\n 'aria-describedby': ariaDescribedby,\n autoComplete,\n autoFocus,\n className,\n components = {},\n componentsProps = {},\n defaultValue,\n disabled,\n disableInjectingGlobalStyles,\n endAdornment,\n fullWidth = false,\n id,\n inputComponent = 'input',\n inputProps: inputPropsProp = {},\n inputRef: inputRefProp,\n maxRows,\n minRows,\n multiline = false,\n name,\n onBlur,\n onChange,\n onClick,\n onFocus,\n onKeyDown,\n onKeyUp,\n placeholder,\n readOnly,\n renderSuffix,\n rows,\n slotProps = {},\n slots = {},\n startAdornment,\n type = 'text',\n value: valueProp\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;\n const {\n current: isControlled\n } = React.useRef(value != null);\n const inputRef = React.useRef();\n const handleInputRefWarning = React.useCallback(instance => {\n if (process.env.NODE_ENV !== 'production') {\n if (instance && instance.nodeName !== 'INPUT' && !instance.focus) {\n console.error(['MUI: You have provided a `inputComponent` to the input component', 'that does not correctly handle the `ref` prop.', 'Make sure the `ref` prop is called with a HTMLInputElement.'].join('\\n'));\n }\n }\n }, []);\n const handleInputRef = useForkRef(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);\n const [focused, setFocused] = React.useState(false);\n const muiFormControl = useFormControl();\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (muiFormControl) {\n return muiFormControl.registerEffect();\n }\n return undefined;\n }, [muiFormControl]);\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'disabled', 'error', 'hiddenLabel', 'size', 'required', 'filled']\n });\n fcs.focused = muiFormControl ? muiFormControl.focused : focused;\n\n // The blur won't fire when the disabled state is set on a focused input.\n // We need to book keep the focused state manually.\n React.useEffect(() => {\n if (!muiFormControl && disabled && focused) {\n setFocused(false);\n if (onBlur) {\n onBlur();\n }\n }\n }, [muiFormControl, disabled, focused, onBlur]);\n const onFilled = muiFormControl && muiFormControl.onFilled;\n const onEmpty = muiFormControl && muiFormControl.onEmpty;\n const checkDirty = React.useCallback(obj => {\n if (isFilled(obj)) {\n if (onFilled) {\n onFilled();\n }\n } else if (onEmpty) {\n onEmpty();\n }\n }, [onFilled, onEmpty]);\n useEnhancedEffect(() => {\n if (isControlled) {\n checkDirty({\n value\n });\n }\n }, [value, checkDirty, isControlled]);\n const handleFocus = event => {\n // Fix a bug with IE11 where the focus/blur events are triggered\n // while the component is disabled.\n if (fcs.disabled) {\n event.stopPropagation();\n return;\n }\n if (onFocus) {\n onFocus(event);\n }\n if (inputPropsProp.onFocus) {\n inputPropsProp.onFocus(event);\n }\n if (muiFormControl && muiFormControl.onFocus) {\n muiFormControl.onFocus(event);\n } else {\n setFocused(true);\n }\n };\n const handleBlur = event => {\n if (onBlur) {\n onBlur(event);\n }\n if (inputPropsProp.onBlur) {\n inputPropsProp.onBlur(event);\n }\n if (muiFormControl && muiFormControl.onBlur) {\n muiFormControl.onBlur(event);\n } else {\n setFocused(false);\n }\n };\n const handleChange = (event, ...args) => {\n if (!isControlled) {\n const element = event.target || inputRef.current;\n if (element == null) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: Expected valid input target. Did you use a custom \\`inputComponent\\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : _formatMuiErrorMessage(1));\n }\n checkDirty({\n value: element.value\n });\n }\n if (inputPropsProp.onChange) {\n inputPropsProp.onChange(event, ...args);\n }\n\n // Perform in the willUpdate\n if (onChange) {\n onChange(event, ...args);\n }\n };\n\n // Check the input state on mount, in case it was filled by the user\n // or auto filled by the browser before the hydration (for SSR).\n React.useEffect(() => {\n checkDirty(inputRef.current);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const handleClick = event => {\n if (inputRef.current && event.currentTarget === event.target) {\n inputRef.current.focus();\n }\n if (onClick) {\n onClick(event);\n }\n };\n let InputComponent = inputComponent;\n let inputProps = inputPropsProp;\n if (multiline && InputComponent === 'input') {\n if (rows) {\n if (process.env.NODE_ENV !== 'production') {\n if (minRows || maxRows) {\n console.warn('MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.');\n }\n }\n inputProps = _extends({\n type: undefined,\n minRows: rows,\n maxRows: rows\n }, inputProps);\n } else {\n inputProps = _extends({\n type: undefined,\n maxRows,\n minRows\n }, inputProps);\n }\n InputComponent = TextareaAutosize;\n }\n const handleAutoFill = event => {\n // Provide a fake value as Chrome might not let you access it for security reasons.\n checkDirty(event.animationName === 'mui-auto-fill-cancel' ? inputRef.current : {\n value: 'x'\n });\n };\n React.useEffect(() => {\n if (muiFormControl) {\n muiFormControl.setAdornedStart(Boolean(startAdornment));\n }\n }, [muiFormControl, startAdornment]);\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n disabled: fcs.disabled,\n endAdornment,\n error: fcs.error,\n focused: fcs.focused,\n formControl: muiFormControl,\n fullWidth,\n hiddenLabel: fcs.hiddenLabel,\n multiline,\n size: fcs.size,\n startAdornment,\n type\n });\n const classes = useUtilityClasses(ownerState);\n const Root = slots.root || components.Root || InputBaseRoot;\n const rootProps = slotProps.root || componentsProps.root || {};\n const Input = slots.input || components.Input || InputBaseComponent;\n inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [!disableInjectingGlobalStyles && inputGlobalStyles, /*#__PURE__*/_jsxs(Root, _extends({}, rootProps, !isHostComponent(Root) && {\n ownerState: _extends({}, ownerState, rootProps.ownerState)\n }, {\n ref: ref,\n onClick: handleClick\n }, other, {\n className: clsx(classes.root, rootProps.className, className, readOnly && 'MuiInputBase-readOnly'),\n children: [startAdornment, /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: null,\n children: /*#__PURE__*/_jsx(Input, _extends({\n ownerState: ownerState,\n \"aria-invalid\": fcs.error,\n \"aria-describedby\": ariaDescribedby,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n disabled: fcs.disabled,\n id: id,\n onAnimationStart: handleAutoFill,\n name: name,\n placeholder: placeholder,\n readOnly: readOnly,\n required: fcs.required,\n rows: rows,\n value: value,\n onKeyDown: onKeyDown,\n onKeyUp: onKeyUp,\n type: type\n }, inputProps, !isHostComponent(Input) && {\n as: InputComponent,\n ownerState: _extends({}, ownerState, inputProps.ownerState)\n }, {\n ref: handleInputRef,\n className: clsx(classes.input, inputProps.className, readOnly && 'MuiInputBase-readOnly'),\n onBlur: handleBlur,\n onChange: handleChange,\n onFocus: handleFocus\n }))\n }), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {\n startAdornment\n })) : null]\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? InputBase.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * @ignore\n */\n 'aria-describedby': PropTypes.string,\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.\n * This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.\n * @default false\n */\n disableInjectingGlobalStyles: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: elementTypeAcceptingRef,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the `input` is blurred.\n *\n * Notice that the first argument (event) might be undefined.\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onClick: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the `input` doesn't satisfy its constraints.\n */\n onInvalid: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * @ignore\n */\n onKeyUp: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * @ignore\n */\n renderSuffix: PropTypes.func,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The size of the component.\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nexport default InputBase;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType, deepmerge } from '@mui/utils';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport inputClasses, { getInputUtilityClass } from './inputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableUnderline\n } = ownerState;\n const slots = {\n root: ['root', !disableUnderline && 'underline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInput',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n }\n})(({\n theme,\n ownerState\n}) => {\n const light = theme.palette.mode === 'light';\n let bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n if (theme.vars) {\n bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;\n }\n return _extends({\n position: 'relative'\n }, ownerState.formControl && {\n 'label + &': {\n marginTop: 16\n }\n }, !ownerState.disableUnderline && {\n '&:after': {\n borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&.${inputClasses.focused}:after`]: {\n // translateX(0) is a workaround for Safari transform scale bug\n // See https://github.com/mui/material-ui/issues/31766\n transform: 'scaleX(1) translateX(0)'\n },\n [`&.${inputClasses.error}`]: {\n '&:before, &:after': {\n borderBottomColor: (theme.vars || theme).palette.error.main\n }\n },\n '&:before': {\n borderBottom: `1px solid ${bottomLineColor}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&:hover:not(.${inputClasses.disabled}, .${inputClasses.error}):before`]: {\n borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n borderBottom: `1px solid ${bottomLineColor}`\n }\n },\n [`&.${inputClasses.disabled}:before`]: {\n borderBottomStyle: 'dotted'\n }\n });\n});\nconst InputInput = styled(InputBaseInput, {\n name: 'MuiInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})({});\nconst Input = /*#__PURE__*/React.forwardRef(function Input(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiInput'\n });\n const {\n disableUnderline,\n components = {},\n componentsProps: componentsPropsProp,\n fullWidth = false,\n inputComponent = 'input',\n multiline = false,\n slotProps,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n const ownerState = {\n disableUnderline\n };\n const inputComponentsProps = {\n root: {\n ownerState\n }\n };\n const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n slotProps: componentsProps,\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Input.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the `input` will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nInput.muiName = 'Input';\nexport default Input;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableUnderline\", \"components\", \"componentsProps\", \"fullWidth\", \"hiddenLabel\", \"inputComponent\", \"multiline\", \"slotProps\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport { refType, deepmerge } from '@mui/utils';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport InputBase from '../InputBase';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport filledInputClasses, { getFilledInputUtilityClass } from './filledInputClasses';\nimport { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disableUnderline\n } = ownerState;\n const slots = {\n root: ['root', !disableUnderline && 'underline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst FilledInputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiFilledInput',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [...inputBaseRootOverridesResolver(props, styles), !ownerState.disableUnderline && styles.underline];\n }\n})(({\n theme,\n ownerState\n}) => {\n var _palette;\n const light = theme.palette.mode === 'light';\n const bottomLineColor = light ? 'rgba(0, 0, 0, 0.42)' : 'rgba(255, 255, 255, 0.7)';\n const backgroundColor = light ? 'rgba(0, 0, 0, 0.06)' : 'rgba(255, 255, 255, 0.09)';\n const hoverBackground = light ? 'rgba(0, 0, 0, 0.09)' : 'rgba(255, 255, 255, 0.13)';\n const disabledBackground = light ? 'rgba(0, 0, 0, 0.12)' : 'rgba(255, 255, 255, 0.12)';\n return _extends({\n position: 'relative',\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,\n borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,\n borderTopRightRadius: (theme.vars || theme).shape.borderRadius,\n transition: theme.transitions.create('background-color', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n '&:hover': {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n }\n },\n [`&.${filledInputClasses.focused}`]: {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor\n },\n [`&.${filledInputClasses.disabled}`]: {\n backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground\n }\n }, !ownerState.disableUnderline && {\n '&:after': {\n borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || 'primary']) == null ? void 0 : _palette.main}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\"',\n position: 'absolute',\n right: 0,\n transform: 'scaleX(0)',\n transition: theme.transitions.create('transform', {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&.${filledInputClasses.focused}:after`]: {\n // translateX(0) is a workaround for Safari transform scale bug\n // See https://github.com/mui/material-ui/issues/31766\n transform: 'scaleX(1) translateX(0)'\n },\n [`&.${filledInputClasses.error}`]: {\n '&:before, &:after': {\n borderBottomColor: (theme.vars || theme).palette.error.main\n }\n },\n '&:before': {\n borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,\n left: 0,\n bottom: 0,\n // Doing the other way around crash on IE11 \"''\" https://github.com/cssinjs/jss/issues/242\n content: '\"\\\\00a0\"',\n position: 'absolute',\n right: 0,\n transition: theme.transitions.create('border-bottom-color', {\n duration: theme.transitions.duration.shorter\n }),\n pointerEvents: 'none' // Transparent to the hover style.\n },\n\n [`&:hover:not(.${filledInputClasses.disabled}, .${filledInputClasses.error}):before`]: {\n borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`\n },\n [`&.${filledInputClasses.disabled}:before`]: {\n borderBottomStyle: 'dotted'\n }\n }, ownerState.startAdornment && {\n paddingLeft: 12\n }, ownerState.endAdornment && {\n paddingRight: 12\n }, ownerState.multiline && _extends({\n padding: '25px 12px 8px'\n }, ownerState.size === 'small' && {\n paddingTop: 21,\n paddingBottom: 4\n }, ownerState.hiddenLabel && {\n paddingTop: 16,\n paddingBottom: 17\n }));\n});\nconst FilledInputInput = styled(InputBaseInput, {\n name: 'MuiFilledInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n paddingTop: 25,\n paddingRight: 12,\n paddingBottom: 8,\n paddingLeft: 12\n}, !theme.vars && {\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n caretColor: theme.palette.mode === 'light' ? null : '#fff',\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n }\n}, theme.vars && {\n '&:-webkit-autofill': {\n borderTopLeftRadius: 'inherit',\n borderTopRightRadius: 'inherit'\n },\n [theme.getColorSchemeSelector('dark')]: {\n '&:-webkit-autofill': {\n WebkitBoxShadow: '0 0 0 100px #266798 inset',\n WebkitTextFillColor: '#fff',\n caretColor: '#fff'\n }\n }\n}, ownerState.size === 'small' && {\n paddingTop: 21,\n paddingBottom: 4\n}, ownerState.hiddenLabel && {\n paddingTop: 16,\n paddingBottom: 17\n}, ownerState.multiline && {\n paddingTop: 0,\n paddingBottom: 0,\n paddingLeft: 0,\n paddingRight: 0\n}, ownerState.startAdornment && {\n paddingLeft: 0\n}, ownerState.endAdornment && {\n paddingRight: 0\n}, ownerState.hiddenLabel && ownerState.size === 'small' && {\n paddingTop: 8,\n paddingBottom: 9\n}));\nconst FilledInput = /*#__PURE__*/React.forwardRef(function FilledInput(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFilledInput'\n });\n const {\n components = {},\n componentsProps: componentsPropsProp,\n fullWidth = false,\n // declare here to prevent spreading to DOM\n inputComponent = 'input',\n multiline = false,\n slotProps,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n fullWidth,\n inputComponent,\n multiline,\n type\n });\n const classes = useUtilityClasses(props);\n const filledInputComponentsProps = {\n root: {\n ownerState\n },\n input: {\n ownerState\n }\n };\n const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, filledInputComponentsProps) : filledInputComponentsProps;\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n componentsProps: componentsProps,\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FilledInput.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the input will not have an underline.\n */\n disableUnderline: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n input: PropTypes.object,\n root: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nFilledInput.muiName = 'Input';\nexport default FilledInput;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"classes\", \"className\", \"label\", \"notched\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport styled from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst NotchedOutlineRoot = styled('fieldset')({\n textAlign: 'left',\n position: 'absolute',\n bottom: 0,\n right: 0,\n top: -5,\n left: 0,\n margin: 0,\n padding: '0 8px',\n pointerEvents: 'none',\n borderRadius: 'inherit',\n borderStyle: 'solid',\n borderWidth: 1,\n overflow: 'hidden',\n minWidth: '0%'\n});\nconst NotchedOutlineLegend = styled('legend')(({\n ownerState,\n theme\n}) => _extends({\n float: 'unset',\n // Fix conflict with bootstrap\n width: 'auto',\n // Fix conflict with bootstrap\n overflow: 'hidden'\n}, !ownerState.withLabel && {\n padding: 0,\n lineHeight: '11px',\n // sync with `height` in `legend` styles\n transition: theme.transitions.create('width', {\n duration: 150,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.withLabel && _extends({\n display: 'block',\n // Fix conflict with normalize.css and sanitize.css\n padding: 0,\n height: 11,\n // sync with `lineHeight` in `legend` styles\n fontSize: '0.75em',\n visibility: 'hidden',\n maxWidth: 0.01,\n transition: theme.transitions.create('max-width', {\n duration: 50,\n easing: theme.transitions.easing.easeOut\n }),\n whiteSpace: 'nowrap',\n '& > span': {\n paddingLeft: 5,\n paddingRight: 5,\n display: 'inline-block',\n opacity: 0,\n visibility: 'visible'\n }\n}, ownerState.notched && {\n maxWidth: '100%',\n transition: theme.transitions.create('max-width', {\n duration: 100,\n easing: theme.transitions.easing.easeOut,\n delay: 50\n })\n})));\n\n/**\n * @ignore - internal component.\n */\nexport default function NotchedOutline(props) {\n const {\n className,\n label,\n notched\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const withLabel = label != null && label !== '';\n const ownerState = _extends({}, props, {\n notched,\n withLabel\n });\n return /*#__PURE__*/_jsx(NotchedOutlineRoot, _extends({\n \"aria-hidden\": true,\n className: className,\n ownerState: ownerState\n }, other, {\n children: /*#__PURE__*/_jsx(NotchedOutlineLegend, {\n ownerState: ownerState,\n children: withLabel ? /*#__PURE__*/_jsx(\"span\", {\n children: label\n }) : // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n }))\n })\n }));\n}\nprocess.env.NODE_ENV !== \"production\" ? NotchedOutline.propTypes = {\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The label.\n */\n label: PropTypes.node,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool.isRequired,\n /**\n * @ignore\n */\n style: PropTypes.object\n} : void 0;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"components\", \"fullWidth\", \"inputComponent\", \"label\", \"multiline\", \"notched\", \"slots\", \"type\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport NotchedOutline from './NotchedOutline';\nimport useFormControl from '../FormControl/useFormControl';\nimport formControlState from '../FormControl/formControlState';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport outlinedInputClasses, { getOutlinedInputUtilityClass } from './outlinedInputClasses';\nimport InputBase, { rootOverridesResolver as inputBaseRootOverridesResolver, inputOverridesResolver as inputBaseInputOverridesResolver, InputBaseRoot, InputBaseComponent as InputBaseInput } from '../InputBase/InputBase';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n notchedOutline: ['notchedOutline'],\n input: ['input']\n };\n const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\nconst OutlinedInputRoot = styled(InputBaseRoot, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiOutlinedInput',\n slot: 'Root',\n overridesResolver: inputBaseRootOverridesResolver\n})(({\n theme,\n ownerState\n}) => {\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return _extends({\n position: 'relative',\n borderRadius: (theme.vars || theme).shape.borderRadius,\n [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.text.primary\n },\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n [`&:hover .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n }\n },\n [`&.${outlinedInputClasses.focused} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette[ownerState.color].main,\n borderWidth: 2\n },\n [`&.${outlinedInputClasses.error} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.error.main\n },\n [`&.${outlinedInputClasses.disabled} .${outlinedInputClasses.notchedOutline}`]: {\n borderColor: (theme.vars || theme).palette.action.disabled\n }\n }, ownerState.startAdornment && {\n paddingLeft: 14\n }, ownerState.endAdornment && {\n paddingRight: 14\n }, ownerState.multiline && _extends({\n padding: '16.5px 14px'\n }, ownerState.size === 'small' && {\n padding: '8.5px 14px'\n }));\n});\nconst NotchedOutlineRoot = styled(NotchedOutline, {\n name: 'MuiOutlinedInput',\n slot: 'NotchedOutline',\n overridesResolver: (props, styles) => styles.notchedOutline\n})(({\n theme\n}) => {\n const borderColor = theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.23)' : 'rgba(255, 255, 255, 0.23)';\n return {\n borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor\n };\n});\nconst OutlinedInputInput = styled(InputBaseInput, {\n name: 'MuiOutlinedInput',\n slot: 'Input',\n overridesResolver: inputBaseInputOverridesResolver\n})(({\n theme,\n ownerState\n}) => _extends({\n padding: '16.5px 14px'\n}, !theme.vars && {\n '&:-webkit-autofill': {\n WebkitBoxShadow: theme.palette.mode === 'light' ? null : '0 0 0 100px #266798 inset',\n WebkitTextFillColor: theme.palette.mode === 'light' ? null : '#fff',\n caretColor: theme.palette.mode === 'light' ? null : '#fff',\n borderRadius: 'inherit'\n }\n}, theme.vars && {\n '&:-webkit-autofill': {\n borderRadius: 'inherit'\n },\n [theme.getColorSchemeSelector('dark')]: {\n '&:-webkit-autofill': {\n WebkitBoxShadow: '0 0 0 100px #266798 inset',\n WebkitTextFillColor: '#fff',\n caretColor: '#fff'\n }\n }\n}, ownerState.size === 'small' && {\n padding: '8.5px 14px'\n}, ownerState.multiline && {\n padding: 0\n}, ownerState.startAdornment && {\n paddingLeft: 0\n}, ownerState.endAdornment && {\n paddingRight: 0\n}));\nconst OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inProps, ref) {\n var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiOutlinedInput'\n });\n const {\n components = {},\n fullWidth = false,\n inputComponent = 'input',\n label,\n multiline = false,\n notched,\n slots = {},\n type = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const classes = useUtilityClasses(props);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['required']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n disabled: fcs.disabled,\n error: fcs.error,\n focused: fcs.focused,\n formControl: muiFormControl,\n fullWidth,\n hiddenLabel: fcs.hiddenLabel,\n multiline,\n size: fcs.size,\n type\n });\n const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;\n const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;\n return /*#__PURE__*/_jsx(InputBase, _extends({\n slots: {\n root: RootSlot,\n input: InputSlot\n },\n renderSuffix: state => /*#__PURE__*/_jsx(NotchedOutlineRoot, {\n ownerState: ownerState,\n className: classes.notchedOutline,\n label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/_jsxs(React.Fragment, {\n children: [label, \"\\u2009\", '*']\n })) : label,\n notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)\n }),\n fullWidth: fullWidth,\n inputComponent: inputComponent,\n multiline: multiline,\n ref: ref,\n type: type\n }, other, {\n classes: _extends({}, classes, {\n notchedOutline: null\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? OutlinedInput.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n */\n autoFocus: PropTypes.bool,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n Input: PropTypes.elementType,\n Root: PropTypes.elementType\n }),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n disabled: PropTypes.bool,\n /**\n * End `InputAdornment` for this component.\n */\n endAdornment: PropTypes.node,\n /**\n * If `true`, the `input` will indicate an error.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The id of the `input` element.\n */\n id: PropTypes.string,\n /**\n * The component used for the `input` element.\n * Either a string to use a HTML element or a component.\n * @default 'input'\n */\n inputComponent: PropTypes.elementType,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * @default {}\n */\n inputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label of the `input`. It is only used for layout. The actual labelling\n * is handled by `InputLabel`.\n */\n label: PropTypes.node,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n * The prop defaults to the value (`'none'`) inherited from the parent FormControl component.\n */\n margin: PropTypes.oneOf(['dense', 'none']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * If `true`, the outline is notched to accommodate the label.\n */\n notched: PropTypes.bool,\n /**\n * Callback fired when the value is changed.\n *\n * @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * It prevents the user from changing the value of the field\n * (not from interacting with the field).\n */\n readOnly: PropTypes.bool,\n /**\n * If `true`, the `input` element is required.\n * The prop defaults to the value (`false`) inherited from the parent FormControl component.\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n input: PropTypes.elementType,\n root: PropTypes.elementType\n }),\n /**\n * Start `InputAdornment` for this component.\n */\n startAdornment: PropTypes.node,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n * @default 'text'\n */\n type: PropTypes.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any\n} : void 0;\nOutlinedInput.muiName = 'Input';\nexport default OutlinedInput;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiFormLabel', slot);\n}\nconst formLabelClasses = generateUtilityClasses('MuiFormLabel', ['root', 'colorSecondary', 'focused', 'disabled', 'error', 'filled', 'required', 'asterisk']);\nexport default formLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"required\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport formLabelClasses, { getFormLabelUtilityClasses } from './formLabelClasses';\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n focused,\n disabled,\n error,\n filled,\n required\n } = ownerState;\n const slots = {\n root: ['root', `color${capitalize(color)}`, disabled && 'disabled', error && 'error', filled && 'filled', focused && 'focused', required && 'required'],\n asterisk: ['asterisk', error && 'error']\n };\n return composeClasses(slots, getFormLabelUtilityClasses, classes);\n};\nexport const FormLabelRoot = styled('label', {\n name: 'MuiFormLabel',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, ownerState.color === 'secondary' && styles.colorSecondary, ownerState.filled && styles.filled);\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.body1, {\n lineHeight: '1.4375em',\n padding: 0,\n position: 'relative',\n [`&.${formLabelClasses.focused}`]: {\n color: (theme.vars || theme).palette[ownerState.color].main\n },\n [`&.${formLabelClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst AsteriskComponent = styled('span', {\n name: 'MuiFormLabel',\n slot: 'Asterisk',\n overridesResolver: (props, styles) => styles.asterisk\n})(({\n theme\n}) => ({\n [`&.${formLabelClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}));\nconst FormLabel = /*#__PURE__*/React.forwardRef(function FormLabel(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormLabel'\n });\n const {\n children,\n className,\n component = 'label'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['color', 'required', 'focused', 'disabled', 'error', 'filled']\n });\n const ownerState = _extends({}, props, {\n color: fcs.color || 'primary',\n component,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(FormLabelRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [children, fcs.required && /*#__PURE__*/_jsxs(AsteriskComponent, {\n ownerState: ownerState,\n \"aria-hidden\": true,\n className: classes.asterisk,\n children: [\"\\u2009\", '*']\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the label should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the input of this label is focused (used by `FormGroup` components).\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default FormLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getInputLabelUtilityClasses(slot) {\n return generateUtilityClass('MuiInputLabel', slot);\n}\nconst inputLabelClasses = generateUtilityClasses('MuiInputLabel', ['root', 'focused', 'disabled', 'error', 'required', 'asterisk', 'formControl', 'sizeSmall', 'shrink', 'animated', 'standard', 'filled', 'outlined']);\nexport default inputLabelClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"disableAnimation\", \"margin\", \"shrink\", \"variant\", \"className\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport clsx from 'clsx';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport FormLabel, { formLabelClasses } from '../FormLabel';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { getInputLabelUtilityClasses } from './inputLabelClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n formControl,\n size,\n shrink,\n disableAnimation,\n variant,\n required\n } = ownerState;\n const slots = {\n root: ['root', formControl && 'formControl', !disableAnimation && 'animated', shrink && 'shrink', size === 'small' && 'sizeSmall', variant],\n asterisk: [required && 'asterisk']\n };\n const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);\n return _extends({}, classes, composedClasses);\n};\nconst InputLabelRoot = styled(FormLabel, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiInputLabel',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${formLabelClasses.asterisk}`]: styles.asterisk\n }, styles.root, ownerState.formControl && styles.formControl, ownerState.size === 'small' && styles.sizeSmall, ownerState.shrink && styles.shrink, !ownerState.disableAnimation && styles.animated, styles[ownerState.variant]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n display: 'block',\n transformOrigin: 'top left',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n maxWidth: '100%'\n}, ownerState.formControl && {\n position: 'absolute',\n left: 0,\n top: 0,\n // slight alteration to spec spacing to match visual spec result\n transform: 'translate(0, 20px) scale(1)'\n}, ownerState.size === 'small' && {\n // Compensation for the `Input.inputSizeSmall` style.\n transform: 'translate(0, 17px) scale(1)'\n}, ownerState.shrink && {\n transform: 'translate(0, -1.5px) scale(0.75)',\n transformOrigin: 'top left',\n maxWidth: '133%'\n}, !ownerState.disableAnimation && {\n transition: theme.transitions.create(['color', 'transform', 'max-width'], {\n duration: theme.transitions.duration.shorter,\n easing: theme.transitions.easing.easeOut\n })\n}, ownerState.variant === 'filled' && _extends({\n // Chrome's autofill feature gives the input field a yellow background.\n // Since the input field is behind the label in the HTML tree,\n // the input field is drawn last and hides the label with an opaque background color.\n // zIndex: 1 will raise the label above opaque background-colors of input.\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(12px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 13px) scale(1)'\n}, ownerState.shrink && _extends({\n userSelect: 'none',\n pointerEvents: 'auto',\n transform: 'translate(12px, 7px) scale(0.75)',\n maxWidth: 'calc(133% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(12px, 4px) scale(0.75)'\n})), ownerState.variant === 'outlined' && _extends({\n // see comment above on filled.zIndex\n zIndex: 1,\n pointerEvents: 'none',\n transform: 'translate(14px, 16px) scale(1)',\n maxWidth: 'calc(100% - 24px)'\n}, ownerState.size === 'small' && {\n transform: 'translate(14px, 9px) scale(1)'\n}, ownerState.shrink && {\n userSelect: 'none',\n pointerEvents: 'auto',\n // Theoretically, we should have (8+5)*2/0.75 = 34px\n // but it feels a better when it bleeds a bit on the left, so 32px.\n maxWidth: 'calc(133% - 32px)',\n transform: 'translate(14px, -9px) scale(0.75)'\n})));\nconst InputLabel = /*#__PURE__*/React.forwardRef(function InputLabel(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiInputLabel',\n props: inProps\n });\n const {\n disableAnimation = false,\n shrink: shrinkProp,\n className\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n let shrink = shrinkProp;\n if (typeof shrink === 'undefined' && muiFormControl) {\n shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;\n }\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['size', 'variant', 'required']\n });\n const ownerState = _extends({}, props, {\n disableAnimation,\n formControl: muiFormControl,\n shrink,\n size: fcs.size,\n variant: fcs.variant,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(InputLabelRoot, _extends({\n \"data-shrink\": shrink,\n ownerState: ownerState,\n ref: ref,\n className: clsx(classes.root, className)\n }, other, {\n classes: classes\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? InputLabel.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'primary', 'secondary', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the transition animation is disabled.\n * @default false\n */\n disableAnimation: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the `input` of this label is focused.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * if `true`, the label will indicate that the `input` is required.\n */\n required: PropTypes.bool,\n /**\n * If `true`, the label is shrunk.\n */\n shrink: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'normal'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['normal', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default InputLabel;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormControlUtilityClasses(slot) {\n return generateUtilityClass('MuiFormControl', slot);\n}\nconst formControlClasses = generateUtilityClasses('MuiFormControl', ['root', 'marginNone', 'marginNormal', 'marginDense', 'fullWidth', 'disabled']);\nexport default formControlClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"component\", \"disabled\", \"error\", \"focused\", \"fullWidth\", \"hiddenLabel\", \"margin\", \"required\", \"size\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { isFilled, isAdornedStart } from '../InputBase/utils';\nimport capitalize from '../utils/capitalize';\nimport isMuiElement from '../utils/isMuiElement';\nimport FormControlContext from './FormControlContext';\nimport { getFormControlUtilityClasses } from './formControlClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n margin,\n fullWidth\n } = ownerState;\n const slots = {\n root: ['root', margin !== 'none' && `margin${capitalize(margin)}`, fullWidth && 'fullWidth']\n };\n return composeClasses(slots, getFormControlUtilityClasses, classes);\n};\nconst FormControlRoot = styled('div', {\n name: 'MuiFormControl',\n slot: 'Root',\n overridesResolver: ({\n ownerState\n }, styles) => {\n return _extends({}, styles.root, styles[`margin${capitalize(ownerState.margin)}`], ownerState.fullWidth && styles.fullWidth);\n }\n})(({\n ownerState\n}) => _extends({\n display: 'inline-flex',\n flexDirection: 'column',\n position: 'relative',\n // Reset fieldset default style.\n minWidth: 0,\n padding: 0,\n margin: 0,\n border: 0,\n verticalAlign: 'top'\n}, ownerState.margin === 'normal' && {\n marginTop: 16,\n marginBottom: 8\n}, ownerState.margin === 'dense' && {\n marginTop: 8,\n marginBottom: 4\n}, ownerState.fullWidth && {\n width: '100%'\n}));\n\n/**\n * Provides context such as filled/focused/error/required for form inputs.\n * Relying on the context provides high flexibility and ensures that the state always stays\n * consistent across the children of the `FormControl`.\n * This context is used by the following components:\n *\n * - FormLabel\n * - FormHelperText\n * - Input\n * - InputLabel\n *\n * You can find one composition example below and more going to [the demos](/material-ui/react-text-field/#components).\n *\n * ```jsx\n * <FormControl>\n * <InputLabel htmlFor=\"my-input\">Email address</InputLabel>\n * <Input id=\"my-input\" aria-describedby=\"my-helper-text\" />\n * <FormHelperText id=\"my-helper-text\">We'll never share your email.</FormHelperText>\n * </FormControl>\n * ```\n *\n * ⚠️ Only one `InputBase` can be used within a FormControl because it creates visual inconsistencies.\n * For instance, only one input can be focused at the same time, the state shouldn't be shared.\n */\nconst FormControl = /*#__PURE__*/React.forwardRef(function FormControl(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormControl'\n });\n const {\n children,\n className,\n color = 'primary',\n component = 'div',\n disabled = false,\n error = false,\n focused: visuallyFocused,\n fullWidth = false,\n hiddenLabel = false,\n margin = 'none',\n required = false,\n size = 'medium',\n variant = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disabled,\n error,\n fullWidth,\n hiddenLabel,\n margin,\n required,\n size,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const [adornedStart, setAdornedStart] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialAdornedStart = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n const input = isMuiElement(child, ['Select']) ? child.props.input : child;\n if (input && isAdornedStart(input.props)) {\n initialAdornedStart = true;\n }\n });\n }\n return initialAdornedStart;\n });\n const [filled, setFilled] = React.useState(() => {\n // We need to iterate through the children and find the Input in order\n // to fully support server-side rendering.\n let initialFilled = false;\n if (children) {\n React.Children.forEach(children, child => {\n if (!isMuiElement(child, ['Input', 'Select'])) {\n return;\n }\n if (isFilled(child.props, true)) {\n initialFilled = true;\n }\n });\n }\n return initialFilled;\n });\n const [focusedState, setFocused] = React.useState(false);\n if (disabled && focusedState) {\n setFocused(false);\n }\n const focused = visuallyFocused !== undefined && !disabled ? visuallyFocused : focusedState;\n let registerEffect;\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const registeredInput = React.useRef(false);\n registerEffect = () => {\n if (registeredInput.current) {\n console.error(['MUI: There are multiple `InputBase` components inside a FormControl.', 'This creates visual inconsistencies, only use one `InputBase`.'].join('\\n'));\n }\n registeredInput.current = true;\n return () => {\n registeredInput.current = false;\n };\n };\n }\n const childContext = React.useMemo(() => {\n return {\n adornedStart,\n setAdornedStart,\n color,\n disabled,\n error,\n filled,\n focused,\n fullWidth,\n hiddenLabel,\n size,\n onBlur: () => {\n setFocused(false);\n },\n onEmpty: () => {\n setFilled(false);\n },\n onFilled: () => {\n setFilled(true);\n },\n onFocus: () => {\n setFocused(true);\n },\n registerEffect,\n required,\n variant\n };\n }, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size, variant]);\n return /*#__PURE__*/_jsx(FormControlContext.Provider, {\n value: childContext,\n children: /*#__PURE__*/_jsx(FormControlRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children\n }))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? FormControl.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the label, input and helper text should be displayed in a disabled state.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * If `true`, the component is displayed in focused state.\n */\n focused: PropTypes.bool,\n /**\n * If `true`, the component will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * If `true`, the label is hidden.\n * This is used to increase density for a `FilledInput`.\n * Be sure to add `aria-label` to the `input` element.\n * @default false\n */\n hiddenLabel: PropTypes.bool,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * If `true`, the label will indicate that the `input` is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default FormControl;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getFormHelperTextUtilityClasses(slot) {\n return generateUtilityClass('MuiFormHelperText', slot);\n}\nconst formHelperTextClasses = generateUtilityClasses('MuiFormHelperText', ['root', 'error', 'disabled', 'sizeSmall', 'sizeMedium', 'contained', 'focused', 'filled', 'required']);\nexport default formHelperTextClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _span;\nconst _excluded = [\"children\", \"className\", \"component\", \"disabled\", \"error\", \"filled\", \"focused\", \"margin\", \"required\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport styled from '../styles/styled';\nimport capitalize from '../utils/capitalize';\nimport formHelperTextClasses, { getFormHelperTextUtilityClasses } from './formHelperTextClasses';\nimport useThemeProps from '../styles/useThemeProps';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n contained,\n size,\n disabled,\n error,\n filled,\n focused,\n required\n } = ownerState;\n const slots = {\n root: ['root', disabled && 'disabled', error && 'error', size && `size${capitalize(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']\n };\n return composeClasses(slots, getFormHelperTextUtilityClasses, classes);\n};\nconst FormHelperTextRoot = styled('p', {\n name: 'MuiFormHelperText',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.size && styles[`size${capitalize(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n color: (theme.vars || theme).palette.text.secondary\n}, theme.typography.caption, {\n textAlign: 'left',\n marginTop: 3,\n marginRight: 0,\n marginBottom: 0,\n marginLeft: 0,\n [`&.${formHelperTextClasses.disabled}`]: {\n color: (theme.vars || theme).palette.text.disabled\n },\n [`&.${formHelperTextClasses.error}`]: {\n color: (theme.vars || theme).palette.error.main\n }\n}, ownerState.size === 'small' && {\n marginTop: 4\n}, ownerState.contained && {\n marginLeft: 14,\n marginRight: 14\n}));\nconst FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiFormHelperText'\n });\n const {\n children,\n className,\n component = 'p'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']\n });\n const ownerState = _extends({}, props, {\n component,\n contained: fcs.variant === 'filled' || fcs.variant === 'outlined',\n variant: fcs.variant,\n size: fcs.size,\n disabled: fcs.disabled,\n error: fcs.error,\n filled: fcs.filled,\n focused: fcs.focused,\n required: fcs.required\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(FormHelperTextRoot, _extends({\n as: component,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? FormHelperText.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n *\n * If `' '` is provided, the component reserves one line height for displaying a future message.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the helper text should be displayed in a disabled state.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, helper text should be displayed in an error state.\n */\n error: PropTypes.bool,\n /**\n * If `true`, the helper text should use filled classes key.\n */\n filled: PropTypes.bool,\n /**\n * If `true`, the helper text should use focused classes key.\n */\n focused: PropTypes.bool,\n /**\n * If `dense`, will adjust vertical spacing. This is normally obtained via context from\n * FormControl.\n */\n margin: PropTypes.oneOf(['dense']),\n /**\n * If `true`, the helper text should use required classes key.\n */\n required: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default FormHelperText;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getNativeSelectUtilityClasses(slot) {\n return generateUtilityClass('MuiNativeSelect', slot);\n}\nconst nativeSelectClasses = generateUtilityClasses('MuiNativeSelect', ['root', 'select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\nexport default nativeSelectClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"disabled\", \"IconComponent\", \"inputRef\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport capitalize from '../utils/capitalize';\nimport nativeSelectClasses, { getNativeSelectUtilityClasses } from './nativeSelectClasses';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n disabled,\n multiple,\n open\n } = ownerState;\n const slots = {\n select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled']\n };\n return composeClasses(slots, getNativeSelectUtilityClasses, classes);\n};\nexport const nativeSelectSelectStyles = ({\n ownerState,\n theme\n}) => _extends({\n MozAppearance: 'none',\n // Reset\n WebkitAppearance: 'none',\n // Reset\n // When interacting quickly, the text can end up selected.\n // Native select can't be selected either.\n userSelect: 'none',\n borderRadius: 0,\n // Reset\n cursor: 'pointer',\n '&:focus': _extends({}, theme.vars ? {\n backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`\n } : {\n backgroundColor: theme.palette.mode === 'light' ? 'rgba(0, 0, 0, 0.05)' : 'rgba(255, 255, 255, 0.05)'\n }, {\n borderRadius: 0 // Reset Chrome style\n }),\n\n // Remove IE11 arrow\n '&::-ms-expand': {\n display: 'none'\n },\n [`&.${nativeSelectClasses.disabled}`]: {\n cursor: 'default'\n },\n '&[multiple]': {\n height: 'auto'\n },\n '&:not([multiple]) option, &:not([multiple]) optgroup': {\n backgroundColor: (theme.vars || theme).palette.background.paper\n },\n // Bump specificity to allow extending custom inputs\n '&&&': {\n paddingRight: 24,\n minWidth: 16 // So it doesn't collapse.\n }\n}, ownerState.variant === 'filled' && {\n '&&&': {\n paddingRight: 32\n }\n}, ownerState.variant === 'outlined' && {\n borderRadius: (theme.vars || theme).shape.borderRadius,\n '&:focus': {\n borderRadius: (theme.vars || theme).shape.borderRadius // Reset the reset for Chrome style\n },\n\n '&&&': {\n paddingRight: 32\n }\n});\nconst NativeSelectSelect = styled('select', {\n name: 'MuiNativeSelect',\n slot: 'Select',\n shouldForwardProp: rootShouldForwardProp,\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.select, styles[ownerState.variant], {\n [`&.${nativeSelectClasses.multiple}`]: styles.multiple\n }];\n }\n})(nativeSelectSelectStyles);\nexport const nativeSelectIconStyles = ({\n ownerState,\n theme\n}) => _extends({\n // We use a position absolute over a flexbox in order to forward the pointer events\n // to the input and to support wrapping tags..\n position: 'absolute',\n right: 0,\n top: 'calc(50% - .5em)',\n // Center vertically, height is 1em\n pointerEvents: 'none',\n // Don't block pointer events on the select under the icon.\n color: (theme.vars || theme).palette.action.active,\n [`&.${nativeSelectClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled\n }\n}, ownerState.open && {\n transform: 'rotate(180deg)'\n}, ownerState.variant === 'filled' && {\n right: 7\n}, ownerState.variant === 'outlined' && {\n right: 7\n});\nconst NativeSelectIcon = styled('svg', {\n name: 'MuiNativeSelect',\n slot: 'Icon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n }\n})(nativeSelectIconStyles);\n\n/**\n * @ignore - internal component.\n */\nconst NativeSelectInput = /*#__PURE__*/React.forwardRef(function NativeSelectInput(props, ref) {\n const {\n className,\n disabled,\n IconComponent,\n inputRef,\n variant = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disabled,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(NativeSelectSelect, _extends({\n ownerState: ownerState,\n className: clsx(classes.select, className),\n disabled: disabled,\n ref: inputRef || ref\n }, other)), props.multiple ? null : /*#__PURE__*/_jsx(NativeSelectIcon, {\n as: IconComponent,\n ownerState: ownerState,\n className: classes.icon\n })]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? NativeSelectInput.propTypes = {\n /**\n * The option elements to populate the select with.\n * Can be some `<option>` elements.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The CSS class name of the select element.\n */\n className: PropTypes.string,\n /**\n * If `true`, the select is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType.isRequired,\n /**\n * Use that prop to pass a ref to the native select element.\n * @deprecated\n */\n inputRef: refType,\n /**\n * @ignore\n */\n multiple: PropTypes.bool,\n /**\n * Name attribute of the `select` or hidden `input` element.\n */\n name: PropTypes.string,\n /**\n * Callback fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * The input value.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default NativeSelectInput;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getSelectUtilityClasses(slot) {\n return generateUtilityClass('MuiSelect', slot);\n}\nconst selectClasses = generateUtilityClasses('MuiSelect', ['select', 'multiple', 'filled', 'outlined', 'standard', 'disabled', 'focused', 'icon', 'iconOpen', 'iconFilled', 'iconOutlined', 'iconStandard', 'nativeInput']);\nexport default selectClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport { formatMuiErrorMessage as _formatMuiErrorMessage } from \"@mui/utils\";\nvar _span;\nconst _excluded = [\"aria-describedby\", \"aria-label\", \"autoFocus\", \"autoWidth\", \"children\", \"className\", \"defaultOpen\", \"defaultValue\", \"disabled\", \"displayEmpty\", \"IconComponent\", \"inputRef\", \"labelId\", \"MenuProps\", \"multiple\", \"name\", \"onBlur\", \"onChange\", \"onClose\", \"onFocus\", \"onOpen\", \"open\", \"readOnly\", \"renderValue\", \"SelectDisplayProps\", \"tabIndex\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType } from '@mui/utils';\nimport ownerDocument from '../utils/ownerDocument';\nimport capitalize from '../utils/capitalize';\nimport Menu from '../Menu/Menu';\nimport { nativeSelectSelectStyles, nativeSelectIconStyles } from '../NativeSelect/NativeSelectInput';\nimport { isFilled } from '../InputBase/utils';\nimport styled, { slotShouldForwardProp } from '../styles/styled';\nimport useForkRef from '../utils/useForkRef';\nimport useControlled from '../utils/useControlled';\nimport selectClasses, { getSelectUtilityClasses } from './selectClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst SelectSelect = styled('div', {\n name: 'MuiSelect',\n slot: 'Select',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [\n // Win specificity over the input base\n {\n [`&.${selectClasses.select}`]: styles.select\n }, {\n [`&.${selectClasses.select}`]: styles[ownerState.variant]\n }, {\n [`&.${selectClasses.multiple}`]: styles.multiple\n }];\n }\n})(nativeSelectSelectStyles, {\n // Win specificity over the input base\n [`&.${selectClasses.select}`]: {\n height: 'auto',\n // Resets for multiple select with chips\n minHeight: '1.4375em',\n // Required for select\\text-field height consistency\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n overflow: 'hidden'\n }\n});\nconst SelectIcon = styled('svg', {\n name: 'MuiSelect',\n slot: 'Icon',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.icon, ownerState.variant && styles[`icon${capitalize(ownerState.variant)}`], ownerState.open && styles.iconOpen];\n }\n})(nativeSelectIconStyles);\nconst SelectNativeInput = styled('input', {\n shouldForwardProp: prop => slotShouldForwardProp(prop) && prop !== 'classes',\n name: 'MuiSelect',\n slot: 'NativeInput',\n overridesResolver: (props, styles) => styles.nativeInput\n})({\n bottom: 0,\n left: 0,\n position: 'absolute',\n opacity: 0,\n pointerEvents: 'none',\n width: '100%',\n boxSizing: 'border-box'\n});\nfunction areEqualValues(a, b) {\n if (typeof b === 'object' && b !== null) {\n return a === b;\n }\n\n // The value could be a number, the DOM will stringify it anyway.\n return String(a) === String(b);\n}\nfunction isEmpty(display) {\n return display == null || typeof display === 'string' && !display.trim();\n}\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n disabled,\n multiple,\n open\n } = ownerState;\n const slots = {\n select: ['select', variant, disabled && 'disabled', multiple && 'multiple'],\n icon: ['icon', `icon${capitalize(variant)}`, open && 'iconOpen', disabled && 'disabled'],\n nativeInput: ['nativeInput']\n };\n return composeClasses(slots, getSelectUtilityClasses, classes);\n};\n\n/**\n * @ignore - internal component.\n */\nconst SelectInput = /*#__PURE__*/React.forwardRef(function SelectInput(props, ref) {\n const {\n 'aria-describedby': ariaDescribedby,\n 'aria-label': ariaLabel,\n autoFocus,\n autoWidth,\n children,\n className,\n defaultOpen,\n defaultValue,\n disabled,\n displayEmpty,\n IconComponent,\n inputRef: inputRefProp,\n labelId,\n MenuProps = {},\n multiple,\n name,\n onBlur,\n onChange,\n onClose,\n onFocus,\n onOpen,\n open: openProp,\n readOnly,\n renderValue,\n SelectDisplayProps = {},\n tabIndex: tabIndexProp,\n value: valueProp,\n variant = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: 'Select'\n });\n const [openState, setOpenState] = useControlled({\n controlled: openProp,\n default: defaultOpen,\n name: 'Select'\n });\n const inputRef = React.useRef(null);\n const displayRef = React.useRef(null);\n const [displayNode, setDisplayNode] = React.useState(null);\n const {\n current: isOpenControlled\n } = React.useRef(openProp != null);\n const [menuMinWidthState, setMenuMinWidthState] = React.useState();\n const handleRef = useForkRef(ref, inputRefProp);\n const handleDisplayRef = React.useCallback(node => {\n displayRef.current = node;\n if (node) {\n setDisplayNode(node);\n }\n }, []);\n const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;\n React.useImperativeHandle(handleRef, () => ({\n focus: () => {\n displayRef.current.focus();\n },\n node: inputRef.current,\n value\n }), [value]);\n\n // Resize menu on `defaultOpen` automatic toggle.\n React.useEffect(() => {\n if (defaultOpen && openState && displayNode && !isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n displayRef.current.focus();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [displayNode, autoWidth]);\n // `isOpenControlled` is ignored because the component should never switch between controlled and uncontrolled modes.\n // `defaultOpen` and `openState` are ignored to avoid unnecessary callbacks.\n React.useEffect(() => {\n if (autoFocus) {\n displayRef.current.focus();\n }\n }, [autoFocus]);\n React.useEffect(() => {\n if (!labelId) {\n return undefined;\n }\n const label = ownerDocument(displayRef.current).getElementById(labelId);\n if (label) {\n const handler = () => {\n if (getSelection().isCollapsed) {\n displayRef.current.focus();\n }\n };\n label.addEventListener('click', handler);\n return () => {\n label.removeEventListener('click', handler);\n };\n }\n return undefined;\n }, [labelId]);\n const update = (open, event) => {\n if (open) {\n if (onOpen) {\n onOpen(event);\n }\n } else if (onClose) {\n onClose(event);\n }\n if (!isOpenControlled) {\n setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);\n setOpenState(open);\n }\n };\n const handleMouseDown = event => {\n // Ignore everything but left-click\n if (event.button !== 0) {\n return;\n }\n // Hijack the default focus behavior.\n event.preventDefault();\n displayRef.current.focus();\n update(true, event);\n };\n const handleClose = event => {\n update(false, event);\n };\n const childrenArray = React.Children.toArray(children);\n\n // Support autofill.\n const handleChange = event => {\n const index = childrenArray.map(child => child.props.value).indexOf(event.target.value);\n if (index === -1) {\n return;\n }\n const child = childrenArray[index];\n setValueState(child.props.value);\n if (onChange) {\n onChange(event, child);\n }\n };\n const handleItemClick = child => event => {\n let newValue;\n\n // We use the tabindex attribute to signal the available options.\n if (!event.currentTarget.hasAttribute('tabindex')) {\n return;\n }\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n const itemIndex = value.indexOf(child.props.value);\n if (itemIndex === -1) {\n newValue.push(child.props.value);\n } else {\n newValue.splice(itemIndex, 1);\n }\n } else {\n newValue = child.props.value;\n }\n if (child.props.onClick) {\n child.props.onClick(event);\n }\n if (value !== newValue) {\n setValueState(newValue);\n if (onChange) {\n // Redefine target to allow name and value to be read.\n // This allows seamless integration with the most popular form libraries.\n // https://github.com/mui/material-ui/issues/13485#issuecomment-676048492\n // Clone the event to not override `target` of the original event.\n const nativeEvent = event.nativeEvent || event;\n const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n Object.defineProperty(clonedEvent, 'target', {\n writable: true,\n value: {\n value: newValue,\n name\n }\n });\n onChange(clonedEvent, child);\n }\n }\n if (!multiple) {\n update(false, event);\n }\n };\n const handleKeyDown = event => {\n if (!readOnly) {\n const validKeys = [' ', 'ArrowUp', 'ArrowDown',\n // The native select doesn't respond to enter on macOS, but it's recommended by\n // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/\n 'Enter'];\n if (validKeys.indexOf(event.key) !== -1) {\n event.preventDefault();\n update(true, event);\n }\n }\n };\n const open = displayNode !== null && openState;\n const handleBlur = event => {\n // if open event.stopImmediatePropagation\n if (!open && onBlur) {\n // Preact support, target is read only property on a native event.\n Object.defineProperty(event, 'target', {\n writable: true,\n value: {\n value,\n name\n }\n });\n onBlur(event);\n }\n };\n delete other['aria-invalid'];\n let display;\n let displaySingle;\n const displayMultiple = [];\n let computeDisplay = false;\n let foundMatch = false;\n\n // No need to display any value if the field is empty.\n if (isFilled({\n value\n }) || displayEmpty) {\n if (renderValue) {\n display = renderValue(value);\n } else {\n computeDisplay = true;\n }\n }\n const items = childrenArray.map(child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Select component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n let selected;\n if (multiple) {\n if (!Array.isArray(value)) {\n throw new Error(process.env.NODE_ENV !== \"production\" ? `MUI: The \\`value\\` prop must be an array when using the \\`Select\\` component with \\`multiple\\`.` : _formatMuiErrorMessage(2));\n }\n selected = value.some(v => areEqualValues(v, child.props.value));\n if (selected && computeDisplay) {\n displayMultiple.push(child.props.children);\n }\n } else {\n selected = areEqualValues(value, child.props.value);\n if (selected && computeDisplay) {\n displaySingle = child.props.children;\n }\n }\n if (selected) {\n foundMatch = true;\n }\n return /*#__PURE__*/React.cloneElement(child, {\n 'aria-selected': selected ? 'true' : 'false',\n onClick: handleItemClick(child),\n onKeyUp: event => {\n if (event.key === ' ') {\n // otherwise our MenuItems dispatches a click event\n // it's not behavior of the native <option> and causes\n // the select to close immediately since we open on space keydown\n event.preventDefault();\n }\n if (child.props.onKeyUp) {\n child.props.onKeyUp(event);\n }\n },\n role: 'option',\n selected,\n value: undefined,\n // The value is most likely not a valid HTML attribute.\n 'data-value': child.props.value // Instead, we provide it as a data attribute.\n });\n });\n\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!foundMatch && !multiple && value !== '') {\n const values = childrenArray.map(child => child.props.value);\n console.warn([`MUI: You have provided an out-of-range value \\`${value}\\` for the select ${name ? `(name=\"${name}\") ` : ''}component.`, \"Consider providing a value that matches one of the available options or ''.\", `The available values are ${values.filter(x => x != null).map(x => `\\`${x}\\``).join(', ') || '\"\"'}.`].join('\\n'));\n }\n }, [foundMatch, childrenArray, multiple, name, value]);\n }\n if (computeDisplay) {\n if (multiple) {\n if (displayMultiple.length === 0) {\n display = null;\n } else {\n display = displayMultiple.reduce((output, child, index) => {\n output.push(child);\n if (index < displayMultiple.length - 1) {\n output.push(', ');\n }\n return output;\n }, []);\n }\n } else {\n display = displaySingle;\n }\n }\n\n // Avoid performing a layout computation in the render method.\n let menuMinWidth = menuMinWidthState;\n if (!autoWidth && isOpenControlled && displayNode) {\n menuMinWidth = anchorElement.clientWidth;\n }\n let tabIndex;\n if (typeof tabIndexProp !== 'undefined') {\n tabIndex = tabIndexProp;\n } else {\n tabIndex = disabled ? null : 0;\n }\n const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : undefined);\n const ownerState = _extends({}, props, {\n variant,\n value,\n open\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(SelectSelect, _extends({\n ref: handleDisplayRef,\n tabIndex: tabIndex,\n role: \"button\",\n \"aria-disabled\": disabled ? 'true' : undefined,\n \"aria-expanded\": open ? 'true' : 'false',\n \"aria-haspopup\": \"listbox\",\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": [labelId, buttonId].filter(Boolean).join(' ') || undefined,\n \"aria-describedby\": ariaDescribedby,\n onKeyDown: handleKeyDown,\n onMouseDown: disabled || readOnly ? null : handleMouseDown,\n onBlur: handleBlur,\n onFocus: onFocus\n }, SelectDisplayProps, {\n ownerState: ownerState,\n className: clsx(SelectDisplayProps.className, classes.select, className)\n // The id is required for proper a11y\n ,\n id: buttonId,\n children: isEmpty(display) ? // notranslate needed while Google Translate will not fix zero-width space issue\n _span || (_span = /*#__PURE__*/_jsx(\"span\", {\n className: \"notranslate\",\n children: \"\\u200B\"\n })) : display\n })), /*#__PURE__*/_jsx(SelectNativeInput, _extends({\n value: Array.isArray(value) ? value.join(',') : value,\n name: name,\n ref: inputRef,\n \"aria-hidden\": true,\n onChange: handleChange,\n tabIndex: -1,\n disabled: disabled,\n className: classes.nativeInput,\n autoFocus: autoFocus,\n ownerState: ownerState\n }, other)), /*#__PURE__*/_jsx(SelectIcon, {\n as: IconComponent,\n className: classes.icon,\n ownerState: ownerState\n }), /*#__PURE__*/_jsx(Menu, _extends({\n id: `menu-${name || ''}`,\n anchorEl: anchorElement,\n open: open,\n onClose: handleClose,\n anchorOrigin: {\n vertical: 'bottom',\n horizontal: 'center'\n },\n transformOrigin: {\n vertical: 'top',\n horizontal: 'center'\n }\n }, MenuProps, {\n MenuListProps: _extends({\n 'aria-labelledby': labelId,\n role: 'listbox',\n disableListWrap: true\n }, MenuProps.MenuListProps),\n PaperProps: _extends({}, MenuProps.PaperProps, {\n style: _extends({\n minWidth: menuMinWidth\n }, MenuProps.PaperProps != null ? MenuProps.PaperProps.style : null)\n }),\n children: items\n }))]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? SelectInput.propTypes = {\n /**\n * @ignore\n */\n 'aria-describedby': PropTypes.string,\n /**\n * @ignore\n */\n 'aria-label': PropTypes.string,\n /**\n * @ignore\n */\n autoFocus: PropTypes.bool,\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n */\n autoWidth: PropTypes.bool,\n /**\n * The option elements to populate the select with.\n * Can be some `<MenuItem>` elements.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object,\n /**\n * The CSS class name of the select element.\n */\n className: PropTypes.string,\n /**\n * If `true`, the component is toggled on mount. Use when the component open state is not controlled.\n * You can only use it when the `native` prop is `false` (default).\n */\n defaultOpen: PropTypes.bool,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the select is disabled.\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the selected item is displayed even if its value is empty.\n */\n displayEmpty: PropTypes.bool,\n /**\n * The icon that displays the arrow.\n */\n IconComponent: PropTypes.elementType.isRequired,\n /**\n * Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`\n * Equivalent to `ref`\n */\n inputRef: refType,\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n /**\n * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n */\n multiple: PropTypes.bool,\n /**\n * Name attribute of the `select` or hidden `input` element.\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when a menu item is selected.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * @param {object} [child] The react element that was selected.\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * Callback fired when the component requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * @ignore\n */\n readOnly: PropTypes.bool,\n /**\n * Render the selected value.\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n /**\n * @ignore\n */\n tabIndex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n type: PropTypes.any,\n /**\n * The input value.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n */\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\n} : void 0;\nexport default SelectInput;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nvar _StyledInput, _StyledFilledInput;\nconst _excluded = [\"autoWidth\", \"children\", \"classes\", \"className\", \"defaultOpen\", \"displayEmpty\", \"IconComponent\", \"id\", \"input\", \"inputProps\", \"label\", \"labelId\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { deepmerge } from '@mui/utils';\nimport SelectInput from './SelectInput';\nimport formControlState from '../FormControl/formControlState';\nimport useFormControl from '../FormControl/useFormControl';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport Input from '../Input';\nimport NativeSelectInput from '../NativeSelect/NativeSelectInput';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport useThemeProps from '../styles/useThemeProps';\nimport useForkRef from '../utils/useForkRef';\nimport styled, { rootShouldForwardProp } from '../styles/styled';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n return classes;\n};\nconst styledRootConfig = {\n name: 'MuiSelect',\n overridesResolver: (props, styles) => styles.root,\n shouldForwardProp: prop => rootShouldForwardProp(prop) && prop !== 'variant',\n slot: 'Root'\n};\nconst StyledInput = styled(Input, styledRootConfig)('');\nconst StyledOutlinedInput = styled(OutlinedInput, styledRootConfig)('');\nconst StyledFilledInput = styled(FilledInput, styledRootConfig)('');\nconst Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {\n const props = useThemeProps({\n name: 'MuiSelect',\n props: inProps\n });\n const {\n autoWidth = false,\n children,\n classes: classesProp = {},\n className,\n defaultOpen = false,\n displayEmpty = false,\n IconComponent = ArrowDropDownIcon,\n id,\n input,\n inputProps,\n label,\n labelId,\n MenuProps,\n multiple = false,\n native = false,\n onClose,\n onOpen,\n open,\n renderValue,\n SelectDisplayProps,\n variant: variantProp = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const inputComponent = native ? NativeSelectInput : SelectInput;\n const muiFormControl = useFormControl();\n const fcs = formControlState({\n props,\n muiFormControl,\n states: ['variant']\n });\n const variant = fcs.variant || variantProp;\n const InputComponent = input || {\n standard: _StyledInput || (_StyledInput = /*#__PURE__*/_jsx(StyledInput, {})),\n outlined: /*#__PURE__*/_jsx(StyledOutlinedInput, {\n label: label\n }),\n filled: _StyledFilledInput || (_StyledFilledInput = /*#__PURE__*/_jsx(StyledFilledInput, {}))\n }[variant];\n const ownerState = _extends({}, props, {\n variant,\n classes: classesProp\n });\n const classes = useUtilityClasses(ownerState);\n const inputComponentRef = useForkRef(ref, InputComponent.ref);\n return /*#__PURE__*/_jsx(React.Fragment, {\n children: /*#__PURE__*/React.cloneElement(InputComponent, _extends({\n // Most of the logic is implemented in `SelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent,\n inputProps: _extends({\n children,\n IconComponent,\n variant,\n type: undefined,\n // We render a select. We can ignore the type provided by the `Input`.\n multiple\n }, native ? {\n id\n } : {\n autoWidth,\n defaultOpen,\n displayEmpty,\n labelId,\n MenuProps,\n onClose,\n onOpen,\n open,\n renderValue,\n SelectDisplayProps: _extends({\n id\n }, SelectDisplayProps)\n }, inputProps, {\n classes: inputProps ? deepmerge(classes, inputProps.classes) : classes\n }, input ? input.props.inputProps : {})\n }, multiple && native && variant === 'outlined' ? {\n notched: true\n } : {}, {\n ref: inputComponentRef,\n className: clsx(InputComponent.props.className, className)\n }, !input && {\n variant\n }, other))\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Select.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * If `true`, the width of the popover will automatically be set according to the items inside the\n * menu, otherwise it will be at least the width of the select input.\n * @default false\n */\n autoWidth: PropTypes.bool,\n /**\n * The option elements to populate the select with.\n * Can be some `MenuItem` when `native` is false and `option` when `native` is true.\n *\n * ⚠️The `MenuItem` elements **must** be direct descendants when `native` is false.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n * @default {}\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).\n * You can only use it when the `native` prop is `false` (default).\n * @default false\n */\n defaultOpen: PropTypes.bool,\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, a value is displayed even if no items are selected.\n *\n * In order to display a meaningful value, a function can be passed to the `renderValue` prop which\n * returns the value to be displayed when no items are selected.\n *\n * ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.\n * The label should either be hidden or forced to a shrunk state.\n * @default false\n */\n displayEmpty: PropTypes.bool,\n /**\n * The icon that displays the arrow.\n * @default ArrowDropDownIcon\n */\n IconComponent: PropTypes.elementType,\n /**\n * The `id` of the wrapper element or the `select` element when `native`.\n */\n id: PropTypes.string,\n /**\n * An `Input` element; does not have to be a material-ui specific `Input`.\n */\n input: PropTypes.element,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n * When `native` is `true`, the attributes are applied on the `select` element.\n */\n inputProps: PropTypes.object,\n /**\n * See [OutlinedInput#label](/material-ui/api/outlined-input/#props)\n */\n label: PropTypes.node,\n /**\n * The ID of an element that acts as an additional label. The Select will\n * be labelled by the additional label and the selected value.\n */\n labelId: PropTypes.string,\n /**\n * Props applied to the [`Menu`](/material-ui/api/menu/) element.\n */\n MenuProps: PropTypes.object,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * If `true`, the component uses a native `select` element.\n * @default false\n */\n native: PropTypes.bool,\n /**\n * Callback fired when a menu item is selected.\n *\n * @param {SelectChangeEvent<T>} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (any).\n * **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.\n * @param {object} [child] The react element that was selected when `native` is `false` (default).\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the component requests to be closed.\n * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapes).\n *\n * @param {object} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the component requests to be opened.\n * Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).\n *\n * @param {object} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n * You can only use it when the `native` prop is `false` (default).\n */\n open: PropTypes.bool,\n /**\n * Render the selected value.\n * You can only use it when the `native` prop is `false` (default).\n *\n * @param {any} value The `value` provided to the component.\n * @returns {ReactNode}\n */\n renderValue: PropTypes.func,\n /**\n * Props applied to the clickable div element.\n */\n SelectDisplayProps: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The `input` value. Providing an empty string will select no options.\n * Set to an empty string `''` if you don't want any of the available options to be selected.\n *\n * If the value is an object it must have reference equality with the option in order to be selected.\n * If the value is not an object, the string representation must match with the string representation of the option in order to be selected.\n */\n value: PropTypes.oneOfType([PropTypes.oneOf(['']), PropTypes.any]),\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nSelect.muiName = 'Select';\nexport default Select;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getTextFieldUtilityClass(slot) {\n return generateUtilityClass('MuiTextField', slot);\n}\nconst textFieldClasses = generateUtilityClasses('MuiTextField', ['root']);\nexport default textFieldClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"autoComplete\", \"autoFocus\", \"children\", \"className\", \"color\", \"defaultValue\", \"disabled\", \"error\", \"FormHelperTextProps\", \"fullWidth\", \"helperText\", \"id\", \"InputLabelProps\", \"inputProps\", \"InputProps\", \"inputRef\", \"label\", \"maxRows\", \"minRows\", \"multiline\", \"name\", \"onBlur\", \"onChange\", \"onFocus\", \"placeholder\", \"required\", \"rows\", \"select\", \"SelectProps\", \"type\", \"value\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { refType, unstable_useId as useId } from '@mui/utils';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Input from '../Input';\nimport FilledInput from '../FilledInput';\nimport OutlinedInput from '../OutlinedInput';\nimport InputLabel from '../InputLabel';\nimport FormControl from '../FormControl';\nimport FormHelperText from '../FormHelperText';\nimport Select from '../Select';\nimport { getTextFieldUtilityClass } from './textFieldClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst variantComponent = {\n standard: Input,\n filled: FilledInput,\n outlined: OutlinedInput\n};\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getTextFieldUtilityClass, classes);\n};\nconst TextFieldRoot = styled(FormControl, {\n name: 'MuiTextField',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})({});\n\n/**\n * The `TextField` is a convenience wrapper for the most common cases (80%).\n * It cannot be all things to all people, otherwise the API would grow out of control.\n *\n * ## Advanced Configuration\n *\n * It's important to understand that the text field is a simple abstraction\n * on top of the following components:\n *\n * - [FormControl](/material-ui/api/form-control/)\n * - [InputLabel](/material-ui/api/input-label/)\n * - [FilledInput](/material-ui/api/filled-input/)\n * - [OutlinedInput](/material-ui/api/outlined-input/)\n * - [Input](/material-ui/api/input/)\n * - [FormHelperText](/material-ui/api/form-helper-text/)\n *\n * If you wish to alter the props applied to the `input` element, you can do so as follows:\n *\n * ```jsx\n * const inputProps = {\n * step: 300,\n * };\n *\n * return <TextField id=\"time\" type=\"time\" inputProps={inputProps} />;\n * ```\n *\n * For advanced cases, please look at the source of TextField by clicking on the\n * \"Edit this page\" button above. Consider either:\n *\n * - using the upper case props for passing values directly to the components\n * - using the underlying components directly as shown in the demos\n */\nconst TextField = /*#__PURE__*/React.forwardRef(function TextField(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiTextField'\n });\n const {\n autoComplete,\n autoFocus = false,\n children,\n className,\n color = 'primary',\n defaultValue,\n disabled = false,\n error = false,\n FormHelperTextProps,\n fullWidth = false,\n helperText,\n id: idOverride,\n InputLabelProps,\n inputProps,\n InputProps,\n inputRef,\n label,\n maxRows,\n minRows,\n multiline = false,\n name,\n onBlur,\n onChange,\n onFocus,\n placeholder,\n required = false,\n rows,\n select = false,\n SelectProps,\n type,\n value,\n variant = 'outlined'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n autoFocus,\n color,\n disabled,\n error,\n fullWidth,\n multiline,\n required,\n select,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n if (process.env.NODE_ENV !== 'production') {\n if (select && !children) {\n console.error('MUI: `children` must be passed when using the `TextField` component with `select`.');\n }\n }\n const InputMore = {};\n if (variant === 'outlined') {\n if (InputLabelProps && typeof InputLabelProps.shrink !== 'undefined') {\n InputMore.notched = InputLabelProps.shrink;\n }\n InputMore.label = label;\n }\n if (select) {\n // unset defaults from textbox inputs\n if (!SelectProps || !SelectProps.native) {\n InputMore.id = undefined;\n }\n InputMore['aria-describedby'] = undefined;\n }\n const id = useId(idOverride);\n const helperTextId = helperText && id ? `${id}-helper-text` : undefined;\n const inputLabelId = label && id ? `${id}-label` : undefined;\n const InputComponent = variantComponent[variant];\n const InputElement = /*#__PURE__*/_jsx(InputComponent, _extends({\n \"aria-describedby\": helperTextId,\n autoComplete: autoComplete,\n autoFocus: autoFocus,\n defaultValue: defaultValue,\n fullWidth: fullWidth,\n multiline: multiline,\n name: name,\n rows: rows,\n maxRows: maxRows,\n minRows: minRows,\n type: type,\n value: value,\n id: id,\n inputRef: inputRef,\n onBlur: onBlur,\n onChange: onChange,\n onFocus: onFocus,\n placeholder: placeholder,\n inputProps: inputProps\n }, InputMore, InputProps));\n return /*#__PURE__*/_jsxs(TextFieldRoot, _extends({\n className: clsx(classes.root, className),\n disabled: disabled,\n error: error,\n fullWidth: fullWidth,\n ref: ref,\n required: required,\n color: color,\n variant: variant,\n ownerState: ownerState\n }, other, {\n children: [label != null && label !== '' && /*#__PURE__*/_jsx(InputLabel, _extends({\n htmlFor: id,\n id: inputLabelId\n }, InputLabelProps, {\n children: label\n })), select ? /*#__PURE__*/_jsx(Select, _extends({\n \"aria-describedby\": helperTextId,\n id: id,\n labelId: inputLabelId,\n value: value,\n input: InputElement\n }, SelectProps, {\n children: children\n })) : InputElement, helperText && /*#__PURE__*/_jsx(FormHelperText, _extends({\n id: helperTextId\n }, FormHelperTextProps, {\n children: helperText\n }))]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? TextField.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * This prop helps users to fill forms faster, especially on mobile devices.\n * The name can be confusing, as it's more like an autofill.\n * You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).\n */\n autoComplete: PropTypes.string,\n /**\n * If `true`, the `input` element is focused during the first mount.\n * @default false\n */\n autoFocus: PropTypes.bool,\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'primary'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The default value. Use when the component is not controlled.\n */\n defaultValue: PropTypes.any,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the label is displayed in an error state.\n * @default false\n */\n error: PropTypes.bool,\n /**\n * Props applied to the [`FormHelperText`](/material-ui/api/form-helper-text/) element.\n */\n FormHelperTextProps: PropTypes.object,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The helper text content.\n */\n helperText: PropTypes.node,\n /**\n * The id of the `input` element.\n * Use this prop to make `label` and `helperText` accessible for screen readers.\n */\n id: PropTypes.string,\n /**\n * Props applied to the [`InputLabel`](/material-ui/api/input-label/) element.\n * Pointer events like `onClick` are enabled if and only if `shrink` is `true`.\n */\n InputLabelProps: PropTypes.object,\n /**\n * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n */\n inputProps: PropTypes.object,\n /**\n * Props applied to the Input element.\n * It will be a [`FilledInput`](/material-ui/api/filled-input/),\n * [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)\n * component depending on the `variant` prop value.\n */\n InputProps: PropTypes.object,\n /**\n * Pass a ref to the `input` element.\n */\n inputRef: refType,\n /**\n * The label content.\n */\n label: PropTypes.node,\n /**\n * If `dense` or `normal`, will adjust vertical spacing of this and contained components.\n * @default 'none'\n */\n margin: PropTypes.oneOf(['dense', 'none', 'normal']),\n /**\n * Maximum number of rows to display when multiline option is set to true.\n */\n maxRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Minimum number of rows to display when multiline option is set to true.\n */\n minRows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * If `true`, a `textarea` element is rendered instead of an input.\n * @default false\n */\n multiline: PropTypes.bool,\n /**\n * Name attribute of the `input` element.\n */\n name: PropTypes.string,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n /**\n * Callback fired when the value is changed.\n *\n * @param {object} event The event source of the callback.\n * You can pull out the new value by accessing `event.target.value` (string).\n */\n onChange: PropTypes.func,\n /**\n * @ignore\n */\n onFocus: PropTypes.func,\n /**\n * The short hint displayed in the `input` before the user enters a value.\n */\n placeholder: PropTypes.string,\n /**\n * If `true`, the label is displayed as required and the `input` element is required.\n * @default false\n */\n required: PropTypes.bool,\n /**\n * Number of rows to display when multiline option is set to true.\n */\n rows: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * Render a [`Select`](/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.\n * If this option is set you must pass the options of the select as children.\n * @default false\n */\n select: PropTypes.bool,\n /**\n * Props applied to the [`Select`](/material-ui/api/select/) element.\n */\n SelectProps: PropTypes.object,\n /**\n * The size of the component.\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).\n */\n type: PropTypes /* @typescript-to-proptypes-ignore */.string,\n /**\n * The value of the `input` element, required for a controlled component.\n */\n value: PropTypes.any,\n /**\n * The variant to use.\n * @default 'outlined'\n */\n variant: PropTypes.oneOf(['filled', 'outlined', 'standard'])\n} : void 0;\nexport default TextField;","const GetDayOfWeek = (): string | undefined => {\r\n const urlObj = new URL(window.location.href);\r\n const lastSegment = urlObj.pathname.split('/').pop();\r\n switch (lastSegment) {\r\n case \"1\":\r\n return \"MONDAY\"\r\n case \"2\":\r\n return \"TUESDAY\"\r\n case \"3\":\r\n return \"WEDNESDAY\"\r\n case \"4\":\r\n return \"THURSDAY\"\r\n case \"5\":\r\n return \"FRIDAY\"\r\n case \"6\":\r\n return \"SATURDAY\"\r\n case \"7\":\r\n return \"SUNDAY\"\r\n default:\r\n return undefined\r\n }\r\n}\r\n\r\nexport default GetDayOfWeek","import DailyRoutine from \"../types/DailyRoutine\"\r\n\r\nconst GetRoutine = (dailyRoutineTemplate: DailyRoutine[], day: string): DailyRoutine | undefined => {\r\n return (dailyRoutineTemplate.find((routine) => routine.dayOfWeek === day))\r\n}\r\n\r\nexport default GetRoutine","import generateUtilityClass from '@mui/material/generateUtilityClass';\nimport generateUtilityClasses from '@mui/material/generateUtilityClasses';\nexport function getLoadingButtonUtilityClass(slot) {\n return generateUtilityClass('MuiLoadingButton', slot);\n}\nconst loadingButtonClasses = generateUtilityClasses('MuiLoadingButton', ['root', 'loading', 'loadingIndicator', 'loadingIndicatorCenter', 'loadingIndicatorStart', 'loadingIndicatorEnd', 'endIconLoadingEnd', 'startIconLoadingStart']);\nexport default loadingButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"disabled\", \"id\", \"loading\", \"loadingIndicator\", \"loadingPosition\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport { chainPropTypes } from '@mui/utils';\nimport { capitalize, unstable_useId as useId } from '@mui/material/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { styled, useThemeProps } from '@mui/material/styles';\nimport Button from '@mui/material/Button';\nimport CircularProgress from '@mui/material/CircularProgress';\nimport loadingButtonClasses, { getLoadingButtonUtilityClass } from './loadingButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n loading,\n loadingPosition,\n classes\n } = ownerState;\n const slots = {\n root: ['root', loading && 'loading'],\n startIcon: [loading && `startIconLoading${capitalize(loadingPosition)}`],\n endIcon: [loading && `endIconLoading${capitalize(loadingPosition)}`],\n loadingIndicator: ['loadingIndicator', loading && `loadingIndicator${capitalize(loadingPosition)}`]\n };\n const composedClasses = composeClasses(slots, getLoadingButtonUtilityClass, classes);\n return _extends({}, classes, composedClasses);\n};\n\n// TODO use `import { rootShouldForwardProp } from '../styles/styled';` once move to core\nconst rootShouldForwardProp = prop => prop !== 'ownerState' && prop !== 'theme' && prop !== 'sx' && prop !== 'as' && prop !== 'classes';\nconst LoadingButtonRoot = styled(Button, {\n shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n name: 'MuiLoadingButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n return [styles.root, styles.startIconLoadingStart && {\n [`& .${loadingButtonClasses.startIconLoadingStart}`]: styles.startIconLoadingStart\n }, styles.endIconLoadingEnd && {\n [`& .${loadingButtonClasses.endIconLoadingEnd}`]: styles.endIconLoadingEnd\n }];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0\n }\n}, ownerState.loadingPosition === 'center' && {\n transition: theme.transitions.create(['background-color', 'box-shadow', 'border-color'], {\n duration: theme.transitions.duration.short\n }),\n [`&.${loadingButtonClasses.loading}`]: {\n color: 'transparent'\n }\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginRight: -8\n }\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n [`& .${loadingButtonClasses.startIconLoadingStart}, & .${loadingButtonClasses.endIconLoadingEnd}`]: {\n transition: theme.transitions.create(['opacity'], {\n duration: theme.transitions.duration.short\n }),\n opacity: 0,\n marginLeft: -8\n }\n}));\nconst LoadingButtonLoadingIndicator = styled('div', {\n name: 'MuiLoadingButton',\n slot: 'LoadingIndicator',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.loadingIndicator, styles[`loadingIndicator${capitalize(ownerState.loadingPosition)}`]];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n position: 'absolute',\n visibility: 'visible',\n display: 'flex'\n}, ownerState.loadingPosition === 'start' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n left: ownerState.size === 'small' ? 10 : 14\n}, ownerState.loadingPosition === 'start' && ownerState.variant === 'text' && {\n left: 6\n}, ownerState.loadingPosition === 'center' && {\n left: '50%',\n transform: 'translate(-50%)',\n color: (theme.vars || theme).palette.action.disabled\n}, ownerState.loadingPosition === 'end' && (ownerState.variant === 'outlined' || ownerState.variant === 'contained') && {\n right: ownerState.size === 'small' ? 10 : 14\n}, ownerState.loadingPosition === 'end' && ownerState.variant === 'text' && {\n right: 6\n}, ownerState.loadingPosition === 'start' && ownerState.fullWidth && {\n position: 'relative',\n left: -10\n}, ownerState.loadingPosition === 'end' && ownerState.fullWidth && {\n position: 'relative',\n right: -10\n}));\nconst LoadingButton = /*#__PURE__*/React.forwardRef(function LoadingButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiLoadingButton'\n });\n const {\n children,\n disabled = false,\n id: idProp,\n loading = false,\n loadingIndicator: loadingIndicatorProp,\n loadingPosition = 'center',\n variant = 'text'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const id = useId(idProp);\n const loadingIndicator = loadingIndicatorProp != null ? loadingIndicatorProp : /*#__PURE__*/_jsx(CircularProgress, {\n \"aria-labelledby\": id,\n color: \"inherit\",\n size: 16\n });\n const ownerState = _extends({}, props, {\n disabled,\n loading,\n loadingIndicator,\n loadingPosition,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const loadingButtonLoadingIndicator = loading ? /*#__PURE__*/_jsx(LoadingButtonLoadingIndicator, {\n className: classes.loadingIndicator,\n ownerState: ownerState,\n children: loadingIndicator\n }) : null;\n return /*#__PURE__*/_jsxs(LoadingButtonRoot, _extends({\n disabled: disabled || loading,\n id: id,\n ref: ref\n }, other, {\n variant: variant,\n classes: classes,\n ownerState: ownerState,\n children: [ownerState.loadingPosition === 'end' ? children : loadingButtonLoadingIndicator, ownerState.loadingPosition === 'end' ? loadingButtonLoadingIndicator : children]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? LoadingButton.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * @ignore\n */\n id: PropTypes.string,\n /**\n * If `true`, the loading indicator is shown.\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Element placed before the children if the button is in loading state.\n * The node should contain an element with `role=\"progressbar\"` with an accessible name.\n * By default we render a `CircularProgress` that is labelled by the button itself.\n * @default <CircularProgress color=\"inherit\" size={16} />\n */\n loadingIndicator: PropTypes.node,\n /**\n * The loading indicator can be positioned on the start, end, or the center of the button.\n * @default 'center'\n */\n loadingPosition: chainPropTypes(PropTypes.oneOf(['start', 'end', 'center']), props => {\n if (props.loadingPosition === 'start' && !props.startIcon) {\n return new Error(`MUI: The loadingPosition=\"start\" should be used in combination with startIcon.`);\n }\n if (props.loadingPosition === 'end' && !props.endIcon) {\n return new Error(`MUI: The loadingPosition=\"end\" should be used in combination with endIcon.`);\n }\n return null;\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['contained', 'outlined', 'text']), PropTypes.string])\n} : void 0;\nexport default LoadingButton;","import styled from '@emotion/styled';\r\nimport { css } from '@emotion/react';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\nexport const baseContainerStyles = css`\r\n width: 100%;\r\n height: 100%;\r\n background: #192633;\r\n position: fixed;\r\n display: flex;\r\n justify-content: center;\r\n overflow: auto;\r\n /* padding-bottom: ${isMobile ? (Capacitor.getPlatform() === 'ios' ? 'calc(env(safe-area-inset-top) + 56px)' : '56px') : ''}; */\r\n`;","import React from 'react';\r\nimport IconButton from '@mui/material/IconButton';\r\nimport styled from '@emotion/styled';\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\r\nimport { MenuItem, Menu, Button } from '@mui/material';\r\nimport DeleteForeverIcon from '@mui/icons-material/DeleteForever';\r\nimport CloseIcon from '@mui/icons-material/Close';\r\nconst StyledMenu = styled(Menu)({\r\n '& .MuiPaper-root': {\r\n borderRadius: '6px',\r\n backgroundColor: '#232a31',\r\n color: 'white'\r\n }\r\n})\r\n\r\n\r\nconst ExerciseMenuButtonComponent = ({ exercise, index, handleRemoveExercise }: any) => {\r\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\r\n const openMenu = Boolean(anchorEl);\r\n\r\n const handleClick = (event: any) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n return (\r\n <>\r\n\r\n <MoreVertIcon style={{ position: 'absolute', right: '10px', top: '10px', color: 'white', fontSize: '30px' }}\r\n aria-controls={openMenu ? 'basic-menu' : undefined}\r\n aria-expanded={openMenu ? 'true' : undefined}\r\n aria-haspopup=\"true\"\r\n onClick={(e) => handleClick(e)}\r\n />\r\n <StyledMenu\r\n id=\"basic-menu\"\r\n anchorEl={anchorEl}\r\n open={openMenu}\r\n onClose={handleClose}\r\n anchorOrigin={{\r\n vertical: 'bottom',\r\n horizontal: 'right',\r\n }}\r\n transformOrigin={{\r\n vertical: 'top',\r\n horizontal: 'right',\r\n }}\r\n >\r\n\r\n <MenuItem onClick={handleClose}>\r\n <Button type=\"button\" size=\"small\" startIcon={<DeleteForeverIcon sx={{ color: 'red' }} />} sx={{\r\n color: 'white',\r\n textTransform: 'none',\r\n fontSize: '16px',\r\n }} onClick={() => (handleRemoveExercise(index))} >Delete Exercise</Button>\r\n </MenuItem>\r\n <MenuItem onClick={handleClose}>\r\n <Button size='small' startIcon={<CloseIcon />} style={{\r\n color: 'white',\r\n textTransform: 'none',\r\n fontSize: '16px',\r\n }}>\r\n Close\r\n </Button>\r\n </MenuItem>\r\n\r\n </StyledMenu>\r\n </>\r\n );\r\n};\r\n\r\nexport default ExerciseMenuButtonComponent;\r\n","import React, { useEffect } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport { useState, ChangeEvent } from 'react';\r\nimport {\r\n TextField,\r\n Stack,\r\n Button,\r\n Divider,\r\n Card,\r\n Typography,\r\n InputAdornment,\r\n Menu,\r\n MenuItem,\r\n MenuProps,\r\n Autocomplete,\r\n CircularProgress,\r\n Box,\r\n Modal,\r\n Fade,\r\n Backdrop,\r\n IconButton\r\n} from '@mui/material';\r\nimport getDayOfWeek from '../../utils/GetDayOfWeek';\r\nimport Exercise from '../../types/Exercise';\r\nimport Routine from '../../types/Routine';\r\nimport axios from 'axios';\r\nimport config from '../../config';\r\nimport { error } from 'console';\r\nimport workoutRoutineStore from '../../store/workoutRoutineStore';\r\nimport { set, toJS } from 'mobx';\r\nimport getRoutine from '../../utils/GetRoutine';\r\nimport { observer } from 'mobx-react-lite';\r\nimport DailyRoutine from '../../types/DailyRoutine';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport LoadingButton from '@mui/lab/LoadingButton';\r\n//import { DeleteForever, Save, Check, AddBox } from '@mui/icons-material';\r\nimport DeleteForeverIcon from '@mui/icons-material/DeleteForever';\r\nimport SaveIcon from '@mui/icons-material/Save';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport AddBoxIcon from '@mui/icons-material/AddBox';\r\nimport { isMobile } from 'react-device-detect';\r\nimport Cookies from 'js-cookie';\r\nimport { checkCookies } from '../../libs/api';\r\nimport { getToken, getUserId } from '../../utils/mobileStorage';\r\nimport { baseContainerStyles } from '../styled/baseStyles';\r\nimport MoreVertIcon from '@mui/icons-material/MoreVert';\r\nimport MoreHorizIcon from '@mui/icons-material/MoreHoriz';\r\nimport SettingsIcon from '@mui/icons-material/Settings';\r\nimport ExerciseMenuButtonComponent from '../styled/ExerciseMenuButtonComponent';\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\ninterface Data {\r\n id: number | null | undefined,\r\n title: string,\r\n description: string,\r\n dayOfWeek?: string,\r\n exercises: Exercise[]\r\n routineId?: number | null | undefined,\r\n userId: string,\r\n newDayOfWeek: string | null\r\n}\r\n\r\n\r\nfunction DailyRoutineComponent() {\r\n const [isFirstRender, setIsFirstRender] = useState(true)\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [isDataloading, setIsDataLoading] = useState(true);\r\n const [isDeleteLoading, setIsDeleteLoading] = useState(false)\r\n const [titleError, setTitleError] = useState(false)\r\n const [isSuccess, setIsSuccess] = useState(false)\r\n const [isSubmitted, setIsSubmitted] = useState(false)\r\n const [isSaved, setIsSaved] = useState(true)\r\n const [isUpdate, setIsUpdate] = useState(false)\r\n const [isDeleteSuccess, setIsDeleteSuccess] = useState(false)\r\n const [isTemplateData, setIsTemplateData] = useState(false)\r\n const [originalId, setOriginalId] = useState<number>()\r\n const [routineState, setRoutineState] = useState<Routine>({\r\n title: '',\r\n description: '',\r\n currentId: 0,\r\n exercises: [],\r\n });\r\n const [anchorEl, setAnchorEl] = React.useState<null | HTMLElement>(null);\r\n const openMenu = Boolean(anchorEl);\r\n const navigate = useNavigate()\r\n\r\n const [openModal, setOpenModal] = React.useState(false);\r\n const [openConfirmModal, setOpenConfirmModal] = React.useState(false);\r\n const handleOpenModal = () => setOpenModal(true);\r\n const handleCloseModal = () => setOpenModal(false);\r\n\r\n\r\n //update our routineState with the dailyRoutineTemplate if it exists\r\n useEffect(() => {\r\n const fetch = async () => {\r\n //only run on first render to load in data\r\n if (isFirstRender) {\r\n setIsDataLoading(true)\r\n setIsFirstRender(false)\r\n }\r\n //dont run if isSubmitted is false after its click so we dont get old data flashing\r\n if (!isSubmitted && !isFirstRender) {\r\n return\r\n }\r\n let storedDailyRoutine: DailyRoutine | undefined;\r\n await workoutRoutineStore.fetchRoutines();\r\n const today = getDayOfWeek();\r\n const dailyRoutineTemplate = toJS(workoutRoutineStore.dailyRoutines)\r\n if (today !== undefined) {\r\n storedDailyRoutine = getRoutine(dailyRoutineTemplate, today);\r\n if (storedDailyRoutine) {\r\n setIsUpdate(true);\r\n //set the originalId to the id of the storedDailyRoutine so we can compare later to see if they changed templates\r\n setOriginalId(storedDailyRoutine?.id)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n id: storedDailyRoutine?.id,\r\n dayOfWeek: storedDailyRoutine?.dayOfWeek,\r\n title: storedDailyRoutine?.title || '',\r\n description: storedDailyRoutine?.description || '',\r\n currentId: storedDailyRoutine?.exercises.length || prevState.currentId,\r\n exercises: storedDailyRoutine?.exercises\r\n ? storedDailyRoutine.exercises.map((exercise, index) => ({\r\n title: exercise.title,\r\n exerciseId: index,\r\n repsWeight: exercise.repsWeight.map((repsWeight) => ({\r\n reps: repsWeight.reps,\r\n weight: repsWeight.weight,\r\n })),\r\n }))\r\n : prevState.exercises,\r\n }));\r\n }\r\n }\r\n setIsDataLoading(false)\r\n }\r\n //call fetch\r\n fetch()\r\n\r\n }, [isSubmitted]);\r\n\r\n\r\n const handleClick = (event: any) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n\r\n const handleSubmit = async (e: any) => {\r\n setIsSuccess(false)\r\n setIsSubmitted(false)\r\n //title isnt blank\r\n if (routineState.title) {\r\n if (isSaved) {\r\n setIsSuccess(true)\r\n return\r\n }\r\n setIsLoading(true);\r\n //get dayOfWeek\r\n const getDay = getDayOfWeek();\r\n if (getDay) {\r\n try {\r\n await checkCookies()\r\n const data: Data = {\r\n //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991',\r\n userId: await getUserId() || '',\r\n id: routineState.id,\r\n title: routineState.title,\r\n description: routineState.description,\r\n dayOfWeek: getDay,\r\n newDayOfWeek: getDay,\r\n exercises: routineState.exercises,\r\n }\r\n //check if we have a routine already, if we dont create one\r\n if (workoutRoutineStore?.workoutRoutine[0] === undefined) {\r\n const res = await axios.post(config.backend.url + 'workoutRoutine', {\r\n userId: await getUserId(),\r\n title: \"Default Routine Name\",\r\n description: \"Default Routine Description\",\r\n }, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n\r\n data.routineId = res.data.data.id\r\n }\r\n else {\r\n data.routineId = workoutRoutineStore.workoutRoutine[0].id\r\n }\r\n\r\n\r\n //check if its an update\r\n if (isUpdate) {\r\n //check if we hot swapped a different template in \r\n if (isTemplateData && originalId !== routineState.id) {\r\n\r\n const newData = {\r\n oldId: originalId,\r\n oldRoutineId: workoutRoutineStore.workoutRoutine[0].id,\r\n newDayOfWeek1: null,\r\n ...data\r\n }\r\n\r\n //check if we are hot swapping to a null template, if it is we can use that template\r\n if (routineState.dayOfWeek === null) {\r\n await axios.put(config.backend.url + 'routine/null/update', newData, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n }\r\n //else we create a new routine from the hot swapped template\r\n else {\r\n delete newData.id\r\n await axios.post(config.backend.url + 'routine/null/create', newData, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n }\r\n\r\n }\r\n //if we didnt hot swap a different template in just update the routine\r\n else {\r\n await axios.put(config.backend.url + 'routine', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n }\r\n }\r\n else if (routineState.dayOfWeek === null) {\r\n await axios.put(config.backend.url + 'routine/null/new', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n }\r\n //if its not an update just create the routine\r\n else {\r\n await axios.post(config.backend.url + 'routine', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n }\r\n //await new Promise((resolve) => setTimeout(resolve, 500))\r\n setIsTemplateData(false)\r\n setIsSubmitted(true)\r\n setIsSuccess(true)\r\n setIsLoading(false)\r\n }\r\n catch (e: any) {\r\n const errorMessage = e?.response?.data?.error?.message\r\n console.log('err')\r\n }\r\n }\r\n }\r\n else {\r\n setTitleError(true);\r\n }\r\n }\r\n\r\n // add exercise count for each time add exercise button is clicked\r\n const handleAddExercise = () => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n currentId: prevState.currentId + 1,\r\n exercises: [\r\n ...prevState.exercises,\r\n {\r\n exerciseId: prevState.currentId,\r\n title: '',\r\n repsWeight: [{\r\n reps: '',\r\n weight: '',\r\n }]\r\n }\r\n ]\r\n }))\r\n }\r\n //add new set to exercise\r\n const handleAddSet = (newExercise: Exercise) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (newExercise.exerciseId === ex.exerciseId) {\r\n return {\r\n ...ex,\r\n repsWeight: [\r\n ...ex.repsWeight,\r\n {\r\n reps: '',\r\n weight: '',\r\n }\r\n ]\r\n }\r\n }\r\n return ex;\r\n })\r\n }));\r\n\r\n }\r\n const handleSetTitle = (event: React.SyntheticEvent<Element, Event>, e: string) => {\r\n if (event === null) {\r\n return\r\n }\r\n setTitleError(false)\r\n setIsSaved(false)\r\n setIsSuccess(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({ ...prevState, title: e }));\r\n }\r\n\r\n const handleSetDescription = (e: string) => {\r\n setTitleError(false);\r\n setIsSaved(false)\r\n setIsSuccess(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({ ...prevState, description: e }));\r\n }\r\n\r\n const handleRepsTextInput = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, exercise: Exercise, index: number) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n let firstDigit = (e.target.value).toString().charAt(0);\r\n if (Number(e.target.value) > 999) {\r\n return;\r\n }\r\n else if (firstDigit === '0') {\r\n e.target.value = '0';\r\n }\r\n else if (e.target.value.length === 0) {\r\n e.target.value = '';\r\n }\r\n\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (exercise.exerciseId !== ex.exerciseId) {\r\n return ex;\r\n }\r\n return {\r\n ...ex,\r\n repsWeight: ex.repsWeight.map((rw: any, i: number) => {\r\n if (i === index) {\r\n return {\r\n ...rw,\r\n reps: e.target.value,\r\n };\r\n }\r\n return rw;\r\n }),\r\n };\r\n }),\r\n }));\r\n }\r\n\r\n const handleWeightTextInput = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, exercise: Exercise, index: number) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n let firstDigit = (e.target.value).toString().charAt(0);\r\n if (Number(e.target.value) > 999.9) {\r\n return;\r\n }\r\n else if (firstDigit === '0') {\r\n e.target.value = '0';\r\n }\r\n else if ((e.target.value.includes('.'))) {\r\n let parts = (e.target.value).split('.');\r\n if (parts.length > 1) {\r\n e.target.value = parts[0] + '.' + parts[1].substring(0, 1);\r\n }\r\n }\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (exercise.exerciseId !== ex.exerciseId) {\r\n return ex;\r\n }\r\n return {\r\n ...ex,\r\n repsWeight: ex.repsWeight.map((rw: any, i: number) => {\r\n if (i === index) {\r\n return {\r\n ...rw,\r\n weight: e.target.value,\r\n }\r\n }\r\n return rw;\r\n }),\r\n };\r\n }),\r\n }));\r\n }\r\n\r\n const handleExerciseNameChange = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, newExercise: Exercise) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((exer: Exercise) => {\r\n if (newExercise.exerciseId === exer.exerciseId) {\r\n return {\r\n ...exer,\r\n title: e.target.value,\r\n }\r\n }\r\n return exer\r\n }),\r\n }))\r\n }\r\n\r\n const handleRemoveSet = (exercise: Exercise, index: number) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (exercise.exerciseId === ex.exerciseId) {\r\n return {\r\n ...ex,\r\n repsWeight: ex.repsWeight.filter((rw: any, i: number) => i !== index),\r\n }\r\n }\r\n return ex;\r\n })\r\n }))\r\n }\r\n\r\n const handleRemoveExercise = (index: number) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.filter((ex: Exercise, i: number) => i !== index)\r\n }))\r\n\r\n handleClose();\r\n }\r\n\r\n const handleExitButton = () => {\r\n navigate('/routine')\r\n }\r\n\r\n const handleSelectRoutine = (event: React.SyntheticEvent<Element, Event>, selectedRoutine: DailyRoutine | string | null) => {\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n setIsDeleteSuccess(false)\r\n if (selectedRoutine === null || typeof selectedRoutine === 'string') {\r\n return;\r\n }\r\n setIsTemplateData(true)\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n id: selectedRoutine?.id,\r\n title: selectedRoutine?.title || '',\r\n dayOfWeek: selectedRoutine?.dayOfWeek,\r\n description: selectedRoutine?.description || '',\r\n currentId: selectedRoutine?.exercises.length || prevState.currentId,\r\n exercises: selectedRoutine?.exercises\r\n ? selectedRoutine.exercises.map((exercise: any, index: number) => ({\r\n title: exercise.title,\r\n exerciseId: index,\r\n repsWeight: exercise.repsWeight.map((repsWeight: any) => ({\r\n reps: repsWeight.reps,\r\n weight: repsWeight.weight,\r\n })),\r\n }))\r\n : prevState.exercises,\r\n }));\r\n };\r\n\r\n const handleDeleteRoutineButton = async () => {\r\n setIsDeleteLoading(true)\r\n setIsUpdate(false)\r\n try {\r\n if (routineState.id) {\r\n await checkCookies()\r\n const data = {\r\n id: routineState.id,\r\n //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991'\r\n userId: await getUserId()\r\n }\r\n const res = await axios.post(config.backend.url + 'routine/delete', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n workoutRoutineStore.fetchRoutines()\r\n //await new Promise((resolve) => setTimeout(resolve, 500))\r\n setIsDeleteLoading(false)\r\n setIsDeleteSuccess(true)\r\n setRoutineState({\r\n title: '',\r\n description: '',\r\n currentId: 0,\r\n exercises: [],\r\n });\r\n }\r\n }\r\n catch (err) {\r\n console.log(err)\r\n setIsDeleteLoading(false)\r\n }\r\n setIsDeleteLoading(false)\r\n }\r\n\r\n const handleCreateRoutineButton = async () => {\r\n //setIsUpdate(false)\r\n setIsTemplateData(true)\r\n setRoutineState({\r\n title: '',\r\n description: '',\r\n currentId: 0,\r\n exercises: [],\r\n });\r\n }\r\n\r\n const handleMoreIconClick = () => {\r\n setOpenModal(true)\r\n }\r\n return (\r\n <>\r\n <Container>\r\n <Wrapper>\r\n {isDataloading ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <>\r\n <Navbar>\r\n {isMobile\r\n ? <SettingsIcon sx={{ position: 'absolute', left: '30px', marginTop: '18px', color: 'white' }} onClick={handleMoreIconClick} />\r\n : <Button variant=\"contained\" size=\"large\" color=\"warning\" onClick={handleExitButton} sx={{ position: 'absolute', left: '10px', marginTop: '10px' }}>EXIT</Button>}\r\n <LoadingButton variant=\"contained\" type=\"submit\" size=\"large\" loading={isLoading} loadingPosition=\"start\" startIcon={isSuccess ? <CheckIcon /> : <SaveIcon />} sx={{\r\n position: 'absolute', right: '10px', marginTop: '10px', bgcolor: isSuccess ? 'green' : '#1D9BF0', ':disabled': {\r\n bgcolor: '#ccc'\r\n },\r\n ':hover': {\r\n bgcolor: isSuccess ? 'green' : '#1D9BF0',\r\n }\r\n }} onClick={handleSubmit}>SAVE</LoadingButton>\r\n </Navbar>\r\n <Autocomplete\r\n id=\"routine-name\"\r\n freeSolo\r\n blurOnSelect\r\n selectOnFocus\r\n value={routineState.title}\r\n options={workoutRoutineStore.dailyRoutines}\r\n getOptionLabel={(option: DailyRoutine | string) => {\r\n if (typeof option === \"string\") {\r\n return option;\r\n }\r\n return option.title;\r\n }}\r\n onInputChange={(event, value) => handleSetTitle(event, value)}\r\n onChange={(event, value) => handleSelectRoutine(event, value)}\r\n renderInput={(params) =>\r\n <StyledTitleTextField {...params}\r\n label=\"Routine Name...\"\r\n variant=\"outlined\"\r\n size={isMobile ? 'small' : 'medium'}\r\n required\r\n error={titleError}\r\n />}\r\n renderOption={(props: any, option: DailyRoutine | string) => {\r\n if (typeof option === \"string\") {\r\n return <Box {...props} key={routineState.id || 'key'}>{option}</Box>;\r\n }\r\n if (routineState.dayOfWeek !== option.dayOfWeek) {\r\n if (option.dayOfWeek === null) {\r\n return <Box {...props} key={option.id}>{\"OPEN | \" + option.title}</Box>;\r\n }\r\n return <Box {...props} key={option.id}>{option.dayOfWeek + \" | \" + option.title}</Box>;\r\n }\r\n }}\r\n\r\n />\r\n <StyledDescriptionTextField\r\n onChange={(e) => handleSetDescription(e.target.value)}\r\n label=\"Add a Description to your Routine...\"\r\n variant=\"filled\"\r\n multiline\r\n value={routineState.description}\r\n rows={4}\r\n />\r\n {\r\n !isMobile &&\r\n <DeleteButtonContainer>\r\n <LoadingButton variant=\"contained\" type=\"button\" size=\"medium\" color=\"error\" loading={isDeleteLoading} startIcon={isDeleteSuccess ? <CheckIcon /> : <DeleteForeverIcon />} loadingPosition='start' sx={{\r\n position: 'absolute', marginTop: '10px', ':disabled': { bgcolor: '#ccc' }\r\n }} onClick={handleDeleteRoutineButton} >{isMobile ? 'DELETE' : 'DELETE Routine'}</LoadingButton>\r\n <Button variant=\"contained\" size=\"medium\" color=\"primary\" sx={{ position: 'absolute', marginTop: '10px', right: '0px', marginRight: '10%' }} startIcon={<AddBoxIcon />} onClick={handleCreateRoutineButton}> {isMobile ? 'New' : 'CREATE New'}</Button>\r\n </DeleteButtonContainer>\r\n }\r\n {/* <ButtonContainer>\r\n <Button variant=\"contained\" type=\"submit\" size=\"large\" onClick={handleAddExercise} sx={{ bgcolor: '#1D9BF0 ' }}>Add Exercise</Button>\r\n </ButtonContainer> */}\r\n <DividerStyle variant='middle' sx={{ bgcolor: '#38444D' }} />\r\n <Stack spacing={3}>\r\n {\r\n routineState.exercises.map((exercise: any, index: number) =>\r\n exercise.exerciseId >= 0 ? (\r\n <ExerciseContainer key={index} style={{ marginLeft: isMobile ? '2%' : '10%', marginBottom: '15px', width: isMobile ? '96%' : '80%' }}>\r\n {\r\n isMobile\r\n ?\r\n <ExerciseMenuButtonComponent\r\n key={index}\r\n exercise={exercise}\r\n index={index}\r\n handleRemoveExercise={handleRemoveExercise}\r\n />\r\n :\r\n <Button\r\n variant=\"outlined\"\r\n size=\"medium\"\r\n color='error'\r\n onClick={() => (handleRemoveExercise(index))}\r\n style={{ position: 'absolute', right: '10px', top: '10px', minWidth: isMobile ? 'unset' : '', padding: isMobile ? '10px 15px 15px ' : '' }}>{isMobile ? 'X' : 'Remove'}</Button>\r\n }\r\n <ExerciseTextField\r\n label=\"Exercise Name\"\r\n autoComplete='off'\r\n value={exercise.title}\r\n size={isMobile ? 'small' : \"medium\"}\r\n onChange={(e) => handleExerciseNameChange(e, exercise)}\r\n style={{ width: isMobile ? '80%' : '35%' }}\r\n />\r\n <Divider sx={{ marginTop: isMobile ? '' : '20px', bgcolor: '#38444D' }} />\r\n\r\n <SetParentContainer>\r\n {\r\n exercise.repsWeight.map((rw: any, index2: number) =>\r\n <SetContainer key={index2}>\r\n <SetRemoveButton variant='outlined' color='error' size='medium' sx={{ minWidth: isMobile ? 'unset' : 'default', width: '10px' }} onClick={() => (handleRemoveSet(exercise, index2))}>X</SetRemoveButton>\r\n <Divider flexItem orientation='vertical' sx={{ marginLeft: isMobile ? '5px' : '20px', bgcolor: 'white' }} />\r\n <SetTypography>{index2 + 1}</SetTypography>\r\n <RepsTextField\r\n size='small'\r\n autoComplete='off'\r\n onKeyPress={(event) => {\r\n if (!/[0-9]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n value={rw.reps === '' ? '' : rw.reps}\r\n onChange={(e) => handleRepsTextInput(e, exercise, index2)}\r\n inputProps={{ max: 999, inputMode: 'numeric' }}\r\n InputProps={{\r\n endAdornment: < InputAdornment position=\"end\" style={{ color: 'white' }} >\r\n <Typography>reps</Typography>\r\n </InputAdornment>\r\n }}\r\n />\r\n <WeightTextField\r\n size='small'\r\n autoComplete='off'\r\n onKeyPress={(event) => {\r\n if (!/[0-9.]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n value={(rw.weight) === '' ? '' : rw.weight}\r\n onChange={(e) => (handleWeightTextInput(e, exercise, index2))}\r\n inputProps={{ inputMode: 'numeric' }}\r\n InputProps={{\r\n endAdornment: < InputAdornment position=\"end\" style={{ color: 'white' }} >\r\n <Typography>lbs/kg</Typography>\r\n </InputAdornment>\r\n }}\r\n />\r\n </SetContainer>\r\n )\r\n }\r\n\r\n </SetParentContainer>\r\n <SetButtonDiv>\r\n <Divider sx={{ bgcolor: '#38444D' }} />\r\n <AddSetButton variant=\"contained\" size=\"small\" onClick={() => handleAddSet(exercise)}>Add Set</AddSetButton>\r\n </SetButtonDiv>\r\n </ExerciseContainer>\r\n ) : null\r\n )\r\n }\r\n <div>\r\n <ButtonContainer>\r\n <Button variant=\"contained\" type=\"submit\" size=\"large\" onClick={handleAddExercise} sx={{ bgcolor: '#1D9BF0', marginBottom: '10px' }}>Add Exercise</Button>\r\n </ButtonContainer>\r\n </div>\r\n {\r\n isMobile &&\r\n <>\r\n <Modal\r\n open={openModal}\r\n onClose={handleCloseModal}\r\n closeAfterTransition\r\n slots={{ backdrop: Backdrop }}\r\n slotProps={{\r\n backdrop: {\r\n timeout: 200,\r\n },\r\n }}\r\n >\r\n <Fade in={openModal}>\r\n <StyledModalBox >\r\n <LoadingButton type=\"button\" size=\"medium\" loading={isDeleteLoading} startIcon={isDeleteSuccess ? <CheckIcon /> : <DeleteForeverIcon sx={{ color: 'red' }} />} loadingPosition='start' sx={{\r\n ':disabled': { bgcolor: '#ccc' },\r\n color: 'red'\r\n }} onClick={() => setOpenConfirmModal(true)} >Delete this routine template</LoadingButton>\r\n <Button size=\"medium\" startIcon={<AddBoxIcon />} onClick={(e) => (handleCreateRoutineButton(), setOpenModal(false))} sx={{ color: 'white' }}>CREATE New Routine Template</Button>\r\n <Button onClick={() => setOpenModal(false)} sx={{ color: 'white' }}>Close</Button>\r\n </StyledModalBox>\r\n </Fade>\r\n </Modal>\r\n <Modal\r\n open={openConfirmModal}\r\n onClose={() => setOpenConfirmModal(false)}\r\n >\r\n <StyledConfirmModalBox >\r\n <Typography style={{ color: 'white' }}>Are you sure you want to <span style={{ color: '#bb0606', fontStyle: 'italic' }}>Permanently Delete</span> this routine?</Typography>\r\n {/* <Typography style={{ color: 'white' }}> Are you sure you want to Delete it?</Typography> */}\r\n <div style={{ display: 'flex', flexDirection: 'row', marginTop: '10px', width: '100% ' }}>\r\n <Button variant='outlined' sx={{ marginRight: '10px', width: '50%' }} onClick={() => (handleDeleteRoutineButton(), setOpenConfirmModal(false))}>Yes</Button>\r\n <Button variant='outlined' sx={{ width: '50%' }} onClick={() => setOpenConfirmModal(false)}>No</Button>\r\n </div>\r\n </StyledConfirmModalBox>\r\n </Modal>\r\n </>\r\n }\r\n </Stack>\r\n </>\r\n }\r\n </Wrapper>\r\n </Container >\r\n\r\n </>\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n /* width: 100%;\r\n height: 100%;\r\n background: #192633;\r\n position: fixed;\r\n display: flex;\r\n justify-content: center;\r\n overflow: auto; */\r\n ${baseContainerStyles}\r\n\r\n`\r\nconst Wrapper = styled.div`\r\n width: ${isMobile ? '100%' : '85%'}; \r\n background-color: #15202b;\r\n position: relative;\r\n overflow: auto;\r\n padding-bottom: ${Capacitor.isNativePlatform() ? 'calc(80px + env(safe-area-inset-bottom))' : '60px'};\r\n`\r\nconst Navbar = styled.div`\r\n height: 60px;\r\n width: 100%;\r\n position: relative;\r\n display: flex;\r\n justify-content: center;\r\n`\r\nconst DividerStyle = styled(Divider)`\r\n\t//margin-top: 30px;\r\n\tmargin-top: ${isMobile ? '30px' : '60px'};\r\n\r\n`\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 50px;\r\n`\r\n\r\nconst DeleteButtonContainer = styled.div`\r\n display: flex;\r\n margin-top: 10px;\r\n margin-left: 10%;\r\n`\r\n\r\nconst ExerciseContainer = styled(Card)`\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n background: #15202B;\r\n //width: 80%;\r\n margin-top: 30px;\r\n min-height: 20vh;\r\n border: 1px solid #7C8A97;\r\n`\r\n\r\nconst SetButtonDiv = styled.div`\r\n position: absolute;\r\n bottom: 0;\r\n width: 100%;\r\n\r\n`\r\nconst AddSetButton = styled(Button)`\r\n width: 100%;\r\n justify-content: flex-start;\r\n border-radius: 1px;\r\n \r\n color: white;\r\n background-color: #15202B;\r\n padding-left: 11px;\r\n :hover {\r\n background-color: #2C3640;\r\n }\r\n :focus{\r\n outline: none;\r\n }\r\n`\r\nconst ExerciseTextField = styled(TextField)({\r\n marginTop: '10px',\r\n marginLeft: '10px',\r\n width: '35%',\r\n height: '56px',\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n});\r\n\r\nconst SetParentContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 50px;\r\n`\r\n\r\nconst SetContainer = styled.div`\r\n margin-top: 10px;\r\n margin-left: 11px;\r\n display:flex;\r\n flex-direction: row;\r\n`\r\n\r\nconst SetRemoveButton = styled(Button)({\r\n\r\n})\r\n\r\nconst SetTypography = styled.div`\r\n margin-left: ${isMobile ? '9px' : '20px'};\r\n color: white;\r\n font-size: 22px;\r\n min-width: 24px;\r\n`\r\n\r\nconst StyledTitleTextField = styled(TextField)({\r\n marginTop: '2%',\r\n width: '80%',\r\n marginLeft: '10%',\r\n font: 'bold',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#808080',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '& .MuiIconButton-root': {\r\n color: 'white',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n})\r\n\r\nconst StyledDescriptionTextField = styled(TextField)({\r\n marginLeft: '10%',\r\n width: '80%',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiFilledInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiFilledInput-root': {\r\n '&:before': {\r\n borderBottomColor: '#808080',\r\n },\r\n '&:hover:before': {\r\n borderBottomColor: '#bdbdbd',\r\n },\r\n '&.Mui-focused:after': {\r\n borderBottomColor: 'lightgrey',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n})\r\n\r\nconst RepsTextField = styled(TextField)({\r\n marginLeft: '20px',\r\n width: '35%',\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n});\r\n\r\nconst WeightTextField = styled(TextField)({\r\n paddingRight: '5px',\r\n marginLeft: '20px',\r\n width: '35%',\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n});\r\n\r\nconst StyledMenu = styled(Menu)({\r\n '& .MuiPaper-root': {\r\n backgroundColor: '#192633',\r\n color: 'white'\r\n }\r\n})\r\n\r\n\r\nconst StyledModalBox = styled(Box)`\r\n position: absolute;\r\n background-color: #2c353b;\r\n bottom: 0;\r\n left: 0;\r\n width: 100%;\r\n border: 2px solid #2c353b;\r\n border-top-right-radius: 6px;\r\n border-top-left-radius: 6px;\r\n box-shadow: 24;\r\n display: flex;\r\n flex-direction: column;\r\n gap: 3px;\r\n`\r\nconst StyledConfirmModalBox = styled(Box)`\r\n position: absolute;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center; \r\n background-color: #272727;\r\n width: 60%;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n border: 2px solid #272727;\r\n border-radius: 5px;\r\n box-shadow: 24;\r\n padding: 6px;\r\n \r\n`\r\n\r\nexport default observer(DailyRoutineComponent)","import React, { useEffect, useState } from 'react'\r\nimport Navbar from '../components/Navbar';\r\nimport RoutineComponent from '../components/routines/DailyRoutineComponent';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport getDayOfWeek from '../utils/GetDayOfWeek';\r\nimport MobileBottomBar from '../components/Mobile/MobileBottomBar';\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nconst RoutinePage = (props: any) => {\r\n const navigate = useNavigate();\r\n const [dayOfWeek, setDayOfWeek] = useState<string | undefined>(getDayOfWeek());\r\n useEffect(() => {\r\n const currentDayOfWeek = getDayOfWeek()\r\n if (currentDayOfWeek === undefined) {\r\n alert(\"page 404 not found\")\r\n navigate('/routine');\r\n }\r\n }, [])\r\n return (\r\n <>\r\n <Navbar title={`${dayOfWeek?.charAt(0).toUpperCase()}${dayOfWeek?.slice(1).toLowerCase()}'s Routine`} />\r\n <RoutineComponent />\r\n {/* {isMobile && <MobileBottomBar />} */}\r\n </>\r\n\r\n )\r\n}\r\n\r\nexport default RoutinePage","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardHeaderUtilityClass(slot) {\n return generateUtilityClass('MuiCardHeader', slot);\n}\nconst cardHeaderClasses = generateUtilityClasses('MuiCardHeader', ['root', 'avatar', 'action', 'content', 'title', 'subheader']);\nexport default cardHeaderClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"avatar\", \"className\", \"component\", \"disableTypography\", \"subheader\", \"subheaderTypographyProps\", \"title\", \"titleTypographyProps\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport Typography from '../Typography';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport cardHeaderClasses, { getCardHeaderUtilityClass } from './cardHeaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n avatar: ['avatar'],\n action: ['action'],\n content: ['content'],\n title: ['title'],\n subheader: ['subheader']\n };\n return composeClasses(slots, getCardHeaderUtilityClass, classes);\n};\nconst CardHeaderRoot = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Root',\n overridesResolver: (props, styles) => _extends({\n [`& .${cardHeaderClasses.title}`]: styles.title,\n [`& .${cardHeaderClasses.subheader}`]: styles.subheader\n }, styles.root)\n})({\n display: 'flex',\n alignItems: 'center',\n padding: 16\n});\nconst CardHeaderAvatar = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Avatar',\n overridesResolver: (props, styles) => styles.avatar\n})({\n display: 'flex',\n flex: '0 0 auto',\n marginRight: 16\n});\nconst CardHeaderAction = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n flex: '0 0 auto',\n alignSelf: 'flex-start',\n marginTop: -4,\n marginRight: -8,\n marginBottom: -4\n});\nconst CardHeaderContent = styled('div', {\n name: 'MuiCardHeader',\n slot: 'Content',\n overridesResolver: (props, styles) => styles.content\n})({\n flex: '1 1 auto'\n});\nconst CardHeader = /*#__PURE__*/React.forwardRef(function CardHeader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardHeader'\n });\n const {\n action,\n avatar,\n className,\n component = 'div',\n disableTypography = false,\n subheader: subheaderProp,\n subheaderTypographyProps,\n title: titleProp,\n titleTypographyProps\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component,\n disableTypography\n });\n const classes = useUtilityClasses(ownerState);\n let title = titleProp;\n if (title != null && title.type !== Typography && !disableTypography) {\n title = /*#__PURE__*/_jsx(Typography, _extends({\n variant: avatar ? 'body2' : 'h5',\n className: classes.title,\n component: \"span\",\n display: \"block\"\n }, titleTypographyProps, {\n children: title\n }));\n }\n let subheader = subheaderProp;\n if (subheader != null && subheader.type !== Typography && !disableTypography) {\n subheader = /*#__PURE__*/_jsx(Typography, _extends({\n variant: avatar ? 'body2' : 'body1',\n className: classes.subheader,\n color: \"text.secondary\",\n component: \"span\",\n display: \"block\"\n }, subheaderTypographyProps, {\n children: subheader\n }));\n }\n return /*#__PURE__*/_jsxs(CardHeaderRoot, _extends({\n className: clsx(classes.root, className),\n as: component,\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [avatar && /*#__PURE__*/_jsx(CardHeaderAvatar, {\n className: classes.avatar,\n ownerState: ownerState,\n children: avatar\n }), /*#__PURE__*/_jsxs(CardHeaderContent, {\n className: classes.content,\n ownerState: ownerState,\n children: [title, subheader]\n }), action && /*#__PURE__*/_jsx(CardHeaderAction, {\n className: classes.action,\n ownerState: ownerState,\n children: action\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardHeader.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The action to display in the card header.\n */\n action: PropTypes.node,\n /**\n * The Avatar element to display.\n */\n avatar: PropTypes.node,\n /**\n * @ignore\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, `subheader` and `title` won't be wrapped by a Typography component.\n * This can be useful to render an alternative Typography variant by wrapping\n * the `title` text, and optional `subheader` text\n * with the Typography component.\n * @default false\n */\n disableTypography: PropTypes.bool,\n /**\n * The content of the component.\n */\n subheader: PropTypes.node,\n /**\n * These props will be forwarded to the subheader\n * (as long as disableTypography is not `true`).\n */\n subheaderTypographyProps: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The content of the component.\n */\n title: PropTypes.node,\n /**\n * These props will be forwarded to the title\n * (as long as disableTypography is not `true`).\n */\n titleTypographyProps: PropTypes.object\n} : void 0;\nexport default CardHeader;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getCardContentUtilityClass(slot) {\n return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getCardContentUtilityClass } from './cardContentClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardContentUtilityClass, classes);\n};\nconst CardContentRoot = styled('div', {\n name: 'MuiCardContent',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n };\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardContent'\n });\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n component\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardContentRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import { useEffect, useState } from 'react';\r\nimport { TextField, Autocomplete, Card, CardContent, CardHeader, Typography, Button, CircularProgress } from \"@mui/material\";\r\nimport FitnessCenterIcon from '@mui/icons-material/FitnessCenter';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport styled from \"@emotion/styled\";\r\nimport axios from 'axios';\r\nimport config from '../../config';\r\nimport { set, toJS, reaction, autorun } from \"mobx\";\r\nimport { observer } from 'mobx-react-lite';\r\nimport workoutRoutineStore from '../../store/workoutRoutineStore';\r\nimport GetRoutine from '../../utils/GetRoutine';\r\nimport LoadingButton from '@mui/lab/LoadingButton';\r\nimport WorkoutRoutine from '../../types/WorkoutRoutine';\r\nimport SaveIcon from '@mui/icons-material/Save';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport ArrowRightAltIcon from '@mui/icons-material/ArrowRightAlt';\r\nimport ArrowDownwardIcon from '@mui/icons-material/ArrowDownward';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { UsePost, UsePut } from '../../libs/api';\r\nimport { baseContainerStyles } from '../styled/baseStyles';\r\nimport ArrowUpwardIcon from '@mui/icons-material/ArrowUpward';\r\nimport WestIcon from '@mui/icons-material/West';\r\nimport EastIcon from '@mui/icons-material/East';\r\nimport { Capacitor } from '@capacitor/core';\r\n//TODO limit title size being displayed for dailyroutine \r\n\r\nconst WorkoutRoutineComponent = () => {\r\n const navigate = useNavigate();\r\n const { putLoading, putResponse, callPut } = UsePut()\r\n const { postLoading, postData, callPost } = UsePost()\r\n\r\n const [titleError, setTitleError] = useState(false);\r\n const [descError, setDescError] = useState(false);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isDataloading, setIsDataLoading] = useState(true);\r\n const [isSuccess, setIsSuccess] = useState(false);\r\n const [isSaved, setIsSaved] = useState(true);\r\n const [ifWorkoutRoutine, setIfWorkoutRoutine] = useState(true);\r\n const [isShiftLoading, setIsShiftLoading] = useState(false);\r\n const [isShiftUpLoading, setIsShiftUpLoading] = useState(false);\r\n const [routineState, setRoutineState] = useState({\r\n title: '',\r\n description: '',\r\n });\r\n\r\n useEffect(() => {\r\n const fetch = async () => {\r\n setIsDataLoading(true);\r\n await workoutRoutineStore.fetchRoutines();\r\n if (workoutRoutineStore.workoutRoutine.length > 0) {\r\n setIfWorkoutRoutine(true)\r\n setRoutineState((prev) => ({ ...prev, title: workoutRoutineStore.workoutRoutine[0].title, description: workoutRoutineStore.workoutRoutine[0].description || '' }));\r\n }\r\n else {\r\n setIfWorkoutRoutine(false)\r\n\r\n }\r\n setIsDataLoading(false);\r\n }\r\n fetch()\r\n }, []);\r\n\r\n\r\n\r\n const handleSetTitle = (event: any, e: string) => {\r\n setTitleError(false);\r\n setIsSaved(false);\r\n setIsSuccess(false)\r\n setRoutineState((prev) => ({ ...prev, title: e }));\r\n }\r\n\r\n const handleSetDescription = (event: any, e: string) => {\r\n\r\n setDescError(false);\r\n setIsSaved(false);\r\n setIsSuccess(false)\r\n setRoutineState((prev) => ({ ...prev, description: e }));\r\n }\r\n\r\n const handleButtonClick = (id: string) => {\r\n if (isSaved) {\r\n return navigate(`/routine/${id}`);\r\n }\r\n alert(\"Please save your routine before adding workouts\");\r\n }\r\n const handleSubmit = async (e: any) => {\r\n //check if title is set\r\n setIsSuccess(false)\r\n if (routineState.title) {\r\n //check if description is set\r\n if (!routineState.description) {\r\n setDescError(true);\r\n return\r\n }\r\n if (isSaved) {\r\n setIsSuccess(true)\r\n return\r\n }\r\n setIsLoading(true);\r\n try {\r\n if (ifWorkoutRoutine) {\r\n //update workoutRoutine\r\n await callPut('workoutRoutine', {\r\n title: routineState.title,\r\n description: routineState.description,\r\n id: workoutRoutineStore.workoutRoutine[0].id\r\n })\r\n // const res = await axios.put(config.backend.url + 'workoutRoutine', {\r\n // //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991',\r\n // userId: Cookies.get('userId'),\r\n // title: routineState.title,\r\n // description: routineState.description,\r\n // id: workoutRoutineStore.workoutRoutine[0].id\r\n // }, {\r\n // headers: {\r\n // \"Authorization\": `Bearer ${Cookies.get('jwt')}`\r\n // }\r\n // })\r\n } else {\r\n await callPost('workoutRoutine', {\r\n title: routineState.title,\r\n description: routineState.description,\r\n })\r\n // const res = await axios.post(config.backend.url + 'workoutRoutine', {\r\n // //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991',\r\n // userId: Cookies.get('userId'),\r\n // title: routineState.title,\r\n // description: routineState.description,\r\n // }, {\r\n // headers: {\r\n // \"Authorization\": `Bearer ${Cookies.get('jwt')}`\r\n // }\r\n // })\r\n }\r\n //await new Promise((resolve) => setTimeout(resolve, 500))\r\n setIsLoading(false);\r\n setIsSaved(true);\r\n setIsSuccess(true);\r\n setIfWorkoutRoutine(true)\r\n }\r\n catch (err: any) {\r\n const errorMessage = err?.response?.data?.error?.message\r\n console.log(errorMessage);\r\n }\r\n }\r\n else {\r\n setTitleError(true);\r\n }\r\n }\r\n\r\n const handleSkipTodaysWorkoutButton = async () => {\r\n try {\r\n setIsShiftLoading(true)\r\n //none null day of the week\r\n const activeRoutine = workoutRoutineStore.dailyRoutines.filter((routine) => routine.dayOfWeek !== null)\r\n if (!activeRoutine.length) {\r\n setIsShiftLoading(false)\r\n return\r\n }\r\n await callPost('routine/skip', {\r\n routineId: workoutRoutineStore.workoutRoutine[0].id,\r\n workoutRoutine: activeRoutine\r\n })\r\n // const res = await axios.post(config.backend.url + 'routine/skip', {\r\n // userId: Cookies.get('userId'),\r\n // routineId: workoutRoutineStore.workoutRoutine[0].id,\r\n // workoutRoutine: activeRoutine\r\n // },\r\n // {\r\n // headers: {\r\n // \"Authorization\": `Bearer ${Cookies.get('jwt')}`\r\n // }\r\n // }\r\n // )\r\n }\r\n catch (error: any) {\r\n console.log(error)\r\n }\r\n await workoutRoutineStore.fetchRoutines()\r\n setIsShiftLoading(false)\r\n }\r\n\r\n const handleShiftWorkoutUpButton = async () => {\r\n try {\r\n setIsShiftUpLoading(true)\r\n //none null day of the week\r\n const activeRoutine = workoutRoutineStore.dailyRoutines.filter((routine) => routine.dayOfWeek !== null)\r\n if (!activeRoutine.length) {\r\n setIsShiftUpLoading(false)\r\n return\r\n }\r\n await callPost('routine/shiftup', {\r\n routineId: workoutRoutineStore.workoutRoutine[0].id,\r\n workoutRoutine: activeRoutine\r\n })\r\n }\r\n catch (error: any) {\r\n console.log(error)\r\n }\r\n await workoutRoutineStore.fetchRoutines()\r\n setIsShiftUpLoading(false)\r\n }\r\n\r\n const handleExitButton = () => {\r\n navigate('/')\r\n }\r\n\r\n return (\r\n <>\r\n <Container>\r\n <Wrapper>\r\n {isDataloading ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <>\r\n <Navbar>\r\n {!isMobile && <Button variant=\"contained\" size=\"large\" color=\"warning\" onClick={handleExitButton} sx={{ position: 'absolute', left: '10px', marginTop: '10px' }}>EXIT</Button>}\r\n <LoadingButton variant=\"contained\" type=\"submit\" size={\"large\"} loading={isLoading} loadingPosition=\"start\" startIcon={isSuccess ? <CheckIcon /> : <SaveIcon />} sx={{\r\n position: 'absolute', right: '10px', marginTop: '10px', bgcolor: isSuccess ? 'green' : '#1D9BF0', ':disabled': {\r\n bgcolor: '#ccc'\r\n },\r\n ':hover': {\r\n bgcolor: isSuccess ? 'green' : '#1D9BF0',\r\n }\r\n }} onClick={handleSubmit}>SAVE</LoadingButton>\r\n </Navbar>\r\n <StyledTitleTextField\r\n onChange={(e) => handleSetTitle(e, e.target.value)}\r\n label=\"Workout Routine Name\"\r\n variant=\"outlined\"\r\n value={routineState.title}\r\n required\r\n error={titleError}\r\n autoFocus={!ifWorkoutRoutine}\r\n />\r\n <StyledDescTextField\r\n onChange={(e) => handleSetDescription(e, e.target.value)}\r\n label=\"Add a Description to your Workout Routine\"\r\n variant=\"filled\"\r\n value={routineState.description}\r\n multiline\r\n rows={4}\r\n required\r\n error={descError}\r\n />\r\n <RoutineWrapper>\r\n\r\n <MyRoutineContainer>\r\n <LoadingButton loading={isShiftUpLoading} startIcon={isMobile ? <ArrowUpwardIcon /> : <WestIcon />} loadingPosition=\"start\" variant=\"contained\" size={isMobile ? 'small' : 'large'} color=\"info\" onClick={handleShiftWorkoutUpButton}\r\n sx={{\r\n ':disabled': {\r\n bgcolor: '#ccc'\r\n },\r\n ':hover': {\r\n bgcolor: '#2CA884',\r\n },\r\n width: (isMobile ? '40%' : 'auto'),\r\n backgroundColor: '#2CA884',\r\n flex: isMobile ? '' : 1,\r\n\r\n }}\r\n >\r\n Shift Routine\r\n </LoadingButton>\r\n\r\n\r\n {!isMobile &&\r\n <IconContainer>\r\n <FitnessCenterIcon color=\"primary\" sx={{ fontSize: 30, marginLeft: isMobile ? '50px' : '' }} />\r\n <Language style={{ color: 'white', fontSize: '24px' }}>Weekly Routine</Language>\r\n </IconContainer>}\r\n <LoadingButton loading={isShiftLoading} startIcon={isMobile ? <ArrowDownwardIcon /> : ''} endIcon={isMobile ? '' : <EastIcon />} loadingPosition=\"start\" variant=\"contained\" size={isMobile ? 'small' : 'large'} color=\"info\" onClick={handleSkipTodaysWorkoutButton}\r\n sx={{\r\n ':disabled': {\r\n bgcolor: '#ccc'\r\n },\r\n ':hover': {\r\n bgcolor: '#2CA884',\r\n },\r\n width: (isMobile ? '40%' : 'auto'),\r\n backgroundColor: '#2CA884',\r\n flex: isMobile ? '' : 1,\r\n }}\r\n >\r\n Shift Routine\r\n </LoadingButton>\r\n </MyRoutineContainer>\r\n\r\n <CardWrapper>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Sunday\" />\r\n <CardContentContainer>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"SUNDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"7\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"SUNDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Monday\" />\r\n <CardContentContainer >\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"MONDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle>\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"1\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"MONDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Tuesday\" />\r\n <CardContentContainer>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"TUESDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"2\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"TUESDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Wednesday\" />\r\n <CardContentContainer>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"WEDNESDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"3\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"WEDNESDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Thursday\" />\r\n <CardContentContainer>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"THURSDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"4\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"THURSDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Friday\" />\r\n <CardContentContainer>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"FRIDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"5\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"FRIDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Saturday\" />\r\n <CardContentContainer>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"SATURDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size={isMobile ? 'medium' : 'large'} onClick={() => handleButtonClick(\"6\")}>{GetRoutine(workoutRoutineStore.dailyRoutines, \"SATURDAY\") ? 'Edit Routine' : 'New Routine'}</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContentContainer>\r\n </CardStyle>\r\n\r\n </CardWrapper>\r\n\r\n\r\n {/* \r\n <CardWrapper>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Monday\" />\r\n <CardContent >\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"MONDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle>\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"1\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Tuesday\" />\r\n <CardContent>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"TUESDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"2\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Wednesday\" />\r\n <CardContent>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"WEDNESDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"3\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Thursday\" />\r\n <CardContent>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"THURSDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"4\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Friday\" />\r\n <CardContent>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"FRIDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"5\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Saturday\" />\r\n <CardContent>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"SATURDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"6\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n <CardStyle >\r\n <CardHeaderStyle title=\"Sunday\" />\r\n <CardContent>\r\n <RoutineTitleStyle variant=\"h5\" align=\"center\">\r\n {GetRoutine(workoutRoutineStore.dailyRoutines, \"SUNDAY\")?.title || 'Rest Day'}\r\n </RoutineTitleStyle >\r\n <WorkoutButtonWrapper>\r\n <WorkoutButton variant=\"contained\" size='large' onClick={() => handleButtonClick(\"7\")}>Create Routine</WorkoutButton>\r\n </WorkoutButtonWrapper>\r\n </CardContent>\r\n </CardStyle>\r\n </CardWrapper> */}\r\n {/* {!ifWorkoutRoutine && <NoWorkoutRoutineMessage>\r\n <Typography variant='h3'>\r\n You Can Start Creating Your Weekly Routine By\r\n <br />\r\n Entering a Workout Routine Name and Saving It!\r\n </Typography>\r\n </NoWorkoutRoutineMessage>} */}\r\n </RoutineWrapper>\r\n </>}\r\n </Wrapper>\r\n </Container>\r\n </>\r\n )\r\n}\r\n\r\nexport default observer(WorkoutRoutineComponent)\r\n\r\nconst Container = styled.div`\r\n /* width: 100%;\r\n height: 100%;\r\n background: #192633;\r\n position: fixed;\r\n display: flex;\r\n justify-content: center;\r\n overflow: auto; */\r\n ${baseContainerStyles}\r\n /* padding-bottom: ${isMobile ? (Capacitor.getPlatform() === 'ios' ? 'calc(env(safe-area-inset-top) + 76px)' : '112px') : ''}; */\r\n`\r\n\r\nconst Navbar = styled.div`\r\n height: 60px;\r\n width: 100%;\r\n position: relative;\r\n display: flex;\r\n`\r\n\r\nconst Wrapper = styled.div`\r\n width: ${isMobile ? '100%' : '85%'};\r\n background-color: #15202b;\r\n position: relative;\r\n overflow: auto;\r\n scrollbar-width: none;\r\n /* padding-bottom: ${isMobile ? '100px' : ''}; */\r\n padding-bottom: ${Capacitor.isNativePlatform() ? 'calc(200px + env(safe-area-inset-bottom))' : (isMobile ? '140px' : '')};\r\n`\r\nconst StyledTitleTextField = styled(TextField)({\r\n marginTop: '2%',\r\n width: '80%',\r\n marginLeft: '10%',\r\n font: 'bold',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#808080',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n})\r\n\r\nconst StyledDescTextField = styled(TextField)({\r\n marginLeft: '10%',\r\n width: '80%',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiFilledInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiFilledInput-root': {\r\n '&:before': {\r\n borderBottomColor: '#808080',\r\n },\r\n '&:hover:before': {\r\n borderBottomColor: '#bdbdbd',\r\n },\r\n '&.Mui-focused:after': {\r\n borderBottomColor: 'lightgrey',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n})\r\n\r\n\r\nconst RoutineWrapper = styled.div`\r\n width: 100%;\r\n height: 800px;\r\n position: relative;\r\n z-index: 10;\r\n border-radius: 10px;\r\n align-items: center;\r\n margin-bottom: ${isMobile ? '450px' : '180px'};\r\n`\r\n//navbar\r\nconst MyRoutineContainer = styled.div`\r\n height: 55px;\r\n background-color: #15202b;\r\n /* padding: 10px 20px; */\r\n margin-top: 50px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: ${isMobile ? 'space-between' : 'center'};\r\n border-radius: 5px;\r\n margin-left: ${isMobile ? '5%' : ''};\r\n margin-right: ${isMobile ? '5%' : ''};\r\n margin-bottom: ${isMobile ? '2%' : ''};\r\n`\r\n\r\nconst Language = styled.span`\r\n font-style: 14px;\r\n`\r\n\r\nconst IconContainer = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: 5px;\r\n background-color: transparent;\r\n border: none;\r\n flex: 1;\r\n justify-content: center;\r\n`\r\n\r\nconst CardWrapper = styled.div`\r\n display: ${isMobile ? '' : 'flex'};\r\n height: 100%;\r\n width: 100%;\r\n`\r\n\r\nconst CardStyle = styled(Card)`\r\n width: 90%; \r\n position: relative;\r\n background-color: #cacaca;\r\n margin-left: ${isMobile ? '5%' : ''};\r\n margin-bottom: ${isMobile ? '2%' : ''};\r\n`\r\n\r\nconst CardHeaderStyle = styled(CardHeader)`\r\n background-color: #e9e9e9;\r\n color: black ;\r\n text-align: center;\r\n .MuiCardHeader-title {\r\n font-size: 20px;\r\n }\r\n`\r\n\r\nconst WorkoutButtonWrapper = styled.div`\r\n justify-content: center;\r\n display: flex;\r\n bottom: 0;\r\n left: 50%;\r\n transform: translateX(-50%);\r\n position: absolute;\r\n margin-bottom: ${isMobile ? '' : '50px'};\r\n`\r\n\r\nconst WorkoutButton = styled(Button)`\r\n \r\n`\r\n\r\nconst RoutineTitleStyle = styled(Typography)` \r\n margin-top: ${isMobile ? '10px' : '200px'};\r\n margin-bottom: ${isMobile ? '20px' : ''};\r\n`\r\n\r\nconst CardContentContainer = styled(CardContent)({\r\n display: 'flex',\r\n flexDirection: 'column',\r\n})\r\n\r\n\r\nconst NoWorkoutRoutineMessage = styled.div`\r\n position: absolute;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-align: center;\r\n color: white;\r\n width: 100%;\r\n height: 100%;\r\n transform: translate(-50%, -50%);\r\n top: 56.9%;\r\n left: 50%;\r\n background-color: rgba(0, 0, 0, 0.63);\r\n`","\r\nimport { isMobile } from \"react-device-detect\"\r\nimport MobileBottomBar from \"../components/Mobile/MobileBottomBar\"\r\nimport Navbar from \"../components/Navbar\"\r\nimport WorkoutRoutineComponent from \"../components/routines/WorkoutRoutineComponent\"\r\n\r\nconst WorkoutRoutinePage = (props: any) => {\r\n return (\r\n <>\r\n <Navbar title={'Weekly Routine Split'} />\r\n <WorkoutRoutineComponent />\r\n {isMobile && <MobileBottomBar />}\r\n </>\r\n )\r\n}\r\n\r\nexport default WorkoutRoutinePage","import React, { useEffect } from 'react'\r\nimport styled from '@emotion/styled'\r\nimport { useState, ChangeEvent } from 'react';\r\nimport {\r\n TextField,\r\n Stack,\r\n Button,\r\n Divider,\r\n Card,\r\n Typography,\r\n InputAdornment,\r\n Menu,\r\n Autocomplete,\r\n Box,\r\n CircularProgress\r\n} from '@mui/material';\r\nimport Exercise from '../../../types/Exercise';\r\nimport Routine from '../../../types/Routine';\r\nimport axios from 'axios';\r\nimport config from '../../../config';\r\nimport { useLocation, useNavigate } from 'react-router-dom';\r\nimport LoggedRoutine from '../../../types/Logged/LoggedRoutine';\r\nimport LoadingButton from '@mui/lab/LoadingButton';\r\nimport SaveIcon from '@mui/icons-material/Save';\r\nimport CheckIcon from '@mui/icons-material/Check';\r\nimport DailyRoutine from '../../../types/DailyRoutine';\r\nimport workoutRoutineStore from '../../../store/workoutRoutineStore';\r\nimport { isMobile } from 'react-device-detect';\r\nimport { set } from 'mobx';\r\nimport Cookies from 'js-cookie';\r\nimport { checkCookies } from '../../../libs/api';\r\nimport { getRoutineStatePref, getToken, getUserId, setRoutineStatePref } from '../../../utils/mobileStorage';\r\nimport { baseContainerStyles } from '../../styled/baseStyles';\r\nimport ExerciseMenuButtonComponent from '../../styled/ExerciseMenuButtonComponent';\r\nimport { debounce } from 'lodash';\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\ninterface Props {\r\n startDate: string,\r\n routineState: LoggedRoutine,\r\n}\r\n\r\nfunction LoggedWorkout() {\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n const data = location.state as Props;\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isDataloading, setIsDataLoading] = useState(true);\r\n const [titleError, setTitleError] = useState(false);\r\n const [isSuccess, setIsSuccess] = useState(false);\r\n const [isSaved, setIsSaved] = useState(true);\r\n const [isUpdate, setIsUpdate] = useState(false);\r\n const [loggedWorkoutId, setLoggedWorkoutId] = useState<number>();\r\n const [routineState, setRoutineState] = useState<Routine>({\r\n title: '',\r\n description: '',\r\n currentId: 0,\r\n exercises: [],\r\n });\r\n const moment = require('moment');\r\n const storedLoggedRoutine = data.routineState\r\n useEffect(() => {\r\n const getRoutineState = async () => {\r\n const routineStatePref = await getRoutineStatePref()\r\n const storageLoggedRoutine = JSON.parse(routineStatePref || '')\r\n if (storageLoggedRoutine.futureDate) {\r\n setIsUpdate(true)\r\n } else {\r\n //remove id since its a dailyroutine id\r\n delete storageLoggedRoutine.id\r\n }\r\n setRoutineState(storageLoggedRoutine)\r\n }\r\n //If there is a routine in local storage use that else if\r\n if (localStorage.getItem('routineState')) {\r\n setIsDataLoading(true)\r\n let storageLoggedRoutine\r\n if (Capacitor.isNativePlatform()) {\r\n getRoutineState()\r\n } else {\r\n storageLoggedRoutine = JSON.parse(localStorage.getItem('routineState')!);\r\n }\r\n\r\n\r\n if (storageLoggedRoutine.futureDate) {\r\n setIsUpdate(true)\r\n } else {\r\n //remove id since its a dailyroutine id\r\n delete storageLoggedRoutine.id\r\n }\r\n //update Routine state \r\n setRoutineState(storageLoggedRoutine)\r\n setIsDataLoading(false)\r\n }\r\n //on submits clear the storage if it exists\r\n else if (storedLoggedRoutine) {\r\n setIsDataLoading(true)\r\n if (storedLoggedRoutine.futureDate) {\r\n setIsUpdate(true)\r\n } else {\r\n //remove id since its a dailyroutine id\r\n delete storedLoggedRoutine.id\r\n }\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n title: storedLoggedRoutine?.title || '',\r\n description: storedLoggedRoutine?.description || '',\r\n currentId: storedLoggedRoutine?.exercises.length || prevState.currentId,\r\n exercises: storedLoggedRoutine?.exercises\r\n ? storedLoggedRoutine.exercises.map((exercise, index) => ({\r\n title: exercise.title,\r\n exerciseId: index,\r\n repsWeight: exercise.repsWeight.map((repsWeight) => ({\r\n reps: repsWeight.reps,\r\n weight: repsWeight.weight,\r\n })),\r\n }))\r\n : prevState.exercises,\r\n }));\r\n setIsDataLoading(false)\r\n }\r\n setIsDataLoading(false)\r\n }, [])\r\n\r\n useEffect(() => {\r\n //reset submit button\r\n setIsSuccess(false)\r\n setIsSaved(false)\r\n const debouncedSave = debounce(async () => {\r\n if (Capacitor.isNativePlatform()) {\r\n await setRoutineStatePref(JSON.stringify(routineState))\r\n } else {\r\n localStorage.setItem('routineState', JSON.stringify(routineState));\r\n }\r\n }, 2000); // delay in milliseconds\r\n\r\n debouncedSave();\r\n\r\n // Cleanup function to cancel the debounced save if the component unmounts while the save is still pending\r\n return () => {\r\n debouncedSave.cancel();\r\n };\r\n }, [routineState])\r\n\r\n const handleSubmit = async (e: any) => {\r\n setIsSuccess(false)\r\n //title isnt blank\r\n if (routineState.title) {\r\n if (isSaved) {\r\n setIsSuccess(true)\r\n return\r\n }\r\n setIsLoading(true);\r\n try {\r\n // TODO: add id for routine on update so we can delete old entry before creating new one on update\r\n await checkCookies()\r\n const newData: LoggedRoutine = {\r\n userId: await getUserId() || '',\r\n title: routineState.title,\r\n description: routineState.description,\r\n exercises: routineState.exercises,\r\n futureDate: moment(data.startDate).format('YYYY-MM-DDTHH:mm:ss.SSSZ'),\r\n }\r\n if (isUpdate) {\r\n newData.id = storedLoggedRoutine?.id || loggedWorkoutId\r\n const res = await axios.put(config.backend.url + 'loggedWorkout', newData, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n }\r\n else {\r\n const res = await axios.post(config.backend.url + 'loggedWorkout', newData, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n setIsUpdate(true)\r\n setLoggedWorkoutId(res.data.data.id)\r\n }\r\n setIsSuccess(true);\r\n setIsLoading(false);\r\n }\r\n catch (e: any) {\r\n const errorMessage = e?.response?.data?.error?.message\r\n console.log(errorMessage)\r\n }\r\n }\r\n else {\r\n setTitleError(true);\r\n }\r\n\r\n // check if data.startDate is a futureDate to set futureDate\r\n }\r\n // add exercise count for each time add exercise button is clicked\r\n const handleAddExercise = () => {\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n currentId: prevState.currentId + 1,\r\n exercises: [\r\n ...prevState.exercises,\r\n {\r\n exerciseId: prevState.currentId,\r\n title: '',\r\n repsWeight: [{\r\n reps: '',\r\n weight: '',\r\n }]\r\n }\r\n ]\r\n }))\r\n }\r\n //add new set to exercise\r\n const handleAddSet = (newExercise: Exercise) => {\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (newExercise.exerciseId === ex.exerciseId) {\r\n return {\r\n ...ex,\r\n repsWeight: [\r\n ...ex.repsWeight,\r\n {\r\n reps: '',\r\n weight: '',\r\n }\r\n ]\r\n }\r\n }\r\n return ex;\r\n })\r\n }));\r\n }\r\n const handleSetTitle = (event: React.SyntheticEvent<Element, Event>, e: string) => {\r\n if (event === null) {\r\n return\r\n }\r\n setTitleError(false);\r\n setRoutineState((prevState) => ({ ...prevState, title: e }));\r\n }\r\n\r\n const handleSetDescription = (e: string) => {\r\n setRoutineState((prevState) => ({ ...prevState, description: e }));\r\n }\r\n\r\n const handleRepsTextInput = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, exercise: Exercise, index: number) => {\r\n let firstDigit = (e.target.value).toString().charAt(0);\r\n if (Number(e.target.value) > 999) {\r\n return;\r\n }\r\n else if (firstDigit === '0') {\r\n e.target.value = '0';\r\n }\r\n else if (e.target.value.length === 0) {\r\n e.target.value = '';\r\n }\r\n\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (exercise.exerciseId !== ex.exerciseId) {\r\n return ex;\r\n }\r\n return {\r\n ...ex,\r\n repsWeight: ex.repsWeight.map((rw: any, i: number) => {\r\n if (i === index) {\r\n return {\r\n ...rw,\r\n reps: e.target.value,\r\n };\r\n }\r\n return rw;\r\n }),\r\n };\r\n }),\r\n }));\r\n }\r\n\r\n const handleWeightTextInput = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, exercise: Exercise, index: number) => {\r\n let firstDigit = (e.target.value).toString().charAt(0);\r\n if (Number(e.target.value) > 999.9) {\r\n return;\r\n }\r\n else if (firstDigit === '0') {\r\n e.target.value = '0';\r\n }\r\n else if ((e.target.value.includes('.'))) {\r\n let parts = (e.target.value).split('.');\r\n if (parts.length > 1) {\r\n e.target.value = parts[0] + '.' + parts[1].substring(0, 1);\r\n }\r\n }\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (exercise.exerciseId !== ex.exerciseId) {\r\n return ex;\r\n }\r\n return {\r\n ...ex,\r\n repsWeight: ex.repsWeight.map((rw: any, i: number) => {\r\n if (i === index) {\r\n return {\r\n ...rw,\r\n weight: e.target.value,\r\n }\r\n }\r\n return rw;\r\n }),\r\n };\r\n }),\r\n }));\r\n }\r\n\r\n const handleExerciseNameChange = (e: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>, newExercise: Exercise) => {\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((exer: Exercise) => {\r\n if (newExercise.exerciseId === exer.exerciseId) {\r\n return {\r\n ...exer,\r\n title: e.target.value,\r\n }\r\n }\r\n return exer\r\n }),\r\n }))\r\n }\r\n\r\n const handleRemoveSet = (exercise: Exercise, index: number) => {\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.map((ex: Exercise) => {\r\n if (exercise.exerciseId === ex.exerciseId) {\r\n return {\r\n ...ex,\r\n repsWeight: ex.repsWeight.filter((rw: any, i: number) => i !== index),\r\n }\r\n }\r\n return ex;\r\n })\r\n }))\r\n }\r\n\r\n const handleRemoveExercise = (index: number) => {\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n exercises: prevState.exercises.filter((ex: Exercise, i: number) => i !== index)\r\n }))\r\n\r\n }\r\n const handleExitButton = () => {\r\n navigate(-1)\r\n }\r\n\r\n\r\n const handleSelectRoutine = (event: React.SyntheticEvent<Element, Event>, selectedRoutine: DailyRoutine | string | null) => {\r\n if (selectedRoutine === null || typeof selectedRoutine === 'string') {\r\n return;\r\n }\r\n setRoutineState((prevState) => ({\r\n ...prevState,\r\n id: selectedRoutine?.id,\r\n title: selectedRoutine?.title || '',\r\n dayOfWeek: selectedRoutine?.dayOfWeek,\r\n description: selectedRoutine?.description || '',\r\n currentId: selectedRoutine?.exercises.length || prevState.currentId,\r\n exercises: selectedRoutine?.exercises\r\n ? selectedRoutine.exercises.map((exercise: any, index: number) => ({\r\n title: exercise.title,\r\n exerciseId: index,\r\n repsWeight: exercise.repsWeight.map((repsWeight: any) => ({\r\n reps: repsWeight.reps,\r\n weight: repsWeight.weight,\r\n })),\r\n }))\r\n : prevState.exercises,\r\n }));\r\n };\r\n\r\n\r\n\r\n return (\r\n <>\r\n <Container>\r\n <Wrapper>\r\n {isDataloading ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <>\r\n\r\n <Navbar>\r\n {!isMobile && <Button variant=\"contained\" size=\"large\" color=\"warning\" onClick={handleExitButton} sx={{ position: 'absolute', left: '10px', marginTop: '10px' }}>EXIT</Button>}\r\n <LoadingButton variant=\"contained\" type=\"submit\" size=\"large\" loading={isLoading} loadingPosition=\"start\" startIcon={isSuccess ? <CheckIcon /> : <SaveIcon />} sx={{\r\n position: 'absolute', right: '10px', marginTop: '10px', bgcolor: isSuccess ? 'green' : '#1D9BF0', ':disabled': {\r\n bgcolor: '#ccc'\r\n },\r\n ':hover': {\r\n bgcolor: isSuccess ? 'green' : '#1D9BF0',\r\n }\r\n }} onClick={handleSubmit}>SAVE</LoadingButton>\r\n </Navbar>\r\n <Autocomplete\r\n id=\"routine-name\"\r\n freeSolo\r\n blurOnSelect\r\n selectOnFocus\r\n value={routineState.title}\r\n options={workoutRoutineStore.dailyRoutines}\r\n getOptionLabel={(option: DailyRoutine | string) => {\r\n if (typeof option === \"string\") {\r\n return option;\r\n }\r\n return option.title;\r\n }}\r\n onInputChange={(event, value) => handleSetTitle(event, value)}\r\n onChange={(event, value) => handleSelectRoutine(event, value)}\r\n renderInput={(params) =>\r\n <StyledTitleTextField {...params}\r\n label=\"Routine Name...\"\r\n variant=\"outlined\"\r\n size={isMobile ? 'small' : 'medium'}\r\n required\r\n error={titleError}\r\n />}\r\n renderOption={(props: any, option: DailyRoutine | string) => {\r\n if (typeof option === \"string\") {\r\n return <Box {...props} key={routineState.id || 'key'}>{option}</Box>;\r\n }\r\n if (routineState.dayOfWeek !== option.dayOfWeek) {\r\n if (option.dayOfWeek === null) {\r\n return <Box {...props} key={option.id}>{\"OPEN | \" + option.title}</Box>;\r\n }\r\n return <Box {...props} key={option.id}>{option.dayOfWeek + \" | \" + option.title}</Box>;\r\n }\r\n }}\r\n\r\n />\r\n <StyledDescriptionTextField\r\n onChange={(e) => handleSetDescription(e.target.value)}\r\n label=\"Add a Description to your Routine...\"\r\n variant=\"filled\"\r\n multiline\r\n value={routineState.description}\r\n rows={4}\r\n />\r\n <DividerStyle variant='middle' sx={{ bgcolor: '#38444D' }} />\r\n <Stack spacing={3}>\r\n {\r\n routineState.exercises.map((exercise: any, index: number) =>\r\n exercise.exerciseId >= 0 ? (\r\n <ExerciseContainer key={index} style={{ marginLeft: isMobile ? '2%' : '10%', marginBottom: '15px' }}>\r\n {\r\n isMobile ?\r\n <ExerciseMenuButtonComponent\r\n key={index}\r\n exercise={exercise}\r\n index={index}\r\n handleRemoveExercise={handleRemoveExercise}\r\n />\r\n :\r\n <Button\r\n variant=\"outlined\"\r\n size='medium'\r\n color='error'\r\n onClick={() => (handleRemoveExercise(index))}\r\n style={{ position: 'absolute', right: '10px', top: '10px', minWidth: isMobile ? 'unset' : '', padding: isMobile ? '10px 15px 15px ' : '' }}>{isMobile ? 'X' : 'Remove'}</Button>\r\n }\r\n <ExerciseTextField\r\n label=\"Exercise Name\"\r\n autoComplete='off'\r\n value={exercise.title}\r\n size={isMobile ? 'small' : \"medium\"}\r\n onChange={(e) => handleExerciseNameChange(e, exercise)}\r\n style={{ width: isMobile ? '80%' : '35%' }}\r\n />\r\n <Divider sx={{ marginTop: isMobile ? '' : '20px', bgcolor: '#38444D' }} />\r\n\r\n <SetParentContainer>\r\n {\r\n exercise.repsWeight.map((rw: any, index2: number) =>\r\n <SetContainer key={index2}>\r\n <SetRemoveButton variant='outlined' color='error' size='medium' sx={{ minWidth: isMobile ? 'unset' : 'default', width: '10px' }} onClick={() => (handleRemoveSet(exercise, index2))}>X</SetRemoveButton>\r\n <Divider flexItem orientation='vertical' sx={{ marginLeft: isMobile ? '5px' : '20px', bgcolor: 'white' }} />\r\n <SetTypography>{index2 + 1}</SetTypography>\r\n <RepsTextField\r\n size='small'\r\n autoComplete='off'\r\n onKeyPress={(event) => {\r\n if (!/[0-9]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n value={rw.reps === '' ? '' : rw.reps}\r\n onChange={(e) => handleRepsTextInput(e, exercise, index2)}\r\n inputProps={{ max: 999, inputMode: 'numeric' }}\r\n InputProps={{\r\n endAdornment: < InputAdornment position=\"end\" style={{ color: 'white' }} >\r\n <Typography>reps</Typography>\r\n </InputAdornment>\r\n }}\r\n />\r\n <WeightTextField\r\n size='small'\r\n autoComplete='off'\r\n onKeyPress={(event) => {\r\n if (!/[0-9.]/.test(event.key)) {\r\n event.preventDefault();\r\n }\r\n }}\r\n value={(rw.weight) === '' ? '' : rw.weight}\r\n onChange={(e) => (handleWeightTextInput(e, exercise, index2))}\r\n inputProps={{ inputMode: 'numeric' }}\r\n InputProps={{\r\n endAdornment: < InputAdornment position=\"end\" style={{ color: 'white' }} >\r\n <Typography>lbs/kg</Typography>\r\n </InputAdornment>\r\n }}\r\n />\r\n </SetContainer>\r\n )\r\n }\r\n </SetParentContainer>\r\n <SetButtonDiv>\r\n <Divider sx={{ bgcolor: '#38444D' }} />\r\n <AddSetButton variant=\"contained\" size=\"small\" onClick={() => handleAddSet(exercise)}>Add Set</AddSetButton>\r\n </SetButtonDiv>\r\n </ExerciseContainer>\r\n ) : null\r\n )\r\n }\r\n <div>\r\n <ButtonContainer>\r\n <Button variant=\"contained\" type=\"submit\" size=\"large\" onClick={handleAddExercise} sx={{ bgcolor: '#1D9BF0', marginBottom: '10px' }}>Add Exercise</Button>\r\n </ButtonContainer>\r\n </div>\r\n </Stack>\r\n </>}\r\n </Wrapper>\r\n </Container>\r\n\r\n </>\r\n )\r\n}\r\n\r\nconst Container = styled.div`\r\n /* width: 100%;\r\n background: #192633;\r\n position: fixed;\r\n display: flex;\r\n justify-content: center;\r\n overflow: auto;\r\n height: 100%; */\r\n ${baseContainerStyles}\r\n`\r\nconst Wrapper = styled.div`\r\n width: ${isMobile ? '100%' : '85%'};\r\n background-color: #15202b;\r\n position: relative;\r\n overflow: auto;\r\n padding-bottom: ${Capacitor.isNativePlatform() ? 'calc(80px + env(safe-area-inset-bottom))' : '60px'};\r\n\r\n`\r\nconst Navbar = styled.div`\r\n height: 60px;\r\n width: 100%;\r\n position: relative;\r\n display: flex;\r\n`\r\nconst DividerStyle = styled(Divider)`\r\n\tmargin-top: 30px;\r\n`\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 50px;\r\n`\r\n\r\nconst ExerciseContainer = styled(Card)`\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n background: #15202B;\r\n width: ${isMobile ? '96%' : '80%'};\r\n margin-top: 30px;\r\n min-height: 20vh;\r\n border: 1px solid #7C8A97;\r\n \r\n`\r\n\r\nconst SetButtonDiv = styled.div`\r\n position: absolute;\r\n bottom: 0;\r\n width: 100%;\r\n\r\n`\r\nconst AddSetButton = styled(Button)`\r\n width: 100%;\r\n justify-content: flex-start;\r\n border-radius: 1px;\r\n \r\n color: white;\r\n background-color: #15202B;\r\n padding-left: 11px;\r\n :hover {\r\n background-color: #2C3640;\r\n }\r\n :focus{\r\n outline: none;\r\n }\r\n`\r\nconst ExerciseTextField = styled(TextField)({\r\n marginTop: '10px',\r\n marginLeft: '10px',\r\n height: '56px',\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n});\r\n\r\nconst SetParentContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 50px;\r\n`\r\n\r\nconst SetContainer = styled.div`\r\n margin-top: 10px;\r\n margin-left: 11px;\r\n display:flex;\r\n flex-direction: row;\r\n`\r\n\r\nconst SetRemoveButton = styled(Button)({\r\n\r\n})\r\n\r\nconst SetTypography = styled.div`\r\n margin-left: ${isMobile ? '9px' : '20px'};\r\n color: white;\r\n font-size: 22px;\r\n min-width: 24px;\r\n`\r\n\r\nconst StyledTitleTextField = styled(TextField)({\r\n marginTop: '2%',\r\n width: '80%',\r\n marginLeft: '10%',\r\n font: 'bold',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#808080',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '& .MuiIconButton-root': {\r\n color: 'white',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n})\r\n\r\nconst StyledDescriptionTextField = styled(TextField)({\r\n marginLeft: '10%',\r\n width: '80%',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiFilledInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiFilledInput-root': {\r\n '&:before': {\r\n borderBottomColor: '#808080',\r\n },\r\n '&:hover:before': {\r\n borderBottomColor: '#bdbdbd',\r\n },\r\n '&.Mui-focused:after': {\r\n borderBottomColor: 'lightgrey',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n})\r\n\r\nconst RepsTextField = styled(TextField)({\r\n marginLeft: '20px',\r\n width: '35%',\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n});\r\n\r\nconst WeightTextField = styled(TextField)({\r\n paddingRight: '5px',\r\n marginLeft: '20px',\r\n width: '35%',\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n});\r\n\r\nconst StyledMenu = styled(Menu)({\r\n '& .MuiPaper-root': {\r\n backgroundColor: '#192633',\r\n color: 'white'\r\n }\r\n})\r\n\r\nexport default LoggedWorkout","import React from 'react'\r\nimport Navbar from '../components/Navbar';\r\nimport LoggedWorkout from '../components/routines/view/LoggedWorkoutComponent';\r\nimport MobileBottomBar from '../components/Mobile/MobileBottomBar';\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nconst LoggedWorkoutPage = (props: any) => {\r\n return (\r\n <>\r\n <Navbar title={'Routine'} />\r\n <LoggedWorkout />\r\n {/* {isMobile && <MobileBottomBar />} */}\r\n </>\r\n )\r\n}\r\n\r\nexport default LoggedWorkoutPage","// Determine if the toggle button value matches, or is contained in, the\n// candidate group value.\nexport default function isValueSelected(value, candidate) {\n if (candidate === undefined || value === undefined) {\n return false;\n }\n if (Array.isArray(candidate)) {\n return candidate.indexOf(value) >= 0;\n }\n return value === candidate;\n}","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getToggleButtonGroupUtilityClass(slot) {\n return generateUtilityClass('MuiToggleButtonGroup', slot);\n}\nconst toggleButtonGroupClasses = generateUtilityClasses('MuiToggleButtonGroup', ['root', 'selected', 'vertical', 'disabled', 'grouped', 'groupedHorizontal', 'groupedVertical']);\nexport default toggleButtonGroupClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"disabled\", \"exclusive\", \"fullWidth\", \"onChange\", \"orientation\", \"size\", \"value\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport isValueSelected from './isValueSelected';\nimport toggleButtonGroupClasses, { getToggleButtonGroupUtilityClass } from './toggleButtonGroupClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n orientation,\n fullWidth,\n disabled\n } = ownerState;\n const slots = {\n root: ['root', orientation === 'vertical' && 'vertical', fullWidth && 'fullWidth'],\n grouped: ['grouped', `grouped${capitalize(orientation)}`, disabled && 'disabled']\n };\n return composeClasses(slots, getToggleButtonGroupUtilityClass, classes);\n};\nconst ToggleButtonGroupRoot = styled('div', {\n name: 'MuiToggleButtonGroup',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${toggleButtonGroupClasses.grouped}`]: styles.grouped\n }, {\n [`& .${toggleButtonGroupClasses.grouped}`]: styles[`grouped${capitalize(ownerState.orientation)}`]\n }, styles.root, ownerState.orientation === 'vertical' && styles.vertical, ownerState.fullWidth && styles.fullWidth];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n display: 'inline-flex',\n borderRadius: (theme.vars || theme).shape.borderRadius\n}, ownerState.orientation === 'vertical' && {\n flexDirection: 'column'\n}, ownerState.fullWidth && {\n width: '100%'\n}, {\n [`& .${toggleButtonGroupClasses.grouped}`]: _extends({}, ownerState.orientation === 'horizontal' ? {\n '&:not(:first-of-type)': {\n marginLeft: -1,\n borderLeft: '1px solid transparent',\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0\n },\n '&:not(:last-of-type)': {\n borderTopRightRadius: 0,\n borderBottomRightRadius: 0\n },\n [`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]: {\n borderLeft: 0,\n marginLeft: 0\n }\n } : {\n '&:not(:first-of-type)': {\n marginTop: -1,\n borderTop: '1px solid transparent',\n borderTopLeftRadius: 0,\n borderTopRightRadius: 0\n },\n '&:not(:last-of-type)': {\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0\n },\n [`&.${toggleButtonGroupClasses.selected} + .${toggleButtonGroupClasses.grouped}.${toggleButtonGroupClasses.selected}`]: {\n borderTop: 0,\n marginTop: 0\n }\n })\n}));\nconst ToggleButtonGroup = /*#__PURE__*/React.forwardRef(function ToggleButtonGroup(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiToggleButtonGroup'\n });\n const {\n children,\n className,\n color = 'standard',\n disabled = false,\n exclusive = false,\n fullWidth = false,\n onChange,\n orientation = 'horizontal',\n size = 'medium',\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n disabled,\n fullWidth,\n orientation,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const handleChange = (event, buttonValue) => {\n if (!onChange) {\n return;\n }\n const index = value && value.indexOf(buttonValue);\n let newValue;\n if (value && index >= 0) {\n newValue = value.slice();\n newValue.splice(index, 1);\n } else {\n newValue = value ? value.concat(buttonValue) : [buttonValue];\n }\n onChange(event, newValue);\n };\n const handleExclusiveChange = (event, buttonValue) => {\n if (!onChange) {\n return;\n }\n onChange(event, value === buttonValue ? null : buttonValue);\n };\n return /*#__PURE__*/_jsx(ToggleButtonGroupRoot, _extends({\n role: \"group\",\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: React.Children.map(children, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The ToggleButtonGroup component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n return /*#__PURE__*/React.cloneElement(child, {\n className: clsx(classes.grouped, child.props.className),\n onChange: exclusive ? handleExclusiveChange : handleChange,\n selected: child.props.selected === undefined ? isValueSelected(child.props.value, value) : child.props.selected,\n size: child.props.size || size,\n fullWidth,\n color: child.props.color || color,\n disabled: child.props.disabled || disabled\n });\n })\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ToggleButtonGroup.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the button when it is selected.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'standard'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['standard', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the component is disabled. This implies that all ToggleButton children will be disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, only allow one of the child ToggleButton values to be selected.\n * @default false\n */\n exclusive: PropTypes.bool,\n /**\n * If `true`, the button group will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n * @param {any} value of the selected buttons. When `exclusive` is true\n * this is a single value; when false an array of selected values. If no value\n * is selected and `exclusive` is true the value is null; when false an empty array.\n */\n onChange: PropTypes.func,\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The currently selected value within the group or an array of selected\n * values when `exclusive` is false.\n *\n * The value must have reference equality with the option in order to be selected.\n */\n value: PropTypes.any\n} : void 0;\nexport default ToggleButtonGroup;","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getToggleButtonUtilityClass(slot) {\n return generateUtilityClass('MuiToggleButton', slot);\n}\nconst toggleButtonClasses = generateUtilityClasses('MuiToggleButton', ['root', 'disabled', 'selected', 'standard', 'primary', 'secondary', 'sizeSmall', 'sizeMedium', 'sizeLarge']);\nexport default toggleButtonClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"color\", \"disabled\", \"disableFocusRipple\", \"fullWidth\", \"onChange\", \"onClick\", \"selected\", \"size\", \"value\"];\n// @inheritedComponent ButtonBase\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { alpha } from '../styles';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport toggleButtonClasses, { getToggleButtonUtilityClass } from './toggleButtonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n fullWidth,\n selected,\n disabled,\n size,\n color\n } = ownerState;\n const slots = {\n root: ['root', selected && 'selected', disabled && 'disabled', fullWidth && 'fullWidth', `size${capitalize(size)}`, color]\n };\n return composeClasses(slots, getToggleButtonUtilityClass, classes);\n};\nconst ToggleButtonRoot = styled(ButtonBase, {\n name: 'MuiToggleButton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[`size${capitalize(ownerState.size)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n let selectedColor = ownerState.color === 'standard' ? theme.palette.text.primary : theme.palette[ownerState.color].main;\n let selectedColorChannel;\n if (theme.vars) {\n selectedColor = ownerState.color === 'standard' ? theme.vars.palette.text.primary : theme.vars.palette[ownerState.color].main;\n selectedColorChannel = ownerState.color === 'standard' ? theme.vars.palette.text.primaryChannel : theme.vars.palette[ownerState.color].mainChannel;\n }\n return _extends({}, theme.typography.button, {\n borderRadius: (theme.vars || theme).shape.borderRadius,\n padding: 11,\n border: `1px solid ${(theme.vars || theme).palette.divider}`,\n color: (theme.vars || theme).palette.action.active\n }, ownerState.fullWidth && {\n width: '100%'\n }, {\n [`&.${toggleButtonClasses.disabled}`]: {\n color: (theme.vars || theme).palette.action.disabled,\n border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`\n },\n '&:hover': {\n textDecoration: 'none',\n // Reset on mouse devices\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.text.primary, theme.palette.action.hoverOpacity),\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n [`&.${toggleButtonClasses.selected}`]: {\n color: selectedColor,\n backgroundColor: theme.vars ? `rgba(${selectedColorChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(selectedColor, theme.palette.action.selectedOpacity),\n '&:hover': {\n backgroundColor: theme.vars ? `rgba(${selectedColorChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(selectedColor, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: theme.vars ? `rgba(${selectedColorChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(selectedColor, theme.palette.action.selectedOpacity)\n }\n }\n }\n }, ownerState.size === 'small' && {\n padding: 7,\n fontSize: theme.typography.pxToRem(13)\n }, ownerState.size === 'large' && {\n padding: 15,\n fontSize: theme.typography.pxToRem(15)\n });\n});\nconst ToggleButton = /*#__PURE__*/React.forwardRef(function ToggleButton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiToggleButton'\n });\n const {\n children,\n className,\n color = 'standard',\n disabled = false,\n disableFocusRipple = false,\n fullWidth = false,\n onChange,\n onClick,\n selected,\n size = 'medium',\n value\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n disabled,\n disableFocusRipple,\n fullWidth,\n size\n });\n const classes = useUtilityClasses(ownerState);\n const handleChange = event => {\n if (onClick) {\n onClick(event, value);\n if (event.defaultPrevented) {\n return;\n }\n }\n if (onChange) {\n onChange(event, value);\n }\n };\n return /*#__PURE__*/_jsx(ToggleButtonRoot, _extends({\n className: clsx(classes.root, className),\n disabled: disabled,\n focusRipple: !disableFocusRipple,\n ref: ref,\n onClick: handleChange,\n onChange: onChange,\n value: value,\n ownerState: ownerState,\n \"aria-pressed\": selected\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? ToggleButton.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the button when it is in an active state.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n * @default 'standard'\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['standard', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, the keyboard focus ripple is disabled.\n * @default false\n */\n disableFocusRipple: PropTypes.bool,\n /**\n * If `true`, the ripple effect is disabled.\n *\n * ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure\n * to highlight the element by applying separate styles with the `.Mui-focusVisible` class.\n * @default false\n */\n disableRipple: PropTypes.bool,\n /**\n * If `true`, the button will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * Callback fired when the state changes.\n *\n * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n * @param {any} value of the selected button.\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the button is clicked.\n *\n * @param {React.MouseEvent<HTMLElement>} event The event source of the callback.\n * @param {any} value of the selected button.\n */\n onClick: PropTypes.func,\n /**\n * If `true`, the button is rendered in an active state.\n */\n selected: PropTypes.bool,\n /**\n * The size of the component.\n * The prop defaults to the value inherited from the parent ToggleButtonGroup component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium', 'large']), PropTypes.string]),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value to associate with the button when selected in a\n * ToggleButtonGroup.\n */\n value: PropTypes /* @typescript-to-proptypes-ignore */.any.isRequired\n} : void 0;\nexport default ToggleButton;","import type { ObserverInstanceCallback } from './index';\n\nconst observerMap = new Map<\n string,\n {\n id: string;\n observer: IntersectionObserver;\n elements: Map<Element, Array<ObserverInstanceCallback>>;\n }\n>();\n\nconst RootIds: WeakMap<Element | Document, string> = new WeakMap();\nlet rootId = 0;\n\nlet unsupportedValue: boolean | undefined = undefined;\n\n/**\n * What should be the default behavior if the IntersectionObserver is unsupported?\n * Ideally the polyfill has been loaded, you can have the following happen:\n * - `undefined`: Throw an error\n * - `true` or `false`: Set the `inView` value to this regardless of intersection state\n * **/\nexport function defaultFallbackInView(inView: boolean | undefined) {\n unsupportedValue = inView;\n}\n\n/**\n * Generate a unique ID for the root element\n * @param root\n */\nfunction getRootId(root: IntersectionObserverInit['root']) {\n if (!root) return '0';\n if (RootIds.has(root)) return RootIds.get(root);\n rootId += 1;\n RootIds.set(root, rootId.toString());\n return RootIds.get(root);\n}\n\n/**\n * Convert the options to a string Id, based on the values.\n * Ensures we can reuse the same observer when observing elements with the same options.\n * @param options\n */\nexport function optionsToId(options: IntersectionObserverInit) {\n return Object.keys(options)\n .sort()\n .filter((key) => options[key] !== undefined)\n .map((key) => {\n return `${key}_${\n key === 'root' ? getRootId(options.root) : options[key]\n }`;\n })\n .toString();\n}\n\nfunction createObserver(options: IntersectionObserverInit) {\n // Create a unique ID for this observer instance, based on the root, root margin and threshold.\n let id = optionsToId(options);\n let instance = observerMap.get(id);\n\n if (!instance) {\n // Create a map of elements this observer is going to observe. Each element has a list of callbacks that should be triggered, once it comes into view.\n const elements = new Map<Element, Array<ObserverInstanceCallback>>();\n let thresholds: number[] | readonly number[];\n\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n // While it would be nice if you could just look at isIntersecting to determine if the component is inside the viewport, browsers can't agree on how to use it.\n // -Firefox ignores `threshold` when considering `isIntersecting`, so it will never be false again if `threshold` is > 0\n const inView =\n entry.isIntersecting &&\n thresholds.some((threshold) => entry.intersectionRatio >= threshold);\n\n // @ts-ignore support IntersectionObserver v2\n if (options.trackVisibility && typeof entry.isVisible === 'undefined') {\n // The browser doesn't support Intersection Observer v2, falling back to v1 behavior.\n // @ts-ignore\n entry.isVisible = inView;\n }\n\n elements.get(entry.target)?.forEach((callback) => {\n callback(inView, entry);\n });\n });\n }, options);\n\n // Ensure we have a valid thresholds array. If not, use the threshold from the options\n thresholds =\n observer.thresholds ||\n (Array.isArray(options.threshold)\n ? options.threshold\n : [options.threshold || 0]);\n\n instance = {\n id,\n observer,\n elements,\n };\n\n observerMap.set(id, instance);\n }\n\n return instance;\n}\n\n/**\n * @param element - DOM Element to observe\n * @param callback - Callback function to trigger when intersection status changes\n * @param options - Intersection Observer options\n * @param fallbackInView - Fallback inView value.\n * @return Function - Cleanup function that should be triggered to unregister the observer\n */\nexport function observe(\n element: Element,\n callback: ObserverInstanceCallback,\n options: IntersectionObserverInit = {},\n fallbackInView = unsupportedValue,\n) {\n if (\n typeof window.IntersectionObserver === 'undefined' &&\n fallbackInView !== undefined\n ) {\n const bounds = element.getBoundingClientRect();\n callback(fallbackInView, {\n isIntersecting: fallbackInView,\n target: element,\n intersectionRatio:\n typeof options.threshold === 'number' ? options.threshold : 0,\n time: 0,\n boundingClientRect: bounds,\n intersectionRect: bounds,\n rootBounds: bounds,\n });\n return () => {\n // Nothing to cleanup\n };\n }\n // An observer with the same options can be reused, so lets use this fact\n const { id, observer, elements } = createObserver(options);\n\n // Register the callback listener for this element\n let callbacks = elements.get(element) || [];\n if (!elements.has(element)) {\n elements.set(element, callbacks);\n }\n\n callbacks.push(callback);\n observer.observe(element);\n\n return function unobserve() {\n // Remove the callback from the callback list\n callbacks.splice(callbacks.indexOf(callback), 1);\n\n if (callbacks.length === 0) {\n // No more callback exists for element, so destroy it\n elements.delete(element);\n observer.unobserve(element);\n }\n\n if (elements.size === 0) {\n // No more elements are being observer by this instance, so destroy it\n observer.disconnect();\n observerMap.delete(id);\n }\n };\n}\n","import * as React from 'react';\nimport type { IntersectionObserverProps, PlainChildrenProps } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\nfunction isPlainChildren(\n props: IntersectionObserverProps | PlainChildrenProps,\n): props is PlainChildrenProps {\n return typeof props.children !== 'function';\n}\n\n/**\n ## Render props\n\n To use the `<InView>` component, you pass it a function. It will be called\n whenever the state changes, with the new value of `inView`. In addition to the\n `inView` prop, children also receive a `ref` that should be set on the\n containing DOM element. This is the element that the IntersectionObserver will\n monitor.\n\n If you need it, you can also access the\n [`IntersectionObserverEntry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry)\n on `entry`, giving you access to all the details about the current intersection\n state.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n <InView>\n {({ inView, ref, entry }) => (\n <div ref={ref}>\n <h2>{`Header inside viewport ${inView}.`}</h2>\n </div>\n )}\n </InView>\n );\n\n export default Component;\n ```\n\n ## Plain children\n\n You can pass any element to the `<InView />`, and it will handle creating the\n wrapping DOM element. Add a handler to the `onChange` method, and control the\n state in your own component. Any extra props you add to `<InView>` will be\n passed to the HTML element, allowing you set the `className`, `style`, etc.\n\n ```jsx\n import { InView } from 'react-intersection-observer';\n\n const Component = () => (\n <InView as=\"div\" onChange={(inView, entry) => console.log('Inview:', inView)}>\n <h2>Plain children are always rendered. Use onChange to monitor state.</h2>\n </InView>\n );\n\n export default Component;\n ```\n */\nexport class InView extends React.Component<\n IntersectionObserverProps | PlainChildrenProps,\n State\n> {\n constructor(props: IntersectionObserverProps | PlainChildrenProps) {\n super(props);\n this.state = {\n inView: !!props.initialInView,\n entry: undefined,\n };\n }\n\n componentDidUpdate(prevProps: IntersectionObserverProps) {\n // If a IntersectionObserver option changed, reinit the observer\n if (\n prevProps.rootMargin !== this.props.rootMargin ||\n prevProps.root !== this.props.root ||\n prevProps.threshold !== this.props.threshold ||\n prevProps.skip !== this.props.skip ||\n prevProps.trackVisibility !== this.props.trackVisibility ||\n prevProps.delay !== this.props.delay\n ) {\n this.unobserve();\n this.observeNode();\n }\n }\n\n componentWillUnmount() {\n this.unobserve();\n this.node = null;\n }\n\n node: Element | null = null;\n _unobserveCb: (() => void) | null = null;\n\n observeNode() {\n if (!this.node || this.props.skip) return;\n const {\n threshold,\n root,\n rootMargin,\n trackVisibility,\n delay,\n fallbackInView,\n } = this.props;\n\n this._unobserveCb = observe(\n this.node,\n this.handleChange,\n {\n threshold,\n root,\n rootMargin,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n }\n\n unobserve() {\n if (this._unobserveCb) {\n this._unobserveCb();\n this._unobserveCb = null;\n }\n }\n\n handleNode = (node?: Element | null) => {\n if (this.node) {\n // Clear the old observer, before we start observing a new element\n this.unobserve();\n\n if (!node && !this.props.triggerOnce && !this.props.skip) {\n // Reset the state if we get a new node, and we aren't ignoring updates\n this.setState({ inView: !!this.props.initialInView, entry: undefined });\n }\n }\n\n this.node = node ? node : null;\n this.observeNode();\n };\n\n handleChange = (inView: boolean, entry: IntersectionObserverEntry) => {\n if (inView && this.props.triggerOnce) {\n // If `triggerOnce` is true, we should stop observing the element.\n this.unobserve();\n }\n if (!isPlainChildren(this.props)) {\n // Store the current State, so we can pass it to the children in the next render update\n // There's no reason to update the state for plain children, since it's not used in the rendering.\n this.setState({ inView, entry });\n }\n if (this.props.onChange) {\n // If the user is actively listening for onChange, always trigger it\n this.props.onChange(inView, entry);\n }\n };\n\n render() {\n if (!isPlainChildren(this.props)) {\n const { inView, entry } = this.state;\n return this.props.children({ inView, entry, ref: this.handleNode });\n }\n\n const {\n children,\n as,\n triggerOnce,\n threshold,\n root,\n rootMargin,\n onChange,\n skip,\n trackVisibility,\n delay,\n initialInView,\n fallbackInView,\n ...props\n } = this.props;\n\n return React.createElement(\n as || 'div',\n { ref: this.handleNode, ...props },\n children,\n );\n }\n}\n","import * as React from \"react\";\n\nfunction isShallowEqual(object1, object2) {\n const keys1 = Object.keys(object1);\n const keys2 = Object.keys(object2);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n for (let key of keys1) {\n if (object1[key] !== object2[key]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isTouchEvent({ nativeEvent }) {\n return window.TouchEvent\n ? nativeEvent instanceof TouchEvent\n : \"touches\" in nativeEvent;\n}\n\nfunction isMouseEvent(event) {\n return event.nativeEvent instanceof MouseEvent;\n}\n\nfunction throttle(cb, ms) {\n let lastTime = 0;\n return () => {\n const now = Date.now();\n if (now - lastTime >= ms) {\n cb();\n lastTime = now;\n }\n };\n}\n\nexport function useBattery() {\n const [state, setState] = React.useState({\n supported: true,\n loading: true,\n level: null,\n charging: null,\n chargingTime: null,\n dischargingTime: null\n });\n\n React.useEffect(() => {\n if (!navigator.getBattery) {\n setState((s) => ({\n ...s,\n supported: false,\n loading: false\n }));\n return\n }\n\n let battery = null;\n\n const handleChange = () => {\n setState({\n supported: true,\n loading: false,\n level: battery.level,\n charging: battery.charging,\n chargingTime: battery.chargingTime,\n dischargingTime: battery.dischargingTime\n });\n };\n\n navigator.getBattery().then((b) => {\n battery = b;\n handleChange();\n\n b.addEventListener(\"levelchange\", handleChange);\n b.addEventListener(\"chargingchange\", handleChange);\n b.addEventListener(\"chargingtimechange\", handleChange);\n b.addEventListener(\"dischargingtimechange\", handleChange);\n });\n\n return () => {\n if (battery) {\n battery.removeEventListener(\"levelchange\", handleChange);\n battery.removeEventListener(\"chargingchange\", handleChange);\n battery.removeEventListener(\"chargingtimechange\", handleChange);\n battery.removeEventListener(\"dischargingtimechange;\", handleChange);\n }\n };\n }, []);\n\n return state;\n}\n\nexport function useClickAway(cb) {\n const ref = React.useRef(null);\n const refCb = React.useRef(cb);\n\n React.useEffect(() => {\n const handler = (e) => {\n const element = ref.current;\n if (element && !element.contains(e.target)) {\n refCb.current(e);\n }\n };\n\n document.addEventListener(\"mousedown\", handler);\n document.addEventListener(\"touchstart\", handler);\n\n return () => {\n document.removeEventListener(\"mousedown\", handler);\n document.removeEventListener(\"touchstart\", handler);\n };\n }, []);\n\n return ref;\n}\n\nexport function useCopyToClipboard() {\n const [state, setState] = React.useState({\n error: null,\n text: null\n });\n\n const copyToClipboard = React.useCallback(async (value) => {\n if (!navigator?.clipboard) {\n return setState({\n error: new Error(\"Clipboard not supported\"),\n text: null\n });\n }\n\n const handleSuccess = () => {\n setState({\n error: null,\n text: value\n });\n };\n\n const handleFailure = (e) => {\n setState({\n error: e,\n text: null\n });\n };\n\n navigator.clipboard.writeText(value).then(handleSuccess, handleFailure);\n }, []);\n\n return [state, copyToClipboard];\n}\n\nexport function useCounter(startingValue = 0, options = {}) {\n const { min, max } = options;\n\n if (min && startingValue < min) {\n throw new Error(\n `Your starting value of ${startingValue} is less than your min of ${min}.`\n );\n }\n\n if (max && startingValue > max) {\n throw new Error(\n `Your starting value of ${startingValue} is greater than your max of ${max}.`\n );\n }\n\n const [count, setCount] = React.useState(startingValue);\n\n const increment = () => {\n const nextCount = count + 1;\n if (max && nextCount > max) {\n return;\n }\n\n setCount(nextCount);\n };\n\n const decrement = () => {\n const nextCount = count - 1;\n if (min && nextCount < min) {\n return;\n }\n\n setCount(nextCount);\n };\n\n const set = (nextCount) => {\n if (max && nextCount > max) {\n return;\n }\n\n if (min && nextCount < min) {\n return;\n }\n\n if (nextCount === count) {\n return;\n }\n\n setCount(nextCount);\n };\n\n const reset = () => {\n if (count === startingValue) {\n return;\n }\n\n setCount(startingValue);\n };\n\n return [\n count,\n {\n increment,\n decrement,\n set,\n reset\n }\n ];\n}\n\nexport function useDebounce(value, delay) {\n const [debouncedValue, setDebouncedValue] = React.useState(value);\n\n React.useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n\nexport function useDefault(initialValue, defaultValue) {\n const [state, setState] = React.useState(initialValue);\n\n if (typeof state === \"undefined\" || state === null) {\n return [defaultValue, setState];\n }\n\n return [state, setState];\n}\n\nexport function useDocumentTitle(title) {\n React.useEffect(() => {\n document.title = title;\n }, [title]);\n}\n\nexport function useFavicon(url) {\n React.useEffect(() => {\n const link =\n document.querySelector(\"link[rel*='icon']\") ||\n document.createElement(\"link\");\n link.type = \"image/x-icon\";\n link.rel = \"shortcut icon\";\n link.href = url;\n document.getElementsByTagName(\"head\")[0].appendChild(link);\n }, [url]);\n}\n\nexport function useGeolocation(options = {}) {\n const [state, setState] = React.useState({\n loading: true,\n accuracy: null,\n altitude: null,\n altitudeAccuracy: null,\n heading: null,\n latitude: null,\n longitude: null,\n speed: null,\n timestamp: null,\n error: null,\n });\n\n const optionsRef = React.useRef(options);\n\n React.useEffect(() => {\n const onEvent = ({ coords, timestamp }) => {\n setState({\n loading: false,\n timestamp,\n latitude: coords.latitude,\n longitude: coords.longitude,\n altitude: coords.altitude,\n accuracy: coords.accuracy,\n altitudeAccuracy: coords.altitudeAccuracy,\n heading: coords.heading,\n speed: coords.speed,\n });\n };\n\n const onEventError = (error) => {\n setState((s) => ({\n ...s,\n loading: false,\n error,\n }));\n };\n\n navigator.geolocation.getCurrentPosition(\n onEvent,\n onEventError,\n optionsRef.current\n );\n\n const watchId = navigator.geolocation.watchPosition(\n onEvent,\n onEventError,\n optionsRef.current\n );\n\n return () => {\n navigator.geolocation.clearWatch(watchId);\n };\n }, []);\n\n return state;\n}\n\nconst initialUseHistoryStateState = {\n past: [],\n present: null,\n future: [],\n};\n\nconst useHistoryStateReducer = (state, action) => {\n const { past, present, future } = state;\n switch (action.type) {\n case \"UNDO\":\n return {\n past: past.slice(0, past.length - 1),\n present: past[past.length - 1],\n future: [present, ...future],\n };\n case \"REDO\":\n return {\n past: [...past, present],\n present: future[0],\n future: future.slice(1),\n };\n case \"SET\":\n const { newPresent } = action;\n\n if (action.newPresent === present) {\n return state;\n }\n\n return {\n past: [...past, present],\n present: newPresent,\n future: [],\n };\n case \"CLEAR\":\n return {\n ...initialUseHistoryStateState,\n present: action.initialPresent,\n };\n default:\n throw new Error(\"Unsupported action type\");\n }\n};\n\nexport function useHistoryState (initialPresent = {}) {\n const initialPresentRef = React.useRef(initialPresent);\n\n const [state, dispatch] = React.useReducer(useHistoryStateReducer, {\n ...initialUseHistoryStateState,\n present: initialPresentRef.current,\n });\n\n const canUndo = state.past.length !== 0;\n const canRedo = state.future.length !== 0;\n\n const undo = React.useCallback(() => {\n if (canUndo) {\n dispatch({ type: \"UNDO\" });\n }\n }, [canUndo]);\n\n const redo = React.useCallback(() => {\n if (canRedo) {\n dispatch({ type: \"REDO\" });\n }\n }, [canRedo]);\n\n const set = React.useCallback(\n (newPresent) => dispatch({ type: \"SET\", newPresent }),\n []\n );\n\n const clear = React.useCallback(\n () =>\n dispatch({ type: \"CLEAR\", initialPresent: initialPresentRef.current }),\n []\n );\n\n return { state: state.present, set, undo, redo, clear, canUndo, canRedo };\n};\n\nexport function useHover() {\n const [hovering, setHovering] = React.useState(false);\n const ref = React.useRef(null);\n\n React.useEffect(() => {\n const node = ref.current;\n\n if (!node) return;\n\n const handleMouseEnter = () => {\n setHovering(true);\n };\n\n const handleMouseLeave = () => {\n setHovering(false);\n };\n\n node.addEventListener(\"mouseenter\", handleMouseEnter);\n node.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n node.removeEventListener(\"mouseenter\", handleMouseEnter);\n node.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n return [ref, hovering];\n}\n\nexport function useIdle(ms = 1000 * 60) {\n const [idle, setIdle] = React.useState(false);\n\n React.useEffect(() => {\n let timeoutId;\n\n const handleTimeout = () => {\n setIdle(true);\n };\n\n const handleEvent = throttle((e) => {\n setIdle(false);\n\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(handleTimeout, ms);\n }, 500);\n\n const handleVisibilityChange = () => {\n if (!document.hidden) {\n handleEvent();\n }\n };\n\n timeoutId = window.setTimeout(handleTimeout, ms);\n\n window.addEventListener(\"mousemove\", handleEvent);\n window.addEventListener(\"mousedown\", handleEvent);\n window.addEventListener(\"resize\", handleEvent);\n window.addEventListener(\"keydown\", handleEvent);\n window.addEventListener(\"touchstart\", handleEvent);\n window.addEventListener(\"wheel\", handleEvent);\n document.addEventListener(\"visibilitychange\", handleVisibilityChange);\n\n return () => {\n window.removeEventListener(\"mousemove\", handleEvent);\n window.removeEventListener(\"mousedown\", handleEvent);\n window.removeEventListener(\"resize\", handleEvent);\n window.removeEventListener(\"keydown\", handleEvent);\n window.removeEventListener(\"touchstart\", handleEvent);\n window.removeEventListener(\"wheel\", handleEvent);\n document.removeEventListener(\"visibilitychange\", handleVisibilityChange);\n window.clearTimeout(timeoutId);\n };\n }, [ms]);\n\n return idle;\n}\n\nexport function useIntersectionObserver(options = {}) {\n const { threshold = 1, root = null, rootMargin = \"0%\" } = options;\n const ref = React.useRef(null);\n const [entry, setEntry] = React.useState(null);\n\n React.useEffect(() => {\n const node = ref?.current;\n\n if (!node || typeof IntersectionObserver !== \"function\") {\n return;\n }\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n setEntry(entry);\n },\n { threshold, root, rootMargin }\n );\n\n observer.observe(node);\n\n return () => {\n setEntry(null);\n observer.disconnect();\n };\n }, [threshold, root, rootMargin]);\n\n return [ref, entry];\n}\n\nexport function useIsClient() {\n const [isClient, setIsClient] = React.useState(false);\n\n React.useEffect(() => {\n setIsClient(true);\n }, []);\n\n return isClient;\n}\n\nexport function useIsFirstRender() {\n const renderRef = React.useRef(true);\n\n if (renderRef.current === true) {\n renderRef.current = false;\n return true;\n }\n\n return renderRef.current;\n}\n\nexport function useList(defaultList = []) {\n const [list, setList] = React.useState(defaultList);\n\n const methods = React.useMemo(() => {\n const set = (l) => {\n setList(l);\n };\n\n const push = (element) => {\n setList((l) => [...l, element]);\n };\n\n const removeAt = (index) => {\n setList((l) => [...l.slice(0, index), ...l.slice(index + 1)]);\n };\n\n const insertAt = (index, element) => {\n setList((l) => [...l.slice(0, index), element, ...l.slice(index)]);\n };\n\n const updateAt = (index, element) => {\n setList((l) => l.map((e, i) => (i === index ? element : e)));\n };\n\n const clear = () => setList([]);\n\n return {\n set,\n push,\n removeAt,\n insertAt,\n updateAt,\n clear,\n };\n }, []);\n\n return [list, methods];\n}\n\nexport function useLockBodyScroll() {\n React.useEffect(() => {\n const originalStyle = window.getComputedStyle(document.body).overflow;\n document.body.style.overflow = \"hidden\";\n return () => {\n document.body.style.overflow = originalStyle;\n };\n }, []);\n}\n\nexport function useLongPress(\n callback,\n { threshold = 400, onStart, onFinish, onCancel } = {}\n) {\n const isLongPressActive = React.useRef(false);\n const isPressed = React.useRef(false);\n const timerId = React.useRef();\n const cbRef = React.useRef(callback);\n\n const start = React.useCallback(\n () => (event) => {\n if (isPressed.current) return;\n\n if (!isMouseEvent(event) && !isTouchEvent(event)) return;\n\n if (onStart) {\n onStart(event);\n }\n\n isPressed.current = true;\n timerId.current = setTimeout(() => {\n cbRef.current(event);\n isLongPressActive.current = true;\n }, threshold);\n },\n [onStart, threshold]\n );\n\n const cancel = React.useCallback(\n () => (event) => {\n if (!isMouseEvent(event) && !isTouchEvent(event)) return;\n\n if (isLongPressActive.current) {\n if (onFinish) {\n onFinish(event);\n }\n } else if (isPressed.current) {\n if (onCancel) {\n onCancel(event);\n }\n }\n\n isLongPressActive.current = false;\n isPressed.current = false;\n\n if (timerId.current) {\n window.clearTimeout(timerId.current);\n }\n },\n [onFinish, onCancel]\n );\n\n return React.useMemo(() => {\n if (callback === null) {\n return {};\n }\n\n const mouseHandlers = {\n onMouseDown: start(),\n onMouseUp: cancel(),\n onMouseLeave: cancel(),\n };\n\n const touchHandlers = {\n onTouchStart: start(),\n onTouchEnd: cancel(),\n };\n\n return {\n ...mouseHandlers,\n ...touchHandlers,\n };\n }, [callback, cancel, start]);\n}\n\nexport function useMap(initialState) {\n const mapRef = React.useRef(new Map(initialState));\n const [, reRender] = React.useReducer((x) => x + 1, 0);\n\n mapRef.current.set = (...args) => {\n Map.prototype.set.apply(mapRef.current, args);\n reRender();\n return mapRef.current;\n };\n\n mapRef.current.clear = (...args) => {\n Map.prototype.clear.apply(mapRef.current, args);\n reRender();\n };\n\n mapRef.current.delete = (...args) => {\n const res = Map.prototype.delete.apply(mapRef.current, args);\n reRender();\n\n return res;\n };\n\n return mapRef.current;\n}\n\nexport function useMeasure() {\n const ref = React.useRef(null);\n const [rect, setRect] = React.useState({\n width: null,\n height: null,\n });\n\n React.useLayoutEffect(() => {\n if (!ref.current) return;\n\n const observer = new ResizeObserver(([entry]) => {\n if (entry && entry.contentRect) {\n setRect({\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n });\n }\n });\n\n observer.observe(ref.current);\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return [ref, rect];\n}\n\nexport function useMediaQuery(query) {\n const subscribe = React.useCallback(\n (callback) => {\n const matchMedia = window.matchMedia(query);\n\n matchMedia.addEventListener(\"change\", callback);\n return () => {\n matchMedia.removeEventListener(\"change\", callback);\n };\n },\n [query]\n );\n\n const getSnapshot = () => {\n return window.matchMedia(query).matches;\n };\n\n const getServerSnapshot = () => {\n throw Error(\"useMediaQuery is a client-only hook\");\n };\n\n return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\nexport function useMouse() {\n const [state, setState] = React.useState({\n x: 0,\n y: 0,\n elementX: 0,\n elementY: 0,\n elementPositionX: 0,\n elementPositionY: 0\n });\n\n const ref = React.useRef(null);\n\n React.useLayoutEffect(() => {\n const handleMouseMove = (event) => {\n let newState = {\n x: event.pageX,\n y: event.pageY\n };\n\n if (ref.current instanceof HTMLElement) {\n const { left, top } = ref.current.getBoundingClientRect();\n const elementPositionX = left + window.pageXOffset;\n const elementPositionY = top + window.pageYOffset;\n const elementX = event.pageX - elementPositionX;\n const elementY = event.pageY - elementPositionY;\n\n newState.elementX = elementX;\n newState.elementY = elementY;\n newState.elementX = elementX;\n newState.elementY = elementY;\n newState.elementPositionX = elementPositionX;\n newState.elementPositionY = elementPositionY;\n }\n\n setState((s) => {\n return {\n ...s,\n ...newState\n };\n });\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove);\n };\n }, []);\n\n return [state, ref];\n}\n\nexport function useNetworkState() {\n const connection =\n navigator?.connection ||\n navigator?.mozConnection ||\n navigator?.webkitConnection;\n\n const cache = React.useRef({});\n\n const subscribe = React.useCallback((callback) => {\n window.addEventListener(\"online\", callback, { passive: true });\n window.addEventListener(\"offline\", callback, { passive: true });\n\n if (connection) {\n connection.addEventListener(\"change\", callback, { passive: true });\n }\n\n return () => {\n window.removeEventListener(\"online\", callback);\n window.removeEventListener(\"offline\", callback);\n\n if (connection) {\n connection.removeEventListener(\"change\", callback);\n }\n };\n }, []);\n\n const getSnapshot = () => {\n const online = navigator.onLine;\n\n const nextState = {\n online,\n downlink: connection?.downlink,\n downlinkMax: connection?.downlinkMax,\n effectiveType: connection?.effectiveType,\n rtt: connection?.rtt,\n saveData: connection?.saveData,\n type: connection?.type,\n };\n\n if (isShallowEqual(cache.current, nextState)) {\n return cache.current;\n } else {\n cache.current = nextState;\n return nextState;\n }\n };\n\n const getServerSnapshot = () => {\n throw Error(\"useNetworkState is a client-only hook\");\n };\n\n return React.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\nexport function useObjectState(initialValue) {\n const [state, setState] = React.useState(initialValue);\n\n const handleUpdate = React.useCallback((arg) => {\n if (typeof arg === \"function\") {\n setState((s) => {\n const newState = arg(s);\n\n return {\n ...s,\n ...newState,\n };\n });\n }\n\n if (typeof arg === \"object\") {\n setState((s) => ({\n ...s,\n ...arg,\n }));\n }\n }, []);\n\n return [state, handleUpdate];\n}\n\nexport function useOrientation() {\n const [orientation, setOrientation] = React.useState({\n angle: 0,\n type: \"landscape-primary\",\n });\n\n React.useLayoutEffect(() => {\n const handleChange = () => {\n const { angle, type } = window.screen.orientation;\n setOrientation({\n angle,\n type,\n });\n };\n\n const handle_orientationchange = () => {\n setOrientation({\n type: \"UNKNOWN\",\n angle: window.orientation,\n });\n };\n\n if (window.screen?.orientation) {\n handleChange();\n window.screen.orientation.addEventListener(\"change\", handleChange);\n } else {\n handle_orientationchange()\n window.addEventListener(\"orientationchange\", handle_orientationchange);\n }\n\n return () => {\n if (window.screen?.orientation) {\n window.screen.orientation.removeEventListener(\"change\", handleChange);\n } else {\n window.removeEventListener(\n \"orientationchange\",\n handle_orientationchange\n );\n }\n };\n }, []);\n\n return orientation;\n}\n\nconst usePreferredLanguageSubscribe = (cb) => {\n window.addEventListener(\"languagechange\", cb);\n return () => window.removeEventListener(\"languagechange\", cb);\n};\n\nconst getPreferredLanguageSnapshot = () => {\n return navigator.language;\n};\n\nconst getPreferredLanguageServerSnapshot = () => {\n throw Error(\"usePreferredLanguage is a client-only hook\");\n};\n\nexport function usePreferredLanguage() {\n return React.useSyncExternalStore(usePreferredLanguageSubscribe, getPreferredLanguageSnapshot, getPreferredLanguageServerSnapshot);\n}\n\nexport function usePrevious(newValue) {\n const previousRef = React.useRef();\n\n React.useEffect(() => {\n previousRef.current = newValue;\n });\n\n return previousRef.current;\n}\n\nexport function useQueue(initialValue = []) {\n const [queue, setQueue] = React.useState(initialValue);\n\n const add = React.useCallback((element) => {\n setQueue((q) => [...q, element]);\n }, []);\n\n const remove = React.useCallback(() => {\n let removedElement;\n\n setQueue(([first, ...q]) => {\n removedElement = first;\n return q;\n });\n\n return removedElement;\n }, []);\n\n const clear = React.useCallback(() => {\n setQueue([]);\n }, []);\n\n return {\n add,\n remove,\n clear,\n first: queue[0],\n last: queue[queue.length - 1],\n size: queue.length,\n };\n}\n\nexport function useRenderCount() {\n const count = React.useRef(0);\n\n count.current++;\n\n return count.current;\n}\n\nexport function useRenderInfo(name = \"Unknown\") {\n const count = React.useRef(0);\n const lastRender = React.useRef();\n const now = Date.now();\n\n count.current++;\n\n React.useEffect(() => {\n lastRender.current = Date.now();\n });\n\n const sinceLastRender = lastRender.current ? now - lastRender.current : 0;\n\n if (process.env.NODE_ENV !== \"production\") {\n const info = {\n name,\n renders: count.current,\n sinceLastRender,\n timestamp: now,\n };\n\n console.log(info);\n\n return info;\n }\n}\n\nexport function useScript(src, options = {}) {\n const [status, setStatus] = React.useState(() => {\n if (!src) {\n return \"idle\";\n }\n\n return \"loading\";\n });\n\n const cachedScriptStatuses = React.useRef({});\n\n React.useEffect(() => {\n if (!src) {\n return;\n }\n\n const cachedScriptStatus = cachedScriptStatuses.current[src];\n if (cachedScriptStatus === \"ready\" || cachedScriptStatus === \"error\") {\n setStatus(cachedScriptStatus);\n return;\n }\n\n let script = document.querySelector(`script[src=\"${src}\"]`);\n\n if (script) {\n setStatus(\n script.getAttribute(\"data-status\") ?? cachedScriptStatus ?? \"loading\"\n );\n } else {\n script = document.createElement(\"script\");\n script.src = src;\n script.async = true;\n script.setAttribute(\"data-status\", \"loading\");\n document.body.appendChild(script);\n\n const setAttributeFromEvent = (event) => {\n const scriptStatus = event.type === \"load\" ? \"ready\" : \"error\";\n\n if (script) {\n script.setAttribute(\"data-status\", scriptStatus);\n }\n };\n\n script.addEventListener(\"load\", setAttributeFromEvent);\n script.addEventListener(\"error\", setAttributeFromEvent);\n }\n\n const setStateFromEvent = (event) => {\n const newStatus = event.type === \"load\" ? \"ready\" : \"error\";\n setStatus(newStatus);\n cachedScriptStatuses.current[src] = newStatus;\n };\n\n script.addEventListener(\"load\", setStateFromEvent);\n script.addEventListener(\"error\", setStateFromEvent);\n\n return () => {\n if (script) {\n script.removeEventListener(\"load\", setStateFromEvent);\n script.removeEventListener(\"error\", setStateFromEvent);\n }\n\n if (script && options.removeOnUnmount) {\n script.remove();\n }\n };\n }, [src, options.removeOnUnmount]);\n\n return status;\n}\n\nexport function useSet(values) {\n const setRef = React.useRef(new Set(values));\n const [, reRender] = React.useReducer((x) => x + 1, 0);\n\n setRef.current.add = (...args) => {\n const res = Set.prototype.add.apply(setRef.current, args);\n reRender();\n\n return res;\n };\n\n setRef.current.clear = (...args) => {\n Set.prototype.clear.apply(setRef.current, args);\n reRender();\n };\n\n setRef.current.delete = (...args) => {\n const res = Set.prototype.delete.apply(setRef.current, args);\n reRender();\n\n return res;\n };\n\n return setRef.current;\n}\n\nexport function useSpeech(text, options) {\n const [state, setState] = React.useState(() => {\n const { lang = \"default\", name = \"\" } = options.voice || {};\n return {\n isPlaying: false,\n status: \"init\",\n lang: options.lang || \"default\",\n voiceInfo: { lang, name },\n rate: options.rate || 1,\n pitch: options.pitch || 1,\n volume: options.volume || 1,\n };\n });\n\n const optionsRef = React.useRef(options);\n\n React.useEffect(() => {\n const handlePlay = () => {\n setState((s) => {\n return { ...s, isPlaying: true, status: \"play\" };\n });\n };\n\n const handlePause = () => {\n setState((s) => {\n return { ...s, isPlaying: false, status: \"pause\" };\n });\n };\n\n const handleEnd = () => {\n setState((s) => {\n return { ...s, isPlaying: false, status: \"end\" };\n });\n };\n\n const utterance = new SpeechSynthesisUtterance(text);\n optionsRef.current.lang && (utterance.lang = optionsRef.current.lang);\n optionsRef.current.voice && (utterance.voice = optionsRef.current.voice);\n utterance.rate = optionsRef.current.rate || 1;\n utterance.pitch = optionsRef.current.pitch || 1;\n utterance.volume = optionsRef.current.volume || 1;\n utterance.onstart = handlePlay;\n utterance.onpause = handlePause;\n utterance.onresume = handlePlay;\n utterance.onend = handleEnd;\n window.speechSynthesis.speak(utterance);\n }, [text]);\n\n return state;\n}\n\nexport function useThrottle(value, interval = 500) {\n const [throttledValue, setThrottledValue] = React.useState(value);\n const lastUpdated = React.useRef();\n\n React.useEffect(() => {\n const now = Date.now();\n\n if (now >= lastUpdated.current + interval) {\n lastUpdated.current = now;\n setThrottledValue(value);\n } else {\n const id = window.setTimeout(() => {\n lastUpdated.current = now;\n setThrottledValue(value);\n }, interval);\n\n return () => window.clearTimeout(id);\n }\n }, [value, interval]);\n\n return throttledValue;\n}\n\nexport function useToggle(initialValue) {\n const [on, setOn] = React.useState(initialValue);\n\n const handleToggle = React.useCallback((value) => {\n if (typeof value === \"boolean\") {\n return setOn(value);\n }\n\n return setOn((v) => !v);\n }, []);\n\n return [on, handleToggle];\n}\n\nexport function useVisibilityChange() {\n const [documentVisible, setDocumentVisibility] = React.useState(true);\n\n React.useEffect(() => {\n const handleChange = () => {\n if (document.visibilityState !== \"visible\") {\n setDocumentVisibility(false);\n } else {\n setDocumentVisibility(true);\n }\n };\n\n document.addEventListener(\"visibilitychange\", handleChange);\n\n return () => {\n document.removeEventListener(\"visibilitychange\", handleChange);\n };\n }, []);\n\n return documentVisible;\n}\n\nexport function useWindowScroll() {\n const [state, setState] = React.useState({\n x: null,\n y: null,\n });\n\n const scrollTo = React.useCallback((...args) => {\n if (typeof args[0] === \"object\") {\n window.scrollTo(args[0]);\n } else if (typeof args[0] === \"number\" && typeof args[1] === \"number\") {\n window.scrollTo(args[0], args[1]);\n } else {\n throw new Error(\n `Invalid arguments passed to scrollTo. See here for more info. https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollTo`\n );\n }\n }, []);\n\n React.useLayoutEffect(() => {\n const handleScroll = () => {\n setState({ x: window.pageXOffset, y: window.pageYOffset });\n };\n\n handleScroll();\n window.addEventListener(\"scroll\", handleScroll);\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n };\n }, []);\n\n return [state, scrollTo];\n}\n\nexport function useWindowSize() {\n const [size, setSize] = React.useState({\n width: null,\n height: null,\n });\n\n React.useLayoutEffect(() => {\n const handleResize = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n return size;\n}\n","import React, { useEffect, useState } from 'react'\r\nimport { Card, InputAdornment, TextField, ToggleButton, ToggleButtonGroup, Typography, Divider, Button, CircularProgress } from '@mui/material'\r\nimport styled from '@emotion/styled'\r\nimport FitnessCenterIcon from '@mui/icons-material/FitnessCenter';\r\nimport CalendarTodayTwoToneIcon from '@mui/icons-material/CalendarTodayTwoTone';\r\nimport LoggedRoutine from '../types/Logged/LoggedRoutine';\r\nimport LoggedExercise from '../types/Logged/LoggedExercise';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useInfiniteQuery } from 'react-query'\r\nimport config from '../config';\r\nimport axios from 'axios';\r\nimport { useInView } from 'react-intersection-observer'\r\n//@ts-ignore\r\nimport { useDebounce } from \"@uidotdev/usehooks\";\r\nimport { isMobile } from 'react-device-detect';\r\nimport ErrorConfig from '../utils/ErrorConfig';\r\nimport { checkCookies } from '../libs/api';\r\nimport { getToken, getUserId } from '../utils/mobileStorage';\r\nimport { baseContainerStyles } from './styled/baseStyles';\r\nimport { observer } from 'mobx-react-lite';\r\nimport mobileSelectedStore from '../store/mobileSelectedStore';\r\n\r\nconst Container = styled.div`\r\n ${baseContainerStyles}\r\n /* width: 100%;\r\n height: 100%;\r\n background: #192633;\r\n position: fixed;\r\n display: flex;\r\n justify-content: center;\r\n overflow: auto; */\r\n`\r\nconst Wrapper = styled.div`\r\n width: ${isMobile ? '100%' : '85%'};\r\n padding-bottom: 50px;\r\n background-color: #15202b;\r\n position: relative;\r\n overflow: auto;\r\n overflow-x: hidden;\r\n padding-bottom: 100px;\r\n`\r\n\r\nconst SearchContainer = styled.div`\r\n width: ${isMobile ? '92%' : '80%'}; \r\n margin-top: ${isMobile ? '5%' : '2%'};\r\n margin-left: ${isMobile ? '4%' : '10%'};\r\n display: flex;\r\n flex-direction: row;\r\n`\r\n\r\nconst StyledTextFieldContainer = styled.div`\r\n flex-grow: 1;\r\n`\r\n\r\nconst StyledTextField = styled(TextField)({\r\n font: 'bold',\r\n width: '100%',\r\n '& label.Mui-focused': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-input': {\r\n color: 'white',\r\n '&::placeholder': {\r\n fontSize: '15px',\r\n },\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n '& fieldset': {\r\n borderColor: '#808080',\r\n },\r\n '&:hover fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n '&.Mui-focused fieldset': {\r\n borderColor: 'lightgrey',\r\n },\r\n },\r\n '& .MuiInputLabel-root': {\r\n color: '#7C8A97',\r\n },\r\n \"& .MuiInputBase-root\": {\r\n height: isMobile ? '45px' : ''\r\n }\r\n})\r\n\r\nconst StyledButtonGroup = styled(ToggleButtonGroup)({\r\n marginLeft: '2%',\r\n})\r\n\r\nconst StyledToggleButton = styled(ToggleButton)({\r\n color: 'grey',\r\n height: isMobile ? '45px' : '55px',\r\n fontSize: isMobile ? '13px' : '',\r\n fontWeight: isMobile ? 'bold' : '',\r\n backgroundColor: '#445569',\r\n '&.Mui-selected': {\r\n color: 'lightgrey',\r\n backgroundColor: '#E29E21',\r\n \":hover\": {\r\n color: 'lightgrey',\r\n backgroundColor: '#E29E21'\r\n }\r\n },\r\n \":hover\": {\r\n color: 'white',\r\n backgroundColor: '#5f5f75'\r\n },\r\n '&: focus': {\r\n outline: 'none'\r\n }\r\n})\r\n\r\nconst ContentContainer = styled(Card)`\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n background: #15202B;\r\n width: ${isMobile ? '92%' : '80%'};\r\n margin-top: 30px;\r\n min-height: 15vh;\r\n border: 1px solid #7C8A97;\r\n cursor: pointer;\r\n`\r\n\r\nconst ExerciseTextField = styled(TextField)({\r\n marginTop: '10px',\r\n marginLeft: '10px',\r\n width: isMobile ? '80%' : '35%',\r\n height: '56px',\r\n '& label.Mui-disabled': {\r\n color: 'lightgrey',\r\n },\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n '& fieldset': {\r\n borderColor: 'grey',\r\n },\r\n },\r\n \"& .MuiInputBase-input.Mui-disabled\": {\r\n WebkitTextFillColor: \"#bdbbbb\",\r\n },\r\n});\r\n\r\n\r\nconst SetParentContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n margin-bottom: 50px;\r\n`\r\nconst SetContainer = styled.div`\r\n margin-top: 10px;\r\n margin-left: 11px;\r\n display:flex;\r\n flex-direction: row;\r\n`\r\nconst SetTypography = styled.div`\r\n margin-left: ${isMobile ? '9px' : '20px'};\r\n color: white;\r\n font-size: 22px;\r\n min-width: 24px;\r\n`\r\n\r\nconst SetButtonDiv = styled.div`\r\n position: absolute;\r\n bottom: 0;\r\n width: 100%;\r\n\r\n`\r\nconst AddSetButton = styled(Button)({\r\n width: '100%',\r\n justifyContent: 'flex-start',\r\n borderRadius: '1px',\r\n\r\n backgroundColor: '#15202B',\r\n paddingLeft: '11px',\r\n \"&.Mui-disabled\": {\r\n color: \"#bdbbbb\"\r\n }\r\n})\r\n\r\nconst RepsTextField = styled(TextField)({\r\n marginLeft: '20px',\r\n width: '35%',\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n\r\n },\r\n \"& .MuiInputBase-input.Mui-disabled\": {\r\n WebkitTextFillColor: \"#bdbbbb\",\r\n },\r\n});\r\n\r\nconst WeightTextField = styled(TextField)({\r\n marginLeft: '20px',\r\n width: '35%',\r\n '& .MuiOutlinedInput-root': {\r\n backgroundColor: '#273340',\r\n\r\n },\r\n \"& .MuiInputBase-input.Mui-disabled\": {\r\n WebkitTextFillColor: \"#bdbbbb\",\r\n },\r\n\r\n\r\n})\r\n\r\nconst StyledTypography = styled(Typography)({\r\n marginBottom: '10px',\r\n color: 'white'\r\n})\r\n\r\nconst StyledEmptyContainer = styled.div`\r\n background-color: #5c5c5c65; \r\n color: white;\r\n text-align: center;\r\n margin-top: 10px;\r\n`\r\n\r\n\r\nconst ProgressComponent = () => {\r\n const { ref, inView } = useInView()\r\n const [toggleState, setToggleState] = useState<string>(sessionStorage.getItem('toggleState') || 'Routine')\r\n const [queryState, setQueryState] = useState(sessionStorage.getItem('queryState') || '')\r\n\r\n const moment = require('moment')\r\n const navigate = useNavigate()\r\n const debounceValue = useDebounce(queryState, 300);\r\n\r\n useEffect(() => {\r\n if (inView && searchQuery.hasNextPage) {\r\n searchQuery.fetchNextPage()\r\n }\r\n sessionStorage.removeItem('toggleState')\r\n sessionStorage.removeItem('queryState')\r\n\r\n //sessionStorage.clear()\r\n }, [inView])\r\n\r\n const handleToggleChange = (e: React.MouseEvent<HTMLElement, MouseEvent>, newToggleValue: string) => {\r\n if (newToggleValue !== null) {\r\n setToggleState(newToggleValue)\r\n setQueryState('')\r\n sessionStorage.removeItem('queryState')\r\n }\r\n\r\n }\r\n\r\n const handleRoutineClick = (routineState: LoggedRoutine) => {\r\n sessionStorage.setItem('toggleState', toggleState)\r\n sessionStorage.setItem('queryState', queryState)\r\n const data = {\r\n routineState\r\n }\r\n mobileSelectedStore.setFromProgressPage(true)\r\n navigate(`/loggedroutine`, { state: data })\r\n }\r\n\r\n const handleExerciseClick = async (routineId: number | undefined) => {\r\n if (routineId === undefined) {\r\n return null\r\n }\r\n await checkCookies()\r\n sessionStorage.setItem('toggleState', toggleState)\r\n sessionStorage.setItem('queryState', queryState)\r\n const routineData = {\r\n //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991',\r\n // userId: sessionStorage.getItem('uuid'),\r\n userId: await getUserId(),\r\n id: routineId.toString()\r\n }\r\n try {\r\n const res = await axios.post(config.backend.url + 'loggedWorkout/search/get', routineData, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n const data = {\r\n routineState: res.data?.data.LoggedWorkoutModel[0]\r\n }\r\n mobileSelectedStore.setFromProgressPage(true)\r\n navigate(`/loggedroutine`, { state: data })\r\n } catch (err) {\r\n ErrorConfig(err)\r\n }\r\n }\r\n\r\n const getSearchResults = async (queryState: string, pageParam: string) => {\r\n if (!queryState) {\r\n return null\r\n }\r\n try {\r\n await checkCookies()\r\n if (toggleState === 'Routine') {\r\n const data = {\r\n //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991',\r\n // userId: sessionStorage.getItem('uuid'),\r\n userId: await getUserId(),\r\n title: queryState,\r\n cursor: pageParam.toString()\r\n }\r\n\r\n const res = await axios.post(config.backend.url + 'loggedWorkout/search/title', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n\r\n const newData = {\r\n loggedWorkouts: res.data?.data.LoggedWorkoutModel,\r\n nextId: res.data?.data.nextId\r\n }\r\n //await new Promise((resolve) => setTimeout(resolve, Math.random() * 1000))\r\n return newData\r\n }\r\n\r\n if (toggleState === 'Exercise') {\r\n const data = {\r\n //userId: '9d51c2fb-b664-4dfa-a009-4d0e5bf3c991',\r\n // userId: sessionStorage.getItem('uuid'),\r\n userId: await getUserId(),\r\n title: queryState,\r\n cursor: pageParam.toString()\r\n }\r\n const res = await axios.post(config.backend.url + 'loggedExercise/search/title', data, {\r\n headers: {\r\n \"Authorization\": await getToken()\r\n }\r\n })\r\n\r\n const newData = {\r\n loggedWorkouts: res.data?.data.LoggedExerciseModel,\r\n nextId: res.data?.data.nextId\r\n }\r\n // await new Promise((resolve) => setTimeout(resolve, Math.random() * 1000))\r\n return newData\r\n }\r\n } catch (err) {\r\n ErrorConfig(err)\r\n }\r\n\r\n }\r\n const searchQuery = useInfiniteQuery({\r\n queryKey: ['searchResult2', debounceValue, toggleState],\r\n queryFn: ({ pageParam = '' }) => getSearchResults(debounceValue, pageParam),\r\n getNextPageParam: (lastPage) => lastPage?.nextId || false,\r\n })\r\n\r\n return (\r\n <>\r\n <Container>\r\n <Wrapper>\r\n <SearchContainer>\r\n <StyledTextFieldContainer>\r\n <StyledTextField\r\n placeholder={isMobile ? `Enter ${toggleState} name` : `Enter a ${toggleState} Name to Search For`}\r\n autoComplete='off'\r\n value={queryState}\r\n onChange={(e) => (setQueryState(e.target.value))}\r\n />\r\n </StyledTextFieldContainer>\r\n <StyledButtonGroup\r\n color=\"primary\"\r\n value={toggleState}\r\n exclusive\r\n onChange={handleToggleChange}\r\n aria-label=\"Platform\"\r\n >\r\n <StyledToggleButton value='Routine' size={isMobile ? 'small' : 'medium'}>Routine</StyledToggleButton>\r\n <StyledToggleButton value='Exercise' size={isMobile ? 'small' : 'medium'}>Exercise</StyledToggleButton>\r\n </StyledButtonGroup>\r\n </SearchContainer>\r\n {\r\n searchQuery.isLoading && queryState ?\r\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '50px' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n searchQuery.data?.pages[0]?.loggedWorkouts.length === 0 && queryState ?\r\n <StyledEmptyContainer>\r\n <Typography style={{ fontSize: '30px' }} >No results found</Typography>\r\n </StyledEmptyContainer>\r\n :\r\n (\r\n toggleState === 'Routine' && queryState ?\r\n (\r\n queryState && searchQuery.data?.pages.map((page) =>\r\n page &&\r\n <React.Fragment key={page?.nextId || 'lastPage'}>\r\n {\r\n page.loggedWorkouts?.map((routine: LoggedRoutine, index: number) =>\r\n <ContentContainer key={index} style={{ marginLeft: isMobile ? '4%' : '10%', marginBottom: '15px', paddingLeft: '20px' }} onClick={(e) => handleRoutineClick(routine)}>\r\n <StyledTypography variant='h4' fontWeight='bold' style={{ marginTop: '10px' }}>{routine.title}</StyledTypography>\r\n <div style={{ display: 'flex' }}>\r\n <CalendarTodayTwoToneIcon fontSize='small' style={{ color: 'lightgrey', marginRight: '5px' }} />\r\n <Typography style={{ color: 'lightgrey', marginBottom: '30px' }}>\r\n {moment(routine.futureDate).format('dddd, MMMM Do YYYY')}\r\n </Typography>\r\n </div>\r\n <Divider sx={{ bgcolor: '#38444D', marginBottom: '10px', marginLeft: isMobile ? '-4%' : '-10%', marginTop: '-1%' }} />\r\n <div style={{ display: 'flex' }}>\r\n <FitnessCenterIcon color='primary' fontSize='small' style={{ marginRight: '5px', marginTop: '1px' }} />\r\n <StyledTypography style={{}}>Exercises: </StyledTypography>\r\n </div>\r\n <StyledTypography style={{ marginLeft: '25px' }}>\r\n {routine.exercises?.map((exercise: LoggedExercise, index: number) =>\r\n <React.Fragment key={index}>\r\n {exercise.title}\r\n {index !== routine.exercises.length - 1 && ', '}\r\n </React.Fragment>\r\n\r\n )}\r\n </StyledTypography>\r\n </ContentContainer>\r\n )}\r\n </React.Fragment>\r\n\r\n )\r\n\r\n )\r\n :\r\n (\r\n queryState && searchQuery.data?.pages.map((page) =>\r\n <React.Fragment key={page?.nextId || 'lastPage'}>\r\n {\r\n page?.loggedWorkouts?.map((exercise: LoggedExercise, index: number) =>\r\n <ContentContainer key={`${exercise.title}${exercise.id}`} style={{ marginLeft: isMobile ? '2%' : '10%', marginBottom: '15px', width: isMobile ? '96%' : '80%' }} onClick={(e) => handleExerciseClick(exercise.loggedworkoutId)} >\r\n <ExerciseTextField\r\n label=\"Exercise Name\"\r\n autoComplete='off'\r\n value={exercise.title}\r\n size={isMobile ? 'small' : \"medium\"}\r\n disabled\r\n\r\n />\r\n <Divider sx={{ marginTop: isMobile ? '' : '20px', bgcolor: '#38444D' }} />\r\n <SetParentContainer>\r\n {\r\n exercise.repsWeight?.map((rw: any, index2: number) =>\r\n <SetContainer key={`reps${rw.id}`} >\r\n <Button variant='outlined' size='medium' disabled sx={{\r\n width: '10px', color: 'white', \"&.Mui-disabled\": {\r\n color: \"#bdbbbb\"\r\n },\r\n minWidth: isMobile ? 'unset' : 'default'\r\n }}>X</Button>\r\n <Divider flexItem orientation='vertical' sx={{ marginLeft: isMobile ? '' : '20px', bgcolor: 'white' }} />\r\n <SetTypography>{index2 + 1}</SetTypography>\r\n <RepsTextField\r\n size='small'\r\n value={rw.reps}\r\n disabled\r\n InputProps={{\r\n endAdornment: < InputAdornment position=\"end\" style={{ color: 'white' }} >\r\n <Typography>reps</Typography>\r\n </InputAdornment>\r\n }}\r\n />\r\n <WeightTextField\r\n size='small'\r\n disabled\r\n value={rw.weight}\r\n InputProps={{\r\n endAdornment: < InputAdornment position=\"end\" style={{ color: 'white' }} >\r\n <Typography>lbs/kg</Typography>\r\n </InputAdornment>\r\n }}\r\n />\r\n </SetContainer>\r\n )\r\n }\r\n </SetParentContainer>\r\n <SetButtonDiv>\r\n <AddSetButton variant=\"contained\" size=\"small\" disabled>Add Set</AddSetButton>\r\n </SetButtonDiv>\r\n </ContentContainer>\r\n )\r\n }\r\n </React.Fragment>\r\n )\r\n )\r\n\r\n )\r\n }\r\n {searchQuery.isFetchingNextPage && (\r\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '50px' }}>\r\n <CircularProgress />\r\n </div>\r\n )}\r\n <span ref={ref} style={{ visibility: 'hidden' }}>intersection observer marker</span>\r\n </Wrapper>\r\n </Container>\r\n </>\r\n )\r\n}\r\n\r\nexport default observer(ProgressComponent)\r\n","import * as React from 'react';\nimport type { InViewHookResponse, IntersectionOptions } from './index';\nimport { observe } from './observe';\n\ntype State = {\n inView: boolean;\n entry?: IntersectionObserverEntry;\n};\n\n/**\n * React Hooks make it easy to monitor the `inView` state of your components. Call\n * the `useInView` hook with the (optional) [options](#options) you need. It will\n * return an array containing a `ref`, the `inView` status and the current\n * [`entry`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry).\n * Assign the `ref` to the DOM element you want to monitor, and the hook will\n * report the status.\n *\n * @example\n * ```jsx\n * import React from 'react';\n * import { useInView } from 'react-intersection-observer';\n *\n * const Component = () => {\n * const { ref, inView, entry } = useInView({\n * threshold: 0,\n * });\n *\n * return (\n * <div ref={ref}>\n * <h2>{`Header inside viewport ${inView}.`}</h2>\n * </div>\n * );\n * };\n * ```\n */\nexport function useInView({\n threshold,\n delay,\n trackVisibility,\n rootMargin,\n root,\n triggerOnce,\n skip,\n initialInView,\n fallbackInView,\n onChange,\n}: IntersectionOptions = {}): InViewHookResponse {\n const [ref, setRef] = React.useState<Element | null>(null);\n const callback = React.useRef<IntersectionOptions['onChange']>();\n const [state, setState] = React.useState<State>({\n inView: !!initialInView,\n entry: undefined,\n });\n\n // Store the onChange callback in a `ref`, so we can access the latest instance\n // inside the `useEffect`, but without triggering a rerender.\n callback.current = onChange;\n\n React.useEffect(\n () => {\n // Ensure we have node ref, and that we shouldn't skip observing\n if (skip || !ref) return;\n\n let unobserve: (() => void) | undefined;\n unobserve = observe(\n ref,\n (inView, entry) => {\n setState({\n inView,\n entry,\n });\n if (callback.current) callback.current(inView, entry);\n\n if (entry.isIntersecting && triggerOnce && unobserve) {\n // If it should only trigger once, unobserve the element after it's inView\n unobserve();\n unobserve = undefined;\n }\n },\n {\n root,\n rootMargin,\n threshold,\n // @ts-ignore\n trackVisibility,\n // @ts-ignore\n delay,\n },\n fallbackInView,\n );\n\n return () => {\n if (unobserve) {\n unobserve();\n }\n };\n },\n // We break the rule here, because we aren't including the actual `threshold` variable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [\n // If the threshold is an array, convert it to a string, so it won't change between renders.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n Array.isArray(threshold) ? threshold.toString() : threshold,\n ref,\n root,\n rootMargin,\n triggerOnce,\n skip,\n trackVisibility,\n fallbackInView,\n delay,\n ],\n );\n\n const entryTarget = state.entry?.target;\n const previousEntryTarget = React.useRef<Element>();\n if (\n !ref &&\n entryTarget &&\n !triggerOnce &&\n !skip &&\n previousEntryTarget.current !== entryTarget\n ) {\n // If we don't have a node ref, then reset the state (unless the hook is set to only `triggerOnce` or `skip`)\n // This ensures we correctly reflect the current state - If you aren't observing anything, then nothing is inView\n previousEntryTarget.current = entryTarget;\n setState({\n inView: !!initialInView,\n entry: undefined,\n });\n }\n\n const result = [setRef, state.inView, state.entry] as InViewHookResponse;\n\n // Support object destructuring, by adding the specific values.\n result.ref = result[0];\n result.inView = result[1];\n result.entry = result[2];\n\n return result;\n}\n","import React from 'react'\r\nimport ProgressComponent from '../components/ProgressComponent'\r\nimport Navbar from '../components/Navbar'\r\nimport MobileBottomBar from '../components/Mobile/MobileBottomBar'\r\nimport { isMobile } from 'react-device-detect'\r\n\r\nconst ProgressPage = (props: any) => {\r\n return (\r\n <>\r\n <Navbar title={'Progress'} />\r\n <ProgressComponent />\r\n {isMobile && <MobileBottomBar />}\r\n </>\r\n )\r\n}\r\n\r\nexport default ProgressPage","import { unstable_generateUtilityClasses as generateUtilityClasses } from '@mui/utils';\nimport generateUtilityClass from '../generateUtilityClass';\nexport function getAlertUtilityClass(slot) {\n return generateUtilityClass('MuiAlert', slot);\n}\nconst alertClasses = generateUtilityClasses('MuiAlert', ['root', 'action', 'icon', 'message', 'filled', 'filledSuccess', 'filledInfo', 'filledWarning', 'filledError', 'outlined', 'outlinedSuccess', 'outlinedInfo', 'outlinedWarning', 'outlinedError', 'standard', 'standardSuccess', 'standardInfo', 'standardWarning', 'standardError']);\nexport default alertClasses;","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z\"\n}), 'SuccessOutlined');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z\"\n}), 'ReportProblemOutlined');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'ErrorOutline');","import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z\"\n}), 'InfoOutlined');","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"action\", \"children\", \"className\", \"closeText\", \"color\", \"components\", \"componentsProps\", \"icon\", \"iconMapping\", \"onClose\", \"role\", \"severity\", \"slotProps\", \"slots\", \"variant\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport { darken, lighten } from '@mui/system';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport Paper from '../Paper';\nimport alertClasses, { getAlertUtilityClass } from './alertClasses';\nimport IconButton from '../IconButton';\nimport SuccessOutlinedIcon from '../internal/svg-icons/SuccessOutlined';\nimport ReportProblemOutlinedIcon from '../internal/svg-icons/ReportProblemOutlined';\nimport ErrorOutlineIcon from '../internal/svg-icons/ErrorOutline';\nimport InfoOutlinedIcon from '../internal/svg-icons/InfoOutlined';\nimport CloseIcon from '../internal/svg-icons/Close';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n variant,\n color,\n severity,\n classes\n } = ownerState;\n const slots = {\n root: ['root', `${variant}${capitalize(color || severity)}`, `${variant}`],\n icon: ['icon'],\n message: ['message'],\n action: ['action']\n };\n return composeClasses(slots, getAlertUtilityClass, classes);\n};\nconst AlertRoot = styled(Paper, {\n name: 'MuiAlert',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`${ownerState.variant}${capitalize(ownerState.color || ownerState.severity)}`]];\n }\n})(({\n theme,\n ownerState\n}) => {\n const getColor = theme.palette.mode === 'light' ? darken : lighten;\n const getBackgroundColor = theme.palette.mode === 'light' ? lighten : darken;\n const color = ownerState.color || ownerState.severity;\n return _extends({}, theme.typography.body2, {\n backgroundColor: 'transparent',\n display: 'flex',\n padding: '6px 16px'\n }, color && ownerState.variant === 'standard' && {\n color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n backgroundColor: theme.vars ? theme.vars.palette.Alert[`${color}StandardBg`] : getBackgroundColor(theme.palette[color].light, 0.9),\n [`& .${alertClasses.icon}`]: theme.vars ? {\n color: theme.vars.palette.Alert[`${color}IconColor`]\n } : {\n color: theme.palette[color].main\n }\n }, color && ownerState.variant === 'outlined' && {\n color: theme.vars ? theme.vars.palette.Alert[`${color}Color`] : getColor(theme.palette[color].light, 0.6),\n border: `1px solid ${(theme.vars || theme).palette[color].light}`,\n [`& .${alertClasses.icon}`]: theme.vars ? {\n color: theme.vars.palette.Alert[`${color}IconColor`]\n } : {\n color: theme.palette[color].main\n }\n }, color && ownerState.variant === 'filled' && _extends({\n fontWeight: theme.typography.fontWeightMedium\n }, theme.vars ? {\n color: theme.vars.palette.Alert[`${color}FilledColor`],\n backgroundColor: theme.vars.palette.Alert[`${color}FilledBg`]\n } : {\n backgroundColor: theme.palette.mode === 'dark' ? theme.palette[color].dark : theme.palette[color].main,\n color: theme.palette.getContrastText(theme.palette[color].main)\n }));\n});\nconst AlertIcon = styled('div', {\n name: 'MuiAlert',\n slot: 'Icon',\n overridesResolver: (props, styles) => styles.icon\n})({\n marginRight: 12,\n padding: '7px 0',\n display: 'flex',\n fontSize: 22,\n opacity: 0.9\n});\nconst AlertMessage = styled('div', {\n name: 'MuiAlert',\n slot: 'Message',\n overridesResolver: (props, styles) => styles.message\n})({\n padding: '8px 0',\n minWidth: 0,\n overflow: 'auto'\n});\nconst AlertAction = styled('div', {\n name: 'MuiAlert',\n slot: 'Action',\n overridesResolver: (props, styles) => styles.action\n})({\n display: 'flex',\n alignItems: 'flex-start',\n padding: '4px 0 0 16px',\n marginLeft: 'auto',\n marginRight: -8\n});\nconst defaultIconMapping = {\n success: /*#__PURE__*/_jsx(SuccessOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n warning: /*#__PURE__*/_jsx(ReportProblemOutlinedIcon, {\n fontSize: \"inherit\"\n }),\n error: /*#__PURE__*/_jsx(ErrorOutlineIcon, {\n fontSize: \"inherit\"\n }),\n info: /*#__PURE__*/_jsx(InfoOutlinedIcon, {\n fontSize: \"inherit\"\n })\n};\nconst Alert = /*#__PURE__*/React.forwardRef(function Alert(inProps, ref) {\n var _ref, _slots$closeButton, _ref2, _slots$closeIcon, _slotProps$closeButto, _slotProps$closeIcon;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAlert'\n });\n const {\n action,\n children,\n className,\n closeText = 'Close',\n color,\n components = {},\n componentsProps = {},\n icon,\n iconMapping = defaultIconMapping,\n onClose,\n role = 'alert',\n severity = 'success',\n slotProps = {},\n slots = {},\n variant = 'standard'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n severity,\n variant\n });\n const classes = useUtilityClasses(ownerState);\n const AlertCloseButton = (_ref = (_slots$closeButton = slots.closeButton) != null ? _slots$closeButton : components.CloseButton) != null ? _ref : IconButton;\n const AlertCloseIcon = (_ref2 = (_slots$closeIcon = slots.closeIcon) != null ? _slots$closeIcon : components.CloseIcon) != null ? _ref2 : CloseIcon;\n const closeButtonProps = (_slotProps$closeButto = slotProps.closeButton) != null ? _slotProps$closeButto : componentsProps.closeButton;\n const closeIconProps = (_slotProps$closeIcon = slotProps.closeIcon) != null ? _slotProps$closeIcon : componentsProps.closeIcon;\n return /*#__PURE__*/_jsxs(AlertRoot, _extends({\n role: role,\n elevation: 0,\n ownerState: ownerState,\n className: clsx(classes.root, className),\n ref: ref\n }, other, {\n children: [icon !== false ? /*#__PURE__*/_jsx(AlertIcon, {\n ownerState: ownerState,\n className: classes.icon,\n children: icon || iconMapping[severity] || defaultIconMapping[severity]\n }) : null, /*#__PURE__*/_jsx(AlertMessage, {\n ownerState: ownerState,\n className: classes.message,\n children: children\n }), action != null ? /*#__PURE__*/_jsx(AlertAction, {\n ownerState: ownerState,\n className: classes.action,\n children: action\n }) : null, action == null && onClose ? /*#__PURE__*/_jsx(AlertAction, {\n ownerState: ownerState,\n className: classes.action,\n children: /*#__PURE__*/_jsx(AlertCloseButton, _extends({\n size: \"small\",\n \"aria-label\": closeText,\n title: closeText,\n color: \"inherit\",\n onClick: onClose\n }, closeButtonProps, {\n children: /*#__PURE__*/_jsx(AlertCloseIcon, _extends({\n fontSize: \"small\"\n }, closeIconProps))\n }))\n }) : null]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Alert.propTypes /* remove-proptypes */ = {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n /**\n * The action to display. It renders after the message, at the end of the alert.\n */\n action: PropTypes.node,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * Override the default label for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The color of the component. Unless provided, the value is taken from the `severity` prop.\n * It supports both default and custom theme colors, which can be added as shown in the\n * [palette customization guide](https://mui.com/material-ui/customization/palette/#adding-new-colors).\n */\n color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `slots` prop.\n * It's recommended to use the `slots` prop instead.\n *\n * @default {}\n */\n components: PropTypes.shape({\n CloseButton: PropTypes.elementType,\n CloseIcon: PropTypes.elementType\n }),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `slotProps` prop.\n * It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.\n *\n * @default {}\n */\n componentsProps: PropTypes.shape({\n closeButton: PropTypes.object,\n closeIcon: PropTypes.object\n }),\n /**\n * Override the icon displayed before the children.\n * Unless provided, the icon is mapped to the value of the `severity` prop.\n * Set to `false` to remove the `icon`.\n */\n icon: PropTypes.node,\n /**\n * The component maps the `severity` prop to a range of different icons,\n * for instance success to `<SuccessOutlined>`.\n * If you wish to change this mapping, you can provide your own.\n * Alternatively, you can use the `icon` prop to override the icon displayed.\n */\n iconMapping: PropTypes.shape({\n error: PropTypes.node,\n info: PropTypes.node,\n success: PropTypes.node,\n warning: PropTypes.node\n }),\n /**\n * Callback fired when the component requests to be closed.\n * When provided and no `action` prop is set, a close icon button is displayed that triggers the callback when clicked.\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onClose: PropTypes.func,\n /**\n * The ARIA role attribute of the element.\n * @default 'alert'\n */\n role: PropTypes.string,\n /**\n * The severity of the alert. This defines the color and icon used.\n * @default 'success'\n */\n severity: PropTypes.oneOf(['error', 'info', 'success', 'warning']),\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n *\n * This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slotProps: PropTypes.shape({\n closeButton: PropTypes.object,\n closeIcon: PropTypes.object\n }),\n /**\n * The components used for each slot inside.\n *\n * This prop is an alias for the `components` prop, which will be deprecated in the future.\n *\n * @default {}\n */\n slots: PropTypes.shape({\n closeButton: PropTypes.elementType,\n closeIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The variant to use.\n * @default 'standard'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['filled', 'outlined', 'standard']), PropTypes.string])\n} : void 0;\nexport default Alert;","import React, { useEffect, useState } from 'react'\r\nimport axios from 'axios';\r\nimport config from '../../config';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { Alert, Button, CircularProgress, Divider, IconButton, InputAdornment, TextField, Typography } from '@mui/material'\r\nimport { GoogleLoginButton, AppleLoginButton } from 'react-social-login-buttons';\r\nimport { auth, signInWithGoogle, loginWithEmail, signInWithApple } from '../../libs/firebase';\r\nimport { UserCredential, User } from '@firebase/auth';\r\nimport Cookies from 'js-cookie';\r\nimport { isMobile } from 'react-device-detect';\r\nimport Visibility from '@mui/icons-material/Visibility';\r\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\r\nimport { sendPasswordResetEmail } from 'firebase/auth';\r\nimport LoadingButton from '@mui/lab/LoadingButton';\r\nimport { FirebaseAuthentication, SignInResult } from '@capacitor-firebase/authentication';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { getUserId, setToken, setPhotoUrl, setUserId, getPhotoUrl } from '../../utils/mobileStorage';\r\n\r\nconst LandingPageContainer = styled.div`\r\n /* background-color: #192633; */\r\n display: flex;\r\n flex-direction: ${isMobile ? 'column' : 'row'};\r\n width: 100vw;\r\n height: 100vh;\r\n`\r\n\r\nconst RightSection = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n flex: 1.5;\r\n background-color: #141d27;\r\n`\r\n\r\nconst LeftSection = styled.div`\r\n display: ${isMobile ? 'none' : 'flex'};\r\n justify-content: center;\r\n align-items: center;\r\n flex: 0.5;\r\n background-color: #192633; \r\n`\r\n\r\n\r\nconst StyledLogoContainer = styled.div`\r\n display: flex; \r\n flex-direction: row; \r\n align-items: center; \r\n justify-content: center; \r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? '15%' : isMobile ? '1%' : '7%'}; \r\n`\r\n\r\n\r\nconst StyledMobileLogoContainer = styled.div`\r\n display: ${isMobile ? 'flex' : 'none'}; \r\n position: absolute;\r\n top: 0;\r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? (Capacitor.getPlatform() === 'ios' ? 'env(safe-area-inset-top)' : '5%') : '1%'};\r\n`\r\n\r\nconst StyledDivider = styled(Divider)`\r\n color: white;\r\n background-color: white;\r\n flex: 1.45;\r\n margin-top: 20px;\r\n`\r\n\r\nconst StyledSigninButton = styled(Button)`\r\n width: ${isMobile ? '300px' : '400px'} ;\r\n margin-left: 5px;\r\n height: 50px;\r\n border-radius: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n background-color: black;\r\n text-transform: none;\r\n font-size: 19px;\r\n font-family: \"Google Sans\", arial, sans-serif;\r\n &:hover {\r\n /* background-color: #0f0f0f9e; */\r\n background-color: #3b96ff40;\r\n }\r\n`\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n`\r\n\r\nconst LoadingContainer = styled.div`\r\n height: 100vh;\r\n width: 100vw;\r\n background-color: #192633;\r\n`\r\n\r\nconst StyledDivContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 15px;\r\n`\r\n\r\n\r\nconst StyledSigninContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n background-color: #141d27;\r\n width: ${isMobile ? '100%' : '50%'};\r\n padding-bottom:10px;\r\n`\r\n\r\nconst SetRemoveButton = styled(Button)({\r\n position: 'absolute',\r\n top: 0,\r\n left: 5,\r\n minWidth: 'unset',\r\n color: 'white',\r\n borderColor: 'white',\r\n})\r\n\r\n\r\nconst StyledSigninHeader = styled(Typography)`\r\n align-self: flex-start;\r\n margin-left: 15%;\r\n margin-bottom: 15px;\r\n margin-top: 20px;\r\n`\r\n\r\nconst StyledSignupTextField = styled(TextField)({\r\n width: '70%',\r\n marginBottom: '20px',\r\n // border: '1px solid #808080',\r\n borderRadius: '4px',\r\n // '&:hover': {\r\n // borderColor: 'lightgrey',\r\n // },\r\n // '& .Mui-focused': {\r\n // border: '1px solid lightgrey',\r\n // },\r\n // '& label.Mui-focused': {\r\n // color: 'lightgrey',\r\n // },\r\n // '& .MuiFilledInput-input': {\r\n // color: 'white',\r\n // },\r\n // '& .MuiInputLabel-root': {\r\n // color: '#7C8A97',\r\n // border: 'none',\r\n\r\n // },\r\n\r\n})\r\n\r\n\r\nconst StyledSubmitButton = styled(LoadingButton)`\r\n height: 50px;\r\n width: 70%;\r\n border-radius: 20px;\r\n background-color: 'white';\r\n margin-bottom: 10px;\r\n font-weight: 700;\r\n font-size: 17px;\r\n text-transform: none;\r\n\r\n`\r\n\r\nconst StyledErrorAlert = styled(Alert)`\r\n width: 70%;\r\n margin-top: 10px;\r\n`\r\n\r\n\r\nconst Login = () => {\r\n const [signinClicked, setSigninClicked] = useState(false)\r\n const [isForgotPassword, setIsForgotPassword] = useState(false)\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [isDataLoading, setIsDataLoading] = useState(false)\r\n const [isSubmitLoading, setIsSubmitLoading] = useState(false)\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [isLoginError, setisLoginError] = useState(false);\r\n const [isForgottenEmailSent, setIsForgottenEmailSent] = useState(false);\r\n const [forgottenEmail, setForgottenEmail] = useState('')\r\n const [email, setEmail] = useState('')\r\n const [password, setPassword] = useState('')\r\n const [loginError, setLoginError] = useState('');\r\n\r\n const navigate = useNavigate()\r\n\r\n useEffect(() => {\r\n setIsLoading(true)\r\n if (Cookies.get('userId') && Cookies.get('jwt')) navigate('/')\r\n setIsLoading(false)\r\n\r\n }, [])\r\n\r\n const handleClickShowPassword = () => setShowPassword((show) => !show);\r\n\r\n const handleMouseDownPassword = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n event.preventDefault();\r\n };\r\n\r\n const handleLoginClick = async (type: string) => {\r\n try {\r\n if (Capacitor.isNativePlatform()) {\r\n let result\r\n if (type === 'apple') result = await FirebaseAuthentication.signInWithApple()\r\n else if (type === 'google') result = await FirebaseAuthentication.signInWithGoogle()\r\n setIsDataLoading(true)\r\n const currentUser = result?.user\r\n if (!currentUser) return\r\n const email = result?.user?.email\r\n const uuid = currentUser.uid\r\n const token2 = await FirebaseAuthentication.getIdToken()\r\n const token = token2.token\r\n\r\n const res = await axios.post(config.backend.url + 'login', { name: currentUser.displayName || 'unassigned', email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n\r\n\r\n //set user and token inside a cookie that expires in 30 days\r\n await setUserId(uuid)\r\n await setToken(token)\r\n if (currentUser.photoUrl) {\r\n // setPhotoUrl(currentUser.photoUrl)\r\n await setPhotoUrl(currentUser.photoUrl)\r\n await getPhotoUrl()\r\n }\r\n navigate('/')\r\n }\r\n else {\r\n let result\r\n if (type === 'apple') result = await signInWithApple()\r\n else if (type === 'google') result = await signInWithGoogle()\r\n // const result: UserCredential = await signInWithGoogle()\r\n setIsDataLoading(true)\r\n const currentUser = result?.user as User\r\n const email = result?.user?.email\r\n const uuid = currentUser.uid\r\n const token = await currentUser.getIdToken()\r\n\r\n if (currentUser) {\r\n const res = await axios.post(config.backend.url + 'login', { name: currentUser.displayName || 'unassigned', email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n //set user and token inside a cookie that expires in 30 days\r\n Cookies.set('jwt', token, { expires: (1 / 24), secure: config.cookieSecure });\r\n Cookies.set('userId', uuid, { expires: (1 / 24), secure: config.cookieSecure });\r\n if (currentUser.photoURL) {\r\n Cookies.set('photoUrl', currentUser.photoURL, { expires: 30, secure: config.cookieSecure })\r\n }\r\n navigate('/')\r\n }\r\n }\r\n\r\n } catch (err: any) {\r\n //clear cookies and signout\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n await auth.signOut()\r\n }\r\n setIsDataLoading(false)\r\n }\r\n const handleEmailSigninClick = () => {\r\n setSigninClicked(true)\r\n }\r\n\r\n const handleSignUpXClick = () => {\r\n setLoginError('')\r\n setisLoginError(false)\r\n setIsForgotPassword(false)\r\n setSigninClicked(false)\r\n setEmail('')\r\n setPassword('')\r\n }\r\n\r\n const handleSubmitClick = async () => {\r\n try {\r\n if (Capacitor.isNativePlatform()) {\r\n setIsSubmitLoading(true)\r\n const result = await FirebaseAuthentication.signInWithEmailAndPassword({ email, password })\r\n setIsSubmitLoading(false)\r\n setIsDataLoading(true)\r\n const currentUser = result.user\r\n const uuid = currentUser?.uid\r\n const myToken = await FirebaseAuthentication.getIdToken()\r\n const token = myToken.token\r\n if (currentUser && uuid) {\r\n const res = await axios.post(config.backend.url + 'login', { name: 'unassigned', email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n await setUserId(uuid)\r\n await setToken(token)\r\n navigate('/')\r\n }\r\n } else {\r\n setIsSubmitLoading(true)\r\n const result: UserCredential = await loginWithEmail(email, password)\r\n setIsSubmitLoading(false)\r\n setIsDataLoading(true)\r\n const currentUser = result.user as User\r\n const uuid = currentUser.uid\r\n const token = await currentUser.getIdToken()\r\n if (currentUser) {\r\n const res = await axios.post(config.backend.url + 'login', { name: 'unassigned', email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n //set user and token inside a cookie that expires in 1 hour\r\n if (Capacitor.isNativePlatform()) {\r\n await setUserId(uuid)\r\n await setToken(token)\r\n } else {\r\n Cookies.set('jwt', token, { expires: (1 / 24), secure: config.cookieSecure });\r\n Cookies.set('userId', uuid, { expires: (1 / 24), secure: config.cookieSecure });\r\n }\r\n navigate('/')\r\n }\r\n }\r\n\r\n\r\n } catch (err: any) {\r\n const errorMessage = err.message\r\n const error = errorMessage.substring(errorMessage.indexOf('(') + 1, errorMessage.indexOf(')'))\r\n if (error === 'auth/wrong-password' || error === 'auth/user-not-found' || error === 'auth/invalid-email' || error === 'auth/user-disabled' || error === 'auth/invalid-login-credentials') {\r\n setLoginError('Incorrect Email or Password')\r\n setisLoginError(true)\r\n }\r\n if (err.code === 'wrong-password' || err.code === 'user-not-found' || err.code === 'invalid-email' || err.code === 'user-disabled' || err.code === 'invalid-credentials') {\r\n setLoginError('Incorrect Email or Password')\r\n setisLoginError(true)\r\n }\r\n //clear cookies and signout\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n await auth.signOut()\r\n // console.log(err)\r\n }\r\n setIsSubmitLoading(false)\r\n setIsDataLoading(false)\r\n }\r\n\r\n const handleForgotPasswordClick = () => {\r\n setisLoginError(false)\r\n setLoginError('')\r\n setSigninClicked(false)\r\n setIsForgotPassword(true)\r\n }\r\n\r\n const handleForgotPasswordSubmitClicked = async () => {\r\n try {\r\n setIsSubmitLoading(true)\r\n await sendPasswordResetEmail(auth, forgottenEmail)\r\n setIsForgottenEmailSent(true)\r\n } catch (err: any) {\r\n const errorMessage = err.message\r\n const error = errorMessage.substring(errorMessage.indexOf('(') + 1, errorMessage.indexOf(')'))\r\n if (error === 'auth/user-not-found' || err.code === 'user-not-found') {\r\n setLoginError('Sorry we could not find an account with that email')\r\n setisLoginError(true)\r\n }\r\n\r\n }\r\n setIsSubmitLoading(false)\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n (isLoading || isDataLoading)\r\n ?\r\n <LoadingContainer>\r\n {\r\n Capacitor.isNativePlatform() ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <div style={{ color: \"white\" }}>Redirecting you</div>\r\n }\r\n </LoadingContainer >\r\n :\r\n <>\r\n <LandingPageContainer>\r\n <LeftSection>\r\n <StyledLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Swole</Typography>\r\n </StyledLogoContainer>\r\n </LeftSection>\r\n\r\n <RightSection>\r\n <StyledMobileLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Swole</Typography>\r\n </StyledMobileLogoContainer>\r\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '40px', marginBottom: '30px' }}>\r\n <Typography variant='h5' color='white' fontSize={(isMobile && window.innerWidth < 380) ? '18px' : isMobile ? '20px ' : '30px'}>The only Fitness tracker you will ever need</Typography>\r\n </div>\r\n <div style={{ display: 'flex', justifyContent: 'center', marginBottom: '20px' }}>\r\n <Typography variant='h5' color='white' fontFamily={'Roboto'} fontSize={(isMobile && window.innerWidth < 380) ? '18px' : isMobile ? '20px ' : '30px'}>Log in</Typography>\r\n </div>\r\n\r\n {signinClicked ?\r\n <StyledSigninContainer>\r\n <SetRemoveButton variant='outlined' size='small' sx={{ width: '30px' }} onClick={() => handleSignUpXClick()} >X</SetRemoveButton>\r\n <StyledSigninHeader variant='h5' color='white' >Log in with Email</StyledSigninHeader>\r\n <StyledSignupTextField variant='filled' label='Email ' onChange={(e) => (setEmail(e.target.value), setisLoginError(false), setLoginError(''))}\r\n InputProps={{\r\n disableUnderline: true\r\n }}\r\n sx={{\r\n border: isLoginError ? '1px solid red' : '1px solid #808080',\r\n '&:hover': { borderColor: isLoginError ? 'red' : 'lightgrey' },\r\n '& .Mui-focused': { border: isLoginError ? '1px solid red' : '1px solid lightgrey' },\r\n '& label.Mui-focused': { color: isLoginError ? 'red' : 'lightgrey' },\r\n '& .MuiFilledInput-input': { color: 'white' },\r\n '& .MuiInputLabel-root': { color: (isLoginError ? 'red' : '#7C8A97'), border: 'none' },\r\n }}\r\n />\r\n <StyledSignupTextField variant='filled' label='Password '\r\n type={showPassword ? 'text' : 'password'}\r\n onChange={(e) => (setPassword(e.target.value), setisLoginError(false), setLoginError(''))}\r\n InputProps={{\r\n disableUnderline: true,\r\n endAdornment: (\r\n < InputAdornment position=\"end\" >\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={handleClickShowPassword}\r\n onMouseDown={handleMouseDownPassword}\r\n edge=\"end\"\r\n >\r\n {showPassword ? <VisibilityOff sx={{ color: 'white' }} /> : <Visibility sx={{ color: 'white' }} />}\r\n </IconButton>\r\n </InputAdornment>\r\n )\r\n }}\r\n sx={{\r\n border: isLoginError ? '1px solid red' : '1px solid #808080',\r\n '&:hover': { borderColor: isLoginError ? 'red' : 'lightgrey' },\r\n '& .Mui-focused': { border: isLoginError ? '1px solid red' : '1px solid lightgrey' },\r\n '& label.Mui-focused': { color: isLoginError ? 'red' : 'lightgrey' },\r\n '& .MuiFilledInput-input': { color: 'white' },\r\n '& .MuiInputLabel-root': { color: (isLoginError ? 'red' : '#7C8A97'), border: 'none' },\r\n }}\r\n />\r\n <StyledSubmitButton variant='contained' loading={isSubmitLoading} sx={{\r\n ':disabled': {\r\n backgroundColor: '#868686'\r\n }\r\n }} onClick={() => handleSubmitClick()} >Submit</StyledSubmitButton>\r\n <Typography color='white' sx={{ marginBottom: '20px' }}>\r\n <a href=\"#\" onClick={() => handleForgotPasswordClick()}>Forgot Password?</a>\r\n </Typography>\r\n <Typography color='white'>\r\n Dont have an Account?\r\n <a href=\"/signup\"> Sign up now</a>\r\n </Typography>\r\n <StyledErrorAlert severity=\"error\" variant='filled' hidden={!isLoginError}>{loginError}</StyledErrorAlert>\r\n </StyledSigninContainer>\r\n\r\n :\r\n\r\n isForgotPassword ?\r\n\r\n <StyledSigninContainer>\r\n <SetRemoveButton variant='outlined' size='small' sx={{ width: '30px' }} onClick={() => handleSignUpXClick()} >X</SetRemoveButton>\r\n <StyledSigninHeader variant='h5' color='white' >Forgot Password</StyledSigninHeader>\r\n <StyledSignupTextField variant='filled' label='Email ' onChange={(e) => (setForgottenEmail(e.target.value), setisLoginError(false), setLoginError(''), setIsForgottenEmailSent(false))}\r\n InputProps={{\r\n disableUnderline: true\r\n }}\r\n sx={{\r\n border: isLoginError ? '1px solid red' : '1px solid #808080',\r\n '&:hover': { borderColor: isLoginError ? 'red' : 'lightgrey' },\r\n '& .Mui-focused': { border: isLoginError ? '1px solid red' : '1px solid lightgrey' },\r\n '& label.Mui-focused': { color: isLoginError ? 'red' : 'lightgrey' },\r\n '& .MuiFilledInput-input': { color: 'white' },\r\n '& .MuiInputLabel-root': { color: (isLoginError ? 'red' : '#7C8A97'), border: 'none' },\r\n\r\n }}\r\n />\r\n <StyledSubmitButton variant='contained' loading={isSubmitLoading} sx={{\r\n ':disabled': {\r\n backgroundColor: '#868686'\r\n }\r\n }} onClick={() => handleForgotPasswordSubmitClicked()}>Submit</StyledSubmitButton>\r\n <Typography color='white'>\r\n Dont have an Account?\r\n <a href=\"/signup\"> Sign up now</a>\r\n </Typography>\r\n <StyledErrorAlert severity=\"error\" variant='filled' hidden={!isLoginError}>{loginError}</StyledErrorAlert>\r\n <StyledErrorAlert severity=\"success\" variant='filled' hidden={!isForgottenEmailSent} >Password reset has been sent</StyledErrorAlert>\r\n </StyledSigninContainer>\r\n :\r\n <>\r\n <ButtonContainer>\r\n <div style={{ display: 'flex', justifyContent: 'center', flexDirection: 'column' }}>\r\n <GoogleLoginButton text='Log in with Google'\r\n style={{\r\n width: isMobile ? '300px' : '400px',\r\n borderRadius: '20px',\r\n fontFamily: '\"Google Sans\", arial, sans-serif',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }}\r\n onClick={() => handleLoginClick('google')} />\r\n {\r\n Capacitor.getPlatform() !== 'android' &&\r\n <AppleLoginButton text='Log in with Apple'\r\n style={{\r\n width: isMobile ? '300px' : '400px',\r\n borderRadius: '20px',\r\n fontFamily: '\"Google Sans\", arial, sans-serif',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n marginTop: '10px'\r\n }}\r\n onClick={() => handleLoginClick('apple')} />\r\n }\r\n\r\n <div style={{ display: 'flex', flexDirection: 'row' }}>\r\n <StyledDivider />\r\n <Typography color='white' sx={{ margin: '10px', flex: '0.1' }}>or</Typography>\r\n <StyledDivider />\r\n </div>\r\n <StyledSigninButton variant='contained' color='secondary' onClick={() => handleEmailSigninClick()}>Log in</StyledSigninButton>\r\n </div>\r\n </ButtonContainer>\r\n <StyledDivContainer>\r\n <Typography color='white'>\r\n Dont have an Account?\r\n <a href=\"/signup\"> Sign up now</a>\r\n </Typography>\r\n </StyledDivContainer>\r\n </>\r\n }\r\n </RightSection>\r\n </LandingPageContainer>\r\n </>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default Login","import { useEffect, useState } from \"react\"\r\nimport { Navigate, Outlet, useNavigate } from \"react-router-dom\";\r\nimport { auth } from '../../libs/firebase'\r\nimport styled from \"@emotion/styled\";\r\nimport Cookies from \"js-cookie\";\r\nimport config from \"../../config\";\r\nimport { User } from \"firebase/auth\";\r\nimport getCurrentUser from \"../../utils/GetCurrentUser\";\r\nimport { checkCookies } from \"../../libs/api\";\r\nimport { Preferences } from '@capacitor/preferences';\r\nimport { isMobile } from \"react-device-detect\";\r\nimport { Capacitor } from \"@capacitor/core\";\r\nimport { removeAllPref, setPhotoUrl } from \"../../utils/mobileStorage\";\r\nimport { FirebaseAuthentication } from \"@capacitor-firebase/authentication\";\r\nimport mobileSelectedStore from \"../../store/mobileSelectedStore\";\r\nimport CircularProgress from \"@mui/material/CircularProgress\";\r\n\r\n\r\nconst LoadingContainer = styled.div`\r\n height: 100vh;\r\n width: 100vw;\r\n background-color: #192633;\r\n`\r\n\r\n\r\n\r\nconst RequireAuth = () => {\r\n const navigate = useNavigate()\r\n const [isLoading, setIsLoading] = useState(false)\r\n const [loggedUser, setLoggedUser] = useState<User | null>(null)\r\n\r\n useEffect(() => {\r\n setIsLoading(true)\r\n async function getNewToken() {\r\n const user = await getCurrentUser()\r\n if (user && Object.keys(user).length !== 0) {\r\n setLoggedUser(user)\r\n await checkCookies()\r\n if (user?.photoURL) {\r\n if (Capacitor.isNativePlatform()) {\r\n setPhotoUrl(user.photoURL)\r\n }\r\n else {\r\n Cookies.set('photoUrl', user.photoURL, { expires: 30, secure: config.cookieSecure })\r\n }\r\n }\r\n }\r\n else {\r\n if (Capacitor.isNativePlatform()) {\r\n await removeAllPref()\r\n sessionStorage.clear()\r\n localStorage.removeItem('routineState')\r\n mobileSelectedStore.setCurrentlySelected(1)\r\n await FirebaseAuthentication.signOut()\r\n }\r\n else {\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n }\r\n navigate('/login')\r\n }\r\n }\r\n getNewToken()\r\n //get googles token and compare with one stored in a cookie if they are the same we good if not, update cookies\r\n // auth.onIdTokenChanged(async (innerUser) => {\r\n // const user = await getCurrentUser()\r\n // if (user) {\r\n // const token = await user.getIdToken()\r\n // // const token = await user.getIdToken(true)\r\n // Cookies.set('jwt', token, { expires: 30, secure: config.cookieSecure });\r\n // Cookies.set('userId', user.uid, { expires: 30, secure: config.cookieSecure });\r\n // if (user.photoURL) {\r\n // Cookies.set('photoUrl', user.photoURL, { expires: 30, secure: config.cookieSecure })\r\n // }\r\n // }\r\n // })\r\n // auth.onAuthStateChanged(async (innerUser) => {\r\n // //check if cookies exist, if not redirect to login\\\r\n // const user = await getCurrentUser()\r\n // if (user?.photoURL) {\r\n // Cookies.set('photoUrl', user.photoURL, { expires: 30, secure: config.cookieSecure })\r\n // }\r\n // //get token\r\n // const token = await user?.getIdToken()\r\n // if (token && user) {\r\n // //check if tokens match\r\n // const cookieToken = Cookies.get('jwt')\r\n // if (cookieToken !== token) {\r\n // //if tokens dont match, update cookies\r\n // Cookies.set('jwt', token, { expires: 30, secure: config.cookieSecure });\r\n // Cookies.set('userId', user.uid, { expires: 30, secure: config.cookieSecure });\r\n // }\r\n // }\r\n // if (!Cookies.get('userId') || !Cookies.get('jwt')) {\r\n // Cookies.remove('jwt')\r\n // Cookies.remove('userId')\r\n // Cookies.remove('photoUrl')\r\n // auth.signOut()\r\n // navigate('/login')\r\n // }\r\n // })\r\n setIsLoading(false)\r\n // }, [auth.onAuthStateChanged, auth.onIdTokenChanged])\r\n }, [])\r\n\r\n return (\r\n isLoading || !loggedUser\r\n ?\r\n <LoadingContainer>\r\n {\r\n Capacitor.isNativePlatform() ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <div style={{ color: \"white\" }}>Redirecting you...</div>\r\n }\r\n </LoadingContainer>\r\n :\r\n <Outlet />\r\n\r\n\r\n )\r\n}\r\n\r\nexport default RequireAuth","import { Capacitor } from '@capacitor/core'\r\nimport styled from '@emotion/styled'\r\nimport { CircularProgress } from '@mui/material'\r\nconst Container = styled.div`\r\n height: 100vh;\r\n width: 100vw;\r\n background-color: #192633;\r\n`\r\n\r\nconst RedirectPage = () => {\r\n return (\r\n <Container>\r\n {\r\n Capacitor.isNativePlatform() ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <div style={{ color: \"white\" }}>Redirecting you...</div>\r\n }\r\n </Container>\r\n )\r\n}\r\n\r\nexport default RedirectPage","import React, { useEffect, useState } from 'react'\r\nimport axios from 'axios';\r\nimport config from '../../config';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport styled from '@emotion/styled';\r\nimport { Button, TextField, Typography, InputBase, InputAdornment, IconButton, Alert, CircularProgress } from '@mui/material'\r\nimport { AppleLoginButton, GoogleLoginButton } from 'react-social-login-buttons';\r\nimport { auth, signInWithApple, signInWithGoogle, signupWithEmail } from '../../libs/firebase';\r\nimport { UserCredential, User } from '@firebase/auth';\r\nimport Cookies from 'js-cookie';\r\nimport { Divider } from '@mui/material';\r\nimport { isMobile } from 'react-device-detect';\r\nimport Visibility from '@mui/icons-material/Visibility';\r\nimport VisibilityOff from '@mui/icons-material/VisibilityOff';\r\nimport LoadingButton from '@mui/lab/LoadingButton';\r\nimport { Capacitor } from '@capacitor/core';\r\nimport { FirebaseAuthentication } from '@capacitor-firebase/authentication';\r\nimport { setToken, setPhotoUrl, setUserId, getPhotoUrl } from '../../utils/mobileStorage';\r\n\r\nconst LandingPageContainer = styled.div`\r\n /* background-color: #192633; */\r\n display: flex;\r\n flex-direction: ${isMobile ? 'column' : 'row'};\r\n width: 100vw;\r\n height: 100vh;\r\n`\r\n\r\nconst RightSection = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n flex: 1.5;\r\n background-color: #141d27;\r\n`\r\n\r\nconst LeftSection = styled.div`\r\n display: ${isMobile ? 'none' : 'flex'};\r\n justify-content: center;\r\n align-items: center;\r\n flex: 0.5;\r\n background-color: #192633; \r\n`\r\n\r\n\r\nconst StyledLogoContainer = styled.div`\r\n display: flex; \r\n flex-direction: row; \r\n align-items: center; \r\n justify-content: center; \r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? '15%' : isMobile ? '1%' : '7%'}; \r\n`\r\n\r\nconst StyledMobileLogoContainer = styled.div`\r\n display: ${isMobile ? 'flex' : 'none'}; \r\n position: absolute;\r\n top: 0;\r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? (Capacitor.getPlatform() === 'ios' ? 'env(safe-area-inset-top)' : '5%') : '1%'};\r\n`\r\n\r\n\r\nconst ButtonContainer = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n`\r\n\r\nconst LoadingContainer = styled.div`\r\n height: 100vh;\r\n width: 100vw;\r\n background-color: #192633;\r\n`\r\nconst StyledDivContainer = styled.div`\r\n display: flex;\r\n justify-content: center;\r\n margin-top: 15px;\r\n`\r\n\r\nconst StyledDivider = styled(Divider)`\r\n color: white;\r\n background-color: white;\r\n flex: 1.45;\r\n margin-top: 20px;\r\n`\r\n\r\nconst StyledCreateAccountButton = styled(Button)`\r\n width: ${isMobile ? '300px' : '400px'};\r\n margin-left: 5px;\r\n height: 50px;\r\n border-radius: 20px;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n text-transform: none;\r\n font-size: 19px;\r\n font-family: \"Google Sans\", arial, sans-serif;\r\n`\r\n\r\nconst StyledSignupContainer = styled.div`\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n background-color: #141d27;\r\n width: ${isMobile ? '100%' : '50%'};\r\n padding-bottom:10px;\r\n`\r\n\r\nconst StyledCreateAccountHeader = styled(Typography)`\r\n align-self: flex-start;\r\n margin-left: 15%;\r\n margin-bottom: 15px;\r\n margin-top: 20px;\r\n`\r\n\r\nconst StyledSignupTextField = styled(TextField)({\r\n width: '70%',\r\n marginBottom: '20px',\r\n // border: '1px solid #808080',\r\n borderRadius: '4px',\r\n // '&:hover': {\r\n // borderColor: 'lightgrey',\r\n // },\r\n // '& .Mui-focused': {\r\n // border: '1px solid lightgrey',\r\n // },\r\n // '& label.Mui-focused': {\r\n // color: 'lightgrey',\r\n // },\r\n // '& .MuiFilledInput-input': {\r\n // color: 'white',\r\n // },\r\n // '& .MuiInputLabel-root': {\r\n // color: '#7C8A97',\r\n // border: 'none',\r\n\r\n // },\r\n})\r\n\r\nconst StyledSubmitButton = styled(LoadingButton)`\r\n height: 50px;\r\n width: 70%;\r\n border-radius: 20px;\r\n background-color: 'white';\r\n margin-bottom: 10px;\r\n font-weight: 700;\r\n font-size: 17px;\r\n text-transform: none;\r\n\r\n`\r\n\r\n\r\nconst SetRemoveButton = styled(Button)({\r\n position: 'absolute',\r\n top: 0,\r\n left: 5,\r\n minWidth: 'unset',\r\n color: 'white',\r\n borderColor: 'white',\r\n})\r\n\r\nconst StyledErrorAlert = styled(Alert)`\r\n width: 70%;\r\n margin-top: 10px;\r\n`\r\n\r\n\r\n\r\nconst Signup = () => {\r\n const [isLoading, setIsLoading] = useState(true)\r\n const [isDataLoading, setIsDataLoading] = useState(false)\r\n const [isLoginError, setisLoginError] = useState(false);\r\n const [isSignUpClick, setIsSignUpClick] = useState(false)\r\n const [showPassword, setShowPassword] = useState(false);\r\n const [isSubmitLoading, setIsSubmitLoading] = useState(false)\r\n const [loginError, setLoginError] = useState('');\r\n const [name, setName] = useState('')\r\n const [email, setEmail] = useState('')\r\n const [password, setPassword] = useState('')\r\n const navigate = useNavigate()\r\n\r\n useEffect(() => {\r\n setIsLoading(true)\r\n if (Cookies.get('userId') && Cookies.get('jwt')) navigate('/')\r\n setIsLoading(false)\r\n\r\n }, [])\r\n\r\n const handleClickShowPassword = () => setShowPassword((show) => !show);\r\n\r\n const handleMouseDownPassword = (event: React.MouseEvent<HTMLButtonElement>) => {\r\n event.preventDefault();\r\n };\r\n\r\n const handleCreateAccountClick = async () => {\r\n setIsSignUpClick(true)\r\n }\r\n\r\n const handleSignUpXClick = () => {\r\n setLoginError('')\r\n setisLoginError(false)\r\n\r\n setIsSignUpClick(false)\r\n setName('')\r\n setEmail('')\r\n setPassword('')\r\n }\r\n\r\n const handleSignUpClick = async (type: string) => {\r\n try {\r\n if (Capacitor.isNativePlatform()) {\r\n let result\r\n if (type === 'apple') result = await FirebaseAuthentication.signInWithApple()\r\n else if (type === 'google') result = await FirebaseAuthentication.signInWithGoogle()\r\n setIsDataLoading(true)\r\n const currentUser = result?.user\r\n if (!currentUser) return\r\n const email = result?.user?.email\r\n const uuid = currentUser.uid\r\n const token2 = await FirebaseAuthentication.getIdToken()\r\n const token = token2.token\r\n\r\n const res = await axios.post(config.backend.url + 'login', { name: currentUser.displayName || 'unassigned', email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n\r\n\r\n //set user and token inside a cookie that expires in 30 days\r\n await setUserId(uuid)\r\n await setToken(token)\r\n\r\n if (currentUser.photoUrl) {\r\n await setPhotoUrl(currentUser.photoUrl)\r\n await getPhotoUrl()\r\n }\r\n navigate('/')\r\n } else {\r\n let result\r\n if (type === 'apple') result = await signInWithApple()\r\n else if (type === 'google') result = await signInWithGoogle()\r\n setIsDataLoading(true)\r\n const currentUser = result?.user as User\r\n const email = result?.user?.email\r\n const uuid = currentUser.uid\r\n const token = await currentUser.getIdToken()\r\n if (currentUser) {\r\n const res = await axios.post(config.backend.url + 'login', { name: currentUser.displayName || 'unassigned', email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n //set user and token inside a cookie that expires in 30 days\r\n Cookies.set('jwt', token, { expires: (1 / 24), secure: config.cookieSecure });\r\n Cookies.set('userId', uuid, { expires: (1 / 24), secure: config.cookieSecure });\r\n if (currentUser.photoURL) {\r\n Cookies.set('photoUrl', currentUser.photoURL, { expires: 30, secure: config.cookieSecure })\r\n }\r\n navigate('/')\r\n }\r\n }\r\n } catch (err) {\r\n //clear cookies and signout\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n await auth.signOut()\r\n // console.log(err)\r\n }\r\n setIsDataLoading(false)\r\n }\r\n\r\n const handleSubmitClicked = async () => {\r\n try {\r\n if (name === '') {\r\n setLoginError('Name cannot be empty')\r\n setisLoginError(true)\r\n return\r\n }\r\n if (Capacitor.isNativePlatform()) {\r\n setIsSubmitLoading(true)\r\n const result = await FirebaseAuthentication.createUserWithEmailAndPassword({ email, password })\r\n setIsSubmitLoading(false)\r\n setIsDataLoading(true)\r\n const currentUser = result.user\r\n const uuid = currentUser?.uid\r\n const myToken = await FirebaseAuthentication.getIdToken()\r\n const token = myToken.token\r\n if (currentUser && uuid) {\r\n const res = await axios.post(config.backend.url + 'login', { name: name, email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n await setUserId(uuid)\r\n await setToken(token)\r\n navigate('/')\r\n }\r\n }\r\n else {\r\n setIsSubmitLoading(true)\r\n const result: UserCredential = await signupWithEmail(email, password)\r\n setIsSubmitLoading(false)\r\n setIsDataLoading(true)\r\n const currentUser = result.user as User\r\n const uuid = currentUser.uid\r\n const token = await currentUser.getIdToken()\r\n if (currentUser) {\r\n const res = await axios.post(config.backend.url + 'login', { name: name, email: email?.toLowerCase(), userId: uuid }, {\r\n headers: {\r\n \"Authorization\": `Bearer ${token}`\r\n }\r\n })\r\n //set user and token inside a cookie that expires in 30 days\r\n Cookies.set('jwt', token, { expires: (1 / 24), secure: config.cookieSecure });\r\n Cookies.set('userId', uuid, { expires: (1 / 24), secure: config.cookieSecure });\r\n\r\n navigate('/')\r\n }\r\n }\r\n } catch (err: any) {\r\n const errorMessage = err.message;\r\n const error = errorMessage.substring(errorMessage.indexOf('(') + 1, errorMessage.indexOf(')'))\r\n if (error === 'auth/weak-password' || err.code === 'weak-password') {\r\n setLoginError('Password should be at least 6 characters')\r\n setisLoginError(true)\r\n }\r\n if (error === 'auth/email-already-in-use' || err.code === 'email-already-in-use') {\r\n setLoginError('Email already in use')\r\n setisLoginError(true)\r\n }\r\n if (error === 'auth/invalid-email' || err.code === 'invalid-email') {\r\n setLoginError('This Email is not Valid')\r\n setisLoginError(true)\r\n }\r\n if (error === 'auth/missing-password' || err.code === 'wrong-password') {\r\n setLoginError('Password should be at least 6 characters')\r\n setisLoginError(true)\r\n }\r\n //clear cookies and signout\r\n Cookies.remove('jwt')\r\n Cookies.remove('userId')\r\n Cookies.remove('photoUrl')\r\n await auth.signOut()\r\n }\r\n setIsSubmitLoading(false)\r\n setIsDataLoading(false)\r\n }\r\n\r\n const handleSetName = (e: React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>) => {\r\n setLoginError('')\r\n setisLoginError(false)\r\n setName(e.target.value)\r\n\r\n }\r\n\r\n return (\r\n <>\r\n {\r\n (isLoading || isDataLoading)\r\n ?\r\n <LoadingContainer>\r\n {\r\n Capacitor.isNativePlatform() ?\r\n <div style={{ position: 'absolute', top: '10%', width: '100%', textAlign: 'center' }}>\r\n <CircularProgress />\r\n </div>\r\n :\r\n <div style={{ color: \"white\" }}>Redirecting you</div>\r\n }\r\n </LoadingContainer>\r\n :\r\n <>\r\n <LandingPageContainer>\r\n <LeftSection>\r\n <StyledLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Swole</Typography>\r\n </StyledLogoContainer>\r\n </LeftSection>\r\n <RightSection>\r\n <StyledMobileLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Swole</Typography>\r\n </StyledMobileLogoContainer>\r\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '40px', marginBottom: '30px' }}>\r\n <Typography variant='h5' color='white' fontSize={(isMobile && window.innerWidth < 380) ? '18px' : isMobile ? '20px ' : '30px'}>The only Fitness tracker you will ever need</Typography>\r\n </div>\r\n <div style={{ display: 'flex', justifyContent: 'center', marginBottom: '20px' }}>\r\n <Typography variant='h5' color='white' fontFamily={'Roboto'} fontSize={(isMobile && window.innerWidth < 380) ? '18px' : isMobile ? '20px ' : '30px'}>Sign up</Typography>\r\n </div>\r\n {\r\n isSignUpClick\r\n ?\r\n <StyledSignupContainer>\r\n <SetRemoveButton variant='outlined' size='small' sx={{ width: '30px' }} onClick={() => handleSignUpXClick()} >X</SetRemoveButton>\r\n <StyledCreateAccountHeader variant='h5' color='white' >Create your account</StyledCreateAccountHeader>\r\n <StyledSignupTextField variant='filled' label='Name ' onChange={(e) => (handleSetName(e))}\r\n InputProps={{\r\n disableUnderline: true\r\n }}\r\n sx={{\r\n border: isLoginError ? '1px solid red' : '1px solid #808080',\r\n '&:hover': { borderColor: isLoginError ? 'red' : 'lightgrey' },\r\n '& .Mui-focused': { border: isLoginError ? '1px solid red' : '1px solid lightgrey' },\r\n '& label.Mui-focused': { color: isLoginError ? 'red' : 'lightgrey' },\r\n '& .MuiFilledInput-input': { color: 'white' },\r\n '& .MuiInputLabel-root': { color: (isLoginError ? 'red' : '#7C8A97'), border: 'none' },\r\n }}\r\n\r\n />\r\n <StyledSignupTextField variant='filled' label='Email ' onChange={(e) => (setEmail(e.target.value), setisLoginError(false), setLoginError(''))}\r\n InputProps={{\r\n disableUnderline: true\r\n }}\r\n sx={{\r\n border: isLoginError ? '1px solid red' : '1px solid #808080',\r\n '&:hover': { borderColor: isLoginError ? 'red' : 'lightgrey' },\r\n '& .Mui-focused': { border: isLoginError ? '1px solid red' : '1px solid lightgrey' },\r\n '& label.Mui-focused': { color: isLoginError ? 'red' : 'lightgrey' },\r\n '& .MuiFilledInput-input': { color: 'white' },\r\n '& .MuiInputLabel-root': { color: (isLoginError ? 'red' : '#7C8A97'), border: 'none' },\r\n }}\r\n\r\n />\r\n <StyledSignupTextField variant='filled' label='Password '\r\n type={showPassword ? 'text' : 'password'}\r\n onChange={(e) => (setPassword(e.target.value), setisLoginError(false), setLoginError(''))}\r\n InputProps={{\r\n disableUnderline: true,\r\n endAdornment: (\r\n < InputAdornment position=\"end\" >\r\n <IconButton\r\n aria-label=\"toggle password visibility\"\r\n onClick={handleClickShowPassword}\r\n onMouseDown={handleMouseDownPassword}\r\n edge=\"end\"\r\n >\r\n {showPassword ? <VisibilityOff sx={{ color: 'white' }} /> : <Visibility sx={{ color: 'white' }} />}\r\n </IconButton>\r\n </InputAdornment>\r\n )\r\n }}\r\n sx={{\r\n border: isLoginError ? '1px solid red' : '1px solid #808080',\r\n '&:hover': { borderColor: isLoginError ? 'red' : 'lightgrey' },\r\n '& .Mui-focused': { border: isLoginError ? '1px solid red' : '1px solid lightgrey' },\r\n '& label.Mui-focused': { color: isLoginError ? 'red' : 'lightgrey' },\r\n '& .MuiFilledInput-input': { color: 'white' },\r\n '& .MuiInputLabel-root': { color: (isLoginError ? 'red' : '#7C8A97'), border: 'none' },\r\n }}\r\n />\r\n <StyledSubmitButton variant='contained' loading={isSubmitLoading} loadingPosition=\"start\" sx={{\r\n ':disabled': {\r\n backgroundColor: '#868686'\r\n }\r\n }} onClick={() => handleSubmitClicked()}>Submit</StyledSubmitButton>\r\n <Typography color='white'>\r\n Already have an Account?\r\n <a href=\"/login\"> Log in</a>\r\n </Typography>\r\n <StyledErrorAlert severity=\"error\" variant='filled' hidden={!isLoginError}>{loginError}</StyledErrorAlert>\r\n\r\n </StyledSignupContainer>\r\n :\r\n <>\r\n <ButtonContainer>\r\n <div style={{ display: 'flex', justifyContent: 'center', flexDirection: 'column' }}>\r\n <GoogleLoginButton text='Sign up with Google' style={{\r\n width: isMobile ? '300px' : '400px',\r\n borderRadius: '20px',\r\n fontFamily: '\"Google Sans\", arial, sans-serif',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n }} onClick={() => handleSignUpClick('google')} />\r\n {\r\n Capacitor.getPlatform() !== 'android' &&\r\n <AppleLoginButton text='Sign up with Apple' style={{\r\n width: isMobile ? '300px' : '400px',\r\n borderRadius: '20px',\r\n fontFamily: '\"Google Sans\", arial, sans-serif',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n marginTop: '10px'\r\n }} onClick={() => handleSignUpClick('apple')} />\r\n }\r\n <div style={{ display: 'flex', flexDirection: 'row' }}>\r\n <StyledDivider />\r\n <Typography color='white' sx={{ margin: '10px', flex: '0.1' }}>or</Typography>\r\n <StyledDivider />\r\n </div>\r\n </div>\r\n <StyledCreateAccountButton variant='contained' onClick={() => handleCreateAccountClick()}>Create an account</StyledCreateAccountButton>\r\n\r\n </ButtonContainer>\r\n <StyledDivContainer>\r\n <Typography color='white'>\r\n Already have an Account?\r\n <a href=\"/login\"> Log in</a>\r\n </Typography>\r\n </StyledDivContainer>\r\n </>\r\n }\r\n </RightSection>\r\n </LandingPageContainer>\r\n </>\r\n }\r\n </>\r\n )\r\n}\r\n\r\nexport default Signup","\r\nimport { isMobile } from \"react-device-detect\"\r\nimport styled from \"@emotion/styled\"\r\nimport { Typography } from '@mui/material'\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\nconst LandingPageContainer = styled.div`\r\n /* background-color: #192633; */\r\n display: flex;\r\n flex-direction: ${isMobile ? 'column' : 'row'};\r\n width: 100vw;\r\n height: 100vh;\r\n`\r\n\r\nconst RightSection = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n flex: 1.5;\r\n background-color: #141d27;\r\n`\r\n\r\nconst LeftSection = styled.div`\r\n display: ${isMobile ? 'none' : 'flex'};\r\n justify-content: center;\r\n align-items: center;\r\n flex: 0.5;\r\n background-color: #192633; \r\n`\r\n\r\n\r\nconst StyledLogoContainer = styled.div`\r\n display: flex; \r\n flex-direction: row; \r\n align-items: center; \r\n justify-content: center; \r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? '15%' : isMobile ? '1%' : '7%'}; \r\n`\r\n\r\nconst StyledMobileLogoContainer = styled.div`\r\n display: ${isMobile ? 'none' : 'none'}; \r\n position: absolute;\r\n top: 0;\r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? (Capacitor.getPlatform() === 'ios' ? 'env(safe-area-inset-top)' : '5%') : '1%'};\r\n`\r\n\r\nconst BaseTypography = styled(Typography)`\r\n margin-top: 10px;\r\n\r\n\r\n`\r\n\r\n\r\nconst PrivacyPolicyPage = () => {\r\n return (\r\n <>\r\n <LandingPageContainer>\r\n <LeftSection>\r\n <StyledLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Swole</Typography>\r\n </StyledLogoContainer>\r\n </LeftSection>\r\n <RightSection>\r\n <StyledMobileLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Swole</Typography>\r\n </StyledMobileLogoContainer>\r\n <Typography color='lightgrey' variant={isMobile ? 'h3' : 'h1'}>Privacy Policy</Typography>\r\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '40px', marginBottom: '30px' }}>\r\n <Typography variant='h5' color='lightgrey' fontSize={(isMobile && window.innerWidth < 380) ? '18px' : isMobile ? '20px ' : '30px'}>\r\n <Typography variant=\"h4\" sx={{ marginLeft: isMobile ? '20px' : '' }}>1. Contact Information</Typography>\r\n <BaseTypography variant=\"body1\" sx={{ marginLeft: isMobile ? '40px' : '' }}>\r\n letsgetswolehelp@gmail.com\r\n </BaseTypography>\r\n <BaseTypography variant=\"h4\" sx={{ marginLeft: isMobile ? '20px' : '' }}>2. Information We Collect</BaseTypography>\r\n <BaseTypography variant=\"body1\" sx={{ marginLeft: isMobile ? '40px' : '' }}>\r\n We collect the following personal data:\r\n <BaseTypography variant=\"body1\" sx={{ marginLeft: '20px' }}>\r\n - We collect your email address for the purpose of creating and managing your user account on our website<br />\r\n </BaseTypography>\r\n <Typography variant=\"body1\" sx={{ marginLeft: '20px', marginBottom: '10px' }}>\r\n - Your name, as provided by you or obtained through Third Party Authentication during account creation<br />\r\n </Typography>\r\n For any questions or concerns regarding this Privacy Policy, please contact us via the information provided above.\r\n </BaseTypography>\r\n </Typography>\r\n </div>\r\n </RightSection>\r\n </LandingPageContainer>\r\n </>\r\n )\r\n}\r\n\r\nexport default PrivacyPolicyPage","\r\nimport { isMobile } from \"react-device-detect\"\r\nimport styled from \"@emotion/styled\"\r\nimport { Typography } from '@mui/material'\r\nimport { Capacitor } from '@capacitor/core';\r\n\r\nconst LandingPageContainer = styled.div`\r\n /* background-color: #192633; */\r\n display: flex;\r\n flex-direction: ${isMobile ? 'column' : 'row'};\r\n width: 100vw;\r\n height: 100vh;\r\n`\r\n\r\nconst RightSection = styled.div`\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n flex: 1.5;\r\n background-color: #141d27;\r\n`\r\n\r\nconst LeftSection = styled.div`\r\n display: ${isMobile ? 'none' : 'flex'};\r\n justify-content: center;\r\n align-items: center;\r\n flex: 0.5;\r\n background-color: #192633; \r\n`\r\n\r\n\r\nconst StyledLogoContainer = styled.div`\r\n display: flex; \r\n flex-direction: row; \r\n align-items: center; \r\n justify-content: center; \r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? '15%' : isMobile ? '1%' : '7%'}; \r\n`\r\n\r\nconst StyledMobileLogoContainer = styled.div`\r\n display: ${isMobile ? 'none' : 'none'}; \r\n position: absolute;\r\n top: 0;\r\n height: 200px; \r\n margin-top: ${isMobile && window.innerHeight > 700 ? (Capacitor.getPlatform() === 'ios' ? 'env(safe-area-inset-top)' : '5%') : '1%'};\r\n`\r\n\r\nconst BaseTypography = styled(Typography)`\r\n margin-top: 10px;\r\n\r\n\r\n`\r\n\r\n\r\nconst AthanReminderPrivacyPolicyPage = () => {\r\n return (\r\n <>\r\n <LandingPageContainer>\r\n <LeftSection>\r\n <StyledLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Athan Reminder</Typography>\r\n </StyledLogoContainer>\r\n </LeftSection>\r\n <RightSection>\r\n <StyledMobileLogoContainer>\r\n <Typography variant='h2' color='white' fontSize={'120px'}>Athan Reminder</Typography>\r\n </StyledMobileLogoContainer>\r\n <Typography color='lightgrey' variant={isMobile ? 'h3' : 'h1'}>Privacy Policy</Typography>\r\n <div style={{ display: 'flex', justifyContent: 'center', marginTop: '40px', marginBottom: '30px' }}>\r\n <Typography variant='h5' color='lightgrey' fontSize={(isMobile && window.innerWidth < 380) ? '18px' : isMobile ? '20px ' : '30px'}>\r\n <Typography variant=\"h4\" sx={{ marginLeft: isMobile ? '20px' : '' }}>1. Contact Information</Typography>\r\n <BaseTypography variant=\"body1\" sx={{ marginLeft: isMobile ? '40px' : '' }}>\r\n athanreminderhelp@gmail.com\r\n </BaseTypography>\r\n <BaseTypography variant=\"h4\" sx={{ marginLeft: isMobile ? '20px' : '' }}>2. Information We Collect</BaseTypography>\r\n <BaseTypography variant=\"body1\" sx={{ marginLeft: isMobile ? '40px' : '' }}>\r\n We collect the following data:\r\n <BaseTypography variant=\"body1\" sx={{ marginLeft: '20px' }}>\r\n - None of your Personal Information is stored on our end <br />\r\n </BaseTypography>\r\n <Typography variant=\"body1\" sx={{ marginLeft: '20px', marginBottom: '10px' }}>\r\n - Your Location is stored only on your device<br />\r\n </Typography>\r\n For any questions or concerns regarding this Privacy Policy, please contact us via the information provided above.\r\n </BaseTypography>\r\n </Typography>\r\n </div>\r\n </RightSection>\r\n </LandingPageContainer>\r\n </>\r\n )\r\n}\r\n\r\nexport default AthanReminderPrivacyPolicyPage","import { Routes, Route } from \"react-router-dom\"\r\n// import CalenderPage from './pages/CalenderPage';\r\nimport HomePage from './pages/HomePage';\r\nimport DailyRoutinePage from './pages/DailyRoutinePage';\r\nimport WorkoutRoutinePage from './pages/WorkoutRoutinePage';\r\nimport LoggedWorkoutPage from './pages/LoggedWorkoutPage';\r\nimport ProgressPage from './pages/ProgressPage';\r\nimport Login from './pages/auth/Login';\r\nimport RequireAuth from './components/auth/RequireAuth';\r\nimport RedirectPage from './pages/auth/RedirectPage';\r\nimport Signup from './pages/auth/Signup';\r\nimport PrivacyPolicyPage from './pages/PrivacyPolicyPage';\r\nimport AthanReminderPrivacyPolicyPage from './pages/AthanReminderPolicyPage';\r\n\r\nconst App = () => {\r\n return (\r\n <>\r\n <Routes>\r\n {/* <Route path=\"/\" element={<AuthenticationGuard component={HomePage} />} />\r\n <Route path=\"/routine\" element={<AuthenticationGuard component={WorkoutRoutinePage} />} />\r\n <Route path=\"/routine/:id\" element={<AuthenticationGuard component={DailyRoutinePage} />} />\r\n <Route path=\"/loggedroutine\" element={<AuthenticationGuard component={LoggedWorkoutPage} />} />\r\n <Route path=\"/progress\" element={<AuthenticationGuard component={ProgressPage} />} />\r\n <Route path=\"/redirect\" element={<AuthenticationGuard component={RedirectPage} />} />\r\n <Route path=\"/login\" element={<Login />} />\r\n <Route path=\"*\" element={<div>Error 404 Page not Found</div>} /> */}\r\n <Route element={<RequireAuth />}>\r\n <Route path=\"/\" element={<HomePage />} />\r\n <Route path=\"/routine\" element={<WorkoutRoutinePage />} />\r\n <Route path=\"/routine/:id\" element={<DailyRoutinePage />} />\r\n <Route path=\"/loggedroutine\" element={<LoggedWorkoutPage />} />\r\n <Route path=\"/progress\" element={<ProgressPage />} />\r\n <Route path=\"/redirect\" element={<RedirectPage />} />\r\n </Route>\r\n <Route path=\"/login\" element={<Login />} />\r\n <Route path=\"/signup\" element={<Signup />} />\r\n <Route path=\"/privacy\" element={<PrivacyPolicyPage />} />\r\n <Route path=\"/athanreminder/privacy\" element={<AthanReminderPrivacyPolicyPage />} />\r\n <Route path=\"*\" element={<div>Error 404 Page not Found</div>} />\r\n </Routes>\r\n </>\r\n );\r\n}\r\n\r\nexport default App;","import React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport { QueryClientProvider, QueryClient } from 'react-query';\r\nimport { ReactQueryDevtools } from 'react-query/devtools'\r\n\r\n// const domain = process.env.REACT_APP_AUTH0_DOMAIN as string\r\n// const clientId = process.env.REACT_APP_AUTH0_CLIENT_ID as string\r\n\r\n// if (domain === undefined || clientId === undefined) {\r\n// throw new Error('Please define REACT_APP_AUTH0_DOMAIN and REACT_APP_AUTH0_CLIENT_ID in your .env file')\r\n// }\r\n\r\nconst queryClient = new QueryClient()\r\n\r\nconst root = ReactDOM.createRoot(document.getElementById('root') as HTMLElement);\r\nroot.render(\r\n\r\n <BrowserRouter>\r\n <QueryClientProvider client={queryClient}>\r\n <App />\r\n </QueryClientProvider>\r\n </BrowserRouter>\r\n\r\n);\r\n\r\n"],"names":["Persistence","ProviderId","ExceptionCode","CapacitorPlatforms","win","defaultPlatformMap","Map","set","name","capPlatforms","currentPlatform","platforms","addPlatform","platform","setPlatform","has","get","createCapacitorPlatforms","initPlatforms","globalThis","self","window","global","CapacitorException","message","code","data","Error","initCapacitorGlobal","Capacitor","_a","_b","_c","_d","_e","capCustomPlatform","CapacitorCustomPlatform","cap","Plugins","getPlatform","androidBridge","webkit","messageHandlers","bridge","getPlatformId","isNativePlatform","isPluginAvailable","pluginName","plugin","registeredPlugins","getPluginHeader","PluginHeaders","find","h","registerPlugin","jsImplementations","registeredPlugin","console","warn","proxy","jsImplementation","pluginHeader","loadPluginImplementation","createPluginMethod","impl","prop","bind","Unimplemented","methodHeader","methods","m","rtype","options","nativePromise","toString","callback","nativeCallback","createPluginMethodWrapper","remove","wrapper","args","p","then","fn","Object","defineProperty","value","writable","configurable","addListener","removeListener","addListenerNative","eventName","call","callbackId","Promise","resolve","Proxy","_","Set","keys","convertFileSrc","filePath","handleError","err","error","pluginMethodNoop","_target","reject","Exception","DEBUG","isLoggingEnabled","isNative","createCapacitor","WebPlugin","config","this","listeners","windowListeners","listenerFunc","push","windowListener","registered","addWindowListener","listener","removeWindowListener","forEach","length","windowEventName","pluginEventName","handler","event","notifyListeners","msg","Unavailable","index","indexOf","splice","handle","addEventListener","removeEventListener","encode","str","encodeURIComponent","replace","decodeURIComponent","escape","decode","CapacitorCookiesPluginWeb","cookies","document","cookie","cookieMap","split","key","trim","encodedKey","encodedValue","expires","path","domain","url","Date","toUTCString","clearCookies","readBlobAsBase64","web","blob","reader","FileReader","onload","base64String","result","onerror","readAsDataURL","normalizeHttpHeaders","headers","originalKeys","loweredKeys","map","k","toLocaleLowerCase","normalized","reduce","acc","buildUrlParams","params","shouldEncode","output","entries","accumulator","entry","item","Array","isArray","slice","substr","buildRequestInit","extra","assign","method","type","body","includes","URLSearchParams","form","FormData","append","Headers","delete","JSON","stringify","CapacitorHttpPluginWeb","requestInit","webFetchExtra","urlParams","shouldEncodeUrlParams","fetch","response","contentType","ok","responseType","json","text","status","request","StyleSheet","_this","_insertTag","tag","before","tags","insertionPoint","nextSibling","prepend","container","firstChild","insertBefore","isSpeedy","undefined","speedy","ctr","nonce","_proto","prototype","hydrate","nodes","insert","rule","createElement","setAttribute","appendChild","createTextNode","createStyleElement","sheet","i","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","e","process","flush","parentNode","removeChild","abs","Math","from","String","fromCharCode","pattern","replacement","indexof","search","charat","charCodeAt","begin","end","strlen","sizeof","array","line","column","position","character","characters","node","root","parent","props","children","return","copy","prev","next","peek","caret","token","alloc","dealloc","delimit","delimiter","whitespace","escaping","count","commenter","identifier","MS","MOZ","WEBKIT","COMMENT","RULESET","DECLARATION","KEYFRAMES","serialize","element","join","compile","parse","rules","rulesets","pseudo","points","declarations","offset","atrule","property","previous","variable","scanning","ampersand","reference","comment","declaration","ruleset","post","size","j","x","y","z","identifierWithPointTracking","getRules","parsed","toRules","fixedElements","WeakMap","compat","isImplicitRule","parentRules","removeLabel","prefix","hash","defaultStylisPlugins","combine","exec","match","createCache","ssrStyles","querySelectorAll","getAttribute","head","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","collection","middleware","concat","selector","serialized","shouldCache","styles","cache","memoize","create","arg","EmotionCacheContext","createContext","HTMLElement","Provider","withEmotionCache","func","forwardRef","ref","useContext","ThemeContext","len","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","fontWeight","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","WebkitLineClamp","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","toLowerCase","processStyleValue","p1","p2","cursor","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","obj","string","_key","interpolated","_i","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","strings","raw","lastIndex","identifierName","hashString","reactPropsRegex","test","testOmitPropsOnStringTag","isPropValid","testOmitPropsOnComponent","getDefaultShouldForwardProp","composeShouldForwardProps","isReal","shouldForwardProp","optionsShouldForwardProp","__emotion_forwardProp","propName","Insertion","_ref","isStringTag","registerStyles","useInsertionEffectAlwaysWithSyncFallback","insertStyles","createStyled","targetClassName","__emotion_real","baseTag","__emotion_base","label","target","defaultShouldForwardProp","shouldUseAs","arguments","apply","Styled","FinalTag","as","className","classInterpolations","theme","getRegisteredStyles","finalShouldForwardProp","newProps","Fragment","displayName","defaultProps","withComponent","nextTag","nextOptions","_extends","newStyled","tagName","useInsertionEffect","React","useInsertionEffectWithLayoutFallback","useLayoutEffect","registeredStyles","classNames","rawClassName","current","stringToByteArray","out","c","base64","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","webSafe","init_","byteToCharMap","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","encodeString","btoa","decodeString","bytes","pos","c1","c2","u","c3","byteArrayToString","decodeStringToByteArray","charToByteMap","charAt","byte4","DecodeBase64StringError","base64urlEncodeWithoutPadding","utf8Bytes","base64Encode","base64Decode","getDefaultsFromGlobal","getGlobal","__FIREBASE_DEFAULTS__","getDefaults","defaultsJsonString","getDefaultsFromEnvVariable","decoded","getDefaultsFromCookie","info","getDefaultEmulatorHost","productName","getDefaultAppConfig","getExperimentalSetting","Deferred","promise","catch","getUA","navigator","isMobileCordova","isBrowserExtension","runtime","chrome","browser","id","isReactNative","isIE","ua","isIndexedDBAvailable","indexedDB","validateIndexedDBOpenable","preExist","DB_CHECK_NAME","open","onsuccess","close","deleteDatabase","onupgradeneeded","areCookiesEnabled","cookieEnabled","FirebaseError","customData","setPrototypeOf","captureStackTrace","ErrorFactory","service","serviceName","errors","fullCode","template","replaceTemplate","fullMessage","PATTERN","isEmpty","hasOwnProperty","deepEqual","a","b","aKeys","bKeys","aProp","bProp","isObject","thing","querystring","querystringParams","arrayVal","querystringDecode","extractQuerystring","queryStart","fragmentStart","substring","createSubscribe","executor","onNoObservers","ObserverProxy","subscribe","observers","unsubscribes","observerCount","task","finalized","forEachObserver","observer","complete","nextOrObserver","implementsAnyMethods","noop","unsub","unsubscribeOne","finalError","sendOne","MAX_VALUE_MILLIS","calculateBackoffMillis","backoffCount","intervalMillis","backoffFactor","currBaseValue","pow","randomWait","round","random","min","getModularInstance","_delegate","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","enumerable","_utils","createSvgIcon","Symbol","for","f","g","l","n","q","t","v","r","$$typeof","module","createMixins","breakpoints","mixins","toolbar","minHeight","up","black","white","A100","A200","A400","A700","_excluded","light","primary","secondary","disabled","divider","background","paper","common","action","active","hover","hoverOpacity","selected","selectedOpacity","disabledBackground","disabledOpacity","focus","focusOpacity","activatedOpacity","dark","icon","addLightOrDark","intent","direction","shade","tonalOffset","tonalOffsetLight","tonalOffsetDark","lighten","main","darken","createPalette","palette","mode","contrastThreshold","other","_objectWithoutPropertiesLoose","blue","getDefaultPrimary","purple","getDefaultSecondary","red","getDefaultError","lightBlue","getDefaultInfo","success","green","getDefaultSuccess","warning","orange","getDefaultWarning","getContrastText","getContrastRatio","augmentColor","color","mainShade","lightShade","darkShade","_formatMuiErrorMessage","contrastText","modes","deepmerge","grey","caseAllCaps","textTransform","defaultFontFamily","createTypography","typography","fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem2","pxToRem","coef","buildVariant","letterSpacing","casing","variants","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","inherit","clone","createShadow","easing","easeInOut","easeOut","easeIn","sharp","duration","shortest","shorter","short","standard","complex","enteringScreen","leavingScreen","formatMs","milliseconds","getAutoHeightDuration","height","constant","createTransitions","inputTransitions","mergedEasing","mergedDuration","durationOption","easingOption","delay","animatedProp","mobileStepper","fab","speedDial","appBar","drawer","modal","snackbar","tooltip","createTheme","mixinsInput","paletteInput","transitions","transitionsInput","typographyInput","vars","systemTheme","systemCreateTheme","muiTheme","shadows","argument","unstable_sxConfig","defaultSxConfig","unstable_sx","styleFunctionSx","sx","defaultTheme","rootShouldForwardProp","slotShouldForwardProp","styled","useThemeProps","systemUseThemeProps","capitalize","getSvgIconUtilityClass","slot","generateUtilityClass","generateUtilityClasses","SvgIconRoot","overridesResolver","ownerState","_theme$transitions","_theme$transitions$cr","_theme$transitions2","_theme$transitions2$d","_theme$typography","_theme$typography$pxT","_theme$typography2","_theme$typography2$px","_theme$typography3","_theme$typography3$px","_palette$ownerState$c","_palette","_palette$ownerState$c2","_palette2","_palette2$action","_palette3","_palette3$action","userSelect","width","display","fill","transition","small","medium","large","SvgIcon","inProps","component","htmlColor","inheritViewBox","titleAccess","viewBox","instanceFontSize","more","classes","slots","composeClasses","useUtilityClasses","_jsxs","clsx","focusable","role","_jsx","muiName","Component","debounce","validator","reason","componentNameInError","componentName","location","propFullName","unstable_ClassNameGenerator","configure","generator","ClassNameGenerator","muiNames","ownerDocument","ownerWindow","useControlled","useEnhancedEffect","useEventCallback","useForkRef","useId","hadFocusVisibleRecentlyTimeout","hadKeyboardEvent","hadFocusVisibleRecently","inputTypesWhitelist","tel","email","password","number","date","month","week","time","datetime","handleKeyDown","metaKey","altKey","ctrlKey","handlePointerDown","handleVisibilityChange","visibilityState","isFocusVisible","matches","readOnly","isContentEditable","focusTriggersKeyboardModality","doc","isFocusVisibleRef","onFocus","onBlur","clearTimeout","setTimeout","emStyled","internal_processStyles","processor","values","xs","sm","md","lg","xl","defaultBreakpoints","handleBreakpoints","propValue","styleFromPropValue","themeBreakpoints","breakpoint","cssKey","createEmptyBreakpointObject","_breakpointsInput$key","breakpointsInput","breakpointsInOrder","removeUnusedBreakpoints","breakpointKeys","style","breakpointOutput","mergeBreakpointsInOrder","emptyBreakpoints","mergedOutput","resolveBreakpointValues","breakpointValues","base","breakpointsKeys","computeBreakpointsBase","clamp","max","decomposeColor","re","RegExp","colors","parseInt","hexToRgb","marker","colorSpace","shift","parseFloat","recomposeColor","getLuminance","rgb","s","hslToRgb","val","Number","toFixed","foreground","lumA","lumB","alpha","coefficient","propsToClassKey","variant","classKey","sort","getStyleOverrides","components","styleOverrides","getVariantStyles","variantsStyles","definition","variantsResolver","_theme$components","_theme$components$nam","themeVariants","themeVariant","isMatch","systemDefaultTheme","resolveTheme","themeId","systemSx","__mui_systemSx","inputOptions","processStyles","filter","componentSlot","inputSkipVariantsResolver","skipVariantsResolver","inputSkipSx","skipSx","shouldForwardPropOption","defaultStyledResolver","styledEngineStyled","muiStyledResolver","styleArg","expressions","expressionsWithDefaultTheme","stylesArg","transformedStyleArg","resolvedStyleOverrides","slotKey","slotStyle","numOfCustomFnsApplied","placeholders","withConfig","createBreakpoints","unit","step","sortedValues","breakpointsAsArray","breakpoint1","breakpoint2","sortBreakpointsValues","down","between","start","endIndex","only","not","keyIndex","borderRadius","createSpacing","spacingInput","mui","transform","createUnarySpacing","spacing","argsInput","shape","shapeInput","properties","directions","aliases","marginX","marginY","paddingX","paddingY","getCssProperties","dir","marginKeys","paddingKeys","spacingKeys","createUnaryUnit","themeKey","defaultValue","_getPath","themeSpacing","getPath","getValue","transformer","transformed","resolveCssProperty","cssProperties","cssProperty","getStyleFromPropValue","merge","margin","padding","propTypes","filterProps","checkVars","getStyleValue","themeMapping","propValueFinal","userValue","handlers","borderTransform","border","borderTop","borderRight","borderBottom","borderLeft","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","compose","gap","columnGap","rowGap","paletteTransform","sizingTransform","maxWidth","_props$theme","_props$theme$breakpoi","_props$theme$breakpoi2","breakpointsValues","minWidth","maxHeight","bgcolor","backgroundColor","pt","pr","pb","pl","px","py","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd","mt","mr","mb","ml","mx","my","marginTop","marginRight","marginBottom","marginLeft","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd","displayPrint","overflow","textOverflow","visibility","whiteSpace","flexBasis","flexDirection","flexWrap","justifyContent","alignItems","alignContent","alignSelf","justifyItems","justifySelf","gridAutoFlow","gridAutoColumns","gridAutoRows","gridTemplateColumns","gridTemplateRows","gridTemplateAreas","gridArea","top","right","bottom","left","boxShadow","boxSizing","fontStyle","textAlign","getThemeValue","_theme$unstable_sxCon","traverse","sxInput","sxObject","css","styleKey","maybeFn","objects","allKeys","object","union","every","objectsHaveSameKeys","unstable_createStyleFunctionSx","useThemeWithoutDefault","useTheme","resolveProps","getThemeProps","isObjectEmpty","contextTheme","defaultGenerator","generate","reset","createClassNameGenerator","toUpperCase","getUtilityClass","utilityClass","createChainedFunction","funcs","timeout","wait","debounced","later","clear","isPlainObject","constructor","deepClone","source","formatMuiErrorMessage","globalStateClassesMapping","checked","completed","expanded","focused","focusVisible","required","globalStatePrefix","globalStateClass","defaultView","defaultSlotProps","slotProps","slotPropName","setRef","controlled","defaultProp","isControlled","state","valueState","setValue","newValue","refs","instance","globalId","maybeReactUseId","idOverride","reactId","defaultId","setDefaultId","useGlobalId","__extends","extendStatics","__proto__","TypeError","__","__assign","DX_REMOVE_EVENT","ComponentBase","events","react_dom_1","templates_manager_1","templates_renderer_1","templates_store_1","options_manager_1","widget_config_1","tree_1","utils_1","_super","isPortalComponent","_templateProps","_childNodes","useRequestAnimationFrameFlag","useDeferUpdateForTemplates","_setTemplatesRendererRef","_createWidget","_templatesStore","TemplatesStore","_templatesRendererRef","scheduleUpdate","_templatesManager","_optionsManager","OptionsManager","displayContentsStyle","componentDidMount","_element","childNodes","_updateCssClasses","_setInlineStyles","componentDidUpdate","prevProps","_getConfig","update","scheduleGuards","unscheduleGuards","componentWillUnmount","_instance","child","triggerHandler","dispose","_WidgetClass","templatesRenderAsynchronously","getInitialOptions","option","setInstance","subscribableOptions","independentEvents","on","onOptionChanged","buildConfigTree","templates","initialValuesProps","_defaults","predefinedValuesProps","expectedChildren","_expectedChildren","_getElementProps","elementProps","elementPropNames","prevClassName","getClassName","newClassName","classList","add","renderChildren","renderContent","portalContainer","forceUpdate","renderPortal","createPortal","render","TemplatesRenderer","templatesStore","PureComponent","component_base_1","extension_component_1","_extensionCreators","_registerExtension","_createExtensions","clearExtensions","Children","isPrototypeOf","ExtensionComponent","cloneElement","onMounted","creator","getOption","useLegacyTemplateEngine","optionName","getChanges","compare","changesAccum","addRemovedValues","fullName","configCollections","configs","currentCollection","prevCollection","updatedCollection_1","buildNode","mergeNameParts","compareCollections","currentTemplatesOptions","currentTemplates","prevTemplatesOptions","prevTemplates","buildTemplates","currentTemplate","prevTemplate","content","compareTemplates","removedOptions","currentOptions","prevOptions","appendRemovedValues","ElementType","getElementInfo","template_1","parentExpectedChildren","reactElement","Unknown","Template","elementDescriptor","OptionName","name_1","isCollectionItem","IsCollectionItem","expectation","Option","descriptor","isCollection","TemplateProps","DefaultsProps","PredefinedProps","ExpectedChildren","getNamedTemplate","getAnonymousTemplate","templateMeta","hasTranscludedContent","tmplOption","isAnonymous","keyFn","processChildren","element_1","templates_1","parentElement","parentFullName","collectionItem","createConfigNode","configNode","separatedValues","separateProps","childrenData","predefinedOptions","initialOptions","defaults","widgetDescriptor","findValueInObject","findValue","buildConfig","ValueType","optionsAccum","templatesAccum","templateName","ignoreInitialValues","Simple","Complex","optionInfo","parseOptionName","childCollection","shallowEquals","parts","userAgent","msie","trident","first","second","createDxTemplate","helpers_1","template_wrapper_1","createContentProvider","renderedTemplates","DoubleKeyMap","templateId","key1","model","key2","prevTemplateId","onRemoved","setDeferredRemove","generateID","nodeType","Node","ELEMENT_NODE","one","contentProvider","TemplateWrapper","onDidMount","off","onRendered","capitalizeFirstLetter","_map","innerMap","NestedOption","stateChildren","comparer_1","optionsManagers","guardTimeoutHandler","optionManager","execGuards","templatesManager","guards","isUpdating","wrapOptionValue","currentConfig","rootNode","templatesCount","integrationOptions","changedOptions","optionChangedHandler","changes","beginUpdate","resetOption","currentPropValue","endUpdate","valueDescriptor","callOptionChangeHandler","addGuard","valuesAreEqual","valuesAreEqualObjects","skipOptionsRollBack","isOptionSubscribable","isIndependentEvent","optionValue","startsWith","changeEvent","TableNodeNames","ReactDOM","removalListenerStyle","_removalListenerRef","createRef","removalListenerRequired","_onDxRemove","getPreviousSiblingNode","_subscribeOnRemove","hiddenNode","hiddenElement","_listenerElement","previousSibling","_subscribeOnElementRemoval","setState","removalListener","nodeName","findProps","PropTypes","requiredPropsCheck","isRequired","config_1","dx_template_1","normalizeProps","dxkey","contentCreators","contentGetter","TemplatesManager","_templates","_templatesContent","contentCreator","frame_1","common_1","updateScheduled","mounted","shouldRepeatForceUpdate","isUpdateFuncLaunched","useDeferUpdate","deferUpdate","requestAnimationFrame","renderWrappers","onTemplateAdded","_onTemplateAdded","templateFunc","isDeferredRemove","removeDefferedTemplate","getOwnPropertyNames","classNamePropName","refPropName","defaultsProps","templateProps","knownTemplates","defaultOptionName","View","Scrolling","Resource","Editing","AppointmentDragging","Scheduler","scheduler_1","component_1","nested_option_1","defaultCurrentDate","defaultCurrentView","appointmentDragging","editing","resource","scrolling","view","accessKey","adaptivityEnabled","bool","allDayExpr","allDayPanelMode","oneOfType","oneOf","cellDuration","crossScrollingEnabled","currentView","customizeDateNavigatorText","dateSerializationFormat","descriptionExpr","elementAttr","endDateExpr","endDateTimeZoneExpr","endDayHour","firstDayOfWeek","focusStateEnabled","groupByDate","groups","hint","indicatorUpdateInterval","maxAppointmentsPerCell","noDataText","onAppointmentAdded","onAppointmentAdding","onAppointmentClick","onAppointmentContextMenu","onAppointmentDblClick","onAppointmentDeleted","onAppointmentDeleting","onAppointmentFormOpening","onAppointmentRendered","onAppointmentTooltipShowing","onAppointmentUpdated","onAppointmentUpdating","onCellClick","onCellContextMenu","onContentReady","onDisposing","onInitialized","recurrenceEditMode","recurrenceExceptionExpr","recurrenceRuleExpr","remoteFiltering","resources","rtlEnabled","selectedCellData","shadeUntilCurrentTime","showAllDayPanel","showCurrentTimeIndicator","startDateExpr","startDateTimeZoneExpr","startDayHour","tabIndex","textExpr","timeZone","useDropDownViewSwitcher","views","visible","hasWindow","getWindow","cancel","requestID","setAnimationFrameMethods","callOnce","nativeRequest","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","nativeCancel","cancelAnimationFrame","webkitCancelAnimationFrame","mozCancelAnimationFrame","oCancelAnimationFrame","msCancelAnimationFrame","wrapOverridden","baseProto","methodName","prevCallBase","callBase","redefine","members","overridden","memberName","member","include","classObj","hasClassObjOwnProperty","isES6Class","_includedCtors","_includedPostCtors","ctor","postCtor","subclassOf","parentClass","baseClass","getPrototypeOf","abstract","copyStatic","hasOwn","destination","classImpl","inheritor","isWindow","includedCtors","includedPostCtors","clonePrototype","defaultCurrency","defaultUseCurrencyAccountingStyle","oDataFilterToLower","serverDecimalSeparator","decimalSeparator","thousandsSeparator","forceIsoDateParsing","wrapActionsBeforeExecute","useLegacyStoreResult","useJQuery","editorStylingMode","useLegacyVisibleIndex","floatingActionButtonConfig","closeIcon","at","maxSpeedDialActionCount","shading","optionsParser","optionsString","ex","normalizeToJSONString","exNormalize","deprecatedFields","configMethod","newConfig","deprecatedField","extend","DevExpress","nativeDOMAdapterStrategy","elementMatches","matchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","webkitMatchesSelector","items","context","_document","createElementNS","ns","createAttribute","isNode","isElementNode","isTextNode","isDocument","isDocumentFragment","removeElement","insertElement","newElement","nextSiblingElement","cssText","removeAttribute","setProperty","setText","textContent","setClass","isAdd","setStyle","getDocument","getActiveElement","getRootNode","activeElement","_element$getRootNode","_element$getRootNode2","getBody","createDocumentFragment","getDocumentElement","documentElement","getLocation","getSelection","selection","getReadyState","readyState","getHead","hasDocumentProperty","listen","elementsFromPoint","activeElementHolder","host","getShadowElementsFromPoint","injector","errorUtils","E0001","E0002","E0003","E0004","E0005","E0006","E0007","E0008","E0009","E0010","E0011","E0012","E0013","E0014","E0015","E0017","E0018","E0020","E0021","E0022","E0023","E0024","E0025","E0100","E0101","E0102","E0103","E0110","E0120","E0121","W0000","W0001","W0002","W0003","W0004","W0005","W0006","W0007","W0008","W0009","W0010","W0011","W0012","W0013","W0014","W0015","W0016","W0017","W0018","Guid","Class","_value","_normalize","_generate","valueOf","toJSON","MemorizedCallbacks","memory","callbacks","Callbacks","each","_len","fire","_wrappedHandler","Callback","_options","_list","_queue","_firing","_fired","_firingIndexes","_fireCore","firingIndexes","list","stopOnFalse","pop","unique","empty","fireWith","queue","syncStrategy","fired","executingName","ensureDefined","isDefined","executeAsync","deferred","normalizedContext","abort","timerId","rejectWith","done","isFunction","resolveWith","delayedFuncs","delayedNames","delayedDeferreds","deferExecute","oldExecutingName","currentDelayedCount","when","fail","deferRender","deferRenderer","that","deferUpdater","findBestMatches","targetFilter","mapFn","bestMatches","maxMatchCount","itemSrc","matchCount","paramName","targetValue","mismatch","valueItem","splitPair","_raw$x","_raw$y","normalizeKey","isString","arr","sign","denormalizeKey","char","charCode","pairToObject","preventRound","pair","isFinite","getKeyHash","keyHash","escapeRegExp","applyServerDecimalSeparator","separator","asyncNoop","grep","elements","checkFunction","invert","expectedCheck","compareArrays","array1","array2","depth","some","idx","compareByValue","strict","compareObjects","object1","object2","keys1","keys2","keys2Set","DEFAULT_EQUAL_BY_VALUE_OPTS","maxDepth","value1","value2","comparable1","toComparable","comparable2","equalByValue","compareOptions","getConsoleMethod","logger","log","assert","condition","unwrapVariable","variableWrapper","isWrapped","getPathParts","expr","assignPropValue","unwrapObservables","prepareOptions","unwrap","compileGetter","functionAsIs","functionsAsIs","hasDefaultValue","pathPart","combineGetters","getters","compiledGetters","getter","last","pathItem","ensurePropValueDefined","compileSetter","lastLevelIndex","currentValue","propertyName","levelIndex","propertyValue","readPropValue","isPropertyFunc","deepExtendArraySafe","caseSensitive","getTime","_options$collatorOpti","collatorOptions","sensitivity","REMOVE_DIACRITICAL_MARKS_REGEXP","normalize","locale","deferredConfig","_DeferredObj","_state","_promise","always","callbackResult","isDeferred","isPromise","fromPromise","whenFunc","contexts","resolvedCount","updateState","BaseClass","InjectedClass","initialFields","injectFields","injectionObject","initial","inject","resetInjection","ERROR_URL","baseErrors","ERROR_MESSAGES","makeError","combineMessage","formatMessage","formatDetails","format","details","getErrorUrl","__id","__details","extendFromObject","overrideExistingValues","deep","sourceValue","sourceValueIsArray","orderEach","Clone","isNumberX","isNumeric","isNumberY","assignValueToProperty","assignByReference","extendComplexObject","prevValue","DX_RULE_PREFIX","ownerDocumentStyleSheet","createConstructedStyleSheet","CSSStyleSheet","styleElement","processRules","targetStyleSheet","needApplyAllStyles","_rule$selectorText","_rule$cssRules","_rule$cssRules$","_rule$cssRules$$selec","_rule$name","_rule$style","selectorText","addShadowDomStyles","$element","_el$getRootNode","el","currentShadowDomStyleSheet","adoptedStyleSheets","isPositionInElementRectangle","rect","getBoundingClientRect","elementQueue","shiftIndex","createQueue","childNode","getComputedStyle","pointerEvents","reverse","encodeHtml","encodeRegExp","quadToObject","quad","splitQuad","placeholderReg","SPACE_REGEXP","types","typeOfObject","isBoolean","isExponential","isDate","isNaN","isEmptyObject","proto","isPrimitive","isRenderer","jquery","dxRenderer","isEvent","preventDefault","dependencyInjector","isWritableWrapped","wrap","hasWindowValue","windowObject","hasProperty","defaultScreenFactorFunc","getCurrentScreenFactor","screenFactorCallback","domAdapter","clientWidth","getNavigator","touchPropsToHook","EMPTY_EVENT_NAME","NATIVE_EVENTS_TO_SUBSCRIBE","mouseenter","mouseleave","pointerenter","pointerleave","NATIVE_EVENTS_TO_TRIGGER","focusin","focusout","NO_BUBBLE_EVENTS","forcePassiveFalseEventNames","matchesSafe","skipEvent","elementDataMap","guid","special","specialData","registerEventCallbacks","eventObject","getField","field","callMethod","eventsEngine","getHandler","normalizeOnArguments","iterate","getHandlersController","addHandler","oneTimeHandler","removeHandler","trigger","normalizeTriggerArguments","extraParameters","handlersController","callHandlers","isPropagationStopped","parents","getParents","_element$parentNode","currentTarget","nativeMethodName","localName","callNativeMethod","applyForEach","itemArgs","itemElement","passiveEventHandlersSupported","isSupported","contains","compareDocumentPosition","DOCUMENT_POSITION_CONTAINS","elementData","eventNameParts","namespaces","eventNameIsDefined","handleObjects","nativeHandler","eventData","callHandler","secondaryTargetIsInside","handlerArgs","relatedTarget","stopPropagation","handleObject","wrappedHandler","delegateTarget","namespace","nativeListenerOptions","subscribeName","shouldAddNativeListener","Event","passive","removeByEventName","removedHandler","skip","isSubset","forceStop","handleCallback","isImmediatePropagationStopped","original","src","originalEvent","iterateEventNames","calculateWhich","which","keyCode","initEvent","EventClass","addProperty","hook","eventInstance","_propagationStopped","_immediatePropagationStopped","_defaultPrevented","propagationStopped","stopImmediatePropagation","isDefaultPrevented","defaultPrevented","normalizeEventArguments","_src$view","isTrusted","timeStamp","now","pageX","pageY","touches","changedTouches","touchPropHook","hookTouchProps","beforeSetStrategy","afterSetStrategy","engine","subscribeGlobal","offArgs","strategy","dataMap","strategyChanging","beforeCleanDataFunc","afterCleanDataFunc","removeData","cleanDataRecursive","cleanSelf","childElements","getElementsByTagName","cleanData","setDataStrategy","_upperCaseFirst","_chop","dasherize","camelize","upperFirst","titleize","DIGIT_CHARS","captionize","captionList","isPrevCharNewWord","isNewWord","jsPrefixes","cssPrefixes","Webkit","Moz","O","ms","getStyles","styleProp","originalName","prefixedProp","stylePropPrefix","callBack","cssPrefixesCount","jsPrefix","forEachPrefixes","specific","pxExceptions","normalizeStyleProp","styleString","resetStyle","styleList","removeProperty","stylePart","SPECIAL_HEIGHT_VALUES","getSizeByStyles","elementStyles","getElementBoxParams","beforeName","afterName","getElementComputedStyle","_element$ownerDocumen","getCSSProperty","_element$style","boxIndices","dimensionComponents","getComponentThickness","elem","dimension","suffix","getSize","box","offsetFieldName","currentBox","targetBoxIndex","currentBoxIndex","coeff","scrollThickness","boxPart","paddingAndBorder","floor","parseHeight","innerHeight","offsetHeight","getContainerHeight","getHeightWithOffset","getVerticalOffsets","withMargins","boxParams","getVisibleHeight","boundingClientRect","implementationsMap","elementSizeHelper","_len2","_key2","_len3","_key3","_len4","_key4","_len5","_key5","_len6","_key6","_len7","_key7","_len8","_key8","_len9","_key9","_len11","_key11","sizeProperty","elementSize","getWidth","setWidth","getHeight","setHeight","getOuterWidth","includeMargin","getOuterHeight","setOuterHeight","getInnerWidth","getInnerHeight","partialName","isOuter","isInner","isGetter","sizeAdjustment","isBorderBox","getWindowByElement","getOffset","getClientRects","docElem","pageYOffset","clientTop","pageXOffset","clientLeft","isTagName","tagWrappers","tagsCount","startTags","endTags","thead","td","col","tr","tbody","colgroup","tfoot","th","renderer","parseHTML","html","firstRootTag","tagWrapper","innerHTML","lastChild","isTablePart","initRender","toArray","repeatMethod","setAttributeValue","attrName","show","toggle","hide","toggleClass","attr","removeAttr","addClass","removeClass","hasClass","appendElements","tBodies","setCss","prependTo","appendTo","insertAfter","after","wrapInner","contents","replaceWith","is","detach","cloneNode","elementId","queryId","querySelector","isVisible","_element$host","offsetWidth","siblings","parentChildNodes","eq","select","closest","targets","emptyArray","offsetParent","parentOffset","offsetProp","scrollWindow","scrollTo","directionStrategy","rendererWrapper","registerEvent","noBubble","bindType","delegateType","unshift","removeEvent","eventPropName","$","setup","componentNames","nextAnonymousComponent","getName","componentClass","newName","generatedName","attachInstanceToElement","componentInstance","disposeFn","getInstanceByElement","isMemberInvoke","memberArgs","getInstance","memberValue","publicComponentName","subscribeReady","readyCallbacks","windowExists","resizeCallbacks","prevSize","originalCallbacksAdd","originalCallbacksRemove","formatSize","innerWidth","handleResize","changedDimension","setPrevSize","EventsStrategy","owner","_events","_owner","eventArgs","eventHandler","originalAdd","ready","changeCallback","$originalViewPort","$current","isNewViewportFound","prevViewPort","originalViewPort","KNOWN_UA_TABLE","iPhone","iPhone5","iPhone6","iPhone6plus","iPad","iPadMini","androidPhone","androidTablet","msSurface","desktop","DEFAULT_DEVICE","deviceType","version","phone","tablet","android","ios","generic","grade","mac","UA_PARSERS","isPhone","isTablet","isDesktop","isMac","appleTouchDevice","isIpadOs","maxTouchPoints","screen","isAndroid","isWinPhone","UA_PARSERS_ARRAY","Devices","_window","_realDevice","_getDevice","_currentDevice","_currentOrientation","_eventsStrategy","changed","_recalculateOrientation","deviceOrName","_forced","_getDeviceOrNameFromWindowScope","_getDeviceNameFromSessionStorage","forceDevice","tinyHippos","device","realDevice","isSimulator","Config","_deviceClasses","_getCssClasses","_isSimulator","isRippleEmulator","deviceName","_fromConfig","_fromUA","sessionStorage","SessionStorage","getItem","shortcuts","parser","$window","orientation","fireEvent","windowWidth","_currentWidth","_changeOrientation","devices","viewPortElement","viewPort","attachCssClasses","prevViewport","detachCssClasses","resetActiveElement","_activeElement$blur","blur","closestCommonParent","startTarget","endTarget","$startTarget","$endTarget","$startParents","$endParents","normalizeTemplateElement","clipboardText","clipboard","clipboardData","getData","setData","getRootNodeHost","createTextElementHiddenCopy","includePaddings","fontVariant","float","currentElement","triggerVisibilityChangeEvent","changeHandlers","triggerShownEvent","triggerHidingEvent","triggerResizeEvent","renderedCallbacks","TemplateBase","$result","renovated","transclude","_renderCore","_ensureResultInContainer","$container","resultInContainer","BindableTemplate","fields","watchMethod","fieldsMap","_render","_fields","_fieldsMap","_watchMethod","rawData","fieldsDispose","globalDispose","dataWithRawFields","resolvedData","missedFields","watchHandlers","fieldGetter","watchChanges","EmptyTemplate","fitIntoRange","minValue","maxValue","isMinValueUndefined","isMaxValueUndefined","inRange","getExponent","toExponential","multiplyInExponentialForm","exponentShift","exponentialNotation","mantissa","exponent","getExponentialNotation","adjust","interval","separatedAdjustedValue","precision","positionOfDelimiter","getPrecision","separatedValue","absValue","isExponentValue","integerPart","toPrecision","roundFloatPart","digitsCount","timeIntervals","millisecond","minute","hour","day","quarter","year","toMilliseconds","dateUnitIntervals","convertMillisecondsToDateUnits","dateUnitCount","dateUnitInterval","convertDateUnitToMilliseconds","dateUnit","getDateUnitInterval","tickInterval","maxInterval","tickIntervalToFormatMap","getQuarter","getFirstQuarterMonth","correctDateWithUnitBeginning","dateInterval","withCorrection","firstQuarterMonth","oldDate","setMonth","setDate","setHours","getFirstWeekDate","getMonth","fixTimezoneGap","trimTime","addDateInterval","intervalObject","getDateIntervalByString","years","setFullYear","getFullYear","quarters","months","weeks","getDate","days","hours","setTime","minutes","seconds","addInterval","isNegative","getLastMonthDay","createDateWithFullYear","intervalString","sameMonthAndYear","date1","date2","sameYear","getFirstDecadeInCentury","getFirstYearInDecade","delta","getDay","getUTCTime","UTC","getFirstDateInYear","getLastDateInYear","getDayWeekNumber","normalizeDate","normalizedDate","newDate","diff","getHours","trial","getTimezonesDifference","getTimezoneOffset","dateUtils","dateToMilliseconds","getNextDateUnit","withWeeks","getDateFormatByTickInterval","getDatesDifferences","counter","differences","getMinutes","getSeconds","getMilliseconds","setToDayEnd","roundDateByStartDayHour","startTime","dateTimeFromDecimal","getSequenceByInterval","cur","intervals","sameHoursAndMinutes","sameDate","sameMonth","sameDecade","startDecadeDate1","startDecadeDate2","sameCentury","startCenturyDate1","startCenturyDate2","getDifferenceInMonth","typeView","difference","getDifferenceInMonthForCells","getShortDateFormat","getViewFirstCellDate","viewType","getViewLastCellDate","getViewDown","getViewUp","getLastMonthDate","getFirstMonthDate","getWeekNumber","firstWeekDayInYear","lastWeekDayInYear","daysInFirstWeek","weekNumber","ceil","getDayNumber","normalizeDateByWeek","currentDate","differenceInDays","getDatesInterval","resultDate","dateInRange","intervalsOverlap","firstMin","firstMax","secondMin","secondMax","roundToHour","setMinutes","getViewMinBoundaryDate","getViewMaxBoundaryDate","makeDate","startDate","endDate","intervalUnit","millisecondCount","getDatesOfInterval","getMachineTimezoneName","Intl","DateTimeFormat","resolvedOptions","leftPad","FORMAT_TYPES","LDML_FORMATTERS","useUtc","M","dateParts","formatType","getMonthNames","L","Q","getQuarterNames","E","getDayNames","period","getPeriodNames","H","S","timezoneOffset","signPart","timezoneOffsetAbs","hoursPart","minutesPart","X","Z","getFormatter","charIndex","formatter","isCurrentCharEqualsNext","charCount","isEscaping","MONTHS","DAYS","PERIODS","QUARTERS","cutCaptions","captions","lengthByFormat","abbreviated","narrow","NUMBER_SERIALIZATION_FORMAT","DATE_SERIALIZATION_FORMAT","ISO8601_PATTERN","ISO8601_TIME_PATTERN","ISO8601_PATTERN_PARTS","DATE_SERIALIZATION_PATTERN","dateParser","skipISO8601Parsing","getTimePart","timeZoneHour","timeZoneMinute","correctYear","part","parseISO8601String","isDefaultSerializationFormat","getDateSerializationFormat","parsedValue","isNumber","parseDate","getIso8601Format","deserializeDate","serializeDate","serializationFormat","getLDMLFormatter","defaultDateNames","getDefaultAlignment","isRtlEnabled","getBoundingRect","outerWidth","outerHeight","XHR_ERROR_UNLOAD","normalizeSortingInfo","desc","errorMessageFromXhr","unloading","textStatusMessages","parsererror","xhr","textStatus","statusText","aggregators","seed","sum","avg","finalize","NaN","processRequestResultLock","lockDeferred","lockCount","obtain","release","keysEqual","keyExpr","names","trivialPromise","rejectedPromise","throttleChanges","throttled","timeoutId","throttle","coreErrors","E4000","E4001","E4002","E4003","E4004","E4005","E4006","E4007","E4008","E4009","E4010","E4011","E4012","E4013","E4014","E4015","E4016","E4017","E4018","E4019","E4020","E4021","E4022","E4023","E4024","W4000","W4001","W4002","errorHandler","_errorHandler","findItems","keyInfo","groupCount","collapsedItems","indexByKey","getItems","setDataByKeyMapValue","_dataByKeyMap","_dataByKeyMapLength","cloneInstanceWithChangedPaths","clonedInstances","instanceWithoutPrototype","change","_name","createObjectWithChanges","applyBatch","useInsertIndex","immutable","disableCache","logError","skipCopying","resultItems","dataByKeyMap","arrayLength","keyOf","generateDataByKeyMap","getErrorResult","isBatch","errorCode","keyOrKeys","hasKey","getCacheValue","newTarget","keyValue","getHasKeyCacheValue","Iterator","countable","ArrayIterator","WrappedIterator","iter","MapIterator","mapper","hasNext","SortIterator","langParams","_wrap","thenBy","sortedIter","_ensureSorted","_compare","_unwrap","record","wrappedItem","_getDefaultCompare","xValue","yValue","Collator","defaultCompare","xIndex","yIndex","rulesCount","compareResult","compileCriteria","_toComparable","_langParams","toLocaleString","compileEquals","negate","crit","isGroupOperator","isGroupCriterion","ops","isConjunctiveOperator","isConjunctiveNextOperator","isUnaryOperation","op","criteria","normalizeBinaryCriterion","operatorFn","getterValue","searchValue","lastIndexOf","FilterIterator","GroupIterator","_ensureGrouped","groupedIter","SelectIterator","SliceIterator","take","arrayQueryImpl","queryOptions","handleDataError","aggregateCore","aggregator","standardAggregate","chainQuery","selectProp","enumerate","setLangParams","sortBy","MAX_VALUE","groupBy","aggregate","multiLevelGroup","query","groupInfo","arrayQuery","arrangeSortingInfo","sortInfo","filteredGroup","group","queryByOptions","isCountQuery","_query$setLangParams","_query","keepInitialKeyOrder","storeHelper","storeImpl","Store","_useDefaultSearch","_clearCache","_customLoadOptions","_keyGetter","_requireKey","load","_withLock","_loadImpl","createQuery","totalCount","_totalCountImpl","byKey","extraOptions","_addFailHandlers","_byKeyImpl","_insertImpl","callbackValues","callbackKey","_updateImpl","beforePushArgs","waitFor","_pushImpl","_removeImpl","alias","registerClass","TOTAL_COUNT","LOAD","BY_KEY","INSERT","UPDATE","REMOVE","ensureRequiredFuncOption","throwInvalidUserFuncResult","createUserFuncFailureHandler","pendingDeferred","promiseArguments","getResponseHeader","errorMessageFromXhrUtility","invokeUserLoad","store","userResult","userFunc","_loadFunc","runRawLoad","userFuncOptions","continuation","__rawData","loadPromise","__rawDataPromise","_cacheRawData","runRawLoadWithQuery","countOnly","userData","itemsQuery","totalCountQuery","rawDataQuery","waitList","asyncResult","requireTotalCount","CustomStore","useDefaultSearch","loadMode","_loadMode","cacheRawData","_totalCountFunc","_byKeyFunc","_insertFunc","_updateFunc","_removeFunc","clearRawDataCache","invokeUserTotalCountFunc","_byKeyViaLoad","runRawLoadWithKey","invokeUserByKeyFunc","serverResponse","discardPendingTasks","_tasks","_busy","removeTaskCallback","busy","nativeXMLHttpRequest","getXhr","XMLHttpRequest","SUCCESS","ERROR","createScript","script","removeScript","scriptNode","appendToHead","evalScript","getRequestOptions","paramsAlreadyString","href","upload","paramsConvert","getMethod","parameters","getRequestHeaders","defaultContentType","getContentTypeHeader","Accept","dataType","scriptAccept","accepts","xml","jsonp","getAcceptHeader","crossDomain","sendRequest","httpRequest","async","originAnchor","urlAnchor","protocol","isCrossDomain","needScriptEvaluation","callbackName","jsonpCallback","callbackParameter","getJsonpOptions","requestOptions","loadHandler","evalCrossDomainScript","username","customStatus","setHttpTimeout","onreadystatechange","hasContent","responseText","getDataFromResponse","postProcess","onprogress","onloadstart","onabort","xhrFields","setRequestHeader","beforeSend","send","remoteQueryImpl","tasks","createTask","executorTask","_adapterFactory","_adapter","_taskQueue","_currentTask","_mergedSortArgs","rejectWithNotify","mergeSortTask","adapter","queryAdapters","optimize","unmergedTasks","clientChain","queryImpl","remote","ArrayStore","initialArray","_array","Query","CANCELED_TOKEN","isPending","normalizeStoreLoadOptionAccessorArguments","originalArguments","mapGroup","level","restItem","mapRecursive","normalizeLoadResult","_data","createCustomStoreFromUrl","normalizationOptions","ajaxUtils","fromUrlLoadMode","normalizeDataSourceOptions","paginate","storeConfig","createCustomStoreFromLoadFunc","createStoreFromConfig","OperationManager","_counter","_deferreds","operationId","DataSource","_options$reshapeOnPus","_store","_changedTime","pushAggregationTimeout","pushDeferred","lastPushWaiters","throttlingPushHandler","_onPush","_onPushHandler","_aggregationTimeoutId","_storeLoadOptions","_extractLoadOptions","_mapFunc","_postProcessFunc","_pageIndex","pageIndex","_pageSize","pageSize","_loadingCount","_loadQueue","_createLoadQueue","_searchValue","_searchOperation","searchOperation","_searchExpr","searchExpr","_paginate","_reshapeOnPush","reshapeOnPush","_operationManager","_init","_items","_userData","_totalCount","_isLoaded","_isLastPage","_this$_delayedLoadTas","_delayedLoadTask","cancelAll","_disposed","customNames","loadOptions","newIndex","isLastPage","generateStoreLoadOptionAccessor","normalizedArgs","newFilter","argc","_this$_store","isLoaded","isLoading","beginLoading","_changeLoadingCount","endLoading","increment","oldLoading","newLoading","_scheduleLoadCallbacks","_scheduleFailCallbacks","_fireChanged","_scheduleChangedCallbacks","loadSingle","_createStoreLoadOptions","refresh","searchString","isEmptyArray","_applyMapFunction","loadTask","_loadFromStore","loadOperation","_createLoadOperation","changingArgs","groupLevel","dataSourceChanges","postProcessChanges","storeLoadOptions","reload","_addSearchOptions","_addSearchFilter","searchFilter","handleSuccess","loadResult","_processStoreLoadResult","resolvePendingDeferred","_applyPostProcessFunction","mapDataRespectingGrouping","DataControllerMock","loadFromStore","loadNextPage","addSearchFilter","resetDataSourcePageIndex","applyMapFunction","getDataSource","DataController","dataSource","_dataSource","operation","DATA_SOURCE_OPTIONS_METHOD","DATA_SOURCE_CHANGED_METHOD","DATA_SOURCE_LOAD_ERROR_METHOD","DATA_SOURCE_LOADING_CHANGED_METHOD","DATA_SOURCE_FROM_URL_LOAD_MODE_METHOD","SPECIFIC_DATA_SOURCE_OPTION","NORMALIZE_DATA_SOURCE","DataHelperMixin","_disposeDataSource","_refreshDataSource","_initDataSource","_loadDataSource","widgetDataSourceOptions","dataSourceType","dataSourceOptions","_isSharedDataSource","_dataSourceType","_addDataSourceHandlers","_initDataController","_this$option","dataController","_dataController","_addDataSourceChangeHandler","_addDataSourceLoadErrorHandler","_addDataSourceLoadingChangedHandler","_addReadyWatcher","_ready","_proxiedDataSourceChangedHandler","_proxiedDataSourceLoadErrorHandler","_proxiedDataSourceLoadingChangedHandler","_loadSingle","_isDataSourceLoading","adjustValue","precisionMultiplier","roundByAbs","valuePrecision","adjustedValue","DEFAULT_CONFIG","reverseString","removeStubs","getNonRequiredDigitCount","floatFormat","getRequiredDigitCount","normalizeValueString","valuePart","minDigitCount","maxDigitCount","formatNumberPart","valueString","formatPart","escapeIndex","isEscape","parseValue","isPercent","prepareValueText","valueText","isIntegerPart","nextText","nextValueText","hasGroups","getFormatByValueText","valueTextParts","decimalSeparatorIndex","_formatNumberCore","formatConfig","currencyPart","getCurrencySymbol","symbol","getOpenXmlCurrencyFormat","nb","nn","parentLocales","parentLocale","DEFAULT_LOCALE","currentLocale","getValueByClosestLocale","isRootLocale","getParentLocale","af","agq","ak","am","ar","asa","ast","az","bas","be","bem","bez","bg","bm","bn","bo","br","brx","bs","ca","ccp","ce","ceb","cgg","chr","ckb","cs","cy","da","dav","de","dje","doi","dsb","dua","dyo","dz","ebu","ee","en","eo","es","et","eu","ewo","fa","ff","fi","fil","fo","fr","fur","fy","ga","gd","gl","gsw","gu","guz","gv","ha","haw","he","hi","hr","hsb","hu","hy","ia","ig","ii","it","ja","jgo","jmc","jv","ka","kab","kam","kde","kea","kgp","khq","ki","kk","kkj","kl","kln","km","kn","ko","kok","ks","ksb","ksf","ksh","ku","kw","ky","lag","lb","lkt","ln","lo","lrc","lt","lu","luo","luy","lv","mai","mas","mer","mfe","mg","mgh","mgo","mi","mk","mn","mni","mua","mzn","naq","nd","nds","ne","nl","nmg","nnh","no","nus","nyn","om","or","os","pa","pcm","ps","qu","rm","rn","ro","rof","ru","rw","rwk","sa","sah","saq","sat","sbp","sc","sd","se","seh","ses","sg","shi","si","sk","sl","smn","sn","so","sq","sr","su","sv","sw","ta","te","teo","tg","ti","tk","to","tt","twq","tzm","ug","uk","und","ur","uz","vai","vi","vun","wae","wo","xh","xog","yav","yi","yo","yrl","yue","zgh","zh","zu","CURRENCY_STYLES","detectCurrencySymbolRegex","formattersCache","localizationCoreUtils","NumberFormat","_normalizeFormatConfig","fractionDigits","minimumIntegerDigits","useGrouping","maximumFractionDigits","_getPrecisionConfig","_formatConfig$useCurr","useAccountingStyle","useCurrencyAccountingStyle","dxConfig","currency","currencySign","minimumFractionDigits","_format","_normalizeFormat","_getCurrencySymbolInfo","getCurrencyFormatter","_extractCurrencySymbolInfo","currencyValueString","targetCurrency","currencySymbol","accountingFormat","encodedCurrencySymbol","encodeSymbols","openXmlCurrencyFormat","accountingFormats","hasIntl","NUMERIC_FORMATS","LargeNumberFormatPostfixes","LargeNumberFormatPowers","largenumber","thousands","millions","billions","trillions","numberLocalization","numericFormats","defaultLargeNumberFormatPostfixes","_parseNumberFormatString","formatObject","formatList","power","_calculateNumberPower","minPower","maxPower","_getNumberByPower","_formatNumber","powerPostfix","_formatNumberExponential","powString","_addZeroes","multiplier","_addGroupSeparators","_getSeparators","getDecimalSeparator","getThousandsSeparator","convertDigits","toStandard","digits","fromFirstDigit","toFirstDigit","fromLastDigit","regExp","getNegativeEtalonRegExp","separators","digitalRegExp","negativeEtalon","getSign","numberConfig","formatterConfig","unlimitedIntegerDigits","signFormatParts","signParts","getSignParts","isPositive","numberFormat","floatPointIndex","getFloatPointIndex","floatFormatParts","minFloatPrecision","maxFloatPrecision","isPercentFormat","formatString","minIntegerPrecision","maxIntegerPrecision","integerLength","floatPrecision","groupSizes","singleQuotesLeft","valueParts","valueIntegerPart","valueFloatPart","groupSize","applyGroups","integerString","floatString","cleanedText","_calcSignificantDigits","integer","fractional","calcDigitsAfterLeadingZeros","currencyLocalization","intlNumberLocalization","FORMAT_SEPARATORS","checkDigit","zeroCode","checkPatternContinue","patterns","isDigit","nextChar","isDigitChanged","getPatternStartIndex","defaultPattern","formatValue","ESCAPE_CHARS_REGEXP","getFormat","processedIndexes","patternPositions","replacedPatterns","datePatterns","patternsFilter","getDifference","indexes","patternIndex","letterCount","baseCharIndex","replaceCharsCore","replaceChars","escapeIndexes","isCurrentCharEscaped","isPrevCharEscaped","isNextCharEscaped","escapeChars","monthRegExpGenerator","PATTERN_REGEXPS","countSuffix","timeSeparator","getTimeSeparator","w","parseNumber","caseInsensitiveIndexOf","monthPatternParser","monthNames","PATTERN_PARSERS","dayNames","periodNames","ORDERED_PATTERNS","PATTERN_SETTERS","datePartValues","hourPartValue","getSameCharCount","createPattern","getRegExpInfo","regexpText","stubText","addPreviousStub","regexpPart","isPossibleForParsingFormat","regexp","digitFieldSymbols","isDigitPattern","possibleForParsing","ambiguousDigitPatternsCount","getParser","regExpInfo","regExpResult","formatPatterns","maxPatternIndex","getMaxOrderedPatternIndex","orderedFormatPatterns","otherPatterns","getOrderedFormatPatterns","regExpPattern","regExpText","patternChar","partSetter","partParser","setPatternPart","setterName","setPatternPartFromNow","SYMBOLS_TO_REMOVE_REGEX","NARROW_NO_BREAK_SPACE_REGEX","getIntlFormatter","timeZoneName","recognizableAsTwentyCentury","temporaryYearValue","utcDate","formatDateTime","formatNumber","getAlternativeNumeralsMap","numeralsMapCache","normalizeNumerals","dateString","alternativeNumeralsMap","removeLeadingZeroes","normalizeMonth","intlFormats","dayofweek","weekday","longdate","longdatelongtime","longtime","monthandday","monthandyear","shortdate","shorttime","shortyear","defaultOptions","getIntlFormat","monthNameStrategies","standalone","monthIndex","monthFormat","wide","dayIndex","hour12Formatter","hour12","hourNumberText","timeParts","intlFormat","_parseDateBySimpleFormat","formatParts","getFormatParts","dateArgs","_generateDateArgs","constructValidDate","ampmShift","actual","expected","parsedDate","hoursShift","datePart","formatUsesMonthName","formatUsesDayName","formattedDate","FORMATS_TO_PATTERN_MAP","quarterandyear","shortdateshorttime","possiblePartPatterns","dateLocalization","_getPatternByFormat","_expandPattern","partName","possiblePatterns","is24HourFormat","amTime","pmTime","amTimeFormatted","pmTimeFormatted","getLDMLDateFormatter","ldmlFormat","getLDMLDateFormat","getLDMLDateParser","firstDayOfWeekIndex","localizationCore","firstDayOfWeekData","intlDateLocalization","PathTimeZoneConversion","baseDictionary","Yes","No","Cancel","Close","Clear","Done","Loading","Select","Search","Back","OK","newMessages","messageLocalization","_dictionary","messages","_localizablePrefix","localizablePrefix","localizeString","regex","escapeString","localizationKey","defaultResult","humanize","getMessagesByLocales","getDictionary","onlyNew","coreLocalization","_getFormatterBase","localeData","_Object$entries$find","getDataByLocale","stringFormat","getAppointmentDurationInHours","getAppointmentTakesAllDay","appointmentAdapter","viewStartDayHour","viewEndDayHour","hasAllDay","allDay","appointmentDurationInHours","viewDurationInHours","startDateHours","endDateHours","appointmentHasShortDayDuration","VIEW_TYPES","renovationGetCurrentView","currentViewProps","fromSourceToAppointment","fromAppointmentToSource","fromSourceToGrid","fromGridToSource","TimeZoneCalculator","sourceDate","getConvertedDate","appointmentTimeZone","appointmentTimezone","clientOffset","getClientOffset","commonOffset","getCommonOffset","appointmentOffset","getAppointmentOffset","client","appointment","targetOffset","isBack","timezone","isUTCDate","getOffsetInHours","getOffsets","tryGetCommonOffset","tryGetAppointmentOffset","useAppointmentTimeZone","offsets","getConvertedDateByOffsets","toMs","DateAdapterCore","_source","parseTimezone","timeZoneConfig","offsetIndices","untils","offsetList","offsetIndexList","dateList","until","getConvertedUntils","tzCache","TimeZoneCache","timeZoneDataUtils","getTimezoneById","timeZoneInfo","_tzCache","_timeZones","getDisplayedTimeZones","timestamp","timeZones","getUtcOffset","title","formatOffset","formatId","minutesInDecimal","tzList","getTimeZoneOffsetById","tryGet","getTimeZoneDeclarationTuple","getTimeZoneDeclarationTupleCore","tupleResult","currentYear","dateTimeStamp","createUTCDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getTimezoneOffsetChangeInMinutes","updatedStartDate","updatedEndDate","getDaylightOffset","calculateTimezoneByValue","dateUtc","_getDaylightOffsetByTimezone","isTimezoneChangeInDate","startDayDate","endDayDate","getClientTimezoneOffset","hasDSTInLocalTimeZone","getExtremeDates","isEqualLocalTimeZoneByDeclaration","getDateAndMoveHourBack","dateStamp","configTuple","summerTime","winterTime","localSummerOffset","localWinterOffset","nowDate","utils","getDaylightOffsetInMs","getTimezoneOffsetChangeInMs","getCorrectedDateByDaylightOffsets","convertedOriginalStartDate","convertedDate","startDateTimezone","isSameAppointmentDates","correctRecurrenceExceptionByTimezone","exception","exceptionByStartDate","startDateTimeZone","isBackConversion","getDiffBetweenClientTimezoneOffsets","firstDate","secondDate","createUTCDateWithLocalOffset","createDateFromUTCWithLocalOffset","DateAdapter","timezoneOffsetBeforeInMin","addTime","subtractMinutes","getDateWithoutTimezoneChange","clonedDate","isEqualLocalTimeZone","localTimeZoneName","getTimeZones","dateInUTC","setOffsetsToDate","targetDate","offsetsArray","newDateMs","ExpressionUtils","dataAccessors","setter","getAppointmentTakesSeveralDays","_convertRecurrenceException","exceptionString","timeZoneCalculator","getConvertedToTimeZone","createDate","exceptionDate","dateSerialization","convertedStartDate","convertedExceptionDate","timeZoneUtils","replaceWrongEndDate","rawAppointment","appointmentDuration","_isEndDateWrong","calculatedEndDate","isAllDay","sortAppointmentsByStartDate","appointments","settings","E1001","E1002","E1003","E1004","E1005","E1006","E1007","E1010","E1011","E1012","E1016","E1018","E1019","E1020","E1021","E1022","E1023","E1025","E1026","E1031","E1032","E1033","E1034","E1035","E1037","E1038","E1039","E1040","E1041","E1042","E1043","E1044","E1045","E1046","E1047","E1048","E1049","E1050","E1051","E1052","E1053","E1054","E1055","E1056","E1058","E1059","E1060","W1001","W1002","W1003","W1004","W1005","W1006","W1007","W1008","W1009","W1010","W1011","W1012","W1013","W1014","W1015","W1016","W1017","W1018","W1019","W1020","W1021","W1022","W1023","W1024","W1025","ALL_WEEKDAYS","Weekday","isPresent","isWeekdayStr","range","rang","repeat","times","padStart","targetLength","padString","dateutil","pymod","divmod","div","mod","notEmpty","dateNoTime","differencems","ordinal","getUTCDay","dates","clones","utc","getUTCSeconds","bits","maxDate","inc","minDate","dt","IterResult","total","tooEarly","tooLate","_result","res","__spreadArray","pack","Frequency","iterator","CallbackIterResult","tokens","SKIP","numberAsText","the","third","nth","monday","tuesday","wednesday","thursday","friday","saturday","sunday","january","february","march","april","may","june","july","august","september","october","november","december","comma","defaultGetText","defaultDateFormatter","rrule","gettext","language","dateFormatter","ENGLISH","origOptions","bymonthday","bynmonthday","byweekday","allWeeks","someWeeks","Boolean","isWeekdays","isEveryDay","sortWeekDays","ToText","freq","IMPLEMENTED","isFullyConvertible","RRule","plural","bymonth","_bymonth","_bymonthday","_byweekday","byhour","_byhour","byyearday","byweekno","weekdaytext","monthtext","npos","wday","getJsWeekday","finalDelim","delim","o","realCallback","finalDelimiter","delimJoin","Parser","nextSymbol","best","bestSymbol","accept","parseText","ttr","expect","acceptNumber","isDone","AT","F","ON","wkd","decodeWKD","decodeNTH","MDAYs","decodeM","freqIsDailyOrGreater","HOURLY","fromText","Time","DateTime","yearDiv","monthMod","wkst","getWeekday","fixDay","filtered","dayDiv","hourMod","addDaily","byminute","hourDiv","minuteMod","addHours","bysecond","minuteDiv","secondMod","addMinutes","daysinmonth","addYears","addMonths","addWeekly","addSeconds","initializeOptions","invalid","defaultKeys","parseOptions","opts","DEFAULT_OPTIONS","byeaster","dtstart","setMilliseconds","bysetpos","bynweekday","parsedOptions","parseString","rfcString","parseLine","parseDtstart","dtstartWithZone","tzid","header","parseRrule","Days","num","parseIndividualNumber","optionKey","SyntaxError","wdaypart","parseWeekday","RangeError","DateWithZone","datestr","isUTC","localTimeZone","dateInLocalTZ","tzOffset","optionsToString","outValue","buildDtstart","strValues","ruleString","argsMatch","Cache","what","all","argsKeys","findCacheDiff","cachedObject","iterResult","_cacheAdd","M365MASK","M366MASK","M28","M29","M30","M31","MDAY366MASK","MDAY365MASK","NM28","NM29","NM30","NM31","NMDAY366MASK","NMDAY365MASK","M366RANGE","M365RANGE","WDAYMASK","wdaymask","rebuildYear","firstwkst","wyearlen","firstyday","yearlen","nextyearlen","yearordinal","yearweekday","mmask","mdaymask","nmdaymask","mrange","baseYearMasks","wnomask","no1wkst","numweeks","lnumweeks","lyearweekday","lno1wkst","lyearlen","weekst","Iterinfo","lastyear","yearinfo","lastmonth","monthinfo","nwdaymask","ranges","rebuildMonth","eastermask","yearStart","easter","mtimeset","ydayset","mdayset","wdayset","ddayset","htimeset","stimeset","buildPoslist","timeset","dayset","poslist","daypos","timepos","tmp","emitResult","counterDate","rebuild","millisecondModulo","buildTimeset","gettimeset","makeTimeset","getdayset","removeFilteredDays","rezonedDate","rezoneIfNeeded","currentDay","isFiltered","dayCounter","MO","TU","WE","TH","FR","SA","SU","noCache","_cache","_cacheGet","_iter","toText","unfold","forceset","compatible","parseInput","rrulevals","rdatevals","exrulevals","exdatevals","parsedDtstart","lines","splitIntoLines","sep","splits","extractName","parms","breakDownLine","rdateTzid","parseRDate","rrulestr","rset_1","RRuleSet","groomRruleOptions","rdate","exrule","exdate","buildRule","rdateval","parm","validateDateParm","createGetterSetter","fieldName","_rrule","field_1","_rdate","_exrule","_exdate","_exdateHash","_accept","evalExdate","zonedDate","iterSet","_addRule","_addDate","_dtstart","rdatesToString","rrs","param","rdates","ruleNames","freqNames","loggedWarnings","MS_IN_HOUR","RRULE_BROKEN_TIMEZONES","recurrence","getRecurrenceProcessor","RecurrenceProcessor","rRule","rRuleSet","RecurrenceValidator","recurrenceRule","evalRecurrenceRule","isValid","rruleIntervalParams","_createRruleIntervalParams","_initializeRRule","startIntervalDate","minViewDate","maxViewDate","minViewTime","_convertRruleResult","appointmentTimezoneOffset","clientOffsets_startDate","clientOffsets_minViewDate","clientOffsets_maxViewDate","startDateDSTDifferenceMs","startIntervalDateDSTShift","rruleDate","convertedBackDate","_getLocalMachineOffset","convertedDateDSTShift","switchToSummerTime","resultDateDSTShift","machineTimezoneOffset","machineTimezoneName","isTimezoneOffsetInBrokenRange","isTimezoneNameInBrokenNames","generateDates","_parseRecurrenceRule","validateRRule","byday","currentOffset","offsetDate","getAsciiStringByDate","exceptionText","_parseExceptionToRawArray","_createDateTuple","startDateUtc","ruleOptions","_createRRule","getDateByAsciiString","getPostProcessedException","_dispose","ruleObject","ruleParts","ruleName","ruleValue","parseResult","isUtc","_brokenRuleNameExists","_wrongCountRule","_wrongIntervalRule","_wrongDayOfWeek","_wrongByMonthDayRule","_wrongByMonth","_wrongUntilRule","_logBrokenRule","wrongUntil","wrongCount","wrongByMonthDay","byMonthDay","wrongByMonth","byMonth","wrongInterval","byDay","daysByRule","daysFromByDayRule","brokenDaysExist","brokenRuleExists","PROPERTY_NAMES","AppointmentAdapter","setField","isValidRecurrenceRule","pathTimeZoneConversion","calculateDate","endDateTimeZone","pathTimeZone","calculateStartDate","calculateEndDate","clonedAdapter","createAppointmentAdapter","UTC_FULL_DATE_FORMAT","createRecurrenceException","recurrenceException","getSerializedDate","FIXED_CONTAINER_CLASS","REDUCED_APPOINTMENT_PARTS_CLASSES","tail","DIRECTION_APPOINTMENT_CLASSES","horizontal","vertical","APPOINTMENT_DRAG_SOURCE_CLASS","APPOINTMENT_CONTENT_CLASSES","HEADER_CURRENT_TIME_CELL_CLASS","VIRTUAL_CELL_CLASS","TIME_PANEL_CLASS","DATE_TABLE_CLASS","DATE_TABLE_ROW_CLASS","GROUP_ROW_CLASS","GROUP_HEADER_CONTENT_CLASS","LAST_GROUP_CELL_CLASS","FIRST_GROUP_CELL_CLASS","VERTICAL_GROUP_COUNT_CLASSES","LIST_ITEM_DATA_KEY","APPOINTMENT_SETTINGS_KEY","HORIZONTAL_GROUP_ORIENTATION","VIEWS","DAY","WEEK","WORK_WEEK","MONTH","TIMELINE_DAY","TIMELINE_WEEK","TIMELINE_WORK_WEEK","TIMELINE_MONTH","AGENDA","createOccurrenceMap","_map$get","wrapToArray","removeDuplicates","toRemove","toRemoveMap","occurrencesCount","hasResourceValue","resourceValues","itemValue","getValueExpr","valueExpr","getDisplayExpr","displayExpr","getFieldExpr","fieldExpr","getWrappedDataSource","createResourcesTree","leafIndex","make","groupIndex","itemIndex","currentGroupItem","resultItem","nextGroupIndex","getPathToLeaf","leaf","findLeafByIndex","_leaf","makeBranch","getCellGroups","getGroupCount","getGroupsObjectFromGroupsArray","groupsArray","currentGroups","getAllGroups","isResourceMultiple","resourceField","allowMultiple","filterResources","getDataAccessors","groupAppointmentsByResourcesCore","tree","treeLeaves","getResourceTreeLeaves","hasGroupItem","groupName","resourceValue","reduceResourcesTree","existingAppointments","resourceName","resourceTitle","resourceData","resourceGetter","resourceFromAppointment","getResourceColor","resourceLoaderMap","colorExpr","colorGetter","wrappedDataSource","filteredData","getOrLoadResourceItem","getAppointmentColor","resourceConfig","appointmentConfig","loadedResources","itemData","paintedResources","newGroups","useColorAsDefault","newResources","getPaintedResources","cellGroups","resourcesDataAccessors","groupId","createExpressions","loadResources","deferreds","dataSourcePromise","valueGetter","displayGetter","getTransformedResourceData","hasEmpty","getNormalizedResources","combineClasses","classesMap","VERTICAL_GROUP_ORIENTATION","getKeyByGroup","isVerticalGrouping","addToStyles","nextStyle","addHeightToStyle","addWidthToStyle","getGroupCellClasses","isFirstGroupCell","isLastGroupCell","getIsGroupedAllDayPanel","hasAllDayRow","isVerticalGroupingApplied","groupOrientation","isHorizontalGroupingApplied","isGroupingByDate","isHorizontalGrouping","TIMELINE_VIEWS","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","isDateInRange","setOptionHour","optionHour","nextDate","getViewStartByOptions","intervalDuration","startViewDate","currentStartDate","getCalculatedFirstDayOfWeek","firstDayOfWeekOption","getStartViewDateWithoutDST","newStartViewDate","validateDayHours","getStartViewDateTimeOffset","validStartDayHour","formatWeekday","formatWeekdayAndDay","getToday","indicatorTime","todayDate","getVerticalGroupCountClass","isDateAndTimeView","isTimelineView","getHorizontalGroupCount","calculateIsGroupedAllDayPanel","isAllDayPanelVisible","calculateDayDuration","isHorizontalView","getTotalCellCountByCompleteData","completeData","getTotalRowCountByCompleteData","getDisplayedCellCount","displayedCellCount","getDisplayedRowCount","displayedRowCount","getCellDuration","hoursInterval","Action","_action","_context","_beforeExecute","beforeExecute","_afterExecute","afterExecute","_component","_validatingTargetName","validatingTargetName","excludeValidators","_excludeValidators","handled","argsBag","_validateAction","_executeAction","executors","_executor$validate","validate","_executor$execute","execute","registerExecutor","createValidatorByTargetElement","$target","getPublicElement","webkitRegExp","mozillaRegExp","browserFromUA","browserName","browserVersion","maxLevel","normalizeArg","xItem","yItem","TRANSLATOR_DATA_KEY","TRANSFORM_MATRIX_REGEX","TRANSLATE_REGEX","locate","translate","getTranslate","isPercentValue","cacheTranslate","clearCache","getTranslateCss","matrix","is3D","move","resetPosition","finishTransition","originalTransition","stylesConfig","addNamespace","eventNames","focusableFn","isTabIndexNotNaN","isDisabled","isDefaultFocus","isHyperlink","tabbable","KEY_MAP","backspace","tab","enter","pageup","pagedown","home","arrowleft","arrowup","arrowright","arrowdown","alt","control","LEGACY_KEY_CODES","EVENT_SOURCES_REGEX","dx","mouse","touch","keyboard","pointer","fixMethod","isDxEvent","eventSource","isNativeTouchEvent","isPointerEvent","isMouseEvent","isNativeMouseEvent","pointerType","isDxMouseWheelEvent","isTouchEvent","_ref3","eventDelta","skipEvents","needSkipEvent","hasAttribute","touchInEditable","createEvent","copyEvent","normalizeKeyName","_ref4","normalizedKey","normalizedKeyFromWhich","getChar","_ref5","mappedAddNamespace","isCommandKeyPressed","_ref6","Emitter","_$element","_cancelCallback","_acceptCallback","getElement","validatePointers","pointers","hasTouches","allowInterruptionByMouseWheel","addCancelCallback","removeCancelCallback","_cancel","addAcceptCallback","removeAcceptCallback","_requestAccept","_acceptRequestEvent","_forgetAccept","_fireEvent","_getEmitterTarget","delegateSelector","TOUCH_BOUNDARY","setGestureCover","$cover","GestureEmitter","gesture","immediate","_stage","getDirection","_toggleGestureCover","_needSkipEvent","_startEvent","_startEventData","_setupImmediateTimer","_this$immediateTimeou","_immediateTimer","_immediateAccepted","immediateTimeout","_directionConfirmed","_resetActiveElement","_clearSelection","_adjustStartEvent","_start","_move","touchBoundary","_getTouchBoundary","deltaX","deltaY","horizontalMove","_validateMove","verticalMove","mainAxis","crossAxis","_toggleGestureCoverImpl","gestureCoverStrategy","gestureCover","removeAllRanges","clearSelection","_end","_stop","initialTouchBoundary","newBoundary","transitionEndEventNames","webkitTransition","MozTransition","OTransition","supportProp","inputType","touchEvents","hasWindowProperty","detectTouchEvents","detectPointerEvent","transitionEndEventName","animation","nativeScrolling","isNativeScrollingSupported","POINTER_EVENTS_NAMESPACE","originalEvents","_eventName","_originalEvents","_handlerCount","_isNoBubble","_handler","_originalEvent$target","_getDelegateTarget","mozilla","shadowRoot","_originalEvent$path","_originalEvent$compos","composedPath","_setSelector","handleObj","_selector","_getSelector","teardown","normalizeTouchEvent","pointerId","skipTouchWithSameIdentifier","pointerEvent","TouchStrategy","BaseStrategy","_pointerId","dxpointerdown","dxpointermove","dxpointerup","dxpointercancel","dxpointerover","dxpointerout","dxpointerenter","dxpointerleave","addEventsListener","eventMap","pointerEquals","onPointerAdding","getPointerIndex","removePointer","normalizeMouseEvent","activated","activateStrategy","Observer","MouseStrategy","activate","resetObserver","MouseAndTouchStrategy","EVENT_LOCK_TIMEOUT","isMouse","_skipNextEvents","_mouseLocked","_unlockMouseTimer","normalizer","EventStrategy","support","getStrategy","leave","over","EVENT_NAME","EVENT_NAMESPACE","wheel","_wheelHandler","deltaMode","deltaZ","_normalizeDelta","MANAGER_EVENT","EMITTER_DATA","EventManager","_attachHandlers","_proxiedCancelHandler","_cancelHandler","_proxiedAcceptHandler","_acceptHandler","_pointerDownHandler","_pointerMoveHandler","_pointerUpHandler","wheelEventName","_mouseWheelHandler","_eachEmitter","activeEmitters","_activeEmitters","emitter","_applyToEmitters","resetEmitter","_updateEmitters","_isSetChanged","_cleanEmitters","_fetchEmitters","currentSet","_closestEmitter","previousSet","_emittersSet","setChanged","handleEmitter","emitters","acceptedEmitter","_cancelEmitter","canceledEmitter","emitterIndex","_allowInterruptionByMouseWheel","_adjustWheelEvent","allowInterruption","closestGestureEmitter","shiftKey","verticalGestureDirection","isActive","eventManager","EMITTER_SUBSCRIPTION_DATA","emitterConfig","emitterClass","emitterName","emitterEvents","bubble","subscriptions","disposeEmitter","DRAG_START_EVENT","DRAG_EVENT","DRAG_END_EVENT","DRAG_ENTER_EVENT","DRAG_LEAVE_EVENT","DROP_EVENT","DX_DRAG_EVENTS_COUNT_KEY","knownDropTargets","knownDropTargetSelectors","knownDropTargetConfigs","dropTargetRegistration","updateEventsCounter","eventsCount","DragEmitter","_initEvent","_maxLeftOffset","maxLeftOffset","_maxRightOffset","maxRightOffset","_maxTopOffset","maxTopOffset","_maxBottomOffset","maxBottomOffset","targetElements","dropTargets","_dropTargets","iteratorUtils","eData","dragOffset","_calculateOffset","_processDropTargets","_cancelPreventDefault","_calculateXOffset","_calculateYOffset","_fitOffset","minOffset","maxOffset","_findDropTarget","_currentDropTarget","_fireDropTargetEvent","draggingElement","_checkDropTargetActive","dropTargetIndex","dropTargetSelectors","$delegatedTargets","getItemDelegatedTargets","delegatedTarget","$delegatedTarget","_checkDropTarget","getItemConfig","activeTarget","$prevTarget","dropTargetConfig","targetPosition","itemPositionFunc","targetSize","itemSizeFunc","getItemSize","checkDropTarget","registerEmitter","currentTemplateEngine","templateEngine","PopupDrag","init","dragEnabled","draggableElement","positionController","_positionController","_draggableElement","_handle","_dragEnabled","unsubscribe","_moveTo","_getEventNames","startEventName","_dragStartHandler","updateEventName","_dragUpdateHandler","endEventName","_dragEndHandler","dragStartEvent","dragMoveEvent","dragEndEvent","allowedOffsets","_getAllowedOffsets","_prevOffset","_moveByOffset","dragHandled","detectVisualPositionChange","_fitOffsetIntoAllowedRange","$dragResizeContainer","containerWidth","containerHeight","clientHeight","containerDimensions","_getContainerDimensions","elementDimensions","_getElementDimensions","outsideDragFactor","fullDelta","_getInnerDelta","outerDelta","_getOuterDelta","_getFullDelta","elementPosition","_getElementPosition","containerPosition","_getContainerPosition","currentPosition","newPosition","cachedGetters","convertRulesToOptions","currentDevice","deviceFilter","deviceMatch","getFieldName","getParentName","cachedSetters","OptionManager","optionsByReference","_optionsByReference","_changingCallback","_changedCallback","_namePreparedCallbacks","rulesOptions","silent","oldValue","previousValue","hasNegation","valueName","_prepareRelevantNames","normalizeOptions","_setPreparedValue","Options","deprecatedOptions","_deprecatedCallback","_startChangeCallback","_endChangeCallback","_deprecated","_deprecatedNames","_initDeprecatedNames","_optionManager","onRelevantNamesPrepared","_setRelevantNames","_cachedOptions","_rules","_initialOptions","_getByRules","_setByReference","normalizedName","_normalizeName","_setField","_clearField","fieldObject","previousFieldName","deprecate","_notifyDeprecated","onChanging","onChanged","initialValue","optionsObject","getNestedOptionValue","_initial","aliasName","PostponedOperations","_postponedOperations","postponedPromise","promises","completePromise","getEventName","actionName","_setDeprecatedOptions","_deprecatedOptions","_getDeprecatedOptions","_getDefaultOptions","defaultOptionsRules","_defaultOptionsRules","_setOptionsByDevice","applyRules","_convertRulesToOptions","_isInitialOptionValue","isInitial","_setOptionsByReference","_getOptionsByReference","_optionChangedCallbacks","_disposingCallbacks","NAME","eventsStrategy","_updateLockCount","postponedOperations","_createOptions","_initialized","_optionChanging","onDeprecated","_logDeprecatedOptionWarning","_notifyOptionChanged","onStartChange","onEndChange","addRules","onInitializing","_initOptions","_createOptionChangedAction","since","_logDeprecatedComponentWarning","_optionChangedAction","_createActionByOption","_createDisposingAction","_disposingAction","_optionChanged","_lockUpdate","_unlockUpdate","_isUpdateAllowed","_isInitializingRequired","_initializing","isInitialized","_commitUpdate","callPostponedOperations","_initializeComponent","optionNames","getAliasesByName","_defaultActionArgs","_cancelOptionChange","initialOption","_defaultActionConfig","_createAction","actionSource","actionValue","actionFunc","hasEvent","beforeActionExecute","wrappedAction","hasActionSubscription","isOptionDeprecated","isDeprecated","_setOptionWithoutOptionChange","_getOptionValue","FunctionTemplate","ChildDefaultTemplate","templateEngines","getCurrentTemplateEngine","setTemplateEngine","_compiledTemplate","findTemplates","addOneRenderedCall","templateResult","templateKey","templateSource","defaultCreateElement","acquireIntegrationTemplate","isAsyncTemplate","skipTemplates","integrationTemplate","addPublicElementNormalization","acquireTemplate","createTemplate","defaultTemplates","DX_POLYMORPH_WIDGET_TEMPLATE","widgetName","widget","widgetElement","widgetOptions","_createComponent","TemplateManager","anonymousTemplateName","_tempTemplates","_defaultTemplates","_anonymousTemplateName","_createElement","_createTemplateIfNeeded","tempTemplate","$el","_extractTemplates","anonymousTemplateMeta","_extractAnonymousTemplate","suitableTemplates","rawTemplates","getGroupName","templatesMap","groupedResult","_groupedResult$groupN","Errors","_findBestMatches$","suitableTemplate","suitableTemplatesByName","_ref2","_createTemplate","$anonymousTemplate","isEmptyText","cachedTemplate","validateTemplateSource","templateSourceResult","getNormalizedTemplateArgs","skipImmediate","COMPOSITION_START_EVENT","NAMESPACE","createKeyDownOptions","keyName","ctrl","KeyboardProcessor","_keydown","_compositionStart","_compositionEnd","focusTarget","_focusTarget","_processFunction","focusTargets","isNotFocusTarget","shouldSkipProcessing","_isComposingJustFinished","_isComposing","_toggleProcessingWithContext","toggleProcessing","pureAddNamespace","executeAction","inactive","showTimeout","hideTimeout","resize","shown","hiding","focusIn","focusOut","_ref7","dxClick","click","keyboardProcessors","listenerId","DOMComponent","_useTemplates","createDefaultOptions","_customClass","_getSynchronizableOptionsForCreateComponent","_checkFunctionValueDeprecation","_visibilityChanged","_dimensionChanged","_attachWindowResizeCallback","_initTemplateManager","instanceCustomRules","_classCustomRules","_isDimensionChangeSupported","windowResizeCallBack","_windowResizeCallBack","windowResizeCallbacks","_renderComponent","_initMarkup","_renderElementAttributes","_toggleRTLDirection","_renderVisibilityChange","_renderDimensions","_attachVisibilityChangeHandlers","attributes","class","_attachDimensionChangeHandlers","_isVisibilityChangeSupported","_isCssUpdateRequired","resizeEvent","_isHidden","_isVisible","visibilityEvents","_checkVisibilityChanged","_clean","_modelByElement","modelByElement","_invalidate","_requireRefresh","_refresh","_templateManager","_detachWindowResizeCallback","rtl","synchronizableOptions","nestedComponentOptions","nestedComponentConfig","_extendConfig","extendConfig","_removeAttributes","attrs","_removeClasses","cssClass","_updateDOMComponent","renderRequired","_getAnonymousTemplateName","_initTemplates","extractTemplates","anonymousTemplate","_getTemplateByOption","_getTemplate","getTemplate","_saveTemplate","RESIZABLE","RESIZABLE_HANDLE_CLASS","DRAGSTART_START_EVENT_NAME","dragEventStart","DRAGSTART_EVENT_NAME","dragEventMove","DRAGSTART_END_EVENT_NAME","dragEventEnd","SIDE_BORDER_WIDTH_STYLES","Resizable","handles","stepPrecision","area","onResizeStart","onResize","onResizeEnd","roundStepValue","keepAspectRatio","_renderHandles","_renderActions","_resizeStartAction","_resizeEndAction","_resizeAction","_handles","activeHandlesMap","handleName","_renderHandle","_attachEventHandlers","$handle","_dragHandler","handleElement","_detachEventHandlers","_toggleEventHandlers","shouldAttachEvents","_getElementSize","_toggleResizingClass","_movingSides","_getMovingSides","_elementLocation","_elementSize","_renderDragOffsets","_getArea","handleWidth","handleHeight","handleOffset","areaOffset","scrollOffset","_getAreaScrollOffset","_leftMaxOffset","scrollX","_rightMaxOffset","_topMaxOffset","scrollY","_bottomMaxOffset","_getBorderWidth","borderWidth","_proportionate","_getProportionalDelta","proportionalY","proportionalX","_getDirectionName","axis","sides","_fitIntoArea","directionName","_fitDeltaProportionally","fittedDelta","isInArea","isFittedX","isFittedY","_fitDelta","_getDeltaByOffset","shouldKeepAspectRatio","_isCornerHandler","proportionalDelta","_roundByStep","_updatePosition","elementRect","offsetTop","offsetLeft","_getOffset","dimensions","_updateDimensions","_triggerResizeAction","isAbsoluteSize","isStepPrecisionStrict","elementStyle","shouldRenderWidth","shouldRenderHeight","xor","_roundStrict","_roundNotStrict","_getSteps","steps","xPos","yPos","newXShift","newYShift","separatorOffset","isSmallOffset","newOffsetX","newOffsetY","roundedOffset_x","roundedOffset_y","hasCornerTopLeftClass","RESIZABLE_HANDLE_CORNER_CLASS","hasCornerTopRightClass","hasCornerBottomLeftClass","hasCornerBottomRightClass","_getAreaFromObject","_getAreaFromElement","areaElement","_correctAreaGeometry","$area","areaBorderLeft","areaBorderTop","_renderWidth","_renderHeight","registerComponent","STATUS","BaseRuleValidator","rulesValidators","valueArray","_validate","RequiredRuleValidator","NumericRuleValidator","ignoreEmptyValue","_isValueEmpty","useCultureSettings","RangeRuleValidator","validNumber","numeric","validValue","StringLengthRuleValidator","CustomRuleValidator","dataGetter","extraParams","validationCallback","AsyncRuleValidator","reevaluate","_getWrappedPromise","CompareRuleValidator","comparisonTarget","otherValue","comparisonType","PatternRuleValidator","EmailRuleValidator","stringLength","custom","GroupConfig","validators","_pendingValidators","_onValidatorStatusChanged","_resetValidationInfo","brokenRules","_unsubscribeFromAllChangeEvents","validatorResult","_addPendingValidator","_subscribeToChangeEvents","_raiseValidatedEvent","_updateValidationInfo","_validationInfo","_unsubscribeFromChangeEvents","_removePendingValidator","_orderBrokenRules","orderedRules","foundRules","_updateBrokenRules","_resolveIfComplete","_synchronizeValidationInfo","removeRegisteredValidator","registerValidator","ValidationEngine","getGroupConfig","findGroup","_$element$data","_$element$data$dxComp","validationGroup","dxComponents","dxValidationGroup","$dxGroup","initGroups","addGroup","removeGroup","_setDefaultMessage","defaultFormattedMessage","defaultMessage","_addBrokenRule","brokenRule","_rules$","validationRules","pendingRules","asyncRuleItems","ruleValidationResult","ruleValidator","_validateAsyncRules","_synchronizeGroupValidationInfo","_result$brokenRules","groupConfig","_validationGroup","asyncResults","validateResult","ruleResult","_getPatchedRuleResult","_updateRuleConfig","_getAsyncRulesResult","registerValidatorInGroup","_shouldRemoveGroup","validatorsInGroup","isDefaultGroup","isValidationGroupInstance","initValidationOptions","initedOptions","synchronizeValidationOptions","validationStatus","newStatus","validationError","validationErrors","validateGroup","resetGroup","isStringOrNumber","isNullOrUndef","isInvalid","isNull","combineFrom","key$1","isLinkEventObject","EMPTY_OBJ","normalizeEventName","parentDOM","dom","insertOrAppend","newNode","nextNode","callAll","arrayFn","findChildVNode","vNode","startEdge","flags","$LI","childFlags","findDOMfromVNode","removeVNodeDOM","moveVNodeDOM","createDerivedState","nextProps","getDerivedStateFromProps","renderCheck","componentComparator","createVNode","renderComplete","setTextContent","isLastValueSameLinkEvent","lastValue","nextValue","mergeUnsetProperties","safeCall1","arg1","keyPrefix","V","childFlag","normalizeChildren","createComponentVNode","resolveComponentFlags","mergeDefaultProps","defaultHooks","mergeDefaultHooks","createTextVNode","createFragment","fragment","createVoidVNode","directClone","vNodeToClone","propsToClone","oldChildren","cloneFragment","_normalizeVNodes","currentKey","newKey","oldKey","isPrefixedKey","getFlagsForElementVnode","newChildren","newChildFlags","needsCloning","isNullKey","isPrefixed","normalizeRoot","xlinkNS","xmlNS","getDelegatedEventObject","onClick","onDblClick","onFocusIn","onFocusOut","onKeyDown","onKeyPress","onKeyUp","onMouseDown","onMouseMove","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","attachedEventCounts","attachedEvents","syntheticEvents","updateOrAddSyntheticEvent","eventsObject","$EV","attachedEvent","dispatchEvents","extendEventProperties","rootClickEvent","rootEvent","attachEventToDocument","unmountSyntheticEvent","isClick","getTargetNode","currentEvent","cancelBubble","immediatePropagationStopped","triggerEventListener","nativeListenerName","createWrappedFunction","applyValue","fnMethod","$V","newVNode","attachEvent","previousKey","previousArgs","wrapped","isCheckedType","onTextInputChange","applyValueInput","wrappedOnChange","emptywrapper","nextPropsOrEmpty","multiple","hasValue","updateChildOptions","updateChildOption","onSelectChange","applyValueSelect","mounting","multiplePropInBoolean","selectedIndex","onTextareaInputChange","applyValueTextArea","wrappedOnChange$1","domValue","processElement","addFormElementEventHandlers","inputEvents","selectEvents","onChange","textAreaEvents","isControlledFormElement","unmountRef","mountRef","lifecycle","unmount","unmountAllChildren","$UN","onComponentWillUnmount","clearDOM","removeAllChildren","patchDangerInnerHTML","lastVNode","lastHtml","__html","nextHtml","tempdom","isSameInnerHTML","patchProp","isSVG","hasControlledValue","autofocus","lastAttrValue","nextAttrValue","domStyle","patchStyle","lastEvent","nextEvent","handleSyntheticEvent","ev","wrapLinkEvent","patchEvent","setAttributeNS","mountProps","isFormElement","renderNewInput","nextInput","childContext","getChildContext","$CX","createClassComponentInstance","usesNewAPI","$N","getSnapshotBeforeUpdate","$SVG","$L","$BS","componentWillMount","$BR","pending","$PS","renderFunctionalComponent","mount","mountElement","mountClassComponentCallbacks","mountClassComponent","mountFunctionalComponent","mountFunctionalComponentCallbacks","mountText","mountArrayChildren","mountFragment","placeHolderVNode","mountPortal","documentCreateElement","childrenIsSVG","createClassMountCallback","onComponentWillMount","onComponentDidMount","createOnMountCallback","patch","nextVNode","nextFlags","newDom","lastDom","replaceChild","replaceWithNewNode","lastProps","lastPropsOrEmpty","prop$1","nextChildren","nextClassName","patchContentEditableChildren","patchChildren","nextRef","lastRef","patchElement","nextState","componentWillReceiveProps","updateClassComponent","patchClassComponent","shouldUpdate","nextHooksDefined","lastInput","onComponentShouldUpdate","onComponentWillUpdate","onComponentDidUpdate","patchFunctionalComponent","nodeValue","patchText","lastChildren","lastChildFlags","nextChildFlags","nextIsSingle","lastLen","patchFragment","lastContainer","nextContainer","patchPortal","parentVNode","replaceOneVNodeWithMultipleVNodes","patchSingleTextChild","lastLength","nextLength","aLength","bLength","outerEdge","nextPos","aEnd","bEnd","aNode","bNode","outer","aStart","bStart","aLeft","bLeft","sources","Int32Array","canRemoveWholeContent","moved","patched","seq","arrI","maxLen","lis_algorithm","patchKeyedChildrenComplex","patchKeyedChildren","lastChildrenLength","nextChildrenLength","nextChild","commonLength","patchNonKeyedChildren","force","lastState","hasSCU","shouldComponentUpdate","componentWillUpdate","snapshot","createDidUpdate","rootInput","__render","QUEUE","nextTick","microTaskPending","queueStateChanges","newState","stateKey","applyState","$F","rerender","QU","$QU","callSetStateCallbacks","pendingState","_nextProps","_nextState","_nextContext","InfernoEffectHost","lock","callEffects","effects","areObjectsEqual","firstObject","secondObject","firstObjectKeys","secondObjectKeys","BaseInfernoComponent","_pendingContext","InfernoComponent","_effects","createEffects","updateEffects","destroyEffects","InfernoWrapperComponent","vDomElement","currentClasses","addedClasses","dxClasses","removedClasses","indexInRemoved","removed","added","indexInAdded","vDomUpdateClasses","contextId","InfernoEffect","effect","dependency","destroy","currentDependency","createReRenderEffect","reRender","isSamePropsInnerHTML","dangerouslySetInnerHTML","hydrateChildren","currentNode","_M","hydrateVNode","prevVNodeIsTextNode","hydrateText","currentDom","isClass","_CI","_MCCC","_HI","_MFCC","hydrateComponent","_ME","_MP","_MR","hydrateElement","findLastDOMFromVNode","hydrateFragment","throwError","isUndefined","componentHooks","_children","arguments$1","childLen","NUMBER_STYLES","uppercasePattern","normalizeStyles","getNumberStyleValue","onAfterRender","onPreRender","mountNode","renderTemplate","$oldContainerContent","_props$model","rendered","renderTemplateContent","$actualContainerContent","oldElement","isEqual","nextModel","nextTemplate","equalityComparer","nextData","cloneObjectValue","cloneObjectProp","fullNameParts","updatePropsImmutable","currentPropsValue","prevPropsValue","nodesByEvent","CLICK_EVENT_NAME","prevented","lastFiredEvent","onNodeRemove","clickHandler","eventAlreadyFired","DXCLICK_FIRED","unsubscribeNodesDisposing","subscribeNodesDisposing","ClickEmitter","blurPrevented","activeFeedback","ACTIVE_EVENT_NAME","INACTIVE_EVENT_NAME","FeedbackEvent","_timeout","_fire","_schedule","stop","_timer","FeedbackEmitter","_active","_inactive","activeTimeout","inactiveTimeout","activeChildExists","childJustActivated","_initEvents","eventTarget","mouseEvent","deferFeedback","skipTimers","lockInactive","HOVERSTART_NAMESPACE","HOVERSTART","POINTERENTER_NAMESPACED_EVENT_NAME","HOVEREND_NAMESPACE","HOVEREND","POINTERLEAVE_NAMESPACED_EVENT_NAME","Hover","_handlerArrayKeyPath","_eventNamespace","_originalEventName","HoverStart","HoverEnd","setDefaultOptionValue","defaultValueGetter","ComponentWrapper","_shouldRaiseContentReady","validateKeyDownHandler","allowNull","twoWay","hasComponentDefaultKeyHandlers","getSupportedKeyNames","hasComponentKeyDownMethod","_viewComponent","keyDown","_this$_viewRef","_viewRef","contentReadyOptions","_getContentReadyOptions","_checkContentReadyOption","_actionsMap","viewDefaultProps","_getViewComponentDefaultProps","_propsInfo","defaultName","unwrappedProps","_this$_templateManage","addDefaultTemplates","getDefaultTemplates","optionProxy","_getUnwrappedOption","_props","_optionsWithDefaultTemplates","_componentTemplates","_createTemplateComponent","_getActionConfigsFull","_addAction","defaultKeyHandlers","_createDefaultKeyHandlers","getProps","_renderWrapper","containerNode","_isNodeReplaced","_fireContentReady","_removeWidget","_elementAttr","_attributes$attr$name","specified","updatedAttributes","isDomAttr","_storedClasses","elemStyle","getPropertyValue","defaultWidgetPropsKeys","onKeyboardHandled","widgetProps","event_options","_getAdditionalProps","_patchElementParam","_this$elementAttr$cla","_elementAttr$class","_patchOptionValues","_extractDefaultSlot","aria","_aria","prepareStyleProp","_getActionConfigs","_getAdditionalActionConfigs","_templatesInfo","templateOptions","_options$templateName","templateValue","customKeyHandlers","viewRef","actionToAdd","actionByOption","actArgs","templateOption","_model$data","buildTemplateArgs","initialHandler","IS_RENOVATED_WIDGET","$activeThemeLink","knownThemes","currentThemeName","pendingThemeName","themeClasses","ICON_CLASS","getImageSourceType","getImageContainer","ButtonWrapper","_findGroup","_clickAction","_validationGroupConfig","iconTemplate","deactivate","needValidate","submitInput","validationResult","_getSubmitAction","_createClickAction","$content","$template","$input","templateData","_templateData","themeReadyCallback","viewPortValue","viewPortChanged","initDeferred","DX_LINK_SELECTOR","DX_HAIRLINES_CLASS","ANY_THEME","defaultTimeout","THEME_MARKER_PREFIX","readThemeMarker","waitForThemeLoad","themeName","waitStartTime","intervalCleared","handleLoaded","clearInterval","isPendingThemeLoaded","setInterval","isTimeout","anyThemePending","themeMarker","resolveFullThemeName","desiredThemeName","desiredThemeParts","knownThemeName","themeData","knownThemeParts","newContext","initContext","$allThemeLinks","link","fullThemeName","processMarkup","currentThemeData","isAutoInit","_autoInit","loadCallback","_forceTimeout","themeNameParts","isMaterial","getCssClasses","pixelRatio","devicePixelRatio","$tester","isTheme","themeRegExp","isGeneric","isCompact","isWebFontLoaded","testElement","etalonFontWidth","testedFontWidth","waitWebFont","intervalId","autoInit","Icon","generalClasses","sourceType","_this$props","TemplateProp","iconClassName","IconTemplate","viewFunction","restAttributes","INKRIPPLE_CLASS","INKRIPPLE_WAVE_CLASS","INKRIPPLE_SHOWING_CLASS","INKRIPPLE_HIDING_CLASS","initConfig","useHoldAnimation","waveSizeCoefficient","isCentered","wavesNumber","durations","getDurations","showWave","hideWave","getWaves","inkRipple","getInkRipple","$currentWave","$wave","wave","hidingTimeout","hideSelectedWave","elementWidth","elementHeight","elementDiagonal","sqrt","waveSize","getWaveStyleConfig","showingTimeout","showingWaveHandler","durationCss","showingScale","hidingScale","hidingOpacity","animationDuration","InkRippleProps","freeze","InkRipple","__getterCache","getConfig","SCROLL_EVENT","SCROLL_INIT_EVENT","SCROLL_START_EVENT","SCROLL_MOVE_EVENT","SCROLL_END_EVENT","SCROLL_STOP_EVENT","SCROLL_CANCEL_EVENT","Locker","NAMESPACED_SCROLL_EVENT","_locked","_proxiedScroll","_scroll","check","TimeoutLocker","_prepare","_forget","_clearTimer","WheelLocker","_lastWheelDirection","_checkDirectionChanged","directionChange","PointerLocker","isIos","_scrollFrame","_checkFrame","ScrollEmitter","FRAME_DURATION","_pointerLocker","_wheelLocker","scrollTarget","skipCheck","_prevEventData","isScrollingEvent","_savedEventData","currentEventData","endEventDelta","velocity","velocityMultiplier","subscribeToEvent","clickEvent","scrollEvents","subscribeToDXPointerDownEvent","subscribeToDxActiveEvent","subscribeToDxInactiveEvent","subscribeToDxHoverStartEvent","subscribeToDxHoverEndEvent","subscribeToDxFocusInEvent","subscribeToDxFocusOutEvent","BaseWidgetProps","activeStateEnabled","hoverStateEnabled","ConfigContext","ConfigProvider","WidgetProps","getOwnPropertyDescriptors","_feedbackHideTimeout","_feedbackShowTimeout","addWidgetClass","Widget","widgetElementRef","hovered","setRootElementRef","activeEffect","inactiveEffect","clickEffect","focusInEffect","focusOutEffect","hoverStartEffect","hoverEndEffect","keyboardEffect","resizeEffect","windowResizeEffect","visibilityEffect","checkDeprecation","applyCssTextEffect","activeStateUnit","onActive","onInactive","onHoverStart","onHoverEnd","onDimensionChanged","onVisibilityChange","_this$_effects$","_this$_effects$2","_this$_effects$3","_this$_effects$4","_this$_effects$5","_this$_effects$6","_this$_effects$7","_this$_effects$8","_this$_effects$9","_this$_effects$10","_this$_effects$11","_this$_effects$12","_this$_effects$13","onRootElementRendered","rootElementRef","__state_argument","rtlProp","isPropDefined","onlyGlobalDefined","globalConfig","resolveRtlEnabledDefinition","resolveRtlEnabled","hidden","computedWidth","computedHeight","isFocusable","isHoverable","canBeActive","viewModel","cssClasses","shouldRenderConfigProvider","stylingModes","ButtonProps","iconPosition","stylingMode","useInkRipple","useSubmitBehavior","defaultOptionRules","createDefaultOptionRules","Button","contentRef","inkRippleRef","submitInputRef","widgetRef","submitEffect","onWidgetClick","onSubmit","_titleRegexp$exec$","_titleRegexp$exec","isValidStylingMode","inkRippleConfig","ButtonTemplate","renderText","isIconLeft","iconComponent","iconSource","buttonTemplateData","__defaultOptionRules","_wrapKeyDownHandler","_this$viewRef","_this$viewRef2","_this$viewRef3","ButtonComponent","BaseComponent","CSS_TRANSITION_EASING_REGEX","TransitionTimingFuncMap","linear","swing","ease","convertTransitionTimingFuncToEasing","cssTransitionEasing","forceName","coeffs","easingName","x1","y1","x2","y2","Cx","Bx","Ax","Cy","By","Ay","bezierX","derivativeX","polynomBezier","scrollbarWidth","horzRe","vertRe","collisionRe","scaleRe","IS_SAFARI","safari","normalizeAlign","normalizeOffset","getAlignFactor","align","inverseAlign","calculateOversize","bounds","oversize","myLocation","collisionSide","initMyLocation","atLocation","atAlign","atSize","myAlign","mySize","collisionResolvers","fit","flip","inverseData","flipfit","none","calculateScrollbarWidth","$scrollDiv","defaultPositionResult","calculatePosition","$what","of","precise","collision","normalizeCollision","boundary","boundaryOffset","scrollLeft","scrollTop","visualViewport","ofRect","getOffsetWithoutScale","windowHeight","hZoomLevel","vZoomLevel","boundaryWidth","boundaryHeight","$boundary","boundaryPosition","preciser","setScaleProperty","scale","styleAttr","stylePropIsValid","newStyleValue","styleAttributeNode","setAttributeNode","$startElement","_currentElement$getAt","_style$match","$currentElement","calculate","removeEventName","RELATIVE_VALUE_REGEX","ANIM_DATA_KEY","ANIM_QUEUE_KEY","TransitionAnimationStrategy","initAnimation","transitionProperty","setProps","cleanupWhen","transitionAnimation","finish","_finishTransition","_cleanup","_completeAnimationCallback","animate","_startAnimation","simulatedEndEventTimer","transitionEndFired","simulatedTransitionEndFired","transitionEndEventFullName","cleanup","waitForJSCompleteTimer","fx","_simulatedTransitionEndDelay","transitionDelay","transitionDuration","transitionTimingFunction","jumpToEnd","FrameAnimationStrategy","_normalizeValue","_parseTransform","frameAnimation","draw","animationFrameId","delayTimeout","_animationStep","transformString","translateData","translateString","parseTranslate","scaleData","rotateData","_calcStepValue","currentDuration","calcValueRecursively","endPropValue","getEasing","numericValue","FallbackToNoAnimationStrategy","isSynchronous","baseConfigValidator","animationType","typeMessage","isObjectConfigValidator","positionAliases","SlideAnimationConfigurator","validateConfig","positioningConfig","setupPosition","_setUpConfig","_initNewPosition","relativeValue","_getRelativeValue","FadeAnimationConfigurator","_from$opacity","_to$opacity","defaultFromOpacity","defaultToOpacity","fromOpacity","toOpacity","skipElementInitialStyles","animationConfigurators","slide","slideIn","slideOut","fade","fadeIn","fadeOut","fromScale","toScale","_getCssTransform","isStringConfigValidator","defaultJSConfig","defaultCssConfig","setupAnimationOnElement","configurator","startAnimationOnElement","isStarted","onElementAnimationComplete","stopAnimationOnElement","startTimeout","scopedRemoveEvent","createAnimation","initialConfig","defaultConfig","getAnimationConfigurator","animationStrategies","frame","noAnimation","getAnimationStrategy","subscribeToRemoveEvent","getAnimQueueData","destroyAnimQueueData","isAnimating","shiftFromAnimationQueue","queueData","executeAnimation","positionUtils","animationTypes","writeAnimQueueData","pushInAnimationQueue","hideCallback","indexOfCallback","hasCallback","_supportedKeys","hoveredElement","ignoreParentReadOnly","useResizeObserver","compareVersions","_initContentReadyAction","_innerWidgetOptionChanged","innerWidget","getOptionsFromContainer","_bindInnerWidgetOptions","optionsContainer","syncOptions","_getAriaTarget","_contentReadyAction","_toggleDisabledState","_toggleVisibility","_renderHint","_isFocusable","_renderFocusTarget","_renderContent","_renderFocusState","_attachFeedbackEvents","_attachHoverEvents","_toggleIndependentState","_renderContentImpl","_fireContentReadyAction","_detachKeyboardEvents","_resetActiveState","_toggleActiveState","_eventBindingTarget","_cleanFocusState","_attachKeyboardEvents","_attachFocusEvents","_renderAccessKey","_getActiveElement","_isFocusTarget","_findActiveTarget","_activeStateUnit","_keyboardEventBindingTarget","_refreshFocusEvent","_detachFocusEvents","_focusEventTarget","_focusInHandler","_updateFocusState","_focusOutHandler","isFocused","_toggleFocusClass","_hasFocusClass","_isFocused","_getKeyboardListeners","hasChildListeners","_keyboardListenerId","_keyboardHandler","onlyChildProcessing","keyboardListeners","_refreshFocusState","_hoverStartHandler","_hoverEndHandler","focusableSelector","_updatedHover","_hover","_findHoverTarget","$previous","newHoveredElement","setAria","_setWidgetOption","widgetOptionMap","_isReady","isReady","repaint","registerKeyHandler","currentKeys","baseZIndex","zIndexStack","baseIndex","SWATCH_CONTAINER_CLASS_PREFIX","swatchContainer","viewport","swatchClassRegex","swatchClass","viewportSwatchContainer","OVERLAY_POSITION_ALIASES","center","OVERLAY_DEFAULT_BOUNDARY_OFFSET","OverlayPositionController","visualContainer","$root","$wrapper","onPositioned","onVisualPositionChanged","restorePosition","_fixWrapperPosition","_$root","_$content","_$wrapper","_$markupContainer","_$visualContainer","_shouldRenderContentInitialPosition","_visualPosition","_initialPosition","_previousVisualPosition","updateContainer","updatePosition","updateVisualContainer","_position","fixWrapperPosition","styleWrapperPosition","shouldRestorePosition","restorePositionOnNextRender","positionProp","_normalizePosition","containerProp","swatch","_getVisualContainer","_updateVisualPositionValue","_raisePositionedEvents","_renderContentInitialPosition","positionStyle","$visualContainer","_renderBoundaryOffset","wrapperOverflow","resultPosition","previousPosition","_this$_position","_this$_props$position","_this$_props$position2","visualContainerProp","positionOf","defaultPositionConfig","_positionToObject","INNER_OVERLAY_CLASS","INVISIBLE_STATE_CLASS","OVERLAY_STACK","PREVENT_SAFARI_SCROLLING_CLASS","_proxiedDocumentDownHandler","Overlay","deferRendering","shadingColor","wrapperAttr","closeOnOutsideClick","hideOnOutsideClick","copyRootClassesToWrapper","_ignoreCopyRootClassesToWrapperDeprecation","_ignoreElementAttrDeprecation","_ignorePreventScrollEventsDeprecation","onShowing","onShown","onHiding","onHidden","contentTemplate","innerOverlay","hideTopOverlayHandler","hideOnParentScroll","preventScrollEvents","propagateOutsideClick","ignoreChildEvents","_checkParentVisibility","_logDeprecatedPreventScrollEventsInfo","_initActions","_initHideOnOutsideClickHandler","_initTabTerminatorHandler","_customWrapperClass","_initInnerOverlayClass","_toggleViewPortSubscription","_initHideTopOverlayHandler","_parentsScrollSubscriptionInfo","_hideOnParentsScrollHandler","warnPositionAsFunction","_hideTopOverlayHandler","_getActionsList","_actions","actions","_documentDownHandler","_renderWrapperAttributes","_initPositionController","_showAnimationProcessing","_stopAnimation","isAttachedTarget","isInnerOverlay","_shouldHideOnOutsideClick","_outsideClickHandler","_isTopOverlay","overlayStack","_overlayStack","tabbableElements","_findTabbableBounds","_zIndexInitValue","_this2","_viewPortChangeHandle","_viewPortChangeHandler","_renderVisibilityAnimate","_show","_hide","_getAnimationConfig","_toggleBodyScroll","_animateShowing","_this$_getAnimationCo","_showAnimation$start","_showAnimation$comple","_this3","showAnimation","_normalizeAnimation","startShowAnimation","completeShowAnimation","_animate","_isAnimationPaused","_toggleSafariScrolling","_showingDeferred","_processShowingHidingCancel","cancelArg","applyFunction","cancelFunction","shouldCancel","_parentHidden","_isParentHidden","_currentVisible","_isHidingActionCanceled","_updateZIndexStackPosition","openingHandled","showingArgs","_renderVisibility","_isShowingActionCanceled","_moveFromContainer","_stopShowTimer","_asyncShowTimeout","showHideConfig","_animateHiding","_this$_getAnimationCo2","_hideAnimation$start","_hideAnimation$comple","_this4","hideAnimation","startHideAnimation","completeHideAnimation","_this4$_actions","_hideAnimationProcessing","_hidingDeferred","hidingArgs","_forceFocusLost","_toggleShading","_toggleSubscriptions","completeCallback","startCallback","_checkContainerExists","_moveToContainer","_renderGeometry","pushToStack","_zIndex","zIndexPool","_toggleTabTerminator","_this5","_proxiedTabTerminatorHandler","_tabKeyHandler","enabled","$elements","elementsCount","$firstTabbable","$lastTabbable","isTabOnLast","isShiftTabOnFirst","isEmptyTabList","isOutsideTarget","$focusElement","_toggleHideTopOverlayCallback","_toggleHideOnParentsScrollSubscription","hideTopOverlayCallback","needSubscribe","_this$_parentsScrollS","scrollEvent","prevTargets","closeOnScroll","$parents","_hideOnParentScrollTarget","closeHandled","_appendContentToElement","shouldDeferRendering","_contentAlreadyRendered","$parent","isHidden","whenContentRendered","contentTemplateOption","noModel","_toggleWrapperScrollEventsSubscription","_getPositionControllerConfig","isWheel","isMouseMove","isScrollByWheel","cancelable","$wrapperContainer","uiErrors","_renderGeometryImpl","_renderPosition","positionContent","_isAllWindowCovered","$body","isIosSafari","isAllWindowCovered","isScrollingPrevented","shouldPreventScrolling","shouldEnableScrolling","_cachedBodyScrollTop","_renderWrapperDimensions","positionWrapper","isVisualContainerWindow","wrapperWidth","wrapperHeight","isRenovated","_deferShowTimer","_this$_animateDeferre","_animateDeferred","_this$_animateDeferre2","showing","animateDeferred","forceStopAnimation","ZIndex","CollectionItem","_rawData","$placeholder","_watchers","_renderWatchers","_startWatcher","_renderDisabled","_renderVisible","exprGetter","watcher","filteredCallback","forcibleWatcher","_dirty","setDataField","_updateOwnerFocus","ownerComponent","_resetItemFocus","HOLD_EVENT_NAME","_startTimer","holdTimeout","_holdTimer","_touchWasMoved","_stopTimer","CONTEXTMENU_NAMESPACE","CONTEXTMENU_NAMESPACED_EVENT_NAME","HOLD_NAMESPACED_EVENT_NAME","holdEvent","CONTEXTMENU_EVENT_NAME","ContextMenu","_contextMenuHandler","_holdHandler","_fireContextMenu","ITEM_CLASS","CONTENT_CLASS_POSTFIX","ITEM_CONTENT_PLACEHOLDER_CLASS","TEMPLATE_WRAPPER_CLASS","ITEM_PATH_REGEX","FOCUS_UP","FOCUS_DOWN","FOCUS_LEFT","FOCUS_RIGHT","FOCUS_LAST","FOCUS_FIRST","CollectionWidget","_moveFocus","space","_enterKeyHandler","leftArrow","rightArrow","upArrow","downArrow","pageUp","pageDown","$itemElement","_getItemData","_itemEventHandlerByHandler","_itemClickHandler","selectOnFocus","loopItemFocus","itemTemplate","onItemRendered","onItemClick","onItemHold","itemHoldTimeout","onItemContextMenu","onFocusedItemChanged","encodeNoDataText","_itemAttributes","itemTemplateProperty","focusOnSelectedItem","focusedElement","disabledExpr","visibleExpr","_compileDisplayGetter","_cleanRenderedItems","_displayGetter","_initItemsFromMarkup","_initDefaultItemTemplate","_getFieldsMap","_prepareDefaultItemTemplate","_getBindableFields","rawItems","_prepareItemTemplate","_dataSourceOptions","_renderedItemsCount","$focusedElement","_setFocusedItem","$activeItem","_getActiveItem","_updateFocusedItemState","activeElements","$newTarget","$items","_getAvailableItems","_prevItem","_nextItem","_getVisibleItems","$itemElements","_itemElements","targetIndex","$last","$item","loop","$first","_selectFocusedItem","selectItem","needCleanItemId","_refreshActiveDescendant","_refreshItemId","_updateParentActiveDescendant","getFocusedItemId","_isDisabled","isTargetDisabled","_findItemElementByItem","itemElements","_itemDataKey","_getIndexByItem","_itemOptionChanged","ItemClass","_refreshItem","_itemIndexKey","_renderItem","itemPath","_renderEmptyMessage","_createItemRenderAction","_attachHoldEvent","_attachContextMenuEvent","_loadNextPage","_expectNextPageLoading","_startIndexForAppendedItems","_expectLastItemLoading","_forgetNextPageLoading","_dataSourceChangedHandler","newItems","_shouldAppendItems","_refreshContent","_prepareContent","_dataSourceLoadErrorHandler","_allowDynamicItemsAppend","_cleanItemContainer","_inkRipple","_itemContainer","_itemFocusTimeout","_itemClass","_itemContentClass","_selectedItemClass","_itemResponseWaitClass","_itemSelector","_attachClickEvent","_getPointerEvent","itemSelector","clickEventNamespace","clickEventName","pointerEventNamespace","pointerAction","_itemPointerDownHandler","_itemDXEventHandler","_itemFocusHandler","$closestItem","$closestFocusable","_closestFocusable","_forcePointerDownFocus","$itemContainer","_getHoldTimeout","_itemHoldHandler","_shouldFireHoldEvent","contextMenuEventName","_itemContextMenuHandler","_shouldFireContextMenuEvent","_renderItems","$itemToReplace","_index$item","$itemFrame","_renderItemFrame","_setElementData","_attachItemClickEvent","$itemContent","_getItemContent","renderContentPromise","_renderItemContent","contentClass","defaultTemplateName","_postprocessRenderItem","itemContent","_executeItemRenderAction","itemTemplateName","_getItemTemplateName","_addItemContentClasses","$templateResult","_createItemByTemplate","_renderItemContentByNode","$node","_appendItemToContainer","_itemOptions","displayValue","_getItemRenderAction","_itemRenderAction","category","templateProperty","renderArgs","_onItemTemplateRendered","_emptyMessageContainer","hideNoData","_$noData","dxEvent","handlerOptionName","actionArgs","actionConfig","_itemEventHandler","initiator","_itemEventHandlerImpl","_closestItemElement","_extendActionArgs","_getSummaryItemsWidth","_focusedItemId","itemsContainer","CollectionWidgetItem","EditStrategy","collectionWidget","_collectionWidget","getIndexByItemData","getItemDataByIndex","getKeysByItems","getItemsByKeys","itemsGetter","getKeyByIndex","resultIndex","_denormalizeItemIndex","_equalKeys","_isKeySpecified","beginCache","endCache","getIndexByKey","getNormalizedIndex","_isNormalizedItemIndex","_isItemIndex","_normalizeItemIndex","_isNode","_getNormalizedItemIndex","getIndex","getItemElement","_getItemByNormalizedIndex","normalizedItemIndex","deleteItemAtIndex","itemPlacementFunc","movingIndex","destinationIndex","_itemsFromSameParent","moveItemAtIndexToIndex","PlainEditStrategy","_getPlainItems","movedItemData","SelectionStrategy","_setOption","_clearItemKeys","addedItemKeys","removedItemKeys","addedItems","removedItems","selectedItems","selectedItemKeys","onSelectionChanged","equalByReference","preserve","isDeselect","isSelectAll","remoteFilter","_removeTemplateProperty","localFilter","filterLength","encodeURI","needLoadAllData","maxFilterLengthInRequest","dataFields","filteredItems","dataQuery","keyHashIndices","isItemSelected","plainItems","dataFilter","ignoreDisabledItems","selectedItemsLength","disabledItemsLength","getSelectableItems","_isAnyItemSelected","hasSelectedItems","hasUnselectedItems","getItemData","isSelectableItem","isItemKeySelected","DeferredStrategy","_loadFilteredData","selectionFilter","_addSelectionFilter","removeSelectedItem","addSelectedItem","keyField","_getKeyExpr","_normalizeKey","skipFilter","_getFilterByKey","filterString","subFilter","_findSubFilter","filterOperator","filters","filterItem","_selectionFilter","currentFilter","currentOperation","needAddFilter","_denormalizeFilter","removedIndex","_removeSameFilter","filterIndex","_isOnlyNegativeFiltersLeft","isKeyOperatorsAfterRemoved","_isKeyFilter","_hasKeyFiltersOnlyStartingFromIndex","_addFilterOperator","_normalizeFilter","_isSimpleKeyFilter","inverted","_removeFilterByIndex","_filterIndex","_isLastSubFilter","componentFilter","getKeyWrapper","getKey","getSameNewByOld","oldItem","newIndexByKey","SelectionFilterCreator","selectedItemKeyHashesMap","getLocalFilter","keyGetter","equalKeys","functionFilter","getExpr","filterExpr","filterExprPart","getFilterForPlainKey","itemKeyValue","currentKeyExpr","getCombinedFilter","dataSourceFilter","forceCombinedFilter","combinedFilter","selectedKeyHashesMap","normalizedKeys","normalizeKeys","StandardStrategy","_initSelectedItemKeyHash","keyIndicesToRemoveMap","isBatchDeselect","_batchRemoveSelectedItems","updateSelectedItemKeyHash","getSelectedItems","selectionFilterCreator","deselectedItems","internalKeys","setSelectedItems","allowNullValue","_this$_lastLoadDeferr","_lastLoadDeferred","oldRequestItems","updatedKeys","isDeselectAll","multiSelectEnabled","_isMultiSelectEnabled","lastRequestData","_lastRequestData","_shouldMergeWithLastRequest","oldKeys","newKeys","isKeysEqual","_concatRequestsItems","_this$_lastRequestDat","_this$_lastRequestDat2","_requestInProgress","_collectLastRequestData","_updateKeysByLastRequestData","_loadSelectedItemsCore","_loadSelectedItems","_preserveSelectionUpdate","_replaceSelectionUpdate","disabledItemKeys","_getKeyHash","_indexOfSelectedItemKey","ignoreIndicesMap","indices","_getSelectedIndexByKey","_getSelectedIndexByHash","currentKeyIndex","currentKeyHash","currentKeyIndices","keyIndices","_shiftSelectedKeyIndices","oldSelectedKeys","oldSelectedItems","checkPending","_this$_lastRequestDat3","_updateAddedItemKeys","_updateRemovedItemKeys","_isItemSelectionInProgress","visibleOnly","_getVisibleSelectAllState","_getFullSelectAllState","getSelectedItemKeys","Selection","selectedKeys","_selectionStrategy","deferredStrategy","standardStrategy","_focusedItemIndex","filterIsChanged","_keys","setFocusOnly","_this$options$allowLo","_this$options","isSelectedItemsChanged","indexOffset","focusedItemNotInLoadedRange","shiftFocusedItemNotInLoadedRange","itemIsNotInLoadedRange","loadIndex","allowLoadByRange","_shiftFocusedItemIndex","isSelectable","isDataItem","itemKey","changeItemSelectionWhenShiftKeyInVirtualPaging","changeItemSelectionWhenShiftKeyPressed","_resetItemSelectionWhenShiftKeyPressed","isSelected","isItemDataSelected","clearSelectedItems","_removeSelectedItem","_addSelectedItem","_setSelectedItems","getLoadOptions","itemIndexStep","startIndex","indexOffsetDefined","focusedItem","focusedData","focusedKey","isFocusedItemSelected","isOnePage","_resetFocusedItemIndex","_onePageSelectAll","getSelectAllState","loadSelectedItemsWithFilter","ITEM_DELETING_DATA_KEY","indexExists","BaseCollectionWidget","selectedItem","selectionMode","selectionRequired","selectByClick","onItemReordered","onItemDeleting","onItemDeleted","_userOptions","_initEditStrategy","_initKeyGetter","_initSelectionModule","_getKeysByItems","_editStrategy","_getItemsByKeys","_getKeyByIndex","_getIndexByKey","_getIndexByItemData","_getCombinedFilter","_nullValueSelectionSupported","_selection","_updateSelectedItems","_getItemsCount","_dataController$loadO","customQueryParams","itemsCount","Strategy","_getSelectedItemIndices","_rendering","_syncSelectionOptions","_normalizeSelectedItems","_rendered","byOption","_chooseSelectOption","selectedItemIndex","setSelection","isOptionDefined","_compareKeys","newSelection","currentSelection","normalizedSelection","itemSelectPromise","_this$_itemSelectHand","_itemSelectHandler","_itemSelectPromise","unselectItem","_selectedItemElement","_isItemSelected","_processSelectableItem","_setAriaSelectionAttribute","selectionChangePromise","_selectionChangePromise","normalizedIndex","addedSelection","removedSelection","_addSelection","_removeSelection","_updateSelection","_fireSelectionChangeEvent","_clearSelectedItems","_waitDeletingPrepare","deletingActionArgs","deletePromise","deletePromiseExists","deletePromiseResolved","argumentsSpecified","shouldDelete","_deleteItemFromDS","disabledState","dataStore","_tryRefreshLastPage","_refreshLastPage","_updateSelectionAfterDelete","deselect","_updateIndicesAfterIndex","_simulateOptionChange","_deleteItemElementByIndex","_afterItemElementDeleted","deletedActionArgs","changingOption","deleteItem","itemResponseWaitClass","reorderItem","toItemElement","$movingItem","$destinationItem","fromIndex","toIndex","AsyncCollectionWidget","CollectionWidgetEdit","_deferredItems","renderContentDeferred","itemDeferred","_postProcessRenderItems","_renderItemsAsync","TOOLBAR_CLASS","TOOLBAR_BEFORE_CLASS","TOOLBAR_AFTER_CLASS","TOOLBAR_LABEL_CLASS","TOOLBAR_COMPACT_CLASS","TEXT_BUTTON_MODE","ToolbarBase","rawModel","_data$options","_data$options2","_data$options$styling","_data$options3","_data$options$type","menuItem","renderAs","grouped","useFlatButtons","useDefaultButtons","_$toolbarItemsContainer","_arrangeItems","_applyCompactMode","_renderToolbar","_renderSections","_updateDimensionsInMaterial","section","sectionClass","_elementWidth","_$centerSection","beforeRect","_$beforeSection","afterRect","_$afterSection","_alignCenterSection","$label","$section","labelOffset","widthBeforeSection","widthAfterSection","elemsAtSectionWidth","freeSpace","sectionMaxWidth","_alignSection","labelPaddings","isRTL","leftRect","rightRect","centerRect","labels","_getCurrentLabelsPaddings","currentWidth","_getCurrentLabelsWidth","_alignSectionLabels","expanding","getRealLabelWidth","currentLabelWidth","labelMaxWidth","possibleLabelWidth","itemContainer","$after","_item$location","_item$text","itemHasText","_group$location","groupItems","_renderGroupedItems","_getToolbarItems","_waitParentAnimationTimeout","runCheck","readyToResolve","$labels","ResizeObserverMock","observe","unobserve","disconnect","ResizeObserverSingleton","ResizeObserver","_callbacksMap","_observer","_this$_callbacksMap$g","PopupPositionController","fullScreen","forceApplyBindings","dragOutsideBoundary","dragAndResizeArea","_$dragResizeContainer","_updateDragResizeContainer","_fullScreenEnabled","_fullScreenDisabled","_this$_props$forceApp","_this$_props","_getDragResizeContainer","overflowManagerMock","setOverflow","restoreOverflow","createBodyOverflowManager","isIosDevice","prevSettings","overflowX","overflowY","scrollBarWidth","computedBodyPaddingRight","setBodyPaddingRight","propertyInKebabCase","POPUP_CLASS","POPUP_WRAPPER_CLASS","DISABLED_STATE_CLASS","POPUP_TITLE_CLASS","POPUP_BOTTOM_CLASS","ALLOWED_TOOLBAR_ITEM_ALIASES","IS_OLD_SAFARI","HEIGHT_STRATEGIES","static","Popup","_this$_drag","_drag","moveUp","_this$_drag2","moveDown","_this$_drag3","moveLeft","_this$_drag4","moveRight","showTitle","titleTemplate","onTitleRendered","enableBodyScroll","resizeEnabled","toolbarItems","showCloseButton","bottomTemplate","useDefaultToolbarButtons","useFlatToolbarButtons","autoResizeEnabled","currentTheme","_iosAnimation","_androidAnimation","_device","popupWrapperClassExternal","popupWrapperClasses","_createBodyOverflowManager","_updateResizeCallbackSkipCondition","_$popupContent","_toggleContentScrollClass","$overlayContent","isFullscreen","_toggleFullScreenClass","_bodyOverflowManager","_contentResizeHandler","_shouldSkipContentResize","shouldOnlyReposition","_doesShowAnimationChangeDimensions","_animation$show","doesShowAnimationChangeDimensions","_areContentDimensionsRendered","_observeContentResize","shouldObserve","contentElement","resizeObserverSingleton","_entry$contentBoxSize","_this$_renderedDimens3","_this$_renderedDimens4","_this$_renderedDimens","_this$_renderedDimens2","contentBox","contentBoxSize","inlineSize","_renderedDimensions","blockSize","contentRect","_renderTitle","_renderResize","_renderBottom","_$title","$title","_renderTemplateByType","_renderDrag","_executeTitleRenderAction","_hasCloseButton","_toggleAriaLabel","_this$_$title","titleId","additionalToolbarOptions","toolbarOptions","_getToolbarName","$toolbar","$titleElement","_getTitleRenderAction","titleElement","_titleRenderAction","_createTitleRenderAction","_getCloseButton","_getCloseButtonRenderer","$button","_createToolbarItemAction","toolbarsItems","_toolbarItemClasses","isShortcut","shortcut","getButtonPlace","_getToolbarItemByAlias","isLTROrder","_getLocalizationKey","itemType","itemConfig","itemClass","$toolbarItem","clickAction","_$bottom","$bottom","compactMode","_toggleClasses","isNativeScrollingEnabled","_getDragTarget","topToolbar","shouldRepeatAnimation","isDimensionChange","_cacheDimensions","_resetContentHeight","_setContentHeight","$dragTarget","_resizable","_resizeEndHandler","resizeHandled","overlayContent","currentHeightStrategyClass","_chooseHeightStrategy","_getHeightCssStyles","_setHeightClasses","_heightStrategyChangeOffset","popupVerticalPaddings","isAutoWidth","_isAutoHeight","cssStyles","contentMaxHeight","contentMinHeight","popupHeightParts","_splitPopupHeight","toolbarsAndVerticalOffsetsHeight","footer","contentVerticalOffsets","popupVerticalOffsets","contentHeight","maxHeightValue","addOffsetToMaxHeight","minHeightValue","addOffsetToMinHeight","currentClass","excessClasses","bottomToolbar","_renderFullscreenWidthClass","refreshPosition","_this$_resizable2","_this$_resizable","shouldRenderGeometry","DEFAULT_BUTTON","DX_DIALOG_CLASSNAME","DX_DIALOG_WRAPPER_CLASSNAME","DX_DIALOG_ROOT_CLASSNAME","DX_DIALOG_CONTENT_CLASSNAME","DX_DIALOG_MESSAGE_CLASSNAME","DX_DIALOG_BUTTONS_CLASSNAME","DX_DIALOG_BUTTON_CLASSNAME","DX_BUTTON_CLASSNAME","_options$title","getViewport","isMessageHtmlDefined","messageHtml","messageId","$message","popupToolbarItems","buttons","popupInstance","$firstButton","popupOptions","DataExpressionMixin","_dataExpressionDefaultOptions","_initDataExpressions","_compileValueGetter","_initDynamicTemplates","_itemsToDataSource","_displayGetterExpr","_valueGetter","_valueGetterExpr","_loadValue","_unwrappedValue","_isValueEquals","_loadValueDeferred","_rejectValueLoading","_this$_loadValueDefer","shouldSkipCallback","_getCurrentValue","_getItemKey","dataSourceKey","_compareValues","_compareByCompositeKey","_compareByKey","isObjectType","unwrapObservable","valueKey1","valueKey2","_setCollectionWidgetItemTemplate","_setCollectionWidgetOption","_getCollectionKeyExpr","_dataExpressionOptionChanged","INVALID_MESSAGE","ValidationMessage","_renderInnerHtml","positionSide","contentId","updateMaxWidth","_ensureMessageNotEmpty","_updatePositionByTarget","_toggleModeClass","_updateContentId","_textMarkup","_getTextMarkup","shouldShowMessage","_toggleVisibilityClasses","validationErrorMessage","_err$message","targetWidth","_getPositionsArray","rtlSide","componentOffset","positions","INVALID_MESSAGE_AUTO","VALIDATION_TARGET","VALIDATION_STATUS_INVALID","ALLOWED_STYLING_MODES","VALIDATION_MESSAGE_KEYS_MAP","validationMessageMode","validationMessagePosition","validationMessageOffset","validationBoundary","Editor","showValidationMessageTimeout","validationRequest","onValueChanged","validationTooltipOptions","_showValidationMessage","_createValueChangeAction","_valueChangeAction","_suppressValueChangeAction","_valueChangeActionSuppressed","_resumeValueChangeAction","_toggleReadOnlyState","_setSubmitElementName","_renderValidationState","_raiseValueChangeAction","_valueChangeArgs","_valueChangeEventInstance","_saveValueChangeEvent","isValidationMessageShownOnFocus","_canValueBeChangedByClick","_this$_validationMess","$validationMessageWrapper","_validationMessage","_getStylingModePrefix","_renderStylingMode","allowedStylingClasses","stylingModeClass","defaultOptionValue","platformOptionValue","_getValidationErrors","_disposeValidationMessage","_$validationMessage","_toggleValidationClasses","validationMessageContentId","_getValidationMessageTarget","_getValidationMessagePosition","_toggleBackspaceHandler","isReadOnly","$eventTarget","EventsEngine","$submitElement","_getSubmitElement","_setValidationMessageOption","_this$_validationMess2","_hasActiveElement","_this$_validationMess3","editor","isEditor","RADIO_BUTTON_CLASS","RADIO_BUTTON_ICON_CLASS","RadioCollection","$radio","$radioContainer","RadioGroup","layout","_$submitElement","_renderSubmitElement","_renderRadios","_renderLayout","_getItemValue","isNullSelectable","shouldSelectValue","_getSelectedItemKeys","_setSelection","_setSubmitValue","_updateItemsSize","_areRadiosCreated","$radios","_radios","scrollingEnabled","submitValue","_this$_radios","_this$_radios2","BUTTON_GROUP_CLASS","BUTTON_GROUP_ITEM_CLASS","BUTTON_GROUP_ITEM_HAS_WIDTH","ButtonCollection","_prepareItemStyles","_getBasicButtonOptions","_hasCustomTemplate","ButtonGroup","buttonTemplate","_createItemClickAction","_itemClickAction","_renderButtons","$buttons","_buttonsCollection","monthGetter","monthSetter","monthLimits","getLimits","newDay","PATTERN_GETTERS","isPM","valueLength","maxLimitLength","renderDateParts","sections","_loop","isStub","limits","forcedPattern","dM","getAmPm","DATE_COMPONENTS","TIME_COMPONENTS","ONE_DAY","SUPPORTED_FORMATS","ONE_MINUTE","ONE_YEAR","MIN_DATEVIEW_DEFAULT_DATE","MAX_DATEVIEW_DEFAULT_DATE","FORMATS_INFO","getStandardPattern","standardPattern","FORMATS_MAP","SUBMIT_FORMATS_MAP","toStandardDateFormat","fromStandardDateFormat","getMaxMonthDay","mergeDates","formatInfo","componentInfo","DATE_COMPONENTS_INFO","getLongestCaptionIndex","captionArray","longestIndex","longestCaptionLength","getLongestDate","getStringFormat","longestDate","normalizeTime","setSeconds","formatDate","startValue","endValue","TextEditorButton","$placeMarker","_isRendered","_create","_attachEvents","_addPlaceMarker","_shouldRender","DropDownButton","_editor$_shouldCallOp","_shouldCallOpenHandler","_openHandler","_getOptions","_addToContainer","_legacyRender","_addTemplate","$editor","_isSameTemplate","isFocusingOnCaretChange","getCaret","selectionStart","selectionEnd","setCaret","EMPTY_CHAR","BaseMaskRule","_next","rawValue","_prepareHandlingArgs","_config$str","_config$start","_config$length","handlingProperty","isAccepted","adjustedCaret","isForwardDirection","_adjustedForward","_adjustedBackward","EmptyMaskRule","MaskRule","maskChar","rest","_tryAcceptChar","_accepted","_isAllowed","acceptedChar","fullText","_isAccepted","_isValid","allowedChars","StubMaskRule","hasValueProperty","nextArgs","pointerDown","STATE_INVISIBLE_CLASS","ClearButton","_isClearButtonVisible","editorName","_clearValueHandler","CUSTOM_BUTTON_HOVERED_CLASS","CustomButton","_prepareIntegrationOptions","isUpdated","checkNamesUniqueness","existingNames","TextEditorButtonCollection","defaultButtonsInfo","buttonInfo","isStringButton","isDefaultButton","predefinedButtonsInfo","isPredefinedButtonName","defaultButtonInfo","Ctor","buttonsInfo","targetLocation","$buttonsContainer","_compileButtonInfo","_createButton","buttonName","LOADINDICATOR_SEGMENT_CLASS","LoadIndicator","indicatorSrc","_animatingSegmentCount","_animatingSegmentInner","viaImage","_renderIndicatorContent","_renderMarkup","_renderMarkupForImage","_renderMarkupForAnimation","animatingSegmentInner","_$indicator","$segment","_updateContentSizeForAnimation","minDimension","_removeMarkupForAnimation","_removeMarkupForImage","TEXTEDITOR_LABEL_CLASS","TEXTEDITOR_WITH_LABEL_CLASS","TEXTEDITOR_WITH_FLOATING_LABEL_CLASS","TEXTEDITOR_WITH_BEFORE_BUTTONS_CLASS","TextEditorLabel","mark","containsButtonsBefore","beforeWidth","_id","_toggleMarkupVisibility","_$before","_$labelSpan","_$label","_$after","_updateMark","_updateText","_updateBeforeWidth","_updateMaxWidth","_updateEditorBeforeButtonsClass","_updateEditorLabelClass","labelClass","beforeButtonsClass","TEXTEDITOR_INPUT_CLASS","TEXTEDITOR_PLACEHOLDER_CLASS","TEXTEDITOR_VALIDATION_PENDING_CLASS","EVENTS_LIST","CONTROL_KEYS","TextEditorLabelCreator","checkButtonsOptionType","TextEditorBase","_buttonCollection","_getDefaultButtons","_$beforeButtonsContainer","_$afterButtonsContainer","_labelContainerElement","spellcheck","showClearButton","valueChangeEvent","placeholder","inputAttr","onInput","onCut","onCopy","onPaste","onEnterKey","displayValueFormatter","showValidationMark","labelMode","labelMark","_input","_inputWrapper","_buttonsContainer","_isControlKey","_updateButtonsStyling","_renderInput","_renderInputType","_renderPlaceholder","_renderProps","_renderValue","_renderLabel","_refreshValueChangeEvent","_renderEvents","_renderEnterKeyAction","_renderEmptinessEvent","_$buttonsContainer","_$textEditorContainer","_$textEditorInputContainer","_createInput","_renderButtonContainers","_getInputContainer","_renderPendingIndicator","$inputContainer","$indicatorElement","_pendingIndicator","_disposePendingIndicator","_showValidMark","renderBeforeButtons","renderAfterButtons","_cleanButtonContainers","_this$_$beforeButtons","_this$_$afterButtonsC","clean","_unobserveLabelContainerResize","_applyInputAttributes","inputAttrName","customAttributes","inputAttributes","_getDefaultAttributes","defaultAttributes","autocomplete","_updateButtons","updateButtons","buttonInstance","getButton","_renderInputValue","_renderDisplayText","_toggleEmptinessEventHandler","_isValueValid","validity","valid","_toggleEmptiness","_togglePlaceholder","_toggleSpellcheckState","_toggleTabIndex","_readOnlyPropValue","_getLabelContainer","_getLabelContainerWidth","_getLabelBeforeWidth","buttonsBeforeWidth","_updateLabelWidth","_label","updateBeforeWidth","_getFieldElement","_setFieldAria","_this$_$placeholder","getId","_$placeholder","labelledby","labelConfig","_renderPlaceholderMarkup","_attachPlaceholderEvents","placeholderAttributes","startEvent","_placeholder","_clearValue","_refreshEvents","_keyPressHandler","_keyDownHandler","isCtrlEnter","isNewValue","_getValueChangeEventOptionName","_renderValueChangeEvent","keyPressEvent","_renderValueEventName","keyDownEvent","_valueChangeEventHandler","_cleanValueChangeEvent","valueChangeNamespace","textChangeNamespace","_isInput","_preventNestedFocusEvent","shouldPrevent","_isNestedTarget","_focusClassTarget","formattedValue","_enterKeyAction","_enterKeyHandlerUp","_updateValue","updateText","updateMark","updateMode","updateContainsButtonsBefore","_setInputType","MASK_EVENT_NAMESPACE","DELETE_INPUT_TYPES","HISTORY_INPUT_TYPES","EVENT_NAMES","getEmptyString","MaskStrategy","newCaret","_caret","_editorOption","_editorInput","_changeHandler","_previousText","_prevCaret","_editorCaret","_handleHistoryInputEvent","_handleBackwardDeleteInputEvent","currentCaret","_clearSelectedText","_autoFillHandler","_handleInsertTextInputEvent","_updateEditorMask","setForwardDirection","_adjustCaret","setBackwardDirection","_this$_prevCaret","_this$_prevCaret2","_isAutoFill","_this$_prevCaret$star","_this$_prevCaret3","textLength","processedCharsCount","_handleChain","_displayMask","correction","_showMaskPlaceholder","_maskRulesChain","_caretTimeout","_maskKeyHandler","_hasSelection","_handleKey","selectedText","getClipboardText","_clearDragTimer","_dragTimer","_convertToValue","pastedText","restText","accepted","inputVal","_inputHandlerTimer","_validateMask","_input$matches","handlerName","_attachChangeEventHandler","stubCaret","caretUtils","TEXTEDITOR_MASKED_CLASS","FORWARD_DIRECTION","buildInMaskRules","isLiteralChar","isSpaceChar","C","A","isNumericChar","TextEditorMask","mask","maskRules","maskInvalidMessage","useMaskedValue","showMaskMode","keyHandlerMap","del","_maskStrategy","parentHandler","_$hiddenElement","_initMaskStrategy","_renderHiddenElement","_attachMouseWheelEventHandlers","_onMouseWheel","mouseWheelAction","_useMaskBehavior","_attachDropEventHandler","_renderMask","_removeHiddenElement","detachEvents","attachEvents","_parseMask","_renderMaskedValue","_suppressCaretChanging","inputValue","_changedValue","_maskRules","_parseMaskRule","currentMaskChar","isEscapedChar","_getMaskRule","ruleConfig","rulePattern","_normalizeChainArguments","chainArgs","_isMaskedValueMode","_replaceSelectedText","_shouldShowMask","submitElementValue","_getPreparedValue","_isControlKeyFired","handledCount","_textValue","_replaceMaskCharWithEmpty","keyHandler","_handleSelection","previousText","raiseInputEvent","_direction","_handleKeyChain","_moveCaret","emptyChars","chars","_tryMoveCaretBackward","caretStart","maskRuleIndex","_typingDirection","editorSpecific","_updateHiddenElement","_updateMaskOption","_processEmptyMask","ignoreKeys","SEARCHBOX_CLASS","TextBox","TextEditor","_showClearButton","maxLength","_renderSearchMode","_toggleMaxLengthProp","_getMaxLength","_renderSearchIcon","_$searchIcon","$searchIcon","labelBeforeWidth","_onKeyDownCutOffHandler","actualMaxLength","_cutOffExtraChar","_onChangeCutOffHandler","textInput","getElementWidth","getSizeValue","DROP_DOWN_EDITOR_INPUT_WRAPPER","DROP_DOWN_EDITOR_OVERLAY","isIOs","DropDownEditor","$focusableElement","_getLastPopupElement","_getFirstPopupElement","_validatedOpening","onOpened","onClosed","opened","acceptCustomValue","applyValueMode","dropDownButtonTemplate","fieldTemplate","openOnFieldClick","showDropDownButton","dropDownOptions","popupPosition","_getDefaultPopupPosition","onPopupInitialized","applyButtonText","cancelButtonText","buttonsLocation","useHiddenSubmitElement","_initVisibilityActions","_initPopupInitializedAction","_updatePopupPosition","_openAction","_closeAction","_popupInitializedAction","_renderOpenHandler","_attachFocusOutHandler","_renderOpenedState","_createPopup","_wrapInput","_setDefaultAria","_$container","haspopup","_isEditable","_getFieldTemplate","_renderField","_renderTemplatedField","_fieldRenderData","_refreshButtonsContainer","_detachWrapperContent","$templateWrapper","_integrateInput","_attachWrapperContent","_this$_$submitElement","beforeButtonsContainerParent","afterButtonsContainerParent","_this$_$submitElement2","_refreshEmptinessEvent","dropDownButton","$icon","$inputWrapper","_getInputClickHandler","_openOnFieldClickAction","_detachFocusOutEvents","_isTargetOutOfComponent","popupWrapper","_$popup","_executeOpenAction","_focusInput","_toggleOpenState","_resetCaretPosition","ignoreEditable","inputElement","caretPosition","_getControlsAria","_popup","_popupContentId","_setPopupOption","arias","controls","_renderPopup","_renderPopupContent","popupConfig","_popupConfig","_popupShowingHandler","_popupShownHandler","_popupHidingHandler","_popupHiddenHandler","contentReady","_contentReadyHandler","_setPopupContentId","$popupContent","_popupInitializedHandler","_ignoreFunctionValueDeprecation","_closeOutsideDropDownHandler","_getPopupToolbarItems","_popupPositionedHandler","_wrapperClassExternal","popup","_updatePopupWidth","_e$position","_e$position$v","$popupOverlayContent","isOverlayFlipped","shouldIndentForLabel","_getValidationMessagePositionSide","myTop","animationPosition","popupTop","$dropDownButton","isInputClicked","isDropDownButtonClicked","_popupToolbarItemsConfig","_popupElementTabHandler","_popupElementEscHandler","_popupButtonInitializedHandler","buttonsConfig","_applyButtonHandler","_cancelButtonHandler","_applyButtonsLocation","resultConfig","_popupOptionChanged","optionsKeys","_this$_popup","SWIPE_START_EVENT","SWIPE_EVENT","SWIPE_END_EVENT","STRATEGIES","defaultItemSizeFunc","getBounds","calcOffsetRatio","_itemSizeFunc","isFastSwipe","endEventData","FAST_SWIPE_SPEED_LIMIT","_tickData","SwipeEmitter","TICK_INTERVAL","elastic","_getStrategy","_defaultItemSizeFunc","moveEventData","offsetRatio","isFast","startOffset","_calcTargetOffset","DX_SWIPEABLE","ACTION_TO_EVENT_MAP","onStart","swipeEventStart","onUpdated","swipeEventSwipe","onEnd","swipeEventEnd","onCancel","Swipeable","_createEventData","_eventData","Navigator","onCaptionClick","_captionClickAction","_renderCaption","_prevButton","$prevButton","_nextButton","$nextButton","_caption","captionText","$caption","buttonPrefix","CALENDAR_EMPTY_CELL_CLASS","CALENDAR_SELECTED_DATE_CLASS","CALENDAR_CELL_IN_RANGE_CLASS","CALENDAR_CELL_RANGE_HOVER_CLASS","CALENDAR_CELL_RANGE_HOVER_START_CLASS","CALENDAR_CELL_RANGE_HOVER_END_CLASS","CALENDAR_RANGE_START_DATE_CLASS","CALENDAR_RANGE_END_DATE_CLASS","CALENDAR_CONTOURED_DATE_CLASS","NOT_WEEK_CELL_SELECTOR","CALENDAR_DXCLICK_EVENT_NAME","CALENDAR_DXHOVERSTART_EVENT_NAME","hoverStartEventName","CALENDAR_DATE_VALUE_KEY","BaseView","_getViewName","cellTemplate","disabledDates","onCellHover","rowCount","colCount","allowValueSelection","_todayDate","_renderImpl","_createTable","_createDisabledDatesHandler","_renderBody","_renderContouredDate","_renderRange","_$table","localizedWidgetName","localizedHotKeysInfo","rowData","cellDate","_getFirstCellData","prevCellDate","rowIndex","row","_createRow","colIndex","_renderCell","_renderWeekNumberCell","_createCell","cellIndex","cell","$cell","_getClassNameByDate","coreDateUtils","getCellAriaLabel","_prepareCellTemplateData","_getCellText","_getNextCellData","_isTodayCell","_isDateOutOfRange","isDateDisabled","_isOtherView","_isStartDayOfMonth","_isEndDayOfMonth","isDateCell","_createCellClickAction","_cellClickAction","_createCellHoverAction","_cellHoverAction","_disabledDatesHandler","_getDefaultDisabledDatesHandler","contouredDate","$oldContouredCell","_getContouredCell","$newContouredCell","_getCellByDate","_updateSelectedClass","_this$_$selectedCells","_isRangeMode","_isMonthView","_$selectedCells","_this$_$rangeCells","_this$_$hoveredRangeC","_this$_$rangeStartHov","_this$_$rangeEndHover","_this$_$rangeStartDat","_this$_$rangeEndDateC","_this$_$rangeStartDat2","_this$_$rangeEndDateC2","_$rangeCells","_$hoveredRangeCells","_$rangeStartHoverCell","_$rangeEndHoverCell","_$rangeStartDateCell","_$rangeEndDateCell","_renderHoveredRange","_this$_$hoveredRangeC2","_this$_$rangeStartHov2","_this$_$rangeEndHover2","_this$_$rangeStartHov3","_this$_$rangeEndHover3","hoveredRange","_getFirstAvailableDate","isBoundary","Views","_renderHeader","$headerRow","$header","_renderHeaderCell","_renderWeekHeaderCell","_getDayCaption","fullCaption","full","abbrCaption","scope","abbr","$weekNumberHeaderCell","showWeekNumbers","_getWeekNumber","weekNumberRule","getNavigatorCaption","today","firstDay","firstMonthDayOffset","daysInWeek","isDisabledDate","foundDate","decade","firstYearInDecade","_isValueOnCurrentView","century","minDecade","maxDecade","firstDecadeInCentury","CalendarSelectionStrategy","calendar","_dateOption","_dateValue","_skipNavigate","_updateAriaSelected","_updateAriaId","_previousValue","_convertToDate","_updateViewsValue","updateAriaSelected","_currentDateChanged","_initCurrentDate","_isMaxZoomLevel","_updateViewsOption","CalendarSingleSelectionStrategy","dateOption","selectedValue","skipNavigate","dateValue","CalendarMultiSelectionStrategy","alreadySelectedIndex","findIndex","toDateString","_updateCurrentDate","_getLowestDateInArray","DAY_INTERVAL","RANGE_OFFSET","CalendarRangeSelectionStrategy","_getValues","_getDaysInRange","_cellHoverHandler","_valueSelected","_getRange","_allowChangeSelectionOrder","_currentSelection","rangeStartDate","rangeEndDate","isMaxZoomLevel","ANIMATION_DURATION_SHOW_VIEW","CALENDAR_DXHOVEREND_EVENT_NAME","hoverEndEventName","LEVEL_COMPARE_MAP","ZOOM_LEVEL","SELECTION_STRATEGIES","SingleSelection","MultiSelection","RangeSelection","Calendar","viewsCount","zoomLevel","maxZoomLevel","minZoomLevel","showTodayButton","onContouredChanged","skipFocusCheck","_waitRenderView","_moveCurrentDateByOffset","_getRtlCorrection","_navigateUp","_view","_navigateDown","_moveToClosestAvailableDate","_updateTimeComponent","selectValue","_getSerializationFormat","cellElement","serializedValue","_shiftDate","baseDate","_getMaxDate","_getMinDate","isDateForwardInNeighborView","_areDatesInNeighborView","isDateForwardInRange","dateForward","_areDatesInSameView","getYear","isDateForwardInStartView","isDateBackwardInStartView","isCurrentDateAvailable","_isDateNotAvailable","isDateForwardAvailable","isDateBackwardAvailable","dateBackward","_initSelectionStrategy","_correctZoomLevel","strategyName","_getSelectionStrategyName","_refreshSelectionStrategy","_this$_getNormalizedD","_getNormalizedDate","getDefaultCurrentDate","_getDate","_onContouredChanged","_$viewsWrapper","_getViewsOffset","_isOtherViewCellClicked","_suppressNavigation","_additionalView","_refreshViews","_setViewContoured","_renderNavigator","_navigate","_isAdditionalViewDate","_getActiveView","_this$_additionalView","_rangeMin","_rangeMax","zoomCorrection","_getMonthsOffset","_alreadyViewRender","_getDateByOffset","_waitRenderViewTimeout","_date","lastDay","_renderViews","_navigator","_renderSwipeable","_renderFooter","CALENDAR_VIEW_CLASS","_renderSpecificView","beforeDate","_beforeView","_isViewAvailable","afterDate","_afterView","_translateViews","specificView","$view","_viewConfig","_this$option2","_injectComponent","getViewOptions","_cellClickHandler","_moveViewElement","_getViewPosition","nextView","newCurrentDate","_animateShowView","_navigatorConfig","_getViewsCaption","_updateButtonsVisibility","_navigatorClickHandler","additionalViewActive","_isMinZoomLevel","toggleButton","_swipeable","_swipeStartHandler","_swipeUpdateHandler","_swipeEndHandler","_viewWidth","_toggleGestureCoverCursor","_getRequiredView","isRtl","_updateNavigatorCaption","moveOffset","shouldDoubleOffset","_isDateInInvalidRange","_animateWrapper","_viewWidthValue","additionalView","isMultiView","additionalViewCaption","$todayButton","_toTodayView","_$footer","_popAnimationView","newView","endPosition","_preventViewChangeAnimation","_wrapperAnimationEndHandler","_rearrangeViews","_resetLocation","_this$viewToRemoveKey","viewOffset","viewToCreateKey","viewToRemoveKey","viewBeforeCreateKey","viewAfterRemoveKey","destinationDate","dateByOffset","_clearViewWidthCache","_disposeViews","_this$_additionalView2","_this$_additionalView3","_this$_beforeView","_this$_afterView","_setViewsMinOption","_restoreViewsMinMaxOptions","_setViewsMaxOption","ariaId","$newCell","_suppressingNavigation","processValueChanged","getContouredDate","DateBoxStrategy","dateBox","widgetOption","_widget","_renderWidget","_getWidgetContainer","_getWidgetName","_getWidgetOptions","getDefaultOptions","getDisplayFormat","supportedKeys","getKeyboardListener","customizeButtons","getParsedText","renderInputMinMax","renderOpenedState","_this$_getPopup","_getPopup","renderPopupContent","_preventFocusOnPopup","getFirstPopupElement","getLastPopupElement","popupShowingHandler","popupHiddenHandler","dateBoxValue","useCurrentDateByDefault","getDefaultDate","textChangedHandler","renderValue","isAdaptivityChanged","CalendarStrategy","todayButtonText","homeEndHandler","viewValue","_getContouredValue","lastActionElement","_lastActionElement","shouldCloseDropDown","_closeDropDownByEnter","displayFormat","_valueChangedHandler","_getTodayButtonConfig","_escapeHandler","_isCalendarVisible","calendarOptions","_finished","_stopped","_proxiedStepCore","_stepCore","_stepAnimationFrame","_isStopped","_isFinished","_complete","_step","inProgress","SCROLLBAR","SCROLLABLE_SCROLLBAR_CLASS","SCROLLABLE_SCROLLBAR_ACTIVE_CLASS","HORIZONTAL","SCROLLBAR_VISIBLE","activeScrollbar","Scrollbar","visibilityMode","containerSize","contentSize","expandable","scaleRatio","_isHovered","_renderThumb","_renderDirection","_update","_attachPointerDownHandler","_isHoverMode","_$thumb","isThumb","_dimension","_prop","feedbackOn","feedbackOff","cursorEnter","_needScrollbar","cursorLeave","_adjustVisibility","_baseContainerToContentRatio","moveTo","scrollBarLocation","_calculateScrollBarPosition","_thumbRatio","baseContainerSize","baseContentSize","_realContainerToContentRatio","thumbSize","containerToContentRatio","_normalizeSize","readyCallback","hoveredScrollable","activeScrollable","SCROLLABLE_SIMULATED_CURSOR","SCROLLABLE_SIMULATED","SCROLLABLE_SIMULATED_KEYBOARD","SCROLLABLE_SIMULATED_CLASS","VERTICAL","ACCELERATION","BOUNCE_FRAMES","BOUNCE_ACCELERATION_SUM","KEY_CODES","InertiaAnimator","Animator","scroller","VELOCITY_LIMIT","_velocity","_scrollStep","_acceleration","_inBounds","_scrollComplete","BounceAnimator","MIN_VELOCITY_LIMIT","_crossBoundOnNextStep","_bounceLocation","Scroller","_initAnimators","_initScrollbar","_location","_topReached","_bottomReached","_axis","_scrollProp","_inertiaAnimator","_bounceAnimator","_scrollbar","_scrollByThumb","_visibilityModeNormalize","_scrollbarVisible","_$scrollbar","prevLocation","_suppressBounce","_bounceEnabled","_boundLocation","_maxOffset","_minOffset","_getScaleRatio","_moveContent","_moveScrollbar","_moveContentByTranslator","_scaleRatio","realDimension","_getRealDimension","baseDimension","_getBaseDimension","translateOffset","_maxScrollPropValue","_translateOffset","_hideScrollbar","_completeDeferred","_scrollToBounds","_bounceAction","_setupBounce","bounceDistance","nextLocation","_initHandler","_stopScrolling","_prepareThumbScrolling","scrollbarClicked","_isScrollbar","_moveToMouseLocation","_thumbScrolling","_isThumb","_crossThumbScrolling","_isAnyThumbScrolling","_isThumbScrollingHandler","mouseLocation","_containerToContentRatio","_startHandler","_showScrollbar","_moveHandler","_scrollBy","_scrollByHandler","_endHandler","_inertiaHandler","_resetThumbScrolling","_suppressInertia","_inertiaEnabled","_stopHandler","_disposeHandler","_updateHandler","_moveToBounds","_resetScaleRatio","_updateLocation","_updateBounds","_updateScrollbar","_getMaxOffset","_getMinOffset","_contentSize","_containerSize","locationChanged","_scrollAction","_createActionsHandler","scroll","bounce","isOverflowHidden","containerScrollSize","_validateEvent","_reachedMin","_reachedMax","_cursorEnterHandler","_cursorLeaveHandler","SimulatedStrategy","scrollable","_isLocked","_isDirection","_allowedDirection","_createScrollers","_attachKeyboardHandler","_attachCursorHandlers","_scrollers","_createScroller","_scrollerOptions","scrollByThumb","scrollbarVisible","bounceEnabled","inertiaEnabled","isAnyThumbScrolling","_applyScaleRatio","_getPropByDirection","_eventHandler","isThumbScrollingVertical","isThumbScrollingHorizontal","handleInit","_suppressDirections","_eventForUserAction","_prepareDirections","_eachScroller","_isContent","_validDirections","handleStart","_startAction","_saveActive","_resetActive","handleMove","_adjustDistance","distance","_tryGetDevicePixelRatio","handleEnd","_refreshCursorState","_endAction","handleCancel","handleStop","handleScroll","_updateRtlConfig","addEventNamespace","_updateHandlerTimeout","_scrollByLine","_scrollByPage","_scrollToHome","_scrollToEnd","scrollBy","page","_wheelProp","_dimensionByProp","createActions","_createActionHandler","_updateAction","_createScrollerActions","actionHandler","_createActionArgs","scrollerX","scrollerY","_getScrollOffset","_scrollOffset","reachedLeft","reachedRight","reachedTop","reachedBottom","disabledChanged","_hoverHandled","$scrollable","targetScrollable","allowedDirections","_allowedDirections","touchDirection","verticalScroller","horizontalScroller","_isHorizontalAndRtlEnabled","updateRtlPosition","needInitializeRtlConfig","_rtlConfig","scrollRight","windowPixelRatio","_getWindowDevicePixelRatio","skipUpdating","_validateWheel","_wheelDirection","reachedMin","reachedMax","contentGreaterThanContainer","locatedNotAtBound","scrollFromMin","scrollFromMax","validated","_validateWheelTimer","SCROLLABLE_NATIVE_CLASS","NativeStrategy","_useSimulatedScrollbar","_isRtlNativeStrategy","_isScrollbarVisible","_renderScrollbars","isFirstRender","_moveScrollbars","_scrollbars","_hideScrollbarTimeout","_renderScrollbar","_eachScrollbar","scrollbar","_isReachedRight","_isReachedLeft","_normalizeOffsetLeft","showScrollbar","_hideScrollbars","_updateScrollbars","_componentContentSize","scrollableNativeRegexp","_removeScrollbars","_isScrolledInMaxDirection","deviceDependentOptions","useNative","scrollByContent","DIRECTION_VERTICAL","DIRECTION_BOTH","SCROLLABLE","SCROLLABLE_CLASS","SCROLLABLE_CONTENT_CLASS","BOTH","Scrollable","onScroll","onBounce","useSimulatedScrollbar","useKeyboard","updateManually","_setUseSimulatedScrollbar","_initScrollableMarkup","_updateRtlPosition","_savedScrollOffset","_renderStrategy","_renderDisabledState","_createActions","_strategy","scrollWidth","scrollHeight","initEventData","_updateIfNeed","_moveIsAllowed","_lock","_unlock","_createStrategy","_resetInactiveDirection","inactiveProp","_getInactiveProp","_normalizeLocation","_updateAllowedDirection","_allowedDirectionValue","scrollToElement","elementInsideContent","elementIsInsideContent","scrollPosition","getScrollElementPosition","targetElement","containerElement","additionalOffset","isVertical","inverseProp","containerOffsetSize","containerClientSize","relativeElementOffset","targetElementClass","sourceElement","parentElementRect","getRelativeOffset","containerScrollOffset","relativeStartOffset","relativeEndOffset","getElementLocationInternal","ScrollDirection","DIRECTION_HORIZONTAL","DATEVIEW_ROLLER_ITEM_CLASS","DateViewRoller","showOnClick","onSelectedIndexChanged","_visibilityChangedHandler","_endActionHandler","_renderSelectedItemFrame","_renderContainerClick","_renderSelectedValue","_renderItemsClick","_renderWheelEvent","_renderSelectedIndexChanged","_selectedIndexChanged","_isWheelScrolled","_$items","_fitIndex","_getItemPosition","_renderActiveStateItem","itemCount","_itemHeight","_getItemSelector","_itemElementIndex","isHorizontal","convertToLocation","_animation","_shouldScrollToNeighborItem","currentSelectedIndex","dy","_isInNullNeighborhood","_fitSelectedIndexInRange","_getSelectedIndexAfterScroll","ratio","newSelectedIndex","_getNewSelectedIndex","_visibilityTimer","toggleActiveState","fitIndex","_fireSelectedIndexChanged","_refreshSelectedIndex","DATEVIEW_CLASS","TYPE","ROLLER_TYPE","DateView","_valueOption","_getDefaultDate","uiDateUtils","applyCompactClass","_toggleFormatClasses","_toggleCompactClass","currentFormat","previousFormat","_wrapper","_renderRollers","_$rollersContainer","_createRollerConfigs","_rollers","_rollerConfigs","$roller","DATEVIEW_ROLLER_CLASS","displayItems","roller","_toggleActive","_setActiveRoller","_setRollerState","_createRollerConfig","valueRange","_calculateRollerConfigValueRange","curDate","_getCurrentDate","valueItems","currentRoller","activeRoller","_updateRollersPosition","correctIndex","rollerValue","_refreshRollers","_refreshRoller","rollerType","rollerConfig","minYear","minMonth","maxYear","maxMonth","minHour","maxHour","DateViewStrategy","_device2","_isNativeType","_getDateBoxType","getRealSeparatorIndex","quoteBalance","separatorCount","occurrence","getNthOccurrence","splitByIndex","getCaretBoundaries","prefixStubLength","postfixStubLength","_getDigitCountBeforeIndex","_reverseText","_getDigitPositionByIndex","digitIndex","getCaretWithOffset","getCaretInBoundaries","boundaries","NUMBER_BOX","POINTERUP_EVENT_NAME","POINTERCANCEL_EVENT_NAME","SPIN_CLASS","_spinIcon","_spinDownHandler","_spinChangeHandler","_feedBackDeferred","SpinButtons","$spinContainer","$spinContainerChildren","pointerDownAction","_spinButtonsPointerDownHandler","SpinButton","_spinUpChangeHandler","_spinDownChangeHandler","$spinUp","$spinDown","_isTouchFriendly","isTouchFriendly","$spinButtons","spinUp","spinDown","math","FIREFOX_CONTROL_KEYS","NumberBoxBase","showSpinButtons","useLargeSpinButtons","invalidValueMessage","_isSupportInputMode","inputmode","_validateValue","_keyPressed","_spinValueChange","_forceValueRender","valuenow","valuetext","_applyDisplayValueFormatter","valuemin","valuemax","_normalizeInputValue","_correctRounding","isFloatValue","isFloatStep","valueAccuracy","stepAccuracy","accuracy","_round","forceValueChangeEvent","_forceRefreshInputValue","_normalizeText","_parseValue","valueHasDigits","_applyValueBoundaries","isValueIncomplete","_isValueIncomplete","isValueCorrect","_isValueInRange","_replaceCommaWithPoint","_inputIsInvalid","isNumberMode","validityState","badInput","_isNumber","isValueValid","NUMBER_FORMATTER_NAMESPACE","MINUS_KEY","NumberBoxMask","useMaskBehavior","_isDeleteKey","minus","_revertSign","_removeHandler","_arrowHandler","_moveCaretToBoundaryEventHandler","_updateFormattedValue","_getTextSeparatorIndex","realSeparatorOccurrenceIndex","clearCaretTimeout","_getInputVal","shouldHandleEvent","_focusOutOccurs","_hasValueBeenChanged","_getFormatPattern","_updateParsedValue","_adjustParsedValue","_setTextByParsedValue","_parsedValue","nextCaret","isCaretInBoundaries","_moveCaretToBoundary","_shouldMoveCaret","isDecimalSeparatorNext","_lastKey","_lastKeyName","_shouldHandleKey","normalizedText","enteredChar","_tryParse","isDeleteKey","isBackspaceKey","_isStub","valueAfterRemoving","_isNonStubAfter","_isPercentFormat","_parse","formatOption","isCustomParser","integerPartStartIndex","formatPointIndex","textPointIndex","formatIntegerPartLength","textIntegerPartLength","customFormatter","_currentFormat","_updateFormat","isLDMLPattern","isExponentialFormat","shouldUseFormatAsIs","positiveFormat","negativeFormat","getLDMLFormat","_getFormatForSign","_removeStubs","excludeComma","stubs","_getStubs","prefixStubs","postfixRegex","decoratorsRegex","stub","_truncateToPrecision","maxPrecision","strValue","editedText","isTextSelected","_getParsedValue","_getPrecisionLimits","isValueChanged","isDecimalPointRestricted","isUselessCharRestricted","textWithoutStubs","parsedValueSign","point","pointIndex","isCaretOnFloat","textParts","floatLength","isPrecisionInRange","endsWithZero","_setInputText","formatted","isSeparatorBasedText","isSeparatorBasedString","pointPosition","newPointPosition","formattedParts","relativeIndex","digitsBefore","formattedIntPart","_trimNonNumericCharsFromEnd","positionFromEnd","digitsFromEnd","newPositionFromEnd","getCaretAfterFormat","_formattedValue","isNumberType","_isChar","isSpecialChar","isMinusKey","_renderFormatter","_detachFormatterEvents","_attachFormatterEvents","_isInputFromPaste","_isValuePasted","_formatValue","escapedDecimalSeparator","realSeparatorIndex","floatPart","_applyRevertedSign","preserveSelectedText","currentText","newText","previousBoundaries","getCaretOffset","caretInBoundaries","_removeMinusFromText","textWithoutMinus","wasMinusRemoved","combineIndex","splitIndex","combinedIndex","GroupedEditStrategy","_groupElements","_groupItemElements","$group","_getGroups","groupItemByKeyMap","itemMeta","groupKey","getItemMeta","selectedGroup","movingIndices","destinationIndices","movingItemGroup","destinationItemGroup","firstIndex","secondIndex","registry","editOptionsRegistry","registerOption","enabledFunc","decoratorTypeFunc","decoratorSubTypeFunc","decoratorType","decoratorSubType","EditProvider","_fetchRequiredDecorators","_decorators","decorator","_createDecorator","subType","_findDecorator","_registry$type","foundDecorator","modifyItemElement","_prependBeforeBags","_appendAfterBags","_applyDecorators","afterItemsRendered","$beforeBags","_collectDecoratorsMarkup","$afterBags","containerClass","$collector","_handlerExists","decorators","handleClick","handleKeyboardEvents","currentFocusedIndex","moveFocusUp","handleEnterPressing","contextMenuHandlerExists","handleContextMenu","getExcludedItemSelectors","excludedSelectors","LIST_ITEM_BADGE_CONTAINER_CLASS","LIST_ITEM_CHEVRON_CONTAINER_CLASS","_renderBadge","_renderShowChevron","badge","$badge","$chevron","showChevron","$chevronContainer","SCROLLVIEW_PULLDOWN_REFRESHING_CLASS","SCROLLVIEW_PULLDOWN_READY_CLASS","PullDownNativeScrollViewStrategy","scrollView","_$topPocket","_$pullDown","_$refreshingText","_$scrollViewContent","_initCallbacks","pullDownCallbacks","releaseCallbacks","reachBottomCallbacks","_renderPullDown","_releaseState","$image","$loadContainer","$loadIndicator","$text","_$pullDownText","_$pullingDownText","_$pulledDownText","_refreshPullDownText","pullDownTextItems","visibleState","_setTopPocketOffset","_topPocketSize","contentEl","containerEl","_bottomBoundary","_pullDownEnabled","_setPullDownOffset","_pullDownRefreshTimeout","_pullDownRefreshing","currentLocation","scrollDelta","_isPullDown","_pullDownReady","_isReachBottom","_reachBottom","_stateReleased","_reachBottomEnabled","pullDownEnable","reachBottomEnable","pendingRelease","_releaseTimeout","SCROLLVIEW_PULLDOWN_DOWN_LOADING_CLASS","_$icon","_releasePullDown","_startClientY","_deltaY","_movePullDown","pullDownHeight","_getPullDownHeight","_getPullDownStartPosition","angle","_pullDownRefreshHandler","_refreshPullDown","ScrollViewScroller","_bottomPocketSize","_$bottomPocket","_reachBottomReady","_reachBottomLoading","_releaseHandler","_releaseTask","_release","_reachBottomEnablingHandler","_pullDownEnablingHandler","_considerTopPocketChange","_pendingReleaseHandler","$topPocket","$bottomPocket","$pullDown","$pullDownText","$pullingDownText","$pulledDownText","$refreshingText","LOADPANEL_INDICATOR_CLASS","LOADPANEL_MESSAGE_CLASS","LoadPanel","showIndicator","showPane","_$loadPanelContentWrapper","_togglePaneVisible","_cleanPreviousContent","_renderLoadIndicator","_renderMessage","_clearShowTimeout","_showTimeout","SCROLLVIEW_CLASS","SCROLLVIEW_REACHBOTTOM_CLASS","refreshStrategies","pullDown","PullDownStrategy","swipeDown","SwipeDownStrategy","simulated","isServerSide","scrollViewServerConfig","finishLoading","ScrollView","pullingDownText","pulledDownText","refreshingText","reachBottomText","onPullDown","onReachBottom","refreshStrategy","_loadingIndicatorEnabled","_initContent","_initTopPocket","_initBottomPocket","_initLoadPanel","$reachBottom","_$reachBottom","_$reachBottomText","_updateReachBottomText","$loadPanelElement","loadPanelOptions","_loadPanel","strategyClass","_pullDownHandler","_reachBottomHandler","_pullDownAction","_reachBottomAction","_tryRefreshPocketState","_pullDownEnable","_reachBottomEnable","_loadingIndicator","_pullDownLoading","startLoading","preventReachBottom","toggleLoading","showOrHide","PRIVATE_KEY_FIELD","repaintChangesOnly","_this$_dataController","_customizeStoreLoadOptions","_correctionIndex","_refreshItemsCache","_findItemElementByKey","_isItemEquals","_modifyByChanges","item1","item2","_isItemStrictEquals","_shouldAddNewGroup","_partialRefresh","oldItems","isItemEquals","oldIndexByKey","addedCount","removeCount","newItem","oldNextIndex","nextOldItem","oldIndex","findChanges","_itemsCache","itemCache","_updateByChange","isPartialRefresh","changedItem","_insertByChange","_change$index","_beforeItemElementInserted","_getItemContainer","_afterItemElementInserted","changeData","_updateSelectionAfterRemoveByChange","removeIndex","_removeByChange","$removedItemElement","_getSpecificDataSourceOption","hasSimpleItems","_getGroupedOption","isCorrectStructure","innerItem","getElementStyle","_getWindow$getCompute","_getWindow","getElementMargin","side","attribute","_scrollView","LIST_ITEM_CLASS","LIST_ITEM_SELECTOR","LIST_GROUP_CLASS","LIST_GROUP_HEADER_CLASS","LIST_GROUP_BODY_CLASS","LIST_GROUP_COLLAPSED_CLASS","WRAP_ITEM_TEXT_CLASS","groupItemsGetter","ListBase","moveFocusPerPage","getEdgeVisibleItem","scrollToItem","isItemVisible","$nextItem","nextItemLocation","pullRefreshEnabled","useNativeScrolling","pageLoadingText","onPullRefresh","onPageLoading","pageLoadMode","nextButtonText","onItemSwipe","onGroupRendered","collapsibleGroups","groupTemplate","indicateLoading","wrapItemText","_swipeEnabled","showChevronExpr","badgeExpr","_updateLoadingState","_saveSelectionChangeEvent","_selectionChangeEventInstance","_getSelectionChangeEvent","_refreshItemElements","_itemElementsCache","_initScrollView","_createGroupRenderAction","_scrollBottomMode","_nextButtonMode","scrollBottom","nextButton","_getGroupContainerByIndex","_dataSourceFromUrlLoadMode","autoPagingEnabled","_scrollHandler","_scrollBottomHandler","_createScrollViewActions","_pullRefreshAction","_pageLoadingAction","$iconContainer","tryLoadMore","shouldLoadNextPage","_shouldContinueLoading","_infiniteDataLoading","_toggleNextButton","_shouldRenderNextButton","_loadIndicationSuppressed","_isDataSourceFirstLoadCompleted","_isFirstLoadCompleted","_dataSourceLoadingChangedHandler","_showLoadingIndicatorTimer","_this$_scrollView","_hideLoadingIfLoadIndicationOff","_isLoadIndicationSuppressed","_scrollViewIsFull","_this$_scrollView$scr","_this$_scrollView$scr2","isBottomReached","_loadNextPageTimer","_renderGroup","_attachGroupCollapseEvent","attachGroupHeaderInkRippleEvents","_collapseGroupHandler","$groupBody","startHeight","endHeight","updateDimensions","_renderInkRipple","roledescription","_setListAria","listArea","_inkRippleTimer","LIST_FEEDBACK_SHOW_TIMEOUT","_attachSwipeEvent","_itemSwipeEndHandler","_nextButtonHandler","_$nextButton","$groupElement","groupAria","$groupHeaderElement","groupTemplateName","_renderingGroupIndex","_groupRenderAction","groupElement","groupData","downInkRippleHandler","upInkRippleHandler","_downInkRippleHandler","_upInkRippleHandler","downArguments","upArguments","_getNextButton","_createNextButton","expandGroup","collapseGroup","DataConverterMixin","ListItem","ListEdit","moveFocusedItem","editStrategy","focusedItemIndex","_getLastItemIndex","nextItemIndex","_editProvider","privateKey","__dx_key__","showSelectionControls","selectAllMode","onSelectAllValueChanged","selectAllText","localizationMessage","menuItems","menuMode","allowItemDeleting","itemDeleteMode","itemDragging","_initEditProvider","_isPageSelectAll","_disposeEditProvider","_refreshEditProvider","handledByEditProvider","_this$_editStrategy$g","focusListItem","selectAll","unselectAll","deselectAll","getFlatIndexByItemElement","getItemElementByFlatIndex","flatIndex","getItemByIndex","EditorClass","searchMode","searchEnabled","searchEditorOptions","_renderSearch","searchBoxClassName","_addWidgetPrefix","rootElementClassName","_removeSearchBox","editorOptions","_getSearchEditorOptions","_searchEditor","_$searchEditorElement","userEditorOptions","searchText","searchTimeout","_valueChangeDeferred","_valueChangeTimeout","getOperationBySearchMode","_cleanAria","activedescendant","setEditorClass","ListSearch","searchBoxMixin","SEARCH_MODES","useCompositionEvents","DropDownList","_allowSelectItemByTab","$focusedItem","_setSelectedElement","_setValue","minSearchLength","showDataBeforeSearch","useItemTextAsTitle","_setListDataSource","_validateSearchMode","_clearSelectedItem","_initItems","_setListFocusedElementOptionChange","_updateActiveDescendant","_initSelectionChangedAction","_initItemClickAction","_selectionChangedAction","_saveFocusOnWidget","_fitIntoRange","_calcNextItem","_getSelectedIndex","_updateCustomBoundaryContainer","_popupWrapperClass","customContainer","$containerWithParents","_$customBoundaryContainer","_loadInputValue","_setSelectedItem","_loadItem","_getItemFromPlain","itemByValue","_this$_list","listFocusedItemId","isElementOnDom","_displayValue","_refreshSelected","_listItemElements","_isSelectedValue","_setFocusPolicy","normalizedSearchMode","_processDataSourceChanging","_setListOption","_isCustomValueAllowed","_clearFilter","_$list","_getMaxHeight","_renderList","canListHaveFocus","_canListHaveFocus","_listId","$list","List","_listConfig","_refreshList","_renderPreventBlurOnListClick","_shouldRefreshDataSource","_needPassDataSourceToList","_isDesktopDevice","templateProvider","_listContentReadyHandler","_listItemClickAction","_getDataSource","dxList","_updateListDimensions","_listItemClickHandler","_isMinSearchLengthExceeded","_needClearFilter","_canKeepDataSource","isMinSearchLengthExceeded","_isLastMinSearchLengthExceeded","_getSearchEvent","_getCompositionStartEvent","_getCompositionEndEvent","_getSetFocusPolicyEvent","_shouldRenderSearchEvent","_searchHandler","_isTextCompositionInProgress","_isTextComposition","_clearSearchTimer","_searchTimer","_searchDataSource","_searchCanceled","_filterDataSource","_dataSourceFiltered","_refreshPopupVisibility","_shouldOpenPopup","_hasItemsToShow","shouldOpenPopup","resultAmount","_needPopupRepaint","currentPageIndex","needRepaint","$customBoundaryContainer","_shouldUseDisplayValue","_el$getRootNode2","querySelectorInSameDocument","saveValueChangeEvent","innerWidgetOptions","_silent","areValuesEmpty","_this$_valueChangeAct","_raiseValidation","prevIsEditor","OldEditor","newIsEditor","CheckBox","defaultNotDeepCopyArrays","propsToIgnore","getDiffItem","resultPaths","fullPropName","notDeepCopyArrays","type1","type2","diffPaths","objectDiffs","_diffPaths","objectDiffsFiltered","propsEnumerator","oldProps","processItem","reactProps","objectDiffsWithoutReactProps","_excluded2","DomComponentWrapper","setupWidget","updateWidget","componentProps","templateNames","componentType","updatedOptions","getUpdatedOptions","_this$config","normalizedProps","valueChange","restProps","hasTemplate","getContainer","ValidationMessageProps","isReactComponentWrapper","LegacyValidationMessage","EditorProps","EditorPropsType","validationMessageGuid","isValidationMessageVisible","updateValidationMessageVisibility","shouldShowValidationMessage","_this$validationError","readonly","describedBy","allValidationErrors","_this$rootElementRef","_this$props$value","validationMessageTarget","defaultIconSizes","defaultFontSizes","getThemeType","isMaterialTheme","isCompactTheme","getFontSizeByIconSize","iconSize","isChecked","defaultFontSize","getDefaultFontSize","defaultIconSize","getDefaultIconSize","fontToIconSizeRatio","CheckBoxIcon","elementRef","updateFontSize","setIconFontSize","getIconSize","getComputedIconSize","newFontSize","endsWith","iconComputedStyle","_window$getComputedSt","CheckBoxProps","enableThreeStateBehavior","CheckBoxPropsType","editorRef","__newValue","_newValue","CheckBoxComponent","twoWayProps","defaultPropName","__processTwoWayProps","RadioButton","_renderIcon","_renderCheckedState","_renderClick","_clickHandler","LIST_EDIT_DECORATOR","SWIPE_START_EVENT_NAME","SWIPE_UPDATE_EVENT_NAME","SWIPE_END_EVENT_NAME","_shouldHandleSwipe","swipeConfig","_clearSwipeCache","_itemWidthCache","_itemSwipeStartHandler","_itemSwipeUpdateHandler","beforeBag","afterBag","_commonOptions","modifyElement","afterRender","visibilityChange","getExcludedSelectors","SELECT_DECORATOR_ENABLED_CLASS","SELECT_CHECKBOX_CONTAINER_CLASS","SELECT_CHECKBOX_CLASS","SELECT_RADIO_BUTTON_CONTAINER_CLASS","SELECT_RADIO_BUTTON_CLASS","decoratorClass","decoratorsRegistry","decoratorConfig","registerDecorator","EditDecorator","_singleStrategy","_containerClass","_controlClass","_controlWidget","$control","_isSelected","_processCheckedState","_updateSelectAllState","_$selectAll","_selectAllCheckBox","_renderSelectAll","moveFocusDown","$selectAll","lastItemIndex","downArrowHandler","_attachSelectAllHandler","_selectAllHandler","_selectAllClickHandler","isSelectedAll","_selectAllItems","_unselectAllItems","_checkSelectAllCapability","_disposeSelectAll","SELECTBOX_POPUP_WRAPPER_CLASS","SelectBox","clearSelectBox","_valueSubstituted","_preventFiltering","_savedTextRemoveEvent","_preventSubstitution","searchIfNeeded","_cancelSearchIfNeed","_setNextValue","_cancelEditing","isOpened","inputText","isCustomText","isSearchEnabled","customItemCreateEvent","onCustomItemCreating","customItem","allowClearing","tooltipEnabled","displayCustomValue","_initCustomItemCreatingAction","_renderTooltip","_focusListElement","_updateField","_scrollToSelectedItem","_focusSelectedElement","_items$indexOf","$listItems","_isCustomItemSelected","_renderFocusedElement","_preventInputValueRender","_renderInputValueAsync","_renderInputValueImpl","_setNextItem","hasPages","isLastItem","isUnknownItem","_getSelectionChangeHandler","_listFocusedItemChangeHandler","_selectionChangeHandler","addedItem","_getActualSearchValue","_shouldClearFilter","_restoreInputText","_wasSearch","showDataImmediately","_isValueEqualInputText","initialSelectedItem","_shouldCancelSearch","saveEditingValue","_loadItemDeferred","_isValueChanging","_createCustomItem","_clearTextValue","newSelectedItem","_valueChangeEventIncludesBlur","_isPreventedFocusOutEvent","_isOverlayNestedTarget","isOverlayTarget","isPopupVisible","_shouldCancelSearchValue","selectedItemText","$listFocused","_shouldCloseOnItemClick","_completeSelection","_customItemAddedHandler","_customItemCreatingAction","actionResult","_setCustomItem","_wasSearchValue","_renderInputSubstitution","currentSearchLength","isAllSelected","inputHasSelection","isLastSymbolSelected","_shouldSubstitutionBeRendered","BOX_ITEM_DATA_KEY","MINSIZE_MAP","MAXSIZE_MAP","FLEX_JUSTIFY_CONTENT_MAP","FLEX_ALIGN_ITEMS_MAP","stretch","FLEX_DIRECTION_MAP","setFlexProp","cssName","BoxItem","fireItemStateChangedAction","oldState","LayoutStrategy","_option","_normalizedAlign","_normalizedCrossAlign","crossAlign","flexPropPrefix","maxSize","minSize","baseSize","shrink","Box","onItemStateChanged","_initLayout","_initBoxQueue","_layout","renderBox","_renderAlign","_onItemStateChanged","renderAlign","renderCrossAlign","_queueIsNotEmpty","_shiftItemFromQueue","renderItems","$itemNode","boxConfig","_pushItemToQueue","rotateArrow","$arrow","cssRotate","TimeView","use24HourFormat","_showClock","_arrowOffset","_getValue","_renderBox","_updateTime","$box","_renderClock","_$hourArrow","_$minuteArrow","_updateClock","hourArrowAngle","minuteArrowAngle","_getBoxItems","is12HourFormat","_hourBox","_minuteBox","_format12","_createHourBox","_createMinuteBox","_createFormat12Box","NumberBox","_onHourBoxValueChanged","_getNumberBoxConfig","_isPM","newHours","_convertMaxHourToMin","maxHoursValue","newMinutes","_refreshFormat12","_silentEditorValueUpdate","_normalizeHours","DATEBOX_TIMEVIEW_SIDE_CLASS","CalendarWithTimeStrategy","_is24HourFormat","viewDate","_updateDateTime","_timeView","_isShrinkView","_isSmallScreen","_repaintTimer","isAdaptiveMode","currentAdaptiveMode","_currentAdaptiveMode","preventDefaultValue","_box","_attachTabHandler","calendarPopupConfig","_this$_widget$option","_removeMinWidthTimer","BOUNDARY_VALUES","ListStrategy","_widgetItems","_getDateByItemData","_refreshItems","_timeListItemTemplate","_getTimeListItems","_setSelectedItemsByValue","_asyncScrollTimeout","dateIndex","_getDateIndex","_areDatesEqual","_getBoundaryDate","_getRangeItems","rangeDuration","rangeItems","boundaryValue","_updatePopupHeight","dropDownOptionsHeight","popupHeight","_timeList","DATEBOX_CLASS","DATEBOX_WRAPPER_CLASS","PICKER_TYPE","rollers","native","STRATEGY_NAME","STRATEGY_CLASSES","Native","CalendarWithTime","DateBox","showAnalogClock","pickerType","invalidDateMessage","dateOutOfRangeMessage","_showValidationIcon","_updatePickerOptions","_pickerType","_initStrategy","_toLowerCaseFirstLetter","_getStrategyName","_getFormatType","currentType","isTime","_refreshFormatClass","_refreshPickerTypeClass","_formatValidationIcon","_this$_strategy$_upda","_this$_strategy","clearButtonWidth","_getClearButtonWidth","longestElementDimensions","_getLongestElementDimensions","curWidth","shouldHideValidationIcon","_storedPadding","leftPadding","rightPadding","clearButtonElement","longestValue","$longestValueElement","storedPadding","necessaryWidth","_renderPopupWrapper","_this$_strategy$_getP","_this$_strategy$_getP2","_this$_strategy2","defaultItems","_getPopupTitle","classPostfixes","_getDisplayedText","submitFormat","displayedText","_getFormatByMode","_getParsedDate","_getDateByDefault","_applyInternalValidation","_recallInternalValidation","_applyCustomValidation","parsedText","hasText","isDateType","validationMessage","_updateInternalValidationState","_serializeDate","_isValueChanged","_isTextChanged","_refreshStrategy","_this$_strategy3","_updatePopupTitle","BACKWARD","DateBoxMask","DateBoxBase","originalHandlers","callOriginalHandler","originalHandler","applyHandler","maskHandler","_shouldUseOriginalHandler","_revertPart","_isAllSelected","_selectFirstPart","_selectLastPart","_revertChanges","_enterHandler","_selectNextPart","_upDownArrowHandler","isNotDeletingInCalendar","_setNewDateIfEmpty","originalValue","_getActivePartValue","_initialMaskValue","_loadMaskValue","_partIncrease","emptyDateValue","_isSingleCharKey","_isSingleDigitKey","_e$originalEvent","_useBeforeInputEvent","_keyInputHandler","oldInputValue","_processInputKey","_maskInputHandler","_renderSelectedPart","_maskBeforeInputHandler","isBackwardDeletion","_maskValue","_activePartIndex","_searchString","_searchNumber","_formatPattern","_renderDateParts","_partLimitsReached","formatLength","_getActivePartProp","maxSearchLength","isLengthExceeded","isValueOverflowed","_getActivePartLimits","_setActivePartValue","startString","endLimit","_clearSearchValue","_prepareRegExpInfo","_regExpInfo","quantifierRegexp","convertedSource","sourcePart","_initMaskState","_detachMaskEvents","_clearMaskState","_attachMaskEvents","_dateParts","_maskClickHandler","_maskPasteHandler","_maskCompositionEndHandler","isBoundaryIndex","_getRealLimitsPattern","lockOtherParts","limitFunction","_addLeadingZeroes","zeroes","_saveMaskValue","limitDelta","_applyLimits","limitBase","limitClosest","caretInGroup","getDatePartIndexByPosition","_isDateValid","_isValueDirty","_fireChangeEvent","FormItemsRunTimeInfo","widgetInstance","itemsRunTimeInfo","removeItemByKey","itemRunTimeInfo","_findWidgetInstance","storedItem","targetPath","_findFieldByCondition","dataField","targetItem","_translator","completeAction","MULTIVIEW_CLASS","MULTIVIEW_WRAPPER_CLASS","MULTIVIEW_ITEM_CONTAINER_CLASS","MULTIVIEW_ITEM_CLASS","toNumber","MultiView","swipeEnabled","animationEnabled","_$itemContainer","_itemWidth","_itemWidthValue","_clearItemWidthCache","_itemsCount","_normalizeIndex","_getRTLSignCorrection","_findBoundaryIndices","_initSwipeable","selectedItemIndices","_updateItemsVisibility","_updateItems","_updateItemsPosition","positionSign","_animationDirection","$selectedItem","_renderSpecificItem","hasItemContent","prevIndex","animationDirection","_animateItemContainer","indexDifference","_getItemFocusLoopSignCorrection","_getSwipeDisabledState","_firstIndex2","_lastIndex","_firstIndex","_boundaryIndices","firstAvailableIndex","lastAvailableIndex","firstTrueIndex","lastTrueIndex","_swipeDirection","swipeDirection","_findNextAvailableIndex","isFirstActive","isLastActive","$selectedElement","_itemFocusLooped","_updateSwipeDisabledState","BADGE_CLASS","TABS_EXPANDED_CLASS","getScrollLeftMax","isReachedLeft","scrollOffsetLeft","epsilon","isReachedRight","TABS_STRETCHED_CLASS","TABS_NAV_BUTTONS_CLASS","OVERFLOW_HIDDEN_CLASS","TABS_ITEM_CLASS","BUTTON_NEXT_ICON","BUTTON_PREV_ICON","Tabs","showNavButtons","_renderMultiple","$iconElement","_deferredTemplates","_deferRenderScrolling","_renderScrolling","removeClasses","_isItemsWidthExceeded","_scrollable","_renderScrollable","_renderNavButtons","getScrollable","_updateNavButtonsVisibility","_scrollToItem","_cleanScrolling","_needStretchItems","$visibleItems","itemsWidth","_cleanNavButtons","_leftButton","_rightButton","_createNavButton","$leftButton","$rightButton","_updateScrollPosition","holdAction","_holdInterval","holdEventName","pointerUpEventName","pointerOutEventName","navButton","$navButton","_clearInterval","_toggleFocusedNextClass","isNextTabFocused","currentIndex","TabsItem","TabPanelItem","TabPanel","itemTitleTemplate","onTitleClick","onTitleHold","_createTitleActions","_createTitleClickAction","_createTitleHoldAction","_createTitleRenderedAction","_titleClickAction","_titleHoldAction","_titleRenderedAction","_resizeEventTimer","_updateLayout","_tabs","_$tabContainer","$tabs","_tabConfig","tabsHeight","tabs","tabItems","$activeTab","$value","$newItem","_isFocusOutHandlerExecuting","_toggleWrapperFocusedClass","_toggleDisabledFocusedClass","isTabsTarget","isMultiViewTarget","_setTabsOption","selectedTabContent","ItemOptionAction","_itemsRunTimeInfo","findWidgetInstanceByItem","findItemContainerByItem","findPreparedItemByItem","createItemPathByIndex","isTabs","concatPaths","path1","path2","getTextWithoutSpaces","getFullOptionName","getOptionNameFromFullName","isFullPathContainsTabs","fullPath","getItemPath","tabOrGroupItems","WidgetOptionItemOptionAction","findInstance","TabOptionItemOptionAction","tabPanel","findItemIndexByItem","SimpleItemTemplateChangedAction","GroupItemTemplateChangedAction","preparedItem","findPreparedItem","_prepareGroupItemTemplate","_renderGroupContentTemplate","TabsOptionItemOptionAction","ValidationRulesItemOptionAction","filterRequired","oldContainsRequired","newContainsRequired","CssClassItemOptionAction","findItemContainer","itemActionOptions","_itemActionOptions$it","_itemActionOptions$it2","_itemActionOptions$it3","RESPONSIVE_BOX_CLASS","SCREEN_SIZE_CLASS_PREFIX","ResponsiveBox","rows","cols","screenByWidth","singleColumnScreen","onLayoutChanged","currentScreenFactor","_initLayoutChangedAction","_layoutChangedAction","_setScreenSize","_screenItems","_itemsByScreen","_prepareGrid","_spreadItems","_layoutItems","_linkNodeToItem","_clearItemNodeTemplates","currentScreen","_getCurrentScreen","_removeScreenSizeClass","grid","_grid","_prepareRowsAndCols","_rows","_cols","_createEmptyCell","getSingleColumnRows","screenItemsLength","filteredRows","_filterByScreen","sizeConfig","_defaultSizeConfig","_isSingleColumnScreen","_prepareSingleColumnScreenItems","_sizesByScreen","_screenRegExp","rowspan","colspan","sizeConfigs","_createDefaultSizeConfig","defaultSizeConfig","screenRegExp","_screenWidth","itemInfo","itemCol","itemRow","itemCell","_occupyCells","locations","_isItemCellOccupied","_markSpanningCell","_loopOverSpanning","rowEnd","colEnd","boundRowEnd","boundColEnd","spanningCell","itemNode","rowsCount","colsCount","_layoutBlock","rootBox","_prepareBoxConfig","_rootBoxConfig","rootItems","_needApplyAutoBaseSize","_isSingleItem","_itemByCell","_layoutDirection","firstCellLocation","isItemRowSpanned","isItemColSpanned","block","crossDirection","_crossDirection","_nextBlock","_isBlockIndivisible","prevBlockOptions","_blockSize","crossStartIndex","crossSpan","crossIndex","lineCrossSpan","_cellByDirection","lineCrossEndIndex","crossEndIndex","defaultMinSize","forceRemoveRoot","$existingRoot","_saveAssistantRoot","_assistantRoots","_cleanUnusedRoots","FORM_GROUP_CLASS","FORM_FIELD_ITEM_COL_CLASS","FIELD_ITEM_CLASS","LAYOUT_MANAGER_ONE_COLUMN","FIELD_ITEM_LABEL_CONTENT_CLASS","FIELD_ITEM_LABEL_CLASS","FIELD_ITEM_CONTENT_CLASS","ROOT_SIMPLE_ITEM_CLASS","FIELD_ITEM_TAB_CLASS","GROUP_COL_COUNT_CLASS","GROUP_COL_COUNT_ATTR","SIMPLE_ITEM_TYPE","DefaultAdapter","validationRequestsCallbacks","getCurrentValidationError","bypass","applyValidationResults","VALIDATION_STATUS_VALID","VALIDATION_STATUS_PENDING","Validator","_initGroupRegistration","_initAdapter","skipValidation","_groupWasInit","_getEditor","dxStandardEditor","_this$option$editor$o","_this$option$editor","_toggleAccessibilityAttributes","_resetValidationRules","_getValidationRules","_validationRules","currentError","currentResult","_applyValidationResult","_updateValidationResult","validatedAction","EDITORS_WITH_ARRAY_VALUE","EDITORS_WITHOUT_LABELS","convertToRenderFieldItemOptions","rootElementCssClassList","formOrLayoutManager","createComponentCallback","labelTemplate","formLabelLocation","requiredMessageTemplate","editorValue","canAssignUndefinedValueToEditor","editorValidationBoundary","showColonAfterLabel","managerLabelLocation","itemId","managerMarkOptions","onLabelTemplateRendered","hasRequiredRule","_hasRequiredRuleInSet","isSimpleItem","helpID","helpText","labelOptions","labelLocation","formLabelMode","isEditorWithoutLabels","editorType","showColon","markOptions","convertToLabelMarkOptions","labelID","textWithoutColon","_convertToLabelOptions","needRenderLabel","labelNeedBaselineAlign","defaultEditorName","externalEditorOptions","editorInputId","labelText","editorOptionsWithValue","_convertToEditorOptions","showRequiredMark","requiredMark","showOptionalMark","optionalMark","FIELD_ITEM_REQUIRED_MARK_CLASS","FIELD_ITEM_LABEL_LOCATION_CLASS","FIELD_ITEM_OPTIONAL_MARK_CLASS","renderLabel","alignment","labelTemplateData","$labelContainer","$labelContent","markText","getLabelMarkText","_renderLabelMark","setLabelWidthByMaxLabelWidth","$targetContainer","labelsSelector","labelMarkOptions","labelWidth","FIELD_ITEM_LABEL_CONTENT_CLASS_Selector","$FIELD_ITEM_LABEL_CONTENT_CLASS_Items","FIELD_ITEM_LABEL_CONTENT_CLASS_Length","getLabelWidthByHTML","labelContent","FIELD_ITEM_CONTENT_WRAPPER_CLASS","VALIDATION_TARGET_CLASS","renderFieldItem","$rootElement","$fieldEditorContainer","getTemplateData","isToggleControls","labelAlignment","validationTargetInstance","$validationTarget","_$validationTarget$pa","_$validationTarget$pa2","tryGetValidationTargetInstance","getValidationTarget","subscribeWrapperInvalidClassToggle","$div","isItemHaveCustomLabel","itemName","requiredMessage","formItem","wrapperClass","toggleInvalidClass","renderButtonItem","horizontalAlignment","verticalAlignment","convertAlignmentToJustifyContent","buttonOptions","renderEmptyItem","LayoutManager","layoutData","colCountByScreen","onFieldDataChanged","onEditorEnterKey","customizeItem","alignItemLabels","minColWidth","_itemWatchers","_updateReferencedOptions","_initDataAndItems","_cleanItemWatchers","initialData","_syncDataWithItems","userItems","_getDataByField","_updateFieldValue","_isCheckboxUndefinedStateEnabled","allowIndeterminateState","nameParts","_triggerOnFieldDataChanged","isUserItemsExist","_generateItemsByData","processedItems","_isAcceptableItem","_processItem","_updateItemWatchers","_setItems","_sortItems","watch","_getWatch","itemField","_getEditorTypeByDataType","_item$allowIndetermin","indexPropName","currentItem","needIndexCallback","indexedItems","shouldUpdateIndex","normalizeIndexes","_sortIndexes","itemA","itemB","indexA","visibleIndex","indexB","_renderResponsiveBox","templatesInfo","_getColCount","_prepareItemsWithMerging","layoutItems","_generateLayoutItems","_responsiveBox","_getResponsiveBoxConfig","_renderTemplates","_itemStateChangedHandler","itemsWithLabelTemplateCount","_item$label","_renderButtonItem","_renderFieldItem","xsColCount","isSingleColumnMode","itemRenderedCountInPreviousRows","itemCssClassList","isLastColumn","_getRowsCount","isLastRow","_generateRatio","screenFactor","getTargetScreenFactor","_cashedColCount","_getMaxColCount","maxColCount","isCachedColCountObsolete","itemsMergedByCol","colSpan","_getColByIndex","merged","generatedItem","rowSpan","_renderEmptyItem","_item$label2","_getFormOrThis","getItemID","_getMarkOptions","_incTemplateRenderedCallCount","_shouldAlignLabelsOnTemplateRendered","_alignLabels","_bindDataField","_this$_labelTemplateR","_labelTemplateRenderedCallCount","totalItemsWithLabelTemplate","editorInstance","formOrThis","_createWatcher","linkEditorToDataField","fieldValue","_watch","formInstance","readOnlyState","hasEditorReadOnly","isChangeByForm","isAutoSize","newLayoutData","_resetWidget","_disableEditorValueChangedHandler","_cashedRequiredConfig","dataValue","_resetColCount","isValueReferenceType","updateData","getEditor","findWidgetInstanceByDataField","findWidgetInstanceByName","responsiveBox","getItemsRunTimeInfo","VALIDATION_SUMMARY_CLASS","ValidationSummary","_unsubscribeGroup","groupSubscription","_groupValidationHandler","_getOrderedItems","orderedItems","foundItems","_validationSummary","_itemValidationHandler","itemsChanged","foundRule","foundItem","refreshValidationGroup","VALIDATION_ENGINE_CLASS","ValidationGroup","validatorContainer","summaryContainer","ITEM_OPTIONS_FOR_VALIDATION_UPDATING","Form","_cachedColCountOptions","_groupsColCount","_attachSyncSubscriptions","formID","formData","alignItemLabelsInAllGroups","alignRootItemLabels","showValidationSummary","_getGroupColCount","_applyLabelsWidthByCol","fieldItemClass","inOneColumn","cssExcludeTabbedSelector","excludeTabbed","_applyLabelsWidth","applyLabelsOptions","_getGroupElementsInColumn","columnIndex","cssColCountSelector","groupSelector","_applyLabelsWidthWithGroups","$rootSimpleItems","_applyLabelsWidthWithNestedGroups","$groups","groupsColIndex","groupColIndex","$groupsByCol","groupColCount","_labelLocation","_alignLabelsInColumn","layoutManager","_checkGrouping","_prepareFormData","_setStylingModeClass","_getValidationGroup","_clearCachedInstances","_renderValidationSummary","_lastMarkupScreenFactor","_targetScreenFactor","_getCurrentScreenFactor","_attachResizeObserverSubscription","formRootElement","_resizeHandler","_cachedLayoutManagers","_layoutManager$option","_clearValidationSummary","_getContent","_this$_$validationSum","_$validationSummary","dxValidationSummary","_prepareItems","parentIsTabbedItem","currentPath","_tryPrepareGroupItem","_tryPrepareTabbedItem","_tryPrepareItemTemplate","cssItemClass","groupContentTemplate","_itemGroupTemplate","_itemTabbedTemplate","_rootLayoutManager","_renderLayoutManager","_createLayoutManagerOptions","isRoot","_tryGetItemsForTemplate","_item$tabs","$tabPanel","tabPanelOptions","_item$tabPanelOptions","_item$tabPanelOptions2","extendRunTimeItemInfoByKey","tryUpdateTabPanelInstance","$groupContent","extendedLayoutManagerOptions","$formElement","formOptions","baseOptions","onFieldItemRendered","convertToLayoutManagerOptions","_isDataUpdating","addItemsOrExtendFrom","nestedItemsRunTimeInfo","removeItemsByItems","_this$_validationSumm","layoutManagerOptions","baseColCountByScreen","_clearAutoColCountChangedTimeout","autoColCountChangedTimeoutId","optionFullName","_triggerOnFieldDataChangedByDataSet","splitFullName","_itemsOptionChangedHandler","_formDataOptionChangedHandler","_defaultOptionChangedHandler","_resetValues","_getItemPath","optionNameWithoutPath","simpleOptionName","itemAction","_tryCreateItemOptionAction","_tryExecuteItemOptionAction","_tryChangeLayoutManagerItemOption","_changeItemOption","_generateItemsFromData","removeItemsByPathStartWith","tryCreateItemOptionAction","tryExecute","_updateValidationGroupAndSummaryIfNeeded","_this$_validationSumm2","_setLayoutManagerItemOption","findKeyByPath","contentReadyHandler","tabPath","pathParts","resultPathParts","tryGetTabPath","tabLayoutManager","findGroupOrTabLayoutManagerByPath","endPartIndex","_itemPath","_layoutManager","fullOptionName","formItems","layoutManagerItems","_tryChangeLayoutManagerItemOptions","_getItemByField","fieldParts","_getFieldParts","fieldPath","_getItemByFieldPath","subItemsField","_getSubItemField","isEqualToDataFieldOrNameOrTitleOrCaption","separatorIndex","resultPath","isItemWithSubItems","isGroupWithName","nameWithoutSpaces","pathNode","_searchItemInEverySubItem","groupItem","_isColCountChanged","oldScreenSize","newScreenSize","isChanged","_updateData","isComplexData","resetValues","itemOption","allowUpdateItems","LABEL_POSTFIX","WRAPPER_POSTFIX","REPEAT_END_EDITOR","FREQUENCY_EDITOR","INTERVAL_EDITOR","REPEAT_ON_EDITOR","frequenciesMessages","frequencies","repeatEndTypes","RecurrenceRule","_recurrenceProcessor","_recurrenceRule","getRecurrenceString","RecurrenceEditor","_prepareEditors","_renderEditors","getRecurrenceForm","_weekEditor","_repeatCountEditor","_repeatUntilDate","_editors","_createFreqEditor","_createIntervalEditor","_createRepeatOnLabel","_createRepeatOnEditor","_createRepeatEndEditor","_createByDayEditor","_createByMonthEditor","_createByMonthDayEditor","_getFirstDayOfWeek","_daysOfWeekByRules","localDaysNames","itemsButtonGroup","_$repeatOnWeek","_getDefaultByDayValue","makeRule","_changeEditorValue","monthsName","_monthOfYearByRules","_dayOfMonthByRules","repeatType","getRepeatEndRule","_renderRepeatCountEditor","_renderRepeatUntilEditor","_renderDefaultRepeatEnd","_repeatEndValueChangedHandler","_recurrenceForm","_disableRepeatEndParts","labelId","_handleDefaults","makeRules","getDaysFromByDayRule","startDay","dayByRule","monthByRule","$editorTemplate","_getUntilValue","repeatCount","$editorWrapper","_$repeatCountEditor","_repeatCountValueChangeHandler","repeatUntil","_$repeatDateEditor","_repeatUntilValueChangeHandler","dateInTimeZone","_formatUntilDate","getStartDateTimeZone","dateInLocaleTimeZone","_makeRepeatOnRule","_changeRepeatOnVisibility","_changeRepeatIntervalLabel","_changeEditorsValue","previousFreq","_changeDayOfWeekValue","_changeDayOfMonthValue","_changeMonthOfYearValue","_changeIntervalValue","_changeRepeatCountValue","_changeRepeatEndValue","_changeRepeatUntilValue","_days","getEditorByField","untilDate","_freqEditor","_switchEditor","allowScroll","scrollTopPos","scrollBottomPos","TextArea","_updateInputHeight","_renderScrollHandler","_updateInputAutoResizeAppearance","_eventY","initScrollData","validateTarget","prepareScrollData","currentEventY","_resetDimensions","_getHeightDifference","autoHeightResizing","heightDifference","_getBoundaryHeight","inputHeight","adjustedMaxHeight","needScroll","isAutoResizeEnabled","TAGBOX_TAG_DATA_KEY","TAGBOX_TAG_CLASS","TAGBOX_MULTI_TAG_CLASS","TAGBOX_CUSTOM_TAG_CLASS","TAGBOX_TAG_REMOVE_BUTTON_CLASS","TAGBOX_SINGLE_LINE_CLASS","TagBox","sendToList","_isCaretAtTheStart","_processKeyboardEvent","_isTagRemoved","$tagToDelete","_$focusedTag","_tagElements","_moveTagFocus","_preserveFocusedTag","_removeTagElement","isListItemFocused","isInputActive","_isEmpty","_scrollContainer","_updateTagsContainer","_$tagsContainer","_updateInputAriaActiveDescendant","clearOnBoundary","tagElements","$nextFocusedTag","_replaceFocusedTag","_clearTagFocus","_getScrollPosition","_getBorderPosition","_getFocusedTagPosition","isScrollLeft","maxFilterQueryLength","tagTemplate","hideSelectedItems","maxDisplayedTags","showMultiTagOnly","onMultiTagPreparing","multiline","_selectedItems","_initSelectAllValueChangedAction","_initMultiTagPreparingAction","_multiTagPreparingAction","_multiTagPreparingHandler","selectedCount","_data$text","$tagContent","_toggleSubmitElement","$options","useDisplayText","_tagElementsCache","isSingleLineMode","_initTagTemplate","_getNewLabelId","actualId","newId","shouldRemove","_updateElementAria","newLabelId","_renderTagRemoveAction","_renderSingleLineScroll","_tagTemplate","isDefaultFieldTemplate","tagRemoveAction","_removeTagHandler","mouseWheelEvent","isMultiline","_tagContainerMouseWheelHandler","_renderPreventBlurOnInputClick","_renderMultiSelect","_selectAllValueChangeAction","_setListDataSourceFilter","_renderInputSize","_renderTags","shouldClearFilter","isEmptyInput","canTypeText","$calculationElement","_updateWidgetHeight","_multiTagRequired","_renderMultiTag","$tag","multiTagElement","_getFilter","filterQueryLength","_getFilteredItems","_this$_loadFilteredIt","_loadFilteredItemsPromise","FilterCreator","listSelectedItems","isListItemsLoaded","clientFilterFunction","selectedItemsAlreadyLoaded","_isDataSourceChanged","expand","mappedItems","_createTagsData","isValueExprSpecified","filteredValues","filteredItem","filteredItemValue","loadItemPromises","_createTagData","valueIndex","_isGroupedData","_getItemsByValues","_getFilteredGroupedItems","_filteredGroupedItemsLoadPromise","_loadTagsData","tagData","isPlainDataUsed","_shouldGetItemsFromPlain","_valuesToUpdate","_getItemsFromPlain","_renderTagsImpl","_renderTagsCore","_renderEmptyState","_getSelectedItemsFromList","_filterSelectedItems","_this$_list2","dataItem","_isInputReady","tagsContainer","_this$_isInputReady","_cleanTags","_renderTagsElements","$multiTag","_renderTag","_refreshTagElements","$tags","_applyTagTemplate","_getTag","itemModel","_getItemModel","tagId","_createTag","tagsLength","_removeTagWithUpdate","_removeTag","_lastValue","removedItem","_addTag","listSelectionChangeEvent","_valueIndex","useButtons","indexByValues","originalHeight","currentHeight","_this$_list3","_resetListDataSourceFilter","_userFilter","valueGetterExpr","_dataSourceFilterExpr","_dataSourceFilterFunction","_getSortedListValues","listValues","_getListValues","existedItems","firstArray","secondArray","getIntersection","_defaultTagTemplate","_getSelectedItemsDifference","previousItems","previousItemsValuesMap","SWITCH_CLASS","SWITCH_ON_VALUE_CLASS","SWITCH_ANIMATION_DURATION","Switch","_animateValue","switchedOnText","switchedOffText","_animating","_renderContainers","_$switchWrapper","_renderSwitchInner","_renderLabels","_getInnerOffset","_offsetDirection","_getHandleOffset","_$switchInner","_$switchContainer","_$handle","_$labelOn","_$labelOff","_setLabelsText","_getItemSizeFunc","swipeOffset","innerOffset","_swiping","fromInnerOffset","toInnerOffset","fromHandleOffset","toHandleOffset","fromInnerConfig","toInnerConfig","fromHandleConfig","toHandlerConfig","maxOffOffset","maxOnOffset","_feedbackDeferred","offsetDirection","toHandleConfig","pressed","_marginBound","Semaphore","APPOINTMENT_FORM_GROUP_NAMES","Main","Recurrence","getDateWithStartHour","createDateBoxEditor","AppointmentForm","scheduler","semaphore","recurrenceEditor","triggerResize","changeSize","allowTimeZoneEditing","getEditingConfig","recurrenceEditorVisibility","mainItems","_createMainItems","createResourceEditorModel","_createRecurrenceEditor","createComponent","dataExprs","startTimeZoneEditor","endTimeZoneEditor","createTimeZoneDataSource","dateExpr","isNeedCorrect","validateAppointmentFormDate","dateEditor","isFree","timeZoneExpr","secondTimeZoneExpr","isMainTimeZone","noTzTitle","secondTimezoneEditor","getFirstDayOfWeek","_dateBoxValueChanged","_createTimezoneEditor","itemEditorOptions","newEditorOption","_createDateBoxItems","startDateEditor","endDateEditor","allDayStartDate","allDayEndDate","startDateWithStartHour","getStartDayHour","endDateWithStartHour","getCalculatedEndDate","startDateItemPath","endDateItemPath","_changeFormItemDateType","changeValueByVisibility","updateRecurrenceItemVisibility","getTimeZoneCalculator","_createAppointmentAdapter","startDateFormItem","endDateFormItem","startDateEditorOptions","endDateEditorOptions","expression","setEditorOptions","editorPath","setTimeZoneEditorDataSource","updateRecurrenceEditorStartDate","setEditorsType","POPUP_WIDTH","DEFAULT","FULLSCREEN","isMobile","TOOLBAR_LOCATION","getPopupToolbarItems","allowUpdating","doneClick","doneButton","cancelButton","isPopupFullScreenNeeded","getMaxWidth","isRecurrence","loading","removeLoadPanel","createLoadPanel","APPOINTMENT_POPUP_CLASS","DAY_IN_MS","POPUP_CONFIG","ACTION_TO_APPOINTMENT","AppointmentPopup","lastEditData","saveChangesLocker","excludeInfo","_createPopupConfig","isToolbarVisible","_doneButtonClickHandler","popupElement","_createPopupContent","_onShowing","_updateForm","dxForm","appointmentData","getAppointmentFormOpening","processActionResult","canceled","updatePopupFullScreenMode","_createForm","getResources","normalizedResources","_createFormData","_isReadOnly","updateFormData","isFullScreen","isShowLoadPanel","validation","_showLoadPanel","hideLoading","_addMissingDSTTime","addAppointment","updateAppointment","sourceAppointment","updatedAppointment","saveEditDataAsync","_tryLockSaveChanges","saveChangesAsync","endTime","inAllDayRow","resourceList","updateScrollPosition","_unlockSaveChanges","showLoading","formAppointmentAdapter","clonedAppointmentAdapter","_addMissingDSTShiftToDate","originFormDate","shiftDifference","newMin","newMax","FilterPosition","RemoteFilterCombiner","dateFilter","userFilter","serializeRemoteFilter","lastFilterValue","getDatesWithoutTime","trimMin","trimMax","makeDateFilter","getUserFilter","combineFilters","STORE_EVENTS","AppointmentDataSource","setDataSource","_updatedAppointmentKeys","cleanState","_initStoreChangeHandlers","_updatedAppointment","pushItems","pushItem","itemExists","_getStoreKey","FilterStrategies","AppointmentFilterBaseStrategy","_resolveOption","setDataAccessors","preparedItems","dateRange","supportAllDayRow","filterLoadedAppointments","supportMultiDayAppointments","adapters","filterOptions","checkIntersectViewport","useRecurrence","hasRecurrenceRule","appointmentTakesAllDay","appointmentTakesSeveralDays","isLongAppointment","_filterAppointmentByResources","exceptions","getRecurrenceException","_filterAppointmentByRRule","isVirtualScrolling","severalDays","compareDateWithStartDayHour","hiddenInterval","apptDuration","apptStartHour","apptStartMinutes","apptIntersectViewport","compareDateWithEndDayHour","_createCombinedFilter","checkAppointmentResourceValues","resourceIndex","appointmentResourceValues","appointmentStartDate","appointmentEndDate","recurrenceProcessor","apptStartDayHour","apptEndDayHour","_appointmentPartInInterval","hasRecurrence","getOriginStartDateOffsetInMs","filterPreparedItems","_createAppointmentFilter","_createAllDayAppointmentFilter","AppointmentFilterVirtualStrategy","hourMs","isCalculateStartAndEndDayHour","calculateIsDateAndTimeView","viewDirection","isAllDayWorkspace","showAllDayAppointments","endViewDate","viewDataProvider","getLastViewDateByEndDayHour","getCompletedGroupsInfo","groupStartDate","groupEndDate","_getPrerenderFilterResources","hasAllDayPanel","hasGroupAllDayPanel","supportAllDayAppointment","combinedFilters","itemsToFilter","filterAllDayAppointments","cellGroup","getCellsGroup","fieldNames","currentResourcesData","currentResource","currentItems","currentData","getResourcesDataByGroups","AppointmentDataProvider","appointmentDataSource","initFilterStrategy","getIsVirtualScrolling","filterStrategy","filterStrategyName","getLoadedResources","getSupportAllDayRow","getViewType","getViewDirection","getDateRange","getViewDataProvider","getFilterStrategy","combineRemoteFilter","hasAllDayAppointments","filterOption","calculateAppointmentEndDate","DBLCLICK_EVENT_NAME","NAMESPACED_CLICK_EVENT","DblClick","_forgetLastClick","_firstClickTarget","_lastClickTimeStamp","timeBetweenClicks","borderWidthStyles","WEIGHT_OF_SIDES","POPOVER_POSITION_ALIASES","POPOVER_DEFAULT_BOUNDARY_OFFSET","PopoverPositionController","_$arrow","_positionSide","hOffset","vOffset","isVerticalSide","_isVerticalSide","isHorizontalSide","_isHorizontalSide","arrowOffset","_isPopoverInside","_getContentBorderWidth","weightSign","_getDisplaySide","POSITION_FLIP_MAP","getEventNameByOption","hideEvent","isSelector","shouldIgnoreHideEvent","getEventDelay","_clearEventsTimeouts","_timeouts","EVENT_HANDLER_NAME","detachEvent","Popover","arrowPosition","_renderArrow","isInteractive","_detachEvents","_isOutsideClick","shouldUpdateDimensions","_renderOverlayPosition","_resetOverlayPosition","_updateContentSize","contentPosition","resultLocation","_getSideByLocation","_togglePositionClass","_toggleFlippedClass","_renderArrowPosition","containerLocation","newContainerWidth","newOverlayContentHeight","newPopupContentHeight","isFlippedByVertical","isFlippedByHorizontal","positionClass","isFlippedHorizontal","isFlippedVertical","arrowRect","arrowFlip","arrowLocation","contentOffset","arrowSize","contentLocation","finalArrowLocation","fullUpdate","_clearEventTimeout","updateTarget","Tooltip","_contentId","_toggleAriaDescription","removeTooltipElement","removeTooltip","$tooltip","createTooltip","REDUCED_APPOINTMENT_POINTERENTER_EVENT_NAME","REDUCED_APPOINTMENT_POINTERLEAVE_EVENT_NAME","Appointment","geometry","allowDrag","allowResize","reduced","resizableConfig","cellHeight","cellWidth","isDragSource","subject","funcName","_renderDragSourceClass","reducedHandles","getResizableStep","invoke","_renderAppointmentGeometry","_renderEmptyClass","_renderReducedAppointment","_renderAllDayClass","_renderRecurrenceClass","_renderResizable","_setResourceColor","coloredElement","reducedPart","_renderAppointmentReducedIcon","_getEndDate","tooltipText","_getVerticalResizingRule","_getHorizontalResizingRule","_createResizingConfig","AgendaAppointment","createPlainResourceListAsync","_renderResourceList","allDayText","isStartDate","considerTime","appointmentSettings","resultTime","normalizeStartDate","sourceStartDate","normalizeEndDate","sourceEndDate","getAppointmentLeftCell","relativeAppointmentRect","cellRowIndex","cellColumnIndex","getCellData","getAppointmentDateRange","appointmentRect","parentAppointmentRect","getRelativeAppointmentRect","cellInfo","isVerticalGroupedWorkSpace","DOMMetaData","DOMMetaTable","allDayPanelCellsMeta","dateTableCellsMeta","positionByMap","cellCountInRow","getAppointmentCellsInfo","extendedOptions","appointmentLastCell","appointmentLastCellIndex","appointmentFirstCellIndex","appointmentRowIndex","appointmentFirstCell","getDateRangeHorizontalRTL","appointmentCellsAmount","appointmentColumnIndex","getDateRangeHorizontal","dblclickEvent","SchedulerAppointments","_virtualAppointments","_appointmentClickTimeout","currentAppointment","_$currentAppointment","resizeOccur","moveAppointmentBack","dxResizable","notifyObserver","_getAccessAppointments","sortedIndex","$nextAppointment","_getAppointmentByIndex","_resetTabIndex","$appointment","fixedContainer","allDayContainer","allowAllDayResize","_collectorOffset","_clearDropDownItems","_clearDropDownItemsElements","_repaintAppointments","_renderDropDownAppointments","_attachAppointmentsEvents","isAgendaView","_isRepaintAppointment","_getAppointmentContainer","isRepaintAll","needRemove","_clearItem","_renderByFragments","$commonFragment","$allDayFragment","_isRepaintAll","_isAllDayAppointment","_onEachAppointment","renderFunction","_applyFragment","_attachAppointmentDblClick","$allDayContainer","_initialSize","_initialCoordinates","_preventSingleAppointmentClick","formatText","_currentAppointmentSettings","agendaSettings","targetedAppointmentData","leftLayoutContainer","rightLayoutContainer","additionalContainer","createAgendaAppointmentLayout","$contentDetails","createAppointmentLayout","_processItemClick","screenX","offsetX","isFakeClickEvent","_dblClickHandler","$targetAppointment","setting","_renderAppointment","_applyResourceDataAttr","skipResizing","virtual","deferredColor","_processVirtualAppointment","appointmentReduced","_resizableConfig","getResourceDataAccessors","agendaResourceProcessor","createListAsync","itemSetting","_calculateResizableArea","updatedArea","coordinates","resizeAllDay","_getEndResizeAppointmentStartDate","_getDateRange","updateResizedAppointment","isVerticalViewDirection","modifiedAppointmentAdapter","appointmentInfo","isRecurrent","deltaTime","renderingStrategyDirection","needCorrectDates","_correctStartDateByDelta","_correctEndDateByDelta","visibleDayDuration","daysCount","tailOfPrevDays","correctedEndDate","appointmentSetting","virtualAppointment","virtualGroupIndex","buttonColor","virtualGroup","virtualItems","virtualCoordinates","$fragment","buttonWidth","buttonHeight","rtlOffset","_isGroupCompact","skipLongAppointments","timezoneCalculator","recurrentDates","recurrentDateCount","appointmentPart","_applyStartDateToObj","_applyEndDateToObj","_processLongAppointment","splitAppointmentByDay","partCount","recurrenceIndexes","additionalAppointments","_sortAppointmentsByStartDate","dragEvent","coords","_removeDragSourceClassFromDraggedAppointment","setOuterWidth","originalStartDate","maxAllowedDate","appointmentIsLong","currentEndDate","_checkStartDate","_checkEndDate","originalDate","dxSchedulerAppointment","$appointments","itemGroupIndex","itemStartDate","itemEndDate","appointmentInstance","$allResizableElements","horizontalResizables","getAppointmentKey","mergeStylesWithColor","AppointmentDetails","dateText","AppointmentTitle","AppointmentContent","refReducedIcon","bindHoverEffect","onReducedIconMouseEnter","onReducedIconMouseLeave","showReducedIconTooltip","hideReducedIconTooltip","_this$refReducedIcon$","_this$refReducedIcon$2","onMouseEnter","onMouseLeave","_this$refReducedIcon$3","_this$refReducedIcon$4","appointmentTemplate","isReduced","getDeferredAppointmentColor","AppointmentsContext","updateStylesEffect","bindDoubleClickEffect","onItemDoubleClick","appointmentsContextValue","_viewModel$info$group","_this$ref$current","onDoubleClick","_this$ref$current2","getAppointmentStyles","appointmentStyles","isVerticalDirection","OverflowIndicator","appointmentContext","_viewModel$groupIndex","getIndicatorColor","appointmentCount","getOverflowIndicatorStyles","OverflowIndicatorTemplate","overflowIndicatorTemplate","SELECTOR","AppointmentLayout","layoutRef","pointerEventsEffect","onAppointmentPointerDown","disposePointerDown","regular","overflowIndicators","allDayCompact","regularCompact","appointmentElement","dataset","focusedAppointmentIndex","typeMap","appointmentType","updateFocusedAppointment","onAppointmentDoubleClick","AppointmentLayoutComponent","getAppointmentSettings","getAppointmentInfo","currentDataAccessors","dateGetter","dateSetter","DOM","getHeaderHeight","renovation","renderComponent","getAppointmentsContainer","$dateTable","DROP_DOWN_BUTTON_CLASS","DROP_DOWN_BUTTON_ACTION_CLASS","DROP_DOWN_BUTTON_TOGGLE_CLASS","selectedItemKey","useSelectMode","splitButton","showArrowIcon","onButtonClick","dropDownContentTemplate","buttonGroupOptions","_createActionClickAction","_createSelectionChangedAction","_compileKeyGetter","$listContainer","_listOptions","_escHandler","_getKey","_this$_dataSource","storeKey","_renderButtonGroup","_updateArrowClass","_loadSelectedItem","_updateActionButton","_this$_loadSingleDefe","_loadSingleDeferred","_lastSelectedItemData","cachedResult","_actionClickAction","_fireSelectionChangedAction","previousItem","_fireItemClickAction","_actionItem","_actionButtonConfig","_getButtonGroupItems","_buttonGroupItemClick","isActionButton","_buttonGroupOptions","buttonContent","$firstIcon","$textContainer","$secondIcon","_popupOptions","_buttonGroup","_upDownKeyHandler","_tabHandler","$popup","_updateAriaAttributes","_setElementAria","elementAria","owns","_setButtonsAria","commonButtonAria","firstButtonAria","_getButtons","$buttonGroup","hasArrow","_getDisplayValue","_selectedItemKeyChanged","_updateButtonGroup","_actionButtonOptionChanged","_selectModeChanged","_updateItemCollection","_updateDataSource","_updateKeyExpr","TOOLBAR_ITEMS","toggleItemFocusableElementTabIndex","_itemData$options","isItemNotFocusable","$widget","_itemInstance$_focusT","_itemData$options2","itemInstance","getItemInstance","_$focusTarget","$focusTarget","MultiLineStrategy","_toolbar","_this$_toolbar$option","TOOLBAR_MENU_ACTION_CLASS","TOOLBAR_HIDDEN_BUTTON_GROUP_CLASS","TOOLBAR_MENU_SECTION_CLASS","TOOLBAR_MENU_LAST_SECTION_CLASS","ToolbarMenuList","_setMenuRole","_getSections","sectionName","_updateSections","$sections","isAction","menuItemTemplate","PopupFull","DropDownMenu","extension","_button","closeOnClick","_initButtonClickAction","_buttonClickAction","_renderButton","_getListDataSource","_deferRendering","_this$_list4","_this$_list5","_toggleMenuVisibility","_updateFocusableItemsTabIndex","TOOLBAR_AUTO_HIDE_ITEM_CLASS","TOOLBAR_HIDDEN_ITEM","SingleLineStrategy","_renderOverflowMenu","_renderMenuItems","_hasVisibleMenuItems","_renderMenuButtonContainer","$menu","_overflowMenuContainer","itemClickAction","_menu","_updateMenuVisibility","_getMenuItems","_$overflowMenuContainer","isMenuVisible","renderMenuItems","_isMenuItem","_this$_toolbar$option2","_this$_restoreItems","$hiddenItems","_getHiddenItems","_restoreItems","overflowItems","hiddenItem","$itemMarkup","optionGetter","overflowGetter","itemVisible","itemOverflow","_this$_restoreItems2","_hideOverflowItems","_getItemsWidth","_this$_menu","locateInMenu","_this$_menu2","_this$_menu3","_this$_menu4","_this$_menu5","_this$_menu6","Toolbar","menuContainer","overflowMenuVisible","_layoutStrategy","_renderLayoutStrategy","_isMultiline","showText","SchedulerCalendar","_isMobileLayout","_overlay","_calendar","_renderOverlay","isMobileLayout","overlayType","_createOverlayContent","_getCalendarOptions","_createScrollable","getPreviousButtonOptions","_updateDateByDirection","previousButton","isPreviousButtonDisabled","_addEvent","getCalendarButtonOptions","_showCalendar","calendarButton","getNextButtonOptions","isNextButtonDisabled","_getCaption","_getNextDate","getPeriodStart","getWeekStart","MS_DURATION","DAY_DURATION","WEEK_DURATION","nextDay","nextWeek","isWeekend","getIntervalStartDate","getWorkWeekStart","getIntervalEndDate","periodEndDate","intervalCount","agendaDuration","nextPeriodStartDate","getPeriodEndDate","getNextPeriodStartDate","currentPeriodStartDate","nextMonth","workWeekStart","workDaysCount","getDateAfterWorkWeek","nextAgendaStart","subMS","currentPeriodEndDate","addMS","getNextIntervalDate","dayDuration","getNextMonthDate","currentMonthFirstDate","thatMonthFirstDate","thatMonthDuration","currentMonthMinDate","getDateMonthFormatter","isShort","monthType","formatMonthYear","getDateMonthYearFormatter","dateMonth","dateMonthFormat","formatCaptionByMonths","firstDateText","lastDateDateText","getDifferentYearCaption","isDifferentMonthDates","useShortFormat","firstDateFormat","lastDateText","getSameYearCaption","getCaptionText","getSameDateCaption","formatMonthViewCaption","getCaption","customizationFunction","getInterval","STEP_MAP","workWeek","agenda","getViewName","validateViews","isValidView","formatViews","viewName","getViewText","isOneView","selectedView","VIEW_SWITCHER_CLASS","getViewsAndSelectedView","isSelectedViewInViews","DEFAULT_ELEMENT","SchedulerHeader","_useShortDateFormat","_getCalendarOptionUpdater","_createEventMap","_createToolbarConfig","toolbarElement","_parseItem","_isDefaultItem","defaultElementType","oneView","_updateCurrentView","viewSwitcher","getDropDownViewSwitcher","getViewSwitcher","_renderCalendar","getDateNavigator","onCurrentViewChange","_callEvent","onCurrentDateChange","initialDate","intervalOptions","_isMonth","_getDisplayedDate","useShortDateFormat","_updateCalendarValueAndCurrentDate","dateSettings","positionHelper","getPositionShiftCallback","isVerticalGroupOrientation","isGroupedAllDayPanel","groupIndices","isAllDayRowAppointment","isRecurrentAppointment","dateSetting","getCoordinateInfos","_prepareObject","recurrent","getCoordinatesByDateInGroup","dateSettingIndex","validGroupIndex","findCellPositionInMap","getCellPosition","timeShift","getTimeShift","getPositionShift","horizontalHMax","getHorizontalMax","verticalMax","getVerticalMax","cellPosition","hMax","vMax","isSkippedDate","validGroupIndices","getCoordinatesByDate","cellCoordinates","isAllDayPanel","validPosition","currentDayStart","currentDayEndHour","timeZoneDifference","currentDateTime","currentDayStartTime","VirtualStrategy","isGroupIntersectDateInterval","createRecurrentAppointmentInfos","coordinate","CellPositionCalculator","calculateCellPositions","getFormatType","formatDates","isSameDate","DateGeneratorBaseStrategy","isGroupedByDate","allDayIntervalDuration","itemGroupIndices","_getGroupIndices","appointmentList","_createAppointments","_getProcessedByAppointmentTimeZone","_canProcessNotNativeTimezoneDates","_getProcessedNotNativeTimezoneDates","_createGridAppointmentList","firstViewDates","_getAppointmentsFirstViewDate","_fillNormalizedStartDate","_cropAppointmentsByStartDayHour","_fillNormalizedEndDate","_needSeparateLongParts","_separateLongParts","appointmentOffsets","sourceOffsets_startDate","sourceOffsets_endDate","startDateOffsetDiff","endDateOffsetDiff","_createRecurrenceAppointments","resultEndTime","newDateMinusOneHour","diffStartDateOffset","_getCommonOffset","diffEndDateOffset","_getProcessedNotNativeDateIfCrossDST","newStartDate","newEndDate","testNewStartDate","testNewEndDate","isVerticalOrientation","roundedEndViewDate","currentViewEndTime","normalizedEndDate","normalizeEndDateByViewEnd","gridAppointmentList","gridAppointment","endDateOfPart","getIntervalDuration","startDatePart","offsetDifference","endViewDateByEndDayHour","daylightOffset","_createExtremeRecurrenceDates","minRecurrenceDate","maxRecurrenceDate","_createRecurrenceOptions","_getAppointmentFirstViewDate","_getAppointmentResultDate","firstViewDate","isDateAppointment","findAllDayGroupCellStartDate","findGroupCellStartDate","DateGeneratorVirtualStrategy","recurrentInfo","getGroupStartDate","appointmentCopy","viewDataGroupIndices","getGroupIndices","_updateGroupIndices","AppointmentSettingsGenerator","_generateDateSettings","cellPositions","_calculateCellPositions","_prepareAppointmentInfos","dateSettingsStrategy","infos","_getAppointmentDateText","createFormattedDateText","AppointmentPositioningStrategy","renderingStrategy","_renderingStrategy","_isCompactTheme","allDayCount","_getAppointmentDefaultOffset","_getAppointmentDefaultHeight","_getAppointmentMinCount","allDaySupported","appointmentCountPerCell","simple","_calculateDynamicAppointmentCountPerCell","_getAppointmentMaxWidth","AdaptivePositioningStrategy","getDropDownButtonAdaptiveSize","allDayHeight","collectorWidth","getDropDownAppointmentWidth","_getAppointmentDefaultWidth","BaseRenderingStrategy","_initPositioningStrategy","resizableStep","cellDurationInMinutes","leftVirtualCellCount","topVirtualCellCount","allowResizing","allowAllDayResizing","getCollectorTopOffset","getCollectorLeftOffset","_positioningStrategy","isAdaptive","initialSize","skipSorting","_maxAppointmentCountPerCell","_correctRtlCoordinates","leftVirtualWidth","topVirtualHeight","positionArray","_getSortedPositions","resultPositions","_getResultPositions","_getExtendedPositionMap","intervalWidth","getAppointmentMinSize","initialWidth","generateAppointmentSettings","calculateAppointmentHeight","calculateAppointmentWidth","resultWidth","multiWeekAppointmentParts","initialRowIndex","initialColumnIndex","_needVerifyItemSize","currentMaxAllowedPosition","isAppointmentGreaterThan","_reduceMultiWeekAppointment","_getAppointmentParts","sourceAppointmentWidth","reducedWidth","_getAppointmentPartsPosition","appointmentParts","isAppointmentTakesAllDay","getAppointmentSettingsGenerator","appointmentWidth","bound","etalon","comparisonParameters","positionList","createItem","cellCount","_sortCondition","isSomeEdge","_isSomeEdge","columnCondition","_normalizeCondition","rowCondition","cellPositionCondition","conditions","_getConditions","firstItem","secondItem","areItemsInTheSameTable","areItemsAllDay","_getOrientation","_checkItemsCrossing","firstItemSide1","firstItemSide2","secondItemSide1","secondItemSide2","sortedArray","maxIndexInStack","stack","findFreeIndex","isFind","_skipSortedIndex","startNewStack","pushItemsInResult","_isItemsCross","_getMaxAppointmentCountPerCell","iKey","jKey","iValue","jValue","positionCounter","mapLength","resultString","itemLength","_checkLongCompactAppointment","_splitLongCompactAppointment","_getMaxAppointmentCountPerCellByType","compactCount","_getCompactAppointmentParts","compactPart","_getCompactLeftCoordinate","daylightDiff","_needAdjustDuration","_calculateDurationByDaylightDiff","isApplyCompactAppointmentOffset","dropDownButtonWidth","rightOffset","countFullWidthAppointmentInCell","compactRender","supportCompactDropDownAppointments","_getCollectorLeftOffset","getDropDownAppointmentHeight","_generateAppointmentCollectorIndex","getPositioningStrategy","currentAppointmentCountInCell","resultMaxAppointmentsPerCell","dynamicAppointmentCountPerCell","_getDynamicAppointmentCountPerCell","maxAppointmentCountDisplayedInCell","maxAppointmentsCount","topOffset","appointmentHeight","getVerticalAppointmentHeight","_correctCollectorCoordinatesInAdaptive","_markAppointmentAsVirtual","_isAppointmentEmpty","_getAppointmentMinHeight","_getAppointmentMinWidth","overlappingMode","_getOffsets","appointmentDefaultOffset","_getAppointmentCount","_getDefaultRatio","unlimited","getDynamicAppointmentCountPerCell","getAppointmentDefaultOffset","_getAppointmentHeightByTheme","apptStartDate","apptEndDate","msInHour","trimmedStartDate","trimmedEndDate","quantityOfDays","dayVisibleHours","appointmentDayHours","startHours","apptStartDelta","endHours","AgendaRenderingStrategy","_getCurrentViewOption","totalResourceCount","groupAppointmentsByResources","appointmentsByResources","calculateRows","groupAppointmentByResources","groupedAppts","appts","recurrentIndexes","recurrenceBatch","getAppointmentsInstance","_processRecurrenceAppointment","appointmentBatch","_reduceRecurrenceAppointments","_combineAppointments","appt","_calculateGroupIndex","apptIndex","resultInd","countApptInGroup","needClearSettings","groupedAppointments","currentAppointments","groupResult","replaceWrongAppointmentEndDate","appointmentIsRecurrence","indexInRow","_iterateRow","getStartViewDate","calculatedStartDate","getDateByIndex","wrappedOriginalStartDate","excludedHours","checkDate","HorizontalRenderingStrategy","getAppointmentDurationInMs","_adjustDurationByDaylightDiff","durationInCells","getSkippedHoursInRange","cropAppointmentWidth","_customizeAppointmentGeometry","_calculateGeometryConfig","_customizeCoordinates","auto","itemLeft","_columnCondition","deltaWidth","positionShift","BaseAppointmentsStrategy","getCellSize","cellSize","getCellHeight","getCellWidth","getAllDayHeight","getMaxAllowedPosition","firstRow","getLastGroupCellPosition","getMaxAllowedHorizontalPosition","PositionHelper","groupStrategy","GroupStrategyBase","GroupStrategyHorizontal","getDOMMetaDataCallback","getMaxPosition","viewPortGroupCount","getViewPortGroupCount","getOffsetByAllDayPanel","getGroupTop","maxAllowedPosition","_getMaxAllowedVerticalPosition","getRowCountInGroup","lastGroupRow","_getAllDayHeight","correctedGroupIndex","HorizontalMonthLineRenderingStrategy","_getDurationInDays","getSkippedDaysCount","HOURS_IN_DAY","_getDeltaWidth","HorizontalAppointmentsStrategy","HorizontalMonthRenderingStrategy","fullWeekAppointmentWidth","getGroupWidth","_calculateMultiWeekAppointmentLeftOffset","fullChunksWidth","firstChunkWidth","weekWidth","rawFullChunksWidth","allChunksCount","viewRowIndex","_tryGetRowIndexInView","allowedChunksCount","positionStartDate","columnsCount","getColumnsCount","dataRange","dayDurationMs","timeFromStart","withoutFirstChunkWidth","leftPosition","tailChunkWidth","rtlPosition","_getChunkWidths","_getLeftPosition","hasTailChunk","chunkCount","_getChunkCount","_getTailChunkSettings","tailChunkLeftPosition","chunkIndex","topPosition","isTailChunk","getCellCount","groupedDataMap","dateTableGroupedMap","VerticalRenderingStrategy","deltaHeight","_getAllDayAppointmentGeometry","_getAdaptiveGeometry","_getVerticalAppointmentGeometry","isRecurring","appointmentBeginInCurrentView","isAppointmentTakesSeveralDays","currentSetting","resultHeight","multiDaysAppointmentParts","_isMultiViewAppointment","_reduceMultiDayAppointment","sourceAppointmentHeight","reducedHeight","currentSettingStartDate","groupTop","allDayPanelOffset","appointmentGeometry","_getGroupTopOffset","_getGroupHeight","currentPartTop","cellsDiff","hasTailPart","tailHeight","_getTailHeight","_calculateVerticalGeometryConfig","_customizeVerticalCoordinates","appointmentLeft","_getMaxWidth","durationInHours","skippedHours","_getMinuteHeight","_rowCondition","minAppointmentCountPerCell","WeekAppointmentRenderingStrategy","RENDERING_STRATEGIES","horizontalMonth","HorizontalMonthAppointmentsStrategy","horizontalMonthLine","HorizontalMonthLineAppointmentsStrategy","VerticalAppointmentsStrategy","AgendaAppointmentsStrategy","AppointmentViewModelGenerator","RenderingStrategy","appointmentRenderingStrategyName","isRenovatedAppointments","initRenderingStrategy","positionMap","getRenderingStrategy","createTaskPositionMap","makeRenovatedViewModels","keepAppointmentSettings","regularViewModels","allDayViewModels","compactOptions","prepareViewModel","compactViewModel","appointmentViewModel","compactViewModels","prepareCompactViewModels","getAppointmentGeometry","getCompactViewModelFrame","resourceColor","AppointmentLayoutManager","currentViewType","_workSpace","workspace","getWorkSpace","virtualScrollingDispatcher","cellCountInsideLeftVirtualCell","cellCountInsideTopVirtualRow","getDOMElementsMetaData","_isVerticalGroupedWorkSpace","_getRowCount","getVisibleDayDuration","createGetAppointmentColor","_dataAccessors","_allowResizing","_allowAllDayResizing","_getRealGroupOrientation","getEndViewDate","renderingStrategyOptions","_getRenderingStrategyOptions","_positionMap","appointmentDataProvider","getUpdatedAppointment","getUpdatedAppointmentKeys","sourceSetting","createSettingsToCompare","newSettings","oldSettings","sourceAppointments","_getAssociatedSourceAppointment","isDataChanged","_isDataChanged","isSettingChanged","_isSettingChanged","isAppointmentShouldAppear","_isAppointmentShouldAppear","_getDeletedAppointments","AppointmentTooltipInfo","targetedAppointment","APPOINTMENT_COLLECTOR_CLASS","COMPACT_APPOINTMENT_COLLECTOR_CLASS","APPOINTMENT_COLLECTOR_CONTENT_CLASS","CompactAppointmentsHelper","_createCompactButton","_makeBackgroundColor","_makeBackgroundDarker","_createTooltipInfos","targetedAdapter","showAppointmentTooltipCore","_getExtraOptionsForTooltip","$appointmentCollector","_clickEvent","dragBehavior","_createTooltipDragBehavior","dropDownAppointmentTemplate","isButtonClick","clickEventArgs","_createEventArgs","$schedulerElement","workSpace","initialPosition","isSetCursorOffset","getItemSettings","itemSettings","_createDragBehaviorBase","_getCollectorRightOffset","getRenderingStrategyInstance","_makeBackgroundColorCore","itemColors","getOverflowIndicatorColor","_createCompactButtonElement","_onButtonClick","_renderTemplate","_setPosition","_initButtonTemplate","_getAppointmentTemplate","appointmentCollector","_createButtonTemplate","subscribes","isCurrentViewAgenda","currentViewUpdated","currentDateUpdated","getWorkspaceOption","setCellDataCacheAlias","showAppointmentTooltip","getTargetedAppointment","hideAppointmentTooltip","showEditAppointmentPopup","targetedData","showAppointmentPopup","updateAppointmentAfterResize","_checkRecurringAppointment","_updateAppointment","_appointments","getUpdatedData","_getUpdatedData","updateAppointmentAfterDrag","newCellIndex","oldCellIndex","targetedRawAppointment","becomeAllDay","wasAllDay","movedBetweenAllDayAndSimple","isDragAndDropBetweenComponents","fromComponent","toComponent","onDeleteButtonPress","checkAndDeleteAppointment","getTextAndFormatDate","appointmentRaw","targetedAppointmentRaw","_createAppointmentTitle","getResizableAppointmentArea","getLayoutManager","_needHorizontalGroupBounds","horizontalGroupBounds","getGroupBounds","_needVerticalGroupBounds","verticalGroupBounds","needRecalculateResizableArea","getDeltaTime","_getViewCountConfig","getMaxAppointmentCountPerCellByType","needCorrectAppointmentDates","getRenderingStrategyDirection","updateAppointmentEndDate","renderCompactAppointments","_compactAppointmentsHelper","clearCompactAppointments","_getGroupCount","mapAppointmentFields","dayHasAppointment","getAgendaVerticalStepHeight","getAgendaDuration","forceMaxAppointmentPerCell","onAgendaReady","$appts","applyClass","getTimezone","_getTimezoneOffsetByOption","getTargetedAppointmentData","getEndDayHour","removeDroppableCellClass","PromiseItem","AgendaResourceProcessor","resourceDeclarations","_resourceDeclarations","resourceMap","appointmentPromiseQueue","resultAsync","_onPullResource","_pushAllResources","_hasResourceDeclarations","_tryPullResources","TOOLTIP_APPOINTMENT_ITEM","TOOLTIP_APPOINTMENT_ITEM_CONTENT","TOOLTIP_APPOINTMENT_ITEM_CONTENT_SUBJECT","TOOLTIP_APPOINTMENT_ITEM_CONTENT_DATE","TOOLTIP_APPOINTMENT_ITEM_MARKER","TOOLTIP_APPOINTMENT_ITEM_MARKER_BODY","TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON_CONTAINER","TOOLTIP_APPOINTMENT_ITEM_DELETE_BUTTON","TooltipStrategyBase","_tooltip","_extraOptions","dataList","_canShowTooltip","_showCore","_shouldUseTarget","_createTooltip","_prepareBeforeVisibleChanged","listElement","_createList","_onListRender","_onListItemClick","_onListItemContextMenu","_createListOption","itemListContent","_createItemListContent","_getItemListTemplateName","getAppointmentTemplate","_createFunctionTemplate","isButtonClicked","isEmptyDropDownAppointmentTemplate","_isEmptyDropDownAppointmentTemplate","_createItemListMarker","_createItemListInfo","getAppointmentDisabled","allowDeleting","_createDeleteButton","$marker","$markerBody","$date","$deleteButton","APPOINTMENT_TOOLTIP_WRAPPER_CLASS","DesktopTooltipStrategy","_getBoundary","isAppointmentInAllDayPanel","getScrollableContainer","_createTooltipElement","_onShown","_getContentTemplate","contextMenuEventArgs","createEventArgs","SLIDE_PANEL_CLASS_NAME","MAX_HEIGHT","MAX_WIDTH","animationConfig","MobileTooltipStrategy","isTabletWidth","listHeight","currentMaxHeight","createTabletDeviceConfig","createPhoneDeviceConfig","ROW_SELECTOR","SchedulerTableCreator","allDayElements","tableBody","templateCallbacks","rowCountInGroup","allDayElementIndex","insertAllDayRow","isLastRowInGroup","rowClass","cellClass","cellDataObject","dataKey","setAdditionalClasses","additionalTemplateData","getCellText","getCellDate","getCellTextClass","_makeVerticalGroupedRows","_makeHorizontalGroupedRows","table","cellStorage","cellTag","childrenField","titleField","groupTableClass","groupRowClass","groupCellClass","groupCellCustomContent","getChildCount","createCell","childCount","cellText","generateCells","cells","rowspans","repeatByDate","groupHeaderClass","cellTemplates","cellsArray","cellIterator","_makeFlexGroupedRowCells","groupHeaderRowClass","_i2","currentColumnLength","_makeGroupedRowCells","maxCellCount","groupHeaderContentClass","tableCreator","getMemoizeScrollTo","getScrollableInstance","lastParams","normalizedParams","isSameParams","DateTable","dataCellTemplate","CellProps","OrdinaryCell","HeaderCell","VirtualCell","isHeaderCell","RowProps","leftVirtualCellWidth","rightVirtualCellWidth","isHeaderRow","Row","rightVirtualCellCount","hasLeftVirtualCell","hasRightVirtualCell","VirtualRowProps","cellsCount","VirtualRow","virtualCells","Table","heightAdded","topVirtualRowHeight","bottomVirtualRowHeight","hasBottomVirtualRow","hasTopVirtualRow","tableRef","virtualCellsCount","DefaultSizes","CellBaseProps","contentTemplateProps","CellBase","ariaLabel","DateTableCellBaseProps","otherMonth","firstDayOfMonth","DateTableCellBase","dataCellTemplateProps","DataCellTemplate","Cell","AllDayPanelCell","AllDayPanelTableBodyProps","viewData","AllDayPanelTableBody","cellGroupIndex","LayoutProps","groupedData","topVirtualRowCount","bottomVirtualRowCount","addDateTableClass","addVerticalSizesClassToRows","AllDayTableProps","AllDayTable","allDayPanelData","allDayPanel","emptyTableHeight","AllDayTableComponent","AllDayPanelTitle","_objectDestructuringEmpty","AllDayPanelTitleComponent","DateTableBodyProps","DateTableBody","rowClasses","dateTable","fragmentKey","rowKey","DateTableLayoutProps","DateTableLayoutBase","_this$props$viewData$","_this$props$viewData$2","_this$props$viewData$3","_this$props$viewData$4","DateTableLayoutBaseComponent","GroupPanelWrapper","resourceCellTemplate","GroupPanelBaseProps","groupPanelData","groupPanelItems","baseColSpan","GroupPanelCellProps","GroupPanelVerticalCell","CellTemplate","GroupPanelRowProps","GroupPanelLayoutProps","VerticalGroupPanelLayoutProps","GroupPanelVerticalLayout","GroupPanelHorizontalCellProps","GroupPanelHorizontalCell","HorizontalGroupPanelLayoutProps","GroupPanelHorizontalLayout","colSpans","reduceRight","currentColSpans","groupsRow","nextColSpans","currentLevelGroupCount","previousColSpan","groupCountDiff","groupsRenderRow","GroupPanelProps","GroupPanel","isVerticalLayout","GroupPanelComponent","HeaderPanel","dateHeaderData","dateCellTemplate","timeCellTemplate","DateHeaderText","splitText","DateHeaderCellProps","isWeekDayCell","isTimeCellTemplate","DateHeaderCell","cellClasses","DateCellTemplate","TimeCellTemplate","useTemplate","DateHeaderLayoutProps","DateHeaderLayout","dateHeaderRow","HeaderPanelLayoutProps","isRenderDateHeader","dateHeaderTemplate","HeaderPanelLayout","DateHeader","HeaderPanelLayoutComponent","TimePanel","TimePanelCellProps","TimePanelCell","timeCellTemplateProps","TimePanelLayoutProps","timePanelData","TimePanelTableLayout","_this$props$timePanel","_this$props$timePanel2","TimePanelTableLayoutComponent","targetDraggable","sourceDraggable","WidgetObserver","DRAGGABLE","DRAG_EVENT_NAME","DRAGEND_EVENT_NAME","DRAG_ENTER_EVENT_NAME","dragEventEnter","DRAGEND_LEAVE_EVENT_NAME","dragEventLeave","POINTERDOWN_EVENT_NAME","KEYDOWN_EVENT_NAME","CLONE_CLASS","getMousePosition","ScrollHelper","_$scrollableAtPointer","_preventScroll","_scrollValue","_overFlowAttr","_sizeAttr","_scrollSizeProp","_clientSizeProp","_limitProps","mousePosition","isScrollableFound","isTargetOverOverlayWrapper","isTargetOverOverlayContent","_trySetScrollable","_scrollSpeed","distanceToBorders","isScrollable","_calculateDistanceToBorders","_calculateScrollSpeed","areaBoundingRect","maxSpeed","scrollableInstance","nextScrollPosition","_nextScrollPosition","dragMoveArgs","_dragMoveArgs","_dragMoveHandler","scrollableSize","ScrollAnimator","horizontalScrollHelper","_horizontalScrollHelper","verticalScrollHelper","_verticalScrollHelper","scrollByStep","Draggable","dragMove","dragEnter","dragLeave","dragEnd","sourceEvent","_getSourceDraggable","_fireRemoveEvent","onDragStart","onDragMove","onDragEnd","onDragEnter","onDragLeave","onDragCancel","onCancelByEsc","onDrop","dragDirection","boundOffset","allowMoveByClick","dragTemplate","autoScroll","scrollSpeed","scrollSensitivity","_scrollAnimator","_initScrollTop","_initScrollLeft","_normalizeCursorOffset","_getNormalizedCursorOffset","_calculateElementOffset","elementOffset","dragElementOffset","$dragElement","dragElement","isCloned","_dragElementIsCloned","cursorOffset","normalizedCursorOffset","currentLocate","_initialLocate","initialOffset","_initPosition","_startPosition","_startAnimator","_stopAnimator","_getItemsSelector","itemsSelector","targetGroup","sourceGroup","_getScrollable","isOutsideScrollable","_dragEnterHandler","_dragLeaveHandler","_keydownHandler","_$dragElement","_getDragTemplateArgs","_createDragElement","_getContainer","_resetDragElement","_toggleDraggingClass","_resetSourceElement","_toggleDragSourceClass","_$sourceElement","_getDraggableElement","$sourceElement","_getSourceElement","_getAction","_getEventArgs","_isValidElement","dragInProgress","dragStartArgs","_getDragStartArgs","_setSourceDraggable","_hasClonedDraggable","_getScrollableScrollTop","_getScrollableScrollLeft","_getDraggableElementOffset","_setGestureCoverCursor","isFixedPosition","_getAreaOffset","_getBoundOffset","areaWidth","areaHeight","startOffset_left","startOffset_top","initialOffsetX","initialOffsetY","initScrollTop","initScrollLeft","_updateScrollable","_getTargetDraggable","allObjects","updateScrollable","fromData","toData","_revertItemToInitialPosition","dragEndEventArgs","dropEventArgs","needRevertPosition","_resetDragOptions","_isTargetOverAnotherDraggable","$sourceDraggableElement","$targetDraggableElement","firstWidgetElement","isTargetOverItself","isTargetOverNestedDraggable","_fireDragEnterEvent","_setTargetDraggable","_fireDragLeaveEvent","_resetTargetDraggable","_keydownEscapeHandler","dragCancelEventArgs","currentGroup","_resetSourceDraggable","AppointmentDragBehavior","dragBetweenComponentsPromise","getAppointmentElement","getDroppableCellIndex","getCellIndexByCoordinates","removeDroppableClasses","dataFromTooltip","itemDataFromTooltip","itemDataFromGrid","updatedData","toItemData","onRemove","_getDragBehavior","onAdd","createDragStartHandler","createDragMoveHandler","createDragEndHandler","createDropHandler","currentSettings","_setDragSourceAppointment","DATE_TIME_SHADER_CLASS","CurrentTimeShader","_dateTableScrollable","initShaderElements","renderShader","_shader","shader","_$shader","createShader","DATE_TIME_SHADER_ALL_DAY_CLASS","VerticalCurrentTimeShader","shaderHeight","_getShaderHeight","_getShaderMaxHeight","isSolidShader","_renderGroupedByDateShaderParts","_renderShaderParts","shaderWidth","_getShaderWidth","_renderTopShader","_renderBottomShader","_renderAllDayShader","bottomShaderWidth","$shader","_$topShader","_getShaderTopOffset","_getShaderOffset","_$bottomShader","_$allDayIndicator","_$allDayPanel","getGroupedStrategy","getShaderOffset","getShaderTopOffset","getShaderHeight","getShaderMaxHeight","getShaderWidth","CellsSelectionController","nextCellIndices","focusedCellPosition","edgeIndices","getCellDataByPosition","isAllDayPanelCell","getCellFromNextRowPosition","getCellFromNextColumnPosition","currentCellData","moveToCell","nextRowIndex","lastRowIndex","isMultiSelection","firstColumnIndex","lastColumnIndex","firstRowIndex","nextColumnIndex","_processEdgeCell","validColumnIndex","validRowIndex","isValidRowIndex","_nextRowIndex","_isValidRowIndex","isMultiSelectionAllowed","focusedCellData","nextFocusedCellData","isVirtualCell","_isValidNextFocusedCell","nextAllDay","getSelectedCells","firstSelectedCell","lastSelectedCell","isLastSelectedCellAllDay","firstCell","lastCell","firstGroupIndex","firstCellIndex","firstStartDate","lastCellIndex","lastStartDate","filteredCells","getCellsByGroupIndexAndAllDay","selectedCells","cellsRow","filteredRow","filterData","lastDate","daysAndIndexes","validFirstIndex","validLastIndex","compareCellsByDateAndIndex","filterCellsByDateAndIndex","firstArg","secondArg","CellsSelectionState","_viewDataProvider","_focusedCell","_selectedCells","_firstSelectedCell","_prevFocusedCell","_prevSelectedCells","focusedCell","cellData","lastCellCoordinates","firstCellCoordinates","isLastCellAllDay","selectedCellsData","releaseSelectedCells","releaseFocusedCell","_prevFirstSelectedCell","DOCUMENT_SCROLL_EVENT_NAMESPACE","scrollingOrientations","DefaultScrollingOrientation","VirtualScrollingDispatcher","_rowHeight","_cellWidth","_createVirtualScrollingBase","_verticalVirtualScrolling","_horizontalVirtualScrolling","getSchedulerHeight","getSchedulerWidth","getScrolling","outlineCount","getViewWidth","getWindowWidth","getViewHeight","getWindowHeight","verticalScrollingState","virtualItemCountBefore","horizontalScrollingState","virtualItemCountAfter","cellCountInsideRightVirtualCell","virtualItemSizeBefore","verticalVirtualScrolling","horizontalVirtualScrolling","scrollingState","scrollingOrientation","itemSize","rowHeight","viewportSize","viewportHeight","viewportWidth","verticalRenderState","getRenderState","horizontalRenderState","minCellWidth","getCellMinWidth","isCalculateTime","isVerticalDirectionView","timeToScroll","cellStartTime","cellEndTime","scrollInCell","getScrollableOuterWidth","_onScrollHandler","isVerticalVirtualScrollingCreated","isHorizontalVirtualScrollingCreated","verticalScrollingAllowed","horizontalScrollingAllowed","VerticalVirtualScrolling","HorizontalVirtualScrolling","isAttachWindowScrollEvent","_attachWindowScroll","createAction","handleOnScrollEvent","verticalStateChanged","horizontalStateChanged","updateRender","isForce","needUpdateVertical","reinitState","needUpdateHorizontal","updateGrid","VirtualScrollingBase","defaultState","_itemSize","_itemSizeChanged","prevPosition","outlineCountBefore","outlineCountAfter","virtualItemSizeAfter","outlineSizeBefore","outlineSizeAfter","getTotalItemCount","isStartIndexChanged","_validateAndSavePosition","maxScrollPosition","currentItemsCount","_correctPosition","needUpdateState","itemsInfoBefore","_calcItemInfoBefore","itemsDeltaBefore","_calcItemDeltaBefore","_calcItemInfoAfter","itemCountWithAfter","itemCountBefore","_updateStateCore","isForceUpdate","itemInfoBefore","prevVirtualItemSizeBefore","prevVirtualItemSizeAfter","prevOutlineSizeBefore","prevOutlineSizeAfter","isAppend","isPrepend","_updateStateVirtualItems","getTotalRowCount","startRowIndex","getTotalCellCount","startCellIndex","VirtualScrollingRenderer","_workspace","_renderAppointmentTimeoutID","_renderGrid","_renderAppointments","renderWorkSpace","renderTimeout","getRenderTimeout","updateAppointments","HorizontalGroupedStrategy","inAllDay","_getCellCount","groupByDay","getTimePanelWidth","startCell","endCell","extraOffset","$cells","_createGroupBoundOffset","_getGroupedByDateBoundOffset","currentCellGroup","groupRowLength","groupStartPosition","groupEndPosition","$indicator","_getIndicatorOffset","horizontalOffset","_calculateGroupByDateOffset","getIndicatorOffset","getRoundedCellWidth","getIndicationHeight","getIndicationWidth","applyUnconditionally","_addLastGroupCellClass","_addFirstGroupCellClass","VerticalGroupedStrategy","_getWorkSpaceWidth","workspaceContainerWidth","getGroupTableWidth","$firstCell","$lastCell","dayHeight","getScrollableScrollTop","_$thead","bottomOffset","_groupBoundsOffset","tableOffset","verticalOffset","getWorkSpaceLeftOffset","getGroupPanelData","columnCountPerGroup","groupRenderItems","currentGroupItems","currentRow","extendGroupItemsForGroupingByDate","__rest","getOwnPropertySymbols","propertyIsEnumerable","DateHeaderDataGenerator","_viewDataGenerator","completeViewDataMap","isGenerateWeekDaysHeaderData","weekDaysRow","_generateWeekDaysHeaderRowMap","dateRow","_generateHeaderDateRow","cellCountInDay","getCellCountInDay","horizontalGroupCount","datesRepeatCount","daysInView","daysInInterval","headerCellTextFormat","getDateForHeaderText","cellCountInGroupRow","headerIndex","additionalOptions","validDate","getHeaderCellText","completeDateHeaderMap","isProvideVirtualCellsWidth","isMonthDateHeader","weekDayRowConfig","validCellWidth","_generateDateHeaderDataRow","datesRowConfig","weekDayLeftVirtualCellWidth","weekDayRightVirtualCellWidth","weekDayLeftVirtualCellCount","weekDayRightVirtualCellCount","actualCellCount","finalLeftVirtualCellCount","finalRightVirtualCellCount","GroupedDataMapProvider","viewDataGenerator","viewDataMap","viewOptions","generateGroupedDataMap","_viewOptions","getFirstGroupRow","lastRow","getLastGroupRow","isFindByDate","getGroupFromDateTableGroupMap","checkCellStartDate","startDateVerticalSearch","startDateHorizontalSearch","isStartDateInCell","allDayPanelGroupedMap","_isSameGroupIndexAndIndex","getGroupEndDate","groupRow","getValidStartDate","getTimePanelCellText","startViewDateWithoutDST","timeCellDuration","startViewDateOffset","getTimeCellDate","TimePanelDataGenerator","getRowCount","allDayRowsCount","restCellProps","timeIndex","completeTimePanelMap","correctedStartRowIndex","timePanelMap","_generateTimePanelDataFromMap","previousGroupedData","previousGroupIndex","currentGroupIndex","HOUR_MS","DAY_MS","ViewDataGenerator","isWorkView","tableAllDay","_calculateStartViewDate","_setVisibilityDates","setHiddenInterval","groupsList","_generateAllDayPanelData","viewCellsData","_generateViewCellsData","_transformViewDataMapForHorizontalGrouping","_transformViewDataMapForVerticalGrouping","_transformViewDataMapForGroupingByDate","_addKeysToCells","nextGroupRow","nextGroupMap","correctedGroupList","correctedGroupCount","groupedByDateCellsRow","rowWithCurrentCell","totalColumnCount","allDayPanelsCount","currentViewDataMap","keyBase","currentAllDayPanelsCount","sliceCells","sliceToIndex","allDayPanelMap","_isStandaloneAllDayPanel","dateTableMap","cellDataRow","isAllDayRow","totalCellCount","totalRowCount","_generateCellsRow","cellDataValue","_isFirstGroupCell","_isLastGroupCell","prepareAllDayCellData","prepareCellData","getDateByCellIndices","isStartViewDateDuringDST","dateWithCorrectHours","columnCountBase","rowCountBase","_calculateCellIndex","millisecondsOffset","getMillisecondsOffset","offsetByCount","getTimeOffsetByColumnIndex","startViewDateTime","firstDayOfWeekDiff","columnsInWeek","weekendCount","calculateCellIndex","previousOptions","previousGroupedDataMap","previousRowIndex","currentRowIndex","renderOptions","nextDateTableMap","_markSelectedAndFocusedCellsInRow","dataRow","indexInSelectedCells","selectedCellIndex","selectedCellGroupIndex","selectedCellAllDay","selectedCellStartDate","columnCountInDay","ViewDataGeneratorDay","calculateStartViewDate","_getIntervalDuration","validStartViewDate","isFirstCellInMonthWithIntervalCount","DAY_IN_MILLISECONDS","ViewDataGeneratorMonth","isCurrentDate","isOtherMonth","_minVisibleDate","_maxVisibleDate","viewStart","firstMonthDate","nextMonthDate","fromDate","toDate","alignedFromDate","alignToFirstDayOfWeek","alignedToDate","alignToLastDayOfWeek","weekCount","msDiff","MS_IN_DAY","calculateDaysBetweenDates","calculateAlignedWeeksBetweenDates","ViewDataGeneratorTimelineMonth","ViewDataGeneratorWeek","isDataOnWeekend","getWeekendsCount","ViewDataGeneratorWorkWeek","MONDAY_INDEX","getViewDataGeneratorByViewType","dayDiff","ViewDataProvider","_groupedDataMapProvider","isGenerateNewViewData","dateHeaderDataGenerator","timePanelDataGenerator","_transformRenderOptions","getCompleteViewDataMap","getCompleteDateHeaderMap","isGenerateTimePanelData","getCompleteTimePanelMap","generateViewDataMap","updateViewData","generateDateHeaderData","generateTimePanelData","viewDataMapWithSelection","markSelectedAndFocusedCells","getViewDataFromMap","restOptions","rowsPerGroup","_getRowCountWithAllDayRows","isShowAllDayPanel","firstRowInGroup","lastRowInGroup","correctedFirstRow","correctedLastRow","currentAllDay","_compareDatesAndAllDay","cellStartDate","cellEndDate","trimmedTime","includedDays","lastCellStart","daysAfterView","firstCellData","secondCellData","firstAllDay","secondStartDate","secondGroupIndex","secondAllDay","getLastViewDate","lastCellEndDate","getLastCellEndDate","endDateOfLastViewCell","_adjustEndDateByDaylightDiff","allDayRowCount","tableCreatorModule","WORKSPACE_VERTICAL_GROUP_TABLE_CLASS","TIME_PANEL_CELL_CLASS","ALL_DAY_PANEL_CLASS","ALL_DAY_TABLE_CLASS","ALL_DAY_TITLE_CLASS","ALL_DAY_TABLE_CELL_CLASS","WORKSPACE_WITH_MOUSE_SELECTION_CLASS","HORIZONTAL_SIZES_CLASS","VERTICAL_SIZES_CLASS","GROUP_HEADER_CLASS","DATE_TABLE_CELL_CLASS","DATE_TABLE_DROPPABLE_CELL_CLASS","SCHEDULER_WORKSPACE_DXPOINTERDOWN_EVENT_NAME","DragEventNames","ENTER","DROP","dragEventDrop","LEAVE","SCHEDULER_CELL_DXCLICK_EVENT_NAME","SCHEDULER_CELL_DXPOINTERDOWN_EVENT_NAME","SCHEDULER_CELL_DXPOINTERUP_EVENT_NAME","SCHEDULER_CELL_DXPOINTERMOVE_EVENT_NAME","CELL_DATA","DRAG_AND_DROP_SELECTOR","CELL_SELECTOR","SchedulerWorkSpace","_cellsSelectionState","selectedCellsOption","validSelectedCells","selectedCell","_getGroupIndexByResourceId","setSelectedCellsByData","_cellsSelectionController","_isShowAllDayPanel","dxrDateHeader","cellsSelectionState","selectedCellsElement","_getCellByData","_showPopup","onArrowPressed","_isRTL","_isHorizontalGroupedWorkSpace","getGroupEdgeIndices","getViewEdgeIndices","nextCellData","cellsSelectionController","handleArrowClick","_processNextSelectedCell","_getFullCellData","nextCellPosition","isSameCell","_dom_getAllDayPanelCell","_dom_getDateCell","isNextCellAllDay","_setSelectedCellsStateAndUpdateSelection","$nextFocusedCell","nextCellCoordinates","setFocusedCell","setSelectedCells","updateCellsSelection","_updateSelectedCellDataOption","_isCellClick","_contextMenuHandled","restoreSelectedAndFocusedCells","releaseSelectedAndFocusedCells","generateRenderOptions","_$allDayTitle","_$headerPanelEmptyCell","_groupedStrategy","_needCreateCrossScrolling","_createCrossScrollingConfig","currentOnScroll","_onScroll","_scrollSync","sidebar","_updateGroupTableHeight","_setTableSizes","_attachTableClasses","getWorkSpaceMinWidth","_getTotalCellCount","_$headerPanel","_$dateTable","_$allDayTable","_attachHeaderTableClasses","updateHeaderEmptyCellWidth","renovatedRenderSupported","isRenovatedRender","_isVirtualModeOn","_getVirtualScrollingDispatcherOptions","attachScrollableEvents","_getDefaultGroupStrategy","_getToday","_getFormat","_setHorizontalGroupHeaderCellsHeight","_isRenderHeaderPanelEmptyCell","timePanelWidth","groupPanelWidth","resourceTree","_getGroupIndexRecursively","areValuesEqual","_calculateViewStartDate","cellSelector","_handleSelectedCellsClick","_getCoordinatesByCell","isAllDayCell","_hasAllDayClass","lastCellData","_createContextMenuAction","_contextMenuAction","_$groupTable","calculateHeaderCellRepeatCount","_headerScrollable","_sidebarScrollable","_getCellCountInDay","includeAllDayPanelRows","getGroupIndex","_attachDragEvents","_attachPointerEvents","_detachDragEvents","_isOutsideScrollable","preventDefaultDragging","isPointerDown","_moveToCell","_$dateTableContainer","_$timePanel","getLeftOffset","_firstDayOfWeek","startDayTime","timeZoneOffset","fullInterval","_getDaysOfInterval","weekendsCount","_getWeekendsCount","_getDateTables","prepareCellIndexes","findGlobalCellPosition","calculateCoordinatesByDataAndPosition","$dateTableScrollableElement","isTargetInAllDayPanel","isOutsideHorizontalScrollable","isOutsideVerticalScrollable","aliasKey","_filterCellDataFields","_getDataByCell","virtualRowOffset","virtualCellOffset","topVirtualRowsCount","leftVirtualCellsCount","timeInterval","_getIntervalBetween","_updateIndex","$droppableCell","_getDroppableCell","$row","getEndViewDateByEndDayHour","getAllDayOffset","topIndex","leftIndex","groupBounds","getGroupBoundsVertical","getGroupBoundsHorizontal","getGroupBoundsRtlCorrection","$firstAndLastCells","_getFirstAndLastDataTableCell","getGroupBoundsOffset","_getCells","scrolledCellCount","needUpdateScrollPosition","_getCellsInViewport","_isGroupsSpecified","scrollableScrollTop","scrollableScrollLeft","getScrollableScrollLeft","fullScrolledRowCount","scrolledRowCount","fullScrolledColumnCount","scrolledColumnCount","_getAllCells","_isValidScrollDate","_getScrollCoordinates","throwWarning","isScrollToAllDay","scrollableHeight","scrollableWidth","xShift","yShift","$cellElement","correctedSelectedCellData","_getDateTableDOMElementsInfo","_getAllDayPanelDOMElementsInfo","dateTableCells","_getDateTable","dateTableRect","_addCellMetaData","allDayCells","allDayAppointmentContainer","allDayPanelRect","cellMetaDataArray","parentRect","cellRect","_getDateGenerationOptions","componentsToRender","timePanel","renderRHeaderPanel","renderRTimeTable","renderRDateTable","renderRAllDayPanel","dxrDateTableLayout","_getRDateTableProps","verticalGroupTableClass","_attachGroupCountClass","_getGroupHeaderContainer","dxrGroupPanel","_detachGroupCountClass","_toggleAllDayVisibility","dxrAllDayPanelTable","dxrAllDayPanelTitle","dxrTimePanelTableLayout","renovatedHeaderPanelComponent","_createDragBehavior","getWorkArea","$targetElement","rootElement","addTo","createDragBehaviorConfig","isDefaultDraggingMode","allDayExpanded","allowMultipleCellSelection","renovateRender","draggingMode","onScrollEnd","onRenderAppointments","onShowAllDayPanel","onSelectedCellsClick","schedulerHeight","schedulerWidth","_cleanWorkSpace","_cleanView","_removeAllDayElements","_initGrouping","_initGroupedStrategy","_createAllDayPanelElements","_toggleGroupByDateClass","_changeAllDayVisibility","_attachTablesEvents","_toggleWorkSpaceCountClass","_toggleHorizontalScrollClass","_dateTableScrollableConfig","updateShowAllDayPanel","isHiddenAllDayPanel","_getTotalRowCount","_toggleGroupedClass","_toggleWorkSpaceWithOddCells","_renderView","_getElementClass","groupedStrategy","_toggleGroupingDirectionClass","_isWorkSpaceWithCount","_isWorkspaceWithOddCells","addAdditionalGroupCellClasses","_$headerPanelContainer","_$headerTablesContainer","_$fixedContainer","_$allDayContainer","_$dateTableScrollableContent","_$sidebarScrollableContent","_initAllDayPanelElements","createRAllDayPanelElements","_allDayTitles","_allDayTables","_allDayPanels","$dateTableScrollable","_createWorkSpaceScrollableElements","_createWorkSpaceStaticElements","_appendHeaderPanelEmptyCellIfNecessary","_$flexContainer","_createHeaderScrollable","_createSidebarScrollable","$headerScrollable","_headerScrollableConfig","$timePanelScrollable","_addTableClass","_initWorkSpaceUnits","_initVirtualScrolling","_initDateTableScrollable","_createWorkSpaceElements","_renderDateTimeIndication","_setIndicationUpdateInterval","renderRGroupPanel","_applyCellTemplates","_renderGroupHeader","VerticalShader","renderRWorkSpace","getGroupCountClass","isUpdateScrollable","_cleanTableWidths","clearSelectedAndFocusedCells","_$sidebarTable","_interval","_disposeRenovatedComponents","renovatedAllDayPanel","renovatedDateTable","renovatedTimePanel","renovatedGroupPanel","renovatedHeaderPanel","updateDragSource","$allDayTitle","_renderDateHeader","_renderTimePanel","_renderGroupAllDayPanel","_renderDateTable","_renderAllDayPanel","_initPositionHelper","groupRows","_makeGroupRows","tableCreatorStrategy","makeGroupedTable","_getGroupHeaderClass","_getDateHeaderContainer","_getDateHeaderTemplate","_getCalculateHeaderCellRepeatCount","_columnIndex","_templateIndex","_renderDateHeaderTemplate","templateIndex","panelCellIndex","validTemplateIndex","_getHeaderPanelCellClass","_getGroupsForDateHeaderTemplate","indexMultiplier","_getGroupIndex","_renderTableBody","_getAllDayPanelCellClass","_oldRender_getAllDayCellData","calculateTimeCellRepeatCount","_getTimePanelRowCount","_getTimeCellClass","_insertAllDayRowsIntoDateTable","_getDateTableCellClass","fullValue","insertAllDayRowsIntoDateTable","delayCellTemplateRendering","makeTable","enableDefaultDragging","disableDefaultDragging","getDroppableCell","getDateTables","isItemDisabled","appointmentIndex","isWideAppointment","isNarrowAppointment","dragElementContainer","boundingRect","newX","newY","isMoveUnderControl","dateTables","droppableCell","GROUP_TABLE_CLASS","SchedulerAgenda","_startViewDate","_recalculateAgenda","_initGroupTable","validCurrentDate","_rowsIsEmpty","_renderNoData","_setGroupHeaderCellsHeight","_$noDataContainer","_getGroupHeaderCells","_removeEmptyRows","$cellContent","_getGroupRowHeight","createReducedResourcesTree","makeGroupedTableFromJSON","cellTextElement","contentWrapper","groupsOpt","isGroupedView","cellTemplateOpt","_$rows","fillTableBody","rowSize","cellDateNumber","cellDayName","$td","_getRowHeight","getStartDate","_prepareCellTemplateOptions","_setLastRowClass","_getTimePanelStartDate","baseHeight","_calculateRows","getVisibleBounds","startDateHour","startDateMinutes","scrollToTime","newData","isUpdateNeeded","WorkSpace","validIndex","TimelineDateHeaderLayout","isWeekDayRow","validLeftVirtualCellCount","validRightVirtualCellCount","validRightVirtualCellWidth","validLeftVirtualCellWidth","TimelineHeaderPanelLayout","TimelineHeaderPanelLayoutComponent","HorizontalCurrentTimeShader","isFirstShader","_customizeGroupedByDateShader","_customizeShader","_applyShaderWidth","indicationWidth","shaderLeft","getIndicationCellCount","fractionPart","isFirstShaderPart","SCHEDULER_DATE_TIME_INDICATOR_CLASS","TIME_PANEL_CURRENT_TIME_CELL_CLASS","SchedulerWorkSpaceIndicator","isIndicationAvailable","isIndicationOnView","isIndicatorVisible","_getRtlOffset","_renderIndicator","_setCurrentTimeCells","groupedByDate","_createIndicator","shiftIndicator","_clearIndicatorUpdateInterval","_indicatorInterval","_refreshDateTimeIndication","_getIndicatorDuration","timeDiff","timezoneUtils","_cleanDateTimeIndicator","_cleanCurrentTimeCells","timePanelCells","_getTimePanelCells","_getCurrentTimePanelCellIndices","timePanelCellIndex","_isCurrentTimeHeaderCell","cellIndices","rowCountPerGroup","getCellIndexByDate","currentTimeRowIndex","_getCellCoordinatesByIndex","verticalGroupCount","currentIndices","HEADER_PANEL_CELL_CLASS","HEADER_PANEL_WEEK_CELL_CLASS","SchedulerTimeline","dxrTimelineDateHeader","timelineConfig","_getTimeDiff","_calculateDurationInCells","_getIndicationFirstViewDate","dayLightOffset","_getWorkSpaceMinHeight","_getWorkSpaceHeight","workspaceContainerHeight","getHeaderPanelHeight","firstViewDateTime","apptStart","fullDays","tailDuration","tailDelta","gapBeforeAppt","_needRenderWeekHeader","groupCellTemplates","HorizontalShader","currentTimeColumnIndex","cellsInGroup","$th","_incrementDate","SchedulerTimelineDay","SchedulerTimelineMonth","SchedulerTimelineWeek","SchedulerTimelineWorkWeek","SchedulerWorkspaceVertical","SchedulerWorkSpaceDay","SchedulerWorkSpaceVertical","MonthDateTableCell","MonthDateTableLayout","MonthDateTableLayoutComponent","SchedulerWorkSpaceMonth","averageWidth","_getViewStartByOptions","dxrMonthDateTableLayout","_setMonthClassesToCell","SchedulerWorkSpaceWeek","startDateOption","validFirstDayOfWeek","calculateViewStartDate","SchedulerWorkSpaceWorkWeek","WIDGET_CLASS","WIDGET_SMALL_CLASS","WIDGET_ADAPTIVE_CLASS","WIDGET_READONLY_CLASS","DEFAULT_APPOINTMENT_TEMPLATE_NAME","VIEWS_CONFIG","StoreEventNames","RECURRENCE_EDITING_MODE","appointmentCollectorTemplate","allowAdding","allowDragging","appointmentTooltipTemplate","appointmentPopupTemplate","_draggingMode","_appointmentTooltipOffset","_appointmentTooltipButtonsPosition","_appointmentTooltipOpenButtonText","_appointmentCountPerCell","_appointmentOffset","defaultElement","_filteredItems","_preparedItems","currentTimeZone","_timeZoneCalculator","span","_reloadDataSource","whenLoaded","resolveCallbacks","_postponeDataSourceLoading","_updateOption","_header","_filterAppointmentsByDate","_postponeResourceLoading","_getCurrentViewOptions","_validateDayHours","_validateCellDuration","_allowDragging","_refreshWorkSpace","_headerConfig","initializeState","updateInstances","_createAppointmentPopupForm","_getAppointmentRenderedAction","_appointmentTooltip","_readyToRenderAppointments","_getAppointmentsToRepaint","_initEditing","_editing","_bringEditingModeToAppointments","_cleanPopup","_updateExpression","updateDataAccessors","_initAppointmentTemplate","_toggleAdaptiveClass","_isHorizontalVirtualScrolling","editingConfig","allowDelete","_isAgenda","_supportAllDayResizing","filterByDate","contentReadyBase","fireContentReady","_workSpaceRecalculation","isFixedHeight","isFixedWidth","_toggleSmallClass","_isAllDayExpanded","createAppointmentsMap","_appointmentPopup","_initExpressions","description","_initAllDayPanel","_customizeDataSourceLoadOptions","_asyncTemplatesTimers","_dataSourceLoadedCallback","_subscribes","createAppointmentDataProvider","appointmentTooltip","dropDownAppointment","createGetter","_renderAppointmentTemplate","dataItems","_recurrenceRule$match","comparableStartDate","comparableEndDate","getPreparedDataItems","_updatePreparedItems","onDataSourceChanged","currentViewOptions","_filterAppointments","dxrAppointmentLayout","renderAppointments","appointmentsMap","getRepaintedAppointments","exprObj","_recurrenceDialog","hideAppointmentPopup","_renderMainContainer","AppointmentCollection","_appointmentsConfig","_getAppointmentTooltipOptions","_isDataSourceLoaded","_initMarkupCore","_appointmentForm","createAppointmentForm","createAppointmentPopup","_mainContainer","getResourceByField","_processActionResult","resourceItem","getWorkSpaceScrollableContainer","deletingOptions","fireOnAppointmentDeleting","processDeleteAppointment","_cleanWorkspace","_renderWorkSpace","getFixedContainer","getAllDayContainer","_waitAsyncTemplate","_validateKeyFieldIfAgendaExist","countConfig","getAgendaResourceProcessor","getAppointmentDataProvider","_isDateAndTimeView","needApplyCollectorOffset","$workSpace","workSpaceComponent","_getCurrentViewType","workSpaceConfig","_workSpaceConfig","initDragBehavior","_all","_recalculateWorkspace","_getHeaderDate","getCollectorOffset","_getViewByName","horizontalVirtualScrollingAllowed","getFilteredItems","showAddAppointmentPopup","updateResizableArea","_isRenovatedRender","timer","singleAppointment","isDeleted","isPopupEditing","_excludeAppointmentFromSeries","_showRecurrenceChangeConfirm","editingMode","newRawAppointment","excludeFromRecurrence","singleRawAppointment","_editAppointmentData","_getSerializedDate","seriesText","occurrenceText","customDialog","getConvertedFromGrid","isValidDate","targetCell","getTargetCellData","resultedStartDate","keepOriginalHours","timeInMs","resultedEndDate","dateCopy","rawResult","resourcesSetter","setResourceToAppointment","rawTargetedAppointment","setTargetedAppointmentResources","displayStartDate","displayEndDate","getDataByDroppableCell","onUpdatePrevented","updatingOptions","oldData","performFailAction","_expandAllDayPanel","storeAppointment","_onDataPromiseCompleted","actionOptions","resolveCallback","dayTimeStamp","startDateTimeStamp","endDateTimeStamp","getGroups","setResourceCallback","apptSettings","getCellDataByCoordinates","resultAppointment","createNewAppointment","newRawTargetedAppointment","newTargetedAppointment","isCreateAppointment","createPopupAppointment","saveChanges","_getAppointmentColor","currentAppointmentData","isAlreadyShown","_getExtraAppointmentTooltipOptions","serializedAppointment","addingOptions","isDataSourceInit","hasAgendaView","isKeyExist","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","getDefaultProps","getDerivedStateFromError","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","getOwnPropertyDescriptor","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","FUNC_ERROR_TEXT","HASH_UNDEFINED","PLACEHOLDER","WRAP_CURRY_RIGHT_FLAG","WRAP_PARTIAL_FLAG","WRAP_PARTIAL_RIGHT_FLAG","WRAP_ARY_FLAG","WRAP_REARG_FLAG","INFINITY","MAX_SAFE_INTEGER","NAN","MAX_ARRAY_LENGTH","wrapFlags","argsTag","arrayTag","boolTag","dateTag","errorTag","funcTag","genTag","mapTag","numberTag","objectTag","promiseTag","regexpTag","setTag","stringTag","symbolTag","weakMapTag","arrayBufferTag","dataViewTag","float32Tag","float64Tag","int8Tag","int16Tag","int32Tag","uint8Tag","uint8ClampedTag","uint16Tag","uint32Tag","reEmptyStringLeading","reEmptyStringMiddle","reEmptyStringTrailing","reEscapedHtml","reUnescapedHtml","reHasEscapedHtml","reHasUnescapedHtml","reEscape","reEvaluate","reInterpolate","reIsDeepProp","reIsPlainProp","rePropName","reRegExpChar","reHasRegExpChar","reTrimStart","reWhitespace","reWrapComment","reWrapDetails","reSplitDetails","reAsciiWord","reForbiddenIdentifierChars","reEscapeChar","reEsTemplate","reFlags","reIsBadHex","reIsBinary","reIsHostCtor","reIsOctal","reIsUint","reLatin","reNoMatch","reUnescapedString","rsComboRange","rsComboMarksRange","rsDingbatRange","rsLowerRange","rsUpperRange","rsVarRange","rsBreakRange","rsMathOpRange","rsApos","rsAstral","rsBreak","rsCombo","rsDigits","rsDingbat","rsLower","rsMisc","rsFitz","rsNonAstral","rsRegional","rsSurrPair","rsUpper","rsMiscLower","rsMiscUpper","rsOptContrLower","rsOptContrUpper","reOptMod","rsOptVar","rsSeq","rsEmoji","rsSymbol","reApos","reComboMark","reUnicode","reUnicodeWord","reHasUnicode","reHasUnicodeWord","contextProps","templateCounter","typedArrayTags","cloneableTags","stringEscapes","freeParseFloat","freeParseInt","freeGlobal","freeSelf","Function","freeExports","freeModule","moduleExports","freeProcess","nodeUtil","binding","nodeIsArrayBuffer","isArrayBuffer","nodeIsDate","nodeIsMap","isMap","nodeIsRegExp","isRegExp","nodeIsSet","isSet","nodeIsTypedArray","isTypedArray","thisArg","arrayAggregator","iteratee","arrayEach","arrayEachRight","arrayEvery","predicate","arrayFilter","resIndex","arrayIncludes","baseIndexOf","arrayIncludesWith","comparator","arrayMap","arrayPush","arrayReduce","initAccum","arrayReduceRight","arraySome","asciiSize","baseProperty","baseFindKey","eachFunc","baseFindIndex","fromRight","strictIndexOf","baseIsNaN","baseIndexOfWith","baseMean","baseSum","basePropertyOf","baseReduce","baseTimes","baseTrim","trimmedEndIndex","baseUnary","baseValues","cacheHas","charsStartIndex","strSymbols","chrSymbols","charsEndIndex","countHolders","deburrLetter","escapeHtmlChar","escapeStringChar","hasUnicode","mapToArray","overArg","replaceHolders","setToArray","setToPairs","stringSize","unicodeSize","stringToArray","unicodeToArray","asciiToArray","unescapeHtmlChar","runInContext","pick","arrayProto","funcProto","objectProto","coreJsData","funcToString","idCounter","maskSrcKey","uid","IE_PROTO","nativeObjectToString","objectCtorString","oldDash","reIsNative","Buffer","Uint8Array","allocUnsafe","getPrototype","objectCreate","spreadableSymbol","isConcatSpreadable","symIterator","symToStringTag","toStringTag","getNative","ctxClearTimeout","ctxNow","ctxSetTimeout","nativeCeil","nativeFloor","nativeGetSymbols","nativeIsBuffer","isBuffer","nativeIsFinite","nativeJoin","nativeKeys","nativeMax","nativeMin","nativeNow","nativeParseInt","nativeRandom","nativeReverse","DataView","nativeCreate","metaMap","realNames","dataViewCtorString","toSource","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","symbolProto","symbolValueOf","symbolToString","lodash","isObjectLike","LazyWrapper","LodashWrapper","wrapperClone","baseCreate","baseLodash","chainAll","__wrapped__","__actions__","__chain__","__index__","__values__","__dir__","__filtered__","__iteratees__","__takeCount__","__views__","Hash","ListCache","MapCache","SetCache","__data__","Stack","arrayLikeKeys","inherited","isArr","isArg","isArguments","isBuff","isType","skipIndexes","isIndex","arraySample","baseRandom","arraySampleSize","shuffleSelf","copyArray","baseClamp","arrayShuffle","assignMergeValue","baseAssignValue","assignValue","objValue","assocIndexOf","baseAggregator","baseEach","baseAssign","copyObject","baseAt","paths","lower","upper","baseClone","bitmask","customizer","isDeep","isFlat","isFull","initCloneArray","getTag","isFunc","cloneBuffer","initCloneObject","getSymbolsIn","copySymbolsIn","keysIn","baseAssignIn","getSymbols","copySymbols","cloneArrayBuffer","dataView","buffer","byteOffset","byteLength","cloneDataView","cloneTypedArray","cloneRegExp","initCloneByTag","stacked","subValue","getAllKeysIn","getAllKeys","baseConformsTo","baseDelay","baseDifference","isCommon","valuesLength","computed","valuesIndex","templateSettings","getMapData","pairs","LARGE_ARRAY_SIZE","createBaseEach","baseForOwn","baseEachRight","baseForOwnRight","baseEvery","baseExtremum","isSymbol","baseFilter","baseFlatten","isStrict","isFlattenable","baseFor","createBaseFor","baseForRight","baseFunctions","baseGet","castPath","toKey","baseGetAllKeys","keysFunc","symbolsFunc","baseGetTag","isOwn","unmasked","getRawTag","objectToString","baseGt","baseHas","baseHasIn","baseIntersection","arrays","othLength","othIndex","caches","Infinity","seen","baseInvoke","baseIsArguments","baseIsEqual","equalFunc","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","equalArrays","convert","isPartial","equalByTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","objProps","objLength","objStacked","othStacked","skipCtor","othValue","compared","objCtor","othCtor","equalObjects","baseIsEqualDeep","baseIsMatch","matchData","noCustomizer","srcValue","COMPARE_PARTIAL_FLAG","baseIsNative","baseIteratee","identity","baseMatchesProperty","baseMatches","baseKeys","isPrototype","baseKeysIn","nativeKeysIn","isProto","baseLt","baseMap","isArrayLike","getMatchData","matchesStrictComparable","isKey","isStrictComparable","hasIn","baseMerge","srcIndex","mergeFunc","safeGet","isTyped","isArrayLikeObject","toPlainObject","baseMergeDeep","baseNth","baseOrderBy","iteratees","orders","getIteratee","comparer","baseSortBy","objCriteria","othCriteria","ordersLength","compareAscending","compareMultiple","basePickBy","baseSet","basePullAll","basePullAt","baseUnset","baseRepeat","baseRest","setToString","overRest","baseSample","baseSampleSize","nested","baseSetData","baseSetToString","baseShuffle","baseSlice","baseSome","baseSortedIndex","retHighest","low","high","mid","baseSortedIndexBy","valIsNaN","valIsNull","valIsSymbol","valIsUndefined","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","setLow","baseSortedUniq","baseToNumber","baseToString","baseUniq","createSet","seenIndex","baseUpdate","updater","baseWhile","isDrop","baseWrapperValue","baseXor","baseZipObject","assignFunc","valsLength","castArrayLikeObject","castFunction","stringToPath","castRest","castSlice","arrayBuffer","typedArray","valIsDefined","valIsReflexive","composeArgs","partials","holders","isCurried","argsIndex","argsLength","holdersLength","leftLength","rangeLength","isUncurried","composeArgsRight","holdersIndex","rightIndex","rightLength","isNew","createAggregator","initializer","createAssigner","assigner","guard","isIterateeCall","iterable","createCaseFirst","trailing","createCompounder","words","deburr","createCtor","thisBinding","createFind","findIndexFunc","createFlow","flatRest","prereq","thru","getFuncName","isLaziable","plant","createHybrid","partialsRight","holdersRight","argPos","ary","isAry","isBind","isBindKey","isFlip","getHolder","holdersCount","newHolders","createRecurry","reorder","createInverter","toIteratee","baseInverter","createMathOperation","operator","createOver","arrayFunc","createPadding","charsLength","createRange","toFinite","baseRange","createRelationalOperation","wrapFunc","isCurry","setWrapToString","createRound","toInteger","createToPairs","baseToPairs","createWrap","srcBitmask","newBitmask","isCombo","mergeData","createCurry","createPartial","createBind","customDefaultsAssignIn","customDefaultsMerge","customOmitClone","arrLength","arrStacked","arrValue","flatten","otherFunc","isKeyable","stubArray","hasPath","hasFunc","isLength","ArrayBuffer","ctorString","isMaskable","stubFalse","otherArgs","oldArray","shortOut","insertWrapDetails","updateWrapDetails","getWrapDetails","lastCalled","stamp","remaining","rand","memoizeCapped","quote","subString","differenceBy","differenceWith","findLastIndex","intersection","mapped","intersectionBy","intersectionWith","pull","pullAll","pullAt","unionBy","unionWith","unzip","unzipWith","without","xorBy","xorWith","zip","zipWith","chain","interceptor","wrapperAt","countBy","findLast","forEachRight","invokeMap","keyBy","partition","bindKey","WRAP_BIND_FLAG","lastArgs","lastThis","maxWait","lastCallTime","lastInvokeTime","leading","maxing","invokeFunc","leadingEdge","timerExpired","shouldInvoke","timeSinceLastCall","trailingEdge","timeWaiting","remainingWait","isInvoking","defer","resolver","memoized","overArgs","transforms","funcsLength","partial","partialRight","rearg","gt","gte","isError","isInteger","lte","iteratorToArray","remainder","toLength","isBinary","assignIn","assignInWith","assignWith","propsIndex","propsLength","defaultsDeep","mergeWith","invertBy","omit","CLONE_DEEP_FLAG","basePick","pickBy","toPairs","toPairsIn","camelCase","word","kebabCase","lowerCase","lowerFirst","snakeCase","startCase","upperCase","hasUnicodeWord","unicodeWords","asciiWords","attempt","bindAll","methodNames","flow","flowRight","methodOf","mixin","overEvery","overSome","basePropertyDeep","rangeRight","augend","addend","divide","dividend","divisor","multiply","multiplicand","subtract","minuend","subtrahend","castArray","chunk","compact","cond","conforms","baseConforms","curry","curryRight","drop","dropRight","dropRightWhile","dropWhile","baseFill","flatMap","flatMapDeep","flatMapDepth","flattenDeep","flattenDepth","fromPairs","functions","functionsIn","mapKeys","mapValues","matchesProperty","nthArg","omitBy","once","orderBy","propertyOf","pullAllBy","pullAllWith","sampleSize","setWith","shuffle","sortedUniq","sortedUniqBy","limit","spread","takeRight","takeRightWhile","takeWhile","tap","toPath","isArrLike","unary","uniq","uniqBy","uniqWith","unset","updateWith","valuesIn","zipObject","zipObjectDeep","entriesIn","extendWith","cloneDeep","cloneDeepWith","cloneWith","conformsTo","defaultTo","findKey","findLastKey","forIn","forInRight","forOwn","forOwnRight","baseInRange","isEqualWith","isMatchWith","isNil","isSafeInteger","isWeakMap","isWeakSet","strictLastIndexOf","maxBy","mean","meanBy","minBy","stubObject","stubString","stubTrue","noConflict","pad","strLength","padEnd","radix","floating","temp","sample","sortedIndexBy","sortedIndexOf","sortedLastIndex","sortedLastIndexBy","sortedLastIndexOf","sumBy","isEvaluating","imports","importsKeys","importsValues","interpolate","reDelimiters","evaluate","sourceURL","escapeValue","interpolateValue","esTemplateValue","evaluateValue","toLower","toSafeInteger","toUpper","trimEnd","trimStart","truncate","omission","newEnd","unescape","uniqueId","eachRight","VERSION","isFilter","takeName","dropName","checkIteratee","isTaker","lodashFunc","retUnwrapped","useLazy","isHybrid","isUnwrapped","onlyLazy","chainName","isRight","getView","iterLength","takeCount","iterIndex","commit","define","hookCallback","hooks","setHookCallback","hasOwnProp","arrLen","createUTC","createLocalOrUTC","defaultParsingFlags","unusedTokens","unusedInput","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","suppressDeprecationWarnings","firstTime","deprecationHandler","argLen","deprecations","deprecateSimple","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","lastWeek","sameElse","mom","zeroFill","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","removeFormattingTokens","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","defaultLongDateFormat","LTS","LT","LL","LLL","LLLL","_longDateFormat","formatUpper","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","addUnitAlias","shorthand","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","isLeapYear","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","strictRegex","getParseRegexForToken","unescapeFormat","regexEscape","matched","p3","p4","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","YEAR","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEKDAY","modMonth","monthsShort","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","llc","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","prototypeMax","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","isoWeek","_milliseconds","_bubble","isDuration","absRound","dontConvert","lengthDiff","diffs","utcOffset","offsetFromString","chunkOffset","matcher","cloneWithOffset","local","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","isAdding","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","propertyLen","arrayTest","dataTypeTest","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","inspect","zone","inputString","defaultFormatUtc","defaultFormat","postformat","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","localeErasParse","eraName","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","monthsFromDays","monthsToDays","daysToMonths","valueOf$1","makeAs","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","proto$2","toIsoString","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","secret","getShim","ReactPropTypes","bigint","any","arrayOf","elementType","instanceOf","objectOf","exact","checkPropTypes","React__default","UAParser","ClientUAInstance","getBrowser","cpu","getCPU","getDevice","getEngine","getOS","setUa","userAgentString","setUA","parseUserAgent","UserAgentInstance","UA","setUserAgent","UAHelper","ownKeys","enumerableOnly","symbols","sym","_typeof","_defineProperties","_defineProperty","_getPrototypeOf","_setPrototypeOf","_objectWithoutProperties","excluded","sourceKeys","sourceSymbolKeys","_assertThisInitialized","ReferenceError","_slicedToArray","_arrayWithHoles","_s","_arr","_n","_iterableToArrayLimit","minLen","_arrayLikeToArray","_unsupportedIterableToArray","_nonIterableRest","DeviceTypes","BrowserTypes","Chrome","Firefox","Opera","Yandex","Safari","InternetExplorer","Edge","Chromium","Ie","MobileSafari","EdgeChromium","MIUI","SamsungBrowser","OsTypes","IOS","Android","WindowsPhone","Windows","MAC_OS","InitialDeviceTypes","isBrowser","isSmartTV","isConsole","isWearable","setDefaults","getNavigatorInstance","isIOS13Check","nav","MSStream","mobilePayload","defineProperties","_objectSpread2","vendor","osVersion","isMobileType","isTabletType","isMobileAndTabletType","isSmartTVType","isBrowserType","isWearableType","isConsoleType","isEmbeddedType","_ref8","getMobileVendor","_ref9","getMobileModel","_ref10","getDeviceType","_ref11","isAndroidType","_ref12","isWindowsType","_ref13","isMacOsType","_ref14","isWinPhoneType","_ref15","isIOSType","_ref16","getOsVersion","_ref17","getOsName","_ref18","isChromeType","_ref19","isFirefoxType","_ref20","isChromiumType","_ref21","isEdgeType","_ref22","isYandexType","_ref23","isSafariType","_ref24","isMobileSafariType","_ref25","isOperaType","_ref26","isIEType","_ref27","isMIUIType","_ref28","isSamsungBrowserType","_ref29","getBrowserFullVersion","_ref30","getBrowserVersion","_ref31","major","getBrowserName","_ref32","getEngineName","_ref33","getEngineVersion","_ref34","isElectronType","isEdgeChromiumType","getIOS13","getIPad13","getIphone13","getIPod13","getUseragent","userAg","buildSelectorsObject","isEmbedded","isMobileSafari","isChromium","isMobileOnly","isIOS","isChrome","isFirefox","isSafari","isOpera","osName","fullBrowserVersion","mobileVendor","mobileModel","engineName","engineVersion","isEdge","isYandex","isIOS13","isIPad13","isIPhone13","isIPod13","isElectron","isEdgeChromium","isLegacyEdge","isWindows","isMacOs","isMIUI","isSamsungBrowser","useDeviceData","hookUserAgent","aa","ea","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","qa","oa","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","Qa","_payload","Ra","Sa","Ta","Va","_valueTracker","stopTracking","Ua","Wa","Xa","Ya","defaultChecked","_wrapperState","initialChecked","Za","ab","bb","cb","db","eb","fb","defaultSelected","gb","hb","ib","jb","kb","namespaceURI","MSApp","execUnsafeLocalFunction","ob","aspectRatio","lineClamp","qb","rb","sb","tb","menuitem","embed","img","keygen","meta","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","Wb","memoizedState","dehydrated","Xb","Zb","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","ed","fd","hd","Uc","jd","kd","ld","od","pd","qd","rd","_reactName","_targetInst","returnValue","persist","isPersistent","wd","xd","yd","eventPhase","bubbles","ud","detail","vd","Ad","screenY","clientX","clientY","getModifierState","zd","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","Rd","Td","pressure","tangentialPressure","tiltX","tiltY","twist","isPrimary","Vd","targetTouches","Xd","Yd","wheelDeltaX","wheelDeltaY","wheelDelta","Zd","$d","ae","documentMode","fe","ge","ie","le","me","oe","pe","qe","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Je","Ke","Le","Me","HTMLIFrameElement","contentWindow","Ne","contentEditable","Oe","focusedElem","selectionRange","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","setStart","addRange","setEnd","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","$e","bf","cf","df","ef","gf","hf","lf","mf","nf","Ub","D","pf","qf","rf","sf","capture","J","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","ng","og","pg","qg","rg","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","ih","jh","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","isPureReactComponent","ph","qh","UNSAFE_componentWillReceiveProps","rh","UNSAFE_componentWillMount","sh","_stringRef","uh","vh","wh","yh","implementation","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","P","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ji","getSnapshot","li","R","ni","lastEffect","stores","oi","pi","qi","ri","deps","ui","wi","xi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useEffect","useImperativeHandle","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","suppressHydrationWarning","onclick","autoFocus","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","onCommitFiberUnmount","bk","ck","dk","ek","fk","gk","hk","ik","jk","lk","__reactInternalSnapshotBeforeUpdate","Wk","nk","pk","Y","qk","rk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","dl","fl","hl","il","jl","zj","$k","ll","reportError","_internalRoot","ol","ql","rl","unstable_scheduleHydration","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","supportsFiber","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrateRoot","hydratedSources","_getVersion","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","focusManager","_Subscribable","FocusManager","isServer","_inheritsLoose","onSubscribe","setEventListener","onUnsubscribe","_this$cleanup","hasListeners","_this$cleanup2","setFocused","Subscribable","infiniteQueryBehavior","onFetch","fetchFn","_context$fetchOptions","_context$fetchOptions2","_context$fetchOptions3","_context$fetchOptions4","_context$state$data","_context$state$data2","refetchPage","fetchOptions","fetchMore","pageParam","isFetchingNextPage","isFetchingPreviousPage","oldPages","pages","oldPageParams","pageParams","abortController","getAbortController","abortSignal","signal","newPageParams","cancelled","queryFn","buildNewPages","fetchPage","manual","queryFnContext","queryKey","queryFnResult","isCancelable","getNextPageParam","_manual","_param","getPreviousPageParam","shouldFetchFirstPage","_param2","finalPromise","hasNextPage","nextPageParam","hasPreviousPage","previousPageParam","getLogger","setLogger","newLogger","NotifyManager","transactions","notifyFn","batchNotifyFn","batch","schedule","scheduleMicrotask","batchCalls","setNotifyFunction","setBatchNotifyFunction","notifyManager","onlineManager","OnlineManager","onOnline","online","setOnline","isOnline","onLine","abortSignalConsumed","hadObservers","setOptions","queryHash","initialState","getDefaultState","scheduleGc","_this$options$cacheTi","cacheTime","setDefaultOptions","clearGcTimeout","isValidTimeout","gcTimeout","optionalRemove","isFetching","_this$options$isDataE","prevData","functionalUpdate","isDataEqual","structuralSharing","replaceEqualDeep","dataUpdatedAt","updatedAt","setStateOptions","_this$retryer","retryer","isStale","isInvalidated","getCurrentResult","isStaleByTime","staleTime","timeUntilStale","_this$retryer2","shouldFetchOnWindowFocus","refetch","continue","_this$retryer3","shouldFetchOnReconnect","addObserver","notify","removeObserver","isTransportCancelable","revert","cancelRetry","getObserversCount","invalidate","_this$options$behavio","_abortController$abor","cancelRefetch","_this$retryer4","continueRetry","ensureQueryKeyArray","_this$options$behavio2","behavior","revertState","fetchMeta","Retryer","onSuccess","isCancelledError","onFail","onPause","onContinue","retry","retryDelay","reducer","onQueryUpdate","initialDataUpdatedAt","hasData","dataUpdateCount","errorUpdateCount","errorUpdatedAt","fetchFailureCount","isPaused","_action$meta","_action$dataUpdatedAt","QueryCache","queries","queriesMap","build","_options$queryHash","hashQueryKeyByOptions","defaultQueryOptions","getQueryDefaults","queryInMap","getAll","arg2","parseFilterArgs","matchQuery","findAll","Mutation","mutationId","mutationCache","failureCount","variables","restored","onMutate","executeMutation","onSettled","_this$options$retry","mutationFn","onMutationUpdate","MutationCache","mutations","mutation","defaultMutationOptions","mutationKey","getMutationDefaults","matchMutation","resumePausedMutations","pausedMutations","QueryClient","queryCache","queryDefaults","mutationDefaults","unsubscribeFocus","unsubscribeOnline","_this$unsubscribeFocu","_this$unsubscribeOnli","fetching","isMutating","getQueryData","_this$queryCache$find","getQueriesData","queryKeyOrFilters","getQueryCache","setQueryData","parseQueryArgs","defaultedOptions","setQueriesData","getQueryState","_this$queryCache$find2","removeQueries","resetQueries","arg3","_parseFilterArgs3","refetchFilters","refetchQueries","cancelQueries","_parseFilterArgs4","_parseFilterArgs4$","cancelOptions","invalidateQueries","_filters$refetchActiv","_filters$refetchInact","_parseFilterArgs5","refetchActive","refetchInactive","_this6","_parseFilterArgs6","throwOnError","fetchQuery","prefetchQuery","fetchInfiniteQuery","prefetchInfiniteQuery","cancelMutations","_this7","getMutationCache","setQueryDefaults","hashQueryKey","_this$queryDefaults$f","partialMatchKey","setMutationDefaults","_this$mutationDefault","_defaulted","defaultQueryObserverOptions","defaultRetryDelay","CancelledError","cancelFn","continueFn","promiseResolve","promiseReject","isResolved","outerResolve","outerReject","run","promiseOrValue","_unused","_config$retry","_config$retryDelay","shouldRetry","sleep","continueResolve","isQueryKey","stale","queryStatusFilter","mapQueryStatusFilter","queryKeyHashFn","asArray","partialDeepEqual","aSize","bItems","bSize","equalItems","shallowEqualObjects","hasObjectPrototype","prot","AbortController","defaultContext","QueryClientSharingContext","getQueryClientContext","contextSharing","ReactQueryClientContext","QueryClientProvider","_ref$contextSharing","Context","QueryObserver","trackedProps","selectError","bindMethods","currentQuery","shouldFetchOnMount","executeFetch","updateTimers","shouldFetchOn","refetchOnReconnect","refetchOnWindowFocus","clearTimers","notifyOptions","prevQuery","updateQuery","shouldFetchOptionally","updateResult","updateStaleTimeout","nextRefetchInterval","computeRefetchInterval","currentRefetchInterval","updateRefetchInterval","getOptimisticResult","createResult","trackResult","trackedResult","trackProp","useErrorBoundary","suspense","getNextResult","getCurrentQuery","fetchOptimistic","clearStaleTimeout","staleTimeoutId","_this$options$refetch","refetchInterval","nextInterval","clearRefetchInterval","refetchIntervalId","refetchIntervalInBackground","prevResult","prevResultState","currentResultState","prevResultOptions","currentResultOptions","queryChange","queryInitialState","currentQueryInitialState","prevQueryResult","previousQueryResult","isPreviousData","isPlaceholderData","optimisticResults","fetchOnMount","fetchOptionally","keepPreviousData","isSuccess","selectFn","selectResult","placeholderData","isIdle","isFetched","isFetchedAfterMount","isRefetching","isLoadingError","isRefetchError","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsExclusions","includedProps","typedKey","isIncluded","isExcluded","defaultNotifyOptions","_this8","retryOnMount","shouldLoadOnMount","refetchOnMount","InfiniteQueryObserver","_QueryObserver","fetchNextPage","fetchPreviousPage","_options$cancelRefetc","_options$cancelRefetc2","_state$data","_state$data2","_state$fetchMeta","_state$fetchMeta$fetc","_state$fetchMeta2","_state$fetchMeta2$fet","createValue","_isReset","clearReset","isReset","QueryErrorResetBoundaryContext","useBaseQuery","mountedRef","queryClient","useQueryClient","errorResetBoundary","_useErrorBoundary","useInfiniteQuery","__esModule","sham","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","activeStyle","iconFormat","iconColor","preventActiveStyles","customStyle","xmlns","gradientTransform","gradientUnits","stopColor","fillRule","clipRule","cx","stroke","enableBackground","xstyle","xmlSpace","strokeLinecap","strokeLinejoin","__self","__source","jsxs","_status","_currentValue2","_threadCount","Consumer","_defaultValue","_globalName","createFactory","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","expirationTime","priorityLevel","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","MAJOR","MODEL","VENDOR","ARCHITECTURE","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","EMBEDDED","AMAZON","APPLE","ASUS","BLACKBERRY","FIREFOX","GOOGLE","HUAWEI","LG","MICROSOFT","MOTOROLA","OPERA","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","FACEBOOK","CHROMIUM_OS","enumerize","enums","str1","str2","lowerize","rgxMapper","strMapper","windowsVersionMap","ME","XP","Vista","RT","CHROME","EDGE","extensions","getResult","_ua","_uach","userAgentData","_rgxmap","mergedRegexes","_isSelfNav","_browser","brave","isBrave","_cpu","mobile","_engine","_os","BROWSER","CPU","DEVICE","ENGINE","OS","jQuery","Zepto","asyncGeneratorStep","gen","_throw","_asyncToGenerator","_classCallCheck","Constructor","_construct","Parent","_createClass","protoProps","staticProps","_createForOfIteratorHelper","allowArrayLike","normalCompletion","didErr","_e2","_possibleConstructorReturn","assertThisInitialized","_createSuper","Derived","hasNativeReflectConstruct","isNativeReflectConstruct","Super","NewTarget","_superPropBase","_get","receiver","_inherits","subClass","superClass","_isNativeReflectConstruct","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","awrap","skipTempReset","rootRecord","rval","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","_x","_r","unsupportedIterableToArray","_toConsumableArray","arrayLikeToArray","_toPropertyKey","prim","toPrimitive","_wrapNativeSuper","Wrapper","idbProxyableTypes","cursorAdvanceMethods","cursorRequestMap","transactionDoneMap","transactionStoreNamesMap","transformCache","reverseTransformCache","idbProxyTraps","IDBTransaction","objectStoreNames","objectStore","wrapFunction","IDBDatabase","transaction","IDBCursor","advance","continuePrimaryKey","storeNames","tx","transformCachableValue","unlisten","DOMException","cacheDonePromiseForTransaction","IDBObjectStore","IDBIndex","IDBRequest","promisifyRequest","readMethods","writeMethods","cachedMethods","targetFuncName","useIndex","isWrite","storeName","oldTraps","PlatformLoggerServiceImpl","getProviders","provider","getComponent","isVersionServiceProvider","getImmediate","library","logString","Logger","DEFAULT_ENTRY_NAME","PLATFORM_LOG_STRING","appName","_apps","_components","_addComponent","app","addComponent","debug","_registerComponent","_getProvider","heartbeatController","getProvider","optional","triggerHeartbeat","ERRORS","ERROR_FACTORY","FirebaseAppImpl","_isDeleted","_automaticDataCollectionEnabled","automaticDataCollectionEnabled","_container","checkDestroyed","SDK_VERSION","initializeApp","rawConfig","existingApp","ComponentContainer","newApp","getApp","registerVersion","libraryKeyOrName","libraryMismatch","versionMismatch","STORE_NAME","dbPromise","getDbPromise","blocked","upgrade","blocking","terminated","openPromise","oldVersion","newVersion","openDB","createObjectStore","originalErrorMessage","readHeartbeatsFromIndexedDB","computeKey","idbGetError","writeHeartbeatsToIndexedDB","heartbeatObject","put","appId","HeartbeatServiceImpl","_heartbeatsCache","_storage","HeartbeatStorageImpl","_heartbeatsCachePromise","read","platformLogger","agent","getPlatformInfoString","getUTCDateString","lastSentHeartbeatDate","heartbeats","singleDateHeartbeat","hbTimestamp","overwrite","extractHeartbeatsForHeader","heartbeatsToSend","unsentEntries","headerString","heartbeatsCache","heartbeatEntry","countBytes","_canUseIndexedDBPromise","runIndexedDBEnvironmentCheck","idbHeartbeatObject","heartbeatsObject","existingHeartbeatsObject","instanceFactory","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","instances","instancesDeferred","instancesOptions","onInitCallbacks","normalizedIdentifier","normalizeInstanceIdentifier","shouldAutoInitialize","getOrInitializeService","instanceIdentifier","isComponentEager","instanceDeferred","services","INTERNAL","_delete","isComponentSet","normalizedDeferredIdentifier","existingCallbacks","existingInstance","invokeOnInitCallbacks","providers","setComponent","LogLevel","levelStringToEnum","VERBOSE","INFO","WARN","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","logLevel","_logLevel","_logHandler","_userLogHandler","SuppressedError","isV2","grecaptcha","getResponse","isEnterprise","enterprise","RecaptchaConfig","siteKey","emailPasswordEnabled","recaptchaKey","recaptchaEnforcementState","enforcementState","_prodErrorMap","prodErrorMap","_DEFAULT_AUTH_ERROR_FACTORY","logClient","_logWarn","_logError","_fail","authOrCode","createErrorInternal","_createError","_errorWithCustomMessage","auth","errorMap","_assertInstanceOf","fullParams","_errorFactory","_assert","assertion","debugFail","failure","debugAssert","_getCurrentUrl","_isHttpOrHttps","_getCurrentScheme","Delay","shortDelay","longDelay","_emulatorUrl","emulator","FetchProvider","fetchImpl","headersImpl","responseImpl","Response","SERVER_ERROR_MAP","DEFAULT_API_TIMEOUT_MS","_addTidIfNecessary","tenantId","_performApiRequest","customErrorMap","_performFetchWithErrorHandling","apiKey","_getAdditionalHeaders","languageCode","_getFinalTarget","apiHost","referrerPolicy","_canInitEmulator","networkTimeout","NetworkTimeout","race","clearNetworkTimeout","_makeTaggedError","errorMessage","serverErrorCode","serverErrorMessage","authError","_performSignInRequest","_serverResponse","apiScheme","errorParams","phoneNumber","_tokenResponse","getRecaptchaParams","recaptchaSiteKey","getRecaptchaConfig","deleteAccount","deleteLinkedAccounts","getAccountInfo","utcTimestampToDateString","utcTimestamp","user","forceRefresh","userInternal","getIdToken","claims","_parseToken","exp","auth_time","iat","firebase","signInProvider","authTime","secondsStringToMilliseconds","issuedAtTime","signInSecondFactor","algorithm","signature","_logoutIfInvalidated","isUserInvalidated","currentUser","signOut","ProactiveRefresh","isRunning","errorBackoff","wasError","stsTokenManager","iteration","UserMetadata","createdAt","lastLoginAt","_initializeTime","lastSignInTime","creationTime","metadata","_reloadWithoutSaving","idToken","users","coreAccount","_notifyReloadListener","newProviderData","providerUserInfo","extractProviderData","providerData","mergeProviderData","oldIsAnonymous","newIsAnonymous","passwordHash","updates","localId","photoURL","photoUrl","emailVerified","_persistUserIfCurrent","_notifyListenersIfCurrent","deduped","providerId","rawId","requestStsToken","refreshToken","tokenApiHost","accessToken","access_token","expiresIn","expires_in","refresh_token","StsTokenManager","parsedToken","_tokenExpiresIn","updateTokensAndExpiration","isExpired","oldToken","expiresInSec","manager","assertStringOrUndefined","UserImpl","opt","proactiveRefresh","reloadUserInfo","reloadListener","getToken","getIdTokenResult","userInfo","_copy","_assign","newUser","_clone","tokensRefreshed","updateFromServerResponse","clearRefreshToken","_redirectEventId","_g","_h","plainObjectTokenManager","fromJSON","idTokenResponse","instanceCache","_getInstance","cls","InMemoryPersistence","storage","_listener","inMemoryPersistence","_persistenceKeyName","PersistenceUserManager","persistence","userKey","fullUserKey","fullPersistenceKey","boundEventHandler","_onStorageEvent","_addListener","_set","_fromJSON","_remove","newPersistence","getCurrentUser","removeCurrentUser","setCurrentUser","_removeListener","persistenceHierarchy","_isAvailable","availablePersistences","selectedPersistence","userToMigrate","migrationHierarchy","_shouldAllowMigration","_getBrowserName","_isIEMobile","_isFirefox","_isBlackBerry","_isWebOS","_isSafari","_isChromeIOS","_isAndroid","_isIOS","_isIOSStandalone","_isIE10","_isMobileBrowser","_getClientVersion","clientPlatform","reportedPlatform","frameworks","reportedFrameworks","AuthMiddlewareQueue","onAbort","wrappedCallback","nextUser","onAbortStack","beforeStateCallback","originalMessage","_getPasswordPolicy","PasswordPolicyImpl","responseOptions","customStrengthOptions","minPasswordLength","maxPasswordLength","containsLowercaseCharacter","containsLowercaseLetter","containsUppercaseCharacter","containsUppercaseLetter","containsNumericCharacter","containsNonAlphanumericCharacter","allowedNonAlphanumericCharacters","forceUpgradeOnSignin","schemaVersion","passwordPolicy","validatePasswordLengthOptions","validatePasswordCharacterOptions","meetsMinPasswordLength","meetsMaxPasswordLength","passwordChar","updatePasswordCharacterOptionsStatuses","AuthImpl","heartbeatServiceProvider","appCheckServiceProvider","emulatorConfig","operations","authStateSubscription","Subscription","idTokenSubscription","beforeStateQueue","redirectUser","isProactiveRefreshEnabled","EXPECTED_PASSWORD_POLICY_SCHEMA_VERSION","_isInitialized","_deleted","_initializationPromise","_popupRedirectResolver","_agentRecaptchaConfig","_tenantRecaptchaConfigs","_projectPasswordPolicy","_tenantPasswordPolicies","lastNotifiedUid","appVerificationDisabledForTesting","clientVersion","sdkClientVersion","popupRedirectResolver","persistenceManager","_shouldInitProactively","_initialize","initializeCurrentUser","assertedPersistence","_currentUser","_updateCurrentUser","previouslyStoredUser","futureCurrentUser","needsTocheckMiddleware","authDomain","getOrInitRedirectPersistenceManager","redirectUserEventId","storedUserEventId","tryRedirectSignIn","directlySetCurrentUser","runMiddleware","_overrideRedirectResult","reloadAndSetCurrentUserOrClear","redirectResolver","_completeRedirectFn","_setRedirectUser","navigatorLanguage","languages","_getUserLanguage","userExtern","skipBeforeStateCallbacks","notifyAuthListeners","redirectPersistenceManager","setPersistence","_getPasswordPolicyInternal","_updatePasswordPolicy","validatePassword","registerStateListener","pushCallback","onAuthStateChanged","redirectManager","_redirectPersistence","_startProactiveRefresh","_stopProactiveRefresh","currentUid","subscription","isUnsubscribed","framework","_getFrameworks","heartbeatsHeader","_getAppCheckToken","appCheckToken","appCheckTokenResult","_castAuth","_loadJS","charset","getScriptParentElement","_generateCallbackName","RECAPTCHA_ENTERPRISE_URL","FAKE_TOKEN","RecaptchaEnterpriseVerifier","authExtern","retrieveSiteKey","retrieveRecaptchaToken","clientType","jsHelpers\r\n ._loadJS","injectRecaptchaFields","captchaResp","verifier","verify","captchaResponse","newRequest","initializeAuth","getOptions","initialize","connectAuthEmulator","authInternal","disableWarnings","extractProtocol","authority","port","hostAndPort","bracketedIPv6","parsePort","extractHostAndPort","portStr","attachBanner","sty","innerText","emitEmulatorWarning","protocolEnd","AuthCredential","signInMethod","_auth","_idToken","resetPassword","updateEmailPassword","applyActionCode","signInWithPassword","sendOobCode","sendEmailVerification","sendPasswordResetEmail","sendSignInLinkToEmail","signInWithEmailLink","signInWithEmailLinkForLinking","EmailAuthCredential","_email","_password","_tenantId","returnSecureToken","_getRecaptchaConfig","requestWithRecaptcha","oobCode","_getIdTokenResponse","_fromEmailAndPassword","_fromEmailAndCode","signInWithIdp","OAuthCredential","pendingToken","buildRequest","autoCreate","requestUri","postBody","cred","oauthToken","oauthTokenSecret","sendPhoneVerificationCode","temporaryProof","VERIFY_PHONE_NUMBER_FOR_EXISTING_ERROR_MAP_","apiRequest","PhoneAuthCredential","signInWithPhoneNumber","_makeVerificationRequest","linkWithPhoneNumber","verifyPhoneNumberForExisting","verificationId","verificationCode","sessionInfo","ActionCodeURL","actionLink","searchParams","parseMode","continueUrl","doubleDeepLink","iOSDeepLink","parseDeepLink","EmailAuthProvider","PROVIDER_ID","emailLink","actionCodeUrl","parseLink","FederatedAuthProvider","defaultLanguageCode","customParameters","customOAuthParameters","BaseOAuthProvider","scopes","OAuthProvider","_credential","rawNonce","_fromParams","userCredential","oauthCredentialFromTaggedObject","tokenResponse","oauthIdToken","oauthAccessToken","FacebookAuthProvider","FACEBOOK_SIGN_IN_METHOD","credentialFromTaggedObject","credential","GoogleAuthProvider","addScope","GOOGLE_SIGN_IN_METHOD","GithubAuthProvider","GITHUB_SIGN_IN_METHOD","TwitterAuthProvider","TWITTER_SIGN_IN_METHOD","signUp","UserCredentialImpl","operationType","_fromIdTokenResponse","providerIdForResponse","userCred","_updateTokensIfNecessary","signInAnonymously","MultiFactorError","_processCredentialSavingMfaContextIfNecessary","_getReauthenticationResolver","_fromErrorAndOperation","providerDataAsNames","pid","unlink","_assertLinkedStatus","deleteProvider","providersLeft","_link","bypassAuthState","_linkToIdToken","_forOperation","providerIds","_reauthenticate","sub","_signInWithCredential","signInWithCredential","linkWithCredential","signInWithCustomToken","customToken","getIdTokenResponse","_setActionCodeSettingsOnRequest","actionCodeSettings","dynamicLinkDomain","canHandleCodeInApp","handleCodeInApp","iOS","bundleId","iOSBundleId","packageName","androidInstallApp","installApp","androidMinimumVersionCode","minimumVersion","androidPackageName","recachePasswordPolicy","requestType","authentication.sendPasswordResetEmail","authentication\r\n .sendPasswordResetEmail","confirmPasswordReset","newPassword","account\r\n .resetPassword","account.applyActionCode","createUserWithEmailAndPassword","signUpResponse","signInWithEmailAndPassword","setActionCodeSettings","api.sendSignInLinkToEmail","api\r\n .sendSignInLinkToEmail","isSignInWithEmailLink","authModular","credentialWithLink","api.sendEmailVerification","updateProfile","profileRequest","apiUpdateProfile","passwordProvider","updateEmail","newEmail","updateEmailOrPassword","updatePassword","apiUpdateEmailPassword","GenericAdditionalUserInfo","isNewUser","profile","FederatedAdditionalUserInfoWithUsername","FacebookAdditionalUserInfo","GithubAdditionalUserInfo","login","GoogleAdditionalUserInfo","TwitterAdditionalUserInfo","screenName","getAdditionalUserInfo","rawUserInfo","kind","onIdTokenChanged","beforeAuthStateChanged","deleteUser","startEnrollPhoneMfa","finalizeEnrollTotpMfa","STORAGE_AVAILABLE_KEY","BrowserPersistenceClass","storageRetriever","setItem","removeItem","BrowserLocalPersistence","localStorage","poll","onStorageEvent","localCache","pollTimer","safariLocalStorageNotSynced","_iframeCannotSyncWebStorage","_isIframe","fallbackToPolling","detachListener","stopPolling","storedValue","triggerListeners","forAllChangedKeys","_oldValue","StorageEvent","startPolling","attachListener","browserLocalPersistence","BrowserSessionPersistence","browserSessionPersistence","_allSettled","fulfilled","Receiver","handlersMap","handleEvent","messageEvent","eventId","eventType","ports","origin","receivers","isListeningto","newInstance","_generateEventId","Sender","messageChannel","onMessage","ackTimer","completionTimer","finally","removeMessageHandler","_setWindowLocation","_isWorker","_getActiveServiceWorker","serviceWorker","registration","_getServiceWorkerController","controller","DB_NAME","DB_OBJECTSTORE_NAME","DB_DATA_KEYPATH","DBPromise","getObjectStore","isReadWrite","_deleteDatabase","toPromise","_openDatabase","keyPath","_putObject","getObject","_deleteObject","IndexedDBLocalPersistence","pendingWrites","sender","serviceWorkerReceiverAvailable","activeServiceWorker","_workerInitializationPromise","initializeServiceWorkerMessaging","numAttempts","_openDb","initializeReceiver","initializeSender","_subscribe","_origin","_poll","keyProcessed","_send","results","write","_withPendingWrite","_withRetries","notifyServiceWorker","getAllRequest","keysInResult","fbase_key","localKey","indexedDBLocalPersistence","startSignInPhoneMfa","finalizeSignInTotpMfa","_WIDGET_ID_START","MockReCaptcha","_widgets","MockWidget","optWidgetId","containerOrId","deleted","responseToken","getElementById","checkIfDeleted","generateRandomAlphaNumericString","expiredCallback","_JSLOAD_CALLBACK","jsHelpers._generateCallbackName","NETWORK_TIMEOUT_DELAY","RECAPTCHA_BASE","ReCaptchaLoaderImpl","hostLanguage","librarySeparatelyLoaded","isHostLanguageValid","shouldResolveImmediately","recaptcha","widgetId","jsHelpers._loadJS","MockReCaptchaLoaderImpl","RECAPTCHA_VERIFIER_TYPE","DEFAULT_PARAMS","RecaptchaVerifier","destroyed","tokenChangeListeners","renderPromise","isInvisible","makeTokenCallback","_recaptchaLoader","validateStartingState","assertNotDestroyed","getAssertedRecaptcha","tokenChange","makeRenderPromise","clearedOneInstance","sitekey","hasChildNodes","existing","globalFunc","guaranteedEmpty","domReady","ConfirmationResultImpl","onConfirmation","authCredential","_fromVerification","appVerifier","_verifyPhoneNumber","recaptchaToken","phoneInfoOptions","session","phoneEnrollmentInfo","phoneSessionInfo","mfaEnrollmentId","multiFactorHint","multiFactorUid","mfaPendingCredential","phoneSignInInfo","phoneResponseInfo","_reset","PhoneAuthProvider","phoneOptions","applicationVerifier","_fromTokenResponse","_withDefaultResolver","resolverOverride","IdpCredential","_buildIdpRequest","sessionId","returnIdpCredential","_signIn","_reauth","_linkUser","AbstractPopupRedirectOperation","pendingPromise","onExecution","registerConsumer","urlResponse","getIdpTask","unregisterAndCleanUp","unregisterConsumer","cleanUp","_POLL_WINDOW_CLOSE_TIMEOUT","signInWithPopup","resolverInternal","PopupOperation","executeNotNull","linkWithPopup","authWindow","pollId","currentPopupAction","_openPopup","associatedEvent","_originValidation","_isIframeWebStorageSupported","pollUserCancellation","redirectOutcomeMap","RedirectAction","readyOutcome","_getAndClearPendingRedirectStatus","_redirectUserForId","pendingRedirectKey","resolverPersistence","hasPendingRedirect","_setPendingRedirectStatus","signInWithRedirect","_signInWithRedirect","_openRedirect","linkWithRedirect","_linkWithRedirect","prepareUserForRedirect","getRedirectResult","_getRedirectResult","resolverExtern","AuthEventManager","cachedEventUids","consumers","queuedRedirectEvent","hasHandledPotentialRedirect","lastProcessedEventTime","authEventConsumer","isEventForConsumer","sendToConsumer","saveEventToCache","hasEventBeenHandled","consumer","isNullRedirectEvent","isRedirectEvent","onAuthEvent","eventIdMatches","eventUid","_getProjectConfig","IP_ADDRESS_REGEX","HTTP_REGEX","authorizedDomains","matchDomain","currentUrl","URL","hostname","ceUrl","escapedDomainPattern","NETWORK_TIMEOUT","resetUnloadedGapiModules","beacon","___jsl","CP","cachedGApiLoader","_loadGapi","loadGapiIframe","gapi","iframes","getContext","ontimeout","cbName","js._generateCallbackName","js\r\n ._loadJS","loadGapi","PING_TIMEOUT","IFRAME_ATTRIBUTES","tabindex","EID_FROM_APIHOST","getIframeUrl","eid","fw","_openIframe","gapiLoader._loadGapi","where","messageHandlersFilter","CROSS_ORIGIN_IFRAMES_FILTER","dontclear","iframe","clearTimerAndResolve","networkErrorTimer","restyle","setHideOnLeave","networkError","ping","BASE_POPUP_OPTIONS","resizable","statusbar","TARGET_BLANK","FIREFOX_EMPTY_URL","AuthPopup","_open","availHeight","availWidth","scrollbars","accum","openAsNewWindowIOS","newWin","initMouseEvent","FIREBASE_APP_CHECK_FRAGMENT_ID","_getRedirectUrl","authType","redirectUrl","additionalParams","setDefaultLanguage","getCustomParameters","getScopes","tid","paramsDict","appCheckTokenFragment","getHandlerBase","WEB_STORAGE_SUPPORT_KEY","BrowserPopupRedirectResolver","eventManagers","originValidationPromises","initAndGetManager","register","iframeEvent","authEvent","onEvent","_validateOrigin","browserPopupRedirectResolver","MultiFactorAssertionImpl","factorId","_finalizeEnroll","_finalizeSignIn","PhoneMultiFactorAssertionImpl","finalizeEnrollPhoneMfa","phoneVerificationInfo","finalizeSignInPhoneMfa","PhoneMultiFactorGenerator","_fromCredential","TotpMultiFactorGenerator","oneTimePassword","TotpMultiFactorAssertionImpl","_fromSecret","enrollmentId","_fromEnrollmentId","mfaSession","totpEnrollmentInfo","TotpSecret","_fromStartTotpMfaEnrollmentResponse","otp","totpVerificationInfo","_makeTotpVerificationInfo","secretKey","hashingAlgorithm","codeLength","codeIntervalSeconds","enrollmentCompletionDeadline","accountName","issuer","useDefaults","_isEmptyString","totpSessionInfo","sharedSecretKey","verificationCodeLength","periodSec","finalizeEnrollmentTime","AuthInterop","internalListeners","assertAuthConfigured","updateProactiveRefresh","authIdTokenMaxAge","lastPostedIdToken","mintCookieFactory","idTokenResult","idTokenAge","getAuth","authTokenSyncUrl","mintCookie","authEmulatorHost","authInstance","hierarchy","_updateErrorMap","_initializeWithPersistence","_initializeAuthInstance","setInstantiationMode","setInstanceCreatedCallback","_instanceIdentifier","getVersionForPlatform","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","amdO","leafPrototypes","def","chunkId","miniCssF","dataWebpackPrefix","needAttach","scripts","nc","onScriptComplete","doneFns","nmd","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","NavigationContext","LocationContext","RouteContext","outlet","invariant","matchRoutes","routes","locationArg","basename","pathname","stripBasename","parsePath","branches","flattenRoutes","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","route","relativePath","joinPaths","computeScore","paramRe","isSplat","segments","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","compilePath","captureGroups","splatValue","safelyDecodeURIComponent","resolveTo","toArg","routePathnames","locationPathname","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","useHref","useInRouterContext","useResolvedPath","joinedPathname","getToPathname","endsWithSlash","createHref","useLocation","useNavigate","routePathnamesJson","activeRef","go","OutletContext","_renderMatches","parentMatches","React.createElement","Outlet","useOutlet","Route","Router","basenameProp","locationProp","navigationType","NavigationType","staticProp","navigationContext","trailingPathname","Routes","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","BrowserRouter","historyRef","createBrowserHistory","history","Link","reloadDocument","internalOnClick","replaceProp","navigate","isModifiedEvent","createPath","useLinkClickHandler","_taggedTemplateLiteral","elevation","getPaperUtilityClass","PaperRoot","square","rounded","_theme$vars$overlays","backgroundImage","getOverlayAlpha","overlays","getAppBarUtilityClass","joinVars","var1","var2","AppBarRoot","Paper","backgroundColorDefault","enableColorOnDark","AppBar","defaultBg","darkBg","darkColor","extendSxProp","finalSx","inSx","_props$theme$unstable","systemProps","otherProps","splitProps","getTypographyUtilityClass","TypographyRoot","noWrap","gutterBottom","paragraph","defaultVariantMapping","colorTransformations","textPrimary","textSecondary","themeProps","transformDeprecatedColors","variantMapping","isHostComponent","appendOwnerState","useThemeSystem","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","initialStatus","appear","isMounting","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","prevState","updateStatus","nextStatus","cancelNextCallback","getTimeouts","exit","nodeRef","forceReflow","performEnter","performExit","appearing","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","onExit","onExiting","onExited","setNextCallback","doesNotHaveTimeoutOrListener","addEndListener","maybeNextCallback","childProps","TransitionGroupContext","reflow","getTransitionProps","_style$transitionDura","_style$transitionTimi","getScale","entering","entered","isWebKit154","Grow","inProp","TransitionComponent","autoTimeout","handleRef","normalizedTransitionCallback","maybeIsAppearing","handleEntering","handleEnter","isAppearing","handleEntered","handleExiting","handleExit","handleExited","muiSupportAuto","isHTMLElement","isShadowRoot","ShadowRoot","getUAString","uaData","brands","brand","isLayoutViewport","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","addVisualOffsets","getWindowScroll","getNodeName","getWindowScrollBarX","isScrollParent","_getComputedStyle","getCompositeRect","elementOrVirtualElement","isFixed","isOffsetParentAnElement","offsetParentIsScaled","isElementScaled","getNodeScroll","getLayoutRect","getParentNode","assignedSlot","getScrollParent","listScrollParents","scrollParent","isBody","updatedList","isTableElement","getTrueOffsetParent","getOffsetParent","perspective","contain","willChange","getContainingBlock","basePlacements","popper","variationPlacements","placement","placements","modifierPhases","modifiers","visited","modifier","requires","requiresIfExists","dep","depModifier","areValidElements","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","orderedModifiers","modifiersData","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","scrollParents","contextElement","phase","orderModifiers","mergeByName","_ref3$options","cleanupFn","noopFn","_state$elements","rects","_state$orderedModifie","_state$orderedModifie2","onFirstUpdate","getBasePlacement","getVariation","getMainAxisFromPlacement","computeOffsets","basePlacement","variation","commonX","commonY","unsetSides","mapToStyles","_Object$assign2","popperRect","gpuAcceleration","adaptive","roundOffsets","_offsets$x","_offsets$y","hasX","hasY","sideX","sideY","heightProp","widthProp","_Object$assign","commonStyles","dpr","roundOffsetsByDPR","initialStyles","arrow","_options$offset","invertDistance","skidding","distanceAndSkiddingToXY","_data$state$placement","popperOffsets","getOppositePlacement","getOppositeVariationPlacement","isSameNode","rectToClientRect","getClientRectFromMixedType","clippingParent","layoutViewport","getViewportRect","getInnerBoundingClientRect","winScroll","getDocumentRect","getClippingRect","rootBoundary","mainClippingParents","clippingParents","clipperElement","getClippingParents","firstClippingParent","clippingRect","accRect","mergePaddingObject","paddingObject","expandToHashMap","hashMap","detectOverflow","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","within","mathMax","mathMin","_options$mainAxis","checkMainAxis","_options$altAxis","altAxis","checkAltAxis","_options$tether","tether","_options$tetherOffset","tetherOffset","isBasePlacement","referenceRect","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","arrowElement","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","arrowOffsetParent","offsetModifierValue","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","withinMaxClamp","_state$modifiersData$","toPaddingObject","minProp","maxProp","endDiff","startDiff","clientSize","centerToReference","axisProp","centerOffset","_options$element","getSideOffsets","preventedOffsets","isAnySideFullyClipped","createPopper","_options$scroll","_options$resize","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","applyStyles","_skip","specifiedFallbackPlacements","fallbackPlacements","_options$flipVariatio","flipVariations","allowedAutoPlacements","preferredPlacement","oppositePlacement","getExpandedFallbackPlacements","_options$allowedAutoP","allPlacements","allowedPlacements","overflows","computeAutoPlacement","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","fittingPlacement","preventOverflow","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","disablePortal","setMountNode","getPopperUnstyledUtilityClass","omitEventHandlers","mergeSlotProps","getSlotProps","additionalProps","externalSlotProps","externalForwardedProps","joinedClasses","mergedStyle","internalRef","eventHandlers","excludeKeys","extractEventHandlers","componentsPropsWithoutEventHandlers","otherPropsWithoutEventHandlers","internalSlotProps","resolveComponentProps","useSlotProps","_parameters$additiona","resolvedComponentsProps","defaultContextValue","disableDefaultClasses","ClassNameConfiguratorContext","useClassNamesOverride","resolveAnchorEl","anchorEl","defaultPopperOptions","PopperTooltip","initialPlacement","popperOptions","popperRefProp","popperRef","TransitionProps","tooltipRef","ownRef","handlePopperRef","handlePopperRefRef","rtlPlacement","flipPlacement","setPlacement","resolvedAnchorElement","setResolvedAnchorElement","popperModifiers","Root","rootProps","PopperUnstyled","keepMounted","exited","setExited","resolvedAnchorEl","transitionProps","PopperRoot","_slots$root","componentsProps","RootComponent","getTooltipUtilityClass","TooltipPopper","Popper","disableInteractive","popperInteractive","popperArrow","popperClose","tooltipClasses","transformOrigin","TooltipTooltip","tooltipArrow","wordWrap","TooltipArrow","hystersisOpen","hystersisTimer","cursorPosition","composeEventHandler","_slots$popper","_slots$transition","_slots$tooltip","_slots$arrow","_slotProps$popper","_slotProps$popper2","_slotProps$transition","_slotProps$tooltip","_slotProps$tooltip2","_slotProps$arrow","_slotProps$arrow2","describeChild","disableFocusListener","disableHoverListener","disableInteractiveProp","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","idProp","leaveDelay","leaveTouchDelay","onClose","onOpen","openProp","PopperComponentProp","PopperComponent","PopperProps","TransitionComponentProp","setChildNode","arrowRef","setArrowRef","ignoreNonTouchEvents","closeTimer","enterTimer","leaveTimer","touchTimer","openState","setOpenState","prevUserSelect","stopTouchInteraction","WebkitUserSelect","handleOpen","handleClose","handleLeave","useIsFocusVisible","handleBlurVisible","handleFocusVisible","focusVisibleRef","setChildIsFocusVisible","detectTouchStart","childrenProps","handleMouseOver","nameOrDescProps","titleIsString","interactiveWrapperListeners","onMouseOver","_PopperProps$popperOp","tooltipModifiers","TooltipComponent","ArrowComponent","Arrow","popperProps","tooltipProps","tooltipArrowProps","TransitionPropsInner","getChildMapping","getProp","getNextChildMapping","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","prevChild","isLeaving","TransitionGroup","contextValue","firstRender","currentChildMapping","childFactory","Global","sheetRef","rehydrating","sheetRefCurrent","nextElementSibling","keyframes","insertable","pulsate","rippleX","rippleY","rippleSize","leaving","setLeaving","rippleClassName","ripple","rippleVisible","ripplePulsate","rippleStyles","childClassName","childLeaving","childPulsate","_t","_t2","_t3","_t4","enterKeyframe","exitKeyframe","pulsateKeyframe","TouchRippleRoot","TouchRippleRipple","Ripple","touchRippleClasses","TouchRipple","centerProp","ripples","setRipples","rippleCallback","ignoringMouseDown","startTimer","startTimerCommit","startCommit","oldRipples","fakeElement","sizeX","sizeY","getButtonBaseUtilityClass","ButtonBaseRoot","WebkitTapHighlightColor","outline","verticalAlign","MozAppearance","WebkitAppearance","textDecoration","borderStyle","buttonBaseClasses","colorAdjust","ButtonBase","centerRipple","disableRipple","disableTouchRipple","focusRipple","LinkComponent","onContextMenu","onFocusVisible","TouchRippleProps","touchRippleRef","buttonRef","rippleRef","handleRippleRef","setFocusVisible","mountedState","setMountedState","enableTouchRipple","useRippleHandler","rippleAction","eventCallback","skipRippleAction","handleMouseDown","handleDragLeave","handleMouseUp","handleTouchStart","handleTouchEnd","handleTouchMove","isNonNativeButton","keydownRef","handleKeyUp","ComponentProp","buttonProps","focusVisibleClassName","composedClasses","getIconButtonUtilityClass","IconButtonRoot","edge","activeChannel","mainChannel","iconButtonClasses","disableFocusRipple","getAvatarUtilityClass","AvatarRoot","colorDefault","Avatar","AvatarImg","objectFit","textIndent","AvatarFallback","Person","childrenProp","imgProps","sizes","srcSet","crossOrigin","setLoaded","image","Image","srcset","useLoaded","hasImg","hasImgNotFailing","getListUtilityClass","ListRoot","disablePadding","dense","subheader","listStyle","ListContext","getScrollbarSize","documentWidth","nextItem","disableListWrap","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","repeating","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","autoFocusItem","listRef","textCriteriaRef","previousKeyMatched","lastTime","adjustStyleForScrollbar","noExplicitWidth","scrollbarSize","activeItemIndex","muiSkipListHighlight","newChildProps","lowerKey","currTime","keepFocusOnCurrent","ariaHidden","getPaddingRight","ariaHiddenSiblings","elementsToExclude","isNotExcludedElement","isNotForbiddenElement","isForbiddenTagName","isInputHidden","isAriaHiddenForbiddenOnElement","findIndexOf","handleContainer","restoreStyle","disableScrollLock","isOverflowing","scrollContainer","DocumentFragment","containerWindow","ModalManager","containers","modals","modalIndex","modalRef","hiddenSiblings","getHiddenSiblings","containerIndex","restore","ariaHiddenState","nextTop","candidatesSelector","defaultGetTabbable","regularTabNodes","orderedTabNodes","nodeTabIndex","tabindexAttr","getTabIndex","getRadio","roving","isNonTabbableRadio","isNodeMatchingSelectorFocusable","documentOrder","defaultIsEnabled","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","getTabbable","isEnabled","ignoreNextEnforceFocus","sentinelStart","sentinelEnd","nodeToRestore","reactFocusEventTarget","rootRef","lastKeydown","hasFocus","_lastKeydown$current","_lastKeydown$current2","isShiftTab","focusNext","focusPrevious","loopFocus","handleFocusSentinel","childrenPropsHandler","getModalUtilityClass","defaultManager","forwardedRef","_props$ariaHidden","closeAfterTransition","disableEscapeKeyDown","hideBackdrop","onBackdropClick","onTransitionEnter","onTransitionExited","mountNodeRef","hasTransition","getHasTransition","ariaHiddenProp","getModal","handleMounted","resolvedContainer","isTopModal","handlePortalRef","backdrop","BackdropComponent","backdropProps","FocusTrap","Fade","getBackdropUtilityClass","BackdropRoot","invisible","_slotProps$root","rootSlotProps","ModalRoot","ModalBackdrop","Backdrop","_slots$backdrop","_slotProps$backdrop","BackdropProps","commonProps","RootSlot","BackdropSlot","backdropSlotProps","ModalUnstyled","getPopoverUtilityClass","getOffsetTop","getOffsetLeft","getTransformOriginValue","PopoverRoot","Modal","PopoverPaper","anchorOrigin","anchorPosition","anchorReference","marginThreshold","PaperProps","transitionDurationProp","paperRef","handlePaperRef","getAnchorOffset","anchorRect","getTransformOrigin","elemRect","getPositioningStyle","elemTransformOrigin","heightThreshold","widthThreshold","isPositioned","setIsPositioned","setPositioningStyles","positioning","getMenuUtilityClass","RTL_ORIGIN","LTR_ORIGIN","MenuRoot","MenuPaper","WebkitOverflowScrolling","MenuMenuList","MenuList","disableAutoFocusItem","MenuListProps","PopoverClasses","menuListActionsRef","getDividerUtilityClass","getMenuItemUtilityClass","MenuItemRoot","disableGutters","gutters","backgroundClip","menuItemClasses","dividerClasses","listItemTextClasses","listItemIconClasses","tabIndexProp","menuItemRef","PENDING_TIMEOUT_MS","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","TOKEN_EXPIRATION_BUFFER","ERROR_DESCRIPTION_MAP","isServerError","getInstallationsEndpoint","projectId","extractAuthTokenInfoFromResponse","requestStatus","responseExpiresIn","getErrorFromResponse","requestName","responseJson","errorData","serverCode","serverMessage","serverStatus","getHeaders","getHeadersWithAuth","appConfig","getAuthorizationHeader","retryIfServerError","createInstallationRequest","fid","endpoint","heartbeatService","getHeartbeatsHeader","authVersion","sdkVersion","responseValue","registeredInstallationEntry","registrationStatus","authToken","VALID_FID_PATTERN","generateFid","fidByteArray","crypto","msCrypto","getRandomValues","fidChangeCallbacks","fidChanged","callFidChangeCallbacks","channel","getBroadcastChannel","closeBroadcastChannel","broadcastFidChange","broadcastChannel","BroadcastChannel","OBJECT_STORE_NAME","updateFn","getInstallationEntry","installations","oldEntry","installationEntry","updateOrCreateInstallationEntry","entryWithPromise","triggerRegistrationIfNecessary","registrationPromise","clearTimedOutRequest","inProgressEntry","registrationTime","registerInstallation","waitUntilFidRegistration","updateInstallationRequest","generateAuthTokenRequest","getGenerateAuthTokenEndpoint","installation","completedAuthToken","refreshAuthToken","isEntryRegistered","oldAuthToken","isAuthTokenValid","tokenPromise","waitUntilAuthTokenRequest","makeAuthTokenRequestInProgressEntry","fetchAuthTokenFromServer","updateAuthTokenRequest","requestTime","updatedInstallationEntry","isAuthTokenExpired","inProgressAuthToken","installationsImpl","completeInstallationRegistration","getMissingValueError","INSTALLATIONS_NAME","publicFactory","extractAppConfig","internalFactory","installationsInternal","ANALYTICS_TYPE","FETCH_TIMEOUT_MILLIS","DYNAMIC_CONFIG_URL","GTAG_URL","createGtagTrustedTypesScriptURL","gtagURL","promiseAllSettled","insertScriptTag","dataLayerName","measurementId","trustedTypesPolicy","policyName","policyOptions","trustedTypes","createPolicy","createTrustedTypesPolicy","createScriptURL","gtagScriptURL","gtagOnConfig","gtagCore","initializationPromisesMap","dynamicConfigPromisesList","measurementIdToAppId","gtagParams","correspondingAppId","dynamicConfigResults","foundConfig","gtagOnEvent","initializationPromisesToWaitFor","gaSendToList","sendToId","initializationPromise","wrapOrCreateGtag","gtagFunctionName","_args","command","customParams","wrapGtag","wrappedGtag","findGtagScriptOnPage","scriptTags","RetryData","throttleMetadata","defaultRetryData","fetchDynamicConfig","appFields","appUrl","jsonResponse","httpStatus","responseMessage","fetchDynamicConfigWithRetry","retryData","timeoutMillis","getThrottleMetadata","throttleEndTimeMillis","AnalyticsAbortSignal","attemptFetchDynamicConfigWithRetry","setAbortableTimeout","deleteThrottleMetadata","isRetriableError","backoffMillis","setThrottleMetadata","defaultEventParametersForInit","defaultConsentSettingsForInit","gtagFunction","eventParams","_setConsentDefaultForInit","consentSettings","_setDefaultEventParametersForInit","validateIndexedDB","errorInfo","dynamicConfigPromise","fidPromise","envIsValid","dynamicConfig","configProperties","gtagCoreFunction","wrappedGtagFunction","AnalyticsService","gtagName","globalInitDone","mismatchedEnvMessages","warnOnBrowserContextMismatch","dataLayer","getOrCreateDataLayer","_initializeAnalytics","logEvent","analyticsInstance","internalLogEvent","analyticsOptions","analytics","storageBucket","messagingSenderId","appleProvider","signInWithGoogle","signInWithApple","loginWithEmail","signupWithEmail","api","converter","stringifiedAttributes","jar","found","withAttributes","withConverter","Preferences","PreferencesWeb","Cookies","getUserId","getPhotoUrl","getRoutineStatePref","setUserId","userId","setToken","setPhotoUrl","setRoutineStatePref","routineState","removeAllPref","deleteRoutineStatePref","die","mockGlobal","getDescriptor","EMPTY_ARRAY","EMPTY_OBJECT","hasProxy","plainObjectString","assertProxies","invoked","isStringish","protoConstructor","isGenerator","addHiddenProp","addHiddenFinalProp","createInstanceofPredicate","theClass","isES6Map","isES6Set","hasGetOwnPropertySymbols","hasProp","storedAnnotationsSymbol","createDecoratorAnnotation","annotation","storeAnnotation","annotationType_","OVERRIDE","isOverride","$mobx","Atom","name_","isPendingUnobservation_","isBeingObserved_","observers_","diffValue_","lastAccessedBy_","lowestObserverState_","IDerivationState_","NOT_TRACKING_","onBOL","onBUOL","onBO","onBUO","reportObserved","reportChanged","startBatch","propagateChanged","globalState","stateVersion","MIN_SAFE_INTEGER","endBatch","isAtom","createAtom","onBecomeObservedHandler","onBecomeUnobservedHandler","atom","interceptHook","ON_BECOME_OBSERVED","onBecomeUnobserved","structural","shallow","deepEnhancer","isObservable","observable","isFlow","autoAction","referenceEnhancer","createActionAnnotation","options_","make_","extend_","adm","_this$options_","target_","actionDescriptor","createActionDescriptor","proxyTrap","defineProperty_","safeDescriptors","_annotation$options_","proxy_","_adm$proxy_","_annotation$options_2","_annotation$options_$","_annotation$options_3","_annotation$options_$2","_adm$proxy_2","isPlainObject_","createFlowAnnotation","flowDescriptor","createFlowDescriptor","_this$options_2","isMobXFlow","createComputedAnnotation","assertComputedDescriptor","defineComputedProperty_","createObservableAnnotation","assertObservableDescriptor","defineObservableProperty_","enhancer","_this$options_$enhanc","autoAnnotation","createAutoAnnotation","autoBind","observableAnnotation","_this$options_4","_this$options_5","defaultCreateObservableOptions","defaultDecorator","asCreateObservableOptions","observableRefAnnotation","observableShallowAnnotation","isObservableObject","isObservableArray","isObservableMap","isObservableSet","observableStructAnnotation","observableDecoratorAnnotation","getEnhancerFromOptions","getEnhancerFromAnnotation","createObservable","ObservableValue","equals","initialValues","useProxies","createLegacyArray","createObservableArray","ObservableMap","ObservableSet","extendObservable","asObservableObject","_target$$mobx$proxy_","_target$$mobx","objectProxyTraps","asDynamicObservableObject","struct","COMPUTED","computedAnnotation","computedStructAnnotation","ComputedValue","currentActionId","nextActionId","isFunctionNameConfigurable","_getDescriptor","_getDescriptor$config","tmpNameDescriptor","isMobxAction","canRunAsDerivation","runInfo","notifySpy_","startTime_","prevDerivation_","trackingDerivation","runAsAction","prevAllowStateChanges_","allowStateChanges","untrackedStart","allowStateChangesStart","prevAllowStateReads_","allowStateReadsStart","runAsAction_","actionId_","parentActionId_","error_","suppressReactionErrors","allowStateChangesEnd","allowStateReadsEnd","untrackedEnd","_Symbol$toPrimitive","notifySpy","hasUnreportedChange_","interceptors_","changeListeners_","value_","dehancer","dehanceValue","prepareNewValue_","UNCHANGED","setNewValue_","checkIfStateModificationsAreAllowed","hasInterceptors","interceptChange","intercept_","registerInterceptor","observe_","fireImmediately","observableKind","debugObjectName","registerListener","isObservableValue","TraceMode","dependenciesState_","observing_","newObserving_","runId_","UP_TO_DATE_","unboundDepsCount_","CaughtException","triggeredBy_","isComputing_","isRunningSetter_","derivation","setter_","isTracing_","NONE","scope_","equals_","requiresReaction_","keepAlive_","compareStructural","requiresReaction","keepAlive","onBecomeStale_","POSSIBLY_STALE_","propagateMaybeChanged","inBatch","shouldCompute","prevTrackingContext","trackingContext","trackAndCompute","STALE_","propagateChangeConfirmed","warnAboutUntrackedRead_","computeValue_","isCaughtException","cause","wasSuspended","trackDerivedFunction","disableErrorBoundaries","suspend_","clearObserving","autorun","prevU","isComputedValue","prevAllowStateReads","prevUntracked","obs","changeDependenciesStateTo0","runId","prevTracking","prevObserving","observing","lowestNewObservingDerivationState","i0","bindDependencies","untracked","allowStateReads","MobXGlobals","mobxGuid","pendingUnobservations","pendingReactions","isRunningReactions","enforceActions","spyListeners","globalReactionErrorHandlers","computedRequiresReaction","reactionRequiresObservable","observableRequiresReaction","verifyProxies","canMergeGlobalState","isolateCalled","__mobxInstanceCount","__mobxGlobals","queueForUnobservation","runReactions","Reaction","onInvalidate_","errorHandler_","requiresObservable_","isDisposed_","isScheduled_","isTrackPending_","isRunning_","schedule_","isScheduled","runReaction_","reportExceptionInDerivation_","prevReaction","getDisposer_","trace","enterBreakPoint","getAtomFromArgs","BREAK","LOG","reactionScheduler","runReactionsHelper","allReactions","iterations","remainingReactions","isReaction","ACTION","AUTOACTION","DEFAULT_ACTION_NAME","actionAnnotation","actionBoundAnnotation","autoActionAnnotation","autoActionBoundAnnotation","createActionFactory","runInAction","reaction","_opts","_opts$name","reactionRunner","requiresObservable","createSchedulerFromOptions","getAtom","listenersKey","hookListeners","ALWAYS","isolateGlobalState","baseScheduler","setReactionScheduler","annotations","descriptors","getDependencyTree","nodeToDependencyTree","generatorId","FlowCancellationError","flowAnnotation","flowBoundAnnotation","rejector","ctx","stepId","onFulfilled","onRejected","cancelPromise","yieldedPromise","_isObservable","values_","toJSHelper","__alreadySeen","ownKeys_","apiOwnKeys","toJS","getAdm","has_","get_","set_","_getAdm$set_","deleteProperty","delete_","_getAdm$delete_","_getAdm$definePropert","preventExtensions","interceptable","interceptors","listenable","keysSymbol","makeAutoObservable","overrides","SPLICE","arrayTraps","getArrayLength_","arrayExtensions","setArrayLength_","ObservableArrayAdministration","owned_","legacyMode_","atom_","enhancer_","lastKnownLength_","newV","oldV","dehanceValue_","dehanceValues_","removedCount","newLength","currentLength","spliceWithArray_","updateArrayLength_","oldLength","reserveArrayBuffer","deleteCount","lengthDelta","spliceItemsIntoValues_","notifyArraySplice_","_this$values_","notifyArrayChildUpdate_","owned","spliceWithArray","addArrayExtension","funcFactory","simpleFunc","dehancedValues","mapLikeFunc","reduceLikeFunc","isObservableArrayAdministration","ObservableMapMarker","ADD","DELETE","_Symbol$iterator","_Symbol$toStringTag","data_","hasMap_","keysAtom_","newEntry","updateValue_","addValue_","makeIterable","getPlainObjectKeys","_step2","_step3","replacementMap","dataStructure","convertToMap","orderedData","keysReportChangedCalled","_step4","keyExisted","iter1","iter2","next1","next2","ObservableSetMarker","callbackFn","nextIndex","observableValues","descriptorCache","ObservableObjectAdministration","defaultAnnotation_","appliedAnnotations_","pendingKeys_","getObservablePropValue_","setObservablePropValue_","assertAnnotable","_this$target_$storedA","outcome","recordAnnotationApplied","deleteOutcome","notifyPropertyAddition_","cachedDescriptor","getCachedObservablePropDescriptor","_this$pendingKeys_","_this$pendingKeys_$ge","_this$pendingKeys_2","_this$pendingKeys_2$g","keys_","_options$name","_options$defaultDecor","getAnnotationFromOptions","isObservableObjectAdministration","_adm$target_$storedAn","ENTRY_0","createArrayEntryDescriptor","OBSERVABLE_ARRAY_BUFFER_SIZE","StubArray","LegacyObservableArray","createArrayBufferItem","getDebugName","getAdministration","named","aStack","bStack","areArrays","aCtor","bCtor","getSelf","__MOBX_DEVTOOLS_GLOBAL_HOOK__","injectMobx","spy","extras","MobileSelectedStore","currentlySelected","fromProgressPage","collectStoredAnnotations","defaultNoopBatch","printDebugValue","maxAge","sweepTimeout","registrations","registeredAt","scheduleSweep","sweep","observerFinalizationRegistry","FinalizationRegistry","TimerBasedFinalizationRegistry","globalIsUsingStaticRendering","isUsingStaticRendering","observerComponentNameFor","baseComponentName","objectToBeRetainedByReactFactory","ObjectToBeRetainedByReact","useObserver","objectRetainedByReact","admRef","changedBeforeMount","unregister","hasSymbol","ReactForwardRefSymbol","ReactMemoSymbol","baseComponent","useForwardRef","observerComponent","hoistBlackList","observerBatching","FirebaseAuthentication","FirebaseAuthenticationWeb","Container","Center","Logo","Typography","MobileLogo","MenuItems","anchorElUser","setAnchorElUser","displayArrow","setDisplayArrow","getPhoto","handleLogout","mobileSelectedStore","ArrowBack","AccountCircle","RoutineText","WeightIconContainer","SearchIconContainer","FitnessCenter","kindOf","kindOfTest","typeOfTest","isFile","isBlob","isFileList","isURLSearchParams","allOwnKeys","_global","isContextDefined","TypedArray","isHTMLForm","reduceDescriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","isFormData","isArrayBufferView","isView","isStream","pipe","caseless","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","forEachEntry","matchAll","freezeMethods","toObjectSet","arrayOrString","toCamelCase","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","fileName","lineNumber","columnNumber","customProps","axiosError","isVisitable","removeBrackets","renderKey","dots","predicates","metaTokens","visitor","defaultVisitor","useBlob","Blob","convertValue","isFlatArray","exposedHelpers","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializedParams","serializeFn","hashmarkIndex","InterceptorManager","rejected","synchronous","runWhen","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isStandardBrowserEnv","product","isStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","protocols","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","DEFAULT_CONTENT_TYPE","transitional","transitionalDefaults","transformRequest","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","toURLEncodedForm","formSerializer","_FormData","env","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_rewrite","lHeader","setHeaders","rawHeaders","parseHeaders","tokensRE","parseTokens","deleteHeader","formatHeader","asStrings","accessors","defineAccessor","accessorName","buildAccessors","accessor","transformData","fns","isCancel","__CANCEL__","CanceledError","secure","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","urlParsingNode","resolveURL","requestURL","samplesCount","firstSampleTS","timestamps","chunkLength","startedAt","bytesCount","passed","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","lengthComputable","progressBytes","rate","progress","estimated","knownAdapters","http","onCanceled","requestData","requestHeaders","cancelToken","onloadend","responseHeaders","getAllResponseHeaders","settle","paramsSerializer","responseURL","timeoutErrorMessage","xsrfValue","withCredentials","isURLSameOrigin","onDownloadProgress","onUploadProgress","aborted","parseProtocol","nameOrAdapter","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","deprecatedWarnings","assertOptions","schema","allowUnknown","Axios","instanceConfig","configOrUrl","contextHeaders","boolean","function","requestInterceptorChain","synchronousRequestInterceptors","responseInterceptorChain","generateHTTPMethod","isForm","CancelToken","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","createInstance","isAxiosError","formToJSON","urls","backend","logout","cookieSecure","development","localConfig","production","waitForAuthInit","ErrorConfig","checkCookies","LoggedRoutineStore","loggedRoutine","LoggedWorkouts","WorkoutRoutineStore","workoutRoutine","dailyRoutines","fetchData","workoutDay","getCircularProgressUtilityClass","SIZE","circularRotateKeyframe","circularDashKeyframe","CircularProgressRoot","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","CircularProgress","thickness","circleStyle","rootStyle","circumference","PI","resourcesData","isDataloading","setIsDataLoading","calenderData","setCalenderData","setCurrentDate","currentViewName","setCurrentViewName","currentDateFromHistory","setCurrentDateFromHistory","moment","defaultDate","workoutRoutineStore","loggedRoutineStore","createSchedulerData","handleDateClick","loggedRoutines","schedulerData","excludeDate","dayOfWeekArray","workout","futureDate","schedulerItem","typeId","dayOfWeek","startDateISO","endDateISO","newSchedulerItem","restDays","restDay","currentMonth","prevMonth","nextYear","flexFlow","getBottomNavigationActionUtilityClass","BottomNavigationActionRoot","showLabel","iconOnly","bottomNavigationActionClasses","BottomNavigationActionLabel","getBottomNavigationUtilityClass","BottomNavigationRoot","showLabels","childIndex","childValue","StyledNavAction","BottomNavigationAction","CalendarMonth","getButtonUtilityClass","commonIconStyles","ButtonRoot","colorInherit","disableElevation","fullWidth","_theme$palette$getCon","_theme$palette","primaryChannel","buttonClasses","ButtonStartIcon","startIcon","ButtonEndIcon","endIcon","ButtonGroupContext","resolvedProps","endIconProp","startIconProp","stripDiacritics","comp","defaultFilterOptions","ignoreAccents","ignoreCase","matchFrom","getOptionLabel","filteredOptions","candidate","createFilterOptions","defaultIsActiveElementInListbox","listboxRef","_listboxRef$current$p","useAutocomplete","unstable_isActiveElementInListbox","unstable_classNamePrefix","autoComplete","autoHighlight","autoSelect","blurOnSelect","clearOnBlur","freeSolo","clearOnEscape","disableClearable","disableCloseOnSelect","disabledProp","filterSelectedOptions","getOptionDisabled","getOptionLabelProp","_option$label","handleHomeEndKeys","includeInputInList","inputValueProp","isOptionEqualToValue","onHighlightChange","onInputChange","openOnFocus","valueProp","optionLabel","ignoreFocus","firstFocus","inputRef","setAnchorEl","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","setValueState","setInputValueState","resetInputValue","newInputValue","inputPristine","setInputPristine","inputValueIsSelectedValue","popupOpen","previousProps","usePreviousProps","listboxAvailable","focusTag","tagToFocus","setHighlightedIndex","listboxNode","elementBottom","changeHighlightedIndex","validOptionIndex","maxIndex","getNextIndex","setSelectionRange","syncHighlightedIndex","previousHighlightedOption","checkHighlightedOptionExists","currentOption","optionItem","handleListboxRef","handleValue","isTouch","selectNewValue","reasonProp","handleFocusTag","validTagIndex","handleClear","defaultMuiPrevented","handleInputChange","handleOptionMouseOver","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleInputMouseDown","dirty","groupedOptions","getRootProps","getInputLabelProps","htmlFor","getInputProps","autoCapitalize","spellCheck","getClearProps","getPopupIndicatorProps","getTagProps","onDelete","getListboxProps","getOptionProps","getListSubheaderUtilityClass","ListSubheaderRoot","inset","disableSticky","sticky","ListSubheader","getChipUtilityClass","ChipRoot","clickable","chipClasses","avatar","deleteIcon","deletable","deleteIconColor","textColor","Chip","defaultAvatarColor","defaultIconColor","contrastTextChannel","selectedChannel","defaultBorder","ChipLabel","isDeleteKeyboardEvent","keyboardEvent","avatarProp","clickableProp","deleteIconProp","iconProp","skipFocusWhenDisabled","chipRef","handleDeleteIconClick","moreProps","CancelIcon","getInputBaseUtilityClass","getInputUtilityClass","inputBaseClasses","getOutlinedInputUtilityClass","getFilledInputUtilityClass","getAutocompleteUtilityClass","_ClearIcon","_ArrowDropDownIcon","AutocompleteRoot","hasClearIcon","hasPopupIcon","inputFocused","autocompleteClasses","inputRoot","inputClasses","outlinedInputClasses","filledInputClasses","AutocompleteEndAdornment","endAdornment","AutocompleteClearIndicator","IconButton","clearIndicator","AutocompletePopupIndicator","popupIndicator","popupIndicatorOpen","AutocompletePopper","popperDisablePortal","AutocompletePaper","AutocompleteLoading","AutocompleteNoOptions","noOptions","AutocompleteListbox","listbox","AutocompleteGroupLabel","groupLabel","AutocompleteGroupUl","groupUl","Autocomplete","_slotProps$clearIndic","_slotProps$paper","_slotProps$popupIndic","startAdornment","ChipProps","clearIcon","ClearIcon","clearText","closeText","forcePopupIcon","getLimitTagsText","limitTags","ListboxComponent","ListboxProps","loadingText","noOptionsText","openText","PaperComponent","popupIcon","ArrowDropDownIcon","renderGroupProp","renderGroup","renderInput","renderOptionProp","renderOption","renderTags","getCustomizedTagProps","props2","renderListOption","optionProps","clearIndicatorSlotProps","paperSlotProps","popperSlotProps","popupIndicatorSlotProps","InputLabelProps","InputProps","inputProps","option2","index2","defaultClassName","generateClassName","BoxRoot","_extendSxProp","createBox","defaultCreateStyledComponent","systemStyled","useThemePropsDefault","useThemePropsSystem","joinChildren","childrenArray","directionValues","spacingValues","previousDirectionValue","useFlexGap","createStyledComponent","StackRoot","createStack","DividerRoot","absolute","flexItem","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","borderBottomWidth","dividerChannel","borderRightWidth","DividerWrapper","wrapperVertical","useFormControl","FormControlContext","getInputAdornmentUtilityClass","_span","InputAdornmentRoot","disablePointerEvents","inputAdornmentClasses","disableTypography","variantProp","muiFormControl","hiddenLabel","getCardUtilityClass","CardRoot","raised","outerHeightStyle","TextareaAutosize","maxRows","minRows","shadowRef","renders","getUpdatedState","computedStyle","inputShallow","borderTopWidth","singleRowHeight","syncHeight","resizeObserver","syncHeightWithFlushSycn","formControlState","states","GlobalStyles","globalStyles","themeInput","upperTheme","MuiGlobalStyles","SystemGlobalStyles","isFilled","SSR","rootOverridesResolver","formControl","adornedStart","adornedEnd","sizeSmall","inputOverridesResolver","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel","InputBaseRoot","InputBaseComponent","inputPlaceholder","placeholderHidden","placeholderVisible","font","WebkitTextFillColor","inputGlobalStyles","InputBase","_slotProps$input","ariaDescribedby","disableInjectingGlobalStyles","inputComponent","inputPropsProp","inputRefProp","renderSuffix","handleInputRefWarning","handleInputRef","fcs","onFilled","onEmpty","checkDirty","InputComponent","setAdornedStart","Input","onAnimationStart","InputRoot","inputBaseRootOverridesResolver","disableUnderline","underline","bottomLineColor","onBackgroundChannel","inputUnderline","borderBottomStyle","InputInput","InputBaseInput","inputBaseInputOverridesResolver","_slots$input","componentsPropsProp","inputComponentsProps","InputSlot","FilledInputRoot","hoverBackground","FilledInput","borderTopLeftRadius","borderTopRightRadius","hoverBg","disabledBg","FilledInputInput","WebkitBoxShadow","caretColor","getColorSchemeSelector","filledInputComponentsProps","NotchedOutlineRoot","NotchedOutlineLegend","withLabel","notched","OutlinedInputRoot","notchedOutline","OutlinedInputInput","OutlinedInput","_React$Fragment","filled","getFormLabelUtilityClasses","FormLabelRoot","colorSecondary","formLabelClasses","AsteriskComponent","asterisk","getInputLabelUtilityClasses","InputLabelRoot","FormLabel","disableAnimation","animated","shrinkProp","getFormControlUtilityClasses","FormControlRoot","visuallyFocused","initialAdornedStart","isMuiElement","initialFilled","setFilled","focusedState","registerEffect","getFormHelperTextUtilityClasses","FormHelperTextRoot","contained","formHelperTextClasses","getNativeSelectUtilityClasses","nativeSelectSelectStyles","nativeSelectClasses","NativeSelectSelect","nativeSelectIconStyles","NativeSelectIcon","iconOpen","IconComponent","getSelectUtilityClasses","SelectSelect","selectClasses","SelectIcon","SelectNativeInput","nativeInput","areEqualValues","_StyledInput","_StyledFilledInput","SelectInput","autoWidth","defaultOpen","displayEmpty","MenuProps","SelectDisplayProps","displayRef","displayNode","setDisplayNode","isOpenControlled","menuMinWidthState","setMenuMinWidthState","handleDisplayRef","anchorElement","isCollapsed","displaySingle","handleItemClick","clonedEvent","displayMultiple","computeDisplay","menuMinWidth","buttonId","styledRootConfig","StyledInput","StyledOutlinedInput","StyledFilledInput","classesProp","NativeSelectInput","outlined","inputComponentRef","getTextFieldUtilityClass","variantComponent","TextFieldRoot","FormControl","FormHelperTextProps","helperText","SelectProps","InputMore","helperTextId","inputLabelId","InputElement","InputLabel","FormHelperText","dailyRoutineTemplate","routine","getLoadingButtonUtilityClass","LoadingButtonRoot","startIconLoadingStart","loadingButtonClasses","endIconLoadingEnd","loadingPosition","LoadingButtonLoadingIndicator","loadingIndicator","loadingIndicatorProp","loadingButtonLoadingIndicator","baseContainerStyles","StyledMenu","exercise","handleRemoveExercise","openMenu","MoreVert","DeleteForever","Navbar","DividerStyle","Divider","ButtonContainer","DeleteButtonContainer","ExerciseContainer","Card","SetButtonDiv","AddSetButton","ExerciseTextField","TextField","SetParentContainer","SetContainer","SetRemoveButton","SetTypography","StyledTitleTextField","StyledDescriptionTextField","RepsTextField","WeightTextField","StyledModalBox","StyledConfirmModalBox","setIsFirstRender","setIsLoading","isDeleteLoading","setIsDeleteLoading","titleError","setTitleError","setIsSuccess","isSubmitted","setIsSubmitted","isSaved","setIsSaved","isUpdate","setIsUpdate","isDeleteSuccess","setIsDeleteSuccess","isTemplateData","setIsTemplateData","originalId","setOriginalId","currentId","exercises","setRoutineState","openModal","setOpenModal","openConfirmModal","setOpenConfirmModal","getDayOfWeek","storedDailyRoutine","getRoutine","exerciseId","repsWeight","reps","weight","handleSubmit","newDayOfWeek","routineId","oldId","oldRoutineId","newDayOfWeek1","handleDeleteRoutineButton","handleCreateRoutineButton","Settings","Check","Save","handleSetTitle","selectedRoutine","handleSetDescription","AddBox","newExercise","exer","handleExerciseNameChange","handleRemoveSet","firstDigit","handleRepsTextInput","inputMode","handleWeightTextInput","alert","getCardHeaderUtilityClass","CardHeaderRoot","cardHeaderClasses","CardHeaderAvatar","CardHeaderAction","CardHeaderContent","CardHeader","subheaderProp","subheaderTypographyProps","titleProp","titleTypographyProps","getCardContentUtilityClass","CardContentRoot","setLoading","reponseData","setReponseData","callPut","dataWithUserId","putLoading","putResponse","UsePut","postData","setPostData","callPost","postLoading","UsePost","descError","setDescError","ifWorkoutRoutine","setIfWorkoutRoutine","isShiftLoading","setIsShiftLoading","isShiftUpLoading","setIsShiftUpLoading","handleButtonClick","handleSkipTodaysWorkoutButton","activeRoutine","handleShiftWorkoutUpButton","StyledDescTextField","RoutineWrapper","MyRoutineContainer","ArrowUpward","West","IconContainer","Language","ArrowDownward","East","CardWrapper","CardStyle","CardHeaderStyle","CardContentContainer","RoutineTitleStyle","GetRoutine","WorkoutButtonWrapper","WorkoutButton","CardContent","loggedWorkoutId","setLoggedWorkoutId","storedLoggedRoutine","storageLoggedRoutine","getRoutineState","routineStatePref","debouncedSave","isValueSelected","getToggleButtonGroupUtilityClass","ToggleButtonGroupRoot","toggleButtonGroupClasses","borderBottomLeftRadius","borderBottomRightRadius","exclusive","handleChange","buttonValue","handleExclusiveChange","getToggleButtonUtilityClass","ToggleButtonRoot","selectedColorChannel","selectedColor","toggleButtonClasses","observerMap","RootIds","rootId","unsupportedValue","optionsToId","getRootId","createObserver","IntersectionObserver","inView","isIntersecting","intersectionRatio","trackVisibility","fallbackInView","intersectionRect","rootBounds","isPlainChildren","SearchContainer","StyledTextFieldContainer","StyledTextField","StyledButtonGroup","ToggleButtonGroup","StyledToggleButton","ToggleButton","ContentContainer","StyledTypography","StyledEmptyContainer","rootMargin","triggerOnce","initialInView","entryTarget","_state$entry","previousEntryTarget","useInView","toggleState","setToggleState","queryState","setQueryState","debounceValue","debouncedValue","setDebouncedValue","useDebounce","searchQuery","handleExerciseClick","routineData","LoggedWorkoutModel","getSearchResults","loggedWorkouts","nextId","LoggedExerciseModel","lastPage","newToggleValue","handleRoutineClick","CalendarTodayTwoTone","loggedworkoutId","getAlertUtilityClass","AlertRoot","severity","getColor","getBackgroundColor","Alert","alertClasses","AlertIcon","AlertMessage","AlertAction","defaultIconMapping","SuccessOutlinedIcon","ReportProblemOutlinedIcon","ErrorOutlineIcon","InfoOutlinedIcon","_slots$closeButton","_slots$closeIcon","_slotProps$closeButto","_slotProps$closeIcon","iconMapping","AlertCloseButton","closeButton","CloseButton","AlertCloseIcon","CloseIcon","closeButtonProps","closeIconProps","LandingPageContainer","RightSection","LeftSection","StyledLogoContainer","StyledMobileLogoContainer","StyledDivider","StyledSigninButton","LoadingContainer","StyledDivContainer","StyledSigninContainer","StyledSigninHeader","StyledSignupTextField","StyledSubmitButton","LoadingButton","StyledErrorAlert","signinClicked","setSigninClicked","isForgotPassword","setIsForgotPassword","isDataLoading","isSubmitLoading","setIsSubmitLoading","showPassword","setShowPassword","isLoginError","setisLoginError","isForgottenEmailSent","setIsForgottenEmailSent","forgottenEmail","setForgottenEmail","setEmail","setPassword","loginError","setLoginError","handleLoginClick","uuid","token2","handleSignUpXClick","handleSubmitClick","myToken","handleForgotPasswordSubmitClicked","VisibilityOff","Visibility","GoogleLoginButton","AppleLoginButton","loggedUser","setLoggedUser","getNewToken","StyledCreateAccountButton","StyledSignupContainer","StyledCreateAccountHeader","isSignUpClick","setIsSignUpClick","setName","handleCreateAccountClick","handleSignUpClick","handleSubmitClicked","handleSetName","BaseTypography","DailyRoutinePage"],"sourceRoot":""}